diff --git a/.gitignore b/.gitignore index 07f0547..bda02cf 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,4 @@ result .pnp.loader.mjs **/.yarn/unplugged **/.yarn/install-state.gz +tsconfig.tsbuildinfo diff --git a/README.md b/README.md index 448ae7c..a8304c8 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,8 @@ Yet another way of packaging Node applications with Nix. Unlike alternatives, this plugin is built for performance (both speed and disk usage) and aims to be unique with the following goals: -- NPM dependencies should be stored in the /nix/store individually rather than in a huge "node_modules" derivation. Zip files should be used where possible to work well with Yarn PNP +- **Builds packages directly by reading yarn.lock**, no codegen\* or IFD needed +- **NPM dependencies should be stored in the /nix/store individually** rather than in a huge "node_modules" derivation. Zip files should be used where possible to work well with Yarn PNP - Rebuilding when just changing source code should be fast as dependencies shouldn't be fetched - Adding a new dependency should just fetch that dependency rather than fetching or linking all node_modules again - Build native modules (e.g canvas) once, and once they are built they shouldn't be built again across packages @@ -10,10 +11,18 @@ Yet another way of packaging Node applications with Nix. Unlike alternatives, th - When using workspaces, adding a dependency in another package (modifying the yarn.lock file) in the workspace shouldn't cause a different package to have to be rebuilt - devDependencies shouldn't be included as references in the final runtime derivation, only dependencies +\* Native / unplugged modules need to be flagged as such, along with their outputHashes for the built package, see examples in [test/flake.nix](./test/flake.nix). A Yarn plugin can be installed that will codegen a small manifest file that contains the list of native / unplugged modules. + ## Usage Requires a Yarn version > 3 project using PnP linking (the default). Zero installs are not required, so it's recommended to just use the global cache when developing your project rather than storing dependencies in your repo. +- Create a `flake.nix` if you haven't already for your project, add this repo (`yarnpnp2nix`) as an input (e.g `yarnpnp2nix.url = github:madjam002/yarnpnp2nix;`) + +- See [test/flake.nix](./test/flake.nix) for an example on how to create Nix derivations for Yarn packages using `mkYarnPackagesFromLockFile`. + +If you are using lots of native node modules, you may want to install the optional Yarn plugin which will codegen a small manifest that allows yarnpnp2nix to properly build native modules: + - Install Yarn plugin in your project: ``` yarn plugin import https://github.com/madjam002/yarnpnp2nix/raw/master/plugin/dist/plugin-yarnpnp2nix.js @@ -21,10 +30,6 @@ Requires a Yarn version > 3 project using PnP linking (the default). Zero instal - Run `yarn` to make sure all packages are installed and to automatically generate a `yarn-manifest.nix` for your project. -- Create a `flake.nix` if you haven't already for your project, add this repo (`yarnpnp2nix`) as an input (e.g `yarnpnp2nix.url = github:madjam002/yarnpnp2nix;`) - -- See [test/flake.nix](./test/flake.nix) for an example on how to create Nix derivations for Yarn packages using `mkYarnPackagesFromManifest`. - ## Other notes Known caveats: @@ -34,6 +39,11 @@ Possible future improvements: - When adding a Yarn package, copy it straight into the nix store rather than a Yarn cache in the users home directory - ...and run postinstall/install builds from within Nix by defaulting Yarn to --ignore-scripts +## Troubleshooting + +### `hash mismatch in fixed-output derivation` when fetching dependencies + +If you get hash mismatches, the dependency probably is a native module or unplugged (has postinstall scripts). Install the Yarn plugin as directed above or manually set the `shouldBeUnplugged` attribute in `packageOverrides`. ## License diff --git a/flake.nix b/flake.nix index 2c48bfc..5d6832c 100644 --- a/flake.nix +++ b/flake.nix @@ -23,7 +23,9 @@ yarn-plugin = pkgs.callPackage ./yarnPlugin.nix {}; }; lib = { - mkYarnPackagesFromManifest = (import ./lib/mkYarnPackage.nix { defaultPkgs = pkgs; lib = pkgs.lib; }).mkYarnPackagesFromManifest; + mkYarnPackagesFromLockFile = (import ./lib/mkYarnPackage.nix { defaultPkgs = pkgs; lib = pkgs.lib; }).mkYarnPackagesFromLockFile; + fromYAML = (import ./lib/fromYAML.nix { lib = pkgs.lib; }); + parseYarnLock = (import ./lib/parseYarnLock.nix { lib = pkgs.lib; }); }; devShell = import ./shell.nix { inherit pkgs; diff --git a/internal/.yarnrc.yml b/internal/.yarnrc.yml new file mode 100644 index 0000000..d6f219b --- /dev/null +++ b/internal/.yarnrc.yml @@ -0,0 +1,2 @@ +yarnPath: ../plugin/.yarn/releases/yarn-4.0.0-rc.25.cjs +nodeLinker: node-modules diff --git a/internal/bin/createLockFile.ts b/internal/bin/createLockFile.ts new file mode 100644 index 0000000..e4d0f42 --- /dev/null +++ b/internal/bin/createLockFile.ts @@ -0,0 +1,118 @@ +import * as fs from 'node:fs' +import { Configuration, Locator, Package, Project, structUtils } from '@yarnpkg/core' +import { ppath } from '@yarnpkg/fslib' +import { cleanLocatorString } from '../lib' + +const packageRegistryDataPath = process.argv[3] +const topLevelPackageLocatorString = process.argv[4] + +export default async function createLockFile() { + const configuration = await Configuration.find(ppath.cwd(), null); + const project = new Project(ppath.cwd(), { configuration }) + + await (project as any).setupResolutions() // HACK setupResolutions is private + + const topLevelPackageLocator = structUtils.parseLocator(topLevelPackageLocatorString) + + const packageRegistryData = JSON.parse(fs.readFileSync(packageRegistryDataPath, 'utf8')) + + packageRegistryToProjectOriginalPackages(project, topLevelPackageLocator, packageRegistryData) + + project.storedPackages = project.originalPackages + + await project.persistLockfile() +} + +function packageRegistryToProjectOriginalPackages(project: Project, topLevelPackageLocator: Locator, packageRegistryData: any) { + packageRegistryData["root-workspace-0b6124@workspace:."] = { + linkType: 'soft', + languageName: 'unknown', + packageDependencies: { + [structUtils.stringifyIdent(topLevelPackageLocator)]: structUtils.stringifyLocator(topLevelPackageLocator), + }, + } + + const packageRegistryDataEntries = Object.entries(packageRegistryData) as any + + for (let [locatorString, pkg] of packageRegistryDataEntries) { + if (!pkg) continue + + const isTopLevelPackage = locatorString === topLevelPackageLocatorString || locatorString === 'root-workspace-0b6124@workspace:.' + + const dependencies = new Map() + const dependenciesMeta = new Map(Object.entries(pkg.dependenciesMeta ?? {})) + const peerDependencies = new Map() + const peerDependenciesMeta = isTopLevelPackage ? new Map() : new Map(Object.entries(pkg.peerDependenciesMeta ?? {})) + const bin = new Map(Object.entries(pkg.bin ?? {})) + + locatorString = cleanLocatorString(locatorString) + const locator = structUtils.parseLocator(locatorString) + + const ident = structUtils.makeIdent(locator.scope, locator.name) + const descriptor = structUtils.makeDescriptor(ident, locator.reference) // locators are also valid descriptors + + pkg.locatorHash = locator.locatorHash + pkg.descriptorHash = descriptor.descriptorHash + + if (!isTopLevelPackage) { + for (const dependencyName of Object.keys(pkg?.peerDependencies ?? {})) { + const ident = structUtils.parseIdent(dependencyName) + const descriptor = structUtils.makeDescriptor(ident, pkg.peerDependencies[dependencyName]) + peerDependencies.set(ident.identHash, descriptor) + } + } + + const origPackage: Package = { + ...locator, + languageName: pkg.languageName, + linkType: pkg.linkType.toUpperCase(), + conditions: null, + dependencies, + // TODO + // dependenciesMeta: dependenciesMeta as any, + dependenciesMeta: null as any, + bin: bin as any, + peerDependencies, + peerDependenciesMeta: peerDependenciesMeta as any, + version: null, + } + project.originalPackages.set(origPackage.locatorHash, origPackage) + + // storedResolutions is a map of descriptorHash -> locatorHash + project.storedResolutions.set(descriptor.descriptorHash, origPackage.locatorHash) + + // storedChecksums is a map of locatorHash -> checksum + if (pkg.checksum != null) project.storedChecksums.set(origPackage.locatorHash, '9/' + pkg.checksum) + + project.storedDescriptors.set(descriptor.descriptorHash, descriptor) + } + + for (const [locatorString, _package] of packageRegistryDataEntries) { + if (!_package) continue + + const pkg = project.originalPackages.get(_package.locatorHash) + if (!pkg) continue + + const pkgDependencies = _package.packageDependencies ?? {} + + for (const dependencyName of Object.keys(pkgDependencies)) { + const depLocatorString = pkgDependencies[dependencyName] + const depPkg = packageRegistryData[depLocatorString] + if (depPkg?.descriptorHash != null) { + const depPkgDescriptor = project.storedDescriptors.get(depPkg.descriptorHash) + if (depPkgDescriptor != null) { + let descriptor = structUtils.makeDescriptor(structUtils.parseIdent(dependencyName), depPkgDescriptor.range) + const range = structUtils.parseRange(descriptor.range) + + if (range.protocol === 'patch:') { + descriptor = structUtils.parseDescriptor(range.source!) + } + + project.storedResolutions.set(descriptor.descriptorHash, depPkg.locatorHash) + project.storedDescriptors.set(descriptor.descriptorHash, descriptor) + pkg.dependencies.set(descriptor.identHash, descriptor) + } + } + } + } +} diff --git a/internal/bin/index.ts b/internal/bin/index.ts new file mode 100644 index 0000000..9735284 --- /dev/null +++ b/internal/bin/index.ts @@ -0,0 +1,6 @@ +const commandMap = { + createLockFile: require('./createLockFile').default, + makePathWrappers: require('./makePathWrappers').default, +} + +commandMap[process.argv[2]]() diff --git a/internal/bin/makePathWrappers.ts b/internal/bin/makePathWrappers.ts new file mode 100644 index 0000000..4f746ab --- /dev/null +++ b/internal/bin/makePathWrappers.ts @@ -0,0 +1,36 @@ +import * as fs from 'node:fs' +import * as path from 'node:path' +import { structUtils } from '@yarnpkg/core' +import { xfs } from '@yarnpkg/fslib' +import type * as PnpApi from 'pnpapi' +import { readPackageJSON } from '../lib' + +const binWrappersOutDirectory = process.argv[3] +const pnpOutDirectory = process.argv[4] + +export default async function makePathWrappers() { + const outDirectoryReal = fs.realpathSync(pnpOutDirectory) + + const pnpApi: typeof PnpApi = require(path.join(outDirectoryReal, '.pnp.cjs')) + if (!pnpApi) throw new Error('Could not find pnp api') + + const topLevelPackage = pnpApi.getPackageInformation(pnpApi.topLevel) + + for (const [__, dep] of Object.entries(Array.from(topLevelPackage.packageDependencies))) { + const depLocator = (pnpApi as any).getLocator(dep[0], dep[1]) + if (depLocator.reference == null) continue + + const devirtualisedLocator = structUtils.ensureDevirtualizedLocator(depLocator) + const depPkg = pnpApi.getPackageInformation(depLocator) + const devirtualisedPkg = pnpApi.getPackageInformation(devirtualisedLocator) + + const packageManifest = readPackageJSON(devirtualisedPkg) + + for (const [bin, binScript] of Array.from(packageManifest.bin)) { + const resolvedBinPath = path.join(depPkg.packageLocation, binScript) + await xfs.writeFilePromise(path.join(binWrappersOutDirectory, bin) as any, `node ${resolvedBinPath} "$@"`, { + mode: 0o755, + }) + } + } +} diff --git a/internal/build.js b/internal/build.js new file mode 100644 index 0000000..720b1a5 --- /dev/null +++ b/internal/build.js @@ -0,0 +1,13 @@ +require('esbuild').build({ + entryPoints: [ + './bin/index', + ], + bundle: true, + outdir: 'dist/', + sourcemap: 'inline', + platform: 'node', + minify: true, + target: 'node18', + logLevel: 'warning', + treeShaking: true, +}) diff --git a/internal/dist/index.js b/internal/dist/index.js new file mode 100644 index 0000000..b429783 --- /dev/null +++ b/internal/dist/index.js @@ -0,0 +1,248 @@ +var fz=Object.create;var FC=Object.defineProperty;var Iz=Object.getOwnPropertyDescriptor;var Ez=Object.getOwnPropertyNames;var Bz=Object.getPrototypeOf,pz=Object.prototype.hasOwnProperty;var sp=(A,e)=>()=>(A&&(e=A(A=0)),e);var p=(A,e)=>()=>(e||A((e={exports:{}}).exports,e),e.exports),lx=(A,e)=>{for(var t in e)FC(A,t,{get:e[t],enumerable:!0})},ux=(A,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Ez(e))!pz.call(A,i)&&i!==t&&FC(A,i,{get:()=>e[i],enumerable:!(r=Iz(e,i))||r.enumerable});return A};var ji=(A,e,t)=>(t=A!=null?fz(Bz(A)):{},ux(e||!A||!A.__esModule?FC(t,"default",{value:A,enumerable:!0}):t,A)),Cx=A=>ux(FC({},"__esModule",{value:!0}),A);var nA=p((DFe,bC)=>{var hx,fx,Ix,Ex,Bx,px,Qx,dx,yx,xC,op,mx,wx,Dx,ig,Sx,Fx,xx,Rx,bx,kx,vx,Nx,Mx,RC;(function(A){var e=typeof global=="object"?global:typeof self=="object"?self:typeof this=="object"?this:{};typeof define=="function"&&define.amd?define("tslib",["exports"],function(r){A(t(e,t(r)))}):typeof bC=="object"&&typeof bC.exports=="object"?A(t(e,t(bC.exports))):A(t(e));function t(r,i){return r!==e&&(typeof Object.create=="function"?Object.defineProperty(r,"__esModule",{value:!0}):r.__esModule=!0),function(n,s){return r[n]=i?i(n,s):s}}})(function(A){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,i){r.__proto__=i}||function(r,i){for(var n in i)Object.prototype.hasOwnProperty.call(i,n)&&(r[n]=i[n])};hx=function(r,i){if(typeof i!="function"&&i!==null)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");e(r,i);function n(){this.constructor=r}r.prototype=i===null?Object.create(i):(n.prototype=i.prototype,new n)},fx=Object.assign||function(r){for(var i,n=1,s=arguments.length;n=0;l--)(c=r[l])&&(g=(a<3?c(g):a>3?c(i,n,g):c(i,n))||g);return a>3&&g&&Object.defineProperty(i,n,g),g},Bx=function(r,i){return function(n,s){i(n,s,r)}},px=function(r,i){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(r,i)},Qx=function(r,i,n,s){function a(g){return g instanceof n?g:new n(function(c){c(g)})}return new(n||(n=Promise))(function(g,c){function l(E){try{f(s.next(E))}catch(m){c(m)}}function C(E){try{f(s.throw(E))}catch(m){c(m)}}function f(E){E.done?g(E.value):a(E.value).then(l,C)}f((s=s.apply(r,i||[])).next())})},dx=function(r,i){var n={label:0,sent:function(){if(g[0]&1)throw g[1];return g[1]},trys:[],ops:[]},s,a,g,c;return c={next:l(0),throw:l(1),return:l(2)},typeof Symbol=="function"&&(c[Symbol.iterator]=function(){return this}),c;function l(f){return function(E){return C([f,E])}}function C(f){if(s)throw new TypeError("Generator is already executing.");for(;c&&(c=0,f[0]&&(n=0)),n;)try{if(s=1,a&&(g=f[0]&2?a.return:f[0]?a.throw||((g=a.return)&&g.call(a),0):a.next)&&!(g=g.call(a,f[1])).done)return g;switch(a=0,g&&(f=[f[0]&2,g.value]),f[0]){case 0:case 1:g=f;break;case 4:return n.label++,{value:f[1],done:!1};case 5:n.label++,a=f[1],f=[0];continue;case 7:f=n.ops.pop(),n.trys.pop();continue;default:if(g=n.trys,!(g=g.length>0&&g[g.length-1])&&(f[0]===6||f[0]===2)){n=0;continue}if(f[0]===3&&(!g||f[1]>g[0]&&f[1]=r.length&&(r=void 0),{value:r&&r[s++],done:!r}}};throw new TypeError(i?"Object is not iterable.":"Symbol.iterator is not defined.")},op=function(r,i){var n=typeof Symbol=="function"&&r[Symbol.iterator];if(!n)return r;var s=n.call(r),a,g=[],c;try{for(;(i===void 0||i-- >0)&&!(a=s.next()).done;)g.push(a.value)}catch(l){c={error:l}}finally{try{a&&!a.done&&(n=s.return)&&n.call(s)}finally{if(c)throw c.error}}return g},mx=function(){for(var r=[],i=0;i1||l(w,D)})})}function l(w,D){try{C(s[w](D))}catch(L){m(g[0][3],L)}}function C(w){w.value instanceof ig?Promise.resolve(w.value.v).then(f,E):m(g[0][2],w)}function f(w){l("next",w)}function E(w){l("throw",w)}function m(w,D){w(D),g.shift(),g.length&&l(g[0][0],g[0][1])}},Fx=function(r){var i,n;return i={},s("next"),s("throw",function(a){throw a}),s("return"),i[Symbol.iterator]=function(){return this},i;function s(a,g){i[a]=r[a]?function(c){return(n=!n)?{value:ig(r[a](c)),done:a==="return"}:g?g(c):c}:g}},xx=function(r){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var i=r[Symbol.asyncIterator],n;return i?i.call(r):(r=typeof xC=="function"?xC(r):r[Symbol.iterator](),n={},s("next"),s("throw"),s("return"),n[Symbol.asyncIterator]=function(){return this},n);function s(g){n[g]=r[g]&&function(c){return new Promise(function(l,C){c=r[g](c),a(l,C,c.done,c.value)})}}function a(g,c,l,C){Promise.resolve(C).then(function(f){g({value:f,done:l})},c)}},Rx=function(r,i){return Object.defineProperty?Object.defineProperty(r,"raw",{value:i}):r.raw=i,r};var t=Object.create?function(r,i){Object.defineProperty(r,"default",{enumerable:!0,value:i})}:function(r,i){r.default=i};bx=function(r){if(r&&r.__esModule)return r;var i={};if(r!=null)for(var n in r)n!=="default"&&Object.prototype.hasOwnProperty.call(r,n)&&RC(i,r,n);return t(i,r),i},kx=function(r){return r&&r.__esModule?r:{default:r}},vx=function(r,i,n,s){if(n==="a"&&!s)throw new TypeError("Private accessor was defined without a getter");if(typeof i=="function"?r!==i||!s:!i.has(r))throw new TypeError("Cannot read private member from an object whose class did not declare it");return n==="m"?s:n==="a"?s.call(r):s?s.value:i.get(r)},Nx=function(r,i,n,s,a){if(s==="m")throw new TypeError("Private method is not writable");if(s==="a"&&!a)throw new TypeError("Private accessor was defined without a setter");if(typeof i=="function"?r!==i||!a:!i.has(r))throw new TypeError("Cannot write private member to an object whose class did not declare it");return s==="a"?a.call(r,n):a?a.value=n:i.set(r,n),n},Mx=function(r,i){if(i===null||typeof i!="object"&&typeof i!="function")throw new TypeError("Cannot use 'in' operator on non-object");return typeof r=="function"?i===r:r.has(i)},A("__extends",hx),A("__assign",fx),A("__rest",Ix),A("__decorate",Ex),A("__param",Bx),A("__metadata",px),A("__awaiter",Qx),A("__generator",dx),A("__exportStar",yx),A("__createBinding",RC),A("__values",xC),A("__read",op),A("__spread",mx),A("__spreadArrays",wx),A("__spreadArray",Dx),A("__await",ig),A("__asyncGenerator",Sx),A("__asyncDelegator",Fx),A("__asyncValues",xx),A("__makeTemplateObject",Rx),A("__importStar",bx),A("__importDefault",kx),A("__classPrivateFieldGet",vx),A("__classPrivateFieldSet",Nx),A("__classPrivateFieldIn",Mx)})});var kC=p(Hr=>{"use strict";Object.defineProperty(Hr,"__esModule",{value:!0});Hr.SAFE_TIME=Hr.S_IFLNK=Hr.S_IFREG=Hr.S_IFDIR=Hr.S_IFMT=void 0;Hr.S_IFMT=61440;Hr.S_IFDIR=16384;Hr.S_IFREG=32768;Hr.S_IFLNK=40960;Hr.SAFE_TIME=456789e3});var vC=p(TA=>{"use strict";Object.defineProperty(TA,"__esModule",{value:!0});TA.ERR_DIR_CLOSED=TA.EOPNOTSUPP=TA.ENOTEMPTY=TA.EROFS=TA.EEXIST=TA.EISDIR=TA.ENOTDIR=TA.ENOENT=TA.EBADF=TA.EINVAL=TA.ENOSYS=TA.EBUSY=void 0;function Jr(A,e){return Object.assign(new Error(`${A}: ${e}`),{code:A})}function Qz(A){return Jr("EBUSY",A)}TA.EBUSY=Qz;function dz(A,e){return Jr("ENOSYS",`${A}, ${e}`)}TA.ENOSYS=dz;function yz(A){return Jr("EINVAL",`invalid argument, ${A}`)}TA.EINVAL=yz;function mz(A){return Jr("EBADF",`bad file descriptor, ${A}`)}TA.EBADF=mz;function wz(A){return Jr("ENOENT",`no such file or directory, ${A}`)}TA.ENOENT=wz;function Dz(A){return Jr("ENOTDIR",`not a directory, ${A}`)}TA.ENOTDIR=Dz;function Sz(A){return Jr("EISDIR",`illegal operation on a directory, ${A}`)}TA.EISDIR=Sz;function Fz(A){return Jr("EEXIST",`file already exists, ${A}`)}TA.EEXIST=Fz;function xz(A){return Jr("EROFS",`read-only filesystem, ${A}`)}TA.EROFS=xz;function Rz(A){return Jr("ENOTEMPTY",`directory not empty, ${A}`)}TA.ENOTEMPTY=Rz;function bz(A){return Jr("EOPNOTSUPP",`operation not supported, ${A}`)}TA.EOPNOTSUPP=bz;function kz(){return Jr("ERR_DIR_CLOSED","Directory handle was closed")}TA.ERR_DIR_CLOSED=kz});var gp=p(At=>{"use strict";Object.defineProperty(At,"__esModule",{value:!0});At.areStatsEqual=At.convertToBigIntStats=At.clearStats=At.makeEmptyStats=At.makeDefaultStats=At.BigIntStatsEntry=At.StatEntry=At.DirEntry=At.DEFAULT_MODE=void 0;var vz=nA(),Lx=vz.__importStar(require("util")),ft=kC();At.DEFAULT_MODE=ft.S_IFREG|420;var ap=class{constructor(){this.name="",this.mode=0}isBlockDevice(){return!1}isCharacterDevice(){return!1}isDirectory(){return(this.mode&ft.S_IFMT)===ft.S_IFDIR}isFIFO(){return!1}isFile(){return(this.mode&ft.S_IFMT)===ft.S_IFREG}isSocket(){return!1}isSymbolicLink(){return(this.mode&ft.S_IFMT)===ft.S_IFLNK}};At.DirEntry=ap;var NC=class{constructor(){this.uid=0,this.gid=0,this.size=0,this.blksize=0,this.atimeMs=0,this.mtimeMs=0,this.ctimeMs=0,this.birthtimeMs=0,this.atime=new Date(0),this.mtime=new Date(0),this.ctime=new Date(0),this.birthtime=new Date(0),this.dev=0,this.ino=0,this.mode=At.DEFAULT_MODE,this.nlink=1,this.rdev=0,this.blocks=1}isBlockDevice(){return!1}isCharacterDevice(){return!1}isDirectory(){return(this.mode&ft.S_IFMT)===ft.S_IFDIR}isFIFO(){return!1}isFile(){return(this.mode&ft.S_IFMT)===ft.S_IFREG}isSocket(){return!1}isSymbolicLink(){return(this.mode&ft.S_IFMT)===ft.S_IFLNK}};At.StatEntry=NC;var MC=class{constructor(){this.uid=BigInt(0),this.gid=BigInt(0),this.size=BigInt(0),this.blksize=BigInt(0),this.atimeMs=BigInt(0),this.mtimeMs=BigInt(0),this.ctimeMs=BigInt(0),this.birthtimeMs=BigInt(0),this.atimeNs=BigInt(0),this.mtimeNs=BigInt(0),this.ctimeNs=BigInt(0),this.birthtimeNs=BigInt(0),this.atime=new Date(0),this.mtime=new Date(0),this.ctime=new Date(0),this.birthtime=new Date(0),this.dev=BigInt(0),this.ino=BigInt(0),this.mode=BigInt(At.DEFAULT_MODE),this.nlink=BigInt(1),this.rdev=BigInt(0),this.blocks=BigInt(1)}isBlockDevice(){return!1}isCharacterDevice(){return!1}isDirectory(){return(this.mode&BigInt(ft.S_IFMT))===BigInt(ft.S_IFDIR)}isFIFO(){return!1}isFile(){return(this.mode&BigInt(ft.S_IFMT))===BigInt(ft.S_IFREG)}isSocket(){return!1}isSymbolicLink(){return(this.mode&BigInt(ft.S_IFMT))===BigInt(ft.S_IFLNK)}};At.BigIntStatsEntry=MC;function Px(){return new NC}At.makeDefaultStats=Px;function Nz(){return Ox(Px())}At.makeEmptyStats=Nz;function Ox(A){for(let e in A)if(Object.prototype.hasOwnProperty.call(A,e)){let t=A[e];typeof t=="number"?A[e]=0:typeof t=="bigint"?A[e]=BigInt(0):Lx.types.isDate(t)&&(A[e]=new Date(0))}return A}At.clearStats=Ox;function Mz(A){let e=new MC;for(let t in A)if(Object.prototype.hasOwnProperty.call(A,t)){let r=A[t];typeof r=="number"?e[t]=BigInt(r):Lx.types.isDate(r)&&(e[t]=new Date(r))}return e.atimeNs=e.atimeMs*BigInt(1e6),e.mtimeNs=e.mtimeMs*BigInt(1e6),e.ctimeNs=e.ctimeMs*BigInt(1e6),e.birthtimeNs=e.birthtimeMs*BigInt(1e6),e}At.convertToBigIntStats=Mz;function Lz(A,e){if(A.atimeMs!==e.atimeMs||A.birthtimeMs!==e.birthtimeMs||A.blksize!==e.blksize||A.blocks!==e.blocks||A.ctimeMs!==e.ctimeMs||A.dev!==e.dev||A.gid!==e.gid||A.ino!==e.ino||A.isBlockDevice()!==e.isBlockDevice()||A.isCharacterDevice()!==e.isCharacterDevice()||A.isDirectory()!==e.isDirectory()||A.isFIFO()!==e.isFIFO()||A.isFile()!==e.isFile()||A.isSocket()!==e.isSocket()||A.isSymbolicLink()!==e.isSymbolicLink()||A.mode!==e.mode||A.mtimeMs!==e.mtimeMs||A.nlink!==e.nlink||A.rdev!==e.rdev||A.size!==e.size||A.uid!==e.uid)return!1;let t=A,r=e;return!(t.atimeNs!==r.atimeNs||t.mtimeNs!==r.mtimeNs||t.ctimeNs!==r.ctimeNs||t.birthtimeNs!==r.birthtimeNs)}At.areStatsEqual=Lz});var Ar=p(NA=>{"use strict";Object.defineProperty(NA,"__esModule",{value:!0});NA.toFilename=NA.convertPath=NA.ppath=NA.npath=NA.Filename=NA.PortablePath=void 0;var Pz=nA(),LC=Pz.__importDefault(require("path")),Kx;(function(A){A[A.File=0]="File",A[A.Portable=1]="Portable",A[A.Native=2]="Native"})(Kx||(Kx={}));NA.PortablePath={root:"/",dot:"."};NA.Filename={home:"~",nodeModules:"node_modules",manifest:"package.json",lockfile:"yarn.lock",virtual:"__virtual__",pnpJs:".pnp.js",pnpCjs:".pnp.cjs",pnpData:".pnp.data.json",pnpEsmLoader:".pnp.loader.mjs",rc:".yarnrc.yml"};NA.npath=Object.create(LC.default);NA.ppath=Object.create(LC.default.posix);NA.npath.cwd=()=>process.cwd();NA.ppath.cwd=()=>cp(process.cwd());NA.ppath.resolve=(...A)=>A.length>0&&NA.ppath.isAbsolute(A[0])?LC.default.posix.resolve(...A):LC.default.posix.resolve(NA.ppath.cwd(),...A);var Ux=function(A,e,t){return e=A.normalize(e),t=A.normalize(t),e===t?".":(e.endsWith(A.sep)||(e=e+A.sep),t.startsWith(e)?t.slice(e.length):null)};NA.npath.fromPortablePath=Tx;NA.npath.toPortablePath=cp;NA.npath.contains=(A,e)=>Ux(NA.npath,A,e);NA.ppath.contains=(A,e)=>Ux(NA.ppath,A,e);var Oz=/^([a-zA-Z]:.*)$/,Kz=/^\/\/(\.\/)?(.*)$/,Uz=/^\/([a-zA-Z]:.*)$/,Tz=/^\/unc\/(\.dot\/)?(.*)$/;function Tx(A){if(process.platform!=="win32")return A;let e,t;if(e=A.match(Uz))A=e[1];else if(t=A.match(Tz))A=`\\\\${t[1]?".\\":""}${t[2]}`;else return A;return A.replace(/\//g,"\\")}function cp(A){if(process.platform!=="win32")return A;A=A.replace(/\\/g,"/");let e,t;return(e=A.match(Oz))?A=`/${e[1]}`:(t=A.match(Kz))&&(A=`/unc/${t[1]?".dot/":""}${t[2]}`),A}function qz(A,e){return A===NA.npath?Tx(e):cp(e)}NA.convertPath=qz;function Gz(A){if(NA.npath.parse(A).dir!==""||NA.ppath.parse(A).dir!=="")throw new Error(`Invalid filename: "${A}"`);return A}NA.toFilename=Gz});var up=p(ng=>{"use strict";Object.defineProperty(ng,"__esModule",{value:!0});ng.copyPromise=ng.setupCopyIndex=void 0;var Yz=nA(),_z=Yz.__importStar(kC()),Hz=Ar(),Ro=new Date(_z.SAFE_TIME*1e3),Jz=Ro.getTime();async function jz(A,e){let t="0123456789abcdef";await A.mkdirPromise(e.indexPath,{recursive:!0});let r=[];for(let i of t)for(let n of t)r.push(A.mkdirPromise(A.pathUtils.join(e.indexPath,`${i}${n}`),{recursive:!0}));return await Promise.all(r),e.indexPath}ng.setupCopyIndex=jz;async function Wz(A,e,t,r,i){let n=A.pathUtils.normalize(e),s=t.pathUtils.normalize(r),a=[],g=[],{atime:c,mtime:l}=i.stableTime?{atime:Ro,mtime:Ro}:await t.lstatPromise(s);await A.mkdirpPromise(A.pathUtils.dirname(e),{utimes:[c,l]}),await lp(a,g,A,n,t,s,{...i,didParentExist:!0});for(let C of a)await C();await Promise.all(g.map(C=>C()))}ng.copyPromise=Wz;async function lp(A,e,t,r,i,n,s){var a,g,c;let l=s.didParentExist?await qx(t,r):null,C=await i.lstatPromise(n),{atime:f,mtime:E}=s.stableTime?{atime:Ro,mtime:Ro}:C,m;switch(!0){case C.isDirectory():m=await zz(A,e,t,r,l,i,n,C,s);break;case C.isFile():m=await Zz(A,e,t,r,l,i,n,C,s);break;case C.isSymbolicLink():m=await $z(A,e,t,r,l,i,n,C,s);break;default:throw new Error(`Unsupported file type (${C.mode})`)}return(((a=s.linkStrategy)===null||a===void 0?void 0:a.type)!=="HardlinkFromIndex"||!C.isFile())&&((m||((g=l?.mtime)===null||g===void 0?void 0:g.getTime())!==E.getTime()||((c=l?.atime)===null||c===void 0?void 0:c.getTime())!==f.getTime())&&(e.push(()=>t.lutimesPromise(r,f,E)),m=!0),(l===null||(l.mode&511)!==(C.mode&511))&&(e.push(()=>t.chmodPromise(r,C.mode&511)),m=!0)),m}async function qx(A,e){try{return await A.lstatPromise(e)}catch{return null}}async function zz(A,e,t,r,i,n,s,a,g){if(i!==null&&!i.isDirectory())if(g.overwrite)A.push(async()=>t.removePromise(r)),i=null;else return!1;let c=!1;i===null&&(A.push(async()=>{try{await t.mkdirPromise(r,{mode:a.mode})}catch(f){if(f.code!=="EEXIST")throw f}}),c=!0);let l=await n.readdirPromise(s),C=g.didParentExist&&!i?{...g,didParentExist:!1}:g;if(g.stableSort)for(let f of l.sort())await lp(A,e,t,t.pathUtils.join(r,f),n,n.pathUtils.join(s,f),C)&&(c=!0);else(await Promise.all(l.map(async E=>{await lp(A,e,t,t.pathUtils.join(r,E),n,n.pathUtils.join(s,E),C)}))).some(E=>E)&&(c=!0);return c}async function Vz(A,e,t,r,i,n,s,a,g,c){let l=await n.checksumFilePromise(s,{algorithm:"sha1"}),C=t.pathUtils.join(c.indexPath,l.slice(0,2),`${l}.dat`),f;(function(L){L[L.Lock=0]="Lock",L[L.Rename=1]="Rename"})(f||(f={}));let E=f.Rename,m=await qx(t,C);if(i){let L=m&&i.dev===m.dev&&i.ino===m.ino,K=m?.mtimeMs!==Jz;if(L&&K&&c.autoRepair&&(E=f.Lock,m=null),!L)if(g.overwrite)A.push(async()=>t.removePromise(r)),i=null;else return!1}let w=!m&&E===f.Rename?`${C}.${Math.floor(Math.random()*4294967296).toString(16).padStart(8,"0")}`:null,D=!1;return A.push(async()=>{if(!m&&(E===f.Lock&&await t.lockPromise(C,async()=>{let L=await n.readFilePromise(s);await t.writeFilePromise(C,L)}),E===f.Rename&&w)){let L=await n.readFilePromise(s);await t.writeFilePromise(w,L);try{await t.linkPromise(w,C)}catch(K){if(K.code==="EEXIST")D=!0,await t.unlinkPromise(w);else throw K}}i||await t.linkPromise(C,r)}),e.push(async()=>{m||await t.lutimesPromise(C,Ro,Ro),w&&!D&&await t.unlinkPromise(w)}),!1}async function Xz(A,e,t,r,i,n,s,a,g){if(i!==null)if(g.overwrite)A.push(async()=>t.removePromise(r)),i=null;else return!1;return A.push(async()=>{let c=await n.readFilePromise(s);await t.writeFilePromise(r,c)}),!0}async function Zz(A,e,t,r,i,n,s,a,g){var c;return((c=g.linkStrategy)===null||c===void 0?void 0:c.type)==="HardlinkFromIndex"?Vz(A,e,t,r,i,n,s,a,g,g.linkStrategy):Xz(A,e,t,r,i,n,s,a,g)}async function $z(A,e,t,r,i,n,s,a,g){if(i!==null)if(g.overwrite)A.push(async()=>t.removePromise(r)),i=null;else return!1;return A.push(async()=>{await t.symlinkPromise((0,Hz.convertPath)(t.pathUtils,await n.readlinkPromise(s)),r)}),!0}});var Gx=p(sg=>{"use strict";Object.defineProperty(sg,"__esModule",{value:!0});sg.opendir=sg.CustomDir=void 0;var e5=nA(),A5=e5.__importStar(vC()),PC=class{constructor(e,t,r={}){this.path=e,this.nextDirent=t,this.opts=r,this.closed=!1}throwIfClosed(){if(this.closed)throw A5.ERR_DIR_CLOSED()}async*[Symbol.asyncIterator](){try{let e;for(;(e=await this.read())!==null;)yield e}finally{await this.close()}}read(e){let t=this.readSync();return typeof e<"u"?e(null,t):Promise.resolve(t)}readSync(){return this.throwIfClosed(),this.nextDirent()}close(e){return this.closeSync(),typeof e<"u"?e(null):Promise.resolve()}closeSync(){var e,t;this.throwIfClosed(),(t=(e=this.opts).onClose)===null||t===void 0||t.call(e),this.closed=!0}};sg.CustomDir=PC;function t5(A,e,t,r){let i=()=>{let n=t.shift();return typeof n>"u"?null:Object.assign(A.statSync(A.pathUtils.join(e,n)),{name:n})};return new PC(e,i,r)}sg.opendir=t5});var Yx=p(jr=>{"use strict";Object.defineProperty(jr,"__esModule",{value:!0});jr.CustomStatWatcher=jr.assertStatus=jr.Status=jr.Event=void 0;var r5=nA(),i5=require("events"),OC=r5.__importStar(gp()),og;(function(A){A.Change="change",A.Stop="stop"})(og=jr.Event||(jr.Event={}));var ag;(function(A){A.Ready="ready",A.Running="running",A.Stopped="stopped"})(ag=jr.Status||(jr.Status={}));function Cp(A,e){if(A!==e)throw new Error(`Invalid StatWatcher status: expected '${e}', got '${A}'`)}jr.assertStatus=Cp;var Cl=class extends i5.EventEmitter{static create(e,t,r){let i=new Cl(e,t,r);return i.start(),i}constructor(e,t,{bigint:r=!1}={}){super(),this.status=ag.Ready,this.changeListeners=new Map,this.startTimeout=null,this.fakeFs=e,this.path=t,this.bigint=r,this.lastStats=this.stat()}start(){Cp(this.status,ag.Ready),this.status=ag.Running,this.startTimeout=setTimeout(()=>{this.startTimeout=null,this.fakeFs.existsSync(this.path)||this.emit(og.Change,this.lastStats,this.lastStats)},3)}stop(){Cp(this.status,ag.Running),this.status=ag.Stopped,this.startTimeout!==null&&(clearTimeout(this.startTimeout),this.startTimeout=null),this.emit(og.Stop)}stat(){try{return this.fakeFs.statSync(this.path,{bigint:this.bigint})}catch{let t=this.bigint?new OC.BigIntStatsEntry:new OC.StatEntry;return OC.clearStats(t)}}makeInterval(e){let t=setInterval(()=>{let r=this.stat(),i=this.lastStats;OC.areStatsEqual(r,i)||(this.lastStats=r,this.emit(og.Change,r,i))},e.interval);return e.persistent?t:t.unref()}registerChangeListener(e,t){this.addListener(og.Change,e),this.changeListeners.set(e,this.makeInterval(t))}unregisterChangeListener(e){this.removeListener(og.Change,e);let t=this.changeListeners.get(e);typeof t<"u"&&clearInterval(t),this.changeListeners.delete(e)}unregisterAllChangeListeners(){for(let e of this.changeListeners.keys())this.unregisterChangeListener(e)}hasChangeListeners(){return this.changeListeners.size>0}ref(){for(let e of this.changeListeners.values())e.ref();return this}unref(){for(let e of this.changeListeners.values())e.unref();return this}};jr.CustomStatWatcher=Cl});var hp=p(Is=>{"use strict";Object.defineProperty(Is,"__esModule",{value:!0});Is.unwatchAllFiles=Is.unwatchFile=Is.watchFile=void 0;var n5=Yx(),KC=new WeakMap;function s5(A,e,t,r){let i,n,s,a;switch(typeof t){case"function":i=!1,n=!0,s=5007,a=t;break;default:({bigint:i=!1,persistent:n=!0,interval:s=5007}=t),a=r;break}let g=KC.get(A);typeof g>"u"&&KC.set(A,g=new Map);let c=g.get(e);return typeof c>"u"&&(c=n5.CustomStatWatcher.create(A,e,{bigint:i}),g.set(e,c)),c.registerChangeListener(a,{persistent:n,interval:s}),c}Is.watchFile=s5;function _x(A,e,t){let r=KC.get(A);if(typeof r>"u")return;let i=r.get(e);typeof i>"u"||(typeof t>"u"?i.unregisterAllChangeListeners():i.unregisterChangeListener(t),i.hasChangeListeners()||(i.stop(),r.delete(e)))}Is.unwatchFile=_x;function o5(A){let e=KC.get(A);if(!(typeof e>"u"))for(let t of e.keys())_x(A,t)}Is.unwatchAllFiles=o5});var bo=p(Es=>{"use strict";Object.defineProperty(Es,"__esModule",{value:!0});Es.normalizeLineEndings=Es.BasePortableFakeFS=Es.FakeFS=void 0;var a5=require("crypto"),g5=require("os"),c5=up(),Hx=Ar(),UC=class{constructor(e){this.pathUtils=e}async*genTraversePromise(e,{stableSort:t=!1}={}){let r=[e];for(;r.length>0;){let i=r.shift();if((await this.lstatPromise(i)).isDirectory()){let s=await this.readdirPromise(i);if(t)for(let a of s.sort())r.push(this.pathUtils.join(i,a));else throw new Error("Not supported")}else yield i}}async checksumFilePromise(e,{algorithm:t="sha512"}={}){let r=await this.openPromise(e,"r");try{let n=Buffer.allocUnsafeSlow(65536),s=(0,a5.createHash)(t),a=0;for(;(a=await this.readPromise(r,n,0,65536))!==0;)s.update(a===65536?n:n.slice(0,a));return s.digest("hex")}finally{await this.closePromise(r)}}async removePromise(e,{recursive:t=!0,maxRetries:r=5}={}){let i;try{i=await this.lstatPromise(e)}catch(n){if(n.code==="ENOENT")return;throw n}if(i.isDirectory()){if(t){let n=await this.readdirPromise(e);await Promise.all(n.map(s=>this.removePromise(this.pathUtils.resolve(e,s))))}for(let n=0;n<=r;n++)try{await this.rmdirPromise(e);break}catch(s){if(s.code!=="EBUSY"&&s.code!=="ENOTEMPTY")throw s;nsetTimeout(a,n*100))}}else await this.unlinkPromise(e)}removeSync(e,{recursive:t=!0}={}){let r;try{r=this.lstatSync(e)}catch(i){if(i.code==="ENOENT")return;throw i}if(r.isDirectory()){if(t)for(let i of this.readdirSync(e))this.removeSync(this.pathUtils.resolve(e,i));this.rmdirSync(e)}else this.unlinkSync(e)}async mkdirpPromise(e,{chmod:t,utimes:r}={}){if(e=this.resolve(e),e===this.pathUtils.dirname(e))return;let i=e.split(this.pathUtils.sep),n;for(let s=2;s<=i.length;++s){let a=i.slice(0,s).join(this.pathUtils.sep);if(!this.existsSync(a)){try{await this.mkdirPromise(a)}catch(g){if(g.code==="EEXIST")continue;throw g}if(n??(n=a),t!=null&&await this.chmodPromise(a,t),r!=null)await this.utimesPromise(a,r[0],r[1]);else{let g=await this.statPromise(this.pathUtils.dirname(a));await this.utimesPromise(a,g.atime,g.mtime)}}}return n}mkdirpSync(e,{chmod:t,utimes:r}={}){if(e=this.resolve(e),e===this.pathUtils.dirname(e))return;let i=e.split(this.pathUtils.sep),n;for(let s=2;s<=i.length;++s){let a=i.slice(0,s).join(this.pathUtils.sep);if(!this.existsSync(a)){try{this.mkdirSync(a)}catch(g){if(g.code==="EEXIST")continue;throw g}if(n??(n=a),t!=null&&this.chmodSync(a,t),r!=null)this.utimesSync(a,r[0],r[1]);else{let g=this.statSync(this.pathUtils.dirname(a));this.utimesSync(a,g.atime,g.mtime)}}}return n}async copyPromise(e,t,{baseFs:r=this,overwrite:i=!0,stableSort:n=!1,stableTime:s=!1,linkStrategy:a=null}={}){return await(0,c5.copyPromise)(this,e,r,t,{overwrite:i,stableSort:n,stableTime:s,linkStrategy:a})}copySync(e,t,{baseFs:r=this,overwrite:i=!0}={}){let n=r.lstatSync(t),s=this.existsSync(e);if(n.isDirectory()){this.mkdirpSync(e);let g=r.readdirSync(t);for(let c of g)this.copySync(this.pathUtils.join(e,c),r.pathUtils.join(t,c),{baseFs:r,overwrite:i})}else if(n.isFile()){if(!s||i){s&&this.removeSync(e);let g=r.readFileSync(t);this.writeFileSync(e,g)}}else if(n.isSymbolicLink()){if(!s||i){s&&this.removeSync(e);let g=r.readlinkSync(t);this.symlinkSync((0,Hx.convertPath)(this.pathUtils,g),e)}}else throw new Error(`Unsupported file type (file: ${t}, mode: 0o${n.mode.toString(8).padStart(6,"0")})`);let a=n.mode&511;this.chmodSync(e,a)}async changeFilePromise(e,t,r={}){return Buffer.isBuffer(t)?this.changeFileBufferPromise(e,t,r):this.changeFileTextPromise(e,t,r)}async changeFileBufferPromise(e,t,{mode:r}={}){let i=Buffer.alloc(0);try{i=await this.readFilePromise(e)}catch{}Buffer.compare(i,t)!==0&&await this.writeFilePromise(e,t,{mode:r})}async changeFileTextPromise(e,t,{automaticNewlines:r,mode:i}={}){let n="";try{n=await this.readFilePromise(e,"utf8")}catch{}let s=r?Ip(n,t):t;n!==s&&await this.writeFilePromise(e,s,{mode:i})}changeFileSync(e,t,r={}){return Buffer.isBuffer(t)?this.changeFileBufferSync(e,t,r):this.changeFileTextSync(e,t,r)}changeFileBufferSync(e,t,{mode:r}={}){let i=Buffer.alloc(0);try{i=this.readFileSync(e)}catch{}Buffer.compare(i,t)!==0&&this.writeFileSync(e,t,{mode:r})}changeFileTextSync(e,t,{automaticNewlines:r=!1,mode:i}={}){let n="";try{n=this.readFileSync(e,"utf8")}catch{}let s=r?Ip(n,t):t;n!==s&&this.writeFileSync(e,s,{mode:i})}async movePromise(e,t){try{await this.renamePromise(e,t)}catch(r){if(r.code==="EXDEV")await this.copyPromise(t,e),await this.removePromise(e);else throw r}}moveSync(e,t){try{this.renameSync(e,t)}catch(r){if(r.code==="EXDEV")this.copySync(t,e),this.removeSync(e);else throw r}}async lockPromise(e,t){let r=`${e}.flock`,i=1e3/60,n=Date.now(),s=null,a=async()=>{let g;try{[g]=await this.readJsonPromise(r)}catch{return Date.now()-n<500}try{return process.kill(g,0),!0}catch{return!1}};for(;s===null;)try{s=await this.openPromise(r,"wx")}catch(g){if(g.code==="EEXIST"){if(!await a())try{await this.unlinkPromise(r);continue}catch{}if(Date.now()-n<60*1e3)await new Promise(c=>setTimeout(c,i));else throw new Error(`Couldn't acquire a lock in a reasonable time (via ${r})`)}else throw g}await this.writePromise(s,JSON.stringify([process.pid]));try{return await t()}finally{try{await this.closePromise(s),await this.unlinkPromise(r)}catch{}}}async readJsonPromise(e){let t=await this.readFilePromise(e,"utf8");try{return JSON.parse(t)}catch(r){throw r.message+=` (in ${e})`,r}}readJsonSync(e){let t=this.readFileSync(e,"utf8");try{return JSON.parse(t)}catch(r){throw r.message+=` (in ${e})`,r}}async writeJsonPromise(e,t){return await this.writeFilePromise(e,`${JSON.stringify(t,null,2)} +`)}writeJsonSync(e,t){return this.writeFileSync(e,`${JSON.stringify(t,null,2)} +`)}async preserveTimePromise(e,t){let r=await this.lstatPromise(e),i=await t();typeof i<"u"&&(e=i),await this.lutimesPromise(e,r.atime,r.mtime)}async preserveTimeSync(e,t){let r=this.lstatSync(e),i=t();typeof i<"u"&&(e=i),this.lutimesSync(e,r.atime,r.mtime)}};Es.FakeFS=UC;var fp=class extends UC{constructor(){super(Hx.ppath)}};Es.BasePortableFakeFS=fp;function l5(A){let e=A.match(/\r?\n/g);if(e===null)return g5.EOL;let t=e.filter(i=>i===`\r +`).length,r=e.length-t;return t>r?`\r +`:` +`}function Ip(A,e){return e.replace(/\r?\n/g,l5(A))}Es.normalizeLineEndings=Ip});var Nn=p(TC=>{"use strict";Object.defineProperty(TC,"__esModule",{value:!0});TC.ProxiedFS=void 0;var u5=bo(),Ep=class extends u5.FakeFS{getExtractHint(e){return this.baseFs.getExtractHint(e)}resolve(e){return this.mapFromBase(this.baseFs.resolve(this.mapToBase(e)))}getRealPath(){return this.mapFromBase(this.baseFs.getRealPath())}async openPromise(e,t,r){return this.baseFs.openPromise(this.mapToBase(e),t,r)}openSync(e,t,r){return this.baseFs.openSync(this.mapToBase(e),t,r)}async opendirPromise(e,t){return Object.assign(await this.baseFs.opendirPromise(this.mapToBase(e),t),{path:e})}opendirSync(e,t){return Object.assign(this.baseFs.opendirSync(this.mapToBase(e),t),{path:e})}async readPromise(e,t,r,i,n){return await this.baseFs.readPromise(e,t,r,i,n)}readSync(e,t,r,i,n){return this.baseFs.readSync(e,t,r,i,n)}async writePromise(e,t,r,i,n){return typeof t=="string"?await this.baseFs.writePromise(e,t,r):await this.baseFs.writePromise(e,t,r,i,n)}writeSync(e,t,r,i,n){return typeof t=="string"?this.baseFs.writeSync(e,t,r):this.baseFs.writeSync(e,t,r,i,n)}async closePromise(e){return this.baseFs.closePromise(e)}closeSync(e){this.baseFs.closeSync(e)}createReadStream(e,t){return this.baseFs.createReadStream(e!==null?this.mapToBase(e):e,t)}createWriteStream(e,t){return this.baseFs.createWriteStream(e!==null?this.mapToBase(e):e,t)}async realpathPromise(e){return this.mapFromBase(await this.baseFs.realpathPromise(this.mapToBase(e)))}realpathSync(e){return this.mapFromBase(this.baseFs.realpathSync(this.mapToBase(e)))}async existsPromise(e){return this.baseFs.existsPromise(this.mapToBase(e))}existsSync(e){return this.baseFs.existsSync(this.mapToBase(e))}accessSync(e,t){return this.baseFs.accessSync(this.mapToBase(e),t)}async accessPromise(e,t){return this.baseFs.accessPromise(this.mapToBase(e),t)}async statPromise(e,t){return this.baseFs.statPromise(this.mapToBase(e),t)}statSync(e,t){return this.baseFs.statSync(this.mapToBase(e),t)}async fstatPromise(e,t){return this.baseFs.fstatPromise(e,t)}fstatSync(e,t){return this.baseFs.fstatSync(e,t)}lstatPromise(e,t){return this.baseFs.lstatPromise(this.mapToBase(e),t)}lstatSync(e,t){return this.baseFs.lstatSync(this.mapToBase(e),t)}async fchmodPromise(e,t){return this.baseFs.fchmodPromise(e,t)}fchmodSync(e,t){return this.baseFs.fchmodSync(e,t)}async chmodPromise(e,t){return this.baseFs.chmodPromise(this.mapToBase(e),t)}chmodSync(e,t){return this.baseFs.chmodSync(this.mapToBase(e),t)}async fchownPromise(e,t,r){return this.baseFs.fchownPromise(e,t,r)}fchownSync(e,t,r){return this.baseFs.fchownSync(e,t,r)}async chownPromise(e,t,r){return this.baseFs.chownPromise(this.mapToBase(e),t,r)}chownSync(e,t,r){return this.baseFs.chownSync(this.mapToBase(e),t,r)}async renamePromise(e,t){return this.baseFs.renamePromise(this.mapToBase(e),this.mapToBase(t))}renameSync(e,t){return this.baseFs.renameSync(this.mapToBase(e),this.mapToBase(t))}async copyFilePromise(e,t,r=0){return this.baseFs.copyFilePromise(this.mapToBase(e),this.mapToBase(t),r)}copyFileSync(e,t,r=0){return this.baseFs.copyFileSync(this.mapToBase(e),this.mapToBase(t),r)}async appendFilePromise(e,t,r){return this.baseFs.appendFilePromise(this.fsMapToBase(e),t,r)}appendFileSync(e,t,r){return this.baseFs.appendFileSync(this.fsMapToBase(e),t,r)}async writeFilePromise(e,t,r){return this.baseFs.writeFilePromise(this.fsMapToBase(e),t,r)}writeFileSync(e,t,r){return this.baseFs.writeFileSync(this.fsMapToBase(e),t,r)}async unlinkPromise(e){return this.baseFs.unlinkPromise(this.mapToBase(e))}unlinkSync(e){return this.baseFs.unlinkSync(this.mapToBase(e))}async utimesPromise(e,t,r){return this.baseFs.utimesPromise(this.mapToBase(e),t,r)}utimesSync(e,t,r){return this.baseFs.utimesSync(this.mapToBase(e),t,r)}async lutimesPromise(e,t,r){return this.baseFs.lutimesPromise(this.mapToBase(e),t,r)}lutimesSync(e,t,r){return this.baseFs.lutimesSync(this.mapToBase(e),t,r)}async mkdirPromise(e,t){return this.baseFs.mkdirPromise(this.mapToBase(e),t)}mkdirSync(e,t){return this.baseFs.mkdirSync(this.mapToBase(e),t)}async rmdirPromise(e,t){return this.baseFs.rmdirPromise(this.mapToBase(e),t)}rmdirSync(e,t){return this.baseFs.rmdirSync(this.mapToBase(e),t)}async linkPromise(e,t){return this.baseFs.linkPromise(this.mapToBase(e),this.mapToBase(t))}linkSync(e,t){return this.baseFs.linkSync(this.mapToBase(e),this.mapToBase(t))}async symlinkPromise(e,t,r){let i=this.mapToBase(t);if(this.pathUtils.isAbsolute(e))return this.baseFs.symlinkPromise(this.mapToBase(e),i,r);let n=this.mapToBase(this.pathUtils.join(this.pathUtils.dirname(t),e)),s=this.baseFs.pathUtils.relative(this.baseFs.pathUtils.dirname(i),n);return this.baseFs.symlinkPromise(s,i,r)}symlinkSync(e,t,r){let i=this.mapToBase(t);if(this.pathUtils.isAbsolute(e))return this.baseFs.symlinkSync(this.mapToBase(e),i,r);let n=this.mapToBase(this.pathUtils.join(this.pathUtils.dirname(t),e)),s=this.baseFs.pathUtils.relative(this.baseFs.pathUtils.dirname(i),n);return this.baseFs.symlinkSync(s,i,r)}async readFilePromise(e,t){return this.baseFs.readFilePromise(this.fsMapToBase(e),t)}readFileSync(e,t){return this.baseFs.readFileSync(this.fsMapToBase(e),t)}async readdirPromise(e,t){return this.baseFs.readdirPromise(this.mapToBase(e),t)}readdirSync(e,t){return this.baseFs.readdirSync(this.mapToBase(e),t)}async readlinkPromise(e){return this.mapFromBase(await this.baseFs.readlinkPromise(this.mapToBase(e)))}readlinkSync(e){return this.mapFromBase(this.baseFs.readlinkSync(this.mapToBase(e)))}async truncatePromise(e,t){return this.baseFs.truncatePromise(this.mapToBase(e),t)}truncateSync(e,t){return this.baseFs.truncateSync(this.mapToBase(e),t)}async ftruncatePromise(e,t){return this.baseFs.ftruncatePromise(e,t)}ftruncateSync(e,t){return this.baseFs.ftruncateSync(e,t)}watch(e,t,r){return this.baseFs.watch(this.mapToBase(e),t,r)}watchFile(e,t,r){return this.baseFs.watchFile(this.mapToBase(e),t,r)}unwatchFile(e,t){return this.baseFs.unwatchFile(this.mapToBase(e),t)}fsMapToBase(e){return typeof e=="number"?e:this.mapToBase(e)}};TC.ProxiedFS=Ep});var Jx=p(qC=>{"use strict";Object.defineProperty(qC,"__esModule",{value:!0});qC.AliasFS=void 0;var C5=Nn(),Bp=class extends C5.ProxiedFS{constructor(e,{baseFs:t,pathUtils:r}){super(r),this.target=e,this.baseFs=t}getRealPath(){return this.target}getBaseFs(){return this.baseFs}mapFromBase(e){return e}mapToBase(e){return e}};qC.AliasFS=Bp});var ko=p(GC=>{"use strict";Object.defineProperty(GC,"__esModule",{value:!0});GC.NodeFS=void 0;var h5=nA(),f5=h5.__importDefault(require("fs")),I5=bo(),we=Ar(),pp=class extends I5.BasePortableFakeFS{constructor(e=f5.default){super(),this.realFs=e}getExtractHint(){return!1}getRealPath(){return we.PortablePath.root}resolve(e){return we.ppath.resolve(e)}async openPromise(e,t,r){return await new Promise((i,n)=>{this.realFs.open(we.npath.fromPortablePath(e),t,r,this.makeCallback(i,n))})}openSync(e,t,r){return this.realFs.openSync(we.npath.fromPortablePath(e),t,r)}async opendirPromise(e,t){return await new Promise((r,i)=>{typeof t<"u"?this.realFs.opendir(we.npath.fromPortablePath(e),t,this.makeCallback(r,i)):this.realFs.opendir(we.npath.fromPortablePath(e),this.makeCallback(r,i))}).then(r=>Object.defineProperty(r,"path",{value:e,configurable:!0,writable:!0}))}opendirSync(e,t){let r=typeof t<"u"?this.realFs.opendirSync(we.npath.fromPortablePath(e),t):this.realFs.opendirSync(we.npath.fromPortablePath(e));return Object.defineProperty(r,"path",{value:e,configurable:!0,writable:!0})}async readPromise(e,t,r=0,i=0,n=-1){return await new Promise((s,a)=>{this.realFs.read(e,t,r,i,n,(g,c)=>{g?a(g):s(c)})})}readSync(e,t,r,i,n){return this.realFs.readSync(e,t,r,i,n)}async writePromise(e,t,r,i,n){return await new Promise((s,a)=>typeof t=="string"?this.realFs.write(e,t,r,this.makeCallback(s,a)):this.realFs.write(e,t,r,i,n,this.makeCallback(s,a)))}writeSync(e,t,r,i,n){return typeof t=="string"?this.realFs.writeSync(e,t,r):this.realFs.writeSync(e,t,r,i,n)}async closePromise(e){await new Promise((t,r)=>{this.realFs.close(e,this.makeCallback(t,r))})}closeSync(e){this.realFs.closeSync(e)}createReadStream(e,t){let r=e!==null?we.npath.fromPortablePath(e):e;return this.realFs.createReadStream(r,t)}createWriteStream(e,t){let r=e!==null?we.npath.fromPortablePath(e):e;return this.realFs.createWriteStream(r,t)}async realpathPromise(e){return await new Promise((t,r)=>{this.realFs.realpath(we.npath.fromPortablePath(e),{},this.makeCallback(t,r))}).then(t=>we.npath.toPortablePath(t))}realpathSync(e){return we.npath.toPortablePath(this.realFs.realpathSync(we.npath.fromPortablePath(e),{}))}async existsPromise(e){return await new Promise(t=>{this.realFs.exists(we.npath.fromPortablePath(e),t)})}accessSync(e,t){return this.realFs.accessSync(we.npath.fromPortablePath(e),t)}async accessPromise(e,t){return await new Promise((r,i)=>{this.realFs.access(we.npath.fromPortablePath(e),t,this.makeCallback(r,i))})}existsSync(e){return this.realFs.existsSync(we.npath.fromPortablePath(e))}async statPromise(e,t){return await new Promise((r,i)=>{t?this.realFs.stat(we.npath.fromPortablePath(e),t,this.makeCallback(r,i)):this.realFs.stat(we.npath.fromPortablePath(e),this.makeCallback(r,i))})}statSync(e,t){return t?this.realFs.statSync(we.npath.fromPortablePath(e),t):this.realFs.statSync(we.npath.fromPortablePath(e))}async fstatPromise(e,t){return await new Promise((r,i)=>{t?this.realFs.fstat(e,t,this.makeCallback(r,i)):this.realFs.fstat(e,this.makeCallback(r,i))})}fstatSync(e,t){return t?this.realFs.fstatSync(e,t):this.realFs.fstatSync(e)}async lstatPromise(e,t){return await new Promise((r,i)=>{t?this.realFs.lstat(we.npath.fromPortablePath(e),t,this.makeCallback(r,i)):this.realFs.lstat(we.npath.fromPortablePath(e),this.makeCallback(r,i))})}lstatSync(e,t){return t?this.realFs.lstatSync(we.npath.fromPortablePath(e),t):this.realFs.lstatSync(we.npath.fromPortablePath(e))}async fchmodPromise(e,t){return await new Promise((r,i)=>{this.realFs.fchmod(e,t,this.makeCallback(r,i))})}fchmodSync(e,t){return this.realFs.fchmodSync(e,t)}async chmodPromise(e,t){return await new Promise((r,i)=>{this.realFs.chmod(we.npath.fromPortablePath(e),t,this.makeCallback(r,i))})}chmodSync(e,t){return this.realFs.chmodSync(we.npath.fromPortablePath(e),t)}async fchownPromise(e,t,r){return await new Promise((i,n)=>{this.realFs.fchown(e,t,r,this.makeCallback(i,n))})}fchownSync(e,t,r){return this.realFs.fchownSync(e,t,r)}async chownPromise(e,t,r){return await new Promise((i,n)=>{this.realFs.chown(we.npath.fromPortablePath(e),t,r,this.makeCallback(i,n))})}chownSync(e,t,r){return this.realFs.chownSync(we.npath.fromPortablePath(e),t,r)}async renamePromise(e,t){return await new Promise((r,i)=>{this.realFs.rename(we.npath.fromPortablePath(e),we.npath.fromPortablePath(t),this.makeCallback(r,i))})}renameSync(e,t){return this.realFs.renameSync(we.npath.fromPortablePath(e),we.npath.fromPortablePath(t))}async copyFilePromise(e,t,r=0){return await new Promise((i,n)=>{this.realFs.copyFile(we.npath.fromPortablePath(e),we.npath.fromPortablePath(t),r,this.makeCallback(i,n))})}copyFileSync(e,t,r=0){return this.realFs.copyFileSync(we.npath.fromPortablePath(e),we.npath.fromPortablePath(t),r)}async appendFilePromise(e,t,r){return await new Promise((i,n)=>{let s=typeof e=="string"?we.npath.fromPortablePath(e):e;r?this.realFs.appendFile(s,t,r,this.makeCallback(i,n)):this.realFs.appendFile(s,t,this.makeCallback(i,n))})}appendFileSync(e,t,r){let i=typeof e=="string"?we.npath.fromPortablePath(e):e;r?this.realFs.appendFileSync(i,t,r):this.realFs.appendFileSync(i,t)}async writeFilePromise(e,t,r){return await new Promise((i,n)=>{let s=typeof e=="string"?we.npath.fromPortablePath(e):e;r?this.realFs.writeFile(s,t,r,this.makeCallback(i,n)):this.realFs.writeFile(s,t,this.makeCallback(i,n))})}writeFileSync(e,t,r){let i=typeof e=="string"?we.npath.fromPortablePath(e):e;r?this.realFs.writeFileSync(i,t,r):this.realFs.writeFileSync(i,t)}async unlinkPromise(e){return await new Promise((t,r)=>{this.realFs.unlink(we.npath.fromPortablePath(e),this.makeCallback(t,r))})}unlinkSync(e){return this.realFs.unlinkSync(we.npath.fromPortablePath(e))}async utimesPromise(e,t,r){return await new Promise((i,n)=>{this.realFs.utimes(we.npath.fromPortablePath(e),t,r,this.makeCallback(i,n))})}utimesSync(e,t,r){this.realFs.utimesSync(we.npath.fromPortablePath(e),t,r)}async lutimesPromise(e,t,r){return await new Promise((i,n)=>{this.realFs.lutimes(we.npath.fromPortablePath(e),t,r,this.makeCallback(i,n))})}lutimesSync(e,t,r){this.realFs.lutimesSync(we.npath.fromPortablePath(e),t,r)}async mkdirPromise(e,t){return await new Promise((r,i)=>{this.realFs.mkdir(we.npath.fromPortablePath(e),t,this.makeCallback(r,i))})}mkdirSync(e,t){return this.realFs.mkdirSync(we.npath.fromPortablePath(e),t)}async rmdirPromise(e,t){return await new Promise((r,i)=>{t?this.realFs.rmdir(we.npath.fromPortablePath(e),t,this.makeCallback(r,i)):this.realFs.rmdir(we.npath.fromPortablePath(e),this.makeCallback(r,i))})}rmdirSync(e,t){return this.realFs.rmdirSync(we.npath.fromPortablePath(e),t)}async linkPromise(e,t){return await new Promise((r,i)=>{this.realFs.link(we.npath.fromPortablePath(e),we.npath.fromPortablePath(t),this.makeCallback(r,i))})}linkSync(e,t){return this.realFs.linkSync(we.npath.fromPortablePath(e),we.npath.fromPortablePath(t))}async symlinkPromise(e,t,r){return await new Promise((i,n)=>{this.realFs.symlink(we.npath.fromPortablePath(e.replace(/\/+$/,"")),we.npath.fromPortablePath(t),r,this.makeCallback(i,n))})}symlinkSync(e,t,r){return this.realFs.symlinkSync(we.npath.fromPortablePath(e.replace(/\/+$/,"")),we.npath.fromPortablePath(t),r)}async readFilePromise(e,t){return await new Promise((r,i)=>{let n=typeof e=="string"?we.npath.fromPortablePath(e):e;this.realFs.readFile(n,t,this.makeCallback(r,i))})}readFileSync(e,t){let r=typeof e=="string"?we.npath.fromPortablePath(e):e;return this.realFs.readFileSync(r,t)}async readdirPromise(e,t){return await new Promise((r,i)=>{t?.withFileTypes?this.realFs.readdir(we.npath.fromPortablePath(e),{withFileTypes:!0},this.makeCallback(r,i)):this.realFs.readdir(we.npath.fromPortablePath(e),this.makeCallback(n=>r(n),i))})}readdirSync(e,t){return t?.withFileTypes?this.realFs.readdirSync(we.npath.fromPortablePath(e),{withFileTypes:!0}):this.realFs.readdirSync(we.npath.fromPortablePath(e))}async readlinkPromise(e){return await new Promise((t,r)=>{this.realFs.readlink(we.npath.fromPortablePath(e),this.makeCallback(t,r))}).then(t=>we.npath.toPortablePath(t))}readlinkSync(e){return we.npath.toPortablePath(this.realFs.readlinkSync(we.npath.fromPortablePath(e)))}async truncatePromise(e,t){return await new Promise((r,i)=>{this.realFs.truncate(we.npath.fromPortablePath(e),t,this.makeCallback(r,i))})}truncateSync(e,t){return this.realFs.truncateSync(we.npath.fromPortablePath(e),t)}async ftruncatePromise(e,t){return await new Promise((r,i)=>{this.realFs.ftruncate(e,t,this.makeCallback(r,i))})}ftruncateSync(e,t){return this.realFs.ftruncateSync(e,t)}watch(e,t,r){return this.realFs.watch(we.npath.fromPortablePath(e),t,r)}watchFile(e,t,r){return this.realFs.watchFile(we.npath.fromPortablePath(e),t,r)}unwatchFile(e,t){return this.realFs.unwatchFile(we.npath.fromPortablePath(e),t)}makeCallback(e,t){return(r,i)=>{r?t(r):e(i)}}};GC.NodeFS=pp});var jx=p(YC=>{"use strict";Object.defineProperty(YC,"__esModule",{value:!0});YC.CwdFS=void 0;var E5=ko(),B5=Nn(),Qp=Ar(),dp=class extends B5.ProxiedFS{constructor(e,{baseFs:t=new E5.NodeFS}={}){super(Qp.ppath),this.target=this.pathUtils.normalize(e),this.baseFs=t}getRealPath(){return this.pathUtils.resolve(this.baseFs.getRealPath(),this.target)}resolve(e){return this.pathUtils.isAbsolute(e)?Qp.ppath.normalize(e):this.baseFs.resolve(Qp.ppath.join(this.target,e))}mapFromBase(e){return e}mapToBase(e){return this.pathUtils.isAbsolute(e)?e:this.pathUtils.join(this.target,e)}};YC.CwdFS=dp});var zx=p(HC=>{"use strict";Object.defineProperty(HC,"__esModule",{value:!0});HC.JailFS=void 0;var p5=ko(),Q5=Nn(),_C=Ar(),Wx=_C.PortablePath.root,yp=class extends Q5.ProxiedFS{constructor(e,{baseFs:t=new p5.NodeFS}={}){super(_C.ppath),this.target=this.pathUtils.resolve(_C.PortablePath.root,e),this.baseFs=t}getRealPath(){return this.pathUtils.resolve(this.baseFs.getRealPath(),this.pathUtils.relative(_C.PortablePath.root,this.target))}getTarget(){return this.target}getBaseFs(){return this.baseFs}mapToBase(e){let t=this.pathUtils.normalize(e);if(this.pathUtils.isAbsolute(e))return this.pathUtils.resolve(this.target,this.pathUtils.relative(Wx,e));if(t.match(/^\.\.\/?/))throw new Error(`Resolving this path (${e}) would escape the jail`);return this.pathUtils.resolve(this.target,e)}mapFromBase(e){return this.pathUtils.resolve(Wx,this.pathUtils.relative(this.target,e))}};HC.JailFS=yp});var Vx=p(JC=>{"use strict";Object.defineProperty(JC,"__esModule",{value:!0});JC.LazyFS=void 0;var d5=Nn(),mp=class extends d5.ProxiedFS{constructor(e,t){super(t),this.instance=null,this.factory=e}get baseFs(){return this.instance||(this.instance=this.factory()),this.instance}set baseFs(e){this.instance=e}mapFromBase(e){return e}mapToBase(e){return e}};JC.LazyFS=mp});var Xx=p(VC=>{"use strict";Object.defineProperty(VC,"__esModule",{value:!0});VC.MountFS=void 0;var y5=nA(),jC=require("fs"),m5=bo(),w5=ko(),WC=hp(),tr=y5.__importStar(vC()),zC=Ar(),rr=4278190080,wp=class extends m5.BasePortableFakeFS{constructor({baseFs:e=new w5.NodeFS,filter:t=null,magicByte:r=42,maxOpenFiles:i=1/0,useCache:n=!0,maxAge:s=5e3,getMountPoint:a,factoryPromise:g,factorySync:c}){if(Math.floor(r)!==r||!(r>1&&r<=127))throw new Error("The magic byte must be set to a round value between 1 and 127 included");super(),this.fdMap=new Map,this.nextFd=3,this.isMount=new Set,this.notMount=new Set,this.realPaths=new Map,this.limitOpenFilesTimeout=null,this.baseFs=e,this.mountInstances=n?new Map:null,this.factoryPromise=g,this.factorySync=c,this.filter=t,this.getMountPoint=a,this.magic=r<<24,this.maxAge=s,this.maxOpenFiles=i}getExtractHint(e){return this.baseFs.getExtractHint(e)}getRealPath(){return this.baseFs.getRealPath()}saveAndClose(){var e;if((0,WC.unwatchAllFiles)(this),this.mountInstances)for(let[t,{childFs:r}]of this.mountInstances.entries())(e=r.saveAndClose)===null||e===void 0||e.call(r),this.mountInstances.delete(t)}discardAndClose(){var e;if((0,WC.unwatchAllFiles)(this),this.mountInstances)for(let[t,{childFs:r}]of this.mountInstances.entries())(e=r.discardAndClose)===null||e===void 0||e.call(r),this.mountInstances.delete(t)}resolve(e){return this.baseFs.resolve(e)}remapFd(e,t){let r=this.nextFd++|this.magic;return this.fdMap.set(r,[e,t]),r}async openPromise(e,t,r){return await this.makeCallPromise(e,async()=>await this.baseFs.openPromise(e,t,r),async(i,{subPath:n})=>this.remapFd(i,await i.openPromise(n,t,r)))}openSync(e,t,r){return this.makeCallSync(e,()=>this.baseFs.openSync(e,t,r),(i,{subPath:n})=>this.remapFd(i,i.openSync(n,t,r)))}async opendirPromise(e,t){return await this.makeCallPromise(e,async()=>await this.baseFs.opendirPromise(e,t),async(r,{subPath:i})=>await r.opendirPromise(i,t),{requireSubpath:!1})}opendirSync(e,t){return this.makeCallSync(e,()=>this.baseFs.opendirSync(e,t),(r,{subPath:i})=>r.opendirSync(i,t),{requireSubpath:!1})}async readPromise(e,t,r,i,n){if((e&rr)!==this.magic)return await this.baseFs.readPromise(e,t,r,i,n);let s=this.fdMap.get(e);if(typeof s>"u")throw tr.EBADF("read");let[a,g]=s;return await a.readPromise(g,t,r,i,n)}readSync(e,t,r,i,n){if((e&rr)!==this.magic)return this.baseFs.readSync(e,t,r,i,n);let s=this.fdMap.get(e);if(typeof s>"u")throw tr.EBADF("readSync");let[a,g]=s;return a.readSync(g,t,r,i,n)}async writePromise(e,t,r,i,n){if((e&rr)!==this.magic)return typeof t=="string"?await this.baseFs.writePromise(e,t,r):await this.baseFs.writePromise(e,t,r,i,n);let s=this.fdMap.get(e);if(typeof s>"u")throw tr.EBADF("write");let[a,g]=s;return typeof t=="string"?await a.writePromise(g,t,r):await a.writePromise(g,t,r,i,n)}writeSync(e,t,r,i,n){if((e&rr)!==this.magic)return typeof t=="string"?this.baseFs.writeSync(e,t,r):this.baseFs.writeSync(e,t,r,i,n);let s=this.fdMap.get(e);if(typeof s>"u")throw tr.EBADF("writeSync");let[a,g]=s;return typeof t=="string"?a.writeSync(g,t,r):a.writeSync(g,t,r,i,n)}async closePromise(e){if((e&rr)!==this.magic)return await this.baseFs.closePromise(e);let t=this.fdMap.get(e);if(typeof t>"u")throw tr.EBADF("close");this.fdMap.delete(e);let[r,i]=t;return await r.closePromise(i)}closeSync(e){if((e&rr)!==this.magic)return this.baseFs.closeSync(e);let t=this.fdMap.get(e);if(typeof t>"u")throw tr.EBADF("closeSync");this.fdMap.delete(e);let[r,i]=t;return r.closeSync(i)}createReadStream(e,t){return e===null?this.baseFs.createReadStream(e,t):this.makeCallSync(e,()=>this.baseFs.createReadStream(e,t),(r,{archivePath:i,subPath:n})=>{let s=r.createReadStream(n,t);return s.path=zC.npath.fromPortablePath(this.pathUtils.join(i,n)),s})}createWriteStream(e,t){return e===null?this.baseFs.createWriteStream(e,t):this.makeCallSync(e,()=>this.baseFs.createWriteStream(e,t),(r,{subPath:i})=>r.createWriteStream(i,t))}async realpathPromise(e){return await this.makeCallPromise(e,async()=>await this.baseFs.realpathPromise(e),async(t,{archivePath:r,subPath:i})=>{let n=this.realPaths.get(r);return typeof n>"u"&&(n=await this.baseFs.realpathPromise(r),this.realPaths.set(r,n)),this.pathUtils.join(n,this.pathUtils.relative(zC.PortablePath.root,await t.realpathPromise(i)))})}realpathSync(e){return this.makeCallSync(e,()=>this.baseFs.realpathSync(e),(t,{archivePath:r,subPath:i})=>{let n=this.realPaths.get(r);return typeof n>"u"&&(n=this.baseFs.realpathSync(r),this.realPaths.set(r,n)),this.pathUtils.join(n,this.pathUtils.relative(zC.PortablePath.root,t.realpathSync(i)))})}async existsPromise(e){return await this.makeCallPromise(e,async()=>await this.baseFs.existsPromise(e),async(t,{subPath:r})=>await t.existsPromise(r))}existsSync(e){return this.makeCallSync(e,()=>this.baseFs.existsSync(e),(t,{subPath:r})=>t.existsSync(r))}async accessPromise(e,t){return await this.makeCallPromise(e,async()=>await this.baseFs.accessPromise(e,t),async(r,{subPath:i})=>await r.accessPromise(i,t))}accessSync(e,t){return this.makeCallSync(e,()=>this.baseFs.accessSync(e,t),(r,{subPath:i})=>r.accessSync(i,t))}async statPromise(e,t){return await this.makeCallPromise(e,async()=>await this.baseFs.statPromise(e,t),async(r,{subPath:i})=>await r.statPromise(i,t))}statSync(e,t){return this.makeCallSync(e,()=>this.baseFs.statSync(e,t),(r,{subPath:i})=>r.statSync(i,t))}async fstatPromise(e,t){if((e&rr)!==this.magic)return this.baseFs.fstatPromise(e,t);let r=this.fdMap.get(e);if(typeof r>"u")throw tr.EBADF("fstat");let[i,n]=r;return i.fstatPromise(n,t)}fstatSync(e,t){if((e&rr)!==this.magic)return this.baseFs.fstatSync(e,t);let r=this.fdMap.get(e);if(typeof r>"u")throw tr.EBADF("fstatSync");let[i,n]=r;return i.fstatSync(n,t)}async lstatPromise(e,t){return await this.makeCallPromise(e,async()=>await this.baseFs.lstatPromise(e,t),async(r,{subPath:i})=>await r.lstatPromise(i,t))}lstatSync(e,t){return this.makeCallSync(e,()=>this.baseFs.lstatSync(e,t),(r,{subPath:i})=>r.lstatSync(i,t))}async fchmodPromise(e,t){if((e&rr)!==this.magic)return this.baseFs.fchmodPromise(e,t);let r=this.fdMap.get(e);if(typeof r>"u")throw tr.EBADF("fchmod");let[i,n]=r;return i.fchmodPromise(n,t)}fchmodSync(e,t){if((e&rr)!==this.magic)return this.baseFs.fchmodSync(e,t);let r=this.fdMap.get(e);if(typeof r>"u")throw tr.EBADF("fchmodSync");let[i,n]=r;return i.fchmodSync(n,t)}async chmodPromise(e,t){return await this.makeCallPromise(e,async()=>await this.baseFs.chmodPromise(e,t),async(r,{subPath:i})=>await r.chmodPromise(i,t))}chmodSync(e,t){return this.makeCallSync(e,()=>this.baseFs.chmodSync(e,t),(r,{subPath:i})=>r.chmodSync(i,t))}async fchownPromise(e,t,r){if((e&rr)!==this.magic)return this.baseFs.fchownPromise(e,t,r);let i=this.fdMap.get(e);if(typeof i>"u")throw tr.EBADF("fchown");let[n,s]=i;return n.fchownPromise(s,t,r)}fchownSync(e,t,r){if((e&rr)!==this.magic)return this.baseFs.fchownSync(e,t,r);let i=this.fdMap.get(e);if(typeof i>"u")throw tr.EBADF("fchownSync");let[n,s]=i;return n.fchownSync(s,t,r)}async chownPromise(e,t,r){return await this.makeCallPromise(e,async()=>await this.baseFs.chownPromise(e,t,r),async(i,{subPath:n})=>await i.chownPromise(n,t,r))}chownSync(e,t,r){return this.makeCallSync(e,()=>this.baseFs.chownSync(e,t,r),(i,{subPath:n})=>i.chownSync(n,t,r))}async renamePromise(e,t){return await this.makeCallPromise(e,async()=>await this.makeCallPromise(t,async()=>await this.baseFs.renamePromise(e,t),async()=>{throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"})}),async(r,{subPath:i})=>await this.makeCallPromise(t,async()=>{throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"})},async(n,{subPath:s})=>{if(r!==n)throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"});return await r.renamePromise(i,s)}))}renameSync(e,t){return this.makeCallSync(e,()=>this.makeCallSync(t,()=>this.baseFs.renameSync(e,t),()=>{throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"})}),(r,{subPath:i})=>this.makeCallSync(t,()=>{throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"})},(n,{subPath:s})=>{if(r!==n)throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"});return r.renameSync(i,s)}))}async copyFilePromise(e,t,r=0){let i=async(n,s,a,g)=>{if((r&jC.constants.COPYFILE_FICLONE_FORCE)!==0)throw Object.assign(new Error(`EXDEV: cross-device clone not permitted, copyfile '${s}' -> ${g}'`),{code:"EXDEV"});if(r&jC.constants.COPYFILE_EXCL&&await this.existsPromise(s))throw Object.assign(new Error(`EEXIST: file already exists, copyfile '${s}' -> '${g}'`),{code:"EEXIST"});let c;try{c=await n.readFilePromise(s)}catch{throw Object.assign(new Error(`EINVAL: invalid argument, copyfile '${s}' -> '${g}'`),{code:"EINVAL"})}await a.writeFilePromise(g,c)};return await this.makeCallPromise(e,async()=>await this.makeCallPromise(t,async()=>await this.baseFs.copyFilePromise(e,t,r),async(n,{subPath:s})=>await i(this.baseFs,e,n,s)),async(n,{subPath:s})=>await this.makeCallPromise(t,async()=>await i(n,s,this.baseFs,t),async(a,{subPath:g})=>n!==a?await i(n,s,a,g):await n.copyFilePromise(s,g,r)))}copyFileSync(e,t,r=0){let i=(n,s,a,g)=>{if((r&jC.constants.COPYFILE_FICLONE_FORCE)!==0)throw Object.assign(new Error(`EXDEV: cross-device clone not permitted, copyfile '${s}' -> ${g}'`),{code:"EXDEV"});if(r&jC.constants.COPYFILE_EXCL&&this.existsSync(s))throw Object.assign(new Error(`EEXIST: file already exists, copyfile '${s}' -> '${g}'`),{code:"EEXIST"});let c;try{c=n.readFileSync(s)}catch{throw Object.assign(new Error(`EINVAL: invalid argument, copyfile '${s}' -> '${g}'`),{code:"EINVAL"})}a.writeFileSync(g,c)};return this.makeCallSync(e,()=>this.makeCallSync(t,()=>this.baseFs.copyFileSync(e,t,r),(n,{subPath:s})=>i(this.baseFs,e,n,s)),(n,{subPath:s})=>this.makeCallSync(t,()=>i(n,s,this.baseFs,t),(a,{subPath:g})=>n!==a?i(n,s,a,g):n.copyFileSync(s,g,r)))}async appendFilePromise(e,t,r){return await this.makeCallPromise(e,async()=>await this.baseFs.appendFilePromise(e,t,r),async(i,{subPath:n})=>await i.appendFilePromise(n,t,r))}appendFileSync(e,t,r){return this.makeCallSync(e,()=>this.baseFs.appendFileSync(e,t,r),(i,{subPath:n})=>i.appendFileSync(n,t,r))}async writeFilePromise(e,t,r){return await this.makeCallPromise(e,async()=>await this.baseFs.writeFilePromise(e,t,r),async(i,{subPath:n})=>await i.writeFilePromise(n,t,r))}writeFileSync(e,t,r){return this.makeCallSync(e,()=>this.baseFs.writeFileSync(e,t,r),(i,{subPath:n})=>i.writeFileSync(n,t,r))}async unlinkPromise(e){return await this.makeCallPromise(e,async()=>await this.baseFs.unlinkPromise(e),async(t,{subPath:r})=>await t.unlinkPromise(r))}unlinkSync(e){return this.makeCallSync(e,()=>this.baseFs.unlinkSync(e),(t,{subPath:r})=>t.unlinkSync(r))}async utimesPromise(e,t,r){return await this.makeCallPromise(e,async()=>await this.baseFs.utimesPromise(e,t,r),async(i,{subPath:n})=>await i.utimesPromise(n,t,r))}utimesSync(e,t,r){return this.makeCallSync(e,()=>this.baseFs.utimesSync(e,t,r),(i,{subPath:n})=>i.utimesSync(n,t,r))}async lutimesPromise(e,t,r){return await this.makeCallPromise(e,async()=>await this.baseFs.lutimesPromise(e,t,r),async(i,{subPath:n})=>await i.lutimesPromise(n,t,r))}lutimesSync(e,t,r){return this.makeCallSync(e,()=>this.baseFs.lutimesSync(e,t,r),(i,{subPath:n})=>i.lutimesSync(n,t,r))}async mkdirPromise(e,t){return await this.makeCallPromise(e,async()=>await this.baseFs.mkdirPromise(e,t),async(r,{subPath:i})=>await r.mkdirPromise(i,t))}mkdirSync(e,t){return this.makeCallSync(e,()=>this.baseFs.mkdirSync(e,t),(r,{subPath:i})=>r.mkdirSync(i,t))}async rmdirPromise(e,t){return await this.makeCallPromise(e,async()=>await this.baseFs.rmdirPromise(e,t),async(r,{subPath:i})=>await r.rmdirPromise(i,t))}rmdirSync(e,t){return this.makeCallSync(e,()=>this.baseFs.rmdirSync(e,t),(r,{subPath:i})=>r.rmdirSync(i,t))}async linkPromise(e,t){return await this.makeCallPromise(t,async()=>await this.baseFs.linkPromise(e,t),async(r,{subPath:i})=>await r.linkPromise(e,i))}linkSync(e,t){return this.makeCallSync(t,()=>this.baseFs.linkSync(e,t),(r,{subPath:i})=>r.linkSync(e,i))}async symlinkPromise(e,t,r){return await this.makeCallPromise(t,async()=>await this.baseFs.symlinkPromise(e,t,r),async(i,{subPath:n})=>await i.symlinkPromise(e,n))}symlinkSync(e,t,r){return this.makeCallSync(t,()=>this.baseFs.symlinkSync(e,t,r),(i,{subPath:n})=>i.symlinkSync(e,n))}async readFilePromise(e,t){return this.makeCallPromise(e,async()=>await this.baseFs.readFilePromise(e,t),async(r,{subPath:i})=>await r.readFilePromise(i,t))}readFileSync(e,t){return this.makeCallSync(e,()=>this.baseFs.readFileSync(e,t),(r,{subPath:i})=>r.readFileSync(i,t))}async readdirPromise(e,t){return await this.makeCallPromise(e,async()=>await this.baseFs.readdirPromise(e,t),async(r,{subPath:i})=>await r.readdirPromise(i,t),{requireSubpath:!1})}readdirSync(e,t){return this.makeCallSync(e,()=>this.baseFs.readdirSync(e,t),(r,{subPath:i})=>r.readdirSync(i,t),{requireSubpath:!1})}async readlinkPromise(e){return await this.makeCallPromise(e,async()=>await this.baseFs.readlinkPromise(e),async(t,{subPath:r})=>await t.readlinkPromise(r))}readlinkSync(e){return this.makeCallSync(e,()=>this.baseFs.readlinkSync(e),(t,{subPath:r})=>t.readlinkSync(r))}async truncatePromise(e,t){return await this.makeCallPromise(e,async()=>await this.baseFs.truncatePromise(e,t),async(r,{subPath:i})=>await r.truncatePromise(i,t))}truncateSync(e,t){return this.makeCallSync(e,()=>this.baseFs.truncateSync(e,t),(r,{subPath:i})=>r.truncateSync(i,t))}async ftruncatePromise(e,t){if((e&rr)!==this.magic)return this.baseFs.ftruncatePromise(e,t);let r=this.fdMap.get(e);if(typeof r>"u")throw tr.EBADF("ftruncate");let[i,n]=r;return i.ftruncatePromise(n,t)}ftruncateSync(e,t){if((e&rr)!==this.magic)return this.baseFs.ftruncateSync(e,t);let r=this.fdMap.get(e);if(typeof r>"u")throw tr.EBADF("ftruncateSync");let[i,n]=r;return i.ftruncateSync(n,t)}watch(e,t,r){return this.makeCallSync(e,()=>this.baseFs.watch(e,t,r),(i,{subPath:n})=>i.watch(n,t,r))}watchFile(e,t,r){return this.makeCallSync(e,()=>this.baseFs.watchFile(e,t,r),()=>(0,WC.watchFile)(this,e,t,r))}unwatchFile(e,t){return this.makeCallSync(e,()=>this.baseFs.unwatchFile(e,t),()=>(0,WC.unwatchFile)(this,e,t))}async makeCallPromise(e,t,r,{requireSubpath:i=!0}={}){if(typeof e!="string")return await t();let n=this.resolve(e),s=this.findMount(n);return s?i&&s.subPath==="/"?await t():await this.getMountPromise(s.archivePath,async a=>await r(a,s)):await t()}makeCallSync(e,t,r,{requireSubpath:i=!0}={}){if(typeof e!="string")return t();let n=this.resolve(e),s=this.findMount(n);return!s||i&&s.subPath==="/"?t():this.getMountSync(s.archivePath,a=>r(a,s))}findMount(e){if(this.filter&&!this.filter.test(e))return null;let t="";for(;;){let r=e.substring(t.length),i=this.getMountPoint(r,t);if(!i)return null;if(t=this.pathUtils.join(t,i),!this.isMount.has(t)){if(this.notMount.has(t))continue;try{if(!this.baseFs.lstatSync(t).isFile()){this.notMount.add(t);continue}}catch{return null}this.isMount.add(t)}return{archivePath:t,subPath:this.pathUtils.join(zC.PortablePath.root,e.substring(t.length))}}}limitOpenFiles(e){var t,r,i;if(this.mountInstances===null)return;let n=Date.now(),s=n+this.maxAge,a=e===null?0:this.mountInstances.size-e;for(let[g,{childFs:c,expiresAt:l,refCount:C}]of this.mountInstances.entries())if(!(C!==0||((t=c.hasOpenFileHandles)===null||t===void 0?void 0:t.call(c)))){if(n>=l){(r=c.saveAndClose)===null||r===void 0||r.call(c),this.mountInstances.delete(g),a-=1;continue}else if(e===null||a<=0){s=l;break}(i=c.saveAndClose)===null||i===void 0||i.call(c),this.mountInstances.delete(g),a-=1}this.limitOpenFilesTimeout===null&&(e===null&&this.mountInstances.size>0||e!==null)&&isFinite(s)&&(this.limitOpenFilesTimeout=setTimeout(()=>{this.limitOpenFilesTimeout=null,this.limitOpenFiles(null)},s-n).unref())}async getMountPromise(e,t){var r;if(this.mountInstances){let i=this.mountInstances.get(e);if(!i){let n=await this.factoryPromise(this.baseFs,e);i=this.mountInstances.get(e),i||(i={childFs:n(),expiresAt:0,refCount:0})}this.mountInstances.delete(e),this.limitOpenFiles(this.maxOpenFiles-1),this.mountInstances.set(e,i),i.expiresAt=Date.now()+this.maxAge,i.refCount+=1;try{return await t(i.childFs)}finally{i.refCount-=1}}else{let i=(await this.factoryPromise(this.baseFs,e))();try{return await t(i)}finally{(r=i.saveAndClose)===null||r===void 0||r.call(i)}}}getMountSync(e,t){var r;if(this.mountInstances){let i=this.mountInstances.get(e);return i||(i={childFs:this.factorySync(this.baseFs,e),expiresAt:0,refCount:0}),this.mountInstances.delete(e),this.limitOpenFiles(this.maxOpenFiles-1),this.mountInstances.set(e,i),i.expiresAt=Date.now()+this.maxAge,t(i.childFs)}else{let i=this.factorySync(this.baseFs,e);try{return t(i)}finally{(r=i.saveAndClose)===null||r===void 0||r.call(i)}}}};VC.MountFS=wp});var Zx=p(XC=>{"use strict";Object.defineProperty(XC,"__esModule",{value:!0});XC.NoFS=void 0;var D5=bo(),S5=Ar(),ke=()=>Object.assign(new Error("ENOSYS: unsupported filesystem access"),{code:"ENOSYS"}),hl=class extends D5.FakeFS{constructor(){super(S5.ppath)}getExtractHint(){throw ke()}getRealPath(){throw ke()}resolve(){throw ke()}async openPromise(){throw ke()}openSync(){throw ke()}async opendirPromise(){throw ke()}opendirSync(){throw ke()}async readPromise(){throw ke()}readSync(){throw ke()}async writePromise(){throw ke()}writeSync(){throw ke()}async closePromise(){throw ke()}closeSync(){throw ke()}createWriteStream(){throw ke()}createReadStream(){throw ke()}async realpathPromise(){throw ke()}realpathSync(){throw ke()}async readdirPromise(){throw ke()}readdirSync(){throw ke()}async existsPromise(e){throw ke()}existsSync(e){throw ke()}async accessPromise(){throw ke()}accessSync(){throw ke()}async statPromise(){throw ke()}statSync(){throw ke()}async fstatPromise(e){throw ke()}fstatSync(e){throw ke()}async lstatPromise(e){throw ke()}lstatSync(e){throw ke()}async fchmodPromise(){throw ke()}fchmodSync(){throw ke()}async chmodPromise(){throw ke()}chmodSync(){throw ke()}async fchownPromise(){throw ke()}fchownSync(){throw ke()}async chownPromise(){throw ke()}chownSync(){throw ke()}async mkdirPromise(){throw ke()}mkdirSync(){throw ke()}async rmdirPromise(){throw ke()}rmdirSync(){throw ke()}async linkPromise(){throw ke()}linkSync(){throw ke()}async symlinkPromise(){throw ke()}symlinkSync(){throw ke()}async renamePromise(){throw ke()}renameSync(){throw ke()}async copyFilePromise(){throw ke()}copyFileSync(){throw ke()}async appendFilePromise(){throw ke()}appendFileSync(){throw ke()}async writeFilePromise(){throw ke()}writeFileSync(){throw ke()}async unlinkPromise(){throw ke()}unlinkSync(){throw ke()}async utimesPromise(){throw ke()}utimesSync(){throw ke()}async lutimesPromise(){throw ke()}lutimesSync(){throw ke()}async readFilePromise(){throw ke()}readFileSync(){throw ke()}async readlinkPromise(){throw ke()}readlinkSync(){throw ke()}async truncatePromise(){throw ke()}truncateSync(){throw ke()}async ftruncatePromise(e,t){throw ke()}ftruncateSync(e,t){throw ke()}watch(){throw ke()}watchFile(){throw ke()}unwatchFile(){throw ke()}};XC.NoFS=hl;hl.instance=new hl});var $x=p(ZC=>{"use strict";Object.defineProperty(ZC,"__esModule",{value:!0});ZC.PosixFS=void 0;var F5=Nn(),Dp=Ar(),Sp=class extends F5.ProxiedFS{constructor(e){super(Dp.npath),this.baseFs=e}mapFromBase(e){return Dp.npath.fromPortablePath(e)}mapToBase(e){return Dp.npath.toPortablePath(e)}};ZC.PosixFS=Sp});var eR=p($C=>{"use strict";Object.defineProperty($C,"__esModule",{value:!0});$C.VirtualFS=void 0;var x5=ko(),R5=Nn(),mi=Ar(),b5=/^[0-9]+$/,Fp=/^(\/(?:[^/]+\/)*?(?:\$\$virtual|__virtual__))((?:\/((?:[^/]+-)?[a-f0-9]+)(?:\/([^/]+))?)?((?:\/.*)?))$/,k5=/^([^/]+-)?[a-f0-9]+$/,Wi=class extends R5.ProxiedFS{static makeVirtualPath(e,t,r){if(mi.ppath.basename(e)!=="__virtual__")throw new Error('Assertion failed: Virtual folders must be named "__virtual__"');if(!mi.ppath.basename(t).match(k5))throw new Error("Assertion failed: Virtual components must be ended by an hexadecimal hash");let n=mi.ppath.relative(mi.ppath.dirname(e),r).split("/"),s=0;for(;s{"use strict";Object.defineProperty(eh,"__esModule",{value:!0});eh.NodePathFS=void 0;var AR=require("url"),v5=require("util"),N5=Nn(),M5=Ar(),xp=class extends N5.ProxiedFS{constructor(e){super(M5.npath),this.baseFs=e}mapFromBase(e){return e}mapToBase(e){if(typeof e=="string")return e;if(e instanceof AR.URL)return(0,AR.fileURLToPath)(e);if(Buffer.isBuffer(e)){let t=e.toString();if(Buffer.byteLength(t)!==e.byteLength)throw new Error("Non-utf8 buffers are not supported at the moment. Please upvote the following issue if you encounter this error: https://github.com/yarnpkg/berry/issues/4942");return t}throw new Error(`Unsupported path type: ${(0,v5.inspect)(e)}`)}};eh.NodePathFS=xp});var oR=p(rh=>{"use strict";var rR,iR,nR,sR;Object.defineProperty(rh,"__esModule",{value:!0});rh.FileHandle=void 0;var Ht=Symbol("kBaseFs"),Bs=Symbol("kFd"),ps=Symbol("kClosePromise"),Ah=Symbol("kCloseResolve"),th=Symbol("kCloseReject"),gg=Symbol("kRefs"),wi=Symbol("kRef"),Di=Symbol("kUnref"),Rp=class{constructor(e,t){this[rR]=1,this[iR]=void 0,this[nR]=void 0,this[sR]=void 0,this[Ht]=t,this[Bs]=e}get fd(){return this[Bs]}async appendFile(e,t){var r;try{this[wi](this.appendFile);let i=(r=typeof t=="string"?t:t?.encoding)!==null&&r!==void 0?r:void 0;return await this[Ht].appendFilePromise(this.fd,e,i?{encoding:i}:void 0)}finally{this[Di]()}}async chown(e,t){try{return this[wi](this.chown),await this[Ht].fchownPromise(this.fd,e,t)}finally{this[Di]()}}async chmod(e){try{return this[wi](this.chmod),await this[Ht].fchmodPromise(this.fd,e)}finally{this[Di]()}}createReadStream(e){return this[Ht].createReadStream(null,{...e,fd:this.fd})}createWriteStream(e){return this[Ht].createWriteStream(null,{...e,fd:this.fd})}datasync(){throw new Error("Method not implemented.")}sync(){throw new Error("Method not implemented.")}async read(e,t,r,i){var n,s,a;try{this[wi](this.read);let g;return Buffer.isBuffer(e)?g=e:(e??(e={}),g=(n=e.buffer)!==null&&n!==void 0?n:Buffer.alloc(16384),t=e.offset||0,r=(s=e.length)!==null&&s!==void 0?s:g.byteLength,i=(a=e.position)!==null&&a!==void 0?a:null),t??(t=0),r??(r=0),r===0?{bytesRead:r,buffer:g}:{bytesRead:await this[Ht].readPromise(this.fd,g,t,r,i),buffer:g}}finally{this[Di]()}}async readFile(e){var t;try{this[wi](this.readFile);let r=(t=typeof e=="string"?e:e?.encoding)!==null&&t!==void 0?t:void 0;return await this[Ht].readFilePromise(this.fd,r)}finally{this[Di]()}}async stat(e){try{return this[wi](this.stat),await this[Ht].fstatPromise(this.fd,e)}finally{this[Di]()}}async truncate(e){try{return this[wi](this.truncate),await this[Ht].ftruncatePromise(this.fd,e)}finally{this[Di]()}}utimes(e,t){throw new Error("Method not implemented.")}async writeFile(e,t){var r;try{this[wi](this.writeFile);let i=(r=typeof t=="string"?t:t?.encoding)!==null&&r!==void 0?r:void 0;await this[Ht].writeFilePromise(this.fd,e,i)}finally{this[Di]()}}async write(...e){try{if(this[wi](this.write),ArrayBuffer.isView(e[0])){let[t,r,i,n]=e;return{bytesWritten:await this[Ht].writePromise(this.fd,t,r??void 0,i??void 0,n??void 0),buffer:t}}else{let[t,r,i]=e;return{bytesWritten:await this[Ht].writePromise(this.fd,t,r,i),buffer:t}}}finally{this[Di]()}}async writev(e,t){try{this[wi](this.writev);let r=0;if(typeof t<"u")for(let i of e){let n=await this.write(i,void 0,void 0,t);r+=n.bytesWritten,t+=n.bytesWritten}else for(let i of e){let n=await this.write(i);r+=n.bytesWritten}return{buffers:e,bytesWritten:r}}finally{this[Di]()}}readv(e,t){throw new Error("Method not implemented.")}close(){if(this[Bs]===-1)return Promise.resolve();if(this[ps])return this[ps];if(this[gg]--,this[gg]===0){let e=this[Bs];this[Bs]=-1,this[ps]=this[Ht].closePromise(e).finally(()=>{this[ps]=void 0})}else this[ps]=new Promise((e,t)=>{this[Ah]=e,this[th]=t}).finally(()=>{this[ps]=void 0,this[th]=void 0,this[Ah]=void 0});return this[ps]}[(rR=gg,iR=ps,nR=Ah,sR=th,wi)](e){if(this[Bs]===-1){let t=new Error("file closed");throw t.code="EBADF",t.syscall=e.name,t}this[gg]++}[Di](){if(this[gg]--,this[gg]===0){let e=this[Bs];this[Bs]=-1,this[Ht].closePromise(e).then(this[Ah],this[th])}}};rh.FileHandle=Rp});var lR=p(cg=>{"use strict";Object.defineProperty(cg,"__esModule",{value:!0});cg.extendFs=cg.patchFs=void 0;var fl=require("util"),L5=tR(),aR=oR(),P5=new Set(["accessSync","appendFileSync","createReadStream","createWriteStream","chmodSync","fchmodSync","chownSync","fchownSync","closeSync","copyFileSync","linkSync","lstatSync","fstatSync","lutimesSync","mkdirSync","openSync","opendirSync","readlinkSync","readFileSync","readdirSync","readlinkSync","realpathSync","renameSync","rmdirSync","statSync","symlinkSync","truncateSync","ftruncateSync","unlinkSync","unwatchFile","utimesSync","watch","watchFile","writeFileSync","writeSync"]),gR=new Set(["accessPromise","appendFilePromise","fchmodPromise","chmodPromise","fchownPromise","chownPromise","closePromise","copyFilePromise","linkPromise","fstatPromise","lstatPromise","lutimesPromise","mkdirPromise","openPromise","opendirPromise","readdirPromise","realpathPromise","readFilePromise","readdirPromise","readlinkPromise","renamePromise","rmdirPromise","statPromise","symlinkPromise","truncatePromise","ftruncatePromise","unlinkPromise","utimesPromise","writeFilePromise","writeSync"]);function cR(A,e){e=new L5.NodePathFS(e);let t=(r,i,n)=>{let s=r[i];r[i]=n,typeof s?.[fl.promisify.custom]<"u"&&(n[fl.promisify.custom]=s[fl.promisify.custom])};{t(A,"exists",(r,...i)=>{let s=typeof i[i.length-1]=="function"?i.pop():()=>{};process.nextTick(()=>{e.existsPromise(r).then(a=>{s(a)},()=>{s(!1)})})}),t(A,"read",(...r)=>{let[i,n,s,a,g,c]=r;if(r.length<=3){let l={};r.length<3?c=r[1]:(l=r[1],c=r[2]),{buffer:n=Buffer.alloc(16384),offset:s=0,length:a=n.byteLength,position:g}=l}if(s==null&&(s=0),a|=0,a===0){process.nextTick(()=>{c(null,0,n)});return}g==null&&(g=-1),process.nextTick(()=>{e.readPromise(i,n,s,a,g).then(l=>{c(null,l,n)},l=>{c(l,0,n)})})});for(let r of gR){let i=r.replace(/Promise$/,"");if(typeof A[i]>"u")continue;let n=e[r];if(typeof n>"u")continue;t(A,i,(...a)=>{let c=typeof a[a.length-1]=="function"?a.pop():()=>{};process.nextTick(()=>{n.apply(e,a).then(l=>{c(null,l)},l=>{c(l)})})})}A.realpath.native=A.realpath}{t(A,"existsSync",r=>{try{return e.existsSync(r)}catch{return!1}}),t(A,"readSync",(...r)=>{let[i,n,s,a,g]=r;return r.length<=3&&({offset:s=0,length:a=n.byteLength,position:g}=r[2]||{}),s==null&&(s=0),a|=0,a===0?0:(g==null&&(g=-1),e.readSync(i,n,s,a,g))});for(let r of P5){let i=r;if(typeof A[i]>"u")continue;let n=e[r];typeof n>"u"||t(A,i,n.bind(e))}A.realpathSync.native=A.realpathSync}{let r=A.promises;for(let i of gR){let n=i.replace(/Promise$/,"");if(typeof r[n]>"u")continue;let s=e[i];typeof s>"u"||i!=="open"&&t(r,n,(a,...g)=>a instanceof aR.FileHandle?a[n].apply(a,g):s.call(e,a,...g))}t(r,"open",async(...i)=>{let n=await e.openPromise(...i);return new aR.FileHandle(n,e)})}A.read[fl.promisify.custom]=async(r,i,...n)=>({bytesRead:await e.readPromise(r,i,...n),buffer:i}),A.write[fl.promisify.custom]=async(r,i,...n)=>({bytesWritten:await e.writePromise(r,i,...n),buffer:i})}cg.patchFs=cR;function O5(A,e){let t=Object.create(A);return cR(t,e),t}cg.extendFs=O5});var hR=p(Qs=>{"use strict";Object.defineProperty(Qs,"__esModule",{value:!0});Qs.xfs=void 0;var K5=nA(),U5=K5.__importDefault(require("os")),T5=ko(),Il=Ar();function uR(A){let e=Math.ceil(Math.random()*4294967296).toString(16).padStart(8,"0");return`${A}${e}`}var Si=new Set,bp=null;function CR(){if(bp)return bp;let A=Il.npath.toPortablePath(U5.default.tmpdir()),e=Qs.xfs.realpathSync(A);return process.once("exit",()=>{Qs.xfs.rmtempSync()}),bp={tmpdir:A,realTmpdir:e}}Qs.xfs=Object.assign(new T5.NodeFS,{detachTemp(A){Si.delete(A)},mktempSync(A){let{tmpdir:e,realTmpdir:t}=CR();for(;;){let r=uR("xfs-");try{this.mkdirSync(Il.ppath.join(e,r))}catch(n){if(n.code==="EEXIST")continue;throw n}let i=Il.ppath.join(t,r);if(Si.add(i),typeof A>"u")return i;try{return A(i)}finally{if(Si.has(i)){Si.delete(i);try{this.removeSync(i)}catch{}}}}},async mktempPromise(A){let{tmpdir:e,realTmpdir:t}=CR();for(;;){let r=uR("xfs-");try{await this.mkdirPromise(Il.ppath.join(e,r))}catch(n){if(n.code==="EEXIST")continue;throw n}let i=Il.ppath.join(t,r);if(Si.add(i),typeof A>"u")return i;try{return await A(i)}finally{if(Si.has(i)){Si.delete(i);try{await this.removePromise(i)}catch{}}}}},async rmtempPromise(){await Promise.all(Array.from(Si.values()).map(async A=>{try{await Qs.xfs.removePromise(A,{maxRetries:0}),Si.delete(A)}catch{}}))},rmtempSync(){for(let A of Si)try{Qs.xfs.removeSync(A),Si.delete(A)}catch{}}})});var BA=p(Te=>{"use strict";Object.defineProperty(Te,"__esModule",{value:!0});Te.xfs=Te.extendFs=Te.patchFs=Te.VirtualFS=Te.ProxiedFS=Te.PosixFS=Te.NodeFS=Te.NoFS=Te.MountFS=Te.LazyFS=Te.JailFS=Te.CwdFS=Te.BasePortableFakeFS=Te.FakeFS=Te.AliasFS=Te.toFilename=Te.ppath=Te.npath=Te.Filename=Te.PortablePath=Te.normalizeLineEndings=Te.unwatchAllFiles=Te.unwatchFile=Te.watchFile=Te.opendir=Te.setupCopyIndex=Te.statUtils=Te.errors=Te.constants=void 0;var kp=nA(),q5=kp.__importStar(kC());Te.constants=q5;var G5=kp.__importStar(vC());Te.errors=G5;var Y5=kp.__importStar(gp());Te.statUtils=Y5;var _5=up();Object.defineProperty(Te,"setupCopyIndex",{enumerable:!0,get:function(){return _5.setupCopyIndex}});var H5=Gx();Object.defineProperty(Te,"opendir",{enumerable:!0,get:function(){return H5.opendir}});var vp=hp();Object.defineProperty(Te,"watchFile",{enumerable:!0,get:function(){return vp.watchFile}});Object.defineProperty(Te,"unwatchFile",{enumerable:!0,get:function(){return vp.unwatchFile}});Object.defineProperty(Te,"unwatchAllFiles",{enumerable:!0,get:function(){return vp.unwatchAllFiles}});var J5=bo();Object.defineProperty(Te,"normalizeLineEndings",{enumerable:!0,get:function(){return J5.normalizeLineEndings}});var fR=Ar();Object.defineProperty(Te,"PortablePath",{enumerable:!0,get:function(){return fR.PortablePath}});Object.defineProperty(Te,"Filename",{enumerable:!0,get:function(){return fR.Filename}});var Np=Ar();Object.defineProperty(Te,"npath",{enumerable:!0,get:function(){return Np.npath}});Object.defineProperty(Te,"ppath",{enumerable:!0,get:function(){return Np.ppath}});Object.defineProperty(Te,"toFilename",{enumerable:!0,get:function(){return Np.toFilename}});var j5=Jx();Object.defineProperty(Te,"AliasFS",{enumerable:!0,get:function(){return j5.AliasFS}});var IR=bo();Object.defineProperty(Te,"FakeFS",{enumerable:!0,get:function(){return IR.FakeFS}});Object.defineProperty(Te,"BasePortableFakeFS",{enumerable:!0,get:function(){return IR.BasePortableFakeFS}});var W5=jx();Object.defineProperty(Te,"CwdFS",{enumerable:!0,get:function(){return W5.CwdFS}});var z5=zx();Object.defineProperty(Te,"JailFS",{enumerable:!0,get:function(){return z5.JailFS}});var V5=Vx();Object.defineProperty(Te,"LazyFS",{enumerable:!0,get:function(){return V5.LazyFS}});var X5=Xx();Object.defineProperty(Te,"MountFS",{enumerable:!0,get:function(){return X5.MountFS}});var Z5=Zx();Object.defineProperty(Te,"NoFS",{enumerable:!0,get:function(){return Z5.NoFS}});var $5=ko();Object.defineProperty(Te,"NodeFS",{enumerable:!0,get:function(){return $5.NodeFS}});var e6=$x();Object.defineProperty(Te,"PosixFS",{enumerable:!0,get:function(){return e6.PosixFS}});var A6=Nn();Object.defineProperty(Te,"ProxiedFS",{enumerable:!0,get:function(){return A6.ProxiedFS}});var t6=eR();Object.defineProperty(Te,"VirtualFS",{enumerable:!0,get:function(){return t6.VirtualFS}});var ER=lR();Object.defineProperty(Te,"patchFs",{enumerable:!0,get:function(){return ER.patchFs}});Object.defineProperty(Te,"extendFs",{enumerable:!0,get:function(){return ER.extendFs}});var r6=hR();Object.defineProperty(Te,"xfs",{enumerable:!0,get:function(){return r6.xfs}})});var yR=p((VFe,dR)=>{dR.exports=QR;QR.sync=n6;var BR=require("fs");function i6(A,e){var t=e.pathExt!==void 0?e.pathExt:process.env.PATHEXT;if(!t||(t=t.split(";"),t.indexOf("")!==-1))return!0;for(var r=0;r{SR.exports=wR;wR.sync=s6;var mR=require("fs");function wR(A,e,t){mR.stat(A,function(r,i){t(r,r?!1:DR(i,e))})}function s6(A,e){return DR(mR.statSync(A),e)}function DR(A,e){return A.isFile()&&o6(A,e)}function o6(A,e){var t=A.mode,r=A.uid,i=A.gid,n=e.uid!==void 0?e.uid:process.getuid&&process.getuid(),s=e.gid!==void 0?e.gid:process.getgid&&process.getgid(),a=parseInt("100",8),g=parseInt("010",8),c=parseInt("001",8),l=a|g,C=t&c||t&g&&i===s||t&a&&r===n||t&l&&n===0;return C}});var RR=p(($Fe,xR)=>{var ZFe=require("fs"),ih;process.platform==="win32"||global.TESTING_WINDOWS?ih=yR():ih=FR();xR.exports=Mp;Mp.sync=a6;function Mp(A,e,t){if(typeof e=="function"&&(t=e,e={}),!t){if(typeof Promise!="function")throw new TypeError("callback not provided");return new Promise(function(r,i){Mp(A,e||{},function(n,s){n?i(n):r(s)})})}ih(A,e||{},function(r,i){r&&(r.code==="EACCES"||e&&e.ignoreErrors)&&(r=null,i=!1),t(r,i)})}function a6(A,e){try{return ih.sync(A,e||{})}catch(t){if(e&&e.ignoreErrors||t.code==="EACCES")return!1;throw t}}});var PR=p((exe,LR)=>{var lg=process.platform==="win32"||process.env.OSTYPE==="cygwin"||process.env.OSTYPE==="msys",bR=require("path"),g6=lg?";":":",kR=RR(),vR=A=>Object.assign(new Error(`not found: ${A}`),{code:"ENOENT"}),NR=(A,e)=>{let t=e.colon||g6,r=A.match(/\//)||lg&&A.match(/\\/)?[""]:[...lg?[process.cwd()]:[],...(e.path||process.env.PATH||"").split(t)],i=lg?e.pathExt||process.env.PATHEXT||".EXE;.CMD;.BAT;.COM":"",n=lg?i.split(t):[""];return lg&&A.indexOf(".")!==-1&&n[0]!==""&&n.unshift(""),{pathEnv:r,pathExt:n,pathExtExe:i}},MR=(A,e,t)=>{typeof e=="function"&&(t=e,e={}),e||(e={});let{pathEnv:r,pathExt:i,pathExtExe:n}=NR(A,e),s=[],a=c=>new Promise((l,C)=>{if(c===r.length)return e.all&&s.length?l(s):C(vR(A));let f=r[c],E=/^".*"$/.test(f)?f.slice(1,-1):f,m=bR.join(E,A),w=!E&&/^\.[\\\/]/.test(A)?A.slice(0,2)+m:m;l(g(w,c,0))}),g=(c,l,C)=>new Promise((f,E)=>{if(C===i.length)return f(a(l+1));let m=i[C];kR(c+m,{pathExt:n},(w,D)=>{if(!w&&D)if(e.all)s.push(c+m);else return f(c+m);return f(g(c,l,C+1))})});return t?a(0).then(c=>t(null,c),t):a(0)},c6=(A,e)=>{e=e||{};let{pathEnv:t,pathExt:r,pathExtExe:i}=NR(A,e),n=[];for(let s=0;s{"use strict";var OR=(A={})=>{let e=A.env||process.env;return(A.platform||process.platform)!=="win32"?"PATH":Object.keys(e).reverse().find(r=>r.toUpperCase()==="PATH")||"Path"};Lp.exports=OR;Lp.exports.default=OR});var GR=p((txe,qR)=>{"use strict";var UR=require("path"),l6=PR(),u6=KR();function TR(A,e){let t=A.options.env||process.env,r=process.cwd(),i=A.options.cwd!=null,n=i&&process.chdir!==void 0&&!process.chdir.disabled;if(n)try{process.chdir(A.options.cwd)}catch{}let s;try{s=l6.sync(A.command,{path:t[u6({env:t})],pathExt:e?UR.delimiter:void 0})}catch{}finally{n&&process.chdir(r)}return s&&(s=UR.resolve(i?A.options.cwd:"",s)),s}function C6(A){return TR(A)||TR(A,!0)}qR.exports=C6});var YR=p((rxe,Op)=>{"use strict";var Pp=/([()\][%!^"`<>&|;, *?])/g;function h6(A){return A=A.replace(Pp,"^$1"),A}function f6(A,e){return A=`${A}`,A=A.replace(/(\\*)"/g,'$1$1\\"'),A=A.replace(/(\\*)$/,"$1$1"),A=`"${A}"`,A=A.replace(Pp,"^$1"),e&&(A=A.replace(Pp,"^$1")),A}Op.exports.command=h6;Op.exports.argument=f6});var HR=p((ixe,_R)=>{"use strict";_R.exports=/^#!(.*)/});var jR=p((nxe,JR)=>{"use strict";var I6=HR();JR.exports=(A="")=>{let e=A.match(I6);if(!e)return null;let[t,r]=e[0].replace(/#! ?/,"").split(" "),i=t.split("/").pop();return i==="env"?r:r?`${i} ${r}`:i}});var zR=p((sxe,WR)=>{"use strict";var Kp=require("fs"),E6=jR();function B6(A){let t=Buffer.alloc(150),r;try{r=Kp.openSync(A,"r"),Kp.readSync(r,t,0,150,0),Kp.closeSync(r)}catch{}return E6(t.toString())}WR.exports=B6});var $R=p((oxe,ZR)=>{"use strict";var p6=require("path"),VR=GR(),XR=YR(),Q6=zR(),d6=process.platform==="win32",y6=/\.(?:com|exe)$/i,m6=/node_modules[\\/].bin[\\/][^\\/]+\.cmd$/i;function w6(A){A.file=VR(A);let e=A.file&&Q6(A.file);return e?(A.args.unshift(A.file),A.command=e,VR(A)):A.file}function D6(A){if(!d6)return A;let e=w6(A),t=!y6.test(e);if(A.options.forceShell||t){let r=m6.test(e);A.command=p6.normalize(A.command),A.command=XR.command(A.command),A.args=A.args.map(n=>XR.argument(n,r));let i=[A.command].concat(A.args).join(" ");A.args=["/d","/s","/c",`"${i}"`],A.command=process.env.comspec||"cmd.exe",A.options.windowsVerbatimArguments=!0}return A}function S6(A,e,t){e&&!Array.isArray(e)&&(t=e,e=null),e=e?e.slice(0):[],t=Object.assign({},t);let r={command:A,args:e,options:t,file:void 0,original:{command:A,args:e}};return t.shell?r:D6(r)}ZR.exports=S6});var tb=p((axe,Ab)=>{"use strict";var Up=process.platform==="win32";function Tp(A,e){return Object.assign(new Error(`${e} ${A.command} ENOENT`),{code:"ENOENT",errno:"ENOENT",syscall:`${e} ${A.command}`,path:A.command,spawnargs:A.args})}function F6(A,e){if(!Up)return;let t=A.emit;A.emit=function(r,i){if(r==="exit"){let n=eb(i,e,"spawn");if(n)return t.call(A,"error",n)}return t.apply(A,arguments)}}function eb(A,e){return Up&&A===1&&!e.file?Tp(e.original,"spawn"):null}function x6(A,e){return Up&&A===1&&!e.file?Tp(e.original,"spawnSync"):null}Ab.exports={hookChildProcess:F6,verifyENOENT:eb,verifyENOENTSync:x6,notFoundError:Tp}});var Yp=p((gxe,ug)=>{"use strict";var rb=require("child_process"),qp=$R(),Gp=tb();function ib(A,e,t){let r=qp(A,e,t),i=rb.spawn(r.command,r.args,r.options);return Gp.hookChildProcess(i,r),i}function R6(A,e,t){let r=qp(A,e,t),i=rb.spawnSync(r.command,r.args,r.options);return i.error=i.error||Gp.verifyENOENTSync(i.status,r),i}ug.exports=ib;ug.exports.spawn=ib;ug.exports.sync=R6;ug.exports._parse=qp;ug.exports._enoent=Gp});var _p=p(yr=>{"use strict";Object.defineProperty(yr,"__esModule",{value:!0});yr.tryInstance=yr.getInstance=yr.setFactory=yr.cachedInstance=void 0;var nb=()=>{throw new Error("Assertion failed: No libzip instance is available, and no factory was configured")};function b6(A){nb=A}yr.setFactory=b6;function k6(){return typeof yr.cachedInstance>"u"&&(yr.cachedInstance=nb()),yr.cachedInstance}yr.getInstance=k6;function v6(){return yr.cachedInstance}yr.tryInstance=v6});var ob=p((nh,Jp)=>{var sb=Object.assign({},require("fs")),Hp=function(){var A=typeof document<"u"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename<"u"&&(A=A||__filename),function(e){e=e||{};var t=typeof e<"u"?e:{},r,i;t.ready=new Promise(function(u,I){r=u,i=I});var n={},s;for(s in t)t.hasOwnProperty(s)&&(n[s]=t[s]);var a=[],g="./this.program",c=function(u,I){throw I},l=!1,C=!0,f="";function E(u){return t.locateFile?t.locateFile(u,f):f+u}var m,w,D,L;C&&(l?f=require("path").dirname(f)+"/":f=__dirname+"/",m=function(I,B){var S=xn(I);return S?B?S:S.toString():(D||(D=sb),L||(L=require("path")),I=L.normalize(I),D.readFileSync(I,B?null:"utf8"))},w=function(I){var B=m(I,!0);return B.buffer||(B=new Uint8Array(B)),j(B.buffer),B},process.argv.length>1&&(g=process.argv[1].replace(/\\/g,"/")),a=process.argv.slice(2),c=function(u){process.exit(u)},t.inspect=function(){return"[Emscripten Module object]"});var K=t.print||console.log.bind(console),_=t.printErr||console.warn.bind(console);for(s in n)n.hasOwnProperty(s)&&(t[s]=n[s]);n=null,t.arguments&&(a=t.arguments),t.thisProgram&&(g=t.thisProgram),t.quit&&(c=t.quit);var le=16;function re(u,I){return I||(I=le),Math.ceil(u/I)*I}var J=0,X=function(u){J=u},ie;t.wasmBinary&&(ie=t.wasmBinary);var G=t.noExitRuntime||!0;typeof WebAssembly!="object"&&HA("no native wasm support detected");function ee(u,I,B){switch(I=I||"i8",I.charAt(I.length-1)==="*"&&(I="i32"),I){case"i1":return Z[u>>0];case"i8":return Z[u>>0];case"i16":return Wa((u>>1)*2);case"i32":return at((u>>2)*4);case"i64":return at((u>>2)*4);case"float":return Gi((u>>2)*4);case"double":return ja((u>>3)*8);default:HA("invalid type for getValue: "+I)}return null}var o,H=!1,ne;function j(u,I){u||HA("Assertion failed: "+I)}function M(u){var I=t["_"+u];return j(I,"Cannot call unknown function "+u+", make sure it is exported"),I}function k(u,I,B,S,R){var O={string:function(Oe){var uA=0;if(Oe!=null&&Oe!==0){var nt=(Oe.length<<2)+1;uA=rg(nt),be(Oe,uA,nt)}return uA},array:function(Oe){var uA=rg(Oe.length);return iA(Oe,uA),uA}};function T(Oe){return I==="string"?pe(Oe):I==="boolean"?Boolean(Oe):Oe}var $=M(u),Ie=[],Ue=0;if(S)for(var Ne=0;Ne=S);)++R;return ae.decode(u.subarray?u.subarray(I,R):new Uint8Array(u.slice(I,R)))}function pe(u,I){if(!u)return"";for(var B=u+I,S=u;!(S>=B)&&U[S];)++S;return ae.decode(U.subarray(u,S))}function me(u,I,B,S){if(!(S>0))return 0;for(var R=B,O=B+S-1,T=0;T=55296&&$<=57343){var Ie=u.charCodeAt(++T);$=65536+(($&1023)<<10)|Ie&1023}if($<=127){if(B>=O)break;I[B++]=$}else if($<=2047){if(B+1>=O)break;I[B++]=192|$>>6,I[B++]=128|$&63}else if($<=65535){if(B+2>=O)break;I[B++]=224|$>>12,I[B++]=128|$>>6&63,I[B++]=128|$&63}else{if(B+3>=O)break;I[B++]=240|$>>18,I[B++]=128|$>>12&63,I[B++]=128|$>>6&63,I[B++]=128|$&63}}return I[B]=0,B-R}function be(u,I,B){return me(u,U,I,B)}function Ye(u){for(var I=0,B=0;B=55296&&S<=57343&&(S=65536+((S&1023)<<10)|u.charCodeAt(++B)&1023),S<=127?++I:S<=2047?I+=2:S<=65535?I+=3:I+=4}return I}function Ve(u){var I=Ye(u)+1,B=wC(I);return B&&me(u,Z,B,I),B}function iA(u,I){Z.set(u,I)}function de(u,I){return u%I>0&&(u+=I-u%I),u}var mA,Z,U,oe,V,Ge,EA,$A,wA,ue;function ye(u){mA=u,t.HEAP_DATA_VIEW=ue=new DataView(u),t.HEAP8=Z=new Int8Array(u),t.HEAP16=oe=new Int16Array(u),t.HEAP32=Ge=new Int32Array(u),t.HEAPU8=U=new Uint8Array(u),t.HEAPU16=V=new Uint16Array(u),t.HEAPU32=EA=new Uint32Array(u),t.HEAPF32=$A=new Float32Array(u),t.HEAPF64=wA=new Float64Array(u)}var rA=t.INITIAL_MEMORY||16777216,Xe,vA=[],RA=[],fr=[],Yt=!1;function Io(){if(t.preRun)for(typeof t.preRun=="function"&&(t.preRun=[t.preRun]);t.preRun.length;)cs(t.preRun.shift());Tr(vA)}function Al(){Yt=!0,!t.noFSInit&&!y.init.initialized&&y.init(),Br.init(),Tr(RA)}function Eo(){if(t.postRun)for(typeof t.postRun=="function"&&(t.postRun=[t.postRun]);t.postRun.length;)Ya(t.postRun.shift());Tr(fr)}function cs(u){vA.unshift(u)}function Ga(u){RA.unshift(u)}function Ya(u){fr.unshift(u)}var Ur=0,Bo=null,Ti=null;function _a(u){return u}function po(u){Ur++,t.monitorRunDependencies&&t.monitorRunDependencies(Ur)}function Qo(u){if(Ur--,t.monitorRunDependencies&&t.monitorRunDependencies(Ur),Ur==0&&(Bo!==null&&(clearInterval(Bo),Bo=null),Ti)){var I=Ti;Ti=null,I()}}t.preloadedImages={},t.preloadedAudios={};function HA(u){t.onAbort&&t.onAbort(u),u+="",_(u),H=!0,ne=1,u="abort("+u+"). Build with -s ASSERTIONS=1 for more info.";var I=new WebAssembly.RuntimeError(u);throw i(I),I}var Ha="data:application/octet-stream;base64,";function yo(u){return u.startsWith(Ha)}var qi="data:application/octet-stream;base64,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ACACIAA2AhggAiABNwMQIAIgAigCGEU6AA8CQCACKAIYRQRAIAIgAikDEKcQGSIANgIYIABFBEAgAkEANgIcDAILCyACQRgQGSIANgIIIABFBEAgAi0AD0EBcQRAIAIoAhgQFQsgAkEANgIcDAELIAIoAghBAToAACACKAIIIAIoAhg2AgQgAigCCCACKQMQNwMIIAIoAghCADcDECACKAIIIAItAA9BAXE6AAEgAiACKAIINgIcCyACKAIcIQAgAkEgaiQAIAALeAEBfyMAQRBrIgEkACABIAA2AgggASABKAIIQgQQHDYCBAJAIAEoAgRFBEAgAUEANgIMDAELIAEgASgCBC0AACABKAIELQABIAEoAgQtAAIgASgCBC0AA0EIdGpBCHRqQQh0ajYCDAsgASgCDCEAIAFBEGokACAAC4cDAQF/IwBBMGsiAyQAIAMgADYCJCADIAE2AiAgAyACNwMYAkAgAygCJC0AKEEBcQRAIANCfzcDKAwBCwJAAkAgAygCJCgCIEUNACADKQMYQv///////////wBWDQAgAykDGFANASADKAIgDQELIAMoAiRBDGpBEkEAEBQgA0J/NwMoDAELIAMoAiQtADVBAXEEQCADQn83AygMAQsCfyMAQRBrIgAgAygCJDYCDCAAKAIMLQA0QQFxCwRAIANCADcDKAwBCyADKQMYUARAIANCADcDKAwBCyADQgA3AxADQCADKQMQIAMpAxhUBEAgAyADKAIkIAMoAiAgAykDEKdqIAMpAxggAykDEH1BARAfIgI3AwggAkIAUwRAIAMoAiRBAToANSADKQMQUARAIANCfzcDKAwECyADIAMpAxA3AygMAwsgAykDCFAEQCADKAIkQQE6ADQFIAMgAykDCCADKQMQfDcDEAwCCwsLIAMgAykDEDcDKAsgAykDKCECIANBMGokACACC2EBAX8jAEEQayICIAA2AgggAiABNwMAAkAgAikDACACKAIIKQMIVgRAIAIoAghBADoAACACQX82AgwMAQsgAigCCEEBOgAAIAIoAgggAikDADcDECACQQA2AgwLIAIoAgwL7wEBAX8jAEEgayICJAAgAiAANgIYIAIgATcDECACIAIoAhhCCBAcNgIMAkAgAigCDEUEQCACQX82AhwMAQsgAigCDCACKQMQQv8BgzwAACACKAIMIAIp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AgwEQCABKAIMEE8gASgCDBAVCyABQRBqJAALLwEBfyMAQRBrIgEkACABIAA2AgwgASgCDCgCCBAVIAEoAgxBADYCCCABQRBqJAALzQEBAX8jAEEQayICJAAgAiAANgIIIAIgATYCBAJAIAIoAggtAChBAXEEQCACQX82AgwMAQsgAigCBEUEQCACKAIIQQxqQRJBABAUIAJBfzYCDAwBCyACKAIEEDsgAigCCCgCAARAIAIoAggoAgAgAigCBBA5QQBIBEAgAigCCEEMaiACKAIIKAIAEBggAkF/NgIMDAILCyACKAIIIAIoAgRCOEEDEB9CAFMEQCACQX82AgwMAQsgAkEANgIMCyACKAIMIQAgAkEQaiQAIAAL3wQBAX8jAEEgayICIAA2AhggAiABNgIUAkAgAigCGEUEQCACQQE2AhwMAQsgAiACKAIYKAIANgIMAkAgAigCGCgCCARAIAIgAigCGCgCCDYCEAwBCyACQQE2AhAgAkEANgIIA0ACQCACKAIIIAIoAhgvAQRPDQACQCACKAIMIAIoAghqLQAAQR9LBEAgAigCDCACKAIIai0AAEGAAUkNAQsgAigCDCACKAIIai0AAEENRg0AIAIoAgwgAigCCGotAABBCkYNACACKAIMIAIoAghqLQAAQQlGBEAMAQsgAkEDNgIQAkAgAigCDCACKAIIai0AAEHgAXFBwAFGBEAgAkEBNgIADAELAkAgAigCDCACKAIIai0AAEHwAXFB4AFGBEAgAkECNgIADAELAkAgAigCDCACKAIIai0AAEH4AXFB8AFGBEAgAkEDNgIADAELIAJBBDYCEAwECwsLIAIoAhgvAQQgAigCCCACKAIAak0EQCACQQQ2AhAMAgsgAkEBNgIEA0AgAigCBCACKAIATQRAIAIoAgwgAigCCCACKAIEamotAABBwAFxQYABRwRAIAJBBDYCEAwGBSACIAIoAgRBAWo2AgQMAgsACwsgAiACKAIAIAIoAghqNgIICyACIAIoAghBAWo2AggMAQsLCyACKAIYIAIoAhA2AgggAigCFARAAkAgAigCFEECRw0AIAIoAhBBA0cNACACQQI2AhAgAigCGEECNgIICwJAIAIoAhQgAigCEEYNACACKAIQQQFGDQAgAkEFNgIcDAILCyACIAIoAhA2AhwLIAIoAhwLagEBfyMAQRBr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QQJGDQELIAMoApQBQQJHDQEgAygCmAFBAkcNAQsgAygCpAEiACAALwEMQYAQcjsBDAwBCyADKAKkASIAIAAvAQxB/+8DcTsBDCADKAKUAUECRgRAIANB9eABIAMoAqQBKAIwIAMoAqgBQQhqEI8BNgKQASADKAKQAUUEQCADQX82AqwBDAMLCwJAIAMoAqABQYACcQ0AIAMoApgBQQJHDQAgA0H1xgEgAygCpAEoAjggAygCqAFBCGoQjwE2AkggAygCSEUEQCADKAKQARAiIANBfzYCrAEMAwsgAygCSCADKAKQATYCACADIAMoAkg2ApABCwsCQCADKAKkAS8BUkUEQCADKAKkASIAIAAvAQxB/v8DcTsBDAwBCyADKAKkASIAIAAvAQxBAXI7AQwLIAMgAygCpAEgAygCoAEQZ0EBcToAhgEgAyADKAKgAUGACnFBgApHBH8gAy0AhgEFQQELQQFxOgCHASADAn9BASADKAKkAS8BUkGBAkYNABpBASADKAKkAS8BUkGCAkYNABogAygCpAEvAVJBgwJGC0EBcToAhQEgAy0AhwFBAXEEQCADIANBIGpCHBApNgIcIAMoAhxFBEAgAygCqAFBCGpBDkEAEBQgAygCkAEQIiADQX82AqwBDAILAkAgAygCoAFBgAJxBEACQCADKAKgAUGACHENACADKAKkASkDIEL/////D1YNACADKAKkASkDKEL/////D1gNAgsgAygCHCADKAKkASkDKBAtIAMoAhwgAygCpAEpAyAQLQwBCwJAAkAgAygCoAFBgAhxDQAgAygCpAEpAyBC/////w9WDQAgAygCpAEpAyhC/////w9WDQAgAygCpAEpA0hC/////w9YDQELIAMoAqQBKQMoQv////8PWgRAIAMoAhwgAygCpAEpAygQLQsgAygCpAEpAyBC/////w9aBEAgAygCHCADKAKkASkDIBAtCyADKAKkASkDSEL/////D1oEQCADKAIcIAMoAqQBKQNIEC0LCwsCfyMAQRBrIgAgAygCHDYCDCAAKAIMLQAAQQFxRQsEQCADKAKoAUEIakEUQQAQFCADKAIcEBYgAygCkAEQIiADQX82AqwBDAILIANBAQJ/IwBBEGsiACADKAIcNgIMAn4gACgCDC0AAEEBcQRAIAAoAgwpAxAMAQtCAAunQf//A3ELIANBIGpBgAYQUjYCjAEgAygCHBAWIAMoAowBIAMoApABNgIAIAMgAygCjAE2ApABCyADLQCFAUEBcQRAIAMgA0EVakIHECk2AhAgAygCEEUEQCADKAKoAUEIakEOQQAQFCADKAKQARAiIANBfzYCrAEMAgsgAygCEEECEB0gAygCEEHMEkECEEAgAygCECADKAKkAS8BUkH/AXEQlwEgAygCECADKAKkASgCEEH//wNxEB0CfyMAQRBrIgAgAygCEDYCDCAAKAIMLQAAQQFxRQsEQCADKAKoAUEIakEUQQAQFCADKAIQEBYgAygCkAEQIiADQX82AqwBDAILIANBgbICQQcgA0EVakGABhBSNgIMIAMoAhAQFiADKAIMIAMoApABNgIAIAMgAygCDDYCkAELIAMgA0HQAGpCLhApIgA2AkwgAEUEQCADKAKoAUEIakEOQQAQFCADKAKQARAiIANBfzYCrAEMAQsgAygCTEH5EkH+EiADKAKgAUGAAnEbQQQQQCADKAKgAUGAAnFFBEAgAygCTCADLQCGAUEBcQR/QS0FIAMoAqQBLwEIC0H//wNxEB0LIAMoAkwgAy0AhgFBAXEEf0EtBSADKAKkAS8BCgtB//8DcRAdIAMoAkwgAygCpAEvAQwQHQJAIAMtAIUBQQFxBEAgAygCTEHjABAdDAELIAMoAkwgAygCpAEoAhBB//8DcRAdCyADKAKkASgCFCADQZ4BaiADQZwBahCOASADKAJMIAMvAZ4BEB0gAygCTCADLwGcARAdAkACQCADLQCFAUEBcUUNACADKAKkASkDKEIUWg0AIAMoAkxBABAgDAELIAMoAkwgAygCpAEoAhgQIAsCQAJAIAMoAqABQYACcUGAAkcNACADKAKkASkDIEL/////D1QEQCADKAKkASkDKEL/////D1QNAQsgAygCTEF/ECAgAygCTEF/ECAMAQsCQCADKAKkASkDIEL/////D1QEQCADKAJMIAMoAqQBKQMgpxAgDAELIAMoAkxBfxAgCwJAIAMoAqQBKQMoQv////8PVARAIAMoAkwgAygCpAEpAyinECAMAQsgAygCTEF/ECALCyADKAJMIAMoAqQBKAIwEE5B//8DcRAdIAMgAygCpAEoAjQgAygCoAEQkwFB//8DcSADKAKQAUGABhCTAUH//wNxajYCiAEgAygCTCAD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IgJBAWo2AhAgAiAAKAIEaiABQQh2OgAAIAAgACgCECICQQFqNgIQIAIgACgCBGogAUEQdjoAACAAIAAoAhAiAkEBajYCECACIAAoAgRqIAFBGHY6AAAL3gQCAX8CfiABQQJqrSEEIAApA7gtIQMCQCAAKALALSIBQQNqIgJBP00EQCAEIAGthiADhCEEDAELIAFBwABGBEAgACAAKAIQIgFBAWo2AhAgASAAKAIEaiADPAAAIAAgACgCECIBQQFqNgIQIAEgACgCBGogA0IIiDwAACAAIAAoAhAiAUEBajYCECABIAAoAgRqIANCEIg8AAAgACAAKAIQIgFBAWo2AhAgASAAKAIEaiADQhiIPAAAIAAgACgCECIBQQFqNgIQIAEgACgCBGogA0IgiDwAACAAIAAoAhAiAUEBajYCECABIAAoAgRqIANCKIg8AAAgACAAKAIQIgFBAWo2AhAgASAAKAIEaiADQjCIPAAAIAAgACgCECIBQQFqNgIQIAEgACgCBGogA0I4iDwAAEEDIQIMAQsgACAAKAIQIgJBAWo2AhAgAiAAKAIEaiAEIAGthiADhCIDPAAAIAAgACgCECICQQFqNgIQIAIgACgCBGogA0IIiDwAACAAIAAoAhAiAkEBajYCECACIAAoAgRqIANCEIg8AAAgACAAKAIQIgJBAWo2AhAgAiAAKAIEaiADQhiIPAAAIAAgACgCECICQQFqNgIQIAIgACgCBGogA0IgiDwAACAAIAAoAhAiAkEBajYCECACIAAoAgRqIANCKIg8AAAgACAAKAIQIgJBAWo2AhAgAiAAKAIEaiADQjCIPAAAIAAgACgCECICQQFqNgIQIAIgACgCBGogA0I4iDwAACABQT1rIQIgBEHAACABa62IIQQLIAAgBDcDuC0gACACNgLALQuoCQIDfwJ+QbDkADMBACEFIAApA7gtIQYCQCAAKALALSIEQbLkAC8BACIDaiICQT9NBEAgBSAErYYgBoQhBQwBCyAEQcAARgRAIAAgACgCECICQQFqNgIQIAIgACgCBGogBjwAACAAIAAoAhAiAkEBajYCECACIAAoAgRqIAZCCIg8AAAgACAAKAIQIgJBAWo2AhAgAiAAKAIEaiAGQhCIPAAAIAAgACgCECICQQFqNgIQIAIgACgCBGogBkIYiDwAACAAIAAoAhAiAkEB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KAI0EJYBIQAgAygCgAEoAgAgAykDcKdBBHRqKAIAIAA2AjQgAygCgAEoAgAgAykDcKdBBHRqKAIAQQE6AAQgA0EANgI0IAMQTyADIAMpA3BCAXw3A3AMAgsACwsgAwJ+IAMpA2AgAykDaH1C////////////AFQEQCADKQNgIAMpA2h9DAELQv///////////wALNwOIAQsgAykDiAEhBCADQZABaiQAIAQL1AQBAX8jAEEgayIDJAAgAyAANgIYIAMgATYCFCADIAI2AhAgAygCECEBIwBBEGsiACQAIAAgATYCCCAAQdgAEBk2AgQCQCAAKAIERQRAIAAoAghBDkEAEBQgAEEANgIMDAELIAAoAgghAiMAQRBrIgEkACABIAI2AgggAUEYEBkiAjYCBAJAIAJFBEAgASgCCEEOQQAQFCABQQA2AgwMAQsgASgCBEEANgIAIAEoAgRCADcDCCABKAIEQQA2AhAgASABKAIENgIMCyABKAIMIQIgAUEQaiQAIAAoAgQgAjYCUCACRQRAIAAoAgQQFSAAQQA2AgwMAQsgACgCBEEANgIAIAAoAgRBADYCBCMAQRBrIgEgACgCBEEIajYCDCABKAIMQQA2AgAgASgCDEEANgIEIAEoAgxBADYCCCAAKAIEQQA2AhggACgCBEEANgIUIAAoAgRBADYCHCAAKAIEQQA2AiQgACgCBEEANgIgIAAoAgRBADoAKCAAKAIEQgA3AzggACgCBEIANwMwIAAoAgRBADYCQCAAKAIEQQA2AkggACgCBEEANgJEIAAoAgRBADYCTCAAKAIEQQA2AlQgACAAKAIENgIMCyAAKAIMIQEgAEEQaiQAIAMgASIANgIMAkAgAEUEQCADQQA2AhwMAQsgAygCDCADKAIYNgIAIAMoAgwgAygCFDYCBCADKAIUQRBxBEAgAygCDCIAIAAoAhRBAnI2AhQgAygCDCIAIAAoAhhBAnI2AhgLIAMgAygCDDYCHAsgAygCHCEAIANBIGokACAAC9UBAQF/IwBBIGsiBCQAIAQgADYCGCAEIAE3AxAgBCACNgIMIAQgAzYCCAJAAkAgBCkDEEL///////////8AVwRAIAQpAxBCgICAgICAgICAf1kNAQsgBCgCCEEEQT0QFCAEQX82AhwMAQsCfyAEKQMQIQEgBCgCDCEAIAQoAhgiAigC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KQMQp0EEdGoQvQEgAyADKQMQQgF8NwMQDAELCyADKAIoIAMpAwgiATcDECADKAIoIAE3AwggA0EBOgAvCyADLQAvQQFxIQAgA0EwaiQAIAALzAEBAX8jAEEgayICJAAgAiAANwMQIAIgATYCDCACQTAQGSIBNgIIAkAgAUUEQCACKAIMQQ5BABAUIAJBADYCHAwBCyACKAIIQQA2AgAgAigCCEIANwMQIAIoAghCADcDCCACKAIIQgA3AyAgAigCCEIANwMYIAIoAghBADYCKCACKAIIQQA6ACwgAigCCCACKQMQIAIoAgwQkAFBAXFFBEAgAigCCBAkIAJBADYCHAwBCyACIAIoAgg2AhwLIAIoAhwhASACQSBqJAAgAQvWAgEBfyMAQSBrIgMkACADIAA2AhggAyABNgIUIAMgAjYCECADIANBDGpCBBApNgIIAkAgAygCCEUEQCADQX82AhwMAQsDQCADKAIUBEAgAygCFCgCBCADKAIQcUGABnEEQCADKAIIQgAQLBogAygCCCADKAIULwEIEB0gAygCCCADKAIULwEKEB0CfyMAQRBrIgAgAygCCDYCDCAAKAIMLQAAQQFxRQsEQCADKAIYQQhqQRRBABAUIAMoAggQFiADQX82AhwMBAsgAygCGCADQQxqQgQQNkEASARAIAMoAggQFiADQX82AhwMBAsgAygCFC8BCgRAIAMoAhggAygCFCgCDCADKAIULwEKrRA2QQBIBEAgAygCCBAWIANBfzYCHAwFCwsLIAMgAygCFCgCADYCFAwBCwsgAygCCBAWIANBADYCHAsgAygCHCEAIANBIGokACAAC2gBAX8jAEEQayICIAA2AgwgAiABNgIIIAJBADsBBgNAIAIoAgwEQCACKAIMKAIEIAIoAghxQYAGcQRAIAIgAigCDC8BCiACLwEGQQRqajsBBgsgAiACKAIMKAIANgIMDAELCyACLwEGC/ABAQF/IwBBEGsiASQAIAEgADYCDCABIAEoAgw2AgggAUEANgIEA0AgASgCDARAAkACQCABKAIMLwEIQfXGAUYNACABKAIMLwEIQfXgAUYNACABKAIMLwEIQYGyAkYNACABKAIMLwEIQQFHDQELIAEgASgCDCgCADYCACABKAIIIAEoAgxGBEAgASABKAIANgIICyABKAIMQQA2AgAgASgCDBAiIAEoAgQEQCABKAIEIAEoAgA2AgALIAEgASgCADYCDAwCCyABIAEoAgw2AgQgASABKAIMKAIANgIMDAELCyABKAIIIQAgAUEQaiQAIAALsgQBAX8jAEFAaiIFJAAgBSAANgI4IAUgATsBNiAFIAI2AjAgBSADNgIsIAUgBDYCKCAFIAUoAjggBS8BNq0QKSIANgIkAkAgAEUEQCAFKAIoQQ5BABAUIAVBADoAPwwBCyAFQQA2AiAgBUEANgIYA0ACfyMAQRBrIgAgBSgCJDYCDCAAKAIMLQAAQQFxCwR/IAUoAiQQMUIEWgVBAAtBAXEEQCAFIAUoAiQQGzsBFiAFIAUoAiQQGzsBFCAFIAUoAiQgBS8BFK0QHDYCECAFKAIQRQRAIAUoAihBFUEAEBQgBSgCJBAWIAUoAhgQIiAFQQA6AD8MAwsgBSAFLwEWIAUvARQgBSgCECAFKAIwEFIiADYCHCAARQRAIAUoAihBDkEAEBQgBSgCJBAWIAUoAhgQIiAFQQA6AD8MAwsCQCAFKAIYBEAgBSgCICAFKAIcNgIAIAUgBSgCHDYCIAwBCyAFIAUoAhwiADYCICAFIAA2AhgLDAELCyAFKAIkEEdBAXFFBEAgBSAFKAIkEDE+AgwgBSAFKAIkIAUoAgytEBw2AggCQAJAIAUoAgxBBE8NACAFKAIIRQ0AIAUoAghBoRUgBSgCDBBaRQ0BCyAFKAIoQRVBABAUIAUoAiQQFiAFKAIYECIgBUEAOgA/DAILCyAFKAIkEBYCQCAFKAIsBEAgBSgCLCAFKAIYNgIADAELIAUoAhgQIgsgBUEBOgA/CyAFLQA/QQFxIQAgBUFAayQAIAAL7wIBAX8jAEEgayICJAAgAiAANgIYIAIgATYCFAJAIAIoAhhFBEAgAiACKAIUNgIcDAELIAIgAigCGDYCCANAIAIoAggoAgAEQCACIAIoAggoAgA2AggMAQsLA0AgAigCFARAIAIgAigCFCgCADYCECACQQA2AgQgAiACKAIYNgIMA0ACQCACKAIMRQ0AAkAgAigCDC8BCCACKAIULwEIRw0AIAIoAgwvAQogAigCFC8BCkcNACACKAIMLwEKBEAgAigCDCgCDCACKAIUKAIMIAIoAgwvAQoQWg0BCyACKAIMIgAgACgCBCACKAIUKAIEQYAGcXI2AgQgAkEBNgIEDAELIAIgAigCDCgCADYCDAwBCwsgAigCFEEANgIAAkAgAigCBARAIAIoAhQQIgwBCyACKAIIIAIoAhQiADYCACACIAA2AggLIAIgAigCEDYCFAwBCwsgAiACKAIYNgIcCyACKAIcIQAgAkEgaiQAIAALXwEBfyMAQRBrIgIkACACIAA2AgggAiABOgAHIAIgAigCCEIBEBw2AgACQCACKAIARQRAIAJBfzYCDAwBCyACKAIAIAItAAc6AAAgAkEANgIMCyACKAIMGiACQRBqJAALVAEBfyMAQRBrIgEkACABIAA2AgggASABKAIIQgEQHDYCBAJAIAEoAgRFBEAgAUEAOgAPDAELIAEgASgCBC0AADoADwsgAS0ADyEAIAFBEGokACAAC5wGAQJ/IwBBIGsiAiQAIAIgADYCGCACIAE3AxACQCACKQMQIAIoAhgpAzBaBEAgAigCGEEIakESQQAQFCACQX82AhwMAQsgAigCGCgCGEECcQRAIAIoAhhBCGpBGUEAEBQgAkF/NgIcDAELIAIgAigCGCACKQMQQQAgAigCGEEIahBLIgA2AgwgAEUEQCACQX82AhwMAQsgAigCGCgCUCACKAIMIAIoAhhBCGoQVkEBcUUEQCACQX82AhwMAQsCfyACKAIYIQMgAikDECEBIwBBMGsiACQAIAAgAzYCKCAAIAE3AyAgAEEBNgIcAkAgACkDICAAKAIoKQMwWgRAIAAoAihBCGpBEkEAEBQgAEF/NgIsDAELAkAgACgCHA0AIAAoAigoAkAgACkDIKdBBHRqKAIERQ0AIAAoAigoAkAgACkDIKdBBHRqKAIEKAIAQQJxRQ0AAkAgACgCKCgCQCAAKQMgp0EEdGooAgAEQCAAIAAoAiggACkDIEEIIAAoAihBCGoQSyIDNgIMIANFBEAgAEF/NgIsDAQLIAAgACgCKCAAKAIMQQBBABBVNwMQAkAgACkDEEIAUw0AIAApAxAgACkDIFENACAAKAIoQQhqQQpBABAUIABBfzYCLAwECwwBCyAAQQA2AgwLIAAgACgCKCAAKQMgQQAgACgCKEEIahBLIgM2AgggA0UEQCAAQX82AiwMAgsgACgCDARAIAAoAigoAlAgACgCDCAAKQMgQQAgACgCKEEIahB2QQFxRQRAIABBfzYCLAwDCwsgACgCKCgCUCAAKAIIIAAoAihBCGoQVkEBcUUEQCAAKAIoKAJQIAAoAgxBABBWGiAAQX82AiwMAgsLIAAoAigoAkAgACkDIKdBBHRqKAIEEDcgACgCKCgCQCAAKQMgp0EEdGpBADYCBCAAKAIoKAJAIAApAyCnQQR0ahBgIABBADYCLAsgACgCLCEDIABBMGokACADCwRAIAJBfzYCHAwBCyACKAIYKAJAIAIpAxCnQQR0akEBOgAMIAJBADYCHAsgAigCHCEAIAJBIGokACAAC6UEAQF/IwBBMGsiBSQAIAUgADYCKCAFIAE3AyAgBSACNgIcIAUgAzoAGyAFIAQ2AhQCQCAFKAIoIAUpAyBBAEEAED5FBEAgBUF/NgIsDAELIAUoAigoAhhBAnEEQCAFKAIoQQhqQRlBABAUIAVBfzYCLAwBCyAFIAUoAigoAkAgBSkDIKdBBHRqNgIQIAUCfyAFKAIQKAIABEAgBSgCECgCAC8BCEEIdgwBC0EDCzoACyAFAn8gBSgCECgCAARAIAUoAhAoAgAoAkQMAQtBgIDYjXgLNgIEQQEhACAFIAUtABsgBS0AC0YEfyAFKAIUIAUoAgRHBUEBC0EBcTYCDAJAIAUoAgwEQCAFKAIQKAIERQRAIAUoAhAoAgAQPyEAIAUoAhAgADYCBCAARQRAIAUoAihBCGpBDkEAEBQgBUF/NgIsDAQLCyAFKAIQKAIEIAUoAhAoAgQvAQhB/wFxIAUtABtBCHRyOwEIIAUoAhAoAgQgBSgCFDYCRCAFKAIQKAIEIgAgACgCAEEQcjYCAAwBCyAFKAIQKAIEBEAgBSgCECgCBCIAIAAoAgBBb3E2AgACQCAFKAIQKAIEKAIARQRAIAUoAhAoAgQQNyAFKAIQQQA2AgQMAQsgBSgCECgCBCAFKAIQKAIELwEIQf8BcSAFLQALQQh0cjsBCCAFKAIQKAIEIAUoAgQ2AkQLCwsgBUEANgIsCyAFKAIsIQAgBUEwaiQAIAAL3Q8CAX8BfiMAQUBqIgQkACAEIAA2AjQgBEJ/NwMoIAQgATYCJCAEIAI2AiAgBCADNgIcAkAgBCgCNCgCGEECcQRAIAQoAjRBCGpBGUEAEBQgBEJ/NwM4DAELIAQgBCgCNCkDMDcDECAEKQMoQn9RBEAgBEJ/NwMIIAQoAhxBgMAAcQRAIAQgBCgCNCAEKAIkIAQoAhxBABBVNwMICyAEKQMIQn9RBEAgBCgCNCEBIwBBQGoiACQAIAAgATYCNAJAIAAoAjQpAzggACgCNCkDMEIBfFgEQCAAIAAoAjQpAzg3AxggACAAKQMYQgGGNwMQAkAgACkDEEIQVARAIABCEDcDEAwBCyAAKQMQQoAIVgRAIABCgAg3AxALCyAAIAApAxAgACkDGHw3AxggACAAKQMYp0EEdK03AwggACkDCCAAKAI0KQM4p0EEdK1UBEAgACgCNEEIakEOQQAQFCAAQn83AzgMAgsgACAAKAI0KAJAIAApAxinQQR0EEw2AiQgACgCJEUEQCAAKAI0QQhqQQ5BABAUIABCfzcDOAwCCyAAKAI0IAAoAiQ2AkAgACgCNCAAKQMYNwM4CyAAKAI0IgEpAzAhBSABIAVCAXw3AzAgACAFNwMoIAAoAjQoAkAgACkDKKdBBHRqEL0BIAAgACkDKDcDOAsgACkDOCEFIABBQGskACAEIAU3AwggBUIAUwRAIARCfzcDOAwDCwsgBCAEKQMINwMoCwJAIAQoAiRFDQAgBCgCNCEBIAQpAyghBSAEKAIkIQIgBCgCHCEDIwBBQGoiACQAIAAgATYCOCAAIAU3AzAgACACNgIsIAAgAzYCKAJAIAApAzAgACgCOCkDMFoEQCAAKAI4QQhqQRJBABAUIABBfzYCPAwBCyAAKAI4KAIYQQJxBEAgACgCOEEIakEZQQAQFCAAQX82AjwMAQsCQAJAIAAoAixFDQAgACgCLCwAAEUNACAAIAAoAiwgACgCLBAuQf//A3EgACgCKCAAKAI4QQhqEE0iATYCICABRQRAIABBfzYCPAwDCwJAIAAoAihBgDBxDQAgACgCIEEAEDpBA0cNACAAKAIgQQI2AggLDAELIABBADYCIAsgACAAKAI4IAAoAixBAEEAEFUiBTcDEAJAIAVCAFMNACAAKQMQIAApAzBRDQAgACgCIBAjIAAoAjhBCGpBCkEAEBQgAEF/NgI8DAELAkAgACkDEEIAUw0AIAApAxAgACkDMFINACAAKAIgECMgAEEANgI8DAELIAAgACgCOCgCQCAAKQMwp0EEdGo2AiQCQCAAKAIkKAIABEAgACAAKAIkKAIAKAIwIAAoAiAQhwFBAEc6AB8MAQsgAEEAOgAfCwJAIAAtAB9BAXENACAAKAIkKAIEDQAgACgCJCgCABA/IQEgACgCJCABNgIEIAFFBEAgACgCOEEIakEOQQAQFCAAKAIgECMgAEF/NgI8DAILCyAAAn8gAC0AH0EBcQRAIAAoAiQoAgAoAjAMAQsgACgCIAtBAEEAIAAoAjhBCGoQRiIBNgIIIAFFBEAgACgCIBAjIABBfzYCPAwBCwJAIAAoAiQoAgQEQCAAIAAoAiQoAgQoAjA2AgQMAQsCQCAAKAIkKAIABEAgACAAKAIkKAIAKAIwNgIEDAELIABBADYCBAsLAkAgACgCBARAIAAgACgCBEEAQQAgACgCOEEIahBGIgE2AgwgAUUEQCAAKAIgECMgAEF/NgI8DAMLDAELIABBADYCDAsgACgCOCgCUCAAKAIIIAApAzBBACAAKAI4QQhqEHZBAXFFBEAgACgCIBAjIABBfzYCPAwBCyAAKAIMBEAgACgCOCgCUCAAKAIMQQAQVhoLAkAgAC0AH0EBcQRAIAAoAiQoAgQEQCAAKAIkKAIEKAIAQQJxBEAgACgCJCgCBCgCMBAjIAAoAiQoAgQiASABKAIAQX1xNgIAAkAgACgCJCgCBCgCAEUEQCAAKAIkKAIEEDcgACgCJEEANgIEDAELIAAoAiQoAgQgACgCJCgCACgCMDYCMAsLCyAAKAIgECMMAQsgACgCJCgCBCgCAEECcQRAIAAoAiQoAgQoAjAQIwsgACgCJCgCBCIBIAEoAgBBAnI2AgAgACgCJCgCBCAAKAIgNgIwCyAAQQA2AjwLIAAoAjwhASAAQUBrJAAgAUUNACAEKAI0KQMwIAQpAxBSBEAgBCgCNCgCQCAEKQMop0EEdGoQfSAEKAI0IAQpAxA3AzALIARCfzcDOAwBCyAEKAI0KAJAIAQpAyinQQR0ahBgAkAgBCgCNCgCQCAEKQMop0EEdGooAgBFDQAgBCgCNCgCQCAEKQMop0EEdGooAgQEQCAEKAI0KAJAIAQpAyinQQR0aigCBCgCAEEBcQ0BCyAEKAI0KAJAIAQpAyinQQR0aigCBEUEQCAEKAI0KAJAIAQpAyinQQR0aigCABA/IQAgBCgCNCgCQCAEKQMop0EEdGogADYCBCAARQRAIAQoAjRBCGpBDkEAEBQgBEJ/NwM4DAMLCyAEKAI0KAJAIAQpAyinQQR0aigCBEF+NgIQIAQoAjQoAkAgBCkDKKdBBHRqKAIEIgAgACgCAEEBcjYCAAsgBCgCNCgCQCAEKQMop0EEdGogBCgCIDYCCCAEIAQpAyg3AzgLIAQpAzghBSAEQUBrJAAgBQuqAQEBfyMAQTBrIgIkACACIAA2AiggAiABNwMgIAJBADYCHAJAAkAgAigCKCgCJEEBRgRAIAIoAhxFDQEgAigCHEEBRg0BIAIoAhxBAkYNAQsgAigCKEEMakESQQAQFCACQX82AiwMAQsgAiACKQMgNwMIIAIgAigCHDYCECACQX9BACACKAIoIAJBCGpCEEEMEB9CAFMbNgIsCyACKAIsIQAgAkEwaiQAIAALpTIDBn8BfgF8IwBB4ABrIgQkACAEIAA2AlggBCABNgJUIAQgAjYCUAJAAkAgBCgCVEEATgRAIAQoAlgNAQsgBCgCUEESQQAQFCAEQQA2AlwMAQsgBCAEKAJUNgJMIwBBEGsiACAEKAJYNgIMIAQgACgCDCkDGDcDQEGgnQEpAwBCf1EEQCAEQX82AhQgBEEDNgIQIARBBzYCDCAEQQY2AgggBEECNgIEIARBATYCAEGgnQFBACAEEDQ3AwAgBEF/NgI0IARBDzYCMCAEQQ02AiwgBEEMNgIoIARBCjYCJCAEQQk2AiBBqJ0BQQggBEEgahA0NwMAC0GgnQEpAwAgBCkDQEGgnQEpAwCDUgRAIAQoAlBBHEEAEBQgBEEANgJcDAELQaidASkDACAEKQNAQaidASkDAINSBEAgBCAEKAJMQRByNgJMCyAEKAJMQRhxQRhGBEAgBCgCUEEZQQAQFCAEQQA2AlwMAQsgBCgCWCEBIAQoAlAhAiMAQdAAayIAJAAgACABNgJIIAAgAjYCRCAAQQhqEDsCQCAAKAJIIABBCGoQOQRAIwBBEGsiASAAKAJINgIMIAAgASgCDEEMajYCBCMAQRBrIgEgACgCBDYCDAJAIAEoAgwoAgBBBUcNACMAQRBrIgEgACgCBDYCDCABKAIMKAIEQSxHDQAgAEEANgJMDAILIAAoAkQgACgCBBBEIABBfzYCTAwBCyAAQQE2AkwLIAAoAkwhASAAQdAAaiQAIAQgATYCPAJAAkACQCAEKAI8QQFqDgIAAQILIARBADYCXAwCCyAEKAJMQQFxRQRAIAQoAlBBCUEAEBQgBEEANgJcDAILIAQgBCgCWCAEKAJMIAQoAlAQazYCXAwBCyAEKAJMQQJxBEAgBCgCUEEKQQAQFCAEQQA2AlwMAQsgBCgCWBBIQQBIBEAgBCgCUCAEKAJYEBggBEEANgJcDAELAkAgBCgCTEEIcQRAIAQgBCgCWCAEKAJMIAQoAlAQazYCOAwBCyAEKAJYIQAgBCgCTCEBIAQoAlAhAiMAQfAAayIDJAAgAyAANgJoIAMgATYCZCADIAI2AmAgA0EgahA7AkAgAygCaCADQSBqEDlBAEgEQCADKAJgIAMoAmgQGCADQQA2AmwMAQsgAykDIEIEg1AEQCADKAJgQQRBigEQFCADQQA2AmwMAQsgAyADKQM4NwMYIAMgAygCaCADKAJkIAMoAmAQayIANgJcIABFBEAgA0EANgJsDAELAkAgAykDGFBFDQAgAygCaBCfAUEBcUUNACADIAMoAlw2AmwMAQsgAygCXCEAIAMpAxghCSMAQeAAayICJAAgAiAANgJYIAIgCTcDUAJAIAIpA1BCFlQEQCACKAJYQQhqQRNBABAUIAJBADYCXAwBCyACAn4gAikDUEKqgARUBEAgAikDUAwBC0KqgAQLNwMwIAIoAlgoAgBCACACKQMwfUECEChBAEgEQCMAQRBrIgAgAigCWCgCADYCDCACIAAoAgxBDGo2AggCQAJ/IwBBEGsiACACKAIINgIMIAAoAgwoAgBBBEYLBEAjAEEQayIAIAIoAgg2AgwgACgCDCgCBEEWRg0BCyACKAJYQQhqIAIoAggQRCACQQA2AlwMAgsLIAIgAigCWCgCABBJIgk3AzggCUIAUwRAIAIoAlhBCGogAigCWCgCABAYIAJBADYCXAwBCyACIAIoAlgoAgAgAikDMEEAIAIoAlhBCGoQQSIANgIMIABFBEAgAkEANgJcDAELIAJCfzcDICACQQA2AkwgAikDMEKqgARaBEAgAigCDEIUECwaCyACQRBqQRNBABAUIAIgAigCDEIAEBw2AkQDQAJAIAIoAkQhASACKAIMEDFCEn2nIQUjAEEgayIAJAAgACABNgIYIAAgBTYCFCAAQfQSNgIQIABBBDYCDAJAAkAgACgCFCAAKAIMTwRAIAAoAgwNAQsgAEEANgIcDAELIAAgACgCGEEBazYCCANAAkAgACAAKAIIQQFqIAAoAhAtAAAgACgCGCAAKAIIayAAKAIUIAAoAgxrahCsASIBNgIIIAFFDQAgACgCCEEBaiAAKAIQQQFqIAAoAgxBAWsQWg0BIAAgACgCCDYCHAwCCwsgAEEANgIcCyAAKAIcIQEgAEEgaiQAIAIgATYCRCABRQ0AIAIoAgwgAigCRAJ/IwBBEGsiACACKAIMNgIMIAAoAgwoAgQLa6wQLBogAigCWCEBIAIoAgwhBSACKQM4IQkjAEHwAGsiACQAIAAgATYCaCAAIAU2AmQgACAJNwNYIAAgAkEQajYCVCMAQRBrIgEgACgCZDYCDCAAAn4gASgCDC0AAEEBcQRAIAEoAgwpAxAMAQtCAAs3AzACQCAAKAJkEDFCFlQEQCAAKAJUQRNBABAUIABBADYCbAwBCyAAKAJkQgQQHCgAAEHQlpUwRwRAIAAoAlRBE0EAEBQgAEEANgJsDAELAkACQCAAKQMwQhRUDQAjAEEQayIBIAAoAmQ2AgwgASgCDCgCBCAAKQMwp2pBFGsoAABB0JaZOEcNACAAKAJkIAApAzBCFH0QLBogACgCaCgCACEFIAAoAmQhBiAAKQNYIQkgACgCaCgCFCEHIAAoAlQhCCMAQbABayIBJAAgASAFNgKoASABIAY2AqQBIAEgCTcDmAEgASAHNgKUASABIAg2ApABIwBBEGsiBSABKAKkATYCDCABAn4gBSgCDC0AAEEBcQRAIAUoAgwpAxAMAQtCAAs3AxggASgCpAFCBBAcGiABIAEoAqQBEBtB//8DcTYCECABIAEoAqQBEBtB//8DcTYCCCABIAEoAqQBEDI3AzgCQCABKQM4Qv///////////wBWBEAgASgCkAFBBEEWEBQgAUEANgKsAQwBCyABKQM4Qjh8IAEpAxggASkDmAF8VgRAIAEoApABQRVBABAUIAFBADYCrAEMAQsCQAJAIAEpAzggASkDmAFUDQAgASkDOEI4fCABKQOYAQJ+IwBBEGsiBSABKAKkATYCDCAFKAIMKQMIC3xWDQAgASgCpAEgASkDOCABKQOYAX0QLBogAUEAOgAXDAELIAEoAqgBIAEpAzhBABAoQQBIBEAgASgCkAEgASgCqAEQGCABQQA2AqwBDAILIAEgASgCqAFCOCABQUBrIAEoApABEEEiBTYCpAEgBUUEQCABQQA2AqwBDAILIAFBAToAFwsgASgCpAFCBBAcKAAAQdCWmTBHBEAgASgCkAFBFUEAEBQgAS0AF0EBcQRAIAEoAqQBEBYLIAFBADYCrAEMAQsgASABKAKkARAyNwMwAkAgASgClAFBBHFFDQAgASkDMCABKQM4fEIMfCABKQOYASABKQMYfFENACABKAKQAUEVQQAQFCABLQAXQQFxBEAgASgCpAEQFgsgAUEANgKsAQwBCyABKAKkAUIEEBwaIAEgASgCpAEQKjYCDCABIAEoAqQBECo2AgQgASgCEEH//wNGBEAgASABKAIMNgIQCyABKAIIQf//A0YEQCABIAEoAgQ2AggLAkAgASgClAFBBHFFDQAgASgCCCABKAIERgRAIAEoAhAgASgCDEYNAQsgASgCkAFBFUEAEBQgAS0AF0EBcQRAIAEoAqQBEBYLIAFBADYCrAEMAQsCQCABKAIQRQRAIAEoAghFDQELIAEoApABQQFBABAUIAEtABdBAXEEQCABKAKkARAWCyABQQA2AqwBDAELIAEgASgCpAEQMjcDKCABIAEoAqQBEDI3AyAgASkDKCABKQMgUgRAIAEoApABQQFBABAUIAEtABdBAXEEQCABKAKkARAWCyABQQA2AqwBDAELIAEgASgCpAEQMjcDMCABIAEoAqQBEDI3A4ABAn8jAEEQayIFIAEoAqQBNgIMIAUoAgwtAABBAXFFCwRAIAEoApABQRRBABAUIAEtABdBAXEEQCABKAKkARAWCyABQQA2AqwBDAELIAEtABdBAXEEQCABKAKkARAWCwJAIAEpA4ABQv///////////wBYBEAgASkDgAEgASkDgAEgASkDMHxYDQELIAEoApABQQRBFhAUIAFBADYCrAEMAQsgASkDgAEgASkDMHwgASkDmAEgASkDOHxWBEAgASgCkAFBFUEAEBQgAUEANgKsAQwBCwJAIAEoApQBQQRxRQ0AIAEpA4ABIAEpAzB8IAEpA5gBIAEpAzh8UQ0AIAEoApABQRVBABAUIAFBADYCrAEMAQsgASkDKCABKQMwQi6AVgRAIAEoApABQRVBABAUIAFBADYCrAEMAQsgASABKQMoIAEoApABEJEBIgU2AowBIAVFBEAgAUEANgKsAQwBCyABKAKMAUEBOgAsIAEoAowBIAEpAzA3AxggASgCjAEgASkDgAE3AyAgASABKAKMATYCrAELIAEoAqwBIQUgAUGwAWokACAAIAU2AlAMAQsgACgCZCAAKQMwECwaIAAoAmQhBSAAKQNY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A0AgACgCACICLAAAIQMgACACQQFqNgIAIAEgA2pBMGshASACLAABQTBrQQpPDQEgAUEKbCEBDAALAAsgAQu7AgACQCABQRRLDQACQAJAAkACQAJAAkACQAJAAkACQCABQQlrDgoAAQIDBAUGBwgJCgsgAiACKAIAIgFBBGo2AgAgACABKAIANgIADwsgAiACKAIAIgFBBGo2AgAgACABNAIANwMADwsgAiACKAIAIgFBBGo2AgAgACABNQIANwMADwsgAiACKAIAQQdqQXhxIgFBCGo2AgAgACABKQMANwMADwsgAiACKAIAIgFBBGo2AgAgACABMgEANwMADwsgAiACKAIAIgFBBGo2AgAgACABMwEANwMADwsgAiACKAIAIgFBBGo2AgAgACABMAAANwMADwsgAiACKAIAIgFBBGo2AgAgACABMQAANwMADwsgAiACKAIAQQdqQXhxIgFBCGo2AgAgACABKwMAOQMADwsgACACQTQRBgALC38CAX8BfiAAvSIDQjSIp0H/D3EiAkH/D0cEfCACRQRAIAEgAEQAAAAAAAAAAGEEf0EABSAARAAAAAAAAPBDoiABEKoBIQAgASgCAEFAags2AgAgAA8LIAEgAkH+B2s2AgAgA0L/////////h4B/g0KAgICAgICA8D+EvwUgAAsLmwIAIABFBEBBAA8LAn8CQCAABH8gAUH/AE0NAQJAQdSbASgCACgCAEUEQCABQYB/cUGAvwNGDQMMAQsgAUH/D00EQCAAIAFBP3FBgAFyOgABIAAgAUEGdkHAAXI6AABBAgwECyABQYCwA09BACABQYBAcUGAwANHG0UEQCAAIAFBP3FBgAFyOgACIAAgAUEMdkHgAXI6AAAgACABQQZ2QT9xQYABcjoAAUEDDAQLIAFBgIAEa0H//z9NBEAgACABQT9xQYABcjoAAyAAIAFBEnZB8AFyOgAAIAAgAUEGdkE/cUGAAXI6AAIgACABQQx2QT9xQYABcjoAAUEEDAQLC0H4nQFBGTYCAEF/BUEBCwwBCyAAIAE6AABBAQsL4wEBAn8gAkEARyEDAkACQAJAIABBA3FFDQAgAkUNACABQf8BcSEEA0AgAC0AACAERg0CIAJBAWsiAkEARyEDIABBAWoiAEEDcUUNASACDQALCyADRQ0BCwJAIAAtAAAgAUH/AXFGDQAgAkEE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AwwBCyAAIAItAAA6AAEgA0ECayEGIARBAmshBSACQQFqIQICQCAAQQJqIgdBB3FFDQAgBUUNACAAIAItAAA6AAIgA0EDayEGIARBA2shBSACQQFqIQICQCAAQQNqIgdBB3FFDQAgBUUNACAAIAItAAA6AAMgA0EEayEGIARBBGshBSACQQFqIQICQCAAQQRqIgdBB3FFDQAgBUUNACAAIAItAAA6AAQgA0EFayEGIARBBWshBSACQQFqIQICQCAAQQVqIgdBB3FFDQAgBUUNACAAIAItAAA6AAUgA0EGayEGIARBBmshBSACQQFqIQICQCAAQQZqIgdBB3FFDQAgBUUNACAAIAItAAA6AAYgA0EHayEGIARBB2shBSACQQFqIQICQCAAQQdqIgdBB3FFDQAgBUUNACAAIAItAAA6AAcgA0EIayEDIARBCGshBCAAQQhqIQAgAkEBaiECDAYLIAchACAFIQQgBiEDDAULIAchACAFIQQgBiEDDAQLIAchACAFIQQgBiEDDAMLIAchACAFIQQgBiEDDAILIAchACAFIQQgBiEDDAELIAchACAFIQQgBiEDCwJAIANBF00EQCAERQ0BIARBAWshASAEQQdxIgMEQANAIAAgAi0AADoAACAEQQFrIQQgAEEBaiEAIAJBAWohAiADQQFrIgMNAAsLIAFBB0kNAQNAIAAgAi0AADoAACAAIAItAAE6AAEgACACLQACOgACIAAgAi0AAzoAAyAAIAItAAQ6AAQgACACLQAFOgAFIAAgAi0ABjoABiAAIAItAAc6AAcgAEEIaiEAIAJBCGohAiAEQQhrIgQNAAsMAQsgACABIAQQfyEACyAAC2wBA38CQCABKAIAIgNBB0sNACADIAIoAgBPDQAgACADayEEA0AgACAEKQAANwAAIAIgAigCACABKAIAIgVrNgIAIAEgASgCAEEBdCIDNgIAIAAgBWohACADQQdLDQEgAyACKAIASQ0ACwsgAAu8AgEBfwJAIAMgAGtBAWoiAyACIAIgA0sbIgJBCEkNACACQQhrIgRBA3ZBAWpBB3EiAwRAA0AgACABKQAANwAAIAJBCGshAiABQQhqIQEgAEEIaiEAIANBAWsiAw0ACwsgBEE4SQ0AA0AgACABKQAANwAAIAAgASkACDcACCAAIAEpABA3ABAgACABKQAYNwAYIAAg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KAKgAUUEQCABIAEoAqQBNgKsAQwBCyABIAEoAqABEC4CfyABKAKkAQRAIAEoAqQBEC5BAmoMAQtBAAtqQQFqEBkiADYCHCAARQRAIAFByBMoAgA2AqwBDAELIAEoAhwhAAJ/IAEoAqQBBEAgASgCpAEMAQtBghMLIQNB5xJBghMgASgCpAEbIQIgASABKAKgATYCCCABIAI2AgQgASADNgIAIABBvgogARBxIAEoAqgBIAEoAhw2AgggASABKAIcNgKsAQsgASgCrAEhACABQbABaiQAIAALMwEBfyAAKAIUIgMgASACIAAoAhAgA2siASABIAJLGyIBEBcaIAAgACgCFCABajYCFCACC48FAgZ+AX8gASABKAIAQQ9qQXBxIgFBEGo2AgAgAAJ8IAEpAwAhAyABKQMIIQYjAEEgayIIJAACQCAGQv///////////wCDIgRCgICAgICAwIA8fSAEQoCAgICAgMD/wwB9VARAIAZCBIYgA0I8iIQhBCADQv//////////D4MiA0KBgICAgICAgAhaBEAgBEKBgICAgICAgMAAfCECDAILIARCgICAgICAgIBAfSECIANCgICAgICAgIAIhUIAUg0BIAIgBEIBg3whAgwBCyADUCAEQoCAgICAgMD//wBUIARCgICAgICAwP//AFEbRQRAIAZCBIYgA0I8iIRC/////////wODQoCAgICAgID8/wCEIQIMAQtCgICAgICAgPj/ACECIARC////////v//DAFYNAEIAIQIgBEIwiKciAEGR9wBJDQAgAyECIAZC////////P4NCgICAgICAwACEIgUhBwJAIABBgfcAayIBQcAAcQRAIAIgAUFAaq2GIQdCACECDAELIAFFDQAgByABrSIEhiACQcAAIAFrrYiEIQcgAiAEhiECCyAIIAI3AxAgCCAHNwMYAkBBgfgAIABrIgBBwABxBEAgBSAAQUBqrYghA0IAIQUMAQsgAEUNACAFQcAAIABrrYYgAyAArSICiIQhAyAFIAKIIQULIAggAzcDACAIIAU3AwggCCkDCEIEhiAIKQMAIgNCPIiEIQIgCCkDECAIKQMYhEIAUq0gA0L//////////w+DhCIDQoGAgICAgICACFoEQCACQgF8IQIMAQsgA0KAgICAgICAgAiFQgBSDQAgAkIBgyACfCECCyAIQSBqJAAgAiAGQoCAgICAgICAgH+DhL8LOQMAC60XAxJ/An4BfCMAQbAEayIJJAAgCUEANgIsAkAgAb0iGEJ/VwRAQQEhEkGuCCETIAGaIgG9IRgMAQsgBEGAEHEEQEEBIRJBsQghEwwBC0G0CEGvCCAEQQFxIhIbIRMgEkUhFwsCQCAYQoCAgICAgID4/wCDQoCAgICAgID4/wBRBEAgAEEgIAIgEkEDaiINIARB//97cRAlIAAgEyASECEgAEHkC0HEEiAFQSBxIgMbQZ4NQcgSIAMbIAEgAWIbQQMQIQwBCyAJQRBqIRACQAJ/AkAgASAJQSxqEKoBIgEgAaAiAUQAAAAAAAAAAGIEQCAJIAkoAiwiBkEBazYCLCAFQSByIhRB4QBHDQEMAwsgBUEgciIUQeEARg0CIAkoAiwhC0EGIAMgA0EASBsMAQsgCSAGQR1rIgs2AiwgAUQAAAAAAACwQaIhAUEGIAMgA0EASBsLIQogCUEwaiAJQdACaiALQQBIGyIOIQcDQCAHAn8gAUQAAAAAAADwQWMgAUQAAAAAAAAAAGZxBEAgAasMAQtBAAsiAzYCACAHQQRqIQcgASADuKFEAAAAAGXNzUGiIgFEAAAAAAAAAABiDQALAkAgC0EBSARAIAshAyAHIQYgDiEIDAELIA4hCCALIQMDQCADQR0gA0EdSBshDAJAIAdBBGsiBiAISQ0AIAytIRlCACEYA0AgBiAGNQIAIBmGIBh8IhggGEKAlOvcA4AiGEKAlOvcA359PgIAIAggBkEEayIGTQRAIBhC/////w+DIRgMAQsLIBinIgNFDQAgCEEEayIIIAM2AgALA0AgCCAHIgZJBEAgBkEEayIHKAIARQ0BCwsgCSAJKAIsIAxrIgM2AiwgBiEHIANBAEoNAAsLIApBGWpBCW0hByADQX9MBEAgB0EBaiENIBRB5gBGIRUDQEEJQQAgA2sgA0F3SBshFgJAIAYgCEsEQEGAlOvcAyAWdiEPQX8gFnRBf3MhEUEAIQMgCCEHA0AgByADIAcoAgAiDCAWdmo2AgAgDCARcSAPbCEDIAdBBGoiByAGSQ0ACyAIIAhBBGogCCgCABshCCADRQ0BIAYgAzYCACAGQQRqIQYMAQsgCCAIQQRqIAgoAgAbIQgLIAkgCSgCLCAWaiIDNgIsIA4gCCAVGyIHIA1BAnRqIAYgBiAHa0ECdSANShshBiADQQBIDQALC0EAIQcCQCAGIAhNDQAgDiAIa0ECdUEJbCEHIAgoAgAiDEEKSQ0AQeQAIQMDQCAHQQFqIQcgAyAMSw0BIANBCmwhAwwACwALIApBACAHIBRB5gBGG2sgFEHnAEYgCkEAR3FrIgMgBiAOa0ECdUEJbEEJa0gEQCADQYDIAGoiEUEJbSIMQQJ0IAlBMGpBBHIgCUHUAmogC0EASBtqQYAgayENQQohAwJAIBEgDEEJbGsiDEEHSg0AQeQAIQMDQCAMQQFqIgxBCEYNASADQQpsIQMMAAsACwJAIA0oAgAiESARIANuIgwgA2xrIg9BASANQQRqIgsgBkYbRQ0ARAAAAAAAAOA/RAAAAAAAAPA/RAAAAAAAAPg/IAYgC0YbRAAAAAAAAPg/IA8gA0EBdiILRhsgCyAPSxshGkQBAAAAAABAQ0QAAAAAAABAQyAMQQFxGyEBAkAgFw0AIBMtAABBLUcNACAamiEaIAGaIQELIA0gESAPayILNgIAIAEgGqAgAWENACANIAMgC2oiAzYCACADQYCU69wDTwRAA0AgDUEANgIAIAggDUEEayINSwRAIAhBBGsiCEEANgIACyANIA0oAgBBAWoiAzYCACADQf+T69wDSw0ACwsgDiAIa0ECdUEJbCEHIAgoAgAiC0EKSQ0AQeQAIQMDQCAHQQFqIQcgAyALSw0BIANBCmwhAwwACwALIA1BBGoiAyAGIAMgBkkbIQYLA0AgBiILIAhNIgxFBEAgC0EEayIGKAIARQ0BCwsCQCAUQecARwRAIARBCHEhDwwBCyAHQX9zQX8gCkEBIAobIgYgB0ogB0F7SnEiAxsgBmohCkF/QX4gAxsgBWohBSAEQQhxIg8NAEF3IQYCQCAMDQAgC0EEaygCACIDRQ0AQQAhBiADQQpwDQBBACEMQeQAIQYDQCADIAZwRQRAIAxBAWohDCAGQQpsIQYMAQsLIAxBf3MhBgsgCyAOa0ECdUEJbCEDIAVBX3FBxgBGBEBBACEPIAogAyAGakEJayIDQQAgA0EAShsiAyADIApKGyEKDAELQQAhDyAKIAMgB2ogBmpBCWsiA0EAIANBAEobIgMgAyAKShshCgsgCiAPckEARyERIABBICACIAVBX3EiDEHGAEYEfyAHQQAgB0EAShsFIBAgByAHQR91IgNqIANzrSAQEEMiBmtBAUwEQANAIAZBAWsiBkEwOgAAIBAgBmtBAkgNAAsLIAZBAmsiFSAFOgAAIAZBAWtBLUErIAdBAEgbOgAAIBAgFWsLIAogEmogEWpqQQFqIg0gBBAlIAAgEyASECEgAEEwIAIgDSAEQYCABHMQJQJAAkACQCAMQcYARgRAIAlBEGpBCHIhAyAJQRBqQQlyIQcgDiAIIAggDksbIgUhCANAIAg1AgAgBxBDIQYCQCAFIAhHBEAgBiAJQRBqTQ0BA0AgBkEBayIGQTA6AAAgBiAJQRBqSw0ACwwBCyAGIAdHDQAgCUEwOgAYIAMhBgsgACAGIAcgBmsQISAIQQRqIgggDk0NAAtBACEGIBFFDQIgAEHeEkEBECEgCCALTw0BIApBAUgNAQNAIAg1AgAgBxBDIgYgCUEQaksEQANAIAZBAWsiBkEwOgAAIAYgCUEQaksNAAsLIAAgBiAKQQkgCkEJSBsQISAKQQlrIQYgCEEEaiIIIAtPDQMgCkEJSiEDIAYhCiADDQALDAILAkAgCkEASA0AIAsgCEEEaiAIIAtJGyEFIAlBEGpBCXIhCyAJQRBqQQhyIQMgCCEHA0AgCyAHNQIAIAsQQyIGRgRAIAlBMDoAGCADIQYLAkAgByAIRwRAIAYgCUEQak0NAQNAIAZBAWsiBkEwOgAAIAYgCUEQaksNAAsMAQsgACAGQQEQISAGQQFqIQZBACAKQQBMIA8bDQAgAEHeEkEBECELIAAgBiALIAZrIgYgCiAGIApIGxAhIAogBmshCiAHQQRqIgcgBU8NASAKQX9KDQALCyAAQTAgCkESakESQQAQJSAAIBUgECAVaxAhDAILIAohBgsgAEEwIAZBCWpBCUEAECULDAELIBNBCWogEyAFQSBxIgsbIQoCQCADQQtLDQBBDCADayIGRQ0ARAAAAAAAACBAIRoDQCAaRAAAAAAAADBAoiEaIAZBAWsiBg0ACyAKLQAAQS1GBEAgGiABmiAaoaCaIQEMAQsgASAaoCAaoSEBCyAQIAkoAiwiBiAGQR91IgZqIAZzrSAQEEMiBkYEQCAJQTA6AA8gCUEPaiEGCyASQQJyIQ4gCSgCLCEHIAZBAmsiDCAFQQ9qOgAAIAZBAWtBLUErIAdBAEgbOgAAIARBCHEhByAJQRBqIQgDQCAIIgUCfyABmUQAAAAAAADgQWMEQCABqgwBC0GAgICAeAsiBkGQiQFqLQAAIAtyOgAAIAEgBrehRAAAAAAAADBAoiEBAkAgBUEBaiIIIAlBEGprQQFHDQACQCABRAAAAAAAAAAAYg0AIANBAEoNACAHRQ0BCyAFQS46AAEgBUECaiEICyABRAAAAAAAAAAAYg0ACyAAQSAgAiAOAn8CQCADRQ0AIAggCWtBEmsgA04NACADIBBqIAxrQQJqDAELIBAgCUEQaiAMamsgCGoLIgNqIg0gBBAlIAAgCiAOECEgAEEwIAIgDSAEQYCABHMQJSAAIAlBEGogCCAJQRBqayIFECEgAEEwIAMgBSAQIAxrIgNqa0EAQQAQJSAAIAwgAxAhCyAAQSAgAiANIARBgMAAcxAlIAlBsARqJAAgAiANIAIgDUobCwYAQaSiAQsGAEGgogELBgBBmKIBCxgBAX8jAEEQayIBIAA2AgwgASgCDEEEagsYAQF/IwBBEGsiASAANgIMIAEoAgxBCGoLaQEBfyMAQRBrIgEkACABIAA2AgwgASgCDCgCFARAIAEoAgwoAhQQGgsgAUEANgIIIAEoAgwoAgQEQCABIAEoAgwoAgQ2AggLIAEoAgxBBGoQOCABKAIMEBUgASgCCCEAIAFBEGokACAACwgAQQFBOBB8C6kBAQN/AkAgAC0AACICRQ0AA0AgAS0AACIERQRAIAIhAwwCCwJAIAIgBEYNACACQSByIAIgAkHBAGtBGkkbIAEtAAAiAkEgciACIAJBwQBrQRpJG0YNACAALQAAIQMMAgsgAUEBaiEBIAAtAAEhAiAAQQFqIQAgAg0ACwsgA0H/AXEiAEEgciAAIABBwQBrQRpJGyABLQAAIgBBIHIgACAAQcEAa0EaSRtrC/YJAQF/IwBBsAFrIgUkACAFIAA2AqQBIAUgATYCoAEgBSACNgKcASAFIAM3A5ABIAUgBDYCjAEgBSAFKAKgATYCiAECQAJAAkACQAJAAkACQAJAAkACQAJAIAUoAowBDg8AAQIDBAUHCAkJCQkJCQYJCyAFKAKIAUIANwMgIAVCADcDqAEMCQsgBSAFKAKkASAFKAKcASAFKQOQARArIgM3A4ABIANCAFMEQCAFKAKIAUEIaiAFKAKkARAYIAVCfzcDqAEMCQsCQCAFKQOAAVAEQCAFKAKIASkDKCAFKAKIASkDIFEEQCAFKAKIAUEBNgIEIAUoAogBIAUoAogBKQMgNwMYIAUoAogBKAIABEAgBSgCpAEgBUHIAGoQOUEASARAIAUoAogBQQhqIAUoAqQBEBggBUJ/NwOoAQwNCwJAIAUpA0hCIINQDQAgBSgCdCAFKAKIASgCMEYNACAFKAKIAUEIakEHQQAQFCAFQn83A6gBDA0LAkAgBSkDSEIEg1ANACAFKQNgIAUoAogBKQMYUQ0AIAUoAogBQQhqQRVBABAUIAVCfzcDqAEMDQsLCwwBCwJAIAUoAogBKAIEDQAgBSgCiAEpAyAgBSgCiAEpAyhWDQAgBSAFKAKIASkDKCAFKAKIASkDIH03A0ADQCAFKQNAIAUpA4ABVARAIAUgBSkDgAEgBSkDQH1C/////w9WBH5C/////w8FIAUpA4ABIAUpA0B9CzcDOAJ/IAUoAogBKAIwIQAgBSkDOKchAUEAIAUoApwBIAUpA0CnaiICRQ0AGiAAIAIgAa1BrJkBKAIAEQQACyEAIAUoAogBIAA2AjAgBSgCiAEiACAFKQM4IAApAyh8NwMoIAUgBSkDOCAFKQNAfDcDQAwBCwsLCyAFKAKIASIAIAUpA4ABIAApAyB8NwMgIAUgBSkDgAE3A6gBDAgLIAVCADcDqAEMBwsgBSAFKAKcATYCNCAFKAKIASgCBARAIAUoAjQgBSgCiAEpAxg3AxggBSgCNCAFKAKIASgCMDYCLCAFKAI0IAUoAogBKQMYNwMgIAUoAjRBADsBMCAFKAI0QQA7ATIgBSgCNCIAIAApAwBC7AGENwMACyAFQgA3A6gBDAYLIAUgBSgCiAFBCGogBSgCnAEgBSkDkAEQQjcDqAEMBQsgBSgCiAEQFSAFQgA3A6gBDAQLIwBBEGsiACAFKAKkATYCDCAFIAAoAgwpAxg3AyggBSkDKEIAUwRAIAUoAogBQQhqIAUoAqQBEBggBUJ/NwOoAQwECyAFKQMoIQMgBUF/NgIYIAVBEDYCFCAFQQ82AhAgBUENNgIMIAVBDDYCCCAFQQo2AgQgBUEJNgIAIAVBCCAFEDRCf4UgA4M3A6gBDAMLIAUCfyAFKQOQAUIQVARAIAUoAogBQQhqQRJBABAUQQAMAQsgBSgCnAELNgIcIAUoAhxFBEAgBUJ/NwOoAQwDCwJAIAUoAqQBIAUoAhwpAwAgBSgCHCgCCBAoQQBOBEAgBSAFKAKkARBJIgM3AyAgA0IAWQ0BCyAFKAKIAUEIaiAFKAKkARAYIAVCfzcDqAEMAwsgBSgCiAEgBSkDIDcDICAFQgA3A6gBDAILIAUgBSgCiAEpAyA3A6gBDAELIAUoAogBQQhqQRxBABAUIAVCfzcDqAELIAUpA6gBIQMgBUGwAWokACADC5wMAQF/IwBBMGsiBSQAIAUgADYCJCAFIAE2AiAgBSACNgIcIAUgAzcDECAFIAQ2AgwgBSAFKAIgNgIIAkACQAJAAkACQAJAAkACQAJAAkAgBSgCDA4RAAECAwUGCAgICAgICAgHCAQICyAFKAIIQgA3AxggBSgCCEEAOgAMIAUoAghBADoADSAFKAIIQQA6AA8gBSgCCEJ/NwMgIAUoAggoAqxAIAUoAggoAqhAKAIMEQEAQQFxRQRAIAVCfzcDKAwJCyAFQgA3AygMCAsgBSgCJCEBIAUoAgghAiAFKAIcIQQgBSkDECEDIwBBQGoiACQAIAAgATYCNCAAIAI2AjAgACAENgIsIAAgAzcDIAJAAn8jAEEQayIBIAAoAjA2AgwgASgCDCgCAAsEQCAAQn83AzgMAQsCQCAAKQMgUEUEQCAAKAIwLQANQQFxRQ0BCyAAQgA3AzgMAQsgAEIANwMIIABBADoAGwNAIAAtABtBAXEEf0EABSAAKQMIIAApAyBUC0EBcQRAIAAgACkDICAAKQMIfTcDACAAIAAoAjAoAqxAIAAoAiwgACkDCKdqIAAgACgCMCgCqEAoAhwRAAA2AhwgACgCHEECRwRAIAAgACkDACAAKQMIfDcDCAsCQAJAAkACQCAAKAIcQQFrDgMAAgEDCyAAKAIwQQE6AA0CQCAAKAIwLQAMQQFxDQALIAAoAjApAyBCAFMEQCAAKAIwQRRBABAUIABBAToAGwwDCwJAIAAoAjAtAA5BAXFFDQAgACgCMCkDICAAKQMIVg0AIAAoAjBBAToADyAAKAIwIAAoAjApAyA3AxggACgCLCAAKAIwQShqIAAoAjApAxinEBcaIAAgACgCMCkDGDcDOAwGCyAAQQE6ABsMAgsgACgCMC0ADEEBcQRAIABBAToAGwwCCyAAIAAoAjQgACgCMEEoakKAwAAQKyIDNwMQIANCAFMEQCAAKAIwIAAoAjQQGCAAQQE6ABsMAgsCQCAAKQMQUARAIAAoAjBBAToADCAAKAIwKAKsQCAAKAIwKAKoQCgCGBEDACAAKAIwKQMgQgBTBEAgACgCMEIANwMgCwwBCwJAIAAoAjApAyBCAFkEQCAAKAIwQQA6AA4MAQsgACgCMCAAKQMQNwMgCyAAKAIwKAKsQCAAKAIwQShqIAApAxAgACgCMCgCqEAoAhQRBAAaCwwBCwJ/IwBBEGsiASAAKAIwNgIMIAEoAgwoAgBFCwRAIAAoAjBBFEEAEBQLIABBAToAGwsMAQsLIAApAwhCAFIEQCAAKAIwQQA6AA4gACgCMCIBIAApAwggASkDGHw3AxggACAAKQMINwM4DAELIABBf0EAAn8jAEEQayIBIAAoAjA2AgwgASgCDCgCAAsbrDcDOAsgACkDOCEDIABBQGskACAFIAM3AygMBwsgBSgCCCgCrEAgBSgCCCgCqEAoAhARAQBBAXFFBEAgBUJ/NwMoDAcLIAVCADcDKAwGCyAFIAUoAhw2AgQCQCAFKAIILQAQQQFxBEAgBSgCCC0ADUEBcQRAIAUoAgQgBSgCCC0AD0EBcQR/QQAFAn8CQCAFKAIIKAIUQX9HBEAgBSgCCCgCFEF+Rw0BC0EIDAELIAUoAggoAhQLQf//A3ELOwEwIAUoAgQgBSgCCCkDGDcDICAFKAIEIgAgACkDAELIAIQ3AwAMAgsgBSgCBCIAIAApAwBCt////w+DNwMADAELIAUoAgRBADsBMCAFKAIEIgAgACkDAELAAIQ3AwACQCAFKAIILQANQQFxBEAgBSgCBCAFKAIIKQMYNwMYIAUoAgQiACAAKQMAQgSENwMADAELIAUoAgQiACAAKQMAQvv///8PgzcDAAsLIAVCADcDKAwFCyAFIAUoAggtAA9BAXEEf0EABSAFKAIIKAKsQCAFKAIIKAKoQCgCCBEBAAusNwMoDAQLIAUgBSgCCCAFKAIcIAUpAxAQQjcDKAwDCyAFKAIIELEBIAVCADcDKAwCCyAFQX82AgAgBUEQIAUQNEI/hDcDKAwBCyAFKAIIQRRBABAUIAVCfzcDKAsgBSkDKCEDIAVBMGokACADCzwBAX8jAEEQayIDJAAgAyAAOwEOIAMgATYCCCADIAI2AgRBACADKAIIIAMoAgQQtQEhACADQRBqJAAgAAuBiQECIn8BfiMAQSBrIg8kACAPIAA2AhggDyABNgIUIA8gAjYCECAPIA8oAhg2AgwgDygCDCAPKAIQKQMAQv////8PVgR+Qv////8PBSAPKAIQKQMACz4CICAPKAIMIA8oAhQ2AhwCQCAPKAIMLQAEQQFxBEAgDwJ/QQRBACAPKAIMLQAMQQFxGyEKQQAhAkF+IQECQAJAAkAgDygCDEEQaiILRQ0AIAsoAiBFDQAgCygCJEUNACALKAIcIgNFDQAgAygCACALRw0AAkACQCADKAIgIgRBOWsOOQECAgICAgICAgICAgECAgIBAgICAgICAgICAgICAgICAgIBAgICAgICAgICAgIBAgICAgICAgICAQALIARBmgVGDQAgBEEqRw0BCyAKQQVLDQACQAJAIAsoAgxFDQAgCygCBCIABEAgCygCAEUNAQsgBEGaBUcNASAKQQRGDQELIAtB8PEAKAIANgIYQX4MBAsgCygCEEUNASADKAIkIQEgAyAKNgIkAkAgAygCEARAIAMQJwJAIAsoAhAiBCADKAIQIgIgAiAESxsiAEUNACALKAIMIAMoAgggABAXGiALIAsoAgwgAGo2AgwgAyADKAIIIABqNgIIIAsgCygCFCAAajYCFCALIAsoAhAgAGsiBDYCECADIAMoAhAgAGsiAjYCECACDQAgAyADKAIENgIIQQAhAgsgBARAIAMoAiAhBAwCCwwECyAADQAgCkEBdEF3QQAgCkEEShtqIAFBAXRBd0EAIAFBBEobakoNACAKQQRGDQAMAgsCQAJAAkACQAJAIARBKkcEQCAEQZoFRw0BIAsoAgRFDQMMBwsgAygCFEUEQCADQfEANgIgDAILIAMoAjRBDHRBgPABayEBAkAgAygCfEECTg0AIAMoAngiAEEBTA0AIABBBUwEQCABQcAAciEBDAELQYABQcABIABBBkYbIAFyIQELIAMgAkEBajYCECADKAIEIAJqIAFBIHIgASADKAJkGyIBQQh2OgAAIAMgAygCECIAQQFqNgIQIAAgAygCBGogAUEfcCABckEfczoAACADKAJkBEAgAyALKAIwEMwBCyALQQE2AjAgA0HxADYCICALEB4gAygCEA0HIAMoAiAhBAsCQAJAAkACQCAEQTlGBH8gAygCAEEANgIwIAMgAygCECIAQQFqNgIQIAAgAygCBGpBHzoAACADIAMoAhAiAEEBajYCECAAIAMoAgRqQYsBOgAAIAMgAygCECIAQQFqNgIQIAAgAygCBGpBCDoAAAJAIAMoAhwiAEUEQCADQQAQXCADIAMoAhAiAEEBajYCECAAIAMoAgRqQQA6AABBAiEBIAMoAngiAEEJRwRAQQQgAEECSEECdCADKAJ8QQFKGyEBCyADIAMoAhAiAEEBajYCECAAIAMoAgRqIAE6AAAgAyADKAIQIgBBAWo2AhAgACADKAIEakEDOgAAIANB8QA2AiAgCxAeIAMoAhBFDQEMDQsgACgCJCEIIAAoAhwhBiAAKAIQIQwgACgCLCEEIAAoAgAhAiADIAMoAhAiAEEBajYCEEECIQEgACADKAIEaiAEQQBHQQF0IAJBAEdyIAxBAEdBAnRyIAZBAEdBA3RyIAhBAEdBBHRyOgAAIAMgAygCHCgCBBBcIAMoAngiAEEJRwRAQQQgAEECSEECdCADKAJ8QQFKGyEBCyADIAMoAhAiAEEBajYCECAAIAMoAgRqIAE6AAAgAygCHCgCDCEBIAMgAygCECIAQQFqNgIQIAAgAygCBGogAToAACADKAIcIgAoAhAEfyAAKAIUIQEgAyADKAIQIgBBAWo2AhAgACADKAIEaiABOgAAIAMgAygCECIAQQFqNgIQIAAgAygCBGogAUEIdjoAACADKAIcBSAACygCLARAIAsCfyALKAIwIQIgAygCECEBQQAgAygCBCIARQ0AGiACIAAgAa1BrJkBKAIAEQQACzYCMAsgA0HFADYCICADQQA2AhgMAgsgAygCIAUgBAtBxQBrDiMABAQEAQQEBAQEBAQEBAQEBAQEBAQEAgQEBAQEBAQEBAQEAwQLIAMoAhwiACgCECIEBEAgAygCDCICIAMoAhAiASAALwEUIAMoAhgiB2siBmpJBEADQCADKAIEIAFqIAQgB2ogAiABayIMEBcaIAMgAygCDCIENgIQAkAgAygCHCgCLEUNACABIARPDQAgCwJ/IAsoAjAhAkEAIAMoAgQgAWoiAEUNABogAiAAIAQgAWutQayZASgCABEEAAs2AjALIAMgAygCGCAMajYCGCALKAIcIgIQJwJAIAsoAhAiASACKAIQIgAgACABSxsiAEUNACALKAIMIAIoAgggABAXGiALIAsoAgwgAGo2AgwgAiACKAIIIABqNgIIIAsgCygCFCAAajYCFCALIAsoAhAgAGs2AhAgAiACKAIQIABrIgA2AhAgAA0AIAIgAigCBDYCCAsgAygCEA0MIAMoAhghByADKAIcKAIQIQRBACEBIAYgDGsiBiADKAIMIgJLDQALCyADKAIEIAFqIAQgB2ogBhAXGiADIAMoAhAgBmoiBDYCEAJAIAMoAhwoAixFDQAgASAETw0AIAsCfyALKAIwIQJBACADKAIEIAFqIgBFDQAaIAIgACAEIAFrrUGsmQEoAgARBAALNgIwCyADQQA2AhgLIANByQA2AiALIAMoAhwoAhwEQCADKAIQIgEhBgNAAkAgASADKAIMRw0AAkAgAygCHCgCLEUNACABIAZNDQAgCwJ/IAsoAjAhAkEAIAMoAgQgBmoiAEUNABogAiAAIAEgBmutQayZASgCABEEAAs2AjALIAsoAhwiAhAnAkAgCygCECIBIAIoAhAiACAAIAFLGyIARQ0AIAsoAgwgAigCCCAAEBcaIAsgCygCDCAAajYCDCACIAIoAgggAGo2AgggCyALKAIUIABqNgIUIAsgCygCECAAazYCECACIAIoAhAgAGsiADYCECAADQAgAiACKAIENgIIC0EAIQFBACEGIAMoAhBFDQAMCwsgAygCHCgCHCECIAMgAygCGCIAQQFqNgIYIAAgAmotAAAhACADIAFBAWo2AhAgAygCBCABaiAAOgAAIAAEQCADKAIQIQEMAQsLAkAgAygCHCgCLEUNACADKAIQIgIgBk0NACALAn8gCygCMCEBQQAgAygCBCAGaiIARQ0AGiABIAAgAiAGa61BrJkBKAIAEQQACzYCMAsgA0EANgIYCyADQdsANgIgCwJAIAMoAhwoAiRFDQAgAygCECIBIQYDQAJAIAEgAygCDEcNAAJAIAMoAhwoAixFDQAgASAGTQ0AIAsCfyALKAIwIQJBACADKAIEIAZqIgBFDQAaIAIgACABIAZrrUGsmQEoAgARBAALNgIwCyALKAIcIgIQJwJAIAsoAhAiASACKAIQIgAgACABSxsiAEUNACALKAIMIAIoAgggABAXGiALIAsoAgwgAGo2AgwgAiACKAIIIABqNgIIIAsgCygCFCAAajYCFCALIAsoAhAgAGs2AhAgAiACKAIQIABrIgA2AhAgAA0AIAIgAigCBDYCCAtBACEBQQAhBiADKAIQRQ0ADAoLIAMoAhwoAiQhAiADIAMoAhgiAEEBajYCGCAAIAJqLQAAIQAgAyABQQFqNgIQIAMoAgQgAWogADoAACAABEAgAygCECEBDAELCyADKAIcKAIsRQ0AIAMoAhAiAiAGTQ0AIAsCfyALKAIwIQFBACADKAIEIAZqIgBFDQAaIAEgACACIAZrrUGsmQEoAgARBAALNgIwCyADQecANgIgCwJAIAMoAhwoAiwEQCADKAIMIAMoAhAiAUECakkEQCALEB4gAygCEA0CQQAhAQsgCygCMCECIAMgAUEBajYCECADKAIEIAFqIAI6AAAgAyADKAIQIgBBAWo2AhAgACADKAIEaiACQQh2OgAAIAMoAgBBADYCMAsgA0HxADYCICALEB4gAygCEEUNAQwHCwwGCyALKAIEDQELIAMoAjwNACAKRQ0BIAMoAiBBmgVGDQELAn8gAygCeCIARQRAIAMgChDLAQwBCwJAAkACQCADKAJ8QQJrDgIAAQILAn8CQANAAkAgAygCPA0AIAMQRSADKAI8DQAgCg0CQQAMAwsgAygCSCADKAJkai0AACEBIAMgAygClC0iAEEBajYClC0gACADKAKQLWpBADoAACADIAMoApQtIgBBAWo2ApQtIAAgAygCkC1qQQA6AAAgAyADKAKULSIAQQFqNgKULSAAIAMoApAtaiABOgAAIAMgAUECdGoiACAALwGIAUEBajsBiAEgAyADKAI8QQFrNgI8IAMgAygCZEEBaiIANgJkIAMoApQtIAMoApgtRw0AIAMgAygCVCIBQQBOBH8gAygCSCABagVBAAsgACABa0EAECYgAyADKAJkNgJUIAMoAgAiBCgCHCICECcCQCAEKAIQIgEgAigCECIAIAAgAUsbIgBFDQAgBCgCDCACKAIIIAAQFxogBCAEKAIMIABqNgIMIAIgAigCCCAAajYCCCAEIAQoAhQgAGo2AhQgBCAEKAIQIABrNgIQIAIgAigCECAAayIANgIQIAANACACIAIoAgQ2AggLIAMoAgAoAhANAAtBAAwBCyADQQA2AqgtIApBBEYEQCADIAMoAlQiAEEATgR/IAMoAkggAGoFQQALIAMoAmQgAGtBARAmIAMgAygCZDYCVCADKAIAIgQoAhwiAhAnAkAgBCgCECIBIAIoAhAiACAAIAFLGyIARQ0AIAQoAgwgAigCCCAAEBcaIAQgBCgCDCAAajYCDCACIAIoAgggAGo2AgggBCAEKAIUIABqNgIUIAQgBCgCECAAazYCECACIAIoAhAgAGsiADYCECAADQAgAiACKAIENgIIC0EDQQIgAygCACgCEBsMAQsCQCADKAKULUUNACADIAMoAlQiAEEATgR/IAMoAkggAGoFQQALIAMoAmQgAGtBABAmIAMgAygCZDYCVCADKAIAIgQoAhwiAhAnAkAgBCgCECIBIAIoAhAiACAAIAFLGyIARQ0AIAQoAgwgAigCCCAAEBcaIAQgBCgCDCAAajYCDCACIAIoAgggAGo2AgggBCAEKAIUIABqNgIUIAQgBCgCECAAazYCECACIAIoAhAgAGsiADYCECAADQAgAiACKAIENgIICyADKAIAKAIQDQBBAAwBC0EBCwwCCwJ/AkADQAJAAkACQAJAIAMoAjwiBkGCAksNACADEEUCQCADKAI8IgZBggJLDQAgCg0AQQAMBwsgBkUNBSAGQQJLDQAgAygCZCEIDAELIAMoAmQiCEUEQEEAIQgMAQsgAygCSCAIaiIMQQFrIgAtAAAiCSAMLQAARw0AIAkgAC0AAkcNACAJIAAtAANHDQAgDEGCAmohBEF/IQECQAJAAkACQAJAAkADQCABIAxqIgItAAQgCUYEQCAJIAItAAVHDQIgCSACLQAGRw0DIAkgAi0AB0cNBCAJIAwgAUEIaiIAaiIHLQAARw0HIAkgAi0ACUcNBSAJIAItAApHDQYgCSACQQtqIgctAABHDQcgAUH3AUghAiAAIQEgAg0BDAcLCyACQQRqIQcMBQsgAkEFaiEHDAQLIAJBBmohBwwDCyACQQdqIQcMAgsgAkEJaiEHDAELIAJBCmohBwsgBiAHIARrQYICaiIAIAAgBksbIgFBAksNAQsgAygCSCAIai0AACEBIAMgAygClC0iAEEBajYClC0gACADKAKQLWpBADoAACADIAMoApQtIgBBAWo2ApQtIAAgAygCkC1qQQA6AAAgAyADKAKULSIAQQFqNgKULSAAIAMoApAtaiABOgAAIAMgAUECdGoiACAALwGIAUEBajsBiAEgAyADKAI8QQFrNgI8IAMgAygCZEEBaiIINgJkDAELIAMgAygClC0iAEEBajYClC0gACADKAKQLWpBAToAACADIAMoApQtIgBBAWo2ApQtIAAgAygCkC1qQQA6AAAgAyADKAKULSIAQQFqNgKULSAAIAMoApAtaiABQQNrOgAAIAMgAygCpC1BAWo2AqQtIAFBreoAai0AAEECdCADakGMCWoiACAALwEAQQFqOwEAIANBsOYALQAAQQJ0akH8EmoiACAALwEAQQFqOwEAIAMgAygCPCABazYCPCADIAMoAmQgAWoiCDYCZAsgAygClC0gAygCmC1HDQAgAyADKAJUIgBBAE4EfyADKAJIIABqBUEACyAIIABrQQAQJiADIAMoAmQ2AlQgAygCACIEKAIcIgIQJwJAIAQoAhAiASACKAIQIgAgACABSxsiAEUNACAEKAIMIAIoAgggABAXGiAEIAQoAgwgAGo2AgwgAiACKAIIIABqNgIIIAQgBCgCFCAAajYCFCAEIAQoAhAgAGs2AhAgAiACKAIQIABrIgA2AhAgAA0AIAIgAigCBDYCCAsgAygCACgCEA0AC0EADAELIANBADYCqC0gCkEERgRAIAMgAygCVCIAQQBOBH8gAygCSCAAagVBAAsgAygCZCAAa0EBECYgAyADKAJkNgJUIAMoAgAiBCgCHCICECcCQCAEKAIQIgEgAigCECIAIAAgAUsbIgBFDQAgBCgCDCACKAIIIAAQFxogBCAEKAIMIABqNgIMIAIgAigCCCAAajYCCCAEIAQoAhQgAGo2AhQgBCAEKAIQIABrNgIQIAIgAigCECAAayIANgIQIAANACACIAIoAgQ2AggLQQNBAiADKAIAKAIQGwwBCwJAIAMoApQtRQ0AIAMgAygCVCIAQQBOBH8gAygCSCAAagVBAAsgAygCZCAAa0EAECYgAyADKAJkNgJUIAMoAgAiBCgCHCICECcCQCAEKAIQIgEgAigCECIAIAAgAUsbIgBFDQAgBCgCDCACKAIIIAAQFxogBCAEKAIMIABqNgIMIAIgAigCCCAAajYCCCAEIAQoAhQgAGo2AhQgBCAEKAIQIABrNgIQIAIgAigCECAAayIANgIQIAANACACIAIoAgQ2AggLIAMoAgAoAhANAEEADAELQQELDAELIAMgCiAAQQxsQbjbAGooAgARAgALIgBBfnFBAkYEQCADQZoFNgIgCyAAQX1xRQRAQQAhASALKAIQDQIMBAsgAEEBRw0AAkACQAJAIApBAWsOBQABAQECAQsgAykDuC0hJQJ/An4gAygCwC0iAUED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AgQgAygCBEEANgIUIAMoAgRBADYCECADKAIEQQA2AiAgAygCBEEANgIcAkAgAygCBC0ABEEBcQRAIAMCfyADKAIEQRBqIQAgAygCBCgCCCEBQXohAgJAQY8NLQAAQTFHDQBBfiECIABFDQAgAEEANgIYIAAoAiAiBEUEQCAAQQA2AiggAEECNgIgQQIhBAsgACgCJEUEQCAAQQM2AiQLQQYgASABQX9GGyIFQQBIDQAgBUEJSg0AQXwhAiAAKAIoQQFB8C0gBBEAACIBRQ0AIAAgATYCHCABIAA2AgAgAUENQQ8gBUEBRhsiAjYCNCABQoCAgICgBTcCHCABQQA2AhQgAUEBIAJ0IgI2AjAgASACQQFrNgI4IAEgACgCKCACQQIgACgCIBEAADYCSCABIAAoAiggASgCMEECIAAoAiARAAAiAjYCTCACQQAgASgCMEEBdBAvIAAoAihBgIAEQQIgACgCIBEAACECIAFBgIACNgKMLSABQQA2AkAgASACNgJQIAEgACgCKEGAgAJBBCAAKAIgEQAAIgI2AgQgASABKAKMLSIEQQJ0NgIMAkACQCABKAJIRQ0AIAEoAkxFDQAgASgCUEUNACACDQELIAFBmgU2AiAgAEH48QAoAgA2AhggABDNARpBfAwCCyABQQA2AnwgASAFNgJ4IAFCADcDKCABIAIgBGo2ApAtIAEgBEEDbEEDazYCmC0Cf0F+IQICQCAARQ0AIAAoAiBFDQAgACgCJEUNACAAKAIcIgFFDQAgASgCACAARw0AAkACQCABKAIgIgVBOWsOOQECAgICAgICAgICAgECAgIBAgICAgICAgICAgICAgICAgIBAgICAgICAgICAgIBAgICAgICAgICAQALIAVBmgVGDQAgBUEqRw0BCyAAQQI2AiwgAEEANgIIIABCADcCFCABQQA2AhAgASABKAIENgIIIAEoAhQiAkF/TARAIAFBACACayICNgIUCyABQTlBKiACQQJGGzYCIAJAIAJBAkYEQCABKAIAQQA2AjAMAQsgAEEBNgIwCyABQX42AiQgAUEANgLALSABQgA3A7gtIAFBrBZqQdDuADYCACABIAFB8BRqNgKkFiABQaAWakG87gA2AgAgASABQfwSajYCmBYgAUGUFmpBqO4ANgIAIAEgAUGIAWo2AowWIAEQwQFBACECCyACRQsE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cgBJbnRlcm5hbCBlcnJvcgBTZWVrIGVycm9yAFdyaXRlIGVycm9yAGZpbGUgZXJyb3IAUmVhZCBlcnJvcgBabGliIGVycm9yAGRhdGEgZXJyb3IAQ1JDIGVycm9yAGluY29tcGF0aWJsZSB2ZXJzaW9uAG5hbgAvZGV2L3VyYW5kb20AaW52YWxpZCBjb2RlIC0tIG1pc3NpbmcgZW5kLW9mLWJsb2NrAGluY29ycmVjdCBoZWFkZXIgY2hlY2sAaW5jb3JyZWN0IGxlbmd0aCBjaGVjawBpbmNvcnJlY3QgZGF0YSBjaGVjawBpbnZhbGlkIGRpc3RhbmNlIHRvbyBmYXIgYmFjawBoZWFkZXIgY3JjIG1pc21hdGNoADEuMi4xMS56bGliLW5nAGluZgBpbnZhbGlkIHdpbmRvdyBzaXplAFJlYWQtb25seSBhcmNoaXZlAE5vdCBhIHppcCBhcmNoaXZlAFJlc291cmNlIHN0aWxsIGluIHVzZQBNYWxsb2MgZmFpbHVyZQBpbnZhbGlkIGJsb2NrIHR5cGUARmFpbHVyZSB0byBjcmVhdGUgdGVtcG9yYXJ5IGZpbGUAQ2FuJ3Qgb3BlbiBmaWxlAE5vIHN1Y2ggZmlsZQBQcmVtYXR1cmUgZW5kIG9mIGZpbGUAQ2FuJ3QgcmVtb3ZlIGZpbGUAaW52YWxpZCBsaXRlcmFsL2xlbmd0aCBjb2RlAGludmFsaWQgZGlzdGFuY2UgY29kZQB1bmtub3duIGNvbXByZXNzaW9uIG1ldGhvZABzdHJlYW0gZW5kAENvbXByZXNzZWQgZGF0YSBpbnZhbGlkAE11bHRpLWRpc2sgemlwIGFyY2hpdmVzIG5vdCBzdXBwb3J0ZWQAT3BlcmF0aW9uIG5vdCBzdXBwb3J0ZWQARW5jcnlwdGlvbiBtZXRob2Qgbm90IHN1cHBvcnRlZABDb21wcmVzc2lvbiBtZXRob2Qgbm90IHN1cHBvcnRlZABFbnRyeSBoYXMgYmVlbiBkZWxldGVkAENvbnRhaW5pbmcgemlwIGFyY2hpdmUgd2FzIGNsb3NlZABDbG9zaW5nIHppcCBhcmNoaXZlIGZhaWxlZABSZW5hbWluZyB0ZW1wb3JhcnkgZmlsZSBmYWlsZWQARW50cnkgaGFzIGJlZW4gY2hhbmdlZABObyBw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SXsbsS4eQ9I+SPtuWS3p2/bDUWeRpsywqR90DM56ZrlhlN4FBvEAQdDZAAtNAQAAAAEAAAABAAAAAQAAAAIAAAACAAAAAgAAAAIAAAADAAAAAwAAAAMAAAADAAAABAAAAAQAAAAEAAAABAAAAAUAAAAFAAAABQAAAAUAQcDaAAtlAQAAAAEAAAACAAAAAgAAAAMAAAADAAAABAAAAAQAAAAFAAAABQAAAAYAAAAGAAAABwAAAAcAAAAIAAAACAAAAAkAAAAJAAAACgAAAAoAAAALAAAACwAAAAwAAAAMAAAADQAAAA0AQbjbAAttBAAAAAQABAAIAAQABQAAAAQABAAIAAQABgAAAAQABgAgACAABgAAAAQABAAQABAABwAAAAgAEAAgACAABwAAAAgAEACAAIAABwAAAAgAIACAAAABCAAAACAAgAACAQAECAAAACAAAgECAQAQCABBsNwAC/cJDAAIAIwACABMAAgAzAAIACwACACsAAgAbAAIAOwACAAcAAgAnAAIAFwACADcAAgAPAAIALwACAB8AAgA/AAIAAIACACCAAgAQgAIAMIACAAiAAgAogAIAGIACADiAAgAEgAIAJIACABSAAgA0gAIADIACACyAAgAcgAIAPIACAAKAAgAigAIAEoACADKAAgAKgAIAKoACABqAAgA6gAIABoACACaAAgAWgAIANoACAA6AAgAugAIAHoACAD6AAgABgAIAIYACABGAAgAxgAIACYACACmAAgAZgAIAOYACAAWAAgAlgAIAFYACADWAAgANgAIALYACAB2AAgA9gAIAA4ACACOAAgATgAIAM4ACAAuAAgArgAIAG4ACADuAAgAHgAIAJ4ACABeAAgA3gAIAD4ACAC+AAgAfgAIAP4ACAABAAgAgQAIAEEACADBAAgAIQAIAKEACABhAAgA4QAIABEACACRAAgAUQAIANEACAAxAAgAsQAIAHEACADxAAgACQAIAIkACABJAAgAyQAIACkACACpAAgAaQAIAOkACAAZAAgAmQAIAFkACADZAAgAOQAIALkACAB5AAgA+QAIAAUACACFAAgARQAIAMUACAAlAAgApQAIAGUACADlAAgAFQAIAJUACABVAAgA1QAIADUACAC1AAgAdQAIAPUACAANAAgAjQAIAE0ACADNAAgALQAIAK0ACABtAAgA7QAIAB0A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AAEAAAABAAAAAQAAAAIAAAACAAAAAgAAAAIAAAADAAAAAwAAAAMAAAADAAAABAAAAAQAAAAEAAAABAAAAAUAAAAFAAAABQAAAAUAQYDwAAtlAQAAAAEAAAACAAAAAgAAAAMAAAADAAAABAAAAAQAAAAFAAAABQAAAAYAAAAGAAAABwAAAAcAAAAIAAAACAAAAAkAAAAJAAAACgAAAAoAAAALAAAACwAAAAwAAAAMAAAADQAAAA0AQbDxAAsjAgAAAAMAAAAHAAAAAAAAABAREgAIBwkGCgULBAwDDQIOAQ8AQeDxAAsmFAQAAMUHAACCCQAAmQUAAFsFAAC6BQAAAAQAAEUFAADPBQAAggkAQZDyAAulEwMABAAFAAYABwAIAAkACgALAA0ADwARABMAFwAbAB8AIwArADMAOwBDAFMAYwBzAIMAowDDAOMAAgEAAAAAAAAQABAAEAAQABAAEAAQABAAEQARABEAEQASABIAEgASABMAEwATABMAFAAUABQAFAAVABUAFQAVABAATQDKAAAAAQACAAMABAAFAAcACQANABEAGQAhADEAQQBhAIEAwQABAYEBAQIBAwEEAQYBCAEMARABGAEgATABQAFgAAAAABAAEAAQABAAEQARABIAEgATABMAFAAUABUAFQAWABYAFwAXABgAGAAZABkAGgAaABsAGwAcABwAHQAdAEAAQABgBwAAAAhQAAAIEAAUCHMAEgcfAAAIcAAACDAAAAnAABAHCgAACGAAAAggAAAJoAAACAAAAAiAAAAIQAAACeAAEAcGAAAIWAAACBgAAAmQABMHOwAACHgAAAg4AAAJ0AARBxEAAAhoAAAIKAAACbAAAAgIAAAIiAAACEgAAAnwABAHBAAACFQAAAgUABUI4wATBysAAAh0AAAINAAACcgAEQcNAAAIZAAACCQAAAmoAAAIBAAACIQAAAhEAAAJ6AAQBwgAAAhcAAAIHAAACZgAFAdTAAAIfAAACDwAAAnYABIHFwAACGwAAAgsAAAJuAAACAwAAAiMAAAITAAACfgAEAcDAAAIUgAACBIAFQijABMHIwAACHIAAAgyAAAJxAARBwsAAAhiAAAIIgAACaQAAAgCAAAIggAACEIAAAnkABAHBwAACFoAAAgaAAAJlAAUB0MAAAh6AAAIOgAACdQAEgcTAAAIagAACCoAAAm0AAAICgAACIoAAAhKAAAJ9AAQBwUAAAhWAAAIFgBACAAAEwczAAAIdgAACDYAAAnMABEHDwAACGYAAAgmAAAJrAAACAYAAAiGAAAIRgAACewAEAcJAAAIXgAACB4AAAmcABQHYwAACH4AAAg+AAAJ3AASBxsAAAhuAAAILgAACbwAAAgOAAAIjgAACE4AAAn8AGAHAAAACFEAAAgRABUIgwASBx8AAAhxAAAIMQAACcIAEAcKAAAIYQAACCEAAAmiAAAIAQAACIEAAAhBAAAJ4gAQBwYAAAhZAAAIGQAACZIAEwc7AAAIeQAACDkAAAnSABEHEQAACGkAAAgpAAAJsgAACAkAAAiJAAAISQAACfIAEAcEAAAIVQAACBUAEAgCARMHKwAACHUAAAg1AAAJygARBw0AAAhlAAAIJQAACaoAAAgFAAAIhQAACEUAAAnqABAHCAAACF0AAAgdAAAJmgAUB1MAAAh9AAAIPQAACdoAEgcXAAAIbQAACC0AAAm6AAAIDQAACI0AAAhNAAAJ+gAQBwMAAAhTAAAIEwAVCMMAEwcjAAAIcwAACDMAAAnGABEHCwAACGMAAAgjAAAJpgAACAMAAAiDAAAIQwAACeYAEAcHAAAIWwAACBsAAAmWABQHQwAACHsAAAg7AAAJ1gASBxMAAAhrAAAIKwAACbYAAAgLAAAIiwAACEsAAAn2ABAHBQAACFcAAAgXAEAIAAATBzMAAAh3AAAINwAACc4AEQcPAAAIZwAACCcAAAmuAAAIBwAACIcAAAhHAAAJ7gAQBwkAAAhfAAAIHwAACZ4AFAdjAAAIfwAACD8AAAneABIHGwAACG8AAAgvAAAJvgAACA8AAAiPAAAITwAACf4AYAcAAAAIUAAACBAAFAhzABIHHwAACHAAAAgwAAAJwQAQBwoAAAhgAAAIIAAACaEAAAgAAAAIgAAACEAAAAnhABAHBgAACFgAAAgYAAAJkQATBzsAAAh4AAAIOAAACdEAEQcRAAAIaAAACCgAAAmxAAAICAAACIgAAAhIAAAJ8QAQBwQAAAhUAAAIFAAVCOMAEwcrAAAIdAAACDQAAAnJABEHDQAACGQAAAgkAAAJqQAACAQAAAiEAAAIRAAACekAEAcIAAAIXAAACBwAAAmZABQHUwAACHwAAAg8AAAJ2QASBxcAAAhsAAAILAAACbkAAAgMAAAIjAAACEwAAAn5ABAHAwAACFIAAAgSABUIowATByMAAAhyAAAIMgAACcUAEQcLAAAIYgAACCIAAAmlAAAIAgAACIIAAAhCAAAJ5QAQBwcAAAhaAAAIGgAACZUAFAdDAAAIegAACDoAAAnVABIHEwAACGoAAAgqAAAJtQAACAoAAAiKAAAISgAACfUAEAcFAAAIVgAACBYAQAgAABMHMwAACHYAAAg2AAAJzQARBw8AAAhmAAAIJgAACa0AAAgGAAAIhgAACEYAAAntABAHCQAACF4AAAgeAAAJnQAUB2MAAAh+AAAIPgAACd0AEgcbAAAIbgAACC4AAAm9AAAIDgAACI4AAAhOAAAJ/QBgBwAAAAhRAAAIEQAVCIMAEgcfAAAIcQAACDEAAAnDABAHCgAACGEAAAghAAAJowAACAEAAAiBAAAIQQAACeMAEAcGAAAIWQAACBkAAAmTABMHOwAACHkAAAg5AAAJ0wARBxEAAAhpAAAIKQAACbMAAAgJAAAIiQAACEkAAAnzABAHBAAACFUAAAgVABAIAgETBysAAAh1AAAINQAACcsAEQcNAAAIZQAACCUAAAmrAAAIBQAACIUAAAhFAAAJ6wAQBwgAAAhdAAAIHQAACZsAFAdTAAAIfQAACD0AAAnbABIHFwAACG0AAAgtAAAJuwAACA0AAAiNAAAITQAACfsAEAcDAAAIUwAACBMAFQjDABMHIwAACHMAAAgzAAAJxwARBwsAAAhjAAAIIwAACacAAAgDAAAIgwAACEMAAAnnABAHBwAACFsAAAgbAAAJlwAUB0MAAAh7AAAIOwAACdcAEgcTAAAIawAACCsAAAm3AAAICwAACIsAAAhLAAAJ9wAQBwUAAAhXAAAIFwBACAAAEwczAAAIdwAACDcAAAnPABEHDwAACGcAAAgnAAAJrwAACAcAAAiHAAAIRwAACe8AEAcJAAAIXwAACB8AAAmfABQHYwAACH8AAAg/AAAJ3wASBxsAAAhvAAAILwAACb8AAAgPAAAIjwAACE8AAAn/ABAFAQAXBQEBEwURABsFARARBQUAGQUBBBUFQQAdBQFAEAUDABgFAQIUBSEAHAUBIBIFCQAaBQEIFgWBAEAFAAAQBQIAFwWBARMFGQAbBQEYEQUHABkFAQYVBWEAHQUBYBAFBAAYBQEDFAUxABwFATASBQ0AGgUBDBYFwQBABQAAEAARABIAAAAIAAcACQAGAAoABQALAAQADAADAA0AAgAOAAEADwBBwIUBC0ERAAoAERERAAAAAAUAAAAAAAAJAAAAAAsAAAAAAAAAABEADwoREREDCgcAAQAJCwsAAAkGCwAACwAGEQAAABEREQBBkYYBCyELAAAAAAAAAAARAAoKERERAAoAAAIACQsAAAAJAAsAAAsAQcuGAQsBDABB14YBCxUMAAAAAAwAAAAACQwAAAAAAAwAAAwAQYWHAQsBDgBBkYcBCxUNAAAABA0AAAAACQ4AAAAAAA4AAA4AQb+HAQsBEABBy4cBCx4PAAAAAA8AAAAACRAAAAAAABAAABAAABIAAAASEhIAQYKIAQsOEgAAABISEgAAAAAAAAkAQbOIAQsBCwBBv4gBCxUKAAAAAAoAAAAACQsAAAAAAAsAAAsAQe2IAQsBDABB+YgBCycMAAAAAAwAAAAACQwAAAAAAAwAAAwAADAxMjM0NTY3ODlBQkNERUYAQcSJAQsBNQBB64kBCwX//////wBBsIoBC1cZEkQ7Aj8sRxQ9MzAKGwZGS0U3D0kOjhcDQB08aSs2H0otHAEgJSkhCAwVFiIuEDg+CzQxGGR0dXYvQQl/OREjQzJCiYqLBQQmKCcNKh41jAcaSJMTlJUAQZCLAQuKDklsbGVnYWwgYnl0ZSBzZXF1ZW5jZQBEb21haW4gZXJyb3IAUmVzdWx0IG5vdCByZXByZXNlbnRhYmxlAE5vdCBhIHR0eQBQZXJtaXNzaW9uIGRlbmllZABPcGVyYXRpb24gbm90IHBlcm1pdHRlZABObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5AE5vIHN1Y2ggcHJvY2VzcwBGaWxlIGV4aXN0cwBWYWx1ZSB0b28gbGFyZ2UgZm9yIGRhdGEgdHlwZQBObyBzcGFjZSBsZWZ0IG9uIGRldmljZQBPdXQgb2YgbWVtb3J5AFJlc291cmNlIGJ1c3kASW50ZXJydXB0ZWQgc3lzdGVtIGNhbGwAUmVzb3VyY2UgdGVtcG9yYXJpbHkgdW5hdmFpbGFibGUASW52YWxpZCBzZWVrAENyb3NzLWRldmljZSBsaW5rAFJlYWQtb25seSBmaWxlIHN5c3RlbQBEaXJlY3Rvcnkgbm90IGVtcHR5AENvbm5lY3Rpb24gcmVzZXQgYnkgcGVlcgBPcGVyYXRpb24gdGltZWQgb3V0AENvbm5lY3Rpb24gcmVmdXNlZABIb3N0IGlzIGRvd24ASG9zdCBpcyB1bnJlYWNoYWJsZQBBZGRyZXNzIGluIHVzZQBCcm9rZW4gcGlwZQBJL08gZXJyb3IATm8gc3VjaCBkZXZpY2Ugb3IgYWRkcmVzcwBCbG9jayBkZXZpY2UgcmVxdWlyZWQATm8gc3VjaCBkZXZpY2UATm90IGEgZGlyZWN0b3J5AElzIGEgZGlyZWN0b3J5AFRleHQgZmlsZSBidXN5AEV4ZWMgZm9ybWF0IGVycm9yAEludmFsaWQgYXJndW1lbnQAQXJndW1lbnQgbGlzdCB0b28gbG9uZwBTeW1ib2xpYyBsaW5rIGxvb3AARmlsZW5hbWUgdG9vIGxvbmcAVG9vIG1hbnkgb3BlbiBmaWxlcyBpbiBzeXN0ZW0ATm8gZmlsZSBkZXNjcmlwdG9ycyBhdmFpbGFibGUAQmFkIGZpbGUgZGVzY3JpcHRvcgBObyBjaGlsZCBwcm9jZXNzAEJhZCBhZGRyZXNzAEZpbGUgdG9vIGxhcmdlAFRvbyBtYW55IGxpbmtzAE5vIGxvY2tzIGF2YWlsYWJsZQBSZXNvdXJjZSBkZWFkbG9jayB3b3VsZCBvY2N1cgBTdGF0ZSBub3QgcmVjb3ZlcmFibGUAUHJldmlvdXMgb3duZXIgZGllZABPcGVyYXRpb24gY2FuY2VsZWQARnVuY3Rpb24gbm90IGltcGxlbWVudGVkAE5vIG1lc3NhZ2Ugb2YgZGVzaXJlZCB0eXBlAElkZW50aWZpZXIgcmVtb3ZlZABEZXZpY2Ugbm90IGEgc3RyZWFtAE5vIGRhdGEgYXZhaWxhYmxlAERldmljZSB0aW1lb3V0AE91dCBvZiBzdHJlYW1zIHJlc291cmNlcwBMaW5rIGhhcyBiZWVuIHNldmVyZWQAUHJvdG9jb2wgZXJyb3IAQmFkIG1lc3NhZ2UARmlsZSBkZXNjcmlwdG9yIGluIGJhZCBzdGF0ZQBOb3QgYSBzb2NrZXQARGVzdGluYXRpb24gYWRkcmVzcyByZXF1aXJlZABNZXNzYWdlIHRvbyBsYXJnZQBQcm90b2NvbCB3cm9uZyB0eXBlIGZvciBzb2NrZXQAUHJvdG9jb2wgbm90IGF2YWlsYWJsZQBQcm90b2NvbCBub3Qgc3VwcG9ydGVkAFNvY2tldCB0eXBlIG5vdCBzdXBwb3J0ZWQATm90IHN1cHBvcnRlZABQcm90b2NvbCBmYW1pbHkgbm90IHN1cHBvcnRlZABBZGRyZXNzIGZhbWlseSBub3Qgc3VwcG9ydGVkIGJ5IHByb3RvY29sAEFkZHJlc3Mgbm90IGF2YWlsYWJsZQBOZXR3b3JrIGlzIGRvd24ATmV0d29yayB1bnJlYWNoYWJsZQBDb25uZWN0aW9uIHJlc2V0IGJ5IG5ldHdvcmsAQ29ubmVjdGlvbiBhYm9ydGVkAE5vIGJ1ZmZlciBzcGFjZSBhdmFpbGFibGUAU29ja2V0IGlzIGNvbm5lY3RlZABTb2NrZXQgbm90IGNvbm5lY3RlZABDYW5ub3Qgc2VuZCBhZnRlciBzb2NrZXQgc2h1dGRvd24AT3BlcmF0aW9uIGFscmVhZHkgaW4gcHJvZ3Jlc3MAT3BlcmF0aW9uIGluIHByb2dyZXNzAFN0YWxlIGZpbGUgaGFuZGxlAFJlbW90ZSBJL08gZXJyb3IAUXVvdGEgZXhjZWVkZWQATm8gbWVkaXVtIGZvdW5kAFdyb25nIG1lZGl1bSB0eXBlAE5vIGVycm9yIGluZm9ybWF0aW9uAEGgmQELhgEWAAAAFwAAABgAAAAZAAAAGgAAABsAAAAcAAAAHQAAAB4AAAAfAAAAIAAAACEAAAAiAAAAkFFQACYAAAAnAAAAKAAAACkAAAAqAAAAKwAAACwAAAAtAAAALgAAACcAAAAoAAAAKQAAACoAAAArAAAALAAAAC0AAAABAAAACAAAANhMAAD4TABB1JsBCwJQUQBBjJwBCwkfAAAAJE4AAAMAQaScAQuMAS30UVjPjLHARva1yykxA8cEW3AwtF39IHh/i5rYWSlQaEiJq6dWA2z/t82IP9R3tCulo3DxuuSo/EGD/dlv4Yp6Ly10lgcfDQleA3YscPdApSynb1dBqKp036BYZANKx8Q8U66vXxgEFbHjbSiGqwykv0Pw6VCBOVcWUjf/////////////////////";yo(qi)||(qi=E(qi));function tl(u){try{if(u==qi&&ie)return new Uint8Array(ie);var I=xn(u);if(I)return I;if(w)return w(u);throw"sync fetching of the wasm failed: you can preload it to Module['wasmBinary'] manually, or emcc.py will do that for you when generating HTML (but not JS)"}catch(B){HA(B)}}function rl(u,I){var B,S,R;try{R=tl(u),S=new WebAssembly.Module(R),B=new WebAssembly.Instance(S,I)}catch(T){var O=T.toString();throw _("failed to compile wasm module: "+O),(O.includes("imported Memory")||O.includes("memory import"))&&_("Memory size incompatibility issues may be due to changing INITIAL_MEMORY at runtime to something too large. Use ALLOW_MEMORY_GROWTH to allow any size memory (and also make sure not to set INITIAL_MEMORY at runtime to something smaller than it was at compile time)."),T}return[B,S]}function Ja(){var u={a:Cs};function I(R,O){var T=R.exports;t.asm=T,o=t.asm.u,ye(o.buffer),Xe=t.asm.pa,Ga(t.asm.v),Qo("wasm-instantiate")}if(po("wasm-instantiate"),t.instantiateWasm)try{var B=t.instantiateWasm(u,I);return B}catch(R){return _("Module.instantiateWasm callback failed with error: "+R),!1}var S=rl(qi,u);return I(S[0]),t.asm}var JA,bt;function Gi(u){return ue.getFloat32(u,!0)}function ja(u){return ue.getFloat64(u,!0)}function Wa(u){return ue.getInt16(u,!0)}function at(u){return ue.getInt32(u,!0)}function il(u,I){ue.setInt16(u,I,!0)}function Ze(u,I){ue.setInt32(u,I,!0)}function Tr(u){for(;u.length>0;){var I=u.shift();if(typeof I=="function"){I(t);continue}var B=I.func;typeof B=="number"?I.arg===void 0?Xe.get(B)():Xe.get(B)(I.arg):B(I.arg===void 0?null:I.arg)}}function Ir(u,I){var B=new Date(at((u>>2)*4)*1e3);Ze((I>>2)*4,B.getUTCSeconds()),Ze((I+4>>2)*4,B.getUTCMinutes()),Ze((I+8>>2)*4,B.getUTCHours()),Ze((I+12>>2)*4,B.getUTCDate()),Ze((I+16>>2)*4,B.getUTCMonth()),Ze((I+20>>2)*4,B.getUTCFullYear()-1900),Ze((I+24>>2)*4,B.getUTCDay()),Ze((I+36>>2)*4,0),Ze((I+32>>2)*4,0);var S=Date.UTC(B.getUTCFullYear(),0,1,0,0,0,0),R=(B.getTime()-S)/(1e3*60*60*24)|0;return Ze((I+28>>2)*4,R),Ir.GMTString||(Ir.GMTString=Ve("GMT")),Ze((I+40>>2)*4,Ir.GMTString),I}function nl(u,I){return Ir(u,I)}var lA={splitPath:function(u){var I=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return I.exec(u).slice(1)},normalizeArray:function(u,I){for(var B=0,S=u.length-1;S>=0;S--){var R=u[S];R==="."?u.splice(S,1):R===".."?(u.splice(S,1),B++):B&&(u.splice(S,1),B--)}if(I)for(;B;B--)u.unshift("..");return u},normalize:function(u){var I=u.charAt(0)==="/",B=u.substr(-1)==="/";return u=lA.normalizeArray(u.split("/").filter(function(S){return!!S}),!I).join("/"),!u&&!I&&(u="."),u&&B&&(u+="/"),(I?"/":"")+u},dirname:function(u){var I=lA.splitPath(u),B=I[0],S=I[1];return!B&&!S?".":(S&&(S=S.substr(0,S.length-1)),B+S)},basename:function(u){if(u==="/")return"/";u=lA.normalize(u),u=u.replace(/\/$/,"");var I=u.lastIndexOf("/");return I===-1?u:u.substr(I+1)},extname:function(u){return lA.splitPath(u)[3]},join:function(){var u=Array.prototype.slice.call(arguments,0);return lA.normalize(u.join("/"))},join2:function(u,I){return lA.normalize(u+"/"+I)}};function Er(){if(typeof crypto=="object"&&typeof crypto.getRandomValues=="function"){var u=new Uint8Array(1);return function(){return crypto.getRandomValues(u),u[0]}}else if(C)try{var I=require("crypto");return function(){return I.randomBytes(1)[0]}}catch{}return function(){HA("randomDevice")}}var er={resolve:function(){for(var u="",I=!1,B=arguments.length-1;B>=-1&&!I;B--){var S=B>=0?arguments[B]:y.cwd();if(typeof S!="string")throw new TypeError("Arguments to path.resolve must be strings");if(!S)return"";u=S+"/"+u,I=S.charAt(0)==="/"}return u=lA.normalizeArray(u.split("/").filter(function(R){return!!R}),!I).join("/"),(I?"/":"")+u||"."},relative:function(u,I){u=er.resolve(u).substr(1),I=er.resolve(I).substr(1);function B(Ue){for(var Ne=0;Ne=0&&Ue[Y]==="";Y--);return Ne>Y?[]:Ue.slice(Ne,Y-Ne+1)}for(var S=B(u.split("/")),R=B(I.split("/")),O=Math.min(S.length,R.length),T=O,$=0;$0?I=S.slice(0,R).toString("utf-8"):I=null}else typeof window<"u"&&typeof window.prompt=="function"?(I=window.prompt("Input: "),I!==null&&(I+=` +`)):typeof readline=="function"&&(I=readline(),I!==null&&(I+=` +`));if(!I)return null;u.input=pi(I,!0)}return u.input.shift()},put_char:function(u,I){I===null||I===10?(K(De(u.output,0)),u.output=[]):I!=0&&u.output.push(I)},flush:function(u){u.output&&u.output.length>0&&(K(De(u.output,0)),u.output=[])}},default_tty1_ops:{put_char:function(u,I){I===null||I===10?(_(De(u.output,0)),u.output=[]):I!=0&&u.output.push(I)},flush:function(u){u.output&&u.output.length>0&&(_(De(u.output,0)),u.output=[])}}};function ls(u){for(var I=re(u,65536),B=wC(I);u=I)){var S=1024*1024;I=Math.max(I,B*(B>>0),B!=0&&(I=Math.max(I,256));var R=u.contents;u.contents=new Uint8Array(I),u.usedBytes>0&&u.contents.set(R.subarray(0,u.usedBytes),0)}},resizeFileStorage:function(u,I){if(u.usedBytes!=I)if(I==0)u.contents=null,u.usedBytes=0;else{var B=u.contents;u.contents=new Uint8Array(I),B&&u.contents.set(B.subarray(0,Math.min(I,u.usedBytes))),u.usedBytes=I}},node_ops:{getattr:function(u){var I={};return I.dev=y.isChrdev(u.mode)?u.id:1,I.ino=u.id,I.mode=u.mode,I.nlink=1,I.uid=0,I.gid=0,I.rdev=u.rdev,y.isDir(u.mode)?I.size=4096:y.isFile(u.mode)?I.size=u.usedBytes:y.isLink(u.mode)?I.size=u.link.length:I.size=0,I.atime=new Date(u.timestamp),I.mtime=new Date(u.timestamp),I.ctime=new Date(u.timestamp),I.blksize=4096,I.blocks=Math.ceil(I.size/I.blksize),I},setattr:function(u,I){I.mode!==void 0&&(u.mode=I.mode),I.timestamp!==void 0&&(u.timestamp=I.timestamp),I.size!==void 0&&AA.resizeFileStorage(u,I.size)},lookup:function(u,I){throw y.genericErrors[44]},mknod:function(u,I,B,S){return AA.createNode(u,I,B,S)},rename:function(u,I,B){if(y.isDir(u.mode)){var S;try{S=y.lookupNode(I,B)}catch{}if(S)for(var R in S.contents)throw new y.ErrnoError(55)}delete u.parent.contents[u.name],u.parent.timestamp=Date.now(),u.name=B,I.contents[B]=u,I.timestamp=u.parent.timestamp,u.parent=I},unlink:function(u,I){delete u.contents[I],u.timestamp=Date.now()},rmdir:function(u,I){var B=y.lookupNode(u,I);for(var S in B.contents)throw new y.ErrnoError(55);delete u.contents[I],u.timestamp=Date.now()},readdir:function(u){var I=[".",".."];for(var B in u.contents)!u.contents.hasOwnProperty(B)||I.push(B);return I},symlink:function(u,I,B){var S=AA.createNode(u,I,41471,0);return S.link=B,S},readlink:function(u){if(!y.isLink(u.mode))throw new y.ErrnoError(28);return u.link}},stream_ops:{read:function(u,I,B,S,R){var O=u.node.contents;if(R>=u.node.usedBytes)return 0;var T=Math.min(u.node.usedBytes-R,S);if(T>8&&O.subarray)I.set(O.subarray(R,R+T),B);else for(var $=0;$0||S+B>2)}catch(B){throw B.code?new y.ErrnoError(He.convertNodeCode(B)):B}return I.mode},realPath:function(u){for(var I=[];u.parent!==u;)I.push(u.name),u=u.parent;return I.push(u.mount.opts.root),I.reverse(),lA.join.apply(null,I)},flagsForNode:function(u){u&=-2097153,u&=-2049,u&=-32769,u&=-524289;var I=0;for(var B in He.flagsForNodeMap)u&B&&(I|=He.flagsForNodeMap[B],u^=B);if(u)throw new y.ErrnoError(28);return I},node_ops:{getattr:function(u){var I=He.realPath(u),B;try{B=tA.lstatSync(I)}catch(S){throw S.code?new y.ErrnoError(He.convertNodeCode(S)):S}return He.isWindows&&!B.blksize&&(B.blksize=4096),He.isWindows&&!B.blocks&&(B.blocks=(B.size+B.blksize-1)/B.blksize|0),{dev:B.dev,ino:B.ino,mode:B.mode,nlink:B.nlink,uid:B.uid,gid:B.gid,rdev:B.rdev,size:B.size,atime:B.atime,mtime:B.mtime,ctime:B.ctime,blksize:B.blksize,blocks:B.blocks}},setattr:function(u,I){var B=He.realPath(u);try{if(I.mode!==void 0&&(tA.chmodSync(B,I.mode),u.mode=I.mode),I.timestamp!==void 0){var S=new Date(I.timestamp);tA.utimesSync(B,S,S)}I.size!==void 0&&tA.truncateSync(B,I.size)}catch(R){throw R.code?new y.ErrnoError(He.convertNodeCode(R)):R}},lookup:function(u,I){var B=lA.join2(He.realPath(u),I),S=He.getMode(B);return He.createNode(u,I,S)},mknod:function(u,I,B,S){var R=He.createNode(u,I,B,S),O=He.realPath(R);try{y.isDir(R.mode)?tA.mkdirSync(O,R.mode):tA.writeFileSync(O,"",{mode:R.mode})}catch(T){throw T.code?new y.ErrnoError(He.convertNodeCode(T)):T}return R},rename:function(u,I,B){var S=He.realPath(u),R=lA.join2(He.realPath(I),B);try{tA.renameSync(S,R)}catch(O){throw O.code?new y.ErrnoError(He.convertNodeCode(O)):O}u.name=B},unlink:function(u,I){var B=lA.join2(He.realPath(u),I);try{tA.unlinkSync(B)}catch(S){throw S.code?new y.ErrnoError(He.convertNodeCode(S)):S}},rmdir:function(u,I){var B=lA.join2(He.realPath(u),I);try{tA.rmdirSync(B)}catch(S){throw S.code?new y.ErrnoError(He.convertNodeCode(S)):S}},readdir:function(u){var I=He.realPath(u);try{return tA.readdirSync(I)}catch(B){throw B.code?new y.ErrnoError(He.convertNodeCode(B)):B}},symlink:function(u,I,B){var S=lA.join2(He.realPath(u),I);try{tA.symlinkSync(B,S)}catch(R){throw R.code?new y.ErrnoError(He.convertNodeCode(R)):R}},readlink:function(u){var I=He.realPath(u);try{return I=tA.readlinkSync(I),I=Sn.relative(Sn.resolve(u.mount.opts.root),I),I}catch(B){throw B.code?new y.ErrnoError(He.convertNodeCode(B)):B}}},stream_ops:{open:function(u){var I=He.realPath(u.node);try{y.isFile(u.node.mode)&&(u.nfd=tA.openSync(I,He.flagsForNode(u.flags)))}catch(B){throw B.code?new y.ErrnoError(He.convertNodeCode(B)):B}},close:function(u){try{y.isFile(u.node.mode)&&u.nfd&&tA.closeSync(u.nfd)}catch(I){throw I.code?new y.ErrnoError(He.convertNodeCode(I)):I}},read:function(u,I,B,S,R){if(S===0)return 0;try{return tA.readSync(u.nfd,He.bufferFrom(I.buffer),B,S,R)}catch(O){throw new y.ErrnoError(He.convertNodeCode(O))}},write:function(u,I,B,S,R){try{return tA.writeSync(u.nfd,He.bufferFrom(I.buffer),B,S,R)}catch(O){throw new y.ErrnoError(He.convertNodeCode(O))}},llseek:function(u,I,B){var S=I;if(B===1)S+=u.position;else if(B===2&&y.isFile(u.node.mode))try{var R=tA.fstatSync(u.nfd);S+=R.size}catch(O){throw new y.ErrnoError(He.convertNodeCode(O))}if(S<0)throw new y.ErrnoError(28);return S},mmap:function(u,I,B,S,R,O){if(I!==0)throw new y.ErrnoError(28);if(!y.isFile(u.node.mode))throw new y.ErrnoError(43);var T=ls(B);return He.stream_ops.read(u,Z,T,B,S),{ptr:T,allocated:!0}},msync:function(u,I,B,S,R){if(!y.isFile(u.node.mode))throw new y.ErrnoError(43);if(R&2)return 0;var O=He.stream_ops.write(u,I,0,S,B,!1);return 0}}},za={lookupPath:function(u){return{path:u,node:{mode:He.getMode(u)}}},createStandardStreams:function(){y.streams[0]={fd:0,nfd:0,position:0,path:"",flags:0,tty:!0,seekable:!1};for(var u=1;u<3;u++)y.streams[u]={fd:u,nfd:u,position:0,path:"",flags:577,tty:!0,seekable:!1}},cwd:function(){return process.cwd()},chdir:function(){process.chdir.apply(void 0,arguments)},mknod:function(u,I){y.isDir(u)?tA.mkdirSync(u,I):tA.writeFileSync(u,"",{mode:I})},mkdir:function(){tA.mkdirSync.apply(void 0,arguments)},symlink:function(){tA.symlinkSync.apply(void 0,arguments)},rename:function(){tA.renameSync.apply(void 0,arguments)},rmdir:function(){tA.rmdirSync.apply(void 0,arguments)},readdir:function(){tA.readdirSync.apply(void 0,arguments)},unlink:function(){tA.unlinkSync.apply(void 0,arguments)},readlink:function(){return tA.readlinkSync.apply(void 0,arguments)},stat:function(){return tA.statSync.apply(void 0,arguments)},lstat:function(){return tA.lstatSync.apply(void 0,arguments)},chmod:function(){tA.chmodSync.apply(void 0,arguments)},fchmod:function(){tA.fchmodSync.apply(void 0,arguments)},chown:function(){tA.chownSync.apply(void 0,arguments)},fchown:function(){tA.fchownSync.apply(void 0,arguments)},truncate:function(){tA.truncateSync.apply(void 0,arguments)},ftruncate:function(u,I){if(I<0)throw new y.ErrnoError(28);tA.ftruncateSync.apply(void 0,arguments)},utime:function(){tA.utimesSync.apply(void 0,arguments)},open:function(u,I,B,S){typeof I=="string"&&(I=Hi.modeStringToFlags(I));var R=tA.openSync(u,He.flagsForNode(I),B),O=S??y.nextfd(R),T={fd:O,nfd:R,position:0,path:u,flags:I,seekable:!0};return y.streams[O]=T,T},close:function(u){u.stream_ops||tA.closeSync(u.nfd),y.closeStream(u.fd)},llseek:function(u,I,B){if(u.stream_ops)return Hi.llseek(u,I,B);var S=I;if(B===1)S+=u.position;else if(B===2)S+=tA.fstatSync(u.nfd).size;else if(B!==0)throw new y.ErrnoError(Yi.EINVAL);if(S<0)throw new y.ErrnoError(Yi.EINVAL);return u.position=S,S},read:function(u,I,B,S,R){if(u.stream_ops)return Hi.read(u,I,B,S,R);var O=typeof R<"u";!O&&u.seekable&&(R=u.position);var T=tA.readSync(u.nfd,He.bufferFrom(I.buffer),B,S,R);return O||(u.position+=T),T},write:function(u,I,B,S,R){if(u.stream_ops)return Hi.write(u,I,B,S,R);u.flags&+"1024"&&y.llseek(u,0,+"2");var O=typeof R<"u";!O&&u.seekable&&(R=u.position);var T=tA.writeSync(u.nfd,He.bufferFrom(I.buffer),B,S,R);return O||(u.position+=T),T},allocate:function(){throw new y.ErrnoError(Yi.EOPNOTSUPP)},mmap:function(u,I,B,S,R,O){if(u.stream_ops)return Hi.mmap(u,I,B,S,R,O);if(I!==0)throw new y.ErrnoError(28);var T=ls(B);return y.read(u,Z,T,B,S),{ptr:T,allocated:!0}},msync:function(u,I,B,S,R){return u.stream_ops?Hi.msync(u,I,B,S,R):(R&2||y.write(u,I,0,S,B),0)},munmap:function(){return 0},ioctl:function(){throw new y.ErrnoError(Yi.ENOTTY)}},y={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:!1,ignorePermissions:!0,trackingDelegate:{},tracking:{openFlags:{READ:1,WRITE:2}},ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath:function(u,I){if(u=er.resolve(y.cwd(),u),I=I||{},!u)return{path:"",node:null};var B={follow_mount:!0,recurse_count:0};for(var S in B)I[S]===void 0&&(I[S]=B[S]);if(I.recurse_count>8)throw new y.ErrnoError(32);for(var R=lA.normalizeArray(u.split("/").filter(function(Je){return!!Je}),!1),O=y.root,T="/",$=0;$40)throw new y.ErrnoError(32)}}return{path:T,node:O}},getPath:function(u){for(var I;;){if(y.isRoot(u)){var B=u.mount.mountpoint;return I?B[B.length-1]!=="/"?B+"/"+I:B+I:B}I=I?u.name+"/"+I:u.name,u=u.parent}},hashName:function(u,I){for(var B=0,S=0;S>>0)%y.nameTable.length},hashAddNode:function(u){var I=y.hashName(u.parent.id,u.name);u.name_next=y.nameTable[I],y.nameTable[I]=u},hashRemoveNode:function(u){var I=y.hashName(u.parent.id,u.name);if(y.nameTable[I]===u)y.nameTable[I]=u.name_next;else for(var B=y.nameTable[I];B;){if(B.name_next===u){B.name_next=u.name_next;break}B=B.name_next}},lookupNode:function(u,I){var B=y.mayLookup(u);if(B)throw new y.ErrnoError(B,u);for(var S=y.hashName(u.id,I),R=y.nameTable[S];R;R=R.name_next){var O=R.name;if(R.parent.id===u.id&&O===I)return R}return y.lookup(u,I)},createNode:function(u,I,B,S){var R=new y.FSNode(u,I,B,S);return y.hashAddNode(R),R},destroyNode:function(u){y.hashRemoveNode(u)},isRoot:function(u){return u===u.parent},isMountpoint:function(u){return!!u.mounted},isFile:function(u){return(u&61440)===32768},isDir:function(u){return(u&61440)===16384},isLink:function(u){return(u&61440)===40960},isChrdev:function(u){return(u&61440)===8192},isBlkdev:function(u){return(u&61440)===24576},isFIFO:function(u){return(u&61440)===4096},isSocket:function(u){return(u&49152)===49152},flagModes:{r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090},modeStringToFlags:function(u){var I=y.flagModes[u];if(typeof I>"u")throw new Error("Unknown file open mode: "+u);return I},flagsToPermissionString:function(u){var I=["r","w","rw"][u&3];return u&512&&(I+="w"),I},nodePermissions:function(u,I){return y.ignorePermissions?0:I.includes("r")&&!(u.mode&292)||I.includes("w")&&!(u.mode&146)||I.includes("x")&&!(u.mode&73)?2:0},mayLookup:function(u){var I=y.nodePermissions(u,"x");return I||(u.node_ops.lookup?0:2)},mayCreate:function(u,I){try{var B=y.lookupNode(u,I);return 20}catch{}return y.nodePermissions(u,"wx")},mayDelete:function(u,I,B){var S;try{S=y.lookupNode(u,I)}catch(O){return O.errno}var R=y.nodePermissions(u,"wx");if(R)return R;if(B){if(!y.isDir(S.mode))return 54;if(y.isRoot(S)||y.getPath(S)===y.cwd())return 10}else if(y.isDir(S.mode))return 31;return 0},mayOpen:function(u,I){return u?y.isLink(u.mode)?32:y.isDir(u.mode)&&(y.flagsToPermissionString(I)!=="r"||I&512)?31:y.nodePermissions(u,y.flagsToPermissionString(I)):44},MAX_OPEN_FDS:4096,nextfd:function(u,I){u=u||0,I=I||y.MAX_OPEN_FDS;for(var B=u;B<=I;B++)if(!y.streams[B])return B;throw new y.ErrnoError(33)},getStream:function(u){return y.streams[u]},createStream:function(u,I,B){y.FSStream||(y.FSStream=function(){},y.FSStream.prototype={object:{get:function(){return this.node},set:function(T){this.node=T}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}}});var S=new y.FSStream;for(var R in u)S[R]=u[R];u=S;var O=y.nextfd(I,B);return u.fd=O,y.streams[O]=u,u},closeStream:function(u){y.streams[u]=null},chrdev_stream_ops:{open:function(u){var I=y.getDevice(u.node.rdev);u.stream_ops=I.stream_ops,u.stream_ops.open&&u.stream_ops.open(u)},llseek:function(){throw new y.ErrnoError(70)}},major:function(u){return u>>8},minor:function(u){return u&255},makedev:function(u,I){return u<<8|I},registerDevice:function(u,I){y.devices[u]={stream_ops:I}},getDevice:function(u){return y.devices[u]},getMounts:function(u){for(var I=[],B=[u];B.length;){var S=B.pop();I.push(S),B.push.apply(B,S.mounts)}return I},syncfs:function(u,I){typeof u=="function"&&(I=u,u=!1),y.syncFSRequests++,y.syncFSRequests>1&&_("warning: "+y.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work");var B=y.getMounts(y.root.mount),S=0;function R(T){return y.syncFSRequests--,I(T)}function O(T){if(T)return O.errored?void 0:(O.errored=!0,R(T));++S>=B.length&&R(null)}B.forEach(function(T){if(!T.type.syncfs)return O(null);T.type.syncfs(T,u,O)})},mount:function(u,I,B){var S=B==="/",R=!B,O;if(S&&y.root)throw new y.ErrnoError(10);if(!S&&!R){var T=y.lookupPath(B,{follow_mount:!1});if(B=T.path,O=T.node,y.isMountpoint(O))throw new y.ErrnoError(10);if(!y.isDir(O.mode))throw new y.ErrnoError(54)}var $={type:u,opts:I,mountpoint:B,mounts:[]},Ie=u.mount($);return Ie.mount=$,$.root=Ie,S?y.root=Ie:O&&(O.mounted=$,O.mount&&O.mount.mounts.push($)),Ie},unmount:function(u){var I=y.lookupPath(u,{follow_mount:!1});if(!y.isMountpoint(I.node))throw new y.ErrnoError(28);var B=I.node,S=B.mounted,R=y.getMounts(S);Object.keys(y.nameTable).forEach(function(T){for(var $=y.nameTable[T];$;){var Ie=$.name_next;R.includes($.mount)&&y.destroyNode($),$=Ie}}),B.mounted=null;var O=B.mount.mounts.indexOf(S);B.mount.mounts.splice(O,1)},lookup:function(u,I){return u.node_ops.lookup(u,I)},mknod:function(u,I,B){var S=y.lookupPath(u,{parent:!0}),R=S.node,O=lA.basename(u);if(!O||O==="."||O==="..")throw new y.ErrnoError(28);var T=y.mayCreate(R,O);if(T)throw new y.ErrnoError(T);if(!R.node_ops.mknod)throw new y.ErrnoError(63);return R.node_ops.mknod(R,O,I,B)},create:function(u,I){return I=I!==void 0?I:438,I&=4095,I|=32768,y.mknod(u,I,0)},mkdir:function(u,I){return I=I!==void 0?I:511,I&=1023,I|=16384,y.mknod(u,I,0)},mkdirTree:function(u,I){for(var B=u.split("/"),S="",R=0;R"u"&&(B=I,I=438),I|=8192,y.mknod(u,I,B)},symlink:function(u,I){if(!er.resolve(u))throw new y.ErrnoError(44);var B=y.lookupPath(I,{parent:!0}),S=B.node;if(!S)throw new y.ErrnoError(44);var R=lA.basename(I),O=y.mayCreate(S,R);if(O)throw new y.ErrnoError(O);if(!S.node_ops.symlink)throw new y.ErrnoError(63);return S.node_ops.symlink(S,R,u)},rename:function(u,I){var B=lA.dirname(u),S=lA.dirname(I),R=lA.basename(u),O=lA.basename(I),T,$,Ie;if(T=y.lookupPath(u,{parent:!0}),$=T.node,T=y.lookupPath(I,{parent:!0}),Ie=T.node,!$||!Ie)throw new y.ErrnoError(44);if($.mount!==Ie.mount)throw new y.ErrnoError(75);var Ue=y.lookupNode($,R),Ne=er.relative(u,S);if(Ne.charAt(0)!==".")throw new y.ErrnoError(28);if(Ne=er.relative(I,B),Ne.charAt(0)!==".")throw new y.ErrnoError(55);var Y;try{Y=y.lookupNode(Ie,O)}catch{}if(Ue!==Y){var Je=y.isDir(Ue.mode),Oe=y.mayDelete($,R,Je);if(Oe)throw new y.ErrnoError(Oe);if(Oe=Y?y.mayDelete(Ie,O,Je):y.mayCreate(Ie,O),Oe)throw new y.ErrnoError(Oe);if(!$.node_ops.rename)throw new y.ErrnoError(63);if(y.isMountpoint(Ue)||Y&&y.isMountpoint(Y))throw new y.ErrnoError(10);if(Ie!==$&&(Oe=y.nodePermissions($,"w"),Oe))throw new y.ErrnoError(Oe);try{y.trackingDelegate.willMovePath&&y.trackingDelegate.willMovePath(u,I)}catch(uA){_("FS.trackingDelegate['willMovePath']('"+u+"', '"+I+"') threw an exception: "+uA.message)}y.hashRemoveNode(Ue);try{$.node_ops.rename(Ue,Ie,O)}catch(uA){throw uA}finally{y.hashAddNode(Ue)}try{y.trackingDelegate.onMovePath&&y.trackingDelegate.onMovePath(u,I)}catch(uA){_("FS.trackingDelegate['onMovePath']('"+u+"', '"+I+"') threw an exception: "+uA.message)}}},rmdir:function(u){var I=y.lookupPath(u,{parent:!0}),B=I.node,S=lA.basename(u),R=y.lookupNode(B,S),O=y.mayDelete(B,S,!0);if(O)throw new y.ErrnoError(O);if(!B.node_ops.rmdir)throw new y.ErrnoError(63);if(y.isMountpoint(R))throw new y.ErrnoError(10);try{y.trackingDelegate.willDeletePath&&y.trackingDelegate.willDeletePath(u)}catch(T){_("FS.trackingDelegate['willDeletePath']('"+u+"') threw an exception: "+T.message)}B.node_ops.rmdir(B,S),y.destroyNode(R);try{y.trackingDelegate.onDeletePath&&y.trackingDelegate.onDeletePath(u)}catch(T){_("FS.trackingDelegate['onDeletePath']('"+u+"') threw an exception: "+T.message)}},readdir:function(u){var I=y.lookupPath(u,{follow:!0}),B=I.node;if(!B.node_ops.readdir)throw new y.ErrnoError(54);return B.node_ops.readdir(B)},unlink:function(u){var I=y.lookupPath(u,{parent:!0}),B=I.node,S=lA.basename(u),R=y.lookupNode(B,S),O=y.mayDelete(B,S,!1);if(O)throw new y.ErrnoError(O);if(!B.node_ops.unlink)throw new y.ErrnoError(63);if(y.isMountpoint(R))throw new y.ErrnoError(10);try{y.trackingDelegate.willDeletePath&&y.trackingDelegate.willDeletePath(u)}catch(T){_("FS.trackingDelegate['willDeletePath']('"+u+"') threw an exception: "+T.message)}B.node_ops.unlink(B,S),y.destroyNode(R);try{y.trackingDelegate.onDeletePath&&y.trackingDelegate.onDeletePath(u)}catch(T){_("FS.trackingDelegate['onDeletePath']('"+u+"') threw an exception: "+T.message)}},readlink:function(u){var I=y.lookupPath(u),B=I.node;if(!B)throw new y.ErrnoError(44);if(!B.node_ops.readlink)throw new y.ErrnoError(28);return er.resolve(y.getPath(B.parent),B.node_ops.readlink(B))},stat:function(u,I){var B=y.lookupPath(u,{follow:!I}),S=B.node;if(!S)throw new y.ErrnoError(44);if(!S.node_ops.getattr)throw new y.ErrnoError(63);return S.node_ops.getattr(S)},lstat:function(u){return y.stat(u,!0)},chmod:function(u,I,B){var S;if(typeof u=="string"){var R=y.lookupPath(u,{follow:!B});S=R.node}else S=u;if(!S.node_ops.setattr)throw new y.ErrnoError(63);S.node_ops.setattr(S,{mode:I&4095|S.mode&-4096,timestamp:Date.now()})},lchmod:function(u,I){y.chmod(u,I,!0)},fchmod:function(u,I){var B=y.getStream(u);if(!B)throw new y.ErrnoError(8);y.chmod(B.node,I)},chown:function(u,I,B,S){var R;if(typeof u=="string"){var O=y.lookupPath(u,{follow:!S});R=O.node}else R=u;if(!R.node_ops.setattr)throw new y.ErrnoError(63);R.node_ops.setattr(R,{timestamp:Date.now()})},lchown:function(u,I,B){y.chown(u,I,B,!0)},fchown:function(u,I,B){var S=y.getStream(u);if(!S)throw new y.ErrnoError(8);y.chown(S.node,I,B)},truncate:function(u,I){if(I<0)throw new y.ErrnoError(28);var B;if(typeof u=="string"){var S=y.lookupPath(u,{follow:!0});B=S.node}else B=u;if(!B.node_ops.setattr)throw new y.ErrnoError(63);if(y.isDir(B.mode))throw new y.ErrnoError(31);if(!y.isFile(B.mode))throw new y.ErrnoError(28);var R=y.nodePermissions(B,"w");if(R)throw new y.ErrnoError(R);B.node_ops.setattr(B,{size:I,timestamp:Date.now()})},ftruncate:function(u,I){var B=y.getStream(u);if(!B)throw new y.ErrnoError(8);if((B.flags&2097155)===0)throw new y.ErrnoError(28);y.truncate(B.node,I)},utime:function(u,I,B){var S=y.lookupPath(u,{follow:!0}),R=S.node;R.node_ops.setattr(R,{timestamp:Math.max(I,B)})},open:function(u,I,B,S,R){if(u==="")throw new y.ErrnoError(44);I=typeof I=="string"?y.modeStringToFlags(I):I,B=typeof B>"u"?438:B,I&64?B=B&4095|32768:B=0;var O;if(typeof u=="object")O=u;else{u=lA.normalize(u);try{var T=y.lookupPath(u,{follow:!(I&131072)});O=T.node}catch{}}var $=!1;if(I&64)if(O){if(I&128)throw new y.ErrnoError(20)}else O=y.mknod(u,B,0),$=!0;if(!O)throw new y.ErrnoError(44);if(y.isChrdev(O.mode)&&(I&=-513),I&65536&&!y.isDir(O.mode))throw new y.ErrnoError(54);if(!$){var Ie=y.mayOpen(O,I);if(Ie)throw new y.ErrnoError(Ie)}I&512&&y.truncate(O,0),I&=-131713;var Ue=y.createStream({node:O,path:y.getPath(O),flags:I,seekable:!0,position:0,stream_ops:O.stream_ops,ungotten:[],error:!1},S,R);Ue.stream_ops.open&&Ue.stream_ops.open(Ue),t.logReadFiles&&!(I&1)&&(y.readFiles||(y.readFiles={}),u in y.readFiles||(y.readFiles[u]=1,_("FS.trackingDelegate error on read file: "+u)));try{if(y.trackingDelegate.onOpenFile){var Ne=0;(I&2097155)!==1&&(Ne|=y.tracking.openFlags.READ),(I&2097155)!==0&&(Ne|=y.tracking.openFlags.WRITE),y.trackingDelegate.onOpenFile(u,Ne)}}catch(Y){_("FS.trackingDelegate['onOpenFile']('"+u+"', flags) threw an exception: "+Y.message)}return Ue},close:function(u){if(y.isClosed(u))throw new y.ErrnoError(8);u.getdents&&(u.getdents=null);try{u.stream_ops.close&&u.stream_ops.close(u)}catch(I){throw I}finally{y.closeStream(u.fd)}u.fd=null},isClosed:function(u){return u.fd===null},llseek:function(u,I,B){if(y.isClosed(u))throw new y.ErrnoError(8);if(!u.seekable||!u.stream_ops.llseek)throw new y.ErrnoError(70);if(B!=0&&B!=1&&B!=2)throw new y.ErrnoError(28);return u.position=u.stream_ops.llseek(u,I,B),u.ungotten=[],u.position},read:function(u,I,B,S,R){if(S<0||R<0)throw new y.ErrnoError(28);if(y.isClosed(u))throw new y.ErrnoError(8);if((u.flags&2097155)===1)throw new y.ErrnoError(8);if(y.isDir(u.node.mode))throw new y.ErrnoError(31);if(!u.stream_ops.read)throw new y.ErrnoError(28);var O=typeof R<"u";if(!O)R=u.position;else if(!u.seekable)throw new y.ErrnoError(70);var T=u.stream_ops.read(u,I,B,S,R);return O||(u.position+=T),T},write:function(u,I,B,S,R,O){if(S<0||R<0)throw new y.ErrnoError(28);if(y.isClosed(u))throw new y.ErrnoError(8);if((u.flags&2097155)===0)throw new y.ErrnoError(8);if(y.isDir(u.node.mode))throw new y.ErrnoError(31);if(!u.stream_ops.write)throw new y.ErrnoError(28);u.seekable&&u.flags&1024&&y.llseek(u,0,2);var T=typeof R<"u";if(!T)R=u.position;else if(!u.seekable)throw new y.ErrnoError(70);var $=u.stream_ops.write(u,I,B,S,R,O);T||(u.position+=$);try{u.path&&y.trackingDelegate.onWriteToFile&&y.trackingDelegate.onWriteToFile(u.path)}catch(Ie){_("FS.trackingDelegate['onWriteToFile']('"+u.path+"') threw an exception: "+Ie.message)}return $},allocate:function(u,I,B){if(y.isClosed(u))throw new y.ErrnoError(8);if(I<0||B<=0)throw new y.ErrnoError(28);if((u.flags&2097155)===0)throw new y.ErrnoError(8);if(!y.isFile(u.node.mode)&&!y.isDir(u.node.mode))throw new y.ErrnoError(43);if(!u.stream_ops.allocate)throw new y.ErrnoError(138);u.stream_ops.allocate(u,I,B)},mmap:function(u,I,B,S,R,O){if((R&2)!==0&&(O&2)===0&&(u.flags&2097155)!==2)throw new y.ErrnoError(2);if((u.flags&2097155)===1)throw new y.ErrnoError(2);if(!u.stream_ops.mmap)throw new y.ErrnoError(43);return u.stream_ops.mmap(u,I,B,S,R,O)},msync:function(u,I,B,S,R){return!u||!u.stream_ops.msync?0:u.stream_ops.msync(u,I,B,S,R)},munmap:function(u){return 0},ioctl:function(u,I,B){if(!u.stream_ops.ioctl)throw new y.ErrnoError(59);return u.stream_ops.ioctl(u,I,B)},readFile:function(u,I){if(I=I||{},I.flags=I.flags||0,I.encoding=I.encoding||"binary",I.encoding!=="utf8"&&I.encoding!=="binary")throw new Error('Invalid encoding type "'+I.encoding+'"');var B,S=y.open(u,I.flags),R=y.stat(u),O=R.size,T=new Uint8Array(O);return y.read(S,T,0,O,0),I.encoding==="utf8"?B=De(T,0):I.encoding==="binary"&&(B=T),y.close(S),B},writeFile:function(u,I,B){B=B||{},B.flags=B.flags||577;var S=y.open(u,B.flags,B.mode);if(typeof I=="string"){var R=new Uint8Array(Ye(I)+1),O=me(I,R,0,R.length);y.write(S,R,0,O,void 0,B.canOwn)}else if(ArrayBuffer.isView(I))y.write(S,I,0,I.byteLength,void 0,B.canOwn);else throw new Error("Unsupported data type");y.close(S)},cwd:function(){return y.currentPath},chdir:function(u){var I=y.lookupPath(u,{follow:!0});if(I.node===null)throw new y.ErrnoError(44);if(!y.isDir(I.node.mode))throw new y.ErrnoError(54);var B=y.nodePermissions(I.node,"x");if(B)throw new y.ErrnoError(B);y.currentPath=I.path},createDefaultDirectories:function(){y.mkdir("/tmp"),y.mkdir("/home"),y.mkdir("/home/web_user")},createDefaultDevices:function(){y.mkdir("/dev"),y.registerDevice(y.makedev(1,3),{read:function(){return 0},write:function(I,B,S,R,O){return R}}),y.mkdev("/dev/null",y.makedev(1,3)),Br.register(y.makedev(5,0),Br.default_tty_ops),Br.register(y.makedev(6,0),Br.default_tty1_ops),y.mkdev("/dev/tty",y.makedev(5,0)),y.mkdev("/dev/tty1",y.makedev(6,0));var u=Er();y.createDevice("/dev","random",u),y.createDevice("/dev","urandom",u),y.mkdir("/dev/shm"),y.mkdir("/dev/shm/tmp")},createSpecialDirectories:function(){y.mkdir("/proc");var u=y.mkdir("/proc/self");y.mkdir("/proc/self/fd"),y.mount({mount:function(){var I=y.createNode(u,"fd",16895,73);return I.node_ops={lookup:function(B,S){var R=+S,O=y.getStream(R);if(!O)throw new y.ErrnoError(8);var T={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:function(){return O.path}}};return T.parent=T,T}},I}},{},"/proc/self/fd")},createStandardStreams:function(){t.stdin?y.createDevice("/dev","stdin",t.stdin):y.symlink("/dev/tty","/dev/stdin"),t.stdout?y.createDevice("/dev","stdout",null,t.stdout):y.symlink("/dev/tty","/dev/stdout"),t.stderr?y.createDevice("/dev","stderr",null,t.stderr):y.symlink("/dev/tty1","/dev/stderr");var u=y.open("/dev/stdin",0),I=y.open("/dev/stdout",1),B=y.open("/dev/stderr",1)},ensureErrnoError:function(){y.ErrnoError||(y.ErrnoError=function(I,B){this.node=B,this.setErrno=function(S){this.errno=S},this.setErrno(I),this.message="FS error"},y.ErrnoError.prototype=new Error,y.ErrnoError.prototype.constructor=y.ErrnoError,[44].forEach(function(u){y.genericErrors[u]=new y.ErrnoError(u),y.genericErrors[u].stack=""}))},staticInit:function(){y.ensureErrnoError(),y.nameTable=new Array(4096),y.mount(AA,{},"/"),y.createDefaultDirectories(),y.createDefaultDevices(),y.createSpecialDirectories(),y.filesystems={MEMFS:AA,NODEFS:He}},init:function(u,I,B){y.init.initialized=!0,y.ensureErrnoError(),t.stdin=u||t.stdin,t.stdout=I||t.stdout,t.stderr=B||t.stderr,y.createStandardStreams()},quit:function(){y.init.initialized=!1;var u=t._fflush;u&&u(0);for(var I=0;Ithis.length-1||Je<0)){var Oe=Je%this.chunkSize,uA=Je/this.chunkSize|0;return this.getter(uA)[Oe]}},O.prototype.setDataGetter=function(Je){this.getter=Je},O.prototype.cacheLength=function(){var Je=new XMLHttpRequest;if(Je.open("HEAD",B,!1),Je.send(null),!(Je.status>=200&&Je.status<300||Je.status===304))throw new Error("Couldn't load "+B+". Status: "+Je.status);var Oe=Number(Je.getResponseHeader("Content-length")),uA,nt=(uA=Je.getResponseHeader("Accept-Ranges"))&&uA==="bytes",Qr=(uA=Je.getResponseHeader("Content-Encoding"))&&uA==="gzip",kt=1024*1024;nt||(kt=Oe);var kn=function(Yr,vn){if(Yr>vn)throw new Error("invalid range ("+Yr+", "+vn+") or no bytes requested!");if(vn>Oe-1)throw new Error("only "+Oe+" bytes available! programmer error!");var ht=new XMLHttpRequest;if(ht.open("GET",B,!1),Oe!==kt&&ht.setRequestHeader("Range","bytes="+Yr+"-"+vn),typeof Uint8Array<"u"&&(ht.responseType="arraybuffer"),ht.overrideMimeType&&ht.overrideMimeType("text/plain; charset=x-user-defined"),ht.send(null),!(ht.status>=200&&ht.status<300||ht.status===304))throw new Error("Couldn't load "+B+". Status: "+ht.status);return ht.response!==void 0?new Uint8Array(ht.response||[]):pi(ht.responseText||"",!0)},wt=this;wt.setDataGetter(function(Yr){var vn=Yr*kt,ht=(Yr+1)*kt-1;if(ht=Math.min(ht,Oe-1),typeof wt.chunks[Yr]>"u"&&(wt.chunks[Yr]=kn(vn,ht)),typeof wt.chunks[Yr]>"u")throw new Error("doXHR failed!");return wt.chunks[Yr]}),(Qr||!Oe)&&(kt=Oe=1,Oe=this.getter(0).length,kt=Oe,K("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=Oe,this._chunkSize=kt,this.lengthKnown=!0},typeof XMLHttpRequest<"u"){if(!l)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var T=new O;Object.defineProperties(T,{length:{get:function(){return this.lengthKnown||this.cacheLength(),this._length}},chunkSize:{get:function(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}});var $={isDevice:!1,contents:T}}else var $={isDevice:!1,url:B};var Ie=y.createFile(u,I,$,S,R);$.contents?Ie.contents=$.contents:$.url&&(Ie.contents=null,Ie.url=$.url),Object.defineProperties(Ie,{usedBytes:{get:function(){return this.contents.length}}});var Ue={},Ne=Object.keys(Ie.stream_ops);return Ne.forEach(function(Y){var Je=Ie.stream_ops[Y];Ue[Y]=function(){return y.forceLoadFile(Ie),Je.apply(null,arguments)}}),Ue.read=function(Je,Oe,uA,nt,Qr){y.forceLoadFile(Ie);var kt=Je.node.contents;if(Qr>=kt.length)return 0;var kn=Math.min(kt.length-Qr,nt);if(kt.slice)for(var wt=0;wt>2)*4,S.dev),Ze((B+4>>2)*4,0),Ze((B+8>>2)*4,S.ino),Ze((B+12>>2)*4,S.mode),Ze((B+16>>2)*4,S.nlink),Ze((B+20>>2)*4,S.uid),Ze((B+24>>2)*4,S.gid),Ze((B+28>>2)*4,S.rdev),Ze((B+32>>2)*4,0),bt=[S.size>>>0,(JA=S.size,+Math.abs(JA)>=1?JA>0?(Math.min(+Math.floor(JA/4294967296),4294967295)|0)>>>0:~~+Math.ceil((JA-+(~~JA>>>0))/4294967296)>>>0:0)],Ze((B+40>>2)*4,bt[0]),Ze((B+44>>2)*4,bt[1]),Ze((B+48>>2)*4,4096),Ze((B+52>>2)*4,S.blocks),Ze((B+56>>2)*4,S.atime.getTime()/1e3|0),Ze((B+60>>2)*4,0),Ze((B+64>>2)*4,S.mtime.getTime()/1e3|0),Ze((B+68>>2)*4,0),Ze((B+72>>2)*4,S.ctime.getTime()/1e3|0),Ze((B+76>>2)*4,0),bt=[S.ino>>>0,(JA=S.ino,+Math.abs(JA)>=1?JA>0?(Math.min(+Math.floor(JA/4294967296),4294967295)|0)>>>0:~~+Math.ceil((JA-+(~~JA>>>0))/4294967296)>>>0:0)],Ze((B+80>>2)*4,bt[0]),Ze((B+84>>2)*4,bt[1]),0},doMsync:function(u,I,B,S,R){var O=U.slice(u,u+B);y.msync(I,O,R,B,S)},doMkdir:function(u,I){return u=lA.normalize(u),u[u.length-1]==="/"&&(u=u.substr(0,u.length-1)),y.mkdir(u,I,0),0},doMknod:function(u,I,B){switch(I&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}return y.mknod(u,I,B),0},doReadlink:function(u,I,B){if(B<=0)return-28;var S=y.readlink(u),R=Math.min(B,Ye(S)),O=Z[I+R];return be(S,I,B+1),Z[I+R]=O,R},doAccess:function(u,I){if(I&-8)return-28;var B,S=y.lookupPath(u,{follow:!0});if(B=S.node,!B)return-44;var R="";return I&4&&(R+="r"),I&2&&(R+="w"),I&1&&(R+="x"),R&&y.nodePermissions(B,R)?-2:0},doDup:function(u,I,B){var S=y.getStream(B);return S&&y.close(S),y.open(u,I,0,B,B).fd},doReadv:function(u,I,B,S){for(var R=0,O=0;O>2)*4),$=at((I+(O*8+4)>>2)*4),Ie=y.read(u,Z,T,$,S);if(Ie<0)return-1;if(R+=Ie,Ie<$)break}return R},doWritev:function(u,I,B,S){for(var R=0,O=0;O>2)*4),$=at((I+(O*8+4)>>2)*4),Ie=y.write(u,Z,T,$,S);if(Ie<0)return-1;R+=Ie}return R},varargs:void 0,get:function(){dA.varargs+=4;var u=at((dA.varargs-4>>2)*4);return u},getStr:function(u){var I=pe(u);return I},getStreamFromFD:function(u){var I=y.getStream(u);if(!I)throw new y.ErrnoError(8);return I},get64:function(u,I){return u}};function v(u,I){try{return u=dA.getStr(u),y.chmod(u,I),0}catch(B){return(typeof y>"u"||!(B instanceof y.ErrnoError))&&HA(B),-B.errno}}function sA(u){return Ze((_B()>>2)*4,u),u}function us(u,I,B){dA.varargs=B;try{var S=dA.getStreamFromFD(u);switch(I){case 0:{var R=dA.get();if(R<0)return-28;var O;return O=y.open(S.path,S.flags,0,R),O.fd}case 1:case 2:return 0;case 3:return S.flags;case 4:{var R=dA.get();return S.flags|=R,0}case 12:{var R=dA.get(),T=0;return il((R+T>>1)*2,2),0}case 13:case 14:return 0;case 16:case 8:return-28;case 9:return sA(28),-1;default:return-28}}catch($){return(typeof y>"u"||!($ instanceof y.ErrnoError))&&HA($),-$.errno}}function _t(u,I){try{var B=dA.getStreamFromFD(u);return dA.doStat(y.stat,B.path,I)}catch(S){return(typeof y>"u"||!(S instanceof y.ErrnoError))&&HA(S),-S.errno}}function mo(u,I,B){dA.varargs=B;try{var S=dA.getStreamFromFD(u);switch(I){case 21509:case 21505:return S.tty?0:-59;case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:return S.tty?0:-59;case 21519:{if(!S.tty)return-59;var R=dA.get();return Ze((R>>2)*4,0),0}case 21520:return S.tty?-28:-59;case 21531:{var R=dA.get();return y.ioctl(S,I,R)}case 21523:return S.tty?0:-59;case 21524:return S.tty?0:-59;default:HA("bad ioctl syscall "+I)}}catch(O){return(typeof y>"u"||!(O instanceof y.ErrnoError))&&HA(O),-O.errno}}function Re(u,I,B){dA.varargs=B;try{var S=dA.getStr(u),R=B?dA.get():0,O=y.open(S,I,R);return O.fd}catch(T){return(typeof y>"u"||!(T instanceof y.ErrnoError))&&HA(T),-T.errno}}function yn(u,I){try{return u=dA.getStr(u),I=dA.getStr(I),y.rename(u,I),0}catch(B){return(typeof y>"u"||!(B instanceof y.ErrnoError))&&HA(B),-B.errno}}function Va(u){try{return u=dA.getStr(u),y.rmdir(u),0}catch(I){return(typeof y>"u"||!(I instanceof y.ErrnoError))&&HA(I),-I.errno}}function pC(u,I){try{return u=dA.getStr(u),dA.doStat(y.stat,u,I)}catch(B){return(typeof y>"u"||!(B instanceof y.ErrnoError))&&HA(B),-B.errno}}function sl(u){try{return u=dA.getStr(u),y.unlink(u),0}catch(I){return(typeof y>"u"||!(I instanceof y.ErrnoError))&&HA(I),-I.errno}}function QC(u,I,B){U.copyWithin(u,I,I+B)}function UA(u){try{return o.grow(u-mA.byteLength+65535>>>16),ye(o.buffer),1}catch{}}function pr(u){var I=U.length;u=u>>>0;var B=2147483648;if(u>B)return!1;for(var S=1;S<=4;S*=2){var R=I*(1+.2/S);R=Math.min(R,u+100663296);var O=Math.min(B,de(Math.max(u,R),65536)),T=UA(O);if(T)return!0}return!1}function ol(u){try{var I=dA.getStreamFromFD(u);return y.close(I),0}catch(B){return(typeof y>"u"||!(B instanceof y.ErrnoError))&&HA(B),B.errno}}function al(u,I){try{var B=dA.getStreamFromFD(u),S=B.tty?2:y.isDir(B.mode)?3:y.isLink(B.mode)?7:4;return Z[I>>0]=S,0}catch(R){return(typeof y>"u"||!(R instanceof y.ErrnoError))&&HA(R),R.errno}}function _i(u,I,B,S){try{var R=dA.getStreamFromFD(u),O=dA.doReadv(R,I,B);return Ze((S>>2)*4,O),0}catch(T){return(typeof y>"u"||!(T instanceof y.ErrnoError))&&HA(T),T.errno}}function Xa(u,I,B,S,R){try{var O=dA.getStreamFromFD(u),T=4294967296,$=B*T+(I>>>0),Ie=9007199254740992;return $<=-Ie||$>=Ie?-61:(y.llseek(O,$,S),bt=[O.position>>>0,(JA=O.position,+Math.abs(JA)>=1?JA>0?(Math.min(+Math.floor(JA/4294967296),4294967295)|0)>>>0:~~+Math.ceil((JA-+(~~JA>>>0))/4294967296)>>>0:0)],Ze((R>>2)*4,bt[0]),Ze((R+4>>2)*4,bt[1]),O.getdents&&$===0&&S===0&&(O.getdents=null),0)}catch(Ue){return(typeof y>"u"||!(Ue instanceof y.ErrnoError))&&HA(Ue),Ue.errno}}function Bi(u,I,B,S){try{var R=dA.getStreamFromFD(u),O=dA.doWritev(R,I,B);return Ze((S>>2)*4,O),0}catch(T){return(typeof y>"u"||!(T instanceof y.ErrnoError))&&HA(T),T.errno}}function _e(u){X(u)}function gl(u){var I=Date.now()/1e3|0;return u&&Ze((u>>2)*4,I),I}function mn(){if(mn.called)return;mn.called=!0;var u=new Date().getFullYear(),I=new Date(u,0,1),B=new Date(u,6,1),S=I.getTimezoneOffset(),R=B.getTimezoneOffset(),O=Math.max(S,R);Ze((he()>>2)*4,O*60),Ze((Q()>>2)*4,Number(S!=R));function T(Y){var Je=Y.toTimeString().match(/\(([A-Za-z ]+)\)$/);return Je?Je[1]:"GMT"}var $=T(I),Ie=T(B),Ue=Ve($),Ne=Ve(Ie);R>2)*4,Ue),Ze((Fo()+4>>2)*4,Ne)):(Ze((Fo()>>2)*4,Ne),Ze((Fo()+4>>2)*4,Ue))}function Za(u){mn();var I=Date.UTC(at((u+20>>2)*4)+1900,at((u+16>>2)*4),at((u+12>>2)*4),at((u+8>>2)*4),at((u+4>>2)*4),at((u>>2)*4),0),B=new Date(I);Ze((u+24>>2)*4,B.getUTCDay());var S=Date.UTC(B.getUTCFullYear(),0,1,0,0,0,0),R=(B.getTime()-S)/(1e3*60*60*24)|0;return Ze((u+28>>2)*4,R),B.getTime()/1e3|0}var wo=function(u,I,B,S){u||(u=this),this.parent=u,this.mount=u.mount,this.mounted=null,this.id=y.nextInode++,this.name=I,this.mode=B,this.node_ops={},this.stream_ops={},this.rdev=S},wn=365,Dn=146;if(Object.defineProperties(wo.prototype,{read:{get:function(){return(this.mode&wn)===wn},set:function(u){u?this.mode|=wn:this.mode&=~wn}},write:{get:function(){return(this.mode&Dn)===Dn},set:function(u){u?this.mode|=Dn:this.mode&=~Dn}},isFolder:{get:function(){return y.isDir(this.mode)}},isDevice:{get:function(){return y.isChrdev(this.mode)}}}),y.FSNode=wo,y.staticInit(),C){var tA=sb,Sn=require("path");He.staticInit()}if(C){var Fn=function(u){return function(){try{return u.apply(this,arguments)}catch(I){throw I.code?new y.ErrnoError(Yi[I.code]):I}}},Hi=Object.assign({},y);for(var qr in za)y[qr]=Fn(za[qr])}else throw new Error("NODERAWFS is currently only supported on Node.js environment.");function pi(u,I,B){var S=B>0?B:Ye(u)+1,R=new Array(S),O=me(u,R,0,R.length);return I&&(R.length=O),R}var $a=typeof atob=="function"?atob:function(u){var I="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",B="",S,R,O,T,$,Ie,Ue,Ne=0;u=u.replace(/[^A-Za-z0-9\+\/\=]/g,"");do T=I.indexOf(u.charAt(Ne++)),$=I.indexOf(u.charAt(Ne++)),Ie=I.indexOf(u.charAt(Ne++)),Ue=I.indexOf(u.charAt(Ne++)),S=T<<2|$>>4,R=($&15)<<4|Ie>>2,O=(Ie&3)<<6|Ue,B=B+String.fromCharCode(S),Ie!==64&&(B=B+String.fromCharCode(R)),Ue!==64&&(B=B+String.fromCharCode(O));while(Ne0||(Io(),Ur>0))return;function I(){Ae||(Ae=!0,t.calledRun=!0,!H&&(Al(),r(t),t.onRuntimeInitialized&&t.onRuntimeInitialized(),Eo()))}t.setStatus?(t.setStatus("Running..."),setTimeout(function(){setTimeout(function(){t.setStatus("")},1),I()},1)):I()}if(t.run=fs,t.preInit)for(typeof t.preInit=="function"&&(t.preInit=[t.preInit]);t.preInit.length>0;)t.preInit.pop()();return fs(),e}}();typeof nh=="object"&&typeof Jp=="object"?Jp.exports=Hp:typeof define=="function"&&define.amd?define([],function(){return Hp}):typeof nh=="object"&&(nh.createModule=Hp)});var gb=p(vo=>{"use strict";Object.defineProperty(vo,"__esModule",{value:!0});vo.makeInterface=vo.Errors=void 0;var Mn=["number","number"],ab;(function(A){A[A.ZIP_ER_OK=0]="ZIP_ER_OK",A[A.ZIP_ER_MULTIDISK=1]="ZIP_ER_MULTIDISK",A[A.ZIP_ER_RENAME=2]="ZIP_ER_RENAME",A[A.ZIP_ER_CLOSE=3]="ZIP_ER_CLOSE",A[A.ZIP_ER_SEEK=4]="ZIP_ER_SEEK",A[A.ZIP_ER_READ=5]="ZIP_ER_READ",A[A.ZIP_ER_WRITE=6]="ZIP_ER_WRITE",A[A.ZIP_ER_CRC=7]="ZIP_ER_CRC",A[A.ZIP_ER_ZIPCLOSED=8]="ZIP_ER_ZIPCLOSED",A[A.ZIP_ER_NOENT=9]="ZIP_ER_NOENT",A[A.ZIP_ER_EXISTS=10]="ZIP_ER_EXISTS",A[A.ZIP_ER_OPEN=11]="ZIP_ER_OPEN",A[A.ZIP_ER_TMPOPEN=12]="ZIP_ER_TMPOPEN",A[A.ZIP_ER_ZLIB=13]="ZIP_ER_ZLIB",A[A.ZIP_ER_MEMORY=14]="ZIP_ER_MEMORY",A[A.ZIP_ER_CHANGED=15]="ZIP_ER_CHANGED",A[A.ZIP_ER_COMPNOTSUPP=16]="ZIP_ER_COMPNOTSUPP",A[A.ZIP_ER_EOF=17]="ZIP_ER_EOF",A[A.ZIP_ER_INVAL=18]="ZIP_ER_INVAL",A[A.ZIP_ER_NOZIP=19]="ZIP_ER_NOZIP",A[A.ZIP_ER_INTERNAL=20]="ZIP_ER_INTERNAL",A[A.ZIP_ER_INCONS=21]="ZIP_ER_INCONS",A[A.ZIP_ER_REMOVE=22]="ZIP_ER_REMOVE",A[A.ZIP_ER_DELETED=23]="ZIP_ER_DELETED",A[A.ZIP_ER_ENCRNOTSUPP=24]="ZIP_ER_ENCRNOTSUPP",A[A.ZIP_ER_RDONLY=25]="ZIP_ER_RDONLY",A[A.ZIP_ER_NOPASSWD=26]="ZIP_ER_NOPASSWD",A[A.ZIP_ER_WRONGPASSWD=27]="ZIP_ER_WRONGPASSWD",A[A.ZIP_ER_OPNOTSUPP=28]="ZIP_ER_OPNOTSUPP",A[A.ZIP_ER_INUSE=29]="ZIP_ER_INUSE",A[A.ZIP_ER_TELL=30]="ZIP_ER_TELL",A[A.ZIP_ER_COMPRESSED_DATA=31]="ZIP_ER_COMPRESSED_DATA"})(ab=vo.Errors||(vo.Errors={}));var N6=A=>({get HEAP8(){return A.HEAP8},get HEAPU8(){return A.HEAPU8},errors:ab,SEEK_SET:0,SEEK_CUR:1,SEEK_END:2,ZIP_CHECKCONS:4,ZIP_CREATE:1,ZIP_EXCL:2,ZIP_TRUNCATE:8,ZIP_RDONLY:16,ZIP_FL_OVERWRITE:8192,ZIP_FL_COMPRESSED:4,ZIP_OPSYS_DOS:0,ZIP_OPSYS_AMIGA:1,ZIP_OPSYS_OPENVMS:2,ZIP_OPSYS_UNIX:3,ZIP_OPSYS_VM_CMS:4,ZIP_OPSYS_ATARI_ST:5,ZIP_OPSYS_OS_2:6,ZIP_OPSYS_MACINTOSH:7,ZIP_OPSYS_Z_SYSTEM:8,ZIP_OPSYS_CPM:9,ZIP_OPSYS_WINDOWS_NTFS:10,ZIP_OPSYS_MVS:11,ZIP_OPSYS_VSE:12,ZIP_OPSYS_ACORN_RISC:13,ZIP_OPSYS_VFAT:14,ZIP_OPSYS_ALTERNATE_MVS:15,ZIP_OPSYS_BEOS:16,ZIP_OPSYS_TANDEM:17,ZIP_OPSYS_OS_400:18,ZIP_OPSYS_OS_X:19,ZIP_CM_DEFAULT:-1,ZIP_CM_STORE:0,ZIP_CM_DEFLATE:8,uint08S:A._malloc(1),uint16S:A._malloc(2),uint32S:A._malloc(4),uint64S:A._malloc(8),malloc:A._malloc,free:A._free,getValue:A.getValue,open:A.cwrap("zip_open","number",["string","number","number"]),openFromSource:A.cwrap("zip_open_from_source","number",["number","number","number"]),close:A.cwrap("zip_close","number",["number"]),discard:A.cwrap("zip_discard",null,["number"]),getError:A.cwrap("zip_get_error","number",["number"]),getName:A.cwrap("zip_get_name","string",["number","number","number"]),getNumEntries:A.cwrap("zip_get_num_entries","number",["number","number"]),delete:A.cwrap("zip_delete","number",["number","number"]),stat:A.cwrap("zip_stat","number",["number","string","number","number"]),statIndex:A.cwrap("zip_stat_index","number",["number",...Mn,"number","number"]),fopen:A.cwrap("zip_fopen","number",["number","string","number"]),fopenIndex:A.cwrap("zip_fopen_index","number",["number",...Mn,"number"]),fread:A.cwrap("zip_fread","number",["number","number","number","number"]),fclose:A.cwrap("zip_fclose","number",["number"]),dir:{add:A.cwrap("zip_dir_add","number",["number","string"])},file:{add:A.cwrap("zip_file_add","number",["number","string","number","number"]),getError:A.cwrap("zip_file_get_error","number",["number"]),getExternalAttributes:A.cwrap("zip_file_get_external_attributes","number",["number",...Mn,"number","number","number"]),setExternalAttributes:A.cwrap("zip_file_set_external_attributes","number",["number",...Mn,"number","number","number"]),setMtime:A.cwrap("zip_file_set_mtime","number",["number",...Mn,"number","number"]),setCompression:A.cwrap("zip_set_file_compression","number",["number",...Mn,"number","number"])},ext:{countSymlinks:A.cwrap("zip_ext_count_symlinks","number",["number"])},error:{initWithCode:A.cwrap("zip_error_init_with_code",null,["number","number"]),strerror:A.cwrap("zip_error_strerror","string",["number"])},name:{locate:A.cwrap("zip_name_locate","number",["number","string","number"])},source:{fromUnattachedBuffer:A.cwrap("zip_source_buffer_create","number",["number",...Mn,"number","number"]),fromBuffer:A.cwrap("zip_source_buffer","number",["number","number",...Mn,"number"]),free:A.cwrap("zip_source_free",null,["number"]),keep:A.cwrap("zip_source_keep",null,["number"]),open:A.cwrap("zip_source_open","number",["number"]),close:A.cwrap("zip_source_close","number",["number"]),seek:A.cwrap("zip_source_seek","number",["number",...Mn,"number"]),tell:A.cwrap("zip_source_tell","number",["number"]),read:A.cwrap("zip_source_read","number",["number","number","number"]),error:A.cwrap("zip_source_error","number",["number"]),setMtime:A.cwrap("zip_source_set_mtime","number",["number","number"])},struct:{stat:A.cwrap("zipstruct_stat","number",[]),statS:A.cwrap("zipstruct_statS","number",[]),statName:A.cwrap("zipstruct_stat_name","string",["number"]),statIndex:A.cwrap("zipstruct_stat_index","number",["number"]),statSize:A.cwrap("zipstruct_stat_size","number",["number"]),statCompSize:A.cwrap("zipstruct_stat_comp_size","number",["number"]),statCompMethod:A.cwrap("zipstruct_stat_comp_method","number",["number"]),statMtime:A.cwrap("zipstruct_stat_mtime","number",["number"]),statCrc:A.cwrap("zipstruct_stat_crc","number",["number"]),error:A.cwrap("zipstruct_error","number",[]),errorS:A.cwrap("zipstruct_errorS","number",[]),errorCodeZip:A.cwrap("zipstruct_error_code_zip","number",["number"])}});vo.makeInterface=N6});var lb=p(Cg=>{"use strict";Object.defineProperty(Cg,"__esModule",{value:!0});Cg.ZipOpenFS=Cg.getArchivePart=void 0;var M6=BA(),jp=BA(),cb=ds();function Wp(A,e){let t=A.indexOf(e);if(t<=0)return null;let r=t;for(;t>=0&&(r=t+e.length,A[r]!==jp.ppath.sep);){if(A[t-1]===jp.ppath.sep)return null;t=A.indexOf(e,r)}return A.length>r&&A[r]!==jp.ppath.sep?null:A.slice(0,r)}Cg.getArchivePart=Wp;var El=class extends M6.MountFS{static async openPromise(e,t){let r=new El(t);try{return await e(r)}finally{r.saveAndClose()}}constructor(e={}){let t=e.fileExtensions,r=e.readOnlyArchives,i=typeof t>"u"?a=>Wp(a,".zip"):a=>{for(let g of t){let c=Wp(a,g);if(c)return c}return null},n=(a,g)=>new cb.ZipFS(g,{baseFs:a,readOnly:r,stats:a.statSync(g)}),s=async(a,g)=>{let c={baseFs:a,readOnly:r,stats:await a.statPromise(g)};return()=>new cb.ZipFS(g,c)};super({...e,factorySync:n,factoryPromise:s,getMountPoint:i})}};Cg.ZipOpenFS=El});var Zp=p(Fi=>{"use strict";Object.defineProperty(Fi,"__esModule",{value:!0});Fi.ZipFS=Fi.LibzipError=Fi.makeEmptyArchive=Fi.DEFAULT_COMPRESSION_LEVEL=void 0;var L6=nA(),P6=BA(),O6=BA(),K6=BA(),zp=BA(),Me=BA(),yA=BA(),ir=require("fs"),ub=require("stream"),U6=require("util"),Cb=L6.__importDefault(require("zlib")),T6=_p();Fi.DEFAULT_COMPRESSION_LEVEL="mixed";function q6(A){if(typeof A=="string"&&String(+A)===A)return+A;if(typeof A=="number"&&Number.isFinite(A))return A<0?Date.now()/1e3:A;if(U6.types.isDate(A))return A.getTime()/1e3;throw new Error("Invalid time")}function Vp(){return Buffer.from([80,75,5,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0])}Fi.makeEmptyArchive=Vp;var sh=class extends Error{constructor(e,t){super(e),this.name="Libzip Error",this.code=t}};Fi.LibzipError=sh;var Xp=class extends P6.BasePortableFakeFS{constructor(e,t={}){super(),this.lzSource=null,this.listings=new Map,this.entries=new Map,this.fileSources=new Map,this.fds=new Map,this.nextFd=0,this.ready=!1,this.readOnly=!1;let r=t;if(this.level=typeof r.level<"u"?r.level:Fi.DEFAULT_COMPRESSION_LEVEL,e??(e=Vp()),typeof e=="string"){let{baseFs:s=new O6.NodeFS}=r;this.baseFs=s,this.path=e}else this.path=null,this.baseFs=null;if(t.stats)this.stats=t.stats;else if(typeof e=="string")try{this.stats=this.baseFs.statSync(e)}catch(s){if(s.code==="ENOENT"&&r.create)this.stats=Me.statUtils.makeDefaultStats();else throw s}else this.stats=Me.statUtils.makeDefaultStats();this.libzip=(0,T6.getInstance)();let i=this.libzip.malloc(4);try{let s=0;if(typeof e=="string"&&r.create&&(s|=this.libzip.ZIP_CREATE|this.libzip.ZIP_TRUNCATE),t.readOnly&&(s|=this.libzip.ZIP_RDONLY,this.readOnly=!0),typeof e=="string")this.zip=this.libzip.open(yA.npath.fromPortablePath(e),s,i);else{let a=this.allocateUnattachedSource(e);try{this.zip=this.libzip.openFromSource(a,s,i),this.lzSource=a}catch(g){throw this.libzip.source.free(a),g}}if(this.zip===0){let a=this.libzip.struct.errorS();throw this.libzip.error.initWithCode(a,this.libzip.getValue(i,"i32")),this.makeLibzipError(a)}}finally{this.libzip.free(i)}this.listings.set(yA.PortablePath.root,new Set);let n=this.libzip.getNumEntries(this.zip,0);for(let s=0;se)throw new Error("Overread");let i=this.libzip.HEAPU8.subarray(t,t+e);return Buffer.from(i)}finally{this.libzip.free(t)}}finally{this.libzip.source.close(this.lzSource),this.libzip.source.free(this.lzSource),this.ready=!1}}prepareClose(){if(!this.ready)throw Me.errors.EBUSY("archive closed, close");(0,zp.unwatchAllFiles)(this)}saveAndClose(){if(!this.path||!this.baseFs)throw new Error("ZipFS cannot be saved and must be discarded when loaded from a buffer");if(this.prepareClose(),this.readOnly){this.discardAndClose();return}let e=this.baseFs.existsSync(this.path)||this.stats.mode===Me.statUtils.DEFAULT_MODE?void 0:this.stats.mode;if(this.entries.size===0)this.discardAndClose(),this.baseFs.writeFileSync(this.path,Vp(),{mode:e});else{if(this.libzip.close(this.zip)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));typeof e<"u"&&this.baseFs.chmodSync(this.path,e)}this.ready=!1}discardAndClose(){this.prepareClose(),this.libzip.discard(this.zip),this.ready=!1}resolve(e){return yA.ppath.resolve(yA.PortablePath.root,e)}async openPromise(e,t,r){return this.openSync(e,t,r)}openSync(e,t,r){let i=this.nextFd++;return this.fds.set(i,{cursor:0,p:e}),i}hasOpenFileHandles(){return!!this.fds.size}async opendirPromise(e,t){return this.opendirSync(e,t)}opendirSync(e,t={}){let r=this.resolveFilename(`opendir '${e}'`,e);if(!this.entries.has(r)&&!this.listings.has(r))throw Me.errors.ENOENT(`opendir '${e}'`);let i=this.listings.get(r);if(!i)throw Me.errors.ENOTDIR(`opendir '${e}'`);let n=[...i],s=this.openSync(r,"r"),a=()=>{this.closeSync(s)};return(0,K6.opendir)(this,r,n,{onClose:a})}async readPromise(e,t,r,i,n){return this.readSync(e,t,r,i,n)}readSync(e,t,r=0,i=t.byteLength,n=-1){let s=this.fds.get(e);if(typeof s>"u")throw Me.errors.EBADF("read");let a=n===-1||n===null?s.cursor:n,g=this.readFileSync(s.p);g.copy(t,r,a,a+i);let c=Math.max(0,Math.min(g.length-a,i));return(n===-1||n===null)&&(s.cursor+=c),c}async writePromise(e,t,r,i,n){return typeof t=="string"?this.writeSync(e,t,n):this.writeSync(e,t,r,i,n)}writeSync(e,t,r,i,n){throw typeof this.fds.get(e)>"u"?Me.errors.EBADF("read"):new Error("Unimplemented")}async closePromise(e){return this.closeSync(e)}closeSync(e){if(typeof this.fds.get(e)>"u")throw Me.errors.EBADF("read");this.fds.delete(e)}createReadStream(e,{encoding:t}={}){if(e===null)throw new Error("Unimplemented");let r=this.openSync(e,"r"),i=Object.assign(new ub.PassThrough({emitClose:!0,autoDestroy:!0,destroy:(s,a)=>{clearImmediate(n),this.closeSync(r),a(s)}}),{close(){i.destroy()},bytesRead:0,path:e,pending:!1}),n=setImmediate(async()=>{try{let s=await this.readFilePromise(e,t);i.bytesRead=s.length,i.end(s)}catch(s){i.destroy(s)}});return i}createWriteStream(e,{encoding:t}={}){if(this.readOnly)throw Me.errors.EROFS(`open '${e}'`);if(e===null)throw new Error("Unimplemented");let r=[],i=this.openSync(e,"w"),n=Object.assign(new ub.PassThrough({autoDestroy:!0,emitClose:!0,destroy:(s,a)=>{try{s?a(s):(this.writeFileSync(e,Buffer.concat(r),t),a(null))}catch(g){a(g)}finally{this.closeSync(i)}}}),{close(){n.destroy()},bytesWritten:0,path:e,pending:!1});return n.on("data",s=>{let a=Buffer.from(s);n.bytesWritten+=a.length,r.push(a)}),n}async realpathPromise(e){return this.realpathSync(e)}realpathSync(e){let t=this.resolveFilename(`lstat '${e}'`,e);if(!this.entries.has(t)&&!this.listings.has(t))throw Me.errors.ENOENT(`lstat '${e}'`);return t}async existsPromise(e){return this.existsSync(e)}existsSync(e){if(!this.ready)throw Me.errors.EBUSY(`archive closed, existsSync '${e}'`);if(this.symlinkCount===0){let r=yA.ppath.resolve(yA.PortablePath.root,e);return this.entries.has(r)||this.listings.has(r)}let t;try{t=this.resolveFilename(`stat '${e}'`,e,void 0,!1)}catch{return!1}return t===void 0?!1:this.entries.has(t)||this.listings.has(t)}async accessPromise(e,t){return this.accessSync(e,t)}accessSync(e,t=ir.constants.F_OK){let r=this.resolveFilename(`access '${e}'`,e);if(!this.entries.has(r)&&!this.listings.has(r))throw Me.errors.ENOENT(`access '${e}'`);if(this.readOnly&&t&ir.constants.W_OK)throw Me.errors.EROFS(`access '${e}'`)}async statPromise(e,t={bigint:!1}){return t.bigint?this.statSync(e,{bigint:!0}):this.statSync(e)}statSync(e,t={bigint:!1,throwIfNoEntry:!0}){let r=this.resolveFilename(`stat '${e}'`,e,void 0,t.throwIfNoEntry);if(r!==void 0){if(!this.entries.has(r)&&!this.listings.has(r)){if(t.throwIfNoEntry===!1)return;throw Me.errors.ENOENT(`stat '${e}'`)}if(e[e.length-1]==="/"&&!this.listings.has(r))throw Me.errors.ENOTDIR(`stat '${e}'`);return this.statImpl(`stat '${e}'`,r,t)}}async fstatPromise(e,t){return this.fstatSync(e,t)}fstatSync(e,t){let r=this.fds.get(e);if(typeof r>"u")throw Me.errors.EBADF("fstatSync");let{p:i}=r,n=this.resolveFilename(`stat '${i}'`,i);if(!this.entries.has(n)&&!this.listings.has(n))throw Me.errors.ENOENT(`stat '${i}'`);if(i[i.length-1]==="/"&&!this.listings.has(n))throw Me.errors.ENOTDIR(`stat '${i}'`);return this.statImpl(`fstat '${i}'`,n,t)}async lstatPromise(e,t={bigint:!1}){return t.bigint?this.lstatSync(e,{bigint:!0}):this.lstatSync(e)}lstatSync(e,t={bigint:!1,throwIfNoEntry:!0}){let r=this.resolveFilename(`lstat '${e}'`,e,!1,t.throwIfNoEntry);if(r!==void 0){if(!this.entries.has(r)&&!this.listings.has(r)){if(t.throwIfNoEntry===!1)return;throw Me.errors.ENOENT(`lstat '${e}'`)}if(e[e.length-1]==="/"&&!this.listings.has(r))throw Me.errors.ENOTDIR(`lstat '${e}'`);return this.statImpl(`lstat '${e}'`,r,t)}}statImpl(e,t,r={}){let i=this.entries.get(t);if(typeof i<"u"){let n=this.libzip.struct.statS();if(this.libzip.statIndex(this.zip,i,0,0,n)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));let a=this.stats.uid,g=this.stats.gid,c=this.libzip.struct.statSize(n)>>>0,l=512,C=Math.ceil(c/l),f=(this.libzip.struct.statMtime(n)>>>0)*1e3,E=f,m=f,w=f,D=new Date(E),L=new Date(m),K=new Date(w),_=new Date(f),le=this.listings.has(t)?ir.constants.S_IFDIR:this.isSymbolicLink(i)?ir.constants.S_IFLNK:ir.constants.S_IFREG,re=le===ir.constants.S_IFDIR?493:420,J=le|this.getUnixMode(i,re)&511,X=this.libzip.struct.statCrc(n),ie=Object.assign(new Me.statUtils.StatEntry,{uid:a,gid:g,size:c,blksize:l,blocks:C,atime:D,birthtime:L,ctime:K,mtime:_,atimeMs:E,birthtimeMs:m,ctimeMs:w,mtimeMs:f,mode:J,crc:X});return r.bigint===!0?Me.statUtils.convertToBigIntStats(ie):ie}if(this.listings.has(t)){let n=this.stats.uid,s=this.stats.gid,a=0,g=512,c=0,l=this.stats.mtimeMs,C=this.stats.mtimeMs,f=this.stats.mtimeMs,E=this.stats.mtimeMs,m=new Date(l),w=new Date(C),D=new Date(f),L=new Date(E),K=ir.constants.S_IFDIR|493,_=0,le=Object.assign(new Me.statUtils.StatEntry,{uid:n,gid:s,size:a,blksize:g,blocks:c,atime:m,birthtime:w,ctime:D,mtime:L,atimeMs:l,birthtimeMs:C,ctimeMs:f,mtimeMs:E,mode:K,crc:_});return r.bigint===!0?Me.statUtils.convertToBigIntStats(le):le}throw new Error("Unreachable")}getUnixMode(e,t){if(this.libzip.file.getExternalAttributes(this.zip,e,0,0,this.libzip.uint08S,this.libzip.uint32S)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));return this.libzip.getValue(this.libzip.uint08S,"i8")>>>0!==this.libzip.ZIP_OPSYS_UNIX?t:this.libzip.getValue(this.libzip.uint32S,"i32")>>>16}registerListing(e){let t=this.listings.get(e);if(t)return t;this.registerListing(yA.ppath.dirname(e)).add(yA.ppath.basename(e));let i=new Set;return this.listings.set(e,i),i}registerEntry(e,t){this.registerListing(yA.ppath.dirname(e)).add(yA.ppath.basename(e)),this.entries.set(e,t)}unregisterListing(e){this.listings.delete(e);let t=this.listings.get(yA.ppath.dirname(e));t?.delete(yA.ppath.basename(e))}unregisterEntry(e){this.unregisterListing(e);let t=this.entries.get(e);this.entries.delete(e),!(typeof t>"u")&&(this.fileSources.delete(t),this.isSymbolicLink(t)&&this.symlinkCount--)}deleteEntry(e,t){if(this.unregisterEntry(e),this.libzip.delete(this.zip,t)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip))}resolveFilename(e,t,r=!0,i=!0){if(!this.ready)throw Me.errors.EBUSY(`archive closed, ${e}`);let n=yA.ppath.resolve(yA.PortablePath.root,t);if(n==="/")return yA.PortablePath.root;let s=this.entries.get(n);if(r&&s!==void 0)if(this.symlinkCount!==0&&this.isSymbolicLink(s)){let a=this.getFileSource(s).toString();return this.resolveFilename(e,yA.ppath.resolve(yA.ppath.dirname(n),a),!0,i)}else return n;for(;;){let a=this.resolveFilename(e,yA.ppath.dirname(n),!0,i);if(a===void 0)return a;let g=this.listings.has(a),c=this.entries.has(a);if(!g&&!c){if(i===!1)return;throw Me.errors.ENOENT(e)}if(!g)throw Me.errors.ENOTDIR(e);if(n=yA.ppath.resolve(a,yA.ppath.basename(n)),!r||this.symlinkCount===0)break;let l=this.libzip.name.locate(this.zip,n.slice(1),0);if(l===-1)break;if(this.isSymbolicLink(l)){let C=this.getFileSource(l).toString();n=yA.ppath.resolve(yA.ppath.dirname(n),C)}else break}return n}allocateBuffer(e){Buffer.isBuffer(e)||(e=Buffer.from(e));let t=this.libzip.malloc(e.byteLength);if(!t)throw new Error("Couldn't allocate enough memory");return new Uint8Array(this.libzip.HEAPU8.buffer,t,e.byteLength).set(e),{buffer:t,byteLength:e.byteLength}}allocateUnattachedSource(e){let t=this.libzip.struct.errorS(),{buffer:r,byteLength:i}=this.allocateBuffer(e),n=this.libzip.source.fromUnattachedBuffer(r,i,0,1,t);if(n===0)throw this.libzip.free(t),this.makeLibzipError(t);return n}allocateSource(e){let{buffer:t,byteLength:r}=this.allocateBuffer(e),i=this.libzip.source.fromBuffer(this.zip,t,r,0,1);if(i===0)throw this.libzip.free(t),this.makeLibzipError(this.libzip.getError(this.zip));return i}setFileSource(e,t){let r=Buffer.isBuffer(t)?t:Buffer.from(t),i=yA.ppath.relative(yA.PortablePath.root,e),n=this.allocateSource(t);try{let s=this.libzip.file.add(this.zip,i,n,this.libzip.ZIP_FL_OVERWRITE);if(s===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));if(this.level!=="mixed"){let a=this.level===0?this.libzip.ZIP_CM_STORE:this.libzip.ZIP_CM_DEFLATE;if(this.libzip.file.setCompression(this.zip,s,0,a,this.level)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip))}return this.fileSources.set(s,r),s}catch(s){throw this.libzip.source.free(n),s}}isSymbolicLink(e){if(this.symlinkCount===0)return!1;if(this.libzip.file.getExternalAttributes(this.zip,e,0,0,this.libzip.uint08S,this.libzip.uint32S)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));return this.libzip.getValue(this.libzip.uint08S,"i8")>>>0!==this.libzip.ZIP_OPSYS_UNIX?!1:(this.libzip.getValue(this.libzip.uint32S,"i32")>>>16&ir.constants.S_IFMT)===ir.constants.S_IFLNK}getFileSource(e,t={asyncDecompress:!1}){let r=this.fileSources.get(e);if(typeof r<"u")return r;let i=this.libzip.struct.statS();if(this.libzip.statIndex(this.zip,e,0,0,i)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));let s=this.libzip.struct.statCompSize(i),a=this.libzip.struct.statCompMethod(i),g=this.libzip.malloc(s);try{let c=this.libzip.fopenIndex(this.zip,e,0,this.libzip.ZIP_FL_COMPRESSED);if(c===0)throw this.makeLibzipError(this.libzip.getError(this.zip));try{let l=this.libzip.fread(c,g,s,0);if(l===-1)throw this.makeLibzipError(this.libzip.file.getError(c));if(ls)throw new Error("Overread");let C=this.libzip.HEAPU8.subarray(g,g+s),f=Buffer.from(C);if(a===0)return this.fileSources.set(e,f),f;if(t.asyncDecompress)return new Promise((E,m)=>{Cb.default.inflateRaw(f,(w,D)=>{w?m(w):(this.fileSources.set(e,D),E(D))})});{let E=Cb.default.inflateRawSync(f);return this.fileSources.set(e,E),E}}finally{this.libzip.fclose(c)}}finally{this.libzip.free(g)}}async fchmodPromise(e,t){return this.chmodPromise(this.fdToPath(e,"fchmod"),t)}fchmodSync(e,t){return this.chmodSync(this.fdToPath(e,"fchmodSync"),t)}async chmodPromise(e,t){return this.chmodSync(e,t)}chmodSync(e,t){if(this.readOnly)throw Me.errors.EROFS(`chmod '${e}'`);t&=493;let r=this.resolveFilename(`chmod '${e}'`,e,!1),i=this.entries.get(r);if(typeof i>"u")throw new Error(`Assertion failed: The entry should have been registered (${r})`);let s=this.getUnixMode(i,ir.constants.S_IFREG|0)&-512|t;if(this.libzip.file.setExternalAttributes(this.zip,i,0,0,this.libzip.ZIP_OPSYS_UNIX,s<<16)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip))}async fchownPromise(e,t,r){return this.chownPromise(this.fdToPath(e,"fchown"),t,r)}fchownSync(e,t,r){return this.chownSync(this.fdToPath(e,"fchownSync"),t,r)}async chownPromise(e,t,r){return this.chownSync(e,t,r)}chownSync(e,t,r){throw new Error("Unimplemented")}async renamePromise(e,t){return this.renameSync(e,t)}renameSync(e,t){throw new Error("Unimplemented")}async copyFilePromise(e,t,r){let{indexSource:i,indexDest:n,resolvedDestP:s}=this.prepareCopyFile(e,t,r),a=await this.getFileSource(i,{asyncDecompress:!0}),g=this.setFileSource(s,a);g!==n&&this.registerEntry(s,g)}copyFileSync(e,t,r=0){let{indexSource:i,indexDest:n,resolvedDestP:s}=this.prepareCopyFile(e,t,r),a=this.getFileSource(i),g=this.setFileSource(s,a);g!==n&&this.registerEntry(s,g)}prepareCopyFile(e,t,r=0){if(this.readOnly)throw Me.errors.EROFS(`copyfile '${e} -> '${t}'`);if((r&ir.constants.COPYFILE_FICLONE_FORCE)!==0)throw Me.errors.ENOSYS("unsupported clone operation",`copyfile '${e}' -> ${t}'`);let i=this.resolveFilename(`copyfile '${e} -> ${t}'`,e),n=this.entries.get(i);if(typeof n>"u")throw Me.errors.EINVAL(`copyfile '${e}' -> '${t}'`);let s=this.resolveFilename(`copyfile '${e}' -> ${t}'`,t),a=this.entries.get(s);if((r&(ir.constants.COPYFILE_EXCL|ir.constants.COPYFILE_FICLONE_FORCE))!==0&&typeof a<"u")throw Me.errors.EEXIST(`copyfile '${e}' -> '${t}'`);return{indexSource:n,resolvedDestP:s,indexDest:a}}async appendFilePromise(e,t,r){if(this.readOnly)throw Me.errors.EROFS(`open '${e}'`);return typeof r>"u"?r={flag:"a"}:typeof r=="string"?r={flag:"a",encoding:r}:typeof r.flag>"u"&&(r={flag:"a",...r}),this.writeFilePromise(e,t,r)}appendFileSync(e,t,r={}){if(this.readOnly)throw Me.errors.EROFS(`open '${e}'`);return typeof r>"u"?r={flag:"a"}:typeof r=="string"?r={flag:"a",encoding:r}:typeof r.flag>"u"&&(r={flag:"a",...r}),this.writeFileSync(e,t,r)}fdToPath(e,t){var r;let i=(r=this.fds.get(e))===null||r===void 0?void 0:r.p;if(typeof i>"u")throw Me.errors.EBADF(t);return i}async writeFilePromise(e,t,r){let{encoding:i,mode:n,index:s,resolvedP:a}=this.prepareWriteFile(e,r);s!==void 0&&typeof r=="object"&&r.flag&&r.flag.includes("a")&&(t=Buffer.concat([await this.getFileSource(s,{asyncDecompress:!0}),Buffer.from(t)])),i!==null&&(t=t.toString(i));let g=this.setFileSource(a,t);g!==s&&this.registerEntry(a,g),n!==null&&await this.chmodPromise(a,n)}writeFileSync(e,t,r){let{encoding:i,mode:n,index:s,resolvedP:a}=this.prepareWriteFile(e,r);s!==void 0&&typeof r=="object"&&r.flag&&r.flag.includes("a")&&(t=Buffer.concat([this.getFileSource(s),Buffer.from(t)])),i!==null&&(t=t.toString(i));let g=this.setFileSource(a,t);g!==s&&this.registerEntry(a,g),n!==null&&this.chmodSync(a,n)}prepareWriteFile(e,t){if(typeof e=="number"&&(e=this.fdToPath(e,"read")),this.readOnly)throw Me.errors.EROFS(`open '${e}'`);let r=this.resolveFilename(`open '${e}'`,e);if(this.listings.has(r))throw Me.errors.EISDIR(`open '${e}'`);let i=null,n=null;typeof t=="string"?i=t:typeof t=="object"&&({encoding:i=null,mode:n=null}=t);let s=this.entries.get(r);return{encoding:i,mode:n,resolvedP:r,index:s}}async unlinkPromise(e){return this.unlinkSync(e)}unlinkSync(e){if(this.readOnly)throw Me.errors.EROFS(`unlink '${e}'`);let t=this.resolveFilename(`unlink '${e}'`,e);if(this.listings.has(t))throw Me.errors.EISDIR(`unlink '${e}'`);let r=this.entries.get(t);if(typeof r>"u")throw Me.errors.EINVAL(`unlink '${e}'`);this.deleteEntry(t,r)}async utimesPromise(e,t,r){return this.utimesSync(e,t,r)}utimesSync(e,t,r){if(this.readOnly)throw Me.errors.EROFS(`utimes '${e}'`);let i=this.resolveFilename(`utimes '${e}'`,e);this.utimesImpl(i,r)}async lutimesPromise(e,t,r){return this.lutimesSync(e,t,r)}lutimesSync(e,t,r){if(this.readOnly)throw Me.errors.EROFS(`lutimes '${e}'`);let i=this.resolveFilename(`utimes '${e}'`,e,!1);this.utimesImpl(i,r)}utimesImpl(e,t){this.listings.has(e)&&(this.entries.has(e)||this.hydrateDirectory(e));let r=this.entries.get(e);if(r===void 0)throw new Error("Unreachable");if(this.libzip.file.setMtime(this.zip,r,0,q6(t),0)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip))}async mkdirPromise(e,t){return this.mkdirSync(e,t)}mkdirSync(e,{mode:t=493,recursive:r=!1}={}){if(r)return this.mkdirpSync(e,{chmod:t});if(this.readOnly)throw Me.errors.EROFS(`mkdir '${e}'`);let i=this.resolveFilename(`mkdir '${e}'`,e);if(this.entries.has(i)||this.listings.has(i))throw Me.errors.EEXIST(`mkdir '${e}'`);this.hydrateDirectory(i),this.chmodSync(i,t)}async rmdirPromise(e,t){return this.rmdirSync(e,t)}rmdirSync(e,{recursive:t=!1}={}){if(this.readOnly)throw Me.errors.EROFS(`rmdir '${e}'`);if(t){this.removeSync(e);return}let r=this.resolveFilename(`rmdir '${e}'`,e),i=this.listings.get(r);if(!i)throw Me.errors.ENOTDIR(`rmdir '${e}'`);if(i.size>0)throw Me.errors.ENOTEMPTY(`rmdir '${e}'`);let n=this.entries.get(r);if(typeof n>"u")throw Me.errors.EINVAL(`rmdir '${e}'`);this.deleteEntry(e,n)}hydrateDirectory(e){let t=this.libzip.dir.add(this.zip,yA.ppath.relative(yA.PortablePath.root,e));if(t===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));return this.registerListing(e),this.registerEntry(e,t),t}async linkPromise(e,t){return this.linkSync(e,t)}linkSync(e,t){throw Me.errors.EOPNOTSUPP(`link '${e}' -> '${t}'`)}async symlinkPromise(e,t){return this.symlinkSync(e,t)}symlinkSync(e,t){if(this.readOnly)throw Me.errors.EROFS(`symlink '${e}' -> '${t}'`);let r=this.resolveFilename(`symlink '${e}' -> '${t}'`,t);if(this.listings.has(r))throw Me.errors.EISDIR(`symlink '${e}' -> '${t}'`);if(this.entries.has(r))throw Me.errors.EEXIST(`symlink '${e}' -> '${t}'`);let i=this.setFileSource(r,e);if(this.registerEntry(r,i),this.libzip.file.setExternalAttributes(this.zip,i,0,0,this.libzip.ZIP_OPSYS_UNIX,(ir.constants.S_IFLNK|511)<<16)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));this.symlinkCount+=1}async readFilePromise(e,t){typeof t=="object"&&(t=t?t.encoding:void 0);let r=await this.readFileBuffer(e,{asyncDecompress:!0});return t?r.toString(t):r}readFileSync(e,t){typeof t=="object"&&(t=t?t.encoding:void 0);let r=this.readFileBuffer(e);return t?r.toString(t):r}readFileBuffer(e,t={asyncDecompress:!1}){typeof e=="number"&&(e=this.fdToPath(e,"read"));let r=this.resolveFilename(`open '${e}'`,e);if(!this.entries.has(r)&&!this.listings.has(r))throw Me.errors.ENOENT(`open '${e}'`);if(e[e.length-1]==="/"&&!this.listings.has(r))throw Me.errors.ENOTDIR(`open '${e}'`);if(this.listings.has(r))throw Me.errors.EISDIR("read");let i=this.entries.get(r);if(i===void 0)throw new Error("Unreachable");return this.getFileSource(i,t)}async readdirPromise(e,t){return this.readdirSync(e,t)}readdirSync(e,t){let r=this.resolveFilename(`scandir '${e}'`,e);if(!this.entries.has(r)&&!this.listings.has(r))throw Me.errors.ENOENT(`scandir '${e}'`);let i=this.listings.get(r);if(!i)throw Me.errors.ENOTDIR(`scandir '${e}'`);let n=[...i];return t?.withFileTypes?n.map(s=>Object.assign(this.statImpl("lstat",yA.ppath.join(e,s)),{name:s})):n}async readlinkPromise(e){let t=this.prepareReadlink(e);return(await this.getFileSource(t,{asyncDecompress:!0})).toString()}readlinkSync(e){let t=this.prepareReadlink(e);return this.getFileSource(t).toString()}prepareReadlink(e){let t=this.resolveFilename(`readlink '${e}'`,e,!1);if(!this.entries.has(t)&&!this.listings.has(t))throw Me.errors.ENOENT(`readlink '${e}'`);if(e[e.length-1]==="/"&&!this.listings.has(t))throw Me.errors.ENOTDIR(`open '${e}'`);if(this.listings.has(t))throw Me.errors.EINVAL(`readlink '${e}'`);let r=this.entries.get(t);if(r===void 0)throw new Error("Unreachable");if(!this.isSymbolicLink(r))throw Me.errors.EINVAL(`readlink '${e}'`);return r}async truncatePromise(e,t=0){let r=this.resolveFilename(`open '${e}'`,e),i=this.entries.get(r);if(typeof i>"u")throw Me.errors.EINVAL(`open '${e}'`);let n=await this.getFileSource(i,{asyncDecompress:!0}),s=Buffer.alloc(t,0);return n.copy(s),await this.writeFilePromise(e,s)}truncateSync(e,t=0){let r=this.resolveFilename(`open '${e}'`,e),i=this.entries.get(r);if(typeof i>"u")throw Me.errors.EINVAL(`open '${e}'`);let n=this.getFileSource(i),s=Buffer.alloc(t,0);return n.copy(s),this.writeFileSync(e,s)}async ftruncatePromise(e,t){return this.truncatePromise(this.fdToPath(e,"ftruncate"),t)}ftruncateSync(e,t){return this.truncateSync(this.fdToPath(e,"ftruncateSync"),t)}watch(e,t,r){let i;switch(typeof t){case"function":case"string":case"undefined":i=!0;break;default:({persistent:i=!0}=t);break}if(!i)return{on:()=>{},close:()=>{}};let n=setInterval(()=>{},24*60*60*1e3);return{on:()=>{},close:()=>{clearInterval(n)}}}watchFile(e,t,r){let i=yA.ppath.resolve(yA.PortablePath.root,e);return(0,zp.watchFile)(this,i,t,r)}unwatchFile(e,t){let r=yA.ppath.resolve(yA.PortablePath.root,e);return(0,zp.unwatchFile)(this,r,t)}};Fi.ZipFS=Xp});var hb=p(ah=>{"use strict";Object.defineProperty(ah,"__esModule",{value:!0});ah.mountMemoryDrive=void 0;var G6=nA(),oh=BA(),Y6=G6.__importDefault(require("fs")),_6=Zp();function H6(A,e,t=Buffer.alloc(0)){let r=new _6.ZipFS(t),i=l=>l.startsWith(`${e}/`)?l.slice(0,e.length):null,n=async(l,C)=>()=>r,s=(l,C)=>r,a={...A},g=new oh.NodeFS(a),c=new oh.MountFS({baseFs:g,getMountPoint:i,factoryPromise:n,factorySync:s,magicByte:21,maxAge:1/0});return(0,oh.patchFs)(Y6.default,new oh.PosixFS(c)),r}ah.mountMemoryDrive=H6});var Ib=p(hg=>{"use strict";Object.defineProperty(hg,"__esModule",{value:!0});hg.mountMemoryDrive=void 0;var fb=nA();fb.__exportStar(lb(),hg);fb.__exportStar(Zp(),hg);var J6=hb();Object.defineProperty(hg,"mountMemoryDrive",{enumerable:!0,get:function(){return J6.mountMemoryDrive}})});var ds=p(No=>{"use strict";Object.defineProperty(No,"__esModule",{value:!0});No.getLibzipPromise=No.getLibzipSync=void 0;var Eb=nA(),$p=_p(),j6=Eb.__importDefault(ob()),W6=gb();Eb.__exportStar(Ib(),No);(0,$p.setFactory)(()=>{let A=(0,j6.default)();return(0,W6.makeInterface)(A)});function z6(){return(0,$p.getInstance)()}No.getLibzipSync=z6;async function V6(){return(0,$p.getInstance)()}No.getLibzipPromise=V6});var pb=p((Exe,Bb)=>{"use strict";function X6(A,e){function t(){this.constructor=A}t.prototype=e.prototype,A.prototype=new t}function Mo(A,e,t,r){this.message=A,this.expected=e,this.found=t,this.location=r,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,Mo)}X6(Mo,Error);Mo.buildMessage=function(A,e){var t={literal:function(c){return'"'+i(c.text)+'"'},class:function(c){var l="",C;for(C=0;C0){for(C=1,f=1;C>",V=R(">>",!1),Ge=">&",EA=R(">&",!1),$A=">",wA=R(">",!1),ue="<<<",ye=R("<<<",!1),rA="<&",Xe=R("<&",!1),vA="<",RA=R("<",!1),fr=function(h){return{type:"argument",segments:[].concat(...h)}},Yt=function(h){return h},Io="$'",Al=R("$'",!1),Eo="'",cs=R("'",!1),Ga=function(h){return[{type:"text",text:h}]},Ya='""',Ur=R('""',!1),Bo=function(){return{type:"text",text:""}},Ti='"',_a=R('"',!1),po=function(h){return h},Qo=function(h){return{type:"arithmetic",arithmetic:h,quoted:!0}},HA=function(h){return{type:"shell",shell:h,quoted:!0}},Ha=function(h){return{type:"variable",...h,quoted:!0}},yo=function(h){return{type:"text",text:h}},qi=function(h){return{type:"arithmetic",arithmetic:h,quoted:!1}},tl=function(h){return{type:"shell",shell:h,quoted:!1}},rl=function(h){return{type:"variable",...h,quoted:!1}},Ja=function(h){return{type:"glob",pattern:h}},JA=/^[^']/,bt=O(["'"],!0,!1),Gi=function(h){return h.join("")},ja=/^[^$"]/,Wa=O(["$",'"'],!0,!1),at=`\\ +`,il=R(`\\ +`,!1),Ze=function(){return""},Tr="\\",Ir=R("\\",!1),nl=/^[\\$"`]/,lA=O(["\\","$",'"',"`"],!1,!1),Er=function(h){return h},er="\\a",Br=R("\\a",!1),ls=function(){return"a"},AA="\\b",Yi=R("\\b",!1),He=function(){return"\b"},za=/^[Ee]/,y=O(["E","e"],!1,!1),dA=function(){return"\x1B"},v="\\f",sA=R("\\f",!1),us=function(){return"\f"},_t="\\n",mo=R("\\n",!1),Re=function(){return` +`},yn="\\r",Va=R("\\r",!1),pC=function(){return"\r"},sl="\\t",QC=R("\\t",!1),UA=function(){return" "},pr="\\v",ol=R("\\v",!1),al=function(){return"\v"},_i=/^[\\'"?]/,Xa=O(["\\","'",'"',"?"],!1,!1),Bi=function(h){return String.fromCharCode(parseInt(h,16))},_e="\\x",gl=R("\\x",!1),mn="\\u",Za=R("\\u",!1),wo="\\U",wn=R("\\U",!1),Dn=function(h){return String.fromCodePoint(parseInt(h,16))},tA=/^[0-7]/,Sn=O([["0","7"]],!1,!1),Fn=/^[0-9a-fA-f]/,Hi=O([["0","9"],["a","f"],["A","f"]],!1,!1),qr=T(),pi="{}",$a=R("{}",!1),Ji=function(){return"{}"},xn="-",Cs=R("-",!1),ve="+",Rn=R("+",!1),cl=".",dC=R(".",!1),Do=function(h,d,x){return{type:"number",value:(h==="-"?-1:1)*parseFloat(d.join("")+"."+x.join(""))}},yC=function(h,d){return{type:"number",value:(h==="-"?-1:1)*parseInt(d.join(""))}},ll=function(h){return{type:"variable",...h}},So=function(h){return{type:"variable",name:h}},it=function(h){return h},mC="*",Qi=R("*",!1),di="/",eg=R("/",!1),hs=function(h,d,x){return{type:d==="*"?"multiplication":"division",right:x}},F=function(h,d){return d.reduce((x,b)=>({left:x,...b}),h)},N=function(h,d,x){return{type:d==="+"?"addition":"subtraction",right:x}},W="$((",Ce=R("$((",!1),ge="))",Se=R("))",!1),oA=function(h){return h},PA="$(",bn=R("$(",!1),PF=function(h){return h},yi="${",Ag=R("${",!1),YB=":-",wC=R(":-",!1),_B=function(h,d){return{name:h,defaultValue:d}},HB=":-}",OF=R(":-}",!1),KF=function(h){return{name:h,defaultValue:[]}},JB=":+",UF=R(":+",!1),TF=function(h,d){return{name:h,alternativeValue:d}},jB=":+}",qF=R(":+}",!1),GF=function(h){return{name:h,alternativeValue:[]}},WB=function(h){return{name:h}},YF="$",_F=R("$",!1),HF=function(h){return e.isGlobPattern(h)},JF=function(h){return h},zB=/^[a-zA-Z0-9_]/,VB=O([["a","z"],["A","Z"],["0","9"],"_"],!1,!1),XB=function(){return u()},ZB=/^[$@*?#a-zA-Z0-9_\-]/,$B=O(["$","@","*","?","#",["a","z"],["A","Z"],["0","9"],"_","-"],!1,!1),jF=/^[()}<>$|&; \t"']/,WF=O(["(",")","}","<",">","$","|","&",";"," "," ",'"',"'"],!1,!1),zF=/^[<>&; \t"']/,VF=O(["<",">","&",";"," "," ",'"',"'"],!1,!1),ep=/^[ \t]/,Fo=O([" "," "],!1,!1),Q=0,he=0,tg=[{line:1,column:1}],Gr=0,rg=[],Ae=0,fs;if("startRule"in e){if(!(e.startRule in r))throw new Error(`Can't start parsing from rule "`+e.startRule+'".');i=r[e.startRule]}function u(){return A.substring(he,Q)}function I(){return Ne(he,Q)}function B(h,d){throw d=d!==void 0?d:Ne(he,Q),Oe([Ie(h)],A.substring(he,Q),d)}function S(h,d){throw d=d!==void 0?d:Ne(he,Q),Je(h,d)}function R(h,d){return{type:"literal",text:h,ignoreCase:d}}function O(h,d,x){return{type:"class",parts:h,inverted:d,ignoreCase:x}}function T(){return{type:"any"}}function $(){return{type:"end"}}function Ie(h){return{type:"other",description:h}}function Ue(h){var d=tg[h],x;if(d)return d;for(x=h-1;!tg[x];)x--;for(d=tg[x],d={line:d.line,column:d.column};xGr&&(Gr=Q,rg=[]),rg.push(h))}function Je(h,d){return new Mo(h,null,null,d)}function Oe(h,d,x){return new Mo(Mo.buildMessage(h,d),h,d,x)}function uA(){var h,d,x;for(h=Q,d=[],x=Ee();x!==t;)d.push(x),x=Ee();return d!==t?(x=nt(),x===t&&(x=null),x!==t?(he=h,d=n(x),h=d):(Q=h,h=t)):(Q=h,h=t),h}function nt(){var h,d,x,b,q;if(h=Q,d=kn(),d!==t){for(x=[],b=Ee();b!==t;)x.push(b),b=Ee();x!==t?(b=kt(),b!==t?(q=Qr(),q===t&&(q=null),q!==t?(he=h,d=s(d,b,q),h=d):(Q=h,h=t)):(Q=h,h=t)):(Q=h,h=t)}else Q=h,h=t;if(h===t)if(h=Q,d=kn(),d!==t){for(x=[],b=Ee();b!==t;)x.push(b),b=Ee();x!==t?(b=kt(),b===t&&(b=null),b!==t?(he=h,d=a(d,b),h=d):(Q=h,h=t)):(Q=h,h=t)}else Q=h,h=t;return h}function Qr(){var h,d,x,b,q;for(h=Q,d=[],x=Ee();x!==t;)d.push(x),x=Ee();if(d!==t)if(x=nt(),x!==t){for(b=[],q=Ee();q!==t;)b.push(q),q=Ee();b!==t?(he=h,d=g(x),h=d):(Q=h,h=t)}else Q=h,h=t;else Q=h,h=t;return h}function kt(){var h;return A.charCodeAt(Q)===59?(h=c,Q++):(h=t,Ae===0&&Y(l)),h===t&&(A.charCodeAt(Q)===38?(h=C,Q++):(h=t,Ae===0&&Y(f))),h}function kn(){var h,d,x;return h=Q,d=vn(),d!==t?(x=wt(),x===t&&(x=null),x!==t?(he=h,d=E(d,x),h=d):(Q=h,h=t)):(Q=h,h=t),h}function wt(){var h,d,x,b,q,se,eA;for(h=Q,d=[],x=Ee();x!==t;)d.push(x),x=Ee();if(d!==t)if(x=Yr(),x!==t){for(b=[],q=Ee();q!==t;)b.push(q),q=Ee();if(b!==t)if(q=kn(),q!==t){for(se=[],eA=Ee();eA!==t;)se.push(eA),eA=Ee();se!==t?(he=h,d=m(x,q),h=d):(Q=h,h=t)}else Q=h,h=t;else Q=h,h=t}else Q=h,h=t;else Q=h,h=t;return h}function Yr(){var h;return A.substr(Q,2)===w?(h=w,Q+=2):(h=t,Ae===0&&Y(D)),h===t&&(A.substr(Q,2)===L?(h=L,Q+=2):(h=t,Ae===0&&Y(K))),h}function vn(){var h,d,x;return h=Q,d=tz(),d!==t?(x=ht(),x===t&&(x=null),x!==t?(he=h,d=_(d,x),h=d):(Q=h,h=t)):(Q=h,h=t),h}function ht(){var h,d,x,b,q,se,eA;for(h=Q,d=[],x=Ee();x!==t;)d.push(x),x=Ee();if(d!==t)if(x=Az(),x!==t){for(b=[],q=Ee();q!==t;)b.push(q),q=Ee();if(b!==t)if(q=vn(),q!==t){for(se=[],eA=Ee();eA!==t;)se.push(eA),eA=Ee();se!==t?(he=h,d=le(x,q),h=d):(Q=h,h=t)}else Q=h,h=t;else Q=h,h=t}else Q=h,h=t;else Q=h,h=t;return h}function Az(){var h;return A.substr(Q,2)===re?(h=re,Q+=2):(h=t,Ae===0&&Y(J)),h===t&&(A.charCodeAt(Q)===124?(h=X,Q++):(h=t,Ae===0&&Y(ie))),h}function DC(){var h,d,x,b,q,se;if(h=Q,d=ax(),d!==t)if(A.charCodeAt(Q)===61?(x=G,Q++):(x=t,Ae===0&&Y(ee)),x!==t)if(b=$F(),b!==t){for(q=[],se=Ee();se!==t;)q.push(se),se=Ee();q!==t?(he=h,d=o(d,b),h=d):(Q=h,h=t)}else Q=h,h=t;else Q=h,h=t;else Q=h,h=t;if(h===t)if(h=Q,d=ax(),d!==t)if(A.charCodeAt(Q)===61?(x=G,Q++):(x=t,Ae===0&&Y(ee)),x!==t){for(b=[],q=Ee();q!==t;)b.push(q),q=Ee();b!==t?(he=h,d=H(d),h=d):(Q=h,h=t)}else Q=h,h=t;else Q=h,h=t;return h}function tz(){var h,d,x,b,q,se,eA,gA,gt,pt,_r;for(h=Q,d=[],x=Ee();x!==t;)d.push(x),x=Ee();if(d!==t)if(A.charCodeAt(Q)===40?(x=ne,Q++):(x=t,Ae===0&&Y(j)),x!==t){for(b=[],q=Ee();q!==t;)b.push(q),q=Ee();if(b!==t)if(q=nt(),q!==t){for(se=[],eA=Ee();eA!==t;)se.push(eA),eA=Ee();if(se!==t)if(A.charCodeAt(Q)===41?(eA=M,Q++):(eA=t,Ae===0&&Y(k)),eA!==t){for(gA=[],gt=Ee();gt!==t;)gA.push(gt),gt=Ee();if(gA!==t){for(gt=[],pt=ul();pt!==t;)gt.push(pt),pt=ul();if(gt!==t){for(pt=[],_r=Ee();_r!==t;)pt.push(_r),_r=Ee();pt!==t?(he=h,d=te(q,gt),h=d):(Q=h,h=t)}else Q=h,h=t}else Q=h,h=t}else Q=h,h=t;else Q=h,h=t}else Q=h,h=t;else Q=h,h=t}else Q=h,h=t;else Q=h,h=t;if(h===t){for(h=Q,d=[],x=Ee();x!==t;)d.push(x),x=Ee();if(d!==t)if(A.charCodeAt(Q)===123?(x=ae,Q++):(x=t,Ae===0&&Y(De)),x!==t){for(b=[],q=Ee();q!==t;)b.push(q),q=Ee();if(b!==t)if(q=nt(),q!==t){for(se=[],eA=Ee();eA!==t;)se.push(eA),eA=Ee();if(se!==t)if(A.charCodeAt(Q)===125?(eA=pe,Q++):(eA=t,Ae===0&&Y(me)),eA!==t){for(gA=[],gt=Ee();gt!==t;)gA.push(gt),gt=Ee();if(gA!==t){for(gt=[],pt=ul();pt!==t;)gt.push(pt),pt=ul();if(gt!==t){for(pt=[],_r=Ee();_r!==t;)pt.push(_r),_r=Ee();pt!==t?(he=h,d=be(q,gt),h=d):(Q=h,h=t)}else Q=h,h=t}else Q=h,h=t}else Q=h,h=t;else Q=h,h=t}else Q=h,h=t;else Q=h,h=t}else Q=h,h=t;else Q=h,h=t;if(h===t){for(h=Q,d=[],x=Ee();x!==t;)d.push(x),x=Ee();if(d!==t){for(x=[],b=DC();b!==t;)x.push(b),b=DC();if(x!==t){for(b=[],q=Ee();q!==t;)b.push(q),q=Ee();if(b!==t){if(q=[],se=ZF(),se!==t)for(;se!==t;)q.push(se),se=ZF();else q=t;if(q!==t){for(se=[],eA=Ee();eA!==t;)se.push(eA),eA=Ee();se!==t?(he=h,d=Ye(x,q),h=d):(Q=h,h=t)}else Q=h,h=t}else Q=h,h=t}else Q=h,h=t}else Q=h,h=t;if(h===t){for(h=Q,d=[],x=Ee();x!==t;)d.push(x),x=Ee();if(d!==t){if(x=[],b=DC(),b!==t)for(;b!==t;)x.push(b),b=DC();else x=t;if(x!==t){for(b=[],q=Ee();q!==t;)b.push(q),q=Ee();b!==t?(he=h,d=Ve(x),h=d):(Q=h,h=t)}else Q=h,h=t}else Q=h,h=t}}}return h}function XF(){var h,d,x,b,q;for(h=Q,d=[],x=Ee();x!==t;)d.push(x),x=Ee();if(d!==t){if(x=[],b=SC(),b!==t)for(;b!==t;)x.push(b),b=SC();else x=t;if(x!==t){for(b=[],q=Ee();q!==t;)b.push(q),q=Ee();b!==t?(he=h,d=iA(x),h=d):(Q=h,h=t)}else Q=h,h=t}else Q=h,h=t;return h}function ZF(){var h,d,x;for(h=Q,d=[],x=Ee();x!==t;)d.push(x),x=Ee();if(d!==t?(x=ul(),x!==t?(he=h,d=de(x),h=d):(Q=h,h=t)):(Q=h,h=t),h===t){for(h=Q,d=[],x=Ee();x!==t;)d.push(x),x=Ee();d!==t?(x=SC(),x!==t?(he=h,d=de(x),h=d):(Q=h,h=t)):(Q=h,h=t)}return h}function ul(){var h,d,x,b,q;for(h=Q,d=[],x=Ee();x!==t;)d.push(x),x=Ee();return d!==t?(mA.test(A.charAt(Q))?(x=A.charAt(Q),Q++):(x=t,Ae===0&&Y(Z)),x===t&&(x=null),x!==t?(b=rz(),b!==t?(q=SC(),q!==t?(he=h,d=U(x,b,q),h=d):(Q=h,h=t)):(Q=h,h=t)):(Q=h,h=t)):(Q=h,h=t),h}function rz(){var h;return A.substr(Q,2)===oe?(h=oe,Q+=2):(h=t,Ae===0&&Y(V)),h===t&&(A.substr(Q,2)===Ge?(h=Ge,Q+=2):(h=t,Ae===0&&Y(EA)),h===t&&(A.charCodeAt(Q)===62?(h=$A,Q++):(h=t,Ae===0&&Y(wA)),h===t&&(A.substr(Q,3)===ue?(h=ue,Q+=3):(h=t,Ae===0&&Y(ye)),h===t&&(A.substr(Q,2)===rA?(h=rA,Q+=2):(h=t,Ae===0&&Y(Xe)),h===t&&(A.charCodeAt(Q)===60?(h=vA,Q++):(h=t,Ae===0&&Y(RA))))))),h}function SC(){var h,d,x;for(h=Q,d=[],x=Ee();x!==t;)d.push(x),x=Ee();return d!==t?(x=$F(),x!==t?(he=h,d=de(x),h=d):(Q=h,h=t)):(Q=h,h=t),h}function $F(){var h,d,x;if(h=Q,d=[],x=ex(),x!==t)for(;x!==t;)d.push(x),x=ex();else d=t;return d!==t&&(he=h,d=fr(d)),h=d,h}function ex(){var h,d;return h=Q,d=iz(),d!==t&&(he=h,d=Yt(d)),h=d,h===t&&(h=Q,d=nz(),d!==t&&(he=h,d=Yt(d)),h=d,h===t&&(h=Q,d=sz(),d!==t&&(he=h,d=Yt(d)),h=d,h===t&&(h=Q,d=oz(),d!==t&&(he=h,d=Yt(d)),h=d))),h}function iz(){var h,d,x,b;return h=Q,A.substr(Q,2)===Io?(d=Io,Q+=2):(d=t,Ae===0&&Y(Al)),d!==t?(x=cz(),x!==t?(A.charCodeAt(Q)===39?(b=Eo,Q++):(b=t,Ae===0&&Y(cs)),b!==t?(he=h,d=Ga(x),h=d):(Q=h,h=t)):(Q=h,h=t)):(Q=h,h=t),h}function nz(){var h,d,x,b;return h=Q,A.charCodeAt(Q)===39?(d=Eo,Q++):(d=t,Ae===0&&Y(cs)),d!==t?(x=az(),x!==t?(A.charCodeAt(Q)===39?(b=Eo,Q++):(b=t,Ae===0&&Y(cs)),b!==t?(he=h,d=Ga(x),h=d):(Q=h,h=t)):(Q=h,h=t)):(Q=h,h=t),h}function sz(){var h,d,x,b;if(h=Q,A.substr(Q,2)===Ya?(d=Ya,Q+=2):(d=t,Ae===0&&Y(Ur)),d!==t&&(he=h,d=Bo()),h=d,h===t)if(h=Q,A.charCodeAt(Q)===34?(d=Ti,Q++):(d=t,Ae===0&&Y(_a)),d!==t){for(x=[],b=Ax();b!==t;)x.push(b),b=Ax();x!==t?(A.charCodeAt(Q)===34?(b=Ti,Q++):(b=t,Ae===0&&Y(_a)),b!==t?(he=h,d=po(x),h=d):(Q=h,h=t)):(Q=h,h=t)}else Q=h,h=t;return h}function oz(){var h,d,x;if(h=Q,d=[],x=tx(),x!==t)for(;x!==t;)d.push(x),x=tx();else d=t;return d!==t&&(he=h,d=po(d)),h=d,h}function Ax(){var h,d;return h=Q,d=sx(),d!==t&&(he=h,d=Qo(d)),h=d,h===t&&(h=Q,d=ox(),d!==t&&(he=h,d=HA(d)),h=d,h===t&&(h=Q,d=ip(),d!==t&&(he=h,d=Ha(d)),h=d,h===t&&(h=Q,d=gz(),d!==t&&(he=h,d=yo(d)),h=d))),h}function tx(){var h,d;return h=Q,d=sx(),d!==t&&(he=h,d=qi(d)),h=d,h===t&&(h=Q,d=ox(),d!==t&&(he=h,d=tl(d)),h=d,h===t&&(h=Q,d=ip(),d!==t&&(he=h,d=rl(d)),h=d,h===t&&(h=Q,d=Cz(),d!==t&&(he=h,d=Ja(d)),h=d,h===t&&(h=Q,d=uz(),d!==t&&(he=h,d=yo(d)),h=d)))),h}function az(){var h,d,x;for(h=Q,d=[],JA.test(A.charAt(Q))?(x=A.charAt(Q),Q++):(x=t,Ae===0&&Y(bt));x!==t;)d.push(x),JA.test(A.charAt(Q))?(x=A.charAt(Q),Q++):(x=t,Ae===0&&Y(bt));return d!==t&&(he=h,d=Gi(d)),h=d,h}function gz(){var h,d,x;if(h=Q,d=[],x=rx(),x===t&&(ja.test(A.charAt(Q))?(x=A.charAt(Q),Q++):(x=t,Ae===0&&Y(Wa))),x!==t)for(;x!==t;)d.push(x),x=rx(),x===t&&(ja.test(A.charAt(Q))?(x=A.charAt(Q),Q++):(x=t,Ae===0&&Y(Wa)));else d=t;return d!==t&&(he=h,d=Gi(d)),h=d,h}function rx(){var h,d,x;return h=Q,A.substr(Q,2)===at?(d=at,Q+=2):(d=t,Ae===0&&Y(il)),d!==t&&(he=h,d=Ze()),h=d,h===t&&(h=Q,A.charCodeAt(Q)===92?(d=Tr,Q++):(d=t,Ae===0&&Y(Ir)),d!==t?(nl.test(A.charAt(Q))?(x=A.charAt(Q),Q++):(x=t,Ae===0&&Y(lA)),x!==t?(he=h,d=Er(x),h=d):(Q=h,h=t)):(Q=h,h=t)),h}function cz(){var h,d,x;for(h=Q,d=[],x=ix(),x===t&&(JA.test(A.charAt(Q))?(x=A.charAt(Q),Q++):(x=t,Ae===0&&Y(bt)));x!==t;)d.push(x),x=ix(),x===t&&(JA.test(A.charAt(Q))?(x=A.charAt(Q),Q++):(x=t,Ae===0&&Y(bt)));return d!==t&&(he=h,d=Gi(d)),h=d,h}function ix(){var h,d,x;return h=Q,A.substr(Q,2)===er?(d=er,Q+=2):(d=t,Ae===0&&Y(Br)),d!==t&&(he=h,d=ls()),h=d,h===t&&(h=Q,A.substr(Q,2)===AA?(d=AA,Q+=2):(d=t,Ae===0&&Y(Yi)),d!==t&&(he=h,d=He()),h=d,h===t&&(h=Q,A.charCodeAt(Q)===92?(d=Tr,Q++):(d=t,Ae===0&&Y(Ir)),d!==t?(za.test(A.charAt(Q))?(x=A.charAt(Q),Q++):(x=t,Ae===0&&Y(y)),x!==t?(he=h,d=dA(),h=d):(Q=h,h=t)):(Q=h,h=t),h===t&&(h=Q,A.substr(Q,2)===v?(d=v,Q+=2):(d=t,Ae===0&&Y(sA)),d!==t&&(he=h,d=us()),h=d,h===t&&(h=Q,A.substr(Q,2)===_t?(d=_t,Q+=2):(d=t,Ae===0&&Y(mo)),d!==t&&(he=h,d=Re()),h=d,h===t&&(h=Q,A.substr(Q,2)===yn?(d=yn,Q+=2):(d=t,Ae===0&&Y(Va)),d!==t&&(he=h,d=pC()),h=d,h===t&&(h=Q,A.substr(Q,2)===sl?(d=sl,Q+=2):(d=t,Ae===0&&Y(QC)),d!==t&&(he=h,d=UA()),h=d,h===t&&(h=Q,A.substr(Q,2)===pr?(d=pr,Q+=2):(d=t,Ae===0&&Y(ol)),d!==t&&(he=h,d=al()),h=d,h===t&&(h=Q,A.charCodeAt(Q)===92?(d=Tr,Q++):(d=t,Ae===0&&Y(Ir)),d!==t?(_i.test(A.charAt(Q))?(x=A.charAt(Q),Q++):(x=t,Ae===0&&Y(Xa)),x!==t?(he=h,d=Er(x),h=d):(Q=h,h=t)):(Q=h,h=t),h===t&&(h=lz()))))))))),h}function lz(){var h,d,x,b,q,se,eA,gA,gt,pt,_r,np;return h=Q,A.charCodeAt(Q)===92?(d=Tr,Q++):(d=t,Ae===0&&Y(Ir)),d!==t?(x=Ap(),x!==t?(he=h,d=Bi(x),h=d):(Q=h,h=t)):(Q=h,h=t),h===t&&(h=Q,A.substr(Q,2)===_e?(d=_e,Q+=2):(d=t,Ae===0&&Y(gl)),d!==t?(x=Q,b=Q,q=Ap(),q!==t?(se=dr(),se!==t?(q=[q,se],b=q):(Q=b,b=t)):(Q=b,b=t),b===t&&(b=Ap()),b!==t?x=A.substring(x,Q):x=b,x!==t?(he=h,d=Bi(x),h=d):(Q=h,h=t)):(Q=h,h=t),h===t&&(h=Q,A.substr(Q,2)===mn?(d=mn,Q+=2):(d=t,Ae===0&&Y(Za)),d!==t?(x=Q,b=Q,q=dr(),q!==t?(se=dr(),se!==t?(eA=dr(),eA!==t?(gA=dr(),gA!==t?(q=[q,se,eA,gA],b=q):(Q=b,b=t)):(Q=b,b=t)):(Q=b,b=t)):(Q=b,b=t),b!==t?x=A.substring(x,Q):x=b,x!==t?(he=h,d=Bi(x),h=d):(Q=h,h=t)):(Q=h,h=t),h===t&&(h=Q,A.substr(Q,2)===wo?(d=wo,Q+=2):(d=t,Ae===0&&Y(wn)),d!==t?(x=Q,b=Q,q=dr(),q!==t?(se=dr(),se!==t?(eA=dr(),eA!==t?(gA=dr(),gA!==t?(gt=dr(),gt!==t?(pt=dr(),pt!==t?(_r=dr(),_r!==t?(np=dr(),np!==t?(q=[q,se,eA,gA,gt,pt,_r,np],b=q):(Q=b,b=t)):(Q=b,b=t)):(Q=b,b=t)):(Q=b,b=t)):(Q=b,b=t)):(Q=b,b=t)):(Q=b,b=t)):(Q=b,b=t),b!==t?x=A.substring(x,Q):x=b,x!==t?(he=h,d=Dn(x),h=d):(Q=h,h=t)):(Q=h,h=t)))),h}function Ap(){var h;return tA.test(A.charAt(Q))?(h=A.charAt(Q),Q++):(h=t,Ae===0&&Y(Sn)),h}function dr(){var h;return Fn.test(A.charAt(Q))?(h=A.charAt(Q),Q++):(h=t,Ae===0&&Y(Hi)),h}function uz(){var h,d,x,b,q;if(h=Q,d=[],x=Q,A.charCodeAt(Q)===92?(b=Tr,Q++):(b=t,Ae===0&&Y(Ir)),b!==t?(A.length>Q?(q=A.charAt(Q),Q++):(q=t,Ae===0&&Y(qr)),q!==t?(he=x,b=Er(q),x=b):(Q=x,x=t)):(Q=x,x=t),x===t&&(x=Q,A.substr(Q,2)===pi?(b=pi,Q+=2):(b=t,Ae===0&&Y($a)),b!==t&&(he=x,b=Ji()),x=b,x===t&&(x=Q,b=Q,Ae++,q=gx(),Ae--,q===t?b=void 0:(Q=b,b=t),b!==t?(A.length>Q?(q=A.charAt(Q),Q++):(q=t,Ae===0&&Y(qr)),q!==t?(he=x,b=Er(q),x=b):(Q=x,x=t)):(Q=x,x=t))),x!==t)for(;x!==t;)d.push(x),x=Q,A.charCodeAt(Q)===92?(b=Tr,Q++):(b=t,Ae===0&&Y(Ir)),b!==t?(A.length>Q?(q=A.charAt(Q),Q++):(q=t,Ae===0&&Y(qr)),q!==t?(he=x,b=Er(q),x=b):(Q=x,x=t)):(Q=x,x=t),x===t&&(x=Q,A.substr(Q,2)===pi?(b=pi,Q+=2):(b=t,Ae===0&&Y($a)),b!==t&&(he=x,b=Ji()),x=b,x===t&&(x=Q,b=Q,Ae++,q=gx(),Ae--,q===t?b=void 0:(Q=b,b=t),b!==t?(A.length>Q?(q=A.charAt(Q),Q++):(q=t,Ae===0&&Y(qr)),q!==t?(he=x,b=Er(q),x=b):(Q=x,x=t)):(Q=x,x=t)));else d=t;return d!==t&&(he=h,d=Gi(d)),h=d,h}function tp(){var h,d,x,b,q,se;if(h=Q,A.charCodeAt(Q)===45?(d=xn,Q++):(d=t,Ae===0&&Y(Cs)),d===t&&(A.charCodeAt(Q)===43?(d=ve,Q++):(d=t,Ae===0&&Y(Rn))),d===t&&(d=null),d!==t){if(x=[],mA.test(A.charAt(Q))?(b=A.charAt(Q),Q++):(b=t,Ae===0&&Y(Z)),b!==t)for(;b!==t;)x.push(b),mA.test(A.charAt(Q))?(b=A.charAt(Q),Q++):(b=t,Ae===0&&Y(Z));else x=t;if(x!==t)if(A.charCodeAt(Q)===46?(b=cl,Q++):(b=t,Ae===0&&Y(dC)),b!==t){if(q=[],mA.test(A.charAt(Q))?(se=A.charAt(Q),Q++):(se=t,Ae===0&&Y(Z)),se!==t)for(;se!==t;)q.push(se),mA.test(A.charAt(Q))?(se=A.charAt(Q),Q++):(se=t,Ae===0&&Y(Z));else q=t;q!==t?(he=h,d=Do(d,x,q),h=d):(Q=h,h=t)}else Q=h,h=t;else Q=h,h=t}else Q=h,h=t;if(h===t){if(h=Q,A.charCodeAt(Q)===45?(d=xn,Q++):(d=t,Ae===0&&Y(Cs)),d===t&&(A.charCodeAt(Q)===43?(d=ve,Q++):(d=t,Ae===0&&Y(Rn))),d===t&&(d=null),d!==t){if(x=[],mA.test(A.charAt(Q))?(b=A.charAt(Q),Q++):(b=t,Ae===0&&Y(Z)),b!==t)for(;b!==t;)x.push(b),mA.test(A.charAt(Q))?(b=A.charAt(Q),Q++):(b=t,Ae===0&&Y(Z));else x=t;x!==t?(he=h,d=yC(d,x),h=d):(Q=h,h=t)}else Q=h,h=t;if(h===t&&(h=Q,d=ip(),d!==t&&(he=h,d=ll(d)),h=d,h===t&&(h=Q,d=xo(),d!==t&&(he=h,d=So(d)),h=d,h===t)))if(h=Q,A.charCodeAt(Q)===40?(d=ne,Q++):(d=t,Ae===0&&Y(j)),d!==t){for(x=[],b=Ee();b!==t;)x.push(b),b=Ee();if(x!==t)if(b=nx(),b!==t){for(q=[],se=Ee();se!==t;)q.push(se),se=Ee();q!==t?(A.charCodeAt(Q)===41?(se=M,Q++):(se=t,Ae===0&&Y(k)),se!==t?(he=h,d=it(b),h=d):(Q=h,h=t)):(Q=h,h=t)}else Q=h,h=t;else Q=h,h=t}else Q=h,h=t}return h}function rp(){var h,d,x,b,q,se,eA,gA;if(h=Q,d=tp(),d!==t){for(x=[],b=Q,q=[],se=Ee();se!==t;)q.push(se),se=Ee();if(q!==t)if(A.charCodeAt(Q)===42?(se=mC,Q++):(se=t,Ae===0&&Y(Qi)),se===t&&(A.charCodeAt(Q)===47?(se=di,Q++):(se=t,Ae===0&&Y(eg))),se!==t){for(eA=[],gA=Ee();gA!==t;)eA.push(gA),gA=Ee();eA!==t?(gA=tp(),gA!==t?(he=b,q=hs(d,se,gA),b=q):(Q=b,b=t)):(Q=b,b=t)}else Q=b,b=t;else Q=b,b=t;for(;b!==t;){for(x.push(b),b=Q,q=[],se=Ee();se!==t;)q.push(se),se=Ee();if(q!==t)if(A.charCodeAt(Q)===42?(se=mC,Q++):(se=t,Ae===0&&Y(Qi)),se===t&&(A.charCodeAt(Q)===47?(se=di,Q++):(se=t,Ae===0&&Y(eg))),se!==t){for(eA=[],gA=Ee();gA!==t;)eA.push(gA),gA=Ee();eA!==t?(gA=tp(),gA!==t?(he=b,q=hs(d,se,gA),b=q):(Q=b,b=t)):(Q=b,b=t)}else Q=b,b=t;else Q=b,b=t}x!==t?(he=h,d=F(d,x),h=d):(Q=h,h=t)}else Q=h,h=t;return h}function nx(){var h,d,x,b,q,se,eA,gA;if(h=Q,d=rp(),d!==t){for(x=[],b=Q,q=[],se=Ee();se!==t;)q.push(se),se=Ee();if(q!==t)if(A.charCodeAt(Q)===43?(se=ve,Q++):(se=t,Ae===0&&Y(Rn)),se===t&&(A.charCodeAt(Q)===45?(se=xn,Q++):(se=t,Ae===0&&Y(Cs))),se!==t){for(eA=[],gA=Ee();gA!==t;)eA.push(gA),gA=Ee();eA!==t?(gA=rp(),gA!==t?(he=b,q=N(d,se,gA),b=q):(Q=b,b=t)):(Q=b,b=t)}else Q=b,b=t;else Q=b,b=t;for(;b!==t;){for(x.push(b),b=Q,q=[],se=Ee();se!==t;)q.push(se),se=Ee();if(q!==t)if(A.charCodeAt(Q)===43?(se=ve,Q++):(se=t,Ae===0&&Y(Rn)),se===t&&(A.charCodeAt(Q)===45?(se=xn,Q++):(se=t,Ae===0&&Y(Cs))),se!==t){for(eA=[],gA=Ee();gA!==t;)eA.push(gA),gA=Ee();eA!==t?(gA=rp(),gA!==t?(he=b,q=N(d,se,gA),b=q):(Q=b,b=t)):(Q=b,b=t)}else Q=b,b=t;else Q=b,b=t}x!==t?(he=h,d=F(d,x),h=d):(Q=h,h=t)}else Q=h,h=t;return h}function sx(){var h,d,x,b,q,se;if(h=Q,A.substr(Q,3)===W?(d=W,Q+=3):(d=t,Ae===0&&Y(Ce)),d!==t){for(x=[],b=Ee();b!==t;)x.push(b),b=Ee();if(x!==t)if(b=nx(),b!==t){for(q=[],se=Ee();se!==t;)q.push(se),se=Ee();q!==t?(A.substr(Q,2)===ge?(se=ge,Q+=2):(se=t,Ae===0&&Y(Se)),se!==t?(he=h,d=oA(b),h=d):(Q=h,h=t)):(Q=h,h=t)}else Q=h,h=t;else Q=h,h=t}else Q=h,h=t;return h}function ox(){var h,d,x,b;return h=Q,A.substr(Q,2)===PA?(d=PA,Q+=2):(d=t,Ae===0&&Y(bn)),d!==t?(x=nt(),x!==t?(A.charCodeAt(Q)===41?(b=M,Q++):(b=t,Ae===0&&Y(k)),b!==t?(he=h,d=PF(x),h=d):(Q=h,h=t)):(Q=h,h=t)):(Q=h,h=t),h}function ip(){var h,d,x,b,q,se;return h=Q,A.substr(Q,2)===yi?(d=yi,Q+=2):(d=t,Ae===0&&Y(Ag)),d!==t?(x=xo(),x!==t?(A.substr(Q,2)===YB?(b=YB,Q+=2):(b=t,Ae===0&&Y(wC)),b!==t?(q=XF(),q!==t?(A.charCodeAt(Q)===125?(se=pe,Q++):(se=t,Ae===0&&Y(me)),se!==t?(he=h,d=_B(x,q),h=d):(Q=h,h=t)):(Q=h,h=t)):(Q=h,h=t)):(Q=h,h=t)):(Q=h,h=t),h===t&&(h=Q,A.substr(Q,2)===yi?(d=yi,Q+=2):(d=t,Ae===0&&Y(Ag)),d!==t?(x=xo(),x!==t?(A.substr(Q,3)===HB?(b=HB,Q+=3):(b=t,Ae===0&&Y(OF)),b!==t?(he=h,d=KF(x),h=d):(Q=h,h=t)):(Q=h,h=t)):(Q=h,h=t),h===t&&(h=Q,A.substr(Q,2)===yi?(d=yi,Q+=2):(d=t,Ae===0&&Y(Ag)),d!==t?(x=xo(),x!==t?(A.substr(Q,2)===JB?(b=JB,Q+=2):(b=t,Ae===0&&Y(UF)),b!==t?(q=XF(),q!==t?(A.charCodeAt(Q)===125?(se=pe,Q++):(se=t,Ae===0&&Y(me)),se!==t?(he=h,d=TF(x,q),h=d):(Q=h,h=t)):(Q=h,h=t)):(Q=h,h=t)):(Q=h,h=t)):(Q=h,h=t),h===t&&(h=Q,A.substr(Q,2)===yi?(d=yi,Q+=2):(d=t,Ae===0&&Y(Ag)),d!==t?(x=xo(),x!==t?(A.substr(Q,3)===jB?(b=jB,Q+=3):(b=t,Ae===0&&Y(qF)),b!==t?(he=h,d=GF(x),h=d):(Q=h,h=t)):(Q=h,h=t)):(Q=h,h=t),h===t&&(h=Q,A.substr(Q,2)===yi?(d=yi,Q+=2):(d=t,Ae===0&&Y(Ag)),d!==t?(x=xo(),x!==t?(A.charCodeAt(Q)===125?(b=pe,Q++):(b=t,Ae===0&&Y(me)),b!==t?(he=h,d=WB(x),h=d):(Q=h,h=t)):(Q=h,h=t)):(Q=h,h=t),h===t&&(h=Q,A.charCodeAt(Q)===36?(d=YF,Q++):(d=t,Ae===0&&Y(_F)),d!==t?(x=xo(),x!==t?(he=h,d=WB(x),h=d):(Q=h,h=t)):(Q=h,h=t)))))),h}function Cz(){var h,d,x;return h=Q,d=hz(),d!==t?(he=Q,x=HF(d),x?x=void 0:x=t,x!==t?(he=h,d=JF(d),h=d):(Q=h,h=t)):(Q=h,h=t),h}function hz(){var h,d,x,b,q;if(h=Q,d=[],x=Q,b=Q,Ae++,q=cx(),Ae--,q===t?b=void 0:(Q=b,b=t),b!==t?(A.length>Q?(q=A.charAt(Q),Q++):(q=t,Ae===0&&Y(qr)),q!==t?(he=x,b=Er(q),x=b):(Q=x,x=t)):(Q=x,x=t),x!==t)for(;x!==t;)d.push(x),x=Q,b=Q,Ae++,q=cx(),Ae--,q===t?b=void 0:(Q=b,b=t),b!==t?(A.length>Q?(q=A.charAt(Q),Q++):(q=t,Ae===0&&Y(qr)),q!==t?(he=x,b=Er(q),x=b):(Q=x,x=t)):(Q=x,x=t);else d=t;return d!==t&&(he=h,d=Gi(d)),h=d,h}function ax(){var h,d,x;if(h=Q,d=[],zB.test(A.charAt(Q))?(x=A.charAt(Q),Q++):(x=t,Ae===0&&Y(VB)),x!==t)for(;x!==t;)d.push(x),zB.test(A.charAt(Q))?(x=A.charAt(Q),Q++):(x=t,Ae===0&&Y(VB));else d=t;return d!==t&&(he=h,d=XB()),h=d,h}function xo(){var h,d,x;if(h=Q,d=[],ZB.test(A.charAt(Q))?(x=A.charAt(Q),Q++):(x=t,Ae===0&&Y($B)),x!==t)for(;x!==t;)d.push(x),ZB.test(A.charAt(Q))?(x=A.charAt(Q),Q++):(x=t,Ae===0&&Y($B));else d=t;return d!==t&&(he=h,d=XB()),h=d,h}function gx(){var h;return jF.test(A.charAt(Q))?(h=A.charAt(Q),Q++):(h=t,Ae===0&&Y(WF)),h}function cx(){var h;return zF.test(A.charAt(Q))?(h=A.charAt(Q),Q++):(h=t,Ae===0&&Y(VF)),h}function Ee(){var h,d;if(h=[],ep.test(A.charAt(Q))?(d=A.charAt(Q),Q++):(d=t,Ae===0&&Y(Fo)),d!==t)for(;d!==t;)h.push(d),ep.test(A.charAt(Q))?(d=A.charAt(Q),Q++):(d=t,Ae===0&&Y(Fo));else h=t;return h}if(fs=i(),fs!==t&&Q===A.length)return fs;throw fs!==t&&Q{"use strict";Object.defineProperty(bA,"__esModule",{value:!0});bA.stringifyShell=bA.stringifyArithmeticExpression=bA.stringifyArgumentSegment=bA.stringifyValueArgument=bA.stringifyRedirectArgument=bA.stringifyArgument=bA.stringifyEnvSegment=bA.stringifyCommand=bA.stringifyCommandChainThen=bA.stringifyCommandChain=bA.stringifyCommandLineThen=bA.stringifyCommandLine=bA.stringifyShellLine=bA.parseShell=void 0;var $6=pb();function eV(A,e={isGlobPattern:()=>!1}){try{return(0,$6.parse)(A,e)}catch(t){throw t.location&&(t.message=t.message.replace(/(\.)?$/,` (line ${t.location.start.line}, column ${t.location.start.column})$1`)),t}}bA.parseShell=eV;function Bl(A,{endSemicolon:e=!1}={}){return A.map(({command:t,type:r},i)=>`${AQ(t)}${r===";"?i!==A.length-1||e?";":"":" &"}`).join(" ")}bA.stringifyShellLine=Bl;bA.stringifyShell=Bl;function AQ(A){return`${tQ(A.chain)}${A.then?` ${Qb(A.then)}`:""}`}bA.stringifyCommandLine=AQ;function Qb(A){return`${A.type} ${AQ(A.line)}`}bA.stringifyCommandLineThen=Qb;function tQ(A){return`${yb(A)}${A.then?` ${db(A.then)}`:""}`}bA.stringifyCommandChain=tQ;function db(A){return`${A.type} ${tQ(A.chain)}`}bA.stringifyCommandChainThen=db;function yb(A){switch(A.type){case"command":return`${A.envs.length>0?`${A.envs.map(e=>eQ(e)).join(" ")} `:""}${A.args.map(e=>mb(e)).join(" ")}`;case"subshell":return`(${Bl(A.subshell)})${A.args.length>0?` ${A.args.map(e=>gh(e)).join(" ")}`:""}`;case"group":return`{ ${Bl(A.group,{endSemicolon:!0})} }${A.args.length>0?` ${A.args.map(e=>gh(e)).join(" ")}`:""}`;case"envs":return A.envs.map(e=>eQ(e)).join(" ");default:throw new Error(`Unsupported command type: "${A.type}"`)}}bA.stringifyCommand=yb;function eQ(A){return`${A.name}=${A.args[0]?fg(A.args[0]):""}`}bA.stringifyEnvSegment=eQ;function mb(A){switch(A.type){case"redirection":return gh(A);case"argument":return fg(A);default:throw new Error(`Unsupported argument type: "${A.type}"`)}}bA.stringifyArgument=mb;function gh(A){return`${A.subtype} ${A.args.map(e=>fg(e)).join(" ")}`}bA.stringifyRedirectArgument=gh;function fg(A){return A.segments.map(e=>wb(e)).join("")}bA.stringifyValueArgument=fg;function wb(A){let e=(r,i)=>i?`"${r}"`:r,t=r=>r===""?'""':r.match(/[(){}<>$|&; \t"']/)?`$'${r.replace(/\\/g,"\\\\").replace(/'/g,"\\'").replace(/\f/g,"\\f").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/\t/g,"\\t").replace(/\v/g,"\\v").replace(/\0/g,"\\0")}'`:r;switch(A.type){case"text":return t(A.text);case"glob":return A.pattern;case"shell":return e(`\${${Bl(A.shell)}}`,A.quoted);case"variable":return e(typeof A.defaultValue>"u"?typeof A.alternativeValue>"u"?`\${${A.name}}`:A.alternativeValue.length===0?`\${${A.name}:+}`:`\${${A.name}:+${A.alternativeValue.map(r=>fg(r)).join(" ")}}`:A.defaultValue.length===0?`\${${A.name}:-}`:`\${${A.name}:-${A.defaultValue.map(r=>fg(r)).join(" ")}}`,A.quoted);case"arithmetic":return`$(( ${rQ(A.arithmetic)} ))`;default:throw new Error(`Unsupported argument segment type: "${A.type}"`)}}bA.stringifyArgumentSegment=wb;function rQ(A){let e=i=>{switch(i){case"addition":return"+";case"subtraction":return"-";case"multiplication":return"*";case"division":return"/";default:throw new Error(`Can't extract operator from arithmetic expression of type "${i}"`)}},t=(i,n)=>n?`( ${i} )`:i,r=i=>t(rQ(i),!["number","variable"].includes(i.type));switch(A.type){case"number":return String(A.value);case"variable":return A.name;default:return`${r(A.left)} ${e(A.type)} ${r(A.right)}`}}bA.stringifyArithmeticExpression=rQ});var Fb=p((pxe,Sb)=>{"use strict";function AV(A,e){function t(){this.constructor=A}t.prototype=e.prototype,A.prototype=new t}function Lo(A,e,t,r){this.message=A,this.expected=e,this.found=t,this.location=r,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,Lo)}AV(Lo,Error);Lo.buildMessage=function(A,e){var t={literal:function(c){return'"'+i(c.text)+'"'},class:function(c){var l="",C;for(C=0;C0){for(C=1,f=1;Cre&&(re=K,J=[]),J.push(Z))}function me(Z,U){return new Lo(Z,null,null,U)}function be(Z,U,oe){return new Lo(Lo.buildMessage(Z,U),Z,U,oe)}function Ye(){var Z,U,oe,V;return Z=K,U=Ve(),U!==t?(A.charCodeAt(K)===47?(oe=n,K++):(oe=t,X===0&&pe(s)),oe!==t?(V=Ve(),V!==t?(_=Z,U=a(U,V),Z=U):(K=Z,Z=t)):(K=Z,Z=t)):(K=Z,Z=t),Z===t&&(Z=K,U=Ve(),U!==t&&(_=Z,U=g(U)),Z=U),Z}function Ve(){var Z,U,oe,V;return Z=K,U=iA(),U!==t?(A.charCodeAt(K)===64?(oe=c,K++):(oe=t,X===0&&pe(l)),oe!==t?(V=mA(),V!==t?(_=Z,U=C(U,V),Z=U):(K=Z,Z=t)):(K=Z,Z=t)):(K=Z,Z=t),Z===t&&(Z=K,U=iA(),U!==t&&(_=Z,U=f(U)),Z=U),Z}function iA(){var Z,U,oe,V,Ge;return Z=K,A.charCodeAt(K)===64?(U=c,K++):(U=t,X===0&&pe(l)),U!==t?(oe=de(),oe!==t?(A.charCodeAt(K)===47?(V=n,K++):(V=t,X===0&&pe(s)),V!==t?(Ge=de(),Ge!==t?(_=Z,U=E(),Z=U):(K=Z,Z=t)):(K=Z,Z=t)):(K=Z,Z=t)):(K=Z,Z=t),Z===t&&(Z=K,U=de(),U!==t&&(_=Z,U=E()),Z=U),Z}function de(){var Z,U,oe;if(Z=K,U=[],m.test(A.charAt(K))?(oe=A.charAt(K),K++):(oe=t,X===0&&pe(w)),oe!==t)for(;oe!==t;)U.push(oe),m.test(A.charAt(K))?(oe=A.charAt(K),K++):(oe=t,X===0&&pe(w));else U=t;return U!==t&&(_=Z,U=E()),Z=U,Z}function mA(){var Z,U,oe;if(Z=K,U=[],D.test(A.charAt(K))?(oe=A.charAt(K),K++):(oe=t,X===0&&pe(L)),oe!==t)for(;oe!==t;)U.push(oe),D.test(A.charAt(K))?(oe=A.charAt(K),K++):(oe=t,X===0&&pe(L));else U=t;return U!==t&&(_=Z,U=E()),Z=U,Z}if(ie=i(),ie!==t&&K===A.length)return ie;throw ie!==t&&K{"use strict";Object.defineProperty(Ig,"__esModule",{value:!0});Ig.stringifyResolution=Ig.parseResolution=void 0;var rV=Fb();function iV(A){let e=A.match(/^\*{1,2}\/(.*)/);if(e)throw new Error(`The override for '${A}' includes a glob pattern. Glob patterns have been removed since their behaviours don't match what you'd expect. Set the override to '${e[1]}' instead.`);try{return(0,rV.parse)(A)}catch(t){throw t.location&&(t.message=t.message.replace(/(\.)?$/,` (line ${t.location.start.line}, column ${t.location.start.column})$1`)),t}}Ig.parseResolution=iV;function nV(A){let e="";return A.from&&(e+=A.from.fullName,A.from.description&&(e+=`@${A.from.description}`),e+="/"),e+=A.descriptor.fullName,A.descriptor.description&&(e+=`@${A.descriptor.description}`),e}Ig.stringifyResolution=nV});var Oo=p((dxe,Po)=>{"use strict";function Rb(A){return typeof A>"u"||A===null}function sV(A){return typeof A=="object"&&A!==null}function oV(A){return Array.isArray(A)?A:Rb(A)?[]:[A]}function aV(A,e){var t,r,i,n;if(e)for(n=Object.keys(e),t=0,r=n.length;t{"use strict";function pl(A,e){Error.call(this),this.name="YAMLException",this.reason=A,this.mark=e,this.message=(this.reason||"(unknown reason)")+(this.mark?" "+this.mark.toString():""),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack||""}pl.prototype=Object.create(Error.prototype);pl.prototype.constructor=pl;pl.prototype.toString=function(e){var t=this.name+": ";return t+=this.reason||"(unknown reason)",!e&&this.mark&&(t+=" "+this.mark.toString()),t};bb.exports=pl});var Nb=p((mxe,vb)=>{"use strict";var kb=Oo();function iQ(A,e,t,r,i){this.name=A,this.buffer=e,this.position=t,this.line=r,this.column=i}iQ.prototype.getSnippet=function(e,t){var r,i,n,s,a;if(!this.buffer)return null;for(e=e||4,t=t||75,r="",i=this.position;i>0&&`\0\r +\x85\u2028\u2029`.indexOf(this.buffer.charAt(i-1))===-1;)if(i-=1,this.position-i>t/2-1){r=" ... ",i+=5;break}for(n="",s=this.position;st/2-1){n=" ... ",s-=5;break}return a=this.buffer.slice(i,s),kb.repeat(" ",e)+r+a+n+` +`+kb.repeat(" ",e+this.position-i+r.length)+"^"};iQ.prototype.toString=function(e){var t,r="";return this.name&&(r+='in "'+this.name+'" '),r+="at line "+(this.line+1)+", column "+(this.column+1),e||(t=this.getSnippet(),t&&(r+=`: +`+t)),r};vb.exports=iQ});var It=p((wxe,Lb)=>{"use strict";var Mb=Eg(),lV=["kind","resolve","construct","instanceOf","predicate","represent","defaultStyle","styleAliases"],uV=["scalar","sequence","mapping"];function CV(A){var e={};return A!==null&&Object.keys(A).forEach(function(t){A[t].forEach(function(r){e[String(r)]=t})}),e}function hV(A,e){if(e=e||{},Object.keys(e).forEach(function(t){if(lV.indexOf(t)===-1)throw new Mb('Unknown option "'+t+'" is met in definition of "'+A+'" YAML type.')}),this.tag=A,this.kind=e.kind||null,this.resolve=e.resolve||function(){return!0},this.construct=e.construct||function(t){return t},this.instanceOf=e.instanceOf||null,this.predicate=e.predicate||null,this.represent=e.represent||null,this.defaultStyle=e.defaultStyle||null,this.styleAliases=CV(e.styleAliases||null),uV.indexOf(this.kind)===-1)throw new Mb('Unknown kind "'+this.kind+'" is specified for "'+A+'" YAML type.')}Lb.exports=hV});var Ko=p((Dxe,Ob)=>{"use strict";var Pb=Oo(),ch=Eg(),fV=It();function nQ(A,e,t){var r=[];return A.include.forEach(function(i){t=nQ(i,e,t)}),A[e].forEach(function(i){t.forEach(function(n,s){n.tag===i.tag&&n.kind===i.kind&&r.push(s)}),t.push(i)}),t.filter(function(i,n){return r.indexOf(n)===-1})}function IV(){var A={scalar:{},sequence:{},mapping:{},fallback:{}},e,t;function r(i){A[i.kind][i.tag]=A.fallback[i.tag]=i}for(e=0,t=arguments.length;e{"use strict";var EV=It();Kb.exports=new EV("tag:yaml.org,2002:str",{kind:"scalar",construct:function(A){return A!==null?A:""}})});var qb=p((Fxe,Tb)=>{"use strict";var BV=It();Tb.exports=new BV("tag:yaml.org,2002:seq",{kind:"sequence",construct:function(A){return A!==null?A:[]}})});var Yb=p((xxe,Gb)=>{"use strict";var pV=It();Gb.exports=new pV("tag:yaml.org,2002:map",{kind:"mapping",construct:function(A){return A!==null?A:{}}})});var lh=p((Rxe,_b)=>{"use strict";var QV=Ko();_b.exports=new QV({explicit:[Ub(),qb(),Yb()]})});var Jb=p((bxe,Hb)=>{"use strict";var dV=It();function yV(A){if(A===null)return!0;var e=A.length;return e===1&&A==="~"||e===4&&(A==="null"||A==="Null"||A==="NULL")}function mV(){return null}function wV(A){return A===null}Hb.exports=new dV("tag:yaml.org,2002:null",{kind:"scalar",resolve:yV,construct:mV,predicate:wV,represent:{canonical:function(){return"~"},lowercase:function(){return"null"},uppercase:function(){return"NULL"},camelcase:function(){return"Null"}},defaultStyle:"lowercase"})});var Wb=p((kxe,jb)=>{"use strict";var DV=It();function SV(A){if(A===null)return!1;var e=A.length;return e===4&&(A==="true"||A==="True"||A==="TRUE")||e===5&&(A==="false"||A==="False"||A==="FALSE")}function FV(A){return A==="true"||A==="True"||A==="TRUE"}function xV(A){return Object.prototype.toString.call(A)==="[object Boolean]"}jb.exports=new DV("tag:yaml.org,2002:bool",{kind:"scalar",resolve:SV,construct:FV,predicate:xV,represent:{lowercase:function(A){return A?"true":"false"},uppercase:function(A){return A?"TRUE":"FALSE"},camelcase:function(A){return A?"True":"False"}},defaultStyle:"lowercase"})});var Vb=p((vxe,zb)=>{"use strict";var RV=Oo(),bV=It();function kV(A){return 48<=A&&A<=57||65<=A&&A<=70||97<=A&&A<=102}function vV(A){return 48<=A&&A<=55}function NV(A){return 48<=A&&A<=57}function MV(A){if(A===null)return!1;var e=A.length,t=0,r=!1,i;if(!e)return!1;if(i=A[t],(i==="-"||i==="+")&&(i=A[++t]),i==="0"){if(t+1===e)return!0;if(i=A[++t],i==="b"){for(t++;t=0?"0b"+A.toString(2):"-0b"+A.toString(2).slice(1)},octal:function(A){return A>=0?"0"+A.toString(8):"-0"+A.toString(8).slice(1)},decimal:function(A){return A.toString(10)},hexadecimal:function(A){return A>=0?"0x"+A.toString(16).toUpperCase():"-0x"+A.toString(16).toUpperCase().slice(1)}},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}})});var $b=p((Nxe,Zb)=>{"use strict";var Xb=Oo(),OV=It(),KV=new RegExp("^(?:[-+]?(?:0|[1-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\.[0-9_]*|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$");function UV(A){return!(A===null||!KV.test(A)||A[A.length-1]==="_")}function TV(A){var e,t,r,i;return e=A.replace(/_/g,"").toLowerCase(),t=e[0]==="-"?-1:1,i=[],"+-".indexOf(e[0])>=0&&(e=e.slice(1)),e===".inf"?t===1?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:e===".nan"?NaN:e.indexOf(":")>=0?(e.split(":").forEach(function(n){i.unshift(parseFloat(n,10))}),e=0,r=1,i.forEach(function(n){e+=n*r,r*=60}),t*e):t*parseFloat(e,10)}var qV=/^[-+]?[0-9]+e/;function GV(A,e){var t;if(isNaN(A))switch(e){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===A)switch(e){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===A)switch(e){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(Xb.isNegativeZero(A))return"-0.0";return t=A.toString(10),qV.test(t)?t.replace("e",".e"):t}function YV(A){return Object.prototype.toString.call(A)==="[object Number]"&&(A%1!==0||Xb.isNegativeZero(A))}Zb.exports=new OV("tag:yaml.org,2002:float",{kind:"scalar",resolve:UV,construct:TV,predicate:YV,represent:GV,defaultStyle:"lowercase"})});var sQ=p((Mxe,ek)=>{"use strict";var _V=Ko();ek.exports=new _V({include:[lh()],implicit:[Jb(),Wb(),Vb(),$b()]})});var oQ=p((Lxe,Ak)=>{"use strict";var HV=Ko();Ak.exports=new HV({include:[sQ()]})});var nk=p((Pxe,ik)=>{"use strict";var JV=It(),tk=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),rk=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$");function jV(A){return A===null?!1:tk.exec(A)!==null||rk.exec(A)!==null}function WV(A){var e,t,r,i,n,s,a,g=0,c=null,l,C,f;if(e=tk.exec(A),e===null&&(e=rk.exec(A)),e===null)throw new Error("Date resolve error");if(t=+e[1],r=+e[2]-1,i=+e[3],!e[4])return new Date(Date.UTC(t,r,i));if(n=+e[4],s=+e[5],a=+e[6],e[7]){for(g=e[7].slice(0,3);g.length<3;)g+="0";g=+g}return e[9]&&(l=+e[10],C=+(e[11]||0),c=(l*60+C)*6e4,e[9]==="-"&&(c=-c)),f=new Date(Date.UTC(t,r,i,n,s,a,g)),c&&f.setTime(f.getTime()-c),f}function zV(A){return A.toISOString()}ik.exports=new JV("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:jV,construct:WV,instanceOf:Date,represent:zV})});var ok=p((Oxe,sk)=>{"use strict";var VV=It();function XV(A){return A==="<<"||A===null}sk.exports=new VV("tag:yaml.org,2002:merge",{kind:"scalar",resolve:XV})});var ck=p((Kxe,gk)=>{"use strict";var Uo;try{ak=require,Uo=ak("buffer").Buffer}catch{}var ak,ZV=It(),aQ=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/= +\r`;function $V(A){if(A===null)return!1;var e,t,r=0,i=A.length,n=aQ;for(t=0;t64)){if(e<0)return!1;r+=6}return r%8===0}function e9(A){var e,t,r=A.replace(/[\r\n=]/g,""),i=r.length,n=aQ,s=0,a=[];for(e=0;e>16&255),a.push(s>>8&255),a.push(s&255)),s=s<<6|n.indexOf(r.charAt(e));return t=i%4*6,t===0?(a.push(s>>16&255),a.push(s>>8&255),a.push(s&255)):t===18?(a.push(s>>10&255),a.push(s>>2&255)):t===12&&a.push(s>>4&255),Uo?Uo.from?Uo.from(a):new Uo(a):a}function A9(A){var e="",t=0,r,i,n=A.length,s=aQ;for(r=0;r>18&63],e+=s[t>>12&63],e+=s[t>>6&63],e+=s[t&63]),t=(t<<8)+A[r];return i=n%3,i===0?(e+=s[t>>18&63],e+=s[t>>12&63],e+=s[t>>6&63],e+=s[t&63]):i===2?(e+=s[t>>10&63],e+=s[t>>4&63],e+=s[t<<2&63],e+=s[64]):i===1&&(e+=s[t>>2&63],e+=s[t<<4&63],e+=s[64],e+=s[64]),e}function t9(A){return Uo&&Uo.isBuffer(A)}gk.exports=new ZV("tag:yaml.org,2002:binary",{kind:"scalar",resolve:$V,construct:e9,predicate:t9,represent:A9})});var uk=p((Uxe,lk)=>{"use strict";var r9=It(),i9=Object.prototype.hasOwnProperty,n9=Object.prototype.toString;function s9(A){if(A===null)return!0;var e=[],t,r,i,n,s,a=A;for(t=0,r=a.length;t{"use strict";var a9=It(),g9=Object.prototype.toString;function c9(A){if(A===null)return!0;var e,t,r,i,n,s=A;for(n=new Array(s.length),e=0,t=s.length;e{"use strict";var u9=It(),C9=Object.prototype.hasOwnProperty;function h9(A){if(A===null)return!0;var e,t=A;for(e in t)if(C9.call(t,e)&&t[e]!==null)return!1;return!0}function f9(A){return A!==null?A:{}}fk.exports=new u9("tag:yaml.org,2002:set",{kind:"mapping",resolve:h9,construct:f9})});var pg=p((Gxe,Ek)=>{"use strict";var I9=Ko();Ek.exports=new I9({include:[oQ()],implicit:[nk(),ok()],explicit:[ck(),uk(),hk(),Ik()]})});var pk=p((Yxe,Bk)=>{"use strict";var E9=It();function B9(){return!0}function p9(){}function Q9(){return""}function d9(A){return typeof A>"u"}Bk.exports=new E9("tag:yaml.org,2002:js/undefined",{kind:"scalar",resolve:B9,construct:p9,predicate:d9,represent:Q9})});var dk=p((_xe,Qk)=>{"use strict";var y9=It();function m9(A){if(A===null||A.length===0)return!1;var e=A,t=/\/([gim]*)$/.exec(A),r="";return!(e[0]==="/"&&(t&&(r=t[1]),r.length>3||e[e.length-r.length-1]!=="/"))}function w9(A){var e=A,t=/\/([gim]*)$/.exec(A),r="";return e[0]==="/"&&(t&&(r=t[1]),e=e.slice(1,e.length-r.length-1)),new RegExp(e,r)}function D9(A){var e="/"+A.source+"/";return A.global&&(e+="g"),A.multiline&&(e+="m"),A.ignoreCase&&(e+="i"),e}function S9(A){return Object.prototype.toString.call(A)==="[object RegExp]"}Qk.exports=new y9("tag:yaml.org,2002:js/regexp",{kind:"scalar",resolve:m9,construct:w9,predicate:S9,represent:D9})});var wk=p((Hxe,mk)=>{"use strict";var uh;try{yk=require,uh=yk("esprima")}catch{typeof window<"u"&&(uh=window.esprima)}var yk,F9=It();function x9(A){if(A===null)return!1;try{var e="("+A+")",t=uh.parse(e,{range:!0});return!(t.type!=="Program"||t.body.length!==1||t.body[0].type!=="ExpressionStatement"||t.body[0].expression.type!=="ArrowFunctionExpression"&&t.body[0].expression.type!=="FunctionExpression")}catch{return!1}}function R9(A){var e="("+A+")",t=uh.parse(e,{range:!0}),r=[],i;if(t.type!=="Program"||t.body.length!==1||t.body[0].type!=="ExpressionStatement"||t.body[0].expression.type!=="ArrowFunctionExpression"&&t.body[0].expression.type!=="FunctionExpression")throw new Error("Failed to resolve function");return t.body[0].expression.params.forEach(function(n){r.push(n.name)}),i=t.body[0].expression.body.range,t.body[0].expression.body.type==="BlockStatement"?new Function(r,e.slice(i[0]+1,i[1]-1)):new Function(r,"return "+e.slice(i[0],i[1]))}function b9(A){return A.toString()}function k9(A){return Object.prototype.toString.call(A)==="[object Function]"}mk.exports=new F9("tag:yaml.org,2002:js/function",{kind:"scalar",resolve:x9,construct:R9,predicate:k9,represent:b9})});var Ql=p((Jxe,Sk)=>{"use strict";var Dk=Ko();Sk.exports=Dk.DEFAULT=new Dk({include:[pg()],explicit:[pk(),dk(),wk()]})});var Hk=p((jxe,dl)=>{"use strict";var Ln=Oo(),Nk=Eg(),v9=Nb(),Mk=pg(),N9=Ql(),ms=Object.prototype.hasOwnProperty,Ch=1,Lk=2,Pk=3,hh=4,gQ=1,M9=2,Fk=3,L9=/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,P9=/[\x85\u2028\u2029]/,O9=/[,\[\]\{\}]/,Ok=/^(?:!|!!|![a-z\-]+!)$/i,Kk=/^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i;function xk(A){return Object.prototype.toString.call(A)}function zi(A){return A===10||A===13}function qo(A){return A===9||A===32}function nr(A){return A===9||A===32||A===10||A===13}function Qg(A){return A===44||A===91||A===93||A===123||A===125}function K9(A){var e;return 48<=A&&A<=57?A-48:(e=A|32,97<=e&&e<=102?e-97+10:-1)}function U9(A){return A===120?2:A===117?4:A===85?8:0}function T9(A){return 48<=A&&A<=57?A-48:-1}function Rk(A){return A===48?"\0":A===97?"\x07":A===98?"\b":A===116||A===9?" ":A===110?` +`:A===118?"\v":A===102?"\f":A===114?"\r":A===101?"\x1B":A===32?" ":A===34?'"':A===47?"/":A===92?"\\":A===78?"\x85":A===95?"\xA0":A===76?"\u2028":A===80?"\u2029":""}function q9(A){return A<=65535?String.fromCharCode(A):String.fromCharCode((A-65536>>10)+55296,(A-65536&1023)+56320)}var Uk=new Array(256),Tk=new Array(256);for(To=0;To<256;To++)Uk[To]=Rk(To)?1:0,Tk[To]=Rk(To);var To;function G9(A,e){this.input=A,this.filename=e.filename||null,this.schema=e.schema||N9,this.onWarning=e.onWarning||null,this.legacy=e.legacy||!1,this.json=e.json||!1,this.listener=e.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=A.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.documents=[]}function qk(A,e){return new Nk(e,new v9(A.filename,A.input,A.position,A.line,A.position-A.lineStart))}function $e(A,e){throw qk(A,e)}function fh(A,e){A.onWarning&&A.onWarning.call(null,qk(A,e))}var bk={YAML:function(e,t,r){var i,n,s;e.version!==null&&$e(e,"duplication of %YAML directive"),r.length!==1&&$e(e,"YAML directive accepts exactly one argument"),i=/^([0-9]+)\.([0-9]+)$/.exec(r[0]),i===null&&$e(e,"ill-formed argument of the YAML directive"),n=parseInt(i[1],10),s=parseInt(i[2],10),n!==1&&$e(e,"unacceptable YAML version of the document"),e.version=r[0],e.checkLineBreaks=s<2,s!==1&&s!==2&&fh(e,"unsupported YAML version of the document")},TAG:function(e,t,r){var i,n;r.length!==2&&$e(e,"TAG directive accepts exactly two arguments"),i=r[0],n=r[1],Ok.test(i)||$e(e,"ill-formed tag handle (first argument) of the TAG directive"),ms.call(e.tagMap,i)&&$e(e,'there is a previously declared suffix for "'+i+'" tag handle'),Kk.test(n)||$e(e,"ill-formed tag prefix (second argument) of the TAG directive"),e.tagMap[i]=n}};function ys(A,e,t,r){var i,n,s,a;if(e1&&(A.result+=Ln.repeat(` +`,e-1))}function Y9(A,e,t){var r,i,n,s,a,g,c,l,C=A.kind,f=A.result,E;if(E=A.input.charCodeAt(A.position),nr(E)||Qg(E)||E===35||E===38||E===42||E===33||E===124||E===62||E===39||E===34||E===37||E===64||E===96||(E===63||E===45)&&(i=A.input.charCodeAt(A.position+1),nr(i)||t&&Qg(i)))return!1;for(A.kind="scalar",A.result="",n=s=A.position,a=!1;E!==0;){if(E===58){if(i=A.input.charCodeAt(A.position+1),nr(i)||t&&Qg(i))break}else if(E===35){if(r=A.input.charCodeAt(A.position-1),nr(r))break}else{if(A.position===A.lineStart&&Ih(A)||t&&Qg(E))break;if(zi(E))if(g=A.line,c=A.lineStart,l=A.lineIndent,ct(A,!1,-1),A.lineIndent>=e){a=!0,E=A.input.charCodeAt(A.position);continue}else{A.position=s,A.line=g,A.lineStart=c,A.lineIndent=l;break}}a&&(ys(A,n,s,!1),lQ(A,A.line-g),n=s=A.position,a=!1),qo(E)||(s=A.position+1),E=A.input.charCodeAt(++A.position)}return ys(A,n,s,!1),A.result?!0:(A.kind=C,A.result=f,!1)}function _9(A,e){var t,r,i;if(t=A.input.charCodeAt(A.position),t!==39)return!1;for(A.kind="scalar",A.result="",A.position++,r=i=A.position;(t=A.input.charCodeAt(A.position))!==0;)if(t===39)if(ys(A,r,A.position,!0),t=A.input.charCodeAt(++A.position),t===39)r=A.position,A.position++,i=A.position;else return!0;else zi(t)?(ys(A,r,i,!0),lQ(A,ct(A,!1,e)),r=i=A.position):A.position===A.lineStart&&Ih(A)?$e(A,"unexpected end of the document within a single quoted scalar"):(A.position++,i=A.position);$e(A,"unexpected end of the stream within a single quoted scalar")}function H9(A,e){var t,r,i,n,s,a;if(a=A.input.charCodeAt(A.position),a!==34)return!1;for(A.kind="scalar",A.result="",A.position++,t=r=A.position;(a=A.input.charCodeAt(A.position))!==0;){if(a===34)return ys(A,t,A.position,!0),A.position++,!0;if(a===92){if(ys(A,t,A.position,!0),a=A.input.charCodeAt(++A.position),zi(a))ct(A,!1,e);else if(a<256&&Uk[a])A.result+=Tk[a],A.position++;else if((s=U9(a))>0){for(i=s,n=0;i>0;i--)a=A.input.charCodeAt(++A.position),(s=K9(a))>=0?n=(n<<4)+s:$e(A,"expected hexadecimal character");A.result+=q9(n),A.position++}else $e(A,"unknown escape sequence");t=r=A.position}else zi(a)?(ys(A,t,r,!0),lQ(A,ct(A,!1,e)),t=r=A.position):A.position===A.lineStart&&Ih(A)?$e(A,"unexpected end of the document within a double quoted scalar"):(A.position++,r=A.position)}$e(A,"unexpected end of the stream within a double quoted scalar")}function J9(A,e){var t=!0,r,i=A.tag,n,s=A.anchor,a,g,c,l,C,f={},E,m,w,D;if(D=A.input.charCodeAt(A.position),D===91)g=93,C=!1,n=[];else if(D===123)g=125,C=!0,n={};else return!1;for(A.anchor!==null&&(A.anchorMap[A.anchor]=n),D=A.input.charCodeAt(++A.position);D!==0;){if(ct(A,!0,e),D=A.input.charCodeAt(A.position),D===g)return A.position++,A.tag=i,A.anchor=s,A.kind=C?"mapping":"sequence",A.result=n,!0;t||$e(A,"missed comma between flow collection entries"),m=E=w=null,c=l=!1,D===63&&(a=A.input.charCodeAt(A.position+1),nr(a)&&(c=l=!0,A.position++,ct(A,!0,e))),r=A.line,yg(A,e,Ch,!1,!0),m=A.tag,E=A.result,ct(A,!0,e),D=A.input.charCodeAt(A.position),(l||A.line===r)&&D===58&&(c=!0,D=A.input.charCodeAt(++A.position),ct(A,!0,e),yg(A,e,Ch,!1,!0),w=A.result),C?dg(A,n,f,m,E,w):c?n.push(dg(A,null,f,m,E,w)):n.push(E),ct(A,!0,e),D=A.input.charCodeAt(A.position),D===44?(t=!0,D=A.input.charCodeAt(++A.position)):t=!1}$e(A,"unexpected end of the stream within a flow collection")}function j9(A,e){var t,r,i=gQ,n=!1,s=!1,a=e,g=0,c=!1,l,C;if(C=A.input.charCodeAt(A.position),C===124)r=!1;else if(C===62)r=!0;else return!1;for(A.kind="scalar",A.result="";C!==0;)if(C=A.input.charCodeAt(++A.position),C===43||C===45)gQ===i?i=C===43?Fk:M9:$e(A,"repeat of a chomping mode identifier");else if((l=T9(C))>=0)l===0?$e(A,"bad explicit indentation width of a block scalar; it cannot be less than one"):s?$e(A,"repeat of an indentation width identifier"):(a=e+l-1,s=!0);else break;if(qo(C)){do C=A.input.charCodeAt(++A.position);while(qo(C));if(C===35)do C=A.input.charCodeAt(++A.position);while(!zi(C)&&C!==0)}for(;C!==0;){for(cQ(A),A.lineIndent=0,C=A.input.charCodeAt(A.position);(!s||A.lineIndenta&&(a=A.lineIndent),zi(C)){g++;continue}if(A.lineIndente)&&g!==0)$e(A,"bad indentation of a sequence entry");else if(A.lineIndente)&&(yg(A,e,hh,!0,i)&&(m?f=A.result:E=A.result),m||(dg(A,c,l,C,f,E,n,s),C=f=E=null),ct(A,!0,-1),D=A.input.charCodeAt(A.position)),A.lineIndent>e&&D!==0)$e(A,"bad indentation of a mapping entry");else if(A.lineIndente?g=1:A.lineIndent===e?g=0:A.lineIndente?g=1:A.lineIndent===e?g=0:A.lineIndent tag; it should be "scalar", not "'+A.kind+'"'),C=0,f=A.implicitTypes.length;C tag; it should be "'+E.kind+'", not "'+A.kind+'"'),E.resolve(A.result)?(A.result=E.construct(A.result),A.anchor!==null&&(A.anchorMap[A.anchor]=A.result)):$e(A,"cannot resolve a node with !<"+A.tag+"> explicit tag")):$e(A,"unknown tag !<"+A.tag+">");return A.listener!==null&&A.listener("close",A),A.tag!==null||A.anchor!==null||l}function Z9(A){var e=A.position,t,r,i,n=!1,s;for(A.version=null,A.checkLineBreaks=A.legacy,A.tagMap={},A.anchorMap={};(s=A.input.charCodeAt(A.position))!==0&&(ct(A,!0,-1),s=A.input.charCodeAt(A.position),!(A.lineIndent>0||s!==37));){for(n=!0,s=A.input.charCodeAt(++A.position),t=A.position;s!==0&&!nr(s);)s=A.input.charCodeAt(++A.position);for(r=A.input.slice(t,A.position),i=[],r.length<1&&$e(A,"directive name must not be less than one character in length");s!==0;){for(;qo(s);)s=A.input.charCodeAt(++A.position);if(s===35){do s=A.input.charCodeAt(++A.position);while(s!==0&&!zi(s));break}if(zi(s))break;for(t=A.position;s!==0&&!nr(s);)s=A.input.charCodeAt(++A.position);i.push(A.input.slice(t,A.position))}s!==0&&cQ(A),ms.call(bk,r)?bk[r](A,r,i):fh(A,'unknown document directive "'+r+'"')}if(ct(A,!0,-1),A.lineIndent===0&&A.input.charCodeAt(A.position)===45&&A.input.charCodeAt(A.position+1)===45&&A.input.charCodeAt(A.position+2)===45?(A.position+=3,ct(A,!0,-1)):n&&$e(A,"directives end mark is expected"),yg(A,A.lineIndent-1,hh,!1,!0),ct(A,!0,-1),A.checkLineBreaks&&P9.test(A.input.slice(e,A.position))&&fh(A,"non-ASCII line breaks are interpreted as content"),A.documents.push(A.result),A.position===A.lineStart&&Ih(A)){A.input.charCodeAt(A.position)===46&&(A.position+=3,ct(A,!0,-1));return}if(A.position"u"&&(t=e,e=null);var r=Gk(A,t);if(typeof e!="function")return r;for(var i=0,n=r.length;i"u"&&(t=e,e=null),Yk(A,e,Ln.extend({schema:Mk},t))}function eX(A,e){return _k(A,Ln.extend({schema:Mk},e))}dl.exports.loadAll=Yk;dl.exports.load=_k;dl.exports.safeLoadAll=$9;dl.exports.safeLoad=eX});var hv=p((Wxe,fQ)=>{"use strict";var ml=Oo(),wl=Eg(),AX=Ql(),tX=pg(),$k=Object.prototype.toString,ev=Object.prototype.hasOwnProperty,rX=9,yl=10,iX=13,nX=32,sX=33,oX=34,Av=35,aX=37,gX=38,cX=39,lX=42,tv=44,uX=45,rv=58,CX=61,hX=62,fX=63,IX=64,iv=91,nv=93,EX=96,sv=123,BX=124,ov=125,vt={};vt[0]="\\0";vt[7]="\\a";vt[8]="\\b";vt[9]="\\t";vt[10]="\\n";vt[11]="\\v";vt[12]="\\f";vt[13]="\\r";vt[27]="\\e";vt[34]='\\"';vt[92]="\\\\";vt[133]="\\N";vt[160]="\\_";vt[8232]="\\L";vt[8233]="\\P";var pX=["y","Y","yes","Yes","YES","on","On","ON","n","N","no","No","NO","off","Off","OFF"];function QX(A,e){var t,r,i,n,s,a,g;if(e===null)return{};for(t={},r=Object.keys(e),i=0,n=r.length;i0?A.charCodeAt(n-1):null,f=f&&Wk(s,a)}else{for(n=0;nr&&A[C+1]!==" ",C=n);else if(!mg(s))return Eh;a=n>0?A.charCodeAt(n-1):null,f=f&&Wk(s,a)}c=c||l&&n-C-1>r&&A[C+1]!==" "}return!g&&!c?f&&!i(A)?gv:cv:t>9&&av(A)?Eh:c?uv:lv}function SX(A,e,t,r){A.dump=function(){if(e.length===0)return"''";if(!A.noCompatMode&&pX.indexOf(e)!==-1)return"'"+e+"'";var i=A.indent*Math.max(1,t),n=A.lineWidth===-1?-1:Math.max(Math.min(A.lineWidth,40),A.lineWidth-i),s=r||A.flowLevel>-1&&t>=A.flowLevel;function a(g){return yX(A,g)}switch(DX(e,s,A.indent,n,a)){case gv:return e;case cv:return"'"+e.replace(/'/g,"''")+"'";case lv:return"|"+zk(e,A.indent)+Vk(jk(e,i));case uv:return">"+zk(e,A.indent)+Vk(jk(FX(e,n),i));case Eh:return'"'+xX(e,n)+'"';default:throw new wl("impossible error: invalid scalar style")}}()}function zk(A,e){var t=av(A)?String(e):"",r=A[A.length-1]===` +`,i=r&&(A[A.length-2]===` +`||A===` +`),n=i?"+":r?"":"-";return t+n+` +`}function Vk(A){return A[A.length-1]===` +`?A.slice(0,-1):A}function FX(A,e){for(var t=/(\n+)([^\n]*)/g,r=function(){var c=A.indexOf(` +`);return c=c!==-1?c:A.length,t.lastIndex=c,Xk(A.slice(0,c),e)}(),i=A[0]===` +`||A[0]===" ",n,s;s=t.exec(A);){var a=s[1],g=s[2];n=g[0]===" ",r+=a+(!i&&!n&&g!==""?` +`:"")+Xk(g,e),i=n}return r}function Xk(A,e){if(A===""||A[0]===" ")return A;for(var t=/ [^ ]/g,r,i=0,n,s=0,a=0,g="";r=t.exec(A);)a=r.index,a-i>e&&(n=s>i?s:a,g+=` +`+A.slice(i,n),i=n+1),s=a;return g+=` +`,A.length-i>e&&s>i?g+=A.slice(i,s)+` +`+A.slice(s+1):g+=A.slice(i),g.slice(1)}function xX(A){for(var e="",t,r,i,n=0;n=55296&&t<=56319&&(r=A.charCodeAt(n+1),r>=56320&&r<=57343)){e+=Jk((t-55296)*1024+r-56320+65536),n++;continue}i=vt[t],e+=!i&&mg(t)?A[n]:i||Jk(t)}return e}function RX(A,e,t){var r="",i=A.tag,n,s;for(n=0,s=t.length;n1024&&(l+="? "),l+=A.dump+(A.condenseFlow?'"':"")+":"+(A.condenseFlow?"":" "),Go(A,e,c,!1,!1)&&(l+=A.dump,r+=l));A.tag=i,A.dump="{"+r+"}"}function vX(A,e,t,r){var i="",n=A.tag,s=Object.keys(t),a,g,c,l,C,f;if(A.sortKeys===!0)s.sort();else if(typeof A.sortKeys=="function")s.sort(A.sortKeys);else if(A.sortKeys)throw new wl("sortKeys must be a boolean or a function");for(a=0,g=s.length;a1024,C&&(A.dump&&yl===A.dump.charCodeAt(0)?f+="?":f+="? "),f+=A.dump,C&&(f+=uQ(A,e)),Go(A,e+1,l,!0,C)&&(A.dump&&yl===A.dump.charCodeAt(0)?f+=":":f+=": ",f+=A.dump,i+=f));A.tag=n,A.dump=i||"{}"}function Zk(A,e,t){var r,i,n,s,a,g;for(i=t?A.explicitTypes:A.implicitTypes,n=0,s=i.length;n tag resolver accepts not "'+g+'" style');A.dump=r}return!0}return!1}function Go(A,e,t,r,i,n){A.tag=null,A.dump=t,Zk(A,t,!1)||Zk(A,t,!0);var s=$k.call(A.dump);r&&(r=A.flowLevel<0||A.flowLevel>e);var a=s==="[object Object]"||s==="[object Array]",g,c;if(a&&(g=A.duplicates.indexOf(t),c=g!==-1),(A.tag!==null&&A.tag!=="?"||c||A.indent!==2&&e>0)&&(i=!1),c&&A.usedDuplicates[g])A.dump="*ref_"+g;else{if(a&&c&&!A.usedDuplicates[g]&&(A.usedDuplicates[g]=!0),s==="[object Object]")r&&Object.keys(A.dump).length!==0?(vX(A,e,A.dump,i),c&&(A.dump="&ref_"+g+A.dump)):(kX(A,e,A.dump),c&&(A.dump="&ref_"+g+" "+A.dump));else if(s==="[object Array]"){var l=A.noArrayIndent&&e>0?e-1:e;r&&A.dump.length!==0?(bX(A,l,A.dump,i),c&&(A.dump="&ref_"+g+A.dump)):(RX(A,l,A.dump),c&&(A.dump="&ref_"+g+" "+A.dump))}else if(s==="[object String]")A.tag!=="?"&&SX(A,A.dump,e,n);else{if(A.skipInvalid)return!1;throw new wl("unacceptable kind of an object to dump "+s)}A.tag!==null&&A.tag!=="?"&&(A.dump="!<"+A.tag+"> "+A.dump)}return!0}function NX(A,e){var t=[],r=[],i,n;for(CQ(A,t,r),i=0,n=r.length;i{"use strict";var Bh=Hk(),fv=hv();function ph(A){return function(){throw new Error("Function "+A+" is deprecated and cannot be used.")}}tt.exports.Type=It();tt.exports.Schema=Ko();tt.exports.FAILSAFE_SCHEMA=lh();tt.exports.JSON_SCHEMA=sQ();tt.exports.CORE_SCHEMA=oQ();tt.exports.DEFAULT_SAFE_SCHEMA=pg();tt.exports.DEFAULT_FULL_SCHEMA=Ql();tt.exports.load=Bh.load;tt.exports.loadAll=Bh.loadAll;tt.exports.safeLoad=Bh.safeLoad;tt.exports.safeLoadAll=Bh.safeLoadAll;tt.exports.dump=fv.dump;tt.exports.safeDump=fv.safeDump;tt.exports.YAMLException=Eg();tt.exports.MINIMAL_SCHEMA=lh();tt.exports.SAFE_SCHEMA=pg();tt.exports.DEFAULT_SCHEMA=Ql();tt.exports.scan=ph("scan");tt.exports.parse=ph("parse");tt.exports.compose=ph("compose");tt.exports.addConstructor=ph("addConstructor")});var Bv=p((Vxe,Ev)=>{"use strict";var LX=Iv();Ev.exports=LX});var Qv=p((Xxe,pv)=>{"use strict";function PX(A,e){function t(){this.constructor=A}t.prototype=e.prototype,A.prototype=new t}function Yo(A,e,t,r){this.message=A,this.expected=e,this.found=t,this.location=r,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,Yo)}PX(Yo,Error);Yo.buildMessage=function(A,e){var t={literal:function(c){return'"'+i(c.text)+'"'},class:function(c){var l="",C;for(C=0;C0){for(C=1,f=1;C({[Ce]:W})))},re=function(F){return F},J=function(F){return F},X=_i("correct indentation"),ie=" ",G=UA(" ",!1),ee=function(F){return F.length===hs*eg},o=function(F){return F.length===(hs+1)*eg},H=function(){return hs++,!0},ne=function(){return hs--,!0},j=function(){return Va()},M=_i("pseudostring"),k=/^[^\r\n\t ?:,\][{}#&*!|>'"%@`\-]/,te=pr(["\r",` +`," "," ","?",":",",","]","[","{","}","#","&","*","!","|",">","'",'"',"%","@","`","-"],!0,!1),ae=/^[^\r\n\t ,\][{}:#"']/,De=pr(["\r",` +`," "," ",",","]","[","{","}",":","#",'"',"'"],!0,!1),pe=function(){return Va().replace(/^ *| *$/g,"")},me="--",be=UA("--",!1),Ye=/^[a-zA-Z\/0-9]/,Ve=pr([["a","z"],["A","Z"],"/",["0","9"]],!1,!1),iA=/^[^\r\n\t :,]/,de=pr(["\r",` +`," "," ",":",","],!0,!1),mA="null",Z=UA("null",!1),U=function(){return null},oe="true",V=UA("true",!1),Ge=function(){return!0},EA="false",$A=UA("false",!1),wA=function(){return!1},ue=_i("string"),ye='"',rA=UA('"',!1),Xe=function(){return""},vA=function(F){return F},RA=function(F){return F.join("")},fr=/^[^"\\\0-\x1F\x7F]/,Yt=pr(['"',"\\",["\0",""],"\x7F"],!0,!1),Io='\\"',Al=UA('\\"',!1),Eo=function(){return'"'},cs="\\\\",Ga=UA("\\\\",!1),Ya=function(){return"\\"},Ur="\\/",Bo=UA("\\/",!1),Ti=function(){return"/"},_a="\\b",po=UA("\\b",!1),Qo=function(){return"\b"},HA="\\f",Ha=UA("\\f",!1),yo=function(){return"\f"},qi="\\n",tl=UA("\\n",!1),rl=function(){return` +`},Ja="\\r",JA=UA("\\r",!1),bt=function(){return"\r"},Gi="\\t",ja=UA("\\t",!1),Wa=function(){return" "},at="\\u",il=UA("\\u",!1),Ze=function(F,N,W,Ce){return String.fromCharCode(parseInt(`0x${F}${N}${W}${Ce}`))},Tr=/^[0-9a-fA-F]/,Ir=pr([["0","9"],["a","f"],["A","F"]],!1,!1),nl=_i("blank space"),lA=/^[ \t]/,Er=pr([" "," "],!1,!1),er=_i("white space"),Br=/^[ \t\n\r]/,ls=pr([" "," ",` +`,"\r"],!1,!1),AA=`\r +`,Yi=UA(`\r +`,!1),He=` +`,za=UA(` +`,!1),y="\r",dA=UA("\r",!1),v=0,sA=0,us=[{line:1,column:1}],_t=0,mo=[],Re=0,yn;if("startRule"in e){if(!(e.startRule in r))throw new Error(`Can't start parsing from rule "`+e.startRule+'".');i=r[e.startRule]}function Va(){return A.substring(sA,v)}function pC(){return Bi(sA,v)}function sl(F,N){throw N=N!==void 0?N:Bi(sA,v),mn([_i(F)],A.substring(sA,v),N)}function QC(F,N){throw N=N!==void 0?N:Bi(sA,v),gl(F,N)}function UA(F,N){return{type:"literal",text:F,ignoreCase:N}}function pr(F,N,W){return{type:"class",parts:F,inverted:N,ignoreCase:W}}function ol(){return{type:"any"}}function al(){return{type:"end"}}function _i(F){return{type:"other",description:F}}function Xa(F){var N=us[F],W;if(N)return N;for(W=F-1;!us[W];)W--;for(N=us[W],N={line:N.line,column:N.column};W_t&&(_t=v,mo=[]),mo.push(F))}function gl(F,N){return new Yo(F,null,null,N)}function mn(F,N,W){return new Yo(Yo.buildMessage(F,N),F,N,W)}function Za(){var F;return F=Dn(),F}function wo(){var F,N,W;for(F=v,N=[],W=wn();W!==t;)N.push(W),W=wn();return N!==t&&(sA=F,N=n(N)),F=N,F}function wn(){var F,N,W,Ce,ge;return F=v,N=Fn(),N!==t?(A.charCodeAt(v)===45?(W=s,v++):(W=t,Re===0&&_e(a)),W!==t?(Ce=it(),Ce!==t?(ge=Sn(),ge!==t?(sA=F,N=g(ge),F=N):(v=F,F=t)):(v=F,F=t)):(v=F,F=t)):(v=F,F=t),F}function Dn(){var F,N,W;for(F=v,N=[],W=tA();W!==t;)N.push(W),W=tA();return N!==t&&(sA=F,N=c(N)),F=N,F}function tA(){var F,N,W,Ce,ge,Se,oA,PA,bn;if(F=v,N=it(),N===t&&(N=null),N!==t){if(W=v,A.charCodeAt(v)===35?(Ce=l,v++):(Ce=t,Re===0&&_e(C)),Ce!==t){if(ge=[],Se=v,oA=v,Re++,PA=di(),Re--,PA===t?oA=void 0:(v=oA,oA=t),oA!==t?(A.length>v?(PA=A.charAt(v),v++):(PA=t,Re===0&&_e(f)),PA!==t?(oA=[oA,PA],Se=oA):(v=Se,Se=t)):(v=Se,Se=t),Se!==t)for(;Se!==t;)ge.push(Se),Se=v,oA=v,Re++,PA=di(),Re--,PA===t?oA=void 0:(v=oA,oA=t),oA!==t?(A.length>v?(PA=A.charAt(v),v++):(PA=t,Re===0&&_e(f)),PA!==t?(oA=[oA,PA],Se=oA):(v=Se,Se=t)):(v=Se,Se=t);else ge=t;ge!==t?(Ce=[Ce,ge],W=Ce):(v=W,W=t)}else v=W,W=t;if(W===t&&(W=null),W!==t){if(Ce=[],ge=Qi(),ge!==t)for(;ge!==t;)Ce.push(ge),ge=Qi();else Ce=t;Ce!==t?(sA=F,N=E(),F=N):(v=F,F=t)}else v=F,F=t}else v=F,F=t;if(F===t&&(F=v,N=Fn(),N!==t?(W=$a(),W!==t?(Ce=it(),Ce===t&&(Ce=null),Ce!==t?(A.charCodeAt(v)===58?(ge=m,v++):(ge=t,Re===0&&_e(w)),ge!==t?(Se=it(),Se===t&&(Se=null),Se!==t?(oA=Sn(),oA!==t?(sA=F,N=D(W,oA),F=N):(v=F,F=t)):(v=F,F=t)):(v=F,F=t)):(v=F,F=t)):(v=F,F=t)):(v=F,F=t),F===t&&(F=v,N=Fn(),N!==t?(W=Ji(),W!==t?(Ce=it(),Ce===t&&(Ce=null),Ce!==t?(A.charCodeAt(v)===58?(ge=m,v++):(ge=t,Re===0&&_e(w)),ge!==t?(Se=it(),Se===t&&(Se=null),Se!==t?(oA=Sn(),oA!==t?(sA=F,N=D(W,oA),F=N):(v=F,F=t)):(v=F,F=t)):(v=F,F=t)):(v=F,F=t)):(v=F,F=t)):(v=F,F=t),F===t))){if(F=v,N=Fn(),N!==t)if(W=Ji(),W!==t)if(Ce=it(),Ce!==t)if(ge=Cs(),ge!==t){if(Se=[],oA=Qi(),oA!==t)for(;oA!==t;)Se.push(oA),oA=Qi();else Se=t;Se!==t?(sA=F,N=D(W,ge),F=N):(v=F,F=t)}else v=F,F=t;else v=F,F=t;else v=F,F=t;else v=F,F=t;if(F===t)if(F=v,N=Fn(),N!==t)if(W=Ji(),W!==t){if(Ce=[],ge=v,Se=it(),Se===t&&(Se=null),Se!==t?(A.charCodeAt(v)===44?(oA=L,v++):(oA=t,Re===0&&_e(K)),oA!==t?(PA=it(),PA===t&&(PA=null),PA!==t?(bn=Ji(),bn!==t?(sA=ge,Se=_(W,bn),ge=Se):(v=ge,ge=t)):(v=ge,ge=t)):(v=ge,ge=t)):(v=ge,ge=t),ge!==t)for(;ge!==t;)Ce.push(ge),ge=v,Se=it(),Se===t&&(Se=null),Se!==t?(A.charCodeAt(v)===44?(oA=L,v++):(oA=t,Re===0&&_e(K)),oA!==t?(PA=it(),PA===t&&(PA=null),PA!==t?(bn=Ji(),bn!==t?(sA=ge,Se=_(W,bn),ge=Se):(v=ge,ge=t)):(v=ge,ge=t)):(v=ge,ge=t)):(v=ge,ge=t);else Ce=t;Ce!==t?(ge=it(),ge===t&&(ge=null),ge!==t?(A.charCodeAt(v)===58?(Se=m,v++):(Se=t,Re===0&&_e(w)),Se!==t?(oA=it(),oA===t&&(oA=null),oA!==t?(PA=Sn(),PA!==t?(sA=F,N=le(W,Ce,PA),F=N):(v=F,F=t)):(v=F,F=t)):(v=F,F=t)):(v=F,F=t)):(v=F,F=t)}else v=F,F=t;else v=F,F=t}return F}function Sn(){var F,N,W,Ce,ge,Se,oA;if(F=v,N=v,Re++,W=v,Ce=di(),Ce!==t?(ge=Hi(),ge!==t?(A.charCodeAt(v)===45?(Se=s,v++):(Se=t,Re===0&&_e(a)),Se!==t?(oA=it(),oA!==t?(Ce=[Ce,ge,Se,oA],W=Ce):(v=W,W=t)):(v=W,W=t)):(v=W,W=t)):(v=W,W=t),Re--,W!==t?(v=N,N=void 0):N=t,N!==t?(W=Qi(),W!==t?(Ce=qr(),Ce!==t?(ge=wo(),ge!==t?(Se=pi(),Se!==t?(sA=F,N=re(ge),F=N):(v=F,F=t)):(v=F,F=t)):(v=F,F=t)):(v=F,F=t)):(v=F,F=t),F===t&&(F=v,N=di(),N!==t?(W=qr(),W!==t?(Ce=Dn(),Ce!==t?(ge=pi(),ge!==t?(sA=F,N=re(Ce),F=N):(v=F,F=t)):(v=F,F=t)):(v=F,F=t)):(v=F,F=t),F===t))if(F=v,N=xn(),N!==t){if(W=[],Ce=Qi(),Ce!==t)for(;Ce!==t;)W.push(Ce),Ce=Qi();else W=t;W!==t?(sA=F,N=J(N),F=N):(v=F,F=t)}else v=F,F=t;return F}function Fn(){var F,N,W;for(Re++,F=v,N=[],A.charCodeAt(v)===32?(W=ie,v++):(W=t,Re===0&&_e(G));W!==t;)N.push(W),A.charCodeAt(v)===32?(W=ie,v++):(W=t,Re===0&&_e(G));return N!==t?(sA=v,W=ee(N),W?W=void 0:W=t,W!==t?(N=[N,W],F=N):(v=F,F=t)):(v=F,F=t),Re--,F===t&&(N=t,Re===0&&_e(X)),F}function Hi(){var F,N,W;for(F=v,N=[],A.charCodeAt(v)===32?(W=ie,v++):(W=t,Re===0&&_e(G));W!==t;)N.push(W),A.charCodeAt(v)===32?(W=ie,v++):(W=t,Re===0&&_e(G));return N!==t?(sA=v,W=o(N),W?W=void 0:W=t,W!==t?(N=[N,W],F=N):(v=F,F=t)):(v=F,F=t),F}function qr(){var F;return sA=v,F=H(),F?F=void 0:F=t,F}function pi(){var F;return sA=v,F=ne(),F?F=void 0:F=t,F}function $a(){var F;return F=Do(),F===t&&(F=ve()),F}function Ji(){var F,N,W;if(F=Do(),F===t){if(F=v,N=[],W=Rn(),W!==t)for(;W!==t;)N.push(W),W=Rn();else N=t;N!==t&&(sA=F,N=j()),F=N}return F}function xn(){var F;return F=cl(),F===t&&(F=dC(),F===t&&(F=Do(),F===t&&(F=ve()))),F}function Cs(){var F;return F=cl(),F===t&&(F=Do(),F===t&&(F=Rn())),F}function ve(){var F,N,W,Ce,ge,Se;if(Re++,F=v,k.test(A.charAt(v))?(N=A.charAt(v),v++):(N=t,Re===0&&_e(te)),N!==t){for(W=[],Ce=v,ge=it(),ge===t&&(ge=null),ge!==t?(ae.test(A.charAt(v))?(Se=A.charAt(v),v++):(Se=t,Re===0&&_e(De)),Se!==t?(ge=[ge,Se],Ce=ge):(v=Ce,Ce=t)):(v=Ce,Ce=t);Ce!==t;)W.push(Ce),Ce=v,ge=it(),ge===t&&(ge=null),ge!==t?(ae.test(A.charAt(v))?(Se=A.charAt(v),v++):(Se=t,Re===0&&_e(De)),Se!==t?(ge=[ge,Se],Ce=ge):(v=Ce,Ce=t)):(v=Ce,Ce=t);W!==t?(sA=F,N=pe(),F=N):(v=F,F=t)}else v=F,F=t;return Re--,F===t&&(N=t,Re===0&&_e(M)),F}function Rn(){var F,N,W,Ce,ge;if(F=v,A.substr(v,2)===me?(N=me,v+=2):(N=t,Re===0&&_e(be)),N===t&&(N=null),N!==t)if(Ye.test(A.charAt(v))?(W=A.charAt(v),v++):(W=t,Re===0&&_e(Ve)),W!==t){for(Ce=[],iA.test(A.charAt(v))?(ge=A.charAt(v),v++):(ge=t,Re===0&&_e(de));ge!==t;)Ce.push(ge),iA.test(A.charAt(v))?(ge=A.charAt(v),v++):(ge=t,Re===0&&_e(de));Ce!==t?(sA=F,N=pe(),F=N):(v=F,F=t)}else v=F,F=t;else v=F,F=t;return F}function cl(){var F,N;return F=v,A.substr(v,4)===mA?(N=mA,v+=4):(N=t,Re===0&&_e(Z)),N!==t&&(sA=F,N=U()),F=N,F}function dC(){var F,N;return F=v,A.substr(v,4)===oe?(N=oe,v+=4):(N=t,Re===0&&_e(V)),N!==t&&(sA=F,N=Ge()),F=N,F===t&&(F=v,A.substr(v,5)===EA?(N=EA,v+=5):(N=t,Re===0&&_e($A)),N!==t&&(sA=F,N=wA()),F=N),F}function Do(){var F,N,W,Ce;return Re++,F=v,A.charCodeAt(v)===34?(N=ye,v++):(N=t,Re===0&&_e(rA)),N!==t?(A.charCodeAt(v)===34?(W=ye,v++):(W=t,Re===0&&_e(rA)),W!==t?(sA=F,N=Xe(),F=N):(v=F,F=t)):(v=F,F=t),F===t&&(F=v,A.charCodeAt(v)===34?(N=ye,v++):(N=t,Re===0&&_e(rA)),N!==t?(W=yC(),W!==t?(A.charCodeAt(v)===34?(Ce=ye,v++):(Ce=t,Re===0&&_e(rA)),Ce!==t?(sA=F,N=vA(W),F=N):(v=F,F=t)):(v=F,F=t)):(v=F,F=t)),Re--,F===t&&(N=t,Re===0&&_e(ue)),F}function yC(){var F,N,W;if(F=v,N=[],W=ll(),W!==t)for(;W!==t;)N.push(W),W=ll();else N=t;return N!==t&&(sA=F,N=RA(N)),F=N,F}function ll(){var F,N,W,Ce,ge,Se;return fr.test(A.charAt(v))?(F=A.charAt(v),v++):(F=t,Re===0&&_e(Yt)),F===t&&(F=v,A.substr(v,2)===Io?(N=Io,v+=2):(N=t,Re===0&&_e(Al)),N!==t&&(sA=F,N=Eo()),F=N,F===t&&(F=v,A.substr(v,2)===cs?(N=cs,v+=2):(N=t,Re===0&&_e(Ga)),N!==t&&(sA=F,N=Ya()),F=N,F===t&&(F=v,A.substr(v,2)===Ur?(N=Ur,v+=2):(N=t,Re===0&&_e(Bo)),N!==t&&(sA=F,N=Ti()),F=N,F===t&&(F=v,A.substr(v,2)===_a?(N=_a,v+=2):(N=t,Re===0&&_e(po)),N!==t&&(sA=F,N=Qo()),F=N,F===t&&(F=v,A.substr(v,2)===HA?(N=HA,v+=2):(N=t,Re===0&&_e(Ha)),N!==t&&(sA=F,N=yo()),F=N,F===t&&(F=v,A.substr(v,2)===qi?(N=qi,v+=2):(N=t,Re===0&&_e(tl)),N!==t&&(sA=F,N=rl()),F=N,F===t&&(F=v,A.substr(v,2)===Ja?(N=Ja,v+=2):(N=t,Re===0&&_e(JA)),N!==t&&(sA=F,N=bt()),F=N,F===t&&(F=v,A.substr(v,2)===Gi?(N=Gi,v+=2):(N=t,Re===0&&_e(ja)),N!==t&&(sA=F,N=Wa()),F=N,F===t&&(F=v,A.substr(v,2)===at?(N=at,v+=2):(N=t,Re===0&&_e(il)),N!==t?(W=So(),W!==t?(Ce=So(),Ce!==t?(ge=So(),ge!==t?(Se=So(),Se!==t?(sA=F,N=Ze(W,Ce,ge,Se),F=N):(v=F,F=t)):(v=F,F=t)):(v=F,F=t)):(v=F,F=t)):(v=F,F=t)))))))))),F}function So(){var F;return Tr.test(A.charAt(v))?(F=A.charAt(v),v++):(F=t,Re===0&&_e(Ir)),F}function it(){var F,N;if(Re++,F=[],lA.test(A.charAt(v))?(N=A.charAt(v),v++):(N=t,Re===0&&_e(Er)),N!==t)for(;N!==t;)F.push(N),lA.test(A.charAt(v))?(N=A.charAt(v),v++):(N=t,Re===0&&_e(Er));else F=t;return Re--,F===t&&(N=t,Re===0&&_e(nl)),F}function mC(){var F,N;if(Re++,F=[],Br.test(A.charAt(v))?(N=A.charAt(v),v++):(N=t,Re===0&&_e(ls)),N!==t)for(;N!==t;)F.push(N),Br.test(A.charAt(v))?(N=A.charAt(v),v++):(N=t,Re===0&&_e(ls));else F=t;return Re--,F===t&&(N=t,Re===0&&_e(er)),F}function Qi(){var F,N,W,Ce,ge,Se;if(F=v,N=di(),N!==t){for(W=[],Ce=v,ge=it(),ge===t&&(ge=null),ge!==t?(Se=di(),Se!==t?(ge=[ge,Se],Ce=ge):(v=Ce,Ce=t)):(v=Ce,Ce=t);Ce!==t;)W.push(Ce),Ce=v,ge=it(),ge===t&&(ge=null),ge!==t?(Se=di(),Se!==t?(ge=[ge,Se],Ce=ge):(v=Ce,Ce=t)):(v=Ce,Ce=t);W!==t?(N=[N,W],F=N):(v=F,F=t)}else v=F,F=t;return F}function di(){var F;return A.substr(v,2)===AA?(F=AA,v+=2):(F=t,Re===0&&_e(Yi)),F===t&&(A.charCodeAt(v)===10?(F=He,v++):(F=t,Re===0&&_e(za)),F===t&&(A.charCodeAt(v)===13?(F=y,v++):(F=t,Re===0&&_e(dA)))),F}let eg=2,hs=0;if(yn=i(),yn!==t&&v===A.length)return yn;throw yn!==t&&v{"use strict";Object.defineProperty(ws,"__esModule",{value:!0});ws.parseSyml=ws.stringifySyml=ws.PreserveOrdering=void 0;var dv=Bv(),KX=Qv(),UX=/^(?![-?:,\][{}#&*!|>'"%@` \t\r\n]).([ \t]*(?![,\][{}:# \t\r\n]).)*$/,yv=["__metadata","version","resolution","dependencies","peerDependencies","dependenciesMeta","peerDependenciesMeta","binaries"],Dl=class{constructor(e){this.data=e}};ws.PreserveOrdering=Dl;function mv(A){return A.match(UX)?A:JSON.stringify(A)}function wv(A){return typeof A>"u"?!0:typeof A=="object"&&A!==null?Object.keys(A).every(e=>wv(A[e])):!1}function IQ(A,e,t){if(A===null)return`null +`;if(typeof A=="number"||typeof A=="boolean")return`${A.toString()} +`;if(typeof A=="string")return`${mv(A)} +`;if(Array.isArray(A)){if(A.length===0)return`[] +`;let r=" ".repeat(e);return` +${A.map(n=>`${r}- ${IQ(n,e+1,!1)}`).join("")}`}if(typeof A=="object"&&A){let[r,i]=A instanceof Dl?[A.data,!1]:[A,!0],n=" ".repeat(e),s=Object.keys(r);i&&s.sort((g,c)=>{let l=yv.indexOf(g),C=yv.indexOf(c);return l===-1&&C===-1?gc?1:0:l!==-1&&C===-1?-1:l===-1&&C!==-1?1:l-C});let a=s.filter(g=>!wv(r[g])).map((g,c)=>{let l=r[g],C=mv(g),f=IQ(l,e+1,!0),E=c>0||t?n:"",m=C.length>1024?`? ${C} +${E}:`:`${C}:`,w=f.startsWith(` +`)?f:` ${f}`;return`${E}${m}${w}`}).join(e===0?` +`:"")||` +`;return t?` +${a}`:`${a}`}throw new Error(`Unsupported value type (${A})`)}function Dv(A){try{let e=IQ(A,0,!1);return e!==` +`?e:""}catch(e){throw e.location&&(e.message=e.message.replace(/(\.)?$/,` (line ${e.location.start.line}, column ${e.location.start.column})$1`)),e}}ws.stringifySyml=Dv;Dv.PreserveOrdering=Dl;function TX(A){return A.endsWith(` +`)||(A+=` +`),(0,KX.parse)(A)}var qX=/^(#.*(\r?\n))*?#\s+yarn\s+lockfile\s+v1\r?\n/i;function GX(A){if(qX.test(A))return TX(A);let e=(0,dv.safeLoad)(A,{schema:dv.FAILSAFE_SCHEMA,json:!0});if(e==null)return{};if(typeof e!="object")throw new Error(`Expected an indexed object, got a ${typeof e} instead. Does your file follow Yaml's rules?`);if(Array.isArray(e))throw new Error("Expected an indexed object, got an array instead. Does your file follow Yaml's rules?");return e}function YX(A){return GX(A)}ws.parseSyml=YX});var wg=p(fA=>{"use strict";Object.defineProperty(fA,"__esModule",{value:!0});fA.stringifySyml=fA.parseSyml=fA.stringifyResolution=fA.parseResolution=fA.stringifyValueArgument=fA.stringifyShellLine=fA.stringifyRedirectArgument=fA.stringifyEnvSegment=fA.stringifyCommandLineThen=fA.stringifyCommandLine=fA.stringifyCommandChainThen=fA.stringifyCommandChain=fA.stringifyCommand=fA.stringifyArithmeticExpression=fA.stringifyArgumentSegment=fA.stringifyArgument=fA.stringifyShell=fA.parseShell=void 0;var sr=Db();Object.defineProperty(fA,"parseShell",{enumerable:!0,get:function(){return sr.parseShell}});Object.defineProperty(fA,"stringifyShell",{enumerable:!0,get:function(){return sr.stringifyShell}});Object.defineProperty(fA,"stringifyArgument",{enumerable:!0,get:function(){return sr.stringifyArgument}});Object.defineProperty(fA,"stringifyArgumentSegment",{enumerable:!0,get:function(){return sr.stringifyArgumentSegment}});Object.defineProperty(fA,"stringifyArithmeticExpression",{enumerable:!0,get:function(){return sr.stringifyArithmeticExpression}});Object.defineProperty(fA,"stringifyCommand",{enumerable:!0,get:function(){return sr.stringifyCommand}});Object.defineProperty(fA,"stringifyCommandChain",{enumerable:!0,get:function(){return sr.stringifyCommandChain}});Object.defineProperty(fA,"stringifyCommandChainThen",{enumerable:!0,get:function(){return sr.stringifyCommandChainThen}});Object.defineProperty(fA,"stringifyCommandLine",{enumerable:!0,get:function(){return sr.stringifyCommandLine}});Object.defineProperty(fA,"stringifyCommandLineThen",{enumerable:!0,get:function(){return sr.stringifyCommandLineThen}});Object.defineProperty(fA,"stringifyEnvSegment",{enumerable:!0,get:function(){return sr.stringifyEnvSegment}});Object.defineProperty(fA,"stringifyRedirectArgument",{enumerable:!0,get:function(){return sr.stringifyRedirectArgument}});Object.defineProperty(fA,"stringifyShellLine",{enumerable:!0,get:function(){return sr.stringifyShellLine}});Object.defineProperty(fA,"stringifyValueArgument",{enumerable:!0,get:function(){return sr.stringifyValueArgument}});var Fv=xb();Object.defineProperty(fA,"parseResolution",{enumerable:!0,get:function(){return Fv.parseResolution}});Object.defineProperty(fA,"stringifyResolution",{enumerable:!0,get:function(){return Fv.stringifyResolution}});var xv=Sv();Object.defineProperty(fA,"parseSyml",{enumerable:!0,get:function(){return xv.parseSyml}});Object.defineProperty(fA,"stringifySyml",{enumerable:!0,get:function(){return xv.stringifySyml}})});var bv=p((eRe,EQ)=>{"use strict";var _X=A=>{let e=!1,t=!1,r=!1;for(let i=0;i{if(!(typeof A=="string"||Array.isArray(A)))throw new TypeError("Expected the input to be `string | string[]`");e=Object.assign({pascalCase:!1},e);let t=i=>e.pascalCase?i.charAt(0).toUpperCase()+i.slice(1):i;return Array.isArray(A)?A=A.map(i=>i.trim()).filter(i=>i.length).join("-"):A=A.trim(),A.length===0?"":A.length===1?e.pascalCase?A.toUpperCase():A.toLowerCase():(A!==A.toLowerCase()&&(A=_X(A)),A=A.replace(/^[_.\- ]+/,"").toLowerCase().replace(/[_.\- ]+(\w|$)/g,(i,n)=>n.toUpperCase()).replace(/\d+(\w|$)/g,i=>i.toUpperCase()),t(A))};EQ.exports=Rv;EQ.exports.default=Rv});var kv=p((ARe,HX)=>{HX.exports=[{name:"AppVeyor",constant:"APPVEYOR",env:"APPVEYOR",pr:"APPVEYOR_PULL_REQUEST_NUMBER"},{name:"Azure Pipelines",constant:"AZURE_PIPELINES",env:"SYSTEM_TEAMFOUNDATIONCOLLECTIONURI",pr:"SYSTEM_PULLREQUEST_PULLREQUESTID"},{name:"Appcircle",constant:"APPCIRCLE",env:"AC_APPCIRCLE"},{name:"Bamboo",constant:"BAMBOO",env:"bamboo_planKey"},{name:"Bitbucket Pipelines",constant:"BITBUCKET",env:"BITBUCKET_COMMIT",pr:"BITBUCKET_PR_ID"},{name:"Bitrise",constant:"BITRISE",env:"BITRISE_IO",pr:"BITRISE_PULL_REQUEST"},{name:"Buddy",constant:"BUDDY",env:"BUDDY_WORKSPACE_ID",pr:"BUDDY_EXECUTION_PULL_REQUEST_ID"},{name:"Buildkite",constant:"BUILDKITE",env:"BUILDKITE",pr:{env:"BUILDKITE_PULL_REQUEST",ne:"false"}},{name:"CircleCI",constant:"CIRCLE",env:"CIRCLECI",pr:"CIRCLE_PULL_REQUEST"},{name:"Cirrus CI",constant:"CIRRUS",env:"CIRRUS_CI",pr:"CIRRUS_PR"},{name:"Codemagic",constant:"CODEMAGIC",env:"CM_BUILD_ID",pr:"CM_PULL_REQUEST"},{name:"AWS CodeBuild",constant:"CODEBUILD",env:"CODEBUILD_BUILD_ARN"},{name:"Codefresh",constant:"CODEFRESH",env:"CF_BUILD_ID",pr:{any:["CF_PULL_REQUEST_NUMBER","CF_PULL_REQUEST_ID"]}},{name:"Codeship",constant:"CODESHIP",env:{CI_NAME:"codeship"}},{name:"Drone",constant:"DRONE",env:"DRONE",pr:{DRONE_BUILD_EVENT:"pull_request"}},{name:"Woodpecker",constant:"WOODPECKER",env:{CI:"woodpecker"},pr:{CI_BUILD_EVENT:"pull_request"}},{name:"dsari",constant:"DSARI",env:"DSARI"},{name:"Expo Application Services",constant:"EAS",env:"EAS_BUILD"},{name:"GitHub Actions",constant:"GITHUB_ACTIONS",env:"GITHUB_ACTIONS",pr:{GITHUB_EVENT_NAME:"pull_request"}},{name:"GitLab CI",constant:"GITLAB",env:"GITLAB_CI",pr:"CI_MERGE_REQUEST_ID"},{name:"GoCD",constant:"GOCD",env:"GO_PIPELINE_LABEL"},{name:"LayerCI",constant:"LAYERCI",env:"LAYERCI",pr:"LAYERCI_PULL_REQUEST"},{name:"Hudson",constant:"HUDSON",env:"HUDSON_URL"},{name:"Jenkins",constant:"JENKINS",env:["JENKINS_URL","BUILD_ID"],pr:{any:["ghprbPullId","CHANGE_ID"]}},{name:"Magnum CI",constant:"MAGNUM",env:"MAGNUM"},{name:"Netlify CI",constant:"NETLIFY",env:"NETLIFY",pr:{env:"PULL_REQUEST",ne:"false"}},{name:"Nevercode",constant:"NEVERCODE",env:"NEVERCODE",pr:{env:"NEVERCODE_PULL_REQUEST",ne:"false"}},{name:"Render",constant:"RENDER",env:"RENDER",pr:{IS_PULL_REQUEST:"true"}},{name:"Sail CI",constant:"SAIL",env:"SAILCI",pr:"SAIL_PULL_REQUEST_NUMBER"},{name:"Semaphore",constant:"SEMAPHORE",env:"SEMAPHORE",pr:"PULL_REQUEST_NUMBER"},{name:"Screwdriver",constant:"SCREWDRIVER",env:"SCREWDRIVER",pr:{env:"SD_PULL_REQUEST",ne:"false"}},{name:"Shippable",constant:"SHIPPABLE",env:"SHIPPABLE",pr:{IS_PULL_REQUEST:"true"}},{name:"Solano CI",constant:"SOLANO",env:"TDDIUM",pr:"TDDIUM_PR_ID"},{name:"Strider CD",constant:"STRIDER",env:"STRIDER"},{name:"TaskCluster",constant:"TASKCLUSTER",env:["TASK_ID","RUN_ID"]},{name:"TeamCity",constant:"TEAMCITY",env:"TEAMCITY_VERSION"},{name:"Travis CI",constant:"TRAVIS",env:"TRAVIS",pr:{env:"TRAVIS_PULL_REQUEST",ne:"false"}},{name:"Vercel",constant:"VERCEL",env:"NOW_BUILDER"},{name:"Visual Studio App Center",constant:"APPCENTER",env:"APPCENTER_BUILD_ID"},{name:"Xcode Cloud",constant:"XCODE_CLOUD",env:"CI_XCODE_PROJECT",pr:"CI_PULL_REQUEST_NUMBER"},{name:"Xcode Server",constant:"XCODE_SERVER",env:"XCS"}]});var Qh=p(wr=>{"use strict";var Nv=kv(),mr=process.env;Object.defineProperty(wr,"_vendors",{value:Nv.map(function(A){return A.constant})});wr.name=null;wr.isPR=null;Nv.forEach(function(A){let t=(Array.isArray(A.env)?A.env:[A.env]).every(function(r){return vv(r)});if(wr[A.constant]=t,!!t)switch(wr.name=A.name,typeof A.pr){case"string":wr.isPR=!!mr[A.pr];break;case"object":"env"in A.pr?wr.isPR=A.pr.env in mr&&mr[A.pr.env]!==A.pr.ne:"any"in A.pr?wr.isPR=A.pr.any.some(function(r){return!!mr[r]}):wr.isPR=vv(A.pr);break;default:wr.isPR=null}});wr.isCI=!!(mr.CI||mr.CONTINUOUS_INTEGRATION||mr.BUILD_NUMBER||mr.CI_APP_ID||mr.CI_BUILD_ID||mr.CI_BUILD_NUMBER||mr.RUN_ID||wr.name);function vv(A){return typeof A=="string"?!!mr[A]:Object.keys(A).every(function(e){return mr[e]===A[e]})}});var dh=p(Dr=>{"use strict";Object.defineProperty(Dr,"__esModule",{value:!0});var JX=0,jX=1,WX=2,zX="",VX="\0",XX=-1,ZX=/^(-h|--help)(?:=([0-9]+))?$/,$X=/^(--[a-z]+(?:-[a-z]+)*|-[a-zA-Z]+)$/,e7=/^-[a-zA-Z]{2,}$/,A7=/^([^=]+)=([\s\S]*)$/,t7=process.env.DEBUG_CLI==="1";Dr.BATCH_REGEX=e7;Dr.BINDING_REGEX=A7;Dr.DEBUG=t7;Dr.END_OF_INPUT=VX;Dr.HELP_COMMAND_INDEX=XX;Dr.HELP_REGEX=ZX;Dr.NODE_ERRORED=WX;Dr.NODE_INITIAL=JX;Dr.NODE_SUCCESS=jX;Dr.OPTION_REGEX=$X;Dr.START_OF_INPUT=zX});var yh=p(Sl=>{"use strict";Object.defineProperty(Sl,"__esModule",{value:!0});var r7=dh(),BQ=class extends Error{constructor(e){super(e),this.clipanion={type:"usage"},this.name="UsageError"}},pQ=class extends Error{constructor(e,t){if(super(),this.input=e,this.candidates=t,this.clipanion={type:"none"},this.name="UnknownSyntaxError",this.candidates.length===0)this.message="Command not found, but we're not sure what's the alternative.";else if(this.candidates.every(r=>r.reason!==null&&r.reason===t[0].reason)){let[{reason:r}]=this.candidates;this.message=`${r} + +${this.candidates.map(({usage:i})=>`$ ${i}`).join(` +`)}`}else if(this.candidates.length===1){let[{usage:r}]=this.candidates;this.message=`Command not found; did you mean: + +$ ${r} +${dQ(e)}`}else this.message=`Command not found; did you mean one of: + +${this.candidates.map(({usage:r},i)=>`${`${i}.`.padStart(4)} ${r}`).join(` +`)} + +${dQ(e)}`}},QQ=class extends Error{constructor(e,t){super(),this.input=e,this.usages=t,this.clipanion={type:"none"},this.name="AmbiguousSyntaxError",this.message=`Cannot find which to pick amongst the following alternatives: + +${this.usages.map((r,i)=>`${`${i}.`.padStart(4)} ${r}`).join(` +`)} + +${dQ(e)}`}},dQ=A=>`While running ${A.filter(e=>e!==r7.END_OF_INPUT).map(e=>{let t=JSON.stringify(e);return e.match(/\s/)||e.length===0||t!==`"${e}"`?t:e}).join(" ")}`;Sl.AmbiguousSyntaxError=QQ;Sl.UnknownSyntaxError=pQ;Sl.UsageError=BQ});var mQ=p(Fl=>{"use strict";Object.defineProperty(Fl,"__esModule",{value:!0});var Mv=80,yQ=Array(Mv).fill("\u2501");for(let A=0;A<=24;++A)yQ[yQ.length-A]=`\x1B[38;5;${232+A}m\u2501`;var i7={header:A=>`\x1B[1m\u2501\u2501\u2501 ${A}${A.length`\x1B[1m${A}\x1B[22m`,error:A=>`\x1B[31m\x1B[1m${A}\x1B[22m\x1B[39m`,code:A=>`\x1B[36m${A}\x1B[39m`},n7={header:A=>A,bold:A=>A,error:A=>A,code:A=>A};function s7(A){let e=A.split(` +`),t=e.filter(i=>i.match(/\S/)),r=t.length>0?t.reduce((i,n)=>Math.min(i,n.length-n.trimStart().length),Number.MAX_VALUE):0;return e.map(i=>i.slice(r).trimRight()).join(` +`)}function o7(A,{format:e,paragraphs:t}){return A=A.replace(/\r\n?/g,` +`),A=s7(A),A=A.replace(/^\n+|\n+$/g,""),A=A.replace(/^(\s*)-([^\n]*?)\n+/gm,`$1-$2 + +`),A=A.replace(/\n(\n)?\n*/g,(r,i)=>i||" "),t&&(A=A.split(/\n/).map(r=>{let i=r.match(/^\s*[*-][\t ]+(.*)/);if(!i)return r.match(/(.{1,80})(?: |$)/g).join(` +`);let n=r.length-r.trimStart().length;return i[1].match(new RegExp(`(.{1,${78-n}})(?: |$)`,"g")).map((s,a)=>" ".repeat(n)+(a===0?"- ":" ")+s).join(` +`)}).join(` + +`)),A=A.replace(/(`+)((?:.|[\n])*?)\1/g,(r,i,n)=>e.code(i+n+i)),A=A.replace(/(\*\*)((?:.|[\n])*?)\1/g,(r,i,n)=>e.bold(i+n+i)),A?`${A} +`:""}Fl.formatMarkdownish=o7;Fl.richFormat=i7;Fl.textFormat=n7});var Pn=p(Ds=>{"use strict";Object.defineProperty(Ds,"__esModule",{value:!0});var Lv=yh(),Pv=Symbol("clipanion/isOption");function a7(A){return{...A,[Pv]:!0}}function g7(A,e){return typeof A>"u"?[A,e]:typeof A=="object"&&A!==null&&!Array.isArray(A)?[void 0,A]:[A,e]}function wQ(A,{mergeName:e=!1}={}){let t=A.match(/^([^:]+): (.*)$/m);if(!t)return"validation failed";let[,r,i]=t;return e&&(i=i[0].toLowerCase()+i.slice(1)),i=r!=="."||!e?`${r.replace(/^\.(\[|$)/,"$1")}: ${i}`:`: ${i}`,i}function Ov(A,e){return e.length===1?new Lv.UsageError(`${A}${wQ(e[0],{mergeName:!0})}`):new Lv.UsageError(`${A}: +${e.map(t=>` +- ${wQ(t)}`).join("")}`)}function c7(A,e,t){if(typeof t>"u")return e;let r=[],i=[],n=a=>{let g=e;return e=a,n.bind(null,g)};if(!t(e,{errors:r,coercions:i,coercion:n}))throw Ov(`Invalid value for ${A}`,r);for(let[,a]of i)a();return e}Ds.applyValidator=c7;Ds.cleanValidationError=wQ;Ds.formatError=Ov;Ds.isOptionSymbol=Pv;Ds.makeCommandOption=a7;Ds.rerouteArguments=g7});var Hv=p(qe=>{"use strict";Object.defineProperty(qe,"__esModule",{value:!0});var l7=/^[a-zA-Z_][a-zA-Z0-9_]*$/;function qA(A){return A===null?"null":A===void 0?"undefined":A===""?"an empty string":typeof A=="symbol"?`<${A.toString()}>`:Array.isArray(A)?"an array":JSON.stringify(A)}function Dg(A,e){if(A.length===0)return"nothing";if(A.length===1)return qA(A[0]);let t=A.slice(0,-1),r=A[A.length-1],i=A.length>2?`, ${e} `:` ${e} `;return`${t.map(n=>qA(n)).join(", ")}${i}${qA(r)}`}function Ss(A,e){var t,r,i;return typeof e=="number"?`${(t=A?.p)!==null&&t!==void 0?t:"."}[${e}]`:l7.test(e)?`${(r=A?.p)!==null&&r!==void 0?r:""}.${e}`:`${(i=A?.p)!==null&&i!==void 0?i:"."}[${JSON.stringify(e)}]`}function DQ(A,e,t){return A===1?e:t}var u7=/^#[0-9a-f]{6}$/i,C7=/^#[0-9a-f]{6}([0-9a-f]{2})?$/i,h7=/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/,f7=/^[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89aAbB][a-f0-9]{3}-[a-f0-9]{12}$/i,Kv=/^(?:[1-9]\d{3}(-?)(?:(?:0[1-9]|1[0-2])\1(?:0[1-9]|1\d|2[0-8])|(?:0[13-9]|1[0-2])\1(?:29|30)|(?:0[13578]|1[02])(?:\1)31|00[1-9]|0[1-9]\d|[12]\d{2}|3(?:[0-5]\d|6[0-5]))|(?:[1-9]\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[13579][26])00)(?:(-?)02(?:\2)29|-?366))T(?:[01]\d|2[0-3])(:?)[0-5]\d(?:\3[0-5]\d)?(?:Z|[+-][01]\d(?:\3[0-5]\d)?)$/;function je({errors:A,p:e}={},t){return A?.push(`${e??"."}: ${t}`),!1}function I7(A,e){return t=>{A[e]=t}}function On(A,e){return t=>{let r=A[e];return A[e]=t,On(A,e).bind(null,r)}}function xl(A,e,t){let r=()=>(A(t()),i),i=()=>(A(e),r);return r}function SQ(){return cA({test:(A,e)=>!0})}function Uv(A){return cA({test:(e,t)=>e!==A?je(t,`Expected ${qA(A)} (got ${qA(e)})`):!0})}function Tv(){return cA({test:(A,e)=>typeof A!="string"?je(e,`Expected a string (got ${qA(A)})`):!0})}function E7(A){let e=Array.isArray(A)?A:Object.values(A),t=e.every(i=>typeof i=="string"||typeof i=="number"),r=new Set(e);return r.size===1?Uv([...r][0]):cA({test:(i,n)=>r.has(i)?!0:t?je(n,`Expected one of ${Dg(e,"or")} (got ${qA(i)})`):je(n,`Expected a valid enumeration value (got ${qA(i)})`)})}var B7=new Map([["true",!0],["True",!0],["1",!0],[1,!0],["false",!1],["False",!1],["0",!1],[0,!1]]);function p7(){return cA({test:(A,e)=>{var t;if(typeof A!="boolean"){if(typeof e?.coercions<"u"){if(typeof e?.coercion>"u")return je(e,"Unbound coercion result");let r=B7.get(A);if(typeof r<"u")return e.coercions.push([(t=e.p)!==null&&t!==void 0?t:".",e.coercion.bind(null,r)]),!0}return je(e,`Expected a boolean (got ${qA(A)})`)}return!0}})}function Q7(){return cA({test:(A,e)=>{var t;if(typeof A!="number"){if(typeof e?.coercions<"u"){if(typeof e?.coercion>"u")return je(e,"Unbound coercion result");let r;if(typeof A=="string"){let i;try{i=JSON.parse(A)}catch{}if(typeof i=="number")if(JSON.stringify(i)===A)r=i;else return je(e,`Received a number that can't be safely represented by the runtime (${A})`)}if(typeof r<"u")return e.coercions.push([(t=e.p)!==null&&t!==void 0?t:".",e.coercion.bind(null,r)]),!0}return je(e,`Expected a number (got ${qA(A)})`)}return!0}})}function d7(){return cA({test:(A,e)=>{var t;if(!(A instanceof Date)){if(typeof e?.coercions<"u"){if(typeof e?.coercion>"u")return je(e,"Unbound coercion result");let r;if(typeof A=="string"&&Kv.test(A))r=new Date(A);else{let i;if(typeof A=="string"){let n;try{n=JSON.parse(A)}catch{}typeof n=="number"&&(i=n)}else typeof A=="number"&&(i=A);if(typeof i<"u")if(Number.isSafeInteger(i)||!Number.isSafeInteger(i*1e3))r=new Date(i*1e3);else return je(e,`Received a timestamp that can't be safely represented by the runtime (${A})`)}if(typeof r<"u")return e.coercions.push([(t=e.p)!==null&&t!==void 0?t:".",e.coercion.bind(null,r)]),!0}return je(e,`Expected a date (got ${qA(A)})`)}return!0}})}function mh(A,{delimiter:e}={}){return cA({test:(t,r)=>{var i;let n=t;if(typeof t=="string"&&typeof e<"u"&&typeof r?.coercions<"u"){if(typeof r?.coercion>"u")return je(r,"Unbound coercion result");t=t.split(e)}if(!Array.isArray(t))return je(r,`Expected an array (got ${qA(t)})`);let s=!0;for(let a=0,g=t.length;a{var n,s;if(Object.getPrototypeOf(r).toString()==="[object Set]")if(typeof i?.coercions<"u"){if(typeof i?.coercion>"u")return je(i,"Unbound coercion result");let a=[...r],g=[...r];if(!t(g,Object.assign(Object.assign({},i),{coercion:void 0})))return!1;let c=()=>g.some((l,C)=>l!==a[C])?new Set(g):r;return i.coercions.push([(n=i.p)!==null&&n!==void 0?n:".",xl(i.coercion,r,c)]),!0}else{let a=!0;for(let g of r)if(a=A(g,Object.assign({},i))&&a,!a&&i?.errors==null)break;return a}if(typeof i?.coercions<"u"){if(typeof i?.coercion>"u")return je(i,"Unbound coercion result");let a={value:r};return t(r,Object.assign(Object.assign({},i),{coercion:On(a,"value")}))?(i.coercions.push([(s=i.p)!==null&&s!==void 0?s:".",xl(i.coercion,r,()=>new Set(a.value))]),!0):!1}return je(i,`Expected a set (got ${qA(r)})`)}})}function m7(A,e){let t=mh(wh([A,e])),r=Dh(e,{keys:A});return cA({test:(i,n)=>{var s,a,g;if(Object.getPrototypeOf(i).toString()==="[object Map]")if(typeof n?.coercions<"u"){if(typeof n?.coercion>"u")return je(n,"Unbound coercion result");let c=[...i],l=[...i];if(!t(l,Object.assign(Object.assign({},n),{coercion:void 0})))return!1;let C=()=>l.some((f,E)=>f[0]!==c[E][0]||f[1]!==c[E][1])?new Map(l):i;return n.coercions.push([(s=n.p)!==null&&s!==void 0?s:".",xl(n.coercion,i,C)]),!0}else{let c=!0;for(let[l,C]of i)if(c=A(l,Object.assign({},n))&&c,!c&&n?.errors==null||(c=e(C,Object.assign(Object.assign({},n),{p:Ss(n,l)}))&&c,!c&&n?.errors==null))break;return c}if(typeof n?.coercions<"u"){if(typeof n?.coercion>"u")return je(n,"Unbound coercion result");let c={value:i};return Array.isArray(i)?t(i,Object.assign(Object.assign({},n),{coercion:void 0}))?(n.coercions.push([(a=n.p)!==null&&a!==void 0?a:".",xl(n.coercion,i,()=>new Map(c.value))]),!0):!1:r(i,Object.assign(Object.assign({},n),{coercion:On(c,"value")}))?(n.coercions.push([(g=n.p)!==null&&g!==void 0?g:".",xl(n.coercion,i,()=>new Map(Object.entries(c.value)))]),!0):!1}return je(n,`Expected a map (got ${qA(i)})`)}})}function wh(A,{delimiter:e}={}){let t=Yv(A.length);return cA({test:(r,i)=>{var n;if(typeof r=="string"&&typeof e<"u"&&typeof i?.coercions<"u"){if(typeof i?.coercion>"u")return je(i,"Unbound coercion result");r=r.split(e),i.coercions.push([(n=i.p)!==null&&n!==void 0?n:".",i.coercion.bind(null,r)])}if(!Array.isArray(r))return je(i,`Expected a tuple (got ${qA(r)})`);let s=t(r,Object.assign({},i));for(let a=0,g=r.length;a{var n;if(Array.isArray(r)&&typeof i?.coercions<"u")return typeof i?.coercion>"u"?je(i,"Unbound coercion result"):t(r,Object.assign(Object.assign({},i),{coercion:void 0}))?(r=Object.fromEntries(r),i.coercions.push([(n=i.p)!==null&&n!==void 0?n:".",i.coercion.bind(null,r)]),!0):!1;if(typeof r!="object"||r===null)return je(i,`Expected an object (got ${qA(r)})`);let s=Object.keys(r),a=!0;for(let g=0,c=s.length;g{if(typeof i!="object"||i===null)return je(n,`Expected an object (got ${qA(i)})`);let s=new Set([...t,...Object.keys(i)]),a={},g=!0;for(let c of s){if(c==="constructor"||c==="__proto__")g=je(Object.assign(Object.assign({},n),{p:Ss(n,c)}),"Unsafe property name");else{let l=Object.prototype.hasOwnProperty.call(A,c)?A[c]:void 0,C=Object.prototype.hasOwnProperty.call(i,c)?i[c]:void 0;typeof l<"u"?g=l(C,Object.assign(Object.assign({},n),{p:Ss(n,c),coercion:On(i,c)}))&&g:e===null?g=je(Object.assign(Object.assign({},n),{p:Ss(n,c)}),`Extraneous property (got ${qA(C)})`):Object.defineProperty(a,c,{enumerable:!0,get:()=>C,set:I7(i,c)})}if(!g&&n?.errors==null)break}return e!==null&&(g||n?.errors!=null)&&(g=e(a,n)&&g),g}});return Object.assign(r,{properties:A})}function D7(A){return qv(A,{extra:Dh(SQ())})}var S7=A=>cA({test:(e,t)=>e instanceof A?!0:je(t,`Expected an instance of ${A.name} (got ${qA(e)})`)}),F7=(A,{exclusive:e=!1}={})=>cA({test:(t,r)=>{var i,n,s;let a=[],g=typeof r?.errors<"u"?[]:void 0;for(let c=0,l=A.length;c1?je(r,`Expected to match exactly a single predicate (matched ${a.join(", ")})`):(s=r?.errors)===null||s===void 0||s.push(...g),!1}});function Gv(A){return()=>A}function cA({test:A}){return Gv(A)()}var Fs=class extends Error{constructor({errors:e}={}){let t="Type mismatch";if(e&&e.length>0){t+=` +`;for(let r of e)t+=` +- ${r}`}super(t)}};function x7(A,e){if(!e(A))throw new Fs}function R7(A,e){let t=[];if(!e(A,{errors:t}))throw new Fs({errors:t})}function b7(A,e){}function k7(A,e,{coerce:t=!1,errors:r,throw:i}={}){let n=r?[]:void 0;if(!t){if(e(A,{errors:n}))return i?A:{value:A,errors:void 0};if(i)throw new Fs({errors:n});return{value:void 0,errors:n??!0}}let s={value:A},a=On(s,"value"),g=[];if(!e(A,{errors:n,coercion:a,coercions:g})){if(i)throw new Fs({errors:n});return{value:void 0,errors:n??!0}}for(let[,c]of g)c();return i?s.value:{value:s.value,errors:void 0}}function v7(A,e){let t=wh(A);return(...r)=>{if(!t(r))throw new Fs;return e(...r)}}function N7(A){return cA({test:(e,t)=>e.length>=A?!0:je(t,`Expected to have a length of at least ${A} elements (got ${e.length})`)})}function M7(A){return cA({test:(e,t)=>e.length<=A?!0:je(t,`Expected to have a length of at most ${A} elements (got ${e.length})`)})}function Yv(A){return cA({test:(e,t)=>e.length!==A?je(t,`Expected to have a length of exactly ${A} elements (got ${e.length})`):!0})}function L7({map:A}={}){return cA({test:(e,t)=>{let r=new Set,i=new Set;for(let n=0,s=e.length;nA<=0?!0:je(e,`Expected to be negative (got ${A})`)})}function O7(){return cA({test:(A,e)=>A>=0?!0:je(e,`Expected to be positive (got ${A})`)})}function K7(A){return cA({test:(e,t)=>e>=A?!0:je(t,`Expected to be at least ${A} (got ${e})`)})}function U7(A){return cA({test:(e,t)=>e<=A?!0:je(t,`Expected to be at most ${A} (got ${e})`)})}function T7(A,e){return cA({test:(t,r)=>t>=A&&t<=e?!0:je(r,`Expected to be in the [${A}; ${e}] range (got ${t})`)})}function q7(A,e){return cA({test:(t,r)=>t>=A&&te!==Math.round(e)?je(t,`Expected to be an integer (got ${e})`):!A&&!Number.isSafeInteger(e)?je(t,`Expected to be a safe integer (got ${e})`):!0})}function Y7(A){return cA({test:(e,t)=>A.test(e)?!0:je(t,`Expected to match the pattern ${A.toString()} (got ${qA(e)})`)})}function _7(){return cA({test:(A,e)=>A!==A.toLowerCase()?je(e,`Expected to be all-lowercase (got ${A})`):!0})}function H7(){return cA({test:(A,e)=>A!==A.toUpperCase()?je(e,`Expected to be all-uppercase (got ${A})`):!0})}function J7(){return cA({test:(A,e)=>f7.test(A)?!0:je(e,`Expected to be a valid UUID v4 (got ${qA(A)})`)})}function j7(){return cA({test:(A,e)=>Kv.test(A)?!0:je(e,`Expected to be a valid ISO 8601 date string (got ${qA(A)})`)})}function W7({alpha:A=!1}){return cA({test:(e,t)=>(A?u7.test(e):C7.test(e))?!0:je(t,`Expected to be a valid hexadecimal color string (got ${qA(e)})`)})}function z7(){return cA({test:(A,e)=>h7.test(A)?!0:je(e,`Expected to be a valid base 64 string (got ${qA(A)})`)})}function V7(A=SQ()){return cA({test:(e,t)=>{let r;try{r=JSON.parse(e)}catch{return je(t,`Expected to be a valid JSON string (got ${qA(e)})`)}return A(r,t)}})}function _v(A,...e){let t=Array.isArray(e[0])?e[0]:e;return cA({test:(r,i)=>{var n,s;let a={value:r},g=typeof i?.coercions<"u"?On(a,"value"):void 0,c=typeof i?.coercions<"u"?[]:void 0;if(!A(r,Object.assign(Object.assign({},i),{coercion:g,coercions:c})))return!1;let l=[];if(typeof c<"u")for(let[,C]of c)l.push(C());try{if(typeof i?.coercions<"u"){if(a.value!==r){if(typeof i?.coercion>"u")return je(i,"Unbound coercion result");i.coercions.push([(n=i.p)!==null&&n!==void 0?n:".",i.coercion.bind(null,a.value)])}(s=i?.coercions)===null||s===void 0||s.push(...c)}return t.every(C=>C(a.value,i))}finally{for(let C of l)C()}}})}function X7(A,...e){let t=Array.isArray(e[0])?e[0]:e;return _v(A,t)}function Z7(A){return cA({test:(e,t)=>typeof e>"u"?!0:A(e,t)})}function $7(A){return cA({test:(e,t)=>e===null?!0:A(e,t)})}var Sh={missing:(A,e)=>A.has(e),undefined:(A,e,t)=>A.has(e)&&typeof t[e]<"u",nil:(A,e,t)=>A.has(e)&&t[e]!=null,falsy:(A,e,t)=>A.has(e)&&!!t[e]};function eZ(A,e){var t;let r=new Set(A),i=Sh[(t=e?.missingIf)!==null&&t!==void 0?t:"missing"];return cA({test:(n,s)=>{let a=new Set(Object.keys(n)),g=[];for(let c of r)i(a,c,n)||g.push(c);return g.length>0?je(s,`Missing required ${DQ(g.length,"property","properties")} ${Dg(g,"and")}`):!0}})}function AZ(A,e){var t;let r=new Set(A),i=Sh[(t=e?.missingIf)!==null&&t!==void 0?t:"missing"];return cA({test:(n,s)=>Object.keys(n).some(c=>i(r,c,n))?!0:je(s,`Missing at least one property from ${Dg(Array.from(r),"or")}`)})}function tZ(A,e){var t;let r=new Set(A),i=Sh[(t=e?.missingIf)!==null&&t!==void 0?t:"missing"];return cA({test:(n,s)=>{let a=new Set(Object.keys(n)),g=[];for(let c of r)i(a,c,n)&&g.push(c);return g.length>0?je(s,`Forbidden ${DQ(g.length,"property","properties")} ${Dg(g,"and")}`):!0}})}function rZ(A,e){var t;let r=new Set(A),i=Sh[(t=e?.missingIf)!==null&&t!==void 0?t:"missing"];return cA({test:(n,s)=>{let a=new Set(Object.keys(n)),g=[];for(let c of r)i(a,c,n)&&g.push(c);return g.length>1?je(s,`Mutually exclusive properties ${Dg(g,"and")}`):!0}})}(function(A){A.Forbids="Forbids",A.Requires="Requires"})(qe.KeyRelationship||(qe.KeyRelationship={}));var iZ={[qe.KeyRelationship.Forbids]:{expect:!1,message:"forbids using"},[qe.KeyRelationship.Requires]:{expect:!0,message:"requires using"}};function nZ(A,e,t,{ignore:r=[]}={}){let i=new Set(r),n=new Set(t),s=iZ[e],a=e===qe.KeyRelationship.Forbids?"or":"and";return cA({test:(g,c)=>{let l=new Set(Object.keys(g));if(!l.has(A)||i.has(g[A]))return!0;let C=[];for(let f of n)(l.has(f)&&!i.has(g[f]))!==s.expect&&C.push(f);return C.length>=1?je(c,`Property "${A}" ${s.message} ${DQ(C.length,"property","properties")} ${Dg(C,a)}`):!0}})}qe.TypeAssertionError=Fs;qe.applyCascade=X7;qe.as=k7;qe.assert=x7;qe.assertWithErrors=R7;qe.cascade=_v;qe.fn=v7;qe.hasAtLeastOneKey=AZ;qe.hasExactLength=Yv;qe.hasForbiddenKeys=tZ;qe.hasKeyRelationship=nZ;qe.hasMaxLength=M7;qe.hasMinLength=N7;qe.hasMutuallyExclusiveKeys=rZ;qe.hasRequiredKeys=eZ;qe.hasUniqueItems=L7;qe.isArray=mh;qe.isAtLeast=K7;qe.isAtMost=U7;qe.isBase64=z7;qe.isBoolean=p7;qe.isDate=d7;qe.isDict=w7;qe.isEnum=E7;qe.isHexColor=W7;qe.isISO8601=j7;qe.isInExclusiveRange=q7;qe.isInInclusiveRange=T7;qe.isInstanceOf=S7;qe.isInteger=G7;qe.isJSON=V7;qe.isLiteral=Uv;qe.isLowerCase=_7;qe.isMap=m7;qe.isNegative=P7;qe.isNullable=$7;qe.isNumber=Q7;qe.isObject=qv;qe.isOneOf=F7;qe.isOptional=Z7;qe.isPartial=D7;qe.isPositive=O7;qe.isRecord=Dh;qe.isSet=y7;qe.isString=Tv;qe.isTuple=wh;qe.isUUID4=J7;qe.isUnknown=SQ;qe.isUpperCase=H7;qe.makeTrait=Gv;qe.makeValidator=cA;qe.matchesRegExp=Y7;qe.softAssert=b7});var _o=p(FQ=>{"use strict";Object.defineProperty(FQ,"__esModule",{value:!0});var Jv=Pn();function sZ(A){if(A&&A.__esModule)return A;var e=Object.create(null);return A&&Object.keys(A).forEach(function(t){if(t!=="default"){var r=Object.getOwnPropertyDescriptor(A,t);Object.defineProperty(e,t,r.get?r:{enumerable:!0,get:function(){return A[t]}})}}),e.default=A,Object.freeze(e)}var Rl=class{constructor(){this.help=!1}static Usage(e){return e}async catch(e){throw e}async validateAndExecute(){let t=this.constructor.schema;if(Array.isArray(t)){let{isDict:i,isUnknown:n,applyCascade:s}=await Promise.resolve().then(function(){return sZ(Hv())}),a=s(i(n()),t),g=[],c=[];if(!a(this,{errors:g,coercions:c}))throw Jv.formatError("Invalid option schema",g);for(let[,C]of c)C()}else if(t!=null)throw new Error("Invalid command schema");let r=await this.execute();return typeof r<"u"?r:0}};Rl.isOption=Jv.isOptionSymbol;Rl.Default=[];FQ.Command=Rl});var kh=p(GA=>{"use strict";Object.defineProperty(GA,"__esModule",{value:!0});var ze=dh(),Rh=yh();function Jt(A){ze.DEBUG&&console.log(A)}var jv={candidateUsage:null,requiredOptions:[],errorMessage:null,ignoreOptions:!1,path:[],positionals:[],options:[],remainder:null,selectedIndex:ze.HELP_COMMAND_INDEX};function xQ(){return{nodes:[Nt(),Nt(),Nt()]}}function Wv(A){let e=xQ(),t=[],r=e.nodes.length;for(let i of A){t.push(r);for(let n=0;n{if(e.has(r))return;e.add(r);let i=A.nodes[r];for(let s of Object.values(i.statics))for(let{to:a}of s)t(a);for(let[,{to:s}]of i.dynamics)t(s);for(let{to:s}of i.shortcuts)t(s);let n=new Set(i.shortcuts.map(({to:s})=>s));for(;i.shortcuts.length>0;){let{to:s}=i.shortcuts.shift(),a=A.nodes[s];for(let[g,c]of Object.entries(a.statics)){let l=Object.prototype.hasOwnProperty.call(i.statics,g)?i.statics[g]:i.statics[g]=[];for(let C of c)l.some(({to:f})=>C.to===f)||l.push(C)}for(let[g,c]of a.dynamics)i.dynamics.some(([l,{to:C}])=>g===l&&c.to===C)||i.dynamics.push([g,c]);for(let g of a.shortcuts)n.has(g.to)||(i.shortcuts.push(g),n.add(g.to))}};t(ze.NODE_INITIAL)}function Vv(A,{prefix:e=""}={}){if(ze.DEBUG){Jt(`${e}Nodes are:`);for(let t=0;tg!==ze.NODE_ERRORED).map(({state:g})=>({usage:g.candidateUsage,reason:null})));if(a.every(({node:g})=>g===ze.NODE_ERRORED))throw new Rh.UnknownSyntaxError(e,a.map(({state:g})=>({usage:g.candidateUsage,reason:g.errorMessage})));r=Xv(a)}if(r.length>0){Jt(" Results:");for(let n of r)Jt(` - ${n.node} -> ${JSON.stringify(n.state)}`)}else Jt(" No results");return r}function oZ(A,e){if(e.selectedIndex!==null)return!0;if(Object.prototype.hasOwnProperty.call(A.statics,ze.END_OF_INPUT)){for(let{to:t}of A.statics[ze.END_OF_INPUT])if(t===ze.NODE_SUCCESS)return!0}return!1}function aZ(A,e,t){let r=t&&e.length>0?[""]:[],i=RQ(A,e,t),n=[],s=new Set,a=(g,c,l=!0)=>{let C=[c];for(;C.length>0;){let E=C;C=[];for(let m of E){let w=A.nodes[m],D=Object.keys(w.statics);for(let L of Object.keys(w.statics)){let K=D[0];for(let{to:_,reducer:le}of w.statics[K])le==="pushPath"&&(l||g.push(K),C.push(_))}}l=!1}let f=JSON.stringify(g);s.has(f)||(n.push(g),s.add(f))};for(let{node:g,state:c}of i){if(c.remainder!==null){a([c.remainder],g);continue}let l=A.nodes[g],C=oZ(l,c);for(let[f,E]of Object.entries(l.statics))(C&&f!==ze.END_OF_INPUT||!f.startsWith("-")&&E.some(({reducer:m})=>m==="pushPath"))&&a([...r,f],g);if(!!C)for(let[f,{to:E}]of l.dynamics){if(E===ze.NODE_ERRORED)continue;let m=tN(f,c);if(m!==null)for(let w of m)a([...r,w],g)}}return[...n].sort()}function gZ(A,e){let t=RQ(A,[...e,ze.END_OF_INPUT]);return Zv(e,t.map(({state:r})=>r))}function Xv(A){let e=0;for(let{state:t}of A)t.path.length>e&&(e=t.path.length);return A.filter(({state:t})=>t.path.length===e)}function Zv(A,e){let t=e.filter(C=>C.selectedIndex!==null);if(t.length===0)throw new Error;let r=t.filter(C=>C.selectedIndex===ze.HELP_COMMAND_INDEX||C.requiredOptions.every(f=>f.some(E=>C.options.find(m=>m.name===E))));if(r.length===0)throw new Rh.UnknownSyntaxError(A,t.map(C=>({usage:C.candidateUsage,reason:null})));let i=0;for(let C of r)C.path.length>i&&(i=C.path.length);let n=r.filter(C=>C.path.length===i),s=C=>C.positionals.filter(({extra:f})=>!f).length+C.options.length,a=n.map(C=>({state:C,positionalCount:s(C)})),g=0;for(let{positionalCount:C}of a)C>g&&(g=C);let c=a.filter(({positionalCount:C})=>C===g).map(({state:C})=>C),l=$v(c);if(l.length>1)throw new Rh.AmbiguousSyntaxError(A,l.map(C=>C.candidateUsage));return l[0]}function $v(A){let e=[],t=[];for(let r of A)r.selectedIndex===ze.HELP_COMMAND_INDEX?t.push(r):e.push(r);return t.length>0&&e.push({...jv,path:eN(...t.map(r=>r.path)),options:t.reduce((r,i)=>r.concat(i.options),[])}),e}function eN(A,e,...t){return e===void 0?Array.from(A):eN(A.filter((r,i)=>r===e[i]),...t)}function Nt(){return{dynamics:[],shortcuts:[],statics:{}}}function bQ(A){return A===ze.NODE_SUCCESS||A===ze.NODE_ERRORED}function Fh(A,e=0){return{to:bQ(A.to)?A.to:A.to>2?A.to+e-2:A.to+e,reducer:A.reducer}}function AN(A,e=0){let t=Nt();for(let[r,i]of A.dynamics)t.dynamics.push([r,Fh(i,e)]);for(let r of A.shortcuts)t.shortcuts.push(Fh(r,e));for(let[r,i]of Object.entries(A.statics))t.statics[r]=i.map(n=>Fh(n,e));return t}function Et(A,e,t,r,i){A.nodes[e].dynamics.push([t,{to:r,reducer:i}])}function Ho(A,e,t,r){A.nodes[e].shortcuts.push({to:t,reducer:r})}function Vi(A,e,t,r,i){(Object.prototype.hasOwnProperty.call(A.nodes[e].statics,t)?A.nodes[e].statics[t]:A.nodes[e].statics[t]=[]).push({to:r,reducer:i})}function bl(A,e,t,r){if(Array.isArray(e)){let[i,...n]=e;return A[i](t,r,...n)}else return A[e](t,r)}function tN(A,e){let t=Array.isArray(A)?kl[A[0]]:kl[A];if(typeof t.suggest>"u")return null;let r=Array.isArray(A)?A.slice(1):[];return t.suggest(e,...r)}var kl={always:()=>!0,isOptionLike:(A,e)=>!A.ignoreOptions&&e!=="-"&&e.startsWith("-"),isNotOptionLike:(A,e)=>A.ignoreOptions||e==="-"||!e.startsWith("-"),isOption:(A,e,t,r)=>!A.ignoreOptions&&e===t,isBatchOption:(A,e,t)=>!A.ignoreOptions&&ze.BATCH_REGEX.test(e)&&[...e.slice(1)].every(r=>t.includes(`-${r}`)),isBoundOption:(A,e,t,r)=>{let i=e.match(ze.BINDING_REGEX);return!A.ignoreOptions&&!!i&&ze.OPTION_REGEX.test(i[1])&&t.includes(i[1])&&r.filter(n=>n.names.includes(i[1])).every(n=>n.allowBinding)},isNegatedOption:(A,e,t)=>!A.ignoreOptions&&e===`--no-${t.slice(2)}`,isHelp:(A,e)=>!A.ignoreOptions&&ze.HELP_REGEX.test(e),isUnsupportedOption:(A,e,t)=>!A.ignoreOptions&&e.startsWith("-")&&ze.OPTION_REGEX.test(e)&&!t.includes(e),isInvalidOption:(A,e)=>!A.ignoreOptions&&e.startsWith("-")&&!ze.OPTION_REGEX.test(e)};kl.isOption.suggest=(A,e,t=!0)=>t?null:[e];var xh={setCandidateState:(A,e,t)=>({...A,...t}),setSelectedIndex:(A,e,t)=>({...A,selectedIndex:t}),pushBatch:(A,e)=>({...A,options:A.options.concat([...e.slice(1)].map(t=>({name:`-${t}`,value:!0})))}),pushBound:(A,e)=>{let[,t,r]=e.match(ze.BINDING_REGEX);return{...A,options:A.options.concat({name:t,value:r})}},pushPath:(A,e)=>({...A,path:A.path.concat(e)}),pushPositional:(A,e)=>({...A,positionals:A.positionals.concat({value:e,extra:!1})}),pushExtra:(A,e)=>({...A,positionals:A.positionals.concat({value:e,extra:!0})}),pushExtraNoLimits:(A,e)=>({...A,positionals:A.positionals.concat({value:e,extra:Xi})}),pushTrue:(A,e,t=e)=>({...A,options:A.options.concat({name:e,value:!0})}),pushFalse:(A,e,t=e)=>({...A,options:A.options.concat({name:t,value:!1})}),pushUndefined:(A,e)=>({...A,options:A.options.concat({name:e,value:void 0})}),pushStringValue:(A,e)=>{var t;let r={...A,options:[...A.options]},i=A.options[A.options.length-1];return i.value=((t=i.value)!==null&&t!==void 0?t:[]).concat([e]),r},setStringValue:(A,e)=>{let t={...A,options:[...A.options]},r=A.options[A.options.length-1];return r.value=e,t},inhibateOptions:A=>({...A,ignoreOptions:!0}),useHelp:(A,e,t)=>{let[,,r]=e.match(ze.HELP_REGEX);return typeof r<"u"?{...A,options:[{name:"-c",value:String(t)},{name:"-i",value:r}]}:{...A,options:[{name:"-c",value:String(t)}]}},setError:(A,e,t)=>e===ze.END_OF_INPUT?{...A,errorMessage:`${t}.`}:{...A,errorMessage:`${t} ("${e}").`},setOptionArityError:(A,e)=>{let t=A.options[A.options.length-1];return{...A,errorMessage:`Not enough arguments to option ${t.name}.`}}},Xi=Symbol(),bh=class{constructor(e,t){this.allOptionNames=[],this.arity={leading:[],trailing:[],extra:[],proxy:!1},this.options=[],this.paths=[],this.cliIndex=e,this.cliOpts=t}addPath(e){this.paths.push(e)}setArity({leading:e=this.arity.leading,trailing:t=this.arity.trailing,extra:r=this.arity.extra,proxy:i=this.arity.proxy}){Object.assign(this.arity,{leading:e,trailing:t,extra:r,proxy:i})}addPositional({name:e="arg",required:t=!0}={}){if(!t&&this.arity.extra===Xi)throw new Error("Optional parameters cannot be declared when using .rest() or .proxy()");if(!t&&this.arity.trailing.length>0)throw new Error("Optional parameters cannot be declared after the required trailing positional arguments");!t&&this.arity.extra!==Xi?this.arity.extra.push(e):this.arity.extra!==Xi&&this.arity.extra.length===0?this.arity.leading.push(e):this.arity.trailing.push(e)}addRest({name:e="arg",required:t=0}={}){if(this.arity.extra===Xi)throw new Error("Infinite lists cannot be declared multiple times in the same command");if(this.arity.trailing.length>0)throw new Error("Infinite lists cannot be declared after the required trailing positional arguments");for(let r=0;r1)throw new Error("The arity cannot be higher than 1 when the option only supports the --arg=value syntax");if(!Number.isInteger(r))throw new Error(`The arity must be an integer, got ${r}`);if(r<0)throw new Error(`The arity must be positive, got ${r}`);this.allOptionNames.push(...e),this.options.push({names:e,description:t,arity:r,hidden:i,required:n,allowBinding:s})}setContext(e){this.context=e}usage({detailed:e=!0,inlineOptions:t=!0}={}){let r=[this.cliOpts.binaryName],i=[];if(this.paths.length>0&&r.push(...this.paths[0]),e){for(let{names:s,arity:a,hidden:g,description:c,required:l}of this.options){if(g)continue;let C=[];for(let E=0;E`:`[${f}]`)}r.push(...this.arity.leading.map(s=>`<${s}>`)),this.arity.extra===Xi?r.push("..."):r.push(...this.arity.extra.map(s=>`[${s}]`)),r.push(...this.arity.trailing.map(s=>`<${s}>`))}return{usage:r.join(" "),options:i}}compile(){if(typeof this.context>"u")throw new Error("Assertion failed: No context attached");let e=xQ(),t=ze.NODE_INITIAL,r=this.usage().usage,i=this.options.filter(a=>a.required).map(a=>a.names);t=Wr(e,Nt()),Vi(e,ze.NODE_INITIAL,ze.START_OF_INPUT,t,["setCandidateState",{candidateUsage:r,requiredOptions:i}]);let n=this.arity.proxy?"always":"isNotOptionLike",s=this.paths.length>0?this.paths:[[]];for(let a of s){let g=t;if(a.length>0){let f=Wr(e,Nt());Ho(e,g,f),this.registerOptions(e,f),g=f}for(let f=0;f0||!this.arity.proxy){let f=Wr(e,Nt());Et(e,g,"isHelp",f,["useHelp",this.cliIndex]),Et(e,f,"always",f,"pushExtra"),Vi(e,f,ze.END_OF_INPUT,ze.NODE_SUCCESS,["setSelectedIndex",ze.HELP_COMMAND_INDEX]),this.registerOptions(e,g)}this.arity.leading.length>0&&Vi(e,g,ze.END_OF_INPUT,ze.NODE_ERRORED,["setError","Not enough positional arguments"]);let c=g;for(let f=0;f0||f+1!==this.arity.leading.length)&&Vi(e,E,ze.END_OF_INPUT,ze.NODE_ERRORED,["setError","Not enough positional arguments"]),Et(e,c,"isNotOptionLike",E,"pushPositional"),c=E}let l=c;if(this.arity.extra===Xi||this.arity.extra.length>0){let f=Wr(e,Nt());if(Ho(e,c,f),this.arity.extra===Xi){let E=Wr(e,Nt());this.arity.proxy||this.registerOptions(e,E),Et(e,c,n,E,"pushExtraNoLimits"),Et(e,E,n,E,"pushExtraNoLimits"),Ho(e,E,f)}else for(let E=0;E0)&&this.registerOptions(e,m),Et(e,l,n,m,"pushExtra"),Ho(e,m,f),l=m}l=f}this.arity.trailing.length>0&&Vi(e,l,ze.END_OF_INPUT,ze.NODE_ERRORED,["setError","Not enough positional arguments"]);let C=l;for(let f=0;fs.length>n.length?s:n,"");if(r.arity===0)for(let n of r.names)Et(e,t,["isOption",n,r.hidden||n!==i],t,"pushTrue"),n.startsWith("--")&&!n.startsWith("--no-")&&Et(e,t,["isNegatedOption",n],t,["pushFalse",n]);else{let n=Wr(e,Nt());for(let s of r.names)Et(e,t,["isOption",s,r.hidden||s!==i],n,"pushUndefined");for(let s=0;s=0&&egZ(r,i),suggest:(i,n)=>aZ(r,i,n)}}};GA.CliBuilder=vl;GA.CommandBuilder=bh;GA.NoLimits=Xi;GA.aggregateHelpStates=$v;GA.cloneNode=AN;GA.cloneTransition=Fh;GA.debug=Jt;GA.debugMachine=Vv;GA.execute=bl;GA.injectNode=Wr;GA.isTerminalNode=bQ;GA.makeAnyOfMachine=Wv;GA.makeNode=Nt;GA.makeStateMachine=xQ;GA.reducers=xh;GA.registerDynamic=Et;GA.registerShortcut=Ho;GA.registerStatic=Vi;GA.runMachineInternal=RQ;GA.selectBestState=Zv;GA.simplifyMachine=zv;GA.suggest=tN;GA.tests=kl;GA.trimSmallerBranches=Xv});var iN=p(vh=>{"use strict";Object.defineProperty(vh,"__esModule",{value:!0});var cZ=require("tty");function lZ(A){return A&&typeof A=="object"&&"default"in A?A:{default:A}}var kQ=lZ(cZ);function uZ(){return kQ.default&&"getColorDepth"in kQ.default.WriteStream.prototype?kQ.default.WriteStream.prototype.getColorDepth():process.env.FORCE_COLOR==="0"?1:process.env.FORCE_COLOR==="1"||typeof process.stdout<"u"&&process.stdout.isTTY?8:1}var rN;function CZ(A){let e=rN;if(typeof e>"u"){if(A.stdout===process.stdout&&A.stderr===process.stderr)return null;let{AsyncLocalStorage:t}=require("async_hooks");e=rN=new t;let r=process.stdout._write;process.stdout._write=function(n,s,a){let g=e.getStore();return typeof g>"u"?r.call(this,n,s,a):g.stdout.write(n,s,a)};let i=process.stderr._write;process.stderr._write=function(n,s,a){let g=e.getStore();return typeof g>"u"?i.call(this,n,s,a):g.stderr.write(n,s,a)}}return t=>e.run(A,t)}vh.getCaptureActivator=CZ;vh.getDefaultColorDepth=uZ});var nN=p(vQ=>{"use strict";Object.defineProperty(vQ,"__esModule",{value:!0});var hZ=_o(),Nl=class extends hZ.Command{constructor(e){super(),this.contexts=e,this.commands=[]}static from(e,t){let r=new Nl(t);r.path=e.path;for(let i of e.options)switch(i.name){case"-c":r.commands.push(Number(i.value));break;case"-i":r.index=Number(i.value);break}return r}async execute(){let e=this.commands;if(typeof this.index<"u"&&this.index>=0&&this.index1){this.context.stdout.write(`Multiple commands match your selection: +`),this.context.stdout.write(` +`);let t=0;for(let r of this.commands)this.context.stdout.write(this.cli.usage(this.contexts[r].commandClass,{prefix:`${t++}. `.padStart(5)}));this.context.stdout.write(` +`),this.context.stdout.write(`Run again with -h= to see the longer details of any of those commands. +`)}}};vQ.HelpCommand=Nl});var cN=p(Ml=>{"use strict";Object.defineProperty(Ml,"__esModule",{value:!0});var fZ=dh(),IZ=kh(),Sr=mQ(),aN=iN(),Nh=_o(),EZ=nN(),sN=Symbol("clipanion/errorCommand");async function BZ(...A){let{resolvedOptions:e,resolvedCommandClasses:t,resolvedArgv:r,resolvedContext:i}=gN(A);return xi.from(t,e).runExit(r,i)}async function pZ(...A){let{resolvedOptions:e,resolvedCommandClasses:t,resolvedArgv:r,resolvedContext:i}=gN(A);return xi.from(t,e).run(r,i)}function gN(A){let e,t,r,i;switch(typeof process<"u"&&typeof process.argv<"u"&&(r=process.argv.slice(2)),A.length){case 1:t=A[0];break;case 2:A[0]&&A[0].prototype instanceof Nh.Command||Array.isArray(A[0])?(t=A[0],Array.isArray(A[1])?r=A[1]:i=A[1]):(e=A[0],t=A[1]);break;case 3:Array.isArray(A[2])?(e=A[0],t=A[1],r=A[2]):A[0]&&A[0].prototype instanceof Nh.Command||Array.isArray(A[0])?(t=A[0],r=A[1],i=A[2]):(e=A[0],t=A[1],i=A[2]);break;default:e=A[0],t=A[1],r=A[2],i=A[3];break}if(typeof r>"u")throw new Error("The argv parameter must be provided when running Clipanion outside of a Node context");return{resolvedOptions:e,resolvedCommandClasses:t,resolvedArgv:r,resolvedContext:i}}var xi=class{constructor({binaryLabel:e,binaryName:t="...",binaryVersion:r,enableCapture:i=!1,enableColors:n}={}){this.registrations=new Map,this.builder=new IZ.CliBuilder({binaryName:t}),this.binaryLabel=e,this.binaryName=t,this.binaryVersion=r,this.enableCapture=i,this.enableColors=n}static from(e,t={}){let r=new xi(t),i=Array.isArray(e)?e:[e];for(let n of i)r.register(n);return r}register(e){var t;let r=new Map,i=new e;for(let g in i){let c=i[g];typeof c=="object"&&c!==null&&c[Nh.Command.isOption]&&r.set(g,c)}let n=this.builder.command(),s=n.cliIndex,a=(t=e.paths)!==null&&t!==void 0?t:i.paths;if(typeof a<"u")for(let g of a)n.addPath(g);this.registrations.set(e,{specs:r,builder:n,index:s});for(let[g,{definition:c}]of r.entries())c(n,g);n.setContext({commandClass:e})}process(e,t){let{contexts:r,process:i}=this.builder.compile(),n=i(e),s={...xi.defaultContext,...t};switch(n.selectedIndex){case fZ.HELP_COMMAND_INDEX:{let a=EZ.HelpCommand.from(n,r);return a.context=s,a}default:{let{commandClass:a}=r[n.selectedIndex],g=this.registrations.get(a);if(typeof g>"u")throw new Error("Assertion failed: Expected the command class to have been registered.");let c=new a;c.context=s,c.path=n.path;try{for(let[l,{transformer:C}]of g.specs.entries())c[l]=C(g.builder,l,n,s);return c}catch(l){throw l[sN]=c,l}}break}}async run(e,t){var r,i;let n,s={...xi.defaultContext,...t},a=(r=this.enableColors)!==null&&r!==void 0?r:s.colorDepth>1;if(!Array.isArray(e))n=e;else try{n=this.process(e,s)}catch(l){return s.stdout.write(this.error(l,{colored:a})),1}if(n.help)return s.stdout.write(this.usage(n,{colored:a,detailed:!0})),0;n.context=s,n.cli={binaryLabel:this.binaryLabel,binaryName:this.binaryName,binaryVersion:this.binaryVersion,enableCapture:this.enableCapture,enableColors:this.enableColors,definitions:()=>this.definitions(),error:(l,C)=>this.error(l,C),format:l=>this.format(l),process:(l,C)=>this.process(l,{...s,...C}),run:(l,C)=>this.run(l,{...s,...C}),usage:(l,C)=>this.usage(l,C)};let g=this.enableCapture&&(i=aN.getCaptureActivator(s))!==null&&i!==void 0?i:oN,c;try{c=await g(()=>n.validateAndExecute().catch(l=>n.catch(l).then(()=>0)))}catch(l){return s.stdout.write(this.error(l,{colored:a,command:n})),1}return c}async runExit(e,t){process.exitCode=await this.run(e,t)}suggest(e,t){let{suggest:r}=this.builder.compile();return r(e,t)}definitions({colored:e=!1}={}){let t=[];for(let[r,{index:i}]of this.registrations){if(typeof r.usage>"u")continue;let{usage:n}=this.getUsageByIndex(i,{detailed:!1}),{usage:s,options:a}=this.getUsageByIndex(i,{detailed:!0,inlineOptions:!1}),g=typeof r.usage.category<"u"?Sr.formatMarkdownish(r.usage.category,{format:this.format(e),paragraphs:!1}):void 0,c=typeof r.usage.description<"u"?Sr.formatMarkdownish(r.usage.description,{format:this.format(e),paragraphs:!1}):void 0,l=typeof r.usage.details<"u"?Sr.formatMarkdownish(r.usage.details,{format:this.format(e),paragraphs:!0}):void 0,C=typeof r.usage.examples<"u"?r.usage.examples.map(([f,E])=>[Sr.formatMarkdownish(f,{format:this.format(e),paragraphs:!1}),E.replace(/\$0/g,this.binaryName)]):void 0;t.push({path:n,usage:s,category:g,description:c,details:l,examples:C,options:a})}return t}usage(e=null,{colored:t,detailed:r=!1,prefix:i="$ "}={}){var n;if(e===null){for(let g of this.registrations.keys()){let c=g.paths,l=typeof g.usage<"u";if(!c||c.length===0||c.length===1&&c[0].length===0||((n=c?.some(E=>E.length===0))!==null&&n!==void 0?n:!1))if(e){e=null;break}else e=g;else if(l){e=null;continue}}e&&(r=!0)}let s=e!==null&&e instanceof Nh.Command?e.constructor:e,a="";if(s)if(r){let{description:g="",details:c="",examples:l=[]}=s.usage||{};g!==""&&(a+=Sr.formatMarkdownish(g,{format:this.format(t),paragraphs:!1}).replace(/^./,E=>E.toUpperCase()),a+=` +`),(c!==""||l.length>0)&&(a+=`${this.format(t).header("Usage")} +`,a+=` +`);let{usage:C,options:f}=this.getUsageByRegistration(s,{inlineOptions:!1});if(a+=`${this.format(t).bold(i)}${C} +`,f.length>0){a+=` +`,a+=`${this.format(t).header("Options")} +`;let E=f.reduce((m,w)=>Math.max(m,w.definition.length),0);a+=` +`;for(let{definition:m,description:w}of f)a+=` ${this.format(t).bold(m.padEnd(E))} ${Sr.formatMarkdownish(w,{format:this.format(t),paragraphs:!1})}`}if(c!==""&&(a+=` +`,a+=`${this.format(t).header("Details")} +`,a+=` +`,a+=Sr.formatMarkdownish(c,{format:this.format(t),paragraphs:!0})),l.length>0){a+=` +`,a+=`${this.format(t).header("Examples")} +`;for(let[E,m]of l)a+=` +`,a+=Sr.formatMarkdownish(E,{format:this.format(t),paragraphs:!1}),a+=`${m.replace(/^/m,` ${this.format(t).bold(i)}`).replace(/\$0/g,this.binaryName)} +`}}else{let{usage:g}=this.getUsageByRegistration(s);a+=`${this.format(t).bold(i)}${g} +`}else{let g=new Map;for(let[f,{index:E}]of this.registrations.entries()){if(typeof f.usage>"u")continue;let m=typeof f.usage.category<"u"?Sr.formatMarkdownish(f.usage.category,{format:this.format(t),paragraphs:!1}):null,w=g.get(m);typeof w>"u"&&g.set(m,w=[]);let{usage:D}=this.getUsageByIndex(E);w.push({commandClass:f,usage:D})}let c=Array.from(g.keys()).sort((f,E)=>f===null?-1:E===null?1:f.localeCompare(E,"en",{usage:"sort",caseFirst:"upper"})),l=typeof this.binaryLabel<"u",C=typeof this.binaryVersion<"u";l||C?(l&&C?a+=`${this.format(t).header(`${this.binaryLabel} - ${this.binaryVersion}`)} + +`:l?a+=`${this.format(t).header(`${this.binaryLabel}`)} +`:a+=`${this.format(t).header(`${this.binaryVersion}`)} +`,a+=` ${this.format(t).bold(i)}${this.binaryName} +`):a+=`${this.format(t).bold(i)}${this.binaryName} +`;for(let f of c){let E=g.get(f).slice().sort((w,D)=>w.usage.localeCompare(D.usage,"en",{usage:"sort",caseFirst:"upper"})),m=f!==null?f.trim():"General commands";a+=` +`,a+=`${this.format(t).header(`${m}`)} +`;for(let{commandClass:w,usage:D}of E){let L=w.usage.description||"undocumented";a+=` +`,a+=` ${this.format(t).bold(D)} +`,a+=` ${Sr.formatMarkdownish(L,{format:this.format(t),paragraphs:!1})}`}}a+=` +`,a+=Sr.formatMarkdownish("You can also print more details about any of these commands by calling them with the `-h,--help` flag right after the command name.",{format:this.format(t),paragraphs:!0})}return a}error(e,t){var r,{colored:i,command:n=(r=e[sN])!==null&&r!==void 0?r:null}=t===void 0?{}:t;e instanceof Error||(e=new Error(`Execution failed with a non-error rejection (rejected value: ${JSON.stringify(e)})`));let s="",a=e.name.replace(/([a-z])([A-Z])/g,"$1 $2");a==="Error"&&(a="Internal Error"),s+=`${this.format(i).error(a)}: ${e.message} +`;let g=e.clipanion;return typeof g<"u"?g.type==="usage"&&(s+=` +`,s+=this.usage(n)):e.stack&&(s+=`${e.stack.replace(/^.*\n/,"")} +`),s}format(e){var t;return((t=e??this.enableColors)!==null&&t!==void 0?t:xi.defaultContext.colorDepth>1)?Sr.richFormat:Sr.textFormat}getUsageByRegistration(e,t){let r=this.registrations.get(e);if(typeof r>"u")throw new Error("Assertion failed: Unregistered command");return this.getUsageByIndex(r.index,t)}getUsageByIndex(e,t){return this.builder.getBuilderByIndex(e).usage(t)}};xi.defaultContext={env:process.env,stdin:process.stdin,stdout:process.stdout,stderr:process.stderr,colorDepth:aN.getDefaultColorDepth()};function oN(A){return A()}Ml.Cli=xi;Ml.run=pZ;Ml.runExit=BZ});var lN=p(NQ=>{"use strict";Object.defineProperty(NQ,"__esModule",{value:!0});var QZ=_o(),Mh=class extends QZ.Command{async execute(){this.context.stdout.write(`${JSON.stringify(this.cli.definitions(),null,2)} +`)}};Mh.paths=[["--clipanion=definitions"]];NQ.DefinitionsCommand=Mh});var uN=p(MQ=>{"use strict";Object.defineProperty(MQ,"__esModule",{value:!0});var dZ=_o(),Lh=class extends dZ.Command{async execute(){this.context.stdout.write(this.cli.usage())}};Lh.paths=[["-h"],["--help"]];MQ.HelpCommand=Lh});var CN=p(LQ=>{"use strict";Object.defineProperty(LQ,"__esModule",{value:!0});var yZ=_o(),Ph=class extends yZ.Command{async execute(){var e;this.context.stdout.write(`${(e=this.cli.binaryVersion)!==null&&e!==void 0?e:""} +`)}};Ph.paths=[["-v"],["--version"]];LQ.VersionCommand=Ph});var hN=p(Ll=>{"use strict";Object.defineProperty(Ll,"__esModule",{value:!0});var mZ=lN(),wZ=uN(),DZ=CN();Ll.DefinitionsCommand=mZ.DefinitionsCommand;Ll.HelpCommand=wZ.HelpCommand;Ll.VersionCommand=DZ.VersionCommand});var fN=p(OQ=>{"use strict";Object.defineProperty(OQ,"__esModule",{value:!0});var PQ=Pn();function SZ(A,e,t){let[r,i]=PQ.rerouteArguments(e,t??{}),{arity:n=1}=i,s=A.split(","),a=new Set(s);return PQ.makeCommandOption({definition(g){g.addOption({names:s,arity:n,hidden:i?.hidden,description:i?.description,required:i.required})},transformer(g,c,l){let C,f=typeof r<"u"?[...r]:void 0;for(let{name:E,value:m}of l.options)!a.has(E)||(C=E,f=f??[],f.push(m));return typeof f<"u"?PQ.applyValidator(C??c,f,i.validator):f}})}OQ.Array=SZ});var EN=p(KQ=>{"use strict";Object.defineProperty(KQ,"__esModule",{value:!0});var IN=Pn();function FZ(A,e,t){let[r,i]=IN.rerouteArguments(e,t??{}),n=A.split(","),s=new Set(n);return IN.makeCommandOption({definition(a){a.addOption({names:n,allowBinding:!1,arity:0,hidden:i.hidden,description:i.description,required:i.required})},transformer(a,g,c){let l=r;for(let{name:C,value:f}of c.options)!s.has(C)||(l=f);return l}})}KQ.Boolean=FZ});var pN=p(UQ=>{"use strict";Object.defineProperty(UQ,"__esModule",{value:!0});var BN=Pn();function xZ(A,e,t){let[r,i]=BN.rerouteArguments(e,t??{}),n=A.split(","),s=new Set(n);return BN.makeCommandOption({definition(a){a.addOption({names:n,allowBinding:!1,arity:0,hidden:i.hidden,description:i.description,required:i.required})},transformer(a,g,c){let l=r;for(let{name:C,value:f}of c.options)!s.has(C)||(l??(l=0),f?l+=1:l=0);return l}})}UQ.Counter=xZ});var QN=p(TQ=>{"use strict";Object.defineProperty(TQ,"__esModule",{value:!0});var RZ=Pn();function bZ(A={}){return RZ.makeCommandOption({definition(e,t){var r;e.addProxy({name:(r=A.name)!==null&&r!==void 0?r:t,required:A.required})},transformer(e,t,r){return r.positionals.map(({value:i})=>i)}})}TQ.Proxy=bZ});var dN=p(qQ=>{"use strict";Object.defineProperty(qQ,"__esModule",{value:!0});var kZ=kh(),vZ=Pn();function NZ(A={}){return vZ.makeCommandOption({definition(e,t){var r;e.addRest({name:(r=A.name)!==null&&r!==void 0?r:t,required:A.required})},transformer(e,t,r){let i=s=>{let a=r.positionals[s];return a.extra===kZ.NoLimits||a.extra===!1&&ss)}})}qQ.Rest=NZ});var yN=p(GQ=>{"use strict";Object.defineProperty(GQ,"__esModule",{value:!0});var MZ=kh(),Pl=Pn();function LZ(A,e,t){let[r,i]=Pl.rerouteArguments(e,t??{}),{arity:n=1}=i,s=A.split(","),a=new Set(s);return Pl.makeCommandOption({definition(g){g.addOption({names:s,arity:i.tolerateBoolean?0:n,hidden:i.hidden,description:i.description,required:i.required})},transformer(g,c,l,C){let f,E=r;typeof i.env<"u"&&C.env[i.env]&&(f=i.env,E=C.env[i.env]);for(let{name:m,value:w}of l.options)!a.has(m)||(f=m,E=w);return typeof E=="string"?Pl.applyValidator(f??c,E,i.validator):E}})}function PZ(A={}){let{required:e=!0}=A;return Pl.makeCommandOption({definition(t,r){var i;t.addPositional({name:(i=A.name)!==null&&i!==void 0?i:r,required:A.required})},transformer(t,r,i){var n;for(let s=0;s{"use strict";Object.defineProperty(or,"__esModule",{value:!0});var Sg=Pn(),KZ=fN(),UZ=EN(),TZ=pN(),qZ=QN(),GZ=dN(),YZ=yN();or.applyValidator=Sg.applyValidator;or.cleanValidationError=Sg.cleanValidationError;or.formatError=Sg.formatError;or.isOptionSymbol=Sg.isOptionSymbol;or.makeCommandOption=Sg.makeCommandOption;or.rerouteArguments=Sg.rerouteArguments;or.Array=KZ.Array;or.Boolean=UZ.Boolean;or.Counter=TZ.Counter;or.Proxy=qZ.Proxy;or.Rest=GZ.Rest;or.String=YZ.String});var Fg=p(Zi=>{"use strict";Object.defineProperty(Zi,"__esModule",{value:!0});var _Z=yh(),HZ=mQ(),JZ=_o(),YQ=cN(),jZ=hN(),WZ=mN();Zi.UsageError=_Z.UsageError;Zi.formatMarkdownish=HZ.formatMarkdownish;Zi.Command=JZ.Command;Zi.Cli=YQ.Cli;Zi.run=YQ.run;Zi.runExit=YQ.runExit;Zi.Builtins=jZ;Zi.Option=WZ});var DN=p((DRe,_Q)=>{"use strict";var wN=(A,...e)=>new Promise(t=>{t(A(...e))});_Q.exports=wN;_Q.exports.default=wN});var xg=p((SRe,HQ)=>{"use strict";var zZ=DN(),SN=A=>{if(!((Number.isInteger(A)||A===1/0)&&A>0))return Promise.reject(new TypeError("Expected `concurrency` to be a number from 1 and up"));let e=[],t=0,r=()=>{t--,e.length>0&&e.shift()()},i=(a,g,...c)=>{t++;let l=zZ(a,...c);g(l),l.then(r,r)},n=(a,g,...c)=>{tnew Promise(c=>n(a,c,...g));return Object.defineProperties(s,{activeCount:{get:()=>t},pendingCount:{get:()=>e.length},clearQueue:{value:()=>{e.length=0}}}),s};HQ.exports=SN;HQ.exports.default=SN});var ar=p(Kn=>{"use strict";Object.defineProperty(Kn,"__esModule",{value:!0});Kn.parseMessageName=Kn.stringifyMessageName=Kn.MessageName=void 0;var FN;(function(A){A[A.UNNAMED=0]="UNNAMED",A[A.EXCEPTION=1]="EXCEPTION",A[A.MISSING_PEER_DEPENDENCY=2]="MISSING_PEER_DEPENDENCY",A[A.CYCLIC_DEPENDENCIES=3]="CYCLIC_DEPENDENCIES",A[A.DISABLED_BUILD_SCRIPTS=4]="DISABLED_BUILD_SCRIPTS",A[A.BUILD_DISABLED=5]="BUILD_DISABLED",A[A.SOFT_LINK_BUILD=6]="SOFT_LINK_BUILD",A[A.MUST_BUILD=7]="MUST_BUILD",A[A.MUST_REBUILD=8]="MUST_REBUILD",A[A.BUILD_FAILED=9]="BUILD_FAILED",A[A.RESOLVER_NOT_FOUND=10]="RESOLVER_NOT_FOUND",A[A.FETCHER_NOT_FOUND=11]="FETCHER_NOT_FOUND",A[A.LINKER_NOT_FOUND=12]="LINKER_NOT_FOUND",A[A.FETCH_NOT_CACHED=13]="FETCH_NOT_CACHED",A[A.YARN_IMPORT_FAILED=14]="YARN_IMPORT_FAILED",A[A.REMOTE_INVALID=15]="REMOTE_INVALID",A[A.REMOTE_NOT_FOUND=16]="REMOTE_NOT_FOUND",A[A.RESOLUTION_PACK=17]="RESOLUTION_PACK",A[A.CACHE_CHECKSUM_MISMATCH=18]="CACHE_CHECKSUM_MISMATCH",A[A.UNUSED_CACHE_ENTRY=19]="UNUSED_CACHE_ENTRY",A[A.MISSING_LOCKFILE_ENTRY=20]="MISSING_LOCKFILE_ENTRY",A[A.WORKSPACE_NOT_FOUND=21]="WORKSPACE_NOT_FOUND",A[A.TOO_MANY_MATCHING_WORKSPACES=22]="TOO_MANY_MATCHING_WORKSPACES",A[A.CONSTRAINTS_MISSING_DEPENDENCY=23]="CONSTRAINTS_MISSING_DEPENDENCY",A[A.CONSTRAINTS_INCOMPATIBLE_DEPENDENCY=24]="CONSTRAINTS_INCOMPATIBLE_DEPENDENCY",A[A.CONSTRAINTS_EXTRANEOUS_DEPENDENCY=25]="CONSTRAINTS_EXTRANEOUS_DEPENDENCY",A[A.CONSTRAINTS_INVALID_DEPENDENCY=26]="CONSTRAINTS_INVALID_DEPENDENCY",A[A.CANT_SUGGEST_RESOLUTIONS=27]="CANT_SUGGEST_RESOLUTIONS",A[A.FROZEN_LOCKFILE_EXCEPTION=28]="FROZEN_LOCKFILE_EXCEPTION",A[A.CROSS_DRIVE_VIRTUAL_LOCAL=29]="CROSS_DRIVE_VIRTUAL_LOCAL",A[A.FETCH_FAILED=30]="FETCH_FAILED",A[A.DANGEROUS_NODE_MODULES=31]="DANGEROUS_NODE_MODULES",A[A.NODE_GYP_INJECTED=32]="NODE_GYP_INJECTED",A[A.AUTHENTICATION_NOT_FOUND=33]="AUTHENTICATION_NOT_FOUND",A[A.INVALID_CONFIGURATION_KEY=34]="INVALID_CONFIGURATION_KEY",A[A.NETWORK_ERROR=35]="NETWORK_ERROR",A[A.LIFECYCLE_SCRIPT=36]="LIFECYCLE_SCRIPT",A[A.CONSTRAINTS_MISSING_FIELD=37]="CONSTRAINTS_MISSING_FIELD",A[A.CONSTRAINTS_INCOMPATIBLE_FIELD=38]="CONSTRAINTS_INCOMPATIBLE_FIELD",A[A.CONSTRAINTS_EXTRANEOUS_FIELD=39]="CONSTRAINTS_EXTRANEOUS_FIELD",A[A.CONSTRAINTS_INVALID_FIELD=40]="CONSTRAINTS_INVALID_FIELD",A[A.AUTHENTICATION_INVALID=41]="AUTHENTICATION_INVALID",A[A.PROLOG_UNKNOWN_ERROR=42]="PROLOG_UNKNOWN_ERROR",A[A.PROLOG_SYNTAX_ERROR=43]="PROLOG_SYNTAX_ERROR",A[A.PROLOG_EXISTENCE_ERROR=44]="PROLOG_EXISTENCE_ERROR",A[A.STACK_OVERFLOW_RESOLUTION=45]="STACK_OVERFLOW_RESOLUTION",A[A.AUTOMERGE_FAILED_TO_PARSE=46]="AUTOMERGE_FAILED_TO_PARSE",A[A.AUTOMERGE_IMMUTABLE=47]="AUTOMERGE_IMMUTABLE",A[A.AUTOMERGE_SUCCESS=48]="AUTOMERGE_SUCCESS",A[A.AUTOMERGE_REQUIRED=49]="AUTOMERGE_REQUIRED",A[A.DEPRECATED_CLI_SETTINGS=50]="DEPRECATED_CLI_SETTINGS",A[A.PLUGIN_NAME_NOT_FOUND=51]="PLUGIN_NAME_NOT_FOUND",A[A.INVALID_PLUGIN_REFERENCE=52]="INVALID_PLUGIN_REFERENCE",A[A.CONSTRAINTS_AMBIGUITY=53]="CONSTRAINTS_AMBIGUITY",A[A.CACHE_OUTSIDE_PROJECT=54]="CACHE_OUTSIDE_PROJECT",A[A.IMMUTABLE_INSTALL=55]="IMMUTABLE_INSTALL",A[A.IMMUTABLE_CACHE=56]="IMMUTABLE_CACHE",A[A.INVALID_MANIFEST=57]="INVALID_MANIFEST",A[A.PACKAGE_PREPARATION_FAILED=58]="PACKAGE_PREPARATION_FAILED",A[A.INVALID_RANGE_PEER_DEPENDENCY=59]="INVALID_RANGE_PEER_DEPENDENCY",A[A.INCOMPATIBLE_PEER_DEPENDENCY=60]="INCOMPATIBLE_PEER_DEPENDENCY",A[A.DEPRECATED_PACKAGE=61]="DEPRECATED_PACKAGE",A[A.INCOMPATIBLE_OS=62]="INCOMPATIBLE_OS",A[A.INCOMPATIBLE_CPU=63]="INCOMPATIBLE_CPU",A[A.FROZEN_ARTIFACT_EXCEPTION=64]="FROZEN_ARTIFACT_EXCEPTION",A[A.TELEMETRY_NOTICE=65]="TELEMETRY_NOTICE",A[A.PATCH_HUNK_FAILED=66]="PATCH_HUNK_FAILED",A[A.INVALID_CONFIGURATION_VALUE=67]="INVALID_CONFIGURATION_VALUE",A[A.UNUSED_PACKAGE_EXTENSION=68]="UNUSED_PACKAGE_EXTENSION",A[A.REDUNDANT_PACKAGE_EXTENSION=69]="REDUNDANT_PACKAGE_EXTENSION",A[A.AUTO_NM_SUCCESS=70]="AUTO_NM_SUCCESS",A[A.NM_CANT_INSTALL_EXTERNAL_SOFT_LINK=71]="NM_CANT_INSTALL_EXTERNAL_SOFT_LINK",A[A.NM_PRESERVE_SYMLINKS_REQUIRED=72]="NM_PRESERVE_SYMLINKS_REQUIRED",A[A.UPDATE_LOCKFILE_ONLY_SKIP_LINK=73]="UPDATE_LOCKFILE_ONLY_SKIP_LINK",A[A.NM_HARDLINKS_MODE_DOWNGRADED=74]="NM_HARDLINKS_MODE_DOWNGRADED",A[A.PROLOG_INSTANTIATION_ERROR=75]="PROLOG_INSTANTIATION_ERROR",A[A.INCOMPATIBLE_ARCHITECTURE=76]="INCOMPATIBLE_ARCHITECTURE",A[A.GHOST_ARCHITECTURE=77]="GHOST_ARCHITECTURE",A[A.RESOLUTION_MISMATCH=78]="RESOLUTION_MISMATCH",A[A.PROLOG_LIMIT_EXCEEDED=79]="PROLOG_LIMIT_EXCEEDED",A[A.NETWORK_DISABLED=80]="NETWORK_DISABLED",A[A.NETWORK_UNSAFE_HTTP=81]="NETWORK_UNSAFE_HTTP",A[A.RESOLUTION_FAILED=82]="RESOLUTION_FAILED"})(FN=Kn.MessageName||(Kn.MessageName={}));function VZ(A){return`YN${A.toString(10).padStart(4,"0")}`}Kn.stringifyMessageName=VZ;function XZ(A){let e=Number(A.slice(2));if(typeof FN[e]>"u")throw new Error(`Unknown message name: "${A}"`);return e}Kn.parseMessageName=XZ});var Ol=p((xRe,xN)=>{var ZZ="2.0.0",$Z=Number.MAX_SAFE_INTEGER||9007199254740991,e$=16;xN.exports={SEMVER_SPEC_VERSION:ZZ,MAX_LENGTH:256,MAX_SAFE_INTEGER:$Z,MAX_SAFE_COMPONENT_LENGTH:e$}});var Kl=p((RRe,RN)=>{var A$=typeof process=="object"&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?(...A)=>console.error("SEMVER",...A):()=>{};RN.exports=A$});var Jo=p((xs,bN)=>{var{MAX_SAFE_COMPONENT_LENGTH:JQ}=Ol(),t$=Kl();xs=bN.exports={};var r$=xs.re=[],Le=xs.src=[],Pe=xs.t={},i$=0,CA=(A,e,t)=>{let r=i$++;t$(A,r,e),Pe[A]=r,Le[r]=e,r$[r]=new RegExp(e,t?"g":void 0)};CA("NUMERICIDENTIFIER","0|[1-9]\\d*");CA("NUMERICIDENTIFIERLOOSE","[0-9]+");CA("NONNUMERICIDENTIFIER","\\d*[a-zA-Z-][a-zA-Z0-9-]*");CA("MAINVERSION",`(${Le[Pe.NUMERICIDENTIFIER]})\\.(${Le[Pe.NUMERICIDENTIFIER]})\\.(${Le[Pe.NUMERICIDENTIFIER]})`);CA("MAINVERSIONLOOSE",`(${Le[Pe.NUMERICIDENTIFIERLOOSE]})\\.(${Le[Pe.NUMERICIDENTIFIERLOOSE]})\\.(${Le[Pe.NUMERICIDENTIFIERLOOSE]})`);CA("PRERELEASEIDENTIFIER",`(?:${Le[Pe.NUMERICIDENTIFIER]}|${Le[Pe.NONNUMERICIDENTIFIER]})`);CA("PRERELEASEIDENTIFIERLOOSE",`(?:${Le[Pe.NUMERICIDENTIFIERLOOSE]}|${Le[Pe.NONNUMERICIDENTIFIER]})`);CA("PRERELEASE",`(?:-(${Le[Pe.PRERELEASEIDENTIFIER]}(?:\\.${Le[Pe.PRERELEASEIDENTIFIER]})*))`);CA("PRERELEASELOOSE",`(?:-?(${Le[Pe.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${Le[Pe.PRERELEASEIDENTIFIERLOOSE]})*))`);CA("BUILDIDENTIFIER","[0-9A-Za-z-]+");CA("BUILD",`(?:\\+(${Le[Pe.BUILDIDENTIFIER]}(?:\\.${Le[Pe.BUILDIDENTIFIER]})*))`);CA("FULLPLAIN",`v?${Le[Pe.MAINVERSION]}${Le[Pe.PRERELEASE]}?${Le[Pe.BUILD]}?`);CA("FULL",`^${Le[Pe.FULLPLAIN]}$`);CA("LOOSEPLAIN",`[v=\\s]*${Le[Pe.MAINVERSIONLOOSE]}${Le[Pe.PRERELEASELOOSE]}?${Le[Pe.BUILD]}?`);CA("LOOSE",`^${Le[Pe.LOOSEPLAIN]}$`);CA("GTLT","((?:<|>)?=?)");CA("XRANGEIDENTIFIERLOOSE",`${Le[Pe.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`);CA("XRANGEIDENTIFIER",`${Le[Pe.NUMERICIDENTIFIER]}|x|X|\\*`);CA("XRANGEPLAIN",`[v=\\s]*(${Le[Pe.XRANGEIDENTIFIER]})(?:\\.(${Le[Pe.XRANGEIDENTIFIER]})(?:\\.(${Le[Pe.XRANGEIDENTIFIER]})(?:${Le[Pe.PRERELEASE]})?${Le[Pe.BUILD]}?)?)?`);CA("XRANGEPLAINLOOSE",`[v=\\s]*(${Le[Pe.XRANGEIDENTIFIERLOOSE]})(?:\\.(${Le[Pe.XRANGEIDENTIFIERLOOSE]})(?:\\.(${Le[Pe.XRANGEIDENTIFIERLOOSE]})(?:${Le[Pe.PRERELEASELOOSE]})?${Le[Pe.BUILD]}?)?)?`);CA("XRANGE",`^${Le[Pe.GTLT]}\\s*${Le[Pe.XRANGEPLAIN]}$`);CA("XRANGELOOSE",`^${Le[Pe.GTLT]}\\s*${Le[Pe.XRANGEPLAINLOOSE]}$`);CA("COERCE",`(^|[^\\d])(\\d{1,${JQ}})(?:\\.(\\d{1,${JQ}}))?(?:\\.(\\d{1,${JQ}}))?(?:$|[^\\d])`);CA("COERCERTL",Le[Pe.COERCE],!0);CA("LONETILDE","(?:~>?)");CA("TILDETRIM",`(\\s*)${Le[Pe.LONETILDE]}\\s+`,!0);xs.tildeTrimReplace="$1~";CA("TILDE",`^${Le[Pe.LONETILDE]}${Le[Pe.XRANGEPLAIN]}$`);CA("TILDELOOSE",`^${Le[Pe.LONETILDE]}${Le[Pe.XRANGEPLAINLOOSE]}$`);CA("LONECARET","(?:\\^)");CA("CARETTRIM",`(\\s*)${Le[Pe.LONECARET]}\\s+`,!0);xs.caretTrimReplace="$1^";CA("CARET",`^${Le[Pe.LONECARET]}${Le[Pe.XRANGEPLAIN]}$`);CA("CARETLOOSE",`^${Le[Pe.LONECARET]}${Le[Pe.XRANGEPLAINLOOSE]}$`);CA("COMPARATORLOOSE",`^${Le[Pe.GTLT]}\\s*(${Le[Pe.LOOSEPLAIN]})$|^$`);CA("COMPARATOR",`^${Le[Pe.GTLT]}\\s*(${Le[Pe.FULLPLAIN]})$|^$`);CA("COMPARATORTRIM",`(\\s*)${Le[Pe.GTLT]}\\s*(${Le[Pe.LOOSEPLAIN]}|${Le[Pe.XRANGEPLAIN]})`,!0);xs.comparatorTrimReplace="$1$2$3";CA("HYPHENRANGE",`^\\s*(${Le[Pe.XRANGEPLAIN]})\\s+-\\s+(${Le[Pe.XRANGEPLAIN]})\\s*$`);CA("HYPHENRANGELOOSE",`^\\s*(${Le[Pe.XRANGEPLAINLOOSE]})\\s+-\\s+(${Le[Pe.XRANGEPLAINLOOSE]})\\s*$`);CA("STAR","(<|>)?=?\\s*\\*");CA("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$");CA("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")});var Ul=p((bRe,kN)=>{var n$=["includePrerelease","loose","rtl"],s$=A=>A?typeof A!="object"?{loose:!0}:n$.filter(e=>A[e]).reduce((e,t)=>(e[t]=!0,e),{}):{};kN.exports=s$});var jQ=p((kRe,MN)=>{var vN=/^[0-9]+$/,NN=(A,e)=>{let t=vN.test(A),r=vN.test(e);return t&&r&&(A=+A,e=+e),A===e?0:t&&!r?-1:r&&!t?1:ANN(e,A);MN.exports={compareIdentifiers:NN,rcompareIdentifiers:o$}});var Mt=p((vRe,KN)=>{var Oh=Kl(),{MAX_LENGTH:LN,MAX_SAFE_INTEGER:Kh}=Ol(),{re:PN,t:ON}=Jo(),a$=Ul(),{compareIdentifiers:Rg}=jQ(),Fr=class{constructor(e,t){if(t=a$(t),e instanceof Fr){if(e.loose===!!t.loose&&e.includePrerelease===!!t.includePrerelease)return e;e=e.version}else if(typeof e!="string")throw new TypeError(`Invalid Version: ${e}`);if(e.length>LN)throw new TypeError(`version is longer than ${LN} characters`);Oh("SemVer",e,t),this.options=t,this.loose=!!t.loose,this.includePrerelease=!!t.includePrerelease;let r=e.trim().match(t.loose?PN[ON.LOOSE]:PN[ON.FULL]);if(!r)throw new TypeError(`Invalid Version: ${e}`);if(this.raw=e,this.major=+r[1],this.minor=+r[2],this.patch=+r[3],this.major>Kh||this.major<0)throw new TypeError("Invalid major version");if(this.minor>Kh||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>Kh||this.patch<0)throw new TypeError("Invalid patch version");r[4]?this.prerelease=r[4].split(".").map(i=>{if(/^[0-9]+$/.test(i)){let n=+i;if(n>=0&&n=0;)typeof this.prerelease[r]=="number"&&(this.prerelease[r]++,r=-2);r===-1&&this.prerelease.push(0)}t&&(Rg(this.prerelease[0],t)===0?isNaN(this.prerelease[1])&&(this.prerelease=[t,0]):this.prerelease=[t,0]);break;default:throw new Error(`invalid increment argument: ${e}`)}return this.format(),this.raw=this.version,this}};KN.exports=Fr});var jo=p((NRe,GN)=>{var{MAX_LENGTH:g$}=Ol(),{re:UN,t:TN}=Jo(),qN=Mt(),c$=Ul(),l$=(A,e)=>{if(e=c$(e),A instanceof qN)return A;if(typeof A!="string"||A.length>g$||!(e.loose?UN[TN.LOOSE]:UN[TN.FULL]).test(A))return null;try{return new qN(A,e)}catch{return null}};GN.exports=l$});var _N=p((MRe,YN)=>{var u$=jo(),C$=(A,e)=>{let t=u$(A,e);return t?t.version:null};YN.exports=C$});var JN=p((LRe,HN)=>{var h$=jo(),f$=(A,e)=>{let t=h$(A.trim().replace(/^[=v]+/,""),e);return t?t.version:null};HN.exports=f$});var zN=p((PRe,WN)=>{var jN=Mt(),I$=(A,e,t,r)=>{typeof t=="string"&&(r=t,t=void 0);try{return new jN(A instanceof jN?A.version:A,t).inc(e,r).version}catch{return null}};WN.exports=I$});var zr=p((ORe,XN)=>{var VN=Mt(),E$=(A,e,t)=>new VN(A,t).compare(new VN(e,t));XN.exports=E$});var Uh=p((KRe,ZN)=>{var B$=zr(),p$=(A,e,t)=>B$(A,e,t)===0;ZN.exports=p$});var AM=p((URe,eM)=>{var $N=jo(),Q$=Uh(),d$=(A,e)=>{if(Q$(A,e))return null;{let t=$N(A),r=$N(e),i=t.prerelease.length||r.prerelease.length,n=i?"pre":"",s=i?"prerelease":"";for(let a in t)if((a==="major"||a==="minor"||a==="patch")&&t[a]!==r[a])return n+a;return s}};eM.exports=d$});var rM=p((TRe,tM)=>{var y$=Mt(),m$=(A,e)=>new y$(A,e).major;tM.exports=m$});var nM=p((qRe,iM)=>{var w$=Mt(),D$=(A,e)=>new w$(A,e).minor;iM.exports=D$});var oM=p((GRe,sM)=>{var S$=Mt(),F$=(A,e)=>new S$(A,e).patch;sM.exports=F$});var gM=p((YRe,aM)=>{var x$=jo(),R$=(A,e)=>{let t=x$(A,e);return t&&t.prerelease.length?t.prerelease:null};aM.exports=R$});var lM=p((_Re,cM)=>{var b$=zr(),k$=(A,e,t)=>b$(e,A,t);cM.exports=k$});var CM=p((HRe,uM)=>{var v$=zr(),N$=(A,e)=>v$(A,e,!0);uM.exports=N$});var Th=p((JRe,fM)=>{var hM=Mt(),M$=(A,e,t)=>{let r=new hM(A,t),i=new hM(e,t);return r.compare(i)||r.compareBuild(i)};fM.exports=M$});var EM=p((jRe,IM)=>{var L$=Th(),P$=(A,e)=>A.sort((t,r)=>L$(t,r,e));IM.exports=P$});var pM=p((WRe,BM)=>{var O$=Th(),K$=(A,e)=>A.sort((t,r)=>O$(r,t,e));BM.exports=K$});var Tl=p((zRe,QM)=>{var U$=zr(),T$=(A,e,t)=>U$(A,e,t)>0;QM.exports=T$});var qh=p((VRe,dM)=>{var q$=zr(),G$=(A,e,t)=>q$(A,e,t)<0;dM.exports=G$});var WQ=p((XRe,yM)=>{var Y$=zr(),_$=(A,e,t)=>Y$(A,e,t)!==0;yM.exports=_$});var Gh=p((ZRe,mM)=>{var H$=zr(),J$=(A,e,t)=>H$(A,e,t)>=0;mM.exports=J$});var Yh=p(($Re,wM)=>{var j$=zr(),W$=(A,e,t)=>j$(A,e,t)<=0;wM.exports=W$});var zQ=p((ebe,DM)=>{var z$=Uh(),V$=WQ(),X$=Tl(),Z$=Gh(),$$=qh(),eee=Yh(),Aee=(A,e,t,r)=>{switch(e){case"===":return typeof A=="object"&&(A=A.version),typeof t=="object"&&(t=t.version),A===t;case"!==":return typeof A=="object"&&(A=A.version),typeof t=="object"&&(t=t.version),A!==t;case"":case"=":case"==":return z$(A,t,r);case"!=":return V$(A,t,r);case">":return X$(A,t,r);case">=":return Z$(A,t,r);case"<":return $$(A,t,r);case"<=":return eee(A,t,r);default:throw new TypeError(`Invalid operator: ${e}`)}};DM.exports=Aee});var FM=p((Abe,SM)=>{var tee=Mt(),ree=jo(),{re:_h,t:Hh}=Jo(),iee=(A,e)=>{if(A instanceof tee)return A;if(typeof A=="number"&&(A=String(A)),typeof A!="string")return null;e=e||{};let t=null;if(!e.rtl)t=A.match(_h[Hh.COERCE]);else{let r;for(;(r=_h[Hh.COERCERTL].exec(A))&&(!t||t.index+t[0].length!==A.length);)(!t||r.index+r[0].length!==t.index+t[0].length)&&(t=r),_h[Hh.COERCERTL].lastIndex=r.index+r[1].length+r[2].length;_h[Hh.COERCERTL].lastIndex=-1}return t===null?null:ree(`${t[2]}.${t[3]||"0"}.${t[4]||"0"}`,e)};SM.exports=iee});var RM=p((tbe,xM)=>{"use strict";xM.exports=function(A){A.prototype[Symbol.iterator]=function*(){for(let e=this.head;e;e=e.next)yield e.value}}});var Jh=p((rbe,bM)=>{"use strict";bM.exports=SA;SA.Node=Wo;SA.create=SA;function SA(A){var e=this;if(e instanceof SA||(e=new SA),e.tail=null,e.head=null,e.length=0,A&&typeof A.forEach=="function")A.forEach(function(i){e.push(i)});else if(arguments.length>0)for(var t=0,r=arguments.length;t1)t=e;else if(this.head)r=this.head.next,t=this.head.value;else throw new TypeError("Reduce of empty list with no initial value");for(var i=0;r!==null;i++)t=A(t,r.value,i),r=r.next;return t};SA.prototype.reduceReverse=function(A,e){var t,r=this.tail;if(arguments.length>1)t=e;else if(this.tail)r=this.tail.prev,t=this.tail.value;else throw new TypeError("Reduce of empty list with no initial value");for(var i=this.length-1;r!==null;i--)t=A(t,r.value,i),r=r.prev;return t};SA.prototype.toArray=function(){for(var A=new Array(this.length),e=0,t=this.head;t!==null;e++)A[e]=t.value,t=t.next;return A};SA.prototype.toArrayReverse=function(){for(var A=new Array(this.length),e=0,t=this.tail;t!==null;e++)A[e]=t.value,t=t.prev;return A};SA.prototype.slice=function(A,e){e=e||this.length,e<0&&(e+=this.length),A=A||0,A<0&&(A+=this.length);var t=new SA;if(ethis.length&&(e=this.length);for(var r=0,i=this.head;i!==null&&rthis.length&&(e=this.length);for(var r=this.length,i=this.tail;i!==null&&r>e;r--)i=i.prev;for(;i!==null&&r>A;r--,i=i.prev)t.push(i.value);return t};SA.prototype.splice=function(A,e,...t){A>this.length&&(A=this.length-1),A<0&&(A=this.length+A);for(var r=0,i=this.head;i!==null&&r{"use strict";var aee=Jh(),zo=Symbol("max"),Tn=Symbol("length"),bg=Symbol("lengthCalculator"),Gl=Symbol("allowStale"),Vo=Symbol("maxAge"),Un=Symbol("dispose"),kM=Symbol("noDisposeOnSet"),Qt=Symbol("lruList"),Ri=Symbol("cache"),NM=Symbol("updateAgeOnGet"),VQ=()=>1,ZQ=class{constructor(e){if(typeof e=="number"&&(e={max:e}),e||(e={}),e.max&&(typeof e.max!="number"||e.max<0))throw new TypeError("max must be a non-negative number");let t=this[zo]=e.max||1/0,r=e.length||VQ;if(this[bg]=typeof r!="function"?VQ:r,this[Gl]=e.stale||!1,e.maxAge&&typeof e.maxAge!="number")throw new TypeError("maxAge must be a number");this[Vo]=e.maxAge||0,this[Un]=e.dispose,this[kM]=e.noDisposeOnSet||!1,this[NM]=e.updateAgeOnGet||!1,this.reset()}set max(e){if(typeof e!="number"||e<0)throw new TypeError("max must be a non-negative number");this[zo]=e||1/0,ql(this)}get max(){return this[zo]}set allowStale(e){this[Gl]=!!e}get allowStale(){return this[Gl]}set maxAge(e){if(typeof e!="number")throw new TypeError("maxAge must be a non-negative number");this[Vo]=e,ql(this)}get maxAge(){return this[Vo]}set lengthCalculator(e){typeof e!="function"&&(e=VQ),e!==this[bg]&&(this[bg]=e,this[Tn]=0,this[Qt].forEach(t=>{t.length=this[bg](t.value,t.key),this[Tn]+=t.length})),ql(this)}get lengthCalculator(){return this[bg]}get length(){return this[Tn]}get itemCount(){return this[Qt].length}rforEach(e,t){t=t||this;for(let r=this[Qt].tail;r!==null;){let i=r.prev;vM(this,e,r,t),r=i}}forEach(e,t){t=t||this;for(let r=this[Qt].head;r!==null;){let i=r.next;vM(this,e,r,t),r=i}}keys(){return this[Qt].toArray().map(e=>e.key)}values(){return this[Qt].toArray().map(e=>e.value)}reset(){this[Un]&&this[Qt]&&this[Qt].length&&this[Qt].forEach(e=>this[Un](e.key,e.value)),this[Ri]=new Map,this[Qt]=new aee,this[Tn]=0}dump(){return this[Qt].map(e=>jh(this,e)?!1:{k:e.key,v:e.value,e:e.now+(e.maxAge||0)}).toArray().filter(e=>e)}dumpLru(){return this[Qt]}set(e,t,r){if(r=r||this[Vo],r&&typeof r!="number")throw new TypeError("maxAge must be a number");let i=r?Date.now():0,n=this[bg](t,e);if(this[Ri].has(e)){if(n>this[zo])return kg(this,this[Ri].get(e)),!1;let g=this[Ri].get(e).value;return this[Un]&&(this[kM]||this[Un](e,g.value)),g.now=i,g.maxAge=r,g.value=t,this[Tn]+=n-g.length,g.length=n,this.get(e),ql(this),!0}let s=new $Q(e,t,n,i,r);return s.length>this[zo]?(this[Un]&&this[Un](e,t),!1):(this[Tn]+=s.length,this[Qt].unshift(s),this[Ri].set(e,this[Qt].head),ql(this),!0)}has(e){if(!this[Ri].has(e))return!1;let t=this[Ri].get(e).value;return!jh(this,t)}get(e){return XQ(this,e,!0)}peek(e){return XQ(this,e,!1)}pop(){let e=this[Qt].tail;return e?(kg(this,e),e.value):null}del(e){kg(this,this[Ri].get(e))}load(e){this.reset();let t=Date.now();for(let r=e.length-1;r>=0;r--){let i=e[r],n=i.e||0;if(n===0)this.set(i.k,i.v);else{let s=n-t;s>0&&this.set(i.k,i.v,s)}}}prune(){this[Ri].forEach((e,t)=>XQ(this,t,!1))}},XQ=(A,e,t)=>{let r=A[Ri].get(e);if(r){let i=r.value;if(jh(A,i)){if(kg(A,r),!A[Gl])return}else t&&(A[NM]&&(r.value.now=Date.now()),A[Qt].unshiftNode(r));return i.value}},jh=(A,e)=>{if(!e||!e.maxAge&&!A[Vo])return!1;let t=Date.now()-e.now;return e.maxAge?t>e.maxAge:A[Vo]&&t>A[Vo]},ql=A=>{if(A[Tn]>A[zo])for(let e=A[Qt].tail;A[Tn]>A[zo]&&e!==null;){let t=e.prev;kg(A,e),e=t}},kg=(A,e)=>{if(e){let t=e.value;A[Un]&&A[Un](t.key,t.value),A[Tn]-=t.length,A[Ri].delete(t.key),A[Qt].removeNode(e)}},$Q=class{constructor(e,t,r,i,n){this.key=e,this.value=t,this.length=r,this.now=i,this.maxAge=n||0}},vM=(A,e,t,r)=>{let i=t.value;jh(A,i)&&(kg(A,t),A[Gl]||(i=void 0)),i&&e.call(r,i.value,i.key,A)};MM.exports=ZQ});var Vr=p((nbe,UM)=>{var Xo=class{constructor(e,t){if(t=cee(t),e instanceof Xo)return e.loose===!!t.loose&&e.includePrerelease===!!t.includePrerelease?e:new Xo(e.raw,t);if(e instanceof ed)return this.raw=e.value,this.set=[[e]],this.format(),this;if(this.options=t,this.loose=!!t.loose,this.includePrerelease=!!t.includePrerelease,this.raw=e,this.set=e.split("||").map(r=>this.parseRange(r.trim())).filter(r=>r.length),!this.set.length)throw new TypeError(`Invalid SemVer Range: ${e}`);if(this.set.length>1){let r=this.set[0];if(this.set=this.set.filter(i=>!OM(i[0])),this.set.length===0)this.set=[r];else if(this.set.length>1){for(let i of this.set)if(i.length===1&&fee(i[0])){this.set=[i];break}}}this.format()}format(){return this.range=this.set.map(e=>e.join(" ").trim()).join("||").trim(),this.range}toString(){return this.range}parseRange(e){e=e.trim();let r=`parseRange:${Object.keys(this.options).join(",")}:${e}`,i=PM.get(r);if(i)return i;let n=this.options.loose,s=n?gr[jt.HYPHENRANGELOOSE]:gr[jt.HYPHENRANGE];e=e.replace(s,Dee(this.options.includePrerelease)),et("hyphen replace",e),e=e.replace(gr[jt.COMPARATORTRIM],uee),et("comparator trim",e),e=e.replace(gr[jt.TILDETRIM],Cee),e=e.replace(gr[jt.CARETTRIM],hee),e=e.split(/\s+/).join(" ");let a=e.split(" ").map(C=>Iee(C,this.options)).join(" ").split(/\s+/).map(C=>wee(C,this.options));n&&(a=a.filter(C=>(et("loose invalid filter",C,this.options),!!C.match(gr[jt.COMPARATORLOOSE])))),et("range list",a);let g=new Map,c=a.map(C=>new ed(C,this.options));for(let C of c){if(OM(C))return[C];g.set(C.value,C)}g.size>1&&g.has("")&&g.delete("");let l=[...g.values()];return PM.set(r,l),l}intersects(e,t){if(!(e instanceof Xo))throw new TypeError("a Range is required");return this.set.some(r=>KM(r,t)&&e.set.some(i=>KM(i,t)&&r.every(n=>i.every(s=>n.intersects(s,t)))))}test(e){if(!e)return!1;if(typeof e=="string")try{e=new lee(e,this.options)}catch{return!1}for(let t=0;tA.value==="<0.0.0-0",fee=A=>A.value==="",KM=(A,e)=>{let t=!0,r=A.slice(),i=r.pop();for(;t&&r.length;)t=r.every(n=>i.intersects(n,e)),i=r.pop();return t},Iee=(A,e)=>(et("comp",A,e),A=pee(A,e),et("caret",A),A=Eee(A,e),et("tildes",A),A=dee(A,e),et("xrange",A),A=mee(A,e),et("stars",A),A),Wt=A=>!A||A.toLowerCase()==="x"||A==="*",Eee=(A,e)=>A.trim().split(/\s+/).map(t=>Bee(t,e)).join(" "),Bee=(A,e)=>{let t=e.loose?gr[jt.TILDELOOSE]:gr[jt.TILDE];return A.replace(t,(r,i,n,s,a)=>{et("tilde",A,r,i,n,s,a);let g;return Wt(i)?g="":Wt(n)?g=`>=${i}.0.0 <${+i+1}.0.0-0`:Wt(s)?g=`>=${i}.${n}.0 <${i}.${+n+1}.0-0`:a?(et("replaceTilde pr",a),g=`>=${i}.${n}.${s}-${a} <${i}.${+n+1}.0-0`):g=`>=${i}.${n}.${s} <${i}.${+n+1}.0-0`,et("tilde return",g),g})},pee=(A,e)=>A.trim().split(/\s+/).map(t=>Qee(t,e)).join(" "),Qee=(A,e)=>{et("caret",A,e);let t=e.loose?gr[jt.CARETLOOSE]:gr[jt.CARET],r=e.includePrerelease?"-0":"";return A.replace(t,(i,n,s,a,g)=>{et("caret",A,i,n,s,a,g);let c;return Wt(n)?c="":Wt(s)?c=`>=${n}.0.0${r} <${+n+1}.0.0-0`:Wt(a)?n==="0"?c=`>=${n}.${s}.0${r} <${n}.${+s+1}.0-0`:c=`>=${n}.${s}.0${r} <${+n+1}.0.0-0`:g?(et("replaceCaret pr",g),n==="0"?s==="0"?c=`>=${n}.${s}.${a}-${g} <${n}.${s}.${+a+1}-0`:c=`>=${n}.${s}.${a}-${g} <${n}.${+s+1}.0-0`:c=`>=${n}.${s}.${a}-${g} <${+n+1}.0.0-0`):(et("no pr"),n==="0"?s==="0"?c=`>=${n}.${s}.${a}${r} <${n}.${s}.${+a+1}-0`:c=`>=${n}.${s}.${a}${r} <${n}.${+s+1}.0-0`:c=`>=${n}.${s}.${a} <${+n+1}.0.0-0`),et("caret return",c),c})},dee=(A,e)=>(et("replaceXRanges",A,e),A.split(/\s+/).map(t=>yee(t,e)).join(" ")),yee=(A,e)=>{A=A.trim();let t=e.loose?gr[jt.XRANGELOOSE]:gr[jt.XRANGE];return A.replace(t,(r,i,n,s,a,g)=>{et("xRange",A,r,i,n,s,a,g);let c=Wt(n),l=c||Wt(s),C=l||Wt(a),f=C;return i==="="&&f&&(i=""),g=e.includePrerelease?"-0":"",c?i===">"||i==="<"?r="<0.0.0-0":r="*":i&&f?(l&&(s=0),a=0,i===">"?(i=">=",l?(n=+n+1,s=0,a=0):(s=+s+1,a=0)):i==="<="&&(i="<",l?n=+n+1:s=+s+1),i==="<"&&(g="-0"),r=`${i+n}.${s}.${a}${g}`):l?r=`>=${n}.0.0${g} <${+n+1}.0.0-0`:C&&(r=`>=${n}.${s}.0${g} <${n}.${+s+1}.0-0`),et("xRange return",r),r})},mee=(A,e)=>(et("replaceStars",A,e),A.trim().replace(gr[jt.STAR],"")),wee=(A,e)=>(et("replaceGTE0",A,e),A.trim().replace(gr[e.includePrerelease?jt.GTE0PRE:jt.GTE0],"")),Dee=A=>(e,t,r,i,n,s,a,g,c,l,C,f,E)=>(Wt(r)?t="":Wt(i)?t=`>=${r}.0.0${A?"-0":""}`:Wt(n)?t=`>=${r}.${i}.0${A?"-0":""}`:s?t=`>=${t}`:t=`>=${t}${A?"-0":""}`,Wt(c)?g="":Wt(l)?g=`<${+c+1}.0.0-0`:Wt(C)?g=`<${c}.${+l+1}.0-0`:f?g=`<=${c}.${l}.${C}-${f}`:A?g=`<${c}.${l}.${+C+1}-0`:g=`<=${g}`,`${t} ${g}`.trim()),See=(A,e,t)=>{for(let r=0;r0){let i=A[r].semver;if(i.major===e.major&&i.minor===e.minor&&i.patch===e.patch)return!0}return!1}return!0}});var Yl=p((sbe,_M)=>{var _l=Symbol("SemVer ANY"),vg=class{static get ANY(){return _l}constructor(e,t){if(t=Fee(t),e instanceof vg){if(e.loose===!!t.loose)return e;e=e.value}td("comparator",e,t),this.options=t,this.loose=!!t.loose,this.parse(e),this.semver===_l?this.value="":this.value=this.operator+this.semver.version,td("comp",this)}parse(e){let t=this.options.loose?TM[qM.COMPARATORLOOSE]:TM[qM.COMPARATOR],r=e.match(t);if(!r)throw new TypeError(`Invalid comparator: ${e}`);this.operator=r[1]!==void 0?r[1]:"",this.operator==="="&&(this.operator=""),r[2]?this.semver=new GM(r[2],this.options.loose):this.semver=_l}toString(){return this.value}test(e){if(td("Comparator.test",e,this.options.loose),this.semver===_l||e===_l)return!0;if(typeof e=="string")try{e=new GM(e,this.options)}catch{return!1}return Ad(e,this.operator,this.semver,this.options)}intersects(e,t){if(!(e instanceof vg))throw new TypeError("a Comparator is required");if((!t||typeof t!="object")&&(t={loose:!!t,includePrerelease:!1}),this.operator==="")return this.value===""?!0:new YM(e.value,t).test(this.value);if(e.operator==="")return e.value===""?!0:new YM(this.value,t).test(e.semver);let r=(this.operator===">="||this.operator===">")&&(e.operator===">="||e.operator===">"),i=(this.operator==="<="||this.operator==="<")&&(e.operator==="<="||e.operator==="<"),n=this.semver.version===e.semver.version,s=(this.operator===">="||this.operator==="<=")&&(e.operator===">="||e.operator==="<="),a=Ad(this.semver,"<",e.semver,t)&&(this.operator===">="||this.operator===">")&&(e.operator==="<="||e.operator==="<"),g=Ad(this.semver,">",e.semver,t)&&(this.operator==="<="||this.operator==="<")&&(e.operator===">="||e.operator===">");return r||i||n&&s||a||g}};_M.exports=vg;var Fee=Ul(),{re:TM,t:qM}=Jo(),Ad=zQ(),td=Kl(),GM=Mt(),YM=Vr()});var Hl=p((obe,HM)=>{var xee=Vr(),Ree=(A,e,t)=>{try{e=new xee(e,t)}catch{return!1}return e.test(A)};HM.exports=Ree});var jM=p((abe,JM)=>{var bee=Vr(),kee=(A,e)=>new bee(A,e).set.map(t=>t.map(r=>r.value).join(" ").trim().split(" "));JM.exports=kee});var zM=p((gbe,WM)=>{var vee=Mt(),Nee=Vr(),Mee=(A,e,t)=>{let r=null,i=null,n=null;try{n=new Nee(e,t)}catch{return null}return A.forEach(s=>{n.test(s)&&(!r||i.compare(s)===-1)&&(r=s,i=new vee(r,t))}),r};WM.exports=Mee});var XM=p((cbe,VM)=>{var Lee=Mt(),Pee=Vr(),Oee=(A,e,t)=>{let r=null,i=null,n=null;try{n=new Pee(e,t)}catch{return null}return A.forEach(s=>{n.test(s)&&(!r||i.compare(s)===1)&&(r=s,i=new Lee(r,t))}),r};VM.exports=Oee});var e1=p((lbe,$M)=>{var rd=Mt(),Kee=Vr(),ZM=Tl(),Uee=(A,e)=>{A=new Kee(A,e);let t=new rd("0.0.0");if(A.test(t)||(t=new rd("0.0.0-0"),A.test(t)))return t;t=null;for(let r=0;r{let a=new rd(s.semver.version);switch(s.operator){case">":a.prerelease.length===0?a.patch++:a.prerelease.push(0),a.raw=a.format();case"":case">=":(!n||ZM(a,n))&&(n=a);break;case"<":case"<=":break;default:throw new Error(`Unexpected operation: ${s.operator}`)}}),n&&(!t||ZM(t,n))&&(t=n)}return t&&A.test(t)?t:null};$M.exports=Uee});var t1=p((ube,A1)=>{var Tee=Vr(),qee=(A,e)=>{try{return new Tee(A,e).range||"*"}catch{return null}};A1.exports=qee});var Wh=p((Cbe,s1)=>{var Gee=Mt(),n1=Yl(),{ANY:Yee}=n1,_ee=Vr(),Hee=Hl(),r1=Tl(),i1=qh(),Jee=Yh(),jee=Gh(),Wee=(A,e,t,r)=>{A=new Gee(A,r),e=new _ee(e,r);let i,n,s,a,g;switch(t){case">":i=r1,n=Jee,s=i1,a=">",g=">=";break;case"<":i=i1,n=jee,s=r1,a="<",g="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(Hee(A,e,r))return!1;for(let c=0;c{E.semver===Yee&&(E=new n1(">=0.0.0")),C=C||E,f=f||E,i(E.semver,C.semver,r)?C=E:s(E.semver,f.semver,r)&&(f=E)}),C.operator===a||C.operator===g||(!f.operator||f.operator===a)&&n(A,f.semver))return!1;if(f.operator===g&&s(A,f.semver))return!1}return!0};s1.exports=Wee});var a1=p((hbe,o1)=>{var zee=Wh(),Vee=(A,e,t)=>zee(A,e,">",t);o1.exports=Vee});var c1=p((fbe,g1)=>{var Xee=Wh(),Zee=(A,e,t)=>Xee(A,e,"<",t);g1.exports=Zee});var C1=p((Ibe,u1)=>{var l1=Vr(),$ee=(A,e,t)=>(A=new l1(A,t),e=new l1(e,t),A.intersects(e));u1.exports=$ee});var f1=p((Ebe,h1)=>{var eAe=Hl(),AAe=zr();h1.exports=(A,e,t)=>{let r=[],i=null,n=null,s=A.sort((l,C)=>AAe(l,C,t));for(let l of s)eAe(l,e,t)?(n=l,i||(i=l)):(n&&r.push([i,n]),n=null,i=null);i&&r.push([i,null]);let a=[];for(let[l,C]of r)l===C?a.push(l):!C&&l===s[0]?a.push("*"):C?l===s[0]?a.push(`<=${C}`):a.push(`${l} - ${C}`):a.push(`>=${l}`);let g=a.join(" || "),c=typeof e.raw=="string"?e.raw:String(e);return g.length{var I1=Vr(),zh=Yl(),{ANY:id}=zh,Jl=Hl(),nd=zr(),tAe=(A,e,t={})=>{if(A===e)return!0;A=new I1(A,t),e=new I1(e,t);let r=!1;e:for(let i of A.set){for(let n of e.set){let s=rAe(i,n,t);if(r=r||s!==null,s)continue e}if(r)return!1}return!0},rAe=(A,e,t)=>{if(A===e)return!0;if(A.length===1&&A[0].semver===id){if(e.length===1&&e[0].semver===id)return!0;t.includePrerelease?A=[new zh(">=0.0.0-0")]:A=[new zh(">=0.0.0")]}if(e.length===1&&e[0].semver===id){if(t.includePrerelease)return!0;e=[new zh(">=0.0.0")]}let r=new Set,i,n;for(let E of A)E.operator===">"||E.operator===">="?i=E1(i,E,t):E.operator==="<"||E.operator==="<="?n=B1(n,E,t):r.add(E.semver);if(r.size>1)return null;let s;if(i&&n){if(s=nd(i.semver,n.semver,t),s>0)return null;if(s===0&&(i.operator!==">="||n.operator!=="<="))return null}for(let E of r){if(i&&!Jl(E,String(i),t)||n&&!Jl(E,String(n),t))return null;for(let m of e)if(!Jl(E,String(m),t))return!1;return!0}let a,g,c,l,C=n&&!t.includePrerelease&&n.semver.prerelease.length?n.semver:!1,f=i&&!t.includePrerelease&&i.semver.prerelease.length?i.semver:!1;C&&C.prerelease.length===1&&n.operator==="<"&&C.prerelease[0]===0&&(C=!1);for(let E of e){if(l=l||E.operator===">"||E.operator===">=",c=c||E.operator==="<"||E.operator==="<=",i){if(f&&E.semver.prerelease&&E.semver.prerelease.length&&E.semver.major===f.major&&E.semver.minor===f.minor&&E.semver.patch===f.patch&&(f=!1),E.operator===">"||E.operator===">="){if(a=E1(i,E,t),a===E&&a!==i)return!1}else if(i.operator===">="&&!Jl(i.semver,String(E),t))return!1}if(n){if(C&&E.semver.prerelease&&E.semver.prerelease.length&&E.semver.major===C.major&&E.semver.minor===C.minor&&E.semver.patch===C.patch&&(C=!1),E.operator==="<"||E.operator==="<="){if(g=B1(n,E,t),g===E&&g!==n)return!1}else if(n.operator==="<="&&!Jl(n.semver,String(E),t))return!1}if(!E.operator&&(n||i)&&s!==0)return!1}return!(i&&c&&!n&&s!==0||n&&l&&!i&&s!==0||f||C)},E1=(A,e,t)=>{if(!A)return e;let r=nd(A.semver,e.semver,t);return r>0?A:r<0||e.operator===">"&&A.operator===">="?e:A},B1=(A,e,t)=>{if(!A)return e;let r=nd(A.semver,e.semver,t);return r<0?A:r>0||e.operator==="<"&&A.operator==="<="?e:A};p1.exports=tAe});var Zo=p((pbe,y1)=>{var sd=Jo(),iAe=Ol(),nAe=Mt(),d1=jQ(),sAe=jo(),oAe=_N(),aAe=JN(),gAe=zN(),cAe=AM(),lAe=rM(),uAe=nM(),CAe=oM(),hAe=gM(),fAe=zr(),IAe=lM(),EAe=CM(),BAe=Th(),pAe=EM(),QAe=pM(),dAe=Tl(),yAe=qh(),mAe=Uh(),wAe=WQ(),DAe=Gh(),SAe=Yh(),FAe=zQ(),xAe=FM(),RAe=Yl(),bAe=Vr(),kAe=Hl(),vAe=jM(),NAe=zM(),MAe=XM(),LAe=e1(),PAe=t1(),OAe=Wh(),KAe=a1(),UAe=c1(),TAe=C1(),qAe=f1(),GAe=Q1();y1.exports={parse:sAe,valid:oAe,clean:aAe,inc:gAe,diff:cAe,major:lAe,minor:uAe,patch:CAe,prerelease:hAe,compare:fAe,rcompare:IAe,compareLoose:EAe,compareBuild:BAe,sort:pAe,rsort:QAe,gt:dAe,lt:yAe,eq:mAe,neq:wAe,gte:DAe,lte:SAe,cmp:FAe,coerce:xAe,Comparator:RAe,Range:bAe,satisfies:kAe,toComparators:vAe,maxSatisfying:NAe,minSatisfying:MAe,minVersion:LAe,validRange:PAe,outside:OAe,gtr:KAe,ltr:UAe,intersects:TAe,simplifyRange:qAe,subset:GAe,SemVer:nAe,re:sd.re,src:sd.src,tokens:sd.t,SEMVER_SPEC_VERSION:iAe.SEMVER_SPEC_VERSION,compareIdentifiers:d1.compareIdentifiers,rcompareIdentifiers:d1.rcompareIdentifiers}});var w1=p((Qbe,m1)=>{"use strict";function YAe(A,e){function t(){this.constructor=A}t.prototype=e.prototype,A.prototype=new t}function $o(A,e,t,r){this.message=A,this.expected=e,this.found=t,this.location=r,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,$o)}YAe($o,Error);$o.buildMessage=function(A,e){var t={literal:function(c){return'"'+i(c.text)+'"'},class:function(c){var l="",C;for(C=0;C0){for(C=1,f=1;C{switch(Xe[1]){case"|":return rA|Xe[3];case"&":return rA&Xe[3];case"^":return rA^Xe[3]}},ue)},f="!",E=be("!",!1),m=function(ue){return!ue},w="(",D=be("(",!1),L=")",K=be(")",!1),_=function(ue){return ue},le=/^[^ \t\n\r()!|&\^]/,re=Ye([" "," ",` +`,"\r","(",")","!","|","&","^"],!0,!1),J=function(ue){return e.queryPattern.test(ue)},X=function(ue){return e.checkFn(ue)},ie=de("whitespace"),G=/^[ \t\n\r]/,ee=Ye([" "," ",` +`,"\r"],!1,!1),o=0,H=0,ne=[{line:1,column:1}],j=0,M=[],k=0,te;if("startRule"in e){if(!(e.startRule in r))throw new Error(`Can't start parsing from rule "`+e.startRule+'".');i=r[e.startRule]}function ae(){return A.substring(H,o)}function De(){return Z(H,o)}function pe(ue,ye){throw ye=ye!==void 0?ye:Z(H,o),V([de(ue)],A.substring(H,o),ye)}function me(ue,ye){throw ye=ye!==void 0?ye:Z(H,o),oe(ue,ye)}function be(ue,ye){return{type:"literal",text:ue,ignoreCase:ye}}function Ye(ue,ye,rA){return{type:"class",parts:ue,inverted:ye,ignoreCase:rA}}function Ve(){return{type:"any"}}function iA(){return{type:"end"}}function de(ue){return{type:"other",description:ue}}function mA(ue){var ye=ne[ue],rA;if(ye)return ye;for(rA=ue-1;!ne[rA];)rA--;for(ye=ne[rA],ye={line:ye.line,column:ye.column};rAj&&(j=o,M=[]),M.push(ue))}function oe(ue,ye){return new $o(ue,null,null,ye)}function V(ue,ye,rA){return new $o($o.buildMessage(ue,ye),ue,ye,rA)}function Ge(){var ue,ye,rA,Xe,vA,RA,fr,Yt;if(ue=o,ye=EA(),ye!==t){for(rA=[],Xe=o,vA=wA(),vA!==t?(A.charCodeAt(o)===124?(RA=n,o++):(RA=t,k===0&&U(s)),RA===t&&(A.charCodeAt(o)===38?(RA=a,o++):(RA=t,k===0&&U(g)),RA===t&&(A.charCodeAt(o)===94?(RA=c,o++):(RA=t,k===0&&U(l)))),RA!==t?(fr=wA(),fr!==t?(Yt=EA(),Yt!==t?(vA=[vA,RA,fr,Yt],Xe=vA):(o=Xe,Xe=t)):(o=Xe,Xe=t)):(o=Xe,Xe=t)):(o=Xe,Xe=t);Xe!==t;)rA.push(Xe),Xe=o,vA=wA(),vA!==t?(A.charCodeAt(o)===124?(RA=n,o++):(RA=t,k===0&&U(s)),RA===t&&(A.charCodeAt(o)===38?(RA=a,o++):(RA=t,k===0&&U(g)),RA===t&&(A.charCodeAt(o)===94?(RA=c,o++):(RA=t,k===0&&U(l)))),RA!==t?(fr=wA(),fr!==t?(Yt=EA(),Yt!==t?(vA=[vA,RA,fr,Yt],Xe=vA):(o=Xe,Xe=t)):(o=Xe,Xe=t)):(o=Xe,Xe=t)):(o=Xe,Xe=t);rA!==t?(H=ue,ye=C(ye,rA),ue=ye):(o=ue,ue=t)}else o=ue,ue=t;return ue}function EA(){var ue,ye,rA,Xe,vA,RA;return ue=o,A.charCodeAt(o)===33?(ye=f,o++):(ye=t,k===0&&U(E)),ye!==t?(rA=EA(),rA!==t?(H=ue,ye=m(rA),ue=ye):(o=ue,ue=t)):(o=ue,ue=t),ue===t&&(ue=o,A.charCodeAt(o)===40?(ye=w,o++):(ye=t,k===0&&U(D)),ye!==t?(rA=wA(),rA!==t?(Xe=Ge(),Xe!==t?(vA=wA(),vA!==t?(A.charCodeAt(o)===41?(RA=L,o++):(RA=t,k===0&&U(K)),RA!==t?(H=ue,ye=_(Xe),ue=ye):(o=ue,ue=t)):(o=ue,ue=t)):(o=ue,ue=t)):(o=ue,ue=t)):(o=ue,ue=t),ue===t&&(ue=$A())),ue}function $A(){var ue,ye,rA,Xe,vA;if(ue=o,ye=wA(),ye!==t){if(rA=o,Xe=[],le.test(A.charAt(o))?(vA=A.charAt(o),o++):(vA=t,k===0&&U(re)),vA!==t)for(;vA!==t;)Xe.push(vA),le.test(A.charAt(o))?(vA=A.charAt(o),o++):(vA=t,k===0&&U(re));else Xe=t;Xe!==t?rA=A.substring(rA,o):rA=Xe,rA!==t?(H=o,Xe=J(rA),Xe?Xe=void 0:Xe=t,Xe!==t?(H=ue,ye=X(rA),ue=ye):(o=ue,ue=t)):(o=ue,ue=t)}else o=ue,ue=t;return ue}function wA(){var ue,ye;for(k++,ue=[],G.test(A.charAt(o))?(ye=A.charAt(o),o++):(ye=t,k===0&&U(ee));ye!==t;)ue.push(ye),G.test(A.charAt(o))?(ye=A.charAt(o),o++):(ye=t,k===0&&U(ee));return k--,ue===t&&(ye=t,k===0&&U(ie)),ue}if(te=i(),te!==t&&o===A.length)return te;throw te!==t&&o{var{parse:HAe}=w1();Vh.makeParser=(A=/[a-z]+/)=>(e,t)=>HAe(e,{queryPattern:A,checkFn:t});Vh.parse=Vh.makeParser()});var F1=p((ybe,S1)=>{"use strict";S1.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}});var od=p((mbe,R1)=>{var jl=F1(),x1={};for(let A of Object.keys(jl))x1[jl[A]]=A;var Ke={rgb:{channels:3,labels:"rgb"},hsl:{channels:3,labels:"hsl"},hsv:{channels:3,labels:"hsv"},hwb:{channels:3,labels:"hwb"},cmyk:{channels:4,labels:"cmyk"},xyz:{channels:3,labels:"xyz"},lab:{channels:3,labels:"lab"},lch:{channels:3,labels:"lch"},hex:{channels:1,labels:["hex"]},keyword:{channels:1,labels:["keyword"]},ansi16:{channels:1,labels:["ansi16"]},ansi256:{channels:1,labels:["ansi256"]},hcg:{channels:3,labels:["h","c","g"]},apple:{channels:3,labels:["r16","g16","b16"]},gray:{channels:1,labels:["gray"]}};R1.exports=Ke;for(let A of Object.keys(Ke)){if(!("channels"in Ke[A]))throw new Error("missing channels property: "+A);if(!("labels"in Ke[A]))throw new Error("missing channel labels property: "+A);if(Ke[A].labels.length!==Ke[A].channels)throw new Error("channel and label counts mismatch: "+A);let{channels:e,labels:t}=Ke[A];delete Ke[A].channels,delete Ke[A].labels,Object.defineProperty(Ke[A],"channels",{value:e}),Object.defineProperty(Ke[A],"labels",{value:t})}Ke.rgb.hsl=function(A){let e=A[0]/255,t=A[1]/255,r=A[2]/255,i=Math.min(e,t,r),n=Math.max(e,t,r),s=n-i,a,g;n===i?a=0:e===n?a=(t-r)/s:t===n?a=2+(r-e)/s:r===n&&(a=4+(e-t)/s),a=Math.min(a*60,360),a<0&&(a+=360);let c=(i+n)/2;return n===i?g=0:c<=.5?g=s/(n+i):g=s/(2-n-i),[a,g*100,c*100]};Ke.rgb.hsv=function(A){let e,t,r,i,n,s=A[0]/255,a=A[1]/255,g=A[2]/255,c=Math.max(s,a,g),l=c-Math.min(s,a,g),C=function(f){return(c-f)/6/l+1/2};return l===0?(i=0,n=0):(n=l/c,e=C(s),t=C(a),r=C(g),s===c?i=r-t:a===c?i=1/3+e-r:g===c&&(i=2/3+t-e),i<0?i+=1:i>1&&(i-=1)),[i*360,n*100,c*100]};Ke.rgb.hwb=function(A){let e=A[0],t=A[1],r=A[2],i=Ke.rgb.hsl(A)[0],n=1/255*Math.min(e,Math.min(t,r));return r=1-1/255*Math.max(e,Math.max(t,r)),[i,n*100,r*100]};Ke.rgb.cmyk=function(A){let e=A[0]/255,t=A[1]/255,r=A[2]/255,i=Math.min(1-e,1-t,1-r),n=(1-e-i)/(1-i)||0,s=(1-t-i)/(1-i)||0,a=(1-r-i)/(1-i)||0;return[n*100,s*100,a*100,i*100]};function JAe(A,e){return(A[0]-e[0])**2+(A[1]-e[1])**2+(A[2]-e[2])**2}Ke.rgb.keyword=function(A){let e=x1[A];if(e)return e;let t=1/0,r;for(let i of Object.keys(jl)){let n=jl[i],s=JAe(A,n);s.04045?((e+.055)/1.055)**2.4:e/12.92,t=t>.04045?((t+.055)/1.055)**2.4:t/12.92,r=r>.04045?((r+.055)/1.055)**2.4:r/12.92;let i=e*.4124+t*.3576+r*.1805,n=e*.2126+t*.7152+r*.0722,s=e*.0193+t*.1192+r*.9505;return[i*100,n*100,s*100]};Ke.rgb.lab=function(A){let e=Ke.rgb.xyz(A),t=e[0],r=e[1],i=e[2];t/=95.047,r/=100,i/=108.883,t=t>.008856?t**(1/3):7.787*t+16/116,r=r>.008856?r**(1/3):7.787*r+16/116,i=i>.008856?i**(1/3):7.787*i+16/116;let n=116*r-16,s=500*(t-r),a=200*(r-i);return[n,s,a]};Ke.hsl.rgb=function(A){let e=A[0]/360,t=A[1]/100,r=A[2]/100,i,n,s;if(t===0)return s=r*255,[s,s,s];r<.5?i=r*(1+t):i=r+t-r*t;let a=2*r-i,g=[0,0,0];for(let c=0;c<3;c++)n=e+1/3*-(c-1),n<0&&n++,n>1&&n--,6*n<1?s=a+(i-a)*6*n:2*n<1?s=i:3*n<2?s=a+(i-a)*(2/3-n)*6:s=a,g[c]=s*255;return g};Ke.hsl.hsv=function(A){let e=A[0],t=A[1]/100,r=A[2]/100,i=t,n=Math.max(r,.01);r*=2,t*=r<=1?r:2-r,i*=n<=1?n:2-n;let s=(r+t)/2,a=r===0?2*i/(n+i):2*t/(r+t);return[e,a*100,s*100]};Ke.hsv.rgb=function(A){let e=A[0]/60,t=A[1]/100,r=A[2]/100,i=Math.floor(e)%6,n=e-Math.floor(e),s=255*r*(1-t),a=255*r*(1-t*n),g=255*r*(1-t*(1-n));switch(r*=255,i){case 0:return[r,g,s];case 1:return[a,r,s];case 2:return[s,r,g];case 3:return[s,a,r];case 4:return[g,s,r];case 5:return[r,s,a]}};Ke.hsv.hsl=function(A){let e=A[0],t=A[1]/100,r=A[2]/100,i=Math.max(r,.01),n,s;s=(2-t)*r;let a=(2-t)*i;return n=t*i,n/=a<=1?a:2-a,n=n||0,s/=2,[e,n*100,s*100]};Ke.hwb.rgb=function(A){let e=A[0]/360,t=A[1]/100,r=A[2]/100,i=t+r,n;i>1&&(t/=i,r/=i);let s=Math.floor(6*e),a=1-r;n=6*e-s,(s&1)!==0&&(n=1-n);let g=t+n*(a-t),c,l,C;switch(s){default:case 6:case 0:c=a,l=g,C=t;break;case 1:c=g,l=a,C=t;break;case 2:c=t,l=a,C=g;break;case 3:c=t,l=g,C=a;break;case 4:c=g,l=t,C=a;break;case 5:c=a,l=t,C=g;break}return[c*255,l*255,C*255]};Ke.cmyk.rgb=function(A){let e=A[0]/100,t=A[1]/100,r=A[2]/100,i=A[3]/100,n=1-Math.min(1,e*(1-i)+i),s=1-Math.min(1,t*(1-i)+i),a=1-Math.min(1,r*(1-i)+i);return[n*255,s*255,a*255]};Ke.xyz.rgb=function(A){let e=A[0]/100,t=A[1]/100,r=A[2]/100,i,n,s;return i=e*3.2406+t*-1.5372+r*-.4986,n=e*-.9689+t*1.8758+r*.0415,s=e*.0557+t*-.204+r*1.057,i=i>.0031308?1.055*i**(1/2.4)-.055:i*12.92,n=n>.0031308?1.055*n**(1/2.4)-.055:n*12.92,s=s>.0031308?1.055*s**(1/2.4)-.055:s*12.92,i=Math.min(Math.max(0,i),1),n=Math.min(Math.max(0,n),1),s=Math.min(Math.max(0,s),1),[i*255,n*255,s*255]};Ke.xyz.lab=function(A){let e=A[0],t=A[1],r=A[2];e/=95.047,t/=100,r/=108.883,e=e>.008856?e**(1/3):7.787*e+16/116,t=t>.008856?t**(1/3):7.787*t+16/116,r=r>.008856?r**(1/3):7.787*r+16/116;let i=116*t-16,n=500*(e-t),s=200*(t-r);return[i,n,s]};Ke.lab.xyz=function(A){let e=A[0],t=A[1],r=A[2],i,n,s;n=(e+16)/116,i=t/500+n,s=n-r/200;let a=n**3,g=i**3,c=s**3;return n=a>.008856?a:(n-16/116)/7.787,i=g>.008856?g:(i-16/116)/7.787,s=c>.008856?c:(s-16/116)/7.787,i*=95.047,n*=100,s*=108.883,[i,n,s]};Ke.lab.lch=function(A){let e=A[0],t=A[1],r=A[2],i;i=Math.atan2(r,t)*360/2/Math.PI,i<0&&(i+=360);let s=Math.sqrt(t*t+r*r);return[e,s,i]};Ke.lch.lab=function(A){let e=A[0],t=A[1],i=A[2]/360*2*Math.PI,n=t*Math.cos(i),s=t*Math.sin(i);return[e,n,s]};Ke.rgb.ansi16=function(A,e=null){let[t,r,i]=A,n=e===null?Ke.rgb.hsv(A)[2]:e;if(n=Math.round(n/50),n===0)return 30;let s=30+(Math.round(i/255)<<2|Math.round(r/255)<<1|Math.round(t/255));return n===2&&(s+=60),s};Ke.hsv.ansi16=function(A){return Ke.rgb.ansi16(Ke.hsv.rgb(A),A[2])};Ke.rgb.ansi256=function(A){let e=A[0],t=A[1],r=A[2];return e===t&&t===r?e<8?16:e>248?231:Math.round((e-8)/247*24)+232:16+36*Math.round(e/255*5)+6*Math.round(t/255*5)+Math.round(r/255*5)};Ke.ansi16.rgb=function(A){let e=A%10;if(e===0||e===7)return A>50&&(e+=3.5),e=e/10.5*255,[e,e,e];let t=(~~(A>50)+1)*.5,r=(e&1)*t*255,i=(e>>1&1)*t*255,n=(e>>2&1)*t*255;return[r,i,n]};Ke.ansi256.rgb=function(A){if(A>=232){let n=(A-232)*10+8;return[n,n,n]}A-=16;let e,t=Math.floor(A/36)/5*255,r=Math.floor((e=A%36)/6)/5*255,i=e%6/5*255;return[t,r,i]};Ke.rgb.hex=function(A){let t=(((Math.round(A[0])&255)<<16)+((Math.round(A[1])&255)<<8)+(Math.round(A[2])&255)).toString(16).toUpperCase();return"000000".substring(t.length)+t};Ke.hex.rgb=function(A){let e=A.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if(!e)return[0,0,0];let t=e[0];e[0].length===3&&(t=t.split("").map(a=>a+a).join(""));let r=parseInt(t,16),i=r>>16&255,n=r>>8&255,s=r&255;return[i,n,s]};Ke.rgb.hcg=function(A){let e=A[0]/255,t=A[1]/255,r=A[2]/255,i=Math.max(Math.max(e,t),r),n=Math.min(Math.min(e,t),r),s=i-n,a,g;return s<1?a=n/(1-s):a=0,s<=0?g=0:i===e?g=(t-r)/s%6:i===t?g=2+(r-e)/s:g=4+(e-t)/s,g/=6,g%=1,[g*360,s*100,a*100]};Ke.hsl.hcg=function(A){let e=A[1]/100,t=A[2]/100,r=t<.5?2*e*t:2*e*(1-t),i=0;return r<1&&(i=(t-.5*r)/(1-r)),[A[0],r*100,i*100]};Ke.hsv.hcg=function(A){let e=A[1]/100,t=A[2]/100,r=e*t,i=0;return r<1&&(i=(t-r)/(1-r)),[A[0],r*100,i*100]};Ke.hcg.rgb=function(A){let e=A[0]/360,t=A[1]/100,r=A[2]/100;if(t===0)return[r*255,r*255,r*255];let i=[0,0,0],n=e%1*6,s=n%1,a=1-s,g=0;switch(Math.floor(n)){case 0:i[0]=1,i[1]=s,i[2]=0;break;case 1:i[0]=a,i[1]=1,i[2]=0;break;case 2:i[0]=0,i[1]=1,i[2]=s;break;case 3:i[0]=0,i[1]=a,i[2]=1;break;case 4:i[0]=s,i[1]=0,i[2]=1;break;default:i[0]=1,i[1]=0,i[2]=a}return g=(1-t)*r,[(t*i[0]+g)*255,(t*i[1]+g)*255,(t*i[2]+g)*255]};Ke.hcg.hsv=function(A){let e=A[1]/100,t=A[2]/100,r=e+t*(1-e),i=0;return r>0&&(i=e/r),[A[0],i*100,r*100]};Ke.hcg.hsl=function(A){let e=A[1]/100,r=A[2]/100*(1-e)+.5*e,i=0;return r>0&&r<.5?i=e/(2*r):r>=.5&&r<1&&(i=e/(2*(1-r))),[A[0],i*100,r*100]};Ke.hcg.hwb=function(A){let e=A[1]/100,t=A[2]/100,r=e+t*(1-e);return[A[0],(r-e)*100,(1-r)*100]};Ke.hwb.hcg=function(A){let e=A[1]/100,r=1-A[2]/100,i=r-e,n=0;return i<1&&(n=(r-i)/(1-i)),[A[0],i*100,n*100]};Ke.apple.rgb=function(A){return[A[0]/65535*255,A[1]/65535*255,A[2]/65535*255]};Ke.rgb.apple=function(A){return[A[0]/255*65535,A[1]/255*65535,A[2]/255*65535]};Ke.gray.rgb=function(A){return[A[0]/100*255,A[0]/100*255,A[0]/100*255]};Ke.gray.hsl=function(A){return[0,0,A[0]]};Ke.gray.hsv=Ke.gray.hsl;Ke.gray.hwb=function(A){return[0,100,A[0]]};Ke.gray.cmyk=function(A){return[0,0,0,A[0]]};Ke.gray.lab=function(A){return[A[0],0,0]};Ke.gray.hex=function(A){let e=Math.round(A[0]/100*255)&255,r=((e<<16)+(e<<8)+e).toString(16).toUpperCase();return"000000".substring(r.length)+r};Ke.rgb.gray=function(A){return[(A[0]+A[1]+A[2])/3/255*100]}});var k1=p((wbe,b1)=>{var Xh=od();function jAe(){let A={},e=Object.keys(Xh);for(let t=e.length,r=0;r{var ad=od(),XAe=k1(),Ng={},ZAe=Object.keys(ad);function $Ae(A){let e=function(...t){let r=t[0];return r==null?r:(r.length>1&&(t=r),A(t))};return"conversion"in A&&(e.conversion=A.conversion),e}function ete(A){let e=function(...t){let r=t[0];if(r==null)return r;r.length>1&&(t=r);let i=A(t);if(typeof i=="object")for(let n=i.length,s=0;s{Ng[A]={},Object.defineProperty(Ng[A],"channels",{value:ad[A].channels}),Object.defineProperty(Ng[A],"labels",{value:ad[A].labels});let e=XAe(A);Object.keys(e).forEach(r=>{let i=e[r];Ng[A][r]=ete(i),Ng[A][r].raw=$Ae(i)})});v1.exports=Ng});var U1=p((Sbe,K1)=>{"use strict";var M1=(A,e)=>(...t)=>`\x1B[${A(...t)+e}m`,L1=(A,e)=>(...t)=>{let r=A(...t);return`\x1B[${38+e};5;${r}m`},P1=(A,e)=>(...t)=>{let r=A(...t);return`\x1B[${38+e};2;${r[0]};${r[1]};${r[2]}m`},Zh=A=>A,O1=(A,e,t)=>[A,e,t],Mg=(A,e,t)=>{Object.defineProperty(A,e,{get:()=>{let r=t();return Object.defineProperty(A,e,{value:r,enumerable:!0,configurable:!0}),r},enumerable:!0,configurable:!0})},gd,Lg=(A,e,t,r)=>{gd===void 0&&(gd=N1());let i=r?10:0,n={};for(let[s,a]of Object.entries(gd)){let g=s==="ansi16"?"ansi":s;s===e?n[g]=A(t,i):typeof a=="object"&&(n[g]=A(a[e],i))}return n};function Ate(){let A=new Map,e={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}};e.color.gray=e.color.blackBright,e.bgColor.bgGray=e.bgColor.bgBlackBright,e.color.grey=e.color.blackBright,e.bgColor.bgGrey=e.bgColor.bgBlackBright;for(let[t,r]of Object.entries(e)){for(let[i,n]of Object.entries(r))e[i]={open:`\x1B[${n[0]}m`,close:`\x1B[${n[1]}m`},r[i]=e[i],A.set(n[0],n[1]);Object.defineProperty(e,t,{value:r,enumerable:!1})}return Object.defineProperty(e,"codes",{value:A,enumerable:!1}),e.color.close="\x1B[39m",e.bgColor.close="\x1B[49m",Mg(e.color,"ansi",()=>Lg(M1,"ansi16",Zh,!1)),Mg(e.color,"ansi256",()=>Lg(L1,"ansi256",Zh,!1)),Mg(e.color,"ansi16m",()=>Lg(P1,"rgb",O1,!1)),Mg(e.bgColor,"ansi",()=>Lg(M1,"ansi16",Zh,!0)),Mg(e.bgColor,"ansi256",()=>Lg(L1,"ansi256",Zh,!0)),Mg(e.bgColor,"ansi16m",()=>Lg(P1,"rgb",O1,!0)),e}Object.defineProperty(K1,"exports",{enumerable:!0,get:Ate})});var q1=p((Fbe,T1)=>{"use strict";T1.exports=(A,e=process.argv)=>{let t=A.startsWith("-")?"":A.length===1?"-":"--",r=e.indexOf(t+A),i=e.indexOf("--");return r!==-1&&(i===-1||r{"use strict";var tte=require("os"),G1=require("tty"),Xr=q1(),{env:dt}=process,Rs;Xr("no-color")||Xr("no-colors")||Xr("color=false")||Xr("color=never")?Rs=0:(Xr("color")||Xr("colors")||Xr("color=true")||Xr("color=always"))&&(Rs=1);"FORCE_COLOR"in dt&&(dt.FORCE_COLOR==="true"?Rs=1:dt.FORCE_COLOR==="false"?Rs=0:Rs=dt.FORCE_COLOR.length===0?1:Math.min(parseInt(dt.FORCE_COLOR,10),3));function cd(A){return A===0?!1:{level:A,hasBasic:!0,has256:A>=2,has16m:A>=3}}function ld(A,e){if(Rs===0)return 0;if(Xr("color=16m")||Xr("color=full")||Xr("color=truecolor"))return 3;if(Xr("color=256"))return 2;if(A&&!e&&Rs===void 0)return 0;let t=Rs||0;if(dt.TERM==="dumb")return t;if(process.platform==="win32"){let r=tte.release().split(".");return Number(r[0])>=10&&Number(r[2])>=10586?Number(r[2])>=14931?3:2:1}if("CI"in dt)return["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI","GITHUB_ACTIONS","BUILDKITE"].some(r=>r in dt)||dt.CI_NAME==="codeship"?1:t;if("TEAMCITY_VERSION"in dt)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(dt.TEAMCITY_VERSION)?1:0;if(dt.COLORTERM==="truecolor")return 3;if("TERM_PROGRAM"in dt){let r=parseInt((dt.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(dt.TERM_PROGRAM){case"iTerm.app":return r>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(dt.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(dt.TERM)||"COLORTERM"in dt?1:t}function rte(A){let e=ld(A,A&&A.isTTY);return cd(e)}Y1.exports={supportsColor:rte,stdout:cd(ld(!0,G1.isatty(1))),stderr:cd(ld(!0,G1.isatty(2)))}});var J1=p((Rbe,H1)=>{"use strict";var ite=(A,e,t)=>{let r=A.indexOf(e);if(r===-1)return A;let i=e.length,n=0,s="";do s+=A.substr(n,r-n)+e+t,n=r+i,r=A.indexOf(e,n);while(r!==-1);return s+=A.substr(n),s},nte=(A,e,t,r)=>{let i=0,n="";do{let s=A[r-1]==="\r";n+=A.substr(i,(s?r-1:r)-i)+e+(s?`\r +`:` +`)+t,i=r+1,r=A.indexOf(` +`,i)}while(r!==-1);return n+=A.substr(i),n};H1.exports={stringReplaceAll:ite,stringEncaseCRLFWithFirstIndex:nte}});var X1=p((bbe,V1)=>{"use strict";var ste=/(?:\\(u(?:[a-f\d]{4}|\{[a-f\d]{1,6}\})|x[a-f\d]{2}|.))|(?:\{(~)?(\w+(?:\([^)]*\))?(?:\.\w+(?:\([^)]*\))?)*)(?:[ \t]|(?=\r?\n)))|(\})|((?:.|[\r\n\f])+?)/gi,j1=/(?:^|\.)(\w+)(?:\(([^)]*)\))?/g,ote=/^(['"])((?:\\.|(?!\1)[^\\])*)\1$/,ate=/\\(u(?:[a-f\d]{4}|\{[a-f\d]{1,6}\})|x[a-f\d]{2}|.)|([^\\])/gi,gte=new Map([["n",` +`],["r","\r"],["t"," "],["b","\b"],["f","\f"],["v","\v"],["0","\0"],["\\","\\"],["e","\x1B"],["a","\x07"]]);function z1(A){let e=A[0]==="u",t=A[1]==="{";return e&&!t&&A.length===5||A[0]==="x"&&A.length===3?String.fromCharCode(parseInt(A.slice(1),16)):e&&t?String.fromCodePoint(parseInt(A.slice(2,-1),16)):gte.get(A)||A}function cte(A,e){let t=[],r=e.trim().split(/\s*,\s*/g),i;for(let n of r){let s=Number(n);if(!Number.isNaN(s))t.push(s);else if(i=n.match(ote))t.push(i[2].replace(ate,(a,g,c)=>g?z1(g):c));else throw new Error(`Invalid Chalk template style argument: ${n} (in style '${A}')`)}return t}function lte(A){j1.lastIndex=0;let e=[],t;for(;(t=j1.exec(A))!==null;){let r=t[1];if(t[2]){let i=cte(r,t[2]);e.push([r].concat(i))}else e.push([r])}return e}function W1(A,e){let t={};for(let i of e)for(let n of i.styles)t[n[0]]=i.inverse?null:n.slice(1);let r=A;for(let[i,n]of Object.entries(t))if(!!Array.isArray(n)){if(!(i in r))throw new Error(`Unknown Chalk style: ${i}`);r=n.length>0?r[i](...n):r[i]}return r}V1.exports=(A,e)=>{let t=[],r=[],i=[];if(e.replace(ste,(n,s,a,g,c,l)=>{if(s)i.push(z1(s));else if(g){let C=i.join("");i=[],r.push(t.length===0?C:W1(A,t)(C)),t.push({inverse:a,styles:lte(g)})}else if(c){if(t.length===0)throw new Error("Found extraneous } in Chalk template literal");r.push(W1(A,t)(i.join(""))),i=[],t.pop()}else i.push(l)}),r.push(i.join("")),t.length>0){let n=`Chalk template literal is missing ${t.length} closing bracket${t.length===1?"":"s"} (\`}\`)`;throw new Error(n)}return r.join("")}});var Ed=p((kbe,AL)=>{"use strict";var Wl=U1(),{stdout:Cd,stderr:hd}=_1(),{stringReplaceAll:ute,stringEncaseCRLFWithFirstIndex:Cte}=J1(),Z1=["ansi","ansi","ansi256","ansi16m"],Pg=Object.create(null),hte=(A,e={})=>{if(e.level>3||e.level<0)throw new Error("The `level` option should be an integer from 0 to 3");let t=Cd?Cd.level:0;A.level=e.level===void 0?t:e.level},fd=class{constructor(e){return $1(e)}},$1=A=>{let e={};return hte(e,A),e.template=(...t)=>Ete(e.template,...t),Object.setPrototypeOf(e,$h.prototype),Object.setPrototypeOf(e.template,e),e.template.constructor=()=>{throw new Error("`chalk.constructor()` is deprecated. Use `new chalk.Instance()` instead.")},e.template.Instance=fd,e.template};function $h(A){return $1(A)}for(let[A,e]of Object.entries(Wl))Pg[A]={get(){let t=ef(this,Id(e.open,e.close,this._styler),this._isEmpty);return Object.defineProperty(this,A,{value:t}),t}};Pg.visible={get(){let A=ef(this,this._styler,!0);return Object.defineProperty(this,"visible",{value:A}),A}};var eL=["rgb","hex","keyword","hsl","hsv","hwb","ansi","ansi256"];for(let A of eL)Pg[A]={get(){let{level:e}=this;return function(...t){let r=Id(Wl.color[Z1[e]][A](...t),Wl.color.close,this._styler);return ef(this,r,this._isEmpty)}}};for(let A of eL){let e="bg"+A[0].toUpperCase()+A.slice(1);Pg[e]={get(){let{level:t}=this;return function(...r){let i=Id(Wl.bgColor[Z1[t]][A](...r),Wl.bgColor.close,this._styler);return ef(this,i,this._isEmpty)}}}}var fte=Object.defineProperties(()=>{},{...Pg,level:{enumerable:!0,get(){return this._generator.level},set(A){this._generator.level=A}}}),Id=(A,e,t)=>{let r,i;return t===void 0?(r=A,i=e):(r=t.openAll+A,i=e+t.closeAll),{open:A,close:e,openAll:r,closeAll:i,parent:t}},ef=(A,e,t)=>{let r=(...i)=>Ite(r,i.length===1?""+i[0]:i.join(" "));return r.__proto__=fte,r._generator=A,r._styler=e,r._isEmpty=t,r},Ite=(A,e)=>{if(A.level<=0||!e)return A._isEmpty?"":e;let t=A._styler;if(t===void 0)return e;let{openAll:r,closeAll:i}=t;if(e.indexOf("\x1B")!==-1)for(;t!==void 0;)e=ute(e,t.close,t.open),t=t.parent;let n=e.indexOf(` +`);return n!==-1&&(e=Cte(e,i,r,n)),r+e+i},ud,Ete=(A,...e)=>{let[t]=e;if(!Array.isArray(t))return e.join(" ");let r=e.slice(1),i=[t.raw[0]];for(let n=1;n{"use strict";Zr.isInteger=A=>typeof A=="number"?Number.isInteger(A):typeof A=="string"&&A.trim()!==""?Number.isInteger(Number(A)):!1;Zr.find=(A,e)=>A.nodes.find(t=>t.type===e);Zr.exceedsLimit=(A,e,t=1,r)=>r===!1||!Zr.isInteger(A)||!Zr.isInteger(e)?!1:(Number(e)-Number(A))/Number(t)>=r;Zr.escapeNode=(A,e=0,t)=>{let r=A.nodes[e];!r||(t&&r.type===t||r.type==="open"||r.type==="close")&&r.escaped!==!0&&(r.value="\\"+r.value,r.escaped=!0)};Zr.encloseBrace=A=>A.type!=="brace"?!1:A.commas>>0+A.ranges>>0===0?(A.invalid=!0,!0):!1;Zr.isInvalidBrace=A=>A.type!=="brace"?!1:A.invalid===!0||A.dollar?!0:A.commas>>0+A.ranges>>0===0||A.open!==!0||A.close!==!0?(A.invalid=!0,!0):!1;Zr.isOpenOrClose=A=>A.type==="open"||A.type==="close"?!0:A.open===!0||A.close===!0;Zr.reduce=A=>A.reduce((e,t)=>(t.type==="text"&&e.push(t.value),t.type==="range"&&(t.type="text"),e),[]);Zr.flatten=(...A)=>{let e=[],t=r=>{for(let i=0;i{"use strict";var tL=Af();rL.exports=(A,e={})=>{let t=(r,i={})=>{let n=e.escapeInvalid&&tL.isInvalidBrace(i),s=r.invalid===!0&&e.escapeInvalid===!0,a="";if(r.value)return(n||s)&&tL.isOpenOrClose(r)?"\\"+r.value:r.value;if(r.value)return r.value;if(r.nodes)for(let g of r.nodes)a+=t(g);return a};return t(A)}});var nL=p((Mbe,iL)=>{"use strict";iL.exports=function(A){return typeof A=="number"?A-A===0:typeof A=="string"&&A.trim()!==""?Number.isFinite?Number.isFinite(+A):isFinite(+A):!1}});var hL=p((Lbe,CL)=>{"use strict";var sL=nL(),ea=(A,e,t)=>{if(sL(A)===!1)throw new TypeError("toRegexRange: expected the first argument to be a number");if(e===void 0||A===e)return String(A);if(sL(e)===!1)throw new TypeError("toRegexRange: expected the second argument to be a number.");let r={relaxZeros:!0,...t};typeof r.strictZeros=="boolean"&&(r.relaxZeros=r.strictZeros===!1);let i=String(r.relaxZeros),n=String(r.shorthand),s=String(r.capture),a=String(r.wrap),g=A+":"+e+"="+i+n+s+a;if(ea.cache.hasOwnProperty(g))return ea.cache[g].result;let c=Math.min(A,e),l=Math.max(A,e);if(Math.abs(c-l)===1){let w=A+"|"+e;return r.capture?`(${w})`:r.wrap===!1?w:`(?:${w})`}let C=uL(A)||uL(e),f={min:A,max:e,a:c,b:l},E=[],m=[];if(C&&(f.isPadded=C,f.maxLen=String(f.max).length),c<0){let w=l<0?Math.abs(l):1;m=oL(w,Math.abs(c),f,r),c=f.a=0}return l>=0&&(E=oL(c,l,f,r)),f.negatives=m,f.positives=E,f.result=Bte(m,E,r),r.capture===!0?f.result=`(${f.result})`:r.wrap!==!1&&E.length+m.length>1&&(f.result=`(?:${f.result})`),ea.cache[g]=f,f.result};function Bte(A,e,t){let r=Bd(A,e,"-",!1,t)||[],i=Bd(e,A,"",!1,t)||[],n=Bd(A,e,"-?",!0,t)||[];return r.concat(n).concat(i).join("|")}function pte(A,e){let t=1,r=1,i=gL(A,t),n=new Set([e]);for(;A<=i&&i<=e;)n.add(i),t+=1,i=gL(A,t);for(i=cL(e+1,r)-1;A1&&a.count.pop(),a.count.push(l.count[0]),a.string=a.pattern+lL(a.count),s=c+1;continue}t.isPadded&&(C=wte(c,t,r)),l.string=C+l.pattern+lL(l.count),n.push(l),s=c+1,a=l}return n}function Bd(A,e,t,r,i){let n=[];for(let s of A){let{string:a}=s;!r&&!aL(e,"string",a)&&n.push(t+a),r&&aL(e,"string",a)&&n.push(t+a)}return n}function dte(A,e){let t=[];for(let r=0;re?1:e>A?-1:0}function aL(A,e,t){return A.some(r=>r[e]===t)}function gL(A,e){return Number(String(A).slice(0,-e)+"9".repeat(e))}function cL(A,e){return A-A%Math.pow(10,e)}function lL(A){let[e=0,t=""]=A;return t||e>1?`{${e+(t?","+t:"")}}`:""}function mte(A,e,t){return`[${A}${e-A===1?"":"-"}${e}]`}function uL(A){return/^-?(0+)\d/.test(A)}function wte(A,e,t){if(!e.isPadded)return A;let r=Math.abs(e.maxLen-String(A).length),i=t.relaxZeros!==!1;switch(r){case 0:return"";case 1:return i?"0?":"0";case 2:return i?"0{0,2}":"00";default:return i?`0{0,${r}}`:`0{${r}}`}}ea.cache={};ea.clearCache=()=>ea.cache={};CL.exports=ea});var dd=p((Pbe,yL)=>{"use strict";var Dte=require("util"),EL=hL(),fL=A=>A!==null&&typeof A=="object"&&!Array.isArray(A),Ste=A=>e=>A===!0?Number(e):String(e),pd=A=>typeof A=="number"||typeof A=="string"&&A!=="",Vl=A=>Number.isInteger(+A),Qd=A=>{let e=`${A}`,t=-1;if(e[0]==="-"&&(e=e.slice(1)),e==="0")return!1;for(;e[++t]==="0";);return t>0},Fte=(A,e,t)=>typeof A=="string"||typeof e=="string"?!0:t.stringify===!0,xte=(A,e,t)=>{if(e>0){let r=A[0]==="-"?"-":"";r&&(A=A.slice(1)),A=r+A.padStart(r?e-1:e,"0")}return t===!1?String(A):A},IL=(A,e)=>{let t=A[0]==="-"?"-":"";for(t&&(A=A.slice(1),e--);A.length{A.negatives.sort((s,a)=>sa?1:0),A.positives.sort((s,a)=>sa?1:0);let t=e.capture?"":"?:",r="",i="",n;return A.positives.length&&(r=A.positives.join("|")),A.negatives.length&&(i=`-(${t}${A.negatives.join("|")})`),r&&i?n=`${r}|${i}`:n=r||i,e.wrap?`(${t}${n})`:n},BL=(A,e,t,r)=>{if(t)return EL(A,e,{wrap:!1,...r});let i=String.fromCharCode(A);if(A===e)return i;let n=String.fromCharCode(e);return`[${i}-${n}]`},pL=(A,e,t)=>{if(Array.isArray(A)){let r=t.wrap===!0,i=t.capture?"":"?:";return r?`(${i}${A.join("|")})`:A.join("|")}return EL(A,e,t)},QL=(...A)=>new RangeError("Invalid range arguments: "+Dte.inspect(...A)),dL=(A,e,t)=>{if(t.strictRanges===!0)throw QL([A,e]);return[]},bte=(A,e)=>{if(e.strictRanges===!0)throw new TypeError(`Expected step "${A}" to be a number`);return[]},kte=(A,e,t=1,r={})=>{let i=Number(A),n=Number(e);if(!Number.isInteger(i)||!Number.isInteger(n)){if(r.strictRanges===!0)throw QL([A,e]);return[]}i===0&&(i=0),n===0&&(n=0);let s=i>n,a=String(A),g=String(e),c=String(t);t=Math.max(Math.abs(t),1);let l=Qd(a)||Qd(g)||Qd(c),C=l?Math.max(a.length,g.length,c.length):0,f=l===!1&&Fte(A,e,r)===!1,E=r.transform||Ste(f);if(r.toRegex&&t===1)return BL(IL(A,C),IL(e,C),!0,r);let m={negatives:[],positives:[]},w=K=>m[K<0?"negatives":"positives"].push(Math.abs(K)),D=[],L=0;for(;s?i>=n:i<=n;)r.toRegex===!0&&t>1?w(i):D.push(xte(E(i,L),C,f)),i=s?i-t:i+t,L++;return r.toRegex===!0?t>1?Rte(m,r):pL(D,null,{wrap:!1,...r}):D},vte=(A,e,t=1,r={})=>{if(!Vl(A)&&A.length>1||!Vl(e)&&e.length>1)return dL(A,e,r);let i=r.transform||(f=>String.fromCharCode(f)),n=`${A}`.charCodeAt(0),s=`${e}`.charCodeAt(0),a=n>s,g=Math.min(n,s),c=Math.max(n,s);if(r.toRegex&&t===1)return BL(g,c,!1,r);let l=[],C=0;for(;a?n>=s:n<=s;)l.push(i(n,C)),n=a?n-t:n+t,C++;return r.toRegex===!0?pL(l,null,{wrap:!1,options:r}):l},rf=(A,e,t,r={})=>{if(e==null&&pd(A))return[A];if(!pd(A)||!pd(e))return dL(A,e,r);if(typeof t=="function")return rf(A,e,1,{transform:t});if(fL(t))return rf(A,e,0,t);let i={...r};return i.capture===!0&&(i.wrap=!0),t=t||i.step||1,Vl(t)?Vl(A)&&Vl(e)?kte(A,e,t,i):vte(A,e,Math.max(Math.abs(t),1),i):t!=null&&!fL(t)?bte(t,i):rf(A,e,1,t)};yL.exports=rf});var DL=p((Obe,wL)=>{"use strict";var Nte=dd(),mL=Af(),Mte=(A,e={})=>{let t=(r,i={})=>{let n=mL.isInvalidBrace(i),s=r.invalid===!0&&e.escapeInvalid===!0,a=n===!0||s===!0,g=e.escapeInvalid===!0?"\\":"",c="";if(r.isOpen===!0||r.isClose===!0)return g+r.value;if(r.type==="open")return a?g+r.value:"(";if(r.type==="close")return a?g+r.value:")";if(r.type==="comma")return r.prev.type==="comma"?"":a?r.value:"|";if(r.value)return r.value;if(r.nodes&&r.ranges>0){let l=mL.reduce(r.nodes),C=Nte(...l,{...e,wrap:!1,toRegex:!0});if(C.length!==0)return l.length>1&&C.length>1?`(${C})`:C}if(r.nodes)for(let l of r.nodes)c+=t(l,r);return c};return t(A)};wL.exports=Mte});var xL=p((Kbe,FL)=>{"use strict";var Lte=dd(),SL=tf(),Og=Af(),Aa=(A="",e="",t=!1)=>{let r=[];if(A=[].concat(A),e=[].concat(e),!e.length)return A;if(!A.length)return t?Og.flatten(e).map(i=>`{${i}}`):e;for(let i of A)if(Array.isArray(i))for(let n of i)r.push(Aa(n,e,t));else for(let n of e)t===!0&&typeof n=="string"&&(n=`{${n}}`),r.push(Array.isArray(n)?Aa(i,n,t):i+n);return Og.flatten(r)},Pte=(A,e={})=>{let t=e.rangeLimit===void 0?1e3:e.rangeLimit,r=(i,n={})=>{i.queue=[];let s=n,a=n.queue;for(;s.type!=="brace"&&s.type!=="root"&&s.parent;)s=s.parent,a=s.queue;if(i.invalid||i.dollar){a.push(Aa(a.pop(),SL(i,e)));return}if(i.type==="brace"&&i.invalid!==!0&&i.nodes.length===2){a.push(Aa(a.pop(),["{}"]));return}if(i.nodes&&i.ranges>0){let C=Og.reduce(i.nodes);if(Og.exceedsLimit(...C,e.step,t))throw new RangeError("expanded array length exceeds range limit. Use options.rangeLimit to increase or disable the limit.");let f=Lte(...C,e);f.length===0&&(f=SL(i,e)),a.push(Aa(a.pop(),f)),i.nodes=[];return}let g=Og.encloseBrace(i),c=i.queue,l=i;for(;l.type!=="brace"&&l.type!=="root"&&l.parent;)l=l.parent,c=l.queue;for(let C=0;C{"use strict";RL.exports={MAX_LENGTH:1024*64,CHAR_0:"0",CHAR_9:"9",CHAR_UPPERCASE_A:"A",CHAR_LOWERCASE_A:"a",CHAR_UPPERCASE_Z:"Z",CHAR_LOWERCASE_Z:"z",CHAR_LEFT_PARENTHESES:"(",CHAR_RIGHT_PARENTHESES:")",CHAR_ASTERISK:"*",CHAR_AMPERSAND:"&",CHAR_AT:"@",CHAR_BACKSLASH:"\\",CHAR_BACKTICK:"`",CHAR_CARRIAGE_RETURN:"\r",CHAR_CIRCUMFLEX_ACCENT:"^",CHAR_COLON:":",CHAR_COMMA:",",CHAR_DOLLAR:"$",CHAR_DOT:".",CHAR_DOUBLE_QUOTE:'"',CHAR_EQUAL:"=",CHAR_EXCLAMATION_MARK:"!",CHAR_FORM_FEED:"\f",CHAR_FORWARD_SLASH:"/",CHAR_HASH:"#",CHAR_HYPHEN_MINUS:"-",CHAR_LEFT_ANGLE_BRACKET:"<",CHAR_LEFT_CURLY_BRACE:"{",CHAR_LEFT_SQUARE_BRACKET:"[",CHAR_LINE_FEED:` +`,CHAR_NO_BREAK_SPACE:"\xA0",CHAR_PERCENT:"%",CHAR_PLUS:"+",CHAR_QUESTION_MARK:"?",CHAR_RIGHT_ANGLE_BRACKET:">",CHAR_RIGHT_CURLY_BRACE:"}",CHAR_RIGHT_SQUARE_BRACKET:"]",CHAR_SEMICOLON:";",CHAR_SINGLE_QUOTE:"'",CHAR_SPACE:" ",CHAR_TAB:" ",CHAR_UNDERSCORE:"_",CHAR_VERTICAL_LINE:"|",CHAR_ZERO_WIDTH_NOBREAK_SPACE:"\uFEFF"}});var LL=p((Tbe,ML)=>{"use strict";var Ote=tf(),{MAX_LENGTH:kL,CHAR_BACKSLASH:yd,CHAR_BACKTICK:Kte,CHAR_COMMA:Ute,CHAR_DOT:Tte,CHAR_LEFT_PARENTHESES:qte,CHAR_RIGHT_PARENTHESES:Gte,CHAR_LEFT_CURLY_BRACE:Yte,CHAR_RIGHT_CURLY_BRACE:_te,CHAR_LEFT_SQUARE_BRACKET:vL,CHAR_RIGHT_SQUARE_BRACKET:NL,CHAR_DOUBLE_QUOTE:Hte,CHAR_SINGLE_QUOTE:Jte,CHAR_NO_BREAK_SPACE:jte,CHAR_ZERO_WIDTH_NOBREAK_SPACE:Wte}=bL(),zte=(A,e={})=>{if(typeof A!="string")throw new TypeError("Expected a string");let t=e||{},r=typeof t.maxLength=="number"?Math.min(kL,t.maxLength):kL;if(A.length>r)throw new SyntaxError(`Input length (${A.length}), exceeds max characters (${r})`);let i={type:"root",input:A,nodes:[]},n=[i],s=i,a=i,g=0,c=A.length,l=0,C=0,f,E={},m=()=>A[l++],w=D=>{if(D.type==="text"&&a.type==="dot"&&(a.type="text"),a&&a.type==="text"&&D.type==="text"){a.value+=D.value;return}return s.nodes.push(D),D.parent=s,D.prev=a,a=D,D};for(w({type:"bos"});l0){if(s.ranges>0){s.ranges=0;let D=s.nodes.shift();s.nodes=[D,{type:"text",value:Ote(s)}]}w({type:"comma",value:f}),s.commas++;continue}if(f===Tte&&C>0&&s.commas===0){let D=s.nodes;if(C===0||D.length===0){w({type:"text",value:f});continue}if(a.type==="dot"){if(s.range=[],a.value+=f,a.type="range",s.nodes.length!==3&&s.nodes.length!==5){s.invalid=!0,s.ranges=0,a.type="text";continue}s.ranges++,s.args=[];continue}if(a.type==="range"){D.pop();let L=D[D.length-1];L.value+=a.value+f,a=L,s.ranges--;continue}w({type:"dot",value:f});continue}w({type:"text",value:f})}do if(s=n.pop(),s.type!=="root"){s.nodes.forEach(K=>{K.nodes||(K.type==="open"&&(K.isOpen=!0),K.type==="close"&&(K.isClose=!0),K.nodes||(K.type="text"),K.invalid=!0)});let D=n[n.length-1],L=D.nodes.indexOf(s);D.nodes.splice(L,1,...s.nodes)}while(n.length>0);return w({type:"eos"}),i};ML.exports=zte});var KL=p((qbe,OL)=>{"use strict";var PL=tf(),Vte=DL(),Xte=xL(),Zte=LL(),xr=(A,e={})=>{let t=[];if(Array.isArray(A))for(let r of A){let i=xr.create(r,e);Array.isArray(i)?t.push(...i):t.push(i)}else t=[].concat(xr.create(A,e));return e&&e.expand===!0&&e.nodupes===!0&&(t=[...new Set(t)]),t};xr.parse=(A,e={})=>Zte(A,e);xr.stringify=(A,e={})=>PL(typeof A=="string"?xr.parse(A,e):A,e);xr.compile=(A,e={})=>(typeof A=="string"&&(A=xr.parse(A,e)),Vte(A,e));xr.expand=(A,e={})=>{typeof A=="string"&&(A=xr.parse(A,e));let t=Xte(A,e);return e.noempty===!0&&(t=t.filter(Boolean)),e.nodupes===!0&&(t=[...new Set(t)]),t};xr.create=(A,e={})=>A===""||A.length<3?[A]:e.expand!==!0?xr.compile(A,e):xr.expand(A,e);OL.exports=xr});var Xl=p((Gbe,YL)=>{"use strict";var $te=require("path"),$i="\\\\/",UL=`[^${$i}]`,qn="\\.",ere="\\+",Are="\\?",nf="\\/",tre="(?=.)",TL="[^/]",md=`(?:${nf}|$)`,qL=`(?:^|${nf})`,wd=`${qn}{1,2}${md}`,rre=`(?!${qn})`,ire=`(?!${qL}${wd})`,nre=`(?!${qn}{0,1}${md})`,sre=`(?!${wd})`,ore=`[^.${nf}]`,are=`${TL}*?`,GL={DOT_LITERAL:qn,PLUS_LITERAL:ere,QMARK_LITERAL:Are,SLASH_LITERAL:nf,ONE_CHAR:tre,QMARK:TL,END_ANCHOR:md,DOTS_SLASH:wd,NO_DOT:rre,NO_DOTS:ire,NO_DOT_SLASH:nre,NO_DOTS_SLASH:sre,QMARK_NO_DOT:ore,STAR:are,START_ANCHOR:qL},gre={...GL,SLASH_LITERAL:`[${$i}]`,QMARK:UL,STAR:`${UL}*?`,DOTS_SLASH:`${qn}{1,2}(?:[${$i}]|$)`,NO_DOT:`(?!${qn})`,NO_DOTS:`(?!(?:^|[${$i}])${qn}{1,2}(?:[${$i}]|$))`,NO_DOT_SLASH:`(?!${qn}{0,1}(?:[${$i}]|$))`,NO_DOTS_SLASH:`(?!${qn}{1,2}(?:[${$i}]|$))`,QMARK_NO_DOT:`[^.${$i}]`,START_ANCHOR:`(?:^|[${$i}])`,END_ANCHOR:`(?:[${$i}]|$)`},cre={alnum:"a-zA-Z0-9",alpha:"a-zA-Z",ascii:"\\x00-\\x7F",blank:" \\t",cntrl:"\\x00-\\x1F\\x7F",digit:"0-9",graph:"\\x21-\\x7E",lower:"a-z",print:"\\x20-\\x7E ",punct:"\\-!\"#$%&'()\\*+,./:;<=>?@[\\]^_`{|}~",space:" \\t\\r\\n\\v\\f",upper:"A-Z",word:"A-Za-z0-9_",xdigit:"A-Fa-f0-9"};YL.exports={MAX_LENGTH:1024*64,POSIX_REGEX_SOURCE:cre,REGEX_BACKSLASH:/\\(?![*+?^${}(|)[\]])/g,REGEX_NON_SPECIAL_CHARS:/^[^@![\].,$*+?^{}()|\\/]+/,REGEX_SPECIAL_CHARS:/[-*+?.^${}(|)[\]]/,REGEX_SPECIAL_CHARS_BACKREF:/(\\?)((\W)(\3*))/g,REGEX_SPECIAL_CHARS_GLOBAL:/([-*+?.^${}(|)[\]])/g,REGEX_REMOVE_BACKSLASH:/(?:\[.*?[^\\]\]|\\(?=.))/g,REPLACEMENTS:{"***":"*","**/**":"**","**/**/**":"**"},CHAR_0:48,CHAR_9:57,CHAR_UPPERCASE_A:65,CHAR_LOWERCASE_A:97,CHAR_UPPERCASE_Z:90,CHAR_LOWERCASE_Z:122,CHAR_LEFT_PARENTHESES:40,CHAR_RIGHT_PARENTHESES:41,CHAR_ASTERISK:42,CHAR_AMPERSAND:38,CHAR_AT:64,CHAR_BACKWARD_SLASH:92,CHAR_CARRIAGE_RETURN:13,CHAR_CIRCUMFLEX_ACCENT:94,CHAR_COLON:58,CHAR_COMMA:44,CHAR_DOT:46,CHAR_DOUBLE_QUOTE:34,CHAR_EQUAL:61,CHAR_EXCLAMATION_MARK:33,CHAR_FORM_FEED:12,CHAR_FORWARD_SLASH:47,CHAR_GRAVE_ACCENT:96,CHAR_HASH:35,CHAR_HYPHEN_MINUS:45,CHAR_LEFT_ANGLE_BRACKET:60,CHAR_LEFT_CURLY_BRACE:123,CHAR_LEFT_SQUARE_BRACKET:91,CHAR_LINE_FEED:10,CHAR_NO_BREAK_SPACE:160,CHAR_PERCENT:37,CHAR_PLUS:43,CHAR_QUESTION_MARK:63,CHAR_RIGHT_ANGLE_BRACKET:62,CHAR_RIGHT_CURLY_BRACE:125,CHAR_RIGHT_SQUARE_BRACKET:93,CHAR_SEMICOLON:59,CHAR_SINGLE_QUOTE:39,CHAR_SPACE:32,CHAR_TAB:9,CHAR_UNDERSCORE:95,CHAR_VERTICAL_LINE:124,CHAR_ZERO_WIDTH_NOBREAK_SPACE:65279,SEP:$te.sep,extglobChars(A){return{"!":{type:"negate",open:"(?:(?!(?:",close:`))${A.STAR})`},"?":{type:"qmark",open:"(?:",close:")?"},"+":{type:"plus",open:"(?:",close:")+"},"*":{type:"star",open:"(?:",close:")*"},"@":{type:"at",open:"(?:",close:")"}}},globChars(A){return A===!0?gre:GL}}});var Zl=p(cr=>{"use strict";var lre=require("path"),ure=process.platform==="win32",{REGEX_BACKSLASH:Cre,REGEX_REMOVE_BACKSLASH:hre,REGEX_SPECIAL_CHARS:fre,REGEX_SPECIAL_CHARS_GLOBAL:Ire}=Xl();cr.isObject=A=>A!==null&&typeof A=="object"&&!Array.isArray(A);cr.hasRegexChars=A=>fre.test(A);cr.isRegexChar=A=>A.length===1&&cr.hasRegexChars(A);cr.escapeRegex=A=>A.replace(Ire,"\\$1");cr.toPosixSlashes=A=>A.replace(Cre,"/");cr.removeBackslashes=A=>A.replace(hre,e=>e==="\\"?"":e);cr.supportsLookbehinds=()=>{let A=process.version.slice(1).split(".").map(Number);return A.length===3&&A[0]>=9||A[0]===8&&A[1]>=10};cr.isWindows=A=>A&&typeof A.windows=="boolean"?A.windows:ure===!0||lre.sep==="\\";cr.escapeLast=(A,e,t)=>{let r=A.lastIndexOf(e,t);return r===-1?A:A[r-1]==="\\"?cr.escapeLast(A,e,r-1):`${A.slice(0,r)}\\${A.slice(r)}`};cr.removePrefix=(A,e={})=>{let t=A;return t.startsWith("./")&&(t=t.slice(2),e.prefix="./"),t};cr.wrapOutput=(A,e={},t={})=>{let r=t.contains?"":"^",i=t.contains?"":"$",n=`${r}(?:${A})${i}`;return e.negated===!0&&(n=`(?:^(?!${n}).*$)`),n}});var XL=p((_be,VL)=>{"use strict";var _L=Zl(),{CHAR_ASTERISK:Dd,CHAR_AT:Ere,CHAR_BACKWARD_SLASH:$l,CHAR_COMMA:Bre,CHAR_DOT:Sd,CHAR_EXCLAMATION_MARK:Fd,CHAR_FORWARD_SLASH:zL,CHAR_LEFT_CURLY_BRACE:xd,CHAR_LEFT_PARENTHESES:Rd,CHAR_LEFT_SQUARE_BRACKET:pre,CHAR_PLUS:Qre,CHAR_QUESTION_MARK:HL,CHAR_RIGHT_CURLY_BRACE:dre,CHAR_RIGHT_PARENTHESES:JL,CHAR_RIGHT_SQUARE_BRACKET:yre}=Xl(),jL=A=>A===zL||A===$l,WL=A=>{A.isPrefix!==!0&&(A.depth=A.isGlobstar?1/0:1)},mre=(A,e)=>{let t=e||{},r=A.length-1,i=t.parts===!0||t.scanToEnd===!0,n=[],s=[],a=[],g=A,c=-1,l=0,C=0,f=!1,E=!1,m=!1,w=!1,D=!1,L=!1,K=!1,_=!1,le=!1,re=!1,J=0,X,ie,G={value:"",depth:0,isGlob:!1},ee=()=>c>=r,o=()=>g.charCodeAt(c+1),H=()=>(X=ie,g.charCodeAt(++c));for(;c0&&(j=g.slice(0,l),g=g.slice(l),C-=l),ne&&m===!0&&C>0?(ne=g.slice(0,C),M=g.slice(C)):m===!0?(ne="",M=g):ne=g,ne&&ne!==""&&ne!=="/"&&ne!==g&&jL(ne.charCodeAt(ne.length-1))&&(ne=ne.slice(0,-1)),t.unescape===!0&&(M&&(M=_L.removeBackslashes(M)),ne&&K===!0&&(ne=_L.removeBackslashes(ne)));let k={prefix:j,input:A,start:l,base:ne,glob:M,isBrace:f,isBracket:E,isGlob:m,isExtglob:w,isGlobstar:D,negated:_,negatedExtglob:le};if(t.tokens===!0&&(k.maxDepth=0,jL(ie)||s.push(G),k.tokens=s),t.parts===!0||t.tokens===!0){let te;for(let ae=0;ae{"use strict";var sf=Xl(),Rr=Zl(),{MAX_LENGTH:of,POSIX_REGEX_SOURCE:wre,REGEX_NON_SPECIAL_CHARS:Dre,REGEX_SPECIAL_CHARS_BACKREF:Sre,REPLACEMENTS:ZL}=sf,Fre=(A,e)=>{if(typeof e.expandRange=="function")return e.expandRange(...A,e);A.sort();let t=`[${A.join("-")}]`;try{new RegExp(t)}catch{return A.map(i=>Rr.escapeRegex(i)).join("..")}return t},Kg=(A,e)=>`Missing ${A}: "${e}" - use "\\\\${e}" to match literal characters`,bd=(A,e)=>{if(typeof A!="string")throw new TypeError("Expected a string");A=ZL[A]||A;let t={...e},r=typeof t.maxLength=="number"?Math.min(of,t.maxLength):of,i=A.length;if(i>r)throw new SyntaxError(`Input length: ${i}, exceeds maximum allowed length: ${r}`);let n={type:"bos",value:"",output:t.prepend||""},s=[n],a=t.capture?"":"?:",g=Rr.isWindows(e),c=sf.globChars(g),l=sf.extglobChars(c),{DOT_LITERAL:C,PLUS_LITERAL:f,SLASH_LITERAL:E,ONE_CHAR:m,DOTS_SLASH:w,NO_DOT:D,NO_DOT_SLASH:L,NO_DOTS_SLASH:K,QMARK:_,QMARK_NO_DOT:le,STAR:re,START_ANCHOR:J}=c,X=U=>`(${a}(?:(?!${J}${U.dot?w:C}).)*?)`,ie=t.dot?"":D,G=t.dot?_:le,ee=t.bash===!0?X(t):re;t.capture&&(ee=`(${ee})`),typeof t.noext=="boolean"&&(t.noextglob=t.noext);let o={input:A,index:-1,start:0,dot:t.dot===!0,consumed:"",output:"",prefix:"",backtrack:!1,negated:!1,brackets:0,braces:0,parens:0,quotes:0,globstar:!1,tokens:s};A=Rr.removePrefix(A,o),i=A.length;let H=[],ne=[],j=[],M=n,k,te=()=>o.index===i-1,ae=o.peek=(U=1)=>A[o.index+U],De=o.advance=()=>A[++o.index]||"",pe=()=>A.slice(o.index+1),me=(U="",oe=0)=>{o.consumed+=U,o.index+=oe},be=U=>{o.output+=U.output!=null?U.output:U.value,me(U.value)},Ye=()=>{let U=1;for(;ae()==="!"&&(ae(2)!=="("||ae(3)==="?");)De(),o.start++,U++;return U%2===0?!1:(o.negated=!0,o.start++,!0)},Ve=U=>{o[U]++,j.push(U)},iA=U=>{o[U]--,j.pop()},de=U=>{if(M.type==="globstar"){let oe=o.braces>0&&(U.type==="comma"||U.type==="brace"),V=U.extglob===!0||H.length&&(U.type==="pipe"||U.type==="paren");U.type!=="slash"&&U.type!=="paren"&&!oe&&!V&&(o.output=o.output.slice(0,-M.output.length),M.type="star",M.value="*",M.output=ee,o.output+=M.output)}if(H.length&&U.type!=="paren"&&(H[H.length-1].inner+=U.value),(U.value||U.output)&&be(U),M&&M.type==="text"&&U.type==="text"){M.value+=U.value,M.output=(M.output||"")+U.value;return}U.prev=M,s.push(U),M=U},mA=(U,oe)=>{let V={...l[oe],conditions:1,inner:""};V.prev=M,V.parens=o.parens,V.output=o.output;let Ge=(t.capture?"(":"")+V.open;Ve("parens"),de({type:U,value:oe,output:o.output?"":m}),de({type:"paren",extglob:!0,value:De(),output:Ge}),H.push(V)},Z=U=>{let oe=U.close+(t.capture?")":""),V;if(U.type==="negate"){let Ge=ee;if(U.inner&&U.inner.length>1&&U.inner.includes("/")&&(Ge=X(t)),(Ge!==ee||te()||/^\)+$/.test(pe()))&&(oe=U.close=`)$))${Ge}`),U.inner.includes("*")&&(V=pe())&&/^\.[^\\/.]+$/.test(V)){let EA=bd(V,{...e,fastpaths:!1}).output;oe=U.close=`)${EA})${Ge})`}U.prev.type==="bos"&&(o.negatedExtglob=!0)}de({type:"paren",extglob:!0,value:k,output:oe}),iA("parens")};if(t.fastpaths!==!1&&!/(^[*!]|[/()[\]{}"])/.test(A)){let U=!1,oe=A.replace(Sre,(V,Ge,EA,$A,wA,ue)=>$A==="\\"?(U=!0,V):$A==="?"?Ge?Ge+$A+(wA?_.repeat(wA.length):""):ue===0?G+(wA?_.repeat(wA.length):""):_.repeat(EA.length):$A==="."?C.repeat(EA.length):$A==="*"?Ge?Ge+$A+(wA?ee:""):ee:Ge?V:`\\${V}`);return U===!0&&(t.unescape===!0?oe=oe.replace(/\\/g,""):oe=oe.replace(/\\+/g,V=>V.length%2===0?"\\\\":V?"\\":"")),oe===A&&t.contains===!0?(o.output=A,o):(o.output=Rr.wrapOutput(oe,o,e),o)}for(;!te();){if(k=De(),k==="\0")continue;if(k==="\\"){let V=ae();if(V==="/"&&t.bash!==!0||V==="."||V===";")continue;if(!V){k+="\\",de({type:"text",value:k});continue}let Ge=/^\\+/.exec(pe()),EA=0;if(Ge&&Ge[0].length>2&&(EA=Ge[0].length,o.index+=EA,EA%2!==0&&(k+="\\")),t.unescape===!0?k=De():k+=De(),o.brackets===0){de({type:"text",value:k});continue}}if(o.brackets>0&&(k!=="]"||M.value==="["||M.value==="[^")){if(t.posix!==!1&&k===":"){let V=M.value.slice(1);if(V.includes("[")&&(M.posix=!0,V.includes(":"))){let Ge=M.value.lastIndexOf("["),EA=M.value.slice(0,Ge),$A=M.value.slice(Ge+2),wA=wre[$A];if(wA){M.value=EA+wA,o.backtrack=!0,De(),!n.output&&s.indexOf(M)===1&&(n.output=m);continue}}}(k==="["&&ae()!==":"||k==="-"&&ae()==="]")&&(k=`\\${k}`),k==="]"&&(M.value==="["||M.value==="[^")&&(k=`\\${k}`),t.posix===!0&&k==="!"&&M.value==="["&&(k="^"),M.value+=k,be({value:k});continue}if(o.quotes===1&&k!=='"'){k=Rr.escapeRegex(k),M.value+=k,be({value:k});continue}if(k==='"'){o.quotes=o.quotes===1?0:1,t.keepQuotes===!0&&de({type:"text",value:k});continue}if(k==="("){Ve("parens"),de({type:"paren",value:k});continue}if(k===")"){if(o.parens===0&&t.strictBrackets===!0)throw new SyntaxError(Kg("opening","("));let V=H[H.length-1];if(V&&o.parens===V.parens+1){Z(H.pop());continue}de({type:"paren",value:k,output:o.parens?")":"\\)"}),iA("parens");continue}if(k==="["){if(t.nobracket===!0||!pe().includes("]")){if(t.nobracket!==!0&&t.strictBrackets===!0)throw new SyntaxError(Kg("closing","]"));k=`\\${k}`}else Ve("brackets");de({type:"bracket",value:k});continue}if(k==="]"){if(t.nobracket===!0||M&&M.type==="bracket"&&M.value.length===1){de({type:"text",value:k,output:`\\${k}`});continue}if(o.brackets===0){if(t.strictBrackets===!0)throw new SyntaxError(Kg("opening","["));de({type:"text",value:k,output:`\\${k}`});continue}iA("brackets");let V=M.value.slice(1);if(M.posix!==!0&&V[0]==="^"&&!V.includes("/")&&(k=`/${k}`),M.value+=k,be({value:k}),t.literalBrackets===!1||Rr.hasRegexChars(V))continue;let Ge=Rr.escapeRegex(M.value);if(o.output=o.output.slice(0,-M.value.length),t.literalBrackets===!0){o.output+=Ge,M.value=Ge;continue}M.value=`(${a}${Ge}|${M.value})`,o.output+=M.value;continue}if(k==="{"&&t.nobrace!==!0){Ve("braces");let V={type:"brace",value:k,output:"(",outputIndex:o.output.length,tokensIndex:o.tokens.length};ne.push(V),de(V);continue}if(k==="}"){let V=ne[ne.length-1];if(t.nobrace===!0||!V){de({type:"text",value:k,output:k});continue}let Ge=")";if(V.dots===!0){let EA=s.slice(),$A=[];for(let wA=EA.length-1;wA>=0&&(s.pop(),EA[wA].type!=="brace");wA--)EA[wA].type!=="dots"&&$A.unshift(EA[wA].value);Ge=Fre($A,t),o.backtrack=!0}if(V.comma!==!0&&V.dots!==!0){let EA=o.output.slice(0,V.outputIndex),$A=o.tokens.slice(V.tokensIndex);V.value=V.output="\\{",k=Ge="\\}",o.output=EA;for(let wA of $A)o.output+=wA.output||wA.value}de({type:"brace",value:k,output:Ge}),iA("braces"),ne.pop();continue}if(k==="|"){H.length>0&&H[H.length-1].conditions++,de({type:"text",value:k});continue}if(k===","){let V=k,Ge=ne[ne.length-1];Ge&&j[j.length-1]==="braces"&&(Ge.comma=!0,V="|"),de({type:"comma",value:k,output:V});continue}if(k==="/"){if(M.type==="dot"&&o.index===o.start+1){o.start=o.index+1,o.consumed="",o.output="",s.pop(),M=n;continue}de({type:"slash",value:k,output:E});continue}if(k==="."){if(o.braces>0&&M.type==="dot"){M.value==="."&&(M.output=C);let V=ne[ne.length-1];M.type="dots",M.output+=k,M.value+=k,V.dots=!0;continue}if(o.braces+o.parens===0&&M.type!=="bos"&&M.type!=="slash"){de({type:"text",value:k,output:C});continue}de({type:"dot",value:k,output:C});continue}if(k==="?"){if(!(M&&M.value==="(")&&t.noextglob!==!0&&ae()==="("&&ae(2)!=="?"){mA("qmark",k);continue}if(M&&M.type==="paren"){let Ge=ae(),EA=k;if(Ge==="<"&&!Rr.supportsLookbehinds())throw new Error("Node.js v10 or higher is required for regex lookbehinds");(M.value==="("&&!/[!=<:]/.test(Ge)||Ge==="<"&&!/<([!=]|\w+>)/.test(pe()))&&(EA=`\\${k}`),de({type:"text",value:k,output:EA});continue}if(t.dot!==!0&&(M.type==="slash"||M.type==="bos")){de({type:"qmark",value:k,output:le});continue}de({type:"qmark",value:k,output:_});continue}if(k==="!"){if(t.noextglob!==!0&&ae()==="("&&(ae(2)!=="?"||!/[!=<:]/.test(ae(3)))){mA("negate",k);continue}if(t.nonegate!==!0&&o.index===0){Ye();continue}}if(k==="+"){if(t.noextglob!==!0&&ae()==="("&&ae(2)!=="?"){mA("plus",k);continue}if(M&&M.value==="("||t.regex===!1){de({type:"plus",value:k,output:f});continue}if(M&&(M.type==="bracket"||M.type==="paren"||M.type==="brace")||o.parens>0){de({type:"plus",value:k});continue}de({type:"plus",value:f});continue}if(k==="@"){if(t.noextglob!==!0&&ae()==="("&&ae(2)!=="?"){de({type:"at",extglob:!0,value:k,output:""});continue}de({type:"text",value:k});continue}if(k!=="*"){(k==="$"||k==="^")&&(k=`\\${k}`);let V=Dre.exec(pe());V&&(k+=V[0],o.index+=V[0].length),de({type:"text",value:k});continue}if(M&&(M.type==="globstar"||M.star===!0)){M.type="star",M.star=!0,M.value+=k,M.output=ee,o.backtrack=!0,o.globstar=!0,me(k);continue}let U=pe();if(t.noextglob!==!0&&/^\([^?]/.test(U)){mA("star",k);continue}if(M.type==="star"){if(t.noglobstar===!0){me(k);continue}let V=M.prev,Ge=V.prev,EA=V.type==="slash"||V.type==="bos",$A=Ge&&(Ge.type==="star"||Ge.type==="globstar");if(t.bash===!0&&(!EA||U[0]&&U[0]!=="/")){de({type:"star",value:k,output:""});continue}let wA=o.braces>0&&(V.type==="comma"||V.type==="brace"),ue=H.length&&(V.type==="pipe"||V.type==="paren");if(!EA&&V.type!=="paren"&&!wA&&!ue){de({type:"star",value:k,output:""});continue}for(;U.slice(0,3)==="/**";){let ye=A[o.index+4];if(ye&&ye!=="/")break;U=U.slice(3),me("/**",3)}if(V.type==="bos"&&te()){M.type="globstar",M.value+=k,M.output=X(t),o.output=M.output,o.globstar=!0,me(k);continue}if(V.type==="slash"&&V.prev.type!=="bos"&&!$A&&te()){o.output=o.output.slice(0,-(V.output+M.output).length),V.output=`(?:${V.output}`,M.type="globstar",M.output=X(t)+(t.strictSlashes?")":"|$)"),M.value+=k,o.globstar=!0,o.output+=V.output+M.output,me(k);continue}if(V.type==="slash"&&V.prev.type!=="bos"&&U[0]==="/"){let ye=U[1]!==void 0?"|$":"";o.output=o.output.slice(0,-(V.output+M.output).length),V.output=`(?:${V.output}`,M.type="globstar",M.output=`${X(t)}${E}|${E}${ye})`,M.value+=k,o.output+=V.output+M.output,o.globstar=!0,me(k+De()),de({type:"slash",value:"/",output:""});continue}if(V.type==="bos"&&U[0]==="/"){M.type="globstar",M.value+=k,M.output=`(?:^|${E}|${X(t)}${E})`,o.output=M.output,o.globstar=!0,me(k+De()),de({type:"slash",value:"/",output:""});continue}o.output=o.output.slice(0,-M.output.length),M.type="globstar",M.output=X(t),M.value+=k,o.output+=M.output,o.globstar=!0,me(k);continue}let oe={type:"star",value:k,output:ee};if(t.bash===!0){oe.output=".*?",(M.type==="bos"||M.type==="slash")&&(oe.output=ie+oe.output),de(oe);continue}if(M&&(M.type==="bracket"||M.type==="paren")&&t.regex===!0){oe.output=k,de(oe);continue}(o.index===o.start||M.type==="slash"||M.type==="dot")&&(M.type==="dot"?(o.output+=L,M.output+=L):t.dot===!0?(o.output+=K,M.output+=K):(o.output+=ie,M.output+=ie),ae()!=="*"&&(o.output+=m,M.output+=m)),de(oe)}for(;o.brackets>0;){if(t.strictBrackets===!0)throw new SyntaxError(Kg("closing","]"));o.output=Rr.escapeLast(o.output,"["),iA("brackets")}for(;o.parens>0;){if(t.strictBrackets===!0)throw new SyntaxError(Kg("closing",")"));o.output=Rr.escapeLast(o.output,"("),iA("parens")}for(;o.braces>0;){if(t.strictBrackets===!0)throw new SyntaxError(Kg("closing","}"));o.output=Rr.escapeLast(o.output,"{"),iA("braces")}if(t.strictSlashes!==!0&&(M.type==="star"||M.type==="bracket")&&de({type:"maybe_slash",value:"",output:`${E}?`}),o.backtrack===!0){o.output="";for(let U of o.tokens)o.output+=U.output!=null?U.output:U.value,U.suffix&&(o.output+=U.suffix)}return o};bd.fastpaths=(A,e)=>{let t={...e},r=typeof t.maxLength=="number"?Math.min(of,t.maxLength):of,i=A.length;if(i>r)throw new SyntaxError(`Input length: ${i}, exceeds maximum allowed length: ${r}`);A=ZL[A]||A;let n=Rr.isWindows(e),{DOT_LITERAL:s,SLASH_LITERAL:a,ONE_CHAR:g,DOTS_SLASH:c,NO_DOT:l,NO_DOTS:C,NO_DOTS_SLASH:f,STAR:E,START_ANCHOR:m}=sf.globChars(n),w=t.dot?C:l,D=t.dot?f:l,L=t.capture?"":"?:",K={negated:!1,prefix:""},_=t.bash===!0?".*?":E;t.capture&&(_=`(${_})`);let le=ie=>ie.noglobstar===!0?_:`(${L}(?:(?!${m}${ie.dot?c:s}).)*?)`,re=ie=>{switch(ie){case"*":return`${w}${g}${_}`;case".*":return`${s}${g}${_}`;case"*.*":return`${w}${_}${s}${g}${_}`;case"*/*":return`${w}${_}${a}${g}${D}${_}`;case"**":return w+le(t);case"**/*":return`(?:${w}${le(t)}${a})?${D}${g}${_}`;case"**/*.*":return`(?:${w}${le(t)}${a})?${D}${_}${s}${g}${_}`;case"**/.*":return`(?:${w}${le(t)}${a})?${s}${g}${_}`;default:{let G=/^(.*?)\.(\w+)$/.exec(ie);if(!G)return;let ee=re(G[1]);return ee?ee+s+G[2]:void 0}}},J=Rr.removePrefix(A,K),X=re(J);return X&&t.strictSlashes!==!0&&(X+=`${a}?`),X};$L.exports=bd});var tP=p((Jbe,AP)=>{"use strict";var xre=require("path"),Rre=XL(),kd=eP(),vd=Zl(),bre=Xl(),kre=A=>A&&typeof A=="object"&&!Array.isArray(A),st=(A,e,t=!1)=>{if(Array.isArray(A)){let l=A.map(f=>st(f,e,t));return f=>{for(let E of l){let m=E(f);if(m)return m}return!1}}let r=kre(A)&&A.tokens&&A.input;if(A===""||typeof A!="string"&&!r)throw new TypeError("Expected pattern to be a non-empty string");let i=e||{},n=vd.isWindows(e),s=r?st.compileRe(A,e):st.makeRe(A,e,!1,!0),a=s.state;delete s.state;let g=()=>!1;if(i.ignore){let l={...e,ignore:null,onMatch:null,onResult:null};g=st(i.ignore,l,t)}let c=(l,C=!1)=>{let{isMatch:f,match:E,output:m}=st.test(l,s,e,{glob:A,posix:n}),w={glob:A,state:a,regex:s,posix:n,input:l,output:m,match:E,isMatch:f};return typeof i.onResult=="function"&&i.onResult(w),f===!1?(w.isMatch=!1,C?w:!1):g(l)?(typeof i.onIgnore=="function"&&i.onIgnore(w),w.isMatch=!1,C?w:!1):(typeof i.onMatch=="function"&&i.onMatch(w),C?w:!0)};return t&&(c.state=a),c};st.test=(A,e,t,{glob:r,posix:i}={})=>{if(typeof A!="string")throw new TypeError("Expected input to be a string");if(A==="")return{isMatch:!1,output:""};let n=t||{},s=n.format||(i?vd.toPosixSlashes:null),a=A===r,g=a&&s?s(A):A;return a===!1&&(g=s?s(A):A,a=g===r),(a===!1||n.capture===!0)&&(n.matchBase===!0||n.basename===!0?a=st.matchBase(A,e,t,i):a=e.exec(g)),{isMatch:Boolean(a),match:a,output:g}};st.matchBase=(A,e,t,r=vd.isWindows(t))=>(e instanceof RegExp?e:st.makeRe(e,t)).test(xre.basename(A));st.isMatch=(A,e,t)=>st(e,t)(A);st.parse=(A,e)=>Array.isArray(A)?A.map(t=>st.parse(t,e)):kd(A,{...e,fastpaths:!1});st.scan=(A,e)=>Rre(A,e);st.compileRe=(A,e,t=!1,r=!1)=>{if(t===!0)return A.output;let i=e||{},n=i.contains?"":"^",s=i.contains?"":"$",a=`${n}(?:${A.output})${s}`;A&&A.negated===!0&&(a=`^(?!${a}).*$`);let g=st.toRegex(a,e);return r===!0&&(g.state=A),g};st.makeRe=(A,e={},t=!1,r=!1)=>{if(!A||typeof A!="string")throw new TypeError("Expected a non-empty string");let i={negated:!1,fastpaths:!0};return e.fastpaths!==!1&&(A[0]==="."||A[0]==="*")&&(i.output=kd.fastpaths(A,e)),i.output||(i=kd(A,e)),st.compileRe(i,e,t,r)};st.toRegex=(A,e)=>{try{let t=e||{};return new RegExp(A,t.flags||(t.nocase?"i":""))}catch(t){if(e&&e.debug===!0)throw t;return/$^/}};st.constants=bre;AP.exports=st});var iP=p((jbe,rP)=>{"use strict";rP.exports=tP()});var Ug=p((Wbe,aP)=>{"use strict";var sP=require("util"),oP=KL(),en=iP(),Nd=Zl(),nP=A=>A===""||A==="./",VA=(A,e,t)=>{e=[].concat(e),A=[].concat(A);let r=new Set,i=new Set,n=new Set,s=0,a=l=>{n.add(l.output),t&&t.onResult&&t.onResult(l)};for(let l=0;l!r.has(l));if(t&&c.length===0){if(t.failglob===!0)throw new Error(`No matches found for "${e.join(", ")}"`);if(t.nonull===!0||t.nullglob===!0)return t.unescape?e.map(l=>l.replace(/\\/g,"")):e}return c};VA.match=VA;VA.matcher=(A,e)=>en(A,e);VA.isMatch=(A,e,t)=>en(e,t)(A);VA.any=VA.isMatch;VA.not=(A,e,t={})=>{e=[].concat(e).map(String);let r=new Set,i=[],n=a=>{t.onResult&&t.onResult(a),i.push(a.output)},s=new Set(VA(A,e,{...t,onResult:n}));for(let a of i)s.has(a)||r.add(a);return[...r]};VA.contains=(A,e,t)=>{if(typeof A!="string")throw new TypeError(`Expected a string: "${sP.inspect(A)}"`);if(Array.isArray(e))return e.some(r=>VA.contains(A,r,t));if(typeof e=="string"){if(nP(A)||nP(e))return!1;if(A.includes(e)||A.startsWith("./")&&A.slice(2).includes(e))return!0}return VA.isMatch(A,e,{...t,contains:!0})};VA.matchKeys=(A,e,t)=>{if(!Nd.isObject(A))throw new TypeError("Expected the first argument to be an object");let r=VA(Object.keys(A),e,t),i={};for(let n of r)i[n]=A[n];return i};VA.some=(A,e,t)=>{let r=[].concat(A);for(let i of[].concat(e)){let n=en(String(i),t);if(r.some(s=>n(s)))return!0}return!1};VA.every=(A,e,t)=>{let r=[].concat(A);for(let i of[].concat(e)){let n=en(String(i),t);if(!r.every(s=>n(s)))return!1}return!0};VA.all=(A,e,t)=>{if(typeof A!="string")throw new TypeError(`Expected a string: "${sP.inspect(A)}"`);return[].concat(e).every(r=>en(r,t)(A))};VA.capture=(A,e,t)=>{let r=Nd.isWindows(t),n=en.makeRe(String(A),{...t,capture:!0}).exec(r?Nd.toPosixSlashes(e):e);if(n)return n.slice(1).map(s=>s===void 0?"":s)};VA.makeRe=(...A)=>en.makeRe(...A);VA.scan=(...A)=>en.scan(...A);VA.parse=(A,e)=>{let t=[];for(let r of[].concat(A||[]))for(let i of oP(String(r),e))t.push(en.parse(i,e));return t};VA.braces=(A,e)=>{if(typeof A!="string")throw new TypeError("Expected a string");return e&&e.nobrace===!0||!/\{.*\}/.test(A)?[A]:oP(A,e)};VA.braceExpand=(A,e)=>{if(typeof A!="string")throw new TypeError("Expected a string");return VA.braces(A,{...e,expand:!0})};aP.exports=VA});var cP=p((zbe,gP)=>{"use strict";gP.exports=({onlyFirst:A=!1}={})=>{let e=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))"].join("|");return new RegExp(e,A?void 0:"g")}});var uP=p((Vbe,lP)=>{"use strict";var vre=cP();lP.exports=A=>typeof A=="string"?A.replace(vre(),""):A});var hP=p((Xbe,CP)=>{function Nre(){this.__data__=[],this.size=0}CP.exports=Nre});var Tg=p((Zbe,fP)=>{function Mre(A,e){return A===e||A!==A&&e!==e}fP.exports=Mre});var eu=p(($be,IP)=>{var Lre=Tg();function Pre(A,e){for(var t=A.length;t--;)if(Lre(A[t][0],e))return t;return-1}IP.exports=Pre});var BP=p((eke,EP)=>{var Ore=eu(),Kre=Array.prototype,Ure=Kre.splice;function Tre(A){var e=this.__data__,t=Ore(e,A);if(t<0)return!1;var r=e.length-1;return t==r?e.pop():Ure.call(e,t,1),--this.size,!0}EP.exports=Tre});var QP=p((Ake,pP)=>{var qre=eu();function Gre(A){var e=this.__data__,t=qre(e,A);return t<0?void 0:e[t][1]}pP.exports=Gre});var yP=p((tke,dP)=>{var Yre=eu();function _re(A){return Yre(this.__data__,A)>-1}dP.exports=_re});var wP=p((rke,mP)=>{var Hre=eu();function Jre(A,e){var t=this.__data__,r=Hre(t,A);return r<0?(++this.size,t.push([A,e])):t[r][1]=e,this}mP.exports=Jre});var Au=p((ike,DP)=>{var jre=hP(),Wre=BP(),zre=QP(),Vre=yP(),Xre=wP();function qg(A){var e=-1,t=A==null?0:A.length;for(this.clear();++e{var Zre=Au();function $re(){this.__data__=new Zre,this.size=0}SP.exports=$re});var RP=p((ske,xP)=>{function eie(A){var e=this.__data__,t=e.delete(A);return this.size=e.size,t}xP.exports=eie});var kP=p((oke,bP)=>{function Aie(A){return this.__data__.get(A)}bP.exports=Aie});var NP=p((ake,vP)=>{function tie(A){return this.__data__.has(A)}vP.exports=tie});var Md=p((gke,MP)=>{var rie=typeof global=="object"&&global&&global.Object===Object&&global;MP.exports=rie});var $r=p((cke,LP)=>{var iie=Md(),nie=typeof self=="object"&&self&&self.Object===Object&&self,sie=iie||nie||Function("return this")();LP.exports=sie});var Gg=p((lke,PP)=>{var oie=$r(),aie=oie.Symbol;PP.exports=aie});var TP=p((uke,UP)=>{var OP=Gg(),KP=Object.prototype,gie=KP.hasOwnProperty,cie=KP.toString,tu=OP?OP.toStringTag:void 0;function lie(A){var e=gie.call(A,tu),t=A[tu];try{A[tu]=void 0;var r=!0}catch{}var i=cie.call(A);return r&&(e?A[tu]=t:delete A[tu]),i}UP.exports=lie});var GP=p((Cke,qP)=>{var uie=Object.prototype,Cie=uie.toString;function hie(A){return Cie.call(A)}qP.exports=hie});var ta=p((hke,HP)=>{var YP=Gg(),fie=TP(),Iie=GP(),Eie="[object Null]",Bie="[object Undefined]",_P=YP?YP.toStringTag:void 0;function pie(A){return A==null?A===void 0?Bie:Eie:_P&&_P in Object(A)?fie(A):Iie(A)}HP.exports=pie});var ei=p((fke,JP)=>{function Qie(A){var e=typeof A;return A!=null&&(e=="object"||e=="function")}JP.exports=Qie});var af=p((Ike,jP)=>{var die=ta(),yie=ei(),mie="[object AsyncFunction]",wie="[object Function]",Die="[object GeneratorFunction]",Sie="[object Proxy]";function Fie(A){if(!yie(A))return!1;var e=die(A);return e==wie||e==Die||e==mie||e==Sie}jP.exports=Fie});var zP=p((Eke,WP)=>{var xie=$r(),Rie=xie["__core-js_shared__"];WP.exports=Rie});var ZP=p((Bke,XP)=>{var Ld=zP(),VP=function(){var A=/[^.]+$/.exec(Ld&&Ld.keys&&Ld.keys.IE_PROTO||"");return A?"Symbol(src)_1."+A:""}();function bie(A){return!!VP&&VP in A}XP.exports=bie});var Pd=p((pke,$P)=>{var kie=Function.prototype,vie=kie.toString;function Nie(A){if(A!=null){try{return vie.call(A)}catch{}try{return A+""}catch{}}return""}$P.exports=Nie});var AO=p((Qke,eO)=>{var Mie=af(),Lie=ZP(),Pie=ei(),Oie=Pd(),Kie=/[\\^$.*+?()[\]{}|]/g,Uie=/^\[object .+?Constructor\]$/,Tie=Function.prototype,qie=Object.prototype,Gie=Tie.toString,Yie=qie.hasOwnProperty,_ie=RegExp("^"+Gie.call(Yie).replace(Kie,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function Hie(A){if(!Pie(A)||Lie(A))return!1;var e=Mie(A)?_ie:Uie;return e.test(Oie(A))}eO.exports=Hie});var rO=p((dke,tO)=>{function Jie(A,e){return A?.[e]}tO.exports=Jie});var bs=p((yke,iO)=>{var jie=AO(),Wie=rO();function zie(A,e){var t=Wie(A,e);return jie(t)?t:void 0}iO.exports=zie});var gf=p((mke,nO)=>{var Vie=bs(),Xie=$r(),Zie=Vie(Xie,"Map");nO.exports=Zie});var ru=p((wke,sO)=>{var $ie=bs(),ene=$ie(Object,"create");sO.exports=ene});var gO=p((Dke,aO)=>{var oO=ru();function Ane(){this.__data__=oO?oO(null):{},this.size=0}aO.exports=Ane});var lO=p((Ske,cO)=>{function tne(A){var e=this.has(A)&&delete this.__data__[A];return this.size-=e?1:0,e}cO.exports=tne});var CO=p((Fke,uO)=>{var rne=ru(),ine="__lodash_hash_undefined__",nne=Object.prototype,sne=nne.hasOwnProperty;function one(A){var e=this.__data__;if(rne){var t=e[A];return t===ine?void 0:t}return sne.call(e,A)?e[A]:void 0}uO.exports=one});var fO=p((xke,hO)=>{var ane=ru(),gne=Object.prototype,cne=gne.hasOwnProperty;function lne(A){var e=this.__data__;return ane?e[A]!==void 0:cne.call(e,A)}hO.exports=lne});var EO=p((Rke,IO)=>{var une=ru(),Cne="__lodash_hash_undefined__";function hne(A,e){var t=this.__data__;return this.size+=this.has(A)?0:1,t[A]=une&&e===void 0?Cne:e,this}IO.exports=hne});var pO=p((bke,BO)=>{var fne=gO(),Ine=lO(),Ene=CO(),Bne=fO(),pne=EO();function Yg(A){var e=-1,t=A==null?0:A.length;for(this.clear();++e{var QO=pO(),Qne=Au(),dne=gf();function yne(){this.size=0,this.__data__={hash:new QO,map:new(dne||Qne),string:new QO}}dO.exports=yne});var wO=p((vke,mO)=>{function mne(A){var e=typeof A;return e=="string"||e=="number"||e=="symbol"||e=="boolean"?A!=="__proto__":A===null}mO.exports=mne});var iu=p((Nke,DO)=>{var wne=wO();function Dne(A,e){var t=A.__data__;return wne(e)?t[typeof e=="string"?"string":"hash"]:t.map}DO.exports=Dne});var FO=p((Mke,SO)=>{var Sne=iu();function Fne(A){var e=Sne(this,A).delete(A);return this.size-=e?1:0,e}SO.exports=Fne});var RO=p((Lke,xO)=>{var xne=iu();function Rne(A){return xne(this,A).get(A)}xO.exports=Rne});var kO=p((Pke,bO)=>{var bne=iu();function kne(A){return bne(this,A).has(A)}bO.exports=kne});var NO=p((Oke,vO)=>{var vne=iu();function Nne(A,e){var t=vne(this,A),r=t.size;return t.set(A,e),this.size+=t.size==r?0:1,this}vO.exports=Nne});var cf=p((Kke,MO)=>{var Mne=yO(),Lne=FO(),Pne=RO(),One=kO(),Kne=NO();function _g(A){var e=-1,t=A==null?0:A.length;for(this.clear();++e{var Une=Au(),Tne=gf(),qne=cf(),Gne=200;function Yne(A,e){var t=this.__data__;if(t instanceof Une){var r=t.__data__;if(!Tne||r.length{var _ne=Au(),Hne=FP(),Jne=RP(),jne=kP(),Wne=NP(),zne=PO();function Hg(A){var e=this.__data__=new _ne(A);this.size=e.size}Hg.prototype.clear=Hne;Hg.prototype.delete=Jne;Hg.prototype.get=jne;Hg.prototype.has=Wne;Hg.prototype.set=zne;OO.exports=Hg});var UO=p((qke,KO)=>{var Vne="__lodash_hash_undefined__";function Xne(A){return this.__data__.set(A,Vne),this}KO.exports=Xne});var qO=p((Gke,TO)=>{function Zne(A){return this.__data__.has(A)}TO.exports=Zne});var YO=p((Yke,GO)=>{var $ne=cf(),ese=UO(),Ase=qO();function lf(A){var e=-1,t=A==null?0:A.length;for(this.__data__=new $ne;++e{function tse(A,e){for(var t=-1,r=A==null?0:A.length;++t{function rse(A,e){return A.has(e)}JO.exports=rse});var Kd=p((Jke,WO)=>{var ise=YO(),nse=HO(),sse=jO(),ose=1,ase=2;function gse(A,e,t,r,i,n){var s=t&ose,a=A.length,g=e.length;if(a!=g&&!(s&&g>a))return!1;var c=n.get(A),l=n.get(e);if(c&&l)return c==e&&l==A;var C=-1,f=!0,E=t&ase?new ise:void 0;for(n.set(A,e),n.set(e,A);++C{var cse=$r(),lse=cse.Uint8Array;zO.exports=lse});var XO=p((Wke,VO)=>{function use(A){var e=-1,t=Array(A.size);return A.forEach(function(r,i){t[++e]=[i,r]}),t}VO.exports=use});var $O=p((zke,ZO)=>{function Cse(A){var e=-1,t=Array(A.size);return A.forEach(function(r){t[++e]=r}),t}ZO.exports=Cse});var iK=p((Vke,rK)=>{var eK=Gg(),AK=Ud(),hse=Tg(),fse=Kd(),Ise=XO(),Ese=$O(),Bse=1,pse=2,Qse="[object Boolean]",dse="[object Date]",yse="[object Error]",mse="[object Map]",wse="[object Number]",Dse="[object RegExp]",Sse="[object Set]",Fse="[object String]",xse="[object Symbol]",Rse="[object ArrayBuffer]",bse="[object DataView]",tK=eK?eK.prototype:void 0,Td=tK?tK.valueOf:void 0;function kse(A,e,t,r,i,n,s){switch(t){case bse:if(A.byteLength!=e.byteLength||A.byteOffset!=e.byteOffset)return!1;A=A.buffer,e=e.buffer;case Rse:return!(A.byteLength!=e.byteLength||!n(new AK(A),new AK(e)));case Qse:case dse:case wse:return hse(+A,+e);case yse:return A.name==e.name&&A.message==e.message;case Dse:case Fse:return A==e+"";case mse:var a=Ise;case Sse:var g=r&Bse;if(a||(a=Ese),A.size!=e.size&&!g)return!1;var c=s.get(A);if(c)return c==e;r|=pse,s.set(A,e);var l=fse(a(A),a(e),r,i,n,s);return s.delete(A),l;case xse:if(Td)return Td.call(A)==Td.call(e)}return!1}rK.exports=kse});var qd=p((Xke,nK)=>{function vse(A,e){for(var t=-1,r=e.length,i=A.length;++t{var Nse=Array.isArray;sK.exports=Nse});var aK=p(($ke,oK)=>{var Mse=qd(),Lse=An();function Pse(A,e,t){var r=e(A);return Lse(A)?r:Mse(r,t(A))}oK.exports=Pse});var cK=p((eve,gK)=>{function Ose(A,e){for(var t=-1,r=A==null?0:A.length,i=0,n=[];++t{function Kse(){return[]}lK.exports=Kse});var fK=p((tve,hK)=>{var Use=cK(),Tse=uK(),qse=Object.prototype,Gse=qse.propertyIsEnumerable,CK=Object.getOwnPropertySymbols,Yse=CK?function(A){return A==null?[]:(A=Object(A),Use(CK(A),function(e){return Gse.call(A,e)}))}:Tse;hK.exports=Yse});var EK=p((rve,IK)=>{function _se(A,e){for(var t=-1,r=Array(A);++t{function Hse(A){return A!=null&&typeof A=="object"}BK.exports=Hse});var QK=p((nve,pK)=>{var Jse=ta(),jse=ks(),Wse="[object Arguments]";function zse(A){return jse(A)&&Jse(A)==Wse}pK.exports=zse});var nu=p((sve,mK)=>{var dK=QK(),Vse=ks(),yK=Object.prototype,Xse=yK.hasOwnProperty,Zse=yK.propertyIsEnumerable,$se=dK(function(){return arguments}())?dK:function(A){return Vse(A)&&Xse.call(A,"callee")&&!Zse.call(A,"callee")};mK.exports=$se});var DK=p((ove,wK)=>{function eoe(){return!1}wK.exports=eoe});var uf=p((su,Jg)=>{var Aoe=$r(),toe=DK(),xK=typeof su=="object"&&su&&!su.nodeType&&su,SK=xK&&typeof Jg=="object"&&Jg&&!Jg.nodeType&&Jg,roe=SK&&SK.exports===xK,FK=roe?Aoe.Buffer:void 0,ioe=FK?FK.isBuffer:void 0,noe=ioe||toe;Jg.exports=noe});var ou=p((ave,RK)=>{var soe=9007199254740991,ooe=/^(?:0|[1-9]\d*)$/;function aoe(A,e){var t=typeof A;return e=e??soe,!!e&&(t=="number"||t!="symbol"&&ooe.test(A))&&A>-1&&A%1==0&&A{var goe=9007199254740991;function coe(A){return typeof A=="number"&&A>-1&&A%1==0&&A<=goe}bK.exports=coe});var vK=p((cve,kK)=>{var loe=ta(),uoe=Cf(),Coe=ks(),hoe="[object Arguments]",foe="[object Array]",Ioe="[object Boolean]",Eoe="[object Date]",Boe="[object Error]",poe="[object Function]",Qoe="[object Map]",doe="[object Number]",yoe="[object Object]",moe="[object RegExp]",woe="[object Set]",Doe="[object String]",Soe="[object WeakMap]",Foe="[object ArrayBuffer]",xoe="[object DataView]",Roe="[object Float32Array]",boe="[object Float64Array]",koe="[object Int8Array]",voe="[object Int16Array]",Noe="[object Int32Array]",Moe="[object Uint8Array]",Loe="[object Uint8ClampedArray]",Poe="[object Uint16Array]",Ooe="[object Uint32Array]",jA={};jA[Roe]=jA[boe]=jA[koe]=jA[voe]=jA[Noe]=jA[Moe]=jA[Loe]=jA[Poe]=jA[Ooe]=!0;jA[hoe]=jA[foe]=jA[Foe]=jA[Ioe]=jA[xoe]=jA[Eoe]=jA[Boe]=jA[poe]=jA[Qoe]=jA[doe]=jA[yoe]=jA[moe]=jA[woe]=jA[Doe]=jA[Soe]=!1;function Koe(A){return Coe(A)&&uoe(A.length)&&!!jA[loe(A)]}kK.exports=Koe});var MK=p((lve,NK)=>{function Uoe(A){return function(e){return A(e)}}NK.exports=Uoe});var PK=p((au,jg)=>{var Toe=Md(),LK=typeof au=="object"&&au&&!au.nodeType&&au,gu=LK&&typeof jg=="object"&&jg&&!jg.nodeType&&jg,qoe=gu&&gu.exports===LK,Gd=qoe&&Toe.process,Goe=function(){try{var A=gu&&gu.require&&gu.require("util").types;return A||Gd&&Gd.binding&&Gd.binding("util")}catch{}}();jg.exports=Goe});var hf=p((uve,UK)=>{var Yoe=vK(),_oe=MK(),OK=PK(),KK=OK&&OK.isTypedArray,Hoe=KK?_oe(KK):Yoe;UK.exports=Hoe});var Yd=p((Cve,TK)=>{var Joe=EK(),joe=nu(),Woe=An(),zoe=uf(),Voe=ou(),Xoe=hf(),Zoe=Object.prototype,$oe=Zoe.hasOwnProperty;function eae(A,e){var t=Woe(A),r=!t&&joe(A),i=!t&&!r&&zoe(A),n=!t&&!r&&!i&&Xoe(A),s=t||r||i||n,a=s?Joe(A.length,String):[],g=a.length;for(var c in A)(e||$oe.call(A,c))&&!(s&&(c=="length"||i&&(c=="offset"||c=="parent")||n&&(c=="buffer"||c=="byteLength"||c=="byteOffset")||Voe(c,g)))&&a.push(c);return a}TK.exports=eae});var ff=p((hve,qK)=>{var Aae=Object.prototype;function tae(A){var e=A&&A.constructor,t=typeof e=="function"&&e.prototype||Aae;return A===t}qK.exports=tae});var _d=p((fve,GK)=>{function rae(A,e){return function(t){return A(e(t))}}GK.exports=rae});var _K=p((Ive,YK)=>{var iae=_d(),nae=iae(Object.keys,Object);YK.exports=nae});var JK=p((Eve,HK)=>{var sae=ff(),oae=_K(),aae=Object.prototype,gae=aae.hasOwnProperty;function cae(A){if(!sae(A))return oae(A);var e=[];for(var t in Object(A))gae.call(A,t)&&t!="constructor"&&e.push(t);return e}HK.exports=cae});var cu=p((Bve,jK)=>{var lae=af(),uae=Cf();function Cae(A){return A!=null&&uae(A.length)&&!lae(A)}jK.exports=Cae});var zK=p((pve,WK)=>{var hae=Yd(),fae=JK(),Iae=cu();function Eae(A){return Iae(A)?hae(A):fae(A)}WK.exports=Eae});var XK=p((Qve,VK)=>{var Bae=aK(),pae=fK(),Qae=zK();function dae(A){return Bae(A,Qae,pae)}VK.exports=dae});var eU=p((dve,$K)=>{var ZK=XK(),yae=1,mae=Object.prototype,wae=mae.hasOwnProperty;function Dae(A,e,t,r,i,n){var s=t&yae,a=ZK(A),g=a.length,c=ZK(e),l=c.length;if(g!=l&&!s)return!1;for(var C=g;C--;){var f=a[C];if(!(s?f in e:wae.call(e,f)))return!1}var E=n.get(A),m=n.get(e);if(E&&m)return E==e&&m==A;var w=!0;n.set(A,e),n.set(e,A);for(var D=s;++C{var Sae=bs(),Fae=$r(),xae=Sae(Fae,"DataView");AU.exports=xae});var iU=p((mve,rU)=>{var Rae=bs(),bae=$r(),kae=Rae(bae,"Promise");rU.exports=kae});var sU=p((wve,nU)=>{var vae=bs(),Nae=$r(),Mae=vae(Nae,"Set");nU.exports=Mae});var aU=p((Dve,oU)=>{var Lae=bs(),Pae=$r(),Oae=Lae(Pae,"WeakMap");oU.exports=Oae});var IU=p((Sve,fU)=>{var Hd=tU(),Jd=gf(),jd=iU(),Wd=sU(),zd=aU(),hU=ta(),Wg=Pd(),gU="[object Map]",Kae="[object Object]",cU="[object Promise]",lU="[object Set]",uU="[object WeakMap]",CU="[object DataView]",Uae=Wg(Hd),Tae=Wg(Jd),qae=Wg(jd),Gae=Wg(Wd),Yae=Wg(zd),ra=hU;(Hd&&ra(new Hd(new ArrayBuffer(1)))!=CU||Jd&&ra(new Jd)!=gU||jd&&ra(jd.resolve())!=cU||Wd&&ra(new Wd)!=lU||zd&&ra(new zd)!=uU)&&(ra=function(A){var e=hU(A),t=e==Kae?A.constructor:void 0,r=t?Wg(t):"";if(r)switch(r){case Uae:return CU;case Tae:return gU;case qae:return cU;case Gae:return lU;case Yae:return uU}return e});fU.exports=ra});var wU=p((Fve,mU)=>{var Vd=Od(),_ae=Kd(),Hae=iK(),Jae=eU(),EU=IU(),BU=An(),pU=uf(),jae=hf(),Wae=1,QU="[object Arguments]",dU="[object Array]",If="[object Object]",zae=Object.prototype,yU=zae.hasOwnProperty;function Vae(A,e,t,r,i,n){var s=BU(A),a=BU(e),g=s?dU:EU(A),c=a?dU:EU(e);g=g==QU?If:g,c=c==QU?If:c;var l=g==If,C=c==If,f=g==c;if(f&&pU(A)){if(!pU(e))return!1;s=!0,l=!1}if(f&&!l)return n||(n=new Vd),s||jae(A)?_ae(A,e,t,r,i,n):Hae(A,e,g,t,r,i,n);if(!(t&Wae)){var E=l&&yU.call(A,"__wrapped__"),m=C&&yU.call(e,"__wrapped__");if(E||m){var w=E?A.value():A,D=m?e.value():e;return n||(n=new Vd),i(w,D,t,r,n)}}return f?(n||(n=new Vd),Jae(A,e,t,r,i,n)):!1}mU.exports=Vae});var xU=p((xve,FU)=>{var Xae=wU(),DU=ks();function SU(A,e,t,r,i){return A===e?!0:A==null||e==null||!DU(A)&&!DU(e)?A!==A&&e!==e:Xae(A,e,t,r,SU,i)}FU.exports=SU});var bU=p((Rve,RU)=>{var Zae=xU();function $ae(A,e){return Zae(A,e)}RU.exports=$ae});var Xd=p((bve,kU)=>{var ege=bs(),Age=function(){try{var A=ege(Object,"defineProperty");return A({},"",{}),A}catch{}}();kU.exports=Age});var Ef=p((kve,NU)=>{var vU=Xd();function tge(A,e,t){e=="__proto__"&&vU?vU(A,e,{configurable:!0,enumerable:!0,value:t,writable:!0}):A[e]=t}NU.exports=tge});var Zd=p((vve,MU)=>{var rge=Ef(),ige=Tg();function nge(A,e,t){(t!==void 0&&!ige(A[e],t)||t===void 0&&!(e in A))&&rge(A,e,t)}MU.exports=nge});var PU=p((Nve,LU)=>{function sge(A){return function(e,t,r){for(var i=-1,n=Object(e),s=r(e),a=s.length;a--;){var g=s[A?a:++i];if(t(n[g],g,n)===!1)break}return e}}LU.exports=sge});var KU=p((Mve,OU)=>{var oge=PU(),age=oge();OU.exports=age});var YU=p((lu,zg)=>{var gge=$r(),GU=typeof lu=="object"&&lu&&!lu.nodeType&&lu,UU=GU&&typeof zg=="object"&&zg&&!zg.nodeType&&zg,cge=UU&&UU.exports===GU,TU=cge?gge.Buffer:void 0,qU=TU?TU.allocUnsafe:void 0;function lge(A,e){if(e)return A.slice();var t=A.length,r=qU?qU(t):new A.constructor(t);return A.copy(r),r}zg.exports=lge});var JU=p((Lve,HU)=>{var _U=Ud();function uge(A){var e=new A.constructor(A.byteLength);return new _U(e).set(new _U(A)),e}HU.exports=uge});var WU=p((Pve,jU)=>{var Cge=JU();function hge(A,e){var t=e?Cge(A.buffer):A.buffer;return new A.constructor(t,A.byteOffset,A.length)}jU.exports=hge});var VU=p((Ove,zU)=>{function fge(A,e){var t=-1,r=A.length;for(e||(e=Array(r));++t{var Ige=ei(),XU=Object.create,Ege=function(){function A(){}return function(e){if(!Ige(e))return{};if(XU)return XU(e);A.prototype=e;var t=new A;return A.prototype=void 0,t}}();ZU.exports=Ege});var $d=p((Uve,e2)=>{var Bge=_d(),pge=Bge(Object.getPrototypeOf,Object);e2.exports=pge});var t2=p((Tve,A2)=>{var Qge=$U(),dge=$d(),yge=ff();function mge(A){return typeof A.constructor=="function"&&!yge(A)?Qge(dge(A)):{}}A2.exports=mge});var i2=p((qve,r2)=>{var wge=cu(),Dge=ks();function Sge(A){return Dge(A)&&wge(A)}r2.exports=Sge});var o2=p((Gve,s2)=>{var Fge=ta(),xge=$d(),Rge=ks(),bge="[object Object]",kge=Function.prototype,vge=Object.prototype,n2=kge.toString,Nge=vge.hasOwnProperty,Mge=n2.call(Object);function Lge(A){if(!Rge(A)||Fge(A)!=bge)return!1;var e=xge(A);if(e===null)return!0;var t=Nge.call(e,"constructor")&&e.constructor;return typeof t=="function"&&t instanceof t&&n2.call(t)==Mge}s2.exports=Lge});var ey=p((Yve,a2)=>{function Pge(A,e){if(!(e==="constructor"&&typeof A[e]=="function")&&e!="__proto__")return A[e]}a2.exports=Pge});var Ay=p((_ve,g2)=>{var Oge=Ef(),Kge=Tg(),Uge=Object.prototype,Tge=Uge.hasOwnProperty;function qge(A,e,t){var r=A[e];(!(Tge.call(A,e)&&Kge(r,t))||t===void 0&&!(e in A))&&Oge(A,e,t)}g2.exports=qge});var l2=p((Hve,c2)=>{var Gge=Ay(),Yge=Ef();function _ge(A,e,t,r){var i=!t;t||(t={});for(var n=-1,s=e.length;++n{function Hge(A){var e=[];if(A!=null)for(var t in Object(A))e.push(t);return e}u2.exports=Hge});var f2=p((jve,h2)=>{var Jge=ei(),jge=ff(),Wge=C2(),zge=Object.prototype,Vge=zge.hasOwnProperty;function Xge(A){if(!Jge(A))return Wge(A);var e=jge(A),t=[];for(var r in A)r=="constructor"&&(e||!Vge.call(A,r))||t.push(r);return t}h2.exports=Xge});var ty=p((Wve,I2)=>{var Zge=Yd(),$ge=f2(),ece=cu();function Ace(A){return ece(A)?Zge(A,!0):$ge(A)}I2.exports=Ace});var B2=p((zve,E2)=>{var tce=l2(),rce=ty();function ice(A){return tce(A,rce(A))}E2.exports=ice});var w2=p((Vve,m2)=>{var p2=Zd(),nce=YU(),sce=WU(),oce=VU(),ace=t2(),Q2=nu(),d2=An(),gce=i2(),cce=uf(),lce=af(),uce=ei(),Cce=o2(),hce=hf(),y2=ey(),fce=B2();function Ice(A,e,t,r,i,n,s){var a=y2(A,t),g=y2(e,t),c=s.get(g);if(c){p2(A,t,c);return}var l=n?n(a,g,t+"",A,e,s):void 0,C=l===void 0;if(C){var f=d2(g),E=!f&&cce(g),m=!f&&!E&&hce(g);l=g,f||E||m?d2(a)?l=a:gce(a)?l=oce(a):E?(C=!1,l=nce(g,!0)):m?(C=!1,l=sce(g,!0)):l=[]:Cce(g)||Q2(g)?(l=a,Q2(a)?l=fce(a):(!uce(a)||lce(a))&&(l=ace(g))):C=!1}C&&(s.set(g,l),i(l,g,r,n,s),s.delete(g)),p2(A,t,l)}m2.exports=Ice});var F2=p((Xve,S2)=>{var Ece=Od(),Bce=Zd(),pce=KU(),Qce=w2(),dce=ei(),yce=ty(),mce=ey();function D2(A,e,t,r,i){A!==e&&pce(e,function(n,s){if(i||(i=new Ece),dce(n))Qce(A,e,s,t,D2,r,i);else{var a=r?r(mce(A,s),n,s+"",A,e,i):void 0;a===void 0&&(a=n),Bce(A,s,a)}},yce)}S2.exports=D2});var ry=p((Zve,x2)=>{function wce(A){return A}x2.exports=wce});var b2=p(($ve,R2)=>{function Dce(A,e,t){switch(t.length){case 0:return A.call(e);case 1:return A.call(e,t[0]);case 2:return A.call(e,t[0],t[1]);case 3:return A.call(e,t[0],t[1],t[2])}return A.apply(e,t)}R2.exports=Dce});var iy=p((eNe,v2)=>{var Sce=b2(),k2=Math.max;function Fce(A,e,t){return e=k2(e===void 0?A.length-1:e,0),function(){for(var r=arguments,i=-1,n=k2(r.length-e,0),s=Array(n);++i{function xce(A){return function(){return A}}N2.exports=xce});var O2=p((tNe,P2)=>{var Rce=M2(),L2=Xd(),bce=ry(),kce=L2?function(A,e){return L2(A,"toString",{configurable:!0,enumerable:!1,value:Rce(e),writable:!0})}:bce;P2.exports=kce});var U2=p((rNe,K2)=>{var vce=800,Nce=16,Mce=Date.now;function Lce(A){var e=0,t=0;return function(){var r=Mce(),i=Nce-(r-t);if(t=r,i>0){if(++e>=vce)return arguments[0]}else e=0;return A.apply(void 0,arguments)}}K2.exports=Lce});var ny=p((iNe,T2)=>{var Pce=O2(),Oce=U2(),Kce=Oce(Pce);T2.exports=Kce});var G2=p((nNe,q2)=>{var Uce=ry(),Tce=iy(),qce=ny();function Gce(A,e){return qce(Tce(A,e,Uce),A+"")}q2.exports=Gce});var _2=p((sNe,Y2)=>{var Yce=Tg(),_ce=cu(),Hce=ou(),Jce=ei();function jce(A,e,t){if(!Jce(t))return!1;var r=typeof e;return(r=="number"?_ce(t)&&Hce(e,t.length):r=="string"&&e in t)?Yce(t[e],A):!1}Y2.exports=jce});var J2=p((oNe,H2)=>{var Wce=G2(),zce=_2();function Vce(A){return Wce(function(e,t){var r=-1,i=t.length,n=i>1?t[i-1]:void 0,s=i>2?t[2]:void 0;for(n=A.length>3&&typeof n=="function"?(i--,n):void 0,s&&zce(t[0],t[1],s)&&(n=i<3?void 0:n,i=1),e=Object(e);++r{var Xce=F2(),Zce=J2(),$ce=Zce(function(A,e,t,r){Xce(A,e,t,r)});j2.exports=$ce});var br=p((exports,module)=>{"use strict";Object.defineProperty(exports,"__esModule",{value:!0});exports.toMerged=exports.mergeIntoTarget=exports.isPathLike=exports.tryParseOptionalBoolean=exports.parseOptionalBoolean=exports.parseBoolean=exports.replaceEnvVariables=exports.buildIgnorePattern=exports.sortMap=exports.dynamicRequire=exports.CachingStrategy=exports.DefaultStream=exports.AsyncActions=exports.makeDeferred=exports.BufferStream=exports.bufferStream=exports.prettifySyncErrors=exports.prettifyAsyncErrors=exports.releaseAfterUseAsync=exports.getMapWithDefault=exports.getSetWithDefault=exports.getArrayWithDefault=exports.getFactoryWithDefault=exports.convertMapsToIndexableObjects=exports.allSettledSafe=exports.isIndexableObject=exports.mapAndFind=exports.mapAndFilter=exports.validateEnum=exports.assertNever=exports.overrideType=exports.escapeRegExp=exports.isTaggedYarnVersion=void 0;var tslib_1=nA(),fslib_1=BA(),clipanion_1=Fg(),isEqual_1=tslib_1.__importDefault(bU()),mergeWith_1=tslib_1.__importDefault(W2()),micromatch_1=tslib_1.__importDefault(Ug()),p_limit_1=tslib_1.__importDefault(xg()),semver_1=tslib_1.__importDefault(Zo()),stream_1=require("stream");function isTaggedYarnVersion(A){return!!(semver_1.default.valid(A)&&A.match(/^[^-]+(-rc\.[0-9]+)?$/))}exports.isTaggedYarnVersion=isTaggedYarnVersion;function escapeRegExp(A){return A.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}exports.escapeRegExp=escapeRegExp;function overrideType(A){}exports.overrideType=overrideType;function assertNever(A){throw new Error(`Assertion failed: Unexpected object '${A}'`)}exports.assertNever=assertNever;function validateEnum(A,e){let t=Object.values(A);if(!t.includes(e))throw new clipanion_1.UsageError(`Invalid value for enumeration: ${JSON.stringify(e)} (expected one of ${t.map(r=>JSON.stringify(r)).join(", ")})`);return e}exports.validateEnum=validateEnum;function mapAndFilter(A,e){let t=[];for(let r of A){let i=e(r);i!==mapAndFilterSkip&&t.push(i)}return t}exports.mapAndFilter=mapAndFilter;var mapAndFilterSkip=Symbol();mapAndFilter.skip=mapAndFilterSkip;function mapAndFind(A,e){for(let t of A){let r=e(t);if(r!==mapAndFindSkip)return r}}exports.mapAndFind=mapAndFind;var mapAndFindSkip=Symbol();mapAndFind.skip=mapAndFindSkip;function isIndexableObject(A){return typeof A=="object"&&A!==null}exports.isIndexableObject=isIndexableObject;async function allSettledSafe(A){let e=await Promise.allSettled(A),t=[];for(let r of e){if(r.status==="rejected")throw r.reason;t.push(r.value)}return t}exports.allSettledSafe=allSettledSafe;function convertMapsToIndexableObjects(A){if(A instanceof Map&&(A=Object.fromEntries(A)),isIndexableObject(A))for(let e of Object.keys(A)){let t=A[e];isIndexableObject(t)&&(A[e]=convertMapsToIndexableObjects(t))}return A}exports.convertMapsToIndexableObjects=convertMapsToIndexableObjects;function getFactoryWithDefault(A,e,t){let r=A.get(e);return typeof r>"u"&&A.set(e,r=t()),r}exports.getFactoryWithDefault=getFactoryWithDefault;function getArrayWithDefault(A,e){let t=A.get(e);return typeof t>"u"&&A.set(e,t=[]),t}exports.getArrayWithDefault=getArrayWithDefault;function getSetWithDefault(A,e){let t=A.get(e);return typeof t>"u"&&A.set(e,t=new Set),t}exports.getSetWithDefault=getSetWithDefault;function getMapWithDefault(A,e){let t=A.get(e);return typeof t>"u"&&A.set(e,t=new Map),t}exports.getMapWithDefault=getMapWithDefault;async function releaseAfterUseAsync(A,e){if(e==null)return await A();try{return await A()}finally{await e()}}exports.releaseAfterUseAsync=releaseAfterUseAsync;async function prettifyAsyncErrors(A,e){try{return await A()}catch(t){throw t.message=e(t.message),t}}exports.prettifyAsyncErrors=prettifyAsyncErrors;function prettifySyncErrors(A,e){try{return A()}catch(t){throw t.message=e(t.message),t}}exports.prettifySyncErrors=prettifySyncErrors;async function bufferStream(A){return await new Promise((e,t)=>{let r=[];A.on("error",i=>{t(i)}),A.on("data",i=>{r.push(i)}),A.on("end",()=>{e(Buffer.concat(r))})})}exports.bufferStream=bufferStream;var BufferStream=class extends stream_1.Transform{constructor(){super(...arguments),this.chunks=[]}_transform(e,t,r){if(t!=="buffer"||!Buffer.isBuffer(e))throw new Error("Assertion failed: BufferStream only accept buffers");this.chunks.push(e),r(null,null)}_flush(e){e(null,Buffer.concat(this.chunks))}};exports.BufferStream=BufferStream;function makeDeferred(){let A,e;return{promise:new Promise((r,i)=>{A=r,e=i}),resolve:A,reject:e}}exports.makeDeferred=makeDeferred;var AsyncActions=class{constructor(e){this.deferred=new Map,this.promises=new Map,this.limit=(0,p_limit_1.default)(e)}set(e,t){let r=this.deferred.get(e);typeof r>"u"&&this.deferred.set(e,r=makeDeferred());let i=this.limit(()=>t());return this.promises.set(e,i),i.then(()=>{this.promises.get(e)===i&&r.resolve()},n=>{this.promises.get(e)===i&&r.reject(n)}),r.promise}reduce(e,t){var r;let i=(r=this.promises.get(e))!==null&&r!==void 0?r:Promise.resolve();this.set(e,()=>t(i))}async wait(){await Promise.all(this.promises.values())}};exports.AsyncActions=AsyncActions;var DefaultStream=class extends stream_1.Transform{constructor(e=Buffer.alloc(0)){super(),this.active=!0,this.ifEmpty=e}_transform(e,t,r){if(t!=="buffer"||!Buffer.isBuffer(e))throw new Error("Assertion failed: DefaultStream only accept buffers");this.active=!1,r(null,e)}_flush(e){this.active&&this.ifEmpty.length>0?e(null,this.ifEmpty):e(null)}};exports.DefaultStream=DefaultStream;var realRequire=eval("require");function dynamicRequireNode(A){return realRequire(fslib_1.npath.fromPortablePath(A))}function dynamicRequireNoCache(path){let physicalPath=fslib_1.npath.fromPortablePath(path),currentCacheEntry=realRequire.cache[physicalPath];delete realRequire.cache[physicalPath];let result;try{result=dynamicRequireNode(physicalPath);let freshCacheEntry=realRequire.cache[physicalPath],dynamicModule=eval("module"),freshCacheIndex=dynamicModule.children.indexOf(freshCacheEntry);freshCacheIndex!==-1&&dynamicModule.children.splice(freshCacheIndex,1)}finally{realRequire.cache[physicalPath]=currentCacheEntry}return result}var dynamicRequireFsTimeCache=new Map;function dynamicRequireFsTime(A){let e=dynamicRequireFsTimeCache.get(A),t=fslib_1.xfs.statSync(A);if(e?.mtime===t.mtimeMs)return e.instance;let r=dynamicRequireNoCache(A);return dynamicRequireFsTimeCache.set(A,{mtime:t.mtimeMs,instance:r}),r}var CachingStrategy;(function(A){A[A.NoCache=0]="NoCache",A[A.FsTime=1]="FsTime",A[A.Node=2]="Node"})(CachingStrategy=exports.CachingStrategy||(exports.CachingStrategy={}));function dynamicRequire(A,{cachingStrategy:e=CachingStrategy.Node}={}){switch(e){case CachingStrategy.NoCache:return dynamicRequireNoCache(A);case CachingStrategy.FsTime:return dynamicRequireFsTime(A);case CachingStrategy.Node:return dynamicRequireNode(A);default:throw new Error("Unsupported caching strategy")}}exports.dynamicRequire=dynamicRequire;function sortMap(A,e){let t=Array.from(A);Array.isArray(e)||(e=[e]);let r=[];for(let n of e)r.push(t.map(s=>n(s)));let i=t.map((n,s)=>s);return i.sort((n,s)=>{for(let a of r){let g=a[n]a[s]?1:0;if(g!==0)return g}return 0}),i.map(n=>t[n])}exports.sortMap=sortMap;function buildIgnorePattern(A){return A.length===0?null:A.map(e=>`(${micromatch_1.default.makeRe(e,{windows:!1,dot:!0}).source})`).join("|")}exports.buildIgnorePattern=buildIgnorePattern;function replaceEnvVariables(A,{env:e}){let t=/\${(?[\d\w_]+)(?:)?(?:-(?[^}]*))?}/g;return A.replace(t,(...r)=>{let{variableName:i,colon:n,fallback:s}=r[r.length-1],a=Object.prototype.hasOwnProperty.call(e,i),g=e[i];if(g||a&&!n)return g;if(s!=null)return s;throw new clipanion_1.UsageError(`Environment variable not found (${i})`)})}exports.replaceEnvVariables=replaceEnvVariables;function parseBoolean(A){switch(A){case"true":case"1":case 1:case!0:return!0;case"false":case"0":case 0:case!1:return!1;default:throw new Error(`Couldn't parse "${A}" as a boolean`)}}exports.parseBoolean=parseBoolean;function parseOptionalBoolean(A){return typeof A>"u"?A:parseBoolean(A)}exports.parseOptionalBoolean=parseOptionalBoolean;function tryParseOptionalBoolean(A){try{return parseOptionalBoolean(A)}catch{return null}}exports.tryParseOptionalBoolean=tryParseOptionalBoolean;function isPathLike(A){return!!(fslib_1.npath.isAbsolute(A)||A.match(/^(\.{1,2}|~)\//))}exports.isPathLike=isPathLike;function mergeIntoTarget(A,...e){let t=s=>({value:s}),r=t(A),i=e.map(s=>t(s)),{value:n}=(0,mergeWith_1.default)(r,...i,(s,a)=>{if(Array.isArray(s)&&Array.isArray(a)){for(let g of a)s.find(c=>(0,isEqual_1.default)(c,g))||s.push(g);return s}});return n}exports.mergeIntoTarget=mergeIntoTarget;function toMerged(...A){return mergeIntoTarget({},...A)}exports.toMerged=toMerged});var ia=p(bi=>{"use strict";Object.defineProperty(bi,"__esModule",{value:!0});bi.PackageExtensionStatus=bi.PackageExtensionType=bi.LinkType=void 0;var ele;(function(A){A.HARD="HARD",A.SOFT="SOFT"})(ele=bi.LinkType||(bi.LinkType={}));var Ale;(function(A){A.Dependency="Dependency",A.PeerDependency="PeerDependency",A.PeerDependencyMeta="PeerDependencyMeta"})(Ale=bi.PackageExtensionType||(bi.PackageExtensionType={}));var tle;(function(A){A.Inactive="inactive",A.Redundant="redundant",A.Active="active"})(tle=bi.PackageExtensionStatus||(bi.PackageExtensionStatus={}))});var ti=p(Fe=>{"use strict";Object.defineProperty(Fe,"__esModule",{value:!0});Fe.addLogFilterSupport=Fe.LogLevel=Fe.prettyField=Fe.mark=Fe.jsonOrPretty=Fe.json=Fe.prettyList=Fe.pretty=Fe.applyHyperlink=Fe.applyColor=Fe.applyStyle=Fe.tuple=Fe.supportsHyperlinks=Fe.supportsColor=Fe.Style=Fe.Type=void 0;var Xg=nA(),z2=BA(),Qf=Xg.__importDefault(Ed()),pf=Xg.__importDefault(Qh()),rle=Fg(),ile=Xg.__importDefault(Ug()),nle=Xg.__importDefault(uP()),Bf=ar(),sle=Xg.__importStar(br()),XA=Xg.__importStar(Dt()),Vg=ia();Fe.Type={NO_HINT:"NO_HINT",NULL:"NULL",SCOPE:"SCOPE",NAME:"NAME",RANGE:"RANGE",REFERENCE:"REFERENCE",NUMBER:"NUMBER",PATH:"PATH",URL:"URL",ADDED:"ADDED",REMOVED:"REMOVED",CODE:"CODE",DURATION:"DURATION",SIZE:"SIZE",IDENT:"IDENT",DESCRIPTOR:"DESCRIPTOR",LOCATOR:"LOCATOR",RESOLUTION:"RESOLUTION",DEPENDENT:"DEPENDENT",PACKAGE_EXTENSION:"PACKAGE_EXTENSION",SETTING:"SETTING",MARKDOWN:"MARKDOWN"};var V2;(function(A){A[A.BOLD=2]="BOLD"})(V2=Fe.Style||(Fe.Style={}));var oy=pf.default.GITHUB_ACTIONS?{level:2}:Qf.default.supportsColor?{level:Qf.default.supportsColor.level}:{level:0};Fe.supportsColor=oy.level!==0;Fe.supportsHyperlinks=Fe.supportsColor&&!pf.default.GITHUB_ACTIONS&&!pf.default.CIRCLE&&!pf.default.GITLAB;var sy=new Qf.default.Instance(oy),ole=new Map([[Fe.Type.NO_HINT,null],[Fe.Type.NULL,["#a853b5",129]],[Fe.Type.SCOPE,["#d75f00",166]],[Fe.Type.NAME,["#d7875f",173]],[Fe.Type.RANGE,["#00afaf",37]],[Fe.Type.REFERENCE,["#87afff",111]],[Fe.Type.NUMBER,["#ffd700",220]],[Fe.Type.PATH,["#d75fd7",170]],[Fe.Type.URL,["#d75fd7",170]],[Fe.Type.ADDED,["#5faf00",70]],[Fe.Type.REMOVED,["#d70000",160]],[Fe.Type.CODE,["#87afff",111]],[Fe.Type.SIZE,["#ffd700",220]]]),Ai=A=>A,df={[Fe.Type.NUMBER]:Ai({pretty:(A,e)=>lr(A,`${e}`,Fe.Type.NUMBER),json:A=>A}),[Fe.Type.IDENT]:Ai({pretty:(A,e)=>XA.prettyIdent(A,e),json:A=>XA.stringifyIdent(A)}),[Fe.Type.LOCATOR]:Ai({pretty:(A,e)=>XA.prettyLocator(A,e),json:A=>XA.stringifyLocator(A)}),[Fe.Type.DESCRIPTOR]:Ai({pretty:(A,e)=>XA.prettyDescriptor(A,e),json:A=>XA.stringifyDescriptor(A)}),[Fe.Type.RESOLUTION]:Ai({pretty:(A,{descriptor:e,locator:t})=>XA.prettyResolution(A,e,t),json:({descriptor:A,locator:e})=>({descriptor:XA.stringifyDescriptor(A),locator:e!==null?XA.stringifyLocator(e):null})}),[Fe.Type.DEPENDENT]:Ai({pretty:(A,{locator:e,descriptor:t})=>XA.prettyDependent(A,e,t),json:({locator:A,descriptor:e})=>({locator:XA.stringifyLocator(A),descriptor:XA.stringifyDescriptor(e)})}),[Fe.Type.PACKAGE_EXTENSION]:Ai({pretty:(A,e)=>{switch(e.type){case Vg.PackageExtensionType.Dependency:return`${XA.prettyIdent(A,e.parentDescriptor)} \u27A4 ${lr(A,"dependencies",Fe.Type.CODE)} \u27A4 ${XA.prettyIdent(A,e.descriptor)}`;case Vg.PackageExtensionType.PeerDependency:return`${XA.prettyIdent(A,e.parentDescriptor)} \u27A4 ${lr(A,"peerDependencies",Fe.Type.CODE)} \u27A4 ${XA.prettyIdent(A,e.descriptor)}`;case Vg.PackageExtensionType.PeerDependencyMeta:return`${XA.prettyIdent(A,e.parentDescriptor)} \u27A4 ${lr(A,"peerDependenciesMeta",Fe.Type.CODE)} \u27A4 ${XA.prettyIdent(A,XA.parseIdent(e.selector))} \u27A4 ${lr(A,e.key,Fe.Type.CODE)}`;default:throw new Error(`Assertion failed: Unsupported package extension type: ${e.type}`)}},json:A=>{switch(A.type){case Vg.PackageExtensionType.Dependency:return`${XA.stringifyIdent(A.parentDescriptor)} > ${XA.stringifyIdent(A.descriptor)}`;case Vg.PackageExtensionType.PeerDependency:return`${XA.stringifyIdent(A.parentDescriptor)} >> ${XA.stringifyIdent(A.descriptor)}`;case Vg.PackageExtensionType.PeerDependencyMeta:return`${XA.stringifyIdent(A.parentDescriptor)} >> ${A.selector} / ${A.key}`;default:throw new Error(`Assertion failed: Unsupported package extension type: ${A.type}`)}}}),[Fe.Type.SETTING]:Ai({pretty:(A,e)=>(A.get(e),X2(A,lr(A,e,Fe.Type.CODE),`https://yarnpkg.com/configuration/yarnrc#${e}`)),json:A=>A}),[Fe.Type.DURATION]:Ai({pretty:(A,e)=>{if(e>1e3*60){let t=Math.floor(e/1e3/60),r=Math.ceil((e-t*60*1e3)/1e3);return r===0?`${t}m`:`${t}m ${r}s`}else{let t=Math.floor(e/1e3),r=e-t*1e3;return r===0?`${t}s`:`${t}s ${r}ms`}},json:A=>A}),[Fe.Type.SIZE]:Ai({pretty:(A,e)=>{let t=["KB","MB","GB","TB"],r=t.length;for(;r>1&&e<1024**r;)r-=1;let i=1024**r,n=Math.floor(e*100/i)/100;return lr(A,`${n} ${t[r-1]}`,Fe.Type.NUMBER)},json:A=>A}),[Fe.Type.PATH]:Ai({pretty:(A,e)=>lr(A,z2.npath.fromPortablePath(e),Fe.Type.PATH),json:A=>z2.npath.fromPortablePath(A)}),[Fe.Type.MARKDOWN]:Ai({pretty:(A,{text:e,format:t,paragraphs:r})=>(0,rle.formatMarkdownish)(e,{format:t,paragraphs:r}),json:({text:A})=>A})};function ale(A,e){return[e,A]}Fe.tuple=ale;function gle(A,e,t){return A.get("enableColors")&&t&V2.BOLD&&(e=Qf.default.bold(e)),e}Fe.applyStyle=gle;function lr(A,e,t){if(!A.get("enableColors"))return e;let r=ole.get(t);if(r===null)return e;let i=typeof r>"u"?t:oy.level>=3?r[0]:r[1],n=typeof i=="number"?sy.ansi256(i):i.startsWith("#")?sy.hex(i):sy[i];if(typeof n!="function")throw new Error(`Invalid format type ${i}`);return n(e)}Fe.applyColor=lr;var cle=!!process.env.KONSOLE_VERSION;function X2(A,e,t){return A.get("enableHyperlinks")?cle?`\x1B]8;;${t}\x1B\\${e}\x1B]8;;\x1B\\`:`\x1B]8;;${t}\x07${e}\x1B]8;;\x07`:e}Fe.applyHyperlink=X2;function uu(A,e,t){if(e===null)return lr(A,"null",Fe.Type.NULL);if(Object.prototype.hasOwnProperty.call(df,t))return df[t].pretty(A,e);if(typeof e!="string")throw new Error(`Assertion failed: Expected the value to be a string, got ${typeof e}`);return lr(A,e,t)}Fe.pretty=uu;function lle(A,e,t,{separator:r=", "}={}){return[...e].map(i=>uu(A,i,t)).join(r)}Fe.prettyList=lle;function Z2(A,e){if(A===null)return null;if(Object.prototype.hasOwnProperty.call(df,e))return sle.overrideType(e),df[e].json(A);if(typeof A!="string")throw new Error(`Assertion failed: Expected the value to be a string, got ${typeof A}`);return A}Fe.json=Z2;function ule(A,e,[t,r]){return A?Z2(t,r):uu(e,t,r)}Fe.jsonOrPretty=ule;function Cle(A){return{Check:lr(A,"\u2713","green"),Cross:lr(A,"\u2718","red"),Question:lr(A,"?","cyan")}}Fe.mark=Cle;function hle(A,{label:e,value:[t,r]}){return`${uu(A,e,Fe.Type.CODE)}: ${uu(A,t,r)}`}Fe.prettyField=hle;var na;(function(A){A.Error="error",A.Warning="warning",A.Info="info",A.Discard="discard"})(na=Fe.LogLevel||(Fe.LogLevel={}));function fle(A,{configuration:e}){let t=e.get("logFilters"),r=new Map,i=new Map,n=[];for(let C of t){let f=C.get("level");if(typeof f>"u")continue;let E=C.get("code");typeof E<"u"&&r.set(E,f);let m=C.get("text");typeof m<"u"&&i.set(m,f);let w=C.get("pattern");typeof w<"u"&&n.push([ile.default.matcher(w,{contains:!0}),f])}n.reverse();let s=(C,f,E)=>{if(C===null||C===Bf.MessageName.UNNAMED)return E;let m=i.size>0||n.length>0?(0,nle.default)(f):f;if(i.size>0){let w=i.get(m);if(typeof w<"u")return w??E}if(n.length>0){for(let[w,D]of n)if(w(m))return D??E}if(r.size>0){let w=r.get((0,Bf.stringifyMessageName)(C));if(typeof w<"u")return w??E}return E},a=A.reportInfo,g=A.reportWarning,c=A.reportError,l=function(C,f,E,m){switch(s(f,E,m)){case na.Info:a.call(C,f,E);break;case na.Warning:g.call(C,f??Bf.MessageName.UNNAMED,E);break;case na.Error:c.call(C,f??Bf.MessageName.UNNAMED,E);break}};A.reportInfo=function(...C){return l(this,...C,na.Info)},A.reportWarning=function(...C){return l(this,...C,na.Warning)},A.reportError=function(...C){return l(this,...C,na.Error)}}Fe.addLogFilterSupport=fle});var eT=p((lNe,$2)=>{"use strict";$2.exports=(...A)=>[...new Set([].concat(...A))]});var ay=p((uNe,rT)=>{"use strict";var Ile=require("stream"),AT=Ile.PassThrough,Ele=Array.prototype.slice;rT.exports=Ble;function Ble(){let A=[],e=Ele.call(arguments),t=!1,r=e[e.length-1];r&&!Array.isArray(r)&&r.pipe==null?e.pop():r={};let i=r.end!==!1,n=r.pipeError===!0;r.objectMode==null&&(r.objectMode=!0),r.highWaterMark==null&&(r.highWaterMark=64*1024);let s=AT(r);function a(){for(let l=0,C=arguments.length;l0||(t=!1,g())}function E(m){function w(){m.removeListener("merge2UnpipeEnd",w),m.removeListener("end",w),n&&m.removeListener("error",D),f()}function D(L){s.emit("error",L)}if(m._readableState.endEmitted)return f();m.on("merge2UnpipeEnd",w),m.on("end",w),n&&m.on("error",D),m.pipe(s,{end:!1}),m.resume()}for(let m=0;m{"use strict";Object.defineProperty(Zg,"__esModule",{value:!0});Zg.splitWhen=Zg.flatten=void 0;function ple(A){return A.reduce((e,t)=>[].concat(e,t),[])}Zg.flatten=ple;function Qle(A,e){let t=[[]],r=0;for(let i of A)e(i)?(r++,t[r]=[]):t[r].push(i);return t}Zg.splitWhen=Qle});var nT=p(yf=>{"use strict";Object.defineProperty(yf,"__esModule",{value:!0});yf.isEnoentCodeError=void 0;function dle(A){return A.code==="ENOENT"}yf.isEnoentCodeError=dle});var sT=p(mf=>{"use strict";Object.defineProperty(mf,"__esModule",{value:!0});mf.createDirentFromStats=void 0;var gy=class{constructor(e,t){this.name=e,this.isBlockDevice=t.isBlockDevice.bind(t),this.isCharacterDevice=t.isCharacterDevice.bind(t),this.isDirectory=t.isDirectory.bind(t),this.isFIFO=t.isFIFO.bind(t),this.isFile=t.isFile.bind(t),this.isSocket=t.isSocket.bind(t),this.isSymbolicLink=t.isSymbolicLink.bind(t)}};function yle(A,e){return new gy(A,e)}mf.createDirentFromStats=yle});var oT=p(tn=>{"use strict";Object.defineProperty(tn,"__esModule",{value:!0});tn.removeLeadingDotSegment=tn.escape=tn.makeAbsolute=tn.unixify=void 0;var mle=require("path"),wle=2,Dle=/(\\?)([()*?[\]{|}]|^!|[!+@](?=\())/g;function Sle(A){return A.replace(/\\/g,"/")}tn.unixify=Sle;function Fle(A,e){return mle.resolve(A,e)}tn.makeAbsolute=Fle;function xle(A){return A.replace(Dle,"\\$2")}tn.escape=xle;function Rle(A){if(A.charAt(0)==="."){let e=A.charAt(1);if(e==="/"||e==="\\")return A.slice(wle)}return A}tn.removeLeadingDotSegment=Rle});var gT=p((ENe,aT)=>{aT.exports=function(e){if(typeof e!="string"||e==="")return!1;for(var t;t=/(\\).|([@?!+*]\(.*\))/g.exec(e);){if(t[2])return!0;e=e.slice(t.index+t[0].length)}return!1}});var uT=p((BNe,lT)=>{var ble=gT(),cT={"{":"}","(":")","[":"]"},kle=function(A){if(A[0]==="!")return!0;for(var e=0,t=-2,r=-2,i=-2,n=-2,s=-2;ee&&(s===-1||s>r||(s=A.indexOf("\\",e),s===-1||s>r)))||i!==-1&&A[e]==="{"&&A[e+1]!=="}"&&(i=A.indexOf("}",e),i>e&&(s=A.indexOf("\\",e),s===-1||s>i))||n!==-1&&A[e]==="("&&A[e+1]==="?"&&/[:!=]/.test(A[e+2])&&A[e+3]!==")"&&(n=A.indexOf(")",e),n>e&&(s=A.indexOf("\\",e),s===-1||s>n))||t!==-1&&A[e]==="("&&A[e+1]!=="|"&&(tt&&(s=A.indexOf("\\",t),s===-1||s>n))))return!0;if(A[e]==="\\"){var a=A[e+1];e+=2;var g=cT[a];if(g){var c=A.indexOf(g,e);c!==-1&&(e=c+1)}if(A[e]==="!")return!0}else e++}return!1},vle=function(A){if(A[0]==="!")return!0;for(var e=0;e{"use strict";var Nle=uT(),Mle=require("path").posix.dirname,Lle=require("os").platform()==="win32",cy="/",Ple=/\\/g,Ole=/[\{\[].*[\}\]]$/,Kle=/(^|[^\\])([\{\[]|\([^\)]+$)/,Ule=/\\([\!\*\?\|\[\]\(\)\{\}])/g;CT.exports=function(e,t){var r=Object.assign({flipBackslashes:!0},t);r.flipBackslashes&&Lle&&e.indexOf(cy)<0&&(e=e.replace(Ple,cy)),Ole.test(e)&&(e+=cy),e+="a";do e=Mle(e);while(Nle(e)||Kle.test(e));return e.replace(Ule,"$1")}});var yT=p(aA=>{"use strict";Object.defineProperty(aA,"__esModule",{value:!0});aA.matchAny=aA.convertPatternsToRe=aA.makeRe=aA.getPatternParts=aA.expandBraceExpansion=aA.expandPatternsWithBraceExpansion=aA.isAffectDepthOfReadingPattern=aA.endsWithSlashGlobStar=aA.hasGlobStar=aA.getBaseDirectory=aA.isPatternRelatedToParentDirectory=aA.getPatternsOutsideCurrentDirectory=aA.getPatternsInsideCurrentDirectory=aA.getPositivePatterns=aA.getNegativePatterns=aA.isPositivePattern=aA.isNegativePattern=aA.convertToNegativePattern=aA.convertToPositivePattern=aA.isDynamicPattern=aA.isStaticPattern=void 0;var Tle=require("path"),qle=hT(),ly=Ug(),fT="**",Gle="\\",Yle=/[*?]|^!/,_le=/\[[^[]*]/,Hle=/(?:^|[^!*+?@])\([^(]*\|[^|]*\)/,Jle=/[!*+?@]\([^(]*\)/,jle=/,|\.\./;function IT(A,e={}){return!ET(A,e)}aA.isStaticPattern=IT;function ET(A,e={}){return A===""?!1:!!(e.caseSensitiveMatch===!1||A.includes(Gle)||Yle.test(A)||_le.test(A)||Hle.test(A)||e.extglob!==!1&&Jle.test(A)||e.braceExpansion!==!1&&Wle(A))}aA.isDynamicPattern=ET;function Wle(A){let e=A.indexOf("{");if(e===-1)return!1;let t=A.indexOf("}",e+1);if(t===-1)return!1;let r=A.slice(e,t);return jle.test(r)}function zle(A){return wf(A)?A.slice(1):A}aA.convertToPositivePattern=zle;function Vle(A){return"!"+A}aA.convertToNegativePattern=Vle;function wf(A){return A.startsWith("!")&&A[1]!=="("}aA.isNegativePattern=wf;function BT(A){return!wf(A)}aA.isPositivePattern=BT;function Xle(A){return A.filter(wf)}aA.getNegativePatterns=Xle;function Zle(A){return A.filter(BT)}aA.getPositivePatterns=Zle;function $le(A){return A.filter(e=>!uy(e))}aA.getPatternsInsideCurrentDirectory=$le;function eue(A){return A.filter(uy)}aA.getPatternsOutsideCurrentDirectory=eue;function uy(A){return A.startsWith("..")||A.startsWith("./..")}aA.isPatternRelatedToParentDirectory=uy;function Aue(A){return qle(A,{flipBackslashes:!1})}aA.getBaseDirectory=Aue;function tue(A){return A.includes(fT)}aA.hasGlobStar=tue;function pT(A){return A.endsWith("/"+fT)}aA.endsWithSlashGlobStar=pT;function rue(A){let e=Tle.basename(A);return pT(A)||IT(e)}aA.isAffectDepthOfReadingPattern=rue;function iue(A){return A.reduce((e,t)=>e.concat(QT(t)),[])}aA.expandPatternsWithBraceExpansion=iue;function QT(A){return ly.braces(A,{expand:!0,nodupes:!0})}aA.expandBraceExpansion=QT;function nue(A,e){let{parts:t}=ly.scan(A,Object.assign(Object.assign({},e),{parts:!0}));return t.length===0&&(t=[A]),t[0].startsWith("/")&&(t[0]=t[0].slice(1),t.unshift("")),t}aA.getPatternParts=nue;function dT(A,e){return ly.makeRe(A,e)}aA.makeRe=dT;function sue(A,e){return A.map(t=>dT(t,e))}aA.convertPatternsToRe=sue;function oue(A,e){return e.some(t=>t.test(A))}aA.matchAny=oue});var wT=p(Df=>{"use strict";Object.defineProperty(Df,"__esModule",{value:!0});Df.merge=void 0;var aue=ay();function gue(A){let e=aue(A);return A.forEach(t=>{t.once("error",r=>e.emit("error",r))}),e.once("close",()=>mT(A)),e.once("end",()=>mT(A)),e}Df.merge=gue;function mT(A){A.forEach(e=>e.emit("close"))}});var DT=p($g=>{"use strict";Object.defineProperty($g,"__esModule",{value:!0});$g.isEmpty=$g.isString=void 0;function cue(A){return typeof A=="string"}$g.isString=cue;function lue(A){return A===""}$g.isEmpty=lue});var Gn=p(Lt=>{"use strict";Object.defineProperty(Lt,"__esModule",{value:!0});Lt.string=Lt.stream=Lt.pattern=Lt.path=Lt.fs=Lt.errno=Lt.array=void 0;var uue=iT();Lt.array=uue;var Cue=nT();Lt.errno=Cue;var hue=sT();Lt.fs=hue;var fue=oT();Lt.path=fue;var Iue=yT();Lt.pattern=Iue;var Eue=wT();Lt.stream=Eue;var Bue=DT();Lt.string=Bue});var xT=p(Pt=>{"use strict";Object.defineProperty(Pt,"__esModule",{value:!0});Pt.convertPatternGroupToTask=Pt.convertPatternGroupsToTasks=Pt.groupPatternsByBaseDirectory=Pt.getNegativePatternsAsPositive=Pt.getPositivePatterns=Pt.convertPatternsToTasks=Pt.generate=void 0;var Yn=Gn();function pue(A,e){let t=ST(A),r=FT(A,e.ignore),i=t.filter(g=>Yn.pattern.isStaticPattern(g,e)),n=t.filter(g=>Yn.pattern.isDynamicPattern(g,e)),s=Cy(i,r,!1),a=Cy(n,r,!0);return s.concat(a)}Pt.generate=pue;function Cy(A,e,t){let r=[],i=Yn.pattern.getPatternsOutsideCurrentDirectory(A),n=Yn.pattern.getPatternsInsideCurrentDirectory(A),s=hy(i),a=hy(n);return r.push(...fy(s,e,t)),"."in a?r.push(Iy(".",n,e,t)):r.push(...fy(a,e,t)),r}Pt.convertPatternsToTasks=Cy;function ST(A){return Yn.pattern.getPositivePatterns(A)}Pt.getPositivePatterns=ST;function FT(A,e){return Yn.pattern.getNegativePatterns(A).concat(e).map(Yn.pattern.convertToPositivePattern)}Pt.getNegativePatternsAsPositive=FT;function hy(A){let e={};return A.reduce((t,r)=>{let i=Yn.pattern.getBaseDirectory(r);return i in t?t[i].push(r):t[i]=[r],t},e)}Pt.groupPatternsByBaseDirectory=hy;function fy(A,e,t){return Object.keys(A).map(r=>Iy(r,A[r],e,t))}Pt.convertPatternGroupsToTasks=fy;function Iy(A,e,t,r){return{dynamic:r,positive:e,negative:t,base:A,patterns:[].concat(e,t.map(Yn.pattern.convertToNegativePattern))}}Pt.convertPatternGroupToTask=Iy});var bT=p(ec=>{"use strict";Object.defineProperty(ec,"__esModule",{value:!0});ec.removeDuplicateSlashes=ec.transform=void 0;var Que=/(?!^)\/{2,}/g;function due(A){return A.map(e=>RT(e))}ec.transform=due;function RT(A){return A.replace(Que,"/")}ec.removeDuplicateSlashes=RT});var vT=p(Sf=>{"use strict";Object.defineProperty(Sf,"__esModule",{value:!0});Sf.read=void 0;function yue(A,e,t){e.fs.lstat(A,(r,i)=>{if(r!==null){kT(t,r);return}if(!i.isSymbolicLink()||!e.followSymbolicLink){Ey(t,i);return}e.fs.stat(A,(n,s)=>{if(n!==null){if(e.throwErrorOnBrokenSymbolicLink){kT(t,n);return}Ey(t,i);return}e.markSymbolicLink&&(s.isSymbolicLink=()=>!0),Ey(t,s)})})}Sf.read=yue;function kT(A,e){A(e)}function Ey(A,e){A(null,e)}});var NT=p(Ff=>{"use strict";Object.defineProperty(Ff,"__esModule",{value:!0});Ff.read=void 0;function mue(A,e){let t=e.fs.lstatSync(A);if(!t.isSymbolicLink()||!e.followSymbolicLink)return t;try{let r=e.fs.statSync(A);return e.markSymbolicLink&&(r.isSymbolicLink=()=>!0),r}catch(r){if(!e.throwErrorOnBrokenSymbolicLink)return t;throw r}}Ff.read=mue});var MT=p(vs=>{"use strict";Object.defineProperty(vs,"__esModule",{value:!0});vs.createFileSystemAdapter=vs.FILE_SYSTEM_ADAPTER=void 0;var xf=require("fs");vs.FILE_SYSTEM_ADAPTER={lstat:xf.lstat,stat:xf.stat,lstatSync:xf.lstatSync,statSync:xf.statSync};function wue(A){return A===void 0?vs.FILE_SYSTEM_ADAPTER:Object.assign(Object.assign({},vs.FILE_SYSTEM_ADAPTER),A)}vs.createFileSystemAdapter=wue});var LT=p(py=>{"use strict";Object.defineProperty(py,"__esModule",{value:!0});var Due=MT(),By=class{constructor(e={}){this._options=e,this.followSymbolicLink=this._getValue(this._options.followSymbolicLink,!0),this.fs=Due.createFileSystemAdapter(this._options.fs),this.markSymbolicLink=this._getValue(this._options.markSymbolicLink,!1),this.throwErrorOnBrokenSymbolicLink=this._getValue(this._options.throwErrorOnBrokenSymbolicLink,!0)}_getValue(e,t){return e??t}};py.default=By});var sa=p(Ns=>{"use strict";Object.defineProperty(Ns,"__esModule",{value:!0});Ns.statSync=Ns.stat=Ns.Settings=void 0;var PT=vT(),Sue=NT(),Qy=LT();Ns.Settings=Qy.default;function Fue(A,e,t){if(typeof e=="function"){PT.read(A,dy(),e);return}PT.read(A,dy(e),t)}Ns.stat=Fue;function xue(A,e){let t=dy(e);return Sue.read(A,t)}Ns.statSync=xue;function dy(A={}){return A instanceof Qy.default?A:new Qy.default(A)}});var UT=p((kNe,KT)=>{var OT;KT.exports=typeof queueMicrotask=="function"?queueMicrotask.bind(typeof window<"u"?window:global):A=>(OT||(OT=Promise.resolve())).then(A).catch(e=>setTimeout(()=>{throw e},0))});var qT=p((vNe,TT)=>{TT.exports=bue;var Rue=UT();function bue(A,e){let t,r,i,n=!0;Array.isArray(A)?(t=[],r=A.length):(i=Object.keys(A),t={},r=i.length);function s(g){function c(){e&&e(g,t),e=null}n?Rue(c):c()}function a(g,c,l){t[g]=l,(--r===0||c)&&s(c)}r?i?i.forEach(function(g){A[g](function(c,l){a(g,c,l)})}):A.forEach(function(g,c){g(function(l,C){a(c,l,C)})}):s(null),n=!1}});var yy=p(bf=>{"use strict";Object.defineProperty(bf,"__esModule",{value:!0});bf.IS_SUPPORT_READDIR_WITH_FILE_TYPES=void 0;var Rf=process.versions.node.split(".");if(Rf[0]===void 0||Rf[1]===void 0)throw new Error(`Unexpected behavior. The 'process.versions.node' variable has invalid value: ${process.versions.node}`);var GT=Number.parseInt(Rf[0],10),kue=Number.parseInt(Rf[1],10),YT=10,vue=10,Nue=GT>YT,Mue=GT===YT&&kue>=vue;bf.IS_SUPPORT_READDIR_WITH_FILE_TYPES=Nue||Mue});var _T=p(kf=>{"use strict";Object.defineProperty(kf,"__esModule",{value:!0});kf.createDirentFromStats=void 0;var my=class{constructor(e,t){this.name=e,this.isBlockDevice=t.isBlockDevice.bind(t),this.isCharacterDevice=t.isCharacterDevice.bind(t),this.isDirectory=t.isDirectory.bind(t),this.isFIFO=t.isFIFO.bind(t),this.isFile=t.isFile.bind(t),this.isSocket=t.isSocket.bind(t),this.isSymbolicLink=t.isSymbolicLink.bind(t)}};function Lue(A,e){return new my(A,e)}kf.createDirentFromStats=Lue});var wy=p(vf=>{"use strict";Object.defineProperty(vf,"__esModule",{value:!0});vf.fs=void 0;var Pue=_T();vf.fs=Pue});var Dy=p(Nf=>{"use strict";Object.defineProperty(Nf,"__esModule",{value:!0});Nf.joinPathSegments=void 0;function Oue(A,e,t){return A.endsWith(t)?A+e:A+t+e}Nf.joinPathSegments=Oue});var VT=p(Ms=>{"use strict";Object.defineProperty(Ms,"__esModule",{value:!0});Ms.readdir=Ms.readdirWithFileTypes=Ms.read=void 0;var Kue=sa(),HT=qT(),Uue=yy(),JT=wy(),jT=Dy();function Tue(A,e,t){if(!e.stats&&Uue.IS_SUPPORT_READDIR_WITH_FILE_TYPES){WT(A,e,t);return}zT(A,e,t)}Ms.read=Tue;function WT(A,e,t){e.fs.readdir(A,{withFileTypes:!0},(r,i)=>{if(r!==null){Mf(t,r);return}let n=i.map(a=>({dirent:a,name:a.name,path:jT.joinPathSegments(A,a.name,e.pathSegmentSeparator)}));if(!e.followSymbolicLinks){Sy(t,n);return}let s=n.map(a=>que(a,e));HT(s,(a,g)=>{if(a!==null){Mf(t,a);return}Sy(t,g)})})}Ms.readdirWithFileTypes=WT;function que(A,e){return t=>{if(!A.dirent.isSymbolicLink()){t(null,A);return}e.fs.stat(A.path,(r,i)=>{if(r!==null){if(e.throwErrorOnBrokenSymbolicLink){t(r);return}t(null,A);return}A.dirent=JT.fs.createDirentFromStats(A.name,i),t(null,A)})}}function zT(A,e,t){e.fs.readdir(A,(r,i)=>{if(r!==null){Mf(t,r);return}let n=i.map(s=>{let a=jT.joinPathSegments(A,s,e.pathSegmentSeparator);return g=>{Kue.stat(a,e.fsStatSettings,(c,l)=>{if(c!==null){g(c);return}let C={name:s,path:a,dirent:JT.fs.createDirentFromStats(s,l)};e.stats&&(C.stats=l),g(null,C)})}});HT(n,(s,a)=>{if(s!==null){Mf(t,s);return}Sy(t,a)})})}Ms.readdir=zT;function Mf(A,e){A(e)}function Sy(A,e){A(null,e)}});var Aq=p(Ls=>{"use strict";Object.defineProperty(Ls,"__esModule",{value:!0});Ls.readdir=Ls.readdirWithFileTypes=Ls.read=void 0;var Gue=sa(),Yue=yy(),XT=wy(),ZT=Dy();function _ue(A,e){return!e.stats&&Yue.IS_SUPPORT_READDIR_WITH_FILE_TYPES?$T(A,e):eq(A,e)}Ls.read=_ue;function $T(A,e){return e.fs.readdirSync(A,{withFileTypes:!0}).map(r=>{let i={dirent:r,name:r.name,path:ZT.joinPathSegments(A,r.name,e.pathSegmentSeparator)};if(i.dirent.isSymbolicLink()&&e.followSymbolicLinks)try{let n=e.fs.statSync(i.path);i.dirent=XT.fs.createDirentFromStats(i.name,n)}catch(n){if(e.throwErrorOnBrokenSymbolicLink)throw n}return i})}Ls.readdirWithFileTypes=$T;function eq(A,e){return e.fs.readdirSync(A).map(r=>{let i=ZT.joinPathSegments(A,r,e.pathSegmentSeparator),n=Gue.statSync(i,e.fsStatSettings),s={name:r,path:i,dirent:XT.fs.createDirentFromStats(r,n)};return e.stats&&(s.stats=n),s})}Ls.readdir=eq});var tq=p(Ps=>{"use strict";Object.defineProperty(Ps,"__esModule",{value:!0});Ps.createFileSystemAdapter=Ps.FILE_SYSTEM_ADAPTER=void 0;var Ac=require("fs");Ps.FILE_SYSTEM_ADAPTER={lstat:Ac.lstat,stat:Ac.stat,lstatSync:Ac.lstatSync,statSync:Ac.statSync,readdir:Ac.readdir,readdirSync:Ac.readdirSync};function Hue(A){return A===void 0?Ps.FILE_SYSTEM_ADAPTER:Object.assign(Object.assign({},Ps.FILE_SYSTEM_ADAPTER),A)}Ps.createFileSystemAdapter=Hue});var rq=p(xy=>{"use strict";Object.defineProperty(xy,"__esModule",{value:!0});var Jue=require("path"),jue=sa(),Wue=tq(),Fy=class{constructor(e={}){this._options=e,this.followSymbolicLinks=this._getValue(this._options.followSymbolicLinks,!1),this.fs=Wue.createFileSystemAdapter(this._options.fs),this.pathSegmentSeparator=this._getValue(this._options.pathSegmentSeparator,Jue.sep),this.stats=this._getValue(this._options.stats,!1),this.throwErrorOnBrokenSymbolicLink=this._getValue(this._options.throwErrorOnBrokenSymbolicLink,!0),this.fsStatSettings=new jue.Settings({followSymbolicLink:this.followSymbolicLinks,fs:this.fs,throwErrorOnBrokenSymbolicLink:this.throwErrorOnBrokenSymbolicLink})}_getValue(e,t){return e??t}};xy.default=Fy});var Lf=p(Os=>{"use strict";Object.defineProperty(Os,"__esModule",{value:!0});Os.Settings=Os.scandirSync=Os.scandir=void 0;var iq=VT(),zue=Aq(),Ry=rq();Os.Settings=Ry.default;function Vue(A,e,t){if(typeof e=="function"){iq.read(A,by(),e);return}iq.read(A,by(e),t)}Os.scandir=Vue;function Xue(A,e){let t=by(e);return zue.read(A,t)}Os.scandirSync=Xue;function by(A={}){return A instanceof Ry.default?A:new Ry.default(A)}});var sq=p((GNe,nq)=>{"use strict";function Zue(A){var e=new A,t=e;function r(){var n=e;return n.next?e=n.next:(e=new A,t=e),n.next=null,n}function i(n){t.next=n,t=n}return{get:r,release:i}}nq.exports=Zue});var aq=p((YNe,ky)=>{"use strict";var $ue=sq();function oq(A,e,t){if(typeof A=="function"&&(t=e,e=A,A=null),t<1)throw new Error("fastqueue concurrency must be greater than 1");var r=$ue(eCe),i=null,n=null,s=0,a=null,g={push:w,drain:ri,saturated:ri,pause:l,paused:!1,concurrency:t,running:c,resume:E,idle:m,length:C,getQueue:f,unshift:D,empty:ri,kill:K,killAndDrain:_,error:le};return g;function c(){return s}function l(){g.paused=!0}function C(){for(var re=i,J=0;re;)re=re.next,J++;return J}function f(){for(var re=i,J=[];re;)J.push(re.value),re=re.next;return J}function E(){if(!!g.paused){g.paused=!1;for(var re=0;re{"use strict";Object.defineProperty(rn,"__esModule",{value:!0});rn.joinPathSegments=rn.replacePathSegmentSeparator=rn.isAppliedFilter=rn.isFatalError=void 0;function tCe(A,e){return A.errorFilter===null?!0:!A.errorFilter(e)}rn.isFatalError=tCe;function rCe(A,e){return A===null||A(e)}rn.isAppliedFilter=rCe;function iCe(A,e){return A.split(/[/\\]/).join(e)}rn.replacePathSegmentSeparator=iCe;function nCe(A,e,t){return A===""?e:A.endsWith(t)?A+e:A+t+e}rn.joinPathSegments=nCe});var My=p(Ny=>{"use strict";Object.defineProperty(Ny,"__esModule",{value:!0});var sCe=Pf(),vy=class{constructor(e,t){this._root=e,this._settings=t,this._root=sCe.replacePathSegmentSeparator(e,t.pathSegmentSeparator)}};Ny.default=vy});var Oy=p(Py=>{"use strict";Object.defineProperty(Py,"__esModule",{value:!0});var oCe=require("events"),aCe=Lf(),gCe=aq(),Of=Pf(),cCe=My(),Ly=class extends cCe.default{constructor(e,t){super(e,t),this._settings=t,this._scandir=aCe.scandir,this._emitter=new oCe.EventEmitter,this._queue=gCe(this._worker.bind(this),this._settings.concurrency),this._isFatalError=!1,this._isDestroyed=!1,this._queue.drain=()=>{this._isFatalError||this._emitter.emit("end")}}read(){return this._isFatalError=!1,this._isDestroyed=!1,setImmediate(()=>{this._pushToQueue(this._root,this._settings.basePath)}),this._emitter}get isDestroyed(){return this._isDestroyed}destroy(){if(this._isDestroyed)throw new Error("The reader is already destroyed");this._isDestroyed=!0,this._queue.killAndDrain()}onEntry(e){this._emitter.on("entry",e)}onError(e){this._emitter.once("error",e)}onEnd(e){this._emitter.once("end",e)}_pushToQueue(e,t){let r={directory:e,base:t};this._queue.push(r,i=>{i!==null&&this._handleError(i)})}_worker(e,t){this._scandir(e.directory,this._settings.fsScandirSettings,(r,i)=>{if(r!==null){t(r,void 0);return}for(let n of i)this._handleEntry(n,e.base);t(null,void 0)})}_handleError(e){this._isDestroyed||!Of.isFatalError(this._settings,e)||(this._isFatalError=!0,this._isDestroyed=!0,this._emitter.emit("error",e))}_handleEntry(e,t){if(this._isDestroyed||this._isFatalError)return;let r=e.path;t!==void 0&&(e.path=Of.joinPathSegments(t,e.name,this._settings.pathSegmentSeparator)),Of.isAppliedFilter(this._settings.entryFilter,e)&&this._emitEntry(e),e.dirent.isDirectory()&&Of.isAppliedFilter(this._settings.deepFilter,e)&&this._pushToQueue(r,t===void 0?void 0:e.path)}_emitEntry(e){this._emitter.emit("entry",e)}};Py.default=Ly});var gq=p(Uy=>{"use strict";Object.defineProperty(Uy,"__esModule",{value:!0});var lCe=Oy(),Ky=class{constructor(e,t){this._root=e,this._settings=t,this._reader=new lCe.default(this._root,this._settings),this._storage=[]}read(e){this._reader.onError(t=>{uCe(e,t)}),this._reader.onEntry(t=>{this._storage.push(t)}),this._reader.onEnd(()=>{CCe(e,this._storage)}),this._reader.read()}};Uy.default=Ky;function uCe(A,e){A(e)}function CCe(A,e){A(null,e)}});var cq=p(qy=>{"use strict";Object.defineProperty(qy,"__esModule",{value:!0});var hCe=require("stream"),fCe=Oy(),Ty=class{constructor(e,t){this._root=e,this._settings=t,this._reader=new fCe.default(this._root,this._settings),this._stream=new hCe.Readable({objectMode:!0,read:()=>{},destroy:()=>{this._reader.isDestroyed||this._reader.destroy()}})}read(){return this._reader.onError(e=>{this._stream.emit("error",e)}),this._reader.onEntry(e=>{this._stream.push(e)}),this._reader.onEnd(()=>{this._stream.push(null)}),this._reader.read(),this._stream}};qy.default=Ty});var lq=p(Yy=>{"use strict";Object.defineProperty(Yy,"__esModule",{value:!0});var ICe=Lf(),Kf=Pf(),ECe=My(),Gy=class extends ECe.default{constructor(){super(...arguments),this._scandir=ICe.scandirSync,this._storage=[],this._queue=new Set}read(){return this._pushToQueue(this._root,this._settings.basePath),this._handleQueue(),this._storage}_pushToQueue(e,t){this._queue.add({directory:e,base:t})}_handleQueue(){for(let e of this._queue.values())this._handleDirectory(e.directory,e.base)}_handleDirectory(e,t){try{let r=this._scandir(e,this._settings.fsScandirSettings);for(let i of r)this._handleEntry(i,t)}catch(r){this._handleError(r)}}_handleError(e){if(!!Kf.isFatalError(this._settings,e))throw e}_handleEntry(e,t){let r=e.path;t!==void 0&&(e.path=Kf.joinPathSegments(t,e.name,this._settings.pathSegmentSeparator)),Kf.isAppliedFilter(this._settings.entryFilter,e)&&this._pushToStorage(e),e.dirent.isDirectory()&&Kf.isAppliedFilter(this._settings.deepFilter,e)&&this._pushToQueue(r,t===void 0?void 0:e.path)}_pushToStorage(e){this._storage.push(e)}};Yy.default=Gy});var uq=p(Hy=>{"use strict";Object.defineProperty(Hy,"__esModule",{value:!0});var BCe=lq(),_y=class{constructor(e,t){this._root=e,this._settings=t,this._reader=new BCe.default(this._root,this._settings)}read(){return this._reader.read()}};Hy.default=_y});var Cq=p(jy=>{"use strict";Object.defineProperty(jy,"__esModule",{value:!0});var pCe=require("path"),QCe=Lf(),Jy=class{constructor(e={}){this._options=e,this.basePath=this._getValue(this._options.basePath,void 0),this.concurrency=this._getValue(this._options.concurrency,Number.POSITIVE_INFINITY),this.deepFilter=this._getValue(this._options.deepFilter,null),this.entryFilter=this._getValue(this._options.entryFilter,null),this.errorFilter=this._getValue(this._options.errorFilter,null),this.pathSegmentSeparator=this._getValue(this._options.pathSegmentSeparator,pCe.sep),this.fsScandirSettings=new QCe.Settings({followSymbolicLinks:this._options.followSymbolicLinks,fs:this._options.fs,pathSegmentSeparator:this._options.pathSegmentSeparator,stats:this._options.stats,throwErrorOnBrokenSymbolicLink:this._options.throwErrorOnBrokenSymbolicLink})}_getValue(e,t){return e??t}};jy.default=Jy});var Tf=p(nn=>{"use strict";Object.defineProperty(nn,"__esModule",{value:!0});nn.Settings=nn.walkStream=nn.walkSync=nn.walk=void 0;var hq=gq(),dCe=cq(),yCe=uq(),Wy=Cq();nn.Settings=Wy.default;function mCe(A,e,t){if(typeof e=="function"){new hq.default(A,Uf()).read(e);return}new hq.default(A,Uf(e)).read(t)}nn.walk=mCe;function wCe(A,e){let t=Uf(e);return new yCe.default(A,t).read()}nn.walkSync=wCe;function DCe(A,e){let t=Uf(e);return new dCe.default(A,t).read()}nn.walkStream=DCe;function Uf(A={}){return A instanceof Wy.default?A:new Wy.default(A)}});var qf=p(Vy=>{"use strict";Object.defineProperty(Vy,"__esModule",{value:!0});var SCe=require("path"),FCe=sa(),fq=Gn(),zy=class{constructor(e){this._settings=e,this._fsStatSettings=new FCe.Settings({followSymbolicLink:this._settings.followSymbolicLinks,fs:this._settings.fs,throwErrorOnBrokenSymbolicLink:this._settings.followSymbolicLinks})}_getFullEntryPath(e){return SCe.resolve(this._settings.cwd,e)}_makeEntry(e,t){let r={name:t,path:t,dirent:fq.fs.createDirentFromStats(t,e)};return this._settings.stats&&(r.stats=e),r}_isFatalError(e){return!fq.errno.isEnoentCodeError(e)&&!this._settings.suppressErrors}};Vy.default=zy});var $y=p(Zy=>{"use strict";Object.defineProperty(Zy,"__esModule",{value:!0});var xCe=require("stream"),RCe=sa(),bCe=Tf(),kCe=qf(),Xy=class extends kCe.default{constructor(){super(...arguments),this._walkStream=bCe.walkStream,this._stat=RCe.stat}dynamic(e,t){return this._walkStream(e,t)}static(e,t){let r=e.map(this._getFullEntryPath,this),i=new xCe.PassThrough({objectMode:!0});i._write=(n,s,a)=>this._getEntry(r[n],e[n],t).then(g=>{g!==null&&t.entryFilter(g)&&i.push(g),n===r.length-1&&i.end(),a()}).catch(a);for(let n=0;nthis._makeEntry(i,t)).catch(i=>{if(r.errorFilter(i))return null;throw i})}_getStat(e){return new Promise((t,r)=>{this._stat(e,this._fsStatSettings,(i,n)=>i===null?t(n):r(i))})}};Zy.default=Xy});var Iq=p(A0=>{"use strict";Object.defineProperty(A0,"__esModule",{value:!0});var vCe=Tf(),NCe=qf(),MCe=$y(),e0=class extends NCe.default{constructor(){super(...arguments),this._walkAsync=vCe.walk,this._readerStream=new MCe.default(this._settings)}dynamic(e,t){return new Promise((r,i)=>{this._walkAsync(e,t,(n,s)=>{n===null?r(s):i(n)})})}async static(e,t){let r=[],i=this._readerStream.static(e,t);return new Promise((n,s)=>{i.once("error",s),i.on("data",a=>r.push(a)),i.once("end",()=>n(r))})}};A0.default=e0});var Eq=p(r0=>{"use strict";Object.defineProperty(r0,"__esModule",{value:!0});var tc=Gn(),t0=class{constructor(e,t,r){this._patterns=e,this._settings=t,this._micromatchOptions=r,this._storage=[],this._fillStorage()}_fillStorage(){let e=tc.pattern.expandPatternsWithBraceExpansion(this._patterns);for(let t of e){let r=this._getPatternSegments(t),i=this._splitSegmentsIntoSections(r);this._storage.push({complete:i.length<=1,pattern:t,segments:r,sections:i})}}_getPatternSegments(e){return tc.pattern.getPatternParts(e,this._micromatchOptions).map(r=>tc.pattern.isDynamicPattern(r,this._settings)?{dynamic:!0,pattern:r,patternRe:tc.pattern.makeRe(r,this._micromatchOptions)}:{dynamic:!1,pattern:r})}_splitSegmentsIntoSections(e){return tc.array.splitWhen(e,t=>t.dynamic&&tc.pattern.hasGlobStar(t.pattern))}};r0.default=t0});var Bq=p(n0=>{"use strict";Object.defineProperty(n0,"__esModule",{value:!0});var LCe=Eq(),i0=class extends LCe.default{match(e){let t=e.split("/"),r=t.length,i=this._storage.filter(n=>!n.complete||n.segments.length>r);for(let n of i){let s=n.sections[0];if(!n.complete&&r>s.length||t.every((g,c)=>{let l=n.segments[c];return!!(l.dynamic&&l.patternRe.test(g)||!l.dynamic&&l.pattern===g)}))return!0}return!1}};n0.default=i0});var pq=p(o0=>{"use strict";Object.defineProperty(o0,"__esModule",{value:!0});var Gf=Gn(),PCe=Bq(),s0=class{constructor(e,t){this._settings=e,this._micromatchOptions=t}getFilter(e,t,r){let i=this._getMatcher(t),n=this._getNegativePatternsRe(r);return s=>this._filter(e,s,i,n)}_getMatcher(e){return new PCe.default(e,this._settings,this._micromatchOptions)}_getNegativePatternsRe(e){let t=e.filter(Gf.pattern.isAffectDepthOfReadingPattern);return Gf.pattern.convertPatternsToRe(t,this._micromatchOptions)}_filter(e,t,r,i){if(this._isSkippedByDeep(e,t.path)||this._isSkippedSymbolicLink(t))return!1;let n=Gf.path.removeLeadingDotSegment(t.path);return this._isSkippedByPositivePatterns(n,r)?!1:this._isSkippedByNegativePatterns(n,i)}_isSkippedByDeep(e,t){return this._settings.deep===1/0?!1:this._getEntryLevel(e,t)>=this._settings.deep}_getEntryLevel(e,t){let r=t.split("/").length;if(e==="")return r;let i=e.split("/").length;return r-i}_isSkippedSymbolicLink(e){return!this._settings.followSymbolicLinks&&e.dirent.isSymbolicLink()}_isSkippedByPositivePatterns(e,t){return!this._settings.baseNameMatch&&!t.match(e)}_isSkippedByNegativePatterns(e,t){return!Gf.pattern.matchAny(e,t)}};o0.default=s0});var Qq=p(g0=>{"use strict";Object.defineProperty(g0,"__esModule",{value:!0});var oa=Gn(),a0=class{constructor(e,t){this._settings=e,this._micromatchOptions=t,this.index=new Map}getFilter(e,t){let r=oa.pattern.convertPatternsToRe(e,this._micromatchOptions),i=oa.pattern.convertPatternsToRe(t,this._micromatchOptions);return n=>this._filter(n,r,i)}_filter(e,t,r){if(this._settings.unique&&this._isDuplicateEntry(e)||this._onlyFileFilter(e)||this._onlyDirectoryFilter(e)||this._isSkippedByAbsoluteNegativePatterns(e.path,r))return!1;let i=this._settings.baseNameMatch?e.name:e.path,n=e.dirent.isDirectory(),s=this._isMatchToPatterns(i,t,n)&&!this._isMatchToPatterns(e.path,r,n);return this._settings.unique&&s&&this._createIndexRecord(e),s}_isDuplicateEntry(e){return this.index.has(e.path)}_createIndexRecord(e){this.index.set(e.path,void 0)}_onlyFileFilter(e){return this._settings.onlyFiles&&!e.dirent.isFile()}_onlyDirectoryFilter(e){return this._settings.onlyDirectories&&!e.dirent.isDirectory()}_isSkippedByAbsoluteNegativePatterns(e,t){if(!this._settings.absolute)return!1;let r=oa.path.makeAbsolute(this._settings.cwd,e);return oa.pattern.matchAny(r,t)}_isMatchToPatterns(e,t,r){let i=oa.path.removeLeadingDotSegment(e),n=oa.pattern.matchAny(i,t);return!n&&r?oa.pattern.matchAny(i+"/",t):n}};g0.default=a0});var dq=p(l0=>{"use strict";Object.defineProperty(l0,"__esModule",{value:!0});var OCe=Gn(),c0=class{constructor(e){this._settings=e}getFilter(){return e=>this._isNonFatalError(e)}_isNonFatalError(e){return OCe.errno.isEnoentCodeError(e)||this._settings.suppressErrors}};l0.default=c0});var mq=p(C0=>{"use strict";Object.defineProperty(C0,"__esModule",{value:!0});var yq=Gn(),u0=class{constructor(e){this._settings=e}getTransformer(){return e=>this._transform(e)}_transform(e){let t=e.path;return this._settings.absolute&&(t=yq.path.makeAbsolute(this._settings.cwd,t),t=yq.path.unixify(t)),this._settings.markDirectories&&e.dirent.isDirectory()&&(t+="/"),this._settings.objectMode?Object.assign(Object.assign({},e),{path:t}):t}};C0.default=u0});var Yf=p(f0=>{"use strict";Object.defineProperty(f0,"__esModule",{value:!0});var KCe=require("path"),UCe=pq(),TCe=Qq(),qCe=dq(),GCe=mq(),h0=class{constructor(e){this._settings=e,this.errorFilter=new qCe.default(this._settings),this.entryFilter=new TCe.default(this._settings,this._getMicromatchOptions()),this.deepFilter=new UCe.default(this._settings,this._getMicromatchOptions()),this.entryTransformer=new GCe.default(this._settings)}_getRootDirectory(e){return KCe.resolve(this._settings.cwd,e.base)}_getReaderOptions(e){let t=e.base==="."?"":e.base;return{basePath:t,pathSegmentSeparator:"/",concurrency:this._settings.concurrency,deepFilter:this.deepFilter.getFilter(t,e.positive,e.negative),entryFilter:this.entryFilter.getFilter(e.positive,e.negative),errorFilter:this.errorFilter.getFilter(),followSymbolicLinks:this._settings.followSymbolicLinks,fs:this._settings.fs,stats:this._settings.stats,throwErrorOnBrokenSymbolicLink:this._settings.throwErrorOnBrokenSymbolicLink,transform:this.entryTransformer.getTransformer()}}_getMicromatchOptions(){return{dot:this._settings.dot,matchBase:this._settings.baseNameMatch,nobrace:!this._settings.braceExpansion,nocase:!this._settings.caseSensitiveMatch,noext:!this._settings.extglob,noglobstar:!this._settings.globstar,posix:!0,strictSlashes:!1}}};f0.default=h0});var wq=p(E0=>{"use strict";Object.defineProperty(E0,"__esModule",{value:!0});var YCe=Iq(),_Ce=Yf(),I0=class extends _Ce.default{constructor(){super(...arguments),this._reader=new YCe.default(this._settings)}async read(e){let t=this._getRootDirectory(e),r=this._getReaderOptions(e);return(await this.api(t,e,r)).map(n=>r.transform(n))}api(e,t,r){return t.dynamic?this._reader.dynamic(e,r):this._reader.static(t.patterns,r)}};E0.default=I0});var Dq=p(p0=>{"use strict";Object.defineProperty(p0,"__esModule",{value:!0});var HCe=require("stream"),JCe=$y(),jCe=Yf(),B0=class extends jCe.default{constructor(){super(...arguments),this._reader=new JCe.default(this._settings)}read(e){let t=this._getRootDirectory(e),r=this._getReaderOptions(e),i=this.api(t,e,r),n=new HCe.Readable({objectMode:!0,read:()=>{}});return i.once("error",s=>n.emit("error",s)).on("data",s=>n.emit("data",r.transform(s))).once("end",()=>n.emit("end")),n.once("close",()=>i.destroy()),n}api(e,t,r){return t.dynamic?this._reader.dynamic(e,r):this._reader.static(t.patterns,r)}};p0.default=B0});var Sq=p(d0=>{"use strict";Object.defineProperty(d0,"__esModule",{value:!0});var WCe=sa(),zCe=Tf(),VCe=qf(),Q0=class extends VCe.default{constructor(){super(...arguments),this._walkSync=zCe.walkSync,this._statSync=WCe.statSync}dynamic(e,t){return this._walkSync(e,t)}static(e,t){let r=[];for(let i of e){let n=this._getFullEntryPath(i),s=this._getEntry(n,i,t);s===null||!t.entryFilter(s)||r.push(s)}return r}_getEntry(e,t,r){try{let i=this._getStat(e);return this._makeEntry(i,t)}catch(i){if(r.errorFilter(i))return null;throw i}}_getStat(e){return this._statSync(e,this._fsStatSettings)}};d0.default=Q0});var Fq=p(m0=>{"use strict";Object.defineProperty(m0,"__esModule",{value:!0});var XCe=Sq(),ZCe=Yf(),y0=class extends ZCe.default{constructor(){super(...arguments),this._reader=new XCe.default(this._settings)}read(e){let t=this._getRootDirectory(e),r=this._getReaderOptions(e);return this.api(t,e,r).map(r.transform)}api(e,t,r){return t.dynamic?this._reader.dynamic(e,r):this._reader.static(t.patterns,r)}};m0.default=y0});var xq=p(ic=>{"use strict";Object.defineProperty(ic,"__esModule",{value:!0});ic.DEFAULT_FILE_SYSTEM_ADAPTER=void 0;var rc=require("fs"),$Ce=require("os"),ehe=Math.max($Ce.cpus().length,1);ic.DEFAULT_FILE_SYSTEM_ADAPTER={lstat:rc.lstat,lstatSync:rc.lstatSync,stat:rc.stat,statSync:rc.statSync,readdir:rc.readdir,readdirSync:rc.readdirSync};var w0=class{constructor(e={}){this._options=e,this.absolute=this._getValue(this._options.absolute,!1),this.baseNameMatch=this._getValue(this._options.baseNameMatch,!1),this.braceExpansion=this._getValue(this._options.braceExpansion,!0),this.caseSensitiveMatch=this._getValue(this._options.caseSensitiveMatch,!0),this.concurrency=this._getValue(this._options.concurrency,ehe),this.cwd=this._getValue(this._options.cwd,process.cwd()),this.deep=this._getValue(this._options.deep,1/0),this.dot=this._getValue(this._options.dot,!1),this.extglob=this._getValue(this._options.extglob,!0),this.followSymbolicLinks=this._getValue(this._options.followSymbolicLinks,!0),this.fs=this._getFileSystemMethods(this._options.fs),this.globstar=this._getValue(this._options.globstar,!0),this.ignore=this._getValue(this._options.ignore,[]),this.markDirectories=this._getValue(this._options.markDirectories,!1),this.objectMode=this._getValue(this._options.objectMode,!1),this.onlyDirectories=this._getValue(this._options.onlyDirectories,!1),this.onlyFiles=this._getValue(this._options.onlyFiles,!0),this.stats=this._getValue(this._options.stats,!1),this.suppressErrors=this._getValue(this._options.suppressErrors,!1),this.throwErrorOnBrokenSymbolicLink=this._getValue(this._options.throwErrorOnBrokenSymbolicLink,!1),this.unique=this._getValue(this._options.unique,!0),this.onlyDirectories&&(this.onlyFiles=!1),this.stats&&(this.objectMode=!0)}_getValue(e,t){return e===void 0?t:e}_getFileSystemMethods(e={}){return Object.assign(Object.assign({},ic.DEFAULT_FILE_SYSTEM_ADAPTER),e)}};ic.default=w0});var _f=p((hMe,kq)=>{"use strict";var Rq=xT(),bq=bT(),Ahe=wq(),the=Dq(),rhe=Fq(),D0=xq(),aa=Gn();async function S0(A,e){nc(A);let t=F0(A,Ahe.default,e),r=await Promise.all(t);return aa.array.flatten(r)}(function(A){function e(s,a){nc(s);let g=F0(s,rhe.default,a);return aa.array.flatten(g)}A.sync=e;function t(s,a){nc(s);let g=F0(s,the.default,a);return aa.stream.merge(g)}A.stream=t;function r(s,a){nc(s);let g=bq.transform([].concat(s)),c=new D0.default(a);return Rq.generate(g,c)}A.generateTasks=r;function i(s,a){nc(s);let g=new D0.default(a);return aa.pattern.isDynamicPattern(s,g)}A.isDynamicPattern=i;function n(s){return nc(s),aa.path.escape(s)}A.escapePath=n})(S0||(S0={}));function F0(A,e,t){let r=bq.transform([].concat(A)),i=new D0.default(t),n=Rq.generate(r,i),s=new e(i);return n.map(s.read,s)}function nc(A){if(![].concat(A).every(r=>aa.string.isString(r)&&!aa.string.isEmpty(r)))throw new TypeError("Patterns must be a string (non empty) or an array of strings")}kq.exports=S0});var Nq=p(ga=>{"use strict";var{promisify:ihe}=require("util"),vq=require("fs");async function x0(A,e,t){if(typeof t!="string")throw new TypeError(`Expected a string, got ${typeof t}`);try{return(await ihe(vq[A])(t))[e]()}catch(r){if(r.code==="ENOENT")return!1;throw r}}function R0(A,e,t){if(typeof t!="string")throw new TypeError(`Expected a string, got ${typeof t}`);try{return vq[A](t)[e]()}catch(r){if(r.code==="ENOENT")return!1;throw r}}ga.isFile=x0.bind(null,"stat","isFile");ga.isDirectory=x0.bind(null,"stat","isDirectory");ga.isSymlink=x0.bind(null,"lstat","isSymbolicLink");ga.isFileSync=R0.bind(null,"statSync","isFile");ga.isDirectorySync=R0.bind(null,"statSync","isDirectory");ga.isSymlinkSync=R0.bind(null,"lstatSync","isSymbolicLink")});var Kq=p((IMe,b0)=>{"use strict";var ca=require("path"),Mq=Nq(),Lq=A=>A.length>1?`{${A.join(",")}}`:A[0],Pq=(A,e)=>{let t=A[0]==="!"?A.slice(1):A;return ca.isAbsolute(t)?t:ca.join(e,t)},nhe=(A,e)=>ca.extname(A)?`**/${A}`:`**/${A}.${Lq(e)}`,Oq=(A,e)=>{if(e.files&&!Array.isArray(e.files))throw new TypeError(`Expected \`files\` to be of type \`Array\` but received type \`${typeof e.files}\``);if(e.extensions&&!Array.isArray(e.extensions))throw new TypeError(`Expected \`extensions\` to be of type \`Array\` but received type \`${typeof e.extensions}\``);return e.files&&e.extensions?e.files.map(t=>ca.posix.join(A,nhe(t,e.extensions))):e.files?e.files.map(t=>ca.posix.join(A,`**/${t}`)):e.extensions?[ca.posix.join(A,`**/*.${Lq(e.extensions)}`)]:[ca.posix.join(A,"**")]};b0.exports=async(A,e)=>{if(e={cwd:process.cwd(),...e},typeof e.cwd!="string")throw new TypeError(`Expected \`cwd\` to be of type \`string\` but received type \`${typeof e.cwd}\``);let t=await Promise.all([].concat(A).map(async r=>await Mq.isDirectory(Pq(r,e.cwd))?Oq(r,e):r));return[].concat.apply([],t)};b0.exports.sync=(A,e)=>{if(e={cwd:process.cwd(),...e},typeof e.cwd!="string")throw new TypeError(`Expected \`cwd\` to be of type \`string\` but received type \`${typeof e.cwd}\``);let t=[].concat(A).map(r=>Mq.isDirectorySync(Pq(r,e.cwd))?Oq(r,e):r);return[].concat.apply([],t)}});var jq=p((EMe,Jq)=>{function Uq(A){return Array.isArray(A)?A:[A]}var Yq="",Tq=" ",k0="\\",she=/^\s+$/,ohe=/^\\!/,ahe=/^\\#/,ghe=/\r?\n/g,che=/^\.*\/|^\.+$/,v0="/",qq=typeof Symbol<"u"?Symbol.for("node-ignore"):"node-ignore",lhe=(A,e,t)=>Object.defineProperty(A,e,{value:t}),uhe=/([0-z])-([0-z])/g,_q=()=>!1,Che=A=>A.replace(uhe,(e,t,r)=>t.charCodeAt(0)<=r.charCodeAt(0)?e:Yq),hhe=A=>{let{length:e}=A;return A.slice(0,e-e%2)},fhe=[[/\\?\s+$/,A=>A.indexOf("\\")===0?Tq:Yq],[/\\\s/g,()=>Tq],[/[\\$.|*+(){^]/g,A=>`\\${A}`],[/(?!\\)\?/g,()=>"[^/]"],[/^\//,()=>"^"],[/\//g,()=>"\\/"],[/^\^*\\\*\\\*\\\//,()=>"^(?:.*\\/)?"],[/^(?=[^^])/,function(){return/\/(?!$)/.test(this)?"^":"(?:^|\\/)"}],[/\\\/\\\*\\\*(?=\\\/|$)/g,(A,e,t)=>e+6`${e}[^\\/]*`],[/\\\\\\(?=[$.|*+(){^])/g,()=>k0],[/\\\\/g,()=>k0],[/(\\)?\[([^\]/]*?)(\\*)($|\])/g,(A,e,t,r,i)=>e===k0?`\\[${t}${hhe(r)}${i}`:i==="]"&&r.length%2===0?`[${Che(t)}${r}]`:"[]"],[/(?:[^*])$/,A=>/\/$/.test(A)?`${A}$`:`${A}(?=$|\\/$)`],[/(\^|\\\/)?\\\*$/,(A,e)=>`${e?`${e}[^/]+`:"[^/]*"}(?=$|\\/$)`]],Gq=Object.create(null),Ihe=(A,e)=>{let t=Gq[A];return t||(t=fhe.reduce((r,i)=>r.replace(i[0],i[1].bind(A)),A),Gq[A]=t),e?new RegExp(t,"i"):new RegExp(t)},L0=A=>typeof A=="string",Ehe=A=>A&&L0(A)&&!she.test(A)&&A.indexOf("#")!==0,Bhe=A=>A.split(ghe),N0=class{constructor(e,t,r,i){this.origin=e,this.pattern=t,this.negative=r,this.regex=i}},phe=(A,e)=>{let t=A,r=!1;A.indexOf("!")===0&&(r=!0,A=A.substr(1)),A=A.replace(ohe,"!").replace(ahe,"#");let i=Ihe(A,e);return new N0(t,A,r,i)},Qhe=(A,e)=>{throw new e(A)},_n=(A,e,t)=>L0(A)?A?_n.isNotRelative(A)?t(`path should be a \`path.relative()\`d string, but got "${e}"`,RangeError):!0:t("path must not be empty",TypeError):t(`path must be a string, but got \`${e}\``,TypeError),Hq=A=>che.test(A);_n.isNotRelative=Hq;_n.convert=A=>A;var M0=class{constructor({ignorecase:e=!0,ignoreCase:t=e,allowRelativePaths:r=!1}={}){lhe(this,qq,!0),this._rules=[],this._ignoreCase=t,this._allowRelativePaths=r,this._initCache()}_initCache(){this._ignoreCache=Object.create(null),this._testCache=Object.create(null)}_addPattern(e){if(e&&e[qq]){this._rules=this._rules.concat(e._rules),this._added=!0;return}if(Ehe(e)){let t=phe(e,this._ignoreCase);this._added=!0,this._rules.push(t)}}add(e){return this._added=!1,Uq(L0(e)?Bhe(e):e).forEach(this._addPattern,this),this._added&&this._initCache(),this}addPattern(e){return this.add(e)}_testOne(e,t){let r=!1,i=!1;return this._rules.forEach(n=>{let{negative:s}=n;if(i===s&&r!==i||s&&!r&&!i&&!t)return;n.regex.test(e)&&(r=!s,i=s)}),{ignored:r,unignored:i}}_test(e,t,r,i){let n=e&&_n.convert(e);return _n(n,e,this._allowRelativePaths?_q:Qhe),this._t(n,t,r,i)}_t(e,t,r,i){if(e in t)return t[e];if(i||(i=e.split(v0)),i.pop(),!i.length)return t[e]=this._testOne(e,r);let n=this._t(i.join(v0)+v0,t,r,i);return t[e]=n.ignored?n:this._testOne(e,r)}ignores(e){return this._test(e,this._ignoreCache,!1).ignored}createFilter(){return e=>!this.ignores(e)}filter(e){return Uq(e).filter(this.createFilter())}test(e){return this._test(e,this._testCache,!0)}},Hf=A=>new M0(A),dhe=A=>_n(A&&_n.convert(A),A,_q);Hf.isPathValid=dhe;Hf.default=Hf;Jq.exports=Hf;if(typeof process<"u"&&(process.env&&process.env.IGNORE_TEST_WIN32||process.platform==="win32")){let A=t=>/^\\\\\?\\/.test(t)||/["<>|\u0000-\u001F]+/u.test(t)?t:t.replace(/\\/g,"/");_n.convert=A;let e=/^[a-z]:\//i;_n.isNotRelative=t=>e.test(t)||Hq(t)}});var zq=p((BMe,Wq)=>{"use strict";Wq.exports=A=>{let e=/^\\\\\?\\/.test(A),t=/[^\u0000-\u0080]+/.test(A);return e||t?A:A.replace(/\\/g,"/")}});var tG=p((pMe,P0)=>{"use strict";var{promisify:yhe}=require("util"),Vq=require("fs"),Hn=require("path"),Xq=_f(),mhe=jq(),Cu=zq(),Zq=["**/node_modules/**","**/flow-typed/**","**/coverage/**","**/.git"],whe=yhe(Vq.readFile),Dhe=A=>e=>e.startsWith("!")?"!"+Hn.posix.join(A,e.slice(1)):Hn.posix.join(A,e),She=(A,e)=>{let t=Cu(Hn.relative(e.cwd,Hn.dirname(e.fileName)));return A.split(/\r?\n/).filter(Boolean).filter(r=>!r.startsWith("#")).map(Dhe(t))},$q=A=>{let e=mhe();for(let t of A)e.add(She(t.content,{cwd:t.cwd,fileName:t.filePath}));return e},Fhe=(A,e)=>{if(A=Cu(A),Hn.isAbsolute(e)){if(Cu(e).startsWith(A))return e;throw new Error(`Path ${e} is not in cwd ${A}`)}return Hn.join(A,e)},eG=(A,e)=>t=>A.ignores(Cu(Hn.relative(e,Fhe(e,t.path||t)))),xhe=async(A,e)=>{let t=Hn.join(e,A),r=await whe(t,"utf8");return{cwd:e,filePath:t,content:r}},Rhe=(A,e)=>{let t=Hn.join(e,A),r=Vq.readFileSync(t,"utf8");return{cwd:e,filePath:t,content:r}},AG=({ignore:A=[],cwd:e=Cu(process.cwd())}={})=>({ignore:A,cwd:e});P0.exports=async A=>{A=AG(A);let e=await Xq("**/.gitignore",{ignore:Zq.concat(A.ignore),cwd:A.cwd}),t=await Promise.all(e.map(i=>xhe(i,A.cwd))),r=$q(t);return eG(r,A.cwd)};P0.exports.sync=A=>{A=AG(A);let t=Xq.sync("**/.gitignore",{ignore:Zq.concat(A.ignore),cwd:A.cwd}).map(i=>Rhe(i,A.cwd)),r=$q(t);return eG(r,A.cwd)}});var iG=p((QMe,rG)=>{"use strict";var{Transform:bhe}=require("stream"),Jf=class extends bhe{constructor(){super({objectMode:!0})}},O0=class extends Jf{constructor(e){super(),this._filter=e}_transform(e,t,r){this._filter(e)&&this.push(e),r()}},K0=class extends Jf{constructor(){super(),this._pushed=new Set}_transform(e,t,r){this._pushed.has(e)||(this.push(e),this._pushed.add(e)),r()}};rG.exports={FilterStream:O0,UniqueStream:K0}});var G0=p((dMe,la)=>{"use strict";var sG=require("fs"),jf=eT(),khe=ay(),Wf=_f(),zf=Kq(),U0=tG(),{FilterStream:vhe,UniqueStream:Nhe}=iG(),oG=()=>!1,nG=A=>A[0]==="!",Mhe=A=>{if(!A.every(e=>typeof e=="string"))throw new TypeError("Patterns must be a string or an array of strings")},Lhe=(A={})=>{if(!A.cwd)return;let e;try{e=sG.statSync(A.cwd)}catch{return}if(!e.isDirectory())throw new Error("The `cwd` option must be a path to a directory")},Phe=A=>A.stats instanceof sG.Stats?A.path:A,Vf=(A,e)=>{A=jf([].concat(A)),Mhe(A),Lhe(e);let t=[];e={ignore:[],expandDirectories:!0,...e};for(let[r,i]of A.entries()){if(nG(i))continue;let n=A.slice(r).filter(a=>nG(a)).map(a=>a.slice(1)),s={...e,ignore:e.ignore.concat(n)};t.push({pattern:i,options:s})}return t},Ohe=(A,e)=>{let t={};return A.options.cwd&&(t.cwd=A.options.cwd),Array.isArray(A.options.expandDirectories)?t={...t,files:A.options.expandDirectories}:typeof A.options.expandDirectories=="object"&&(t={...t,...A.options.expandDirectories}),e(A.pattern,t)},T0=(A,e)=>A.options.expandDirectories?Ohe(A,e):[A.pattern],aG=A=>A&&A.gitignore?U0.sync({cwd:A.cwd,ignore:A.ignore}):oG,q0=A=>e=>{let{options:t}=A;return t.ignore&&Array.isArray(t.ignore)&&t.expandDirectories&&(t.ignore=zf.sync(t.ignore)),{pattern:e,options:t}};la.exports=async(A,e)=>{let t=Vf(A,e),r=async()=>e&&e.gitignore?U0({cwd:e.cwd,ignore:e.ignore}):oG,i=async()=>{let g=await Promise.all(t.map(async c=>{let l=await T0(c,zf);return Promise.all(l.map(q0(c)))}));return jf(...g)},[n,s]=await Promise.all([r(),i()]),a=await Promise.all(s.map(g=>Wf(g.pattern,g.options)));return jf(...a).filter(g=>!n(Phe(g)))};la.exports.sync=(A,e)=>{let t=Vf(A,e),r=[];for(let s of t){let a=T0(s,zf.sync).map(q0(s));r.push(...a)}let i=aG(e),n=[];for(let s of r)n=jf(n,Wf.sync(s.pattern,s.options));return n.filter(s=>!i(s))};la.exports.stream=(A,e)=>{let t=Vf(A,e),r=[];for(let a of t){let g=T0(a,zf.sync).map(q0(a));r.push(...g)}let i=aG(e),n=new vhe(a=>!i(a)),s=new Nhe;return khe(r.map(a=>Wf.stream(a.pattern,a.options))).pipe(n).pipe(s)};la.exports.generateGlobTasks=Vf;la.exports.hasMagic=(A,e)=>[].concat(A).some(t=>Wf.isDynamicPattern(t,e));la.exports.gitignore=U0});var Us=p(Ks=>{"use strict";Object.defineProperty(Ks,"__esModule",{value:!0});Ks.checksumPattern=Ks.checksumFile=Ks.makeHash=void 0;var Khe=nA(),ua=BA(),Y0=require("crypto"),gG=Khe.__importDefault(G0());function Uhe(...A){let e=(0,Y0.createHash)("sha512"),t="";for(let r of A)typeof r=="string"?t+=r:r&&(t&&(e.update(t),t=""),e.update(r));return t&&e.update(t),e.digest("hex")}Ks.makeHash=Uhe;async function The(A,{baseFs:e,algorithm:t}={baseFs:ua.xfs,algorithm:"sha512"}){let r=await e.openPromise(A,"r");try{let n=Buffer.allocUnsafeSlow(65536),s=(0,Y0.createHash)(t),a=0;for(;(a=await e.readPromise(r,n,0,65536))!==0;)s.update(a===65536?n:n.slice(0,a));return s.digest("hex")}finally{await e.closePromise(r)}}Ks.checksumFile=The;async function qhe(A,{cwd:e}){let r=(await(0,gG.default)(A,{cwd:ua.npath.fromPortablePath(e),expandDirectories:!1,onlyDirectories:!0,unique:!0})).map(a=>`${a}/**/*`),i=await(0,gG.default)([A,...r],{cwd:ua.npath.fromPortablePath(e),expandDirectories:!1,onlyFiles:!1,unique:!0});i.sort();let n=await Promise.all(i.map(async a=>{let g=[Buffer.from(a)],c=ua.npath.toPortablePath(a),l=await ua.xfs.lstatPromise(c);return l.isSymbolicLink()?g.push(Buffer.from(await ua.xfs.readlinkPromise(c))):l.isFile()&&g.push(await ua.xfs.readFilePromise(c)),g.join("\0")})),s=(0,Y0.createHash)("sha512");for(let a of n)s.update(a);return s.digest("hex")}Ks.checksumPattern=qhe});var Dt=p(ce=>{"use strict";Object.defineProperty(ce,"__esModule",{value:!0});ce.getIdentVendorPath=ce.prettyDependent=ce.prettyResolution=ce.prettyWorkspace=ce.sortDescriptors=ce.prettyLocatorNoColors=ce.prettyLocator=ce.prettyReference=ce.prettyDescriptor=ce.prettyRange=ce.prettyIdent=ce.slugifyLocator=ce.slugifyIdent=ce.stringifyLocator=ce.stringifyDescriptor=ce.stringifyIdent=ce.convertToManifestRange=ce.makeRange=ce.parseFileStyleRange=ce.tryParseRange=ce.parseRange=ce.tryParseLocator=ce.parseLocator=ce.tryParseDescriptor=ce.parseDescriptor=ce.tryParseIdent=ce.parseIdent=ce.areVirtualPackagesEquivalent=ce.areLocatorsEqual=ce.areDescriptorsEqual=ce.areIdentsEqual=ce.bindLocator=ce.bindDescriptor=ce.ensureDevirtualizedLocator=ce.ensureDevirtualizedDescriptor=ce.devirtualizeLocator=ce.devirtualizeDescriptor=ce.isVirtualLocator=ce.isVirtualDescriptor=ce.virtualizePackage=ce.virtualizeDescriptor=ce.copyPackage=ce.renamePackage=ce.convertPackageToLocator=ce.convertLocatorToDescriptor=ce.convertDescriptorToLocator=ce.convertToIdent=ce.makeLocator=ce.makeDescriptor=ce.makeIdent=void 0;ce.isPackageCompatible=void 0;var sc=nA(),Ghe=BA(),fu=sc.__importDefault(require("querystring")),Yhe=sc.__importDefault(Zo()),_he=D1(),zt=sc.__importStar(ti()),H0=sc.__importStar(Us()),Hhe=sc.__importStar(br()),Xf=sc.__importStar(Dt()),hu="virtual:",Jhe=5,lG=/(os|cpu|libc)=([a-z0-9_-]+)/,jhe=(0,_he.makeParser)(lG);function $f(A,e){if(A?.startsWith("@"))throw new Error("Invalid scope: don't prefix it with '@'");return{identHash:H0.makeHash(A,e),scope:A,name:e}}ce.makeIdent=$f;function oc(A,e){return{identHash:A.identHash,scope:A.scope,name:A.name,descriptorHash:H0.makeHash(A.identHash,e),range:e}}ce.makeDescriptor=oc;function ac(A,e){return{identHash:A.identHash,scope:A.scope,name:A.name,locatorHash:H0.makeHash(A.identHash,e),reference:e}}ce.makeLocator=ac;function Whe(A){return{identHash:A.identHash,scope:A.scope,name:A.name}}ce.convertToIdent=Whe;function zhe(A){return{identHash:A.identHash,scope:A.scope,name:A.name,locatorHash:A.descriptorHash,reference:A.range}}ce.convertDescriptorToLocator=zhe;function Vhe(A){return{identHash:A.identHash,scope:A.scope,name:A.name,descriptorHash:A.locatorHash,range:A.reference}}ce.convertLocatorToDescriptor=Vhe;function Xhe(A){return{identHash:A.identHash,scope:A.scope,name:A.name,locatorHash:A.locatorHash,reference:A.reference}}ce.convertPackageToLocator=Xhe;function J0(A,e){return{identHash:e.identHash,scope:e.scope,name:e.name,locatorHash:e.locatorHash,reference:e.reference,version:A.version,languageName:A.languageName,linkType:A.linkType,conditions:A.conditions,dependencies:new Map(A.dependencies),peerDependencies:new Map(A.peerDependencies),dependenciesMeta:new Map(A.dependenciesMeta),peerDependenciesMeta:new Map(A.peerDependenciesMeta),bin:new Map(A.bin)}}ce.renamePackage=J0;function Zhe(A){return J0(A,A)}ce.copyPackage=Zhe;function $he(A,e){if(e.includes("#"))throw new Error("Invalid entropy");return oc(A,`virtual:${e}#${A.range}`)}ce.virtualizeDescriptor=$he;function efe(A,e){if(e.includes("#"))throw new Error("Invalid entropy");return J0(A,ac(A,`virtual:${e}#${A.reference}`))}ce.virtualizePackage=efe;function eI(A){return A.range.startsWith(hu)}ce.isVirtualDescriptor=eI;function Iu(A){return A.reference.startsWith(hu)}ce.isVirtualLocator=Iu;function uG(A){if(!eI(A))throw new Error("Not a virtual descriptor");return oc(A,A.range.replace(/^[^#]*#/,""))}ce.devirtualizeDescriptor=uG;function Afe(A){if(!Iu(A))throw new Error("Not a virtual descriptor");return ac(A,A.reference.replace(/^[^#]*#/,""))}ce.devirtualizeLocator=Afe;function tfe(A){return eI(A)?oc(A,A.range.replace(/^[^#]*#/,"")):A}ce.ensureDevirtualizedDescriptor=tfe;function rfe(A){return Iu(A)?ac(A,A.reference.replace(/^[^#]*#/,"")):A}ce.ensureDevirtualizedLocator=rfe;function ife(A,e){return A.range.includes("::")?A:oc(A,`${A.range}::${fu.default.stringify(e)}`)}ce.bindDescriptor=ife;function nfe(A,e){return A.reference.includes("::")?A:ac(A,`${A.reference}::${fu.default.stringify(e)}`)}ce.bindLocator=nfe;function CG(A,e){return A.identHash===e.identHash}ce.areIdentsEqual=CG;function hG(A,e){return A.descriptorHash===e.descriptorHash}ce.areDescriptorsEqual=hG;function sfe(A,e){return A.locatorHash===e.locatorHash}ce.areLocatorsEqual=sfe;function ofe(A,e){if(!Iu(A))throw new Error("Invalid package type");if(!Iu(e))throw new Error("Invalid package type");if(!CG(A,e)||A.dependencies.size!==e.dependencies.size)return!1;for(let t of A.dependencies.values()){let r=e.dependencies.get(t.identHash);if(!r||!hG(t,r))return!1}return!0}ce.areVirtualPackagesEquivalent=ofe;function afe(A){let e=fG(A);if(!e)throw new Error(`Invalid ident (${A})`);return e}ce.parseIdent=afe;function fG(A){let e=A.match(/^(?:@([^/]+?)\/)?([^/]+)$/);if(!e)return null;let[,t,r]=e;return $f(typeof t<"u"?t:null,r)}ce.tryParseIdent=fG;function gfe(A,e=!1){let t=IG(A,e);if(!t)throw new Error(`Invalid descriptor (${A})`);return t}ce.parseDescriptor=gfe;function IG(A,e=!1){let t=e?A.match(/^(?:@([^/]+?)\/)?([^/]+?)(?:@(.+))$/):A.match(/^(?:@([^/]+?)\/)?([^/]+?)(?:@(.+))?$/);if(!t)return null;let[,r,i,n]=t;if(n==="unknown")throw new Error(`Invalid range (${A})`);let s=typeof r<"u"?r:null,a=typeof n<"u"?n:"unknown";return oc($f(s,i),a)}ce.tryParseDescriptor=IG;function EG(A,e=!1){let t=BG(A,e);if(!t)throw new Error(`Invalid locator (${A})`);return t}ce.parseLocator=EG;function BG(A,e=!1){let t=e?A.match(/^(?:@([^/]+?)\/)?([^/]+?)(?:@(.+))$/):A.match(/^(?:@([^/]+?)\/)?([^/]+?)(?:@(.+))?$/);if(!t)return null;let[,r,i,n]=t;if(n==="unknown")throw new Error(`Invalid reference (${A})`);let s=typeof r<"u"?r:null,a=typeof n<"u"?n:"unknown";return ac($f(s,i),a)}ce.tryParseLocator=BG;function Eu(A,e){let t=A.match(/^([^#:]*:)?((?:(?!::)[^#])*)(?:#((?:(?!::).)*))?(?:::(.*))?$/);if(t===null)throw new Error(`Invalid range (${A})`);let r=typeof t[1]<"u"?t[1]:null;if(typeof e?.requireProtocol=="string"&&r!==e.requireProtocol)throw new Error(`Invalid protocol (${r})`);if(e?.requireProtocol&&r===null)throw new Error(`Missing protocol (${r})`);let i=typeof t[3]<"u"?decodeURIComponent(t[2]):null;if(e?.requireSource&&i===null)throw new Error(`Missing source (${A})`);let n=typeof t[3]<"u"?decodeURIComponent(t[3]):decodeURIComponent(t[2]),s=e?.parseSelector?fu.default.parse(n):n,a=typeof t[4]<"u"?fu.default.parse(t[4]):null;return{protocol:r,source:i,selector:s,params:a}}ce.parseRange=Eu;function cfe(A,e){try{return Eu(A,e)}catch{return null}}ce.tryParseRange=cfe;function lfe(A,{protocol:e}){let{selector:t,params:r}=Eu(A,{requireProtocol:e,requireBindings:!0});if(typeof r.locator!="string")throw new Error(`Assertion failed: Invalid bindings for ${A}`);return{parentLocator:EG(r.locator,!0),path:t}}ce.parseFileStyleRange=lfe;function cG(A){return A=A.replace(/%/g,"%25"),A=A.replace(/:/g,"%3A"),A=A.replace(/#/g,"%23"),A}function ufe(A){return A===null?!1:Object.entries(A).length>0}function pG({protocol:A,source:e,selector:t,params:r}){let i="";return A!==null&&(i+=`${A}`),e!==null&&(i+=`${cG(e)}#`),i+=cG(t),ufe(r)&&(i+=`::${fu.default.stringify(r)}`),i}ce.makeRange=pG;function Cfe(A){let{params:e,protocol:t,source:r,selector:i}=Eu(A);for(let n in e)n.startsWith("__")&&delete e[n];return pG({protocol:t,source:r,params:e,selector:i})}ce.convertToManifestRange=Cfe;function AI(A){return A.scope?`@${A.scope}/${A.name}`:`${A.name}`}ce.stringifyIdent=AI;function hfe(A){return A.scope?`@${A.scope}/${A.name}@${A.range}`:`${A.name}@${A.range}`}ce.stringifyDescriptor=hfe;function ffe(A){return A.scope?`@${A.scope}/${A.name}@${A.reference}`:`${A.name}@${A.reference}`}ce.stringifyLocator=ffe;function _0(A){return A.scope!==null?`@${A.scope}-${A.name}`:A.name}ce.slugifyIdent=_0;function Ife(A){let{protocol:e,selector:t}=Eu(A.reference),r=e!==null?e.replace(/:$/,""):"exotic",i=Yhe.default.valid(t),n=i!==null?`${r}-${i}`:`${r}`,s=10,a=A.scope?`${_0(A)}-${n}-${A.locatorHash.slice(0,s)}`:`${_0(A)}-${n}-${A.locatorHash.slice(0,s)}`;return(0,Ghe.toFilename)(a)}ce.slugifyLocator=Ife;function tI(A,e){return e.scope?`${zt.pretty(A,`@${e.scope}/`,zt.Type.SCOPE)}${zt.pretty(A,e.name,zt.Type.NAME)}`:`${zt.pretty(A,e.name,zt.Type.NAME)}`}ce.prettyIdent=tI;function rI(A){if(A.startsWith(hu)){let e=rI(A.substring(A.indexOf("#")+1)),t=A.substring(hu.length,hu.length+Jhe);return`${e} [${t}]`}else return A.replace(/\?.*/,"?[...]")}function QG(A,e){return`${zt.pretty(A,rI(e),zt.Type.RANGE)}`}ce.prettyRange=QG;function Efe(A,e){return`${tI(A,e)}${zt.pretty(A,"@",zt.Type.RANGE)}${QG(A,e.range)}`}ce.prettyDescriptor=Efe;function j0(A,e){return`${zt.pretty(A,rI(e),zt.Type.REFERENCE)}`}ce.prettyReference=j0;function Zf(A,e){return`${tI(A,e)}${zt.pretty(A,"@",zt.Type.REFERENCE)}${j0(A,e.reference)}`}ce.prettyLocator=Zf;function Bfe(A){return`${AI(A)}@${rI(A.reference)}`}ce.prettyLocatorNoColors=Bfe;function pfe(A){return Hhe.sortMap(A,[e=>AI(e),e=>e.range])}ce.sortDescriptors=pfe;function Qfe(A,e){return tI(A,e.locator)}ce.prettyWorkspace=Qfe;function dfe(A,e,t){let r=eI(e)?uG(e):e;return t===null?`${Xf.prettyDescriptor(A,r)} \u2192 ${zt.mark(A).Cross}`:r.identHash===t.identHash?`${Xf.prettyDescriptor(A,r)} \u2192 ${j0(A,t.reference)}`:`${Xf.prettyDescriptor(A,r)} \u2192 ${Zf(A,t)}`}ce.prettyResolution=dfe;function yfe(A,e,t){return t===null?`${Zf(A,e)}`:`${Zf(A,e)} (via ${Xf.prettyRange(A,t.range)})`}ce.prettyDependent=yfe;function mfe(A){return`node_modules/${AI(A)}`}ce.getIdentVendorPath=mfe;function wfe(A,e){return A.conditions?jhe(A.conditions,t=>{let[,r,i]=t.match(lG),n=e[r];return n?n.includes(i):!0}):!0}ce.isPackageCompatible=wfe});var dG=p(nI=>{"use strict";Object.defineProperty(nI,"__esModule",{value:!0});nI.CorePlugin=void 0;var Dfe=nA(),Sfe=ar(),iI=Dfe.__importStar(Dt());nI.CorePlugin={hooks:{reduceDependency:(A,e,t,r,{resolver:i,resolveOptions:n})=>{for(let{pattern:s,reference:a}of e.topLevelWorkspace.manifest.resolutions){if(s.from&&s.from.fullName!==iI.stringifyIdent(t)||s.from&&s.from.description&&s.from.description!==t.reference||s.descriptor.fullName!==iI.stringifyIdent(A)||s.descriptor.description&&s.descriptor.description!==A.range)continue;return i.bindDescriptor(e.configuration.normalizeDependency(iI.makeDescriptor(A,a)),e.topLevelWorkspace.anchoredLocator,n)}return A},validateProject:async(A,e)=>{for(let t of A.workspaces){let r=iI.prettyWorkspace(A.configuration,t);await A.configuration.triggerHook(i=>i.validateWorkspace,t,{reportWarning:(i,n)=>e.reportWarning(i,`${r}: ${n}`),reportError:(i,n)=>e.reportError(i,`${r}: ${n}`)})}},validateWorkspace:async(A,e)=>{let{manifest:t}=A;t.resolutions.length&&A.cwd!==A.project.cwd&&t.errors.push(new Error("Resolutions field will be ignored"));for(let r of t.errors)e.reportWarning(Sfe.MessageName.INVALID_MANIFEST,r.message)}}}});var Ca=p(sI=>{"use strict";Object.defineProperty(sI,"__esModule",{value:!0});sI.WorkspaceResolver=void 0;var Ffe=ia(),Ts=class{supportsDescriptor(e,t){return!!(e.range.startsWith(Ts.protocol)||t.project.tryWorkspaceByDescriptor(e)!==null)}supportsLocator(e,t){return!!e.reference.startsWith(Ts.protocol)}shouldPersistResolution(e,t){return!1}bindDescriptor(e,t,r){return e}getResolutionDependencies(e,t){return{}}async getCandidates(e,t,r){return[r.project.getWorkspaceByDescriptor(e).anchoredLocator]}async getSatisfying(e,t,r,i){let[n]=await this.getCandidates(e,t,i);return{locators:r.filter(s=>s.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,t){let r=t.project.getWorkspaceByCwd(e.reference.slice(Ts.protocol.length));return{...e,version:r.manifest.version||"0.0.0",languageName:"unknown",linkType:Ffe.LinkType.SOFT,conditions:null,dependencies:t.project.configuration.normalizeDependencyMap(new Map([...r.manifest.dependencies,...r.manifest.devDependencies])),peerDependencies:new Map([...r.manifest.peerDependencies]),dependenciesMeta:r.manifest.dependenciesMeta,peerDependenciesMeta:r.manifest.peerDependenciesMeta,bin:r.manifest.bin}}};sI.WorkspaceResolver=Ts;Ts.protocol="workspace:"});var qs=p(sn=>{"use strict";Object.defineProperty(sn,"__esModule",{value:!0});sn.clean=sn.validRange=sn.satisfiesWithPrereleases=sn.SemVer=void 0;var xfe=nA(),W0=xfe.__importDefault(Zo()),Rfe=Zo();Object.defineProperty(sn,"SemVer",{enumerable:!0,get:function(){return Rfe.SemVer}});var yG=new Map;function bfe(A,e,t=!1){if(!A)return!1;let r=`${e}${t}`,i=yG.get(r);if(typeof i>"u")try{i=new W0.default.Range(e,{includePrerelease:!0,loose:t})}catch{return!1}finally{yG.set(r,i||null)}else if(i===null)return!1;let n;try{n=new W0.default.SemVer(A,i)}catch{return!1}return i.test(n)?!0:(n.prerelease&&(n.prerelease=[]),i.set.some(s=>{for(let a of s)a.semver.prerelease&&(a.semver.prerelease=[]);return s.every(a=>a.test(n))}))}sn.satisfiesWithPrereleases=bfe;var mG=new Map;function kfe(A){if(A.indexOf(":")!==-1)return null;let e=mG.get(A);if(typeof e<"u")return e;try{e=new W0.default.Range(A)}catch{e=null}return mG.set(A,e),e}sn.validRange=kfe;var vfe=/^(?:[\sv=]*?)((0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?)(?:\s*)$/;function Nfe(A){let e=vfe.exec(A);return e?e[1]:null}sn.clean=Nfe});var gc=p(lI=>{"use strict";Object.defineProperty(lI,"__esModule",{value:!0});lI.Manifest=void 0;var cI=nA(),oI=BA(),wG=wg(),Mfe=cI.__importDefault(Zo()),Lfe=Ca(),gI=cI.__importStar(br()),Pfe=cI.__importStar(qs()),kA=cI.__importStar(Dt()),ki=class{constructor(){this.indent=" ",this.name=null,this.version=null,this.os=null,this.cpu=null,this.libc=null,this.type=null,this.packageManager=null,this.private=!1,this.license=null,this.main=null,this.module=null,this.browser=null,this.languageName=null,this.bin=new Map,this.scripts=new Map,this.dependencies=new Map,this.devDependencies=new Map,this.peerDependencies=new Map,this.workspaceDefinitions=[],this.dependenciesMeta=new Map,this.peerDependenciesMeta=new Map,this.resolutions=[],this.files=null,this.publishConfig=null,this.installConfig=null,this.preferUnplugged=null,this.raw={},this.errors=[]}static async tryFind(e,{baseFs:t=new oI.NodeFS}={}){let r=oI.ppath.join(e,"package.json");try{return await ki.fromFile(r,{baseFs:t})}catch(i){if(i.code==="ENOENT")return null;throw i}}static async find(e,{baseFs:t}={}){let r=await ki.tryFind(e,{baseFs:t});if(r===null)throw new Error("Manifest not found");return r}static async fromFile(e,{baseFs:t=new oI.NodeFS}={}){let r=new ki;return await r.loadFile(e,{baseFs:t}),r}static fromText(e){let t=new ki;return t.loadFromText(e),t}loadFromText(e){let t;try{t=JSON.parse(SG(e)||"{}")}catch(r){throw r.message+=` (when parsing ${e})`,r}this.load(t),this.indent=DG(e)}async loadFile(e,{baseFs:t=new oI.NodeFS}){let r=await t.readFilePromise(e,"utf8"),i;try{i=JSON.parse(SG(r)||"{}")}catch(n){throw n.message+=` (when parsing ${e})`,n}this.load(i),this.indent=DG(r)}load(e,{yamlCompatibilityMode:t=!1}={}){if(typeof e!="object"||e===null)throw new Error(`Utterly invalid manifest data (${e})`);this.raw=e;let r=[];if(this.name=null,typeof e.name=="string")try{this.name=kA.parseIdent(e.name)}catch{r.push(new Error("Parsing failed for the 'name' field"))}if(typeof e.version=="string"?this.version=e.version:this.version=null,Array.isArray(e.os)){let n=[];this.os=n;for(let s of e.os)typeof s!="string"?r.push(new Error("Parsing failed for the 'os' field")):n.push(s)}else this.os=null;if(Array.isArray(e.cpu)){let n=[];this.cpu=n;for(let s of e.cpu)typeof s!="string"?r.push(new Error("Parsing failed for the 'cpu' field")):n.push(s)}else this.cpu=null;if(Array.isArray(e.libc)){let n=[];this.libc=n;for(let s of e.libc)typeof s!="string"?r.push(new Error("Parsing failed for the 'libc' field")):n.push(s)}else this.libc=null;if(typeof e.type=="string"?this.type=e.type:this.type=null,typeof e.packageManager=="string"?this.packageManager=e.packageManager:this.packageManager=null,typeof e.private=="boolean"?this.private=e.private:this.private=!1,typeof e.license=="string"?this.license=e.license:this.license=null,typeof e.languageName=="string"?this.languageName=e.languageName:this.languageName=null,typeof e.main=="string"?this.main=Vt(e.main):this.main=null,typeof e.module=="string"?this.module=Vt(e.module):this.module=null,e.browser!=null)if(typeof e.browser=="string")this.browser=Vt(e.browser);else{this.browser=new Map;for(let[n,s]of Object.entries(e.browser))this.browser.set(Vt(n),typeof s=="string"?Vt(s):s)}else this.browser=null;if(this.bin=new Map,typeof e.bin=="string")this.name!==null?this.bin.set(this.name.name,Vt(e.bin)):r.push(new Error("String bin field, but no attached package name"));else if(typeof e.bin=="object"&&e.bin!==null)for(let[n,s]of Object.entries(e.bin)){if(typeof s!="string"){r.push(new Error(`Invalid bin definition for '${n}'`));continue}let a=kA.parseIdent(n);this.bin.set(a.name,Vt(s))}if(this.scripts=new Map,typeof e.scripts=="object"&&e.scripts!==null)for(let[n,s]of Object.entries(e.scripts)){if(typeof s!="string"){r.push(new Error(`Invalid script definition for '${n}'`));continue}this.scripts.set(n,s)}if(this.dependencies=new Map,typeof e.dependencies=="object"&&e.dependencies!==null)for(let[n,s]of Object.entries(e.dependencies)){if(typeof s!="string"){r.push(new Error(`Invalid dependency range for '${n}'`));continue}let a;try{a=kA.parseIdent(n)}catch{r.push(new Error(`Parsing failed for the dependency name '${n}'`));continue}let g=kA.makeDescriptor(a,s);this.dependencies.set(g.identHash,g)}if(this.devDependencies=new Map,typeof e.devDependencies=="object"&&e.devDependencies!==null)for(let[n,s]of Object.entries(e.devDependencies)){if(typeof s!="string"){r.push(new Error(`Invalid dependency range for '${n}'`));continue}let a;try{a=kA.parseIdent(n)}catch{r.push(new Error(`Parsing failed for the dependency name '${n}'`));continue}let g=kA.makeDescriptor(a,s);this.devDependencies.set(g.identHash,g)}if(this.peerDependencies=new Map,typeof e.peerDependencies=="object"&&e.peerDependencies!==null)for(let[n,s]of Object.entries(e.peerDependencies)){let a;try{a=kA.parseIdent(n)}catch{r.push(new Error(`Parsing failed for the dependency name '${n}'`));continue}(typeof s!="string"||!s.startsWith(Lfe.WorkspaceResolver.protocol)&&!Pfe.validRange(s))&&(r.push(new Error(`Invalid dependency range for '${n}'`)),s="*");let g=kA.makeDescriptor(a,s);this.peerDependencies.set(g.identHash,g)}typeof e.workspaces=="object"&&e.workspaces!==null&&e.workspaces.nohoist&&r.push(new Error("'nohoist' is deprecated, please use 'installConfig.hoistingLimits' instead"));let i=Array.isArray(e.workspaces)?e.workspaces:typeof e.workspaces=="object"&&e.workspaces!==null&&Array.isArray(e.workspaces.packages)?e.workspaces.packages:[];this.workspaceDefinitions=[];for(let n of i){if(typeof n!="string"){r.push(new Error(`Invalid workspace definition for '${n}'`));continue}this.workspaceDefinitions.push({pattern:n})}if(this.dependenciesMeta=new Map,typeof e.dependenciesMeta=="object"&&e.dependenciesMeta!==null)for(let[n,s]of Object.entries(e.dependenciesMeta)){if(typeof s!="object"||s===null){r.push(new Error(`Invalid meta field for '${n}`));continue}let a=kA.parseDescriptor(n),g=this.ensureDependencyMeta(a),c=aI(s.built,{yamlCompatibilityMode:t});if(c===null){r.push(new Error(`Invalid built meta field for '${n}'`));continue}let l=aI(s.optional,{yamlCompatibilityMode:t});if(l===null){r.push(new Error(`Invalid optional meta field for '${n}'`));continue}let C=aI(s.unplugged,{yamlCompatibilityMode:t});if(C===null){r.push(new Error(`Invalid unplugged meta field for '${n}'`));continue}Object.assign(g,{built:c,optional:l,unplugged:C})}if(this.peerDependenciesMeta=new Map,typeof e.peerDependenciesMeta=="object"&&e.peerDependenciesMeta!==null)for(let[n,s]of Object.entries(e.peerDependenciesMeta)){if(typeof s!="object"||s===null){r.push(new Error(`Invalid meta field for '${n}'`));continue}let a=kA.parseDescriptor(n),g=this.ensurePeerDependencyMeta(a),c=aI(s.optional,{yamlCompatibilityMode:t});if(c===null){r.push(new Error(`Invalid optional meta field for '${n}'`));continue}Object.assign(g,{optional:c})}if(this.resolutions=[],typeof e.resolutions=="object"&&e.resolutions!==null)for(let[n,s]of Object.entries(e.resolutions)){if(typeof s!="string"){r.push(new Error(`Invalid resolution entry for '${n}'`));continue}try{this.resolutions.push({pattern:(0,wG.parseResolution)(n),reference:s})}catch(a){r.push(a);continue}}if(Array.isArray(e.files)){this.files=new Set;for(let n of e.files){if(typeof n!="string"){r.push(new Error(`Invalid files entry for '${n}'`));continue}this.files.add(n)}}else this.files=null;if(typeof e.publishConfig=="object"&&e.publishConfig!==null){if(this.publishConfig={},typeof e.publishConfig.access=="string"&&(this.publishConfig.access=e.publishConfig.access),typeof e.publishConfig.main=="string"&&(this.publishConfig.main=Vt(e.publishConfig.main)),typeof e.publishConfig.module=="string"&&(this.publishConfig.module=Vt(e.publishConfig.module)),e.publishConfig.browser!=null)if(typeof e.publishConfig.browser=="string")this.publishConfig.browser=Vt(e.publishConfig.browser);else{this.publishConfig.browser=new Map;for(let[n,s]of Object.entries(e.publishConfig.browser))this.publishConfig.browser.set(Vt(n),typeof s=="string"?Vt(s):s)}if(typeof e.publishConfig.registry=="string"&&(this.publishConfig.registry=e.publishConfig.registry),typeof e.publishConfig.bin=="string")this.name!==null?this.publishConfig.bin=new Map([[this.name.name,Vt(e.publishConfig.bin)]]):r.push(new Error("String bin field, but no attached package name"));else if(typeof e.publishConfig.bin=="object"&&e.publishConfig.bin!==null){this.publishConfig.bin=new Map;for(let[n,s]of Object.entries(e.publishConfig.bin)){if(typeof s!="string"){r.push(new Error(`Invalid bin definition for '${n}'`));continue}this.publishConfig.bin.set(n,Vt(s))}}if(Array.isArray(e.publishConfig.executableFiles)){this.publishConfig.executableFiles=new Set;for(let n of e.publishConfig.executableFiles){if(typeof n!="string"){r.push(new Error("Invalid executable file definition"));continue}this.publishConfig.executableFiles.add(Vt(n))}}}else this.publishConfig=null;if(typeof e.installConfig=="object"&&e.installConfig!==null){this.installConfig={};for(let n of Object.keys(e.installConfig))n==="hoistingLimits"?typeof e.installConfig.hoistingLimits=="string"?this.installConfig.hoistingLimits=e.installConfig.hoistingLimits:r.push(new Error("Invalid hoisting limits definition")):n=="selfReferences"?typeof e.installConfig.selfReferences=="boolean"?this.installConfig.selfReferences=e.installConfig.selfReferences:r.push(new Error("Invalid selfReferences definition, must be a boolean value")):r.push(new Error(`Unrecognized installConfig key: ${n}`))}else this.installConfig=null;if(typeof e.optionalDependencies=="object"&&e.optionalDependencies!==null)for(let[n,s]of Object.entries(e.optionalDependencies)){if(typeof s!="string"){r.push(new Error(`Invalid dependency range for '${n}'`));continue}let a;try{a=kA.parseIdent(n)}catch{r.push(new Error(`Parsing failed for the dependency name '${n}'`));continue}let g=kA.makeDescriptor(a,s);this.dependencies.set(g.identHash,g);let c=kA.makeDescriptor(a,"unknown"),l=this.ensureDependencyMeta(c);Object.assign(l,{optional:!0})}typeof e.preferUnplugged=="boolean"?this.preferUnplugged=e.preferUnplugged:this.preferUnplugged=null,this.errors=r}getForScope(e){switch(e){case"dependencies":return this.dependencies;case"devDependencies":return this.devDependencies;case"peerDependencies":return this.peerDependencies;default:throw new Error(`Unsupported value ("${e}")`)}}hasConsumerDependency(e){return!!(this.dependencies.has(e.identHash)||this.peerDependencies.has(e.identHash))}hasHardDependency(e){return!!(this.dependencies.has(e.identHash)||this.devDependencies.has(e.identHash))}hasSoftDependency(e){return!!this.peerDependencies.has(e.identHash)}hasDependency(e){return!!(this.hasHardDependency(e)||this.hasSoftDependency(e))}getConditions(){let e=[];return this.os&&this.os.length>0&&e.push(z0("os",this.os)),this.cpu&&this.cpu.length>0&&e.push(z0("cpu",this.cpu)),this.libc&&this.libc.length>0&&e.push(z0("libc",this.libc)),e.length>0?e.join(" & "):null}ensureDependencyMeta(e){if(e.range!=="unknown"&&!Mfe.default.valid(e.range))throw new Error(`Invalid meta field range for '${kA.stringifyDescriptor(e)}'`);let t=kA.stringifyIdent(e),r=e.range!=="unknown"?e.range:null,i=this.dependenciesMeta.get(t);i||this.dependenciesMeta.set(t,i=new Map);let n=i.get(r);return n||i.set(r,n={}),n}ensurePeerDependencyMeta(e){if(e.range!=="unknown")throw new Error(`Invalid meta field range for '${kA.stringifyDescriptor(e)}'`);let t=kA.stringifyIdent(e),r=this.peerDependenciesMeta.get(t);return r||this.peerDependenciesMeta.set(t,r={}),r}setRawField(e,t,{after:r=[]}={}){let i=new Set(r.filter(n=>Object.prototype.hasOwnProperty.call(this.raw,n)));if(i.size===0||Object.prototype.hasOwnProperty.call(this.raw,e))this.raw[e]=t;else{let n=this.raw,s=this.raw={},a=!1;for(let g of Object.keys(n))s[g]=n[g],a||(i.delete(g),i.size===0&&(s[e]=t,a=!0))}}exportTo(e,{compatibilityMode:t=!0}={}){var r;if(Object.assign(e,this.raw),this.name!==null?e.name=kA.stringifyIdent(this.name):delete e.name,this.version!==null?e.version=this.version:delete e.version,this.os!==null?e.os=this.os:delete e.os,this.cpu!==null?e.cpu=this.cpu:delete e.cpu,this.type!==null?e.type=this.type:delete e.type,this.packageManager!==null?e.packageManager=this.packageManager:delete e.packageManager,this.private?e.private=!0:delete e.private,this.license!==null?e.license=this.license:delete e.license,this.languageName!==null?e.languageName=this.languageName:delete e.languageName,this.main!==null?e.main=this.main:delete e.main,this.module!==null?e.module=this.module:delete e.module,this.browser!==null){let s=this.browser;typeof s=="string"?e.browser=s:s instanceof Map&&(e.browser=Object.assign({},...Array.from(s.keys()).sort().map(a=>({[a]:s.get(a)}))))}else delete e.browser;this.bin.size===1&&this.name!==null&&this.bin.has(this.name.name)?e.bin=this.bin.get(this.name.name):this.bin.size>0?e.bin=Object.assign({},...Array.from(this.bin.keys()).sort().map(s=>({[s]:this.bin.get(s)}))):delete e.bin,this.workspaceDefinitions.length>0?this.raw.workspaces&&!Array.isArray(this.raw.workspaces)?e.workspaces={...this.raw.workspaces,packages:this.workspaceDefinitions.map(({pattern:s})=>s)}:e.workspaces=this.workspaceDefinitions.map(({pattern:s})=>s):this.raw.workspaces&&!Array.isArray(this.raw.workspaces)&&Object.keys(this.raw.workspaces).length>0?e.workspaces=this.raw.workspaces:delete e.workspaces;let i=[],n=[];for(let s of this.dependencies.values()){let a=this.dependenciesMeta.get(kA.stringifyIdent(s)),g=!1;if(t&&a){let c=a.get(null);c&&c.optional&&(g=!0)}g?n.push(s):i.push(s)}i.length>0?e.dependencies=Object.assign({},...kA.sortDescriptors(i).map(s=>({[kA.stringifyIdent(s)]:s.range}))):delete e.dependencies,n.length>0?e.optionalDependencies=Object.assign({},...kA.sortDescriptors(n).map(s=>({[kA.stringifyIdent(s)]:s.range}))):delete e.optionalDependencies,this.devDependencies.size>0?e.devDependencies=Object.assign({},...kA.sortDescriptors(this.devDependencies.values()).map(s=>({[kA.stringifyIdent(s)]:s.range}))):delete e.devDependencies,this.peerDependencies.size>0?e.peerDependencies=Object.assign({},...kA.sortDescriptors(this.peerDependencies.values()).map(s=>({[kA.stringifyIdent(s)]:s.range}))):delete e.peerDependencies,e.dependenciesMeta={};for(let[s,a]of gI.sortMap(this.dependenciesMeta.entries(),([g,c])=>g))for(let[g,c]of gI.sortMap(a.entries(),([l,C])=>l!==null?`0${l}`:"1")){let l=g!==null?kA.stringifyDescriptor(kA.makeDescriptor(kA.parseIdent(s),g)):s,C={...c};t&&g===null&&delete C.optional,Object.keys(C).length!==0&&(e.dependenciesMeta[l]=C)}if(Object.keys(e.dependenciesMeta).length===0&&delete e.dependenciesMeta,this.peerDependenciesMeta.size>0?e.peerDependenciesMeta=Object.assign({},...gI.sortMap(this.peerDependenciesMeta.entries(),([s,a])=>s).map(([s,a])=>({[s]:a}))):delete e.peerDependenciesMeta,this.resolutions.length>0?e.resolutions=Object.assign({},...this.resolutions.map(({pattern:s,reference:a})=>({[(0,wG.stringifyResolution)(s)]:a}))):delete e.resolutions,this.files!==null?e.files=Array.from(this.files):delete e.files,this.preferUnplugged!==null?e.preferUnplugged=this.preferUnplugged:delete e.preferUnplugged,this.scripts!==null&&this.scripts.size>0){(r=e.scripts)!==null&&r!==void 0||(e.scripts={});for(let s of Object.keys(e.scripts))this.scripts.has(s)||delete e.scripts[s];for(let[s,a]of this.scripts.entries())e.scripts[s]=a}else delete e.scripts;return e}};lI.Manifest=ki;ki.fileName="package.json";ki.allDependencies=["dependencies","devDependencies","peerDependencies"];ki.hardDependencies=["dependencies","devDependencies"];function DG(A){let e=A.match(/^[ \t]+/m);return e?e[0]:" "}function SG(A){return A.charCodeAt(0)===65279?A.slice(1):A}function Vt(A){return A.replace(/\\/g,"/")}function aI(A,{yamlCompatibilityMode:e}){return e?gI.tryParseOptionalBoolean(A):typeof A>"u"||typeof A=="boolean"?A:null}function FG(A,e){let t=e.search(/[^!]/);if(t===-1)return"invalid";let r=t%2===0?"":"!",i=e.slice(t);return`${r}${A}=${i}`}function z0(A,e){return e.length===1?FG(A,e[0]):`(${e.map(t=>FG(A,t)).join(" | ")})`}});var RG=p((xMe,xG)=>{var Ofe=$r(),Kfe=function(){return Ofe.Date.now()};xG.exports=Kfe});var kG=p((RMe,bG)=>{var Ufe=/\s/;function Tfe(A){for(var e=A.length;e--&&Ufe.test(A.charAt(e)););return e}bG.exports=Tfe});var NG=p((bMe,vG)=>{var qfe=kG(),Gfe=/^\s+/;function Yfe(A){return A&&A.slice(0,qfe(A)+1).replace(Gfe,"")}vG.exports=Yfe});var Bu=p((kMe,MG)=>{var _fe=ta(),Hfe=ks(),Jfe="[object Symbol]";function jfe(A){return typeof A=="symbol"||Hfe(A)&&_fe(A)==Jfe}MG.exports=jfe});var KG=p((vMe,OG)=>{var Wfe=NG(),LG=ei(),zfe=Bu(),PG=0/0,Vfe=/^[-+]0x[0-9a-f]+$/i,Xfe=/^0b[01]+$/i,Zfe=/^0o[0-7]+$/i,$fe=parseInt;function eIe(A){if(typeof A=="number")return A;if(zfe(A))return PG;if(LG(A)){var e=typeof A.valueOf=="function"?A.valueOf():A;A=LG(e)?e+"":e}if(typeof A!="string")return A===0?A:+A;A=Wfe(A);var t=Xfe.test(A);return t||Zfe.test(A)?$fe(A.slice(2),t?2:8):Vfe.test(A)?PG:+A}OG.exports=eIe});var qG=p((NMe,TG)=>{var AIe=ei(),V0=RG(),UG=KG(),tIe="Expected a function",rIe=Math.max,iIe=Math.min;function nIe(A,e,t){var r,i,n,s,a,g,c=0,l=!1,C=!1,f=!0;if(typeof A!="function")throw new TypeError(tIe);e=UG(e)||0,AIe(t)&&(l=!!t.leading,C="maxWait"in t,n=C?rIe(UG(t.maxWait)||0,e):n,f="trailing"in t?!!t.trailing:f);function E(J){var X=r,ie=i;return r=i=void 0,c=J,s=A.apply(ie,X),s}function m(J){return c=J,a=setTimeout(L,e),l?E(J):s}function w(J){var X=J-g,ie=J-c,G=e-X;return C?iIe(G,n-ie):G}function D(J){var X=J-g,ie=J-c;return g===void 0||X>=e||X<0||C&&ie>=n}function L(){var J=V0();if(D(J))return K(J);a=setTimeout(L,w(J))}function K(J){return a=void 0,f&&r?E(J):(r=i=void 0,s)}function _(){a!==void 0&&clearTimeout(a),c=0,r=g=i=a=void 0}function le(){return a===void 0?s:K(V0())}function re(){var J=V0(),X=D(J);if(r=arguments,i=this,g=J,X){if(a===void 0)return m(g);if(C)return clearTimeout(a),a=setTimeout(L,e),E(g)}return a===void 0&&(a=setTimeout(L,e)),s}return re.cancel=_,re.flush=le,re}TG.exports=nIe});var YG=p((MMe,GG)=>{var sIe=qG(),oIe=ei(),aIe="Expected a function";function gIe(A,e,t){var r=!0,i=!0;if(typeof A!="function")throw new TypeError(aIe);return oIe(t)&&(r="leading"in t?!!t.leading:r,i="trailing"in t?!!t.trailing:i),sIe(A,e,{leading:r,maxWait:e,trailing:i})}GG.exports=gIe});var ii=p(Gs=>{"use strict";Object.defineProperty(Gs,"__esModule",{value:!0});Gs.Report=Gs.isReportError=Gs.ReportError=void 0;var cIe=nA(),lIe=cIe.__importDefault(YG()),uIe=require("stream"),CIe=require("string_decoder"),hIe=ar(),fIe=15,X0=class extends Error{constructor(e,t,r){super(t),this.reportExtra=r,this.reportCode=e}};Gs.ReportError=X0;function _G(A){return typeof A.reportCode<"u"}Gs.isReportError=_G;var Z0=class{constructor(){this.reportedInfos=new Set,this.reportedWarnings=new Set,this.reportedErrors=new Set}static progressViaCounter(e){let t=0,r,i=new Promise(g=>{r=g}),n=g=>{let c=r;i=new Promise(l=>{r=l}),t=g,c()},s=(g=0)=>{n(t+1)},a=async function*(){for(;t{t=s}),i=(0,lIe.default)(s=>{let a=t;r=new Promise(g=>{t=g}),e=s,a()},1e3/fIe),n=async function*(){for(;;)await r,yield{title:e}}();return{[Symbol.asyncIterator](){return n},hasProgress:!1,hasTitle:!0,setTitle:i}}async startProgressPromise(e,t){let r=this.reportProgress(e);try{return await t(e)}finally{r.stop()}}startProgressSync(e,t){let r=this.reportProgress(e);try{return t(e)}finally{r.stop()}}reportInfoOnce(e,t,r){var i;let n=r&&r.key?r.key:t;this.reportedInfos.has(n)||(this.reportedInfos.add(n),this.reportInfo(e,t),(i=r?.reportExtra)===null||i===void 0||i.call(r,this))}reportWarningOnce(e,t,r){var i;let n=r&&r.key?r.key:t;this.reportedWarnings.has(n)||(this.reportedWarnings.add(n),this.reportWarning(e,t),(i=r?.reportExtra)===null||i===void 0||i.call(r,this))}reportErrorOnce(e,t,r){var i;let n=r&&r.key?r.key:t;this.reportedErrors.has(n)||(this.reportedErrors.add(n),this.reportError(e,t),(i=r?.reportExtra)===null||i===void 0||i.call(r,this))}reportExceptionOnce(e){_G(e)?this.reportErrorOnce(e.reportCode,e.message,{key:e,reportExtra:e.reportExtra}):this.reportErrorOnce(hIe.MessageName.EXCEPTION,e.stack||e.message,{key:e})}createStreamReporter(e=null){let t=new uIe.PassThrough,r=new CIe.StringDecoder,i="";return t.on("data",n=>{let s=r.write(n),a;do if(a=s.indexOf(` +`),a!==-1){let g=i+s.substring(0,a);s=s.substring(a+1),i="",e!==null?this.reportInfo(null,`${e} ${g}`):this.reportInfo(null,g)}while(a!==-1);i+=s}),t.on("end",()=>{let n=r.end();n!==""&&(e!==null?this.reportInfo(null,`${e} ${n}`):this.reportInfo(null,n))}),t}};Gs.Report=Z0});var em=p(uI=>{"use strict";Object.defineProperty(uI,"__esModule",{value:!0});uI.MultiFetcher=void 0;var IIe=nA(),EIe=ar(),BIe=ii(),pIe=IIe.__importStar(Dt()),$0=class{constructor(e){this.fetchers=e}supports(e,t){return!!this.tryFetcher(e,t)}getLocalPath(e,t){return this.getFetcher(e,t).getLocalPath(e,t)}async fetch(e,t){return await this.getFetcher(e,t).fetch(e,t)}tryFetcher(e,t){let r=this.fetchers.find(i=>i.supports(e,t));return r||null}getFetcher(e,t){let r=this.fetchers.find(i=>i.supports(e,t));if(!r)throw new BIe.ReportError(EIe.MessageName.FETCHER_NOT_FOUND,`${pIe.prettyLocator(t.project.configuration,e)} isn't supported by any available fetcher`);return r}};uI.MultiFetcher=$0});var tm=p(CI=>{"use strict";Object.defineProperty(CI,"__esModule",{value:!0});CI.MultiResolver=void 0;var QIe=nA(),HG=QIe.__importStar(Dt()),Am=class{constructor(e){this.resolvers=e.filter(t=>t)}supportsDescriptor(e,t){return!!this.tryResolverByDescriptor(e,t)}supportsLocator(e,t){return!!this.tryResolverByLocator(e,t)}shouldPersistResolution(e,t){return this.getResolverByLocator(e,t).shouldPersistResolution(e,t)}bindDescriptor(e,t,r){return this.getResolverByDescriptor(e,r).bindDescriptor(e,t,r)}getResolutionDependencies(e,t){return this.getResolverByDescriptor(e,t).getResolutionDependencies(e,t)}async getCandidates(e,t,r){return await this.getResolverByDescriptor(e,r).getCandidates(e,t,r)}async getSatisfying(e,t,r,i){return this.getResolverByDescriptor(e,i).getSatisfying(e,t,r,i)}async resolve(e,t){return await this.getResolverByLocator(e,t).resolve(e,t)}tryResolverByDescriptor(e,t){let r=this.resolvers.find(i=>i.supportsDescriptor(e,t));return r||null}getResolverByDescriptor(e,t){let r=this.resolvers.find(i=>i.supportsDescriptor(e,t));if(!r)throw new Error(`${HG.prettyDescriptor(t.project.configuration,e)} isn't supported by any available resolver`);return r}tryResolverByLocator(e,t){let r=this.resolvers.find(i=>i.supportsLocator(e,t));return r||null}getResolverByLocator(e,t){let r=this.resolvers.find(i=>i.supportsLocator(e,t));if(!r)throw new Error(`${HG.prettyLocator(t.project.configuration,e)} isn't supported by any available resolver`);return r}};CI.MultiResolver=Am});var sm=p(hI=>{"use strict";Object.defineProperty(hI,"__esModule",{value:!0});hI.VirtualFetcher=void 0;var dIe=nA(),rm=BA(),im=dIe.__importStar(Dt()),nm=class{supports(e){return!!e.reference.startsWith("virtual:")}getLocalPath(e,t){let r=e.reference.indexOf("#");if(r===-1)throw new Error("Invalid virtual package reference");let i=e.reference.slice(r+1),n=im.makeLocator(e,i);return t.fetcher.getLocalPath(n,t)}async fetch(e,t){let r=e.reference.indexOf("#");if(r===-1)throw new Error("Invalid virtual package reference");let i=e.reference.slice(r+1),n=im.makeLocator(e,i),s=await t.fetcher.fetch(n,t);return await this.ensureVirtualLink(e,s,t)}getLocatorFilename(e){return im.slugifyLocator(e)}async ensureVirtualLink(e,t,r){let i=t.packageFs.getRealPath(),n=r.project.configuration.get("virtualFolder"),s=this.getLocatorFilename(e),a=rm.VirtualFS.makeVirtualPath(n,s,i),g=new rm.AliasFS(a,{baseFs:t.packageFs,pathUtils:rm.ppath});return{...t,packageFs:g}}};hI.VirtualFetcher=nm});var JG=p(fI=>{"use strict";Object.defineProperty(fI,"__esModule",{value:!0});fI.VirtualResolver=void 0;var Jn=class{static isVirtualDescriptor(e){return!!e.range.startsWith(Jn.protocol)}static isVirtualLocator(e){return!!e.reference.startsWith(Jn.protocol)}supportsDescriptor(e,t){return Jn.isVirtualDescriptor(e)}supportsLocator(e,t){return Jn.isVirtualLocator(e)}shouldPersistResolution(e,t){return!1}bindDescriptor(e,t,r){throw new Error('Assertion failed: calling "bindDescriptor" on a virtual descriptor is unsupported')}getResolutionDependencies(e,t){throw new Error('Assertion failed: calling "getResolutionDependencies" on a virtual descriptor is unsupported')}async getCandidates(e,t,r){throw new Error('Assertion failed: calling "getCandidates" on a virtual descriptor is unsupported')}async getSatisfying(e,t,r,i){throw new Error('Assertion failed: calling "getSatisfying" on a virtual descriptor is unsupported')}async resolve(e,t){throw new Error('Assertion failed: calling "resolve" on a virtual locator is unsupported')}};fI.VirtualResolver=Jn;Jn.protocol="virtual:"});var am=p(II=>{"use strict";Object.defineProperty(II,"__esModule",{value:!0});II.WorkspaceFetcher=void 0;var jG=BA(),WG=Ca(),om=class{supports(e){return!!e.reference.startsWith(WG.WorkspaceResolver.protocol)}getLocalPath(e,t){return this.getWorkspace(e,t).cwd}async fetch(e,t){let r=this.getWorkspace(e,t).cwd;return{packageFs:new jG.CwdFS(r),prefixPath:jG.PortablePath.dot,localPath:r}}getWorkspace(e,t){return t.project.getWorkspaceByCwd(e.reference.slice(WG.WorkspaceResolver.protocol.length))}};II.WorkspaceFetcher=om});var EI=p(Ys=>{"use strict";Object.defineProperty(Ys,"__esModule",{value:!0});Ys.isFolderInside=Ys.getHomeFolder=Ys.getDefaultGlobalFolder=void 0;var jn=BA(),zG=require("os");function yIe(){if(process.platform==="win32"){let A=jn.npath.toPortablePath(process.env.LOCALAPPDATA||jn.npath.join((0,zG.homedir)(),"AppData","Local"));return jn.ppath.resolve(A,"Yarn/Berry")}if(process.env.XDG_DATA_HOME){let A=jn.npath.toPortablePath(process.env.XDG_DATA_HOME);return jn.ppath.resolve(A,"yarn/berry")}return jn.ppath.resolve(VG(),".yarn/berry")}Ys.getDefaultGlobalFolder=yIe;function VG(){return jn.npath.toPortablePath((0,zG.homedir)()||"/usr/local/share")}Ys.getHomeFolder=VG;function mIe(A,e){let t=jn.ppath.relative(e,A);return t&&!t.startsWith("..")&&!jn.ppath.isAbsolute(t)}Ys.isFolderInside=mIe});var eY=p(cc=>{"use strict";var GMe=require("net"),wIe=require("tls"),gm=require("http"),XG=require("https"),DIe=require("events"),YMe=require("assert"),SIe=require("util");cc.httpOverHttp=FIe;cc.httpsOverHttp=xIe;cc.httpOverHttps=RIe;cc.httpsOverHttps=bIe;function FIe(A){var e=new Wn(A);return e.request=gm.request,e}function xIe(A){var e=new Wn(A);return e.request=gm.request,e.createSocket=ZG,e.defaultPort=443,e}function RIe(A){var e=new Wn(A);return e.request=XG.request,e}function bIe(A){var e=new Wn(A);return e.request=XG.request,e.createSocket=ZG,e.defaultPort=443,e}function Wn(A){var e=this;e.options=A||{},e.proxyOptions=e.options.proxy||{},e.maxSockets=e.options.maxSockets||gm.Agent.defaultMaxSockets,e.requests=[],e.sockets=[],e.on("free",function(r,i,n,s){for(var a=$G(i,n,s),g=0,c=e.requests.length;g=this.maxSockets){n.requests.push(s);return}n.createSocket(s,function(a){a.on("free",g),a.on("close",c),a.on("agentRemove",c),e.onSocket(a);function g(){n.emit("free",a,s)}function c(l){n.removeSocket(a),a.removeListener("free",g),a.removeListener("close",c),a.removeListener("agentRemove",c)}})};Wn.prototype.createSocket=function(e,t){var r=this,i={};r.sockets.push(i);var n=cm({},r.proxyOptions,{method:"CONNECT",path:e.host+":"+e.port,agent:!1,headers:{host:e.host+":"+e.port}});e.localAddress&&(n.localAddress=e.localAddress),n.proxyAuth&&(n.headers=n.headers||{},n.headers["Proxy-Authorization"]="Basic "+new Buffer(n.proxyAuth).toString("base64")),_s("making CONNECT request");var s=r.request(n);s.useChunkedEncodingByDefault=!1,s.once("response",a),s.once("upgrade",g),s.once("connect",c),s.once("error",l),s.end();function a(C){C.upgrade=!0}function g(C,f,E){process.nextTick(function(){c(C,f,E)})}function c(C,f,E){if(s.removeAllListeners(),f.removeAllListeners(),C.statusCode!==200){_s("tunneling socket could not be established, statusCode=%d",C.statusCode),f.destroy();var m=new Error("tunneling socket could not be established, statusCode="+C.statusCode);m.code="ECONNRESET",e.request.emit("error",m),r.removeSocket(i);return}if(E.length>0){_s("got illegal response body from proxy"),f.destroy();var m=new Error("got illegal response body from proxy");m.code="ECONNRESET",e.request.emit("error",m),r.removeSocket(i);return}return _s("tunneling connection has established"),r.sockets[r.sockets.indexOf(i)]=f,t(f)}function l(C){s.removeAllListeners(),_s(`tunneling socket could not be established, cause=%s +`,C.message,C.stack);var f=new Error("tunneling socket could not be established, cause="+C.message);f.code="ECONNRESET",e.request.emit("error",f),r.removeSocket(i)}};Wn.prototype.removeSocket=function(e){var t=this.sockets.indexOf(e);if(t!==-1){this.sockets.splice(t,1);var r=this.requests.shift();r&&this.createSocket(r,function(i){r.request.onSocket(i)})}};function ZG(A,e){var t=this;Wn.prototype.createSocket.call(t,A,function(r){var i=A.request.getHeader("host"),n=cm({},t.options,{socket:r,servername:i?i.replace(/:.*$/,""):A.host}),s=wIe.connect(0,n);t.sockets[t.sockets.indexOf(r)]=s,e(s)})}function $G(A,e,t){return typeof A=="string"?{host:A,port:e,localAddress:t}:A}function cm(A){for(var e=1,t=arguments.length;e{AY.exports=eY()});var Vn=p((zn,BI)=>{"use strict";Object.defineProperty(zn,"__esModule",{value:!0});var rY=["Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","BigInt64Array","BigUint64Array"];function kIe(A){return rY.includes(A)}var vIe=["Function","Generator","AsyncGenerator","GeneratorFunction","AsyncGeneratorFunction","AsyncFunction","Observable","Array","Buffer","Blob","Object","RegExp","Date","Error","Map","Set","WeakMap","WeakSet","ArrayBuffer","SharedArrayBuffer","DataView","Promise","URL","FormData","URLSearchParams","HTMLElement",...rY];function NIe(A){return vIe.includes(A)}var MIe=["null","undefined","string","number","bigint","boolean","symbol"];function LIe(A){return MIe.includes(A)}function lc(A){return e=>typeof e===A}var{toString:iY}=Object.prototype,pu=A=>{let e=iY.call(A).slice(8,-1);if(/HTML\w+Element/.test(e)&&P.domElement(A))return"HTMLElement";if(NIe(e))return e},OA=A=>e=>pu(e)===A;function P(A){if(A===null)return"null";switch(typeof A){case"undefined":return"undefined";case"string":return"string";case"number":return"number";case"boolean":return"boolean";case"function":return"Function";case"bigint":return"bigint";case"symbol":return"symbol";default:}if(P.observable(A))return"Observable";if(P.array(A))return"Array";if(P.buffer(A))return"Buffer";let e=pu(A);if(e)return e;if(A instanceof String||A instanceof Boolean||A instanceof Number)throw new TypeError("Please don't use object wrappers for primitive types");return"Object"}P.undefined=lc("undefined");P.string=lc("string");var PIe=lc("number");P.number=A=>PIe(A)&&!P.nan(A);P.bigint=lc("bigint");P.function_=lc("function");P.null_=A=>A===null;P.class_=A=>P.function_(A)&&A.toString().startsWith("class ");P.boolean=A=>A===!0||A===!1;P.symbol=lc("symbol");P.numericString=A=>P.string(A)&&!P.emptyStringOrWhitespace(A)&&!Number.isNaN(Number(A));P.array=(A,e)=>Array.isArray(A)?P.function_(e)?A.every(e):!0:!1;P.buffer=A=>{var e,t,r,i;return(i=(r=(t=(e=A)===null||e===void 0?void 0:e.constructor)===null||t===void 0?void 0:t.isBuffer)===null||r===void 0?void 0:r.call(t,A))!==null&&i!==void 0?i:!1};P.blob=A=>OA("Blob")(A);P.nullOrUndefined=A=>P.null_(A)||P.undefined(A);P.object=A=>!P.null_(A)&&(typeof A=="object"||P.function_(A));P.iterable=A=>{var e;return P.function_((e=A)===null||e===void 0?void 0:e[Symbol.iterator])};P.asyncIterable=A=>{var e;return P.function_((e=A)===null||e===void 0?void 0:e[Symbol.asyncIterator])};P.generator=A=>{var e,t;return P.iterable(A)&&P.function_((e=A)===null||e===void 0?void 0:e.next)&&P.function_((t=A)===null||t===void 0?void 0:t.throw)};P.asyncGenerator=A=>P.asyncIterable(A)&&P.function_(A.next)&&P.function_(A.throw);P.nativePromise=A=>OA("Promise")(A);var OIe=A=>{var e,t;return P.function_((e=A)===null||e===void 0?void 0:e.then)&&P.function_((t=A)===null||t===void 0?void 0:t.catch)};P.promise=A=>P.nativePromise(A)||OIe(A);P.generatorFunction=OA("GeneratorFunction");P.asyncGeneratorFunction=A=>pu(A)==="AsyncGeneratorFunction";P.asyncFunction=A=>pu(A)==="AsyncFunction";P.boundFunction=A=>P.function_(A)&&!A.hasOwnProperty("prototype");P.regExp=OA("RegExp");P.date=OA("Date");P.error=OA("Error");P.map=A=>OA("Map")(A);P.set=A=>OA("Set")(A);P.weakMap=A=>OA("WeakMap")(A);P.weakSet=A=>OA("WeakSet")(A);P.int8Array=OA("Int8Array");P.uint8Array=OA("Uint8Array");P.uint8ClampedArray=OA("Uint8ClampedArray");P.int16Array=OA("Int16Array");P.uint16Array=OA("Uint16Array");P.int32Array=OA("Int32Array");P.uint32Array=OA("Uint32Array");P.float32Array=OA("Float32Array");P.float64Array=OA("Float64Array");P.bigInt64Array=OA("BigInt64Array");P.bigUint64Array=OA("BigUint64Array");P.arrayBuffer=OA("ArrayBuffer");P.sharedArrayBuffer=OA("SharedArrayBuffer");P.dataView=OA("DataView");P.enumCase=(A,e)=>Object.values(e).includes(A);P.directInstanceOf=(A,e)=>Object.getPrototypeOf(A)===e.prototype;P.urlInstance=A=>OA("URL")(A);P.urlString=A=>{if(!P.string(A))return!1;try{return new URL(A),!0}catch{return!1}};P.truthy=A=>Boolean(A);P.falsy=A=>!A;P.nan=A=>Number.isNaN(A);P.primitive=A=>P.null_(A)||LIe(typeof A);P.integer=A=>Number.isInteger(A);P.safeInteger=A=>Number.isSafeInteger(A);P.plainObject=A=>{if(iY.call(A)!=="[object Object]")return!1;let e=Object.getPrototypeOf(A);return e===null||e===Object.getPrototypeOf({})};P.typedArray=A=>kIe(pu(A));var KIe=A=>P.safeInteger(A)&&A>=0;P.arrayLike=A=>!P.nullOrUndefined(A)&&!P.function_(A)&&KIe(A.length);P.inRange=(A,e)=>{if(P.number(e))return A>=Math.min(0,e)&&A<=Math.max(e,0);if(P.array(e)&&e.length===2)return A>=Math.min(...e)&&A<=Math.max(...e);throw new TypeError(`Invalid range: ${JSON.stringify(e)}`)};var UIe=1,TIe=["innerHTML","ownerDocument","style","attributes","nodeValue"];P.domElement=A=>P.object(A)&&A.nodeType===UIe&&P.string(A.nodeName)&&!P.plainObject(A)&&TIe.every(e=>e in A);P.observable=A=>{var e,t,r,i;return A?A===((t=(e=A)[Symbol.observable])===null||t===void 0?void 0:t.call(e))||A===((i=(r=A)["@@observable"])===null||i===void 0?void 0:i.call(r)):!1};P.nodeStream=A=>P.object(A)&&P.function_(A.pipe)&&!P.observable(A);P.infinite=A=>A===1/0||A===-1/0;var nY=A=>e=>P.integer(e)&&Math.abs(e%2)===A;P.evenInteger=nY(0);P.oddInteger=nY(1);P.emptyArray=A=>P.array(A)&&A.length===0;P.nonEmptyArray=A=>P.array(A)&&A.length>0;P.emptyString=A=>P.string(A)&&A.length===0;var qIe=A=>P.string(A)&&!/\S/.test(A);P.emptyStringOrWhitespace=A=>P.emptyString(A)||qIe(A);P.nonEmptyString=A=>P.string(A)&&A.length>0;P.nonEmptyStringAndNotWhitespace=A=>P.string(A)&&!P.emptyStringOrWhitespace(A);P.emptyObject=A=>P.object(A)&&!P.map(A)&&!P.set(A)&&Object.keys(A).length===0;P.nonEmptyObject=A=>P.object(A)&&!P.map(A)&&!P.set(A)&&Object.keys(A).length>0;P.emptySet=A=>P.set(A)&&A.size===0;P.nonEmptySet=A=>P.set(A)&&A.size>0;P.emptyMap=A=>P.map(A)&&A.size===0;P.nonEmptyMap=A=>P.map(A)&&A.size>0;P.propertyKey=A=>P.any([P.string,P.number,P.symbol],A);P.formData=A=>OA("FormData")(A);P.urlSearchParams=A=>OA("URLSearchParams")(A);var sY=(A,e,t)=>{if(!P.function_(e))throw new TypeError(`Invalid predicate: ${JSON.stringify(e)}`);if(t.length===0)throw new TypeError("Invalid number of values");return A.call(t,e)};P.any=(A,...e)=>(P.array(A)?A:[A]).some(r=>sY(Array.prototype.some,r,e));P.all=(A,...e)=>sY(Array.prototype.every,A,e);var Qe=(A,e,t,r={})=>{if(!A){let{multipleValues:i}=r,n=i?`received values of types ${[...new Set(t.map(s=>`\`${P(s)}\``))].join(", ")}`:`received value of type \`${P(t)}\``;throw new TypeError(`Expected value which is \`${e}\`, ${n}.`)}};zn.assert={undefined:A=>Qe(P.undefined(A),"undefined",A),string:A=>Qe(P.string(A),"string",A),number:A=>Qe(P.number(A),"number",A),bigint:A=>Qe(P.bigint(A),"bigint",A),function_:A=>Qe(P.function_(A),"Function",A),null_:A=>Qe(P.null_(A),"null",A),class_:A=>Qe(P.class_(A),"Class",A),boolean:A=>Qe(P.boolean(A),"boolean",A),symbol:A=>Qe(P.symbol(A),"symbol",A),numericString:A=>Qe(P.numericString(A),"string with a number",A),array:(A,e)=>{Qe(P.array(A),"Array",A),e&&A.forEach(e)},buffer:A=>Qe(P.buffer(A),"Buffer",A),blob:A=>Qe(P.blob(A),"Blob",A),nullOrUndefined:A=>Qe(P.nullOrUndefined(A),"null or undefined",A),object:A=>Qe(P.object(A),"Object",A),iterable:A=>Qe(P.iterable(A),"Iterable",A),asyncIterable:A=>Qe(P.asyncIterable(A),"AsyncIterable",A),generator:A=>Qe(P.generator(A),"Generator",A),asyncGenerator:A=>Qe(P.asyncGenerator(A),"AsyncGenerator",A),nativePromise:A=>Qe(P.nativePromise(A),"native Promise",A),promise:A=>Qe(P.promise(A),"Promise",A),generatorFunction:A=>Qe(P.generatorFunction(A),"GeneratorFunction",A),asyncGeneratorFunction:A=>Qe(P.asyncGeneratorFunction(A),"AsyncGeneratorFunction",A),asyncFunction:A=>Qe(P.asyncFunction(A),"AsyncFunction",A),boundFunction:A=>Qe(P.boundFunction(A),"Function",A),regExp:A=>Qe(P.regExp(A),"RegExp",A),date:A=>Qe(P.date(A),"Date",A),error:A=>Qe(P.error(A),"Error",A),map:A=>Qe(P.map(A),"Map",A),set:A=>Qe(P.set(A),"Set",A),weakMap:A=>Qe(P.weakMap(A),"WeakMap",A),weakSet:A=>Qe(P.weakSet(A),"WeakSet",A),int8Array:A=>Qe(P.int8Array(A),"Int8Array",A),uint8Array:A=>Qe(P.uint8Array(A),"Uint8Array",A),uint8ClampedArray:A=>Qe(P.uint8ClampedArray(A),"Uint8ClampedArray",A),int16Array:A=>Qe(P.int16Array(A),"Int16Array",A),uint16Array:A=>Qe(P.uint16Array(A),"Uint16Array",A),int32Array:A=>Qe(P.int32Array(A),"Int32Array",A),uint32Array:A=>Qe(P.uint32Array(A),"Uint32Array",A),float32Array:A=>Qe(P.float32Array(A),"Float32Array",A),float64Array:A=>Qe(P.float64Array(A),"Float64Array",A),bigInt64Array:A=>Qe(P.bigInt64Array(A),"BigInt64Array",A),bigUint64Array:A=>Qe(P.bigUint64Array(A),"BigUint64Array",A),arrayBuffer:A=>Qe(P.arrayBuffer(A),"ArrayBuffer",A),sharedArrayBuffer:A=>Qe(P.sharedArrayBuffer(A),"SharedArrayBuffer",A),dataView:A=>Qe(P.dataView(A),"DataView",A),enumCase:(A,e)=>Qe(P.enumCase(A,e),"EnumCase",A),urlInstance:A=>Qe(P.urlInstance(A),"URL",A),urlString:A=>Qe(P.urlString(A),"string with a URL",A),truthy:A=>Qe(P.truthy(A),"truthy",A),falsy:A=>Qe(P.falsy(A),"falsy",A),nan:A=>Qe(P.nan(A),"NaN",A),primitive:A=>Qe(P.primitive(A),"primitive",A),integer:A=>Qe(P.integer(A),"integer",A),safeInteger:A=>Qe(P.safeInteger(A),"integer",A),plainObject:A=>Qe(P.plainObject(A),"plain object",A),typedArray:A=>Qe(P.typedArray(A),"TypedArray",A),arrayLike:A=>Qe(P.arrayLike(A),"array-like",A),domElement:A=>Qe(P.domElement(A),"HTMLElement",A),observable:A=>Qe(P.observable(A),"Observable",A),nodeStream:A=>Qe(P.nodeStream(A),"Node.js Stream",A),infinite:A=>Qe(P.infinite(A),"infinite number",A),emptyArray:A=>Qe(P.emptyArray(A),"empty array",A),nonEmptyArray:A=>Qe(P.nonEmptyArray(A),"non-empty array",A),emptyString:A=>Qe(P.emptyString(A),"empty string",A),emptyStringOrWhitespace:A=>Qe(P.emptyStringOrWhitespace(A),"empty string or whitespace",A),nonEmptyString:A=>Qe(P.nonEmptyString(A),"non-empty string",A),nonEmptyStringAndNotWhitespace:A=>Qe(P.nonEmptyStringAndNotWhitespace(A),"non-empty string and not whitespace",A),emptyObject:A=>Qe(P.emptyObject(A),"empty object",A),nonEmptyObject:A=>Qe(P.nonEmptyObject(A),"non-empty object",A),emptySet:A=>Qe(P.emptySet(A),"empty set",A),nonEmptySet:A=>Qe(P.nonEmptySet(A),"non-empty set",A),emptyMap:A=>Qe(P.emptyMap(A),"empty map",A),nonEmptyMap:A=>Qe(P.nonEmptyMap(A),"non-empty map",A),propertyKey:A=>Qe(P.propertyKey(A),"PropertyKey",A),formData:A=>Qe(P.formData(A),"FormData",A),urlSearchParams:A=>Qe(P.urlSearchParams(A),"URLSearchParams",A),evenInteger:A=>Qe(P.evenInteger(A),"even integer",A),oddInteger:A=>Qe(P.oddInteger(A),"odd integer",A),directInstanceOf:(A,e)=>Qe(P.directInstanceOf(A,e),"T",A),inRange:(A,e)=>Qe(P.inRange(A,e),"in range",A),any:(A,...e)=>Qe(P.any(A,...e),"predicate returns truthy for any value",e,{multipleValues:!0}),all:(A,...e)=>Qe(P.all(A,...e),"predicate returns truthy for all values",e,{multipleValues:!0})};Object.defineProperties(P,{class:{value:P.class_},function:{value:P.function_},null:{value:P.null_}});Object.defineProperties(zn.assert,{class:{value:zn.assert.class_},function:{value:zn.assert.function_},null:{value:zn.assert.null_}});zn.default=P;BI.exports=P;BI.exports.default=P;BI.exports.assert=zn.assert});var oY=p((JMe,lm)=>{"use strict";var pI=class extends Error{constructor(e){super(e||"Promise was canceled"),this.name="CancelError"}get isCanceled(){return!0}},uc=class{static fn(e){return(...t)=>new uc((r,i,n)=>{t.push(n),e(...t).then(r,i)})}constructor(e){this._cancelHandlers=[],this._isPending=!0,this._isCanceled=!1,this._rejectOnCancel=!0,this._promise=new Promise((t,r)=>{this._reject=r;let i=a=>{(!this._isCanceled||!s.shouldReject)&&(this._isPending=!1,t(a))},n=a=>{this._isPending=!1,r(a)},s=a=>{if(!this._isPending)throw new Error("The `onCancel` handler was attached after the promise settled.");this._cancelHandlers.push(a)};return Object.defineProperties(s,{shouldReject:{get:()=>this._rejectOnCancel,set:a=>{this._rejectOnCancel=a}}}),e(i,n,s)})}then(e,t){return this._promise.then(e,t)}catch(e){return this._promise.catch(e)}finally(e){return this._promise.finally(e)}cancel(e){if(!(!this._isPending||this._isCanceled)){if(this._isCanceled=!0,this._cancelHandlers.length>0)try{for(let t of this._cancelHandlers)t()}catch(t){this._reject(t);return}this._rejectOnCancel&&this._reject(new pI(e))}}get isCanceled(){return this._isCanceled}};Object.setPrototypeOf(uc.prototype,Promise.prototype);lm.exports=uc;lm.exports.CancelError=pI});var aY=p((Cm,hm)=>{"use strict";Object.defineProperty(Cm,"__esModule",{value:!0});function GIe(A){return A.encrypted}var um=(A,e)=>{let t;typeof e=="function"?t={connect:e}:t=e;let r=typeof t.connect=="function",i=typeof t.secureConnect=="function",n=typeof t.close=="function",s=()=>{r&&t.connect(),GIe(A)&&i&&(A.authorized?t.secureConnect():A.authorizationError||A.once("secureConnect",t.secureConnect)),n&&A.once("close",t.close)};A.writable&&!A.connecting?s():A.connecting?A.once("connect",s):A.destroyed&&n&&t.close(A._hadError)};Cm.default=um;hm.exports=um;hm.exports.default=um});var gY=p((Im,Em)=>{"use strict";Object.defineProperty(Im,"__esModule",{value:!0});var YIe=aY(),_Ie=require("util"),HIe=Number(process.versions.node.split(".")[0]),fm=A=>{if(A.timings)return A.timings;let e={start:Date.now(),socket:void 0,lookup:void 0,connect:void 0,secureConnect:void 0,upload:void 0,response:void 0,end:void 0,error:void 0,abort:void 0,phases:{wait:void 0,dns:void 0,tcp:void 0,tls:void 0,request:void 0,firstByte:void 0,download:void 0,total:void 0}};A.timings=e;let t=a=>{let g=a.emit.bind(a);a.emit=(c,...l)=>(c==="error"&&(e.error=Date.now(),e.phases.total=e.error-e.start,a.emit=g),g(c,...l))};t(A);let r=()=>{e.abort=Date.now(),(!e.response||HIe>=13)&&(e.phases.total=Date.now()-e.start)};A.prependOnceListener("abort",r);let i=a=>{if(e.socket=Date.now(),e.phases.wait=e.socket-e.start,_Ie.types.isProxy(a))return;let g=()=>{e.lookup=Date.now(),e.phases.dns=e.lookup-e.socket};a.prependOnceListener("lookup",g),YIe.default(a,{connect:()=>{e.connect=Date.now(),e.lookup===void 0&&(a.removeListener("lookup",g),e.lookup=e.connect,e.phases.dns=e.lookup-e.socket),e.phases.tcp=e.connect-e.lookup},secureConnect:()=>{e.secureConnect=Date.now(),e.phases.tls=e.secureConnect-e.connect}})};A.socket?i(A.socket):A.prependOnceListener("socket",i);let n=()=>{var a;e.upload=Date.now(),e.phases.request=e.upload-((a=e.secureConnect)!==null&&a!==void 0?a:e.connect)};return(()=>typeof A.writableFinished=="boolean"?A.writableFinished:A.finished&&A.outputSize===0&&(!A.socket||A.socket.writableLength===0))()?n():A.prependOnceListener("finish",n),A.prependOnceListener("response",a=>{e.response=Date.now(),e.phases.firstByte=e.response-e.upload,a.timings=e,t(a),a.prependOnceListener("end",()=>{e.end=Date.now(),e.phases.download=e.end-e.response,e.phases.total=e.end-e.start}),a.prependOnceListener("aborted",r)}),e};Im.default=fm;Em.exports=fm;Em.exports.default=fm});var IY=p((jMe,Qm)=>{"use strict";var{V4MAPPED:JIe,ADDRCONFIG:jIe,ALL:fY,promises:{Resolver:cY},lookup:WIe}=require("dns"),{promisify:Bm}=require("util"),zIe=require("os"),Cc=Symbol("cacheableLookupCreateConnection"),pm=Symbol("cacheableLookupInstance"),lY=Symbol("expires"),VIe=typeof fY=="number",uY=A=>{if(!(A&&typeof A.createConnection=="function"))throw new Error("Expected an Agent instance as the first argument")},XIe=A=>{for(let e of A)e.family!==6&&(e.address=`::ffff:${e.address}`,e.family=6)},CY=()=>{let A=!1,e=!1;for(let t of Object.values(zIe.networkInterfaces()))for(let r of t)if(!r.internal&&(r.family==="IPv6"?e=!0:A=!0,A&&e))return{has4:A,has6:e};return{has4:A,has6:e}},ZIe=A=>Symbol.iterator in A,hY={ttl:!0},$Ie={all:!0},QI=class{constructor({cache:e=new Map,maxTtl:t=1/0,fallbackDuration:r=3600,errorTtl:i=.15,resolver:n=new cY,lookup:s=WIe}={}){if(this.maxTtl=t,this.errorTtl=i,this._cache=e,this._resolver=n,this._dnsLookup=Bm(s),this._resolver instanceof cY?(this._resolve4=this._resolver.resolve4.bind(this._resolver),this._resolve6=this._resolver.resolve6.bind(this._resolver)):(this._resolve4=Bm(this._resolver.resolve4.bind(this._resolver)),this._resolve6=Bm(this._resolver.resolve6.bind(this._resolver))),this._iface=CY(),this._pending={},this._nextRemovalTime=!1,this._hostnamesToFallback=new Set,r<1)this._fallback=!1;else{this._fallback=!0;let a=setInterval(()=>{this._hostnamesToFallback.clear()},r*1e3);a.unref&&a.unref()}this.lookup=this.lookup.bind(this),this.lookupAsync=this.lookupAsync.bind(this)}set servers(e){this.clear(),this._resolver.setServers(e)}get servers(){return this._resolver.getServers()}lookup(e,t,r){if(typeof t=="function"?(r=t,t={}):typeof t=="number"&&(t={family:t}),!r)throw new Error("Callback must be a function.");this.lookupAsync(e,t).then(i=>{t.all?r(null,i):r(null,i.address,i.family,i.expires,i.ttl)},r)}async lookupAsync(e,t={}){typeof t=="number"&&(t={family:t});let r=await this.query(e);if(t.family===6){let i=r.filter(n=>n.family===6);t.hints&JIe&&(VIe&&t.hints&fY||i.length===0)?XIe(r):r=i}else t.family===4&&(r=r.filter(i=>i.family===4));if(t.hints&jIe){let{_iface:i}=this;r=r.filter(n=>n.family===6?i.has6:i.has4)}if(r.length===0){let i=new Error(`cacheableLookup ENOTFOUND ${e}`);throw i.code="ENOTFOUND",i.hostname=e,i}return t.all?r:r[0]}async query(e){let t=await this._cache.get(e);if(!t){let r=this._pending[e];if(r)t=await r;else{let i=this.queryAndCache(e);this._pending[e]=i;try{t=await i}finally{delete this._pending[e]}}}return t=t.map(r=>({...r})),t}async _resolve(e){let t=async c=>{try{return await c}catch(l){if(l.code==="ENODATA"||l.code==="ENOTFOUND")return[];throw l}},[r,i]=await Promise.all([this._resolve4(e,hY),this._resolve6(e,hY)].map(c=>t(c))),n=0,s=0,a=0,g=Date.now();for(let c of r)c.family=4,c.expires=g+c.ttl*1e3,n=Math.max(n,c.ttl);for(let c of i)c.family=6,c.expires=g+c.ttl*1e3,s=Math.max(s,c.ttl);return r.length>0?i.length>0?a=Math.min(n,s):a=n:a=s,{entries:[...r,...i],cacheTtl:a}}async _lookup(e){try{return{entries:await this._dnsLookup(e,{all:!0}),cacheTtl:0}}catch{return{entries:[],cacheTtl:0}}}async _set(e,t,r){if(this.maxTtl>0&&r>0){r=Math.min(r,this.maxTtl)*1e3,t[lY]=Date.now()+r;try{await this._cache.set(e,t,r)}catch(i){this.lookupAsync=async()=>{let n=new Error("Cache Error. Please recreate the CacheableLookup instance.");throw n.cause=i,n}}ZIe(this._cache)&&this._tick(r)}}async queryAndCache(e){if(this._hostnamesToFallback.has(e))return this._dnsLookup(e,$Ie);let t=await this._resolve(e);t.entries.length===0&&this._fallback&&(t=await this._lookup(e),t.entries.length!==0&&this._hostnamesToFallback.add(e));let r=t.entries.length===0?this.errorTtl:t.cacheTtl;return await this._set(e,t.entries,r),t.entries}_tick(e){let t=this._nextRemovalTime;(!t||e{this._nextRemovalTime=!1;let r=1/0,i=Date.now();for(let[n,s]of this._cache){let a=s[lY];i>=a?this._cache.delete(n):a("lookup"in t||(t.lookup=this.lookup),e[Cc](t,r))}uninstall(e){if(uY(e),e[Cc]){if(e[pm]!==this)throw new Error("The agent is not owned by this CacheableLookup instance");e.createConnection=e[Cc],delete e[Cc],delete e[pm]}}updateInterfaceInfo(){let{_iface:e}=this;this._iface=CY(),(e.has4&&!this._iface.has4||e.has6&&!this._iface.has6)&&this._cache.clear()}clear(e){if(e){this._cache.delete(e);return}this._cache.clear()}};Qm.exports=QI;Qm.exports.default=QI});var pY=p((WMe,BY)=>{"use strict";var eEe="text/plain",AEe="us-ascii",EY=(A,e)=>e.some(t=>t instanceof RegExp?t.test(A):t===A),tEe=(A,{stripHash:e})=>{let t=/^data:(?[^,]*?),(?[^#]*?)(?:#(?.*))?$/.exec(A);if(!t)throw new Error(`Invalid URL: ${A}`);let{type:r,data:i,hash:n}=t.groups,s=r.split(";");n=e?"":n;let a=!1;s[s.length-1]==="base64"&&(s.pop(),a=!0);let g=(s.shift()||"").toLowerCase(),l=[...s.map(C=>{let[f,E=""]=C.split("=").map(m=>m.trim());return f==="charset"&&(E=E.toLowerCase(),E===AEe)?"":`${f}${E?`=${E}`:""}`}).filter(Boolean)];return a&&l.push("base64"),(l.length!==0||g&&g!==eEe)&&l.unshift(g),`data:${l.join(";")},${a?i.trim():i}${n?`#${n}`:""}`},rEe=(A,e)=>{if(e={defaultProtocol:"http:",normalizeProtocol:!0,forceHttp:!1,forceHttps:!1,stripAuthentication:!0,stripHash:!1,stripTextFragment:!0,stripWWW:!0,removeQueryParameters:[/^utm_\w+/i],removeTrailingSlash:!0,removeSingleSlash:!0,removeDirectoryIndex:!1,sortQueryParameters:!0,...e},A=A.trim(),/^data:/i.test(A))return tEe(A,e);if(/^view-source:/i.test(A))throw new Error("`view-source:` is not supported as it is a non-standard protocol");let t=A.startsWith("//");!t&&/^\.*\//.test(A)||(A=A.replace(/^(?!(?:\w+:)?\/\/)|^\/\//,e.defaultProtocol));let i=new URL(A);if(e.forceHttp&&e.forceHttps)throw new Error("The `forceHttp` and `forceHttps` options cannot be used together");if(e.forceHttp&&i.protocol==="https:"&&(i.protocol="http:"),e.forceHttps&&i.protocol==="http:"&&(i.protocol="https:"),e.stripAuthentication&&(i.username="",i.password=""),e.stripHash?i.hash="":e.stripTextFragment&&(i.hash=i.hash.replace(/#?:~:text.*?$/i,"")),i.pathname&&(i.pathname=i.pathname.replace(/(?0){let s=i.pathname.split("/"),a=s[s.length-1];EY(a,e.removeDirectoryIndex)&&(s=s.slice(0,s.length-1),i.pathname=s.slice(1).join("/")+"/")}if(i.hostname&&(i.hostname=i.hostname.replace(/\.$/,""),e.stripWWW&&/^www\.(?!www\.)(?:[a-z\-\d]{1,63})\.(?:[a-z.\-\d]{2,63})$/.test(i.hostname)&&(i.hostname=i.hostname.replace(/^www\./,""))),Array.isArray(e.removeQueryParameters))for(let s of[...i.searchParams.keys()])EY(s,e.removeQueryParameters)&&i.searchParams.delete(s);e.removeQueryParameters===!0&&(i.search=""),e.sortQueryParameters&&i.searchParams.sort(),e.removeTrailingSlash&&(i.pathname=i.pathname.replace(/\/$/,""));let n=A;return A=i.toString(),!e.removeSingleSlash&&i.pathname==="/"&&!n.endsWith("/")&&i.hash===""&&(A=A.replace(/\/$/,"")),(e.removeTrailingSlash||i.pathname==="/")&&i.hash===""&&e.removeSingleSlash&&(A=A.replace(/\/$/,"")),t&&!e.normalizeProtocol&&(A=A.replace(/^http:\/\//,"//")),e.stripProtocol&&(A=A.replace(/^(?:https?:)?\/\//,"")),A};BY.exports=rEe});var yY=p((zMe,dY)=>{dY.exports=QY;function QY(A,e){if(A&&e)return QY(A)(e);if(typeof A!="function")throw new TypeError("need wrapper function");return Object.keys(A).forEach(function(r){t[r]=A[r]}),t;function t(){for(var r=new Array(arguments.length),i=0;i{var mY=yY();dm.exports=mY(dI);dm.exports.strict=mY(wY);dI.proto=dI(function(){Object.defineProperty(Function.prototype,"once",{value:function(){return dI(this)},configurable:!0}),Object.defineProperty(Function.prototype,"onceStrict",{value:function(){return wY(this)},configurable:!0})});function dI(A){var e=function(){return e.called?e.value:(e.called=!0,e.value=A.apply(this,arguments))};return e.called=!1,e}function wY(A){var e=function(){if(e.called)throw new Error(e.onceError);return e.called=!0,e.value=A.apply(this,arguments)},t=A.name||"Function wrapped with `once`";return e.onceError=t+" shouldn't be called more than once",e.called=!1,e}});var FY=p((XMe,SY)=>{var iEe=ym(),nEe=function(){},sEe=function(A){return A.setHeader&&typeof A.abort=="function"},oEe=function(A){return A.stdio&&Array.isArray(A.stdio)&&A.stdio.length===3},DY=function(A,e,t){if(typeof e=="function")return DY(A,null,e);e||(e={}),t=iEe(t||nEe);var r=A._writableState,i=A._readableState,n=e.readable||e.readable!==!1&&A.readable,s=e.writable||e.writable!==!1&&A.writable,a=!1,g=function(){A.writable||c()},c=function(){s=!1,n||t.call(A)},l=function(){n=!1,s||t.call(A)},C=function(D){t.call(A,D?new Error("exited with error code: "+D):null)},f=function(D){t.call(A,D)},E=function(){process.nextTick(m)},m=function(){if(!a){if(n&&!(i&&i.ended&&!i.destroyed))return t.call(A,new Error("premature close"));if(s&&!(r&&r.ended&&!r.destroyed))return t.call(A,new Error("premature close"))}},w=function(){A.req.on("finish",c)};return sEe(A)?(A.on("complete",c),A.on("abort",E),A.req?w():A.on("request",w)):s&&!r&&(A.on("end",g),A.on("close",g)),oEe(A)&&A.on("exit",C),A.on("end",l),A.on("finish",c),e.error!==!1&&A.on("error",f),A.on("close",E),function(){a=!0,A.removeListener("complete",c),A.removeListener("abort",E),A.removeListener("request",w),A.req&&A.req.removeListener("finish",c),A.removeListener("end",g),A.removeListener("close",g),A.removeListener("finish",c),A.removeListener("exit",C),A.removeListener("end",l),A.removeListener("error",f),A.removeListener("close",E)}};SY.exports=DY});var bY=p((ZMe,RY)=>{var aEe=ym(),gEe=FY(),mm=require("fs"),Qu=function(){},cEe=/^v?\.0/.test(process.version),yI=function(A){return typeof A=="function"},lEe=function(A){return!cEe||!mm?!1:(A instanceof(mm.ReadStream||Qu)||A instanceof(mm.WriteStream||Qu))&&yI(A.close)},uEe=function(A){return A.setHeader&&yI(A.abort)},CEe=function(A,e,t,r){r=aEe(r);var i=!1;A.on("close",function(){i=!0}),gEe(A,{readable:e,writable:t},function(s){if(s)return r(s);i=!0,r()});var n=!1;return function(s){if(!i&&!n){if(n=!0,lEe(A))return A.close(Qu);if(uEe(A))return A.abort();if(yI(A.destroy))return A.destroy();r(s||new Error("stream was destroyed"))}}},xY=function(A){A()},hEe=function(A,e){return A.pipe(e)},fEe=function(){var A=Array.prototype.slice.call(arguments),e=yI(A[A.length-1]||Qu)&&A.pop()||Qu;if(Array.isArray(A[0])&&(A=A[0]),A.length<2)throw new Error("pump requires two streams per minimum");var t,r=A.map(function(i,n){var s=n0;return CEe(i,s,a,function(g){t||(t=g),g&&r.forEach(xY),!s&&(r.forEach(xY),e(t))})});return A.reduce(hEe)};RY.exports=fEe});var vY=p(($Me,kY)=>{"use strict";var{PassThrough:IEe}=require("stream");kY.exports=A=>{A={...A};let{array:e}=A,{encoding:t}=A,r=t==="buffer",i=!1;e?i=!(t||r):t=t||"utf8",r&&(t=null);let n=new IEe({objectMode:i});t&&n.setEncoding(t);let s=0,a=[];return n.on("data",g=>{a.push(g),i?s=a.length:s+=g.length}),n.getBufferedValue=()=>e?a:r?Buffer.concat(a,s):a.join(""),n.getBufferedLength=()=>s,n}});var NY=p((e1e,hc)=>{"use strict";var{constants:EEe}=require("buffer"),BEe=bY(),pEe=vY(),mI=class extends Error{constructor(){super("maxBuffer exceeded"),this.name="MaxBufferError"}};async function wI(A,e){if(!A)return Promise.reject(new Error("Expected a stream"));e={maxBuffer:1/0,...e};let{maxBuffer:t}=e,r;return await new Promise((i,n)=>{let s=a=>{a&&r.getBufferedLength()<=EEe.MAX_LENGTH&&(a.bufferedData=r.getBufferedValue()),n(a)};r=BEe(A,pEe(e),a=>{if(a){s(a);return}i()}),r.on("data",()=>{r.getBufferedLength()>t&&s(new mI)})}),r.getBufferedValue()}hc.exports=wI;hc.exports.default=wI;hc.exports.buffer=(A,e)=>wI(A,{...e,encoding:"buffer"});hc.exports.array=(A,e)=>wI(A,{...e,array:!0});hc.exports.MaxBufferError=mI});var LY=p((t1e,MY)=>{"use strict";var QEe=new Set([200,203,204,206,300,301,404,405,410,414,501]),dEe=new Set([200,203,204,300,301,302,303,307,308,404,405,410,414,501]),yEe=new Set([500,502,503,504]),mEe={date:!0,connection:!0,"keep-alive":!0,"proxy-authenticate":!0,"proxy-authorization":!0,te:!0,trailer:!0,"transfer-encoding":!0,upgrade:!0},wEe={"content-length":!0,"content-encoding":!0,"transfer-encoding":!0,"content-range":!0};function ha(A){let e=parseInt(A,10);return isFinite(e)?e:0}function DEe(A){return A?yEe.has(A.status):!0}function wm(A){let e={};if(!A)return e;let t=A.trim().split(/\s*,\s*/);for(let r of t){let[i,n]=r.split(/\s*=\s*/,2);e[i]=n===void 0?!0:n.replace(/^"|"$/g,"")}return e}function SEe(A){let e=[];for(let t in A){let r=A[t];e.push(r===!0?t:t+"="+r)}if(!!e.length)return e.join(", ")}MY.exports=class{constructor(e,t,{shared:r,cacheHeuristic:i,immutableMinTimeToLive:n,ignoreCargoCult:s,_fromObject:a}={}){if(a){this._fromObject(a);return}if(!t||!t.headers)throw Error("Response headers missing");this._assertRequestHasHeaders(e),this._responseTime=this.now(),this._isShared=r!==!1,this._cacheHeuristic=i!==void 0?i:.1,this._immutableMinTtl=n!==void 0?n:24*3600*1e3,this._status="status"in t?t.status:200,this._resHeaders=t.headers,this._rescc=wm(t.headers["cache-control"]),this._method="method"in e?e.method:"GET",this._url=e.url,this._host=e.headers.host,this._noAuthorization=!e.headers.authorization,this._reqHeaders=t.headers.vary?e.headers:null,this._reqcc=wm(e.headers["cache-control"]),s&&"pre-check"in this._rescc&&"post-check"in this._rescc&&(delete this._rescc["pre-check"],delete this._rescc["post-check"],delete this._rescc["no-cache"],delete this._rescc["no-store"],delete this._rescc["must-revalidate"],this._resHeaders=Object.assign({},this._resHeaders,{"cache-control":SEe(this._rescc)}),delete this._resHeaders.expires,delete this._resHeaders.pragma),t.headers["cache-control"]==null&&/no-cache/.test(t.headers.pragma)&&(this._rescc["no-cache"]=!0)}now(){return Date.now()}storable(){return!!(!this._reqcc["no-store"]&&(this._method==="GET"||this._method==="HEAD"||this._method==="POST"&&this._hasExplicitExpiration())&&dEe.has(this._status)&&!this._rescc["no-store"]&&(!this._isShared||!this._rescc.private)&&(!this._isShared||this._noAuthorization||this._allowsStoringAuthenticated())&&(this._resHeaders.expires||this._rescc["max-age"]||this._isShared&&this._rescc["s-maxage"]||this._rescc.public||QEe.has(this._status)))}_hasExplicitExpiration(){return this._isShared&&this._rescc["s-maxage"]||this._rescc["max-age"]||this._resHeaders.expires}_assertRequestHasHeaders(e){if(!e||!e.headers)throw Error("Request headers missing")}satisfiesWithoutRevalidation(e){this._assertRequestHasHeaders(e);let t=wm(e.headers["cache-control"]);return t["no-cache"]||/no-cache/.test(e.headers.pragma)||t["max-age"]&&this.age()>t["max-age"]||t["min-fresh"]&&this.timeToLive()<1e3*t["min-fresh"]||this.stale()&&!(t["max-stale"]&&!this._rescc["must-revalidate"]&&(t["max-stale"]===!0||t["max-stale"]>this.age()-this.maxAge()))?!1:this._requestMatches(e,!1)}_requestMatches(e,t){return(!this._url||this._url===e.url)&&this._host===e.headers.host&&(!e.method||this._method===e.method||t&&e.method==="HEAD")&&this._varyMatches(e)}_allowsStoringAuthenticated(){return this._rescc["must-revalidate"]||this._rescc.public||this._rescc["s-maxage"]}_varyMatches(e){if(!this._resHeaders.vary)return!0;if(this._resHeaders.vary==="*")return!1;let t=this._resHeaders.vary.trim().toLowerCase().split(/\s*,\s*/);for(let r of t)if(e.headers[r]!==this._reqHeaders[r])return!1;return!0}_copyWithoutHopByHopHeaders(e){let t={};for(let r in e)mEe[r]||(t[r]=e[r]);if(e.connection){let r=e.connection.trim().split(/\s*,\s*/);for(let i of r)delete t[i]}if(t.warning){let r=t.warning.split(/,/).filter(i=>!/^\s*1[0-9][0-9]/.test(i));r.length?t.warning=r.join(",").trim():delete t.warning}return t}responseHeaders(){let e=this._copyWithoutHopByHopHeaders(this._resHeaders),t=this.age();return t>3600*24&&!this._hasExplicitExpiration()&&this.maxAge()>3600*24&&(e.warning=(e.warning?`${e.warning}, `:"")+'113 - "rfc7234 5.5.4"'),e.age=`${Math.round(t)}`,e.date=new Date(this.now()).toUTCString(),e}date(){let e=Date.parse(this._resHeaders.date);return isFinite(e)?e:this._responseTime}age(){let e=this._ageValue(),t=(this.now()-this._responseTime)/1e3;return e+t}_ageValue(){return ha(this._resHeaders.age)}maxAge(){if(!this.storable()||this._rescc["no-cache"]||this._isShared&&this._resHeaders["set-cookie"]&&!this._rescc.public&&!this._rescc.immutable||this._resHeaders.vary==="*")return 0;if(this._isShared){if(this._rescc["proxy-revalidate"])return 0;if(this._rescc["s-maxage"])return ha(this._rescc["s-maxage"])}if(this._rescc["max-age"])return ha(this._rescc["max-age"]);let e=this._rescc.immutable?this._immutableMinTtl:0,t=this.date();if(this._resHeaders.expires){let r=Date.parse(this._resHeaders.expires);return Number.isNaN(r)||rr)return Math.max(e,(t-r)/1e3*this._cacheHeuristic)}return e}timeToLive(){let e=this.maxAge()-this.age(),t=e+ha(this._rescc["stale-if-error"]),r=e+ha(this._rescc["stale-while-revalidate"]);return Math.max(0,e,t,r)*1e3}stale(){return this.maxAge()<=this.age()}_useStaleIfError(){return this.maxAge()+ha(this._rescc["stale-if-error"])>this.age()}useStaleWhileRevalidate(){return this.maxAge()+ha(this._rescc["stale-while-revalidate"])>this.age()}static fromObject(e){return new this(void 0,void 0,{_fromObject:e})}_fromObject(e){if(this._responseTime)throw Error("Reinitialized");if(!e||e.v!==1)throw Error("Invalid serialization");this._responseTime=e.t,this._isShared=e.sh,this._cacheHeuristic=e.ch,this._immutableMinTtl=e.imm!==void 0?e.imm:24*3600*1e3,this._status=e.st,this._resHeaders=e.resh,this._rescc=e.rescc,this._method=e.m,this._url=e.u,this._host=e.h,this._noAuthorization=e.a,this._reqHeaders=e.reqh,this._reqcc=e.reqcc}toObject(){return{v:1,t:this._responseTime,sh:this._isShared,ch:this._cacheHeuristic,imm:this._immutableMinTtl,st:this._status,resh:this._resHeaders,rescc:this._rescc,m:this._method,u:this._url,h:this._host,a:this._noAuthorization,reqh:this._reqHeaders,reqcc:this._reqcc}}revalidationHeaders(e){this._assertRequestHasHeaders(e);let t=this._copyWithoutHopByHopHeaders(e.headers);if(delete t["if-range"],!this._requestMatches(e,!0)||!this.storable())return delete t["if-none-match"],delete t["if-modified-since"],t;if(this._resHeaders.etag&&(t["if-none-match"]=t["if-none-match"]?`${t["if-none-match"]}, ${this._resHeaders.etag}`:this._resHeaders.etag),t["accept-ranges"]||t["if-match"]||t["if-unmodified-since"]||this._method&&this._method!="GET"){if(delete t["if-modified-since"],t["if-none-match"]){let i=t["if-none-match"].split(/,/).filter(n=>!/^\s*W\//.test(n));i.length?t["if-none-match"]=i.join(",").trim():delete t["if-none-match"]}}else this._resHeaders["last-modified"]&&!t["if-modified-since"]&&(t["if-modified-since"]=this._resHeaders["last-modified"]);return t}revalidatedPolicy(e,t){if(this._assertRequestHasHeaders(e),this._useStaleIfError()&&DEe(t))return{modified:!1,matches:!1,policy:this};if(!t||!t.headers)throw Error("Response headers missing");let r=!1;if(t.status!==void 0&&t.status!=304?r=!1:t.headers.etag&&!/^\s*W\//.test(t.headers.etag)?r=this._resHeaders.etag&&this._resHeaders.etag.replace(/^\s*W\//,"")===t.headers.etag:this._resHeaders.etag&&t.headers.etag?r=this._resHeaders.etag.replace(/^\s*W\//,"")===t.headers.etag.replace(/^\s*W\//,""):this._resHeaders["last-modified"]?r=this._resHeaders["last-modified"]===t.headers["last-modified"]:!this._resHeaders.etag&&!this._resHeaders["last-modified"]&&!t.headers.etag&&!t.headers["last-modified"]&&(r=!0),!r)return{policy:new this.constructor(e,t),modified:t.status!=304,matches:!1};let i={};for(let s in this._resHeaders)i[s]=s in t.headers&&!wEe[s]?t.headers[s]:this._resHeaders[s];let n=Object.assign({},t,{status:this._status,method:this._method,headers:i});return{policy:new this.constructor(e,n,{shared:this._isShared,cacheHeuristic:this._cacheHeuristic,immutableMinTimeToLive:this._immutableMinTtl}),modified:!1,matches:!0}}}});var DI=p((r1e,PY)=>{"use strict";PY.exports=A=>{let e={};for(let[t,r]of Object.entries(A))e[t.toLowerCase()]=r;return e}});var KY=p((i1e,OY)=>{"use strict";var FEe=require("stream").Readable,xEe=DI(),Dm=class extends FEe{constructor(e,t,r,i){if(typeof e!="number")throw new TypeError("Argument `statusCode` should be a number");if(typeof t!="object")throw new TypeError("Argument `headers` should be an object");if(!(r instanceof Buffer))throw new TypeError("Argument `body` should be a buffer");if(typeof i!="string")throw new TypeError("Argument `url` should be a string");super(),this.statusCode=e,this.headers=xEe(t),this.body=r,this.url=i}_read(){this.push(this.body),this.push(null)}};OY.exports=Dm});var TY=p((n1e,UY)=>{"use strict";var REe=["destroy","setTimeout","socket","headers","trailers","rawHeaders","statusCode","httpVersion","httpVersionMinor","httpVersionMajor","rawTrailers","statusMessage"];UY.exports=(A,e)=>{let t=new Set(Object.keys(A).concat(REe));for(let r of t)r in e||(e[r]=typeof A[r]=="function"?A[r].bind(A):A[r])}});var GY=p((s1e,qY)=>{"use strict";var bEe=require("stream").PassThrough,kEe=TY(),vEe=A=>{if(!(A&&A.pipe))throw new TypeError("Parameter `response` must be a response stream.");let e=new bEe;return kEe(A,e),A.pipe(e)};qY.exports=vEe});var YY=p(Sm=>{Sm.stringify=function A(e){if(typeof e>"u")return e;if(e&&Buffer.isBuffer(e))return JSON.stringify(":base64:"+e.toString("base64"));if(e&&e.toJSON&&(e=e.toJSON()),e&&typeof e=="object"){var t="",r=Array.isArray(e);t=r?"[":"{";var i=!0;for(var n in e){var s=typeof e[n]=="function"||!r&&typeof e[n]>"u";Object.hasOwnProperty.call(e,n)&&!s&&(i||(t+=","),i=!1,r?e[n]==null?t+="null":t+=A(e[n]):e[n]!==void 0&&(t+=A(n)+":"+A(e[n])))}return t+=r?"]":"}",t}else return typeof e=="string"?JSON.stringify(/^:/.test(e)?":"+e:e):typeof e>"u"?"null":JSON.stringify(e)};Sm.parse=function(A){return JSON.parse(A,function(e,t){return typeof t=="string"?/^:base64:/.test(t)?Buffer.from(t.substring(8),"base64"):/^:/.test(t)?t.substring(1):t:t})}});var jY=p((a1e,JY)=>{"use strict";var NEe=require("events"),_Y=YY(),MEe=A=>{let e={redis:"@keyv/redis",rediss:"@keyv/redis",mongodb:"@keyv/mongo",mongo:"@keyv/mongo",sqlite:"@keyv/sqlite",postgresql:"@keyv/postgres",postgres:"@keyv/postgres",mysql:"@keyv/mysql",etcd:"@keyv/etcd",offline:"@keyv/offline",tiered:"@keyv/tiered"};if(A.adapter||A.uri){let t=A.adapter||/^[^:+]*/.exec(A.uri)[0];return new(require(e[t]))(A)}return new Map},HY=["sqlite","postgres","mysql","mongo","redis","tiered"],Fm=class extends NEe{constructor(e,{emitErrors:t=!0,...r}={}){if(super(),this.opts={namespace:"keyv",serialize:_Y.stringify,deserialize:_Y.parse,...typeof e=="string"?{uri:e}:e,...r},!this.opts.store){let n={...this.opts};this.opts.store=MEe(n)}if(this.opts.compression){let n=this.opts.compression,{serialize:s,deserialize:a}=n.opts;this.opts.serialize=s,this.opts.deserialize=a}typeof this.opts.store.on=="function"&&t&&this.opts.store.on("error",n=>this.emit("error",n)),this.opts.store.namespace=this.opts.namespace;let i=n=>async function*(){for await(let[s,a]of typeof n=="function"?n(this.opts.store.namespace):n){let g=this.opts.deserialize(a);if(!(this.opts.store.namespace&&!s.includes(this.opts.store.namespace))){if(typeof g.expires=="number"&&Date.now()>g.expires){this.delete(s);continue}yield[this._getKeyUnprefix(s),g.value]}}};typeof this.opts.store[Symbol.iterator]=="function"&&this.opts.store instanceof Map?this.iterator=i(this.opts.store):typeof this.opts.store.iterator=="function"&&this.opts.store.opts&&this._checkIterableAdaptar()&&(this.iterator=i(this.opts.store.iterator.bind(this.opts.store)))}_checkIterableAdaptar(){return HY.includes(this.opts.store.opts.dialect)||HY.findIndex(e=>this.opts.store.opts.url.includes(e))>=0}_getKeyPrefix(e){return`${this.opts.namespace}:${e}`}_getKeyPrefixArray(e){return e.map(t=>`${this.opts.namespace}:${t}`)}_getKeyUnprefix(e){return e.split(":").splice(1).join(":")}get(e,t){let{store:r}=this.opts,i=Array.isArray(e),n=i?this._getKeyPrefixArray(e):this._getKeyPrefix(e);if(i&&r.getMany===void 0){let s=[];for(let a of n)s.push(Promise.resolve().then(()=>r.get(a)).then(g=>typeof g=="string"?this.opts.deserialize(g):g).then(g=>{if(g!=null)return typeof g.expires=="number"&&Date.now()>g.expires?this.delete(a).then(()=>{}):t&&t.raw?g:g.value}));return Promise.allSettled(s).then(a=>{let g=[];for(let c of a)g.push(c.value);return g})}return Promise.resolve().then(()=>i?r.getMany(n):r.get(n)).then(s=>typeof s=="string"?this.opts.deserialize(s):s).then(s=>{if(s!=null){if(i){let a=[];for(let g of s){if(typeof g=="string"&&(g=this.opts.deserialize(g)),g==null){a.push(void 0);continue}typeof g.expires=="number"&&Date.now()>g.expires?(this.delete(e).then(()=>{}),a.push(void 0)):a.push(t&&t.raw?g:g.value)}return a}return typeof s.expires=="number"&&Date.now()>s.expires?this.delete(e).then(()=>{}):t&&t.raw?s:s.value}})}set(e,t,r){let i=this._getKeyPrefix(e);typeof r>"u"&&(r=this.opts.ttl),r===0&&(r=void 0);let{store:n}=this.opts;return Promise.resolve().then(()=>{let s=typeof r=="number"?Date.now()+r:null;return typeof t=="symbol"&&this.emit("error","symbol cannot be serialized"),t={value:t,expires:s},this.opts.serialize(t)}).then(s=>n.set(i,s,r)).then(()=>!0)}delete(e){let{store:t}=this.opts;if(Array.isArray(e)){let i=this._getKeyPrefixArray(e);if(t.deleteMany===void 0){let n=[];for(let s of i)n.push(t.delete(s));return Promise.allSettled(n).then(s=>s.every(a=>a.value===!0))}return Promise.resolve().then(()=>t.deleteMany(i))}let r=this._getKeyPrefix(e);return Promise.resolve().then(()=>t.delete(r))}clear(){let{store:e}=this.opts;return Promise.resolve().then(()=>e.clear())}has(e){let t=this._getKeyPrefix(e),{store:r}=this.opts;return Promise.resolve().then(async()=>typeof r.has=="function"?r.has(t):await r.get(t)!==void 0)}disconnect(){let{store:e}=this.opts;if(typeof e.disconnect=="function")return e.disconnect()}};JY.exports=Fm});var VY=p((g1e,zY)=>{"use strict";var LEe=require("events"),SI=require("url"),PEe=pY(),OEe=NY(),xm=LY(),WY=KY(),KEe=DI(),UEe=GY(),TEe=jY(),vi=class{constructor(e,t){if(typeof e!="function")throw new TypeError("Parameter `request` must be a function");return this.cache=new TEe({uri:typeof t=="string"&&t,store:typeof t!="string"&&t,namespace:"cacheable-request"}),this.createCacheableRequest(e)}createCacheableRequest(e){return(t,r)=>{let i;if(typeof t=="string")i=Rm(SI.parse(t)),t={};else if(t instanceof SI.URL)i=Rm(SI.parse(t.toString())),t={};else{let[C,...f]=(t.path||"").split("?"),E=f.length>0?`?${f.join("?")}`:"";i=Rm({...t,pathname:C,search:E})}t={headers:{},method:"GET",cache:!0,strictTtl:!1,automaticFailover:!1,...t,...qEe(i)},t.headers=KEe(t.headers);let n=new LEe,s=PEe(SI.format(i),{stripWWW:!1,removeTrailingSlash:!1,stripAuthentication:!1}),a=`${t.method}:${s}`,g=!1,c=!1,l=C=>{c=!0;let f=!1,E,m=new Promise(D=>{E=()=>{f||(f=!0,D())}}),w=D=>{if(g&&!C.forceRefresh){D.status=D.statusCode;let K=xm.fromObject(g.cachePolicy).revalidatedPolicy(C,D);if(!K.modified){let _=K.policy.responseHeaders();D=new WY(g.statusCode,_,g.body,g.url),D.cachePolicy=K.policy,D.fromCache=!0}}D.fromCache||(D.cachePolicy=new xm(C,D,C),D.fromCache=!1);let L;C.cache&&D.cachePolicy.storable()?(L=UEe(D),(async()=>{try{let K=OEe.buffer(D);if(await Promise.race([m,new Promise(J=>D.once("end",J))]),f)return;let _=await K,le={cachePolicy:D.cachePolicy.toObject(),url:D.url,statusCode:D.fromCache?g.statusCode:D.statusCode,body:_},re=C.strictTtl?D.cachePolicy.timeToLive():void 0;C.maxTtl&&(re=re?Math.min(re,C.maxTtl):C.maxTtl),await this.cache.set(a,le,re)}catch(K){n.emit("error",new vi.CacheError(K))}})()):C.cache&&g&&(async()=>{try{await this.cache.delete(a)}catch(K){n.emit("error",new vi.CacheError(K))}})(),n.emit("response",L||D),typeof r=="function"&&r(L||D)};try{let D=e(C,w);D.once("error",E),D.once("abort",E),n.emit("request",D)}catch(D){n.emit("error",new vi.RequestError(D))}};return(async()=>{let C=async E=>{await Promise.resolve();let m=E.cache?await this.cache.get(a):void 0;if(typeof m>"u")return l(E);let w=xm.fromObject(m.cachePolicy);if(w.satisfiesWithoutRevalidation(E)&&!E.forceRefresh){let D=w.responseHeaders(),L=new WY(m.statusCode,D,m.body,m.url);L.cachePolicy=w,L.fromCache=!0,n.emit("response",L),typeof r=="function"&&r(L)}else g=m,E.headers=w.revalidationHeaders(E),l(E)},f=E=>n.emit("error",new vi.CacheError(E));this.cache.once("error",f),n.on("response",()=>this.cache.removeListener("error",f));try{await C(t)}catch(E){t.automaticFailover&&!c&&l(t),n.emit("error",new vi.CacheError(E))}})(),n}}};function qEe(A){let e={...A};return e.path=`${A.pathname||"/"}${A.search||""}`,delete e.pathname,delete e.search,e}function Rm(A){return{protocol:A.protocol,auth:A.auth,hostname:A.hostname||A.host||"localhost",port:A.port,pathname:A.pathname,search:A.search}}vi.RequestError=class extends Error{constructor(A){super(A.message),this.name="RequestError",Object.assign(this,A)}};vi.CacheError=class extends Error{constructor(A){super(A.message),this.name="CacheError",Object.assign(this,A)}};zY.exports=vi});var ZY=p((u1e,XY)=>{"use strict";var GEe=["aborted","complete","headers","httpVersion","httpVersionMinor","httpVersionMajor","method","rawHeaders","rawTrailers","setTimeout","socket","statusCode","statusMessage","trailers","url"];XY.exports=(A,e)=>{if(e._readableState.autoDestroy)throw new Error("The second stream must have the `autoDestroy` option set to `false`");let t=new Set(Object.keys(A).concat(GEe)),r={};for(let i of t)i in e||(r[i]={get(){let n=A[i];return typeof n=="function"?n.bind(A):n},set(n){A[i]=n},enumerable:!0,configurable:!1});return Object.defineProperties(e,r),A.once("aborted",()=>{e.destroy(),e.emit("aborted")}),A.once("close",()=>{A.complete&&e.readable?e.once("end",()=>{e.emit("close")}):e.emit("close")}),e}});var e_=p((C1e,$Y)=>{"use strict";var{Transform:YEe,PassThrough:_Ee}=require("stream"),bm=require("zlib"),HEe=ZY();$Y.exports=A=>{let e=(A.headers["content-encoding"]||"").toLowerCase();if(!["gzip","deflate","br"].includes(e))return A;let t=e==="br";if(t&&typeof bm.createBrotliDecompress!="function")return A.destroy(new Error("Brotli is not supported on Node.js < 12")),A;let r=!0,i=new YEe({transform(a,g,c){r=!1,c(null,a)},flush(a){a()}}),n=new _Ee({autoDestroy:!1,destroy(a,g){A.destroy(),g(a)}}),s=t?bm.createBrotliDecompress():bm.createUnzip();return s.once("error",a=>{if(r&&!A.readable){n.end();return}n.destroy(a)}),HEe(A,n),A.pipe(i).pipe(s).pipe(n),n}});var vm=p((h1e,A_)=>{"use strict";var km=class{constructor(e={}){if(!(e.maxSize&&e.maxSize>0))throw new TypeError("`maxSize` must be a number greater than 0");this.maxSize=e.maxSize,this.onEviction=e.onEviction,this.cache=new Map,this.oldCache=new Map,this._size=0}_set(e,t){if(this.cache.set(e,t),this._size++,this._size>=this.maxSize){if(this._size=0,typeof this.onEviction=="function")for(let[r,i]of this.oldCache.entries())this.onEviction(r,i);this.oldCache=this.cache,this.cache=new Map}}get(e){if(this.cache.has(e))return this.cache.get(e);if(this.oldCache.has(e)){let t=this.oldCache.get(e);return this.oldCache.delete(e),this._set(e,t),t}}set(e,t){return this.cache.has(e)?this.cache.set(e,t):this._set(e,t),this}has(e){return this.cache.has(e)||this.oldCache.has(e)}peek(e){if(this.cache.has(e))return this.cache.get(e);if(this.oldCache.has(e))return this.oldCache.get(e)}delete(e){let t=this.cache.delete(e);return t&&this._size--,this.oldCache.delete(e)||t}clear(){this.cache.clear(),this.oldCache.clear(),this._size=0}*keys(){for(let[e]of this)yield e}*values(){for(let[,e]of this)yield e}*[Symbol.iterator](){for(let e of this.cache)yield e;for(let e of this.oldCache){let[t]=e;this.cache.has(t)||(yield e)}}get size(){let e=0;for(let t of this.oldCache.keys())this.cache.has(t)||e++;return Math.min(this._size+e,this.maxSize)}};A_.exports=km});var Mm=p((f1e,n_)=>{"use strict";var JEe=require("events"),jEe=require("tls"),WEe=require("http2"),zEe=vm(),Xt=Symbol("currentStreamsCount"),t_=Symbol("request"),ni=Symbol("cachedOriginSet"),fc=Symbol("gracefullyClosing"),VEe=["maxDeflateDynamicTableSize","maxSessionMemory","maxHeaderListPairs","maxOutstandingPings","maxReservedRemoteStreams","maxSendHeaderBlockLength","paddingStrategy","localAddress","path","rejectUnauthorized","minDHSize","ca","cert","clientCertEngine","ciphers","key","pfx","servername","minVersion","maxVersion","secureProtocol","crl","honorCipherOrder","ecdhCurve","dhparam","secureOptions","sessionIdContext"],XEe=(A,e,t)=>{let r=0,i=A.length;for(;r>>1;t(A[n],e)?r=n+1:i=n}return r},ZEe=(A,e)=>A.remoteSettings.maxConcurrentStreams>e.remoteSettings.maxConcurrentStreams,Nm=(A,e)=>{for(let t of A)t[ni].lengthe[ni].includes(r))&&t[Xt]+e[Xt]<=e.remoteSettings.maxConcurrentStreams&&i_(t)},$Ee=(A,e)=>{for(let t of A)e[ni].lengtht[ni].includes(r))&&e[Xt]+t[Xt]<=t.remoteSettings.maxConcurrentStreams&&i_(e)},r_=({agent:A,isFree:e})=>{let t={};for(let r in A.sessions){let n=A.sessions[r].filter(s=>{let a=s[on.kCurrentStreamsCount]{A[fc]=!0,A[Xt]===0&&A.close()},on=class extends JEe{constructor({timeout:e=6e4,maxSessions:t=1/0,maxFreeSessions:r=10,maxCachedTlsSessions:i=100}={}){super(),this.sessions={},this.queue={},this.timeout=e,this.maxSessions=t,this.maxFreeSessions=r,this._freeSessionsCount=0,this._sessionsCount=0,this.settings={enablePush:!1},this.tlsSessionCache=new zEe({maxSize:i})}static normalizeOrigin(e,t){return typeof e=="string"&&(e=new URL(e)),t&&e.hostname!==t&&(e.hostname=t),e.origin}normalizeOptions(e){let t="";if(e)for(let r of VEe)e[r]&&(t+=`:${e[r]}`);return t}_tryToCreateNewSession(e,t){if(!(e in this.queue)||!(t in this.queue[e]))return;let r=this.queue[e][t];this._sessionsCount{Array.isArray(r)?(r=[...r],i()):r=[{resolve:i,reject:n}];let s=this.normalizeOptions(t),a=on.normalizeOrigin(e,t&&t.servername);if(a===void 0){for(let{reject:l}of r)l(new TypeError("The `origin` argument needs to be a string or an URL object"));return}if(s in this.sessions){let l=this.sessions[s],C=-1,f=-1,E;for(let m of l){let w=m.remoteSettings.maxConcurrentStreams;if(w=w||m[fc]||m.destroyed)continue;E||(C=w),D>f&&(E=m,f=D)}}if(E){if(r.length!==1){for(let{reject:m}of r){let w=new Error(`Expected the length of listeners to be 1, got ${r.length}. +Please report this to https://github.com/szmarczak/http2-wrapper/`);m(w)}return}r[0].resolve(E);return}}if(s in this.queue){if(a in this.queue[s]){this.queue[s][a].listeners.push(...r),this._tryToCreateNewSession(s,a);return}}else this.queue[s]={};let g=()=>{s in this.queue&&this.queue[s][a]===c&&(delete this.queue[s][a],Object.keys(this.queue[s]).length===0&&delete this.queue[s])},c=()=>{let l=`${a}:${s}`,C=!1;try{let f=WEe.connect(e,{createConnection:this.createConnection,settings:this.settings,session:this.tlsSessionCache.get(l),...t});f[Xt]=0,f[fc]=!1;let E=()=>f[Xt]{this.tlsSessionCache.set(l,D)}),f.once("error",D=>{for(let{reject:L}of r)L(D);this.tlsSessionCache.delete(l)}),f.setTimeout(this.timeout,()=>{f.destroy()}),f.once("close",()=>{if(C){m&&this._freeSessionsCount--,this._sessionsCount--;let D=this.sessions[s];D.splice(D.indexOf(f),1),D.length===0&&delete this.sessions[s]}else{let D=new Error("Session closed without receiving a SETTINGS frame");D.code="HTTP2WRAPPER_NOSETTINGS";for(let{reject:L}of r)L(D);g()}this._tryToCreateNewSession(s,a)});let w=()=>{if(!(!(s in this.queue)||!E())){for(let D of f[ni])if(D in this.queue[s]){let{listeners:L}=this.queue[s][D];for(;L.length!==0&&E();)L.shift().resolve(f);let K=this.queue[s];if(K[D].listeners.length===0&&(delete K[D],Object.keys(K).length===0)){delete this.queue[s];break}if(!E())break}}};f.on("origin",()=>{f[ni]=f.originSet,E()&&(w(),Nm(this.sessions[s],f))}),f.once("remoteSettings",()=>{if(f.ref(),f.unref(),this._sessionsCount++,c.destroyed){let D=new Error("Agent has been destroyed");for(let L of r)L.reject(D);f.destroy();return}f[ni]=f.originSet;{let D=this.sessions;if(s in D){let L=D[s];L.splice(XEe(L,f,ZEe),0,f)}else D[s]=[f]}this._freeSessionsCount+=1,C=!0,this.emit("session",f),w(),g(),f[Xt]===0&&this._freeSessionsCount>this.maxFreeSessions&&f.close(),r.length!==0&&(this.getSession(a,t,r),r.length=0),f.on("remoteSettings",()=>{w(),Nm(this.sessions[s],f)})}),f[t_]=f.request,f.request=(D,L)=>{if(f[fc])throw new Error("The session is gracefully closing. No new streams are allowed.");let K=f[t_](D,L);return f.ref(),++f[Xt],f[Xt]===f.remoteSettings.maxConcurrentStreams&&this._freeSessionsCount--,K.once("close",()=>{if(m=E(),--f[Xt],!f.destroyed&&!f.closed&&($Ee(this.sessions[s],f),E()&&!f.closed)){m||(this._freeSessionsCount++,m=!0);let _=f[Xt]===0;_&&f.unref(),_&&(this._freeSessionsCount>this.maxFreeSessions||f[fc])?f.close():(Nm(this.sessions[s],f),w())}}),K}}catch(f){for(let E of r)E.reject(f);g()}};c.listeners=r,c.completed=!1,c.destroyed=!1,this.queue[s][a]=c,this._tryToCreateNewSession(s,a)})}request(e,t,r,i){return new Promise((n,s)=>{this.getSession(e,t,[{reject:s,resolve:a=>{try{n(a.request(r,i))}catch(g){s(g)}}}])})}createConnection(e,t){return on.connect(e,t)}static connect(e,t){t.ALPNProtocols=["h2"];let r=e.port||443,i=e.hostname||e.host;return typeof t.servername>"u"&&(t.servername=i),jEe.connect(r,i,t)}closeFreeSessions(){for(let e of Object.values(this.sessions))for(let t of e)t[Xt]===0&&t.close()}destroy(e){for(let t of Object.values(this.sessions))for(let r of t)r.destroy(e);for(let t of Object.values(this.queue))for(let r of Object.values(t))r.destroyed=!0;this.queue={}}get freeSessions(){return r_({agent:this,isFree:!0})}get busySessions(){return r_({agent:this,isFree:!1})}};on.kCurrentStreamsCount=Xt;on.kGracefullyClosing=fc;n_.exports={Agent:on,globalAgent:new on}});var Pm=p((I1e,s_)=>{"use strict";var{Readable:eBe}=require("stream"),Lm=class extends eBe{constructor(e,t){super({highWaterMark:t,autoDestroy:!1}),this.statusCode=null,this.statusMessage="",this.httpVersion="2.0",this.httpVersionMajor=2,this.httpVersionMinor=0,this.headers={},this.trailers={},this.req=null,this.aborted=!1,this.complete=!1,this.upgrade=null,this.rawHeaders=[],this.rawTrailers=[],this.socket=e,this.connection=e,this._dumped=!1}_destroy(e){this.req._request.destroy(e)}setTimeout(e,t){return this.req.setTimeout(e,t),this}_dump(){this._dumped||(this._dumped=!0,this.removeAllListeners("data"),this.resume())}_read(){this.req&&this.req._request.resume()}};s_.exports=Lm});var Om=p((E1e,o_)=>{"use strict";o_.exports=A=>{let e={protocol:A.protocol,hostname:typeof A.hostname=="string"&&A.hostname.startsWith("[")?A.hostname.slice(1,-1):A.hostname,host:A.host,hash:A.hash,search:A.search,pathname:A.pathname,href:A.href,path:`${A.pathname||""}${A.search||""}`};return typeof A.port=="string"&&A.port.length!==0&&(e.port=Number(A.port)),(A.username||A.password)&&(e.auth=`${A.username||""}:${A.password||""}`),e}});var g_=p((B1e,a_)=>{"use strict";a_.exports=(A,e,t)=>{for(let r of t)A.on(r,(...i)=>e.emit(r,...i))}});var l_=p((p1e,c_)=>{"use strict";c_.exports=A=>{switch(A){case":method":case":scheme":case":authority":case":path":return!0;default:return!1}}});var C_=p((d1e,u_)=>{"use strict";var Ic=(A,e,t)=>{u_.exports[e]=class extends A{constructor(...i){super(typeof t=="string"?t:t(i)),this.name=`${super.name} [${e}]`,this.code=e}}};Ic(TypeError,"ERR_INVALID_ARG_TYPE",A=>{let e=A[0].includes(".")?"property":"argument",t=A[1],r=Array.isArray(t);return r&&(t=`${t.slice(0,-1).join(", ")} or ${t.slice(-1)}`),`The "${A[0]}" ${e} must be ${r?"one of":"of"} type ${t}. Received ${typeof A[2]}`});Ic(TypeError,"ERR_INVALID_PROTOCOL",A=>`Protocol "${A[0]}" not supported. Expected "${A[1]}"`);Ic(Error,"ERR_HTTP_HEADERS_SENT",A=>`Cannot ${A[0]} headers after they are sent to the client`);Ic(TypeError,"ERR_INVALID_HTTP_TOKEN",A=>`${A[0]} must be a valid HTTP token [${A[1]}]`);Ic(TypeError,"ERR_HTTP_INVALID_HEADER_VALUE",A=>`Invalid value "${A[0]} for header "${A[1]}"`);Ic(TypeError,"ERR_INVALID_CHAR",A=>`Invalid character in ${A[0]} [${A[1]}]`)});var Gm=p((y1e,Q_)=>{"use strict";var ABe=require("http2"),{Writable:tBe}=require("stream"),{Agent:h_,globalAgent:rBe}=Mm(),iBe=Pm(),nBe=Om(),sBe=g_(),oBe=l_(),{ERR_INVALID_ARG_TYPE:Km,ERR_INVALID_PROTOCOL:aBe,ERR_HTTP_HEADERS_SENT:f_,ERR_INVALID_HTTP_TOKEN:gBe,ERR_HTTP_INVALID_HEADER_VALUE:cBe,ERR_INVALID_CHAR:lBe}=C_(),{HTTP2_HEADER_STATUS:I_,HTTP2_HEADER_METHOD:E_,HTTP2_HEADER_PATH:B_,HTTP2_METHOD_CONNECT:uBe}=ABe.constants,Ot=Symbol("headers"),Um=Symbol("origin"),Tm=Symbol("session"),p_=Symbol("options"),FI=Symbol("flushedHeaders"),du=Symbol("jobs"),CBe=/^[\^`\-\w!#$%&*+.|~]+$/,hBe=/[^\t\u0020-\u007E\u0080-\u00FF]/,qm=class extends tBe{constructor(e,t,r){super({autoDestroy:!1});let i=typeof e=="string"||e instanceof URL;if(i&&(e=nBe(e instanceof URL?e:new URL(e))),typeof t=="function"||t===void 0?(r=t,t=i?e:{...e}):t={...e,...t},t.h2session)this[Tm]=t.h2session;else if(t.agent===!1)this.agent=new h_({maxFreeSessions:0});else if(typeof t.agent>"u"||t.agent===null)typeof t.createConnection=="function"?(this.agent=new h_({maxFreeSessions:0}),this.agent.createConnection=t.createConnection):this.agent=rBe;else if(typeof t.agent.request=="function")this.agent=t.agent;else throw new Km("options.agent",["Agent-like Object","undefined","false"],t.agent);if(t.protocol&&t.protocol!=="https:")throw new aBe(t.protocol,"https:");let n=t.port||t.defaultPort||this.agent&&this.agent.defaultPort||443,s=t.hostname||t.host||"localhost";delete t.hostname,delete t.host,delete t.port;let{timeout:a}=t;if(t.timeout=void 0,this[Ot]=Object.create(null),this[du]=[],this.socket=null,this.connection=null,this.method=t.method||"GET",this.path=t.path,this.res=null,this.aborted=!1,this.reusedSocket=!1,t.headers)for(let[g,c]of Object.entries(t.headers))this.setHeader(g,c);t.auth&&!("authorization"in this[Ot])&&(this[Ot].authorization="Basic "+Buffer.from(t.auth).toString("base64")),t.session=t.tlsSession,t.path=t.socketPath,this[p_]=t,n===443?(this[Um]=`https://${s}`,":authority"in this[Ot]||(this[Ot][":authority"]=s)):(this[Um]=`https://${s}:${n}`,":authority"in this[Ot]||(this[Ot][":authority"]=`${s}:${n}`)),a&&this.setTimeout(a),r&&this.once("response",r),this[FI]=!1}get method(){return this[Ot][E_]}set method(e){e&&(this[Ot][E_]=e.toUpperCase())}get path(){return this[Ot][B_]}set path(e){e&&(this[Ot][B_]=e)}get _mustNotHaveABody(){return this.method==="GET"||this.method==="HEAD"||this.method==="DELETE"}_write(e,t,r){if(this._mustNotHaveABody){r(new Error("The GET, HEAD and DELETE methods must NOT have a body"));return}this.flushHeaders();let i=()=>this._request.write(e,t,r);this._request?i():this[du].push(i)}_final(e){if(this.destroyed)return;this.flushHeaders();let t=()=>{if(this._mustNotHaveABody){e();return}this._request.end(e)};this._request?t():this[du].push(t)}abort(){this.res&&this.res.complete||(this.aborted||process.nextTick(()=>this.emit("abort")),this.aborted=!0,this.destroy())}_destroy(e,t){this.res&&this.res._dump(),this._request&&this._request.destroy(),t(e)}async flushHeaders(){if(this[FI]||this.destroyed)return;this[FI]=!0;let e=this.method===uBe,t=r=>{if(this._request=r,this.destroyed){r.destroy();return}e||sBe(r,this,["timeout","continue","close","error"]);let i=s=>(...a)=>{!this.writable&&!this.destroyed?s(...a):this.once("finish",()=>{s(...a)})};r.once("response",i((s,a,g)=>{let c=new iBe(this.socket,r.readableHighWaterMark);this.res=c,c.req=this,c.statusCode=s[I_],c.headers=s,c.rawHeaders=g,c.once("end",()=>{this.aborted?(c.aborted=!0,c.emit("aborted")):(c.complete=!0,c.socket=null,c.connection=null)}),e?(c.upgrade=!0,this.emit("connect",c,r,Buffer.alloc(0))?this.emit("close"):r.destroy()):(r.on("data",l=>{!c._dumped&&!c.push(l)&&r.pause()}),r.once("end",()=>{c.push(null)}),this.emit("response",c)||c._dump())})),r.once("headers",i(s=>this.emit("information",{statusCode:s[I_]}))),r.once("trailers",i((s,a,g)=>{let{res:c}=this;c.trailers=s,c.rawTrailers=g}));let{socket:n}=r.session;this.socket=n,this.connection=n;for(let s of this[du])s();this.emit("socket",this.socket)};if(this[Tm])try{t(this[Tm].request(this[Ot]))}catch(r){this.emit("error",r)}else{this.reusedSocket=!0;try{t(await this.agent.request(this[Um],this[p_],this[Ot]))}catch(r){this.emit("error",r)}}}getHeader(e){if(typeof e!="string")throw new Km("name","string",e);return this[Ot][e.toLowerCase()]}get headersSent(){return this[FI]}removeHeader(e){if(typeof e!="string")throw new Km("name","string",e);if(this.headersSent)throw new f_("remove");delete this[Ot][e.toLowerCase()]}setHeader(e,t){if(this.headersSent)throw new f_("set");if(typeof e!="string"||!CBe.test(e)&&!oBe(e))throw new gBe("Header name",e);if(typeof t>"u")throw new cBe(t,e);if(hBe.test(t))throw new lBe("header content",e);this[Ot][e.toLowerCase()]=t}setNoDelay(){}setSocketKeepAlive(){}setTimeout(e,t){let r=()=>this._request.setTimeout(e,t);return this._request?r():this[du].push(r),this}get maxHeadersCount(){if(!this.destroyed&&this._request)return this._request.session.localSettings.maxHeaderListSize}set maxHeadersCount(e){}};Q_.exports=qm});var y_=p((m1e,d_)=>{"use strict";var fBe=require("tls");d_.exports=(A={},e=fBe.connect)=>new Promise((t,r)=>{let i=!1,n,s=async()=>{await g,n.off("timeout",a),n.off("error",r),A.resolveSocket?(t({alpnProtocol:n.alpnProtocol,socket:n,timeout:i}),i&&(await Promise.resolve(),n.emit("timeout"))):(n.destroy(),t({alpnProtocol:n.alpnProtocol,timeout:i}))},a=async()=>{i=!0,s()},g=(async()=>{try{n=await e(A,s),n.on("error",r),n.once("timeout",a)}catch(c){r(c)}})()})});var w_=p((w1e,m_)=>{"use strict";var IBe=require("net");m_.exports=A=>{let e=A.host,t=A.headers&&A.headers.host;return t&&(t.startsWith("[")?t.indexOf("]")===-1?e=t:e=t.slice(1,-1):e=t.split(":",1)[0]),IBe.isIP(e)?"":e}});var F_=p((D1e,_m)=>{"use strict";var D_=require("http"),Ym=require("https"),EBe=y_(),BBe=vm(),pBe=Gm(),QBe=w_(),dBe=Om(),xI=new BBe({maxSize:100}),yu=new Map,S_=(A,e,t)=>{e._httpMessage={shouldKeepAlive:!0};let r=()=>{A.emit("free",e,t)};e.on("free",r);let i=()=>{A.removeSocket(e,t)};e.on("close",i);let n=()=>{A.removeSocket(e,t),e.off("close",i),e.off("free",r),e.off("agentRemove",n)};e.on("agentRemove",n),A.emit("free",e,t)},yBe=async A=>{let e=`${A.host}:${A.port}:${A.ALPNProtocols.sort()}`;if(!xI.has(e)){if(yu.has(e))return(await yu.get(e)).alpnProtocol;let{path:t,agent:r}=A;A.path=A.socketPath;let i=EBe(A);yu.set(e,i);try{let{socket:n,alpnProtocol:s}=await i;if(xI.set(e,s),A.path=t,s==="h2")n.destroy();else{let{globalAgent:a}=Ym,g=Ym.Agent.prototype.createConnection;r?r.createConnection===g?S_(r,n,A):n.destroy():a.createConnection===g?S_(a,n,A):n.destroy()}return yu.delete(e),s}catch(n){throw yu.delete(e),n}}return xI.get(e)};_m.exports=async(A,e,t)=>{if((typeof A=="string"||A instanceof URL)&&(A=dBe(new URL(A))),typeof e=="function"&&(t=e,e=void 0),e={ALPNProtocols:["h2","http/1.1"],...A,...e,resolveSocket:!0},!Array.isArray(e.ALPNProtocols)||e.ALPNProtocols.length===0)throw new Error("The `ALPNProtocols` option must be an Array with at least one entry");e.protocol=e.protocol||"https:";let r=e.protocol==="https:";e.host=e.hostname||e.host||"localhost",e.session=e.tlsSession,e.servername=e.servername||QBe(e),e.port=e.port||(r?443:80),e._defaultAgent=r?Ym.globalAgent:D_.globalAgent;let i=e.agent;if(i){if(i.addRequest)throw new Error("The `options.agent` object can contain only `http`, `https` or `http2` properties");e.agent=i[r?"https":"http"]}return r&&await yBe(e)==="h2"?(i&&(e.agent=i.http2),new pBe(e,t)):D_.request(e,t)};_m.exports.protocolCache=xI});var R_=p((S1e,x_)=>{"use strict";var mBe=require("http2"),wBe=Mm(),Hm=Gm(),DBe=Pm(),SBe=F_(),FBe=(A,e,t)=>new Hm(A,e,t),xBe=(A,e,t)=>{let r=new Hm(A,e,t);return r.end(),r};x_.exports={...mBe,ClientRequest:Hm,IncomingMessage:DBe,...wBe,request:FBe,get:xBe,auto:SBe}});var jm=p(Jm=>{"use strict";Object.defineProperty(Jm,"__esModule",{value:!0});var b_=Vn();Jm.default=A=>b_.default.nodeStream(A)&&b_.default.function_(A.getBoundary)});var M_=p(Wm=>{"use strict";Object.defineProperty(Wm,"__esModule",{value:!0});var v_=require("fs"),N_=require("util"),k_=Vn(),RBe=jm(),bBe=N_.promisify(v_.stat);Wm.default=async(A,e)=>{if(e&&"content-length"in e)return Number(e["content-length"]);if(!A)return 0;if(k_.default.string(A))return Buffer.byteLength(A);if(k_.default.buffer(A))return A.length;if(RBe.default(A))return N_.promisify(A.getLength.bind(A))();if(A instanceof v_.ReadStream){let{size:t}=await bBe(A.path);return t===0?void 0:t}}});var Vm=p(zm=>{"use strict";Object.defineProperty(zm,"__esModule",{value:!0});function kBe(A,e,t){let r={};for(let i of t)r[i]=(...n)=>{e.emit(i,...n)},A.on(i,r[i]);return()=>{for(let i of t)A.off(i,r[i])}}zm.default=kBe});var L_=p(Xm=>{"use strict";Object.defineProperty(Xm,"__esModule",{value:!0});Xm.default=()=>{let A=[];return{once(e,t,r){e.once(t,r),A.push({origin:e,event:t,fn:r})},unhandleAll(){for(let e of A){let{origin:t,event:r,fn:i}=e;t.removeListener(r,i)}A.length=0}}}});var O_=p(mu=>{"use strict";Object.defineProperty(mu,"__esModule",{value:!0});mu.TimeoutError=void 0;var vBe=require("net"),NBe=L_(),P_=Symbol("reentry"),MBe=()=>{},RI=class extends Error{constructor(e,t){super(`Timeout awaiting '${t}' for ${e}ms`),this.event=t,this.name="TimeoutError",this.code="ETIMEDOUT"}};mu.TimeoutError=RI;mu.default=(A,e,t)=>{if(P_ in A)return MBe;A[P_]=!0;let r=[],{once:i,unhandleAll:n}=NBe.default(),s=(C,f,E)=>{var m;let w=setTimeout(f,C,C,E);(m=w.unref)===null||m===void 0||m.call(w);let D=()=>{clearTimeout(w)};return r.push(D),D},{host:a,hostname:g}=t,c=(C,f)=>{A.destroy(new RI(C,f))},l=()=>{for(let C of r)C();n()};if(A.once("error",C=>{if(l(),A.listenerCount("error")===0)throw C}),A.once("close",l),i(A,"response",C=>{i(C,"end",l)}),typeof e.request<"u"&&s(e.request,c,"request"),typeof e.socket<"u"){let C=()=>{c(e.socket,"socket")};A.setTimeout(e.socket,C),r.push(()=>{A.removeListener("timeout",C)})}return i(A,"socket",C=>{var f;let{socketPath:E}=A;if(C.connecting){let m=Boolean(E??vBe.isIP((f=g??a)!==null&&f!==void 0?f:"")!==0);if(typeof e.lookup<"u"&&!m&&typeof C.address().address>"u"){let w=s(e.lookup,c,"lookup");i(C,"lookup",w)}if(typeof e.connect<"u"){let w=()=>s(e.connect,c,"connect");m?i(C,"connect",w()):i(C,"lookup",D=>{D===null&&i(C,"connect",w())})}typeof e.secureConnect<"u"&&t.protocol==="https:"&&i(C,"connect",()=>{let w=s(e.secureConnect,c,"secureConnect");i(C,"secureConnect",w)})}if(typeof e.send<"u"){let m=()=>s(e.send,c,"send");C.connecting?i(C,"connect",()=>{i(A,"upload-complete",m())}):i(A,"upload-complete",m())}}),typeof e.response<"u"&&i(A,"upload-complete",()=>{let C=s(e.response,c,"response");i(A,"response",C)}),l}});var U_=p(Zm=>{"use strict";Object.defineProperty(Zm,"__esModule",{value:!0});var K_=Vn();Zm.default=A=>{A=A;let e={protocol:A.protocol,hostname:K_.default.string(A.hostname)&&A.hostname.startsWith("[")?A.hostname.slice(1,-1):A.hostname,host:A.host,hash:A.hash,search:A.search,pathname:A.pathname,href:A.href,path:`${A.pathname||""}${A.search||""}`};return K_.default.string(A.port)&&A.port.length>0&&(e.port=Number(A.port)),(A.username||A.password)&&(e.auth=`${A.username||""}:${A.password||""}`),e}});var T_=p($m=>{"use strict";Object.defineProperty($m,"__esModule",{value:!0});var LBe=require("url"),PBe=["protocol","host","hostname","port","pathname","search"];$m.default=(A,e)=>{var t,r;if(e.path){if(e.pathname)throw new TypeError("Parameters `path` and `pathname` are mutually exclusive.");if(e.search)throw new TypeError("Parameters `path` and `search` are mutually exclusive.");if(e.searchParams)throw new TypeError("Parameters `path` and `searchParams` are mutually exclusive.")}if(e.search&&e.searchParams)throw new TypeError("Parameters `search` and `searchParams` are mutually exclusive.");if(!A){if(!e.protocol)throw new TypeError("No URL protocol specified");A=`${e.protocol}//${(r=(t=e.hostname)!==null&&t!==void 0?t:e.host)!==null&&r!==void 0?r:""}`}let i=new LBe.URL(A);if(e.path){let n=e.path.indexOf("?");n===-1?e.pathname=e.path:(e.pathname=e.path.slice(0,n),e.search=e.path.slice(n+1)),delete e.path}for(let n of PBe)e[n]&&(i[n]=e[n].toString());return i}});var q_=p(Aw=>{"use strict";Object.defineProperty(Aw,"__esModule",{value:!0});var ew=class{constructor(){this.weakMap=new WeakMap,this.map=new Map}set(e,t){typeof e=="object"?this.weakMap.set(e,t):this.map.set(e,t)}get(e){return typeof e=="object"?this.weakMap.get(e):this.map.get(e)}has(e){return typeof e=="object"?this.weakMap.has(e):this.map.has(e)}};Aw.default=ew});var rw=p(tw=>{"use strict";Object.defineProperty(tw,"__esModule",{value:!0});var OBe=async A=>{let e=[],t=0;for await(let r of A)e.push(r),t+=Buffer.byteLength(r);return Buffer.isBuffer(e[0])?Buffer.concat(e,t):Buffer.from(e.join(""))};tw.default=OBe});var Y_=p(fa=>{"use strict";Object.defineProperty(fa,"__esModule",{value:!0});fa.dnsLookupIpVersionToFamily=fa.isDnsLookupIpVersion=void 0;var G_={auto:0,ipv4:4,ipv6:6};fa.isDnsLookupIpVersion=A=>A in G_;fa.dnsLookupIpVersionToFamily=A=>{if(fa.isDnsLookupIpVersion(A))return G_[A];throw new Error("Invalid DNS lookup IP version")}});var iw=p(bI=>{"use strict";Object.defineProperty(bI,"__esModule",{value:!0});bI.isResponseOk=void 0;bI.isResponseOk=A=>{let{statusCode:e}=A,t=A.request.options.followRedirect?299:399;return e>=200&&e<=t||e===304}});var H_=p(nw=>{"use strict";Object.defineProperty(nw,"__esModule",{value:!0});var __=new Set;nw.default=A=>{__.has(A)||(__.add(A),process.emitWarning(`Got: ${A}`,{type:"DeprecationWarning"}))}});var J_=p(sw=>{"use strict";Object.defineProperty(sw,"__esModule",{value:!0});var WA=Vn(),KBe=(A,e)=>{if(WA.default.null_(A.encoding))throw new TypeError("To get a Buffer, set `options.responseType` to `buffer` instead");WA.assert.any([WA.default.string,WA.default.undefined],A.encoding),WA.assert.any([WA.default.boolean,WA.default.undefined],A.resolveBodyOnly),WA.assert.any([WA.default.boolean,WA.default.undefined],A.methodRewriting),WA.assert.any([WA.default.boolean,WA.default.undefined],A.isStream),WA.assert.any([WA.default.string,WA.default.undefined],A.responseType),A.responseType===void 0&&(A.responseType="text");let{retry:t}=A;if(e?A.retry={...e.retry}:A.retry={calculateDelay:r=>r.computedValue,limit:0,methods:[],statusCodes:[],errorCodes:[],maxRetryAfter:void 0},WA.default.object(t)?(A.retry={...A.retry,...t},A.retry.methods=[...new Set(A.retry.methods.map(r=>r.toUpperCase()))],A.retry.statusCodes=[...new Set(A.retry.statusCodes)],A.retry.errorCodes=[...new Set(A.retry.errorCodes)]):WA.default.number(t)&&(A.retry.limit=t),WA.default.undefined(A.retry.maxRetryAfter)&&(A.retry.maxRetryAfter=Math.min(...[A.timeout.request,A.timeout.connect].filter(WA.default.number))),WA.default.object(A.pagination)){e&&(A.pagination={...e.pagination,...A.pagination});let{pagination:r}=A;if(!WA.default.function_(r.transform))throw new Error("`options.pagination.transform` must be implemented");if(!WA.default.function_(r.shouldContinue))throw new Error("`options.pagination.shouldContinue` must be implemented");if(!WA.default.function_(r.filter))throw new TypeError("`options.pagination.filter` must be implemented");if(!WA.default.function_(r.paginate))throw new Error("`options.pagination.paginate` must be implemented")}return A.responseType==="json"&&A.headers.accept===void 0&&(A.headers.accept="application/json"),A};sw.default=KBe});var j_=p(wu=>{"use strict";Object.defineProperty(wu,"__esModule",{value:!0});wu.retryAfterStatusCodes=void 0;wu.retryAfterStatusCodes=new Set([413,429,503]);var UBe=({attemptCount:A,retryOptions:e,error:t,retryAfter:r})=>{if(A>e.limit)return 0;let i=e.methods.includes(t.options.method),n=e.errorCodes.includes(t.code),s=t.response&&e.statusCodes.includes(t.response.statusCode);if(!i||!n&&!s)return 0;if(t.response){if(r)return e.maxRetryAfter===void 0||r>e.maxRetryAfter?0:r;if(t.response.statusCode===413)return 0}let a=Math.random()*100;return 2**(A-1)*1e3+a};wu.default=UBe});var Fu=p(FA=>{"use strict";Object.defineProperty(FA,"__esModule",{value:!0});FA.UnsupportedProtocolError=FA.ReadError=FA.TimeoutError=FA.UploadError=FA.CacheError=FA.HTTPError=FA.MaxRedirectsError=FA.RequestError=FA.setNonEnumerableProperties=FA.knownHookEvents=FA.withoutBody=FA.kIsNormalizedAlready=void 0;var W_=require("util"),z_=require("stream"),TBe=require("fs"),Hs=require("url"),V_=require("http"),ow=require("http"),qBe=require("https"),GBe=gY(),YBe=IY(),X_=VY(),_Be=e_(),HBe=R_(),JBe=DI(),z=Vn(),jBe=M_(),Z_=jm(),WBe=Vm(),$_=O_(),zBe=U_(),eH=T_(),VBe=q_(),XBe=rw(),AH=Y_(),ZBe=iw(),Js=H_(),$Be=J_(),epe=j_(),aw,St=Symbol("request"),NI=Symbol("response"),Ec=Symbol("responseSize"),Bc=Symbol("downloadedSize"),pc=Symbol("bodySize"),Qc=Symbol("uploadedSize"),kI=Symbol("serverResponsesPiped"),tH=Symbol("unproxyEvents"),rH=Symbol("isFromCache"),gw=Symbol("cancelTimeouts"),iH=Symbol("startedReading"),dc=Symbol("stopReading"),vI=Symbol("triggerRead"),js=Symbol("body"),Du=Symbol("jobs"),nH=Symbol("originalResponse"),sH=Symbol("retryTimeout");FA.kIsNormalizedAlready=Symbol("isNormalizedAlready");var Ape=z.default.string(process.versions.brotli);FA.withoutBody=new Set(["GET","HEAD"]);FA.knownHookEvents=["init","beforeRequest","beforeRedirect","beforeError","beforeRetry","afterResponse"];function tpe(A){for(let e in A){let t=A[e];if(!z.default.string(t)&&!z.default.number(t)&&!z.default.boolean(t)&&!z.default.null_(t)&&!z.default.undefined(t))throw new TypeError(`The \`searchParams\` value '${String(t)}' must be a string, number, boolean or null`)}}function rpe(A){return z.default.object(A)&&!("statusCode"in A)}var cw=new VBe.default,ipe=async A=>new Promise((e,t)=>{let r=i=>{t(i)};A.pending||e(),A.once("error",r),A.once("ready",()=>{A.off("error",r),e()})}),npe=new Set([300,301,302,303,304,307,308]),spe=["context","body","json","form"];FA.setNonEnumerableProperties=(A,e)=>{let t={};for(let r of A)if(!!r)for(let i of spe)i in r&&(t[i]={writable:!0,configurable:!0,enumerable:!1,value:r[i]});Object.defineProperties(e,t)};var ot=class extends Error{constructor(e,t,r){var i,n;if(super(e),Error.captureStackTrace(this,this.constructor),this.name="RequestError",this.code=(i=t.code)!==null&&i!==void 0?i:"ERR_GOT_REQUEST_ERROR",r instanceof TI?(Object.defineProperty(this,"request",{enumerable:!1,value:r}),Object.defineProperty(this,"response",{enumerable:!1,value:r[NI]}),Object.defineProperty(this,"options",{enumerable:!1,value:r.options})):Object.defineProperty(this,"options",{enumerable:!1,value:r}),this.timings=(n=this.request)===null||n===void 0?void 0:n.timings,z.default.string(t.stack)&&z.default.string(this.stack)){let s=this.stack.indexOf(this.message)+this.message.length,a=this.stack.slice(s).split(` +`).reverse(),g=t.stack.slice(t.stack.indexOf(t.message)+t.message.length).split(` +`).reverse();for(;g.length!==0&&g[0]===a[0];)a.shift();this.stack=`${this.stack.slice(0,s)}${a.reverse().join(` +`)}${g.reverse().join(` +`)}`}}};FA.RequestError=ot;var MI=class extends ot{constructor(e){super(`Redirected ${e.options.maxRedirects} times. Aborting.`,{},e),this.name="MaxRedirectsError",this.code="ERR_TOO_MANY_REDIRECTS"}};FA.MaxRedirectsError=MI;var LI=class extends ot{constructor(e){super(`Response code ${e.statusCode} (${e.statusMessage})`,{},e.request),this.name="HTTPError",this.code="ERR_NON_2XX_3XX_RESPONSE"}};FA.HTTPError=LI;var PI=class extends ot{constructor(e,t){super(e.message,e,t),this.name="CacheError",this.code=this.code==="ERR_GOT_REQUEST_ERROR"?"ERR_CACHE_ACCESS":this.code}};FA.CacheError=PI;var OI=class extends ot{constructor(e,t){super(e.message,e,t),this.name="UploadError",this.code=this.code==="ERR_GOT_REQUEST_ERROR"?"ERR_UPLOAD":this.code}};FA.UploadError=OI;var KI=class extends ot{constructor(e,t,r){super(e.message,e,r),this.name="TimeoutError",this.event=e.event,this.timings=t}};FA.TimeoutError=KI;var Su=class extends ot{constructor(e,t){super(e.message,e,t),this.name="ReadError",this.code=this.code==="ERR_GOT_REQUEST_ERROR"?"ERR_READING_RESPONSE_STREAM":this.code}};FA.ReadError=Su;var UI=class extends ot{constructor(e){super(`Unsupported protocol "${e.url.protocol}"`,{},e),this.name="UnsupportedProtocolError",this.code="ERR_UNSUPPORTED_PROTOCOL"}};FA.UnsupportedProtocolError=UI;var ope=["socket","connect","continue","information","upgrade","timeout"],TI=class extends z_.Duplex{constructor(e,t={},r){super({autoDestroy:!1,highWaterMark:0}),this[Bc]=0,this[Qc]=0,this.requestInitialized=!1,this[kI]=new Set,this.redirects=[],this[dc]=!1,this[vI]=!1,this[Du]=[],this.retryCount=0,this._progressCallbacks=[];let i=()=>this._unlockWrite(),n=()=>this._lockWrite();this.on("pipe",c=>{c.prependListener("data",i),c.on("data",n),c.prependListener("end",i),c.on("end",n)}),this.on("unpipe",c=>{c.off("data",i),c.off("data",n),c.off("end",i),c.off("end",n)}),this.on("pipe",c=>{c instanceof ow.IncomingMessage&&(this.options.headers={...c.headers,...this.options.headers})});let{json:s,body:a,form:g}=t;if((s||a||g)&&this._lockWrite(),FA.kIsNormalizedAlready in t)this.options=t;else try{this.options=this.constructor.normalizeArguments(e,t,r)}catch(c){z.default.nodeStream(t.body)&&t.body.destroy(),this.destroy(c);return}(async()=>{var c;try{this.options.body instanceof TBe.ReadStream&&await ipe(this.options.body);let{url:l}=this.options;if(!l)throw new TypeError("Missing `url` property");if(this.requestUrl=l.toString(),decodeURI(this.requestUrl),await this._finalizeBody(),await this._makeRequest(),this.destroyed){(c=this[St])===null||c===void 0||c.destroy();return}for(let C of this[Du])C();this[Du].length=0,this.requestInitialized=!0}catch(l){if(l instanceof ot){this._beforeError(l);return}this.destroyed||this.destroy(l)}})()}static normalizeArguments(e,t,r){var i,n,s,a,g;let c=t;if(z.default.object(e)&&!z.default.urlInstance(e))t={...r,...e,...t};else{if(e&&t&&t.url!==void 0)throw new TypeError("The `url` option is mutually exclusive with the `input` argument");t={...r,...t},e!==void 0&&(t.url=e),z.default.urlInstance(t.url)&&(t.url=new Hs.URL(t.url.toString()))}if(t.cache===!1&&(t.cache=void 0),t.dnsCache===!1&&(t.dnsCache=void 0),z.assert.any([z.default.string,z.default.undefined],t.method),z.assert.any([z.default.object,z.default.undefined],t.headers),z.assert.any([z.default.string,z.default.urlInstance,z.default.undefined],t.prefixUrl),z.assert.any([z.default.object,z.default.undefined],t.cookieJar),z.assert.any([z.default.object,z.default.string,z.default.undefined],t.searchParams),z.assert.any([z.default.object,z.default.string,z.default.undefined],t.cache),z.assert.any([z.default.object,z.default.number,z.default.undefined],t.timeout),z.assert.any([z.default.object,z.default.undefined],t.context),z.assert.any([z.default.object,z.default.undefined],t.hooks),z.assert.any([z.default.boolean,z.default.undefined],t.decompress),z.assert.any([z.default.boolean,z.default.undefined],t.ignoreInvalidCookies),z.assert.any([z.default.boolean,z.default.undefined],t.followRedirect),z.assert.any([z.default.number,z.default.undefined],t.maxRedirects),z.assert.any([z.default.boolean,z.default.undefined],t.throwHttpErrors),z.assert.any([z.default.boolean,z.default.undefined],t.http2),z.assert.any([z.default.boolean,z.default.undefined],t.allowGetBody),z.assert.any([z.default.string,z.default.undefined],t.localAddress),z.assert.any([AH.isDnsLookupIpVersion,z.default.undefined],t.dnsLookupIpVersion),z.assert.any([z.default.object,z.default.undefined],t.https),z.assert.any([z.default.boolean,z.default.undefined],t.rejectUnauthorized),t.https&&(z.assert.any([z.default.boolean,z.default.undefined],t.https.rejectUnauthorized),z.assert.any([z.default.function_,z.default.undefined],t.https.checkServerIdentity),z.assert.any([z.default.string,z.default.object,z.default.array,z.default.undefined],t.https.certificateAuthority),z.assert.any([z.default.string,z.default.object,z.default.array,z.default.undefined],t.https.key),z.assert.any([z.default.string,z.default.object,z.default.array,z.default.undefined],t.https.certificate),z.assert.any([z.default.string,z.default.undefined],t.https.passphrase),z.assert.any([z.default.string,z.default.buffer,z.default.array,z.default.undefined],t.https.pfx)),z.assert.any([z.default.object,z.default.undefined],t.cacheOptions),z.default.string(t.method)?t.method=t.method.toUpperCase():t.method="GET",t.headers===r?.headers?t.headers={...t.headers}:t.headers=JBe({...r?.headers,...t.headers}),"slashes"in t)throw new TypeError("The legacy `url.Url` has been deprecated. Use `URL` instead.");if("auth"in t)throw new TypeError("Parameter `auth` is deprecated. Use `username` / `password` instead.");if("searchParams"in t&&t.searchParams&&t.searchParams!==r?.searchParams){let E;if(z.default.string(t.searchParams)||t.searchParams instanceof Hs.URLSearchParams)E=new Hs.URLSearchParams(t.searchParams);else{tpe(t.searchParams),E=new Hs.URLSearchParams;for(let m in t.searchParams){let w=t.searchParams[m];w===null?E.append(m,""):w!==void 0&&E.append(m,w)}}(i=r?.searchParams)===null||i===void 0||i.forEach((m,w)=>{E.has(w)||E.append(w,m)}),t.searchParams=E}if(t.username=(n=t.username)!==null&&n!==void 0?n:"",t.password=(s=t.password)!==null&&s!==void 0?s:"",z.default.undefined(t.prefixUrl)?t.prefixUrl=(a=r?.prefixUrl)!==null&&a!==void 0?a:"":(t.prefixUrl=t.prefixUrl.toString(),t.prefixUrl!==""&&!t.prefixUrl.endsWith("/")&&(t.prefixUrl+="/")),z.default.string(t.url)){if(t.url.startsWith("/"))throw new Error("`input` must not start with a slash when using `prefixUrl`");t.url=eH.default(t.prefixUrl+t.url,t)}else(z.default.undefined(t.url)&&t.prefixUrl!==""||t.protocol)&&(t.url=eH.default(t.prefixUrl,t));if(t.url){"port"in t&&delete t.port;let{prefixUrl:E}=t;Object.defineProperty(t,"prefixUrl",{set:w=>{let D=t.url;if(!D.href.startsWith(w))throw new Error(`Cannot change \`prefixUrl\` from ${E} to ${w}: ${D.href}`);t.url=new Hs.URL(w+D.href.slice(E.length)),E=w},get:()=>E});let{protocol:m}=t.url;if(m==="unix:"&&(m="http:",t.url=new Hs.URL(`http://unix${t.url.pathname}${t.url.search}`)),t.searchParams&&(t.url.search=t.searchParams.toString()),m!=="http:"&&m!=="https:")throw new UI(t);t.username===""?t.username=t.url.username:t.url.username=t.username,t.password===""?t.password=t.url.password:t.url.password=t.password}let{cookieJar:l}=t;if(l){let{setCookie:E,getCookieString:m}=l;z.assert.function_(E),z.assert.function_(m),E.length===4&&m.length===0&&(E=W_.promisify(E.bind(t.cookieJar)),m=W_.promisify(m.bind(t.cookieJar)),t.cookieJar={setCookie:E,getCookieString:m})}let{cache:C}=t;if(C&&(cw.has(C)||cw.set(C,new X_((E,m)=>{let w=E[St](E,m);return z.default.promise(w)&&(w.once=(D,L)=>{if(D==="error")w.catch(L);else if(D==="abort")(async()=>{try{(await w).once("abort",L)}catch{}})();else throw new Error(`Unknown HTTP2 promise event: ${D}`);return w}),w},C))),t.cacheOptions={...t.cacheOptions},t.dnsCache===!0)aw||(aw=new YBe.default),t.dnsCache=aw;else if(!z.default.undefined(t.dnsCache)&&!t.dnsCache.lookup)throw new TypeError(`Parameter \`dnsCache\` must be a CacheableLookup instance or a boolean, got ${z.default(t.dnsCache)}`);z.default.number(t.timeout)?t.timeout={request:t.timeout}:r&&t.timeout!==r.timeout?t.timeout={...r.timeout,...t.timeout}:t.timeout={...t.timeout},t.context||(t.context={});let f=t.hooks===r?.hooks;t.hooks={...t.hooks};for(let E of FA.knownHookEvents)if(E in t.hooks)if(z.default.array(t.hooks[E]))t.hooks[E]=[...t.hooks[E]];else throw new TypeError(`Parameter \`${E}\` must be an Array, got ${z.default(t.hooks[E])}`);else t.hooks[E]=[];if(r&&!f)for(let E of FA.knownHookEvents)r.hooks[E].length>0&&(t.hooks[E]=[...r.hooks[E],...t.hooks[E]]);if("family"in t&&Js.default('"options.family" was never documented, please use "options.dnsLookupIpVersion"'),r?.https&&(t.https={...r.https,...t.https}),"rejectUnauthorized"in t&&Js.default('"options.rejectUnauthorized" is now deprecated, please use "options.https.rejectUnauthorized"'),"checkServerIdentity"in t&&Js.default('"options.checkServerIdentity" was never documented, please use "options.https.checkServerIdentity"'),"ca"in t&&Js.default('"options.ca" was never documented, please use "options.https.certificateAuthority"'),"key"in t&&Js.default('"options.key" was never documented, please use "options.https.key"'),"cert"in t&&Js.default('"options.cert" was never documented, please use "options.https.certificate"'),"passphrase"in t&&Js.default('"options.passphrase" was never documented, please use "options.https.passphrase"'),"pfx"in t&&Js.default('"options.pfx" was never documented, please use "options.https.pfx"'),"followRedirects"in t)throw new TypeError("The `followRedirects` option does not exist. Use `followRedirect` instead.");if(t.agent){for(let E in t.agent)if(E!=="http"&&E!=="https"&&E!=="http2")throw new TypeError(`Expected the \`options.agent\` properties to be \`http\`, \`https\` or \`http2\`, got \`${E}\``)}return t.maxRedirects=(g=t.maxRedirects)!==null&&g!==void 0?g:0,FA.setNonEnumerableProperties([r,c],t),$Be.default(t,r)}_lockWrite(){let e=()=>{throw new TypeError("The payload has been already provided")};this.write=e,this.end=e}_unlockWrite(){this.write=super.write,this.end=super.end}async _finalizeBody(){let{options:e}=this,{headers:t}=e,r=!z.default.undefined(e.form),i=!z.default.undefined(e.json),n=!z.default.undefined(e.body),s=r||i||n,a=FA.withoutBody.has(e.method)&&!(e.method==="GET"&&e.allowGetBody);if(this._cannotHaveBody=a,s){if(a)throw new TypeError(`The \`${e.method}\` method cannot be used with a body`);if([n,r,i].filter(g=>g).length>1)throw new TypeError("The `body`, `json` and `form` options are mutually exclusive");if(n&&!(e.body instanceof z_.Readable)&&!z.default.string(e.body)&&!z.default.buffer(e.body)&&!Z_.default(e.body))throw new TypeError("The `body` option must be a stream.Readable, string or Buffer");if(r&&!z.default.object(e.form))throw new TypeError("The `form` option must be an Object");{let g=!z.default.string(t["content-type"]);n?(Z_.default(e.body)&&g&&(t["content-type"]=`multipart/form-data; boundary=${e.body.getBoundary()}`),this[js]=e.body):r?(g&&(t["content-type"]="application/x-www-form-urlencoded"),this[js]=new Hs.URLSearchParams(e.form).toString()):(g&&(t["content-type"]="application/json"),this[js]=e.stringifyJson(e.json));let c=await jBe.default(this[js],e.headers);z.default.undefined(t["content-length"])&&z.default.undefined(t["transfer-encoding"])&&!a&&!z.default.undefined(c)&&(t["content-length"]=String(c))}}else a?this._lockWrite():this._unlockWrite();this[pc]=Number(t["content-length"])||void 0}async _onResponseBase(e){let{options:t}=this,{url:r}=t;this[nH]=e,t.decompress&&(e=_Be(e));let i=e.statusCode,n=e;n.statusMessage=n.statusMessage?n.statusMessage:V_.STATUS_CODES[i],n.url=t.url.toString(),n.requestUrl=this.requestUrl,n.redirectUrls=this.redirects,n.request=this,n.isFromCache=e.fromCache||!1,n.ip=this.ip,n.retryCount=this.retryCount,this[rH]=n.isFromCache,this[Ec]=Number(e.headers["content-length"])||void 0,this[NI]=e,e.once("end",()=>{this[Ec]=this[Bc],this.emit("downloadProgress",this.downloadProgress)}),e.once("error",a=>{e.destroy(),this._beforeError(new Su(a,this))}),e.once("aborted",()=>{this._beforeError(new Su({name:"Error",message:"The server aborted pending request",code:"ECONNRESET"},this))}),this.emit("downloadProgress",this.downloadProgress);let s=e.headers["set-cookie"];if(z.default.object(t.cookieJar)&&s){let a=s.map(async g=>t.cookieJar.setCookie(g,r.toString()));t.ignoreInvalidCookies&&(a=a.map(async g=>g.catch(()=>{})));try{await Promise.all(a)}catch(g){this._beforeError(g);return}}if(t.followRedirect&&e.headers.location&&npe.has(i)){if(e.resume(),this[St]&&(this[gw](),delete this[St],this[tH]()),(i===303&&t.method!=="GET"&&t.method!=="HEAD"||!t.methodRewriting)&&(t.method="GET","body"in t&&delete t.body,"json"in t&&delete t.json,"form"in t&&delete t.form,this[js]=void 0,delete t.headers["content-length"]),this.redirects.length>=t.maxRedirects){this._beforeError(new MI(this));return}try{let C=function(f){return f.protocol==="unix:"||f.hostname==="unix"},g=Buffer.from(e.headers.location,"binary").toString(),c=new Hs.URL(g,r),l=c.toString();if(decodeURI(l),!C(r)&&C(c)){this._beforeError(new ot("Cannot redirect to UNIX socket",{},this));return}c.hostname!==r.hostname||c.port!==r.port?("host"in t.headers&&delete t.headers.host,"cookie"in t.headers&&delete t.headers.cookie,"authorization"in t.headers&&delete t.headers.authorization,(t.username||t.password)&&(t.username="",t.password="")):(c.username=t.username,c.password=t.password),this.redirects.push(l),t.url=c;for(let f of t.hooks.beforeRedirect)await f(t,n);this.emit("redirect",n,t),await this._makeRequest()}catch(g){this._beforeError(g);return}return}if(t.isStream&&t.throwHttpErrors&&!ZBe.isResponseOk(n)){this._beforeError(new LI(n));return}e.on("readable",()=>{this[vI]&&this._read()}),this.on("resume",()=>{e.resume()}),this.on("pause",()=>{e.pause()}),e.once("end",()=>{this.push(null)}),this.emit("response",e);for(let a of this[kI])if(!a.headersSent){for(let g in e.headers){let c=t.decompress?g!=="content-encoding":!0,l=e.headers[g];c&&a.setHeader(g,l)}a.statusCode=i}}async _onResponse(e){try{await this._onResponseBase(e)}catch(t){this._beforeError(t)}}_onRequest(e){let{options:t}=this,{timeout:r,url:i}=t;GBe.default(e),this[gw]=$_.default(e,r,i);let n=t.cache?"cacheableResponse":"response";e.once(n,g=>{this._onResponse(g)}),e.once("error",g=>{var c;e.destroy(),(c=e.res)===null||c===void 0||c.removeAllListeners("end"),g=g instanceof $_.TimeoutError?new KI(g,this.timings,this):new ot(g.message,g,this),this._beforeError(g)}),this[tH]=WBe.default(e,this,ope),this[St]=e,this.emit("uploadProgress",this.uploadProgress);let s=this[js],a=this.redirects.length===0?this:e;z.default.nodeStream(s)?(s.pipe(a),s.once("error",g=>{this._beforeError(new OI(g,this))})):(this._unlockWrite(),z.default.undefined(s)?(this._cannotHaveBody||this._noPipe)&&(a.end(),this._lockWrite()):(this._writeRequest(s,void 0,()=>{}),a.end(),this._lockWrite())),this.emit("request",e)}async _createCacheableRequest(e,t){return new Promise((r,i)=>{Object.assign(t,zBe.default(e)),delete t.url;let n,s=cw.get(t.cache)(t,async a=>{a._readableState.autoDestroy=!1,n&&(await n).emit("cacheableResponse",a),r(a)});t.url=e,s.once("error",i),s.once("request",async a=>{n=a,r(n)})})}async _makeRequest(){var e,t,r,i,n;let{options:s}=this,{headers:a}=s;for(let L in a)if(z.default.undefined(a[L]))delete a[L];else if(z.default.null_(a[L]))throw new TypeError(`Use \`undefined\` instead of \`null\` to delete the \`${L}\` header`);if(s.decompress&&z.default.undefined(a["accept-encoding"])&&(a["accept-encoding"]=Ape?"gzip, deflate, br":"gzip, deflate"),s.cookieJar){let L=await s.cookieJar.getCookieString(s.url.toString());z.default.nonEmptyString(L)&&(s.headers.cookie=L)}for(let L of s.hooks.beforeRequest){let K=await L(s);if(!z.default.undefined(K)){s.request=()=>K;break}}s.body&&this[js]!==s.body&&(this[js]=s.body);let{agent:g,request:c,timeout:l,url:C}=s;if(s.dnsCache&&!("lookup"in s)&&(s.lookup=s.dnsCache.lookup),C.hostname==="unix"){let L=/(?.+?):(?.+)/.exec(`${C.pathname}${C.search}`);if(L?.groups){let{socketPath:K,path:_}=L.groups;Object.assign(s,{socketPath:K,path:_,host:""})}}let f=C.protocol==="https:",E;s.http2?E=HBe.auto:E=f?qBe.request:V_.request;let m=(e=s.request)!==null&&e!==void 0?e:E,w=s.cache?this._createCacheableRequest:m;g&&!s.http2&&(s.agent=g[f?"https":"http"]),s[St]=m,delete s.request,delete s.timeout;let D=s;if(D.shared=(t=s.cacheOptions)===null||t===void 0?void 0:t.shared,D.cacheHeuristic=(r=s.cacheOptions)===null||r===void 0?void 0:r.cacheHeuristic,D.immutableMinTimeToLive=(i=s.cacheOptions)===null||i===void 0?void 0:i.immutableMinTimeToLive,D.ignoreCargoCult=(n=s.cacheOptions)===null||n===void 0?void 0:n.ignoreCargoCult,s.dnsLookupIpVersion!==void 0)try{D.family=AH.dnsLookupIpVersionToFamily(s.dnsLookupIpVersion)}catch{throw new Error("Invalid `dnsLookupIpVersion` option value")}s.https&&("rejectUnauthorized"in s.https&&(D.rejectUnauthorized=s.https.rejectUnauthorized),s.https.checkServerIdentity&&(D.checkServerIdentity=s.https.checkServerIdentity),s.https.certificateAuthority&&(D.ca=s.https.certificateAuthority),s.https.certificate&&(D.cert=s.https.certificate),s.https.key&&(D.key=s.https.key),s.https.passphrase&&(D.passphrase=s.https.passphrase),s.https.pfx&&(D.pfx=s.https.pfx));try{let L=await w(C,D);z.default.undefined(L)&&(L=E(C,D)),s.request=c,s.timeout=l,s.agent=g,s.https&&("rejectUnauthorized"in s.https&&delete D.rejectUnauthorized,s.https.checkServerIdentity&&delete D.checkServerIdentity,s.https.certificateAuthority&&delete D.ca,s.https.certificate&&delete D.cert,s.https.key&&delete D.key,s.https.passphrase&&delete D.passphrase,s.https.pfx&&delete D.pfx),rpe(L)?this._onRequest(L):this.writable?(this.once("finish",()=>{this._onResponse(L)}),this._unlockWrite(),this.end(),this._lockWrite()):this._onResponse(L)}catch(L){throw L instanceof X_.CacheError?new PI(L,this):new ot(L.message,L,this)}}async _error(e){try{for(let t of this.options.hooks.beforeError)e=await t(e)}catch(t){e=new ot(t.message,t,this)}this.destroy(e)}_beforeError(e){if(this[dc])return;let{options:t}=this,r=this.retryCount+1;this[dc]=!0,e instanceof ot||(e=new ot(e.message,e,this));let i=e,{response:n}=i;(async()=>{if(n&&!n.body){n.setEncoding(this._readableState.encoding);try{n.rawBody=await XBe.default(n),n.body=n.rawBody.toString()}catch{}}if(this.listenerCount("retry")!==0){let s;try{let a;n&&"retry-after"in n.headers&&(a=Number(n.headers["retry-after"]),Number.isNaN(a)?(a=Date.parse(n.headers["retry-after"])-Date.now(),a<=0&&(a=1)):a*=1e3),s=await t.retry.calculateDelay({attemptCount:r,retryOptions:t.retry,error:i,retryAfter:a,computedValue:epe.default({attemptCount:r,retryOptions:t.retry,error:i,retryAfter:a,computedValue:0})})}catch(a){this._error(new ot(a.message,a,this));return}if(s){let a=async()=>{try{for(let g of this.options.hooks.beforeRetry)await g(this.options,i,r)}catch(g){this._error(new ot(g.message,e,this));return}this.destroyed||(this.destroy(),this.emit("retry",r,e))};this[sH]=setTimeout(a,s);return}}this._error(i)})()}_read(){this[vI]=!0;let e=this[NI];if(e&&!this[dc]){e.readableLength&&(this[vI]=!1);let t;for(;(t=e.read())!==null;){this[Bc]+=t.length,this[iH]=!0;let r=this.downloadProgress;r.percent<1&&this.emit("downloadProgress",r),this.push(t)}}}_write(e,t,r){let i=()=>{this._writeRequest(e,t,r)};this.requestInitialized?i():this[Du].push(i)}_writeRequest(e,t,r){this[St].destroyed||(this._progressCallbacks.push(()=>{this[Qc]+=Buffer.byteLength(e,t);let i=this.uploadProgress;i.percent<1&&this.emit("uploadProgress",i)}),this[St].write(e,t,i=>{!i&&this._progressCallbacks.length>0&&this._progressCallbacks.shift()(),r(i)}))}_final(e){let t=()=>{for(;this._progressCallbacks.length!==0;)this._progressCallbacks.shift()();if(!(St in this)){e();return}if(this[St].destroyed){e();return}this[St].end(r=>{r||(this[pc]=this[Qc],this.emit("uploadProgress",this.uploadProgress),this[St].emit("upload-complete")),e(r)})};this.requestInitialized?t():this[Du].push(t)}_destroy(e,t){var r;this[dc]=!0,clearTimeout(this[sH]),St in this&&(this[gw](),!((r=this[NI])===null||r===void 0)&&r.complete||this[St].destroy()),e!==null&&!z.default.undefined(e)&&!(e instanceof ot)&&(e=new ot(e.message,e,this)),t(e)}get _isAboutToError(){return this[dc]}get ip(){var e;return(e=this.socket)===null||e===void 0?void 0:e.remoteAddress}get aborted(){var e,t,r;return((t=(e=this[St])===null||e===void 0?void 0:e.destroyed)!==null&&t!==void 0?t:this.destroyed)&&!(!((r=this[nH])===null||r===void 0)&&r.complete)}get socket(){var e,t;return(t=(e=this[St])===null||e===void 0?void 0:e.socket)!==null&&t!==void 0?t:void 0}get downloadProgress(){let e;return this[Ec]?e=this[Bc]/this[Ec]:this[Ec]===this[Bc]?e=1:e=0,{percent:e,transferred:this[Bc],total:this[Ec]}}get uploadProgress(){let e;return this[pc]?e=this[Qc]/this[pc]:this[pc]===this[Qc]?e=1:e=0,{percent:e,transferred:this[Qc],total:this[pc]}}get timings(){var e;return(e=this[St])===null||e===void 0?void 0:e.timings}get isFromCache(){return this[rH]}pipe(e,t){if(this[iH])throw new Error("Failed to pipe. The response has been emitted already.");return e instanceof ow.ServerResponse&&this[kI].add(e),super.pipe(e,t)}unpipe(e){return e instanceof ow.ServerResponse&&this[kI].delete(e),super.unpipe(e),this}};FA.default=TI});var xu=p(Ni=>{"use strict";var ape=Ni&&Ni.__createBinding||(Object.create?function(A,e,t,r){r===void 0&&(r=t),Object.defineProperty(A,r,{enumerable:!0,get:function(){return e[t]}})}:function(A,e,t,r){r===void 0&&(r=t),A[r]=e[t]}),gpe=Ni&&Ni.__exportStar||function(A,e){for(var t in A)t!=="default"&&!Object.prototype.hasOwnProperty.call(e,t)&&ape(e,A,t)};Object.defineProperty(Ni,"__esModule",{value:!0});Ni.CancelError=Ni.ParseError=void 0;var oH=Fu(),lw=class extends oH.RequestError{constructor(e,t){let{options:r}=t.request;super(`${e.message} in "${r.url.toString()}"`,e,t.request),this.name="ParseError",this.code=this.code==="ERR_GOT_REQUEST_ERROR"?"ERR_BODY_PARSE_FAILURE":this.code}};Ni.ParseError=lw;var uw=class extends oH.RequestError{constructor(e){super("Promise was canceled",{},e),this.name="CancelError",this.code="ERR_CANCELED"}get isCanceled(){return!0}};Ni.CancelError=uw;gpe(Fu(),Ni)});var gH=p(Cw=>{"use strict";Object.defineProperty(Cw,"__esModule",{value:!0});var aH=xu(),cpe=(A,e,t,r)=>{let{rawBody:i}=A;try{if(e==="text")return i.toString(r);if(e==="json")return i.length===0?"":t(i.toString());if(e==="buffer")return i;throw new aH.ParseError({message:`Unknown body type '${e}'`,name:"Error"},A)}catch(n){throw new aH.ParseError(n,A)}};Cw.default=cpe});var hw=p(Ws=>{"use strict";var lpe=Ws&&Ws.__createBinding||(Object.create?function(A,e,t,r){r===void 0&&(r=t),Object.defineProperty(A,r,{enumerable:!0,get:function(){return e[t]}})}:function(A,e,t,r){r===void 0&&(r=t),A[r]=e[t]}),upe=Ws&&Ws.__exportStar||function(A,e){for(var t in A)t!=="default"&&!Object.prototype.hasOwnProperty.call(e,t)&&lpe(e,A,t)};Object.defineProperty(Ws,"__esModule",{value:!0});var Cpe=require("events"),hpe=Vn(),fpe=oY(),qI=xu(),cH=gH(),lH=Fu(),Ipe=Vm(),Epe=rw(),uH=iw(),Bpe=["request","response","redirect","uploadProgress","downloadProgress"];function CH(A){let e,t,r=new Cpe.EventEmitter,i=new fpe((s,a,g)=>{let c=l=>{let C=new lH.default(void 0,A);C.retryCount=l,C._noPipe=!0,g(()=>C.destroy()),g.shouldReject=!1,g(()=>a(new qI.CancelError(C))),e=C,C.once("response",async m=>{var w;if(m.retryCount=l,m.request.aborted)return;let D;try{D=await Epe.default(C),m.rawBody=D}catch{return}if(C._isAboutToError)return;let L=((w=m.headers["content-encoding"])!==null&&w!==void 0?w:"").toLowerCase(),K=["gzip","deflate","br"].includes(L),{options:_}=C;if(K&&!_.decompress)m.body=D;else try{m.body=cH.default(m,_.responseType,_.parseJson,_.encoding)}catch(le){if(m.body=D.toString(),uH.isResponseOk(m)){C._beforeError(le);return}}try{for(let[le,re]of _.hooks.afterResponse.entries())m=await re(m,async J=>{let X=lH.default.normalizeArguments(void 0,{...J,retry:{calculateDelay:()=>0},throwHttpErrors:!1,resolveBodyOnly:!1},_);X.hooks.afterResponse=X.hooks.afterResponse.slice(0,le);for(let G of X.hooks.beforeRetry)await G(X);let ie=CH(X);return g(()=>{ie.catch(()=>{}),ie.cancel()}),ie})}catch(le){C._beforeError(new qI.RequestError(le.message,le,C));return}if(t=m,!uH.isResponseOk(m)){C._beforeError(new qI.HTTPError(m));return}s(C.options.resolveBodyOnly?m.body:m)});let f=m=>{if(i.isCanceled)return;let{options:w}=C;if(m instanceof qI.HTTPError&&!w.throwHttpErrors){let{response:D}=m;s(C.options.resolveBodyOnly?D.body:D);return}a(m)};C.once("error",f);let E=C.options.body;C.once("retry",(m,w)=>{var D,L;if(E===((D=w.request)===null||D===void 0?void 0:D.options.body)&&hpe.default.nodeStream((L=w.request)===null||L===void 0?void 0:L.options.body)){f(w);return}c(m)}),Ipe.default(C,r,Bpe)};c(0)});i.on=(s,a)=>(r.on(s,a),i);let n=s=>{let a=(async()=>{await i;let{options:g}=t.request;return cH.default(t,s,g.parseJson,g.encoding)})();return Object.defineProperties(a,Object.getOwnPropertyDescriptors(i)),a};return i.json=()=>{let{headers:s}=e.options;return!e.writableFinished&&s.accept===void 0&&(s.accept="application/json"),n("json")},i.buffer=()=>n("buffer"),i.text=()=>n("text"),i}Ws.default=CH;upe(xu(),Ws)});var hH=p(fw=>{"use strict";Object.defineProperty(fw,"__esModule",{value:!0});var ppe=xu();function Qpe(A,...e){let t=(async()=>{if(A instanceof ppe.RequestError)try{for(let i of e)if(i)for(let n of i)A=await n(A)}catch(i){A=i}throw A})(),r=()=>t;return t.json=r,t.text=r,t.buffer=r,t.on=r,t}fw.default=Qpe});var EH=p(Iw=>{"use strict";Object.defineProperty(Iw,"__esModule",{value:!0});var fH=Vn();function IH(A){for(let e of Object.values(A))(fH.default.plainObject(e)||fH.default.array(e))&&IH(e);return Object.freeze(A)}Iw.default=IH});var pH=p(BH=>{"use strict";Object.defineProperty(BH,"__esModule",{value:!0})});var Ew=p(oi=>{"use strict";var dpe=oi&&oi.__createBinding||(Object.create?function(A,e,t,r){r===void 0&&(r=t),Object.defineProperty(A,r,{enumerable:!0,get:function(){return e[t]}})}:function(A,e,t,r){r===void 0&&(r=t),A[r]=e[t]}),ype=oi&&oi.__exportStar||function(A,e){for(var t in A)t!=="default"&&!Object.prototype.hasOwnProperty.call(e,t)&&dpe(e,A,t)};Object.defineProperty(oi,"__esModule",{value:!0});oi.defaultHandler=void 0;var QH=Vn(),si=hw(),mpe=hH(),YI=Fu(),wpe=EH(),Dpe={RequestError:si.RequestError,CacheError:si.CacheError,ReadError:si.ReadError,HTTPError:si.HTTPError,MaxRedirectsError:si.MaxRedirectsError,TimeoutError:si.TimeoutError,ParseError:si.ParseError,CancelError:si.CancelError,UnsupportedProtocolError:si.UnsupportedProtocolError,UploadError:si.UploadError},Spe=async A=>new Promise(e=>{setTimeout(e,A)}),{normalizeArguments:GI}=YI.default,dH=(...A)=>{let e;for(let t of A)e=GI(void 0,t,e);return e},Fpe=A=>A.isStream?new YI.default(void 0,A):si.default(A),xpe=A=>"defaults"in A&&"options"in A.defaults,Rpe=["get","post","put","patch","head","delete"];oi.defaultHandler=(A,e)=>e(A);var yH=(A,e)=>{if(A)for(let t of A)t(e)},mH=A=>{A._rawHandlers=A.handlers,A.handlers=A.handlers.map(r=>(i,n)=>{let s,a=r(i,g=>(s=n(g),s));if(a!==s&&!i.isStream&&s){let g=a,{then:c,catch:l,finally:C}=g;Object.setPrototypeOf(g,Object.getPrototypeOf(s)),Object.defineProperties(g,Object.getOwnPropertyDescriptors(s)),g.then=c,g.catch=l,g.finally=C}return a});let e=(r,i={},n)=>{var s,a;let g=0,c=l=>A.handlers[g++](l,g===A.handlers.length?Fpe:c);if(QH.default.plainObject(r)){let l={...r,...i};YI.setNonEnumerableProperties([r,i],l),i=l,r=void 0}try{let l;try{yH(A.options.hooks.init,i),yH((s=i.hooks)===null||s===void 0?void 0:s.init,i)}catch(f){l=f}let C=GI(r,i,n??A.options);if(C[YI.kIsNormalizedAlready]=!0,l)throw new si.RequestError(l.message,l,C);return c(C)}catch(l){if(i.isStream)throw l;return mpe.default(l,A.options.hooks.beforeError,(a=i.hooks)===null||a===void 0?void 0:a.beforeError)}};e.extend=(...r)=>{let i=[A.options],n=[...A._rawHandlers],s;for(let a of r)xpe(a)?(i.push(a.defaults.options),n.push(...a.defaults._rawHandlers),s=a.defaults.mutableDefaults):(i.push(a),"handlers"in a&&n.push(...a.handlers),s=a.mutableDefaults);return n=n.filter(a=>a!==oi.defaultHandler),n.length===0&&n.push(oi.defaultHandler),mH({options:dH(...i),handlers:n,mutableDefaults:Boolean(s)})};let t=async function*(r,i){let n=GI(r,i,A.options);n.resolveBodyOnly=!1;let s=n.pagination;if(!QH.default.object(s))throw new TypeError("`options.pagination` must be implemented");let a=[],{countLimit:g}=s,c=0;for(;c{let n=[];for await(let s of t(r,i))n.push(s);return n},e.paginate.each=t,e.stream=(r,i)=>e(r,{...i,isStream:!0});for(let r of Rpe)e[r]=(i,n)=>e(i,{...n,method:r}),e.stream[r]=(i,n)=>e(i,{...n,method:r,isStream:!0});return Object.assign(e,Dpe),Object.defineProperty(e,"defaults",{value:A.mutableDefaults?A:wpe.default(A),writable:A.mutableDefaults,configurable:A.mutableDefaults,enumerable:!0}),e.mergeOptions=dH,e};oi.default=mH;ype(pH(),oi)});var SH=p((Xn,_I)=>{"use strict";var bpe=Xn&&Xn.__createBinding||(Object.create?function(A,e,t,r){r===void 0&&(r=t),Object.defineProperty(A,r,{enumerable:!0,get:function(){return e[t]}})}:function(A,e,t,r){r===void 0&&(r=t),A[r]=e[t]}),wH=Xn&&Xn.__exportStar||function(A,e){for(var t in A)t!=="default"&&!Object.prototype.hasOwnProperty.call(e,t)&&bpe(e,A,t)};Object.defineProperty(Xn,"__esModule",{value:!0});var kpe=require("url"),DH=Ew(),vpe={options:{method:"GET",retry:{limit:2,methods:["GET","PUT","HEAD","DELETE","OPTIONS","TRACE"],statusCodes:[408,413,429,500,502,503,504,521,522,524],errorCodes:["ETIMEDOUT","ECONNRESET","EADDRINUSE","ECONNREFUSED","EPIPE","ENOTFOUND","ENETUNREACH","EAI_AGAIN"],maxRetryAfter:void 0,calculateDelay:({computedValue:A})=>A},timeout:{},headers:{"user-agent":"got (https://github.com/sindresorhus/got)"},hooks:{init:[],beforeRequest:[],beforeRedirect:[],beforeRetry:[],beforeError:[],afterResponse:[]},cache:void 0,dnsCache:void 0,decompress:!0,throwHttpErrors:!0,followRedirect:!0,isStream:!1,responseType:"text",resolveBodyOnly:!1,maxRedirects:10,prefixUrl:"",methodRewriting:!0,ignoreInvalidCookies:!1,context:{},http2:!1,allowGetBody:!1,https:void 0,pagination:{transform:A=>A.request.options.responseType==="json"?A.body:JSON.parse(A.body),paginate:A=>{if(!Reflect.has(A.headers,"link"))return!1;let e=A.headers.link.split(","),t;for(let r of e){let i=r.split(";");if(i[1].includes("next")){t=i[0].trimStart().trim(),t=t.slice(1,-1);break}}return t?{url:new kpe.URL(t)}:!1},filter:()=>!0,shouldContinue:()=>!0,countLimit:1/0,backoff:0,requestLimit:1e4,stackAllItems:!0},parseJson:A=>JSON.parse(A),stringifyJson:A=>JSON.stringify(A),cacheOptions:{}},handlers:[DH.defaultHandler],mutableDefaults:!1},Bw=DH.default(vpe);Xn.default=Bw;_I.exports=Bw;_I.exports.default=Bw;_I.exports.__esModule=!0;wH(Ew(),Xn);wH(hw(),Xn)});var JI=p(Ft=>{"use strict";Object.defineProperty(Ft,"__esModule",{value:!0});Ft.del=Ft.post=Ft.put=Ft.get=Ft.request=Ft.Method=Ft.getNetworkSettings=void 0;var Ru=nA(),Npe=BA(),Mpe=require("https"),Lpe=require("http"),kH=Ru.__importDefault(Ug()),FH=Ru.__importDefault(tY()),dw=require("url"),zs=ar(),Qw=ii(),YA=Ru.__importStar(ti()),vH=Ru.__importStar(br()),xH=new Map,RH=new Map,Ppe=new Lpe.Agent({keepAlive:!0}),Ope=new Mpe.Agent({keepAlive:!0});function bH(A){let e=new dw.URL(A),t={host:e.hostname,headers:{}};return e.port&&(t.port=Number(e.port)),e.username&&e.password&&(t.proxyAuth=`${e.username}:${e.password}`),{proxy:t}}async function pw(A){return vH.getFactoryWithDefault(RH,A,()=>Npe.xfs.readFilePromise(A).then(e=>(RH.set(A,e),e)))}function Kpe({statusCode:A,statusMessage:e},t){let r=YA.pretty(t,A,YA.Type.NUMBER),i=`https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/${A}`;return YA.applyHyperlink(t,`${r}${e?` (${e})`:""}`,i)}async function HI(A,{configuration:e,customErrorMessage:t}){var r,i;try{return await A}catch(n){if(n.name!=="HTTPError")throw n;let s=(r=t?.(n,e))!==null&&r!==void 0?r:(i=n.response.body)===null||i===void 0?void 0:i.error;s==null&&(n.message.startsWith("Response code")?s="The remote server failed to provide the requested resource":s=n.message),n.code==="ETIMEDOUT"&&n.event==="socket"&&(s+=`(can be increased via ${YA.pretty(e,"httpTimeout",YA.Type.SETTING)})`);let a=new Qw.ReportError(zs.MessageName.NETWORK_ERROR,s,g=>{n.response&&g.reportError(zs.MessageName.NETWORK_ERROR,` ${YA.prettyField(e,{label:"Response Code",value:YA.tuple(YA.Type.NO_HINT,Kpe(n.response,e))})}`),n.request&&(g.reportError(zs.MessageName.NETWORK_ERROR,` ${YA.prettyField(e,{label:"Request Method",value:YA.tuple(YA.Type.NO_HINT,n.request.options.method)})}`),g.reportError(zs.MessageName.NETWORK_ERROR,` ${YA.prettyField(e,{label:"Request URL",value:YA.tuple(YA.Type.URL,n.request.requestUrl)})}`)),n.request.redirects.length>0&&g.reportError(zs.MessageName.NETWORK_ERROR,` ${YA.prettyField(e,{label:"Request Redirects",value:YA.tuple(YA.Type.NO_HINT,YA.prettyList(e,n.request.redirects,YA.Type.URL))})}`),n.request.retryCount===n.request.options.retry.limit&&g.reportError(zs.MessageName.NETWORK_ERROR,` ${YA.prettyField(e,{label:"Request Retry Count",value:YA.tuple(YA.Type.NO_HINT,`${YA.pretty(e,n.request.retryCount,YA.Type.NUMBER)} (can be increased via ${YA.pretty(e,"httpRetry",YA.Type.SETTING)})`)})}`)});throw a.originalError=n,a}}function NH(A,e){let t=[...e.configuration.get("networkSettings")].sort(([s],[a])=>a.length-s.length),r={enableNetwork:void 0,httpsCaFilePath:void 0,httpProxy:void 0,httpsProxy:void 0,httpsKeyFilePath:void 0,httpsCertFilePath:void 0},i=Object.keys(r),n=typeof A=="string"?new dw.URL(A):A;for(let[s,a]of t)if(kH.default.isMatch(n.hostname,s))for(let g of i){let c=a.get(g);c!==null&&typeof r[g]>"u"&&(r[g]=c)}for(let s of i)typeof r[s]>"u"&&(r[s]=e.configuration.get(s));return r}Ft.getNetworkSettings=NH;var yc;(function(A){A.GET="GET",A.PUT="PUT",A.POST="POST",A.DELETE="DELETE"})(yc=Ft.Method||(Ft.Method={}));async function bu(A,e,{configuration:t,headers:r,jsonRequest:i,jsonResponse:n,method:s=yc.GET}){let a=async()=>await Ype(A,e,{configuration:t,headers:r,jsonRequest:i,jsonResponse:n,method:s});return await(await t.reduceHook(c=>c.wrapNetworkRequest,a,{target:A,body:e,configuration:t,headers:r,jsonRequest:i,jsonResponse:n,method:s}))()}Ft.request=bu;async function Upe(A,{configuration:e,jsonResponse:t,customErrorMessage:r,...i}){let n=vH.getFactoryWithDefault(xH,A,()=>HI(bu(A,null,{configuration:e,...i}),{configuration:e,customErrorMessage:r}).then(s=>(xH.set(A,s.body),s.body)));return Buffer.isBuffer(n)===!1&&(n=await n),t?JSON.parse(n.toString()):n}Ft.get=Upe;async function Tpe(A,e,{customErrorMessage:t,...r}){return(await HI(bu(A,e,{...r,method:yc.PUT}),{customErrorMessage:t,configuration:r.configuration})).body}Ft.put=Tpe;async function qpe(A,e,{customErrorMessage:t,...r}){return(await HI(bu(A,e,{...r,method:yc.POST}),{customErrorMessage:t,configuration:r.configuration})).body}Ft.post=qpe;async function Gpe(A,{customErrorMessage:e,...t}){return(await HI(bu(A,null,{...t,method:yc.DELETE}),{customErrorMessage:e,configuration:t.configuration})).body}Ft.del=Gpe;async function Ype(A,e,{configuration:t,headers:r,jsonRequest:i,jsonResponse:n,method:s=yc.GET}){let a=typeof A=="string"?new dw.URL(A):A,g=NH(a,{configuration:t});if(g.enableNetwork===!1)throw new Qw.ReportError(zs.MessageName.NETWORK_DISABLED,`Request to '${a.href}' has been blocked because of your configuration settings`);if(a.protocol==="http:"&&!kH.default.isMatch(a.hostname,t.get("unsafeHttpWhitelist")))throw new Qw.ReportError(zs.MessageName.NETWORK_UNSAFE_HTTP,`Unsafe http requests must be explicitly whitelisted in your configuration (${a.hostname})`);let l={agent:{http:g.httpProxy?FH.default.httpOverHttp(bH(g.httpProxy)):Ppe,https:g.httpsProxy?FH.default.httpsOverHttp(bH(g.httpsProxy)):Ope},headers:r,method:s};l.responseType=n?"json":"buffer",e!==null&&(Buffer.isBuffer(e)||!i&&typeof e=="string"?l.body=e:l.json=e);let C=t.get("httpTimeout"),f=t.get("httpRetry"),E=t.get("enableStrictSsl"),m=g.httpsCaFilePath,w=g.httpsCertFilePath,D=g.httpsKeyFilePath,{default:L}=await Promise.resolve().then(()=>Ru.__importStar(SH())),K=m?await pw(m):void 0,_=w?await pw(w):void 0,le=D?await pw(D):void 0,re=L.extend({timeout:{socket:C},retry:f,https:{rejectUnauthorized:E,certificateAuthority:K,certificate:_,key:le},...l});return t.getLimit("networkConcurrency")(()=>re(a))}});var zI=p(an=>{"use strict";Object.defineProperty(an,"__esModule",{value:!0});an.getArchitectureSet=an.getArchitectureName=an.getArchitecture=an.builtinModules=void 0;var LH=nA(),_pe=LH.__importDefault(require("module")),MH=LH.__importStar(br());function Hpe(){return new Set(_pe.default.builtinModules||Object.keys(process.binding("natives")))}an.builtinModules=Hpe;function Jpe(){var A,e,t,r;if(process.platform==="win32")return null;let n=(t=((e=(A=process.report)===null||A===void 0?void 0:A.getReport())!==null&&e!==void 0?e:{}).sharedObjects)!==null&&t!==void 0?t:[],s=/\/(?:(ld-linux-|[^/]+-linux-gnu\/)|(libc.musl-|ld-musl-))/;return(r=MH.mapAndFind(n,a=>{let g=a.match(s);if(!g)return MH.mapAndFind.skip;if(g[1])return"glibc";if(g[2])return"musl";throw new Error("Assertion failed: Expected the libc variant to have been detected")}))!==null&&r!==void 0?r:null}var jI,WI;function yw(){return jI=jI??{os:process.platform,cpu:process.arch,libc:Jpe()}}an.getArchitecture=yw;function jpe(A=yw()){return A.libc?`${A.os}-${A.cpu}-${A.libc}`:`${A.os}-${A.cpu}`}an.getArchitectureName=jpe;function Wpe(){let A=yw();return WI=WI??{os:[A.os],cpu:[A.cpu],libc:A.libc?[A.libc]:[]}}an.getArchitectureSet=Wpe});var Nu=p(pA=>{"use strict";var mw,ww;Object.defineProperty(pA,"__esModule",{value:!0});pA.Configuration=pA.ProjectLookup=pA.coreDefinitions=pA.FormatType=pA.SettingsType=pA.SECRET=pA.DEFAULT_LOCK_FILENAME=pA.DEFAULT_RC_FILENAME=pA.ENVIRONMENT_PREFIX=pA.TAG_REGEXP=void 0;var gn=nA(),hA=BA(),zpe=ds(),VI=wg(),Vpe=gn.__importDefault(bv()),ku=Qh(),Mi=Fg(),Xpe=gn.__importDefault(xg()),PH=require("stream"),Zpe=dG(),$pe=gc(),eQe=em(),AQe=tm(),tQe=sm(),rQe=JG(),iQe=am(),nQe=Ca(),Fw=gn.__importStar(EI()),MA=gn.__importStar(ti()),sQe=gn.__importStar(Us()),oQe=gn.__importStar(JI()),Zt=gn.__importStar(br()),OH=gn.__importStar(zI()),Dw=gn.__importStar(qs()),kr=gn.__importStar(Dt()),ai=ia(),aQe=ku.GITHUB_ACTIONS&&process.env.GITHUB_EVENT_PATH?!(!((ww=(mw=hA.xfs.readJsonSync(hA.npath.toPortablePath(process.env.GITHUB_EVENT_PATH)).repository)===null||mw===void 0?void 0:mw.private)!==null&&ww!==void 0)||ww):!1,gQe=new Set(["binFolder","version","flags","profile","gpg","ignoreNode","wrapOutput","home","confDir"]);pA.TAG_REGEXP=/^(?!v)[a-z0-9._-]+$/i;pA.ENVIRONMENT_PREFIX="yarn_";pA.DEFAULT_RC_FILENAME=".yarnrc.yml";pA.DEFAULT_LOCK_FILENAME="yarn.lock";pA.SECRET="********";var fe;(function(A){A.ANY="ANY",A.BOOLEAN="BOOLEAN",A.ABSOLUTE_PATH="ABSOLUTE_PATH",A.LOCATOR="LOCATOR",A.LOCATOR_LOOSE="LOCATOR_LOOSE",A.NUMBER="NUMBER",A.STRING="STRING",A.SECRET="SECRET",A.SHAPE="SHAPE",A.MAP="MAP"})(fe=pA.SettingsType||(pA.SettingsType={}));pA.FormatType=MA.Type;pA.coreDefinitions={lastUpdateCheck:{description:"Last timestamp we checked whether new Yarn versions were available",type:fe.STRING,default:null},yarnPath:{description:"Path to the local executable that must be used over the global one",type:fe.ABSOLUTE_PATH,default:null},ignorePath:{description:"If true, the local executable will be ignored when using the global one",type:fe.BOOLEAN,default:!1},ignoreCwd:{description:"If true, the `--cwd` flag will be ignored",type:fe.BOOLEAN,default:!1},cacheKeyOverride:{description:"A global cache key override; used only for test purposes",type:fe.STRING,default:null},globalFolder:{description:"Folder where all system-global files are stored",type:fe.ABSOLUTE_PATH,default:Fw.getDefaultGlobalFolder()},cacheFolder:{description:"Folder where the cache files must be written",type:fe.ABSOLUTE_PATH,default:"./.yarn/cache"},compressionLevel:{description:"Zip files compression level, from 0 to 9 or mixed (a variant of 9, which stores some files uncompressed, when compression doesn't yield good results)",type:fe.NUMBER,values:["mixed",0,1,2,3,4,5,6,7,8,9],default:zpe.DEFAULT_COMPRESSION_LEVEL},virtualFolder:{description:"Folder where the virtual packages (cf doc) will be mapped on the disk (must be named __virtual__)",type:fe.ABSOLUTE_PATH,default:"./.yarn/__virtual__"},lockfileFilename:{description:"Name of the files where the Yarn dependency tree entries must be stored",type:fe.STRING,default:pA.DEFAULT_LOCK_FILENAME},installStatePath:{description:"Path of the file where the install state will be persisted",type:fe.ABSOLUTE_PATH,default:"./.yarn/install-state.gz"},immutablePatterns:{description:"Array of glob patterns; files matching them won't be allowed to change during immutable installs",type:fe.STRING,default:[],isArray:!0},rcFilename:{description:"Name of the files where the configuration can be found",type:fe.STRING,default:ZI()},enableGlobalCache:{description:"If true, the system-wide cache folder will be used regardless of `cache-folder`",type:fe.BOOLEAN,default:!0},enableColors:{description:"If true, the CLI is allowed to use colors in its output",type:fe.BOOLEAN,default:MA.supportsColor,defaultText:""},enableHyperlinks:{description:"If true, the CLI is allowed to use hyperlinks in its output",type:fe.BOOLEAN,default:MA.supportsHyperlinks,defaultText:""},enableInlineBuilds:{description:"If true, the CLI will print the build output on the command line",type:fe.BOOLEAN,default:ku.isCI,defaultText:""},enableMessageNames:{description:"If true, the CLI will prefix most messages with codes suitable for search engines",type:fe.BOOLEAN,default:!0},enableProgressBars:{description:"If true, the CLI is allowed to show a progress bar for long-running events",type:fe.BOOLEAN,default:!ku.isCI,defaultText:""},enableTimers:{description:"If true, the CLI is allowed to print the time spent executing commands",type:fe.BOOLEAN,default:!0},preferAggregateCacheInfo:{description:"If true, the CLI will only print a one-line report of any cache changes",type:fe.BOOLEAN,default:ku.isCI},preferInteractive:{description:"If true, the CLI will automatically use the interactive mode when called from a TTY",type:fe.BOOLEAN,default:!1},preferTruncatedLines:{description:"If true, the CLI will truncate lines that would go beyond the size of the terminal",type:fe.BOOLEAN,default:!1},progressBarStyle:{description:"Which style of progress bar should be used (only when progress bars are enabled)",type:fe.STRING,default:void 0,defaultText:""},defaultLanguageName:{description:"Default language mode that should be used when a package doesn't offer any insight",type:fe.STRING,default:"node"},defaultProtocol:{description:"Default resolution protocol used when resolving pure semver and tag ranges",type:fe.STRING,default:"npm:"},enableTransparentWorkspaces:{description:"If false, Yarn won't automatically resolve workspace dependencies unless they use the `workspace:` protocol",type:fe.BOOLEAN,default:!0},supportedArchitectures:{description:"Architectures that Yarn will fetch and inject into the resolver",type:fe.SHAPE,properties:{os:{description:"Array of supported process.platform strings, or null to target them all",type:fe.STRING,isArray:!0,isNullable:!0,default:["current"]},cpu:{description:"Array of supported process.arch strings, or null to target them all",type:fe.STRING,isArray:!0,isNullable:!0,default:["current"]},libc:{description:"Array of supported libc libraries, or null to target them all",type:fe.STRING,isArray:!0,isNullable:!0,default:["current"]}}},enableMirror:{description:"If true, the downloaded packages will be retrieved and stored in both the local and global folders",type:fe.BOOLEAN,default:!0},enableNetwork:{description:"If false, the package manager will refuse to use the network if required to",type:fe.BOOLEAN,default:!0},httpProxy:{description:"URL of the http proxy that must be used for outgoing http requests",type:fe.STRING,default:null},httpsProxy:{description:"URL of the http proxy that must be used for outgoing https requests",type:fe.STRING,default:null},unsafeHttpWhitelist:{description:"List of the hostnames for which http queries are allowed (glob patterns are supported)",type:fe.STRING,default:[],isArray:!0},httpTimeout:{description:"Timeout of each http request in milliseconds",type:fe.NUMBER,default:6e4},httpRetry:{description:"Retry times on http failure",type:fe.NUMBER,default:3},networkConcurrency:{description:"Maximal number of concurrent requests",type:fe.NUMBER,default:50},networkSettings:{description:"Network settings per hostname (glob patterns are supported)",type:fe.MAP,valueDefinition:{description:"",type:fe.SHAPE,properties:{httpsCaFilePath:{description:"Path to file containing one or multiple Certificate Authority signing certificates",type:fe.ABSOLUTE_PATH,default:null},enableNetwork:{description:"If false, the package manager will refuse to use the network if required to",type:fe.BOOLEAN,default:null},httpProxy:{description:"URL of the http proxy that must be used for outgoing http requests",type:fe.STRING,default:null},httpsProxy:{description:"URL of the http proxy that must be used for outgoing https requests",type:fe.STRING,default:null},httpsKeyFilePath:{description:"Path to file containing private key in PEM format",type:fe.ABSOLUTE_PATH,default:null},httpsCertFilePath:{description:"Path to file containing certificate chain in PEM format",type:fe.ABSOLUTE_PATH,default:null}}}},httpsCaFilePath:{description:"A path to a file containing one or multiple Certificate Authority signing certificates",type:fe.ABSOLUTE_PATH,default:null},httpsKeyFilePath:{description:"Path to file containing private key in PEM format",type:fe.ABSOLUTE_PATH,default:null},httpsCertFilePath:{description:"Path to file containing certificate chain in PEM format",type:fe.ABSOLUTE_PATH,default:null},enableStrictSsl:{description:"If false, SSL certificate errors will be ignored",type:fe.BOOLEAN,default:!0},logFilters:{description:"Overrides for log levels",type:fe.SHAPE,isArray:!0,concatenateValues:!0,properties:{code:{description:"Code of the messages covered by this override",type:fe.STRING,default:void 0},text:{description:"Code of the texts covered by this override",type:fe.STRING,default:void 0},pattern:{description:"Code of the patterns covered by this override",type:fe.STRING,default:void 0},level:{description:"Log level override, set to null to remove override",type:fe.STRING,values:Object.values(MA.LogLevel),isNullable:!0,default:void 0}}},enableTelemetry:{description:"If true, telemetry will be periodically sent, following the rules in https://yarnpkg.com/advanced/telemetry",type:fe.BOOLEAN,default:!0},telemetryInterval:{description:"Minimal amount of time between two telemetry uploads, in days",type:fe.NUMBER,default:7},telemetryUserId:{description:"If you desire to tell us which project you are, you can set this field. Completely optional and opt-in.",type:fe.STRING,default:null},enableHardenedMode:{description:"If true, automatically enable --check-resolutions --refresh-lockfile on installs",type:fe.BOOLEAN,default:ku.isPR&&aQe,defaultText:""},enableScripts:{description:"If true, packages are allowed to have install scripts by default",type:fe.BOOLEAN,default:!0},enableStrictSettings:{description:"If true, unknown settings will cause Yarn to abort",type:fe.BOOLEAN,default:!0},enableImmutableCache:{description:"If true, the cache is reputed immutable and actions that would modify it will throw",type:fe.BOOLEAN,default:!1},checksumBehavior:{description:"Enumeration defining what to do when a checksum doesn't match expectations",type:fe.STRING,default:"throw"},packageExtensions:{description:"Map of package corrections to apply on the dependency tree",type:fe.MAP,valueDefinition:{description:"The extension that will be applied to any package whose version matches the specified range",type:fe.SHAPE,properties:{dependencies:{description:"The set of dependencies that must be made available to the current package in order for it to work properly",type:fe.MAP,valueDefinition:{description:"A range",type:fe.STRING}},peerDependencies:{description:"Inherited dependencies - the consumer of the package will be tasked to provide them",type:fe.MAP,valueDefinition:{description:"A semver range",type:fe.STRING}},peerDependenciesMeta:{description:"Extra information related to the dependencies listed in the peerDependencies field",type:fe.MAP,valueDefinition:{description:"The peerDependency meta",type:fe.SHAPE,properties:{optional:{description:"If true, the selected peer dependency will be marked as optional by the package manager and the consumer omitting it won't be reported as an error",type:fe.BOOLEAN,default:!1}}}}}}}};function xw(A,e,t,r,i){if(r.isArray||r.type===fe.ANY&&Array.isArray(t))return Array.isArray(t)?t.map((n,s)=>Sw(A,`${e}[${s}]`,n,r,i)):String(t).split(/,/).map(n=>Sw(A,e,n,r,i));if(Array.isArray(t))throw new Error(`Non-array configuration settings "${e}" cannot be an array`);return Sw(A,e,t,r,i)}function Sw(A,e,t,r,i){var n;switch(r.type){case fe.ANY:return t;case fe.SHAPE:return cQe(A,e,t,r,i);case fe.MAP:return lQe(A,e,t,r,i)}if(t===null&&!r.isNullable&&r.default!==null)throw new Error(`Non-nullable configuration settings "${e}" cannot be set to null`);if(!((n=r.values)===null||n===void 0)&&n.includes(t))return t;let a=(()=>{if(r.type===fe.BOOLEAN&&typeof t!="string")return Zt.parseBoolean(t);if(typeof t!="string")throw new Error(`Expected value (${t}) to be a string`);let g=Zt.replaceEnvVariables(t,{env:process.env});switch(r.type){case fe.ABSOLUTE_PATH:return hA.ppath.resolve(i,hA.npath.toPortablePath(g));case fe.LOCATOR_LOOSE:return kr.parseLocator(g,!1);case fe.NUMBER:return parseInt(g);case fe.LOCATOR:return kr.parseLocator(g);case fe.BOOLEAN:return Zt.parseBoolean(g);default:return g}})();if(r.values&&!r.values.includes(a))throw new Error(`Invalid value, expected one of ${r.values.join(", ")}`);return a}function cQe(A,e,t,r,i){if(typeof t!="object"||Array.isArray(t))throw new Mi.UsageError(`Object configuration settings "${e}" must be an object`);let n=Rw(A,r,{ignoreArrays:!0});if(t===null)return n;for(let[s,a]of Object.entries(t)){let g=`${e}.${s}`;if(!r.properties[s])throw new Mi.UsageError(`Unrecognized configuration settings found: ${e}.${s} - run "yarn config -v" to see the list of settings supported in Yarn`);n.set(s,xw(A,g,a,r.properties[s],i))}return n}function lQe(A,e,t,r,i){let n=new Map;if(typeof t!="object"||Array.isArray(t))throw new Mi.UsageError(`Map configuration settings "${e}" must be an object`);if(t===null)return n;for(let[s,a]of Object.entries(t)){let g=r.normalizeKeys?r.normalizeKeys(s):s,c=`${e}['${g}']`,l=r.valueDefinition;n.set(g,xw(A,c,a,l,i))}return n}function Rw(A,e,{ignoreArrays:t=!1}={}){switch(e.type){case fe.SHAPE:{if(e.isArray&&!t)return[];let r=new Map;for(let[i,n]of Object.entries(e.properties))r.set(i,Rw(A,n));return r}break;case fe.MAP:return e.isArray&&!t?[]:new Map;case fe.ABSOLUTE_PATH:return e.default===null?null:A.projectCwd===null?hA.ppath.isAbsolute(e.default)?hA.ppath.normalize(e.default):e.isNullable?null:void 0:Array.isArray(e.default)?e.default.map(r=>hA.ppath.resolve(A.projectCwd,r)):hA.ppath.resolve(A.projectCwd,e.default);default:return e.default}}function XI(A,e,t){if(e.type===fe.SECRET&&typeof A=="string"&&t.hideSecrets)return pA.SECRET;if(e.type===fe.ABSOLUTE_PATH&&typeof A=="string"&&t.getNativePaths)return hA.npath.fromPortablePath(A);if(e.isArray&&Array.isArray(A)){let r=[];for(let i of A)r.push(XI(i,e,t));return r}if(e.type===fe.MAP&&A instanceof Map){let r=new Map;for(let[i,n]of A.entries())r.set(i,XI(n,e.valueDefinition,t));return r}if(e.type===fe.SHAPE&&A instanceof Map){let r=new Map;for(let[i,n]of A.entries()){let s=e.properties[i];r.set(i,XI(n,s,t))}return r}return A}function uQe(){let A={};for(let[e,t]of Object.entries(process.env))e=e.toLowerCase(),e.startsWith(pA.ENVIRONMENT_PREFIX)&&(e=(0,Vpe.default)(e.slice(pA.ENVIRONMENT_PREFIX.length)),A[e]=t);return A}function ZI(){let A=`${pA.ENVIRONMENT_PREFIX}rc_filename`;for(let[e,t]of Object.entries(process.env))if(e.toLowerCase()===A&&typeof t=="string")return t;return pA.DEFAULT_RC_FILENAME}var vu;(function(A){A[A.LOCKFILE=0]="LOCKFILE",A[A.MANIFEST=1]="MANIFEST",A[A.NONE=2]="NONE"})(vu=pA.ProjectLookup||(pA.ProjectLookup={}));var $t=class{static create(e,t,r){let i=new $t(e);typeof t<"u"&&!(t instanceof Map)&&(i.projectCwd=t),i.importSettings(pA.coreDefinitions);let n=typeof r<"u"?r:t instanceof Map?t:new Map;for(let[s,a]of n)i.activatePlugin(s,a);return i}static async find(e,t,{lookup:r=vu.LOCKFILE,strict:i=!0,usePath:n=!1,useRc:s=!0}={}){var a,g;let c=uQe();delete c.rcFilename;let l=await $t.findRcFiles(e),C=await $t.findHomeRcFile();if(C){let J=l.find(X=>X.path===C.path);J?J.strict=!1:l.push({...C,strict:!1})}let f=new Set(Object.keys(pA.coreDefinitions)),E=({ignoreCwd:J,yarnPath:X,ignorePath:ie,lockfileFilename:G})=>({ignoreCwd:J,yarnPath:X,ignorePath:ie,lockfileFilename:G}),m=({ignoreCwd:J,yarnPath:X,ignorePath:ie,lockfileFilename:G,...ee})=>{let o={};for(let[H,ne]of Object.entries(ee))f.has(H)&&(o[H]=ne);return o},w=({ignoreCwd:J,yarnPath:X,ignorePath:ie,lockfileFilename:G,...ee})=>{let o={};for(let[H,ne]of Object.entries(ee))f.has(H)||(o[H]=ne);return o},D=new $t(e);D.importSettings(E(pA.coreDefinitions)),D.useWithSource("",E(c),e,{strict:!1});for(let{path:J,cwd:X,data:ie}of l)D.useWithSource(J,E(ie),X,{strict:!1});if(n){let J=D.get("yarnPath"),X=D.get("ignorePath");if(J!==null&&!X)return D}let L=D.get("lockfileFilename"),K;switch(r){case vu.LOCKFILE:K=await $t.findProjectCwd(e,L);break;case vu.MANIFEST:K=await $t.findProjectCwd(e,null);break;case vu.NONE:hA.xfs.existsSync(hA.ppath.join(e,"package.json"))?K=hA.ppath.resolve(e):K=null;break}D.startingCwd=e,D.projectCwd=K,D.importSettings(m(pA.coreDefinitions)),D.useWithSource("",m(c),e,{strict:i});for(let{path:J,cwd:X,data:ie,strict:G}of l)D.useWithSource(J,m(ie),X,{strict:G??i});let _=J=>"default"in J?J.default:J,le=new Map([["@@core",Zpe.CorePlugin]]);if(t!==null)for(let J of t.plugins.keys())le.set(J,_(t.modules.get(J)));for(let[J,X]of le)D.activatePlugin(J,X);let re=new Map([]);if(t!==null){let J=new Map;for(let G of OH.builtinModules())J.set(G,()=>Zt.dynamicRequire(G));for(let[G,ee]of t.modules)J.set(G,()=>ee);let X=new Set,ie=async(G,ee)=>{let{factory:o,name:H}=Zt.dynamicRequire(G);if(!o||X.has(H))return;let ne=new Map(J),j=k=>{if(ne.has(k))return ne.get(k)();throw new Mi.UsageError(`This plugin cannot access the package referenced via ${k} which is neither a builtin, nor an exposed entry`)},M=await Zt.prettifyAsyncErrors(async()=>_(await o(j)),k=>`${k} (when initializing ${H}, defined in ${ee})`);J.set(H,()=>M),X.add(H),re.set(H,M)};if(c.plugins)for(let G of c.plugins.split(";")){let ee=hA.ppath.resolve(e,hA.npath.toPortablePath(G));await ie(ee,"")}for(let{path:G,cwd:ee,data:o}of l)if(!!s&&!!Array.isArray(o.plugins))for(let H of o.plugins){let ne=typeof H!="string"?H.path:H,j=(a=H?.spec)!==null&&a!==void 0?a:"",M=(g=H?.checksum)!==null&&g!==void 0?g:"",k=hA.ppath.resolve(ee,hA.npath.toPortablePath(ne));if(!await hA.xfs.existsPromise(k)){if(!j){let De=MA.pretty(D,hA.ppath.basename(k,".cjs"),MA.Type.NAME),pe=MA.pretty(D,".gitignore",MA.Type.NAME),me=MA.pretty(D,D.values.get("rcFilename"),MA.Type.NAME),be=MA.pretty(D,"https://yarnpkg.com/getting-started/qa#which-files-should-be-gitignored",MA.Type.URL);throw new Mi.UsageError(`Missing source for the ${De} plugin - please try to remove the plugin from ${me} then reinstall it manually. This error usually occurs because ${pe} is incorrect, check ${be} to make sure your plugin folder isn't gitignored.`)}if(!j.match(/^https?:/)){let De=MA.pretty(D,hA.ppath.basename(k,".cjs"),MA.Type.NAME),pe=MA.pretty(D,D.values.get("rcFilename"),MA.Type.NAME);throw new Mi.UsageError(`Failed to recognize the source for the ${De} plugin - please try to delete the plugin from ${pe} then reinstall it manually.`)}let te=await oQe.get(j,{configuration:D}),ae=sQe.makeHash(te);if(M&&M!==ae){let De=MA.pretty(D,hA.ppath.basename(k,".cjs"),MA.Type.NAME),pe=MA.pretty(D,D.values.get("rcFilename"),MA.Type.NAME),me=MA.pretty(D,`yarn plugin import ${j}`,MA.Type.CODE);throw new Mi.UsageError(`Failed to fetch the ${De} plugin from its remote location: its checksum seems to have changed. If this is expected, please remove the plugin from ${pe} then run ${me} to reimport it.`)}await hA.xfs.mkdirPromise(hA.ppath.dirname(k),{recursive:!0}),await hA.xfs.writeFilePromise(k,te)}await ie(k,G)}}for(let[J,X]of re)D.activatePlugin(J,X);D.useWithSource("",w(c),e,{strict:i});for(let{path:J,cwd:X,data:ie,strict:G}of l)D.useWithSource(J,w(ie),X,{strict:G??i});return D.get("enableGlobalCache")&&(D.values.set("cacheFolder",`${D.get("globalFolder")}/cache`),D.sources.set("cacheFolder","")),await D.refreshPackageExtensions(),D}static async findRcFiles(e){let t=ZI(),r=[],i=e,n=null;for(;i!==n;){n=i;let s=hA.ppath.join(n,t);if(hA.xfs.existsSync(s)){let a=await hA.xfs.readFilePromise(s,"utf8"),g;try{g=(0,VI.parseSyml)(a)}catch{let l="";throw a.match(/^\s+(?!-)[^:]+\s+\S+/m)&&(l=" (in particular, make sure you list the colons after each key name)"),new Mi.UsageError(`Parse error when loading ${s}; please check it's proper Yaml${l}`)}r.push({path:s,cwd:n,data:g})}i=hA.ppath.dirname(n)}return r}static async findHomeRcFile(){let e=ZI(),t=Fw.getHomeFolder(),r=hA.ppath.join(t,e);if(hA.xfs.existsSync(r)){let i=await hA.xfs.readFilePromise(r,"utf8"),n=(0,VI.parseSyml)(i);return{path:r,cwd:t,data:n}}return null}static async findProjectCwd(e,t){let r=null,i=e,n=null;for(;i!==n;){if(n=i,hA.xfs.existsSync(hA.ppath.join(n,"package.json"))&&(r=n),t!==null){if(hA.xfs.existsSync(hA.ppath.join(n,t))){r=n;break}}else if(r!==null)break;i=hA.ppath.dirname(n)}return r}static async updateConfiguration(e,t){let r=ZI(),i=hA.ppath.join(e,r),n=hA.xfs.existsSync(i)?(0,VI.parseSyml)(await hA.xfs.readFilePromise(i,"utf8")):{},s=!1,a;if(typeof t=="function"){try{a=t(n)}catch{a=t({})}if(a===n)return}else{a=n;for(let g of Object.keys(t)){let c=n[g],l=t[g],C;if(typeof l=="function")try{C=l(c)}catch{C=l(void 0)}else C=l;c!==C&&(C===$t.deleteProperty?delete a[g]:a[g]=C,s=!0)}if(!s)return}await hA.xfs.changeFilePromise(i,(0,VI.stringifySyml)(a),{automaticNewlines:!0})}static async addPlugin(e,t){t.length!==0&&await $t.updateConfiguration(e,r=>{var i;let n=(i=r.plugins)!==null&&i!==void 0?i:[];if(n.length===0)return{...r,plugins:t};let s=[],a=[...t];for(let g of n){let c=typeof g!="string"?g.path:g,l=a.find(C=>C.path===c);l?(s.push(l),a=a.filter(C=>C!==l)):s.push(g)}return s.push(...a),{...r,plugins:s}})}static async updateHomeConfiguration(e){let t=Fw.getHomeFolder();return await $t.updateConfiguration(t,e)}constructor(e){this.projectCwd=null,this.plugins=new Map,this.settings=new Map,this.values=new Map,this.sources=new Map,this.invalid=new Map,this.packageExtensions=new Map,this.limits=new Map,this.startingCwd=e}activatePlugin(e,t){this.plugins.set(e,t),typeof t.configuration<"u"&&this.importSettings(t.configuration)}importSettings(e){for(let[t,r]of Object.entries(e))if(r!=null){if(this.settings.has(t))throw new Error(`Cannot redefine settings "${t}"`);this.settings.set(t,r),this.values.set(t,Rw(this,r))}}useWithSource(e,t,r,i){try{this.use(e,t,r,i)}catch(n){throw n.message+=` (in ${MA.pretty(this,e,MA.Type.PATH)})`,n}}use(e,t,r,{strict:i=!0,overwrite:n=!1}={}){i=i&&this.get("enableStrictSettings");for(let s of["enableStrictSettings",...Object.keys(t)]){if(typeof t[s]>"u"||s==="plugins"||e===""&&gQe.has(s))continue;if(s==="rcFilename")throw new Mi.UsageError(`The rcFilename settings can only be set via ${`${pA.ENVIRONMENT_PREFIX}RC_FILENAME`.toUpperCase()}, not via a rc file`);let g=this.settings.get(s);if(!g){if(i)throw new Mi.UsageError(`Unrecognized or legacy configuration settings found: ${s} - run "yarn config -v" to see the list of settings supported in Yarn`);this.invalid.set(s,e);continue}if(this.sources.has(s)&&!(n||g.type===fe.MAP||g.isArray&&g.concatenateValues))continue;let c;try{c=xw(this,s,t[s],g,r)}catch(l){throw l.message+=` in ${MA.pretty(this,e,MA.Type.PATH)}`,l}if(s==="enableStrictSettings"&&e!==""){i=c;continue}if(g.type===fe.MAP){let l=this.values.get(s);this.values.set(s,new Map(n?[...l,...c]:[...c,...l])),this.sources.set(s,`${this.sources.get(s)}, ${e}`)}else if(g.isArray&&g.concatenateValues){let l=this.values.get(s);this.values.set(s,n?[...l,...c]:[...c,...l]),this.sources.set(s,`${this.sources.get(s)}, ${e}`)}else this.values.set(s,c),this.sources.set(s,e)}}get(e){if(!this.values.has(e))throw new Error(`Invalid configuration key "${e}"`);return this.values.get(e)}getSpecial(e,{hideSecrets:t=!1,getNativePaths:r=!1}){let i=this.get(e),n=this.settings.get(e);if(typeof n>"u")throw new Mi.UsageError(`Couldn't find a configuration settings named "${e}"`);return XI(i,n,{hideSecrets:t,getNativePaths:r})}getSubprocessStreams(e,{header:t,prefix:r,report:i}){let n,s,a=hA.xfs.createWriteStream(e);if(this.get("enableInlineBuilds")){let g=i.createStreamReporter(`${r} ${MA.pretty(this,"STDOUT","green")}`),c=i.createStreamReporter(`${r} ${MA.pretty(this,"STDERR","red")}`);n=new PH.PassThrough,n.pipe(g),n.pipe(a),s=new PH.PassThrough,s.pipe(c),s.pipe(a)}else n=a,s=a,typeof t<"u"&&n.write(`${t} +`);return{stdout:n,stderr:s}}makeResolver(){let e=[];for(let t of this.plugins.values())for(let r of t.resolvers||[])e.push(new r);return new AQe.MultiResolver([new rQe.VirtualResolver,new nQe.WorkspaceResolver,...e])}makeFetcher(){let e=[];for(let t of this.plugins.values())for(let r of t.fetchers||[])e.push(new r);return new eQe.MultiFetcher([new tQe.VirtualFetcher,new iQe.WorkspaceFetcher,...e])}getLinkers(){let e=[];for(let t of this.plugins.values())for(let r of t.linkers||[])e.push(new r);return e}getSupportedArchitectures(){let e=OH.getArchitecture(),t=this.get("supportedArchitectures"),r=t.get("os");r!==null&&(r=r.map(s=>s==="current"?e.os:s));let i=t.get("cpu");i!==null&&(i=i.map(s=>s==="current"?e.cpu:s));let n=t.get("libc");return n!==null&&(n=Zt.mapAndFilter(n,s=>{var a;return s==="current"?(a=e.libc)!==null&&a!==void 0?a:Zt.mapAndFilter.skip:s})),{os:r,cpu:i,libc:n}}async refreshPackageExtensions(){this.packageExtensions=new Map;let e=this.packageExtensions,t=(r,i,{userProvided:n=!1}={})=>{if(!Dw.validRange(r.range))throw new Error("Only semver ranges are allowed as keys for the packageExtensions setting");let s=new $pe.Manifest;s.load(i,{yamlCompatibilityMode:!0});let a=Zt.getArrayWithDefault(e,r.identHash),g=[];a.push([r.range,g]);let c={status:ai.PackageExtensionStatus.Inactive,userProvided:n,parentDescriptor:r};for(let l of s.dependencies.values())g.push({...c,type:ai.PackageExtensionType.Dependency,descriptor:l});for(let l of s.peerDependencies.values())g.push({...c,type:ai.PackageExtensionType.PeerDependency,descriptor:l});for(let[l,C]of s.peerDependenciesMeta)for(let[f,E]of Object.entries(C))g.push({...c,type:ai.PackageExtensionType.PeerDependencyMeta,selector:l,key:f,value:E})};await this.triggerHook(r=>r.registerPackageExtensions,this,t);for(let[r,i]of this.get("packageExtensions"))t(kr.parseDescriptor(r,!0),Zt.convertMapsToIndexableObjects(i),{userProvided:!0})}normalizeDependency(e){return Dw.validRange(e.range)?kr.makeDescriptor(e,`${this.get("defaultProtocol")}${e.range}`):pA.TAG_REGEXP.test(e.range)?kr.makeDescriptor(e,`${this.get("defaultProtocol")}${e.range}`):e}normalizeDependencyMap(e){return new Map([...e].map(([t,r])=>[t,this.normalizeDependency(r)]))}normalizePackage(e){let t=kr.copyPackage(e);if(this.packageExtensions==null)throw new Error("refreshPackageExtensions has to be called before normalizing packages");let r=this.packageExtensions.get(e.identHash);if(typeof r<"u"){let n=e.version;if(n!==null){for(let[s,a]of r)if(!!Dw.satisfiesWithPrereleases(n,s))for(let g of a)switch(g.status===ai.PackageExtensionStatus.Inactive&&(g.status=ai.PackageExtensionStatus.Redundant),g.type){case ai.PackageExtensionType.Dependency:typeof t.dependencies.get(g.descriptor.identHash)>"u"&&(g.status=ai.PackageExtensionStatus.Active,t.dependencies.set(g.descriptor.identHash,this.normalizeDependency(g.descriptor)));break;case ai.PackageExtensionType.PeerDependency:typeof t.peerDependencies.get(g.descriptor.identHash)>"u"&&(g.status=ai.PackageExtensionStatus.Active,t.peerDependencies.set(g.descriptor.identHash,g.descriptor));break;case ai.PackageExtensionType.PeerDependencyMeta:{let c=t.peerDependenciesMeta.get(g.selector);(typeof c>"u"||!Object.prototype.hasOwnProperty.call(c,g.key)||c[g.key]!==g.value)&&(g.status=ai.PackageExtensionStatus.Active,Zt.getFactoryWithDefault(t.peerDependenciesMeta,g.selector,()=>({}))[g.key]=g.value)}break;default:Zt.assertNever(g);break}}}let i=n=>n.scope?`${n.scope}__${n.name}`:`${n.name}`;for(let n of t.peerDependenciesMeta.keys()){let s=kr.parseIdent(n);t.peerDependencies.has(s.identHash)||t.peerDependencies.set(s.identHash,kr.makeDescriptor(s,"*"))}for(let n of t.peerDependencies.values()){if(n.scope==="types")continue;let s=i(n),a=kr.makeIdent("types",s),g=kr.stringifyIdent(a);t.peerDependencies.has(a.identHash)||t.peerDependenciesMeta.has(g)||(t.peerDependencies.set(a.identHash,kr.makeDescriptor(a,"*")),t.peerDependenciesMeta.set(g,{optional:!0}))}return t.dependencies=new Map(Zt.sortMap(t.dependencies,([,n])=>kr.stringifyDescriptor(n))),t.peerDependencies=new Map(Zt.sortMap(t.peerDependencies,([,n])=>kr.stringifyDescriptor(n))),t}getLimit(e){return Zt.getFactoryWithDefault(this.limits,e,()=>(0,Xpe.default)(this.get(e)))}async triggerHook(e,...t){for(let r of this.plugins.values()){let i=r.hooks;if(!i)continue;let n=e(i);!n||await n(...t)}}async triggerMultipleHooks(e,t){for(let r of t)await this.triggerHook(e,...r)}async reduceHook(e,t,...r){let i=t;for(let n of this.plugins.values()){let s=n.hooks;if(!s)continue;let a=e(s);!a||(i=await a(i,...r))}return i}async firstHook(e,...t){for(let r of this.plugins.values()){let i=r.hooks;if(!i)continue;let n=e(i);if(!n)continue;let s=await n(...t);if(typeof s<"u")return s}return null}};pA.Configuration=$t;$t.deleteProperty=Symbol();$t.telemetry=null});var Nw=p(vr=>{"use strict";Object.defineProperty(vr,"__esModule",{value:!0});vr.execvp=vr.pipevp=vr.ExecError=vr.PipeError=vr.EndStrategy=void 0;var KH=nA(),$I=BA(),UH=KH.__importDefault(Yp()),TH=Nu(),eE=ar(),qH=ii(),gi=KH.__importStar(ti()),mc;(function(A){A[A.Never=0]="Never",A[A.ErrorCode=1]="ErrorCode",A[A.Always=2]="Always"})(mc=vr.EndStrategy||(vr.EndStrategy={}));var Mu=class extends qH.ReportError{constructor({fileName:e,code:t,signal:r}){let i=TH.Configuration.create($I.ppath.cwd()),n=gi.pretty(i,e,gi.Type.PATH);super(eE.MessageName.EXCEPTION,`Child ${n} reported an error`,s=>{IQe(t,r,{configuration:i,report:s})}),this.code=vw(t,r)}};vr.PipeError=Mu;var AE=class extends Mu{constructor({fileName:e,code:t,signal:r,stdout:i,stderr:n}){super({fileName:e,code:t,signal:r}),this.stdout=i,this.stderr=n}};vr.ExecError=AE;function Ia(A){return A!==null&&typeof A.fd=="number"}var Ea=new Set;function bw(){}function kw(){for(let A of Ea)A.kill()}async function CQe(A,e,{cwd:t,env:r=process.env,strict:i=!1,stdin:n=null,stdout:s,stderr:a,end:g=mc.Always}){let c=["pipe","pipe","pipe"];n===null?c[0]="ignore":Ia(n)&&(c[0]=n),Ia(s)&&(c[1]=s),Ia(a)&&(c[2]=a);let l=(0,UH.default)(A,e,{cwd:$I.npath.fromPortablePath(t),env:{...r,PWD:$I.npath.fromPortablePath(t)},stdio:c});Ea.add(l),Ea.size===1&&(process.on("SIGINT",bw),process.on("SIGTERM",kw)),!Ia(n)&&n!==null&&n.pipe(l.stdin),Ia(s)||l.stdout.pipe(s,{end:!1}),Ia(a)||l.stderr.pipe(a,{end:!1});let C=()=>{for(let f of new Set([s,a]))Ia(f)||f.end()};return new Promise((f,E)=>{l.on("error",m=>{Ea.delete(l),Ea.size===0&&(process.off("SIGINT",bw),process.off("SIGTERM",kw)),(g===mc.Always||g===mc.ErrorCode)&&C(),E(m)}),l.on("close",(m,w)=>{Ea.delete(l),Ea.size===0&&(process.off("SIGINT",bw),process.off("SIGTERM",kw)),(g===mc.Always||g===mc.ErrorCode&&m!==0)&&C(),m===0||!i?f({code:vw(m,w)}):E(new Mu({fileName:A,code:m,signal:w}))})})}vr.pipevp=CQe;async function hQe(A,e,{cwd:t,env:r=process.env,encoding:i="utf8",strict:n=!1}){let s=["ignore","pipe","pipe"],a=[],g=[],c=$I.npath.fromPortablePath(t);typeof r.PWD<"u"&&(r={...r,PWD:c});let l=(0,UH.default)(A,e,{cwd:c,env:r,stdio:s});return l.stdout.on("data",C=>{a.push(C)}),l.stderr.on("data",C=>{g.push(C)}),await new Promise((C,f)=>{l.on("error",E=>{let m=TH.Configuration.create(t),w=gi.pretty(m,A,gi.Type.PATH);f(new qH.ReportError(eE.MessageName.EXCEPTION,`Process ${w} failed to spawn`,D=>{D.reportError(eE.MessageName.EXCEPTION,` ${gi.prettyField(m,{label:"Thrown Error",value:gi.tuple(gi.Type.NO_HINT,E.message)})}`)}))}),l.on("close",(E,m)=>{let w=i==="buffer"?Buffer.concat(a):Buffer.concat(a).toString(i),D=i==="buffer"?Buffer.concat(g):Buffer.concat(g).toString(i);E===0||!n?C({code:vw(E,m),stdout:w,stderr:D}):f(new AE({fileName:A,code:E,signal:m,stdout:w,stderr:D}))})})}vr.execvp=hQe;var fQe=new Map([["SIGINT",2],["SIGQUIT",3],["SIGKILL",9],["SIGTERM",15]]);function vw(A,e){let t=fQe.get(e);return typeof t<"u"?128+t:A??1}function IQe(A,e,{configuration:t,report:r}){r.reportError(eE.MessageName.EXCEPTION,` ${gi.prettyField(t,A!==null?{label:"Exit Code",value:gi.tuple(gi.Type.NUMBER,A)}:{label:"Exit Signal",value:gi.tuple(gi.Type.CODE,e)})}`)}});var GH=p(Mw=>{"use strict";Object.defineProperty(Mw,"__esModule",{value:!0});var EQe=BA(),tE=Fg(),BQe=Lw(),rE=class extends tE.Command{constructor(){super(...arguments),this.cwd=tE.Option.String("--cwd",process.cwd(),{description:"The directory to run the command in"}),this.commandName=tE.Option.String(),this.args=tE.Option.Proxy()}async execute(){let e=this.args.length>0?`${this.commandName} ${this.args.join(" ")}`:this.commandName;return await(0,BQe.execute)(e,[],{cwd:EQe.npath.toPortablePath(this.cwd),stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr})}};Mw.default=rE;rE.usage={description:"run a command using yarn's portable shell",details:` + This command will run a command using Yarn's portable shell. + + Make sure to escape glob patterns, redirections, and other features that might be expanded by your own shell. + + Note: To escape something from Yarn's shell, you might have to escape it twice, the first time from your own shell. + + Note: Don't use this command in Yarn scripts, as Yarn's shell is automatically used. + + For a list of features, visit: https://github.com/yarnpkg/berry/blob/master/packages/yarnpkg-shell/README.md. + `,examples:[["Run a simple command","$0 echo Hello"],["Run a command with a glob pattern","$0 echo '*.js'"],["Run a command with a redirection","$0 echo Hello World '>' hello.txt"],["Run a command with an escaped glob pattern (The double escape is needed in Unix shells)",`$0 echo '"*.js"'`],["Run a command with a variable (Double quotes are needed in Unix shells, to prevent them from expanding the variable)",'$0 "GREETING=Hello echo $GREETING World"']]}});var YH=p(iE=>{"use strict";Object.defineProperty(iE,"__esModule",{value:!0});iE.ShellError=void 0;var Pw=class extends Error{constructor(e){super(e),this.name="ShellError"}};iE.ShellError=Pw});var _H=p(Kt=>{"use strict";Object.defineProperty(Kt,"__esModule",{value:!0});Kt.isBraceExpansion=Kt.match=Kt.isGlobPattern=Kt.fastGlobOptions=Kt.micromatchOptions=void 0;var Uw=nA(),Ow=BA(),pQe=Uw.__importDefault(_f()),QQe=Uw.__importDefault(require("fs")),Kw=Uw.__importDefault(Ug());Kt.micromatchOptions={strictBrackets:!0};Kt.fastGlobOptions={onlyDirectories:!1,onlyFiles:!1};function dQe(A){if(!Kw.default.scan(A,Kt.micromatchOptions).isGlob)return!1;try{Kw.default.parse(A,Kt.micromatchOptions)}catch{return!1}return!0}Kt.isGlobPattern=dQe;function yQe(A,{cwd:e,baseFs:t}){return(0,pQe.default)(A,{...Kt.fastGlobOptions,cwd:Ow.npath.fromPortablePath(e),fs:(0,Ow.extendFs)(QQe.default,new Ow.PosixFS(t))})}Kt.match=yQe;function mQe(A){return Kw.default.scan(A,Kt.micromatchOptions).isBrace}Kt.isBraceExpansion=mQe});var _w=p(xt=>{"use strict";Object.defineProperty(xt,"__esModule",{value:!0});xt.createOutputStreamsWithPrefix=xt.start=xt.Handle=xt.ProtectedStream=xt.makeBuiltin=xt.makeProcess=xt.Pipe=void 0;var wQe=nA(),DQe=wQe.__importDefault(Yp()),Vs=require("stream"),SQe=require("string_decoder"),wc;(function(A){A[A.STDIN=0]="STDIN",A[A.STDOUT=1]="STDOUT",A[A.STDERR=2]="STDERR"})(wc=xt.Pipe||(xt.Pipe={}));var Ba=new Set;function Tw(){}function qw(){for(let A of Ba)A.kill()}function FQe(A,e,t,r){return i=>{let n=i[0]instanceof Vs.Transform?"pipe":i[0],s=i[1]instanceof Vs.Transform?"pipe":i[1],a=i[2]instanceof Vs.Transform?"pipe":i[2],g=(0,DQe.default)(A,e,{...r,stdio:[n,s,a]});return Ba.add(g),Ba.size===1&&(process.on("SIGINT",Tw),process.on("SIGTERM",qw)),i[0]instanceof Vs.Transform&&i[0].pipe(g.stdin),i[1]instanceof Vs.Transform&&g.stdout.pipe(i[1],{end:!1}),i[2]instanceof Vs.Transform&&g.stderr.pipe(i[2],{end:!1}),{stdin:g.stdin,promise:new Promise(c=>{g.on("error",l=>{switch(Ba.delete(g),Ba.size===0&&(process.off("SIGINT",Tw),process.off("SIGTERM",qw)),l.code){case"ENOENT":i[2].write(`command not found: ${A} +`),c(127);break;case"EACCES":i[2].write(`permission denied: ${A} +`),c(128);break;default:i[2].write(`uncaught error: ${l.message} +`),c(1);break}}),g.on("close",l=>{Ba.delete(g),Ba.size===0&&(process.off("SIGINT",Tw),process.off("SIGTERM",qw)),c(l!==null?l:129)})})}}}xt.makeProcess=FQe;function xQe(A){return e=>{let t=e[0]==="pipe"?new Vs.PassThrough:e[0];return{stdin:t,promise:Promise.resolve().then(()=>A({stdin:t,stdout:e[1],stderr:e[2]}))}}}xt.makeBuiltin=xQe;var Gw=class{constructor(e){this.stream=e}close(){}get(){return this.stream}};xt.ProtectedStream=Gw;var Yw=class{constructor(){this.stream=null}close(){if(this.stream===null)throw new Error("Assertion failed: No stream attached");this.stream.end()}attach(e){this.stream=e}get(){if(this.stream===null)throw new Error("Assertion failed: No stream attached");return this.stream}},pa=class{static start(e,{stdin:t,stdout:r,stderr:i}){let n=new pa(null,e);return n.stdin=t,n.stdout=r,n.stderr=i,n}constructor(e,t){this.stdin=null,this.stdout=null,this.stderr=null,this.pipe=null,this.ancestor=e,this.implementation=t}pipeTo(e,t=wc.STDOUT){let r=new pa(this,e),i=new Yw;return r.pipe=i,r.stdout=this.stdout,r.stderr=this.stderr,(t&wc.STDOUT)===wc.STDOUT?this.stdout=i:this.ancestor!==null&&(this.stderr=this.ancestor.stdout),(t&wc.STDERR)===wc.STDERR?this.stderr=i:this.ancestor!==null&&(this.stderr=this.ancestor.stderr),r}async exec(){let e=["ignore","ignore","ignore"];if(this.pipe)e[0]="pipe";else{if(this.stdin===null)throw new Error("Assertion failed: No input stream registered");e[0]=this.stdin.get()}let t;if(this.stdout===null)throw new Error("Assertion failed: No output stream registered");t=this.stdout,e[1]=t.get();let r;if(this.stderr===null)throw new Error("Assertion failed: No error stream registered");r=this.stderr,e[2]=r.get();let i=this.implementation(e);return this.pipe&&this.pipe.attach(i.stdin),await i.promise.then(n=>(t.close(),r.close(),n))}async run(){let e=[];for(let r=this;r;r=r.ancestor)e.push(r.exec());return(await Promise.all(e))[0]}};xt.Handle=pa;function RQe(A,e){return pa.start(A,e)}xt.start=RQe;function HH(A,e=null){let t=new Vs.PassThrough,r=new SQe.StringDecoder,i="";return t.on("data",n=>{let s=r.write(n),a;do if(a=s.indexOf(` +`),a!==-1){let g=i+s.substring(0,a);s=s.substring(a+1),i="",A(e!==null?`${e} ${g}`:g)}while(a!==-1);i+=s}),t.on("end",()=>{let n=r.end();n!==""&&A(e!==null?`${e} ${n}`:n)}),t}function bQe(A,{prefix:e}){return{stdout:HH(t=>A.stdout.write(`${t} +`),A.stdout.isTTY?e:null),stderr:HH(t=>A.stderr.write(`${t} +`),A.stderr.isTTY?e:null)}}xt.createOutputStreamsWithPrefix=bQe});var Lw=p(un=>{"use strict";Object.defineProperty(un,"__esModule",{value:!0});un.execute=un.globUtils=un.ShellError=un.EntryCommand=void 0;var jw=nA(),cn=BA(),VH=wg(),kQe=jw.__importDefault(Ed()),vQe=require("os"),Li=require("stream"),NQe=require("util"),MQe=jw.__importDefault(GH());un.EntryCommand=MQe.default;var ln=YH();Object.defineProperty(un,"ShellError",{enumerable:!0,get:function(){return ln.ShellError}});var Ww=jw.__importStar(_H());un.globUtils=Ww;var Hw=_w(),yt=_w(),LQe=(0,NQe.promisify)(setTimeout),Ut;(function(A){A[A.Readable=1]="Readable",A[A.Writable=2]="Writable"})(Ut||(Ut={}));function JH(A,e,t){let r=new Li.PassThrough({autoDestroy:!0});switch(A){case yt.Pipe.STDIN:(e&Ut.Readable)===Ut.Readable&&t.stdin.pipe(r,{end:!1}),(e&Ut.Writable)===Ut.Writable&&t.stdin instanceof Li.Writable&&r.pipe(t.stdin,{end:!1});break;case yt.Pipe.STDOUT:(e&Ut.Readable)===Ut.Readable&&t.stdout.pipe(r,{end:!1}),(e&Ut.Writable)===Ut.Writable&&r.pipe(t.stdout,{end:!1});break;case yt.Pipe.STDERR:(e&Ut.Readable)===Ut.Readable&&t.stderr.pipe(r,{end:!1}),(e&Ut.Writable)===Ut.Writable&&r.pipe(t.stderr,{end:!1});break;default:throw new ln.ShellError(`Bad file descriptor: "${A}"`)}return r}function sE(A,e={}){let t={...A,...e};return t.environment={...A.environment,...e.environment},t.variables={...A.variables,...e.variables},t}var PQe=new Map([["cd",async([A=(0,vQe.homedir)(),...e],t,r)=>{let i=cn.ppath.resolve(r.cwd,cn.npath.toPortablePath(A));if(!(await t.baseFs.statPromise(i).catch(s=>{throw s.code==="ENOENT"?new ln.ShellError(`cd: no such file or directory: ${A}`):s})).isDirectory())throw new ln.ShellError(`cd: not a directory: ${A}`);return r.cwd=i,0}],["pwd",async(A,e,t)=>(t.stdout.write(`${cn.npath.fromPortablePath(t.cwd)} +`),0)],[":",async(A,e,t)=>0],["true",async(A,e,t)=>0],["false",async(A,e,t)=>1],["exit",async([A,...e],t,r)=>r.exitCode=parseInt(A??r.variables["?"],10)],["echo",async(A,e,t)=>(t.stdout.write(`${A.join(" ")} +`),0)],["sleep",async([A],e,t)=>{if(typeof A>"u")throw new ln.ShellError("sleep: missing operand");let r=Number(A);if(Number.isNaN(r))throw new ln.ShellError(`sleep: invalid time interval '${A}'`);return await LQe(1e3*r,0)}],["__ysh_run_procedure",async(A,e,t)=>{let r=t.procedures[A[0]];return await(0,yt.start)(r,{stdin:new yt.ProtectedStream(t.stdin),stdout:new yt.ProtectedStream(t.stdout),stderr:new yt.ProtectedStream(t.stderr)}).run()}],["__ysh_set_redirects",async(A,e,t)=>{let r=t.stdin,i=t.stdout,n=t.stderr,s=[],a=[],g=[],c=0;for(;A[c]!=="--";){let C=A[c++],{type:f,fd:E}=JSON.parse(C),m=K=>{switch(E){case null:case 0:s.push(K);break;default:throw new Error(`Unsupported file descriptor: "${E}"`)}},w=K=>{switch(E){case null:case 1:a.push(K);break;case 2:g.push(K);break;default:throw new Error(`Unsupported file descriptor: "${E}"`)}},D=Number(A[c++]),L=c+D;for(let K=c;Ke.baseFs.createReadStream(cn.ppath.resolve(t.cwd,cn.npath.toPortablePath(A[K]))));break;case"<<<":m(()=>{let _=new Li.PassThrough;return process.nextTick(()=>{_.write(`${A[K]} +`),_.end()}),_});break;case"<&":m(()=>JH(Number(A[K]),Ut.Readable,t));break;case">":case">>":{let _=cn.ppath.resolve(t.cwd,cn.npath.toPortablePath(A[K]));w(_==="/dev/null"?new Li.Writable({autoDestroy:!0,emitClose:!0,write(le,re,J){setImmediate(J)}}):e.baseFs.createWriteStream(_,f===">>"?{flags:"a"}:void 0))}break;case">&":w(JH(Number(A[K]),Ut.Writable,t));break;default:throw new Error(`Assertion failed: Unsupported redirection type: "${f}"`)}}if(s.length>0){let C=new Li.PassThrough;r=C;let f=E=>{if(E===s.length)C.end();else{let m=s[E]();m.pipe(C,{end:!1}),m.on("end",()=>{f(E+1)})}};f(0)}if(a.length>0){let C=new Li.PassThrough;i=C;for(let f of a)C.pipe(f)}if(g.length>0){let C=new Li.PassThrough;n=C;for(let f of g)C.pipe(f)}let l=await(0,yt.start)(Pu(A.slice(c+1),e,t),{stdin:new yt.ProtectedStream(r),stdout:new yt.ProtectedStream(i),stderr:new yt.ProtectedStream(n)}).run();return await Promise.all(a.map(C=>new Promise((f,E)=>{C.on("error",m=>{E(m)}),C.on("close",()=>{f()}),C.end()}))),await Promise.all(g.map(C=>new Promise((f,E)=>{C.on("error",m=>{E(m)}),C.on("close",()=>{f()}),C.end()}))),l}]]);async function OQe(A,e,t){let r=[],i=new Li.PassThrough;return i.on("data",n=>r.push(n)),await oE(A,e,sE(t,{stdout:i})),Buffer.concat(r).toString().replace(/[\r\n]+$/,"")}async function jH(A,e,t){let r=A.map(async n=>{let s=await Qa(n.args,e,t);return{name:n.name,value:s.join(" ")}});return(await Promise.all(r)).reduce((n,s)=>(n[s.name]=s.value,n),{})}function nE(A){return A.match(/[^ \r\n\t]+/g)||[]}async function XH(A,e,t,r,i=r){switch(A.name){case"$":r(String(process.pid));break;case"#":r(String(e.args.length));break;case"@":if(A.quoted)for(let n of e.args)i(n);else for(let n of e.args){let s=nE(n);for(let a=0;a=0&&n"u"&&(A.defaultValue?s=(await Qa(A.defaultValue,e,t)).join(" "):A.alternativeValue&&(s="")),typeof s>"u")throw a?new ln.ShellError(`Unbound argument #${n}`):new ln.ShellError(`Unbound variable "${A.name}"`);if(A.quoted)r(s);else{let g=nE(s);for(let l=0;lA+e,subtraction:(A,e)=>A-e,multiplication:(A,e)=>A*e,division:(A,e)=>Math.trunc(A/e)};async function Lu(A,e,t){if(A.type==="number"){if(Number.isInteger(A.value))return A.value;throw new Error(`Invalid number: "${A.value}", only integers are allowed`)}else if(A.type==="variable"){let r=[];await XH({...A,quoted:!0},e,t,n=>r.push(n));let i=Number(r.join(" "));return Number.isNaN(i)?Lu({type:"variable",name:r.join(" ")},e,t):Lu({type:"number",value:i},e,t)}else return KQe[A.type](await Lu(A.left,e,t),await Lu(A.right,e,t))}async function Qa(A,e,t){let r=new Map,i=[],n=[],s=l=>{n.push(l)},a=()=>{n.length>0&&i.push(n.join("")),n=[]},g=l=>{s(l),a()},c=(l,C,f)=>{let E=JSON.stringify({type:l,fd:C}),m=r.get(E);typeof m>"u"&&r.set(E,m=[]),m.push(f)};for(let l of A){let C=!1;switch(l.type){case"redirection":{let f=await Qa(l.args,e,t);for(let E of f)c(l.subtype,l.fd,E)}break;case"argument":for(let f of l.segments)switch(f.type){case"text":s(f.text);break;case"glob":s(f.pattern),C=!0;break;case"shell":{let E=await OQe(f.shell,e,t);if(f.quoted)s(E);else{let m=nE(E);for(let w=0;w"u")throw new Error("Assertion failed: Expected a glob pattern to have been set");let E=await e.glob.match(f,{cwd:t.cwd,baseFs:e.baseFs});if(E.length===0){let m=Ww.isBraceExpansion(f)?". Note: Brace expansion of arbitrary strings isn't currently supported. For more details, please read this issue: https://github.com/yarnpkg/berry/issues/22":"";throw new ln.ShellError(`No matches found: "${f}"${m}`)}for(let m of E.sort())g(m)}}if(r.size>0){let l=[];for(let[C,f]of r.entries())l.splice(l.length,0,C,String(f.length),...f);i.splice(0,0,"__ysh_set_redirects",...l,"--")}return i}function Pu(A,e,t){e.builtins.has(A[0])||(A=["command",...A]);let r=cn.npath.fromPortablePath(t.cwd),i=t.environment;typeof i.PWD<"u"&&(i={...i,PWD:r});let[n,...s]=A;if(n==="command")return(0,Hw.makeProcess)(s[0],s.slice(1),e,{cwd:r,env:i});let a=e.builtins.get(n);if(typeof a>"u")throw new Error(`Assertion failed: A builtin should exist for "${n}"`);return(0,Hw.makeBuiltin)(async({stdin:g,stdout:c,stderr:l})=>{let{stdin:C,stdout:f,stderr:E}=t;t.stdin=g,t.stdout=c,t.stderr=l;try{return await a(s,e,t)}finally{t.stdin=C,t.stdout=f,t.stderr=E}})}function UQe(A,e,t){return r=>{let i=new Li.PassThrough,n=oE(A,e,sE(t,{stdin:i}));return{stdin:i,promise:n}}}function TQe(A,e,t){return r=>{let i=new Li.PassThrough,n=oE(A,e,t);return{stdin:i,promise:n}}}function WH(A,e,t,r){if(e.length===0)return A;{let i;do i=String(Math.random());while(Object.prototype.hasOwnProperty.call(r.procedures,i));return r.procedures={...r.procedures},r.procedures[i]=A,Pu([...e,"__ysh_run_procedure",i],t,r)}}async function zH(A,e,t){let r=A,i=null,n=null;for(;r;){let s=r.then?{...t}:t,a;switch(r.type){case"command":{let g=await Qa(r.args,e,t),c=await jH(r.envs,e,t);a=r.envs.length?Pu(g,e,sE(s,{environment:c})):Pu(g,e,s)}break;case"subshell":{let g=await Qa(r.args,e,t),c=UQe(r.subshell,e,s);a=WH(c,g,e,s)}break;case"group":{let g=await Qa(r.args,e,t),c=TQe(r.group,e,s);a=WH(c,g,e,s)}break;case"envs":{let g=await jH(r.envs,e,t);s.environment={...s.environment,...g},a=Pu(["true"],e,s)}break}if(typeof a>"u")throw new Error("Assertion failed: An action should have been generated");if(i===null)n=(0,yt.start)(a,{stdin:new yt.ProtectedStream(s.stdin),stdout:new yt.ProtectedStream(s.stdout),stderr:new yt.ProtectedStream(s.stderr)});else{if(n===null)throw new Error("Assertion failed: The execution pipeline should have been setup");switch(i){case"|":n=n.pipeTo(a,yt.Pipe.STDOUT);break;case"|&":n=n.pipeTo(a,yt.Pipe.STDOUT|yt.Pipe.STDERR);break}}r.then?(i=r.then.type,r=r.then.chain):r=null}if(n===null)throw new Error("Assertion failed: The execution pipeline should have been setup");return await n.run()}async function qQe(A,e,t,{background:r=!1}={}){function i(n){let s=["#2E86AB","#A23B72","#F18F01","#C73E1D","#CCE2A3"],a=s[n%s.length];return kQe.default.hex(a)}if(r){let n=t.nextBackgroundJobIndex++,s=i(n),a=`[${n}]`,g=s(a),{stdout:c,stderr:l}=(0,Hw.createOutputStreamsWithPrefix)(t,{prefix:g});return t.backgroundJobs.push(zH(A,e,sE(t,{stdout:c,stderr:l})).catch(C=>l.write(`${C.message} +`)).finally(()=>{t.stdout.isTTY&&t.stdout.write(`Job ${g}, '${s((0,VH.stringifyCommandChain)(A))}' has ended +`)})),0}return await zH(A,e,t)}async function GQe(A,e,t,{background:r=!1}={}){let i,n=a=>{i=a,t.variables["?"]=String(a)},s=async a=>{try{return await qQe(a.chain,e,t,{background:r&&typeof a.then>"u"})}catch(g){if(!(g instanceof ln.ShellError))throw g;return t.stderr.write(`${g.message} +`),1}};for(n(await s(A));A.then;){if(t.exitCode!==null)return t.exitCode;switch(A.then.type){case"&&":i===0&&n(await s(A.then.line));break;case"||":i!==0&&n(await s(A.then.line));break;default:throw new Error(`Assertion failed: Unsupported command type: "${A.then.type}"`)}A=A.then.line}return i}async function oE(A,e,t){let r=t.backgroundJobs;t.backgroundJobs=[];let i=0;for(let{command:n,type:s}of A){if(i=await GQe(n,e,t,{background:s==="&"}),t.exitCode!==null)return t.exitCode;t.variables["?"]=String(i)}return await Promise.all(t.backgroundJobs),t.backgroundJobs=r,i}function ZH(A){switch(A.type){case"variable":return A.name==="@"||A.name==="#"||A.name==="*"||Number.isFinite(parseInt(A.name,10))||"defaultValue"in A&&!!A.defaultValue&&A.defaultValue.some(e=>Ou(e))||"alternativeValue"in A&&!!A.alternativeValue&&A.alternativeValue.some(e=>Ou(e));case"arithmetic":return Jw(A.arithmetic);case"shell":return zw(A.shell);default:return!1}}function Ou(A){switch(A.type){case"redirection":return A.args.some(e=>Ou(e));case"argument":return A.segments.some(e=>ZH(e));default:throw new Error(`Assertion failed: Unsupported argument type: "${A.type}"`)}}function Jw(A){switch(A.type){case"variable":return ZH(A);case"number":return!1;default:return Jw(A.left)||Jw(A.right)}}function zw(A){return A.some(({command:e})=>{for(;e;){let t=e.chain;for(;t;){let r;switch(t.type){case"subshell":r=zw(t.subshell);break;case"command":r=t.envs.some(i=>i.args.some(n=>Ou(n)))||t.args.some(i=>Ou(i));break}if(r)return!0;if(!t.then)break;t=t.then.chain}if(!e.then)break;e=e.then.line}return!1})}async function YQe(A,e=[],{baseFs:t=new cn.NodeFS,builtins:r={},cwd:i=cn.npath.toPortablePath(process.cwd()),env:n=process.env,stdin:s=process.stdin,stdout:a=process.stdout,stderr:g=process.stderr,variables:c={},glob:l=Ww}={}){let C={};for(let[m,w]of Object.entries(n))typeof w<"u"&&(C[m]=w);let f=new Map(PQe);for(let[m,w]of Object.entries(r))f.set(m,w);s===null&&(s=new Li.PassThrough,s.end());let E=(0,VH.parseShell)(A,l);if(!zw(E)&&E.length>0&&e.length>0){let{command:m}=E[E.length-1];for(;m.then;)m=m.then.line;let w=m.chain;for(;w.then;)w=w.then.chain;w.type==="command"&&(w.args=w.args.concat(e.map(D=>({type:"argument",segments:[{type:"text",text:D}]}))))}return await oE(E,{args:e,baseFs:t,builtins:f,initialStdin:s,initialStdout:a,initialStderr:g,glob:l},{cwd:i,environment:C,exitCode:null,procedures:{},stdin:s,stdout:a,stderr:g,variables:Object.assign({},c,{["?"]:0}),nextBackgroundJobIndex:1,backgroundJobs:[]})}un.execute=YQe});var eJ=p((iLe,$H)=>{function _Qe(A,e){for(var t=-1,r=A==null?0:A.length,i=Array(r);++t{var AJ=Gg(),HQe=eJ(),JQe=An(),jQe=Bu(),WQe=1/0,tJ=AJ?AJ.prototype:void 0,rJ=tJ?tJ.toString:void 0;function iJ(A){if(typeof A=="string")return A;if(JQe(A))return HQe(A,iJ)+"";if(jQe(A))return rJ?rJ.call(A):"";var e=A+"";return e=="0"&&1/A==-WQe?"-0":e}nJ.exports=iJ});var aE=p((sLe,oJ)=>{var zQe=sJ();function VQe(A){return A==null?"":zQe(A)}oJ.exports=VQe});var gJ=p((oLe,aJ)=>{function XQe(A,e,t){var r=-1,i=A.length;e<0&&(e=-e>i?0:i+e),t=t>i?i:t,t<0&&(t+=i),i=e>t?0:t-e>>>0,e>>>=0;for(var n=Array(i);++r{var ZQe=gJ();function $Qe(A,e,t){var r=A.length;return t=t===void 0?r:t,!e&&t>=r?A:ZQe(A,e,t)}cJ.exports=$Qe});var Vw=p((gLe,uJ)=>{var ede="\\ud800-\\udfff",Ade="\\u0300-\\u036f",tde="\\ufe20-\\ufe2f",rde="\\u20d0-\\u20ff",ide=Ade+tde+rde,nde="\\ufe0e\\ufe0f",sde="\\u200d",ode=RegExp("["+sde+ede+ide+nde+"]");function ade(A){return ode.test(A)}uJ.exports=ade});var hJ=p((cLe,CJ)=>{function gde(A){return A.split("")}CJ.exports=gde});var yJ=p((lLe,dJ)=>{var fJ="\\ud800-\\udfff",cde="\\u0300-\\u036f",lde="\\ufe20-\\ufe2f",ude="\\u20d0-\\u20ff",Cde=cde+lde+ude,hde="\\ufe0e\\ufe0f",fde="["+fJ+"]",Xw="["+Cde+"]",Zw="\\ud83c[\\udffb-\\udfff]",Ide="(?:"+Xw+"|"+Zw+")",IJ="[^"+fJ+"]",EJ="(?:\\ud83c[\\udde6-\\uddff]){2}",BJ="[\\ud800-\\udbff][\\udc00-\\udfff]",Ede="\\u200d",pJ=Ide+"?",QJ="["+hde+"]?",Bde="(?:"+Ede+"(?:"+[IJ,EJ,BJ].join("|")+")"+QJ+pJ+")*",pde=QJ+pJ+Bde,Qde="(?:"+[IJ+Xw+"?",Xw,EJ,BJ,fde].join("|")+")",dde=RegExp(Zw+"(?="+Zw+")|"+Qde+pde,"g");function yde(A){return A.match(dde)||[]}dJ.exports=yde});var wJ=p((uLe,mJ)=>{var mde=hJ(),wde=Vw(),Dde=yJ();function Sde(A){return wde(A)?Dde(A):mde(A)}mJ.exports=Sde});var SJ=p((CLe,DJ)=>{var Fde=lJ(),xde=Vw(),Rde=wJ(),bde=aE();function kde(A){return function(e){e=bde(e);var t=xde(e)?Rde(e):void 0,r=t?t[0]:e.charAt(0),i=t?Fde(t,1).join(""):e.slice(1);return r[A]()+i}}DJ.exports=kde});var xJ=p((hLe,FJ)=>{var vde=SJ(),Nde=vde("toUpperCase");FJ.exports=Nde});var bJ=p((fLe,RJ)=>{var Mde=aE(),Lde=xJ();function Pde(A){return Lde(Mde(A).toLowerCase())}RJ.exports=Pde});var kJ=p((ILe,gE)=>{function Ode(){var A=0,e=1,t=2,r=3,i=4,n=5,s=6,a=7,g=8,c=9,l=10,C=11,f=12,E=13,m=14,w=15,D=16,L=17,K=0,_=1,le=2,re=3,J=4;function X(o,H){return 55296<=o.charCodeAt(H)&&o.charCodeAt(H)<=56319&&56320<=o.charCodeAt(H+1)&&o.charCodeAt(H+1)<=57343}function ie(o,H){H===void 0&&(H=0);var ne=o.charCodeAt(H);if(55296<=ne&&ne<=56319&&H=1){var j=o.charCodeAt(H-1),M=ne;return 55296<=j&&j<=56319?(j-55296)*1024+(M-56320)+65536:M}return ne}function G(o,H,ne){var j=[o].concat(H).concat([ne]),M=j[j.length-2],k=ne,te=j.lastIndexOf(m);if(te>1&&j.slice(1,te).every(function(pe){return pe==r})&&[r,E,L].indexOf(o)==-1)return le;var ae=j.lastIndexOf(i);if(ae>0&&j.slice(1,ae).every(function(pe){return pe==i})&&[f,i].indexOf(M)==-1)return j.filter(function(pe){return pe==i}).length%2==1?re:J;if(M==A&&k==e)return K;if(M==t||M==A||M==e)return k==m&&H.every(function(pe){return pe==r})?le:_;if(k==t||k==A||k==e)return _;if(M==s&&(k==s||k==a||k==c||k==l))return K;if((M==c||M==a)&&(k==a||k==g))return K;if((M==l||M==g)&&k==g)return K;if(k==r||k==w)return K;if(k==n)return K;if(M==f)return K;var De=j.indexOf(r)!=-1?j.lastIndexOf(r)-1:j.length-2;return[E,L].indexOf(j[De])!=-1&&j.slice(De+1,-1).every(function(pe){return pe==r})&&k==m||M==w&&[D,L].indexOf(k)!=-1?K:H.indexOf(i)!=-1?le:M==i&&k==i?K:_}this.nextBreak=function(o,H){if(H===void 0&&(H=0),H<0)return 0;if(H>=o.length-1)return o.length;for(var ne=ee(ie(o,H)),j=[],M=H+1;M{var Kde=/^(.*?)(\x1b\[[^m]+m|\x1b\]8;;.*?(\x1b\\|\u0007))/,cE;function Ude(){if(cE)return cE;if(typeof Intl.Segmenter<"u"){let A=new Intl.Segmenter("en",{granularity:"grapheme"});return cE=e=>Array.from(A.segment(e),({segment:t})=>t)}else{let A=kJ(),e=new A;return cE=t=>e.splitGraphemes(t)}}vJ.exports=(A,e=0,t=A.length)=>{if(e<0||t<0)throw new RangeError("Negative indices aren't supported by this implementation");let r=t-e,i="",n=0,s=0;for(;A.length>0;){let a=A.match(Kde)||[A,A,void 0],g=Ude()(a[1]),c=Math.min(e-n,g.length);g=g.slice(c);let l=Math.min(r-s,g.length);i+=g.slice(0,l).join(""),n+=c,s+=l,typeof a[2]<"u"&&(i+=a[2]),A=A.slice(a[0].length)}return i}});var hE=p(Xs=>{"use strict";Object.defineProperty(Xs,"__esModule",{value:!0});Xs.StreamReport=Xs.formatNameWithHyperlink=Xs.formatName=void 0;var CE=nA(),Tde=CE.__importDefault(NJ()),$w=CE.__importDefault(Qh()),Oi=ar(),qde=ii(),Pi=CE.__importStar(ti()),MJ=CE.__importStar(Dt()),LJ=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"],PJ=80,Gde=new Set([Oi.MessageName.FETCH_NOT_CACHED,Oi.MessageName.UNUSED_CACHE_ENTRY]),Yde=5,lE=$w.default.GITHUB_ACTIONS?{start:A=>`::group::${A} +`,end:A=>`::endgroup:: +`}:$w.default.TRAVIS?{start:A=>`travis_fold:start:${A} +`,end:A=>`travis_fold:end:${A} +`}:$w.default.GITLAB?{start:A=>`section_start:${Math.floor(Date.now()/1e3)}:${A.toLowerCase().replace(/\W+/g,"_")}[collapsed=true]\r\x1B[0K${A} +`,end:A=>`section_end:${Math.floor(Date.now()/1e3)}:${A.toLowerCase().replace(/\W+/g,"_")}\r\x1B[0K`}:null,OJ=new Date,_de=["iTerm.app","Apple_Terminal"].includes(process.env.TERM_PROGRAM)||!!process.env.WT_SESSION,Hde=A=>A,uE=Hde({patrick:{date:[17,3],chars:["\u{1F340}","\u{1F331}"],size:40},simba:{date:[19,7],chars:["\u{1F981}","\u{1F334}"],size:40},jack:{date:[31,10],chars:["\u{1F383}","\u{1F987}"],size:40},hogsfather:{date:[31,12],chars:["\u{1F389}","\u{1F384}"],size:40},default:{chars:["=","-"],size:80}}),Jde=_de&&Object.keys(uE).find(A=>{let e=uE[A];return!(e.date&&(e.date[0]!==OJ.getDate()||e.date[1]!==OJ.getMonth()+1))})||"default";function AD(A,{configuration:e,json:t}){if(!e.get("enableMessageNames"))return"";let r=A===null?0:A,i=(0,Oi.stringifyMessageName)(r);return!t&&A===null?Pi.pretty(e,i,"grey"):i}Xs.formatName=AD;function KJ(A,{configuration:e,json:t}){let r=AD(A,{configuration:e,json:t});if(!r||A===null||A===Oi.MessageName.UNNAMED)return r;let i=Oi.MessageName[A],n=`https://yarnpkg.com/advanced/error-codes#${r}---${i}`.toLowerCase();return Pi.applyHyperlink(e,r,n)}Xs.formatNameWithHyperlink=KJ;var eD=class extends qde.Report{static async start(e,t){let r=new this(e),i=process.emitWarning;process.emitWarning=(n,s)=>{if(typeof n!="string"){let g=n;n=g.message,s=s??g.name}let a=typeof s<"u"?`${s}: ${n}`:n;r.reportWarning(Oi.MessageName.UNNAMED,a)};try{await t(r)}catch(n){r.reportExceptionOnce(n)}finally{await r.finalize(),process.emitWarning=i}return r}constructor({configuration:e,stdout:t,json:r=!1,includeFooter:i=!0,includeLogs:n=!r,includeInfos:s=n,includeWarnings:a=n,forgettableBufferSize:g=Yde,forgettableNames:c=new Set}){if(super(),this.uncommitted=new Set,this.cacheHitCount=0,this.cacheMissCount=0,this.lastCacheMiss=null,this.warningCount=0,this.errorCount=0,this.startTime=Date.now(),this.indent=0,this.progress=new Map,this.progressTime=0,this.progressFrame=0,this.progressTimeout=null,this.progressStyle=null,this.progressMaxScaledSize=null,this.forgettableLines=[],Pi.addLogFilterSupport(this,{configuration:e}),this.configuration=e,this.forgettableBufferSize=g,this.forgettableNames=new Set([...c,...Gde]),this.includeFooter=i,this.includeInfos=s,this.includeWarnings=a,this.json=r,this.stdout=t,e.get("enableProgressBars")&&!r&&t.isTTY&&t.columns>22){let l=e.get("progressBarStyle")||Jde;if(!Object.prototype.hasOwnProperty.call(uE,l))throw new Error("Assertion failed: Invalid progress bar style");this.progressStyle=uE[l];let C=12,f=Math.max(0,Math.min(t.columns-C,80));this.progressMaxScaledSize=Math.floor(this.progressStyle.size*f/80)}}hasErrors(){return this.errorCount>0}exitCode(){return this.hasErrors()?1:0}reportCacheHit(e){this.cacheHitCount+=1}reportCacheMiss(e,t){this.lastCacheMiss=e,this.cacheMissCount+=1,typeof t<"u"&&!this.configuration.get("preferAggregateCacheInfo")&&this.reportInfo(Oi.MessageName.FETCH_NOT_CACHED,t)}startSectionSync({reportHeader:e,reportFooter:t,skipIfEmpty:r},i){let n={committed:!1,action:()=>{e?.()}};r?this.uncommitted.add(n):(n.action(),n.committed=!0);let s=Date.now();try{return i()}catch(a){throw this.reportExceptionOnce(a),a}finally{let a=Date.now();this.uncommitted.delete(n),n.committed&&t?.(a-s)}}async startSectionPromise({reportHeader:e,reportFooter:t,skipIfEmpty:r},i){let n={committed:!1,action:()=>{e?.()}};r?this.uncommitted.add(n):(n.action(),n.committed=!0);let s=Date.now();try{return await i()}catch(a){throw this.reportExceptionOnce(a),a}finally{let a=Date.now();this.uncommitted.delete(n),n.committed&&t?.(a-s)}}startTimerImpl(e,t,r){return{cb:typeof t=="function"?t:r,reportHeader:()=>{this.reportInfo(null,`\u250C ${e}`),this.indent+=1,lE!==null&&!this.json&&this.includeInfos&&this.stdout.write(lE.start(e))},reportFooter:s=>{this.indent-=1,lE!==null&&!this.json&&this.includeInfos&&this.stdout.write(lE.end(e)),this.configuration.get("enableTimers")&&s>200?this.reportInfo(null,`\u2514 Completed in ${Pi.pretty(this.configuration,s,Pi.Type.DURATION)}`):this.reportInfo(null,"\u2514 Completed")},skipIfEmpty:(typeof t=="function"?{}:t).skipIfEmpty}}startTimerSync(e,t,r){let{cb:i,...n}=this.startTimerImpl(e,t,r);return this.startSectionSync(n,i)}async startTimerPromise(e,t,r){let{cb:i,...n}=this.startTimerImpl(e,t,r);return this.startSectionPromise(n,i)}async startCacheReport(e){let t=this.configuration.get("preferAggregateCacheInfo")?{cacheHitCount:this.cacheHitCount,cacheMissCount:this.cacheMissCount}:null;try{return await e()}catch(r){throw this.reportExceptionOnce(r),r}finally{t!==null&&this.reportCacheChanges(t)}}reportSeparator(){this.indent===0?this.writeLineWithForgettableReset(""):this.reportInfo(null,"")}reportInfo(e,t){if(!this.includeInfos)return;this.commit();let r=this.formatNameWithHyperlink(e),i=r?`${r}: `:"",n=`${Pi.pretty(this.configuration,"\u27A4","blueBright")} ${i}${this.formatIndent()}${t}`;if(this.json)this.reportJson({type:"info",name:e,displayName:this.formatName(e),indent:this.formatIndent(),data:t});else if(this.forgettableNames.has(e))if(this.forgettableLines.push(n),this.forgettableLines.length>this.forgettableBufferSize){for(;this.forgettableLines.length>this.forgettableBufferSize;)this.forgettableLines.shift();this.writeLines(this.forgettableLines,{truncate:!0})}else this.writeLine(n,{truncate:!0});else this.writeLineWithForgettableReset(n)}reportWarning(e,t){if(this.warningCount+=1,!this.includeWarnings)return;this.commit();let r=this.formatNameWithHyperlink(e),i=r?`${r}: `:"";this.json?this.reportJson({type:"warning",name:e,displayName:this.formatName(e),indent:this.formatIndent(),data:t}):this.writeLineWithForgettableReset(`${Pi.pretty(this.configuration,"\u27A4","yellowBright")} ${i}${this.formatIndent()}${t}`)}reportError(e,t){this.errorCount+=1,this.commit();let r=this.formatNameWithHyperlink(e),i=r?`${r}: `:"";this.json?this.reportJson({type:"error",name:e,displayName:this.formatName(e),indent:this.formatIndent(),data:t}):this.writeLineWithForgettableReset(`${Pi.pretty(this.configuration,"\u27A4","redBright")} ${i}${this.formatIndent()}${t}`,{truncate:!1})}reportProgress(e){if(this.progressStyle===null)return{...Promise.resolve(),stop:()=>{}};if(e.hasProgress&&e.hasTitle)throw new Error("Unimplemented: Progress bars can't have both progress and titles.");let t=!1,r=Promise.resolve().then(async()=>{let n={progress:e.hasProgress?0:void 0,title:e.hasTitle?"":void 0};this.progress.set(e,{definition:n,lastScaledSize:e.hasProgress?-1:void 0,lastTitle:void 0}),this.refreshProgress({delta:-1});for await(let{progress:s,title:a}of e)t||n.progress===s&&n.title===a||(n.progress=s,n.title=a,this.refreshProgress());i()}),i=()=>{t||(t=!0,this.progress.delete(e),this.refreshProgress({delta:1}))};return{...r,stop:i}}reportJson(e){this.json&&this.writeLineWithForgettableReset(`${JSON.stringify(e)}`)}async finalize(){if(!this.includeFooter)return;let e="";this.errorCount>0?e="Failed with errors":this.warningCount>0?e="Done with warnings":e="Done";let t=Pi.pretty(this.configuration,Date.now()-this.startTime,Pi.Type.DURATION),r=this.configuration.get("enableTimers")?`${e} in ${t}`:e;this.errorCount>0?this.reportError(Oi.MessageName.UNNAMED,r):this.warningCount>0?this.reportWarning(Oi.MessageName.UNNAMED,r):this.reportInfo(Oi.MessageName.UNNAMED,r)}writeLine(e,{truncate:t}={}){this.clearProgress({clear:!0}),this.stdout.write(`${this.truncate(e,{truncate:t})} +`),this.writeProgress()}writeLineWithForgettableReset(e,{truncate:t}={}){this.forgettableLines=[],this.writeLine(e,{truncate:t})}writeLines(e,{truncate:t}={}){this.clearProgress({delta:e.length});for(let r of e)this.stdout.write(`${this.truncate(r,{truncate:t})} +`);this.writeProgress()}reportCacheChanges({cacheHitCount:e,cacheMissCount:t}){let r=this.cacheHitCount-e,i=this.cacheMissCount-t;if(r===0&&i===0)return;let n="";this.cacheHitCount>1?n+=`${this.cacheHitCount} packages were already cached`:this.cacheHitCount===1?n+=" - one package was already cached":n+="No packages were cached",this.cacheHitCount>0?this.cacheMissCount>1?n+=`, ${this.cacheMissCount} had to be fetched`:this.cacheMissCount===1&&(n+=`, one had to be fetched (${MJ.prettyLocator(this.configuration,this.lastCacheMiss)})`):this.cacheMissCount>1?n+=` - ${this.cacheMissCount} packages had to be fetched`:this.cacheMissCount===1&&(n+=` - one package had to be fetched (${MJ.prettyLocator(this.configuration,this.lastCacheMiss)})`),this.reportInfo(Oi.MessageName.FETCH_NOT_CACHED,n)}commit(){let e=this.uncommitted;this.uncommitted=new Set;for(let t of e)t.committed=!0,t.action()}clearProgress({delta:e=0,clear:t=!1}){this.progressStyle!==null&&this.progress.size+e>0&&(this.stdout.write(`\x1B[${this.progress.size+e}A`),(e>0||t)&&this.stdout.write("\x1B[0J"))}writeProgress(){if(this.progressStyle===null||(this.progressTimeout!==null&&clearTimeout(this.progressTimeout),this.progressTimeout=null,this.progress.size===0))return;let e=Date.now();e-this.progressTime>PJ&&(this.progressFrame=(this.progressFrame+1)%LJ.length,this.progressTime=e);let t=LJ[this.progressFrame];for(let r of this.progress.values()){let i="";if(typeof r.lastScaledSize<"u"){let g=this.progressStyle.chars[0].repeat(r.lastScaledSize),c=this.progressStyle.chars[1].repeat(this.progressMaxScaledSize-r.lastScaledSize);i=` ${g}${c}`}let n=this.formatName(null),s=n?`${n}: `:"",a=r.definition.title?` ${r.definition.title}`:"";this.stdout.write(`${Pi.pretty(this.configuration,"\u27A4","blueBright")} ${s}${t}${i}${a} +`)}this.progressTimeout=setTimeout(()=>{this.refreshProgress({force:!0})},PJ)}refreshProgress({delta:e=0,force:t=!1}={}){let r=!1,i=!1;if(t||this.progress.size===0)r=!0;else for(let n of this.progress.values()){let s=typeof n.definition.progress<"u"?Math.trunc(this.progressMaxScaledSize*n.definition.progress):void 0,a=n.lastScaledSize;n.lastScaledSize=s;let g=n.lastTitle;if(n.lastTitle=n.definition.title,s!==a||(i=g!==n.definition.title)){r=!0;break}}r&&(this.clearProgress({delta:e,clear:i}),this.writeProgress())}truncate(e,{truncate:t}={}){return this.progressStyle===null&&(t=!1),typeof t>"u"&&(t=this.configuration.get("preferTruncatedLines")),t&&(e=(0,Tde.default)(e,0,this.stdout.columns-1)),e}formatName(e){return AD(e,{configuration:this.configuration,json:this.json})}formatNameWithHyperlink(e){return KJ(e,{configuration:this.configuration,json:this.json})}formatIndent(){return"\u2502 ".repeat(this.indent)}};Xs.StreamReport=eD});var tD=p(fE=>{"use strict";Object.defineProperty(fE,"__esModule",{value:!0});fE.YarnVersion=void 0;fE.YarnVersion=typeof YARN_VERSION<"u"?YARN_VERSION:null});var oD=p(DA=>{"use strict";Object.defineProperty(DA,"__esModule",{value:!0});DA.executeWorkspaceAccessibleBinary=DA.executePackageAccessibleBinary=DA.getWorkspaceAccessibleBinaries=DA.getPackageAccessibleBinaries=DA.maybeExecuteWorkspaceLifecycleScript=DA.executeWorkspaceLifecycleScript=DA.hasWorkspaceScript=DA.executeWorkspaceScript=DA.executePackageShellcode=DA.executePackageScript=DA.hasPackageScript=DA.prepareExternalProject=DA.makeScriptEnv=DA.detectPackageManager=DA.PackageManager=void 0;var ya=nA(),Zs=BA(),We=BA(),UJ=ds(),TJ=Lw(),jde=ya.__importDefault(bJ()),Wde=ya.__importDefault(xg()),Dc=require("stream"),nD=gc(),iD=ar(),qJ=ii(),IE=hE(),rD=tD(),ci=ya.__importStar(Nw()),Cn=ya.__importStar(ti()),da=ya.__importStar(br()),zde=ya.__importStar(qs()),lt=ya.__importStar(Dt()),Nr;(function(A){A.Yarn1="Yarn Classic",A.Yarn2="Yarn",A.Npm="npm",A.Pnpm="pnpm"})(Nr=DA.PackageManager||(DA.PackageManager={}));async function Zn(A,e,t,r=[]){if(process.platform==="win32"){let i=`@goto #_undefined_# 2>NUL || @title %COMSPEC% & @setlocal & @"${t}" ${r.map(n=>`"${n.replace('"','""')}"`).join(" ")} %*`;await We.xfs.writeFilePromise(We.ppath.format({dir:A,name:e,ext:".cmd"}),i)}await We.xfs.writeFilePromise(We.ppath.join(A,e),`#!/bin/sh +exec "${t}" ${r.map(i=>`'${i.replace(/'/g,`'"'"'`)}'`).join(" ")} "$@" +`,{mode:493})}async function GJ(A){let e=await nD.Manifest.tryFind(A);if(e?.packageManager){let r=lt.tryParseLocator(e.packageManager);if(r?.name){let i=`found ${JSON.stringify({packageManager:e.packageManager})} in manifest`,[n]=r.reference.split(".");switch(r.name){case"yarn":return{packageManager:Number(n)===1?Nr.Yarn1:Nr.Yarn2,reason:i};case"npm":return{packageManager:Nr.Npm,reason:i};case"pnpm":return{packageManager:Nr.Pnpm,reason:i}}}}let t;try{t=await We.xfs.readFilePromise(We.ppath.join(A,Zs.Filename.lockfile),"utf8")}catch{}return t!==void 0?t.match(/^__metadata:$/m)?{packageManager:Nr.Yarn2,reason:'"__metadata" key found in yarn.lock'}:{packageManager:Nr.Yarn1,reason:'"__metadata" key not found in yarn.lock, must be a Yarn classic lockfile'}:We.xfs.existsSync(We.ppath.join(A,"package-lock.json"))?{packageManager:Nr.Npm,reason:`found npm's "package-lock.json" lockfile`}:We.xfs.existsSync(We.ppath.join(A,"pnpm-lock.yaml"))?{packageManager:Nr.Pnpm,reason:`found pnpm's "pnpm-lock.yaml" lockfile`}:null}DA.detectPackageManager=GJ;async function Ku({project:A,locator:e,binFolder:t,lifecycleScript:r}){var i,n;let s={};for(let[l,C]of Object.entries(process.env))typeof C<"u"&&(s[l.toLowerCase()!=="path"?l:"PATH"]=C);let a=We.npath.fromPortablePath(t);s.BERRY_BIN_FOLDER=We.npath.fromPortablePath(a);let g=process.env.COREPACK_ROOT?We.npath.join(process.env.COREPACK_ROOT,"dist/yarn.js"):process.argv[1];if(await Promise.all([Zn(t,"node",process.execPath),...rD.YarnVersion!==null?[Zn(t,"run",process.execPath,[g,"run"]),Zn(t,"yarn",process.execPath,[g]),Zn(t,"yarnpkg",process.execPath,[g]),Zn(t,"node-gyp",process.execPath,[g,"run","--top-level","node-gyp"])]:[]]),A&&(s.INIT_CWD=We.npath.cwd(),s.PROJECT_CWD=We.npath.fromPortablePath(A.cwd)),s.PATH=s.PATH?`${a}${We.npath.delimiter}${s.PATH}`:`${a}`,s.npm_execpath=`${a}${We.npath.sep}yarn`,s.npm_node_execpath=`${a}${We.npath.sep}node`,e){if(!A)throw new Error("Assertion failed: Missing project");let l=A.tryWorkspaceByLocator(e),C=l?(i=l.manifest.version)!==null&&i!==void 0?i:"":(n=A.storedPackages.get(e.locatorHash).version)!==null&&n!==void 0?n:"";s.npm_package_name=lt.stringifyIdent(e),s.npm_package_version=C;let f;if(l)f=l.cwd;else{let E=A.storedPackages.get(e.locatorHash);if(!E)throw new Error(`Package for ${lt.prettyLocator(A.configuration,e)} not found in the project`);let m=A.configuration.getLinkers(),w={project:A,report:new IE.StreamReport({stdout:new Dc.PassThrough,configuration:A.configuration})},D=m.find(L=>L.supportsPackage(E,w));if(!D)throw new Error(`The package ${lt.prettyLocator(A.configuration,E)} isn't supported by any of the available linkers`);f=await D.findPackageLocation(E,w)}s.npm_package_json=We.npath.fromPortablePath(We.ppath.join(f,Zs.Filename.manifest))}let c=rD.YarnVersion!==null?`yarn/${rD.YarnVersion}`:`yarn/${da.dynamicRequire("@yarnpkg/core").version}-core`;return s.npm_config_user_agent=`${c} npm/? node/${process.version} ${process.platform} ${process.arch}`,r&&(s.npm_lifecycle_event=r),A&&await A.configuration.triggerHook(l=>l.setupScriptEnvironment,A,s,async(l,C,f)=>await Zn(t,(0,We.toFilename)(l),C,f)),s}DA.makeScriptEnv=Ku;var Vde=2,Xde=(0,Wde.default)(Vde);async function Zde(A,e,{configuration:t,report:r,workspace:i=null,locator:n=null}){await Xde(async()=>{await We.xfs.mktempPromise(async s=>{let a=We.ppath.join(s,"pack.log"),g=null,{stdout:c,stderr:l}=t.getSubprocessStreams(a,{prefix:We.npath.fromPortablePath(A),report:r}),C=n&<.isVirtualLocator(n)?lt.devirtualizeLocator(n):n,f=C?lt.stringifyLocator(C):"an external project";c.write(`Packing ${f} from sources +`);let E=await GJ(A),m;E!==null?(c.write(`Using ${E.packageManager} for bootstrap. Reason: ${E.reason} + +`),m=E.packageManager):(c.write(`No package manager configuration detected; defaulting to Yarn + +`),m=Nr.Yarn2),await We.xfs.mktempPromise(async w=>{let D=await Ku({binFolder:w}),K=new Map([[Nr.Yarn1,async()=>{let le=i!==null?["workspace",i]:[],re=We.ppath.join(A,Zs.Filename.manifest),J=await We.xfs.readFilePromise(re),X=await ci.pipevp(process.execPath,[process.argv[1],"set","version","classic","--only-if-needed","--yarn-path"],{cwd:A,env:D,stdin:g,stdout:c,stderr:l,end:ci.EndStrategy.ErrorCode});if(X.code!==0)return X.code;await We.xfs.writeFilePromise(re,J),await We.xfs.appendFilePromise(We.ppath.join(A,".npmignore"),`/.yarn +`),c.write(` +`),delete D.NODE_ENV;let ie=await ci.pipevp("yarn",["install"],{cwd:A,env:D,stdin:g,stdout:c,stderr:l,end:ci.EndStrategy.ErrorCode});if(ie.code!==0)return ie.code;c.write(` +`);let G=await ci.pipevp("yarn",[...le,"pack","--filename",We.npath.fromPortablePath(e)],{cwd:A,env:D,stdin:g,stdout:c,stderr:l});return G.code!==0?G.code:0}],[Nr.Yarn2,async()=>{let le=i!==null?["workspace",i]:[];D.YARN_ENABLE_INLINE_BUILDS="1";let re=We.ppath.join(A,Zs.Filename.lockfile);await We.xfs.existsPromise(re)||await We.xfs.writeFilePromise(re,"");let J=await ci.pipevp("yarn",[...le,"pack","--install-if-needed","--filename",We.npath.fromPortablePath(e)],{cwd:A,env:D,stdin:g,stdout:c,stderr:l});return J.code!==0?J.code:0}],[Nr.Npm,async()=>{if(i!==null){let o=new Dc.PassThrough,H=da.bufferStream(o);o.pipe(c,{end:!1});let ne=await ci.pipevp("npm",["--version"],{cwd:A,env:D,stdin:g,stdout:o,stderr:l,end:ci.EndStrategy.Never});if(o.end(),ne.code!==0)return c.end(),l.end(),ne.code;let j=(await H).toString().trim();if(!zde.satisfiesWithPrereleases(j,">=7.x")){let M=lt.makeIdent(null,"npm"),k=lt.makeDescriptor(M,j),te=lt.makeDescriptor(M,">=7.x");throw new Error(`Workspaces aren't supported by ${lt.prettyDescriptor(t,k)}; please upgrade to ${lt.prettyDescriptor(t,te)} (npm has been detected as the primary package manager for ${Cn.pretty(t,A,Cn.Type.PATH)})`)}}let le=i!==null?["--workspace",i]:[];delete D.npm_config_user_agent,delete D.npm_config_production,delete D.NPM_CONFIG_PRODUCTION,delete D.NODE_ENV;let re=await ci.pipevp("npm",["install"],{cwd:A,env:D,stdin:g,stdout:c,stderr:l,end:ci.EndStrategy.ErrorCode});if(re.code!==0)return re.code;let J=new Dc.PassThrough,X=da.bufferStream(J);J.pipe(c);let ie=await ci.pipevp("npm",["pack","--silent",...le],{cwd:A,env:D,stdin:g,stdout:J,stderr:l});if(ie.code!==0)return ie.code;let G=(await X).toString().trim().replace(/^.*\n/s,""),ee=We.ppath.resolve(A,We.npath.toPortablePath(G));return await We.xfs.renamePromise(ee,e),0}]]).get(m);if(typeof K>"u")throw new Error("Assertion failed: Unsupported workflow");let _=await K();if(!(_===0||typeof _>"u"))throw We.xfs.detachTemp(s),new qJ.ReportError(iD.MessageName.PACKAGE_PREPARATION_FAILED,`Packing the package failed (exit code ${_}, logs can be found here: ${Cn.pretty(t,a,Cn.Type.PATH)})`)})})})}DA.prepareExternalProject=Zde;async function $de(A,e,{project:t}){let r=t.tryWorkspaceByLocator(A);if(r!==null)return sD(r,e);let i=t.storedPackages.get(A.locatorHash);if(!i)throw new Error(`Package for ${lt.prettyLocator(t.configuration,A)} not found in the project`);return await UJ.ZipOpenFS.openPromise(async n=>{let s=t.configuration,a=t.configuration.getLinkers(),g={project:t,report:new IE.StreamReport({stdout:new Dc.PassThrough,configuration:s})},c=a.find(E=>E.supportsPackage(i,g));if(!c)throw new Error(`The package ${lt.prettyLocator(t.configuration,i)} isn't supported by any of the available linkers`);let l=await c.findPackageLocation(i,g),C=new Zs.CwdFS(l,{baseFs:n});return(await nD.Manifest.find(Zs.PortablePath.dot,{baseFs:C})).scripts.has(e)})}DA.hasPackageScript=$de;async function YJ(A,e,t,{cwd:r,project:i,stdin:n,stdout:s,stderr:a}){return await We.xfs.mktempPromise(async g=>{let{manifest:c,env:l,cwd:C}=await _J(A,{project:i,binFolder:g,cwd:r,lifecycleScript:e}),f=c.scripts.get(e);if(typeof f>"u")return 1;let E=async()=>await(0,TJ.execute)(f,t,{cwd:C,env:l,stdin:n,stdout:s,stderr:a});return await(await i.configuration.reduceHook(w=>w.wrapScriptExecution,E,i,A,e,{script:f,args:t,cwd:C,env:l,stdin:n,stdout:s,stderr:a}))()})}DA.executePackageScript=YJ;async function eye(A,e,t,{cwd:r,project:i,stdin:n,stdout:s,stderr:a}){return await We.xfs.mktempPromise(async g=>{let{env:c,cwd:l}=await _J(A,{project:i,binFolder:g,cwd:r});return await(0,TJ.execute)(e,t,{cwd:l,env:c,stdin:n,stdout:s,stderr:a})})}DA.executePackageShellcode=eye;async function Aye(A,{binFolder:e,cwd:t,lifecycleScript:r}){let i=await Ku({project:A.project,locator:A.anchoredLocator,binFolder:e,lifecycleScript:r});return await Promise.all(Array.from(await jJ(A),([n,[,s]])=>Zn(e,(0,We.toFilename)(n),process.execPath,[s]))),typeof t>"u"&&(t=We.ppath.dirname(await We.xfs.realpathPromise(We.ppath.join(A.cwd,"package.json")))),{manifest:A.manifest,binFolder:e,env:i,cwd:t}}async function _J(A,{project:e,binFolder:t,cwd:r,lifecycleScript:i}){let n=e.tryWorkspaceByLocator(A);if(n!==null)return Aye(n,{binFolder:t,cwd:r,lifecycleScript:i});let s=e.storedPackages.get(A.locatorHash);if(!s)throw new Error(`Package for ${lt.prettyLocator(e.configuration,A)} not found in the project`);return await UJ.ZipOpenFS.openPromise(async a=>{let g=e.configuration,c=e.configuration.getLinkers(),l={project:e,report:new IE.StreamReport({stdout:new Dc.PassThrough,configuration:g})},C=c.find(D=>D.supportsPackage(s,l));if(!C)throw new Error(`The package ${lt.prettyLocator(e.configuration,s)} isn't supported by any of the available linkers`);let f=await Ku({project:e,locator:A,binFolder:t,lifecycleScript:i});await Promise.all(Array.from(await EE(A,{project:e}),([D,[,L]])=>Zn(t,(0,We.toFilename)(D),process.execPath,[L])));let E=await C.findPackageLocation(s,l),m=new Zs.CwdFS(E,{baseFs:a}),w=await nD.Manifest.find(Zs.PortablePath.dot,{baseFs:m});return typeof r>"u"&&(r=E),{manifest:w,binFolder:t,env:f,cwd:r}})}async function HJ(A,e,t,{cwd:r,stdin:i,stdout:n,stderr:s}){return await YJ(A.anchoredLocator,e,t,{cwd:r,project:A.project,stdin:i,stdout:n,stderr:s})}DA.executeWorkspaceScript=HJ;function sD(A,e){return A.manifest.scripts.has(e)}DA.hasWorkspaceScript=sD;async function JJ(A,e,{cwd:t,report:r}){let{configuration:i}=A.project,n=null;await We.xfs.mktempPromise(async s=>{let a=We.ppath.join(s,`${e}.log`),g=`# This file contains the result of Yarn calling the "${e}" lifecycle script inside a workspace ("${We.npath.fromPortablePath(A.cwd)}") +`,{stdout:c,stderr:l}=i.getSubprocessStreams(a,{report:r,prefix:lt.prettyLocator(i,A.anchoredLocator),header:g});r.reportInfo(iD.MessageName.LIFECYCLE_SCRIPT,`Calling the "${e}" lifecycle script`);let C=await HJ(A,e,[],{cwd:t,stdin:n,stdout:c,stderr:l});if(c.end(),l.end(),C!==0)throw We.xfs.detachTemp(s),new qJ.ReportError(iD.MessageName.LIFECYCLE_SCRIPT,`${(0,jde.default)(e)} script failed (exit code ${Cn.pretty(i,C,Cn.Type.NUMBER)}, logs can be found here: ${Cn.pretty(i,a,Cn.Type.PATH)}); run ${Cn.pretty(i,`yarn ${e}`,Cn.Type.CODE)} to investigate`)})}DA.executeWorkspaceLifecycleScript=JJ;async function tye(A,e,t){sD(A,e)&&await JJ(A,e,t)}DA.maybeExecuteWorkspaceLifecycleScript=tye;async function EE(A,{project:e}){let t=e.configuration,r=new Map,i=e.storedPackages.get(A.locatorHash);if(!i)throw new Error(`Package for ${lt.prettyLocator(t,A)} not found in the project`);let n=new Dc.Writable,s=t.getLinkers(),a={project:e,report:new IE.StreamReport({configuration:t,stdout:n})},g=new Set([A.locatorHash]);for(let l of i.dependencies.values()){let C=e.storedResolutions.get(l.descriptorHash);if(!C)throw new Error(`Assertion failed: The resolution (${lt.prettyDescriptor(t,l)}) should have been registered`);g.add(C)}let c=await Promise.all(Array.from(g,async l=>{let C=e.storedPackages.get(l);if(!C)throw new Error(`Assertion failed: The package (${l}) should have been registered`);if(C.bin.size===0)return da.mapAndFilter.skip;let f=s.find(m=>m.supportsPackage(C,a));if(!f)return da.mapAndFilter.skip;let E=null;try{E=await f.findPackageLocation(C,a)}catch(m){if(m.code==="LOCATOR_NOT_INSTALLED")return da.mapAndFilter.skip;throw m}return{dependency:C,packageLocation:E}}));for(let l of c){if(l===da.mapAndFilter.skip)continue;let{dependency:C,packageLocation:f}=l;for(let[E,m]of C.bin)r.set(E,[C,We.npath.fromPortablePath(We.ppath.resolve(f,m))])}return r}DA.getPackageAccessibleBinaries=EE;async function jJ(A){return await EE(A.anchoredLocator,{project:A.project})}DA.getWorkspaceAccessibleBinaries=jJ;async function WJ(A,e,t,{cwd:r,project:i,stdin:n,stdout:s,stderr:a,nodeArgs:g=[],packageAccessibleBinaries:c}){c??(c=await EE(A,{project:i}));let l=c.get(e);if(!l)throw new Error(`Binary not found (${e}) for ${lt.prettyLocator(i.configuration,A)}`);return await We.xfs.mktempPromise(async C=>{let[,f]=l,E=await Ku({project:i,locator:A,binFolder:C});await Promise.all(Array.from(c,([w,[,D]])=>Zn(E.BERRY_BIN_FOLDER,(0,We.toFilename)(w),process.execPath,[D])));let m;try{m=await ci.pipevp(process.execPath,[...g,f,...t],{cwd:r,env:E,stdin:n,stdout:s,stderr:a})}finally{await We.xfs.removePromise(E.BERRY_BIN_FOLDER)}return m.code})}DA.executePackageAccessibleBinary=WJ;async function rye(A,e,t,{cwd:r,stdin:i,stdout:n,stderr:s,packageAccessibleBinaries:a}){return await WJ(A.anchoredLocator,e,t,{project:A.project,cwd:r,stdin:i,stdout:n,stderr:s,packageAccessibleBinaries:a})}DA.executeWorkspaceAccessibleBinary=rye});var Sc=p((dLe,VJ)=>{"use strict";var zJ=new Map([["C","cwd"],["f","file"],["z","gzip"],["P","preservePaths"],["U","unlink"],["strip-components","strip"],["stripComponents","strip"],["keep-newer","newer"],["keepNewer","newer"],["keep-newer-files","newer"],["keepNewerFiles","newer"],["k","keep"],["keep-existing","keep"],["keepExisting","keep"],["m","noMtime"],["no-mtime","noMtime"],["p","preserveOwner"],["L","follow"],["h","follow"]]);VJ.exports=A=>A?Object.keys(A).map(e=>[zJ.has(e)?zJ.get(e):e,A[e]]).reduce((e,t)=>(e[t[0]]=t[1],e),Object.create(null)):{}});var xc=p((yLe,nj)=>{"use strict";var XJ=typeof process=="object"&&process?process:{stdout:null,stderr:null},iye=require("events"),ZJ=require("stream"),$J=require("string_decoder").StringDecoder,$n=Symbol("EOF"),es=Symbol("maybeEmitEnd"),$s=Symbol("emittedEnd"),BE=Symbol("emittingEnd"),Uu=Symbol("emittedError"),pE=Symbol("closed"),ej=Symbol("read"),QE=Symbol("flush"),Aj=Symbol("flushChunk"),ur=Symbol("encoding"),As=Symbol("decoder"),dE=Symbol("flowing"),Tu=Symbol("paused"),Fc=Symbol("resume"),mt=Symbol("bufferLength"),aD=Symbol("bufferPush"),gD=Symbol("bufferShift"),Tt=Symbol("objectMode"),qt=Symbol("destroyed"),cD=Symbol("emitData"),tj=Symbol("emitEnd"),lD=Symbol("emitEnd2"),ts=Symbol("async"),qu=A=>Promise.resolve().then(A),rj=global._MP_NO_ITERATOR_SYMBOLS_!=="1",nye=rj&&Symbol.asyncIterator||Symbol("asyncIterator not implemented"),sye=rj&&Symbol.iterator||Symbol("iterator not implemented"),oye=A=>A==="end"||A==="finish"||A==="prefinish",aye=A=>A instanceof ArrayBuffer||typeof A=="object"&&A.constructor&&A.constructor.name==="ArrayBuffer"&&A.byteLength>=0,gye=A=>!Buffer.isBuffer(A)&&ArrayBuffer.isView(A),yE=class{constructor(e,t,r){this.src=e,this.dest=t,this.opts=r,this.ondrain=()=>e[Fc](),t.on("drain",this.ondrain)}unpipe(){this.dest.removeListener("drain",this.ondrain)}proxyErrors(){}end(){this.unpipe(),this.opts.end&&this.dest.end()}},uD=class extends yE{unpipe(){this.src.removeListener("error",this.proxyErrors),super.unpipe()}constructor(e,t,r){super(e,t,r),this.proxyErrors=i=>t.emit("error",i),e.on("error",this.proxyErrors)}};nj.exports=class ij extends ZJ{constructor(e){super(),this[dE]=!1,this[Tu]=!1,this.pipes=[],this.buffer=[],this[Tt]=e&&e.objectMode||!1,this[Tt]?this[ur]=null:this[ur]=e&&e.encoding||null,this[ur]==="buffer"&&(this[ur]=null),this[ts]=e&&!!e.async||!1,this[As]=this[ur]?new $J(this[ur]):null,this[$n]=!1,this[$s]=!1,this[BE]=!1,this[pE]=!1,this[Uu]=null,this.writable=!0,this.readable=!0,this[mt]=0,this[qt]=!1}get bufferLength(){return this[mt]}get encoding(){return this[ur]}set encoding(e){if(this[Tt])throw new Error("cannot set encoding in objectMode");if(this[ur]&&e!==this[ur]&&(this[As]&&this[As].lastNeed||this[mt]))throw new Error("cannot change encoding");this[ur]!==e&&(this[As]=e?new $J(e):null,this.buffer.length&&(this.buffer=this.buffer.map(t=>this[As].write(t)))),this[ur]=e}setEncoding(e){this.encoding=e}get objectMode(){return this[Tt]}set objectMode(e){this[Tt]=this[Tt]||!!e}get async(){return this[ts]}set async(e){this[ts]=this[ts]||!!e}write(e,t,r){if(this[$n])throw new Error("write after end");if(this[qt])return this.emit("error",Object.assign(new Error("Cannot call write after a stream was destroyed"),{code:"ERR_STREAM_DESTROYED"})),!0;typeof t=="function"&&(r=t,t="utf8"),t||(t="utf8");let i=this[ts]?qu:n=>n();return!this[Tt]&&!Buffer.isBuffer(e)&&(gye(e)?e=Buffer.from(e.buffer,e.byteOffset,e.byteLength):aye(e)?e=Buffer.from(e):typeof e!="string"&&(this.objectMode=!0)),this[Tt]?(this.flowing&&this[mt]!==0&&this[QE](!0),this.flowing?this.emit("data",e):this[aD](e),this[mt]!==0&&this.emit("readable"),r&&i(r),this.flowing):e.length?(typeof e=="string"&&!(t===this[ur]&&!this[As].lastNeed)&&(e=Buffer.from(e,t)),Buffer.isBuffer(e)&&this[ur]&&(e=this[As].write(e)),this.flowing&&this[mt]!==0&&this[QE](!0),this.flowing?this.emit("data",e):this[aD](e),this[mt]!==0&&this.emit("readable"),r&&i(r),this.flowing):(this[mt]!==0&&this.emit("readable"),r&&i(r),this.flowing)}read(e){if(this[qt])return null;if(this[mt]===0||e===0||e>this[mt])return this[es](),null;this[Tt]&&(e=null),this.buffer.length>1&&!this[Tt]&&(this.encoding?this.buffer=[this.buffer.join("")]:this.buffer=[Buffer.concat(this.buffer,this[mt])]);let t=this[ej](e||null,this.buffer[0]);return this[es](),t}[ej](e,t){return e===t.length||e===null?this[gD]():(this.buffer[0]=t.slice(e),t=t.slice(0,e),this[mt]-=e),this.emit("data",t),!this.buffer.length&&!this[$n]&&this.emit("drain"),t}end(e,t,r){return typeof e=="function"&&(r=e,e=null),typeof t=="function"&&(r=t,t="utf8"),e&&this.write(e,t),r&&this.once("end",r),this[$n]=!0,this.writable=!1,(this.flowing||!this[Tu])&&this[es](),this}[Fc](){this[qt]||(this[Tu]=!1,this[dE]=!0,this.emit("resume"),this.buffer.length?this[QE]():this[$n]?this[es]():this.emit("drain"))}resume(){return this[Fc]()}pause(){this[dE]=!1,this[Tu]=!0}get destroyed(){return this[qt]}get flowing(){return this[dE]}get paused(){return this[Tu]}[aD](e){this[Tt]?this[mt]+=1:this[mt]+=e.length,this.buffer.push(e)}[gD](){return this.buffer.length&&(this[Tt]?this[mt]-=1:this[mt]-=this.buffer[0].length),this.buffer.shift()}[QE](e){do;while(this[Aj](this[gD]()));!e&&!this.buffer.length&&!this[$n]&&this.emit("drain")}[Aj](e){return e?(this.emit("data",e),this.flowing):!1}pipe(e,t){if(this[qt])return;let r=this[$s];return t=t||{},e===XJ.stdout||e===XJ.stderr?t.end=!1:t.end=t.end!==!1,t.proxyErrors=!!t.proxyErrors,r?t.end&&e.end():(this.pipes.push(t.proxyErrors?new uD(this,e,t):new yE(this,e,t)),this[ts]?qu(()=>this[Fc]()):this[Fc]()),e}unpipe(e){let t=this.pipes.find(r=>r.dest===e);t&&(this.pipes.splice(this.pipes.indexOf(t),1),t.unpipe())}addListener(e,t){return this.on(e,t)}on(e,t){let r=super.on(e,t);return e==="data"&&!this.pipes.length&&!this.flowing?this[Fc]():e==="readable"&&this[mt]!==0?super.emit("readable"):oye(e)&&this[$s]?(super.emit(e),this.removeAllListeners(e)):e==="error"&&this[Uu]&&(this[ts]?qu(()=>t.call(this,this[Uu])):t.call(this,this[Uu])),r}get emittedEnd(){return this[$s]}[es](){!this[BE]&&!this[$s]&&!this[qt]&&this.buffer.length===0&&this[$n]&&(this[BE]=!0,this.emit("end"),this.emit("prefinish"),this.emit("finish"),this[pE]&&this.emit("close"),this[BE]=!1)}emit(e,t,...r){if(e!=="error"&&e!=="close"&&e!==qt&&this[qt])return;if(e==="data")return t?this[ts]?qu(()=>this[cD](t)):this[cD](t):!1;if(e==="end")return this[tj]();if(e==="close"){if(this[pE]=!0,!this[$s]&&!this[qt])return;let n=super.emit("close");return this.removeAllListeners("close"),n}else if(e==="error"){this[Uu]=t;let n=super.emit("error",t);return this[es](),n}else if(e==="resume"){let n=super.emit("resume");return this[es](),n}else if(e==="finish"||e==="prefinish"){let n=super.emit(e);return this.removeAllListeners(e),n}let i=super.emit(e,t,...r);return this[es](),i}[cD](e){for(let r of this.pipes)r.dest.write(e)===!1&&this.pause();let t=super.emit("data",e);return this[es](),t}[tj](){this[$s]||(this[$s]=!0,this.readable=!1,this[ts]?qu(()=>this[lD]()):this[lD]())}[lD](){if(this[As]){let t=this[As].end();if(t){for(let r of this.pipes)r.dest.write(t);super.emit("data",t)}}for(let t of this.pipes)t.end();let e=super.emit("end");return this.removeAllListeners("end"),e}collect(){let e=[];this[Tt]||(e.dataLength=0);let t=this.promise();return this.on("data",r=>{e.push(r),this[Tt]||(e.dataLength+=r.length)}),t.then(()=>e)}concat(){return this[Tt]?Promise.reject(new Error("cannot concat in objectMode")):this.collect().then(e=>this[Tt]?Promise.reject(new Error("cannot concat in objectMode")):this[ur]?e.join(""):Buffer.concat(e,e.dataLength))}promise(){return new Promise((e,t)=>{this.on(qt,()=>t(new Error("stream destroyed"))),this.on("error",r=>t(r)),this.on("end",()=>e())})}[nye](){return{next:()=>{let t=this.read();if(t!==null)return Promise.resolve({done:!1,value:t});if(this[$n])return Promise.resolve({done:!0});let r=null,i=null,n=c=>{this.removeListener("data",s),this.removeListener("end",a),i(c)},s=c=>{this.removeListener("error",n),this.removeListener("end",a),this.pause(),r({value:c,done:!!this[$n]})},a=()=>{this.removeListener("error",n),this.removeListener("data",s),r({done:!0})},g=()=>n(new Error("stream destroyed"));return new Promise((c,l)=>{i=l,r=c,this.once(qt,g),this.once("error",n),this.once("end",a),this.once("data",s)})}}}[sye](){return{next:()=>{let t=this.read();return{value:t,done:t===null}}}}destroy(e){return this[qt]?(e?this.emit("error",e):this.emit(qt),this):(this[qt]=!0,this.buffer.length=0,this[mt]=0,typeof this.close=="function"&&!this[pE]&&this.close(),e?this.emit("error",e):this.emit(qt),this)}static isStream(e){return!!e&&(e instanceof ij||e instanceof ZJ||e instanceof iye&&(typeof e.pipe=="function"||typeof e.write=="function"&&typeof e.end=="function"))}}});var oj=p((mLe,sj)=>{var cye=require("zlib").constants||{ZLIB_VERNUM:4736};sj.exports=Object.freeze(Object.assign(Object.create(null),{Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_VERSION_ERROR:-6,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,DEFLATE:1,INFLATE:2,GZIP:3,GUNZIP:4,DEFLATERAW:5,INFLATERAW:6,UNZIP:7,BROTLI_DECODE:8,BROTLI_ENCODE:9,Z_MIN_WINDOWBITS:8,Z_MAX_WINDOWBITS:15,Z_DEFAULT_WINDOWBITS:15,Z_MIN_CHUNK:64,Z_MAX_CHUNK:1/0,Z_DEFAULT_CHUNK:16384,Z_MIN_MEMLEVEL:1,Z_MAX_MEMLEVEL:9,Z_DEFAULT_MEMLEVEL:8,Z_MIN_LEVEL:-1,Z_MAX_LEVEL:9,Z_DEFAULT_LEVEL:-1,BROTLI_OPERATION_PROCESS:0,BROTLI_OPERATION_FLUSH:1,BROTLI_OPERATION_FINISH:2,BROTLI_OPERATION_EMIT_METADATA:3,BROTLI_MODE_GENERIC:0,BROTLI_MODE_TEXT:1,BROTLI_MODE_FONT:2,BROTLI_DEFAULT_MODE:0,BROTLI_MIN_QUALITY:0,BROTLI_MAX_QUALITY:11,BROTLI_DEFAULT_QUALITY:11,BROTLI_MIN_WINDOW_BITS:10,BROTLI_MAX_WINDOW_BITS:24,BROTLI_LARGE_MAX_WINDOW_BITS:30,BROTLI_DEFAULT_WINDOW:22,BROTLI_MIN_INPUT_BLOCK_BITS:16,BROTLI_MAX_INPUT_BLOCK_BITS:24,BROTLI_PARAM_MODE:0,BROTLI_PARAM_QUALITY:1,BROTLI_PARAM_LGWIN:2,BROTLI_PARAM_LGBLOCK:3,BROTLI_PARAM_DISABLE_LITERAL_CONTEXT_MODELING:4,BROTLI_PARAM_SIZE_HINT:5,BROTLI_PARAM_LARGE_WINDOW:6,BROTLI_PARAM_NPOSTFIX:7,BROTLI_PARAM_NDIRECT:8,BROTLI_DECODER_RESULT_ERROR:0,BROTLI_DECODER_RESULT_SUCCESS:1,BROTLI_DECODER_RESULT_NEEDS_MORE_INPUT:2,BROTLI_DECODER_RESULT_NEEDS_MORE_OUTPUT:3,BROTLI_DECODER_PARAM_DISABLE_RING_BUFFER_REALLOCATION:0,BROTLI_DECODER_PARAM_LARGE_WINDOW:1,BROTLI_DECODER_NO_ERROR:0,BROTLI_DECODER_SUCCESS:1,BROTLI_DECODER_NEEDS_MORE_INPUT:2,BROTLI_DECODER_NEEDS_MORE_OUTPUT:3,BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_NIBBLE:-1,BROTLI_DECODER_ERROR_FORMAT_RESERVED:-2,BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_META_NIBBLE:-3,BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_ALPHABET:-4,BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_SAME:-5,BROTLI_DECODER_ERROR_FORMAT_CL_SPACE:-6,BROTLI_DECODER_ERROR_FORMAT_HUFFMAN_SPACE:-7,BROTLI_DECODER_ERROR_FORMAT_CONTEXT_MAP_REPEAT:-8,BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_1:-9,BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_2:-10,BROTLI_DECODER_ERROR_FORMAT_TRANSFORM:-11,BROTLI_DECODER_ERROR_FORMAT_DICTIONARY:-12,BROTLI_DECODER_ERROR_FORMAT_WINDOW_BITS:-13,BROTLI_DECODER_ERROR_FORMAT_PADDING_1:-14,BROTLI_DECODER_ERROR_FORMAT_PADDING_2:-15,BROTLI_DECODER_ERROR_FORMAT_DISTANCE:-16,BROTLI_DECODER_ERROR_DICTIONARY_NOT_SET:-19,BROTLI_DECODER_ERROR_INVALID_ARGUMENTS:-20,BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MODES:-21,BROTLI_DECODER_ERROR_ALLOC_TREE_GROUPS:-22,BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MAP:-25,BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_1:-26,BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_2:-27,BROTLI_DECODER_ERROR_ALLOC_BLOCK_TYPE_TREES:-30,BROTLI_DECODER_ERROR_UNREACHABLE:-31},cye))});var xD=p(Mr=>{"use strict";var ED=require("assert"),eo=require("buffer").Buffer,cj=require("zlib"),ma=Mr.constants=oj(),lye=xc(),aj=eo.concat,wa=Symbol("_superWrite"),bc=class extends Error{constructor(e){super("zlib: "+e.message),this.code=e.code,this.errno=e.errno,this.code||(this.code="ZLIB_ERROR"),this.message="zlib: "+e.message,Error.captureStackTrace(this,this.constructor)}get name(){return"ZlibError"}},uye=Symbol("opts"),Gu=Symbol("flushFlag"),gj=Symbol("finishFlushFlag"),FD=Symbol("fullFlushFlag"),_A=Symbol("handle"),mE=Symbol("onError"),Rc=Symbol("sawError"),CD=Symbol("level"),hD=Symbol("strategy"),fD=Symbol("ended"),wLe=Symbol("_defaultFullFlush"),wE=class extends lye{constructor(e,t){if(!e||typeof e!="object")throw new TypeError("invalid options for ZlibBase constructor");super(e),this[Rc]=!1,this[fD]=!1,this[uye]=e,this[Gu]=e.flush,this[gj]=e.finishFlush;try{this[_A]=new cj[t](e)}catch(r){throw new bc(r)}this[mE]=r=>{this[Rc]||(this[Rc]=!0,this.close(),this.emit("error",r))},this[_A].on("error",r=>this[mE](new bc(r))),this.once("end",()=>this.close)}close(){this[_A]&&(this[_A].close(),this[_A]=null,this.emit("close"))}reset(){if(!this[Rc])return ED(this[_A],"zlib binding closed"),this[_A].reset()}flush(e){this.ended||(typeof e!="number"&&(e=this[FD]),this.write(Object.assign(eo.alloc(0),{[Gu]:e})))}end(e,t,r){return e&&this.write(e,t),this.flush(this[gj]),this[fD]=!0,super.end(null,null,r)}get ended(){return this[fD]}write(e,t,r){if(typeof t=="function"&&(r=t,t="utf8"),typeof e=="string"&&(e=eo.from(e,t)),this[Rc])return;ED(this[_A],"zlib binding closed");let i=this[_A]._handle,n=i.close;i.close=()=>{};let s=this[_A].close;this[_A].close=()=>{},eo.concat=c=>c;let a;try{let c=typeof e[Gu]=="number"?e[Gu]:this[Gu];a=this[_A]._processChunk(e,c),eo.concat=aj}catch(c){eo.concat=aj,this[mE](new bc(c))}finally{this[_A]&&(this[_A]._handle=i,i.close=n,this[_A].close=s,this[_A].removeAllListeners("error"))}this[_A]&&this[_A].on("error",c=>this[mE](new bc(c)));let g;if(a)if(Array.isArray(a)&&a.length>0){g=this[wa](eo.from(a[0]));for(let c=1;c{this.flush(i),n()};try{this[_A].params(e,t)}finally{this[_A].flush=r}this[_A]&&(this[CD]=e,this[hD]=t)}}}},BD=class extends rs{constructor(e){super(e,"Deflate")}},pD=class extends rs{constructor(e){super(e,"Inflate")}},ID=Symbol("_portable"),QD=class extends rs{constructor(e){super(e,"Gzip"),this[ID]=e&&!!e.portable}[wa](e){return this[ID]?(this[ID]=!1,e[9]=255,super[wa](e)):super[wa](e)}},dD=class extends rs{constructor(e){super(e,"Gunzip")}},yD=class extends rs{constructor(e){super(e,"DeflateRaw")}},mD=class extends rs{constructor(e){super(e,"InflateRaw")}},wD=class extends rs{constructor(e){super(e,"Unzip")}},DE=class extends wE{constructor(e,t){e=e||{},e.flush=e.flush||ma.BROTLI_OPERATION_PROCESS,e.finishFlush=e.finishFlush||ma.BROTLI_OPERATION_FINISH,super(e,t),this[FD]=ma.BROTLI_OPERATION_FLUSH}},DD=class extends DE{constructor(e){super(e,"BrotliCompress")}},SD=class extends DE{constructor(e){super(e,"BrotliDecompress")}};Mr.Deflate=BD;Mr.Inflate=pD;Mr.Gzip=QD;Mr.Gunzip=dD;Mr.DeflateRaw=yD;Mr.InflateRaw=mD;Mr.Unzip=wD;typeof cj.BrotliCompress=="function"?(Mr.BrotliCompress=DD,Mr.BrotliDecompress=SD):Mr.BrotliCompress=Mr.BrotliDecompress=class{constructor(){throw new Error("Brotli is not supported in this version of Node.js")}}});var kc=p((FLe,lj)=>{var Cye=process.env.TESTING_TAR_FAKE_PLATFORM||process.platform;lj.exports=Cye!=="win32"?A=>A:A=>A&&A.replace(/\\/g,"/")});var SE=p((RLe,uj)=>{"use strict";var hye=xc(),RD=kc(),bD=Symbol("slurp");uj.exports=class extends hye{constructor(e,t,r){switch(super(),this.pause(),this.extended=t,this.globalExtended=r,this.header=e,this.startBlockSize=512*Math.ceil(e.size/512),this.blockRemain=this.startBlockSize,this.remain=e.size,this.type=e.type,this.meta=!1,this.ignore=!1,this.type){case"File":case"OldFile":case"Link":case"SymbolicLink":case"CharacterDevice":case"BlockDevice":case"Directory":case"FIFO":case"ContiguousFile":case"GNUDumpDir":break;case"NextFileHasLongLinkpath":case"NextFileHasLongPath":case"OldGnuLongPath":case"GlobalExtendedHeader":case"ExtendedHeader":case"OldExtendedHeader":this.meta=!0;break;default:this.ignore=!0}this.path=RD(e.path),this.mode=e.mode,this.mode&&(this.mode=this.mode&4095),this.uid=e.uid,this.gid=e.gid,this.uname=e.uname,this.gname=e.gname,this.size=e.size,this.mtime=e.mtime,this.atime=e.atime,this.ctime=e.ctime,this.linkpath=RD(e.linkpath),this.uname=e.uname,this.gname=e.gname,t&&this[bD](t),r&&this[bD](r,!0)}write(e){let t=e.length;if(t>this.blockRemain)throw new Error("writing more to entry than is appropriate");let r=this.remain,i=this.blockRemain;return this.remain=Math.max(0,r-t),this.blockRemain=Math.max(0,i-t),this.ignore?!0:r>=t?super.write(e):super.write(e.slice(0,r))}[bD](e,t){for(let r in e)e[r]!==null&&e[r]!==void 0&&!(t&&r==="path")&&(this[r]=r==="path"||r==="linkpath"?RD(e[r]):e[r])}}});var kD=p(FE=>{"use strict";FE.name=new Map([["0","File"],["","OldFile"],["1","Link"],["2","SymbolicLink"],["3","CharacterDevice"],["4","BlockDevice"],["5","Directory"],["6","FIFO"],["7","ContiguousFile"],["g","GlobalExtendedHeader"],["x","ExtendedHeader"],["A","SolarisACL"],["D","GNUDumpDir"],["I","Inode"],["K","NextFileHasLongLinkpath"],["L","NextFileHasLongPath"],["M","ContinuationFile"],["N","OldGnuLongPath"],["S","SparseFile"],["V","TapeVolumeHeader"],["X","OldExtendedHeader"]]);FE.code=new Map(Array.from(FE.name).map(A=>[A[1],A[0]]))});var Ij=p((kLe,fj)=>{"use strict";var fye=(A,e)=>{if(Number.isSafeInteger(A))A<0?Eye(A,e):Iye(A,e);else throw Error("cannot encode number outside of javascript safe integer range");return e},Iye=(A,e)=>{e[0]=128;for(var t=e.length;t>1;t--)e[t-1]=A&255,A=Math.floor(A/256)},Eye=(A,e)=>{e[0]=255;var t=!1;A=A*-1;for(var r=e.length;r>1;r--){var i=A&255;A=Math.floor(A/256),t?e[r-1]=Cj(i):i===0?e[r-1]=0:(t=!0,e[r-1]=hj(i))}},Bye=A=>{let e=A[0],t=e===128?Qye(A.slice(1,A.length)):e===255?pye(A):null;if(t===null)throw Error("invalid base256 encoding");if(!Number.isSafeInteger(t))throw Error("parsed number outside of javascript safe integer range");return t},pye=A=>{for(var e=A.length,t=0,r=!1,i=e-1;i>-1;i--){var n=A[i],s;r?s=Cj(n):n===0?s=n:(r=!0,s=hj(n)),s!==0&&(t-=s*Math.pow(256,e-i-1))}return t},Qye=A=>{for(var e=A.length,t=0,r=e-1;r>-1;r--){var i=A[r];i!==0&&(t+=i*Math.pow(256,e-r-1))}return t},Cj=A=>(255^A)&255,hj=A=>(255^A)+1&255;fj.exports={encode:fye,parse:Bye}});var Nc=p((vLe,Bj)=>{"use strict";var vD=kD(),vc=require("path").posix,Ej=Ij(),ND=Symbol("slurp"),Lr=Symbol("type"),PD=class{constructor(e,t,r,i){this.cksumValid=!1,this.needPax=!1,this.nullBlock=!1,this.block=null,this.path=null,this.mode=null,this.uid=null,this.gid=null,this.size=null,this.mtime=null,this.cksum=null,this[Lr]="0",this.linkpath=null,this.uname=null,this.gname=null,this.devmaj=0,this.devmin=0,this.atime=null,this.ctime=null,Buffer.isBuffer(e)?this.decode(e,t||0,r,i):e&&this.set(e)}decode(e,t,r,i){if(t||(t=0),!e||!(e.length>=t+512))throw new Error("need 512 bytes for header");if(this.path=Da(e,t,100),this.mode=Ao(e,t+100,8),this.uid=Ao(e,t+108,8),this.gid=Ao(e,t+116,8),this.size=Ao(e,t+124,12),this.mtime=MD(e,t+136,12),this.cksum=Ao(e,t+148,12),this[ND](r),this[ND](i,!0),this[Lr]=Da(e,t+156,1),this[Lr]===""&&(this[Lr]="0"),this[Lr]==="0"&&this.path.slice(-1)==="/"&&(this[Lr]="5"),this[Lr]==="5"&&(this.size=0),this.linkpath=Da(e,t+157,100),e.slice(t+257,t+265).toString()==="ustar\x0000")if(this.uname=Da(e,t+265,32),this.gname=Da(e,t+297,32),this.devmaj=Ao(e,t+329,8),this.devmin=Ao(e,t+337,8),e[t+475]!==0){let s=Da(e,t+345,155);this.path=s+"/"+this.path}else{let s=Da(e,t+345,130);s&&(this.path=s+"/"+this.path),this.atime=MD(e,t+476,12),this.ctime=MD(e,t+488,12)}let n=8*32;for(let s=t;s=t+512))throw new Error("need 512 bytes for header");let r=this.ctime||this.atime?130:155,i=dye(this.path||"",r),n=i[0],s=i[1];this.needPax=i[2],this.needPax=Sa(e,t,100,n)||this.needPax,this.needPax=to(e,t+100,8,this.mode)||this.needPax,this.needPax=to(e,t+108,8,this.uid)||this.needPax,this.needPax=to(e,t+116,8,this.gid)||this.needPax,this.needPax=to(e,t+124,12,this.size)||this.needPax,this.needPax=LD(e,t+136,12,this.mtime)||this.needPax,e[t+156]=this[Lr].charCodeAt(0),this.needPax=Sa(e,t+157,100,this.linkpath)||this.needPax,e.write("ustar\x0000",t+257,8),this.needPax=Sa(e,t+265,32,this.uname)||this.needPax,this.needPax=Sa(e,t+297,32,this.gname)||this.needPax,this.needPax=to(e,t+329,8,this.devmaj)||this.needPax,this.needPax=to(e,t+337,8,this.devmin)||this.needPax,this.needPax=Sa(e,t+345,r,s)||this.needPax,e[t+475]!==0?this.needPax=Sa(e,t+345,155,s)||this.needPax:(this.needPax=Sa(e,t+345,130,s)||this.needPax,this.needPax=LD(e,t+476,12,this.atime)||this.needPax,this.needPax=LD(e,t+488,12,this.ctime)||this.needPax);let a=8*32;for(let g=t;g{let r=A,i="",n,s=vc.parse(A).root||".";if(Buffer.byteLength(r)<100)n=[r,i,!1];else{i=vc.dirname(r),r=vc.basename(r);do Buffer.byteLength(r)<=100&&Buffer.byteLength(i)<=e?n=[r,i,!1]:Buffer.byteLength(r)>100&&Buffer.byteLength(i)<=e?n=[r.slice(0,100-1),i,!0]:(r=vc.join(vc.basename(i),r),i=vc.dirname(i));while(i!==s&&!n);n||(n=[A.slice(0,100-1),"",!0])}return n},Da=(A,e,t)=>A.slice(e,e+t).toString("utf8").replace(/\0.*/,""),MD=(A,e,t)=>yye(Ao(A,e,t)),yye=A=>A===null?null:new Date(A*1e3),Ao=(A,e,t)=>A[e]&128?Ej.parse(A.slice(e,e+t)):wye(A,e,t),mye=A=>isNaN(A)?null:A,wye=(A,e,t)=>mye(parseInt(A.slice(e,e+t).toString("utf8").replace(/\0.*$/,"").trim(),8)),Dye={12:8589934591,8:2097151},to=(A,e,t,r)=>r===null?!1:r>Dye[t]||r<0?(Ej.encode(r,A.slice(e,e+t)),!0):(Sye(A,e,t,r),!1),Sye=(A,e,t,r)=>A.write(Fye(r,t),e,t,"ascii"),Fye=(A,e)=>xye(Math.floor(A).toString(8),e),xye=(A,e)=>(A.length===e-1?A:new Array(e-A.length-1).join("0")+A+" ")+"\0",LD=(A,e,t,r)=>r===null?!1:to(A,e,t,r.getTime()/1e3),Rye=new Array(156).join("\0"),Sa=(A,e,t,r)=>r===null?!1:(A.write(r+Rye,e,t,"utf8"),r.length!==Buffer.byteLength(r)||r.length>t);Bj.exports=PD});var xE=p((NLe,pj)=>{"use strict";var bye=Nc(),kye=require("path"),Yu=class{constructor(e,t){this.atime=e.atime||null,this.charset=e.charset||null,this.comment=e.comment||null,this.ctime=e.ctime||null,this.gid=e.gid||null,this.gname=e.gname||null,this.linkpath=e.linkpath||null,this.mtime=e.mtime||null,this.path=e.path||null,this.size=e.size||null,this.uid=e.uid||null,this.uname=e.uname||null,this.dev=e.dev||null,this.ino=e.ino||null,this.nlink=e.nlink||null,this.global=t||!1}encode(){let e=this.encodeBody();if(e==="")return null;let t=Buffer.byteLength(e),r=512*Math.ceil(1+t/512),i=Buffer.allocUnsafe(r);for(let n=0;n<512;n++)i[n]=0;new bye({path:("PaxHeader/"+kye.basename(this.path)).slice(0,99),mode:this.mode||420,uid:this.uid||null,gid:this.gid||null,size:t,mtime:this.mtime||null,type:this.global?"GlobalExtendedHeader":"ExtendedHeader",linkpath:"",uname:this.uname||"",gname:this.gname||"",devmaj:0,devmin:0,atime:this.atime||null,ctime:this.ctime||null}).encode(i),i.write(e,512,t,"utf8");for(let n=t+512;n=Math.pow(10,n)&&(n+=1),n+i+r}};Yu.parse=(A,e,t)=>new Yu(vye(Nye(A),e),t);var vye=(A,e)=>e?Object.keys(A).reduce((t,r)=>(t[r]=A[r],t),e):A,Nye=A=>A.replace(/\n$/,"").split(` +`).reduce(Mye,Object.create(null)),Mye=(A,e)=>{let t=parseInt(e,10);if(t!==Buffer.byteLength(e)+1)return A;e=e.slice((t+" ").length);let r=e.split("="),i=r.shift().replace(/^SCHILY\.(dev|ino|nlink)/,"$1");if(!i)return A;let n=r.join("=");return A[i]=/^([A-Z]+\.)?([mac]|birth|creation)time$/.test(i)?new Date(n*1e3):/^[0-9]+$/.test(n)?+n:n,A};pj.exports=Yu});var Mc=p((MLe,Qj)=>{Qj.exports=A=>{let e=A.length-1,t=-1;for(;e>-1&&A.charAt(e)==="/";)t=e,e--;return t===-1?A:A.slice(0,t)}});var RE=p((LLe,dj)=>{"use strict";dj.exports=A=>class extends A{warn(e,t,r={}){this.file&&(r.file=this.file),this.cwd&&(r.cwd=this.cwd),r.code=t instanceof Error&&t.code||e,r.tarCode=e,!this.strict&&r.recoverable!==!1?(t instanceof Error&&(r=Object.assign(t,r),t=t.message),this.emit("warn",r.tarCode,t,r)):t instanceof Error?this.emit("error",Object.assign(t,r)):this.emit("error",Object.assign(new Error(`${e}: ${t}`),r))}}});var KD=p((OLe,yj)=>{"use strict";var bE=["|","<",">","?",":"],OD=bE.map(A=>String.fromCharCode(61440+A.charCodeAt(0))),Lye=new Map(bE.map((A,e)=>[A,OD[e]])),Pye=new Map(OD.map((A,e)=>[A,bE[e]]));yj.exports={encode:A=>bE.reduce((e,t)=>e.split(t).join(Lye.get(t)),A),decode:A=>OD.reduce((e,t)=>e.split(t).join(Pye.get(t)),A)}});var UD=p((KLe,wj)=>{var{isAbsolute:Oye,parse:mj}=require("path").win32;wj.exports=A=>{let e="",t=mj(A);for(;Oye(A)||t.root;){let r=A.charAt(0)==="/"&&A.slice(0,4)!=="//?/"?"/":t.root;A=A.slice(r.length),e+=r,t=mj(A)}return[e,A]}});var Sj=p((ULe,Dj)=>{"use strict";Dj.exports=(A,e,t)=>(A&=4095,t&&(A=(A|384)&-19),e&&(A&256&&(A|=64),A&32&&(A|=8),A&4&&(A|=1)),A)});var zD=p((GLe,Tj)=>{"use strict";var Nj=xc(),Mj=xE(),Lj=Nc(),fn=require("fs"),Fj=require("path"),hn=kc(),Kye=Mc(),Pj=(A,e)=>e?(A=hn(A).replace(/^\.(\/|$)/,""),Kye(e)+"/"+A):hn(A),Uye=16*1024*1024,xj=Symbol("process"),Rj=Symbol("file"),bj=Symbol("directory"),qD=Symbol("symlink"),kj=Symbol("hardlink"),_u=Symbol("header"),kE=Symbol("read"),GD=Symbol("lstat"),vE=Symbol("onlstat"),YD=Symbol("onread"),_D=Symbol("onreadlink"),HD=Symbol("openfile"),JD=Symbol("onopenfile"),ro=Symbol("close"),NE=Symbol("mode"),jD=Symbol("awaitDrain"),TD=Symbol("ondrain"),In=Symbol("prefix"),vj=Symbol("hadError"),Oj=RE(),Tye=KD(),Kj=UD(),Uj=Sj(),ME=Oj(class extends Nj{constructor(e,t){if(t=t||{},super(t),typeof e!="string")throw new TypeError("path is required");this.path=hn(e),this.portable=!!t.portable,this.myuid=process.getuid&&process.getuid()||0,this.myuser=process.env.USER||"",this.maxReadSize=t.maxReadSize||Uye,this.linkCache=t.linkCache||new Map,this.statCache=t.statCache||new Map,this.preservePaths=!!t.preservePaths,this.cwd=hn(t.cwd||process.cwd()),this.strict=!!t.strict,this.noPax=!!t.noPax,this.noMtime=!!t.noMtime,this.mtime=t.mtime||null,this.prefix=t.prefix?hn(t.prefix):null,this.fd=null,this.blockLen=null,this.blockRemain=null,this.buf=null,this.offset=null,this.length=null,this.pos=null,this.remain=null,typeof t.onwarn=="function"&&this.on("warn",t.onwarn);let r=!1;if(!this.preservePaths){let[i,n]=Kj(this.path);i&&(this.path=n,r=i)}this.win32=!!t.win32||process.platform==="win32",this.win32&&(this.path=Tye.decode(this.path.replace(/\\/g,"/")),e=e.replace(/\\/g,"/")),this.absolute=hn(t.absolute||Fj.resolve(this.cwd,e)),this.path===""&&(this.path="./"),r&&this.warn("TAR_ENTRY_INFO",`stripping ${r} from absolute path`,{entry:this,path:r+this.path}),this.statCache.has(this.absolute)?this[vE](this.statCache.get(this.absolute)):this[GD]()}emit(e,...t){return e==="error"&&(this[vj]=!0),super.emit(e,...t)}[GD](){fn.lstat(this.absolute,(e,t)=>{if(e)return this.emit("error",e);this[vE](t)})}[vE](e){this.statCache.set(this.absolute,e),this.stat=e,e.isFile()||(e.size=0),this.type=Gye(e),this.emit("stat",e),this[xj]()}[xj](){switch(this.type){case"File":return this[Rj]();case"Directory":return this[bj]();case"SymbolicLink":return this[qD]();default:return this.end()}}[NE](e){return Uj(e,this.type==="Directory",this.portable)}[In](e){return Pj(e,this.prefix)}[_u](){this.type==="Directory"&&this.portable&&(this.noMtime=!0),this.header=new Lj({path:this[In](this.path),linkpath:this.type==="Link"?this[In](this.linkpath):this.linkpath,mode:this[NE](this.stat.mode),uid:this.portable?null:this.stat.uid,gid:this.portable?null:this.stat.gid,size:this.stat.size,mtime:this.noMtime?null:this.mtime||this.stat.mtime,type:this.type,uname:this.portable?null:this.stat.uid===this.myuid?this.myuser:"",atime:this.portable?null:this.stat.atime,ctime:this.portable?null:this.stat.ctime}),this.header.encode()&&!this.noPax&&super.write(new Mj({atime:this.portable?null:this.header.atime,ctime:this.portable?null:this.header.ctime,gid:this.portable?null:this.header.gid,mtime:this.noMtime?null:this.mtime||this.header.mtime,path:this[In](this.path),linkpath:this.type==="Link"?this[In](this.linkpath):this.linkpath,size:this.header.size,uid:this.portable?null:this.header.uid,uname:this.portable?null:this.header.uname,dev:this.portable?null:this.stat.dev,ino:this.portable?null:this.stat.ino,nlink:this.portable?null:this.stat.nlink}).encode()),super.write(this.header.block)}[bj](){this.path.slice(-1)!=="/"&&(this.path+="/"),this.stat.size=0,this[_u](),this.end()}[qD](){fn.readlink(this.absolute,(e,t)=>{if(e)return this.emit("error",e);this[_D](t)})}[_D](e){this.linkpath=hn(e),this[_u](),this.end()}[kj](e){this.type="Link",this.linkpath=hn(Fj.relative(this.cwd,e)),this.stat.size=0,this[_u](),this.end()}[Rj](){if(this.stat.nlink>1){let e=this.stat.dev+":"+this.stat.ino;if(this.linkCache.has(e)){let t=this.linkCache.get(e);if(t.indexOf(this.cwd)===0)return this[kj](t)}this.linkCache.set(e,this.absolute)}if(this[_u](),this.stat.size===0)return this.end();this[HD]()}[HD](){fn.open(this.absolute,"r",(e,t)=>{if(e)return this.emit("error",e);this[JD](t)})}[JD](e){if(this.fd=e,this[vj])return this[ro]();this.blockLen=512*Math.ceil(this.stat.size/512),this.blockRemain=this.blockLen;let t=Math.min(this.blockLen,this.maxReadSize);this.buf=Buffer.allocUnsafe(t),this.offset=0,this.pos=0,this.remain=this.stat.size,this.length=this.buf.length,this[kE]()}[kE](){let{fd:e,buf:t,offset:r,length:i,pos:n}=this;fn.read(e,t,r,i,n,(s,a)=>{if(s)return this[ro](()=>this.emit("error",s));this[YD](a)})}[ro](e){fn.close(this.fd,e)}[YD](e){if(e<=0&&this.remain>0){let i=new Error("encountered unexpected EOF");return i.path=this.absolute,i.syscall="read",i.code="EOF",this[ro](()=>this.emit("error",i))}if(e>this.remain){let i=new Error("did not encounter expected EOF");return i.path=this.absolute,i.syscall="read",i.code="EOF",this[ro](()=>this.emit("error",i))}if(e===this.remain)for(let i=e;ithis[TD]())}[jD](e){this.once("drain",e)}write(e){if(this.blockRemaine?this.emit("error",e):this.end());this.offset>=this.length&&(this.buf=Buffer.allocUnsafe(Math.min(this.blockRemain,this.buf.length)),this.offset=0),this.length=this.buf.length-this.offset,this[kE]()}}),WD=class extends ME{[GD](){this[vE](fn.lstatSync(this.absolute))}[qD](){this[_D](fn.readlinkSync(this.absolute))}[HD](){this[JD](fn.openSync(this.absolute,"r"))}[kE](){let e=!0;try{let{fd:t,buf:r,offset:i,length:n,pos:s}=this,a=fn.readSync(t,r,i,n,s);this[YD](a),e=!1}finally{if(e)try{this[ro](()=>{})}catch{}}}[jD](e){e()}[ro](e){fn.closeSync(this.fd),e()}},qye=Oj(class extends Nj{constructor(e,t){t=t||{},super(t),this.preservePaths=!!t.preservePaths,this.portable=!!t.portable,this.strict=!!t.strict,this.noPax=!!t.noPax,this.noMtime=!!t.noMtime,this.readEntry=e,this.type=e.type,this.type==="Directory"&&this.portable&&(this.noMtime=!0),this.prefix=t.prefix||null,this.path=hn(e.path),this.mode=this[NE](e.mode),this.uid=this.portable?null:e.uid,this.gid=this.portable?null:e.gid,this.uname=this.portable?null:e.uname,this.gname=this.portable?null:e.gname,this.size=e.size,this.mtime=this.noMtime?null:t.mtime||e.mtime,this.atime=this.portable?null:e.atime,this.ctime=this.portable?null:e.ctime,this.linkpath=hn(e.linkpath),typeof t.onwarn=="function"&&this.on("warn",t.onwarn);let r=!1;if(!this.preservePaths){let[i,n]=Kj(this.path);i&&(this.path=n,r=i)}this.remain=e.size,this.blockRemain=e.startBlockSize,this.header=new Lj({path:this[In](this.path),linkpath:this.type==="Link"?this[In](this.linkpath):this.linkpath,mode:this.mode,uid:this.portable?null:this.uid,gid:this.portable?null:this.gid,size:this.size,mtime:this.noMtime?null:this.mtime,type:this.type,uname:this.portable?null:this.uname,atime:this.portable?null:this.atime,ctime:this.portable?null:this.ctime}),r&&this.warn("TAR_ENTRY_INFO",`stripping ${r} from absolute path`,{entry:this,path:r+this.path}),this.header.encode()&&!this.noPax&&super.write(new Mj({atime:this.portable?null:this.atime,ctime:this.portable?null:this.ctime,gid:this.portable?null:this.gid,mtime:this.noMtime?null:this.mtime,path:this[In](this.path),linkpath:this.type==="Link"?this[In](this.linkpath):this.linkpath,size:this.size,uid:this.portable?null:this.uid,uname:this.portable?null:this.uname,dev:this.portable?null:this.readEntry.dev,ino:this.portable?null:this.readEntry.ino,nlink:this.portable?null:this.readEntry.nlink}).encode()),super.write(this.header.block),e.pipe(this)}[In](e){return Pj(e,this.prefix)}[NE](e){return Uj(e,this.type==="Directory",this.portable)}write(e){let t=e.length;if(t>this.blockRemain)throw new Error("writing more to entry than is appropriate");return this.blockRemain-=t,super.write(e)}end(){return this.blockRemain&&super.write(Buffer.alloc(this.blockRemain)),super.end()}});ME.Sync=WD;ME.Tar=qye;var Gye=A=>A.isFile()?"File":A.isDirectory()?"Directory":A.isSymbolicLink()?"SymbolicLink":"Unsupported";Tj.exports=ME});var YE=p((_Le,jj)=>{"use strict";var qE=class{constructor(e,t){this.path=e||"./",this.absolute=t,this.entry=null,this.stat=null,this.readdir=null,this.pending=!1,this.ignore=!1,this.piped=!1}},Yye=xc(),_ye=xD(),Hye=SE(),iS=zD(),Jye=iS.Sync,jye=iS.Tar,Wye=Jh(),qj=Buffer.alloc(1024),OE=Symbol("onStat"),LE=Symbol("ended"),En=Symbol("queue"),Lc=Symbol("current"),Fa=Symbol("process"),PE=Symbol("processing"),Gj=Symbol("processJob"),Bn=Symbol("jobs"),VD=Symbol("jobDone"),KE=Symbol("addFSEntry"),Yj=Symbol("addTarEntry"),eS=Symbol("stat"),AS=Symbol("readdir"),UE=Symbol("onreaddir"),TE=Symbol("pipe"),_j=Symbol("entry"),XD=Symbol("entryOpt"),tS=Symbol("writeEntryClass"),Jj=Symbol("write"),ZD=Symbol("ondrain"),GE=require("fs"),Hj=require("path"),zye=RE(),$D=kc(),nS=zye(class extends Yye{constructor(e){super(e),e=e||Object.create(null),this.opt=e,this.file=e.file||"",this.cwd=e.cwd||process.cwd(),this.maxReadSize=e.maxReadSize,this.preservePaths=!!e.preservePaths,this.strict=!!e.strict,this.noPax=!!e.noPax,this.prefix=$D(e.prefix||""),this.linkCache=e.linkCache||new Map,this.statCache=e.statCache||new Map,this.readdirCache=e.readdirCache||new Map,this[tS]=iS,typeof e.onwarn=="function"&&this.on("warn",e.onwarn),this.portable=!!e.portable,this.zip=null,e.gzip?(typeof e.gzip!="object"&&(e.gzip={}),this.portable&&(e.gzip.portable=!0),this.zip=new _ye.Gzip(e.gzip),this.zip.on("data",t=>super.write(t)),this.zip.on("end",t=>super.end()),this.zip.on("drain",t=>this[ZD]()),this.on("resume",t=>this.zip.resume())):this.on("drain",this[ZD]),this.noDirRecurse=!!e.noDirRecurse,this.follow=!!e.follow,this.noMtime=!!e.noMtime,this.mtime=e.mtime||null,this.filter=typeof e.filter=="function"?e.filter:t=>!0,this[En]=new Wye,this[Bn]=0,this.jobs=+e.jobs||4,this[PE]=!1,this[LE]=!1}[Jj](e){return super.write(e)}add(e){return this.write(e),this}end(e){return e&&this.write(e),this[LE]=!0,this[Fa](),this}write(e){if(this[LE])throw new Error("write after end");return e instanceof Hye?this[Yj](e):this[KE](e),this.flowing}[Yj](e){let t=$D(Hj.resolve(this.cwd,e.path));if(!this.filter(e.path,e))e.resume();else{let r=new qE(e.path,t,!1);r.entry=new jye(e,this[XD](r)),r.entry.on("end",i=>this[VD](r)),this[Bn]+=1,this[En].push(r)}this[Fa]()}[KE](e){let t=$D(Hj.resolve(this.cwd,e));this[En].push(new qE(e,t)),this[Fa]()}[eS](e){e.pending=!0,this[Bn]+=1;let t=this.follow?"stat":"lstat";GE[t](e.absolute,(r,i)=>{e.pending=!1,this[Bn]-=1,r?this.emit("error",r):this[OE](e,i)})}[OE](e,t){this.statCache.set(e.absolute,t),e.stat=t,this.filter(e.path,t)||(e.ignore=!0),this[Fa]()}[AS](e){e.pending=!0,this[Bn]+=1,GE.readdir(e.absolute,(t,r)=>{if(e.pending=!1,this[Bn]-=1,t)return this.emit("error",t);this[UE](e,r)})}[UE](e,t){this.readdirCache.set(e.absolute,t),e.readdir=t,this[Fa]()}[Fa](){if(!this[PE]){this[PE]=!0;for(let e=this[En].head;e!==null&&this[Bn]this.warn(t,r,i),noPax:this.noPax,cwd:this.cwd,absolute:e.absolute,preservePaths:this.preservePaths,maxReadSize:this.maxReadSize,strict:this.strict,portable:this.portable,linkCache:this.linkCache,statCache:this.statCache,noMtime:this.noMtime,mtime:this.mtime,prefix:this.prefix}}[_j](e){this[Bn]+=1;try{return new this[tS](e.path,this[XD](e)).on("end",()=>this[VD](e)).on("error",t=>this.emit("error",t))}catch(t){this.emit("error",t)}}[ZD](){this[Lc]&&this[Lc].entry&&this[Lc].entry.resume()}[TE](e){e.piped=!0,e.readdir&&e.readdir.forEach(i=>{let n=e.path,s=n==="./"?"":n.replace(/\/*$/,"/");this[KE](s+i)});let t=e.entry,r=this.zip;r?t.on("data",i=>{r.write(i)||t.pause()}):t.on("data",i=>{super.write(i)||t.pause()})}pause(){return this.zip&&this.zip.pause(),super.pause()}}),rS=class extends nS{constructor(e){super(e),this[tS]=Jye}pause(){}resume(){}[eS](e){let t=this.follow?"statSync":"lstatSync";this[OE](e,GE[t](e.absolute))}[AS](e,t){this[UE](e,GE.readdirSync(e.absolute))}[TE](e){let t=e.entry,r=this.zip;e.readdir&&e.readdir.forEach(i=>{let n=e.path,s=n==="./"?"":n.replace(/\/*$/,"/");this[KE](s+i)}),r?t.on("data",i=>{r.write(i)}):t.on("data",i=>{super[Jj](i)})}};nS.Sync=rS;jj.exports=nS});var Yc=p(Ju=>{"use strict";var Vye=xc(),Xye=require("events").EventEmitter,Cr=require("fs"),aS=Cr.writev;if(!aS){let A=process.binding("fs"),e=A.FSReqWrap||A.FSReqCallback;aS=(t,r,i,n)=>{let s=(g,c)=>n(g,c,r),a=new e;a.oncomplete=s,A.writeBuffers(t,r,i,a)}}var qc=Symbol("_autoClose"),Ki=Symbol("_close"),Hu=Symbol("_ended"),LA=Symbol("_fd"),Wj=Symbol("_finished"),no=Symbol("_flags"),sS=Symbol("_flush"),gS=Symbol("_handleChunk"),cS=Symbol("_makeBuf"),WE=Symbol("_mode"),_E=Symbol("_needDrain"),Uc=Symbol("_onerror"),Gc=Symbol("_onopen"),oS=Symbol("_onread"),Oc=Symbol("_onwrite"),so=Symbol("_open"),is=Symbol("_path"),xa=Symbol("_pos"),pn=Symbol("_queue"),Kc=Symbol("_read"),zj=Symbol("_readSize"),io=Symbol("_reading"),HE=Symbol("_remain"),Vj=Symbol("_size"),JE=Symbol("_write"),Pc=Symbol("_writing"),jE=Symbol("_defaultFlag"),Tc=Symbol("_errored"),zE=class extends Vye{constructor(e,t){if(t=t||{},super(t),this.readable=!0,this.writable=!1,typeof e!="string")throw new TypeError("path must be a string");this[Tc]=!1,this[LA]=typeof t.fd=="number"?t.fd:null,this[is]=e,this[zj]=t.readSize||16*1024*1024,this[io]=!1,this[Vj]=typeof t.size=="number"?t.size:1/0,this[HE]=this[Vj],this[qc]=typeof t.autoClose=="boolean"?t.autoClose:!0,typeof this[LA]=="number"?this[Kc]():this[so]()}get fd(){return this[LA]}get path(){return this[is]}write(){throw new TypeError("this is a readable stream")}end(){throw new TypeError("this is a readable stream")}[so](){Cr.open(this[is],"r",(e,t)=>this[Gc](e,t))}[Gc](e,t){e?this[Uc](e):(this[LA]=t,this.emit("open",t),this[Kc]())}[cS](){return Buffer.allocUnsafe(Math.min(this[zj],this[HE]))}[Kc](){if(!this[io]){this[io]=!0;let e=this[cS]();if(e.length===0)return process.nextTick(()=>this[oS](null,0,e));Cr.read(this[LA],e,0,e.length,null,(t,r,i)=>this[oS](t,r,i))}}[oS](e,t,r){this[io]=!1,e?this[Uc](e):this[gS](t,r)&&this[Kc]()}[Ki](){if(this[qc]&&typeof this[LA]=="number"){let e=this[LA];this[LA]=null,Cr.close(e,t=>t?this.emit("error",t):this.emit("close"))}}[Uc](e){this[io]=!0,this[Ki](),this.emit("error",e)}[gS](e,t){let r=!1;return this[HE]-=e,e>0&&(r=super.write(ethis[Gc](e,t))}[Gc](e,t){this[jE]&&this[no]==="r+"&&e&&e.code==="ENOENT"?(this[no]="w",this[so]()):e?this[Uc](e):(this[LA]=t,this.emit("open",t),this[sS]())}end(e,t){return e&&this.write(e,t),this[Hu]=!0,!this[Pc]&&!this[pn].length&&typeof this[LA]=="number"&&this[Oc](null,0),this}write(e,t){return typeof e=="string"&&(e=Buffer.from(e,t)),this[Hu]?(this.emit("error",new Error("write() after end()")),!1):this[LA]===null||this[Pc]||this[pn].length?(this[pn].push(e),this[_E]=!0,!1):(this[Pc]=!0,this[JE](e),!0)}[JE](e){Cr.write(this[LA],e,0,e.length,this[xa],(t,r)=>this[Oc](t,r))}[Oc](e,t){e?this[Uc](e):(this[xa]!==null&&(this[xa]+=t),this[pn].length?this[sS]():(this[Pc]=!1,this[Hu]&&!this[Wj]?(this[Wj]=!0,this[Ki](),this.emit("finish")):this[_E]&&(this[_E]=!1,this.emit("drain"))))}[sS](){if(this[pn].length===0)this[Hu]&&this[Oc](null,0);else if(this[pn].length===1)this[JE](this[pn].pop());else{let e=this[pn];this[pn]=[],aS(this[LA],e,this[xa],(t,r)=>this[Oc](t,r))}}[Ki](){if(this[qc]&&typeof this[LA]=="number"){let e=this[LA];this[LA]=null,Cr.close(e,t=>t?this.emit("error",t):this.emit("close"))}}},uS=class extends VE{[so](){let e;if(this[jE]&&this[no]==="r+")try{e=Cr.openSync(this[is],this[no],this[WE])}catch(t){if(t.code==="ENOENT")return this[no]="w",this[so]();throw t}else e=Cr.openSync(this[is],this[no],this[WE]);this[Gc](null,e)}[Ki](){if(this[qc]&&typeof this[LA]=="number"){let e=this[LA];this[LA]=null,Cr.closeSync(e),this.emit("close")}}[JE](e){let t=!0;try{this[Oc](null,Cr.writeSync(this[LA],e,0,e.length,this[xa])),t=!1}finally{if(t)try{this[Ki]()}catch{}}}};Ju.ReadStream=zE;Ju.ReadStreamSync=lS;Ju.WriteStream=VE;Ju.WriteStreamSync=uS});var rB=p((jLe,i8)=>{"use strict";var Zye=RE(),$ye=Nc(),e0e=require("events"),A0e=Jh(),t0e=1024*1024,r0e=SE(),Xj=xE(),i0e=xD(),{nextTick:n0e}=require("process"),CS=Buffer.from([31,139]),li=Symbol("state"),Ra=Symbol("writeEntry"),ns=Symbol("readEntry"),hS=Symbol("nextEntry"),Zj=Symbol("processEntry"),ui=Symbol("extendedHeader"),ju=Symbol("globalExtendedHeader"),oo=Symbol("meta"),$j=Symbol("emitMeta"),zA=Symbol("buffer"),ss=Symbol("queue"),ba=Symbol("ended"),e8=Symbol("emittedEnd"),ka=Symbol("emit"),hr=Symbol("unzip"),XE=Symbol("consumeChunk"),ZE=Symbol("consumeChunkSub"),fS=Symbol("consumeBody"),A8=Symbol("consumeMeta"),t8=Symbol("consumeHeader"),$E=Symbol("consuming"),IS=Symbol("bufferConcat"),ES=Symbol("maybeEnd"),Wu=Symbol("writing"),ao=Symbol("aborted"),eB=Symbol("onDone"),va=Symbol("sawValidEntry"),AB=Symbol("sawNullBlock"),tB=Symbol("sawEOF"),r8=Symbol("closeStream"),s0e=A=>!0;i8.exports=Zye(class extends e0e{constructor(e){e=e||{},super(e),this.file=e.file||"",this[va]=null,this.on(eB,t=>{(this[li]==="begin"||this[va]===!1)&&this.warn("TAR_BAD_ARCHIVE","Unrecognized archive format")}),e.ondone?this.on(eB,e.ondone):this.on(eB,t=>{this.emit("prefinish"),this.emit("finish"),this.emit("end")}),this.strict=!!e.strict,this.maxMetaEntrySize=e.maxMetaEntrySize||t0e,this.filter=typeof e.filter=="function"?e.filter:s0e,this.writable=!0,this.readable=!1,this[ss]=new A0e,this[zA]=null,this[ns]=null,this[Ra]=null,this[li]="begin",this[oo]="",this[ui]=null,this[ju]=null,this[ba]=!1,this[hr]=null,this[ao]=!1,this[AB]=!1,this[tB]=!1,this.on("end",()=>this[r8]()),typeof e.onwarn=="function"&&this.on("warn",e.onwarn),typeof e.onentry=="function"&&this.on("entry",e.onentry)}[t8](e,t){this[va]===null&&(this[va]=!1);let r;try{r=new $ye(e,t,this[ui],this[ju])}catch(i){return this.warn("TAR_ENTRY_INVALID",i)}if(r.nullBlock)this[AB]?(this[tB]=!0,this[li]==="begin"&&(this[li]="header"),this[ka]("eof")):(this[AB]=!0,this[ka]("nullBlock"));else if(this[AB]=!1,!r.cksumValid)this.warn("TAR_ENTRY_INVALID","checksum failure",{header:r});else if(!r.path)this.warn("TAR_ENTRY_INVALID","path is required",{header:r});else{let i=r.type;if(/^(Symbolic)?Link$/.test(i)&&!r.linkpath)this.warn("TAR_ENTRY_INVALID","linkpath required",{header:r});else if(!/^(Symbolic)?Link$/.test(i)&&r.linkpath)this.warn("TAR_ENTRY_INVALID","linkpath forbidden",{header:r});else{let n=this[Ra]=new r0e(r,this[ui],this[ju]);if(!this[va])if(n.remain){let s=()=>{n.invalid||(this[va]=!0)};n.on("end",s)}else this[va]=!0;n.meta?n.size>this.maxMetaEntrySize?(n.ignore=!0,this[ka]("ignoredEntry",n),this[li]="ignore",n.resume()):n.size>0&&(this[oo]="",n.on("data",s=>this[oo]+=s),this[li]="meta"):(this[ui]=null,n.ignore=n.ignore||!this.filter(n.path,n),n.ignore?(this[ka]("ignoredEntry",n),this[li]=n.remain?"ignore":"header",n.resume()):(n.remain?this[li]="body":(this[li]="header",n.end()),this[ns]?this[ss].push(n):(this[ss].push(n),this[hS]())))}}}[r8](){n0e(()=>this.emit("close"))}[Zj](e){let t=!0;return e?Array.isArray(e)?this.emit.apply(this,e):(this[ns]=e,this.emit("entry",e),e.emittedEnd||(e.on("end",r=>this[hS]()),t=!1)):(this[ns]=null,t=!1),t}[hS](){do;while(this[Zj](this[ss].shift()));if(!this[ss].length){let e=this[ns];!e||e.flowing||e.size===e.remain?this[Wu]||this.emit("drain"):e.once("drain",r=>this.emit("drain"))}}[fS](e,t){let r=this[Ra],i=r.blockRemain,n=i>=e.length&&t===0?e:e.slice(t,t+i);return r.write(n),r.blockRemain||(this[li]="header",this[Ra]=null,r.end()),n.length}[A8](e,t){let r=this[Ra],i=this[fS](e,t);return this[Ra]||this[$j](r),i}[ka](e,t,r){!this[ss].length&&!this[ns]?this.emit(e,t,r):this[ss].push([e,t,r])}[$j](e){switch(this[ka]("meta",this[oo]),e.type){case"ExtendedHeader":case"OldExtendedHeader":this[ui]=Xj.parse(this[oo],this[ui],!1);break;case"GlobalExtendedHeader":this[ju]=Xj.parse(this[oo],this[ju],!0);break;case"NextFileHasLongPath":case"OldGnuLongPath":this[ui]=this[ui]||Object.create(null),this[ui].path=this[oo].replace(/\0.*/,"");break;case"NextFileHasLongLinkpath":this[ui]=this[ui]||Object.create(null),this[ui].linkpath=this[oo].replace(/\0.*/,"");break;default:throw new Error("unknown meta: "+e.type)}}abort(e){this[ao]=!0,this.emit("abort",e),this.warn("TAR_ABORT",e,{recoverable:!1})}write(e){if(this[ao])return;if(this[hr]===null&&e){if(this[zA]&&(e=Buffer.concat([this[zA],e]),this[zA]=null),e.lengththis[XE](n)),this[hr].on("error",n=>this.abort(n)),this[hr].on("end",n=>{this[ba]=!0,this[XE]()}),this[Wu]=!0;let i=this[hr][r?"end":"write"](e);return this[Wu]=!1,i}}this[Wu]=!0,this[hr]?this[hr].write(e):this[XE](e),this[Wu]=!1;let t=this[ss].length?!1:this[ns]?this[ns].flowing:!0;return!t&&!this[ss].length&&this[ns].once("drain",r=>this.emit("drain")),t}[IS](e){e&&!this[ao]&&(this[zA]=this[zA]?Buffer.concat([this[zA],e]):e)}[ES](){if(this[ba]&&!this[e8]&&!this[ao]&&!this[$E]){this[e8]=!0;let e=this[Ra];if(e&&e.blockRemain){let t=this[zA]?this[zA].length:0;this.warn("TAR_BAD_ARCHIVE",`Truncated input (needed ${e.blockRemain} more bytes, only ${t} available)`,{entry:e}),this[zA]&&e.write(this[zA]),e.end()}this[ka](eB)}}[XE](e){if(this[$E])this[IS](e);else if(!e&&!this[zA])this[ES]();else{if(this[$E]=!0,this[zA]){this[IS](e);let t=this[zA];this[zA]=null,this[ZE](t)}else this[ZE](e);for(;this[zA]&&this[zA].length>=512&&!this[ao]&&!this[tB];){let t=this[zA];this[zA]=null,this[ZE](t)}this[$E]=!1}(!this[zA]||this[ba])&&this[ES]()}[ZE](e){let t=0,r=e.length;for(;t+512<=r&&!this[ao]&&!this[tB];)switch(this[li]){case"begin":case"header":this[t8](e,t),t+=512;break;case"ignore":case"body":t+=this[fS](e,t);break;case"meta":t+=this[A8](e,t);break;default:throw new Error("invalid state: "+this[li])}t{"use strict";var o0e=Sc(),s8=rB(),_c=require("fs"),a0e=Yc(),n8=require("path"),BS=Mc();a8.exports=(A,e,t)=>{typeof A=="function"?(t=A,e=null,A={}):Array.isArray(A)&&(e=A,A={}),typeof e=="function"&&(t=e,e=null),e?e=Array.from(e):e=[];let r=o0e(A);if(r.sync&&typeof t=="function")throw new TypeError("callback not supported for sync tar functions");if(!r.file&&typeof t=="function")throw new TypeError("callback only supported with file option");return e.length&&c0e(r,e),r.noResume||g0e(r),r.file&&r.sync?l0e(r):r.file?u0e(r,t):o8(r)};var g0e=A=>{let e=A.onentry;A.onentry=e?t=>{e(t),t.resume()}:t=>t.resume()},c0e=(A,e)=>{let t=new Map(e.map(n=>[BS(n),!0])),r=A.filter,i=(n,s)=>{let a=s||n8.parse(n).root||".",g=n===a?!1:t.has(n)?t.get(n):i(n8.dirname(n),a);return t.set(n,g),g};A.filter=r?(n,s)=>r(n,s)&&i(BS(n)):n=>i(BS(n))},l0e=A=>{let e=o8(A),t=A.file,r=!0,i;try{let n=_c.statSync(t),s=A.maxReadSize||16*1024*1024;if(n.size{let t=new s8(A),r=A.maxReadSize||16*1024*1024,i=A.file,n=new Promise((s,a)=>{t.on("error",a),t.on("end",s),_c.stat(i,(g,c)=>{if(g)a(g);else{let l=new a0e.ReadStream(i,{readSize:r,size:c.size});l.on("error",a),l.pipe(t)}})});return e?n.then(e,e):n},o8=A=>new s8(A)});var h8=p((zLe,C8)=>{"use strict";var C0e=Sc(),nB=YE(),g8=Yc(),c8=iB(),l8=require("path");C8.exports=(A,e,t)=>{if(typeof e=="function"&&(t=e),Array.isArray(A)&&(e=A,A={}),!e||!Array.isArray(e)||!e.length)throw new TypeError("no files or directories specified");e=Array.from(e);let r=C0e(A);if(r.sync&&typeof t=="function")throw new TypeError("callback not supported for sync tar functions");if(!r.file&&typeof t=="function")throw new TypeError("callback only supported with file option");return r.file&&r.sync?h0e(r,e):r.file?f0e(r,e,t):r.sync?I0e(r,e):E0e(r,e)};var h0e=(A,e)=>{let t=new nB.Sync(A),r=new g8.WriteStreamSync(A.file,{mode:A.mode||438});t.pipe(r),u8(t,e)},f0e=(A,e,t)=>{let r=new nB(A),i=new g8.WriteStream(A.file,{mode:A.mode||438});r.pipe(i);let n=new Promise((s,a)=>{i.on("error",a),i.on("close",s),r.on("error",a)});return pS(r,e),t?n.then(t,t):n},u8=(A,e)=>{e.forEach(t=>{t.charAt(0)==="@"?c8({file:l8.resolve(A.cwd,t.slice(1)),sync:!0,noResume:!0,onentry:r=>A.add(r)}):A.add(t)}),A.end()},pS=(A,e)=>{for(;e.length;){let t=e.shift();if(t.charAt(0)==="@")return c8({file:l8.resolve(A.cwd,t.slice(1)),noResume:!0,onentry:r=>A.add(r)}).then(r=>pS(A,e));A.add(t)}A.end()},I0e=(A,e)=>{let t=new nB.Sync(A);return u8(t,e),t},E0e=(A,e)=>{let t=new nB(A);return pS(t,e),t}});var QS=p((VLe,d8)=>{"use strict";var B0e=Sc(),f8=YE(),Pr=require("fs"),I8=Yc(),E8=iB(),B8=require("path"),p8=Nc();d8.exports=(A,e,t)=>{let r=B0e(A);if(!r.file)throw new TypeError("file is required");if(r.gzip)throw new TypeError("cannot append to compressed archives");if(!e||!Array.isArray(e)||!e.length)throw new TypeError("no files or directories specified");return e=Array.from(e),r.sync?p0e(r,e):d0e(r,e,t)};var p0e=(A,e)=>{let t=new f8.Sync(A),r=!0,i,n;try{try{i=Pr.openSync(A.file,"r+")}catch(g){if(g.code==="ENOENT")i=Pr.openSync(A.file,"w+");else throw g}let s=Pr.fstatSync(i),a=Buffer.alloc(512);e:for(n=0;ns.size)break;n+=c,A.mtimeCache&&A.mtimeCache.set(g.path,g.mtime)}r=!1,Q0e(A,t,n,i,e)}finally{if(r)try{Pr.closeSync(i)}catch{}}},Q0e=(A,e,t,r,i)=>{let n=new I8.WriteStreamSync(A.file,{fd:r,start:t});e.pipe(n),y0e(e,i)},d0e=(A,e,t)=>{e=Array.from(e);let r=new f8(A),i=(s,a,g)=>{let c=(m,w)=>{m?Pr.close(s,D=>g(m)):g(null,w)},l=0;if(a===0)return c(null,0);let C=0,f=Buffer.alloc(512),E=(m,w)=>{if(m)return c(m);if(C+=w,C<512&&w)return Pr.read(s,f,C,f.length-C,l+C,E);if(l===0&&f[0]===31&&f[1]===139)return c(new Error("cannot append to compressed archives"));if(C<512)return c(null,l);let D=new p8(f);if(!D.cksumValid)return c(null,l);let L=512*Math.ceil(D.size/512);if(l+L+512>a||(l+=L+512,l>=a))return c(null,l);A.mtimeCache&&A.mtimeCache.set(D.path,D.mtime),C=0,Pr.read(s,f,0,512,l,E)};Pr.read(s,f,0,512,l,E)},n=new Promise((s,a)=>{r.on("error",a);let g="r+",c=(l,C)=>{if(l&&l.code==="ENOENT"&&g==="r+")return g="w+",Pr.open(A.file,g,c);if(l)return a(l);Pr.fstat(C,(f,E)=>{if(f)return Pr.close(C,()=>a(f));i(C,E.size,(m,w)=>{if(m)return a(m);let D=new I8.WriteStream(A.file,{fd:C,start:w});r.pipe(D),D.on("error",a),D.on("close",s),Q8(r,e)})})};Pr.open(A.file,g,c)});return t?n.then(t,t):n},y0e=(A,e)=>{e.forEach(t=>{t.charAt(0)==="@"?E8({file:B8.resolve(A.cwd,t.slice(1)),sync:!0,noResume:!0,onentry:r=>A.add(r)}):A.add(t)}),A.end()},Q8=(A,e)=>{for(;e.length;){let t=e.shift();if(t.charAt(0)==="@")return E8({file:B8.resolve(A.cwd,t.slice(1)),noResume:!0,onentry:r=>A.add(r)}).then(r=>Q8(A,e));A.add(t)}A.end()}});var m8=p((XLe,y8)=>{"use strict";var m0e=Sc(),w0e=QS();y8.exports=(A,e,t)=>{let r=m0e(A);if(!r.file)throw new TypeError("file is required");if(r.gzip)throw new TypeError("cannot append to compressed archives");if(!e||!Array.isArray(e)||!e.length)throw new TypeError("no files or directories specified");return e=Array.from(e),D0e(r),w0e(r,e,t)};var D0e=A=>{let e=A.filter;A.mtimeCache||(A.mtimeCache=new Map),A.filter=e?(t,r)=>e(t,r)&&!(A.mtimeCache.get(t)>r.mtime):(t,r)=>!(A.mtimeCache.get(t)>r.mtime)}});var S8=p((ZLe,D8)=>{var{promisify:w8}=require("util"),go=require("fs"),S0e=A=>{if(!A)A={mode:511,fs:go};else if(typeof A=="object")A={mode:511,fs:go,...A};else if(typeof A=="number")A={mode:A,fs:go};else if(typeof A=="string")A={mode:parseInt(A,8),fs:go};else throw new TypeError("invalid options argument");return A.mkdir=A.mkdir||A.fs.mkdir||go.mkdir,A.mkdirAsync=w8(A.mkdir),A.stat=A.stat||A.fs.stat||go.stat,A.statAsync=w8(A.stat),A.statSync=A.statSync||A.fs.statSync||go.statSync,A.mkdirSync=A.mkdirSync||A.fs.mkdirSync||go.mkdirSync,A};D8.exports=S0e});var x8=p(($Le,F8)=>{var F0e=process.env.__TESTING_MKDIRP_PLATFORM__||process.platform,{resolve:x0e,parse:R0e}=require("path"),b0e=A=>{if(/\0/.test(A))throw Object.assign(new TypeError("path must be a string without null bytes"),{path:A,code:"ERR_INVALID_ARG_VALUE"});if(A=x0e(A),F0e==="win32"){let e=/[*|"<>?:]/,{root:t}=R0e(A);if(e.test(A.substr(t.length)))throw Object.assign(new Error("Illegal characters in path."),{path:A,code:"EINVAL"})}return A};F8.exports=b0e});var N8=p((ePe,v8)=>{var{dirname:R8}=require("path"),b8=(A,e,t=void 0)=>t===e?Promise.resolve():A.statAsync(e).then(r=>r.isDirectory()?t:void 0,r=>r.code==="ENOENT"?b8(A,R8(e),e):void 0),k8=(A,e,t=void 0)=>{if(t!==e)try{return A.statSync(e).isDirectory()?t:void 0}catch(r){return r.code==="ENOENT"?k8(A,R8(e),e):void 0}};v8.exports={findMade:b8,findMadeSync:k8}});var mS=p((APe,L8)=>{var{dirname:M8}=require("path"),dS=(A,e,t)=>{e.recursive=!1;let r=M8(A);return r===A?e.mkdirAsync(A,e).catch(i=>{if(i.code!=="EISDIR")throw i}):e.mkdirAsync(A,e).then(()=>t||A,i=>{if(i.code==="ENOENT")return dS(r,e).then(n=>dS(A,e,n));if(i.code!=="EEXIST"&&i.code!=="EROFS")throw i;return e.statAsync(A).then(n=>{if(n.isDirectory())return t;throw i},()=>{throw i})})},yS=(A,e,t)=>{let r=M8(A);if(e.recursive=!1,r===A)try{return e.mkdirSync(A,e)}catch(i){if(i.code!=="EISDIR")throw i;return}try{return e.mkdirSync(A,e),t||A}catch(i){if(i.code==="ENOENT")return yS(A,e,yS(r,e,t));if(i.code!=="EEXIST"&&i.code!=="EROFS")throw i;try{if(!e.statSync(A).isDirectory())throw i}catch{throw i}}};L8.exports={mkdirpManual:dS,mkdirpManualSync:yS}});var K8=p((tPe,O8)=>{var{dirname:P8}=require("path"),{findMade:k0e,findMadeSync:v0e}=N8(),{mkdirpManual:N0e,mkdirpManualSync:M0e}=mS(),L0e=(A,e)=>(e.recursive=!0,P8(A)===A?e.mkdirAsync(A,e):k0e(e,A).then(r=>e.mkdirAsync(A,e).then(()=>r).catch(i=>{if(i.code==="ENOENT")return N0e(A,e);throw i}))),P0e=(A,e)=>{if(e.recursive=!0,P8(A)===A)return e.mkdirSync(A,e);let r=v0e(e,A);try{return e.mkdirSync(A,e),r}catch(i){if(i.code==="ENOENT")return M0e(A,e);throw i}};O8.exports={mkdirpNative:L0e,mkdirpNativeSync:P0e}});var G8=p((rPe,q8)=>{var U8=require("fs"),O0e=process.env.__TESTING_MKDIRP_NODE_VERSION__||process.version,wS=O0e.replace(/^v/,"").split("."),T8=+wS[0]>10||+wS[0]==10&&+wS[1]>=12,K0e=T8?A=>A.mkdir===U8.mkdir:()=>!1,U0e=T8?A=>A.mkdirSync===U8.mkdirSync:()=>!1;q8.exports={useNative:K0e,useNativeSync:U0e}});var W8=p((iPe,j8)=>{var Hc=S8(),Jc=x8(),{mkdirpNative:Y8,mkdirpNativeSync:_8}=K8(),{mkdirpManual:H8,mkdirpManualSync:J8}=mS(),{useNative:T0e,useNativeSync:q0e}=G8(),jc=(A,e)=>(A=Jc(A),e=Hc(e),T0e(e)?Y8(A,e):H8(A,e)),G0e=(A,e)=>(A=Jc(A),e=Hc(e),q0e(e)?_8(A,e):J8(A,e));jc.sync=G0e;jc.native=(A,e)=>Y8(Jc(A),Hc(e));jc.manual=(A,e)=>H8(Jc(A),Hc(e));jc.nativeSync=(A,e)=>_8(Jc(A),Hc(e));jc.manualSync=(A,e)=>J8(Jc(A),Hc(e));j8.exports=jc});var A3=p((nPe,e3)=>{"use strict";var Ci=require("fs"),Na=require("path"),Y0e=Ci.lchown?"lchown":"chown",_0e=Ci.lchownSync?"lchownSync":"chownSync",V8=Ci.lchown&&!process.version.match(/v1[1-9]+\./)&&!process.version.match(/v10\.[6-9]/),z8=(A,e,t)=>{try{return Ci[_0e](A,e,t)}catch(r){if(r.code!=="ENOENT")throw r}},H0e=(A,e,t)=>{try{return Ci.chownSync(A,e,t)}catch(r){if(r.code!=="ENOENT")throw r}},J0e=V8?(A,e,t,r)=>i=>{!i||i.code!=="EISDIR"?r(i):Ci.chown(A,e,t,r)}:(A,e,t,r)=>r,DS=V8?(A,e,t)=>{try{return z8(A,e,t)}catch(r){if(r.code!=="EISDIR")throw r;H0e(A,e,t)}}:(A,e,t)=>z8(A,e,t),j0e=process.version,X8=(A,e,t)=>Ci.readdir(A,e,t),W0e=(A,e)=>Ci.readdirSync(A,e);/^v4\./.test(j0e)&&(X8=(A,e,t)=>Ci.readdir(A,t));var sB=(A,e,t,r)=>{Ci[Y0e](A,e,t,J0e(A,e,t,i=>{r(i&&i.code!=="ENOENT"?i:null)}))},Z8=(A,e,t,r,i)=>{if(typeof e=="string")return Ci.lstat(Na.resolve(A,e),(n,s)=>{if(n)return i(n.code!=="ENOENT"?n:null);s.name=e,Z8(A,s,t,r,i)});if(e.isDirectory())SS(Na.resolve(A,e.name),t,r,n=>{if(n)return i(n);let s=Na.resolve(A,e.name);sB(s,t,r,i)});else{let n=Na.resolve(A,e.name);sB(n,t,r,i)}},SS=(A,e,t,r)=>{X8(A,{withFileTypes:!0},(i,n)=>{if(i){if(i.code==="ENOENT")return r();if(i.code!=="ENOTDIR"&&i.code!=="ENOTSUP")return r(i)}if(i||!n.length)return sB(A,e,t,r);let s=n.length,a=null,g=c=>{if(!a){if(c)return r(a=c);if(--s===0)return sB(A,e,t,r)}};n.forEach(c=>Z8(A,c,e,t,g))})},z0e=(A,e,t,r)=>{if(typeof e=="string")try{let i=Ci.lstatSync(Na.resolve(A,e));i.name=e,e=i}catch(i){if(i.code==="ENOENT")return;throw i}e.isDirectory()&&$8(Na.resolve(A,e.name),t,r),DS(Na.resolve(A,e.name),t,r)},$8=(A,e,t)=>{let r;try{r=W0e(A,{withFileTypes:!0})}catch(i){if(i.code==="ENOENT")return;if(i.code==="ENOTDIR"||i.code==="ENOTSUP")return DS(A,e,t);throw i}return r&&r.length&&r.forEach(i=>z0e(A,i,e,t)),DS(A,e,t)};e3.exports=SS;SS.sync=$8});var n3=p((sPe,FS)=>{"use strict";var t3=W8(),hi=require("fs"),oB=require("path"),r3=A3(),Ui=kc(),aB=class extends Error{constructor(e,t){super("Cannot extract through symbolic link"),this.path=t,this.symlink=e}get name(){return"SylinkError"}},gB=class extends Error{constructor(e,t){super(t+": Cannot cd into '"+e+"'"),this.path=e,this.code=t}get name(){return"CwdError"}},cB=(A,e)=>A.get(Ui(e)),zu=(A,e,t)=>A.set(Ui(e),t),V0e=(A,e)=>{hi.stat(A,(t,r)=>{(t||!r.isDirectory())&&(t=new gB(A,t&&t.code||"ENOTDIR")),e(t)})};FS.exports=(A,e,t)=>{A=Ui(A);let r=e.umask,i=e.mode|448,n=(i&r)!==0,s=e.uid,a=e.gid,g=typeof s=="number"&&typeof a=="number"&&(s!==e.processUid||a!==e.processGid),c=e.preserve,l=e.unlink,C=e.cache,f=Ui(e.cwd),E=(D,L)=>{D?t(D):(zu(C,A,!0),L&&g?r3(L,s,a,K=>E(K)):n?hi.chmod(A,i,t):t())};if(C&&cB(C,A)===!0)return E();if(A===f)return V0e(A,E);if(c)return t3(A,{mode:i}).then(D=>E(null,D),E);let w=Ui(oB.relative(f,A)).split("/");lB(f,w,i,C,l,f,null,E)};var lB=(A,e,t,r,i,n,s,a)=>{if(!e.length)return a(null,s);let g=e.shift(),c=Ui(oB.resolve(A+"/"+g));if(cB(r,c))return lB(c,e,t,r,i,n,s,a);hi.mkdir(c,t,i3(c,e,t,r,i,n,s,a))},i3=(A,e,t,r,i,n,s,a)=>g=>{g?hi.lstat(A,(c,l)=>{if(c)c.path=c.path&&Ui(c.path),a(c);else if(l.isDirectory())lB(A,e,t,r,i,n,s,a);else if(i)hi.unlink(A,C=>{if(C)return a(C);hi.mkdir(A,t,i3(A,e,t,r,i,n,s,a))});else{if(l.isSymbolicLink())return a(new aB(A,A+"/"+e.join("/")));a(g)}}):(s=s||A,lB(A,e,t,r,i,n,s,a))},X0e=A=>{let e=!1,t="ENOTDIR";try{e=hi.statSync(A).isDirectory()}catch(r){t=r.code}finally{if(!e)throw new gB(A,t)}};FS.exports.sync=(A,e)=>{A=Ui(A);let t=e.umask,r=e.mode|448,i=(r&t)!==0,n=e.uid,s=e.gid,a=typeof n=="number"&&typeof s=="number"&&(n!==e.processUid||s!==e.processGid),g=e.preserve,c=e.unlink,l=e.cache,C=Ui(e.cwd),f=D=>{zu(l,A,!0),D&&a&&r3.sync(D,n,s),i&&hi.chmodSync(A,r)};if(l&&cB(l,A)===!0)return f();if(A===C)return X0e(C),f();if(g)return f(t3.sync(A,r));let m=Ui(oB.relative(C,A)).split("/"),w=null;for(let D=m.shift(),L=C;D&&(L+="/"+D);D=m.shift())if(L=Ui(oB.resolve(L)),!cB(l,L))try{hi.mkdirSync(L,r),w=w||L,zu(l,L,!0)}catch{let _=hi.lstatSync(L);if(_.isDirectory()){zu(l,L,!0);continue}else if(c){hi.unlinkSync(L),hi.mkdirSync(L,r),w=w||L,zu(l,L,!0);continue}else if(_.isSymbolicLink())return new aB(L,L+"/"+m.join("/"))}return f(w)}});var RS=p((oPe,s3)=>{var xS=Object.create(null),{hasOwnProperty:Z0e}=Object.prototype;s3.exports=A=>(Z0e.call(xS,A)||(xS[A]=A.normalize("NFKD")),xS[A])});var c3=p((aPe,g3)=>{var o3=require("assert"),$0e=RS(),eme=Mc(),{join:a3}=require("path"),Ame=process.env.TESTING_TAR_FAKE_PLATFORM||process.platform,tme=Ame==="win32";g3.exports=()=>{let A=new Map,e=new Map,t=c=>c.split("/").slice(0,-1).reduce((C,f)=>(C.length&&(f=a3(C[C.length-1],f)),C.push(f||"/"),C),[]),r=new Set,i=c=>{let l=e.get(c);if(!l)throw new Error("function does not have any path reservations");return{paths:l.paths.map(C=>A.get(C)),dirs:[...l.dirs].map(C=>A.get(C))}},n=c=>{let{paths:l,dirs:C}=i(c);return l.every(f=>f[0]===c)&&C.every(f=>f[0]instanceof Set&&f[0].has(c))},s=c=>r.has(c)||!n(c)?!1:(r.add(c),c(()=>a(c)),!0),a=c=>{if(!r.has(c))return!1;let{paths:l,dirs:C}=e.get(c),f=new Set;return l.forEach(E=>{let m=A.get(E);o3.equal(m[0],c),m.length===1?A.delete(E):(m.shift(),typeof m[0]=="function"?f.add(m[0]):m[0].forEach(w=>f.add(w)))}),C.forEach(E=>{let m=A.get(E);o3(m[0]instanceof Set),m[0].size===1&&m.length===1?A.delete(E):m[0].size===1?(m.shift(),f.add(m[0])):m[0].delete(c)}),r.delete(c),f.forEach(E=>s(E)),!0};return{check:n,reserve:(c,l)=>{c=tme?["win32 parallelization disabled"]:c.map(f=>$0e(eme(a3(f))).toLowerCase());let C=new Set(c.map(f=>t(f)).reduce((f,E)=>f.concat(E)));return e.set(l,{dirs:C,paths:c}),c.forEach(f=>{let E=A.get(f);E?E.push(l):A.set(f,[l])}),C.forEach(f=>{let E=A.get(f);E?E[E.length-1]instanceof Set?E[E.length-1].add(l):E.push(new Set([l])):A.set(f,[new Set([l])])}),s(l)}}}});var C3=p((gPe,u3)=>{var rme=process.env.__FAKE_PLATFORM__||process.platform,ime=rme==="win32",nme=global.__FAKE_TESTING_FS__||require("fs"),{O_CREAT:sme,O_TRUNC:ome,O_WRONLY:ame,UV_FS_O_FILEMAP:l3=0}=nme.constants,gme=ime&&!!l3,cme=512*1024,lme=l3|ome|sme|ame;u3.exports=gme?A=>A"w"});var KS=p((cPe,F3)=>{"use strict";var ume=require("assert"),Cme=rB(),xA=require("fs"),hme=Yc(),os=require("path"),w3=n3(),h3=KD(),fme=c3(),Ime=UD(),Or=kc(),Eme=Mc(),Bme=RS(),f3=Symbol("onEntry"),vS=Symbol("checkFs"),I3=Symbol("checkFs2"),hB=Symbol("pruneCache"),NS=Symbol("isReusable"),fi=Symbol("makeFs"),MS=Symbol("file"),LS=Symbol("directory"),fB=Symbol("link"),E3=Symbol("symlink"),B3=Symbol("hardlink"),p3=Symbol("unsupported"),Q3=Symbol("checkPath"),co=Symbol("mkdir"),Gt=Symbol("onError"),uB=Symbol("pending"),d3=Symbol("pend"),Wc=Symbol("unpend"),bS=Symbol("ended"),kS=Symbol("maybeClose"),PS=Symbol("skip"),Vu=Symbol("doChown"),Xu=Symbol("uid"),Zu=Symbol("gid"),$u=Symbol("checkedCwd"),D3=require("crypto"),S3=C3(),pme=process.env.TESTING_TAR_FAKE_PLATFORM||process.platform,eC=pme==="win32",Qme=(A,e)=>{if(!eC)return xA.unlink(A,e);let t=A+".DELETE."+D3.randomBytes(16).toString("hex");xA.rename(A,t,r=>{if(r)return e(r);xA.unlink(t,e)})},dme=A=>{if(!eC)return xA.unlinkSync(A);let e=A+".DELETE."+D3.randomBytes(16).toString("hex");xA.renameSync(A,e),xA.unlinkSync(e)},y3=(A,e,t)=>A===A>>>0?A:e===e>>>0?e:t,m3=A=>Bme(Eme(Or(A))).toLowerCase(),yme=(A,e)=>{e=m3(e);for(let t of A.keys()){let r=m3(t);(r===e||r.indexOf(e+"/")===0)&&A.delete(t)}},mme=A=>{for(let e of A.keys())A.delete(e)},AC=class extends Cme{constructor(e){if(e||(e={}),e.ondone=t=>{this[bS]=!0,this[kS]()},super(e),this[$u]=!1,this.reservations=fme(),this.transform=typeof e.transform=="function"?e.transform:null,this.writable=!0,this.readable=!1,this[uB]=0,this[bS]=!1,this.dirCache=e.dirCache||new Map,typeof e.uid=="number"||typeof e.gid=="number"){if(typeof e.uid!="number"||typeof e.gid!="number")throw new TypeError("cannot set owner without number uid and gid");if(e.preserveOwner)throw new TypeError("cannot preserve owner in archive and also set owner explicitly");this.uid=e.uid,this.gid=e.gid,this.setOwner=!0}else this.uid=null,this.gid=null,this.setOwner=!1;e.preserveOwner===void 0&&typeof e.uid!="number"?this.preserveOwner=process.getuid&&process.getuid()===0:this.preserveOwner=!!e.preserveOwner,this.processUid=(this.preserveOwner||this.setOwner)&&process.getuid?process.getuid():null,this.processGid=(this.preserveOwner||this.setOwner)&&process.getgid?process.getgid():null,this.forceChown=e.forceChown===!0,this.win32=!!e.win32||eC,this.newer=!!e.newer,this.keep=!!e.keep,this.noMtime=!!e.noMtime,this.preservePaths=!!e.preservePaths,this.unlink=!!e.unlink,this.cwd=Or(os.resolve(e.cwd||process.cwd())),this.strip=+e.strip||0,this.processUmask=e.noChmod?0:process.umask(),this.umask=typeof e.umask=="number"?e.umask:this.processUmask,this.dmode=e.dmode||511&~this.umask,this.fmode=e.fmode||438&~this.umask,this.on("entry",t=>this[f3](t))}warn(e,t,r={}){return(e==="TAR_BAD_ARCHIVE"||e==="TAR_ABORT")&&(r.recoverable=!1),super.warn(e,t,r)}[kS](){this[bS]&&this[uB]===0&&(this.emit("prefinish"),this.emit("finish"),this.emit("end"))}[Q3](e){if(this.strip){let t=Or(e.path).split("/");if(t.length=this.strip)e.linkpath=r.slice(this.strip).join("/");else return!1}}if(!this.preservePaths){let t=Or(e.path),r=t.split("/");if(r.includes("..")||eC&&/^[a-z]:\.\.$/i.test(r[0]))return this.warn("TAR_ENTRY_ERROR","path contains '..'",{entry:e,path:t}),!1;let[i,n]=Ime(t);i&&(e.path=n,this.warn("TAR_ENTRY_INFO",`stripping ${i} from absolute path`,{entry:e,path:t}))}if(os.isAbsolute(e.path)?e.absolute=Or(os.resolve(e.path)):e.absolute=Or(os.resolve(this.cwd,e.path)),!this.preservePaths&&e.absolute.indexOf(this.cwd+"/")!==0&&e.absolute!==this.cwd)return this.warn("TAR_ENTRY_ERROR","path escaped extraction target",{entry:e,path:Or(e.path),resolvedPath:e.absolute,cwd:this.cwd}),!1;if(e.absolute===this.cwd&&e.type!=="Directory"&&e.type!=="GNUDumpDir")return!1;if(this.win32){let{root:t}=os.win32.parse(e.absolute);e.absolute=t+h3.encode(e.absolute.slice(t.length));let{root:r}=os.win32.parse(e.path);e.path=r+h3.encode(e.path.slice(r.length))}return!0}[f3](e){if(!this[Q3](e))return e.resume();switch(ume.equal(typeof e.absolute,"string"),e.type){case"Directory":case"GNUDumpDir":e.mode&&(e.mode=e.mode|448);case"File":case"OldFile":case"ContiguousFile":case"Link":case"SymbolicLink":return this[vS](e);case"CharacterDevice":case"BlockDevice":case"FIFO":default:return this[p3](e)}}[Gt](e,t){e.name==="CwdError"?this.emit("error",e):(this.warn("TAR_ENTRY_ERROR",e,{entry:t}),this[Wc](),t.resume())}[co](e,t,r){w3(Or(e),{uid:this.uid,gid:this.gid,processUid:this.processUid,processGid:this.processGid,umask:this.processUmask,preserve:this.preservePaths,unlink:this.unlink,cache:this.dirCache,cwd:this.cwd,mode:t,noChmod:this.noChmod},r)}[Vu](e){return this.forceChown||this.preserveOwner&&(typeof e.uid=="number"&&e.uid!==this.processUid||typeof e.gid=="number"&&e.gid!==this.processGid)||typeof this.uid=="number"&&this.uid!==this.processUid||typeof this.gid=="number"&&this.gid!==this.processGid}[Xu](e){return y3(this.uid,e.uid,this.processUid)}[Zu](e){return y3(this.gid,e.gid,this.processGid)}[MS](e,t){let r=e.mode&4095||this.fmode,i=new hme.WriteStream(e.absolute,{flags:S3(e.size),mode:r,autoClose:!1});i.on("error",g=>{i.fd&&xA.close(i.fd,()=>{}),i.write=()=>!0,this[Gt](g,e),t()});let n=1,s=g=>{if(g){i.fd&&xA.close(i.fd,()=>{}),this[Gt](g,e),t();return}--n===0&&xA.close(i.fd,c=>{c?this[Gt](c,e):this[Wc](),t()})};i.on("finish",g=>{let c=e.absolute,l=i.fd;if(e.mtime&&!this.noMtime){n++;let C=e.atime||new Date,f=e.mtime;xA.futimes(l,C,f,E=>E?xA.utimes(c,C,f,m=>s(m&&E)):s())}if(this[Vu](e)){n++;let C=this[Xu](e),f=this[Zu](e);xA.fchown(l,C,f,E=>E?xA.chown(c,C,f,m=>s(m&&E)):s())}s()});let a=this.transform&&this.transform(e)||e;a!==e&&(a.on("error",g=>{this[Gt](g,e),t()}),e.pipe(a)),a.pipe(i)}[LS](e,t){let r=e.mode&4095||this.dmode;this[co](e.absolute,r,i=>{if(i){this[Gt](i,e),t();return}let n=1,s=a=>{--n===0&&(t(),this[Wc](),e.resume())};e.mtime&&!this.noMtime&&(n++,xA.utimes(e.absolute,e.atime||new Date,e.mtime,s)),this[Vu](e)&&(n++,xA.chown(e.absolute,this[Xu](e),this[Zu](e),s)),s()})}[p3](e){e.unsupported=!0,this.warn("TAR_ENTRY_UNSUPPORTED",`unsupported entry type: ${e.type}`,{entry:e}),e.resume()}[E3](e,t){this[fB](e,e.linkpath,"symlink",t)}[B3](e,t){let r=Or(os.resolve(this.cwd,e.linkpath));this[fB](e,r,"link",t)}[d3](){this[uB]++}[Wc](){this[uB]--,this[kS]()}[PS](e){this[Wc](),e.resume()}[NS](e,t){return e.type==="File"&&!this.unlink&&t.isFile()&&t.nlink<=1&&!eC}[vS](e){this[d3]();let t=[e.path];e.linkpath&&t.push(e.linkpath),this.reservations.reserve(t,r=>this[I3](e,r))}[hB](e){e.type==="SymbolicLink"?mme(this.dirCache):e.type!=="Directory"&&yme(this.dirCache,e.absolute)}[I3](e,t){this[hB](e);let r=a=>{this[hB](e),t(a)},i=()=>{this[co](this.cwd,this.dmode,a=>{if(a){this[Gt](a,e),r();return}this[$u]=!0,n()})},n=()=>{if(e.absolute!==this.cwd){let a=Or(os.dirname(e.absolute));if(a!==this.cwd)return this[co](a,this.dmode,g=>{if(g){this[Gt](g,e),r();return}s()})}s()},s=()=>{xA.lstat(e.absolute,(a,g)=>{if(g&&(this.keep||this.newer&&g.mtime>e.mtime)){this[PS](e),r();return}if(a||this[NS](e,g))return this[fi](null,e,r);if(g.isDirectory()){if(e.type==="Directory"){let c=!this.noChmod&&e.mode&&(g.mode&4095)!==e.mode,l=C=>this[fi](C,e,r);return c?xA.chmod(e.absolute,e.mode,l):l()}if(e.absolute!==this.cwd)return xA.rmdir(e.absolute,c=>this[fi](c,e,r))}if(e.absolute===this.cwd)return this[fi](null,e,r);Qme(e.absolute,c=>this[fi](c,e,r))})};this[$u]?n():i()}[fi](e,t,r){if(e){this[Gt](e,t),r();return}switch(t.type){case"File":case"OldFile":case"ContiguousFile":return this[MS](t,r);case"Link":return this[B3](t,r);case"SymbolicLink":return this[E3](t,r);case"Directory":case"GNUDumpDir":return this[LS](t,r)}}[fB](e,t,r,i){xA[r](t,e.absolute,n=>{n?this[Gt](n,e):(this[Wc](),e.resume()),i()})}},CB=A=>{try{return[null,A()]}catch(e){return[e,null]}},OS=class extends AC{[fi](e,t){return super[fi](e,t,()=>{})}[vS](e){if(this[hB](e),!this[$u]){let n=this[co](this.cwd,this.dmode);if(n)return this[Gt](n,e);this[$u]=!0}if(e.absolute!==this.cwd){let n=Or(os.dirname(e.absolute));if(n!==this.cwd){let s=this[co](n,this.dmode);if(s)return this[Gt](s,e)}}let[t,r]=CB(()=>xA.lstatSync(e.absolute));if(r&&(this.keep||this.newer&&r.mtime>e.mtime))return this[PS](e);if(t||this[NS](e,r))return this[fi](null,e);if(r.isDirectory()){if(e.type==="Directory"){let s=!this.noChmod&&e.mode&&(r.mode&4095)!==e.mode,[a]=s?CB(()=>{xA.chmodSync(e.absolute,e.mode)}):[];return this[fi](a,e)}let[n]=CB(()=>xA.rmdirSync(e.absolute));this[fi](n,e)}let[i]=e.absolute===this.cwd?[]:CB(()=>dme(e.absolute));this[fi](i,e)}[MS](e,t){let r=e.mode&4095||this.fmode,i=a=>{let g;try{xA.closeSync(n)}catch(c){g=c}(a||g)&&this[Gt](a||g,e),t()},n;try{n=xA.openSync(e.absolute,S3(e.size),r)}catch(a){return i(a)}let s=this.transform&&this.transform(e)||e;s!==e&&(s.on("error",a=>this[Gt](a,e)),e.pipe(s)),s.on("data",a=>{try{xA.writeSync(n,a,0,a.length)}catch(g){i(g)}}),s.on("end",a=>{let g=null;if(e.mtime&&!this.noMtime){let c=e.atime||new Date,l=e.mtime;try{xA.futimesSync(n,c,l)}catch(C){try{xA.utimesSync(e.absolute,c,l)}catch{g=C}}}if(this[Vu](e)){let c=this[Xu](e),l=this[Zu](e);try{xA.fchownSync(n,c,l)}catch(C){try{xA.chownSync(e.absolute,c,l)}catch{g=g||C}}}i(g)})}[LS](e,t){let r=e.mode&4095||this.dmode,i=this[co](e.absolute,r);if(i){this[Gt](i,e),t();return}if(e.mtime&&!this.noMtime)try{xA.utimesSync(e.absolute,e.atime||new Date,e.mtime)}catch{}if(this[Vu](e))try{xA.chownSync(e.absolute,this[Xu](e),this[Zu](e))}catch{}t(),e.resume()}[co](e,t){try{return w3.sync(Or(e),{uid:this.uid,gid:this.gid,processUid:this.processUid,processGid:this.processGid,umask:this.processUmask,preserve:this.preservePaths,unlink:this.unlink,cache:this.dirCache,cwd:this.cwd,mode:t})}catch(r){return r}}[fB](e,t,r,i){try{xA[r+"Sync"](t,e.absolute),i(),e.resume()}catch(n){return this[Gt](n,e)}}};AC.Sync=OS;F3.exports=AC});var v3=p((lPe,k3)=>{"use strict";var wme=Sc(),IB=KS(),R3=require("fs"),b3=Yc(),x3=require("path"),US=Mc();k3.exports=(A,e,t)=>{typeof A=="function"?(t=A,e=null,A={}):Array.isArray(A)&&(e=A,A={}),typeof e=="function"&&(t=e,e=null),e?e=Array.from(e):e=[];let r=wme(A);if(r.sync&&typeof t=="function")throw new TypeError("callback not supported for sync tar functions");if(!r.file&&typeof t=="function")throw new TypeError("callback only supported with file option");return e.length&&Dme(r,e),r.file&&r.sync?Sme(r):r.file?Fme(r,t):r.sync?xme(r):Rme(r)};var Dme=(A,e)=>{let t=new Map(e.map(n=>[US(n),!0])),r=A.filter,i=(n,s)=>{let a=s||x3.parse(n).root||".",g=n===a?!1:t.has(n)?t.get(n):i(x3.dirname(n),a);return t.set(n,g),g};A.filter=r?(n,s)=>r(n,s)&&i(US(n)):n=>i(US(n))},Sme=A=>{let e=new IB.Sync(A),t=A.file,r=R3.statSync(t),i=A.maxReadSize||16*1024*1024;new b3.ReadStreamSync(t,{readSize:i,size:r.size}).pipe(e)},Fme=(A,e)=>{let t=new IB(A),r=A.maxReadSize||16*1024*1024,i=A.file,n=new Promise((s,a)=>{t.on("error",a),t.on("close",s),R3.stat(i,(g,c)=>{if(g)a(g);else{let l=new b3.ReadStream(i,{readSize:r,size:c.size});l.on("error",a),l.pipe(t)}})});return e?n.then(e,e):n},xme=A=>new IB.Sync(A),Rme=A=>new IB(A)});var N3=p(Bt=>{"use strict";Bt.c=Bt.create=h8();Bt.r=Bt.replace=QS();Bt.t=Bt.list=iB();Bt.u=Bt.update=m8();Bt.x=Bt.extract=v3();Bt.Pack=YE();Bt.Unpack=KS();Bt.Parse=rB();Bt.ReadEntry=SE();Bt.WriteEntry=zD();Bt.Header=Nc();Bt.Pax=xE();Bt.types=kD()});var M3=p(EB=>{"use strict";Object.defineProperty(EB,"__esModule",{value:!0});EB.WorkerPool=void 0;var bme=nA(),kme=require("os"),vme=bme.__importDefault(xg()),Nme=require("worker_threads"),lo=Symbol("kTaskInfo"),TS=class{constructor(e){this.source=e,this.workers=[],this.limit=(0,vme.default)(Math.max(1,(0,kme.cpus)().length)),this.cleanupInterval=setInterval(()=>{if(this.limit.pendingCount===0&&this.limit.activeCount===0){let t=this.workers.pop();t?t.terminate():clearInterval(this.cleanupInterval)}},5e3).unref()}createWorker(){this.cleanupInterval.refresh();let e=new Nme.Worker(this.source,{eval:!0,execArgv:[...process.execArgv,"--unhandled-rejections=strict"]});return e.on("message",t=>{if(!e[lo])throw new Error("Assertion failed: Worker sent a result without having a task assigned");e[lo].resolve(t),e[lo]=null,e.unref(),this.workers.push(e)}),e.on("error",t=>{var r;(r=e[lo])===null||r===void 0||r.reject(t),e[lo]=null}),e.on("exit",t=>{var r;t!==0&&((r=e[lo])===null||r===void 0||r.reject(new Error(`Worker exited with code ${t}`))),e[lo]=null}),e}run(e){return this.limit(()=>{var t;let r=(t=this.workers.pop())!==null&&t!==void 0?t:this.createWorker();return r.ref(),new Promise((i,n)=>{r[lo]={resolve:i,reject:n},r.postMessage(e)})})}};EB.WorkerPool=TS});var P3=p((hPe,L3)=>{var qS;L3.exports.getContent=()=>(typeof qS>"u"&&(qS=require("zlib").brotliDecompressSync(Buffer.from("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","base64")).toString()),qS)});var K3=p(uo=>{"use strict";Object.defineProperty(uo,"__esModule",{value:!0});uo.extractArchiveTo=uo.convertToZip=uo.makeArchiveFromDirectory=void 0;var O3=nA(),KA=BA(),YS=ds(),Mme=require("stream"),Lme=O3.__importDefault(N3()),Pme=M3(),Ome=O3.__importStar(br()),Kme=P3();async function Ume(A,{baseFs:e=new KA.NodeFS,prefixPath:t=KA.PortablePath.root,compressionLevel:r,inMemory:i=!1}={}){let n;if(i)n=new YS.ZipFS(null,{level:r});else{let a=await KA.xfs.mktempPromise(),g=KA.ppath.join(a,"archive.zip");n=new YS.ZipFS(g,{create:!0,level:r})}let s=KA.ppath.resolve(KA.PortablePath.root,t);return await n.copyPromise(s,A,{baseFs:e,stableTime:!0,stableSort:!0}),n}uo.makeArchiveFromDirectory=Ume;var GS;async function Tme(A,e){let t=await KA.xfs.mktempPromise(),r=KA.ppath.join(t,"archive.zip");return GS||(GS=new Pme.WorkerPool((0,Kme.getContent)())),await GS.run({tmpFile:r,tgz:A,opts:e}),new YS.ZipFS(r,{level:e.compressionLevel})}uo.convertToZip=Tme;async function*qme(A){let e=new Lme.default.Parse,t=new Mme.PassThrough({objectMode:!0,autoDestroy:!0,emitClose:!0});e.on("entry",r=>{t.write(r)}),e.on("error",r=>{t.destroy(r)}),e.on("close",()=>{t.destroyed||t.end()}),e.end(A);for await(let r of t){let i=r;yield i,i.resume()}}async function Gme(A,e,{stripComponents:t=0,prefixPath:r=KA.PortablePath.dot}={}){var i;function n(s){if(s.path[0]==="/")return!0;let a=s.path.split(/\//g);return!!(a.some(g=>g==="..")||a.length<=t)}for await(let s of qme(A)){if(n(s))continue;let a=KA.ppath.normalize(KA.npath.toPortablePath(s.path)).replace(/\/$/,"").split(/\//g);if(a.length<=t)continue;let g=a.slice(t).join("/"),c=KA.ppath.join(r,g),l=420;switch((s.type==="Directory"||(((i=s.mode)!==null&&i!==void 0?i:0)&73)!==0)&&(l|=73),s.type){case"Directory":e.mkdirpSync(KA.ppath.dirname(c),{chmod:493,utimes:[KA.constants.SAFE_TIME,KA.constants.SAFE_TIME]}),e.mkdirSync(c,{mode:l}),e.utimesSync(c,KA.constants.SAFE_TIME,KA.constants.SAFE_TIME);break;case"OldFile":case"File":e.mkdirpSync(KA.ppath.dirname(c),{chmod:493,utimes:[KA.constants.SAFE_TIME,KA.constants.SAFE_TIME]}),e.writeFileSync(c,await Ome.bufferStream(s),{mode:l}),e.utimesSync(c,KA.constants.SAFE_TIME,KA.constants.SAFE_TIME);break;case"SymbolicLink":e.mkdirpSync(KA.ppath.dirname(c),{chmod:493,utimes:[KA.constants.SAFE_TIME,KA.constants.SAFE_TIME]}),e.symlinkSync(s.linkpath,c),e.lutimesSync(c,KA.constants.SAFE_TIME,KA.constants.SAFE_TIME);break}}return e}uo.extractArchiveTo=Gme});var T3=p((_S,U3)=>{(function(A,e){typeof _S=="object"?U3.exports=e():typeof define=="function"&&define.amd?define(e):A.treeify=e()})(_S,function(){function A(i,n){var s=n?"\u2514":"\u251C";return i?s+="\u2500 ":s+="\u2500\u2500\u2510",s}function e(i,n){var s=[];for(var a in i)!i.hasOwnProperty(a)||n&&typeof i[a]=="function"||s.push(a);return s}function t(i,n,s,a,g,c,l){var C="",f=0,E,m,w=a.slice(0);if(w.push([n,s])&&a.length>0&&(a.forEach(function(L,K){K>0&&(C+=(L[1]?" ":"\u2502")+" "),!m&&L[0]===n&&(m=!0)}),C+=A(i,s)+i,g&&(typeof n!="object"||n instanceof Date)&&(C+=": "+n),m&&(C+=" (circular ref.)"),l(C)),!m&&typeof n=="object"){var D=e(n,c);D.forEach(function(L){E=++f===D.length,t(L,n[L],E,w,g,c,l)})}}var r={};return r.asLines=function(i,n,s,a){var g=typeof s!="function"?s:!1;t(".",i,!1,[],n,g,a||s)},r.asTree=function(i,n,s){var a="";return t(".",i,!1,[],n,s,function(g){a+=g+` +`}),a},r})});var _3=p(Qn=>{"use strict";Object.defineProperty(Qn,"__esModule",{value:!0});Qn.emitTree=Qn.emitList=Qn.treeNodeToJson=Qn.treeNodeToTreeify=void 0;var Yme=nA(),_me=T3(),Ma=Yme.__importStar(ti());function q3(A,{configuration:e}){let t={},r=(i,n)=>{let s=Array.isArray(i)?i.entries():Object.entries(i);for(let[a,{label:g,value:c,children:l}]of s){let C=[];typeof g<"u"&&C.push(Ma.applyStyle(e,g,Ma.Style.BOLD)),typeof c<"u"&&C.push(Ma.pretty(e,c[0],c[1])),C.length===0&&C.push(Ma.applyStyle(e,`${a}`,Ma.Style.BOLD));let f=C.join(": "),E=n[f]={};typeof l<"u"&&r(l,E)}};if(typeof A.children>"u")throw new Error("The root node must only contain children");return r(A.children,t),t}Qn.treeNodeToTreeify=q3;function G3(A){let e=t=>{var r;if(typeof t.children>"u"){if(typeof t.value>"u")throw new Error("Assertion failed: Expected a value to be set if the children are missing");return Ma.json(t.value[0],t.value[1])}let i=Array.isArray(t.children)?t.children.entries():Object.entries((r=t.children)!==null&&r!==void 0?r:{}),n=Array.isArray(t.children)?[]:{};for(let[s,a]of i)n[s]=e(a);return typeof t.value>"u"?n:{value:Ma.json(t.value[0],t.value[1]),children:n}};return e(A)}Qn.treeNodeToJson=G3;function Hme(A,{configuration:e,stdout:t,json:r}){let i=A.map(n=>({value:n}));Y3({children:i},{configuration:e,stdout:t,json:r})}Qn.emitList=Hme;function Y3(A,{configuration:e,stdout:t,json:r,separators:i=0}){var n;if(r){let a=Array.isArray(A.children)?A.children.values():Object.values((n=A.children)!==null&&n!==void 0?n:{});for(let g of a)t.write(`${JSON.stringify(G3(g))} +`);return}let s=(0,_me.asTree)(q3(A,{configuration:e}),!1,!1);if(i>=1&&(s=s.replace(/^([├└]─)/gm,`\u2502 +$1`).replace(/^│\n/,"")),i>=2)for(let a=0;a<2;++a)s=s.replace(/^([│ ].{2}[├│ ].{2}[^\n]+\n)(([│ ]).{2}[├└].{2}[^\n]*\n[│ ].{2}[│ ].{2}[├└]─)/gm,`$1$3 \u2502 +$2`).replace(/^│\n/,"");if(i>=3)throw new Error("Only the first two levels are accepted by treeUtils.emitTree");t.write(s)}Qn.emitTree=Y3});var j3=p(dB=>{"use strict";Object.defineProperty(dB,"__esModule",{value:!0});dB.Cache=void 0;var QB=nA(),tC=BA(),ut=BA(),HS=ds(),Jme=require("crypto"),H3=QB.__importDefault(require("fs")),BB=ar(),pB=ii(),J3=QB.__importStar(Us()),jme=QB.__importStar(br()),Co=QB.__importStar(Dt()),Wme=9,rC=class{static async find(e,{immutable:t,check:r}={}){let i=new rC(e.get("cacheFolder"),{configuration:e,immutable:t,check:r});return await i.setup(),i}constructor(e,{configuration:t,immutable:r=t.get("enableImmutableCache"),check:i=!1}){this.markedFiles=new Set,this.mutexes=new Map,this.cacheId=`-${(0,Jme.randomBytes)(8).toString("hex")}.tmp`,this.configuration=t,this.cwd=e,this.immutable=r,this.check=i;let n=t.get("cacheKeyOverride");if(n!==null)this.cacheKey=`${n}`;else{let s=t.get("compressionLevel"),a=s!==HS.DEFAULT_COMPRESSION_LEVEL?`c${s}`:"";this.cacheKey=[Wme,a].join("")}}get mirrorCwd(){if(!this.configuration.get("enableMirror"))return null;let e=`${this.configuration.get("globalFolder")}/cache`;return e!==this.cwd?e:null}getVersionFilename(e){return`${Co.slugifyLocator(e)}-${this.cacheKey}.zip`}getChecksumFilename(e,t){let i=zme(t).slice(0,10);return`${Co.slugifyLocator(e)}-${i}.zip`}getLocatorPath(e,t,r={}){var i;return this.mirrorCwd===null||((i=r.unstablePackages)===null||i===void 0?void 0:i.has(e.locatorHash))?ut.ppath.resolve(this.cwd,this.getVersionFilename(e)):t===null||JS(t)!==this.cacheKey?null:ut.ppath.resolve(this.cwd,this.getChecksumFilename(e,t))}getLocatorMirrorPath(e){let t=this.mirrorCwd;return t!==null?ut.ppath.resolve(t,this.getVersionFilename(e)):null}async setup(){if(!this.configuration.get("enableGlobalCache"))if(this.immutable){if(!await ut.xfs.existsPromise(this.cwd))throw new pB.ReportError(BB.MessageName.IMMUTABLE_CACHE,"Cache path does not exist.")}else{await ut.xfs.mkdirPromise(this.cwd,{recursive:!0});let e=ut.ppath.resolve(this.cwd,".gitignore");await ut.xfs.changeFilePromise(e,`/.gitignore +*.flock +*.tmp +`)}(this.mirrorCwd||!this.immutable)&&await ut.xfs.mkdirPromise(this.mirrorCwd||this.cwd,{recursive:!0})}async fetchPackageFromCache(e,t,{onHit:r,onMiss:i,loader:n,...s}){var a;let g=this.getLocatorMirrorPath(e),c=new tC.NodeFS,l=()=>{let G=new HS.ZipFS,ee=ut.ppath.join(tC.PortablePath.root,Co.getIdentVendorPath(e));return G.mkdirSync(ee,{recursive:!0}),G.writeJsonSync(ut.ppath.join(ee,tC.Filename.manifest),{name:Co.stringifyIdent(e),mocked:!0}),G},C=async(G,ee=null)=>{var o;if(ee===null&&((o=s.unstablePackages)===null||o===void 0?void 0:o.has(e.locatorHash)))return{isValid:!0,hash:null};let H=!s.skipIntegrityCheck||!t?`${this.cacheKey}/${await J3.checksumFile(G)}`:t;if(ee!==null){let ne=!s.skipIntegrityCheck||!t?`${this.cacheKey}/${await J3.checksumFile(ee)}`:t;if(H!==ne)throw new pB.ReportError(BB.MessageName.CACHE_CHECKSUM_MISMATCH,"The remote archive doesn't match the local checksum - has the local cache been corrupted?")}if(t!==null&&H!==t){let ne;switch(this.check?ne="throw":JS(t)!==JS(H)?ne="update":ne=this.configuration.get("checksumBehavior"),ne){case"ignore":return{isValid:!0,hash:t};case"update":return{isValid:!0,hash:H};case"reset":return{isValid:!1,hash:t};default:case"throw":throw new pB.ReportError(BB.MessageName.CACHE_CHECKSUM_MISMATCH,"The remote archive doesn't match the expected checksum")}}return{isValid:!0,hash:H}},f=async G=>{if(!n)throw new Error(`Cache check required but no loader configured for ${Co.prettyLocator(this.configuration,e)}`);let ee=await n(),o=ee.getRealPath();ee.saveAndClose(),await ut.xfs.chmodPromise(o,420);let H=await C(G,o);if(!H.isValid)throw new Error("Assertion failed: Expected a valid checksum");return H.hash},E=async()=>{if(g===null||!await ut.xfs.existsPromise(g)){let G=await n(),ee=G.getRealPath();return G.saveAndClose(),{source:"loader",path:ee}}return{source:"mirror",path:g}},m=async()=>{if(!n)throw new Error(`Cache entry required but missing for ${Co.prettyLocator(this.configuration,e)}`);if(this.immutable)throw new pB.ReportError(BB.MessageName.IMMUTABLE_CACHE,`Cache entry required but missing for ${Co.prettyLocator(this.configuration,e)}`);let{path:G,source:ee}=await E(),o=(await C(G)).hash,H=this.getLocatorPath(e,o,s);if(!H)throw new Error("Assertion failed: Expected the cache path to be available");let ne=[];ee!=="mirror"&&g!==null&&ne.push(async()=>{let M=`${g}${this.cacheId}`;await ut.xfs.copyFilePromise(G,M,H3.default.constants.COPYFILE_FICLONE),await ut.xfs.chmodPromise(M,420),await ut.xfs.renamePromise(M,g)}),(!s.mirrorWriteOnly||g===null)&&ne.push(async()=>{let M=`${H}${this.cacheId}`;await ut.xfs.copyFilePromise(G,M,H3.default.constants.COPYFILE_FICLONE),await ut.xfs.chmodPromise(M,420),await ut.xfs.renamePromise(M,H)});let j=s.mirrorWriteOnly?g??H:H;return await Promise.all(ne.map(M=>M())),[!1,j,o]},w=async()=>{let ee=(async()=>{var o;let H=this.getLocatorPath(e,t,s),ne=H!==null?this.markedFiles.has(H)||await c.existsPromise(H):!1,j=!!(!((o=s.mockedPackages)===null||o===void 0)&&o.has(e.locatorHash))&&(!this.check||!ne),M=j||ne,k=M?r:i;if(k&&k(),M){let te=null,ae=H;if(!j)if(this.check)te=await f(ae);else{let De=await C(ae);if(De.isValid)te=De.hash;else return m()}return[j,ae,te]}else return m()})();this.mutexes.set(e.locatorHash,ee);try{return await ee}finally{this.mutexes.delete(e.locatorHash)}};for(let G;G=this.mutexes.get(e.locatorHash);)await G;let[D,L,K]=await w();D||this.markedFiles.add(L);let _,le=D?()=>l():()=>new HS.ZipFS(L,{baseFs:c,readOnly:!0}),re=new tC.LazyFS(()=>jme.prettifySyncErrors(()=>_=le(),G=>`Failed to open the cache entry for ${Co.prettyLocator(this.configuration,e)}: ${G}`),ut.ppath),J=new tC.AliasFS(L,{baseFs:re,pathUtils:ut.ppath}),X=()=>{_?.discardAndClose()},ie=!((a=s.unstablePackages)===null||a===void 0)&&a.has(e.locatorHash)?null:K;return[J,X,ie]}};dB.Cache=rC;function JS(A){let e=A.indexOf("/");return e!==-1?A.slice(0,e):null}function zme(A){let e=A.indexOf("/");return e!==-1?A.slice(e+1):A}});var jS=p(iC=>{"use strict";Object.defineProperty(iC,"__esModule",{value:!0});iC.BuildType=void 0;var Vme;(function(A){A[A.SCRIPT=0]="SCRIPT",A[A.SHELLCODE=1]="SHELLCODE"})(Vme=iC.BuildType||(iC.BuildType={}))});var VS=p(La=>{"use strict";Object.defineProperty(La,"__esModule",{value:!0});La.LegacyMigrationResolver=La.IMPORTED_PATTERNS=void 0;var z3=nA(),WS=BA(),Xme=wg(),W3=ar(),Zme=z3.__importStar(qs()),ho=z3.__importStar(Dt());La.IMPORTED_PATTERNS=[[/^(git(?:\+(?:https|ssh))?:\/\/.*(?:\.git)?)#(.*)$/,(A,e,t,r)=>`${t}#commit=${r}`],[/^https:\/\/((?:[^/]+?)@)?codeload\.github\.com\/([^/]+\/[^/]+)\/tar\.gz\/([0-9a-f]+)$/,(A,e,t="",r,i)=>`https://${t}github.com/${r}.git#commit=${i}`],[/^https:\/\/((?:[^/]+?)@)?github\.com\/([^/]+\/[^/]+?)(?:\.git)?#([0-9a-f]+)$/,(A,e,t="",r,i)=>`https://${t}github.com/${r}.git#commit=${i}`],[/^https?:\/\/[^/]+\/(?:[^/]+\/)*(?:@.+(?:\/|(?:%2f)))?([^/]+)\/(?:-|download)\/\1-[^/]+\.tgz(?:#|$)/,A=>`npm:${A}`],[/^https:\/\/npm\.pkg\.github\.com\/download\/(?:@[^/]+)\/(?:[^/]+)\/(?:[^/]+)\/(?:[0-9a-f]+)(?:#|$)/,A=>`npm:${A}`],[/^https:\/\/npm\.fontawesome\.com\/(?:@[^/]+)\/([^/]+)\/-\/([^/]+)\/\1-\2.tgz(?:#|$)/,A=>`npm:${A}`],[/^https?:\/\/[^/]+\/.*\/(@[^/]+)\/([^/]+)\/-\/\1\/\2-(?:[.\d\w-]+)\.tgz(?:#|$)/,(A,e)=>ho.makeRange({protocol:"npm:",source:null,selector:A,params:{__archiveUrl:e}})],[/^[^/]+\.tgz#[0-9a-f]+$/,A=>`npm:${A}`]];var zS=class{constructor(e){this.resolver=e,this.resolutions=null}async setup(e,{report:t}){let r=WS.ppath.join(e.cwd,e.configuration.get("lockfileFilename"));if(!WS.xfs.existsSync(r))return;let i=await WS.xfs.readFilePromise(r,"utf8"),n=(0,Xme.parseSyml)(i);if(Object.prototype.hasOwnProperty.call(n,"__metadata"))return;let s=this.resolutions=new Map;for(let a of Object.keys(n)){let g=ho.tryParseDescriptor(a);if(!g){t.reportWarning(W3.MessageName.YARN_IMPORT_FAILED,`Failed to parse the string "${a}" into a proper descriptor`);continue}let c=Zme.validRange(g.range)?ho.makeDescriptor(g,`npm:${g.range}`):g,{version:l,resolved:C}=n[a];if(!C)continue;let f;for(let[m,w]of La.IMPORTED_PATTERNS){let D=C.match(m);if(D){f=w(l,...D);break}}if(!f){t.reportWarning(W3.MessageName.YARN_IMPORT_FAILED,`${ho.prettyDescriptor(e.configuration,c)}: Only some patterns can be imported from legacy lockfiles (not "${C}")`);continue}let E=c;try{let m=ho.parseRange(c.range),w=ho.tryParseDescriptor(m.selector,!0);w&&(E=w)}catch{}s.set(c.descriptorHash,ho.makeLocator(E,f))}}supportsDescriptor(e,t){return this.resolutions?this.resolutions.has(e.descriptorHash):!1}supportsLocator(e,t){return!1}shouldPersistResolution(e,t){throw new Error("Assertion failed: This resolver doesn't support resolving locators to packages")}bindDescriptor(e,t,r){return e}getResolutionDependencies(e,t){return{}}async getCandidates(e,t,r){if(!this.resolutions)throw new Error("Assertion failed: The resolution store should have been setup");let i=this.resolutions.get(e.descriptorHash);if(!i)throw new Error("Assertion failed: The resolution should have been registered");let n=ho.convertLocatorToDescriptor(i),s=r.project.configuration.normalizeDependency(n);return await this.resolver.getCandidates(s,t,r)}async getSatisfying(e,t,r,i){let[n]=await this.getCandidates(e,t,i);return{locators:r.filter(s=>s.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,t){throw new Error("Assertion failed: This resolver doesn't support resolving locators to packages")}};La.LegacyMigrationResolver=zS});var V3=p(mB=>{"use strict";Object.defineProperty(mB,"__esModule",{value:!0});mB.LightReport=void 0;var $me=nA(),ewe=ii(),Awe=hE(),yB=$me.__importStar(ti()),XS=class extends ewe.Report{static async start(e,t){let r=new this(e);try{await t(r)}catch(i){r.reportExceptionOnce(i)}finally{await r.finalize()}return r}constructor({configuration:e,stdout:t,suggestInstall:r=!0}){super(),this.errorCount=0,yB.addLogFilterSupport(this,{configuration:e}),this.configuration=e,this.stdout=t,this.suggestInstall=r}hasErrors(){return this.errorCount>0}exitCode(){return this.hasErrors()?1:0}reportCacheHit(e){}reportCacheMiss(e){}startSectionSync(e,t){return t()}async startSectionPromise(e,t){return await t()}startTimerSync(e,t,r){return(typeof t=="function"?t:r)()}async startTimerPromise(e,t,r){return await(typeof t=="function"?t:r)()}async startCacheReport(e){return await e()}reportSeparator(){}reportInfo(e,t){}reportWarning(e,t){}reportError(e,t){this.errorCount+=1,this.stdout.write(`${yB.pretty(this.configuration,"\u27A4","redBright")} ${this.formatNameWithHyperlink(e)}: ${t} +`)}reportProgress(e){return{...Promise.resolve().then(async()=>{for await(let{}of e);}),stop:()=>{}}}reportJson(e){}async finalize(){this.errorCount>0&&(this.stdout.write(` +`),this.stdout.write(`${yB.pretty(this.configuration,"\u27A4","redBright")} Errors happened when preparing the environment required to run this command. +`),this.suggestInstall&&this.stdout.write(`${yB.pretty(this.configuration,"\u27A4","redBright")} This might be caused by packages being missing from the lockfile, in which case running "yarn install" might help. +`))}formatNameWithHyperlink(e){return(0,Awe.formatNameWithHyperlink)(e,{configuration:this.configuration,json:!1})}};mB.LightReport=XS});var $S=p(wB=>{"use strict";Object.defineProperty(wB,"__esModule",{value:!0});wB.LockfileResolver=void 0;var twe=nA(),X3=twe.__importStar(Dt()),ZS=class{constructor(e){this.resolver=e}supportsDescriptor(e,t){return!!(t.project.storedResolutions.get(e.descriptorHash)||t.project.originalPackages.has(X3.convertDescriptorToLocator(e).locatorHash))}supportsLocator(e,t){return!!(t.project.originalPackages.has(e.locatorHash)&&!t.project.lockfileNeedsRefresh)}shouldPersistResolution(e,t){throw new Error("The shouldPersistResolution method shouldn't be called on the lockfile resolver, which would always answer yes")}bindDescriptor(e,t,r){return e}getResolutionDependencies(e,t){return this.resolver.getResolutionDependencies(e,t)}async getCandidates(e,t,r){let i=r.project.storedResolutions.get(e.descriptorHash);if(i){let s=r.project.originalPackages.get(i);if(s)return[s]}let n=r.project.originalPackages.get(X3.convertDescriptorToLocator(e).locatorHash);if(n)return[n];throw new Error("Resolution expected from the lockfile data")}async getSatisfying(e,t,r,i){let[n]=await this.getCandidates(e,t,i);return{locators:r.filter(s=>s.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,t){let r=t.project.originalPackages.get(e.locatorHash);if(!r)throw new Error("The lockfile resolver isn't meant to resolve packages - they should already have been stored into a cache");return r}};wB.LockfileResolver=ZS});var as=p(eF=>{"use strict";Object.defineProperty(eF,"__esModule",{value:!0});eF.default=Z3;function Z3(){}Z3.prototype={diff:function(e,t){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},i=r.callback;typeof r=="function"&&(i=r,r={}),this.options=r;var n=this;function s(w){return i?(setTimeout(function(){i(void 0,w)},0),!0):w}e=this.castInput(e),t=this.castInput(t),e=this.removeEmpty(this.tokenize(e)),t=this.removeEmpty(this.tokenize(t));var a=t.length,g=e.length,c=1,l=a+g;r.maxEditLength&&(l=Math.min(l,r.maxEditLength));var C=[{newPos:-1,components:[]}],f=this.extractCommon(C[0],t,e,0);if(C[0].newPos+1>=a&&f+1>=g)return s([{value:this.join(t),count:t.length}]);function E(){for(var w=-1*c;w<=c;w+=2){var D=void 0,L=C[w-1],K=C[w+1],_=(K?K.newPos:0)-w;L&&(C[w-1]=void 0);var le=L&&L.newPos+1=a&&_+1>=g)return s(rwe(n,D.components,t,e,n.useLongestToken));C[w]=D}c++}if(i)(function w(){setTimeout(function(){if(c>l)return i();E()||w()},0)})();else for(;c<=l;){var m=E();if(m)return m}},pushComponent:function(e,t,r){var i=e[e.length-1];i&&i.added===t&&i.removed===r?e[e.length-1]={count:i.count+1,added:t,removed:r}:e.push({count:1,added:t,removed:r})},extractCommon:function(e,t,r,i){for(var n=t.length,s=r.length,a=e.newPos,g=a-i,c=0;a+1E.length?w:E}),c.value=A.join(l)}else c.value=A.join(t.slice(a,a+c.count));a+=c.count,c.added||(g+=c.count)}}var f=e[s-1];return s>1&&typeof f.value=="string"&&(f.added||f.removed)&&A.equals("",f.value)&&(e[s-2].value+=f.value,e.pop()),e}function iwe(A){return{newPos:A.newPos,components:A.components.slice(0)}}});var e4=p(nC=>{"use strict";Object.defineProperty(nC,"__esModule",{value:!0});nC.diffChars=owe;nC.characterDiff=void 0;var nwe=swe(as());function swe(A){return A&&A.__esModule?A:{default:A}}var $3=new nwe.default;nC.characterDiff=$3;function owe(A,e,t){return $3.diff(A,e,t)}});var tF=p(AF=>{"use strict";Object.defineProperty(AF,"__esModule",{value:!0});AF.generateOptions=awe;function awe(A,e){if(typeof A=="function")e.callback=A;else if(A)for(var t in A)A.hasOwnProperty(t)&&(e[t]=A[t]);return e}});var r4=p(zc=>{"use strict";Object.defineProperty(zc,"__esModule",{value:!0});zc.diffWords=uwe;zc.diffWordsWithSpace=Cwe;zc.wordDiff=void 0;var gwe=lwe(as()),cwe=tF();function lwe(A){return A&&A.__esModule?A:{default:A}}var A4=/^[A-Za-z\xC0-\u02C6\u02C8-\u02D7\u02DE-\u02FF\u1E00-\u1EFF]+$/,t4=/\S/,sC=new gwe.default;zc.wordDiff=sC;sC.equals=function(A,e){return this.options.ignoreCase&&(A=A.toLowerCase(),e=e.toLowerCase()),A===e||this.options.ignoreWhitespace&&!t4.test(A)&&!t4.test(e)};sC.tokenize=function(A){for(var e=A.split(/([^\S\r\n]+|[()[\]{}'"\r\n]|\b)/),t=0;t{"use strict";Object.defineProperty(Vc,"__esModule",{value:!0});Vc.diffLines=Ewe;Vc.diffTrimmedLines=Bwe;Vc.lineDiff=void 0;var hwe=Iwe(as()),fwe=tF();function Iwe(A){return A&&A.__esModule?A:{default:A}}var DB=new hwe.default;Vc.lineDiff=DB;DB.tokenize=function(A){var e=[],t=A.split(/(\n|\r\n)/);t[t.length-1]||t.pop();for(var r=0;r{"use strict";Object.defineProperty(oC,"__esModule",{value:!0});oC.diffSentences=dwe;oC.sentenceDiff=void 0;var pwe=Qwe(as());function Qwe(A){return A&&A.__esModule?A:{default:A}}var rF=new pwe.default;oC.sentenceDiff=rF;rF.tokenize=function(A){return A.split(/(\S.+?[.!?])(?=\s+|$)/)};function dwe(A,e,t){return rF.diff(A,e,t)}});var n4=p(aC=>{"use strict";Object.defineProperty(aC,"__esModule",{value:!0});aC.diffCss=wwe;aC.cssDiff=void 0;var ywe=mwe(as());function mwe(A){return A&&A.__esModule?A:{default:A}}var iF=new ywe.default;aC.cssDiff=iF;iF.tokenize=function(A){return A.split(/([{}:;,]|\s+)/)};function wwe(A,e,t){return iF.diff(A,e,t)}});var o4=p(Xc=>{"use strict";Object.defineProperty(Xc,"__esModule",{value:!0});Xc.diffJson=xwe;Xc.canonicalize=xB;Xc.jsonDiff=void 0;var s4=Swe(as()),Dwe=SB();function Swe(A){return A&&A.__esModule?A:{default:A}}function FB(A){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?FB=function(t){return typeof t}:FB=function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},FB(A)}var Fwe=Object.prototype.toString,Pa=new s4.default;Xc.jsonDiff=Pa;Pa.useLongestToken=!0;Pa.tokenize=Dwe.lineDiff.tokenize;Pa.castInput=function(A){var e=this.options,t=e.undefinedReplacement,r=e.stringifyReplacer,i=r===void 0?function(n,s){return typeof s>"u"?t:s}:r;return typeof A=="string"?A:JSON.stringify(xB(A,null,null,i),i," ")};Pa.equals=function(A,e){return s4.default.prototype.equals.call(Pa,A.replace(/,([\r\n])/g,"$1"),e.replace(/,([\r\n])/g,"$1"))};function xwe(A,e,t){return Pa.diff(A,e,t)}function xB(A,e,t,r,i){e=e||[],t=t||[],r&&(A=r(i,A));var n;for(n=0;n{"use strict";Object.defineProperty(cC,"__esModule",{value:!0});cC.diffArrays=kwe;cC.arrayDiff=void 0;var Rwe=bwe(as());function bwe(A){return A&&A.__esModule?A:{default:A}}var gC=new Rwe.default;cC.arrayDiff=gC;gC.tokenize=function(A){return A.slice()};gC.join=gC.removeEmpty=function(A){return A};function kwe(A,e,t){return gC.diff(A,e,t)}});var RB=p(nF=>{"use strict";Object.defineProperty(nF,"__esModule",{value:!0});nF.parsePatch=vwe;function vwe(A){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},t=A.split(/\r\n|[\n\v\f\r\x85]/),r=A.match(/\r\n|[\n\v\f\r\x85]/g)||[],i=[],n=0;function s(){var c={};for(i.push(c);n"u"?1:+C[2],newStart:+C[3],newLines:typeof C[4]>"u"?1:+C[4],lines:[],linedelimiters:[]};f.oldLines===0&&(f.oldStart+=1),f.newLines===0&&(f.newStart+=1);for(var E=0,m=0;n{"use strict";Object.defineProperty(sF,"__esModule",{value:!0});sF.default=Nwe;function Nwe(A,e,t){var r=!0,i=!1,n=!1,s=1;return function a(){if(r&&!n){if(i?s++:r=!1,A+s<=t)return s;n=!0}if(!i)return n||(r=!0),e<=A-s?-s++:(i=!0,a())}}});var u4=p(bB=>{"use strict";Object.defineProperty(bB,"__esModule",{value:!0});bB.applyPatch=l4;bB.applyPatches=Pwe;var c4=RB(),Mwe=Lwe(g4());function Lwe(A){return A&&A.__esModule?A:{default:A}}function l4(A,e){var t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};if(typeof e=="string"&&(e=(0,c4.parsePatch)(e)),Array.isArray(e)){if(e.length>1)throw new Error("applyPatch only works with a single input.");e=e[0]}var r=A.split(/\r\n|[\n\v\f\r\x85]/),i=A.match(/\r\n|[\n\v\f\r\x85]/g)||[],n=e.hunks,s=t.compareLine||function(M,k,te,ae){return k===ae},a=0,g=t.fuzzFactor||0,c=0,l=0,C,f;function E(M,k){for(var te=0;te0?ae[0]:" ",pe=ae.length>0?ae.substr(1):ae;if(De===" "||De==="-"){if(!s(k+1,r[k],De,pe)&&(a++,a>g))return!1;k++}}return!0}for(var m=0;m0?G[0]:" ",o=G.length>0?G.substr(1):G,H=J.linedelimiters[ie];if(ee===" ")X++;else if(ee==="-")r.splice(X,1),i.splice(X,1);else if(ee==="+")r.splice(X,0,o),i.splice(X,0,H),X++;else if(ee==="\\"){var ne=J.lines[ie-1]?J.lines[ie-1][0]:null;ne==="+"?C=!0:ne==="-"&&(f=!0)}}}if(C)for(;!r[r.length-1];)r.pop(),i.pop();else f&&(r.push(""),i.push(` +`));for(var j=0;j{"use strict";Object.defineProperty(Zc,"__esModule",{value:!0});Zc.structuredPatch=C4;Zc.formatPatch=h4;Zc.createTwoFilesPatch=f4;Zc.createPatch=Gwe;var Owe=SB();function oF(A){return qwe(A)||Twe(A)||Uwe(A)||Kwe()}function Kwe(){throw new TypeError(`Invalid attempt to spread non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function Uwe(A,e){if(!!A){if(typeof A=="string")return aF(A,e);var t=Object.prototype.toString.call(A).slice(8,-1);if(t==="Object"&&A.constructor&&(t=A.constructor.name),t==="Map"||t==="Set")return Array.from(A);if(t==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return aF(A,e)}}function Twe(A){if(typeof Symbol<"u"&&Symbol.iterator in Object(A))return Array.from(A)}function qwe(A){if(Array.isArray(A))return aF(A)}function aF(A,e){(e==null||e>A.length)&&(e=A.length);for(var t=0,r=new Array(e);t"u"&&(s.context=4);var a=(0,Owe.diffLines)(t,r,s);if(!a)return;a.push({value:"",lines:[]});function g(L){return L.map(function(K){return" "+K})}for(var c=[],l=0,C=0,f=[],E=1,m=1,w=function(K){var _=a[K],le=_.lines||_.value.replace(/\n$/,"").split(` +`);if(_.lines=le,_.added||_.removed){var re;if(!l){var J=a[K-1];l=E,C=m,J&&(f=s.context>0?g(J.lines.slice(-s.context)):[],l-=f.length,C-=f.length)}(re=f).push.apply(re,oF(le.map(function(j){return(_.added?"+":"-")+j}))),_.added?m+=le.length:E+=le.length}else{if(l)if(le.length<=s.context*2&&K=a.length-2&&le.length<=s.context){var o=/\n$/.test(t),H=/\n$/.test(r),ne=le.length==0&&f.length>ee.oldLines;!o&&ne&&t.length>0&&f.splice(ee.oldLines,0,"\\ No newline at end of file"),(!o&&!ne||!H)&&f.push("\\ No newline at end of file")}c.push(ee),l=0,C=0,f=[]}E+=le.length,m+=le.length}},D=0;D"u"?"":" "+A.oldHeader)),e.push("+++ "+A.newFileName+(typeof A.newHeader>"u"?"":" "+A.newHeader));for(var t=0;t{"use strict";Object.defineProperty(kB,"__esModule",{value:!0});kB.arrayEqual=Ywe;kB.arrayStartsWith=I4;function Ywe(A,e){return A.length!==e.length?!1:I4(A,e)}function I4(A,e){if(e.length>A.length)return!1;for(var t=0;t{"use strict";Object.defineProperty(NB,"__esModule",{value:!0});NB.calcLineCount=F4;NB.merge=Vwe;var _we=gF(),Hwe=RB(),cF=E4();function $c(A){return zwe(A)||Wwe(A)||jwe(A)||Jwe()}function Jwe(){throw new TypeError(`Invalid attempt to spread non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function jwe(A,e){if(!!A){if(typeof A=="string")return lF(A,e);var t=Object.prototype.toString.call(A).slice(8,-1);if(t==="Object"&&A.constructor&&(t=A.constructor.name),t==="Map"||t==="Set")return Array.from(A);if(t==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return lF(A,e)}}function Wwe(A){if(typeof Symbol<"u"&&Symbol.iterator in Object(A))return Array.from(A)}function zwe(A){if(Array.isArray(A))return lF(A)}function lF(A,e){(e==null||e>A.length)&&(e=A.length);for(var t=0,r=new Array(e);t{"use strict";Object.defineProperty(hF,"__esModule",{value:!0});hF.convertChangesToDMP=eDe;function eDe(A){for(var e=[],t,r,i=0;i{"use strict";Object.defineProperty(fF,"__esModule",{value:!0});fF.convertChangesToXML=ADe;function ADe(A){for(var e=[],t=0;t"):r.removed&&e.push(""),e.push(tDe(r.value)),r.added?e.push(""):r.removed&&e.push("")}return e.join("")}function tDe(A){var e=A;return e=e.replace(/&/g,"&"),e=e.replace(//g,">"),e=e.replace(/"/g,"""),e}});var L4=p(rt=>{"use strict";Object.defineProperty(rt,"__esModule",{value:!0});Object.defineProperty(rt,"Diff",{enumerable:!0,get:function(){return rDe.default}});Object.defineProperty(rt,"diffChars",{enumerable:!0,get:function(){return iDe.diffChars}});Object.defineProperty(rt,"diffWords",{enumerable:!0,get:function(){return k4.diffWords}});Object.defineProperty(rt,"diffWordsWithSpace",{enumerable:!0,get:function(){return k4.diffWordsWithSpace}});Object.defineProperty(rt,"diffLines",{enumerable:!0,get:function(){return v4.diffLines}});Object.defineProperty(rt,"diffTrimmedLines",{enumerable:!0,get:function(){return v4.diffTrimmedLines}});Object.defineProperty(rt,"diffSentences",{enumerable:!0,get:function(){return nDe.diffSentences}});Object.defineProperty(rt,"diffCss",{enumerable:!0,get:function(){return sDe.diffCss}});Object.defineProperty(rt,"diffJson",{enumerable:!0,get:function(){return N4.diffJson}});Object.defineProperty(rt,"canonicalize",{enumerable:!0,get:function(){return N4.canonicalize}});Object.defineProperty(rt,"diffArrays",{enumerable:!0,get:function(){return oDe.diffArrays}});Object.defineProperty(rt,"applyPatch",{enumerable:!0,get:function(){return M4.applyPatch}});Object.defineProperty(rt,"applyPatches",{enumerable:!0,get:function(){return M4.applyPatches}});Object.defineProperty(rt,"parsePatch",{enumerable:!0,get:function(){return aDe.parsePatch}});Object.defineProperty(rt,"merge",{enumerable:!0,get:function(){return gDe.merge}});Object.defineProperty(rt,"structuredPatch",{enumerable:!0,get:function(){return IF.structuredPatch}});Object.defineProperty(rt,"createTwoFilesPatch",{enumerable:!0,get:function(){return IF.createTwoFilesPatch}});Object.defineProperty(rt,"createPatch",{enumerable:!0,get:function(){return IF.createPatch}});Object.defineProperty(rt,"convertChangesToDMP",{enumerable:!0,get:function(){return cDe.convertChangesToDMP}});Object.defineProperty(rt,"convertChangesToXML",{enumerable:!0,get:function(){return lDe.convertChangesToXML}});var rDe=uDe(as()),iDe=e4(),k4=r4(),v4=SB(),nDe=i4(),sDe=n4(),N4=o4(),oDe=a4(),M4=u4(),aDe=RB(),gDe=x4(),IF=gF(),cDe=R4(),lDe=b4();function uDe(A){return A&&A.__esModule?A:{default:A}}});var O4=p((TPe,P4)=>{var CDe=An(),hDe=Bu(),fDe=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,IDe=/^\w*$/;function EDe(A,e){if(CDe(A))return!1;var t=typeof A;return t=="number"||t=="symbol"||t=="boolean"||A==null||hDe(A)?!0:IDe.test(A)||!fDe.test(A)||e!=null&&A in Object(e)}P4.exports=EDe});var T4=p((qPe,U4)=>{var K4=cf(),BDe="Expected a function";function EF(A,e){if(typeof A!="function"||e!=null&&typeof e!="function")throw new TypeError(BDe);var t=function(){var r=arguments,i=e?e.apply(this,r):r[0],n=t.cache;if(n.has(i))return n.get(i);var s=A.apply(this,r);return t.cache=n.set(i,s)||n,s};return t.cache=new(EF.Cache||K4),t}EF.Cache=K4;U4.exports=EF});var G4=p((GPe,q4)=>{var pDe=T4(),QDe=500;function dDe(A){var e=pDe(A,function(r){return t.size===QDe&&t.clear(),r}),t=e.cache;return e}q4.exports=dDe});var _4=p((YPe,Y4)=>{var yDe=G4(),mDe=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,wDe=/\\(\\)?/g,DDe=yDe(function(A){var e=[];return A.charCodeAt(0)===46&&e.push(""),A.replace(mDe,function(t,r,i,n){e.push(i?n.replace(wDe,"$1"):r||t)}),e});Y4.exports=DDe});var lC=p((_Pe,H4)=>{var SDe=An(),FDe=O4(),xDe=_4(),RDe=aE();function bDe(A,e){return SDe(A)?A:FDe(A,e)?[A]:xDe(RDe(A))}H4.exports=bDe});var MB=p((HPe,J4)=>{var kDe=Bu(),vDe=1/0;function NDe(A){if(typeof A=="string"||kDe(A))return A;var e=A+"";return e=="0"&&1/A==-vDe?"-0":e}J4.exports=NDe});var W4=p((JPe,j4)=>{var MDe=lC(),LDe=MB();function PDe(A,e){e=MDe(e,A);for(var t=0,r=e.length;A!=null&&t{var ODe=Ay(),KDe=lC(),UDe=ou(),z4=ei(),TDe=MB();function qDe(A,e,t,r){if(!z4(A))return A;e=KDe(e,A);for(var i=-1,n=e.length,s=n-1,a=A;a!=null&&++i{var GDe=W4(),YDe=X4(),_De=lC();function HDe(A,e,t){for(var r=-1,i=e.length,n={};++r{function JDe(A,e){return A!=null&&e in Object(A)}eW.exports=JDe});var rW=p((VPe,tW)=>{var jDe=lC(),WDe=nu(),zDe=An(),VDe=ou(),XDe=Cf(),ZDe=MB();function $De(A,e,t){e=jDe(e,A);for(var r=-1,i=e.length,n=!1;++r{var eSe=AW(),ASe=rW();function tSe(A,e){return A!=null&&ASe(A,e,eSe)}iW.exports=tSe});var oW=p((ZPe,sW)=>{var rSe=$4(),iSe=nW();function nSe(A,e){return rSe(A,e,function(t,r){return iSe(A,r)})}sW.exports=nSe});var lW=p(($Pe,cW)=>{var aW=Gg(),sSe=nu(),oSe=An(),gW=aW?aW.isConcatSpreadable:void 0;function aSe(A){return oSe(A)||sSe(A)||!!(gW&&A&&A[gW])}cW.exports=aSe});var hW=p((eOe,CW)=>{var gSe=qd(),cSe=lW();function uW(A,e,t,r,i){var n=-1,s=A.length;for(t||(t=cSe),i||(i=[]);++n0&&t(a)?e>1?uW(a,e-1,t,r,i):gSe(i,a):r||(i[i.length]=a)}return i}CW.exports=uW});var IW=p((AOe,fW)=>{var lSe=hW();function uSe(A){var e=A==null?0:A.length;return e?lSe(A,1):[]}fW.exports=uSe});var BW=p((tOe,EW)=>{var CSe=IW(),hSe=iy(),fSe=ny();function ISe(A){return fSe(hSe(A,void 0,CSe),A+"")}EW.exports=ISe});var QW=p((rOe,pW)=>{var ESe=oW(),BSe=BW(),pSe=BSe(function(A,e){return A==null?{}:ESe(A,e)});pW.exports=pSe});var dW=p(LB=>{"use strict";Object.defineProperty(LB,"__esModule",{value:!0});LB.RunInstallPleaseResolver=void 0;var BF=ar(),pF=ii(),QF=class{constructor(e){this.resolver=e}supportsDescriptor(e,t){return this.resolver.supportsDescriptor(e,t)}supportsLocator(e,t){return this.resolver.supportsLocator(e,t)}shouldPersistResolution(e,t){return this.resolver.shouldPersistResolution(e,t)}bindDescriptor(e,t,r){return this.resolver.bindDescriptor(e,t,r)}getResolutionDependencies(e,t){return this.resolver.getResolutionDependencies(e,t)}async getCandidates(e,t,r){throw new pF.ReportError(BF.MessageName.MISSING_LOCKFILE_ENTRY,`This package doesn't seem to be present in your lockfile; run "yarn install" to update the lockfile`)}async getSatisfying(e,t,r,i){throw new pF.ReportError(BF.MessageName.MISSING_LOCKFILE_ENTRY,`This package doesn't seem to be present in your lockfile; run "yarn install" to update the lockfile`)}async resolve(e,t){throw new pF.ReportError(BF.MessageName.MISSING_LOCKFILE_ENTRY,`This package doesn't seem to be present in your lockfile; run "yarn install" to update the lockfile`)}};LB.RunInstallPleaseResolver=QF});var yF=p(PB=>{"use strict";Object.defineProperty(PB,"__esModule",{value:!0});PB.ThrowReport=void 0;var QSe=ii(),dF=class extends QSe.Report{reportCacheHit(e){}reportCacheMiss(e){}startSectionSync(e,t){return t()}async startSectionPromise(e,t){return await t()}startTimerSync(e,t,r){return(typeof t=="function"?t:r)()}async startTimerPromise(e,t,r){return await(typeof t=="function"?t:r)()}async startCacheReport(e){return await e()}reportSeparator(){}reportInfo(e,t){}reportWarning(e,t){}reportError(e,t){}reportProgress(e){return{...Promise.resolve().then(async()=>{for await(let{}of e);}),stop:()=>{}}}reportJson(e){}async finalize(){}};PB.ThrowReport=dF});var wF=p(OB=>{"use strict";Object.defineProperty(OB,"__esModule",{value:!0});OB.Workspace=void 0;var hC=nA(),Kr=BA(),dSe=hC.__importDefault(G0()),uC=gc(),CC=Ca(),yW=hC.__importStar(ti()),ySe=hC.__importStar(Us()),mSe=hC.__importStar(qs()),el=hC.__importStar(Dt()),mF=class{constructor(e,{project:t}){this.workspacesCwds=new Set,this.project=t,this.cwd=e}async setup(){var e;this.manifest=(e=await uC.Manifest.tryFind(this.cwd))!==null&&e!==void 0?e:new uC.Manifest,this.relativeCwd=Kr.ppath.relative(this.project.cwd,this.cwd)||Kr.PortablePath.dot;let t=this.manifest.name?this.manifest.name:el.makeIdent(null,`${this.computeCandidateName()}-${ySe.makeHash(this.relativeCwd).substring(0,6)}`),r=this.manifest.version?this.manifest.version:"0.0.0";this.locator=el.makeLocator(t,r),this.anchoredDescriptor=el.makeDescriptor(this.locator,`${CC.WorkspaceResolver.protocol}${this.relativeCwd}`),this.anchoredLocator=el.makeLocator(this.locator,`${CC.WorkspaceResolver.protocol}${this.relativeCwd}`);let i=this.manifest.workspaceDefinitions.map(({pattern:s})=>s),n=await(0,dSe.default)(i,{cwd:Kr.npath.fromPortablePath(this.cwd),expandDirectories:!1,onlyDirectories:!0,onlyFiles:!1,ignore:["**/node_modules","**/.git","**/.yarn"]});n.sort();for(let s of n){let a=Kr.ppath.resolve(this.cwd,Kr.npath.toPortablePath(s));Kr.xfs.existsSync(Kr.ppath.join(a,"package.json"))&&this.workspacesCwds.add(a)}}get anchoredPackage(){let e=this.project.storedPackages.get(this.anchoredLocator.locatorHash);if(!e)throw new Error(`Assertion failed: Expected workspace ${el.prettyWorkspace(this.project.configuration,this)} (${yW.pretty(this.project.configuration,Kr.ppath.join(this.cwd,Kr.Filename.manifest),yW.Type.PATH)}) to have been resolved. Run "yarn install" to update the lockfile`);return e}accepts(e){var t;let r=e.indexOf(":"),i=r!==-1?e.slice(0,r+1):null,n=r!==-1?e.slice(r+1):e;if(i===CC.WorkspaceResolver.protocol&&Kr.ppath.normalize(n)===this.relativeCwd||i===CC.WorkspaceResolver.protocol&&(n==="*"||n==="^"||n==="~"))return!0;let s=mSe.validRange(n);return s?i===CC.WorkspaceResolver.protocol?s.test((t=this.manifest.version)!==null&&t!==void 0?t:"0.0.0"):this.project.configuration.get("enableTransparentWorkspaces")&&this.manifest.version!==null?s.test(this.manifest.version):!1:!1}computeCandidateName(){return this.cwd===this.project.cwd?"root-workspace":`${Kr.ppath.basename(this.cwd)}`||"unnamed-workspace"}getRecursiveWorkspaceDependencies({dependencies:e=uC.Manifest.hardDependencies}={}){let t=new Set,r=i=>{for(let n of e)for(let s of i.manifest[n].values()){let a=this.project.tryWorkspaceByDescriptor(s);a===null||t.has(a)||(t.add(a),r(a))}};return r(this),t}getRecursiveWorkspaceDependents({dependencies:e=uC.Manifest.hardDependencies}={}){let t=new Set,r=i=>{for(let n of this.project.workspaces)e.some(a=>[...n.manifest[a].values()].some(g=>{let c=this.project.tryWorkspaceByDescriptor(g);return c!==null&&el.areLocatorsEqual(c.anchoredLocator,i.anchoredLocator)}))&&!t.has(n)&&(t.add(n),r(n))};return r(this),t}getRecursiveWorkspaceChildren(){let e=[];for(let t of this.workspacesCwds){let r=this.project.workspacesByCwd.get(t);r&&e.push(r,...r.getRecursiveWorkspaceChildren())}return e}async persistManifest(){let e={};this.manifest.exportTo(e);let t=Kr.ppath.join(this.cwd,uC.Manifest.fileName),r=`${JSON.stringify(e,null,this.manifest.indent)} +`;await Kr.xfs.changeFilePromise(t,r,{automaticNewlines:!0}),this.manifest.raw=e}};OB.Workspace=mF});var PW=p(Ua=>{"use strict";Object.defineProperty(Ua,"__esModule",{value:!0});Ua.Project=Ua.InstallMode=void 0;var Ii=nA(),xF=BA(),IA=BA(),mW=wg(),wW=Fg(),DF=require("crypto"),wSe=L4(),SF=Ii.__importDefault(QW()),DSe=Ii.__importDefault(xg()),SSe=Ii.__importDefault(Zo()),MW=require("util"),DW=Ii.__importDefault(require("v8")),LW=Ii.__importDefault(require("zlib")),fC=Nu(),IC=jS(),FSe=VS(),xSe=$S(),SW=gc(),ZA=ar(),FW=tm(),fo=ii(),RSe=dW(),xW=yF(),RW=Ca(),bSe=wF(),kSe=EI(),QA=Ii.__importStar(ti()),Ka=Ii.__importStar(Us()),Ct=Ii.__importStar(br()),vSe=Ii.__importStar(zI()),bW=Ii.__importStar(oD()),NSe=Ii.__importStar(qs()),xe=Ii.__importStar(Dt()),MSe=ia(),KB=ia(),kW=7,LSe=2,PSe=/ *, */g,vW=/\/$/,OSe=32,KSe=(0,MW.promisify)(LW.default.gzip),USe=(0,MW.promisify)(LW.default.gunzip),EC;(function(A){A.UpdateLockfile="update-lockfile",A.SkipBuild="skip-build"})(EC=Ua.InstallMode||(Ua.InstallMode={}));var FF={restoreLinkersCustomData:["linkersCustomData"],restoreResolutions:["accessibleLocators","conditionalLocators","disabledLocators","optionalBuilds","storedDescriptors","storedResolutions","storedPackages","lockFileChecksum"],restoreBuildState:["storedBuildState"]},NW=A=>Ka.makeHash(`${LSe}`,A),BC=class{static async find(e,t){var r,i,n;if(!e.projectCwd)throw new wW.UsageError(`No project found in ${t}`);let s=e.projectCwd,a=t,g=null;for(;g!==e.projectCwd;){if(g=a,IA.xfs.existsSync(IA.ppath.join(g,IA.Filename.manifest))){s=g;break}a=IA.ppath.dirname(g)}let c=new BC(e.projectCwd,{configuration:e});(r=fC.Configuration.telemetry)===null||r===void 0||r.reportProject(c.cwd),await c.setupResolutions(),await c.setupWorkspaces(),(i=fC.Configuration.telemetry)===null||i===void 0||i.reportWorkspaceCount(c.workspaces.length),(n=fC.Configuration.telemetry)===null||n===void 0||n.reportDependencyCount(c.workspaces.reduce((L,K)=>L+K.manifest.dependencies.size+K.manifest.devDependencies.size,0));let l=c.tryWorkspaceByCwd(s);if(l)return{project:c,workspace:l,locator:l.anchoredLocator};let C=await c.findLocatorForLocation(`${s}/`,{strict:!0});if(C)return{project:c,locator:C,workspace:null};let f=QA.pretty(e,c.cwd,QA.Type.PATH),E=QA.pretty(e,IA.ppath.relative(c.cwd,s),QA.Type.PATH),m=`- If ${f} isn't intended to be a project, remove any yarn.lock and/or package.json file there.`,w=`- If ${f} is intended to be a project, it might be that you forgot to list ${E} in its workspace configuration.`,D=`- Finally, if ${f} is fine and you intend ${E} to be treated as a completely separate project (not even a workspace), create an empty yarn.lock file in it.`;throw new wW.UsageError(`The nearest package directory (${QA.pretty(e,s,QA.Type.PATH)}) doesn't seem to be part of the project declared in ${QA.pretty(e,c.cwd,QA.Type.PATH)}. + +${[m,w,D].join(` +`)}`)}constructor(e,{configuration:t}){this.resolutionAliases=new Map,this.workspaces=[],this.workspacesByCwd=new Map,this.workspacesByIdent=new Map,this.storedResolutions=new Map,this.storedDescriptors=new Map,this.storedPackages=new Map,this.storedChecksums=new Map,this.storedBuildState=new Map,this.accessibleLocators=new Set,this.conditionalLocators=new Set,this.disabledLocators=new Set,this.originalPackages=new Map,this.optionalBuilds=new Set,this.lockfileNeedsRefresh=!1,this.peerRequirements=new Map,this.linkersCustomData=new Map,this.lockFileChecksum=null,this.installStateChecksum=null,this.configuration=t,this.cwd=e}async setupResolutions(){var e;this.storedResolutions=new Map,this.storedDescriptors=new Map,this.storedPackages=new Map,this.lockFileChecksum=null;let t=IA.ppath.join(this.cwd,this.configuration.get("lockfileFilename")),r=this.configuration.get("defaultLanguageName");if(IA.xfs.existsSync(t)){let i=await IA.xfs.readFilePromise(t,"utf8");this.lockFileChecksum=NW(i);let n=(0,mW.parseSyml)(i);if(n.__metadata){let s=n.__metadata.version,a=n.__metadata.cacheKey;this.lockfileNeedsRefresh=s"u")throw new Error(`Assertion failed: Expected the lockfile entry to have a resolution field (${g})`);let l=xe.parseLocator(c.resolution,!0),C=new SW.Manifest;C.load(c,{yamlCompatibilityMode:!0});let f=C.version,E=C.languageName||r,m=c.linkType.toUpperCase(),w=(e=c.conditions)!==null&&e!==void 0?e:null,D=C.dependencies,L=C.peerDependencies,K=C.dependenciesMeta,_=C.peerDependenciesMeta,le=C.bin;if(c.checksum!=null){let J=typeof a<"u"&&!c.checksum.includes("/")?`${a}/${c.checksum}`:c.checksum;this.storedChecksums.set(l.locatorHash,J)}let re={...l,version:f,languageName:E,linkType:m,conditions:w,dependencies:D,peerDependencies:L,dependenciesMeta:K,peerDependenciesMeta:_,bin:le};this.originalPackages.set(re.locatorHash,re);for(let J of g.split(PSe)){let X=xe.parseDescriptor(J);s<=6&&(X=this.configuration.normalizeDependency(X),X=xe.makeDescriptor(X,X.range.replace(/^patch:[^@]+@(?!npm(:|%3A))/,"$1npm%3A"))),this.storedDescriptors.set(X.descriptorHash,X),this.storedResolutions.set(X.descriptorHash,l.locatorHash)}}}}}async setupWorkspaces(){this.workspaces=[],this.workspacesByCwd=new Map,this.workspacesByIdent=new Map;let e=[this.cwd];for(;e.length>0;){let t=e;e=[];for(let r of t){if(this.workspacesByCwd.has(r))continue;let i=await this.addWorkspace(r);for(let n of i.workspacesCwds)e.push(n)}}}async addWorkspace(e){let t=new bSe.Workspace(e,{project:this});await t.setup();let r=this.workspacesByIdent.get(t.locator.identHash);if(typeof r<"u")throw new Error(`Duplicate workspace name ${xe.prettyIdent(this.configuration,t.locator)}: ${xF.npath.fromPortablePath(e)} conflicts with ${xF.npath.fromPortablePath(r.cwd)}`);return this.workspaces.push(t),this.workspacesByCwd.set(e,t),this.workspacesByIdent.set(t.locator.identHash,t),t}get topLevelWorkspace(){return this.getWorkspaceByCwd(this.cwd)}tryWorkspaceByCwd(e){IA.ppath.isAbsolute(e)||(e=IA.ppath.resolve(this.cwd,e)),e=IA.ppath.normalize(e).replace(/\/+$/,"");let t=this.workspacesByCwd.get(e);return t||null}getWorkspaceByCwd(e){let t=this.tryWorkspaceByCwd(e);if(!t)throw new Error(`Workspace not found (${e})`);return t}tryWorkspaceByFilePath(e){let t=null;for(let r of this.workspaces)IA.ppath.relative(r.cwd,e).startsWith("../")||t&&t.cwd.length>=r.cwd.length||(t=r);return t||null}getWorkspaceByFilePath(e){let t=this.tryWorkspaceByFilePath(e);if(!t)throw new Error(`Workspace not found (${e})`);return t}tryWorkspaceByIdent(e){let t=this.workspacesByIdent.get(e.identHash);return typeof t>"u"?null:t}getWorkspaceByIdent(e){let t=this.tryWorkspaceByIdent(e);if(!t)throw new Error(`Workspace not found (${xe.prettyIdent(this.configuration,e)})`);return t}tryWorkspaceByDescriptor(e){let t=this.tryWorkspaceByIdent(e);return t===null||(xe.isVirtualDescriptor(e)&&(e=xe.devirtualizeDescriptor(e)),!t.accepts(e.range))?null:t}getWorkspaceByDescriptor(e){let t=this.tryWorkspaceByDescriptor(e);if(t===null)throw new Error(`Workspace not found (${xe.prettyDescriptor(this.configuration,e)})`);return t}tryWorkspaceByLocator(e){let t=this.tryWorkspaceByIdent(e);return t===null||(xe.isVirtualLocator(e)&&(e=xe.devirtualizeLocator(e)),t.locator.locatorHash!==e.locatorHash&&t.anchoredLocator.locatorHash!==e.locatorHash)?null:t}getWorkspaceByLocator(e){let t=this.tryWorkspaceByLocator(e);if(!t)throw new Error(`Workspace not found (${xe.prettyLocator(this.configuration,e)})`);return t}forgetResolution(e){let t=i=>{this.storedResolutions.delete(i),this.storedDescriptors.delete(i)},r=i=>{this.originalPackages.delete(i),this.storedPackages.delete(i),this.accessibleLocators.delete(i)};if("descriptorHash"in e){let i=this.storedResolutions.get(e.descriptorHash);t(e.descriptorHash);let n=new Set(this.storedResolutions.values());typeof i<"u"&&!n.has(i)&&r(i)}if("locatorHash"in e){r(e.locatorHash);for(let[i,n]of this.storedResolutions)n===e.locatorHash&&t(i)}}forgetTransientResolutions(){let e=this.configuration.makeResolver();for(let t of this.originalPackages.values()){let r;try{r=e.shouldPersistResolution(t,{project:this,resolver:e})}catch{r=!1}r||this.forgetResolution(t)}}forgetVirtualResolutions(){for(let e of this.storedPackages.values())for(let[t,r]of e.dependencies)xe.isVirtualDescriptor(r)&&e.dependencies.set(t,xe.devirtualizeDescriptor(r))}getDependencyMeta(e,t){let r={},n=this.topLevelWorkspace.manifest.dependenciesMeta.get(xe.stringifyIdent(e));if(!n)return r;let s=n.get(null);if(s&&Object.assign(r,s),t===null||!SSe.default.valid(t))return r;for(let[a,g]of n)a!==null&&a===t&&Object.assign(r,g);return r}async findLocatorForLocation(e,{strict:t=!1}={}){let r=new xW.ThrowReport,i=this.configuration.getLinkers(),n={project:this,report:r};for(let s of i){let a=await s.findPackageLocator(e,n);if(a){if(t&&(await s.findPackageLocation(a,n)).replace(vW,"")!==e.replace(vW,""))continue;return a}}return null}async preparePackage(e,{resolver:t,resolveOptions:r}){let i=this.configuration.normalizePackage(e);for(let[n,s]of i.dependencies){let a=await this.configuration.reduceHook(c=>c.reduceDependency,s,this,i,s,{resolver:t,resolveOptions:r});if(!xe.areIdentsEqual(s,a))throw new Error("Assertion failed: The descriptor ident cannot be changed through aliases");let g=t.bindDescriptor(a,i,r);i.dependencies.set(n,g)}return i}async resolveEverything(e){if(!this.workspacesByCwd||!this.workspacesByIdent)throw new Error("Workspaces must have been setup before calling this function");this.forgetVirtualResolutions(),e.lockfileOnly||this.forgetTransientResolutions();let t=e.resolver||this.configuration.makeResolver(),r=new FSe.LegacyMigrationResolver(t);await r.setup(this,{report:e.report});let i=e.lockfileOnly?[new RSe.RunInstallPleaseResolver(t)]:[r,t],n=new FW.MultiResolver([new xSe.LockfileResolver(t),...i]),s=new FW.MultiResolver([...i]),a=this.configuration.makeFetcher(),g=e.lockfileOnly?{project:this,report:e.report,resolver:n}:{project:this,report:e.report,resolver:n,fetchOptions:{project:this,cache:e.cache,checksums:this.storedChecksums,report:e.report,fetcher:a,cacheOptions:{mirrorWriteOnly:!0}}},c=new Map,l=new Map,C=new Map,f=new Map,E=new Map,m=new Map,w=this.topLevelWorkspace.anchoredLocator,D=new Set,L=[],K=vSe.getArchitectureSet(),_=this.configuration.getSupportedArchitectures();await e.report.startProgressPromise(fo.Report.progressViaTitle(),async ee=>{let o=async k=>{let te=await Ct.prettifyAsyncErrors(async()=>await n.resolve(k,g),pe=>`${xe.prettyLocator(this.configuration,k)}: ${pe}`);if(!xe.areLocatorsEqual(k,te))throw new Error(`Assertion failed: The locator cannot be changed by the resolver (went from ${xe.prettyLocator(this.configuration,k)} to ${xe.prettyLocator(this.configuration,te)})`);f.set(te.locatorHash,te);let ae=await this.preparePackage(te,{resolver:n,resolveOptions:g}),De=Ct.allSettledSafe([...ae.dependencies.values()].map(pe=>M(pe)));return L.push(De),De.catch(()=>{}),l.set(ae.locatorHash,ae),ae},H=async k=>{let te=E.get(k.locatorHash);if(typeof te<"u")return te;let ae=Promise.resolve().then(()=>o(k));return E.set(k.locatorHash,ae),ae},ne=async(k,te)=>{let ae=await M(te);return c.set(k.descriptorHash,k),C.set(k.descriptorHash,ae.locatorHash),ae},j=async k=>{ee.setTitle(xe.prettyDescriptor(this.configuration,k));let te=this.resolutionAliases.get(k.descriptorHash);if(typeof te<"u")return ne(k,this.storedDescriptors.get(te));let ae=n.getResolutionDependencies(k,g),De=Object.fromEntries(await Ct.allSettledSafe(Object.entries(ae).map(async([be,Ye])=>{let Ve=n.bindDescriptor(Ye,w,g),iA=await M(Ve);return D.add(iA.locatorHash),[be,iA]}))),me=(await Ct.prettifyAsyncErrors(async()=>await n.getCandidates(k,De,g),be=>`${xe.prettyDescriptor(this.configuration,k)}: ${be}`))[0];if(typeof me>"u")throw new fo.ReportError(ZA.MessageName.RESOLUTION_FAILED,`${xe.prettyDescriptor(this.configuration,k)}: No candidates found`);if(e.checkResolutions){let{locators:be}=await s.getSatisfying(k,De,[me],{...g,resolver:s});if(!be.find(Ye=>Ye.locatorHash===me.locatorHash))throw new fo.ReportError(ZA.MessageName.RESOLUTION_MISMATCH,`Invalid resolution ${xe.prettyResolution(this.configuration,k,me)}`)}return c.set(k.descriptorHash,k),C.set(k.descriptorHash,me.locatorHash),H(me)},M=k=>{let te=m.get(k.descriptorHash);if(typeof te<"u")return te;c.set(k.descriptorHash,k);let ae=Promise.resolve().then(()=>j(k));return m.set(k.descriptorHash,ae),ae};for(let k of this.workspaces){let te=k.anchoredDescriptor;L.push(M(te))}for(;L.length>0;){let k=[...L];L.length=0,await Ct.allSettledSafe(k)}});let le=new Set(this.resolutionAliases.values()),re=new Set(l.keys()),J=new Set,X=new Map;TSe({project:this,report:e.report,accessibleLocators:J,volatileDescriptors:le,optionalBuilds:re,peerRequirements:X,allDescriptors:c,allResolutions:C,allPackages:l});for(let ee of D)re.delete(ee);for(let ee of le)c.delete(ee),C.delete(ee);let ie=new Set,G=new Set;for(let ee of l.values())ee.conditions!=null&&(!re.has(ee.locatorHash)||(xe.isPackageCompatible(ee,_)||(xe.isPackageCompatible(ee,K)&&e.report.reportWarningOnce(ZA.MessageName.GHOST_ARCHITECTURE,`${xe.prettyLocator(this.configuration,ee)}: Your current architecture (${process.platform}-${process.arch}) is supported by this package, but is missing from the ${QA.pretty(this.configuration,"supportedArchitectures",QA.Type.SETTING)} setting`),G.add(ee.locatorHash)),ie.add(ee.locatorHash)));this.storedResolutions=C,this.storedDescriptors=c,this.storedPackages=l,this.accessibleLocators=J,this.conditionalLocators=ie,this.disabledLocators=G,this.originalPackages=f,this.optionalBuilds=re,this.peerRequirements=X}async fetchEverything({cache:e,report:t,fetcher:r,mode:i}){let n={mockedPackages:this.disabledLocators,unstablePackages:this.conditionalLocators},s=r||this.configuration.makeFetcher(),a={checksums:this.storedChecksums,project:this,cache:e,fetcher:s,report:t,cacheOptions:n},g=Array.from(new Set(Ct.sortMap(this.storedResolutions.values(),[f=>{let E=this.storedPackages.get(f);if(!E)throw new Error("Assertion failed: The locator should have been registered");return xe.stringifyLocator(E)}])));i===EC.UpdateLockfile&&(g=g.filter(f=>!this.storedChecksums.has(f)));let c=!1,l=fo.Report.progressViaCounter(g.length);await t.reportProgress(l);let C=(0,DSe.default)(OSe);if(await t.startCacheReport(async()=>{await Ct.allSettledSafe(g.map(f=>C(async()=>{let E=this.storedPackages.get(f);if(!E)throw new Error("Assertion failed: The locator should have been registered");if(xe.isVirtualLocator(E))return;let m;try{m=await s.fetch(E,a)}catch(w){w.message=`${xe.prettyLocator(this.configuration,E)}: ${w.message}`,t.reportExceptionOnce(w),c=w;return}m.checksum!=null?this.storedChecksums.set(E.locatorHash,m.checksum):this.storedChecksums.delete(E.locatorHash),m.releaseFs&&m.releaseFs()}).finally(()=>{l.tick()})))}),c)throw c}async linkEverything({cache:e,report:t,fetcher:r,mode:i}){var n,s,a;let g={mockedPackages:this.disabledLocators,unstablePackages:this.conditionalLocators,skipIntegrityCheck:!0},c=r||this.configuration.makeFetcher(),l={checksums:this.storedChecksums,project:this,cache:e,fetcher:c,report:t,cacheOptions:g},C=this.configuration.getLinkers(),f={project:this,report:t},E=new Map(C.map(j=>{let M=j.makeInstaller(f),k=j.getCustomDataKey(),te=this.linkersCustomData.get(k);return typeof te<"u"&&M.attachCustomData(te),[j,M]})),m=new Map,w=new Map,D=new Map,L=new Map(await Ct.allSettledSafe([...this.accessibleLocators].map(async j=>{let M=this.storedPackages.get(j);if(!M)throw new Error("Assertion failed: The locator should have been registered");return[j,await c.fetch(M,l)]}))),K=[];for(let j of this.accessibleLocators){let M=this.storedPackages.get(j);if(typeof M>"u")throw new Error("Assertion failed: The locator should have been registered");let k=L.get(M.locatorHash);if(typeof k>"u")throw new Error("Assertion failed: The fetch result should have been registered");let te=[],ae=pe=>{te.push(pe)},De=this.tryWorkspaceByLocator(M);if(De!==null){let pe=[],{scripts:me}=De.manifest;for(let Ye of["preinstall","install","postinstall"])me.has(Ye)&&pe.push([IC.BuildType.SCRIPT,Ye]);try{for(let[Ye,Ve]of E)if(Ye.supportsPackage(M,f)&&(await Ve.installPackage(M,k,{holdFetchResult:ae})).buildDirective!==null)throw new Error("Assertion failed: Linkers can't return build directives for workspaces; this responsibility befalls to the Yarn core")}finally{te.length===0?(n=k.releaseFs)===null||n===void 0||n.call(k):K.push(Ct.allSettledSafe(te).catch(()=>{}).then(()=>{var Ye;(Ye=k.releaseFs)===null||Ye===void 0||Ye.call(k)}))}let be=IA.ppath.join(k.packageFs.getRealPath(),k.prefixPath);w.set(M.locatorHash,be),!xe.isVirtualLocator(M)&&pe.length>0&&D.set(M.locatorHash,{directives:pe,buildLocations:[be]})}else{let pe=C.find(Ye=>Ye.supportsPackage(M,f));if(!pe)throw new fo.ReportError(ZA.MessageName.LINKER_NOT_FOUND,`${xe.prettyLocator(this.configuration,M)} isn't supported by any available linker`);let me=E.get(pe);if(!me)throw new Error("Assertion failed: The installer should have been registered");let be;try{be=await me.installPackage(M,k,{holdFetchResult:ae})}finally{te.length===0?(s=k.releaseFs)===null||s===void 0||s.call(k):K.push(Ct.allSettledSafe(te).then(()=>{}).then(()=>{var Ye;(Ye=k.releaseFs)===null||Ye===void 0||Ye.call(k)}))}m.set(M.locatorHash,pe),w.set(M.locatorHash,be.packageLocation),be.buildDirective&&be.buildDirective.length>0&&be.packageLocation&&D.set(M.locatorHash,{directives:be.buildDirective,buildLocations:[be.packageLocation]})}}let _=new Map;for(let j of this.accessibleLocators){let M=this.storedPackages.get(j);if(!M)throw new Error("Assertion failed: The locator should have been registered");let k=this.tryWorkspaceByLocator(M)!==null,te=async(ae,De)=>{let pe=w.get(M.locatorHash);if(typeof pe>"u")throw new Error(`Assertion failed: The package (${xe.prettyLocator(this.configuration,M)}) should have been registered`);let me=[];for(let be of M.dependencies.values()){let Ye=this.storedResolutions.get(be.descriptorHash);if(typeof Ye>"u")throw new Error(`Assertion failed: The resolution (${xe.prettyDescriptor(this.configuration,be)}, from ${xe.prettyLocator(this.configuration,M)})should have been registered`);let Ve=this.storedPackages.get(Ye);if(typeof Ve>"u")throw new Error(`Assertion failed: The package (${Ye}, resolved from ${xe.prettyDescriptor(this.configuration,be)}) should have been registered`);let iA=this.tryWorkspaceByLocator(Ve)===null?m.get(Ye):null;if(typeof iA>"u")throw new Error(`Assertion failed: The package (${Ye}, resolved from ${xe.prettyDescriptor(this.configuration,be)}) should have been registered`);iA===ae||iA===null?w.get(Ve.locatorHash)!==null&&me.push([be,Ve]):!k&&pe!==null&&Ct.getArrayWithDefault(_,Ye).push(pe)}pe!==null&&await De.attachInternalDependencies(M,me)};if(k)for(let[ae,De]of E)ae.supportsPackage(M,f)&&await te(ae,De);else{let ae=m.get(M.locatorHash);if(!ae)throw new Error("Assertion failed: The linker should have been found");let De=E.get(ae);if(!De)throw new Error("Assertion failed: The installer should have been registered");await te(ae,De)}}for(let[j,M]of _){let k=this.storedPackages.get(j);if(!k)throw new Error("Assertion failed: The package should have been registered");let te=m.get(k.locatorHash);if(!te)throw new Error("Assertion failed: The linker should have been found");let ae=E.get(te);if(!ae)throw new Error("Assertion failed: The installer should have been registered");await ae.attachExternalDependents(k,M)}let le=new Map;for(let[j,M]of E){let k=await M.finalizeInstall();for(let te of(a=k?.records)!==null&&a!==void 0?a:[])D.set(te.locatorHash,{directives:te.buildDirective,buildLocations:te.buildLocations});typeof k?.customData<"u"&&le.set(j.getCustomDataKey(),k.customData)}if(this.linkersCustomData=le,await Ct.allSettledSafe(K),i===EC.SkipBuild)return;let re=new Set(this.storedPackages.keys()),J=new Set(D.keys());for(let j of J)re.delete(j);let X=(0,DF.createHash)("sha512");X.update(process.versions.node),await this.configuration.triggerHook(j=>j.globalHashGeneration,this,j=>{X.update("\0"),X.update(j)});let ie=X.digest("hex"),G=new Map,ee=j=>{let M=G.get(j.locatorHash);if(typeof M<"u")return M;let k=this.storedPackages.get(j.locatorHash);if(typeof k>"u")throw new Error("Assertion failed: The package should have been registered");let te=(0,DF.createHash)("sha512");te.update(j.locatorHash),G.set(j.locatorHash,"");for(let ae of k.dependencies.values()){let De=this.storedResolutions.get(ae.descriptorHash);if(typeof De>"u")throw new Error(`Assertion failed: The resolution (${xe.prettyDescriptor(this.configuration,ae)}) should have been registered`);let pe=this.storedPackages.get(De);if(typeof pe>"u")throw new Error("Assertion failed: The package should have been registered");te.update(ee(pe))}return M=te.digest("hex"),G.set(j.locatorHash,M),M},o=(j,M)=>{let k=(0,DF.createHash)("sha512");k.update(ie),k.update(ee(j));for(let te of M)k.update(te);return k.digest("hex")},H=new Map,ne=!1;for(;J.size>0;){let j=J.size,M=[];for(let k of J){let te=this.storedPackages.get(k);if(!te)throw new Error("Assertion failed: The package should have been registered");let ae=!0;for(let me of te.dependencies.values()){let be=this.storedResolutions.get(me.descriptorHash);if(!be)throw new Error(`Assertion failed: The resolution (${xe.prettyDescriptor(this.configuration,me)}) should have been registered`);if(J.has(be)){ae=!1;break}}if(!ae)continue;J.delete(k);let De=D.get(te.locatorHash);if(!De)throw new Error("Assertion failed: The build directive should have been registered");let pe=o(te,De.buildLocations);if(this.storedBuildState.get(te.locatorHash)===pe){H.set(te.locatorHash,pe);continue}ne||(await this.persistInstallStateFile(),ne=!0),this.storedBuildState.has(te.locatorHash)?t.reportInfo(ZA.MessageName.MUST_REBUILD,`${xe.prettyLocator(this.configuration,te)} must be rebuilt because its dependency tree changed`):t.reportInfo(ZA.MessageName.MUST_BUILD,`${xe.prettyLocator(this.configuration,te)} must be built because it never has been before or the last one failed`);for(let me of De.buildLocations){if(!IA.ppath.isAbsolute(me))throw new Error(`Assertion failed: Expected the build location to be absolute (not ${me})`);M.push((async()=>{for(let[be,Ye]of De.directives){let Ve=`# This file contains the result of Yarn building a package (${xe.stringifyLocator(te)}) +`;switch(be){case IC.BuildType.SCRIPT:Ve+=`# Script name: ${Ye} +`;break;case IC.BuildType.SHELLCODE:Ve+=`# Script code: ${Ye} +`;break}let iA=null;if(!await IA.xfs.mktempPromise(async mA=>{let Z=IA.ppath.join(mA,"build.log"),{stdout:U,stderr:oe}=this.configuration.getSubprocessStreams(Z,{header:Ve,prefix:xe.prettyLocator(this.configuration,te),report:t}),V;try{switch(be){case IC.BuildType.SCRIPT:V=await bW.executePackageScript(te,Ye,[],{cwd:me,project:this,stdin:iA,stdout:U,stderr:oe});break;case IC.BuildType.SHELLCODE:V=await bW.executePackageShellcode(te,Ye,[],{cwd:me,project:this,stdin:iA,stdout:U,stderr:oe});break}}catch(EA){oe.write(EA.stack),V=1}if(U.end(),oe.end(),V===0)return H.set(te.locatorHash,pe),!0;IA.xfs.detachTemp(mA);let Ge=`${xe.prettyLocator(this.configuration,te)} couldn't be built successfully (exit code ${QA.pretty(this.configuration,V,QA.Type.NUMBER)}, logs can be found here: ${QA.pretty(this.configuration,Z,QA.Type.PATH)})`;return this.optionalBuilds.has(te.locatorHash)?(t.reportInfo(ZA.MessageName.BUILD_FAILED,Ge),H.set(te.locatorHash,pe),!0):(t.reportError(ZA.MessageName.BUILD_FAILED,Ge),!1)}))return}})())}}if(await Ct.allSettledSafe(M),j===J.size){let k=Array.from(J).map(te=>{let ae=this.storedPackages.get(te);if(!ae)throw new Error("Assertion failed: The package should have been registered");return xe.prettyLocator(this.configuration,ae)}).join(", ");t.reportError(ZA.MessageName.CYCLIC_DEPENDENCIES,`Some packages have circular dependencies that make their build order unsatisfiable - as a result they won't be built (affected packages are: ${k})`);break}}this.storedBuildState=H}async install(e){var t,r;let i=this.configuration.get("nodeLinker");(t=fC.Configuration.telemetry)===null||t===void 0||t.reportInstall(i),await e.report.startTimerPromise("Project validation",{skipIfEmpty:!0},async()=>{await this.configuration.triggerHook(c=>c.validateProject,this,{reportWarning:e.report.reportWarning.bind(e.report),reportError:e.report.reportError.bind(e.report)})});for(let c of this.configuration.packageExtensions.values())for(let[,l]of c)for(let C of l)C.status=KB.PackageExtensionStatus.Inactive;let n=IA.ppath.join(this.cwd,this.configuration.get("lockfileFilename")),s=null;if(e.immutable)try{s=await IA.xfs.readFilePromise(n,"utf8")}catch(c){throw c.code==="ENOENT"?new fo.ReportError(ZA.MessageName.FROZEN_LOCKFILE_EXCEPTION,"The lockfile would have been created by this install, which is explicitly forbidden."):c}await e.report.startTimerPromise("Resolution step",async()=>{await this.resolveEverything(e)}),await e.report.startTimerPromise("Post-resolution validation",{skipIfEmpty:!0},async()=>{for(let[,c]of this.configuration.packageExtensions)for(let[,l]of c)for(let C of l)if(C.userProvided){let f=QA.pretty(this.configuration,C,QA.Type.PACKAGE_EXTENSION);switch(C.status){case KB.PackageExtensionStatus.Inactive:e.report.reportWarning(ZA.MessageName.UNUSED_PACKAGE_EXTENSION,`${f}: No matching package in the dependency tree; you may not need this rule anymore.`);break;case KB.PackageExtensionStatus.Redundant:e.report.reportWarning(ZA.MessageName.REDUNDANT_PACKAGE_EXTENSION,`${f}: This rule seems redundant when applied on the original package; the extension may have been applied upstream.`);break}}if(s!==null){let c=(0,IA.normalizeLineEndings)(s,this.generateLockfile());if(c!==s){let l=(0,wSe.structuredPatch)(n,n,s,c,void 0,void 0,{maxEditLength:100});if(l){e.report.reportSeparator();for(let C of l.hunks){e.report.reportInfo(null,`@@ -${C.oldStart},${C.oldLines} +${C.newStart},${C.newLines} @@`);for(let f of C.lines)f.startsWith("+")?e.report.reportError(ZA.MessageName.FROZEN_LOCKFILE_EXCEPTION,QA.pretty(this.configuration,f,QA.Type.ADDED)):f.startsWith("-")?e.report.reportError(ZA.MessageName.FROZEN_LOCKFILE_EXCEPTION,QA.pretty(this.configuration,f,QA.Type.REMOVED)):e.report.reportInfo(null,QA.pretty(this.configuration,f,"grey"))}e.report.reportSeparator()}throw new fo.ReportError(ZA.MessageName.FROZEN_LOCKFILE_EXCEPTION,"The lockfile would have been modified by this install, which is explicitly forbidden.")}}});for(let c of this.configuration.packageExtensions.values())for(let[,l]of c)for(let C of l)C.userProvided&&C.status===KB.PackageExtensionStatus.Active&&((r=fC.Configuration.telemetry)===null||r===void 0||r.reportPackageExtension(QA.json(C,QA.Type.PACKAGE_EXTENSION)));await e.report.startTimerPromise("Fetch step",async()=>{await this.fetchEverything(e),(typeof e.persistProject>"u"||e.persistProject)&&e.mode!==EC.UpdateLockfile&&await this.cacheCleanup(e)});let a=e.immutable?[...new Set(this.configuration.get("immutablePatterns"))].sort():[],g=await Promise.all(a.map(async c=>Ka.checksumPattern(c,{cwd:this.cwd})));(typeof e.persistProject>"u"||e.persistProject)&&await this.persist(),await e.report.startTimerPromise("Link step",async()=>{if(e.mode===EC.UpdateLockfile){e.report.reportWarning(ZA.MessageName.UPDATE_LOCKFILE_ONLY_SKIP_LINK,`Skipped due to ${QA.pretty(this.configuration,"mode=update-lockfile",QA.Type.CODE)}`);return}await this.linkEverything(e);let c=await Promise.all(a.map(async l=>Ka.checksumPattern(l,{cwd:this.cwd})));for(let l=0;lc.afterAllInstalled,this,e)}generateLockfile(){let e=new Map;for(let[i,n]of this.storedResolutions.entries()){let s=e.get(n);s||e.set(n,s=new Set),s.add(i)}let t={};t.__metadata={version:kW,cacheKey:void 0};for(let[i,n]of e.entries()){let s=this.originalPackages.get(i);if(!s)continue;let a=[];for(let f of n){let E=this.storedDescriptors.get(f);if(!E)throw new Error("Assertion failed: The descriptor should have been registered");a.push(E)}let g=a.map(f=>xe.stringifyDescriptor(f)).sort().join(", "),c=new SW.Manifest;c.version=s.linkType===MSe.LinkType.HARD?s.version:"0.0.0-use.local",c.languageName=s.languageName,c.dependencies=new Map(s.dependencies),c.peerDependencies=new Map(s.peerDependencies),c.dependenciesMeta=new Map(s.dependenciesMeta),c.peerDependenciesMeta=new Map(s.peerDependenciesMeta),c.bin=new Map(s.bin);let l,C=this.storedChecksums.get(s.locatorHash);if(typeof C<"u"){let f=C.indexOf("/");if(f===-1)throw new Error("Assertion failed: Expected the checksum to reference its cache key");let E=C.slice(0,f),m=C.slice(f+1);typeof t.__metadata.cacheKey>"u"&&(t.__metadata.cacheKey=E),E===t.__metadata.cacheKey?l=m:l=C}t[g]={...c.exportTo({},{compatibilityMode:!1}),linkType:s.linkType.toLowerCase(),resolution:xe.stringifyLocator(s),checksum:l,conditions:s.conditions||void 0}}return`${[`# This file is generated by running "yarn install" inside your project. +`,`# Manual changes might be lost - proceed with caution! +`].join("")} +`+(0,mW.stringifySyml)(t)}async persistLockfile(){let e=IA.ppath.join(this.cwd,this.configuration.get("lockfileFilename")),t="";try{t=await IA.xfs.readFilePromise(e,"utf8")}catch{}let r=this.generateLockfile(),i=(0,IA.normalizeLineEndings)(t,r);i!==t&&(await IA.xfs.writeFilePromise(e,i),this.lockFileChecksum=NW(i),this.lockfileNeedsRefresh=!1)}async persistInstallStateFile(){let e=[];for(let s of Object.values(FF))e.push(...s);let t=(0,SF.default)(this,e),r=DW.default.serialize(t),i=Ka.makeHash(r);if(this.installStateChecksum===i)return;let n=this.configuration.get("installStatePath");await IA.xfs.mkdirPromise(IA.ppath.dirname(n),{recursive:!0}),await IA.xfs.writeFilePromise(n,await KSe(r)),this.installStateChecksum=i}async restoreInstallState({restoreLinkersCustomData:e=!0,restoreResolutions:t=!0,restoreBuildState:r=!0}={}){let i=this.configuration.get("installStatePath"),n;try{let s=await USe(await IA.xfs.readFilePromise(i));n=DW.default.deserialize(s),this.installStateChecksum=Ka.makeHash(s)}catch{t&&await this.applyLightResolution();return}e&&typeof n.linkersCustomData<"u"&&(this.linkersCustomData=n.linkersCustomData),r&&Object.assign(this,(0,SF.default)(n,FF.restoreBuildState)),t&&(n.lockFileChecksum===this.lockFileChecksum?Object.assign(this,(0,SF.default)(n,FF.restoreResolutions)):await this.applyLightResolution())}async applyLightResolution(){await this.resolveEverything({lockfileOnly:!0,report:new xW.ThrowReport}),await this.persistInstallStateFile()}async persist(){await this.persistLockfile();for(let e of this.workspacesByCwd.values())await e.persistManifest()}async cacheCleanup({cache:e,report:t}){if(this.configuration.get("enableGlobalCache"))return;let r=new Set([".gitignore"]);if(!(0,kSe.isFolderInside)(e.cwd,this.cwd)||!await IA.xfs.existsPromise(e.cwd))return;let i=this.configuration.get("preferAggregateCacheInfo"),n=0,s=null;for(let a of await IA.xfs.readdirPromise(e.cwd)){if(r.has(a))continue;let g=IA.ppath.resolve(e.cwd,a);e.markedFiles.has(g)||(s=a,e.immutable?t.reportError(ZA.MessageName.IMMUTABLE_CACHE,`${QA.pretty(this.configuration,IA.ppath.basename(g),"magenta")} appears to be unused and would be marked for deletion, but the cache is immutable`):(i?n+=1:t.reportInfo(ZA.MessageName.UNUSED_CACHE_ENTRY,`${QA.pretty(this.configuration,IA.ppath.basename(g),"magenta")} appears to be unused - removing`),await IA.xfs.removePromise(g)))}i&&n!==0&&t.reportInfo(ZA.MessageName.UNUSED_CACHE_ENTRY,n>1?`${n} packages appeared to be unused and were removed`:`${s} appeared to be unused and was removed`)}};Ua.Project=BC;function TSe({project:A,allDescriptors:e,allResolutions:t,allPackages:r,accessibleLocators:i=new Set,optionalBuilds:n=new Set,peerRequirements:s=new Map,volatileDescriptors:a=new Set,report:g}){var c;let l=new Map,C=[],f=new Map,E=new Map,m=new Map,w=new Map,D=new Map,L=new Map(A.workspaces.map(G=>{let ee=G.anchoredLocator.locatorHash,o=r.get(ee);if(typeof o>"u")throw new Error("Assertion failed: The workspace should have an associated package");return[ee,xe.copyPackage(o)]})),K=()=>{let G=IA.xfs.mktempSync(),ee=IA.ppath.join(G,"stacktrace.log"),o=String(C.length+1).length,H=C.map((ne,j)=>`${`${j+1}.`.padStart(o," ")} ${xe.stringifyLocator(ne)} +`).join("");throw IA.xfs.writeFileSync(ee,H),IA.xfs.detachTemp(G),new fo.ReportError(ZA.MessageName.STACK_OVERFLOW_RESOLUTION,`Encountered a stack overflow when resolving peer dependencies; cf ${xF.npath.fromPortablePath(ee)}`)},_=G=>{let ee=t.get(G.descriptorHash);if(typeof ee>"u")throw new Error("Assertion failed: The resolution should have been registered");let o=r.get(ee);if(!o)throw new Error("Assertion failed: The package could not be found");return o},le=(G,ee,o,{top:H,optional:ne})=>{C.length>1e3&&K(),C.push(ee);let j=re(G,ee,o,{top:H,optional:ne});return C.pop(),j},re=(G,ee,o,{top:H,optional:ne})=>{if(i.has(ee.locatorHash))return;i.add(ee.locatorHash),ne||n.delete(ee.locatorHash);let j=r.get(ee.locatorHash);if(!j)throw new Error(`Assertion failed: The package (${xe.prettyLocator(A.configuration,ee)}) should have been registered`);let M=[],k=[],te=[],ae=[],De=[];for(let me of Array.from(j.dependencies.values())){if(j.peerDependencies.has(me.identHash)&&j.locatorHash!==H)continue;if(xe.isVirtualDescriptor(me))throw new Error("Assertion failed: Virtual packages shouldn't be encountered when virtualizing a branch");a.delete(me.descriptorHash);let be=ne;if(!be){let U=j.dependenciesMeta.get(xe.stringifyIdent(me));if(typeof U<"u"){let oe=U.get(null);typeof oe<"u"&&oe.optional&&(be=!0)}}let Ye=t.get(me.descriptorHash);if(!Ye)throw new Error(`Assertion failed: The resolution (${xe.prettyDescriptor(A.configuration,me)}) should have been registered`);let Ve=L.get(Ye)||r.get(Ye);if(!Ve)throw new Error(`Assertion failed: The package (${Ye}, resolved from ${xe.prettyDescriptor(A.configuration,me)}) should have been registered`);if(Ve.peerDependencies.size===0){le(me,Ve,new Map,{top:H,optional:be});continue}let iA,de,mA=new Set,Z;k.push(()=>{iA=xe.virtualizeDescriptor(me,ee.locatorHash),de=xe.virtualizePackage(Ve,ee.locatorHash),j.dependencies.delete(me.identHash),j.dependencies.set(iA.identHash,iA),t.set(iA.descriptorHash,de.locatorHash),e.set(iA.descriptorHash,iA),r.set(de.locatorHash,de),M.push([Ve,iA,de])}),te.push(()=>{var U;Z=new Map;for(let oe of de.peerDependencies.values()){let V=j.dependencies.get(oe.identHash);if(!V&&xe.areIdentsEqual(ee,oe)&&(G.identHash===ee.identHash?V=G:(V=xe.makeDescriptor(ee,G.range),e.set(V.descriptorHash,V),t.set(V.descriptorHash,ee.locatorHash),a.delete(V.descriptorHash))),(!V||V.range==="missing:")&&de.dependencies.has(oe.identHash)){de.peerDependencies.delete(oe.identHash);continue}V||(V=xe.makeDescriptor(oe,"missing:")),de.dependencies.set(V.identHash,V),xe.isVirtualDescriptor(V)&&Ct.getSetWithDefault(m,V.descriptorHash).add(de.locatorHash),f.set(V.identHash,V),V.range==="missing:"&&mA.add(V.identHash),Z.set(oe.identHash,(U=o.get(oe.identHash))!==null&&U!==void 0?U:de.locatorHash)}de.dependencies=new Map(Ct.sortMap(de.dependencies,([oe,V])=>xe.stringifyIdent(V)))}),ae.push(()=>{if(!r.has(de.locatorHash))return;let U=l.get(Ve.locatorHash);typeof U=="number"&&U>=2&&K();let oe=l.get(Ve.locatorHash),V=typeof oe<"u"?oe+1:1;l.set(Ve.locatorHash,V),le(iA,de,Z,{top:H,optional:be}),l.set(Ve.locatorHash,V-1)}),De.push(()=>{let U=j.dependencies.get(me.identHash);if(typeof U>"u")throw new Error("Assertion failed: Expected the peer dependency to have been turned into a dependency");let oe=t.get(U.descriptorHash);if(typeof oe>"u")throw new Error("Assertion failed: Expected the descriptor to be registered");if(Ct.getSetWithDefault(D,oe).add(ee.locatorHash),!!r.has(de.locatorHash)){for(let V of de.peerDependencies.values()){let Ge=Z.get(V.identHash);if(typeof Ge>"u")throw new Error("Assertion failed: Expected the peer dependency ident to be registered");Ct.getArrayWithDefault(Ct.getMapWithDefault(w,Ge),xe.stringifyIdent(V)).push(de.locatorHash)}for(let V of mA)de.dependencies.delete(V)}})}for(let me of[...k,...te])me();let pe;do{pe=!0;for(let[me,be,Ye]of M){let Ve=Ct.getMapWithDefault(E,me.locatorHash),iA=Ka.makeHash(...[...Ye.dependencies.values()].map(U=>{let oe=U.range!=="missing:"?t.get(U.descriptorHash):"missing:";if(typeof oe>"u")throw new Error(`Assertion failed: Expected the resolution for ${xe.prettyDescriptor(A.configuration,U)} to have been registered`);return oe===H?`${oe} (top)`:oe}),be.identHash),de=Ve.get(iA);if(typeof de>"u"){Ve.set(iA,be);continue}if(de===be)continue;r.delete(Ye.locatorHash),e.delete(be.descriptorHash),t.delete(be.descriptorHash),i.delete(Ye.locatorHash);let mA=m.get(be.descriptorHash)||[],Z=[j.locatorHash,...mA];m.delete(be.descriptorHash);for(let U of Z){let oe=r.get(U);typeof oe>"u"||(oe.dependencies.get(be.identHash).descriptorHash!==de.descriptorHash&&(pe=!1),oe.dependencies.set(be.identHash,de))}}}while(!pe);for(let me of[...ae,...De])me()};for(let G of A.workspaces){let ee=G.anchoredLocator;a.delete(G.anchoredDescriptor.descriptorHash),le(G.anchoredDescriptor,ee,new Map,{top:ee.locatorHash,optional:!1})}let J;(function(G){G[G.NotProvided=0]="NotProvided",G[G.NotCompatible=1]="NotCompatible"})(J||(J={}));let X=[];for(let[G,ee]of D){let o=r.get(G);if(typeof o>"u")throw new Error("Assertion failed: Expected the root to be registered");let H=w.get(G);if(!(typeof H>"u"))for(let ne of ee){let j=r.get(ne);if(!(typeof j>"u"))for(let[M,k]of H){let te=xe.parseIdent(M);if(j.peerDependencies.has(te.identHash))continue;let ae=`p${Ka.makeHash(ne,M,G).slice(0,5)}`;s.set(ae,{subject:ne,requested:te,rootRequester:G,allRequesters:k});let De=o.dependencies.get(te.identHash);if(typeof De<"u"){let pe=_(De),me=(c=pe.version)!==null&&c!==void 0?c:"0.0.0",be=new Set;for(let Ve of k){let iA=r.get(Ve);if(typeof iA>"u")throw new Error("Assertion failed: Expected the link to be registered");let de=iA.peerDependencies.get(te.identHash);if(typeof de>"u")throw new Error("Assertion failed: Expected the ident to be registered");be.add(de.range)}[...be].every(Ve=>{if(Ve.startsWith(RW.WorkspaceResolver.protocol)){if(!A.tryWorkspaceByLocator(pe))return!1;Ve=Ve.slice(RW.WorkspaceResolver.protocol.length),(Ve==="^"||Ve==="~")&&(Ve="*")}return NSe.satisfiesWithPrereleases(me,Ve)})||X.push({type:J.NotCompatible,subject:j,requested:te,requester:o,version:me,hash:ae,requirementCount:k.length})}else{let pe=o.peerDependenciesMeta.get(M);pe?.optional||X.push({type:J.NotProvided,subject:j,requested:te,requester:o,hash:ae})}}}}let ie=[G=>xe.prettyLocatorNoColors(G.subject),G=>xe.stringifyIdent(G.requested),G=>`${G.type}`];g?.startSectionSync({reportFooter:()=>{g.reportWarning(ZA.MessageName.UNNAMED,`Some peer dependencies are incorrectly met; run ${QA.pretty(A.configuration,"yarn explain peer-requirements ",QA.Type.CODE)} for details, where ${QA.pretty(A.configuration,"",QA.Type.CODE)} is the six-letter p-prefixed code`)},skipIfEmpty:!0},()=>{for(let G of Ct.sortMap(X,ie))switch(G.type){case J.NotProvided:g.reportWarning(ZA.MessageName.MISSING_PEER_DEPENDENCY,`${xe.prettyLocator(A.configuration,G.subject)} doesn't provide ${xe.prettyIdent(A.configuration,G.requested)} (${QA.pretty(A.configuration,G.hash,QA.Type.CODE)}), requested by ${xe.prettyIdent(A.configuration,G.requester)}`);break;case J.NotCompatible:{let ee=G.requirementCount>1?"and some of its descendants request":"requests";g.reportWarning(ZA.MessageName.INCOMPATIBLE_PEER_DEPENDENCY,`${xe.prettyLocator(A.configuration,G.subject)} provides ${xe.prettyIdent(A.configuration,G.requested)} (${QA.pretty(A.configuration,G.hash,QA.Type.CODE)}) with version ${xe.prettyReference(A.configuration,G.version)}, which doesn't satisfy what ${xe.prettyIdent(A.configuration,G.requester)} ${ee}`)}break}})}});var OW=p(Ta=>{"use strict";Object.defineProperty(Ta,"__esModule",{value:!0});Ta.TelemetryManager=Ta.MetricName=void 0;var bF=nA(),dn=BA(),qSe=bF.__importStar(Us()),GSe=bF.__importStar(JI()),UB=bF.__importStar(br()),gs;(function(A){A.VERSION="version",A.COMMAND_NAME="commandName",A.PLUGIN_NAME="pluginName",A.INSTALL_COUNT="installCount",A.PROJECT_COUNT="projectCount",A.WORKSPACE_COUNT="workspaceCount",A.DEPENDENCY_COUNT="dependencyCount",A.EXTENSION="packageExtension"})(gs=Ta.MetricName||(Ta.MetricName={}));var RF=class{constructor(e,t){this.values=new Map,this.hits=new Map,this.enumerators=new Map,this.configuration=e;let r=this.getRegistryPath();this.isNew=!dn.xfs.existsSync(r),this.sendReport(t),this.startBuffer()}reportVersion(e){this.reportValue(gs.VERSION,e.replace(/-git\..*/,"-git"))}reportCommandName(e){this.reportValue(gs.COMMAND_NAME,e||"")}reportPluginName(e){this.reportValue(gs.PLUGIN_NAME,e)}reportProject(e){this.reportEnumerator(gs.PROJECT_COUNT,e)}reportInstall(e){this.reportHit(gs.INSTALL_COUNT,e)}reportPackageExtension(e){this.reportValue(gs.EXTENSION,e)}reportWorkspaceCount(e){this.reportValue(gs.WORKSPACE_COUNT,String(e))}reportDependencyCount(e){this.reportValue(gs.DEPENDENCY_COUNT,String(e))}reportValue(e,t){UB.getSetWithDefault(this.values,e).add(t)}reportEnumerator(e,t){UB.getSetWithDefault(this.enumerators,e).add(qSe.makeHash(t))}reportHit(e,t="*"){let r=UB.getMapWithDefault(this.hits,e),i=UB.getFactoryWithDefault(r,t,()=>0);r.set(t,i+1)}getRegistryPath(){let e=this.configuration.get("globalFolder");return dn.ppath.join(e,"telemetry.json")}sendReport(e){var t,r,i;let n=this.getRegistryPath(),s;try{s=dn.xfs.readJsonSync(n)}catch{s={}}let a=Date.now(),g=this.configuration.get("telemetryInterval")*24*60*60*1e3,l=((t=s.lastUpdate)!==null&&t!==void 0?t:a+g+Math.floor(g*Math.random()))+g;if(l>a&&s.lastUpdate!=null)return;try{dn.xfs.mkdirSync(dn.ppath.dirname(n),{recursive:!0}),dn.xfs.writeJsonSync(n,{lastUpdate:a})}catch{return}if(l>a||!s.blocks)return;let C=`https://browser-http-intake.logs.datadoghq.eu/v1/input/${e}?ddsource=yarn`,f=E=>GSe.post(C,E,{configuration:this.configuration}).catch(()=>{});for(let[E,m]of Object.entries((r=s.blocks)!==null&&r!==void 0?r:{})){if(Object.keys(m).length===0)continue;let w=m;w.userId=E,w.reportType="primary";for(let K of Object.keys((i=w.enumerators)!==null&&i!==void 0?i:{}))w.enumerators[K]=w.enumerators[K].length;f(w);let D=new Map,L=20;for(let[K,_]of Object.entries(w.values))_.length>0&&D.set(K,_.slice(0,L));for(;D.size>0;){let K={};K.userId=E,K.reportType="secondary",K.metrics={};for(let[_,le]of D)K.metrics[_]=le.shift(),le.length===0&&D.delete(_);f(K)}}}applyChanges(){var e,t,r,i,n,s,a,g,c;let l=this.getRegistryPath(),C;try{C=dn.xfs.readJsonSync(l)}catch{C={}}let f=(e=this.configuration.get("telemetryUserId"))!==null&&e!==void 0?e:"*",E=C.blocks=(t=C.blocks)!==null&&t!==void 0?t:{},m=E[f]=(r=E[f])!==null&&r!==void 0?r:{};for(let w of this.hits.keys()){let D=m.hits=(i=m.hits)!==null&&i!==void 0?i:{},L=D[w]=(n=D[w])!==null&&n!==void 0?n:{};for(let[K,_]of this.hits.get(w))L[K]=((s=L[K])!==null&&s!==void 0?s:0)+_}for(let w of["values","enumerators"])for(let D of this[w].keys()){let L=m[w]=(a=m[w])!==null&&a!==void 0?a:{};L[D]=[...new Set([...(g=L[D])!==null&&g!==void 0?g:[],...(c=this[w].get(D))!==null&&c!==void 0?c:[]])]}dn.xfs.mkdirSync(dn.ppath.dirname(l),{recursive:!0}),dn.xfs.writeJsonSync(l,C)}startBuffer(){process.on("exit",()=>{try{this.applyChanges()}catch{}})}};Ta.TelemetryManager=RF});var qB=p(Be=>{"use strict";Object.defineProperty(Be,"__esModule",{value:!0});Be.treeUtils=Be.tgzUtils=Be.structUtils=Be.semverUtils=Be.scriptUtils=Be.nodeUtils=Be.miscUtils=Be.formatUtils=Be.folderUtils=Be.execUtils=Be.httpUtils=Be.hashUtils=Be.PackageExtensionStatus=Be.PackageExtensionType=Be.LinkType=Be.YarnVersion=Be.Workspace=Be.WorkspaceResolver=Be.WorkspaceFetcher=Be.VirtualFetcher=Be.ThrowReport=Be.TelemetryManager=Be.StreamReport=Be.Report=Be.ReportError=Be.InstallMode=Be.Project=Be.MultiFetcher=Be.stringifyMessageName=Be.parseMessageName=Be.MessageName=Be.Manifest=Be.LockfileResolver=Be.LightReport=Be.LegacyMigrationResolver=Be.BuildType=Be.SettingsType=Be.ProjectLookup=Be.FormatType=Be.Configuration=Be.TAG_REGEXP=Be.DEFAULT_LOCK_FILENAME=Be.DEFAULT_RC_FILENAME=Be.Cache=void 0;var Ei=nA(),YSe=Ei.__importStar(Nw());Be.execUtils=YSe;var _Se=Ei.__importStar(EI());Be.folderUtils=_Se;var HSe=Ei.__importStar(ti());Be.formatUtils=HSe;var JSe=Ei.__importStar(Us());Be.hashUtils=JSe;var jSe=Ei.__importStar(JI());Be.httpUtils=jSe;var WSe=Ei.__importStar(br());Be.miscUtils=WSe;var zSe=Ei.__importStar(zI());Be.nodeUtils=zSe;var VSe=Ei.__importStar(oD());Be.scriptUtils=VSe;var XSe=Ei.__importStar(qs());Be.semverUtils=XSe;var ZSe=Ei.__importStar(Dt());Be.structUtils=ZSe;var $Se=Ei.__importStar(K3());Be.tgzUtils=$Se;var eFe=Ei.__importStar(_3());Be.treeUtils=eFe;var AFe=j3();Object.defineProperty(Be,"Cache",{enumerable:!0,get:function(){return AFe.Cache}});var kF=Nu();Object.defineProperty(Be,"DEFAULT_RC_FILENAME",{enumerable:!0,get:function(){return kF.DEFAULT_RC_FILENAME}});Object.defineProperty(Be,"DEFAULT_LOCK_FILENAME",{enumerable:!0,get:function(){return kF.DEFAULT_LOCK_FILENAME}});Object.defineProperty(Be,"TAG_REGEXP",{enumerable:!0,get:function(){return kF.TAG_REGEXP}});var TB=Nu();Object.defineProperty(Be,"Configuration",{enumerable:!0,get:function(){return TB.Configuration}});Object.defineProperty(Be,"FormatType",{enumerable:!0,get:function(){return TB.FormatType}});Object.defineProperty(Be,"ProjectLookup",{enumerable:!0,get:function(){return TB.ProjectLookup}});Object.defineProperty(Be,"SettingsType",{enumerable:!0,get:function(){return TB.SettingsType}});var tFe=jS();Object.defineProperty(Be,"BuildType",{enumerable:!0,get:function(){return tFe.BuildType}});var rFe=VS();Object.defineProperty(Be,"LegacyMigrationResolver",{enumerable:!0,get:function(){return rFe.LegacyMigrationResolver}});var iFe=V3();Object.defineProperty(Be,"LightReport",{enumerable:!0,get:function(){return iFe.LightReport}});var nFe=$S();Object.defineProperty(Be,"LockfileResolver",{enumerable:!0,get:function(){return nFe.LockfileResolver}});var sFe=gc();Object.defineProperty(Be,"Manifest",{enumerable:!0,get:function(){return sFe.Manifest}});var vF=ar();Object.defineProperty(Be,"MessageName",{enumerable:!0,get:function(){return vF.MessageName}});Object.defineProperty(Be,"parseMessageName",{enumerable:!0,get:function(){return vF.parseMessageName}});Object.defineProperty(Be,"stringifyMessageName",{enumerable:!0,get:function(){return vF.stringifyMessageName}});var oFe=em();Object.defineProperty(Be,"MultiFetcher",{enumerable:!0,get:function(){return oFe.MultiFetcher}});var KW=PW();Object.defineProperty(Be,"Project",{enumerable:!0,get:function(){return KW.Project}});Object.defineProperty(Be,"InstallMode",{enumerable:!0,get:function(){return KW.InstallMode}});var UW=ii();Object.defineProperty(Be,"ReportError",{enumerable:!0,get:function(){return UW.ReportError}});Object.defineProperty(Be,"Report",{enumerable:!0,get:function(){return UW.Report}});var aFe=hE();Object.defineProperty(Be,"StreamReport",{enumerable:!0,get:function(){return aFe.StreamReport}});var gFe=OW();Object.defineProperty(Be,"TelemetryManager",{enumerable:!0,get:function(){return gFe.TelemetryManager}});var cFe=yF();Object.defineProperty(Be,"ThrowReport",{enumerable:!0,get:function(){return cFe.ThrowReport}});var lFe=sm();Object.defineProperty(Be,"VirtualFetcher",{enumerable:!0,get:function(){return lFe.VirtualFetcher}});var uFe=am();Object.defineProperty(Be,"WorkspaceFetcher",{enumerable:!0,get:function(){return uFe.WorkspaceFetcher}});var CFe=Ca();Object.defineProperty(Be,"WorkspaceResolver",{enumerable:!0,get:function(){return CFe.WorkspaceResolver}});var hFe=wF();Object.defineProperty(Be,"Workspace",{enumerable:!0,get:function(){return hFe.Workspace}});var fFe=tD();Object.defineProperty(Be,"YarnVersion",{enumerable:!0,get:function(){return fFe.YarnVersion}});var NF=ia();Object.defineProperty(Be,"LinkType",{enumerable:!0,get:function(){return NF.LinkType}});Object.defineProperty(Be,"PackageExtensionType",{enumerable:!0,get:function(){return NF.PackageExtensionType}});Object.defineProperty(Be,"PackageExtensionStatus",{enumerable:!0,get:function(){return NF.PackageExtensionStatus}})});function GW(A){let e=qa.structUtils.parseLocator(A),t=qa.structUtils.parseRange(e.reference);return t.protocol==="patch:"?qa.structUtils.stringifyLocator({...e,reference:qa.structUtils.makeRange({...t,params:null})}):A}function YW(A){return qa.Manifest.fromText(BFe.readFileSync(A.packageLocation+"package.json","utf8"))}var qa,TW,qW,IFe,EFe,BFe,MF=sp(()=>{qa=ji(qB()),TW=ji(ds()),qW=ji(BA()),IFe=ds().getLibzipSync(),EFe=new TW.ZipOpenFS({libzip:IFe}),BFe=new qW.PosixFS(EFe)});var jW={};lx(jW,{default:()=>JW});async function JW(){let A=await Rt.Configuration.find(LF.ppath.cwd(),null),e=new Rt.Project(LF.ppath.cwd(),{configuration:A});await e.setupResolutions();let t=Rt.structUtils.parseLocator(HW),r=JSON.parse(_W.readFileSync(pFe,"utf8"));QFe(e,t,r),e.storedPackages=e.originalPackages,await e.persistLockfile()}function QFe(A,e,t){t["root-workspace-0b6124@workspace:."]={linkType:"soft",languageName:"unknown",packageDependencies:{[Rt.structUtils.stringifyIdent(e)]:Rt.structUtils.stringifyLocator(e)}};let r=Object.entries(t);for(let[i,n]of r){if(!n)continue;let s=i===HW||i==="root-workspace-0b6124@workspace:.",a=new Map,g=new Map(Object.entries(n.dependenciesMeta??{})),c=new Map,l=s?new Map:new Map(Object.entries(n.peerDependenciesMeta??{})),C=new Map(Object.entries(n.bin??{}));i=GW(i);let f=Rt.structUtils.parseLocator(i),E=Rt.structUtils.makeIdent(f.scope,f.name),m=Rt.structUtils.makeDescriptor(E,f.reference);if(n.locatorHash=f.locatorHash,n.descriptorHash=m.descriptorHash,!s)for(let D of Object.keys(n?.peerDependencies??{})){let L=Rt.structUtils.parseIdent(D),K=Rt.structUtils.makeDescriptor(L,n.peerDependencies[D]);c.set(L.identHash,K)}let w={...f,languageName:n.languageName,linkType:n.linkType.toUpperCase(),conditions:null,dependencies:a,dependenciesMeta:null,bin:C,peerDependencies:c,peerDependenciesMeta:l,version:null};A.originalPackages.set(w.locatorHash,w),A.storedResolutions.set(m.descriptorHash,w.locatorHash),n.checksum!=null&&A.storedChecksums.set(w.locatorHash,"9/"+n.checksum),A.storedDescriptors.set(m.descriptorHash,m)}for(let[i,n]of r){if(!n)continue;let s=A.originalPackages.get(n.locatorHash);if(!s)continue;let a=n.packageDependencies??{};for(let g of Object.keys(a)){let c=a[g],l=t[c];if(l?.descriptorHash!=null){let C=A.storedDescriptors.get(l.descriptorHash);if(C!=null){let f=Rt.structUtils.makeDescriptor(Rt.structUtils.parseIdent(g),C.range),E=Rt.structUtils.parseRange(f.range);E.protocol==="patch:"&&(f=Rt.structUtils.parseDescriptor(E.source)),A.storedResolutions.set(f.descriptorHash,l.locatorHash),A.storedDescriptors.set(f.descriptorHash,f),s.dependencies.set(f.identHash,f)}}}}}var _W,Rt,LF,pFe,HW,WW=sp(()=>{_W=ji(require("node:fs")),Rt=ji(qB()),LF=ji(BA());MF();pFe=process.argv[3],HW=process.argv[4]});var $W={};lx($W,{default:()=>ZW});async function ZW(){let A=zW.realpathSync(yFe),e=require(GB.join(A,".pnp.cjs"));if(!e)throw new Error("Could not find pnp api");let t=e.getPackageInformation(e.topLevel);for(let[r,i]of Object.entries(Array.from(t.packageDependencies))){let n=e.getLocator(i[0],i[1]);if(n.reference==null)continue;let s=VW.structUtils.ensureDevirtualizedLocator(n),a=e.getPackageInformation(n),g=e.getPackageInformation(s),c=YW(g);for(let[l,C]of Array.from(c.bin)){let f=GB.join(a.packageLocation,C);await XW.xfs.writeFilePromise(GB.join(dFe,l),`node ${f} "$@"`,{mode:493})}}}var zW,GB,VW,XW,dFe,yFe,ez=sp(()=>{zW=ji(require("node:fs")),GB=ji(require("node:path")),VW=ji(qB()),XW=ji(BA());MF();dFe=process.argv[3],yFe=process.argv[4]});var mFe={createLockFile:(WW(),Cx(jW)).default,makePathWrappers:(ez(),Cx($W)).default};mFe[process.argv[2]](); +/*! + * fill-range + * + * Copyright (c) 2014-present, Jon Schlinkert. + * Licensed under the MIT License. + */ +/*! + * is-extglob + * + * Copyright (c) 2014-2016, Jon Schlinkert. + * Licensed under the MIT License. + */ +/*! + * is-glob + * + * Copyright (c) 2014-2017, Jon Schlinkert. + * Released under the MIT License. + */ +/*! + * is-number + * + * Copyright (c) 2014-present, Jon Schlinkert. + * Released under the MIT License. + */ +/*! + * to-regex-range + * + * Copyright (c) 2015-present, Jon Schlinkert. + * Released under the MIT License. + */ +/*! queue-microtask. MIT License. Feross Aboukhadijeh */ +/*! run-parallel. MIT License. Feross Aboukhadijeh */ +//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vbm9kZV9tb2R1bGVzL3RzbGliL3RzbGliLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9AeWFybnBrZy9mc2xpYi9saWIvY29uc3RhbnRzLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9AeWFybnBrZy9mc2xpYi9saWIvZXJyb3JzLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9AeWFybnBrZy9mc2xpYi9saWIvc3RhdFV0aWxzLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9AeWFybnBrZy9mc2xpYi9saWIvcGF0aC5qcyIsICIuLi9ub2RlX21vZHVsZXMvQHlhcm5wa2cvZnNsaWIvbGliL2FsZ29yaXRobXMvY29weVByb21pc2UuanMiLCAiLi4vbm9kZV9tb2R1bGVzL0B5YXJucGtnL2ZzbGliL2xpYi9hbGdvcml0aG1zL29wZW5kaXIuanMiLCAiLi4vbm9kZV9tb2R1bGVzL0B5YXJucGtnL2ZzbGliL2xpYi9hbGdvcml0aG1zL3dhdGNoRmlsZS9DdXN0b21TdGF0V2F0Y2hlci5qcyIsICIuLi9ub2RlX21vZHVsZXMvQHlhcm5wa2cvZnNsaWIvbGliL2FsZ29yaXRobXMvd2F0Y2hGaWxlLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9AeWFybnBrZy9mc2xpYi9saWIvRmFrZUZTLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9AeWFybnBrZy9mc2xpYi9saWIvUHJveGllZEZTLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9AeWFybnBrZy9mc2xpYi9saWIvQWxpYXNGUy5qcyIsICIuLi9ub2RlX21vZHVsZXMvQHlhcm5wa2cvZnNsaWIvbGliL05vZGVGUy5qcyIsICIuLi9ub2RlX21vZHVsZXMvQHlhcm5wa2cvZnNsaWIvbGliL0N3ZEZTLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9AeWFybnBrZy9mc2xpYi9saWIvSmFpbEZTLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9AeWFybnBrZy9mc2xpYi9saWIvTGF6eUZTLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9AeWFybnBrZy9mc2xpYi9saWIvTW91bnRGUy5qcyIsICIuLi9ub2RlX21vZHVsZXMvQHlhcm5wa2cvZnNsaWIvbGliL05vRlMuanMiLCAiLi4vbm9kZV9tb2R1bGVzL0B5YXJucGtnL2ZzbGliL2xpYi9Qb3NpeEZTLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9AeWFybnBrZy9mc2xpYi9saWIvVmlydHVhbEZTLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9AeWFybnBrZy9mc2xpYi9saWIvTm9kZVBhdGhGUy5qcyIsICIuLi9ub2RlX21vZHVsZXMvQHlhcm5wa2cvZnNsaWIvbGliL3BhdGNoRnMvRmlsZUhhbmRsZS5qcyIsICIuLi9ub2RlX21vZHVsZXMvQHlhcm5wa2cvZnNsaWIvbGliL3BhdGNoRnMvcGF0Y2hGcy5qcyIsICIuLi9ub2RlX21vZHVsZXMvQHlhcm5wa2cvZnNsaWIvbGliL3hmcy5qcyIsICIuLi9ub2RlX21vZHVsZXMvQHlhcm5wa2cvZnNsaWIvbGliL2luZGV4LmpzIiwgIi4uL25vZGVfbW9kdWxlcy9pc2V4ZS93aW5kb3dzLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9pc2V4ZS9tb2RlLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9pc2V4ZS9pbmRleC5qcyIsICIuLi9ub2RlX21vZHVsZXMvd2hpY2gvd2hpY2guanMiLCAiLi4vbm9kZV9tb2R1bGVzL3BhdGgta2V5L2luZGV4LmpzIiwgIi4uL25vZGVfbW9kdWxlcy9jcm9zcy1zcGF3bi9saWIvdXRpbC9yZXNvbHZlQ29tbWFuZC5qcyIsICIuLi9ub2RlX21vZHVsZXMvY3Jvc3Mtc3Bhd24vbGliL3V0aWwvZXNjYXBlLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9zaGViYW5nLXJlZ2V4L2luZGV4LmpzIiwgIi4uL25vZGVfbW9kdWxlcy9zaGViYW5nLWNvbW1hbmQvaW5kZXguanMiLCAiLi4vbm9kZV9tb2R1bGVzL2Nyb3NzLXNwYXduL2xpYi91dGlsL3JlYWRTaGViYW5nLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9jcm9zcy1zcGF3bi9saWIvcGFyc2UuanMiLCAiLi4vbm9kZV9tb2R1bGVzL2Nyb3NzLXNwYXduL2xpYi9lbm9lbnQuanMiLCAiLi4vbm9kZV9tb2R1bGVzL2Nyb3NzLXNwYXduL2luZGV4LmpzIiwgIi4uL25vZGVfbW9kdWxlcy9AeWFybnBrZy9saWJ6aXAvbGliL2luc3RhbmNlLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9AeWFybnBrZy9saWJ6aXAvbGliL2xpYnppcFN5bmMuanMiLCAiLi4vbm9kZV9tb2R1bGVzL0B5YXJucGtnL2xpYnppcC9saWIvbWFrZUludGVyZmFjZS5qcyIsICIuLi9ub2RlX21vZHVsZXMvQHlhcm5wa2cvbGliemlwL2xpYi9aaXBPcGVuRlMuanMiLCAiLi4vbm9kZV9tb2R1bGVzL0B5YXJucGtnL2xpYnppcC9saWIvWmlwRlMuanMiLCAiLi4vbm9kZV9tb2R1bGVzL0B5YXJucGtnL2xpYnppcC9saWIvbW91bnRNZW1vcnlEcml2ZS5qcyIsICIuLi9ub2RlX21vZHVsZXMvQHlhcm5wa2cvbGliemlwL2xpYi9jb21tb24uanMiLCAiLi4vbm9kZV9tb2R1bGVzL0B5YXJucGtnL2xpYnppcC9saWIvc3luYy5qcyIsICIuLi9ub2RlX21vZHVsZXMvQHlhcm5wa2cvcGFyc2Vycy9saWIvZ3JhbW1hcnMvc2hlbGwuanMiLCAiLi4vbm9kZV9tb2R1bGVzL0B5YXJucGtnL3BhcnNlcnMvbGliL3NoZWxsLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9AeWFybnBrZy9wYXJzZXJzL2xpYi9ncmFtbWFycy9yZXNvbHV0aW9uLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9AeWFybnBrZy9wYXJzZXJzL2xpYi9yZXNvbHV0aW9uLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9qcy15YW1sL2xpYi9qcy15YW1sL2NvbW1vbi5qcyIsICIuLi9ub2RlX21vZHVsZXMvanMteWFtbC9saWIvanMteWFtbC9leGNlcHRpb24uanMiLCAiLi4vbm9kZV9tb2R1bGVzL2pzLXlhbWwvbGliL2pzLXlhbWwvbWFyay5qcyIsICIuLi9ub2RlX21vZHVsZXMvanMteWFtbC9saWIvanMteWFtbC90eXBlLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9qcy15YW1sL2xpYi9qcy15YW1sL3NjaGVtYS5qcyIsICIuLi9ub2RlX21vZHVsZXMvanMteWFtbC9saWIvanMteWFtbC90eXBlL3N0ci5qcyIsICIuLi9ub2RlX21vZHVsZXMvanMteWFtbC9saWIvanMteWFtbC90eXBlL3NlcS5qcyIsICIuLi9ub2RlX21vZHVsZXMvanMteWFtbC9saWIvanMteWFtbC90eXBlL21hcC5qcyIsICIuLi9ub2RlX21vZHVsZXMvanMteWFtbC9saWIvanMteWFtbC9zY2hlbWEvZmFpbHNhZmUuanMiLCAiLi4vbm9kZV9tb2R1bGVzL2pzLXlhbWwvbGliL2pzLXlhbWwvdHlwZS9udWxsLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9qcy15YW1sL2xpYi9qcy15YW1sL3R5cGUvYm9vbC5qcyIsICIuLi9ub2RlX21vZHVsZXMvanMteWFtbC9saWIvanMteWFtbC90eXBlL2ludC5qcyIsICIuLi9ub2RlX21vZHVsZXMvanMteWFtbC9saWIvanMteWFtbC90eXBlL2Zsb2F0LmpzIiwgIi4uL25vZGVfbW9kdWxlcy9qcy15YW1sL2xpYi9qcy15YW1sL3NjaGVtYS9qc29uLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9qcy15YW1sL2xpYi9qcy15YW1sL3NjaGVtYS9jb3JlLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9qcy15YW1sL2xpYi9qcy15YW1sL3R5cGUvdGltZXN0YW1wLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9qcy15YW1sL2xpYi9qcy15YW1sL3R5cGUvbWVyZ2UuanMiLCAiLi4vbm9kZV9tb2R1bGVzL2pzLXlhbWwvbGliL2pzLXlhbWwvdHlwZS9iaW5hcnkuanMiLCAiLi4vbm9kZV9tb2R1bGVzL2pzLXlhbWwvbGliL2pzLXlhbWwvdHlwZS9vbWFwLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9qcy15YW1sL2xpYi9qcy15YW1sL3R5cGUvcGFpcnMuanMiLCAiLi4vbm9kZV9tb2R1bGVzL2pzLXlhbWwvbGliL2pzLXlhbWwvdHlwZS9zZXQuanMiLCAiLi4vbm9kZV9tb2R1bGVzL2pzLXlhbWwvbGliL2pzLXlhbWwvc2NoZW1hL2RlZmF1bHRfc2FmZS5qcyIsICIuLi9ub2RlX21vZHVsZXMvanMteWFtbC9saWIvanMteWFtbC90eXBlL2pzL3VuZGVmaW5lZC5qcyIsICIuLi9ub2RlX21vZHVsZXMvanMteWFtbC9saWIvanMteWFtbC90eXBlL2pzL3JlZ2V4cC5qcyIsICIuLi9ub2RlX21vZHVsZXMvanMteWFtbC9saWIvanMteWFtbC90eXBlL2pzL2Z1bmN0aW9uLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9qcy15YW1sL2xpYi9qcy15YW1sL3NjaGVtYS9kZWZhdWx0X2Z1bGwuanMiLCAiLi4vbm9kZV9tb2R1bGVzL2pzLXlhbWwvbGliL2pzLXlhbWwvbG9hZGVyLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9qcy15YW1sL2xpYi9qcy15YW1sL2R1bXBlci5qcyIsICIuLi9ub2RlX21vZHVsZXMvanMteWFtbC9saWIvanMteWFtbC5qcyIsICIuLi9ub2RlX21vZHVsZXMvanMteWFtbC9pbmRleC5qcyIsICIuLi9ub2RlX21vZHVsZXMvQHlhcm5wa2cvcGFyc2Vycy9saWIvZ3JhbW1hcnMvc3ltbC5qcyIsICIuLi9ub2RlX21vZHVsZXMvQHlhcm5wa2cvcGFyc2Vycy9saWIvc3ltbC5qcyIsICIuLi9ub2RlX21vZHVsZXMvQHlhcm5wa2cvcGFyc2Vycy9saWIvaW5kZXguanMiLCAiLi4vbm9kZV9tb2R1bGVzL2NhbWVsY2FzZS9pbmRleC5qcyIsICIuLi9ub2RlX21vZHVsZXMvY2ktaW5mby9pbmRleC5qcyIsICIuLi9ub2RlX21vZHVsZXMvY2xpcGFuaW9uL2xpYi9jb25zdGFudHMuanMiLCAiLi4vbm9kZV9tb2R1bGVzL2NsaXBhbmlvbi9saWIvZXJyb3JzLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9jbGlwYW5pb24vbGliL2Zvcm1hdC5qcyIsICIuLi9ub2RlX21vZHVsZXMvY2xpcGFuaW9uL2xpYi9hZHZhbmNlZC9vcHRpb25zL3V0aWxzLmpzIiwgIi4uL25vZGVfbW9kdWxlcy90eXBhbmlvbi9saWIvaW5kZXguanMiLCAiLi4vbm9kZV9tb2R1bGVzL2NsaXBhbmlvbi9saWIvYWR2YW5jZWQvQ29tbWFuZC5qcyIsICIuLi9ub2RlX21vZHVsZXMvY2xpcGFuaW9uL2xpYi9jb3JlLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9jbGlwYW5pb24vbGliL3BsYXRmb3JtL25vZGUuanMiLCAiLi4vbm9kZV9tb2R1bGVzL2NsaXBhbmlvbi9saWIvYWR2YW5jZWQvSGVscENvbW1hbmQuanMiLCAiLi4vbm9kZV9tb2R1bGVzL2NsaXBhbmlvbi9saWIvYWR2YW5jZWQvQ2xpLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9jbGlwYW5pb24vbGliL2FkdmFuY2VkL2J1aWx0aW5zL2RlZmluaXRpb25zLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9jbGlwYW5pb24vbGliL2FkdmFuY2VkL2J1aWx0aW5zL2hlbHAuanMiLCAiLi4vbm9kZV9tb2R1bGVzL2NsaXBhbmlvbi9saWIvYWR2YW5jZWQvYnVpbHRpbnMvdmVyc2lvbi5qcyIsICIuLi9ub2RlX21vZHVsZXMvY2xpcGFuaW9uL2xpYi9hZHZhbmNlZC9idWlsdGlucy9pbmRleC5qcyIsICIuLi9ub2RlX21vZHVsZXMvY2xpcGFuaW9uL2xpYi9hZHZhbmNlZC9vcHRpb25zL0FycmF5LmpzIiwgIi4uL25vZGVfbW9kdWxlcy9jbGlwYW5pb24vbGliL2FkdmFuY2VkL29wdGlvbnMvQm9vbGVhbi5qcyIsICIuLi9ub2RlX21vZHVsZXMvY2xpcGFuaW9uL2xpYi9hZHZhbmNlZC9vcHRpb25zL0NvdW50ZXIuanMiLCAiLi4vbm9kZV9tb2R1bGVzL2NsaXBhbmlvbi9saWIvYWR2YW5jZWQvb3B0aW9ucy9Qcm94eS5qcyIsICIuLi9ub2RlX21vZHVsZXMvY2xpcGFuaW9uL2xpYi9hZHZhbmNlZC9vcHRpb25zL1Jlc3QuanMiLCAiLi4vbm9kZV9tb2R1bGVzL2NsaXBhbmlvbi9saWIvYWR2YW5jZWQvb3B0aW9ucy9TdHJpbmcuanMiLCAiLi4vbm9kZV9tb2R1bGVzL2NsaXBhbmlvbi9saWIvYWR2YW5jZWQvb3B0aW9ucy9pbmRleC5qcyIsICIuLi9ub2RlX21vZHVsZXMvY2xpcGFuaW9uL2xpYi9hZHZhbmNlZC9pbmRleC5qcyIsICIuLi9ub2RlX21vZHVsZXMvcC10cnkvaW5kZXguanMiLCAiLi4vbm9kZV9tb2R1bGVzL3AtbGltaXQvaW5kZXguanMiLCAiLi4vbm9kZV9tb2R1bGVzL0B5YXJucGtnL2NvcmUvbGliL01lc3NhZ2VOYW1lLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9zZW12ZXIvaW50ZXJuYWwvY29uc3RhbnRzLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9zZW12ZXIvaW50ZXJuYWwvZGVidWcuanMiLCAiLi4vbm9kZV9tb2R1bGVzL3NlbXZlci9pbnRlcm5hbC9yZS5qcyIsICIuLi9ub2RlX21vZHVsZXMvc2VtdmVyL2ludGVybmFsL3BhcnNlLW9wdGlvbnMuanMiLCAiLi4vbm9kZV9tb2R1bGVzL3NlbXZlci9pbnRlcm5hbC9pZGVudGlmaWVycy5qcyIsICIuLi9ub2RlX21vZHVsZXMvc2VtdmVyL2NsYXNzZXMvc2VtdmVyLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9zZW12ZXIvZnVuY3Rpb25zL3BhcnNlLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9zZW12ZXIvZnVuY3Rpb25zL3ZhbGlkLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9zZW12ZXIvZnVuY3Rpb25zL2NsZWFuLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9zZW12ZXIvZnVuY3Rpb25zL2luYy5qcyIsICIuLi9ub2RlX21vZHVsZXMvc2VtdmVyL2Z1bmN0aW9ucy9jb21wYXJlLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9zZW12ZXIvZnVuY3Rpb25zL2VxLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9zZW12ZXIvZnVuY3Rpb25zL2RpZmYuanMiLCAiLi4vbm9kZV9tb2R1bGVzL3NlbXZlci9mdW5jdGlvbnMvbWFqb3IuanMiLCAiLi4vbm9kZV9tb2R1bGVzL3NlbXZlci9mdW5jdGlvbnMvbWlub3IuanMiLCAiLi4vbm9kZV9tb2R1bGVzL3NlbXZlci9mdW5jdGlvbnMvcGF0Y2guanMiLCAiLi4vbm9kZV9tb2R1bGVzL3NlbXZlci9mdW5jdGlvbnMvcHJlcmVsZWFzZS5qcyIsICIuLi9ub2RlX21vZHVsZXMvc2VtdmVyL2Z1bmN0aW9ucy9yY29tcGFyZS5qcyIsICIuLi9ub2RlX21vZHVsZXMvc2VtdmVyL2Z1bmN0aW9ucy9jb21wYXJlLWxvb3NlLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9zZW12ZXIvZnVuY3Rpb25zL2NvbXBhcmUtYnVpbGQuanMiLCAiLi4vbm9kZV9tb2R1bGVzL3NlbXZlci9mdW5jdGlvbnMvc29ydC5qcyIsICIuLi9ub2RlX21vZHVsZXMvc2VtdmVyL2Z1bmN0aW9ucy9yc29ydC5qcyIsICIuLi9ub2RlX21vZHVsZXMvc2VtdmVyL2Z1bmN0aW9ucy9ndC5qcyIsICIuLi9ub2RlX21vZHVsZXMvc2VtdmVyL2Z1bmN0aW9ucy9sdC5qcyIsICIuLi9ub2RlX21vZHVsZXMvc2VtdmVyL2Z1bmN0aW9ucy9uZXEuanMiLCAiLi4vbm9kZV9tb2R1bGVzL3NlbXZlci9mdW5jdGlvbnMvZ3RlLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9zZW12ZXIvZnVuY3Rpb25zL2x0ZS5qcyIsICIuLi9ub2RlX21vZHVsZXMvc2VtdmVyL2Z1bmN0aW9ucy9jbXAuanMiLCAiLi4vbm9kZV9tb2R1bGVzL3NlbXZlci9mdW5jdGlvbnMvY29lcmNlLmpzIiwgIi4uL25vZGVfbW9kdWxlcy95YWxsaXN0L2l0ZXJhdG9yLmpzIiwgIi4uL25vZGVfbW9kdWxlcy95YWxsaXN0L3lhbGxpc3QuanMiLCAiLi4vbm9kZV9tb2R1bGVzL3NlbXZlci9ub2RlX21vZHVsZXMvbHJ1LWNhY2hlL2luZGV4LmpzIiwgIi4uL25vZGVfbW9kdWxlcy9zZW12ZXIvY2xhc3Nlcy9yYW5nZS5qcyIsICIuLi9ub2RlX21vZHVsZXMvc2VtdmVyL2NsYXNzZXMvY29tcGFyYXRvci5qcyIsICIuLi9ub2RlX21vZHVsZXMvc2VtdmVyL2Z1bmN0aW9ucy9zYXRpc2ZpZXMuanMiLCAiLi4vbm9kZV9tb2R1bGVzL3NlbXZlci9yYW5nZXMvdG8tY29tcGFyYXRvcnMuanMiLCAiLi4vbm9kZV9tb2R1bGVzL3NlbXZlci9yYW5nZXMvbWF4LXNhdGlzZnlpbmcuanMiLCAiLi4vbm9kZV9tb2R1bGVzL3NlbXZlci9yYW5nZXMvbWluLXNhdGlzZnlpbmcuanMiLCAiLi4vbm9kZV9tb2R1bGVzL3NlbXZlci9yYW5nZXMvbWluLXZlcnNpb24uanMiLCAiLi4vbm9kZV9tb2R1bGVzL3NlbXZlci9yYW5nZXMvdmFsaWQuanMiLCAiLi4vbm9kZV9tb2R1bGVzL3NlbXZlci9yYW5nZXMvb3V0c2lkZS5qcyIsICIuLi9ub2RlX21vZHVsZXMvc2VtdmVyL3Jhbmdlcy9ndHIuanMiLCAiLi4vbm9kZV9tb2R1bGVzL3NlbXZlci9yYW5nZXMvbHRyLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9zZW12ZXIvcmFuZ2VzL2ludGVyc2VjdHMuanMiLCAiLi4vbm9kZV9tb2R1bGVzL3NlbXZlci9yYW5nZXMvc2ltcGxpZnkuanMiLCAiLi4vbm9kZV9tb2R1bGVzL3NlbXZlci9yYW5nZXMvc3Vic2V0LmpzIiwgIi4uL25vZGVfbW9kdWxlcy9zZW12ZXIvaW5kZXguanMiLCAiLi4vbm9kZV9tb2R1bGVzL3Rpbnlsb2dpYy9ncmFtbWFyLmpzIiwgIi4uL25vZGVfbW9kdWxlcy90aW55bG9naWMvaW5kZXguanMiLCAiLi4vbm9kZV9tb2R1bGVzL2NvbG9yLW5hbWUvaW5kZXguanMiLCAiLi4vbm9kZV9tb2R1bGVzL2NvbG9yLWNvbnZlcnQvY29udmVyc2lvbnMuanMiLCAiLi4vbm9kZV9tb2R1bGVzL2NvbG9yLWNvbnZlcnQvcm91dGUuanMiLCAiLi4vbm9kZV9tb2R1bGVzL2NvbG9yLWNvbnZlcnQvaW5kZXguanMiLCAiLi4vbm9kZV9tb2R1bGVzL2Fuc2ktc3R5bGVzL2luZGV4LmpzIiwgIi4uL25vZGVfbW9kdWxlcy9oYXMtZmxhZy9pbmRleC5qcyIsICIuLi9ub2RlX21vZHVsZXMvY2hhbGsvbm9kZV9tb2R1bGVzL3N1cHBvcnRzLWNvbG9yL2luZGV4LmpzIiwgIi4uL25vZGVfbW9kdWxlcy9jaGFsay9zb3VyY2UvdXRpbC5qcyIsICIuLi9ub2RlX21vZHVsZXMvY2hhbGsvc291cmNlL3RlbXBsYXRlcy5qcyIsICIuLi9ub2RlX21vZHVsZXMvY2hhbGsvc291cmNlL2luZGV4LmpzIiwgIi4uL25vZGVfbW9kdWxlcy9icmFjZXMvbGliL3V0aWxzLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9icmFjZXMvbGliL3N0cmluZ2lmeS5qcyIsICIuLi9ub2RlX21vZHVsZXMvaXMtbnVtYmVyL2luZGV4LmpzIiwgIi4uL25vZGVfbW9kdWxlcy90by1yZWdleC1yYW5nZS9pbmRleC5qcyIsICIuLi9ub2RlX21vZHVsZXMvZmlsbC1yYW5nZS9pbmRleC5qcyIsICIuLi9ub2RlX21vZHVsZXMvYnJhY2VzL2xpYi9jb21waWxlLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9icmFjZXMvbGliL2V4cGFuZC5qcyIsICIuLi9ub2RlX21vZHVsZXMvYnJhY2VzL2xpYi9jb25zdGFudHMuanMiLCAiLi4vbm9kZV9tb2R1bGVzL2JyYWNlcy9saWIvcGFyc2UuanMiLCAiLi4vbm9kZV9tb2R1bGVzL2JyYWNlcy9pbmRleC5qcyIsICIuLi9ub2RlX21vZHVsZXMvcGljb21hdGNoL2xpYi9jb25zdGFudHMuanMiLCAiLi4vbm9kZV9tb2R1bGVzL3BpY29tYXRjaC9saWIvdXRpbHMuanMiLCAiLi4vbm9kZV9tb2R1bGVzL3BpY29tYXRjaC9saWIvc2Nhbi5qcyIsICIuLi9ub2RlX21vZHVsZXMvcGljb21hdGNoL2xpYi9wYXJzZS5qcyIsICIuLi9ub2RlX21vZHVsZXMvcGljb21hdGNoL2xpYi9waWNvbWF0Y2guanMiLCAiLi4vbm9kZV9tb2R1bGVzL3BpY29tYXRjaC9pbmRleC5qcyIsICIuLi9ub2RlX21vZHVsZXMvbWljcm9tYXRjaC9pbmRleC5qcyIsICIuLi9ub2RlX21vZHVsZXMvYW5zaS1yZWdleC9pbmRleC5qcyIsICIuLi9ub2RlX21vZHVsZXMvc3RyaXAtYW5zaS9pbmRleC5qcyIsICIuLi9ub2RlX21vZHVsZXMvbG9kYXNoL19saXN0Q2FjaGVDbGVhci5qcyIsICIuLi9ub2RlX21vZHVsZXMvbG9kYXNoL2VxLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Fzc29jSW5kZXhPZi5qcyIsICIuLi9ub2RlX21vZHVsZXMvbG9kYXNoL19saXN0Q2FjaGVEZWxldGUuanMiLCAiLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fbGlzdENhY2hlR2V0LmpzIiwgIi4uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2xpc3RDYWNoZUhhcy5qcyIsICIuLi9ub2RlX21vZHVsZXMvbG9kYXNoL19saXN0Q2FjaGVTZXQuanMiLCAiLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fTGlzdENhY2hlLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3N0YWNrQ2xlYXIuanMiLCAiLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fc3RhY2tEZWxldGUuanMiLCAiLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fc3RhY2tHZXQuanMiLCAiLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fc3RhY2tIYXMuanMiLCAiLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fZnJlZUdsb2JhbC5qcyIsICIuLi9ub2RlX21vZHVsZXMvbG9kYXNoL19yb290LmpzIiwgIi4uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX1N5bWJvbC5qcyIsICIuLi9ub2RlX21vZHVsZXMvbG9kYXNoL19nZXRSYXdUYWcuanMiLCAiLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fb2JqZWN0VG9TdHJpbmcuanMiLCAiLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUdldFRhZy5qcyIsICIuLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzT2JqZWN0LmpzIiwgIi4uL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNGdW5jdGlvbi5qcyIsICIuLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jb3JlSnNEYXRhLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2lzTWFza2VkLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3RvU291cmNlLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VJc05hdGl2ZS5qcyIsICIuLi9ub2RlX21vZHVsZXMvbG9kYXNoL19nZXRWYWx1ZS5qcyIsICIuLi9ub2RlX21vZHVsZXMvbG9kYXNoL19nZXROYXRpdmUuanMiLCAiLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fTWFwLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX25hdGl2ZUNyZWF0ZS5qcyIsICIuLi9ub2RlX21vZHVsZXMvbG9kYXNoL19oYXNoQ2xlYXIuanMiLCAiLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC9faGFzaERlbGV0ZS5qcyIsICIuLi9ub2RlX21vZHVsZXMvbG9kYXNoL19oYXNoR2V0LmpzIiwgIi4uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2hhc2hIYXMuanMiLCAiLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC9faGFzaFNldC5qcyIsICIuLi9ub2RlX21vZHVsZXMvbG9kYXNoL19IYXNoLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX21hcENhY2hlQ2xlYXIuanMiLCAiLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC9faXNLZXlhYmxlLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2dldE1hcERhdGEuanMiLCAiLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fbWFwQ2FjaGVEZWxldGUuanMiLCAiLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fbWFwQ2FjaGVHZXQuanMiLCAiLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fbWFwQ2FjaGVIYXMuanMiLCAiLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fbWFwQ2FjaGVTZXQuanMiLCAiLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fTWFwQ2FjaGUuanMiLCAiLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fc3RhY2tTZXQuanMiLCAiLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fU3RhY2suanMiLCAiLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fc2V0Q2FjaGVBZGQuanMiLCAiLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fc2V0Q2FjaGVIYXMuanMiLCAiLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fU2V0Q2FjaGUuanMiLCAiLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYXJyYXlTb21lLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2NhY2hlSGFzLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2VxdWFsQXJyYXlzLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX1VpbnQ4QXJyYXkuanMiLCAiLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fbWFwVG9BcnJheS5qcyIsICIuLi9ub2RlX21vZHVsZXMvbG9kYXNoL19zZXRUb0FycmF5LmpzIiwgIi4uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2VxdWFsQnlUYWcuanMiLCAiLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYXJyYXlQdXNoLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNBcnJheS5qcyIsICIuLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlR2V0QWxsS2V5cy5qcyIsICIuLi9ub2RlX21vZHVsZXMvbG9kYXNoL19hcnJheUZpbHRlci5qcyIsICIuLi9ub2RlX21vZHVsZXMvbG9kYXNoL3N0dWJBcnJheS5qcyIsICIuLi9ub2RlX21vZHVsZXMvbG9kYXNoL19nZXRTeW1ib2xzLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VUaW1lcy5qcyIsICIuLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzT2JqZWN0TGlrZS5qcyIsICIuLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSXNBcmd1bWVudHMuanMiLCAiLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc0FyZ3VtZW50cy5qcyIsICIuLi9ub2RlX21vZHVsZXMvbG9kYXNoL3N0dWJGYWxzZS5qcyIsICIuLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzQnVmZmVyLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2lzSW5kZXguanMiLCAiLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc0xlbmd0aC5qcyIsICIuLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSXNUeXBlZEFycmF5LmpzIiwgIi4uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VVbmFyeS5qcyIsICIuLi9ub2RlX21vZHVsZXMvbG9kYXNoL19ub2RlVXRpbC5qcyIsICIuLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzVHlwZWRBcnJheS5qcyIsICIuLi9ub2RlX21vZHVsZXMvbG9kYXNoL19hcnJheUxpa2VLZXlzLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2lzUHJvdG90eXBlLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX292ZXJBcmcuanMiLCAiLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fbmF0aXZlS2V5cy5qcyIsICIuLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlS2V5cy5qcyIsICIuLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzQXJyYXlMaWtlLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9sb2Rhc2gva2V5cy5qcyIsICIuLi9ub2RlX21vZHVsZXMvbG9kYXNoL19nZXRBbGxLZXlzLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2VxdWFsT2JqZWN0cy5qcyIsICIuLi9ub2RlX21vZHVsZXMvbG9kYXNoL19EYXRhVmlldy5qcyIsICIuLi9ub2RlX21vZHVsZXMvbG9kYXNoL19Qcm9taXNlLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX1NldC5qcyIsICIuLi9ub2RlX21vZHVsZXMvbG9kYXNoL19XZWFrTWFwLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2dldFRhZy5qcyIsICIuLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSXNFcXVhbERlZXAuanMiLCAiLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUlzRXF1YWwuanMiLCAiLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc0VxdWFsLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2RlZmluZVByb3BlcnR5LmpzIiwgIi4uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VBc3NpZ25WYWx1ZS5qcyIsICIuLi9ub2RlX21vZHVsZXMvbG9kYXNoL19hc3NpZ25NZXJnZVZhbHVlLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2NyZWF0ZUJhc2VGb3IuanMiLCAiLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUZvci5qcyIsICIuLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jbG9uZUJ1ZmZlci5qcyIsICIuLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jbG9uZUFycmF5QnVmZmVyLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Nsb25lVHlwZWRBcnJheS5qcyIsICIuLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jb3B5QXJyYXkuanMiLCAiLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUNyZWF0ZS5qcyIsICIuLi9ub2RlX21vZHVsZXMvbG9kYXNoL19nZXRQcm90b3R5cGUuanMiLCAiLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC9faW5pdENsb25lT2JqZWN0LmpzIiwgIi4uL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNBcnJheUxpa2VPYmplY3QuanMiLCAiLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc1BsYWluT2JqZWN0LmpzIiwgIi4uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3NhZmVHZXQuanMiLCAiLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYXNzaWduVmFsdWUuanMiLCAiLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fY29weU9iamVjdC5qcyIsICIuLi9ub2RlX21vZHVsZXMvbG9kYXNoL19uYXRpdmVLZXlzSW4uanMiLCAiLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUtleXNJbi5qcyIsICIuLi9ub2RlX21vZHVsZXMvbG9kYXNoL2tleXNJbi5qcyIsICIuLi9ub2RlX21vZHVsZXMvbG9kYXNoL3RvUGxhaW5PYmplY3QuanMiLCAiLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZU1lcmdlRGVlcC5qcyIsICIuLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlTWVyZ2UuanMiLCAiLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pZGVudGl0eS5qcyIsICIuLi9ub2RlX21vZHVsZXMvbG9kYXNoL19hcHBseS5qcyIsICIuLi9ub2RlX21vZHVsZXMvbG9kYXNoL19vdmVyUmVzdC5qcyIsICIuLi9ub2RlX21vZHVsZXMvbG9kYXNoL2NvbnN0YW50LmpzIiwgIi4uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VTZXRUb1N0cmluZy5qcyIsICIuLi9ub2RlX21vZHVsZXMvbG9kYXNoL19zaG9ydE91dC5qcyIsICIuLi9ub2RlX21vZHVsZXMvbG9kYXNoL19zZXRUb1N0cmluZy5qcyIsICIuLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlUmVzdC5qcyIsICIuLi9ub2RlX21vZHVsZXMvbG9kYXNoL19pc0l0ZXJhdGVlQ2FsbC5qcyIsICIuLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jcmVhdGVBc3NpZ25lci5qcyIsICIuLi9ub2RlX21vZHVsZXMvbG9kYXNoL21lcmdlV2l0aC5qcyIsICIuLi9ub2RlX21vZHVsZXMvQHlhcm5wa2cvY29yZS9saWIvbWlzY1V0aWxzLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9AeWFybnBrZy9jb3JlL2xpYi90eXBlcy5qcyIsICIuLi9ub2RlX21vZHVsZXMvQHlhcm5wa2cvY29yZS9saWIvZm9ybWF0VXRpbHMuanMiLCAiLi4vbm9kZV9tb2R1bGVzL2FycmF5LXVuaW9uL2luZGV4LmpzIiwgIi4uL25vZGVfbW9kdWxlcy9tZXJnZTIvaW5kZXguanMiLCAiLi4vbm9kZV9tb2R1bGVzL2Zhc3QtZ2xvYi9vdXQvdXRpbHMvYXJyYXkuanMiLCAiLi4vbm9kZV9tb2R1bGVzL2Zhc3QtZ2xvYi9vdXQvdXRpbHMvZXJybm8uanMiLCAiLi4vbm9kZV9tb2R1bGVzL2Zhc3QtZ2xvYi9vdXQvdXRpbHMvZnMuanMiLCAiLi4vbm9kZV9tb2R1bGVzL2Zhc3QtZ2xvYi9vdXQvdXRpbHMvcGF0aC5qcyIsICIuLi9ub2RlX21vZHVsZXMvaXMtZXh0Z2xvYi9pbmRleC5qcyIsICIuLi9ub2RlX21vZHVsZXMvaXMtZ2xvYi9pbmRleC5qcyIsICIuLi9ub2RlX21vZHVsZXMvZ2xvYi1wYXJlbnQvaW5kZXguanMiLCAiLi4vbm9kZV9tb2R1bGVzL2Zhc3QtZ2xvYi9vdXQvdXRpbHMvcGF0dGVybi5qcyIsICIuLi9ub2RlX21vZHVsZXMvZmFzdC1nbG9iL291dC91dGlscy9zdHJlYW0uanMiLCAiLi4vbm9kZV9tb2R1bGVzL2Zhc3QtZ2xvYi9vdXQvdXRpbHMvc3RyaW5nLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9mYXN0LWdsb2Ivb3V0L3V0aWxzL2luZGV4LmpzIiwgIi4uL25vZGVfbW9kdWxlcy9mYXN0LWdsb2Ivb3V0L21hbmFnZXJzL3Rhc2tzLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9mYXN0LWdsb2Ivb3V0L21hbmFnZXJzL3BhdHRlcm5zLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9Abm9kZWxpYi9mcy5zdGF0L291dC9wcm92aWRlcnMvYXN5bmMuanMiLCAiLi4vbm9kZV9tb2R1bGVzL0Bub2RlbGliL2ZzLnN0YXQvb3V0L3Byb3ZpZGVycy9zeW5jLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9Abm9kZWxpYi9mcy5zdGF0L291dC9hZGFwdGVycy9mcy5qcyIsICIuLi9ub2RlX21vZHVsZXMvQG5vZGVsaWIvZnMuc3RhdC9vdXQvc2V0dGluZ3MuanMiLCAiLi4vbm9kZV9tb2R1bGVzL0Bub2RlbGliL2ZzLnN0YXQvb3V0L2luZGV4LmpzIiwgIi4uL25vZGVfbW9kdWxlcy9xdWV1ZS1taWNyb3Rhc2svaW5kZXguanMiLCAiLi4vbm9kZV9tb2R1bGVzL3J1bi1wYXJhbGxlbC9pbmRleC5qcyIsICIuLi9ub2RlX21vZHVsZXMvQG5vZGVsaWIvZnMuc2NhbmRpci9vdXQvY29uc3RhbnRzLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9Abm9kZWxpYi9mcy5zY2FuZGlyL291dC91dGlscy9mcy5qcyIsICIuLi9ub2RlX21vZHVsZXMvQG5vZGVsaWIvZnMuc2NhbmRpci9vdXQvdXRpbHMvaW5kZXguanMiLCAiLi4vbm9kZV9tb2R1bGVzL0Bub2RlbGliL2ZzLnNjYW5kaXIvb3V0L3Byb3ZpZGVycy9jb21tb24uanMiLCAiLi4vbm9kZV9tb2R1bGVzL0Bub2RlbGliL2ZzLnNjYW5kaXIvb3V0L3Byb3ZpZGVycy9hc3luYy5qcyIsICIuLi9ub2RlX21vZHVsZXMvQG5vZGVsaWIvZnMuc2NhbmRpci9vdXQvcHJvdmlkZXJzL3N5bmMuanMiLCAiLi4vbm9kZV9tb2R1bGVzL0Bub2RlbGliL2ZzLnNjYW5kaXIvb3V0L2FkYXB0ZXJzL2ZzLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9Abm9kZWxpYi9mcy5zY2FuZGlyL291dC9zZXR0aW5ncy5qcyIsICIuLi9ub2RlX21vZHVsZXMvQG5vZGVsaWIvZnMuc2NhbmRpci9vdXQvaW5kZXguanMiLCAiLi4vbm9kZV9tb2R1bGVzL3JldXNpZnkvcmV1c2lmeS5qcyIsICIuLi9ub2RlX21vZHVsZXMvZmFzdHEvcXVldWUuanMiLCAiLi4vbm9kZV9tb2R1bGVzL0Bub2RlbGliL2ZzLndhbGsvb3V0L3JlYWRlcnMvY29tbW9uLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9Abm9kZWxpYi9mcy53YWxrL291dC9yZWFkZXJzL3JlYWRlci5qcyIsICIuLi9ub2RlX21vZHVsZXMvQG5vZGVsaWIvZnMud2Fsay9vdXQvcmVhZGVycy9hc3luYy5qcyIsICIuLi9ub2RlX21vZHVsZXMvQG5vZGVsaWIvZnMud2Fsay9vdXQvcHJvdmlkZXJzL2FzeW5jLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9Abm9kZWxpYi9mcy53YWxrL291dC9wcm92aWRlcnMvc3RyZWFtLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9Abm9kZWxpYi9mcy53YWxrL291dC9yZWFkZXJzL3N5bmMuanMiLCAiLi4vbm9kZV9tb2R1bGVzL0Bub2RlbGliL2ZzLndhbGsvb3V0L3Byb3ZpZGVycy9zeW5jLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9Abm9kZWxpYi9mcy53YWxrL291dC9zZXR0aW5ncy5qcyIsICIuLi9ub2RlX21vZHVsZXMvQG5vZGVsaWIvZnMud2Fsay9vdXQvaW5kZXguanMiLCAiLi4vbm9kZV9tb2R1bGVzL2Zhc3QtZ2xvYi9vdXQvcmVhZGVycy9yZWFkZXIuanMiLCAiLi4vbm9kZV9tb2R1bGVzL2Zhc3QtZ2xvYi9vdXQvcmVhZGVycy9zdHJlYW0uanMiLCAiLi4vbm9kZV9tb2R1bGVzL2Zhc3QtZ2xvYi9vdXQvcmVhZGVycy9hc3luYy5qcyIsICIuLi9ub2RlX21vZHVsZXMvZmFzdC1nbG9iL291dC9wcm92aWRlcnMvbWF0Y2hlcnMvbWF0Y2hlci5qcyIsICIuLi9ub2RlX21vZHVsZXMvZmFzdC1nbG9iL291dC9wcm92aWRlcnMvbWF0Y2hlcnMvcGFydGlhbC5qcyIsICIuLi9ub2RlX21vZHVsZXMvZmFzdC1nbG9iL291dC9wcm92aWRlcnMvZmlsdGVycy9kZWVwLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9mYXN0LWdsb2Ivb3V0L3Byb3ZpZGVycy9maWx0ZXJzL2VudHJ5LmpzIiwgIi4uL25vZGVfbW9kdWxlcy9mYXN0LWdsb2Ivb3V0L3Byb3ZpZGVycy9maWx0ZXJzL2Vycm9yLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9mYXN0LWdsb2Ivb3V0L3Byb3ZpZGVycy90cmFuc2Zvcm1lcnMvZW50cnkuanMiLCAiLi4vbm9kZV9tb2R1bGVzL2Zhc3QtZ2xvYi9vdXQvcHJvdmlkZXJzL3Byb3ZpZGVyLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9mYXN0LWdsb2Ivb3V0L3Byb3ZpZGVycy9hc3luYy5qcyIsICIuLi9ub2RlX21vZHVsZXMvZmFzdC1nbG9iL291dC9wcm92aWRlcnMvc3RyZWFtLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9mYXN0LWdsb2Ivb3V0L3JlYWRlcnMvc3luYy5qcyIsICIuLi9ub2RlX21vZHVsZXMvZmFzdC1nbG9iL291dC9wcm92aWRlcnMvc3luYy5qcyIsICIuLi9ub2RlX21vZHVsZXMvZmFzdC1nbG9iL291dC9zZXR0aW5ncy5qcyIsICIuLi9ub2RlX21vZHVsZXMvZmFzdC1nbG9iL291dC9pbmRleC5qcyIsICIuLi9ub2RlX21vZHVsZXMvcGF0aC10eXBlL2luZGV4LmpzIiwgIi4uL25vZGVfbW9kdWxlcy9kaXItZ2xvYi9pbmRleC5qcyIsICIuLi9ub2RlX21vZHVsZXMvaWdub3JlL2luZGV4LmpzIiwgIi4uL25vZGVfbW9kdWxlcy9zbGFzaC9pbmRleC5qcyIsICIuLi9ub2RlX21vZHVsZXMvZ2xvYmJ5L2dpdGlnbm9yZS5qcyIsICIuLi9ub2RlX21vZHVsZXMvZ2xvYmJ5L3N0cmVhbS11dGlscy5qcyIsICIuLi9ub2RlX21vZHVsZXMvZ2xvYmJ5L2luZGV4LmpzIiwgIi4uL25vZGVfbW9kdWxlcy9AeWFybnBrZy9jb3JlL2xpYi9oYXNoVXRpbHMuanMiLCAiLi4vbm9kZV9tb2R1bGVzL0B5YXJucGtnL2NvcmUvbGliL3N0cnVjdFV0aWxzLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9AeWFybnBrZy9jb3JlL2xpYi9Db3JlUGx1Z2luLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9AeWFybnBrZy9jb3JlL2xpYi9Xb3Jrc3BhY2VSZXNvbHZlci5qcyIsICIuLi9ub2RlX21vZHVsZXMvQHlhcm5wa2cvY29yZS9saWIvc2VtdmVyVXRpbHMuanMiLCAiLi4vbm9kZV9tb2R1bGVzL0B5YXJucGtnL2NvcmUvbGliL01hbmlmZXN0LmpzIiwgIi4uL25vZGVfbW9kdWxlcy9sb2Rhc2gvbm93LmpzIiwgIi4uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3RyaW1tZWRFbmRJbmRleC5qcyIsICIuLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlVHJpbS5qcyIsICIuLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzU3ltYm9sLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9sb2Rhc2gvdG9OdW1iZXIuanMiLCAiLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC9kZWJvdW5jZS5qcyIsICIuLi9ub2RlX21vZHVsZXMvbG9kYXNoL3Rocm90dGxlLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9AeWFybnBrZy9jb3JlL2xpYi9SZXBvcnQuanMiLCAiLi4vbm9kZV9tb2R1bGVzL0B5YXJucGtnL2NvcmUvbGliL011bHRpRmV0Y2hlci5qcyIsICIuLi9ub2RlX21vZHVsZXMvQHlhcm5wa2cvY29yZS9saWIvTXVsdGlSZXNvbHZlci5qcyIsICIuLi9ub2RlX21vZHVsZXMvQHlhcm5wa2cvY29yZS9saWIvVmlydHVhbEZldGNoZXIuanMiLCAiLi4vbm9kZV9tb2R1bGVzL0B5YXJucGtnL2NvcmUvbGliL1ZpcnR1YWxSZXNvbHZlci5qcyIsICIuLi9ub2RlX21vZHVsZXMvQHlhcm5wa2cvY29yZS9saWIvV29ya3NwYWNlRmV0Y2hlci5qcyIsICIuLi9ub2RlX21vZHVsZXMvQHlhcm5wa2cvY29yZS9saWIvZm9sZGVyVXRpbHMuanMiLCAiLi4vbm9kZV9tb2R1bGVzL3R1bm5lbC9saWIvdHVubmVsLmpzIiwgIi4uL25vZGVfbW9kdWxlcy90dW5uZWwvaW5kZXguanMiLCAiLi4vbm9kZV9tb2R1bGVzL0BzaW5kcmVzb3JodXMvaXMvZGlzdC9pbmRleC5qcyIsICIuLi9ub2RlX21vZHVsZXMvcC1jYW5jZWxhYmxlL2luZGV4LmpzIiwgIi4uL25vZGVfbW9kdWxlcy9kZWZlci10by1jb25uZWN0L2Rpc3Qvc291cmNlL2luZGV4LmpzIiwgIi4uL25vZGVfbW9kdWxlcy9Ac3ptYXJjemFrL2h0dHAtdGltZXIvZGlzdC9zb3VyY2UvaW5kZXguanMiLCAiLi4vbm9kZV9tb2R1bGVzL2NhY2hlYWJsZS1sb29rdXAvc291cmNlL2luZGV4LmpzIiwgIi4uL25vZGVfbW9kdWxlcy9ub3JtYWxpemUtdXJsL2luZGV4LmpzIiwgIi4uL25vZGVfbW9kdWxlcy93cmFwcHkvd3JhcHB5LmpzIiwgIi4uL25vZGVfbW9kdWxlcy9vbmNlL29uY2UuanMiLCAiLi4vbm9kZV9tb2R1bGVzL2VuZC1vZi1zdHJlYW0vaW5kZXguanMiLCAiLi4vbm9kZV9tb2R1bGVzL3B1bXAvaW5kZXguanMiLCAiLi4vbm9kZV9tb2R1bGVzL2dldC1zdHJlYW0vYnVmZmVyLXN0cmVhbS5qcyIsICIuLi9ub2RlX21vZHVsZXMvZ2V0LXN0cmVhbS9pbmRleC5qcyIsICIuLi9ub2RlX21vZHVsZXMvaHR0cC1jYWNoZS1zZW1hbnRpY3MvaW5kZXguanMiLCAiLi4vbm9kZV9tb2R1bGVzL2xvd2VyY2FzZS1rZXlzL2luZGV4LmpzIiwgIi4uL25vZGVfbW9kdWxlcy9yZXNwb25zZWxpa2Uvc3JjL2luZGV4LmpzIiwgIi4uL25vZGVfbW9kdWxlcy9taW1pYy1yZXNwb25zZS9pbmRleC5qcyIsICIuLi9ub2RlX21vZHVsZXMvY2xvbmUtcmVzcG9uc2Uvc3JjL2luZGV4LmpzIiwgIi4uL25vZGVfbW9kdWxlcy9qc29uLWJ1ZmZlci9pbmRleC5qcyIsICIuLi9ub2RlX21vZHVsZXMva2V5di9zcmMvaW5kZXguanMiLCAiLi4vbm9kZV9tb2R1bGVzL2NhY2hlYWJsZS1yZXF1ZXN0L3NyYy9pbmRleC5qcyIsICIuLi9ub2RlX21vZHVsZXMvZGVjb21wcmVzcy1yZXNwb25zZS9ub2RlX21vZHVsZXMvbWltaWMtcmVzcG9uc2UvaW5kZXguanMiLCAiLi4vbm9kZV9tb2R1bGVzL2RlY29tcHJlc3MtcmVzcG9uc2UvaW5kZXguanMiLCAiLi4vbm9kZV9tb2R1bGVzL3F1aWNrLWxydS9pbmRleC5qcyIsICIuLi9ub2RlX21vZHVsZXMvaHR0cDItd3JhcHBlci9zb3VyY2UvYWdlbnQuanMiLCAiLi4vbm9kZV9tb2R1bGVzL2h0dHAyLXdyYXBwZXIvc291cmNlL2luY29taW5nLW1lc3NhZ2UuanMiLCAiLi4vbm9kZV9tb2R1bGVzL2h0dHAyLXdyYXBwZXIvc291cmNlL3V0aWxzL3VybC10by1vcHRpb25zLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9odHRwMi13cmFwcGVyL3NvdXJjZS91dGlscy9wcm94eS1ldmVudHMuanMiLCAiLi4vbm9kZV9tb2R1bGVzL2h0dHAyLXdyYXBwZXIvc291cmNlL3V0aWxzL2lzLXJlcXVlc3QtcHNldWRvLWhlYWRlci5qcyIsICIuLi9ub2RlX21vZHVsZXMvaHR0cDItd3JhcHBlci9zb3VyY2UvdXRpbHMvZXJyb3JzLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9odHRwMi13cmFwcGVyL3NvdXJjZS9jbGllbnQtcmVxdWVzdC5qcyIsICIuLi9ub2RlX21vZHVsZXMvcmVzb2x2ZS1hbHBuL2luZGV4LmpzIiwgIi4uL25vZGVfbW9kdWxlcy9odHRwMi13cmFwcGVyL3NvdXJjZS91dGlscy9jYWxjdWxhdGUtc2VydmVyLW5hbWUuanMiLCAiLi4vbm9kZV9tb2R1bGVzL2h0dHAyLXdyYXBwZXIvc291cmNlL2F1dG8uanMiLCAiLi4vbm9kZV9tb2R1bGVzL2h0dHAyLXdyYXBwZXIvc291cmNlL2luZGV4LmpzIiwgIi4uL25vZGVfbW9kdWxlcy9nb3QvZGlzdC9zb3VyY2UvY29yZS91dGlscy9pcy1mb3JtLWRhdGEuanMiLCAiLi4vbm9kZV9tb2R1bGVzL2dvdC9kaXN0L3NvdXJjZS9jb3JlL3V0aWxzL2dldC1ib2R5LXNpemUuanMiLCAiLi4vbm9kZV9tb2R1bGVzL2dvdC9kaXN0L3NvdXJjZS9jb3JlL3V0aWxzL3Byb3h5LWV2ZW50cy5qcyIsICIuLi9ub2RlX21vZHVsZXMvZ290L2Rpc3Qvc291cmNlL2NvcmUvdXRpbHMvdW5oYW5kbGUuanMiLCAiLi4vbm9kZV9tb2R1bGVzL2dvdC9kaXN0L3NvdXJjZS9jb3JlL3V0aWxzL3RpbWVkLW91dC5qcyIsICIuLi9ub2RlX21vZHVsZXMvZ290L2Rpc3Qvc291cmNlL2NvcmUvdXRpbHMvdXJsLXRvLW9wdGlvbnMuanMiLCAiLi4vbm9kZV9tb2R1bGVzL2dvdC9kaXN0L3NvdXJjZS9jb3JlL3V0aWxzL29wdGlvbnMtdG8tdXJsLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9nb3QvZGlzdC9zb3VyY2UvY29yZS91dGlscy93ZWFrYWJsZS1tYXAuanMiLCAiLi4vbm9kZV9tb2R1bGVzL2dvdC9kaXN0L3NvdXJjZS9jb3JlL3V0aWxzL2dldC1idWZmZXIuanMiLCAiLi4vbm9kZV9tb2R1bGVzL2dvdC9kaXN0L3NvdXJjZS9jb3JlL3V0aWxzL2Rucy1pcC12ZXJzaW9uLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9nb3QvZGlzdC9zb3VyY2UvY29yZS91dGlscy9pcy1yZXNwb25zZS1vay5qcyIsICIuLi9ub2RlX21vZHVsZXMvZ290L2Rpc3Qvc291cmNlL3V0aWxzL2RlcHJlY2F0aW9uLXdhcm5pbmcuanMiLCAiLi4vbm9kZV9tb2R1bGVzL2dvdC9kaXN0L3NvdXJjZS9hcy1wcm9taXNlL25vcm1hbGl6ZS1hcmd1bWVudHMuanMiLCAiLi4vbm9kZV9tb2R1bGVzL2dvdC9kaXN0L3NvdXJjZS9jb3JlL2NhbGN1bGF0ZS1yZXRyeS1kZWxheS5qcyIsICIuLi9ub2RlX21vZHVsZXMvZ290L2Rpc3Qvc291cmNlL2NvcmUvaW5kZXguanMiLCAiLi4vbm9kZV9tb2R1bGVzL2dvdC9kaXN0L3NvdXJjZS9hcy1wcm9taXNlL3R5cGVzLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9nb3QvZGlzdC9zb3VyY2UvYXMtcHJvbWlzZS9wYXJzZS1ib2R5LmpzIiwgIi4uL25vZGVfbW9kdWxlcy9nb3QvZGlzdC9zb3VyY2UvYXMtcHJvbWlzZS9pbmRleC5qcyIsICIuLi9ub2RlX21vZHVsZXMvZ290L2Rpc3Qvc291cmNlL2FzLXByb21pc2UvY3JlYXRlLXJlamVjdGlvbi5qcyIsICIuLi9ub2RlX21vZHVsZXMvZ290L2Rpc3Qvc291cmNlL3V0aWxzL2RlZXAtZnJlZXplLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9nb3QvZGlzdC9zb3VyY2UvdHlwZXMuanMiLCAiLi4vbm9kZV9tb2R1bGVzL2dvdC9kaXN0L3NvdXJjZS9jcmVhdGUuanMiLCAiLi4vbm9kZV9tb2R1bGVzL2dvdC9kaXN0L3NvdXJjZS9pbmRleC5qcyIsICIuLi9ub2RlX21vZHVsZXMvQHlhcm5wa2cvY29yZS9saWIvaHR0cFV0aWxzLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9AeWFybnBrZy9jb3JlL2xpYi9ub2RlVXRpbHMuanMiLCAiLi4vbm9kZV9tb2R1bGVzL0B5YXJucGtnL2NvcmUvbGliL0NvbmZpZ3VyYXRpb24uanMiLCAiLi4vbm9kZV9tb2R1bGVzL0B5YXJucGtnL2NvcmUvbGliL2V4ZWNVdGlscy5qcyIsICIuLi9ub2RlX21vZHVsZXMvQHlhcm5wa2cvc2hlbGwvbGliL2NvbW1hbmRzL2VudHJ5LmpzIiwgIi4uL25vZGVfbW9kdWxlcy9AeWFybnBrZy9zaGVsbC9saWIvZXJyb3JzLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9AeWFybnBrZy9zaGVsbC9saWIvZ2xvYlV0aWxzLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9AeWFybnBrZy9zaGVsbC9saWIvcGlwZS5qcyIsICIuLi9ub2RlX21vZHVsZXMvQHlhcm5wa2cvc2hlbGwvbGliL2luZGV4LmpzIiwgIi4uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2FycmF5TWFwLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VUb1N0cmluZy5qcyIsICIuLi9ub2RlX21vZHVsZXMvbG9kYXNoL3RvU3RyaW5nLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VTbGljZS5qcyIsICIuLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jYXN0U2xpY2UuanMiLCAiLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC9faGFzVW5pY29kZS5qcyIsICIuLi9ub2RlX21vZHVsZXMvbG9kYXNoL19hc2NpaVRvQXJyYXkuanMiLCAiLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fdW5pY29kZVRvQXJyYXkuanMiLCAiLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fc3RyaW5nVG9BcnJheS5qcyIsICIuLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jcmVhdGVDYXNlRmlyc3QuanMiLCAiLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC91cHBlckZpcnN0LmpzIiwgIi4uL25vZGVfbW9kdWxlcy9sb2Rhc2gvY2FwaXRhbGl6ZS5qcyIsICIuLi9ub2RlX21vZHVsZXMvZ3JhcGhlbWUtc3BsaXR0ZXIvaW5kZXguanMiLCAiLi4vbm9kZV9tb2R1bGVzL0BhcmNhbmlzL3NsaWNlLWFuc2kvaW5kZXguanMiLCAiLi4vbm9kZV9tb2R1bGVzL0B5YXJucGtnL2NvcmUvbGliL1N0cmVhbVJlcG9ydC5qcyIsICIuLi9ub2RlX21vZHVsZXMvQHlhcm5wa2cvY29yZS9saWIvWWFyblZlcnNpb24uanMiLCAiLi4vbm9kZV9tb2R1bGVzL0B5YXJucGtnL2NvcmUvbGliL3NjcmlwdFV0aWxzLmpzIiwgIi4uL25vZGVfbW9kdWxlcy90YXIvbGliL2hpZ2gtbGV2ZWwtb3B0LmpzIiwgIi4uL25vZGVfbW9kdWxlcy9taW5pcGFzcy9pbmRleC5qcyIsICIuLi9ub2RlX21vZHVsZXMvbWluaXpsaWIvY29uc3RhbnRzLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9taW5pemxpYi9pbmRleC5qcyIsICIuLi9ub2RlX21vZHVsZXMvdGFyL2xpYi9ub3JtYWxpemUtd2luZG93cy1wYXRoLmpzIiwgIi4uL25vZGVfbW9kdWxlcy90YXIvbGliL3JlYWQtZW50cnkuanMiLCAiLi4vbm9kZV9tb2R1bGVzL3Rhci9saWIvdHlwZXMuanMiLCAiLi4vbm9kZV9tb2R1bGVzL3Rhci9saWIvbGFyZ2UtbnVtYmVycy5qcyIsICIuLi9ub2RlX21vZHVsZXMvdGFyL2xpYi9oZWFkZXIuanMiLCAiLi4vbm9kZV9tb2R1bGVzL3Rhci9saWIvcGF4LmpzIiwgIi4uL25vZGVfbW9kdWxlcy90YXIvbGliL3N0cmlwLXRyYWlsaW5nLXNsYXNoZXMuanMiLCAiLi4vbm9kZV9tb2R1bGVzL3Rhci9saWIvd2Fybi1taXhpbi5qcyIsICIuLi9ub2RlX21vZHVsZXMvdGFyL2xpYi93aW5jaGFycy5qcyIsICIuLi9ub2RlX21vZHVsZXMvdGFyL2xpYi9zdHJpcC1hYnNvbHV0ZS1wYXRoLmpzIiwgIi4uL25vZGVfbW9kdWxlcy90YXIvbGliL21vZGUtZml4LmpzIiwgIi4uL25vZGVfbW9kdWxlcy90YXIvbGliL3dyaXRlLWVudHJ5LmpzIiwgIi4uL25vZGVfbW9kdWxlcy90YXIvbGliL3BhY2suanMiLCAiLi4vbm9kZV9tb2R1bGVzL2ZzLW1pbmlwYXNzL2luZGV4LmpzIiwgIi4uL25vZGVfbW9kdWxlcy90YXIvbGliL3BhcnNlLmpzIiwgIi4uL25vZGVfbW9kdWxlcy90YXIvbGliL2xpc3QuanMiLCAiLi4vbm9kZV9tb2R1bGVzL3Rhci9saWIvY3JlYXRlLmpzIiwgIi4uL25vZGVfbW9kdWxlcy90YXIvbGliL3JlcGxhY2UuanMiLCAiLi4vbm9kZV9tb2R1bGVzL3Rhci9saWIvdXBkYXRlLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9ta2RpcnAvbGliL29wdHMtYXJnLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9ta2RpcnAvbGliL3BhdGgtYXJnLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9ta2RpcnAvbGliL2ZpbmQtbWFkZS5qcyIsICIuLi9ub2RlX21vZHVsZXMvbWtkaXJwL2xpYi9ta2RpcnAtbWFudWFsLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9ta2RpcnAvbGliL21rZGlycC1uYXRpdmUuanMiLCAiLi4vbm9kZV9tb2R1bGVzL21rZGlycC9saWIvdXNlLW5hdGl2ZS5qcyIsICIuLi9ub2RlX21vZHVsZXMvbWtkaXJwL2luZGV4LmpzIiwgIi4uL25vZGVfbW9kdWxlcy9jaG93bnIvY2hvd25yLmpzIiwgIi4uL25vZGVfbW9kdWxlcy90YXIvbGliL21rZGlyLmpzIiwgIi4uL25vZGVfbW9kdWxlcy90YXIvbGliL25vcm1hbGl6ZS11bmljb2RlLmpzIiwgIi4uL25vZGVfbW9kdWxlcy90YXIvbGliL3BhdGgtcmVzZXJ2YXRpb25zLmpzIiwgIi4uL25vZGVfbW9kdWxlcy90YXIvbGliL2dldC13cml0ZS1mbGFnLmpzIiwgIi4uL25vZGVfbW9kdWxlcy90YXIvbGliL3VucGFjay5qcyIsICIuLi9ub2RlX21vZHVsZXMvdGFyL2xpYi9leHRyYWN0LmpzIiwgIi4uL25vZGVfbW9kdWxlcy90YXIvaW5kZXguanMiLCAiLi4vbm9kZV9tb2R1bGVzL0B5YXJucGtnL2NvcmUvbGliL1dvcmtlclBvb2wuanMiLCAiLi4vbm9kZV9tb2R1bGVzL0B5YXJucGtnL2NvcmUvbGliL3dvcmtlci16aXAvaW5kZXguanMiLCAiLi4vbm9kZV9tb2R1bGVzL0B5YXJucGtnL2NvcmUvbGliL3RnelV0aWxzLmpzIiwgIi4uL25vZGVfbW9kdWxlcy90cmVlaWZ5L3RyZWVpZnkuanMiLCAiLi4vbm9kZV9tb2R1bGVzL0B5YXJucGtnL2NvcmUvbGliL3RyZWVVdGlscy5qcyIsICIuLi9ub2RlX21vZHVsZXMvQHlhcm5wa2cvY29yZS9saWIvQ2FjaGUuanMiLCAiLi4vbm9kZV9tb2R1bGVzL0B5YXJucGtnL2NvcmUvbGliL0luc3RhbGxlci5qcyIsICIuLi9ub2RlX21vZHVsZXMvQHlhcm5wa2cvY29yZS9saWIvTGVnYWN5TWlncmF0aW9uUmVzb2x2ZXIuanMiLCAiLi4vbm9kZV9tb2R1bGVzL0B5YXJucGtnL2NvcmUvbGliL0xpZ2h0UmVwb3J0LmpzIiwgIi4uL25vZGVfbW9kdWxlcy9AeWFybnBrZy9jb3JlL2xpYi9Mb2NrZmlsZVJlc29sdmVyLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9kaWZmL3NyYy9kaWZmL2Jhc2UuanMiLCAiLi4vbm9kZV9tb2R1bGVzL2RpZmYvc3JjL2RpZmYvY2hhcmFjdGVyLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9kaWZmL3NyYy91dGlsL3BhcmFtcy5qcyIsICIuLi9ub2RlX21vZHVsZXMvZGlmZi9zcmMvZGlmZi93b3JkLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9kaWZmL3NyYy9kaWZmL2xpbmUuanMiLCAiLi4vbm9kZV9tb2R1bGVzL2RpZmYvc3JjL2RpZmYvc2VudGVuY2UuanMiLCAiLi4vbm9kZV9tb2R1bGVzL2RpZmYvc3JjL2RpZmYvY3NzLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9kaWZmL3NyYy9kaWZmL2pzb24uanMiLCAiLi4vbm9kZV9tb2R1bGVzL2RpZmYvc3JjL2RpZmYvYXJyYXkuanMiLCAiLi4vbm9kZV9tb2R1bGVzL2RpZmYvc3JjL3BhdGNoL3BhcnNlLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9kaWZmL3NyYy91dGlsL2Rpc3RhbmNlLWl0ZXJhdG9yLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9kaWZmL3NyYy9wYXRjaC9hcHBseS5qcyIsICIuLi9ub2RlX21vZHVsZXMvZGlmZi9zcmMvcGF0Y2gvY3JlYXRlLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9kaWZmL3NyYy91dGlsL2FycmF5LmpzIiwgIi4uL25vZGVfbW9kdWxlcy9kaWZmL3NyYy9wYXRjaC9tZXJnZS5qcyIsICIuLi9ub2RlX21vZHVsZXMvZGlmZi9zcmMvY29udmVydC9kbXAuanMiLCAiLi4vbm9kZV9tb2R1bGVzL2RpZmYvc3JjL2NvbnZlcnQveG1sLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9kaWZmL3NyYy9pbmRleC5qcyIsICIuLi9ub2RlX21vZHVsZXMvbG9kYXNoL19pc0tleS5qcyIsICIuLi9ub2RlX21vZHVsZXMvbG9kYXNoL21lbW9pemUuanMiLCAiLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fbWVtb2l6ZUNhcHBlZC5qcyIsICIuLi9ub2RlX21vZHVsZXMvbG9kYXNoL19zdHJpbmdUb1BhdGguanMiLCAiLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fY2FzdFBhdGguanMiLCAiLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fdG9LZXkuanMiLCAiLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUdldC5qcyIsICIuLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlU2V0LmpzIiwgIi4uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VQaWNrQnkuanMiLCAiLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUhhc0luLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2hhc1BhdGguanMiLCAiLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC9oYXNJbi5qcyIsICIuLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlUGljay5qcyIsICIuLi9ub2RlX21vZHVsZXMvbG9kYXNoL19pc0ZsYXR0ZW5hYmxlLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VGbGF0dGVuLmpzIiwgIi4uL25vZGVfbW9kdWxlcy9sb2Rhc2gvZmxhdHRlbi5qcyIsICIuLi9ub2RlX21vZHVsZXMvbG9kYXNoL19mbGF0UmVzdC5qcyIsICIuLi9ub2RlX21vZHVsZXMvbG9kYXNoL3BpY2suanMiLCAiLi4vbm9kZV9tb2R1bGVzL0B5YXJucGtnL2NvcmUvbGliL1J1bkluc3RhbGxQbGVhc2VSZXNvbHZlci5qcyIsICIuLi9ub2RlX21vZHVsZXMvQHlhcm5wa2cvY29yZS9saWIvVGhyb3dSZXBvcnQuanMiLCAiLi4vbm9kZV9tb2R1bGVzL0B5YXJucGtnL2NvcmUvbGliL1dvcmtzcGFjZS5qcyIsICIuLi9ub2RlX21vZHVsZXMvQHlhcm5wa2cvY29yZS9saWIvUHJvamVjdC5qcyIsICIuLi9ub2RlX21vZHVsZXMvQHlhcm5wa2cvY29yZS9saWIvVGVsZW1ldHJ5TWFuYWdlci5qcyIsICIuLi9ub2RlX21vZHVsZXMvQHlhcm5wa2cvY29yZS9saWIvaW5kZXguanMiLCAiLi4vbGliL2luZGV4LnRzIiwgIi4uL2Jpbi9jcmVhdGVMb2NrRmlsZS50cyIsICIuLi9iaW4vbWFrZVBhdGhXcmFwcGVycy50cyIsICIuLi9iaW4vaW5kZXgudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uXHJcblxyXG5QZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQvb3IgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGZvciBhbnlcclxucHVycG9zZSB3aXRoIG9yIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLlxyXG5cclxuVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiBBTkQgVEhFIEFVVEhPUiBESVNDTEFJTVMgQUxMIFdBUlJBTlRJRVMgV0lUSFxyXG5SRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFlcclxuQU5EIEZJVE5FU1MuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElBQkxFIEZPUiBBTlkgU1BFQ0lBTCwgRElSRUNULFxyXG5JTkRJUkVDVCwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIE9SIEFOWSBEQU1BR0VTIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZST01cclxuTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1JcclxuT1RIRVIgVE9SVElPVVMgQUNUSU9OLCBBUklTSU5HIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUlxyXG5QRVJGT1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFLlxyXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqL1xyXG4vKiBnbG9iYWwgZ2xvYmFsLCBkZWZpbmUsIFN5c3RlbSwgUmVmbGVjdCwgUHJvbWlzZSAqL1xyXG52YXIgX19leHRlbmRzO1xyXG52YXIgX19hc3NpZ247XHJcbnZhciBfX3Jlc3Q7XHJcbnZhciBfX2RlY29yYXRlO1xyXG52YXIgX19wYXJhbTtcclxudmFyIF9fbWV0YWRhdGE7XHJcbnZhciBfX2F3YWl0ZXI7XHJcbnZhciBfX2dlbmVyYXRvcjtcclxudmFyIF9fZXhwb3J0U3RhcjtcclxudmFyIF9fdmFsdWVzO1xyXG52YXIgX19yZWFkO1xyXG52YXIgX19zcHJlYWQ7XHJcbnZhciBfX3NwcmVhZEFycmF5cztcclxudmFyIF9fc3ByZWFkQXJyYXk7XHJcbnZhciBfX2F3YWl0O1xyXG52YXIgX19hc3luY0dlbmVyYXRvcjtcclxudmFyIF9fYXN5bmNEZWxlZ2F0b3I7XHJcbnZhciBfX2FzeW5jVmFsdWVzO1xyXG52YXIgX19tYWtlVGVtcGxhdGVPYmplY3Q7XHJcbnZhciBfX2ltcG9ydFN0YXI7XHJcbnZhciBfX2ltcG9ydERlZmF1bHQ7XHJcbnZhciBfX2NsYXNzUHJpdmF0ZUZpZWxkR2V0O1xyXG52YXIgX19jbGFzc1ByaXZhdGVGaWVsZFNldDtcclxudmFyIF9fY2xhc3NQcml2YXRlRmllbGRJbjtcclxudmFyIF9fY3JlYXRlQmluZGluZztcclxuKGZ1bmN0aW9uIChmYWN0b3J5KSB7XHJcbiAgICB2YXIgcm9vdCA9IHR5cGVvZiBnbG9iYWwgPT09IFwib2JqZWN0XCIgPyBnbG9iYWwgOiB0eXBlb2Ygc2VsZiA9PT0gXCJvYmplY3RcIiA/IHNlbGYgOiB0eXBlb2YgdGhpcyA9PT0gXCJvYmplY3RcIiA/IHRoaXMgOiB7fTtcclxuICAgIGlmICh0eXBlb2YgZGVmaW5lID09PSBcImZ1bmN0aW9uXCIgJiYgZGVmaW5lLmFtZCkge1xyXG4gICAgICAgIGRlZmluZShcInRzbGliXCIsIFtcImV4cG9ydHNcIl0sIGZ1bmN0aW9uIChleHBvcnRzKSB7IGZhY3RvcnkoY3JlYXRlRXhwb3J0ZXIocm9vdCwgY3JlYXRlRXhwb3J0ZXIoZXhwb3J0cykpKTsgfSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICh0eXBlb2YgbW9kdWxlID09PSBcIm9iamVjdFwiICYmIHR5cGVvZiBtb2R1bGUuZXhwb3J0cyA9PT0gXCJvYmplY3RcIikge1xyXG4gICAgICAgIGZhY3RvcnkoY3JlYXRlRXhwb3J0ZXIocm9vdCwgY3JlYXRlRXhwb3J0ZXIobW9kdWxlLmV4cG9ydHMpKSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICBmYWN0b3J5KGNyZWF0ZUV4cG9ydGVyKHJvb3QpKTtcclxuICAgIH1cclxuICAgIGZ1bmN0aW9uIGNyZWF0ZUV4cG9ydGVyKGV4cG9ydHMsIHByZXZpb3VzKSB7XHJcbiAgICAgICAgaWYgKGV4cG9ydHMgIT09IHJvb3QpIHtcclxuICAgICAgICAgICAgaWYgKHR5cGVvZiBPYmplY3QuY3JlYXRlID09PSBcImZ1bmN0aW9uXCIpIHtcclxuICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChpZCwgdikgeyByZXR1cm4gZXhwb3J0c1tpZF0gPSBwcmV2aW91cyA/IHByZXZpb3VzKGlkLCB2KSA6IHY7IH07XHJcbiAgICB9XHJcbn0pXHJcbihmdW5jdGlvbiAoZXhwb3J0ZXIpIHtcclxuICAgIHZhciBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8XHJcbiAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fFxyXG4gICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChiLCBwKSkgZFtwXSA9IGJbcF07IH07XHJcblxyXG4gICAgX19leHRlbmRzID0gZnVuY3Rpb24gKGQsIGIpIHtcclxuICAgICAgICBpZiAodHlwZW9mIGIgIT09IFwiZnVuY3Rpb25cIiAmJiBiICE9PSBudWxsKVxyXG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSBcIiArIFN0cmluZyhiKSArIFwiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGxcIik7XHJcbiAgICAgICAgZXh0ZW5kU3RhdGljcyhkLCBiKTtcclxuICAgICAgICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH1cclxuICAgICAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7XHJcbiAgICB9O1xyXG5cclxuICAgIF9fYXNzaWduID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodCkge1xyXG4gICAgICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xyXG4gICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xyXG4gICAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpIHRbcF0gPSBzW3BdO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdDtcclxuICAgIH07XHJcblxyXG4gICAgX19yZXN0ID0gZnVuY3Rpb24gKHMsIGUpIHtcclxuICAgICAgICB2YXIgdCA9IHt9O1xyXG4gICAgICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSAmJiBlLmluZGV4T2YocCkgPCAwKVxyXG4gICAgICAgICAgICB0W3BdID0gc1twXTtcclxuICAgICAgICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpXHJcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwLCBwID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzKTsgaSA8IHAubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIGlmIChlLmluZGV4T2YocFtpXSkgPCAwICYmIE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzLCBwW2ldKSlcclxuICAgICAgICAgICAgICAgICAgICB0W3BbaV1dID0gc1twW2ldXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0O1xyXG4gICAgfTtcclxuXHJcbiAgICBfX2RlY29yYXRlID0gZnVuY3Rpb24gKGRlY29yYXRvcnMsIHRhcmdldCwga2V5LCBkZXNjKSB7XHJcbiAgICAgICAgdmFyIGMgPSBhcmd1bWVudHMubGVuZ3RoLCByID0gYyA8IDMgPyB0YXJnZXQgOiBkZXNjID09PSBudWxsID8gZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGFyZ2V0LCBrZXkpIDogZGVzYywgZDtcclxuICAgICAgICBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIFJlZmxlY3QuZGVjb3JhdGUgPT09IFwiZnVuY3Rpb25cIikgciA9IFJlZmxlY3QuZGVjb3JhdGUoZGVjb3JhdG9ycywgdGFyZ2V0LCBrZXksIGRlc2MpO1xyXG4gICAgICAgIGVsc2UgZm9yICh2YXIgaSA9IGRlY29yYXRvcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIGlmIChkID0gZGVjb3JhdG9yc1tpXSkgciA9IChjIDwgMyA/IGQocikgOiBjID4gMyA/IGQodGFyZ2V0LCBrZXksIHIpIDogZCh0YXJnZXQsIGtleSkpIHx8IHI7XHJcbiAgICAgICAgcmV0dXJuIGMgPiAzICYmIHIgJiYgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCByKSwgcjtcclxuICAgIH07XHJcblxyXG4gICAgX19wYXJhbSA9IGZ1bmN0aW9uIChwYXJhbUluZGV4LCBkZWNvcmF0b3IpIHtcclxuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldCwga2V5KSB7IGRlY29yYXRvcih0YXJnZXQsIGtleSwgcGFyYW1JbmRleCk7IH1cclxuICAgIH07XHJcblxyXG4gICAgX19tZXRhZGF0YSA9IGZ1bmN0aW9uIChtZXRhZGF0YUtleSwgbWV0YWRhdGFWYWx1ZSkge1xyXG4gICAgICAgIGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgUmVmbGVjdC5tZXRhZGF0YSA9PT0gXCJmdW5jdGlvblwiKSByZXR1cm4gUmVmbGVjdC5tZXRhZGF0YShtZXRhZGF0YUtleSwgbWV0YWRhdGFWYWx1ZSk7XHJcbiAgICB9O1xyXG5cclxuICAgIF9fYXdhaXRlciA9IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcclxuICAgICAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cclxuICAgICAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcclxuICAgICAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxyXG4gICAgICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cclxuICAgICAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cclxuICAgICAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfTtcclxuXHJcbiAgICBfX2dlbmVyYXRvciA9IGZ1bmN0aW9uICh0aGlzQXJnLCBib2R5KSB7XHJcbiAgICAgICAgdmFyIF8gPSB7IGxhYmVsOiAwLCBzZW50OiBmdW5jdGlvbigpIHsgaWYgKHRbMF0gJiAxKSB0aHJvdyB0WzFdOyByZXR1cm4gdFsxXTsgfSwgdHJ5czogW10sIG9wczogW10gfSwgZiwgeSwgdCwgZztcclxuICAgICAgICByZXR1cm4gZyA9IHsgbmV4dDogdmVyYigwKSwgXCJ0aHJvd1wiOiB2ZXJiKDEpLCBcInJldHVyblwiOiB2ZXJiKDIpIH0sIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiAoZ1tTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KSwgZztcclxuICAgICAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgcmV0dXJuIGZ1bmN0aW9uICh2KSB7IHJldHVybiBzdGVwKFtuLCB2XSk7IH07IH1cclxuICAgICAgICBmdW5jdGlvbiBzdGVwKG9wKSB7XHJcbiAgICAgICAgICAgIGlmIChmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtcclxuICAgICAgICAgICAgd2hpbGUgKGcgJiYgKGcgPSAwLCBvcFswXSAmJiAoXyA9IDApKSwgXykgdHJ5IHtcclxuICAgICAgICAgICAgICAgIGlmIChmID0gMSwgeSAmJiAodCA9IG9wWzBdICYgMiA/IHlbXCJyZXR1cm5cIl0gOiBvcFswXSA/IHlbXCJ0aHJvd1wiXSB8fCAoKHQgPSB5W1wicmV0dXJuXCJdKSAmJiB0LmNhbGwoeSksIDApIDogeS5uZXh0KSAmJiAhKHQgPSB0LmNhbGwoeSwgb3BbMV0pKS5kb25lKSByZXR1cm4gdDtcclxuICAgICAgICAgICAgICAgIGlmICh5ID0gMCwgdCkgb3AgPSBbb3BbMF0gJiAyLCB0LnZhbHVlXTtcclxuICAgICAgICAgICAgICAgIHN3aXRjaCAob3BbMF0pIHtcclxuICAgICAgICAgICAgICAgICAgICBjYXNlIDA6IGNhc2UgMTogdCA9IG9wOyBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6IF8ubGFiZWwrKzsgcmV0dXJuIHsgdmFsdWU6IG9wWzFdLCBkb25lOiBmYWxzZSB9O1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNTogXy5sYWJlbCsrOyB5ID0gb3BbMV07IG9wID0gWzBdOyBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgICAgICBjYXNlIDc6IG9wID0gXy5vcHMucG9wKCk7IF8udHJ5cy5wb3AoKTsgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEodCA9IF8udHJ5cywgdCA9IHQubGVuZ3RoID4gMCAmJiB0W3QubGVuZ3RoIC0gMV0pICYmIChvcFswXSA9PT0gNiB8fCBvcFswXSA9PT0gMikpIHsgXyA9IDA7IGNvbnRpbnVlOyB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gMyAmJiAoIXQgfHwgKG9wWzFdID4gdFswXSAmJiBvcFsxXSA8IHRbM10pKSkgeyBfLmxhYmVsID0gb3BbMV07IGJyZWFrOyB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gNiAmJiBfLmxhYmVsIDwgdFsxXSkgeyBfLmxhYmVsID0gdFsxXTsgdCA9IG9wOyBicmVhazsgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodCAmJiBfLmxhYmVsIDwgdFsyXSkgeyBfLmxhYmVsID0gdFsyXTsgXy5vcHMucHVzaChvcCk7IGJyZWFrOyB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0WzJdKSBfLm9wcy5wb3AoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIG9wID0gYm9keS5jYWxsKHRoaXNBcmcsIF8pO1xyXG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7IG9wID0gWzYsIGVdOyB5ID0gMDsgfSBmaW5hbGx5IHsgZiA9IHQgPSAwOyB9XHJcbiAgICAgICAgICAgIGlmIChvcFswXSAmIDUpIHRocm93IG9wWzFdOyByZXR1cm4geyB2YWx1ZTogb3BbMF0gPyBvcFsxXSA6IHZvaWQgMCwgZG9uZTogdHJ1ZSB9O1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgX19leHBvcnRTdGFyID0gZnVuY3Rpb24obSwgbykge1xyXG4gICAgICAgIGZvciAodmFyIHAgaW4gbSkgaWYgKHAgIT09IFwiZGVmYXVsdFwiICYmICFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobywgcCkpIF9fY3JlYXRlQmluZGluZyhvLCBtLCBwKTtcclxuICAgIH07XHJcblxyXG4gICAgX19jcmVhdGVCaW5kaW5nID0gT2JqZWN0LmNyZWF0ZSA/IChmdW5jdGlvbihvLCBtLCBrLCBrMikge1xyXG4gICAgICAgIGlmIChrMiA9PT0gdW5kZWZpbmVkKSBrMiA9IGs7XHJcbiAgICAgICAgdmFyIGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG0sIGspO1xyXG4gICAgICAgIGlmICghZGVzYyB8fCAoXCJnZXRcIiBpbiBkZXNjID8gIW0uX19lc01vZHVsZSA6IGRlc2Mud3JpdGFibGUgfHwgZGVzYy5jb25maWd1cmFibGUpKSB7XHJcbiAgICAgICAgICAgIGRlc2MgPSB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24oKSB7IHJldHVybiBtW2tdOyB9IH07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCBrMiwgZGVzYyk7XHJcbiAgICB9KSA6IChmdW5jdGlvbihvLCBtLCBrLCBrMikge1xyXG4gICAgICAgIGlmIChrMiA9PT0gdW5kZWZpbmVkKSBrMiA9IGs7XHJcbiAgICAgICAgb1trMl0gPSBtW2tdO1xyXG4gICAgfSk7XHJcblxyXG4gICAgX192YWx1ZXMgPSBmdW5jdGlvbiAobykge1xyXG4gICAgICAgIHZhciBzID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIFN5bWJvbC5pdGVyYXRvciwgbSA9IHMgJiYgb1tzXSwgaSA9IDA7XHJcbiAgICAgICAgaWYgKG0pIHJldHVybiBtLmNhbGwobyk7XHJcbiAgICAgICAgaWYgKG8gJiYgdHlwZW9mIG8ubGVuZ3RoID09PSBcIm51bWJlclwiKSByZXR1cm4ge1xyXG4gICAgICAgICAgICBuZXh0OiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAobyAmJiBpID49IG8ubGVuZ3RoKSBvID0gdm9pZCAwO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IG8gJiYgb1tpKytdLCBkb25lOiAhbyB9O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKHMgPyBcIk9iamVjdCBpcyBub3QgaXRlcmFibGUuXCIgOiBcIlN5bWJvbC5pdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XHJcbiAgICB9O1xyXG5cclxuICAgIF9fcmVhZCA9IGZ1bmN0aW9uIChvLCBuKSB7XHJcbiAgICAgICAgdmFyIG0gPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb1tTeW1ib2wuaXRlcmF0b3JdO1xyXG4gICAgICAgIGlmICghbSkgcmV0dXJuIG87XHJcbiAgICAgICAgdmFyIGkgPSBtLmNhbGwobyksIHIsIGFyID0gW10sIGU7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgd2hpbGUgKChuID09PSB2b2lkIDAgfHwgbi0tID4gMCkgJiYgIShyID0gaS5uZXh0KCkpLmRvbmUpIGFyLnB1c2goci52YWx1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhdGNoIChlcnJvcikgeyBlID0geyBlcnJvcjogZXJyb3IgfTsgfVxyXG4gICAgICAgIGZpbmFsbHkge1xyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHIgJiYgIXIuZG9uZSAmJiAobSA9IGlbXCJyZXR1cm5cIl0pKSBtLmNhbGwoaSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZmluYWxseSB7IGlmIChlKSB0aHJvdyBlLmVycm9yOyB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBhcjtcclxuICAgIH07XHJcblxyXG4gICAgLyoqIEBkZXByZWNhdGVkICovXHJcbiAgICBfX3NwcmVhZCA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICBmb3IgKHZhciBhciA9IFtdLCBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKylcclxuICAgICAgICAgICAgYXIgPSBhci5jb25jYXQoX19yZWFkKGFyZ3VtZW50c1tpXSkpO1xyXG4gICAgICAgIHJldHVybiBhcjtcclxuICAgIH07XHJcblxyXG4gICAgLyoqIEBkZXByZWNhdGVkICovXHJcbiAgICBfX3NwcmVhZEFycmF5cyA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICBmb3IgKHZhciBzID0gMCwgaSA9IDAsIGlsID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IGlsOyBpKyspIHMgKz0gYXJndW1lbnRzW2ldLmxlbmd0aDtcclxuICAgICAgICBmb3IgKHZhciByID0gQXJyYXkocyksIGsgPSAwLCBpID0gMDsgaSA8IGlsOyBpKyspXHJcbiAgICAgICAgICAgIGZvciAodmFyIGEgPSBhcmd1bWVudHNbaV0sIGogPSAwLCBqbCA9IGEubGVuZ3RoOyBqIDwgamw7IGorKywgaysrKVxyXG4gICAgICAgICAgICAgICAgcltrXSA9IGFbal07XHJcbiAgICAgICAgcmV0dXJuIHI7XHJcbiAgICB9O1xyXG5cclxuICAgIF9fc3ByZWFkQXJyYXkgPSBmdW5jdGlvbiAodG8sIGZyb20sIHBhY2spIHtcclxuICAgICAgICBpZiAocGFjayB8fCBhcmd1bWVudHMubGVuZ3RoID09PSAyKSBmb3IgKHZhciBpID0gMCwgbCA9IGZyb20ubGVuZ3RoLCBhcjsgaSA8IGw7IGkrKykge1xyXG4gICAgICAgICAgICBpZiAoYXIgfHwgIShpIGluIGZyb20pKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIWFyKSBhciA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGZyb20sIDAsIGkpO1xyXG4gICAgICAgICAgICAgICAgYXJbaV0gPSBmcm9tW2ldO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0by5jb25jYXQoYXIgfHwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZnJvbSkpO1xyXG4gICAgfTtcclxuXHJcbiAgICBfX2F3YWl0ID0gZnVuY3Rpb24gKHYpIHtcclxuICAgICAgICByZXR1cm4gdGhpcyBpbnN0YW5jZW9mIF9fYXdhaXQgPyAodGhpcy52ID0gdiwgdGhpcykgOiBuZXcgX19hd2FpdCh2KTtcclxuICAgIH07XHJcblxyXG4gICAgX19hc3luY0dlbmVyYXRvciA9IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBnZW5lcmF0b3IpIHtcclxuICAgICAgICBpZiAoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3ltYm9sLmFzeW5jSXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xyXG4gICAgICAgIHZhciBnID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pLCBpLCBxID0gW107XHJcbiAgICAgICAgcmV0dXJuIGkgPSB7fSwgdmVyYihcIm5leHRcIiksIHZlcmIoXCJ0aHJvd1wiKSwgdmVyYihcInJldHVyblwiKSwgaVtTeW1ib2wuYXN5bmNJdGVyYXRvcl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9LCBpO1xyXG4gICAgICAgIGZ1bmN0aW9uIHZlcmIobikgeyBpZiAoZ1tuXSkgaVtuXSA9IGZ1bmN0aW9uICh2KSB7IHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAoYSwgYikgeyBxLnB1c2goW24sIHYsIGEsIGJdKSA+IDEgfHwgcmVzdW1lKG4sIHYpOyB9KTsgfTsgfVxyXG4gICAgICAgIGZ1bmN0aW9uIHJlc3VtZShuLCB2KSB7IHRyeSB7IHN0ZXAoZ1tuXSh2KSk7IH0gY2F0Y2ggKGUpIHsgc2V0dGxlKHFbMF1bM10sIGUpOyB9IH1cclxuICAgICAgICBmdW5jdGlvbiBzdGVwKHIpIHsgci52YWx1ZSBpbnN0YW5jZW9mIF9fYXdhaXQgPyBQcm9taXNlLnJlc29sdmUoci52YWx1ZS52KS50aGVuKGZ1bGZpbGwsIHJlamVjdCkgOiBzZXR0bGUocVswXVsyXSwgcik7ICB9XHJcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbCh2YWx1ZSkgeyByZXN1bWUoXCJuZXh0XCIsIHZhbHVlKTsgfVxyXG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdCh2YWx1ZSkgeyByZXN1bWUoXCJ0aHJvd1wiLCB2YWx1ZSk7IH1cclxuICAgICAgICBmdW5jdGlvbiBzZXR0bGUoZiwgdikgeyBpZiAoZih2KSwgcS5zaGlmdCgpLCBxLmxlbmd0aCkgcmVzdW1lKHFbMF1bMF0sIHFbMF1bMV0pOyB9XHJcbiAgICB9O1xyXG5cclxuICAgIF9fYXN5bmNEZWxlZ2F0b3IgPSBmdW5jdGlvbiAobykge1xyXG4gICAgICAgIHZhciBpLCBwO1xyXG4gICAgICAgIHJldHVybiBpID0ge30sIHZlcmIoXCJuZXh0XCIpLCB2ZXJiKFwidGhyb3dcIiwgZnVuY3Rpb24gKGUpIHsgdGhyb3cgZTsgfSksIHZlcmIoXCJyZXR1cm5cIiksIGlbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0sIGk7XHJcbiAgICAgICAgZnVuY3Rpb24gdmVyYihuLCBmKSB7IGlbbl0gPSBvW25dID8gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIChwID0gIXApID8geyB2YWx1ZTogX19hd2FpdChvW25dKHYpKSwgZG9uZTogbiA9PT0gXCJyZXR1cm5cIiB9IDogZiA/IGYodikgOiB2OyB9IDogZjsgfVxyXG4gICAgfTtcclxuXHJcbiAgICBfX2FzeW5jVmFsdWVzID0gZnVuY3Rpb24gKG8pIHtcclxuICAgICAgICBpZiAoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3ltYm9sLmFzeW5jSXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xyXG4gICAgICAgIHZhciBtID0gb1tTeW1ib2wuYXN5bmNJdGVyYXRvcl0sIGk7XHJcbiAgICAgICAgcmV0dXJuIG0gPyBtLmNhbGwobykgOiAobyA9IHR5cGVvZiBfX3ZhbHVlcyA9PT0gXCJmdW5jdGlvblwiID8gX192YWx1ZXMobykgOiBvW1N5bWJvbC5pdGVyYXRvcl0oKSwgaSA9IHt9LCB2ZXJiKFwibmV4dFwiKSwgdmVyYihcInRocm93XCIpLCB2ZXJiKFwicmV0dXJuXCIpLCBpW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0sIGkpO1xyXG4gICAgICAgIGZ1bmN0aW9uIHZlcmIobikgeyBpW25dID0gb1tuXSAmJiBmdW5jdGlvbiAodikgeyByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgeyB2ID0gb1tuXSh2KSwgc2V0dGxlKHJlc29sdmUsIHJlamVjdCwgdi5kb25lLCB2LnZhbHVlKTsgfSk7IH07IH1cclxuICAgICAgICBmdW5jdGlvbiBzZXR0bGUocmVzb2x2ZSwgcmVqZWN0LCBkLCB2KSB7IFByb21pc2UucmVzb2x2ZSh2KS50aGVuKGZ1bmN0aW9uKHYpIHsgcmVzb2x2ZSh7IHZhbHVlOiB2LCBkb25lOiBkIH0pOyB9LCByZWplY3QpOyB9XHJcbiAgICB9O1xyXG5cclxuICAgIF9fbWFrZVRlbXBsYXRlT2JqZWN0ID0gZnVuY3Rpb24gKGNvb2tlZCwgcmF3KSB7XHJcbiAgICAgICAgaWYgKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkoY29va2VkLCBcInJhd1wiLCB7IHZhbHVlOiByYXcgfSk7IH0gZWxzZSB7IGNvb2tlZC5yYXcgPSByYXc7IH1cclxuICAgICAgICByZXR1cm4gY29va2VkO1xyXG4gICAgfTtcclxuXHJcbiAgICB2YXIgX19zZXRNb2R1bGVEZWZhdWx0ID0gT2JqZWN0LmNyZWF0ZSA/IChmdW5jdGlvbihvLCB2KSB7XHJcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIFwiZGVmYXVsdFwiLCB7IGVudW1lcmFibGU6IHRydWUsIHZhbHVlOiB2IH0pO1xyXG4gICAgfSkgOiBmdW5jdGlvbihvLCB2KSB7XHJcbiAgICAgICAgb1tcImRlZmF1bHRcIl0gPSB2O1xyXG4gICAgfTtcclxuXHJcbiAgICBfX2ltcG9ydFN0YXIgPSBmdW5jdGlvbiAobW9kKSB7XHJcbiAgICAgICAgaWYgKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgcmV0dXJuIG1vZDtcclxuICAgICAgICB2YXIgcmVzdWx0ID0ge307XHJcbiAgICAgICAgaWYgKG1vZCAhPSBudWxsKSBmb3IgKHZhciBrIGluIG1vZCkgaWYgKGsgIT09IFwiZGVmYXVsdFwiICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChtb2QsIGspKSBfX2NyZWF0ZUJpbmRpbmcocmVzdWx0LCBtb2QsIGspO1xyXG4gICAgICAgIF9fc2V0TW9kdWxlRGVmYXVsdChyZXN1bHQsIG1vZCk7XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH07XHJcblxyXG4gICAgX19pbXBvcnREZWZhdWx0ID0gZnVuY3Rpb24gKG1vZCkge1xyXG4gICAgICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xyXG4gICAgfTtcclxuXHJcbiAgICBfX2NsYXNzUHJpdmF0ZUZpZWxkR2V0ID0gZnVuY3Rpb24gKHJlY2VpdmVyLCBzdGF0ZSwga2luZCwgZikge1xyXG4gICAgICAgIGlmIChraW5kID09PSBcImFcIiAmJiAhZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlByaXZhdGUgYWNjZXNzb3Igd2FzIGRlZmluZWQgd2l0aG91dCBhIGdldHRlclwiKTtcclxuICAgICAgICBpZiAodHlwZW9mIHN0YXRlID09PSBcImZ1bmN0aW9uXCIgPyByZWNlaXZlciAhPT0gc3RhdGUgfHwgIWYgOiAhc3RhdGUuaGFzKHJlY2VpdmVyKSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCByZWFkIHByaXZhdGUgbWVtYmVyIGZyb20gYW4gb2JqZWN0IHdob3NlIGNsYXNzIGRpZCBub3QgZGVjbGFyZSBpdFwiKTtcclxuICAgICAgICByZXR1cm4ga2luZCA9PT0gXCJtXCIgPyBmIDoga2luZCA9PT0gXCJhXCIgPyBmLmNhbGwocmVjZWl2ZXIpIDogZiA/IGYudmFsdWUgOiBzdGF0ZS5nZXQocmVjZWl2ZXIpO1xyXG4gICAgfTtcclxuXHJcbiAgICBfX2NsYXNzUHJpdmF0ZUZpZWxkU2V0ID0gZnVuY3Rpb24gKHJlY2VpdmVyLCBzdGF0ZSwgdmFsdWUsIGtpbmQsIGYpIHtcclxuICAgICAgICBpZiAoa2luZCA9PT0gXCJtXCIpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJQcml2YXRlIG1ldGhvZCBpcyBub3Qgd3JpdGFibGVcIik7XHJcbiAgICAgICAgaWYgKGtpbmQgPT09IFwiYVwiICYmICFmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiUHJpdmF0ZSBhY2Nlc3NvciB3YXMgZGVmaW5lZCB3aXRob3V0IGEgc2V0dGVyXCIpO1xyXG4gICAgICAgIGlmICh0eXBlb2Ygc3RhdGUgPT09IFwiZnVuY3Rpb25cIiA/IHJlY2VpdmVyICE9PSBzdGF0ZSB8fCAhZiA6ICFzdGF0ZS5oYXMocmVjZWl2ZXIpKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IHdyaXRlIHByaXZhdGUgbWVtYmVyIHRvIGFuIG9iamVjdCB3aG9zZSBjbGFzcyBkaWQgbm90IGRlY2xhcmUgaXRcIik7XHJcbiAgICAgICAgcmV0dXJuIChraW5kID09PSBcImFcIiA/IGYuY2FsbChyZWNlaXZlciwgdmFsdWUpIDogZiA/IGYudmFsdWUgPSB2YWx1ZSA6IHN0YXRlLnNldChyZWNlaXZlciwgdmFsdWUpKSwgdmFsdWU7XHJcbiAgICB9O1xyXG5cclxuICAgIF9fY2xhc3NQcml2YXRlRmllbGRJbiA9IGZ1bmN0aW9uIChzdGF0ZSwgcmVjZWl2ZXIpIHtcclxuICAgICAgICBpZiAocmVjZWl2ZXIgPT09IG51bGwgfHwgKHR5cGVvZiByZWNlaXZlciAhPT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgcmVjZWl2ZXIgIT09IFwiZnVuY3Rpb25cIikpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgdXNlICdpbicgb3BlcmF0b3Igb24gbm9uLW9iamVjdFwiKTtcclxuICAgICAgICByZXR1cm4gdHlwZW9mIHN0YXRlID09PSBcImZ1bmN0aW9uXCIgPyByZWNlaXZlciA9PT0gc3RhdGUgOiBzdGF0ZS5oYXMocmVjZWl2ZXIpO1xyXG4gICAgfTtcclxuXHJcbiAgICBleHBvcnRlcihcIl9fZXh0ZW5kc1wiLCBfX2V4dGVuZHMpO1xyXG4gICAgZXhwb3J0ZXIoXCJfX2Fzc2lnblwiLCBfX2Fzc2lnbik7XHJcbiAgICBleHBvcnRlcihcIl9fcmVzdFwiLCBfX3Jlc3QpO1xyXG4gICAgZXhwb3J0ZXIoXCJfX2RlY29yYXRlXCIsIF9fZGVjb3JhdGUpO1xyXG4gICAgZXhwb3J0ZXIoXCJfX3BhcmFtXCIsIF9fcGFyYW0pO1xyXG4gICAgZXhwb3J0ZXIoXCJfX21ldGFkYXRhXCIsIF9fbWV0YWRhdGEpO1xyXG4gICAgZXhwb3J0ZXIoXCJfX2F3YWl0ZXJcIiwgX19hd2FpdGVyKTtcclxuICAgIGV4cG9ydGVyKFwiX19nZW5lcmF0b3JcIiwgX19nZW5lcmF0b3IpO1xyXG4gICAgZXhwb3J0ZXIoXCJfX2V4cG9ydFN0YXJcIiwgX19leHBvcnRTdGFyKTtcclxuICAgIGV4cG9ydGVyKFwiX19jcmVhdGVCaW5kaW5nXCIsIF9fY3JlYXRlQmluZGluZyk7XHJcbiAgICBleHBvcnRlcihcIl9fdmFsdWVzXCIsIF9fdmFsdWVzKTtcclxuICAgIGV4cG9ydGVyKFwiX19yZWFkXCIsIF9fcmVhZCk7XHJcbiAgICBleHBvcnRlcihcIl9fc3ByZWFkXCIsIF9fc3ByZWFkKTtcclxuICAgIGV4cG9ydGVyKFwiX19zcHJlYWRBcnJheXNcIiwgX19zcHJlYWRBcnJheXMpO1xyXG4gICAgZXhwb3J0ZXIoXCJfX3NwcmVhZEFycmF5XCIsIF9fc3ByZWFkQXJyYXkpO1xyXG4gICAgZXhwb3J0ZXIoXCJfX2F3YWl0XCIsIF9fYXdhaXQpO1xyXG4gICAgZXhwb3J0ZXIoXCJfX2FzeW5jR2VuZXJhdG9yXCIsIF9fYXN5bmNHZW5lcmF0b3IpO1xyXG4gICAgZXhwb3J0ZXIoXCJfX2FzeW5jRGVsZWdhdG9yXCIsIF9fYXN5bmNEZWxlZ2F0b3IpO1xyXG4gICAgZXhwb3J0ZXIoXCJfX2FzeW5jVmFsdWVzXCIsIF9fYXN5bmNWYWx1ZXMpO1xyXG4gICAgZXhwb3J0ZXIoXCJfX21ha2VUZW1wbGF0ZU9iamVjdFwiLCBfX21ha2VUZW1wbGF0ZU9iamVjdCk7XHJcbiAgICBleHBvcnRlcihcIl9faW1wb3J0U3RhclwiLCBfX2ltcG9ydFN0YXIpO1xyXG4gICAgZXhwb3J0ZXIoXCJfX2ltcG9ydERlZmF1bHRcIiwgX19pbXBvcnREZWZhdWx0KTtcclxuICAgIGV4cG9ydGVyKFwiX19jbGFzc1ByaXZhdGVGaWVsZEdldFwiLCBfX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KTtcclxuICAgIGV4cG9ydGVyKFwiX19jbGFzc1ByaXZhdGVGaWVsZFNldFwiLCBfX2NsYXNzUHJpdmF0ZUZpZWxkU2V0KTtcclxuICAgIGV4cG9ydGVyKFwiX19jbGFzc1ByaXZhdGVGaWVsZEluXCIsIF9fY2xhc3NQcml2YXRlRmllbGRJbik7XHJcbn0pO1xyXG4iLCAiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLlNBRkVfVElNRSA9IGV4cG9ydHMuU19JRkxOSyA9IGV4cG9ydHMuU19JRlJFRyA9IGV4cG9ydHMuU19JRkRJUiA9IGV4cG9ydHMuU19JRk1UID0gdm9pZCAwO1xuZXhwb3J0cy5TX0lGTVQgPSAwbzE3MDAwMDtcbmV4cG9ydHMuU19JRkRJUiA9IDBvMDQwMDAwO1xuZXhwb3J0cy5TX0lGUkVHID0gMG8xMDAwMDA7XG5leHBvcnRzLlNfSUZMTksgPSAwbzEyMDAwMDtcbi8qKlxuICogVW5peCB0aW1lc3RhbXAgZm9yIGAxOTg0LTA2LTIyVDIxOjUwOjAwLjAwMFpgXG4gKlxuICogSXQgbmVlZHMgdG8gYmUgYWZ0ZXIgMTk4MC0wMS0wMSBiZWNhdXNlIHRoYXQncyB3aGF0IFppcCBzdXBwb3J0cywgYW5kIGl0XG4gKiBuZWVkcyB0byBoYXZlIGEgc2xpZ2h0IG9mZnNldCB0byBhY2NvdW50IGZvciBkaWZmZXJlbnQgdGltZXpvbmVzIChiZWNhdXNlXG4gKiB6aXAgYXNzdW1lcyB0aGF0IGFsbCB0aW1lcyBhcmUgbG9jYWwgdG8gd2hvZXZlciB3cml0ZXMgdGhlIGZpbGUsIHdoaWNoIGlzXG4gKiByZWFsbHkgc2lsbHkpLlxuICovXG5leHBvcnRzLlNBRkVfVElNRSA9IDQ1Njc4OTAwMDtcbiIsICJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuRVJSX0RJUl9DTE9TRUQgPSBleHBvcnRzLkVPUE5PVFNVUFAgPSBleHBvcnRzLkVOT1RFTVBUWSA9IGV4cG9ydHMuRVJPRlMgPSBleHBvcnRzLkVFWElTVCA9IGV4cG9ydHMuRUlTRElSID0gZXhwb3J0cy5FTk9URElSID0gZXhwb3J0cy5FTk9FTlQgPSBleHBvcnRzLkVCQURGID0gZXhwb3J0cy5FSU5WQUwgPSBleHBvcnRzLkVOT1NZUyA9IGV4cG9ydHMuRUJVU1kgPSB2b2lkIDA7XG5mdW5jdGlvbiBtYWtlRXJyb3IoY29kZSwgbWVzc2FnZSkge1xuICAgIHJldHVybiBPYmplY3QuYXNzaWduKG5ldyBFcnJvcihgJHtjb2RlfTogJHttZXNzYWdlfWApLCB7IGNvZGUgfSk7XG59XG5mdW5jdGlvbiBFQlVTWShtZXNzYWdlKSB7XG4gICAgcmV0dXJuIG1ha2VFcnJvcihgRUJVU1lgLCBtZXNzYWdlKTtcbn1cbmV4cG9ydHMuRUJVU1kgPSBFQlVTWTtcbmZ1bmN0aW9uIEVOT1NZUyhtZXNzYWdlLCByZWFzb24pIHtcbiAgICByZXR1cm4gbWFrZUVycm9yKGBFTk9TWVNgLCBgJHttZXNzYWdlfSwgJHtyZWFzb259YCk7XG59XG5leHBvcnRzLkVOT1NZUyA9IEVOT1NZUztcbmZ1bmN0aW9uIEVJTlZBTChyZWFzb24pIHtcbiAgICByZXR1cm4gbWFrZUVycm9yKGBFSU5WQUxgLCBgaW52YWxpZCBhcmd1bWVudCwgJHtyZWFzb259YCk7XG59XG5leHBvcnRzLkVJTlZBTCA9IEVJTlZBTDtcbmZ1bmN0aW9uIEVCQURGKHJlYXNvbikge1xuICAgIHJldHVybiBtYWtlRXJyb3IoYEVCQURGYCwgYGJhZCBmaWxlIGRlc2NyaXB0b3IsICR7cmVhc29ufWApO1xufVxuZXhwb3J0cy5FQkFERiA9IEVCQURGO1xuZnVuY3Rpb24gRU5PRU5UKHJlYXNvbikge1xuICAgIHJldHVybiBtYWtlRXJyb3IoYEVOT0VOVGAsIGBubyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5LCAke3JlYXNvbn1gKTtcbn1cbmV4cG9ydHMuRU5PRU5UID0gRU5PRU5UO1xuZnVuY3Rpb24gRU5PVERJUihyZWFzb24pIHtcbiAgICByZXR1cm4gbWFrZUVycm9yKGBFTk9URElSYCwgYG5vdCBhIGRpcmVjdG9yeSwgJHtyZWFzb259YCk7XG59XG5leHBvcnRzLkVOT1RESVIgPSBFTk9URElSO1xuZnVuY3Rpb24gRUlTRElSKHJlYXNvbikge1xuICAgIHJldHVybiBtYWtlRXJyb3IoYEVJU0RJUmAsIGBpbGxlZ2FsIG9wZXJhdGlvbiBvbiBhIGRpcmVjdG9yeSwgJHtyZWFzb259YCk7XG59XG5leHBvcnRzLkVJU0RJUiA9IEVJU0RJUjtcbmZ1bmN0aW9uIEVFWElTVChyZWFzb24pIHtcbiAgICByZXR1cm4gbWFrZUVycm9yKGBFRVhJU1RgLCBgZmlsZSBhbHJlYWR5IGV4aXN0cywgJHtyZWFzb259YCk7XG59XG5leHBvcnRzLkVFWElTVCA9IEVFWElTVDtcbmZ1bmN0aW9uIEVST0ZTKHJlYXNvbikge1xuICAgIHJldHVybiBtYWtlRXJyb3IoYEVST0ZTYCwgYHJlYWQtb25seSBmaWxlc3lzdGVtLCAke3JlYXNvbn1gKTtcbn1cbmV4cG9ydHMuRVJPRlMgPSBFUk9GUztcbmZ1bmN0aW9uIEVOT1RFTVBUWShyZWFzb24pIHtcbiAgICByZXR1cm4gbWFrZUVycm9yKGBFTk9URU1QVFlgLCBgZGlyZWN0b3J5IG5vdCBlbXB0eSwgJHtyZWFzb259YCk7XG59XG5leHBvcnRzLkVOT1RFTVBUWSA9IEVOT1RFTVBUWTtcbmZ1bmN0aW9uIEVPUE5PVFNVUFAocmVhc29uKSB7XG4gICAgcmV0dXJuIG1ha2VFcnJvcihgRU9QTk9UU1VQUGAsIGBvcGVyYXRpb24gbm90IHN1cHBvcnRlZCwgJHtyZWFzb259YCk7XG59XG5leHBvcnRzLkVPUE5PVFNVUFAgPSBFT1BOT1RTVVBQO1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5mdW5jdGlvbiBFUlJfRElSX0NMT1NFRCgpIHtcbiAgICByZXR1cm4gbWFrZUVycm9yKGBFUlJfRElSX0NMT1NFRGAsIGBEaXJlY3RvcnkgaGFuZGxlIHdhcyBjbG9zZWRgKTtcbn1cbmV4cG9ydHMuRVJSX0RJUl9DTE9TRUQgPSBFUlJfRElSX0NMT1NFRDtcbiIsICJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuYXJlU3RhdHNFcXVhbCA9IGV4cG9ydHMuY29udmVydFRvQmlnSW50U3RhdHMgPSBleHBvcnRzLmNsZWFyU3RhdHMgPSBleHBvcnRzLm1ha2VFbXB0eVN0YXRzID0gZXhwb3J0cy5tYWtlRGVmYXVsdFN0YXRzID0gZXhwb3J0cy5CaWdJbnRTdGF0c0VudHJ5ID0gZXhwb3J0cy5TdGF0RW50cnkgPSBleHBvcnRzLkRpckVudHJ5ID0gZXhwb3J0cy5ERUZBVUxUX01PREUgPSB2b2lkIDA7XG5jb25zdCB0c2xpYl8xID0gcmVxdWlyZShcInRzbGliXCIpO1xuY29uc3Qgbm9kZVV0aWxzID0gdHNsaWJfMS5fX2ltcG9ydFN0YXIocmVxdWlyZShcInV0aWxcIikpO1xuY29uc3QgY29uc3RhbnRzXzEgPSByZXF1aXJlKFwiLi9jb25zdGFudHNcIik7XG5leHBvcnRzLkRFRkFVTFRfTU9ERSA9IGNvbnN0YW50c18xLlNfSUZSRUcgfCAwbzY0NDtcbmNsYXNzIERpckVudHJ5IHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5uYW1lID0gYGA7XG4gICAgICAgIHRoaXMubW9kZSA9IDA7XG4gICAgfVxuICAgIGlzQmxvY2tEZXZpY2UoKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaXNDaGFyYWN0ZXJEZXZpY2UoKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaXNEaXJlY3RvcnkoKSB7XG4gICAgICAgIHJldHVybiAodGhpcy5tb2RlICYgY29uc3RhbnRzXzEuU19JRk1UKSA9PT0gY29uc3RhbnRzXzEuU19JRkRJUjtcbiAgICB9XG4gICAgaXNGSUZPKCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlzRmlsZSgpIHtcbiAgICAgICAgcmV0dXJuICh0aGlzLm1vZGUgJiBjb25zdGFudHNfMS5TX0lGTVQpID09PSBjb25zdGFudHNfMS5TX0lGUkVHO1xuICAgIH1cbiAgICBpc1NvY2tldCgpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpc1N5bWJvbGljTGluaygpIHtcbiAgICAgICAgcmV0dXJuICh0aGlzLm1vZGUgJiBjb25zdGFudHNfMS5TX0lGTVQpID09PSBjb25zdGFudHNfMS5TX0lGTE5LO1xuICAgIH1cbn1cbmV4cG9ydHMuRGlyRW50cnkgPSBEaXJFbnRyeTtcbmNsYXNzIFN0YXRFbnRyeSB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMudWlkID0gMDtcbiAgICAgICAgdGhpcy5naWQgPSAwO1xuICAgICAgICB0aGlzLnNpemUgPSAwO1xuICAgICAgICB0aGlzLmJsa3NpemUgPSAwO1xuICAgICAgICB0aGlzLmF0aW1lTXMgPSAwO1xuICAgICAgICB0aGlzLm10aW1lTXMgPSAwO1xuICAgICAgICB0aGlzLmN0aW1lTXMgPSAwO1xuICAgICAgICB0aGlzLmJpcnRodGltZU1zID0gMDtcbiAgICAgICAgdGhpcy5hdGltZSA9IG5ldyBEYXRlKDApO1xuICAgICAgICB0aGlzLm10aW1lID0gbmV3IERhdGUoMCk7XG4gICAgICAgIHRoaXMuY3RpbWUgPSBuZXcgRGF0ZSgwKTtcbiAgICAgICAgdGhpcy5iaXJ0aHRpbWUgPSBuZXcgRGF0ZSgwKTtcbiAgICAgICAgdGhpcy5kZXYgPSAwO1xuICAgICAgICB0aGlzLmlubyA9IDA7XG4gICAgICAgIHRoaXMubW9kZSA9IGV4cG9ydHMuREVGQVVMVF9NT0RFO1xuICAgICAgICB0aGlzLm5saW5rID0gMTtcbiAgICAgICAgdGhpcy5yZGV2ID0gMDtcbiAgICAgICAgdGhpcy5ibG9ja3MgPSAxO1xuICAgIH1cbiAgICBpc0Jsb2NrRGV2aWNlKCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlzQ2hhcmFjdGVyRGV2aWNlKCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlzRGlyZWN0b3J5KCkge1xuICAgICAgICByZXR1cm4gKHRoaXMubW9kZSAmIGNvbnN0YW50c18xLlNfSUZNVCkgPT09IGNvbnN0YW50c18xLlNfSUZESVI7XG4gICAgfVxuICAgIGlzRklGTygpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpc0ZpbGUoKSB7XG4gICAgICAgIHJldHVybiAodGhpcy5tb2RlICYgY29uc3RhbnRzXzEuU19JRk1UKSA9PT0gY29uc3RhbnRzXzEuU19JRlJFRztcbiAgICB9XG4gICAgaXNTb2NrZXQoKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaXNTeW1ib2xpY0xpbmsoKSB7XG4gICAgICAgIHJldHVybiAodGhpcy5tb2RlICYgY29uc3RhbnRzXzEuU19JRk1UKSA9PT0gY29uc3RhbnRzXzEuU19JRkxOSztcbiAgICB9XG59XG5leHBvcnRzLlN0YXRFbnRyeSA9IFN0YXRFbnRyeTtcbmNsYXNzIEJpZ0ludFN0YXRzRW50cnkge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLnVpZCA9IEJpZ0ludCgwKTtcbiAgICAgICAgdGhpcy5naWQgPSBCaWdJbnQoMCk7XG4gICAgICAgIHRoaXMuc2l6ZSA9IEJpZ0ludCgwKTtcbiAgICAgICAgdGhpcy5ibGtzaXplID0gQmlnSW50KDApO1xuICAgICAgICB0aGlzLmF0aW1lTXMgPSBCaWdJbnQoMCk7XG4gICAgICAgIHRoaXMubXRpbWVNcyA9IEJpZ0ludCgwKTtcbiAgICAgICAgdGhpcy5jdGltZU1zID0gQmlnSW50KDApO1xuICAgICAgICB0aGlzLmJpcnRodGltZU1zID0gQmlnSW50KDApO1xuICAgICAgICB0aGlzLmF0aW1lTnMgPSBCaWdJbnQoMCk7XG4gICAgICAgIHRoaXMubXRpbWVOcyA9IEJpZ0ludCgwKTtcbiAgICAgICAgdGhpcy5jdGltZU5zID0gQmlnSW50KDApO1xuICAgICAgICB0aGlzLmJpcnRodGltZU5zID0gQmlnSW50KDApO1xuICAgICAgICB0aGlzLmF0aW1lID0gbmV3IERhdGUoMCk7XG4gICAgICAgIHRoaXMubXRpbWUgPSBuZXcgRGF0ZSgwKTtcbiAgICAgICAgdGhpcy5jdGltZSA9IG5ldyBEYXRlKDApO1xuICAgICAgICB0aGlzLmJpcnRodGltZSA9IG5ldyBEYXRlKDApO1xuICAgICAgICB0aGlzLmRldiA9IEJpZ0ludCgwKTtcbiAgICAgICAgdGhpcy5pbm8gPSBCaWdJbnQoMCk7XG4gICAgICAgIHRoaXMubW9kZSA9IEJpZ0ludChleHBvcnRzLkRFRkFVTFRfTU9ERSk7XG4gICAgICAgIHRoaXMubmxpbmsgPSBCaWdJbnQoMSk7XG4gICAgICAgIHRoaXMucmRldiA9IEJpZ0ludCgwKTtcbiAgICAgICAgdGhpcy5ibG9ja3MgPSBCaWdJbnQoMSk7XG4gICAgfVxuICAgIGlzQmxvY2tEZXZpY2UoKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaXNDaGFyYWN0ZXJEZXZpY2UoKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaXNEaXJlY3RvcnkoKSB7XG4gICAgICAgIHJldHVybiAodGhpcy5tb2RlICYgQmlnSW50KGNvbnN0YW50c18xLlNfSUZNVCkpID09PSBCaWdJbnQoY29uc3RhbnRzXzEuU19JRkRJUik7XG4gICAgfVxuICAgIGlzRklGTygpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpc0ZpbGUoKSB7XG4gICAgICAgIHJldHVybiAodGhpcy5tb2RlICYgQmlnSW50KGNvbnN0YW50c18xLlNfSUZNVCkpID09PSBCaWdJbnQoY29uc3RhbnRzXzEuU19JRlJFRyk7XG4gICAgfVxuICAgIGlzU29ja2V0KCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlzU3ltYm9saWNMaW5rKCkge1xuICAgICAgICByZXR1cm4gKHRoaXMubW9kZSAmIEJpZ0ludChjb25zdGFudHNfMS5TX0lGTVQpKSA9PT0gQmlnSW50KGNvbnN0YW50c18xLlNfSUZMTkspO1xuICAgIH1cbn1cbmV4cG9ydHMuQmlnSW50U3RhdHNFbnRyeSA9IEJpZ0ludFN0YXRzRW50cnk7XG5mdW5jdGlvbiBtYWtlRGVmYXVsdFN0YXRzKCkge1xuICAgIHJldHVybiBuZXcgU3RhdEVudHJ5KCk7XG59XG5leHBvcnRzLm1ha2VEZWZhdWx0U3RhdHMgPSBtYWtlRGVmYXVsdFN0YXRzO1xuZnVuY3Rpb24gbWFrZUVtcHR5U3RhdHMoKSB7XG4gICAgcmV0dXJuIGNsZWFyU3RhdHMobWFrZURlZmF1bHRTdGF0cygpKTtcbn1cbmV4cG9ydHMubWFrZUVtcHR5U3RhdHMgPSBtYWtlRW1wdHlTdGF0cztcbi8qKlxuICogTXV0YXRlcyB0aGUgcHJvdmlkZWQgc3RhdHMgb2JqZWN0IHRvIHplcm8gaXQgb3V0IHRoZW4gcmV0dXJucyBpdCBmb3IgY29udmVuaWVuY2VcbiAqL1xuZnVuY3Rpb24gY2xlYXJTdGF0cyhzdGF0cykge1xuICAgIGZvciAoY29uc3Qga2V5IGluIHN0YXRzKSB7XG4gICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc3RhdHMsIGtleSkpIHtcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnQgPSBzdGF0c1trZXldO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBlbGVtZW50ID09PSBgbnVtYmVyYCkge1xuICAgICAgICAgICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgVHlwZXNjcmlwdCBjYW4ndCB0ZWxsIHRoYXQgc3RhdHNba2V5XSBpcyBhIG51bWJlclxuICAgICAgICAgICAgICAgIHN0YXRzW2tleV0gPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAodHlwZW9mIGVsZW1lbnQgPT09IGBiaWdpbnRgKSB7XG4gICAgICAgICAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBUeXBlc2NyaXB0IGNhbid0IHRlbGwgdGhhdCBzdGF0c1trZXldIGlzIGEgYmlnaW50XG4gICAgICAgICAgICAgICAgc3RhdHNba2V5XSA9IEJpZ0ludCgwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKG5vZGVVdGlscy50eXBlcy5pc0RhdGUoZWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIFR5cGVzY3JpcHQgY2FuJ3QgdGVsbCB0aGF0IHN0YXRzW2tleV0gaXMgYSBiaWdpbnRcbiAgICAgICAgICAgICAgICBzdGF0c1trZXldID0gbmV3IERhdGUoMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHN0YXRzO1xufVxuZXhwb3J0cy5jbGVhclN0YXRzID0gY2xlYXJTdGF0cztcbmZ1bmN0aW9uIGNvbnZlcnRUb0JpZ0ludFN0YXRzKHN0YXRzKSB7XG4gICAgY29uc3QgYmlnaW50U3RhdHMgPSBuZXcgQmlnSW50U3RhdHNFbnRyeSgpO1xuICAgIGZvciAoY29uc3Qga2V5IGluIHN0YXRzKSB7XG4gICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc3RhdHMsIGtleSkpIHtcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnQgPSBzdGF0c1trZXldO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBlbGVtZW50ID09PSBgbnVtYmVyYCkge1xuICAgICAgICAgICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgVHlwZXNjcmlwdCBpc24ndCBhYmxlIHRvIHRlbGwgdGhpcyBpcyB2YWxpZFxuICAgICAgICAgICAgICAgIGJpZ2ludFN0YXRzW2tleV0gPSBCaWdJbnQoZWxlbWVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChub2RlVXRpbHMudHlwZXMuaXNEYXRlKGVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBUeXBlc2NyaXB0IGlzbid0IGFibGUgdG8gdGVsbCB0aGlzIGlzIHZhbGlkXG4gICAgICAgICAgICAgICAgYmlnaW50U3RhdHNba2V5XSA9IG5ldyBEYXRlKGVsZW1lbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIGJpZ2ludFN0YXRzLmF0aW1lTnMgPSBiaWdpbnRTdGF0cy5hdGltZU1zICogQmlnSW50KDFlNik7XG4gICAgYmlnaW50U3RhdHMubXRpbWVOcyA9IGJpZ2ludFN0YXRzLm10aW1lTXMgKiBCaWdJbnQoMWU2KTtcbiAgICBiaWdpbnRTdGF0cy5jdGltZU5zID0gYmlnaW50U3RhdHMuY3RpbWVNcyAqIEJpZ0ludCgxZTYpO1xuICAgIGJpZ2ludFN0YXRzLmJpcnRodGltZU5zID0gYmlnaW50U3RhdHMuYmlydGh0aW1lTXMgKiBCaWdJbnQoMWU2KTtcbiAgICByZXR1cm4gYmlnaW50U3RhdHM7XG59XG5leHBvcnRzLmNvbnZlcnRUb0JpZ0ludFN0YXRzID0gY29udmVydFRvQmlnSW50U3RhdHM7XG5mdW5jdGlvbiBhcmVTdGF0c0VxdWFsKGEsIGIpIHtcbiAgICBpZiAoYS5hdGltZU1zICE9PSBiLmF0aW1lTXMpXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICBpZiAoYS5iaXJ0aHRpbWVNcyAhPT0gYi5iaXJ0aHRpbWVNcylcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIGlmIChhLmJsa3NpemUgIT09IGIuYmxrc2l6ZSlcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIGlmIChhLmJsb2NrcyAhPT0gYi5ibG9ja3MpXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICBpZiAoYS5jdGltZU1zICE9PSBiLmN0aW1lTXMpXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICBpZiAoYS5kZXYgIT09IGIuZGV2KVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgaWYgKGEuZ2lkICE9PSBiLmdpZClcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIGlmIChhLmlubyAhPT0gYi5pbm8pXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICBpZiAoYS5pc0Jsb2NrRGV2aWNlKCkgIT09IGIuaXNCbG9ja0RldmljZSgpKVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgaWYgKGEuaXNDaGFyYWN0ZXJEZXZpY2UoKSAhPT0gYi5pc0NoYXJhY3RlckRldmljZSgpKVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgaWYgKGEuaXNEaXJlY3RvcnkoKSAhPT0gYi5pc0RpcmVjdG9yeSgpKVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgaWYgKGEuaXNGSUZPKCkgIT09IGIuaXNGSUZPKCkpXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICBpZiAoYS5pc0ZpbGUoKSAhPT0gYi5pc0ZpbGUoKSlcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIGlmIChhLmlzU29ja2V0KCkgIT09IGIuaXNTb2NrZXQoKSlcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIGlmIChhLmlzU3ltYm9saWNMaW5rKCkgIT09IGIuaXNTeW1ib2xpY0xpbmsoKSlcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIGlmIChhLm1vZGUgIT09IGIubW9kZSlcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIGlmIChhLm10aW1lTXMgIT09IGIubXRpbWVNcylcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIGlmIChhLm5saW5rICE9PSBiLm5saW5rKVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgaWYgKGEucmRldiAhPT0gYi5yZGV2KVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgaWYgKGEuc2l6ZSAhPT0gYi5zaXplKVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgaWYgKGEudWlkICE9PSBiLnVpZClcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIGNvbnN0IGFOID0gYTtcbiAgICBjb25zdCBiTiA9IGI7XG4gICAgaWYgKGFOLmF0aW1lTnMgIT09IGJOLmF0aW1lTnMpXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICBpZiAoYU4ubXRpbWVOcyAhPT0gYk4ubXRpbWVOcylcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIGlmIChhTi5jdGltZU5zICE9PSBiTi5jdGltZU5zKVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgaWYgKGFOLmJpcnRodGltZU5zICE9PSBiTi5iaXJ0aHRpbWVOcylcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiB0cnVlO1xufVxuZXhwb3J0cy5hcmVTdGF0c0VxdWFsID0gYXJlU3RhdHNFcXVhbDtcbiIsICJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMudG9GaWxlbmFtZSA9IGV4cG9ydHMuY29udmVydFBhdGggPSBleHBvcnRzLnBwYXRoID0gZXhwb3J0cy5ucGF0aCA9IGV4cG9ydHMuRmlsZW5hbWUgPSBleHBvcnRzLlBvcnRhYmxlUGF0aCA9IHZvaWQgMDtcbmNvbnN0IHRzbGliXzEgPSByZXF1aXJlKFwidHNsaWJcIik7XG5jb25zdCBwYXRoXzEgPSB0c2xpYl8xLl9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwicGF0aFwiKSk7XG52YXIgUGF0aFR5cGU7XG4oZnVuY3Rpb24gKFBhdGhUeXBlKSB7XG4gICAgUGF0aFR5cGVbUGF0aFR5cGVbXCJGaWxlXCJdID0gMF0gPSBcIkZpbGVcIjtcbiAgICBQYXRoVHlwZVtQYXRoVHlwZVtcIlBvcnRhYmxlXCJdID0gMV0gPSBcIlBvcnRhYmxlXCI7XG4gICAgUGF0aFR5cGVbUGF0aFR5cGVbXCJOYXRpdmVcIl0gPSAyXSA9IFwiTmF0aXZlXCI7XG59KShQYXRoVHlwZSB8fCAoUGF0aFR5cGUgPSB7fSkpO1xuZXhwb3J0cy5Qb3J0YWJsZVBhdGggPSB7XG4gICAgcm9vdDogYC9gLFxuICAgIGRvdDogYC5gLFxufTtcbmV4cG9ydHMuRmlsZW5hbWUgPSB7XG4gICAgaG9tZTogYH5gLFxuICAgIG5vZGVNb2R1bGVzOiBgbm9kZV9tb2R1bGVzYCxcbiAgICBtYW5pZmVzdDogYHBhY2thZ2UuanNvbmAsXG4gICAgbG9ja2ZpbGU6IGB5YXJuLmxvY2tgLFxuICAgIHZpcnR1YWw6IGBfX3ZpcnR1YWxfX2AsXG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWRcbiAgICAgKi9cbiAgICBwbnBKczogYC5wbnAuanNgLFxuICAgIHBucENqczogYC5wbnAuY2pzYCxcbiAgICBwbnBEYXRhOiBgLnBucC5kYXRhLmpzb25gLFxuICAgIHBucEVzbUxvYWRlcjogYC5wbnAubG9hZGVyLm1qc2AsXG4gICAgcmM6IGAueWFybnJjLnltbGAsXG59O1xuZXhwb3J0cy5ucGF0aCA9IE9iamVjdC5jcmVhdGUocGF0aF8xLmRlZmF1bHQpO1xuZXhwb3J0cy5wcGF0aCA9IE9iamVjdC5jcmVhdGUocGF0aF8xLmRlZmF1bHQucG9zaXgpO1xuZXhwb3J0cy5ucGF0aC5jd2QgPSAoKSA9PiBwcm9jZXNzLmN3ZCgpO1xuZXhwb3J0cy5wcGF0aC5jd2QgPSAoKSA9PiB0b1BvcnRhYmxlUGF0aChwcm9jZXNzLmN3ZCgpKTtcbmV4cG9ydHMucHBhdGgucmVzb2x2ZSA9ICguLi5zZWdtZW50cykgPT4ge1xuICAgIGlmIChzZWdtZW50cy5sZW5ndGggPiAwICYmIGV4cG9ydHMucHBhdGguaXNBYnNvbHV0ZShzZWdtZW50c1swXSkpIHtcbiAgICAgICAgcmV0dXJuIHBhdGhfMS5kZWZhdWx0LnBvc2l4LnJlc29sdmUoLi4uc2VnbWVudHMpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHBhdGhfMS5kZWZhdWx0LnBvc2l4LnJlc29sdmUoZXhwb3J0cy5wcGF0aC5jd2QoKSwgLi4uc2VnbWVudHMpO1xuICAgIH1cbn07XG5jb25zdCBjb250YWlucyA9IGZ1bmN0aW9uIChwYXRoVXRpbHMsIGZyb20sIHRvKSB7XG4gICAgZnJvbSA9IHBhdGhVdGlscy5ub3JtYWxpemUoZnJvbSk7XG4gICAgdG8gPSBwYXRoVXRpbHMubm9ybWFsaXplKHRvKTtcbiAgICBpZiAoZnJvbSA9PT0gdG8pXG4gICAgICAgIHJldHVybiBgLmA7XG4gICAgaWYgKCFmcm9tLmVuZHNXaXRoKHBhdGhVdGlscy5zZXApKVxuICAgICAgICBmcm9tID0gKGZyb20gKyBwYXRoVXRpbHMuc2VwKTtcbiAgICBpZiAodG8uc3RhcnRzV2l0aChmcm9tKSkge1xuICAgICAgICByZXR1cm4gdG8uc2xpY2UoZnJvbS5sZW5ndGgpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxufTtcbmV4cG9ydHMubnBhdGguZnJvbVBvcnRhYmxlUGF0aCA9IGZyb21Qb3J0YWJsZVBhdGg7XG5leHBvcnRzLm5wYXRoLnRvUG9ydGFibGVQYXRoID0gdG9Qb3J0YWJsZVBhdGg7XG5leHBvcnRzLm5wYXRoLmNvbnRhaW5zID0gKGZyb20sIHRvKSA9PiBjb250YWlucyhleHBvcnRzLm5wYXRoLCBmcm9tLCB0byk7XG5leHBvcnRzLnBwYXRoLmNvbnRhaW5zID0gKGZyb20sIHRvKSA9PiBjb250YWlucyhleHBvcnRzLnBwYXRoLCBmcm9tLCB0byk7XG5jb25zdCBXSU5ET1dTX1BBVEhfUkVHRVhQID0gL14oW2EtekEtWl06LiopJC87XG5jb25zdCBVTkNfV0lORE9XU19QQVRIX1JFR0VYUCA9IC9eXFwvXFwvKFxcLlxcLyk/KC4qKSQvO1xuY29uc3QgUE9SVEFCTEVfUEFUSF9SRUdFWFAgPSAvXlxcLyhbYS16QS1aXTouKikkLztcbmNvbnN0IFVOQ19QT1JUQUJMRV9QQVRIX1JFR0VYUCA9IC9eXFwvdW5jXFwvKFxcLmRvdFxcLyk/KC4qKSQvO1xuLy8gUGF0aCBzaG91bGQgbG9vayBsaWtlIFwiL046L2JlcnJ5L3NjcmlwdHMvcGx1Z2luLXBhY2suanNcIlxuLy8gQW5kIHRyYW5zZm9ybSB0byBcIk46XFxiZXJyeVxcc2NyaXB0c1xccGx1Z2luLXBhY2suanNcIlxuZnVuY3Rpb24gZnJvbVBvcnRhYmxlUGF0aChwKSB7XG4gICAgaWYgKHByb2Nlc3MucGxhdGZvcm0gIT09IGB3aW4zMmApXG4gICAgICAgIHJldHVybiBwO1xuICAgIGxldCBwb3J0YWJsZVBhdGhNYXRjaCwgdW5jUG9ydGFibGVQYXRoTWF0Y2g7XG4gICAgaWYgKChwb3J0YWJsZVBhdGhNYXRjaCA9IHAubWF0Y2goUE9SVEFCTEVfUEFUSF9SRUdFWFApKSlcbiAgICAgICAgcCA9IHBvcnRhYmxlUGF0aE1hdGNoWzFdO1xuICAgIGVsc2UgaWYgKCh1bmNQb3J0YWJsZVBhdGhNYXRjaCA9IHAubWF0Y2goVU5DX1BPUlRBQkxFX1BBVEhfUkVHRVhQKSkpXG4gICAgICAgIHAgPSBgXFxcXFxcXFwke3VuY1BvcnRhYmxlUGF0aE1hdGNoWzFdID8gYC5cXFxcYCA6IGBgfSR7dW5jUG9ydGFibGVQYXRoTWF0Y2hbMl19YDtcbiAgICBlbHNlXG4gICAgICAgIHJldHVybiBwO1xuICAgIHJldHVybiBwLnJlcGxhY2UoL1xcLy9nLCBgXFxcXGApO1xufVxuLy8gUGF0aCBzaG91bGQgbG9vayBsaWtlIFwiTjovYmVycnkvc2NyaXB0cy9wbHVnaW4tcGFjay5qc1wiXG4vLyBBbmQgdHJhbnNmb3JtIHRvIFwiL046L2JlcnJ5L3NjcmlwdHMvcGx1Z2luLXBhY2suanNcIlxuZnVuY3Rpb24gdG9Qb3J0YWJsZVBhdGgocCkge1xuICAgIGlmIChwcm9jZXNzLnBsYXRmb3JtICE9PSBgd2luMzJgKVxuICAgICAgICByZXR1cm4gcDtcbiAgICBwID0gcC5yZXBsYWNlKC9cXFxcL2csIGAvYCk7XG4gICAgbGV0IHdpbmRvd3NQYXRoTWF0Y2gsIHVuY1dpbmRvd3NQYXRoTWF0Y2g7XG4gICAgaWYgKCh3aW5kb3dzUGF0aE1hdGNoID0gcC5tYXRjaChXSU5ET1dTX1BBVEhfUkVHRVhQKSkpXG4gICAgICAgIHAgPSBgLyR7d2luZG93c1BhdGhNYXRjaFsxXX1gO1xuICAgIGVsc2UgaWYgKCh1bmNXaW5kb3dzUGF0aE1hdGNoID0gcC5tYXRjaChVTkNfV0lORE9XU19QQVRIX1JFR0VYUCkpKVxuICAgICAgICBwID0gYC91bmMvJHt1bmNXaW5kb3dzUGF0aE1hdGNoWzFdID8gYC5kb3QvYCA6IGBgfSR7dW5jV2luZG93c1BhdGhNYXRjaFsyXX1gO1xuICAgIHJldHVybiBwO1xufVxuZnVuY3Rpb24gY29udmVydFBhdGgodGFyZ2V0UGF0aFV0aWxzLCBzb3VyY2VQYXRoKSB7XG4gICAgcmV0dXJuICh0YXJnZXRQYXRoVXRpbHMgPT09IGV4cG9ydHMubnBhdGggPyBmcm9tUG9ydGFibGVQYXRoKHNvdXJjZVBhdGgpIDogdG9Qb3J0YWJsZVBhdGgoc291cmNlUGF0aCkpO1xufVxuZXhwb3J0cy5jb252ZXJ0UGF0aCA9IGNvbnZlcnRQYXRoO1xuZnVuY3Rpb24gdG9GaWxlbmFtZShmaWxlbmFtZSkge1xuICAgIGlmIChleHBvcnRzLm5wYXRoLnBhcnNlKGZpbGVuYW1lKS5kaXIgIT09IGBgIHx8IGV4cG9ydHMucHBhdGgucGFyc2UoZmlsZW5hbWUpLmRpciAhPT0gYGApXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBmaWxlbmFtZTogXCIke2ZpbGVuYW1lfVwiYCk7XG4gICAgcmV0dXJuIGZpbGVuYW1lO1xufVxuZXhwb3J0cy50b0ZpbGVuYW1lID0gdG9GaWxlbmFtZTtcbiIsICJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuY29weVByb21pc2UgPSBleHBvcnRzLnNldHVwQ29weUluZGV4ID0gdm9pZCAwO1xuY29uc3QgdHNsaWJfMSA9IHJlcXVpcmUoXCJ0c2xpYlwiKTtcbmNvbnN0IGNvbnN0YW50cyA9IHRzbGliXzEuX19pbXBvcnRTdGFyKHJlcXVpcmUoXCIuLi9jb25zdGFudHNcIikpO1xuY29uc3QgcGF0aF8xID0gcmVxdWlyZShcIi4uL3BhdGhcIik7XG5jb25zdCBkZWZhdWx0VGltZSA9IG5ldyBEYXRlKGNvbnN0YW50cy5TQUZFX1RJTUUgKiAxMDAwKTtcbmNvbnN0IGRlZmF1bHRUaW1lTXMgPSBkZWZhdWx0VGltZS5nZXRUaW1lKCk7XG5hc3luYyBmdW5jdGlvbiBzZXR1cENvcHlJbmRleChkZXN0aW5hdGlvbkZzLCBsaW5rU3RyYXRlZ3kpIHtcbiAgICBjb25zdCBoZXhDaGFyYWN0ZXJzID0gYDAxMjM0NTY3ODlhYmNkZWZgO1xuICAgIGF3YWl0IGRlc3RpbmF0aW9uRnMubWtkaXJQcm9taXNlKGxpbmtTdHJhdGVneS5pbmRleFBhdGgsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICAgIGNvbnN0IHByb21pc2VzID0gW107XG4gICAgZm9yIChjb25zdCBsMSBvZiBoZXhDaGFyYWN0ZXJzKVxuICAgICAgICBmb3IgKGNvbnN0IGwyIG9mIGhleENoYXJhY3RlcnMpXG4gICAgICAgICAgICBwcm9taXNlcy5wdXNoKGRlc3RpbmF0aW9uRnMubWtkaXJQcm9taXNlKGRlc3RpbmF0aW9uRnMucGF0aFV0aWxzLmpvaW4obGlua1N0cmF0ZWd5LmluZGV4UGF0aCwgYCR7bDF9JHtsMn1gKSwgeyByZWN1cnNpdmU6IHRydWUgfSkpO1xuICAgIGF3YWl0IFByb21pc2UuYWxsKHByb21pc2VzKTtcbiAgICByZXR1cm4gbGlua1N0cmF0ZWd5LmluZGV4UGF0aDtcbn1cbmV4cG9ydHMuc2V0dXBDb3B5SW5kZXggPSBzZXR1cENvcHlJbmRleDtcbmFzeW5jIGZ1bmN0aW9uIGNvcHlQcm9taXNlKGRlc3RpbmF0aW9uRnMsIGRlc3RpbmF0aW9uLCBzb3VyY2VGcywgc291cmNlLCBvcHRzKSB7XG4gICAgY29uc3Qgbm9ybWFsaXplZERlc3RpbmF0aW9uID0gZGVzdGluYXRpb25Gcy5wYXRoVXRpbHMubm9ybWFsaXplKGRlc3RpbmF0aW9uKTtcbiAgICBjb25zdCBub3JtYWxpemVkU291cmNlID0gc291cmNlRnMucGF0aFV0aWxzLm5vcm1hbGl6ZShzb3VyY2UpO1xuICAgIGNvbnN0IHByZWxheW91dCA9IFtdO1xuICAgIGNvbnN0IHBvc3RsYXlvdXQgPSBbXTtcbiAgICBjb25zdCB7IGF0aW1lLCBtdGltZSB9ID0gb3B0cy5zdGFibGVUaW1lXG4gICAgICAgID8geyBhdGltZTogZGVmYXVsdFRpbWUsIG10aW1lOiBkZWZhdWx0VGltZSB9XG4gICAgICAgIDogYXdhaXQgc291cmNlRnMubHN0YXRQcm9taXNlKG5vcm1hbGl6ZWRTb3VyY2UpO1xuICAgIGF3YWl0IGRlc3RpbmF0aW9uRnMubWtkaXJwUHJvbWlzZShkZXN0aW5hdGlvbkZzLnBhdGhVdGlscy5kaXJuYW1lKGRlc3RpbmF0aW9uKSwgeyB1dGltZXM6IFthdGltZSwgbXRpbWVdIH0pO1xuICAgIGF3YWl0IGNvcHlJbXBsKHByZWxheW91dCwgcG9zdGxheW91dCwgZGVzdGluYXRpb25Gcywgbm9ybWFsaXplZERlc3RpbmF0aW9uLCBzb3VyY2VGcywgbm9ybWFsaXplZFNvdXJjZSwgeyAuLi5vcHRzLCBkaWRQYXJlbnRFeGlzdDogdHJ1ZSB9KTtcbiAgICBmb3IgKGNvbnN0IG9wZXJhdGlvbiBvZiBwcmVsYXlvdXQpXG4gICAgICAgIGF3YWl0IG9wZXJhdGlvbigpO1xuICAgIGF3YWl0IFByb21pc2UuYWxsKHBvc3RsYXlvdXQubWFwKG9wZXJhdGlvbiA9PiB7XG4gICAgICAgIHJldHVybiBvcGVyYXRpb24oKTtcbiAgICB9KSk7XG59XG5leHBvcnRzLmNvcHlQcm9taXNlID0gY29weVByb21pc2U7XG5hc3luYyBmdW5jdGlvbiBjb3B5SW1wbChwcmVsYXlvdXQsIHBvc3RsYXlvdXQsIGRlc3RpbmF0aW9uRnMsIGRlc3RpbmF0aW9uLCBzb3VyY2VGcywgc291cmNlLCBvcHRzKSB7XG4gICAgdmFyIF9hLCBfYiwgX2M7XG4gICAgY29uc3QgZGVzdGluYXRpb25TdGF0ID0gb3B0cy5kaWRQYXJlbnRFeGlzdCA/IGF3YWl0IG1heWJlTFN0YXQoZGVzdGluYXRpb25GcywgZGVzdGluYXRpb24pIDogbnVsbDtcbiAgICBjb25zdCBzb3VyY2VTdGF0ID0gYXdhaXQgc291cmNlRnMubHN0YXRQcm9taXNlKHNvdXJjZSk7XG4gICAgY29uc3QgeyBhdGltZSwgbXRpbWUgfSA9IG9wdHMuc3RhYmxlVGltZVxuICAgICAgICA/IHsgYXRpbWU6IGRlZmF1bHRUaW1lLCBtdGltZTogZGVmYXVsdFRpbWUgfVxuICAgICAgICA6IHNvdXJjZVN0YXQ7XG4gICAgbGV0IHVwZGF0ZWQ7XG4gICAgc3dpdGNoICh0cnVlKSB7XG4gICAgICAgIGNhc2Ugc291cmNlU3RhdC5pc0RpcmVjdG9yeSgpOlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHVwZGF0ZWQgPSBhd2FpdCBjb3B5Rm9sZGVyKHByZWxheW91dCwgcG9zdGxheW91dCwgZGVzdGluYXRpb25GcywgZGVzdGluYXRpb24sIGRlc3RpbmF0aW9uU3RhdCwgc291cmNlRnMsIHNvdXJjZSwgc291cmNlU3RhdCwgb3B0cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBzb3VyY2VTdGF0LmlzRmlsZSgpOlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHVwZGF0ZWQgPSBhd2FpdCBjb3B5RmlsZShwcmVsYXlvdXQsIHBvc3RsYXlvdXQsIGRlc3RpbmF0aW9uRnMsIGRlc3RpbmF0aW9uLCBkZXN0aW5hdGlvblN0YXQsIHNvdXJjZUZzLCBzb3VyY2UsIHNvdXJjZVN0YXQsIG9wdHMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2Ugc291cmNlU3RhdC5pc1N5bWJvbGljTGluaygpOlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHVwZGF0ZWQgPSBhd2FpdCBjb3B5U3ltbGluayhwcmVsYXlvdXQsIHBvc3RsYXlvdXQsIGRlc3RpbmF0aW9uRnMsIGRlc3RpbmF0aW9uLCBkZXN0aW5hdGlvblN0YXQsIHNvdXJjZUZzLCBzb3VyY2UsIHNvdXJjZVN0YXQsIG9wdHMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbnN1cHBvcnRlZCBmaWxlIHR5cGUgKCR7c291cmNlU3RhdC5tb2RlfSlgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICAvLyBXZSBhcmVuJ3QgYWxsb3dlZCB0byBtb2RpZnkgdGhlIGRlc3RpbmF0aW9uIGlmIHdlIHdvcmsgd2l0aCB0aGUgaW5kZXgsXG4gICAgLy8gc2luY2Ugb3RoZXJ3aXNlIHdlJ2QgYWNjaWRlbnRhbGx5IHByb3BhZ2F0ZSB0aGUgY2hhbmdlcyB0byBhbGwgcHJvamVjdHMuXG4gICAgaWYgKCgoX2EgPSBvcHRzLmxpbmtTdHJhdGVneSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnR5cGUpICE9PSBgSGFyZGxpbmtGcm9tSW5kZXhgIHx8ICFzb3VyY2VTdGF0LmlzRmlsZSgpKSB7XG4gICAgICAgIGlmICh1cGRhdGVkIHx8ICgoX2IgPSBkZXN0aW5hdGlvblN0YXQgPT09IG51bGwgfHwgZGVzdGluYXRpb25TdGF0ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBkZXN0aW5hdGlvblN0YXQubXRpbWUpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5nZXRUaW1lKCkpICE9PSBtdGltZS5nZXRUaW1lKCkgfHwgKChfYyA9IGRlc3RpbmF0aW9uU3RhdCA9PT0gbnVsbCB8fCBkZXN0aW5hdGlvblN0YXQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGRlc3RpbmF0aW9uU3RhdC5hdGltZSkgPT09IG51bGwgfHwgX2MgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9jLmdldFRpbWUoKSkgIT09IGF0aW1lLmdldFRpbWUoKSkge1xuICAgICAgICAgICAgcG9zdGxheW91dC5wdXNoKCgpID0+IGRlc3RpbmF0aW9uRnMubHV0aW1lc1Byb21pc2UoZGVzdGluYXRpb24sIGF0aW1lLCBtdGltZSkpO1xuICAgICAgICAgICAgdXBkYXRlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRlc3RpbmF0aW9uU3RhdCA9PT0gbnVsbCB8fCAoZGVzdGluYXRpb25TdGF0Lm1vZGUgJiAwbzc3NykgIT09IChzb3VyY2VTdGF0Lm1vZGUgJiAwbzc3NykpIHtcbiAgICAgICAgICAgIHBvc3RsYXlvdXQucHVzaCgoKSA9PiBkZXN0aW5hdGlvbkZzLmNobW9kUHJvbWlzZShkZXN0aW5hdGlvbiwgc291cmNlU3RhdC5tb2RlICYgMG83NzcpKTtcbiAgICAgICAgICAgIHVwZGF0ZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB1cGRhdGVkO1xufVxuYXN5bmMgZnVuY3Rpb24gbWF5YmVMU3RhdChiYXNlRnMsIHApIHtcbiAgICB0cnkge1xuICAgICAgICByZXR1cm4gYXdhaXQgYmFzZUZzLmxzdGF0UHJvbWlzZShwKTtcbiAgICB9XG4gICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxufVxuYXN5bmMgZnVuY3Rpb24gY29weUZvbGRlcihwcmVsYXlvdXQsIHBvc3RsYXlvdXQsIGRlc3RpbmF0aW9uRnMsIGRlc3RpbmF0aW9uLCBkZXN0aW5hdGlvblN0YXQsIHNvdXJjZUZzLCBzb3VyY2UsIHNvdXJjZVN0YXQsIG9wdHMpIHtcbiAgICBpZiAoZGVzdGluYXRpb25TdGF0ICE9PSBudWxsICYmICFkZXN0aW5hdGlvblN0YXQuaXNEaXJlY3RvcnkoKSkge1xuICAgICAgICBpZiAob3B0cy5vdmVyd3JpdGUpIHtcbiAgICAgICAgICAgIHByZWxheW91dC5wdXNoKGFzeW5jICgpID0+IGRlc3RpbmF0aW9uRnMucmVtb3ZlUHJvbWlzZShkZXN0aW5hdGlvbikpO1xuICAgICAgICAgICAgZGVzdGluYXRpb25TdGF0ID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBsZXQgdXBkYXRlZCA9IGZhbHNlO1xuICAgIGlmIChkZXN0aW5hdGlvblN0YXQgPT09IG51bGwpIHtcbiAgICAgICAgcHJlbGF5b3V0LnB1c2goYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBhd2FpdCBkZXN0aW5hdGlvbkZzLm1rZGlyUHJvbWlzZShkZXN0aW5hdGlvbiwgeyBtb2RlOiBzb3VyY2VTdGF0Lm1vZGUgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgaWYgKGVyci5jb2RlICE9PSBgRUVYSVNUYCkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdXBkYXRlZCA9IHRydWU7XG4gICAgfVxuICAgIGNvbnN0IGVudHJpZXMgPSBhd2FpdCBzb3VyY2VGcy5yZWFkZGlyUHJvbWlzZShzb3VyY2UpO1xuICAgIGNvbnN0IG5leHRPcHRzID0gb3B0cy5kaWRQYXJlbnRFeGlzdCAmJiAhZGVzdGluYXRpb25TdGF0ID8geyAuLi5vcHRzLCBkaWRQYXJlbnRFeGlzdDogZmFsc2UgfSA6IG9wdHM7XG4gICAgaWYgKG9wdHMuc3RhYmxlU29ydCkge1xuICAgICAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIGVudHJpZXMuc29ydCgpKSB7XG4gICAgICAgICAgICBpZiAoYXdhaXQgY29weUltcGwocHJlbGF5b3V0LCBwb3N0bGF5b3V0LCBkZXN0aW5hdGlvbkZzLCBkZXN0aW5hdGlvbkZzLnBhdGhVdGlscy5qb2luKGRlc3RpbmF0aW9uLCBlbnRyeSksIHNvdXJjZUZzLCBzb3VyY2VGcy5wYXRoVXRpbHMuam9pbihzb3VyY2UsIGVudHJ5KSwgbmV4dE9wdHMpKSB7XG4gICAgICAgICAgICAgICAgdXBkYXRlZCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIGNvbnN0IGVudHJpZXNVcGRhdGVTdGF0dXMgPSBhd2FpdCBQcm9taXNlLmFsbChlbnRyaWVzLm1hcChhc3luYyAoZW50cnkpID0+IHtcbiAgICAgICAgICAgIGF3YWl0IGNvcHlJbXBsKHByZWxheW91dCwgcG9zdGxheW91dCwgZGVzdGluYXRpb25GcywgZGVzdGluYXRpb25Gcy5wYXRoVXRpbHMuam9pbihkZXN0aW5hdGlvbiwgZW50cnkpLCBzb3VyY2VGcywgc291cmNlRnMucGF0aFV0aWxzLmpvaW4oc291cmNlLCBlbnRyeSksIG5leHRPcHRzKTtcbiAgICAgICAgfSkpO1xuICAgICAgICBpZiAoZW50cmllc1VwZGF0ZVN0YXR1cy5zb21lKHN0YXR1cyA9PiBzdGF0dXMpKSB7XG4gICAgICAgICAgICB1cGRhdGVkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdXBkYXRlZDtcbn1cbmFzeW5jIGZ1bmN0aW9uIGNvcHlGaWxlVmlhSW5kZXgocHJlbGF5b3V0LCBwb3N0bGF5b3V0LCBkZXN0aW5hdGlvbkZzLCBkZXN0aW5hdGlvbiwgZGVzdGluYXRpb25TdGF0LCBzb3VyY2VGcywgc291cmNlLCBzb3VyY2VTdGF0LCBvcHRzLCBsaW5rU3RyYXRlZ3kpIHtcbiAgICBjb25zdCBzb3VyY2VIYXNoID0gYXdhaXQgc291cmNlRnMuY2hlY2tzdW1GaWxlUHJvbWlzZShzb3VyY2UsIHsgYWxnb3JpdGhtOiBgc2hhMWAgfSk7XG4gICAgY29uc3QgaW5kZXhQYXRoID0gZGVzdGluYXRpb25Gcy5wYXRoVXRpbHMuam9pbihsaW5rU3RyYXRlZ3kuaW5kZXhQYXRoLCBzb3VyY2VIYXNoLnNsaWNlKDAsIDIpLCBgJHtzb3VyY2VIYXNofS5kYXRgKTtcbiAgICBsZXQgQXRvbWljQmVoYXZpb3I7XG4gICAgKGZ1bmN0aW9uIChBdG9taWNCZWhhdmlvcikge1xuICAgICAgICBBdG9taWNCZWhhdmlvcltBdG9taWNCZWhhdmlvcltcIkxvY2tcIl0gPSAwXSA9IFwiTG9ja1wiO1xuICAgICAgICBBdG9taWNCZWhhdmlvcltBdG9taWNCZWhhdmlvcltcIlJlbmFtZVwiXSA9IDFdID0gXCJSZW5hbWVcIjtcbiAgICB9KShBdG9taWNCZWhhdmlvciB8fCAoQXRvbWljQmVoYXZpb3IgPSB7fSkpO1xuICAgIGxldCBhdG9taWNCZWhhdmlvciA9IEF0b21pY0JlaGF2aW9yLlJlbmFtZTtcbiAgICBsZXQgaW5kZXhTdGF0ID0gYXdhaXQgbWF5YmVMU3RhdChkZXN0aW5hdGlvbkZzLCBpbmRleFBhdGgpO1xuICAgIGlmIChkZXN0aW5hdGlvblN0YXQpIHtcbiAgICAgICAgY29uc3QgaXNEZXN0aW5hdGlvbkhhcmRsaW5rZWRGcm9tSW5kZXggPSBpbmRleFN0YXQgJiYgZGVzdGluYXRpb25TdGF0LmRldiA9PT0gaW5kZXhTdGF0LmRldiAmJiBkZXN0aW5hdGlvblN0YXQuaW5vID09PSBpbmRleFN0YXQuaW5vO1xuICAgICAgICBjb25zdCBpc0luZGV4TW9kaWZpZWQgPSAoaW5kZXhTdGF0ID09PSBudWxsIHx8IGluZGV4U3RhdCA9PT0gdm9pZCAwID8gdm9pZCAwIDogaW5kZXhTdGF0Lm10aW1lTXMpICE9PSBkZWZhdWx0VGltZU1zO1xuICAgICAgICBpZiAoaXNEZXN0aW5hdGlvbkhhcmRsaW5rZWRGcm9tSW5kZXgpIHtcbiAgICAgICAgICAgIC8vIElmIHRoZSBpbmRleCBpcyBtb2RpZmllZCwgd2Ugd2lsbCB3YW50IHRvIHJlcGFpciBpdC4gSG93ZXZlciwgdGhlXG4gICAgICAgICAgICAvLyBkZWZhdWx0IGxvZ2ljIGVuc3VyaW5nIGF0b21pY2l0eSAoY3JlYXRpbmcgYSBmaWxlIGluIGEgdGVtcG9yYXJ5XG4gICAgICAgICAgICAvLyBwbGFjZSBiZWZvcmUgYXRvbWljYWxseSBtb3ZpbmcgaXQgaW50byBpdHMgZmluYWwgbG9jYXRpb24pIHdvbid0XG4gICAgICAgICAgICAvLyB3b3JrOiB3ZSdkIGxvc2UgYWxsIHRoZSBleGlzdGluZyBoYXJkbGlua3MuXG4gICAgICAgICAgICAvL1xuICAgICAgICAgICAgLy8gVG8gYXZvaWQgdGhhdCwgd2hlbiByZXBhaXJpbmcgYSBmaWxlLCB3ZSBmYWxsYmFjayB0byB0aGUgc2xvdyBidXRcbiAgICAgICAgICAgIC8vIHNhZmVyIGBsb2NrUHJvbWlzZWAtYmFzZWQgbXV0ZXgsIHdoaWNoIHdpbGwgcHJldmVudCBtdWx0aXBsZVxuICAgICAgICAgICAgLy8gcHJvY2Vzc2VzIHRvIG1vZGlmeSB0aGUgZmlsZSB3aXRob3V0IGltcGFjdGluZyB0aGVpciBpbm9kZS5cbiAgICAgICAgICAgIC8vXG4gICAgICAgICAgICAvLyBHaXZlIHRoYXQgdGhlIHJlcGFpciBtZWNoYW5pc20gc2hvdWxkIGJlIHZlcnkgcmFyZWx5IG5lZWRlZCBpblxuICAgICAgICAgICAgLy8gc2l0dWF0aW9uIHdoZXJlIHBlcmZvcm1hbmNlIGlzIGNyaXRpY2FsLCBpdCBzaG91bGQgYmUgb2suXG4gICAgICAgICAgICAvL1xuICAgICAgICAgICAgaWYgKGlzSW5kZXhNb2RpZmllZCAmJiBsaW5rU3RyYXRlZ3kuYXV0b1JlcGFpcikge1xuICAgICAgICAgICAgICAgIGF0b21pY0JlaGF2aW9yID0gQXRvbWljQmVoYXZpb3IuTG9jaztcbiAgICAgICAgICAgICAgICBpbmRleFN0YXQgPSBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICghaXNEZXN0aW5hdGlvbkhhcmRsaW5rZWRGcm9tSW5kZXgpIHtcbiAgICAgICAgICAgIGlmIChvcHRzLm92ZXJ3cml0ZSkge1xuICAgICAgICAgICAgICAgIHByZWxheW91dC5wdXNoKGFzeW5jICgpID0+IGRlc3RpbmF0aW9uRnMucmVtb3ZlUHJvbWlzZShkZXN0aW5hdGlvbikpO1xuICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uU3RhdCA9IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgdGVtcFBhdGggPSAhaW5kZXhTdGF0ICYmIGF0b21pY0JlaGF2aW9yID09PSBBdG9taWNCZWhhdmlvci5SZW5hbWVcbiAgICAgICAgPyBgJHtpbmRleFBhdGh9LiR7TWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMHgxMDAwMDAwMDApLnRvU3RyaW5nKDE2KS5wYWRTdGFydCg4LCBgMGApfWBcbiAgICAgICAgOiBudWxsO1xuICAgIGxldCB0ZW1wUGF0aENsZWFuZWQgPSBmYWxzZTtcbiAgICBwcmVsYXlvdXQucHVzaChhc3luYyAoKSA9PiB7XG4gICAgICAgIGlmICghaW5kZXhTdGF0KSB7XG4gICAgICAgICAgICBpZiAoYXRvbWljQmVoYXZpb3IgPT09IEF0b21pY0JlaGF2aW9yLkxvY2spIHtcbiAgICAgICAgICAgICAgICBhd2FpdCBkZXN0aW5hdGlvbkZzLmxvY2tQcm9taXNlKGluZGV4UGF0aCwgYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjb250ZW50ID0gYXdhaXQgc291cmNlRnMucmVhZEZpbGVQcm9taXNlKHNvdXJjZSk7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IGRlc3RpbmF0aW9uRnMud3JpdGVGaWxlUHJvbWlzZShpbmRleFBhdGgsIGNvbnRlbnQpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGF0b21pY0JlaGF2aW9yID09PSBBdG9taWNCZWhhdmlvci5SZW5hbWUgJiYgdGVtcFBhdGgpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjb250ZW50ID0gYXdhaXQgc291cmNlRnMucmVhZEZpbGVQcm9taXNlKHNvdXJjZSk7XG4gICAgICAgICAgICAgICAgYXdhaXQgZGVzdGluYXRpb25Gcy53cml0ZUZpbGVQcm9taXNlKHRlbXBQYXRoLCBjb250ZW50KTtcbiAgICAgICAgICAgICAgICAvLyBXZSB1c2UgYGxpbmtQcm9taXNlYCByYXRoZXIgdGhhbiBgcmVuYW1lUHJvbWlzZWAgYmVjYXVzZSB0aGUgbGF0ZXJcbiAgICAgICAgICAgICAgICAvLyBvdmVyd3JpdGVzIHRoZSBkZXN0aW5hdGlvbiBpZiBpdCBhbHJlYWR5IGV4aXN0czsgdXN1YWxseSB0aGlzXG4gICAgICAgICAgICAgICAgLy8gd291bGRuJ3QgYmUgYSBwcm9ibGVtLCBidXQgc2luY2Ugd2UgY2FyZSBhYm91dCBwcmVzZXJ2aW5nIHRoZVxuICAgICAgICAgICAgICAgIC8vIGhhcmRsaW5rIGlkZW50aXR5IG9mIHRoZSBkZXN0aW5hdGlvbiwgd2UgY2FuJ3QgZG8gdGhhdC5cbiAgICAgICAgICAgICAgICAvL1xuICAgICAgICAgICAgICAgIC8vIFNvIGluc3RlYWQgd2UgY3JlYXRlIGEgaGFyZGxpbmsgb2YgdGhlIHNvdXJjZSBmaWxlICh3aGljaCB3aWxsXG4gICAgICAgICAgICAgICAgLy8gZmFpbCB3aXRoIEVFWElTVCBpZiB0aGUgZGVzdGluYXRpb24gYWxyZWFkeSBleGlzdHMpLCBhbmQgd2UgcmVtb3ZlXG4gICAgICAgICAgICAgICAgLy8gdGhlIHNvdXJjZSBpbiB0aGUgcG9zdGxheW91dCBzdGVwcy5cbiAgICAgICAgICAgICAgICAvL1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IGRlc3RpbmF0aW9uRnMubGlua1Byb21pc2UodGVtcFBhdGgsIGluZGV4UGF0aCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVyci5jb2RlID09PSBgRUVYSVNUYCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGVtcFBhdGhDbGVhbmVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IGRlc3RpbmF0aW9uRnMudW5saW5rUHJvbWlzZSh0ZW1wUGF0aCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFkZXN0aW5hdGlvblN0YXQpIHtcbiAgICAgICAgICAgIGF3YWl0IGRlc3RpbmF0aW9uRnMubGlua1Byb21pc2UoaW5kZXhQYXRoLCBkZXN0aW5hdGlvbik7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBwb3N0bGF5b3V0LnB1c2goYXN5bmMgKCkgPT4ge1xuICAgICAgICBpZiAoIWluZGV4U3RhdClcbiAgICAgICAgICAgIGF3YWl0IGRlc3RpbmF0aW9uRnMubHV0aW1lc1Byb21pc2UoaW5kZXhQYXRoLCBkZWZhdWx0VGltZSwgZGVmYXVsdFRpbWUpO1xuICAgICAgICBpZiAodGVtcFBhdGggJiYgIXRlbXBQYXRoQ2xlYW5lZCkge1xuICAgICAgICAgICAgYXdhaXQgZGVzdGluYXRpb25Gcy51bmxpbmtQcm9taXNlKHRlbXBQYXRoKTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBmYWxzZTtcbn1cbmFzeW5jIGZ1bmN0aW9uIGNvcHlGaWxlRGlyZWN0KHByZWxheW91dCwgcG9zdGxheW91dCwgZGVzdGluYXRpb25GcywgZGVzdGluYXRpb24sIGRlc3RpbmF0aW9uU3RhdCwgc291cmNlRnMsIHNvdXJjZSwgc291cmNlU3RhdCwgb3B0cykge1xuICAgIGlmIChkZXN0aW5hdGlvblN0YXQgIT09IG51bGwpIHtcbiAgICAgICAgaWYgKG9wdHMub3ZlcndyaXRlKSB7XG4gICAgICAgICAgICBwcmVsYXlvdXQucHVzaChhc3luYyAoKSA9PiBkZXN0aW5hdGlvbkZzLnJlbW92ZVByb21pc2UoZGVzdGluYXRpb24pKTtcbiAgICAgICAgICAgIGRlc3RpbmF0aW9uU3RhdCA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gVE9ETzogQWRkIHN1cHBvcnQgZm9yIGZpbGUgY2xvbmluZywgYnkgYWRkaW5nIGEgZmxhZyBpbnNpZGUgdGhlIEZha2VGU1xuICAgIC8vIGluc3RhbmNlcyB0byBkZXRlY3Qgd2hpY2ggXCJuYW1lc3BhY2VcIiB0aGV5J3JlIHBhcnQgb2YgKGZvciBleGFtcGxlLCB0aGVcbiAgICAvLyBOb2RlRlMgYW5kIHRoZSBaaXBGUyB3b3VsZCBiZSBkaWZmZXJlbnQgbmFtZXNwYWNlcyBzaW5jZSB5b3UgY2FuJ3QgY2xvbmVcbiAgICAvLyBmcm9tIG9uZSBkaXNrIHRvIHRoZSBvdGhlcjsgb24gdGhlIG90aGVyIGhhbmQsIGEgQ3dkRlMgd291bGQgc2hhcmUgdGhlXG4gICAgLy8gbmFtZXNwYWNlIGZyb20gaXRzIGJhc2UgRlMgYW5kIHRodXMgd291bGQgc3VwcG9ydCBjbG9uaW5nKS5cbiAgICBwcmVsYXlvdXQucHVzaChhc3luYyAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGNvbnRlbnQgPSBhd2FpdCBzb3VyY2VGcy5yZWFkRmlsZVByb21pc2Uoc291cmNlKTtcbiAgICAgICAgYXdhaXQgZGVzdGluYXRpb25Gcy53cml0ZUZpbGVQcm9taXNlKGRlc3RpbmF0aW9uLCBjb250ZW50KTtcbiAgICB9KTtcbiAgICByZXR1cm4gdHJ1ZTtcbn1cbmFzeW5jIGZ1bmN0aW9uIGNvcHlGaWxlKHByZWxheW91dCwgcG9zdGxheW91dCwgZGVzdGluYXRpb25GcywgZGVzdGluYXRpb24sIGRlc3RpbmF0aW9uU3RhdCwgc291cmNlRnMsIHNvdXJjZSwgc291cmNlU3RhdCwgb3B0cykge1xuICAgIHZhciBfYTtcbiAgICBpZiAoKChfYSA9IG9wdHMubGlua1N0cmF0ZWd5KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EudHlwZSkgPT09IGBIYXJkbGlua0Zyb21JbmRleGApIHtcbiAgICAgICAgcmV0dXJuIGNvcHlGaWxlVmlhSW5kZXgocHJlbGF5b3V0LCBwb3N0bGF5b3V0LCBkZXN0aW5hdGlvbkZzLCBkZXN0aW5hdGlvbiwgZGVzdGluYXRpb25TdGF0LCBzb3VyY2VGcywgc291cmNlLCBzb3VyY2VTdGF0LCBvcHRzLCBvcHRzLmxpbmtTdHJhdGVneSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICByZXR1cm4gY29weUZpbGVEaXJlY3QocHJlbGF5b3V0LCBwb3N0bGF5b3V0LCBkZXN0aW5hdGlvbkZzLCBkZXN0aW5hdGlvbiwgZGVzdGluYXRpb25TdGF0LCBzb3VyY2VGcywgc291cmNlLCBzb3VyY2VTdGF0LCBvcHRzKTtcbiAgICB9XG59XG5hc3luYyBmdW5jdGlvbiBjb3B5U3ltbGluayhwcmVsYXlvdXQsIHBvc3RsYXlvdXQsIGRlc3RpbmF0aW9uRnMsIGRlc3RpbmF0aW9uLCBkZXN0aW5hdGlvblN0YXQsIHNvdXJjZUZzLCBzb3VyY2UsIHNvdXJjZVN0YXQsIG9wdHMpIHtcbiAgICBpZiAoZGVzdGluYXRpb25TdGF0ICE9PSBudWxsKSB7XG4gICAgICAgIGlmIChvcHRzLm92ZXJ3cml0ZSkge1xuICAgICAgICAgICAgcHJlbGF5b3V0LnB1c2goYXN5bmMgKCkgPT4gZGVzdGluYXRpb25Gcy5yZW1vdmVQcm9taXNlKGRlc3RpbmF0aW9uKSk7XG4gICAgICAgICAgICBkZXN0aW5hdGlvblN0YXQgPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuICAgIHByZWxheW91dC5wdXNoKGFzeW5jICgpID0+IHtcbiAgICAgICAgYXdhaXQgZGVzdGluYXRpb25Gcy5zeW1saW5rUHJvbWlzZSgoMCwgcGF0aF8xLmNvbnZlcnRQYXRoKShkZXN0aW5hdGlvbkZzLnBhdGhVdGlscywgYXdhaXQgc291cmNlRnMucmVhZGxpbmtQcm9taXNlKHNvdXJjZSkpLCBkZXN0aW5hdGlvbik7XG4gICAgfSk7XG4gICAgcmV0dXJuIHRydWU7XG59XG4iLCAiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLm9wZW5kaXIgPSBleHBvcnRzLkN1c3RvbURpciA9IHZvaWQgMDtcbmNvbnN0IHRzbGliXzEgPSByZXF1aXJlKFwidHNsaWJcIik7XG5jb25zdCBlcnJvcnMgPSB0c2xpYl8xLl9faW1wb3J0U3RhcihyZXF1aXJlKFwiLi4vZXJyb3JzXCIpKTtcbmNsYXNzIEN1c3RvbURpciB7XG4gICAgY29uc3RydWN0b3IocGF0aCwgbmV4dERpcmVudCwgb3B0cyA9IHt9KSB7XG4gICAgICAgIHRoaXMucGF0aCA9IHBhdGg7XG4gICAgICAgIHRoaXMubmV4dERpcmVudCA9IG5leHREaXJlbnQ7XG4gICAgICAgIHRoaXMub3B0cyA9IG9wdHM7XG4gICAgICAgIHRoaXMuY2xvc2VkID0gZmFsc2U7XG4gICAgfVxuICAgIHRocm93SWZDbG9zZWQoKSB7XG4gICAgICAgIGlmICh0aGlzLmNsb3NlZCkge1xuICAgICAgICAgICAgdGhyb3cgZXJyb3JzLkVSUl9ESVJfQ0xPU0VEKCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgYXN5bmMgKltTeW1ib2wuYXN5bmNJdGVyYXRvcl0oKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBsZXQgZGlyZW50O1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbmQtYXNzaWduXG4gICAgICAgICAgICB3aGlsZSAoKGRpcmVudCA9IGF3YWl0IHRoaXMucmVhZCgpKSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHlpZWxkIGRpcmVudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuY2xvc2UoKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZWFkKGNiKSB7XG4gICAgICAgIGNvbnN0IGRpcmVudCA9IHRoaXMucmVhZFN5bmMoKTtcbiAgICAgICAgaWYgKHR5cGVvZiBjYiAhPT0gYHVuZGVmaW5lZGApXG4gICAgICAgICAgICByZXR1cm4gY2IobnVsbCwgZGlyZW50KTtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShkaXJlbnQpO1xuICAgIH1cbiAgICByZWFkU3luYygpIHtcbiAgICAgICAgdGhpcy50aHJvd0lmQ2xvc2VkKCk7XG4gICAgICAgIHJldHVybiB0aGlzLm5leHREaXJlbnQoKTtcbiAgICB9XG4gICAgY2xvc2UoY2IpIHtcbiAgICAgICAgdGhpcy5jbG9zZVN5bmMoKTtcbiAgICAgICAgaWYgKHR5cGVvZiBjYiAhPT0gYHVuZGVmaW5lZGApXG4gICAgICAgICAgICByZXR1cm4gY2IobnVsbCk7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICB9XG4gICAgY2xvc2VTeW5jKCkge1xuICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICB0aGlzLnRocm93SWZDbG9zZWQoKTtcbiAgICAgICAgKF9iID0gKF9hID0gdGhpcy5vcHRzKS5vbkNsb3NlKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IuY2FsbChfYSk7XG4gICAgICAgIHRoaXMuY2xvc2VkID0gdHJ1ZTtcbiAgICB9XG59XG5leHBvcnRzLkN1c3RvbURpciA9IEN1c3RvbURpcjtcbmZ1bmN0aW9uIG9wZW5kaXIoZmFrZUZzLCBwYXRoLCBlbnRyaWVzLCBvcHRzKSB7XG4gICAgY29uc3QgbmV4dERpcmVudCA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgZmlsZW5hbWUgPSBlbnRyaWVzLnNoaWZ0KCk7XG4gICAgICAgIGlmICh0eXBlb2YgZmlsZW5hbWUgPT09IGB1bmRlZmluZWRgKVxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKGZha2VGcy5zdGF0U3luYyhmYWtlRnMucGF0aFV0aWxzLmpvaW4ocGF0aCwgZmlsZW5hbWUpKSwge1xuICAgICAgICAgICAgbmFtZTogZmlsZW5hbWUsXG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgcmV0dXJuIG5ldyBDdXN0b21EaXIocGF0aCwgbmV4dERpcmVudCwgb3B0cyk7XG59XG5leHBvcnRzLm9wZW5kaXIgPSBvcGVuZGlyO1xuIiwgIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5DdXN0b21TdGF0V2F0Y2hlciA9IGV4cG9ydHMuYXNzZXJ0U3RhdHVzID0gZXhwb3J0cy5TdGF0dXMgPSBleHBvcnRzLkV2ZW50ID0gdm9pZCAwO1xuY29uc3QgdHNsaWJfMSA9IHJlcXVpcmUoXCJ0c2xpYlwiKTtcbmNvbnN0IGV2ZW50c18xID0gcmVxdWlyZShcImV2ZW50c1wiKTtcbmNvbnN0IHN0YXRVdGlscyA9IHRzbGliXzEuX19pbXBvcnRTdGFyKHJlcXVpcmUoXCIuLi8uLi9zdGF0VXRpbHNcIikpO1xudmFyIEV2ZW50O1xuKGZ1bmN0aW9uIChFdmVudCkge1xuICAgIEV2ZW50W1wiQ2hhbmdlXCJdID0gXCJjaGFuZ2VcIjtcbiAgICBFdmVudFtcIlN0b3BcIl0gPSBcInN0b3BcIjtcbn0pKEV2ZW50ID0gZXhwb3J0cy5FdmVudCB8fCAoZXhwb3J0cy5FdmVudCA9IHt9KSk7XG52YXIgU3RhdHVzO1xuKGZ1bmN0aW9uIChTdGF0dXMpIHtcbiAgICBTdGF0dXNbXCJSZWFkeVwiXSA9IFwicmVhZHlcIjtcbiAgICBTdGF0dXNbXCJSdW5uaW5nXCJdID0gXCJydW5uaW5nXCI7XG4gICAgU3RhdHVzW1wiU3RvcHBlZFwiXSA9IFwic3RvcHBlZFwiO1xufSkoU3RhdHVzID0gZXhwb3J0cy5TdGF0dXMgfHwgKGV4cG9ydHMuU3RhdHVzID0ge30pKTtcbmZ1bmN0aW9uIGFzc2VydFN0YXR1cyhjdXJyZW50LCBleHBlY3RlZCkge1xuICAgIGlmIChjdXJyZW50ICE9PSBleHBlY3RlZCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgU3RhdFdhdGNoZXIgc3RhdHVzOiBleHBlY3RlZCAnJHtleHBlY3RlZH0nLCBnb3QgJyR7Y3VycmVudH0nYCk7XG4gICAgfVxufVxuZXhwb3J0cy5hc3NlcnRTdGF0dXMgPSBhc3NlcnRTdGF0dXM7XG5jbGFzcyBDdXN0b21TdGF0V2F0Y2hlciBleHRlbmRzIGV2ZW50c18xLkV2ZW50RW1pdHRlciB7XG4gICAgc3RhdGljIGNyZWF0ZShmYWtlRnMsIHBhdGgsIG9wdHMpIHtcbiAgICAgICAgY29uc3Qgc3RhdFdhdGNoZXIgPSBuZXcgQ3VzdG9tU3RhdFdhdGNoZXIoZmFrZUZzLCBwYXRoLCBvcHRzKTtcbiAgICAgICAgc3RhdFdhdGNoZXIuc3RhcnQoKTtcbiAgICAgICAgcmV0dXJuIHN0YXRXYXRjaGVyO1xuICAgIH1cbiAgICBjb25zdHJ1Y3RvcihmYWtlRnMsIHBhdGgsIHsgYmlnaW50ID0gZmFsc2UgfSA9IHt9KSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuc3RhdHVzID0gU3RhdHVzLlJlYWR5O1xuICAgICAgICB0aGlzLmNoYW5nZUxpc3RlbmVycyA9IG5ldyBNYXAoKTtcbiAgICAgICAgdGhpcy5zdGFydFRpbWVvdXQgPSBudWxsO1xuICAgICAgICB0aGlzLmZha2VGcyA9IGZha2VGcztcbiAgICAgICAgdGhpcy5wYXRoID0gcGF0aDtcbiAgICAgICAgdGhpcy5iaWdpbnQgPSBiaWdpbnQ7XG4gICAgICAgIHRoaXMubGFzdFN0YXRzID0gdGhpcy5zdGF0KCk7XG4gICAgfVxuICAgIHN0YXJ0KCkge1xuICAgICAgICBhc3NlcnRTdGF0dXModGhpcy5zdGF0dXMsIFN0YXR1cy5SZWFkeSk7XG4gICAgICAgIHRoaXMuc3RhdHVzID0gU3RhdHVzLlJ1bm5pbmc7XG4gICAgICAgIC8vIE5vZGUgYWxsb3dzIG90aGVyIGxpc3RlbmVycyB0byBiZSByZWdpc3RlcmVkIHVwIHRvIDMgbWlsbGlzZWNvbmRzXG4gICAgICAgIC8vIGFmdGVyIHRoZSB3YXRjaGVyIGhhcyBiZWVuIHN0YXJ0ZWQsIHNvIHRoYXQncyB3aGF0IHdlJ3JlIGRvaW5nIHRvb1xuICAgICAgICB0aGlzLnN0YXJ0VGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zdGFydFRpbWVvdXQgPSBudWxsO1xuICAgICAgICAgICAgLy8gUGVyIHRoZSBOb2RlIEZTIGRvY3M6XG4gICAgICAgICAgICAvLyBcIldoZW4gYW4gZnMud2F0Y2hGaWxlIG9wZXJhdGlvbiByZXN1bHRzIGluIGFuIEVOT0VOVCBlcnJvcixcbiAgICAgICAgICAgIC8vIGl0IHdpbGwgaW52b2tlIHRoZSBsaXN0ZW5lciBvbmNlLCB3aXRoIGFsbCB0aGUgZmllbGRzIHplcm9lZFxuICAgICAgICAgICAgLy8gKG9yLCBmb3IgZGF0ZXMsIHRoZSBVbml4IEVwb2NoKS5cIlxuICAgICAgICAgICAgaWYgKCF0aGlzLmZha2VGcy5leGlzdHNTeW5jKHRoaXMucGF0aCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmVtaXQoRXZlbnQuQ2hhbmdlLCB0aGlzLmxhc3RTdGF0cywgdGhpcy5sYXN0U3RhdHMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCAzKTtcbiAgICB9XG4gICAgc3RvcCgpIHtcbiAgICAgICAgYXNzZXJ0U3RhdHVzKHRoaXMuc3RhdHVzLCBTdGF0dXMuUnVubmluZyk7XG4gICAgICAgIHRoaXMuc3RhdHVzID0gU3RhdHVzLlN0b3BwZWQ7XG4gICAgICAgIGlmICh0aGlzLnN0YXJ0VGltZW91dCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuc3RhcnRUaW1lb3V0KTtcbiAgICAgICAgICAgIHRoaXMuc3RhcnRUaW1lb3V0ID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmVtaXQoRXZlbnQuU3RvcCk7XG4gICAgfVxuICAgIHN0YXQoKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5mYWtlRnMuc3RhdFN5bmModGhpcy5wYXRoLCB7IGJpZ2ludDogdGhpcy5iaWdpbnQgfSk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAvLyBGcm9tIG9ic2VydmF0aW9uLCBhbGwgZXJyb3JzIHNlZW0gdG8gYmUgbW9zdGx5IGlnbm9yZWQgYnkgTm9kZS5cbiAgICAgICAgICAgIC8vIENoZWNrZWQgd2l0aCBFTk9FTlQsIEVOT1RESVIsIEVQRVJNXG4gICAgICAgICAgICBjb25zdCBzdGF0SW5zdGFuY2UgPSB0aGlzLmJpZ2ludFxuICAgICAgICAgICAgICAgID8gbmV3IHN0YXRVdGlscy5CaWdJbnRTdGF0c0VudHJ5KClcbiAgICAgICAgICAgICAgICA6IG5ldyBzdGF0VXRpbHMuU3RhdEVudHJ5KCk7XG4gICAgICAgICAgICByZXR1cm4gc3RhdFV0aWxzLmNsZWFyU3RhdHMoc3RhdEluc3RhbmNlKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGludGVydmFsIHdob3NlIGNhbGxiYWNrIGNvbXBhcmVzIHRoZSBjdXJyZW50IHN0YXRzIHdpdGggdGhlIHByZXZpb3VzIHN0YXRzIGFuZCBub3RpZmllcyBhbGwgbGlzdGVuZXJzIGluIGNhc2Ugb2YgY2hhbmdlcy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBvcHRzLnBlcnNpc3RlbnQgRGVjaWRlcyB3aGV0aGVyIHRoZSBpbnRlcnZhbCBzaG91bGQgYmUgaW1tZWRpYXRlbHkgdW5yZWYtZWQuXG4gICAgICovXG4gICAgbWFrZUludGVydmFsKG9wdHMpIHtcbiAgICAgICAgY29uc3QgaW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50U3RhdHMgPSB0aGlzLnN0YXQoKTtcbiAgICAgICAgICAgIGNvbnN0IHByZXZpb3VzU3RhdHMgPSB0aGlzLmxhc3RTdGF0cztcbiAgICAgICAgICAgIGlmIChzdGF0VXRpbHMuYXJlU3RhdHNFcXVhbChjdXJyZW50U3RhdHMsIHByZXZpb3VzU3RhdHMpKVxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIHRoaXMubGFzdFN0YXRzID0gY3VycmVudFN0YXRzO1xuICAgICAgICAgICAgdGhpcy5lbWl0KEV2ZW50LkNoYW5nZSwgY3VycmVudFN0YXRzLCBwcmV2aW91c1N0YXRzKTtcbiAgICAgICAgfSwgb3B0cy5pbnRlcnZhbCk7XG4gICAgICAgIHJldHVybiBvcHRzLnBlcnNpc3RlbnQgPyBpbnRlcnZhbCA6IGludGVydmFsLnVucmVmKCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJlZ2lzdGVycyBhIGxpc3RlbmVyIGFuZCBhc3NpZ25zIGl0IGFuIGludGVydmFsLlxuICAgICAqL1xuICAgIHJlZ2lzdGVyQ2hhbmdlTGlzdGVuZXIobGlzdGVuZXIsIG9wdHMpIHtcbiAgICAgICAgdGhpcy5hZGRMaXN0ZW5lcihFdmVudC5DaGFuZ2UsIGxpc3RlbmVyKTtcbiAgICAgICAgdGhpcy5jaGFuZ2VMaXN0ZW5lcnMuc2V0KGxpc3RlbmVyLCB0aGlzLm1ha2VJbnRlcnZhbChvcHRzKSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFVucmVnaXN0ZXJzIHRoZSBsaXN0ZW5lciBhbmQgY2xlYXJzIHRoZSBhc3NpZ25lZCBpbnRlcnZhbC5cbiAgICAgKi9cbiAgICB1bnJlZ2lzdGVyQ2hhbmdlTGlzdGVuZXIobGlzdGVuZXIpIHtcbiAgICAgICAgdGhpcy5yZW1vdmVMaXN0ZW5lcihFdmVudC5DaGFuZ2UsIGxpc3RlbmVyKTtcbiAgICAgICAgY29uc3QgaW50ZXJ2YWwgPSB0aGlzLmNoYW5nZUxpc3RlbmVycy5nZXQobGlzdGVuZXIpO1xuICAgICAgICBpZiAodHlwZW9mIGludGVydmFsICE9PSBgdW5kZWZpbmVkYClcbiAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoaW50ZXJ2YWwpO1xuICAgICAgICB0aGlzLmNoYW5nZUxpc3RlbmVycy5kZWxldGUobGlzdGVuZXIpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBVbnJlZ2lzdGVycyBhbGwgbGlzdGVuZXJzIGFuZCBjbGVhcnMgYWxsIGFzc2lnbmVkIGludGVydmFscy5cbiAgICAgKi9cbiAgICB1bnJlZ2lzdGVyQWxsQ2hhbmdlTGlzdGVuZXJzKCkge1xuICAgICAgICBmb3IgKGNvbnN0IGxpc3RlbmVyIG9mIHRoaXMuY2hhbmdlTGlzdGVuZXJzLmtleXMoKSkge1xuICAgICAgICAgICAgdGhpcy51bnJlZ2lzdGVyQ2hhbmdlTGlzdGVuZXIobGlzdGVuZXIpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGhhc0NoYW5nZUxpc3RlbmVycygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hhbmdlTGlzdGVuZXJzLnNpemUgPiAwO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZWZzIGFsbCBzdG9yZWQgaW50ZXJ2YWxzLlxuICAgICAqL1xuICAgIHJlZigpIHtcbiAgICAgICAgZm9yIChjb25zdCBpbnRlcnZhbCBvZiB0aGlzLmNoYW5nZUxpc3RlbmVycy52YWx1ZXMoKSlcbiAgICAgICAgICAgIGludGVydmFsLnJlZigpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgLyoqXG4gICAgICogVW5yZWZzIGFsbCBzdG9yZWQgaW50ZXJ2YWxzLlxuICAgICAqL1xuICAgIHVucmVmKCkge1xuICAgICAgICBmb3IgKGNvbnN0IGludGVydmFsIG9mIHRoaXMuY2hhbmdlTGlzdGVuZXJzLnZhbHVlcygpKVxuICAgICAgICAgICAgaW50ZXJ2YWwudW5yZWYoKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxufVxuZXhwb3J0cy5DdXN0b21TdGF0V2F0Y2hlciA9IEN1c3RvbVN0YXRXYXRjaGVyO1xuIiwgIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy51bndhdGNoQWxsRmlsZXMgPSBleHBvcnRzLnVud2F0Y2hGaWxlID0gZXhwb3J0cy53YXRjaEZpbGUgPSB2b2lkIDA7XG5jb25zdCBDdXN0b21TdGF0V2F0Y2hlcl8xID0gcmVxdWlyZShcIi4vd2F0Y2hGaWxlL0N1c3RvbVN0YXRXYXRjaGVyXCIpO1xuY29uc3Qgc3RhdFdhdGNoZXJzQnlGYWtlRlMgPSBuZXcgV2Vha01hcCgpO1xuZnVuY3Rpb24gd2F0Y2hGaWxlKGZha2VGcywgcGF0aCwgYSwgYikge1xuICAgIGxldCBiaWdpbnQ7XG4gICAgbGV0IHBlcnNpc3RlbnQ7XG4gICAgbGV0IGludGVydmFsO1xuICAgIGxldCBsaXN0ZW5lcjtcbiAgICBzd2l0Y2ggKHR5cGVvZiBhKSB7XG4gICAgICAgIGNhc2UgYGZ1bmN0aW9uYDpcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBiaWdpbnQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBwZXJzaXN0ZW50ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBpbnRlcnZhbCA9IDUwMDc7XG4gICAgICAgICAgICAgICAgbGlzdGVuZXIgPSBhO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgYmlnaW50ID0gZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIHBlcnNpc3RlbnQgPSB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBpbnRlcnZhbCA9IDUwMDcsXG4gICAgICAgICAgICAgICAgfSA9IGEpO1xuICAgICAgICAgICAgICAgIGxpc3RlbmVyID0gYjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBsZXQgc3RhdFdhdGNoZXJzID0gc3RhdFdhdGNoZXJzQnlGYWtlRlMuZ2V0KGZha2VGcyk7XG4gICAgaWYgKHR5cGVvZiBzdGF0V2F0Y2hlcnMgPT09IGB1bmRlZmluZWRgKVxuICAgICAgICBzdGF0V2F0Y2hlcnNCeUZha2VGUy5zZXQoZmFrZUZzLCBzdGF0V2F0Y2hlcnMgPSBuZXcgTWFwKCkpO1xuICAgIGxldCBzdGF0V2F0Y2hlciA9IHN0YXRXYXRjaGVycy5nZXQocGF0aCk7XG4gICAgaWYgKHR5cGVvZiBzdGF0V2F0Y2hlciA9PT0gYHVuZGVmaW5lZGApIHtcbiAgICAgICAgc3RhdFdhdGNoZXIgPSBDdXN0b21TdGF0V2F0Y2hlcl8xLkN1c3RvbVN0YXRXYXRjaGVyLmNyZWF0ZShmYWtlRnMsIHBhdGgsIHsgYmlnaW50IH0pO1xuICAgICAgICBzdGF0V2F0Y2hlcnMuc2V0KHBhdGgsIHN0YXRXYXRjaGVyKTtcbiAgICB9XG4gICAgc3RhdFdhdGNoZXIucmVnaXN0ZXJDaGFuZ2VMaXN0ZW5lcihsaXN0ZW5lciwgeyBwZXJzaXN0ZW50LCBpbnRlcnZhbCB9KTtcbiAgICByZXR1cm4gc3RhdFdhdGNoZXI7XG59XG5leHBvcnRzLndhdGNoRmlsZSA9IHdhdGNoRmlsZTtcbmZ1bmN0aW9uIHVud2F0Y2hGaWxlKGZha2VGcywgcGF0aCwgY2IpIHtcbiAgICBjb25zdCBzdGF0V2F0Y2hlcnMgPSBzdGF0V2F0Y2hlcnNCeUZha2VGUy5nZXQoZmFrZUZzKTtcbiAgICBpZiAodHlwZW9mIHN0YXRXYXRjaGVycyA9PT0gYHVuZGVmaW5lZGApXG4gICAgICAgIHJldHVybjtcbiAgICBjb25zdCBzdGF0V2F0Y2hlciA9IHN0YXRXYXRjaGVycy5nZXQocGF0aCk7XG4gICAgaWYgKHR5cGVvZiBzdGF0V2F0Y2hlciA9PT0gYHVuZGVmaW5lZGApXG4gICAgICAgIHJldHVybjtcbiAgICBpZiAodHlwZW9mIGNiID09PSBgdW5kZWZpbmVkYClcbiAgICAgICAgc3RhdFdhdGNoZXIudW5yZWdpc3RlckFsbENoYW5nZUxpc3RlbmVycygpO1xuICAgIGVsc2VcbiAgICAgICAgc3RhdFdhdGNoZXIudW5yZWdpc3RlckNoYW5nZUxpc3RlbmVyKGNiKTtcbiAgICBpZiAoIXN0YXRXYXRjaGVyLmhhc0NoYW5nZUxpc3RlbmVycygpKSB7XG4gICAgICAgIHN0YXRXYXRjaGVyLnN0b3AoKTtcbiAgICAgICAgc3RhdFdhdGNoZXJzLmRlbGV0ZShwYXRoKTtcbiAgICB9XG59XG5leHBvcnRzLnVud2F0Y2hGaWxlID0gdW53YXRjaEZpbGU7XG5mdW5jdGlvbiB1bndhdGNoQWxsRmlsZXMoZmFrZUZzKSB7XG4gICAgY29uc3Qgc3RhdFdhdGNoZXJzID0gc3RhdFdhdGNoZXJzQnlGYWtlRlMuZ2V0KGZha2VGcyk7XG4gICAgaWYgKHR5cGVvZiBzdGF0V2F0Y2hlcnMgPT09IGB1bmRlZmluZWRgKVxuICAgICAgICByZXR1cm47XG4gICAgZm9yIChjb25zdCBwYXRoIG9mIHN0YXRXYXRjaGVycy5rZXlzKCkpIHtcbiAgICAgICAgdW53YXRjaEZpbGUoZmFrZUZzLCBwYXRoKTtcbiAgICB9XG59XG5leHBvcnRzLnVud2F0Y2hBbGxGaWxlcyA9IHVud2F0Y2hBbGxGaWxlcztcbiIsICJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMubm9ybWFsaXplTGluZUVuZGluZ3MgPSBleHBvcnRzLkJhc2VQb3J0YWJsZUZha2VGUyA9IGV4cG9ydHMuRmFrZUZTID0gdm9pZCAwO1xuY29uc3QgY3J5cHRvXzEgPSByZXF1aXJlKFwiY3J5cHRvXCIpO1xuY29uc3Qgb3NfMSA9IHJlcXVpcmUoXCJvc1wiKTtcbmNvbnN0IGNvcHlQcm9taXNlXzEgPSByZXF1aXJlKFwiLi9hbGdvcml0aG1zL2NvcHlQcm9taXNlXCIpO1xuY29uc3QgcGF0aF8xID0gcmVxdWlyZShcIi4vcGF0aFwiKTtcbmNsYXNzIEZha2VGUyB7XG4gICAgY29uc3RydWN0b3IocGF0aFV0aWxzKSB7XG4gICAgICAgIHRoaXMucGF0aFV0aWxzID0gcGF0aFV0aWxzO1xuICAgIH1cbiAgICBhc3luYyAqZ2VuVHJhdmVyc2VQcm9taXNlKGluaXQsIHsgc3RhYmxlU29ydCA9IGZhbHNlIH0gPSB7fSkge1xuICAgICAgICBjb25zdCBzdGFjayA9IFtpbml0XTtcbiAgICAgICAgd2hpbGUgKHN0YWNrLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IHAgPSBzdGFjay5zaGlmdCgpO1xuICAgICAgICAgICAgY29uc3QgZW50cnkgPSBhd2FpdCB0aGlzLmxzdGF0UHJvbWlzZShwKTtcbiAgICAgICAgICAgIGlmIChlbnRyeS5pc0RpcmVjdG9yeSgpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZW50cmllcyA9IGF3YWl0IHRoaXMucmVhZGRpclByb21pc2UocCk7XG4gICAgICAgICAgICAgICAgaWYgKHN0YWJsZVNvcnQpIHtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBlbnRyeSBvZiBlbnRyaWVzLnNvcnQoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2sucHVzaCh0aGlzLnBhdGhVdGlscy5qb2luKHAsIGVudHJ5KSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgTm90IHN1cHBvcnRlZGApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHlpZWxkIHA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgYXN5bmMgY2hlY2tzdW1GaWxlUHJvbWlzZShwYXRoLCB7IGFsZ29yaXRobSA9IGBzaGE1MTJgIH0gPSB7fSkge1xuICAgICAgICBjb25zdCBmZCA9IGF3YWl0IHRoaXMub3BlblByb21pc2UocGF0aCwgYHJgKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IENIVU5LX1NJWkUgPSA2NTUzNjtcbiAgICAgICAgICAgIGNvbnN0IGNodW5rID0gQnVmZmVyLmFsbG9jVW5zYWZlU2xvdyhDSFVOS19TSVpFKTtcbiAgICAgICAgICAgIGNvbnN0IGhhc2ggPSAoMCwgY3J5cHRvXzEuY3JlYXRlSGFzaCkoYWxnb3JpdGhtKTtcbiAgICAgICAgICAgIGxldCBieXRlc1JlYWQgPSAwO1xuICAgICAgICAgICAgd2hpbGUgKChieXRlc1JlYWQgPSBhd2FpdCB0aGlzLnJlYWRQcm9taXNlKGZkLCBjaHVuaywgMCwgQ0hVTktfU0laRSkpICE9PSAwKVxuICAgICAgICAgICAgICAgIGhhc2gudXBkYXRlKGJ5dGVzUmVhZCA9PT0gQ0hVTktfU0laRSA/IGNodW5rIDogY2h1bmsuc2xpY2UoMCwgYnl0ZXNSZWFkKSk7XG4gICAgICAgICAgICByZXR1cm4gaGFzaC5kaWdlc3QoYGhleGApO1xuICAgICAgICB9XG4gICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5jbG9zZVByb21pc2UoZmQpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGFzeW5jIHJlbW92ZVByb21pc2UocCwgeyByZWN1cnNpdmUgPSB0cnVlLCBtYXhSZXRyaWVzID0gNSB9ID0ge30pIHtcbiAgICAgICAgbGV0IHN0YXQ7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBzdGF0ID0gYXdhaXQgdGhpcy5sc3RhdFByb21pc2UocCk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICBpZiAoZXJyb3IuY29kZSA9PT0gYEVOT0VOVGApIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoc3RhdC5pc0RpcmVjdG9yeSgpKSB7XG4gICAgICAgICAgICBpZiAocmVjdXJzaXZlKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZW50cmllcyA9IGF3YWl0IHRoaXMucmVhZGRpclByb21pc2UocCk7XG4gICAgICAgICAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoZW50cmllcy5tYXAoZW50cnkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZW1vdmVQcm9taXNlKHRoaXMucGF0aFV0aWxzLnJlc29sdmUocCwgZW50cnkpKTtcbiAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyA1IGdpdmVzIDFzIHdvcnRoIG9mIHJldHJpZXMgYXQgd29yc3RcbiAgICAgICAgICAgIGZvciAobGV0IHQgPSAwOyB0IDw9IG1heFJldHJpZXM7IHQrKykge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMucm1kaXJQcm9taXNlKHApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChlcnJvci5jb2RlICE9PSBgRUJVU1lgICYmIGVycm9yLmNvZGUgIT09IGBFTk9URU1QVFlgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh0IDwgbWF4UmV0cmllcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIHQgKiAxMDApKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMudW5saW5rUHJvbWlzZShwKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZW1vdmVTeW5jKHAsIHsgcmVjdXJzaXZlID0gdHJ1ZSB9ID0ge30pIHtcbiAgICAgICAgbGV0IHN0YXQ7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBzdGF0ID0gdGhpcy5sc3RhdFN5bmMocCk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICBpZiAoZXJyb3IuY29kZSA9PT0gYEVOT0VOVGApIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoc3RhdC5pc0RpcmVjdG9yeSgpKSB7XG4gICAgICAgICAgICBpZiAocmVjdXJzaXZlKVxuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgZW50cnkgb2YgdGhpcy5yZWFkZGlyU3luYyhwKSlcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW1vdmVTeW5jKHRoaXMucGF0aFV0aWxzLnJlc29sdmUocCwgZW50cnkpKTtcbiAgICAgICAgICAgIHRoaXMucm1kaXJTeW5jKHApO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy51bmxpbmtTeW5jKHApO1xuICAgICAgICB9XG4gICAgfVxuICAgIGFzeW5jIG1rZGlycFByb21pc2UocCwgeyBjaG1vZCwgdXRpbWVzIH0gPSB7fSkge1xuICAgICAgICBwID0gdGhpcy5yZXNvbHZlKHApO1xuICAgICAgICBpZiAocCA9PT0gdGhpcy5wYXRoVXRpbHMuZGlybmFtZShwKSlcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIGNvbnN0IHBhcnRzID0gcC5zcGxpdCh0aGlzLnBhdGhVdGlscy5zZXApO1xuICAgICAgICBsZXQgY3JlYXRlZERpcmVjdG9yeTtcbiAgICAgICAgZm9yIChsZXQgdSA9IDI7IHUgPD0gcGFydHMubGVuZ3RoOyArK3UpIHtcbiAgICAgICAgICAgIGNvbnN0IHN1YlBhdGggPSBwYXJ0cy5zbGljZSgwLCB1KS5qb2luKHRoaXMucGF0aFV0aWxzLnNlcCk7XG4gICAgICAgICAgICBpZiAoIXRoaXMuZXhpc3RzU3luYyhzdWJQYXRoKSkge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMubWtkaXJQcm9taXNlKHN1YlBhdGgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVycm9yLmNvZGUgPT09IGBFRVhJU1RgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNyZWF0ZWREaXJlY3RvcnkgIT09IG51bGwgJiYgY3JlYXRlZERpcmVjdG9yeSAhPT0gdm9pZCAwID8gY3JlYXRlZERpcmVjdG9yeSA6IChjcmVhdGVkRGlyZWN0b3J5ID0gc3ViUGF0aCk7XG4gICAgICAgICAgICAgICAgaWYgKGNobW9kICE9IG51bGwpXG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuY2htb2RQcm9taXNlKHN1YlBhdGgsIGNobW9kKTtcbiAgICAgICAgICAgICAgICBpZiAodXRpbWVzICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy51dGltZXNQcm9taXNlKHN1YlBhdGgsIHV0aW1lc1swXSwgdXRpbWVzWzFdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcmVudFN0YXQgPSBhd2FpdCB0aGlzLnN0YXRQcm9taXNlKHRoaXMucGF0aFV0aWxzLmRpcm5hbWUoc3ViUGF0aCkpO1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLnV0aW1lc1Byb21pc2Uoc3ViUGF0aCwgcGFyZW50U3RhdC5hdGltZSwgcGFyZW50U3RhdC5tdGltZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjcmVhdGVkRGlyZWN0b3J5O1xuICAgIH1cbiAgICBta2RpcnBTeW5jKHAsIHsgY2htb2QsIHV0aW1lcyB9ID0ge30pIHtcbiAgICAgICAgcCA9IHRoaXMucmVzb2x2ZShwKTtcbiAgICAgICAgaWYgKHAgPT09IHRoaXMucGF0aFV0aWxzLmRpcm5hbWUocCkpXG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICBjb25zdCBwYXJ0cyA9IHAuc3BsaXQodGhpcy5wYXRoVXRpbHMuc2VwKTtcbiAgICAgICAgbGV0IGNyZWF0ZWREaXJlY3Rvcnk7XG4gICAgICAgIGZvciAobGV0IHUgPSAyOyB1IDw9IHBhcnRzLmxlbmd0aDsgKyt1KSB7XG4gICAgICAgICAgICBjb25zdCBzdWJQYXRoID0gcGFydHMuc2xpY2UoMCwgdSkuam9pbih0aGlzLnBhdGhVdGlscy5zZXApO1xuICAgICAgICAgICAgaWYgKCF0aGlzLmV4aXN0c1N5bmMoc3ViUGF0aCkpIHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm1rZGlyU3luYyhzdWJQYXRoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChlcnJvci5jb2RlID09PSBgRUVYSVNUYCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjcmVhdGVkRGlyZWN0b3J5ICE9PSBudWxsICYmIGNyZWF0ZWREaXJlY3RvcnkgIT09IHZvaWQgMCA/IGNyZWF0ZWREaXJlY3RvcnkgOiAoY3JlYXRlZERpcmVjdG9yeSA9IHN1YlBhdGgpO1xuICAgICAgICAgICAgICAgIGlmIChjaG1vZCAhPSBudWxsKVxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNobW9kU3luYyhzdWJQYXRoLCBjaG1vZCk7XG4gICAgICAgICAgICAgICAgaWYgKHV0aW1lcyAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXRpbWVzU3luYyhzdWJQYXRoLCB1dGltZXNbMF0sIHV0aW1lc1sxXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXJlbnRTdGF0ID0gdGhpcy5zdGF0U3luYyh0aGlzLnBhdGhVdGlscy5kaXJuYW1lKHN1YlBhdGgpKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51dGltZXNTeW5jKHN1YlBhdGgsIHBhcmVudFN0YXQuYXRpbWUsIHBhcmVudFN0YXQubXRpbWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY3JlYXRlZERpcmVjdG9yeTtcbiAgICB9XG4gICAgYXN5bmMgY29weVByb21pc2UoZGVzdGluYXRpb24sIHNvdXJjZSwgeyBiYXNlRnMgPSB0aGlzLCBvdmVyd3JpdGUgPSB0cnVlLCBzdGFibGVTb3J0ID0gZmFsc2UsIHN0YWJsZVRpbWUgPSBmYWxzZSwgbGlua1N0cmF0ZWd5ID0gbnVsbCB9ID0ge30pIHtcbiAgICAgICAgcmV0dXJuIGF3YWl0ICgwLCBjb3B5UHJvbWlzZV8xLmNvcHlQcm9taXNlKSh0aGlzLCBkZXN0aW5hdGlvbiwgYmFzZUZzLCBzb3VyY2UsIHsgb3ZlcndyaXRlLCBzdGFibGVTb3J0LCBzdGFibGVUaW1lLCBsaW5rU3RyYXRlZ3kgfSk7XG4gICAgfVxuICAgIGNvcHlTeW5jKGRlc3RpbmF0aW9uLCBzb3VyY2UsIHsgYmFzZUZzID0gdGhpcywgb3ZlcndyaXRlID0gdHJ1ZSB9ID0ge30pIHtcbiAgICAgICAgY29uc3Qgc3RhdCA9IGJhc2VGcy5sc3RhdFN5bmMoc291cmNlKTtcbiAgICAgICAgY29uc3QgZXhpc3RzID0gdGhpcy5leGlzdHNTeW5jKGRlc3RpbmF0aW9uKTtcbiAgICAgICAgaWYgKHN0YXQuaXNEaXJlY3RvcnkoKSkge1xuICAgICAgICAgICAgdGhpcy5ta2RpcnBTeW5jKGRlc3RpbmF0aW9uKTtcbiAgICAgICAgICAgIGNvbnN0IGRpcmVjdG9yeUxpc3RpbmcgPSBiYXNlRnMucmVhZGRpclN5bmMoc291cmNlKTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZW50cnkgb2YgZGlyZWN0b3J5TGlzdGluZykge1xuICAgICAgICAgICAgICAgIHRoaXMuY29weVN5bmModGhpcy5wYXRoVXRpbHMuam9pbihkZXN0aW5hdGlvbiwgZW50cnkpLCBiYXNlRnMucGF0aFV0aWxzLmpvaW4oc291cmNlLCBlbnRyeSksIHsgYmFzZUZzLCBvdmVyd3JpdGUgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoc3RhdC5pc0ZpbGUoKSkge1xuICAgICAgICAgICAgaWYgKCFleGlzdHMgfHwgb3ZlcndyaXRlKSB7XG4gICAgICAgICAgICAgICAgaWYgKGV4aXN0cylcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW1vdmVTeW5jKGRlc3RpbmF0aW9uKTtcbiAgICAgICAgICAgICAgICBjb25zdCBjb250ZW50ID0gYmFzZUZzLnJlYWRGaWxlU3luYyhzb3VyY2UpO1xuICAgICAgICAgICAgICAgIHRoaXMud3JpdGVGaWxlU3luYyhkZXN0aW5hdGlvbiwgY29udGVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoc3RhdC5pc1N5bWJvbGljTGluaygpKSB7XG4gICAgICAgICAgICBpZiAoIWV4aXN0cyB8fCBvdmVyd3JpdGUpIHtcbiAgICAgICAgICAgICAgICBpZiAoZXhpc3RzKVxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZVN5bmMoZGVzdGluYXRpb24pO1xuICAgICAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9IGJhc2VGcy5yZWFkbGlua1N5bmMoc291cmNlKTtcbiAgICAgICAgICAgICAgICB0aGlzLnN5bWxpbmtTeW5jKCgwLCBwYXRoXzEuY29udmVydFBhdGgpKHRoaXMucGF0aFV0aWxzLCB0YXJnZXQpLCBkZXN0aW5hdGlvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIGZpbGUgdHlwZSAoZmlsZTogJHtzb3VyY2V9LCBtb2RlOiAwbyR7c3RhdC5tb2RlLnRvU3RyaW5nKDgpLnBhZFN0YXJ0KDYsIGAwYCl9KWApO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG1vZGUgPSBzdGF0Lm1vZGUgJiAwbzc3NztcbiAgICAgICAgdGhpcy5jaG1vZFN5bmMoZGVzdGluYXRpb24sIG1vZGUpO1xuICAgIH1cbiAgICBhc3luYyBjaGFuZ2VGaWxlUHJvbWlzZShwLCBjb250ZW50LCBvcHRzID0ge30pIHtcbiAgICAgICAgaWYgKEJ1ZmZlci5pc0J1ZmZlcihjb250ZW50KSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2hhbmdlRmlsZUJ1ZmZlclByb21pc2UocCwgY29udGVudCwgb3B0cyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jaGFuZ2VGaWxlVGV4dFByb21pc2UocCwgY29udGVudCwgb3B0cyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgYXN5bmMgY2hhbmdlRmlsZUJ1ZmZlclByb21pc2UocCwgY29udGVudCwgeyBtb2RlIH0gPSB7fSkge1xuICAgICAgICBsZXQgY3VycmVudCA9IEJ1ZmZlci5hbGxvYygwKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGN1cnJlbnQgPSBhd2FpdCB0aGlzLnJlYWRGaWxlUHJvbWlzZShwKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIC8vIGlnbm9yZSBlcnJvcnMsIG5vIGJpZyBkZWFsXG4gICAgICAgIH1cbiAgICAgICAgaWYgKEJ1ZmZlci5jb21wYXJlKGN1cnJlbnQsIGNvbnRlbnQpID09PSAwKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBhd2FpdCB0aGlzLndyaXRlRmlsZVByb21pc2UocCwgY29udGVudCwgeyBtb2RlIH0pO1xuICAgIH1cbiAgICBhc3luYyBjaGFuZ2VGaWxlVGV4dFByb21pc2UocCwgY29udGVudCwgeyBhdXRvbWF0aWNOZXdsaW5lcywgbW9kZSB9ID0ge30pIHtcbiAgICAgICAgbGV0IGN1cnJlbnQgPSBgYDtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGN1cnJlbnQgPSBhd2FpdCB0aGlzLnJlYWRGaWxlUHJvbWlzZShwLCBgdXRmOGApO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgLy8gaWdub3JlIGVycm9ycywgbm8gYmlnIGRlYWxcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBub3JtYWxpemVkQ29udGVudCA9IGF1dG9tYXRpY05ld2xpbmVzXG4gICAgICAgICAgICA/IG5vcm1hbGl6ZUxpbmVFbmRpbmdzKGN1cnJlbnQsIGNvbnRlbnQpXG4gICAgICAgICAgICA6IGNvbnRlbnQ7XG4gICAgICAgIGlmIChjdXJyZW50ID09PSBub3JtYWxpemVkQ29udGVudClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgYXdhaXQgdGhpcy53cml0ZUZpbGVQcm9taXNlKHAsIG5vcm1hbGl6ZWRDb250ZW50LCB7IG1vZGUgfSk7XG4gICAgfVxuICAgIGNoYW5nZUZpbGVTeW5jKHAsIGNvbnRlbnQsIG9wdHMgPSB7fSkge1xuICAgICAgICBpZiAoQnVmZmVyLmlzQnVmZmVyKGNvbnRlbnQpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jaGFuZ2VGaWxlQnVmZmVyU3luYyhwLCBjb250ZW50LCBvcHRzKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNoYW5nZUZpbGVUZXh0U3luYyhwLCBjb250ZW50LCBvcHRzKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBjaGFuZ2VGaWxlQnVmZmVyU3luYyhwLCBjb250ZW50LCB7IG1vZGUgfSA9IHt9KSB7XG4gICAgICAgIGxldCBjdXJyZW50ID0gQnVmZmVyLmFsbG9jKDApO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY3VycmVudCA9IHRoaXMucmVhZEZpbGVTeW5jKHApO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgLy8gaWdub3JlIGVycm9ycywgbm8gYmlnIGRlYWxcbiAgICAgICAgfVxuICAgICAgICBpZiAoQnVmZmVyLmNvbXBhcmUoY3VycmVudCwgY29udGVudCkgPT09IDApXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIHRoaXMud3JpdGVGaWxlU3luYyhwLCBjb250ZW50LCB7IG1vZGUgfSk7XG4gICAgfVxuICAgIGNoYW5nZUZpbGVUZXh0U3luYyhwLCBjb250ZW50LCB7IGF1dG9tYXRpY05ld2xpbmVzID0gZmFsc2UsIG1vZGUgfSA9IHt9KSB7XG4gICAgICAgIGxldCBjdXJyZW50ID0gYGA7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjdXJyZW50ID0gdGhpcy5yZWFkRmlsZVN5bmMocCwgYHV0ZjhgKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIC8vIGlnbm9yZSBlcnJvcnMsIG5vIGJpZyBkZWFsXG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgbm9ybWFsaXplZENvbnRlbnQgPSBhdXRvbWF0aWNOZXdsaW5lc1xuICAgICAgICAgICAgPyBub3JtYWxpemVMaW5lRW5kaW5ncyhjdXJyZW50LCBjb250ZW50KVxuICAgICAgICAgICAgOiBjb250ZW50O1xuICAgICAgICBpZiAoY3VycmVudCA9PT0gbm9ybWFsaXplZENvbnRlbnQpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIHRoaXMud3JpdGVGaWxlU3luYyhwLCBub3JtYWxpemVkQ29udGVudCwgeyBtb2RlIH0pO1xuICAgIH1cbiAgICBhc3luYyBtb3ZlUHJvbWlzZShmcm9tUCwgdG9QKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnJlbmFtZVByb21pc2UoZnJvbVAsIHRvUCk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICBpZiAoZXJyb3IuY29kZSA9PT0gYEVYREVWYCkge1xuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuY29weVByb21pc2UodG9QLCBmcm9tUCk7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5yZW1vdmVQcm9taXNlKGZyb21QKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIG1vdmVTeW5jKGZyb21QLCB0b1ApIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRoaXMucmVuYW1lU3luYyhmcm9tUCwgdG9QKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIGlmIChlcnJvci5jb2RlID09PSBgRVhERVZgKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jb3B5U3luYyh0b1AsIGZyb21QKTtcbiAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZVN5bmMoZnJvbVApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgYXN5bmMgbG9ja1Byb21pc2UoYWZmZWN0ZWRQYXRoLCBjYWxsYmFjaykge1xuICAgICAgICBjb25zdCBsb2NrUGF0aCA9IGAke2FmZmVjdGVkUGF0aH0uZmxvY2tgO1xuICAgICAgICBjb25zdCBpbnRlcnZhbCA9IDEwMDAgLyA2MDtcbiAgICAgICAgY29uc3Qgc3RhcnRUaW1lID0gRGF0ZS5ub3coKTtcbiAgICAgICAgbGV0IGZkID0gbnVsbDtcbiAgICAgICAgLy8gRXZlbiB3aGVuIHdlIGRldGVjdCB0aGF0IGEgbG9jayBmaWxlIGV4aXN0cywgd2Ugc3RpbGwgbG9vayBpbnNpZGUgdG8gc2VlXG4gICAgICAgIC8vIHdoZXRoZXIgdGhlIHBpZCB0aGF0IGNyZWF0ZWQgaXQgaXMgc3RpbGwgYWxpdmUuIEl0J3Mgbm90IGZvb2xwcm9vZlxuICAgICAgICAvLyAodGhlcmUgYXJlIGZhbHNlIHBvc2l0aXZlKSwgYnV0IHRoZXJlIGFyZSBubyBmYWxzZSBuZWdhdGl2ZSBhbmQgdGhhdCdzXG4gICAgICAgIC8vIGFsbCB0aGF0IG1hdHRlcnMgaW4gOTklIG9mIHRoZSBjYXNlcy5cbiAgICAgICAgY29uc3QgaXNBbGl2ZSA9IGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIGxldCBwaWQ7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIChbcGlkXSA9IGF3YWl0IHRoaXMucmVhZEpzb25Qcm9taXNlKGxvY2tQYXRoKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAvLyBJZiB3ZSBjYW4ndCByZWFkIHRoZSBmaWxlIHJlcGVhdGVkbHksIHdlIGFzc3VtZSB0aGUgcHJvY2VzcyB3YXNcbiAgICAgICAgICAgICAgICAvLyBhYm9ydGVkIGJlZm9yZSBldmVuIHdyaXRpbmcgZmluaXNoaW5nIHdyaXRpbmcgdGhlIHBheWxvYWQuXG4gICAgICAgICAgICAgICAgcmV0dXJuIERhdGUubm93KCkgLSBzdGFydFRpbWUgPCA1MDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIC8vIFwiQXMgYSBzcGVjaWFsIGNhc2UsIGEgc2lnbmFsIG9mIDAgY2FuIGJlIHVzZWQgdG8gdGVzdCBmb3IgdGhlXG4gICAgICAgICAgICAgICAgLy8gZXhpc3RlbmNlIG9mIGEgcHJvY2Vzc1wiIC0gc28gd2UgY2hlY2sgd2hldGhlciBpdCdzIGFsaXZlLlxuICAgICAgICAgICAgICAgIHByb2Nlc3Mua2lsbChwaWQsIDApO1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICB3aGlsZSAoZmQgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgZmQgPSBhd2FpdCB0aGlzLm9wZW5Qcm9taXNlKGxvY2tQYXRoLCBgd3hgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgIGlmIChlcnJvci5jb2RlID09PSBgRUVYSVNUYCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWF3YWl0IGlzQWxpdmUoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLnVubGlua1Byb21pc2UobG9ja1BhdGgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTm8gYmlnIGRlYWwgaWYgd2UgY2FuJ3QgcmVtb3ZlIGl0LiBKdXN0IGZhbGxiYWNrIHRvIHdhaXQgZm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXQgdG8gYmUgZXZlbnR1YWxseSByZWxlYXNlZCBieSBpdHMgb3duZXIuXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKERhdGUubm93KCkgLSBzdGFydFRpbWUgPCA2MCAqIDEwMDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2V0VGltZW91dChyZXNvbHZlLCBpbnRlcnZhbCkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb3VsZG4ndCBhY3F1aXJlIGEgbG9jayBpbiBhIHJlYXNvbmFibGUgdGltZSAodmlhICR7bG9ja1BhdGh9KWApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgdGhpcy53cml0ZVByb21pc2UoZmQsIEpTT04uc3RyaW5naWZ5KFtwcm9jZXNzLnBpZF0pKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJldHVybiBhd2FpdCBjYWxsYmFjaygpO1xuICAgICAgICB9XG4gICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAvLyBjbG9zZVByb21pc2UgbmVlZHMgdG8gY29tZSBiZWZvcmUgdW5saW5rUHJvbWlzZSBvdGhlcndpc2UgYW5vdGhlciBwcm9jZXNzIGNhbiBhdHRlbXB0XG4gICAgICAgICAgICAgICAgLy8gdG8gZ2V0IHRoZSBmaWxlIGhhbmRsZSBhZnRlciB0aGUgdW5saW5rIGJ1dCBiZWZvcmUgY2xvc2UgcmVzdWxpbmcgaW5cbiAgICAgICAgICAgICAgICAvLyBFUEVSTTogb3BlcmF0aW9uIG5vdCBwZXJtaXR0ZWQsIG9wZW5cbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLmNsb3NlUHJvbWlzZShmZCk7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy51bmxpbmtQcm9taXNlKGxvY2tQYXRoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgIC8vIG5vb3BcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBhc3luYyByZWFkSnNvblByb21pc2UocCkge1xuICAgICAgICBjb25zdCBjb250ZW50ID0gYXdhaXQgdGhpcy5yZWFkRmlsZVByb21pc2UocCwgYHV0ZjhgKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJldHVybiBKU09OLnBhcnNlKGNvbnRlbnQpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgZXJyb3IubWVzc2FnZSArPSBgIChpbiAke3B9KWA7XG4gICAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZWFkSnNvblN5bmMocCkge1xuICAgICAgICBjb25zdCBjb250ZW50ID0gdGhpcy5yZWFkRmlsZVN5bmMocCwgYHV0ZjhgKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJldHVybiBKU09OLnBhcnNlKGNvbnRlbnQpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgZXJyb3IubWVzc2FnZSArPSBgIChpbiAke3B9KWA7XG4gICAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgfVxuICAgIH1cbiAgICBhc3luYyB3cml0ZUpzb25Qcm9taXNlKHAsIGRhdGEpIHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMud3JpdGVGaWxlUHJvbWlzZShwLCBgJHtKU09OLnN0cmluZ2lmeShkYXRhLCBudWxsLCAyKX1cXG5gKTtcbiAgICB9XG4gICAgd3JpdGVKc29uU3luYyhwLCBkYXRhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLndyaXRlRmlsZVN5bmMocCwgYCR7SlNPTi5zdHJpbmdpZnkoZGF0YSwgbnVsbCwgMil9XFxuYCk7XG4gICAgfVxuICAgIGFzeW5jIHByZXNlcnZlVGltZVByb21pc2UocCwgY2IpIHtcbiAgICAgICAgY29uc3Qgc3RhdCA9IGF3YWl0IHRoaXMubHN0YXRQcm9taXNlKHApO1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBjYigpO1xuICAgICAgICBpZiAodHlwZW9mIHJlc3VsdCAhPT0gYHVuZGVmaW5lZGApXG4gICAgICAgICAgICBwID0gcmVzdWx0O1xuICAgICAgICBhd2FpdCB0aGlzLmx1dGltZXNQcm9taXNlKHAsIHN0YXQuYXRpbWUsIHN0YXQubXRpbWUpO1xuICAgIH1cbiAgICBhc3luYyBwcmVzZXJ2ZVRpbWVTeW5jKHAsIGNiKSB7XG4gICAgICAgIGNvbnN0IHN0YXQgPSB0aGlzLmxzdGF0U3luYyhwKTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gY2IoKTtcbiAgICAgICAgaWYgKHR5cGVvZiByZXN1bHQgIT09IGB1bmRlZmluZWRgKVxuICAgICAgICAgICAgcCA9IHJlc3VsdDtcbiAgICAgICAgdGhpcy5sdXRpbWVzU3luYyhwLCBzdGF0LmF0aW1lLCBzdGF0Lm10aW1lKTtcbiAgICB9XG59XG5leHBvcnRzLkZha2VGUyA9IEZha2VGUztcbmNsYXNzIEJhc2VQb3J0YWJsZUZha2VGUyBleHRlbmRzIEZha2VGUyB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKHBhdGhfMS5wcGF0aCk7XG4gICAgfVxufVxuZXhwb3J0cy5CYXNlUG9ydGFibGVGYWtlRlMgPSBCYXNlUG9ydGFibGVGYWtlRlM7XG5mdW5jdGlvbiBnZXRFbmRPZkxpbmUoY29udGVudCkge1xuICAgIGNvbnN0IG1hdGNoZXMgPSBjb250ZW50Lm1hdGNoKC9cXHI/XFxuL2cpO1xuICAgIGlmIChtYXRjaGVzID09PSBudWxsKVxuICAgICAgICByZXR1cm4gb3NfMS5FT0w7XG4gICAgY29uc3QgY3JsZiA9IG1hdGNoZXMuZmlsdGVyKG5sID0+IG5sID09PSBgXFxyXFxuYCkubGVuZ3RoO1xuICAgIGNvbnN0IGxmID0gbWF0Y2hlcy5sZW5ndGggLSBjcmxmO1xuICAgIHJldHVybiBjcmxmID4gbGYgPyBgXFxyXFxuYCA6IGBcXG5gO1xufVxuZnVuY3Rpb24gbm9ybWFsaXplTGluZUVuZGluZ3Mob3JpZ2luYWxDb250ZW50LCBuZXdDb250ZW50KSB7XG4gICAgcmV0dXJuIG5ld0NvbnRlbnQucmVwbGFjZSgvXFxyP1xcbi9nLCBnZXRFbmRPZkxpbmUob3JpZ2luYWxDb250ZW50KSk7XG59XG5leHBvcnRzLm5vcm1hbGl6ZUxpbmVFbmRpbmdzID0gbm9ybWFsaXplTGluZUVuZGluZ3M7XG4iLCAiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLlByb3hpZWRGUyA9IHZvaWQgMDtcbmNvbnN0IEZha2VGU18xID0gcmVxdWlyZShcIi4vRmFrZUZTXCIpO1xuY2xhc3MgUHJveGllZEZTIGV4dGVuZHMgRmFrZUZTXzEuRmFrZUZTIHtcbiAgICBnZXRFeHRyYWN0SGludChoaW50cykge1xuICAgICAgICByZXR1cm4gdGhpcy5iYXNlRnMuZ2V0RXh0cmFjdEhpbnQoaGludHMpO1xuICAgIH1cbiAgICByZXNvbHZlKHBhdGgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWFwRnJvbUJhc2UodGhpcy5iYXNlRnMucmVzb2x2ZSh0aGlzLm1hcFRvQmFzZShwYXRoKSkpO1xuICAgIH1cbiAgICBnZXRSZWFsUGF0aCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWFwRnJvbUJhc2UodGhpcy5iYXNlRnMuZ2V0UmVhbFBhdGgoKSk7XG4gICAgfVxuICAgIGFzeW5jIG9wZW5Qcm9taXNlKHAsIGZsYWdzLCBtb2RlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VGcy5vcGVuUHJvbWlzZSh0aGlzLm1hcFRvQmFzZShwKSwgZmxhZ3MsIG1vZGUpO1xuICAgIH1cbiAgICBvcGVuU3luYyhwLCBmbGFncywgbW9kZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5iYXNlRnMub3BlblN5bmModGhpcy5tYXBUb0Jhc2UocCksIGZsYWdzLCBtb2RlKTtcbiAgICB9XG4gICAgYXN5bmMgb3BlbmRpclByb21pc2UocCwgb3B0cykge1xuICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihhd2FpdCB0aGlzLmJhc2VGcy5vcGVuZGlyUHJvbWlzZSh0aGlzLm1hcFRvQmFzZShwKSwgb3B0cyksIHsgcGF0aDogcCB9KTtcbiAgICB9XG4gICAgb3BlbmRpclN5bmMocCwgb3B0cykge1xuICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih0aGlzLmJhc2VGcy5vcGVuZGlyU3luYyh0aGlzLm1hcFRvQmFzZShwKSwgb3B0cyksIHsgcGF0aDogcCB9KTtcbiAgICB9XG4gICAgYXN5bmMgcmVhZFByb21pc2UoZmQsIGJ1ZmZlciwgb2Zmc2V0LCBsZW5ndGgsIHBvc2l0aW9uKSB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmJhc2VGcy5yZWFkUHJvbWlzZShmZCwgYnVmZmVyLCBvZmZzZXQsIGxlbmd0aCwgcG9zaXRpb24pO1xuICAgIH1cbiAgICByZWFkU3luYyhmZCwgYnVmZmVyLCBvZmZzZXQsIGxlbmd0aCwgcG9zaXRpb24pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZUZzLnJlYWRTeW5jKGZkLCBidWZmZXIsIG9mZnNldCwgbGVuZ3RoLCBwb3NpdGlvbik7XG4gICAgfVxuICAgIGFzeW5jIHdyaXRlUHJvbWlzZShmZCwgYnVmZmVyLCBvZmZzZXQsIGxlbmd0aCwgcG9zaXRpb24pIHtcbiAgICAgICAgaWYgKHR5cGVvZiBidWZmZXIgPT09IGBzdHJpbmdgKSB7XG4gICAgICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5iYXNlRnMud3JpdGVQcm9taXNlKGZkLCBidWZmZXIsIG9mZnNldCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5iYXNlRnMud3JpdGVQcm9taXNlKGZkLCBidWZmZXIsIG9mZnNldCwgbGVuZ3RoLCBwb3NpdGlvbik7XG4gICAgICAgIH1cbiAgICB9XG4gICAgd3JpdGVTeW5jKGZkLCBidWZmZXIsIG9mZnNldCwgbGVuZ3RoLCBwb3NpdGlvbikge1xuICAgICAgICBpZiAodHlwZW9mIGJ1ZmZlciA9PT0gYHN0cmluZ2ApIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmJhc2VGcy53cml0ZVN5bmMoZmQsIGJ1ZmZlciwgb2Zmc2V0KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmJhc2VGcy53cml0ZVN5bmMoZmQsIGJ1ZmZlciwgb2Zmc2V0LCBsZW5ndGgsIHBvc2l0aW9uKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBhc3luYyBjbG9zZVByb21pc2UoZmQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZUZzLmNsb3NlUHJvbWlzZShmZCk7XG4gICAgfVxuICAgIGNsb3NlU3luYyhmZCkge1xuICAgICAgICB0aGlzLmJhc2VGcy5jbG9zZVN5bmMoZmQpO1xuICAgIH1cbiAgICBjcmVhdGVSZWFkU3RyZWFtKHAsIG9wdHMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZUZzLmNyZWF0ZVJlYWRTdHJlYW0ocCAhPT0gbnVsbCA/IHRoaXMubWFwVG9CYXNlKHApIDogcCwgb3B0cyk7XG4gICAgfVxuICAgIGNyZWF0ZVdyaXRlU3RyZWFtKHAsIG9wdHMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZUZzLmNyZWF0ZVdyaXRlU3RyZWFtKHAgIT09IG51bGwgPyB0aGlzLm1hcFRvQmFzZShwKSA6IHAsIG9wdHMpO1xuICAgIH1cbiAgICBhc3luYyByZWFscGF0aFByb21pc2UocCkge1xuICAgICAgICByZXR1cm4gdGhpcy5tYXBGcm9tQmFzZShhd2FpdCB0aGlzLmJhc2VGcy5yZWFscGF0aFByb21pc2UodGhpcy5tYXBUb0Jhc2UocCkpKTtcbiAgICB9XG4gICAgcmVhbHBhdGhTeW5jKHApIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWFwRnJvbUJhc2UodGhpcy5iYXNlRnMucmVhbHBhdGhTeW5jKHRoaXMubWFwVG9CYXNlKHApKSk7XG4gICAgfVxuICAgIGFzeW5jIGV4aXN0c1Byb21pc2UocCkge1xuICAgICAgICByZXR1cm4gdGhpcy5iYXNlRnMuZXhpc3RzUHJvbWlzZSh0aGlzLm1hcFRvQmFzZShwKSk7XG4gICAgfVxuICAgIGV4aXN0c1N5bmMocCkge1xuICAgICAgICByZXR1cm4gdGhpcy5iYXNlRnMuZXhpc3RzU3luYyh0aGlzLm1hcFRvQmFzZShwKSk7XG4gICAgfVxuICAgIGFjY2Vzc1N5bmMocCwgbW9kZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5iYXNlRnMuYWNjZXNzU3luYyh0aGlzLm1hcFRvQmFzZShwKSwgbW9kZSk7XG4gICAgfVxuICAgIGFzeW5jIGFjY2Vzc1Byb21pc2UocCwgbW9kZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5iYXNlRnMuYWNjZXNzUHJvbWlzZSh0aGlzLm1hcFRvQmFzZShwKSwgbW9kZSk7XG4gICAgfVxuICAgIGFzeW5jIHN0YXRQcm9taXNlKHAsIG9wdHMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZUZzLnN0YXRQcm9taXNlKHRoaXMubWFwVG9CYXNlKHApLCBvcHRzKTtcbiAgICB9XG4gICAgc3RhdFN5bmMocCwgb3B0cykge1xuICAgICAgICByZXR1cm4gdGhpcy5iYXNlRnMuc3RhdFN5bmModGhpcy5tYXBUb0Jhc2UocCksIG9wdHMpO1xuICAgIH1cbiAgICBhc3luYyBmc3RhdFByb21pc2UoZmQsIG9wdHMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZUZzLmZzdGF0UHJvbWlzZShmZCwgb3B0cyk7XG4gICAgfVxuICAgIGZzdGF0U3luYyhmZCwgb3B0cykge1xuICAgICAgICByZXR1cm4gdGhpcy5iYXNlRnMuZnN0YXRTeW5jKGZkLCBvcHRzKTtcbiAgICB9XG4gICAgbHN0YXRQcm9taXNlKHAsIG9wdHMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZUZzLmxzdGF0UHJvbWlzZSh0aGlzLm1hcFRvQmFzZShwKSwgb3B0cyk7XG4gICAgfVxuICAgIGxzdGF0U3luYyhwLCBvcHRzKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VGcy5sc3RhdFN5bmModGhpcy5tYXBUb0Jhc2UocCksIG9wdHMpO1xuICAgIH1cbiAgICBhc3luYyBmY2htb2RQcm9taXNlKGZkLCBtYXNrKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VGcy5mY2htb2RQcm9taXNlKGZkLCBtYXNrKTtcbiAgICB9XG4gICAgZmNobW9kU3luYyhmZCwgbWFzaykge1xuICAgICAgICByZXR1cm4gdGhpcy5iYXNlRnMuZmNobW9kU3luYyhmZCwgbWFzayk7XG4gICAgfVxuICAgIGFzeW5jIGNobW9kUHJvbWlzZShwLCBtYXNrKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VGcy5jaG1vZFByb21pc2UodGhpcy5tYXBUb0Jhc2UocCksIG1hc2spO1xuICAgIH1cbiAgICBjaG1vZFN5bmMocCwgbWFzaykge1xuICAgICAgICByZXR1cm4gdGhpcy5iYXNlRnMuY2htb2RTeW5jKHRoaXMubWFwVG9CYXNlKHApLCBtYXNrKTtcbiAgICB9XG4gICAgYXN5bmMgZmNob3duUHJvbWlzZShmZCwgdWlkLCBnaWQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZUZzLmZjaG93blByb21pc2UoZmQsIHVpZCwgZ2lkKTtcbiAgICB9XG4gICAgZmNob3duU3luYyhmZCwgdWlkLCBnaWQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZUZzLmZjaG93blN5bmMoZmQsIHVpZCwgZ2lkKTtcbiAgICB9XG4gICAgYXN5bmMgY2hvd25Qcm9taXNlKHAsIHVpZCwgZ2lkKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VGcy5jaG93blByb21pc2UodGhpcy5tYXBUb0Jhc2UocCksIHVpZCwgZ2lkKTtcbiAgICB9XG4gICAgY2hvd25TeW5jKHAsIHVpZCwgZ2lkKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VGcy5jaG93blN5bmModGhpcy5tYXBUb0Jhc2UocCksIHVpZCwgZ2lkKTtcbiAgICB9XG4gICAgYXN5bmMgcmVuYW1lUHJvbWlzZShvbGRQLCBuZXdQKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VGcy5yZW5hbWVQcm9taXNlKHRoaXMubWFwVG9CYXNlKG9sZFApLCB0aGlzLm1hcFRvQmFzZShuZXdQKSk7XG4gICAgfVxuICAgIHJlbmFtZVN5bmMob2xkUCwgbmV3UCkge1xuICAgICAgICByZXR1cm4gdGhpcy5iYXNlRnMucmVuYW1lU3luYyh0aGlzLm1hcFRvQmFzZShvbGRQKSwgdGhpcy5tYXBUb0Jhc2UobmV3UCkpO1xuICAgIH1cbiAgICBhc3luYyBjb3B5RmlsZVByb21pc2Uoc291cmNlUCwgZGVzdFAsIGZsYWdzID0gMCkge1xuICAgICAgICByZXR1cm4gdGhpcy5iYXNlRnMuY29weUZpbGVQcm9taXNlKHRoaXMubWFwVG9CYXNlKHNvdXJjZVApLCB0aGlzLm1hcFRvQmFzZShkZXN0UCksIGZsYWdzKTtcbiAgICB9XG4gICAgY29weUZpbGVTeW5jKHNvdXJjZVAsIGRlc3RQLCBmbGFncyA9IDApIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZUZzLmNvcHlGaWxlU3luYyh0aGlzLm1hcFRvQmFzZShzb3VyY2VQKSwgdGhpcy5tYXBUb0Jhc2UoZGVzdFApLCBmbGFncyk7XG4gICAgfVxuICAgIGFzeW5jIGFwcGVuZEZpbGVQcm9taXNlKHAsIGNvbnRlbnQsIG9wdHMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZUZzLmFwcGVuZEZpbGVQcm9taXNlKHRoaXMuZnNNYXBUb0Jhc2UocCksIGNvbnRlbnQsIG9wdHMpO1xuICAgIH1cbiAgICBhcHBlbmRGaWxlU3luYyhwLCBjb250ZW50LCBvcHRzKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VGcy5hcHBlbmRGaWxlU3luYyh0aGlzLmZzTWFwVG9CYXNlKHApLCBjb250ZW50LCBvcHRzKTtcbiAgICB9XG4gICAgYXN5bmMgd3JpdGVGaWxlUHJvbWlzZShwLCBjb250ZW50LCBvcHRzKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VGcy53cml0ZUZpbGVQcm9taXNlKHRoaXMuZnNNYXBUb0Jhc2UocCksIGNvbnRlbnQsIG9wdHMpO1xuICAgIH1cbiAgICB3cml0ZUZpbGVTeW5jKHAsIGNvbnRlbnQsIG9wdHMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZUZzLndyaXRlRmlsZVN5bmModGhpcy5mc01hcFRvQmFzZShwKSwgY29udGVudCwgb3B0cyk7XG4gICAgfVxuICAgIGFzeW5jIHVubGlua1Byb21pc2UocCkge1xuICAgICAgICByZXR1cm4gdGhpcy5iYXNlRnMudW5saW5rUHJvbWlzZSh0aGlzLm1hcFRvQmFzZShwKSk7XG4gICAgfVxuICAgIHVubGlua1N5bmMocCkge1xuICAgICAgICByZXR1cm4gdGhpcy5iYXNlRnMudW5saW5rU3luYyh0aGlzLm1hcFRvQmFzZShwKSk7XG4gICAgfVxuICAgIGFzeW5jIHV0aW1lc1Byb21pc2UocCwgYXRpbWUsIG10aW1lKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VGcy51dGltZXNQcm9taXNlKHRoaXMubWFwVG9CYXNlKHApLCBhdGltZSwgbXRpbWUpO1xuICAgIH1cbiAgICB1dGltZXNTeW5jKHAsIGF0aW1lLCBtdGltZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5iYXNlRnMudXRpbWVzU3luYyh0aGlzLm1hcFRvQmFzZShwKSwgYXRpbWUsIG10aW1lKTtcbiAgICB9XG4gICAgYXN5bmMgbHV0aW1lc1Byb21pc2UocCwgYXRpbWUsIG10aW1lKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VGcy5sdXRpbWVzUHJvbWlzZSh0aGlzLm1hcFRvQmFzZShwKSwgYXRpbWUsIG10aW1lKTtcbiAgICB9XG4gICAgbHV0aW1lc1N5bmMocCwgYXRpbWUsIG10aW1lKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VGcy5sdXRpbWVzU3luYyh0aGlzLm1hcFRvQmFzZShwKSwgYXRpbWUsIG10aW1lKTtcbiAgICB9XG4gICAgYXN5bmMgbWtkaXJQcm9taXNlKHAsIG9wdHMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZUZzLm1rZGlyUHJvbWlzZSh0aGlzLm1hcFRvQmFzZShwKSwgb3B0cyk7XG4gICAgfVxuICAgIG1rZGlyU3luYyhwLCBvcHRzKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VGcy5ta2RpclN5bmModGhpcy5tYXBUb0Jhc2UocCksIG9wdHMpO1xuICAgIH1cbiAgICBhc3luYyBybWRpclByb21pc2UocCwgb3B0cykge1xuICAgICAgICByZXR1cm4gdGhpcy5iYXNlRnMucm1kaXJQcm9taXNlKHRoaXMubWFwVG9CYXNlKHApLCBvcHRzKTtcbiAgICB9XG4gICAgcm1kaXJTeW5jKHAsIG9wdHMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZUZzLnJtZGlyU3luYyh0aGlzLm1hcFRvQmFzZShwKSwgb3B0cyk7XG4gICAgfVxuICAgIGFzeW5jIGxpbmtQcm9taXNlKGV4aXN0aW5nUCwgbmV3UCkge1xuICAgICAgICByZXR1cm4gdGhpcy5iYXNlRnMubGlua1Byb21pc2UodGhpcy5tYXBUb0Jhc2UoZXhpc3RpbmdQKSwgdGhpcy5tYXBUb0Jhc2UobmV3UCkpO1xuICAgIH1cbiAgICBsaW5rU3luYyhleGlzdGluZ1AsIG5ld1ApIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZUZzLmxpbmtTeW5jKHRoaXMubWFwVG9CYXNlKGV4aXN0aW5nUCksIHRoaXMubWFwVG9CYXNlKG5ld1ApKTtcbiAgICB9XG4gICAgYXN5bmMgc3ltbGlua1Byb21pc2UodGFyZ2V0LCBwLCB0eXBlKSB7XG4gICAgICAgIGNvbnN0IG1hcHBlZFAgPSB0aGlzLm1hcFRvQmFzZShwKTtcbiAgICAgICAgaWYgKHRoaXMucGF0aFV0aWxzLmlzQWJzb2x1dGUodGFyZ2V0KSlcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmJhc2VGcy5zeW1saW5rUHJvbWlzZSh0aGlzLm1hcFRvQmFzZSh0YXJnZXQpLCBtYXBwZWRQLCB0eXBlKTtcbiAgICAgICAgY29uc3QgbWFwcGVkQWJzb2x1dGVUYXJnZXQgPSB0aGlzLm1hcFRvQmFzZSh0aGlzLnBhdGhVdGlscy5qb2luKHRoaXMucGF0aFV0aWxzLmRpcm5hbWUocCksIHRhcmdldCkpO1xuICAgICAgICBjb25zdCBtYXBwZWRUYXJnZXQgPSB0aGlzLmJhc2VGcy5wYXRoVXRpbHMucmVsYXRpdmUodGhpcy5iYXNlRnMucGF0aFV0aWxzLmRpcm5hbWUobWFwcGVkUCksIG1hcHBlZEFic29sdXRlVGFyZ2V0KTtcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZUZzLnN5bWxpbmtQcm9taXNlKG1hcHBlZFRhcmdldCwgbWFwcGVkUCwgdHlwZSk7XG4gICAgfVxuICAgIHN5bWxpbmtTeW5jKHRhcmdldCwgcCwgdHlwZSkge1xuICAgICAgICBjb25zdCBtYXBwZWRQID0gdGhpcy5tYXBUb0Jhc2UocCk7XG4gICAgICAgIGlmICh0aGlzLnBhdGhVdGlscy5pc0Fic29sdXRlKHRhcmdldCkpXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5iYXNlRnMuc3ltbGlua1N5bmModGhpcy5tYXBUb0Jhc2UodGFyZ2V0KSwgbWFwcGVkUCwgdHlwZSk7XG4gICAgICAgIGNvbnN0IG1hcHBlZEFic29sdXRlVGFyZ2V0ID0gdGhpcy5tYXBUb0Jhc2UodGhpcy5wYXRoVXRpbHMuam9pbih0aGlzLnBhdGhVdGlscy5kaXJuYW1lKHApLCB0YXJnZXQpKTtcbiAgICAgICAgY29uc3QgbWFwcGVkVGFyZ2V0ID0gdGhpcy5iYXNlRnMucGF0aFV0aWxzLnJlbGF0aXZlKHRoaXMuYmFzZUZzLnBhdGhVdGlscy5kaXJuYW1lKG1hcHBlZFApLCBtYXBwZWRBYnNvbHV0ZVRhcmdldCk7XG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VGcy5zeW1saW5rU3luYyhtYXBwZWRUYXJnZXQsIG1hcHBlZFAsIHR5cGUpO1xuICAgIH1cbiAgICBhc3luYyByZWFkRmlsZVByb21pc2UocCwgZW5jb2RpbmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZUZzLnJlYWRGaWxlUHJvbWlzZSh0aGlzLmZzTWFwVG9CYXNlKHApLCBlbmNvZGluZyk7XG4gICAgfVxuICAgIHJlYWRGaWxlU3luYyhwLCBlbmNvZGluZykge1xuICAgICAgICByZXR1cm4gdGhpcy5iYXNlRnMucmVhZEZpbGVTeW5jKHRoaXMuZnNNYXBUb0Jhc2UocCksIGVuY29kaW5nKTtcbiAgICB9XG4gICAgYXN5bmMgcmVhZGRpclByb21pc2UocCwgb3B0cykge1xuICAgICAgICByZXR1cm4gdGhpcy5iYXNlRnMucmVhZGRpclByb21pc2UodGhpcy5tYXBUb0Jhc2UocCksIG9wdHMpO1xuICAgIH1cbiAgICByZWFkZGlyU3luYyhwLCBvcHRzKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VGcy5yZWFkZGlyU3luYyh0aGlzLm1hcFRvQmFzZShwKSwgb3B0cyk7XG4gICAgfVxuICAgIGFzeW5jIHJlYWRsaW5rUHJvbWlzZShwKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1hcEZyb21CYXNlKGF3YWl0IHRoaXMuYmFzZUZzLnJlYWRsaW5rUHJvbWlzZSh0aGlzLm1hcFRvQmFzZShwKSkpO1xuICAgIH1cbiAgICByZWFkbGlua1N5bmMocCkge1xuICAgICAgICByZXR1cm4gdGhpcy5tYXBGcm9tQmFzZSh0aGlzLmJhc2VGcy5yZWFkbGlua1N5bmModGhpcy5tYXBUb0Jhc2UocCkpKTtcbiAgICB9XG4gICAgYXN5bmMgdHJ1bmNhdGVQcm9taXNlKHAsIGxlbikge1xuICAgICAgICByZXR1cm4gdGhpcy5iYXNlRnMudHJ1bmNhdGVQcm9taXNlKHRoaXMubWFwVG9CYXNlKHApLCBsZW4pO1xuICAgIH1cbiAgICB0cnVuY2F0ZVN5bmMocCwgbGVuKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VGcy50cnVuY2F0ZVN5bmModGhpcy5tYXBUb0Jhc2UocCksIGxlbik7XG4gICAgfVxuICAgIGFzeW5jIGZ0cnVuY2F0ZVByb21pc2UoZmQsIGxlbikge1xuICAgICAgICByZXR1cm4gdGhpcy5iYXNlRnMuZnRydW5jYXRlUHJvbWlzZShmZCwgbGVuKTtcbiAgICB9XG4gICAgZnRydW5jYXRlU3luYyhmZCwgbGVuKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VGcy5mdHJ1bmNhdGVTeW5jKGZkLCBsZW4pO1xuICAgIH1cbiAgICB3YXRjaChwLCBhLCBiKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VGcy53YXRjaCh0aGlzLm1hcFRvQmFzZShwKSwgXG4gICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICAgICAgYSwgYik7XG4gICAgfVxuICAgIHdhdGNoRmlsZShwLCBhLCBiKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VGcy53YXRjaEZpbGUodGhpcy5tYXBUb0Jhc2UocCksIFxuICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgICAgIGEsIGIpO1xuICAgIH1cbiAgICB1bndhdGNoRmlsZShwLCBjYikge1xuICAgICAgICByZXR1cm4gdGhpcy5iYXNlRnMudW53YXRjaEZpbGUodGhpcy5tYXBUb0Jhc2UocCksIGNiKTtcbiAgICB9XG4gICAgZnNNYXBUb0Jhc2UocCkge1xuICAgICAgICBpZiAodHlwZW9mIHAgPT09IGBudW1iZXJgKSB7XG4gICAgICAgICAgICByZXR1cm4gcDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm1hcFRvQmFzZShwKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbmV4cG9ydHMuUHJveGllZEZTID0gUHJveGllZEZTO1xuIiwgIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5BbGlhc0ZTID0gdm9pZCAwO1xuY29uc3QgUHJveGllZEZTXzEgPSByZXF1aXJlKFwiLi9Qcm94aWVkRlNcIik7XG5jbGFzcyBBbGlhc0ZTIGV4dGVuZHMgUHJveGllZEZTXzEuUHJveGllZEZTIHtcbiAgICBjb25zdHJ1Y3Rvcih0YXJnZXQsIHsgYmFzZUZzLCBwYXRoVXRpbHMgfSkge1xuICAgICAgICBzdXBlcihwYXRoVXRpbHMpO1xuICAgICAgICB0aGlzLnRhcmdldCA9IHRhcmdldDtcbiAgICAgICAgdGhpcy5iYXNlRnMgPSBiYXNlRnM7XG4gICAgfVxuICAgIGdldFJlYWxQYXRoKCkge1xuICAgICAgICByZXR1cm4gdGhpcy50YXJnZXQ7XG4gICAgfVxuICAgIGdldEJhc2VGcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZUZzO1xuICAgIH1cbiAgICBtYXBGcm9tQmFzZShwKSB7XG4gICAgICAgIHJldHVybiBwO1xuICAgIH1cbiAgICBtYXBUb0Jhc2UocCkge1xuICAgICAgICByZXR1cm4gcDtcbiAgICB9XG59XG5leHBvcnRzLkFsaWFzRlMgPSBBbGlhc0ZTO1xuIiwgIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5Ob2RlRlMgPSB2b2lkIDA7XG5jb25zdCB0c2xpYl8xID0gcmVxdWlyZShcInRzbGliXCIpO1xuY29uc3QgZnNfMSA9IHRzbGliXzEuX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJmc1wiKSk7XG5jb25zdCBGYWtlRlNfMSA9IHJlcXVpcmUoXCIuL0Zha2VGU1wiKTtcbmNvbnN0IHBhdGhfMSA9IHJlcXVpcmUoXCIuL3BhdGhcIik7XG5jbGFzcyBOb2RlRlMgZXh0ZW5kcyBGYWtlRlNfMS5CYXNlUG9ydGFibGVGYWtlRlMge1xuICAgIGNvbnN0cnVjdG9yKHJlYWxGcyA9IGZzXzEuZGVmYXVsdCkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLnJlYWxGcyA9IHJlYWxGcztcbiAgICB9XG4gICAgZ2V0RXh0cmFjdEhpbnQoKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgZ2V0UmVhbFBhdGgoKSB7XG4gICAgICAgIHJldHVybiBwYXRoXzEuUG9ydGFibGVQYXRoLnJvb3Q7XG4gICAgfVxuICAgIHJlc29sdmUocCkge1xuICAgICAgICByZXR1cm4gcGF0aF8xLnBwYXRoLnJlc29sdmUocCk7XG4gICAgfVxuICAgIGFzeW5jIG9wZW5Qcm9taXNlKHAsIGZsYWdzLCBtb2RlKSB7XG4gICAgICAgIHJldHVybiBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICB0aGlzLnJlYWxGcy5vcGVuKHBhdGhfMS5ucGF0aC5mcm9tUG9ydGFibGVQYXRoKHApLCBmbGFncywgbW9kZSwgdGhpcy5tYWtlQ2FsbGJhY2socmVzb2x2ZSwgcmVqZWN0KSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBvcGVuU3luYyhwLCBmbGFncywgbW9kZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5yZWFsRnMub3BlblN5bmMocGF0aF8xLm5wYXRoLmZyb21Qb3J0YWJsZVBhdGgocCksIGZsYWdzLCBtb2RlKTtcbiAgICB9XG4gICAgYXN5bmMgb3BlbmRpclByb21pc2UocCwgb3B0cykge1xuICAgICAgICByZXR1cm4gYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBvcHRzICE9PSBgdW5kZWZpbmVkYCkge1xuICAgICAgICAgICAgICAgIHRoaXMucmVhbEZzLm9wZW5kaXIocGF0aF8xLm5wYXRoLmZyb21Qb3J0YWJsZVBhdGgocCksIG9wdHMsIHRoaXMubWFrZUNhbGxiYWNrKHJlc29sdmUsIHJlamVjdCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZWFsRnMub3BlbmRpcihwYXRoXzEubnBhdGguZnJvbVBvcnRhYmxlUGF0aChwKSwgdGhpcy5tYWtlQ2FsbGJhY2socmVzb2x2ZSwgcmVqZWN0KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pLnRoZW4oZGlyID0+IHtcbiAgICAgICAgICAgIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZGlyLCBgcGF0aGAsIHsgdmFsdWU6IHAsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBvcGVuZGlyU3luYyhwLCBvcHRzKSB7XG4gICAgICAgIGNvbnN0IGRpciA9IHR5cGVvZiBvcHRzICE9PSBgdW5kZWZpbmVkYFxuICAgICAgICAgICAgPyB0aGlzLnJlYWxGcy5vcGVuZGlyU3luYyhwYXRoXzEubnBhdGguZnJvbVBvcnRhYmxlUGF0aChwKSwgb3B0cylcbiAgICAgICAgICAgIDogdGhpcy5yZWFsRnMub3BlbmRpclN5bmMocGF0aF8xLm5wYXRoLmZyb21Qb3J0YWJsZVBhdGgocCkpO1xuICAgICAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGRpciwgYHBhdGhgLCB7IHZhbHVlOiBwLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pO1xuICAgIH1cbiAgICBhc3luYyByZWFkUHJvbWlzZShmZCwgYnVmZmVyLCBvZmZzZXQgPSAwLCBsZW5ndGggPSAwLCBwb3NpdGlvbiA9IC0xKSB7XG4gICAgICAgIHJldHVybiBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICB0aGlzLnJlYWxGcy5yZWFkKGZkLCBidWZmZXIsIG9mZnNldCwgbGVuZ3RoLCBwb3NpdGlvbiwgKGVycm9yLCBieXRlc1JlYWQpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUoYnl0ZXNSZWFkKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHJlYWRTeW5jKGZkLCBidWZmZXIsIG9mZnNldCwgbGVuZ3RoLCBwb3NpdGlvbikge1xuICAgICAgICByZXR1cm4gdGhpcy5yZWFsRnMucmVhZFN5bmMoZmQsIGJ1ZmZlciwgb2Zmc2V0LCBsZW5ndGgsIHBvc2l0aW9uKTtcbiAgICB9XG4gICAgYXN5bmMgd3JpdGVQcm9taXNlKGZkLCBidWZmZXIsIG9mZnNldCwgbGVuZ3RoLCBwb3NpdGlvbikge1xuICAgICAgICByZXR1cm4gYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBidWZmZXIgPT09IGBzdHJpbmdgKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVhbEZzLndyaXRlKGZkLCBidWZmZXIsIG9mZnNldCwgdGhpcy5tYWtlQ2FsbGJhY2socmVzb2x2ZSwgcmVqZWN0KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZWFsRnMud3JpdGUoZmQsIGJ1ZmZlciwgb2Zmc2V0LCBsZW5ndGgsIHBvc2l0aW9uLCB0aGlzLm1ha2VDYWxsYmFjayhyZXNvbHZlLCByZWplY3QpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHdyaXRlU3luYyhmZCwgYnVmZmVyLCBvZmZzZXQsIGxlbmd0aCwgcG9zaXRpb24pIHtcbiAgICAgICAgaWYgKHR5cGVvZiBidWZmZXIgPT09IGBzdHJpbmdgKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yZWFsRnMud3JpdGVTeW5jKGZkLCBidWZmZXIsIG9mZnNldCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yZWFsRnMud3JpdGVTeW5jKGZkLCBidWZmZXIsIG9mZnNldCwgbGVuZ3RoLCBwb3NpdGlvbik7XG4gICAgICAgIH1cbiAgICB9XG4gICAgYXN5bmMgY2xvc2VQcm9taXNlKGZkKSB7XG4gICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIHRoaXMucmVhbEZzLmNsb3NlKGZkLCB0aGlzLm1ha2VDYWxsYmFjayhyZXNvbHZlLCByZWplY3QpKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGNsb3NlU3luYyhmZCkge1xuICAgICAgICB0aGlzLnJlYWxGcy5jbG9zZVN5bmMoZmQpO1xuICAgIH1cbiAgICBjcmVhdGVSZWFkU3RyZWFtKHAsIG9wdHMpIHtcbiAgICAgICAgY29uc3QgcmVhbFBhdGggPSAocCAhPT0gbnVsbCA/IHBhdGhfMS5ucGF0aC5mcm9tUG9ydGFibGVQYXRoKHApIDogcCk7XG4gICAgICAgIHJldHVybiB0aGlzLnJlYWxGcy5jcmVhdGVSZWFkU3RyZWFtKHJlYWxQYXRoLCBvcHRzKTtcbiAgICB9XG4gICAgY3JlYXRlV3JpdGVTdHJlYW0ocCwgb3B0cykge1xuICAgICAgICBjb25zdCByZWFsUGF0aCA9IChwICE9PSBudWxsID8gcGF0aF8xLm5wYXRoLmZyb21Qb3J0YWJsZVBhdGgocCkgOiBwKTtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVhbEZzLmNyZWF0ZVdyaXRlU3RyZWFtKHJlYWxQYXRoLCBvcHRzKTtcbiAgICB9XG4gICAgYXN5bmMgcmVhbHBhdGhQcm9taXNlKHApIHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIHRoaXMucmVhbEZzLnJlYWxwYXRoKHBhdGhfMS5ucGF0aC5mcm9tUG9ydGFibGVQYXRoKHApLCB7fSwgdGhpcy5tYWtlQ2FsbGJhY2socmVzb2x2ZSwgcmVqZWN0KSk7XG4gICAgICAgIH0pLnRoZW4ocGF0aCA9PiB7XG4gICAgICAgICAgICByZXR1cm4gcGF0aF8xLm5wYXRoLnRvUG9ydGFibGVQYXRoKHBhdGgpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgcmVhbHBhdGhTeW5jKHApIHtcbiAgICAgICAgcmV0dXJuIHBhdGhfMS5ucGF0aC50b1BvcnRhYmxlUGF0aCh0aGlzLnJlYWxGcy5yZWFscGF0aFN5bmMocGF0aF8xLm5wYXRoLmZyb21Qb3J0YWJsZVBhdGgocCksIHt9KSk7XG4gICAgfVxuICAgIGFzeW5jIGV4aXN0c1Byb21pc2UocCkge1xuICAgICAgICByZXR1cm4gYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XG4gICAgICAgICAgICB0aGlzLnJlYWxGcy5leGlzdHMocGF0aF8xLm5wYXRoLmZyb21Qb3J0YWJsZVBhdGgocCksIHJlc29sdmUpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgYWNjZXNzU3luYyhwLCBtb2RlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlYWxGcy5hY2Nlc3NTeW5jKHBhdGhfMS5ucGF0aC5mcm9tUG9ydGFibGVQYXRoKHApLCBtb2RlKTtcbiAgICB9XG4gICAgYXN5bmMgYWNjZXNzUHJvbWlzZShwLCBtb2RlKSB7XG4gICAgICAgIHJldHVybiBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICB0aGlzLnJlYWxGcy5hY2Nlc3MocGF0aF8xLm5wYXRoLmZyb21Qb3J0YWJsZVBhdGgocCksIG1vZGUsIHRoaXMubWFrZUNhbGxiYWNrKHJlc29sdmUsIHJlamVjdCkpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgZXhpc3RzU3luYyhwKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlYWxGcy5leGlzdHNTeW5jKHBhdGhfMS5ucGF0aC5mcm9tUG9ydGFibGVQYXRoKHApKTtcbiAgICB9XG4gICAgYXN5bmMgc3RhdFByb21pc2UocCwgb3B0cykge1xuICAgICAgICByZXR1cm4gYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgaWYgKG9wdHMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlYWxGcy5zdGF0KHBhdGhfMS5ucGF0aC5mcm9tUG9ydGFibGVQYXRoKHApLCBvcHRzLCB0aGlzLm1ha2VDYWxsYmFjayhyZXNvbHZlLCByZWplY3QpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMucmVhbEZzLnN0YXQocGF0aF8xLm5wYXRoLmZyb21Qb3J0YWJsZVBhdGgocCksIHRoaXMubWFrZUNhbGxiYWNrKHJlc29sdmUsIHJlamVjdCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgc3RhdFN5bmMocCwgb3B0cykge1xuICAgICAgICBpZiAob3B0cykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVhbEZzLnN0YXRTeW5jKHBhdGhfMS5ucGF0aC5mcm9tUG9ydGFibGVQYXRoKHApLCBvcHRzKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnJlYWxGcy5zdGF0U3luYyhwYXRoXzEubnBhdGguZnJvbVBvcnRhYmxlUGF0aChwKSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgYXN5bmMgZnN0YXRQcm9taXNlKGZkLCBvcHRzKSB7XG4gICAgICAgIHJldHVybiBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBpZiAob3B0cykge1xuICAgICAgICAgICAgICAgIHRoaXMucmVhbEZzLmZzdGF0KGZkLCBvcHRzLCB0aGlzLm1ha2VDYWxsYmFjayhyZXNvbHZlLCByZWplY3QpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMucmVhbEZzLmZzdGF0KGZkLCB0aGlzLm1ha2VDYWxsYmFjayhyZXNvbHZlLCByZWplY3QpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGZzdGF0U3luYyhmZCwgb3B0cykge1xuICAgICAgICBpZiAob3B0cykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVhbEZzLmZzdGF0U3luYyhmZCwgb3B0cyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yZWFsRnMuZnN0YXRTeW5jKGZkKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBhc3luYyBsc3RhdFByb21pc2UocCwgb3B0cykge1xuICAgICAgICByZXR1cm4gYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgaWYgKG9wdHMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlYWxGcy5sc3RhdChwYXRoXzEubnBhdGguZnJvbVBvcnRhYmxlUGF0aChwKSwgb3B0cywgdGhpcy5tYWtlQ2FsbGJhY2socmVzb2x2ZSwgcmVqZWN0KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlYWxGcy5sc3RhdChwYXRoXzEubnBhdGguZnJvbVBvcnRhYmxlUGF0aChwKSwgdGhpcy5tYWtlQ2FsbGJhY2socmVzb2x2ZSwgcmVqZWN0KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBsc3RhdFN5bmMocCwgb3B0cykge1xuICAgICAgICBpZiAob3B0cykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVhbEZzLmxzdGF0U3luYyhwYXRoXzEubnBhdGguZnJvbVBvcnRhYmxlUGF0aChwKSwgb3B0cyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yZWFsRnMubHN0YXRTeW5jKHBhdGhfMS5ucGF0aC5mcm9tUG9ydGFibGVQYXRoKHApKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBhc3luYyBmY2htb2RQcm9taXNlKGZkLCBtYXNrKSB7XG4gICAgICAgIHJldHVybiBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICB0aGlzLnJlYWxGcy5mY2htb2QoZmQsIG1hc2ssIHRoaXMubWFrZUNhbGxiYWNrKHJlc29sdmUsIHJlamVjdCkpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgZmNobW9kU3luYyhmZCwgbWFzaykge1xuICAgICAgICByZXR1cm4gdGhpcy5yZWFsRnMuZmNobW9kU3luYyhmZCwgbWFzayk7XG4gICAgfVxuICAgIGFzeW5jIGNobW9kUHJvbWlzZShwLCBtYXNrKSB7XG4gICAgICAgIHJldHVybiBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICB0aGlzLnJlYWxGcy5jaG1vZChwYXRoXzEubnBhdGguZnJvbVBvcnRhYmxlUGF0aChwKSwgbWFzaywgdGhpcy5tYWtlQ2FsbGJhY2socmVzb2x2ZSwgcmVqZWN0KSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBjaG1vZFN5bmMocCwgbWFzaykge1xuICAgICAgICByZXR1cm4gdGhpcy5yZWFsRnMuY2htb2RTeW5jKHBhdGhfMS5ucGF0aC5mcm9tUG9ydGFibGVQYXRoKHApLCBtYXNrKTtcbiAgICB9XG4gICAgYXN5bmMgZmNob3duUHJvbWlzZShmZCwgdWlkLCBnaWQpIHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIHRoaXMucmVhbEZzLmZjaG93bihmZCwgdWlkLCBnaWQsIHRoaXMubWFrZUNhbGxiYWNrKHJlc29sdmUsIHJlamVjdCkpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgZmNob3duU3luYyhmZCwgdWlkLCBnaWQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVhbEZzLmZjaG93blN5bmMoZmQsIHVpZCwgZ2lkKTtcbiAgICB9XG4gICAgYXN5bmMgY2hvd25Qcm9taXNlKHAsIHVpZCwgZ2lkKSB7XG4gICAgICAgIHJldHVybiBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICB0aGlzLnJlYWxGcy5jaG93bihwYXRoXzEubnBhdGguZnJvbVBvcnRhYmxlUGF0aChwKSwgdWlkLCBnaWQsIHRoaXMubWFrZUNhbGxiYWNrKHJlc29sdmUsIHJlamVjdCkpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgY2hvd25TeW5jKHAsIHVpZCwgZ2lkKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlYWxGcy5jaG93blN5bmMocGF0aF8xLm5wYXRoLmZyb21Qb3J0YWJsZVBhdGgocCksIHVpZCwgZ2lkKTtcbiAgICB9XG4gICAgYXN5bmMgcmVuYW1lUHJvbWlzZShvbGRQLCBuZXdQKSB7XG4gICAgICAgIHJldHVybiBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICB0aGlzLnJlYWxGcy5yZW5hbWUocGF0aF8xLm5wYXRoLmZyb21Qb3J0YWJsZVBhdGgob2xkUCksIHBhdGhfMS5ucGF0aC5mcm9tUG9ydGFibGVQYXRoKG5ld1ApLCB0aGlzLm1ha2VDYWxsYmFjayhyZXNvbHZlLCByZWplY3QpKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHJlbmFtZVN5bmMob2xkUCwgbmV3UCkge1xuICAgICAgICByZXR1cm4gdGhpcy5yZWFsRnMucmVuYW1lU3luYyhwYXRoXzEubnBhdGguZnJvbVBvcnRhYmxlUGF0aChvbGRQKSwgcGF0aF8xLm5wYXRoLmZyb21Qb3J0YWJsZVBhdGgobmV3UCkpO1xuICAgIH1cbiAgICBhc3luYyBjb3B5RmlsZVByb21pc2Uoc291cmNlUCwgZGVzdFAsIGZsYWdzID0gMCkge1xuICAgICAgICByZXR1cm4gYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5yZWFsRnMuY29weUZpbGUocGF0aF8xLm5wYXRoLmZyb21Qb3J0YWJsZVBhdGgoc291cmNlUCksIHBhdGhfMS5ucGF0aC5mcm9tUG9ydGFibGVQYXRoKGRlc3RQKSwgZmxhZ3MsIHRoaXMubWFrZUNhbGxiYWNrKHJlc29sdmUsIHJlamVjdCkpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgY29weUZpbGVTeW5jKHNvdXJjZVAsIGRlc3RQLCBmbGFncyA9IDApIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVhbEZzLmNvcHlGaWxlU3luYyhwYXRoXzEubnBhdGguZnJvbVBvcnRhYmxlUGF0aChzb3VyY2VQKSwgcGF0aF8xLm5wYXRoLmZyb21Qb3J0YWJsZVBhdGgoZGVzdFApLCBmbGFncyk7XG4gICAgfVxuICAgIGFzeW5jIGFwcGVuZEZpbGVQcm9taXNlKHAsIGNvbnRlbnQsIG9wdHMpIHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGZzTmF0aXZlUGF0aCA9IHR5cGVvZiBwID09PSBgc3RyaW5nYCA/IHBhdGhfMS5ucGF0aC5mcm9tUG9ydGFibGVQYXRoKHApIDogcDtcbiAgICAgICAgICAgIGlmIChvcHRzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZWFsRnMuYXBwZW5kRmlsZShmc05hdGl2ZVBhdGgsIGNvbnRlbnQsIG9wdHMsIHRoaXMubWFrZUNhbGxiYWNrKHJlc29sdmUsIHJlamVjdCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZWFsRnMuYXBwZW5kRmlsZShmc05hdGl2ZVBhdGgsIGNvbnRlbnQsIHRoaXMubWFrZUNhbGxiYWNrKHJlc29sdmUsIHJlamVjdCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgYXBwZW5kRmlsZVN5bmMocCwgY29udGVudCwgb3B0cykge1xuICAgICAgICBjb25zdCBmc05hdGl2ZVBhdGggPSB0eXBlb2YgcCA9PT0gYHN0cmluZ2AgPyBwYXRoXzEubnBhdGguZnJvbVBvcnRhYmxlUGF0aChwKSA6IHA7XG4gICAgICAgIGlmIChvcHRzKSB7XG4gICAgICAgICAgICB0aGlzLnJlYWxGcy5hcHBlbmRGaWxlU3luYyhmc05hdGl2ZVBhdGgsIGNvbnRlbnQsIG9wdHMpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5yZWFsRnMuYXBwZW5kRmlsZVN5bmMoZnNOYXRpdmVQYXRoLCBjb250ZW50KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBhc3luYyB3cml0ZUZpbGVQcm9taXNlKHAsIGNvbnRlbnQsIG9wdHMpIHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGZzTmF0aXZlUGF0aCA9IHR5cGVvZiBwID09PSBgc3RyaW5nYCA/IHBhdGhfMS5ucGF0aC5mcm9tUG9ydGFibGVQYXRoKHApIDogcDtcbiAgICAgICAgICAgIGlmIChvcHRzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZWFsRnMud3JpdGVGaWxlKGZzTmF0aXZlUGF0aCwgY29udGVudCwgb3B0cywgdGhpcy5tYWtlQ2FsbGJhY2socmVzb2x2ZSwgcmVqZWN0KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlYWxGcy53cml0ZUZpbGUoZnNOYXRpdmVQYXRoLCBjb250ZW50LCB0aGlzLm1ha2VDYWxsYmFjayhyZXNvbHZlLCByZWplY3QpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHdyaXRlRmlsZVN5bmMocCwgY29udGVudCwgb3B0cykge1xuICAgICAgICBjb25zdCBmc05hdGl2ZVBhdGggPSB0eXBlb2YgcCA9PT0gYHN0cmluZ2AgPyBwYXRoXzEubnBhdGguZnJvbVBvcnRhYmxlUGF0aChwKSA6IHA7XG4gICAgICAgIGlmIChvcHRzKSB7XG4gICAgICAgICAgICB0aGlzLnJlYWxGcy53cml0ZUZpbGVTeW5jKGZzTmF0aXZlUGF0aCwgY29udGVudCwgb3B0cyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnJlYWxGcy53cml0ZUZpbGVTeW5jKGZzTmF0aXZlUGF0aCwgY29udGVudCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgYXN5bmMgdW5saW5rUHJvbWlzZShwKSB7XG4gICAgICAgIHJldHVybiBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICB0aGlzLnJlYWxGcy51bmxpbmsocGF0aF8xLm5wYXRoLmZyb21Qb3J0YWJsZVBhdGgocCksIHRoaXMubWFrZUNhbGxiYWNrKHJlc29sdmUsIHJlamVjdCkpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgdW5saW5rU3luYyhwKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlYWxGcy51bmxpbmtTeW5jKHBhdGhfMS5ucGF0aC5mcm9tUG9ydGFibGVQYXRoKHApKTtcbiAgICB9XG4gICAgYXN5bmMgdXRpbWVzUHJvbWlzZShwLCBhdGltZSwgbXRpbWUpIHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIHRoaXMucmVhbEZzLnV0aW1lcyhwYXRoXzEubnBhdGguZnJvbVBvcnRhYmxlUGF0aChwKSwgYXRpbWUsIG10aW1lLCB0aGlzLm1ha2VDYWxsYmFjayhyZXNvbHZlLCByZWplY3QpKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHV0aW1lc1N5bmMocCwgYXRpbWUsIG10aW1lKSB7XG4gICAgICAgIHRoaXMucmVhbEZzLnV0aW1lc1N5bmMocGF0aF8xLm5wYXRoLmZyb21Qb3J0YWJsZVBhdGgocCksIGF0aW1lLCBtdGltZSk7XG4gICAgfVxuICAgIGFzeW5jIGx1dGltZXNQcm9taXNlKHAsIGF0aW1lLCBtdGltZSkge1xuICAgICAgICByZXR1cm4gYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5yZWFsRnMubHV0aW1lcyhwYXRoXzEubnBhdGguZnJvbVBvcnRhYmxlUGF0aChwKSwgYXRpbWUsIG10aW1lLCB0aGlzLm1ha2VDYWxsYmFjayhyZXNvbHZlLCByZWplY3QpKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGx1dGltZXNTeW5jKHAsIGF0aW1lLCBtdGltZSkge1xuICAgICAgICB0aGlzLnJlYWxGcy5sdXRpbWVzU3luYyhwYXRoXzEubnBhdGguZnJvbVBvcnRhYmxlUGF0aChwKSwgYXRpbWUsIG10aW1lKTtcbiAgICB9XG4gICAgYXN5bmMgbWtkaXJQcm9taXNlKHAsIG9wdHMpIHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIHRoaXMucmVhbEZzLm1rZGlyKHBhdGhfMS5ucGF0aC5mcm9tUG9ydGFibGVQYXRoKHApLCBvcHRzLCB0aGlzLm1ha2VDYWxsYmFjayhyZXNvbHZlLCByZWplY3QpKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIG1rZGlyU3luYyhwLCBvcHRzKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlYWxGcy5ta2RpclN5bmMocGF0aF8xLm5wYXRoLmZyb21Qb3J0YWJsZVBhdGgocCksIG9wdHMpO1xuICAgIH1cbiAgICBhc3luYyBybWRpclByb21pc2UocCwgb3B0cykge1xuICAgICAgICByZXR1cm4gYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgLy8gVE9ETzogYWx3YXlzIHBhc3Mgb3B0cyB3aGVuIG1pbiBub2RlIHZlcnNpb24gaXMgMTIuMTArXG4gICAgICAgICAgICBpZiAob3B0cykge1xuICAgICAgICAgICAgICAgIHRoaXMucmVhbEZzLnJtZGlyKHBhdGhfMS5ucGF0aC5mcm9tUG9ydGFibGVQYXRoKHApLCBvcHRzLCB0aGlzLm1ha2VDYWxsYmFjayhyZXNvbHZlLCByZWplY3QpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMucmVhbEZzLnJtZGlyKHBhdGhfMS5ucGF0aC5mcm9tUG9ydGFibGVQYXRoKHApLCB0aGlzLm1ha2VDYWxsYmFjayhyZXNvbHZlLCByZWplY3QpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHJtZGlyU3luYyhwLCBvcHRzKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlYWxGcy5ybWRpclN5bmMocGF0aF8xLm5wYXRoLmZyb21Qb3J0YWJsZVBhdGgocCksIG9wdHMpO1xuICAgIH1cbiAgICBhc3luYyBsaW5rUHJvbWlzZShleGlzdGluZ1AsIG5ld1ApIHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIHRoaXMucmVhbEZzLmxpbmsocGF0aF8xLm5wYXRoLmZyb21Qb3J0YWJsZVBhdGgoZXhpc3RpbmdQKSwgcGF0aF8xLm5wYXRoLmZyb21Qb3J0YWJsZVBhdGgobmV3UCksIHRoaXMubWFrZUNhbGxiYWNrKHJlc29sdmUsIHJlamVjdCkpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgbGlua1N5bmMoZXhpc3RpbmdQLCBuZXdQKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlYWxGcy5saW5rU3luYyhwYXRoXzEubnBhdGguZnJvbVBvcnRhYmxlUGF0aChleGlzdGluZ1ApLCBwYXRoXzEubnBhdGguZnJvbVBvcnRhYmxlUGF0aChuZXdQKSk7XG4gICAgfVxuICAgIGFzeW5jIHN5bWxpbmtQcm9taXNlKHRhcmdldCwgcCwgdHlwZSkge1xuICAgICAgICByZXR1cm4gYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5yZWFsRnMuc3ltbGluayhwYXRoXzEubnBhdGguZnJvbVBvcnRhYmxlUGF0aCh0YXJnZXQucmVwbGFjZSgvXFwvKyQvLCBgYCkpLCBwYXRoXzEubnBhdGguZnJvbVBvcnRhYmxlUGF0aChwKSwgdHlwZSwgdGhpcy5tYWtlQ2FsbGJhY2socmVzb2x2ZSwgcmVqZWN0KSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBzeW1saW5rU3luYyh0YXJnZXQsIHAsIHR5cGUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVhbEZzLnN5bWxpbmtTeW5jKHBhdGhfMS5ucGF0aC5mcm9tUG9ydGFibGVQYXRoKHRhcmdldC5yZXBsYWNlKC9cXC8rJC8sIGBgKSksIHBhdGhfMS5ucGF0aC5mcm9tUG9ydGFibGVQYXRoKHApLCB0eXBlKTtcbiAgICB9XG4gICAgYXN5bmMgcmVhZEZpbGVQcm9taXNlKHAsIGVuY29kaW5nKSB7XG4gICAgICAgIHJldHVybiBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmc05hdGl2ZVBhdGggPSB0eXBlb2YgcCA9PT0gYHN0cmluZ2AgPyBwYXRoXzEubnBhdGguZnJvbVBvcnRhYmxlUGF0aChwKSA6IHA7XG4gICAgICAgICAgICB0aGlzLnJlYWxGcy5yZWFkRmlsZShmc05hdGl2ZVBhdGgsIGVuY29kaW5nLCB0aGlzLm1ha2VDYWxsYmFjayhyZXNvbHZlLCByZWplY3QpKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHJlYWRGaWxlU3luYyhwLCBlbmNvZGluZykge1xuICAgICAgICBjb25zdCBmc05hdGl2ZVBhdGggPSB0eXBlb2YgcCA9PT0gYHN0cmluZ2AgPyBwYXRoXzEubnBhdGguZnJvbVBvcnRhYmxlUGF0aChwKSA6IHA7XG4gICAgICAgIHJldHVybiB0aGlzLnJlYWxGcy5yZWFkRmlsZVN5bmMoZnNOYXRpdmVQYXRoLCBlbmNvZGluZyk7XG4gICAgfVxuICAgIGFzeW5jIHJlYWRkaXJQcm9taXNlKHAsIG9wdHMpIHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIGlmIChvcHRzID09PSBudWxsIHx8IG9wdHMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdHMud2l0aEZpbGVUeXBlcykge1xuICAgICAgICAgICAgICAgIHRoaXMucmVhbEZzLnJlYWRkaXIocGF0aF8xLm5wYXRoLmZyb21Qb3J0YWJsZVBhdGgocCksIHsgd2l0aEZpbGVUeXBlczogdHJ1ZSB9LCB0aGlzLm1ha2VDYWxsYmFjayhyZXNvbHZlLCByZWplY3QpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMucmVhbEZzLnJlYWRkaXIocGF0aF8xLm5wYXRoLmZyb21Qb3J0YWJsZVBhdGgocCksIHRoaXMubWFrZUNhbGxiYWNrKHZhbHVlID0+IHJlc29sdmUodmFsdWUpLCByZWplY3QpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHJlYWRkaXJTeW5jKHAsIG9wdHMpIHtcbiAgICAgICAgaWYgKG9wdHMgPT09IG51bGwgfHwgb3B0cyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0cy53aXRoRmlsZVR5cGVzKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yZWFsRnMucmVhZGRpclN5bmMocGF0aF8xLm5wYXRoLmZyb21Qb3J0YWJsZVBhdGgocCksIHsgd2l0aEZpbGVUeXBlczogdHJ1ZSB9KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnJlYWxGcy5yZWFkZGlyU3luYyhwYXRoXzEubnBhdGguZnJvbVBvcnRhYmxlUGF0aChwKSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgYXN5bmMgcmVhZGxpbmtQcm9taXNlKHApIHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIHRoaXMucmVhbEZzLnJlYWRsaW5rKHBhdGhfMS5ucGF0aC5mcm9tUG9ydGFibGVQYXRoKHApLCB0aGlzLm1ha2VDYWxsYmFjayhyZXNvbHZlLCByZWplY3QpKTtcbiAgICAgICAgfSkudGhlbihwYXRoID0+IHtcbiAgICAgICAgICAgIHJldHVybiBwYXRoXzEubnBhdGgudG9Qb3J0YWJsZVBhdGgocGF0aCk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICByZWFkbGlua1N5bmMocCkge1xuICAgICAgICByZXR1cm4gcGF0aF8xLm5wYXRoLnRvUG9ydGFibGVQYXRoKHRoaXMucmVhbEZzLnJlYWRsaW5rU3luYyhwYXRoXzEubnBhdGguZnJvbVBvcnRhYmxlUGF0aChwKSkpO1xuICAgIH1cbiAgICBhc3luYyB0cnVuY2F0ZVByb21pc2UocCwgbGVuKSB7XG4gICAgICAgIHJldHVybiBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICB0aGlzLnJlYWxGcy50cnVuY2F0ZShwYXRoXzEubnBhdGguZnJvbVBvcnRhYmxlUGF0aChwKSwgbGVuLCB0aGlzLm1ha2VDYWxsYmFjayhyZXNvbHZlLCByZWplY3QpKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHRydW5jYXRlU3luYyhwLCBsZW4pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVhbEZzLnRydW5jYXRlU3luYyhwYXRoXzEubnBhdGguZnJvbVBvcnRhYmxlUGF0aChwKSwgbGVuKTtcbiAgICB9XG4gICAgYXN5bmMgZnRydW5jYXRlUHJvbWlzZShmZCwgbGVuKSB7XG4gICAgICAgIHJldHVybiBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICB0aGlzLnJlYWxGcy5mdHJ1bmNhdGUoZmQsIGxlbiwgdGhpcy5tYWtlQ2FsbGJhY2socmVzb2x2ZSwgcmVqZWN0KSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBmdHJ1bmNhdGVTeW5jKGZkLCBsZW4pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVhbEZzLmZ0cnVuY2F0ZVN5bmMoZmQsIGxlbik7XG4gICAgfVxuICAgIHdhdGNoKHAsIGEsIGIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVhbEZzLndhdGNoKHBhdGhfMS5ucGF0aC5mcm9tUG9ydGFibGVQYXRoKHApLCBcbiAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgICAgICBhLCBiKTtcbiAgICB9XG4gICAgd2F0Y2hGaWxlKHAsIGEsIGIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVhbEZzLndhdGNoRmlsZShwYXRoXzEubnBhdGguZnJvbVBvcnRhYmxlUGF0aChwKSwgXG4gICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICAgICAgYSwgYik7XG4gICAgfVxuICAgIHVud2F0Y2hGaWxlKHAsIGNiKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlYWxGcy51bndhdGNoRmlsZShwYXRoXzEubnBhdGguZnJvbVBvcnRhYmxlUGF0aChwKSwgY2IpO1xuICAgIH1cbiAgICBtYWtlQ2FsbGJhY2socmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIHJldHVybiAoZXJyLCByZXN1bHQpID0+IHtcbiAgICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHJlc29sdmUocmVzdWx0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9XG59XG5leHBvcnRzLk5vZGVGUyA9IE5vZGVGUztcbiIsICJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuQ3dkRlMgPSB2b2lkIDA7XG5jb25zdCBOb2RlRlNfMSA9IHJlcXVpcmUoXCIuL05vZGVGU1wiKTtcbmNvbnN0IFByb3hpZWRGU18xID0gcmVxdWlyZShcIi4vUHJveGllZEZTXCIpO1xuY29uc3QgcGF0aF8xID0gcmVxdWlyZShcIi4vcGF0aFwiKTtcbmNsYXNzIEN3ZEZTIGV4dGVuZHMgUHJveGllZEZTXzEuUHJveGllZEZTIHtcbiAgICBjb25zdHJ1Y3Rvcih0YXJnZXQsIHsgYmFzZUZzID0gbmV3IE5vZGVGU18xLk5vZGVGUygpIH0gPSB7fSkge1xuICAgICAgICBzdXBlcihwYXRoXzEucHBhdGgpO1xuICAgICAgICB0aGlzLnRhcmdldCA9IHRoaXMucGF0aFV0aWxzLm5vcm1hbGl6ZSh0YXJnZXQpO1xuICAgICAgICB0aGlzLmJhc2VGcyA9IGJhc2VGcztcbiAgICB9XG4gICAgZ2V0UmVhbFBhdGgoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnBhdGhVdGlscy5yZXNvbHZlKHRoaXMuYmFzZUZzLmdldFJlYWxQYXRoKCksIHRoaXMudGFyZ2V0KTtcbiAgICB9XG4gICAgcmVzb2x2ZShwKSB7XG4gICAgICAgIGlmICh0aGlzLnBhdGhVdGlscy5pc0Fic29sdXRlKHApKSB7XG4gICAgICAgICAgICByZXR1cm4gcGF0aF8xLnBwYXRoLm5vcm1hbGl6ZShwKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmJhc2VGcy5yZXNvbHZlKHBhdGhfMS5wcGF0aC5qb2luKHRoaXMudGFyZ2V0LCBwKSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgbWFwRnJvbUJhc2UocGF0aCkge1xuICAgICAgICByZXR1cm4gcGF0aDtcbiAgICB9XG4gICAgbWFwVG9CYXNlKHBhdGgpIHtcbiAgICAgICAgaWYgKHRoaXMucGF0aFV0aWxzLmlzQWJzb2x1dGUocGF0aCkpIHtcbiAgICAgICAgICAgIHJldHVybiBwYXRoO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucGF0aFV0aWxzLmpvaW4odGhpcy50YXJnZXQsIHBhdGgpO1xuICAgICAgICB9XG4gICAgfVxufVxuZXhwb3J0cy5Dd2RGUyA9IEN3ZEZTO1xuIiwgIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5KYWlsRlMgPSB2b2lkIDA7XG5jb25zdCBOb2RlRlNfMSA9IHJlcXVpcmUoXCIuL05vZGVGU1wiKTtcbmNvbnN0IFByb3hpZWRGU18xID0gcmVxdWlyZShcIi4vUHJveGllZEZTXCIpO1xuY29uc3QgcGF0aF8xID0gcmVxdWlyZShcIi4vcGF0aFwiKTtcbmNvbnN0IEpBSUxfUk9PVCA9IHBhdGhfMS5Qb3J0YWJsZVBhdGgucm9vdDtcbmNsYXNzIEphaWxGUyBleHRlbmRzIFByb3hpZWRGU18xLlByb3hpZWRGUyB7XG4gICAgY29uc3RydWN0b3IodGFyZ2V0LCB7IGJhc2VGcyA9IG5ldyBOb2RlRlNfMS5Ob2RlRlMoKSB9ID0ge30pIHtcbiAgICAgICAgc3VwZXIocGF0aF8xLnBwYXRoKTtcbiAgICAgICAgdGhpcy50YXJnZXQgPSB0aGlzLnBhdGhVdGlscy5yZXNvbHZlKHBhdGhfMS5Qb3J0YWJsZVBhdGgucm9vdCwgdGFyZ2V0KTtcbiAgICAgICAgdGhpcy5iYXNlRnMgPSBiYXNlRnM7XG4gICAgfVxuICAgIGdldFJlYWxQYXRoKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5wYXRoVXRpbHMucmVzb2x2ZSh0aGlzLmJhc2VGcy5nZXRSZWFsUGF0aCgpLCB0aGlzLnBhdGhVdGlscy5yZWxhdGl2ZShwYXRoXzEuUG9ydGFibGVQYXRoLnJvb3QsIHRoaXMudGFyZ2V0KSk7XG4gICAgfVxuICAgIGdldFRhcmdldCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGFyZ2V0O1xuICAgIH1cbiAgICBnZXRCYXNlRnMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VGcztcbiAgICB9XG4gICAgbWFwVG9CYXNlKHApIHtcbiAgICAgICAgY29uc3Qgbm9ybWFsaXplZCA9IHRoaXMucGF0aFV0aWxzLm5vcm1hbGl6ZShwKTtcbiAgICAgICAgaWYgKHRoaXMucGF0aFV0aWxzLmlzQWJzb2x1dGUocCkpXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wYXRoVXRpbHMucmVzb2x2ZSh0aGlzLnRhcmdldCwgdGhpcy5wYXRoVXRpbHMucmVsYXRpdmUoSkFJTF9ST09ULCBwKSk7XG4gICAgICAgIGlmIChub3JtYWxpemVkLm1hdGNoKC9eXFwuXFwuXFwvPy8pKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBSZXNvbHZpbmcgdGhpcyBwYXRoICgke3B9KSB3b3VsZCBlc2NhcGUgdGhlIGphaWxgKTtcbiAgICAgICAgcmV0dXJuIHRoaXMucGF0aFV0aWxzLnJlc29sdmUodGhpcy50YXJnZXQsIHApO1xuICAgIH1cbiAgICBtYXBGcm9tQmFzZShwKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnBhdGhVdGlscy5yZXNvbHZlKEpBSUxfUk9PVCwgdGhpcy5wYXRoVXRpbHMucmVsYXRpdmUodGhpcy50YXJnZXQsIHApKTtcbiAgICB9XG59XG5leHBvcnRzLkphaWxGUyA9IEphaWxGUztcbiIsICJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuTGF6eUZTID0gdm9pZCAwO1xuY29uc3QgUHJveGllZEZTXzEgPSByZXF1aXJlKFwiLi9Qcm94aWVkRlNcIik7XG5jbGFzcyBMYXp5RlMgZXh0ZW5kcyBQcm94aWVkRlNfMS5Qcm94aWVkRlMge1xuICAgIGNvbnN0cnVjdG9yKGZhY3RvcnksIHBhdGhVdGlscykge1xuICAgICAgICBzdXBlcihwYXRoVXRpbHMpO1xuICAgICAgICB0aGlzLmluc3RhbmNlID0gbnVsbDtcbiAgICAgICAgdGhpcy5mYWN0b3J5ID0gZmFjdG9yeTtcbiAgICB9XG4gICAgZ2V0IGJhc2VGcygpIHtcbiAgICAgICAgaWYgKCF0aGlzLmluc3RhbmNlKVxuICAgICAgICAgICAgdGhpcy5pbnN0YW5jZSA9IHRoaXMuZmFjdG9yeSgpO1xuICAgICAgICByZXR1cm4gdGhpcy5pbnN0YW5jZTtcbiAgICB9XG4gICAgc2V0IGJhc2VGcyh2YWx1ZSkge1xuICAgICAgICB0aGlzLmluc3RhbmNlID0gdmFsdWU7XG4gICAgfVxuICAgIG1hcEZyb21CYXNlKHApIHtcbiAgICAgICAgcmV0dXJuIHA7XG4gICAgfVxuICAgIG1hcFRvQmFzZShwKSB7XG4gICAgICAgIHJldHVybiBwO1xuICAgIH1cbn1cbmV4cG9ydHMuTGF6eUZTID0gTGF6eUZTO1xuIiwgIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5Nb3VudEZTID0gdm9pZCAwO1xuY29uc3QgdHNsaWJfMSA9IHJlcXVpcmUoXCJ0c2xpYlwiKTtcbmNvbnN0IGZzXzEgPSByZXF1aXJlKFwiZnNcIik7XG5jb25zdCBGYWtlRlNfMSA9IHJlcXVpcmUoXCIuL0Zha2VGU1wiKTtcbmNvbnN0IE5vZGVGU18xID0gcmVxdWlyZShcIi4vTm9kZUZTXCIpO1xuY29uc3Qgd2F0Y2hGaWxlXzEgPSByZXF1aXJlKFwiLi9hbGdvcml0aG1zL3dhdGNoRmlsZVwiKTtcbmNvbnN0IGVycm9ycyA9IHRzbGliXzEuX19pbXBvcnRTdGFyKHJlcXVpcmUoXCIuL2Vycm9yc1wiKSk7XG5jb25zdCBwYXRoXzEgPSByZXF1aXJlKFwiLi9wYXRoXCIpO1xuLy8gT25seSBmaWxlIGRlc2NyaXB0b3JzIHByZWZpeGVkIGJ5IHRob3NlIHZhbHVlcyB3aWxsIGJlIGZvcndhcmRlZCB0byB0aGUgTW91bnRGU1xuLy8gaW5zdGFuY2VzLiBOb3RlIHRoYXQgdGhlIGhpZ2hlc3QgTU9VTlRfTUFHSUMgYml0IE1VU1QgTk9UIGJlIHNldCwgb3RoZXJ3aXNlIHRoZVxuLy8gcmVzdWx0aW5nIGZkIGJlY29tZXMgYSBuZWdhdGl2ZSBpbnRlZ2VyLCB3aGljaCBpc24ndCBzdXBwb3NlZCB0byBoYXBwZW4gcGVyXG4vLyB0aGUgdW5peCBydWxlcyAoY2F1c2VkIHByb2JsZW1zIHcvIEdvKS5cbi8vXG4vLyBUaG9zZSB2YWx1ZXMgbXVzdCBiZSBzeW5jZWQgd2l0aCBwYWNrYWdlcy95YXJucGtnLXBucC9zb3VyY2VzL2VzbS1sb2FkZXIvZnNwYXRjaC50c1xuLy9cbmNvbnN0IE1PVU5UX01BU0sgPSAweGZmMDAwMDAwO1xuY2xhc3MgTW91bnRGUyBleHRlbmRzIEZha2VGU18xLkJhc2VQb3J0YWJsZUZha2VGUyB7XG4gICAgY29uc3RydWN0b3IoeyBiYXNlRnMgPSBuZXcgTm9kZUZTXzEuTm9kZUZTKCksIGZpbHRlciA9IG51bGwsIG1hZ2ljQnl0ZSA9IDB4MmEsIG1heE9wZW5GaWxlcyA9IEluZmluaXR5LCB1c2VDYWNoZSA9IHRydWUsIG1heEFnZSA9IDUwMDAsIGdldE1vdW50UG9pbnQsIGZhY3RvcnlQcm9taXNlLCBmYWN0b3J5U3luYyB9KSB7XG4gICAgICAgIGlmIChNYXRoLmZsb29yKG1hZ2ljQnl0ZSkgIT09IG1hZ2ljQnl0ZSB8fCAhKG1hZ2ljQnl0ZSA+IDEgJiYgbWFnaWNCeXRlIDw9IDEyNykpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSBtYWdpYyBieXRlIG11c3QgYmUgc2V0IHRvIGEgcm91bmQgdmFsdWUgYmV0d2VlbiAxIGFuZCAxMjcgaW5jbHVkZWRgKTtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5mZE1hcCA9IG5ldyBNYXAoKTtcbiAgICAgICAgdGhpcy5uZXh0RmQgPSAzO1xuICAgICAgICB0aGlzLmlzTW91bnQgPSBuZXcgU2V0KCk7XG4gICAgICAgIHRoaXMubm90TW91bnQgPSBuZXcgU2V0KCk7XG4gICAgICAgIHRoaXMucmVhbFBhdGhzID0gbmV3IE1hcCgpO1xuICAgICAgICB0aGlzLmxpbWl0T3BlbkZpbGVzVGltZW91dCA9IG51bGw7XG4gICAgICAgIHRoaXMuYmFzZUZzID0gYmFzZUZzO1xuICAgICAgICB0aGlzLm1vdW50SW5zdGFuY2VzID0gdXNlQ2FjaGUgPyBuZXcgTWFwKCkgOiBudWxsO1xuICAgICAgICB0aGlzLmZhY3RvcnlQcm9taXNlID0gZmFjdG9yeVByb21pc2U7XG4gICAgICAgIHRoaXMuZmFjdG9yeVN5bmMgPSBmYWN0b3J5U3luYztcbiAgICAgICAgdGhpcy5maWx0ZXIgPSBmaWx0ZXI7XG4gICAgICAgIHRoaXMuZ2V0TW91bnRQb2ludCA9IGdldE1vdW50UG9pbnQ7XG4gICAgICAgIHRoaXMubWFnaWMgPSBtYWdpY0J5dGUgPDwgMjQ7XG4gICAgICAgIHRoaXMubWF4QWdlID0gbWF4QWdlO1xuICAgICAgICB0aGlzLm1heE9wZW5GaWxlcyA9IG1heE9wZW5GaWxlcztcbiAgICB9XG4gICAgZ2V0RXh0cmFjdEhpbnQoaGludHMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZUZzLmdldEV4dHJhY3RIaW50KGhpbnRzKTtcbiAgICB9XG4gICAgZ2V0UmVhbFBhdGgoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VGcy5nZXRSZWFsUGF0aCgpO1xuICAgIH1cbiAgICBzYXZlQW5kQ2xvc2UoKSB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgKDAsIHdhdGNoRmlsZV8xLnVud2F0Y2hBbGxGaWxlcykodGhpcyk7XG4gICAgICAgIGlmICh0aGlzLm1vdW50SW5zdGFuY2VzKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IFtwYXRoLCB7IGNoaWxkRnMgfV0gb2YgdGhpcy5tb3VudEluc3RhbmNlcy5lbnRyaWVzKCkpIHtcbiAgICAgICAgICAgICAgICAoX2EgPSBjaGlsZEZzLnNhdmVBbmRDbG9zZSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmNhbGwoY2hpbGRGcyk7XG4gICAgICAgICAgICAgICAgdGhpcy5tb3VudEluc3RhbmNlcy5kZWxldGUocGF0aCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgZGlzY2FyZEFuZENsb3NlKCkge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgICgwLCB3YXRjaEZpbGVfMS51bndhdGNoQWxsRmlsZXMpKHRoaXMpO1xuICAgICAgICBpZiAodGhpcy5tb3VudEluc3RhbmNlcykge1xuICAgICAgICAgICAgZm9yIChjb25zdCBbcGF0aCwgeyBjaGlsZEZzIH1dIG9mIHRoaXMubW91bnRJbnN0YW5jZXMuZW50cmllcygpKSB7XG4gICAgICAgICAgICAgICAgKF9hID0gY2hpbGRGcy5kaXNjYXJkQW5kQ2xvc2UpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jYWxsKGNoaWxkRnMpO1xuICAgICAgICAgICAgICAgIHRoaXMubW91bnRJbnN0YW5jZXMuZGVsZXRlKHBhdGgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHJlc29sdmUocCkge1xuICAgICAgICByZXR1cm4gdGhpcy5iYXNlRnMucmVzb2x2ZShwKTtcbiAgICB9XG4gICAgcmVtYXBGZChtb3VudEZzLCBmZCkge1xuICAgICAgICBjb25zdCByZW1hcHBlZEZkID0gdGhpcy5uZXh0RmQrKyB8IHRoaXMubWFnaWM7XG4gICAgICAgIHRoaXMuZmRNYXAuc2V0KHJlbWFwcGVkRmQsIFttb3VudEZzLCBmZF0pO1xuICAgICAgICByZXR1cm4gcmVtYXBwZWRGZDtcbiAgICB9XG4gICAgYXN5bmMgb3BlblByb21pc2UocCwgZmxhZ3MsIG1vZGUpIHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMubWFrZUNhbGxQcm9taXNlKHAsIGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmJhc2VGcy5vcGVuUHJvbWlzZShwLCBmbGFncywgbW9kZSk7XG4gICAgICAgIH0sIGFzeW5jIChtb3VudEZzLCB7IHN1YlBhdGggfSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVtYXBGZChtb3VudEZzLCBhd2FpdCBtb3VudEZzLm9wZW5Qcm9taXNlKHN1YlBhdGgsIGZsYWdzLCBtb2RlKSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBvcGVuU3luYyhwLCBmbGFncywgbW9kZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5tYWtlQ2FsbFN5bmMocCwgKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYmFzZUZzLm9wZW5TeW5jKHAsIGZsYWdzLCBtb2RlKTtcbiAgICAgICAgfSwgKG1vdW50RnMsIHsgc3ViUGF0aCB9KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yZW1hcEZkKG1vdW50RnMsIG1vdW50RnMub3BlblN5bmMoc3ViUGF0aCwgZmxhZ3MsIG1vZGUpKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGFzeW5jIG9wZW5kaXJQcm9taXNlKHAsIG9wdHMpIHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMubWFrZUNhbGxQcm9taXNlKHAsIGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmJhc2VGcy5vcGVuZGlyUHJvbWlzZShwLCBvcHRzKTtcbiAgICAgICAgfSwgYXN5bmMgKG1vdW50RnMsIHsgc3ViUGF0aCB9KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gYXdhaXQgbW91bnRGcy5vcGVuZGlyUHJvbWlzZShzdWJQYXRoLCBvcHRzKTtcbiAgICAgICAgfSwge1xuICAgICAgICAgICAgcmVxdWlyZVN1YnBhdGg6IGZhbHNlLFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgb3BlbmRpclN5bmMocCwgb3B0cykge1xuICAgICAgICByZXR1cm4gdGhpcy5tYWtlQ2FsbFN5bmMocCwgKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYmFzZUZzLm9wZW5kaXJTeW5jKHAsIG9wdHMpO1xuICAgICAgICB9LCAobW91bnRGcywgeyBzdWJQYXRoIH0pID0+IHtcbiAgICAgICAgICAgIHJldHVybiBtb3VudEZzLm9wZW5kaXJTeW5jKHN1YlBhdGgsIG9wdHMpO1xuICAgICAgICB9LCB7XG4gICAgICAgICAgICByZXF1aXJlU3VicGF0aDogZmFsc2UsXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBhc3luYyByZWFkUHJvbWlzZShmZCwgYnVmZmVyLCBvZmZzZXQsIGxlbmd0aCwgcG9zaXRpb24pIHtcbiAgICAgICAgaWYgKChmZCAmIE1PVU5UX01BU0spICE9PSB0aGlzLm1hZ2ljKVxuICAgICAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYmFzZUZzLnJlYWRQcm9taXNlKGZkLCBidWZmZXIsIG9mZnNldCwgbGVuZ3RoLCBwb3NpdGlvbik7XG4gICAgICAgIGNvbnN0IGVudHJ5ID0gdGhpcy5mZE1hcC5nZXQoZmQpO1xuICAgICAgICBpZiAodHlwZW9mIGVudHJ5ID09PSBgdW5kZWZpbmVkYClcbiAgICAgICAgICAgIHRocm93IGVycm9ycy5FQkFERihgcmVhZGApO1xuICAgICAgICBjb25zdCBbbW91bnRGcywgcmVhbEZkXSA9IGVudHJ5O1xuICAgICAgICByZXR1cm4gYXdhaXQgbW91bnRGcy5yZWFkUHJvbWlzZShyZWFsRmQsIGJ1ZmZlciwgb2Zmc2V0LCBsZW5ndGgsIHBvc2l0aW9uKTtcbiAgICB9XG4gICAgcmVhZFN5bmMoZmQsIGJ1ZmZlciwgb2Zmc2V0LCBsZW5ndGgsIHBvc2l0aW9uKSB7XG4gICAgICAgIGlmICgoZmQgJiBNT1VOVF9NQVNLKSAhPT0gdGhpcy5tYWdpYylcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmJhc2VGcy5yZWFkU3luYyhmZCwgYnVmZmVyLCBvZmZzZXQsIGxlbmd0aCwgcG9zaXRpb24pO1xuICAgICAgICBjb25zdCBlbnRyeSA9IHRoaXMuZmRNYXAuZ2V0KGZkKTtcbiAgICAgICAgaWYgKHR5cGVvZiBlbnRyeSA9PT0gYHVuZGVmaW5lZGApXG4gICAgICAgICAgICB0aHJvdyBlcnJvcnMuRUJBREYoYHJlYWRTeW5jYCk7XG4gICAgICAgIGNvbnN0IFttb3VudEZzLCByZWFsRmRdID0gZW50cnk7XG4gICAgICAgIHJldHVybiBtb3VudEZzLnJlYWRTeW5jKHJlYWxGZCwgYnVmZmVyLCBvZmZzZXQsIGxlbmd0aCwgcG9zaXRpb24pO1xuICAgIH1cbiAgICBhc3luYyB3cml0ZVByb21pc2UoZmQsIGJ1ZmZlciwgb2Zmc2V0LCBsZW5ndGgsIHBvc2l0aW9uKSB7XG4gICAgICAgIGlmICgoZmQgJiBNT1VOVF9NQVNLKSAhPT0gdGhpcy5tYWdpYykge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBidWZmZXIgPT09IGBzdHJpbmdgKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYmFzZUZzLndyaXRlUHJvbWlzZShmZCwgYnVmZmVyLCBvZmZzZXQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYmFzZUZzLndyaXRlUHJvbWlzZShmZCwgYnVmZmVyLCBvZmZzZXQsIGxlbmd0aCwgcG9zaXRpb24pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGVudHJ5ID0gdGhpcy5mZE1hcC5nZXQoZmQpO1xuICAgICAgICBpZiAodHlwZW9mIGVudHJ5ID09PSBgdW5kZWZpbmVkYClcbiAgICAgICAgICAgIHRocm93IGVycm9ycy5FQkFERihgd3JpdGVgKTtcbiAgICAgICAgY29uc3QgW21vdW50RnMsIHJlYWxGZF0gPSBlbnRyeTtcbiAgICAgICAgaWYgKHR5cGVvZiBidWZmZXIgPT09IGBzdHJpbmdgKSB7XG4gICAgICAgICAgICByZXR1cm4gYXdhaXQgbW91bnRGcy53cml0ZVByb21pc2UocmVhbEZkLCBidWZmZXIsIG9mZnNldCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gYXdhaXQgbW91bnRGcy53cml0ZVByb21pc2UocmVhbEZkLCBidWZmZXIsIG9mZnNldCwgbGVuZ3RoLCBwb3NpdGlvbik7XG4gICAgICAgIH1cbiAgICB9XG4gICAgd3JpdGVTeW5jKGZkLCBidWZmZXIsIG9mZnNldCwgbGVuZ3RoLCBwb3NpdGlvbikge1xuICAgICAgICBpZiAoKGZkICYgTU9VTlRfTUFTSykgIT09IHRoaXMubWFnaWMpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgYnVmZmVyID09PSBgc3RyaW5nYCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmJhc2VGcy53cml0ZVN5bmMoZmQsIGJ1ZmZlciwgb2Zmc2V0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmJhc2VGcy53cml0ZVN5bmMoZmQsIGJ1ZmZlciwgb2Zmc2V0LCBsZW5ndGgsIHBvc2l0aW9uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb25zdCBlbnRyeSA9IHRoaXMuZmRNYXAuZ2V0KGZkKTtcbiAgICAgICAgaWYgKHR5cGVvZiBlbnRyeSA9PT0gYHVuZGVmaW5lZGApXG4gICAgICAgICAgICB0aHJvdyBlcnJvcnMuRUJBREYoYHdyaXRlU3luY2ApO1xuICAgICAgICBjb25zdCBbbW91bnRGcywgcmVhbEZkXSA9IGVudHJ5O1xuICAgICAgICBpZiAodHlwZW9mIGJ1ZmZlciA9PT0gYHN0cmluZ2ApIHtcbiAgICAgICAgICAgIHJldHVybiBtb3VudEZzLndyaXRlU3luYyhyZWFsRmQsIGJ1ZmZlciwgb2Zmc2V0KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBtb3VudEZzLndyaXRlU3luYyhyZWFsRmQsIGJ1ZmZlciwgb2Zmc2V0LCBsZW5ndGgsIHBvc2l0aW9uKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBhc3luYyBjbG9zZVByb21pc2UoZmQpIHtcbiAgICAgICAgaWYgKChmZCAmIE1PVU5UX01BU0spICE9PSB0aGlzLm1hZ2ljKVxuICAgICAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYmFzZUZzLmNsb3NlUHJvbWlzZShmZCk7XG4gICAgICAgIGNvbnN0IGVudHJ5ID0gdGhpcy5mZE1hcC5nZXQoZmQpO1xuICAgICAgICBpZiAodHlwZW9mIGVudHJ5ID09PSBgdW5kZWZpbmVkYClcbiAgICAgICAgICAgIHRocm93IGVycm9ycy5FQkFERihgY2xvc2VgKTtcbiAgICAgICAgdGhpcy5mZE1hcC5kZWxldGUoZmQpO1xuICAgICAgICBjb25zdCBbbW91bnRGcywgcmVhbEZkXSA9IGVudHJ5O1xuICAgICAgICByZXR1cm4gYXdhaXQgbW91bnRGcy5jbG9zZVByb21pc2UocmVhbEZkKTtcbiAgICB9XG4gICAgY2xvc2VTeW5jKGZkKSB7XG4gICAgICAgIGlmICgoZmQgJiBNT1VOVF9NQVNLKSAhPT0gdGhpcy5tYWdpYylcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmJhc2VGcy5jbG9zZVN5bmMoZmQpO1xuICAgICAgICBjb25zdCBlbnRyeSA9IHRoaXMuZmRNYXAuZ2V0KGZkKTtcbiAgICAgICAgaWYgKHR5cGVvZiBlbnRyeSA9PT0gYHVuZGVmaW5lZGApXG4gICAgICAgICAgICB0aHJvdyBlcnJvcnMuRUJBREYoYGNsb3NlU3luY2ApO1xuICAgICAgICB0aGlzLmZkTWFwLmRlbGV0ZShmZCk7XG4gICAgICAgIGNvbnN0IFttb3VudEZzLCByZWFsRmRdID0gZW50cnk7XG4gICAgICAgIHJldHVybiBtb3VudEZzLmNsb3NlU3luYyhyZWFsRmQpO1xuICAgIH1cbiAgICBjcmVhdGVSZWFkU3RyZWFtKHAsIG9wdHMpIHtcbiAgICAgICAgaWYgKHAgPT09IG51bGwpXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5iYXNlRnMuY3JlYXRlUmVhZFN0cmVhbShwLCBvcHRzKTtcbiAgICAgICAgcmV0dXJuIHRoaXMubWFrZUNhbGxTeW5jKHAsICgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmJhc2VGcy5jcmVhdGVSZWFkU3RyZWFtKHAsIG9wdHMpO1xuICAgICAgICB9LCAobW91bnRGcywgeyBhcmNoaXZlUGF0aCwgc3ViUGF0aCB9KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzdHJlYW0gPSBtb3VudEZzLmNyZWF0ZVJlYWRTdHJlYW0oc3ViUGF0aCwgb3B0cyk7XG4gICAgICAgICAgICAvLyBUaGlzIGlzIGEgdmVyeSBoYWNreSB3b3JrYXJvdW5kLiBgTW91bnRPcGVuRlNgIHNob3VsZG4ndCBoYXZlIHRvIHdvcmsgd2l0aCBgTmF0aXZlUGF0aGBzLlxuICAgICAgICAgICAgLy8gUmVmOiBodHRwczovL2dpdGh1Yi5jb20veWFybnBrZy9iZXJyeS9wdWxsLzM3NzRcbiAgICAgICAgICAgIC8vIFRPRE86IHRoaW5rIG9mIGEgYmV0dGVyIHNvbHV0aW9uXG4gICAgICAgICAgICBzdHJlYW0ucGF0aCA9IHBhdGhfMS5ucGF0aC5mcm9tUG9ydGFibGVQYXRoKHRoaXMucGF0aFV0aWxzLmpvaW4oYXJjaGl2ZVBhdGgsIHN1YlBhdGgpKTtcbiAgICAgICAgICAgIHJldHVybiBzdHJlYW07XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBjcmVhdGVXcml0ZVN0cmVhbShwLCBvcHRzKSB7XG4gICAgICAgIGlmIChwID09PSBudWxsKVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYmFzZUZzLmNyZWF0ZVdyaXRlU3RyZWFtKHAsIG9wdHMpO1xuICAgICAgICByZXR1cm4gdGhpcy5tYWtlQ2FsbFN5bmMocCwgKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYmFzZUZzLmNyZWF0ZVdyaXRlU3RyZWFtKHAsIG9wdHMpO1xuICAgICAgICB9LCAobW91bnRGcywgeyBzdWJQYXRoIH0pID0+IHtcbiAgICAgICAgICAgIHJldHVybiBtb3VudEZzLmNyZWF0ZVdyaXRlU3RyZWFtKHN1YlBhdGgsIG9wdHMpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgYXN5bmMgcmVhbHBhdGhQcm9taXNlKHApIHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMubWFrZUNhbGxQcm9taXNlKHAsIGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmJhc2VGcy5yZWFscGF0aFByb21pc2UocCk7XG4gICAgICAgIH0sIGFzeW5jIChtb3VudEZzLCB7IGFyY2hpdmVQYXRoLCBzdWJQYXRoIH0pID0+IHtcbiAgICAgICAgICAgIGxldCByZWFsQXJjaGl2ZVBhdGggPSB0aGlzLnJlYWxQYXRocy5nZXQoYXJjaGl2ZVBhdGgpO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiByZWFsQXJjaGl2ZVBhdGggPT09IGB1bmRlZmluZWRgKSB7XG4gICAgICAgICAgICAgICAgcmVhbEFyY2hpdmVQYXRoID0gYXdhaXQgdGhpcy5iYXNlRnMucmVhbHBhdGhQcm9taXNlKGFyY2hpdmVQYXRoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnJlYWxQYXRocy5zZXQoYXJjaGl2ZVBhdGgsIHJlYWxBcmNoaXZlUGF0aCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wYXRoVXRpbHMuam9pbihyZWFsQXJjaGl2ZVBhdGgsIHRoaXMucGF0aFV0aWxzLnJlbGF0aXZlKHBhdGhfMS5Qb3J0YWJsZVBhdGgucm9vdCwgYXdhaXQgbW91bnRGcy5yZWFscGF0aFByb21pc2Uoc3ViUGF0aCkpKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHJlYWxwYXRoU3luYyhwKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1ha2VDYWxsU3luYyhwLCAoKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5iYXNlRnMucmVhbHBhdGhTeW5jKHApO1xuICAgICAgICB9LCAobW91bnRGcywgeyBhcmNoaXZlUGF0aCwgc3ViUGF0aCB9KSA9PiB7XG4gICAgICAgICAgICBsZXQgcmVhbEFyY2hpdmVQYXRoID0gdGhpcy5yZWFsUGF0aHMuZ2V0KGFyY2hpdmVQYXRoKTtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgcmVhbEFyY2hpdmVQYXRoID09PSBgdW5kZWZpbmVkYCkge1xuICAgICAgICAgICAgICAgIHJlYWxBcmNoaXZlUGF0aCA9IHRoaXMuYmFzZUZzLnJlYWxwYXRoU3luYyhhcmNoaXZlUGF0aCk7XG4gICAgICAgICAgICAgICAgdGhpcy5yZWFsUGF0aHMuc2V0KGFyY2hpdmVQYXRoLCByZWFsQXJjaGl2ZVBhdGgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMucGF0aFV0aWxzLmpvaW4ocmVhbEFyY2hpdmVQYXRoLCB0aGlzLnBhdGhVdGlscy5yZWxhdGl2ZShwYXRoXzEuUG9ydGFibGVQYXRoLnJvb3QsIG1vdW50RnMucmVhbHBhdGhTeW5jKHN1YlBhdGgpKSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBhc3luYyBleGlzdHNQcm9taXNlKHApIHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMubWFrZUNhbGxQcm9taXNlKHAsIGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmJhc2VGcy5leGlzdHNQcm9taXNlKHApO1xuICAgICAgICB9LCBhc3luYyAobW91bnRGcywgeyBzdWJQYXRoIH0pID0+IHtcbiAgICAgICAgICAgIHJldHVybiBhd2FpdCBtb3VudEZzLmV4aXN0c1Byb21pc2Uoc3ViUGF0aCk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBleGlzdHNTeW5jKHApIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWFrZUNhbGxTeW5jKHAsICgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmJhc2VGcy5leGlzdHNTeW5jKHApO1xuICAgICAgICB9LCAobW91bnRGcywgeyBzdWJQYXRoIH0pID0+IHtcbiAgICAgICAgICAgIHJldHVybiBtb3VudEZzLmV4aXN0c1N5bmMoc3ViUGF0aCk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBhc3luYyBhY2Nlc3NQcm9taXNlKHAsIG1vZGUpIHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMubWFrZUNhbGxQcm9taXNlKHAsIGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmJhc2VGcy5hY2Nlc3NQcm9taXNlKHAsIG1vZGUpO1xuICAgICAgICB9LCBhc3luYyAobW91bnRGcywgeyBzdWJQYXRoIH0pID0+IHtcbiAgICAgICAgICAgIHJldHVybiBhd2FpdCBtb3VudEZzLmFjY2Vzc1Byb21pc2Uoc3ViUGF0aCwgbW9kZSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBhY2Nlc3NTeW5jKHAsIG1vZGUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWFrZUNhbGxTeW5jKHAsICgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmJhc2VGcy5hY2Nlc3NTeW5jKHAsIG1vZGUpO1xuICAgICAgICB9LCAobW91bnRGcywgeyBzdWJQYXRoIH0pID0+IHtcbiAgICAgICAgICAgIHJldHVybiBtb3VudEZzLmFjY2Vzc1N5bmMoc3ViUGF0aCwgbW9kZSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBhc3luYyBzdGF0UHJvbWlzZShwLCBvcHRzKSB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLm1ha2VDYWxsUHJvbWlzZShwLCBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5iYXNlRnMuc3RhdFByb21pc2UocCwgb3B0cyk7XG4gICAgICAgIH0sIGFzeW5jIChtb3VudEZzLCB7IHN1YlBhdGggfSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGF3YWl0IG1vdW50RnMuc3RhdFByb21pc2Uoc3ViUGF0aCwgb3B0cyk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBzdGF0U3luYyhwLCBvcHRzKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1ha2VDYWxsU3luYyhwLCAoKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5iYXNlRnMuc3RhdFN5bmMocCwgb3B0cyk7XG4gICAgICAgIH0sIChtb3VudEZzLCB7IHN1YlBhdGggfSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIG1vdW50RnMuc3RhdFN5bmMoc3ViUGF0aCwgb3B0cyk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBhc3luYyBmc3RhdFByb21pc2UoZmQsIG9wdHMpIHtcbiAgICAgICAgaWYgKChmZCAmIE1PVU5UX01BU0spICE9PSB0aGlzLm1hZ2ljKVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYmFzZUZzLmZzdGF0UHJvbWlzZShmZCwgb3B0cyk7XG4gICAgICAgIGNvbnN0IGVudHJ5ID0gdGhpcy5mZE1hcC5nZXQoZmQpO1xuICAgICAgICBpZiAodHlwZW9mIGVudHJ5ID09PSBgdW5kZWZpbmVkYClcbiAgICAgICAgICAgIHRocm93IGVycm9ycy5FQkFERihgZnN0YXRgKTtcbiAgICAgICAgY29uc3QgW21vdW50RnMsIHJlYWxGZF0gPSBlbnRyeTtcbiAgICAgICAgcmV0dXJuIG1vdW50RnMuZnN0YXRQcm9taXNlKHJlYWxGZCwgb3B0cyk7XG4gICAgfVxuICAgIGZzdGF0U3luYyhmZCwgb3B0cykge1xuICAgICAgICBpZiAoKGZkICYgTU9VTlRfTUFTSykgIT09IHRoaXMubWFnaWMpXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5iYXNlRnMuZnN0YXRTeW5jKGZkLCBvcHRzKTtcbiAgICAgICAgY29uc3QgZW50cnkgPSB0aGlzLmZkTWFwLmdldChmZCk7XG4gICAgICAgIGlmICh0eXBlb2YgZW50cnkgPT09IGB1bmRlZmluZWRgKVxuICAgICAgICAgICAgdGhyb3cgZXJyb3JzLkVCQURGKGBmc3RhdFN5bmNgKTtcbiAgICAgICAgY29uc3QgW21vdW50RnMsIHJlYWxGZF0gPSBlbnRyeTtcbiAgICAgICAgcmV0dXJuIG1vdW50RnMuZnN0YXRTeW5jKHJlYWxGZCwgb3B0cyk7XG4gICAgfVxuICAgIGFzeW5jIGxzdGF0UHJvbWlzZShwLCBvcHRzKSB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLm1ha2VDYWxsUHJvbWlzZShwLCBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5iYXNlRnMubHN0YXRQcm9taXNlKHAsIG9wdHMpO1xuICAgICAgICB9LCBhc3luYyAobW91bnRGcywgeyBzdWJQYXRoIH0pID0+IHtcbiAgICAgICAgICAgIHJldHVybiBhd2FpdCBtb3VudEZzLmxzdGF0UHJvbWlzZShzdWJQYXRoLCBvcHRzKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGxzdGF0U3luYyhwLCBvcHRzKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1ha2VDYWxsU3luYyhwLCAoKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5iYXNlRnMubHN0YXRTeW5jKHAsIG9wdHMpO1xuICAgICAgICB9LCAobW91bnRGcywgeyBzdWJQYXRoIH0pID0+IHtcbiAgICAgICAgICAgIHJldHVybiBtb3VudEZzLmxzdGF0U3luYyhzdWJQYXRoLCBvcHRzKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGFzeW5jIGZjaG1vZFByb21pc2UoZmQsIG1hc2spIHtcbiAgICAgICAgaWYgKChmZCAmIE1PVU5UX01BU0spICE9PSB0aGlzLm1hZ2ljKVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYmFzZUZzLmZjaG1vZFByb21pc2UoZmQsIG1hc2spO1xuICAgICAgICBjb25zdCBlbnRyeSA9IHRoaXMuZmRNYXAuZ2V0KGZkKTtcbiAgICAgICAgaWYgKHR5cGVvZiBlbnRyeSA9PT0gYHVuZGVmaW5lZGApXG4gICAgICAgICAgICB0aHJvdyBlcnJvcnMuRUJBREYoYGZjaG1vZGApO1xuICAgICAgICBjb25zdCBbbW91bnRGcywgcmVhbEZkXSA9IGVudHJ5O1xuICAgICAgICByZXR1cm4gbW91bnRGcy5mY2htb2RQcm9taXNlKHJlYWxGZCwgbWFzayk7XG4gICAgfVxuICAgIGZjaG1vZFN5bmMoZmQsIG1hc2spIHtcbiAgICAgICAgaWYgKChmZCAmIE1PVU5UX01BU0spICE9PSB0aGlzLm1hZ2ljKVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYmFzZUZzLmZjaG1vZFN5bmMoZmQsIG1hc2spO1xuICAgICAgICBjb25zdCBlbnRyeSA9IHRoaXMuZmRNYXAuZ2V0KGZkKTtcbiAgICAgICAgaWYgKHR5cGVvZiBlbnRyeSA9PT0gYHVuZGVmaW5lZGApXG4gICAgICAgICAgICB0aHJvdyBlcnJvcnMuRUJBREYoYGZjaG1vZFN5bmNgKTtcbiAgICAgICAgY29uc3QgW21vdW50RnMsIHJlYWxGZF0gPSBlbnRyeTtcbiAgICAgICAgcmV0dXJuIG1vdW50RnMuZmNobW9kU3luYyhyZWFsRmQsIG1hc2spO1xuICAgIH1cbiAgICBhc3luYyBjaG1vZFByb21pc2UocCwgbWFzaykge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5tYWtlQ2FsbFByb21pc2UocCwgYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYmFzZUZzLmNobW9kUHJvbWlzZShwLCBtYXNrKTtcbiAgICAgICAgfSwgYXN5bmMgKG1vdW50RnMsIHsgc3ViUGF0aCB9KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gYXdhaXQgbW91bnRGcy5jaG1vZFByb21pc2Uoc3ViUGF0aCwgbWFzayk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBjaG1vZFN5bmMocCwgbWFzaykge1xuICAgICAgICByZXR1cm4gdGhpcy5tYWtlQ2FsbFN5bmMocCwgKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYmFzZUZzLmNobW9kU3luYyhwLCBtYXNrKTtcbiAgICAgICAgfSwgKG1vdW50RnMsIHsgc3ViUGF0aCB9KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gbW91bnRGcy5jaG1vZFN5bmMoc3ViUGF0aCwgbWFzayk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBhc3luYyBmY2hvd25Qcm9taXNlKGZkLCB1aWQsIGdpZCkge1xuICAgICAgICBpZiAoKGZkICYgTU9VTlRfTUFTSykgIT09IHRoaXMubWFnaWMpXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5iYXNlRnMuZmNob3duUHJvbWlzZShmZCwgdWlkLCBnaWQpO1xuICAgICAgICBjb25zdCBlbnRyeSA9IHRoaXMuZmRNYXAuZ2V0KGZkKTtcbiAgICAgICAgaWYgKHR5cGVvZiBlbnRyeSA9PT0gYHVuZGVmaW5lZGApXG4gICAgICAgICAgICB0aHJvdyBlcnJvcnMuRUJBREYoYGZjaG93bmApO1xuICAgICAgICBjb25zdCBbemlwRnMsIHJlYWxGZF0gPSBlbnRyeTtcbiAgICAgICAgcmV0dXJuIHppcEZzLmZjaG93blByb21pc2UocmVhbEZkLCB1aWQsIGdpZCk7XG4gICAgfVxuICAgIGZjaG93blN5bmMoZmQsIHVpZCwgZ2lkKSB7XG4gICAgICAgIGlmICgoZmQgJiBNT1VOVF9NQVNLKSAhPT0gdGhpcy5tYWdpYylcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmJhc2VGcy5mY2hvd25TeW5jKGZkLCB1aWQsIGdpZCk7XG4gICAgICAgIGNvbnN0IGVudHJ5ID0gdGhpcy5mZE1hcC5nZXQoZmQpO1xuICAgICAgICBpZiAodHlwZW9mIGVudHJ5ID09PSBgdW5kZWZpbmVkYClcbiAgICAgICAgICAgIHRocm93IGVycm9ycy5FQkFERihgZmNob3duU3luY2ApO1xuICAgICAgICBjb25zdCBbemlwRnMsIHJlYWxGZF0gPSBlbnRyeTtcbiAgICAgICAgcmV0dXJuIHppcEZzLmZjaG93blN5bmMocmVhbEZkLCB1aWQsIGdpZCk7XG4gICAgfVxuICAgIGFzeW5jIGNob3duUHJvbWlzZShwLCB1aWQsIGdpZCkge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5tYWtlQ2FsbFByb21pc2UocCwgYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYmFzZUZzLmNob3duUHJvbWlzZShwLCB1aWQsIGdpZCk7XG4gICAgICAgIH0sIGFzeW5jIChtb3VudEZzLCB7IHN1YlBhdGggfSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGF3YWl0IG1vdW50RnMuY2hvd25Qcm9taXNlKHN1YlBhdGgsIHVpZCwgZ2lkKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGNob3duU3luYyhwLCB1aWQsIGdpZCkge1xuICAgICAgICByZXR1cm4gdGhpcy5tYWtlQ2FsbFN5bmMocCwgKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYmFzZUZzLmNob3duU3luYyhwLCB1aWQsIGdpZCk7XG4gICAgICAgIH0sIChtb3VudEZzLCB7IHN1YlBhdGggfSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIG1vdW50RnMuY2hvd25TeW5jKHN1YlBhdGgsIHVpZCwgZ2lkKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGFzeW5jIHJlbmFtZVByb21pc2Uob2xkUCwgbmV3UCkge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5tYWtlQ2FsbFByb21pc2Uob2xkUCwgYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMubWFrZUNhbGxQcm9taXNlKG5ld1AsIGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5iYXNlRnMucmVuYW1lUHJvbWlzZShvbGRQLCBuZXdQKTtcbiAgICAgICAgICAgIH0sIGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgICAgICB0aHJvdyBPYmplY3QuYXNzaWduKG5ldyBFcnJvcihgRUVYREVWOiBjcm9zcy1kZXZpY2UgbGluayBub3QgcGVybWl0dGVkYCksIHsgY29kZTogYEVFWERFVmAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSwgYXN5bmMgKG1vdW50RnNPLCB7IHN1YlBhdGg6IHN1YlBhdGhPIH0pID0+IHtcbiAgICAgICAgICAgIHJldHVybiBhd2FpdCB0aGlzLm1ha2VDYWxsUHJvbWlzZShuZXdQLCBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhyb3cgT2JqZWN0LmFzc2lnbihuZXcgRXJyb3IoYEVFWERFVjogY3Jvc3MtZGV2aWNlIGxpbmsgbm90IHBlcm1pdHRlZGApLCB7IGNvZGU6IGBFRVhERVZgIH0pO1xuICAgICAgICAgICAgfSwgYXN5bmMgKG1vdW50RnNOLCB7IHN1YlBhdGg6IHN1YlBhdGhOIH0pID0+IHtcbiAgICAgICAgICAgICAgICBpZiAobW91bnRGc08gIT09IG1vdW50RnNOKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IE9iamVjdC5hc3NpZ24obmV3IEVycm9yKGBFRVhERVY6IGNyb3NzLWRldmljZSBsaW5rIG5vdCBwZXJtaXR0ZWRgKSwgeyBjb2RlOiBgRUVYREVWYCB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhd2FpdCBtb3VudEZzTy5yZW5hbWVQcm9taXNlKHN1YlBhdGhPLCBzdWJQYXRoTik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICByZW5hbWVTeW5jKG9sZFAsIG5ld1ApIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWFrZUNhbGxTeW5jKG9sZFAsICgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm1ha2VDYWxsU3luYyhuZXdQLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuYmFzZUZzLnJlbmFtZVN5bmMob2xkUCwgbmV3UCk7XG4gICAgICAgICAgICB9LCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhyb3cgT2JqZWN0LmFzc2lnbihuZXcgRXJyb3IoYEVFWERFVjogY3Jvc3MtZGV2aWNlIGxpbmsgbm90IHBlcm1pdHRlZGApLCB7IGNvZGU6IGBFRVhERVZgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sIChtb3VudEZzTywgeyBzdWJQYXRoOiBzdWJQYXRoTyB9KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5tYWtlQ2FsbFN5bmMobmV3UCwgKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRocm93IE9iamVjdC5hc3NpZ24obmV3IEVycm9yKGBFRVhERVY6IGNyb3NzLWRldmljZSBsaW5rIG5vdCBwZXJtaXR0ZWRgKSwgeyBjb2RlOiBgRUVYREVWYCB9KTtcbiAgICAgICAgICAgIH0sIChtb3VudEZzTiwgeyBzdWJQYXRoOiBzdWJQYXRoTiB9KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKG1vdW50RnNPICE9PSBtb3VudEZzTikge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBPYmplY3QuYXNzaWduKG5ldyBFcnJvcihgRUVYREVWOiBjcm9zcy1kZXZpY2UgbGluayBub3QgcGVybWl0dGVkYCksIHsgY29kZTogYEVFWERFVmAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbW91bnRGc08ucmVuYW1lU3luYyhzdWJQYXRoTywgc3ViUGF0aE4pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgYXN5bmMgY29weUZpbGVQcm9taXNlKHNvdXJjZVAsIGRlc3RQLCBmbGFncyA9IDApIHtcbiAgICAgICAgY29uc3QgZmFsbGJhY2sgPSBhc3luYyAoc291cmNlRnMsIHNvdXJjZVAsIGRlc3RGcywgZGVzdFApID0+IHtcbiAgICAgICAgICAgIGlmICgoZmxhZ3MgJiBmc18xLmNvbnN0YW50cy5DT1BZRklMRV9GSUNMT05FX0ZPUkNFKSAhPT0gMClcbiAgICAgICAgICAgICAgICB0aHJvdyBPYmplY3QuYXNzaWduKG5ldyBFcnJvcihgRVhERVY6IGNyb3NzLWRldmljZSBjbG9uZSBub3QgcGVybWl0dGVkLCBjb3B5ZmlsZSAnJHtzb3VyY2VQfScgLT4gJHtkZXN0UH0nYCksIHsgY29kZTogYEVYREVWYCB9KTtcbiAgICAgICAgICAgIGlmICgoZmxhZ3MgJiBmc18xLmNvbnN0YW50cy5DT1BZRklMRV9FWENMKSAmJiBhd2FpdCB0aGlzLmV4aXN0c1Byb21pc2Uoc291cmNlUCkpXG4gICAgICAgICAgICAgICAgdGhyb3cgT2JqZWN0LmFzc2lnbihuZXcgRXJyb3IoYEVFWElTVDogZmlsZSBhbHJlYWR5IGV4aXN0cywgY29weWZpbGUgJyR7c291cmNlUH0nIC0+ICcke2Rlc3RQfSdgKSwgeyBjb2RlOiBgRUVYSVNUYCB9KTtcbiAgICAgICAgICAgIGxldCBjb250ZW50O1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBjb250ZW50ID0gYXdhaXQgc291cmNlRnMucmVhZEZpbGVQcm9taXNlKHNvdXJjZVApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgT2JqZWN0LmFzc2lnbihuZXcgRXJyb3IoYEVJTlZBTDogaW52YWxpZCBhcmd1bWVudCwgY29weWZpbGUgJyR7c291cmNlUH0nIC0+ICcke2Rlc3RQfSdgKSwgeyBjb2RlOiBgRUlOVkFMYCB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGF3YWl0IGRlc3RGcy53cml0ZUZpbGVQcm9taXNlKGRlc3RQLCBjb250ZW50KTtcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMubWFrZUNhbGxQcm9taXNlKHNvdXJjZVAsIGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBhd2FpdCB0aGlzLm1ha2VDYWxsUHJvbWlzZShkZXN0UCwgYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmJhc2VGcy5jb3B5RmlsZVByb21pc2Uoc291cmNlUCwgZGVzdFAsIGZsYWdzKTtcbiAgICAgICAgICAgIH0sIGFzeW5jIChtb3VudEZzRCwgeyBzdWJQYXRoOiBzdWJQYXRoRCB9KSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGF3YWl0IGZhbGxiYWNrKHRoaXMuYmFzZUZzLCBzb3VyY2VQLCBtb3VudEZzRCwgc3ViUGF0aEQpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sIGFzeW5jIChtb3VudEZzUywgeyBzdWJQYXRoOiBzdWJQYXRoUyB9KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5tYWtlQ2FsbFByb21pc2UoZGVzdFAsIGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYXdhaXQgZmFsbGJhY2sobW91bnRGc1MsIHN1YlBhdGhTLCB0aGlzLmJhc2VGcywgZGVzdFApO1xuICAgICAgICAgICAgfSwgYXN5bmMgKG1vdW50RnNELCB7IHN1YlBhdGg6IHN1YlBhdGhEIH0pID0+IHtcbiAgICAgICAgICAgICAgICBpZiAobW91bnRGc1MgIT09IG1vdW50RnNEKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhd2FpdCBmYWxsYmFjayhtb3VudEZzUywgc3ViUGF0aFMsIG1vdW50RnNELCBzdWJQYXRoRCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYXdhaXQgbW91bnRGc1MuY29weUZpbGVQcm9taXNlKHN1YlBhdGhTLCBzdWJQYXRoRCwgZmxhZ3MpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgY29weUZpbGVTeW5jKHNvdXJjZVAsIGRlc3RQLCBmbGFncyA9IDApIHtcbiAgICAgICAgY29uc3QgZmFsbGJhY2sgPSAoc291cmNlRnMsIHNvdXJjZVAsIGRlc3RGcywgZGVzdFApID0+IHtcbiAgICAgICAgICAgIGlmICgoZmxhZ3MgJiBmc18xLmNvbnN0YW50cy5DT1BZRklMRV9GSUNMT05FX0ZPUkNFKSAhPT0gMClcbiAgICAgICAgICAgICAgICB0aHJvdyBPYmplY3QuYXNzaWduKG5ldyBFcnJvcihgRVhERVY6IGNyb3NzLWRldmljZSBjbG9uZSBub3QgcGVybWl0dGVkLCBjb3B5ZmlsZSAnJHtzb3VyY2VQfScgLT4gJHtkZXN0UH0nYCksIHsgY29kZTogYEVYREVWYCB9KTtcbiAgICAgICAgICAgIGlmICgoZmxhZ3MgJiBmc18xLmNvbnN0YW50cy5DT1BZRklMRV9FWENMKSAmJiB0aGlzLmV4aXN0c1N5bmMoc291cmNlUCkpXG4gICAgICAgICAgICAgICAgdGhyb3cgT2JqZWN0LmFzc2lnbihuZXcgRXJyb3IoYEVFWElTVDogZmlsZSBhbHJlYWR5IGV4aXN0cywgY29weWZpbGUgJyR7c291cmNlUH0nIC0+ICcke2Rlc3RQfSdgKSwgeyBjb2RlOiBgRUVYSVNUYCB9KTtcbiAgICAgICAgICAgIGxldCBjb250ZW50O1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBjb250ZW50ID0gc291cmNlRnMucmVhZEZpbGVTeW5jKHNvdXJjZVApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgT2JqZWN0LmFzc2lnbihuZXcgRXJyb3IoYEVJTlZBTDogaW52YWxpZCBhcmd1bWVudCwgY29weWZpbGUgJyR7c291cmNlUH0nIC0+ICcke2Rlc3RQfSdgKSwgeyBjb2RlOiBgRUlOVkFMYCB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlc3RGcy53cml0ZUZpbGVTeW5jKGRlc3RQLCBjb250ZW50KTtcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIHRoaXMubWFrZUNhbGxTeW5jKHNvdXJjZVAsICgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm1ha2VDYWxsU3luYyhkZXN0UCwgKCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmJhc2VGcy5jb3B5RmlsZVN5bmMoc291cmNlUCwgZGVzdFAsIGZsYWdzKTtcbiAgICAgICAgICAgIH0sIChtb3VudEZzRCwgeyBzdWJQYXRoOiBzdWJQYXRoRCB9KSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbGxiYWNrKHRoaXMuYmFzZUZzLCBzb3VyY2VQLCBtb3VudEZzRCwgc3ViUGF0aEQpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sIChtb3VudEZzUywgeyBzdWJQYXRoOiBzdWJQYXRoUyB9KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5tYWtlQ2FsbFN5bmMoZGVzdFAsICgpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsbGJhY2sobW91bnRGc1MsIHN1YlBhdGhTLCB0aGlzLmJhc2VGcywgZGVzdFApO1xuICAgICAgICAgICAgfSwgKG1vdW50RnNELCB7IHN1YlBhdGg6IHN1YlBhdGhEIH0pID0+IHtcbiAgICAgICAgICAgICAgICBpZiAobW91bnRGc1MgIT09IG1vdW50RnNEKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxsYmFjayhtb3VudEZzUywgc3ViUGF0aFMsIG1vdW50RnNELCBzdWJQYXRoRCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbW91bnRGc1MuY29weUZpbGVTeW5jKHN1YlBhdGhTLCBzdWJQYXRoRCwgZmxhZ3MpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgYXN5bmMgYXBwZW5kRmlsZVByb21pc2UocCwgY29udGVudCwgb3B0cykge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5tYWtlQ2FsbFByb21pc2UocCwgYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYmFzZUZzLmFwcGVuZEZpbGVQcm9taXNlKHAsIGNvbnRlbnQsIG9wdHMpO1xuICAgICAgICB9LCBhc3luYyAobW91bnRGcywgeyBzdWJQYXRoIH0pID0+IHtcbiAgICAgICAgICAgIHJldHVybiBhd2FpdCBtb3VudEZzLmFwcGVuZEZpbGVQcm9taXNlKHN1YlBhdGgsIGNvbnRlbnQsIG9wdHMpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgYXBwZW5kRmlsZVN5bmMocCwgY29udGVudCwgb3B0cykge1xuICAgICAgICByZXR1cm4gdGhpcy5tYWtlQ2FsbFN5bmMocCwgKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYmFzZUZzLmFwcGVuZEZpbGVTeW5jKHAsIGNvbnRlbnQsIG9wdHMpO1xuICAgICAgICB9LCAobW91bnRGcywgeyBzdWJQYXRoIH0pID0+IHtcbiAgICAgICAgICAgIHJldHVybiBtb3VudEZzLmFwcGVuZEZpbGVTeW5jKHN1YlBhdGgsIGNvbnRlbnQsIG9wdHMpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgYXN5bmMgd3JpdGVGaWxlUHJvbWlzZShwLCBjb250ZW50LCBvcHRzKSB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLm1ha2VDYWxsUHJvbWlzZShwLCBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5iYXNlRnMud3JpdGVGaWxlUHJvbWlzZShwLCBjb250ZW50LCBvcHRzKTtcbiAgICAgICAgfSwgYXN5bmMgKG1vdW50RnMsIHsgc3ViUGF0aCB9KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gYXdhaXQgbW91bnRGcy53cml0ZUZpbGVQcm9taXNlKHN1YlBhdGgsIGNvbnRlbnQsIG9wdHMpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgd3JpdGVGaWxlU3luYyhwLCBjb250ZW50LCBvcHRzKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1ha2VDYWxsU3luYyhwLCAoKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5iYXNlRnMud3JpdGVGaWxlU3luYyhwLCBjb250ZW50LCBvcHRzKTtcbiAgICAgICAgfSwgKG1vdW50RnMsIHsgc3ViUGF0aCB9KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gbW91bnRGcy53cml0ZUZpbGVTeW5jKHN1YlBhdGgsIGNvbnRlbnQsIG9wdHMpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgYXN5bmMgdW5saW5rUHJvbWlzZShwKSB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLm1ha2VDYWxsUHJvbWlzZShwLCBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5iYXNlRnMudW5saW5rUHJvbWlzZShwKTtcbiAgICAgICAgfSwgYXN5bmMgKG1vdW50RnMsIHsgc3ViUGF0aCB9KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gYXdhaXQgbW91bnRGcy51bmxpbmtQcm9taXNlKHN1YlBhdGgpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgdW5saW5rU3luYyhwKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1ha2VDYWxsU3luYyhwLCAoKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5iYXNlRnMudW5saW5rU3luYyhwKTtcbiAgICAgICAgfSwgKG1vdW50RnMsIHsgc3ViUGF0aCB9KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gbW91bnRGcy51bmxpbmtTeW5jKHN1YlBhdGgpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgYXN5bmMgdXRpbWVzUHJvbWlzZShwLCBhdGltZSwgbXRpbWUpIHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMubWFrZUNhbGxQcm9taXNlKHAsIGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmJhc2VGcy51dGltZXNQcm9taXNlKHAsIGF0aW1lLCBtdGltZSk7XG4gICAgICAgIH0sIGFzeW5jIChtb3VudEZzLCB7IHN1YlBhdGggfSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGF3YWl0IG1vdW50RnMudXRpbWVzUHJvbWlzZShzdWJQYXRoLCBhdGltZSwgbXRpbWUpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgdXRpbWVzU3luYyhwLCBhdGltZSwgbXRpbWUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWFrZUNhbGxTeW5jKHAsICgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmJhc2VGcy51dGltZXNTeW5jKHAsIGF0aW1lLCBtdGltZSk7XG4gICAgICAgIH0sIChtb3VudEZzLCB7IHN1YlBhdGggfSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIG1vdW50RnMudXRpbWVzU3luYyhzdWJQYXRoLCBhdGltZSwgbXRpbWUpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgYXN5bmMgbHV0aW1lc1Byb21pc2UocCwgYXRpbWUsIG10aW1lKSB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLm1ha2VDYWxsUHJvbWlzZShwLCBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5iYXNlRnMubHV0aW1lc1Byb21pc2UocCwgYXRpbWUsIG10aW1lKTtcbiAgICAgICAgfSwgYXN5bmMgKG1vdW50RnMsIHsgc3ViUGF0aCB9KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gYXdhaXQgbW91bnRGcy5sdXRpbWVzUHJvbWlzZShzdWJQYXRoLCBhdGltZSwgbXRpbWUpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgbHV0aW1lc1N5bmMocCwgYXRpbWUsIG10aW1lKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1ha2VDYWxsU3luYyhwLCAoKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5iYXNlRnMubHV0aW1lc1N5bmMocCwgYXRpbWUsIG10aW1lKTtcbiAgICAgICAgfSwgKG1vdW50RnMsIHsgc3ViUGF0aCB9KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gbW91bnRGcy5sdXRpbWVzU3luYyhzdWJQYXRoLCBhdGltZSwgbXRpbWUpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgYXN5bmMgbWtkaXJQcm9taXNlKHAsIG9wdHMpIHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMubWFrZUNhbGxQcm9taXNlKHAsIGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmJhc2VGcy5ta2RpclByb21pc2UocCwgb3B0cyk7XG4gICAgICAgIH0sIGFzeW5jIChtb3VudEZzLCB7IHN1YlBhdGggfSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGF3YWl0IG1vdW50RnMubWtkaXJQcm9taXNlKHN1YlBhdGgsIG9wdHMpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgbWtkaXJTeW5jKHAsIG9wdHMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWFrZUNhbGxTeW5jKHAsICgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmJhc2VGcy5ta2RpclN5bmMocCwgb3B0cyk7XG4gICAgICAgIH0sIChtb3VudEZzLCB7IHN1YlBhdGggfSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIG1vdW50RnMubWtkaXJTeW5jKHN1YlBhdGgsIG9wdHMpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgYXN5bmMgcm1kaXJQcm9taXNlKHAsIG9wdHMpIHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMubWFrZUNhbGxQcm9taXNlKHAsIGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmJhc2VGcy5ybWRpclByb21pc2UocCwgb3B0cyk7XG4gICAgICAgIH0sIGFzeW5jIChtb3VudEZzLCB7IHN1YlBhdGggfSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGF3YWl0IG1vdW50RnMucm1kaXJQcm9taXNlKHN1YlBhdGgsIG9wdHMpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgcm1kaXJTeW5jKHAsIG9wdHMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWFrZUNhbGxTeW5jKHAsICgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmJhc2VGcy5ybWRpclN5bmMocCwgb3B0cyk7XG4gICAgICAgIH0sIChtb3VudEZzLCB7IHN1YlBhdGggfSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIG1vdW50RnMucm1kaXJTeW5jKHN1YlBhdGgsIG9wdHMpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgYXN5bmMgbGlua1Byb21pc2UoZXhpc3RpbmdQLCBuZXdQKSB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLm1ha2VDYWxsUHJvbWlzZShuZXdQLCBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5iYXNlRnMubGlua1Byb21pc2UoZXhpc3RpbmdQLCBuZXdQKTtcbiAgICAgICAgfSwgYXN5bmMgKG1vdW50RnMsIHsgc3ViUGF0aCB9KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gYXdhaXQgbW91bnRGcy5saW5rUHJvbWlzZShleGlzdGluZ1AsIHN1YlBhdGgpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgbGlua1N5bmMoZXhpc3RpbmdQLCBuZXdQKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1ha2VDYWxsU3luYyhuZXdQLCAoKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5iYXNlRnMubGlua1N5bmMoZXhpc3RpbmdQLCBuZXdQKTtcbiAgICAgICAgfSwgKG1vdW50RnMsIHsgc3ViUGF0aCB9KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gbW91bnRGcy5saW5rU3luYyhleGlzdGluZ1AsIHN1YlBhdGgpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgYXN5bmMgc3ltbGlua1Byb21pc2UodGFyZ2V0LCBwLCB0eXBlKSB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLm1ha2VDYWxsUHJvbWlzZShwLCBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5iYXNlRnMuc3ltbGlua1Byb21pc2UodGFyZ2V0LCBwLCB0eXBlKTtcbiAgICAgICAgfSwgYXN5bmMgKG1vdW50RnMsIHsgc3ViUGF0aCB9KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gYXdhaXQgbW91bnRGcy5zeW1saW5rUHJvbWlzZSh0YXJnZXQsIHN1YlBhdGgpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgc3ltbGlua1N5bmModGFyZ2V0LCBwLCB0eXBlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1ha2VDYWxsU3luYyhwLCAoKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5iYXNlRnMuc3ltbGlua1N5bmModGFyZ2V0LCBwLCB0eXBlKTtcbiAgICAgICAgfSwgKG1vdW50RnMsIHsgc3ViUGF0aCB9KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gbW91bnRGcy5zeW1saW5rU3luYyh0YXJnZXQsIHN1YlBhdGgpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgYXN5bmMgcmVhZEZpbGVQcm9taXNlKHAsIGVuY29kaW5nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1ha2VDYWxsUHJvbWlzZShwLCBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5iYXNlRnMucmVhZEZpbGVQcm9taXNlKHAsIGVuY29kaW5nKTtcbiAgICAgICAgfSwgYXN5bmMgKG1vdW50RnMsIHsgc3ViUGF0aCB9KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gYXdhaXQgbW91bnRGcy5yZWFkRmlsZVByb21pc2Uoc3ViUGF0aCwgZW5jb2RpbmcpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgcmVhZEZpbGVTeW5jKHAsIGVuY29kaW5nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1ha2VDYWxsU3luYyhwLCAoKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5iYXNlRnMucmVhZEZpbGVTeW5jKHAsIGVuY29kaW5nKTtcbiAgICAgICAgfSwgKG1vdW50RnMsIHsgc3ViUGF0aCB9KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gbW91bnRGcy5yZWFkRmlsZVN5bmMoc3ViUGF0aCwgZW5jb2RpbmcpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgYXN5bmMgcmVhZGRpclByb21pc2UocCwgb3B0cykge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5tYWtlQ2FsbFByb21pc2UocCwgYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYmFzZUZzLnJlYWRkaXJQcm9taXNlKHAsIG9wdHMpO1xuICAgICAgICB9LCBhc3luYyAobW91bnRGcywgeyBzdWJQYXRoIH0pID0+IHtcbiAgICAgICAgICAgIHJldHVybiBhd2FpdCBtb3VudEZzLnJlYWRkaXJQcm9taXNlKHN1YlBhdGgsIG9wdHMpO1xuICAgICAgICB9LCB7XG4gICAgICAgICAgICByZXF1aXJlU3VicGF0aDogZmFsc2UsXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICByZWFkZGlyU3luYyhwLCBvcHRzKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1ha2VDYWxsU3luYyhwLCAoKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5iYXNlRnMucmVhZGRpclN5bmMocCwgb3B0cyk7XG4gICAgICAgIH0sIChtb3VudEZzLCB7IHN1YlBhdGggfSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIG1vdW50RnMucmVhZGRpclN5bmMoc3ViUGF0aCwgb3B0cyk7XG4gICAgICAgIH0sIHtcbiAgICAgICAgICAgIHJlcXVpcmVTdWJwYXRoOiBmYWxzZSxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGFzeW5jIHJlYWRsaW5rUHJvbWlzZShwKSB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLm1ha2VDYWxsUHJvbWlzZShwLCBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5iYXNlRnMucmVhZGxpbmtQcm9taXNlKHApO1xuICAgICAgICB9LCBhc3luYyAobW91bnRGcywgeyBzdWJQYXRoIH0pID0+IHtcbiAgICAgICAgICAgIHJldHVybiBhd2FpdCBtb3VudEZzLnJlYWRsaW5rUHJvbWlzZShzdWJQYXRoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHJlYWRsaW5rU3luYyhwKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1ha2VDYWxsU3luYyhwLCAoKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5iYXNlRnMucmVhZGxpbmtTeW5jKHApO1xuICAgICAgICB9LCAobW91bnRGcywgeyBzdWJQYXRoIH0pID0+IHtcbiAgICAgICAgICAgIHJldHVybiBtb3VudEZzLnJlYWRsaW5rU3luYyhzdWJQYXRoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGFzeW5jIHRydW5jYXRlUHJvbWlzZShwLCBsZW4pIHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMubWFrZUNhbGxQcm9taXNlKHAsIGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmJhc2VGcy50cnVuY2F0ZVByb21pc2UocCwgbGVuKTtcbiAgICAgICAgfSwgYXN5bmMgKG1vdW50RnMsIHsgc3ViUGF0aCB9KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gYXdhaXQgbW91bnRGcy50cnVuY2F0ZVByb21pc2Uoc3ViUGF0aCwgbGVuKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHRydW5jYXRlU3luYyhwLCBsZW4pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWFrZUNhbGxTeW5jKHAsICgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmJhc2VGcy50cnVuY2F0ZVN5bmMocCwgbGVuKTtcbiAgICAgICAgfSwgKG1vdW50RnMsIHsgc3ViUGF0aCB9KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gbW91bnRGcy50cnVuY2F0ZVN5bmMoc3ViUGF0aCwgbGVuKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGFzeW5jIGZ0cnVuY2F0ZVByb21pc2UoZmQsIGxlbikge1xuICAgICAgICBpZiAoKGZkICYgTU9VTlRfTUFTSykgIT09IHRoaXMubWFnaWMpXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5iYXNlRnMuZnRydW5jYXRlUHJvbWlzZShmZCwgbGVuKTtcbiAgICAgICAgY29uc3QgZW50cnkgPSB0aGlzLmZkTWFwLmdldChmZCk7XG4gICAgICAgIGlmICh0eXBlb2YgZW50cnkgPT09IGB1bmRlZmluZWRgKVxuICAgICAgICAgICAgdGhyb3cgZXJyb3JzLkVCQURGKGBmdHJ1bmNhdGVgKTtcbiAgICAgICAgY29uc3QgW21vdW50RnMsIHJlYWxGZF0gPSBlbnRyeTtcbiAgICAgICAgcmV0dXJuIG1vdW50RnMuZnRydW5jYXRlUHJvbWlzZShyZWFsRmQsIGxlbik7XG4gICAgfVxuICAgIGZ0cnVuY2F0ZVN5bmMoZmQsIGxlbikge1xuICAgICAgICBpZiAoKGZkICYgTU9VTlRfTUFTSykgIT09IHRoaXMubWFnaWMpXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5iYXNlRnMuZnRydW5jYXRlU3luYyhmZCwgbGVuKTtcbiAgICAgICAgY29uc3QgZW50cnkgPSB0aGlzLmZkTWFwLmdldChmZCk7XG4gICAgICAgIGlmICh0eXBlb2YgZW50cnkgPT09IGB1bmRlZmluZWRgKVxuICAgICAgICAgICAgdGhyb3cgZXJyb3JzLkVCQURGKGBmdHJ1bmNhdGVTeW5jYCk7XG4gICAgICAgIGNvbnN0IFttb3VudEZzLCByZWFsRmRdID0gZW50cnk7XG4gICAgICAgIHJldHVybiBtb3VudEZzLmZ0cnVuY2F0ZVN5bmMocmVhbEZkLCBsZW4pO1xuICAgIH1cbiAgICB3YXRjaChwLCBhLCBiKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1ha2VDYWxsU3luYyhwLCAoKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5iYXNlRnMud2F0Y2gocCwgXG4gICAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgICAgICAgICBhLCBiKTtcbiAgICAgICAgfSwgKG1vdW50RnMsIHsgc3ViUGF0aCB9KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gbW91bnRGcy53YXRjaChzdWJQYXRoLCBcbiAgICAgICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICAgICAgICAgIGEsIGIpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgd2F0Y2hGaWxlKHAsIGEsIGIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWFrZUNhbGxTeW5jKHAsICgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmJhc2VGcy53YXRjaEZpbGUocCwgXG4gICAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgICAgICAgICBhLCBiKTtcbiAgICAgICAgfSwgKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuICgwLCB3YXRjaEZpbGVfMS53YXRjaEZpbGUpKHRoaXMsIHAsIGEsIGIpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgdW53YXRjaEZpbGUocCwgY2IpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWFrZUNhbGxTeW5jKHAsICgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmJhc2VGcy51bndhdGNoRmlsZShwLCBjYik7XG4gICAgICAgIH0sICgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiAoMCwgd2F0Y2hGaWxlXzEudW53YXRjaEZpbGUpKHRoaXMsIHAsIGNiKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGFzeW5jIG1ha2VDYWxsUHJvbWlzZShwLCBkaXNjYXJkLCBhY2NlcHQsIHsgcmVxdWlyZVN1YnBhdGggPSB0cnVlIH0gPSB7fSkge1xuICAgICAgICBpZiAodHlwZW9mIHAgIT09IGBzdHJpbmdgKVxuICAgICAgICAgICAgcmV0dXJuIGF3YWl0IGRpc2NhcmQoKTtcbiAgICAgICAgY29uc3Qgbm9ybWFsaXplZFAgPSB0aGlzLnJlc29sdmUocCk7XG4gICAgICAgIGNvbnN0IG1vdW50SW5mbyA9IHRoaXMuZmluZE1vdW50KG5vcm1hbGl6ZWRQKTtcbiAgICAgICAgaWYgKCFtb3VudEluZm8pXG4gICAgICAgICAgICByZXR1cm4gYXdhaXQgZGlzY2FyZCgpO1xuICAgICAgICBpZiAocmVxdWlyZVN1YnBhdGggJiYgbW91bnRJbmZvLnN1YlBhdGggPT09IGAvYClcbiAgICAgICAgICAgIHJldHVybiBhd2FpdCBkaXNjYXJkKCk7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmdldE1vdW50UHJvbWlzZShtb3VudEluZm8uYXJjaGl2ZVBhdGgsIGFzeW5jIChtb3VudEZzKSA9PiBhd2FpdCBhY2NlcHQobW91bnRGcywgbW91bnRJbmZvKSk7XG4gICAgfVxuICAgIG1ha2VDYWxsU3luYyhwLCBkaXNjYXJkLCBhY2NlcHQsIHsgcmVxdWlyZVN1YnBhdGggPSB0cnVlIH0gPSB7fSkge1xuICAgICAgICBpZiAodHlwZW9mIHAgIT09IGBzdHJpbmdgKVxuICAgICAgICAgICAgcmV0dXJuIGRpc2NhcmQoKTtcbiAgICAgICAgY29uc3Qgbm9ybWFsaXplZFAgPSB0aGlzLnJlc29sdmUocCk7XG4gICAgICAgIGNvbnN0IG1vdW50SW5mbyA9IHRoaXMuZmluZE1vdW50KG5vcm1hbGl6ZWRQKTtcbiAgICAgICAgaWYgKCFtb3VudEluZm8pXG4gICAgICAgICAgICByZXR1cm4gZGlzY2FyZCgpO1xuICAgICAgICBpZiAocmVxdWlyZVN1YnBhdGggJiYgbW91bnRJbmZvLnN1YlBhdGggPT09IGAvYClcbiAgICAgICAgICAgIHJldHVybiBkaXNjYXJkKCk7XG4gICAgICAgIHJldHVybiB0aGlzLmdldE1vdW50U3luYyhtb3VudEluZm8uYXJjaGl2ZVBhdGgsIG1vdW50RnMgPT4gYWNjZXB0KG1vdW50RnMsIG1vdW50SW5mbykpO1xuICAgIH1cbiAgICBmaW5kTW91bnQocCkge1xuICAgICAgICBpZiAodGhpcy5maWx0ZXIgJiYgIXRoaXMuZmlsdGVyLnRlc3QocCkpXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgbGV0IGZpbGVQYXRoID0gYGA7XG4gICAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgICAgICBjb25zdCBwYXRoUGFydFdpdGhBcmNoaXZlID0gcC5zdWJzdHJpbmcoZmlsZVBhdGgubGVuZ3RoKTtcbiAgICAgICAgICAgIGNvbnN0IG1vdW50UG9pbnQgPSB0aGlzLmdldE1vdW50UG9pbnQocGF0aFBhcnRXaXRoQXJjaGl2ZSwgZmlsZVBhdGgpO1xuICAgICAgICAgICAgaWYgKCFtb3VudFBvaW50KVxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgZmlsZVBhdGggPSB0aGlzLnBhdGhVdGlscy5qb2luKGZpbGVQYXRoLCBtb3VudFBvaW50KTtcbiAgICAgICAgICAgIGlmICghdGhpcy5pc01vdW50LmhhcyhmaWxlUGF0aCkpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5ub3RNb3VudC5oYXMoZmlsZVBhdGgpKVxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuYmFzZUZzLmxzdGF0U3luYyhmaWxlUGF0aCkuaXNGaWxlKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm90TW91bnQuYWRkKGZpbGVQYXRoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhdGNoIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuaXNNb3VudC5hZGQoZmlsZVBhdGgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBhcmNoaXZlUGF0aDogZmlsZVBhdGgsXG4gICAgICAgICAgICAgICAgc3ViUGF0aDogdGhpcy5wYXRoVXRpbHMuam9pbihwYXRoXzEuUG9ydGFibGVQYXRoLnJvb3QsIHAuc3Vic3RyaW5nKGZpbGVQYXRoLmxlbmd0aCkpLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBsaW1pdE9wZW5GaWxlcyhtYXgpIHtcbiAgICAgICAgdmFyIF9hLCBfYiwgX2M7XG4gICAgICAgIGlmICh0aGlzLm1vdW50SW5zdGFuY2VzID09PSBudWxsKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgICAgICBsZXQgbmV4dEV4cGlyZXNBdCA9IG5vdyArIHRoaXMubWF4QWdlO1xuICAgICAgICBsZXQgY2xvc2VDb3VudCA9IG1heCA9PT0gbnVsbCA/IDAgOiB0aGlzLm1vdW50SW5zdGFuY2VzLnNpemUgLSBtYXg7XG4gICAgICAgIGZvciAoY29uc3QgW3BhdGgsIHsgY2hpbGRGcywgZXhwaXJlc0F0LCByZWZDb3VudCB9XSBvZiB0aGlzLm1vdW50SW5zdGFuY2VzLmVudHJpZXMoKSkge1xuICAgICAgICAgICAgaWYgKHJlZkNvdW50ICE9PSAwIHx8ICgoX2EgPSBjaGlsZEZzLmhhc09wZW5GaWxlSGFuZGxlcykgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmNhbGwoY2hpbGRGcykpKSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChub3cgPj0gZXhwaXJlc0F0KSB7XG4gICAgICAgICAgICAgICAgKF9iID0gY2hpbGRGcy5zYXZlQW5kQ2xvc2UpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5jYWxsKGNoaWxkRnMpO1xuICAgICAgICAgICAgICAgIHRoaXMubW91bnRJbnN0YW5jZXMuZGVsZXRlKHBhdGgpO1xuICAgICAgICAgICAgICAgIGNsb3NlQ291bnQgLT0gMTtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKG1heCA9PT0gbnVsbCB8fCBjbG9zZUNvdW50IDw9IDApIHtcbiAgICAgICAgICAgICAgICBuZXh0RXhwaXJlc0F0ID0gZXhwaXJlc0F0O1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgKF9jID0gY2hpbGRGcy5zYXZlQW5kQ2xvc2UpID09PSBudWxsIHx8IF9jID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYy5jYWxsKGNoaWxkRnMpO1xuICAgICAgICAgICAgdGhpcy5tb3VudEluc3RhbmNlcy5kZWxldGUocGF0aCk7XG4gICAgICAgICAgICBjbG9zZUNvdW50IC09IDE7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMubGltaXRPcGVuRmlsZXNUaW1lb3V0ID09PSBudWxsICYmICgobWF4ID09PSBudWxsICYmIHRoaXMubW91bnRJbnN0YW5jZXMuc2l6ZSA+IDApIHx8IG1heCAhPT0gbnVsbCkgJiYgaXNGaW5pdGUobmV4dEV4cGlyZXNBdCkpIHtcbiAgICAgICAgICAgIHRoaXMubGltaXRPcGVuRmlsZXNUaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5saW1pdE9wZW5GaWxlc1RpbWVvdXQgPSBudWxsO1xuICAgICAgICAgICAgICAgIHRoaXMubGltaXRPcGVuRmlsZXMobnVsbCk7XG4gICAgICAgICAgICB9LCBuZXh0RXhwaXJlc0F0IC0gbm93KS51bnJlZigpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGFzeW5jIGdldE1vdW50UHJvbWlzZShwLCBhY2NlcHQpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBpZiAodGhpcy5tb3VudEluc3RhbmNlcykge1xuICAgICAgICAgICAgbGV0IGNhY2hlZE1vdW50RnMgPSB0aGlzLm1vdW50SW5zdGFuY2VzLmdldChwKTtcbiAgICAgICAgICAgIGlmICghY2FjaGVkTW91bnRGcykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNyZWF0ZUZzSW5zdGFuY2UgPSBhd2FpdCB0aGlzLmZhY3RvcnlQcm9taXNlKHRoaXMuYmFzZUZzLCBwKTtcbiAgICAgICAgICAgICAgICAvLyBXZSBuZWVkIHRvIHJlY2hlY2sgYmVjYXVzZSBjb25jdXJyZW50IGdldE1vdW50UHJvbWlzZSBjYWxscyBtYXlcbiAgICAgICAgICAgICAgICAvLyBoYXZlIGluc3RhbnRpYXRlZCB0aGUgbW91bnQgYXJjaGl2ZSB3aGlsZSB3ZSB3ZXJlIHdhaXRpbmdcbiAgICAgICAgICAgICAgICBjYWNoZWRNb3VudEZzID0gdGhpcy5tb3VudEluc3RhbmNlcy5nZXQocCk7XG4gICAgICAgICAgICAgICAgaWYgKCFjYWNoZWRNb3VudEZzKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhY2hlZE1vdW50RnMgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjaGlsZEZzOiBjcmVhdGVGc0luc3RhbmNlKCksXG4gICAgICAgICAgICAgICAgICAgICAgICBleHBpcmVzQXQ6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICByZWZDb3VudDogMCxcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBSZW1vdmluZyB0aGVuIHJlLWFkZGluZyB0aGUgZmllbGQgYWxsb3dzIHVzIHRvIGVhc2lseSBpbXBsZW1lbnRcbiAgICAgICAgICAgIC8vIGEgYmFzaWMgTFJVIGdhcmJhZ2UgY29sbGVjdGlvbiBzdHJhdGVneVxuICAgICAgICAgICAgdGhpcy5tb3VudEluc3RhbmNlcy5kZWxldGUocCk7XG4gICAgICAgICAgICB0aGlzLmxpbWl0T3BlbkZpbGVzKHRoaXMubWF4T3BlbkZpbGVzIC0gMSk7XG4gICAgICAgICAgICB0aGlzLm1vdW50SW5zdGFuY2VzLnNldChwLCBjYWNoZWRNb3VudEZzKTtcbiAgICAgICAgICAgIGNhY2hlZE1vdW50RnMuZXhwaXJlc0F0ID0gRGF0ZS5ub3coKSArIHRoaXMubWF4QWdlO1xuICAgICAgICAgICAgY2FjaGVkTW91bnRGcy5yZWZDb3VudCArPSAxO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYXdhaXQgYWNjZXB0KGNhY2hlZE1vdW50RnMuY2hpbGRGcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICBjYWNoZWRNb3VudEZzLnJlZkNvdW50IC09IDE7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBtb3VudEZzID0gKGF3YWl0IHRoaXMuZmFjdG9yeVByb21pc2UodGhpcy5iYXNlRnMsIHApKSgpO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYXdhaXQgYWNjZXB0KG1vdW50RnMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICAgICAgKF9hID0gbW91bnRGcy5zYXZlQW5kQ2xvc2UpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jYWxsKG1vdW50RnMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIGdldE1vdW50U3luYyhwLCBhY2NlcHQpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBpZiAodGhpcy5tb3VudEluc3RhbmNlcykge1xuICAgICAgICAgICAgbGV0IGNhY2hlZE1vdW50RnMgPSB0aGlzLm1vdW50SW5zdGFuY2VzLmdldChwKTtcbiAgICAgICAgICAgIGlmICghY2FjaGVkTW91bnRGcykge1xuICAgICAgICAgICAgICAgIGNhY2hlZE1vdW50RnMgPSB7XG4gICAgICAgICAgICAgICAgICAgIGNoaWxkRnM6IHRoaXMuZmFjdG9yeVN5bmModGhpcy5iYXNlRnMsIHApLFxuICAgICAgICAgICAgICAgICAgICBleHBpcmVzQXQ6IDAsXG4gICAgICAgICAgICAgICAgICAgIHJlZkNvdW50OiAwLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBSZW1vdmluZyB0aGVuIHJlLWFkZGluZyB0aGUgZmllbGQgYWxsb3dzIHVzIHRvIGVhc2lseSBpbXBsZW1lbnRcbiAgICAgICAgICAgIC8vIGEgYmFzaWMgTFJVIGdhcmJhZ2UgY29sbGVjdGlvbiBzdHJhdGVneVxuICAgICAgICAgICAgdGhpcy5tb3VudEluc3RhbmNlcy5kZWxldGUocCk7XG4gICAgICAgICAgICB0aGlzLmxpbWl0T3BlbkZpbGVzKHRoaXMubWF4T3BlbkZpbGVzIC0gMSk7XG4gICAgICAgICAgICB0aGlzLm1vdW50SW5zdGFuY2VzLnNldChwLCBjYWNoZWRNb3VudEZzKTtcbiAgICAgICAgICAgIGNhY2hlZE1vdW50RnMuZXhwaXJlc0F0ID0gRGF0ZS5ub3coKSArIHRoaXMubWF4QWdlO1xuICAgICAgICAgICAgcmV0dXJuIGFjY2VwdChjYWNoZWRNb3VudEZzLmNoaWxkRnMpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgY2hpbGRGcyA9IHRoaXMuZmFjdG9yeVN5bmModGhpcy5iYXNlRnMsIHApO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYWNjZXB0KGNoaWxkRnMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICAgICAgKF9hID0gY2hpbGRGcy5zYXZlQW5kQ2xvc2UpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jYWxsKGNoaWxkRnMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuZXhwb3J0cy5Nb3VudEZTID0gTW91bnRGUztcbiIsICJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuTm9GUyA9IHZvaWQgMDtcbmNvbnN0IEZha2VGU18xID0gcmVxdWlyZShcIi4vRmFrZUZTXCIpO1xuY29uc3QgcGF0aF8xID0gcmVxdWlyZShcIi4vcGF0aFwiKTtcbmNvbnN0IG1ha2VFcnJvciA9ICgpID0+IE9iamVjdC5hc3NpZ24obmV3IEVycm9yKGBFTk9TWVM6IHVuc3VwcG9ydGVkIGZpbGVzeXN0ZW0gYWNjZXNzYCksIHsgY29kZTogYEVOT1NZU2AgfSk7XG5jbGFzcyBOb0ZTIGV4dGVuZHMgRmFrZUZTXzEuRmFrZUZTIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIocGF0aF8xLnBwYXRoKTtcbiAgICB9XG4gICAgZ2V0RXh0cmFjdEhpbnQoKSB7XG4gICAgICAgIHRocm93IG1ha2VFcnJvcigpO1xuICAgIH1cbiAgICBnZXRSZWFsUGF0aCgpIHtcbiAgICAgICAgdGhyb3cgbWFrZUVycm9yKCk7XG4gICAgfVxuICAgIHJlc29sdmUoKSB7XG4gICAgICAgIHRocm93IG1ha2VFcnJvcigpO1xuICAgIH1cbiAgICBhc3luYyBvcGVuUHJvbWlzZSgpIHtcbiAgICAgICAgdGhyb3cgbWFrZUVycm9yKCk7XG4gICAgfVxuICAgIG9wZW5TeW5jKCkge1xuICAgICAgICB0aHJvdyBtYWtlRXJyb3IoKTtcbiAgICB9XG4gICAgYXN5bmMgb3BlbmRpclByb21pc2UoKSB7XG4gICAgICAgIHRocm93IG1ha2VFcnJvcigpO1xuICAgIH1cbiAgICBvcGVuZGlyU3luYygpIHtcbiAgICAgICAgdGhyb3cgbWFrZUVycm9yKCk7XG4gICAgfVxuICAgIGFzeW5jIHJlYWRQcm9taXNlKCkge1xuICAgICAgICB0aHJvdyBtYWtlRXJyb3IoKTtcbiAgICB9XG4gICAgcmVhZFN5bmMoKSB7XG4gICAgICAgIHRocm93IG1ha2VFcnJvcigpO1xuICAgIH1cbiAgICBhc3luYyB3cml0ZVByb21pc2UoKSB7XG4gICAgICAgIHRocm93IG1ha2VFcnJvcigpO1xuICAgIH1cbiAgICB3cml0ZVN5bmMoKSB7XG4gICAgICAgIHRocm93IG1ha2VFcnJvcigpO1xuICAgIH1cbiAgICBhc3luYyBjbG9zZVByb21pc2UoKSB7XG4gICAgICAgIHRocm93IG1ha2VFcnJvcigpO1xuICAgIH1cbiAgICBjbG9zZVN5bmMoKSB7XG4gICAgICAgIHRocm93IG1ha2VFcnJvcigpO1xuICAgIH1cbiAgICBjcmVhdGVXcml0ZVN0cmVhbSgpIHtcbiAgICAgICAgdGhyb3cgbWFrZUVycm9yKCk7XG4gICAgfVxuICAgIGNyZWF0ZVJlYWRTdHJlYW0oKSB7XG4gICAgICAgIHRocm93IG1ha2VFcnJvcigpO1xuICAgIH1cbiAgICBhc3luYyByZWFscGF0aFByb21pc2UoKSB7XG4gICAgICAgIHRocm93IG1ha2VFcnJvcigpO1xuICAgIH1cbiAgICByZWFscGF0aFN5bmMoKSB7XG4gICAgICAgIHRocm93IG1ha2VFcnJvcigpO1xuICAgIH1cbiAgICBhc3luYyByZWFkZGlyUHJvbWlzZSgpIHtcbiAgICAgICAgdGhyb3cgbWFrZUVycm9yKCk7XG4gICAgfVxuICAgIHJlYWRkaXJTeW5jKCkge1xuICAgICAgICB0aHJvdyBtYWtlRXJyb3IoKTtcbiAgICB9XG4gICAgYXN5bmMgZXhpc3RzUHJvbWlzZShwKSB7XG4gICAgICAgIHRocm93IG1ha2VFcnJvcigpO1xuICAgIH1cbiAgICBleGlzdHNTeW5jKHApIHtcbiAgICAgICAgdGhyb3cgbWFrZUVycm9yKCk7XG4gICAgfVxuICAgIGFzeW5jIGFjY2Vzc1Byb21pc2UoKSB7XG4gICAgICAgIHRocm93IG1ha2VFcnJvcigpO1xuICAgIH1cbiAgICBhY2Nlc3NTeW5jKCkge1xuICAgICAgICB0aHJvdyBtYWtlRXJyb3IoKTtcbiAgICB9XG4gICAgYXN5bmMgc3RhdFByb21pc2UoKSB7XG4gICAgICAgIHRocm93IG1ha2VFcnJvcigpO1xuICAgIH1cbiAgICBzdGF0U3luYygpIHtcbiAgICAgICAgdGhyb3cgbWFrZUVycm9yKCk7XG4gICAgfVxuICAgIGFzeW5jIGZzdGF0UHJvbWlzZShmZCkge1xuICAgICAgICB0aHJvdyBtYWtlRXJyb3IoKTtcbiAgICB9XG4gICAgZnN0YXRTeW5jKGZkKSB7XG4gICAgICAgIHRocm93IG1ha2VFcnJvcigpO1xuICAgIH1cbiAgICBhc3luYyBsc3RhdFByb21pc2UocCkge1xuICAgICAgICB0aHJvdyBtYWtlRXJyb3IoKTtcbiAgICB9XG4gICAgbHN0YXRTeW5jKHApIHtcbiAgICAgICAgdGhyb3cgbWFrZUVycm9yKCk7XG4gICAgfVxuICAgIGFzeW5jIGZjaG1vZFByb21pc2UoKSB7XG4gICAgICAgIHRocm93IG1ha2VFcnJvcigpO1xuICAgIH1cbiAgICBmY2htb2RTeW5jKCkge1xuICAgICAgICB0aHJvdyBtYWtlRXJyb3IoKTtcbiAgICB9XG4gICAgYXN5bmMgY2htb2RQcm9taXNlKCkge1xuICAgICAgICB0aHJvdyBtYWtlRXJyb3IoKTtcbiAgICB9XG4gICAgY2htb2RTeW5jKCkge1xuICAgICAgICB0aHJvdyBtYWtlRXJyb3IoKTtcbiAgICB9XG4gICAgYXN5bmMgZmNob3duUHJvbWlzZSgpIHtcbiAgICAgICAgdGhyb3cgbWFrZUVycm9yKCk7XG4gICAgfVxuICAgIGZjaG93blN5bmMoKSB7XG4gICAgICAgIHRocm93IG1ha2VFcnJvcigpO1xuICAgIH1cbiAgICBhc3luYyBjaG93blByb21pc2UoKSB7XG4gICAgICAgIHRocm93IG1ha2VFcnJvcigpO1xuICAgIH1cbiAgICBjaG93blN5bmMoKSB7XG4gICAgICAgIHRocm93IG1ha2VFcnJvcigpO1xuICAgIH1cbiAgICBhc3luYyBta2RpclByb21pc2UoKSB7XG4gICAgICAgIHRocm93IG1ha2VFcnJvcigpO1xuICAgIH1cbiAgICBta2RpclN5bmMoKSB7XG4gICAgICAgIHRocm93IG1ha2VFcnJvcigpO1xuICAgIH1cbiAgICBhc3luYyBybWRpclByb21pc2UoKSB7XG4gICAgICAgIHRocm93IG1ha2VFcnJvcigpO1xuICAgIH1cbiAgICBybWRpclN5bmMoKSB7XG4gICAgICAgIHRocm93IG1ha2VFcnJvcigpO1xuICAgIH1cbiAgICBhc3luYyBsaW5rUHJvbWlzZSgpIHtcbiAgICAgICAgdGhyb3cgbWFrZUVycm9yKCk7XG4gICAgfVxuICAgIGxpbmtTeW5jKCkge1xuICAgICAgICB0aHJvdyBtYWtlRXJyb3IoKTtcbiAgICB9XG4gICAgYXN5bmMgc3ltbGlua1Byb21pc2UoKSB7XG4gICAgICAgIHRocm93IG1ha2VFcnJvcigpO1xuICAgIH1cbiAgICBzeW1saW5rU3luYygpIHtcbiAgICAgICAgdGhyb3cgbWFrZUVycm9yKCk7XG4gICAgfVxuICAgIGFzeW5jIHJlbmFtZVByb21pc2UoKSB7XG4gICAgICAgIHRocm93IG1ha2VFcnJvcigpO1xuICAgIH1cbiAgICByZW5hbWVTeW5jKCkge1xuICAgICAgICB0aHJvdyBtYWtlRXJyb3IoKTtcbiAgICB9XG4gICAgYXN5bmMgY29weUZpbGVQcm9taXNlKCkge1xuICAgICAgICB0aHJvdyBtYWtlRXJyb3IoKTtcbiAgICB9XG4gICAgY29weUZpbGVTeW5jKCkge1xuICAgICAgICB0aHJvdyBtYWtlRXJyb3IoKTtcbiAgICB9XG4gICAgYXN5bmMgYXBwZW5kRmlsZVByb21pc2UoKSB7XG4gICAgICAgIHRocm93IG1ha2VFcnJvcigpO1xuICAgIH1cbiAgICBhcHBlbmRGaWxlU3luYygpIHtcbiAgICAgICAgdGhyb3cgbWFrZUVycm9yKCk7XG4gICAgfVxuICAgIGFzeW5jIHdyaXRlRmlsZVByb21pc2UoKSB7XG4gICAgICAgIHRocm93IG1ha2VFcnJvcigpO1xuICAgIH1cbiAgICB3cml0ZUZpbGVTeW5jKCkge1xuICAgICAgICB0aHJvdyBtYWtlRXJyb3IoKTtcbiAgICB9XG4gICAgYXN5bmMgdW5saW5rUHJvbWlzZSgpIHtcbiAgICAgICAgdGhyb3cgbWFrZUVycm9yKCk7XG4gICAgfVxuICAgIHVubGlua1N5bmMoKSB7XG4gICAgICAgIHRocm93IG1ha2VFcnJvcigpO1xuICAgIH1cbiAgICBhc3luYyB1dGltZXNQcm9taXNlKCkge1xuICAgICAgICB0aHJvdyBtYWtlRXJyb3IoKTtcbiAgICB9XG4gICAgdXRpbWVzU3luYygpIHtcbiAgICAgICAgdGhyb3cgbWFrZUVycm9yKCk7XG4gICAgfVxuICAgIGFzeW5jIGx1dGltZXNQcm9taXNlKCkge1xuICAgICAgICB0aHJvdyBtYWtlRXJyb3IoKTtcbiAgICB9XG4gICAgbHV0aW1lc1N5bmMoKSB7XG4gICAgICAgIHRocm93IG1ha2VFcnJvcigpO1xuICAgIH1cbiAgICBhc3luYyByZWFkRmlsZVByb21pc2UoKSB7XG4gICAgICAgIHRocm93IG1ha2VFcnJvcigpO1xuICAgIH1cbiAgICByZWFkRmlsZVN5bmMoKSB7XG4gICAgICAgIHRocm93IG1ha2VFcnJvcigpO1xuICAgIH1cbiAgICBhc3luYyByZWFkbGlua1Byb21pc2UoKSB7XG4gICAgICAgIHRocm93IG1ha2VFcnJvcigpO1xuICAgIH1cbiAgICByZWFkbGlua1N5bmMoKSB7XG4gICAgICAgIHRocm93IG1ha2VFcnJvcigpO1xuICAgIH1cbiAgICBhc3luYyB0cnVuY2F0ZVByb21pc2UoKSB7XG4gICAgICAgIHRocm93IG1ha2VFcnJvcigpO1xuICAgIH1cbiAgICB0cnVuY2F0ZVN5bmMoKSB7XG4gICAgICAgIHRocm93IG1ha2VFcnJvcigpO1xuICAgIH1cbiAgICBhc3luYyBmdHJ1bmNhdGVQcm9taXNlKGZkLCBsZW4pIHtcbiAgICAgICAgdGhyb3cgbWFrZUVycm9yKCk7XG4gICAgfVxuICAgIGZ0cnVuY2F0ZVN5bmMoZmQsIGxlbikge1xuICAgICAgICB0aHJvdyBtYWtlRXJyb3IoKTtcbiAgICB9XG4gICAgd2F0Y2goKSB7XG4gICAgICAgIHRocm93IG1ha2VFcnJvcigpO1xuICAgIH1cbiAgICB3YXRjaEZpbGUoKSB7XG4gICAgICAgIHRocm93IG1ha2VFcnJvcigpO1xuICAgIH1cbiAgICB1bndhdGNoRmlsZSgpIHtcbiAgICAgICAgdGhyb3cgbWFrZUVycm9yKCk7XG4gICAgfVxufVxuZXhwb3J0cy5Ob0ZTID0gTm9GUztcbk5vRlMuaW5zdGFuY2UgPSBuZXcgTm9GUygpO1xuIiwgIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5Qb3NpeEZTID0gdm9pZCAwO1xuY29uc3QgUHJveGllZEZTXzEgPSByZXF1aXJlKFwiLi9Qcm94aWVkRlNcIik7XG5jb25zdCBwYXRoXzEgPSByZXF1aXJlKFwiLi9wYXRoXCIpO1xuY2xhc3MgUG9zaXhGUyBleHRlbmRzIFByb3hpZWRGU18xLlByb3hpZWRGUyB7XG4gICAgY29uc3RydWN0b3IoYmFzZUZzKSB7XG4gICAgICAgIHN1cGVyKHBhdGhfMS5ucGF0aCk7XG4gICAgICAgIHRoaXMuYmFzZUZzID0gYmFzZUZzO1xuICAgIH1cbiAgICBtYXBGcm9tQmFzZShwYXRoKSB7XG4gICAgICAgIHJldHVybiBwYXRoXzEubnBhdGguZnJvbVBvcnRhYmxlUGF0aChwYXRoKTtcbiAgICB9XG4gICAgbWFwVG9CYXNlKHBhdGgpIHtcbiAgICAgICAgcmV0dXJuIHBhdGhfMS5ucGF0aC50b1BvcnRhYmxlUGF0aChwYXRoKTtcbiAgICB9XG59XG5leHBvcnRzLlBvc2l4RlMgPSBQb3NpeEZTO1xuIiwgIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5WaXJ0dWFsRlMgPSB2b2lkIDA7XG5jb25zdCBOb2RlRlNfMSA9IHJlcXVpcmUoXCIuL05vZGVGU1wiKTtcbmNvbnN0IFByb3hpZWRGU18xID0gcmVxdWlyZShcIi4vUHJveGllZEZTXCIpO1xuY29uc3QgcGF0aF8xID0gcmVxdWlyZShcIi4vcGF0aFwiKTtcbmNvbnN0IE5VTUJFUl9SRUdFWFAgPSAvXlswLTldKyQvO1xuLy8gJDA6IGZ1bGwgcGF0aFxuLy8gJDE6IHZpcnR1YWwgZm9sZGVyXG4vLyAkMjogdmlydHVhbCBzZWdtZW50XG4vLyAkMzogaGFzaFxuLy8gJDQ6IGRlcHRoXG4vLyAkNTogc3VicGF0aFxuY29uc3QgVklSVFVBTF9SRUdFWFAgPSAvXihcXC8oPzpbXi9dK1xcLykqPyg/OlxcJFxcJHZpcnR1YWx8X192aXJ0dWFsX18pKSgoPzpcXC8oKD86W14vXSstKT9bYS1mMC05XSspKD86XFwvKFteL10rKSk/KT8oKD86XFwvLiopPykpJC87XG5jb25zdCBWQUxJRF9DT01QT05FTlQgPSAvXihbXi9dKy0pP1thLWYwLTldKyQvO1xuY2xhc3MgVmlydHVhbEZTIGV4dGVuZHMgUHJveGllZEZTXzEuUHJveGllZEZTIHtcbiAgICBzdGF0aWMgbWFrZVZpcnR1YWxQYXRoKGJhc2UsIGNvbXBvbmVudCwgdG8pIHtcbiAgICAgICAgaWYgKHBhdGhfMS5wcGF0aC5iYXNlbmFtZShiYXNlKSAhPT0gYF9fdmlydHVhbF9fYClcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQXNzZXJ0aW9uIGZhaWxlZDogVmlydHVhbCBmb2xkZXJzIG11c3QgYmUgbmFtZWQgXCJfX3ZpcnR1YWxfX1wiYCk7XG4gICAgICAgIGlmICghcGF0aF8xLnBwYXRoLmJhc2VuYW1lKGNvbXBvbmVudCkubWF0Y2goVkFMSURfQ09NUE9ORU5UKSlcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQXNzZXJ0aW9uIGZhaWxlZDogVmlydHVhbCBjb21wb25lbnRzIG11c3QgYmUgZW5kZWQgYnkgYW4gaGV4YWRlY2ltYWwgaGFzaGApO1xuICAgICAgICAvLyBPYnRhaW5zIHRoZSByZWxhdGl2ZSBkaXN0YW5jZSBiZXR3ZWVuIHRoZSB2aXJ0dWFsIHBhdGggYW5kIGl0cyBhY3R1YWwgdGFyZ2V0XG4gICAgICAgIGNvbnN0IHRhcmdldCA9IHBhdGhfMS5wcGF0aC5yZWxhdGl2ZShwYXRoXzEucHBhdGguZGlybmFtZShiYXNlKSwgdG8pO1xuICAgICAgICBjb25zdCBzZWdtZW50cyA9IHRhcmdldC5zcGxpdChgL2ApO1xuICAgICAgICAvLyBDb3VudHMgaG93IG1hbnkgbGV2ZWxzIHdlIG5lZWQgdG8gZ28gYmFjayB0byBzdGFydCBhcHBseWluZyB0aGUgcmVzdCBvZiB0aGUgcGF0aFxuICAgICAgICBsZXQgZGVwdGggPSAwO1xuICAgICAgICB3aGlsZSAoZGVwdGggPCBzZWdtZW50cy5sZW5ndGggJiYgc2VnbWVudHNbZGVwdGhdID09PSBgLi5gKVxuICAgICAgICAgICAgZGVwdGggKz0gMTtcbiAgICAgICAgY29uc3QgZmluYWxTZWdtZW50cyA9IHNlZ21lbnRzLnNsaWNlKGRlcHRoKTtcbiAgICAgICAgY29uc3QgZnVsbFZpcnR1YWxQYXRoID0gcGF0aF8xLnBwYXRoLmpvaW4oYmFzZSwgY29tcG9uZW50LCBTdHJpbmcoZGVwdGgpLCAuLi5maW5hbFNlZ21lbnRzKTtcbiAgICAgICAgcmV0dXJuIGZ1bGxWaXJ0dWFsUGF0aDtcbiAgICB9XG4gICAgc3RhdGljIHJlc29sdmVWaXJ0dWFsKHApIHtcbiAgICAgICAgY29uc3QgbWF0Y2ggPSBwLm1hdGNoKFZJUlRVQUxfUkVHRVhQKTtcbiAgICAgICAgaWYgKCFtYXRjaCB8fCAoIW1hdGNoWzNdICYmIG1hdGNoWzVdKSlcbiAgICAgICAgICAgIHJldHVybiBwO1xuICAgICAgICBjb25zdCB0YXJnZXQgPSBwYXRoXzEucHBhdGguZGlybmFtZShtYXRjaFsxXSk7XG4gICAgICAgIGlmICghbWF0Y2hbM10gfHwgIW1hdGNoWzRdKVxuICAgICAgICAgICAgcmV0dXJuIHRhcmdldDtcbiAgICAgICAgY29uc3QgaXNudW0gPSBOVU1CRVJfUkVHRVhQLnRlc3QobWF0Y2hbNF0pO1xuICAgICAgICBpZiAoIWlzbnVtKVxuICAgICAgICAgICAgcmV0dXJuIHA7XG4gICAgICAgIGNvbnN0IGRlcHRoID0gTnVtYmVyKG1hdGNoWzRdKTtcbiAgICAgICAgY29uc3QgYmFja3N0ZXAgPSBgLi4vYC5yZXBlYXQoZGVwdGgpO1xuICAgICAgICBjb25zdCBzdWJwYXRoID0gKG1hdGNoWzVdIHx8IGAuYCk7XG4gICAgICAgIHJldHVybiBWaXJ0dWFsRlMucmVzb2x2ZVZpcnR1YWwocGF0aF8xLnBwYXRoLmpvaW4odGFyZ2V0LCBiYWNrc3RlcCwgc3VicGF0aCkpO1xuICAgIH1cbiAgICBjb25zdHJ1Y3Rvcih7IGJhc2VGcyA9IG5ldyBOb2RlRlNfMS5Ob2RlRlMoKSB9ID0ge30pIHtcbiAgICAgICAgc3VwZXIocGF0aF8xLnBwYXRoKTtcbiAgICAgICAgdGhpcy5iYXNlRnMgPSBiYXNlRnM7XG4gICAgfVxuICAgIGdldEV4dHJhY3RIaW50KGhpbnRzKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmJhc2VGcy5nZXRFeHRyYWN0SGludChoaW50cyk7XG4gICAgfVxuICAgIGdldFJlYWxQYXRoKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5iYXNlRnMuZ2V0UmVhbFBhdGgoKTtcbiAgICB9XG4gICAgcmVhbHBhdGhTeW5jKHApIHtcbiAgICAgICAgY29uc3QgbWF0Y2ggPSBwLm1hdGNoKFZJUlRVQUxfUkVHRVhQKTtcbiAgICAgICAgaWYgKCFtYXRjaClcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmJhc2VGcy5yZWFscGF0aFN5bmMocCk7XG4gICAgICAgIGlmICghbWF0Y2hbNV0pXG4gICAgICAgICAgICByZXR1cm4gcDtcbiAgICAgICAgY29uc3QgcmVhbHBhdGggPSB0aGlzLmJhc2VGcy5yZWFscGF0aFN5bmModGhpcy5tYXBUb0Jhc2UocCkpO1xuICAgICAgICByZXR1cm4gVmlydHVhbEZTLm1ha2VWaXJ0dWFsUGF0aChtYXRjaFsxXSwgbWF0Y2hbM10sIHJlYWxwYXRoKTtcbiAgICB9XG4gICAgYXN5bmMgcmVhbHBhdGhQcm9taXNlKHApIHtcbiAgICAgICAgY29uc3QgbWF0Y2ggPSBwLm1hdGNoKFZJUlRVQUxfUkVHRVhQKTtcbiAgICAgICAgaWYgKCFtYXRjaClcbiAgICAgICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmJhc2VGcy5yZWFscGF0aFByb21pc2UocCk7XG4gICAgICAgIGlmICghbWF0Y2hbNV0pXG4gICAgICAgICAgICByZXR1cm4gcDtcbiAgICAgICAgY29uc3QgcmVhbHBhdGggPSBhd2FpdCB0aGlzLmJhc2VGcy5yZWFscGF0aFByb21pc2UodGhpcy5tYXBUb0Jhc2UocCkpO1xuICAgICAgICByZXR1cm4gVmlydHVhbEZTLm1ha2VWaXJ0dWFsUGF0aChtYXRjaFsxXSwgbWF0Y2hbM10sIHJlYWxwYXRoKTtcbiAgICB9XG4gICAgbWFwVG9CYXNlKHApIHtcbiAgICAgICAgaWYgKHAgPT09IGBgKVxuICAgICAgICAgICAgcmV0dXJuIHA7XG4gICAgICAgIGlmICh0aGlzLnBhdGhVdGlscy5pc0Fic29sdXRlKHApKVxuICAgICAgICAgICAgcmV0dXJuIFZpcnR1YWxGUy5yZXNvbHZlVmlydHVhbChwKTtcbiAgICAgICAgY29uc3QgcmVzb2x2ZWRSb290ID0gVmlydHVhbEZTLnJlc29sdmVWaXJ0dWFsKHRoaXMuYmFzZUZzLnJlc29sdmUocGF0aF8xLlBvcnRhYmxlUGF0aC5kb3QpKTtcbiAgICAgICAgY29uc3QgcmVzb2x2ZWRQID0gVmlydHVhbEZTLnJlc29sdmVWaXJ0dWFsKHRoaXMuYmFzZUZzLnJlc29sdmUocCkpO1xuICAgICAgICByZXR1cm4gcGF0aF8xLnBwYXRoLnJlbGF0aXZlKHJlc29sdmVkUm9vdCwgcmVzb2x2ZWRQKSB8fCBwYXRoXzEuUG9ydGFibGVQYXRoLmRvdDtcbiAgICB9XG4gICAgbWFwRnJvbUJhc2UocCkge1xuICAgICAgICByZXR1cm4gcDtcbiAgICB9XG59XG5leHBvcnRzLlZpcnR1YWxGUyA9IFZpcnR1YWxGUztcbiIsICJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuTm9kZVBhdGhGUyA9IHZvaWQgMDtcbmNvbnN0IHVybF8xID0gcmVxdWlyZShcInVybFwiKTtcbmNvbnN0IHV0aWxfMSA9IHJlcXVpcmUoXCJ1dGlsXCIpO1xuY29uc3QgUHJveGllZEZTXzEgPSByZXF1aXJlKFwiLi9Qcm94aWVkRlNcIik7XG5jb25zdCBwYXRoXzEgPSByZXF1aXJlKFwiLi9wYXRoXCIpO1xuLyoqXG4gKiBBZGRzIHN1cHBvcnQgZm9yIGZpbGUgVVJMcyBhbmQgQnVmZmVycyB0byB0aGUgd3JhcHBlZCBgYmFzZUZzYCwgYnV0ICpub3QqIGluc2lkZSB0aGUgdHlwaW5ncy5cbiAqXG4gKiBPbmx5IGV4aXN0cyBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIE5vZGUncyBiZWhhdmlvci5cbiAqXG4gKiBBdXRvbWF0aWNhbGx5IHdyYXBzIGFsbCBGUyBpbnN0YW5jZXMgcGFzc2VkIHRvIGBwYXRjaEZzYCAmIGBleHRlbmRGc2AuXG4gKlxuICogRG9uJ3QgdXNlIGl0IVxuICovXG5jbGFzcyBOb2RlUGF0aEZTIGV4dGVuZHMgUHJveGllZEZTXzEuUHJveGllZEZTIHtcbiAgICBjb25zdHJ1Y3RvcihiYXNlRnMpIHtcbiAgICAgICAgc3VwZXIocGF0aF8xLm5wYXRoKTtcbiAgICAgICAgdGhpcy5iYXNlRnMgPSBiYXNlRnM7XG4gICAgfVxuICAgIG1hcEZyb21CYXNlKHBhdGgpIHtcbiAgICAgICAgcmV0dXJuIHBhdGg7XG4gICAgfVxuICAgIG1hcFRvQmFzZShwYXRoKSB7XG4gICAgICAgIGlmICh0eXBlb2YgcGF0aCA9PT0gYHN0cmluZ2ApXG4gICAgICAgICAgICByZXR1cm4gcGF0aDtcbiAgICAgICAgaWYgKHBhdGggaW5zdGFuY2VvZiB1cmxfMS5VUkwpXG4gICAgICAgICAgICByZXR1cm4gKDAsIHVybF8xLmZpbGVVUkxUb1BhdGgpKHBhdGgpO1xuICAgICAgICBpZiAoQnVmZmVyLmlzQnVmZmVyKHBhdGgpKSB7XG4gICAgICAgICAgICBjb25zdCBzdHIgPSBwYXRoLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICBpZiAoQnVmZmVyLmJ5dGVMZW5ndGgoc3RyKSAhPT0gcGF0aC5ieXRlTGVuZ3RoKVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgTm9uLXV0ZjggYnVmZmVycyBhcmUgbm90IHN1cHBvcnRlZCBhdCB0aGUgbW9tZW50LiBQbGVhc2UgdXB2b3RlIHRoZSBmb2xsb3dpbmcgaXNzdWUgaWYgeW91IGVuY291bnRlciB0aGlzIGVycm9yOiBodHRwczovL2dpdGh1Yi5jb20veWFybnBrZy9iZXJyeS9pc3N1ZXMvNDk0MmApO1xuICAgICAgICAgICAgcmV0dXJuIHN0cjtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIHBhdGggdHlwZTogJHsoMCwgdXRpbF8xLmluc3BlY3QpKHBhdGgpfWApO1xuICAgIH1cbn1cbmV4cG9ydHMuTm9kZVBhdGhGUyA9IE5vZGVQYXRoRlM7XG4iLCAiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX2EsIF9iLCBfYywgX2Q7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLkZpbGVIYW5kbGUgPSB2b2lkIDA7XG5jb25zdCBrQmFzZUZzID0gU3ltYm9sKGBrQmFzZUZzYCk7XG5jb25zdCBrRmQgPSBTeW1ib2woYGtGZGApO1xuY29uc3Qga0Nsb3NlUHJvbWlzZSA9IFN5bWJvbChga0Nsb3NlUHJvbWlzZWApO1xuY29uc3Qga0Nsb3NlUmVzb2x2ZSA9IFN5bWJvbChga0Nsb3NlUmVzb2x2ZWApO1xuY29uc3Qga0Nsb3NlUmVqZWN0ID0gU3ltYm9sKGBrQ2xvc2VSZWplY3RgKTtcbmNvbnN0IGtSZWZzID0gU3ltYm9sKGBrUmVmc2ApO1xuY29uc3Qga1JlZiA9IFN5bWJvbChga1JlZmApO1xuY29uc3Qga1VucmVmID0gU3ltYm9sKGBrVW5yZWZgKTtcbmNsYXNzIEZpbGVIYW5kbGUge1xuICAgIGNvbnN0cnVjdG9yKGZkLCBiYXNlRnMpIHtcbiAgICAgICAgdGhpc1tfYV0gPSAxO1xuICAgICAgICB0aGlzW19iXSA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpc1tfY10gPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXNbX2RdID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzW2tCYXNlRnNdID0gYmFzZUZzO1xuICAgICAgICB0aGlzW2tGZF0gPSBmZDtcbiAgICB9XG4gICAgZ2V0IGZkKCkge1xuICAgICAgICByZXR1cm4gdGhpc1trRmRdO1xuICAgIH1cbiAgICBhc3luYyBhcHBlbmRGaWxlKGRhdGEsIG9wdGlvbnMpIHtcbiAgICAgICAgdmFyIF9lO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdGhpc1trUmVmXSh0aGlzLmFwcGVuZEZpbGUpO1xuICAgICAgICAgICAgY29uc3QgZW5jb2RpbmcgPSAoX2UgPSAodHlwZW9mIG9wdGlvbnMgPT09IGBzdHJpbmdgID8gb3B0aW9ucyA6IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy5lbmNvZGluZykpICE9PSBudWxsICYmIF9lICE9PSB2b2lkIDAgPyBfZSA6IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIHJldHVybiBhd2FpdCB0aGlzW2tCYXNlRnNdLmFwcGVuZEZpbGVQcm9taXNlKHRoaXMuZmQsIGRhdGEsIGVuY29kaW5nID8geyBlbmNvZGluZyB9IDogdW5kZWZpbmVkKTtcbiAgICAgICAgfVxuICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgIHRoaXNba1VucmVmXSgpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGFzeW5jIGNob3duKHVpZCwgZ2lkKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB0aGlzW2tSZWZdKHRoaXMuY2hvd24pO1xuICAgICAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXNba0Jhc2VGc10uZmNob3duUHJvbWlzZSh0aGlzLmZkLCB1aWQsIGdpZCk7XG4gICAgICAgIH1cbiAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICB0aGlzW2tVbnJlZl0oKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBhc3luYyBjaG1vZChtb2RlKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB0aGlzW2tSZWZdKHRoaXMuY2htb2QpO1xuICAgICAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXNba0Jhc2VGc10uZmNobW9kUHJvbWlzZSh0aGlzLmZkLCBtb2RlKTtcbiAgICAgICAgfVxuICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgIHRoaXNba1VucmVmXSgpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGNyZWF0ZVJlYWRTdHJlYW0ob3B0aW9ucykge1xuICAgICAgICByZXR1cm4gdGhpc1trQmFzZUZzXS5jcmVhdGVSZWFkU3RyZWFtKG51bGwsIHsgLi4ub3B0aW9ucywgZmQ6IHRoaXMuZmQgfSk7XG4gICAgfVxuICAgIGNyZWF0ZVdyaXRlU3RyZWFtKG9wdGlvbnMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXNba0Jhc2VGc10uY3JlYXRlV3JpdGVTdHJlYW0obnVsbCwgeyAuLi5vcHRpb25zLCBmZDogdGhpcy5mZCB9KTtcbiAgICB9XG4gICAgLy8gRklYTUU6IE1pc3NpbmcgRmFrZUZTIHZlcnNpb25cbiAgICBkYXRhc3luYygpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBNZXRob2Qgbm90IGltcGxlbWVudGVkLmApO1xuICAgIH1cbiAgICAvLyBGSVhNRTogTWlzc2luZyBGYWtlRlMgdmVyc2lvblxuICAgIHN5bmMoKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC5gKTtcbiAgICB9XG4gICAgYXN5bmMgcmVhZChidWZmZXJPck9wdGlvbnMsIG9mZnNldCwgbGVuZ3RoLCBwb3NpdGlvbikge1xuICAgICAgICB2YXIgX2UsIF9mLCBfZztcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRoaXNba1JlZl0odGhpcy5yZWFkKTtcbiAgICAgICAgICAgIGxldCBidWZmZXI7XG4gICAgICAgICAgICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihidWZmZXJPck9wdGlvbnMpKSB7XG4gICAgICAgICAgICAgICAgYnVmZmVyT3JPcHRpb25zICE9PSBudWxsICYmIGJ1ZmZlck9yT3B0aW9ucyAhPT0gdm9pZCAwID8gYnVmZmVyT3JPcHRpb25zIDogKGJ1ZmZlck9yT3B0aW9ucyA9IHt9KTtcbiAgICAgICAgICAgICAgICBidWZmZXIgPSAoX2UgPSBidWZmZXJPck9wdGlvbnMuYnVmZmVyKSAhPT0gbnVsbCAmJiBfZSAhPT0gdm9pZCAwID8gX2UgOiBCdWZmZXIuYWxsb2MoMTYzODQpO1xuICAgICAgICAgICAgICAgIG9mZnNldCA9IGJ1ZmZlck9yT3B0aW9ucy5vZmZzZXQgfHwgMDtcbiAgICAgICAgICAgICAgICBsZW5ndGggPSAoX2YgPSBidWZmZXJPck9wdGlvbnMubGVuZ3RoKSAhPT0gbnVsbCAmJiBfZiAhPT0gdm9pZCAwID8gX2YgOiBidWZmZXIuYnl0ZUxlbmd0aDtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbiA9IChfZyA9IGJ1ZmZlck9yT3B0aW9ucy5wb3NpdGlvbikgIT09IG51bGwgJiYgX2cgIT09IHZvaWQgMCA/IF9nIDogbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGJ1ZmZlciA9IGJ1ZmZlck9yT3B0aW9ucztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9mZnNldCAhPT0gbnVsbCAmJiBvZmZzZXQgIT09IHZvaWQgMCA/IG9mZnNldCA6IChvZmZzZXQgPSAwKTtcbiAgICAgICAgICAgIGxlbmd0aCAhPT0gbnVsbCAmJiBsZW5ndGggIT09IHZvaWQgMCA/IGxlbmd0aCA6IChsZW5ndGggPSAwKTtcbiAgICAgICAgICAgIGlmIChsZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICBieXRlc1JlYWQ6IGxlbmd0aCxcbiAgICAgICAgICAgICAgICAgICAgYnVmZmVyLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBieXRlc1JlYWQgPSBhd2FpdCB0aGlzW2tCYXNlRnNdLnJlYWRQcm9taXNlKHRoaXMuZmQsIGJ1ZmZlciwgb2Zmc2V0LCBsZW5ndGgsIHBvc2l0aW9uKTtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgYnl0ZXNSZWFkLFxuICAgICAgICAgICAgICAgIGJ1ZmZlcixcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICB0aGlzW2tVbnJlZl0oKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBhc3luYyByZWFkRmlsZShvcHRpb25zKSB7XG4gICAgICAgIHZhciBfZTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRoaXNba1JlZl0odGhpcy5yZWFkRmlsZSk7XG4gICAgICAgICAgICBjb25zdCBlbmNvZGluZyA9IChfZSA9ICh0eXBlb2Ygb3B0aW9ucyA9PT0gYHN0cmluZ2AgPyBvcHRpb25zIDogb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLmVuY29kaW5nKSkgIT09IG51bGwgJiYgX2UgIT09IHZvaWQgMCA/IF9lIDogdW5kZWZpbmVkO1xuICAgICAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXNba0Jhc2VGc10ucmVhZEZpbGVQcm9taXNlKHRoaXMuZmQsIGVuY29kaW5nKTtcbiAgICAgICAgfVxuICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgIHRoaXNba1VucmVmXSgpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGFzeW5jIHN0YXQob3B0cykge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdGhpc1trUmVmXSh0aGlzLnN0YXQpO1xuICAgICAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXNba0Jhc2VGc10uZnN0YXRQcm9taXNlKHRoaXMuZmQsIG9wdHMpO1xuICAgICAgICB9XG4gICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgdGhpc1trVW5yZWZdKCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgYXN5bmMgdHJ1bmNhdGUobGVuKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB0aGlzW2tSZWZdKHRoaXMudHJ1bmNhdGUpO1xuICAgICAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXNba0Jhc2VGc10uZnRydW5jYXRlUHJvbWlzZSh0aGlzLmZkLCBsZW4pO1xuICAgICAgICB9XG4gICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgdGhpc1trVW5yZWZdKCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gRklYTUU6IE1pc3NpbmcgRmFrZUZTIHZlcnNpb25cbiAgICB1dGltZXMoYXRpbWUsIG10aW1lKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC5gKTtcbiAgICB9XG4gICAgYXN5bmMgd3JpdGVGaWxlKGRhdGEsIG9wdGlvbnMpIHtcbiAgICAgICAgdmFyIF9lO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdGhpc1trUmVmXSh0aGlzLndyaXRlRmlsZSk7XG4gICAgICAgICAgICBjb25zdCBlbmNvZGluZyA9IChfZSA9ICh0eXBlb2Ygb3B0aW9ucyA9PT0gYHN0cmluZ2AgPyBvcHRpb25zIDogb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLmVuY29kaW5nKSkgIT09IG51bGwgJiYgX2UgIT09IHZvaWQgMCA/IF9lIDogdW5kZWZpbmVkO1xuICAgICAgICAgICAgYXdhaXQgdGhpc1trQmFzZUZzXS53cml0ZUZpbGVQcm9taXNlKHRoaXMuZmQsIGRhdGEsIGVuY29kaW5nKTtcbiAgICAgICAgfVxuICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgIHRoaXNba1VucmVmXSgpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGFzeW5jIHdyaXRlKC4uLmFyZ3MpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRoaXNba1JlZl0odGhpcy53cml0ZSk7XG4gICAgICAgICAgICBpZiAoQXJyYXlCdWZmZXIuaXNWaWV3KGFyZ3NbMF0pKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgW2J1ZmZlciwgb2Zmc2V0LCBsZW5ndGgsIHBvc2l0aW9uXSA9IGFyZ3M7XG4gICAgICAgICAgICAgICAgY29uc3QgYnl0ZXNXcml0dGVuID0gYXdhaXQgdGhpc1trQmFzZUZzXS53cml0ZVByb21pc2UodGhpcy5mZCwgYnVmZmVyLCBvZmZzZXQgIT09IG51bGwgJiYgb2Zmc2V0ICE9PSB2b2lkIDAgPyBvZmZzZXQgOiB1bmRlZmluZWQsIGxlbmd0aCAhPT0gbnVsbCAmJiBsZW5ndGggIT09IHZvaWQgMCA/IGxlbmd0aCA6IHVuZGVmaW5lZCwgcG9zaXRpb24gIT09IG51bGwgJiYgcG9zaXRpb24gIT09IHZvaWQgMCA/IHBvc2l0aW9uIDogdW5kZWZpbmVkKTtcbiAgICAgICAgICAgICAgICByZXR1cm4geyBieXRlc1dyaXR0ZW4sIGJ1ZmZlciB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgW2RhdGEsIHBvc2l0aW9uLCBlbmNvZGluZ10gPSBhcmdzO1xuICAgICAgICAgICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgLSBGSVhNRTogVHlwZXMvaW1wbGVtZW50YXRpb24gbmVlZCB0byBiZSB1cGRhdGVkIGluIEZha2VGU1xuICAgICAgICAgICAgICAgIGNvbnN0IGJ5dGVzV3JpdHRlbiA9IGF3YWl0IHRoaXNba0Jhc2VGc10ud3JpdGVQcm9taXNlKHRoaXMuZmQsIGRhdGEsIHBvc2l0aW9uLCBlbmNvZGluZyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgYnl0ZXNXcml0dGVuLCBidWZmZXI6IGRhdGEgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgIHRoaXNba1VucmVmXSgpO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vIFRPRE86IFVzZSB3cml0ZXYgZnJvbSBGYWtlRlMgd2hlbiB0aGF0IGlzIGltcGxlbWVudGVkXG4gICAgYXN5bmMgd3JpdGV2KGJ1ZmZlcnMsIHBvc2l0aW9uKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB0aGlzW2tSZWZdKHRoaXMud3JpdGV2KTtcbiAgICAgICAgICAgIGxldCBieXRlc1dyaXR0ZW4gPSAwO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBwb3NpdGlvbiAhPT0gYHVuZGVmaW5lZGApIHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGJ1ZmZlciBvZiBidWZmZXJzKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHdyaXRlUmVzdWx0ID0gYXdhaXQgdGhpcy53cml0ZShidWZmZXIsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBwb3NpdGlvbik7XG4gICAgICAgICAgICAgICAgICAgIGJ5dGVzV3JpdHRlbiArPSB3cml0ZVJlc3VsdC5ieXRlc1dyaXR0ZW47XG4gICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uICs9IHdyaXRlUmVzdWx0LmJ5dGVzV3JpdHRlbjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGJ1ZmZlciBvZiBidWZmZXJzKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHdyaXRlUmVzdWx0ID0gYXdhaXQgdGhpcy53cml0ZShidWZmZXIpO1xuICAgICAgICAgICAgICAgICAgICBieXRlc1dyaXR0ZW4gKz0gd3JpdGVSZXN1bHQuYnl0ZXNXcml0dGVuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgYnVmZmVycyxcbiAgICAgICAgICAgICAgICBieXRlc1dyaXR0ZW4sXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgdGhpc1trVW5yZWZdKCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gRklYTUU6IE1pc3NpbmcgRmFrZUZTIHZlcnNpb25cbiAgICByZWFkdihidWZmZXJzLCBwb3NpdGlvbikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE1ldGhvZCBub3QgaW1wbGVtZW50ZWQuYCk7XG4gICAgfVxuICAgIGNsb3NlKCkge1xuICAgICAgICBpZiAodGhpc1trRmRdID09PSAtMSlcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgICAgaWYgKHRoaXNba0Nsb3NlUHJvbWlzZV0pXG4gICAgICAgICAgICByZXR1cm4gdGhpc1trQ2xvc2VQcm9taXNlXTtcbiAgICAgICAgdGhpc1trUmVmc10tLTtcbiAgICAgICAgaWYgKHRoaXNba1JlZnNdID09PSAwKSB7XG4gICAgICAgICAgICBjb25zdCBmZCA9IHRoaXNba0ZkXTtcbiAgICAgICAgICAgIHRoaXNba0ZkXSA9IC0xO1xuICAgICAgICAgICAgdGhpc1trQ2xvc2VQcm9taXNlXSA9IHRoaXNba0Jhc2VGc10uY2xvc2VQcm9taXNlKGZkKS5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzW2tDbG9zZVByb21pc2VdID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzW2tDbG9zZVByb21pc2VdID1cbiAgICAgICAgICAgICAgICBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXNba0Nsb3NlUmVzb2x2ZV0gPSByZXNvbHZlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzW2tDbG9zZVJlamVjdF0gPSByZWplY3Q7XG4gICAgICAgICAgICAgICAgfSkuZmluYWxseSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXNba0Nsb3NlUHJvbWlzZV0gPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgIHRoaXNba0Nsb3NlUmVqZWN0XSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgdGhpc1trQ2xvc2VSZXNvbHZlXSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpc1trQ2xvc2VQcm9taXNlXTtcbiAgICB9XG4gICAgWyhfYSA9IGtSZWZzLCBfYiA9IGtDbG9zZVByb21pc2UsIF9jID0ga0Nsb3NlUmVzb2x2ZSwgX2QgPSBrQ2xvc2VSZWplY3QsIGtSZWYpXShjYWxsZXIpIHtcbiAgICAgICAgaWYgKHRoaXNba0ZkXSA9PT0gLTEpIHtcbiAgICAgICAgICAgIGNvbnN0IGVyciA9IG5ldyBFcnJvcihgZmlsZSBjbG9zZWRgKTtcbiAgICAgICAgICAgIGVyci5jb2RlID0gYEVCQURGYDtcbiAgICAgICAgICAgIGVyci5zeXNjYWxsID0gY2FsbGVyLm5hbWU7XG4gICAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgIH1cbiAgICAgICAgdGhpc1trUmVmc10rKztcbiAgICB9XG4gICAgW2tVbnJlZl0oKSB7XG4gICAgICAgIHRoaXNba1JlZnNdLS07XG4gICAgICAgIGlmICh0aGlzW2tSZWZzXSA9PT0gMCkge1xuICAgICAgICAgICAgY29uc3QgZmQgPSB0aGlzW2tGZF07XG4gICAgICAgICAgICB0aGlzW2tGZF0gPSAtMTtcbiAgICAgICAgICAgIHRoaXNba0Jhc2VGc10uY2xvc2VQcm9taXNlKGZkKS50aGVuKHRoaXNba0Nsb3NlUmVzb2x2ZV0sIHRoaXNba0Nsb3NlUmVqZWN0XSk7XG4gICAgICAgIH1cbiAgICB9XG59XG5leHBvcnRzLkZpbGVIYW5kbGUgPSBGaWxlSGFuZGxlO1xuIiwgIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5leHRlbmRGcyA9IGV4cG9ydHMucGF0Y2hGcyA9IHZvaWQgMDtcbmNvbnN0IHV0aWxfMSA9IHJlcXVpcmUoXCJ1dGlsXCIpO1xuY29uc3QgTm9kZVBhdGhGU18xID0gcmVxdWlyZShcIi4uL05vZGVQYXRoRlNcIik7XG5jb25zdCBGaWxlSGFuZGxlXzEgPSByZXF1aXJlKFwiLi9GaWxlSGFuZGxlXCIpO1xuY29uc3QgU1lOQ19JTVBMRU1FTlRBVElPTlMgPSBuZXcgU2V0KFtcbiAgICBgYWNjZXNzU3luY2AsXG4gICAgYGFwcGVuZEZpbGVTeW5jYCxcbiAgICBgY3JlYXRlUmVhZFN0cmVhbWAsXG4gICAgYGNyZWF0ZVdyaXRlU3RyZWFtYCxcbiAgICBgY2htb2RTeW5jYCxcbiAgICBgZmNobW9kU3luY2AsXG4gICAgYGNob3duU3luY2AsXG4gICAgYGZjaG93blN5bmNgLFxuICAgIGBjbG9zZVN5bmNgLFxuICAgIGBjb3B5RmlsZVN5bmNgLFxuICAgIGBsaW5rU3luY2AsXG4gICAgYGxzdGF0U3luY2AsXG4gICAgYGZzdGF0U3luY2AsXG4gICAgYGx1dGltZXNTeW5jYCxcbiAgICBgbWtkaXJTeW5jYCxcbiAgICBgb3BlblN5bmNgLFxuICAgIGBvcGVuZGlyU3luY2AsXG4gICAgYHJlYWRsaW5rU3luY2AsXG4gICAgYHJlYWRGaWxlU3luY2AsXG4gICAgYHJlYWRkaXJTeW5jYCxcbiAgICBgcmVhZGxpbmtTeW5jYCxcbiAgICBgcmVhbHBhdGhTeW5jYCxcbiAgICBgcmVuYW1lU3luY2AsXG4gICAgYHJtZGlyU3luY2AsXG4gICAgYHN0YXRTeW5jYCxcbiAgICBgc3ltbGlua1N5bmNgLFxuICAgIGB0cnVuY2F0ZVN5bmNgLFxuICAgIGBmdHJ1bmNhdGVTeW5jYCxcbiAgICBgdW5saW5rU3luY2AsXG4gICAgYHVud2F0Y2hGaWxlYCxcbiAgICBgdXRpbWVzU3luY2AsXG4gICAgYHdhdGNoYCxcbiAgICBgd2F0Y2hGaWxlYCxcbiAgICBgd3JpdGVGaWxlU3luY2AsXG4gICAgYHdyaXRlU3luY2AsXG5dKTtcbmNvbnN0IEFTWU5DX0lNUExFTUVOVEFUSU9OUyA9IG5ldyBTZXQoW1xuICAgIGBhY2Nlc3NQcm9taXNlYCxcbiAgICBgYXBwZW5kRmlsZVByb21pc2VgLFxuICAgIGBmY2htb2RQcm9taXNlYCxcbiAgICBgY2htb2RQcm9taXNlYCxcbiAgICBgZmNob3duUHJvbWlzZWAsXG4gICAgYGNob3duUHJvbWlzZWAsXG4gICAgYGNsb3NlUHJvbWlzZWAsXG4gICAgYGNvcHlGaWxlUHJvbWlzZWAsXG4gICAgYGxpbmtQcm9taXNlYCxcbiAgICBgZnN0YXRQcm9taXNlYCxcbiAgICBgbHN0YXRQcm9taXNlYCxcbiAgICBgbHV0aW1lc1Byb21pc2VgLFxuICAgIGBta2RpclByb21pc2VgLFxuICAgIGBvcGVuUHJvbWlzZWAsXG4gICAgYG9wZW5kaXJQcm9taXNlYCxcbiAgICBgcmVhZGRpclByb21pc2VgLFxuICAgIGByZWFscGF0aFByb21pc2VgLFxuICAgIGByZWFkRmlsZVByb21pc2VgLFxuICAgIGByZWFkZGlyUHJvbWlzZWAsXG4gICAgYHJlYWRsaW5rUHJvbWlzZWAsXG4gICAgYHJlbmFtZVByb21pc2VgLFxuICAgIGBybWRpclByb21pc2VgLFxuICAgIGBzdGF0UHJvbWlzZWAsXG4gICAgYHN5bWxpbmtQcm9taXNlYCxcbiAgICBgdHJ1bmNhdGVQcm9taXNlYCxcbiAgICBgZnRydW5jYXRlUHJvbWlzZWAsXG4gICAgYHVubGlua1Byb21pc2VgLFxuICAgIGB1dGltZXNQcm9taXNlYCxcbiAgICBgd3JpdGVGaWxlUHJvbWlzZWAsXG4gICAgYHdyaXRlU3luY2AsXG5dKTtcbi8vI2VuZHJlZ2lvblxuZnVuY3Rpb24gcGF0Y2hGcyhwYXRjaGVkRnMsIGZha2VGcykge1xuICAgIC8vIFdlIHdyYXAgdGhlIGBmYWtlRnNgIHdpdGggYSBgTm9kZVBhdGhGU2AgdG8gYWRkIHN1cHBvcnQgZm9yIGFsbCBwYXRoIHR5cGVzIHN1cHBvcnRlZCBieSBOb2RlXG4gICAgZmFrZUZzID0gbmV3IE5vZGVQYXRoRlNfMS5Ob2RlUGF0aEZTKGZha2VGcyk7XG4gICAgY29uc3Qgc2V0dXBGbiA9ICh0YXJnZXQsIG5hbWUsIHJlcGxhY2VtZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IG9yaWcgPSB0YXJnZXRbbmFtZV07XG4gICAgICAgIHRhcmdldFtuYW1lXSA9IHJlcGxhY2VtZW50O1xuICAgICAgICAvLyBQcmVzZXJ2ZSBhbnkgdXRpbC5wcm9taXNpZnkgaW1wbGVtZW50YXRpb25zXG4gICAgICAgIGlmICh0eXBlb2YgKG9yaWcgPT09IG51bGwgfHwgb3JpZyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3JpZ1t1dGlsXzEucHJvbWlzaWZ5LmN1c3RvbV0pICE9PSBgdW5kZWZpbmVkYCkge1xuICAgICAgICAgICAgcmVwbGFjZW1lbnRbdXRpbF8xLnByb21pc2lmeS5jdXN0b21dID0gb3JpZ1t1dGlsXzEucHJvbWlzaWZ5LmN1c3RvbV07XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8qKiBDYWxsYmFjayBpbXBsZW1lbnRhdGlvbnMgKi9cbiAgICB7XG4gICAgICAgIHNldHVwRm4ocGF0Y2hlZEZzLCBgZXhpc3RzYCwgKHAsIC4uLmFyZ3MpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGhhc0NhbGxiYWNrID0gdHlwZW9mIGFyZ3NbYXJncy5sZW5ndGggLSAxXSA9PT0gYGZ1bmN0aW9uYDtcbiAgICAgICAgICAgIGNvbnN0IGNhbGxiYWNrID0gaGFzQ2FsbGJhY2sgPyBhcmdzLnBvcCgpIDogKCkgPT4geyB9O1xuICAgICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICAgICAgZmFrZUZzLmV4aXN0c1Byb21pc2UocCkudGhlbihleGlzdHMgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhleGlzdHMpO1xuICAgICAgICAgICAgICAgIH0sICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soZmFsc2UpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICAvLyBBZGFwdGVkIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL25vZGVqcy9ub2RlL2Jsb2IvZTVjMWZkN2EyYTE4MDFmZDc1YmRkZTIzYjI2MDQ4OGU4NTQ1M2ViMi9saWIvZnMuanMjTDYwMy1MNjY3XG4gICAgICAgIHNldHVwRm4ocGF0Y2hlZEZzLCBgcmVhZGAsICguLi5hcmdzKSA9PiB7XG4gICAgICAgICAgICBsZXQgW2ZkLCBidWZmZXIsIG9mZnNldCwgbGVuZ3RoLCBwb3NpdGlvbiwgY2FsbGJhY2tdID0gYXJncztcbiAgICAgICAgICAgIGlmIChhcmdzLmxlbmd0aCA8PSAzKSB7XG4gICAgICAgICAgICAgICAgLy8gQXNzdW1lIGZzLnJlYWQoZmQsIG9wdGlvbnMsIGNhbGxiYWNrKVxuICAgICAgICAgICAgICAgIGxldCBvcHRpb25zID0ge307XG4gICAgICAgICAgICAgICAgaWYgKGFyZ3MubGVuZ3RoIDwgMykge1xuICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIGZzLnJlYWQoZmQsIGNhbGxiYWNrKVxuICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayA9IGFyZ3NbMV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIGZzLnJlYWQoZmQsIHt9LCBjYWxsYmFjaylcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9ucyA9IGFyZ3NbMV07XG4gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrID0gYXJnc1syXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgYnVmZmVyID0gQnVmZmVyLmFsbG9jKDE2Mzg0KSxcbiAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ID0gMCxcbiAgICAgICAgICAgICAgICAgICAgbGVuZ3RoID0gYnVmZmVyLmJ5dGVMZW5ndGgsXG4gICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uLFxuICAgICAgICAgICAgICAgIH0gPSBvcHRpb25zKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChvZmZzZXQgPT0gbnVsbClcbiAgICAgICAgICAgICAgICBvZmZzZXQgPSAwO1xuICAgICAgICAgICAgbGVuZ3RoIHw9IDA7XG4gICAgICAgICAgICBpZiAobGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKG51bGwsIDAsIGJ1ZmZlcik7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHBvc2l0aW9uID09IG51bGwpXG4gICAgICAgICAgICAgICAgcG9zaXRpb24gPSAtMTtcbiAgICAgICAgICAgIHByb2Nlc3MubmV4dFRpY2soKCkgPT4ge1xuICAgICAgICAgICAgICAgIGZha2VGcy5yZWFkUHJvbWlzZShmZCwgYnVmZmVyLCBvZmZzZXQsIGxlbmd0aCwgcG9zaXRpb24pLnRoZW4oYnl0ZXNSZWFkID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2sobnVsbCwgYnl0ZXNSZWFkLCBidWZmZXIpO1xuICAgICAgICAgICAgICAgIH0sIGVycm9yID0+IHtcbiAgICAgICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL25vZGVqcy9ub2RlL2Jsb2IvMTMxNzI1MmRmZTg4MjRmZDljZmVlMTI1ZDJhYWE5NDAwNGRiMmYzYi9saWIvZnMuanMjTDY1NS1MNjU4XG4gICAgICAgICAgICAgICAgICAgIC8vIEtub3duIGlzc3VlOiBieXRlc1JlYWQgY291bGQgdGhlb3JldGljYWxseSBiZSA+IHRoYW4gMCwgYnV0IHdlIGN1cnJlbnRseSBhbHdheXMgcmV0dXJuIDBcbiAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soZXJyb3IsIDAsIGJ1ZmZlcik7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIGZvciAoY29uc3QgZm5OYW1lIG9mIEFTWU5DX0lNUExFTUVOVEFUSU9OUykge1xuICAgICAgICAgICAgY29uc3Qgb3JpZ05hbWUgPSBmbk5hbWUucmVwbGFjZSgvUHJvbWlzZSQvLCBgYCk7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHBhdGNoZWRGc1tvcmlnTmFtZV0gPT09IGB1bmRlZmluZWRgKVxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgY29uc3QgZmFrZUltcGwgPSBmYWtlRnNbZm5OYW1lXTtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgZmFrZUltcGwgPT09IGB1bmRlZmluZWRgKVxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgY29uc3Qgd3JhcHBlciA9ICguLi5hcmdzKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgaGFzQ2FsbGJhY2sgPSB0eXBlb2YgYXJnc1thcmdzLmxlbmd0aCAtIDFdID09PSBgZnVuY3Rpb25gO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNhbGxiYWNrID0gaGFzQ2FsbGJhY2sgPyBhcmdzLnBvcCgpIDogKCkgPT4geyB9O1xuICAgICAgICAgICAgICAgIHByb2Nlc3MubmV4dFRpY2soKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBmYWtlSW1wbC5hcHBseShmYWtlRnMsIGFyZ3MpLnRoZW4oKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2sobnVsbCwgcmVzdWx0KTtcbiAgICAgICAgICAgICAgICAgICAgfSwgKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhlcnJvcik7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHNldHVwRm4ocGF0Y2hlZEZzLCBvcmlnTmFtZSwgd3JhcHBlcik7XG4gICAgICAgIH1cbiAgICAgICAgcGF0Y2hlZEZzLnJlYWxwYXRoLm5hdGl2ZSA9IHBhdGNoZWRGcy5yZWFscGF0aDtcbiAgICB9XG4gICAgLyoqIFN5bmMgaW1wbGVtZW50YXRpb25zICovXG4gICAge1xuICAgICAgICBzZXR1cEZuKHBhdGNoZWRGcywgYGV4aXN0c1N5bmNgLCAocCkgPT4ge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFrZUZzLmV4aXN0c1N5bmMocCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICAvLyBBZGFwdGVkIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL25vZGVqcy9ub2RlL2Jsb2IvZTVjMWZkN2EyYTE4MDFmZDc1YmRkZTIzYjI2MDQ4OGU4NTQ1M2ViMi9saWIvZnMuanMjTDY4NC1MNzI1XG4gICAgICAgIHNldHVwRm4ocGF0Y2hlZEZzLCBgcmVhZFN5bmNgLCAoLi4uYXJncykgPT4ge1xuICAgICAgICAgICAgbGV0IFtmZCwgYnVmZmVyLCBvZmZzZXQsIGxlbmd0aCwgcG9zaXRpb25dID0gYXJncztcbiAgICAgICAgICAgIGlmIChhcmdzLmxlbmd0aCA8PSAzKSB7XG4gICAgICAgICAgICAgICAgLy8gQXNzdW1lIGZzLnJlYWQoZmQsIGJ1ZmZlciwgb3B0aW9ucylcbiAgICAgICAgICAgICAgICBjb25zdCBvcHRpb25zID0gYXJnc1syXSB8fCB7fTtcbiAgICAgICAgICAgICAgICAoeyBvZmZzZXQgPSAwLCBsZW5ndGggPSBidWZmZXIuYnl0ZUxlbmd0aCwgcG9zaXRpb24gfSA9IG9wdGlvbnMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG9mZnNldCA9PSBudWxsKVxuICAgICAgICAgICAgICAgIG9mZnNldCA9IDA7XG4gICAgICAgICAgICBsZW5ndGggfD0gMDtcbiAgICAgICAgICAgIGlmIChsZW5ndGggPT09IDApXG4gICAgICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgICAgICBpZiAocG9zaXRpb24gPT0gbnVsbClcbiAgICAgICAgICAgICAgICBwb3NpdGlvbiA9IC0xO1xuICAgICAgICAgICAgcmV0dXJuIGZha2VGcy5yZWFkU3luYyhmZCwgYnVmZmVyLCBvZmZzZXQsIGxlbmd0aCwgcG9zaXRpb24pO1xuICAgICAgICB9KTtcbiAgICAgICAgZm9yIChjb25zdCBmbk5hbWUgb2YgU1lOQ19JTVBMRU1FTlRBVElPTlMpIHtcbiAgICAgICAgICAgIGNvbnN0IG9yaWdOYW1lID0gZm5OYW1lO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBwYXRjaGVkRnNbb3JpZ05hbWVdID09PSBgdW5kZWZpbmVkYClcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIGNvbnN0IGZha2VJbXBsID0gZmFrZUZzW2ZuTmFtZV07XG4gICAgICAgICAgICBpZiAodHlwZW9mIGZha2VJbXBsID09PSBgdW5kZWZpbmVkYClcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIHNldHVwRm4ocGF0Y2hlZEZzLCBvcmlnTmFtZSwgZmFrZUltcGwuYmluZChmYWtlRnMpKTtcbiAgICAgICAgfVxuICAgICAgICBwYXRjaGVkRnMucmVhbHBhdGhTeW5jLm5hdGl2ZSA9IHBhdGNoZWRGcy5yZWFscGF0aFN5bmM7XG4gICAgfVxuICAgIC8qKiBQcm9taXNlIGltcGxlbWVudGF0aW9ucyAqL1xuICAgIHtcbiAgICAgICAgLy8gYGZzLnByb21pc2VzYCBpcyBhIGdldHRlciB0aGF0IHJldHVybnMgYSByZWZlcmVuY2UgdG8gcmVxdWlyZShgZnMvcHJvbWlzZXNgKSxcbiAgICAgICAgLy8gc28gd2UgY2FuIGp1c3QgcGF0Y2ggYGZzLnByb21pc2VzYCBhbmQgYm90aCB3aWxsIGJlIHVwZGF0ZWRcbiAgICAgICAgY29uc3QgcGF0Y2hlZEZzUHJvbWlzZXMgPSBwYXRjaGVkRnMucHJvbWlzZXM7XG4gICAgICAgIC8vIGBmcy5wcm9taXNlcy5leGlzdHNgIGRvZXNuJ3QgZXhpc3RcbiAgICAgICAgZm9yIChjb25zdCBmbk5hbWUgb2YgQVNZTkNfSU1QTEVNRU5UQVRJT05TKSB7XG4gICAgICAgICAgICBjb25zdCBvcmlnTmFtZSA9IGZuTmFtZS5yZXBsYWNlKC9Qcm9taXNlJC8sIGBgKTtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgcGF0Y2hlZEZzUHJvbWlzZXNbb3JpZ05hbWVdID09PSBgdW5kZWZpbmVkYClcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIGNvbnN0IGZha2VJbXBsID0gZmFrZUZzW2ZuTmFtZV07XG4gICAgICAgICAgICBpZiAodHlwZW9mIGZha2VJbXBsID09PSBgdW5kZWZpbmVkYClcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIC8vIE9wZW4gaXMgYSBiaXQgcGFydGljdWxhciB3aXRoIGZzLnByb21pc2VzOiBpdCByZXR1cm5zIGEgZmlsZSBoYW5kbGVcbiAgICAgICAgICAgIC8vIGluc3RhbmNlIGluc3RlYWQgb2YgdGhlIHRyYWRpdGlvbmFsIGZpbGUgZGVzY3JpcHRvciBudW1iZXJcbiAgICAgICAgICAgIGlmIChmbk5hbWUgPT09IGBvcGVuYClcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIHNldHVwRm4ocGF0Y2hlZEZzUHJvbWlzZXMsIG9yaWdOYW1lLCAocGF0aExpa2UsIC4uLmFyZ3MpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAocGF0aExpa2UgaW5zdGFuY2VvZiBGaWxlSGFuZGxlXzEuRmlsZUhhbmRsZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGF0aExpa2Vbb3JpZ05hbWVdLmFwcGx5KHBhdGhMaWtlLCBhcmdzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWtlSW1wbC5jYWxsKGZha2VGcywgcGF0aExpa2UsIC4uLmFyZ3MpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHNldHVwRm4ocGF0Y2hlZEZzUHJvbWlzZXMsIGBvcGVuYCwgYXN5bmMgKC4uLmFyZ3MpID0+IHtcbiAgICAgICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICAgICAgICAgIGNvbnN0IGZkID0gYXdhaXQgZmFrZUZzLm9wZW5Qcm9taXNlKC4uLmFyZ3MpO1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBGaWxlSGFuZGxlXzEuRmlsZUhhbmRsZShmZCwgZmFrZUZzKTtcbiAgICAgICAgfSk7XG4gICAgICAgIC8vIGBmcy5wcm9taXNlcy5yZWFscGF0aGAgZG9lc24ndCBoYXZlIGEgYG5hdGl2ZWAgcHJvcGVydHlcbiAgICB9XG4gICAgLyoqIHV0aWwucHJvbWlzaWZ5IGltcGxlbWVudGF0aW9ucyAqL1xuICAgIHtcbiAgICAgICAgLy8gVE9ETyBhZGQgcHJvbWlzaWZpZWQgYGZzLnJlYWR2YCBhbmQgYGZzLndyaXRldmAsIG9uY2UgdGhleSBhcmUgaW1wbGVtZW50ZWRcbiAgICAgICAgLy8gT3ZlcnJpZGUgdGhlIHByb21pc2lmaWVkIHZlcnNpb25zIG9mIGBmcy5yZWFkYCBhbmQgYGZzLndyaXRlYCB0byByZXR1cm4gYW4gb2JqZWN0IGFzIHBlclxuICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vbm9kZWpzL25vZGUvYmxvYi9kYzc5ZjNmMzdjYWY2ZjI1YjhlZmVlNDYyM2JlYzMxZTJjMjBmNTk1L2xpYi9mcy5qcyNMNTU5LUw1NjBcbiAgICAgICAgLy8gYW5kXG4gICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlanMvbm9kZS9ibG9iL2RjNzlmM2YzN2NhZjZmMjViOGVmZWU0NjIzYmVjMzFlMmMyMGY1OTUvbGliL2ZzLmpzI0w2OTAtTDY5MVxuICAgICAgICAvLyBhbmRcbiAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL25vZGVqcy9ub2RlL2Jsb2IvYmE2ODQ4MDViNmMwZWRlZDc2ZTVjZDg5ZWUwMDMyOGFjN2E1OTM2NS9saWIvaW50ZXJuYWwvdXRpbC5qcyNMMjkzXG4gICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICAgICAgcGF0Y2hlZEZzLnJlYWRbdXRpbF8xLnByb21pc2lmeS5jdXN0b21dID0gYXN5bmMgKGZkLCBidWZmZXIsIC4uLmFyZ3MpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJlcyA9IGZha2VGcy5yZWFkUHJvbWlzZShmZCwgYnVmZmVyLCAuLi5hcmdzKTtcbiAgICAgICAgICAgIHJldHVybiB7IGJ5dGVzUmVhZDogYXdhaXQgcmVzLCBidWZmZXIgfTtcbiAgICAgICAgfTtcbiAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgICAgICBwYXRjaGVkRnMud3JpdGVbdXRpbF8xLnByb21pc2lmeS5jdXN0b21dID0gYXN5bmMgKGZkLCBidWZmZXIsIC4uLmFyZ3MpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJlcyA9IGZha2VGcy53cml0ZVByb21pc2UoZmQsIGJ1ZmZlciwgLi4uYXJncyk7XG4gICAgICAgICAgICByZXR1cm4geyBieXRlc1dyaXR0ZW46IGF3YWl0IHJlcywgYnVmZmVyIH07XG4gICAgICAgIH07XG4gICAgfVxufVxuZXhwb3J0cy5wYXRjaEZzID0gcGF0Y2hGcztcbmZ1bmN0aW9uIGV4dGVuZEZzKHJlYWxGcywgZmFrZUZzKSB7XG4gICAgY29uc3QgcGF0Y2hlZEZzID0gT2JqZWN0LmNyZWF0ZShyZWFsRnMpO1xuICAgIHBhdGNoRnMocGF0Y2hlZEZzLCBmYWtlRnMpO1xuICAgIHJldHVybiBwYXRjaGVkRnM7XG59XG5leHBvcnRzLmV4dGVuZEZzID0gZXh0ZW5kRnM7XG4iLCAiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLnhmcyA9IHZvaWQgMDtcbmNvbnN0IHRzbGliXzEgPSByZXF1aXJlKFwidHNsaWJcIik7XG5jb25zdCBvc18xID0gdHNsaWJfMS5fX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIm9zXCIpKTtcbmNvbnN0IE5vZGVGU18xID0gcmVxdWlyZShcIi4vTm9kZUZTXCIpO1xuY29uc3QgcGF0aF8xID0gcmVxdWlyZShcIi4vcGF0aFwiKTtcbmZ1bmN0aW9uIGdldFRlbXBOYW1lKHByZWZpeCkge1xuICAgIGNvbnN0IGhhc2ggPSBNYXRoLmNlaWwoTWF0aC5yYW5kb20oKSAqIDB4MTAwMDAwMDAwKS50b1N0cmluZygxNikucGFkU3RhcnQoOCwgYDBgKTtcbiAgICByZXR1cm4gYCR7cHJlZml4fSR7aGFzaH1gO1xufVxuY29uc3QgdG1wZGlycyA9IG5ldyBTZXQoKTtcbmxldCB0bXBFbnYgPSBudWxsO1xuZnVuY3Rpb24gaW5pdFRtcEVudigpIHtcbiAgICBpZiAodG1wRW52KVxuICAgICAgICByZXR1cm4gdG1wRW52O1xuICAgIGNvbnN0IHRtcGRpciA9IHBhdGhfMS5ucGF0aC50b1BvcnRhYmxlUGF0aChvc18xLmRlZmF1bHQudG1wZGlyKCkpO1xuICAgIGNvbnN0IHJlYWxUbXBkaXIgPSBleHBvcnRzLnhmcy5yZWFscGF0aFN5bmModG1wZGlyKTtcbiAgICBwcm9jZXNzLm9uY2UoYGV4aXRgLCAoKSA9PiB7XG4gICAgICAgIGV4cG9ydHMueGZzLnJtdGVtcFN5bmMoKTtcbiAgICB9KTtcbiAgICByZXR1cm4gdG1wRW52ID0ge1xuICAgICAgICB0bXBkaXIsXG4gICAgICAgIHJlYWxUbXBkaXIsXG4gICAgfTtcbn1cbmV4cG9ydHMueGZzID0gT2JqZWN0LmFzc2lnbihuZXcgTm9kZUZTXzEuTm9kZUZTKCksIHtcbiAgICBkZXRhY2hUZW1wKHApIHtcbiAgICAgICAgdG1wZGlycy5kZWxldGUocCk7XG4gICAgfSxcbiAgICBta3RlbXBTeW5jKGNiKSB7XG4gICAgICAgIGNvbnN0IHsgdG1wZGlyLCByZWFsVG1wZGlyIH0gPSBpbml0VG1wRW52KCk7XG4gICAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgICAgICBjb25zdCBuYW1lID0gZ2V0VGVtcE5hbWUoYHhmcy1gKTtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgdGhpcy5ta2RpclN5bmMocGF0aF8xLnBwYXRoLmpvaW4odG1wZGlyLCBuYW1lKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICBpZiAoZXJyb3IuY29kZSA9PT0gYEVFWElTVGApIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCByZWFsUCA9IHBhdGhfMS5wcGF0aC5qb2luKHJlYWxUbXBkaXIsIG5hbWUpO1xuICAgICAgICAgICAgdG1wZGlycy5hZGQocmVhbFApO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBjYiA9PT0gYHVuZGVmaW5lZGApXG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlYWxQO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gY2IocmVhbFApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICAgICAgaWYgKHRtcGRpcnMuaGFzKHJlYWxQKSkge1xuICAgICAgICAgICAgICAgICAgICB0bXBkaXJzLmRlbGV0ZShyZWFsUCk7XG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZVN5bmMocmVhbFApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNhdGNoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRvbyBiYWQgaWYgdGhlcmUncyBhbiBlcnJvclxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSxcbiAgICBhc3luYyBta3RlbXBQcm9taXNlKGNiKSB7XG4gICAgICAgIGNvbnN0IHsgdG1wZGlyLCByZWFsVG1wZGlyIH0gPSBpbml0VG1wRW52KCk7XG4gICAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgICAgICBjb25zdCBuYW1lID0gZ2V0VGVtcE5hbWUoYHhmcy1gKTtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5ta2RpclByb21pc2UocGF0aF8xLnBwYXRoLmpvaW4odG1wZGlyLCBuYW1lKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICBpZiAoZXJyb3IuY29kZSA9PT0gYEVFWElTVGApIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCByZWFsUCA9IHBhdGhfMS5wcGF0aC5qb2luKHJlYWxUbXBkaXIsIG5hbWUpO1xuICAgICAgICAgICAgdG1wZGlycy5hZGQocmVhbFApO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBjYiA9PT0gYHVuZGVmaW5lZGApXG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlYWxQO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYXdhaXQgY2IocmVhbFApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICAgICAgaWYgKHRtcGRpcnMuaGFzKHJlYWxQKSkge1xuICAgICAgICAgICAgICAgICAgICB0bXBkaXJzLmRlbGV0ZShyZWFsUCk7XG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLnJlbW92ZVByb21pc2UocmVhbFApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNhdGNoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRvbyBiYWQgaWYgdGhlcmUncyBhbiBlcnJvclxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSxcbiAgICBhc3luYyBybXRlbXBQcm9taXNlKCkge1xuICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChBcnJheS5mcm9tKHRtcGRpcnMudmFsdWVzKCkpLm1hcChhc3luYyAocCkgPT4ge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBhd2FpdCBleHBvcnRzLnhmcy5yZW1vdmVQcm9taXNlKHAsIHsgbWF4UmV0cmllczogMCB9KTtcbiAgICAgICAgICAgICAgICB0bXBkaXJzLmRlbGV0ZShwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIHtcbiAgICAgICAgICAgICAgICAvLyBUb28gYmFkIGlmIHRoZXJlJ3MgYW4gZXJyb3JcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSkpO1xuICAgIH0sXG4gICAgcm10ZW1wU3luYygpIHtcbiAgICAgICAgZm9yIChjb25zdCBwIG9mIHRtcGRpcnMpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgZXhwb3J0cy54ZnMucmVtb3ZlU3luYyhwKTtcbiAgICAgICAgICAgICAgICB0bXBkaXJzLmRlbGV0ZShwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIHtcbiAgICAgICAgICAgICAgICAvLyBUb28gYmFkIGlmIHRoZXJlJ3MgYW4gZXJyb3JcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sXG59KTtcbiIsICJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMueGZzID0gZXhwb3J0cy5leHRlbmRGcyA9IGV4cG9ydHMucGF0Y2hGcyA9IGV4cG9ydHMuVmlydHVhbEZTID0gZXhwb3J0cy5Qcm94aWVkRlMgPSBleHBvcnRzLlBvc2l4RlMgPSBleHBvcnRzLk5vZGVGUyA9IGV4cG9ydHMuTm9GUyA9IGV4cG9ydHMuTW91bnRGUyA9IGV4cG9ydHMuTGF6eUZTID0gZXhwb3J0cy5KYWlsRlMgPSBleHBvcnRzLkN3ZEZTID0gZXhwb3J0cy5CYXNlUG9ydGFibGVGYWtlRlMgPSBleHBvcnRzLkZha2VGUyA9IGV4cG9ydHMuQWxpYXNGUyA9IGV4cG9ydHMudG9GaWxlbmFtZSA9IGV4cG9ydHMucHBhdGggPSBleHBvcnRzLm5wYXRoID0gZXhwb3J0cy5GaWxlbmFtZSA9IGV4cG9ydHMuUG9ydGFibGVQYXRoID0gZXhwb3J0cy5ub3JtYWxpemVMaW5lRW5kaW5ncyA9IGV4cG9ydHMudW53YXRjaEFsbEZpbGVzID0gZXhwb3J0cy51bndhdGNoRmlsZSA9IGV4cG9ydHMud2F0Y2hGaWxlID0gZXhwb3J0cy5vcGVuZGlyID0gZXhwb3J0cy5zZXR1cENvcHlJbmRleCA9IGV4cG9ydHMuc3RhdFV0aWxzID0gZXhwb3J0cy5lcnJvcnMgPSBleHBvcnRzLmNvbnN0YW50cyA9IHZvaWQgMDtcbmNvbnN0IHRzbGliXzEgPSByZXF1aXJlKFwidHNsaWJcIik7XG5jb25zdCBjb25zdGFudHMgPSB0c2xpYl8xLl9faW1wb3J0U3RhcihyZXF1aXJlKFwiLi9jb25zdGFudHNcIikpO1xuZXhwb3J0cy5jb25zdGFudHMgPSBjb25zdGFudHM7XG5jb25zdCBlcnJvcnMgPSB0c2xpYl8xLl9faW1wb3J0U3RhcihyZXF1aXJlKFwiLi9lcnJvcnNcIikpO1xuZXhwb3J0cy5lcnJvcnMgPSBlcnJvcnM7XG5jb25zdCBzdGF0VXRpbHMgPSB0c2xpYl8xLl9faW1wb3J0U3RhcihyZXF1aXJlKFwiLi9zdGF0VXRpbHNcIikpO1xuZXhwb3J0cy5zdGF0VXRpbHMgPSBzdGF0VXRpbHM7XG52YXIgY29weVByb21pc2VfMSA9IHJlcXVpcmUoXCIuL2FsZ29yaXRobXMvY29weVByb21pc2VcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJzZXR1cENvcHlJbmRleFwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gY29weVByb21pc2VfMS5zZXR1cENvcHlJbmRleDsgfSB9KTtcbnZhciBvcGVuZGlyXzEgPSByZXF1aXJlKFwiLi9hbGdvcml0aG1zL29wZW5kaXJcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJvcGVuZGlyXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBvcGVuZGlyXzEub3BlbmRpcjsgfSB9KTtcbnZhciB3YXRjaEZpbGVfMSA9IHJlcXVpcmUoXCIuL2FsZ29yaXRobXMvd2F0Y2hGaWxlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwid2F0Y2hGaWxlXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiB3YXRjaEZpbGVfMS53YXRjaEZpbGU7IH0gfSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJ1bndhdGNoRmlsZVwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gd2F0Y2hGaWxlXzEudW53YXRjaEZpbGU7IH0gfSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJ1bndhdGNoQWxsRmlsZXNcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHdhdGNoRmlsZV8xLnVud2F0Y2hBbGxGaWxlczsgfSB9KTtcbnZhciBGYWtlRlNfMSA9IHJlcXVpcmUoXCIuL0Zha2VGU1wiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIm5vcm1hbGl6ZUxpbmVFbmRpbmdzXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBGYWtlRlNfMS5ub3JtYWxpemVMaW5lRW5kaW5nczsgfSB9KTtcbnZhciBwYXRoXzEgPSByZXF1aXJlKFwiLi9wYXRoXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiUG9ydGFibGVQYXRoXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBwYXRoXzEuUG9ydGFibGVQYXRoOyB9IH0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiRmlsZW5hbWVcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHBhdGhfMS5GaWxlbmFtZTsgfSB9KTtcbnZhciBwYXRoXzIgPSByZXF1aXJlKFwiLi9wYXRoXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwibnBhdGhcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHBhdGhfMi5ucGF0aDsgfSB9KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcInBwYXRoXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBwYXRoXzIucHBhdGg7IH0gfSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJ0b0ZpbGVuYW1lXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBwYXRoXzIudG9GaWxlbmFtZTsgfSB9KTtcbnZhciBBbGlhc0ZTXzEgPSByZXF1aXJlKFwiLi9BbGlhc0ZTXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiQWxpYXNGU1wiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gQWxpYXNGU18xLkFsaWFzRlM7IH0gfSk7XG52YXIgRmFrZUZTXzIgPSByZXF1aXJlKFwiLi9GYWtlRlNcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJGYWtlRlNcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIEZha2VGU18yLkZha2VGUzsgfSB9KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkJhc2VQb3J0YWJsZUZha2VGU1wiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gRmFrZUZTXzIuQmFzZVBvcnRhYmxlRmFrZUZTOyB9IH0pO1xudmFyIEN3ZEZTXzEgPSByZXF1aXJlKFwiLi9Dd2RGU1wiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkN3ZEZTXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBDd2RGU18xLkN3ZEZTOyB9IH0pO1xudmFyIEphaWxGU18xID0gcmVxdWlyZShcIi4vSmFpbEZTXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiSmFpbEZTXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBKYWlsRlNfMS5KYWlsRlM7IH0gfSk7XG52YXIgTGF6eUZTXzEgPSByZXF1aXJlKFwiLi9MYXp5RlNcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJMYXp5RlNcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIExhenlGU18xLkxhenlGUzsgfSB9KTtcbnZhciBNb3VudEZTXzEgPSByZXF1aXJlKFwiLi9Nb3VudEZTXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiTW91bnRGU1wiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gTW91bnRGU18xLk1vdW50RlM7IH0gfSk7XG52YXIgTm9GU18xID0gcmVxdWlyZShcIi4vTm9GU1wiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIk5vRlNcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIE5vRlNfMS5Ob0ZTOyB9IH0pO1xudmFyIE5vZGVGU18xID0gcmVxdWlyZShcIi4vTm9kZUZTXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiTm9kZUZTXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBOb2RlRlNfMS5Ob2RlRlM7IH0gfSk7XG52YXIgUG9zaXhGU18xID0gcmVxdWlyZShcIi4vUG9zaXhGU1wiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlBvc2l4RlNcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIFBvc2l4RlNfMS5Qb3NpeEZTOyB9IH0pO1xudmFyIFByb3hpZWRGU18xID0gcmVxdWlyZShcIi4vUHJveGllZEZTXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiUHJveGllZEZTXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBQcm94aWVkRlNfMS5Qcm94aWVkRlM7IH0gfSk7XG52YXIgVmlydHVhbEZTXzEgPSByZXF1aXJlKFwiLi9WaXJ0dWFsRlNcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJWaXJ0dWFsRlNcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIFZpcnR1YWxGU18xLlZpcnR1YWxGUzsgfSB9KTtcbnZhciBwYXRjaEZzXzEgPSByZXF1aXJlKFwiLi9wYXRjaEZzL3BhdGNoRnNcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJwYXRjaEZzXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBwYXRjaEZzXzEucGF0Y2hGczsgfSB9KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImV4dGVuZEZzXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBwYXRjaEZzXzEuZXh0ZW5kRnM7IH0gfSk7XG52YXIgeGZzXzEgPSByZXF1aXJlKFwiLi94ZnNcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJ4ZnNcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHhmc18xLnhmczsgfSB9KTtcbiIsICJtb2R1bGUuZXhwb3J0cyA9IGlzZXhlXG5pc2V4ZS5zeW5jID0gc3luY1xuXG52YXIgZnMgPSByZXF1aXJlKCdmcycpXG5cbmZ1bmN0aW9uIGNoZWNrUGF0aEV4dCAocGF0aCwgb3B0aW9ucykge1xuICB2YXIgcGF0aGV4dCA9IG9wdGlvbnMucGF0aEV4dCAhPT0gdW5kZWZpbmVkID9cbiAgICBvcHRpb25zLnBhdGhFeHQgOiBwcm9jZXNzLmVudi5QQVRIRVhUXG5cbiAgaWYgKCFwYXRoZXh0KSB7XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIHBhdGhleHQgPSBwYXRoZXh0LnNwbGl0KCc7JylcbiAgaWYgKHBhdGhleHQuaW5kZXhPZignJykgIT09IC0xKSB7XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuICBmb3IgKHZhciBpID0gMDsgaSA8IHBhdGhleHQubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgcCA9IHBhdGhleHRbaV0udG9Mb3dlckNhc2UoKVxuICAgIGlmIChwICYmIHBhdGguc3Vic3RyKC1wLmxlbmd0aCkudG9Mb3dlckNhc2UoKSA9PT0gcCkge1xuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZhbHNlXG59XG5cbmZ1bmN0aW9uIGNoZWNrU3RhdCAoc3RhdCwgcGF0aCwgb3B0aW9ucykge1xuICBpZiAoIXN0YXQuaXNTeW1ib2xpY0xpbmsoKSAmJiAhc3RhdC5pc0ZpbGUoKSkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG4gIHJldHVybiBjaGVja1BhdGhFeHQocGF0aCwgb3B0aW9ucylcbn1cblxuZnVuY3Rpb24gaXNleGUgKHBhdGgsIG9wdGlvbnMsIGNiKSB7XG4gIGZzLnN0YXQocGF0aCwgZnVuY3Rpb24gKGVyLCBzdGF0KSB7XG4gICAgY2IoZXIsIGVyID8gZmFsc2UgOiBjaGVja1N0YXQoc3RhdCwgcGF0aCwgb3B0aW9ucykpXG4gIH0pXG59XG5cbmZ1bmN0aW9uIHN5bmMgKHBhdGgsIG9wdGlvbnMpIHtcbiAgcmV0dXJuIGNoZWNrU3RhdChmcy5zdGF0U3luYyhwYXRoKSwgcGF0aCwgb3B0aW9ucylcbn1cbiIsICJtb2R1bGUuZXhwb3J0cyA9IGlzZXhlXG5pc2V4ZS5zeW5jID0gc3luY1xuXG52YXIgZnMgPSByZXF1aXJlKCdmcycpXG5cbmZ1bmN0aW9uIGlzZXhlIChwYXRoLCBvcHRpb25zLCBjYikge1xuICBmcy5zdGF0KHBhdGgsIGZ1bmN0aW9uIChlciwgc3RhdCkge1xuICAgIGNiKGVyLCBlciA/IGZhbHNlIDogY2hlY2tTdGF0KHN0YXQsIG9wdGlvbnMpKVxuICB9KVxufVxuXG5mdW5jdGlvbiBzeW5jIChwYXRoLCBvcHRpb25zKSB7XG4gIHJldHVybiBjaGVja1N0YXQoZnMuc3RhdFN5bmMocGF0aCksIG9wdGlvbnMpXG59XG5cbmZ1bmN0aW9uIGNoZWNrU3RhdCAoc3RhdCwgb3B0aW9ucykge1xuICByZXR1cm4gc3RhdC5pc0ZpbGUoKSAmJiBjaGVja01vZGUoc3RhdCwgb3B0aW9ucylcbn1cblxuZnVuY3Rpb24gY2hlY2tNb2RlIChzdGF0LCBvcHRpb25zKSB7XG4gIHZhciBtb2QgPSBzdGF0Lm1vZGVcbiAgdmFyIHVpZCA9IHN0YXQudWlkXG4gIHZhciBnaWQgPSBzdGF0LmdpZFxuXG4gIHZhciBteVVpZCA9IG9wdGlvbnMudWlkICE9PSB1bmRlZmluZWQgP1xuICAgIG9wdGlvbnMudWlkIDogcHJvY2Vzcy5nZXR1aWQgJiYgcHJvY2Vzcy5nZXR1aWQoKVxuICB2YXIgbXlHaWQgPSBvcHRpb25zLmdpZCAhPT0gdW5kZWZpbmVkID9cbiAgICBvcHRpb25zLmdpZCA6IHByb2Nlc3MuZ2V0Z2lkICYmIHByb2Nlc3MuZ2V0Z2lkKClcblxuICB2YXIgdSA9IHBhcnNlSW50KCcxMDAnLCA4KVxuICB2YXIgZyA9IHBhcnNlSW50KCcwMTAnLCA4KVxuICB2YXIgbyA9IHBhcnNlSW50KCcwMDEnLCA4KVxuICB2YXIgdWcgPSB1IHwgZ1xuXG4gIHZhciByZXQgPSAobW9kICYgbykgfHxcbiAgICAobW9kICYgZykgJiYgZ2lkID09PSBteUdpZCB8fFxuICAgIChtb2QgJiB1KSAmJiB1aWQgPT09IG15VWlkIHx8XG4gICAgKG1vZCAmIHVnKSAmJiBteVVpZCA9PT0gMFxuXG4gIHJldHVybiByZXRcbn1cbiIsICJ2YXIgZnMgPSByZXF1aXJlKCdmcycpXG52YXIgY29yZVxuaWYgKHByb2Nlc3MucGxhdGZvcm0gPT09ICd3aW4zMicgfHwgZ2xvYmFsLlRFU1RJTkdfV0lORE9XUykge1xuICBjb3JlID0gcmVxdWlyZSgnLi93aW5kb3dzLmpzJylcbn0gZWxzZSB7XG4gIGNvcmUgPSByZXF1aXJlKCcuL21vZGUuanMnKVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzZXhlXG5pc2V4ZS5zeW5jID0gc3luY1xuXG5mdW5jdGlvbiBpc2V4ZSAocGF0aCwgb3B0aW9ucywgY2IpIHtcbiAgaWYgKHR5cGVvZiBvcHRpb25zID09PSAnZnVuY3Rpb24nKSB7XG4gICAgY2IgPSBvcHRpb25zXG4gICAgb3B0aW9ucyA9IHt9XG4gIH1cblxuICBpZiAoIWNiKSB7XG4gICAgaWYgKHR5cGVvZiBQcm9taXNlICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdjYWxsYmFjayBub3QgcHJvdmlkZWQnKVxuICAgIH1cblxuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICBpc2V4ZShwYXRoLCBvcHRpb25zIHx8IHt9LCBmdW5jdGlvbiAoZXIsIGlzKSB7XG4gICAgICAgIGlmIChlcikge1xuICAgICAgICAgIHJlamVjdChlcilcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXNvbHZlKGlzKVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH0pXG4gIH1cblxuICBjb3JlKHBhdGgsIG9wdGlvbnMgfHwge30sIGZ1bmN0aW9uIChlciwgaXMpIHtcbiAgICAvLyBpZ25vcmUgRUFDQ0VTIGJlY2F1c2UgdGhhdCBqdXN0IG1lYW5zIHdlIGFyZW4ndCBhbGxvd2VkIHRvIHJ1biBpdFxuICAgIGlmIChlcikge1xuICAgICAgaWYgKGVyLmNvZGUgPT09ICdFQUNDRVMnIHx8IG9wdGlvbnMgJiYgb3B0aW9ucy5pZ25vcmVFcnJvcnMpIHtcbiAgICAgICAgZXIgPSBudWxsXG4gICAgICAgIGlzID0gZmFsc2VcbiAgICAgIH1cbiAgICB9XG4gICAgY2IoZXIsIGlzKVxuICB9KVxufVxuXG5mdW5jdGlvbiBzeW5jIChwYXRoLCBvcHRpb25zKSB7XG4gIC8vIG15IGtpbmdkb20gZm9yIGEgZmlsdGVyZWQgY2F0Y2hcbiAgdHJ5IHtcbiAgICByZXR1cm4gY29yZS5zeW5jKHBhdGgsIG9wdGlvbnMgfHwge30pXG4gIH0gY2F0Y2ggKGVyKSB7XG4gICAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5pZ25vcmVFcnJvcnMgfHwgZXIuY29kZSA9PT0gJ0VBQ0NFUycpIHtcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBlclxuICAgIH1cbiAgfVxufVxuIiwgImNvbnN0IGlzV2luZG93cyA9IHByb2Nlc3MucGxhdGZvcm0gPT09ICd3aW4zMicgfHxcbiAgICBwcm9jZXNzLmVudi5PU1RZUEUgPT09ICdjeWd3aW4nIHx8XG4gICAgcHJvY2Vzcy5lbnYuT1NUWVBFID09PSAnbXN5cydcblxuY29uc3QgcGF0aCA9IHJlcXVpcmUoJ3BhdGgnKVxuY29uc3QgQ09MT04gPSBpc1dpbmRvd3MgPyAnOycgOiAnOidcbmNvbnN0IGlzZXhlID0gcmVxdWlyZSgnaXNleGUnKVxuXG5jb25zdCBnZXROb3RGb3VuZEVycm9yID0gKGNtZCkgPT5cbiAgT2JqZWN0LmFzc2lnbihuZXcgRXJyb3IoYG5vdCBmb3VuZDogJHtjbWR9YCksIHsgY29kZTogJ0VOT0VOVCcgfSlcblxuY29uc3QgZ2V0UGF0aEluZm8gPSAoY21kLCBvcHQpID0+IHtcbiAgY29uc3QgY29sb24gPSBvcHQuY29sb24gfHwgQ09MT05cblxuICAvLyBJZiBpdCBoYXMgYSBzbGFzaCwgdGhlbiB3ZSBkb24ndCBib3RoZXIgc2VhcmNoaW5nIHRoZSBwYXRoZW52LlxuICAvLyBqdXN0IGNoZWNrIHRoZSBmaWxlIGl0c2VsZiwgYW5kIHRoYXQncyBpdC5cbiAgY29uc3QgcGF0aEVudiA9IGNtZC5tYXRjaCgvXFwvLykgfHwgaXNXaW5kb3dzICYmIGNtZC5tYXRjaCgvXFxcXC8pID8gWycnXVxuICAgIDogKFxuICAgICAgW1xuICAgICAgICAvLyB3aW5kb3dzIGFsd2F5cyBjaGVja3MgdGhlIGN3ZCBmaXJzdFxuICAgICAgICAuLi4oaXNXaW5kb3dzID8gW3Byb2Nlc3MuY3dkKCldIDogW10pLFxuICAgICAgICAuLi4ob3B0LnBhdGggfHwgcHJvY2Vzcy5lbnYuUEFUSCB8fFxuICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0OiB2ZXJ5IHVudXN1YWwgKi8gJycpLnNwbGl0KGNvbG9uKSxcbiAgICAgIF1cbiAgICApXG4gIGNvbnN0IHBhdGhFeHRFeGUgPSBpc1dpbmRvd3NcbiAgICA/IG9wdC5wYXRoRXh0IHx8IHByb2Nlc3MuZW52LlBBVEhFWFQgfHwgJy5FWEU7LkNNRDsuQkFUOy5DT00nXG4gICAgOiAnJ1xuICBjb25zdCBwYXRoRXh0ID0gaXNXaW5kb3dzID8gcGF0aEV4dEV4ZS5zcGxpdChjb2xvbikgOiBbJyddXG5cbiAgaWYgKGlzV2luZG93cykge1xuICAgIGlmIChjbWQuaW5kZXhPZignLicpICE9PSAtMSAmJiBwYXRoRXh0WzBdICE9PSAnJylcbiAgICAgIHBhdGhFeHQudW5zaGlmdCgnJylcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgcGF0aEVudixcbiAgICBwYXRoRXh0LFxuICAgIHBhdGhFeHRFeGUsXG4gIH1cbn1cblxuY29uc3Qgd2hpY2ggPSAoY21kLCBvcHQsIGNiKSA9PiB7XG4gIGlmICh0eXBlb2Ygb3B0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgY2IgPSBvcHRcbiAgICBvcHQgPSB7fVxuICB9XG4gIGlmICghb3B0KVxuICAgIG9wdCA9IHt9XG5cbiAgY29uc3QgeyBwYXRoRW52LCBwYXRoRXh0LCBwYXRoRXh0RXhlIH0gPSBnZXRQYXRoSW5mbyhjbWQsIG9wdClcbiAgY29uc3QgZm91bmQgPSBbXVxuXG4gIGNvbnN0IHN0ZXAgPSBpID0+IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBpZiAoaSA9PT0gcGF0aEVudi5sZW5ndGgpXG4gICAgICByZXR1cm4gb3B0LmFsbCAmJiBmb3VuZC5sZW5ndGggPyByZXNvbHZlKGZvdW5kKVxuICAgICAgICA6IHJlamVjdChnZXROb3RGb3VuZEVycm9yKGNtZCkpXG5cbiAgICBjb25zdCBwcFJhdyA9IHBhdGhFbnZbaV1cbiAgICBjb25zdCBwYXRoUGFydCA9IC9eXCIuKlwiJC8udGVzdChwcFJhdykgPyBwcFJhdy5zbGljZSgxLCAtMSkgOiBwcFJhd1xuXG4gICAgY29uc3QgcENtZCA9IHBhdGguam9pbihwYXRoUGFydCwgY21kKVxuICAgIGNvbnN0IHAgPSAhcGF0aFBhcnQgJiYgL15cXC5bXFxcXFxcL10vLnRlc3QoY21kKSA/IGNtZC5zbGljZSgwLCAyKSArIHBDbWRcbiAgICAgIDogcENtZFxuXG4gICAgcmVzb2x2ZShzdWJTdGVwKHAsIGksIDApKVxuICB9KVxuXG4gIGNvbnN0IHN1YlN0ZXAgPSAocCwgaSwgaWkpID0+IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBpZiAoaWkgPT09IHBhdGhFeHQubGVuZ3RoKVxuICAgICAgcmV0dXJuIHJlc29sdmUoc3RlcChpICsgMSkpXG4gICAgY29uc3QgZXh0ID0gcGF0aEV4dFtpaV1cbiAgICBpc2V4ZShwICsgZXh0LCB7IHBhdGhFeHQ6IHBhdGhFeHRFeGUgfSwgKGVyLCBpcykgPT4ge1xuICAgICAgaWYgKCFlciAmJiBpcykge1xuICAgICAgICBpZiAob3B0LmFsbClcbiAgICAgICAgICBmb3VuZC5wdXNoKHAgKyBleHQpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICByZXR1cm4gcmVzb2x2ZShwICsgZXh0KVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc29sdmUoc3ViU3RlcChwLCBpLCBpaSArIDEpKVxuICAgIH0pXG4gIH0pXG5cbiAgcmV0dXJuIGNiID8gc3RlcCgwKS50aGVuKHJlcyA9PiBjYihudWxsLCByZXMpLCBjYikgOiBzdGVwKDApXG59XG5cbmNvbnN0IHdoaWNoU3luYyA9IChjbWQsIG9wdCkgPT4ge1xuICBvcHQgPSBvcHQgfHwge31cblxuICBjb25zdCB7IHBhdGhFbnYsIHBhdGhFeHQsIHBhdGhFeHRFeGUgfSA9IGdldFBhdGhJbmZvKGNtZCwgb3B0KVxuICBjb25zdCBmb3VuZCA9IFtdXG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBwYXRoRW52Lmxlbmd0aDsgaSArKykge1xuICAgIGNvbnN0IHBwUmF3ID0gcGF0aEVudltpXVxuICAgIGNvbnN0IHBhdGhQYXJ0ID0gL15cIi4qXCIkLy50ZXN0KHBwUmF3KSA/IHBwUmF3LnNsaWNlKDEsIC0xKSA6IHBwUmF3XG5cbiAgICBjb25zdCBwQ21kID0gcGF0aC5qb2luKHBhdGhQYXJ0LCBjbWQpXG4gICAgY29uc3QgcCA9ICFwYXRoUGFydCAmJiAvXlxcLltcXFxcXFwvXS8udGVzdChjbWQpID8gY21kLnNsaWNlKDAsIDIpICsgcENtZFxuICAgICAgOiBwQ21kXG5cbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IHBhdGhFeHQubGVuZ3RoOyBqICsrKSB7XG4gICAgICBjb25zdCBjdXIgPSBwICsgcGF0aEV4dFtqXVxuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgaXMgPSBpc2V4ZS5zeW5jKGN1ciwgeyBwYXRoRXh0OiBwYXRoRXh0RXhlIH0pXG4gICAgICAgIGlmIChpcykge1xuICAgICAgICAgIGlmIChvcHQuYWxsKVxuICAgICAgICAgICAgZm91bmQucHVzaChjdXIpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgcmV0dXJuIGN1clxuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChleCkge31cbiAgICB9XG4gIH1cblxuICBpZiAob3B0LmFsbCAmJiBmb3VuZC5sZW5ndGgpXG4gICAgcmV0dXJuIGZvdW5kXG5cbiAgaWYgKG9wdC5ub3Rocm93KVxuICAgIHJldHVybiBudWxsXG5cbiAgdGhyb3cgZ2V0Tm90Rm91bmRFcnJvcihjbWQpXG59XG5cbm1vZHVsZS5leHBvcnRzID0gd2hpY2hcbndoaWNoLnN5bmMgPSB3aGljaFN5bmNcbiIsICIndXNlIHN0cmljdCc7XG5cbmNvbnN0IHBhdGhLZXkgPSAob3B0aW9ucyA9IHt9KSA9PiB7XG5cdGNvbnN0IGVudmlyb25tZW50ID0gb3B0aW9ucy5lbnYgfHwgcHJvY2Vzcy5lbnY7XG5cdGNvbnN0IHBsYXRmb3JtID0gb3B0aW9ucy5wbGF0Zm9ybSB8fCBwcm9jZXNzLnBsYXRmb3JtO1xuXG5cdGlmIChwbGF0Zm9ybSAhPT0gJ3dpbjMyJykge1xuXHRcdHJldHVybiAnUEFUSCc7XG5cdH1cblxuXHRyZXR1cm4gT2JqZWN0LmtleXMoZW52aXJvbm1lbnQpLnJldmVyc2UoKS5maW5kKGtleSA9PiBrZXkudG9VcHBlckNhc2UoKSA9PT0gJ1BBVEgnKSB8fCAnUGF0aCc7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IHBhdGhLZXk7XG4vLyBUT0RPOiBSZW1vdmUgdGhpcyBmb3IgdGhlIG5leHQgbWFqb3IgcmVsZWFzZVxubW9kdWxlLmV4cG9ydHMuZGVmYXVsdCA9IHBhdGhLZXk7XG4iLCAiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBwYXRoID0gcmVxdWlyZSgncGF0aCcpO1xuY29uc3Qgd2hpY2ggPSByZXF1aXJlKCd3aGljaCcpO1xuY29uc3QgZ2V0UGF0aEtleSA9IHJlcXVpcmUoJ3BhdGgta2V5Jyk7XG5cbmZ1bmN0aW9uIHJlc29sdmVDb21tYW5kQXR0ZW1wdChwYXJzZWQsIHdpdGhvdXRQYXRoRXh0KSB7XG4gICAgY29uc3QgZW52ID0gcGFyc2VkLm9wdGlvbnMuZW52IHx8IHByb2Nlc3MuZW52O1xuICAgIGNvbnN0IGN3ZCA9IHByb2Nlc3MuY3dkKCk7XG4gICAgY29uc3QgaGFzQ3VzdG9tQ3dkID0gcGFyc2VkLm9wdGlvbnMuY3dkICE9IG51bGw7XG4gICAgLy8gV29ya2VyIHRocmVhZHMgZG8gbm90IGhhdmUgcHJvY2Vzcy5jaGRpcigpXG4gICAgY29uc3Qgc2hvdWxkU3dpdGNoQ3dkID0gaGFzQ3VzdG9tQ3dkICYmIHByb2Nlc3MuY2hkaXIgIT09IHVuZGVmaW5lZCAmJiAhcHJvY2Vzcy5jaGRpci5kaXNhYmxlZDtcblxuICAgIC8vIElmIGEgY3VzdG9tIGBjd2RgIHdhcyBzcGVjaWZpZWQsIHdlIG5lZWQgdG8gY2hhbmdlIHRoZSBwcm9jZXNzIGN3ZFxuICAgIC8vIGJlY2F1c2UgYHdoaWNoYCB3aWxsIGRvIHN0YXQgY2FsbHMgYnV0IGRvZXMgbm90IHN1cHBvcnQgYSBjdXN0b20gY3dkXG4gICAgaWYgKHNob3VsZFN3aXRjaEN3ZCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgcHJvY2Vzcy5jaGRpcihwYXJzZWQub3B0aW9ucy5jd2QpO1xuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIC8qIEVtcHR5ICovXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgcmVzb2x2ZWQ7XG5cbiAgICB0cnkge1xuICAgICAgICByZXNvbHZlZCA9IHdoaWNoLnN5bmMocGFyc2VkLmNvbW1hbmQsIHtcbiAgICAgICAgICAgIHBhdGg6IGVudltnZXRQYXRoS2V5KHsgZW52IH0pXSxcbiAgICAgICAgICAgIHBhdGhFeHQ6IHdpdGhvdXRQYXRoRXh0ID8gcGF0aC5kZWxpbWl0ZXIgOiB1bmRlZmluZWQsXG4gICAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgLyogRW1wdHkgKi9cbiAgICB9IGZpbmFsbHkge1xuICAgICAgICBpZiAoc2hvdWxkU3dpdGNoQ3dkKSB7XG4gICAgICAgICAgICBwcm9jZXNzLmNoZGlyKGN3ZCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBJZiB3ZSBzdWNjZXNzZnVsbHkgcmVzb2x2ZWQsIGVuc3VyZSB0aGF0IGFuIGFic29sdXRlIHBhdGggaXMgcmV0dXJuZWRcbiAgICAvLyBOb3RlIHRoYXQgd2hlbiBhIGN1c3RvbSBgY3dkYCB3YXMgdXNlZCwgd2UgbmVlZCB0byByZXNvbHZlIHRvIGFuIGFic29sdXRlIHBhdGggYmFzZWQgb24gaXRcbiAgICBpZiAocmVzb2x2ZWQpIHtcbiAgICAgICAgcmVzb2x2ZWQgPSBwYXRoLnJlc29sdmUoaGFzQ3VzdG9tQ3dkID8gcGFyc2VkLm9wdGlvbnMuY3dkIDogJycsIHJlc29sdmVkKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzb2x2ZWQ7XG59XG5cbmZ1bmN0aW9uIHJlc29sdmVDb21tYW5kKHBhcnNlZCkge1xuICAgIHJldHVybiByZXNvbHZlQ29tbWFuZEF0dGVtcHQocGFyc2VkKSB8fCByZXNvbHZlQ29tbWFuZEF0dGVtcHQocGFyc2VkLCB0cnVlKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSByZXNvbHZlQ29tbWFuZDtcbiIsICIndXNlIHN0cmljdCc7XG5cbi8vIFNlZSBodHRwOi8vd3d3LnJvYnZhbmRlcndvdWRlLmNvbS9lc2NhcGVjaGFycy5waHBcbmNvbnN0IG1ldGFDaGFyc1JlZ0V4cCA9IC8oWygpXFxdWyUhXlwiYDw+Jnw7LCAqP10pL2c7XG5cbmZ1bmN0aW9uIGVzY2FwZUNvbW1hbmQoYXJnKSB7XG4gICAgLy8gRXNjYXBlIG1ldGEgY2hhcnNcbiAgICBhcmcgPSBhcmcucmVwbGFjZShtZXRhQ2hhcnNSZWdFeHAsICdeJDEnKTtcblxuICAgIHJldHVybiBhcmc7XG59XG5cbmZ1bmN0aW9uIGVzY2FwZUFyZ3VtZW50KGFyZywgZG91YmxlRXNjYXBlTWV0YUNoYXJzKSB7XG4gICAgLy8gQ29udmVydCB0byBzdHJpbmdcbiAgICBhcmcgPSBgJHthcmd9YDtcblxuICAgIC8vIEFsZ29yaXRobSBiZWxvdyBpcyBiYXNlZCBvbiBodHRwczovL3FudG0ub3JnL2NtZFxuXG4gICAgLy8gU2VxdWVuY2Ugb2YgYmFja3NsYXNoZXMgZm9sbG93ZWQgYnkgYSBkb3VibGUgcXVvdGU6XG4gICAgLy8gZG91YmxlIHVwIGFsbCB0aGUgYmFja3NsYXNoZXMgYW5kIGVzY2FwZSB0aGUgZG91YmxlIHF1b3RlXG4gICAgYXJnID0gYXJnLnJlcGxhY2UoLyhcXFxcKilcIi9nLCAnJDEkMVxcXFxcIicpO1xuXG4gICAgLy8gU2VxdWVuY2Ugb2YgYmFja3NsYXNoZXMgZm9sbG93ZWQgYnkgdGhlIGVuZCBvZiB0aGUgc3RyaW5nXG4gICAgLy8gKHdoaWNoIHdpbGwgYmVjb21lIGEgZG91YmxlIHF1b3RlIGxhdGVyKTpcbiAgICAvLyBkb3VibGUgdXAgYWxsIHRoZSBiYWNrc2xhc2hlc1xuICAgIGFyZyA9IGFyZy5yZXBsYWNlKC8oXFxcXCopJC8sICckMSQxJyk7XG5cbiAgICAvLyBBbGwgb3RoZXIgYmFja3NsYXNoZXMgb2NjdXIgbGl0ZXJhbGx5XG5cbiAgICAvLyBRdW90ZSB0aGUgd2hvbGUgdGhpbmc6XG4gICAgYXJnID0gYFwiJHthcmd9XCJgO1xuXG4gICAgLy8gRXNjYXBlIG1ldGEgY2hhcnNcbiAgICBhcmcgPSBhcmcucmVwbGFjZShtZXRhQ2hhcnNSZWdFeHAsICdeJDEnKTtcblxuICAgIC8vIERvdWJsZSBlc2NhcGUgbWV0YSBjaGFycyBpZiBuZWNlc3NhcnlcbiAgICBpZiAoZG91YmxlRXNjYXBlTWV0YUNoYXJzKSB7XG4gICAgICAgIGFyZyA9IGFyZy5yZXBsYWNlKG1ldGFDaGFyc1JlZ0V4cCwgJ14kMScpO1xuICAgIH1cblxuICAgIHJldHVybiBhcmc7XG59XG5cbm1vZHVsZS5leHBvcnRzLmNvbW1hbmQgPSBlc2NhcGVDb21tYW5kO1xubW9kdWxlLmV4cG9ydHMuYXJndW1lbnQgPSBlc2NhcGVBcmd1bWVudDtcbiIsICIndXNlIHN0cmljdCc7XG5tb2R1bGUuZXhwb3J0cyA9IC9eIyEoLiopLztcbiIsICIndXNlIHN0cmljdCc7XG5jb25zdCBzaGViYW5nUmVnZXggPSByZXF1aXJlKCdzaGViYW5nLXJlZ2V4Jyk7XG5cbm1vZHVsZS5leHBvcnRzID0gKHN0cmluZyA9ICcnKSA9PiB7XG5cdGNvbnN0IG1hdGNoID0gc3RyaW5nLm1hdGNoKHNoZWJhbmdSZWdleCk7XG5cblx0aWYgKCFtYXRjaCkge1xuXHRcdHJldHVybiBudWxsO1xuXHR9XG5cblx0Y29uc3QgW3BhdGgsIGFyZ3VtZW50XSA9IG1hdGNoWzBdLnJlcGxhY2UoLyMhID8vLCAnJykuc3BsaXQoJyAnKTtcblx0Y29uc3QgYmluYXJ5ID0gcGF0aC5zcGxpdCgnLycpLnBvcCgpO1xuXG5cdGlmIChiaW5hcnkgPT09ICdlbnYnKSB7XG5cdFx0cmV0dXJuIGFyZ3VtZW50O1xuXHR9XG5cblx0cmV0dXJuIGFyZ3VtZW50ID8gYCR7YmluYXJ5fSAke2FyZ3VtZW50fWAgOiBiaW5hcnk7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcblxuY29uc3QgZnMgPSByZXF1aXJlKCdmcycpO1xuY29uc3Qgc2hlYmFuZ0NvbW1hbmQgPSByZXF1aXJlKCdzaGViYW5nLWNvbW1hbmQnKTtcblxuZnVuY3Rpb24gcmVhZFNoZWJhbmcoY29tbWFuZCkge1xuICAgIC8vIFJlYWQgdGhlIGZpcnN0IDE1MCBieXRlcyBmcm9tIHRoZSBmaWxlXG4gICAgY29uc3Qgc2l6ZSA9IDE1MDtcbiAgICBjb25zdCBidWZmZXIgPSBCdWZmZXIuYWxsb2Moc2l6ZSk7XG5cbiAgICBsZXQgZmQ7XG5cbiAgICB0cnkge1xuICAgICAgICBmZCA9IGZzLm9wZW5TeW5jKGNvbW1hbmQsICdyJyk7XG4gICAgICAgIGZzLnJlYWRTeW5jKGZkLCBidWZmZXIsIDAsIHNpemUsIDApO1xuICAgICAgICBmcy5jbG9zZVN5bmMoZmQpO1xuICAgIH0gY2F0Y2ggKGUpIHsgLyogRW1wdHkgKi8gfVxuXG4gICAgLy8gQXR0ZW1wdCB0byBleHRyYWN0IHNoZWJhbmcgKG51bGwgaXMgcmV0dXJuZWQgaWYgbm90IGEgc2hlYmFuZylcbiAgICByZXR1cm4gc2hlYmFuZ0NvbW1hbmQoYnVmZmVyLnRvU3RyaW5nKCkpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHJlYWRTaGViYW5nO1xuIiwgIid1c2Ugc3RyaWN0JztcblxuY29uc3QgcGF0aCA9IHJlcXVpcmUoJ3BhdGgnKTtcbmNvbnN0IHJlc29sdmVDb21tYW5kID0gcmVxdWlyZSgnLi91dGlsL3Jlc29sdmVDb21tYW5kJyk7XG5jb25zdCBlc2NhcGUgPSByZXF1aXJlKCcuL3V0aWwvZXNjYXBlJyk7XG5jb25zdCByZWFkU2hlYmFuZyA9IHJlcXVpcmUoJy4vdXRpbC9yZWFkU2hlYmFuZycpO1xuXG5jb25zdCBpc1dpbiA9IHByb2Nlc3MucGxhdGZvcm0gPT09ICd3aW4zMic7XG5jb25zdCBpc0V4ZWN1dGFibGVSZWdFeHAgPSAvXFwuKD86Y29tfGV4ZSkkL2k7XG5jb25zdCBpc0NtZFNoaW1SZWdFeHAgPSAvbm9kZV9tb2R1bGVzW1xcXFwvXS5iaW5bXFxcXC9dW15cXFxcL10rXFwuY21kJC9pO1xuXG5mdW5jdGlvbiBkZXRlY3RTaGViYW5nKHBhcnNlZCkge1xuICAgIHBhcnNlZC5maWxlID0gcmVzb2x2ZUNvbW1hbmQocGFyc2VkKTtcblxuICAgIGNvbnN0IHNoZWJhbmcgPSBwYXJzZWQuZmlsZSAmJiByZWFkU2hlYmFuZyhwYXJzZWQuZmlsZSk7XG5cbiAgICBpZiAoc2hlYmFuZykge1xuICAgICAgICBwYXJzZWQuYXJncy51bnNoaWZ0KHBhcnNlZC5maWxlKTtcbiAgICAgICAgcGFyc2VkLmNvbW1hbmQgPSBzaGViYW5nO1xuXG4gICAgICAgIHJldHVybiByZXNvbHZlQ29tbWFuZChwYXJzZWQpO1xuICAgIH1cblxuICAgIHJldHVybiBwYXJzZWQuZmlsZTtcbn1cblxuZnVuY3Rpb24gcGFyc2VOb25TaGVsbChwYXJzZWQpIHtcbiAgICBpZiAoIWlzV2luKSB7XG4gICAgICAgIHJldHVybiBwYXJzZWQ7XG4gICAgfVxuXG4gICAgLy8gRGV0ZWN0ICYgYWRkIHN1cHBvcnQgZm9yIHNoZWJhbmdzXG4gICAgY29uc3QgY29tbWFuZEZpbGUgPSBkZXRlY3RTaGViYW5nKHBhcnNlZCk7XG5cbiAgICAvLyBXZSBkb24ndCBuZWVkIGEgc2hlbGwgaWYgdGhlIGNvbW1hbmQgZmlsZW5hbWUgaXMgYW4gZXhlY3V0YWJsZVxuICAgIGNvbnN0IG5lZWRzU2hlbGwgPSAhaXNFeGVjdXRhYmxlUmVnRXhwLnRlc3QoY29tbWFuZEZpbGUpO1xuXG4gICAgLy8gSWYgYSBzaGVsbCBpcyByZXF1aXJlZCwgdXNlIGNtZC5leGUgYW5kIHRha2UgY2FyZSBvZiBlc2NhcGluZyBldmVyeXRoaW5nIGNvcnJlY3RseVxuICAgIC8vIE5vdGUgdGhhdCBgZm9yY2VTaGVsbGAgaXMgYW4gaGlkZGVuIG9wdGlvbiB1c2VkIG9ubHkgaW4gdGVzdHNcbiAgICBpZiAocGFyc2VkLm9wdGlvbnMuZm9yY2VTaGVsbCB8fCBuZWVkc1NoZWxsKSB7XG4gICAgICAgIC8vIE5lZWQgdG8gZG91YmxlIGVzY2FwZSBtZXRhIGNoYXJzIGlmIHRoZSBjb21tYW5kIGlzIGEgY21kLXNoaW0gbG9jYXRlZCBpbiBgbm9kZV9tb2R1bGVzLy5iaW4vYFxuICAgICAgICAvLyBUaGUgY21kLXNoaW0gc2ltcGx5IGNhbGxzIGV4ZWN1dGUgdGhlIHBhY2thZ2UgYmluIGZpbGUgd2l0aCBOb2RlSlMsIHByb3h5aW5nIGFueSBhcmd1bWVudFxuICAgICAgICAvLyBCZWNhdXNlIHRoZSBlc2NhcGUgb2YgbWV0YWNoYXJzIHdpdGggXiBnZXRzIGludGVycHJldGVkIHdoZW4gdGhlIGNtZC5leGUgaXMgZmlyc3QgY2FsbGVkLFxuICAgICAgICAvLyB3ZSBuZWVkIHRvIGRvdWJsZSBlc2NhcGUgdGhlbVxuICAgICAgICBjb25zdCBuZWVkc0RvdWJsZUVzY2FwZU1ldGFDaGFycyA9IGlzQ21kU2hpbVJlZ0V4cC50ZXN0KGNvbW1hbmRGaWxlKTtcblxuICAgICAgICAvLyBOb3JtYWxpemUgcG9zaXggcGF0aHMgaW50byBPUyBjb21wYXRpYmxlIHBhdGhzIChlLmcuOiBmb28vYmFyIC0+IGZvb1xcYmFyKVxuICAgICAgICAvLyBUaGlzIGlzIG5lY2Vzc2FyeSBvdGhlcndpc2UgaXQgd2lsbCBhbHdheXMgZmFpbCB3aXRoIEVOT0VOVCBpbiB0aG9zZSBjYXNlc1xuICAgICAgICBwYXJzZWQuY29tbWFuZCA9IHBhdGgubm9ybWFsaXplKHBhcnNlZC5jb21tYW5kKTtcblxuICAgICAgICAvLyBFc2NhcGUgY29tbWFuZCAmIGFyZ3VtZW50c1xuICAgICAgICBwYXJzZWQuY29tbWFuZCA9IGVzY2FwZS5jb21tYW5kKHBhcnNlZC5jb21tYW5kKTtcbiAgICAgICAgcGFyc2VkLmFyZ3MgPSBwYXJzZWQuYXJncy5tYXAoKGFyZykgPT4gZXNjYXBlLmFyZ3VtZW50KGFyZywgbmVlZHNEb3VibGVFc2NhcGVNZXRhQ2hhcnMpKTtcblxuICAgICAgICBjb25zdCBzaGVsbENvbW1hbmQgPSBbcGFyc2VkLmNvbW1hbmRdLmNvbmNhdChwYXJzZWQuYXJncykuam9pbignICcpO1xuXG4gICAgICAgIHBhcnNlZC5hcmdzID0gWycvZCcsICcvcycsICcvYycsIGBcIiR7c2hlbGxDb21tYW5kfVwiYF07XG4gICAgICAgIHBhcnNlZC5jb21tYW5kID0gcHJvY2Vzcy5lbnYuY29tc3BlYyB8fCAnY21kLmV4ZSc7XG4gICAgICAgIHBhcnNlZC5vcHRpb25zLndpbmRvd3NWZXJiYXRpbUFyZ3VtZW50cyA9IHRydWU7IC8vIFRlbGwgbm9kZSdzIHNwYXduIHRoYXQgdGhlIGFyZ3VtZW50cyBhcmUgYWxyZWFkeSBlc2NhcGVkXG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcnNlZDtcbn1cblxuZnVuY3Rpb24gcGFyc2UoY29tbWFuZCwgYXJncywgb3B0aW9ucykge1xuICAgIC8vIE5vcm1hbGl6ZSBhcmd1bWVudHMsIHNpbWlsYXIgdG8gbm9kZWpzXG4gICAgaWYgKGFyZ3MgJiYgIUFycmF5LmlzQXJyYXkoYXJncykpIHtcbiAgICAgICAgb3B0aW9ucyA9IGFyZ3M7XG4gICAgICAgIGFyZ3MgPSBudWxsO1xuICAgIH1cblxuICAgIGFyZ3MgPSBhcmdzID8gYXJncy5zbGljZSgwKSA6IFtdOyAvLyBDbG9uZSBhcnJheSB0byBhdm9pZCBjaGFuZ2luZyB0aGUgb3JpZ2luYWxcbiAgICBvcHRpb25zID0gT2JqZWN0LmFzc2lnbih7fSwgb3B0aW9ucyk7IC8vIENsb25lIG9iamVjdCB0byBhdm9pZCBjaGFuZ2luZyB0aGUgb3JpZ2luYWxcblxuICAgIC8vIEJ1aWxkIG91ciBwYXJzZWQgb2JqZWN0XG4gICAgY29uc3QgcGFyc2VkID0ge1xuICAgICAgICBjb21tYW5kLFxuICAgICAgICBhcmdzLFxuICAgICAgICBvcHRpb25zLFxuICAgICAgICBmaWxlOiB1bmRlZmluZWQsXG4gICAgICAgIG9yaWdpbmFsOiB7XG4gICAgICAgICAgICBjb21tYW5kLFxuICAgICAgICAgICAgYXJncyxcbiAgICAgICAgfSxcbiAgICB9O1xuXG4gICAgLy8gRGVsZWdhdGUgZnVydGhlciBwYXJzaW5nIHRvIHNoZWxsIG9yIG5vbi1zaGVsbFxuICAgIHJldHVybiBvcHRpb25zLnNoZWxsID8gcGFyc2VkIDogcGFyc2VOb25TaGVsbChwYXJzZWQpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHBhcnNlO1xuIiwgIid1c2Ugc3RyaWN0JztcblxuY29uc3QgaXNXaW4gPSBwcm9jZXNzLnBsYXRmb3JtID09PSAnd2luMzInO1xuXG5mdW5jdGlvbiBub3RGb3VuZEVycm9yKG9yaWdpbmFsLCBzeXNjYWxsKSB7XG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24obmV3IEVycm9yKGAke3N5c2NhbGx9ICR7b3JpZ2luYWwuY29tbWFuZH0gRU5PRU5UYCksIHtcbiAgICAgICAgY29kZTogJ0VOT0VOVCcsXG4gICAgICAgIGVycm5vOiAnRU5PRU5UJyxcbiAgICAgICAgc3lzY2FsbDogYCR7c3lzY2FsbH0gJHtvcmlnaW5hbC5jb21tYW5kfWAsXG4gICAgICAgIHBhdGg6IG9yaWdpbmFsLmNvbW1hbmQsXG4gICAgICAgIHNwYXduYXJnczogb3JpZ2luYWwuYXJncyxcbiAgICB9KTtcbn1cblxuZnVuY3Rpb24gaG9va0NoaWxkUHJvY2VzcyhjcCwgcGFyc2VkKSB7XG4gICAgaWYgKCFpc1dpbikge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgb3JpZ2luYWxFbWl0ID0gY3AuZW1pdDtcblxuICAgIGNwLmVtaXQgPSBmdW5jdGlvbiAobmFtZSwgYXJnMSkge1xuICAgICAgICAvLyBJZiBlbWl0dGluZyBcImV4aXRcIiBldmVudCBhbmQgZXhpdCBjb2RlIGlzIDEsIHdlIG5lZWQgdG8gY2hlY2sgaWZcbiAgICAgICAgLy8gdGhlIGNvbW1hbmQgZXhpc3RzIGFuZCBlbWl0IGFuIFwiZXJyb3JcIiBpbnN0ZWFkXG4gICAgICAgIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vSW5kaWdvVW5pdGVkL25vZGUtY3Jvc3Mtc3Bhd24vaXNzdWVzLzE2XG4gICAgICAgIGlmIChuYW1lID09PSAnZXhpdCcpIHtcbiAgICAgICAgICAgIGNvbnN0IGVyciA9IHZlcmlmeUVOT0VOVChhcmcxLCBwYXJzZWQsICdzcGF3bicpO1xuXG4gICAgICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG9yaWdpbmFsRW1pdC5jYWxsKGNwLCAnZXJyb3InLCBlcnIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG9yaWdpbmFsRW1pdC5hcHBseShjcCwgYXJndW1lbnRzKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBwcmVmZXItcmVzdC1wYXJhbXNcbiAgICB9O1xufVxuXG5mdW5jdGlvbiB2ZXJpZnlFTk9FTlQoc3RhdHVzLCBwYXJzZWQpIHtcbiAgICBpZiAoaXNXaW4gJiYgc3RhdHVzID09PSAxICYmICFwYXJzZWQuZmlsZSkge1xuICAgICAgICByZXR1cm4gbm90Rm91bmRFcnJvcihwYXJzZWQub3JpZ2luYWwsICdzcGF3bicpO1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xufVxuXG5mdW5jdGlvbiB2ZXJpZnlFTk9FTlRTeW5jKHN0YXR1cywgcGFyc2VkKSB7XG4gICAgaWYgKGlzV2luICYmIHN0YXR1cyA9PT0gMSAmJiAhcGFyc2VkLmZpbGUpIHtcbiAgICAgICAgcmV0dXJuIG5vdEZvdW5kRXJyb3IocGFyc2VkLm9yaWdpbmFsLCAnc3Bhd25TeW5jJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICAgIGhvb2tDaGlsZFByb2Nlc3MsXG4gICAgdmVyaWZ5RU5PRU5ULFxuICAgIHZlcmlmeUVOT0VOVFN5bmMsXG4gICAgbm90Rm91bmRFcnJvcixcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBjcCA9IHJlcXVpcmUoJ2NoaWxkX3Byb2Nlc3MnKTtcbmNvbnN0IHBhcnNlID0gcmVxdWlyZSgnLi9saWIvcGFyc2UnKTtcbmNvbnN0IGVub2VudCA9IHJlcXVpcmUoJy4vbGliL2Vub2VudCcpO1xuXG5mdW5jdGlvbiBzcGF3bihjb21tYW5kLCBhcmdzLCBvcHRpb25zKSB7XG4gICAgLy8gUGFyc2UgdGhlIGFyZ3VtZW50c1xuICAgIGNvbnN0IHBhcnNlZCA9IHBhcnNlKGNvbW1hbmQsIGFyZ3MsIG9wdGlvbnMpO1xuXG4gICAgLy8gU3Bhd24gdGhlIGNoaWxkIHByb2Nlc3NcbiAgICBjb25zdCBzcGF3bmVkID0gY3Auc3Bhd24ocGFyc2VkLmNvbW1hbmQsIHBhcnNlZC5hcmdzLCBwYXJzZWQub3B0aW9ucyk7XG5cbiAgICAvLyBIb29rIGludG8gY2hpbGQgcHJvY2VzcyBcImV4aXRcIiBldmVudCB0byBlbWl0IGFuIGVycm9yIGlmIHRoZSBjb21tYW5kXG4gICAgLy8gZG9lcyBub3QgZXhpc3RzLCBzZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9JbmRpZ29Vbml0ZWQvbm9kZS1jcm9zcy1zcGF3bi9pc3N1ZXMvMTZcbiAgICBlbm9lbnQuaG9va0NoaWxkUHJvY2VzcyhzcGF3bmVkLCBwYXJzZWQpO1xuXG4gICAgcmV0dXJuIHNwYXduZWQ7XG59XG5cbmZ1bmN0aW9uIHNwYXduU3luYyhjb21tYW5kLCBhcmdzLCBvcHRpb25zKSB7XG4gICAgLy8gUGFyc2UgdGhlIGFyZ3VtZW50c1xuICAgIGNvbnN0IHBhcnNlZCA9IHBhcnNlKGNvbW1hbmQsIGFyZ3MsIG9wdGlvbnMpO1xuXG4gICAgLy8gU3Bhd24gdGhlIGNoaWxkIHByb2Nlc3NcbiAgICBjb25zdCByZXN1bHQgPSBjcC5zcGF3blN5bmMocGFyc2VkLmNvbW1hbmQsIHBhcnNlZC5hcmdzLCBwYXJzZWQub3B0aW9ucyk7XG5cbiAgICAvLyBBbmFseXplIGlmIHRoZSBjb21tYW5kIGRvZXMgbm90IGV4aXN0LCBzZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9JbmRpZ29Vbml0ZWQvbm9kZS1jcm9zcy1zcGF3bi9pc3N1ZXMvMTZcbiAgICByZXN1bHQuZXJyb3IgPSByZXN1bHQuZXJyb3IgfHwgZW5vZW50LnZlcmlmeUVOT0VOVFN5bmMocmVzdWx0LnN0YXR1cywgcGFyc2VkKTtcblxuICAgIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc3Bhd247XG5tb2R1bGUuZXhwb3J0cy5zcGF3biA9IHNwYXduO1xubW9kdWxlLmV4cG9ydHMuc3luYyA9IHNwYXduU3luYztcblxubW9kdWxlLmV4cG9ydHMuX3BhcnNlID0gcGFyc2U7XG5tb2R1bGUuZXhwb3J0cy5fZW5vZW50ID0gZW5vZW50O1xuIiwgIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy50cnlJbnN0YW5jZSA9IGV4cG9ydHMuZ2V0SW5zdGFuY2UgPSBleHBvcnRzLnNldEZhY3RvcnkgPSBleHBvcnRzLmNhY2hlZEluc3RhbmNlID0gdm9pZCAwO1xubGV0IHJlZ2lzdGVyZWRGYWN0b3J5ID0gKCkgPT4ge1xuICAgIHRocm93IG5ldyBFcnJvcihgQXNzZXJ0aW9uIGZhaWxlZDogTm8gbGliemlwIGluc3RhbmNlIGlzIGF2YWlsYWJsZSwgYW5kIG5vIGZhY3Rvcnkgd2FzIGNvbmZpZ3VyZWRgKTtcbn07XG5mdW5jdGlvbiBzZXRGYWN0b3J5KGZhY3RvcnkpIHtcbiAgICByZWdpc3RlcmVkRmFjdG9yeSA9IGZhY3Rvcnk7XG59XG5leHBvcnRzLnNldEZhY3RvcnkgPSBzZXRGYWN0b3J5O1xuZnVuY3Rpb24gZ2V0SW5zdGFuY2UoKSB7XG4gICAgaWYgKHR5cGVvZiBleHBvcnRzLmNhY2hlZEluc3RhbmNlID09PSBgdW5kZWZpbmVkYClcbiAgICAgICAgZXhwb3J0cy5jYWNoZWRJbnN0YW5jZSA9IHJlZ2lzdGVyZWRGYWN0b3J5KCk7XG4gICAgcmV0dXJuIGV4cG9ydHMuY2FjaGVkSW5zdGFuY2U7XG59XG5leHBvcnRzLmdldEluc3RhbmNlID0gZ2V0SW5zdGFuY2U7XG5mdW5jdGlvbiB0cnlJbnN0YW5jZSgpIHtcbiAgICByZXR1cm4gZXhwb3J0cy5jYWNoZWRJbnN0YW5jZTtcbn1cbmV4cG9ydHMudHJ5SW5zdGFuY2UgPSB0cnlJbnN0YW5jZTtcbiIsICJ2YXIgZnJvemVuRnMgPSBPYmplY3QuYXNzaWduKHt9LCByZXF1aXJlKFwiZnNcIikpO1xuXG52YXIgY3JlYXRlTW9kdWxlID0gKGZ1bmN0aW9uKCkge1xuICB2YXIgX3NjcmlwdERpciA9XG4gICAgdHlwZW9mIGRvY3VtZW50ICE9PSBcInVuZGVmaW5lZFwiICYmIGRvY3VtZW50LmN1cnJlbnRTY3JpcHRcbiAgICAgID8gZG9jdW1lbnQuY3VycmVudFNjcmlwdC5zcmNcbiAgICAgIDogdW5kZWZpbmVkO1xuICBpZiAodHlwZW9mIF9fZmlsZW5hbWUgIT09IFwidW5kZWZpbmVkXCIpIF9zY3JpcHREaXIgPSBfc2NyaXB0RGlyIHx8IF9fZmlsZW5hbWU7XG4gIHJldHVybiBmdW5jdGlvbihjcmVhdGVNb2R1bGUpIHtcbiAgICBjcmVhdGVNb2R1bGUgPSBjcmVhdGVNb2R1bGUgfHwge307XG5cbiAgICB2YXIgTW9kdWxlID0gdHlwZW9mIGNyZWF0ZU1vZHVsZSAhPT0gXCJ1bmRlZmluZWRcIiA/IGNyZWF0ZU1vZHVsZSA6IHt9O1xuICAgIHZhciByZWFkeVByb21pc2VSZXNvbHZlLCByZWFkeVByb21pc2VSZWplY3Q7XG4gICAgTW9kdWxlW1wicmVhZHlcIl0gPSBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgIHJlYWR5UHJvbWlzZVJlc29sdmUgPSByZXNvbHZlO1xuICAgICAgcmVhZHlQcm9taXNlUmVqZWN0ID0gcmVqZWN0O1xuICAgIH0pO1xuICAgIHZhciBtb2R1bGVPdmVycmlkZXMgPSB7fTtcbiAgICB2YXIga2V5O1xuICAgIGZvciAoa2V5IGluIE1vZHVsZSkge1xuICAgICAgaWYgKE1vZHVsZS5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgIG1vZHVsZU92ZXJyaWRlc1trZXldID0gTW9kdWxlW2tleV07XG4gICAgICB9XG4gICAgfVxuICAgIHZhciBhcmd1bWVudHNfID0gW107XG4gICAgdmFyIHRoaXNQcm9ncmFtID0gXCIuL3RoaXMucHJvZ3JhbVwiO1xuICAgIHZhciBxdWl0XyA9IGZ1bmN0aW9uKHN0YXR1cywgdG9UaHJvdykge1xuICAgICAgdGhyb3cgdG9UaHJvdztcbiAgICB9O1xuICAgIHZhciBFTlZJUk9OTUVOVF9JU19XT1JLRVIgPSBmYWxzZTtcbiAgICB2YXIgRU5WSVJPTk1FTlRfSVNfTk9ERSA9IHRydWU7XG4gICAgdmFyIHNjcmlwdERpcmVjdG9yeSA9IFwiXCI7XG4gICAgZnVuY3Rpb24gbG9jYXRlRmlsZShwYXRoKSB7XG4gICAgICBpZiAoTW9kdWxlW1wibG9jYXRlRmlsZVwiXSkge1xuICAgICAgICByZXR1cm4gTW9kdWxlW1wibG9jYXRlRmlsZVwiXShwYXRoLCBzY3JpcHREaXJlY3RvcnkpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHNjcmlwdERpcmVjdG9yeSArIHBhdGg7XG4gICAgfVxuICAgIHZhciByZWFkXywgcmVhZEJpbmFyeTtcbiAgICB2YXIgbm9kZUZTO1xuICAgIHZhciBub2RlUGF0aDtcbiAgICBpZiAoRU5WSVJPTk1FTlRfSVNfTk9ERSkge1xuICAgICAgaWYgKEVOVklST05NRU5UX0lTX1dPUktFUikge1xuICAgICAgICBzY3JpcHREaXJlY3RvcnkgPSByZXF1aXJlKFwicGF0aFwiKS5kaXJuYW1lKHNjcmlwdERpcmVjdG9yeSkgKyBcIi9cIjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNjcmlwdERpcmVjdG9yeSA9IF9fZGlybmFtZSArIFwiL1wiO1xuICAgICAgfVxuICAgICAgcmVhZF8gPSBmdW5jdGlvbiBzaGVsbF9yZWFkKGZpbGVuYW1lLCBiaW5hcnkpIHtcbiAgICAgICAgdmFyIHJldCA9IHRyeVBhcnNlQXNEYXRhVVJJKGZpbGVuYW1lKTtcbiAgICAgICAgaWYgKHJldCkge1xuICAgICAgICAgIHJldHVybiBiaW5hcnkgPyByZXQgOiByZXQudG9TdHJpbmcoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIW5vZGVGUykgbm9kZUZTID0gZnJvemVuRnM7XG4gICAgICAgIGlmICghbm9kZVBhdGgpIG5vZGVQYXRoID0gcmVxdWlyZShcInBhdGhcIik7XG4gICAgICAgIGZpbGVuYW1lID0gbm9kZVBhdGhbXCJub3JtYWxpemVcIl0oZmlsZW5hbWUpO1xuICAgICAgICByZXR1cm4gbm9kZUZTW1wicmVhZEZpbGVTeW5jXCJdKGZpbGVuYW1lLCBiaW5hcnkgPyBudWxsIDogXCJ1dGY4XCIpO1xuICAgICAgfTtcbiAgICAgIHJlYWRCaW5hcnkgPSBmdW5jdGlvbiByZWFkQmluYXJ5KGZpbGVuYW1lKSB7XG4gICAgICAgIHZhciByZXQgPSByZWFkXyhmaWxlbmFtZSwgdHJ1ZSk7XG4gICAgICAgIGlmICghcmV0LmJ1ZmZlcikge1xuICAgICAgICAgIHJldCA9IG5ldyBVaW50OEFycmF5KHJldCk7XG4gICAgICAgIH1cbiAgICAgICAgYXNzZXJ0KHJldC5idWZmZXIpO1xuICAgICAgICByZXR1cm4gcmV0O1xuICAgICAgfTtcbiAgICAgIGlmIChwcm9jZXNzW1wiYXJndlwiXS5sZW5ndGggPiAxKSB7XG4gICAgICAgIHRoaXNQcm9ncmFtID0gcHJvY2Vzc1tcImFyZ3ZcIl1bMV0ucmVwbGFjZSgvXFxcXC9nLCBcIi9cIik7XG4gICAgICB9XG4gICAgICBhcmd1bWVudHNfID0gcHJvY2Vzc1tcImFyZ3ZcIl0uc2xpY2UoMik7XG4gICAgICBxdWl0XyA9IGZ1bmN0aW9uKHN0YXR1cykge1xuICAgICAgICBwcm9jZXNzW1wiZXhpdFwiXShzdGF0dXMpO1xuICAgICAgfTtcbiAgICAgIE1vZHVsZVtcImluc3BlY3RcIl0gPSBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIFwiW0Vtc2NyaXB0ZW4gTW9kdWxlIG9iamVjdF1cIjtcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICB9XG4gICAgdmFyIG91dCA9IE1vZHVsZVtcInByaW50XCJdIHx8IGNvbnNvbGUubG9nLmJpbmQoY29uc29sZSk7XG4gICAgdmFyIGVyciA9IE1vZHVsZVtcInByaW50RXJyXCJdIHx8IGNvbnNvbGUud2Fybi5iaW5kKGNvbnNvbGUpO1xuICAgIGZvciAoa2V5IGluIG1vZHVsZU92ZXJyaWRlcykge1xuICAgICAgaWYgKG1vZHVsZU92ZXJyaWRlcy5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgIE1vZHVsZVtrZXldID0gbW9kdWxlT3ZlcnJpZGVzW2tleV07XG4gICAgICB9XG4gICAgfVxuICAgIG1vZHVsZU92ZXJyaWRlcyA9IG51bGw7XG4gICAgaWYgKE1vZHVsZVtcImFyZ3VtZW50c1wiXSkgYXJndW1lbnRzXyA9IE1vZHVsZVtcImFyZ3VtZW50c1wiXTtcbiAgICBpZiAoTW9kdWxlW1widGhpc1Byb2dyYW1cIl0pIHRoaXNQcm9ncmFtID0gTW9kdWxlW1widGhpc1Byb2dyYW1cIl07XG4gICAgaWYgKE1vZHVsZVtcInF1aXRcIl0pIHF1aXRfID0gTW9kdWxlW1wicXVpdFwiXTtcbiAgICB2YXIgU1RBQ0tfQUxJR04gPSAxNjtcbiAgICBmdW5jdGlvbiBhbGlnbk1lbW9yeShzaXplLCBmYWN0b3IpIHtcbiAgICAgIGlmICghZmFjdG9yKSBmYWN0b3IgPSBTVEFDS19BTElHTjtcbiAgICAgIHJldHVybiBNYXRoLmNlaWwoc2l6ZSAvIGZhY3RvcikgKiBmYWN0b3I7XG4gICAgfVxuICAgIHZhciB0ZW1wUmV0MCA9IDA7XG4gICAgdmFyIHNldFRlbXBSZXQwID0gZnVuY3Rpb24odmFsdWUpIHtcbiAgICAgIHRlbXBSZXQwID0gdmFsdWU7XG4gICAgfTtcbiAgICB2YXIgd2FzbUJpbmFyeTtcbiAgICBpZiAoTW9kdWxlW1wid2FzbUJpbmFyeVwiXSkgd2FzbUJpbmFyeSA9IE1vZHVsZVtcIndhc21CaW5hcnlcIl07XG4gICAgdmFyIG5vRXhpdFJ1bnRpbWUgPSBNb2R1bGVbXCJub0V4aXRSdW50aW1lXCJdIHx8IHRydWU7XG4gICAgaWYgKHR5cGVvZiBXZWJBc3NlbWJseSAhPT0gXCJvYmplY3RcIikge1xuICAgICAgYWJvcnQoXCJubyBuYXRpdmUgd2FzbSBzdXBwb3J0IGRldGVjdGVkXCIpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBnZXRWYWx1ZShwdHIsIHR5cGUsIG5vU2FmZSkge1xuICAgICAgdHlwZSA9IHR5cGUgfHwgXCJpOFwiO1xuICAgICAgaWYgKHR5cGUuY2hhckF0KHR5cGUubGVuZ3RoIC0gMSkgPT09IFwiKlwiKSB0eXBlID0gXCJpMzJcIjtcbiAgICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICBjYXNlIFwiaTFcIjpcbiAgICAgICAgICByZXR1cm4gSEVBUDhbcHRyID4+IDBdO1xuICAgICAgICBjYXNlIFwiaThcIjpcbiAgICAgICAgICByZXR1cm4gSEVBUDhbcHRyID4+IDBdO1xuICAgICAgICBjYXNlIFwiaTE2XCI6XG4gICAgICAgICAgcmV0dXJuIExFX0hFQVBfTE9BRF9JMTYoKHB0ciA+PiAxKSAqIDIpO1xuICAgICAgICBjYXNlIFwiaTMyXCI6XG4gICAgICAgICAgcmV0dXJuIExFX0hFQVBfTE9BRF9JMzIoKHB0ciA+PiAyKSAqIDQpO1xuICAgICAgICBjYXNlIFwiaTY0XCI6XG4gICAgICAgICAgcmV0dXJuIExFX0hFQVBfTE9BRF9JMzIoKHB0ciA+PiAyKSAqIDQpO1xuICAgICAgICBjYXNlIFwiZmxvYXRcIjpcbiAgICAgICAgICByZXR1cm4gTEVfSEVBUF9MT0FEX0YzMigocHRyID4+IDIpICogNCk7XG4gICAgICAgIGNhc2UgXCJkb3VibGVcIjpcbiAgICAgICAgICByZXR1cm4gTEVfSEVBUF9MT0FEX0Y2NCgocHRyID4+IDMpICogOCk7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgYWJvcnQoXCJpbnZhbGlkIHR5cGUgZm9yIGdldFZhbHVlOiBcIiArIHR5cGUpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHZhciB3YXNtTWVtb3J5O1xuICAgIHZhciBBQk9SVCA9IGZhbHNlO1xuICAgIHZhciBFWElUU1RBVFVTO1xuICAgIGZ1bmN0aW9uIGFzc2VydChjb25kaXRpb24sIHRleHQpIHtcbiAgICAgIGlmICghY29uZGl0aW9uKSB7XG4gICAgICAgIGFib3J0KFwiQXNzZXJ0aW9uIGZhaWxlZDogXCIgKyB0ZXh0KTtcbiAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gZ2V0Q0Z1bmMoaWRlbnQpIHtcbiAgICAgIHZhciBmdW5jID0gTW9kdWxlW1wiX1wiICsgaWRlbnRdO1xuICAgICAgYXNzZXJ0KFxuICAgICAgICBmdW5jLFxuICAgICAgICBcIkNhbm5vdCBjYWxsIHVua25vd24gZnVuY3Rpb24gXCIgKyBpZGVudCArIFwiLCBtYWtlIHN1cmUgaXQgaXMgZXhwb3J0ZWRcIlxuICAgICAgKTtcbiAgICAgIHJldHVybiBmdW5jO1xuICAgIH1cbiAgICBmdW5jdGlvbiBjY2FsbChpZGVudCwgcmV0dXJuVHlwZSwgYXJnVHlwZXMsIGFyZ3MsIG9wdHMpIHtcbiAgICAgIHZhciB0b0MgPSB7XG4gICAgICAgIHN0cmluZzogZnVuY3Rpb24oc3RyKSB7XG4gICAgICAgICAgdmFyIHJldCA9IDA7XG4gICAgICAgICAgaWYgKHN0ciAhPT0gbnVsbCAmJiBzdHIgIT09IHVuZGVmaW5lZCAmJiBzdHIgIT09IDApIHtcbiAgICAgICAgICAgIHZhciBsZW4gPSAoc3RyLmxlbmd0aCA8PCAyKSArIDE7XG4gICAgICAgICAgICByZXQgPSBzdGFja0FsbG9jKGxlbik7XG4gICAgICAgICAgICBzdHJpbmdUb1VURjgoc3RyLCByZXQsIGxlbik7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiByZXQ7XG4gICAgICAgIH0sXG4gICAgICAgIGFycmF5OiBmdW5jdGlvbihhcnIpIHtcbiAgICAgICAgICB2YXIgcmV0ID0gc3RhY2tBbGxvYyhhcnIubGVuZ3RoKTtcbiAgICAgICAgICB3cml0ZUFycmF5VG9NZW1vcnkoYXJyLCByZXQpO1xuICAgICAgICAgIHJldHVybiByZXQ7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICBmdW5jdGlvbiBjb252ZXJ0UmV0dXJuVmFsdWUocmV0KSB7XG4gICAgICAgIGlmIChyZXR1cm5UeXBlID09PSBcInN0cmluZ1wiKSByZXR1cm4gVVRGOFRvU3RyaW5nKHJldCk7XG4gICAgICAgIGlmIChyZXR1cm5UeXBlID09PSBcImJvb2xlYW5cIikgcmV0dXJuIEJvb2xlYW4ocmV0KTtcbiAgICAgICAgcmV0dXJuIHJldDtcbiAgICAgIH1cbiAgICAgIHZhciBmdW5jID0gZ2V0Q0Z1bmMoaWRlbnQpO1xuICAgICAgdmFyIGNBcmdzID0gW107XG4gICAgICB2YXIgc3RhY2sgPSAwO1xuICAgICAgaWYgKGFyZ3MpIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcmdzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgdmFyIGNvbnZlcnRlciA9IHRvQ1thcmdUeXBlc1tpXV07XG4gICAgICAgICAgaWYgKGNvbnZlcnRlcikge1xuICAgICAgICAgICAgaWYgKHN0YWNrID09PSAwKSBzdGFjayA9IHN0YWNrU2F2ZSgpO1xuICAgICAgICAgICAgY0FyZ3NbaV0gPSBjb252ZXJ0ZXIoYXJnc1tpXSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNBcmdzW2ldID0gYXJnc1tpXTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHZhciByZXQgPSBmdW5jLmFwcGx5KG51bGwsIGNBcmdzKTtcbiAgICAgIHJldCA9IGNvbnZlcnRSZXR1cm5WYWx1ZShyZXQpO1xuICAgICAgaWYgKHN0YWNrICE9PSAwKSBzdGFja1Jlc3RvcmUoc3RhY2spO1xuICAgICAgcmV0dXJuIHJldDtcbiAgICB9XG4gICAgZnVuY3Rpb24gY3dyYXAoaWRlbnQsIHJldHVyblR5cGUsIGFyZ1R5cGVzLCBvcHRzKSB7XG4gICAgICBhcmdUeXBlcyA9IGFyZ1R5cGVzIHx8IFtdO1xuICAgICAgdmFyIG51bWVyaWNBcmdzID0gYXJnVHlwZXMuZXZlcnkoZnVuY3Rpb24odHlwZSkge1xuICAgICAgICByZXR1cm4gdHlwZSA9PT0gXCJudW1iZXJcIjtcbiAgICAgIH0pO1xuICAgICAgdmFyIG51bWVyaWNSZXQgPSByZXR1cm5UeXBlICE9PSBcInN0cmluZ1wiO1xuICAgICAgaWYgKG51bWVyaWNSZXQgJiYgbnVtZXJpY0FyZ3MgJiYgIW9wdHMpIHtcbiAgICAgICAgcmV0dXJuIGdldENGdW5jKGlkZW50KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGNjYWxsKGlkZW50LCByZXR1cm5UeXBlLCBhcmdUeXBlcywgYXJndW1lbnRzLCBvcHRzKTtcbiAgICAgIH07XG4gICAgfVxuICAgIHZhciBVVEY4RGVjb2RlciA9IG5ldyBUZXh0RGVjb2RlcihcInV0ZjhcIik7XG4gICAgZnVuY3Rpb24gVVRGOEFycmF5VG9TdHJpbmcoaGVhcCwgaWR4LCBtYXhCeXRlc1RvUmVhZCkge1xuICAgICAgdmFyIGVuZElkeCA9IGlkeCArIG1heEJ5dGVzVG9SZWFkO1xuICAgICAgdmFyIGVuZFB0ciA9IGlkeDtcbiAgICAgIHdoaWxlIChoZWFwW2VuZFB0cl0gJiYgIShlbmRQdHIgPj0gZW5kSWR4KSkgKytlbmRQdHI7XG4gICAgICByZXR1cm4gVVRGOERlY29kZXIuZGVjb2RlKFxuICAgICAgICBoZWFwLnN1YmFycmF5XG4gICAgICAgICAgPyBoZWFwLnN1YmFycmF5KGlkeCwgZW5kUHRyKVxuICAgICAgICAgIDogbmV3IFVpbnQ4QXJyYXkoaGVhcC5zbGljZShpZHgsIGVuZFB0cikpXG4gICAgICApO1xuICAgIH1cbiAgICBmdW5jdGlvbiBVVEY4VG9TdHJpbmcocHRyLCBtYXhCeXRlc1RvUmVhZCkge1xuICAgICAgaWYgKCFwdHIpIHJldHVybiBcIlwiO1xuICAgICAgdmFyIG1heFB0ciA9IHB0ciArIG1heEJ5dGVzVG9SZWFkO1xuICAgICAgZm9yICh2YXIgZW5kID0gcHRyOyAhKGVuZCA+PSBtYXhQdHIpICYmIEhFQVBVOFtlbmRdOyApICsrZW5kO1xuICAgICAgcmV0dXJuIFVURjhEZWNvZGVyLmRlY29kZShIRUFQVTguc3ViYXJyYXkocHRyLCBlbmQpKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gc3RyaW5nVG9VVEY4QXJyYXkoc3RyLCBoZWFwLCBvdXRJZHgsIG1heEJ5dGVzVG9Xcml0ZSkge1xuICAgICAgaWYgKCEobWF4Qnl0ZXNUb1dyaXRlID4gMCkpIHJldHVybiAwO1xuICAgICAgdmFyIHN0YXJ0SWR4ID0gb3V0SWR4O1xuICAgICAgdmFyIGVuZElkeCA9IG91dElkeCArIG1heEJ5dGVzVG9Xcml0ZSAtIDE7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN0ci5sZW5ndGg7ICsraSkge1xuICAgICAgICB2YXIgdSA9IHN0ci5jaGFyQ29kZUF0KGkpO1xuICAgICAgICBpZiAodSA+PSA1NTI5NiAmJiB1IDw9IDU3MzQzKSB7XG4gICAgICAgICAgdmFyIHUxID0gc3RyLmNoYXJDb2RlQXQoKytpKTtcbiAgICAgICAgICB1ID0gKDY1NTM2ICsgKCh1ICYgMTAyMykgPDwgMTApKSB8ICh1MSAmIDEwMjMpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh1IDw9IDEyNykge1xuICAgICAgICAgIGlmIChvdXRJZHggPj0gZW5kSWR4KSBicmVhaztcbiAgICAgICAgICBoZWFwW291dElkeCsrXSA9IHU7XG4gICAgICAgIH0gZWxzZSBpZiAodSA8PSAyMDQ3KSB7XG4gICAgICAgICAgaWYgKG91dElkeCArIDEgPj0gZW5kSWR4KSBicmVhaztcbiAgICAgICAgICBoZWFwW291dElkeCsrXSA9IDE5MiB8ICh1ID4+IDYpO1xuICAgICAgICAgIGhlYXBbb3V0SWR4KytdID0gMTI4IHwgKHUgJiA2Myk7XG4gICAgICAgIH0gZWxzZSBpZiAodSA8PSA2NTUzNSkge1xuICAgICAgICAgIGlmIChvdXRJZHggKyAyID49IGVuZElkeCkgYnJlYWs7XG4gICAgICAgICAgaGVhcFtvdXRJZHgrK10gPSAyMjQgfCAodSA+PiAxMik7XG4gICAgICAgICAgaGVhcFtvdXRJZHgrK10gPSAxMjggfCAoKHUgPj4gNikgJiA2Myk7XG4gICAgICAgICAgaGVhcFtvdXRJZHgrK10gPSAxMjggfCAodSAmIDYzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAob3V0SWR4ICsgMyA+PSBlbmRJZHgpIGJyZWFrO1xuICAgICAgICAgIGhlYXBbb3V0SWR4KytdID0gMjQwIHwgKHUgPj4gMTgpO1xuICAgICAgICAgIGhlYXBbb3V0SWR4KytdID0gMTI4IHwgKCh1ID4+IDEyKSAmIDYzKTtcbiAgICAgICAgICBoZWFwW291dElkeCsrXSA9IDEyOCB8ICgodSA+PiA2KSAmIDYzKTtcbiAgICAgICAgICBoZWFwW291dElkeCsrXSA9IDEyOCB8ICh1ICYgNjMpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBoZWFwW291dElkeF0gPSAwO1xuICAgICAgcmV0dXJuIG91dElkeCAtIHN0YXJ0SWR4O1xuICAgIH1cbiAgICBmdW5jdGlvbiBzdHJpbmdUb1VURjgoc3RyLCBvdXRQdHIsIG1heEJ5dGVzVG9Xcml0ZSkge1xuICAgICAgcmV0dXJuIHN0cmluZ1RvVVRGOEFycmF5KHN0ciwgSEVBUFU4LCBvdXRQdHIsIG1heEJ5dGVzVG9Xcml0ZSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGxlbmd0aEJ5dGVzVVRGOChzdHIpIHtcbiAgICAgIHZhciBsZW4gPSAwO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHIubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgdmFyIHUgPSBzdHIuY2hhckNvZGVBdChpKTtcbiAgICAgICAgaWYgKHUgPj0gNTUyOTYgJiYgdSA8PSA1NzM0MylcbiAgICAgICAgICB1ID0gKDY1NTM2ICsgKCh1ICYgMTAyMykgPDwgMTApKSB8IChzdHIuY2hhckNvZGVBdCgrK2kpICYgMTAyMyk7XG4gICAgICAgIGlmICh1IDw9IDEyNykgKytsZW47XG4gICAgICAgIGVsc2UgaWYgKHUgPD0gMjA0NykgbGVuICs9IDI7XG4gICAgICAgIGVsc2UgaWYgKHUgPD0gNjU1MzUpIGxlbiArPSAzO1xuICAgICAgICBlbHNlIGxlbiArPSA0O1xuICAgICAgfVxuICAgICAgcmV0dXJuIGxlbjtcbiAgICB9XG4gICAgZnVuY3Rpb24gYWxsb2NhdGVVVEY4KHN0cikge1xuICAgICAgdmFyIHNpemUgPSBsZW5ndGhCeXRlc1VURjgoc3RyKSArIDE7XG4gICAgICB2YXIgcmV0ID0gX21hbGxvYyhzaXplKTtcbiAgICAgIGlmIChyZXQpIHN0cmluZ1RvVVRGOEFycmF5KHN0ciwgSEVBUDgsIHJldCwgc2l6ZSk7XG4gICAgICByZXR1cm4gcmV0O1xuICAgIH1cbiAgICBmdW5jdGlvbiB3cml0ZUFycmF5VG9NZW1vcnkoYXJyYXksIGJ1ZmZlcikge1xuICAgICAgSEVBUDguc2V0KGFycmF5LCBidWZmZXIpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBhbGlnblVwKHgsIG11bHRpcGxlKSB7XG4gICAgICBpZiAoeCAlIG11bHRpcGxlID4gMCkge1xuICAgICAgICB4ICs9IG11bHRpcGxlIC0gKHggJSBtdWx0aXBsZSk7XG4gICAgICB9XG4gICAgICByZXR1cm4geDtcbiAgICB9XG4gICAgdmFyIGJ1ZmZlcixcbiAgICAgIEhFQVA4LFxuICAgICAgSEVBUFU4LFxuICAgICAgSEVBUDE2LFxuICAgICAgSEVBUFUxNixcbiAgICAgIEhFQVAzMixcbiAgICAgIEhFQVBVMzIsXG4gICAgICBIRUFQRjMyLFxuICAgICAgSEVBUEY2NDtcbiAgICB2YXIgSEVBUF9EQVRBX1ZJRVc7XG4gICAgZnVuY3Rpb24gdXBkYXRlR2xvYmFsQnVmZmVyQW5kVmlld3MoYnVmKSB7XG4gICAgICBidWZmZXIgPSBidWY7XG4gICAgICBNb2R1bGVbXCJIRUFQX0RBVEFfVklFV1wiXSA9IEhFQVBfREFUQV9WSUVXID0gbmV3IERhdGFWaWV3KGJ1Zik7XG4gICAgICBNb2R1bGVbXCJIRUFQOFwiXSA9IEhFQVA4ID0gbmV3IEludDhBcnJheShidWYpO1xuICAgICAgTW9kdWxlW1wiSEVBUDE2XCJdID0gSEVBUDE2ID0gbmV3IEludDE2QXJyYXkoYnVmKTtcbiAgICAgIE1vZHVsZVtcIkhFQVAzMlwiXSA9IEhFQVAzMiA9IG5ldyBJbnQzMkFycmF5KGJ1Zik7XG4gICAgICBNb2R1bGVbXCJIRUFQVThcIl0gPSBIRUFQVTggPSBuZXcgVWludDhBcnJheShidWYpO1xuICAgICAgTW9kdWxlW1wiSEVBUFUxNlwiXSA9IEhFQVBVMTYgPSBuZXcgVWludDE2QXJyYXkoYnVmKTtcbiAgICAgIE1vZHVsZVtcIkhFQVBVMzJcIl0gPSBIRUFQVTMyID0gbmV3IFVpbnQzMkFycmF5KGJ1Zik7XG4gICAgICBNb2R1bGVbXCJIRUFQRjMyXCJdID0gSEVBUEYzMiA9IG5ldyBGbG9hdDMyQXJyYXkoYnVmKTtcbiAgICAgIE1vZHVsZVtcIkhFQVBGNjRcIl0gPSBIRUFQRjY0ID0gbmV3IEZsb2F0NjRBcnJheShidWYpO1xuICAgIH1cbiAgICB2YXIgSU5JVElBTF9NRU1PUlkgPSBNb2R1bGVbXCJJTklUSUFMX01FTU9SWVwiXSB8fCAxNjc3NzIxNjtcbiAgICB2YXIgd2FzbVRhYmxlO1xuICAgIHZhciBfX0FUUFJFUlVOX18gPSBbXTtcbiAgICB2YXIgX19BVElOSVRfXyA9IFtdO1xuICAgIHZhciBfX0FUUE9TVFJVTl9fID0gW107XG4gICAgdmFyIHJ1bnRpbWVJbml0aWFsaXplZCA9IGZhbHNlO1xuICAgIGZ1bmN0aW9uIHByZVJ1bigpIHtcbiAgICAgIGlmIChNb2R1bGVbXCJwcmVSdW5cIl0pIHtcbiAgICAgICAgaWYgKHR5cGVvZiBNb2R1bGVbXCJwcmVSdW5cIl0gPT0gXCJmdW5jdGlvblwiKVxuICAgICAgICAgIE1vZHVsZVtcInByZVJ1blwiXSA9IFtNb2R1bGVbXCJwcmVSdW5cIl1dO1xuICAgICAgICB3aGlsZSAoTW9kdWxlW1wicHJlUnVuXCJdLmxlbmd0aCkge1xuICAgICAgICAgIGFkZE9uUHJlUnVuKE1vZHVsZVtcInByZVJ1blwiXS5zaGlmdCgpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgY2FsbFJ1bnRpbWVDYWxsYmFja3MoX19BVFBSRVJVTl9fKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaW5pdFJ1bnRpbWUoKSB7XG4gICAgICBydW50aW1lSW5pdGlhbGl6ZWQgPSB0cnVlO1xuICAgICAgaWYgKCFNb2R1bGVbXCJub0ZTSW5pdFwiXSAmJiAhRlMuaW5pdC5pbml0aWFsaXplZCkgRlMuaW5pdCgpO1xuICAgICAgVFRZLmluaXQoKTtcbiAgICAgIGNhbGxSdW50aW1lQ2FsbGJhY2tzKF9fQVRJTklUX18pO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwb3N0UnVuKCkge1xuICAgICAgaWYgKE1vZHVsZVtcInBvc3RSdW5cIl0pIHtcbiAgICAgICAgaWYgKHR5cGVvZiBNb2R1bGVbXCJwb3N0UnVuXCJdID09IFwiZnVuY3Rpb25cIilcbiAgICAgICAgICBNb2R1bGVbXCJwb3N0UnVuXCJdID0gW01vZHVsZVtcInBvc3RSdW5cIl1dO1xuICAgICAgICB3aGlsZSAoTW9kdWxlW1wicG9zdFJ1blwiXS5sZW5ndGgpIHtcbiAgICAgICAgICBhZGRPblBvc3RSdW4oTW9kdWxlW1wicG9zdFJ1blwiXS5zaGlmdCgpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgY2FsbFJ1bnRpbWVDYWxsYmFja3MoX19BVFBPU1RSVU5fXyk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGFkZE9uUHJlUnVuKGNiKSB7XG4gICAgICBfX0FUUFJFUlVOX18udW5zaGlmdChjYik7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGFkZE9uSW5pdChjYikge1xuICAgICAgX19BVElOSVRfXy51bnNoaWZ0KGNiKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gYWRkT25Qb3N0UnVuKGNiKSB7XG4gICAgICBfX0FUUE9TVFJVTl9fLnVuc2hpZnQoY2IpO1xuICAgIH1cbiAgICB2YXIgcnVuRGVwZW5kZW5jaWVzID0gMDtcbiAgICB2YXIgcnVuRGVwZW5kZW5jeVdhdGNoZXIgPSBudWxsO1xuICAgIHZhciBkZXBlbmRlbmNpZXNGdWxmaWxsZWQgPSBudWxsO1xuICAgIGZ1bmN0aW9uIGdldFVuaXF1ZVJ1bkRlcGVuZGVuY3koaWQpIHtcbiAgICAgIHJldHVybiBpZDtcbiAgICB9XG4gICAgZnVuY3Rpb24gYWRkUnVuRGVwZW5kZW5jeShpZCkge1xuICAgICAgcnVuRGVwZW5kZW5jaWVzKys7XG4gICAgICBpZiAoTW9kdWxlW1wibW9uaXRvclJ1bkRlcGVuZGVuY2llc1wiXSkge1xuICAgICAgICBNb2R1bGVbXCJtb25pdG9yUnVuRGVwZW5kZW5jaWVzXCJdKHJ1bkRlcGVuZGVuY2llcyk7XG4gICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIHJlbW92ZVJ1bkRlcGVuZGVuY3koaWQpIHtcbiAgICAgIHJ1bkRlcGVuZGVuY2llcy0tO1xuICAgICAgaWYgKE1vZHVsZVtcIm1vbml0b3JSdW5EZXBlbmRlbmNpZXNcIl0pIHtcbiAgICAgICAgTW9kdWxlW1wibW9uaXRvclJ1bkRlcGVuZGVuY2llc1wiXShydW5EZXBlbmRlbmNpZXMpO1xuICAgICAgfVxuICAgICAgaWYgKHJ1bkRlcGVuZGVuY2llcyA9PSAwKSB7XG4gICAgICAgIGlmIChydW5EZXBlbmRlbmN5V2F0Y2hlciAhPT0gbnVsbCkge1xuICAgICAgICAgIGNsZWFySW50ZXJ2YWwocnVuRGVwZW5kZW5jeVdhdGNoZXIpO1xuICAgICAgICAgIHJ1bkRlcGVuZGVuY3lXYXRjaGVyID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZGVwZW5kZW5jaWVzRnVsZmlsbGVkKSB7XG4gICAgICAgICAgdmFyIGNhbGxiYWNrID0gZGVwZW5kZW5jaWVzRnVsZmlsbGVkO1xuICAgICAgICAgIGRlcGVuZGVuY2llc0Z1bGZpbGxlZCA9IG51bGw7XG4gICAgICAgICAgY2FsbGJhY2soKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBNb2R1bGVbXCJwcmVsb2FkZWRJbWFnZXNcIl0gPSB7fTtcbiAgICBNb2R1bGVbXCJwcmVsb2FkZWRBdWRpb3NcIl0gPSB7fTtcbiAgICBmdW5jdGlvbiBhYm9ydCh3aGF0KSB7XG4gICAgICBpZiAoTW9kdWxlW1wib25BYm9ydFwiXSkge1xuICAgICAgICBNb2R1bGVbXCJvbkFib3J0XCJdKHdoYXQpO1xuICAgICAgfVxuICAgICAgd2hhdCArPSBcIlwiO1xuICAgICAgZXJyKHdoYXQpO1xuICAgICAgQUJPUlQgPSB0cnVlO1xuICAgICAgRVhJVFNUQVRVUyA9IDE7XG4gICAgICB3aGF0ID0gXCJhYm9ydChcIiArIHdoYXQgKyBcIikuIEJ1aWxkIHdpdGggLXMgQVNTRVJUSU9OUz0xIGZvciBtb3JlIGluZm8uXCI7XG4gICAgICB2YXIgZSA9IG5ldyBXZWJBc3NlbWJseS5SdW50aW1lRXJyb3Iod2hhdCk7XG4gICAgICByZWFkeVByb21pc2VSZWplY3QoZSk7XG4gICAgICB0aHJvdyBlO1xuICAgIH1cbiAgICB2YXIgZGF0YVVSSVByZWZpeCA9IFwiZGF0YTphcHBsaWNhdGlvbi9vY3RldC1zdHJlYW07YmFzZTY0LFwiO1xuICAgIGZ1bmN0aW9uIGlzRGF0YVVSSShmaWxlbmFtZSkge1xuICAgICAgcmV0dXJuIGZpbGVuYW1lLnN0YXJ0c1dpdGgoZGF0YVVSSVByZWZpeCk7XG4gICAgfVxuICAgIHZhciB3YXNtQmluYXJ5RmlsZSA9XG4gICAgICBcImRhdGE6YXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtO2Jhc2U2NCxBR0Z6YlFFQUFBQUJsQUluWUFOL2YzOEJmMkFCZndGL1lBSi9md0YvWUFGL0FHQURmMzkrQVg5Z0JIOS9mMzhCZjJBQ2YzOEFZQU4vZjM4QVlBVi9mMzkvZndGL1lBQUJmMkFFZjM1L2Z3Ri9ZQVYvZjM5K2Z3RitZQU4vZm44QmYyQUJmd0YrWUFKL2ZnRi9ZQVIvZjM1L0FYNWdBMzkrZndGK1lBUi9mMzUvQVg5Z0JuOS9mMzkvZndGL1lBUi9mMzkvQUdBRGYzOStBWDVnQW41L0FYOWdBMzk4ZndCZ0JIOS9mMzhCZm1BRGYzOS9BWDVnQm45OGYzOS9md0YvWUFWL2YzNS9md0YvWUFWL2ZuOS9md0YvWUFWL2YzOS9md0JnQW45K0FHQUNmMzhCZm1BQ2Yzd0FZQWgvZm41L2YzOStmd0YvWUFWL2YzOStmd0JnQUFCZ0JYNStmMzUvQVg1Z0JYOS9mMzkvQVg1Z0FueC9BWHhnQW45K0FYNENlUlFCWVFGaEFBTUJZUUZpQUFFQllRRmpBQUlCWVFGa0FBVUJZUUZsQUFBQllRRm1BQUVCWVFGbkFBVUJZUUZvQUFFQllRRnBBQUlCWVFGcUFBSUJZUUZyQUFJQllRRnNBQUFCWVFGdEFBRUJZUUZ1QUFnQllRRnZBQUFCWVFGd0FBSUJZUUZ4QUFBQllRRnlBQUVCWVFGekFBSUJZUUYwQUFFRG1nS1lBZ2NEQXdBR0FRTUJEZ1lERHdZSEF3TURIQk1EREE0QkZBNGRBUWNCRFEwREhnMEVBd01DQWdNREFRb0JCd29VRlFZREJRRUJEUW9LQWdVQkF3TUFCUUVmRndBQUFnWUFFd1lHQmdjRElCQUZBd2dSQWdnQ0dBQUtBd0FCQVFjSUFCZ0JHaElDSVJFS0FnTUdBQ0lFQlFFQUFBSUNBU01JR3dBa0J3QU1GUUFDQVFnQ0JnRU9HeGNPQUFZQkRBd0NBZzBOQVFJQkJ5VUNBQW9hQUFBRENBSUJBQU1tRVF3S0Nnd0RCd2NEQXdjQ0FnSUZBQVVBQUFJR0FRTUNDd2tEQVFFQkFRRUJDUWdCQ0FnSUFBVUNCUVVGQ0JJRkJRQUFFZ0FCQXdrRkFRQVBBUUFBRUFFQUJoa0pDUWtCQVFFSkFnc0xBQUFEQkFFQkFRTUFDd1lJRHdrR0FBSUNBUVFGQUFBRkFBa0FBd0lCQndrQkFnSUNDUUVFQlFGd0FUczdCUWNCQVlBQ2dJQUNCZ2tCZndGQmtLUEJBZ3NIdmdJOEFYVUNBQUYyQUlBQkFYY0Fxd0lCZUFEckFRRjVBSUlDQVhvQTJRRUJRUURZQVFGQ0FOY0JBVU1BMWdFQlJBRFVBUUZGQU5NQkFVWUEwUUVCUndDcUFnRklBS1lDQVVrQW93SUJTZ0NZQWdGTEFQRUJBVXdBNmdFQlRRRHBBUUZPQUR3QlR3Q1FBZ0ZRQUlBQ0FWRUEvd0VCVWdENEFRRlRBSUVDQVZRQTZBRUJWUUFWQVZZQUdRRlhBSk1DQVZnQTFRRUJXUURuQVFGYUFPWUJBVjhBNVFFQkpBRHNBUUpoWVFEa0FRSmlZUURqQVFKallRRGlBUUprWVFEaEFRSmxZUURnQVFKbVlRRGZBUUpuWVFEeUFRSm9ZUUNkQVFKcFlRRGVBUUpxWVFEZEFRSnJZUURjQVFKc1lRQXdBbTFoQUJvQ2JtRUEwZ0VDYjJFQVNBSndZUUVBQW5GaEFHa0NjbUVBMndFQ2MyRUE4QUVDZEdFQTJnRUNkV0VBL2dFQ2RtRUEvUUVDZDJFQS9BRUNlR0VBN3dFQ2VXRUE3Z0VDZW1FQTdRRUplQUVBUVFFTE90QUJsUUtVQXNzQnp3R3BBcWdDcHdMQ0FjTUJ6Z0hLQWFVQ3lRSElBY2NCZjhZQmdRSEZBY1FCcEFLaUFxQUNtUUtoQXBjQ2xnS2ZBcDRDblFLY0Fwc0NtZ0tTQW84Q2tRS09BbzBDakFLTEFvb0NpUUtJQW9jQ2hnS0ZBb1FDZ3dKWSt3SDZBZmtCOXdIMkFmVUI5QUh6QVFxYW53bVlBa0FCQVg4akFFRVFheUlESUFBMkFnd2dBeUFCTmdJSUlBTWdBallDQkNBREtBSU1CRUFnQXlnQ0RDQURLQUlJTmdJQUlBTW9BZ3dnQXlnQ0JEWUNCQXNMekF3QkIzOENRQ0FBUlEwQUlBQkJDR3NpQXlBQVFRUnJLQUlBSWdGQmVIRWlBR29oQlFKQUlBRkJBWEVOQUNBQlFRTnhSUTBCSUFNZ0F5Z0NBQ0lCYXlJRFFiaWVBU2dDQUVrTkFTQUFJQUZxSVFBZ0EwRzhuZ0VvQWdCSEJFQWdBVUgvQVUwRVFDQURLQUlJSWdJZ0FVRURkaUlFUVFOMFFkQ2VBV3BHR2lBQ0lBTW9BZ3dpQVVZRVFFR29uZ0ZCcUo0QktBSUFRWDRnQkhkeE5nSUFEQU1MSUFJZ0FUWUNEQ0FCSUFJMkFnZ01BZ3NnQXlnQ0dDRUdBa0FnQXlBREtBSU1JZ0ZIQkVBZ0F5Z0NDQ0lDSUFFMkFnd2dBU0FDTmdJSURBRUxBa0FnQTBFVWFpSUNLQUlBSWdRTkFDQURRUkJxSWdJb0FnQWlCQTBBUVFBaEFRd0JDd05BSUFJaEJ5QUVJZ0ZCRkdvaUFpZ0NBQ0lFRFFBZ0FVRVFhaUVDSUFFb0FoQWlCQTBBQ3lBSFFRQTJBZ0FMSUFaRkRRRUNRQ0FESUFNb0Fod2lBa0VDZEVIWW9BRnFJZ1FvQWdCR0JFQWdCQ0FCTmdJQUlBRU5BVUdzbmdGQnJKNEJLQUlBUVg0Z0FuZHhOZ0lBREFNTElBWkJFRUVVSUFZb0FoQWdBMFliYWlBQk5nSUFJQUZGRFFJTElBRWdCallDR0NBREtBSVFJZ0lFUUNBQklBSTJBaEFnQWlBQk5nSVlDeUFES0FJVUlnSkZEUUVnQVNBQ05nSVVJQUlnQVRZQ0dBd0JDeUFGS0FJRUlnRkJBM0ZCQTBjTkFFR3duZ0VnQURZQ0FDQUZJQUZCZm5FMkFnUWdBeUFBUVFGeU5nSUVJQUFnQTJvZ0FEWUNBQThMSUFNZ0JVOE5BQ0FGS0FJRUlnRkJBWEZGRFFBQ1FDQUJRUUp4UlFSQUlBVkJ3SjRCS0FJQVJnUkFRY0NlQVNBRE5nSUFRYlNlQVVHMG5nRW9BZ0FnQUdvaUFEWUNBQ0FESUFCQkFYSTJBZ1FnQTBHOG5nRW9BZ0JIRFFOQnNKNEJRUUEyQWdCQnZKNEJRUUEyQWdBUEN5QUZRYnllQVNnQ0FFWUVRRUc4bmdFZ0F6WUNBRUd3bmdGQnNKNEJLQUlBSUFCcUlnQTJBZ0FnQXlBQVFRRnlOZ0lFSUFBZ0Eyb2dBRFlDQUE4TElBRkJlSEVnQUdvaEFBSkFJQUZCL3dGTkJFQWdCU2dDQ0NJQ0lBRkJBM1lpQkVFRGRFSFFuZ0ZxUmhvZ0FpQUZLQUlNSWdGR0JFQkJxSjRCUWFpZUFTZ0NBRUYrSUFSM2NUWUNBQXdDQ3lBQ0lBRTJBZ3dnQVNBQ05nSUlEQUVMSUFVb0FoZ2hCZ0pBSUFVZ0JTZ0NEQ0lCUndSQUlBVW9BZ2dpQWtHNG5nRW9BZ0JKR2lBQ0lBRTJBZ3dnQVNBQ05nSUlEQUVMQWtBZ0JVRVVhaUlDS0FJQUlnUU5BQ0FGUVJCcUlnSW9BZ0FpQkEwQVFRQWhBUXdCQ3dOQUlBSWhCeUFFSWdGQkZHb2lBaWdDQUNJRURRQWdBVUVRYWlFQ0lBRW9BaEFpQkEwQUN5QUhRUUEyQWdBTElBWkZEUUFDUUNBRklBVW9BaHdpQWtFQ2RFSFlvQUZxSWdRb0FnQkdCRUFnQkNBQk5nSUFJQUVOQVVHc25nRkJySjRCS0FJQVFYNGdBbmR4TmdJQURBSUxJQVpCRUVFVUlBWW9BaEFnQlVZYmFpQUJOZ0lBSUFGRkRRRUxJQUVnQmpZQ0dDQUZLQUlRSWdJRVFDQUJJQUkyQWhBZ0FpQUJOZ0lZQ3lBRktBSVVJZ0pGRFFBZ0FTQUNOZ0lVSUFJZ0FUWUNHQXNnQXlBQVFRRnlOZ0lFSUFBZ0Eyb2dBRFlDQUNBRFFieWVBU2dDQUVjTkFVR3duZ0VnQURZQ0FBOExJQVVnQVVGK2NUWUNCQ0FESUFCQkFYSTJBZ1FnQUNBRGFpQUFOZ0lBQ3lBQVFmOEJUUVJBSUFCQkEzWWlBVUVEZEVIUW5nRnFJUUFDZjBHb25nRW9BZ0FpQWtFQklBRjBJZ0Z4UlFSQVFhaWVBU0FCSUFKeU5nSUFJQUFNQVFzZ0FDZ0NDQXNoQWlBQUlBTTJBZ2dnQWlBRE5nSU1JQU1nQURZQ0RDQURJQUkyQWdnUEMwRWZJUUlnQTBJQU53SVFJQUJCLy8vL0IwMEVRQ0FBUVFoMklnRWdBVUdBL2o5cVFSQjJRUWh4SWdGMElnSWdBa0dBNEI5cVFSQjJRUVJ4SWdKMElnUWdCRUdBZ0E5cVFSQjJRUUp4SWdSMFFROTJJQUVnQW5JZ0JISnJJZ0ZCQVhRZ0FDQUJRUlZxZGtFQmNYSkJIR29oQWdzZ0F5QUNOZ0ljSUFKQkFuUkIyS0FCYWlFQkFrQUNRQUpBUWF5ZUFTZ0NBQ0lFUVFFZ0FuUWlCM0ZGQkVCQnJKNEJJQVFnQjNJMkFnQWdBU0FETmdJQUlBTWdBVFlDR0F3QkN5QUFRUUJCR1NBQ1FRRjJheUFDUVI5R0czUWhBaUFCS0FJQUlRRURRQ0FCSWdRb0FnUkJlSEVnQUVZTkFpQUNRUjEySVFFZ0FrRUJkQ0VDSUFRZ0FVRUVjV29pQjBFUWFpZ0NBQ0lCRFFBTElBY2dBellDRUNBRElBUTJBaGdMSUFNZ0F6WUNEQ0FESUFNMkFnZ01BUXNnQkNnQ0NDSUFJQU0yQWd3Z0JDQUROZ0lJSUFOQkFEWUNHQ0FESUFRMkFnd2dBeUFBTmdJSUMwSEluZ0ZCeUo0QktBSUFRUUZySWdCQmZ5QUFHellDQUFzTFFnRUJmeU1BUVJCcklnRWtBQ0FCSUFBMkFnd2dBU2dDREFSQUlBRW9BZ3d0QUFGQkFYRUVRQ0FCS0FJTUtBSUVFQlVMSUFFb0Fnd1FGUXNnQVVFUWFpUUFDNE1FQVFOL0lBSkJnQVJQQkVBZ0FDQUJJQUlRQ3hvZ0FBOExJQUFnQW1vaEF3SkFJQUFnQVhOQkEzRkZCRUFDUUNBQVFRTnhSUVJBSUFBaEFnd0JDeUFDUVFGSUJFQWdBQ0VDREFFTElBQWhBZ05BSUFJZ0FTMEFBRG9BQUNBQlFRRnFJUUVnQWtFQmFpSUNRUU54UlEwQklBSWdBMGtOQUFzTEFrQWdBMEY4Y1NJRVFjQUFTUTBBSUFJZ0JFRkFhaUlGU3cwQUEwQWdBaUFCS0FJQU5nSUFJQUlnQVNnQ0JEWUNCQ0FDSUFFb0FnZzJBZ2dnQWlBQktBSU1OZ0lNSUFJZ0FTZ0NFRFlDRUNBQ0lBRW9BaFEyQWhRZ0FpQUJLQUlZTmdJWUlBSWdBU2dDSERZQ0hDQUNJQUVvQWlBMkFpQWdBaUFCS0FJa05nSWtJQUlnQVNnQ0tEWUNLQ0FDSUFFb0FpdzJBaXdnQWlBQktBSXdOZ0l3SUFJZ0FTZ0NORFlDTkNBQ0lBRW9BamcyQWpnZ0FpQUJLQUk4TmdJOElBRkJRR3NoQVNBQ1FVQnJJZ0lnQlUwTkFBc0xJQUlnQkU4TkFRTkFJQUlnQVNnQ0FEWUNBQ0FCUVFScUlRRWdBa0VFYWlJQ0lBUkpEUUFMREFFTElBTkJCRWtFUUNBQUlRSU1BUXNnQUNBRFFRUnJJZ1JMQkVBZ0FDRUNEQUVMSUFBaEFnTkFJQUlnQVMwQUFEb0FBQ0FDSUFFdEFBRTZBQUVnQWlBQkxRQUNPZ0FDSUFJZ0FTMEFBem9BQXlBQlFRUnFJUUVnQWtFRWFpSUNJQVJORFFBTEN5QUNJQU5KQkVBRFFDQUNJQUV0QUFBNkFBQWdBVUVCYWlFQklBSkJBV29pQWlBRFJ3MEFDd3NnQUF0REFRRi9Jd0JCRUdzaUFpUUFJQUlnQURZQ0RDQUNJQUUyQWdnZ0FpZ0NEQUovSXdCQkVHc2lBQ0FDS0FJSU5nSU1JQUFvQWd4QkRHb0xFRVFnQWtFUWFpUUFDNkl1QVF4L0l3QkJFR3NpRENRQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBSUFCQjlBRk5CRUJCcUo0QktBSUFJZ1ZCRUNBQVFRdHFRWGh4SUFCQkMwa2JJZ2hCQTNZaUFuWWlBVUVEY1FSQUlBRkJmM05CQVhFZ0Ftb2lBMEVEZENJQlFkaWVBV29vQWdBaUJFRUlhaUVBQWtBZ0JDZ0NDQ0lDSUFGQjBKNEJhaUlCUmdSQVFhaWVBU0FGUVg0Z0EzZHhOZ0lBREFFTElBSWdBVFlDRENBQklBSTJBZ2dMSUFRZ0EwRURkQ0lCUVFOeU5nSUVJQUVnQkdvaUFTQUJLQUlFUVFGeU5nSUVEQTBMSUFoQnNKNEJLQUlBSWdwTkRRRWdBUVJBQWtCQkFpQUNkQ0lBUVFBZ0FHdHlJQUVnQW5SeElnQkJBQ0FBYTNGQkFXc2lBQ0FBUVF4MlFSQnhJZ0oySWdGQkJYWkJDSEVpQUNBQ2NpQUJJQUIySWdGQkFuWkJCSEVpQUhJZ0FTQUFkaUlCUVFGMlFRSnhJZ0J5SUFFZ0FIWWlBVUVCZGtFQmNTSUFjaUFCSUFCMmFpSURRUU4wSWdCQjJKNEJhaWdDQUNJRUtBSUlJZ0VnQUVIUW5nRnFJZ0JHQkVCQnFKNEJJQVZCZmlBRGQzRWlCVFlDQUF3QkN5QUJJQUEyQWd3Z0FDQUJOZ0lJQ3lBRVFRaHFJUUFnQkNBSVFRTnlOZ0lFSUFRZ0NHb2lBaUFEUVFOMElnRWdDR3NpQTBFQmNqWUNCQ0FCSUFScUlBTTJBZ0FnQ2dSQUlBcEJBM1lpQVVFRGRFSFFuZ0ZxSVFkQnZKNEJLQUlBSVFRQ2Z5QUZRUUVnQVhRaUFYRkZCRUJCcUo0QklBRWdCWEkyQWdBZ0J3d0JDeUFIS0FJSUN5RUJJQWNnQkRZQ0NDQUJJQVEyQWd3Z0JDQUhOZ0lNSUFRZ0FUWUNDQXRCdko0QklBSTJBZ0JCc0o0QklBTTJBZ0FNRFF0QnJKNEJLQUlBSWdaRkRRRWdCa0VBSUFacmNVRUJheUlBSUFCQkRIWkJFSEVpQW5ZaUFVRUZka0VJY1NJQUlBSnlJQUVnQUhZaUFVRUNka0VFY1NJQWNpQUJJQUIySWdGQkFYWkJBbkVpQUhJZ0FTQUFkaUlCUVFGMlFRRnhJZ0J5SUFFZ0FIWnFRUUowUWRpZ0FXb29BZ0FpQVNnQ0JFRjRjU0FJYXlFRElBRWhBZ05BQWtBZ0FpZ0NFQ0lBUlFSQUlBSW9BaFFpQUVVTkFRc2dBQ2dDQkVGNGNTQUlheUlDSUFNZ0FpQURTU0lDR3lFRElBQWdBU0FDR3lFQklBQWhBZ3dCQ3dzZ0FTQUlhaUlKSUFGTkRRSWdBU2dDR0NFTElBRWdBU2dDRENJRVJ3UkFJQUVvQWdnaUFFRzRuZ0VvQWdCSkdpQUFJQVEyQWd3Z0JDQUFOZ0lJREF3TElBRkJGR29pQWlnQ0FDSUFSUVJBSUFFb0FoQWlBRVVOQkNBQlFSQnFJUUlMQTBBZ0FpRUhJQUFpQkVFVWFpSUNLQUlBSWdBTkFDQUVRUkJxSVFJZ0JDZ0NFQ0lBRFFBTElBZEJBRFlDQUF3TEMwRi9JUWdnQUVHL2Ywc05BQ0FBUVF0cUlnQkJlSEVoQ0VHc25nRW9BZ0FpQ1VVTkFFRUFJQWhySVFNQ1FBSkFBa0FDZjBFQUlBaEJnQUpKRFFBYVFSOGdDRUgvLy84SFN3MEFHaUFBUVFoMklnQWdBRUdBL2o5cVFSQjJRUWh4SWdKMElnQWdBRUdBNEI5cVFSQjJRUVJ4SWdGMElnQWdBRUdBZ0E5cVFSQjJRUUp4SWdCMFFROTJJQUVnQW5JZ0FISnJJZ0JCQVhRZ0NDQUFRUlZxZGtFQmNYSkJIR29MSWdWQkFuUkIyS0FCYWlnQ0FDSUNSUVJBUVFBaEFBd0JDMEVBSVFBZ0NFRUFRUmtnQlVFQmRtc2dCVUVmUmh0MElRRURRQUpBSUFJb0FnUkJlSEVnQ0dzaUJ5QURUdzBBSUFJaEJDQUhJZ01OQUVFQUlRTWdBaUVBREFNTElBQWdBaWdDRkNJSElBY2dBaUFCUVIxMlFRUnhhaWdDRUNJQ1Joc2dBQ0FIR3lFQUlBRkJBWFFoQVNBQ0RRQUxDeUFBSUFSeVJRUkFRUUlnQlhRaUFFRUFJQUJyY2lBSmNTSUFSUTBESUFCQkFDQUFhM0ZCQVdzaUFDQUFRUXgyUVJCeElnSjJJZ0ZCQlhaQkNIRWlBQ0FDY2lBQklBQjJJZ0ZCQW5aQkJIRWlBSElnQVNBQWRpSUJRUUYyUVFKeElnQnlJQUVnQUhZaUFVRUJka0VCY1NJQWNpQUJJQUIyYWtFQ2RFSFlvQUZxS0FJQUlRQUxJQUJGRFFFTEEwQWdBQ2dDQkVGNGNTQUlheUlCSUFOSklRSWdBU0FESUFJYklRTWdBQ0FFSUFJYklRUWdBQ2dDRUNJQkJIOGdBUVVnQUNnQ0ZBc2lBQTBBQ3dzZ0JFVU5BQ0FEUWJDZUFTZ0NBQ0FJYTA4TkFDQUVJQWhxSWdZZ0JFME5BU0FFS0FJWUlRVWdCQ0FFS0FJTUlnRkhCRUFnQkNnQ0NDSUFRYmllQVNnQ0FFa2FJQUFnQVRZQ0RDQUJJQUEyQWdnTUNnc2dCRUVVYWlJQ0tBSUFJZ0JGQkVBZ0JDZ0NFQ0lBUlEwRUlBUkJFR29oQWdzRFFDQUNJUWNnQUNJQlFSUnFJZ0lvQWdBaUFBMEFJQUZCRUdvaEFpQUJLQUlRSWdBTkFBc2dCMEVBTmdJQURBa0xJQWhCc0o0QktBSUFJZ0pOQkVCQnZKNEJLQUlBSVFNQ1FDQUNJQWhySWdGQkVFOEVRRUd3bmdFZ0FUWUNBRUc4bmdFZ0F5QUlhaUlBTmdJQUlBQWdBVUVCY2pZQ0JDQUNJQU5xSUFFMkFnQWdBeUFJUVFOeU5nSUVEQUVMUWJ5ZUFVRUFOZ0lBUWJDZUFVRUFOZ0lBSUFNZ0FrRURjallDQkNBQ0lBTnFJZ0FnQUNnQ0JFRUJjallDQkFzZ0EwRUlhaUVBREFzTElBaEJ0SjRCS0FJQUlnWkpCRUJCdEo0QklBWWdDR3NpQVRZQ0FFSEFuZ0ZCd0o0QktBSUFJZ0lnQ0dvaUFEWUNBQ0FBSUFGQkFYSTJBZ1FnQWlBSVFRTnlOZ0lFSUFKQkNHb2hBQXdMQzBFQUlRQWdDRUV2YWlJSkFuOUJnS0lCS0FJQUJFQkJpS0lCS0FJQURBRUxRWXlpQVVKL053SUFRWVNpQVVLQW9JQ0FnSUFFTndJQVFZQ2lBU0FNUVF4cVFYQnhRZGlxMWFvRmN6WUNBRUdVb2dGQkFEWUNBRUhrb1FGQkFEWUNBRUdBSUFzaUFXb2lCVUVBSUFGcklnZHhJZ0lnQ0UwTkNrSGdvUUVvQWdBaUJBUkFRZGloQVNnQ0FDSURJQUpxSWdFZ0EwME5DeUFCSUFSTERRc0xRZVNoQVMwQUFFRUVjUTBGQWtBQ1FFSEFuZ0VvQWdBaUF3UkFRZWloQVNFQUEwQWdBeUFBS0FJQUlnRlBCRUFnQVNBQUtBSUVhaUFEU3cwREN5QUFLQUlJSWdBTkFBc0xRUUFRUFNJQlFYOUdEUVlnQWlFRlFZU2lBU2dDQUNJRFFRRnJJZ0FnQVhFRVFDQUNJQUZySUFBZ0FXcEJBQ0FEYTNGcUlRVUxJQVVnQ0UwTkJpQUZRZjcvLy84SFN3MEdRZUNoQVNnQ0FDSUVCRUJCMktFQktBSUFJZ01nQldvaUFDQURUUTBISUFBZ0JFc05Cd3NnQlJBOUlnQWdBVWNOQVF3SUN5QUZJQVpySUFkeElnVkIvdi8vL3dkTERRVWdCUkE5SWdFZ0FDZ0NBQ0FBS0FJRWFrWU5CQ0FCSVFBTEFrQWdBRUYvUmcwQUlBaEJNR29nQlUwTkFFR0lvZ0VvQWdBaUFTQUpJQVZyYWtFQUlBRnJjU0lCUWY3Ly8vOEhTd1JBSUFBaEFRd0lDeUFCRUQxQmYwY0VRQ0FCSUFWcUlRVWdBQ0VCREFnTFFRQWdCV3NRUFJvTUJRc2dBQ0lCUVg5SERRWU1CQXNBQzBFQUlRUU1Cd3RCQUNFQkRBVUxJQUZCZjBjTkFndEI1S0VCUWVTaEFTZ0NBRUVFY2pZQ0FBc2dBa0grLy8vL0Iwc05BU0FDRUQwaEFVRUFFRDBoQUNBQlFYOUdEUUVnQUVGL1JnMEJJQUFnQVUwTkFTQUFJQUZySWdVZ0NFRW9hazBOQVF0QjJLRUJRZGloQVNnQ0FDQUZhaUlBTmdJQVFkeWhBU2dDQUNBQVNRUkFRZHloQVNBQU5nSUFDd0pBQWtBQ1FFSEFuZ0VvQWdBaUJ3UkFRZWloQVNFQUEwQWdBU0FBS0FJQUlnTWdBQ2dDQkNJQ2FrWU5BaUFBS0FJSUlnQU5BQXNNQWd0QnVKNEJLQUlBSWdCQkFDQUFJQUZORzBVRVFFRzRuZ0VnQVRZQ0FBdEJBQ0VBUWV5aEFTQUZOZ0lBUWVpaEFTQUJOZ0lBUWNpZUFVRi9OZ0lBUWN5ZUFVR0FvZ0VvQWdBMkFnQkI5S0VCUVFBMkFnQURRQ0FBUVFOMElnTkIySjRCYWlBRFFkQ2VBV29pQWpZQ0FDQURRZHllQVdvZ0FqWUNBQ0FBUVFGcUlnQkJJRWNOQUF0QnRKNEJJQVZCS0dzaUEwRjRJQUZyUVFkeFFRQWdBVUVJYWtFSGNSc2lBR3NpQWpZQ0FFSEFuZ0VnQUNBQmFpSUFOZ0lBSUFBZ0FrRUJjallDQkNBQklBTnFRU2cyQWdSQnhKNEJRWkNpQVNnQ0FEWUNBQXdDQ3lBQUxRQU1RUWh4RFFBZ0F5QUhTdzBBSUFFZ0IwME5BQ0FBSUFJZ0JXbzJBZ1JCd0o0QklBZEJlQ0FIYTBFSGNVRUFJQWRCQ0dwQkIzRWJJZ0JxSWdJMkFnQkJ0SjRCUWJTZUFTZ0NBQ0FGYWlJQklBQnJJZ0EyQWdBZ0FpQUFRUUZ5TmdJRUlBRWdCMnBCS0RZQ0JFSEVuZ0ZCa0tJQktBSUFOZ0lBREFFTFFiaWVBU2dDQUNBQlN3UkFRYmllQVNBQk5nSUFDeUFCSUFWcUlRSkI2S0VCSVFBQ1FBSkFBa0FDUUFKQUFrQURRQ0FDSUFBb0FnQkhCRUFnQUNnQ0NDSUFEUUVNQWdzTElBQXRBQXhCQ0hGRkRRRUxRZWloQVNFQUEwQWdCeUFBS0FJQUlnSlBCRUFnQWlBQUtBSUVhaUlFSUFkTERRTUxJQUFvQWdnaEFBd0FDd0FMSUFBZ0FUWUNBQ0FBSUFBb0FnUWdCV28yQWdRZ0FVRjRJQUZyUVFkeFFRQWdBVUVJYWtFSGNSdHFJZ2tnQ0VFRGNqWUNCQ0FDUVhnZ0FtdEJCM0ZCQUNBQ1FRaHFRUWR4RzJvaUJTQUlJQWxxSWdacklRSWdCU0FIUmdSQVFjQ2VBU0FHTmdJQVFiU2VBVUcwbmdFb0FnQWdBbW9pQURZQ0FDQUdJQUJCQVhJMkFnUU1Bd3NnQlVHOG5nRW9BZ0JHQkVCQnZKNEJJQVkyQWdCQnNKNEJRYkNlQVNnQ0FDQUNhaUlBTmdJQUlBWWdBRUVCY2pZQ0JDQUFJQVpxSUFBMkFnQU1Bd3NnQlNnQ0JDSUFRUU54UVFGR0JFQWdBRUY0Y1NFSEFrQWdBRUgvQVUwRVFDQUZLQUlJSWdNZ0FFRURkaUlBUVFOMFFkQ2VBV3BHR2lBRElBVW9BZ3dpQVVZRVFFR29uZ0ZCcUo0QktBSUFRWDRnQUhkeE5nSUFEQUlMSUFNZ0FUWUNEQ0FCSUFNMkFnZ01BUXNnQlNnQ0dDRUlBa0FnQlNBRktBSU1JZ0ZIQkVBZ0JTZ0NDQ0lBSUFFMkFnd2dBU0FBTmdJSURBRUxBa0FnQlVFVWFpSUFLQUlBSWdNTkFDQUZRUkJxSWdBb0FnQWlBdzBBUVFBaEFRd0JDd05BSUFBaEJDQURJZ0ZCRkdvaUFDZ0NBQ0lERFFBZ0FVRVFhaUVBSUFFb0FoQWlBdzBBQ3lBRVFRQTJBZ0FMSUFoRkRRQUNRQ0FGSUFVb0Fod2lBMEVDZEVIWW9BRnFJZ0FvQWdCR0JFQWdBQ0FCTmdJQUlBRU5BVUdzbmdGQnJKNEJLQUlBUVg0Z0EzZHhOZ0lBREFJTElBaEJFRUVVSUFnb0FoQWdCVVliYWlBQk5nSUFJQUZGRFFFTElBRWdDRFlDR0NBRktBSVFJZ0FFUUNBQklBQTJBaEFnQUNBQk5nSVlDeUFGS0FJVUlnQkZEUUFnQVNBQU5nSVVJQUFnQVRZQ0dBc2dCU0FIYWlFRklBSWdCMm9oQWdzZ0JTQUZLQUlFUVg1eE5nSUVJQVlnQWtFQmNqWUNCQ0FDSUFacUlBSTJBZ0FnQWtIL0FVMEVRQ0FDUVFOMklnQkJBM1JCMEo0QmFpRUNBbjlCcUo0QktBSUFJZ0ZCQVNBQWRDSUFjVVVFUUVHb25nRWdBQ0FCY2pZQ0FDQUNEQUVMSUFJb0FnZ0xJUUFnQWlBR05nSUlJQUFnQmpZQ0RDQUdJQUkyQWd3Z0JpQUFOZ0lJREFNTFFSOGhBQ0FDUWYvLy93ZE5CRUFnQWtFSWRpSUFJQUJCZ1A0L2FrRVFka0VJY1NJRGRDSUFJQUJCZ09BZmFrRVFka0VFY1NJQmRDSUFJQUJCZ0lBUGFrRVFka0VDY1NJQWRFRVBkaUFCSUFOeUlBQnlheUlBUVFGMElBSWdBRUVWYW5aQkFYRnlRUnhxSVFBTElBWWdBRFlDSENBR1FnQTNBaEFnQUVFQ2RFSFlvQUZxSVFRQ1FFR3NuZ0VvQWdBaUEwRUJJQUIwSWdGeFJRUkFRYXllQVNBQklBTnlOZ0lBSUFRZ0JqWUNBQ0FHSUFRMkFoZ01BUXNnQWtFQVFSa2dBRUVCZG1zZ0FFRWZSaHQwSVFBZ0JDZ0NBQ0VCQTBBZ0FTSURLQUlFUVhoeElBSkdEUU1nQUVFZGRpRUJJQUJCQVhRaEFDQURJQUZCQkhGcUlnUW9BaEFpQVEwQUN5QUVJQVkyQWhBZ0JpQUROZ0lZQ3lBR0lBWTJBZ3dnQmlBR05nSUlEQUlMUWJTZUFTQUZRU2hySWdOQmVDQUJhMEVIY1VFQUlBRkJDR3BCQjNFYklnQnJJZ0kyQWdCQndKNEJJQUFnQVdvaUFEWUNBQ0FBSUFKQkFYSTJBZ1FnQVNBRGFrRW9OZ0lFUWNTZUFVR1FvZ0VvQWdBMkFnQWdCeUFFUVNjZ0JHdEJCM0ZCQUNBRVFTZHJRUWR4RzJwQkwyc2lBQ0FBSUFkQkVHcEpHeUlDUVJzMkFnUWdBa0h3b1FFcEFnQTNBaEFnQWtIb29RRXBBZ0EzQWdoQjhLRUJJQUpCQ0dvMkFnQkI3S0VCSUFVMkFnQkI2S0VCSUFFMkFnQkI5S0VCUVFBMkFnQWdBa0VZYWlFQUEwQWdBRUVITmdJRUlBQkJDR29oQVNBQVFRUnFJUUFnQVNBRVNRMEFDeUFDSUFkR0RRTWdBaUFDS0FJRVFYNXhOZ0lFSUFjZ0FpQUhheUlFUVFGeU5nSUVJQUlnQkRZQ0FDQUVRZjhCVFFSQUlBUkJBM1lpQUVFRGRFSFFuZ0ZxSVFJQ2YwR29uZ0VvQWdBaUFVRUJJQUIwSWdCeFJRUkFRYWllQVNBQUlBRnlOZ0lBSUFJTUFRc2dBaWdDQ0FzaEFDQUNJQWMyQWdnZ0FDQUhOZ0lNSUFjZ0FqWUNEQ0FISUFBMkFnZ01CQXRCSHlFQUlBZENBRGNDRUNBRVFmLy8vd2ROQkVBZ0JFRUlkaUlBSUFCQmdQNC9ha0VRZGtFSWNTSUNkQ0lBSUFCQmdPQWZha0VRZGtFRWNTSUJkQ0lBSUFCQmdJQVBha0VRZGtFQ2NTSUFkRUVQZGlBQklBSnlJQUJ5YXlJQVFRRjBJQVFnQUVFVmFuWkJBWEZ5UVJ4cUlRQUxJQWNnQURZQ0hDQUFRUUowUWRpZ0FXb2hBd0pBUWF5ZUFTZ0NBQ0lDUVFFZ0FIUWlBWEZGQkVCQnJKNEJJQUVnQW5JMkFnQWdBeUFITmdJQUlBY2dBellDR0F3QkN5QUVRUUJCR1NBQVFRRjJheUFBUVI5R0czUWhBQ0FES0FJQUlRRURRQ0FCSWdJb0FnUkJlSEVnQkVZTkJDQUFRUjEySVFFZ0FFRUJkQ0VBSUFJZ0FVRUVjV29pQXlnQ0VDSUJEUUFMSUFNZ0J6WUNFQ0FISUFJMkFoZ0xJQWNnQnpZQ0RDQUhJQWMyQWdnTUF3c2dBeWdDQ0NJQUlBWTJBZ3dnQXlBR05nSUlJQVpCQURZQ0dDQUdJQU0yQWd3Z0JpQUFOZ0lJQ3lBSlFRaHFJUUFNQlFzZ0FpZ0NDQ0lBSUFjMkFnd2dBaUFITmdJSUlBZEJBRFlDR0NBSElBSTJBZ3dnQnlBQU5nSUlDMEcwbmdFb0FnQWlBQ0FJVFEwQVFiU2VBU0FBSUFocklnRTJBZ0JCd0o0QlFjQ2VBU2dDQUNJQ0lBaHFJZ0EyQWdBZ0FDQUJRUUZ5TmdJRUlBSWdDRUVEY2pZQ0JDQUNRUWhxSVFBTUF3dEIrSjBCUVRBMkFnQkJBQ0VBREFJTEFrQWdCVVVOQUFKQUlBUW9BaHdpQWtFQ2RFSFlvQUZxSWdBb0FnQWdCRVlFUUNBQUlBRTJBZ0FnQVEwQlFheWVBU0FKUVg0Z0FuZHhJZ2syQWdBTUFnc2dCVUVRUVJRZ0JTZ0NFQ0FFUmh0cUlBRTJBZ0FnQVVVTkFRc2dBU0FGTmdJWUlBUW9BaEFpQUFSQUlBRWdBRFlDRUNBQUlBRTJBaGdMSUFRb0FoUWlBRVVOQUNBQklBQTJBaFFnQUNBQk5nSVlDd0pBSUFOQkQwMEVRQ0FFSUFNZ0NHb2lBRUVEY2pZQ0JDQUFJQVJxSWdBZ0FDZ0NCRUVCY2pZQ0JBd0JDeUFFSUFoQkEzSTJBZ1FnQmlBRFFRRnlOZ0lFSUFNZ0Jtb2dBellDQUNBRFFmOEJUUVJBSUFOQkEzWWlBRUVEZEVIUW5nRnFJUUlDZjBHb25nRW9BZ0FpQVVFQklBQjBJZ0J4UlFSQVFhaWVBU0FBSUFGeU5nSUFJQUlNQVFzZ0FpZ0NDQXNoQUNBQ0lBWTJBZ2dnQUNBR05nSU1JQVlnQWpZQ0RDQUdJQUEyQWdnTUFRdEJIeUVBSUFOQi8vLy9CMDBFUUNBRFFRaDJJZ0FnQUVHQS9qOXFRUkIyUVFoeElnSjBJZ0FnQUVHQTRCOXFRUkIyUVFSeElnRjBJZ0FnQUVHQWdBOXFRUkIyUVFKeElnQjBRUTkySUFFZ0FuSWdBSEpySWdCQkFYUWdBeUFBUVJWcWRrRUJjWEpCSEdvaEFBc2dCaUFBTmdJY0lBWkNBRGNDRUNBQVFRSjBRZGlnQVdvaEFnSkFBa0FnQ1VFQklBQjBJZ0Z4UlFSQVFheWVBU0FCSUFseU5nSUFJQUlnQmpZQ0FDQUdJQUkyQWhnTUFRc2dBMEVBUVJrZ0FFRUJkbXNnQUVFZlJodDBJUUFnQWlnQ0FDRUlBMEFnQ0NJQktBSUVRWGh4SUFOR0RRSWdBRUVkZGlFQ0lBQkJBWFFoQUNBQklBSkJCSEZxSWdJb0FoQWlDQTBBQ3lBQ0lBWTJBaEFnQmlBQk5nSVlDeUFHSUFZMkFnd2dCaUFHTmdJSURBRUxJQUVvQWdnaUFDQUdOZ0lNSUFFZ0JqWUNDQ0FHUVFBMkFoZ2dCaUFCTmdJTUlBWWdBRFlDQ0FzZ0JFRUlhaUVBREFFTEFrQWdDMFVOQUFKQUlBRW9BaHdpQWtFQ2RFSFlvQUZxSWdBb0FnQWdBVVlFUUNBQUlBUTJBZ0FnQkEwQlFheWVBU0FHUVg0Z0FuZHhOZ0lBREFJTElBdEJFRUVVSUFzb0FoQWdBVVliYWlBRU5nSUFJQVJGRFFFTElBUWdDellDR0NBQktBSVFJZ0FFUUNBRUlBQTJBaEFnQUNBRU5nSVlDeUFCS0FJVUlnQkZEUUFnQkNBQU5nSVVJQUFnQkRZQ0dBc0NRQ0FEUVE5TkJFQWdBU0FESUFocUlnQkJBM0kyQWdRZ0FDQUJhaUlBSUFBb0FnUkJBWEkyQWdRTUFRc2dBU0FJUVFOeU5nSUVJQWtnQTBFQmNqWUNCQ0FESUFscUlBTTJBZ0FnQ2dSQUlBcEJBM1lpQUVFRGRFSFFuZ0ZxSVFSQnZKNEJLQUlBSVFJQ2YwRUJJQUIwSWdBZ0JYRkZCRUJCcUo0QklBQWdCWEkyQWdBZ0JBd0JDeUFFS0FJSUN5RUFJQVFnQWpZQ0NDQUFJQUkyQWd3Z0FpQUVOZ0lNSUFJZ0FEWUNDQXRCdko0QklBazJBZ0JCc0o0QklBTTJBZ0FMSUFGQkNHb2hBQXNnREVFUWFpUUFJQUFMN0FJQkFuOGpBRUVRYXlJQkpBQWdBU0FBTmdJTUFrQWdBU2dDREVVTkFDQUJLQUlNS0FJd0JFQWdBU2dDRENJQUlBQW9BakJCQVdzMkFqQUxJQUVvQWd3b0FqQU5BQ0FCS0FJTUtBSWdCRUFnQVNnQ0RFRUJOZ0lnSUFFb0Fnd1FNQm9MSUFFb0Fnd29BaVJCQVVZRVFDQUJLQUlNRUdRTEFrQWdBU2dDRENnQ0xFVU5BQ0FCS0FJTUxRQW9RUUZ4RFFBZ0FTZ0NEQ0VDSXdCQkVHc2lBQ0FCS0FJTUtBSXNOZ0lNSUFBZ0FqWUNDQ0FBUVFBMkFnUURRQ0FBS0FJRUlBQW9BZ3dvQWtSSkJFQWdBQ2dDRENnQ1RDQUFLQUlFUVFKMGFpZ0NBQ0FBS0FJSVJnUkFJQUFvQWd3b0Frd2dBQ2dDQkVFQ2RHb2dBQ2dDRENnQ1RDQUFLQUlNS0FKRVFRRnJRUUowYWlnQ0FEWUNBQ0FBS0FJTUlnQWdBQ2dDUkVFQmF6WUNSQVVnQUNBQUtBSUVRUUZxTmdJRURBSUxDd3NMSUFFb0FneEJBRUlBUVFVUUh4b2dBU2dDRENnQ0FBUkFJQUVvQWd3b0FnQVFHZ3NnQVNnQ0RCQVZDeUFCUVJCcUpBQUxZQUVCZnlNQVFSQnJJZ0VrQUNBQklBQTJBZ2dnQVNBQktBSUlRZ0lRSERZQ0JBSkFJQUVvQWdSRkJFQWdBVUVBT3dFT0RBRUxJQUVnQVNnQ0JDMEFBQ0FCS0FJRUxRQUJRUWgwYWpzQkRnc2dBUzhCRGlFQUlBRkJFR29rQUNBQUMra0JBUUYvSXdCQklHc2lBaVFBSUFJZ0FEWUNIQ0FDSUFFM0F4QWdBaWtERUNFQkl3QkJJR3NpQUNBQ0tBSWNOZ0lZSUFBZ0FUY0RFQUpBQWtBQ1FDQUFLQUlZTFFBQVFRRnhSUTBBSUFBcEF4QWdBQ2dDR0NrREVDQUFLUU1RZkZZTkFDQUFLQUlZS1FNSUlBQW9BaGdwQXhBZ0FDa0RFSHhhRFFFTElBQW9BaGhCQURvQUFDQUFRUUEyQWh3TUFRc2dBQ0FBS0FJWUtBSUVJQUFvQWhncEF4Q25hallDRENBQUlBQW9BZ3cyQWh3TElBSWdBQ2dDSERZQ0RDQUNLQUlNQkVBZ0FpZ0NIQ0lBSUFJcEF4QWdBQ2tERUh3M0F4QUxJQUlvQWd3aEFDQUNRU0JxSkFBZ0FBdHZBUUYvSXdCQkVHc2lBaVFBSUFJZ0FEWUNDQ0FDSUFFN0FRWWdBaUFDS0FJSVFnSVFIRFlDQUFKQUlBSW9BZ0JGQkVBZ0FrRi9OZ0lNREFFTElBSW9BZ0FnQWk4QkJqb0FBQ0FDS0FJQUlBSXZBUVpCQ0hZNkFBRWdBa0VBTmdJTUN5QUNLQUlNR2lBQ1FSQnFKQUFMaVFFQkEzOGdBQ2dDSENJQkVDY0NRQ0FBS0FJUUlnSWdBU2dDRUNJRElBSWdBMGtiSWdKRkRRQWdBQ2dDRENBQktBSUlJQUlRRnhvZ0FDQUFLQUlNSUFKcU5nSU1JQUVnQVNnQ0NDQUNhallDQ0NBQUlBQW9BaFFnQW1vMkFoUWdBQ0FBS0FJUUlBSnJOZ0lRSUFFZ0FTZ0NFQ0FDYXlJQU5nSVFJQUFOQUNBQklBRW9BZ1EyQWdnTEM3WUNBUUYvSXdCQk1Hc2lCQ1FBSUFRZ0FEWUNKQ0FFSUFFMkFpQWdCQ0FDTndNWUlBUWdBellDRkFKQUlBUW9BaVFwQXhoQ0FTQUVLQUlVcllhRFVBUkFJQVFvQWlSQkRHcEJIRUVBRUJRZ0JFSi9Od01vREFFTEFrQWdCQ2dDSkNnQ0FFVUVRQ0FFSUFRb0FpUW9BZ2dnQkNnQ0lDQUVLUU1ZSUFRb0FoUWdCQ2dDSkNnQ0JCRVBBRGNEQ0F3QkN5QUVJQVFvQWlRb0FnQWdCQ2dDSkNnQ0NDQUVLQUlnSUFRcEF4Z2dCQ2dDRkNBRUtBSWtLQUlFRVFzQU53TUlDeUFFS1FNSVFnQlRCRUFDUUNBRUtBSVVRUVJHRFFBZ0JDZ0NGRUVPUmcwQUFrQWdCQ2dDSkNBRVFnaEJCQkFmUWdCVEJFQWdCQ2dDSkVFTWFrRVVRUUFRRkF3QkN5QUVLQUlrUVF4cUlBUW9BZ0FnQkNnQ0JCQVVDd3NMSUFRZ0JDa0RDRGNES0FzZ0JDa0RLQ0VDSUFSQk1Hb2tBQ0FDQzQ4QkFRRi9Jd0JCRUdzaUFpUUFJQUlnQURZQ0NDQUNJQUUyQWdRZ0FpQUNLQUlJUWdRUUhEWUNBQUpBSUFJb0FnQkZCRUFnQWtGL05nSU1EQUVMSUFJb0FnQWdBaWdDQkRvQUFDQUNLQUlBSUFJb0FnUkJDSFk2QUFFZ0FpZ0NBQ0FDS0FJRVFSQjJPZ0FDSUFJb0FnQWdBaWdDQkVFWWRqb0FBeUFDUVFBMkFnd0xJQUlvQWd3YUlBSkJFR29rQUFzWEFDQUFMUUFBUVNCeFJRUkFJQUVnQWlBQUVITWFDd3RRQVFGL0l3QkJFR3NpQVNRQUlBRWdBRFlDREFOQUlBRW9BZ3dFUUNBQklBRW9BZ3dvQWdBMkFnZ2dBU2dDRENnQ0RCQVZJQUVvQWd3UUZTQUJJQUVvQWdnMkFnd01BUXNMSUFGQkVHb2tBQXMrQVFGL0l3QkJFR3NpQVNRQUlBRWdBRFlDRENBQktBSU1CRUFnQVNnQ0RDZ0NBQkFWSUFFb0Fnd29BZ3dRRlNBQktBSU1FQlVMSUFGQkVHb2tBQXQ5QVFGL0l3QkJFR3NpQVNRQUlBRWdBRFlDRENBQktBSU1CRUFnQVVJQU53TUFBMEFnQVNrREFDQUJLQUlNS1FNSVdrVUVRQ0FCS0FJTUtBSUFJQUVwQXdDblFRUjBhaEI5SUFFZ0FTa0RBRUlCZkRjREFBd0JDd3NnQVNnQ0RDZ0NBQkFWSUFFb0Fnd29BaWdRSXlBQktBSU1FQlVMSUFGQkVHb2tBQXR1QVFGL0l3QkJnQUpySWdVa0FBSkFJQVJCZ01BRWNRMEFJQUlnQTB3TkFDQUZJQUZCL3dGeElBSWdBMnNpQWtHQUFpQUNRWUFDU1NJQkd4QXZJQUZGQkVBRFFDQUFJQVZCZ0FJUUlTQUNRWUFDYXlJQ1FmOEJTdzBBQ3dzZ0FDQUZJQUlRSVFzZ0JVR0FBbW9rQUF1TUp3SURmZ3QvQWtBZ0FDZ0NsQzFGQkVBZ0FFRUhOZ0tnTFF3QkN3SkFBa0FDUUNBQUtBSjRRUUZPQkVBZ0FDZ0NBQ0lLS0FJc1FRSkhEUU5CLzREL24zOGhDQU5BQWtBZ0NFRUJjVVVOQUNBQUlBbEJBblJxTHdHSUFVVU5BRUVBSVFnTUJBc0NRQ0FJUVFKeFJRMEFJQUFnQ1VFQ2RFRUVjbW92QVlnQlJRMEFRUUFoQ0F3RUN5QUlRUUoySVFnZ0NVRUNhaUlKUVNCSERRQUxEQUVMSUFKQkJXb2lDQ0VKREFNTEFrQWdBQzhCckFFTkFDQUFMd0d3QVEwQUlBQXZBYndCRFFCQklDRUpBMEFnQUNBSlFRSjBJZ2RxTHdHSUFRMEJJQUFnQjBFRWNtb3ZBWWdCRFFFZ0FDQUhRUWh5YWk4QmlBRU5BU0FBSUFkQkRISnFMd0dJQVEwQlFRQWhDQ0FKUVFScUlnbEJnQUpIRFFBTERBRUxRUUVoQ0FzZ0NpQUlOZ0lzQ3lBQUlBQkJqQlpxRUg0Z0FDQUFRWmdXYWhCK0lBQXZBWW9CSVFnZ0FDQUFRWkFXYWlnQ0FDSU5RUUowYWtILy93TTdBWTRCUVFBaEJ5QU5RUUJPQkVCQkIwR0tBU0FJR3lFT1FRUkJBeUFJR3lFTVFYOGhDMEVBSVFvRFFDQUlJUWtnQUNBS0loQkJBV29pQ2tFQ2RHb3ZBWW9CSVFnQ1FBSkFJQWRCQVdvaUQwSC8vd054SWhFZ0RrSC8vd054VHcwQUlBZ2dDVWNOQUNBUElRY01BUXNDUUNBTVFmLy9BM0VnRVVzRVFDQUFJQWxCQW5ScVFmQVVhaUlISUFjdkFRQWdEMm83QVFBTUFRc2dDUVJBSUFrZ0MwY0VRQ0FBSUFsQkFuUnFRZkFVYWlJSElBY3ZBUUJCQVdvN0FRQUxJQUFnQUM4QnNCVkJBV283QWJBVkRBRUxJQWRCLy84RGNVRUpUUVJBSUFBZ0FDOEJ0QlZCQVdvN0FiUVZEQUVMSUFBZ0FDOEJ1QlZCQVdvN0FiZ1ZDMEVBSVFjQ2Z5QUlSUVJBUVFNaERFR0tBUXdCQzBFRFFRUWdDQ0FKUmlJTEd5RU1RUVpCQnlBTEd3c2hEaUFKSVFzTElBMGdFRWNOQUFzTElBQkIvaEpxTHdFQUlRZ2dBQ0FBUVp3V2FpZ0NBQ0lOUVFKMGFrR0NFMnBCLy84RE93RUFRUUFoQnlBTlFRQk9CRUJCQjBHS0FTQUlHeUVPUVFSQkF5QUlHeUVNUVg4aEMwRUFJUW9EUUNBSUlRa2dBQ0FLSWhCQkFXb2lDa0VDZEdwQi9oSnFMd0VBSVFnQ1FBSkFJQWRCQVdvaUQwSC8vd054SWhFZ0RrSC8vd054VHcwQUlBZ2dDVWNOQUNBUElRY01BUXNDUUNBTVFmLy9BM0VnRVVzRVFDQUFJQWxCQW5ScVFmQVVhaUlISUFjdkFRQWdEMm83QVFBTUFRc2dDUVJBSUFrZ0MwY0VRQ0FBSUFsQkFuUnFRZkFVYWlJSElBY3ZBUUJCQVdvN0FRQUxJQUFnQUM4QnNCVkJBV283QWJBVkRBRUxJQWRCLy84RGNVRUpUUVJBSUFBZ0FDOEJ0QlZCQVdvN0FiUVZEQUVMSUFBZ0FDOEJ1QlZCQVdvN0FiZ1ZDMEVBSVFjQ2Z5QUlSUVJBUVFNaERFR0tBUXdCQzBFRFFRUWdDQ0FKUmlJTEd5RU1RUVpCQnlBTEd3c2hEaUFKSVFzTElBMGdFRWNOQUFzTElBQWdBRUdrRm1vUWZpQUFJQUFvQXB3dEFuOUJFaUFBUWE0VmFpOEJBQTBBR2tFUklBQkI5aFJxTHdFQURRQWFRUkFnQUVHcUZXb3ZBUUFOQUJwQkR5QUFRZm9VYWk4QkFBMEFHa0VPSUFCQnBoVnFMd0VBRFFBYVFRMGdBRUgrRkdvdkFRQU5BQnBCRENBQVFhSVZhaThCQUEwQUdrRUxJQUJCZ2hWcUx3RUFEUUFhUVFvZ0FFR2VGV292QVFBTkFCcEJDU0FBUVlZVmFpOEJBQTBBR2tFSUlBQkJtaFZxTHdFQURRQWFRUWNnQUVHS0ZXb3ZBUUFOQUJwQkJpQUFRWllWYWk4QkFBMEFHa0VGSUFCQmpoVnFMd0VBRFFBYVFRUWdBRUdTRldvdkFRQU5BQnBCQTBFQ0lBQkI4aFJxTHdFQUd3c2lDa0VEYkdvaUIwRVJhallDbkMwZ0IwRWJha0VEZGlJSElBQW9BcUF0UVFwcVFRTjJJZ2tnQnlBSlNSc2hDQXNDUUFKQUlBSkJCR29nQ0VzTkFDQUJSUTBBSUFBZ0FTQUNJQU1RV3d3QkN5QUFLUU80TFNFRUlBQW9Bc0F0SVFFZ0FDZ0NmRUVFUjBFQUlBZ2dDVWNiUlFSQUlBTkJBbXF0SVFVQ1FDQUJRUU5xSWdoQlAwMEVRQ0FGSUFHdGhpQUVoQ0VGREFFTElBRkJ3QUJHQkVBZ0FDQUFLQUlRSWdGQkFXbzJBaEFnQVNBQUtBSUVhaUFFUEFBQUlBQWdBQ2dDRUNJQlFRRnFOZ0lRSUFFZ0FDZ0NCR29nQkVJSWlEd0FBQ0FBSUFBb0FoQWlBVUVCYWpZQ0VDQUJJQUFvQWdScUlBUkNFSWc4QUFBZ0FDQUFLQUlRSWdGQkFXbzJBaEFnQVNBQUtBSUVhaUFFUWhpSVBBQUFJQUFnQUNnQ0VDSUJRUUZxTmdJUUlBRWdBQ2dDQkdvZ0JFSWdpRHdBQUNBQUlBQW9BaEFpQVVFQmFqWUNFQ0FCSUFBb0FnUnFJQVJDS0lnOEFBQWdBQ0FBS0FJUUlnRkJBV28yQWhBZ0FTQUFLQUlFYWlBRVFqQ0lQQUFBSUFBZ0FDZ0NFQ0lCUVFGcU5nSVFJQUVnQUNnQ0JHb2dCRUk0aUR3QUFFRURJUWdNQVFzZ0FDQUFLQUlRSWdKQkFXbzJBaEFnQWlBQUtBSUVhaUFGSUFHdGhpQUVoQ0lFUEFBQUlBQWdBQ2dDRUNJQ1FRRnFOZ0lRSUFJZ0FDZ0NCR29nQkVJSWlEd0FBQ0FBSUFBb0FoQWlBa0VCYWpZQ0VDQUNJQUFvQWdScUlBUkNFSWc4QUFBZ0FDQUFLQUlRSWdKQkFXbzJBaEFnQWlBQUtBSUVhaUFFUWhpSVBBQUFJQUFnQUNnQ0VDSUNRUUZxTmdJUUlBSWdBQ2dDQkdvZ0JFSWdpRHdBQUNBQUlBQW9BaEFpQWtFQmFqWUNFQ0FDSUFBb0FnUnFJQVJDS0lnOEFBQWdBQ0FBS0FJUUlnSkJBV28yQWhBZ0FpQUFLQUlFYWlBRVFqQ0lQQUFBSUFBZ0FDZ0NFQ0lDUVFGcU5nSVFJQUlnQUNnQ0JHb2dCRUk0aUR3QUFDQUJRVDFySVFnZ0JVSEFBQ0FCYTYySUlRVUxJQUFnQlRjRHVDMGdBQ0FJTmdMQUxTQUFRYkRjQUVHdzVRQVF2d0VNQVFzZ0EwRUVhcTBoQlFKQUlBRkJBMm9pQ0VFL1RRUkFJQVVnQWEyR0lBU0VJUVVNQVFzZ0FVSEFBRVlFUUNBQUlBQW9BaEFpQVVFQmFqWUNFQ0FCSUFBb0FnUnFJQVE4QUFBZ0FDQUFLQUlRSWdGQkFXbzJBaEFnQVNBQUtBSUVhaUFFUWdpSVBBQUFJQUFnQUNnQ0VDSUJRUUZxTmdJUUlBRWdBQ2dDQkdvZ0JFSVFpRHdBQUNBQUlBQW9BaEFpQVVFQmFqWUNFQ0FCSUFBb0FnUnFJQVJDR0lnOEFBQWdBQ0FBS0FJUUlnRkJBV28yQWhBZ0FTQUFLQUlFYWlBRVFpQ0lQQUFBSUFBZ0FDZ0NFQ0lCUVFGcU5nSVFJQUVnQUNnQ0JHb2dCRUlvaUR3QUFDQUFJQUFvQWhBaUFVRUJhallDRUNBQklBQW9BZ1JxSUFSQ01JZzhBQUFnQUNBQUtBSVFJZ0ZCQVdvMkFoQWdBU0FBS0FJRWFpQUVRamlJUEFBQVFRTWhDQXdCQ3lBQUlBQW9BaEFpQWtFQmFqWUNFQ0FDSUFBb0FnUnFJQVVnQWEyR0lBU0VJZ1E4QUFBZ0FDQUFLQUlRSWdKQkFXbzJBaEFnQWlBQUtBSUVhaUFFUWdpSVBBQUFJQUFnQUNnQ0VDSUNRUUZxTmdJUUlBSWdBQ2dDQkdvZ0JFSVFpRHdBQUNBQUlBQW9BaEFpQWtFQmFqWUNFQ0FDSUFBb0FnUnFJQVJDR0lnOEFBQWdBQ0FBS0FJUUlnSkJBV28yQWhBZ0FpQUFLQUlFYWlBRVFpQ0lQQUFBSUFBZ0FDZ0NFQ0lDUVFGcU5nSVFJQUlnQUNnQ0JHb2dCRUlvaUR3QUFDQUFJQUFvQWhBaUFrRUJhallDRUNBQ0lBQW9BZ1JxSUFSQ01JZzhBQUFnQUNBQUtBSVFJZ0pCQVdvMkFoQWdBaUFBS0FJRWFpQUVRamlJUEFBQUlBRkJQV3NoQ0NBRlFjQUFJQUZycllnaEJRc2dBQ0FGTndPNExTQUFJQWcyQXNBdElBQkJrQlpxS0FJQUlndXNRb0FDZlNFRUlBQkJuQlpxS0FJQUlRSUNRQUpBQW44Q2ZnSkFBbjhDZnlBSVFUcE5CRUFnQkNBSXJZWWdCWVFoQkNBSVFRVnFEQUVMSUFoQndBQkdCRUFnQUNBQUtBSVFJZ0ZCQVdvMkFoQWdBU0FBS0FJRWFpQUZQQUFBSUFBZ0FDZ0NFQ0lCUVFGcU5nSVFJQUVnQUNnQ0JHb2dCVUlJaUR3QUFDQUFJQUFvQWhBaUFVRUJhallDRUNBQklBQW9BZ1JxSUFWQ0VJZzhBQUFnQUNBQUtBSVFJZ0ZCQVdvMkFoQWdBU0FBS0FJRWFpQUZRaGlJUEFBQUlBQWdBQ2dDRUNJQlFRRnFOZ0lRSUFFZ0FDZ0NCR29nQlVJZ2lEd0FBQ0FBSUFBb0FoQWlBVUVCYWpZQ0VDQUJJQUFvQWdScUlBVkNLSWc4QUFBZ0FDQUFLQUlRSWdGQkFXbzJBaEFnQVNBQUtBSUVhaUFGUWpDSVBBQUFJQUFnQUNnQ0VDSUJRUUZxTmdJUUlBRWdBQ2dDQkdvZ0JVSTRpRHdBQUNBQ3JDRUZRZ1VoQmtFS0RBSUxJQUFnQUNnQ0VDSUJRUUZxTmdJUUlBRWdBQ2dDQkdvZ0JDQUlyWVlnQllRaUJUd0FBQ0FBSUFBb0FoQWlBVUVCYWpZQ0VDQUJJQUFvQWdScUlBVkNDSWc4QUFBZ0FDQUFLQUlRSWdGQkFXbzJBaEFnQVNBQUtBSUVhaUFGUWhDSVBBQUFJQUFnQUNnQ0VDSUJRUUZxTmdJUUlBRWdBQ2dDQkdvZ0JVSVlpRHdBQUNBQUlBQW9BaEFpQVVFQmFqWUNFQ0FCSUFBb0FnUnFJQVZDSUlnOEFBQWdBQ0FBS0FJUUlnRkJBV28yQWhBZ0FTQUFLQUlFYWlBRlFpaUlQQUFBSUFBZ0FDZ0NFQ0lCUVFGcU5nSVFJQUVnQUNnQ0JHb2dCVUl3aUR3QUFDQUFJQUFvQWhBaUFVRUJhallDRUNBQklBQW9BZ1JxSUFWQ09JZzhBQUFnQkVIQUFDQUlhNjJJSVFRZ0NFRTdhd3NoQnlBQ3JDRUZJQWRCT2tzTkFTQUhyU0VHSUFkQkJXb0xJUWtnQlNBR2hpQUVoQXdCQ3lBSFFjQUFSZ1JBSUFBZ0FDZ0NFQ0lCUVFGcU5nSVFJQUVnQUNnQ0JHb2dCRHdBQUNBQUlBQW9BaEFpQVVFQmFqWUNFQ0FCSUFBb0FnUnFJQVJDQ0lnOEFBQWdBQ0FBS0FJUUlnRkJBV28yQWhBZ0FTQUFLQUlFYWlBRVFoQ0lQQUFBSUFBZ0FDZ0NFQ0lCUVFGcU5nSVFJQUVnQUNnQ0JHb2dCRUlZaUR3QUFDQUFJQUFvQWhBaUFVRUJhallDRUNBQklBQW9BZ1JxSUFSQ0lJZzhBQUFnQUNBQUtBSVFJZ0ZCQVdvMkFoQWdBU0FBS0FJRWFpQUVRaWlJUEFBQUlBQWdBQ2dDRUNJQlFRRnFOZ0lRSUFFZ0FDZ0NCR29nQkVJd2lEd0FBQ0FBSUFBb0FoQWlBVUVCYWpZQ0VDQUJJQUFvQWdScUlBUkNPSWc4QUFBZ0NxMUNBMzBoQkVJRklRWkJDUXdDQ3lBQUlBQW9BaEFpQVVFQmFqWUNFQ0FCSUFBb0FnUnFJQVVnQjYyR0lBU0VJZ1E4QUFBZ0FDQUFLQUlRSWdGQkFXbzJBaEFnQVNBQUtBSUVhaUFFUWdpSVBBQUFJQUFnQUNnQ0VDSUJRUUZxTmdJUUlBRWdBQ2dDQkdvZ0JFSVFpRHdBQUNBQUlBQW9BaEFpQVVFQmFqWUNFQ0FCSUFBb0FnUnFJQVJDR0lnOEFBQWdBQ0FBS0FJUUlnRkJBV28yQWhBZ0FTQUFLQUlFYWlBRVFpQ0lQQUFBSUFBZ0FDZ0NFQ0lCUVFGcU5nSVFJQUVnQUNnQ0JHb2dCRUlvaUR3QUFDQUFJQUFvQWhBaUFVRUJhallDRUNBQklBQW9BZ1JxSUFSQ01JZzhBQUFnQUNBQUtBSVFJZ0ZCQVdvMkFoQWdBU0FBS0FJRWFpQUVRamlJUEFBQUlBZEJPMnNoQ1NBRlFjQUFJQWRycllnTElRVWdDcTFDQTMwaEJDQUpRVHRMRFFFZ0NhMGhCaUFKUVFScUN5RUlJQVFnQm9ZZ0JZUWhCQXdCQ3lBSlFjQUFSZ1JBSUFBZ0FDZ0NFQ0lCUVFGcU5nSVFJQUVnQUNnQ0JHb2dCVHdBQUNBQUlBQW9BaEFpQVVFQmFqWUNFQ0FCSUFBb0FnUnFJQVZDQ0lnOEFBQWdBQ0FBS0FJUUlnRkJBV28yQWhBZ0FTQUFLQUlFYWlBRlFoQ0lQQUFBSUFBZ0FDZ0NFQ0lCUVFGcU5nSVFJQUVnQUNnQ0JHb2dCVUlZaUR3QUFDQUFJQUFvQWhBaUFVRUJhallDRUNBQklBQW9BZ1JxSUFWQ0lJZzhBQUFnQUNBQUtBSVFJZ0ZCQVdvMkFoQWdBU0FBS0FJRWFpQUZRaWlJUEFBQUlBQWdBQ2dDRUNJQlFRRnFOZ0lRSUFFZ0FDZ0NCR29nQlVJd2lEd0FBQ0FBSUFBb0FoQWlBVUVCYWpZQ0VDQUJJQUFvQWdScUlBVkNPSWc4QUFCQkJDRUlEQUVMSUFBZ0FDZ0NFQ0lCUVFGcU5nSVFJQUVnQUNnQ0JHb2dCQ0FKcllZZ0JZUWlCVHdBQUNBQUlBQW9BaEFpQVVFQmFqWUNFQ0FCSUFBb0FnUnFJQVZDQ0lnOEFBQWdBQ0FBS0FJUUlnRkJBV28yQWhBZ0FTQUFLQUlFYWlBRlFoQ0lQQUFBSUFBZ0FDZ0NFQ0lCUVFGcU5nSVFJQUVnQUNnQ0JHb2dCVUlZaUR3QUFDQUFJQUFvQWhBaUFVRUJhallDRUNBQklBQW9BZ1JxSUFWQ0lJZzhBQUFnQUNBQUtBSVFJZ0ZCQVdvMkFoQWdBU0FBS0FJRWFpQUZRaWlJUEFBQUlBQWdBQ2dDRUNJQlFRRnFOZ0lRSUFFZ0FDZ0NCR29nQlVJd2lEd0FBQ0FBSUFBb0FoQWlBVUVCYWpZQ0VDQUJJQUFvQWdScUlBVkNPSWc4QUFBZ0NVRThheUVJSUFSQndBQWdDV3V0aUNFRUMwRUFJUWNEUUNBQUlBY2lBVUhBOFFCcUxRQUFRUUowYWtIeUZHb3pBUUFoQlFKL0lBaEJQRTBFUUNBRklBaXRoaUFFaENFRUlBaEJBMm9NQVFzZ0NFSEFBRVlFUUNBQUlBQW9BaEFpQjBFQmFqWUNFQ0FISUFBb0FnUnFJQVE4QUFBZ0FDQUFLQUlRSWdkQkFXbzJBaEFnQnlBQUtBSUVhaUFFUWdpSVBBQUFJQUFnQUNnQ0VDSUhRUUZxTmdJUUlBY2dBQ2dDQkdvZ0JFSVFpRHdBQUNBQUlBQW9BaEFpQjBFQmFqWUNFQ0FISUFBb0FnUnFJQVJDR0lnOEFBQWdBQ0FBS0FJUUlnZEJBV28yQWhBZ0J5QUFLQUlFYWlBRVFpQ0lQQUFBSUFBZ0FDZ0NFQ0lIUVFGcU5nSVFJQWNnQUNnQ0JHb2dCRUlvaUR3QUFDQUFJQUFvQWhBaUIwRUJhallDRUNBSElBQW9BZ1JxSUFSQ01JZzhBQUFnQUNBQUtBSVFJZ2RCQVdvMkFoQWdCeUFBS0FJRWFpQUVRamlJUEFBQUlBVWhCRUVEREFFTElBQWdBQ2dDRUNJSFFRRnFOZ0lRSUFjZ0FDZ0NCR29nQlNBSXJZWWdCSVFpQkR3QUFDQUFJQUFvQWhBaUIwRUJhallDRUNBSElBQW9BZ1JxSUFSQ0NJZzhBQUFnQUNBQUtBSVFJZ2RCQVdvMkFoQWdCeUFBS0FJRWFpQUVRaENJUEFBQUlBQWdBQ2dDRUNJSFFRRnFOZ0lRSUFjZ0FDZ0NCR29nQkVJWWlEd0FBQ0FBSUFBb0FoQWlCMEVCYWpZQ0VDQUhJQUFvQWdScUlBUkNJSWc4QUFBZ0FDQUFLQUlRSWdkQkFXbzJBaEFnQnlBQUtBSUVhaUFFUWlpSVBBQUFJQUFnQUNnQ0VDSUhRUUZxTmdJUUlBY2dBQ2dDQkdvZ0JFSXdpRHdBQUNBQUlBQW9BaEFpQjBFQmFqWUNFQ0FISUFBb0FnUnFJQVJDT0lnOEFBQWdCVUhBQUNBSWE2MklJUVFnQ0VFOWF3c2hDQ0FCUVFGcUlRY2dBU0FLUncwQUN5QUFJQWcyQXNBdElBQWdCRGNEdUMwZ0FDQUFRWWdCYWlJQklBc1F2Z0VnQUNBQVFmd1NhaUlISUFJUXZnRWdBQ0FCSUFjUXZ3RUxJQUFRd1FFZ0F3UkFJQUFRd0FFTEMvY0VBZ0YvQVg0Q1FDQUFBbjhnQUNnQ3dDMGlBVUhBQUVZRVFDQUFJQUFvQWhBaUFVRUJhallDRUNBQklBQW9BZ1JxSUFBcEE3Z3RJZ0k4QUFBZ0FDQUFLQUlRSWdGQkFXbzJBaEFnQVNBQUtBSUVhaUFDUWdpSVBBQUFJQUFnQUNnQ0VDSUJRUUZxTmdJUUlBRWdBQ2dDQkdvZ0FrSVFpRHdBQUNBQUlBQW9BaEFpQVVFQmFqWUNFQ0FCSUFBb0FnUnFJQUpDR0lnOEFBQWdBQ0FBS0FJUUlnRkJBV28yQWhBZ0FTQUFLQUlFYWlBQ1FpQ0lQQUFBSUFBZ0FDZ0NFQ0lCUVFGcU5nSVFJQUVnQUNnQ0JHb2dBa0lvaUR3QUFDQUFJQUFvQWhBaUFVRUJhallDRUNBQklBQW9BZ1JxSUFKQ01JZzhBQUFnQUNBQUtBSVFJZ0ZCQVdvMkFoQWdBU0FBS0FJRWFpQUNRamlJUEFBQUlBQkNBRGNEdUMxQkFBd0JDeUFCUVNCT0JFQWdBQ0FBS0FJUUlnRkJBV28yQWhBZ0FTQUFLQUlFYWlBQUtRTzRMU0lDUEFBQUlBQWdBQ2dDRUNJQlFRRnFOZ0lRSUFFZ0FDZ0NCR29nQWtJSWlEd0FBQ0FBSUFBb0FoQWlBVUVCYWpZQ0VDQUJJQUFvQWdScUlBSkNFSWc4QUFBZ0FDQUFLQUlRSWdGQkFXbzJBaEFnQVNBQUtBSUVhaUFDUWhpSVBBQUFJQUFnQUVHOExXbzFBZ0EzQTdndElBQWdBQ2dDd0MxQklHc2lBVFlDd0MwTElBRkJFRTRFUUNBQUlBQW9BaEFpQVVFQmFqWUNFQ0FCSUFBb0FnUnFJQUFwQTdndElnSThBQUFnQUNBQUtBSVFJZ0ZCQVdvMkFoQWdBU0FBS0FJRWFpQUNRZ2lJUEFBQUlBQWdBQ2tEdUMxQ0VJZzNBN2d0SUFBZ0FDZ0N3QzFCRUdzaUFUWUN3QzBMSUFGQkNFZ05BU0FBSUFBb0FoQWlBVUVCYWpZQ0VDQUJJQUFvQWdScUlBQXBBN2d0UEFBQUlBQWdBQ2tEdUMxQ0NJZzNBN2d0SUFBb0FzQXRRUWhyQ3pZQ3dDMExDOUVCQVFGL0l3QkJNR3NpQXlRQUlBTWdBRFlDS0NBRElBRTNBeUFnQXlBQ05nSWNBa0FnQXlnQ0tDMEFLRUVCY1FSQUlBTkJmellDTEF3QkN3SkFJQU1vQWlnb0FpQUVRQ0FES0FJY1JRMEJJQU1vQWh4QkFVWU5BU0FES0FJY1FRSkdEUUVMSUFNb0FpaEJER3BCRWtFQUVCUWdBMEYvTmdJc0RBRUxJQU1nQXlrRElEY0RDQ0FESUFNb0FodzJBaEFnQXlnQ0tDQURRUWhxUWhCQkJoQWZRZ0JUQkVBZ0EwRi9OZ0lzREFFTElBTW9BaWhCQURvQU5DQURRUUEyQWl3TElBTW9BaXdoQUNBRFFUQnFKQUFnQUF2VUFRRUJmeU1BUVNCcklnSWtBQ0FDSUFBMkFoZ2dBaUFCTndNUUlBSWdBaWdDR0VVNkFBOENRQ0FDS0FJWVJRUkFJQUlnQWlrREVLY1FHU0lBTmdJWUlBQkZCRUFnQWtFQU5nSWNEQUlMQ3lBQ1FSZ1FHU0lBTmdJSUlBQkZCRUFnQWkwQUQwRUJjUVJBSUFJb0FoZ1FGUXNnQWtFQU5nSWNEQUVMSUFJb0FnaEJBVG9BQUNBQ0tBSUlJQUlvQWhnMkFnUWdBaWdDQ0NBQ0tRTVFOd01JSUFJb0FnaENBRGNERUNBQ0tBSUlJQUl0QUE5QkFYRTZBQUVnQWlBQ0tBSUlOZ0ljQ3lBQ0tBSWNJUUFnQWtFZ2FpUUFJQUFMZUFFQmZ5TUFRUkJySWdFa0FDQUJJQUEyQWdnZ0FTQUJLQUlJUWdRUUhEWUNCQUpBSUFFb0FnUkZCRUFnQVVFQU5nSU1EQUVMSUFFZ0FTZ0NCQzBBQUNBQktBSUVMUUFCSUFFb0FnUXRBQUlnQVNnQ0JDMEFBMEVJZEdwQkNIUnFRUWgwYWpZQ0RBc2dBU2dDRENFQUlBRkJFR29rQUNBQUM0Y0RBUUYvSXdCQk1Hc2lBeVFBSUFNZ0FEWUNKQ0FESUFFMkFpQWdBeUFDTndNWUFrQWdBeWdDSkMwQUtFRUJjUVJBSUFOQ2Z6Y0RLQXdCQ3dKQUFrQWdBeWdDSkNnQ0lFVU5BQ0FES1FNWVF2Ly8vLy8vLy8vLy93QldEUUFnQXlrREdGQU5BU0FES0FJZ0RRRUxJQU1vQWlSQkRHcEJFa0VBRUJRZ0EwSi9Od01vREFFTElBTW9BaVF0QURWQkFYRUVRQ0FEUW44M0F5Z01BUXNDZnlNQVFSQnJJZ0FnQXlnQ0pEWUNEQ0FBS0FJTUxRQTBRUUZ4Q3dSQUlBTkNBRGNES0F3QkN5QURLUU1ZVUFSQUlBTkNBRGNES0F3QkN5QURRZ0EzQXhBRFFDQURLUU1RSUFNcEF4aFVCRUFnQXlBREtBSWtJQU1vQWlBZ0F5a0RFS2RxSUFNcEF4Z2dBeWtERUgxQkFSQWZJZ0kzQXdnZ0FrSUFVd1JBSUFNb0FpUkJBVG9BTlNBREtRTVFVQVJBSUFOQ2Z6Y0RLQXdFQ3lBRElBTXBBeEEzQXlnTUF3c2dBeWtEQ0ZBRVFDQURLQUlrUVFFNkFEUUZJQU1nQXlrRENDQURLUU1RZkRjREVBd0NDd3NMSUFNZ0F5a0RFRGNES0FzZ0F5a0RLQ0VDSUFOQk1Hb2tBQ0FDQzJFQkFYOGpBRUVRYXlJQ0lBQTJBZ2dnQWlBQk53TUFBa0FnQWlrREFDQUNLQUlJS1FNSVZnUkFJQUlvQWdoQkFEb0FBQ0FDUVg4MkFnd01BUXNnQWlnQ0NFRUJPZ0FBSUFJb0FnZ2dBaWtEQURjREVDQUNRUUEyQWd3TElBSW9BZ3dMN3dFQkFYOGpBRUVnYXlJQ0pBQWdBaUFBTmdJWUlBSWdBVGNERUNBQ0lBSW9BaGhDQ0JBY05nSU1Ba0FnQWlnQ0RFVUVRQ0FDUVg4MkFod01BUXNnQWlnQ0RDQUNLUU1RUXY4Qmd6d0FBQ0FDS0FJTUlBSXBBeEJDQ0loQy93R0RQQUFCSUFJb0Fnd2dBaWtERUVJUWlFTC9BWU04QUFJZ0FpZ0NEQ0FDS1FNUVFoaUlRdjhCZ3p3QUF5QUNLQUlNSUFJcEF4QkNJSWhDL3dHRFBBQUVJQUlvQWd3Z0Fpa0RFRUlvaUVML0FZTThBQVVnQWlnQ0RDQUNLUU1RUWpDSVF2OEJnendBQmlBQ0tBSU1JQUlwQXhCQ09JaEMvd0dEUEFBSElBSkJBRFlDSEFzZ0FpZ0NIQm9nQWtFZ2FpUUFDMzhCQTM4Z0FDRUJBa0FnQUVFRGNRUkFBMEFnQVMwQUFFVU5BaUFCUVFGcUlnRkJBM0VOQUFzTEEwQWdBU0lDUVFScUlRRWdBaWdDQUNJRFFYOXpJQU5CZ1lLRUNHdHhRWUNCZ29SNGNVVU5BQXNnQTBIL0FYRkZCRUFnQWlBQWF3OExBMEFnQWkwQUFTRURJQUpCQVdvaUFTRUNJQU1OQUFzTElBRWdBR3NMOEFJQ0FuOEJmZ0pBSUFKRkRRQWdBQ0FDYWlJRFFRRnJJQUU2QUFBZ0FDQUJPZ0FBSUFKQkEwa05BQ0FEUVFKcklBRTZBQUFnQUNBQk9nQUJJQU5CQTJzZ0FUb0FBQ0FBSUFFNkFBSWdBa0VIU1EwQUlBTkJCR3NnQVRvQUFDQUFJQUU2QUFNZ0FrRUpTUTBBSUFCQkFDQUFhMEVEY1NJRWFpSURJQUZCL3dGeFFZR0NoQWhzSWdBMkFnQWdBeUFDSUFSclFYeHhJZ0pxSWdGQkJHc2dBRFlDQUNBQ1FRbEpEUUFnQXlBQU5nSUlJQU1nQURZQ0JDQUJRUWhySUFBMkFnQWdBVUVNYXlBQU5nSUFJQUpCR1VrTkFDQURJQUEyQWhnZ0F5QUFOZ0lVSUFNZ0FEWUNFQ0FESUFBMkFnd2dBVUVRYXlBQU5nSUFJQUZCRkdzZ0FEWUNBQ0FCUVJocklBQTJBZ0FnQVVFY2F5QUFOZ0lBSUFJZ0EwRUVjVUVZY2lJQmF5SUNRU0JKRFFBZ0FLMUNnWUNBZ0JCK0lRVWdBU0FEYWlFQkEwQWdBU0FGTndNWUlBRWdCVGNERUNBQklBVTNBd2dnQVNBRk53TUFJQUZCSUdvaEFTQUNRU0JySWdKQkgwc05BQXNMQzZZQkFRRi9Jd0JCRUdzaUFTUUFJQUVnQURZQ0NBSkFJQUVvQWdnb0FpQkZCRUFnQVNnQ0NFRU1ha0VTUVFBUUZDQUJRWDgyQWd3TUFRc2dBU2dDQ0NJQUlBQW9BaUJCQVdzMkFpQWdBU2dDQ0NnQ0lFVUVRQ0FCS0FJSVFRQkNBRUVDRUI4YUlBRW9BZ2dvQWdBRVFDQUJLQUlJS0FJQUVEQkJBRWdFUUNBQktBSUlRUXhxUVJSQkFCQVVDd3NMSUFGQkFEWUNEQXNnQVNnQ0RDRUFJQUZCRUdva0FDQUFDellCQVg4akFFRVFheUlCSUFBMkFnd0NmaUFCS0FJTUxRQUFRUUZ4QkVBZ0FTZ0NEQ2tEQ0NBQktBSU1LUU1RZlF3QkMwSUFDd3V5QVFJQmZ3RitJd0JCRUdzaUFTUUFJQUVnQURZQ0JDQUJJQUVvQWdSQ0NCQWNOZ0lBQWtBZ0FTZ0NBRVVFUUNBQlFnQTNBd2dNQVFzZ0FTQUJLQUlBTFFBQXJTQUJLQUlBTFFBSHJVSTRoaUFCS0FJQUxRQUdyVUl3aG53Z0FTZ0NBQzBBQmExQ0tJWjhJQUVvQWdBdEFBU3RRaUNHZkNBQktBSUFMUUFEclVJWWhud2dBU2dDQUMwQUFxMUNFSVo4SUFFb0FnQXRBQUd0UWdpR2ZIdzNBd2dMSUFFcEF3Z2hBaUFCUVJCcUpBQWdBZ3ZjQVFFQmZ5TUFRUkJySWdFa0FDQUJJQUEyQWd3Z0FTZ0NEQVJBSUFFb0Fnd29BaWdFUUNBQktBSU1LQUlvUVFBMkFpZ2dBU2dDRENnQ0tFSUFOd01nSUFFb0Fnd0NmaUFCS0FJTUtRTVlJQUVvQWd3cEF5QldCRUFnQVNnQ0RDa0RHQXdCQ3lBQktBSU1LUU1nQ3pjREdBc2dBU0FCS0FJTUtRTVlOd01BQTBBZ0FTa0RBQ0FCS0FJTUtRTUlXa1VFUUNBQktBSU1LQUlBSUFFcEF3Q25RUVIwYWlnQ0FCQVZJQUVnQVNrREFFSUJmRGNEQUF3QkN3c2dBU2dDRENnQ0FCQVZJQUVvQWd3b0FnUVFGU0FCS0FJTUVCVUxJQUZCRUdva0FBdHJBUUYvSXdCQklHc2lBaUFBTmdJY0lBSkNBU0FDS0FJY3JZWTNBeEFnQWtFTWFpQUJOZ0lBQTBBZ0FpQUNLQUlNSWdCQkJHbzJBZ3dnQWlBQUtBSUFOZ0lJSUFJb0FnaEJBRWhGQkVBZ0FpQUNLUU1RUWdFZ0FpZ0NDSzJHaERjREVBd0JDd3NnQWlrREVBdGdBZ0YvQVg0akFFRVFheUlCSkFBZ0FTQUFOZ0lFQWtBZ0FTZ0NCQ2dDSkVFQlJ3UkFJQUVvQWdSQkRHcEJFa0VBRUJRZ0FVSi9Od01JREFFTElBRWdBU2dDQkVFQVFnQkJEUkFmTndNSUN5QUJLUU1JSVFJZ0FVRVFhaVFBSUFJTHBRSUJBbjhqQUVFZ2F5SURKQUFnQXlBQU5nSVlJQU1nQVRZQ0ZDQURJQUkzQXdnZ0F5Z0NHQ2dDQUNFQklBTW9BaFFoQkNBREtRTUlJUUlqQUVFZ2F5SUFKQUFnQUNBQk5nSVVJQUFnQkRZQ0VDQUFJQUkzQXdnQ1FBSkFJQUFvQWhRb0FpUkJBVVlFUUNBQUtRTUlRdi8vLy8vLy8vLy8vd0JZRFFFTElBQW9BaFJCREdwQkVrRUFFQlFnQUVKL053TVlEQUVMSUFBZ0FDZ0NGQ0FBS0FJUUlBQXBBd2hCQ3hBZk53TVlDeUFBS1FNWUlRSWdBRUVnYWlRQUlBTWdBamNEQUFKQUlBSkNBRk1FUUNBREtBSVlRUWhxSUFNb0FoZ29BZ0FRR0NBRFFYODJBaHdNQVFzZ0F5a0RBQ0FES1FNSVVnUkFJQU1vQWhoQkNHcEJCa0ViRUJRZ0EwRi9OZ0ljREFFTElBTkJBRFlDSEFzZ0F5Z0NIQ0VBSUFOQklHb2tBQ0FBQ3pFQkFYOGpBRUVRYXlJQkpBQWdBU0FBTmdJTUlBRW9BZ3dFUUNBQktBSU1FRThnQVNnQ0RCQVZDeUFCUVJCcUpBQUxMd0VCZnlNQVFSQnJJZ0VrQUNBQklBQTJBZ3dnQVNnQ0RDZ0NDQkFWSUFFb0FneEJBRFlDQ0NBQlFSQnFKQUFMelFFQkFYOGpBRUVRYXlJQ0pBQWdBaUFBTmdJSUlBSWdBVFlDQkFKQUlBSW9BZ2d0QUNoQkFYRUVRQ0FDUVg4MkFnd01BUXNnQWlnQ0JFVUVRQ0FDS0FJSVFReHFRUkpCQUJBVUlBSkJmellDREF3QkN5QUNLQUlFRURzZ0FpZ0NDQ2dDQUFSQUlBSW9BZ2dvQWdBZ0FpZ0NCQkE1UVFCSUJFQWdBaWdDQ0VFTWFpQUNLQUlJS0FJQUVCZ2dBa0YvTmdJTURBSUxDeUFDS0FJSUlBSW9BZ1JDT0VFREVCOUNBRk1FUUNBQ1FYODJBZ3dNQVFzZ0FrRUFOZ0lNQ3lBQ0tBSU1JUUFnQWtFUWFpUUFJQUFMM3dRQkFYOGpBRUVnYXlJQ0lBQTJBaGdnQWlBQk5nSVVBa0FnQWlnQ0dFVUVRQ0FDUVFFMkFod01BUXNnQWlBQ0tBSVlLQUlBTmdJTUFrQWdBaWdDR0NnQ0NBUkFJQUlnQWlnQ0dDZ0NDRFlDRUF3QkN5QUNRUUUyQWhBZ0FrRUFOZ0lJQTBBQ1FDQUNLQUlJSUFJb0FoZ3ZBUVJQRFFBQ1FDQUNLQUlNSUFJb0FnaHFMUUFBUVI5TEJFQWdBaWdDRENBQ0tBSUlhaTBBQUVHQUFVa05BUXNnQWlnQ0RDQUNLQUlJYWkwQUFFRU5SZzBBSUFJb0Fnd2dBaWdDQ0dvdEFBQkJDa1lOQUNBQ0tBSU1JQUlvQWdocUxRQUFRUWxHQkVBTUFRc2dBa0VETmdJUUFrQWdBaWdDRENBQ0tBSUlhaTBBQUVIZ0FYRkJ3QUZHQkVBZ0FrRUJOZ0lBREFFTEFrQWdBaWdDRENBQ0tBSUlhaTBBQUVId0FYRkI0QUZHQkVBZ0FrRUNOZ0lBREFFTEFrQWdBaWdDRENBQ0tBSUlhaTBBQUVINEFYRkI4QUZHQkVBZ0FrRUROZ0lBREFFTElBSkJCRFlDRUF3RUN3c0xJQUlvQWhndkFRUWdBaWdDQ0NBQ0tBSUFhazBFUUNBQ1FRUTJBaEFNQWdzZ0FrRUJOZ0lFQTBBZ0FpZ0NCQ0FDS0FJQVRRUkFJQUlvQWd3Z0FpZ0NDQ0FDS0FJRWFtb3RBQUJCd0FGeFFZQUJSd1JBSUFKQkJEWUNFQXdHQlNBQ0lBSW9BZ1JCQVdvMkFnUU1BZ3NBQ3dzZ0FpQUNLQUlBSUFJb0FnaHFOZ0lJQ3lBQ0lBSW9BZ2hCQVdvMkFnZ01BUXNMQ3lBQ0tBSVlJQUlvQWhBMkFnZ2dBaWdDRkFSQUFrQWdBaWdDRkVFQ1J3MEFJQUlvQWhCQkEwY05BQ0FDUVFJMkFoQWdBaWdDR0VFQ05nSUlDd0pBSUFJb0FoUWdBaWdDRUVZTkFDQUNLQUlRUVFGR0RRQWdBa0VGTmdJY0RBSUxDeUFDSUFJb0FoQTJBaHdMSUFJb0Fod0xhZ0VCZnlNQVFSQnJJZ0VnQURZQ0RDQUJLQUlNUWdBM0F3QWdBU2dDREVFQU5nSUlJQUVvQWd4Q2Z6Y0RFQ0FCS0FJTVFRQTJBaXdnQVNnQ0RFRi9OZ0lvSUFFb0FneENBRGNER0NBQktBSU1RZ0EzQXlBZ0FTZ0NERUVBT3dFd0lBRW9BZ3hCQURzQk1ndU5CUUVEZnlNQVFSQnJJZ0VrQUNBQklBQTJBZ3dnQVNnQ0RBUkFJQUVvQWd3b0FnQUVRQ0FCS0FJTUtBSUFFREFhSUFFb0Fnd29BZ0FRR2dzZ0FTZ0NEQ2dDSEJBVklBRW9BZ3dvQWlBUUl5QUJLQUlNS0FJa0VDTWdBU2dDRENnQ1VDRUNJd0JCRUdzaUFDUUFJQUFnQWpZQ0RDQUFLQUlNQkVBZ0FDZ0NEQ2dDRUFSQUlBQkJBRFlDQ0FOQUlBQW9BZ2dnQUNnQ0RDZ0NBRWtFUUNBQUtBSU1LQUlRSUFBb0FnaEJBblJxS0FJQUJFQWdBQ2dDRENnQ0VDQUFLQUlJUVFKMGFpZ0NBQ0VESXdCQkVHc2lBaVFBSUFJZ0F6WUNEQU5BSUFJb0Fnd0VRQ0FDSUFJb0Fnd29BaGcyQWdnZ0FpZ0NEQkFWSUFJZ0FpZ0NDRFlDREF3QkN3c2dBa0VRYWlRQUN5QUFJQUFvQWdoQkFXbzJBZ2dNQVFzTElBQW9BZ3dvQWhBUUZRc2dBQ2dDREJBVkN5QUFRUkJxSkFBZ0FTZ0NEQ2dDUUFSQUlBRkNBRGNEQUFOQUlBRXBBd0FnQVNnQ0RDa0RNRlFFUUNBQktBSU1LQUpBSUFFcEF3Q25RUVIwYWhCOUlBRWdBU2tEQUVJQmZEY0RBQXdCQ3dzZ0FTZ0NEQ2dDUUJBVkN5QUJRZ0EzQXdBRFFDQUJLUU1BSUFFb0Fnd29Ba1N0VkFSQUlBRW9BZ3dvQWt3Z0FTa0RBS2RCQW5ScUtBSUFJUUlqQUVFUWF5SUFKQUFnQUNBQ05nSU1JQUFvQWd4QkFUb0FLQUovSXdCQkVHc2lBaUFBS0FJTVFReHFOZ0lNSUFJb0Fnd29BZ0JGQ3dSQUlBQW9BZ3hCREdwQkNFRUFFQlFMSUFCQkVHb2tBQ0FCSUFFcEF3QkNBWHczQXdBTUFRc0xJQUVvQWd3b0Frd1FGU0FCS0FJTUtBSlVJUUlqQUVFUWF5SUFKQUFnQUNBQ05nSU1JQUFvQWd3RVFDQUFLQUlNS0FJSUJFQWdBQ2dDRENnQ0RDQUFLQUlNS0FJSUVRTUFDeUFBS0FJTUVCVUxJQUJCRUdva0FDQUJLQUlNUVFocUVEZ2dBU2dDREJBVkN5QUJRUkJxSkFBTFVnRUNmMEhVbVFFb0FnQWlBU0FBUVFOcVFYeHhJZ0pxSVFBQ1FDQUNRUUFnQUNBQlRSc05BQ0FBUHdCQkVIUkxCRUFnQUJBTVJRMEJDMEhVbVFFZ0FEWUNBQ0FCRHd0QitKMEJRVEEyQWdCQmZ3dThBZ0VCZnlNQVFTQnJJZ1FrQUNBRUlBQTJBaGdnQkNBQk53TVFJQVFnQWpZQ0RDQUVJQU0yQWdnZ0JDZ0NDRVVFUUNBRUlBUW9BaGhCQ0dvMkFnZ0xBa0FnQkNrREVDQUVLQUlZS1FNd1dnUkFJQVFvQWdoQkVrRUFFQlFnQkVFQU5nSWNEQUVMQWtBZ0JDZ0NERUVJY1VVRVFDQUVLQUlZS0FKQUlBUXBBeENuUVFSMGFpZ0NCQTBCQ3lBRUtBSVlLQUpBSUFRcEF4Q25RUVIwYWlnQ0FFVUVRQ0FFS0FJSVFSSkJBQkFVSUFSQkFEWUNIQXdDQ3dKQUlBUW9BaGdvQWtBZ0JDa0RFS2RCQkhScUxRQU1RUUZ4UlEwQUlBUW9BZ3hCQ0hFTkFDQUVLQUlJUVJkQkFCQVVJQVJCQURZQ0hBd0NDeUFFSUFRb0FoZ29Ba0FnQkNrREVLZEJCSFJxS0FJQU5nSWNEQUVMSUFRZ0JDZ0NHQ2dDUUNBRUtRTVFwMEVFZEdvb0FnUTJBaHdMSUFRb0Fod2hBQ0FFUVNCcUpBQWdBQXVFQVFFQmZ5TUFRUkJySWdFa0FDQUJJQUEyQWdnZ0FVSFlBQkFaSWdBMkFnUUNRQ0FBUlFSQUlBRkJBRFlDREF3QkN3SkFJQUVvQWdnRVFDQUJLQUlFSUFFb0FnaEIyQUFRRnhvTUFRc2dBU2dDQkJCUUN5QUJLQUlFUVFBMkFnQWdBU2dDQkVFQk9nQUZJQUVnQVNnQ0JEWUNEQXNnQVNnQ0RDRUFJQUZCRUdva0FDQUFDMjhCQVg4akFFRWdheUlESkFBZ0F5QUFOZ0lZSUFNZ0FUWUNGQ0FESUFJMkFoQWdBeUFES0FJWUlBTW9BaEN0RUJ3MkFnd0NRQ0FES0FJTVJRUkFJQU5CZnpZQ0hBd0JDeUFES0FJTUlBTW9BaFFnQXlnQ0VCQVhHaUFEUVFBMkFod0xJQU1vQWh3YUlBTkJJR29rQUF1aUFRRUJmeU1BUVNCcklnUWtBQ0FFSUFBMkFoZ2dCQ0FCTndNUUlBUWdBallDRENBRUlBTTJBZ2dnQkNBRUtBSU1JQVFwQXhBUUtTSUFOZ0lFQWtBZ0FFVUVRQ0FFS0FJSVFRNUJBQkFVSUFSQkFEWUNIQXdCQ3lBRUtBSVlJQVFvQWdRb0FnUWdCQ2tERUNBRUtBSUlFR1pCQUVnRVFDQUVLQUlFRUJZZ0JFRUFOZ0ljREFFTElBUWdCQ2dDQkRZQ0hBc2dCQ2dDSENFQUlBUkJJR29rQUNBQUM2QUJBUUYvSXdCQklHc2lBeVFBSUFNZ0FEWUNGQ0FESUFFMkFoQWdBeUFDTndNSUlBTWdBeWdDRURZQ0JBSkFJQU1wQXdoQ0NGUUVRQ0FEUW44M0F4Z01BUXNqQUVFUWF5SUFJQU1vQWhRMkFnd2dBQ2dDRENnQ0FDRUFJQU1vQWdRZ0FEWUNBQ01BUVJCcklnQWdBeWdDRkRZQ0RDQUFLQUlNS0FJRUlRQWdBeWdDQkNBQU5nSUVJQU5DQ0RjREdBc2dBeWtER0NFQ0lBTkJJR29rQUNBQ0M0TUJBZ04vQVg0Q1FDQUFRb0NBZ0lBUVZBUkFJQUFoQlF3QkN3TkFJQUZCQVdzaUFTQUFJQUJDQ29BaUJVSUtmbjJuUVRCeU9nQUFJQUJDLy8vLy81OEJWaUVDSUFVaEFDQUNEUUFMQ3lBRnB5SUNCRUFEUUNBQlFRRnJJZ0VnQWlBQ1FRcHVJZ05CQ214clFUQnlPZ0FBSUFKQkNVc2hCQ0FESVFJZ0JBMEFDd3NnQVFzL0FRRi9Jd0JCRUdzaUFpQUFOZ0lNSUFJZ0FUWUNDQ0FDS0FJTUJFQWdBaWdDRENBQ0tBSUlLQUlBTmdJQUlBSW9BZ3dnQWlnQ0NDZ0NCRFlDQkFzTGhnVUJCbjhnQUNnQ01DSURRWVlDYXlFR0lBQW9BandoQWlBRElRRURRQ0FBS0FKRUlBSWdBQ2dDWkNJRWFtc2hBaUFCSUFacUlBUk5CRUFnQUNnQ1NDSUJJQUVnQTJvZ0F4QVhHZ0pBSUFNZ0FDZ0NhQ0lCVFFSQUlBQWdBU0FEYXpZQ2FBd0JDeUFBUWdBM0EyZ0xJQUFnQUNnQ1pDQURheUlCTmdKa0lBQWdBQ2dDVkNBRGF6WUNWQ0FCSUFBb0FxZ3RTUVJBSUFBZ0FUWUNxQzBMSUFCQnNKa0JLQUlBRVFNQUlBSWdBMm9oQWdzQ1FDQUFLQUlBSWdFb0FnUWlCRVVOQUNBQUtBSThJUVVnQUNBQ0lBUWdBaUFFU1JzaUFnUi9JQUFvQWtnZ0FDZ0NaR29nQldvaEJTQUJJQVFnQW1zMkFnUUNRQ0FCS0FJY0tBSVVRUUpHQkVBZ0FTQUZJQUlRWHd3QkN5QUZJQUVvQWdBZ0FoQVhJUVFnQVNnQ0hDZ0NGRUVCUncwQUlBRWdBU2dDTUNBRUlBSkJxSmtCS0FJQUVRQUFOZ0l3Q3lBQklBRW9BZ0FnQW1vMkFnQWdBU0FCS0FJSUlBSnFOZ0lJSUFBb0Fqd0ZJQVVMSUFKcUlnSTJBandDUUNBQUtBS29MU0lCSUFKcVFRTkpEUUFnQUNnQ1pDQUJheUlCQkVBZ0FDQUJRUUZyUWFTWkFTZ0NBQkVDQUJvZ0FDZ0NQQ0VDQ3lBQUtBS29MU0FDUVFGR2F5SUVSUTBBSUFBZ0FTQUVRYUNaQVNnQ0FCRUhBQ0FBSUFBb0FxZ3RJQVJyTmdLb0xTQUFLQUk4SVFJTElBSkJoUUpMRFFBZ0FDZ0NBQ2dDQkVVTkFDQUFLQUl3SVFFTUFRc0xBa0FnQUNnQ1JDSUNJQUFvQWtBaUEwME5BQ0FBQW44Z0FDZ0NQQ0FBS0FKa2FpSUJJQU5MQkVBZ0FDZ0NTQ0FCYWtFQUlBSWdBV3NpQTBHQ0FpQURRWUlDU1JzaUF4QXZJQUVnQTJvTUFRc2dBVUdDQW1vaUFTQURUUTBCSUFBb0FrZ2dBMnBCQUNBQ0lBTnJJZ0lnQVNBRGF5SURJQUlnQTBrYklnTVFMeUFBS0FKQUlBTnFDellDUUFzTDBnZ0JBbjhqQUVFZ2F5SUVKQUFnQkNBQU5nSVlJQVFnQVRZQ0ZDQUVJQUkyQWhBZ0JDQUROZ0lNQWtBZ0JDZ0NHRVVFUUNBRUtBSVVCRUFnQkNnQ0ZFRUFOZ0lBQ3lBRVFhVVZOZ0ljREFFTElBUW9BaEJCd0FCeFJRUkFJQVFvQWhnb0FnaEZCRUFnQkNnQ0dFRUFFRG9hQ3dKQUFrQUNRQ0FFS0FJUVFZQUJjVVVOQUNBRUtBSVlLQUlJUVFGR0RRQWdCQ2dDR0NnQ0NFRUNSdzBCQ3lBRUtBSVlLQUlJUVFSSERRRUxJQVFvQWhnb0FneEZCRUFnQkNnQ0dDZ0NBQ0VCSUFRb0FoZ3ZBUVFoQWlBRUtBSVlRUkJxSVFNZ0JDZ0NEQ0VGSXdCQk1Hc2lBQ1FBSUFBZ0FUWUNLQ0FBSUFJMkFpUWdBQ0FETmdJZ0lBQWdCVFlDSENBQUlBQW9BaWcyQWhnQ1FDQUFLQUlrUlFSQUlBQW9BaUFFUUNBQUtBSWdRUUEyQWdBTElBQkJBRFlDTEF3QkN5QUFRUUUyQWhBZ0FFRUFOZ0lNQTBBZ0FDZ0NEQ0FBS0FJa1NRUkFJd0JCRUdzaUFTQUFLQUlZSUFBb0FneHFMUUFBUVFGMFFiQVZhaThCQURZQ0NBSkFJQUVvQWdoQmdBRkpCRUFnQVVFQk5nSU1EQUVMSUFFb0FnaEJnQkJKQkVBZ0FVRUNOZ0lNREFFTElBRW9BZ2hCZ0lBRVNRUkFJQUZCQXpZQ0RBd0JDeUFCUVFRMkFnd0xJQUFnQVNnQ0RDQUFLQUlRYWpZQ0VDQUFJQUFvQWd4QkFXbzJBZ3dNQVFzTElBQWdBQ2dDRUJBWklnRTJBaFFnQVVVRVFDQUFLQUljUVE1QkFCQVVJQUJCQURZQ0xBd0JDeUFBUVFBMkFnZ2dBRUVBTmdJTUEwQWdBQ2dDRENBQUtBSWtTUVJBSUFBb0FoUWdBQ2dDQ0dvaEFpTUFRUkJySWdFZ0FDZ0NHQ0FBS0FJTWFpMEFBRUVCZEVHd0ZXb3ZBUUEyQWdnZ0FTQUNOZ0lFQWtBZ0FTZ0NDRUdBQVVrRVFDQUJLQUlFSUFFb0FnZzZBQUFnQVVFQk5nSU1EQUVMSUFFb0FnaEJnQkJKQkVBZ0FTZ0NCQ0FCS0FJSVFRWjJRUjl4UWNBQmNqb0FBQ0FCS0FJRUlBRW9BZ2hCUDNGQmdBRnlPZ0FCSUFGQkFqWUNEQXdCQ3lBQktBSUlRWUNBQkVrRVFDQUJLQUlFSUFFb0FnaEJESFpCRDNGQjRBRnlPZ0FBSUFFb0FnUWdBU2dDQ0VFR2RrRS9jVUdBQVhJNkFBRWdBU2dDQkNBQktBSUlRVDl4UVlBQmNqb0FBaUFCUVFNMkFnd01BUXNnQVNnQ0JDQUJLQUlJUVJKMlFRZHhRZkFCY2pvQUFDQUJLQUlFSUFFb0FnaEJESFpCUDNGQmdBRnlPZ0FCSUFFb0FnUWdBU2dDQ0VFR2RrRS9jVUdBQVhJNkFBSWdBU2dDQkNBQktBSUlRVDl4UVlBQmNqb0FBeUFCUVFRMkFnd0xJQUFnQVNnQ0RDQUFLQUlJYWpZQ0NDQUFJQUFvQWd4QkFXbzJBZ3dNQVFzTElBQW9BaFFnQUNnQ0VFRUJhMnBCQURvQUFDQUFLQUlnQkVBZ0FDZ0NJQ0FBS0FJUVFRRnJOZ0lBQ3lBQUlBQW9BaFEyQWl3TElBQW9BaXdoQVNBQVFUQnFKQUFnQkNnQ0dDQUJOZ0lNSUFGRkJFQWdCRUVBTmdJY0RBUUxDeUFFS0FJVUJFQWdCQ2dDRkNBRUtBSVlLQUlRTmdJQUN5QUVJQVFvQWhnb0FndzJBaHdNQWdzTElBUW9BaFFFUUNBRUtBSVVJQVFvQWhndkFRUTJBZ0FMSUFRZ0JDZ0NHQ2dDQURZQ0hBc2dCQ2dDSENFQUlBUkJJR29rQUNBQUN6a0JBWDhqQUVFUWF5SUJJQUEyQWd4QkFDRUFJQUVvQWd3dEFBQkJBWEVFZnlBQktBSU1LUU1RSUFFb0Fnd3BBd2hSQlVFQUMwRUJjUXZ2QWdFQmZ5TUFRUkJySWdFa0FDQUJJQUEyQWdnQ1FDQUJLQUlJTFFBb1FRRnhCRUFnQVVGL05nSU1EQUVMSUFFb0FnZ29BaVJCQTBZRVFDQUJLQUlJUVF4cVFSZEJBQkFVSUFGQmZ6WUNEQXdCQ3dKQUlBRW9BZ2dvQWlBRVFBSi9Jd0JCRUdzaUFDQUJLQUlJTmdJTUlBQW9BZ3dwQXhoQ3dBQ0RVQXNFUUNBQktBSUlRUXhxUVIxQkFCQVVJQUZCZnpZQ0RBd0RDd3dCQ3lBQktBSUlLQUlBQkVBZ0FTZ0NDQ2dDQUJCSVFRQklCRUFnQVNnQ0NFRU1haUFCS0FJSUtBSUFFQmdnQVVGL05nSU1EQU1MQ3lBQktBSUlRUUJDQUVFQUVCOUNBRk1FUUNBQktBSUlLQUlBQkVBZ0FTZ0NDQ2dDQUJBd0dnc2dBVUYvTmdJTURBSUxDeUFCS0FJSVFRQTZBRFFnQVNnQ0NFRUFPZ0ExSXdCQkVHc2lBQ0FCS0FJSVFReHFOZ0lNSUFBb0Fnd0VRQ0FBS0FJTVFRQTJBZ0FnQUNnQ0RFRUFOZ0lFQ3lBQktBSUlJZ0FnQUNnQ0lFRUJhallDSUNBQlFRQTJBZ3dMSUFFb0Fnd2hBQ0FCUVJCcUpBQWdBQXQxQWdGL0FYNGpBRUVRYXlJQkpBQWdBU0FBTmdJRUFrQWdBU2dDQkMwQUtFRUJjUVJBSUFGQ2Z6Y0RDQXdCQ3lBQktBSUVLQUlnUlFSQUlBRW9BZ1JCREdwQkVrRUFFQlFnQVVKL053TUlEQUVMSUFFZ0FTZ0NCRUVBUWdCQkJ4QWZOd01JQ3lBQktRTUlJUUlnQVVFUWFpUUFJQUlMbVFVQkFYOGpBRUZBYWlJRUpBQWdCQ0FBTmdJNElBUWdBVGNETUNBRUlBSTJBaXdnQkNBRE5nSW9JQVJCeUFBUUdTSUFOZ0lrQWtBZ0FFVUVRQ0FFUVFBMkFqd01BUXNnQkNnQ0pFSUFOd000SUFRb0FpUkNBRGNER0NBRUtBSWtRZ0EzQXpBZ0JDZ0NKRUVBTmdJQUlBUW9BaVJCQURZQ0JDQUVLQUlrUWdBM0F3Z2dCQ2dDSkVJQU53TVFJQVFvQWlSQkFEWUNLQ0FFS0FJa1FnQTNBeUFDUUNBRUtRTXdVQVJBUVFnUUdTRUFJQVFvQWlRZ0FEWUNCQ0FBUlFSQUlBUW9BaVFRRlNBRUtBSW9RUTVCQUJBVUlBUkJBRFlDUEF3REN5QUVLQUlrS0FJRVFnQTNBd0FNQVFzZ0JDZ0NKQ0FFS1FNd1FRQVF1UUZCQVhGRkJFQWdCQ2dDS0VFT1FRQVFGQ0FFS0FJa0VETWdCRUVBTmdJOERBSUxJQVJDQURjRENDQUVRZ0EzQXhnZ0JFSUFOd01RQTBBZ0JDa0RHQ0FFS1FNd1ZBUkFJQVFvQWpnZ0JDa0RHS2RCQkhScUtRTUlVRVVFUUNBRUtBSTRJQVFwQXhpblFRUjBhaWdDQUVVRVFDQUVLQUlvUVJKQkFCQVVJQVFvQWlRUU15QUVRUUEyQWp3TUJRc2dCQ2dDSkNnQ0FDQUVLUU1RcDBFRWRHb2dCQ2dDT0NBRUtRTVlwMEVFZEdvb0FnQTJBZ0FnQkNnQ0pDZ0NBQ0FFS1FNUXAwRUVkR29nQkNnQ09DQUVLUU1ZcDBFRWRHb3BBd2czQXdnZ0JDZ0NKQ2dDQkNBRUtRTVlwMEVEZEdvZ0JDa0RDRGNEQUNBRUlBUW9BamdnQkNrREdLZEJCSFJxS1FNSUlBUXBBd2g4TndNSUlBUWdCQ2tERUVJQmZEY0RFQXNnQkNBRUtRTVlRZ0Y4TndNWURBRUxDeUFFS0FJa0lBUXBBeEEzQXdnZ0JDZ0NKQ0FFS0FJc0JINUNBQVVnQkNnQ0pDa0RDQXMzQXhnZ0JDZ0NKQ2dDQkNBRUtBSWtLUU1JcDBFRGRHb2dCQ2tEQ0RjREFDQUVLQUlrSUFRcEF3ZzNBekFMSUFRZ0JDZ0NKRFlDUEFzZ0JDZ0NQQ0VBSUFSQlFHc2tBQ0FBQzU0QkFRRi9Jd0JCSUdzaUJDUUFJQVFnQURZQ0dDQUVJQUUzQXhBZ0JDQUNOZ0lNSUFRZ0F6WUNDQ0FFSUFRb0FoZ2dCQ2tERUNBRUtBSU1JQVFvQWdnUVBpSUFOZ0lFQWtBZ0FFVUVRQ0FFUVFBMkFod01BUXNnQkNBRUtBSUVLQUl3UVFBZ0JDZ0NEQ0FFS0FJSUVFWWlBRFlDQUNBQVJRUkFJQVJCQURZQ0hBd0JDeUFFSUFRb0FnQTJBaHdMSUFRb0Fod2hBQ0FFUVNCcUpBQWdBQXVhQ0FFTGZ5QUFSUVJBSUFFUUdROExJQUZCUUU4RVFFSDRuUUZCTURZQ0FFRUFEd3NDZjBFUUlBRkJDMnBCZUhFZ0FVRUxTUnNoQmlBQVFRaHJJZ1VvQWdRaUNVRjRjU0VFQWtBZ0NVRURjVVVFUUVFQUlBWkJnQUpKRFFJYUlBWkJCR29nQkUwRVFDQUZJUUlnQkNBR2EwR0lvZ0VvQWdCQkFYUk5EUUlMUVFBTUFnc2dCQ0FGYWlFSEFrQWdCQ0FHVHdSQUlBUWdCbXNpQTBFUVNRMEJJQVVnQ1VFQmNTQUdja0VDY2pZQ0JDQUZJQVpxSWdJZ0EwRURjallDQkNBSElBY29BZ1JCQVhJMkFnUWdBaUFERUZrTUFRc2dCMEhBbmdFb0FnQkdCRUJCdEo0QktBSUFJQVJxSWdRZ0JrME5BaUFGSUFsQkFYRWdCbkpCQW5JMkFnUWdCU0FHYWlJRElBUWdCbXNpQWtFQmNqWUNCRUcwbmdFZ0FqWUNBRUhBbmdFZ0F6WUNBQXdCQ3lBSFFieWVBU2dDQUVZRVFFR3duZ0VvQWdBZ0JHb2lBeUFHU1EwQ0FrQWdBeUFHYXlJQ1FSQlBCRUFnQlNBSlFRRnhJQVp5UVFKeU5nSUVJQVVnQm1vaUJDQUNRUUZ5TmdJRUlBTWdCV29pQXlBQ05nSUFJQU1nQXlnQ0JFRitjVFlDQkF3QkN5QUZJQWxCQVhFZ0EzSkJBbkkyQWdRZ0F5QUZhaUlDSUFJb0FnUkJBWEkyQWdSQkFDRUNRUUFoQkF0QnZKNEJJQVEyQWdCQnNKNEJJQUkyQWdBTUFRc2dCeWdDQkNJRFFRSnhEUUVnQTBGNGNTQUVhaUlLSUFaSkRRRWdDaUFHYXlFTUFrQWdBMEgvQVUwRVFDQUhLQUlJSWdRZ0EwRURkaUlDUVFOMFFkQ2VBV3BHR2lBRUlBY29BZ3dpQTBZRVFFR29uZ0ZCcUo0QktBSUFRWDRnQW5keE5nSUFEQUlMSUFRZ0F6WUNEQ0FESUFRMkFnZ01BUXNnQnlnQ0dDRUxBa0FnQnlBSEtBSU1JZ2hIQkVBZ0J5Z0NDQ0lDUWJpZUFTZ0NBRWthSUFJZ0NEWUNEQ0FJSUFJMkFnZ01BUXNDUUNBSFFSUnFJZ1FvQWdBaUFnMEFJQWRCRUdvaUJDZ0NBQ0lDRFFCQkFDRUlEQUVMQTBBZ0JDRURJQUlpQ0VFVWFpSUVLQUlBSWdJTkFDQUlRUkJxSVFRZ0NDZ0NFQ0lDRFFBTElBTkJBRFlDQUFzZ0MwVU5BQUpBSUFjZ0J5Z0NIQ0lEUVFKMFFkaWdBV29pQWlnQ0FFWUVRQ0FDSUFnMkFnQWdDQTBCUWF5ZUFVR3NuZ0VvQWdCQmZpQURkM0UyQWdBTUFnc2dDMEVRUVJRZ0N5Z0NFQ0FIUmh0cUlBZzJBZ0FnQ0VVTkFRc2dDQ0FMTmdJWUlBY29BaEFpQWdSQUlBZ2dBallDRUNBQ0lBZzJBaGdMSUFjb0FoUWlBa1VOQUNBSUlBSTJBaFFnQWlBSU5nSVlDeUFNUVE5TkJFQWdCU0FKUVFGeElBcHlRUUp5TmdJRUlBVWdDbW9pQWlBQ0tBSUVRUUZ5TmdJRURBRUxJQVVnQ1VFQmNTQUdja0VDY2pZQ0JDQUZJQVpxSWdNZ0RFRURjallDQkNBRklBcHFJZ0lnQWlnQ0JFRUJjallDQkNBRElBd1FXUXNnQlNFQ0N5QUNDeUlDQkVBZ0FrRUlhZzhMSUFFUUdTSUZSUVJBUVFBUEN5QUZJQUJCZkVGNElBQkJCR3NvQWdBaUFrRURjUnNnQWtGNGNXb2lBaUFCSUFFZ0Frc2JFQmNhSUFBUUZTQUZDNHdEQVFGL0l3QkJJR3NpQkNRQUlBUWdBRFlDR0NBRUlBRTdBUllnQkNBQ05nSVFJQVFnQXpZQ0RBSkFJQVF2QVJaRkJFQWdCRUVBTmdJY0RBRUxBa0FDUUFKQUFrQWdCQ2dDRUVHQU1IRWlBQVJBSUFCQmdCQkdEUUVnQUVHQUlFWU5BZ3dEQ3lBRVFRQTJBZ1FNQXdzZ0JFRUNOZ0lFREFJTElBUkJCRFlDQkF3QkN5QUVLQUlNUVJKQkFCQVVJQVJCQURZQ0hBd0JDeUFFUVJRUUdTSUFOZ0lJSUFCRkJFQWdCQ2dDREVFT1FRQVFGQ0FFUVFBMkFod01BUXNnQkM4QkZrRUJhaEFaSVFBZ0JDZ0NDQ0FBTmdJQUlBQkZCRUFnQkNnQ0NCQVZJQVJCQURZQ0hBd0JDeUFFS0FJSUtBSUFJQVFvQWhnZ0JDOEJGaEFYR2lBRUtBSUlLQUlBSUFRdkFSWnFRUUE2QUFBZ0JDZ0NDQ0FFTHdFV093RUVJQVFvQWdoQkFEWUNDQ0FFS0FJSVFRQTJBZ3dnQkNnQ0NFRUFOZ0lRSUFRb0FnUUVRQ0FFS0FJSUlBUW9BZ1FRT2tFRlJnUkFJQVFvQWdnUUl5QUVLQUlNUVJKQkFCQVVJQVJCQURZQ0hBd0NDd3NnQkNBRUtBSUlOZ0ljQ3lBRUtBSWNJUUFnQkVFZ2FpUUFJQUFMTndFQmZ5TUFRUkJySWdFZ0FEWUNDQUpBSUFFb0FnaEZCRUFnQVVFQU93RU9EQUVMSUFFZ0FTZ0NDQzhCQkRzQkRnc2dBUzhCRGd1SkFnRUJmeU1BUVJCcklnRWtBQ0FCSUFBMkFnd0NRQ0FCS0FJTUxRQUZRUUZ4QkVBZ0FTZ0NEQ2dDQUVFQ2NVVU5BUXNnQVNnQ0RDZ0NNQkFqSUFFb0FneEJBRFlDTUFzQ1FDQUJLQUlNTFFBRlFRRnhCRUFnQVNnQ0RDZ0NBRUVJY1VVTkFRc2dBU2dDRENnQ05CQWlJQUVvQWd4QkFEWUNOQXNDUUNBQktBSU1MUUFGUVFGeEJFQWdBU2dDRENnQ0FFRUVjVVVOQVFzZ0FTZ0NEQ2dDT0JBaklBRW9BZ3hCQURZQ09Bc0NRQ0FCS0FJTUxRQUZRUUZ4QkVBZ0FTZ0NEQ2dDQUVHQUFYRkZEUUVMSUFFb0Fnd29BbFFFUUNBQktBSU1LQUpVUVFBZ0FTZ0NEQ2dDVkJBdUVDOExJQUVvQWd3b0FsUVFGU0FCS0FJTVFRQTJBbFFMSUFGQkVHb2tBQXZ4QVFFQmZ5TUFRUkJySWdFZ0FEWUNEQ0FCS0FJTVFRQTJBZ0FnQVNnQ0RFRUFPZ0FFSUFFb0FneEJBRG9BQlNBQktBSU1RUUU2QUFZZ0FTZ0NERUcvQmpzQkNDQUJLQUlNUVFvN0FRb2dBU2dDREVFQU93RU1JQUVvQWd4QmZ6WUNFQ0FCS0FJTVFRQTJBaFFnQVNnQ0RFRUFOZ0lZSUFFb0FneENBRGNESUNBQktBSU1RZ0EzQXlnZ0FTZ0NERUVBTmdJd0lBRW9BZ3hCQURZQ05DQUJLQUlNUVFBMkFqZ2dBU2dDREVFQU5nSThJQUVvQWd4QkFEc0JRQ0FCS0FJTVFZQ0EySTE0TmdKRUlBRW9BZ3hDQURjRFNDQUJLQUlNUVFBN0FWQWdBU2dDREVFQU93RlNJQUVvQWd4QkFEWUNWQXZTRXdFQmZ5TUFRYkFCYXlJREpBQWdBeUFBTmdLb0FTQURJQUUyQXFRQklBTWdBallDb0FFZ0EwRUFOZ0tRQVNBRElBTW9BcVFCS0FJd1FRQVFPallDbEFFZ0F5QURLQUtrQVNnQ09FRUFFRG8yQXBnQkFrQUNRQUpBQWtBZ0F5Z0NsQUZCQWtZRVFDQURLQUtZQVVFQlJnMEJDeUFES0FLVUFVRUJSZ1JBSUFNb0FwZ0JRUUpHRFFFTElBTW9BcFFCUVFKSERRRWdBeWdDbUFGQkFrY05BUXNnQXlnQ3BBRWlBQ0FBTHdFTVFZQVFjanNCREF3QkN5QURLQUtrQVNJQUlBQXZBUXhCLys4RGNUc0JEQ0FES0FLVUFVRUNSZ1JBSUFOQjllQUJJQU1vQXFRQktBSXdJQU1vQXFnQlFRaHFFSThCTmdLUUFTQURLQUtRQVVVRVFDQURRWDgyQXF3QkRBTUxDd0pBSUFNb0FxQUJRWUFDY1EwQUlBTW9BcGdCUVFKSERRQWdBMEgxeGdFZ0F5Z0NwQUVvQWpnZ0F5Z0NxQUZCQ0dvUWp3RTJBa2dnQXlnQ1NFVUVRQ0FES0FLUUFSQWlJQU5CZnpZQ3JBRU1Bd3NnQXlnQ1NDQURLQUtRQVRZQ0FDQURJQU1vQWtnMkFwQUJDd3NDUUNBREtBS2tBUzhCVWtVRVFDQURLQUtrQVNJQUlBQXZBUXhCL3Y4RGNUc0JEQXdCQ3lBREtBS2tBU0lBSUFBdkFReEJBWEk3QVF3TElBTWdBeWdDcEFFZ0F5Z0NvQUVRWjBFQmNUb0FoZ0VnQXlBREtBS2dBVUdBQ25GQmdBcEhCSDhnQXkwQWhnRUZRUUVMUVFGeE9nQ0hBU0FEQW45QkFTQURLQUtrQVM4QlVrR0JBa1lOQUJwQkFTQURLQUtrQVM4QlVrR0NBa1lOQUJvZ0F5Z0NwQUV2QVZKQmd3SkdDMEVCY1RvQWhRRWdBeTBBaHdGQkFYRUVRQ0FESUFOQklHcENIQkFwTmdJY0lBTW9BaHhGQkVBZ0F5Z0NxQUZCQ0dwQkRrRUFFQlFnQXlnQ2tBRVFJaUFEUVg4MkFxd0JEQUlMQWtBZ0F5Z0NvQUZCZ0FKeEJFQUNRQ0FES0FLZ0FVR0FDSEVOQUNBREtBS2tBU2tESUVMLy8vLy9EMVlOQUNBREtBS2tBU2tES0VMLy8vLy9EMWdOQWdzZ0F5Z0NIQ0FES0FLa0FTa0RLQkF0SUFNb0Fod2dBeWdDcEFFcEF5QVFMUXdCQ3dKQUFrQWdBeWdDb0FGQmdBaHhEUUFnQXlnQ3BBRXBBeUJDLy8vLy93OVdEUUFnQXlnQ3BBRXBBeWhDLy8vLy93OVdEUUFnQXlnQ3BBRXBBMGhDLy8vLy93OVlEUUVMSUFNb0FxUUJLUU1vUXYvLy8vOFBXZ1JBSUFNb0Fod2dBeWdDcEFFcEF5Z1FMUXNnQXlnQ3BBRXBBeUJDLy8vLy93OWFCRUFnQXlnQ0hDQURLQUtrQVNrRElCQXRDeUFES0FLa0FTa0RTRUwvLy8vL0Qxb0VRQ0FES0FJY0lBTW9BcVFCS1FOSUVDMExDd3NDZnlNQVFSQnJJZ0FnQXlnQ0hEWUNEQ0FBS0FJTUxRQUFRUUZ4UlFzRVFDQURLQUtvQVVFSWFrRVVRUUFRRkNBREtBSWNFQllnQXlnQ2tBRVFJaUFEUVg4MkFxd0JEQUlMSUFOQkFRSi9Jd0JCRUdzaUFDQURLQUljTmdJTUFuNGdBQ2dDREMwQUFFRUJjUVJBSUFBb0Fnd3BBeEFNQVF0Q0FBdW5RZi8vQTNFTElBTkJJR3BCZ0FZUVVqWUNqQUVnQXlnQ0hCQVdJQU1vQW93QklBTW9BcEFCTmdJQUlBTWdBeWdDakFFMkFwQUJDeUFETFFDRkFVRUJjUVJBSUFNZ0EwRVZha0lIRUNrMkFoQWdBeWdDRUVVRVFDQURLQUtvQVVFSWFrRU9RUUFRRkNBREtBS1FBUkFpSUFOQmZ6WUNyQUVNQWdzZ0F5Z0NFRUVDRUIwZ0F5Z0NFRUhNRWtFQ0VFQWdBeWdDRUNBREtBS2tBUzhCVWtIL0FYRVFsd0VnQXlnQ0VDQURLQUtrQVNnQ0VFSC8vd054RUIwQ2Z5TUFRUkJySWdBZ0F5Z0NFRFlDRENBQUtBSU1MUUFBUVFGeFJRc0VRQ0FES0FLb0FVRUlha0VVUVFBUUZDQURLQUlRRUJZZ0F5Z0NrQUVRSWlBRFFYODJBcXdCREFJTElBTkJnYklDUVFjZ0EwRVZha0dBQmhCU05nSU1JQU1vQWhBUUZpQURLQUlNSUFNb0FwQUJOZ0lBSUFNZ0F5Z0NERFlDa0FFTElBTWdBMEhRQUdwQ0xoQXBJZ0EyQWt3Z0FFVUVRQ0FES0FLb0FVRUlha0VPUVFBUUZDQURLQUtRQVJBaUlBTkJmellDckFFTUFRc2dBeWdDVEVINUVrSCtFaUFES0FLZ0FVR0FBbkViUVFRUVFDQURLQUtnQVVHQUFuRkZCRUFnQXlnQ1RDQURMUUNHQVVFQmNRUi9RUzBGSUFNb0FxUUJMd0VJQzBILy93TnhFQjBMSUFNb0Frd2dBeTBBaGdGQkFYRUVmMEV0QlNBREtBS2tBUzhCQ2d0Qi8vOERjUkFkSUFNb0Frd2dBeWdDcEFFdkFRd1FIUUpBSUFNdEFJVUJRUUZ4QkVBZ0F5Z0NURUhqQUJBZERBRUxJQU1vQWt3Z0F5Z0NwQUVvQWhCQi8vOERjUkFkQ3lBREtBS2tBU2dDRkNBRFFaNEJhaUFEUVp3QmFoQ09BU0FES0FKTUlBTXZBWjRCRUIwZ0F5Z0NUQ0FETHdHY0FSQWRBa0FDUUNBRExRQ0ZBVUVCY1VVTkFDQURLQUtrQVNrREtFSVVXZzBBSUFNb0FreEJBQkFnREFFTElBTW9Ba3dnQXlnQ3BBRW9BaGdRSUFzQ1FBSkFJQU1vQXFBQlFZQUNjVUdBQWtjTkFDQURLQUtrQVNrRElFTC8vLy8vRDFRRVFDQURLQUtrQVNrREtFTC8vLy8vRDFRTkFRc2dBeWdDVEVGL0VDQWdBeWdDVEVGL0VDQU1BUXNDUUNBREtBS2tBU2tESUVMLy8vLy9EMVFFUUNBREtBSk1JQU1vQXFRQktRTWdweEFnREFFTElBTW9Ba3hCZnhBZ0N3SkFJQU1vQXFRQktRTW9Rdi8vLy84UFZBUkFJQU1vQWt3Z0F5Z0NwQUVwQXlpbkVDQU1BUXNnQXlnQ1RFRi9FQ0FMQ3lBREtBSk1JQU1vQXFRQktBSXdFRTVCLy84RGNSQWRJQU1nQXlnQ3BBRW9BalFnQXlnQ29BRVFrd0ZCLy84RGNTQURLQUtRQVVHQUJoQ1RBVUgvL3dOeGFqWUNpQUVnQXlnQ1RDQURLQUtJQVVILy93TnhFQjBnQXlnQ29BRkJnQUp4UlFSQUlBTW9Ba3dnQXlnQ3BBRW9BamdRVGtILy93TnhFQjBnQXlnQ1RDQURLQUtrQVNnQ1BFSC8vd054RUIwZ0F5Z0NUQ0FES0FLa0FTOEJRQkFkSUFNb0Frd2dBeWdDcEFFb0FrUVFJQUpBSUFNb0FxUUJLUU5JUXYvLy8vOFBWQVJBSUFNb0Frd2dBeWdDcEFFcEEwaW5FQ0FNQVFzZ0F5Z0NURUYvRUNBTEN3Si9Jd0JCRUdzaUFDQURLQUpNTmdJTUlBQW9BZ3d0QUFCQkFYRkZDd1JBSUFNb0FxZ0JRUWhxUVJSQkFCQVVJQU1vQWt3UUZpQURLQUtRQVJBaUlBTkJmellDckFFTUFRc2dBeWdDcUFFZ0EwSFFBR29DZmlNQVFSQnJJZ0FnQXlnQ1REWUNEQUorSUFBb0Fnd3RBQUJCQVhFRVFDQUFLQUlNS1FNUURBRUxRZ0FMQ3hBMlFRQklCRUFnQXlnQ1RCQVdJQU1vQXBBQkVDSWdBMEYvTmdLc0FRd0JDeUFES0FKTUVCWWdBeWdDcEFFb0FqQUVRQ0FES0FLb0FTQURLQUtrQVNnQ01CQ0dBVUVBU0FSQUlBTW9BcEFCRUNJZ0EwRi9OZ0tzQVF3Q0N3c2dBeWdDa0FFRVFDQURLQUtvQVNBREtBS1FBVUdBQmhDU0FVRUFTQVJBSUFNb0FwQUJFQ0lnQTBGL05nS3NBUXdDQ3dzZ0F5Z0NrQUVRSWlBREtBS2tBU2dDTkFSQUlBTW9BcWdCSUFNb0FxUUJLQUkwSUFNb0FxQUJFSklCUVFCSUJFQWdBMEYvTmdLc0FRd0NDd3NnQXlnQ29BRkJnQUp4UlFSQUlBTW9BcVFCS0FJNEJFQWdBeWdDcUFFZ0F5Z0NwQUVvQWpnUWhnRkJBRWdFUUNBRFFYODJBcXdCREFNTEN3c2dBeUFETFFDSEFVRUJjVFlDckFFTElBTW9BcXdCSVFBZ0EwR3dBV29rQUNBQUMrQUNBUUYvSXdCQklHc2lCQ1FBSUFRZ0FEc0JHaUFFSUFFN0FSZ2dCQ0FDTmdJVUlBUWdBellDRUNBRVFSQVFHU0lBTmdJTUFrQWdBRVVFUUNBRVFRQTJBaHdNQVFzZ0JDZ0NERUVBTmdJQUlBUW9BZ3dnQkNnQ0VEWUNCQ0FFS0FJTUlBUXZBUm83QVFnZ0JDZ0NEQ0FFTHdFWU93RUtBa0FnQkM4QkdBUkFJQVFvQWhRaEFTQUVMd0VZSVFJakFFRWdheUlBSkFBZ0FDQUJOZ0lZSUFBZ0FqWUNGQ0FBUVFBMkFoQUNRQ0FBS0FJVVJRUkFJQUJCQURZQ0hBd0JDeUFBSUFBb0FoUVFHVFlDRENBQUtBSU1SUVJBSUFBb0FoQkJEa0VBRUJRZ0FFRUFOZ0ljREFFTElBQW9BZ3dnQUNnQ0dDQUFLQUlVRUJjYUlBQWdBQ2dDRERZQ0hBc2dBQ2dDSENFQklBQkJJR29rQUNBQklRQWdCQ2dDRENBQU5nSU1JQUJGQkVBZ0JDZ0NEQkFWSUFSQkFEWUNIQXdEQ3d3QkN5QUVLQUlNUVFBMkFnd0xJQVFnQkNnQ0REWUNIQXNnQkNnQ0hDRUFJQVJCSUdva0FDQUFDNUVCQVFWL0lBQW9Ba3hCQUU0aEF5QUFLQUlBUVFGeElnUkZCRUFnQUNnQ05DSUJCRUFnQVNBQUtBSTROZ0k0Q3lBQUtBSTRJZ0lFUUNBQ0lBRTJBalFMSUFCQjhLSUJLQUlBUmdSQVFmQ2lBU0FDTmdJQUN3c2dBQkNtQVNFQklBQWdBQ2dDREJFQkFDRUNJQUFvQW1BaUJRUkFJQVVRRlFzQ1FDQUVSUVJBSUFBUUZRd0JDeUFEUlEwQUN5QUJJQUp5Qy9rQkFRRi9Jd0JCSUdzaUFpUUFJQUlnQURZQ0hDQUNJQUU1QXhBQ1FDQUNLQUljUlEwQUlBSUNmQUo4SUFJckF4QkVBQUFBQUFBQUFBQmtCRUFnQWlzREVBd0JDMFFBQUFBQUFBQUFBQXRFQUFBQUFBQUE4RDlqQkVBQ2ZDQUNLd01RUkFBQUFBQUFBQUFBWkFSQUlBSXJBeEFNQVF0RUFBQUFBQUFBQUFBTERBRUxSQUFBQUFBQUFQQS9DeUFDS0FJY0t3TW9JQUlvQWh3ckF5Q2hvaUFDS0FJY0t3TWdvRGtEQ0NBQ0tBSWNLd01RSUFJckF3Z2dBaWdDSENzREdLRmpSUTBBSUFJb0Fod29BZ0FnQWlzRENDQUNLQUljS0FJTUlBSW9BaHdvQWdRUkZnQWdBaWdDSENBQ0t3TUlPUU1ZQ3lBQ1FTQnFKQUFMNFFVQ0FuOEJmaU1BUVRCcklnUWtBQ0FFSUFBMkFpUWdCQ0FCTmdJZ0lBUWdBallDSENBRUlBTTJBaGdDUUNBRUtBSWtSUVJBSUFSQ2Z6Y0RLQXdCQ3lBRUtBSWdSUVJBSUFRb0FoaEJFa0VBRUJRZ0JFSi9Od01vREFFTElBUW9BaHhCZ3lCeEJFQWdCRUV4UVRJZ0JDZ0NIRUVCY1JzMkFoUWdCRUlBTndNQUEwQWdCQ2tEQUNBRUtBSWtLUU13VkFSQUlBUWdCQ2dDSkNBRUtRTUFJQVFvQWh3Z0JDZ0NHQkJMTmdJUUlBUW9BaEFFUUNBRUtBSWNRUUp4QkVBZ0JBSi9JQVFvQWhBaUFSQXVRUUZxSVFBRFFFRUFJQUJGRFFFYUlBRWdBRUVCYXlJQWFpSUNMUUFBUVM5SERRQUxJQUlMTmdJTUlBUW9BZ3dFUUNBRUlBUW9BZ3hCQVdvMkFoQUxDeUFFS0FJZ0lBUW9BaEFnQkNnQ0ZCRUNBRVVFUUNNQVFSQnJJZ0FnQkNnQ0dEWUNEQ0FBS0FJTUJFQWdBQ2dDREVFQU5nSUFJQUFvQWd4QkFEWUNCQXNnQkNBRUtRTUFOd01vREFVTEN5QUVJQVFwQXdCQ0FYdzNBd0FNQVFzTElBUW9BaGhCQ1VFQUVCUWdCRUovTndNb0RBRUxJQVFvQWlRb0FsQWhBU0FFS0FJZ0lRSWdCQ2dDSENFRElBUW9BaGdoQlNNQVFUQnJJZ0FrQUNBQUlBRTJBaVFnQUNBQ05nSWdJQUFnQXpZQ0hDQUFJQVUyQWhnQ1FBSkFJQUFvQWlRRVFDQUFLQUlnRFFFTElBQW9BaGhCRWtFQUVCUWdBRUovTndNb0RBRUxJQUFvQWlRcEF3aENBRklFUUNBQUlBQW9BaUFRZFRZQ0ZDQUFJQUFvQWhRZ0FDZ0NKQ2dDQUhBMkFoQWdBQ0FBS0FJa0tBSVFJQUFvQWhCQkFuUnFLQUlBTmdJTUEwQUNRQ0FBS0FJTVJRMEFJQUFvQWlBZ0FDZ0NEQ2dDQUJCWUJFQWdBQ0FBS0FJTUtBSVlOZ0lNREFJRklBQW9BaHhCQ0hFRVFDQUFLQUlNS1FNSVFuOVNCRUFnQUNBQUtBSU1LUU1JTndNb0RBWUxEQUlMSUFBb0Fnd3BBeEJDZjFJRVFDQUFJQUFvQWd3cEF4QTNBeWdNQlFzTEN3c0xJQUFvQWhoQkNVRUFFQlFnQUVKL053TW9DeUFBS1FNb0lRWWdBRUV3YWlRQUlBUWdCamNES0FzZ0JDa0RLQ0VHSUFSQk1Hb2tBQ0FHQzlRREFRRi9Jd0JCSUdzaUF5UUFJQU1nQURZQ0dDQURJQUUyQWhRZ0F5QUNOZ0lRQWtBQ1FDQURLQUlZQkVBZ0F5Z0NGQTBCQ3lBREtBSVFRUkpCQUJBVUlBTkJBRG9BSHd3QkN5QURLQUlZS1FNSVFnQlNCRUFnQXlBREtBSVVFSFUyQWd3Z0F5QURLQUlNSUFNb0FoZ29BZ0J3TmdJSUlBTkJBRFlDQUNBRElBTW9BaGdvQWhBZ0F5Z0NDRUVDZEdvb0FnQTJBZ1FEUUNBREtBSUVCRUFDUUNBREtBSUVLQUljSUFNb0FneEhEUUFnQXlnQ0ZDQURLQUlFS0FJQUVGZ05BQUpBSUFNb0FnUXBBd2hDZjFFRVFBSkFJQU1vQWdBRVFDQURLQUlBSUFNb0FnUW9BaGcyQWhnTUFRc2dBeWdDR0NnQ0VDQURLQUlJUVFKMGFpQURLQUlFS0FJWU5nSUFDeUFES0FJRUVCVWdBeWdDR0NJQUlBQXBBd2hDQVgwM0F3Z0NRQ0FES0FJWUlnQXBBd2k2SUFBb0FnQzRSSHNVcmtmaGVvUS9vbU5GRFFBZ0F5Z0NHQ2dDQUVHQUFrME5BQ0FES0FJWUlBTW9BaGdvQWdCQkFYWWdBeWdDRUJCWFFRRnhSUVJBSUFOQkFEb0FId3dJQ3dzTUFRc2dBeWdDQkVKL053TVFDeUFEUVFFNkFCOE1CQXNnQXlBREtBSUVOZ0lBSUFNZ0F5Z0NCQ2dDR0RZQ0JBd0JDd3NMSUFNb0FoQkJDVUVBRUJRZ0EwRUFPZ0FmQ3lBRExRQWZRUUZ4SVFBZ0EwRWdhaVFBSUFBTDN3SUJBWDhqQUVFd2F5SURKQUFnQXlBQU5nSW9JQU1nQVRZQ0pDQURJQUkyQWlBQ1FDQURLQUlrSUFNb0FpZ29BZ0JHQkVBZ0EwRUJPZ0F2REFFTElBTWdBeWdDSkVFRUVId2lBRFlDSENBQVJRUkFJQU1vQWlCQkRrRUFFQlFnQTBFQU9nQXZEQUVMSUFNb0FpZ3BBd2hDQUZJRVFDQURRUUEyQWhnRFFDQURLQUlZSUFNb0FpZ29BZ0JQUlFSQUlBTWdBeWdDS0NnQ0VDQURLQUlZUVFKMGFpZ0NBRFlDRkFOQUlBTW9BaFFFUUNBRElBTW9BaFFvQWhnMkFoQWdBeUFES0FJVUtBSWNJQU1vQWlSd05nSU1JQU1vQWhRZ0F5Z0NIQ0FES0FJTVFRSjBhaWdDQURZQ0dDQURLQUljSUFNb0FneEJBblJxSUFNb0FoUTJBZ0FnQXlBREtBSVFOZ0lVREFFTEN5QURJQU1vQWhoQkFXbzJBaGdNQVFzTEN5QURLQUlvS0FJUUVCVWdBeWdDS0NBREtBSWNOZ0lRSUFNb0FpZ2dBeWdDSkRZQ0FDQURRUUU2QUM4TElBTXRBQzlCQVhFaEFDQURRVEJxSkFBZ0FBdE5BUUovSUFFdEFBQWhBZ0pBSUFBdEFBQWlBMFVOQUNBQ0lBTkhEUUFEUUNBQkxRQUJJUUlnQUMwQUFTSURSUTBCSUFGQkFXb2hBU0FBUVFGcUlRQWdBaUFEUmcwQUN3c2dBeUFDYXd1TERBRUdmeUFBSUFGcUlRVUNRQUpBSUFBb0FnUWlBa0VCY1EwQUlBSkJBM0ZGRFFFZ0FDZ0NBQ0lDSUFGcUlRRUNRQ0FBSUFKcklnQkJ2SjRCS0FJQVJ3UkFJQUpCL3dGTkJFQWdBQ2dDQ0NJRUlBSkJBM1lpQWtFRGRFSFFuZ0ZxUmhvZ0FDZ0NEQ0lESUFSSERRSkJxSjRCUWFpZUFTZ0NBRUYrSUFKM2NUWUNBQXdEQ3lBQUtBSVlJUVlDUUNBQUlBQW9BZ3dpQTBjRVFDQUFLQUlJSWdKQnVKNEJLQUlBU1JvZ0FpQUROZ0lNSUFNZ0FqWUNDQXdCQ3dKQUlBQkJGR29pQWlnQ0FDSUVEUUFnQUVFUWFpSUNLQUlBSWdRTkFFRUFJUU1NQVFzRFFDQUNJUWNnQkNJRFFSUnFJZ0lvQWdBaUJBMEFJQU5CRUdvaEFpQURLQUlRSWdRTkFBc2dCMEVBTmdJQUN5QUdSUTBDQWtBZ0FDQUFLQUljSWdSQkFuUkIyS0FCYWlJQ0tBSUFSZ1JBSUFJZ0F6WUNBQ0FERFFGQnJKNEJRYXllQVNnQ0FFRitJQVIzY1RZQ0FBd0VDeUFHUVJCQkZDQUdLQUlRSUFCR0cyb2dBellDQUNBRFJRMERDeUFESUFZMkFoZ2dBQ2dDRUNJQ0JFQWdBeUFDTmdJUUlBSWdBellDR0FzZ0FDZ0NGQ0lDUlEwQ0lBTWdBallDRkNBQ0lBTTJBaGdNQWdzZ0JTZ0NCQ0lDUVFOeFFRTkhEUUZCc0o0QklBRTJBZ0FnQlNBQ1FYNXhOZ0lFSUFBZ0FVRUJjallDQkNBRklBRTJBZ0FQQ3lBRUlBTTJBZ3dnQXlBRU5nSUlDd0pBSUFVb0FnUWlBa0VDY1VVRVFDQUZRY0NlQVNnQ0FFWUVRRUhBbmdFZ0FEWUNBRUcwbmdGQnRKNEJLQUlBSUFGcUlnRTJBZ0FnQUNBQlFRRnlOZ0lFSUFCQnZKNEJLQUlBUncwRFFiQ2VBVUVBTmdJQVFieWVBVUVBTmdJQUR3c2dCVUc4bmdFb0FnQkdCRUJCdko0QklBQTJBZ0JCc0o0QlFiQ2VBU2dDQUNBQmFpSUJOZ0lBSUFBZ0FVRUJjallDQkNBQUlBRnFJQUUyQWdBUEN5QUNRWGh4SUFGcUlRRUNRQ0FDUWY4QlRRUkFJQVVvQWdnaUJDQUNRUU4ySWdKQkEzUkIwSjRCYWtZYUlBUWdCU2dDRENJRFJnUkFRYWllQVVHb25nRW9BZ0JCZmlBQ2QzRTJBZ0FNQWdzZ0JDQUROZ0lNSUFNZ0JEWUNDQXdCQ3lBRktBSVlJUVlDUUNBRklBVW9BZ3dpQTBjRVFDQUZLQUlJSWdKQnVKNEJLQUlBU1JvZ0FpQUROZ0lNSUFNZ0FqWUNDQXdCQ3dKQUlBVkJGR29pQkNnQ0FDSUNEUUFnQlVFUWFpSUVLQUlBSWdJTkFFRUFJUU1NQVFzRFFDQUVJUWNnQWlJRFFSUnFJZ1FvQWdBaUFnMEFJQU5CRUdvaEJDQURLQUlRSWdJTkFBc2dCMEVBTmdJQUN5QUdSUTBBQWtBZ0JTQUZLQUljSWdSQkFuUkIyS0FCYWlJQ0tBSUFSZ1JBSUFJZ0F6WUNBQ0FERFFGQnJKNEJRYXllQVNnQ0FFRitJQVIzY1RZQ0FBd0NDeUFHUVJCQkZDQUdLQUlRSUFWR0cyb2dBellDQUNBRFJRMEJDeUFESUFZMkFoZ2dCU2dDRUNJQ0JFQWdBeUFDTmdJUUlBSWdBellDR0FzZ0JTZ0NGQ0lDUlEwQUlBTWdBallDRkNBQ0lBTTJBaGdMSUFBZ0FVRUJjallDQkNBQUlBRnFJQUUyQWdBZ0FFRzhuZ0VvQWdCSERRRkJzSjRCSUFFMkFnQVBDeUFGSUFKQmZuRTJBZ1FnQUNBQlFRRnlOZ0lFSUFBZ0FXb2dBVFlDQUFzZ0FVSC9BVTBFUUNBQlFRTjJJZ0pCQTNSQjBKNEJhaUVCQW45QnFKNEJLQUlBSWdOQkFTQUNkQ0lDY1VVRVFFR29uZ0VnQWlBRGNqWUNBQ0FCREFFTElBRW9BZ2dMSVFJZ0FTQUFOZ0lJSUFJZ0FEWUNEQ0FBSUFFMkFnd2dBQ0FDTmdJSUR3dEJIeUVDSUFCQ0FEY0NFQ0FCUWYvLy93ZE5CRUFnQVVFSWRpSUNJQUpCZ1A0L2FrRVFka0VJY1NJRWRDSUNJQUpCZ09BZmFrRVFka0VFY1NJRGRDSUNJQUpCZ0lBUGFrRVFka0VDY1NJQ2RFRVBkaUFESUFSeUlBSnlheUlDUVFGMElBRWdBa0VWYW5aQkFYRnlRUnhxSVFJTElBQWdBallDSENBQ1FRSjBRZGlnQVdvaEJ3SkFBa0JCcko0QktBSUFJZ1JCQVNBQ2RDSURjVVVFUUVHc25nRWdBeUFFY2pZQ0FDQUhJQUEyQWdBZ0FDQUhOZ0lZREFFTElBRkJBRUVaSUFKQkFYWnJJQUpCSDBZYmRDRUNJQWNvQWdBaEF3TkFJQU1pQkNnQ0JFRjRjU0FCUmcwQ0lBSkJIWFloQXlBQ1FRRjBJUUlnQkNBRFFRUnhhaUlIUVJCcUtBSUFJZ01OQUFzZ0J5QUFOZ0lRSUFBZ0JEWUNHQXNnQUNBQU5nSU1JQUFnQURZQ0NBOExJQVFvQWdnaUFTQUFOZ0lNSUFRZ0FEWUNDQ0FBUVFBMkFoZ2dBQ0FFTmdJTUlBQWdBVFlDQ0FzTFF3RURmd0pBSUFKRkRRQURRQ0FBTFFBQUlnUWdBUzBBQUNJRlJnUkFJQUZCQVdvaEFTQUFRUUZxSVFBZ0FrRUJheUlDRFFFTUFnc0xJQVFnQldzaEF3c2dBd3YvQlFJQmZ3SitJQU90SVFZZ0FDa0R1QzBoQlFKQUlBQW9Bc0F0SWdOQkEyb2lCRUUvVFFSQUlBWWdBNjJHSUFXRUlRWU1BUXNnQTBIQUFFWUVRQ0FBSUFBb0FoQWlBMEVCYWpZQ0VDQURJQUFvQWdScUlBVThBQUFnQUNBQUtBSVFJZ05CQVdvMkFoQWdBeUFBS0FJRWFpQUZRZ2lJUEFBQUlBQWdBQ2dDRUNJRFFRRnFOZ0lRSUFNZ0FDZ0NCR29nQlVJUWlEd0FBQ0FBSUFBb0FoQWlBMEVCYWpZQ0VDQURJQUFvQWdScUlBVkNHSWc4QUFBZ0FDQUFLQUlRSWdOQkFXbzJBaEFnQXlBQUtBSUVhaUFGUWlDSVBBQUFJQUFnQUNnQ0VDSURRUUZxTmdJUUlBTWdBQ2dDQkdvZ0JVSW9pRHdBQUNBQUlBQW9BaEFpQTBFQmFqWUNFQ0FESUFBb0FnUnFJQVZDTUlnOEFBQWdBQ0FBS0FJUUlnTkJBV28yQWhBZ0F5QUFLQUlFYWlBRlFqaUlQQUFBUVFNaEJBd0JDeUFBSUFBb0FoQWlCRUVCYWpZQ0VDQUVJQUFvQWdScUlBWWdBNjJHSUFXRUlnVThBQUFnQUNBQUtBSVFJZ1JCQVdvMkFoQWdCQ0FBS0FJRWFpQUZRZ2lJUEFBQUlBQWdBQ2dDRUNJRVFRRnFOZ0lRSUFRZ0FDZ0NCR29nQlVJUWlEd0FBQ0FBSUFBb0FoQWlCRUVCYWpZQ0VDQUVJQUFvQWdScUlBVkNHSWc4QUFBZ0FDQUFLQUlRSWdSQkFXbzJBaEFnQkNBQUtBSUVhaUFGUWlDSVBBQUFJQUFnQUNnQ0VDSUVRUUZxTmdJUUlBUWdBQ2dDQkdvZ0JVSW9pRHdBQUNBQUlBQW9BaEFpQkVFQmFqWUNFQ0FFSUFBb0FnUnFJQVZDTUlnOEFBQWdBQ0FBS0FJUUlnUkJBV28yQWhBZ0JDQUFLQUlFYWlBRlFqaUlQQUFBSUFOQlBXc2hCQ0FHUWNBQUlBTnJyWWdoQmdzZ0FDQUdOd080TFNBQUlBUTJBc0F0SUFBUXdBRWdBQ0FBS0FJUUlnTkJBV28yQWhBZ0F5QUFLQUlFYWlBQ09nQUFJQUFnQUNnQ0VDSURRUUZxTmdJUUlBTWdBQ2dDQkdvZ0FrRUlkam9BQUNBQUlBQW9BaEFpQTBFQmFqWUNFQ0FESUFBb0FnUnFJQUpCZjNNaUF6b0FBQ0FBSUFBb0FoQWlCRUVCYWpZQ0VDQUVJQUFvQWdScUlBTkJDSFk2QUFBZ0FnUkFJQUFvQWdRZ0FDZ0NFR29nQVNBQ0VCY2FJQUFnQUNnQ0VDQUNhallDRUFzTGZRRUJmeUFBSUFBb0FoQWlBa0VCYWpZQ0VDQUNJQUFvQWdScUlBRTZBQUFnQUNBQUtBSVFJZ0pCQVdvMkFoQWdBaUFBS0FJRWFpQUJRUWgyT2dBQUlBQWdBQ2dDRUNJQ1FRRnFOZ0lRSUFJZ0FDZ0NCR29nQVVFUWRqb0FBQ0FBSUFBb0FoQWlBa0VCYWpZQ0VDQUNJQUFvQWdScUlBRkJHSFk2QUFBTDNnUUNBWDhDZmlBQlFRSnFyU0VFSUFBcEE3Z3RJUU1DUUNBQUtBTEFMU0lCUVFOcUlnSkJQMDBFUUNBRUlBR3RoaUFEaENFRURBRUxJQUZCd0FCR0JFQWdBQ0FBS0FJUUlnRkJBV28yQWhBZ0FTQUFLQUlFYWlBRFBBQUFJQUFnQUNnQ0VDSUJRUUZxTmdJUUlBRWdBQ2dDQkdvZ0EwSUlpRHdBQUNBQUlBQW9BaEFpQVVFQmFqWUNFQ0FCSUFBb0FnUnFJQU5DRUlnOEFBQWdBQ0FBS0FJUUlnRkJBV28yQWhBZ0FTQUFLQUlFYWlBRFFoaUlQQUFBSUFBZ0FDZ0NFQ0lCUVFGcU5nSVFJQUVnQUNnQ0JHb2dBMElnaUR3QUFDQUFJQUFvQWhBaUFVRUJhallDRUNBQklBQW9BZ1JxSUFOQ0tJZzhBQUFnQUNBQUtBSVFJZ0ZCQVdvMkFoQWdBU0FBS0FJRWFpQURRakNJUEFBQUlBQWdBQ2dDRUNJQlFRRnFOZ0lRSUFFZ0FDZ0NCR29nQTBJNGlEd0FBRUVESVFJTUFRc2dBQ0FBS0FJUUlnSkJBV28yQWhBZ0FpQUFLQUlFYWlBRUlBR3RoaUFEaENJRFBBQUFJQUFnQUNnQ0VDSUNRUUZxTmdJUUlBSWdBQ2dDQkdvZ0EwSUlpRHdBQUNBQUlBQW9BaEFpQWtFQmFqWUNFQ0FDSUFBb0FnUnFJQU5DRUlnOEFBQWdBQ0FBS0FJUUlnSkJBV28yQWhBZ0FpQUFLQUlFYWlBRFFoaUlQQUFBSUFBZ0FDZ0NFQ0lDUVFGcU5nSVFJQUlnQUNnQ0JHb2dBMElnaUR3QUFDQUFJQUFvQWhBaUFrRUJhallDRUNBQ0lBQW9BZ1JxSUFOQ0tJZzhBQUFnQUNBQUtBSVFJZ0pCQVdvMkFoQWdBaUFBS0FJRWFpQURRakNJUEFBQUlBQWdBQ2dDRUNJQ1FRRnFOZ0lRSUFJZ0FDZ0NCR29nQTBJNGlEd0FBQ0FCUVQxcklRSWdCRUhBQUNBQmE2MklJUVFMSUFBZ0JEY0R1QzBnQUNBQ05nTEFMUXVvQ1FJRGZ3SitRYkRrQURNQkFDRUZJQUFwQTdndElRWUNRQ0FBS0FMQUxTSUVRYkxrQUM4QkFDSURhaUlDUVQ5TkJFQWdCU0FFcllZZ0JvUWhCUXdCQ3lBRVFjQUFSZ1JBSUFBZ0FDZ0NFQ0lDUVFGcU5nSVFJQUlnQUNnQ0JHb2dCandBQUNBQUlBQW9BaEFpQWtFQmFqWUNFQ0FDSUFBb0FnUnFJQVpDQ0lnOEFBQWdBQ0FBS0FJUUlnSkJBV28yQWhBZ0FpQUFLQUlFYWlBR1FoQ0lQQUFBSUFBZ0FDZ0NFQ0lDUVFGcU5nSVFJQUlnQUNnQ0JHb2dCa0lZaUR3QUFDQUFJQUFvQWhBaUFrRUJhallDRUNBQ0lBQW9BZ1JxSUFaQ0lJZzhBQUFnQUNBQUtBSVFJZ0pCQVdvMkFoQWdBaUFBS0FJRWFpQUdRaWlJUEFBQUlBQWdBQ2dDRUNJQ1FRRnFOZ0lRSUFJZ0FDZ0NCR29nQmtJd2lEd0FBQ0FBSUFBb0FoQWlBa0VCYWpZQ0VDQUNJQUFvQWdScUlBWkNPSWc4QUFBZ0F5RUNEQUVMSUFBZ0FDZ0NFQ0lEUVFGcU5nSVFJQU1nQUNnQ0JHb2dCU0FFcllZZ0JvUWlCandBQUNBQUlBQW9BaEFpQTBFQmFqWUNFQ0FESUFBb0FnUnFJQVpDQ0lnOEFBQWdBQ0FBS0FJUUlnTkJBV28yQWhBZ0F5QUFLQUlFYWlBR1FoQ0lQQUFBSUFBZ0FDZ0NFQ0lEUVFGcU5nSVFJQU1nQUNnQ0JHb2dCa0lZaUR3QUFDQUFJQUFvQWhBaUEwRUJhallDRUNBRElBQW9BZ1JxSUFaQ0lJZzhBQUFnQUNBQUtBSVFJZ05CQVdvMkFoQWdBeUFBS0FJRWFpQUdRaWlJUEFBQUlBQWdBQ2dDRUNJRFFRRnFOZ0lRSUFNZ0FDZ0NCR29nQmtJd2lEd0FBQ0FBSUFBb0FoQWlBMEVCYWpZQ0VDQURJQUFvQWdScUlBWkNPSWc4QUFBZ0FrRkFhaUVDSUFWQndBQWdCR3V0aUNFRkN5QUFJQVUzQTdndElBQWdBallDd0MwZ0FRUkFBa0FnQWtFNVRnUkFJQUFnQUNnQ0VDSUJRUUZxTmdJUUlBRWdBQ2dDQkdvZ0JUd0FBQ0FBSUFBb0FoQWlBVUVCYWpZQ0VDQUJJQUFvQWdScUlBVkNDSWc4QUFBZ0FDQUFLQUlRSWdGQkFXbzJBaEFnQVNBQUtBSUVhaUFGUWhDSVBBQUFJQUFnQUNnQ0VDSUJRUUZxTmdJUUlBRWdBQ2dDQkdvZ0JVSVlpRHdBQUNBQUlBQW9BaEFpQVVFQmFqWUNFQ0FCSUFBb0FnUnFJQVZDSUlnOEFBQWdBQ0FBS0FJUUlnRkJBV28yQWhBZ0FTQUFLQUlFYWlBRlFpaUlQQUFBSUFBZ0FDZ0NFQ0lCUVFGcU5nSVFJQUVnQUNnQ0JHb2dCVUl3aUR3QUFDQUFJQUFvQWhBaUFVRUJhallDRUNBQklBQW9BZ1JxSUFWQ09JZzhBQUFNQVFzZ0FrRVpUZ1JBSUFBZ0FDZ0NFQ0lCUVFGcU5nSVFJQUVnQUNnQ0JHb2dCVHdBQUNBQUlBQW9BaEFpQVVFQmFqWUNFQ0FCSUFBb0FnUnFJQVZDQ0lnOEFBQWdBQ0FBS0FJUUlnRkJBV28yQWhBZ0FTQUFLQUlFYWlBRlFoQ0lQQUFBSUFBZ0FDZ0NFQ0lCUVFGcU5nSVFJQUVnQUNnQ0JHb2dCVUlZaUR3QUFDQUFJQUFwQTdndFFpQ0lJZ1UzQTdndElBQWdBQ2dDd0MxQklHc2lBallDd0MwTElBSkJDVTRFUUNBQUlBQW9BaEFpQVVFQmFqWUNFQ0FCSUFBb0FnUnFJQVU4QUFBZ0FDQUFLQUlRSWdGQkFXbzJBaEFnQVNBQUtBSUVhaUFGUWdpSVBBQUFJQUFnQUNrRHVDMUNFSWdpQlRjRHVDMGdBQ0FBS0FMQUxVRVFheUlDTmdMQUxRc2dBa0VCU0EwQUlBQWdBQ2dDRUNJQlFRRnFOZ0lRSUFFZ0FDZ0NCR29nQlR3QUFBc2dBRUVBTmdMQUxTQUFRZ0EzQTdndEN3czBBQ0FCSUFBb0FnQWdBaEFYSWdGRkJFQWdBRUVBTmdJd0R3c2dBQ0FBS0FJd0lBRWdBcTFCckprQktBSUFFUVFBTmdJd0M2c0JBUUYvSXdCQkVHc2lBU1FBSUFFZ0FEWUNEQ0FCS0FJTUtBSUlCRUFnQVNnQ0RDZ0NDQkFhSUFFb0FneEJBRFlDQ0FzQ1FDQUJLQUlNS0FJRVJRMEFJQUVvQWd3b0FnUW9BZ0JCQVhGRkRRQWdBU2dDRENnQ0JDZ0NFRUYrUncwQUlBRW9BZ3dvQWdRaUFDQUFLQUlBUVg1eE5nSUFJQUVvQWd3b0FnUW9BZ0JGQkVBZ0FTZ0NEQ2dDQkJBM0lBRW9BZ3hCQURZQ0JBc0xJQUVvQWd4QkFEb0FEQ0FCUVJCcUpBQUw4UU1CQVg4akFFSFFBR3NpQ0NRQUlBZ2dBRFlDU0NBSUlBRTNBMEFnQ0NBQ053TTRJQWdnQXpZQ05DQUlJQVE2QURNZ0NDQUZOZ0lzSUFnZ0JqY0RJQ0FJSUFjMkFod0NRQUpBQWtBZ0NDZ0NTRVVOQUNBSUtRTkFJQWdwQTBBZ0NDa0RPSHhXRFFBZ0NDZ0NMQTBCSUFncEF5QlFEUUVMSUFnb0FoeEJFa0VBRUJRZ0NFRUFOZ0pNREFFTElBaEJnQUVRR1NJQU5nSVlJQUJGQkVBZ0NDZ0NIRUVPUVFBUUZDQUlRUUEyQWt3TUFRc2dDQ2dDR0NBSUtRTkFOd01BSUFnb0FoZ2dDQ2tEUUNBSUtRTTRmRGNEQ0NBSUtBSVlRU2hxRURzZ0NDZ0NHQ0FJTFFBek9nQmdJQWdvQWhnZ0NDZ0NMRFlDRUNBSUtBSVlJQWdwQXlBM0F4Z2pBRUVRYXlJQUlBZ29BaGhCNUFCcU5nSU1JQUFvQWd4QkFEWUNBQ0FBS0FJTVFRQTJBZ1FnQUNnQ0RFRUFOZ0lJSXdCQkVHc2lBQ0FJS0FKSU5nSU1JQUFvQWd3cEF4aEMvNEVCZ3lFQklBaEJmellDQ0NBSVFRYzJBZ1FnQ0VFT05nSUFRUkFnQ0JBMElBR0VJUUVnQ0NnQ0dDQUJOd053SUFnb0FoZ2dDQ2dDR0NrRGNFTEFBSU5DQUZJNkFIZ2dDQ2dDTkFSQUlBZ29BaGhCS0dvZ0NDZ0NOQ0FJS0FJY0VJVUJRUUJJQkVBZ0NDZ0NHQkFWSUFoQkFEWUNUQXdDQ3dzZ0NDQUlLQUpJUVFFZ0NDZ0NHQ0FJS0FJY0VJSUJOZ0pNQ3lBSUtBSk1JUUFnQ0VIUUFHb2tBQ0FBQzlNRUFRSi9Jd0JCTUdzaUF5UUFJQU1nQURZQ0pDQURJQUUzQXhnZ0F5QUNOZ0lVQWtBZ0F5Z0NKQ2dDUUNBREtRTVlwMEVFZEdvb0FnQkZCRUFnQXlnQ0ZFRVVRUUFRRkNBRFFnQTNBeWdNQVFzZ0F5QURLQUlrS0FKQUlBTXBBeGluUVFSMGFpZ0NBQ2tEU0RjRENDQURLQUlrS0FJQUlBTXBBd2hCQUJBb1FRQklCRUFnQXlnQ0ZDQURLQUlrS0FJQUVCZ2dBMElBTndNb0RBRUxJQU1vQWlRb0FnQWhBaUFES0FJVUlRUWpBRUV3YXlJQUpBQWdBQ0FDTmdJb0lBQkJnQUk3QVNZZ0FDQUVOZ0lnSUFBZ0FDOEJKa0dBQW5GQkFFYzZBQnNnQUVFZVFTNGdBQzBBRzBFQmNSczJBaHdDUUNBQUtBSW9RUnBCSENBQUxRQWJRUUZ4RzZ4QkFSQW9RUUJJQkVBZ0FDZ0NJQ0FBS0FJb0VCZ2dBRUYvTmdJc0RBRUxJQUFnQUNnQ0tFRUVRUVlnQUMwQUcwRUJjUnVzSUFCQkRtb2dBQ2dDSUJCQklnSTJBZ2dnQWtVRVFDQUFRWDgyQWl3TUFRc2dBRUVBTmdJVUEwQWdBQ2dDRkVFQ1FRTWdBQzBBRzBFQmNSdElCRUFnQUNBQUtBSUlFQnRCLy84RGNTQUFLQUljYWpZQ0hDQUFJQUFvQWhSQkFXbzJBaFFNQVFzTElBQW9BZ2dRUjBFQmNVVUVRQ0FBS0FJZ1FSUkJBQkFVSUFBb0FnZ1FGaUFBUVg4MkFpd01BUXNnQUNnQ0NCQVdJQUFnQUNnQ0hEWUNMQXNnQUNnQ0xDRUNJQUJCTUdva0FDQURJQUlpQURZQ0JDQUFRUUJJQkVBZ0EwSUFOd01vREFFTElBTXBBd2dnQXlnQ0JLMThRdi8vLy8vLy8vLy8vd0JXQkVBZ0F5Z0NGRUVFUVJZUUZDQURRZ0EzQXlnTUFRc2dBeUFES1FNSUlBTW9BZ1N0ZkRjREtBc2dBeWtES0NFQklBTkJNR29rQUNBQkMyMEJBWDhqQUVFZ2F5SUVKQUFnQkNBQU5nSVlJQVFnQVRZQ0ZDQUVJQUkyQWhBZ0JDQUROZ0lNQWtBZ0JDZ0NHRVVFUUNBRVFRQTJBaHdNQVFzZ0JDQUVLQUlVSUFRb0FoQWdCQ2dDRENBRUtBSVlRUWhxRUlJQk5nSWNDeUFFS0FJY0lRQWdCRUVnYWlRQUlBQUxWUUVCZnlNQVFSQnJJZ0VrQUNBQklBQTJBZ3dDUUFKQUlBRW9BZ3dvQWlSQkFVWU5BQ0FCS0FJTUtBSWtRUUpHRFFBTUFRc2dBU2dDREVFQVFnQkJDaEFmR2lBQktBSU1RUUEyQWlRTElBRkJFR29rQUF2L0FnRUJmeU1BUVRCcklnVWtBQ0FGSUFBMkFpZ2dCU0FCTmdJa0lBVWdBallDSUNBRklBTTZBQjhnQlNBRU5nSVlBa0FDUUNBRktBSWdEUUFnQlMwQUgwRUJjUTBBSUFWQkFEWUNMQXdCQ3lBRklBVW9BaUFnQlMwQUgwRUJjV29RR1RZQ0ZDQUZLQUlVUlFSQUlBVW9BaGhCRGtFQUVCUWdCVUVBTmdJc0RBRUxBa0FnQlNnQ0tBUkFJQVVnQlNnQ0tDQUZLQUlnclJBY05nSVFJQVVvQWhCRkJFQWdCU2dDR0VFT1FRQVFGQ0FGS0FJVUVCVWdCVUVBTmdJc0RBTUxJQVVvQWhRZ0JTZ0NFQ0FGS0FJZ0VCY2FEQUVMSUFVb0FpUWdCU2dDRkNBRktBSWdyU0FGS0FJWUVHWkJBRWdFUUNBRktBSVVFQlVnQlVFQU5nSXNEQUlMQ3lBRkxRQWZRUUZ4QkVBZ0JTZ0NGQ0FGS0FJZ2FrRUFPZ0FBSUFVZ0JTZ0NGRFlDREFOQUlBVW9BZ3dnQlNnQ0ZDQUZLQUlnYWtrRVFDQUZLQUlNTFFBQVJRUkFJQVVvQWd4QklEb0FBQXNnQlNBRktBSU1RUUZxTmdJTURBRUxDd3NnQlNBRktBSVVOZ0lzQ3lBRktBSXNJUUFnQlVFd2FpUUFJQUFMd2dFQkFYOGpBRUV3YXlJRUpBQWdCQ0FBTmdJb0lBUWdBVFlDSkNBRUlBSTNBeGdnQkNBRE5nSVVBa0FnQkNrREdFTC8vLy8vLy8vLy8vOEFWZ1JBSUFRb0FoUkJGRUVBRUJRZ0JFRi9OZ0lzREFFTElBUWdCQ2dDS0NBRUtBSWtJQVFwQXhnUUt5SUNOd01JSUFKQ0FGTUVRQ0FFS0FJVUlBUW9BaWdRR0NBRVFYODJBaXdNQVFzZ0JDa0RDQ0FFS1FNWVV3UkFJQVFvQWhSQkVVRUFFQlFnQkVGL05nSXNEQUVMSUFSQkFEWUNMQXNnQkNnQ0xDRUFJQVJCTUdva0FDQUFDM2NCQVg4akFFRVFheUlDSUFBMkFnZ2dBaUFCTmdJRUFrQUNRQUpBSUFJb0FnZ3BBeWhDLy8vLy93OWFEUUFnQWlnQ0NDa0RJRUwvLy8vL0Qxb05BQ0FDS0FJRVFZQUVjVVVOQVNBQ0tBSUlLUU5JUXYvLy8vOFBWQTBCQ3lBQ1FRRTZBQThNQVFzZ0FrRUFPZ0FQQ3lBQ0xRQVBRUUZ4Qy80QkFRRi9Jd0JCSUdzaUJTUUFJQVVnQURZQ0dDQUZJQUUyQWhRZ0JTQUNPd0VTSUFWQkFEc0JFQ0FGSUFNMkFnd2dCU0FFTmdJSUlBVkJBRFlDQkFKQUEwQWdCU2dDR0FSQUFrQWdCU2dDR0M4QkNDQUZMd0VTUncwQUlBVW9BaGdvQWdRZ0JTZ0NESEZCZ0FaeFJRMEFJQVVvQWdRZ0JTOEJFRWdFUUNBRklBVW9BZ1JCQVdvMkFnUU1BUXNnQlNnQ0ZBUkFJQVVvQWhRZ0JTZ0NHQzhCQ2pzQkFBc2dCU2dDR0M4QkNnUkFJQVVnQlNnQ0dDZ0NERFlDSEF3RUN5QUZRYUFWTmdJY0RBTUxJQVVnQlNnQ0dDZ0NBRFlDR0F3QkN3c2dCU2dDQ0VFSlFRQVFGQ0FGUVFBMkFod0xJQVVvQWh3aEFDQUZRU0JxSkFBZ0FBdW1BUUVCZnlNQVFSQnJJZ0lrQUNBQ0lBQTJBZ2dnQWlBQk5nSUVBa0FnQWlnQ0NDMEFLRUVCY1FSQUlBSkJmellDREF3QkN5QUNLQUlJS0FJQUJFQWdBaWdDQ0NnQ0FDQUNLQUlFRUdsQkFFZ0VRQ0FDS0FJSVFReHFJQUlvQWdnb0FnQVFHQ0FDUVg4MkFnd01BZ3NMSUFJb0FnZ2dBa0VFYWtJRVFSTVFIMElBVXdSQUlBSkJmellDREF3QkN5QUNRUUEyQWd3TElBSW9BZ3doQUNBQ1FSQnFKQUFnQUF1TkNBSUJmd0YrSXdCQmtBRnJJZ01rQUNBRElBQTJBb1FCSUFNZ0FUWUNnQUVnQXlBQ05nSjhJQU1RVUFKQUlBTW9Bb0FCS1FNSVFnQlNCRUFnQXlBREtBS0FBU2dDQUNnQ0FDa0RTRGNEWUNBRElBTW9Bb0FCS0FJQUtBSUFLUU5JTndOb0RBRUxJQU5DQURjRFlDQURRZ0EzQTJnTElBTkNBRGNEY0FKQUEwQWdBeWtEY0NBREtBS0FBU2tEQ0ZRRVFDQURLQUtBQVNnQ0FDQURLUU53cDBFRWRHb29BZ0FwQTBnZ0F5a0RhRlFFUUNBRElBTW9Bb0FCS0FJQUlBTXBBM0NuUVFSMGFpZ0NBQ2tEU0RjRGFBc2dBeWtEYUNBREtBS0FBU2tESUZZRVFDQURLQUo4UVJOQkFCQVVJQU5DZnpjRGlBRU1Bd3NnQXlBREtBS0FBU2dDQUNBREtRTndwMEVFZEdvb0FnQXBBMGdnQXlnQ2dBRW9BZ0FnQXlrRGNLZEJCSFJxS0FJQUtRTWdmQ0FES0FLQUFTZ0NBQ0FES1FOd3AwRUVkR29vQWdBb0FqQVFUa0gvL3dOeHJYeENIbnczQTFnZ0F5a0RXQ0FES1FOZ1ZnUkFJQU1nQXlrRFdEY0RZQXNnQXlrRFlDQURLQUtBQVNrRElGWUVRQ0FES0FKOFFSTkJBQkFVSUFOQ2Z6Y0RpQUVNQXdzZ0F5Z0NoQUVvQWdBZ0F5Z0NnQUVvQWdBZ0F5a0RjS2RCQkhScUtBSUFLUU5JUVFBUUtFRUFTQVJBSUFNb0Fud2dBeWdDaEFFb0FnQVFHQ0FEUW44M0E0Z0JEQU1MSUFNZ0F5Z0NoQUVvQWdCQkFFRUJJQU1vQW53UWpRRkNmMUVFUUNBREVFOGdBMEovTndPSUFRd0RDd0ovSUFNb0FvQUJLQUlBSUFNcEEzQ25RUVIwYWlnQ0FDRUJJd0JCRUdzaUFDUUFJQUFnQVRZQ0NDQUFJQU0yQWdRQ1FBSkFBa0FnQUNnQ0NDOEJDaUFBS0FJRUx3RUtTQTBBSUFBb0FnZ29BaEFnQUNnQ0JDZ0NFRWNOQUNBQUtBSUlLQUlVSUFBb0FnUW9BaFJIRFFBZ0FDZ0NDQ2dDTUNBQUtBSUVLQUl3RUljQkRRRUxJQUJCZnpZQ0RBd0JDd0pBQWtBZ0FDZ0NDQ2dDR0NBQUtBSUVLQUlZUncwQUlBQW9BZ2dwQXlBZ0FDZ0NCQ2tESUZJTkFDQUFLQUlJS1FNb0lBQW9BZ1FwQXloUkRRRUxBa0FDUUNBQUtBSUVMd0VNUVFoeFJRMEFJQUFvQWdRb0FoZ05BQ0FBS0FJRUtRTWdRZ0JTRFFBZ0FDZ0NCQ2tES0ZBTkFRc2dBRUYvTmdJTURBSUxDeUFBUVFBMkFnd0xJQUFvQWd3aEFTQUFRUkJxSkFBZ0FRc0VRQ0FES0FKOFFSVkJBQkFVSUFNUVR5QURRbjgzQTRnQkRBTUZJQU1vQW9BQktBSUFJQU1wQTNDblFRUjBhaWdDQUNnQ05DQURLQUkwRUpZQklRQWdBeWdDZ0FFb0FnQWdBeWtEY0tkQkJIUnFLQUlBSUFBMkFqUWdBeWdDZ0FFb0FnQWdBeWtEY0tkQkJIUnFLQUlBUVFFNkFBUWdBMEVBTmdJMElBTVFUeUFESUFNcEEzQkNBWHczQTNBTUFnc0FDd3NnQXdKK0lBTXBBMkFnQXlrRGFIMUMvLy8vLy8vLy8vLy9BRlFFUUNBREtRTmdJQU1wQTJoOURBRUxRdi8vLy8vLy8vLy8vd0FMTndPSUFRc2dBeWtEaUFFaEJDQURRWkFCYWlRQUlBUUwxQVFCQVg4akFFRWdheUlESkFBZ0F5QUFOZ0lZSUFNZ0FUWUNGQ0FESUFJMkFoQWdBeWdDRUNFQkl3QkJFR3NpQUNRQUlBQWdBVFlDQ0NBQVFkZ0FFQmsyQWdRQ1FDQUFLQUlFUlFSQUlBQW9BZ2hCRGtFQUVCUWdBRUVBTmdJTURBRUxJQUFvQWdnaEFpTUFRUkJySWdFa0FDQUJJQUkyQWdnZ0FVRVlFQmtpQWpZQ0JBSkFJQUpGQkVBZ0FTZ0NDRUVPUVFBUUZDQUJRUUEyQWd3TUFRc2dBU2dDQkVFQU5nSUFJQUVvQWdSQ0FEY0RDQ0FCS0FJRVFRQTJBaEFnQVNBQktBSUVOZ0lNQ3lBQktBSU1JUUlnQVVFUWFpUUFJQUFvQWdRZ0FqWUNVQ0FDUlFSQUlBQW9BZ1FRRlNBQVFRQTJBZ3dNQVFzZ0FDZ0NCRUVBTmdJQUlBQW9BZ1JCQURZQ0JDTUFRUkJySWdFZ0FDZ0NCRUVJYWpZQ0RDQUJLQUlNUVFBMkFnQWdBU2dDREVFQU5nSUVJQUVvQWd4QkFEWUNDQ0FBS0FJRVFRQTJBaGdnQUNnQ0JFRUFOZ0lVSUFBb0FnUkJBRFlDSENBQUtBSUVRUUEyQWlRZ0FDZ0NCRUVBTmdJZ0lBQW9BZ1JCQURvQUtDQUFLQUlFUWdBM0F6Z2dBQ2dDQkVJQU53TXdJQUFvQWdSQkFEWUNRQ0FBS0FJRVFRQTJBa2dnQUNnQ0JFRUFOZ0pFSUFBb0FnUkJBRFlDVENBQUtBSUVRUUEyQWxRZ0FDQUFLQUlFTmdJTUN5QUFLQUlNSVFFZ0FFRVFhaVFBSUFNZ0FTSUFOZ0lNQWtBZ0FFVUVRQ0FEUVFBMkFod01BUXNnQXlnQ0RDQURLQUlZTmdJQUlBTW9BZ3dnQXlnQ0ZEWUNCQ0FES0FJVVFSQnhCRUFnQXlnQ0RDSUFJQUFvQWhSQkFuSTJBaFFnQXlnQ0RDSUFJQUFvQWhoQkFuSTJBaGdMSUFNZ0F5Z0NERFlDSEFzZ0F5Z0NIQ0VBSUFOQklHb2tBQ0FBQzlVQkFRRi9Jd0JCSUdzaUJDUUFJQVFnQURZQ0dDQUVJQUUzQXhBZ0JDQUNOZ0lNSUFRZ0F6WUNDQUpBQWtBZ0JDa0RFRUwvLy8vLy8vLy8vLzhBVndSQUlBUXBBeEJDZ0lDQWdJQ0FnSUNBZjFrTkFRc2dCQ2dDQ0VFRVFUMFFGQ0FFUVg4MkFod01BUXNDZnlBRUtRTVFJUUVnQkNnQ0RDRUFJQVFvQWhnaUFpZ0NURUYvVEFSQUlBSWdBU0FBRUtFQkRBRUxJQUlnQVNBQUVLRUJDMEVBU0FSQUlBUW9BZ2hCQkVING5RRW9BZ0FRRkNBRVFYODJBaHdNQVFzZ0JFRUFOZ0ljQ3lBRUtBSWNJUUFnQkVFZ2FpUUFJQUFMSkFCQkFDQUFFQVVpQUNBQVFSdEdHeUlBQkg5QitKMEJJQUEyQWdCQkFBVkJBQXNhQzNBQkFYOGpBRUVRYXlJREpBQWdBd0ovSUFGQndBQnhSUVJBUVFBZ0FVR0FnSVFDY1VHQWdJUUNSdzBCR2dzZ0F5QUNRUVJxTmdJTUlBSW9BZ0FMTmdJQUlBQWdBVUdBZ0FKeUlBTVFFQ0lBUVlGZ1R3UkFRZmlkQVVFQUlBQnJOZ0lBUVg4aEFBc2dBMEVRYWlRQUlBQUxNd0VCZndKL0lBQVFCeUlCUVdGR0JFQWdBQkFSSVFFTElBRkJnV0JQQ3dSL1FmaWRBVUVBSUFGck5nSUFRWDhGSUFFTEMya0JBbjhDUUNBQUtBSVVJQUFvQWh4TkRRQWdBRUVBUVFBZ0FDZ0NKQkVBQUJvZ0FDZ0NGQTBBUVg4UEN5QUFLQUlFSWdFZ0FDZ0NDQ0lDU1FSQUlBQWdBU0FDYTZ4QkFTQUFLQUlvRVJBQUdnc2dBRUVBTmdJY0lBQkNBRGNERUNBQVFnQTNBZ1JCQUF2YUF3RUdmeU1BUVJCcklnVWtBQ0FGSUFJMkFnd2pBRUdnQVdzaUJDUUFJQVJCQ0dwQm9Ja0JRWkFCRUJjYUlBUWdBRFlDTkNBRUlBQTJBaHdnQkVGK0lBQnJJZ05CLy8vLy93Y2dBMEgvLy8vL0Iwa2JJZ1kyQWpnZ0JDQUFJQVpxSWdBMkFpUWdCQ0FBTmdJWUlBUkJDR29oQUNNQVFkQUJheUlESkFBZ0F5QUNOZ0xNQVNBRFFhQUJha0VBUVNnUUx5QURJQU1vQXN3Qk5nTElBUUpBUVFBZ0FTQURRY2dCYWlBRFFkQUFhaUFEUWFBQmFoQnlRUUJJRFFBZ0FDZ0NURUVBVGlFSElBQW9BZ0FoQWlBQUxBQktRUUJNQkVBZ0FDQUNRVjl4TmdJQUN5QUNRU0J4SVFnQ2Z5QUFLQUl3QkVBZ0FDQUJJQU5CeUFGcUlBTkIwQUJxSUFOQm9BRnFFSElNQVFzZ0FFSFFBRFlDTUNBQUlBTkIwQUJxTmdJUUlBQWdBellDSENBQUlBTTJBaFFnQUNnQ0xDRUNJQUFnQXpZQ0xDQUFJQUVnQTBISUFXb2dBMEhRQUdvZ0EwR2dBV29RY2lBQ1JRMEFHaUFBUVFCQkFDQUFLQUlrRVFBQUdpQUFRUUEyQWpBZ0FDQUNOZ0lzSUFCQkFEWUNIQ0FBUVFBMkFoQWdBQ2dDRkJvZ0FFRUFOZ0lVUVFBTEdpQUFJQUFvQWdBZ0NISTJBZ0FnQjBVTkFBc2dBMEhRQVdva0FDQUdCRUFnQkNnQ0hDSUFJQUFnQkNnQ0dFWnJRUUE2QUFBTElBUkJvQUZxSkFBZ0JVRVFhaVFBQzR3U0FnOS9BWDRqQUVIUUFHc2lCU1FBSUFVZ0FUWUNUQ0FGUVRkcUlSTWdCVUU0YWlFUVFRQWhBUU5BQWtBZ0RVRUFTQTBBUWYvLy8vOEhJQTFySUFGSUJFQkIrSjBCUVQwMkFnQkJmeUVOREFFTElBRWdEV29oRFFzZ0JTZ0NUQ0lISVFFQ1FBSkFBa0FDUUFKQUFrQUNRQUpBSUFVQ2Z3SkFJQWN0QUFBaUJnUkFBMEFDUUFKQUlBWkIvd0Z4SWdaRkJFQWdBU0VHREFFTElBWkJKVWNOQVNBQklRWURRQ0FCTFFBQlFTVkhEUUVnQlNBQlFRSnFJZ2cyQWt3Z0JrRUJhaUVHSUFFdEFBSWhEaUFJSVFFZ0RrRWxSZzBBQ3dzZ0JpQUhheUVCSUFBRVFDQUFJQWNnQVJBaEN5QUJEUTBnQlNnQ1RDRUJJQVVvQWt3c0FBRkJNR3RCQ2s4TkF5QUJMUUFDUVNSSERRTWdBU3dBQVVFd2F5RVBRUUVoRVNBQlFRTnFEQVFMSUFVZ0FVRUJhaUlJTmdKTUlBRXRBQUVoQmlBSUlRRU1BQXNBQ3lBTklRc2dBQTBJSUJGRkRRSkJBU0VCQTBBZ0JDQUJRUUowYWlnQ0FDSUFCRUFnQXlBQlFRTjBhaUFBSUFJUXFRRkJBU0VMSUFGQkFXb2lBVUVLUncwQkRBb0xDMEVCSVFzZ0FVRUtUdzBJQTBBZ0JDQUJRUUowYWlnQ0FBMElJQUZCQVdvaUFVRUtSdzBBQ3d3SUMwRi9JUThnQVVFQmFnc2lBVFlDVEVFQUlRZ0NRQ0FCTEFBQUlneEJJR3NpQmtFZlN3MEFRUUVnQm5RaUJrR0owUVJ4UlEwQUEwQUNRQ0FGSUFGQkFXb2lDRFlDVENBQkxBQUJJZ3hCSUdzaUFVRWdUdzBBUVFFZ0FYUWlBVUdKMFFSeFJRMEFJQUVnQm5JaEJpQUlJUUVNQVFzTElBZ2hBU0FHSVFnTEFrQWdERUVxUmdSQUlBVUNmd0pBSUFFc0FBRkJNR3RCQ2s4TkFDQUZLQUpNSWdFdEFBSkJKRWNOQUNBQkxBQUJRUUowSUFScVFjQUJhMEVLTmdJQUlBRXNBQUZCQTNRZ0EycEJnQU5yS0FJQUlRcEJBU0VSSUFGQkEyb01BUXNnRVEwSVFRQWhFVUVBSVFvZ0FBUkFJQUlnQWlnQ0FDSUJRUVJxTmdJQUlBRW9BZ0FoQ2dzZ0JTZ0NURUVCYWdzaUFUWUNUQ0FLUVg5S0RRRkJBQ0FLYXlFS0lBaEJnTUFBY2lFSURBRUxJQVZCekFCcUVLZ0JJZ3BCQUVnTkJpQUZLQUpNSVFFTFFYOGhDUUpBSUFFdEFBQkJMa2NOQUNBQkxRQUJRU3BHQkVBQ1FDQUJMQUFDUVRCclFRcFBEUUFnQlNnQ1RDSUJMUUFEUVNSSERRQWdBU3dBQWtFQ2RDQUVha0hBQVd0QkNqWUNBQ0FCTEFBQ1FRTjBJQU5xUVlBRGF5Z0NBQ0VKSUFVZ0FVRUVhaUlCTmdKTURBSUxJQkVOQnlBQUJIOGdBaUFDS0FJQUlnRkJCR28yQWdBZ0FTZ0NBQVZCQUFzaENTQUZJQVVvQWt4QkFtb2lBVFlDVEF3QkN5QUZJQUZCQVdvMkFrd2dCVUhNQUdvUXFBRWhDU0FGS0FKTUlRRUxRUUFoQmdOQUlBWWhFa0YvSVFzZ0FTd0FBRUhCQUd0Qk9Vc05CeUFGSUFGQkFXb2lERFlDVENBQkxBQUFJUVlnRENFQklBWWdFa0U2YkdwQi80UUJhaTBBQUNJR1FRRnJRUWhKRFFBTElBWkJFMFlOQWlBR1JRMEdJQTlCQUU0RVFDQUVJQTlCQW5ScUlBWTJBZ0FnQlNBRElBOUJBM1JxS1FNQU53TkFEQVFMSUFBTkFRdEJBQ0VMREFVTElBVkJRR3NnQmlBQ0VLa0JJQVVvQWt3aERBd0NDeUFQUVg5S0RRTUxRUUFoQVNBQVJRMEVDeUFJUWYvL2UzRWlEaUFJSUFoQmdNQUFjUnNoQmtFQUlRdEJwQWdoRHlBUUlRZ0NRQUpBQWtBQ2Z3SkFBa0FDUUFKQUFuOENRQUpBQWtBQ1FBSkFBa0FDUUNBTVFRRnJMQUFBSWdGQlgzRWdBU0FCUVE5eFFRTkdHeUFCSUJJYklnRkIyQUJyRGlFRUVoSVNFaElTRWhJT0VnOEdEZzRPRWdZU0VoSVNBZ1VERWhJSkVnRVNFZ1FBQ3dKQUlBRkJ3UUJyRGdjT0Vnc1NEZzRPQUFzZ0FVSFRBRVlOQ1F3UkN5QUZLUU5BSVJSQnBBZ01CUXRCQUNFQkFrQUNRQUpBQWtBQ1FBSkFBa0FnRWtIL0FYRU9DQUFCQWdNRUZ3VUdGd3NnQlNnQ1FDQU5OZ0lBREJZTElBVW9Ba0FnRFRZQ0FBd1ZDeUFGS0FKQUlBMnNOd01BREJRTElBVW9Ba0FnRFRzQkFBd1RDeUFGS0FKQUlBMDZBQUFNRWdzZ0JTZ0NRQ0FOTmdJQURCRUxJQVVvQWtBZ0RhdzNBd0FNRUFzZ0NVRUlJQWxCQ0VzYklRa2dCa0VJY2lFR1FmZ0FJUUVMSUJBaEJ5QUJRU0J4SVE0Z0JTa0RRQ0lVVUVVRVFBTkFJQWRCQVdzaUJ5QVVwMEVQY1VHUWlRRnFMUUFBSUE1eU9nQUFJQlJDRDFZaERDQVVRZ1NJSVJRZ0RBMEFDd3NnQlNrRFFGQU5BeUFHUVFoeFJRMERJQUZCQkhaQnBBaHFJUTlCQWlFTERBTUxJQkFoQVNBRktRTkFJaFJRUlFSQUEwQWdBVUVCYXlJQklCU25RUWR4UVRCeU9nQUFJQlJDQjFZaEJ5QVVRZ09JSVJRZ0J3MEFDd3NnQVNFSElBWkJDSEZGRFFJZ0NTQVFJQWRySWdGQkFXb2dBU0FKU0JzaENRd0NDeUFGS1FOQUloUkNmMWNFUUNBRlFnQWdGSDBpRkRjRFFFRUJJUXRCcEFnTUFRc2dCa0dBRUhFRVFFRUJJUXRCcFFnTUFRdEJwZ2hCcEFnZ0JrRUJjU0lMR3dzaER5QVVJQkFRUXlFSEN5QUdRZi8vZTNFZ0JpQUpRWDlLR3lFR0FrQWdCU2tEUUNJVVFnQlNEUUFnQ1EwQVFRQWhDU0FRSVFjTUNnc2dDU0FVVUNBUUlBZHJhaUlCSUFFZ0NVZ2JJUWtNQ1FzZ0JTZ0NRQ0lCUWVBU0lBRWJJZ2RCQUNBSkVLd0JJZ0VnQnlBSmFpQUJHeUVJSUE0aEJpQUJJQWRySUFrZ0FSc2hDUXdJQ3lBSkJFQWdCU2dDUUF3Q0MwRUFJUUVnQUVFZ0lBcEJBQ0FHRUNVTUFnc2dCVUVBTmdJTUlBVWdCU2tEUUQ0Q0NDQUZJQVZCQ0dvMkFrQkJmeUVKSUFWQkNHb0xJUWhCQUNFQkFrQURRQ0FJS0FJQUlnZEZEUUVDUUNBRlFRUnFJQWNRcXdFaUIwRUFTQ0lPRFFBZ0J5QUpJQUZyU3cwQUlBaEJCR29oQ0NBSklBRWdCMm9pQVVzTkFRd0NDd3RCZnlFTElBNE5CUXNnQUVFZ0lBb2dBU0FHRUNVZ0FVVUVRRUVBSVFFTUFRdEJBQ0VJSUFVb0FrQWhEQU5BSUF3b0FnQWlCMFVOQVNBRlFRUnFJQWNRcXdFaUJ5QUlhaUlJSUFGS0RRRWdBQ0FGUVFScUlBY1FJU0FNUVFScUlRd2dBU0FJU3cwQUN3c2dBRUVnSUFvZ0FTQUdRWURBQUhNUUpTQUtJQUVnQVNBS1NCc2hBUXdGQ3lBQUlBVXJBMEFnQ2lBSklBWWdBVUV6RVJrQUlRRU1CQXNnQlNBRktRTkFQQUEzUVFFaENTQVRJUWNnRGlFR0RBSUxRWDhoQ3dzZ0JVSFFBR29rQUNBTER3c2dBRUVnSUFzZ0NDQUhheUlPSUFrZ0NTQU9TQnNpREdvaUNDQUtJQWdnQ2tvYklnRWdDQ0FHRUNVZ0FDQVBJQXNRSVNBQVFUQWdBU0FJSUFaQmdJQUVjeEFsSUFCQk1DQU1JQTVCQUJBbElBQWdCeUFPRUNFZ0FFRWdJQUVnQ0NBR1FZREFBSE1RSlF3QUN3QUxrQUlCQTM4Q1FDQUJJQUlvQWhBaUJBUi9JQVFGUVFBaEJBSi9JQUlnQWkwQVNpSURRUUZySUFOeU9nQktJQUlvQWdBaUEwRUljUVJBSUFJZ0EwRWdjallDQUVGL0RBRUxJQUpDQURjQ0JDQUNJQUlvQWl3aUF6WUNIQ0FDSUFNMkFoUWdBaUFESUFJb0FqQnFOZ0lRUVFBTERRRWdBaWdDRUFzZ0FpZ0NGQ0lGYTBzRVFDQUNJQUFnQVNBQ0tBSWtFUUFBRHdzQ2Z5QUNMQUJMUVg5S0JFQWdBU0VFQTBBZ0FTQUVJZ05GRFFJYUlBQWdBMEVCYXlJRWFpMEFBRUVLUncwQUN5QUNJQUFnQXlBQ0tBSWtFUUFBSWdRZ0Ewa05BaUFBSUFOcUlRQWdBaWdDRkNFRklBRWdBMnNNQVFzZ0FRc2hCQ0FGSUFBZ0JCQVhHaUFDSUFJb0FoUWdCR28yQWhRZ0FTRUVDeUFFQzBnQ0FYOEJmaU1BUVJCcklnTWtBQ0FESUFBMkFnd2dBeUFCTmdJSUlBTWdBallDQkNBREtBSU1JQU1vQWdnZ0F5Z0NCQ0FES0FJTVFRaHFFRlVoQkNBRFFSQnFKQUFnQkF0M0FRRi9Jd0JCRUdzaUFTQUFOZ0lJSUFGQ2hTbzNBd0FDUUNBQktBSUlSUVJBSUFGQkFEWUNEQXdCQ3dOQUlBRW9BZ2d0QUFBRVFDQUJJQUVvQWdndEFBQ3RJQUVwQXdCQ0lYNThRdi8vLy84UGd6Y0RBQ0FCSUFFb0FnaEJBV28yQWdnTUFRc0xJQUVnQVNrREFENENEQXNnQVNnQ0RBdUhCUUVCZnlNQVFUQnJJZ1VrQUNBRklBQTJBaWdnQlNBQk5nSWtJQVVnQWpjREdDQUZJQU0yQWhRZ0JTQUVOZ0lRQWtBQ1FBSkFJQVVvQWloRkRRQWdCU2dDSkVVTkFDQUZLUU1ZUXYvLy8vLy8vLy8vL3dCWURRRUxJQVVvQWhCQkVrRUFFQlFnQlVFQU9nQXZEQUVMSUFVb0FpZ29BZ0JGQkVBZ0JTZ0NLRUdBQWlBRktBSVFFRmRCQVhGRkJFQWdCVUVBT2dBdkRBSUxDeUFGSUFVb0FpUVFkVFlDRENBRklBVW9BZ3dnQlNnQ0tDZ0NBSEEyQWdnZ0JTQUZLQUlvS0FJUUlBVW9BZ2hCQW5ScUtBSUFOZ0lFQTBBQ1FDQUZLQUlFUlEwQUFrQWdCU2dDQkNnQ0hDQUZLQUlNUncwQUlBVW9BaVFnQlNnQ0JDZ0NBQkJZRFFBQ1FBSkFJQVVvQWhSQkNIRUVRQ0FGS0FJRUtRTUlRbjlTRFFFTElBVW9BZ1FwQXhCQ2YxRU5BUXNnQlNnQ0VFRUtRUUFRRkNBRlFRQTZBQzhNQkFzTUFRc2dCU0FGS0FJRUtBSVlOZ0lFREFFTEN5QUZLQUlFUlFSQUlBVkJJQkFaSWdBMkFnUWdBRVVFUUNBRktBSVFRUTVCQUJBVUlBVkJBRG9BTHd3Q0N5QUZLQUlFSUFVb0FpUTJBZ0FnQlNnQ0JDQUZLQUlvS0FJUUlBVW9BZ2hCQW5ScUtBSUFOZ0lZSUFVb0FpZ29BaEFnQlNnQ0NFRUNkR29nQlNnQ0JEWUNBQ0FGS0FJRUlBVW9BZ3cyQWh3Z0JTZ0NCRUovTndNSUlBVW9BaWdpQUNBQUtRTUlRZ0Y4TndNSUFrQWdCU2dDS0NJQUtRTUl1aUFBS0FJQXVFUUFBQUFBQUFEb1A2SmtSUTBBSUFVb0FpZ29BZ0JCZ0lDQWdIaFBEUUFnQlNnQ0tDQUZLQUlvS0FJQVFRRjBJQVVvQWhBUVYwRUJjVVVFUUNBRlFRQTZBQzhNQXdzTEN5QUZLQUlVUVFoeEJFQWdCU2dDQkNBRktRTVlOd01JQ3lBRktBSUVJQVVwQXhnM0F4QWdCVUVCT2dBdkN5QUZMUUF2UVFGeElRQWdCVUV3YWlRQUlBQUwxZzhCRm44akFFRkFhaUlIUWdBM0F6QWdCMElBTndNNElBZENBRGNESUNBSFFnQTNBeWdDUUFKQUFrQUNRQUpBSUFJRVFDQUNRUU54SVFrZ0FrRUJhMEVEVHdSQUlBSkJmSEVoQmdOQUlBZEJJR29nQVNBSVFRRjBJZ3hxTHdFQVFRRjBhaUlLSUFvdkFRQkJBV283QVFBZ0IwRWdhaUFCSUF4QkFuSnFMd0VBUVFGMGFpSUtJQW92QVFCQkFXbzdBUUFnQjBFZ2FpQUJJQXhCQkhKcUx3RUFRUUYwYWlJS0lBb3ZBUUJCQVdvN0FRQWdCMEVnYWlBQklBeEJCbkpxTHdFQVFRRjBhaUlLSUFvdkFRQkJBV283QVFBZ0NFRUVhaUVJSUFaQkJHc2lCZzBBQ3dzZ0NRUkFBMEFnQjBFZ2FpQUJJQWhCQVhScUx3RUFRUUYwYWlJR0lBWXZBUUJCQVdvN0FRQWdDRUVCYWlFSUlBbEJBV3NpQ1EwQUN3c2dCQ2dDQUNFSVFROGhDeUFITHdFK0loRU5BZ3dCQ3lBRUtBSUFJUWdMUVE0aEMwRUFJUkVnQnk4QlBBMEFRUTBoQ3lBSEx3RTZEUUJCRENFTElBY3ZBVGdOQUVFTElRc2dCeThCTmcwQVFRb2hDeUFITHdFMERRQkJDU0VMSUFjdkFUSU5BRUVJSVFzZ0J5OEJNQTBBUVFjaEN5QUhMd0V1RFFCQkJpRUxJQWN2QVN3TkFFRUZJUXNnQnk4QktnMEFRUVFoQ3lBSEx3RW9EUUJCQXlFTElBY3ZBU1lOQUVFQ0lRc2dCeThCSkEwQUlBY3ZBU0pGQkVBZ0F5QURLQUlBSWdCQkJHbzJBZ0FnQUVIQUFqWUJBQ0FESUFNb0FnQWlBRUVFYWpZQ0FDQUFRY0FDTmdFQVFRRWhEUXdEQ3lBSVFRQkhJUTlCQVNFTFFRRWhDQXdCQ3lBTElBZ2dDQ0FMU3hzaEQwRUJJUTVCQVNFSUEwQWdCMEVnYWlBSVFRRjBhaThCQUEwQklBaEJBV29pQ0NBTFJ3MEFDeUFMSVFnTFFYOGhDU0FITHdFaUloQkJBa3NOQVVFRUlBY3ZBU1FpRWlBUVFRRjBhbXNpQmtFQVNBMEJJQVpCQVhRZ0J5OEJKaUlUYXlJR1FRQklEUUVnQmtFQmRDQUhMd0VvSWhScklnWkJBRWdOQVNBR1FRRjBJQWN2QVNvaUZXc2lCa0VBU0EwQklBWkJBWFFnQnk4QkxDSVdheUlHUVFCSURRRWdCa0VCZENBSEx3RXVJaGRySWdaQkFFZ05BU0FHUVFGMElBY3ZBVEFpR1dzaUJrRUFTQTBCSUFaQkFYUWdCeThCTWlJYWF5SUdRUUJJRFFFZ0JrRUJkQ0FITHdFMElodHJJZ1pCQUVnTkFTQUdRUUYwSUFjdkFUWWlEV3NpQmtFQVNBMEJJQVpCQVhRZ0J5OEJPQ0lZYXlJR1FRQklEUUVnQmtFQmRDQUhMd0U2SWd4cklnWkJBRWdOQVNBR1FRRjBJQWN2QVR3aUNtc2lCa0VBU0EwQklBWkJBWFFnRVdzaUJrRUFTQTBCSUFaQkFDQUFSU0FPY2hzTkFTQUlJQTlMSVJGQkFDRUpJQWRCQURzQkFpQUhJQkE3QVFRZ0J5QVFJQkpxSWdZN0FRWWdCeUFHSUJOcUlnWTdBUWdnQnlBR0lCUnFJZ1k3QVFvZ0J5QUdJQlZxSWdZN0FRd2dCeUFHSUJacUlnWTdBUTRnQnlBR0lCZHFJZ1k3QVJBZ0J5QUdJQmxxSWdZN0FSSWdCeUFHSUJwcUlnWTdBUlFnQnlBR0lCdHFJZ1k3QVJZZ0J5QUdJQTFxSWdZN0FSZ2dCeUFHSUJocUlnWTdBUm9nQnlBR0lBeHFJZ1k3QVJ3Z0J5QUdJQXBxT3dFZUFrQWdBa1VOQUNBQ1FRRkhCRUFnQWtGK2NTRUdBMEFnQVNBSlFRRjBhaThCQUNJS0JFQWdCeUFLUVFGMGFpSUtJQW92QVFBaUNrRUJhanNCQUNBRklBcEJBWFJxSUFrN0FRQUxJQUVnQ1VFQmNpSU1RUUYwYWk4QkFDSUtCRUFnQnlBS1FRRjBhaUlLSUFvdkFRQWlDa0VCYWpzQkFDQUZJQXBCQVhScUlBdzdBUUFMSUFsQkFtb2hDU0FHUVFKcklnWU5BQXNMSUFKQkFYRkZEUUFnQVNBSlFRRjBhaThCQUNJQ1JRMEFJQWNnQWtFQmRHb2lBaUFDTHdFQUlnSkJBV283QVFBZ0JTQUNRUUYwYWlBSk93RUFDeUFJSUE4Z0VSc2hEVUVVSVJCQkFDRVdJQVVpQ2lFWVFRQWhFZ0pBQWtBQ1FDQUFEZ0lDQUFFTFFRRWhDU0FOUVFsTERRTkJnUUloRUVIUThnQWhHRUdROGdBaENrRUJJUklNQVFzZ0FFRUNSaUVXUVFBaEVFSFE4d0FoR0VHUTh3QWhDaUFBUVFKSEJFQU1BUXRCQVNFSklBMUJDVXNOQWd0QkFTQU5kQ0lUUVFGcklSb2dBeWdDQUNFVVFRQWhGU0FOSVFaQkFDRVBRUUFoRGtGL0lRd0RRRUVCSUFaMElSRUNRQU5BSUFnZ0Qyc2hGd0ovUVFBZ0JTQVZRUUYwYWk4QkFDSUNRUUZxSUJCSkRRQWFJQUlnRUVrRVFFRUFJUUpCNEFBTUFRc2dDaUFDSUJCclFRRjBJZ0JxTHdFQUlRSWdBQ0FZYWkwQUFBc2hBQ0FPSUE5MklSdEJmeUFYZENFR0lCRWhDUU5BSUJRZ0JpQUphaUlKSUJ0cVFRSjBhaUlaSUFJN0FRSWdHU0FYT2dBQklCa2dBRG9BQUNBSkRRQUxRUUVnQ0VFQmEzUWhCZ05BSUFZaUFFRUJkaUVHSUFBZ0RuRU5BQXNnQjBFZ2FpQUlRUUYwYWlJQ0lBSXZBUUJCQVdzaUFqc0JBQ0FBUVFGcklBNXhJQUJxUVFBZ0FCc2hEaUFWUVFGcUlSVWdBa0gvL3dOeFJRUkFJQWdnQzBZTkFpQUJJQVVnRlVFQmRHb3ZBUUJCQVhScUx3RUFJUWdMSUFnZ0RVME5BQ0FPSUJweElnQWdERVlOQUF0QkFTQUlJQThnRFNBUEd5SVBheUlHZENFQ0lBZ2dDMGtFUUNBTElBOXJJUXdnQ0NFSkFrQURRQ0FDSUFkQklHb2dDVUVCZEdvdkFRQnJJZ0pCQVVnTkFTQUNRUUYwSVFJZ0JrRUJhaUlHSUE5cUlna2dDMGtOQUFzZ0RDRUdDMEVCSUFaMElRSUxRUUVoQ1NBU0lBSWdFMm9pRTBIVUJrdHhEUU1nRmlBVFFkQUVTM0VOQXlBREtBSUFJZ0lnQUVFQ2RHb2lDU0FOT2dBQklBa2dCam9BQUNBSklCUWdFVUVDZEdvaUZDQUNhMEVDZGpzQkFpQUFJUXdNQVFzTElBNEVRQ0FVSUE1QkFuUnFJZ0JCQURzQkFpQUFJQmM2QUFFZ0FFSEFBRG9BQUFzZ0F5QURLQUlBSUJOQkFuUnFOZ0lBQ3lBRUlBMDJBZ0JCQUNFSkN5QUpDMDRCQVg4akFFRVFheUlDSUFBN0FRb2dBaUFCTmdJRUFrQWdBaThCQ2tFQlJnUkFJQUlvQWdSQkFVWUVRQ0FDUVFBMkFnd01BZ3NnQWtFbE5nSU1EQUVMSUFKQkFEWUNEQXNnQWlnQ0RBdUFBd0VCZnlNQVFUQnJJZ1VrQUNBRklBQTJBaXdnQlNBQk5nSW9JQVVnQWpZQ0pDQUZJQU0zQXhnZ0JTQUVOZ0lVSUFWQ0FEY0RDQU5BSUFVcEF3Z2dCU2tER0ZRRVFDQUZJQVVvQWlRZ0JTa0RDS2RxTFFBQU9nQUhJQVVvQWhSRkJFQWdCU0FGS0FJc0tBSVVRUUp5T3dFU0lBVWdCUzhCRWlBRkx3RVNRUUZ6YkVFSWRqc0JFaUFGSUFVdEFBY2dCUzhCRWtIL0FYRnpPZ0FIQ3lBRktBSW9CRUFnQlNnQ0tDQUZLUU1JcDJvZ0JTMEFCem9BQUFzQ2Z5QUZLQUlzS0FJTVFYOXpJUUJCQUNBRlFRZHFJZ0ZGRFFBYUlBQWdBVUlCUWF5WkFTZ0NBQkVFQUF0QmYzTWhBQ0FGS0FJc0lBQTJBZ3dnQlNnQ0xDQUZLQUlzS0FJUUlBVW9BaXdvQWd4Qi93Rnhha0dGaUtMQUFHeEJBV28yQWhBZ0JTQUZLQUlzS0FJUVFSaDJPZ0FIQW44Z0JTZ0NMQ2dDRkVGL2N5RUFRUUFnQlVFSGFpSUJSUTBBR2lBQUlBRkNBVUdzbVFFb0FnQVJCQUFMUVg5eklRQWdCU2dDTENBQU5nSVVJQVVnQlNrRENFSUJmRGNEQ0F3QkN3c2dCVUV3YWlRQUMyMEJBWDhqQUVFZ2F5SUVKQUFnQkNBQU5nSVlJQVFnQVRZQ0ZDQUVJQUkzQXdnZ0JDQUROZ0lFQWtBZ0JDZ0NHRVVFUUNBRVFRQTJBaHdNQVFzZ0JDQUVLQUlVSUFRcEF3Z2dCQ2dDQkNBRUtBSVlRUWhxRUxzQk5nSWNDeUFFS0FJY0lRQWdCRUVnYWlRQUlBQUxwd01CQVg4akFFRWdheUlFSkFBZ0JDQUFOZ0lZSUFRZ0FUY0RFQ0FFSUFJMkFnd2dCQ0FETmdJSUlBUWdCQ2dDR0NBRUtRTVFJQVFvQWd4QkFCQStJZ0EyQWdBQ1FDQUFSUVJBSUFSQmZ6WUNIQXdCQ3lBRUlBUW9BaGdnQkNrREVDQUVLQUlNRUx3QklnQTJBZ1FnQUVVRVFDQUVRWDgyQWh3TUFRc0NRQUpBSUFRb0FneEJDSEVOQUNBRUtBSVlLQUpBSUFRcEF4Q25RUVIwYWlnQ0NFVU5BQ0FFS0FJWUtBSkFJQVFwQXhDblFRUjBhaWdDQ0NBRUtBSUlFRGxCQUVnRVFDQUVLQUlZUVFocVFROUJBQkFVSUFSQmZ6WUNIQXdEQ3d3QkN5QUVLQUlJRURzZ0JDZ0NDQ0FFS0FJQUtBSVlOZ0lzSUFRb0FnZ2dCQ2dDQUNrREtEY0RHQ0FFS0FJSUlBUW9BZ0FvQWhRMkFpZ2dCQ2dDQ0NBRUtBSUFLUU1nTndNZ0lBUW9BZ2dnQkNnQ0FDZ0NFRHNCTUNBRUtBSUlJQVFvQWdBdkFWSTdBVElnQkNnQ0NFRWdRUUFnQkNnQ0FDMEFCa0VCY1J0QjNBRnlyVGNEQUFzZ0JDZ0NDQ0FFS1FNUU53TVFJQVFvQWdnZ0JDZ0NCRFlDQ0NBRUtBSUlJZ0FnQUNrREFFSURoRGNEQUNBRVFRQTJBaHdMSUFRb0Fod2hBQ0FFUVNCcUpBQWdBQXRaQWdGL0FYNENRQUovUVFBZ0FFVU5BQm9nQUswZ0FhMStJZ09uSWdJZ0FDQUJja0dBZ0FSSkRRQWFRWDhnQWlBRFFpQ0lweHNMSWdJUUdTSUFSUTBBSUFCQkJHc3RBQUJCQTNGRkRRQWdBRUVBSUFJUUx3c2dBQXMyQVFGL0l3QkJFR3NpQVNRQUlBRWdBRFlDRENBQktBSU1FR0FnQVNnQ0RDZ0NBQkEzSUFFb0Fnd29BZ1FRTnlBQlFSQnFKQUFMcEJVQkVuOGdBU2dDQUNFSUlBRW9BZ2dpQWlnQ0FDRUZJQUlvQWd3aEJ5QUFRb0NBZ0lEUXh3QTNBc1FvUVFBaEFnSkFBa0FnQjBFQVNnUkFRWDhoREFOQUFrQWdDQ0FDUVFKMGFpSURMd0VBQkVBZ0FDQUFLQUxFS0VFQmFpSUROZ0xFS0NBQUlBTkJBblJxUWRBV2FpQUNOZ0lBSUFBZ0FtcEJ6Q2hxUVFBNkFBQWdBaUVNREFFTElBTkJBRHNCQWdzZ0FrRUJhaUlDSUFkSERRQUxJQUJCb0MxcUlROGdBRUdjTFdvaEVTQUFLQUxFS0NJRVFRRktEUUlNQVFzZ0FFR2dMV29oRHlBQVFad3RhaUVSUVg4aERBc0RRQ0FBSUFSQkFXb2lBallDeENnZ0FDQUNRUUowYWtIUUZtb2dERUVCYWlJRFFRQWdERUVDU0NJR0d5SUNOZ0lBSUFnZ0FrRUNkQ0lFYWtFQk93RUFJQUFnQW1wQnpDaHFRUUE2QUFBZ0FDQUFLQUtjTFVFQmF6WUNuQzBnQlFSQUlBOGdEeWdDQUNBRUlBVnFMd0VDYXpZQ0FBc2dBeUFNSUFZYklRd2dBQ2dDeENnaUJFRUNTQTBBQ3dzZ0FTQU1OZ0lFSUFSQkFYWWhCZ05BSUFBZ0JrRUNkR3BCMEJacUtBSUFJUWtDUUNBR0lnSkJBWFFpQXlBRVNnMEFJQWdnQ1VFQ2RHb2hDaUFBSUFscVFjd29haUVOSUFZaEJRTkFBa0FnQXlBRVRnUkFJQU1oQWd3QkN5QUlJQUJCMEJacUlnSWdBMEVCY2lJRVFRSjBhaWdDQUNJTFFRSjBhaThCQUNJT0lBZ2dBaUFEUVFKMGFpZ0NBQ0lRUVFKMGFpOEJBQ0lDVHdSQUlBSWdEa2NFUUNBRElRSU1BZ3NnQXlFQ0lBQkJ6Q2hxSWdNZ0Myb3RBQUFnQXlBUWFpMEFBRXNOQVFzZ0JDRUNDeUFLTHdFQUlnUWdDQ0FBSUFKQkFuUnFRZEFXYWlnQ0FDSURRUUowYWk4QkFDSUxTUVJBSUFVaEFnd0NDd0pBSUFRZ0MwY05BQ0FOTFFBQUlBQWdBMnBCekNocUxRQUFTdzBBSUFVaEFnd0NDeUFBSUFWQkFuUnFRZEFXYWlBRE5nSUFJQUloQlNBQ1FRRjBJZ01nQUNnQ3hDZ2lCRXdOQUFzTElBQWdBa0VDZEdwQjBCWnFJQWsyQWdBZ0JrRUNUZ1JBSUFaQkFXc2hCaUFBS0FMRUtDRUVEQUVMQ3lBQUtBTEVLQ0VEQTBBZ0J5RUdJQUFnQTBFQmF5SUVOZ0xFS0NBQUtBTFVGaUVLSUFBZ0FDQURRUUowYWtIUUZtb29BZ0FpQ1RZQzFCWkJBU0VDQWtBZ0EwRURTQTBBSUFnZ0NVRUNkR29oRFNBQUlBbHFRY3dvYWlFTFFRSWhBMEVCSVFVRFFBSkFJQU1nQkU0RVFDQURJUUlNQVFzZ0NDQUFRZEFXYWlJQ0lBTkJBWElpQjBFQ2RHb29BZ0FpQkVFQ2RHb3ZBUUFpRGlBSUlBSWdBMEVDZEdvb0FnQWlFRUVDZEdvdkFRQWlBazhFUUNBQ0lBNUhCRUFnQXlFQ0RBSUxJQU1oQWlBQVFjd29haUlESUFScUxRQUFJQU1nRUdvdEFBQkxEUUVMSUFjaEFnc2dEUzhCQUNJSElBZ2dBQ0FDUVFKMGFrSFFGbW9vQWdBaUEwRUNkR292QVFBaUJFa0VRQ0FGSVFJTUFnc0NRQ0FFSUFkSERRQWdDeTBBQUNBQUlBTnFRY3dvYWkwQUFFc05BQ0FGSVFJTUFnc2dBQ0FGUVFKMGFrSFFGbW9nQXpZQ0FDQUNJUVVnQWtFQmRDSURJQUFvQXNRb0lnUk1EUUFMQzBFQ0lRTWdBRUhRRm1vaUJ5QUNRUUowYWlBSk5nSUFJQUFnQUNnQ3lDaEJBV3NpQlRZQ3lDZ2dBQ2dDMUJZaEFpQUhJQVZCQW5ScUlBbzJBZ0FnQUNBQUtBTElLRUVCYXlJRk5nTElLQ0FISUFWQkFuUnFJQUkyQWdBZ0NDQUdRUUowYWlJTklBZ2dBa0VDZEdvaUJTOEJBQ0FJSUFwQkFuUnFJZ1F2QVFCcU93RUFJQUJCekNocUlna2dCbW9pQ3lBQ0lBbHFMUUFBSWdJZ0NTQUthaTBBQUNJS0lBSWdDa3NiUVFGcU9nQUFJQVVnQmpzQkFpQUVJQVk3QVFJZ0FDQUdOZ0xVRmtFQklRVkJBU0VDQWtBZ0FDZ0N4Q2dpQkVFQ1NBMEFBMEFnRFM4QkFDSUtJQWdnQUFKL0lBTWdBeUFFVGcwQUdpQUlJQWNnQTBFQmNpSUNRUUowYWlnQ0FDSUVRUUowYWk4QkFDSU9JQWdnQnlBRFFRSjBhaWdDQUNJUVFRSjBhaThCQUNJU1R3UkFJQU1nRGlBU1J3MEJHaUFESUFRZ0NXb3RBQUFnQ1NBUWFpMEFBRXNOQVJvTElBSUxJZ0pCQW5ScVFkQVdhaWdDQUNJRFFRSjBhaThCQUNJRVNRUkFJQVVoQWd3Q0N3SkFJQVFnQ2tjTkFDQUxMUUFBSUFBZ0EycEJ6Q2hxTFFBQVN3MEFJQVVoQWd3Q0N5QUFJQVZCQW5ScVFkQVdhaUFETmdJQUlBSWhCU0FDUVFGMElnTWdBQ2dDeENnaUJFd05BQXNMSUFaQkFXb2hCeUFBSUFKQkFuUnFRZEFXYWlBR05nSUFJQUFvQXNRb0lnTkJBVW9OQUFzZ0FDQUFLQUxJS0VFQmF5SUNOZ0xJS0NBQVFkQVdhaUlESUFKQkFuUnFJQUFvQXRRV05nSUFJQUVvQWdRaENTQUJLQUlJSWdJb0FoQWhCaUFDS0FJSUlRb2dBaWdDQkNFUUlBSW9BZ0FoRFNBQktBSUFJUWNnQUVISUZtcENBRGNCQUNBQVFjQVdha0lBTndFQUlBQkJ1QlpxUWdBM0FRQWdBRUd3Rm1vaUFVSUFOd0VBUVFBaEJTQUhJQU1nQUNnQ3lDaEJBblJxS0FJQVFRSjBha0VBT3dFQ0FrQWdBQ2dDeUNnaUFrRzdCRW9OQUNBQ1FRRnFJUUlEUUNBSElBQWdBa0VDZEdwQjBCWnFLQUlBSWdSQkFuUWlFbW9pQ3lBSElBc3ZBUUpCQW5ScUx3RUNJZ05CQVdvZ0JpQURJQVpKR3lJT093RUNJQU1nQms4aEV3SkFJQVFnQ1VvTkFDQUFJQTVCQVhScVFiQVdhaUlESUFNdkFRQkJBV283QVFCQkFDRURJQVFnQ2s0RVFDQVFJQVFnQ210QkFuUnFLQUlBSVFNTElCRWdFU2dDQUNBTEx3RUFJZ1FnQXlBT2FteHFOZ0lBSUExRkRRQWdEeUFQS0FJQUlBTWdEU0FTYWk4QkFtb2dCR3hxTmdJQUN5QUZJQk5xSVFVZ0FrRUJhaUlDUWIwRVJ3MEFDeUFGUlEwQUlBQWdCa0VCZEdwQnNCWnFJUVFEUUNBR0lRSURRQ0FBSUFJaUEwRUJheUlDUVFGMGFrR3dGbW9pRHk4QkFDSUtSUTBBQ3lBUElBcEJBV3M3QVFBZ0FDQURRUUYwYWtHd0Ztb2lBaUFDTHdFQVFRSnFPd0VBSUFRZ0JDOEJBRUVCYXlJRE93RUFJQVZCQWtvaEFpQUZRUUpySVFVZ0FnMEFDeUFHUlEwQVFiMEVJUUlEUUNBRFFmLy9BM0VpQlFSQUEwQWdBQ0FDUVFGcklnSkJBblJxUWRBV2FpZ0NBQ0lESUFsS0RRQWdCeUFEUVFKMGFpSURMd0VDSUFaSEJFQWdFU0FSS0FJQUlBWWdBeThCQUd4cUlnUTJBZ0FnRVNBRUlBTXZBUUFnQXk4QkFteHJOZ0lBSUFNZ0Jqc0JBZ3NnQlVFQmF5SUZEUUFMQ3lBR1FRRnJJZ1pGRFFFZ0FDQUdRUUYwYWtHd0Ztb3ZBUUFoQXd3QUN3QUxRUUFoQlNNQVFTQnJJZ0lnQVNJQUx3RUFRUUYwSWdFN0FRSWdBaUFCSUFBdkFRSnFRUUYwSWdFN0FRUWdBaUFCSUFBdkFRUnFRUUYwSWdFN0FRWWdBaUFCSUFBdkFRWnFRUUYwSWdFN0FRZ2dBaUFCSUFBdkFRaHFRUUYwSWdFN0FRb2dBaUFCSUFBdkFRcHFRUUYwSWdFN0FRd2dBaUFCSUFBdkFReHFRUUYwSWdFN0FRNGdBaUFCSUFBdkFRNXFRUUYwSWdFN0FSQWdBaUFCSUFBdkFSQnFRUUYwSWdFN0FSSWdBaUFCSUFBdkFSSnFRUUYwSWdFN0FSUWdBaUFCSUFBdkFSUnFRUUYwSWdFN0FSWWdBaUFCSUFBdkFSWnFRUUYwSWdFN0FSZ2dBaUFCSUFBdkFSaHFRUUYwSWdFN0FSb2dBaUFCSUFBdkFScHFRUUYwSWdFN0FSd2dBaUFBTHdFY0lBRnFRUUYwT3dFZUlBeEJBRTRFUUFOQUlBZ2dCVUVDZEdvaUJDOEJBaUlCQkVBZ0FpQUJRUUYwYWlJQUlBQXZBUUFpQUVFQmFqc0JBQ0FCUVFOeElRWkJBQ0VESUFGQkFXdEJBMDhFUUNBQlFmei9BM0VoQndOQUlBQkJBM1pCQVhFZ0FFRUNka0VCY1NBQVFRSnhJQU1nQUVFQmNYSkJBblJ5Y2tFQmRISWlBVUVCZENFRElBQkJCSFloQUNBSFFRUnJJZ2NOQUFzTElBWUVRQU5BSUFNZ0FFRUJjWElpQVVFQmRDRURJQUJCQVhZaEFDQUdRUUZySWdZTkFBc0xJQVFnQVRzQkFBc2dCU0FNUnlFQUlBVkJBV29oQlNBQURRQUxDd3V3Q1FJRmZ3RitJQUFnQVdzaEF3SkFBa0FnQWtFSFRRUkFJQUpGRFFFZ0FDQURMUUFBT2dBQUlBSkJBVWNOQWlBQVFRRnFEd3NDUUFKL0FrQUNRQUpBQWtBZ0FVRUJhdzRJQXdJQ0FBSUNBZ0VDQ3lBREtBQUFEQU1MSUFNcEFBQWlDRUlnaUtjaEJDQUlweUVCREFNTElBRkJCMDBFUUNBQUlBSnFRUUZySVFjZ0FTQUNTUVJBSUFOQkJHb2hCZ05BSUFjZ0FHdEJBV29pQkNBQklBRWdCRXNiSWdWQkNFOEVRQU5BSUFBZ0F5a0FBRGNBQUNBRFFRaHFJUU1nQUVFSWFpRUFEQUFMQUFzZ0JVRUVTUVIvSUFNRklBQWdBeWdBQURZQUFDQUZRUVJySVFVZ0FFRUVhaUVBSUFZTElRUWdCVUVDVHdSQUlBQWdCQzhBQURzQUFDQUZRUUpySVFVZ0JFRUNhaUVFSUFCQkFtb2hBQXNnQlVFQlJnUkFJQUFnQkMwQUFEb0FBQ0FBUVFGcUlRQUxJQUlnQVdzaUFpQUJTdzBBQ3lBQ1JRMEZDd0pBSUFjZ0FHdEJBV29pQVNBQ0lBRWdBa2tiSWdKQkNFa05BQ0FDUVFocklnUkJBM1pCQVdwQkIzRWlBUVJBQTBBZ0FDQURLUUFBTndBQUlBSkJDR3NoQWlBRFFRaHFJUU1nQUVFSWFpRUFJQUZCQVdzaUFRMEFDd3NnQkVFNFNRMEFBMEFnQUNBREtRQUFOd0FBSUFBZ0F5a0FDRGNBQ0NBQUlBTXBBQkEzQUJBZ0FDQURLUUFZTndBWUlBQWdBeWtBSURjQUlDQUFJQU1wQUNnM0FDZ2dBQ0FES1FBd053QXdJQUFnQXlrQU9EY0FPQ0FEUVVCcklRTWdBRUZBYXlFQUlBSkJRR29pQWtFSFN3MEFDd3NnQWtFRVR3UkFJQUFnQXlnQUFEWUFBQ0FDUVFScklRSWdBMEVFYWlFRElBQkJCR29oQUFzZ0FrRUNUd1JBSUFBZ0F5OEFBRHNBQUNBQ1FRSnJJUUlnQTBFQ2FpRURJQUJCQW1vaEFBc2dBa0VCUncwRUlBQWdBeTBBQURvQUFDQUFRUUZxRHdzZ0FDQURLUUFBTndBQUlBQWdBa0VCYXlJQlFRZHhRUUZxSWdKcUlRQWdBVUVJU1EwRElBSWdBMm9oQXlBQlFRTjJJZ0pCQVdzaEJDQUNRUWR4SWdFRVFBTkFJQUFnQXlrQUFEY0FBQ0FDUVFGcklRSWdBMEVJYWlFRElBQkJDR29oQUNBQlFRRnJJZ0VOQUFzTElBUkJCMGtOQXdOQUlBQWdBeWtBQURjQUFDQUFJQU1wQUFnM0FBZ2dBQ0FES1FBUU53QVFJQUFnQXlrQUdEY0FHQ0FBSUFNcEFDQTNBQ0FnQUNBREtRQW9Od0FvSUFBZ0F5a0FNRGNBTUNBQUlBTXBBRGczQURnZ0EwRkFheUVESUFCQlFHc2hBQ0FDUVFocklnSU5BQXNNQXdzZ0F5MEFBRUdCZ29RSWJBc2lBU0VFQ3lBQ1FRZHhJUVlDUUNBQ1FYaHhJZ0pGRFFBZ0FhMGdCSzFDSUlhRUlRZ2dBa0VJYXlJRVFRTjJRUUZxUVFkeElnRUVRQU5BSUFBZ0NEY0FBQ0FDUVFocklRSWdBRUVJYWlFQUlBRkJBV3NpQVEwQUN3c2dCRUU0U1EwQUEwQWdBQ0FJTndBNElBQWdDRGNBTUNBQUlBZzNBQ2dnQUNBSU53QWdJQUFnQ0RjQUdDQUFJQWczQUJBZ0FDQUlOd0FJSUFBZ0NEY0FBQ0FBUVVCcklRQWdBa0ZBYWlJQ0RRQUxDeUFHUlEwQUlBQWdBeUFHRUJjZ0Jtb2hBQXNnQUE4TElBQWdBeTBBQVRvQUFTQUNRUUpHQkVBZ0FFRUNhZzhMSUFBZ0F5MEFBam9BQWlBQ1FRTkdCRUFnQUVFRGFnOExJQUFnQXkwQUF6b0FBeUFDUVFSR0JFQWdBRUVFYWc4TElBQWdBeTBBQkRvQUJDQUNRUVZHQkVBZ0FFRUZhZzhMSUFBZ0F5MEFCVG9BQlNBQ1FRWkdCRUFnQUVFR2FnOExJQUFnQXkwQUJqb0FCaUFBUVFkcUN3TUFBUXVZQkFJQmZnRi9JQUJCZjNNaEFBSkFJQUpRRFFBZ0FVRURjVVVOQUNBQkxRQUFJQUJCL3dGeGMwRUNkRUd3R1dvb0FnQWdBRUVJZG5NaEFDQUNRZ0Y5SWdOUVFRRWdBVUVCYWlJRVFRTnhHd1JBSUFRaEFTQURJUUlNQVFzZ0FTMEFBU0FBUWY4QmNYTkJBblJCc0JscUtBSUFJQUJCQ0haeklRQWdBVUVDYWlFRUFrQWdBa0lDZlNJRFVBMEFJQVJCQTNGRkRRQWdBUzBBQWlBQVFmOEJjWE5CQW5SQnNCbHFLQUlBSUFCQkNIWnpJUUFnQVVFRGFpRUVBa0FnQWtJRGZTSURVQTBBSUFSQkEzRkZEUUFnQVMwQUF5QUFRZjhCY1hOQkFuUkJzQmxxS0FJQUlBQkJDSFp6SVFBZ0FrSUVmU0VDSUFGQkJHb2hBUXdDQ3lBRUlRRWdBeUVDREFFTElBUWhBU0FESVFJTElBSkNCRm9FUUFOQUlBRW9BZ0FnQUhNaUFFRUdka0g4QjNGQnNDbHFLQUlBSUFCQi93RnhRUUowUWJBeGFpZ0NBSE1nQUVFT2RrSDhCM0ZCc0NGcUtBSUFjeUFBUVJaMlFmd0hjVUd3R1dvb0FnQnpJUUFnQVVFRWFpRUJJQUpDQkgwaUFrSURWZzBBQ3dzQ1FDQUNVQTBBSUFKQ0FZTlFCSDRnQWdVZ0FTMEFBQ0FBUWY4QmNYTkJBblJCc0JscUtBSUFJQUJCQ0haeklRQWdBVUVCYWlFQklBSkNBWDBMSVFNZ0FrSUJVUTBBQTBBZ0FTMEFBU0FCTFFBQUlBQkIvd0Z4YzBFQ2RFR3dHV29vQWdBZ0FFRUlkbk1pQUVIL0FYRnpRUUowUWJBWmFpZ0NBQ0FBUVFoMmN5RUFJQUZCQW1vaEFTQURRZ0o5SWdOQ0FGSU5BQXNMSUFCQmYzTUw2Z0VDQVg4QmZpTUFRU0JySWdRa0FDQUVJQUEyQWhnZ0JDQUJOZ0lVSUFRZ0FqWUNFQ0FFSUFNMkFnd2dCQ0FFS0FJTUVJTUJJZ0EyQWdnQ1FDQUFSUVJBSUFSQkFEWUNIQXdCQ3lNQVFSQnJJZ0FnQkNnQ0dEWUNEQ0FBS0FJTUlnQWdBQ2dDTUVFQmFqWUNNQ0FFS0FJSUlBUW9BaGcyQWdBZ0JDZ0NDQ0FFS0FJVU5nSUVJQVFvQWdnZ0JDZ0NFRFlDQ0NBRUtBSVlJQVFvQWhCQkFFSUFRUTRnQkNnQ0ZCRUxBQ0VGSUFRb0FnZ2dCVGNER0NBRUtBSUlLUU1ZUWdCVEJFQWdCQ2dDQ0VJL053TVlDeUFFSUFRb0FnZzJBaHdMSUFRb0Fod2hBQ0FFUVNCcUpBQWdBQXZxQVFFQmZ5TUFRUkJySWdFa0FDQUJJQUEyQWdnZ0FVRTRFQmtpQURZQ0JBSkFJQUJGQkVBZ0FTZ0NDRUVPUVFBUUZDQUJRUUEyQWd3TUFRc2dBU2dDQkVFQU5nSUFJQUVvQWdSQkFEWUNCQ0FCS0FJRVFRQTJBZ2dnQVNnQ0JFRUFOZ0lnSUFFb0FnUkJBRFlDSkNBQktBSUVRUUE2QUNnZ0FTZ0NCRUVBTmdJc0lBRW9BZ1JCQVRZQ01DTUFRUkJySWdBZ0FTZ0NCRUVNYWpZQ0RDQUFLQUlNUVFBMkFnQWdBQ2dDREVFQU5nSUVJQUFvQWd4QkFEWUNDQ0FCS0FJRVFRQTZBRFFnQVNnQ0JFRUFPZ0ExSUFFZ0FTZ0NCRFlDREFzZ0FTZ0NEQ0VBSUFGQkVHb2tBQ0FBQzdBQkFnRi9BWDRqQUVFZ2F5SURKQUFnQXlBQU5nSVlJQU1nQVRZQ0ZDQURJQUkyQWhBZ0F5QURLQUlRRUlNQklnQTJBZ3dDUUNBQVJRUkFJQU5CQURZQ0hBd0JDeUFES0FJTUlBTW9BaGcyQWdRZ0F5Z0NEQ0FES0FJVU5nSUlJQU1vQWhSQkFFSUFRUTRnQXlnQ0dCRVBBQ0VFSUFNb0Fnd2dCRGNER0NBREtBSU1LUU1ZUWdCVEJFQWdBeWdDREVJL053TVlDeUFESUFNb0FndzJBaHdMSUFNb0Fod2hBQ0FEUVNCcUpBQWdBQXZEQWdFQmZ5TUFRUkJySWdNZ0FEWUNEQ0FESUFFMkFnZ2dBeUFDTmdJRUlBTW9BZ2dwQXdCQ0FvTkNBRklFUUNBREtBSU1JQU1vQWdncEF4QTNBeEFMSUFNb0FnZ3BBd0JDQklOQ0FGSUVRQ0FES0FJTUlBTW9BZ2dwQXhnM0F4Z0xJQU1vQWdncEF3QkNDSU5DQUZJRVFDQURLQUlNSUFNb0FnZ3BBeUEzQXlBTElBTW9BZ2dwQXdCQ0VJTkNBRklFUUNBREtBSU1JQU1vQWdnb0FpZzJBaWdMSUFNb0FnZ3BBd0JDSUlOQ0FGSUVRQ0FES0FJTUlBTW9BZ2dvQWl3MkFpd0xJQU1vQWdncEF3QkN3QUNEUWdCU0JFQWdBeWdDRENBREtBSUlMd0V3T3dFd0N5QURLQUlJS1FNQVFvQUJnMElBVWdSQUlBTW9BZ3dnQXlnQ0NDOEJNanNCTWdzZ0F5Z0NDQ2tEQUVLQUFvTkNBRklFUUNBREtBSU1JQU1vQWdnb0FqUTJBalFMSUFNb0Fnd2lBQ0FES0FJSUtRTUFJQUFwQXdDRU53TUFRUUFMWFFFQmZ5TUFRUkJySWdJa0FDQUNJQUEyQWdnZ0FpQUJOZ0lFQWtBZ0FpZ0NCRVVFUUNBQ1FRQTJBZ3dNQVFzZ0FpQUNLQUlJSUFJb0FnUW9BZ0FnQWlnQ0JDOEJCSzBRTmpZQ0RBc2dBaWdDRENFQUlBSkJFR29rQUNBQUM0OEJBUUYvSXdCQkVHc2lBaVFBSUFJZ0FEWUNDQ0FDSUFFMkFnUUNRQUpBSUFJb0FnZ0VRQ0FDS0FJRURRRUxJQUlnQWlnQ0NDQUNLQUlFUmpZQ0RBd0JDeUFDS0FJSUx3RUVJQUlvQWdRdkFRUkhCRUFnQWtFQU5nSU1EQUVMSUFJZ0FpZ0NDQ2dDQUNBQ0tBSUVLQUlBSUFJb0FnZ3ZBUVFRV2tVMkFnd0xJQUlvQWd3aEFDQUNRUkJxSkFBZ0FBdHRBUU4vSXdCQkVHc2lBU1FBSUFFZ0FEWUNEQ0FCUVFBMkFnZ2dBU2dDREFSQUlBRUNmeUFCS0FJSUlRQWdBU2dDREM4QkJDRUNRUUFnQVNnQ0RDZ0NBQ0lEUlEwQUdpQUFJQU1nQXExQnJKa0JLQUlBRVFRQUN6WUNDQXNnQVNnQ0NDRUFJQUZCRUdva0FDQUFDNThDQVFGL0l3QkJRR29pQlNRQUlBVWdBRGNETUNBRklBRTNBeWdnQlNBQ05nSWtJQVVnQXpjREdDQUZJQVEyQWhRZ0JRSi9JQVVwQXhoQ0VGUUVRQ0FGS0FJVVFSSkJBQkFVUVFBTUFRc2dCU2dDSkFzMkFnUUNRQ0FGS0FJRVJRUkFJQVZDZnpjRE9Bd0JDd0pBQWtBQ1FBSkFBa0FnQlNnQ0JDZ0NDQTREQWdBQkF3c2dCU0FGS1FNd0lBVW9BZ1FwQXdCOE53TUlEQU1MSUFVZ0JTa0RLQ0FGS0FJRUtRTUFmRGNEQ0F3Q0N5QUZJQVVvQWdRcEF3QTNBd2dNQVFzZ0JTZ0NGRUVTUVFBUUZDQUZRbjgzQXpnTUFRc0NRQ0FGS1FNSVFnQlpCRUFnQlNrRENDQUZLUU1vV0EwQkN5QUZLQUlVUVJKQkFCQVVJQVZDZnpjRE9Bd0JDeUFGSUFVcEF3ZzNBemdMSUFVcEF6Z2hBQ0FGUVVCckpBQWdBQXVnQVFFQmZ5TUFRU0JySWdVa0FDQUZJQUEyQWhnZ0JTQUJOZ0lVSUFVZ0Fqc0JFaUFGSUFNNkFCRWdCU0FFTmdJTUlBVWdCU2dDR0NBRktBSVVJQVV2QVJJZ0JTMEFFVUVCY1NBRktBSU1FR1VpQURZQ0NBSkFJQUJGQkVBZ0JVRUFOZ0ljREFFTElBVWdCU2dDQ0NBRkx3RVNRUUFnQlNnQ0RCQk5OZ0lFSUFVb0FnZ1FGU0FGSUFVb0FnUTJBaHdMSUFVb0Fod2hBQ0FGUVNCcUpBQWdBQXVtQVFFQmZ5TUFRU0JySWdVa0FDQUZJQUEyQWhnZ0JTQUJOd01RSUFVZ0FqWUNEQ0FGSUFNMkFnZ2dCU0FFTmdJRUlBVWdCU2dDR0NBRktRTVFJQVVvQWd4QkFCQStJZ0EyQWdBQ1FDQUFSUVJBSUFWQmZ6WUNIQXdCQ3lBRktBSUlCRUFnQlNnQ0NDQUZLQUlBTHdFSVFRaDJPZ0FBQ3lBRktBSUVCRUFnQlNnQ0JDQUZLQUlBS0FKRU5nSUFDeUFGUVFBMkFod0xJQVVvQWh3aEFDQUZRU0JxSkFBZ0FBdU5BZ0VCZnlNQVFUQnJJZ01rQUNBRElBQTJBaWdnQXlBQk93RW1JQU1nQWpZQ0lDQURJQU1vQWlnb0FqUWdBMEVlYWlBREx3RW1RWUFHUVFBUWFEWUNFQUpBSUFNb0FoQkZEUUFnQXk4QkhrRUZTUTBBQWtBZ0F5Z0NFQzBBQUVFQlJnMEFEQUVMSUFNZ0F5Z0NFQ0FETHdFZXJSQXBJZ0EyQWhRZ0FFVUVRQXdCQ3lBREtBSVVFSmdCR2lBRElBTW9BaFFRS2pZQ0dDQURLQUlnRUlnQklBTW9BaGhHQkVBZ0F5QURLQUlVRURFOUFRNGdBeUFES0FJVUlBTXZBUTZ0RUJ3Z0F5OEJEa0dBRUVFQUVFMDJBZ2dnQXlnQ0NBUkFJQU1vQWlBUUl5QURJQU1vQWdnMkFpQUxDeUFES0FJVUVCWUxJQU1nQXlnQ0lEWUNMQ0FES0FJc0lRQWdBMEV3YWlRQUlBQUwyaGNDQVg4QmZpTUFRWUFCYXlJRkpBQWdCU0FBTmdKMElBVWdBVFlDY0NBRklBSTJBbXdnQlNBRE9nQnJJQVVnQkRZQ1pDQUZJQVVvQW14QkFFYzZBQjBnQlVFZVFTNGdCUzBBYTBFQmNSczJBaWdDUUFKQUlBVW9BbXdFUUNBRktBSnNFREVnQlNnQ0tLMVVCRUFnQlNnQ1pFRVRRUUFRRkNBRlFuODNBM2dNQXdzTUFRc2dCU0FGS0FKd0lBVW9BaWl0SUFWQk1Hb2dCU2dDWkJCQklnQTJBbXdnQUVVRVFDQUZRbjgzQTNnTUFnc0xJQVVvQW14Q0JCQWNJUUJCK1JKQi9oSWdCUzBBYTBFQmNSc29BQUFnQUNnQUFFY0VRQ0FGS0FKa1FSTkJBQkFVSUFVdEFCMUJBWEZGQkVBZ0JTZ0NiQkFXQ3lBRlFuODNBM2dNQVFzZ0JTZ0NkQkJRQWtBZ0JTMEFhMEVCY1VVRVFDQUZLQUpzRUJzaEFDQUZLQUowSUFBN0FRZ01BUXNnQlNnQ2RFRUFPd0VJQ3lBRktBSnNFQnNoQUNBRktBSjBJQUE3QVFvZ0JTZ0NiQkFiSVFBZ0JTZ0NkQ0FBT3dFTUlBVW9BbXdRRzBILy93TnhJUUFnQlNnQ2RDQUFOZ0lRSUFVZ0JTZ0NiQkFiT3dFdUlBVWdCU2dDYkJBYk93RXNJQVV2QVM0aEFTQUZMd0VzSVFJakFFRXdheUlBSkFBZ0FDQUJPd0V1SUFBZ0Fqc0JMQ0FBUWdBM0FnQWdBRUVBTmdJb0lBQkNBRGNDSUNBQVFnQTNBaGdnQUVJQU53SVFJQUJDQURjQ0NDQUFRUUEyQWlBZ0FDQUFMd0VzUVFsMlFkQUFhallDRkNBQUlBQXZBU3hCQlhaQkQzRkJBV3MyQWhBZ0FDQUFMd0VzUVI5eE5nSU1JQUFnQUM4QkxrRUxkallDQ0NBQUlBQXZBUzVCQlhaQlAzRTJBZ1FnQUNBQUx3RXVRUUYwUVQ1eE5nSUFJQUFRRXlFQklBQkJNR29rQUNBQklRQWdCU2dDZENBQU5nSVVJQVVvQW13UUtpRUFJQVVvQW5RZ0FEWUNHQ0FGS0FKc0VDcXRJUVlnQlNnQ2RDQUdOd01nSUFVb0Ftd1FLcTBoQmlBRktBSjBJQVkzQXlnZ0JTQUZLQUpzRUJzN0FTSWdCU0FGS0FKc0VCczdBUjRDUUNBRkxRQnJRUUZ4QkVBZ0JVRUFPd0VnSUFVb0FuUkJBRFlDUENBRktBSjBRUUE3QVVBZ0JTZ0NkRUVBTmdKRUlBVW9BblJDQURjRFNBd0JDeUFGSUFVb0Ftd1FHenNCSUNBRktBSnNFQnRCLy84RGNTRUFJQVVvQW5RZ0FEWUNQQ0FGS0FKc0VCc2hBQ0FGS0FKMElBQTdBVUFnQlNnQ2JCQXFJUUFnQlNnQ2RDQUFOZ0pFSUFVb0Ftd1FLcTBoQmlBRktBSjBJQVkzQTBnTEFuOGpBRUVRYXlJQUlBVW9BbXcyQWd3Z0FDZ0NEQzBBQUVFQmNVVUxCRUFnQlNnQ1pFRVVRUUFRRkNBRkxRQWRRUUZ4UlFSQUlBVW9BbXdRRmdzZ0JVSi9Od040REFFTEFrQWdCU2dDZEM4QkRFRUJjUVJBSUFVb0FuUXZBUXhCd0FCeEJFQWdCU2dDZEVILy93TTdBVklNQWdzZ0JTZ0NkRUVCT3dGU0RBRUxJQVVvQW5SQkFEc0JVZ3NnQlNnQ2RFRUFOZ0l3SUFVb0FuUkJBRFlDTkNBRktBSjBRUUEyQWpnZ0JTQUZMd0VnSUFVdkFTSWdCUzhCSG1wcU5nSWtBa0FnQlMwQUhVRUJjUVJBSUFVb0Ftd1FNU0FGS0FJa3JWUUVRQ0FGS0FKa1FSVkJBQkFVSUFWQ2Z6Y0RlQXdEQ3d3QkN5QUZLQUpzRUJZZ0JTQUZLQUp3SUFVb0FpU3RRUUFnQlNnQ1pCQkJJZ0EyQW13Z0FFVUVRQ0FGUW44M0EzZ01BZ3NMSUFVdkFTSUVRQ0FGS0FKc0lBVW9BbkFnQlM4QklrRUJJQVVvQW1RUWlnRWhBQ0FGS0FKMElBQTJBakFnQlNnQ2RDZ0NNRVVFUUFKL0l3QkJFR3NpQUNBRktBSmtOZ0lNSUFBb0Fnd29BZ0JCRVVZTEJFQWdCU2dDWkVFVlFRQVFGQXNnQlMwQUhVRUJjVVVFUUNBRktBSnNFQllMSUFWQ2Z6Y0RlQXdDQ3lBRktBSjBMd0VNUVlBUWNRUkFJQVVvQW5Rb0FqQkJBaEE2UVFWR0JFQWdCU2dDWkVFVlFRQVFGQ0FGTFFBZFFRRnhSUVJBSUFVb0Ftd1FGZ3NnQlVKL053TjREQU1MQ3dzZ0JTOEJIZ1JBSUFVZ0JTZ0NiQ0FGS0FKd0lBVXZBUjVCQUNBRktBSmtFR1UyQWhnZ0JTZ0NHRVVFUUNBRkxRQWRRUUZ4UlFSQUlBVW9BbXdRRmdzZ0JVSi9Od040REFJTElBVW9BaGdnQlM4QkhrR0FBa0dBQkNBRkxRQnJRUUZ4R3lBRktBSjBRVFJxSUFVb0FtUVFsUUZCQVhGRkJFQWdCU2dDR0JBVklBVXRBQjFCQVhGRkJFQWdCU2dDYkJBV0N5QUZRbjgzQTNnTUFnc2dCU2dDR0JBVklBVXRBR3RCQVhFRVFDQUZLQUowUVFFNkFBUUxDeUFGTHdFZ0JFQWdCU2dDYkNBRktBSndJQVV2QVNCQkFDQUZLQUprRUlvQklRQWdCU2dDZENBQU5nSTRJQVVvQW5Rb0FqaEZCRUFnQlMwQUhVRUJjVVVFUUNBRktBSnNFQllMSUFWQ2Z6Y0RlQXdDQ3lBRktBSjBMd0VNUVlBUWNRUkFJQVVvQW5Rb0FqaEJBaEE2UVFWR0JFQWdCU2dDWkVFVlFRQVFGQ0FGTFFBZFFRRnhSUVJBSUFVb0Ftd1FGZ3NnQlVKL053TjREQU1MQ3dzZ0JTZ0NkRUgxNEFFZ0JTZ0NkQ2dDTUJDTUFTRUFJQVVvQW5RZ0FEWUNNQ0FGS0FKMFFmWEdBU0FGS0FKMEtBSTRFSXdCSVFBZ0JTZ0NkQ0FBTmdJNEFrQUNRQ0FGS0FKMEtRTW9Rdi8vLy84UFVRMEFJQVVvQW5RcEF5QkMvLy8vL3c5UkRRQWdCU2dDZENrRFNFTC8vLy8vRDFJTkFRc2dCU0FGS0FKMEtBSTBJQVZCRm1wQkFVR0FBa0dBQkNBRkxRQnJRUUZ4R3lBRktBSmtFR2cyQWd3Z0JTZ0NERVVFUUNBRkxRQWRRUUZ4UlFSQUlBVW9BbXdRRmdzZ0JVSi9Od040REFJTElBVWdCU2dDRENBRkx3RVdyUkFwSWdBMkFoQWdBRVVFUUNBRktBSmtRUTVCQUJBVUlBVXRBQjFCQVhGRkJFQWdCU2dDYkJBV0N5QUZRbjgzQTNnTUFnc0NRQ0FGS0FKMEtRTW9Rdi8vLy84UFVRUkFJQVVvQWhBUU1pRUdJQVVvQW5RZ0JqY0RLQXdCQ3lBRkxRQnJRUUZ4QkVBZ0JTZ0NFQ0VCSXdCQklHc2lBQ1FBSUFBZ0FUWUNHQ0FBUWdnM0F4QWdBQ0FBS0FJWUtRTVFJQUFwQXhCOE53TUlBa0FnQUNrRENDQUFLQUlZS1FNUVZBUkFJQUFvQWhoQkFEb0FBQ0FBUVg4MkFod01BUXNnQUNBQUtBSVlJQUFwQXdnUUxEWUNIQXNnQUNnQ0hCb2dBRUVnYWlRQUN3c2dCU2dDZENrRElFTC8vLy8vRDFFRVFDQUZLQUlRRURJaEJpQUZLQUowSUFZM0F5QUxJQVV0QUd0QkFYRkZCRUFnQlNnQ2RDa0RTRUwvLy8vL0QxRUVRQ0FGS0FJUUVESWhCaUFGS0FKMElBWTNBMGdMSUFVb0FuUW9BanhCLy84RFJnUkFJQVVvQWhBUUtpRUFJQVVvQW5RZ0FEWUNQQXNMSUFVb0FoQVFSMEVCY1VVRVFDQUZLQUprUVJWQkFCQVVJQVVvQWhBUUZpQUZMUUFkUVFGeFJRUkFJQVVvQW13UUZnc2dCVUovTndONERBSUxJQVVvQWhBUUZnc0NmeU1BUVJCcklnQWdCU2dDYkRZQ0RDQUFLQUlNTFFBQVFRRnhSUXNFUUNBRktBSmtRUlJCQUJBVUlBVXRBQjFCQVhGRkJFQWdCU2dDYkJBV0N5QUZRbjgzQTNnTUFRc2dCUzBBSFVFQmNVVUVRQ0FGS0FKc0VCWUxJQVVvQW5RcEEwaEMvLy8vLy8vLy8vLy9BRllFUUNBRktBSmtRUVJCRmhBVUlBVkNmemNEZUF3QkN3Si9JQVVvQW5RaEFTQUZLQUprSVFJakFFRWdheUlBSkFBZ0FDQUJOZ0lZSUFBZ0FqWUNGQUpBSUFBb0FoZ29BaEJCNHdCSEJFQWdBRUVCT2dBZkRBRUxJQUFnQUNnQ0dDZ0NOQ0FBUVJKcVFZR3lBa0dBQmtFQUVHZzJBZ2dDUUNBQUtBSUlCRUFnQUM4QkVrRUhUdzBCQ3lBQUtBSVVRUlZCQUJBVUlBQkJBRG9BSHd3QkN5QUFJQUFvQWdnZ0FDOEJFcTBRS1NJQk5nSU1JQUZGQkVBZ0FDZ0NGRUVVUVFBUUZDQUFRUUE2QUI4TUFRc2dBRUVCT2dBSEFrQUNRQUpBSUFBb0Fnd1FHMEVCYXc0Q0FnQUJDeUFBS0FJWUtRTW9RaFJVQkVBZ0FFRUFPZ0FIQ3d3QkN5QUFLQUlVUVJoQkFCQVVJQUFvQWd3UUZpQUFRUUE2QUI4TUFRc2dBQ2dDREVJQ0VCd3ZBQUJCd1lvQlJ3UkFJQUFvQWhSQkdFRUFFQlFnQUNnQ0RCQVdJQUJCQURvQUh3d0JDd0pBQWtBQ1FBSkFBa0FnQUNnQ0RCQ1lBVUVCYXc0REFBRUNBd3NnQUVHQkFqc0JCQXdEQ3lBQVFZSUNPd0VFREFJTElBQkJnd0k3QVFRTUFRc2dBQ2dDRkVFWVFRQVFGQ0FBS0FJTUVCWWdBRUVBT2dBZkRBRUxJQUF2QVJKQkIwY0VRQ0FBS0FJVVFSVkJBQkFVSUFBb0Fnd1FGaUFBUVFBNkFCOE1BUXNnQUNnQ0dDQUFMUUFIUVFGeE9nQUdJQUFvQWhnZ0FDOEJCRHNCVWlBQUtBSU1FQnRCLy84RGNTRUJJQUFvQWhnZ0FUWUNFQ0FBS0FJTUVCWWdBRUVCT2dBZkN5QUFMUUFmUVFGeElRRWdBRUVnYWlRQUlBRkJBWEZGQ3dSQUlBVkNmemNEZUF3QkN5QUZLQUowS0FJMEVKUUJJUUFnQlNnQ2RDQUFOZ0kwSUFVZ0JTZ0NLQ0FGS0FJa2FxMDNBM2dMSUFVcEEzZ2hCaUFGUVlBQmFpUUFJQVlMelFFQkFYOGpBRUVRYXlJREpBQWdBeUFBTmdJTUlBTWdBVFlDQ0NBRElBSTJBZ1FnQXlBRFFReHFRZnlkQVJBU05nSUFBa0FnQXlnQ0FFVUVRQ0FES0FJRVFTRTdBUUFnQXlnQ0NFRUFPd0VBREFFTElBTW9BZ0FvQWhSQjBBQklCRUFnQXlnQ0FFSFFBRFlDRkFzZ0F5Z0NCQ0FES0FJQUtBSU1JQU1vQWdBb0FoUkJDWFFnQXlnQ0FDZ0NFRUVGZEdwQjRMOENhMm83QVFBZ0F5Z0NDQ0FES0FJQUtBSUlRUXQwSUFNb0FnQW9BZ1JCQlhScUlBTW9BZ0FvQWdCQkFYVnFPd0VBQ3lBRFFSQnFKQUFMZ3dNQkFYOGpBRUVnYXlJREpBQWdBeUFBT3dFYUlBTWdBVFlDRkNBRElBSTJBaEFnQXlBREtBSVVJQU5CQ0dwQndBQkJBQkJHSWdBMkFnd0NRQ0FBUlFSQUlBTkJBRFlDSEF3QkN5QURLQUlJUVFWcVFmLy9BMHNFUUNBREtBSVFRUkpCQUJBVUlBTkJBRFlDSEF3QkN5QURRUUFnQXlnQ0NFRUZhcTBRS1NJQU5nSUVJQUJGQkVBZ0F5Z0NFRUVPUVFBUUZDQURRUUEyQWh3TUFRc2dBeWdDQkVFQkVKY0JJQU1vQWdRZ0F5Z0NGQkNJQVJBZ0lBTW9BZ1FnQXlnQ0RDQURLQUlJRUVBQ2Z5TUFRUkJySWdBZ0F5Z0NCRFlDRENBQUtBSU1MUUFBUVFGeFJRc0VRQ0FES0FJUVFSUkJBQkFVSUFNb0FnUVFGaUFEUVFBMkFod01BUXNnQXlBREx3RWFBbjhqQUVFUWF5SUFJQU1vQWdRMkFnd0NmaUFBS0FJTUxRQUFRUUZ4QkVBZ0FDZ0NEQ2tERUF3QkMwSUFDNmRCLy84RGNRc0NmeU1BUVJCcklnQWdBeWdDQkRZQ0RDQUFLQUlNS0FJRUMwR0FCaEJTTmdJQUlBTW9BZ1FRRmlBRElBTW9BZ0EyQWh3TElBTW9BaHdoQUNBRFFTQnFKQUFnQUF1MEFnRUJmeU1BUVRCcklnTWtBQ0FESUFBMkFpZ2dBeUFCTndNZ0lBTWdBallDSEFKQUlBTXBBeUJRQkVBZ0EwRUJPZ0F2REFFTElBTWdBeWdDS0NrREVDQURLUU1nZkRjRENBSkFJQU1wQXdnZ0F5a0RJRm9FUUNBREtRTUlRdi8vLy84QVdBMEJDeUFES0FJY1FRNUJBQkFVSUFOQkFEb0FMd3dCQ3lBRElBTW9BaWdvQWdBZ0F5a0RDS2RCQkhRUVRDSUFOZ0lFSUFCRkJFQWdBeWdDSEVFT1FRQVFGQ0FEUVFBNkFDOE1BUXNnQXlnQ0tDQURLQUlFTmdJQUlBTWdBeWdDS0NrRENEY0RFQU5BSUFNcEF4QWdBeWtEQ0ZwRkJFQWdBeWdDS0NnQ0FDQURLUU1RcDBFRWRHb1F2UUVnQXlBREtRTVFRZ0Y4TndNUURBRUxDeUFES0FJb0lBTXBBd2dpQVRjREVDQURLQUlvSUFFM0F3Z2dBMEVCT2dBdkN5QURMUUF2UVFGeElRQWdBMEV3YWlRQUlBQUx6QUVCQVg4akFFRWdheUlDSkFBZ0FpQUFOd01RSUFJZ0FUWUNEQ0FDUVRBUUdTSUJOZ0lJQWtBZ0FVVUVRQ0FDS0FJTVFRNUJBQkFVSUFKQkFEWUNIQXdCQ3lBQ0tBSUlRUUEyQWdBZ0FpZ0NDRUlBTndNUUlBSW9BZ2hDQURjRENDQUNLQUlJUWdBM0F5QWdBaWdDQ0VJQU53TVlJQUlvQWdoQkFEWUNLQ0FDS0FJSVFRQTZBQ3dnQWlnQ0NDQUNLUU1RSUFJb0Fnd1FrQUZCQVhGRkJFQWdBaWdDQ0JBa0lBSkJBRFlDSEF3QkN5QUNJQUlvQWdnMkFod0xJQUlvQWh3aEFTQUNRU0JxSkFBZ0FRdldBZ0VCZnlNQVFTQnJJZ01rQUNBRElBQTJBaGdnQXlBQk5nSVVJQU1nQWpZQ0VDQURJQU5CREdwQ0JCQXBOZ0lJQWtBZ0F5Z0NDRVVFUUNBRFFYODJBaHdNQVFzRFFDQURLQUlVQkVBZ0F5Z0NGQ2dDQkNBREtBSVFjVUdBQm5FRVFDQURLQUlJUWdBUUxCb2dBeWdDQ0NBREtBSVVMd0VJRUIwZ0F5Z0NDQ0FES0FJVUx3RUtFQjBDZnlNQVFSQnJJZ0FnQXlnQ0NEWUNEQ0FBS0FJTUxRQUFRUUZ4UlFzRVFDQURLQUlZUVFocVFSUkJBQkFVSUFNb0FnZ1FGaUFEUVg4MkFod01CQXNnQXlnQ0dDQURRUXhxUWdRUU5rRUFTQVJBSUFNb0FnZ1FGaUFEUVg4MkFod01CQXNnQXlnQ0ZDOEJDZ1JBSUFNb0FoZ2dBeWdDRkNnQ0RDQURLQUlVTHdFS3JSQTJRUUJJQkVBZ0F5Z0NDQkFXSUFOQmZ6WUNIQXdGQ3dzTElBTWdBeWdDRkNnQ0FEWUNGQXdCQ3dzZ0F5Z0NDQkFXSUFOQkFEWUNIQXNnQXlnQ0hDRUFJQU5CSUdva0FDQUFDMmdCQVg4akFFRVFheUlDSUFBMkFnd2dBaUFCTmdJSUlBSkJBRHNCQmdOQUlBSW9BZ3dFUUNBQ0tBSU1LQUlFSUFJb0FnaHhRWUFHY1FSQUlBSWdBaWdDREM4QkNpQUNMd0VHUVFScWFqc0JCZ3NnQWlBQ0tBSU1LQUlBTmdJTURBRUxDeUFDTHdFR0MvQUJBUUYvSXdCQkVHc2lBU1FBSUFFZ0FEWUNEQ0FCSUFFb0FndzJBZ2dnQVVFQU5nSUVBMEFnQVNnQ0RBUkFBa0FDUUNBQktBSU1Md0VJUWZYR0FVWU5BQ0FCS0FJTUx3RUlRZlhnQVVZTkFDQUJLQUlNTHdFSVFZR3lBa1lOQUNBQktBSU1Md0VJUVFGSERRRUxJQUVnQVNnQ0RDZ0NBRFlDQUNBQktBSUlJQUVvQWd4R0JFQWdBU0FCS0FJQU5nSUlDeUFCS0FJTVFRQTJBZ0FnQVNnQ0RCQWlJQUVvQWdRRVFDQUJLQUlFSUFFb0FnQTJBZ0FMSUFFZ0FTZ0NBRFlDREF3Q0N5QUJJQUVvQWd3MkFnUWdBU0FCS0FJTUtBSUFOZ0lNREFFTEN5QUJLQUlJSVFBZ0FVRVFhaVFBSUFBTHNnUUJBWDhqQUVGQWFpSUZKQUFnQlNBQU5nSTRJQVVnQVRzQk5pQUZJQUkyQWpBZ0JTQUROZ0lzSUFVZ0JEWUNLQ0FGSUFVb0FqZ2dCUzhCTnEwUUtTSUFOZ0lrQWtBZ0FFVUVRQ0FGS0FJb1FRNUJBQkFVSUFWQkFEb0FQd3dCQ3lBRlFRQTJBaUFnQlVFQU5nSVlBMEFDZnlNQVFSQnJJZ0FnQlNnQ0pEWUNEQ0FBS0FJTUxRQUFRUUZ4Q3dSL0lBVW9BaVFRTVVJRVdnVkJBQXRCQVhFRVFDQUZJQVVvQWlRUUd6c0JGaUFGSUFVb0FpUVFHenNCRkNBRklBVW9BaVFnQlM4QkZLMFFIRFlDRUNBRktBSVFSUVJBSUFVb0FpaEJGVUVBRUJRZ0JTZ0NKQkFXSUFVb0FoZ1FJaUFGUVFBNkFEOE1Bd3NnQlNBRkx3RVdJQVV2QVJRZ0JTZ0NFQ0FGS0FJd0VGSWlBRFlDSENBQVJRUkFJQVVvQWloQkRrRUFFQlFnQlNnQ0pCQVdJQVVvQWhnUUlpQUZRUUE2QUQ4TUF3c0NRQ0FGS0FJWUJFQWdCU2dDSUNBRktBSWNOZ0lBSUFVZ0JTZ0NIRFlDSUF3QkN5QUZJQVVvQWh3aUFEWUNJQ0FGSUFBMkFoZ0xEQUVMQ3lBRktBSWtFRWRCQVhGRkJFQWdCU0FGS0FJa0VERStBZ3dnQlNBRktBSWtJQVVvQWd5dEVCdzJBZ2dDUUFKQUlBVW9BZ3hCQkU4TkFDQUZLQUlJUlEwQUlBVW9BZ2hCb1JVZ0JTZ0NEQkJhUlEwQkN5QUZLQUlvUVJWQkFCQVVJQVVvQWlRUUZpQUZLQUlZRUNJZ0JVRUFPZ0EvREFJTEN5QUZLQUlrRUJZQ1FDQUZLQUlzQkVBZ0JTZ0NMQ0FGS0FJWU5nSUFEQUVMSUFVb0FoZ1FJZ3NnQlVFQk9nQS9DeUFGTFFBL1FRRnhJUUFnQlVGQWF5UUFJQUFMN3dJQkFYOGpBRUVnYXlJQ0pBQWdBaUFBTmdJWUlBSWdBVFlDRkFKQUlBSW9BaGhGQkVBZ0FpQUNLQUlVTmdJY0RBRUxJQUlnQWlnQ0dEWUNDQU5BSUFJb0FnZ29BZ0FFUUNBQ0lBSW9BZ2dvQWdBMkFnZ01BUXNMQTBBZ0FpZ0NGQVJBSUFJZ0FpZ0NGQ2dDQURZQ0VDQUNRUUEyQWdRZ0FpQUNLQUlZTmdJTUEwQUNRQ0FDS0FJTVJRMEFBa0FnQWlnQ0RDOEJDQ0FDS0FJVUx3RUlSdzBBSUFJb0Fnd3ZBUW9nQWlnQ0ZDOEJDa2NOQUNBQ0tBSU1Md0VLQkVBZ0FpZ0NEQ2dDRENBQ0tBSVVLQUlNSUFJb0Fnd3ZBUW9RV2cwQkN5QUNLQUlNSWdBZ0FDZ0NCQ0FDS0FJVUtBSUVRWUFHY1hJMkFnUWdBa0VCTmdJRURBRUxJQUlnQWlnQ0RDZ0NBRFlDREF3QkN3c2dBaWdDRkVFQU5nSUFBa0FnQWlnQ0JBUkFJQUlvQWhRUUlnd0JDeUFDS0FJSUlBSW9BaFFpQURZQ0FDQUNJQUEyQWdnTElBSWdBaWdDRURZQ0ZBd0JDd3NnQWlBQ0tBSVlOZ0ljQ3lBQ0tBSWNJUUFnQWtFZ2FpUUFJQUFMWHdFQmZ5TUFRUkJySWdJa0FDQUNJQUEyQWdnZ0FpQUJPZ0FISUFJZ0FpZ0NDRUlCRUJ3MkFnQUNRQ0FDS0FJQVJRUkFJQUpCZnpZQ0RBd0JDeUFDS0FJQUlBSXRBQWM2QUFBZ0FrRUFOZ0lNQ3lBQ0tBSU1HaUFDUVJCcUpBQUxWQUVCZnlNQVFSQnJJZ0VrQUNBQklBQTJBZ2dnQVNBQktBSUlRZ0VRSERZQ0JBSkFJQUVvQWdSRkJFQWdBVUVBT2dBUERBRUxJQUVnQVNnQ0JDMEFBRG9BRHdzZ0FTMEFEeUVBSUFGQkVHb2tBQ0FBQzV3R0FRSi9Jd0JCSUdzaUFpUUFJQUlnQURZQ0dDQUNJQUUzQXhBQ1FDQUNLUU1RSUFJb0FoZ3BBekJhQkVBZ0FpZ0NHRUVJYWtFU1FRQVFGQ0FDUVg4MkFod01BUXNnQWlnQ0dDZ0NHRUVDY1FSQUlBSW9BaGhCQ0dwQkdVRUFFQlFnQWtGL05nSWNEQUVMSUFJZ0FpZ0NHQ0FDS1FNUVFRQWdBaWdDR0VFSWFoQkxJZ0EyQWd3Z0FFVUVRQ0FDUVg4MkFod01BUXNnQWlnQ0dDZ0NVQ0FDS0FJTUlBSW9BaGhCQ0dvUVZrRUJjVVVFUUNBQ1FYODJBaHdNQVFzQ2Z5QUNLQUlZSVFNZ0Fpa0RFQ0VCSXdCQk1Hc2lBQ1FBSUFBZ0F6WUNLQ0FBSUFFM0F5QWdBRUVCTmdJY0FrQWdBQ2tESUNBQUtBSW9LUU13V2dSQUlBQW9BaWhCQ0dwQkVrRUFFQlFnQUVGL05nSXNEQUVMQWtBZ0FDZ0NIQTBBSUFBb0FpZ29Ba0FnQUNrRElLZEJCSFJxS0FJRVJRMEFJQUFvQWlnb0FrQWdBQ2tESUtkQkJIUnFLQUlFS0FJQVFRSnhSUTBBQWtBZ0FDZ0NLQ2dDUUNBQUtRTWdwMEVFZEdvb0FnQUVRQ0FBSUFBb0FpZ2dBQ2tESUVFSUlBQW9BaWhCQ0dvUVN5SUROZ0lNSUFORkJFQWdBRUYvTmdJc0RBUUxJQUFnQUNnQ0tDQUFLQUlNUVFCQkFCQlZOd01RQWtBZ0FDa0RFRUlBVXcwQUlBQXBBeEFnQUNrRElGRU5BQ0FBS0FJb1FRaHFRUXBCQUJBVUlBQkJmellDTEF3RUN3d0JDeUFBUVFBMkFnd0xJQUFnQUNnQ0tDQUFLUU1nUVFBZ0FDZ0NLRUVJYWhCTElnTTJBZ2dnQTBVRVFDQUFRWDgyQWl3TUFnc2dBQ2dDREFSQUlBQW9BaWdvQWxBZ0FDZ0NEQ0FBS1FNZ1FRQWdBQ2dDS0VFSWFoQjJRUUZ4UlFSQUlBQkJmellDTEF3REN3c2dBQ2dDS0NnQ1VDQUFLQUlJSUFBb0FpaEJDR29RVmtFQmNVVUVRQ0FBS0FJb0tBSlFJQUFvQWd4QkFCQldHaUFBUVg4MkFpd01BZ3NMSUFBb0FpZ29Ba0FnQUNrRElLZEJCSFJxS0FJRUVEY2dBQ2dDS0NnQ1FDQUFLUU1ncDBFRWRHcEJBRFlDQkNBQUtBSW9LQUpBSUFBcEF5Q25RUVIwYWhCZ0lBQkJBRFlDTEFzZ0FDZ0NMQ0VESUFCQk1Hb2tBQ0FEQ3dSQUlBSkJmellDSEF3QkN5QUNLQUlZS0FKQUlBSXBBeENuUVFSMGFrRUJPZ0FNSUFKQkFEWUNIQXNnQWlnQ0hDRUFJQUpCSUdva0FDQUFDNlVFQVFGL0l3QkJNR3NpQlNRQUlBVWdBRFlDS0NBRklBRTNBeUFnQlNBQ05nSWNJQVVnQXpvQUd5QUZJQVEyQWhRQ1FDQUZLQUlvSUFVcEF5QkJBRUVBRUQ1RkJFQWdCVUYvTmdJc0RBRUxJQVVvQWlnb0FoaEJBbkVFUUNBRktBSW9RUWhxUVJsQkFCQVVJQVZCZnpZQ0xBd0JDeUFGSUFVb0FpZ29Ba0FnQlNrRElLZEJCSFJxTmdJUUlBVUNmeUFGS0FJUUtBSUFCRUFnQlNnQ0VDZ0NBQzhCQ0VFSWRnd0JDMEVEQ3pvQUN5QUZBbjhnQlNnQ0VDZ0NBQVJBSUFVb0FoQW9BZ0FvQWtRTUFRdEJnSURZalhnTE5nSUVRUUVoQUNBRklBVXRBQnNnQlMwQUMwWUVmeUFGS0FJVUlBVW9BZ1JIQlVFQkMwRUJjVFlDREFKQUlBVW9BZ3dFUUNBRktBSVFLQUlFUlFSQUlBVW9BaEFvQWdBUVB5RUFJQVVvQWhBZ0FEWUNCQ0FBUlFSQUlBVW9BaWhCQ0dwQkRrRUFFQlFnQlVGL05nSXNEQVFMQ3lBRktBSVFLQUlFSUFVb0FoQW9BZ1F2QVFoQi93RnhJQVV0QUJ0QkNIUnlPd0VJSUFVb0FoQW9BZ1FnQlNnQ0ZEWUNSQ0FGS0FJUUtBSUVJZ0FnQUNnQ0FFRVFjallDQUF3QkN5QUZLQUlRS0FJRUJFQWdCU2dDRUNnQ0JDSUFJQUFvQWdCQmIzRTJBZ0FDUUNBRktBSVFLQUlFS0FJQVJRUkFJQVVvQWhBb0FnUVFOeUFGS0FJUVFRQTJBZ1FNQVFzZ0JTZ0NFQ2dDQkNBRktBSVFLQUlFTHdFSVFmOEJjU0FGTFFBTFFRaDBjanNCQ0NBRktBSVFLQUlFSUFVb0FnUTJBa1FMQ3dzZ0JVRUFOZ0lzQ3lBRktBSXNJUUFnQlVFd2FpUUFJQUFMM1E4Q0FYOEJmaU1BUVVCcUlnUWtBQ0FFSUFBMkFqUWdCRUovTndNb0lBUWdBVFlDSkNBRUlBSTJBaUFnQkNBRE5nSWNBa0FnQkNnQ05DZ0NHRUVDY1FSQUlBUW9BalJCQ0dwQkdVRUFFQlFnQkVKL053TTREQUVMSUFRZ0JDZ0NOQ2tETURjREVDQUVLUU1vUW45UkJFQWdCRUovTndNSUlBUW9BaHhCZ01BQWNRUkFJQVFnQkNnQ05DQUVLQUlrSUFRb0FoeEJBQkJWTndNSUN5QUVLUU1JUW45UkJFQWdCQ2dDTkNFQkl3QkJRR29pQUNRQUlBQWdBVFlDTkFKQUlBQW9BalFwQXpnZ0FDZ0NOQ2tETUVJQmZGZ0VRQ0FBSUFBb0FqUXBBemczQXhnZ0FDQUFLUU1ZUWdHR053TVFBa0FnQUNrREVFSVFWQVJBSUFCQ0VEY0RFQXdCQ3lBQUtRTVFRb0FJVmdSQUlBQkNnQWczQXhBTEN5QUFJQUFwQXhBZ0FDa0RHSHczQXhnZ0FDQUFLUU1ZcDBFRWRLMDNBd2dnQUNrRENDQUFLQUkwS1FNNHAwRUVkSzFVQkVBZ0FDZ0NORUVJYWtFT1FRQVFGQ0FBUW44M0F6Z01BZ3NnQUNBQUtBSTBLQUpBSUFBcEF4aW5RUVIwRUV3MkFpUWdBQ2dDSkVVRVFDQUFLQUkwUVFocVFRNUJBQkFVSUFCQ2Z6Y0RPQXdDQ3lBQUtBSTBJQUFvQWlRMkFrQWdBQ2dDTkNBQUtRTVlOd000Q3lBQUtBSTBJZ0VwQXpBaEJTQUJJQVZDQVh3M0F6QWdBQ0FGTndNb0lBQW9BalFvQWtBZ0FDa0RLS2RCQkhScUVMMEJJQUFnQUNrREtEY0RPQXNnQUNrRE9DRUZJQUJCUUdza0FDQUVJQVUzQXdnZ0JVSUFVd1JBSUFSQ2Z6Y0RPQXdEQ3dzZ0JDQUVLUU1JTndNb0N3SkFJQVFvQWlSRkRRQWdCQ2dDTkNFQklBUXBBeWdoQlNBRUtBSWtJUUlnQkNnQ0hDRURJd0JCUUdvaUFDUUFJQUFnQVRZQ09DQUFJQVUzQXpBZ0FDQUNOZ0lzSUFBZ0F6WUNLQUpBSUFBcEF6QWdBQ2dDT0NrRE1Gb0VRQ0FBS0FJNFFRaHFRUkpCQUJBVUlBQkJmellDUEF3QkN5QUFLQUk0S0FJWVFRSnhCRUFnQUNnQ09FRUlha0VaUVFBUUZDQUFRWDgyQWp3TUFRc0NRQUpBSUFBb0FpeEZEUUFnQUNnQ0xDd0FBRVVOQUNBQUlBQW9BaXdnQUNnQ0xCQXVRZi8vQTNFZ0FDZ0NLQ0FBS0FJNFFRaHFFRTBpQVRZQ0lDQUJSUVJBSUFCQmZ6WUNQQXdEQ3dKQUlBQW9BaWhCZ0RCeERRQWdBQ2dDSUVFQUVEcEJBMGNOQUNBQUtBSWdRUUkyQWdnTERBRUxJQUJCQURZQ0lBc2dBQ0FBS0FJNElBQW9BaXhCQUVFQUVGVWlCVGNERUFKQUlBVkNBRk1OQUNBQUtRTVFJQUFwQXpCUkRRQWdBQ2dDSUJBaklBQW9BamhCQ0dwQkNrRUFFQlFnQUVGL05nSThEQUVMQWtBZ0FDa0RFRUlBVXcwQUlBQXBBeEFnQUNrRE1GSU5BQ0FBS0FJZ0VDTWdBRUVBTmdJOERBRUxJQUFnQUNnQ09DZ0NRQ0FBS1FNd3AwRUVkR28yQWlRQ1FDQUFLQUlrS0FJQUJFQWdBQ0FBS0FJa0tBSUFLQUl3SUFBb0FpQVFod0ZCQUVjNkFCOE1BUXNnQUVFQU9nQWZDd0pBSUFBdEFCOUJBWEVOQUNBQUtBSWtLQUlFRFFBZ0FDZ0NKQ2dDQUJBL0lRRWdBQ2dDSkNBQk5nSUVJQUZGQkVBZ0FDZ0NPRUVJYWtFT1FRQVFGQ0FBS0FJZ0VDTWdBRUYvTmdJOERBSUxDeUFBQW44Z0FDMEFIMEVCY1FSQUlBQW9BaVFvQWdBb0FqQU1BUXNnQUNnQ0lBdEJBRUVBSUFBb0FqaEJDR29RUmlJQk5nSUlJQUZGQkVBZ0FDZ0NJQkFqSUFCQmZ6WUNQQXdCQ3dKQUlBQW9BaVFvQWdRRVFDQUFJQUFvQWlRb0FnUW9BakEyQWdRTUFRc0NRQ0FBS0FJa0tBSUFCRUFnQUNBQUtBSWtLQUlBS0FJd05nSUVEQUVMSUFCQkFEWUNCQXNMQWtBZ0FDZ0NCQVJBSUFBZ0FDZ0NCRUVBUVFBZ0FDZ0NPRUVJYWhCR0lnRTJBZ3dnQVVVRVFDQUFLQUlnRUNNZ0FFRi9OZ0k4REFNTERBRUxJQUJCQURZQ0RBc2dBQ2dDT0NnQ1VDQUFLQUlJSUFBcEF6QkJBQ0FBS0FJNFFRaHFFSFpCQVhGRkJFQWdBQ2dDSUJBaklBQkJmellDUEF3QkN5QUFLQUlNQkVBZ0FDZ0NPQ2dDVUNBQUtBSU1RUUFRVmhvTEFrQWdBQzBBSDBFQmNRUkFJQUFvQWlRb0FnUUVRQ0FBS0FJa0tBSUVLQUlBUVFKeEJFQWdBQ2dDSkNnQ0JDZ0NNQkFqSUFBb0FpUW9BZ1FpQVNBQktBSUFRWDF4TmdJQUFrQWdBQ2dDSkNnQ0JDZ0NBRVVFUUNBQUtBSWtLQUlFRURjZ0FDZ0NKRUVBTmdJRURBRUxJQUFvQWlRb0FnUWdBQ2dDSkNnQ0FDZ0NNRFlDTUFzTEN5QUFLQUlnRUNNTUFRc2dBQ2dDSkNnQ0JDZ0NBRUVDY1FSQUlBQW9BaVFvQWdRb0FqQVFJd3NnQUNnQ0pDZ0NCQ0lCSUFFb0FnQkJBbkkyQWdBZ0FDZ0NKQ2dDQkNBQUtBSWdOZ0l3Q3lBQVFRQTJBandMSUFBb0Fqd2hBU0FBUVVCckpBQWdBVVVOQUNBRUtBSTBLUU13SUFRcEF4QlNCRUFnQkNnQ05DZ0NRQ0FFS1FNb3AwRUVkR29RZlNBRUtBSTBJQVFwQXhBM0F6QUxJQVJDZnpjRE9Bd0JDeUFFS0FJMEtBSkFJQVFwQXlpblFRUjBhaEJnQWtBZ0JDZ0NOQ2dDUUNBRUtRTW9wMEVFZEdvb0FnQkZEUUFnQkNnQ05DZ0NRQ0FFS1FNb3AwRUVkR29vQWdRRVFDQUVLQUkwS0FKQUlBUXBBeWluUVFSMGFpZ0NCQ2dDQUVFQmNRMEJDeUFFS0FJMEtBSkFJQVFwQXlpblFRUjBhaWdDQkVVRVFDQUVLQUkwS0FKQUlBUXBBeWluUVFSMGFpZ0NBQkEvSVFBZ0JDZ0NOQ2dDUUNBRUtRTW9wMEVFZEdvZ0FEWUNCQ0FBUlFSQUlBUW9BalJCQ0dwQkRrRUFFQlFnQkVKL053TTREQU1MQ3lBRUtBSTBLQUpBSUFRcEF5aW5RUVIwYWlnQ0JFRitOZ0lRSUFRb0FqUW9Ba0FnQkNrREtLZEJCSFJxS0FJRUlnQWdBQ2dDQUVFQmNqWUNBQXNnQkNnQ05DZ0NRQ0FFS1FNb3AwRUVkR29nQkNnQ0lEWUNDQ0FFSUFRcEF5ZzNBemdMSUFRcEF6Z2hCU0FFUVVCckpBQWdCUXVxQVFFQmZ5TUFRVEJySWdJa0FDQUNJQUEyQWlnZ0FpQUJOd01nSUFKQkFEWUNIQUpBQWtBZ0FpZ0NLQ2dDSkVFQlJnUkFJQUlvQWh4RkRRRWdBaWdDSEVFQlJnMEJJQUlvQWh4QkFrWU5BUXNnQWlnQ0tFRU1ha0VTUVFBUUZDQUNRWDgyQWl3TUFRc2dBaUFDS1FNZ053TUlJQUlnQWlnQ0hEWUNFQ0FDUVg5QkFDQUNLQUlvSUFKQkNHcENFRUVNRUI5Q0FGTWJOZ0lzQ3lBQ0tBSXNJUUFnQWtFd2FpUUFJQUFMcFRJREJuOEJmZ0Y4SXdCQjRBQnJJZ1FrQUNBRUlBQTJBbGdnQkNBQk5nSlVJQVFnQWpZQ1VBSkFBa0FnQkNnQ1ZFRUFUZ1JBSUFRb0FsZ05BUXNnQkNnQ1VFRVNRUUFRRkNBRVFRQTJBbHdNQVFzZ0JDQUVLQUpVTmdKTUl3QkJFR3NpQUNBRUtBSllOZ0lNSUFRZ0FDZ0NEQ2tER0RjRFFFR2duUUVwQXdCQ2YxRUVRQ0FFUVg4MkFoUWdCRUVETmdJUUlBUkJCellDRENBRVFRWTJBZ2dnQkVFQ05nSUVJQVJCQVRZQ0FFR2duUUZCQUNBRUVEUTNBd0FnQkVGL05nSTBJQVJCRHpZQ01DQUVRUTAyQWl3Z0JFRU1OZ0lvSUFSQkNqWUNKQ0FFUVFrMkFpQkJxSjBCUVFnZ0JFRWdhaEEwTndNQUMwR2duUUVwQXdBZ0JDa0RRRUdnblFFcEF3Q0RVZ1JBSUFRb0FsQkJIRUVBRUJRZ0JFRUFOZ0pjREFFTFFhaWRBU2tEQUNBRUtRTkFRYWlkQVNrREFJTlNCRUFnQkNBRUtBSk1RUkJ5TmdKTUN5QUVLQUpNUVJoeFFSaEdCRUFnQkNnQ1VFRVpRUUFRRkNBRVFRQTJBbHdNQVFzZ0JDZ0NXQ0VCSUFRb0FsQWhBaU1BUWRBQWF5SUFKQUFnQUNBQk5nSklJQUFnQWpZQ1JDQUFRUWhxRURzQ1FDQUFLQUpJSUFCQkNHb1FPUVJBSXdCQkVHc2lBU0FBS0FKSU5nSU1JQUFnQVNnQ0RFRU1hallDQkNNQVFSQnJJZ0VnQUNnQ0JEWUNEQUpBSUFFb0Fnd29BZ0JCQlVjTkFDTUFRUkJySWdFZ0FDZ0NCRFlDRENBQktBSU1LQUlFUVN4SERRQWdBRUVBTmdKTURBSUxJQUFvQWtRZ0FDZ0NCQkJFSUFCQmZ6WUNUQXdCQ3lBQVFRRTJBa3dMSUFBb0Frd2hBU0FBUWRBQWFpUUFJQVFnQVRZQ1BBSkFBa0FDUUNBRUtBSThRUUZxRGdJQUFRSUxJQVJCQURZQ1hBd0NDeUFFS0FKTVFRRnhSUVJBSUFRb0FsQkJDVUVBRUJRZ0JFRUFOZ0pjREFJTElBUWdCQ2dDV0NBRUtBSk1JQVFvQWxBUWF6WUNYQXdCQ3lBRUtBSk1RUUp4QkVBZ0JDZ0NVRUVLUVFBUUZDQUVRUUEyQWx3TUFRc2dCQ2dDV0JCSVFRQklCRUFnQkNnQ1VDQUVLQUpZRUJnZ0JFRUFOZ0pjREFFTEFrQWdCQ2dDVEVFSWNRUkFJQVFnQkNnQ1dDQUVLQUpNSUFRb0FsQVFhellDT0F3QkN5QUVLQUpZSVFBZ0JDZ0NUQ0VCSUFRb0FsQWhBaU1BUWZBQWF5SURKQUFnQXlBQU5nSm9JQU1nQVRZQ1pDQURJQUkyQW1BZ0EwRWdhaEE3QWtBZ0F5Z0NhQ0FEUVNCcUVEbEJBRWdFUUNBREtBSmdJQU1vQW1nUUdDQURRUUEyQW13TUFRc2dBeWtESUVJRWcxQUVRQ0FES0FKZ1FRUkJpZ0VRRkNBRFFRQTJBbXdNQVFzZ0F5QURLUU00TndNWUlBTWdBeWdDYUNBREtBSmtJQU1vQW1BUWF5SUFOZ0pjSUFCRkJFQWdBMEVBTmdKc0RBRUxBa0FnQXlrREdGQkZEUUFnQXlnQ2FCQ2ZBVUVCY1VVTkFDQURJQU1vQWx3MkFtd01BUXNnQXlnQ1hDRUFJQU1wQXhnaENTTUFRZUFBYXlJQ0pBQWdBaUFBTmdKWUlBSWdDVGNEVUFKQUlBSXBBMUJDRmxRRVFDQUNLQUpZUVFocVFSTkJBQkFVSUFKQkFEWUNYQXdCQ3lBQ0FuNGdBaWtEVUVLcWdBUlVCRUFnQWlrRFVBd0JDMEtxZ0FRTE53TXdJQUlvQWxnb0FnQkNBQ0FDS1FNd2ZVRUNFQ2hCQUVnRVFDTUFRUkJySWdBZ0FpZ0NXQ2dDQURZQ0RDQUNJQUFvQWd4QkRHbzJBZ2dDUUFKL0l3QkJFR3NpQUNBQ0tBSUlOZ0lNSUFBb0Fnd29BZ0JCQkVZTEJFQWpBRUVRYXlJQUlBSW9BZ2cyQWd3Z0FDZ0NEQ2dDQkVFV1JnMEJDeUFDS0FKWVFRaHFJQUlvQWdnUVJDQUNRUUEyQWx3TUFnc0xJQUlnQWlnQ1dDZ0NBQkJKSWdrM0F6Z2dDVUlBVXdSQUlBSW9BbGhCQ0dvZ0FpZ0NXQ2dDQUJBWUlBSkJBRFlDWEF3QkN5QUNJQUlvQWxnb0FnQWdBaWtETUVFQUlBSW9BbGhCQ0dvUVFTSUFOZ0lNSUFCRkJFQWdBa0VBTmdKY0RBRUxJQUpDZnpjRElDQUNRUUEyQWt3Z0Fpa0RNRUtxZ0FSYUJFQWdBaWdDREVJVUVDd2FDeUFDUVJCcVFSTkJBQkFVSUFJZ0FpZ0NERUlBRUJ3MkFrUURRQUpBSUFJb0FrUWhBU0FDS0FJTUVERkNFbjJuSVFVakFFRWdheUlBSkFBZ0FDQUJOZ0lZSUFBZ0JUWUNGQ0FBUWZRU05nSVFJQUJCQkRZQ0RBSkFBa0FnQUNnQ0ZDQUFLQUlNVHdSQUlBQW9BZ3dOQVFzZ0FFRUFOZ0ljREFFTElBQWdBQ2dDR0VFQmF6WUNDQU5BQWtBZ0FDQUFLQUlJUVFGcUlBQW9BaEF0QUFBZ0FDZ0NHQ0FBS0FJSWF5QUFLQUlVSUFBb0FneHJhaENzQVNJQk5nSUlJQUZGRFFBZ0FDZ0NDRUVCYWlBQUtBSVFRUUZxSUFBb0FneEJBV3NRV2cwQklBQWdBQ2dDQ0RZQ0hBd0NDd3NnQUVFQU5nSWNDeUFBS0FJY0lRRWdBRUVnYWlRQUlBSWdBVFlDUkNBQlJRMEFJQUlvQWd3Z0FpZ0NSQUovSXdCQkVHc2lBQ0FDS0FJTU5nSU1JQUFvQWd3b0FnUUxhNndRTEJvZ0FpZ0NXQ0VCSUFJb0Fnd2hCU0FDS1FNNElRa2pBRUh3QUdzaUFDUUFJQUFnQVRZQ2FDQUFJQVUyQW1RZ0FDQUpOd05ZSUFBZ0FrRVFhallDVkNNQVFSQnJJZ0VnQUNnQ1pEWUNEQ0FBQW40Z0FTZ0NEQzBBQUVFQmNRUkFJQUVvQWd3cEF4QU1BUXRDQUFzM0F6QUNRQ0FBS0FKa0VERkNGbFFFUUNBQUtBSlVRUk5CQUJBVUlBQkJBRFlDYkF3QkN5QUFLQUprUWdRUUhDZ0FBRUhRbHBVd1J3UkFJQUFvQWxSQkUwRUFFQlFnQUVFQU5nSnNEQUVMQWtBQ1FDQUFLUU13UWhSVURRQWpBRUVRYXlJQklBQW9BbVEyQWd3Z0FTZ0NEQ2dDQkNBQUtRTXdwMnBCRkdzb0FBQkIwSmFaT0VjTkFDQUFLQUprSUFBcEF6QkNGSDBRTEJvZ0FDZ0NhQ2dDQUNFRklBQW9BbVFoQmlBQUtRTllJUWtnQUNnQ2FDZ0NGQ0VISUFBb0FsUWhDQ01BUWJBQmF5SUJKQUFnQVNBRk5nS29BU0FCSUFZMkFxUUJJQUVnQ1RjRG1BRWdBU0FITmdLVUFTQUJJQWcyQXBBQkl3QkJFR3NpQlNBQktBS2tBVFlDRENBQkFuNGdCU2dDREMwQUFFRUJjUVJBSUFVb0Fnd3BBeEFNQVF0Q0FBczNBeGdnQVNnQ3BBRkNCQkFjR2lBQklBRW9BcVFCRUJ0Qi8vOERjVFlDRUNBQklBRW9BcVFCRUJ0Qi8vOERjVFlDQ0NBQklBRW9BcVFCRURJM0F6Z0NRQ0FCS1FNNFF2Ly8vLy8vLy8vLy93QldCRUFnQVNnQ2tBRkJCRUVXRUJRZ0FVRUFOZ0tzQVF3QkN5QUJLUU00UWpoOElBRXBBeGdnQVNrRG1BRjhWZ1JBSUFFb0FwQUJRUlZCQUJBVUlBRkJBRFlDckFFTUFRc0NRQUpBSUFFcEF6Z2dBU2tEbUFGVURRQWdBU2tET0VJNGZDQUJLUU9ZQVFKK0l3QkJFR3NpQlNBQktBS2tBVFlDRENBRktBSU1LUU1JQzN4V0RRQWdBU2dDcEFFZ0FTa0RPQ0FCS1FPWUFYMFFMQm9nQVVFQU9nQVhEQUVMSUFFb0FxZ0JJQUVwQXpoQkFCQW9RUUJJQkVBZ0FTZ0NrQUVnQVNnQ3FBRVFHQ0FCUVFBMkFxd0JEQUlMSUFFZ0FTZ0NxQUZDT0NBQlFVQnJJQUVvQXBBQkVFRWlCVFlDcEFFZ0JVVUVRQ0FCUVFBMkFxd0JEQUlMSUFGQkFUb0FGd3NnQVNnQ3BBRkNCQkFjS0FBQVFkQ1dtVEJIQkVBZ0FTZ0NrQUZCRlVFQUVCUWdBUzBBRjBFQmNRUkFJQUVvQXFRQkVCWUxJQUZCQURZQ3JBRU1BUXNnQVNBQktBS2tBUkF5TndNd0FrQWdBU2dDbEFGQkJIRkZEUUFnQVNrRE1DQUJLUU00ZkVJTWZDQUJLUU9ZQVNBQktRTVlmRkVOQUNBQktBS1FBVUVWUVFBUUZDQUJMUUFYUVFGeEJFQWdBU2dDcEFFUUZnc2dBVUVBTmdLc0FRd0JDeUFCS0FLa0FVSUVFQndhSUFFZ0FTZ0NwQUVRS2pZQ0RDQUJJQUVvQXFRQkVDbzJBZ1FnQVNnQ0VFSC8vd05HQkVBZ0FTQUJLQUlNTmdJUUN5QUJLQUlJUWYvL0EwWUVRQ0FCSUFFb0FnUTJBZ2dMQWtBZ0FTZ0NsQUZCQkhGRkRRQWdBU2dDQ0NBQktBSUVSZ1JBSUFFb0FoQWdBU2dDREVZTkFRc2dBU2dDa0FGQkZVRUFFQlFnQVMwQUYwRUJjUVJBSUFFb0FxUUJFQllMSUFGQkFEWUNyQUVNQVFzQ1FDQUJLQUlRUlFSQUlBRW9BZ2hGRFFFTElBRW9BcEFCUVFGQkFCQVVJQUV0QUJkQkFYRUVRQ0FCS0FLa0FSQVdDeUFCUVFBMkFxd0JEQUVMSUFFZ0FTZ0NwQUVRTWpjREtDQUJJQUVvQXFRQkVESTNBeUFnQVNrREtDQUJLUU1nVWdSQUlBRW9BcEFCUVFGQkFCQVVJQUV0QUJkQkFYRUVRQ0FCS0FLa0FSQVdDeUFCUVFBMkFxd0JEQUVMSUFFZ0FTZ0NwQUVRTWpjRE1DQUJJQUVvQXFRQkVESTNBNEFCQW44akFFRVFheUlGSUFFb0FxUUJOZ0lNSUFVb0Fnd3RBQUJCQVhGRkN3UkFJQUVvQXBBQlFSUkJBQkFVSUFFdEFCZEJBWEVFUUNBQktBS2tBUkFXQ3lBQlFRQTJBcXdCREFFTElBRXRBQmRCQVhFRVFDQUJLQUtrQVJBV0N3SkFJQUVwQTRBQlF2Ly8vLy8vLy8vLy93QllCRUFnQVNrRGdBRWdBU2tEZ0FFZ0FTa0RNSHhZRFFFTElBRW9BcEFCUVFSQkZoQVVJQUZCQURZQ3JBRU1BUXNnQVNrRGdBRWdBU2tETUh3Z0FTa0RtQUVnQVNrRE9IeFdCRUFnQVNnQ2tBRkJGVUVBRUJRZ0FVRUFOZ0tzQVF3QkN3SkFJQUVvQXBRQlFRUnhSUTBBSUFFcEE0QUJJQUVwQXpCOElBRXBBNWdCSUFFcEF6aDhVUTBBSUFFb0FwQUJRUlZCQUJBVUlBRkJBRFlDckFFTUFRc2dBU2tES0NBQktRTXdRaTZBVmdSQUlBRW9BcEFCUVJWQkFCQVVJQUZCQURZQ3JBRU1BUXNnQVNBQktRTW9JQUVvQXBBQkVKRUJJZ1UyQW93QklBVkZCRUFnQVVFQU5nS3NBUXdCQ3lBQktBS01BVUVCT2dBc0lBRW9Bb3dCSUFFcEF6QTNBeGdnQVNnQ2pBRWdBU2tEZ0FFM0F5QWdBU0FCS0FLTUFUWUNyQUVMSUFFb0Fxd0JJUVVnQVVHd0FXb2tBQ0FBSUFVMkFsQU1BUXNnQUNnQ1pDQUFLUU13RUN3YUlBQW9BbVFoQlNBQUtRTllJUWtnQUNnQ2FDZ0NGQ0VHSUFBb0FsUWhCeU1BUWRBQWF5SUJKQUFnQVNBRk5nSklJQUVnQ1RjRFFDQUJJQVkyQWp3Z0FTQUhOZ0k0QWtBZ0FTZ0NTQkF4UWhaVUJFQWdBU2dDT0VFVlFRQVFGQ0FCUVFBMkFrd01BUXNqQUVFUWF5SUZJQUVvQWtnMkFnd2dBUUorSUFVb0Fnd3RBQUJCQVhFRVFDQUZLQUlNS1FNUURBRUxRZ0FMTndNSUlBRW9Ba2hDQkJBY0dpQUJLQUpJRUNvRVFDQUJLQUk0UVFGQkFCQVVJQUZCQURZQ1RBd0JDeUFCSUFFb0FrZ1FHMEgvL3dOeHJUY0RLQ0FCSUFFb0FrZ1FHMEgvL3dOeHJUY0RJQ0FCS1FNZ0lBRXBBeWhTQkVBZ0FTZ0NPRUVUUVFBUUZDQUJRUUEyQWt3TUFRc2dBU0FCS0FKSUVDcXROd01ZSUFFZ0FTZ0NTQkFxclRjREVDQUJLUU1RSUFFcEF4QWdBU2tER0h4V0JFQWdBU2dDT0VFRVFSWVFGQ0FCUVFBMkFrd01BUXNnQVNrREVDQUJLUU1ZZkNBQktRTkFJQUVwQXdoOFZnUkFJQUVvQWpoQkZVRUFFQlFnQVVFQU5nSk1EQUVMQWtBZ0FTZ0NQRUVFY1VVTkFDQUJLUU1RSUFFcEF4aDhJQUVwQTBBZ0FTa0RDSHhSRFFBZ0FTZ0NPRUVWUVFBUUZDQUJRUUEyQWt3TUFRc2dBU0FCS1FNZ0lBRW9BamdRa1FFaUJUWUNOQ0FGUlFSQUlBRkJBRFlDVEF3QkN5QUJLQUkwUVFBNkFDd2dBU2dDTkNBQktRTVlOd01ZSUFFb0FqUWdBU2tERURjRElDQUJJQUVvQWpRMkFrd0xJQUVvQWt3aEJTQUJRZEFBYWlRQUlBQWdCVFlDVUFzZ0FDZ0NVRVVFUUNBQVFRQTJBbXdNQVFzZ0FDZ0NaQ0FBS1FNd1FoUjhFQ3dhSUFBZ0FDZ0NaQkFiT3dGT0lBQW9BbEFwQXlBZ0FDZ0NVQ2tER0h3Z0FDa0RXQ0FBS1FNd2ZGWUVRQ0FBS0FKVVFSVkJBQkFVSUFBb0FsQVFKQ0FBUVFBMkFtd01BUXNDUUNBQUx3Rk9SUVJBSUFBb0FtZ29BZ1JCQkhGRkRRRUxJQUFvQW1RZ0FDa0RNRUlXZkJBc0dpQUFJQUFvQW1RUU1UY0RJQUpBSUFBcEF5QWdBQzhCVHExYUJFQWdBQ2dDYUNnQ0JFRUVjVVVOQVNBQUtRTWdJQUF2QVU2dFVRMEJDeUFBS0FKVVFSVkJBQkFVSUFBb0FsQVFKQ0FBUVFBMkFtd01BZ3NnQUM4QlRnUkFJQUFvQW1RZ0FDOEJUcTBRSENBQUx3Rk9RUUFnQUNnQ1ZCQk5JUUVnQUNnQ1VDQUJOZ0lvSUFGRkJFQWdBQ2dDVUJBa0lBQkJBRFlDYkF3REN3c0xBa0FnQUNnQ1VDa0RJQ0FBS1FOWVdnUkFJQUFvQW1RZ0FDZ0NVQ2tESUNBQUtRTllmUkFzR2lBQUlBQW9BbVFnQUNnQ1VDa0RHQkFjSWdFMkFod2dBVVVFUUNBQUtBSlVRUlZCQUJBVUlBQW9BbEFRSkNBQVFRQTJBbXdNQXdzZ0FDQUFLQUljSUFBb0FsQXBBeGdRS1NJQk5nSXNJQUZGQkVBZ0FDZ0NWRUVPUVFBUUZDQUFLQUpRRUNRZ0FFRUFOZ0pzREFNTERBRUxJQUJCQURZQ0xDQUFLQUpvS0FJQUlBQW9BbEFwQXlCQkFCQW9RUUJJQkVBZ0FDZ0NWQ0FBS0FKb0tBSUFFQmdnQUNnQ1VCQWtJQUJCQURZQ2JBd0NDeUFBS0FKb0tBSUFFRWtnQUNnQ1VDa0RJRklFUUNBQUtBSlVRUk5CQUJBVUlBQW9BbEFRSkNBQVFRQTJBbXdNQWdzTElBQWdBQ2dDVUNrREdEY0RPQ0FBUWdBM0EwQURRQUpBSUFBcEF6aFFEUUFnQUVFQU9nQWJJQUFwQTBBZ0FDZ0NVQ2tEQ0ZFRVFDQUFLQUpRTFFBc1FRRnhEUUVnQUNrRE9FSXVWQTBCSUFBb0FsQkNnSUFFSUFBb0FsUVFrQUZCQVhGRkJFQWdBQ2dDVUJBa0lBQW9BaXdRRmlBQVFRQTJBbXdNQkFzZ0FFRUJPZ0FiQ3lNQVFSQnJJZ0VrQUNBQlFkZ0FFQmtpQlRZQ0NBSkFJQVZGQkVBZ0FVRUFOZ0lNREFFTElBRW9BZ2dRVUNBQklBRW9BZ2cyQWd3TElBRW9BZ3doQlNBQlFSQnFKQUFnQlNFQklBQW9BbEFvQWdBZ0FDa0RRS2RCQkhScUlBRTJBZ0FDUUNBQkJFQWdBQ0FBS0FKUUtBSUFJQUFwQTBDblFRUjBhaWdDQUNBQUtBSm9LQUlBSUFBb0FpeEJBQ0FBS0FKVUVJMEJJZ2szQXhBZ0NVSUFXUTBCQ3dKQUlBQXRBQnRCQVhGRkRRQWpBRUVRYXlJQklBQW9BbFEyQWd3Z0FTZ0NEQ2dDQUVFVFJ3MEFJQUFvQWxSQkZVRUFFQlFMSUFBb0FsQVFKQ0FBS0FJc0VCWWdBRUVBTmdKc0RBTUxJQUFnQUNrRFFFSUJmRGNEUUNBQUlBQXBBemdnQUNrREVIMDNBemdNQVFzTEFrQWdBQ2tEUUNBQUtBSlFLUU1JVVFSQUlBQXBBemhRRFFFTElBQW9BbFJCRlVFQUVCUWdBQ2dDTEJBV0lBQW9BbEFRSkNBQVFRQTJBbXdNQVFzZ0FDZ0NhQ2dDQkVFRWNRUkFBa0FnQUNnQ0xBUkFJQUFnQUNnQ0xCQkhRUUZ4T2dBUERBRUxJQUFnQUNnQ2FDZ0NBQkJKTndNQUlBQXBBd0JDQUZNRVFDQUFLQUpVSUFBb0FtZ29BZ0FRR0NBQUtBSlFFQ1FnQUVFQU5nSnNEQU1MSUFBZ0FDa0RBQ0FBS0FKUUtRTWdJQUFvQWxBcEF4aDhVVG9BRHdzZ0FDMEFEMEVCY1VVRVFDQUFLQUpVUVJWQkFCQVVJQUFvQWl3UUZpQUFLQUpRRUNRZ0FFRUFOZ0pzREFJTEN5QUFLQUlzRUJZZ0FDQUFLQUpRTmdKc0N5QUFLQUpzSVFFZ0FFSHdBR29rQUNBQ0lBRTJBa2dnQVFSQUFrQWdBaWdDVEFSQUlBSXBBeUJDQUZjRVFDQUNJQUlvQWxnZ0FpZ0NUQ0FDUVJCcUVHbzNBeUFMSUFJZ0FpZ0NXQ0FDS0FKSUlBSkJFR29RYWpjREtBSkFJQUlwQXlBZ0Fpa0RLRk1FUUNBQ0tBSk1FQ1FnQWlBQ0tBSklOZ0pNSUFJZ0Fpa0RLRGNESUF3QkN5QUNLQUpJRUNRTERBRUxJQUlnQWlnQ1NEWUNUQUpBSUFJb0FsZ29BZ1JCQkhFRVFDQUNJQUlvQWxnZ0FpZ0NUQ0FDUVJCcUVHbzNBeUFNQVFzZ0FrSUFOd01nQ3dzZ0FrRUFOZ0pJQ3lBQ0lBSW9Ba1JCQVdvMkFrUWdBaWdDRENBQ0tBSkVBbjhqQUVFUWF5SUFJQUlvQWd3MkFnd2dBQ2dDRENnQ0JBdHJyQkFzR2d3QkN3c2dBaWdDREJBV0lBSXBBeUJDQUZNRVFDQUNLQUpZUVFocUlBSkJFR29RUkNBQ0tBSk1FQ1FnQWtFQU5nSmNEQUVMSUFJZ0FpZ0NURFlDWEFzZ0FpZ0NYQ0VBSUFKQjRBQnFKQUFnQXlBQU5nSllJQUJGQkVBZ0F5Z0NZQ0FES0FKY1FRaHFFRVFqQUVFUWF5SUFJQU1vQW1nMkFnd2dBQ2dDRENJQUlBQW9BakJCQVdvMkFqQWdBeWdDWEJBOElBTkJBRFlDYkF3QkN5QURLQUpjSUFNb0FsZ29BZ0EyQWtBZ0F5Z0NYQ0FES0FKWUtRTUlOd013SUFNb0Fsd2dBeWdDV0NrREVEY0RPQ0FES0FKY0lBTW9BbGdvQWlnMkFpQWdBeWdDV0JBVklBTW9BbHdvQWxBaEFDQURLQUpjS1FNd0lRa2dBeWdDWEVFSWFpRUNJd0JCSUdzaUFTUUFJQUVnQURZQ0dDQUJJQWszQXhBZ0FTQUNOZ0lNQWtBZ0FTa0RFRkFFUUNBQlFRRTZBQjhNQVFzakFFRWdheUlBSUFFcEF4QTNBeEFnQUNBQUtRTVF1a1FBQUFBQUFBRG9QNk01QXdnQ1FDQUFLd01JUkFBQTRQLy8vKzlCWkFSQUlBQkJmellDQkF3QkN5QUFBbjhnQUNzRENDSUtSQUFBQUFBQUFQQkJZeUFLUkFBQUFBQUFBQUFBWm5FRVFDQUtxd3dCQzBFQUN6WUNCQXNDUUNBQUtBSUVRWUNBZ0lCNFN3UkFJQUJCZ0lDQWdIZzJBaHdNQVFzZ0FDQUFLQUlFUVFGck5nSUVJQUFnQUNnQ0JDQUFLQUlFUVFGMmNqWUNCQ0FBSUFBb0FnUWdBQ2dDQkVFQ2RuSTJBZ1FnQUNBQUtBSUVJQUFvQWdSQkJIWnlOZ0lFSUFBZ0FDZ0NCQ0FBS0FJRVFRaDJjallDQkNBQUlBQW9BZ1FnQUNnQ0JFRVFkbkkyQWdRZ0FDQUFLQUlFUVFGcU5nSUVJQUFnQUNnQ0JEWUNIQXNnQVNBQUtBSWNOZ0lJSUFFb0FnZ2dBU2dDR0NnQ0FFMEVRQ0FCUVFFNkFCOE1BUXNnQVNnQ0dDQUJLQUlJSUFFb0Fnd1FWMEVCY1VVRVFDQUJRUUE2QUI4TUFRc2dBVUVCT2dBZkN5QUJMUUFmR2lBQlFTQnFKQUFnQTBJQU53TVFBMEFnQXlrREVDQURLQUpjS1FNd1ZBUkFJQU1nQXlnQ1hDZ0NRQ0FES1FNUXAwRUVkR29vQWdBb0FqQkJBRUVBSUFNb0FtQVFSallDRENBREtBSU1SUVJBSXdCQkVHc2lBQ0FES0FKb05nSU1JQUFvQWd3aUFDQUFLQUl3UVFGcU5nSXdJQU1vQWx3UVBDQURRUUEyQW13TUF3c2dBeWdDWENnQ1VDQURLQUlNSUFNcEF4QkJDQ0FES0FKY1FRaHFFSFpCQVhGRkJFQUNRQ0FES0FKY0tBSUlRUXBHQkVBZ0F5Z0NaRUVFY1VVTkFRc2dBeWdDWUNBREtBSmNRUWhxRUVRakFFRVFheUlBSUFNb0FtZzJBZ3dnQUNnQ0RDSUFJQUFvQWpCQkFXbzJBakFnQXlnQ1hCQThJQU5CQURZQ2JBd0VDd3NnQXlBREtRTVFRZ0Y4TndNUURBRUxDeUFES0FKY0lBTW9BbHdvQWhRMkFoZ2dBeUFES0FKY05nSnNDeUFES0FKc0lRQWdBMEh3QUdva0FDQUVJQUEyQWpnTElBUW9BamhGQkVBZ0JDZ0NXQkF3R2lBRVFRQTJBbHdNQVFzZ0JDQUVLQUk0TmdKY0N5QUVLQUpjSVFBZ0JFSGdBR29rQUNBQUM0NEJBUUYvSXdCQkVHc2lBaVFBSUFJZ0FEWUNEQ0FDSUFFMkFnZ2dBa0VBTmdJRUlBSW9BZ2dFUUNNQVFSQnJJZ0FnQWlnQ0NEWUNEQ0FDSUFBb0Fnd29BZ0EyQWdRZ0FpZ0NDQkMwQVVFQlJnUkFJd0JCRUdzaUFDQUNLQUlJTmdJTVFmaWRBU0FBS0FJTUtBSUVOZ0lBQ3dzZ0FpZ0NEQVJBSUFJb0Fnd2dBaWdDQkRZQ0FBc2dBa0VRYWlRQUM1VUJBUUYvSXdCQkVHc2lBU1FBSUFFZ0FEWUNDQUpBQW44akFFRVFheUlBSUFFb0FnZzJBZ3dnQUNnQ0RDa0RHRUtBZ0JDRFVBc0VRQ0FCS0FJSUtBSUFCRUFnQVNBQktBSUlLQUlBRUo4QlFRRnhPZ0FQREFJTElBRkJBVG9BRHd3QkN5QUJJQUVvQWdoQkFFSUFRUklRSHo0Q0JDQUJJQUVvQWdSQkFFYzZBQThMSUFFdEFBOUJBWEVoQUNBQlFSQnFKQUFnQUF0L0FRRi9Jd0JCSUdzaUF5UUFJQU1nQURZQ0dDQURJQUUzQXhBZ0EwRUFOZ0lNSUFNZ0FqWUNDQUpBSUFNcEF4QkMvLy8vLy8vLy8vLy9BRllFUUNBREtBSUlRUVJCUFJBVUlBTkJmellDSEF3QkN5QURJQU1vQWhnZ0F5a0RFQ0FES0FJTUlBTW9BZ2dRYkRZQ0hBc2dBeWdDSENFQUlBTkJJR29rQUNBQUMzMEFJQUpCQVVZRVFDQUJJQUFvQWdnZ0FDZ0NCR3VzZlNFQkN3SkFJQUFvQWhRZ0FDZ0NIRXNFUUNBQVFRQkJBQ0FBS0FJa0VRQUFHaUFBS0FJVVJRMEJDeUFBUVFBMkFod2dBRUlBTndNUUlBQWdBU0FDSUFBb0FpZ1JFQUJDQUZNTkFDQUFRZ0EzQWdRZ0FDQUFLQUlBUVc5eE5nSUFRUUFQQzBGL0MrRUNBUUovSXdCQklHc2lBeVFBQW44Q1FBSkFRYllTSUFFc0FBQVFvd0ZGQkVCQitKMEJRUncyQWdBTUFRdEJtQWtRR1NJQ0RRRUxRUUFNQVFzZ0FrRUFRWkFCRUM4Z0FVRXJFS01CUlFSQUlBSkJDRUVFSUFFdEFBQkI4Z0JHR3pZQ0FBc0NRQ0FCTFFBQVFlRUFSd1JBSUFJb0FnQWhBUXdCQ3lBQVFRTkJBQkFFSWdGQmdBaHhSUVJBSUFNZ0FVR0FDSEkyQWhBZ0FFRUVJQU5CRUdvUUJCb0xJQUlnQWlnQ0FFR0FBWElpQVRZQ0FBc2dBa0gvQVRvQVN5QUNRWUFJTmdJd0lBSWdBRFlDUENBQ0lBSkJtQUZxTmdJc0FrQWdBVUVJY1EwQUlBTWdBMEVZYWpZQ0FDQUFRWk9vQVNBREVBNE5BQ0FDUVFvNkFFc0xJQUpCTmpZQ0tDQUNRVGMyQWlRZ0FrRTROZ0lnSUFKQk9UWUNERUdzb2dFb0FnQkZCRUFnQWtGL05nSk1DeUFDUWZDaUFTZ0NBRFlDT0VId29nRW9BZ0FpQUFSQUlBQWdBallDTkF0QjhLSUJJQUkyQWdBZ0Fnc2hBQ0FEUVNCcUpBQWdBQXZ3QVFFQ2Z3Si9Ba0FnQVVIL0FYRWlBd1JBSUFCQkEzRUVRQU5BSUFBdEFBQWlBa1VOQXlBQ0lBRkIvd0Z4UmcwRElBQkJBV29pQUVFRGNRMEFDd3NDUUNBQUtBSUFJZ0pCZjNNZ0FrR0Jnb1FJYTNGQmdJR0NoSGh4RFFBZ0EwR0Jnb1FJYkNFREEwQWdBaUFEY3lJQ1FYOXpJQUpCZ1lLRUNHdHhRWUNCZ29SNGNRMEJJQUFvQWdRaEFpQUFRUVJxSVFBZ0FrR0Jnb1FJYXlBQ1FYOXpjVUdBZ1lLRWVIRkZEUUFMQ3dOQUlBQWlBaTBBQUNJREJFQWdBa0VCYWlFQUlBTWdBVUgvQVhGSERRRUxDeUFDREFJTElBQVFMaUFBYWd3QkN5QUFDeUlBUVFBZ0FDMEFBQ0FCUWY4QmNVWWJDeGdBSUFBb0FreEJmMHdFUUNBQUVLVUJEd3NnQUJDbEFRdGdBZ0YrQW44Z0FDZ0NLQ0VDUVFFaEF5QUFRZ0FnQUMwQUFFR0FBWEVFZjBFQ1FRRWdBQ2dDRkNBQUtBSWNTeHNGUVFFTElBSVJFQUFpQVVJQVdRUitJQUFvQWhRZ0FDZ0NIR3VzSUFFZ0FDZ0NDQ0FBS0FJRWE2eDlmQVVnQVFzTGF3RUJmeUFBQkVBZ0FDZ0NURUYvVEFSQUlBQVFjQThMSUFBUWNBOExRZlNpQVNnQ0FBUkFRZlNpQVNnQ0FCQ21BU0VCQzBId29nRW9BZ0FpQUFSQUEwQWdBQ2dDVEJvZ0FDZ0NGQ0FBS0FJY1N3UkFJQUFRY0NBQmNpRUJDeUFBS0FJNElnQU5BQXNMSUFFTElnQWdBQ0FCRUFJaUFFR0JZRThFZjBING5RRkJBQ0FBYXpZQ0FFRi9CU0FBQ3d0VEFRTi9Ba0FnQUNnQ0FDd0FBRUV3YTBFS1R3MEFBMEFnQUNnQ0FDSUNMQUFBSVFNZ0FDQUNRUUZxTmdJQUlBRWdBMnBCTUdzaEFTQUNMQUFCUVRCclFRcFBEUUVnQVVFS2JDRUJEQUFMQUFzZ0FRdTdBZ0FDUUNBQlFSUkxEUUFDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUNBQlFRbHJEZ29BQVFJREJBVUdCd2dKQ2dzZ0FpQUNLQUlBSWdGQkJHbzJBZ0FnQUNBQktBSUFOZ0lBRHdzZ0FpQUNLQUlBSWdGQkJHbzJBZ0FnQUNBQk5BSUFOd01BRHdzZ0FpQUNLQUlBSWdGQkJHbzJBZ0FnQUNBQk5RSUFOd01BRHdzZ0FpQUNLQUlBUVFkcVFYaHhJZ0ZCQ0dvMkFnQWdBQ0FCS1FNQU53TUFEd3NnQWlBQ0tBSUFJZ0ZCQkdvMkFnQWdBQ0FCTWdFQU53TUFEd3NnQWlBQ0tBSUFJZ0ZCQkdvMkFnQWdBQ0FCTXdFQU53TUFEd3NnQWlBQ0tBSUFJZ0ZCQkdvMkFnQWdBQ0FCTUFBQU53TUFEd3NnQWlBQ0tBSUFJZ0ZCQkdvMkFnQWdBQ0FCTVFBQU53TUFEd3NnQWlBQ0tBSUFRUWRxUVhoeElnRkJDR28yQWdBZ0FDQUJLd01BT1FNQUR3c2dBQ0FDUVRRUkJnQUxDMzhDQVg4QmZpQUF2U0lEUWpTSXAwSC9EM0VpQWtIL0QwY0VmQ0FDUlFSQUlBRWdBRVFBQUFBQUFBQUFBR0VFZjBFQUJTQUFSQUFBQUFBQUFQQkRvaUFCRUtvQklRQWdBU2dDQUVGQWFnczJBZ0FnQUE4TElBRWdBa0grQjJzMkFnQWdBMEwvLy8vLy8vLy9oNEIvZzBLQWdJQ0FnSUNBOEQrRXZ3VWdBQXNMbXdJQUlBQkZCRUJCQUE4TEFuOENRQ0FBQkg4Z0FVSC9BRTBOQVFKQVFkU2JBU2dDQUNnQ0FFVUVRQ0FCUVlCL2NVR0F2d05HRFFNTUFRc2dBVUgvRDAwRVFDQUFJQUZCUDNGQmdBRnlPZ0FCSUFBZ0FVRUdka0hBQVhJNkFBQkJBZ3dFQ3lBQlFZQ3dBMDlCQUNBQlFZQkFjVUdBd0FOSEcwVUVRQ0FBSUFGQlAzRkJnQUZ5T2dBQ0lBQWdBVUVNZGtIZ0FYSTZBQUFnQUNBQlFRWjJRVDl4UVlBQmNqb0FBVUVEREFRTElBRkJnSUFFYTBILy96OU5CRUFnQUNBQlFUOXhRWUFCY2pvQUF5QUFJQUZCRW5aQjhBRnlPZ0FBSUFBZ0FVRUdka0UvY1VHQUFYSTZBQUlnQUNBQlFReDJRVDl4UVlBQmNqb0FBVUVFREFRTEMwSDRuUUZCR1RZQ0FFRi9CVUVCQ3d3QkN5QUFJQUU2QUFCQkFRc0w0d0VCQW44Z0FrRUFSeUVEQWtBQ1FBSkFJQUJCQTNGRkRRQWdBa1VOQUNBQlFmOEJjU0VFQTBBZ0FDMEFBQ0FFUmcwQ0lBSkJBV3NpQWtFQVJ5RURJQUJCQVdvaUFFRURjVVVOQVNBQ0RRQUxDeUFEUlEwQkN3SkFJQUF0QUFBZ0FVSC9BWEZHRFFBZ0FrRUVTUTBBSUFGQi93RnhRWUdDaEFoc0lRTURRQ0FBS0FJQUlBTnpJZ1JCZjNNZ0JFR0Jnb1FJYTNGQmdJR0NoSGh4RFFFZ0FFRUVhaUVBSUFKQkJHc2lBa0VEU3cwQUN3c2dBa1VOQUNBQlFmOEJjU0VCQTBBZ0FTQUFMUUFBUmdSQUlBQVBDeUFBUVFGcUlRQWdBa0VCYXlJQ0RRQUxDMEVBQy9rQ0FRRi9Jd0JCSUdzaUJDUUFJQVFnQURZQ0dDQUVJQUUzQXhBZ0JDQUNOZ0lNSUFRZ0F6WUNDQ0FFSUFRb0FoZ2dCQ2dDR0NBRUtRTVFJQVFvQWd3Z0JDZ0NDQkN1QVNJQU5nSUFBa0FnQUVVRVFDQUVRUUEyQWh3TUFRc2dCQ2dDQUJCSVFRQklCRUFnQkNnQ0dFRUlhaUFFS0FJQUVCZ2dCQ2dDQUJBYUlBUkJBRFlDSEF3QkN5QUVLQUlZSVFJakFFRVFheUlBSkFBZ0FDQUNOZ0lJSUFCQkdCQVpJZ0kyQWdRQ1FDQUNSUVJBSUFBb0FnaEJDR3BCRGtFQUVCUWdBRUVBTmdJTURBRUxJQUFvQWdRZ0FDZ0NDRFlDQUNNQVFSQnJJZ0lnQUNnQ0JFRUVhallDRENBQ0tBSU1RUUEyQWdBZ0FpZ0NERUVBTmdJRUlBSW9BZ3hCQURZQ0NDQUFLQUlFUVFBNkFCQWdBQ2dDQkVFQU5nSVVJQUFnQUNnQ0JEWUNEQXNnQUNnQ0RDRUNJQUJCRUdva0FDQUVJQUkyQWdRZ0FrVUVRQ0FFS0FJQUVCb2dCRUVBTmdJY0RBRUxJQVFvQWdRZ0JDZ0NBRFlDRkNBRUlBUW9BZ1EyQWh3TElBUW9BaHdoQUNBRVFTQnFKQUFnQUF1M0RnSURmd0YrSXdCQndBRnJJZ1VrQUNBRklBQTJBcmdCSUFVZ0FUWUN0QUVnQlNBQ053T29BU0FGSUFNMkFxUUJJQVZDQURjRG1BRWdCVUlBTndPUUFTQUZJQVEyQW93QkFrQWdCU2dDdUFGRkJFQWdCVUVBTmdLOEFRd0JDd0pBSUFVb0FyUUJCRUFnQlNrRHFBRWdCU2dDdEFFcEF6QlVEUUVMSUFVb0FyZ0JRUWhxUVJKQkFCQVVJQVZCQURZQ3ZBRU1BUXNDUUNBRktBS2tBVUVJY1EwQUlBVW9BclFCS0FKQUlBVXBBNmdCcDBFRWRHb29BZ2hGQkVBZ0JTZ0N0QUVvQWtBZ0JTa0RxQUduUVFSMGFpMEFERUVCY1VVTkFRc2dCU2dDdUFGQkNHcEJEMEVBRUJRZ0JVRUFOZ0s4QVF3QkN5QUZLQUswQVNBRktRT29BU0FGS0FLa0FVRUljaUFGUWNnQWFoQjdRUUJJQkVBZ0JTZ0N1QUZCQ0dwQkZFRUFFQlFnQlVFQU5nSzhBUXdCQ3lBRktBS2tBVUVnY1FSQUlBVWdCU2dDcEFGQkJISTJBcVFCQ3dKQUlBVXBBNWdCVUFSQUlBVXBBNUFCVUEwQkN5QUZLQUtrQVVFRWNVVU5BQ0FGS0FLNEFVRUlha0VTUVFBUUZDQUZRUUEyQXJ3QkRBRUxBa0FnQlNrRG1BRlFCRUFnQlNrRGtBRlFEUUVMSUFVcEE1Z0JJQVVwQTVnQklBVXBBNUFCZkZnRVFDQUZLUU5nSUFVcEE1Z0JJQVVwQTVBQmZGb05BUXNnQlNnQ3VBRkJDR3BCRWtFQUVCUWdCVUVBTmdLOEFRd0JDeUFGS1FPUUFWQUVRQ0FGSUFVcEEyQWdCU2tEbUFGOU53T1FBUXNnQlNBRktRT1FBU0FGS1FOZ1ZEb0FSeUFGSUFVb0FxUUJRU0J4Qkg5QkFBVWdCUzhCZWtFQVJ3dEJBWEU2QUVVZ0JTQUZLQUtrQVVFRWNRUi9RUUFGSUFVdkFYaEJBRWNMUVFGeE9nQkVJQVVDZnlBRktBS2tBVUVFY1FSQVFRQWdCUzhCZUEwQkdnc2dCUzBBUjBGL2N3dEJBWEU2QUVZZ0JTMEFSVUVCY1FSQUlBVW9Bb3dCUlFSQUlBVWdCU2dDdUFFb0FodzJBb3dCQ3lBRktBS01BVVVFUUNBRktBSzRBVUVJYWtFYVFRQVFGQ0FGUVFBMkFyd0JEQUlMQ3lBRktRTm9VQVJBSUFVZ0JTZ0N1QUZCQUVJQVFRQVFlallDdkFFTUFRc0NRQUpBSUFVdEFFZEJBWEZGRFFBZ0JTMEFSVUVCY1EwQUlBVXRBRVJCQVhFTkFDQUZJQVVwQTVBQk53TWdJQVVnQlNrRGtBRTNBeWdnQlVFQU93RTRJQVVnQlNnQ2NEWUNNQ0FGUXR3QU53TUlJQVVnQlNnQ3RBRW9BZ0FnQlNrRG1BRWdCU2tEa0FFZ0JVRUlha0VBSUFVb0FyUUJJQVVwQTZnQklBVW9BcmdCUVFocUVHRWlBRFlDaUFFTUFRc2dCU0FGS0FLMEFTQUZLUU9vQVNBRktBS2tBU0FGS0FLNEFVRUlhaEErSWdBMkFnUWdBRVVFUUNBRlFRQTJBcndCREFJTElBVWdCU2dDdEFFb0FnQkNBQ0FGS1FOb0lBVkJ5QUJxSUFVb0FnUXZBUXhCQVhaQkEzRWdCU2dDdEFFZ0JTa0RxQUVnQlNnQ3VBRkJDR29RWVNJQU5nS0lBUXNnQUVVRVFDQUZRUUEyQXJ3QkRBRUxBbjhnQlNnQ2lBRWhBQ0FGS0FLMEFTRURJd0JCRUdzaUFTUUFJQUVnQURZQ0RDQUJJQU0yQWdnZ0FTZ0NEQ0FCS0FJSU5nSXNJQUVvQWdnaEF5QUJLQUlNSVFRakFFRWdheUlBSkFBZ0FDQUROZ0lZSUFBZ0JEWUNGQUpBSUFBb0FoZ29Ba2dnQUNnQ0dDZ0NSRUVCYWswRVFDQUFJQUFvQWhnb0FraEJDbW8yQWd3Z0FDQUFLQUlZS0FKTUlBQW9BZ3hCQW5RUVREWUNFQ0FBS0FJUVJRUkFJQUFvQWhoQkNHcEJEa0VBRUJRZ0FFRi9OZ0ljREFJTElBQW9BaGdnQUNnQ0REWUNTQ0FBS0FJWUlBQW9BaEEyQWt3TElBQW9BaFFoQkNBQUtBSVlLQUpNSVFZZ0FDZ0NHQ0lIS0FKRUlRTWdCeUFEUVFGcU5nSkVJQU5CQW5RZ0Jtb2dCRFlDQUNBQVFRQTJBaHdMSUFBb0Fod2hBeUFBUVNCcUpBQWdBVUVRYWlRQUlBTkJBRWdMQkVBZ0JTZ0NpQUVRR2lBRlFRQTJBcndCREFFTElBVXRBRVZCQVhFRVFDQUZJQVV2QVhwQkFCQjRJZ0EyQWdBZ0FFVUVRQ0FGS0FLNEFVRUlha0VZUVFBUUZDQUZRUUEyQXJ3QkRBSUxJQVVnQlNnQ3VBRWdCU2dDaUFFZ0JTOEJla0VBSUFVb0Fvd0JJQVVvQWdBUkNBQTJBb1FCSUFVb0FvZ0JFQm9nQlNnQ2hBRkZCRUFnQlVFQU5nSzhBUXdDQ3lBRklBVW9Bb1FCTmdLSUFRc2dCUzBBUkVFQmNRUkFJQVVnQlNnQ3VBRWdCU2dDaUFFZ0JTOEJlQkN3QVRZQ2hBRWdCU2dDaUFFUUdpQUZLQUtFQVVVRVFDQUZRUUEyQXJ3QkRBSUxJQVVnQlNnQ2hBRTJBb2dCQ3lBRkxRQkdRUUZ4QkVBZ0JTQUZLQUs0QVNBRktBS0lBVUVCRUs4Qk5nS0VBU0FGS0FLSUFSQWFJQVVvQW9RQlJRUkFJQVZCQURZQ3ZBRU1BZ3NnQlNBRktBS0VBVFlDaUFFTEFrQWdCUzBBUjBFQmNVVU5BQ0FGTFFCRlFRRnhSUVJBSUFVdEFFUkJBWEZGRFFFTElBVW9BcmdCSVFFZ0JTZ0NpQUVoQXlBRktRT1lBU0VDSUFVcEE1QUJJUWdqQUVFZ2F5SUFKQUFnQUNBQk5nSWNJQUFnQXpZQ0dDQUFJQUkzQXhBZ0FDQUlOd01JSUFBb0FoZ2dBQ2tERUNBQUtRTUlRUUJCQUVFQVFnQWdBQ2dDSEVFSWFoQmhJUUVnQUVFZ2FpUUFJQVVnQVRZQ2hBRWdCU2dDaUFFUUdpQUZLQUtFQVVVRVFDQUZRUUEyQXJ3QkRBSUxJQVVnQlNnQ2hBRTJBb2dCQ3lBRklBVW9Bb2dCTmdLOEFRc2dCU2dDdkFFaEFDQUZRY0FCYWlRQUlBQUwrZ0VCQVg4akFFRWdheUlESkFBZ0F5QUFOZ0lZSUFNZ0FUWUNGQ0FESUFJMkFoQUNRQ0FES0FJVVJRUkFJQU1vQWhoQkNHcEJFa0VBRUJRZ0EwRUFOZ0ljREFFTElBTkJPQkFaSWdBMkFnd2dBRVVFUUNBREtBSVlRUWhxUVE1QkFCQVVJQU5CQURZQ0hBd0JDeU1BUVJCcklnQWdBeWdDREVFSWFqWUNEQ0FBS0FJTVFRQTJBZ0FnQUNnQ0RFRUFOZ0lFSUFBb0FneEJBRFlDQ0NBREtBSU1JQU1vQWhBMkFnQWdBeWdDREVFQU5nSUVJQU1vQWd4Q0FEY0RLQ0FES0FJTVFRQTJBakFnQXlnQ0RFSUFOd01ZSUFNZ0F5Z0NHQ0FES0FJVVFUQWdBeWdDREJCak5nSWNDeUFES0FJY0lRQWdBMEVnYWlRQUlBQUxRd0VCZnlNQVFSQnJJZ01rQUNBRElBQTJBZ3dnQXlBQk5nSUlJQU1nQWpZQ0JDQURLQUlNSUFNb0FnZ2dBeWdDQkVFQVFRQVFzZ0VoQUNBRFFSQnFKQUFnQUF0SkFRRi9Jd0JCRUdzaUFTUUFJQUVnQURZQ0RDQUJLQUlNQkVBZ0FTZ0NEQ2dDckVBZ0FTZ0NEQ2dDcUVBb0FnUVJBd0FnQVNnQ0RCQTRJQUVvQWd3UUZRc2dBVUVRYWlRQUM1UUZBUUYvSXdCQk1Hc2lCU1FBSUFVZ0FEWUNLQ0FGSUFFMkFpUWdCU0FDTmdJZ0lBVWdBem9BSHlBRklBUTJBaGdnQlVFQU5nSU1Ba0FnQlNnQ0pFVUVRQ0FGS0FJb1FRaHFRUkpCQUJBVUlBVkJBRFlDTEF3QkN5QUZJQVVvQWlBZ0JTMEFIMEVCY1JDekFTSUFOZ0lNSUFCRkJFQWdCU2dDS0VFSWFrRVFRUUFRRkNBRlFRQTJBaXdNQVFzZ0JTZ0NJQ0VCSUFVdEFCOUJBWEVoQWlBRktBSVlJUU1nQlNnQ0RDRUVJd0JCSUdzaUFDUUFJQUFnQVRZQ0dDQUFJQUk2QUJjZ0FDQUROZ0lRSUFBZ0JEWUNEQ0FBUWJEQUFCQVpJZ0UyQWdnQ1FDQUJSUVJBSUFCQkFEWUNIQXdCQ3lNQVFSQnJJZ0VnQUNnQ0NEWUNEQ0FCS0FJTVFRQTJBZ0FnQVNnQ0RFRUFOZ0lFSUFFb0FneEJBRFlDQ0NBQUtBSUlBbjhnQUMwQUYwRUJjUVJBSUFBb0FoaEJmMGNFZnlBQUtBSVlRWDVHQlVFQkMwRUJjUXdCQzBFQUMwRUFSem9BRGlBQUtBSUlJQUFvQWd3MkFxaEFJQUFvQWdnZ0FDZ0NHRFlDRkNBQUtBSUlJQUF0QUJkQkFYRTZBQkFnQUNnQ0NFRUFPZ0FNSUFBb0FnaEJBRG9BRFNBQUtBSUlRUUE2QUE4Z0FDZ0NDQ2dDcUVBb0FnQWhBUUovQWtBZ0FDZ0NHRUYvUndSQUlBQW9BaGhCZmtjTkFRdEJDQXdCQ3lBQUtBSVlDMEgvL3dOeElBQW9BaEFnQUNnQ0NDQUJFUUFBSVFFZ0FDZ0NDQ0FCTmdLc1FDQUJSUVJBSUFBb0FnZ1FPQ0FBS0FJSUVCVWdBRUVBTmdJY0RBRUxJQUFnQUNnQ0NEWUNIQXNnQUNnQ0hDRUJJQUJCSUdva0FDQUZJQUUyQWhRZ0FVVUVRQ0FGS0FJb1FRaHFRUTVCQUJBVUlBVkJBRFlDTEF3QkN5QUZJQVVvQWlnZ0JTZ0NKRUV2SUFVb0FoUVFZeUlBTmdJUUlBQkZCRUFnQlNnQ0ZCQ3hBU0FGUVFBMkFpd01BUXNnQlNBRktBSVFOZ0lzQ3lBRktBSXNJUUFnQlVFd2FpUUFJQUFMekFFQkFYOGpBRUVnYXlJQ0lBQTJBaGdnQWlBQk9nQVhJQUlDZndKQUlBSW9BaGhCZjBjRVFDQUNLQUlZUVg1SERRRUxRUWdNQVFzZ0FpZ0NHQXM3QVE0Z0FrRUFOZ0lRQWtBRFFDQUNLQUlRUVppYUFTZ0NBRWtFUUNBQ0tBSVFRUXhzUVp5YUFXb3ZBUUFnQWk4QkRrWUVRQ0FDTFFBWFFRRnhCRUFnQWlBQ0tBSVFRUXhzUVp5YUFXb29BZ1EyQWh3TUJBc2dBaUFDS0FJUVFReHNRWnlhQVdvb0FnZzJBaHdNQXdVZ0FpQUNLQUlRUVFGcU5nSVFEQUlMQUFzTElBSkJBRFlDSEFzZ0FpZ0NIQXRhQVFGL0l3QkJFR3NpQVNBQU5nSUlBa0FDUUNBQktBSUlLQUlBUVFCT0JFQWdBU2dDQ0NnQ0FFR1FGQ2dDQUVnTkFRc2dBVUVBTmdJTURBRUxJQUVnQVNnQ0NDZ0NBRUVDZEVHZ0ZHb29BZ0EyQWd3TElBRW9BZ3dMNUFFQkFYOGpBRUVnYXlJREpBQWdBeUFBT2dBYklBTWdBVFlDRkNBRElBSTJBaEFnQTBISUFCQVpJZ0EyQWd3Q1FDQUFSUVJBSUFNb0FoQkJBVUg0blFFb0FnQVFGQ0FEUVFBMkFod01BUXNnQXlnQ0RDQURLQUlRTmdJQUlBTW9BZ3dnQXkwQUcwRUJjVG9BQkNBREtBSU1JQU1vQWhRMkFnZ0NRQ0FES0FJTUtBSUlRUUZPQkVBZ0F5Z0NEQ2dDQ0VFSlRBMEJDeUFES0FJTVFRazJBZ2dMSUFNb0FneEJBRG9BRENBREtBSU1RUUEyQWpBZ0F5Z0NERUVBTmdJMElBTW9BZ3hCQURZQ09DQURJQU1vQWd3MkFod0xJQU1vQWh3aEFDQURRU0JxSkFBZ0FBc2lBUUYvSXdCQkVHc2lBU1FBSUFFZ0FEWUNEQ0FCS0FJTUVCVWdBVUVRYWlRQUMra0JBUUYvSXdCQk1Hc2lBaUFBTmdJa0lBSWdBVGNER0NBQ1FnQTNBeEFnQWlBQ0tBSWtLUU1JUWdGOU53TUlBa0FEUUNBQ0tRTVFJQUlwQXdoVUJFQWdBaUFDS1FNUUlBSXBBd2dnQWlrREVIMUNBWWg4TndNQUFrQWdBaWdDSkNnQ0JDQUNLUU1BcDBFRGRHb3BBd0FnQWlrREdGWUVRQ0FDSUFJcEF3QkNBWDAzQXdnTUFRc0NRQ0FDS1FNQUlBSW9BaVFwQXdoU0JFQWdBaWdDSkNnQ0JDQUNLUU1BUWdGOHAwRURkR29wQXdBZ0Fpa0RHRmdOQVFzZ0FpQUNLUU1BTndNb0RBUUxJQUlnQWlrREFFSUJmRGNERUFzTUFRc0xJQUlnQWlrREVEY0RLQXNnQWlrREtBdW5BUUVCZnlNQVFUQnJJZ1FrQUNBRUlBQTJBaWdnQkNBQk5nSWtJQVFnQWpjREdDQUVJQU0yQWhRZ0JDQUVLQUlvS1FNNElBUW9BaWdwQXpBZ0JDZ0NKQ0FFS1FNWUlBUW9BaFFRaVFFM0F3Z0NRQ0FFS1FNSVFnQlRCRUFnQkVGL05nSXNEQUVMSUFRb0FpZ2dCQ2tEQ0RjRE9DQUVLQUlvSUFRb0FpZ3BBemdRdHdFaEFpQUVLQUlvSUFJM0EwQWdCRUVBTmdJc0N5QUVLQUlzSVFBZ0JFRXdhaVFBSUFBTDZ3RUJBWDhqQUVFZ2F5SURKQUFnQXlBQU5nSVlJQU1nQVRjREVDQURJQUkyQWd3Q1FDQURLUU1RSUFNb0FoZ3BBeEJVQkVBZ0EwRUJPZ0FmREFFTElBTWdBeWdDR0NnQ0FDQURLUU1RUWdTR3B4Qk1JZ0EyQWdnZ0FFVUVRQ0FES0FJTVFRNUJBQkFVSUFOQkFEb0FId3dCQ3lBREtBSVlJQU1vQWdnMkFnQWdBeUFES0FJWUtBSUVJQU1wQXhCQ0FYeENBNGFuRUV3aUFEWUNCQ0FBUlFSQUlBTW9BZ3hCRGtFQUVCUWdBMEVBT2dBZkRBRUxJQU1vQWhnZ0F5Z0NCRFlDQkNBREtBSVlJQU1wQXhBM0F4QWdBMEVCT2dBZkN5QURMUUFmUVFGeElRQWdBMEVnYWlRQUlBQUx6Z0lCQVg4akFFRXdheUlFSkFBZ0JDQUFOZ0lvSUFRZ0FUY0RJQ0FFSUFJMkFod2dCQ0FETmdJWUFrQUNRQ0FFS0FJb0RRQWdCQ2tESUZBTkFDQUVLQUlZUVJKQkFCQVVJQVJCQURZQ0xBd0JDeUFFSUFRb0FpZ2dCQ2tESUNBRUtBSWNJQVFvQWhnUVNpSUFOZ0lNSUFCRkJFQWdCRUVBTmdJc0RBRUxJQVJCR0JBWklnQTJBaFFnQUVVRVFDQUVLQUlZUVE1QkFCQVVJQVFvQWd3UU15QUVRUUEyQWl3TUFRc2dCQ2dDRkNBRUtBSU1OZ0lRSUFRb0FoUkJBRFlDRkVFQUVBRWhBQ0FFS0FJVUlBQTJBZ3dqQUVFUWF5SUFJQVFvQWhRMkFnd2dBQ2dDREVFQU5nSUFJQUFvQWd4QkFEWUNCQ0FBS0FJTVFRQTJBZ2dnQkVFaklBUW9BaFFnQkNnQ0dCQ0VBU0lBTmdJUUlBQkZCRUFnQkNnQ0ZDZ0NFQkF6SUFRb0FoUVFGU0FFUVFBMkFpd01BUXNnQkNBRUtBSVFOZ0lzQ3lBRUtBSXNJUUFnQkVFd2FpUUFJQUFMcVFFQkFYOGpBRUV3YXlJRUpBQWdCQ0FBTmdJb0lBUWdBVGNESUNBRUlBSTJBaHdnQkNBRE5nSVlBa0FnQkNnQ0tFVUVRQ0FFS1FNZ1FnQlNCRUFnQkNnQ0dFRVNRUUFRRkNBRVFRQTJBaXdNQWdzZ0JFRUFRZ0FnQkNnQ0hDQUVLQUlZRUxvQk5nSXNEQUVMSUFRZ0JDZ0NLRFlDQ0NBRUlBUXBBeUEzQXhBZ0JDQUVRUWhxUWdFZ0JDZ0NIQ0FFS0FJWUVMb0JOZ0lzQ3lBRUtBSXNJUUFnQkVFd2FpUUFJQUFMUmdFQmZ5TUFRU0JySWdNa0FDQURJQUEyQWh3Z0F5QUJOd01RSUFNZ0FqWUNEQ0FES0FJY0lBTXBBeEFnQXlnQ0RDQURLQUljUVFocUVFc2hBQ0FEUVNCcUpBQWdBQXM0QVFGL0l3QkJFR3NpQVNBQU5nSU1JQUVvQWd4QkFEWUNBQ0FCS0FJTVFRQTJBZ1FnQVNnQ0RFRUFOZ0lJSUFFb0FneEJBRG9BREF1UEtnSUxmd04rSUFBcEE3Z3RJUTRnQUNnQ3dDMGhBeUFDUVFCT0JFQkJCRUVESUFFdkFRSWlDaHNoQzBFSFFZb0JJQW9iSVFWQmZ5RUdBMEFnQ2lFSklBRWdEQ0lOUVFGcUlneEJBblJxTHdFQ0lRb0NRQUpBSUFkQkFXb2lCQ0FGVGcwQUlBa2dDa2NOQUNBRUlRY01BUXNDUUNBRUlBdElCRUFnQUNBSlFRSjBhaUlGUWZJVWFpRUdJQVZCOEJScUlRc0RRQ0FMTXdFQUlSQUNmeUFESUFZdkFRQWlCMm9pQlVFL1RRUkFJQkFnQTYyR0lBNkVJUTRnQlF3QkN5QURRY0FBUmdSQUlBQW9BZ1FoQXlBQUlBQW9BaEFpQlVFQmFqWUNFQ0FESUFWcUlBNDhBQUFnQUNnQ0JDRURJQUFnQUNnQ0VDSUZRUUZxTmdJUUlBTWdCV29nRGtJSWlEd0FBQ0FBS0FJRUlRTWdBQ0FBS0FJUUlnVkJBV28yQWhBZ0F5QUZhaUFPUWhDSVBBQUFJQUFvQWdRaEF5QUFJQUFvQWhBaUJVRUJhallDRUNBRElBVnFJQTVDR0lnOEFBQWdBQ2dDQkNFRElBQWdBQ2dDRUNJRlFRRnFOZ0lRSUFNZ0JXb2dEa0lnaUR3QUFDQUFLQUlFSVFNZ0FDQUFLQUlRSWdWQkFXbzJBaEFnQXlBRmFpQU9RaWlJUEFBQUlBQW9BZ1FoQXlBQUlBQW9BaEFpQlVFQmFqWUNFQ0FESUFWcUlBNUNNSWc4QUFBZ0FDZ0NCQ0VESUFBZ0FDZ0NFQ0lGUVFGcU5nSVFJQU1nQldvZ0RrSTRpRHdBQUNBUUlRNGdCd3dCQ3lBQUtBSUVJUWNnQUNBQUtBSVFJZ2hCQVdvMkFoQWdCeUFJYWlBUUlBT3RoaUFPaENJT1BBQUFJQUFvQWdRaEJ5QUFJQUFvQWhBaUNFRUJhallDRUNBSElBaHFJQTVDQ0lnOEFBQWdBQ2dDQkNFSElBQWdBQ2dDRUNJSVFRRnFOZ0lRSUFjZ0NHb2dEa0lRaUR3QUFDQUFLQUlFSVFjZ0FDQUFLQUlRSWdoQkFXbzJBaEFnQnlBSWFpQU9RaGlJUEFBQUlBQW9BZ1FoQnlBQUlBQW9BaEFpQ0VFQmFqWUNFQ0FISUFocUlBNUNJSWc4QUFBZ0FDZ0NCQ0VISUFBZ0FDZ0NFQ0lJUVFGcU5nSVFJQWNnQ0dvZ0RrSW9pRHdBQUNBQUtBSUVJUWNnQUNBQUtBSVFJZ2hCQVdvMkFoQWdCeUFJYWlBT1FqQ0lQQUFBSUFBb0FnUWhCeUFBSUFBb0FoQWlDRUVCYWpZQ0VDQUhJQWhxSUE1Q09JZzhBQUFnRUVIQUFDQURhNjJJSVE0Z0JVRkFhZ3NoQXlBRVFRRnJJZ1FOQUFzTUFRc2dDUVJBQWtBZ0JpQUpSZ1JBSUE0aEVDQURJUVVnQkNFSERBRUxJQUFnQ1VFQ2RHb2lCRUh3RkdvekFRQWhFQ0FESUFSQjhoUnFMd0VBSWdScUlnVkJQMDBFUUNBUUlBT3RoaUFPaENFUURBRUxJQU5Cd0FCR0JFQWdBQ2dDQkNFRElBQWdBQ2dDRUNJRlFRRnFOZ0lRSUFNZ0JXb2dEandBQUNBQUtBSUVJUU1nQUNBQUtBSVFJZ1ZCQVdvMkFoQWdBeUFGYWlBT1FnaUlQQUFBSUFBb0FnUWhBeUFBSUFBb0FoQWlCVUVCYWpZQ0VDQURJQVZxSUE1Q0VJZzhBQUFnQUNnQ0JDRURJQUFnQUNnQ0VDSUZRUUZxTmdJUUlBTWdCV29nRGtJWWlEd0FBQ0FBS0FJRUlRTWdBQ0FBS0FJUUlnVkJBV28yQWhBZ0F5QUZhaUFPUWlDSVBBQUFJQUFvQWdRaEF5QUFJQUFvQWhBaUJVRUJhallDRUNBRElBVnFJQTVDS0lnOEFBQWdBQ2dDQkNFRElBQWdBQ2dDRUNJRlFRRnFOZ0lRSUFNZ0JXb2dEa0l3aUR3QUFDQUFLQUlFSVFNZ0FDQUFLQUlRSWdWQkFXbzJBaEFnQXlBRmFpQU9RamlJUEFBQUlBUWhCUXdCQ3lBQUtBSUVJUVFnQUNBQUtBSVFJZ1pCQVdvMkFoQWdCQ0FHYWlBUUlBT3RoaUFPaENJT1BBQUFJQUFvQWdRaEJDQUFJQUFvQWhBaUJrRUJhallDRUNBRUlBWnFJQTVDQ0lnOEFBQWdBQ2dDQkNFRUlBQWdBQ2dDRUNJR1FRRnFOZ0lRSUFRZ0Jtb2dEa0lRaUR3QUFDQUFLQUlFSVFRZ0FDQUFLQUlRSWdaQkFXbzJBaEFnQkNBR2FpQU9RaGlJUEFBQUlBQW9BZ1FoQkNBQUlBQW9BaEFpQmtFQmFqWUNFQ0FFSUFacUlBNUNJSWc4QUFBZ0FDZ0NCQ0VFSUFBZ0FDZ0NFQ0lHUVFGcU5nSVFJQVFnQm1vZ0RrSW9pRHdBQUNBQUtBSUVJUVFnQUNBQUtBSVFJZ1pCQVdvMkFoQWdCQ0FHYWlBT1FqQ0lQQUFBSUFBb0FnUWhCQ0FBSUFBb0FoQWlCa0VCYWpZQ0VDQUVJQVpxSUE1Q09JZzhBQUFnQlVGQWFpRUZJQkJCd0FBZ0EydXRpQ0VRQ3lBQU13R3dGU0VQQWtBZ0JTQUFMd0d5RlNJRGFpSUVRVDlOQkVBZ0R5QUZyWVlnRUlRaER3d0JDeUFGUWNBQVJnUkFJQUFvQWdRaEJDQUFJQUFvQWhBaUJVRUJhallDRUNBRUlBVnFJQkE4QUFBZ0FDZ0NCQ0VFSUFBZ0FDZ0NFQ0lGUVFGcU5nSVFJQVFnQldvZ0VFSUlpRHdBQUNBQUtBSUVJUVFnQUNBQUtBSVFJZ1ZCQVdvMkFoQWdCQ0FGYWlBUVFoQ0lQQUFBSUFBb0FnUWhCQ0FBSUFBb0FoQWlCVUVCYWpZQ0VDQUVJQVZxSUJCQ0dJZzhBQUFnQUNnQ0JDRUVJQUFnQUNnQ0VDSUZRUUZxTmdJUUlBUWdCV29nRUVJZ2lEd0FBQ0FBS0FJRUlRUWdBQ0FBS0FJUUlnVkJBV28yQWhBZ0JDQUZhaUFRUWlpSVBBQUFJQUFvQWdRaEJDQUFJQUFvQWhBaUJVRUJhallDRUNBRUlBVnFJQkJDTUlnOEFBQWdBQ2dDQkNFRUlBQWdBQ2dDRUNJRlFRRnFOZ0lRSUFRZ0JXb2dFRUk0aUR3QUFDQURJUVFNQVFzZ0FDZ0NCQ0VESUFBZ0FDZ0NFQ0lHUVFGcU5nSVFJQU1nQm1vZ0R5QUZyWVlnRUlRaURqd0FBQ0FBS0FJRUlRTWdBQ0FBS0FJUUlnWkJBV28yQWhBZ0F5QUdhaUFPUWdpSVBBQUFJQUFvQWdRaEF5QUFJQUFvQWhBaUJrRUJhallDRUNBRElBWnFJQTVDRUlnOEFBQWdBQ2dDQkNFRElBQWdBQ2dDRUNJR1FRRnFOZ0lRSUFNZ0Jtb2dEa0lZaUR3QUFDQUFLQUlFSVFNZ0FDQUFLQUlRSWdaQkFXbzJBaEFnQXlBR2FpQU9RaUNJUEFBQUlBQW9BZ1FoQXlBQUlBQW9BaEFpQmtFQmFqWUNFQ0FESUFacUlBNUNLSWc4QUFBZ0FDZ0NCQ0VESUFBZ0FDZ0NFQ0lHUVFGcU5nSVFJQU1nQm1vZ0RrSXdpRHdBQUNBQUtBSUVJUU1nQUNBQUtBSVFJZ1pCQVdvMkFoQWdBeUFHYWlBT1FqaUlQQUFBSUFSQlFHb2hCQ0FQUWNBQUlBVnJyWWdoRHdzZ0I2eENBMzBoRGlBRVFUMU5CRUFnQkVFQ2FpRURJQTRnQksyR0lBK0VJUTRNQWdzZ0JFSEFBRVlFUUNBQUtBSUVJUVFnQUNBQUtBSVFJZ05CQVdvMkFoQWdBeUFFYWlBUFBBQUFJQUFvQWdRaEJDQUFJQUFvQWhBaUEwRUJhallDRUNBRElBUnFJQTlDQ0lnOEFBQWdBQ2dDQkNFRUlBQWdBQ2dDRUNJRFFRRnFOZ0lRSUFNZ0JHb2dEMElRaUR3QUFDQUFLQUlFSVFRZ0FDQUFLQUlRSWdOQkFXbzJBaEFnQXlBRWFpQVBRaGlJUEFBQUlBQW9BZ1FoQkNBQUlBQW9BaEFpQTBFQmFqWUNFQ0FESUFScUlBOUNJSWc4QUFBZ0FDZ0NCQ0VFSUFBZ0FDZ0NFQ0lEUVFGcU5nSVFJQU1nQkdvZ0QwSW9pRHdBQUNBQUtBSUVJUVFnQUNBQUtBSVFJZ05CQVdvMkFoQWdBeUFFYWlBUFFqQ0lQQUFBSUFBb0FnUWhCQ0FBSUFBb0FoQWlBMEVCYWpZQ0VDQURJQVJxSUE5Q09JZzhBQUJCQWlFRERBSUxJQUFvQWdRaEF5QUFJQUFvQWhBaUJVRUJhallDRUNBRElBVnFJQTRnQksyR0lBK0VJaEE4QUFBZ0FDZ0NCQ0VESUFBZ0FDZ0NFQ0lGUVFGcU5nSVFJQU1nQldvZ0VFSUlpRHdBQUNBQUtBSUVJUU1nQUNBQUtBSVFJZ1ZCQVdvMkFoQWdBeUFGYWlBUVFoQ0lQQUFBSUFBb0FnUWhBeUFBSUFBb0FoQWlCVUVCYWpZQ0VDQURJQVZxSUJCQ0dJZzhBQUFnQUNnQ0JDRURJQUFnQUNnQ0VDSUZRUUZxTmdJUUlBTWdCV29nRUVJZ2lEd0FBQ0FBS0FJRUlRTWdBQ0FBS0FJUUlnVkJBV28yQWhBZ0F5QUZhaUFRUWlpSVBBQUFJQUFvQWdRaEF5QUFJQUFvQWhBaUJVRUJhallDRUNBRElBVnFJQkJDTUlnOEFBQWdBQ2dDQkNFRElBQWdBQ2dDRUNJRlFRRnFOZ0lRSUFNZ0JXb2dFRUk0aUR3QUFDQUVRVDVySVFNZ0RrSEFBQ0FFYTYySUlRNE1BUXNnQjBFSlRBUkFJQUF6QWJRVklROENRQ0FESUFBdkFiWVZJZ1ZxSWdSQlAwMEVRQ0FQSUFPdGhpQU9oQ0VQREFFTElBTkJ3QUJHQkVBZ0FDZ0NCQ0VFSUFBZ0FDZ0NFQ0lEUVFGcU5nSVFJQU1nQkdvZ0Rqd0FBQ0FBS0FJRUlRUWdBQ0FBS0FJUUlnTkJBV28yQWhBZ0F5QUVhaUFPUWdpSVBBQUFJQUFvQWdRaEJDQUFJQUFvQWhBaUEwRUJhallDRUNBRElBUnFJQTVDRUlnOEFBQWdBQ2dDQkNFRUlBQWdBQ2dDRUNJRFFRRnFOZ0lRSUFNZ0JHb2dEa0lZaUR3QUFDQUFLQUlFSVFRZ0FDQUFLQUlRSWdOQkFXbzJBaEFnQXlBRWFpQU9RaUNJUEFBQUlBQW9BZ1FoQkNBQUlBQW9BaEFpQTBFQmFqWUNFQ0FESUFScUlBNUNLSWc4QUFBZ0FDZ0NCQ0VFSUFBZ0FDZ0NFQ0lEUVFGcU5nSVFJQU1nQkdvZ0RrSXdpRHdBQUNBQUtBSUVJUVFnQUNBQUtBSVFJZ05CQVdvMkFoQWdBeUFFYWlBT1FqaUlQQUFBSUFVaEJBd0JDeUFBS0FJRUlRVWdBQ0FBS0FJUUlnWkJBV28yQWhBZ0JTQUdhaUFQSUFPdGhpQU9oQ0lPUEFBQUlBQW9BZ1FoQlNBQUlBQW9BaEFpQmtFQmFqWUNFQ0FGSUFacUlBNUNDSWc4QUFBZ0FDZ0NCQ0VGSUFBZ0FDZ0NFQ0lHUVFGcU5nSVFJQVVnQm1vZ0RrSVFpRHdBQUNBQUtBSUVJUVVnQUNBQUtBSVFJZ1pCQVdvMkFoQWdCU0FHYWlBT1FoaUlQQUFBSUFBb0FnUWhCU0FBSUFBb0FoQWlCa0VCYWpZQ0VDQUZJQVpxSUE1Q0lJZzhBQUFnQUNnQ0JDRUZJQUFnQUNnQ0VDSUdRUUZxTmdJUUlBVWdCbW9nRGtJb2lEd0FBQ0FBS0FJRUlRVWdBQ0FBS0FJUUlnWkJBV28yQWhBZ0JTQUdhaUFPUWpDSVBBQUFJQUFvQWdRaEJTQUFJQUFvQWhBaUJrRUJhallDRUNBRklBWnFJQTVDT0lnOEFBQWdCRUZBYWlFRUlBOUJ3QUFnQTJ1dGlDRVBDeUFIckVJQ2ZTRU9JQVJCUEUwRVFDQUVRUU5xSVFNZ0RpQUVyWVlnRDRRaERnd0NDeUFFUWNBQVJnUkFJQUFvQWdRaEJDQUFJQUFvQWhBaUEwRUJhallDRUNBRElBUnFJQTg4QUFBZ0FDZ0NCQ0VFSUFBZ0FDZ0NFQ0lEUVFGcU5nSVFJQU1nQkdvZ0QwSUlpRHdBQUNBQUtBSUVJUVFnQUNBQUtBSVFJZ05CQVdvMkFoQWdBeUFFYWlBUFFoQ0lQQUFBSUFBb0FnUWhCQ0FBSUFBb0FoQWlBMEVCYWpZQ0VDQURJQVJxSUE5Q0dJZzhBQUFnQUNnQ0JDRUVJQUFnQUNnQ0VDSURRUUZxTmdJUUlBTWdCR29nRDBJZ2lEd0FBQ0FBS0FJRUlRUWdBQ0FBS0FJUUlnTkJBV28yQWhBZ0F5QUVhaUFQUWlpSVBBQUFJQUFvQWdRaEJDQUFJQUFvQWhBaUEwRUJhallDRUNBRElBUnFJQTlDTUlnOEFBQWdBQ2dDQkNFRUlBQWdBQ2dDRUNJRFFRRnFOZ0lRSUFNZ0JHb2dEMEk0aUR3QUFFRURJUU1NQWdzZ0FDZ0NCQ0VESUFBZ0FDZ0NFQ0lGUVFGcU5nSVFJQU1nQldvZ0RpQUVyWVlnRDRRaUVEd0FBQ0FBS0FJRUlRTWdBQ0FBS0FJUUlnVkJBV28yQWhBZ0F5QUZhaUFRUWdpSVBBQUFJQUFvQWdRaEF5QUFJQUFvQWhBaUJVRUJhallDRUNBRElBVnFJQkJDRUlnOEFBQWdBQ2dDQkNFRElBQWdBQ2dDRUNJRlFRRnFOZ0lRSUFNZ0JXb2dFRUlZaUR3QUFDQUFLQUlFSVFNZ0FDQUFLQUlRSWdWQkFXbzJBaEFnQXlBRmFpQVFRaUNJUEFBQUlBQW9BZ1FoQXlBQUlBQW9BaEFpQlVFQmFqWUNFQ0FESUFWcUlCQkNLSWc4QUFBZ0FDZ0NCQ0VESUFBZ0FDZ0NFQ0lGUVFGcU5nSVFJQU1nQldvZ0VFSXdpRHdBQUNBQUtBSUVJUU1nQUNBQUtBSVFJZ1ZCQVdvMkFoQWdBeUFGYWlBUVFqaUlQQUFBSUFSQlBXc2hBeUFPUWNBQUlBUnJyWWdoRGd3QkN5QUFNd0c0RlNFUEFrQWdBeUFBTHdHNkZTSUZhaUlFUVQ5TkJFQWdEeUFEcllZZ0RvUWhEd3dCQ3lBRFFjQUFSZ1JBSUFBb0FnUWhCQ0FBSUFBb0FoQWlBMEVCYWpZQ0VDQURJQVJxSUE0OEFBQWdBQ2dDQkNFRUlBQWdBQ2dDRUNJRFFRRnFOZ0lRSUFNZ0JHb2dEa0lJaUR3QUFDQUFLQUlFSVFRZ0FDQUFLQUlRSWdOQkFXbzJBaEFnQXlBRWFpQU9RaENJUEFBQUlBQW9BZ1FoQkNBQUlBQW9BaEFpQTBFQmFqWUNFQ0FESUFScUlBNUNHSWc4QUFBZ0FDZ0NCQ0VFSUFBZ0FDZ0NFQ0lEUVFGcU5nSVFJQU1nQkdvZ0RrSWdpRHdBQUNBQUtBSUVJUVFnQUNBQUtBSVFJZ05CQVdvMkFoQWdBeUFFYWlBT1FpaUlQQUFBSUFBb0FnUWhCQ0FBSUFBb0FoQWlBMEVCYWpZQ0VDQURJQVJxSUE1Q01JZzhBQUFnQUNnQ0JDRUVJQUFnQUNnQ0VDSURRUUZxTmdJUUlBTWdCR29nRGtJNGlEd0FBQ0FGSVFRTUFRc2dBQ2dDQkNFRklBQWdBQ2dDRUNJR1FRRnFOZ0lRSUFVZ0Jtb2dEeUFEcllZZ0RvUWlEandBQUNBQUtBSUVJUVVnQUNBQUtBSVFJZ1pCQVdvMkFoQWdCU0FHYWlBT1FnaUlQQUFBSUFBb0FnUWhCU0FBSUFBb0FoQWlCa0VCYWpZQ0VDQUZJQVpxSUE1Q0VJZzhBQUFnQUNnQ0JDRUZJQUFnQUNnQ0VDSUdRUUZxTmdJUUlBVWdCbW9nRGtJWWlEd0FBQ0FBS0FJRUlRVWdBQ0FBS0FJUUlnWkJBV28yQWhBZ0JTQUdhaUFPUWlDSVBBQUFJQUFvQWdRaEJTQUFJQUFvQWhBaUJrRUJhallDRUNBRklBWnFJQTVDS0lnOEFBQWdBQ2dDQkNFRklBQWdBQ2dDRUNJR1FRRnFOZ0lRSUFVZ0Jtb2dEa0l3aUR3QUFDQUFLQUlFSVFVZ0FDQUFLQUlRSWdaQkFXbzJBaEFnQlNBR2FpQU9RamlJUEFBQUlBUkJRR29oQkNBUFFjQUFJQU5ycllnaER3c2dCNjFDQ24waERpQUVRVGhOQkVBZ0JFRUhhaUVESUE0Z0JLMkdJQStFSVE0TUFRc2dCRUhBQUVZRVFDQUFLQUlFSVFRZ0FDQUFLQUlRSWdOQkFXbzJBaEFnQXlBRWFpQVBQQUFBSUFBb0FnUWhCQ0FBSUFBb0FoQWlBMEVCYWpZQ0VDQURJQVJxSUE5Q0NJZzhBQUFnQUNnQ0JDRUVJQUFnQUNnQ0VDSURRUUZxTmdJUUlBTWdCR29nRDBJUWlEd0FBQ0FBS0FJRUlRUWdBQ0FBS0FJUUlnTkJBV28yQWhBZ0F5QUVhaUFQUWhpSVBBQUFJQUFvQWdRaEJDQUFJQUFvQWhBaUEwRUJhallDRUNBRElBUnFJQTlDSUlnOEFBQWdBQ2dDQkNFRUlBQWdBQ2dDRUNJRFFRRnFOZ0lRSUFNZ0JHb2dEMElvaUR3QUFDQUFLQUlFSVFRZ0FDQUFLQUlRSWdOQkFXbzJBaEFnQXlBRWFpQVBRakNJUEFBQUlBQW9BZ1FoQkNBQUlBQW9BaEFpQTBFQmFqWUNFQ0FESUFScUlBOUNPSWc4QUFCQkJ5RUREQUVMSUFBb0FnUWhBeUFBSUFBb0FoQWlCVUVCYWpZQ0VDQURJQVZxSUE0Z0JLMkdJQStFSWhBOEFBQWdBQ2dDQkNFRElBQWdBQ2dDRUNJRlFRRnFOZ0lRSUFNZ0JXb2dFRUlJaUR3QUFDQUFLQUlFSVFNZ0FDQUFLQUlRSWdWQkFXbzJBaEFnQXlBRmFpQVFRaENJUEFBQUlBQW9BZ1FoQXlBQUlBQW9BaEFpQlVFQmFqWUNFQ0FESUFWcUlCQkNHSWc4QUFBZ0FDZ0NCQ0VESUFBZ0FDZ0NFQ0lGUVFGcU5nSVFJQU1nQldvZ0VFSWdpRHdBQUNBQUtBSUVJUU1nQUNBQUtBSVFJZ1ZCQVdvMkFoQWdBeUFGYWlBUVFpaUlQQUFBSUFBb0FnUWhBeUFBSUFBb0FoQWlCVUVCYWpZQ0VDQURJQVZxSUJCQ01JZzhBQUFnQUNnQ0JDRURJQUFnQUNnQ0VDSUZRUUZxTmdJUUlBTWdCV29nRUVJNGlEd0FBQ0FFUVRscklRTWdEa0hBQUNBRWE2MklJUTRMUVFBaEJ3Si9JQXBGQkVCQmlnRWhCVUVEREFFTFFRWkJCeUFKSUFwR0lnUWJJUVZCQTBFRUlBUWJDeUVMSUFraEJnc2dBaUFOUncwQUN3c2dBQ0FETmdMQUxTQUFJQTQzQTdndEM0d1JBZ2gvQW40Q1FDQUFLQUtVTFVVRVFDQUFLUU80TFNFTUlBQW9Bc0F0SVFRTUFRc0RRQ0FKSWdSQkEyb2hDU0FFSUFBb0FwQXRhaUlFTFFBQ0lRVWdBQ2tEdUMwaEN5QUFLQUxBTFNFR0FrQWdCQzhBQUNJSFJRUkFJQUVnQlVFQ2RHb2lCRE1CQUNFTUlBWWdCQzhCQWlJRmFpSUVRVDlOQkVBZ0RDQUdyWVlnQzRRaERBd0NDeUFHUWNBQVJnUkFJQUFvQWdRaEJDQUFJQUFvQWhBaUEwRUJhallDRUNBRElBUnFJQXM4QUFBZ0FDZ0NCQ0VFSUFBZ0FDZ0NFQ0lEUVFGcU5nSVFJQU1nQkdvZ0MwSUlpRHdBQUNBQUtBSUVJUVFnQUNBQUtBSVFJZ05CQVdvMkFoQWdBeUFFYWlBTFFoQ0lQQUFBSUFBb0FnUWhCQ0FBSUFBb0FoQWlBMEVCYWpZQ0VDQURJQVJxSUF0Q0dJZzhBQUFnQUNnQ0JDRUVJQUFnQUNnQ0VDSURRUUZxTmdJUUlBTWdCR29nQzBJZ2lEd0FBQ0FBS0FJRUlRUWdBQ0FBS0FJUUlnTkJBV28yQWhBZ0F5QUVhaUFMUWlpSVBBQUFJQUFvQWdRaEJDQUFJQUFvQWhBaUEwRUJhallDRUNBRElBUnFJQXRDTUlnOEFBQWdBQ2dDQkNFRUlBQWdBQ2dDRUNJRFFRRnFOZ0lRSUFNZ0JHb2dDMEk0aUR3QUFDQUZJUVFNQWdzZ0FDZ0NCQ0VGSUFBZ0FDZ0NFQ0lEUVFGcU5nSVFJQU1nQldvZ0RDQUdyWVlnQzRRaUN6d0FBQ0FBS0FJRUlRVWdBQ0FBS0FJUUlnTkJBV28yQWhBZ0F5QUZhaUFMUWdpSVBBQUFJQUFvQWdRaEJTQUFJQUFvQWhBaUEwRUJhallDRUNBRElBVnFJQXRDRUlnOEFBQWdBQ2dDQkNFRklBQWdBQ2dDRUNJRFFRRnFOZ0lRSUFNZ0JXb2dDMElZaUR3QUFDQUFLQUlFSVFVZ0FDQUFLQUlRSWdOQkFXbzJBaEFnQXlBRmFpQUxRaUNJUEFBQUlBQW9BZ1FoQlNBQUlBQW9BaEFpQTBFQmFqWUNFQ0FESUFWcUlBdENLSWc4QUFBZ0FDZ0NCQ0VGSUFBZ0FDZ0NFQ0lEUVFGcU5nSVFJQU1nQldvZ0MwSXdpRHdBQUNBQUtBSUVJUVVnQUNBQUtBSVFJZ05CQVdvMkFoQWdBeUFGYWlBTFFqaUlQQUFBSUFSQlFHb2hCQ0FNUWNBQUlBWnJyWWdoREF3QkN5QUZRYkRxQUdvdEFBQWlDRUVDZENJRElBRnFJZ1JCaEFocU13RUFJUXdnQkVHR0NHb3ZBUUFoQkNBSVFRaHJRUk5OQkVBZ0JTQURRYkRzQUdvb0FnQnJyU0FFcllZZ0RJUWhEQ0FEUWZEdUFHb29BZ0FnQkdvaEJBc2dCQ0FDSUFkQkFXc2lCeUFIUVFkMlFZQUNhaUFIUVlBQ1NSdEJzT1lBYWkwQUFDSUZRUUowSWdocUlnb3ZBUUpxSVFNZ0NqTUJBQ0FFcllZZ0RJUWhEQ0FHSUFWQkJFa0VmeUFEQlNBSElBaEJzTzBBYWlnQ0FHdXRJQU90aGlBTWhDRU1JQWhCOE84QWFpZ0NBQ0FEYWdzaUJXb2lCRUUvVFFSQUlBd2dCcTJHSUF1RUlRd01BUXNnQmtIQUFFWUVRQ0FBS0FJRUlRUWdBQ0FBS0FJUUlnTkJBV28yQWhBZ0F5QUVhaUFMUEFBQUlBQW9BZ1FoQkNBQUlBQW9BaEFpQTBFQmFqWUNFQ0FESUFScUlBdENDSWc4QUFBZ0FDZ0NCQ0VFSUFBZ0FDZ0NFQ0lEUVFGcU5nSVFJQU1nQkdvZ0MwSVFpRHdBQUNBQUtBSUVJUVFnQUNBQUtBSVFJZ05CQVdvMkFoQWdBeUFFYWlBTFFoaUlQQUFBSUFBb0FnUWhCQ0FBSUFBb0FoQWlBMEVCYWpZQ0VDQURJQVJxSUF0Q0lJZzhBQUFnQUNnQ0JDRUVJQUFnQUNnQ0VDSURRUUZxTmdJUUlBTWdCR29nQzBJb2lEd0FBQ0FBS0FJRUlRUWdBQ0FBS0FJUUlnTkJBV28yQWhBZ0F5QUVhaUFMUWpDSVBBQUFJQUFvQWdRaEJDQUFJQUFvQWhBaUEwRUJhallDRUNBRElBUnFJQXRDT0lnOEFBQWdCU0VFREFFTElBQW9BZ1FoQlNBQUlBQW9BaEFpQTBFQmFqWUNFQ0FESUFWcUlBd2dCcTJHSUF1RUlnczhBQUFnQUNnQ0JDRUZJQUFnQUNnQ0VDSURRUUZxTmdJUUlBTWdCV29nQzBJSWlEd0FBQ0FBS0FJRUlRVWdBQ0FBS0FJUUlnTkJBV28yQWhBZ0F5QUZhaUFMUWhDSVBBQUFJQUFvQWdRaEJTQUFJQUFvQWhBaUEwRUJhallDRUNBRElBVnFJQXRDR0lnOEFBQWdBQ2dDQkNFRklBQWdBQ2dDRUNJRFFRRnFOZ0lRSUFNZ0JXb2dDMElnaUR3QUFDQUFLQUlFSVFVZ0FDQUFLQUlRSWdOQkFXbzJBaEFnQXlBRmFpQUxRaWlJUEFBQUlBQW9BZ1FoQlNBQUlBQW9BaEFpQTBFQmFqWUNFQ0FESUFWcUlBdENNSWc4QUFBZ0FDZ0NCQ0VGSUFBZ0FDZ0NFQ0lEUVFGcU5nSVFJQU1nQldvZ0MwSTRpRHdBQUNBRVFVQnFJUVFnREVIQUFDQUdhNjJJSVF3TElBQWdERGNEdUMwZ0FDQUVOZ0xBTFNBSklBQW9BcFF0U1EwQUN3c2dBVE1CZ0FnaEN3SkFJQVFnQVVHQ0NHb3ZBUUFpQW1vaUFVRS9UUVJBSUFzZ0JLMkdJQXlFSVFzTUFRc2dCRUhBQUVZRVFDQUFJQUFvQWhBaUFVRUJhallDRUNBQklBQW9BZ1JxSUF3OEFBQWdBQ0FBS0FJUUlnRkJBV28yQWhBZ0FTQUFLQUlFYWlBTVFnaUlQQUFBSUFBZ0FDZ0NFQ0lCUVFGcU5nSVFJQUVnQUNnQ0JHb2dERUlRaUR3QUFDQUFJQUFvQWhBaUFVRUJhallDRUNBQklBQW9BZ1JxSUF4Q0dJZzhBQUFnQUNBQUtBSVFJZ0ZCQVdvMkFoQWdBU0FBS0FJRWFpQU1RaUNJUEFBQUlBQWdBQ2dDRUNJQlFRRnFOZ0lRSUFFZ0FDZ0NCR29nREVJb2lEd0FBQ0FBSUFBb0FoQWlBVUVCYWpZQ0VDQUJJQUFvQWdScUlBeENNSWc4QUFBZ0FDQUFLQUlRSWdGQkFXbzJBaEFnQVNBQUtBSUVhaUFNUWppSVBBQUFJQUloQVF3QkN5QUFJQUFvQWhBaUFrRUJhallDRUNBQ0lBQW9BZ1JxSUFzZ0JLMkdJQXlFSWd3OEFBQWdBQ0FBS0FJUUlnSkJBV28yQWhBZ0FpQUFLQUlFYWlBTVFnaUlQQUFBSUFBZ0FDZ0NFQ0lDUVFGcU5nSVFJQUlnQUNnQ0JHb2dERUlRaUR3QUFDQUFJQUFvQWhBaUFrRUJhallDRUNBQ0lBQW9BZ1JxSUF4Q0dJZzhBQUFnQUNBQUtBSVFJZ0pCQVdvMkFoQWdBaUFBS0FJRWFpQU1RaUNJUEFBQUlBQWdBQ2dDRUNJQ1FRRnFOZ0lRSUFJZ0FDZ0NCR29nREVJb2lEd0FBQ0FBSUFBb0FoQWlBa0VCYWpZQ0VDQUNJQUFvQWdScUlBeENNSWc4QUFBZ0FDQUFLQUlRSWdKQkFXbzJBaEFnQWlBQUtBSUVhaUFNUWppSVBBQUFJQUZCUUdvaEFTQUxRY0FBSUFScnJZZ2hDd3NnQUNBTE53TzRMU0FBSUFFMkFzQXRDOXNFQWdGL0FYNENRQ0FBS0FMQUxTSUJRVGxPQkVBZ0FDQUFLQUlRSWdGQkFXbzJBaEFnQVNBQUtBSUVhaUFBS1FPNExTSUNQQUFBSUFBZ0FDZ0NFQ0lCUVFGcU5nSVFJQUVnQUNnQ0JHb2dBa0lJaUR3QUFDQUFJQUFvQWhBaUFVRUJhallDRUNBQklBQW9BZ1JxSUFKQ0VJZzhBQUFnQUNBQUtBSVFJZ0ZCQVdvMkFoQWdBU0FBS0FJRWFpQUNRaGlJUEFBQUlBQWdBQ2dDRUNJQlFRRnFOZ0lRSUFFZ0FDZ0NCR29nQWtJZ2lEd0FBQ0FBSUFBb0FoQWlBVUVCYWpZQ0VDQUJJQUFvQWdScUlBSkNLSWc4QUFBZ0FDQUFLQUlRSWdGQkFXbzJBaEFnQVNBQUtBSUVhaUFDUWpDSVBBQUFJQUFnQUNnQ0VDSUJRUUZxTmdJUUlBRWdBQ2dDQkdvZ0FrSTRpRHdBQUF3QkN5QUJRUmxPQkVBZ0FDQUFLQUlRSWdGQkFXbzJBaEFnQVNBQUtBSUVhaUFBS1FPNExTSUNQQUFBSUFBZ0FDZ0NFQ0lCUVFGcU5nSVFJQUVnQUNnQ0JHb2dBa0lJaUR3QUFDQUFJQUFvQWhBaUFVRUJhallDRUNBQklBQW9BZ1JxSUFKQ0VJZzhBQUFnQUNBQUtBSVFJZ0ZCQVdvMkFoQWdBU0FBS0FJRWFpQUNRaGlJUEFBQUlBQWdBRUc4TFdvMUFnQTNBN2d0SUFBZ0FDZ0N3QzFCSUdzaUFUWUN3QzBMSUFGQkNVNEVRQ0FBSUFBb0FoQWlBVUVCYWpZQ0VDQUJJQUFvQWdScUlBQXBBN2d0SWdJOEFBQWdBQ0FBS0FJUUlnRkJBV28yQWhBZ0FTQUFLQUlFYWlBQ1FnaUlQQUFBSUFBZ0FDa0R1QzFDRUlnM0E3Z3RJQUFnQUNnQ3dDMUJFR3NpQVRZQ3dDMExJQUZCQVVnTkFDQUFJQUFvQWhBaUFVRUJhallDRUNBQklBQW9BZ1JxSUFBcEE3Z3RQQUFBQ3lBQVFRQTJBc0F0SUFCQ0FEY0R1QzBMOEFRQkEzOGdBRUdJQVdvaEFnTkFJQUlnQVVFQ2RDSURha0VBT3dFQUlBSWdBMEVFY21wQkFEc0JBQ0FCUVFKcUlnRkJuZ0pIRFFBTElBQkJBRHNCOEJRZ0FFRUFPd0g4RWlBQVFiZ1Zha0VBT3dFQUlBQkJ0QlZxUVFBN0FRQWdBRUd3RldwQkFEc0JBQ0FBUWF3VmFrRUFPd0VBSUFCQnFCVnFRUUE3QVFBZ0FFR2tGV3BCQURzQkFDQUFRYUFWYWtFQU93RUFJQUJCbkJWcVFRQTdBUUFnQUVHWUZXcEJBRHNCQUNBQVFaUVZha0VBT3dFQUlBQkJrQlZxUVFBN0FRQWdBRUdNRldwQkFEc0JBQ0FBUVlnVmFrRUFPd0VBSUFCQmhCVnFRUUE3QVFBZ0FFR0FGV3BCQURzQkFDQUFRZndVYWtFQU93RUFJQUJCK0JScVFRQTdBUUFnQUVIMEZHcEJBRHNCQUNBQVFmQVRha0VBT3dFQUlBQkI3Qk5xUVFBN0FRQWdBRUhvRTJwQkFEc0JBQ0FBUWVRVGFrRUFPd0VBSUFCQjRCTnFRUUE3QVFBZ0FFSGNFMnBCQURzQkFDQUFRZGdUYWtFQU93RUFJQUJCMUJOcVFRQTdBUUFnQUVIUUUycEJBRHNCQUNBQVFjd1Rha0VBT3dFQUlBQkJ5Qk5xUVFBN0FRQWdBRUhFRTJwQkFEc0JBQ0FBUWNBVGFrRUFPd0VBSUFCQnZCTnFRUUE3QVFBZ0FFRzRFMnBCQURzQkFDQUFRYlFUYWtFQU93RUFJQUJCc0JOcVFRQTdBUUFnQUVHc0UycEJBRHNCQUNBQVFhZ1Rha0VBT3dFQUlBQkJwQk5xUVFBN0FRQWdBRUdnRTJwQkFEc0JBQ0FBUVp3VGFrRUFPd0VBSUFCQm1CTnFRUUE3QVFBZ0FFR1VFMnBCQURzQkFDQUFRWkFUYWtFQU93RUFJQUJCakJOcVFRQTdBUUFnQUVHSUUycEJBRHNCQUNBQVFZUVRha0VBT3dFQUlBQkJnQk5xUVFBN0FRQWdBRUlBTndPZ0xTQUFRWWdKYWtFQk93RUFJQUJCQURZQ25DMGdBRUVBTmdLVUxRdUtBUUVFZnlBQUtBSklJQUZxSWdNZ0FpQURha0VCYXlJQ1RRUkFJQUFvQWxBaEJRTkFJQU1vQUFBaEJDQURRUUZxSVFNZ0JTQUVRYkh6M2ZGNWJFRVBka0grL3dkeGFpSUVMd0VBSWdZZ0FVSC8vd054UndSQUlBQW9Ba3dnQVNBQUtBSTRjVUgvL3dOeFFRRjBhaUFHT3dFQUlBUWdBVHNCQUFzZ0FVRUJhaUVCSUFJZ0EwOE5BQXNMQzFBQkFuOGdBU0FBS0FKUUlBQW9Ba2dnQVdvb0FBQkJzZlBkOFhsc1FROTJRZjcvQjNGcUlnTXZBUUFpQWtjRVFDQUFLQUpNSUFBb0FqZ2dBWEZCQVhScUlBSTdBUUFnQXlBQk93RUFDeUFDQzRVRkFSTi9JQUFvQW5BaUF5QURRUUoySUFBb0Ftd2lBMEVCSUFNYklnTWdBQ2dDZ0FGSkd5RUhJQUFvQW1RaUNpQUFLQUl3UVlZQ2F5SUZhMEgvL3dOeFFRQWdCU0FLU1JzaERDQUFLQUpJSWdnZ0Ntb2lDU0FEUVFGcklnSnFJZ1V0QUFFaERTQUZMUUFBSVE0Z0NVRUNhaUVGSUFJZ0NHb2hDeUFBS0FLRUFTRVNJQUFvQWp3aER5QUFLQUpNSVJBZ0FDZ0NPQ0VSSUFBb0FuaEJCVWdoRXdOQUFrQWdDaUFCUWYvL0EzRk5EUUFEUUFKQUFrQWdDeUFCUWYvL0EzRWlCbW90QUFBZ0RrY05BQ0FMSUFaQkFXb2lBV290QUFBZ0RVY05BQ0FHSUFocUlnSXRBQUFnQ1MwQUFFY05BQ0FCSUFocUxRQUFJQWt0QUFGR0RRRUxJQWRCQVdzaUIwVU5BaUFNSUJBZ0JpQVJjVUVCZEdvdkFRQWlBVWtOQVF3Q0N3c2dBa0VDYWlFRVFRQWhBaUFGSVFFQ1FBTkFJQUV0QUFBZ0JDMEFBRWNOQVNBQkxRQUJJQVF0QUFGSEJFQWdBa0VCY2lFQ0RBSUxJQUV0QUFJZ0JDMEFBa2NFUUNBQ1FRSnlJUUlNQWdzZ0FTMEFBeUFFTFFBRFJ3UkFJQUpCQTNJaEFnd0NDeUFCTFFBRUlBUXRBQVJIQkVBZ0FrRUVjaUVDREFJTElBRXRBQVVnQkMwQUJVY0VRQ0FDUVFWeUlRSU1BZ3NnQVMwQUJpQUVMUUFHUndSQUlBSkJCbkloQWd3Q0N5QUJMUUFISUFRdEFBZEhCRUFnQWtFSGNpRUNEQUlMSUFSQkNHb2hCQ0FCUVFocUlRRWdBa0g0QVVraEZDQUNRUWhxSVFJZ0ZBMEFDMEdBQWlFQ0N3SkFJQU1nQWtFQ2FpSUJTUVJBSUFBZ0JqWUNhQ0FCSUE5TEJFQWdEdzhMSUFFZ0VrOEVRQ0FCRHdzZ0NDQUNRUUZxSWdOcUlRc2dBeUFKYWlJRExRQUJJUTBnQXkwQUFDRU9JQUVoQXd3QkN5QVREUUVMSUFkQkFXc2lCMFVOQUNBTUlCQWdCaUFSY1VFQmRHb3ZBUUFpQVVrTkFRc0xJQU1MbEFJQkFuOENmMEVBSUFBdEFBQWdBUzBBQUVjTkFCcEJBU0FBTFFBQklBRXRBQUZIRFFBYUlBRkJBbW9oQVNBQVFRSnFJUUFDUUFOQUlBQXRBQUFnQVMwQUFFY05BU0FBTFFBQklBRXRBQUZIQkVBZ0FrRUJjaUVDREFJTElBQXRBQUlnQVMwQUFrY0VRQ0FDUVFKeUlRSU1BZ3NnQUMwQUF5QUJMUUFEUndSQUlBSkJBM0loQWd3Q0N5QUFMUUFFSUFFdEFBUkhCRUFnQWtFRWNpRUNEQUlMSUFBdEFBVWdBUzBBQlVjRVFDQUNRUVZ5SVFJTUFnc2dBQzBBQmlBQkxRQUdSd1JBSUFKQkJuSWhBZ3dDQ3lBQUxRQUhJQUV0QUFkSEJFQWdBa0VIY2lFQ0RBSUxJQUZCQ0dvaEFTQUFRUWhxSVFBZ0FrSDRBVWtoQXlBQ1FRaHFJUUlnQXcwQUMwR0FBaUVDQ3lBQ1FRSnFDd3ZpQlFFRWZ5QURJQUlnQWlBRFN4c2hCQ0FBSUFGcklRSUNRQ0FBUVFkeFJRMEFJQVJGRFFBZ0FDQUNMUUFBT2dBQUlBTkJBV3NoQmlBQ1FRRnFJUUlnQUVFQmFpSUhRUWR4UVFBZ0JFRUJheUlGRzBVRVFDQUhJUUFnQlNFRUlBWWhBd3dCQ3lBQUlBSXRBQUE2QUFFZ0EwRUNheUVHSUFSQkFtc2hCU0FDUVFGcUlRSUNRQ0FBUVFKcUlnZEJCM0ZGRFFBZ0JVVU5BQ0FBSUFJdEFBQTZBQUlnQTBFRGF5RUdJQVJCQTJzaEJTQUNRUUZxSVFJQ1FDQUFRUU5xSWdkQkIzRkZEUUFnQlVVTkFDQUFJQUl0QUFBNkFBTWdBMEVFYXlFR0lBUkJCR3NoQlNBQ1FRRnFJUUlDUUNBQVFRUnFJZ2RCQjNGRkRRQWdCVVVOQUNBQUlBSXRBQUE2QUFRZ0EwRUZheUVHSUFSQkJXc2hCU0FDUVFGcUlRSUNRQ0FBUVFWcUlnZEJCM0ZGRFFBZ0JVVU5BQ0FBSUFJdEFBQTZBQVVnQTBFR2F5RUdJQVJCQm1zaEJTQUNRUUZxSVFJQ1FDQUFRUVpxSWdkQkIzRkZEUUFnQlVVTkFDQUFJQUl0QUFBNkFBWWdBMEVIYXlFR0lBUkJCMnNoQlNBQ1FRRnFJUUlDUUNBQVFRZHFJZ2RCQjNGRkRRQWdCVVVOQUNBQUlBSXRBQUE2QUFjZ0EwRUlheUVESUFSQkNHc2hCQ0FBUVFocUlRQWdBa0VCYWlFQ0RBWUxJQWNoQUNBRklRUWdCaUVEREFVTElBY2hBQ0FGSVFRZ0JpRUREQVFMSUFjaEFDQUZJUVFnQmlFRERBTUxJQWNoQUNBRklRUWdCaUVEREFJTElBY2hBQ0FGSVFRZ0JpRUREQUVMSUFjaEFDQUZJUVFnQmlFREN3SkFJQU5CRjAwRVFDQUVSUTBCSUFSQkFXc2hBU0FFUVFkeElnTUVRQU5BSUFBZ0FpMEFBRG9BQUNBRVFRRnJJUVFnQUVFQmFpRUFJQUpCQVdvaEFpQURRUUZySWdNTkFBc0xJQUZCQjBrTkFRTkFJQUFnQWkwQUFEb0FBQ0FBSUFJdEFBRTZBQUVnQUNBQ0xRQUNPZ0FDSUFBZ0FpMEFBem9BQXlBQUlBSXRBQVE2QUFRZ0FDQUNMUUFGT2dBRklBQWdBaTBBQmpvQUJpQUFJQUl0QUFjNkFBY2dBRUVJYWlFQUlBSkJDR29oQWlBRVFRaHJJZ1FOQUFzTUFRc2dBQ0FCSUFRUWZ5RUFDeUFBQzJ3QkEzOENRQ0FCS0FJQUlnTkJCMHNOQUNBRElBSW9BZ0JQRFFBZ0FDQURheUVFQTBBZ0FDQUVLUUFBTndBQUlBSWdBaWdDQUNBQktBSUFJZ1ZyTmdJQUlBRWdBU2dDQUVFQmRDSUROZ0lBSUFBZ0JXb2hBQ0FEUVFkTERRRWdBeUFDS0FJQVNRMEFDd3NnQUF1OEFnRUJmd0pBSUFNZ0FHdEJBV29pQXlBQ0lBSWdBMHNiSWdKQkNFa05BQ0FDUVFocklnUkJBM1pCQVdwQkIzRWlBd1JBQTBBZ0FDQUJLUUFBTndBQUlBSkJDR3NoQWlBQlFRaHFJUUVnQUVFSWFpRUFJQU5CQVdzaUF3MEFDd3NnQkVFNFNRMEFBMEFnQUNBQktRQUFOd0FBSUFBZ0FTa0FDRGNBQ0NBQUlBRXBBQkEzQUJBZ0FDQUJLUUFZTndBWUlBQWdBU2tBSURjQUlDQUFJQUVwQUNnM0FDZ2dBQ0FCS1FBd053QXdJQUFnQVNrQU9EY0FPQ0FCUVVCcklRRWdBRUZBYXlFQUlBSkJRR29pQWtFSFN3MEFDd3NnQWtFRVR3UkFJQUFnQVNnQUFEWUFBQ0FDUVFScklRSWdBVUVFYWlFQklBQkJCR29oQUFzZ0FrRUNUd1JBSUFBZ0FTOEFBRHNBQUNBQ1FRSnJJUUlnQVVFQ2FpRUJJQUJCQW1vaEFBc2dBa0VCUmdSL0lBQWdBUzBBQURvQUFDQUFRUUZxQlNBQUN3dm5BUUVDZnlBQUlBRXBBQUEzQUFBZ0FDQUNRUUZySWdKQkIzRkJBV29pQTJvaEFBSkFJQUpCQ0VrTkFDQUJJQU5xSVFFZ0FrRURkaUlDUVFGcklRUWdBa0VIY1NJREJFQURRQ0FBSUFFcEFBQTNBQUFnQWtFQmF5RUNJQUZCQ0dvaEFTQUFRUWhxSVFBZ0EwRUJheUlERFFBTEN5QUVRUWRKRFFBRFFDQUFJQUVwQUFBM0FBQWdBQ0FCS1FBSU53QUlJQUFnQVNrQUVEY0FFQ0FBSUFFcEFCZzNBQmdnQUNBQktRQWdOd0FnSUFBZ0FTa0FLRGNBS0NBQUlBRXBBREEzQURBZ0FDQUJLUUE0TndBNElBRkJRR3NoQVNBQVFVQnJJUUFnQWtFSWF5SUNEUUFMQ3lBQUMvd0ZBUVIvSUFCQi8vOERjU0VESUFCQkVIWWhCRUVCSVFBZ0FrRUJSZ1JBSUFNZ0FTMEFBR29pQUVIeC93TnJJQUFnQUVIdy93TkxHeUlBSUFScUlnRkJFSFFpQWtHQWdEeHFJQUlnQVVIdy93TkxHeUFBY2c4TEFrQWdBUVIvSUFKQkVFa05BUUpBQWtBQ1FDQUNRYThyU3dSQUEwQWdBa0d3SzJzaEFrRzFCU0VGSUFFaEFBTkFJQU1nQUMwQUFHb2lBeUFFYWlBRElBQXRBQUZxSWdOcUlBTWdBQzBBQW1vaUEyb2dBeUFBTFFBRGFpSURhaUFESUFBdEFBUnFJZ05xSUFNZ0FDMEFCV29pQTJvZ0F5QUFMUUFHYWlJRGFpQURJQUF0QUFkcUlnTnFJUVFnQlFSQUlBQkJDR29oQUNBRlFRRnJJUVVNQVFzTElBUkI4ZjhEY0NFRUlBTkI4ZjhEY0NFRElBRkJzQ3RxSVFFZ0FrR3ZLMHNOQUFzZ0FrVU5BeUFDUVFoSkRRRUxBMEFnQXlBQkxRQUFhaUlBSUFScUlBQWdBUzBBQVdvaUFHb2dBQ0FCTFFBQ2FpSUFhaUFBSUFFdEFBTnFJZ0JxSUFBZ0FTMEFCR29pQUdvZ0FDQUJMUUFGYWlJQWFpQUFJQUV0QUFacUlnQnFJQUFnQVMwQUIyb2lBMm9oQkNBQlFRaHFJUUVnQWtFSWF5SUNRUWRMRFFBTElBSkZEUUVMSUFKQkFXc2hCaUFDUVFOeElnVUVRQ0FCSVFBRFFDQUNRUUZySVFJZ0F5QUFMUUFBYWlJRElBUnFJUVFnQUVFQmFpSUJJUUFnQlVFQmF5SUZEUUFMQ3lBR1FRTkpEUUFEUUNBRElBRXRBQUJxSWdBZ0FTMEFBV29pQlNBQkxRQUNhaUlHSUFFdEFBTnFJZ01nQmlBRklBQWdCR3BxYW1vaEJDQUJRUVJxSVFFZ0FrRUVheUlDRFFBTEN5QUVRZkgvQTNBaEJDQURRZkgvQTNBaEF3c2dCRUVRZENBRGNnVkJBUXNQQ3dKQUlBSkZEUUFnQWtFQmF5RUdJQUpCQTNFaUJRUkFJQUVoQUFOQUlBSkJBV3NoQWlBRElBQXRBQUJxSWdNZ0JHb2hCQ0FBUVFGcUlnRWhBQ0FGUVFGcklnVU5BQXNMSUFaQkEwa05BQU5BSUFNZ0FTMEFBR29pQUNBQkxRQUJhaUlGSUFFdEFBSnFJZ1lnQVMwQUEyb2lBeUFHSUFVZ0FDQUVhbXBxYWlFRUlBRkJCR29oQVNBQ1FRUnJJZ0lOQUFzTElBUkI4ZjhEY0VFUWRDQURRZkgvQTJzZ0F5QURRZkQvQTBzYmNnditEUUVLZnlBQUtBSXdJZ0lnQUNnQ0RFRUZheUlESUFJZ0Ewa2JJUWdnQUNnQ0FDSUNLQUlFSVFrZ0FVRUVSaUVIQWtBRFFDQUNLQUlRSWdNZ0FDZ0N3QzFCS21wQkEzVWlCRWtFUUVFQklRUU1BZ3NnQ0NBRElBUnJJZ01nQUNnQ1pDQUFLQUpVYXlJR0lBSW9BZ1JxSWdWQi8vOERJQVZCLy84RFNSc2lCQ0FESUFSSkd5SURTd1JBUVFFaEJDQURRUUJISUFkeVJRMENJQUZGRFFJZ0F5QUZSdzBDQ3lBQVFRQkJBQ0FISUFNZ0JVWnhJZ29RV3lBQUlBQW9BaEFpQWtFRGF6WUNFQ0FDSUFBb0FnUnFRUVJySUFNNkFBQWdBQ0FBS0FJUUlnSkJBV28yQWhBZ0FpQUFLQUlFYWlBRFFRaDJPZ0FBSUFBZ0FDZ0NFQ0lDUVFGcU5nSVFJQUlnQUNnQ0JHb2dBMEYvY3lJQ09nQUFJQUFnQUNnQ0VDSUVRUUZxTmdJUUlBUWdBQ2dDQkdvZ0FrRUlkam9BQUNBQUtBSUFJZ0lvQWh3aUJCQW5Ba0FnQWlnQ0VDSUZJQVFvQWhBaUN5QUZJQXRKR3lJRlJRMEFJQUlvQWd3Z0JDZ0NDQ0FGRUJjYUlBSWdBaWdDRENBRmFqWUNEQ0FFSUFRb0FnZ2dCV28yQWdnZ0FpQUNLQUlVSUFWcU5nSVVJQUlnQWlnQ0VDQUZhellDRUNBRUlBUW9BaEFnQldzaUFqWUNFQ0FDRFFBZ0JDQUVLQUlFTmdJSUN3Si9JQVlFUUNBQUtBSUFLQUlNSUFBb0FrZ2dBQ2dDVkdvZ0F5QUdJQU1nQmtrYklnSVFGeG9nQUNnQ0FDSUVJQVFvQWd3Z0FtbzJBZ3dnQkNBRUtBSVFJQUpyTmdJUUlBUWdCQ2dDRkNBQ2FqWUNGQ0FBSUFBb0FsUWdBbW8yQWxRZ0F5QUNheUVEQ3lBREN3UkFJQUFvQWdBaUFpZ0NEQ0VFSUFNZ0FpZ0NCQ0lHSUFNZ0Jra2JJZ1VFUUNBQ0lBWWdCV3MyQWdRQ1FDQUNLQUljS0FJVVFRSkdCRUFnQWlBRUlBVVFYd3dCQ3lBRUlBSW9BZ0FnQlJBWElRUWdBaWdDSENnQ0ZFRUJSdzBBSUFJZ0FpZ0NNQ0FFSUFWQnFKa0JLQUlBRVFBQU5nSXdDeUFDSUFJb0FnQWdCV28yQWdBZ0FpQUNLQUlJSUFWcU5nSUlJQUFvQWdBaUFpZ0NEQ0VFQ3lBQ0lBTWdCR28yQWd3Z0FpQUNLQUlRSUFOck5nSVFJQUlnQWlnQ0ZDQURhallDRkFzZ0FDZ0NBQ0VDSUFwRkRRQUxRUUFoQkFzQ1FDQUpJQUlvQWdScklnVkZCRUFnQUNnQ1pDRUREQUVMQWtBZ0FDZ0NNQ0lESUFWTkJFQWdBRUVDTmdLa0xTQUFLQUpJSUFJb0FnQWdBMnNnQXhBWEdpQUFJQUFvQWpBaUF6WUNxQzBnQUNBRE5nSmtEQUVMQWtBZ0FDZ0NSQ0FBS0FKa0lnSnJJQVZMRFFBZ0FDQUNJQU5ySWdJMkFtUWdBQ2dDU0NJR0lBTWdCbW9nQWhBWEdpQUFLQUtrTFNJQ1FRRk5CRUFnQUNBQ1FRRnFOZ0trTFFzZ0FDZ0NaQ0lDSUFBb0FxZ3RUdzBBSUFBZ0FqWUNxQzBMSUFBb0FrZ2dBbW9nQUNnQ0FDZ0NBQ0FGYXlBRkVCY2FJQUFnQUNnQ1pDQUZhaUlETmdKa0lBQWdBQ2dDTUNBQUtBS29MU0lDYXlJR0lBVWdCU0FHU3hzZ0FtbzJBcWd0Q3lBQUlBTTJBbFFMSUFNZ0FDZ0NRRXNFUUNBQUlBTTJBa0FMUVFNaEFnSkFJQVJGRFFBZ0FDZ0NBQ2dDQkNFRUFrQUNRQ0FCUVh0eFJRMEFJQVFOQUVFQklRSWdBeUFBS0FKVVJnMENJQUFvQWtRZ0Eyc2hBZ3dCQ3lBRUlBQW9Ba1FnQTJzaUFrME5BQ0FBS0FKVUlnVWdBQ2dDTUNJRVNBMEFJQUFnQXlBRWF5SUROZ0prSUFBZ0JTQUVhellDVkNBQUtBSklJZ1VnQkNBRmFpQURFQmNhSUFBb0FxUXRJZ05CQVUwRVFDQUFJQU5CQVdvMkFxUXRDeUFBS0FJd0lBSnFJUUlnQUNnQ1pDSURJQUFvQXFndFR3MEFJQUFnQXpZQ3FDMExJQUFvQWdBaUJDZ0NCQ0lGSUFJZ0FpQUZTeHNpQWdSQUlBQW9Ba2doQmlBRUlBVWdBbXMyQWdRZ0F5QUdhaUVEQWtBZ0JDZ0NIQ2dDRkVFQ1JnUkFJQVFnQXlBQ0VGOE1BUXNnQXlBRUtBSUFJQUlRRnlFRElBUW9BaHdvQWhSQkFVY05BQ0FFSUFRb0FqQWdBeUFDUWFpWkFTZ0NBQkVBQURZQ01Bc2dCQ0FFS0FJQUlBSnFOZ0lBSUFRZ0JDZ0NDQ0FDYWpZQ0NDQUFJQUFvQW1RZ0Ftb2lBellDWkNBQUlBQW9BakFnQUNnQ3FDMGlCR3NpQlNBQ0lBSWdCVXNiSUFScU5nS29MUXNnQXlBQUtBSkFTd1JBSUFBZ0F6WUNRQXNnQXlBQUtBSlVJZ1pySWdNZ0FDZ0NNQ0lDSUFBb0Fnd2dBQ2dDd0MxQkttcEJBM1ZySWdSQi8vOERJQVJCLy84RFNSc2lCU0FDSUFWSkcwa0VRRUVBSVFJZ0FVRUVSaUFEUVFCSGNrVU5BU0FCUlEwQklBQW9BZ0FvQWdRTkFTQURJQVZMRFFFTFFRQWhCQ0FCUVFSR0JFQWdBQ2dDQUNnQ0JFVWdBeUFGVFhFaEJBc2dBQ0FBS0FKSUlBWnFJQVVnQXlBRElBVkxHeUlCSUFRUVd5QUFJQUFvQWxRZ0FXbzJBbFFnQUNnQ0FDSUFLQUljSWdFUUp3SkFJQUFvQWhBaUFpQUJLQUlRSWdNZ0FpQURTUnNpQWtVTkFDQUFLQUlNSUFFb0FnZ2dBaEFYR2lBQUlBQW9BZ3dnQW1vMkFnd2dBU0FCS0FJSUlBSnFOZ0lJSUFBZ0FDZ0NGQ0FDYWpZQ0ZDQUFJQUFvQWhBZ0FtczJBaEFnQVNBQktBSVFJQUpySWdBMkFoQWdBQTBBSUFFZ0FTZ0NCRFlDQ0F0QkFrRUFJQVFiSVFJTElBSUxmUUVCZnlBQUlBQW9BaEFpQWtFQmFqWUNFQ0FDSUFBb0FnUnFJQUZCR0hZNkFBQWdBQ0FBS0FJUUlnSkJBV28yQWhBZ0FpQUFLQUlFYWlBQlFSQjJPZ0FBSUFBZ0FDZ0NFQ0lDUVFGcU5nSVFJQUlnQUNnQ0JHb2dBVUVJZGpvQUFDQUFJQUFvQWhBaUFrRUJhallDRUNBQ0lBQW9BZ1JxSUFFNkFBQUx2QUlCQkg5QmZpRUNBa0FnQUVVTkFDQUFLQUlnUlEwQUlBQW9BaVFpQkVVTkFDQUFLQUljSWdGRkRRQWdBU2dDQUNBQVJ3MEFBa0FDUUNBQktBSWdJZ05CT1dzT09RRUNBZ0lDQWdJQ0FnSUNBZ0VDQWdJQkFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQkFnSUNBZ0lDQWdJQ0FnSUJBZ0lDQWdJQ0FnSUNBUUFMSUFOQm1nVkdEUUFnQTBFcVJ3MEJDd0ovQW44Q2Z5QUJLQUlFSWdJRVFDQUFLQUlvSUFJZ0JCRUdBQ0FBS0FJY0lRRUxJQUVvQWxBaUFnc0VRQ0FBS0FJb0lBSWdBQ2dDSkJFR0FDQUFLQUljSVFFTElBRW9Ba3dpQWdzRVFDQUFLQUlvSUFJZ0FDZ0NKQkVHQUNBQUtBSWNJUUVMSUFFb0FrZ2lBZ3NFUUNBQUtBSW9JQUlnQUNnQ0pCRUdBQ0FBS0FJY0lRRUxJQUFvQWlnZ0FTQUFLQUlrRVFZQUlBQkJBRFlDSEVGOVFRQWdBMEh4QUVZYklRSUxJQUlMN3dJQkJuOGdBQ2dDTUNJRFFmLy9BM0VoQkNBQUtBSlFJUUZCQkNFRkEwQWdBVUVBSUFFdkFRQWlBaUFFYXlJR0lBSWdCa2tiT3dFQUlBRkJBQ0FCTHdFQ0lnSWdCR3NpQmlBQ0lBWkpHenNCQWlBQlFRQWdBUzhCQkNJQ0lBUnJJZ1lnQWlBR1NSczdBUVFnQVVFQUlBRXZBUVlpQWlBRWF5SUdJQUlnQmtrYk93RUdJQVZCZ0lBRVJrVUVRQ0FCUVFocUlRRWdCVUVFYWlFRkRBRUxDd0pBSUFORkRRQWdBMEVEY1NFRklBQW9Ba3doQVNBRFFRRnJRUU5QQkVBZ0EwRjhjU0VBQTBBZ0FVRUFJQUV2QVFBaUF5QUVheUlDSUFJZ0Ewc2JPd0VBSUFGQkFDQUJMd0VDSWdNZ0JHc2lBaUFDSUFOTEd6c0JBaUFCUVFBZ0FTOEJCQ0lESUFScklnSWdBaUFEU3hzN0FRUWdBVUVBSUFFdkFRWWlBeUFFYXlJQ0lBSWdBMHNiT3dFR0lBRkJDR29oQVNBQVFRUnJJZ0FOQUFzTElBVkZEUUFEUUNBQlFRQWdBUzhCQUNJQUlBUnJJZ01nQUNBRFNSczdBUUFnQVVFQ2FpRUJJQVZCQVdzaUJRMEFDd3NMcFJFQ0MzOENmaUFCUVFSR0lRY2dBQ2dDTENFQ0FrQUNRQUpBSUFGQkJFWUVRQ0FDUVFKR0RRSWdBZ1JBUVFBaEFpQUFRUUFRWGlBQVFRQTJBaXdnQUNBQUtBSmtOZ0pVSUFBb0FnQVFIaUFBS0FJQUtBSVFSUTBFQ3lBQUlBY1FYU0FBUVFJMkFpd01BUXNnQWcwQklBQW9BanhGRFFFZ0FDQUhFRjBnQUVFQk5nSXNDeUFBSUFBb0FtUTJBbFFMUVFKQkFTQUJRUVJHR3lFTElBQkI1QUJxSVF3Z0FFRThhaUVLQTBBQ1FDQUFLQUlNSUFBb0FoQkJDR3BMRFFBZ0FDZ0NBQkFlSUFBb0FnQWlCQ2dDRUEwQVFRQWhBaUFCUVFSSERRSWdCQ2dDQkEwQ0lBQW9Bc0F0RFFJZ0FDZ0NMRVZCQVhRUEN3SkFBa0FDUUNBS0tBSUFRWVVDVFFSQUlBQVFSUUpBSUFBb0Fqd2lBa0dGQWtzTkFDQUJEUUJCQUE4TElBSkZEUUlnQUNnQ0xBUi9JQUlGSUFBZ0J4QmRJQUFnQ3pZQ0xDQUFJQUFvQW1RMkFsUWdBQ2dDUEF0QkEwa05BUXNnQUNBQUtBSmtRYVNaQVNnQ0FCRUNBQ0VDSUFBb0FtUWlCSzBnQXExOUlnMUNBVk1OQUNBTklBQW9BakJCaGdKcnJWVU5BQ0FFSUFBb0FrZ2lCR29nQWlBRWFrRzBtUUVvQWdBUkFnQWlBa0VEU1EwQUlBQW9BandpQkNBQ0lBSWdCRXNiSWdaQnJlb0FhaTBBQUNJRFFRSjBJZ1JCdE9RQWFqTUJBQ0VPSUFSQnR1UUFhaThCQUNFQ0lBTkJDR3RCRTAwRVFDQUdRUU5ySUFSQnNPd0FhaWdDQUd1dElBS3RoaUFPaENFT0lBUkJzTmtBYWlnQ0FDQUNhaUVDQ3lBQUtBTEFMU0VGSUFJZ0RhZEJBV3NpQ0NBSVFRZDJRWUFDYWlBSVFZQUNTUnRCc09ZQWFpMEFBQ0lFUVFKMElnbEJzdVVBYWk4QkFHb2hBeUFKUWJEbEFHb3pBUUFnQXEyR0lBNkVJUTRnQUNrRHVDMGhEUUpBSUFVZ0JFRUVTUVIvSUFNRklBZ2dDVUd3N1FCcUtBSUFhNjBnQTYyR0lBNkVJUTRnQ1VHdzJnQnFLQUlBSUFOcUN5SUVhaUlDUVQ5TkJFQWdEaUFGcllZZ0RZUWhEZ3dCQ3lBRlFjQUFSZ1JBSUFBb0FnUWhBaUFBSUFBb0FoQWlBMEVCYWpZQ0VDQUNJQU5xSUEwOEFBQWdBQ2dDQkNFQ0lBQWdBQ2dDRUNJRFFRRnFOZ0lRSUFJZ0Eyb2dEVUlJaUR3QUFDQUFLQUlFSVFJZ0FDQUFLQUlRSWdOQkFXbzJBaEFnQWlBRGFpQU5RaENJUEFBQUlBQW9BZ1FoQWlBQUlBQW9BaEFpQTBFQmFqWUNFQ0FDSUFOcUlBMUNHSWc4QUFBZ0FDZ0NCQ0VDSUFBZ0FDZ0NFQ0lEUVFGcU5nSVFJQUlnQTJvZ0RVSWdpRHdBQUNBQUtBSUVJUUlnQUNBQUtBSVFJZ05CQVdvMkFoQWdBaUFEYWlBTlFpaUlQQUFBSUFBb0FnUWhBaUFBSUFBb0FoQWlBMEVCYWpZQ0VDQUNJQU5xSUExQ01JZzhBQUFnQUNnQ0JDRUNJQUFnQUNnQ0VDSURRUUZxTmdJUUlBSWdBMm9nRFVJNGlEd0FBQ0FFSVFJTUFRc2dBQ2dDQkNFRUlBQWdBQ2dDRUNJRFFRRnFOZ0lRSUFNZ0JHb2dEaUFGcllZZ0RZUWlEVHdBQUNBQUtBSUVJUVFnQUNBQUtBSVFJZ05CQVdvMkFoQWdBeUFFYWlBTlFnaUlQQUFBSUFBb0FnUWhCQ0FBSUFBb0FoQWlBMEVCYWpZQ0VDQURJQVJxSUExQ0VJZzhBQUFnQUNnQ0JDRUVJQUFnQUNnQ0VDSURRUUZxTmdJUUlBTWdCR29nRFVJWWlEd0FBQ0FBS0FJRUlRUWdBQ0FBS0FJUUlnTkJBV28yQWhBZ0F5QUVhaUFOUWlDSVBBQUFJQUFvQWdRaEJDQUFJQUFvQWhBaUEwRUJhallDRUNBRElBUnFJQTFDS0lnOEFBQWdBQ2dDQkNFRUlBQWdBQ2dDRUNJRFFRRnFOZ0lRSUFNZ0JHb2dEVUl3aUR3QUFDQUFLQUlFSVFRZ0FDQUFLQUlRSWdOQkFXbzJBaEFnQXlBRWFpQU5RamlJUEFBQUlBSkJRR29oQWlBT1FjQUFJQVZycllnaERnc2dBQ0FPTndPNExTQUFJQUkyQXNBdElBQWdBQ2dDUENBR2F6WUNQQ0FNSVFJTUFnc2dBQ2dDU0NBQUtBSmthaTBBQUVFQ2RDSUNRYkRjQUdvekFRQWhEaUFBS1FPNExTRU5Ba0FnQUNnQ3dDMGlBeUFDUWJMY0FHb3ZBUUFpQkdvaUFrRS9UUVJBSUE0Z0E2MkdJQTJFSVE0TUFRc2dBMEhBQUVZRVFDQUFLQUlFSVFJZ0FDQUFLQUlRSWdOQkFXbzJBaEFnQWlBRGFpQU5QQUFBSUFBb0FnUWhBaUFBSUFBb0FoQWlBMEVCYWpZQ0VDQUNJQU5xSUExQ0NJZzhBQUFnQUNnQ0JDRUNJQUFnQUNnQ0VDSURRUUZxTmdJUUlBSWdBMm9nRFVJUWlEd0FBQ0FBS0FJRUlRSWdBQ0FBS0FJUUlnTkJBV28yQWhBZ0FpQURhaUFOUWhpSVBBQUFJQUFvQWdRaEFpQUFJQUFvQWhBaUEwRUJhallDRUNBQ0lBTnFJQTFDSUlnOEFBQWdBQ2dDQkNFQ0lBQWdBQ2dDRUNJRFFRRnFOZ0lRSUFJZ0Eyb2dEVUlvaUR3QUFDQUFLQUlFSVFJZ0FDQUFLQUlRSWdOQkFXbzJBaEFnQWlBRGFpQU5RakNJUEFBQUlBQW9BZ1FoQWlBQUlBQW9BaEFpQTBFQmFqWUNFQ0FDSUFOcUlBMUNPSWc4QUFBZ0JDRUNEQUVMSUFBb0FnUWhCQ0FBSUFBb0FoQWlCVUVCYWpZQ0VDQUVJQVZxSUE0Z0E2MkdJQTJFSWcwOEFBQWdBQ2dDQkNFRUlBQWdBQ2dDRUNJRlFRRnFOZ0lRSUFRZ0JXb2dEVUlJaUR3QUFDQUFLQUlFSVFRZ0FDQUFLQUlRSWdWQkFXbzJBaEFnQkNBRmFpQU5RaENJUEFBQUlBQW9BZ1FoQkNBQUlBQW9BaEFpQlVFQmFqWUNFQ0FFSUFWcUlBMUNHSWc4QUFBZ0FDZ0NCQ0VFSUFBZ0FDZ0NFQ0lGUVFGcU5nSVFJQVFnQldvZ0RVSWdpRHdBQUNBQUtBSUVJUVFnQUNBQUtBSVFJZ1ZCQVdvMkFoQWdCQ0FGYWlBTlFpaUlQQUFBSUFBb0FnUWhCQ0FBSUFBb0FoQWlCVUVCYWpZQ0VDQUVJQVZxSUExQ01JZzhBQUFnQUNnQ0JDRUVJQUFnQUNnQ0VDSUZRUUZxTmdJUUlBUWdCV29nRFVJNGlEd0FBQ0FDUVVCcUlRSWdEa0hBQUNBRGE2MklJUTRMSUFBZ0RqY0R1QzBnQUNBQ05nTEFMU0FBSUFBb0FtUkJBV28yQW1SQmZ5RUdJQW9oQWd3QkN5QUFJQUFvQW1RaUFrRUNJQUpCQWtrYk5nS29MU0FBS0FJc0lRSWdBVUVFUmdSQUFrQWdBa1VOQUNBQVFRRVFYaUFBUVFBMkFpd2dBQ0FBS0FKa05nSlVJQUFvQWdBUUhpQUFLQUlBS0FJUURRQkJBZzhMUVFNUEN5QUNCRUJCQUNFQ0lBQkJBQkJlSUFCQkFEWUNMQ0FBSUFBb0FtUTJBbFFnQUNnQ0FCQWVJQUFvQWdBb0FoQkZEUU1MUVFFaEFnd0NDeUFDSUFJb0FnQWdCbW8yQWdBTUFBc0FDeUFDQzdVSkFRRi9Jd0JCNE1BQWF5SUZKQUFnQlNBQU5nTFVRQ0FGSUFFMkF0QkFJQVVnQWpZQ3pFQWdCU0FETndQQVFDQUZJQVEyQXJ4QUlBVWdCU2dDMEVBMkFyaEFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUlBVW9BcnhBRGhFREJBQUdBUUlGQ1FvS0Nnb0tDZ2dLQndvTElBVkNBRGNEMkVBTUNnc2dCU0FGS0FLNFFFSGtBR29nQlNnQ3pFQWdCU2tEd0VBUVFqY0QyRUFNQ1FzZ0JTZ0N1RUFRRlNBRlFnQTNBOWhBREFnTElBVW9BcmhBS0FJUUJFQWdCU0FGS0FLNFFDZ0NFQ0FGS0FLNFFDa0RHQ0FGS0FLNFFFSGtBR29RWWlJRE53T1lRQ0FEVUFSQUlBVkNmemNEMkVBTUNRc2dCU2dDdUVBcEF3Z2dCU2dDdUVBcEF3Z2dCU2tEbUVCOFZnUkFJQVVvQXJoQVFlUUFha0VWUVFBUUZDQUZRbjgzQTloQURBa0xJQVVvQXJoQUlnQWdCU2tEbUVBZ0FDa0RBSHczQXdBZ0JTZ0N1RUFpQUNBRktRT1lRQ0FBS1FNSWZEY0RDQ0FGS0FLNFFFRUFOZ0lRQ3lBRktBSzRRQzBBZUVFQmNVVUVRQ0FGUWdBM0E2aEFBMEFnQlNrRHFFQWdCU2dDdUVBcEF3QlVCRUFnQlNBRktBSzRRQ2tEQUNBRktRT29RSDFDZ01BQVZnUitRb0RBQUFVZ0JTZ0N1RUFwQXdBZ0JTa0RxRUI5Q3pjRG9FQWdCU0FGS0FMVVFDQUZRUkJxSUFVcEE2QkFFQ3NpQXpjRHNFQWdBMElBVXdSQUlBVW9BcmhBUWVRQWFpQUZLQUxVUUJBWUlBVkNmemNEMkVBTUN3c2dCU2tEc0VCUUJFQWdCU2dDdUVCQjVBQnFRUkZCQUJBVUlBVkNmemNEMkVBTUN3VWdCU0FGS1FPd1FDQUZLUU9vUUh3M0E2aEFEQUlMQUFzTEN5QUZLQUs0UUNBRktBSzRRQ2tEQURjRElDQUZRZ0EzQTloQURBY0xJQVVwQThCQUlBVW9BcmhBS1FNSUlBVW9BcmhBS1FNZ2ZWWUVRQ0FGSUFVb0FyaEFLUU1JSUFVb0FyaEFLUU1nZlRjRHdFQUxJQVVwQThCQVVBUkFJQVZDQURjRDJFQU1Cd3NnQlNnQ3VFQXRBSGhCQVhFRVFDQUZLQUxVUUNBRktBSzRRQ2tESUVFQUVDaEJBRWdFUUNBRktBSzRRRUhrQUdvZ0JTZ0MxRUFRR0NBRlFuODNBOWhBREFnTEN5QUZJQVVvQXRSQUlBVW9Bc3hBSUFVcEE4QkFFQ3NpQXpjRHNFQWdBMElBVXdSQUlBVW9BcmhBUWVRQWFrRVJRUUFRRkNBRlFuODNBOWhBREFjTElBVW9BcmhBSWdBZ0JTa0RzRUFnQUNrRElIdzNBeUFnQlNrRHNFQlFCRUFnQlNnQ3VFQXBBeUFnQlNnQ3VFQXBBd2hVQkVBZ0JTZ0N1RUJCNUFCcVFSRkJBQkFVSUFWQ2Z6Y0QyRUFNQ0FzTElBVWdCU2tEc0VBM0E5aEFEQVlMSUFVZ0JTZ0N1RUFwQXlBZ0JTZ0N1RUFwQXdCOUlBVW9BcmhBS1FNSUlBVW9BcmhBS1FNQWZTQUZLQUxNUUNBRktRUEFRQ0FGS0FLNFFFSGtBR29RaVFFM0F3Z2dCU2tEQ0VJQVV3UkFJQVZDZnpjRDJFQU1CZ3NnQlNnQ3VFQWdCU2tEQ0NBRktBSzRRQ2tEQUh3M0F5QWdCVUlBTndQWVFBd0ZDeUFGSUFVb0FzeEFOZ0lFSUFVb0FnUWdCU2dDdUVCQktHb2dCU2dDdUVCQjVBQnFFSVVCUVFCSUJFQWdCVUovTndQWVFBd0ZDeUFGUWdBM0E5aEFEQVFMSUFVZ0JTZ0N1RUFzQUdDc053UFlRQXdEQ3lBRklBVW9BcmhBS1FOd053UFlRQXdDQ3lBRklBVW9BcmhBS1FNZ0lBVW9BcmhBS1FNQWZUY0QyRUFNQVFzZ0JTZ0N1RUJCNUFCcVFSeEJBQkFVSUFWQ2Z6Y0QyRUFMSUFVcEE5aEFJUU1nQlVIZ3dBQnFKQUFnQXdzSUFFRUJRUXdRZkFzaUFRRi9Jd0JCRUdzaUFTQUFOZ0lNSUFFb0Fnd2lBQ0FBS0FJd1FRRnFOZ0l3Q3djQUlBQW9BaXdMQndBZ0FDZ0NLQXNZQVFGL0l3QkJFR3NpQVNBQU5nSU1JQUVvQWd4QkRHb0xCd0FnQUNnQ0dBc0hBQ0FBS0FJUUN3Y0FJQUFvQWdnTFJRQkI0SjBCUWdBM0F3QkIySjBCUWdBM0F3QkIwSjBCUWdBM0F3QkJ5SjBCUWdBM0F3QkJ3SjBCUWdBM0F3QkJ1SjBCUWdBM0F3QkJzSjBCUWdBM0F3QkJzSjBCQ3hRQUlBQWdBYTBnQXExQ0lJYUVJQU1nQkJCN0N4TUJBWDRnQUJCSklnRkNJSWluRUFBZ0FhY0xGUUFnQUNBQnJTQUNyVUlnaG9RZ0F5QUVFTHNCQ3hRQUlBQWdBU0FDclNBRHJVSWdob1FnQkJCNkM2MEVBUUYvSXdCQklHc2lCU1FBSUFVZ0FEWUNHQ0FGSUFHdElBS3RRaUNHaERjREVDQUZJQU0yQWd3Z0JTQUVOZ0lJQWtBQ1FDQUZLUU1RSUFVb0FoZ3BBekJVQkVBZ0JTZ0NDRUVKVFEwQkN5QUZLQUlZUVFocVFSSkJBQkFVSUFWQmZ6WUNIQXdCQ3lBRktBSVlLQUlZUVFKeEJFQWdCU2dDR0VFSWFrRVpRUUFRRkNBRlFYODJBaHdNQVFzQ2Z5QUZLQUlNSVFFakFFRVFheUlBSkFBZ0FDQUJOZ0lJSUFCQkFUb0FCd0pBSUFBb0FnaEZCRUFnQUVFQk9nQVBEQUVMSUFBZ0FDZ0NDQ0FBTFFBSFFRRnhFTE1CUVFCSE9nQVBDeUFBTFFBUFFRRnhJUUVnQUVFUWFpUUFJQUZGQ3dSQUlBVW9BaGhCQ0dwQkVFRUFFQlFnQlVGL05nSWNEQUVMSUFVZ0JTZ0NHQ2dDUUNBRktRTVFwMEVFZEdvMkFnUWdCU0FGS0FJRUtBSUFCSDhnQlNnQ0JDZ0NBQ2dDRUFWQmZ3czJBZ0FDUUNBRktBSU1JQVVvQWdCR0JFQWdCU2dDQkNnQ0JBUkFJQVVvQWdRb0FnUWlBQ0FBS0FJQVFYNXhOZ0lBSUFVb0FnUW9BZ1JCQURzQlVDQUZLQUlFS0FJRUtBSUFSUVJBSUFVb0FnUW9BZ1FRTnlBRktBSUVRUUEyQWdRTEN3d0JDeUFGS0FJRUtBSUVSUVJBSUFVb0FnUW9BZ0FRUHlFQUlBVW9BZ1FnQURZQ0JDQUFSUVJBSUFVb0FoaEJDR3BCRGtFQUVCUWdCVUYvTmdJY0RBTUxDeUFGS0FJRUtBSUVJQVVvQWd3MkFoQWdCU2dDQkNnQ0JDQUZLQUlJT3dGUUlBVW9BZ1FvQWdRaUFDQUFLQUlBUVFGeU5nSUFDeUFGUVFBMkFod0xJQVVvQWh3aEFDQUZRU0JxSkFBZ0FBc1hBUUYrSUFBZ0FTQUNFSFFpQTBJZ2lLY1FBQ0FEcHdzZkFRRitJQUFnQVNBQ3JTQURyVUlnaG9RUUt5SUVRaUNJcHhBQUlBU25DNjRCQWdGL0FYNENmeU1BUVNCcklnSWdBRFlDRkNBQ0lBRTJBaEFDUUNBQ0tBSVVSUVJBSUFKQ2Z6Y0RHQXdCQ3lBQ0tBSVFRUWh4QkVBZ0FpQUNLQUlVS1FNd053TUlBMEFnQWlrRENFSUFVZ1IvSUFJb0FoUW9Ba0FnQWlrRENFSUJmYWRCQkhScUtBSUFCVUVCQzBVRVFDQUNJQUlwQXdoQ0FYMDNBd2dNQVFzTElBSWdBaWtEQ0RjREdBd0JDeUFDSUFJb0FoUXBBekEzQXhnTElBSXBBeGdpQTBJZ2lLY0xFQUFnQTZjTEV3QWdBQ0FCclNBQ3JVSWdob1FnQXhDOEFRdUlBZ0lCZndGK0FuOGpBRUVnYXlJRUpBQWdCQ0FBTmdJVUlBUWdBVFlDRUNBRUlBS3RJQU90UWlDR2hEY0RDQUpBSUFRb0FoUkZCRUFnQkVKL053TVlEQUVMSUFRb0FoUW9BZ1FFUUNBRVFuODNBeGdNQVFzZ0JDa0RDRUwvLy8vLy8vLy8vLzhBVmdSQUlBUW9BaFJCQkdwQkVrRUFFQlFnQkVKL053TVlEQUVMQWtBZ0JDZ0NGQzBBRUVFQmNVVUVRQ0FFS1FNSVVFVU5BUXNnQkVJQU53TVlEQUVMSUFRZ0JDZ0NGQ2dDRkNBRUtBSVFJQVFwQXdnUUt5SUZOd01BSUFWQ0FGTUVRQ0FFS0FJVVFRUnFJQVFvQWhRb0FoUVFHQ0FFUW44M0F4Z01BUXNnQkNBRUtRTUFOd01ZQ3lBRUtRTVlJUVVnQkVFZ2FpUUFJQVZDSUlpbkN4QUFJQVduQzA4QkFYOGpBRUVnYXlJRUpBQWdCQ0FBTmdJY0lBUWdBYTBnQXExQ0lJYUVOd01RSUFRZ0F6WUNEQ0FFS0FJY0lBUXBBeEFnQkNnQ0RDQUVLQUljS0FJY0VLMEJJUUFnQkVFZ2FpUUFJQUFMMlFNQkFYOGpBRUVnYXlJRkpBQWdCU0FBTmdJWUlBVWdBYTBnQXExQ0lJYUVOd01RSUFVZ0F6WUNEQ0FGSUFRMkFnZ0NRQ0FGS0FJWUlBVXBBeEJCQUVFQUVENUZCRUFnQlVGL05nSWNEQUVMSUFVb0FoZ29BaGhCQW5FRVFDQUZLQUlZUVFocVFSbEJBQkFVSUFWQmZ6WUNIQXdCQ3lBRktBSVlLQUpBSUFVcEF4Q25RUVIwYWlnQ0NBUkFJQVVvQWhnb0FrQWdCU2tERUtkQkJIUnFLQUlJSUFVb0Fnd1FhVUVBU0FSQUlBVW9BaGhCQ0dwQkQwRUFFQlFnQlVGL05nSWNEQUlMSUFWQkFEWUNIQXdCQ3lBRklBVW9BaGdvQWtBZ0JTa0RFS2RCQkhScU5nSUVJQVVnQlNnQ0JDZ0NBQVIvSUFVb0Fnd2dCU2dDQkNnQ0FDZ0NGRWNGUVFFTFFRRnhOZ0lBQWtBZ0JTZ0NBQVJBSUFVb0FnUW9BZ1JGQkVBZ0JTZ0NCQ2dDQUJBL0lRQWdCU2dDQkNBQU5nSUVJQUJGQkVBZ0JTZ0NHRUVJYWtFT1FRQVFGQ0FGUVg4MkFod01CQXNMSUFVb0FnUW9BZ1FnQlNnQ0REWUNGQ0FGS0FJRUtBSUVJZ0FnQUNnQ0FFRWdjallDQUF3QkN5QUZLQUlFS0FJRUJFQWdCU2dDQkNnQ0JDSUFJQUFvQWdCQlgzRTJBZ0FnQlNnQ0JDZ0NCQ2dDQUVVRVFDQUZLQUlFS0FJRUVEY2dCU2dDQkVFQU5nSUVDd3NMSUFWQkFEWUNIQXNnQlNnQ0hDRUFJQVZCSUdva0FDQUFDeGNBSUFBZ0FhMGdBcTFDSUlhRUlBTWdCQ0FGRUpvQkN4SUFJQUFnQWEwZ0FxMUNJSWFFSUFNUUtBdVBBUUlCZndGK0FuOGpBRUVnYXlJRUpBQWdCQ0FBTmdJVUlBUWdBVFlDRUNBRUlBSTJBZ3dnQkNBRE5nSUlBa0FDUUNBRUtBSVFCRUFnQkNnQ0RBMEJDeUFFS0FJVVFRaHFRUkpCQUJBVUlBUkNmemNER0F3QkN5QUVJQVFvQWhRZ0JDZ0NFQ0FFS0FJTUlBUW9BZ2dRbXdFM0F4Z0xJQVFwQXhnaEJTQUVRU0JxSkFBZ0JVSWdpS2NMRUFBZ0JhY0xoUVVDQVg4QmZnSi9Jd0JCTUdzaUF5UUFJQU1nQURZQ0pDQURJQUUyQWlBZ0F5QUNOZ0ljQWtBZ0F5Z0NKQ2dDR0VFQ2NRUkFJQU1vQWlSQkNHcEJHVUVBRUJRZ0EwSi9Od01vREFFTElBTW9BaUJGQkVBZ0F5Z0NKRUVJYWtFU1FRQVFGQ0FEUW44M0F5Z01BUXNnQTBFQU5nSU1JQU1nQXlnQ0lCQXVOZ0lZSUFNb0FpQWdBeWdDR0VFQmEyb3NBQUJCTDBjRVFDQURJQU1vQWhoQkFtb1FHU0lBTmdJTUlBQkZCRUFnQXlnQ0pFRUlha0VPUVFBUUZDQURRbjgzQXlnTUFnc0NRQUpBSUFNb0Fnd2lBU0FES0FJZ0lnQnpRUU54RFFBZ0FFRURjUVJBQTBBZ0FTQUFMUUFBSWdJNkFBQWdBa1VOQXlBQlFRRnFJUUVnQUVFQmFpSUFRUU54RFFBTEN5QUFLQUlBSWdKQmYzTWdBa0dCZ29RSWEzRkJnSUdDaEhoeERRQURRQ0FCSUFJMkFnQWdBQ2dDQkNFQ0lBRkJCR29oQVNBQVFRUnFJUUFnQWtHQmdvUUlheUFDUVg5emNVR0FnWUtFZUhGRkRRQUxDeUFCSUFBdEFBQWlBam9BQUNBQ1JRMEFBMEFnQVNBQUxRQUJJZ0k2QUFFZ0FVRUJhaUVCSUFCQkFXb2hBQ0FDRFFBTEN5QURLQUlNSUFNb0FoaHFRUzg2QUFBZ0F5Z0NEQ0FES0FJWVFRRnFha0VBT2dBQUN5QURJQU1vQWlSQkFFSUFRUUFRZWlJQU5nSUlJQUJGQkVBZ0F5Z0NEQkFWSUFOQ2Z6Y0RLQXdCQ3lBRElBTW9BaVFDZnlBREtBSU1CRUFnQXlnQ0RBd0JDeUFES0FJZ0N5QURLQUlJSUFNb0Fod1Ftd0UzQXhBZ0F5Z0NEQkFWQWtBZ0F5a0RFRUlBVXdSQUlBTW9BZ2dRR2d3QkN5QURLQUlrSUFNcEF4QkJBRUVEUVlDQS9JOEVFSm9CUVFCSUJFQWdBeWdDSkNBREtRTVFFSmtCR2lBRFFuODNBeWdNQWdzTElBTWdBeWtERURjREtBc2dBeWtES0NFRUlBTkJNR29rQUNBRVFpQ0lwd3NRQUNBRXB3c1JBQ0FBSUFHdElBS3RRaUNHaEJDWkFRc1hBQ0FBSUFHdElBS3RRaUNHaENBRElBUWdCUkNMQVF0L0FnRi9BWDRqQUVFZ2F5SURKQUFnQXlBQU5nSVlJQU1nQVRZQ0ZDQURJQUkyQWhBZ0F5QURLQUlZSUFNb0FoUWdBeWdDRUJCMElnUTNBd2dDUUNBRVFnQlRCRUFnQTBFQU5nSWNEQUVMSUFNZ0F5Z0NHQ0FES1FNSUlBTW9BaEFnQXlnQ0dDZ0NIQkN0QVRZQ0hBc2dBeWdDSENFQUlBTkJJR29rQUNBQUN4QUFJd0FnQUd0QmNIRWlBQ1FBSUFBTEJnQWdBQ1FBQ3dRQUl3QUxnZ0VDQVg4QmZpTUFRU0JySWdRa0FDQUVJQUEyQWhnZ0JDQUJOZ0lVSUFRZ0FqWUNFQ0FFSUFNMkFnd2dCQ0FFS0FJWUlBUW9BaFFnQkNnQ0VCQjBJZ1UzQXdBQ1FDQUZRZ0JUQkVBZ0JFRi9OZ0ljREFFTElBUWdCQ2dDR0NBRUtRTUFJQVFvQWhBZ0JDZ0NEQkI3TmdJY0N5QUVLQUljSVFBZ0JFRWdhaVFBSUFBTDBFVURCbjhCZmdKOEl3QkI0QUJySWdFa0FDQUJJQUEyQWxnQ1FDQUJLQUpZUlFSQUlBRkJmellDWEF3QkN5TUFRU0JySWdBZ0FTZ0NXRFlDSENBQUlBRkJRR3MyQWhnZ0FFRUFOZ0lVSUFCQ0FEY0RBQUpBSUFBb0Fod3RBQ2hCQVhGRkJFQWdBQ2dDSENnQ0dDQUFLQUljS0FJVVJnMEJDeUFBUVFFMkFoUUxJQUJDQURjRENBTkFJQUFwQXdnZ0FDZ0NIQ2tETUZRRVFBSkFBa0FnQUNnQ0hDZ0NRQ0FBS1FNSXAwRUVkR29vQWdnTkFDQUFLQUljS0FKQUlBQXBBd2luUVFSMGFpMEFERUVCY1EwQUlBQW9BaHdvQWtBZ0FDa0RDS2RCQkhScUtBSUVSUTBCSUFBb0Fod29Ba0FnQUNrRENLZEJCSFJxS0FJRUtBSUFSUTBCQ3lBQVFRRTJBaFFMSUFBb0Fod29Ba0FnQUNrRENLZEJCSFJxTFFBTVFRRnhSUVJBSUFBZ0FDa0RBRUlCZkRjREFBc2dBQ0FBS1FNSVFnRjhOd01JREFFTEN5QUFLQUlZQkVBZ0FDZ0NHQ0FBS1FNQU53TUFDeUFCSUFBb0FoUTJBaVFnQVNrRFFGQUVRQUpBSUFFb0FsZ29BZ1JCQ0hGRkJFQWdBU2dDSkVVTkFRc0NmeUFCS0FKWUtBSUFJUUlqQUVFUWF5SUFKQUFnQUNBQ05nSUlBa0FnQUNnQ0NDZ0NKRUVEUmdSQUlBQkJBRFlDREF3QkN5QUFLQUlJS0FJZ0JFQWdBQ2dDQ0JBd1FRQklCRUFnQUVGL05nSU1EQUlMQ3lBQUtBSUlLQUlrQkVBZ0FDZ0NDQkJrQ3lBQUtBSUlRUUJDQUVFUEVCOUNBRk1FUUNBQVFYODJBZ3dNQVFzZ0FDZ0NDRUVETmdJa0lBQkJBRFlDREFzZ0FDZ0NEQ0VDSUFCQkVHb2tBQ0FDUVFCSUN3UkFBa0FDZnlNQVFSQnJJZ0FnQVNnQ1dDZ0NBRFlDRENNQVFSQnJJZ0lnQUNnQ0RFRU1hallDRENBQ0tBSU1LQUlBUVJaR0N3UkFJd0JCRUdzaUFDQUJLQUpZS0FJQU5nSU1Jd0JCRUdzaUFpQUFLQUlNUVF4cU5nSU1JQUlvQWd3b0FnUkJMRVlOQVFzZ0FTZ0NXRUVJYWlBQktBSllLQUlBRUJnZ0FVRi9OZ0pjREFRTEN3c2dBU2dDV0JBOElBRkJBRFlDWEF3QkN5QUJLQUlrUlFSQUlBRW9BbGdRUENBQlFRQTJBbHdNQVFzZ0FTa0RRQ0FCS0FKWUtRTXdWZ1JBSUFFb0FsaEJDR3BCRkVFQUVCUWdBVUYvTmdKY0RBRUxJQUVnQVNrRFFLZEJBM1FRR1NJQU5nSW9JQUJGQkVBZ0FVRi9OZ0pjREFFTElBRkNmemNET0NBQlFnQTNBMGdnQVVJQU53TlFBMEFnQVNrRFVDQUJLQUpZS1FNd1ZBUkFBa0FnQVNnQ1dDZ0NRQ0FCS1FOUXAwRUVkR29vQWdCRkRRQUNRQ0FCS0FKWUtBSkFJQUVwQTFDblFRUjBhaWdDQ0EwQUlBRW9BbGdvQWtBZ0FTa0RVS2RCQkhScUxRQU1RUUZ4RFFBZ0FTZ0NXQ2dDUUNBQktRTlFwMEVFZEdvb0FnUkZEUUVnQVNnQ1dDZ0NRQ0FCS1FOUXAwRUVkR29vQWdRb0FnQkZEUUVMSUFFQ2ZpQUJLUU00SUFFb0FsZ29Ba0FnQVNrRFVLZEJCSFJxS0FJQUtRTklWQVJBSUFFcEF6Z01BUXNnQVNnQ1dDZ0NRQ0FCS1FOUXAwRUVkR29vQWdBcEEwZ0xOd000Q3lBQktBSllLQUpBSUFFcEExQ25RUVIwYWkwQURFRUJjVVVFUUNBQktRTklJQUVwQTBCYUJFQWdBU2dDS0JBVklBRW9BbGhCQ0dwQkZFRUFFQlFnQVVGL05nSmNEQVFMSUFFb0FpZ2dBU2tEU0tkQkEzUnFJQUVwQTFBM0F3QWdBU0FCS1FOSVFnRjhOd05JQ3lBQklBRXBBMUJDQVh3M0ExQU1BUXNMSUFFcEEwZ2dBU2tEUUZRRVFDQUJLQUlvRUJVZ0FTZ0NXRUVJYWtFVVFRQVFGQ0FCUVg4MkFsd01BUXNDUUFKL0l3QkJFR3NpQUNBQktBSllLQUlBTmdJTUlBQW9BZ3dwQXhoQ2dJQUlnMUFMQkVBZ0FVSUFOd000REFFTElBRXBBemhDZjFFRVFDQUJRbjgzQXhnZ0FVSUFOd000SUFGQ0FEY0RVQU5BSUFFcEExQWdBU2dDV0NrRE1GUUVRQ0FCS0FKWUtBSkFJQUVwQTFDblFRUjBhaWdDQUFSQUlBRW9BbGdvQWtBZ0FTa0RVS2RCQkhScUtBSUFLUU5JSUFFcEF6aGFCRUFnQVNBQktBSllLQUpBSUFFcEExQ25RUVIwYWlnQ0FDa0RTRGNET0NBQklBRXBBMUEzQXhnTEN5QUJJQUVwQTFCQ0FYdzNBMUFNQVFzTElBRXBBeGhDZjFJRVFDQUJLQUpZSVFJZ0FTa0RHQ0VISUFFb0FsaEJDR29oQXlNQVFUQnJJZ0FrQUNBQUlBSTJBaVFnQUNBSE53TVlJQUFnQXpZQ0ZDQUFJQUFvQWlRZ0FDa0RHQ0FBS0FJVUVHSWlCemNEQ0FKQUlBZFFCRUFnQUVJQU53TW9EQUVMSUFBZ0FDZ0NKQ2dDUUNBQUtRTVlwMEVFZEdvb0FnQTJBZ1FDUUNBQUtRTUlJQUFwQXdnZ0FDZ0NCQ2tESUh4WUJFQWdBQ2tEQ0NBQUtBSUVLUU1nZkVMLy8vLy8vLy8vLy84QVdBMEJDeUFBS0FJVVFRUkJGaEFVSUFCQ0FEY0RLQXdCQ3lBQUlBQW9BZ1FwQXlBZ0FDa0RDSHczQXdnZ0FDZ0NCQzhCREVFSWNRUkFJQUFvQWlRb0FnQWdBQ2tEQ0VFQUVDaEJBRWdFUUNBQUtBSVVJQUFvQWlRb0FnQVFHQ0FBUWdBM0F5Z01BZ3NnQUNnQ0pDZ0NBQ0FBUWdRUUswSUVVZ1JBSUFBb0FoUWdBQ2dDSkNnQ0FCQVlJQUJDQURjREtBd0NDeUFBS0FBQVFkQ1duY0FBUmdSQUlBQWdBQ2tEQ0VJRWZEY0RDQXNnQUNBQUtRTUlRZ3g4TndNSUlBQW9BZ1JCQUJCblFRRnhCRUFnQUNBQUtRTUlRZ2g4TndNSUN5QUFLUU1JUXYvLy8vLy8vLy8vL3dCV0JFQWdBQ2dDRkVFRVFSWVFGQ0FBUWdBM0F5Z01BZ3NMSUFBZ0FDa0RDRGNES0FzZ0FDa0RLQ0VISUFCQk1Hb2tBQ0FCSUFjM0F6Z2dCMUFFUUNBQktBSW9FQlVnQVVGL05nSmNEQVFMQ3dzZ0FTa0RPRUlBVWdSQUFuOGdBU2dDV0NnQ0FDRUNJQUVwQXpnaEJ5TUFRUkJySWdBa0FDQUFJQUkyQWdnZ0FDQUhOd01BQWtBZ0FDZ0NDQ2dDSkVFQlJnUkFJQUFvQWdoQkRHcEJFa0VBRUJRZ0FFRi9OZ0lNREFFTElBQW9BZ2hCQUNBQUtRTUFRUkVRSDBJQVV3UkFJQUJCZnpZQ0RBd0JDeUFBS0FJSVFRRTJBaVFnQUVFQU5nSU1DeUFBS0FJTUlRSWdBRUVRYWlRQUlBSkJBRWdMQkVBZ0FVSUFOd000Q3dzTElBRXBBemhRQkVBQ2Z5QUJLQUpZS0FJQUlRSWpBRUVRYXlJQUpBQWdBQ0FDTmdJSUFrQWdBQ2dDQ0NnQ0pFRUJSZ1JBSUFBb0FnaEJER3BCRWtFQUVCUWdBRUYvTmdJTURBRUxJQUFvQWdoQkFFSUFRUWdRSDBJQVV3UkFJQUJCZnpZQ0RBd0JDeUFBS0FJSVFRRTJBaVFnQUVFQU5nSU1DeUFBS0FJTUlRSWdBRUVRYWlRQUlBSkJBRWdMQkVBZ0FTZ0NXRUVJYWlBQktBSllLQUlBRUJnZ0FTZ0NLQkFWSUFGQmZ6WUNYQXdDQ3dzZ0FTZ0NXQ2dDVkNFQ0l3QkJFR3NpQUNRQUlBQWdBallDRENBQUtBSU1CRUFnQUNnQ0RFUUFBQUFBQUFBQUFEa0RHQ0FBS0FJTUtBSUFSQUFBQUFBQUFBQUFJQUFvQWd3b0Fnd2dBQ2dDRENnQ0JCRVdBQXNnQUVFUWFpUUFJQUZCQURZQ0xDQUJRZ0EzQTBnRFFBSkFJQUVwQTBnZ0FTa0RRRm9OQUNBQktBSllLQUpVSVFJZ0FTa0RTQ0lIdWlBQktRTkF1aUlJb3lFSkl3QkJJR3NpQUNRQUlBQWdBallDSENBQUlBazVBeEFnQUNBSFFnRjh1aUFJb3prRENDQUFLQUljQkVBZ0FDZ0NIQ0FBS3dNUU9RTWdJQUFvQWh3Z0FDc0RDRGtES0NBQUtBSWNSQUFBQUFBQUFBQUFFRlFMSUFCQklHb2tBQ0FCSUFFb0FpZ2dBU2tEU0tkQkEzUnFLUU1BTndOUUlBRWdBU2dDV0NnQ1FDQUJLUU5RcDBFRWRHbzJBaEFDUUFKQUlBRW9BaEFvQWdCRkRRQWdBU2dDRUNnQ0FDa0RTQ0FCS1FNNFdnMEFEQUVMSUFFQ2YwRUJJQUVvQWhBb0FnZ05BQm9nQVNnQ0VDZ0NCQVJBUVFFZ0FTZ0NFQ2dDQkNnQ0FFRUJjUTBCR2dzZ0FTZ0NFQ2dDQkFSL0lBRW9BaEFvQWdRb0FnQkJ3QUJ4UVFCSEJVRUFDd3RCQVhFMkFoUWdBU2dDRUNnQ0JFVUVRQ0FCS0FJUUtBSUFFRDhoQUNBQktBSVFJQUEyQWdRZ0FFVUVRQ0FCS0FKWVFRaHFRUTVCQUJBVUlBRkJBVFlDTEF3REN3c2dBU0FCS0FJUUtBSUVOZ0lNQW44Z0FTZ0NXQ0VDSUFFcEExQWhCeU1BUVRCcklnQWtBQ0FBSUFJMkFpZ2dBQ0FITndNZ0FrQWdBQ2tESUNBQUtBSW9LUU13V2dSQUlBQW9BaWhCQ0dwQkVrRUFFQlFnQUVGL05nSXNEQUVMSUFBZ0FDZ0NLQ2dDUUNBQUtRTWdwMEVFZEdvMkFod0NRQ0FBS0FJY0tBSUFCRUFnQUNnQ0hDZ0NBQzBBQkVFQmNVVU5BUXNnQUVFQU5nSXNEQUVMSUFBb0Fod29BZ0FwQTBoQ0dueEMvLy8vLy8vLy8vLy9BRllFUUNBQUtBSW9RUWhxUVFSQkZoQVVJQUJCZnpZQ0xBd0JDeUFBS0FJb0tBSUFJQUFvQWh3b0FnQXBBMGhDR254QkFCQW9RUUJJQkVBZ0FDZ0NLRUVJYWlBQUtBSW9LQUlBRUJnZ0FFRi9OZ0lzREFFTElBQWdBQ2dDS0NnQ0FFSUVJQUJCR0dvZ0FDZ0NLRUVJYWhCQklnSTJBaFFnQWtVRVFDQUFRWDgyQWl3TUFRc2dBQ0FBS0FJVUVCczdBUklnQUNBQUtBSVVFQnM3QVJBZ0FDZ0NGQkJIUVFGeFJRUkFJQUFvQWhRUUZpQUFLQUlvUVFocVFSUkJBQkFVSUFCQmZ6WUNMQXdCQ3lBQUtBSVVFQllnQUM4QkVBUkFJQUFvQWlnb0FnQWdBQzhCRXExQkFSQW9RUUJJQkVBZ0FDZ0NLRUVJYWtFRVFmaWRBU2dDQUJBVUlBQkJmellDTEF3Q0N5QUFRUUFnQUNnQ0tDZ0NBQ0FBTHdFUVFRQWdBQ2dDS0VFSWFoQmxOZ0lJSUFBb0FnaEZCRUFnQUVGL05nSXNEQUlMSUFBb0FnZ2dBQzhCRUVHQUFpQUFRUXhxSUFBb0FpaEJDR29RbFFGQkFYRkZCRUFnQUNnQ0NCQVZJQUJCZnpZQ0xBd0NDeUFBS0FJSUVCVWdBQ2dDREFSQUlBQWdBQ2dDREJDVUFUWUNEQ0FBS0FJY0tBSUFLQUkwSUFBb0Fnd1FsZ0VoQWlBQUtBSWNLQUlBSUFJMkFqUUxDeUFBS0FJY0tBSUFRUUU2QUFRQ1FDQUFLQUljS0FJRVJRMEFJQUFvQWh3b0FnUXRBQVJCQVhFTkFDQUFLQUljS0FJRUlBQW9BaHdvQWdBb0FqUTJBalFnQUNnQ0hDZ0NCRUVCT2dBRUN5QUFRUUEyQWl3TElBQW9BaXdoQWlBQVFUQnFKQUFnQWtFQVNBc0VRQ0FCUVFFMkFpd01BZ3NnQVNBQktBSllLQUlBRURVaUJ6Y0RNQ0FIUWdCVEJFQWdBVUVCTmdJc0RBSUxJQUVvQWd3Z0FTa0RNRGNEU0FKQUlBRW9BaFFFUUNBQlFRQTJBZ2dnQVNnQ0VDZ0NDRVVFUUNBQklBRW9BbGdnQVNnQ1dDQUJLUU5RUVFoQkFCQ3VBU0lBTmdJSUlBQkZCRUFnQVVFQk5nSXNEQVVMQ3dKL0lBRW9BbGdoQWdKL0lBRW9BZ2dFUUNBQktBSUlEQUVMSUFFb0FoQW9BZ2dMSVFNZ0FTZ0NEQ0VFSXdCQm9BRnJJZ0FrQUNBQUlBSTJBcGdCSUFBZ0F6WUNsQUVnQUNBRU5nS1FBUUpBSUFBb0FwUUJJQUJCT0dvUU9VRUFTQVJBSUFBb0FwZ0JRUWhxSUFBb0FwUUJFQmdnQUVGL05nS2NBUXdCQ3lBQUtRTTRRc0FBZzFBRVFDQUFJQUFwQXpoQ3dBQ0VOd000SUFCQkFEc0JhQXNDUUFKQUlBQW9BcEFCS0FJUVFYOUhCRUFnQUNnQ2tBRW9BaEJCZmtjTkFRc2dBQzhCYUVVTkFDQUFLQUtRQVNBQUx3Rm9OZ0lRREFFTEFrQUNRQ0FBS0FLUUFTZ0NFQTBBSUFBcEF6aENCSU5RRFFBZ0FDQUFLUU00UWdpRU53TTRJQUFnQUNrRFVEY0RXQXdCQ3lBQUlBQXBBemhDOS8vLy93K0ROd000Q3dzZ0FDa0RPRUtBQVlOUUJFQWdBQ0FBS1FNNFFvQUJoRGNET0NBQVFRQTdBV29MSUFCQmdBSTJBaVFDUUNBQUtRTTRRZ1NEVUFSQUlBQWdBQ2dDSkVHQUNISTJBaVFnQUVKL053TndEQUVMSUFBb0FwQUJJQUFwQTFBM0F5Z2dBQ0FBS1FOUU53TndBa0FnQUNrRE9FSUlnMUFFUUFKQUFrQUNRQUpBQWtBQ2Z3SkFJQUFvQXBBQktBSVFRWDlIQkVBZ0FDZ0NrQUVvQWhCQmZrY05BUXRCQ0F3QkN5QUFLQUtRQVNnQ0VBdEIvLzhEY1E0TkFnTURBd01EQXdNQkF3TURBQU1MSUFCQ2xNTGs4dzgzQXhBTUF3c2dBRUtEZzdEL0R6Y0RFQXdDQ3lBQVF2Ly8vLzhQTndNUURBRUxJQUJDQURjREVBc2dBQ2tEVUNBQUtRTVFWZ1JBSUFBZ0FDZ0NKRUdBQ0hJMkFpUUxEQUVMSUFBb0FwQUJJQUFwQTFnM0F5QUxDeUFBSUFBb0FwZ0JLQUlBRURVaUJ6Y0RpQUVnQjBJQVV3UkFJQUFvQXBnQlFRaHFJQUFvQXBnQktBSUFFQmdnQUVGL05nS2NBUXdCQ3lBQUtBS1FBU0lDSUFJdkFReEI5LzhEY1RzQkRDQUFJQUFvQXBnQklBQW9BcEFCSUFBb0FpUVFVU0lDTmdJb0lBSkJBRWdFUUNBQVFYODJBcHdCREFFTElBQWdBQzhCYUFKL0FrQWdBQ2dDa0FFb0FoQkJmMGNFUUNBQUtBS1FBU2dDRUVGK1J3MEJDMEVJREFFTElBQW9BcEFCS0FJUUMwSC8vd054UnpvQUlpQUFJQUF0QUNKQkFYRUVmeUFBTHdGb1FRQkhCVUVBQzBFQmNUb0FJU0FBSUFBdkFXZ0VmeUFBTFFBaEJVRUJDMEVCY1RvQUlDQUFJQUF0QUNKQkFYRUVmeUFBS0FLUUFTZ0NFRUVBUndWQkFBdEJBWEU2QUI4Z0FBSi9RUUVnQUMwQUlrRUJjUTBBR2tFQklBQW9BcEFCS0FJQVFZQUJjUTBBR2lBQUtBS1FBUzhCVWlBQUx3RnFSd3RCQVhFNkFCNGdBQ0FBTFFBZVFRRnhCSDhnQUM4QmFrRUFSd1ZCQUF0QkFYRTZBQjBnQUNBQUxRQWVRUUZ4Qkg4Z0FDZ0NrQUV2QVZKQkFFY0ZRUUFMUVFGeE9nQWNJQUFnQUNnQ2xBRTJBalFqQUVFUWF5SUNJQUFvQWpRMkFnd2dBaWdDRENJQ0lBSW9BakJCQVdvMkFqQWdBQzBBSFVFQmNRUkFJQUFnQUM4QmFrRUFFSGdpQWpZQ0RDQUNSUVJBSUFBb0FwZ0JRUWhxUVJoQkFCQVVJQUFvQWpRUUdpQUFRWDgyQXB3QkRBSUxJQUFnQUNnQ21BRWdBQ2dDTkNBQUx3RnFRUUFnQUNnQ21BRW9BaHdnQUNnQ0RCRUlBQ0lDTmdJd0lBSkZCRUFnQUNnQ05CQWFJQUJCZnpZQ25BRU1BZ3NnQUNnQ05CQWFJQUFnQUNnQ01EWUNOQXNnQUMwQUlVRUJjUVJBSUFBZ0FDZ0NtQUVnQUNnQ05DQUFMd0ZvRUxBQklnSTJBakFnQWtVRVFDQUFLQUkwRUJvZ0FFRi9OZ0tjQVF3Q0N5QUFLQUkwRUJvZ0FDQUFLQUl3TmdJMEN5QUFMUUFnUVFGeEJFQWdBQ0FBS0FLWUFTQUFLQUkwUVFBUXJ3RWlBallDTUNBQ1JRUkFJQUFvQWpRUUdpQUFRWDgyQXB3QkRBSUxJQUFvQWpRUUdpQUFJQUFvQWpBMkFqUUxJQUF0QUI5QkFYRUVRQ0FBS0FLWUFTRURJQUFvQWpRaEJDQUFLQUtRQVNnQ0VDRUZJQUFvQXBBQkx3RlFJUVlqQUVFUWF5SUNKQUFnQWlBRE5nSU1JQUlnQkRZQ0NDQUNJQVUyQWdRZ0FpQUdOZ0lBSUFJb0Fnd2dBaWdDQ0NBQ0tBSUVRUUVnQWlnQ0FCQ3lBU0VESUFKQkVHb2tBQ0FBSUFNaUFqWUNNQ0FDUlFSQUlBQW9BalFRR2lBQVFYODJBcHdCREFJTElBQW9BalFRR2lBQUlBQW9BakEyQWpRTElBQXRBQnhCQVhFRVFDQUFRUUEyQWdRQ1FDQUFLQUtRQVNnQ1ZBUkFJQUFnQUNnQ2tBRW9BbFEyQWdRTUFRc2dBQ2dDbUFFb0Fod0VRQ0FBSUFBb0FwZ0JLQUljTmdJRUN3c2dBQ0FBS0FLUUFTOEJVa0VCRUhnaUFqWUNDQ0FDUlFSQUlBQW9BcGdCUVFocVFSaEJBQkFVSUFBb0FqUVFHaUFBUVg4MkFwd0JEQUlMSUFBZ0FDZ0NtQUVnQUNnQ05DQUFLQUtRQVM4QlVrRUJJQUFvQWdRZ0FDZ0NDQkVJQUNJQ05nSXdJQUpGQkVBZ0FDZ0NOQkFhSUFCQmZ6WUNuQUVNQWdzZ0FDZ0NOQkFhSUFBZ0FDZ0NNRFlDTkFzZ0FDQUFLQUtZQVNnQ0FCQTFJZ2MzQTRBQklBZENBRk1FUUNBQUtBS1lBVUVJYWlBQUtBS1lBU2dDQUJBWUlBQkJmellDbkFFTUFRc2dBQ2dDbUFFaEF5QUFLQUkwSVFRZ0FDa0RjQ0VISXdCQndNQUFheUlDSkFBZ0FpQUROZ0s0UUNBQ0lBUTJBclJBSUFJZ0J6Y0RxRUFDUUNBQ0tBSzBRQkJJUVFCSUJFQWdBaWdDdUVCQkNHb2dBaWdDdEVBUUdDQUNRWDgyQXJ4QURBRUxJQUpCQURZQ0RDQUNRZ0EzQXhBRFFBSkFJQUlnQWlnQ3RFQWdBa0VnYWtLQXdBQVFLeUlITndNWUlBZENBRmNOQUNBQ0tBSzRRQ0FDUVNCcUlBSXBBeGdRTmtFQVNBUkFJQUpCZnpZQ0RBVWdBaWtER0VLQXdBQlNEUUlnQWlnQ3VFQW9BbFJGRFFJZ0Fpa0RxRUJDQUZjTkFpQUNJQUlwQXhnZ0Fpa0RFSHczQXhBZ0FpZ0N1RUFvQWxRZ0Fpa0RFTGtnQWlrRHFFQzVveEJVREFJTEN3c2dBaWtER0VJQVV3UkFJQUlvQXJoQVFRaHFJQUlvQXJSQUVCZ2dBa0YvTmdJTUN5QUNLQUswUUJBd0dpQUNJQUlvQWd3MkFyeEFDeUFDS0FLOFFDRURJQUpCd01BQWFpUUFJQUFnQXpZQ0xDQUFLQUkwSUFCQk9Hb1FPVUVBU0FSQUlBQW9BcGdCUVFocUlBQW9BalFRR0NBQVFYODJBaXdMSUFBb0FqUWhBeU1BUVJCcklnSWtBQ0FDSUFNMkFnZ0NRQU5BSUFJb0FnZ0VRQ0FDS0FJSUtRTVlRb0NBQklOQ0FGSUVRQ0FDSUFJb0FnaEJBRUlBUVJBUUh6Y0RBQ0FDS1FNQVFnQlRCRUFnQWtIL0FUb0FEd3dFQ3lBQ0tRTUFRZ05WQkVBZ0FpZ0NDRUVNYWtFVVFRQVFGQ0FDUWY4Qk9nQVBEQVFMSUFJZ0Fpa0RBRHdBRHd3REJTQUNJQUlvQWdnb0FnQTJBZ2dNQWdzQUN3c2dBa0VBT2dBUEN5QUNMQUFQSVFNZ0FrRVFhaVFBSUFBZ0F5SUNPZ0FqSUFKQkdIUkJHSFZCQUVnRVFDQUFLQUtZQVVFSWFpQUFLQUkwRUJnZ0FFRi9OZ0lzQ3lBQUtBSTBFQm9nQUNnQ0xFRUFTQVJBSUFCQmZ6WUNuQUVNQVFzZ0FDQUFLQUtZQVNnQ0FCQTFJZ2MzQTNnZ0IwSUFVd1JBSUFBb0FwZ0JRUWhxSUFBb0FwZ0JLQUlBRUJnZ0FFRi9OZ0tjQVF3QkN5QUFLQUtZQVNnQ0FDQUFLUU9JQVJDY0FVRUFTQVJBSUFBb0FwZ0JRUWhxSUFBb0FwZ0JLQUlBRUJnZ0FFRi9OZ0tjQVF3QkN5QUFLUU00UXVRQWcwTGtBRklFUUNBQUtBS1lBVUVJYWtFVVFRQVFGQ0FBUVg4MkFwd0JEQUVMSUFBb0FwQUJLQUlBUVNCeFJRUkFBa0FnQUNrRE9FSVFnMElBVWdSQUlBQW9BcEFCSUFBb0FtQTJBaFFNQVFzZ0FDZ0NrQUZCRkdvUUFSb0xDeUFBS0FLUUFTQUFMd0ZvTmdJUUlBQW9BcEFCSUFBb0FtUTJBaGdnQUNnQ2tBRWdBQ2tEVURjREtDQUFLQUtRQVNBQUtRTjRJQUFwQTRBQmZUY0RJQ0FBS0FLUUFTQUFLQUtRQVM4QkRFSDUvd054SUFBdEFDTkJBWFJ5T3dFTUlBQW9BcEFCSVFNZ0FDZ0NKRUdBQ0hGQkFFY2hCQ01BUVJCcklnSWtBQ0FDSUFNMkFnd2dBaUFFT2dBTEFrQWdBaWdDRENnQ0VFRU9SZ1JBSUFJb0FneEJQenNCQ2d3QkN5QUNLQUlNS0FJUVFReEdCRUFnQWlnQ0RFRXVPd0VLREFFTEFrQWdBaTBBQzBFQmNVVUVRQ0FDS0FJTVFRQVFaMEVCY1VVTkFRc2dBaWdDREVFdE93RUtEQUVMQWtBZ0FpZ0NEQ2dDRUVFSVJ3UkFJQUlvQWd3dkFWSkJBVWNOQVFzZ0FpZ0NERUVVT3dFS0RBRUxJQUlnQWlnQ0RDZ0NNQkJPSWdNN0FRZ2dBMEgvL3dOeEJFQWdBaWdDRENnQ01DZ0NBQ0FDTHdFSVFRRnJhaTBBQUVFdlJnUkFJQUlvQWd4QkZEc0JDZ3dDQ3dzZ0FpZ0NERUVLT3dFS0N5QUNRUkJxSkFBZ0FDQUFLQUtZQVNBQUtBS1FBU0FBS0FJa0VGRWlBallDTENBQ1FRQklCRUFnQUVGL05nS2NBUXdCQ3lBQUtBSW9JQUFvQWl4SEJFQWdBQ2dDbUFGQkNHcEJGRUVBRUJRZ0FFRi9OZ0tjQVF3QkN5QUFLQUtZQVNnQ0FDQUFLUU40RUp3QlFRQklCRUFnQUNnQ21BRkJDR29nQUNnQ21BRW9BZ0FRR0NBQVFYODJBcHdCREFFTElBQkJBRFlDbkFFTElBQW9BcHdCSVFJZ0FFR2dBV29rQUNBQ1FRQklDd1JBSUFGQkFUWUNMQ0FCS0FJSUJFQWdBU2dDQ0JBYUN3d0VDeUFCS0FJSUJFQWdBU2dDQ0JBYUN3d0JDeUFCS0FJTUlnQWdBQzhCREVIMy93TnhPd0VNSUFFb0FsZ2dBU2dDREVHQUFoQlJRUUJJQkVBZ0FVRUJOZ0lzREFNTElBRWdBU2dDV0NBQktRTlFJQUVvQWxoQkNHb1FZaUlITndNQUlBZFFCRUFnQVVFQk5nSXNEQU1MSUFFb0FsZ29BZ0FnQVNrREFFRUFFQ2hCQUVnRVFDQUJLQUpZUVFocUlBRW9BbGdvQWdBUUdDQUJRUUUyQWl3TUF3c0NmeUFCS0FKWUlRSWdBU2dDRENrRElDRUhJd0JCb01BQWF5SUFKQUFnQUNBQ05nS1lRQ0FBSUFjM0E1QkFJQUFnQUNrRGtFQzZPUU1BQWtBRFFDQUFLUU9RUUZCRkJFQWdBQ0FBS1FPUVFFS0F3QUJXQkg1Q2dNQUFCU0FBS1FPUVFBcytBZ3dnQUNnQ21FQW9BZ0FnQUVFUWFpQUFLQUlNclNBQUtBS1lRRUVJYWhCbVFRQklCRUFnQUVGL05nS2NRQXdEQ3lBQUtBS1lRQ0FBUVJCcUlBQW9BZ3l0RURaQkFFZ0VRQ0FBUVg4MkFweEFEQU1GSUFBZ0FDa0RrRUFnQURVQ0RIMDNBNUJBSUFBb0FwaEFLQUpVSUFBckF3QWdBQ2tEa0VDNm9TQUFLd01Bb3hCVURBSUxBQXNMSUFCQkFEWUNuRUFMSUFBb0FweEFJUUlnQUVHZ3dBQnFKQUFnQWtFQVNBc0VRQ0FCUVFFMkFpd01Bd3NMQ3lBQklBRXBBMGhDQVh3M0EwZ01BUXNMSUFFb0FpeEZCRUFDZnlBQktBSllJUUFnQVNnQ0tDRURJQUVwQTBBaEJ5TUFRVEJySWdJa0FDQUNJQUEyQWlnZ0FpQUROZ0lrSUFJZ0J6Y0RHQ0FDSUFJb0FpZ29BZ0FRTlNJSE53TVFBa0FnQjBJQVV3UkFJQUpCZnpZQ0xBd0JDeUFDS0FJb0lRTWdBaWdDSkNFRUlBSXBBeGdoQnlNQVFjQUJheUlBSkFBZ0FDQUROZ0swQVNBQUlBUTJBckFCSUFBZ0J6Y0RxQUVnQUNBQUtBSzBBU2dDQUJBMUlnYzNBeUFDUUNBSFFnQlRCRUFnQUNnQ3RBRkJDR29nQUNnQ3RBRW9BZ0FRR0NBQVFuODNBN2dCREFFTElBQWdBQ2tESURjRG9BRWdBRUVBT2dBWElBQkNBRGNER0FOQUlBQXBBeGdnQUNrRHFBRlVCRUFnQUNBQUtBSzBBU2dDUUNBQUtBS3dBU0FBS1FNWXAwRURkR29wQXdDblFRUjBhallDRENBQUlBQW9BclFCQW44Z0FDZ0NEQ2dDQkFSQUlBQW9BZ3dvQWdRTUFRc2dBQ2dDRENnQ0FBdEJnQVFRVVNJRE5nSVFJQU5CQUVnRVFDQUFRbjgzQTdnQkRBTUxJQUFvQWhBRVFDQUFRUUU2QUJjTElBQWdBQ2tER0VJQmZEY0RHQXdCQ3dzZ0FDQUFLQUswQVNnQ0FCQTFJZ2MzQXlBZ0IwSUFVd1JBSUFBb0FyUUJRUWhxSUFBb0FyUUJLQUlBRUJnZ0FFSi9Od080QVF3QkN5QUFJQUFwQXlBZ0FDa0RvQUY5TndPWUFRSkFJQUFwQTZBQlF2Ly8vLzhQV0FSQUlBQXBBNmdCUXYvL0ExZ05BUXNnQUVFQk9nQVhDeUFBSUFCQk1HcEM0Z0FRS1NJRE5nSXNJQU5GQkVBZ0FDZ0N0QUZCQ0dwQkRrRUFFQlFnQUVKL053TzRBUXdCQ3lBQUxRQVhRUUZ4QkVBZ0FDZ0NMRUh2RWtFRUVFQWdBQ2dDTEVJc0VDMGdBQ2dDTEVFdEVCMGdBQ2dDTEVFdEVCMGdBQ2dDTEVFQUVDQWdBQ2dDTEVFQUVDQWdBQ2dDTENBQUtRT29BUkF0SUFBb0Fpd2dBQ2tEcUFFUUxTQUFLQUlzSUFBcEE1Z0JFQzBnQUNnQ0xDQUFLUU9nQVJBdElBQW9BaXhCNmhKQkJCQkFJQUFvQWl4QkFCQWdJQUFvQWl3Z0FDa0RvQUVnQUNrRG1BRjhFQzBnQUNnQ0xFRUJFQ0FMSUFBb0FpeEI5QkpCQkJCQUlBQW9BaXhCQUJBZ0lBQW9BaXdnQUNrRHFBRkMvLzhEV2dSK1F2Ly9Bd1VnQUNrRHFBRUxwMEgvL3dOeEVCMGdBQ2dDTENBQUtRT29BVUwvL3dOYUJINUMvLzhEQlNBQUtRT29BUXVuUWYvL0EzRVFIU0FBS0FJc0lBQXBBNWdCUXYvLy8vOFBXZ1IvUVg4RklBQXBBNWdCcHdzUUlDQUFLQUlzSUFBcEE2QUJRdi8vLy84UFdnUi9RWDhGSUFBcEE2QUJwd3NRSUNBQUFuOGdBQ2dDdEFFdEFDaEJBWEVFUUNBQUtBSzBBU2dDSkF3QkN5QUFLQUswQVNnQ0lBczJBcFFCSUFBb0Fpd0NmeUFBS0FLVUFRUkFJQUFvQXBRQkx3RUVEQUVMUVFBTFFmLy9BM0VRSFFKL0l3QkJFR3NpQXlBQUtBSXNOZ0lNSUFNb0Fnd3RBQUJCQVhGRkN3UkFJQUFvQXJRQlFRaHFRUlJCQUJBVUlBQW9BaXdRRmlBQVFuODNBN2dCREFFTElBQW9BclFCQW44akFFRVFheUlESUFBb0FpdzJBZ3dnQXlnQ0RDZ0NCQXNDZmlNQVFSQnJJZ01nQUNnQ0xEWUNEQUorSUFNb0Fnd3RBQUJCQVhFRVFDQURLQUlNS1FNUURBRUxRZ0FMQ3hBMlFRQklCRUFnQUNnQ0xCQVdJQUJDZnpjRHVBRU1BUXNnQUNnQ0xCQVdJQUFvQXBRQkJFQWdBQ2dDdEFFZ0FDZ0NsQUVvQWdBZ0FDZ0NsQUV2QVFTdEVEWkJBRWdFUUNBQVFuODNBN2dCREFJTEN5QUFJQUFwQTVnQk53TzRBUXNnQUNrRHVBRWhCeUFBUWNBQmFpUUFJQUlnQnpjREFDQUhRZ0JUQkVBZ0FrRi9OZ0lzREFFTElBSWdBaWdDS0NnQ0FCQTFJZ2MzQXdnZ0IwSUFVd1JBSUFKQmZ6WUNMQXdCQ3lBQ1FRQTJBaXdMSUFJb0Fpd2hBQ0FDUVRCcUpBQWdBRUVBU0FzRVFDQUJRUUUyQWl3TEN5QUJLQUlvRUJVZ0FTZ0NMRVVFUUFKL0lBRW9BbGdvQWdBaEFpTUFRUkJySWdBa0FDQUFJQUkyQWdnQ1FDQUFLQUlJS0FJa1FRRkhCRUFnQUNnQ0NFRU1ha0VTUVFBUUZDQUFRWDgyQWd3TUFRc2dBQ2dDQ0NnQ0lFRUJTd1JBSUFBb0FnaEJER3BCSFVFQUVCUWdBRUYvTmdJTURBRUxJQUFvQWdnb0FpQUVRQ0FBS0FJSUVEQkJBRWdFUUNBQVFYODJBZ3dNQWdzTElBQW9BZ2hCQUVJQVFRa1FIMElBVXdSQUlBQW9BZ2hCQWpZQ0pDQUFRWDgyQWd3TUFRc2dBQ2dDQ0VFQU5nSWtJQUJCQURZQ0RBc2dBQ2dDRENFQ0lBQkJFR29rQUNBQ0N3UkFJQUVvQWxoQkNHb2dBU2dDV0NnQ0FCQVlJQUZCQVRZQ0xBc0xJQUVvQWxnb0FsUWhBaU1BUVJCcklnQWtBQ0FBSUFJMkFnd2dBQ2dDREVRQUFBQUFBQUR3UHhCVUlBQkJFR29rQUNBQktBSXNCRUFnQVNnQ1dDZ0NBQkJrSUFGQmZ6WUNYQXdCQ3lBQktBSllFRHdnQVVFQU5nSmNDeUFCS0FKY0lRQWdBVUhnQUdva0FDQUFDOUlPQWdkL0FuNGpBRUV3YXlJREpBQWdBeUFBTmdJb0lBTWdBVFlDSkNBRElBSTJBaUFqQUVFUWF5SUFJQU5CQ0dvMkFnd2dBQ2dDREVFQU5nSUFJQUFvQWd4QkFEWUNCQ0FBS0FJTVFRQTJBZ2dnQXlnQ0tDRUFJd0JCSUdzaUJDUUFJQVFnQURZQ0dDQUVRZ0EzQXhBZ0JFSi9Od01JSUFRZ0EwRUlhallDQkFKQUFrQWdCQ2dDR0FSQUlBUXBBd2hDZjFrTkFRc2dCQ2dDQkVFU1FRQVFGQ0FFUVFBMkFod01BUXNnQkNnQ0dDRUFJQVFwQXhBaENpQUVLUU1JSVFzZ0JDZ0NCQ0VCSXdCQm9BRnJJZ0lrQUNBQ0lBQTJBcGdCSUFKQkFEWUNsQUVnQWlBS053T0lBU0FDSUFzM0E0QUJJQUpCQURZQ2ZDQUNJQUUyQW5nQ1FBSkFJQUlvQXBRQkRRQWdBaWdDbUFFTkFDQUNLQUo0UVJKQkFCQVVJQUpCQURZQ25BRU1BUXNnQWlrRGdBRkNBRk1FUUNBQ1FnQTNBNEFCQ3dKQUlBSXBBNGdCUXYvLy8vLy8vLy8vL3dCWUJFQWdBaWtEaUFFZ0Fpa0RpQUVnQWlrRGdBRjhXQTBCQ3lBQ0tBSjRRUkpCQUJBVUlBSkJBRFlDbkFFTUFRc2dBa0dJQVJBWklnQTJBblFnQUVVRVFDQUNLQUo0UVE1QkFCQVVJQUpCQURZQ25BRU1BUXNnQWlnQ2RFRUFOZ0lZSUFJb0FwZ0JCRUFnQWlnQ21BRWlBQkF1UVFGcUlnRVFHU0lGQkg4Z0JTQUFJQUVRRndWQkFBc2hBQ0FDS0FKMElBQTJBaGdnQUVVRVFDQUNLQUo0UVE1QkFCQVVJQUlvQW5RUUZTQUNRUUEyQXB3QkRBSUxDeUFDS0FKMElBSW9BcFFCTmdJY0lBSW9BblFnQWlrRGlBRTNBMmdnQWlnQ2RDQUNLUU9BQVRjRGNBSkFJQUlvQW53RVFDQUNLQUowSWdBZ0FpZ0NmQ0lCS1FNQU53TWdJQUFnQVNrRE1EY0RVQ0FBSUFFcEF5ZzNBMGdnQUNBQktRTWdOd05BSUFBZ0FTa0RHRGNET0NBQUlBRXBBeEEzQXpBZ0FDQUJLUU1JTndNb0lBSW9BblJCQURZQ0tDQUNLQUowSWdBZ0FDa0RJRUwrLy8vL0Q0TTNBeUFNQVFzZ0FpZ0NkRUVnYWhBN0N5QUNLQUowS1FOd1FnQlNCRUFnQWlnQ2RDQUNLQUowS1FOd053TTRJQUlvQW5RaUFDQUFLUU1nUWdTRU53TWdDeU1BUVJCcklnQWdBaWdDZEVIWUFHbzJBZ3dnQUNnQ0RFRUFOZ0lBSUFBb0FneEJBRFlDQkNBQUtBSU1RUUEyQWdnZ0FpZ0NkRUVBTmdLQUFTQUNLQUowUVFBMkFvUUJJd0JCRUdzaUFDQUNLQUowTmdJTUlBQW9BZ3hCQURZQ0FDQUFLQUlNUVFBMkFnUWdBQ2dDREVFQU5nSUlJQUpCZnpZQ0JDQUNRUWMyQWdCQkRpQUNFRFJDUDRRaENpQUNLQUowSUFvM0F4QUNRQ0FDS0FKMEtBSVlCRUFnQWlBQ0tBSjBLQUlZSUFKQkdHb1Fwd0ZCQUU0NkFCY2dBaTBBRjBFQmNVVUVRQUpBSUFJb0FuUXBBMmhRUlEwQUlBSW9BblFwQTNCUVJRMEFJQUlvQW5SQy8vOEROd01RQ3dzTUFRc0NRQ0FDS0FKMEtBSWNJZ0FvQWt4QkFFZ05BQXNnQUNnQ1BDRUFRUUFoQlNNQVFTQnJJZ1lrQUFKL0FrQWdBQ0FDUVJocUlna1FDaUlCUVhoR0JFQWpBRUVnYXlJSEpBQWdBQ0FIUVFocUVBa2lDQVIvUWZpZEFTQUlOZ0lBUVFBRlFRRUxJUWdnQjBFZ2FpUUFJQWdOQVFzZ0FVR0JZRThFZjBING5RRkJBQ0FCYXpZQ0FFRi9CU0FCQ3d3QkN3TkFJQVVnQm1vaUFTQUZRYzhTYWkwQUFEb0FBQ0FGUVE1SElRY2dCVUVCYWlFRklBY05BQXNDUUNBQUJFQkJEeUVGSUFBaEFRTkFJQUZCQ2s4RVFDQUZRUUZxSVFVZ0FVRUtiaUVCREFFTEN5QUZJQVpxUVFBNkFBQURRQ0FHSUFWQkFXc2lCV29nQUNBQVFRcHVJZ0ZCQ214clFUQnlPZ0FBSUFCQkNVc2hCeUFCSVFBZ0J3MEFDd3dCQ3lBQlFUQTZBQUFnQmtFQU9nQVBDeUFHSUFrUUFpSUFRWUZnVHdSL1FmaWRBVUVBSUFCck5nSUFRWDhGSUFBTEN5RUFJQVpCSUdva0FDQUNJQUJCQUU0NkFCY0xBa0FnQWkwQUYwRUJjVVVFUUNBQ0tBSjBRZGdBYWtFRlFmaWRBU2dDQUJBVURBRUxJQUlvQW5RcEF5QkNFSU5RQkVBZ0FpZ0NkQ0FDS0FKWU5nSklJQUlvQW5RaUFDQUFLUU1nUWhDRU53TWdDeUFDS0FJa1FZRGdBM0ZCZ0lBQ1JnUkFJQUlvQW5SQy80RUJOd01RSUFJcEEwQWdBaWdDZENrRGFDQUNLQUowS1FOd2ZGUUVRQ0FDS0FKNFFSSkJBQkFVSUFJb0FuUW9BaGdRRlNBQ0tBSjBFQlVnQWtFQU5nS2NBUXdEQ3lBQ0tBSjBLUU53VUFSQUlBSW9BblFnQWlrRFFDQUNLQUowS1FOb2ZUY0RPQ0FDS0FKMElnQWdBQ2tESUVJRWhEY0RJQUpBSUFJb0FuUW9BaGhGRFFBZ0Fpa0RpQUZRUlEwQUlBSW9BblJDLy84RE53TVFDd3NMQ3lBQ0tBSjBJZ0FnQUNrREVFS0FnQkNFTndNUUlBSkJPaUFDS0FKMElBSW9BbmdRaEFFaUFEWUNjQ0FBUlFSQUlBSW9BblFvQWhnUUZTQUNLQUowRUJVZ0FrRUFOZ0tjQVF3QkN5QUNJQUlvQW5BMkFwd0JDeUFDS0FLY0FTRUFJQUpCb0FGcUpBQWdCQ0FBTmdJY0N5QUVLQUljSVFBZ0JFRWdhaVFBSUFNZ0FEWUNHQUpBSUFCRkJFQWdBeWdDSUNBRFFRaHFFSjRCSUFOQkNHb1FPQ0FEUVFBMkFpd01BUXNnQXlBREtBSVlJQU1vQWlRZ0EwRUlhaENkQVNJQU5nSWNJQUJGQkVBZ0F5Z0NHQkFhSUFNb0FpQWdBMEVJYWhDZUFTQURRUWhxRURnZ0EwRUFOZ0lzREFFTElBTkJDR29RT0NBRElBTW9BaHcyQWl3TElBTW9BaXdoQUNBRFFUQnFKQUFnQUF1U0h3RUdmeU1BUWVBQWF5SUVKQUFnQkNBQU5nSlVJQVFnQVRZQ1VDQUVJQUkzQTBnZ0JDQUROZ0pFSUFRZ0JDZ0NWRFlDUUNBRUlBUW9BbEEyQWp3Q1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FDQUVLQUpFRGhNR0J3SU1CQVVLRGdFRENSQUxEdzBJRVJFQUVRc2dCRUlBTndOWURCRUxJQVFvQWtBb0FoaEZCRUFnQkNnQ1FFRWNRUUFRRkNBRVFuODNBMWdNRVFzZ0JDZ0NRQ0VBSXdCQmdBRnJJZ0VrQUNBQklBQTJBbmdnQVNBQktBSjRLQUlZRUM1QkNHb1FHU0lBTmdKMEFrQWdBRVVFUUNBQktBSjRRUTVCQUJBVUlBRkJmellDZkF3QkN3SkFJQUVvQW5nb0FoZ2dBVUVRYWhDbkFVVUVRQ0FCSUFFb0FodzJBbXdNQVFzZ0FVRi9OZ0pzQ3lBQktBSjBJUUFnQVNBQktBSjRLQUlZTmdJQUlBQkJ1aElnQVJCeElBRW9BblFoQXlBQktBSnNJUWNqQUVFd2F5SUFKQUFnQUNBRE5nSW9JQUFnQnpZQ0pDQUFRUUEyQWhBZ0FDQUFLQUlvSUFBb0FpZ1FMbW8yQWhnZ0FDQUFLQUlZUVFGck5nSWNBMEFnQUNnQ0hDQUFLQUlvVHdSL0lBQW9BaHdzQUFCQjJBQkdCVUVBQzBFQmNRUkFJQUFnQUNnQ0VFRUJhallDRUNBQUlBQW9BaHhCQVdzMkFod01BUXNMQWtBZ0FDZ0NFRVVFUUVING5RRkJIRFlDQUNBQVFYODJBaXdNQVFzZ0FDQUFLQUljUVFGcU5nSWNBMEFqQUVFUWF5SUhKQUFDUUFKL0l3QkJFR3NpQXlRQUlBTWdCMEVJYWpZQ0NDQURRUVE3QVFZZ0EwSG9DMEVBUVFBUWJpSUZOZ0lBQWtBZ0JVRUFTQVJBSUFOQkFEb0FEd3dCQ3dKL0lBTW9BZ0FoQmlBREtBSUlJUWdnQXk4QkJpRUpJd0JCRUdzaUJTUUFJQVVnQ1RZQ0RDQUZJQWcyQWdnZ0JpQUZRUWhxUVFFZ0JVRUVhaEFHSWdZRWYwSDRuUUVnQmpZQ0FFRi9CVUVBQ3lFR0lBVW9BZ1FoQ0NBRlFSQnFKQUFnQXk4QkJrRi9JQWdnQmh0SEN3UkFJQU1vQWdBUWJTQURRUUE2QUE4TUFRc2dBeWdDQUJCdElBTkJBVG9BRHdzZ0F5MEFEMEVCY1NFRklBTkJFR29rQUNBRkN3UkFJQWNnQnlnQ0NEWUNEQXdCQzBHRW93RXRBQUJCQVhGRkJFQkJBQkFCSVFZQ1FFR01uQUVvQWdBaUEwVUVRRUdRbkFFb0FnQWdCallDQUF3QkMwR1VuQUZCQTBFRFFRRWdBMEVIUmhzZ0EwRWZSaHMyQWdCQmdLTUJRUUEyQWdCQmtKd0JLQUlBSVFVZ0EwRUJUZ1JBSUFhdElRSkJBQ0VHQTBBZ0JTQUdRUUowYWlBQ1FxMysxZVRVaGYybzJBQitRZ0Y4SWdKQ0lJZytBZ0FnQmtFQmFpSUdJQU5IRFFBTEN5QUZJQVVvQWdCQkFYSTJBZ0FMQzBHUW5BRW9BZ0FoQXdKQVFZeWNBU2dDQUNJRlJRUkFJQU1nQXlnQ0FFSHRuSm1PQkd4QnVlQUFha0gvLy8vL0IzRWlBellDQUF3QkN5QURRWlNjQVNnQ0FDSUdRUUowYWlJSUlBZ29BZ0FnQTBHQW93RW9BZ0FpQ0VFQ2RHb29BZ0JxSWdNMkFnQkJnS01CUVFBZ0NFRUJhaUlJSUFVZ0NFWWJOZ0lBUVpTY0FVRUFJQVpCQVdvaUJpQUZJQVpHR3pZQ0FDQURRUUYySVFNTElBY2dBellDREFzZ0J5Z0NEQ0VESUFkQkVHb2tBQ0FBSUFNMkFnd2dBQ0FBS0FJY05nSVVBMEFnQUNnQ0ZDQUFLQUlZU1FSQUlBQWdBQ2dDREVFa2NEb0FDd0ovSUFBc0FBdEJDa2dFUUNBQUxBQUxRVEJxREFFTElBQXNBQXRCMXdCcUN5RURJQUFnQUNnQ0ZDSUhRUUZxTmdJVUlBY2dBem9BQUNBQUlBQW9BZ3hCSkc0MkFnd01BUXNMSUFBb0FpZ2hBeUFBSUFBb0FpUkJmMFlFZjBHMkF3VWdBQ2dDSkFzMkFnQWdBQ0FEUWNLQklDQUFFRzRpQXpZQ0lDQURRUUJPQkVBZ0FDZ0NKRUYvUndSQUlBQW9BaWdnQUNnQ0pCQVBJZ05CZ1dCUEJIOUIrSjBCUVFBZ0EyczJBZ0JCQUFVZ0F3c2FDeUFBSUFBb0FpQTJBaXdNQWd0QitKMEJLQUlBUVJSR0RRQUxJQUJCZnpZQ0xBc2dBQ2dDTENFRElBQkJNR29rQUNBQklBTWlBRFlDY0NBQVFYOUdCRUFnQVNnQ2VFRU1RZmlkQVNnQ0FCQVVJQUVvQW5RUUZTQUJRWDgyQW53TUFRc2dBU0FCS0FKd1FiSVNFS0lCSWdBMkFtZ2dBRVVFUUNBQktBSjRRUXhCK0owQktBSUFFQlFnQVNnQ2NCQnRJQUVvQW5RUWJ4b2dBU2dDZEJBVklBRkJmellDZkF3QkN5QUJLQUo0SUFFb0FtZzJBb1FCSUFFb0FuZ2dBU2dDZERZQ2dBRWdBVUVBTmdKOEN5QUJLQUo4SVFBZ0FVR0FBV29rQUNBRUlBQ3NOd05ZREJBTElBUW9Ba0FvQWhnRVFDQUVLQUpBS0FJY0VGTWFJQVFvQWtCQkFEWUNIQXNnQkVJQU53TllEQThMSUFRb0FrQW9Bb1FCRUZOQkFFZ0VRQ0FFS0FKQVFRQTJBb1FCSUFRb0FrQkJCa0g0blFFb0FnQVFGQXNnQkNnQ1FFRUFOZ0tFQVNBRUtBSkFLQUtBQVNBRUtBSkFLQUlZRUFnaUFFR0JZRThFZjBING5RRkJBQ0FBYXpZQ0FFRi9CU0FBQzBFQVNBUkFJQVFvQWtCQkFrSDRuUUVvQWdBUUZDQUVRbjgzQTFnTUR3c2dCQ2dDUUNnQ2dBRVFGU0FFS0FKQVFRQTJBb0FCSUFSQ0FEY0RXQXdPQ3lBRUlBUW9Ba0FnQkNnQ1VDQUVLUU5JRUVJM0ExZ01EUXNnQkNnQ1FDZ0NHQkFWSUFRb0FrQW9Bb0FCRUJVZ0JDZ0NRQ2dDSEFSQUlBUW9Ba0FvQWh3UVV4b0xJQVFvQWtBUUZTQUVRZ0EzQTFnTURBc2dCQ2dDUUNnQ0dBUkFJQVFvQWtBb0FoZ2hBU01BUVNCcklnQWtBQ0FBSUFFMkFoZ2dBRUVBT2dBWElBQkJnSUFnTmdJTUFrQWdBQzBBRjBFQmNRUkFJQUFnQUNnQ0RFRUNjallDREF3QkN5QUFJQUFvQWd3MkFnd0xJQUFvQWhnaEFTQUFLQUlNSVFNZ0FFRzJBellDQUNBQUlBRWdBeUFBRUc0aUFUWUNFQUpBSUFGQkFFZ0VRQ0FBUVFBMkFod01BUXNnQUNBQUtBSVFRYklTUWE4U0lBQXRBQmRCQVhFYkVLSUJJZ0UyQWdnZ0FVVUVRQ0FBUVFBMkFod01BUXNnQUNBQUtBSUlOZ0ljQ3lBQUtBSWNJUUVnQUVFZ2FpUUFJQVFvQWtBZ0FUWUNIQ0FCUlFSQUlBUW9Ba0JCQzBING5RRW9BZ0FRRkNBRVFuODNBMWdNRFFzTElBUW9Ba0FwQTJoQ0FGSUVRQ0FFS0FKQUtBSWNJQVFvQWtBcEEyZ2dCQ2dDUUJDZ0FVRUFTQVJBSUFSQ2Z6Y0RXQXdOQ3dzZ0JDZ0NRRUlBTndONElBUkNBRGNEV0F3TEN3SkFJQVFvQWtBcEEzQkNBRklFUUNBRUlBUW9Ba0FwQTNBZ0JDZ0NRQ2tEZUgwM0F6QWdCQ2tETUNBRUtRTklWZ1JBSUFRZ0JDa0RTRGNETUFzTUFRc2dCQ0FFS1FOSU53TXdDeUFFS1FNd1F2Ly8vLzhQVmdSQUlBUkMvLy8vL3c4M0F6QUxJQVFDZnlBRUtBSThJUWNnQkNrRE1LY2hBQ0FFS0FKQUtBSWNJZ01vQWt3YUlBTWdBeTBBU2lJQlFRRnJJQUZ5T2dCS0lBTW9BZ2dnQXlnQ0JDSUZheUlCUVFGSUJIOGdBQVVnQnlBRklBRWdBQ0FBSUFGTEd5SUJFQmNhSUFNZ0F5Z0NCQ0FCYWpZQ0JDQUJJQWRxSVFjZ0FDQUJhd3NpQVFSQUEwQUNRQUovSUFNZ0F5MEFTaUlGUVFGcklBVnlPZ0JLSUFNb0FoUWdBeWdDSEVzRVFDQURRUUJCQUNBREtBSWtFUUFBR2dzZ0EwRUFOZ0ljSUFOQ0FEY0RFQ0FES0FJQUlnVkJCSEVFUUNBRElBVkJJSEkyQWdCQmZ3d0JDeUFESUFNb0Fpd2dBeWdDTUdvaUJqWUNDQ0FESUFZMkFnUWdCVUViZEVFZmRRdEZCRUFnQXlBSElBRWdBeWdDSUJFQUFDSUZRUUZxUVFGTERRRUxJQUFnQVdzTUF3c2dCU0FIYWlFSElBRWdCV3NpQVEwQUN3c2dBQXNpQURZQ0xDQUFSUVJBQW44Z0JDZ0NRQ2dDSENJQUtBSk1RWDlNQkVBZ0FDZ0NBQXdCQ3lBQUtBSUFDMEVGZGtFQmNRUkFJQVFvQWtCQkJVSDRuUUVvQWdBUUZDQUVRbjgzQTFnTURBc0xJQVFvQWtBaUFDQUFLUU40SUFRb0FpeXRmRGNEZUNBRUlBUW9BaXl0TndOWURBb0xJQVFvQWtBb0FoZ1FiMEVBU0FSQUlBUW9Ba0JCRmtING5RRW9BZ0FRRkNBRVFuODNBMWdNQ2dzZ0JFSUFOd05ZREFrTElBUW9Ba0FvQW9RQkJFQWdCQ2dDUUNnQ2hBRVFVeG9nQkNnQ1FFRUFOZ0tFQVFzZ0JDZ0NRQ2dDZ0FFUWJ4b2dCQ2dDUUNnQ2dBRVFGU0FFS0FKQVFRQTJBb0FCSUFSQ0FEY0RXQXdJQ3lBRUFuOGdCQ2tEU0VJUVZBUkFJQVFvQWtCQkVrRUFFQlJCQUF3QkN5QUVLQUpRQ3pZQ0dDQUVLQUlZUlFSQUlBUkNmemNEV0F3SUN5QUVRUUUyQWh3Q1FBSkFBa0FDUUFKQUlBUW9BaGdvQWdnT0F3QUNBUU1MSUFRZ0JDZ0NHQ2tEQURjRElBd0RDd0pBSUFRb0FrQXBBM0JRQkVBZ0JDZ0NRQ2dDSENBRUtBSVlLUU1BUVFJZ0JDZ0NRQkJzUVFCSUJFQWdCRUovTndOWURBMExJQVFnQkNnQ1FDZ0NIQkNrQVNJQ053TWdJQUpDQUZNRVFDQUVLQUpBUVFSQitKMEJLQUlBRUJRZ0JFSi9Od05ZREEwTElBUWdCQ2tESUNBRUtBSkFLUU5vZlRjRElDQUVRUUEyQWh3TUFRc2dCQ0FFS0FKQUtRTndJQVFvQWhncEF3QjhOd01nQ3d3Q0N5QUVJQVFvQWtBcEEzZ2dCQ2dDR0NrREFIdzNBeUFNQVFzZ0JDZ0NRRUVTUVFBUUZDQUVRbjgzQTFnTUNBc0NRQUpBSUFRcEF5QkNBRk1OQUNBRUtBSkFLUU53UWdCU0JFQWdCQ2tESUNBRUtBSkFLUU53VmcwQkN5QUVLQUpBS1FOb0lBUXBBeUFnQkNnQ1FDa0RhSHhZRFFFTElBUW9Ba0JCRWtFQUVCUWdCRUovTndOWURBZ0xJQVFvQWtBZ0JDa0RJRGNEZUNBRUtBSWNCRUFnQkNnQ1FDZ0NIQ0FFS0FKQUtRTjRJQVFvQWtBcEEyaDhJQVFvQWtBUW9BRkJBRWdFUUNBRVFuODNBMWdNQ1FzTElBUkNBRGNEV0F3SEN5QUVBbjhnQkNrRFNFSVFWQVJBSUFRb0FrQkJFa0VBRUJSQkFBd0JDeUFFS0FKUUN6WUNGQ0FFS0FJVVJRUkFJQVJDZnpjRFdBd0hDeUFFS0FKQUtBS0VBU0FFS0FJVUtRTUFJQVFvQWhRb0FnZ2dCQ2dDUUJCc1FRQklCRUFnQkVKL053TllEQWNMSUFSQ0FEY0RXQXdHQ3lBRUtRTklRamhVQkVBZ0JFSi9Od05ZREFZTEFuOGpBRUVRYXlJQUlBUW9Ba0JCMkFCcU5nSU1JQUFvQWd3b0FnQUxCRUFnQkNnQ1FBSi9Jd0JCRUdzaUFDQUVLQUpBUWRnQWFqWUNEQ0FBS0FJTUtBSUFDd0ovSXdCQkVHc2lBQ0FFS0FKQVFkZ0FhallDRENBQUtBSU1LQUlFQ3hBVUlBUkNmemNEV0F3R0N5QUVLQUpRSWdBZ0JDZ0NRQ0lCS1FBZ053QUFJQUFnQVNrQVVEY0FNQ0FBSUFFcEFFZzNBQ2dnQUNBQktRQkFOd0FnSUFBZ0FTa0FPRGNBR0NBQUlBRXBBREEzQUJBZ0FDQUJLUUFvTndBSUlBUkNPRGNEV0F3RkN5QUVJQVFvQWtBcEF4QTNBMWdNQkFzZ0JDQUVLQUpBS1FONE53TllEQU1MSUFRZ0JDZ0NRQ2dDaEFFUXBBRTNBd2dnQkNrRENFSUFVd1JBSUFRb0FrQkJIa0g0blFFb0FnQVFGQ0FFUW44M0ExZ01Bd3NnQkNBRUtRTUlOd05ZREFJTElBUW9Ba0FvQW9RQklnQW9Ba3hCQUU0YUlBQWdBQ2dDQUVGUGNUWUNBQ0FFQW44Z0JDZ0NVQ0VCSUFRcEEwaW5JZ0FnQUFKL0lBUW9Ba0FvQW9RQklnTW9Ba3hCZjB3RVFDQUJJQUFnQXhCekRBRUxJQUVnQUNBREVITUxJZ0ZHRFFBYUlBRUxOZ0lFQWtBZ0JDa0RTQ0FFS0FJRXJWRUVRQUovSUFRb0FrQW9Bb1FCSWdBb0FreEJmMHdFUUNBQUtBSUFEQUVMSUFBb0FnQUxRUVYyUVFGeFJRMEJDeUFFS0FKQVFRWkIrSjBCS0FJQUVCUWdCRUovTndOWURBSUxJQVFnQkNnQ0JLMDNBMWdNQVFzZ0JDZ0NRRUVjUVFBUUZDQUVRbjgzQTFnTElBUXBBMWdoQWlBRVFlQUFhaVFBSUFJTENRQWdBQ2dDUEJBRkMrUUJBUVIvSXdCQklHc2lBeVFBSUFNZ0FUWUNFQ0FESUFJZ0FDZ0NNQ0lFUVFCSGF6WUNGQ0FBS0FJc0lRVWdBeUFFTmdJY0lBTWdCVFlDR0VGL0lRUUNRQUpBSUFBb0Fqd2dBMEVRYWtFQ0lBTkJER29RQmlJRkJIOUIrSjBCSUFVMkFnQkJmd1ZCQUF0RkJFQWdBeWdDRENJRVFRQktEUUVMSUFBZ0FDZ0NBQ0FFUVRCeFFSQnpjallDQUF3QkN5QUVJQU1vQWhRaUJrME5BQ0FBSUFBb0Fpd2lCVFlDQkNBQUlBVWdCQ0FHYTJvMkFnZ2dBQ2dDTUFSQUlBQWdCVUVCYWpZQ0JDQUJJQUpxUVFGcklBVXRBQUE2QUFBTElBSWhCQXNnQTBFZ2FpUUFJQVFMOUFJQkIzOGpBRUVnYXlJREpBQWdBeUFBS0FJY0lnVTJBaEFnQUNnQ0ZDRUVJQU1nQWpZQ0hDQURJQUUyQWhnZ0F5QUVJQVZySWdFMkFoUWdBU0FDYWlFRlFRSWhCeUFEUVJCcUlRRUNmd0pBQWtBZ0FDZ0NQQ0FEUVJCcVFRSWdBMEVNYWhBRElnUUVmMEg0blFFZ0JEWUNBRUYvQlVFQUMwVUVRQU5BSUFVZ0F5Z0NEQ0lFUmcwQ0lBUkJmMHdOQXlBQklBUWdBU2dDQkNJSVN5SUdRUU4wYWlJSklBUWdDRUVBSUFZYmF5SUlJQWtvQWdCcU5nSUFJQUZCREVFRUlBWWJhaUlKSUFrb0FnQWdDR3MyQWdBZ0JTQUVheUVGSUFBb0Fqd2dBVUVJYWlBQklBWWJJZ0VnQnlBR2F5SUhJQU5CREdvUUF5SUVCSDlCK0owQklBUTJBZ0JCZndWQkFBdEZEUUFMQ3lBRlFYOUhEUUVMSUFBZ0FDZ0NMQ0lCTmdJY0lBQWdBVFlDRkNBQUlBRWdBQ2dDTUdvMkFoQWdBZ3dCQ3lBQVFRQTJBaHdnQUVJQU53TVFJQUFnQUNnQ0FFRWdjallDQUVFQUlBZEJBa1lOQUJvZ0FpQUJLQUlFYXdzaEFDQURRU0JxSkFBZ0FBdFNBUUYvSXdCQkVHc2lBeVFBSUFBb0Fqd2dBYWNnQVVJZ2lLY2dBa0gvQVhFZ0EwRUlhaEFOSWdBRWYwSDRuUUVnQURZQ0FFRi9CVUVBQ3lFQUlBTXBBd2doQVNBRFFSQnFKQUJDZnlBQklBQWJDOFlFQVFWL0l3QkJzQUZySWdFa0FDQUJJQUEyQXFnQklBRW9BcWdCRURnQ1FBSkFJQUVvQXFnQktBSUFRUUJPQkVBZ0FTZ0NxQUVvQWdCQmtCUW9BZ0JJRFFFTElBRWdBU2dDcUFFb0FnQTJBaEFnQVVFZ2FrR2VFaUFCUVJCcUVIRWdBVUVBTmdLa0FTQUJJQUZCSUdvMkFxQUJEQUVMSUFFZ0FTZ0NxQUVvQWdCQkFuUkJrQk5xS0FJQU5nS2tBUUpBQWtBQ1FBSkFJQUVvQXFnQktBSUFRUUowUWFBVWFpZ0NBRUVCYXc0Q0FBRUNDeUFCS0FLb0FTZ0NCQ0VDUWRTYkFTZ0NBQ0VFUVFBaEFBSkFBa0FEUUNBQ0lBQkJzSW9CYWkwQUFFY0VRRUhYQUNFRElBQkJBV29pQUVIWEFFY05BUXdDQ3dzZ0FDSUREUUJCa0lzQklRSU1BUXRCa0lzQklRQURRQ0FBTFFBQUlRVWdBRUVCYWlJQ0lRQWdCUTBBSUFJaEFDQURRUUZySWdNTkFBc0xJQVFvQWhRYUlBRWdBallDb0FFTUFnc2dBVUVBSUFFb0FxZ0JLQUlFYTBFQ2RFSG84UUJxS0FJQU5nS2dBUXdCQ3lBQlFRQTJBcUFCQ3dzQ1FDQUJLQUtnQVVVRVFDQUJJQUVvQXFRQk5nS3NBUXdCQ3lBQklBRW9BcUFCRUM0Q2Z5QUJLQUtrQVFSQUlBRW9BcVFCRUM1QkFtb01BUXRCQUF0cVFRRnFFQmtpQURZQ0hDQUFSUVJBSUFGQnlCTW9BZ0EyQXF3QkRBRUxJQUVvQWh3aEFBSi9JQUVvQXFRQkJFQWdBU2dDcEFFTUFRdEJnaE1MSVFOQjV4SkJnaE1nQVNnQ3BBRWJJUUlnQVNBQktBS2dBVFlDQ0NBQklBSTJBZ1FnQVNBRE5nSUFJQUJCdmdvZ0FSQnhJQUVvQXFnQklBRW9BaHcyQWdnZ0FTQUJLQUljTmdLc0FRc2dBU2dDckFFaEFDQUJRYkFCYWlRQUlBQUxNd0VCZnlBQUtBSVVJZ01nQVNBQ0lBQW9BaEFnQTJzaUFTQUJJQUpMR3lJQkVCY2FJQUFnQUNnQ0ZDQUJhallDRkNBQ0M0OEZBZ1orQVg4Z0FTQUJLQUlBUVE5cVFYQnhJZ0ZCRUdvMkFnQWdBQUo4SUFFcEF3QWhBeUFCS1FNSUlRWWpBRUVnYXlJSUpBQUNRQ0FHUXYvLy8vLy8vLy8vL3dDRElnUkNnSUNBZ0lDQXdJQThmU0FFUW9DQWdJQ0FnTUQvd3dCOVZBUkFJQVpDQklZZ0EwSThpSVFoQkNBRFF2Ly8vLy8vLy8vL0Q0TWlBMEtCZ0lDQWdJQ0FnQWhhQkVBZ0JFS0JnSUNBZ0lDQWdNQUFmQ0VDREFJTElBUkNnSUNBZ0lDQWdJQkFmU0VDSUFOQ2dJQ0FnSUNBZ0lBSWhVSUFVZzBCSUFJZ0JFSUJnM3doQWd3QkN5QURVQ0FFUW9DQWdJQ0FnTUQvL3dCVUlBUkNnSUNBZ0lDQXdQLy9BRkViUlFSQUlBWkNCSVlnQTBJOGlJUkMvLy8vLy8vLy93T0RRb0NBZ0lDQWdJRDgvd0NFSVFJTUFRdENnSUNBZ0lDQWdQai9BQ0VDSUFSQy8vLy8vLy8vdi8vREFGWU5BRUlBSVFJZ0JFSXdpS2NpQUVHUjl3QkpEUUFnQXlFQ0lBWkMvLy8vLy8vL1A0TkNnSUNBZ0lDQXdBQ0VJZ1VoQndKQUlBQkJnZmNBYXlJQlFjQUFjUVJBSUFJZ0FVRkFhcTJHSVFkQ0FDRUNEQUVMSUFGRkRRQWdCeUFCclNJRWhpQUNRY0FBSUFGcnJZaUVJUWNnQWlBRWhpRUNDeUFJSUFJM0F4QWdDQ0FITndNWUFrQkJnZmdBSUFCcklnQkJ3QUJ4QkVBZ0JTQUFRVUJxcllnaEEwSUFJUVVNQVFzZ0FFVU5BQ0FGUWNBQUlBQnJyWVlnQXlBQXJTSUNpSVFoQXlBRklBS0lJUVVMSUFnZ0F6Y0RBQ0FJSUFVM0F3Z2dDQ2tEQ0VJRWhpQUlLUU1BSWdOQ1BJaUVJUUlnQ0NrREVDQUlLUU1ZaEVJQVVxMGdBMEwvLy8vLy8vLy8vdytEaENJRFFvR0FnSUNBZ0lDQUNGb0VRQ0FDUWdGOElRSU1BUXNnQTBLQWdJQ0FnSUNBZ0FpRlFnQlNEUUFnQWtJQmd5QUNmQ0VDQ3lBSVFTQnFKQUFnQWlBR1FvQ0FnSUNBZ0lDQWdIK0RoTDhMT1FNQUM2MFhBeEovQW40QmZDTUFRYkFFYXlJSkpBQWdDVUVBTmdJc0FrQWdBYjBpR0VKL1Z3UkFRUUVoRWtHdUNDRVRJQUdhSWdHOUlSZ01BUXNnQkVHQUVIRUVRRUVCSVJKQnNRZ2hFd3dCQzBHMENFR3ZDQ0FFUVFGeEloSWJJUk1nRWtVaEZ3c0NRQ0FZUW9DQWdJQ0FnSUQ0L3dDRFFvQ0FnSUNBZ0lENC93QlJCRUFnQUVFZ0lBSWdFa0VEYWlJTklBUkIvLzk3Y1JBbElBQWdFeUFTRUNFZ0FFSGtDMEhFRWlBRlFTQnhJZ01iUVo0TlFjZ1NJQU1iSUFFZ0FXSWJRUU1RSVF3QkN5QUpRUkJxSVJBQ1FBSi9Ba0FnQVNBSlFTeHFFS29CSWdFZ0FhQWlBVVFBQUFBQUFBQUFBR0lFUUNBSklBa29BaXdpQmtFQmF6WUNMQ0FGUVNCeUloUkI0UUJIRFFFTUF3c2dCVUVnY2lJVVFlRUFSZzBDSUFrb0Fpd2hDMEVHSUFNZ0EwRUFTQnNNQVFzZ0NTQUdRUjFySWdzMkFpd2dBVVFBQUFBQUFBQ3dRYUloQVVFR0lBTWdBMEVBU0JzTElRb2dDVUV3YWlBSlFkQUNhaUFMUVFCSUd5SU9JUWNEUUNBSEFuOGdBVVFBQUFBQUFBRHdRV01nQVVRQUFBQUFBQUFBQUdaeEJFQWdBYXNNQVF0QkFBc2lBellDQUNBSFFRUnFJUWNnQVNBRHVLRkVBQUFBQUdYTnpVR2lJZ0ZFQUFBQUFBQUFBQUJpRFFBTEFrQWdDMEVCU0FSQUlBc2hBeUFISVFZZ0RpRUlEQUVMSUE0aENDQUxJUU1EUUNBRFFSMGdBMEVkU0JzaERBSkFJQWRCQkdzaUJpQUlTUTBBSUF5dElSbENBQ0VZQTBBZ0JpQUdOUUlBSUJtR0lCaDhJaGdnR0VLQWxPdmNBNEFpR0VLQWxPdmNBMzU5UGdJQUlBZ2dCa0VFYXlJR1RRUkFJQmhDLy8vLy93K0RJUmdNQVFzTElCaW5JZ05GRFFBZ0NFRUVheUlJSUFNMkFnQUxBMEFnQ0NBSElnWkpCRUFnQmtFRWF5SUhLQUlBUlEwQkN3c2dDU0FKS0FJc0lBeHJJZ00yQWl3Z0JpRUhJQU5CQUVvTkFBc0xJQXBCR1dwQkNXMGhCeUFEUVg5TUJFQWdCMEVCYWlFTklCUkI1Z0JHSVJVRFFFRUpRUUFnQTJzZ0EwRjNTQnNoRmdKQUlBWWdDRXNFUUVHQWxPdmNBeUFXZGlFUFFYOGdGblJCZjNNaEVVRUFJUU1nQ0NFSEEwQWdCeUFESUFjb0FnQWlEQ0FXZG1vMkFnQWdEQ0FSY1NBUGJDRURJQWRCQkdvaUJ5QUdTUTBBQ3lBSUlBaEJCR29nQ0NnQ0FCc2hDQ0FEUlEwQklBWWdBellDQUNBR1FRUnFJUVlNQVFzZ0NDQUlRUVJxSUFnb0FnQWJJUWdMSUFrZ0NTZ0NMQ0FXYWlJRE5nSXNJQTRnQ0NBVkd5SUhJQTFCQW5ScUlBWWdCaUFIYTBFQ2RTQU5TaHNoQmlBRFFRQklEUUFMQzBFQUlRY0NRQ0FHSUFoTkRRQWdEaUFJYTBFQ2RVRUpiQ0VISUFnb0FnQWlERUVLU1EwQVFlUUFJUU1EUUNBSFFRRnFJUWNnQXlBTVN3MEJJQU5CQ213aEF3d0FDd0FMSUFwQkFDQUhJQlJCNWdCR0cyc2dGRUhuQUVZZ0NrRUFSM0ZySWdNZ0JpQU9hMEVDZFVFSmJFRUphMGdFUUNBRFFZRElBR29pRVVFSmJTSU1RUUowSUFsQk1HcEJCSElnQ1VIVUFtb2dDMEVBU0J0cVFZQWdheUVOUVFvaEF3SkFJQkVnREVFSmJHc2lERUVIU2cwQVFlUUFJUU1EUUNBTVFRRnFJZ3hCQ0VZTkFTQURRUXBzSVFNTUFBc0FDd0pBSUEwb0FnQWlFU0FSSUFOdUlnd2dBMnhySWc5QkFTQU5RUVJxSWdzZ0JrWWJSUTBBUkFBQUFBQUFBT0EvUkFBQUFBQUFBUEEvUkFBQUFBQUFBUGcvSUFZZ0MwWWJSQUFBQUFBQUFQZy9JQThnQTBFQmRpSUxSaHNnQ3lBUFN4c2hHa1FCQUFBQUFBQkFRMFFBQUFBQUFBQkFReUFNUVFGeEd5RUJBa0FnRncwQUlCTXRBQUJCTFVjTkFDQWFtaUVhSUFHYUlRRUxJQTBnRVNBUGF5SUxOZ0lBSUFFZ0dxQWdBV0VOQUNBTklBTWdDMm9pQXpZQ0FDQURRWUNVNjl3RFR3UkFBMEFnRFVFQU5nSUFJQWdnRFVFRWF5SU5Td1JBSUFoQkJHc2lDRUVBTmdJQUN5QU5JQTBvQWdCQkFXb2lBellDQUNBRFFmK1Q2OXdEU3cwQUN3c2dEaUFJYTBFQ2RVRUpiQ0VISUFnb0FnQWlDMEVLU1EwQVFlUUFJUU1EUUNBSFFRRnFJUWNnQXlBTFN3MEJJQU5CQ213aEF3d0FDd0FMSUExQkJHb2lBeUFHSUFNZ0Jra2JJUVlMQTBBZ0JpSUxJQWhOSWd4RkJFQWdDMEVFYXlJR0tBSUFSUTBCQ3dzQ1FDQVVRZWNBUndSQUlBUkJDSEVoRHd3QkN5QUhRWDl6UVg4Z0NrRUJJQW9iSWdZZ0Iwb2dCMEY3U25FaUF4c2dCbW9oQ2tGL1FYNGdBeHNnQldvaEJTQUVRUWh4SWc4TkFFRjNJUVlDUUNBTURRQWdDMEVFYXlnQ0FDSURSUTBBUVFBaEJpQURRUXB3RFFCQkFDRU1RZVFBSVFZRFFDQURJQVp3UlFSQUlBeEJBV29oRENBR1FRcHNJUVlNQVFzTElBeEJmM01oQmdzZ0N5QU9hMEVDZFVFSmJDRURJQVZCWDNGQnhnQkdCRUJCQUNFUElBb2dBeUFHYWtFSmF5SURRUUFnQTBFQVNoc2lBeUFESUFwS0d5RUtEQUVMUVFBaER5QUtJQU1nQjJvZ0JtcEJDV3NpQTBFQUlBTkJBRW9iSWdNZ0F5QUtTaHNoQ2dzZ0NpQVBja0VBUnlFUklBQkJJQ0FDSUFWQlgzRWlERUhHQUVZRWZ5QUhRUUFnQjBFQVNoc0ZJQkFnQnlBSFFSOTFJZ05xSUFOenJTQVFFRU1pQm10QkFVd0VRQU5BSUFaQkFXc2lCa0V3T2dBQUlCQWdCbXRCQWtnTkFBc0xJQVpCQW1zaUZTQUZPZ0FBSUFaQkFXdEJMVUVySUFkQkFFZ2JPZ0FBSUJBZ0ZXc0xJQW9nRW1vZ0VXcHFRUUZxSWcwZ0JCQWxJQUFnRXlBU0VDRWdBRUV3SUFJZ0RTQUVRWUNBQkhNUUpRSkFBa0FDUUNBTVFjWUFSZ1JBSUFsQkVHcEJDSEloQXlBSlFSQnFRUWx5SVFjZ0RpQUlJQWdnRGtzYklnVWhDQU5BSUFnMUFnQWdCeEJESVFZQ1FDQUZJQWhIQkVBZ0JpQUpRUkJxVFEwQkEwQWdCa0VCYXlJR1FUQTZBQUFnQmlBSlFSQnFTdzBBQ3d3QkN5QUdJQWRIRFFBZ0NVRXdPZ0FZSUFNaEJnc2dBQ0FHSUFjZ0Jtc1FJU0FJUVFScUlnZ2dEazBOQUF0QkFDRUdJQkZGRFFJZ0FFSGVFa0VCRUNFZ0NDQUxUdzBCSUFwQkFVZ05BUU5BSUFnMUFnQWdCeEJESWdZZ0NVRVFha3NFUUFOQUlBWkJBV3NpQmtFd09nQUFJQVlnQ1VFUWFrc05BQXNMSUFBZ0JpQUtRUWtnQ2tFSlNCc1FJU0FLUVFscklRWWdDRUVFYWlJSUlBdFBEUU1nQ2tFSlNpRURJQVloQ2lBRERRQUxEQUlMQWtBZ0NrRUFTQTBBSUFzZ0NFRUVhaUFJSUF0Skd5RUZJQWxCRUdwQkNYSWhDeUFKUVJCcVFRaHlJUU1nQ0NFSEEwQWdDeUFITlFJQUlBc1FReUlHUmdSQUlBbEJNRG9BR0NBRElRWUxBa0FnQnlBSVJ3UkFJQVlnQ1VFUWFrME5BUU5BSUFaQkFXc2lCa0V3T2dBQUlBWWdDVUVRYWtzTkFBc01BUXNnQUNBR1FRRVFJU0FHUVFGcUlRWkJBQ0FLUVFCTUlBOGJEUUFnQUVIZUVrRUJFQ0VMSUFBZ0JpQUxJQVpySWdZZ0NpQUdJQXBJR3hBaElBb2dCbXNoQ2lBSFFRUnFJZ2NnQlU4TkFTQUtRWDlLRFFBTEN5QUFRVEFnQ2tFU2FrRVNRUUFRSlNBQUlCVWdFQ0FWYXhBaERBSUxJQW9oQmdzZ0FFRXdJQVpCQ1dwQkNVRUFFQ1VMREFFTElCTkJDV29nRXlBRlFTQnhJZ3NiSVFvQ1FDQURRUXRMRFFCQkRDQURheUlHUlEwQVJBQUFBQUFBQUNCQUlSb0RRQ0FhUkFBQUFBQUFBREJBb2lFYUlBWkJBV3NpQmcwQUN5QUtMUUFBUVMxR0JFQWdHaUFCbWlBYW9hQ2FJUUVNQVFzZ0FTQWFvQ0Fhb1NFQkN5QVFJQWtvQWl3aUJpQUdRUjkxSWdacUlBWnpyU0FRRUVNaUJrWUVRQ0FKUVRBNkFBOGdDVUVQYWlFR0N5QVNRUUp5SVE0Z0NTZ0NMQ0VISUFaQkFtc2lEQ0FGUVE5cU9nQUFJQVpCQVd0QkxVRXJJQWRCQUVnYk9nQUFJQVJCQ0hFaEJ5QUpRUkJxSVFnRFFDQUlJZ1VDZnlBQm1VUUFBQUFBQUFEZ1FXTUVRQ0FCcWd3QkMwR0FnSUNBZUFzaUJrR1FpUUZxTFFBQUlBdHlPZ0FBSUFFZ0JyZWhSQUFBQUFBQUFEQkFvaUVCQWtBZ0JVRUJhaUlJSUFsQkVHcHJRUUZIRFFBQ1FDQUJSQUFBQUFBQUFBQUFZZzBBSUFOQkFFb05BQ0FIUlEwQkN5QUZRUzQ2QUFFZ0JVRUNhaUVJQ3lBQlJBQUFBQUFBQUFBQVlnMEFDeUFBUVNBZ0FpQU9BbjhDUUNBRFJRMEFJQWdnQ1d0QkVtc2dBMDROQUNBRElCQnFJQXhyUVFKcURBRUxJQkFnQ1VFUWFpQU1hbXNnQ0dvTElnTnFJZzBnQkJBbElBQWdDaUFPRUNFZ0FFRXdJQUlnRFNBRVFZQ0FCSE1RSlNBQUlBbEJFR29nQ0NBSlFSQnFheUlGRUNFZ0FFRXdJQU1nQlNBUUlBeHJJZ05xYTBFQVFRQVFKU0FBSUF3Z0F4QWhDeUFBUVNBZ0FpQU5JQVJCZ01BQWN4QWxJQWxCc0FScUpBQWdBaUFOSUFJZ0RVb2JDd1lBUWFTaUFRc0dBRUdnb2dFTEJnQkJtS0lCQ3hnQkFYOGpBRUVRYXlJQklBQTJBZ3dnQVNnQ0RFRUVhZ3NZQVFGL0l3QkJFR3NpQVNBQU5nSU1JQUVvQWd4QkNHb0xhUUVCZnlNQVFSQnJJZ0VrQUNBQklBQTJBZ3dnQVNnQ0RDZ0NGQVJBSUFFb0Fnd29BaFFRR2dzZ0FVRUFOZ0lJSUFFb0Fnd29BZ1FFUUNBQklBRW9BZ3dvQWdRMkFnZ0xJQUVvQWd4QkJHb1FPQ0FCS0FJTUVCVWdBU2dDQ0NFQUlBRkJFR29rQUNBQUN3Z0FRUUZCT0JCOEM2a0JBUU4vQWtBZ0FDMEFBQ0lDUlEwQUEwQWdBUzBBQUNJRVJRUkFJQUloQXd3Q0N3SkFJQUlnQkVZTkFDQUNRU0J5SUFJZ0FrSEJBR3RCR2trYklBRXRBQUFpQWtFZ2NpQUNJQUpCd1FCclFScEpHMFlOQUNBQUxRQUFJUU1NQWdzZ0FVRUJhaUVCSUFBdEFBRWhBaUFBUVFGcUlRQWdBZzBBQ3dzZ0EwSC9BWEVpQUVFZ2NpQUFJQUJCd1FCclFScEpHeUFCTFFBQUlnQkJJSElnQUNBQVFjRUFhMEVhU1J0ckMvWUpBUUYvSXdCQnNBRnJJZ1VrQUNBRklBQTJBcVFCSUFVZ0FUWUNvQUVnQlNBQ05nS2NBU0FGSUFNM0E1QUJJQVVnQkRZQ2pBRWdCU0FGS0FLZ0FUWUNpQUVDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUlBVW9Bb3dCRGc4QUFRSURCQVVIQ0FrSkNRa0pDUVlKQ3lBRktBS0lBVUlBTndNZ0lBVkNBRGNEcUFFTUNRc2dCU0FGS0FLa0FTQUZLQUtjQVNBRktRT1FBUkFySWdNM0E0QUJJQU5DQUZNRVFDQUZLQUtJQVVFSWFpQUZLQUtrQVJBWUlBVkNmemNEcUFFTUNRc0NRQ0FGS1FPQUFWQUVRQ0FGS0FLSUFTa0RLQ0FGS0FLSUFTa0RJRkVFUUNBRktBS0lBVUVCTmdJRUlBVW9Bb2dCSUFVb0FvZ0JLUU1nTndNWUlBVW9Bb2dCS0FJQUJFQWdCU2dDcEFFZ0JVSElBR29RT1VFQVNBUkFJQVVvQW9nQlFRaHFJQVVvQXFRQkVCZ2dCVUovTndPb0FRd05Dd0pBSUFVcEEwaENJSU5RRFFBZ0JTZ0NkQ0FGS0FLSUFTZ0NNRVlOQUNBRktBS0lBVUVJYWtFSFFRQVFGQ0FGUW44M0E2Z0JEQTBMQWtBZ0JTa0RTRUlFZzFBTkFDQUZLUU5nSUFVb0FvZ0JLUU1ZVVEwQUlBVW9Bb2dCUVFocVFSVkJBQkFVSUFWQ2Z6Y0RxQUVNRFFzTEN3d0JDd0pBSUFVb0FvZ0JLQUlFRFFBZ0JTZ0NpQUVwQXlBZ0JTZ0NpQUVwQXloV0RRQWdCU0FGS0FLSUFTa0RLQ0FGS0FLSUFTa0RJSDAzQTBBRFFDQUZLUU5BSUFVcEE0QUJWQVJBSUFVZ0JTa0RnQUVnQlNrRFFIMUMvLy8vL3c5V0JINUMvLy8vL3c4RklBVXBBNEFCSUFVcEEwQjlDemNET0FKL0lBVW9Bb2dCS0FJd0lRQWdCU2tET0tjaEFVRUFJQVVvQXB3QklBVXBBMENuYWlJQ1JRMEFHaUFBSUFJZ0FhMUJySmtCS0FJQUVRUUFDeUVBSUFVb0FvZ0JJQUEyQWpBZ0JTZ0NpQUVpQUNBRktRTTRJQUFwQXloOE53TW9JQVVnQlNrRE9DQUZLUU5BZkRjRFFBd0JDd3NMQ3lBRktBS0lBU0lBSUFVcEE0QUJJQUFwQXlCOE53TWdJQVVnQlNrRGdBRTNBNmdCREFnTElBVkNBRGNEcUFFTUJ3c2dCU0FGS0FLY0FUWUNOQ0FGS0FLSUFTZ0NCQVJBSUFVb0FqUWdCU2dDaUFFcEF4ZzNBeGdnQlNnQ05DQUZLQUtJQVNnQ01EWUNMQ0FGS0FJMElBVW9Bb2dCS1FNWU53TWdJQVVvQWpSQkFEc0JNQ0FGS0FJMFFRQTdBVElnQlNnQ05DSUFJQUFwQXdCQzdBR0VOd01BQ3lBRlFnQTNBNmdCREFZTElBVWdCU2dDaUFGQkNHb2dCU2dDbkFFZ0JTa0RrQUVRUWpjRHFBRU1CUXNnQlNnQ2lBRVFGU0FGUWdBM0E2Z0JEQVFMSXdCQkVHc2lBQ0FGS0FLa0FUWUNEQ0FGSUFBb0Fnd3BBeGczQXlnZ0JTa0RLRUlBVXdSQUlBVW9Bb2dCUVFocUlBVW9BcVFCRUJnZ0JVSi9Od09vQVF3RUN5QUZLUU1vSVFNZ0JVRi9OZ0lZSUFWQkVEWUNGQ0FGUVE4MkFoQWdCVUVOTmdJTUlBVkJERFlDQ0NBRlFRbzJBZ1FnQlVFSk5nSUFJQVZCQ0NBRkVEUkNmNFVnQTRNM0E2Z0JEQU1MSUFVQ2Z5QUZLUU9RQVVJUVZBUkFJQVVvQW9nQlFRaHFRUkpCQUJBVVFRQU1BUXNnQlNnQ25BRUxOZ0ljSUFVb0FoeEZCRUFnQlVKL053T29BUXdEQ3dKQUlBVW9BcVFCSUFVb0Fod3BBd0FnQlNnQ0hDZ0NDQkFvUVFCT0JFQWdCU0FGS0FLa0FSQkpJZ00zQXlBZ0EwSUFXUTBCQ3lBRktBS0lBVUVJYWlBRktBS2tBUkFZSUFWQ2Z6Y0RxQUVNQXdzZ0JTZ0NpQUVnQlNrRElEY0RJQ0FGUWdBM0E2Z0JEQUlMSUFVZ0JTZ0NpQUVwQXlBM0E2Z0JEQUVMSUFVb0FvZ0JRUWhxUVJ4QkFCQVVJQVZDZnpjRHFBRUxJQVVwQTZnQklRTWdCVUd3QVdva0FDQURDNXdNQVFGL0l3QkJNR3NpQlNRQUlBVWdBRFlDSkNBRklBRTJBaUFnQlNBQ05nSWNJQVVnQXpjREVDQUZJQVEyQWd3Z0JTQUZLQUlnTmdJSUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQWdCU2dDREE0UkFBRUNBd1VHQ0FnSUNBZ0lDQWdIQ0FRSUN5QUZLQUlJUWdBM0F4Z2dCU2dDQ0VFQU9nQU1JQVVvQWdoQkFEb0FEU0FGS0FJSVFRQTZBQThnQlNnQ0NFSi9Od01nSUFVb0FnZ29BcXhBSUFVb0FnZ29BcWhBS0FJTUVRRUFRUUZ4UlFSQUlBVkNmemNES0F3SkN5QUZRZ0EzQXlnTUNBc2dCU2dDSkNFQklBVW9BZ2doQWlBRktBSWNJUVFnQlNrREVDRURJd0JCUUdvaUFDUUFJQUFnQVRZQ05DQUFJQUkyQWpBZ0FDQUVOZ0lzSUFBZ0F6Y0RJQUpBQW44akFFRVFheUlCSUFBb0FqQTJBZ3dnQVNnQ0RDZ0NBQXNFUUNBQVFuODNBemdNQVFzQ1FDQUFLUU1nVUVVRVFDQUFLQUl3TFFBTlFRRnhSUTBCQ3lBQVFnQTNBemdNQVFzZ0FFSUFOd01JSUFCQkFEb0FHd05BSUFBdEFCdEJBWEVFZjBFQUJTQUFLUU1JSUFBcEF5QlVDMEVCY1FSQUlBQWdBQ2tESUNBQUtRTUlmVGNEQUNBQUlBQW9BakFvQXF4QUlBQW9BaXdnQUNrRENLZHFJQUFnQUNnQ01DZ0NxRUFvQWh3UkFBQTJBaHdnQUNnQ0hFRUNSd1JBSUFBZ0FDa0RBQ0FBS1FNSWZEY0RDQXNDUUFKQUFrQUNRQ0FBS0FJY1FRRnJEZ01BQWdFREN5QUFLQUl3UVFFNkFBMENRQ0FBS0FJd0xRQU1RUUZ4RFFBTElBQW9BakFwQXlCQ0FGTUVRQ0FBS0FJd1FSUkJBQkFVSUFCQkFUb0FHd3dEQ3dKQUlBQW9BakF0QUE1QkFYRkZEUUFnQUNnQ01Da0RJQ0FBS1FNSVZnMEFJQUFvQWpCQkFUb0FEeUFBS0FJd0lBQW9BakFwQXlBM0F4Z2dBQ2dDTENBQUtBSXdRU2hxSUFBb0FqQXBBeGluRUJjYUlBQWdBQ2dDTUNrREdEY0RPQXdHQ3lBQVFRRTZBQnNNQWdzZ0FDZ0NNQzBBREVFQmNRUkFJQUJCQVRvQUd3d0NDeUFBSUFBb0FqUWdBQ2dDTUVFb2FrS0F3QUFRS3lJRE53TVFJQU5DQUZNRVFDQUFLQUl3SUFBb0FqUVFHQ0FBUVFFNkFCc01BZ3NDUUNBQUtRTVFVQVJBSUFBb0FqQkJBVG9BRENBQUtBSXdLQUtzUUNBQUtBSXdLQUtvUUNnQ0dCRURBQ0FBS0FJd0tRTWdRZ0JUQkVBZ0FDZ0NNRUlBTndNZ0N3d0JDd0pBSUFBb0FqQXBBeUJDQUZrRVFDQUFLQUl3UVFBNkFBNE1BUXNnQUNnQ01DQUFLUU1RTndNZ0N5QUFLQUl3S0FLc1FDQUFLQUl3UVNocUlBQXBBeEFnQUNnQ01DZ0NxRUFvQWhRUkJBQWFDd3dCQ3dKL0l3QkJFR3NpQVNBQUtBSXdOZ0lNSUFFb0Fnd29BZ0JGQ3dSQUlBQW9BakJCRkVFQUVCUUxJQUJCQVRvQUd3c01BUXNMSUFBcEF3aENBRklFUUNBQUtBSXdRUUE2QUE0Z0FDZ0NNQ0lCSUFBcEF3Z2dBU2tER0h3M0F4Z2dBQ0FBS1FNSU53TTREQUVMSUFCQmYwRUFBbjhqQUVFUWF5SUJJQUFvQWpBMkFnd2dBU2dDRENnQ0FBc2JyRGNET0FzZ0FDa0RPQ0VESUFCQlFHc2tBQ0FGSUFNM0F5Z01Cd3NnQlNnQ0NDZ0NyRUFnQlNnQ0NDZ0NxRUFvQWhBUkFRQkJBWEZGQkVBZ0JVSi9Od01vREFjTElBVkNBRGNES0F3R0N5QUZJQVVvQWh3MkFnUUNRQ0FGS0FJSUxRQVFRUUZ4QkVBZ0JTZ0NDQzBBRFVFQmNRUkFJQVVvQWdRZ0JTZ0NDQzBBRDBFQmNRUi9RUUFGQW44Q1FDQUZLQUlJS0FJVVFYOUhCRUFnQlNnQ0NDZ0NGRUYrUncwQkMwRUlEQUVMSUFVb0FnZ29BaFFMUWYvL0EzRUxPd0V3SUFVb0FnUWdCU2dDQ0NrREdEY0RJQ0FGS0FJRUlnQWdBQ2tEQUVMSUFJUTNBd0FNQWdzZ0JTZ0NCQ0lBSUFBcEF3QkN0Ly8vL3crRE53TUFEQUVMSUFVb0FnUkJBRHNCTUNBRktBSUVJZ0FnQUNrREFFTEFBSVEzQXdBQ1FDQUZLQUlJTFFBTlFRRnhCRUFnQlNnQ0JDQUZLQUlJS1FNWU53TVlJQVVvQWdRaUFDQUFLUU1BUWdTRU53TUFEQUVMSUFVb0FnUWlBQ0FBS1FNQVF2di8vLzhQZ3pjREFBc0xJQVZDQURjREtBd0ZDeUFGSUFVb0FnZ3RBQTlCQVhFRWYwRUFCU0FGS0FJSUtBS3NRQ0FGS0FJSUtBS29RQ2dDQ0JFQkFBdXNOd01vREFRTElBVWdCU2dDQ0NBRktBSWNJQVVwQXhBUVFqY0RLQXdEQ3lBRktBSUlFTEVCSUFWQ0FEY0RLQXdDQ3lBRlFYODJBZ0FnQlVFUUlBVVFORUkvaERjREtBd0JDeUFGS0FJSVFSUkJBQkFVSUFWQ2Z6Y0RLQXNnQlNrREtDRURJQVZCTUdva0FDQURDendCQVg4akFFRVFheUlESkFBZ0F5QUFPd0VPSUFNZ0FUWUNDQ0FESUFJMkFnUkJBQ0FES0FJSUlBTW9BZ1FRdFFFaEFDQURRUkJxSkFBZ0FBdUJpUUVDSW44QmZpTUFRU0JySWc4a0FDQVBJQUEyQWhnZ0R5QUJOZ0lVSUE4Z0FqWUNFQ0FQSUE4b0FoZzJBZ3dnRHlnQ0RDQVBLQUlRS1FNQVF2Ly8vLzhQVmdSK1F2Ly8vLzhQQlNBUEtBSVFLUU1BQ3o0Q0lDQVBLQUlNSUE4b0FoUTJBaHdDUUNBUEtBSU1MUUFFUVFGeEJFQWdEd0ovUVFSQkFDQVBLQUlNTFFBTVFRRnhHeUVLUVFBaEFrRitJUUVDUUFKQUFrQWdEeWdDREVFUWFpSUxSUTBBSUFzb0FpQkZEUUFnQ3lnQ0pFVU5BQ0FMS0FJY0lnTkZEUUFnQXlnQ0FDQUxSdzBBQWtBQ1FDQURLQUlnSWdSQk9Xc09PUUVDQWdJQ0FnSUNBZ0lDQWdFQ0FnSUJBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUJBZ0lDQWdJQ0FnSUNBZ0lCQWdJQ0FnSUNBZ0lDQVFBTElBUkJtZ1ZHRFFBZ0JFRXFSdzBCQ3lBS1FRVkxEUUFDUUFKQUlBc29BZ3hGRFFBZ0N5Z0NCQ0lBQkVBZ0N5Z0NBRVVOQVFzZ0JFR2FCVWNOQVNBS1FRUkdEUUVMSUF0QjhQRUFLQUlBTmdJWVFYNE1CQXNnQ3lnQ0VFVU5BU0FES0FJa0lRRWdBeUFLTmdJa0FrQWdBeWdDRUFSQUlBTVFKd0pBSUFzb0FoQWlCQ0FES0FJUUlnSWdBaUFFU3hzaUFFVU5BQ0FMS0FJTUlBTW9BZ2dnQUJBWEdpQUxJQXNvQWd3Z0FHbzJBZ3dnQXlBREtBSUlJQUJxTmdJSUlBc2dDeWdDRkNBQWFqWUNGQ0FMSUFzb0FoQWdBR3NpQkRZQ0VDQURJQU1vQWhBZ0FHc2lBallDRUNBQ0RRQWdBeUFES0FJRU5nSUlRUUFoQWdzZ0JBUkFJQU1vQWlBaEJBd0NDd3dFQ3lBQURRQWdDa0VCZEVGM1FRQWdDa0VFU2h0cUlBRkJBWFJCZDBFQUlBRkJCRW9iYWtvTkFDQUtRUVJHRFFBTUFnc0NRQUpBQWtBQ1FBSkFJQVJCS2tjRVFDQUVRWm9GUncwQklBc29BZ1JGRFFNTUJ3c2dBeWdDRkVVRVFDQURRZkVBTmdJZ0RBSUxJQU1vQWpSQkRIUkJnUEFCYXlFQkFrQWdBeWdDZkVFQ1RnMEFJQU1vQW5naUFFRUJUQTBBSUFCQkJVd0VRQ0FCUWNBQWNpRUJEQUVMUVlBQlFjQUJJQUJCQmtZYklBRnlJUUVMSUFNZ0FrRUJhallDRUNBREtBSUVJQUpxSUFGQklISWdBU0FES0FKa0d5SUJRUWgyT2dBQUlBTWdBeWdDRUNJQVFRRnFOZ0lRSUFBZ0F5Z0NCR29nQVVFZmNDQUJja0VmY3pvQUFDQURLQUprQkVBZ0F5QUxLQUl3RU13QkN5QUxRUUUyQWpBZ0EwSHhBRFlDSUNBTEVCNGdBeWdDRUEwSElBTW9BaUFoQkFzQ1FBSkFBa0FDUUNBRVFUbEdCSDhnQXlnQ0FFRUFOZ0l3SUFNZ0F5Z0NFQ0lBUVFGcU5nSVFJQUFnQXlnQ0JHcEJIem9BQUNBRElBTW9BaEFpQUVFQmFqWUNFQ0FBSUFNb0FnUnFRWXNCT2dBQUlBTWdBeWdDRUNJQVFRRnFOZ0lRSUFBZ0F5Z0NCR3BCQ0RvQUFBSkFJQU1vQWh3aUFFVUVRQ0FEUVFBUVhDQURJQU1vQWhBaUFFRUJhallDRUNBQUlBTW9BZ1JxUVFBNkFBQkJBaUVCSUFNb0FuZ2lBRUVKUndSQVFRUWdBRUVDU0VFQ2RDQURLQUo4UVFGS0d5RUJDeUFESUFNb0FoQWlBRUVCYWpZQ0VDQUFJQU1vQWdScUlBRTZBQUFnQXlBREtBSVFJZ0JCQVdvMkFoQWdBQ0FES0FJRWFrRURPZ0FBSUFOQjhRQTJBaUFnQ3hBZUlBTW9BaEJGRFFFTURRc2dBQ2dDSkNFSUlBQW9BaHdoQmlBQUtBSVFJUXdnQUNnQ0xDRUVJQUFvQWdBaEFpQURJQU1vQWhBaUFFRUJhallDRUVFQ0lRRWdBQ0FES0FJRWFpQUVRUUJIUVFGMElBSkJBRWR5SUF4QkFFZEJBblJ5SUFaQkFFZEJBM1J5SUFoQkFFZEJCSFJ5T2dBQUlBTWdBeWdDSENnQ0JCQmNJQU1vQW5naUFFRUpSd1JBUVFRZ0FFRUNTRUVDZENBREtBSjhRUUZLR3lFQkN5QURJQU1vQWhBaUFFRUJhallDRUNBQUlBTW9BZ1JxSUFFNkFBQWdBeWdDSENnQ0RDRUJJQU1nQXlnQ0VDSUFRUUZxTmdJUUlBQWdBeWdDQkdvZ0FUb0FBQ0FES0FJY0lnQW9BaEFFZnlBQUtBSVVJUUVnQXlBREtBSVFJZ0JCQVdvMkFoQWdBQ0FES0FJRWFpQUJPZ0FBSUFNZ0F5Z0NFQ0lBUVFGcU5nSVFJQUFnQXlnQ0JHb2dBVUVJZGpvQUFDQURLQUljQlNBQUN5Z0NMQVJBSUFzQ2Z5QUxLQUl3SVFJZ0F5Z0NFQ0VCUVFBZ0F5Z0NCQ0lBUlEwQUdpQUNJQUFnQWExQnJKa0JLQUlBRVFRQUN6WUNNQXNnQTBIRkFEWUNJQ0FEUVFBMkFoZ01BZ3NnQXlnQ0lBVWdCQXRCeFFCckRpTUFCQVFFQVFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQWdRRUJBUUVCQVFFQkFRRUF3UUxJQU1vQWh3aUFDZ0NFQ0lFQkVBZ0F5Z0NEQ0lDSUFNb0FoQWlBU0FBTHdFVUlBTW9BaGdpQjJzaUJtcEpCRUFEUUNBREtBSUVJQUZxSUFRZ0Iyb2dBaUFCYXlJTUVCY2FJQU1nQXlnQ0RDSUVOZ0lRQWtBZ0F5Z0NIQ2dDTEVVTkFDQUJJQVJQRFFBZ0N3Si9JQXNvQWpBaEFrRUFJQU1vQWdRZ0FXb2lBRVVOQUJvZ0FpQUFJQVFnQVd1dFFheVpBU2dDQUJFRUFBczJBakFMSUFNZ0F5Z0NHQ0FNYWpZQ0dDQUxLQUljSWdJUUp3SkFJQXNvQWhBaUFTQUNLQUlRSWdBZ0FDQUJTeHNpQUVVTkFDQUxLQUlNSUFJb0FnZ2dBQkFYR2lBTElBc29BZ3dnQUdvMkFnd2dBaUFDS0FJSUlBQnFOZ0lJSUFzZ0N5Z0NGQ0FBYWpZQ0ZDQUxJQXNvQWhBZ0FHczJBaEFnQWlBQ0tBSVFJQUJySWdBMkFoQWdBQTBBSUFJZ0FpZ0NCRFlDQ0FzZ0F5Z0NFQTBNSUFNb0FoZ2hCeUFES0FJY0tBSVFJUVJCQUNFQklBWWdER3NpQmlBREtBSU1JZ0pMRFFBTEN5QURLQUlFSUFGcUlBUWdCMm9nQmhBWEdpQURJQU1vQWhBZ0Jtb2lCRFlDRUFKQUlBTW9BaHdvQWl4RkRRQWdBU0FFVHcwQUlBc0NmeUFMS0FJd0lRSkJBQ0FES0FJRUlBRnFJZ0JGRFFBYUlBSWdBQ0FFSUFGcnJVR3NtUUVvQWdBUkJBQUxOZ0l3Q3lBRFFRQTJBaGdMSUFOQnlRQTJBaUFMSUFNb0Fod29BaHdFUUNBREtBSVFJZ0VoQmdOQUFrQWdBU0FES0FJTVJ3MEFBa0FnQXlnQ0hDZ0NMRVVOQUNBQklBWk5EUUFnQ3dKL0lBc29BakFoQWtFQUlBTW9BZ1FnQm1vaUFFVU5BQm9nQWlBQUlBRWdCbXV0UWF5WkFTZ0NBQkVFQUFzMkFqQUxJQXNvQWh3aUFoQW5Ba0FnQ3lnQ0VDSUJJQUlvQWhBaUFDQUFJQUZMR3lJQVJRMEFJQXNvQWd3Z0FpZ0NDQ0FBRUJjYUlBc2dDeWdDRENBQWFqWUNEQ0FDSUFJb0FnZ2dBR28yQWdnZ0N5QUxLQUlVSUFCcU5nSVVJQXNnQ3lnQ0VDQUFhellDRUNBQ0lBSW9BaEFnQUdzaUFEWUNFQ0FBRFFBZ0FpQUNLQUlFTmdJSUMwRUFJUUZCQUNFR0lBTW9BaEJGRFFBTUN3c2dBeWdDSENnQ0hDRUNJQU1nQXlnQ0dDSUFRUUZxTmdJWUlBQWdBbW90QUFBaEFDQURJQUZCQVdvMkFoQWdBeWdDQkNBQmFpQUFPZ0FBSUFBRVFDQURLQUlRSVFFTUFRc0xBa0FnQXlnQ0hDZ0NMRVVOQUNBREtBSVFJZ0lnQmswTkFDQUxBbjhnQ3lnQ01DRUJRUUFnQXlnQ0JDQUdhaUlBUlEwQUdpQUJJQUFnQWlBR2E2MUJySmtCS0FJQUVRUUFDellDTUFzZ0EwRUFOZ0lZQ3lBRFFkc0FOZ0lnQ3dKQUlBTW9BaHdvQWlSRkRRQWdBeWdDRUNJQklRWURRQUpBSUFFZ0F5Z0NERWNOQUFKQUlBTW9BaHdvQWl4RkRRQWdBU0FHVFEwQUlBc0NmeUFMS0FJd0lRSkJBQ0FES0FJRUlBWnFJZ0JGRFFBYUlBSWdBQ0FCSUFacnJVR3NtUUVvQWdBUkJBQUxOZ0l3Q3lBTEtBSWNJZ0lRSndKQUlBc29BaEFpQVNBQ0tBSVFJZ0FnQUNBQlN4c2lBRVVOQUNBTEtBSU1JQUlvQWdnZ0FCQVhHaUFMSUFzb0Fnd2dBR28yQWd3Z0FpQUNLQUlJSUFCcU5nSUlJQXNnQ3lnQ0ZDQUFhallDRkNBTElBc29BaEFnQUdzMkFoQWdBaUFDS0FJUUlBQnJJZ0EyQWhBZ0FBMEFJQUlnQWlnQ0JEWUNDQXRCQUNFQlFRQWhCaUFES0FJUVJRMEFEQW9MSUFNb0Fod29BaVFoQWlBRElBTW9BaGdpQUVFQmFqWUNHQ0FBSUFKcUxRQUFJUUFnQXlBQlFRRnFOZ0lRSUFNb0FnUWdBV29nQURvQUFDQUFCRUFnQXlnQ0VDRUJEQUVMQ3lBREtBSWNLQUlzUlEwQUlBTW9BaEFpQWlBR1RRMEFJQXNDZnlBTEtBSXdJUUZCQUNBREtBSUVJQVpxSWdCRkRRQWFJQUVnQUNBQ0lBWnJyVUdzbVFFb0FnQVJCQUFMTmdJd0N5QURRZWNBTmdJZ0N3SkFJQU1vQWh3b0Fpd0VRQ0FES0FJTUlBTW9BaEFpQVVFQ2Fra0VRQ0FMRUI0Z0F5Z0NFQTBDUVFBaEFRc2dDeWdDTUNFQ0lBTWdBVUVCYWpZQ0VDQURLQUlFSUFGcUlBSTZBQUFnQXlBREtBSVFJZ0JCQVdvMkFoQWdBQ0FES0FJRWFpQUNRUWgyT2dBQUlBTW9BZ0JCQURZQ01Bc2dBMEh4QURZQ0lDQUxFQjRnQXlnQ0VFVU5BUXdIQ3d3R0N5QUxLQUlFRFFFTElBTW9BandOQUNBS1JRMEJJQU1vQWlCQm1nVkdEUUVMQW44Z0F5Z0NlQ0lBUlFSQUlBTWdDaERMQVF3QkN3SkFBa0FDUUNBREtBSjhRUUpyRGdJQUFRSUxBbjhDUUFOQUFrQWdBeWdDUEEwQUlBTVFSU0FES0FJOERRQWdDZzBDUVFBTUF3c2dBeWdDU0NBREtBSmthaTBBQUNFQklBTWdBeWdDbEMwaUFFRUJhallDbEMwZ0FDQURLQUtRTFdwQkFEb0FBQ0FESUFNb0FwUXRJZ0JCQVdvMkFwUXRJQUFnQXlnQ2tDMXFRUUE2QUFBZ0F5QURLQUtVTFNJQVFRRnFOZ0tVTFNBQUlBTW9BcEF0YWlBQk9nQUFJQU1nQVVFQ2RHb2lBQ0FBTHdHSUFVRUJhanNCaUFFZ0F5QURLQUk4UVFGck5nSThJQU1nQXlnQ1pFRUJhaUlBTmdKa0lBTW9BcFF0SUFNb0FwZ3RSdzBBSUFNZ0F5Z0NWQ0lCUVFCT0JIOGdBeWdDU0NBQmFnVkJBQXNnQUNBQmEwRUFFQ1lnQXlBREtBSmtOZ0pVSUFNb0FnQWlCQ2dDSENJQ0VDY0NRQ0FFS0FJUUlnRWdBaWdDRUNJQUlBQWdBVXNiSWdCRkRRQWdCQ2dDRENBQ0tBSUlJQUFRRnhvZ0JDQUVLQUlNSUFCcU5nSU1JQUlnQWlnQ0NDQUFhallDQ0NBRUlBUW9BaFFnQUdvMkFoUWdCQ0FFS0FJUUlBQnJOZ0lRSUFJZ0FpZ0NFQ0FBYXlJQU5nSVFJQUFOQUNBQ0lBSW9BZ1EyQWdnTElBTW9BZ0FvQWhBTkFBdEJBQXdCQ3lBRFFRQTJBcWd0SUFwQkJFWUVRQ0FESUFNb0FsUWlBRUVBVGdSL0lBTW9Ba2dnQUdvRlFRQUxJQU1vQW1RZ0FHdEJBUkFtSUFNZ0F5Z0NaRFlDVkNBREtBSUFJZ1FvQWh3aUFoQW5Ba0FnQkNnQ0VDSUJJQUlvQWhBaUFDQUFJQUZMR3lJQVJRMEFJQVFvQWd3Z0FpZ0NDQ0FBRUJjYUlBUWdCQ2dDRENBQWFqWUNEQ0FDSUFJb0FnZ2dBR28yQWdnZ0JDQUVLQUlVSUFCcU5nSVVJQVFnQkNnQ0VDQUFhellDRUNBQ0lBSW9BaEFnQUdzaUFEWUNFQ0FBRFFBZ0FpQUNLQUlFTmdJSUMwRURRUUlnQXlnQ0FDZ0NFQnNNQVFzQ1FDQURLQUtVTFVVTkFDQURJQU1vQWxRaUFFRUFUZ1IvSUFNb0FrZ2dBR29GUVFBTElBTW9BbVFnQUd0QkFCQW1JQU1nQXlnQ1pEWUNWQ0FES0FJQUlnUW9BaHdpQWhBbkFrQWdCQ2dDRUNJQklBSW9BaEFpQUNBQUlBRkxHeUlBUlEwQUlBUW9BZ3dnQWlnQ0NDQUFFQmNhSUFRZ0JDZ0NEQ0FBYWpZQ0RDQUNJQUlvQWdnZ0FHbzJBZ2dnQkNBRUtBSVVJQUJxTmdJVUlBUWdCQ2dDRUNBQWF6WUNFQ0FDSUFJb0FoQWdBR3NpQURZQ0VDQUFEUUFnQWlBQ0tBSUVOZ0lJQ3lBREtBSUFLQUlRRFFCQkFBd0JDMEVCQ3d3Q0N3Si9Ba0FEUUFKQUFrQUNRQUpBSUFNb0Fqd2lCa0dDQWtzTkFDQURFRVVDUUNBREtBSThJZ1pCZ2dKTERRQWdDZzBBUVFBTUJ3c2dCa1VOQlNBR1FRSkxEUUFnQXlnQ1pDRUlEQUVMSUFNb0FtUWlDRVVFUUVFQUlRZ01BUXNnQXlnQ1NDQUlhaUlNUVFGcklnQXRBQUFpQ1NBTUxRQUFSdzBBSUFrZ0FDMEFBa2NOQUNBSklBQXRBQU5IRFFBZ0RFR0NBbW9oQkVGL0lRRUNRQUpBQWtBQ1FBSkFBa0FEUUNBQklBeHFJZ0l0QUFRZ0NVWUVRQ0FKSUFJdEFBVkhEUUlnQ1NBQ0xRQUdSdzBESUFrZ0FpMEFCMGNOQkNBSklBd2dBVUVJYWlJQWFpSUhMUUFBUncwSElBa2dBaTBBQ1VjTkJTQUpJQUl0QUFwSERRWWdDU0FDUVF0cUlnY3RBQUJIRFFjZ0FVSDNBVWdoQWlBQUlRRWdBZzBCREFjTEN5QUNRUVJxSVFjTUJRc2dBa0VGYWlFSERBUUxJQUpCQm1vaEJ3d0RDeUFDUVFkcUlRY01BZ3NnQWtFSmFpRUhEQUVMSUFKQkNtb2hCd3NnQmlBSElBUnJRWUlDYWlJQUlBQWdCa3NiSWdGQkFrc05BUXNnQXlnQ1NDQUlhaTBBQUNFQklBTWdBeWdDbEMwaUFFRUJhallDbEMwZ0FDQURLQUtRTFdwQkFEb0FBQ0FESUFNb0FwUXRJZ0JCQVdvMkFwUXRJQUFnQXlnQ2tDMXFRUUE2QUFBZ0F5QURLQUtVTFNJQVFRRnFOZ0tVTFNBQUlBTW9BcEF0YWlBQk9nQUFJQU1nQVVFQ2RHb2lBQ0FBTHdHSUFVRUJhanNCaUFFZ0F5QURLQUk4UVFGck5nSThJQU1nQXlnQ1pFRUJhaUlJTmdKa0RBRUxJQU1nQXlnQ2xDMGlBRUVCYWpZQ2xDMGdBQ0FES0FLUUxXcEJBVG9BQUNBRElBTW9BcFF0SWdCQkFXbzJBcFF0SUFBZ0F5Z0NrQzFxUVFBNkFBQWdBeUFES0FLVUxTSUFRUUZxTmdLVUxTQUFJQU1vQXBBdGFpQUJRUU5yT2dBQUlBTWdBeWdDcEMxQkFXbzJBcVF0SUFGQnJlb0FhaTBBQUVFQ2RDQURha0dNQ1dvaUFDQUFMd0VBUVFGcU93RUFJQU5Cc09ZQUxRQUFRUUowYWtIOEVtb2lBQ0FBTHdFQVFRRnFPd0VBSUFNZ0F5Z0NQQ0FCYXpZQ1BDQURJQU1vQW1RZ0FXb2lDRFlDWkFzZ0F5Z0NsQzBnQXlnQ21DMUhEUUFnQXlBREtBSlVJZ0JCQUU0RWZ5QURLQUpJSUFCcUJVRUFDeUFJSUFCclFRQVFKaUFESUFNb0FtUTJBbFFnQXlnQ0FDSUVLQUljSWdJUUp3SkFJQVFvQWhBaUFTQUNLQUlRSWdBZ0FDQUJTeHNpQUVVTkFDQUVLQUlNSUFJb0FnZ2dBQkFYR2lBRUlBUW9BZ3dnQUdvMkFnd2dBaUFDS0FJSUlBQnFOZ0lJSUFRZ0JDZ0NGQ0FBYWpZQ0ZDQUVJQVFvQWhBZ0FHczJBaEFnQWlBQ0tBSVFJQUJySWdBMkFoQWdBQTBBSUFJZ0FpZ0NCRFlDQ0FzZ0F5Z0NBQ2dDRUEwQUMwRUFEQUVMSUFOQkFEWUNxQzBnQ2tFRVJnUkFJQU1nQXlnQ1ZDSUFRUUJPQkg4Z0F5Z0NTQ0FBYWdWQkFBc2dBeWdDWkNBQWEwRUJFQ1lnQXlBREtBSmtOZ0pVSUFNb0FnQWlCQ2dDSENJQ0VDY0NRQ0FFS0FJUUlnRWdBaWdDRUNJQUlBQWdBVXNiSWdCRkRRQWdCQ2dDRENBQ0tBSUlJQUFRRnhvZ0JDQUVLQUlNSUFCcU5nSU1JQUlnQWlnQ0NDQUFhallDQ0NBRUlBUW9BaFFnQUdvMkFoUWdCQ0FFS0FJUUlBQnJOZ0lRSUFJZ0FpZ0NFQ0FBYXlJQU5nSVFJQUFOQUNBQ0lBSW9BZ1EyQWdnTFFRTkJBaUFES0FJQUtBSVFHd3dCQ3dKQUlBTW9BcFF0UlEwQUlBTWdBeWdDVkNJQVFRQk9CSDhnQXlnQ1NDQUFhZ1ZCQUFzZ0F5Z0NaQ0FBYTBFQUVDWWdBeUFES0FKa05nSlVJQU1vQWdBaUJDZ0NIQ0lDRUNjQ1FDQUVLQUlRSWdFZ0FpZ0NFQ0lBSUFBZ0FVc2JJZ0JGRFFBZ0JDZ0NEQ0FDS0FJSUlBQVFGeG9nQkNBRUtBSU1JQUJxTmdJTUlBSWdBaWdDQ0NBQWFqWUNDQ0FFSUFRb0FoUWdBR28yQWhRZ0JDQUVLQUlRSUFCck5nSVFJQUlnQWlnQ0VDQUFheUlBTmdJUUlBQU5BQ0FDSUFJb0FnUTJBZ2dMSUFNb0FnQW9BaEFOQUVFQURBRUxRUUVMREFFTElBTWdDaUFBUVF4c1FiamJBR29vQWdBUkFnQUxJZ0JCZm5GQkFrWUVRQ0FEUVpvRk5nSWdDeUFBUVgxeFJRUkFRUUFoQVNBTEtBSVFEUUlNQkFzZ0FFRUJSdzBBQWtBQ1FBSkFJQXBCQVdzT0JRQUJBUUVDQVFzZ0F5a0R1QzBoSlFKL0FuNGdBeWdDd0MwaUFVRURhaUlHUVQ5TkJFQkNBaUFCcllZZ0pZUU1BUXNnQVVIQUFFWUVRQ0FESUFNb0FoQWlBRUVCYWpZQ0VDQUFJQU1vQWdScUlDVThBQUFnQXlBREtBSVFJZ0JCQVdvMkFoQWdBQ0FES0FJRWFpQWxRZ2lJUEFBQUlBTWdBeWdDRUNJQVFRRnFOZ0lRSUFBZ0F5Z0NCR29nSlVJUWlEd0FBQ0FESUFNb0FoQWlBRUVCYWpZQ0VDQUFJQU1vQWdScUlDVkNHSWc4QUFBZ0F5QURLQUlRSWdCQkFXbzJBaEFnQUNBREtBSUVhaUFsUWlDSVBBQUFJQU1nQXlnQ0VDSUFRUUZxTmdJUUlBQWdBeWdDQkdvZ0pVSW9pRHdBQUNBRElBTW9BaEFpQUVFQmFqWUNFQ0FBSUFNb0FnUnFJQ1ZDTUlnOEFBQWdBeUFES0FJUUlnQkJBV28yQWhBZ0FDQURLQUlFYWlBbFFqaUlQQUFBUWdJaEpTQURRZ0kzQTdndElBTkJBellDd0MxQkNnd0NDeUFESUFNb0FoQWlBRUVCYWpZQ0VDQUFJQU1vQWdScVFnSWdBYTJHSUNXRUlpVThBQUFnQXlBREtBSVFJZ0JCQVdvMkFoQWdBQ0FES0FJRWFpQWxRZ2lJUEFBQUlBTWdBeWdDRUNJQVFRRnFOZ0lRSUFBZ0F5Z0NCR29nSlVJUWlEd0FBQ0FESUFNb0FoQWlBRUVCYWpZQ0VDQUFJQU1vQWdScUlDVkNHSWc4QUFBZ0F5QURLQUlRSWdCQkFXbzJBaEFnQUNBREtBSUVhaUFsUWlDSVBBQUFJQU1nQXlnQ0VDSUFRUUZxTmdJUUlBQWdBeWdDQkdvZ0pVSW9pRHdBQUNBRElBTW9BaEFpQUVFQmFqWUNFQ0FBSUFNb0FnUnFJQ1ZDTUlnOEFBQWdBeUFES0FJUUlnQkJBV28yQWhBZ0FDQURLQUlFYWlBbFFqaUlQQUFBSUFGQlBXc2hCa0lDUWNBQUlBRnJyWWdMSVNVZ0JrRUhhaUFHUVRsSkRRQWFJQU1nQXlnQ0VDSUFRUUZxTmdJUUlBQWdBeWdDQkdvZ0pUd0FBQ0FESUFNb0FoQWlBRUVCYWpZQ0VDQUFJQU1vQWdScUlDVkNDSWc4QUFBZ0F5QURLQUlRSWdCQkFXbzJBaEFnQUNBREtBSUVhaUFsUWhDSVBBQUFJQU1nQXlnQ0VDSUFRUUZxTmdJUUlBQWdBeWdDQkdvZ0pVSVlpRHdBQUNBRElBTW9BaEFpQUVFQmFqWUNFQ0FBSUFNb0FnUnFJQ1ZDSUlnOEFBQWdBeUFES0FJUUlnQkJBV28yQWhBZ0FDQURLQUlFYWlBbFFpaUlQQUFBSUFNZ0F5Z0NFQ0lBUVFGcU5nSVFJQUFnQXlnQ0JHb2dKVUl3aUR3QUFDQURJQU1vQWhBaUFFRUJhallDRUNBQUlBTW9BZ1JxSUNWQ09JZzhBQUJDQUNFbElBWkJPV3NMSVFBZ0F5QWxOd080TFNBRElBQTJBc0F0SUFNUUp3d0JDeUFEUVFCQkFFRUFFRnNnQ2tFRFJ3MEFJQU1vQWxCQkFFR0FnQWdRTHlBREtBSThEUUFnQTBFQU5nS29MU0FEUVFBMkFsUWdBMEVBTmdKa0N5QUxFQjRnQ3lnQ0VBMEFEQU1MUVFBaEFTQUtRUVJIRFFBQ1FBSkFBa0FnQXlnQ0ZFRUJhdzRDQVFBQ0N5QURJQXNvQWpBUVhDQURJQXNvQWdnUVhBd0JDeUFESUFzb0FqQVF6QUVMSUFzUUhpQURLQUlVSWdCQkFVNEVRQ0FEUVFBZ0FHczJBaFFMSUFNb0FoQkZJUUVMSUFFTUFnc2dDMEg4OFFBb0FnQTJBaGhCZXd3QkN5QURRWDgyQWlSQkFBczJBZ2dNQVFzZ0R5Z0NERUVRYWlFTkl3QkJFR3NpRlNRQVFYNGhHZ0pBSUExRkRRQWdEU2dDSUVVTkFDQU5LQUlrUlEwQUlBMG9BaHdpQlVVTkFDQUZLQUlBSUExSERRQWdCU2dDQkNJR1FiVCtBR3RCSDBzTkFDQU5LQUlNSWhGRkRRQWdEU2dDQUNJQVJRUkFJQTBvQWdRTkFRc2dCa0cvL2dCR0JFQWdCVUhBL2dBMkFnUkJ3UDRBSVFZTElBVkIzQUJxSVNNZ0JVSDBCV29oSENBRlFmUUFhaUVmSUFWQjJBQnFJU0FnQlVId0FHb2hIU0FGUWJRS2FpRWJJQVVvQWtBaEFpQU5LQUlFSWlRaEJDQUZLQUk4SVFjZ0RTZ0NFQ0lESVFzQ1FBSkFBMEFDUUVGOUlRRkJBU0VJQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQWdCa0cwL2dCckRoOEhCZ2dKQ2lVbUp5Z0ZMQzB0Q3hrYUJBd0NNak1CTlFBM0RRNERPVWhKU2dzZ0JTZ0NUQ0VLSUFBaEFTQUVJUVlNTlFzZ0JTZ0NUQ0VLSUFBaEFTQUVJUVlNTWdzZ0JTZ0NiQ0VHREM0TElBVW9BZ3doQmd4QkN5QUNRUTVQRFNrZ0JFVU5RU0FDUVFocUlRWWdBRUVCYWlFQklBUkJBV3NoQ0NBQUxRQUFJQUowSUFkcUlRY2dBa0VHU1EwTUlBRWhBQ0FJSVFRZ0JpRUNEQ2tMSUFKQklFOE5KU0FFUlExQUlBQkJBV29oQVNBRVFRRnJJUVlnQUMwQUFDQUNkQ0FIYWlFSElBSkJHRWtORFNBQklRQWdCaUVFRENVTElBSkJFRThORlNBRVJRMC9JQUpCQ0dvaEJpQUFRUUZxSVFFZ0JFRUJheUVJSUFBdEFBQWdBblFnQjJvaEJ5QUNRUWhKRFEwZ0FTRUFJQWdoQkNBR0lRSU1GUXNnQlNnQ0RDSUpSUTBISUFKQkVFOE5JaUFFUlEwK0lBSkJDR29oQmlBQVFRRnFJUUVnQkVFQmF5RUlJQUF0QUFBZ0FuUWdCMm9oQnlBQ1FRaEpEUTBnQVNFQUlBZ2hCQ0FHSVFJTUlnc2dBa0VmU3cwVkRCUUxJQUpCRDBzTkZnd1ZDeUFGS0FJVUlnRkJnQWh4UlFSQUlBSWhCZ3dYQ3lBSElRWWdBa0VQU3cwWURCY0xJQWNnQWtFSGNYWWhCeUFDUVhoeElnSkJIMHNORENBRVJRMDZJQUpCQ0dvaEJpQUFRUUZxSVFFZ0JFRUJheUVJSUFBdEFBQWdBblFnQjJvaEJ5QUNRUmhKRFFZZ0FTRUFJQWdoQkNBR0lRSU1EQXNnQlNnQ2JDSUdJQVVvQW1BaUNVOE5Jd3dpQ3lBRFJRMHFJQkVnQlNnQ1JEb0FBQ0FGUWNqK0FEWUNCQ0FEUVFGcklRTWdFVUVCYWlFUklBVW9BZ1FoQmd3NUN5QUZLQUlNSWdaRkJFQkJBQ0VHREFrTElBSkJIMHNOQnlBRVJRMDNJQUpCQ0dvaENDQUFRUUZxSVFFZ0JFRUJheUVKSUFBdEFBQWdBblFnQjJvaEJ5QUNRUmhKRFFFZ0FTRUFJQWtoQkNBSUlRSU1Cd3NnQlVIQS9nQTJBZ1FNS2dzZ0NVVUVRQ0FCSVFCQkFDRUVJQWdoQWlBTUlRRU1PQXNnQWtFUWFpRUpJQUJCQW1vaEFTQUVRUUpySVFvZ0FDMEFBU0FJZENBSGFpRUhJQUpCRDBzRVFDQUJJUUFnQ2lFRUlBa2hBZ3dHQ3lBS1JRUkFJQUVoQUVFQUlRUWdDU0VDSUF3aEFRdzRDeUFDUVJocUlRZ2dBRUVEYWlFQklBUkJBMnNoQ2lBQUxRQUNJQWwwSUFkcUlRY2dBa0VIU3dSQUlBRWhBQ0FLSVFRZ0NDRUNEQVlMSUFwRkJFQWdBU0VBUVFBaEJDQUlJUUlnRENFQkREZ0xJQUpCSUdvaEFpQUVRUVJySVFRZ0FDMEFBeUFJZENBSGFpRUhJQUJCQkdvaEFBd0ZDeUFJUlFSQUlBRWhBRUVBSVFRZ0JpRUNJQXdoQVF3M0N5QUNRUkJxSVFJZ0JFRUNheUVFSUFBdEFBRWdCblFnQjJvaEJ5QUFRUUpxSVFBTUhBc2dDRVVFUUNBQklRQkJBQ0VFSUFZaEFpQU1JUUVNTmdzZ0FrRVFhaUVJSUFCQkFtb2hBU0FFUVFKcklRa2dBQzBBQVNBR2RDQUhhaUVISUFKQkQwc0VRQ0FCSVFBZ0NTRUVJQWdoQWd3R0N5QUpSUVJBSUFFaEFFRUFJUVFnQ0NFQ0lBd2hBUXcyQ3lBQ1FSaHFJUVlnQUVFRGFpRUJJQVJCQTJzaENTQUFMUUFDSUFoMElBZHFJUWNnQWdSQUlBRWhBQ0FKSVFRZ0JpRUNEQVlMSUFsRkJFQWdBU0VBUVFBaEJDQUdJUUlnRENFQkREWUxJQUpCSUdvaEFpQUVRUVJySVFRZ0FDMEFBeUFHZENBSGFpRUhJQUJCQkdvaEFBd0ZDeUFDUVFocUlRZ2dCa1VFUUNBQklRQkJBQ0VFSUFnaEFpQU1JUUVNTlFzZ0FFRUNhaUVCSUFSQkFtc2hCaUFBTFFBQklBaDBJQWRxSVFjZ0FrRVBTd1JBSUFFaEFDQUdJUVFNR0FzZ0FrRVFhaUVJSUFaRkJFQWdBU0VBUVFBaEJDQUlJUUlnRENFQkREVUxJQUJCQTJvaEFTQUVRUU5ySVFZZ0FDMEFBaUFJZENBSGFpRUhJQUpCQjBzRVFDQUJJUUFnQmlFRURCZ0xJQUpCR0dvaEFpQUdSUVJBSUFFaEFFRUFJUVFnRENFQkREVUxJQVJCQkdzaEJDQUFMUUFESUFKMElBZHFJUWNnQUVFRWFpRUFEQmNMSUFnTkJpQUJJUUJCQUNFRUlBWWhBaUFNSVFFTU13c2dDRVVFUUNBQklRQkJBQ0VFSUFZaEFpQU1JUUVNTXdzZ0FrRVFhaUVDSUFSQkFtc2hCQ0FBTFFBQklBWjBJQWRxSVFjZ0FFRUNhaUVBREJRTElBMGdDeUFEYXlJSklBMG9BaFJxTmdJVUlBVWdCU2dDSUNBSmFqWUNJQUpBSUFaQkJIRWlDRVVOQUNBSlJRMEFJQVVDZnlBRktBSVVCRUFDZnlBRktBSWNJUVpCQUNBUklBbHJJZ0ZGRFFBYUlBWWdBU0FKclVHc21RRW9BZ0FSQkFBTERBRUxJQVVvQWh3Z0VTQUpheUFKUWFpWkFTZ0NBQkVBQUFzaUFUWUNIQ0FOSUFFMkFqQWdCU2dDRENJR1FRUnhJUWdMQWtBZ0NFVU5BQ0FGS0FJY0lBY2dCMEVJZEVHQWdQd0hjU0FIUVJoMGNpQUhRUWgyUVlEK0EzRWdCMEVZZG5KeUlBVW9BaFFiUmcwQUlBVkIwZjRBTmdJRUlBMUJ5QXcyQWhnZ0F5RUxJQVVvQWdRaEJnd3hDMEVBSVFkQkFDRUNJQU1oQ3dzZ0JVSFAvZ0EyQWdRTUxRc2dCMEgvL3dOeElnRWdCMEYvYzBFUWRrY0VRQ0FGUWRIK0FEWUNCQ0FOUWFFS05nSVlJQVVvQWdRaEJnd3ZDeUFGUWNMK0FEWUNCQ0FGSUFFMkFrUkJBQ0VIUVFBaEFnc2dCVUhEL2dBMkFnUUxJQVVvQWtRaUFRUkFJQU1nQkNBQklBRWdCRXNiSWdFZ0FTQURTeHNpQmtVTkhpQVJJQUFnQmhBWElRRWdCU0FGS0FKRUlBWnJOZ0pFSUFFZ0Jtb2hFU0FESUFacklRTWdBQ0FHYWlFQUlBUWdCbXNoQkNBRktBSUVJUVlNTFFzZ0JVRy8vZ0EyQWdRZ0JTZ0NCQ0VHREN3TElBSkJFR29oQWlBRVFRSnJJUVFnQUMwQUFTQUdkQ0FIYWlFSElBQkJBbW9oQUFzZ0JTQUhOZ0lVSUFkQi93RnhRUWhIQkVBZ0JVSFIvZ0EyQWdRZ0RVR3FEellDR0NBRktBSUVJUVlNS3dzZ0IwR0F3QU54QkVBZ0JVSFIvZ0EyQWdRZ0RVR2dDVFlDR0NBRktBSUVJUVlNS3dzZ0JTZ0NKQ0lCQkVBZ0FTQUhRUWgyUVFGeE5nSUFDd0pBSUFkQmdBUnhSUTBBSUFVdEFBeEJCSEZGRFFBZ0ZTQUhPd0FNSUFVQ2Z5QUZLQUljSVFKQkFDQVZRUXhxSWdGRkRRQWFJQUlnQVVJQ1FheVpBU2dDQUJFRUFBczJBaHdMSUFWQnR2NEFOZ0lFUVFBaEFrRUFJUWNMSUFSRkRTZ2dBRUVCYWlFQklBUkJBV3NoQmlBQUxRQUFJQUowSUFkcUlRY2dBa0VZVHdSQUlBRWhBQ0FHSVFRTUFRc2dBa0VJYWlFSUlBWkZCRUFnQVNFQVFRQWhCQ0FJSVFJZ0RDRUJEQ3NMSUFCQkFtb2hBU0FFUVFKcklRWWdBQzBBQVNBSWRDQUhhaUVISUFKQkQwc0VRQ0FCSVFBZ0JpRUVEQUVMSUFKQkVHb2hDQ0FHUlFSQUlBRWhBRUVBSVFRZ0NDRUNJQXdoQVF3ckN5QUFRUU5xSVFFZ0JFRURheUVHSUFBdEFBSWdDSFFnQjJvaEJ5QUNRUWRMQkVBZ0FTRUFJQVloQkF3QkN5QUNRUmhxSVFJZ0JrVUVRQ0FCSVFCQkFDRUVJQXdoQVF3ckN5QUVRUVJySVFRZ0FDMEFBeUFDZENBSGFpRUhJQUJCQkdvaEFBc2dCU2dDSkNJQkJFQWdBU0FITmdJRUN3SkFJQVV0QUJWQkFuRkZEUUFnQlMwQURFRUVjVVVOQUNBVklBYzJBQXdnQlFKL0lBVW9BaHdoQWtFQUlCVkJER29pQVVVTkFCb2dBaUFCUWdSQnJKa0JLQUlBRVFRQUN6WUNIQXNnQlVHMy9nQTJBZ1JCQUNFQ1FRQWhCd3NnQkVVTkppQUFRUUZxSVFFZ0JFRUJheUVHSUFBdEFBQWdBblFnQjJvaEJ5QUNRUWhQQkVBZ0FTRUFJQVloQkF3QkN5QUNRUWhxSVFJZ0JrVUVRQ0FCSVFCQkFDRUVJQXdoQVF3cEN5QUVRUUpySVFRZ0FDMEFBU0FDZENBSGFpRUhJQUJCQW1vaEFBc2dCU2dDSkNJQkJFQWdBU0FIUVFoMk5nSU1JQUVnQjBIL0FYRTJBZ2dMQWtBZ0JTMEFGVUVDY1VVTkFDQUZMUUFNUVFSeFJRMEFJQlVnQnpzQURDQUZBbjhnQlNnQ0hDRUNRUUFnRlVFTWFpSUJSUTBBR2lBQ0lBRkNBa0dzbVFFb0FnQVJCQUFMTmdJY0N5QUZRYmorQURZQ0JFRUFJUVpCQUNFQ1FRQWhCeUFGS0FJVUlnRkJnQWh4RFFFTElBVW9BaVFpQVFSQUlBRkJBRFlDRUFzZ0JpRUNEQUlMSUFSRkJFQkJBQ0VFSUFZaEJ5QU1JUUVNSmdzZ0FFRUJhaUVJSUFSQkFXc2hDU0FBTFFBQUlBSjBJQVpxSVFjZ0FrRUlUd1JBSUFnaEFDQUpJUVFNQVFzZ0FrRUlhaUVDSUFsRkJFQWdDQ0VBUVFBaEJDQU1JUUVNSmdzZ0JFRUNheUVFSUFBdEFBRWdBblFnQjJvaEJ5QUFRUUpxSVFBTElBVWdCMEgvL3dOeElnWTJBa1FnQlNnQ0pDSUNCRUFnQWlBR05nSVVDMEVBSVFJQ1FDQUJRWUFFY1VVTkFDQUZMUUFNUVFSeFJRMEFJQlVnQnpzQURDQUZBbjhnQlNnQ0hDRUdRUUFnRlVFTWFpSUJSUTBBR2lBR0lBRkNBa0dzbVFFb0FnQVJCQUFMTmdJY0MwRUFJUWNMSUFWQnVmNEFOZ0lFQ3lBRktBSVVJZ2hCZ0FoeEJFQWdCQ0FGS0FKRUlnWWdCQ0FHU1JzaUNnUkFBa0FnQlNnQ0pDSUpSUTBBSUFrb0FoQWlBVVVOQUNBQklBa29BaFFnQm1zaUJtb2dBQ0FKS0FJWUlnRWdCbXNnQ2lBR0lBcHFJQUZMR3hBWEdpQUZLQUlVSVFnTEFrQWdDRUdBQkhGRkRRQWdCUzBBREVFRWNVVU5BQ0FGQW44Z0JTZ0NIQ0VCUVFBZ0FFVU5BQm9nQVNBQUlBcXRRYXlaQVNnQ0FCRUVBQXMyQWh3TElBVWdCU2dDUkNBS2F5SUdOZ0pFSUFRZ0Ntc2hCQ0FBSUFwcUlRQUxJQVlORXdzZ0JVRzYvZ0EyQWdRZ0JVRUFOZ0pFQ3dKQUlBVXRBQlZCQ0hFRVFFRUFJUVlnQkVVTkJBTkFJQUFnQm1vdEFBQWhDZ0pBSUFVb0FpUWlDVVVOQUNBSktBSWNJZ0ZGRFFBZ0JTZ0NSQ0lJSUFrb0FpQlBEUUFnQlNBSVFRRnFOZ0pFSUFFZ0NHb2dDam9BQUFzZ0NrRUFJQVFnQmtFQmFpSUdTeHNOQUFzQ1FDQUZMUUFWUVFKeFJRMEFJQVV0QUF4QkJIRkZEUUFnQlFKL0lBVW9BaHdoQVVFQUlBQkZEUUFhSUFFZ0FDQUdyVUdzbVFFb0FnQVJCQUFMTmdJY0N5QUFJQVpxSVFBZ0JDQUdheUVFSUFwRkRRRU1Fd3NnQlNnQ0pDSUJSUTBBSUFGQkFEWUNIQXNnQlVHNy9nQTJBZ1FnQlVFQU5nSkVDd0pBSUFVdEFCVkJFSEVFUUVFQUlRWWdCRVVOQXdOQUlBQWdCbW90QUFBaENnSkFJQVVvQWlRaUNVVU5BQ0FKS0FJa0lnRkZEUUFnQlNnQ1JDSUlJQWtvQWloUERRQWdCU0FJUVFGcU5nSkVJQUVnQ0dvZ0Nqb0FBQXNnQ2tFQUlBUWdCa0VCYWlJR1N4c05BQXNDUUNBRkxRQVZRUUp4UlEwQUlBVXRBQXhCQkhGRkRRQWdCUUovSUFVb0Fod2hBVUVBSUFCRkRRQWFJQUVnQUNBR3JVR3NtUUVvQWdBUkJBQUxOZ0ljQ3lBQUlBWnFJUUFnQkNBR2F5RUVJQXBGRFFFTUVnc2dCU2dDSkNJQlJRMEFJQUZCQURZQ0pBc2dCVUc4L2dBMkFnUUxJQVVvQWhRaUNVR0FCSEVFUUFKQUlBSkJEMHNOQUNBRVJRMGZJQUpCQ0dvaEJpQUFRUUZxSVFFZ0JFRUJheUVJSUFBdEFBQWdBblFnQjJvaEJ5QUNRUWhQQkVBZ0FTRUFJQWdoQkNBR0lRSU1BUXNnQ0VVRVFDQUJJUUJCQUNFRUlBWWhBaUFNSVFFTUlnc2dBa0VRYWlFQ0lBUkJBbXNoQkNBQUxRQUJJQVowSUFkcUlRY2dBRUVDYWlFQUN3SkFJQVV0QUF4QkJIRkZEUUFnQnlBRkx3RWNSZzBBSUFWQjBmNEFOZ0lFSUExQit3dzJBaGdnQlNnQ0JDRUdEQ0FMUVFBaEIwRUFJUUlMSUFVb0FpUWlBUVJBSUFGQkFUWUNNQ0FCSUFsQkNYWkJBWEUyQWl3TElBVkJBRFlDSENBTlFRQTJBakFnQlVHLy9nQTJBZ1FnQlNnQ0JDRUdEQjRMUVFBaEJBd09Dd0pBSUFsQkFuRkZEUUFnQjBHZmxnSkhEUUFnQlNnQ0tFVUVRQ0FGUVE4MkFpZ0xRUUFoQnlBRlFRQTJBaHdnRlVHZmxnSTdBQXdnQlNBVlFReHFJZ0VFZjBFQUlBRkNBa0dzbVFFb0FnQVJCQUFGUVFBTE5nSWNJQVZCdGY0QU5nSUVRUUFoQWlBRktBSUVJUVlNSFFzZ0JTZ0NKQ0lCQkVBZ0FVRi9OZ0l3Q3dKQUlBbEJBWEVFUUNBSFFRaDBRWUQrQTNFZ0IwRUlkbXBCSDNCRkRRRUxJQVZCMGY0QU5nSUVJQTFCbWd3MkFoZ2dCU2dDQkNFR0RCMExJQWRCRDNGQkNFY0VRQ0FGUWRIK0FEWUNCQ0FOUWFvUE5nSVlJQVVvQWdRaEJnd2RDeUFIUVFSMklnRkJEM0VpQ0VFSWFpRUpJQWhCQjAxQkFDQUZLQUlvSWdZRWZ5QUdCU0FGSUFrMkFpZ2dDUXNnQ1U4YlJRUkFJQUpCQkdzaEFpQUZRZEgrQURZQ0JDQU5RYUlOTmdJWUlBRWhCeUFGS0FJRUlRWU1IUXNnQlVFQk5nSWNRUUFoQWlBRlFRQTJBaFFnQlVHQUFpQUlkRFlDR0NBTlFRRTJBakFnQlVHOS9nQkJ2LzRBSUFkQmdNQUFjUnMyQWdSQkFDRUhJQVVvQWdRaEJnd2NDeUFGSUFkQkNIUkJnSUQ4QjNFZ0IwRVlkSElnQjBFSWRrR0EvZ054SUFkQkdIWnljaUlCTmdJY0lBMGdBVFlDTUNBRlFiNytBRFlDQkVFQUlRZEJBQ0VDQ3lBRktBSVFSUVJBSUEwZ0F6WUNFQ0FOSUJFMkFnd2dEU0FFTmdJRUlBMGdBRFlDQUNBRklBSTJBa0FnQlNBSE5nSThRUUloR2d3ZUN5QUZRUUUyQWh3Z0RVRUJOZ0l3SUFWQnYvNEFOZ0lFQ3dKL0FrQWdCU2dDQ0VVRVFDQUNRUU5KRFFFZ0Fnd0NDeUFGUWM3K0FEWUNCQ0FISUFKQkIzRjJJUWNnQWtGNGNTRUNJQVVvQWdRaEJnd2JDeUFFUlEwWklBUkJBV3NoQkNBQUxRQUFJQUowSUFkcUlRY2dBRUVCYWlFQUlBSkJDR29MSVFFZ0JTQUhRUUZ4TmdJSUFrQUNRQUpBQWtBQ1FDQUhRUUYyUVFOeFFRRnJEZ01CQWdNQUN5QUZRY0grQURZQ0JBd0RDeUFGUVpEMEFEWUNVQ0FGUW9tQWdJRFFBRGNDV0NBRlFaQ0VBVFlDVkNBRlFjZitBRFlDQkF3Q0N5QUZRY1QrQURZQ0JBd0JDeUFGUWRIK0FEWUNCQ0FOUWY4Tk5nSVlDeUFCUVFOcklRSWdCMEVEZGlFSElBVW9BZ1FoQmd3WkN5QUZJQWRCSDNFaUJrR0JBbW8yQW1RZ0JTQUhRUVYyUVI5eElnRkJBV28yQW1nZ0JTQUhRUXAyUVE5eFFRUnFJZ2syQW1BZ0FrRU9heUVDSUFkQkRuWWhCeUFHUVIxTlFRQWdBVUVlU1J0RkJFQWdCVUhSL2dBMkFnUWdEVUg5Q1RZQ0dDQUZLQUlFSVFZTUdRc2dCVUhGL2dBMkFnUkJBQ0VHSUFWQkFEWUNiQXNnQmlFQkEwQWdBa0VDVFFSQUlBUkZEUmdnQkVFQmF5RUVJQUF0QUFBZ0FuUWdCMm9oQnlBQ1FRaHFJUUlnQUVFQmFpRUFDeUFGSUFGQkFXb2lCallDYkNBRklBRkJBWFJCa0lVQmFpOEJBRUVCZEdvZ0IwRUhjVHNCZENBQ1FRTnJJUUlnQjBFRGRpRUhJQWtnQmlJQlN3MEFDd3NnQmtFU1RRUkFRUklnQm1zaERFRURJQVpyUVFOeElnRUVRQU5BSUFVZ0JrRUJkRUdRaFFGcUx3RUFRUUYwYWtFQU93RjBJQVpCQVdvaEJpQUJRUUZySWdFTkFBc0xJQXhCQTA4RVFBTkFJQVZCOUFCcUlnd2dCa0VCZENJQlFaQ0ZBV292QVFCQkFYUnFRUUE3QVFBZ0RDQUJRWktGQVdvdkFRQkJBWFJxUVFBN0FRQWdEQ0FCUVpTRkFXb3ZBUUJCQVhScVFRQTdBUUFnRENBQlFaYUZBV292QVFCQkFYUnFRUUE3QVFBZ0JrRUVhaUlHUVJOSERRQUxDeUFGUVJNMkFtd0xJQVZCQnpZQ1dDQUZJQnMyQWxBZ0JTQWJOZ0p3UVFBaEJrRUFJQjlCRXlBZElDQWdIQkIzSWd3RVFDQUZRZEgrQURZQ0JDQU5RWWNKTmdJWUlBVW9BZ1FoQmd3WEN5QUZRY2IrQURZQ0JDQUZRUUEyQW14QkFDRU1DeUFGS0FKa0loWWdCU2dDYUdvaUVDQUdTd1JBUVg4Z0JTZ0NXSFJCZjNNaEV5QUZLQUpRSVJrRFFDQUNJUW9nQkNFSUlBQWhDUUpBSUJrZ0J5QVRjU0lVUVFKMGFpMEFBU0lPSUFKTkJFQWdBaUVCREFFTEEwQWdDRVVORFNBSkxRQUFJQXAwSVE0Z0NVRUJhaUVKSUFoQkFXc2hDQ0FLUVFocUlnRWhDaUFCSUJrZ0J5QU9haUlISUJOeEloUkJBblJxTFFBQklnNUpEUUFMSUFraEFDQUlJUVFMQWtBZ0dTQVVRUUowYWk4QkFpSUNRUTlOQkVBZ0JTQUdRUUZxSWdnMkFtd2dCU0FHUVFGMGFpQUNPd0YwSUFFZ0Rtc2hBaUFISUE1MklRY2dDQ0VHREFFTEFuOENmd0pBQWtBQ1FDQUNRUkJyRGdJQUFRSUxJQTVCQW1vaUFpQUJTd1JBQTBBZ0JFVU5HeUFFUVFGcklRUWdBQzBBQUNBQmRDQUhhaUVISUFCQkFXb2hBQ0FCUVFocUlnRWdBa2tOQUFzTElBRWdEbXNoQWlBSElBNTJJUUVnQmtVRVFDQUZRZEgrQURZQ0JDQU5RYzhKTmdJWUlBRWhCeUFGS0FJRUlRWU1IUXNnQWtFQ2F5RUNJQUZCQW5ZaEJ5QUJRUU54UVFOcUlRZ2dCa0VCZENBRmFpOEJjZ3dEQ3lBT1FRTnFJZ0lnQVVzRVFBTkFJQVJGRFJvZ0JFRUJheUVFSUFBdEFBQWdBWFFnQjJvaEJ5QUFRUUZxSVFBZ0FVRUlhaUlCSUFKSkRRQUxDeUFCSUE1clFRTnJJUUlnQnlBT2RpSUJRUU4ySVFjZ0FVRUhjVUVEYWd3QkN5QU9RUWRxSWdJZ0FVc0VRQU5BSUFSRkRSa2dCRUVCYXlFRUlBQXRBQUFnQVhRZ0Iyb2hCeUFBUVFGcUlRQWdBVUVJYWlJQklBSkpEUUFMQ3lBQklBNXJRUWRySVFJZ0J5QU9kaUlCUVFkMklRY2dBVUgvQUhGQkMyb0xJUWhCQUFzaENpQUdJQWhxSUJCTERSTWdDRUVCYXlFQklBaEJBM0VpQ1FSQUEwQWdCU0FHUVFGMGFpQUtPd0YwSUFaQkFXb2hCaUFJUVFGcklRZ2dDVUVCYXlJSkRRQUxDeUFCUVFOUEJFQURRQ0FGSUFaQkFYUnFJZ0VnQ2pzQmRpQUJJQW83QVhRZ0FTQUtPd0Y0SUFFZ0Nqc0JlaUFHUVFScUlRWWdDRUVFYXlJSURRQUxDeUFGSUFZMkFtd0xJQVlnRUVrTkFBc0xJQVV2QWZRRVJRUkFJQVZCMGY0QU5nSUVJQTFCOVFzMkFoZ2dCU2dDQkNFR0RCWUxJQVZCQ1RZQ1dDQUZJQnMyQWxBZ0JTQWJOZ0p3UVFFZ0h5QVdJQjBnSUNBY0VIY2lEQVJBSUFWQjBmNEFOZ0lFSUExQjZ3ZzJBaGdnQlNnQ0JDRUdEQllMSUFWQkJqWUNYQ0FGSUFVb0FuQTJBbFJCQWlBRklBVW9BbVJCQVhScVFmUUFhaUFGS0FKb0lCMGdJeUFjRUhjaURBUkFJQVZCMGY0QU5nSUVJQTFCdVFrMkFoZ2dCU2dDQkNFR0RCWUxJQVZCeC80QU5nSUVRUUFoREFzZ0JVSEkvZ0EyQWdRTEFrQWdCRUVJU1EwQUlBTkJnZ0pKRFFBZ0RTQUROZ0lRSUEwZ0VUWUNEQ0FOSUFRMkFnUWdEU0FBTmdJQUlBVWdBallDUUNBRklBYzJBandqQUVFUWF5SVhKQUFnRFNnQ0RDSUhJQTBvQWhBaUFHb2hHQ0FBSUF0cklRWWdEU2dDQUNJQklBMG9BZ1JxSVFSQmZ5QU5LQUljSWhJb0FseDBJUUpCZnlBU0tBSllkQ0VBSUJJb0FqZ2hDUUovUVFBZ0VpZ0NMQ0llUlEwQUdrRUFJQWNnQ1VrTkFCb2dCMEdDQW1vZ0NTQWVhazBMSVJrZ0dFR0JBbXNoSVNBR0lBZHFJUkFnQkVFSGF5RWlJQUpCZjNNaEV5QUFRWDl6SVJZZ0VpZ0NWQ0VSSUJJb0FsQWhGQ0FTS0FKQUlRUWdFalVDUENFbElCSW9BalFoQ0NBU0tBSXdJUTRnR0VFQmFpRUtBMEFnQkVFT1N3Ui9JQVFGSUFFcEFBQWdCSzJHSUNXRUlTVWdBVUVHYWlFQklBUkJNR29MSUJRZ0phY2dGbkZCQW5ScUlnSXRBQUVpQUdzaEJDQWxJQUN0aUNFbEFrQUNmd0pBQTBBZ0FpMEFBQ0lBUlFSQUlBY2dBaTBBQWpvQUFDQUhRUUZxREFNTElBQkJFSEVFUUNBQ0x3RUNJUUlDZnlBQVFROXhJZ1lnQkUwRVFDQUVJUUFnQVF3QkN5QUVRVEJxSVFBZ0FTa0FBQ0FFcllZZ0pZUWhKU0FCUVFacUN5RUJJQmNnSmFkQmZ5QUdkRUYvYzNFZ0Ftb2lBellDRENBbElBYXRpQ0VsQW44Z0FDQUdheUlDUVE1TEJFQWdBU0VBSUFJTUFRc2dBVUVHYWlFQUlBRXBBQUFnQXEyR0lDV0VJU1VnQWtFd2Fnc2dFU0FscHlBVGNVRUNkR29pQWkwQUFTSUJheUVFSUNVZ0FhMklJU1VnQWkwQUFDSUdRUkJ4RFFJRFFDQUdRY0FBY1VVRVFDQUVJQkVnQWk4QkFrRUNkR29nSmFkQmZ5QUdkRUYvYzNGQkFuUnFJZ0l0QUFFaUFXc2hCQ0FsSUFHdGlDRWxJQUl0QUFBaUJrRVFjVVVOQVF3RUN3c2dFa0hSL2dBMkFnUWdEVUdVRHpZQ0dDQUFJUUVNQkFzZ0FFSEFBSEZGQkVBZ0JDQVVJQUl2QVFKQkFuUnFJQ1duUVg4Z0FIUkJmM054UVFKMGFpSUNMUUFCSWdCcklRUWdKU0FBcllnaEpRd0JDd3NnQUVFZ2NRUkFJQkpCdi80QU5nSUVEQU1MSUJKQjBmNEFOZ0lFSUExQitBNDJBaGdNQWdzZ0FpOEJBaUVDQW44Z0JrRVBjU0lHSUFSTkJFQWdBQ0VCSUFRTUFRc2dBRUVHYWlFQklBQXBBQUFnQksyR0lDV0VJU1VnQkVFd2Fnc2hBQ0FYSUNXblFYOGdCblJCZjNOeElBSnFJZ0kyQWdnZ0FDQUdheUVFSUNVZ0JxMklJU1VDUUNBSElCQnJJZ0FnQWtrRVFBSkFJQUlnQUdzaUFpQU9UUTBBSUJJb0FzUTNSUTBBSUJKQjBmNEFOZ0lFSUExQjNRdzJBaGdNQkFzQ1FDQUlSUVJBSUFrZ0hpQUNhMm9oQmd3QkN5QUNJQWhOQkVBZ0NTQUlJQUpyYWlFR0RBRUxJQWtnSGlBQ0lBaHJJZ0pyYWlFR0lBSWdBMDhOQUNBWElBTWdBbXMyQWd3Z0J5QUdJQUlnR0VIRW1RRW9BZ0FSQlFBaEJ5QVhLQUlNSVFNZ0NDRUNJQWtoQmdzZ0FpQURUdzBCSUJjZ0F5QUNhellDRENBSElBWWdBaUFZUWNTWkFTZ0NBQkVGQUNBWFFRaHFJQmRCREdwQnlKa0JLQUlBRVFBQUlnQWdBQ0FYS0FJSWF5QVhLQUlNSUJoQnhKa0JLQUlBRVFVQURBSUxJQmtFUUFKQUlBSWdBMGtFUUNBQ0lCSW9BdEEzU1EwQkN5QUhJQWNnQW1zZ0F5QVlRY1NaQVNnQ0FCRUZBQXdEQ3lBSElBSWdBeUFLSUFkclFkQ1pBU2dDQUJFRkFBd0NDd0pBSUFJZ0Ewa0VRQ0FDSUJJb0F0QTNTUTBCQ3lBSElBY2dBbXNnQTBIQW1RRW9BZ0FSQUFBTUFnc2dCeUFDSUFOQnpKa0JLQUlBRVFBQURBRUxJQWNnQmlBRElCaEJ4SmtCS0FJQUVRVUFDeUVISUFFZ0lrOE5BQ0FISUNGSkRRRUxDeUFOSUFjMkFnd2dEU0FCSUFSQkEzWnJJZ0EyQWdBZ0RTQWhJQWRyUVlFQ2FqWUNFQ0FOSUNJZ0FHdEJCMm8yQWdRZ0VpQUVRUWR4SWdBMkFrQWdFaUFsUW44Z0FLMkdRbitGZ3o0Q1BDQVhRUkJxSkFBZ0JTZ0NRQ0VDSUFVb0Fqd2hCeUFOS0FJRUlRUWdEU2dDQUNFQUlBMG9BaEFoQXlBTktBSU1JUkVnQlNnQ0JFRy8vZ0JIRFFjZ0JVRi9OZ0xJTnlBRktBSUVJUVlNRkFzZ0JVRUFOZ0xJTnlBQ0lRZ2dCQ0VHSUFBaEFRSkFJQVVvQWxBaUV5QUhRWDhnQlNnQ1dIUkJmM01pRm5FaURrRUNkR290QUFFaUNTQUNUUVJBSUFJaENnd0JDd05BSUFaRkRROGdBUzBBQUNBSWRDRUpJQUZCQVdvaEFTQUdRUUZySVFZZ0NFRUlhaUlLSVFnZ0NpQVRJQWNnQ1dvaUJ5QVdjU0lPUVFKMGFpMEFBU0lKU1EwQUN3c2dFeUFPUVFKMGFpSUFMd0VDSVJRQ1FFRUFJQUF0QUFBaUVDQVFRZkFCY1J0RkJFQWdDU0VFREFFTElBWWhCQ0FCSVFBQ1FDQUtJZ0lnQ1NBVElBZEJmeUFKSUJCcWRFRi9jeUlXY1NBSmRpQVVhaUlRUVFKMGFpMEFBU0lPYWs4RVFDQUtJUWdNQVFzRFFDQUVSUTBQSUFBdEFBQWdBblFoRGlBQVFRRnFJUUFnQkVFQmF5RUVJQUpCQ0dvaUNDRUNJQWtnRXlBSElBNXFJZ2NnRm5FZ0NYWWdGR29pRUVFQ2RHb3RBQUVpRG1vZ0NFc05BQXNnQUNFQklBUWhCZ3NnRXlBUVFRSjBhaUlBTFFBQUlSQWdBQzhCQWlFVUlBVWdDVFlDeURjZ0NTQU9haUVFSUFnZ0NXc2hDaUFISUFsMklRY2dEaUVKQ3lBRklBUTJBc2czSUFVZ0ZFSC8vd054TmdKRUlBb2dDV3NoQWlBSElBbDJJUWNnRUVVRVFDQUZRYzMrQURZQ0JBd1FDeUFRUVNCeEJFQWdCVUcvL2dBMkFnUWdCVUYvTmdMSU53d1FDeUFRUWNBQWNRUkFJQVZCMGY0QU5nSUVJQTFCK0E0MkFoZ01FQXNnQlVISi9nQTJBZ1FnQlNBUVFROXhJZ28yQWt3TEFrQWdDa1VFUUNBRktBSkVJUWtnQVNFQUlBWWhCQXdCQ3lBQ0lRZ2dCaUVFSUFFaENRSkFJQUlnQ2s4RVFDQUJJUUFNQVFzRFFDQUVSUTBOSUFSQkFXc2hCQ0FKTFFBQUlBaDBJQWRxSVFjZ0NVRUJhaUlBSVFrZ0NFRUlhaUlJSUFwSkRRQUxDeUFGSUFVb0FzZzNJQXBxTmdMSU55QUZJQVVvQWtRZ0IwRi9JQXAwUVg5emNXb2lDVFlDUkNBSUlBcHJJUUlnQnlBS2RpRUhDeUFGUWNyK0FEWUNCQ0FGSUFrMkFzdzNDeUFDSVFnZ0JDRUdJQUFoQVFKQUlBVW9BbFFpRXlBSFFYOGdCU2dDWEhSQmYzTWlGbkVpRGtFQ2RHb3RBQUVpQ2lBQ1RRUkFJQUloQ1F3QkN3TkFJQVpGRFFvZ0FTMEFBQ0FJZENFS0lBRkJBV29oQVNBR1FRRnJJUVlnQ0VFSWFpSUpJUWdnQ1NBVElBY2dDbW9pQnlBV2NTSU9RUUowYWkwQUFTSUtTUTBBQ3dzZ0V5QU9RUUowYWlJQUx3RUNJUlFDUUNBQUxRQUFJaEJCOEFGeEJFQWdCU2dDeURjaEJDQUtJUWdNQVFzZ0JpRUVJQUVoQUFKQUlBa2lBaUFLSUJNZ0IwRi9JQW9nRUdwMFFYOXpJaFp4SUFwMklCUnFJaEJCQW5ScUxRQUJJZ2hxVHdSQUlBa2hEZ3dCQ3dOQUlBUkZEUW9nQUMwQUFDQUNkQ0VJSUFCQkFXb2hBQ0FFUVFGcklRUWdBa0VJYWlJT0lRSWdDaUFUSUFjZ0NHb2lCeUFXY1NBS2RpQVVhaUlRUVFKMGFpMEFBU0lJYWlBT1N3MEFDeUFBSVFFZ0JDRUdDeUFUSUJCQkFuUnFJZ0F0QUFBaEVDQUFMd0VDSVJRZ0JTQUZLQUxJTnlBS2FpSUVOZ0xJTnlBT0lBcHJJUWtnQnlBS2RpRUhDeUFGSUFRZ0NHbzJBc2czSUFrZ0NHc2hBaUFISUFoMklRY2dFRUhBQUhFRVFDQUZRZEgrQURZQ0JDQU5RWlFQTmdJWUlBRWhBQ0FHSVFRZ0JTZ0NCQ0VHREJJTElBVkJ5LzRBTmdJRUlBVWdFRUVQY1NJS05nSk1JQVVnRkVILy93TnhOZ0pJQ3dKQUlBcEZCRUFnQVNFQUlBWWhCQXdCQ3lBQ0lRZ2dCaUVFSUFFaENRSkFJQUlnQ2s4RVFDQUJJUUFNQVFzRFFDQUVSUTBJSUFSQkFXc2hCQ0FKTFFBQUlBaDBJQWRxSVFjZ0NVRUJhaUlBSVFrZ0NFRUlhaUlJSUFwSkRRQUxDeUFGSUFVb0FzZzNJQXBxTmdMSU55QUZJQVVvQWtnZ0IwRi9JQXAwUVg5emNXbzJBa2dnQ0NBS2F5RUNJQWNnQ25ZaEJ3c2dCVUhNL2dBMkFnUUxJQU5GRFFBQ2Z5QUZLQUpJSWdZZ0N5QURheUlCU3dSQUFrQWdCaUFCYXlJR0lBVW9BakJORFFBZ0JTZ0N4RGRGRFFBZ0JVSFIvZ0EyQWdRZ0RVSGRERFlDR0NBRktBSUVJUVlNRWdzZ0VRSi9JQVVvQWpRaUFTQUdTUVJBSUFVb0FqZ2dCU2dDTENBR0lBRnJJZ1pyYWd3QkN5QUZLQUk0SUFFZ0JtdHFDeUFESUFVb0FrUWlBU0FHSUFFZ0Jra2JJZ0VnQVNBRFN4c2lCaUFESUJGcVFjU1pBU2dDQUJFRkFBd0JDeUFSSUFZZ0F5QUZLQUpFSWdFZ0FTQURTeHNpQmlBRFFkQ1pBU2dDQUJFRkFBc2hFU0FGSUFVb0FrUWdCbXNpQVRZQ1JDQURJQVpySVFNZ0FRMENJQVZCeVA0QU5nSUVJQVVvQWdRaEJnd1BDeUFNSVFnTElBZ2hBUXdPQ3lBRktBSUVJUVlNREFzZ0FDQUVhaUVBSUFJZ0JFRURkR29oQWd3S0N5QUJJQVpxSVFBZ0FpQUdRUU4wYWlFQ0RBa0xJQUVnQm1vaEFDQUpJQVpCQTNScUlRSU1DQXNnQUNBRWFpRUFJQUlnQkVFRGRHb2hBZ3dIQ3lBQklBWnFJUUFnQWlBR1FRTjBhaUVDREFZTElBRWdCbW9oQUNBS0lBWkJBM1JxSVFJTUJRc2dBQ0FFYWlFQUlBSWdCRUVEZEdvaEFnd0VDeUFGUWRIK0FEWUNCQ0FOUWM4Sk5nSVlJQVVvQWdRaEJnd0VDeUFCSVFBZ0JpRUVJQVVvQWdRaEJnd0RDMEVBSVFRZ0FTRUNJQXdoQVF3REN3SkFBa0FnQmtVRVFDQUhJUWdNQVFzZ0JTZ0NGRVVFUUNBSElRZ01BUXNDUUNBQ1FSOUxEUUFnQkVVTkF5QUNRUWhxSVFnZ0FFRUJhaUVCSUFSQkFXc2hDU0FBTFFBQUlBSjBJQWRxSVFjZ0FrRVlUd1JBSUFFaEFDQUpJUVFnQ0NFQ0RBRUxJQWxGQkVBZ0FTRUFRUUFoQkNBSUlRSWdEQ0VCREFZTElBSkJFR29oQ1NBQVFRSnFJUUVnQkVFQ2F5RUtJQUF0QUFFZ0NIUWdCMm9oQnlBQ1FROUxCRUFnQVNFQUlBb2hCQ0FKSVFJTUFRc2dDa1VFUUNBQklRQkJBQ0VFSUFraEFpQU1JUUVNQmdzZ0FrRVlhaUVJSUFCQkEyb2hBU0FFUVFOcklRb2dBQzBBQWlBSmRDQUhhaUVISUFKQkIwc0VRQ0FCSVFBZ0NpRUVJQWdoQWd3QkN5QUtSUVJBSUFFaEFFRUFJUVFnQ0NFQ0lBd2hBUXdHQ3lBQ1FTQnFJUUlnQkVFRWF5RUVJQUF0QUFNZ0NIUWdCMm9oQnlBQVFRUnFJUUFMUVFBaENDQUdRUVJ4QkVBZ0J5QUZLQUlnUncwQ0MwRUFJUUlMSUFWQjBQNEFOZ0lFUVFFaEFTQUlJUWNNQXdzZ0JVSFIvZ0EyQWdRZ0RVR3hERFlDR0NBRktBSUVJUVlNQVFzTFFRQWhCQ0FNSVFFTElBMGdBellDRUNBTklCRTJBZ3dnRFNBRU5nSUVJQTBnQURZQ0FDQUZJQUkyQWtBZ0JTQUhOZ0k4QWtBQ1FBSkFJQVVvQWl3TkFDQURJQXRHRFFFZ0JTZ0NCQ0lBUWREK0FFc05BU0FBUWM3K0FFa05BQXNnRFNnQ0hDSU1LQUk0UlFSQUlBd2dEQ2dDQUNJQ0tBSW9RUUVnRENnQ0tIUWlBQ0FNS0FMUU4ycEJBU0FDS0FJZ0VRQUFJZ0kyQWpnZ0FrVU5BaUFBSUFKcVFRQWdEQ2dDMERjUUx3c2dEQ2dDTENJRVJRUkFJQXhDQURjQ01DQU1RUUVnRENnQ0tIUWlCRFlDTEFzZ0N5QURheUlDSUFSUEJFQWdEQ2dDT0NBUklBUnJJQVFRRnhvZ0RFRUFOZ0kwSUF3Z0RDZ0NMRFlDTUF3QkN5QU1LQUkwSWdBZ0RDZ0NPR29nRVNBQ2F5QUNJQVFnQUdzaUFDQUFJQUpMR3lJRUVCY2FJQUlnQkdzaUFBUkFJQXdvQWpnZ0VTQUFheUFBRUJjYUlBd2dBRFlDTkNBTUlBd29BaXcyQWpBTUFRc2dERUVBSUF3b0FqUWdCR29pQUNBQUlBd29BaXdpQWtZYk5nSTBJQUlnRENnQ01DSUFUUTBBSUF3Z0FDQUVhallDTUFzZ0RTQWtJQTBvQWdScklnUWdEU2dDQ0dvMkFnZ2dEU0FMSUEwb0FoQnJJZ3dnRFNnQ0ZHbzJBaFFnQlNBRktBSWdJQXhxTmdJZ0FrQWdCUzBBREVFRWNVVU5BQ0FNUlEwQUlBVUNmeUFGS0FJVUJFQUNmeUFGS0FJY0lRSkJBQ0FOS0FJTUlBeHJJZ0JGRFFBYUlBSWdBQ0FNclVHc21RRW9BZ0FSQkFBTERBRUxJQVVvQWh3Z0RTZ0NEQ0FNYXlBTVFhaVpBU2dDQUJFQUFBc2lBRFlDSENBTklBQTJBakFMSUEwZ0JTZ0NRQ0FGS0FJSVFRQkhRUVowYWlBRktBSUVJZ0JCdi80QVJrRUhkR3BCZ0FJZ0FFSEMvZ0JHUVFoMElBQkJ4LzRBUmh0cU5nSXNJQUVnQVVGN0lBRWJJQVFnREhJYklSb01BZ3NnQlVIUy9nQTJBZ1FMUVh3aEdnc2dGVUVRYWlRQUlBOGdHallDQ0FzZ0R5Z0NFQ0lBSUFBcEF3QWdEeWdDRERVQ0lIMDNBd0FDUUFKQUFrQUNRQUpBSUE4b0FnaEJCV29PQndJREF3TURBQUVEQ3lBUFFRQTJBaHdNQXdzZ0QwRUJOZ0ljREFJTElBOG9BZ3dvQWhSRkJFQWdEMEVETmdJY0RBSUxDeUFQS0FJTUtBSUFRUTBnRHlnQ0NCQVVJQTlCQWpZQ0hBc2dEeWdDSENFQUlBOUJJR29rQUNBQUN5UUJBWDhqQUVFUWF5SUJJQUEyQWd3Z0FTQUJLQUlNTmdJSUlBRW9BZ2hCQVRvQURBdVhBUUVCZnlNQVFTQnJJZ01rQUNBRElBQTJBaGdnQXlBQk5nSVVJQU1nQWpjRENDQURJQU1vQWhnMkFnUUNRQUpBSUFNcEF3aEMvLy8vL3c5WUJFQWdBeWdDQkNnQ0ZFVU5BUXNnQXlnQ0JDZ0NBRUVTUVFBUUZDQURRUUE2QUI4TUFRc2dBeWdDQkNBREtRTUlQZ0lVSUFNb0FnUWdBeWdDRkRZQ0VDQURRUUU2QUI4TElBTXRBQjlCQVhFaEFDQURRU0JxSkFBZ0FBdUxBZ0VFZnlNQVFSQnJJZ0VrQUNBQklBQTJBZ2dnQVNBQktBSUlOZ0lFQWtBZ0FTZ0NCQzBBQkVFQmNRUkFJQUVnQVNnQ0JFRVFhaEROQVRZQ0FBd0JDMEYrSVFNQ1FDQUJLQUlFUVJCcUlnQkZEUUFnQUNnQ0lFVU5BQ0FBS0FJa0lnUkZEUUFnQUNnQ0hDSUNSUTBBSUFJb0FnQWdBRWNOQUNBQ0tBSUVRYlQrQUd0Qkgwc05BQ0FDS0FJNElnTUVRQ0FBS0FJb0lBTWdCQkVHQUNBQUtBSWtJUVFnQUNnQ0hDRUNDeUFBS0FJb0lBSWdCQkVHQUVFQUlRTWdBRUVBTmdJY0N5QUJJQU0yQWdBTEFrQWdBU2dDQUFSQUlBRW9BZ1FvQWdCQkRTQUJLQUlBRUJRZ0FVRUFPZ0FQREFFTElBRkJBVG9BRHdzZ0FTMEFEMEVCY1NFQUlBRkJFR29rQUNBQUM0OE5BUVovSXdCQkVHc2lBeVFBSUFNZ0FEWUNDQ0FESUFNb0FnZzJBZ1FnQXlnQ0JFRUFOZ0lVSUFNb0FnUkJBRFlDRUNBREtBSUVRUUEyQWlBZ0F5Z0NCRUVBTmdJY0FrQWdBeWdDQkMwQUJFRUJjUVJBSUFNQ2Z5QURLQUlFUVJCcUlRQWdBeWdDQkNnQ0NDRUJRWG9oQWdKQVFZOE5MUUFBUVRGSERRQkJmaUVDSUFCRkRRQWdBRUVBTmdJWUlBQW9BaUFpQkVVRVFDQUFRUUEyQWlnZ0FFRUNOZ0lnUVFJaEJBc2dBQ2dDSkVVRVFDQUFRUU0yQWlRTFFRWWdBU0FCUVg5R0d5SUZRUUJJRFFBZ0JVRUpTZzBBUVh3aEFpQUFLQUlvUVFGQjhDMGdCQkVBQUNJQlJRMEFJQUFnQVRZQ0hDQUJJQUEyQWdBZ0FVRU5RUThnQlVFQlJoc2lBallDTkNBQlFvQ0FnSUNnQlRjQ0hDQUJRUUEyQWhRZ0FVRUJJQUowSWdJMkFqQWdBU0FDUVFGck5nSTRJQUVnQUNnQ0tDQUNRUUlnQUNnQ0lCRUFBRFlDU0NBQklBQW9BaWdnQVNnQ01FRUNJQUFvQWlBUkFBQWlBallDVENBQ1FRQWdBU2dDTUVFQmRCQXZJQUFvQWloQmdJQUVRUUlnQUNnQ0lCRUFBQ0VDSUFGQmdJQUNOZ0tNTFNBQlFRQTJBa0FnQVNBQ05nSlFJQUVnQUNnQ0tFR0FnQUpCQkNBQUtBSWdFUUFBSWdJMkFnUWdBU0FCS0FLTUxTSUVRUUowTmdJTUFrQUNRQ0FCS0FKSVJRMEFJQUVvQWt4RkRRQWdBU2dDVUVVTkFDQUNEUUVMSUFGQm1nVTJBaUFnQUVINDhRQW9BZ0EyQWhnZ0FCRE5BUnBCZkF3Q0N5QUJRUUEyQW53Z0FTQUZOZ0o0SUFGQ0FEY0RLQ0FCSUFJZ0JHbzJBcEF0SUFFZ0JFRURiRUVEYXpZQ21DMENmMEYrSVFJQ1FDQUFSUTBBSUFBb0FpQkZEUUFnQUNnQ0pFVU5BQ0FBS0FJY0lnRkZEUUFnQVNnQ0FDQUFSdzBBQWtBQ1FDQUJLQUlnSWdWQk9Xc09PUUVDQWdJQ0FnSUNBZ0lDQWdFQ0FnSUJBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUJBZ0lDQWdJQ0FnSUNBZ0lCQWdJQ0FnSUNBZ0lDQVFBTElBVkJtZ1ZHRFFBZ0JVRXFSdzBCQ3lBQVFRSTJBaXdnQUVFQU5nSUlJQUJDQURjQ0ZDQUJRUUEyQWhBZ0FTQUJLQUlFTmdJSUlBRW9BaFFpQWtGL1RBUkFJQUZCQUNBQ2F5SUNOZ0lVQ3lBQlFUbEJLaUFDUVFKR0d6WUNJQUpBSUFKQkFrWUVRQ0FCS0FJQVFRQTJBakFNQVFzZ0FFRUJOZ0l3Q3lBQlFYNDJBaVFnQVVFQU5nTEFMU0FCUWdBM0E3Z3RJQUZCckJacVFkRHVBRFlDQUNBQklBRkI4QlJxTmdLa0ZpQUJRYUFXYWtHODdnQTJBZ0FnQVNBQlFmd1NhallDbUJZZ0FVR1VGbXBCcU80QU5nSUFJQUVnQVVHSUFXbzJBb3dXSUFFUXdRRkJBQ0VDQ3lBQ1JRc0VRQ0FBS0FJY0lnQWdBQ2dDTUVFQmREWUNSQ0FBS0FKUVFRQkJnSUFJRUM4Z0FFRUFOZ0pVSUFCQkFEWUNxQzBnQUVFQU5nSThJQUJDZ0lDQWdDQTNBMmdnQUVJQU53TmdJQUFnQUNnQ2VFRU1iQ0lCUWJUYkFHb3ZBUUEyQW9RQklBQWdBVUd3MndCcUx3RUFOZ0tBQVNBQUlBRkJzdHNBYWk4QkFEWUNkQ0FBSUFGQnR0c0FhaThCQURZQ2NBc0xJQUlMTmdJQURBRUxJQU1DZnlBREtBSUVRUkJxSVFFQ2YwRjZRWThOTFFBQVFURkhEUUFhUVg0Z0FVVU5BUm9nQVVFQU5nSVlJQUVvQWlBaUFFVUVRQ0FCUVFBMkFpZ2dBVUVDTmdJZ1FRSWhBQXNnQVNnQ0pFVUVRQ0FCUVFNMkFpUUxRWHdnQVNnQ0tFRUJRZFEzSUFBUkFBQWlCVVVOQVJvZ0FTQUZOZ0ljSUFWQkFEWUNPQ0FGSUFFMkFnQWdCVUcwL2dBMkFnUWdCVUc4bVFFb0FnQVJDUUEyQXRBM1FYNGhBQUpBSUFGRkRRQWdBU2dDSUVVTkFDQUJLQUlrSWdSRkRRQWdBU2dDSENJQ1JRMEFJQUlvQWdBZ0FVY05BQ0FDS0FJRVFiVCtBR3RCSDBzTkFBSkFBa0FnQWlnQ09DSUdCRUFnQWlnQ0tFRVBSdzBCQ3lBQ1FRODJBaWdnQWtFQU5nSU1EQUVMSUFFb0FpZ2dCaUFFRVFZQUlBSkJBRFlDT0NBQktBSWdJUVFnQWtFUE5nSW9JQUpCQURZQ0RDQUVSUTBCQ3lBQktBSWtSUTBBSUFFb0Fod2lBa1VOQUNBQ0tBSUFJQUZIRFFBZ0FpZ0NCRUcwL2dCclFSOUxEUUJCQUNFQUlBSkJBRFlDTkNBQ1FnQTNBaXdnQWtFQU5nSWdJQUZCQURZQ0NDQUJRZ0EzQWhRZ0FpZ0NEQ0lFQkVBZ0FTQUVRUUZ4TmdJd0N5QUNRclQrQURjQ0JDQUNRZ0EzQWp3Z0FrRUFOZ0lrSUFKQ2dJQ0NnQkEzQWhnZ0FrS0FnSUNBY0RjQ0VDQUNRb0dBZ0lCd053TEVOeUFDSUFKQnRBcHFJZ1EyQW5BZ0FpQUVOZ0pVSUFJZ0JEWUNVQXRCQUNBQVJRMEFHaUFCS0FJb0lBVWdBU2dDSkJFR0FDQUJRUUEyQWh3Z0FBc0xOZ0lBQ3dKQUlBTW9BZ0FFUUNBREtBSUVLQUlBUVEwZ0F5Z0NBQkFVSUFOQkFEb0FEd3dCQ3lBRFFRRTZBQThMSUFNdEFBOUJBWEVoQUNBRFFSQnFKQUFnQUF0dkFRRi9Jd0JCRUdzaUFTQUFOZ0lJSUFFZ0FTZ0NDRFlDQkFKQUlBRW9BZ1F0QUFSQkFYRkZCRUFnQVVFQU5nSU1EQUVMSUFFb0FnUW9BZ2hCQTBnRVFDQUJRUUkyQWd3TUFRc2dBU2dDQkNnQ0NFRUhTZ1JBSUFGQkFUWUNEQXdCQ3lBQlFRQTJBZ3dMSUFFb0Fnd0xMQUVCZnlNQVFSQnJJZ0VrQUNBQklBQTJBZ3dnQVNBQktBSU1OZ0lJSUFFb0FnZ1FGU0FCUVJCcUpBQUxQQUVCZnlNQVFSQnJJZ01rQUNBRElBQTdBUTRnQXlBQk5nSUlJQU1nQWpZQ0JFRUJJQU1vQWdnZ0F5Z0NCQkMxQVNFQUlBTkJFR29rQUNBQUM4NEZBUUYvSXdCQjBBQnJJZ1VrQUNBRklBQTJBa1FnQlNBQk5nSkFJQVVnQWpZQ1BDQUZJQU0zQXpBZ0JTQUVOZ0lzSUFVZ0JTZ0NRRFlDS0FKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUNBRktBSXNEZzhBQVFJREJRWUhCd2NIQndjSEJ3UUhDd0ovSUFVb0FrUWhBU0FGS0FJb0lRSWpBRUhnQUdzaUFDUUFJQUFnQVRZQ1dDQUFJQUkyQWxRZ0FDQUFLQUpZSUFCQnlBQnFRZ3dRS3lJRE53TUlBa0FnQTBJQVV3UkFJQUFvQWxRZ0FDZ0NXQkFZSUFCQmZ6WUNYQXdCQ3lBQUtRTUlRZ3hTQkVBZ0FDZ0NWRUVSUVFBUUZDQUFRWDgyQWx3TUFRc2dBQ2dDVkNBQVFjZ0FhaUFBUWNnQWFrSU1RUUFRZVNBQUtBSllJQUJCRUdvUU9VRUFTQVJBSUFCQkFEWUNYQXdCQ3lBQUtBSTRJQUJCQm1vZ0FFRUVhaENPQVFKQUlBQXRBRk1nQUNnQ1BFRVlka1lOQUNBQUxRQlRJQUF2QVFaQkNIWkdEUUFnQUNnQ1ZFRWJRUUFRRkNBQVFYODJBbHdNQVFzZ0FFRUFOZ0pjQ3lBQUtBSmNJUUVnQUVIZ0FHb2tBQ0FCUVFCSUN3UkFJQVZDZnpjRFNBd0lDeUFGUWdBM0EwZ01Cd3NnQlNBRktBSkVJQVVvQWp3Z0JTa0RNQkFySWdNM0F5QWdBMElBVXdSQUlBVW9BaWdnQlNnQ1JCQVlJQVZDZnpjRFNBd0hDeUFGS0FKQUlBVW9BandnQlNnQ1BDQUZLUU1nUVFBUWVTQUZJQVVwQXlBM0EwZ01CZ3NnQlVJQU53TklEQVVMSUFVZ0JTZ0NQRFlDSENBRktBSWNRUUE3QVRJZ0JTZ0NIQ0lBSUFBcEF3QkNnQUdFTndNQUlBVW9BaHdwQXdCQ0NJTkNBRklFUUNBRktBSWNJZ0FnQUNrRElFSU1mVGNESUFzZ0JVSUFOd05JREFRTElBVkJmellDRkNBRlFRVTJBaEFnQlVFRU5nSU1JQVZCQXpZQ0NDQUZRUUkyQWdRZ0JVRUJOZ0lBSUFWQkFDQUZFRFEzQTBnTUF3c2dCU0FGS0FJb0lBVW9BandnQlNrRE1CQkNOd05JREFJTElBVW9BaWdRdGdFZ0JVSUFOd05JREFFTElBVW9BaWhCRWtFQUVCUWdCVUovTndOSUN5QUZLUU5JSVFNZ0JVSFFBR29rQUNBREM0Z0JBUUYvSXdCQkVHc2lBaVFBSUFJZ0FEWUNEQ0FDSUFFMkFnZ2pBRUVRYXlJQUlBSW9BZ3cyQWd3Z0FDZ0NERUVBTmdJQUlBQW9BZ3hCQURZQ0JDQUFLQUlNUVFBMkFnZ2dBaWdDRENBQ0tBSUlOZ0lBQWtBZ0FpZ0NEQkMwQVVFQlJnUkFJQUlvQWd4QitKMEJLQUlBTmdJRURBRUxJQUlvQWd4QkFEWUNCQXNnQWtFUWFpUUFDKzRDQVFGL0l3QkJJR3NpQlNRQUlBVWdBRFlDR0NBRklBRTJBaFFnQlNBQ093RVNJQVVnQXpZQ0RDQUZJQVEyQWdnQ1FBSkFBa0FnQlNnQ0NFVU5BQ0FGS0FJVVJRMEFJQVV2QVJKQkFVWU5BUXNnQlNnQ0dFRUlha0VTUVFBUUZDQUZRUUEyQWh3TUFRc2dCU2dDREVFQmNRUkFJQVVvQWhoQkNHcEJHRUVBRUJRZ0JVRUFOZ0ljREFFTElBVkJHQkFaSWdBMkFnUWdBRVVFUUNBRktBSVlRUWhxUVE1QkFCQVVJQVZCQURZQ0hBd0JDeU1BUVJCcklnQWdCU2dDQkRZQ0RDQUFLQUlNUVFBMkFnQWdBQ2dDREVFQU5nSUVJQUFvQWd4QkFEWUNDQ0FGS0FJRVFmaXMwWkVCTmdJTUlBVW9BZ1JCaWMrVm1nSTJBaEFnQlNnQ0JFR1E4ZG1pQXpZQ0ZDQUZLQUlFUVFBZ0JTZ0NDQ0FGS0FJSUVDNnRRUUVRZVNBRklBVW9BaGdnQlNnQ0ZFRWtJQVVvQWdRUVl5SUFOZ0lBSUFCRkJFQWdCU2dDQkJDMkFTQUZRUUEyQWh3TUFRc2dCU0FGS0FJQU5nSWNDeUFGS0FJY0lRQWdCVUVnYWlRQUlBQUx2UmdCQW44akFFSHdBR3NpQkNRQUlBUWdBRFlDWkNBRUlBRTJBbUFnQkNBQ053TllJQVFnQXpZQ1ZDQUVJQVFvQW1RMkFsQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBSUFRb0FsUU9GQVlIQWd3RUJRb1BBQU1KRVFzUURnZ1NBUklORWd0QkFFSUFRUUFnQkNnQ1VCQktJUUFnQkNnQ1VDQUFOZ0lVSUFCRkJFQWdCRUovTndOb0RCTUxJQVFvQWxBb0FoUkNBRGNET0NBRUtBSlFLQUlVUWdBM0EwQWdCRUlBTndOb0RCSUxJQVFvQWxBb0FoQWhBU0FFS1FOWUlRSWdCQ2dDVUNFREl3QkJRR29pQUNRQUlBQWdBVFlDT0NBQUlBSTNBekFnQUNBRE5nSXNBa0FnQUNrRE1GQUVRQ0FBUVFCQ0FFRUJJQUFvQWl3UVNqWUNQQXdCQ3lBQUtRTXdJQUFvQWpncEF6QldCRUFnQUNnQ0xFRVNRUUFRRkNBQVFRQTJBandNQVFzZ0FDZ0NPQ2dDS0FSQUlBQW9BaXhCSFVFQUVCUWdBRUVBTmdJOERBRUxJQUFnQUNnQ09DQUFLUU13RUxjQk53TWdJQUFnQUNrRE1DQUFLQUk0S0FJRUlBQXBBeUNuUVFOMGFpa0RBSDAzQXhnZ0FDa0RHRkFFUUNBQUlBQXBBeUJDQVgwM0F5QWdBQ0FBS0FJNEtBSUFJQUFwQXlDblFRUjBhaWtEQ0RjREdBc2dBQ0FBS0FJNEtBSUFJQUFwQXlDblFRUjBhaWtEQ0NBQUtRTVlmVGNERUNBQUtRTVFJQUFwQXpCV0JFQWdBQ2dDTEVFY1FRQVFGQ0FBUVFBMkFqd01BUXNnQUNBQUtBSTRLQUlBSUFBcEF5QkNBWHhCQUNBQUtBSXNFRW9pQVRZQ0RDQUJSUVJBSUFCQkFEWUNQQXdCQ3lBQUtBSU1LQUlBSUFBb0Fnd3BBd2hDQVgyblFRUjBhaUFBS1FNWU53TUlJQUFvQWd3b0FnUWdBQ2dDRENrRENLZEJBM1JxSUFBcEF6QTNBd0FnQUNnQ0RDQUFLUU13TndNd0lBQW9BZ3dDZmlBQUtBSTRLUU1ZSUFBb0Fnd3BBd2hDQVgxVUJFQWdBQ2dDT0NrREdBd0JDeUFBS0FJTUtRTUlRZ0Y5Q3pjREdDQUFLQUk0SUFBb0FndzJBaWdnQUNnQ0RDQUFLQUk0TmdJb0lBQW9BamdnQUNnQ0RDa0RDRGNESUNBQUtBSU1JQUFwQXlCQ0FYdzNBeUFnQUNBQUtBSU1OZ0k4Q3lBQUtBSThJUUVnQUVGQWF5UUFJQUVoQUNBRUtBSlFJQUEyQWhRZ0FFVUVRQ0FFUW44M0EyZ01FZ3NnQkNnQ1VDZ0NGQ0FFS1FOWU53TTRJQVFvQWxBb0FoUWdCQ2dDVUNnQ0ZDa0RDRGNEUUNBRVFnQTNBMmdNRVFzZ0JFSUFOd05vREJBTElBUW9BbEFvQWhBUU15QUVLQUpRSUFRb0FsQW9BaFEyQWhBZ0JDZ0NVRUVBTmdJVUlBUkNBRGNEYUF3UEN5QUVJQVFvQWxBZ0JDZ0NZQ0FFS1FOWUVFSTNBMmdNRGdzZ0JDZ0NVQ2dDRUJBeklBUW9BbEFvQWhRUU15QUVLQUpRRUJVZ0JFSUFOd05vREEwTElBUW9BbEFvQWhCQ0FEY0RPQ0FFS0FKUUtBSVFRZ0EzQTBBZ0JFSUFOd05vREF3TElBUXBBMWhDLy8vLy8vLy8vLy8vQUZZRVFDQUVLQUpRUVJKQkFCQVVJQVJDZnpjRGFBd01DeUFFS0FKUUtBSVFJUUVnQkNnQ1lDRURJQVFwQTFnaEFpTUFRVUJxSWdBa0FDQUFJQUUyQWpRZ0FDQUROZ0l3SUFBZ0FqY0RLQ0FBQW40Z0FDa0RLQ0FBS0FJMEtRTXdJQUFvQWpRcEF6aDlWQVJBSUFBcEF5Z01BUXNnQUNnQ05Da0RNQ0FBS0FJMEtRTTRmUXMzQXlnQ1FDQUFLUU1vVUFSQUlBQkNBRGNET0F3QkN5QUFLUU1vUXYvLy8vLy8vLy8vL3dCV0JFQWdBRUovTndNNERBRUxJQUFnQUNnQ05Da0RRRGNER0NBQUlBQW9BalFwQXpnZ0FDZ0NOQ2dDQkNBQUtRTVlwMEVEZEdvcEF3QjlOd01RSUFCQ0FEY0RJQU5BSUFBcEF5QWdBQ2tES0ZRRVFDQUFBbjRnQUNrREtDQUFLUU1nZlNBQUtBSTBLQUlBSUFBcEF4aW5RUVIwYWlrRENDQUFLUU1RZlZRRVFDQUFLUU1vSUFBcEF5QjlEQUVMSUFBb0FqUW9BZ0FnQUNrREdLZEJCSFJxS1FNSUlBQXBBeEI5Q3pjRENDQUFLQUl3SUFBcEF5Q25haUFBS0FJMEtBSUFJQUFwQXhpblFRUjBhaWdDQUNBQUtRTVFwMm9nQUNrRENLY1FGeG9nQUNrRENDQUFLQUkwS0FJQUlBQXBBeGluUVFSMGFpa0RDQ0FBS1FNUWZWRUVRQ0FBSUFBcEF4aENBWHczQXhnTElBQWdBQ2tEQ0NBQUtRTWdmRGNESUNBQVFnQTNBeEFNQVFzTElBQW9BalFpQVNBQUtRTWdJQUVwQXpoOE53TTRJQUFvQWpRZ0FDa0RHRGNEUUNBQUlBQXBBeUEzQXpnTElBQXBBemdoQWlBQVFVQnJKQUFnQkNBQ053Tm9EQXNMSUFSQkFFSUFRUUFnQkNnQ1VCQktOZ0pNSUFRb0FreEZCRUFnQkVKL053Tm9EQXNMSUFRb0FsQW9BaEFRTXlBRUtBSlFJQVFvQWt3MkFoQWdCRUlBTndOb0RBb0xJQVFvQWxBb0FoUVFNeUFFS0FKUVFRQTJBaFFnQkVJQU53Tm9EQWtMSUFRZ0JDZ0NVQ2dDRUNBRUtBSmdJQVFwQTFnZ0JDZ0NVQkM0QWF3M0EyZ01DQXNnQkNBRUtBSlFLQUlVSUFRb0FtQWdCQ2tEV0NBRUtBSlFFTGdCckRjRGFBd0hDeUFFS1FOWVFqaFVCRUFnQkNnQ1VFRVNRUUFRRkNBRVFuODNBMmdNQndzZ0JDQUVLQUpnTmdKSUlBUW9Ba2dRT3lBRUtBSklJQVFvQWxBb0FndzJBaWdnQkNnQ1NDQUVLQUpRS0FJUUtRTXdOd01ZSUFRb0FrZ2dCQ2dDU0NrREdEY0RJQ0FFS0FKSVFRQTdBVEFnQkNnQ1NFRUFPd0V5SUFRb0FraEMzQUUzQXdBZ0JFSTROd05vREFZTElBUW9BbEFnQkNnQ1lDZ0NBRFlDRENBRVFnQTNBMmdNQlFzZ0JFRi9OZ0pBSUFSQkV6WUNQQ0FFUVFzMkFqZ2dCRUVOTmdJMElBUkJERFlDTUNBRVFRbzJBaXdnQkVFUE5nSW9JQVJCQ1RZQ0pDQUVRUkUyQWlBZ0JFRUlOZ0ljSUFSQkJ6WUNHQ0FFUVFZMkFoUWdCRUVGTmdJUUlBUkJCRFlDRENBRVFRTTJBZ2dnQkVFQ05nSUVJQVJCQVRZQ0FDQUVRUUFnQkJBME53Tm9EQVFMSUFRb0FsQW9BaEFwQXpoQy8vLy8vLy8vLy8vL0FGWUVRQ0FFS0FKUVFSNUJQUkFVSUFSQ2Z6Y0RhQXdFQ3lBRUlBUW9BbEFvQWhBcEF6ZzNBMmdNQXdzZ0JDZ0NVQ2dDRkNrRE9FTC8vLy8vLy8vLy8vOEFWZ1JBSUFRb0FsQkJIa0U5RUJRZ0JFSi9Od05vREFNTElBUWdCQ2dDVUNnQ0ZDa0RPRGNEYUF3Q0N5QUVLUU5ZUXYvLy8vLy8vLy8vL3dCV0JFQWdCQ2dDVUVFU1FRQVFGQ0FFUW44M0EyZ01BZ3NnQkNnQ1VDZ0NGQ0VCSUFRb0FtQWhBeUFFS1FOWUlRSWdCQ2dDVUNFRkl3QkI0QUJySWdBa0FDQUFJQUUyQWxRZ0FDQUROZ0pRSUFBZ0FqY0RTQ0FBSUFVMkFrUUNRQ0FBS1FOSUlBQW9BbFFwQXpnZ0FDa0RTSHhDLy84RGZGWUVRQ0FBS0FKRVFSSkJBQkFVSUFCQ2Z6Y0RXQXdCQ3lBQUlBQW9BbFFvQWdRZ0FDZ0NWQ2tEQ0tkQkEzUnFLUU1BTndNZ0lBQXBBeUFnQUNnQ1ZDa0RPQ0FBS1FOSWZGUUVRQ0FBSUFBb0FsUXBBd2dnQUNrRFNDQUFLUU1nSUFBb0FsUXBBemg5ZlVMLy93TjhRaENJZkRjREdDQUFLUU1ZSUFBb0FsUXBBeEJXQkVBZ0FDQUFLQUpVS1FNUU53TVFJQUFwQXhCUUJFQWdBRUlRTndNUUN3TkFJQUFwQXhBZ0FDa0RHRlFFUUNBQUlBQXBBeEJDQVlZM0F4QU1BUXNMSUFBb0FsUWdBQ2tERUNBQUtBSkVFTGtCUVFGeFJRUkFJQUFvQWtSQkRrRUFFQlFnQUVKL053TllEQU1MQ3dOQUlBQW9BbFFwQXdnZ0FDa0RHRlFFUUVHQWdBUVFHU0VCSUFBb0FsUW9BZ0FnQUNnQ1ZDa0RDS2RCQkhScUlBRTJBZ0FnQVFSQUlBQW9BbFFvQWdBZ0FDZ0NWQ2tEQ0tkQkJIUnFRb0NBQkRjRENDQUFLQUpVSWdFZ0FTa0RDRUlCZkRjRENDQUFJQUFwQXlCQ2dJQUVmRGNESUNBQUtBSlVLQUlFSUFBb0FsUXBBd2luUVFOMGFpQUFLUU1nTndNQURBSUZJQUFvQWtSQkRrRUFFQlFnQUVKL053TllEQVFMQUFzTEN5QUFJQUFvQWxRcEEwQTNBekFnQUNBQUtBSlVLUU00SUFBb0FsUW9BZ1FnQUNrRE1LZEJBM1JxS1FNQWZUY0RLQ0FBUWdBM0F6Z0RRQ0FBS1FNNElBQXBBMGhVQkVBZ0FBSitJQUFwQTBnZ0FDa0RPSDBnQUNnQ1ZDZ0NBQ0FBS1FNd3AwRUVkR29wQXdnZ0FDa0RLSDFVQkVBZ0FDa0RTQ0FBS1FNNGZRd0JDeUFBS0FKVUtBSUFJQUFwQXpDblFRUjBhaWtEQ0NBQUtRTW9mUXMzQXdnZ0FDZ0NWQ2dDQUNBQUtRTXdwMEVFZEdvb0FnQWdBQ2tES0tkcUlBQW9BbEFnQUNrRE9LZHFJQUFwQXdpbkVCY2FJQUFwQXdnZ0FDZ0NWQ2dDQUNBQUtRTXdwMEVFZEdvcEF3Z2dBQ2tES0gxUkJFQWdBQ0FBS1FNd1FnRjhOd013Q3lBQUlBQXBBd2dnQUNrRE9IdzNBemdnQUVJQU53TW9EQUVMQ3lBQUtBSlVJZ0VnQUNrRE9DQUJLUU00ZkRjRE9DQUFLQUpVSUFBcEF6QTNBMEFnQUNnQ1ZDa0RPQ0FBS0FKVUtRTXdWZ1JBSUFBb0FsUWdBQ2dDVkNrRE9EY0RNQXNnQUNBQUtRTTROd05ZQ3lBQUtRTllJUUlnQUVIZ0FHb2tBQ0FFSUFJM0EyZ01BUXNnQkNnQ1VFRWNRUUFRRkNBRVFuODNBMmdMSUFRcEEyZ2hBaUFFUWZBQWFpUUFJQUlMQmdCQitKMEJDd1lBSUFFUUZRdWZBd0VGZnlNQVFSQnJJZ0FrQUNBQklBSnNJZ0ZCZ0g5TEJIOUJNQVVDZnlBQlFZQi9Ud1JBUWZpZEFVRXdOZ0lBUVFBTUFRdEJBRUVRSUFGQkMycEJlSEVnQVVFTFNSc2lCVUhNQUdvUUdTSUJSUTBBR2lBQlFRaHJJUUlDUUNBQlFUOXhSUVJBSUFJaEFRd0JDeUFCUVFScklnWW9BZ0FpQjBGNGNTQUJRVDlxUVVCeFFRaHJJZ0VnQVVGQWF5QUJJQUpyUVE5TEd5SUJJQUpySWdOcklRUWdCMEVEY1VVRVFDQUNLQUlBSVFJZ0FTQUVOZ0lFSUFFZ0FpQURhallDQUF3QkN5QUJJQVFnQVNnQ0JFRUJjWEpCQW5JMkFnUWdBU0FFYWlJRUlBUW9BZ1JCQVhJMkFnUWdCaUFESUFZb0FnQkJBWEZ5UVFKeU5nSUFJQUlnQTJvaUJDQUVLQUlFUVFGeU5nSUVJQUlnQXhCWkN3SkFJQUVvQWdRaUFrRURjVVVOQUNBQ1FYaHhJZ01nQlVFUWFrME5BQ0FCSUFVZ0FrRUJjWEpCQW5JMkFnUWdBU0FGYWlJQ0lBTWdCV3NpQlVFRGNqWUNCQ0FCSUFOcUlnTWdBeWdDQkVFQmNqWUNCQ0FDSUFVUVdRc2dBVUVJYWdzaUFRUi9JQUFnQVRZQ0RFRUFCVUV3Q3dzaEFTQUFLQUlNSVFJZ0FFRVFhaVFBUVFBZ0FpQUJHd3NTQUVHNG1RRkJGVFlDQUNBQUlBRVF4QUVMRWdCQnRKa0JRUlEyQWdBZ0FDQUJFTVVCQ3djQUlBQXZBVEFMS0FCQjlKMEJMUUFBUlFSQVFmU2RBVUVCT2dBQUMwR3NtUUZCRXpZQ0FDQUFJQUVnQWhDQkFRc1dBRUhRbVFGQkVqWUNBQ0FBSUFFZ0FpQURFTVlCQ3hNQVFjeVpBVUVSTmdJQUlBQWdBU0FDRUg4TEZBQkJ5SmtCUVJBMkFnQWdBQ0FCSUFJUXh3RUxGZ0JCeEprQlFRODJBZ0FnQUNBQklBSWdBeERJQVFzVUFFSEFtUUZCRGpZQ0FDQUFJQUVnQWhESkFRc2hBRUc4bVFGQkRUWUNBRUgwblFFdEFBQkZCRUJCOUowQlFRRTZBQUFMUVFnTEtBQkJxSmtCUVF3MkFnQkI5SjBCTFFBQVJRUkFRZlNkQVVFQk9nQUFDeUFBSUFFZ0FoREtBUXNrQUVHd21RRkJDellDQUVIMG5RRXRBQUJGQkVCQjlKMEJRUUU2QUFBTElBQVF6Z0VMRWdCQnBKa0JRUW8yQWdBZ0FDQUJFTU1CQ3djQUlBQW9BaUFMS0FCQm9Ka0JRUWsyQWdCQjlKMEJMUUFBUlFSQVFmU2RBVUVCT2dBQUN5QUFJQUVnQWhEQ0FRc0VBRUVJQ3djQUlBQW9BZ0FMakFvQ0IzOEJmZ0pBQTBBQ1FBSi9Ba0FnQUNnQ1BFR0ZBa3NOQUNBQUVFVUNRQ0FBS0FJOElnSkJoUUpMRFFBZ0FRMEFRUUFQQ3lBQ1JRMENJQUpCQTA4TkFFRUFEQUVMSUFBZ0FDZ0NaRUdrbVFFb0FnQVJBZ0FMSVFNZ0FDQUFLQUpvT3dGY1FRSWhBZ0pBSUFBMUFtUWdBNjE5SWdsQ0FWTU5BQ0FKSUFBb0FqQkJoZ0pyclZVTkFDQUFLQUpzSUFBb0FuUlBEUUFnQTBVTkFDQUFJQU5CdUprQktBSUFFUUlBSWdKQkJVc05BRUVDSUFJZ0FDZ0NmRUVCUmhzaEFnc0NRQ0FBS0FKc0lnTkJBMGtOQUNBQ0lBTkxEUUFnQUNBQUtBS1VMU0lDUVFGcU5nS1VMU0FBS0FJOElRUWdBaUFBS0FLUUxXb2dBQ2dDWkNJR0lBQXZBVnhCZjNOcUlnSTZBQUFnQUNBQUtBS1VMU0lGUVFGcU5nS1VMU0FGSUFBb0FwQXRhaUFDUVFoMk9nQUFJQUFnQUNnQ2xDMGlCVUVCYWpZQ2xDMGdCU0FBS0FLUUxXb2dBMEVEYXpvQUFDQUFJQUFvQXFRdFFRRnFOZ0trTFNBRFFhM3FBR290QUFCQkFuUWdBR3BCakFscUlnTWdBeThCQUVFQmFqc0JBQ0FBSUFKQkFXc2lBaUFDUVFkMlFZQUNhaUFDUVlBQ1NSdEJzT1lBYWkwQUFFRUNkR3BCL0JKcUlnSWdBaThCQUVFQmFqc0JBQ0FBSUFBb0Fqd2dBQ2dDYkNJRFFRRnJJZ1ZyTmdJOElBQW9BcGd0SVFjZ0FDZ0NsQzBoQ0NBRUlBWnFRUU5ySWdRZ0FDZ0NaQ0lDU3dSQUlBQWdBa0VCYWlBRUlBSnJJZ0lnQTBFQ2F5SURJQUlnQTBrYlFhQ1pBU2dDQUJFSEFDQUFLQUprSVFJTElBQkJBRFlDWUNBQVFRQTJBbXdnQUNBQ0lBVnFJZ1EyQW1RZ0J5QUlSdzBDUVFBaEFpQUFJQUFvQWxRaUEwRUFUZ1IvSUFBb0FrZ2dBMm9GUVFBTElBUWdBMnRCQUJBbUlBQWdBQ2dDWkRZQ1ZDQUFLQUlBRUI0Z0FDZ0NBQ2dDRUEwQ0RBTUxJQUFvQW1BRVFDQUFLQUprSUFBb0FraHFRUUZyTFFBQUlRTWdBQ0FBS0FLVUxTSUVRUUZxTmdLVUxTQUVJQUFvQXBBdGFrRUFPZ0FBSUFBZ0FDZ0NsQzBpQkVFQmFqWUNsQzBnQkNBQUtBS1FMV3BCQURvQUFDQUFJQUFvQXBRdElnUkJBV28yQXBRdElBUWdBQ2dDa0MxcUlBTTZBQUFnQUNBRFFRSjBhaUlESUFNdkFZZ0JRUUZxT3dHSUFTQUFLQUtVTFNBQUtBS1lMVVlFUUNBQUlBQW9BbFFpQTBFQVRnUi9JQUFvQWtnZ0Eyb0ZRUUFMSUFBb0FtUWdBMnRCQUJBbUlBQWdBQ2dDWkRZQ1ZDQUFLQUlBRUI0TElBQWdBallDYkNBQUlBQW9BbVJCQVdvMkFtUWdBQ0FBS0FJOFFRRnJOZ0k4SUFBb0FnQW9BaEFOQWtFQUR3VWdBRUVCTmdKZ0lBQWdBallDYkNBQUlBQW9BbVJCQVdvMkFtUWdBQ0FBS0FJOFFRRnJOZ0k4REFJTEFBc0xJQUFvQW1BRVFDQUFLQUprSUFBb0FraHFRUUZyTFFBQUlRSWdBQ0FBS0FLVUxTSURRUUZxTmdLVUxTQURJQUFvQXBBdGFrRUFPZ0FBSUFBZ0FDZ0NsQzBpQTBFQmFqWUNsQzBnQXlBQUtBS1FMV3BCQURvQUFDQUFJQUFvQXBRdElnTkJBV28yQXBRdElBTWdBQ2dDa0MxcUlBSTZBQUFnQUNBQ1FRSjBhaUlDSUFJdkFZZ0JRUUZxT3dHSUFTQUFLQUtVTFNBQUtBS1lMVVlhSUFCQkFEWUNZQXNnQUNBQUtBSmtJZ05CQWlBRFFRSkpHellDcUMwZ0FVRUVSZ1JBSUFBZ0FDZ0NWQ0lCUVFCT0JIOGdBQ2dDU0NBQmFnVkJBQXNnQXlBQmEwRUJFQ1lnQUNBQUtBSmtOZ0pVSUFBb0FnQVFIa0VEUVFJZ0FDZ0NBQ2dDRUJzUEN5QUFLQUtVTFFSQVFRQWhBaUFBSUFBb0FsUWlBVUVBVGdSL0lBQW9Ba2dnQVdvRlFRQUxJQU1nQVd0QkFCQW1JQUFnQUNnQ1pEWUNWQ0FBS0FJQUVCNGdBQ2dDQUNnQ0VFVU5BUXRCQVNFQ0N5QUNDOFlPQWc5L0FYNERRQUpBQWtBQ1FBSkFBa0FDZndKQUFrQUNRQUpBQWtBQ1FBSkFBbjhDUUFKQUlBQW9BanhCaFFKTkJFQWdBQkJGSUFBb0Fqd2lBMEdGQWtzTkFTQUJEUUZCQUE4TElBZ2hCU0FHSVFRZ0N5RU5JQWxCLy84RGNVVU5BUXdEQ3lBRFJRMEhRUUFnQTBFRFNRMEJHZ3NnQUNBQUtBSmtRYVNaQVNnQ0FCRUNBQXNoQWlBQUtBSmtJZ1d0SUFLdGZTSVJRZ0ZURFFFZ0VTQUFLQUl3UVlZQ2E2MVZEUUVnQWtVTkFVRUJJQUFnQWtHNG1RRW9BZ0FSQWdBaUF5QURRZi8vQTNGQkEwa2JRUUVnQUNnQ2FDSU5RZi8vQTNFZ0JVSC8vd054U1JzaENTQUZJUVFMSUFBb0Fqd2lBaUFKUWYvL0EzRWlDa0VEYWtzTkFTQUpJUU1nQkNFRkRBTUxRUUVoQ2tFQUlRMUJBU0VESUFBb0FqeEJCRXNOQVVFQUlRa01Cd3NDZndKQUlBbEIvLzhEY1VFQ1RRUkFRUUVnQ1VFQmEwSC8vd054SWdkRkRRSWFJQVZCLy84RGNTSURJQVJCQVdwQi8vOERjU0lGU3cwQklBQWdCU0FISUFNZ0JXdEJBV29nQlNBSGFpQURTeHRCb0prQktBSUFFUWNBREFFTEFrQWdBQ2dDZEVFRWRDQUtTUTBBSUFKQkEwa05BQ0FKUVFGclFmLy9BM0VpQXlBRVFRRnFRZi8vQTNFaUFtb2hCeUFDSUFWQi8vOERjU0lNVHdSQVFhQ1pBU2dDQUNFRklBY2dERXNFUUNBQUlBSWdBeUFGRVFjQURBTUxJQUFnQWlBTUlBSnJRUUZxSUFVUkJ3QU1BZ3NnQnlBTVRRMEJJQUFnRENBSElBeHJRYUNaQVNnQ0FCRUhBQXdCQ3lBRUlBbHFRZi8vQTNFaUEwVU5BQ0FBSUFOQkFXdEJwSmtCS0FJQUVRSUFHZ3NnQ1FzaEF5QUVJUVVMSUFBb0Fqd2hBZ3RCQUNFSklBSkJod0pKRFFNZ0NpQUZRZi8vQTNFaUVHb2lCQ0FBS0FKRVFZWUNhMDhOQXlBQUlBUTJBbVJCQUNFTElBQWdCRUdrbVFFb0FnQVJBZ0FoQmlBQUtBSmtJZ2l0SUFhdGZTSVJRZ0ZURFFFZ0VTQUFLQUl3UVlZQ2E2MVZEUUVnQmtVTkFTQUFJQVpCdUprQktBSUFFUUlBSVFrZ0FDOEJhQ0lMSUFoQi8vOERjU0lDVHcwQklBbEIvLzhEY1NJSFFRTkpEUUVnQ0NBRFFmLy9BM0ZCQWtrTkFob2dDQ0FLSUF0QkFXcExEUUlhSUFnZ0NpQUNRUUZxU3cwQ0dpQUlJQUFvQWtnaUJDQUthMEVCYWlJR0lBdHFMUUFBSUFJZ0Jtb3RBQUJIRFFJYUlBZ2dCRUVCYXlJR0lBdHFJZzR0QUFBZ0FpQUdhaUlQTFFBQVJ3MENHaUFJSUFJZ0NDQUFLQUl3UVlZQ2F5SUdhMEgvL3dOeFFRQWdBaUFHU3hzaURFME5BaG9nQ0NBSFFmOEJTdzBDR2lBSklRWWdDQ0VLSUFNaEFpQUlJQXNpQjBFQ1NRMENHZ05BQWtBZ0FrRUJheUVDSUFaQkFXb2hCQ0FIUVFGcklRY2dDa0VCYXlFS0lBNUJBV3NpRGkwQUFDQVBRUUZySWc4dEFBQkhEUUFnQWtILy93TnhSUTBBSUF3Z0NrSC8vd054VHcwQUlBWkIvLzhEY1VIK0FVc05BQ0FFSVFZZ0IwSC8vd054UVFGTERRRUxDeUFJSUFKQi8vOERjVUVCU3cwQ0dpQUlJQVJCLy84RGNVRUNSZzBDR2lBSVFRRnFJUWdnQWlFRElBUWhDU0FISVFzZ0Nnd0NDeUFBSUFBb0FtUWlCa0VDSUFaQkFra2JOZ0tvTFNBQlFRUkdCRUJCQUNFQ0lBQWdBQ2dDVkNJQlFRQk9CSDhnQUNnQ1NDQUJhZ1ZCQUFzZ0JpQUJhMEVCRUNZZ0FDQUFLQUprTmdKVUlBQW9BZ0FRSGtFRFFRSWdBQ2dDQUNnQ0VCc1BDeUFBS0FLVUxRUkFRUUFoQkVFQUlRSWdBQ0FBS0FKVUlnRkJBRTRFZnlBQUtBSklJQUZxQlVFQUN5QUdJQUZyUVFBUUppQUFJQUFvQW1RMkFsUWdBQ2dDQUJBZUlBQW9BZ0FvQWhCRkRRY0xRUUVoQkF3R0MwRUJJUWtnQ0FzaEJpQUFJQkEyQW1RTElBTkIvLzhEY1NJQ1FRSkxEUUVnQTBILy93TnhSUTBFQ3lBQUtBS1VMU0VDUVFBaEJDQURJUTBEUUNBQUtBSklJQVZCLy84RGNXb3RBQUFoQ2lBQUlBSkJBV28yQXBRdElBQW9BcEF0SUFKcVFRQTZBQUFnQUNBQUtBS1VMU0lIUVFGcU5nS1VMU0FISUFBb0FwQXRha0VBT2dBQUlBQWdBQ2dDbEMwaUIwRUJhallDbEMwZ0J5QUFLQUtRTFdvZ0Nqb0FBQ0FBSUFwQkFuUnFJZ2RCaUFGcUlBY3ZBWWdCUVFGcU93RUFJQUFnQUNnQ1BFRUJhellDUENBRlFRRnFJUVVnQkNBQUtBS1VMU0lDSUFBb0FwZ3RSbW9oQkNBTlFRRnJJZzFCLy84RGNRMEFDeUFEUWYvL0EzRWhBZ3dCQ3lBQUlBQW9BcFF0SWdSQkFXbzJBcFF0SUFRZ0FDZ0NrQzFxSUFWQi8vOERjU0FOUWYvL0EzRnJJZ1E2QUFBZ0FDQUFLQUtVTFNJRlFRRnFOZ0tVTFNBRklBQW9BcEF0YWlBRVFRaDJPZ0FBSUFBZ0FDZ0NsQzBpQlVFQmFqWUNsQzBnQlNBQUtBS1FMV29nQTBFRGF6b0FBQ0FBSUFBb0FxUXRRUUZxTmdLa0xTQUNRYTNxQUdvdEFBQkJBblFnQUdwQmpBbHFJZ01nQXk4QkFFRUJhanNCQUNBQUlBUkJBV3NpQXlBRFFRZDJRWUFDYWlBRFFZQUNTUnRCc09ZQWFpMEFBRUVDZEdwQi9CSnFJZ01nQXk4QkFFRUJhanNCQUNBQUlBQW9BandnQW1zMkFqd2dBQ2dDbEMwZ0FDZ0NtQzFHSVFRTElBQWdBQ2dDWkNBQ2FpSUROZ0prSUFSRkRRRkJBQ0VFUVFBaEFpQUFJQUFvQWxRaUJVRUFUZ1IvSUFBb0FrZ2dCV29GUVFBTElBTWdCV3RCQUJBbUlBQWdBQ2dDWkRZQ1ZDQUFLQUlBRUI0Z0FDZ0NBQ2dDRUEwQkN3c2dCQXUwQndJRWZ3RitBa0FEUUFKQUFrQUNRQUpBSUFBb0FqeEJoUUpOQkVBZ0FCQkZBa0FnQUNnQ1BDSUNRWVVDU3cwQUlBRU5BRUVBRHdzZ0FrVU5CQ0FDUVFOSkRRRUxJQUFnQUNnQ1pFR2ttUUVvQWdBUkFnQWhBaUFBTlFKa0lBS3RmU0lHUWdGVERRQWdCaUFBS0FJd1FZWUNhNjFWRFFBZ0FrVU5BQ0FBSUFKQnVKa0JLQUlBRVFJQUlnSkJBMGtOQUNBQUlBQW9BcFF0SWdOQkFXbzJBcFF0SUFNZ0FDZ0NrQzFxSUFBb0FtUWdBQ2dDYUdzaUF6b0FBQ0FBSUFBb0FwUXRJZ1JCQVdvMkFwUXRJQVFnQUNnQ2tDMXFJQU5CQ0hZNkFBQWdBQ0FBS0FLVUxTSUVRUUZxTmdLVUxTQUVJQUFvQXBBdGFpQUNRUU5yT2dBQUlBQWdBQ2dDcEMxQkFXbzJBcVF0SUFKQnJlb0FhaTBBQUVFQ2RDQUFha0dNQ1dvaUJDQUVMd0VBUVFGcU93RUFJQUFnQTBFQmF5SURJQU5CQjNaQmdBSnFJQU5CZ0FKSkcwR3c1Z0JxTFFBQVFRSjBha0g4RW1vaUF5QURMd0VBUVFGcU93RUFJQUFnQUNnQ1BDQUNheUlGTmdJOElBQW9BcGd0SVFNZ0FDZ0NsQzBoQkNBQUtBSjBJQUpQUVFBZ0JVRUNTeHNOQVNBQUlBQW9BbVFnQW1vaUFqWUNaQ0FBSUFKQkFXdEJwSmtCS0FJQUVRSUFHaUFESUFSSERRUU1BZ3NnQUNnQ1NDQUFLQUprYWkwQUFDRUNJQUFnQUNnQ2xDMGlBMEVCYWpZQ2xDMGdBeUFBS0FLUUxXcEJBRG9BQUNBQUlBQW9BcFF0SWdOQkFXbzJBcFF0SUFNZ0FDZ0NrQzFxUVFBNkFBQWdBQ0FBS0FLVUxTSURRUUZxTmdLVUxTQURJQUFvQXBBdGFpQUNPZ0FBSUFBZ0FrRUNkR29pQWtHSUFXb2dBaThCaUFGQkFXbzdBUUFnQUNBQUtBSThRUUZyTmdJOElBQWdBQ2dDWkVFQmFqWUNaQ0FBS0FLVUxTQUFLQUtZTFVjTkF3d0JDeUFBSUFBb0FtUkJBV29pQlRZQ1pDQUFJQVVnQWtFQmF5SUNRYUNaQVNnQ0FCRUhBQ0FBSUFBb0FtUWdBbW8yQW1RZ0F5QUVSdzBDQzBFQUlRTkJBQ0VDSUFBZ0FDZ0NWQ0lFUVFCT0JIOGdBQ2dDU0NBRWFnVkJBQXNnQUNnQ1pDQUVhMEVBRUNZZ0FDQUFLQUprTmdKVUlBQW9BZ0FRSGlBQUtBSUFLQUlRRFFFTUFnc0xJQUFnQUNnQ1pDSUVRUUlnQkVFQ1NSczJBcWd0SUFGQkJFWUVRRUVBSVFJZ0FDQUFLQUpVSWdGQkFFNEVmeUFBS0FKSUlBRnFCVUVBQ3lBRUlBRnJRUUVRSmlBQUlBQW9BbVEyQWxRZ0FDZ0NBQkFlUVFOQkFpQUFLQUlBS0FJUUd3OExJQUFvQXBRdEJFQkJBQ0VEUVFBaEFpQUFJQUFvQWxRaUFVRUFUZ1IvSUFBb0FrZ2dBV29GUVFBTElBUWdBV3RCQUJBbUlBQWdBQ2dDWkRZQ1ZDQUFLQUlBRUI0Z0FDZ0NBQ2dDRUVVTkFRdEJBU0VEQ3lBREN4Z0FRZWlkQVVJQU53SUFRZkNkQVVFQU5nSUFRZWlkQVF1R0FRSUVmd0YrSXdCQkVHc2lBU1FBQWtBZ0FDa0RNRkFFUUF3QkN3TkFBa0FnQUNBRlFRQWdBVUVQYWlBQlFRaHFFSXNCSWdSQmYwWU5BQ0FCTFFBUFFRTkhEUUFnQWlBQktBSUlRWUNBZ0lCL2NVR0FnSUNBZWtacUlRSUxRWDhoQXlBRVFYOUdEUUVnQWlFRElBVkNBWHdpQlNBQUtRTXdWQTBBQ3dzZ0FVRVFhaVFBSUFNTEMvNk9BU2NBUVlBSUM0SUxhVzV6ZFdabWFXTnBaVzUwSUcxbGJXOXllUUJ1WldWa0lHUnBZM1JwYjI1aGNua0FMU3NnSUNBd1dEQjRBQzB3V0Nzd1dDQXdXQzB3ZUNzd2VDQXdlQUJhYVhBZ1lYSmphR2wyWlNCcGJtTnZibk5wYzNSbGJuUUFTVzUyWVd4cFpDQmhjbWQxYldWdWRBQnBiblpoYkdsa0lHeHBkR1Z5WVd3dmJHVnVaM1JvY3lCelpYUUFhVzUyWVd4cFpDQmpiMlJsSUd4bGJtZDBhSE1nYzJWMEFIVnVhMjV2ZDI0Z2FHVmhaR1Z5SUdac1lXZHpJSE5sZEFCcGJuWmhiR2xrSUdScGMzUmhibU5sY3lCelpYUUFhVzUyWVd4cFpDQmlhWFFnYkdWdVozUm9JSEpsY0dWaGRBQkdhV3hsSUdGc2NtVmhaSGtnWlhocGMzUnpBSFJ2YnlCdFlXNTVJR3hsYm1kMGFDQnZjaUJrYVhOMFlXNWpaU0J6ZVcxaWIyeHpBR2x1ZG1Gc2FXUWdjM1J2Y21Wa0lHSnNiMk5ySUd4bGJtZDBhSE1BSlhNbGN5VnpBR0oxWm1abGNpQmxjbkp2Y2dCT2J5Qmxjbkp2Y2dCemRISmxZVzBnWlhKeWIzSUFWR1ZzYkNCbGNuSnZjZ0JKYm5SbGNtNWhiQ0JsY25KdmNnQlRaV1ZySUdWeWNtOXlBRmR5YVhSbElHVnljbTl5QUdacGJHVWdaWEp5YjNJQVVtVmhaQ0JsY25KdmNnQmFiR2xpSUdWeWNtOXlBR1JoZEdFZ1pYSnliM0lBUTFKRElHVnljbTl5QUdsdVkyOXRjR0YwYVdKc1pTQjJaWEp6YVc5dUFHNWhiZ0F2WkdWMkwzVnlZVzVrYjIwQWFXNTJZV3hwWkNCamIyUmxJQzB0SUcxcGMzTnBibWNnWlc1a0xXOW1MV0pzYjJOckFHbHVZMjl5Y21WamRDQm9aV0ZrWlhJZ1kyaGxZMnNBYVc1amIzSnlaV04wSUd4bGJtZDBhQ0JqYUdWamF3QnBibU52Y25KbFkzUWdaR0YwWVNCamFHVmphd0JwYm5aaGJHbGtJR1JwYzNSaGJtTmxJSFJ2YnlCbVlYSWdZbUZqYXdCb1pXRmtaWElnWTNKaklHMXBjMjFoZEdOb0FERXVNaTR4TVM1NmJHbGlMVzVuQUdsdVpnQnBiblpoYkdsa0lIZHBibVJ2ZHlCemFYcGxBRkpsWVdRdGIyNXNlU0JoY21Ob2FYWmxBRTV2ZENCaElIcHBjQ0JoY21Ob2FYWmxBRkpsYzI5MWNtTmxJSE4wYVd4c0lHbHVJSFZ6WlFCTllXeHNiMk1nWm1GcGJIVnlaUUJwYm5aaGJHbGtJR0pzYjJOcklIUjVjR1VBUm1GcGJIVnlaU0IwYnlCamNtVmhkR1VnZEdWdGNHOXlZWEo1SUdacGJHVUFRMkZ1SjNRZ2IzQmxiaUJtYVd4bEFFNXZJSE4xWTJnZ1ptbHNaUUJRY21WdFlYUjFjbVVnWlc1a0lHOW1JR1pwYkdVQVEyRnVKM1FnY21WdGIzWmxJR1pwYkdVQWFXNTJZV3hwWkNCc2FYUmxjbUZzTDJ4bGJtZDBhQ0JqYjJSbEFHbHVkbUZzYVdRZ1pHbHpkR0Z1WTJVZ1kyOWtaUUIxYm10dWIzZHVJR052YlhCeVpYTnphVzl1SUcxbGRHaHZaQUJ6ZEhKbFlXMGdaVzVrQUVOdmJYQnlaWE56WldRZ1pHRjBZU0JwYm5aaGJHbGtBRTExYkhScExXUnBjMnNnZW1sd0lHRnlZMmhwZG1WeklHNXZkQ0J6ZFhCd2IzSjBaV1FBVDNCbGNtRjBhVzl1SUc1dmRDQnpkWEJ3YjNKMFpXUUFSVzVqY25sd2RHbHZiaUJ0WlhSb2IyUWdibTkwSUhOMWNIQnZjblJsWkFCRGIyMXdjbVZ6YzJsdmJpQnRaWFJvYjJRZ2JtOTBJSE4xY0hCdmNuUmxaQUJGYm5SeWVTQm9ZWE1nWW1WbGJpQmtaV3hsZEdWa0FFTnZiblJoYVc1cGJtY2dlbWx3SUdGeVkyaHBkbVVnZDJGeklHTnNiM05sWkFCRGJHOXphVzVuSUhwcGNDQmhjbU5vYVhabElHWmhhV3hsWkFCU1pXNWhiV2x1WnlCMFpXMXdiM0poY25rZ1ptbHNaU0JtWVdsc1pXUUFSVzUwY25rZ2FHRnpJR0psWlc0Z1kyaGhibWRsWkFCT2J5QndZWE56ZDI5eVpDQndjbTkyYVdSbFpBQlhjbTl1WnlCd1lYTnpkMjl5WkNCd2NtOTJhV1JsWkFCVmJtdHViM2R1SUdWeWNtOXlJQ1ZrQUhKaUFISXJZZ0J5ZDJFQUpYTXVXRmhZV0ZoWUFFNUJUZ0JKVGtZQVFVVUFMM0J5YjJNdmMyVnNaaTltWkM4QUxnQW9iblZzYkNrQU9pQUFVRXNHQndCUVN3WUdBRkJMQlFZQVVFc0RCQUJRU3dFQ0FFR1FFd3VCQVZJRkFBRG9Cd0FBdXdnQUFLQUlBQUNDQlFBQXBBVUFBSTBGQUFERkJRQUFmZ2dBQUVNSEFBRHBCQUFBTXdjQUFCSUhBQUN2QlFBQThBWUFBTm9JQUFCR0NBQUFVQWNBQUZvRUFBRElCZ0FBY3dVQUFFRUVBQUJtQndBQVp3Z0FBQ1lJQUFDMkJnQUE4UWdBQUFZSkFBQU9DQUFBMmdZQUFHZ0ZBQURRQndBQUlBQkJxQlFMRVFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUVITUZBc0pBUUFBQUFFQUFBQUNBRUg0RkFzQkFRQkJtQlVMQVFFQVFiSVZDLzVET2lZN0ptVW1aaVpqSm1BbUlpRFlKY3NsMlNWQ0prQW1haVpySmp3bXVpWEVKWlVoUENDMkFLY0FyQ1dvSVpFaGt5R1NJWkFoSHlLVUliSWx2Q1VnQUNFQUlnQWpBQ1FBSlFBbUFDY0FLQUFwQUNvQUt3QXNBQzBBTGdBdkFEQUFNUUF5QURNQU5BQTFBRFlBTndBNEFEa0FPZ0E3QUR3QVBRQStBRDhBUUFCQkFFSUFRd0JFQUVVQVJnQkhBRWdBU1FCS0FFc0FUQUJOQUU0QVR3QlFBRkVBVWdCVEFGUUFWUUJXQUZjQVdBQlpBRm9BV3dCY0FGMEFYZ0JmQUdBQVlRQmlBR01BWkFCbEFHWUFad0JvQUdrQWFnQnJBR3dBYlFCdUFHOEFjQUJ4QUhJQWN3QjBBSFVBZGdCM0FIZ0FlUUI2QUhzQWZBQjlBSDRBQWlQSEFQd0E2UURpQU9RQTRBRGxBT2NBNmdEckFPZ0E3d0R1QU93QXhBREZBTWtBNWdER0FQUUE5Z0R5QVBzQStRRC9BTllBM0FDaUFLTUFwUUNuSUpJQjRRRHRBUE1BK2dEeEFORUFxZ0M2QUw4QUVDT3NBTDBBdkFDaEFLc0F1d0NSSlpJbGt5VUNKU1FsWVNWaUpWWWxWU1ZqSlZFbFZ5VmRKVndsV3lVUUpSUWxOQ1VzSlJ3bEFDVThKVjRsWHlWYUpWUWxhU1ZtSldBbFVDVnNKV2NsYUNWa0pXVWxXU1ZZSlZJbFV5VnJKV29sR0NVTUpZZ2xoQ1dNSlpBbGdDV3hBOThBa3dQQUE2TUR3d08xQU1RRHBnT1lBNmtEdEFNZUlzWUR0UU1wSW1FaXNRQmxJbVFpSUNNaEkvY0FTQ0t3QUJraXR3QWFJbjhnc2dDZ0phQUFBQUFBQUpZd0IzY3NZUTd1dWxFSm1SbkViUWVQOUdwd05hVmo2YU9WWko0eWlOc09wTGpjZVI3cDFlQ0kyZEtYSzB5MkNiMThzWDRITGJqbmtSMi9rR1FRdHgzeUlMQnFTSEc1ODk1QnZvUjkxTm9hNitUZGJWRzExUFRIaGRPRFZwaHNFOENvYTJSNitXTDk3TWxsaWs5Y0FSVFpiQVpqWXowUCt2VU5DSTNJSUc0N1hoQnBUT1JCWU5WeWNXZWkwZVFEUEVmVUJFdjloUTNTYTdVS3BmcW90VFZzbUxKQzFzbTcyMEQ1dkt6amJOZ3lkVnpmUmM4TjF0eFpQZEdyckREWkpqb0EzbEdBVWRmSUZtSFF2N1gwdENFanhMTldtWlc2encrbHZiaWV1QUlvQ0lnRlg3TFpETVlrNlF1eGgzeHZMeEZNYUZpckhXSEJQUzFtdHBCQjNIWUdjZHNCdkNEU21Db1ExZStKaGJGeEg3VzJCcVhrdjU4ejFMam9vc2tIZURUNUFBK09xQW1XR0pnTzRic05hbjh0UFcwSWwyeGtrUUZjWStiMFVXdHJZbUZzSE5nd1pZVk9BR0x5N1pVR2JIdWxBUnZCOUFpQ1Y4UVA5Y2Jac0dWUTZiY1M2cmkraTN5SXVmemZIZDFpU1MzYUZmTjgwNHhsVE5UN1dHR3lUYzVSdFRwMEFMeWo0akM3MUVHbDMwclhsZGc5YmNUUnBQdjAxdE5xNldsRC9ObHVORWFJWjYzUXVHRGFjeTBFUk9VZEF6TmZUQXFxeVh3TjNUeHhCVkNxUVFJbkVCQUx2b1lnRE1rbHRXaFhzNFZ2SUFuVVpybWY1R0hPRHZuZVhwakoyU2tpbU5Dd3RLalh4eGM5czFtQkRiUXVPMXk5dDYxc3VzQWdnN2p0dHJPL21neml0Z09hMHJGME9VZlY2cTkzMHAwVkp0c0VneGJjY3hJTFkrT0VPMlNVUG1wdERhaGFhbm9Menc3a25mOEpreWV1QUFxeG5nZDlSSk1QOE5LakNJZG84Z0VlL3NJR2FWMVhZdmZMWjJXQWNUWnNHZWNHYTI1Mkc5VCs0Q3ZUaVZwNjJoRE1TdDFuYjkrNStmbnZ2bzVEdnJjWDFZNndZT2lqMXRaK2s5R2h4TUxZT0ZMeTMwL3haN3ZSWjFlOHB0MEd0VDlMTnJKSTJpc04yRXdiQ3EvMlNnTTJZSG9FUWNQdllOOVYzMmVvNzQ1dU1YbSthVWFNczJITEdvTm12S0RTYnlVMjRtaFNsWGNNekFOSEM3dTVGZ0lpTHlZRlZiNDd1c1VvQzcyeWtscTBLd1JxczF5bi85ZkNNYy9RdFl1ZTJTd2RydDVic01Ka215YnlZK3ljbzJwMUNwTnRBcWtHQ1p3L05nN3JoV2NIY2hOWEFBV0NTcitWRkhxNDRxNHJzWHM0RzdZTW00N1NrZzIrMWVXMzc5eDhJZC9iQzlUUzA0WkM0dFR4K0xQZGFHNkQyaC9ORnI2Qld5YTU5dUYzc0c5M1I3Y1k1bG9JaUhCcUQvL0tPd1ptWEFzQkVmK2VaWTlwcm1MNDAvOXJZVVhQYkJaNDRncWc3dElOMTFTREJFN0Nzd001WVNabnAvY1dZTkJOUjJsSjIzZHVQa3BxMGE3Y1d0YlpaZ3ZmUVBBNzJEZFRycnlweFo2NzNuL1Bza2ZwLzdVd0hQSzl2WXJDdXNvd2s3TlRwcU8wSkFVMjBMcVRCdGZOS1ZmZVZMOW4yU011ZW1henVFcGh4QUliYUYyVUsyOHFONzRMdEtHT0RNTWIzd1ZhamU4Q0xRQUFBQUJCTVJzWmdtSTJNc05UTFNzRXhXeGtSZlIzZllhbldsYkhsa0ZQQ0lyWnlFbTd3dEdLNk8vNnk5bjA0d3hQdGF4TmZxNjFqaTJEbnM4Y21JZFJFc0pLRUNQWlU5Tnc5SGlTUWU5aFZkZXVMaFRtdFRmWHRaZ2Nsb1NEQlZtWUc0SVlxUUNiMi9vdHNKckxOcWxkWFhmbUhHeHMvOTgvUWRTZURsck5vaVNFbGVNVm40d2dScktuWVhlcHZxYmg2UEhuMFBQb0pJUGV3Mld5eGRxcXJsMWQ2NTlHUkNqTWEyOXAvWEIycm1zeE9lOWFLaUFzQ1FjTGJUZ2NFdk0yUnQreUIxM0djVlJ3N1RCbGEvVDM4eXE3dHNJeG9uV1JISWswb0FlUSs3eWZGN3FOaEE1NTNxa2xPTyt5UFA5NTgzTytTT2hxZlJ2RlFUd3EzbGdGVDNud1JINWk2WWN0VDhMR0hGVGJBWW9WbEVDN0RvMkQ2Q09td3RrNHZ3M0ZvRGhNOUxzaGo2ZVdDczZXalJNSkFNeGNTREhYUll0aSttN0tVK0YzVkYyN3VoVnNvS1BXUDQySWx3NldrVkNZMTk0UnFjekgwdnJoN0pQTCt2VmMxMkp5SGVaNWE5NjFWRUNmaEU5WldCSU9GaGtqRlEvYWNEZ2ttMEVqUGFkci9XWG1XdVo4SlFuTFYyUTQwRTZqcnBFQjRwK0tHQ0hNcHpOZy9id3FyK0VrcmU3UVA3UXRneEtmYkxJSmhxc2tTTW5xRlZQUUtVWisrMmgzWmVMMmVUOHZ0MGdrTm5RYkNSMDFLaElFOHJ4VFM3T05TRkp3M21WNU1lOStZUDd6NXVlL3d2MytmSkhRMVQyZ3k4ejZOb3FEdXdlUm1uaFV2TEU1WmFlb1M1aURPd3FwbUNMSityVUppTXV1RUU5ZDcxOE9iUFJHelQvWmJZd093blJERWxyekFpTkI2c0Z3Yk1HQVFYZllSOWMybHdibUxZN0Z0UUNsaElRYnZCcUtRWEZidTFwb21PaDNROW5aYkZvZVR5MFZYMzQyREp3dEd5ZmRIQUErRWdDWXVWTXhnNkNRWXE2TDBWTzFraGJGOU4xWDlPL0VsS2ZDNzlXVzJmYnB2QWV1cUkwY3QydmVNWndxN3lxRjdYbHJ5cXhJY05OdkcxMzRMaXBHNGVFMjNtYWdCOFYvWTFUb1ZDSmw4MDNsODdJQ3BNS3BHMmVSaERBbW9KOHB1SzdGNVBtZjN2MDZ6UFBXZS8zb3o3eHJxWUQ5V3JLWlBnbWZzbjg0aEt1d0pCd3M4UlVITlRKR0toNXpkekVIdE9Gd1NQWFFhMUUyZzBaNmQ3SmRZMDdYK3NzUDV1SFN6TFhNK1kyRTErQktFcGF2Q3lPTnRzaHdvSjJKUWJ1RVJsMGpBd2RzT0JyRVB4VXhoUTRPS0VLWVQyY0RxVlIrd1BwNVZZSExZa3dmeFRpQlh2UWptSjJuRHJQY2xoV3FHd0JVNVZveFQveVpZbUxYMkZONXpoZFA0VWxXZnZwUWxTM1hlOVFjekdJVGlvMHRVcnVXTkpIb3V4L1EyYUFHN1BOK1hxM0NaVWR1a1Voc0w2QlRkZWcyRWpxcEJ3a2phbFFrQ0N0bFB4SGtlYWVXcFVpOGoyWWJrYVFuS29xOTRMekw4cUdOME90aTN2M0FJKy9tMmIzaHZCVDgwS2NOUDRPS0puNnlrVCs1Sk5CdytCWExhVHRHNWtKNmQvMWJ0V3RsM1BSYWZzVTNDVlB1ZGpoSTk3R3VDYmp3bnhLaE04dy9pbkw5SkpNQUFBQUFOMnJDQVc3VWhBTlp2a1lDM0tnSkIrdkN5d2F5ZkkwRWhSWlBCYmhSRXc2UE85RVAxb1dYRGVIdlZReGsrUm9KVTVQWUNBb3RuZ285UjF3TGNLTW1IRWZKNUIwZWQ2SWZLUjFnSHF3TEx4dWJZZTBhd3QrckdQVzFhUm5JOGpVUy81ajNFNlltc1JHUlRITVFGRm84RlNNdy9oUjZqcmdXVGVSNkYrQkdUVGpYTEk4NWpwTEpPN240Q3pvODdrUS9DNFNHUGxJNndEeGxVQUk5V0JkZU5tOTluRGMydzlvMUFha1lOSVMvVnpHejFaVXc2bXZUTXQwQkVUT1E1V3NrcDQrcEpmNHg3eWZKV3kwbVRFMWlJM3Nub0NJaW1lWWdGZk1rSVNpMGVDb2Yzcm9yUm1EOEtYRUtQaWowSEhFdHczYXpMSnJJOVM2dG9qY3Z3STJhY1BmbldIR3VXUjV6bVRQY2Nod2xrM2NyVDFGMmN2RVhkRVdiMVhWNDNJbCtUN1pMZnhZSURYMGhZczk4cEhTQWVaTWVRbmpLb0FSNi9jckdlN0F1dkd5SFJINXQzdm80YittUSttNXNoclZyVyt4M2FnSlNNV2cxT1BOcENIK3ZZajhWYldObXF5dGhVY0hwWU5UWHBtWGp2V1JrdWdNaVpvMXA0R2NneTlkSUY2RVZTVTRmVTB0NWRaRksvR1BlVDhzSkhFNlN0MXBNcGQyWVRaaWF4RWF2OEFaSDlrNUFSY0VrZ2tSRU1zMUJjMWdQUUNybVNVSWRqSXREVUdqeFZHY0NNMVUrdkhWWENkYTNWb3pBK0ZPN3FqcFM0aFI4VU5WK3ZsSG9PZUphMzFNZ1c0YnRabG14aDZSWU5KSHJYUVA3S1Z4YVJXOWViUyt0WDRBYk5lRzNjZmZnN3MreDR0bWxjK05jc3p6bWE5bis1ekpudU9VRkRYcmtPRW9tN3c4ZzVPNVducUxzWWZSZzdlVGlMK2pUaU8zcGlqYXI2NzFjYWVyd3VCUDl4OUxSL0o1c2wvNnBCbFgvTEJBYStodDYyUHRDeEo3NWRhNWMrRWpwQVBOL2c4THlKajJFOEJGWFJ2R1VRUW4wb3l2TDlmcVZqZmZOLzAvMllGMTQyVmMzdXRnT2lmemFPZU0rMjd6MWNkNkxuN1BmMGlIMTNlVkxOOXpZREd2WDcyYXAxcmJZNzlTQnNpM1ZCS1JpMERQT29ORnFjT2JUWFJvazBoRCtYc1VubEp6RWZpcmF4a2xBR01mTVZsZkMrenlWdzZLQzA4R1Y2QkhBcUs5Tnk1L0ZqOHJHZThuSThSRUx5WFFIUk14RGJZYk5HdFBBenkyNUFzNUFscStSZC94dGtDNUNLNUlaS09tVG5ENm1scXRVWkpmeTZpS1Z4WURnbFBqSHZKL1ByWDZlbGhNNG5LRjUrcDBrYjdXWUV3VjNtVXE3TVp0OTBmT2FNRFdKalFkZlM0eGU0UTJPYVl2UGoreWRnSXJiOTBLTGdra0VpYlVqeG9pSVpKcUR2dzVZZ3Vhd0hvRFIydHlCVk15VGhHT21VWVU2R0JlSERYTFZocURRNHFtWHVpQ296Z1JtcXZsdXBLdDhlT3V1U3hJcHJ4S3NiNjBseHEyc0dJSHhweS9yTTZaMlZYV2tRVCszcGNRcCtLRHpRenFocXYxOG81Mlh2cUxRYzhTMTV4a0d0TDZuUUxhSnpZSzNETnZOc2p1eEQ3TmlEMG14VldXTHNHZ2kxN3RmU0JXNkJ2WlR1REdja2JtMGl0NjhnK0FjdmRwZVdyL3ROSmkrQUFBQUFHVm52TGlMeUFtcTdxKzFFbGVYWW84eThONDMzRjlySmJrNDE1M3ZLTFRGaWs4SWZXVGd2VzhCaHdIWHVML1dTdDNZYXZJemQ5L2dWaEJqV0o5WEdWRDZNS1hvRko4UStuSDRyRUxJd0h2ZnJhZkhaME1JY25VbWI4N05jSCt0bFJVWUVTMzd0NlEvbnRBWWh5Zm96eHBDajNPaXJDREdzTWxIZWdnK3J6S2dXOGlPR0xWbk93clFBSWV5YVRoUUx3eGY3SmZpOEZtRmg1ZmxQZEdIaG1XMDREcmRXaytQeno4b00zZUdFT1RxNDNkWVVnM1k3VUJvdjFING9mZ3I4TVNmbDBncU1DSmFUMWVlNHZadlNYK1RDUFhIZmFkQTFSakEvRzFPMEo4MUs3Y2pqY1VZbHArZ2Z5b25HVWY5dW53Z1FRS1NqL1FROStoSXFEMVlGSnRZUDZnanRwQWRNZFAzb1lscXozWVVENmpLck9FSGY3NkVZTU1HMG5DZ1hyY1hIT1padUtuMFBOOFZUSVhud3RIZ2dINXBEaS9MZTJ0SWQ4T2lEdzNMeDJpeGN5bkhCR0ZNb0xqWjlaaHZSSkQvMC94K1VHYnVHemZhVmswbnVRNG9RQVcyeHUrd3BLT0lEQndhc051QmY5ZG5PWkY0MGl2MEgyNlRBL2NtTzJhUW1vT0lQeStSN1ZpVEtWUmdSTFF4Qi9nTTM2aE5IcnJQOGFiczM1TCtpYmd1Um1jWG0xUUNjQ2ZzdTBqd2NkNHZUTWt3Z1BuYlZlZEZZNXlnUDJ2NXg0UFRGMmcyd1hJUGlubkxOMTNrcmxEaFhFRC9WRTRsbU9qMmM0aUxyaGJ2TnhiNFFJSUVuU2MrdkNRZjZTRkJlRldacjlmZ2k4cXdYRE03dGxudFh0SGxWYkIrVUVmVkdlei9iQ0U3WWdsR2g5cm42VExJZ282T2NOU2U3U2l4K1ZHUVgxYmtnam94V0RxRENZK241bTR6SHdqQmhnMXRwanExcE9GQXZjR0cvQVV2S1VrWFNrNzFyL04ySWpLV0VaNktlTDRybUIzWmx5Qkx5ZlI0THE1SXdNQUIvZEtsWmtGcUhGNlc5M2s1S2srWGxwOWQ4dkVqNVFVWmEwMWdmdGYxanRGaTUrdTIzbDlTamduQ04rbTFldGxHQUdpOElielE2akhmaUk5V1l6QmgrZFlpQko1cW1yMm12UWZZd1FHL05tNjByVk1KQ0JXYVRuSWQveW5PcFJHR2U3ZDA0Y2NQemRrUWtxaStyQ3BHRVJrNEkzYWxnSFZteHRnUUFYcGcvcTdQY3B2SmM4b2k4YVJYUjVZWTc2azVyZjNNWGhGRkJ1NU5kbU9KOGM2TkprVGM2RUg0WkZGNUwvazBIcE5CMnJFbVU3L1dtdXZweHZtempLRkZDMklPOEJrSGFVeWh2bEdiUE5zMko0UTFtWktXVVA0dUxwbTVWQ2I4M3VpZUVuRmRqSGNXNFRUT0xqYXBxMG1LRVVYbVB3TWdnWU83ZHBIZzR4UDJYRnY5V2VsSm1ENVY4U0VHZ214RVlUN1VxczZMeHMrcE4zNDRRWC9XWFNiRGJyT0pkbnpXN3NyRWI5WWRXUXF4b2VIa0hoVHpnWG1vUzlkcHl4T3lEbmVyWEtIQ3VUbkdmZ0dBL3FtYzVaa1ZKQXMyb0RadVVSeU9weFptaHNKeDJqNHMzbThzU2JuVGxQQ0JCQW1WNXJpeGUwa05veDR1c1J0SVB0SkRMVmx1KzhQMjIrbW1rV2RSSDZtd3pIck9ESFNVWWJsbThRWUYzZ0FBQUFCM0J6Q1c3ZzVoTEprSlVib0hiY1FaY0dyMGorbGpwVFdlWkpXakR0dUlNbm5jdUtUZzFla2VsOUxaaUFtMlRDdCtzWHk5NTdndEI1Qy9IWkVkdHhCa2FyQWc4dk81Y1VpRXZrSGVHdHJVZlczZDVPdjAxTFZSZzlPRnh4TnNtRlprYTZqQS9XTDVlb3BseWV3VUFWeFBZd1pzMmZvUFBXT05DQTMxTzI0Z3lFeHBFRjdWWUVIa29tZHhjandENU5GTEJOUkgwZzJGL2FVS3RXczF0YWo2UXJLWWJOdTd5ZGFzdlBsQU10aHM0MFhmWEhYYzFnM1BxOUU5V1NiWk1LeFIzZ0E2eU5kUmdML1FZUllodFBTMVZyUEVJOCs2bFptNHZhVVBLQUs0bmw4RmlBakdETm15c1F2cEpDOXZmSWRZYUV3UndXRWRxN1ptTFQxMjNFR1FBZHR4QnBqU0lMenYxUkFxY2JHRmlRYTJ0UitmditTbDZMalVNM2dIeWFJUEFQazBsZ21vanVFT21CaC9hZzI3Q0cwOUxaRmtiSmZtWTF3QmEydFI5QnhzWVdLRlpURFk4bUlBVG13R2xlMGJBYVY3Z2dqMHdmVVB4RmRsc05uR0VyZnBVSXUrdU9yOHVZaDhZdDBkM3hYYUxVbU0wM3p6KzlSTVpVMnlZVmc2dFZIT283d0FkTlM3TU9KSzM2VkJQZGlWMTZUUnhHM1QxdlQ3UTJucGFqUnUyZnl0WjRoRzJtQzQwRVFFTFhNekF4M2xxZ3BNWDkwTmZNbFFCWEU4SndKQnFyNExFQkRKRENDR1YyaTFKU0J2aGJPNVp0UUp6bUhrbjE3ZStRNHAyY21Zc05DWUlzZlhxTFJac3owWExyUU5nYmU5WER2QXVteXQ3YmlESUpxL3M3WUR0dUlNZExIU211clZSem1kMG5ldkJOc21GWFBjRm9Qall3c1NsR1E3aEExdGFqNTZhbHFvNUE3UEM1TUovNTBLQUs0bmZRZWVzZkFQazBTSENLUFNIZ0h5YUdrR3d2NzNZbGRkZ0dWbnl4bHNObkZ1YXdibi90UWJkb25USytBUTJucGFaOTFLelBtNTMyK092dS81RjdlK1EyQ3dqdFhXMXFQb29kR1RmampZd3NSUDMvSlMwYnRuOGFhOFYyYy90UWJkU0xJMlM5Z05LOXF2Q2h0TU5nTks5a0VFZW1EZllPL0RxR2ZmVlRGdWp1OUdhYjU1eTJHempMeG1neG9sYjlLZ1VtamlOc3dNZDVXN0MwY0RJZ0lXdVZVRkppL0Z1anUrc3IwTEtDdTBXcEpjczJvRXd0Zi9wN1hRenpFczJaNkxXOTZ1SFp0a3dyRHNZL0ltZFdxam5BSnRrd3FjQ1FhcDZ3NDJQM0lIWjRVRkFGY1RsYjlLZ3VLNGVoUjdzU3V1RExZYk9KTFNqcHZsMWI0TmZOenZ0d3ZiM3lHRzA5TFU4ZFRpUW1qZHMvZ2Yyb051Z2I0V3pmYTVKbHR2c0hmaEdMZEhkNGdJV3ViL0QycHdaZ1k3eWhFQkMxeVBaWjcvK0dLdWFXRnIvOU1XYk05Rm9BcmllTmNOMHU1T0JJTlVPUU96d3FkbkptSFFZQmIzU1dsSFRUNXVkOXV1MFdwSzJkWmEzRURmQzJZMzJEdndxYnl1VTk2N25zVkhzczkvTUxYLzZiMjk4aHpLdXNLS1U3T1RNQ1MwbzZhNjBEWUZ6ZGNHazFUZVZ5a2oyV2UvczJaNkxzUmhTcmhkYUJzQ0ttOHJsTFFMdmpmRERJNmhXZ1hmR3kwQzc0MEFBQUFBR1JzeFFUSTJZb0lyTFZQRFpHekZCSDEzOUVWV1dxZUdUMEdXeDhqWmlnalJ3cnRKK3Uvb2l1UDAyY3VzdFU4TXRhNStUWjZETFk2SG1CelBTc0lTVVZQWkl4QjQ5SERUWWU5QmtpNnUxMVUzdGVZVUhKaTExd1dEaEphQ0c1aFptd0NwR0xBdCt0dXBOc3VhNW5kZFhmOXNiQnpVUVQvZnpWb09ucFdFSktLTW54WGpwN0pHSUw2cGQySHg2T0dtNlBQUTU4UGVneVRheGJKbFhWMnVxa1JHbit0dmE4d29kbkQ5YVRreGE2NGdLbHJ2Q3djSkxCSWNPRzNmUmpienhsMEhzdTF3VkhIMGEyVXd1eXJ6OTZJeHdyYUpISkYxa0FlZ05CZWZ2UHNPaEkyNkphbmVlVHl5N3poejgzbi9hdWhJdmtIRkczMVkzaW84OEhsUEJlbGlma1RDVHkySDIxUWN4cFFWaWdHTkRydEFwaVBvZzc4NDJjSTRvTVVOSWJ2MFRBcVdwNDhUalpiT1hNd0FDVVhYTVVodSttS0xkK0ZUeXJxN1hWU2pvR3dWaUkwLzFwR1dEcGZlMTVoUXg4eXBFZXpoK3RMMStzdVRjbUxYWEd0NTVoMUFWTFhlV1UrRW54WU9FbGdQRlNNWkpEaHcyajBqUVp0bC9XdW5mT1phNWxmTENTVk8wRGhrQVpHdW94aUtuK0l6cDh3aEtyejlZSzBrNGErMFA5RHVueEtETFlZSnNtekpTQ1NyMEZNVjZ2dCtSaW5pWlhkb0x6OTU5allrU0xjZENSdDBCQklxTlV0VHZQSlNTSTJ6ZVdYZWNHQis3ekhuNXZQKy92M0N2OVhRa1h6TXk2QTlnNG8yK3BxUkI3dXh2RlI0cUtkbE9UdURtRXNpbUtrS0NiWDZ5UkN1eTRoZjcxMVBSdlJzRG0zWlA4MTB3ZzZNODFvU1ErcEJJd0xCYkhEQjJIZEJnSmMyMTBlT0xlWUdwUUMxeGJ3YmhJUnhRWW9hYUZxN1cwTjM2SmhhYk5uWkZTMVBIZ3cyZmw4bkd5MmNQZ0FjM2JtWUFCS2dnekZUaTY1aWtKSzFVOUhkOU1VV3hPLzBWKy9DcDVUMjJaYlZyZ2U4NmJjY2phaWNNZDVyaFNydktzcHJlZTNUY0VpcytGMGJiK0ZHS2k1bTNqYmhmOFVIb0ZUb1ZHTk44MlVpQXJMejVSdXB3cVF3aEpGbktaK2dKdVRGcnJqOTNwLzUxdlBNT3Mvby9YdUFxV3U4bWJKYS9iS2ZDVDZyaERoL0xCd2tzRFVIRmZFZUtrWXlCekYzYzBodzRiUlJhOUQxZWthRE5tTmRzbmZMK3RkTzB1SG1EL25NdGN6ZzE0U05yNVlTU3JhTkl3dWRvSERJaEx0QmlRTWpYVVlhT0d3SE1SVS94Q2dPRG9WblQ1aENmbFNwQTFWNStzQk1Zc3VCZ1RqRkg1Z2o5RjZ6RHFlZHFoV1czT1ZVQUJ2OFR6RmExMkppbWM1NVU5aEo0VThYVVBwK1ZudlhMWlZpekJ6VUxZMktFelNXdTFJZnUraVJCcURaMEY1KzgreEhaY0t0YkVpUmJuVlRvQzg2RWpib0l3a0hxUWdrVkdvUlAyVXJscWQ1NUkrOFNLV2trUnRtdllvcUovTEx2T0RyMEkyaHdQM2VZdG5tN3lNVXZPRzlEYWZRL0NhS2d6OC9rYkorY05Ba3VXbkxGZmhDNWtZN1cvMTNldHhsYTdYRmZscjA3bE1KTi9kSU9IYTRDYTZ4b1JLZjhJby96RE9USlAxeUFBQUFBQUhDYWpjRGhOUnVBa2ErV1FjSnFOd0d5OExyQkkxOHNnVlBGb1VPRTFHNEQ5RTdqdzJYaGRZTVZlL2hDUnI1WkFqWWsxTUtuaTBLQzF4SFBSd21vM0FkNU1sSEg2SjNIaDVnSFNrYkx3dXNHdTFobXhpcjM4SVphYlgxRWpYeXlCUDNtUDhSc1NhbUVITk1rUlU4V2hRVS9qQWpGcmlPZWhkNjVFMDRUVWJnT1k4czF6dkprbzQ2Qy9pNVAwVHVQRDZHaEFzOHdEcFNQUUpRWlRaZUYxZzNuSDF2TmRyRE5qUVlxUUV4VjcrRU1KWFZzekxUYStvekVRSGRKR3Zsa0NXcGo2Y243ekgrSmkxYnlTTmlUVXdpb0NkN0lPYVpJaUVrOHhVcWVMUW9LN3JlSHluOFlFWW9QZ3B4TFhFYzlDeXpkc011OWNpYUx6ZWlyWENhamNCeFdPZjNjeDVacm5MY001bDNreVVjZGxGUEszUVg4WEoxMVp0RmZvbmNlSDlMdGs5OURRZ1dmTTlpSVhtQWRLUjRRaDZUZWdTZ3ludkd5djFzdkM2d2JYNUVoMjg0K3Q1dStwRHBhN1dHYkdwMzdGdG9NVklDYWZNNE5XS3Zmd2hqYlJVL1lTdXJabURwd1ZGbHB0ZlVaR1M5NDJZaUE3cG40R21OU05mTElFa1ZvUmRMVXg5T1NwRjFlVS9lWS94T0hBbkxURnEza2syWTNhVkd4SnFZUndid3IwVkFUdlpFZ2lUQlFjMHlSRUFQV0hOQ1NlWXFRNHVNSFZUeGFGQlZNd0puVjNXOFBsYTMxZ2xUK01DTVVqcXF1MUI4Rk9KUnZuN1ZXdUk1NkZzZ1U5OVpadTJHV0tTSHNWM3JrVFJjS2ZzRFhtOUZXbCt0TDIzaE5SdUE0UGR4dCtLeHorN2pjNlhaNWp5elhPZisyV3ZsdUdjeTVIb05CZThtU2pqdTVDQVA3S0tlVnUxZzlHSG9MK0xrNmUySTArdXJOb3JxYVZ5OS9STzQ4UHpSMHNmK2wyeWUvMVVHcWZvYUVDejcySG9iK1o3RVF2aGNyblh6QU9sSThzS0RmL0NFUFNieFJsY1I5QWxCbFBYTEs2UDNqWlg2OWsvL3pkbDRYV0RZdWpkWDJ2eUpEdHMrNHpuZWNmVzgzN09maTkzMUlkTGNOMHZsMTJzTTJOYXBadS9VNzlpMjFTMnlnZEJpcEFUUm9NNHowK1p3YXRJa0dsM0ZYdjRReEp5VUo4YmFLbjdIR0VCSndsZFd6TU9WUFB2QjA0S2l3QkhvbGN0TnI2aktqOFdmeU1sN3hza0xFZkhNUkFkMHpZWnRROC9BMHhyT0Fya3RrYStXUUpCdC9IZVNLMEl1aytrb0daYW1QcHlYWkZTcmxTTHE4cFRnZ01XZnZNZjRubjZ0ejV3NEU1YWQrbm1obUxWdkpKbDNCUk9iTWJ0S212UFJmWTJKTlRDTVMxOEhqZzNoWG8vUGkybUtnSjNzaTBMMzI0a0VTWUtJeGlPMWc1cGtpSUpZRHIrQUhyRG1nZHphMFlTVHpGU0ZVYVpqaHhjWU9vYlZjZzJwNHRDZ3FDQzZsNnBtQk02cnBHNzVydXQ0Zks4cEVrdXRiNndTckszR0phZnhnUmltTStzdnBIVlZkcVczUDBHZytDbkVvVHBEODZOOC9hcWl2cGVkdGNSejBMUUdHZWUyUUtlK3Q0TE5pYkxOMnd5ekQ3RTdzVWtQWXJDTFpWVzcxeUpvdWhWSVg3aFQ5Z2E1a1p3eHZONkt0TDBjNElPL1dsN2F2cGcwN1FBQUFBQzR2R2RscWduSWl4SzFyKzZQWXBkWE45N3dNaVZyWDl5ZDF6aTV4YlFvNzMwSVQ0cHZ2ZUJrMXdHSEFVcld2N2p5YXRqZDROOTNNMWhqRUZaUUdWZWY2S1V3K3ZvUW54UkNyUGh4MzN2QXlHZkhwNjExY2doRHpjNXZKcFd0ZjNBdEVSZ1ZQNlMzKzRjWTBKNGF6K2dub25PUFFyREdJS3dJZWtmSm9ES3ZQaGlPeUZzS08yZTFzb2NBMEM5UU9HbVg3RjhNaFZudzRqM2xsNGRsaG9mUjNUcmd0TStQVDFwM015Zy82dVFRaGxKWWQrTkE3ZGdOK0ZHL2FQQXIrS0ZJbDUvRVdpSXdLdUtlVjA5L1NXLzJ4L1VJazlWQXAzMXQvTUFZTlovUVRvMGp0eXVmbGhqRkp5cC9vTHI5UnhrQ1FTQjhFUFNQa3FoSTZQZWJGRmc5STZnL1dERWRrTGFKb2ZmVEZIYlBhcXpLcUErK2Z3ZmhCc05naEY2Z2NOTG1IQmUzOUttNFdVd1YzenpSd3VlRmFYNkE0SHZMTHc3RGQwaHJ5dzBQb25PeGFNZGhCTWNwMmJpZ1RFUnZtUFg4MC8rUTdtWlFmbGJhTnhzT3VTZE50Z1ZBS0tTdzc4WWNESWlqZ2R1d0dqbG4xMzhyMG5pUmsyNGY5RHNtOXdPRG1wQm1rUzgvaUNtVFdPMjBSR0JVRFBnSE1SNU5xTittOGMrNi9wTGY3RVl1dUlsVW14ZG43Q2R3QW5Id1NMdkpUQy9lMi9tQU1HTkY1MVZyUDZDYzA0UEgrY0UyYUJkNWlnOXk1RjAzeTF6aFVLNU9WUDlBOXVpWUphNkxpSE1XTis4V0JJSkErTHcrSjUwaDZSOGttVlY0UVl2ZzE2OHpYTERLN1ZtMk8xWGwwVjVIVUg2dy8rd1oxV0k3SVd6YWgwWUp5RExwNTNDT2pvSW83WjdVa0ZINXNZTGtWbDg2V0RFNnA0OEpneDh6YnVZTmhzRUl0VHFtYmIxQTRhUUYvSWJCRjBrcEw2LzFUa295SW5iemlwNFJscGdydm5nZ2w5a2RlUFRKUzhCSXJpN1MvUUhBYWtGbXBmZVdYaHhQS2psNVhaK1dsK1VqOGZKTmF4a0Y5ZGQrWU9kaTBZNWYzcmJyd2dtT1VucTE2VGRvQUViWjBMd2h2SWpmTWVvd1kxYVBJdGI1WVpwcW5nUUh2YWE5dndIQjJLMjBiallWQ0FsVEhYSk9tcVhPS2YrM2U0WVJEOGZoZEpJUTJjMHFyTDZvT0JrUlJvQ2xkaVBZeG1aMVlIb0JFSExQcnY3S2M4bWJWNlR4SXU4WWxrZjlyVG1wUlJGZXpIWk43Z2JPOFlsajNFUW1qV1Q0UWVqNUwzbFJRWk1lTkZNbXNkcnJtdGEvcy9uRzZRdEZvWXdaOEE1aW9VeHBCenliVWI2RUp6YmJscEtaTlM0dS9sQW1WTG1abnVqZS9JeGRjUkkwNFJaM3FUWXV6aEdLU2FzRFArWkZ1NE9CSU9QZ2tYWmJYUFlUU2VsWi9mRlZQcGhzZ2dZaDFENWhSTWFMenFwK042blAxbjlCT0c3REpsMThkb216eE1ydTFsa2QxbS9ob2JFSzh4UWU1RXVvZVlFVHkyblhxM2NPc3JuQ29Wd0Jmc1k1bktuK2dDUVZtZVUyb0RZTGpoeFJib1ptRnFjKzJuSENMRy9lTEpUVHVVa0pCSUh3c2JqbWxhTU5TWHNic1M0ZVE5SStTUHR1V1MzcDIvYkRVV2VScHN5d3FSOTBETTU2WnJsaGxONEZCdkVBUWREWkFBdE5BUUFBQUFFQUFBQUJBQUFBQVFBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBREFBQUFBd0FBQUFNQUFBQURBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVVBQUFBRkFBQUFCUUFBQUFVQVFjRGFBQXRsQVFBQUFBRUFBQUFDQUFBQUFnQUFBQU1BQUFBREFBQUFCQUFBQUFRQUFBQUZBQUFBQlFBQUFBWUFBQUFHQUFBQUJ3QUFBQWNBQUFBSUFBQUFDQUFBQUFrQUFBQUpBQUFBQ2dBQUFBb0FBQUFMQUFBQUN3QUFBQXdBQUFBTUFBQUFEUUFBQUEwQVFiamJBQXR0QkFBQUFBUUFCQUFJQUFRQUJRQUFBQVFBQkFBSUFBUUFCZ0FBQUFRQUJnQWdBQ0FBQmdBQUFBUUFCQUFRQUJBQUJ3QUFBQWdBRUFBZ0FDQUFCd0FBQUFnQUVBQ0FBSUFBQndBQUFBZ0FJQUNBQUFBQkNBQUFBQ0FBZ0FBQ0FRQUVDQUFBQUNBQUFnRUNBUUFRQ0FCQnNOd0FDL2NKREFBSUFJd0FDQUJNQUFnQXpBQUlBQ3dBQ0FDc0FBZ0FiQUFJQU93QUNBQWNBQWdBbkFBSUFGd0FDQURjQUFnQVBBQUlBTHdBQ0FCOEFBZ0EvQUFJQUFJQUNBQ0NBQWdBUWdBSUFNSUFDQUFpQUFnQW9nQUlBR0lBQ0FEaUFBZ0FFZ0FJQUpJQUNBQlNBQWdBMGdBSUFESUFDQUN5QUFnQWNnQUlBUElBQ0FBS0FBZ0FpZ0FJQUVvQUNBREtBQWdBS2dBSUFLb0FDQUJxQUFnQTZnQUlBQm9BQ0FDYUFBZ0FXZ0FJQU5vQUNBQTZBQWdBdWdBSUFIb0FDQUQ2QUFnQUJnQUlBSVlBQ0FCR0FBZ0F4Z0FJQUNZQUNBQ21BQWdBWmdBSUFPWUFDQUFXQUFnQWxnQUlBRllBQ0FEV0FBZ0FOZ0FJQUxZQUNBQjJBQWdBOWdBSUFBNEFDQUNPQUFnQVRnQUlBTTRBQ0FBdUFBZ0FyZ0FJQUc0QUNBRHVBQWdBSGdBSUFKNEFDQUJlQUFnQTNnQUlBRDRBQ0FDK0FBZ0FmZ0FJQVA0QUNBQUJBQWdBZ1FBSUFFRUFDQURCQUFnQUlRQUlBS0VBQ0FCaEFBZ0E0UUFJQUJFQUNBQ1JBQWdBVVFBSUFORUFDQUF4QUFnQXNRQUlBSEVBQ0FEeEFBZ0FDUUFJQUlrQUNBQkpBQWdBeVFBSUFDa0FDQUNwQUFnQWFRQUlBT2tBQ0FBWkFBZ0FtUUFJQUZrQUNBRFpBQWdBT1FBSUFMa0FDQUI1QUFnQStRQUlBQVVBQ0FDRkFBZ0FSUUFJQU1VQUNBQWxBQWdBcFFBSUFHVUFDQURsQUFnQUZRQUlBSlVBQ0FCVkFBZ0ExUUFJQURVQUNBQzFBQWdBZFFBSUFQVUFDQUFOQUFnQWpRQUlBRTBBQ0FETkFBZ0FMUUFJQUswQUNBQnRBQWdBN1FBSUFCMEFDQUNkQUFnQVhRQUlBTjBBQ0FBOUFBZ0F2UUFJQUgwQUNBRDlBQWdBRXdBSkFCTUJDUUNUQUFrQWt3RUpBRk1BQ1FCVEFRa0Ewd0FKQU5NQkNRQXpBQWtBTXdFSkFMTUFDUUN6QVFrQWN3QUpBSE1CQ1FEekFBa0E4d0VKQUFzQUNRQUxBUWtBaXdBSkFJc0JDUUJMQUFrQVN3RUpBTXNBQ1FETEFRa0FLd0FKQUNzQkNRQ3JBQWtBcXdFSkFHc0FDUUJyQVFrQTZ3QUpBT3NCQ1FBYkFBa0FHd0VKQUpzQUNRQ2JBUWtBV3dBSkFGc0JDUURiQUFrQTJ3RUpBRHNBQ1FBN0FRa0F1d0FKQUxzQkNRQjdBQWtBZXdFSkFQc0FDUUQ3QVFrQUJ3QUpBQWNCQ1FDSEFBa0Fod0VKQUVjQUNRQkhBUWtBeHdBSkFNY0JDUUFuQUFrQUp3RUpBS2NBQ1FDbkFRa0Fad0FKQUdjQkNRRG5BQWtBNXdFSkFCY0FDUUFYQVFrQWx3QUpBSmNCQ1FCWEFBa0FWd0VKQU5jQUNRRFhBUWtBTndBSkFEY0JDUUMzQUFrQXR3RUpBSGNBQ1FCM0FRa0E5d0FKQVBjQkNRQVBBQWtBRHdFSkFJOEFDUUNQQVFrQVR3QUpBRThCQ1FEUEFBa0F6d0VKQUM4QUNRQXZBUWtBcndBSkFLOEJDUUJ2QUFrQWJ3RUpBTzhBQ1FEdkFRa0FId0FKQUI4QkNRQ2ZBQWtBbndFSkFGOEFDUUJmQVFrQTN3QUpBTjhCQ1FBL0FBa0FQd0VKQUw4QUNRQy9BUWtBZndBSkFIOEJDUUQvQUFrQS93RUpBQUFBQndCQUFBY0FJQUFIQUdBQUJ3QVFBQWNBVUFBSEFEQUFCd0J3QUFjQUNBQUhBRWdBQndBb0FBY0FhQUFIQUJnQUJ3QllBQWNBT0FBSEFIZ0FCd0FFQUFjQVJBQUhBQ1FBQndCa0FBY0FGQUFIQUZRQUJ3QTBBQWNBZEFBSEFBTUFDQUNEQUFnQVF3QUlBTU1BQ0FBakFBZ0Fvd0FJQUdNQUNBRGpBQWdBQUFBRkFCQUFCUUFJQUFVQUdBQUZBQVFBQlFBVUFBVUFEQUFGQUJ3QUJRQUNBQVVBRWdBRkFBb0FCUUFhQUFVQUJnQUZBQllBQlFBT0FBVUFIZ0FGQUFFQUJRQVJBQVVBQ1FBRkFCa0FCUUFGQUFVQUZRQUZBQTBBQlFBZEFBVUFBd0FGQUJNQUJRQUxBQVVBR3dBRkFBY0FCUUFYQUFVQVFiSG1BQXZzQmdFQ0F3UUVCUVVHQmdZR0J3Y0hCd2dJQ0FnSUNBZ0lDUWtKQ1FrSkNRa0tDZ29LQ2dvS0Nnb0tDZ29LQ2dvS0N3c0xDd3NMQ3dzTEN3c0xDd3NMQ3d3TURBd01EQXdNREF3TURBd01EQXdNREF3TURBd01EQXdNREF3TURBd01EUTBORFEwTkRRME5EUTBORFEwTkRRME5EUTBORFEwTkRRME5EUTBORFEwT0RnNE9EZzRPRGc0T0RnNE9EZzRPRGc0T0RnNE9EZzRPRGc0T0RnNE9EZzRPRGc0T0RnNE9EZzRPRGc0T0RnNE9EZzRPRGc0T0RnNE9EZzRPRGc0T0R3OFBEdzhQRHc4UER3OFBEdzhQRHc4UER3OFBEdzhQRHc4UER3OFBEdzhQRHc4UER3OFBEdzhQRHc4UER3OFBEdzhQRHc4UER3OFBEdzhQRHc4UER3QUFFQkVTRWhNVEZCUVVGQlVWRlJVV0ZoWVdGaFlXRmhjWEZ4Y1hGeGNYR0JnWUdCZ1lHQmdZR0JnWUdCZ1lHQmtaR1JrWkdSa1pHUmtaR1JrWkdSa2FHaG9hR2hvYUdob2FHaG9hR2hvYUdob2FHaG9hR2hvYUdob2FHaG9hR2hzYkd4c2JHeHNiR3hzYkd4c2JHeHNiR3hzYkd4c2JHeHNiR3hzYkd4c2JIQndjSEJ3Y0hCd2NIQndjSEJ3Y0hCd2NIQndjSEJ3Y0hCd2NIQndjSEJ3Y0hCd2NIQndjSEJ3Y0hCd2NIQndjSEJ3Y0hCd2NIQndjSEJ3Y0hCd2NIQjBkSFIwZEhSMGRIUjBkSFIwZEhSMGRIUjBkSFIwZEhSMGRIUjBkSFIwZEhSMGRIUjBkSFIwZEhSMGRIUjBkSFIwZEhSMGRIUjBkSFIwZEhSMGRIUjBBQVFJREJBVUdCd2dJQ1FrS0Nnc0xEQXdNREEwTkRRME9EZzRPRHc4UER4QVFFQkFRRUJBUUVSRVJFUkVSRVJFU0VoSVNFaElTRWhNVEV4TVRFeE1URkJRVUZCUVVGQlFVRkJRVUZCUVVGQlVWRlJVVkZSVVZGUlVWRlJVVkZSVVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0Z4Y1hGeGNYRnhjWEZ4Y1hGeGNYRnhnWUdCZ1lHQmdZR0JnWUdCZ1lHQmdZR0JnWUdCZ1lHQmdZR0JnWUdCZ1lHUmtaR1JrWkdSa1pHUmtaR1JrWkdSa1pHUmtaR1JrWkdSa1pHUmtaR1JrYUdob2FHaG9hR2hvYUdob2FHaG9hR2hvYUdob2FHaG9hR2hvYUdob2FHaHNiR3hzYkd4c2JHeHNiR3hzYkd4c2JHeHNiR3hzYkd4c2JHeHNiR3hzY0FBQUFBQUVBQUFBQ0FBQUFBd0FBQUFRQUFBQUZBQUFBQmdBQUFBY0FBQUFJQUFBQUNnQUFBQXdBQUFBT0FBQUFFQUFBQUJRQUFBQVlBQUFBSEFBQUFDQUFBQUFvQUFBQU1BQUFBRGdBQUFCQUFBQUFVQUFBQUdBQUFBQndBQUFBZ0FBQUFLQUFBQURBQUFBQTRBQkJ0TzBBQzYwQkFRQUFBQUlBQUFBREFBQUFCQUFBQUFZQUFBQUlBQUFBREFBQUFCQUFBQUFZQUFBQUlBQUFBREFBQUFCQUFBQUFZQUFBQUlBQUFBREFBQUFBQUFFQUFJQUJBQUFBQWdBQUFBTUFBQUFFQUFBQUJnQUFBQWdBQUFBTUFBQUFFQUFBQUJnQUFBQWdBQUFBTUFBQUFFQUFBQUJnQUFBd0xnQUFjRGNBQUFFQkFBQWVBUUFBRHdBQUFMQXlBQUR3TndBQUFBQUFBQjRBQUFBUEFBQUFBQUFBQUhBNEFBQUFBQUFBRXdBQUFBY0FRWkR2QUF0TkFRQUFBQUVBQUFBQkFBQUFBUUFBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFEQUFBQUF3QUFBQU1BQUFBREFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBVUFBQUFGQUFBQUJRQUFBQVVBUVlEd0FBdGxBUUFBQUFFQUFBQUNBQUFBQWdBQUFBTUFBQUFEQUFBQUJBQUFBQVFBQUFBRkFBQUFCUUFBQUFZQUFBQUdBQUFBQndBQUFBY0FBQUFJQUFBQUNBQUFBQWtBQUFBSkFBQUFDZ0FBQUFvQUFBQUxBQUFBQ3dBQUFBd0FBQUFNQUFBQURRQUFBQTBBUWJEeEFBc2pBZ0FBQUFNQUFBQUhBQUFBQUFBQUFCQVJFZ0FJQndrR0NnVUxCQXdERFFJT0FROEFRZUR4QUFzbUZBUUFBTVVIQUFDQ0NRQUFtUVVBQUZzRkFBQzZCUUFBQUFRQUFFVUZBQURQQlFBQWdna0FRWkR5QUF1bEV3TUFCQUFGQUFZQUJ3QUlBQWtBQ2dBTEFBMEFEd0FSQUJNQUZ3QWJBQjhBSXdBckFETUFPd0JEQUZNQVl3QnpBSU1Bb3dEREFPTUFBZ0VBQUFBQUFBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVRQVJBQkVBRVFBU0FCSUFFZ0FTQUJNQUV3QVRBQk1BRkFBVUFCUUFGQUFWQUJVQUZRQVZBQkFBVFFES0FBQUFBUUFDQUFNQUJBQUZBQWNBQ1FBTkFCRUFHUUFoQURFQVFRQmhBSUVBd1FBQkFZRUJBUUlCQXdFRUFRWUJDQUVNQVJBQkdBRWdBVEFCUUFGZ0FBQUFBQkFBRUFBUUFCQUFFUUFSQUJJQUVnQVRBQk1BRkFBVUFCVUFGUUFXQUJZQUZ3QVhBQmdBR0FBWkFCa0FHZ0FhQUJzQUd3QWNBQndBSFFBZEFFQUFRQUJnQndBQUFBaFFBQUFJRUFBVUNITUFFZ2NmQUFBSWNBQUFDREFBQUFuQUFCQUhDZ0FBQ0dBQUFBZ2dBQUFKb0FBQUNBQUFBQWlBQUFBSVFBQUFDZUFBRUFjR0FBQUlXQUFBQ0JnQUFBbVFBQk1IT3dBQUNIZ0FBQWc0QUFBSjBBQVJCeEVBQUFob0FBQUlLQUFBQ2JBQUFBZ0lBQUFJaUFBQUNFZ0FBQW53QUJBSEJBQUFDRlFBQUFnVUFCVUk0d0FUQnlzQUFBaDBBQUFJTkFBQUNjZ0FFUWNOQUFBSVpBQUFDQ1FBQUFtb0FBQUlCQUFBQ0lRQUFBaEVBQUFKNkFBUUJ3Z0FBQWhjQUFBSUhBQUFDWmdBRkFkVEFBQUlmQUFBQ0R3QUFBbllBQklIRndBQUNHd0FBQWdzQUFBSnVBQUFDQXdBQUFpTUFBQUlUQUFBQ2ZnQUVBY0RBQUFJVWdBQUNCSUFGUWlqQUJNSEl3QUFDSElBQUFneUFBQUp4QUFSQndzQUFBaGlBQUFJSWdBQUNhUUFBQWdDQUFBSWdnQUFDRUlBQUFua0FCQUhCd0FBQ0ZvQUFBZ2FBQUFKbEFBVUIwTUFBQWg2QUFBSU9nQUFDZFFBRWdjVEFBQUlhZ0FBQ0NvQUFBbTBBQUFJQ2dBQUNJb0FBQWhLQUFBSjlBQVFCd1VBQUFoV0FBQUlGZ0JBQ0FBQUV3Y3pBQUFJZGdBQUNEWUFBQW5NQUJFSER3QUFDR1lBQUFnbUFBQUpyQUFBQ0FZQUFBaUdBQUFJUmdBQUNld0FFQWNKQUFBSVhnQUFDQjRBQUFtY0FCUUhZd0FBQ0g0QUFBZytBQUFKM0FBU0J4c0FBQWh1QUFBSUxnQUFDYndBQUFnT0FBQUlqZ0FBQ0U0QUFBbjhBR0FIQUFBQUNGRUFBQWdSQUJVSWd3QVNCeDhBQUFoeEFBQUlNUUFBQ2NJQUVBY0tBQUFJWVFBQUNDRUFBQW1pQUFBSUFRQUFDSUVBQUFoQkFBQUo0Z0FRQndZQUFBaFpBQUFJR1FBQUNaSUFFd2M3QUFBSWVRQUFDRGtBQUFuU0FCRUhFUUFBQ0drQUFBZ3BBQUFKc2dBQUNBa0FBQWlKQUFBSVNRQUFDZklBRUFjRUFBQUlWUUFBQ0JVQUVBZ0NBUk1IS3dBQUNIVUFBQWcxQUFBSnlnQVJCdzBBQUFobEFBQUlKUUFBQ2FvQUFBZ0ZBQUFJaFFBQUNFVUFBQW5xQUJBSENBQUFDRjBBQUFnZEFBQUptZ0FVQjFNQUFBaDlBQUFJUFFBQUNkb0FFZ2NYQUFBSWJRQUFDQzBBQUFtNkFBQUlEUUFBQ0kwQUFBaE5BQUFKK2dBUUJ3TUFBQWhUQUFBSUV3QVZDTU1BRXdjakFBQUljd0FBQ0RNQUFBbkdBQkVIQ3dBQUNHTUFBQWdqQUFBSnBnQUFDQU1BQUFpREFBQUlRd0FBQ2VZQUVBY0hBQUFJV3dBQUNCc0FBQW1XQUJRSFF3QUFDSHNBQUFnN0FBQUoxZ0FTQnhNQUFBaHJBQUFJS3dBQUNiWUFBQWdMQUFBSWl3QUFDRXNBQUFuMkFCQUhCUUFBQ0ZjQUFBZ1hBRUFJQUFBVEJ6TUFBQWgzQUFBSU53QUFDYzRBRVFjUEFBQUlad0FBQ0NjQUFBbXVBQUFJQndBQUNJY0FBQWhIQUFBSjdnQVFCd2tBQUFoZkFBQUlId0FBQ1o0QUZBZGpBQUFJZndBQUNEOEFBQW5lQUJJSEd3QUFDRzhBQUFndkFBQUp2Z0FBQ0E4QUFBaVBBQUFJVHdBQUNmNEFZQWNBQUFBSVVBQUFDQkFBRkFoekFCSUhId0FBQ0hBQUFBZ3dBQUFKd1FBUUJ3b0FBQWhnQUFBSUlBQUFDYUVBQUFnQUFBQUlnQUFBQ0VBQUFBbmhBQkFIQmdBQUNGZ0FBQWdZQUFBSmtRQVRCenNBQUFoNEFBQUlPQUFBQ2RFQUVRY1JBQUFJYUFBQUNDZ0FBQW14QUFBSUNBQUFDSWdBQUFoSUFBQUo4UUFRQndRQUFBaFVBQUFJRkFBVkNPTUFFd2NyQUFBSWRBQUFDRFFBQUFuSkFCRUhEUUFBQ0dRQUFBZ2tBQUFKcVFBQUNBUUFBQWlFQUFBSVJBQUFDZWtBRUFjSUFBQUlYQUFBQ0J3QUFBbVpBQlFIVXdBQUNId0FBQWc4QUFBSjJRQVNCeGNBQUFoc0FBQUlMQUFBQ2JrQUFBZ01BQUFJakFBQUNFd0FBQW41QUJBSEF3QUFDRklBQUFnU0FCVUlvd0FUQnlNQUFBaHlBQUFJTWdBQUNjVUFFUWNMQUFBSVlnQUFDQ0lBQUFtbEFBQUlBZ0FBQ0lJQUFBaENBQUFKNVFBUUJ3Y0FBQWhhQUFBSUdnQUFDWlVBRkFkREFBQUllZ0FBQ0RvQUFBblZBQklIRXdBQUNHb0FBQWdxQUFBSnRRQUFDQW9BQUFpS0FBQUlTZ0FBQ2ZVQUVBY0ZBQUFJVmdBQUNCWUFRQWdBQUJNSE13QUFDSFlBQUFnMkFBQUp6UUFSQnc4QUFBaG1BQUFJSmdBQUNhMEFBQWdHQUFBSWhnQUFDRVlBQUFudEFCQUhDUUFBQ0Y0QUFBZ2VBQUFKblFBVUIyTUFBQWgrQUFBSVBnQUFDZDBBRWdjYkFBQUliZ0FBQ0M0QUFBbTlBQUFJRGdBQUNJNEFBQWhPQUFBSi9RQmdCd0FBQUFoUkFBQUlFUUFWQ0lNQUVnY2ZBQUFJY1FBQUNERUFBQW5EQUJBSENnQUFDR0VBQUFnaEFBQUpvd0FBQ0FFQUFBaUJBQUFJUVFBQUNlTUFFQWNHQUFBSVdRQUFDQmtBQUFtVEFCTUhPd0FBQ0hrQUFBZzVBQUFKMHdBUkJ4RUFBQWhwQUFBSUtRQUFDYk1BQUFnSkFBQUlpUUFBQ0VrQUFBbnpBQkFIQkFBQUNGVUFBQWdWQUJBSUFnRVRCeXNBQUFoMUFBQUlOUUFBQ2NzQUVRY05BQUFJWlFBQUNDVUFBQW1yQUFBSUJRQUFDSVVBQUFoRkFBQUo2d0FRQndnQUFBaGRBQUFJSFFBQUNac0FGQWRUQUFBSWZRQUFDRDBBQUFuYkFCSUhGd0FBQ0cwQUFBZ3RBQUFKdXdBQUNBMEFBQWlOQUFBSVRRQUFDZnNBRUFjREFBQUlVd0FBQ0JNQUZRakRBQk1ISXdBQUNITUFBQWd6QUFBSnh3QVJCd3NBQUFoakFBQUlJd0FBQ2FjQUFBZ0RBQUFJZ3dBQUNFTUFBQW5uQUJBSEJ3QUFDRnNBQUFnYkFBQUpsd0FVQjBNQUFBaDdBQUFJT3dBQUNkY0FFZ2NUQUFBSWF3QUFDQ3NBQUFtM0FBQUlDd0FBQ0lzQUFBaExBQUFKOXdBUUJ3VUFBQWhYQUFBSUZ3QkFDQUFBRXdjekFBQUlkd0FBQ0RjQUFBblBBQkVIRHdBQUNHY0FBQWduQUFBSnJ3QUFDQWNBQUFpSEFBQUlSd0FBQ2U4QUVBY0pBQUFJWHdBQUNCOEFBQW1mQUJRSFl3QUFDSDhBQUFnL0FBQUozd0FTQnhzQUFBaHZBQUFJTHdBQUNiOEFBQWdQQUFBSWp3QUFDRThBQUFuL0FCQUZBUUFYQlFFQkV3VVJBQnNGQVJBUkJRVUFHUVVCQkJVRlFRQWRCUUZBRUFVREFCZ0ZBUUlVQlNFQUhBVUJJQklGQ1FBYUJRRUlGZ1dCQUVBRkFBQVFCUUlBRndXQkFSTUZHUUFiQlFFWUVRVUhBQmtGQVFZVkJXRUFIUVVCWUJBRkJBQVlCUUVERkFVeEFCd0ZBVEFTQlEwQUdnVUJEQllGd1FCQUJRQUFFQUFSQUJJQUFBQUlBQWNBQ1FBR0FBb0FCUUFMQUFRQURBQURBQTBBQWdBT0FBRUFEd0JCd0lVQkMwRVJBQW9BRVJFUkFBQUFBQVVBQUFBQUFBQUpBQUFBQUFzQUFBQUFBQUFBQUJFQUR3b1JFUkVEQ2djQUFRQUpDd3NBQUFrR0N3QUFDd0FHRVFBQUFCRVJFUUJCa1lZQkN5RUxBQUFBQUFBQUFBQVJBQW9LRVJFUkFBb0FBQUlBQ1FzQUFBQUpBQXNBQUFzQVFjdUdBUXNCREFCQjE0WUJDeFVNQUFBQUFBd0FBQUFBQ1F3QUFBQUFBQXdBQUF3QVFZV0hBUXNCRGdCQmtZY0JDeFVOQUFBQUJBMEFBQUFBQ1E0QUFBQUFBQTRBQUE0QVFiK0hBUXNCRUFCQnk0Y0JDeDRQQUFBQUFBOEFBQUFBQ1JBQUFBQUFBQkFBQUJBQUFCSUFBQUFTRWhJQVFZS0lBUXNPRWdBQUFCSVNFZ0FBQUFBQUFBa0FRYk9JQVFzQkN3QkJ2NGdCQ3hVS0FBQUFBQW9BQUFBQUNRc0FBQUFBQUFzQUFBc0FRZTJJQVFzQkRBQkIrWWdCQ3ljTUFBQUFBQXdBQUFBQUNRd0FBQUFBQUF3QUFBd0FBREF4TWpNME5UWTNPRGxCUWtORVJVWUFRY1NKQVFzQk5RQkI2NGtCQ3dYLy8vLy8vd0JCc0lvQkMxY1pFa1E3QWo4c1J4UTlNekFLR3daR1MwVTNEMGtPamhjRFFCMDhhU3MySDBvdEhBRWdKU2toQ0F3VkZpSXVFRGcrQ3pReEdHUjBkWFl2UVFsL09SRWpRekpDaVlxTEJRUW1LQ2NOS2g0MWpBY2FTSk1UbEpVQVFaQ0xBUXVLRGtsc2JHVm5ZV3dnWW5sMFpTQnpaWEYxWlc1alpRQkViMjFoYVc0Z1pYSnliM0lBVW1WemRXeDBJRzV2ZENCeVpYQnlaWE5sYm5SaFlteGxBRTV2ZENCaElIUjBlUUJRWlhKdGFYTnphVzl1SUdSbGJtbGxaQUJQY0dWeVlYUnBiMjRnYm05MElIQmxjbTFwZEhSbFpBQk9ieUJ6ZFdOb0lHWnBiR1VnYjNJZ1pHbHlaV04wYjNKNUFFNXZJSE4xWTJnZ2NISnZZMlZ6Y3dCR2FXeGxJR1Y0YVhOMGN3QldZV3gxWlNCMGIyOGdiR0Z5WjJVZ1ptOXlJR1JoZEdFZ2RIbHdaUUJPYnlCemNHRmpaU0JzWldaMElHOXVJR1JsZG1salpRQlBkWFFnYjJZZ2JXVnRiM0o1QUZKbGMyOTFjbU5sSUdKMWMza0FTVzUwWlhKeWRYQjBaV1FnYzNsemRHVnRJR05oYkd3QVVtVnpiM1Z5WTJVZ2RHVnRjRzl5WVhKcGJIa2dkVzVoZG1GcGJHRmliR1VBU1c1MllXeHBaQ0J6WldWckFFTnliM056TFdSbGRtbGpaU0JzYVc1ckFGSmxZV1F0YjI1c2VTQm1hV3hsSUhONWMzUmxiUUJFYVhKbFkzUnZjbmtnYm05MElHVnRjSFI1QUVOdmJtNWxZM1JwYjI0Z2NtVnpaWFFnWW5rZ2NHVmxjZ0JQY0dWeVlYUnBiMjRnZEdsdFpXUWdiM1YwQUVOdmJtNWxZM1JwYjI0Z2NtVm1kWE5sWkFCSWIzTjBJR2x6SUdSdmQyNEFTRzl6ZENCcGN5QjFibkpsWVdOb1lXSnNaUUJCWkdSeVpYTnpJR2x1SUhWelpRQkNjbTlyWlc0Z2NHbHdaUUJKTDA4Z1pYSnliM0lBVG04Z2MzVmphQ0JrWlhacFkyVWdiM0lnWVdSa2NtVnpjd0JDYkc5amF5QmtaWFpwWTJVZ2NtVnhkV2x5WldRQVRtOGdjM1ZqYUNCa1pYWnBZMlVBVG05MElHRWdaR2x5WldOMGIzSjVBRWx6SUdFZ1pHbHlaV04wYjNKNUFGUmxlSFFnWm1sc1pTQmlkWE41QUVWNFpXTWdabTl5YldGMElHVnljbTl5QUVsdWRtRnNhV1FnWVhKbmRXMWxiblFBUVhKbmRXMWxiblFnYkdsemRDQjBiMjhnYkc5dVp3QlRlVzFpYjJ4cFl5QnNhVzVySUd4dmIzQUFSbWxzWlc1aGJXVWdkRzl2SUd4dmJtY0FWRzl2SUcxaGJua2diM0JsYmlCbWFXeGxjeUJwYmlCemVYTjBaVzBBVG04Z1ptbHNaU0JrWlhOamNtbHdkRzl5Y3lCaGRtRnBiR0ZpYkdVQVFtRmtJR1pwYkdVZ1pHVnpZM0pwY0hSdmNnQk9ieUJqYUdsc1pDQndjbTlqWlhOekFFSmhaQ0JoWkdSeVpYTnpBRVpwYkdVZ2RHOXZJR3hoY21kbEFGUnZieUJ0WVc1NUlHeHBibXR6QUU1dklHeHZZMnR6SUdGMllXbHNZV0pzWlFCU1pYTnZkWEpqWlNCa1pXRmtiRzlqYXlCM2IzVnNaQ0J2WTJOMWNnQlRkR0YwWlNCdWIzUWdjbVZqYjNabGNtRmliR1VBVUhKbGRtbHZkWE1nYjNkdVpYSWdaR2xsWkFCUGNHVnlZWFJwYjI0Z1kyRnVZMlZzWldRQVJuVnVZM1JwYjI0Z2JtOTBJR2x0Y0d4bGJXVnVkR1ZrQUU1dklHMWxjM05oWjJVZ2IyWWdaR1Z6YVhKbFpDQjBlWEJsQUVsa1pXNTBhV1pwWlhJZ2NtVnRiM1psWkFCRVpYWnBZMlVnYm05MElHRWdjM1J5WldGdEFFNXZJR1JoZEdFZ1lYWmhhV3hoWW14bEFFUmxkbWxqWlNCMGFXMWxiM1YwQUU5MWRDQnZaaUJ6ZEhKbFlXMXpJSEpsYzI5MWNtTmxjd0JNYVc1cklHaGhjeUJpWldWdUlITmxkbVZ5WldRQVVISnZkRzlqYjJ3Z1pYSnliM0lBUW1Ga0lHMWxjM05oWjJVQVJtbHNaU0JrWlhOamNtbHdkRzl5SUdsdUlHSmhaQ0J6ZEdGMFpRQk9iM1FnWVNCemIyTnJaWFFBUkdWemRHbHVZWFJwYjI0Z1lXUmtjbVZ6Y3lCeVpYRjFhWEpsWkFCTlpYTnpZV2RsSUhSdmJ5QnNZWEpuWlFCUWNtOTBiMk52YkNCM2NtOXVaeUIwZVhCbElHWnZjaUJ6YjJOclpYUUFVSEp2ZEc5amIyd2dibTkwSUdGMllXbHNZV0pzWlFCUWNtOTBiMk52YkNCdWIzUWdjM1Z3Y0c5eWRHVmtBRk52WTJ0bGRDQjBlWEJsSUc1dmRDQnpkWEJ3YjNKMFpXUUFUbTkwSUhOMWNIQnZjblJsWkFCUWNtOTBiMk52YkNCbVlXMXBiSGtnYm05MElITjFjSEJ2Y25SbFpBQkJaR1J5WlhOeklHWmhiV2xzZVNCdWIzUWdjM1Z3Y0c5eWRHVmtJR0o1SUhCeWIzUnZZMjlzQUVGa1pISmxjM01nYm05MElHRjJZV2xzWVdKc1pRQk9aWFIzYjNKcklHbHpJR1J2ZDI0QVRtVjBkMjl5YXlCMWJuSmxZV05vWVdKc1pRQkRiMjV1WldOMGFXOXVJSEpsYzJWMElHSjVJRzVsZEhkdmNtc0FRMjl1Ym1WamRHbHZiaUJoWW05eWRHVmtBRTV2SUdKMVptWmxjaUJ6Y0dGalpTQmhkbUZwYkdGaWJHVUFVMjlqYTJWMElHbHpJR052Ym01bFkzUmxaQUJUYjJOclpYUWdibTkwSUdOdmJtNWxZM1JsWkFCRFlXNXViM1FnYzJWdVpDQmhablJsY2lCemIyTnJaWFFnYzJoMWRHUnZkMjRBVDNCbGNtRjBhVzl1SUdGc2NtVmhaSGtnYVc0Z2NISnZaM0psYzNNQVQzQmxjbUYwYVc5dUlHbHVJSEJ5YjJkeVpYTnpBRk4wWVd4bElHWnBiR1VnYUdGdVpHeGxBRkpsYlc5MFpTQkpMMDhnWlhKeWIzSUFVWFZ2ZEdFZ1pYaGpaV1ZrWldRQVRtOGdiV1ZrYVhWdElHWnZkVzVrQUZkeWIyNW5JRzFsWkdsMWJTQjBlWEJsQUU1dklHVnljbTl5SUdsdVptOXliV0YwYVc5dUFFR2dtUUVMaGdFV0FBQUFGd0FBQUJnQUFBQVpBQUFBR2dBQUFCc0FBQUFjQUFBQUhRQUFBQjRBQUFBZkFBQUFJQUFBQUNFQUFBQWlBQUFBa0ZGUUFDWUFBQUFuQUFBQUtBQUFBQ2tBQUFBcUFBQUFLd0FBQUN3QUFBQXRBQUFBTGdBQUFDY0FBQUFvQUFBQUtRQUFBQ29BQUFBckFBQUFMQUFBQUMwQUFBQUJBQUFBQ0FBQUFOaE1BQUQ0VEFCQjFKc0JDd0pRVVFCQmpKd0JDd2tmQUFBQUpFNEFBQU1BUWFTY0FRdU1BUzMwVVZqUGpMSEFSdmExeXlreEE4Y0VXM0F3dEYzOUlIaC9pNXJZV1NsUWFFaUpxNmRXQTJ6L3Q4MklQOVIzdEN1bG8zRHh1dVNvL0VHRC9kbHY0WXA2THkxMGxnY2ZEUWxlQTNZc2NQZEFwU3luYjFkQnFLcDAzNkJZWkFOS3g4UThVNjZ2WHhnRUZiSGpiU2lHcXd5a3YwUHc2VkNCT1ZjV1VqZi8vLy8vLy8vLy8vLy8vLy8vLy8vL1wiO1xuICAgIGlmICghaXNEYXRhVVJJKHdhc21CaW5hcnlGaWxlKSkge1xuICAgICAgd2FzbUJpbmFyeUZpbGUgPSBsb2NhdGVGaWxlKHdhc21CaW5hcnlGaWxlKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gZ2V0QmluYXJ5KGZpbGUpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGlmIChmaWxlID09IHdhc21CaW5hcnlGaWxlICYmIHdhc21CaW5hcnkpIHtcbiAgICAgICAgICByZXR1cm4gbmV3IFVpbnQ4QXJyYXkod2FzbUJpbmFyeSk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGJpbmFyeSA9IHRyeVBhcnNlQXNEYXRhVVJJKGZpbGUpO1xuICAgICAgICBpZiAoYmluYXJ5KSB7XG4gICAgICAgICAgcmV0dXJuIGJpbmFyeTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocmVhZEJpbmFyeSkge1xuICAgICAgICAgIHJldHVybiByZWFkQmluYXJ5KGZpbGUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRocm93IFwic3luYyBmZXRjaGluZyBvZiB0aGUgd2FzbSBmYWlsZWQ6IHlvdSBjYW4gcHJlbG9hZCBpdCB0byBNb2R1bGVbJ3dhc21CaW5hcnknXSBtYW51YWxseSwgb3IgZW1jYy5weSB3aWxsIGRvIHRoYXQgZm9yIHlvdSB3aGVuIGdlbmVyYXRpbmcgSFRNTCAoYnV0IG5vdCBKUylcIjtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGFib3J0KGVycik7XG4gICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIGluc3RhbnRpYXRlU3luYyhmaWxlLCBpbmZvKSB7XG4gICAgICB2YXIgaW5zdGFuY2U7XG4gICAgICB2YXIgbW9kdWxlO1xuICAgICAgdmFyIGJpbmFyeTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGJpbmFyeSA9IGdldEJpbmFyeShmaWxlKTtcbiAgICAgICAgbW9kdWxlID0gbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZShiaW5hcnkpO1xuICAgICAgICBpbnN0YW5jZSA9IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1bGUsIGluZm8pO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICB2YXIgc3RyID0gZS50b1N0cmluZygpO1xuICAgICAgICBlcnIoXCJmYWlsZWQgdG8gY29tcGlsZSB3YXNtIG1vZHVsZTogXCIgKyBzdHIpO1xuICAgICAgICBpZiAoc3RyLmluY2x1ZGVzKFwiaW1wb3J0ZWQgTWVtb3J5XCIpIHx8IHN0ci5pbmNsdWRlcyhcIm1lbW9yeSBpbXBvcnRcIikpIHtcbiAgICAgICAgICBlcnIoXG4gICAgICAgICAgICBcIk1lbW9yeSBzaXplIGluY29tcGF0aWJpbGl0eSBpc3N1ZXMgbWF5IGJlIGR1ZSB0byBjaGFuZ2luZyBJTklUSUFMX01FTU9SWSBhdCBydW50aW1lIHRvIHNvbWV0aGluZyB0b28gbGFyZ2UuIFVzZSBBTExPV19NRU1PUllfR1JPV1RIIHRvIGFsbG93IGFueSBzaXplIG1lbW9yeSAoYW5kIGFsc28gbWFrZSBzdXJlIG5vdCB0byBzZXQgSU5JVElBTF9NRU1PUlkgYXQgcnVudGltZSB0byBzb21ldGhpbmcgc21hbGxlciB0aGFuIGl0IHdhcyBhdCBjb21waWxlIHRpbWUpLlwiXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIFtpbnN0YW5jZSwgbW9kdWxlXTtcbiAgICB9XG4gICAgZnVuY3Rpb24gY3JlYXRlV2FzbSgpIHtcbiAgICAgIHZhciBpbmZvID0geyBhOiBhc21MaWJyYXJ5QXJnIH07XG4gICAgICBmdW5jdGlvbiByZWNlaXZlSW5zdGFuY2UoaW5zdGFuY2UsIG1vZHVsZSkge1xuICAgICAgICB2YXIgZXhwb3J0cyA9IGluc3RhbmNlLmV4cG9ydHM7XG4gICAgICAgIE1vZHVsZVtcImFzbVwiXSA9IGV4cG9ydHM7XG4gICAgICAgIHdhc21NZW1vcnkgPSBNb2R1bGVbXCJhc21cIl1bXCJ1XCJdO1xuICAgICAgICB1cGRhdGVHbG9iYWxCdWZmZXJBbmRWaWV3cyh3YXNtTWVtb3J5LmJ1ZmZlcik7XG4gICAgICAgIHdhc21UYWJsZSA9IE1vZHVsZVtcImFzbVwiXVtcInBhXCJdO1xuICAgICAgICBhZGRPbkluaXQoTW9kdWxlW1wiYXNtXCJdW1widlwiXSk7XG4gICAgICAgIHJlbW92ZVJ1bkRlcGVuZGVuY3koXCJ3YXNtLWluc3RhbnRpYXRlXCIpO1xuICAgICAgfVxuICAgICAgYWRkUnVuRGVwZW5kZW5jeShcIndhc20taW5zdGFudGlhdGVcIik7XG4gICAgICBpZiAoTW9kdWxlW1wiaW5zdGFudGlhdGVXYXNtXCJdKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgdmFyIGV4cG9ydHMgPSBNb2R1bGVbXCJpbnN0YW50aWF0ZVdhc21cIl0oaW5mbywgcmVjZWl2ZUluc3RhbmNlKTtcbiAgICAgICAgICByZXR1cm4gZXhwb3J0cztcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIGVycihcIk1vZHVsZS5pbnN0YW50aWF0ZVdhc20gY2FsbGJhY2sgZmFpbGVkIHdpdGggZXJyb3I6IFwiICsgZSk7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB2YXIgcmVzdWx0ID0gaW5zdGFudGlhdGVTeW5jKHdhc21CaW5hcnlGaWxlLCBpbmZvKTtcbiAgICAgIHJlY2VpdmVJbnN0YW5jZShyZXN1bHRbMF0pO1xuICAgICAgcmV0dXJuIE1vZHVsZVtcImFzbVwiXTtcbiAgICB9XG4gICAgdmFyIHRlbXBEb3VibGU7XG4gICAgdmFyIHRlbXBJNjQ7XG4gICAgZnVuY3Rpb24gTEVfSEVBUF9MT0FEX0YzMihieXRlT2Zmc2V0KSB7XG4gICAgICByZXR1cm4gSEVBUF9EQVRBX1ZJRVcuZ2V0RmxvYXQzMihieXRlT2Zmc2V0LCB0cnVlKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gTEVfSEVBUF9MT0FEX0Y2NChieXRlT2Zmc2V0KSB7XG4gICAgICByZXR1cm4gSEVBUF9EQVRBX1ZJRVcuZ2V0RmxvYXQ2NChieXRlT2Zmc2V0LCB0cnVlKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gTEVfSEVBUF9MT0FEX0kxNihieXRlT2Zmc2V0KSB7XG4gICAgICByZXR1cm4gSEVBUF9EQVRBX1ZJRVcuZ2V0SW50MTYoYnl0ZU9mZnNldCwgdHJ1ZSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIExFX0hFQVBfTE9BRF9JMzIoYnl0ZU9mZnNldCkge1xuICAgICAgcmV0dXJuIEhFQVBfREFUQV9WSUVXLmdldEludDMyKGJ5dGVPZmZzZXQsIHRydWUpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBMRV9IRUFQX1NUT1JFX0kxNihieXRlT2Zmc2V0LCB2YWx1ZSkge1xuICAgICAgSEVBUF9EQVRBX1ZJRVcuc2V0SW50MTYoYnl0ZU9mZnNldCwgdmFsdWUsIHRydWUpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBMRV9IRUFQX1NUT1JFX0kzMihieXRlT2Zmc2V0LCB2YWx1ZSkge1xuICAgICAgSEVBUF9EQVRBX1ZJRVcuc2V0SW50MzIoYnl0ZU9mZnNldCwgdmFsdWUsIHRydWUpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBjYWxsUnVudGltZUNhbGxiYWNrcyhjYWxsYmFja3MpIHtcbiAgICAgIHdoaWxlIChjYWxsYmFja3MubGVuZ3RoID4gMCkge1xuICAgICAgICB2YXIgY2FsbGJhY2sgPSBjYWxsYmFja3Muc2hpZnQoKTtcbiAgICAgICAgaWYgKHR5cGVvZiBjYWxsYmFjayA9PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICBjYWxsYmFjayhNb2R1bGUpO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIHZhciBmdW5jID0gY2FsbGJhY2suZnVuYztcbiAgICAgICAgaWYgKHR5cGVvZiBmdW5jID09PSBcIm51bWJlclwiKSB7XG4gICAgICAgICAgaWYgKGNhbGxiYWNrLmFyZyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB3YXNtVGFibGUuZ2V0KGZ1bmMpKCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHdhc21UYWJsZS5nZXQoZnVuYykoY2FsbGJhY2suYXJnKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZnVuYyhjYWxsYmFjay5hcmcgPT09IHVuZGVmaW5lZCA/IG51bGwgOiBjYWxsYmFjay5hcmcpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIF9nbXRpbWVfcih0aW1lLCB0bVB0cikge1xuICAgICAgdmFyIGRhdGUgPSBuZXcgRGF0ZShMRV9IRUFQX0xPQURfSTMyKCh0aW1lID4+IDIpICogNCkgKiAxZTMpO1xuICAgICAgTEVfSEVBUF9TVE9SRV9JMzIoKHRtUHRyID4+IDIpICogNCwgZGF0ZS5nZXRVVENTZWNvbmRzKCkpO1xuICAgICAgTEVfSEVBUF9TVE9SRV9JMzIoKCh0bVB0ciArIDQpID4+IDIpICogNCwgZGF0ZS5nZXRVVENNaW51dGVzKCkpO1xuICAgICAgTEVfSEVBUF9TVE9SRV9JMzIoKCh0bVB0ciArIDgpID4+IDIpICogNCwgZGF0ZS5nZXRVVENIb3VycygpKTtcbiAgICAgIExFX0hFQVBfU1RPUkVfSTMyKCgodG1QdHIgKyAxMikgPj4gMikgKiA0LCBkYXRlLmdldFVUQ0RhdGUoKSk7XG4gICAgICBMRV9IRUFQX1NUT1JFX0kzMigoKHRtUHRyICsgMTYpID4+IDIpICogNCwgZGF0ZS5nZXRVVENNb250aCgpKTtcbiAgICAgIExFX0hFQVBfU1RPUkVfSTMyKCgodG1QdHIgKyAyMCkgPj4gMikgKiA0LCBkYXRlLmdldFVUQ0Z1bGxZZWFyKCkgLSAxOTAwKTtcbiAgICAgIExFX0hFQVBfU1RPUkVfSTMyKCgodG1QdHIgKyAyNCkgPj4gMikgKiA0LCBkYXRlLmdldFVUQ0RheSgpKTtcbiAgICAgIExFX0hFQVBfU1RPUkVfSTMyKCgodG1QdHIgKyAzNikgPj4gMikgKiA0LCAwKTtcbiAgICAgIExFX0hFQVBfU1RPUkVfSTMyKCgodG1QdHIgKyAzMikgPj4gMikgKiA0LCAwKTtcbiAgICAgIHZhciBzdGFydCA9IERhdGUuVVRDKGRhdGUuZ2V0VVRDRnVsbFllYXIoKSwgMCwgMSwgMCwgMCwgMCwgMCk7XG4gICAgICB2YXIgeWRheSA9ICgoZGF0ZS5nZXRUaW1lKCkgLSBzdGFydCkgLyAoMWUzICogNjAgKiA2MCAqIDI0KSkgfCAwO1xuICAgICAgTEVfSEVBUF9TVE9SRV9JMzIoKCh0bVB0ciArIDI4KSA+PiAyKSAqIDQsIHlkYXkpO1xuICAgICAgaWYgKCFfZ210aW1lX3IuR01UU3RyaW5nKSBfZ210aW1lX3IuR01UU3RyaW5nID0gYWxsb2NhdGVVVEY4KFwiR01UXCIpO1xuICAgICAgTEVfSEVBUF9TVE9SRV9JMzIoKCh0bVB0ciArIDQwKSA+PiAyKSAqIDQsIF9nbXRpbWVfci5HTVRTdHJpbmcpO1xuICAgICAgcmV0dXJuIHRtUHRyO1xuICAgIH1cbiAgICBmdW5jdGlvbiBfX19nbXRpbWVfcihhMCwgYTEpIHtcbiAgICAgIHJldHVybiBfZ210aW1lX3IoYTAsIGExKTtcbiAgICB9XG4gICAgdmFyIFBBVEggPSB7XG4gICAgICBzcGxpdFBhdGg6IGZ1bmN0aW9uKGZpbGVuYW1lKSB7XG4gICAgICAgIHZhciBzcGxpdFBhdGhSZSA9IC9eKFxcLz98KShbXFxzXFxTXSo/KSgoPzpcXC57MSwyfXxbXlxcL10rP3wpKFxcLlteLlxcL10qfCkpKD86W1xcL10qKSQvO1xuICAgICAgICByZXR1cm4gc3BsaXRQYXRoUmUuZXhlYyhmaWxlbmFtZSkuc2xpY2UoMSk7XG4gICAgICB9LFxuICAgICAgbm9ybWFsaXplQXJyYXk6IGZ1bmN0aW9uKHBhcnRzLCBhbGxvd0Fib3ZlUm9vdCkge1xuICAgICAgICB2YXIgdXAgPSAwO1xuICAgICAgICBmb3IgKHZhciBpID0gcGFydHMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICB2YXIgbGFzdCA9IHBhcnRzW2ldO1xuICAgICAgICAgIGlmIChsYXN0ID09PSBcIi5cIikge1xuICAgICAgICAgICAgcGFydHMuc3BsaWNlKGksIDEpO1xuICAgICAgICAgIH0gZWxzZSBpZiAobGFzdCA9PT0gXCIuLlwiKSB7XG4gICAgICAgICAgICBwYXJ0cy5zcGxpY2UoaSwgMSk7XG4gICAgICAgICAgICB1cCsrO1xuICAgICAgICAgIH0gZWxzZSBpZiAodXApIHtcbiAgICAgICAgICAgIHBhcnRzLnNwbGljZShpLCAxKTtcbiAgICAgICAgICAgIHVwLS07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChhbGxvd0Fib3ZlUm9vdCkge1xuICAgICAgICAgIGZvciAoOyB1cDsgdXAtLSkge1xuICAgICAgICAgICAgcGFydHMudW5zaGlmdChcIi4uXCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcGFydHM7XG4gICAgICB9LFxuICAgICAgbm9ybWFsaXplOiBmdW5jdGlvbihwYXRoKSB7XG4gICAgICAgIHZhciBpc0Fic29sdXRlID0gcGF0aC5jaGFyQXQoMCkgPT09IFwiL1wiLFxuICAgICAgICAgIHRyYWlsaW5nU2xhc2ggPSBwYXRoLnN1YnN0cigtMSkgPT09IFwiL1wiO1xuICAgICAgICBwYXRoID0gUEFUSC5ub3JtYWxpemVBcnJheShcbiAgICAgICAgICBwYXRoLnNwbGl0KFwiL1wiKS5maWx0ZXIoZnVuY3Rpb24ocCkge1xuICAgICAgICAgICAgcmV0dXJuICEhcDtcbiAgICAgICAgICB9KSxcbiAgICAgICAgICAhaXNBYnNvbHV0ZVxuICAgICAgICApLmpvaW4oXCIvXCIpO1xuICAgICAgICBpZiAoIXBhdGggJiYgIWlzQWJzb2x1dGUpIHtcbiAgICAgICAgICBwYXRoID0gXCIuXCI7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBhdGggJiYgdHJhaWxpbmdTbGFzaCkge1xuICAgICAgICAgIHBhdGggKz0gXCIvXCI7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIChpc0Fic29sdXRlID8gXCIvXCIgOiBcIlwiKSArIHBhdGg7XG4gICAgICB9LFxuICAgICAgZGlybmFtZTogZnVuY3Rpb24ocGF0aCkge1xuICAgICAgICB2YXIgcmVzdWx0ID0gUEFUSC5zcGxpdFBhdGgocGF0aCksXG4gICAgICAgICAgcm9vdCA9IHJlc3VsdFswXSxcbiAgICAgICAgICBkaXIgPSByZXN1bHRbMV07XG4gICAgICAgIGlmICghcm9vdCAmJiAhZGlyKSB7XG4gICAgICAgICAgcmV0dXJuIFwiLlwiO1xuICAgICAgICB9XG4gICAgICAgIGlmIChkaXIpIHtcbiAgICAgICAgICBkaXIgPSBkaXIuc3Vic3RyKDAsIGRpci5sZW5ndGggLSAxKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcm9vdCArIGRpcjtcbiAgICAgIH0sXG4gICAgICBiYXNlbmFtZTogZnVuY3Rpb24ocGF0aCkge1xuICAgICAgICBpZiAocGF0aCA9PT0gXCIvXCIpIHJldHVybiBcIi9cIjtcbiAgICAgICAgcGF0aCA9IFBBVEgubm9ybWFsaXplKHBhdGgpO1xuICAgICAgICBwYXRoID0gcGF0aC5yZXBsYWNlKC9cXC8kLywgXCJcIik7XG4gICAgICAgIHZhciBsYXN0U2xhc2ggPSBwYXRoLmxhc3RJbmRleE9mKFwiL1wiKTtcbiAgICAgICAgaWYgKGxhc3RTbGFzaCA9PT0gLTEpIHJldHVybiBwYXRoO1xuICAgICAgICByZXR1cm4gcGF0aC5zdWJzdHIobGFzdFNsYXNoICsgMSk7XG4gICAgICB9LFxuICAgICAgZXh0bmFtZTogZnVuY3Rpb24ocGF0aCkge1xuICAgICAgICByZXR1cm4gUEFUSC5zcGxpdFBhdGgocGF0aClbM107XG4gICAgICB9LFxuICAgICAgam9pbjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciBwYXRocyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCk7XG4gICAgICAgIHJldHVybiBQQVRILm5vcm1hbGl6ZShwYXRocy5qb2luKFwiL1wiKSk7XG4gICAgICB9LFxuICAgICAgam9pbjI6IGZ1bmN0aW9uKGwsIHIpIHtcbiAgICAgICAgcmV0dXJuIFBBVEgubm9ybWFsaXplKGwgKyBcIi9cIiArIHIpO1xuICAgICAgfVxuICAgIH07XG4gICAgZnVuY3Rpb24gZ2V0UmFuZG9tRGV2aWNlKCkge1xuICAgICAgaWYgKFxuICAgICAgICB0eXBlb2YgY3J5cHRvID09PSBcIm9iamVjdFwiICYmXG4gICAgICAgIHR5cGVvZiBjcnlwdG9bXCJnZXRSYW5kb21WYWx1ZXNcIl0gPT09IFwiZnVuY3Rpb25cIlxuICAgICAgKSB7XG4gICAgICAgIHZhciByYW5kb21CdWZmZXIgPSBuZXcgVWludDhBcnJheSgxKTtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICAgIGNyeXB0by5nZXRSYW5kb21WYWx1ZXMocmFuZG9tQnVmZmVyKTtcbiAgICAgICAgICByZXR1cm4gcmFuZG9tQnVmZmVyWzBdO1xuICAgICAgICB9O1xuICAgICAgfSBlbHNlIGlmIChFTlZJUk9OTUVOVF9JU19OT0RFKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgdmFyIGNyeXB0b19tb2R1bGUgPSByZXF1aXJlKFwiY3J5cHRvXCIpO1xuICAgICAgICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHJldHVybiBjcnlwdG9fbW9kdWxlW1wicmFuZG9tQnl0ZXNcIl0oMSlbMF07XG4gICAgICAgICAgfTtcbiAgICAgICAgfSBjYXRjaCAoZSkge31cbiAgICAgIH1cbiAgICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgICAgYWJvcnQoXCJyYW5kb21EZXZpY2VcIik7XG4gICAgICB9O1xuICAgIH1cbiAgICB2YXIgUEFUSF9GUyA9IHtcbiAgICAgIHJlc29sdmU6IGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgcmVzb2x2ZWRQYXRoID0gXCJcIixcbiAgICAgICAgICByZXNvbHZlZEFic29sdXRlID0gZmFsc2U7XG4gICAgICAgIGZvciAodmFyIGkgPSBhcmd1bWVudHMubGVuZ3RoIC0gMTsgaSA+PSAtMSAmJiAhcmVzb2x2ZWRBYnNvbHV0ZTsgaS0tKSB7XG4gICAgICAgICAgdmFyIHBhdGggPSBpID49IDAgPyBhcmd1bWVudHNbaV0gOiBGUy5jd2QoKTtcbiAgICAgICAgICBpZiAodHlwZW9mIHBhdGggIT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJBcmd1bWVudHMgdG8gcGF0aC5yZXNvbHZlIG11c3QgYmUgc3RyaW5nc1wiKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKCFwYXRoKSB7XG4gICAgICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmVzb2x2ZWRQYXRoID0gcGF0aCArIFwiL1wiICsgcmVzb2x2ZWRQYXRoO1xuICAgICAgICAgIHJlc29sdmVkQWJzb2x1dGUgPSBwYXRoLmNoYXJBdCgwKSA9PT0gXCIvXCI7XG4gICAgICAgIH1cbiAgICAgICAgcmVzb2x2ZWRQYXRoID0gUEFUSC5ub3JtYWxpemVBcnJheShcbiAgICAgICAgICByZXNvbHZlZFBhdGguc3BsaXQoXCIvXCIpLmZpbHRlcihmdW5jdGlvbihwKSB7XG4gICAgICAgICAgICByZXR1cm4gISFwO1xuICAgICAgICAgIH0pLFxuICAgICAgICAgICFyZXNvbHZlZEFic29sdXRlXG4gICAgICAgICkuam9pbihcIi9cIik7XG4gICAgICAgIHJldHVybiAocmVzb2x2ZWRBYnNvbHV0ZSA/IFwiL1wiIDogXCJcIikgKyByZXNvbHZlZFBhdGggfHwgXCIuXCI7XG4gICAgICB9LFxuICAgICAgcmVsYXRpdmU6IGZ1bmN0aW9uKGZyb20sIHRvKSB7XG4gICAgICAgIGZyb20gPSBQQVRIX0ZTLnJlc29sdmUoZnJvbSkuc3Vic3RyKDEpO1xuICAgICAgICB0byA9IFBBVEhfRlMucmVzb2x2ZSh0bykuc3Vic3RyKDEpO1xuICAgICAgICBmdW5jdGlvbiB0cmltKGFycikge1xuICAgICAgICAgIHZhciBzdGFydCA9IDA7XG4gICAgICAgICAgZm9yICg7IHN0YXJ0IDwgYXJyLmxlbmd0aDsgc3RhcnQrKykge1xuICAgICAgICAgICAgaWYgKGFycltzdGFydF0gIT09IFwiXCIpIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICB2YXIgZW5kID0gYXJyLmxlbmd0aCAtIDE7XG4gICAgICAgICAgZm9yICg7IGVuZCA+PSAwOyBlbmQtLSkge1xuICAgICAgICAgICAgaWYgKGFycltlbmRdICE9PSBcIlwiKSBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHN0YXJ0ID4gZW5kKSByZXR1cm4gW107XG4gICAgICAgICAgcmV0dXJuIGFyci5zbGljZShzdGFydCwgZW5kIC0gc3RhcnQgKyAxKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgZnJvbVBhcnRzID0gdHJpbShmcm9tLnNwbGl0KFwiL1wiKSk7XG4gICAgICAgIHZhciB0b1BhcnRzID0gdHJpbSh0by5zcGxpdChcIi9cIikpO1xuICAgICAgICB2YXIgbGVuZ3RoID0gTWF0aC5taW4oZnJvbVBhcnRzLmxlbmd0aCwgdG9QYXJ0cy5sZW5ndGgpO1xuICAgICAgICB2YXIgc2FtZVBhcnRzTGVuZ3RoID0gbGVuZ3RoO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgaWYgKGZyb21QYXJ0c1tpXSAhPT0gdG9QYXJ0c1tpXSkge1xuICAgICAgICAgICAgc2FtZVBhcnRzTGVuZ3RoID0gaTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB2YXIgb3V0cHV0UGFydHMgPSBbXTtcbiAgICAgICAgZm9yICh2YXIgaSA9IHNhbWVQYXJ0c0xlbmd0aDsgaSA8IGZyb21QYXJ0cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIG91dHB1dFBhcnRzLnB1c2goXCIuLlwiKTtcbiAgICAgICAgfVxuICAgICAgICBvdXRwdXRQYXJ0cyA9IG91dHB1dFBhcnRzLmNvbmNhdCh0b1BhcnRzLnNsaWNlKHNhbWVQYXJ0c0xlbmd0aCkpO1xuICAgICAgICByZXR1cm4gb3V0cHV0UGFydHMuam9pbihcIi9cIik7XG4gICAgICB9XG4gICAgfTtcbiAgICB2YXIgVFRZID0ge1xuICAgICAgdHR5czogW10sXG4gICAgICBpbml0OiBmdW5jdGlvbigpIHt9LFxuICAgICAgc2h1dGRvd246IGZ1bmN0aW9uKCkge30sXG4gICAgICByZWdpc3RlcjogZnVuY3Rpb24oZGV2LCBvcHMpIHtcbiAgICAgICAgVFRZLnR0eXNbZGV2XSA9IHsgaW5wdXQ6IFtdLCBvdXRwdXQ6IFtdLCBvcHM6IG9wcyB9O1xuICAgICAgICBGUy5yZWdpc3RlckRldmljZShkZXYsIFRUWS5zdHJlYW1fb3BzKTtcbiAgICAgIH0sXG4gICAgICBzdHJlYW1fb3BzOiB7XG4gICAgICAgIG9wZW46IGZ1bmN0aW9uKHN0cmVhbSkge1xuICAgICAgICAgIHZhciB0dHkgPSBUVFkudHR5c1tzdHJlYW0ubm9kZS5yZGV2XTtcbiAgICAgICAgICBpZiAoIXR0eSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoNDMpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBzdHJlYW0udHR5ID0gdHR5O1xuICAgICAgICAgIHN0cmVhbS5zZWVrYWJsZSA9IGZhbHNlO1xuICAgICAgICB9LFxuICAgICAgICBjbG9zZTogZnVuY3Rpb24oc3RyZWFtKSB7XG4gICAgICAgICAgc3RyZWFtLnR0eS5vcHMuZmx1c2goc3RyZWFtLnR0eSk7XG4gICAgICAgIH0sXG4gICAgICAgIGZsdXNoOiBmdW5jdGlvbihzdHJlYW0pIHtcbiAgICAgICAgICBzdHJlYW0udHR5Lm9wcy5mbHVzaChzdHJlYW0udHR5KTtcbiAgICAgICAgfSxcbiAgICAgICAgcmVhZDogZnVuY3Rpb24oc3RyZWFtLCBidWZmZXIsIG9mZnNldCwgbGVuZ3RoLCBwb3MpIHtcbiAgICAgICAgICBpZiAoIXN0cmVhbS50dHkgfHwgIXN0cmVhbS50dHkub3BzLmdldF9jaGFyKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcig2MCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHZhciBieXRlc1JlYWQgPSAwO1xuICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHZhciByZXN1bHQ7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICByZXN1bHQgPSBzdHJlYW0udHR5Lm9wcy5nZXRfY2hhcihzdHJlYW0udHR5KTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoMjkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHJlc3VsdCA9PT0gdW5kZWZpbmVkICYmIGJ5dGVzUmVhZCA9PT0gMCkge1xuICAgICAgICAgICAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcig2KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChyZXN1bHQgPT09IG51bGwgfHwgcmVzdWx0ID09PSB1bmRlZmluZWQpIGJyZWFrO1xuICAgICAgICAgICAgYnl0ZXNSZWFkKys7XG4gICAgICAgICAgICBidWZmZXJbb2Zmc2V0ICsgaV0gPSByZXN1bHQ7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChieXRlc1JlYWQpIHtcbiAgICAgICAgICAgIHN0cmVhbS5ub2RlLnRpbWVzdGFtcCA9IERhdGUubm93KCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBieXRlc1JlYWQ7XG4gICAgICAgIH0sXG4gICAgICAgIHdyaXRlOiBmdW5jdGlvbihzdHJlYW0sIGJ1ZmZlciwgb2Zmc2V0LCBsZW5ndGgsIHBvcykge1xuICAgICAgICAgIGlmICghc3RyZWFtLnR0eSB8fCAhc3RyZWFtLnR0eS5vcHMucHV0X2NoYXIpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKDYwKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgc3RyZWFtLnR0eS5vcHMucHV0X2NoYXIoc3RyZWFtLnR0eSwgYnVmZmVyW29mZnNldCArIGldKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcigyOSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChsZW5ndGgpIHtcbiAgICAgICAgICAgIHN0cmVhbS5ub2RlLnRpbWVzdGFtcCA9IERhdGUubm93KCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZGVmYXVsdF90dHlfb3BzOiB7XG4gICAgICAgIGdldF9jaGFyOiBmdW5jdGlvbih0dHkpIHtcbiAgICAgICAgICBpZiAoIXR0eS5pbnB1dC5sZW5ndGgpIHtcbiAgICAgICAgICAgIHZhciByZXN1bHQgPSBudWxsO1xuICAgICAgICAgICAgaWYgKEVOVklST05NRU5UX0lTX05PREUpIHtcbiAgICAgICAgICAgICAgdmFyIEJVRlNJWkUgPSAyNTY7XG4gICAgICAgICAgICAgIHZhciBidWYgPSBCdWZmZXIuYWxsb2NcbiAgICAgICAgICAgICAgICA/IEJ1ZmZlci5hbGxvYyhCVUZTSVpFKVxuICAgICAgICAgICAgICAgIDogbmV3IEJ1ZmZlcihCVUZTSVpFKTtcbiAgICAgICAgICAgICAgdmFyIGJ5dGVzUmVhZCA9IDA7XG4gICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgYnl0ZXNSZWFkID0gbm9kZUZTLnJlYWRTeW5jKFxuICAgICAgICAgICAgICAgICAgcHJvY2Vzcy5zdGRpbi5mZCxcbiAgICAgICAgICAgICAgICAgIGJ1ZixcbiAgICAgICAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAgICAgICBCVUZTSVpFLFxuICAgICAgICAgICAgICAgICAgbnVsbFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICBpZiAoZS50b1N0cmluZygpLmluY2x1ZGVzKFwiRU9GXCIpKSBieXRlc1JlYWQgPSAwO1xuICAgICAgICAgICAgICAgIGVsc2UgdGhyb3cgZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAoYnl0ZXNSZWFkID4gMCkge1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGJ1Zi5zbGljZSgwLCBieXRlc1JlYWQpLnRvU3RyaW5nKFwidXRmLThcIik7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gbnVsbDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgdHlwZW9mIHdpbmRvdyAhPSBcInVuZGVmaW5lZFwiICYmXG4gICAgICAgICAgICAgIHR5cGVvZiB3aW5kb3cucHJvbXB0ID09IFwiZnVuY3Rpb25cIlxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIHJlc3VsdCA9IHdpbmRvdy5wcm9tcHQoXCJJbnB1dDogXCIpO1xuICAgICAgICAgICAgICBpZiAocmVzdWx0ICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0ICs9IFwiXFxuXCI7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHJlYWRsaW5lID09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgICAgICByZXN1bHQgPSByZWFkbGluZSgpO1xuICAgICAgICAgICAgICBpZiAocmVzdWx0ICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0ICs9IFwiXFxuXCI7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghcmVzdWx0KSB7XG4gICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdHR5LmlucHV0ID0gaW50QXJyYXlGcm9tU3RyaW5nKHJlc3VsdCwgdHJ1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB0dHkuaW5wdXQuc2hpZnQoKTtcbiAgICAgICAgfSxcbiAgICAgICAgcHV0X2NoYXI6IGZ1bmN0aW9uKHR0eSwgdmFsKSB7XG4gICAgICAgICAgaWYgKHZhbCA9PT0gbnVsbCB8fCB2YWwgPT09IDEwKSB7XG4gICAgICAgICAgICBvdXQoVVRGOEFycmF5VG9TdHJpbmcodHR5Lm91dHB1dCwgMCkpO1xuICAgICAgICAgICAgdHR5Lm91dHB1dCA9IFtdO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAodmFsICE9IDApIHR0eS5vdXRwdXQucHVzaCh2YWwpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZmx1c2g6IGZ1bmN0aW9uKHR0eSkge1xuICAgICAgICAgIGlmICh0dHkub3V0cHV0ICYmIHR0eS5vdXRwdXQubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgb3V0KFVURjhBcnJheVRvU3RyaW5nKHR0eS5vdXRwdXQsIDApKTtcbiAgICAgICAgICAgIHR0eS5vdXRwdXQgPSBbXTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBkZWZhdWx0X3R0eTFfb3BzOiB7XG4gICAgICAgIHB1dF9jaGFyOiBmdW5jdGlvbih0dHksIHZhbCkge1xuICAgICAgICAgIGlmICh2YWwgPT09IG51bGwgfHwgdmFsID09PSAxMCkge1xuICAgICAgICAgICAgZXJyKFVURjhBcnJheVRvU3RyaW5nKHR0eS5vdXRwdXQsIDApKTtcbiAgICAgICAgICAgIHR0eS5vdXRwdXQgPSBbXTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHZhbCAhPSAwKSB0dHkub3V0cHV0LnB1c2godmFsKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGZsdXNoOiBmdW5jdGlvbih0dHkpIHtcbiAgICAgICAgICBpZiAodHR5Lm91dHB1dCAmJiB0dHkub3V0cHV0Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGVycihVVEY4QXJyYXlUb1N0cmluZyh0dHkub3V0cHV0LCAwKSk7XG4gICAgICAgICAgICB0dHkub3V0cHV0ID0gW107XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcbiAgICBmdW5jdGlvbiBtbWFwQWxsb2Moc2l6ZSkge1xuICAgICAgdmFyIGFsaWduZWRTaXplID0gYWxpZ25NZW1vcnkoc2l6ZSwgNjU1MzYpO1xuICAgICAgdmFyIHB0ciA9IF9tYWxsb2MoYWxpZ25lZFNpemUpO1xuICAgICAgd2hpbGUgKHNpemUgPCBhbGlnbmVkU2l6ZSkgSEVBUDhbcHRyICsgc2l6ZSsrXSA9IDA7XG4gICAgICByZXR1cm4gcHRyO1xuICAgIH1cbiAgICB2YXIgTUVNRlMgPSB7XG4gICAgICBvcHNfdGFibGU6IG51bGwsXG4gICAgICBtb3VudDogZnVuY3Rpb24obW91bnQpIHtcbiAgICAgICAgcmV0dXJuIE1FTUZTLmNyZWF0ZU5vZGUobnVsbCwgXCIvXCIsIDE2Mzg0IHwgNTExLCAwKTtcbiAgICAgIH0sXG4gICAgICBjcmVhdGVOb2RlOiBmdW5jdGlvbihwYXJlbnQsIG5hbWUsIG1vZGUsIGRldikge1xuICAgICAgICBpZiAoRlMuaXNCbGtkZXYobW9kZSkgfHwgRlMuaXNGSUZPKG1vZGUpKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoNjMpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghTUVNRlMub3BzX3RhYmxlKSB7XG4gICAgICAgICAgTUVNRlMub3BzX3RhYmxlID0ge1xuICAgICAgICAgICAgZGlyOiB7XG4gICAgICAgICAgICAgIG5vZGU6IHtcbiAgICAgICAgICAgICAgICBnZXRhdHRyOiBNRU1GUy5ub2RlX29wcy5nZXRhdHRyLFxuICAgICAgICAgICAgICAgIHNldGF0dHI6IE1FTUZTLm5vZGVfb3BzLnNldGF0dHIsXG4gICAgICAgICAgICAgICAgbG9va3VwOiBNRU1GUy5ub2RlX29wcy5sb29rdXAsXG4gICAgICAgICAgICAgICAgbWtub2Q6IE1FTUZTLm5vZGVfb3BzLm1rbm9kLFxuICAgICAgICAgICAgICAgIHJlbmFtZTogTUVNRlMubm9kZV9vcHMucmVuYW1lLFxuICAgICAgICAgICAgICAgIHVubGluazogTUVNRlMubm9kZV9vcHMudW5saW5rLFxuICAgICAgICAgICAgICAgIHJtZGlyOiBNRU1GUy5ub2RlX29wcy5ybWRpcixcbiAgICAgICAgICAgICAgICByZWFkZGlyOiBNRU1GUy5ub2RlX29wcy5yZWFkZGlyLFxuICAgICAgICAgICAgICAgIHN5bWxpbms6IE1FTUZTLm5vZGVfb3BzLnN5bWxpbmtcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgc3RyZWFtOiB7IGxsc2VlazogTUVNRlMuc3RyZWFtX29wcy5sbHNlZWsgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGZpbGU6IHtcbiAgICAgICAgICAgICAgbm9kZToge1xuICAgICAgICAgICAgICAgIGdldGF0dHI6IE1FTUZTLm5vZGVfb3BzLmdldGF0dHIsXG4gICAgICAgICAgICAgICAgc2V0YXR0cjogTUVNRlMubm9kZV9vcHMuc2V0YXR0clxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBzdHJlYW06IHtcbiAgICAgICAgICAgICAgICBsbHNlZWs6IE1FTUZTLnN0cmVhbV9vcHMubGxzZWVrLFxuICAgICAgICAgICAgICAgIHJlYWQ6IE1FTUZTLnN0cmVhbV9vcHMucmVhZCxcbiAgICAgICAgICAgICAgICB3cml0ZTogTUVNRlMuc3RyZWFtX29wcy53cml0ZSxcbiAgICAgICAgICAgICAgICBhbGxvY2F0ZTogTUVNRlMuc3RyZWFtX29wcy5hbGxvY2F0ZSxcbiAgICAgICAgICAgICAgICBtbWFwOiBNRU1GUy5zdHJlYW1fb3BzLm1tYXAsXG4gICAgICAgICAgICAgICAgbXN5bmM6IE1FTUZTLnN0cmVhbV9vcHMubXN5bmNcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxpbms6IHtcbiAgICAgICAgICAgICAgbm9kZToge1xuICAgICAgICAgICAgICAgIGdldGF0dHI6IE1FTUZTLm5vZGVfb3BzLmdldGF0dHIsXG4gICAgICAgICAgICAgICAgc2V0YXR0cjogTUVNRlMubm9kZV9vcHMuc2V0YXR0cixcbiAgICAgICAgICAgICAgICByZWFkbGluazogTUVNRlMubm9kZV9vcHMucmVhZGxpbmtcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgc3RyZWFtOiB7fVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNocmRldjoge1xuICAgICAgICAgICAgICBub2RlOiB7XG4gICAgICAgICAgICAgICAgZ2V0YXR0cjogTUVNRlMubm9kZV9vcHMuZ2V0YXR0cixcbiAgICAgICAgICAgICAgICBzZXRhdHRyOiBNRU1GUy5ub2RlX29wcy5zZXRhdHRyXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHN0cmVhbTogRlMuY2hyZGV2X3N0cmVhbV9vcHNcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIHZhciBub2RlID0gRlMuY3JlYXRlTm9kZShwYXJlbnQsIG5hbWUsIG1vZGUsIGRldik7XG4gICAgICAgIGlmIChGUy5pc0Rpcihub2RlLm1vZGUpKSB7XG4gICAgICAgICAgbm9kZS5ub2RlX29wcyA9IE1FTUZTLm9wc190YWJsZS5kaXIubm9kZTtcbiAgICAgICAgICBub2RlLnN0cmVhbV9vcHMgPSBNRU1GUy5vcHNfdGFibGUuZGlyLnN0cmVhbTtcbiAgICAgICAgICBub2RlLmNvbnRlbnRzID0ge307XG4gICAgICAgIH0gZWxzZSBpZiAoRlMuaXNGaWxlKG5vZGUubW9kZSkpIHtcbiAgICAgICAgICBub2RlLm5vZGVfb3BzID0gTUVNRlMub3BzX3RhYmxlLmZpbGUubm9kZTtcbiAgICAgICAgICBub2RlLnN0cmVhbV9vcHMgPSBNRU1GUy5vcHNfdGFibGUuZmlsZS5zdHJlYW07XG4gICAgICAgICAgbm9kZS51c2VkQnl0ZXMgPSAwO1xuICAgICAgICAgIG5vZGUuY29udGVudHMgPSBudWxsO1xuICAgICAgICB9IGVsc2UgaWYgKEZTLmlzTGluayhub2RlLm1vZGUpKSB7XG4gICAgICAgICAgbm9kZS5ub2RlX29wcyA9IE1FTUZTLm9wc190YWJsZS5saW5rLm5vZGU7XG4gICAgICAgICAgbm9kZS5zdHJlYW1fb3BzID0gTUVNRlMub3BzX3RhYmxlLmxpbmsuc3RyZWFtO1xuICAgICAgICB9IGVsc2UgaWYgKEZTLmlzQ2hyZGV2KG5vZGUubW9kZSkpIHtcbiAgICAgICAgICBub2RlLm5vZGVfb3BzID0gTUVNRlMub3BzX3RhYmxlLmNocmRldi5ub2RlO1xuICAgICAgICAgIG5vZGUuc3RyZWFtX29wcyA9IE1FTUZTLm9wc190YWJsZS5jaHJkZXYuc3RyZWFtO1xuICAgICAgICB9XG4gICAgICAgIG5vZGUudGltZXN0YW1wID0gRGF0ZS5ub3coKTtcbiAgICAgICAgaWYgKHBhcmVudCkge1xuICAgICAgICAgIHBhcmVudC5jb250ZW50c1tuYW1lXSA9IG5vZGU7XG4gICAgICAgICAgcGFyZW50LnRpbWVzdGFtcCA9IG5vZGUudGltZXN0YW1wO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBub2RlO1xuICAgICAgfSxcbiAgICAgIGdldEZpbGVEYXRhQXNUeXBlZEFycmF5OiBmdW5jdGlvbihub2RlKSB7XG4gICAgICAgIGlmICghbm9kZS5jb250ZW50cykgcmV0dXJuIG5ldyBVaW50OEFycmF5KDApO1xuICAgICAgICBpZiAobm9kZS5jb250ZW50cy5zdWJhcnJheSlcbiAgICAgICAgICByZXR1cm4gbm9kZS5jb250ZW50cy5zdWJhcnJheSgwLCBub2RlLnVzZWRCeXRlcyk7XG4gICAgICAgIHJldHVybiBuZXcgVWludDhBcnJheShub2RlLmNvbnRlbnRzKTtcbiAgICAgIH0sXG4gICAgICBleHBhbmRGaWxlU3RvcmFnZTogZnVuY3Rpb24obm9kZSwgbmV3Q2FwYWNpdHkpIHtcbiAgICAgICAgdmFyIHByZXZDYXBhY2l0eSA9IG5vZGUuY29udGVudHMgPyBub2RlLmNvbnRlbnRzLmxlbmd0aCA6IDA7XG4gICAgICAgIGlmIChwcmV2Q2FwYWNpdHkgPj0gbmV3Q2FwYWNpdHkpIHJldHVybjtcbiAgICAgICAgdmFyIENBUEFDSVRZX0RPVUJMSU5HX01BWCA9IDEwMjQgKiAxMDI0O1xuICAgICAgICBuZXdDYXBhY2l0eSA9IE1hdGgubWF4KFxuICAgICAgICAgIG5ld0NhcGFjaXR5LFxuICAgICAgICAgIChwcmV2Q2FwYWNpdHkgKlxuICAgICAgICAgICAgKHByZXZDYXBhY2l0eSA8IENBUEFDSVRZX0RPVUJMSU5HX01BWCA/IDIgOiAxLjEyNSkpID4+PlxuICAgICAgICAgICAgMFxuICAgICAgICApO1xuICAgICAgICBpZiAocHJldkNhcGFjaXR5ICE9IDApIG5ld0NhcGFjaXR5ID0gTWF0aC5tYXgobmV3Q2FwYWNpdHksIDI1Nik7XG4gICAgICAgIHZhciBvbGRDb250ZW50cyA9IG5vZGUuY29udGVudHM7XG4gICAgICAgIG5vZGUuY29udGVudHMgPSBuZXcgVWludDhBcnJheShuZXdDYXBhY2l0eSk7XG4gICAgICAgIGlmIChub2RlLnVzZWRCeXRlcyA+IDApXG4gICAgICAgICAgbm9kZS5jb250ZW50cy5zZXQob2xkQ29udGVudHMuc3ViYXJyYXkoMCwgbm9kZS51c2VkQnl0ZXMpLCAwKTtcbiAgICAgIH0sXG4gICAgICByZXNpemVGaWxlU3RvcmFnZTogZnVuY3Rpb24obm9kZSwgbmV3U2l6ZSkge1xuICAgICAgICBpZiAobm9kZS51c2VkQnl0ZXMgPT0gbmV3U2l6ZSkgcmV0dXJuO1xuICAgICAgICBpZiAobmV3U2l6ZSA9PSAwKSB7XG4gICAgICAgICAgbm9kZS5jb250ZW50cyA9IG51bGw7XG4gICAgICAgICAgbm9kZS51c2VkQnl0ZXMgPSAwO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHZhciBvbGRDb250ZW50cyA9IG5vZGUuY29udGVudHM7XG4gICAgICAgICAgbm9kZS5jb250ZW50cyA9IG5ldyBVaW50OEFycmF5KG5ld1NpemUpO1xuICAgICAgICAgIGlmIChvbGRDb250ZW50cykge1xuICAgICAgICAgICAgbm9kZS5jb250ZW50cy5zZXQoXG4gICAgICAgICAgICAgIG9sZENvbnRlbnRzLnN1YmFycmF5KDAsIE1hdGgubWluKG5ld1NpemUsIG5vZGUudXNlZEJ5dGVzKSlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICAgIG5vZGUudXNlZEJ5dGVzID0gbmV3U2l6ZTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIG5vZGVfb3BzOiB7XG4gICAgICAgIGdldGF0dHI6IGZ1bmN0aW9uKG5vZGUpIHtcbiAgICAgICAgICB2YXIgYXR0ciA9IHt9O1xuICAgICAgICAgIGF0dHIuZGV2ID0gRlMuaXNDaHJkZXYobm9kZS5tb2RlKSA/IG5vZGUuaWQgOiAxO1xuICAgICAgICAgIGF0dHIuaW5vID0gbm9kZS5pZDtcbiAgICAgICAgICBhdHRyLm1vZGUgPSBub2RlLm1vZGU7XG4gICAgICAgICAgYXR0ci5ubGluayA9IDE7XG4gICAgICAgICAgYXR0ci51aWQgPSAwO1xuICAgICAgICAgIGF0dHIuZ2lkID0gMDtcbiAgICAgICAgICBhdHRyLnJkZXYgPSBub2RlLnJkZXY7XG4gICAgICAgICAgaWYgKEZTLmlzRGlyKG5vZGUubW9kZSkpIHtcbiAgICAgICAgICAgIGF0dHIuc2l6ZSA9IDQwOTY7XG4gICAgICAgICAgfSBlbHNlIGlmIChGUy5pc0ZpbGUobm9kZS5tb2RlKSkge1xuICAgICAgICAgICAgYXR0ci5zaXplID0gbm9kZS51c2VkQnl0ZXM7XG4gICAgICAgICAgfSBlbHNlIGlmIChGUy5pc0xpbmsobm9kZS5tb2RlKSkge1xuICAgICAgICAgICAgYXR0ci5zaXplID0gbm9kZS5saW5rLmxlbmd0aDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYXR0ci5zaXplID0gMDtcbiAgICAgICAgICB9XG4gICAgICAgICAgYXR0ci5hdGltZSA9IG5ldyBEYXRlKG5vZGUudGltZXN0YW1wKTtcbiAgICAgICAgICBhdHRyLm10aW1lID0gbmV3IERhdGUobm9kZS50aW1lc3RhbXApO1xuICAgICAgICAgIGF0dHIuY3RpbWUgPSBuZXcgRGF0ZShub2RlLnRpbWVzdGFtcCk7XG4gICAgICAgICAgYXR0ci5ibGtzaXplID0gNDA5NjtcbiAgICAgICAgICBhdHRyLmJsb2NrcyA9IE1hdGguY2VpbChhdHRyLnNpemUgLyBhdHRyLmJsa3NpemUpO1xuICAgICAgICAgIHJldHVybiBhdHRyO1xuICAgICAgICB9LFxuICAgICAgICBzZXRhdHRyOiBmdW5jdGlvbihub2RlLCBhdHRyKSB7XG4gICAgICAgICAgaWYgKGF0dHIubW9kZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBub2RlLm1vZGUgPSBhdHRyLm1vZGU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChhdHRyLnRpbWVzdGFtcCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBub2RlLnRpbWVzdGFtcCA9IGF0dHIudGltZXN0YW1wO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoYXR0ci5zaXplICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIE1FTUZTLnJlc2l6ZUZpbGVTdG9yYWdlKG5vZGUsIGF0dHIuc2l6ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBsb29rdXA6IGZ1bmN0aW9uKHBhcmVudCwgbmFtZSkge1xuICAgICAgICAgIHRocm93IEZTLmdlbmVyaWNFcnJvcnNbNDRdO1xuICAgICAgICB9LFxuICAgICAgICBta25vZDogZnVuY3Rpb24ocGFyZW50LCBuYW1lLCBtb2RlLCBkZXYpIHtcbiAgICAgICAgICByZXR1cm4gTUVNRlMuY3JlYXRlTm9kZShwYXJlbnQsIG5hbWUsIG1vZGUsIGRldik7XG4gICAgICAgIH0sXG4gICAgICAgIHJlbmFtZTogZnVuY3Rpb24ob2xkX25vZGUsIG5ld19kaXIsIG5ld19uYW1lKSB7XG4gICAgICAgICAgaWYgKEZTLmlzRGlyKG9sZF9ub2RlLm1vZGUpKSB7XG4gICAgICAgICAgICB2YXIgbmV3X25vZGU7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICBuZXdfbm9kZSA9IEZTLmxvb2t1cE5vZGUobmV3X2RpciwgbmV3X25hbWUpO1xuICAgICAgICAgICAgfSBjYXRjaCAoZSkge31cbiAgICAgICAgICAgIGlmIChuZXdfbm9kZSkge1xuICAgICAgICAgICAgICBmb3IgKHZhciBpIGluIG5ld19ub2RlLmNvbnRlbnRzKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoNTUpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGRlbGV0ZSBvbGRfbm9kZS5wYXJlbnQuY29udGVudHNbb2xkX25vZGUubmFtZV07XG4gICAgICAgICAgb2xkX25vZGUucGFyZW50LnRpbWVzdGFtcCA9IERhdGUubm93KCk7XG4gICAgICAgICAgb2xkX25vZGUubmFtZSA9IG5ld19uYW1lO1xuICAgICAgICAgIG5ld19kaXIuY29udGVudHNbbmV3X25hbWVdID0gb2xkX25vZGU7XG4gICAgICAgICAgbmV3X2Rpci50aW1lc3RhbXAgPSBvbGRfbm9kZS5wYXJlbnQudGltZXN0YW1wO1xuICAgICAgICAgIG9sZF9ub2RlLnBhcmVudCA9IG5ld19kaXI7XG4gICAgICAgIH0sXG4gICAgICAgIHVubGluazogZnVuY3Rpb24ocGFyZW50LCBuYW1lKSB7XG4gICAgICAgICAgZGVsZXRlIHBhcmVudC5jb250ZW50c1tuYW1lXTtcbiAgICAgICAgICBwYXJlbnQudGltZXN0YW1wID0gRGF0ZS5ub3coKTtcbiAgICAgICAgfSxcbiAgICAgICAgcm1kaXI6IGZ1bmN0aW9uKHBhcmVudCwgbmFtZSkge1xuICAgICAgICAgIHZhciBub2RlID0gRlMubG9va3VwTm9kZShwYXJlbnQsIG5hbWUpO1xuICAgICAgICAgIGZvciAodmFyIGkgaW4gbm9kZS5jb250ZW50cykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoNTUpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBkZWxldGUgcGFyZW50LmNvbnRlbnRzW25hbWVdO1xuICAgICAgICAgIHBhcmVudC50aW1lc3RhbXAgPSBEYXRlLm5vdygpO1xuICAgICAgICB9LFxuICAgICAgICByZWFkZGlyOiBmdW5jdGlvbihub2RlKSB7XG4gICAgICAgICAgdmFyIGVudHJpZXMgPSBbXCIuXCIsIFwiLi5cIl07XG4gICAgICAgICAgZm9yICh2YXIga2V5IGluIG5vZGUuY29udGVudHMpIHtcbiAgICAgICAgICAgIGlmICghbm9kZS5jb250ZW50cy5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZW50cmllcy5wdXNoKGtleSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBlbnRyaWVzO1xuICAgICAgICB9LFxuICAgICAgICBzeW1saW5rOiBmdW5jdGlvbihwYXJlbnQsIG5ld25hbWUsIG9sZHBhdGgpIHtcbiAgICAgICAgICB2YXIgbm9kZSA9IE1FTUZTLmNyZWF0ZU5vZGUocGFyZW50LCBuZXduYW1lLCA1MTEgfCA0MDk2MCwgMCk7XG4gICAgICAgICAgbm9kZS5saW5rID0gb2xkcGF0aDtcbiAgICAgICAgICByZXR1cm4gbm9kZTtcbiAgICAgICAgfSxcbiAgICAgICAgcmVhZGxpbms6IGZ1bmN0aW9uKG5vZGUpIHtcbiAgICAgICAgICBpZiAoIUZTLmlzTGluayhub2RlLm1vZGUpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcigyOCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBub2RlLmxpbms7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBzdHJlYW1fb3BzOiB7XG4gICAgICAgIHJlYWQ6IGZ1bmN0aW9uKHN0cmVhbSwgYnVmZmVyLCBvZmZzZXQsIGxlbmd0aCwgcG9zaXRpb24pIHtcbiAgICAgICAgICB2YXIgY29udGVudHMgPSBzdHJlYW0ubm9kZS5jb250ZW50cztcbiAgICAgICAgICBpZiAocG9zaXRpb24gPj0gc3RyZWFtLm5vZGUudXNlZEJ5dGVzKSByZXR1cm4gMDtcbiAgICAgICAgICB2YXIgc2l6ZSA9IE1hdGgubWluKHN0cmVhbS5ub2RlLnVzZWRCeXRlcyAtIHBvc2l0aW9uLCBsZW5ndGgpO1xuICAgICAgICAgIGlmIChzaXplID4gOCAmJiBjb250ZW50cy5zdWJhcnJheSkge1xuICAgICAgICAgICAgYnVmZmVyLnNldChjb250ZW50cy5zdWJhcnJheShwb3NpdGlvbiwgcG9zaXRpb24gKyBzaXplKSwgb2Zmc2V0KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspXG4gICAgICAgICAgICAgIGJ1ZmZlcltvZmZzZXQgKyBpXSA9IGNvbnRlbnRzW3Bvc2l0aW9uICsgaV07XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBzaXplO1xuICAgICAgICB9LFxuICAgICAgICB3cml0ZTogZnVuY3Rpb24oc3RyZWFtLCBidWZmZXIsIG9mZnNldCwgbGVuZ3RoLCBwb3NpdGlvbiwgY2FuT3duKSB7XG4gICAgICAgICAgaWYgKGJ1ZmZlci5idWZmZXIgPT09IEhFQVA4LmJ1ZmZlcikge1xuICAgICAgICAgICAgY2FuT3duID0gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICghbGVuZ3RoKSByZXR1cm4gMDtcbiAgICAgICAgICB2YXIgbm9kZSA9IHN0cmVhbS5ub2RlO1xuICAgICAgICAgIG5vZGUudGltZXN0YW1wID0gRGF0ZS5ub3coKTtcbiAgICAgICAgICBpZiAoYnVmZmVyLnN1YmFycmF5ICYmICghbm9kZS5jb250ZW50cyB8fCBub2RlLmNvbnRlbnRzLnN1YmFycmF5KSkge1xuICAgICAgICAgICAgaWYgKGNhbk93bikge1xuICAgICAgICAgICAgICBub2RlLmNvbnRlbnRzID0gYnVmZmVyLnN1YmFycmF5KG9mZnNldCwgb2Zmc2V0ICsgbGVuZ3RoKTtcbiAgICAgICAgICAgICAgbm9kZS51c2VkQnl0ZXMgPSBsZW5ndGg7XG4gICAgICAgICAgICAgIHJldHVybiBsZW5ndGg7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG5vZGUudXNlZEJ5dGVzID09PSAwICYmIHBvc2l0aW9uID09PSAwKSB7XG4gICAgICAgICAgICAgIG5vZGUuY29udGVudHMgPSBidWZmZXIuc2xpY2Uob2Zmc2V0LCBvZmZzZXQgKyBsZW5ndGgpO1xuICAgICAgICAgICAgICBub2RlLnVzZWRCeXRlcyA9IGxlbmd0aDtcbiAgICAgICAgICAgICAgcmV0dXJuIGxlbmd0aDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocG9zaXRpb24gKyBsZW5ndGggPD0gbm9kZS51c2VkQnl0ZXMpIHtcbiAgICAgICAgICAgICAgbm9kZS5jb250ZW50cy5zZXQoXG4gICAgICAgICAgICAgICAgYnVmZmVyLnN1YmFycmF5KG9mZnNldCwgb2Zmc2V0ICsgbGVuZ3RoKSxcbiAgICAgICAgICAgICAgICBwb3NpdGlvblxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICByZXR1cm4gbGVuZ3RoO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBNRU1GUy5leHBhbmRGaWxlU3RvcmFnZShub2RlLCBwb3NpdGlvbiArIGxlbmd0aCk7XG4gICAgICAgICAgaWYgKG5vZGUuY29udGVudHMuc3ViYXJyYXkgJiYgYnVmZmVyLnN1YmFycmF5KSB7XG4gICAgICAgICAgICBub2RlLmNvbnRlbnRzLnNldChcbiAgICAgICAgICAgICAgYnVmZmVyLnN1YmFycmF5KG9mZnNldCwgb2Zmc2V0ICsgbGVuZ3RoKSxcbiAgICAgICAgICAgICAgcG9zaXRpb25cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgbm9kZS5jb250ZW50c1twb3NpdGlvbiArIGldID0gYnVmZmVyW29mZnNldCArIGldO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBub2RlLnVzZWRCeXRlcyA9IE1hdGgubWF4KG5vZGUudXNlZEJ5dGVzLCBwb3NpdGlvbiArIGxlbmd0aCk7XG4gICAgICAgICAgcmV0dXJuIGxlbmd0aDtcbiAgICAgICAgfSxcbiAgICAgICAgbGxzZWVrOiBmdW5jdGlvbihzdHJlYW0sIG9mZnNldCwgd2hlbmNlKSB7XG4gICAgICAgICAgdmFyIHBvc2l0aW9uID0gb2Zmc2V0O1xuICAgICAgICAgIGlmICh3aGVuY2UgPT09IDEpIHtcbiAgICAgICAgICAgIHBvc2l0aW9uICs9IHN0cmVhbS5wb3NpdGlvbjtcbiAgICAgICAgICB9IGVsc2UgaWYgKHdoZW5jZSA9PT0gMikge1xuICAgICAgICAgICAgaWYgKEZTLmlzRmlsZShzdHJlYW0ubm9kZS5tb2RlKSkge1xuICAgICAgICAgICAgICBwb3NpdGlvbiArPSBzdHJlYW0ubm9kZS51c2VkQnl0ZXM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChwb3NpdGlvbiA8IDApIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKDI4KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHBvc2l0aW9uO1xuICAgICAgICB9LFxuICAgICAgICBhbGxvY2F0ZTogZnVuY3Rpb24oc3RyZWFtLCBvZmZzZXQsIGxlbmd0aCkge1xuICAgICAgICAgIE1FTUZTLmV4cGFuZEZpbGVTdG9yYWdlKHN0cmVhbS5ub2RlLCBvZmZzZXQgKyBsZW5ndGgpO1xuICAgICAgICAgIHN0cmVhbS5ub2RlLnVzZWRCeXRlcyA9IE1hdGgubWF4KFxuICAgICAgICAgICAgc3RyZWFtLm5vZGUudXNlZEJ5dGVzLFxuICAgICAgICAgICAgb2Zmc2V0ICsgbGVuZ3RoXG4gICAgICAgICAgKTtcbiAgICAgICAgfSxcbiAgICAgICAgbW1hcDogZnVuY3Rpb24oc3RyZWFtLCBhZGRyZXNzLCBsZW5ndGgsIHBvc2l0aW9uLCBwcm90LCBmbGFncykge1xuICAgICAgICAgIGlmIChhZGRyZXNzICE9PSAwKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcigyOCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICghRlMuaXNGaWxlKHN0cmVhbS5ub2RlLm1vZGUpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcig0Myk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHZhciBwdHI7XG4gICAgICAgICAgdmFyIGFsbG9jYXRlZDtcbiAgICAgICAgICB2YXIgY29udGVudHMgPSBzdHJlYW0ubm9kZS5jb250ZW50cztcbiAgICAgICAgICBpZiAoIShmbGFncyAmIDIpICYmIGNvbnRlbnRzLmJ1ZmZlciA9PT0gYnVmZmVyKSB7XG4gICAgICAgICAgICBhbGxvY2F0ZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIHB0ciA9IGNvbnRlbnRzLmJ5dGVPZmZzZXQ7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChwb3NpdGlvbiA+IDAgfHwgcG9zaXRpb24gKyBsZW5ndGggPCBjb250ZW50cy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgaWYgKGNvbnRlbnRzLnN1YmFycmF5KSB7XG4gICAgICAgICAgICAgICAgY29udGVudHMgPSBjb250ZW50cy5zdWJhcnJheShwb3NpdGlvbiwgcG9zaXRpb24gKyBsZW5ndGgpO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnRlbnRzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoXG4gICAgICAgICAgICAgICAgICBjb250ZW50cyxcbiAgICAgICAgICAgICAgICAgIHBvc2l0aW9uLFxuICAgICAgICAgICAgICAgICAgcG9zaXRpb24gKyBsZW5ndGhcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhbGxvY2F0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgcHRyID0gbW1hcEFsbG9jKGxlbmd0aCk7XG4gICAgICAgICAgICBpZiAoIXB0cikge1xuICAgICAgICAgICAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcig0OCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBIRUFQOC5zZXQoY29udGVudHMsIHB0cik7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB7IHB0cjogcHRyLCBhbGxvY2F0ZWQ6IGFsbG9jYXRlZCB9O1xuICAgICAgICB9LFxuICAgICAgICBtc3luYzogZnVuY3Rpb24oc3RyZWFtLCBidWZmZXIsIG9mZnNldCwgbGVuZ3RoLCBtbWFwRmxhZ3MpIHtcbiAgICAgICAgICBpZiAoIUZTLmlzRmlsZShzdHJlYW0ubm9kZS5tb2RlKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoNDMpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAobW1hcEZsYWdzICYgMikge1xuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgICAgfVxuICAgICAgICAgIHZhciBieXRlc1dyaXR0ZW4gPSBNRU1GUy5zdHJlYW1fb3BzLndyaXRlKFxuICAgICAgICAgICAgc3RyZWFtLFxuICAgICAgICAgICAgYnVmZmVyLFxuICAgICAgICAgICAgMCxcbiAgICAgICAgICAgIGxlbmd0aCxcbiAgICAgICAgICAgIG9mZnNldCxcbiAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgKTtcbiAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG4gICAgdmFyIEVSUk5PX0NPREVTID0ge1xuICAgICAgRVBFUk06IDYzLFxuICAgICAgRU5PRU5UOiA0NCxcbiAgICAgIEVTUkNIOiA3MSxcbiAgICAgIEVJTlRSOiAyNyxcbiAgICAgIEVJTzogMjksXG4gICAgICBFTlhJTzogNjAsXG4gICAgICBFMkJJRzogMSxcbiAgICAgIEVOT0VYRUM6IDQ1LFxuICAgICAgRUJBREY6IDgsXG4gICAgICBFQ0hJTEQ6IDEyLFxuICAgICAgRUFHQUlOOiA2LFxuICAgICAgRVdPVUxEQkxPQ0s6IDYsXG4gICAgICBFTk9NRU06IDQ4LFxuICAgICAgRUFDQ0VTOiAyLFxuICAgICAgRUZBVUxUOiAyMSxcbiAgICAgIEVOT1RCTEs6IDEwNSxcbiAgICAgIEVCVVNZOiAxMCxcbiAgICAgIEVFWElTVDogMjAsXG4gICAgICBFWERFVjogNzUsXG4gICAgICBFTk9ERVY6IDQzLFxuICAgICAgRU5PVERJUjogNTQsXG4gICAgICBFSVNESVI6IDMxLFxuICAgICAgRUlOVkFMOiAyOCxcbiAgICAgIEVORklMRTogNDEsXG4gICAgICBFTUZJTEU6IDMzLFxuICAgICAgRU5PVFRZOiA1OSxcbiAgICAgIEVUWFRCU1k6IDc0LFxuICAgICAgRUZCSUc6IDIyLFxuICAgICAgRU5PU1BDOiA1MSxcbiAgICAgIEVTUElQRTogNzAsXG4gICAgICBFUk9GUzogNjksXG4gICAgICBFTUxJTks6IDM0LFxuICAgICAgRVBJUEU6IDY0LFxuICAgICAgRURPTTogMTgsXG4gICAgICBFUkFOR0U6IDY4LFxuICAgICAgRU5PTVNHOiA0OSxcbiAgICAgIEVJRFJNOiAyNCxcbiAgICAgIEVDSFJORzogMTA2LFxuICAgICAgRUwyTlNZTkM6IDE1NixcbiAgICAgIEVMM0hMVDogMTA3LFxuICAgICAgRUwzUlNUOiAxMDgsXG4gICAgICBFTE5STkc6IDEwOSxcbiAgICAgIEVVTkFUQ0g6IDExMCxcbiAgICAgIEVOT0NTSTogMTExLFxuICAgICAgRUwySExUOiAxMTIsXG4gICAgICBFREVBRExLOiAxNixcbiAgICAgIEVOT0xDSzogNDYsXG4gICAgICBFQkFERTogMTEzLFxuICAgICAgRUJBRFI6IDExNCxcbiAgICAgIEVYRlVMTDogMTE1LFxuICAgICAgRU5PQU5POiAxMDQsXG4gICAgICBFQkFEUlFDOiAxMDMsXG4gICAgICBFQkFEU0xUOiAxMDIsXG4gICAgICBFREVBRExPQ0s6IDE2LFxuICAgICAgRUJGT05UOiAxMDEsXG4gICAgICBFTk9TVFI6IDEwMCxcbiAgICAgIEVOT0RBVEE6IDExNixcbiAgICAgIEVUSU1FOiAxMTcsXG4gICAgICBFTk9TUjogMTE4LFxuICAgICAgRU5PTkVUOiAxMTksXG4gICAgICBFTk9QS0c6IDEyMCxcbiAgICAgIEVSRU1PVEU6IDEyMSxcbiAgICAgIEVOT0xJTks6IDQ3LFxuICAgICAgRUFEVjogMTIyLFxuICAgICAgRVNSTU5UOiAxMjMsXG4gICAgICBFQ09NTTogMTI0LFxuICAgICAgRVBST1RPOiA2NSxcbiAgICAgIEVNVUxUSUhPUDogMzYsXG4gICAgICBFRE9URE9UOiAxMjUsXG4gICAgICBFQkFETVNHOiA5LFxuICAgICAgRU5PVFVOSVE6IDEyNixcbiAgICAgIEVCQURGRDogMTI3LFxuICAgICAgRVJFTUNIRzogMTI4LFxuICAgICAgRUxJQkFDQzogMTI5LFxuICAgICAgRUxJQkJBRDogMTMwLFxuICAgICAgRUxJQlNDTjogMTMxLFxuICAgICAgRUxJQk1BWDogMTMyLFxuICAgICAgRUxJQkVYRUM6IDEzMyxcbiAgICAgIEVOT1NZUzogNTIsXG4gICAgICBFTk9URU1QVFk6IDU1LFxuICAgICAgRU5BTUVUT09MT05HOiAzNyxcbiAgICAgIEVMT09QOiAzMixcbiAgICAgIEVPUE5PVFNVUFA6IDEzOCxcbiAgICAgIEVQRk5PU1VQUE9SVDogMTM5LFxuICAgICAgRUNPTk5SRVNFVDogMTUsXG4gICAgICBFTk9CVUZTOiA0MixcbiAgICAgIEVBRk5PU1VQUE9SVDogNSxcbiAgICAgIEVQUk9UT1RZUEU6IDY3LFxuICAgICAgRU5PVFNPQ0s6IDU3LFxuICAgICAgRU5PUFJPVE9PUFQ6IDUwLFxuICAgICAgRVNIVVRET1dOOiAxNDAsXG4gICAgICBFQ09OTlJFRlVTRUQ6IDE0LFxuICAgICAgRUFERFJJTlVTRTogMyxcbiAgICAgIEVDT05OQUJPUlRFRDogMTMsXG4gICAgICBFTkVUVU5SRUFDSDogNDAsXG4gICAgICBFTkVURE9XTjogMzgsXG4gICAgICBFVElNRURPVVQ6IDczLFxuICAgICAgRUhPU1RET1dOOiAxNDIsXG4gICAgICBFSE9TVFVOUkVBQ0g6IDIzLFxuICAgICAgRUlOUFJPR1JFU1M6IDI2LFxuICAgICAgRUFMUkVBRFk6IDcsXG4gICAgICBFREVTVEFERFJSRVE6IDE3LFxuICAgICAgRU1TR1NJWkU6IDM1LFxuICAgICAgRVBST1RPTk9TVVBQT1JUOiA2NixcbiAgICAgIEVTT0NLVE5PU1VQUE9SVDogMTM3LFxuICAgICAgRUFERFJOT1RBVkFJTDogNCxcbiAgICAgIEVORVRSRVNFVDogMzksXG4gICAgICBFSVNDT05OOiAzMCxcbiAgICAgIEVOT1RDT05OOiA1MyxcbiAgICAgIEVUT09NQU5ZUkVGUzogMTQxLFxuICAgICAgRVVTRVJTOiAxMzYsXG4gICAgICBFRFFVT1Q6IDE5LFxuICAgICAgRVNUQUxFOiA3MixcbiAgICAgIEVOT1RTVVA6IDEzOCxcbiAgICAgIEVOT01FRElVTTogMTQ4LFxuICAgICAgRUlMU0VROiAyNSxcbiAgICAgIEVPVkVSRkxPVzogNjEsXG4gICAgICBFQ0FOQ0VMRUQ6IDExLFxuICAgICAgRU5PVFJFQ09WRVJBQkxFOiA1NixcbiAgICAgIEVPV05FUkRFQUQ6IDYyLFxuICAgICAgRVNUUlBJUEU6IDEzNVxuICAgIH07XG4gICAgdmFyIE5PREVGUyA9IHtcbiAgICAgIGlzV2luZG93czogZmFsc2UsXG4gICAgICBzdGF0aWNJbml0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgTk9ERUZTLmlzV2luZG93cyA9ICEhcHJvY2Vzcy5wbGF0Zm9ybS5tYXRjaCgvXndpbi8pO1xuICAgICAgICB2YXIgZmxhZ3MgPSB7IGZzOiBmcy5jb25zdGFudHMgfTtcbiAgICAgICAgaWYgKGZsYWdzW1wiZnNcIl0pIHtcbiAgICAgICAgICBmbGFncyA9IGZsYWdzW1wiZnNcIl07XG4gICAgICAgIH1cbiAgICAgICAgTk9ERUZTLmZsYWdzRm9yTm9kZU1hcCA9IHtcbiAgICAgICAgICAxMDI0OiBmbGFnc1tcIk9fQVBQRU5EXCJdLFxuICAgICAgICAgIDY0OiBmbGFnc1tcIk9fQ1JFQVRcIl0sXG4gICAgICAgICAgMTI4OiBmbGFnc1tcIk9fRVhDTFwiXSxcbiAgICAgICAgICAyNTY6IGZsYWdzW1wiT19OT0NUVFlcIl0sXG4gICAgICAgICAgMDogZmxhZ3NbXCJPX1JET05MWVwiXSxcbiAgICAgICAgICAyOiBmbGFnc1tcIk9fUkRXUlwiXSxcbiAgICAgICAgICA0MDk2OiBmbGFnc1tcIk9fU1lOQ1wiXSxcbiAgICAgICAgICA1MTI6IGZsYWdzW1wiT19UUlVOQ1wiXSxcbiAgICAgICAgICAxOiBmbGFnc1tcIk9fV1JPTkxZXCJdXG4gICAgICAgIH07XG4gICAgICB9LFxuICAgICAgYnVmZmVyRnJvbTogZnVuY3Rpb24oYXJyYXlCdWZmZXIpIHtcbiAgICAgICAgcmV0dXJuIEJ1ZmZlcltcImFsbG9jXCJdXG4gICAgICAgICAgPyBCdWZmZXIuZnJvbShhcnJheUJ1ZmZlcilcbiAgICAgICAgICA6IG5ldyBCdWZmZXIoYXJyYXlCdWZmZXIpO1xuICAgICAgfSxcbiAgICAgIGNvbnZlcnROb2RlQ29kZTogZnVuY3Rpb24oZSkge1xuICAgICAgICB2YXIgY29kZSA9IGUuY29kZTtcbiAgICAgICAgcmV0dXJuIEVSUk5PX0NPREVTW2NvZGVdO1xuICAgICAgfSxcbiAgICAgIG1vdW50OiBmdW5jdGlvbihtb3VudCkge1xuICAgICAgICByZXR1cm4gTk9ERUZTLmNyZWF0ZU5vZGUobnVsbCwgXCIvXCIsIE5PREVGUy5nZXRNb2RlKG1vdW50Lm9wdHMucm9vdCksIDApO1xuICAgICAgfSxcbiAgICAgIGNyZWF0ZU5vZGU6IGZ1bmN0aW9uKHBhcmVudCwgbmFtZSwgbW9kZSwgZGV2KSB7XG4gICAgICAgIGlmICghRlMuaXNEaXIobW9kZSkgJiYgIUZTLmlzRmlsZShtb2RlKSAmJiAhRlMuaXNMaW5rKG1vZGUpKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoMjgpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBub2RlID0gRlMuY3JlYXRlTm9kZShwYXJlbnQsIG5hbWUsIG1vZGUpO1xuICAgICAgICBub2RlLm5vZGVfb3BzID0gTk9ERUZTLm5vZGVfb3BzO1xuICAgICAgICBub2RlLnN0cmVhbV9vcHMgPSBOT0RFRlMuc3RyZWFtX29wcztcbiAgICAgICAgcmV0dXJuIG5vZGU7XG4gICAgICB9LFxuICAgICAgZ2V0TW9kZTogZnVuY3Rpb24ocGF0aCkge1xuICAgICAgICB2YXIgc3RhdDtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBzdGF0ID0gZnMubHN0YXRTeW5jKHBhdGgpO1xuICAgICAgICAgIGlmIChOT0RFRlMuaXNXaW5kb3dzKSB7XG4gICAgICAgICAgICBzdGF0Lm1vZGUgPSBzdGF0Lm1vZGUgfCAoKHN0YXQubW9kZSAmIDI5MikgPj4gMik7XG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgaWYgKCFlLmNvZGUpIHRocm93IGU7XG4gICAgICAgICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoTk9ERUZTLmNvbnZlcnROb2RlQ29kZShlKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN0YXQubW9kZTtcbiAgICAgIH0sXG4gICAgICByZWFsUGF0aDogZnVuY3Rpb24obm9kZSkge1xuICAgICAgICB2YXIgcGFydHMgPSBbXTtcbiAgICAgICAgd2hpbGUgKG5vZGUucGFyZW50ICE9PSBub2RlKSB7XG4gICAgICAgICAgcGFydHMucHVzaChub2RlLm5hbWUpO1xuICAgICAgICAgIG5vZGUgPSBub2RlLnBhcmVudDtcbiAgICAgICAgfVxuICAgICAgICBwYXJ0cy5wdXNoKG5vZGUubW91bnQub3B0cy5yb290KTtcbiAgICAgICAgcGFydHMucmV2ZXJzZSgpO1xuICAgICAgICByZXR1cm4gUEFUSC5qb2luLmFwcGx5KG51bGwsIHBhcnRzKTtcbiAgICAgIH0sXG4gICAgICBmbGFnc0Zvck5vZGU6IGZ1bmN0aW9uKGZsYWdzKSB7XG4gICAgICAgIGZsYWdzICY9IH4yMDk3MTUyO1xuICAgICAgICBmbGFncyAmPSB+MjA0ODtcbiAgICAgICAgZmxhZ3MgJj0gfjMyNzY4O1xuICAgICAgICBmbGFncyAmPSB+NTI0Mjg4O1xuICAgICAgICB2YXIgbmV3RmxhZ3MgPSAwO1xuICAgICAgICBmb3IgKHZhciBrIGluIE5PREVGUy5mbGFnc0Zvck5vZGVNYXApIHtcbiAgICAgICAgICBpZiAoZmxhZ3MgJiBrKSB7XG4gICAgICAgICAgICBuZXdGbGFncyB8PSBOT0RFRlMuZmxhZ3NGb3JOb2RlTWFwW2tdO1xuICAgICAgICAgICAgZmxhZ3MgXj0gaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFmbGFncykge1xuICAgICAgICAgIHJldHVybiBuZXdGbGFncztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcigyOCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBub2RlX29wczoge1xuICAgICAgICBnZXRhdHRyOiBmdW5jdGlvbihub2RlKSB7XG4gICAgICAgICAgdmFyIHBhdGggPSBOT0RFRlMucmVhbFBhdGgobm9kZSk7XG4gICAgICAgICAgdmFyIHN0YXQ7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHN0YXQgPSBmcy5sc3RhdFN5bmMocGF0aCk7XG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgaWYgKCFlLmNvZGUpIHRocm93IGU7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihOT0RFRlMuY29udmVydE5vZGVDb2RlKGUpKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKE5PREVGUy5pc1dpbmRvd3MgJiYgIXN0YXQuYmxrc2l6ZSkge1xuICAgICAgICAgICAgc3RhdC5ibGtzaXplID0gNDA5NjtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKE5PREVGUy5pc1dpbmRvd3MgJiYgIXN0YXQuYmxvY2tzKSB7XG4gICAgICAgICAgICBzdGF0LmJsb2NrcyA9ICgoc3RhdC5zaXplICsgc3RhdC5ibGtzaXplIC0gMSkgLyBzdGF0LmJsa3NpemUpIHwgMDtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGRldjogc3RhdC5kZXYsXG4gICAgICAgICAgICBpbm86IHN0YXQuaW5vLFxuICAgICAgICAgICAgbW9kZTogc3RhdC5tb2RlLFxuICAgICAgICAgICAgbmxpbms6IHN0YXQubmxpbmssXG4gICAgICAgICAgICB1aWQ6IHN0YXQudWlkLFxuICAgICAgICAgICAgZ2lkOiBzdGF0LmdpZCxcbiAgICAgICAgICAgIHJkZXY6IHN0YXQucmRldixcbiAgICAgICAgICAgIHNpemU6IHN0YXQuc2l6ZSxcbiAgICAgICAgICAgIGF0aW1lOiBzdGF0LmF0aW1lLFxuICAgICAgICAgICAgbXRpbWU6IHN0YXQubXRpbWUsXG4gICAgICAgICAgICBjdGltZTogc3RhdC5jdGltZSxcbiAgICAgICAgICAgIGJsa3NpemU6IHN0YXQuYmxrc2l6ZSxcbiAgICAgICAgICAgIGJsb2Nrczogc3RhdC5ibG9ja3NcbiAgICAgICAgICB9O1xuICAgICAgICB9LFxuICAgICAgICBzZXRhdHRyOiBmdW5jdGlvbihub2RlLCBhdHRyKSB7XG4gICAgICAgICAgdmFyIHBhdGggPSBOT0RFRlMucmVhbFBhdGgobm9kZSk7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGlmIChhdHRyLm1vZGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICBmcy5jaG1vZFN5bmMocGF0aCwgYXR0ci5tb2RlKTtcbiAgICAgICAgICAgICAgbm9kZS5tb2RlID0gYXR0ci5tb2RlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGF0dHIudGltZXN0YW1wICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgdmFyIGRhdGUgPSBuZXcgRGF0ZShhdHRyLnRpbWVzdGFtcCk7XG4gICAgICAgICAgICAgIGZzLnV0aW1lc1N5bmMocGF0aCwgZGF0ZSwgZGF0ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoYXR0ci5zaXplICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgZnMudHJ1bmNhdGVTeW5jKHBhdGgsIGF0dHIuc2l6ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgaWYgKCFlLmNvZGUpIHRocm93IGU7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihOT0RFRlMuY29udmVydE5vZGVDb2RlKGUpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGxvb2t1cDogZnVuY3Rpb24ocGFyZW50LCBuYW1lKSB7XG4gICAgICAgICAgdmFyIHBhdGggPSBQQVRILmpvaW4yKE5PREVGUy5yZWFsUGF0aChwYXJlbnQpLCBuYW1lKTtcbiAgICAgICAgICB2YXIgbW9kZSA9IE5PREVGUy5nZXRNb2RlKHBhdGgpO1xuICAgICAgICAgIHJldHVybiBOT0RFRlMuY3JlYXRlTm9kZShwYXJlbnQsIG5hbWUsIG1vZGUpO1xuICAgICAgICB9LFxuICAgICAgICBta25vZDogZnVuY3Rpb24ocGFyZW50LCBuYW1lLCBtb2RlLCBkZXYpIHtcbiAgICAgICAgICB2YXIgbm9kZSA9IE5PREVGUy5jcmVhdGVOb2RlKHBhcmVudCwgbmFtZSwgbW9kZSwgZGV2KTtcbiAgICAgICAgICB2YXIgcGF0aCA9IE5PREVGUy5yZWFsUGF0aChub2RlKTtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKEZTLmlzRGlyKG5vZGUubW9kZSkpIHtcbiAgICAgICAgICAgICAgZnMubWtkaXJTeW5jKHBhdGgsIG5vZGUubW9kZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBmcy53cml0ZUZpbGVTeW5jKHBhdGgsIFwiXCIsIHsgbW9kZTogbm9kZS5tb2RlIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIGlmICghZS5jb2RlKSB0aHJvdyBlO1xuICAgICAgICAgICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoTk9ERUZTLmNvbnZlcnROb2RlQ29kZShlKSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBub2RlO1xuICAgICAgICB9LFxuICAgICAgICByZW5hbWU6IGZ1bmN0aW9uKG9sZE5vZGUsIG5ld0RpciwgbmV3TmFtZSkge1xuICAgICAgICAgIHZhciBvbGRQYXRoID0gTk9ERUZTLnJlYWxQYXRoKG9sZE5vZGUpO1xuICAgICAgICAgIHZhciBuZXdQYXRoID0gUEFUSC5qb2luMihOT0RFRlMucmVhbFBhdGgobmV3RGlyKSwgbmV3TmFtZSk7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGZzLnJlbmFtZVN5bmMob2xkUGF0aCwgbmV3UGF0aCk7XG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgaWYgKCFlLmNvZGUpIHRocm93IGU7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihOT0RFRlMuY29udmVydE5vZGVDb2RlKGUpKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgb2xkTm9kZS5uYW1lID0gbmV3TmFtZTtcbiAgICAgICAgfSxcbiAgICAgICAgdW5saW5rOiBmdW5jdGlvbihwYXJlbnQsIG5hbWUpIHtcbiAgICAgICAgICB2YXIgcGF0aCA9IFBBVEguam9pbjIoTk9ERUZTLnJlYWxQYXRoKHBhcmVudCksIG5hbWUpO1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBmcy51bmxpbmtTeW5jKHBhdGgpO1xuICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIGlmICghZS5jb2RlKSB0aHJvdyBlO1xuICAgICAgICAgICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoTk9ERUZTLmNvbnZlcnROb2RlQ29kZShlKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBybWRpcjogZnVuY3Rpb24ocGFyZW50LCBuYW1lKSB7XG4gICAgICAgICAgdmFyIHBhdGggPSBQQVRILmpvaW4yKE5PREVGUy5yZWFsUGF0aChwYXJlbnQpLCBuYW1lKTtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgZnMucm1kaXJTeW5jKHBhdGgpO1xuICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIGlmICghZS5jb2RlKSB0aHJvdyBlO1xuICAgICAgICAgICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoTk9ERUZTLmNvbnZlcnROb2RlQ29kZShlKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICByZWFkZGlyOiBmdW5jdGlvbihub2RlKSB7XG4gICAgICAgICAgdmFyIHBhdGggPSBOT0RFRlMucmVhbFBhdGgobm9kZSk7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJldHVybiBmcy5yZWFkZGlyU3luYyhwYXRoKTtcbiAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICBpZiAoIWUuY29kZSkgdGhyb3cgZTtcbiAgICAgICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKE5PREVGUy5jb252ZXJ0Tm9kZUNvZGUoZSkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgc3ltbGluazogZnVuY3Rpb24ocGFyZW50LCBuZXdOYW1lLCBvbGRQYXRoKSB7XG4gICAgICAgICAgdmFyIG5ld1BhdGggPSBQQVRILmpvaW4yKE5PREVGUy5yZWFsUGF0aChwYXJlbnQpLCBuZXdOYW1lKTtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgZnMuc3ltbGlua1N5bmMob2xkUGF0aCwgbmV3UGF0aCk7XG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgaWYgKCFlLmNvZGUpIHRocm93IGU7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihOT0RFRlMuY29udmVydE5vZGVDb2RlKGUpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHJlYWRsaW5rOiBmdW5jdGlvbihub2RlKSB7XG4gICAgICAgICAgdmFyIHBhdGggPSBOT0RFRlMucmVhbFBhdGgobm9kZSk7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHBhdGggPSBmcy5yZWFkbGlua1N5bmMocGF0aCk7XG4gICAgICAgICAgICBwYXRoID0gTk9ERUpTX1BBVEgucmVsYXRpdmUoXG4gICAgICAgICAgICAgIE5PREVKU19QQVRILnJlc29sdmUobm9kZS5tb3VudC5vcHRzLnJvb3QpLFxuICAgICAgICAgICAgICBwYXRoXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgcmV0dXJuIHBhdGg7XG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgaWYgKCFlLmNvZGUpIHRocm93IGU7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihOT0RFRlMuY29udmVydE5vZGVDb2RlKGUpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBzdHJlYW1fb3BzOiB7XG4gICAgICAgIG9wZW46IGZ1bmN0aW9uKHN0cmVhbSkge1xuICAgICAgICAgIHZhciBwYXRoID0gTk9ERUZTLnJlYWxQYXRoKHN0cmVhbS5ub2RlKTtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKEZTLmlzRmlsZShzdHJlYW0ubm9kZS5tb2RlKSkge1xuICAgICAgICAgICAgICBzdHJlYW0ubmZkID0gZnMub3BlblN5bmMocGF0aCwgTk9ERUZTLmZsYWdzRm9yTm9kZShzdHJlYW0uZmxhZ3MpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICBpZiAoIWUuY29kZSkgdGhyb3cgZTtcbiAgICAgICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKE5PREVGUy5jb252ZXJ0Tm9kZUNvZGUoZSkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY2xvc2U6IGZ1bmN0aW9uKHN0cmVhbSkge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBpZiAoRlMuaXNGaWxlKHN0cmVhbS5ub2RlLm1vZGUpICYmIHN0cmVhbS5uZmQpIHtcbiAgICAgICAgICAgICAgZnMuY2xvc2VTeW5jKHN0cmVhbS5uZmQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIGlmICghZS5jb2RlKSB0aHJvdyBlO1xuICAgICAgICAgICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoTk9ERUZTLmNvbnZlcnROb2RlQ29kZShlKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICByZWFkOiBmdW5jdGlvbihzdHJlYW0sIGJ1ZmZlciwgb2Zmc2V0LCBsZW5ndGgsIHBvc2l0aW9uKSB7XG4gICAgICAgICAgaWYgKGxlbmd0aCA9PT0gMCkgcmV0dXJuIDA7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJldHVybiBmcy5yZWFkU3luYyhcbiAgICAgICAgICAgICAgc3RyZWFtLm5mZCxcbiAgICAgICAgICAgICAgTk9ERUZTLmJ1ZmZlckZyb20oYnVmZmVyLmJ1ZmZlciksXG4gICAgICAgICAgICAgIG9mZnNldCxcbiAgICAgICAgICAgICAgbGVuZ3RoLFxuICAgICAgICAgICAgICBwb3NpdGlvblxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihOT0RFRlMuY29udmVydE5vZGVDb2RlKGUpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHdyaXRlOiBmdW5jdGlvbihzdHJlYW0sIGJ1ZmZlciwgb2Zmc2V0LCBsZW5ndGgsIHBvc2l0aW9uKSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJldHVybiBmcy53cml0ZVN5bmMoXG4gICAgICAgICAgICAgIHN0cmVhbS5uZmQsXG4gICAgICAgICAgICAgIE5PREVGUy5idWZmZXJGcm9tKGJ1ZmZlci5idWZmZXIpLFxuICAgICAgICAgICAgICBvZmZzZXQsXG4gICAgICAgICAgICAgIGxlbmd0aCxcbiAgICAgICAgICAgICAgcG9zaXRpb25cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoTk9ERUZTLmNvbnZlcnROb2RlQ29kZShlKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBsbHNlZWs6IGZ1bmN0aW9uKHN0cmVhbSwgb2Zmc2V0LCB3aGVuY2UpIHtcbiAgICAgICAgICB2YXIgcG9zaXRpb24gPSBvZmZzZXQ7XG4gICAgICAgICAgaWYgKHdoZW5jZSA9PT0gMSkge1xuICAgICAgICAgICAgcG9zaXRpb24gKz0gc3RyZWFtLnBvc2l0aW9uO1xuICAgICAgICAgIH0gZWxzZSBpZiAod2hlbmNlID09PSAyKSB7XG4gICAgICAgICAgICBpZiAoRlMuaXNGaWxlKHN0cmVhbS5ub2RlLm1vZGUpKSB7XG4gICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgdmFyIHN0YXQgPSBmcy5mc3RhdFN5bmMoc3RyZWFtLm5mZCk7XG4gICAgICAgICAgICAgICAgcG9zaXRpb24gKz0gc3RhdC5zaXplO1xuICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoTk9ERUZTLmNvbnZlcnROb2RlQ29kZShlKSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHBvc2l0aW9uIDwgMCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoMjgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gcG9zaXRpb247XG4gICAgICAgIH0sXG4gICAgICAgIG1tYXA6IGZ1bmN0aW9uKHN0cmVhbSwgYWRkcmVzcywgbGVuZ3RoLCBwb3NpdGlvbiwgcHJvdCwgZmxhZ3MpIHtcbiAgICAgICAgICBpZiAoYWRkcmVzcyAhPT0gMCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoMjgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoIUZTLmlzRmlsZShzdHJlYW0ubm9kZS5tb2RlKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoNDMpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB2YXIgcHRyID0gbW1hcEFsbG9jKGxlbmd0aCk7XG4gICAgICAgICAgTk9ERUZTLnN0cmVhbV9vcHMucmVhZChzdHJlYW0sIEhFQVA4LCBwdHIsIGxlbmd0aCwgcG9zaXRpb24pO1xuICAgICAgICAgIHJldHVybiB7IHB0cjogcHRyLCBhbGxvY2F0ZWQ6IHRydWUgfTtcbiAgICAgICAgfSxcbiAgICAgICAgbXN5bmM6IGZ1bmN0aW9uKHN0cmVhbSwgYnVmZmVyLCBvZmZzZXQsIGxlbmd0aCwgbW1hcEZsYWdzKSB7XG4gICAgICAgICAgaWYgKCFGUy5pc0ZpbGUoc3RyZWFtLm5vZGUubW9kZSkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKDQzKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKG1tYXBGbGFncyAmIDIpIHtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICAgIH1cbiAgICAgICAgICB2YXIgYnl0ZXNXcml0dGVuID0gTk9ERUZTLnN0cmVhbV9vcHMud3JpdGUoXG4gICAgICAgICAgICBzdHJlYW0sXG4gICAgICAgICAgICBidWZmZXIsXG4gICAgICAgICAgICAwLFxuICAgICAgICAgICAgbGVuZ3RoLFxuICAgICAgICAgICAgb2Zmc2V0LFxuICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICApO1xuICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcbiAgICB2YXIgTk9ERVJBV0ZTID0ge1xuICAgICAgbG9va3VwUGF0aDogZnVuY3Rpb24ocGF0aCkge1xuICAgICAgICByZXR1cm4geyBwYXRoOiBwYXRoLCBub2RlOiB7IG1vZGU6IE5PREVGUy5nZXRNb2RlKHBhdGgpIH0gfTtcbiAgICAgIH0sXG4gICAgICBjcmVhdGVTdGFuZGFyZFN0cmVhbXM6IGZ1bmN0aW9uKCkge1xuICAgICAgICBGUy5zdHJlYW1zWzBdID0ge1xuICAgICAgICAgIGZkOiAwLFxuICAgICAgICAgIG5mZDogMCxcbiAgICAgICAgICBwb3NpdGlvbjogMCxcbiAgICAgICAgICBwYXRoOiBcIlwiLFxuICAgICAgICAgIGZsYWdzOiAwLFxuICAgICAgICAgIHR0eTogdHJ1ZSxcbiAgICAgICAgICBzZWVrYWJsZTogZmFsc2VcbiAgICAgICAgfTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPCAzOyBpKyspIHtcbiAgICAgICAgICBGUy5zdHJlYW1zW2ldID0ge1xuICAgICAgICAgICAgZmQ6IGksXG4gICAgICAgICAgICBuZmQ6IGksXG4gICAgICAgICAgICBwb3NpdGlvbjogMCxcbiAgICAgICAgICAgIHBhdGg6IFwiXCIsXG4gICAgICAgICAgICBmbGFnczogNTc3LFxuICAgICAgICAgICAgdHR5OiB0cnVlLFxuICAgICAgICAgICAgc2Vla2FibGU6IGZhbHNlXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGN3ZDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBwcm9jZXNzLmN3ZCgpO1xuICAgICAgfSxcbiAgICAgIGNoZGlyOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcHJvY2Vzcy5jaGRpci5hcHBseSh2b2lkIDAsIGFyZ3VtZW50cyk7XG4gICAgICB9LFxuICAgICAgbWtub2Q6IGZ1bmN0aW9uKHBhdGgsIG1vZGUpIHtcbiAgICAgICAgaWYgKEZTLmlzRGlyKHBhdGgpKSB7XG4gICAgICAgICAgZnMubWtkaXJTeW5jKHBhdGgsIG1vZGUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGZzLndyaXRlRmlsZVN5bmMocGF0aCwgXCJcIiwgeyBtb2RlOiBtb2RlIH0pO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgbWtkaXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICBmcy5ta2RpclN5bmMuYXBwbHkodm9pZCAwLCBhcmd1bWVudHMpO1xuICAgICAgfSxcbiAgICAgIHN5bWxpbms6IGZ1bmN0aW9uKCkge1xuICAgICAgICBmcy5zeW1saW5rU3luYy5hcHBseSh2b2lkIDAsIGFyZ3VtZW50cyk7XG4gICAgICB9LFxuICAgICAgcmVuYW1lOiBmdW5jdGlvbigpIHtcbiAgICAgICAgZnMucmVuYW1lU3luYy5hcHBseSh2b2lkIDAsIGFyZ3VtZW50cyk7XG4gICAgICB9LFxuICAgICAgcm1kaXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICBmcy5ybWRpclN5bmMuYXBwbHkodm9pZCAwLCBhcmd1bWVudHMpO1xuICAgICAgfSxcbiAgICAgIHJlYWRkaXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICBmcy5yZWFkZGlyU3luYy5hcHBseSh2b2lkIDAsIGFyZ3VtZW50cyk7XG4gICAgICB9LFxuICAgICAgdW5saW5rOiBmdW5jdGlvbigpIHtcbiAgICAgICAgZnMudW5saW5rU3luYy5hcHBseSh2b2lkIDAsIGFyZ3VtZW50cyk7XG4gICAgICB9LFxuICAgICAgcmVhZGxpbms6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gZnMucmVhZGxpbmtTeW5jLmFwcGx5KHZvaWQgMCwgYXJndW1lbnRzKTtcbiAgICAgIH0sXG4gICAgICBzdGF0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGZzLnN0YXRTeW5jLmFwcGx5KHZvaWQgMCwgYXJndW1lbnRzKTtcbiAgICAgIH0sXG4gICAgICBsc3RhdDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBmcy5sc3RhdFN5bmMuYXBwbHkodm9pZCAwLCBhcmd1bWVudHMpO1xuICAgICAgfSxcbiAgICAgIGNobW9kOiBmdW5jdGlvbigpIHtcbiAgICAgICAgZnMuY2htb2RTeW5jLmFwcGx5KHZvaWQgMCwgYXJndW1lbnRzKTtcbiAgICAgIH0sXG4gICAgICBmY2htb2Q6IGZ1bmN0aW9uKCkge1xuICAgICAgICBmcy5mY2htb2RTeW5jLmFwcGx5KHZvaWQgMCwgYXJndW1lbnRzKTtcbiAgICAgIH0sXG4gICAgICBjaG93bjogZnVuY3Rpb24oKSB7XG4gICAgICAgIGZzLmNob3duU3luYy5hcHBseSh2b2lkIDAsIGFyZ3VtZW50cyk7XG4gICAgICB9LFxuICAgICAgZmNob3duOiBmdW5jdGlvbigpIHtcbiAgICAgICAgZnMuZmNob3duU3luYy5hcHBseSh2b2lkIDAsIGFyZ3VtZW50cyk7XG4gICAgICB9LFxuICAgICAgdHJ1bmNhdGU6IGZ1bmN0aW9uKCkge1xuICAgICAgICBmcy50cnVuY2F0ZVN5bmMuYXBwbHkodm9pZCAwLCBhcmd1bWVudHMpO1xuICAgICAgfSxcbiAgICAgIGZ0cnVuY2F0ZTogZnVuY3Rpb24oZmQsIGxlbikge1xuICAgICAgICBpZiAobGVuIDwgMCkge1xuICAgICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKDI4KTtcbiAgICAgICAgfVxuICAgICAgICBmcy5mdHJ1bmNhdGVTeW5jLmFwcGx5KHZvaWQgMCwgYXJndW1lbnRzKTtcbiAgICAgIH0sXG4gICAgICB1dGltZTogZnVuY3Rpb24oKSB7XG4gICAgICAgIGZzLnV0aW1lc1N5bmMuYXBwbHkodm9pZCAwLCBhcmd1bWVudHMpO1xuICAgICAgfSxcbiAgICAgIG9wZW46IGZ1bmN0aW9uKHBhdGgsIGZsYWdzLCBtb2RlLCBzdWdnZXN0RkQpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBmbGFncyA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgIGZsYWdzID0gVkZTLm1vZGVTdHJpbmdUb0ZsYWdzKGZsYWdzKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgbmZkID0gZnMub3BlblN5bmMocGF0aCwgTk9ERUZTLmZsYWdzRm9yTm9kZShmbGFncyksIG1vZGUpO1xuICAgICAgICB2YXIgZmQgPSBzdWdnZXN0RkQgIT0gbnVsbCA/IHN1Z2dlc3RGRCA6IEZTLm5leHRmZChuZmQpO1xuICAgICAgICB2YXIgc3RyZWFtID0ge1xuICAgICAgICAgIGZkOiBmZCxcbiAgICAgICAgICBuZmQ6IG5mZCxcbiAgICAgICAgICBwb3NpdGlvbjogMCxcbiAgICAgICAgICBwYXRoOiBwYXRoLFxuICAgICAgICAgIGZsYWdzOiBmbGFncyxcbiAgICAgICAgICBzZWVrYWJsZTogdHJ1ZVxuICAgICAgICB9O1xuICAgICAgICBGUy5zdHJlYW1zW2ZkXSA9IHN0cmVhbTtcbiAgICAgICAgcmV0dXJuIHN0cmVhbTtcbiAgICAgIH0sXG4gICAgICBjbG9zZTogZnVuY3Rpb24oc3RyZWFtKSB7XG4gICAgICAgIGlmICghc3RyZWFtLnN0cmVhbV9vcHMpIHtcbiAgICAgICAgICBmcy5jbG9zZVN5bmMoc3RyZWFtLm5mZCk7XG4gICAgICAgIH1cbiAgICAgICAgRlMuY2xvc2VTdHJlYW0oc3RyZWFtLmZkKTtcbiAgICAgIH0sXG4gICAgICBsbHNlZWs6IGZ1bmN0aW9uKHN0cmVhbSwgb2Zmc2V0LCB3aGVuY2UpIHtcbiAgICAgICAgaWYgKHN0cmVhbS5zdHJlYW1fb3BzKSB7XG4gICAgICAgICAgcmV0dXJuIFZGUy5sbHNlZWsoc3RyZWFtLCBvZmZzZXQsIHdoZW5jZSk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHBvc2l0aW9uID0gb2Zmc2V0O1xuICAgICAgICBpZiAod2hlbmNlID09PSAxKSB7XG4gICAgICAgICAgcG9zaXRpb24gKz0gc3RyZWFtLnBvc2l0aW9uO1xuICAgICAgICB9IGVsc2UgaWYgKHdoZW5jZSA9PT0gMikge1xuICAgICAgICAgIHBvc2l0aW9uICs9IGZzLmZzdGF0U3luYyhzdHJlYW0ubmZkKS5zaXplO1xuICAgICAgICB9IGVsc2UgaWYgKHdoZW5jZSAhPT0gMCkge1xuICAgICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVJTlZBTCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBvc2l0aW9uIDwgMCkge1xuICAgICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVJTlZBTCk7XG4gICAgICAgIH1cbiAgICAgICAgc3RyZWFtLnBvc2l0aW9uID0gcG9zaXRpb247XG4gICAgICAgIHJldHVybiBwb3NpdGlvbjtcbiAgICAgIH0sXG4gICAgICByZWFkOiBmdW5jdGlvbihzdHJlYW0sIGJ1ZmZlciwgb2Zmc2V0LCBsZW5ndGgsIHBvc2l0aW9uKSB7XG4gICAgICAgIGlmIChzdHJlYW0uc3RyZWFtX29wcykge1xuICAgICAgICAgIHJldHVybiBWRlMucmVhZChzdHJlYW0sIGJ1ZmZlciwgb2Zmc2V0LCBsZW5ndGgsIHBvc2l0aW9uKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgc2Vla2luZyA9IHR5cGVvZiBwb3NpdGlvbiAhPT0gXCJ1bmRlZmluZWRcIjtcbiAgICAgICAgaWYgKCFzZWVraW5nICYmIHN0cmVhbS5zZWVrYWJsZSkgcG9zaXRpb24gPSBzdHJlYW0ucG9zaXRpb247XG4gICAgICAgIHZhciBieXRlc1JlYWQgPSBmcy5yZWFkU3luYyhcbiAgICAgICAgICBzdHJlYW0ubmZkLFxuICAgICAgICAgIE5PREVGUy5idWZmZXJGcm9tKGJ1ZmZlci5idWZmZXIpLFxuICAgICAgICAgIG9mZnNldCxcbiAgICAgICAgICBsZW5ndGgsXG4gICAgICAgICAgcG9zaXRpb25cbiAgICAgICAgKTtcbiAgICAgICAgaWYgKCFzZWVraW5nKSBzdHJlYW0ucG9zaXRpb24gKz0gYnl0ZXNSZWFkO1xuICAgICAgICByZXR1cm4gYnl0ZXNSZWFkO1xuICAgICAgfSxcbiAgICAgIHdyaXRlOiBmdW5jdGlvbihzdHJlYW0sIGJ1ZmZlciwgb2Zmc2V0LCBsZW5ndGgsIHBvc2l0aW9uKSB7XG4gICAgICAgIGlmIChzdHJlYW0uc3RyZWFtX29wcykge1xuICAgICAgICAgIHJldHVybiBWRlMud3JpdGUoc3RyZWFtLCBidWZmZXIsIG9mZnNldCwgbGVuZ3RoLCBwb3NpdGlvbik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHN0cmVhbS5mbGFncyAmICtcIjEwMjRcIikge1xuICAgICAgICAgIEZTLmxsc2VlayhzdHJlYW0sIDAsICtcIjJcIik7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHNlZWtpbmcgPSB0eXBlb2YgcG9zaXRpb24gIT09IFwidW5kZWZpbmVkXCI7XG4gICAgICAgIGlmICghc2Vla2luZyAmJiBzdHJlYW0uc2Vla2FibGUpIHBvc2l0aW9uID0gc3RyZWFtLnBvc2l0aW9uO1xuICAgICAgICB2YXIgYnl0ZXNXcml0dGVuID0gZnMud3JpdGVTeW5jKFxuICAgICAgICAgIHN0cmVhbS5uZmQsXG4gICAgICAgICAgTk9ERUZTLmJ1ZmZlckZyb20oYnVmZmVyLmJ1ZmZlciksXG4gICAgICAgICAgb2Zmc2V0LFxuICAgICAgICAgIGxlbmd0aCxcbiAgICAgICAgICBwb3NpdGlvblxuICAgICAgICApO1xuICAgICAgICBpZiAoIXNlZWtpbmcpIHN0cmVhbS5wb3NpdGlvbiArPSBieXRlc1dyaXR0ZW47XG4gICAgICAgIHJldHVybiBieXRlc1dyaXR0ZW47XG4gICAgICB9LFxuICAgICAgYWxsb2NhdGU6IGZ1bmN0aW9uKCkge1xuICAgICAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FT1BOT1RTVVBQKTtcbiAgICAgIH0sXG4gICAgICBtbWFwOiBmdW5jdGlvbihzdHJlYW0sIGFkZHJlc3MsIGxlbmd0aCwgcG9zaXRpb24sIHByb3QsIGZsYWdzKSB7XG4gICAgICAgIGlmIChzdHJlYW0uc3RyZWFtX29wcykge1xuICAgICAgICAgIHJldHVybiBWRlMubW1hcChzdHJlYW0sIGFkZHJlc3MsIGxlbmd0aCwgcG9zaXRpb24sIHByb3QsIGZsYWdzKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYWRkcmVzcyAhPT0gMCkge1xuICAgICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKDI4KTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgcHRyID0gbW1hcEFsbG9jKGxlbmd0aCk7XG4gICAgICAgIEZTLnJlYWQoc3RyZWFtLCBIRUFQOCwgcHRyLCBsZW5ndGgsIHBvc2l0aW9uKTtcbiAgICAgICAgcmV0dXJuIHsgcHRyOiBwdHIsIGFsbG9jYXRlZDogdHJ1ZSB9O1xuICAgICAgfSxcbiAgICAgIG1zeW5jOiBmdW5jdGlvbihzdHJlYW0sIGJ1ZmZlciwgb2Zmc2V0LCBsZW5ndGgsIG1tYXBGbGFncykge1xuICAgICAgICBpZiAoc3RyZWFtLnN0cmVhbV9vcHMpIHtcbiAgICAgICAgICByZXR1cm4gVkZTLm1zeW5jKHN0cmVhbSwgYnVmZmVyLCBvZmZzZXQsIGxlbmd0aCwgbW1hcEZsYWdzKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobW1hcEZsYWdzICYgMikge1xuICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG4gICAgICAgIEZTLndyaXRlKHN0cmVhbSwgYnVmZmVyLCAwLCBsZW5ndGgsIG9mZnNldCk7XG4gICAgICAgIHJldHVybiAwO1xuICAgICAgfSxcbiAgICAgIG11bm1hcDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiAwO1xuICAgICAgfSxcbiAgICAgIGlvY3RsOiBmdW5jdGlvbigpIHtcbiAgICAgICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRU5PVFRZKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIHZhciBGUyA9IHtcbiAgICAgIHJvb3Q6IG51bGwsXG4gICAgICBtb3VudHM6IFtdLFxuICAgICAgZGV2aWNlczoge30sXG4gICAgICBzdHJlYW1zOiBbXSxcbiAgICAgIG5leHRJbm9kZTogMSxcbiAgICAgIG5hbWVUYWJsZTogbnVsbCxcbiAgICAgIGN1cnJlbnRQYXRoOiBcIi9cIixcbiAgICAgIGluaXRpYWxpemVkOiBmYWxzZSxcbiAgICAgIGlnbm9yZVBlcm1pc3Npb25zOiB0cnVlLFxuICAgICAgdHJhY2tpbmdEZWxlZ2F0ZToge30sXG4gICAgICB0cmFja2luZzogeyBvcGVuRmxhZ3M6IHsgUkVBRDogMSwgV1JJVEU6IDIgfSB9LFxuICAgICAgRXJybm9FcnJvcjogbnVsbCxcbiAgICAgIGdlbmVyaWNFcnJvcnM6IHt9LFxuICAgICAgZmlsZXN5c3RlbXM6IG51bGwsXG4gICAgICBzeW5jRlNSZXF1ZXN0czogMCxcbiAgICAgIGxvb2t1cFBhdGg6IGZ1bmN0aW9uKHBhdGgsIG9wdHMpIHtcbiAgICAgICAgcGF0aCA9IFBBVEhfRlMucmVzb2x2ZShGUy5jd2QoKSwgcGF0aCk7XG4gICAgICAgIG9wdHMgPSBvcHRzIHx8IHt9O1xuICAgICAgICBpZiAoIXBhdGgpIHJldHVybiB7IHBhdGg6IFwiXCIsIG5vZGU6IG51bGwgfTtcbiAgICAgICAgdmFyIGRlZmF1bHRzID0geyBmb2xsb3dfbW91bnQ6IHRydWUsIHJlY3Vyc2VfY291bnQ6IDAgfTtcbiAgICAgICAgZm9yICh2YXIga2V5IGluIGRlZmF1bHRzKSB7XG4gICAgICAgICAgaWYgKG9wdHNba2V5XSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBvcHRzW2tleV0gPSBkZWZhdWx0c1trZXldO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAob3B0cy5yZWN1cnNlX2NvdW50ID4gOCkge1xuICAgICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKDMyKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgcGFydHMgPSBQQVRILm5vcm1hbGl6ZUFycmF5KFxuICAgICAgICAgIHBhdGguc3BsaXQoXCIvXCIpLmZpbHRlcihmdW5jdGlvbihwKSB7XG4gICAgICAgICAgICByZXR1cm4gISFwO1xuICAgICAgICAgIH0pLFxuICAgICAgICAgIGZhbHNlXG4gICAgICAgICk7XG4gICAgICAgIHZhciBjdXJyZW50ID0gRlMucm9vdDtcbiAgICAgICAgdmFyIGN1cnJlbnRfcGF0aCA9IFwiL1wiO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBhcnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgdmFyIGlzbGFzdCA9IGkgPT09IHBhcnRzLmxlbmd0aCAtIDE7XG4gICAgICAgICAgaWYgKGlzbGFzdCAmJiBvcHRzLnBhcmVudCkge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGN1cnJlbnQgPSBGUy5sb29rdXBOb2RlKGN1cnJlbnQsIHBhcnRzW2ldKTtcbiAgICAgICAgICBjdXJyZW50X3BhdGggPSBQQVRILmpvaW4yKGN1cnJlbnRfcGF0aCwgcGFydHNbaV0pO1xuICAgICAgICAgIGlmIChGUy5pc01vdW50cG9pbnQoY3VycmVudCkpIHtcbiAgICAgICAgICAgIGlmICghaXNsYXN0IHx8IChpc2xhc3QgJiYgb3B0cy5mb2xsb3dfbW91bnQpKSB7XG4gICAgICAgICAgICAgIGN1cnJlbnQgPSBjdXJyZW50Lm1vdW50ZWQucm9vdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKCFpc2xhc3QgfHwgb3B0cy5mb2xsb3cpIHtcbiAgICAgICAgICAgIHZhciBjb3VudCA9IDA7XG4gICAgICAgICAgICB3aGlsZSAoRlMuaXNMaW5rKGN1cnJlbnQubW9kZSkpIHtcbiAgICAgICAgICAgICAgdmFyIGxpbmsgPSBGUy5yZWFkbGluayhjdXJyZW50X3BhdGgpO1xuICAgICAgICAgICAgICBjdXJyZW50X3BhdGggPSBQQVRIX0ZTLnJlc29sdmUoUEFUSC5kaXJuYW1lKGN1cnJlbnRfcGF0aCksIGxpbmspO1xuICAgICAgICAgICAgICB2YXIgbG9va3VwID0gRlMubG9va3VwUGF0aChjdXJyZW50X3BhdGgsIHtcbiAgICAgICAgICAgICAgICByZWN1cnNlX2NvdW50OiBvcHRzLnJlY3Vyc2VfY291bnRcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIGN1cnJlbnQgPSBsb29rdXAubm9kZTtcbiAgICAgICAgICAgICAgaWYgKGNvdW50KysgPiA0MCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKDMyKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyBwYXRoOiBjdXJyZW50X3BhdGgsIG5vZGU6IGN1cnJlbnQgfTtcbiAgICAgIH0sXG4gICAgICBnZXRQYXRoOiBmdW5jdGlvbihub2RlKSB7XG4gICAgICAgIHZhciBwYXRoO1xuICAgICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICAgIGlmIChGUy5pc1Jvb3Qobm9kZSkpIHtcbiAgICAgICAgICAgIHZhciBtb3VudCA9IG5vZGUubW91bnQubW91bnRwb2ludDtcbiAgICAgICAgICAgIGlmICghcGF0aCkgcmV0dXJuIG1vdW50O1xuICAgICAgICAgICAgcmV0dXJuIG1vdW50W21vdW50Lmxlbmd0aCAtIDFdICE9PSBcIi9cIlxuICAgICAgICAgICAgICA/IG1vdW50ICsgXCIvXCIgKyBwYXRoXG4gICAgICAgICAgICAgIDogbW91bnQgKyBwYXRoO1xuICAgICAgICAgIH1cbiAgICAgICAgICBwYXRoID0gcGF0aCA/IG5vZGUubmFtZSArIFwiL1wiICsgcGF0aCA6IG5vZGUubmFtZTtcbiAgICAgICAgICBub2RlID0gbm9kZS5wYXJlbnQ7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBoYXNoTmFtZTogZnVuY3Rpb24ocGFyZW50aWQsIG5hbWUpIHtcbiAgICAgICAgdmFyIGhhc2ggPSAwO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5hbWUubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBoYXNoID0gKChoYXNoIDw8IDUpIC0gaGFzaCArIG5hbWUuY2hhckNvZGVBdChpKSkgfCAwO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAoKHBhcmVudGlkICsgaGFzaCkgPj4+IDApICUgRlMubmFtZVRhYmxlLmxlbmd0aDtcbiAgICAgIH0sXG4gICAgICBoYXNoQWRkTm9kZTogZnVuY3Rpb24obm9kZSkge1xuICAgICAgICB2YXIgaGFzaCA9IEZTLmhhc2hOYW1lKG5vZGUucGFyZW50LmlkLCBub2RlLm5hbWUpO1xuICAgICAgICBub2RlLm5hbWVfbmV4dCA9IEZTLm5hbWVUYWJsZVtoYXNoXTtcbiAgICAgICAgRlMubmFtZVRhYmxlW2hhc2hdID0gbm9kZTtcbiAgICAgIH0sXG4gICAgICBoYXNoUmVtb3ZlTm9kZTogZnVuY3Rpb24obm9kZSkge1xuICAgICAgICB2YXIgaGFzaCA9IEZTLmhhc2hOYW1lKG5vZGUucGFyZW50LmlkLCBub2RlLm5hbWUpO1xuICAgICAgICBpZiAoRlMubmFtZVRhYmxlW2hhc2hdID09PSBub2RlKSB7XG4gICAgICAgICAgRlMubmFtZVRhYmxlW2hhc2hdID0gbm9kZS5uYW1lX25leHQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdmFyIGN1cnJlbnQgPSBGUy5uYW1lVGFibGVbaGFzaF07XG4gICAgICAgICAgd2hpbGUgKGN1cnJlbnQpIHtcbiAgICAgICAgICAgIGlmIChjdXJyZW50Lm5hbWVfbmV4dCA9PT0gbm9kZSkge1xuICAgICAgICAgICAgICBjdXJyZW50Lm5hbWVfbmV4dCA9IG5vZGUubmFtZV9uZXh0O1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGN1cnJlbnQgPSBjdXJyZW50Lm5hbWVfbmV4dDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBsb29rdXBOb2RlOiBmdW5jdGlvbihwYXJlbnQsIG5hbWUpIHtcbiAgICAgICAgdmFyIGVyckNvZGUgPSBGUy5tYXlMb29rdXAocGFyZW50KTtcbiAgICAgICAgaWYgKGVyckNvZGUpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihlcnJDb2RlLCBwYXJlbnQpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBoYXNoID0gRlMuaGFzaE5hbWUocGFyZW50LmlkLCBuYW1lKTtcbiAgICAgICAgZm9yICh2YXIgbm9kZSA9IEZTLm5hbWVUYWJsZVtoYXNoXTsgbm9kZTsgbm9kZSA9IG5vZGUubmFtZV9uZXh0KSB7XG4gICAgICAgICAgdmFyIG5vZGVOYW1lID0gbm9kZS5uYW1lO1xuICAgICAgICAgIGlmIChub2RlLnBhcmVudC5pZCA9PT0gcGFyZW50LmlkICYmIG5vZGVOYW1lID09PSBuYW1lKSB7XG4gICAgICAgICAgICByZXR1cm4gbm9kZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIEZTLmxvb2t1cChwYXJlbnQsIG5hbWUpO1xuICAgICAgfSxcbiAgICAgIGNyZWF0ZU5vZGU6IGZ1bmN0aW9uKHBhcmVudCwgbmFtZSwgbW9kZSwgcmRldikge1xuICAgICAgICB2YXIgbm9kZSA9IG5ldyBGUy5GU05vZGUocGFyZW50LCBuYW1lLCBtb2RlLCByZGV2KTtcbiAgICAgICAgRlMuaGFzaEFkZE5vZGUobm9kZSk7XG4gICAgICAgIHJldHVybiBub2RlO1xuICAgICAgfSxcbiAgICAgIGRlc3Ryb3lOb2RlOiBmdW5jdGlvbihub2RlKSB7XG4gICAgICAgIEZTLmhhc2hSZW1vdmVOb2RlKG5vZGUpO1xuICAgICAgfSxcbiAgICAgIGlzUm9vdDogZnVuY3Rpb24obm9kZSkge1xuICAgICAgICByZXR1cm4gbm9kZSA9PT0gbm9kZS5wYXJlbnQ7XG4gICAgICB9LFxuICAgICAgaXNNb3VudHBvaW50OiBmdW5jdGlvbihub2RlKSB7XG4gICAgICAgIHJldHVybiAhIW5vZGUubW91bnRlZDtcbiAgICAgIH0sXG4gICAgICBpc0ZpbGU6IGZ1bmN0aW9uKG1vZGUpIHtcbiAgICAgICAgcmV0dXJuIChtb2RlICYgNjE0NDApID09PSAzMjc2ODtcbiAgICAgIH0sXG4gICAgICBpc0RpcjogZnVuY3Rpb24obW9kZSkge1xuICAgICAgICByZXR1cm4gKG1vZGUgJiA2MTQ0MCkgPT09IDE2Mzg0O1xuICAgICAgfSxcbiAgICAgIGlzTGluazogZnVuY3Rpb24obW9kZSkge1xuICAgICAgICByZXR1cm4gKG1vZGUgJiA2MTQ0MCkgPT09IDQwOTYwO1xuICAgICAgfSxcbiAgICAgIGlzQ2hyZGV2OiBmdW5jdGlvbihtb2RlKSB7XG4gICAgICAgIHJldHVybiAobW9kZSAmIDYxNDQwKSA9PT0gODE5MjtcbiAgICAgIH0sXG4gICAgICBpc0Jsa2RldjogZnVuY3Rpb24obW9kZSkge1xuICAgICAgICByZXR1cm4gKG1vZGUgJiA2MTQ0MCkgPT09IDI0NTc2O1xuICAgICAgfSxcbiAgICAgIGlzRklGTzogZnVuY3Rpb24obW9kZSkge1xuICAgICAgICByZXR1cm4gKG1vZGUgJiA2MTQ0MCkgPT09IDQwOTY7XG4gICAgICB9LFxuICAgICAgaXNTb2NrZXQ6IGZ1bmN0aW9uKG1vZGUpIHtcbiAgICAgICAgcmV0dXJuIChtb2RlICYgNDkxNTIpID09PSA0OTE1MjtcbiAgICAgIH0sXG4gICAgICBmbGFnTW9kZXM6IHsgcjogMCwgXCJyK1wiOiAyLCB3OiA1NzcsIFwidytcIjogNTc4LCBhOiAxMDg5LCBcImErXCI6IDEwOTAgfSxcbiAgICAgIG1vZGVTdHJpbmdUb0ZsYWdzOiBmdW5jdGlvbihzdHIpIHtcbiAgICAgICAgdmFyIGZsYWdzID0gRlMuZmxhZ01vZGVzW3N0cl07XG4gICAgICAgIGlmICh0eXBlb2YgZmxhZ3MgPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJVbmtub3duIGZpbGUgb3BlbiBtb2RlOiBcIiArIHN0cik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZsYWdzO1xuICAgICAgfSxcbiAgICAgIGZsYWdzVG9QZXJtaXNzaW9uU3RyaW5nOiBmdW5jdGlvbihmbGFnKSB7XG4gICAgICAgIHZhciBwZXJtcyA9IFtcInJcIiwgXCJ3XCIsIFwicndcIl1bZmxhZyAmIDNdO1xuICAgICAgICBpZiAoZmxhZyAmIDUxMikge1xuICAgICAgICAgIHBlcm1zICs9IFwid1wiO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwZXJtcztcbiAgICAgIH0sXG4gICAgICBub2RlUGVybWlzc2lvbnM6IGZ1bmN0aW9uKG5vZGUsIHBlcm1zKSB7XG4gICAgICAgIGlmIChGUy5pZ25vcmVQZXJtaXNzaW9ucykge1xuICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwZXJtcy5pbmNsdWRlcyhcInJcIikgJiYgIShub2RlLm1vZGUgJiAyOTIpKSB7XG4gICAgICAgICAgcmV0dXJuIDI7XG4gICAgICAgIH0gZWxzZSBpZiAocGVybXMuaW5jbHVkZXMoXCJ3XCIpICYmICEobm9kZS5tb2RlICYgMTQ2KSkge1xuICAgICAgICAgIHJldHVybiAyO1xuICAgICAgICB9IGVsc2UgaWYgKHBlcm1zLmluY2x1ZGVzKFwieFwiKSAmJiAhKG5vZGUubW9kZSAmIDczKSkge1xuICAgICAgICAgIHJldHVybiAyO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAwO1xuICAgICAgfSxcbiAgICAgIG1heUxvb2t1cDogZnVuY3Rpb24oZGlyKSB7XG4gICAgICAgIHZhciBlcnJDb2RlID0gRlMubm9kZVBlcm1pc3Npb25zKGRpciwgXCJ4XCIpO1xuICAgICAgICBpZiAoZXJyQ29kZSkgcmV0dXJuIGVyckNvZGU7XG4gICAgICAgIGlmICghZGlyLm5vZGVfb3BzLmxvb2t1cCkgcmV0dXJuIDI7XG4gICAgICAgIHJldHVybiAwO1xuICAgICAgfSxcbiAgICAgIG1heUNyZWF0ZTogZnVuY3Rpb24oZGlyLCBuYW1lKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgdmFyIG5vZGUgPSBGUy5sb29rdXBOb2RlKGRpciwgbmFtZSk7XG4gICAgICAgICAgcmV0dXJuIDIwO1xuICAgICAgICB9IGNhdGNoIChlKSB7fVxuICAgICAgICByZXR1cm4gRlMubm9kZVBlcm1pc3Npb25zKGRpciwgXCJ3eFwiKTtcbiAgICAgIH0sXG4gICAgICBtYXlEZWxldGU6IGZ1bmN0aW9uKGRpciwgbmFtZSwgaXNkaXIpIHtcbiAgICAgICAgdmFyIG5vZGU7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgbm9kZSA9IEZTLmxvb2t1cE5vZGUoZGlyLCBuYW1lKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIHJldHVybiBlLmVycm5vO1xuICAgICAgICB9XG4gICAgICAgIHZhciBlcnJDb2RlID0gRlMubm9kZVBlcm1pc3Npb25zKGRpciwgXCJ3eFwiKTtcbiAgICAgICAgaWYgKGVyckNvZGUpIHtcbiAgICAgICAgICByZXR1cm4gZXJyQ29kZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNkaXIpIHtcbiAgICAgICAgICBpZiAoIUZTLmlzRGlyKG5vZGUubW9kZSkpIHtcbiAgICAgICAgICAgIHJldHVybiA1NDtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKEZTLmlzUm9vdChub2RlKSB8fCBGUy5nZXRQYXRoKG5vZGUpID09PSBGUy5jd2QoKSkge1xuICAgICAgICAgICAgcmV0dXJuIDEwO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAoRlMuaXNEaXIobm9kZS5tb2RlKSkge1xuICAgICAgICAgICAgcmV0dXJuIDMxO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gMDtcbiAgICAgIH0sXG4gICAgICBtYXlPcGVuOiBmdW5jdGlvbihub2RlLCBmbGFncykge1xuICAgICAgICBpZiAoIW5vZGUpIHtcbiAgICAgICAgICByZXR1cm4gNDQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKEZTLmlzTGluayhub2RlLm1vZGUpKSB7XG4gICAgICAgICAgcmV0dXJuIDMyO1xuICAgICAgICB9IGVsc2UgaWYgKEZTLmlzRGlyKG5vZGUubW9kZSkpIHtcbiAgICAgICAgICBpZiAoRlMuZmxhZ3NUb1Blcm1pc3Npb25TdHJpbmcoZmxhZ3MpICE9PSBcInJcIiB8fCBmbGFncyAmIDUxMikge1xuICAgICAgICAgICAgcmV0dXJuIDMxO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gRlMubm9kZVBlcm1pc3Npb25zKG5vZGUsIEZTLmZsYWdzVG9QZXJtaXNzaW9uU3RyaW5nKGZsYWdzKSk7XG4gICAgICB9LFxuICAgICAgTUFYX09QRU5fRkRTOiA0MDk2LFxuICAgICAgbmV4dGZkOiBmdW5jdGlvbihmZF9zdGFydCwgZmRfZW5kKSB7XG4gICAgICAgIGZkX3N0YXJ0ID0gZmRfc3RhcnQgfHwgMDtcbiAgICAgICAgZmRfZW5kID0gZmRfZW5kIHx8IEZTLk1BWF9PUEVOX0ZEUztcbiAgICAgICAgZm9yICh2YXIgZmQgPSBmZF9zdGFydDsgZmQgPD0gZmRfZW5kOyBmZCsrKSB7XG4gICAgICAgICAgaWYgKCFGUy5zdHJlYW1zW2ZkXSkge1xuICAgICAgICAgICAgcmV0dXJuIGZkO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcigzMyk7XG4gICAgICB9LFxuICAgICAgZ2V0U3RyZWFtOiBmdW5jdGlvbihmZCkge1xuICAgICAgICByZXR1cm4gRlMuc3RyZWFtc1tmZF07XG4gICAgICB9LFxuICAgICAgY3JlYXRlU3RyZWFtOiBmdW5jdGlvbihzdHJlYW0sIGZkX3N0YXJ0LCBmZF9lbmQpIHtcbiAgICAgICAgaWYgKCFGUy5GU1N0cmVhbSkge1xuICAgICAgICAgIEZTLkZTU3RyZWFtID0gZnVuY3Rpb24oKSB7fTtcbiAgICAgICAgICBGUy5GU1N0cmVhbS5wcm90b3R5cGUgPSB7XG4gICAgICAgICAgICBvYmplY3Q6IHtcbiAgICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5ub2RlO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBzZXQ6IGZ1bmN0aW9uKHZhbCkge1xuICAgICAgICAgICAgICAgIHRoaXMubm9kZSA9IHZhbDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGlzUmVhZDoge1xuICAgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAodGhpcy5mbGFncyAmIDIwOTcxNTUpICE9PSAxO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaXNXcml0ZToge1xuICAgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAodGhpcy5mbGFncyAmIDIwOTcxNTUpICE9PSAwO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaXNBcHBlbmQ6IHtcbiAgICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5mbGFncyAmIDEwMjQ7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIHZhciBuZXdTdHJlYW0gPSBuZXcgRlMuRlNTdHJlYW0oKTtcbiAgICAgICAgZm9yICh2YXIgcCBpbiBzdHJlYW0pIHtcbiAgICAgICAgICBuZXdTdHJlYW1bcF0gPSBzdHJlYW1bcF07XG4gICAgICAgIH1cbiAgICAgICAgc3RyZWFtID0gbmV3U3RyZWFtO1xuICAgICAgICB2YXIgZmQgPSBGUy5uZXh0ZmQoZmRfc3RhcnQsIGZkX2VuZCk7XG4gICAgICAgIHN0cmVhbS5mZCA9IGZkO1xuICAgICAgICBGUy5zdHJlYW1zW2ZkXSA9IHN0cmVhbTtcbiAgICAgICAgcmV0dXJuIHN0cmVhbTtcbiAgICAgIH0sXG4gICAgICBjbG9zZVN0cmVhbTogZnVuY3Rpb24oZmQpIHtcbiAgICAgICAgRlMuc3RyZWFtc1tmZF0gPSBudWxsO1xuICAgICAgfSxcbiAgICAgIGNocmRldl9zdHJlYW1fb3BzOiB7XG4gICAgICAgIG9wZW46IGZ1bmN0aW9uKHN0cmVhbSkge1xuICAgICAgICAgIHZhciBkZXZpY2UgPSBGUy5nZXREZXZpY2Uoc3RyZWFtLm5vZGUucmRldik7XG4gICAgICAgICAgc3RyZWFtLnN0cmVhbV9vcHMgPSBkZXZpY2Uuc3RyZWFtX29wcztcbiAgICAgICAgICBpZiAoc3RyZWFtLnN0cmVhbV9vcHMub3Blbikge1xuICAgICAgICAgICAgc3RyZWFtLnN0cmVhbV9vcHMub3BlbihzdHJlYW0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbGxzZWVrOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcig3MCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBtYWpvcjogZnVuY3Rpb24oZGV2KSB7XG4gICAgICAgIHJldHVybiBkZXYgPj4gODtcbiAgICAgIH0sXG4gICAgICBtaW5vcjogZnVuY3Rpb24oZGV2KSB7XG4gICAgICAgIHJldHVybiBkZXYgJiAyNTU7XG4gICAgICB9LFxuICAgICAgbWFrZWRldjogZnVuY3Rpb24obWEsIG1pKSB7XG4gICAgICAgIHJldHVybiAobWEgPDwgOCkgfCBtaTtcbiAgICAgIH0sXG4gICAgICByZWdpc3RlckRldmljZTogZnVuY3Rpb24oZGV2LCBvcHMpIHtcbiAgICAgICAgRlMuZGV2aWNlc1tkZXZdID0geyBzdHJlYW1fb3BzOiBvcHMgfTtcbiAgICAgIH0sXG4gICAgICBnZXREZXZpY2U6IGZ1bmN0aW9uKGRldikge1xuICAgICAgICByZXR1cm4gRlMuZGV2aWNlc1tkZXZdO1xuICAgICAgfSxcbiAgICAgIGdldE1vdW50czogZnVuY3Rpb24obW91bnQpIHtcbiAgICAgICAgdmFyIG1vdW50cyA9IFtdO1xuICAgICAgICB2YXIgY2hlY2sgPSBbbW91bnRdO1xuICAgICAgICB3aGlsZSAoY2hlY2subGVuZ3RoKSB7XG4gICAgICAgICAgdmFyIG0gPSBjaGVjay5wb3AoKTtcbiAgICAgICAgICBtb3VudHMucHVzaChtKTtcbiAgICAgICAgICBjaGVjay5wdXNoLmFwcGx5KGNoZWNrLCBtLm1vdW50cyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1vdW50cztcbiAgICAgIH0sXG4gICAgICBzeW5jZnM6IGZ1bmN0aW9uKHBvcHVsYXRlLCBjYWxsYmFjaykge1xuICAgICAgICBpZiAodHlwZW9mIHBvcHVsYXRlID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICBjYWxsYmFjayA9IHBvcHVsYXRlO1xuICAgICAgICAgIHBvcHVsYXRlID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgRlMuc3luY0ZTUmVxdWVzdHMrKztcbiAgICAgICAgaWYgKEZTLnN5bmNGU1JlcXVlc3RzID4gMSkge1xuICAgICAgICAgIGVycihcbiAgICAgICAgICAgIFwid2FybmluZzogXCIgK1xuICAgICAgICAgICAgICBGUy5zeW5jRlNSZXF1ZXN0cyArXG4gICAgICAgICAgICAgIFwiIEZTLnN5bmNmcyBvcGVyYXRpb25zIGluIGZsaWdodCBhdCBvbmNlLCBwcm9iYWJseSBqdXN0IGRvaW5nIGV4dHJhIHdvcmtcIlxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIG1vdW50cyA9IEZTLmdldE1vdW50cyhGUy5yb290Lm1vdW50KTtcbiAgICAgICAgdmFyIGNvbXBsZXRlZCA9IDA7XG4gICAgICAgIGZ1bmN0aW9uIGRvQ2FsbGJhY2soZXJyQ29kZSkge1xuICAgICAgICAgIEZTLnN5bmNGU1JlcXVlc3RzLS07XG4gICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKGVyckNvZGUpO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIGRvbmUoZXJyQ29kZSkge1xuICAgICAgICAgIGlmIChlcnJDb2RlKSB7XG4gICAgICAgICAgICBpZiAoIWRvbmUuZXJyb3JlZCkge1xuICAgICAgICAgICAgICBkb25lLmVycm9yZWQgPSB0cnVlO1xuICAgICAgICAgICAgICByZXR1cm4gZG9DYWxsYmFjayhlcnJDb2RlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKCsrY29tcGxldGVkID49IG1vdW50cy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGRvQ2FsbGJhY2sobnVsbCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIG1vdW50cy5mb3JFYWNoKGZ1bmN0aW9uKG1vdW50KSB7XG4gICAgICAgICAgaWYgKCFtb3VudC50eXBlLnN5bmNmcykge1xuICAgICAgICAgICAgcmV0dXJuIGRvbmUobnVsbCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIG1vdW50LnR5cGUuc3luY2ZzKG1vdW50LCBwb3B1bGF0ZSwgZG9uZSk7XG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICAgIG1vdW50OiBmdW5jdGlvbih0eXBlLCBvcHRzLCBtb3VudHBvaW50KSB7XG4gICAgICAgIHZhciByb290ID0gbW91bnRwb2ludCA9PT0gXCIvXCI7XG4gICAgICAgIHZhciBwc2V1ZG8gPSAhbW91bnRwb2ludDtcbiAgICAgICAgdmFyIG5vZGU7XG4gICAgICAgIGlmIChyb290ICYmIEZTLnJvb3QpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcigxMCk7XG4gICAgICAgIH0gZWxzZSBpZiAoIXJvb3QgJiYgIXBzZXVkbykge1xuICAgICAgICAgIHZhciBsb29rdXAgPSBGUy5sb29rdXBQYXRoKG1vdW50cG9pbnQsIHsgZm9sbG93X21vdW50OiBmYWxzZSB9KTtcbiAgICAgICAgICBtb3VudHBvaW50ID0gbG9va3VwLnBhdGg7XG4gICAgICAgICAgbm9kZSA9IGxvb2t1cC5ub2RlO1xuICAgICAgICAgIGlmIChGUy5pc01vdW50cG9pbnQobm9kZSkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKDEwKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKCFGUy5pc0Rpcihub2RlLm1vZGUpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcig1NCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHZhciBtb3VudCA9IHtcbiAgICAgICAgICB0eXBlOiB0eXBlLFxuICAgICAgICAgIG9wdHM6IG9wdHMsXG4gICAgICAgICAgbW91bnRwb2ludDogbW91bnRwb2ludCxcbiAgICAgICAgICBtb3VudHM6IFtdXG4gICAgICAgIH07XG4gICAgICAgIHZhciBtb3VudFJvb3QgPSB0eXBlLm1vdW50KG1vdW50KTtcbiAgICAgICAgbW91bnRSb290Lm1vdW50ID0gbW91bnQ7XG4gICAgICAgIG1vdW50LnJvb3QgPSBtb3VudFJvb3Q7XG4gICAgICAgIGlmIChyb290KSB7XG4gICAgICAgICAgRlMucm9vdCA9IG1vdW50Um9vdDtcbiAgICAgICAgfSBlbHNlIGlmIChub2RlKSB7XG4gICAgICAgICAgbm9kZS5tb3VudGVkID0gbW91bnQ7XG4gICAgICAgICAgaWYgKG5vZGUubW91bnQpIHtcbiAgICAgICAgICAgIG5vZGUubW91bnQubW91bnRzLnB1c2gobW91bnQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbW91bnRSb290O1xuICAgICAgfSxcbiAgICAgIHVubW91bnQ6IGZ1bmN0aW9uKG1vdW50cG9pbnQpIHtcbiAgICAgICAgdmFyIGxvb2t1cCA9IEZTLmxvb2t1cFBhdGgobW91bnRwb2ludCwgeyBmb2xsb3dfbW91bnQ6IGZhbHNlIH0pO1xuICAgICAgICBpZiAoIUZTLmlzTW91bnRwb2ludChsb29rdXAubm9kZSkpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcigyOCk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIG5vZGUgPSBsb29rdXAubm9kZTtcbiAgICAgICAgdmFyIG1vdW50ID0gbm9kZS5tb3VudGVkO1xuICAgICAgICB2YXIgbW91bnRzID0gRlMuZ2V0TW91bnRzKG1vdW50KTtcbiAgICAgICAgT2JqZWN0LmtleXMoRlMubmFtZVRhYmxlKS5mb3JFYWNoKGZ1bmN0aW9uKGhhc2gpIHtcbiAgICAgICAgICB2YXIgY3VycmVudCA9IEZTLm5hbWVUYWJsZVtoYXNoXTtcbiAgICAgICAgICB3aGlsZSAoY3VycmVudCkge1xuICAgICAgICAgICAgdmFyIG5leHQgPSBjdXJyZW50Lm5hbWVfbmV4dDtcbiAgICAgICAgICAgIGlmIChtb3VudHMuaW5jbHVkZXMoY3VycmVudC5tb3VudCkpIHtcbiAgICAgICAgICAgICAgRlMuZGVzdHJveU5vZGUoY3VycmVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjdXJyZW50ID0gbmV4dDtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBub2RlLm1vdW50ZWQgPSBudWxsO1xuICAgICAgICB2YXIgaWR4ID0gbm9kZS5tb3VudC5tb3VudHMuaW5kZXhPZihtb3VudCk7XG4gICAgICAgIG5vZGUubW91bnQubW91bnRzLnNwbGljZShpZHgsIDEpO1xuICAgICAgfSxcbiAgICAgIGxvb2t1cDogZnVuY3Rpb24ocGFyZW50LCBuYW1lKSB7XG4gICAgICAgIHJldHVybiBwYXJlbnQubm9kZV9vcHMubG9va3VwKHBhcmVudCwgbmFtZSk7XG4gICAgICB9LFxuICAgICAgbWtub2Q6IGZ1bmN0aW9uKHBhdGgsIG1vZGUsIGRldikge1xuICAgICAgICB2YXIgbG9va3VwID0gRlMubG9va3VwUGF0aChwYXRoLCB7IHBhcmVudDogdHJ1ZSB9KTtcbiAgICAgICAgdmFyIHBhcmVudCA9IGxvb2t1cC5ub2RlO1xuICAgICAgICB2YXIgbmFtZSA9IFBBVEguYmFzZW5hbWUocGF0aCk7XG4gICAgICAgIGlmICghbmFtZSB8fCBuYW1lID09PSBcIi5cIiB8fCBuYW1lID09PSBcIi4uXCIpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcigyOCk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGVyckNvZGUgPSBGUy5tYXlDcmVhdGUocGFyZW50LCBuYW1lKTtcbiAgICAgICAgaWYgKGVyckNvZGUpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihlcnJDb2RlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXBhcmVudC5ub2RlX29wcy5ta25vZCkge1xuICAgICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKDYzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcGFyZW50Lm5vZGVfb3BzLm1rbm9kKHBhcmVudCwgbmFtZSwgbW9kZSwgZGV2KTtcbiAgICAgIH0sXG4gICAgICBjcmVhdGU6IGZ1bmN0aW9uKHBhdGgsIG1vZGUpIHtcbiAgICAgICAgbW9kZSA9IG1vZGUgIT09IHVuZGVmaW5lZCA/IG1vZGUgOiA0Mzg7XG4gICAgICAgIG1vZGUgJj0gNDA5NTtcbiAgICAgICAgbW9kZSB8PSAzMjc2ODtcbiAgICAgICAgcmV0dXJuIEZTLm1rbm9kKHBhdGgsIG1vZGUsIDApO1xuICAgICAgfSxcbiAgICAgIG1rZGlyOiBmdW5jdGlvbihwYXRoLCBtb2RlKSB7XG4gICAgICAgIG1vZGUgPSBtb2RlICE9PSB1bmRlZmluZWQgPyBtb2RlIDogNTExO1xuICAgICAgICBtb2RlICY9IDUxMSB8IDUxMjtcbiAgICAgICAgbW9kZSB8PSAxNjM4NDtcbiAgICAgICAgcmV0dXJuIEZTLm1rbm9kKHBhdGgsIG1vZGUsIDApO1xuICAgICAgfSxcbiAgICAgIG1rZGlyVHJlZTogZnVuY3Rpb24ocGF0aCwgbW9kZSkge1xuICAgICAgICB2YXIgZGlycyA9IHBhdGguc3BsaXQoXCIvXCIpO1xuICAgICAgICB2YXIgZCA9IFwiXCI7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGlycy5sZW5ndGg7ICsraSkge1xuICAgICAgICAgIGlmICghZGlyc1tpXSkgY29udGludWU7XG4gICAgICAgICAgZCArPSBcIi9cIiArIGRpcnNbaV07XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIEZTLm1rZGlyKGQsIG1vZGUpO1xuICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIGlmIChlLmVycm5vICE9IDIwKSB0aHJvdyBlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIG1rZGV2OiBmdW5jdGlvbihwYXRoLCBtb2RlLCBkZXYpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBkZXYgPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICBkZXYgPSBtb2RlO1xuICAgICAgICAgIG1vZGUgPSA0Mzg7XG4gICAgICAgIH1cbiAgICAgICAgbW9kZSB8PSA4MTkyO1xuICAgICAgICByZXR1cm4gRlMubWtub2QocGF0aCwgbW9kZSwgZGV2KTtcbiAgICAgIH0sXG4gICAgICBzeW1saW5rOiBmdW5jdGlvbihvbGRwYXRoLCBuZXdwYXRoKSB7XG4gICAgICAgIGlmICghUEFUSF9GUy5yZXNvbHZlKG9sZHBhdGgpKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoNDQpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBsb29rdXAgPSBGUy5sb29rdXBQYXRoKG5ld3BhdGgsIHsgcGFyZW50OiB0cnVlIH0pO1xuICAgICAgICB2YXIgcGFyZW50ID0gbG9va3VwLm5vZGU7XG4gICAgICAgIGlmICghcGFyZW50KSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoNDQpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBuZXduYW1lID0gUEFUSC5iYXNlbmFtZShuZXdwYXRoKTtcbiAgICAgICAgdmFyIGVyckNvZGUgPSBGUy5tYXlDcmVhdGUocGFyZW50LCBuZXduYW1lKTtcbiAgICAgICAgaWYgKGVyckNvZGUpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihlcnJDb2RlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXBhcmVudC5ub2RlX29wcy5zeW1saW5rKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoNjMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwYXJlbnQubm9kZV9vcHMuc3ltbGluayhwYXJlbnQsIG5ld25hbWUsIG9sZHBhdGgpO1xuICAgICAgfSxcbiAgICAgIHJlbmFtZTogZnVuY3Rpb24ob2xkX3BhdGgsIG5ld19wYXRoKSB7XG4gICAgICAgIHZhciBvbGRfZGlybmFtZSA9IFBBVEguZGlybmFtZShvbGRfcGF0aCk7XG4gICAgICAgIHZhciBuZXdfZGlybmFtZSA9IFBBVEguZGlybmFtZShuZXdfcGF0aCk7XG4gICAgICAgIHZhciBvbGRfbmFtZSA9IFBBVEguYmFzZW5hbWUob2xkX3BhdGgpO1xuICAgICAgICB2YXIgbmV3X25hbWUgPSBQQVRILmJhc2VuYW1lKG5ld19wYXRoKTtcbiAgICAgICAgdmFyIGxvb2t1cCwgb2xkX2RpciwgbmV3X2RpcjtcbiAgICAgICAgbG9va3VwID0gRlMubG9va3VwUGF0aChvbGRfcGF0aCwgeyBwYXJlbnQ6IHRydWUgfSk7XG4gICAgICAgIG9sZF9kaXIgPSBsb29rdXAubm9kZTtcbiAgICAgICAgbG9va3VwID0gRlMubG9va3VwUGF0aChuZXdfcGF0aCwgeyBwYXJlbnQ6IHRydWUgfSk7XG4gICAgICAgIG5ld19kaXIgPSBsb29rdXAubm9kZTtcbiAgICAgICAgaWYgKCFvbGRfZGlyIHx8ICFuZXdfZGlyKSB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcig0NCk7XG4gICAgICAgIGlmIChvbGRfZGlyLm1vdW50ICE9PSBuZXdfZGlyLm1vdW50KSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoNzUpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBvbGRfbm9kZSA9IEZTLmxvb2t1cE5vZGUob2xkX2Rpciwgb2xkX25hbWUpO1xuICAgICAgICB2YXIgcmVsYXRpdmUgPSBQQVRIX0ZTLnJlbGF0aXZlKG9sZF9wYXRoLCBuZXdfZGlybmFtZSk7XG4gICAgICAgIGlmIChyZWxhdGl2ZS5jaGFyQXQoMCkgIT09IFwiLlwiKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoMjgpO1xuICAgICAgICB9XG4gICAgICAgIHJlbGF0aXZlID0gUEFUSF9GUy5yZWxhdGl2ZShuZXdfcGF0aCwgb2xkX2Rpcm5hbWUpO1xuICAgICAgICBpZiAocmVsYXRpdmUuY2hhckF0KDApICE9PSBcIi5cIikge1xuICAgICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKDU1KTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgbmV3X25vZGU7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgbmV3X25vZGUgPSBGUy5sb29rdXBOb2RlKG5ld19kaXIsIG5ld19uYW1lKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge31cbiAgICAgICAgaWYgKG9sZF9ub2RlID09PSBuZXdfbm9kZSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB2YXIgaXNkaXIgPSBGUy5pc0RpcihvbGRfbm9kZS5tb2RlKTtcbiAgICAgICAgdmFyIGVyckNvZGUgPSBGUy5tYXlEZWxldGUob2xkX2Rpciwgb2xkX25hbWUsIGlzZGlyKTtcbiAgICAgICAgaWYgKGVyckNvZGUpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihlcnJDb2RlKTtcbiAgICAgICAgfVxuICAgICAgICBlcnJDb2RlID0gbmV3X25vZGVcbiAgICAgICAgICA/IEZTLm1heURlbGV0ZShuZXdfZGlyLCBuZXdfbmFtZSwgaXNkaXIpXG4gICAgICAgICAgOiBGUy5tYXlDcmVhdGUobmV3X2RpciwgbmV3X25hbWUpO1xuICAgICAgICBpZiAoZXJyQ29kZSkge1xuICAgICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKGVyckNvZGUpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghb2xkX2Rpci5ub2RlX29wcy5yZW5hbWUpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcig2Myk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFxuICAgICAgICAgIEZTLmlzTW91bnRwb2ludChvbGRfbm9kZSkgfHxcbiAgICAgICAgICAobmV3X25vZGUgJiYgRlMuaXNNb3VudHBvaW50KG5ld19ub2RlKSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoMTApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChuZXdfZGlyICE9PSBvbGRfZGlyKSB7XG4gICAgICAgICAgZXJyQ29kZSA9IEZTLm5vZGVQZXJtaXNzaW9ucyhvbGRfZGlyLCBcIndcIik7XG4gICAgICAgICAgaWYgKGVyckNvZGUpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKGVyckNvZGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0cnkge1xuICAgICAgICAgIGlmIChGUy50cmFja2luZ0RlbGVnYXRlW1wid2lsbE1vdmVQYXRoXCJdKSB7XG4gICAgICAgICAgICBGUy50cmFja2luZ0RlbGVnYXRlW1wid2lsbE1vdmVQYXRoXCJdKG9sZF9wYXRoLCBuZXdfcGF0aCk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgZXJyKFxuICAgICAgICAgICAgXCJGUy50cmFja2luZ0RlbGVnYXRlWyd3aWxsTW92ZVBhdGgnXSgnXCIgK1xuICAgICAgICAgICAgICBvbGRfcGF0aCArXG4gICAgICAgICAgICAgIFwiJywgJ1wiICtcbiAgICAgICAgICAgICAgbmV3X3BhdGggK1xuICAgICAgICAgICAgICBcIicpIHRocmV3IGFuIGV4Y2VwdGlvbjogXCIgK1xuICAgICAgICAgICAgICBlLm1lc3NhZ2VcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIEZTLmhhc2hSZW1vdmVOb2RlKG9sZF9ub2RlKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBvbGRfZGlyLm5vZGVfb3BzLnJlbmFtZShvbGRfbm9kZSwgbmV3X2RpciwgbmV3X25hbWUpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICBGUy5oYXNoQWRkTm9kZShvbGRfbm9kZSk7XG4gICAgICAgIH1cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBpZiAoRlMudHJhY2tpbmdEZWxlZ2F0ZVtcIm9uTW92ZVBhdGhcIl0pXG4gICAgICAgICAgICBGUy50cmFja2luZ0RlbGVnYXRlW1wib25Nb3ZlUGF0aFwiXShvbGRfcGF0aCwgbmV3X3BhdGgpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgZXJyKFxuICAgICAgICAgICAgXCJGUy50cmFja2luZ0RlbGVnYXRlWydvbk1vdmVQYXRoJ10oJ1wiICtcbiAgICAgICAgICAgICAgb2xkX3BhdGggK1xuICAgICAgICAgICAgICBcIicsICdcIiArXG4gICAgICAgICAgICAgIG5ld19wYXRoICtcbiAgICAgICAgICAgICAgXCInKSB0aHJldyBhbiBleGNlcHRpb246IFwiICtcbiAgICAgICAgICAgICAgZS5tZXNzYWdlXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHJtZGlyOiBmdW5jdGlvbihwYXRoKSB7XG4gICAgICAgIHZhciBsb29rdXAgPSBGUy5sb29rdXBQYXRoKHBhdGgsIHsgcGFyZW50OiB0cnVlIH0pO1xuICAgICAgICB2YXIgcGFyZW50ID0gbG9va3VwLm5vZGU7XG4gICAgICAgIHZhciBuYW1lID0gUEFUSC5iYXNlbmFtZShwYXRoKTtcbiAgICAgICAgdmFyIG5vZGUgPSBGUy5sb29rdXBOb2RlKHBhcmVudCwgbmFtZSk7XG4gICAgICAgIHZhciBlcnJDb2RlID0gRlMubWF5RGVsZXRlKHBhcmVudCwgbmFtZSwgdHJ1ZSk7XG4gICAgICAgIGlmIChlcnJDb2RlKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoZXJyQ29kZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFwYXJlbnQubm9kZV9vcHMucm1kaXIpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcig2Myk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKEZTLmlzTW91bnRwb2ludChub2RlKSkge1xuICAgICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKDEwKTtcbiAgICAgICAgfVxuICAgICAgICB0cnkge1xuICAgICAgICAgIGlmIChGUy50cmFja2luZ0RlbGVnYXRlW1wid2lsbERlbGV0ZVBhdGhcIl0pIHtcbiAgICAgICAgICAgIEZTLnRyYWNraW5nRGVsZWdhdGVbXCJ3aWxsRGVsZXRlUGF0aFwiXShwYXRoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICBlcnIoXG4gICAgICAgICAgICBcIkZTLnRyYWNraW5nRGVsZWdhdGVbJ3dpbGxEZWxldGVQYXRoJ10oJ1wiICtcbiAgICAgICAgICAgICAgcGF0aCArXG4gICAgICAgICAgICAgIFwiJykgdGhyZXcgYW4gZXhjZXB0aW9uOiBcIiArXG4gICAgICAgICAgICAgIGUubWVzc2FnZVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgcGFyZW50Lm5vZGVfb3BzLnJtZGlyKHBhcmVudCwgbmFtZSk7XG4gICAgICAgIEZTLmRlc3Ryb3lOb2RlKG5vZGUpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGlmIChGUy50cmFja2luZ0RlbGVnYXRlW1wib25EZWxldGVQYXRoXCJdKVxuICAgICAgICAgICAgRlMudHJhY2tpbmdEZWxlZ2F0ZVtcIm9uRGVsZXRlUGF0aFwiXShwYXRoKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIGVycihcbiAgICAgICAgICAgIFwiRlMudHJhY2tpbmdEZWxlZ2F0ZVsnb25EZWxldGVQYXRoJ10oJ1wiICtcbiAgICAgICAgICAgICAgcGF0aCArXG4gICAgICAgICAgICAgIFwiJykgdGhyZXcgYW4gZXhjZXB0aW9uOiBcIiArXG4gICAgICAgICAgICAgIGUubWVzc2FnZVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICByZWFkZGlyOiBmdW5jdGlvbihwYXRoKSB7XG4gICAgICAgIHZhciBsb29rdXAgPSBGUy5sb29rdXBQYXRoKHBhdGgsIHsgZm9sbG93OiB0cnVlIH0pO1xuICAgICAgICB2YXIgbm9kZSA9IGxvb2t1cC5ub2RlO1xuICAgICAgICBpZiAoIW5vZGUubm9kZV9vcHMucmVhZGRpcikge1xuICAgICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKDU0KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbm9kZS5ub2RlX29wcy5yZWFkZGlyKG5vZGUpO1xuICAgICAgfSxcbiAgICAgIHVubGluazogZnVuY3Rpb24ocGF0aCkge1xuICAgICAgICB2YXIgbG9va3VwID0gRlMubG9va3VwUGF0aChwYXRoLCB7IHBhcmVudDogdHJ1ZSB9KTtcbiAgICAgICAgdmFyIHBhcmVudCA9IGxvb2t1cC5ub2RlO1xuICAgICAgICB2YXIgbmFtZSA9IFBBVEguYmFzZW5hbWUocGF0aCk7XG4gICAgICAgIHZhciBub2RlID0gRlMubG9va3VwTm9kZShwYXJlbnQsIG5hbWUpO1xuICAgICAgICB2YXIgZXJyQ29kZSA9IEZTLm1heURlbGV0ZShwYXJlbnQsIG5hbWUsIGZhbHNlKTtcbiAgICAgICAgaWYgKGVyckNvZGUpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihlcnJDb2RlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXBhcmVudC5ub2RlX29wcy51bmxpbmspIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcig2Myk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKEZTLmlzTW91bnRwb2ludChub2RlKSkge1xuICAgICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKDEwKTtcbiAgICAgICAgfVxuICAgICAgICB0cnkge1xuICAgICAgICAgIGlmIChGUy50cmFja2luZ0RlbGVnYXRlW1wid2lsbERlbGV0ZVBhdGhcIl0pIHtcbiAgICAgICAgICAgIEZTLnRyYWNraW5nRGVsZWdhdGVbXCJ3aWxsRGVsZXRlUGF0aFwiXShwYXRoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICBlcnIoXG4gICAgICAgICAgICBcIkZTLnRyYWNraW5nRGVsZWdhdGVbJ3dpbGxEZWxldGVQYXRoJ10oJ1wiICtcbiAgICAgICAgICAgICAgcGF0aCArXG4gICAgICAgICAgICAgIFwiJykgdGhyZXcgYW4gZXhjZXB0aW9uOiBcIiArXG4gICAgICAgICAgICAgIGUubWVzc2FnZVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgcGFyZW50Lm5vZGVfb3BzLnVubGluayhwYXJlbnQsIG5hbWUpO1xuICAgICAgICBGUy5kZXN0cm95Tm9kZShub2RlKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBpZiAoRlMudHJhY2tpbmdEZWxlZ2F0ZVtcIm9uRGVsZXRlUGF0aFwiXSlcbiAgICAgICAgICAgIEZTLnRyYWNraW5nRGVsZWdhdGVbXCJvbkRlbGV0ZVBhdGhcIl0ocGF0aCk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICBlcnIoXG4gICAgICAgICAgICBcIkZTLnRyYWNraW5nRGVsZWdhdGVbJ29uRGVsZXRlUGF0aCddKCdcIiArXG4gICAgICAgICAgICAgIHBhdGggK1xuICAgICAgICAgICAgICBcIicpIHRocmV3IGFuIGV4Y2VwdGlvbjogXCIgK1xuICAgICAgICAgICAgICBlLm1lc3NhZ2VcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgcmVhZGxpbms6IGZ1bmN0aW9uKHBhdGgpIHtcbiAgICAgICAgdmFyIGxvb2t1cCA9IEZTLmxvb2t1cFBhdGgocGF0aCk7XG4gICAgICAgIHZhciBsaW5rID0gbG9va3VwLm5vZGU7XG4gICAgICAgIGlmICghbGluaykge1xuICAgICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKDQ0KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWxpbmsubm9kZV9vcHMucmVhZGxpbmspIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcigyOCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFBBVEhfRlMucmVzb2x2ZShcbiAgICAgICAgICBGUy5nZXRQYXRoKGxpbmsucGFyZW50KSxcbiAgICAgICAgICBsaW5rLm5vZGVfb3BzLnJlYWRsaW5rKGxpbmspXG4gICAgICAgICk7XG4gICAgICB9LFxuICAgICAgc3RhdDogZnVuY3Rpb24ocGF0aCwgZG9udEZvbGxvdykge1xuICAgICAgICB2YXIgbG9va3VwID0gRlMubG9va3VwUGF0aChwYXRoLCB7IGZvbGxvdzogIWRvbnRGb2xsb3cgfSk7XG4gICAgICAgIHZhciBub2RlID0gbG9va3VwLm5vZGU7XG4gICAgICAgIGlmICghbm9kZSkge1xuICAgICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKDQ0KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIW5vZGUubm9kZV9vcHMuZ2V0YXR0cikge1xuICAgICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKDYzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbm9kZS5ub2RlX29wcy5nZXRhdHRyKG5vZGUpO1xuICAgICAgfSxcbiAgICAgIGxzdGF0OiBmdW5jdGlvbihwYXRoKSB7XG4gICAgICAgIHJldHVybiBGUy5zdGF0KHBhdGgsIHRydWUpO1xuICAgICAgfSxcbiAgICAgIGNobW9kOiBmdW5jdGlvbihwYXRoLCBtb2RlLCBkb250Rm9sbG93KSB7XG4gICAgICAgIHZhciBub2RlO1xuICAgICAgICBpZiAodHlwZW9mIHBhdGggPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICB2YXIgbG9va3VwID0gRlMubG9va3VwUGF0aChwYXRoLCB7IGZvbGxvdzogIWRvbnRGb2xsb3cgfSk7XG4gICAgICAgICAgbm9kZSA9IGxvb2t1cC5ub2RlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG5vZGUgPSBwYXRoO1xuICAgICAgICB9XG4gICAgICAgIGlmICghbm9kZS5ub2RlX29wcy5zZXRhdHRyKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoNjMpO1xuICAgICAgICB9XG4gICAgICAgIG5vZGUubm9kZV9vcHMuc2V0YXR0cihub2RlLCB7XG4gICAgICAgICAgbW9kZTogKG1vZGUgJiA0MDk1KSB8IChub2RlLm1vZGUgJiB+NDA5NSksXG4gICAgICAgICAgdGltZXN0YW1wOiBEYXRlLm5vdygpXG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICAgIGxjaG1vZDogZnVuY3Rpb24ocGF0aCwgbW9kZSkge1xuICAgICAgICBGUy5jaG1vZChwYXRoLCBtb2RlLCB0cnVlKTtcbiAgICAgIH0sXG4gICAgICBmY2htb2Q6IGZ1bmN0aW9uKGZkLCBtb2RlKSB7XG4gICAgICAgIHZhciBzdHJlYW0gPSBGUy5nZXRTdHJlYW0oZmQpO1xuICAgICAgICBpZiAoIXN0cmVhbSkge1xuICAgICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKDgpO1xuICAgICAgICB9XG4gICAgICAgIEZTLmNobW9kKHN0cmVhbS5ub2RlLCBtb2RlKTtcbiAgICAgIH0sXG4gICAgICBjaG93bjogZnVuY3Rpb24ocGF0aCwgdWlkLCBnaWQsIGRvbnRGb2xsb3cpIHtcbiAgICAgICAgdmFyIG5vZGU7XG4gICAgICAgIGlmICh0eXBlb2YgcGF0aCA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgIHZhciBsb29rdXAgPSBGUy5sb29rdXBQYXRoKHBhdGgsIHsgZm9sbG93OiAhZG9udEZvbGxvdyB9KTtcbiAgICAgICAgICBub2RlID0gbG9va3VwLm5vZGU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbm9kZSA9IHBhdGg7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFub2RlLm5vZGVfb3BzLnNldGF0dHIpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcig2Myk7XG4gICAgICAgIH1cbiAgICAgICAgbm9kZS5ub2RlX29wcy5zZXRhdHRyKG5vZGUsIHsgdGltZXN0YW1wOiBEYXRlLm5vdygpIH0pO1xuICAgICAgfSxcbiAgICAgIGxjaG93bjogZnVuY3Rpb24ocGF0aCwgdWlkLCBnaWQpIHtcbiAgICAgICAgRlMuY2hvd24ocGF0aCwgdWlkLCBnaWQsIHRydWUpO1xuICAgICAgfSxcbiAgICAgIGZjaG93bjogZnVuY3Rpb24oZmQsIHVpZCwgZ2lkKSB7XG4gICAgICAgIHZhciBzdHJlYW0gPSBGUy5nZXRTdHJlYW0oZmQpO1xuICAgICAgICBpZiAoIXN0cmVhbSkge1xuICAgICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKDgpO1xuICAgICAgICB9XG4gICAgICAgIEZTLmNob3duKHN0cmVhbS5ub2RlLCB1aWQsIGdpZCk7XG4gICAgICB9LFxuICAgICAgdHJ1bmNhdGU6IGZ1bmN0aW9uKHBhdGgsIGxlbikge1xuICAgICAgICBpZiAobGVuIDwgMCkge1xuICAgICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKDI4KTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgbm9kZTtcbiAgICAgICAgaWYgKHR5cGVvZiBwYXRoID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgdmFyIGxvb2t1cCA9IEZTLmxvb2t1cFBhdGgocGF0aCwgeyBmb2xsb3c6IHRydWUgfSk7XG4gICAgICAgICAgbm9kZSA9IGxvb2t1cC5ub2RlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG5vZGUgPSBwYXRoO1xuICAgICAgICB9XG4gICAgICAgIGlmICghbm9kZS5ub2RlX29wcy5zZXRhdHRyKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoNjMpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChGUy5pc0Rpcihub2RlLm1vZGUpKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoMzEpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghRlMuaXNGaWxlKG5vZGUubW9kZSkpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcigyOCk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGVyckNvZGUgPSBGUy5ub2RlUGVybWlzc2lvbnMobm9kZSwgXCJ3XCIpO1xuICAgICAgICBpZiAoZXJyQ29kZSkge1xuICAgICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKGVyckNvZGUpO1xuICAgICAgICB9XG4gICAgICAgIG5vZGUubm9kZV9vcHMuc2V0YXR0cihub2RlLCB7IHNpemU6IGxlbiwgdGltZXN0YW1wOiBEYXRlLm5vdygpIH0pO1xuICAgICAgfSxcbiAgICAgIGZ0cnVuY2F0ZTogZnVuY3Rpb24oZmQsIGxlbikge1xuICAgICAgICB2YXIgc3RyZWFtID0gRlMuZ2V0U3RyZWFtKGZkKTtcbiAgICAgICAgaWYgKCFzdHJlYW0pIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcig4KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoKHN0cmVhbS5mbGFncyAmIDIwOTcxNTUpID09PSAwKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoMjgpO1xuICAgICAgICB9XG4gICAgICAgIEZTLnRydW5jYXRlKHN0cmVhbS5ub2RlLCBsZW4pO1xuICAgICAgfSxcbiAgICAgIHV0aW1lOiBmdW5jdGlvbihwYXRoLCBhdGltZSwgbXRpbWUpIHtcbiAgICAgICAgdmFyIGxvb2t1cCA9IEZTLmxvb2t1cFBhdGgocGF0aCwgeyBmb2xsb3c6IHRydWUgfSk7XG4gICAgICAgIHZhciBub2RlID0gbG9va3VwLm5vZGU7XG4gICAgICAgIG5vZGUubm9kZV9vcHMuc2V0YXR0cihub2RlLCB7IHRpbWVzdGFtcDogTWF0aC5tYXgoYXRpbWUsIG10aW1lKSB9KTtcbiAgICAgIH0sXG4gICAgICBvcGVuOiBmdW5jdGlvbihwYXRoLCBmbGFncywgbW9kZSwgZmRfc3RhcnQsIGZkX2VuZCkge1xuICAgICAgICBpZiAocGF0aCA9PT0gXCJcIikge1xuICAgICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKDQ0KTtcbiAgICAgICAgfVxuICAgICAgICBmbGFncyA9IHR5cGVvZiBmbGFncyA9PT0gXCJzdHJpbmdcIiA/IEZTLm1vZGVTdHJpbmdUb0ZsYWdzKGZsYWdzKSA6IGZsYWdzO1xuICAgICAgICBtb2RlID0gdHlwZW9mIG1vZGUgPT09IFwidW5kZWZpbmVkXCIgPyA0MzggOiBtb2RlO1xuICAgICAgICBpZiAoZmxhZ3MgJiA2NCkge1xuICAgICAgICAgIG1vZGUgPSAobW9kZSAmIDQwOTUpIHwgMzI3Njg7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbW9kZSA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIG5vZGU7XG4gICAgICAgIGlmICh0eXBlb2YgcGF0aCA9PT0gXCJvYmplY3RcIikge1xuICAgICAgICAgIG5vZGUgPSBwYXRoO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHBhdGggPSBQQVRILm5vcm1hbGl6ZShwYXRoKTtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgdmFyIGxvb2t1cCA9IEZTLmxvb2t1cFBhdGgocGF0aCwgeyBmb2xsb3c6ICEoZmxhZ3MgJiAxMzEwNzIpIH0pO1xuICAgICAgICAgICAgbm9kZSA9IGxvb2t1cC5ub2RlO1xuICAgICAgICAgIH0gY2F0Y2ggKGUpIHt9XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGNyZWF0ZWQgPSBmYWxzZTtcbiAgICAgICAgaWYgKGZsYWdzICYgNjQpIHtcbiAgICAgICAgICBpZiAobm9kZSkge1xuICAgICAgICAgICAgaWYgKGZsYWdzICYgMTI4KSB7XG4gICAgICAgICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKDIwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbm9kZSA9IEZTLm1rbm9kKHBhdGgsIG1vZGUsIDApO1xuICAgICAgICAgICAgY3JlYXRlZCA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICghbm9kZSkge1xuICAgICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKDQ0KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoRlMuaXNDaHJkZXYobm9kZS5tb2RlKSkge1xuICAgICAgICAgIGZsYWdzICY9IH41MTI7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGZsYWdzICYgNjU1MzYgJiYgIUZTLmlzRGlyKG5vZGUubW9kZSkpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcig1NCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFjcmVhdGVkKSB7XG4gICAgICAgICAgdmFyIGVyckNvZGUgPSBGUy5tYXlPcGVuKG5vZGUsIGZsYWdzKTtcbiAgICAgICAgICBpZiAoZXJyQ29kZSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoZXJyQ29kZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChmbGFncyAmIDUxMikge1xuICAgICAgICAgIEZTLnRydW5jYXRlKG5vZGUsIDApO1xuICAgICAgICB9XG4gICAgICAgIGZsYWdzICY9IH4oMTI4IHwgNTEyIHwgMTMxMDcyKTtcbiAgICAgICAgdmFyIHN0cmVhbSA9IEZTLmNyZWF0ZVN0cmVhbShcbiAgICAgICAgICB7XG4gICAgICAgICAgICBub2RlOiBub2RlLFxuICAgICAgICAgICAgcGF0aDogRlMuZ2V0UGF0aChub2RlKSxcbiAgICAgICAgICAgIGZsYWdzOiBmbGFncyxcbiAgICAgICAgICAgIHNlZWthYmxlOiB0cnVlLFxuICAgICAgICAgICAgcG9zaXRpb246IDAsXG4gICAgICAgICAgICBzdHJlYW1fb3BzOiBub2RlLnN0cmVhbV9vcHMsXG4gICAgICAgICAgICB1bmdvdHRlbjogW10sXG4gICAgICAgICAgICBlcnJvcjogZmFsc2VcbiAgICAgICAgICB9LFxuICAgICAgICAgIGZkX3N0YXJ0LFxuICAgICAgICAgIGZkX2VuZFxuICAgICAgICApO1xuICAgICAgICBpZiAoc3RyZWFtLnN0cmVhbV9vcHMub3Blbikge1xuICAgICAgICAgIHN0cmVhbS5zdHJlYW1fb3BzLm9wZW4oc3RyZWFtKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoTW9kdWxlW1wibG9nUmVhZEZpbGVzXCJdICYmICEoZmxhZ3MgJiAxKSkge1xuICAgICAgICAgIGlmICghRlMucmVhZEZpbGVzKSBGUy5yZWFkRmlsZXMgPSB7fTtcbiAgICAgICAgICBpZiAoIShwYXRoIGluIEZTLnJlYWRGaWxlcykpIHtcbiAgICAgICAgICAgIEZTLnJlYWRGaWxlc1twYXRoXSA9IDE7XG4gICAgICAgICAgICBlcnIoXCJGUy50cmFja2luZ0RlbGVnYXRlIGVycm9yIG9uIHJlYWQgZmlsZTogXCIgKyBwYXRoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBpZiAoRlMudHJhY2tpbmdEZWxlZ2F0ZVtcIm9uT3BlbkZpbGVcIl0pIHtcbiAgICAgICAgICAgIHZhciB0cmFja2luZ0ZsYWdzID0gMDtcbiAgICAgICAgICAgIGlmICgoZmxhZ3MgJiAyMDk3MTU1KSAhPT0gMSkge1xuICAgICAgICAgICAgICB0cmFja2luZ0ZsYWdzIHw9IEZTLnRyYWNraW5nLm9wZW5GbGFncy5SRUFEO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKChmbGFncyAmIDIwOTcxNTUpICE9PSAwKSB7XG4gICAgICAgICAgICAgIHRyYWNraW5nRmxhZ3MgfD0gRlMudHJhY2tpbmcub3BlbkZsYWdzLldSSVRFO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgRlMudHJhY2tpbmdEZWxlZ2F0ZVtcIm9uT3BlbkZpbGVcIl0ocGF0aCwgdHJhY2tpbmdGbGFncyk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgZXJyKFxuICAgICAgICAgICAgXCJGUy50cmFja2luZ0RlbGVnYXRlWydvbk9wZW5GaWxlJ10oJ1wiICtcbiAgICAgICAgICAgICAgcGF0aCArXG4gICAgICAgICAgICAgIFwiJywgZmxhZ3MpIHRocmV3IGFuIGV4Y2VwdGlvbjogXCIgK1xuICAgICAgICAgICAgICBlLm1lc3NhZ2VcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdHJlYW07XG4gICAgICB9LFxuICAgICAgY2xvc2U6IGZ1bmN0aW9uKHN0cmVhbSkge1xuICAgICAgICBpZiAoRlMuaXNDbG9zZWQoc3RyZWFtKSkge1xuICAgICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKDgpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzdHJlYW0uZ2V0ZGVudHMpIHN0cmVhbS5nZXRkZW50cyA9IG51bGw7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgaWYgKHN0cmVhbS5zdHJlYW1fb3BzLmNsb3NlKSB7XG4gICAgICAgICAgICBzdHJlYW0uc3RyZWFtX29wcy5jbG9zZShzdHJlYW0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIHRocm93IGU7XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgRlMuY2xvc2VTdHJlYW0oc3RyZWFtLmZkKTtcbiAgICAgICAgfVxuICAgICAgICBzdHJlYW0uZmQgPSBudWxsO1xuICAgICAgfSxcbiAgICAgIGlzQ2xvc2VkOiBmdW5jdGlvbihzdHJlYW0pIHtcbiAgICAgICAgcmV0dXJuIHN0cmVhbS5mZCA9PT0gbnVsbDtcbiAgICAgIH0sXG4gICAgICBsbHNlZWs6IGZ1bmN0aW9uKHN0cmVhbSwgb2Zmc2V0LCB3aGVuY2UpIHtcbiAgICAgICAgaWYgKEZTLmlzQ2xvc2VkKHN0cmVhbSkpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcig4KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXN0cmVhbS5zZWVrYWJsZSB8fCAhc3RyZWFtLnN0cmVhbV9vcHMubGxzZWVrKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoNzApO1xuICAgICAgICB9XG4gICAgICAgIGlmICh3aGVuY2UgIT0gMCAmJiB3aGVuY2UgIT0gMSAmJiB3aGVuY2UgIT0gMikge1xuICAgICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKDI4KTtcbiAgICAgICAgfVxuICAgICAgICBzdHJlYW0ucG9zaXRpb24gPSBzdHJlYW0uc3RyZWFtX29wcy5sbHNlZWsoc3RyZWFtLCBvZmZzZXQsIHdoZW5jZSk7XG4gICAgICAgIHN0cmVhbS51bmdvdHRlbiA9IFtdO1xuICAgICAgICByZXR1cm4gc3RyZWFtLnBvc2l0aW9uO1xuICAgICAgfSxcbiAgICAgIHJlYWQ6IGZ1bmN0aW9uKHN0cmVhbSwgYnVmZmVyLCBvZmZzZXQsIGxlbmd0aCwgcG9zaXRpb24pIHtcbiAgICAgICAgaWYgKGxlbmd0aCA8IDAgfHwgcG9zaXRpb24gPCAwKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoMjgpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChGUy5pc0Nsb3NlZChzdHJlYW0pKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoOCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKChzdHJlYW0uZmxhZ3MgJiAyMDk3MTU1KSA9PT0gMSkge1xuICAgICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKDgpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChGUy5pc0RpcihzdHJlYW0ubm9kZS5tb2RlKSkge1xuICAgICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKDMxKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXN0cmVhbS5zdHJlYW1fb3BzLnJlYWQpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcigyOCk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHNlZWtpbmcgPSB0eXBlb2YgcG9zaXRpb24gIT09IFwidW5kZWZpbmVkXCI7XG4gICAgICAgIGlmICghc2Vla2luZykge1xuICAgICAgICAgIHBvc2l0aW9uID0gc3RyZWFtLnBvc2l0aW9uO1xuICAgICAgICB9IGVsc2UgaWYgKCFzdHJlYW0uc2Vla2FibGUpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcig3MCk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGJ5dGVzUmVhZCA9IHN0cmVhbS5zdHJlYW1fb3BzLnJlYWQoXG4gICAgICAgICAgc3RyZWFtLFxuICAgICAgICAgIGJ1ZmZlcixcbiAgICAgICAgICBvZmZzZXQsXG4gICAgICAgICAgbGVuZ3RoLFxuICAgICAgICAgIHBvc2l0aW9uXG4gICAgICAgICk7XG4gICAgICAgIGlmICghc2Vla2luZykgc3RyZWFtLnBvc2l0aW9uICs9IGJ5dGVzUmVhZDtcbiAgICAgICAgcmV0dXJuIGJ5dGVzUmVhZDtcbiAgICAgIH0sXG4gICAgICB3cml0ZTogZnVuY3Rpb24oc3RyZWFtLCBidWZmZXIsIG9mZnNldCwgbGVuZ3RoLCBwb3NpdGlvbiwgY2FuT3duKSB7XG4gICAgICAgIGlmIChsZW5ndGggPCAwIHx8IHBvc2l0aW9uIDwgMCkge1xuICAgICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKDI4KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoRlMuaXNDbG9zZWQoc3RyZWFtKSkge1xuICAgICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKDgpO1xuICAgICAgICB9XG4gICAgICAgIGlmICgoc3RyZWFtLmZsYWdzICYgMjA5NzE1NSkgPT09IDApIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcig4KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoRlMuaXNEaXIoc3RyZWFtLm5vZGUubW9kZSkpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcigzMSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFzdHJlYW0uc3RyZWFtX29wcy53cml0ZSkge1xuICAgICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKDI4KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc3RyZWFtLnNlZWthYmxlICYmIHN0cmVhbS5mbGFncyAmIDEwMjQpIHtcbiAgICAgICAgICBGUy5sbHNlZWsoc3RyZWFtLCAwLCAyKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgc2Vla2luZyA9IHR5cGVvZiBwb3NpdGlvbiAhPT0gXCJ1bmRlZmluZWRcIjtcbiAgICAgICAgaWYgKCFzZWVraW5nKSB7XG4gICAgICAgICAgcG9zaXRpb24gPSBzdHJlYW0ucG9zaXRpb247XG4gICAgICAgIH0gZWxzZSBpZiAoIXN0cmVhbS5zZWVrYWJsZSkge1xuICAgICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKDcwKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgYnl0ZXNXcml0dGVuID0gc3RyZWFtLnN0cmVhbV9vcHMud3JpdGUoXG4gICAgICAgICAgc3RyZWFtLFxuICAgICAgICAgIGJ1ZmZlcixcbiAgICAgICAgICBvZmZzZXQsXG4gICAgICAgICAgbGVuZ3RoLFxuICAgICAgICAgIHBvc2l0aW9uLFxuICAgICAgICAgIGNhbk93blxuICAgICAgICApO1xuICAgICAgICBpZiAoIXNlZWtpbmcpIHN0cmVhbS5wb3NpdGlvbiArPSBieXRlc1dyaXR0ZW47XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgaWYgKHN0cmVhbS5wYXRoICYmIEZTLnRyYWNraW5nRGVsZWdhdGVbXCJvbldyaXRlVG9GaWxlXCJdKVxuICAgICAgICAgICAgRlMudHJhY2tpbmdEZWxlZ2F0ZVtcIm9uV3JpdGVUb0ZpbGVcIl0oc3RyZWFtLnBhdGgpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgZXJyKFxuICAgICAgICAgICAgXCJGUy50cmFja2luZ0RlbGVnYXRlWydvbldyaXRlVG9GaWxlJ10oJ1wiICtcbiAgICAgICAgICAgICAgc3RyZWFtLnBhdGggK1xuICAgICAgICAgICAgICBcIicpIHRocmV3IGFuIGV4Y2VwdGlvbjogXCIgK1xuICAgICAgICAgICAgICBlLm1lc3NhZ2VcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBieXRlc1dyaXR0ZW47XG4gICAgICB9LFxuICAgICAgYWxsb2NhdGU6IGZ1bmN0aW9uKHN0cmVhbSwgb2Zmc2V0LCBsZW5ndGgpIHtcbiAgICAgICAgaWYgKEZTLmlzQ2xvc2VkKHN0cmVhbSkpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcig4KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob2Zmc2V0IDwgMCB8fCBsZW5ndGggPD0gMCkge1xuICAgICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKDI4KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoKHN0cmVhbS5mbGFncyAmIDIwOTcxNTUpID09PSAwKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoOCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFGUy5pc0ZpbGUoc3RyZWFtLm5vZGUubW9kZSkgJiYgIUZTLmlzRGlyKHN0cmVhbS5ub2RlLm1vZGUpKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoNDMpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghc3RyZWFtLnN0cmVhbV9vcHMuYWxsb2NhdGUpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcigxMzgpO1xuICAgICAgICB9XG4gICAgICAgIHN0cmVhbS5zdHJlYW1fb3BzLmFsbG9jYXRlKHN0cmVhbSwgb2Zmc2V0LCBsZW5ndGgpO1xuICAgICAgfSxcbiAgICAgIG1tYXA6IGZ1bmN0aW9uKHN0cmVhbSwgYWRkcmVzcywgbGVuZ3RoLCBwb3NpdGlvbiwgcHJvdCwgZmxhZ3MpIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIChwcm90ICYgMikgIT09IDAgJiZcbiAgICAgICAgICAoZmxhZ3MgJiAyKSA9PT0gMCAmJlxuICAgICAgICAgIChzdHJlYW0uZmxhZ3MgJiAyMDk3MTU1KSAhPT0gMlxuICAgICAgICApIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcigyKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoKHN0cmVhbS5mbGFncyAmIDIwOTcxNTUpID09PSAxKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoMik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFzdHJlYW0uc3RyZWFtX29wcy5tbWFwKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoNDMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdHJlYW0uc3RyZWFtX29wcy5tbWFwKFxuICAgICAgICAgIHN0cmVhbSxcbiAgICAgICAgICBhZGRyZXNzLFxuICAgICAgICAgIGxlbmd0aCxcbiAgICAgICAgICBwb3NpdGlvbixcbiAgICAgICAgICBwcm90LFxuICAgICAgICAgIGZsYWdzXG4gICAgICAgICk7XG4gICAgICB9LFxuICAgICAgbXN5bmM6IGZ1bmN0aW9uKHN0cmVhbSwgYnVmZmVyLCBvZmZzZXQsIGxlbmd0aCwgbW1hcEZsYWdzKSB7XG4gICAgICAgIGlmICghc3RyZWFtIHx8ICFzdHJlYW0uc3RyZWFtX29wcy5tc3luYykge1xuICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdHJlYW0uc3RyZWFtX29wcy5tc3luYyhcbiAgICAgICAgICBzdHJlYW0sXG4gICAgICAgICAgYnVmZmVyLFxuICAgICAgICAgIG9mZnNldCxcbiAgICAgICAgICBsZW5ndGgsXG4gICAgICAgICAgbW1hcEZsYWdzXG4gICAgICAgICk7XG4gICAgICB9LFxuICAgICAgbXVubWFwOiBmdW5jdGlvbihzdHJlYW0pIHtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgICB9LFxuICAgICAgaW9jdGw6IGZ1bmN0aW9uKHN0cmVhbSwgY21kLCBhcmcpIHtcbiAgICAgICAgaWYgKCFzdHJlYW0uc3RyZWFtX29wcy5pb2N0bCkge1xuICAgICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKDU5KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3RyZWFtLnN0cmVhbV9vcHMuaW9jdGwoc3RyZWFtLCBjbWQsIGFyZyk7XG4gICAgICB9LFxuICAgICAgcmVhZEZpbGU6IGZ1bmN0aW9uKHBhdGgsIG9wdHMpIHtcbiAgICAgICAgb3B0cyA9IG9wdHMgfHwge307XG4gICAgICAgIG9wdHMuZmxhZ3MgPSBvcHRzLmZsYWdzIHx8IDA7XG4gICAgICAgIG9wdHMuZW5jb2RpbmcgPSBvcHRzLmVuY29kaW5nIHx8IFwiYmluYXJ5XCI7XG4gICAgICAgIGlmIChvcHRzLmVuY29kaW5nICE9PSBcInV0ZjhcIiAmJiBvcHRzLmVuY29kaW5nICE9PSBcImJpbmFyeVwiKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGVuY29kaW5nIHR5cGUgXCInICsgb3B0cy5lbmNvZGluZyArICdcIicpO1xuICAgICAgICB9XG4gICAgICAgIHZhciByZXQ7XG4gICAgICAgIHZhciBzdHJlYW0gPSBGUy5vcGVuKHBhdGgsIG9wdHMuZmxhZ3MpO1xuICAgICAgICB2YXIgc3RhdCA9IEZTLnN0YXQocGF0aCk7XG4gICAgICAgIHZhciBsZW5ndGggPSBzdGF0LnNpemU7XG4gICAgICAgIHZhciBidWYgPSBuZXcgVWludDhBcnJheShsZW5ndGgpO1xuICAgICAgICBGUy5yZWFkKHN0cmVhbSwgYnVmLCAwLCBsZW5ndGgsIDApO1xuICAgICAgICBpZiAob3B0cy5lbmNvZGluZyA9PT0gXCJ1dGY4XCIpIHtcbiAgICAgICAgICByZXQgPSBVVEY4QXJyYXlUb1N0cmluZyhidWYsIDApO1xuICAgICAgICB9IGVsc2UgaWYgKG9wdHMuZW5jb2RpbmcgPT09IFwiYmluYXJ5XCIpIHtcbiAgICAgICAgICByZXQgPSBidWY7XG4gICAgICAgIH1cbiAgICAgICAgRlMuY2xvc2Uoc3RyZWFtKTtcbiAgICAgICAgcmV0dXJuIHJldDtcbiAgICAgIH0sXG4gICAgICB3cml0ZUZpbGU6IGZ1bmN0aW9uKHBhdGgsIGRhdGEsIG9wdHMpIHtcbiAgICAgICAgb3B0cyA9IG9wdHMgfHwge307XG4gICAgICAgIG9wdHMuZmxhZ3MgPSBvcHRzLmZsYWdzIHx8IDU3NztcbiAgICAgICAgdmFyIHN0cmVhbSA9IEZTLm9wZW4ocGF0aCwgb3B0cy5mbGFncywgb3B0cy5tb2RlKTtcbiAgICAgICAgaWYgKHR5cGVvZiBkYXRhID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgdmFyIGJ1ZiA9IG5ldyBVaW50OEFycmF5KGxlbmd0aEJ5dGVzVVRGOChkYXRhKSArIDEpO1xuICAgICAgICAgIHZhciBhY3R1YWxOdW1CeXRlcyA9IHN0cmluZ1RvVVRGOEFycmF5KGRhdGEsIGJ1ZiwgMCwgYnVmLmxlbmd0aCk7XG4gICAgICAgICAgRlMud3JpdGUoc3RyZWFtLCBidWYsIDAsIGFjdHVhbE51bUJ5dGVzLCB1bmRlZmluZWQsIG9wdHMuY2FuT3duKTtcbiAgICAgICAgfSBlbHNlIGlmIChBcnJheUJ1ZmZlci5pc1ZpZXcoZGF0YSkpIHtcbiAgICAgICAgICBGUy53cml0ZShzdHJlYW0sIGRhdGEsIDAsIGRhdGEuYnl0ZUxlbmd0aCwgdW5kZWZpbmVkLCBvcHRzLmNhbk93bik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVW5zdXBwb3J0ZWQgZGF0YSB0eXBlXCIpO1xuICAgICAgICB9XG4gICAgICAgIEZTLmNsb3NlKHN0cmVhbSk7XG4gICAgICB9LFxuICAgICAgY3dkOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIEZTLmN1cnJlbnRQYXRoO1xuICAgICAgfSxcbiAgICAgIGNoZGlyOiBmdW5jdGlvbihwYXRoKSB7XG4gICAgICAgIHZhciBsb29rdXAgPSBGUy5sb29rdXBQYXRoKHBhdGgsIHsgZm9sbG93OiB0cnVlIH0pO1xuICAgICAgICBpZiAobG9va3VwLm5vZGUgPT09IG51bGwpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcig0NCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFGUy5pc0Rpcihsb29rdXAubm9kZS5tb2RlKSkge1xuICAgICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKDU0KTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgZXJyQ29kZSA9IEZTLm5vZGVQZXJtaXNzaW9ucyhsb29rdXAubm9kZSwgXCJ4XCIpO1xuICAgICAgICBpZiAoZXJyQ29kZSkge1xuICAgICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKGVyckNvZGUpO1xuICAgICAgICB9XG4gICAgICAgIEZTLmN1cnJlbnRQYXRoID0gbG9va3VwLnBhdGg7XG4gICAgICB9LFxuICAgICAgY3JlYXRlRGVmYXVsdERpcmVjdG9yaWVzOiBmdW5jdGlvbigpIHtcbiAgICAgICAgRlMubWtkaXIoXCIvdG1wXCIpO1xuICAgICAgICBGUy5ta2RpcihcIi9ob21lXCIpO1xuICAgICAgICBGUy5ta2RpcihcIi9ob21lL3dlYl91c2VyXCIpO1xuICAgICAgfSxcbiAgICAgIGNyZWF0ZURlZmF1bHREZXZpY2VzOiBmdW5jdGlvbigpIHtcbiAgICAgICAgRlMubWtkaXIoXCIvZGV2XCIpO1xuICAgICAgICBGUy5yZWdpc3RlckRldmljZShGUy5tYWtlZGV2KDEsIDMpLCB7XG4gICAgICAgICAgcmVhZDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgICB9LFxuICAgICAgICAgIHdyaXRlOiBmdW5jdGlvbihzdHJlYW0sIGJ1ZmZlciwgb2Zmc2V0LCBsZW5ndGgsIHBvcykge1xuICAgICAgICAgICAgcmV0dXJuIGxlbmd0aDtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBGUy5ta2RldihcIi9kZXYvbnVsbFwiLCBGUy5tYWtlZGV2KDEsIDMpKTtcbiAgICAgICAgVFRZLnJlZ2lzdGVyKEZTLm1ha2VkZXYoNSwgMCksIFRUWS5kZWZhdWx0X3R0eV9vcHMpO1xuICAgICAgICBUVFkucmVnaXN0ZXIoRlMubWFrZWRldig2LCAwKSwgVFRZLmRlZmF1bHRfdHR5MV9vcHMpO1xuICAgICAgICBGUy5ta2RldihcIi9kZXYvdHR5XCIsIEZTLm1ha2VkZXYoNSwgMCkpO1xuICAgICAgICBGUy5ta2RldihcIi9kZXYvdHR5MVwiLCBGUy5tYWtlZGV2KDYsIDApKTtcbiAgICAgICAgdmFyIHJhbmRvbV9kZXZpY2UgPSBnZXRSYW5kb21EZXZpY2UoKTtcbiAgICAgICAgRlMuY3JlYXRlRGV2aWNlKFwiL2RldlwiLCBcInJhbmRvbVwiLCByYW5kb21fZGV2aWNlKTtcbiAgICAgICAgRlMuY3JlYXRlRGV2aWNlKFwiL2RldlwiLCBcInVyYW5kb21cIiwgcmFuZG9tX2RldmljZSk7XG4gICAgICAgIEZTLm1rZGlyKFwiL2Rldi9zaG1cIik7XG4gICAgICAgIEZTLm1rZGlyKFwiL2Rldi9zaG0vdG1wXCIpO1xuICAgICAgfSxcbiAgICAgIGNyZWF0ZVNwZWNpYWxEaXJlY3RvcmllczogZnVuY3Rpb24oKSB7XG4gICAgICAgIEZTLm1rZGlyKFwiL3Byb2NcIik7XG4gICAgICAgIHZhciBwcm9jX3NlbGYgPSBGUy5ta2RpcihcIi9wcm9jL3NlbGZcIik7XG4gICAgICAgIEZTLm1rZGlyKFwiL3Byb2Mvc2VsZi9mZFwiKTtcbiAgICAgICAgRlMubW91bnQoXG4gICAgICAgICAge1xuICAgICAgICAgICAgbW91bnQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICB2YXIgbm9kZSA9IEZTLmNyZWF0ZU5vZGUocHJvY19zZWxmLCBcImZkXCIsIDE2Mzg0IHwgNTExLCA3Myk7XG4gICAgICAgICAgICAgIG5vZGUubm9kZV9vcHMgPSB7XG4gICAgICAgICAgICAgICAgbG9va3VwOiBmdW5jdGlvbihwYXJlbnQsIG5hbWUpIHtcbiAgICAgICAgICAgICAgICAgIHZhciBmZCA9ICtuYW1lO1xuICAgICAgICAgICAgICAgICAgdmFyIHN0cmVhbSA9IEZTLmdldFN0cmVhbShmZCk7XG4gICAgICAgICAgICAgICAgICBpZiAoIXN0cmVhbSkgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoOCk7XG4gICAgICAgICAgICAgICAgICB2YXIgcmV0ID0ge1xuICAgICAgICAgICAgICAgICAgICBwYXJlbnQ6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgIG1vdW50OiB7IG1vdW50cG9pbnQ6IFwiZmFrZVwiIH0sXG4gICAgICAgICAgICAgICAgICAgIG5vZGVfb3BzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgcmVhZGxpbms6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0cmVhbS5wYXRoO1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgIHJldC5wYXJlbnQgPSByZXQ7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gcmV0O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgcmV0dXJuIG5vZGU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICB7fSxcbiAgICAgICAgICBcIi9wcm9jL3NlbGYvZmRcIlxuICAgICAgICApO1xuICAgICAgfSxcbiAgICAgIGNyZWF0ZVN0YW5kYXJkU3RyZWFtczogZnVuY3Rpb24oKSB7XG4gICAgICAgIGlmIChNb2R1bGVbXCJzdGRpblwiXSkge1xuICAgICAgICAgIEZTLmNyZWF0ZURldmljZShcIi9kZXZcIiwgXCJzdGRpblwiLCBNb2R1bGVbXCJzdGRpblwiXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgRlMuc3ltbGluayhcIi9kZXYvdHR5XCIsIFwiL2Rldi9zdGRpblwiKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoTW9kdWxlW1wic3Rkb3V0XCJdKSB7XG4gICAgICAgICAgRlMuY3JlYXRlRGV2aWNlKFwiL2RldlwiLCBcInN0ZG91dFwiLCBudWxsLCBNb2R1bGVbXCJzdGRvdXRcIl0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIEZTLnN5bWxpbmsoXCIvZGV2L3R0eVwiLCBcIi9kZXYvc3Rkb3V0XCIpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChNb2R1bGVbXCJzdGRlcnJcIl0pIHtcbiAgICAgICAgICBGUy5jcmVhdGVEZXZpY2UoXCIvZGV2XCIsIFwic3RkZXJyXCIsIG51bGwsIE1vZHVsZVtcInN0ZGVyclwiXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgRlMuc3ltbGluayhcIi9kZXYvdHR5MVwiLCBcIi9kZXYvc3RkZXJyXCIpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBzdGRpbiA9IEZTLm9wZW4oXCIvZGV2L3N0ZGluXCIsIDApO1xuICAgICAgICB2YXIgc3Rkb3V0ID0gRlMub3BlbihcIi9kZXYvc3Rkb3V0XCIsIDEpO1xuICAgICAgICB2YXIgc3RkZXJyID0gRlMub3BlbihcIi9kZXYvc3RkZXJyXCIsIDEpO1xuICAgICAgfSxcbiAgICAgIGVuc3VyZUVycm5vRXJyb3I6IGZ1bmN0aW9uKCkge1xuICAgICAgICBpZiAoRlMuRXJybm9FcnJvcikgcmV0dXJuO1xuICAgICAgICBGUy5FcnJub0Vycm9yID0gZnVuY3Rpb24gRXJybm9FcnJvcihlcnJubywgbm9kZSkge1xuICAgICAgICAgIHRoaXMubm9kZSA9IG5vZGU7XG4gICAgICAgICAgdGhpcy5zZXRFcnJubyA9IGZ1bmN0aW9uKGVycm5vKSB7XG4gICAgICAgICAgICB0aGlzLmVycm5vID0gZXJybm87XG4gICAgICAgICAgfTtcbiAgICAgICAgICB0aGlzLnNldEVycm5vKGVycm5vKTtcbiAgICAgICAgICB0aGlzLm1lc3NhZ2UgPSBcIkZTIGVycm9yXCI7XG4gICAgICAgIH07XG4gICAgICAgIEZTLkVycm5vRXJyb3IucHJvdG90eXBlID0gbmV3IEVycm9yKCk7XG4gICAgICAgIEZTLkVycm5vRXJyb3IucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gRlMuRXJybm9FcnJvcjtcbiAgICAgICAgWzQ0XS5mb3JFYWNoKGZ1bmN0aW9uKGNvZGUpIHtcbiAgICAgICAgICBGUy5nZW5lcmljRXJyb3JzW2NvZGVdID0gbmV3IEZTLkVycm5vRXJyb3IoY29kZSk7XG4gICAgICAgICAgRlMuZ2VuZXJpY0Vycm9yc1tjb2RlXS5zdGFjayA9IFwiPGdlbmVyaWMgZXJyb3IsIG5vIHN0YWNrPlwiO1xuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgICBzdGF0aWNJbml0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgRlMuZW5zdXJlRXJybm9FcnJvcigpO1xuICAgICAgICBGUy5uYW1lVGFibGUgPSBuZXcgQXJyYXkoNDA5Nik7XG4gICAgICAgIEZTLm1vdW50KE1FTUZTLCB7fSwgXCIvXCIpO1xuICAgICAgICBGUy5jcmVhdGVEZWZhdWx0RGlyZWN0b3JpZXMoKTtcbiAgICAgICAgRlMuY3JlYXRlRGVmYXVsdERldmljZXMoKTtcbiAgICAgICAgRlMuY3JlYXRlU3BlY2lhbERpcmVjdG9yaWVzKCk7XG4gICAgICAgIEZTLmZpbGVzeXN0ZW1zID0geyBNRU1GUzogTUVNRlMsIE5PREVGUzogTk9ERUZTIH07XG4gICAgICB9LFxuICAgICAgaW5pdDogZnVuY3Rpb24oaW5wdXQsIG91dHB1dCwgZXJyb3IpIHtcbiAgICAgICAgRlMuaW5pdC5pbml0aWFsaXplZCA9IHRydWU7XG4gICAgICAgIEZTLmVuc3VyZUVycm5vRXJyb3IoKTtcbiAgICAgICAgTW9kdWxlW1wic3RkaW5cIl0gPSBpbnB1dCB8fCBNb2R1bGVbXCJzdGRpblwiXTtcbiAgICAgICAgTW9kdWxlW1wic3Rkb3V0XCJdID0gb3V0cHV0IHx8IE1vZHVsZVtcInN0ZG91dFwiXTtcbiAgICAgICAgTW9kdWxlW1wic3RkZXJyXCJdID0gZXJyb3IgfHwgTW9kdWxlW1wic3RkZXJyXCJdO1xuICAgICAgICBGUy5jcmVhdGVTdGFuZGFyZFN0cmVhbXMoKTtcbiAgICAgIH0sXG4gICAgICBxdWl0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgRlMuaW5pdC5pbml0aWFsaXplZCA9IGZhbHNlO1xuICAgICAgICB2YXIgZmZsdXNoID0gTW9kdWxlW1wiX2ZmbHVzaFwiXTtcbiAgICAgICAgaWYgKGZmbHVzaCkgZmZsdXNoKDApO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IEZTLnN0cmVhbXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICB2YXIgc3RyZWFtID0gRlMuc3RyZWFtc1tpXTtcbiAgICAgICAgICBpZiAoIXN0cmVhbSkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIEZTLmNsb3NlKHN0cmVhbSk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBnZXRNb2RlOiBmdW5jdGlvbihjYW5SZWFkLCBjYW5Xcml0ZSkge1xuICAgICAgICB2YXIgbW9kZSA9IDA7XG4gICAgICAgIGlmIChjYW5SZWFkKSBtb2RlIHw9IDI5MiB8IDczO1xuICAgICAgICBpZiAoY2FuV3JpdGUpIG1vZGUgfD0gMTQ2O1xuICAgICAgICByZXR1cm4gbW9kZTtcbiAgICAgIH0sXG4gICAgICBmaW5kT2JqZWN0OiBmdW5jdGlvbihwYXRoLCBkb250UmVzb2x2ZUxhc3RMaW5rKSB7XG4gICAgICAgIHZhciByZXQgPSBGUy5hbmFseXplUGF0aChwYXRoLCBkb250UmVzb2x2ZUxhc3RMaW5rKTtcbiAgICAgICAgaWYgKHJldC5leGlzdHMpIHtcbiAgICAgICAgICByZXR1cm4gcmV0Lm9iamVjdDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGFuYWx5emVQYXRoOiBmdW5jdGlvbihwYXRoLCBkb250UmVzb2x2ZUxhc3RMaW5rKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgdmFyIGxvb2t1cCA9IEZTLmxvb2t1cFBhdGgocGF0aCwgeyBmb2xsb3c6ICFkb250UmVzb2x2ZUxhc3RMaW5rIH0pO1xuICAgICAgICAgIHBhdGggPSBsb29rdXAucGF0aDtcbiAgICAgICAgfSBjYXRjaCAoZSkge31cbiAgICAgICAgdmFyIHJldCA9IHtcbiAgICAgICAgICBpc1Jvb3Q6IGZhbHNlLFxuICAgICAgICAgIGV4aXN0czogZmFsc2UsXG4gICAgICAgICAgZXJyb3I6IDAsXG4gICAgICAgICAgbmFtZTogbnVsbCxcbiAgICAgICAgICBwYXRoOiBudWxsLFxuICAgICAgICAgIG9iamVjdDogbnVsbCxcbiAgICAgICAgICBwYXJlbnRFeGlzdHM6IGZhbHNlLFxuICAgICAgICAgIHBhcmVudFBhdGg6IG51bGwsXG4gICAgICAgICAgcGFyZW50T2JqZWN0OiBudWxsXG4gICAgICAgIH07XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgdmFyIGxvb2t1cCA9IEZTLmxvb2t1cFBhdGgocGF0aCwgeyBwYXJlbnQ6IHRydWUgfSk7XG4gICAgICAgICAgcmV0LnBhcmVudEV4aXN0cyA9IHRydWU7XG4gICAgICAgICAgcmV0LnBhcmVudFBhdGggPSBsb29rdXAucGF0aDtcbiAgICAgICAgICByZXQucGFyZW50T2JqZWN0ID0gbG9va3VwLm5vZGU7XG4gICAgICAgICAgcmV0Lm5hbWUgPSBQQVRILmJhc2VuYW1lKHBhdGgpO1xuICAgICAgICAgIGxvb2t1cCA9IEZTLmxvb2t1cFBhdGgocGF0aCwgeyBmb2xsb3c6ICFkb250UmVzb2x2ZUxhc3RMaW5rIH0pO1xuICAgICAgICAgIHJldC5leGlzdHMgPSB0cnVlO1xuICAgICAgICAgIHJldC5wYXRoID0gbG9va3VwLnBhdGg7XG4gICAgICAgICAgcmV0Lm9iamVjdCA9IGxvb2t1cC5ub2RlO1xuICAgICAgICAgIHJldC5uYW1lID0gbG9va3VwLm5vZGUubmFtZTtcbiAgICAgICAgICByZXQuaXNSb290ID0gbG9va3VwLnBhdGggPT09IFwiL1wiO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgcmV0LmVycm9yID0gZS5lcnJubztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmV0O1xuICAgICAgfSxcbiAgICAgIGNyZWF0ZVBhdGg6IGZ1bmN0aW9uKHBhcmVudCwgcGF0aCwgY2FuUmVhZCwgY2FuV3JpdGUpIHtcbiAgICAgICAgcGFyZW50ID0gdHlwZW9mIHBhcmVudCA9PT0gXCJzdHJpbmdcIiA/IHBhcmVudCA6IEZTLmdldFBhdGgocGFyZW50KTtcbiAgICAgICAgdmFyIHBhcnRzID0gcGF0aC5zcGxpdChcIi9cIikucmV2ZXJzZSgpO1xuICAgICAgICB3aGlsZSAocGFydHMubGVuZ3RoKSB7XG4gICAgICAgICAgdmFyIHBhcnQgPSBwYXJ0cy5wb3AoKTtcbiAgICAgICAgICBpZiAoIXBhcnQpIGNvbnRpbnVlO1xuICAgICAgICAgIHZhciBjdXJyZW50ID0gUEFUSC5qb2luMihwYXJlbnQsIHBhcnQpO1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBGUy5ta2RpcihjdXJyZW50KTtcbiAgICAgICAgICB9IGNhdGNoIChlKSB7fVxuICAgICAgICAgIHBhcmVudCA9IGN1cnJlbnQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGN1cnJlbnQ7XG4gICAgICB9LFxuICAgICAgY3JlYXRlRmlsZTogZnVuY3Rpb24ocGFyZW50LCBuYW1lLCBwcm9wZXJ0aWVzLCBjYW5SZWFkLCBjYW5Xcml0ZSkge1xuICAgICAgICB2YXIgcGF0aCA9IFBBVEguam9pbjIoXG4gICAgICAgICAgdHlwZW9mIHBhcmVudCA9PT0gXCJzdHJpbmdcIiA/IHBhcmVudCA6IEZTLmdldFBhdGgocGFyZW50KSxcbiAgICAgICAgICBuYW1lXG4gICAgICAgICk7XG4gICAgICAgIHZhciBtb2RlID0gRlMuZ2V0TW9kZShjYW5SZWFkLCBjYW5Xcml0ZSk7XG4gICAgICAgIHJldHVybiBGUy5jcmVhdGUocGF0aCwgbW9kZSk7XG4gICAgICB9LFxuICAgICAgY3JlYXRlRGF0YUZpbGU6IGZ1bmN0aW9uKHBhcmVudCwgbmFtZSwgZGF0YSwgY2FuUmVhZCwgY2FuV3JpdGUsIGNhbk93bikge1xuICAgICAgICB2YXIgcGF0aCA9IG5hbWVcbiAgICAgICAgICA/IFBBVEguam9pbjIoXG4gICAgICAgICAgICAgIHR5cGVvZiBwYXJlbnQgPT09IFwic3RyaW5nXCIgPyBwYXJlbnQgOiBGUy5nZXRQYXRoKHBhcmVudCksXG4gICAgICAgICAgICAgIG5hbWVcbiAgICAgICAgICAgIClcbiAgICAgICAgICA6IHBhcmVudDtcbiAgICAgICAgdmFyIG1vZGUgPSBGUy5nZXRNb2RlKGNhblJlYWQsIGNhbldyaXRlKTtcbiAgICAgICAgdmFyIG5vZGUgPSBGUy5jcmVhdGUocGF0aCwgbW9kZSk7XG4gICAgICAgIGlmIChkYXRhKSB7XG4gICAgICAgICAgaWYgKHR5cGVvZiBkYXRhID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICB2YXIgYXJyID0gbmV3IEFycmF5KGRhdGEubGVuZ3RoKTtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwLCBsZW4gPSBkYXRhLmxlbmd0aDsgaSA8IGxlbjsgKytpKVxuICAgICAgICAgICAgICBhcnJbaV0gPSBkYXRhLmNoYXJDb2RlQXQoaSk7XG4gICAgICAgICAgICBkYXRhID0gYXJyO1xuICAgICAgICAgIH1cbiAgICAgICAgICBGUy5jaG1vZChub2RlLCBtb2RlIHwgMTQ2KTtcbiAgICAgICAgICB2YXIgc3RyZWFtID0gRlMub3Blbihub2RlLCA1NzcpO1xuICAgICAgICAgIEZTLndyaXRlKHN0cmVhbSwgZGF0YSwgMCwgZGF0YS5sZW5ndGgsIDAsIGNhbk93bik7XG4gICAgICAgICAgRlMuY2xvc2Uoc3RyZWFtKTtcbiAgICAgICAgICBGUy5jaG1vZChub2RlLCBtb2RlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbm9kZTtcbiAgICAgIH0sXG4gICAgICBjcmVhdGVEZXZpY2U6IGZ1bmN0aW9uKHBhcmVudCwgbmFtZSwgaW5wdXQsIG91dHB1dCkge1xuICAgICAgICB2YXIgcGF0aCA9IFBBVEguam9pbjIoXG4gICAgICAgICAgdHlwZW9mIHBhcmVudCA9PT0gXCJzdHJpbmdcIiA/IHBhcmVudCA6IEZTLmdldFBhdGgocGFyZW50KSxcbiAgICAgICAgICBuYW1lXG4gICAgICAgICk7XG4gICAgICAgIHZhciBtb2RlID0gRlMuZ2V0TW9kZSghIWlucHV0LCAhIW91dHB1dCk7XG4gICAgICAgIGlmICghRlMuY3JlYXRlRGV2aWNlLm1ham9yKSBGUy5jcmVhdGVEZXZpY2UubWFqb3IgPSA2NDtcbiAgICAgICAgdmFyIGRldiA9IEZTLm1ha2VkZXYoRlMuY3JlYXRlRGV2aWNlLm1ham9yKyssIDApO1xuICAgICAgICBGUy5yZWdpc3RlckRldmljZShkZXYsIHtcbiAgICAgICAgICBvcGVuOiBmdW5jdGlvbihzdHJlYW0pIHtcbiAgICAgICAgICAgIHN0cmVhbS5zZWVrYWJsZSA9IGZhbHNlO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgY2xvc2U6IGZ1bmN0aW9uKHN0cmVhbSkge1xuICAgICAgICAgICAgaWYgKG91dHB1dCAmJiBvdXRwdXQuYnVmZmVyICYmIG91dHB1dC5idWZmZXIubGVuZ3RoKSB7XG4gICAgICAgICAgICAgIG91dHB1dCgxMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICByZWFkOiBmdW5jdGlvbihzdHJlYW0sIGJ1ZmZlciwgb2Zmc2V0LCBsZW5ndGgsIHBvcykge1xuICAgICAgICAgICAgdmFyIGJ5dGVzUmVhZCA9IDA7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgIHZhciByZXN1bHQ7XG4gICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gaW5wdXQoKTtcbiAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKDI5KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAocmVzdWx0ID09PSB1bmRlZmluZWQgJiYgYnl0ZXNSZWFkID09PSAwKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoNik7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKHJlc3VsdCA9PT0gbnVsbCB8fCByZXN1bHQgPT09IHVuZGVmaW5lZCkgYnJlYWs7XG4gICAgICAgICAgICAgIGJ5dGVzUmVhZCsrO1xuICAgICAgICAgICAgICBidWZmZXJbb2Zmc2V0ICsgaV0gPSByZXN1bHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoYnl0ZXNSZWFkKSB7XG4gICAgICAgICAgICAgIHN0cmVhbS5ub2RlLnRpbWVzdGFtcCA9IERhdGUubm93KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gYnl0ZXNSZWFkO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKHN0cmVhbSwgYnVmZmVyLCBvZmZzZXQsIGxlbmd0aCwgcG9zKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgb3V0cHV0KGJ1ZmZlcltvZmZzZXQgKyBpXSk7XG4gICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcigyOSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChsZW5ndGgpIHtcbiAgICAgICAgICAgICAgc3RyZWFtLm5vZGUudGltZXN0YW1wID0gRGF0ZS5ub3coKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBGUy5ta2RldihwYXRoLCBtb2RlLCBkZXYpO1xuICAgICAgfSxcbiAgICAgIGZvcmNlTG9hZEZpbGU6IGZ1bmN0aW9uKG9iaikge1xuICAgICAgICBpZiAob2JqLmlzRGV2aWNlIHx8IG9iai5pc0ZvbGRlciB8fCBvYmoubGluayB8fCBvYmouY29udGVudHMpXG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIGlmICh0eXBlb2YgWE1MSHR0cFJlcXVlc3QgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICBcIkxhenkgbG9hZGluZyBzaG91bGQgaGF2ZSBiZWVuIHBlcmZvcm1lZCAoY29udGVudHMgc2V0KSBpbiBjcmVhdGVMYXp5RmlsZSwgYnV0IGl0IHdhcyBub3QuIExhenkgbG9hZGluZyBvbmx5IHdvcmtzIGluIHdlYiB3b3JrZXJzLiBVc2UgLS1lbWJlZC1maWxlIG9yIC0tcHJlbG9hZC1maWxlIGluIGVtY2Mgb24gdGhlIG1haW4gdGhyZWFkLlwiXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIGlmIChyZWFkXykge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBvYmouY29udGVudHMgPSBpbnRBcnJheUZyb21TdHJpbmcocmVhZF8ob2JqLnVybCksIHRydWUpO1xuICAgICAgICAgICAgb2JqLnVzZWRCeXRlcyA9IG9iai5jb250ZW50cy5sZW5ndGg7XG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoMjkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3QgbG9hZCB3aXRob3V0IHJlYWQoKSBvciBYTUxIdHRwUmVxdWVzdC5cIik7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBjcmVhdGVMYXp5RmlsZTogZnVuY3Rpb24ocGFyZW50LCBuYW1lLCB1cmwsIGNhblJlYWQsIGNhbldyaXRlKSB7XG4gICAgICAgIGZ1bmN0aW9uIExhenlVaW50OEFycmF5KCkge1xuICAgICAgICAgIHRoaXMubGVuZ3RoS25vd24gPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLmNodW5rcyA9IFtdO1xuICAgICAgICB9XG4gICAgICAgIExhenlVaW50OEFycmF5LnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbiBMYXp5VWludDhBcnJheV9nZXQoaWR4KSB7XG4gICAgICAgICAgaWYgKGlkeCA+IHRoaXMubGVuZ3RoIC0gMSB8fCBpZHggPCAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgIH1cbiAgICAgICAgICB2YXIgY2h1bmtPZmZzZXQgPSBpZHggJSB0aGlzLmNodW5rU2l6ZTtcbiAgICAgICAgICB2YXIgY2h1bmtOdW0gPSAoaWR4IC8gdGhpcy5jaHVua1NpemUpIHwgMDtcbiAgICAgICAgICByZXR1cm4gdGhpcy5nZXR0ZXIoY2h1bmtOdW0pW2NodW5rT2Zmc2V0XTtcbiAgICAgICAgfTtcbiAgICAgICAgTGF6eVVpbnQ4QXJyYXkucHJvdG90eXBlLnNldERhdGFHZXR0ZXIgPSBmdW5jdGlvbiBMYXp5VWludDhBcnJheV9zZXREYXRhR2V0dGVyKFxuICAgICAgICAgIGdldHRlclxuICAgICAgICApIHtcbiAgICAgICAgICB0aGlzLmdldHRlciA9IGdldHRlcjtcbiAgICAgICAgfTtcbiAgICAgICAgTGF6eVVpbnQ4QXJyYXkucHJvdG90eXBlLmNhY2hlTGVuZ3RoID0gZnVuY3Rpb24gTGF6eVVpbnQ4QXJyYXlfY2FjaGVMZW5ndGgoKSB7XG4gICAgICAgICAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xuICAgICAgICAgIHhoci5vcGVuKFwiSEVBRFwiLCB1cmwsIGZhbHNlKTtcbiAgICAgICAgICB4aHIuc2VuZChudWxsKTtcbiAgICAgICAgICBpZiAoISgoeGhyLnN0YXR1cyA+PSAyMDAgJiYgeGhyLnN0YXR1cyA8IDMwMCkgfHwgeGhyLnN0YXR1cyA9PT0gMzA0KSlcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkNvdWxkbid0IGxvYWQgXCIgKyB1cmwgKyBcIi4gU3RhdHVzOiBcIiArIHhoci5zdGF0dXMpO1xuICAgICAgICAgIHZhciBkYXRhbGVuZ3RoID0gTnVtYmVyKHhoci5nZXRSZXNwb25zZUhlYWRlcihcIkNvbnRlbnQtbGVuZ3RoXCIpKTtcbiAgICAgICAgICB2YXIgaGVhZGVyO1xuICAgICAgICAgIHZhciBoYXNCeXRlU2VydmluZyA9XG4gICAgICAgICAgICAoaGVhZGVyID0geGhyLmdldFJlc3BvbnNlSGVhZGVyKFwiQWNjZXB0LVJhbmdlc1wiKSkgJiZcbiAgICAgICAgICAgIGhlYWRlciA9PT0gXCJieXRlc1wiO1xuICAgICAgICAgIHZhciB1c2VzR3ppcCA9XG4gICAgICAgICAgICAoaGVhZGVyID0geGhyLmdldFJlc3BvbnNlSGVhZGVyKFwiQ29udGVudC1FbmNvZGluZ1wiKSkgJiZcbiAgICAgICAgICAgIGhlYWRlciA9PT0gXCJnemlwXCI7XG4gICAgICAgICAgdmFyIGNodW5rU2l6ZSA9IDEwMjQgKiAxMDI0O1xuICAgICAgICAgIGlmICghaGFzQnl0ZVNlcnZpbmcpIGNodW5rU2l6ZSA9IGRhdGFsZW5ndGg7XG4gICAgICAgICAgdmFyIGRvWEhSID0gZnVuY3Rpb24oZnJvbSwgdG8pIHtcbiAgICAgICAgICAgIGlmIChmcm9tID4gdG8pXG4gICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgICBcImludmFsaWQgcmFuZ2UgKFwiICtcbiAgICAgICAgICAgICAgICAgIGZyb20gK1xuICAgICAgICAgICAgICAgICAgXCIsIFwiICtcbiAgICAgICAgICAgICAgICAgIHRvICtcbiAgICAgICAgICAgICAgICAgIFwiKSBvciBubyBieXRlcyByZXF1ZXN0ZWQhXCJcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmICh0byA+IGRhdGFsZW5ndGggLSAxKVxuICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgICAgXCJvbmx5IFwiICsgZGF0YWxlbmd0aCArIFwiIGJ5dGVzIGF2YWlsYWJsZSEgcHJvZ3JhbW1lciBlcnJvciFcIlxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xuICAgICAgICAgICAgeGhyLm9wZW4oXCJHRVRcIiwgdXJsLCBmYWxzZSk7XG4gICAgICAgICAgICBpZiAoZGF0YWxlbmd0aCAhPT0gY2h1bmtTaXplKVxuICAgICAgICAgICAgICB4aHIuc2V0UmVxdWVzdEhlYWRlcihcIlJhbmdlXCIsIFwiYnl0ZXM9XCIgKyBmcm9tICsgXCItXCIgKyB0byk7XG4gICAgICAgICAgICBpZiAodHlwZW9mIFVpbnQ4QXJyYXkgIT0gXCJ1bmRlZmluZWRcIilcbiAgICAgICAgICAgICAgeGhyLnJlc3BvbnNlVHlwZSA9IFwiYXJyYXlidWZmZXJcIjtcbiAgICAgICAgICAgIGlmICh4aHIub3ZlcnJpZGVNaW1lVHlwZSkge1xuICAgICAgICAgICAgICB4aHIub3ZlcnJpZGVNaW1lVHlwZShcInRleHQvcGxhaW47IGNoYXJzZXQ9eC11c2VyLWRlZmluZWRcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB4aHIuc2VuZChudWxsKTtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgISgoeGhyLnN0YXR1cyA+PSAyMDAgJiYgeGhyLnN0YXR1cyA8IDMwMCkgfHwgeGhyLnN0YXR1cyA9PT0gMzA0KVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgICAgXCJDb3VsZG4ndCBsb2FkIFwiICsgdXJsICsgXCIuIFN0YXR1czogXCIgKyB4aHIuc3RhdHVzXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpZiAoeGhyLnJlc3BvbnNlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIG5ldyBVaW50OEFycmF5KHhoci5yZXNwb25zZSB8fCBbXSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXR1cm4gaW50QXJyYXlGcm9tU3RyaW5nKHhoci5yZXNwb25zZVRleHQgfHwgXCJcIiwgdHJ1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfTtcbiAgICAgICAgICB2YXIgbGF6eUFycmF5ID0gdGhpcztcbiAgICAgICAgICBsYXp5QXJyYXkuc2V0RGF0YUdldHRlcihmdW5jdGlvbihjaHVua051bSkge1xuICAgICAgICAgICAgdmFyIHN0YXJ0ID0gY2h1bmtOdW0gKiBjaHVua1NpemU7XG4gICAgICAgICAgICB2YXIgZW5kID0gKGNodW5rTnVtICsgMSkgKiBjaHVua1NpemUgLSAxO1xuICAgICAgICAgICAgZW5kID0gTWF0aC5taW4oZW5kLCBkYXRhbGVuZ3RoIC0gMSk7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGxhenlBcnJheS5jaHVua3NbY2h1bmtOdW1dID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgICAgICAgIGxhenlBcnJheS5jaHVua3NbY2h1bmtOdW1dID0gZG9YSFIoc3RhcnQsIGVuZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodHlwZW9mIGxhenlBcnJheS5jaHVua3NbY2h1bmtOdW1dID09PSBcInVuZGVmaW5lZFwiKVxuICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJkb1hIUiBmYWlsZWQhXCIpO1xuICAgICAgICAgICAgcmV0dXJuIGxhenlBcnJheS5jaHVua3NbY2h1bmtOdW1dO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGlmICh1c2VzR3ppcCB8fCAhZGF0YWxlbmd0aCkge1xuICAgICAgICAgICAgY2h1bmtTaXplID0gZGF0YWxlbmd0aCA9IDE7XG4gICAgICAgICAgICBkYXRhbGVuZ3RoID0gdGhpcy5nZXR0ZXIoMCkubGVuZ3RoO1xuICAgICAgICAgICAgY2h1bmtTaXplID0gZGF0YWxlbmd0aDtcbiAgICAgICAgICAgIG91dChcbiAgICAgICAgICAgICAgXCJMYXp5RmlsZXMgb24gZ3ppcCBmb3JjZXMgZG93bmxvYWQgb2YgdGhlIHdob2xlIGZpbGUgd2hlbiBsZW5ndGggaXMgYWNjZXNzZWRcIlxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5fbGVuZ3RoID0gZGF0YWxlbmd0aDtcbiAgICAgICAgICB0aGlzLl9jaHVua1NpemUgPSBjaHVua1NpemU7XG4gICAgICAgICAgdGhpcy5sZW5ndGhLbm93biA9IHRydWU7XG4gICAgICAgIH07XG4gICAgICAgIGlmICh0eXBlb2YgWE1MSHR0cFJlcXVlc3QgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICBpZiAoIUVOVklST05NRU5UX0lTX1dPUktFUilcbiAgICAgICAgICAgIHRocm93IFwiQ2Fubm90IGRvIHN5bmNocm9ub3VzIGJpbmFyeSBYSFJzIG91dHNpZGUgd2Vid29ya2VycyBpbiBtb2Rlcm4gYnJvd3NlcnMuIFVzZSAtLWVtYmVkLWZpbGUgb3IgLS1wcmVsb2FkLWZpbGUgaW4gZW1jY1wiO1xuICAgICAgICAgIHZhciBsYXp5QXJyYXkgPSBuZXcgTGF6eVVpbnQ4QXJyYXkoKTtcbiAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhsYXp5QXJyYXksIHtcbiAgICAgICAgICAgIGxlbmd0aDoge1xuICAgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5sZW5ndGhLbm93bikge1xuICAgICAgICAgICAgICAgICAgdGhpcy5jYWNoZUxlbmd0aCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fbGVuZ3RoO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY2h1bmtTaXplOiB7XG4gICAgICAgICAgICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmxlbmd0aEtub3duKSB7XG4gICAgICAgICAgICAgICAgICB0aGlzLmNhY2hlTGVuZ3RoKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9jaHVua1NpemU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgICB2YXIgcHJvcGVydGllcyA9IHsgaXNEZXZpY2U6IGZhbHNlLCBjb250ZW50czogbGF6eUFycmF5IH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdmFyIHByb3BlcnRpZXMgPSB7IGlzRGV2aWNlOiBmYWxzZSwgdXJsOiB1cmwgfTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgbm9kZSA9IEZTLmNyZWF0ZUZpbGUocGFyZW50LCBuYW1lLCBwcm9wZXJ0aWVzLCBjYW5SZWFkLCBjYW5Xcml0ZSk7XG4gICAgICAgIGlmIChwcm9wZXJ0aWVzLmNvbnRlbnRzKSB7XG4gICAgICAgICAgbm9kZS5jb250ZW50cyA9IHByb3BlcnRpZXMuY29udGVudHM7XG4gICAgICAgIH0gZWxzZSBpZiAocHJvcGVydGllcy51cmwpIHtcbiAgICAgICAgICBub2RlLmNvbnRlbnRzID0gbnVsbDtcbiAgICAgICAgICBub2RlLnVybCA9IHByb3BlcnRpZXMudXJsO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKG5vZGUsIHtcbiAgICAgICAgICB1c2VkQnl0ZXM6IHtcbiAgICAgICAgICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbnRlbnRzLmxlbmd0aDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgc3RyZWFtX29wcyA9IHt9O1xuICAgICAgICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKG5vZGUuc3RyZWFtX29wcyk7XG4gICAgICAgIGtleXMuZm9yRWFjaChmdW5jdGlvbihrZXkpIHtcbiAgICAgICAgICB2YXIgZm4gPSBub2RlLnN0cmVhbV9vcHNba2V5XTtcbiAgICAgICAgICBzdHJlYW1fb3BzW2tleV0gPSBmdW5jdGlvbiBmb3JjZUxvYWRMYXp5RmlsZSgpIHtcbiAgICAgICAgICAgIEZTLmZvcmNlTG9hZEZpbGUobm9kZSk7XG4gICAgICAgICAgICByZXR1cm4gZm4uYXBwbHkobnVsbCwgYXJndW1lbnRzKTtcbiAgICAgICAgICB9O1xuICAgICAgICB9KTtcbiAgICAgICAgc3RyZWFtX29wcy5yZWFkID0gZnVuY3Rpb24gc3RyZWFtX29wc19yZWFkKFxuICAgICAgICAgIHN0cmVhbSxcbiAgICAgICAgICBidWZmZXIsXG4gICAgICAgICAgb2Zmc2V0LFxuICAgICAgICAgIGxlbmd0aCxcbiAgICAgICAgICBwb3NpdGlvblxuICAgICAgICApIHtcbiAgICAgICAgICBGUy5mb3JjZUxvYWRGaWxlKG5vZGUpO1xuICAgICAgICAgIHZhciBjb250ZW50cyA9IHN0cmVhbS5ub2RlLmNvbnRlbnRzO1xuICAgICAgICAgIGlmIChwb3NpdGlvbiA+PSBjb250ZW50cy5sZW5ndGgpIHJldHVybiAwO1xuICAgICAgICAgIHZhciBzaXplID0gTWF0aC5taW4oY29udGVudHMubGVuZ3RoIC0gcG9zaXRpb24sIGxlbmd0aCk7XG4gICAgICAgICAgaWYgKGNvbnRlbnRzLnNsaWNlKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKykge1xuICAgICAgICAgICAgICBidWZmZXJbb2Zmc2V0ICsgaV0gPSBjb250ZW50c1twb3NpdGlvbiArIGldO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKykge1xuICAgICAgICAgICAgICBidWZmZXJbb2Zmc2V0ICsgaV0gPSBjb250ZW50cy5nZXQocG9zaXRpb24gKyBpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHNpemU7XG4gICAgICAgIH07XG4gICAgICAgIG5vZGUuc3RyZWFtX29wcyA9IHN0cmVhbV9vcHM7XG4gICAgICAgIHJldHVybiBub2RlO1xuICAgICAgfSxcbiAgICAgIGNyZWF0ZVByZWxvYWRlZEZpbGU6IGZ1bmN0aW9uKFxuICAgICAgICBwYXJlbnQsXG4gICAgICAgIG5hbWUsXG4gICAgICAgIHVybCxcbiAgICAgICAgY2FuUmVhZCxcbiAgICAgICAgY2FuV3JpdGUsXG4gICAgICAgIG9ubG9hZCxcbiAgICAgICAgb25lcnJvcixcbiAgICAgICAgZG9udENyZWF0ZUZpbGUsXG4gICAgICAgIGNhbk93bixcbiAgICAgICAgcHJlRmluaXNoXG4gICAgICApIHtcbiAgICAgICAgQnJvd3Nlci5pbml0KCk7XG4gICAgICAgIHZhciBmdWxsbmFtZSA9IG5hbWVcbiAgICAgICAgICA/IFBBVEhfRlMucmVzb2x2ZShQQVRILmpvaW4yKHBhcmVudCwgbmFtZSkpXG4gICAgICAgICAgOiBwYXJlbnQ7XG4gICAgICAgIHZhciBkZXAgPSBnZXRVbmlxdWVSdW5EZXBlbmRlbmN5KFwiY3AgXCIgKyBmdWxsbmFtZSk7XG4gICAgICAgIGZ1bmN0aW9uIHByb2Nlc3NEYXRhKGJ5dGVBcnJheSkge1xuICAgICAgICAgIGZ1bmN0aW9uIGZpbmlzaChieXRlQXJyYXkpIHtcbiAgICAgICAgICAgIGlmIChwcmVGaW5pc2gpIHByZUZpbmlzaCgpO1xuICAgICAgICAgICAgaWYgKCFkb250Q3JlYXRlRmlsZSkge1xuICAgICAgICAgICAgICBGUy5jcmVhdGVEYXRhRmlsZShcbiAgICAgICAgICAgICAgICBwYXJlbnQsXG4gICAgICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgICAgICBieXRlQXJyYXksXG4gICAgICAgICAgICAgICAgY2FuUmVhZCxcbiAgICAgICAgICAgICAgICBjYW5Xcml0ZSxcbiAgICAgICAgICAgICAgICBjYW5Pd25cbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChvbmxvYWQpIG9ubG9hZCgpO1xuICAgICAgICAgICAgcmVtb3ZlUnVuRGVwZW5kZW5jeShkZXApO1xuICAgICAgICAgIH1cbiAgICAgICAgICB2YXIgaGFuZGxlZCA9IGZhbHNlO1xuICAgICAgICAgIE1vZHVsZVtcInByZWxvYWRQbHVnaW5zXCJdLmZvckVhY2goZnVuY3Rpb24ocGx1Z2luKSB7XG4gICAgICAgICAgICBpZiAoaGFuZGxlZCkgcmV0dXJuO1xuICAgICAgICAgICAgaWYgKHBsdWdpbltcImNhbkhhbmRsZVwiXShmdWxsbmFtZSkpIHtcbiAgICAgICAgICAgICAgcGx1Z2luW1wiaGFuZGxlXCJdKGJ5dGVBcnJheSwgZnVsbG5hbWUsIGZpbmlzaCwgZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgaWYgKG9uZXJyb3IpIG9uZXJyb3IoKTtcbiAgICAgICAgICAgICAgICByZW1vdmVSdW5EZXBlbmRlbmN5KGRlcCk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICBoYW5kbGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgICBpZiAoIWhhbmRsZWQpIGZpbmlzaChieXRlQXJyYXkpO1xuICAgICAgICB9XG4gICAgICAgIGFkZFJ1bkRlcGVuZGVuY3koZGVwKTtcbiAgICAgICAgaWYgKHR5cGVvZiB1cmwgPT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgIEJyb3dzZXIuYXN5bmNMb2FkKFxuICAgICAgICAgICAgdXJsLFxuICAgICAgICAgICAgZnVuY3Rpb24oYnl0ZUFycmF5KSB7XG4gICAgICAgICAgICAgIHByb2Nlc3NEYXRhKGJ5dGVBcnJheSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgb25lcnJvclxuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcHJvY2Vzc0RhdGEodXJsKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGluZGV4ZWREQjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgd2luZG93LmluZGV4ZWREQiB8fFxuICAgICAgICAgIHdpbmRvdy5tb3pJbmRleGVkREIgfHxcbiAgICAgICAgICB3aW5kb3cud2Via2l0SW5kZXhlZERCIHx8XG4gICAgICAgICAgd2luZG93Lm1zSW5kZXhlZERCXG4gICAgICAgICk7XG4gICAgICB9LFxuICAgICAgREJfTkFNRTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBcIkVNX0ZTX1wiICsgd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lO1xuICAgICAgfSxcbiAgICAgIERCX1ZFUlNJT046IDIwLFxuICAgICAgREJfU1RPUkVfTkFNRTogXCJGSUxFX0RBVEFcIixcbiAgICAgIHNhdmVGaWxlc1RvREI6IGZ1bmN0aW9uKHBhdGhzLCBvbmxvYWQsIG9uZXJyb3IpIHtcbiAgICAgICAgb25sb2FkID0gb25sb2FkIHx8IGZ1bmN0aW9uKCkge307XG4gICAgICAgIG9uZXJyb3IgPSBvbmVycm9yIHx8IGZ1bmN0aW9uKCkge307XG4gICAgICAgIHZhciBpbmRleGVkREIgPSBGUy5pbmRleGVkREIoKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICB2YXIgb3BlblJlcXVlc3QgPSBpbmRleGVkREIub3BlbihGUy5EQl9OQU1FKCksIEZTLkRCX1ZFUlNJT04pO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgcmV0dXJuIG9uZXJyb3IoZSk7XG4gICAgICAgIH1cbiAgICAgICAgb3BlblJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24gb3BlblJlcXVlc3Rfb251cGdyYWRlbmVlZGVkKCkge1xuICAgICAgICAgIG91dChcImNyZWF0aW5nIGRiXCIpO1xuICAgICAgICAgIHZhciBkYiA9IG9wZW5SZXF1ZXN0LnJlc3VsdDtcbiAgICAgICAgICBkYi5jcmVhdGVPYmplY3RTdG9yZShGUy5EQl9TVE9SRV9OQU1FKTtcbiAgICAgICAgfTtcbiAgICAgICAgb3BlblJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gb3BlblJlcXVlc3Rfb25zdWNjZXNzKCkge1xuICAgICAgICAgIHZhciBkYiA9IG9wZW5SZXF1ZXN0LnJlc3VsdDtcbiAgICAgICAgICB2YXIgdHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbihbRlMuREJfU1RPUkVfTkFNRV0sIFwicmVhZHdyaXRlXCIpO1xuICAgICAgICAgIHZhciBmaWxlcyA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKEZTLkRCX1NUT1JFX05BTUUpO1xuICAgICAgICAgIHZhciBvayA9IDAsXG4gICAgICAgICAgICBmYWlsID0gMCxcbiAgICAgICAgICAgIHRvdGFsID0gcGF0aHMubGVuZ3RoO1xuICAgICAgICAgIGZ1bmN0aW9uIGZpbmlzaCgpIHtcbiAgICAgICAgICAgIGlmIChmYWlsID09IDApIG9ubG9hZCgpO1xuICAgICAgICAgICAgZWxzZSBvbmVycm9yKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHBhdGhzLmZvckVhY2goZnVuY3Rpb24ocGF0aCkge1xuICAgICAgICAgICAgdmFyIHB1dFJlcXVlc3QgPSBmaWxlcy5wdXQoXG4gICAgICAgICAgICAgIEZTLmFuYWx5emVQYXRoKHBhdGgpLm9iamVjdC5jb250ZW50cyxcbiAgICAgICAgICAgICAgcGF0aFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHB1dFJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gcHV0UmVxdWVzdF9vbnN1Y2Nlc3MoKSB7XG4gICAgICAgICAgICAgIG9rKys7XG4gICAgICAgICAgICAgIGlmIChvayArIGZhaWwgPT0gdG90YWwpIGZpbmlzaCgpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHB1dFJlcXVlc3Qub25lcnJvciA9IGZ1bmN0aW9uIHB1dFJlcXVlc3Rfb25lcnJvcigpIHtcbiAgICAgICAgICAgICAgZmFpbCsrO1xuICAgICAgICAgICAgICBpZiAob2sgKyBmYWlsID09IHRvdGFsKSBmaW5pc2goKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdHJhbnNhY3Rpb24ub25lcnJvciA9IG9uZXJyb3I7XG4gICAgICAgIH07XG4gICAgICAgIG9wZW5SZXF1ZXN0Lm9uZXJyb3IgPSBvbmVycm9yO1xuICAgICAgfSxcbiAgICAgIGxvYWRGaWxlc0Zyb21EQjogZnVuY3Rpb24ocGF0aHMsIG9ubG9hZCwgb25lcnJvcikge1xuICAgICAgICBvbmxvYWQgPSBvbmxvYWQgfHwgZnVuY3Rpb24oKSB7fTtcbiAgICAgICAgb25lcnJvciA9IG9uZXJyb3IgfHwgZnVuY3Rpb24oKSB7fTtcbiAgICAgICAgdmFyIGluZGV4ZWREQiA9IEZTLmluZGV4ZWREQigpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHZhciBvcGVuUmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKEZTLkRCX05BTUUoKSwgRlMuREJfVkVSU0lPTik7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICByZXR1cm4gb25lcnJvcihlKTtcbiAgICAgICAgfVxuICAgICAgICBvcGVuUmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSBvbmVycm9yO1xuICAgICAgICBvcGVuUmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiBvcGVuUmVxdWVzdF9vbnN1Y2Nlc3MoKSB7XG4gICAgICAgICAgdmFyIGRiID0gb3BlblJlcXVlc3QucmVzdWx0O1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICB2YXIgdHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbihbRlMuREJfU1RPUkVfTkFNRV0sIFwicmVhZG9ubHlcIik7XG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgb25lcnJvcihlKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgdmFyIGZpbGVzID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoRlMuREJfU1RPUkVfTkFNRSk7XG4gICAgICAgICAgdmFyIG9rID0gMCxcbiAgICAgICAgICAgIGZhaWwgPSAwLFxuICAgICAgICAgICAgdG90YWwgPSBwYXRocy5sZW5ndGg7XG4gICAgICAgICAgZnVuY3Rpb24gZmluaXNoKCkge1xuICAgICAgICAgICAgaWYgKGZhaWwgPT0gMCkgb25sb2FkKCk7XG4gICAgICAgICAgICBlbHNlIG9uZXJyb3IoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcGF0aHMuZm9yRWFjaChmdW5jdGlvbihwYXRoKSB7XG4gICAgICAgICAgICB2YXIgZ2V0UmVxdWVzdCA9IGZpbGVzLmdldChwYXRoKTtcbiAgICAgICAgICAgIGdldFJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gZ2V0UmVxdWVzdF9vbnN1Y2Nlc3MoKSB7XG4gICAgICAgICAgICAgIGlmIChGUy5hbmFseXplUGF0aChwYXRoKS5leGlzdHMpIHtcbiAgICAgICAgICAgICAgICBGUy51bmxpbmsocGF0aCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgRlMuY3JlYXRlRGF0YUZpbGUoXG4gICAgICAgICAgICAgICAgUEFUSC5kaXJuYW1lKHBhdGgpLFxuICAgICAgICAgICAgICAgIFBBVEguYmFzZW5hbWUocGF0aCksXG4gICAgICAgICAgICAgICAgZ2V0UmVxdWVzdC5yZXN1bHQsXG4gICAgICAgICAgICAgICAgdHJ1ZSxcbiAgICAgICAgICAgICAgICB0cnVlLFxuICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgb2srKztcbiAgICAgICAgICAgICAgaWYgKG9rICsgZmFpbCA9PSB0b3RhbCkgZmluaXNoKCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgZ2V0UmVxdWVzdC5vbmVycm9yID0gZnVuY3Rpb24gZ2V0UmVxdWVzdF9vbmVycm9yKCkge1xuICAgICAgICAgICAgICBmYWlsKys7XG4gICAgICAgICAgICAgIGlmIChvayArIGZhaWwgPT0gdG90YWwpIGZpbmlzaCgpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0cmFuc2FjdGlvbi5vbmVycm9yID0gb25lcnJvcjtcbiAgICAgICAgfTtcbiAgICAgICAgb3BlblJlcXVlc3Qub25lcnJvciA9IG9uZXJyb3I7XG4gICAgICB9XG4gICAgfTtcbiAgICB2YXIgU1lTQ0FMTFMgPSB7XG4gICAgICBtYXBwaW5nczoge30sXG4gICAgICBERUZBVUxUX1BPTExNQVNLOiA1LFxuICAgICAgdW1hc2s6IDUxMSxcbiAgICAgIGNhbGN1bGF0ZUF0OiBmdW5jdGlvbihkaXJmZCwgcGF0aCwgYWxsb3dFbXB0eSkge1xuICAgICAgICBpZiAocGF0aFswXSA9PT0gXCIvXCIpIHtcbiAgICAgICAgICByZXR1cm4gcGF0aDtcbiAgICAgICAgfVxuICAgICAgICB2YXIgZGlyO1xuICAgICAgICBpZiAoZGlyZmQgPT09IC0xMDApIHtcbiAgICAgICAgICBkaXIgPSBGUy5jd2QoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB2YXIgZGlyc3RyZWFtID0gRlMuZ2V0U3RyZWFtKGRpcmZkKTtcbiAgICAgICAgICBpZiAoIWRpcnN0cmVhbSkgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoOCk7XG4gICAgICAgICAgZGlyID0gZGlyc3RyZWFtLnBhdGg7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBhdGgubGVuZ3RoID09IDApIHtcbiAgICAgICAgICBpZiAoIWFsbG93RW1wdHkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKDQ0KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGRpcjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gUEFUSC5qb2luMihkaXIsIHBhdGgpO1xuICAgICAgfSxcbiAgICAgIGRvU3RhdDogZnVuY3Rpb24oZnVuYywgcGF0aCwgYnVmKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgdmFyIHN0YXQgPSBmdW5jKHBhdGgpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgZSAmJlxuICAgICAgICAgICAgZS5ub2RlICYmXG4gICAgICAgICAgICBQQVRILm5vcm1hbGl6ZShwYXRoKSAhPT0gUEFUSC5ub3JtYWxpemUoRlMuZ2V0UGF0aChlLm5vZGUpKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgcmV0dXJuIC01NDtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgfVxuICAgICAgICBMRV9IRUFQX1NUT1JFX0kzMigoYnVmID4+IDIpICogNCwgc3RhdC5kZXYpO1xuICAgICAgICBMRV9IRUFQX1NUT1JFX0kzMigoKGJ1ZiArIDQpID4+IDIpICogNCwgMCk7XG4gICAgICAgIExFX0hFQVBfU1RPUkVfSTMyKCgoYnVmICsgOCkgPj4gMikgKiA0LCBzdGF0Lmlubyk7XG4gICAgICAgIExFX0hFQVBfU1RPUkVfSTMyKCgoYnVmICsgMTIpID4+IDIpICogNCwgc3RhdC5tb2RlKTtcbiAgICAgICAgTEVfSEVBUF9TVE9SRV9JMzIoKChidWYgKyAxNikgPj4gMikgKiA0LCBzdGF0Lm5saW5rKTtcbiAgICAgICAgTEVfSEVBUF9TVE9SRV9JMzIoKChidWYgKyAyMCkgPj4gMikgKiA0LCBzdGF0LnVpZCk7XG4gICAgICAgIExFX0hFQVBfU1RPUkVfSTMyKCgoYnVmICsgMjQpID4+IDIpICogNCwgc3RhdC5naWQpO1xuICAgICAgICBMRV9IRUFQX1NUT1JFX0kzMigoKGJ1ZiArIDI4KSA+PiAyKSAqIDQsIHN0YXQucmRldik7XG4gICAgICAgIExFX0hFQVBfU1RPUkVfSTMyKCgoYnVmICsgMzIpID4+IDIpICogNCwgMCk7XG4gICAgICAgICh0ZW1wSTY0ID0gW1xuICAgICAgICAgIHN0YXQuc2l6ZSA+Pj4gMCxcbiAgICAgICAgICAoKHRlbXBEb3VibGUgPSBzdGF0LnNpemUpLFxuICAgICAgICAgICtNYXRoLmFicyh0ZW1wRG91YmxlKSA+PSAxXG4gICAgICAgICAgICA/IHRlbXBEb3VibGUgPiAwXG4gICAgICAgICAgICAgID8gKE1hdGgubWluKCtNYXRoLmZsb29yKHRlbXBEb3VibGUgLyA0Mjk0OTY3Mjk2KSwgNDI5NDk2NzI5NSkgfFxuICAgICAgICAgICAgICAgICAgMCkgPj4+XG4gICAgICAgICAgICAgICAgMFxuICAgICAgICAgICAgICA6IH5+K01hdGguY2VpbChcbiAgICAgICAgICAgICAgICAgICh0ZW1wRG91YmxlIC0gKyh+fnRlbXBEb3VibGUgPj4+IDApKSAvIDQyOTQ5NjcyOTZcbiAgICAgICAgICAgICAgICApID4+PiAwXG4gICAgICAgICAgICA6IDApXG4gICAgICAgIF0pLFxuICAgICAgICAgIExFX0hFQVBfU1RPUkVfSTMyKCgoYnVmICsgNDApID4+IDIpICogNCwgdGVtcEk2NFswXSksXG4gICAgICAgICAgTEVfSEVBUF9TVE9SRV9JMzIoKChidWYgKyA0NCkgPj4gMikgKiA0LCB0ZW1wSTY0WzFdKTtcbiAgICAgICAgTEVfSEVBUF9TVE9SRV9JMzIoKChidWYgKyA0OCkgPj4gMikgKiA0LCA0MDk2KTtcbiAgICAgICAgTEVfSEVBUF9TVE9SRV9JMzIoKChidWYgKyA1MikgPj4gMikgKiA0LCBzdGF0LmJsb2Nrcyk7XG4gICAgICAgIExFX0hFQVBfU1RPUkVfSTMyKFxuICAgICAgICAgICgoYnVmICsgNTYpID4+IDIpICogNCxcbiAgICAgICAgICAoc3RhdC5hdGltZS5nZXRUaW1lKCkgLyAxZTMpIHwgMFxuICAgICAgICApO1xuICAgICAgICBMRV9IRUFQX1NUT1JFX0kzMigoKGJ1ZiArIDYwKSA+PiAyKSAqIDQsIDApO1xuICAgICAgICBMRV9IRUFQX1NUT1JFX0kzMihcbiAgICAgICAgICAoKGJ1ZiArIDY0KSA+PiAyKSAqIDQsXG4gICAgICAgICAgKHN0YXQubXRpbWUuZ2V0VGltZSgpIC8gMWUzKSB8IDBcbiAgICAgICAgKTtcbiAgICAgICAgTEVfSEVBUF9TVE9SRV9JMzIoKChidWYgKyA2OCkgPj4gMikgKiA0LCAwKTtcbiAgICAgICAgTEVfSEVBUF9TVE9SRV9JMzIoXG4gICAgICAgICAgKChidWYgKyA3MikgPj4gMikgKiA0LFxuICAgICAgICAgIChzdGF0LmN0aW1lLmdldFRpbWUoKSAvIDFlMykgfCAwXG4gICAgICAgICk7XG4gICAgICAgIExFX0hFQVBfU1RPUkVfSTMyKCgoYnVmICsgNzYpID4+IDIpICogNCwgMCk7XG4gICAgICAgICh0ZW1wSTY0ID0gW1xuICAgICAgICAgIHN0YXQuaW5vID4+PiAwLFxuICAgICAgICAgICgodGVtcERvdWJsZSA9IHN0YXQuaW5vKSxcbiAgICAgICAgICArTWF0aC5hYnModGVtcERvdWJsZSkgPj0gMVxuICAgICAgICAgICAgPyB0ZW1wRG91YmxlID4gMFxuICAgICAgICAgICAgICA/IChNYXRoLm1pbigrTWF0aC5mbG9vcih0ZW1wRG91YmxlIC8gNDI5NDk2NzI5NiksIDQyOTQ5NjcyOTUpIHxcbiAgICAgICAgICAgICAgICAgIDApID4+PlxuICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgOiB+fitNYXRoLmNlaWwoXG4gICAgICAgICAgICAgICAgICAodGVtcERvdWJsZSAtICsofn50ZW1wRG91YmxlID4+PiAwKSkgLyA0Mjk0OTY3Mjk2XG4gICAgICAgICAgICAgICAgKSA+Pj4gMFxuICAgICAgICAgICAgOiAwKVxuICAgICAgICBdKSxcbiAgICAgICAgICBMRV9IRUFQX1NUT1JFX0kzMigoKGJ1ZiArIDgwKSA+PiAyKSAqIDQsIHRlbXBJNjRbMF0pLFxuICAgICAgICAgIExFX0hFQVBfU1RPUkVfSTMyKCgoYnVmICsgODQpID4+IDIpICogNCwgdGVtcEk2NFsxXSk7XG4gICAgICAgIHJldHVybiAwO1xuICAgICAgfSxcbiAgICAgIGRvTXN5bmM6IGZ1bmN0aW9uKGFkZHIsIHN0cmVhbSwgbGVuLCBmbGFncywgb2Zmc2V0KSB7XG4gICAgICAgIHZhciBidWZmZXIgPSBIRUFQVTguc2xpY2UoYWRkciwgYWRkciArIGxlbik7XG4gICAgICAgIEZTLm1zeW5jKHN0cmVhbSwgYnVmZmVyLCBvZmZzZXQsIGxlbiwgZmxhZ3MpO1xuICAgICAgfSxcbiAgICAgIGRvTWtkaXI6IGZ1bmN0aW9uKHBhdGgsIG1vZGUpIHtcbiAgICAgICAgcGF0aCA9IFBBVEgubm9ybWFsaXplKHBhdGgpO1xuICAgICAgICBpZiAocGF0aFtwYXRoLmxlbmd0aCAtIDFdID09PSBcIi9cIilcbiAgICAgICAgICBwYXRoID0gcGF0aC5zdWJzdHIoMCwgcGF0aC5sZW5ndGggLSAxKTtcbiAgICAgICAgRlMubWtkaXIocGF0aCwgbW9kZSwgMCk7XG4gICAgICAgIHJldHVybiAwO1xuICAgICAgfSxcbiAgICAgIGRvTWtub2Q6IGZ1bmN0aW9uKHBhdGgsIG1vZGUsIGRldikge1xuICAgICAgICBzd2l0Y2ggKG1vZGUgJiA2MTQ0MCkge1xuICAgICAgICAgIGNhc2UgMzI3Njg6XG4gICAgICAgICAgY2FzZSA4MTkyOlxuICAgICAgICAgIGNhc2UgMjQ1NzY6XG4gICAgICAgICAgY2FzZSA0MDk2OlxuICAgICAgICAgIGNhc2UgNDkxNTI6XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuIC0yODtcbiAgICAgICAgfVxuICAgICAgICBGUy5ta25vZChwYXRoLCBtb2RlLCBkZXYpO1xuICAgICAgICByZXR1cm4gMDtcbiAgICAgIH0sXG4gICAgICBkb1JlYWRsaW5rOiBmdW5jdGlvbihwYXRoLCBidWYsIGJ1ZnNpemUpIHtcbiAgICAgICAgaWYgKGJ1ZnNpemUgPD0gMCkgcmV0dXJuIC0yODtcbiAgICAgICAgdmFyIHJldCA9IEZTLnJlYWRsaW5rKHBhdGgpO1xuICAgICAgICB2YXIgbGVuID0gTWF0aC5taW4oYnVmc2l6ZSwgbGVuZ3RoQnl0ZXNVVEY4KHJldCkpO1xuICAgICAgICB2YXIgZW5kQ2hhciA9IEhFQVA4W2J1ZiArIGxlbl07XG4gICAgICAgIHN0cmluZ1RvVVRGOChyZXQsIGJ1ZiwgYnVmc2l6ZSArIDEpO1xuICAgICAgICBIRUFQOFtidWYgKyBsZW5dID0gZW5kQ2hhcjtcbiAgICAgICAgcmV0dXJuIGxlbjtcbiAgICAgIH0sXG4gICAgICBkb0FjY2VzczogZnVuY3Rpb24ocGF0aCwgYW1vZGUpIHtcbiAgICAgICAgaWYgKGFtb2RlICYgfjcpIHtcbiAgICAgICAgICByZXR1cm4gLTI4O1xuICAgICAgICB9XG4gICAgICAgIHZhciBub2RlO1xuICAgICAgICB2YXIgbG9va3VwID0gRlMubG9va3VwUGF0aChwYXRoLCB7IGZvbGxvdzogdHJ1ZSB9KTtcbiAgICAgICAgbm9kZSA9IGxvb2t1cC5ub2RlO1xuICAgICAgICBpZiAoIW5vZGUpIHtcbiAgICAgICAgICByZXR1cm4gLTQ0O1xuICAgICAgICB9XG4gICAgICAgIHZhciBwZXJtcyA9IFwiXCI7XG4gICAgICAgIGlmIChhbW9kZSAmIDQpIHBlcm1zICs9IFwiclwiO1xuICAgICAgICBpZiAoYW1vZGUgJiAyKSBwZXJtcyArPSBcIndcIjtcbiAgICAgICAgaWYgKGFtb2RlICYgMSkgcGVybXMgKz0gXCJ4XCI7XG4gICAgICAgIGlmIChwZXJtcyAmJiBGUy5ub2RlUGVybWlzc2lvbnMobm9kZSwgcGVybXMpKSB7XG4gICAgICAgICAgcmV0dXJuIC0yO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAwO1xuICAgICAgfSxcbiAgICAgIGRvRHVwOiBmdW5jdGlvbihwYXRoLCBmbGFncywgc3VnZ2VzdEZEKSB7XG4gICAgICAgIHZhciBzdWdnZXN0ID0gRlMuZ2V0U3RyZWFtKHN1Z2dlc3RGRCk7XG4gICAgICAgIGlmIChzdWdnZXN0KSBGUy5jbG9zZShzdWdnZXN0KTtcbiAgICAgICAgcmV0dXJuIEZTLm9wZW4ocGF0aCwgZmxhZ3MsIDAsIHN1Z2dlc3RGRCwgc3VnZ2VzdEZEKS5mZDtcbiAgICAgIH0sXG4gICAgICBkb1JlYWR2OiBmdW5jdGlvbihzdHJlYW0sIGlvdiwgaW92Y250LCBvZmZzZXQpIHtcbiAgICAgICAgdmFyIHJldCA9IDA7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaW92Y250OyBpKyspIHtcbiAgICAgICAgICB2YXIgcHRyID0gTEVfSEVBUF9MT0FEX0kzMigoKGlvdiArIGkgKiA4KSA+PiAyKSAqIDQpO1xuICAgICAgICAgIHZhciBsZW4gPSBMRV9IRUFQX0xPQURfSTMyKCgoaW92ICsgKGkgKiA4ICsgNCkpID4+IDIpICogNCk7XG4gICAgICAgICAgdmFyIGN1cnIgPSBGUy5yZWFkKHN0cmVhbSwgSEVBUDgsIHB0ciwgbGVuLCBvZmZzZXQpO1xuICAgICAgICAgIGlmIChjdXJyIDwgMCkgcmV0dXJuIC0xO1xuICAgICAgICAgIHJldCArPSBjdXJyO1xuICAgICAgICAgIGlmIChjdXJyIDwgbGVuKSBicmVhaztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmV0O1xuICAgICAgfSxcbiAgICAgIGRvV3JpdGV2OiBmdW5jdGlvbihzdHJlYW0sIGlvdiwgaW92Y250LCBvZmZzZXQpIHtcbiAgICAgICAgdmFyIHJldCA9IDA7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaW92Y250OyBpKyspIHtcbiAgICAgICAgICB2YXIgcHRyID0gTEVfSEVBUF9MT0FEX0kzMigoKGlvdiArIGkgKiA4KSA+PiAyKSAqIDQpO1xuICAgICAgICAgIHZhciBsZW4gPSBMRV9IRUFQX0xPQURfSTMyKCgoaW92ICsgKGkgKiA4ICsgNCkpID4+IDIpICogNCk7XG4gICAgICAgICAgdmFyIGN1cnIgPSBGUy53cml0ZShzdHJlYW0sIEhFQVA4LCBwdHIsIGxlbiwgb2Zmc2V0KTtcbiAgICAgICAgICBpZiAoY3VyciA8IDApIHJldHVybiAtMTtcbiAgICAgICAgICByZXQgKz0gY3VycjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmV0O1xuICAgICAgfSxcbiAgICAgIHZhcmFyZ3M6IHVuZGVmaW5lZCxcbiAgICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgIFNZU0NBTExTLnZhcmFyZ3MgKz0gNDtcbiAgICAgICAgdmFyIHJldCA9IExFX0hFQVBfTE9BRF9JMzIoKChTWVNDQUxMUy52YXJhcmdzIC0gNCkgPj4gMikgKiA0KTtcbiAgICAgICAgcmV0dXJuIHJldDtcbiAgICAgIH0sXG4gICAgICBnZXRTdHI6IGZ1bmN0aW9uKHB0cikge1xuICAgICAgICB2YXIgcmV0ID0gVVRGOFRvU3RyaW5nKHB0cik7XG4gICAgICAgIHJldHVybiByZXQ7XG4gICAgICB9LFxuICAgICAgZ2V0U3RyZWFtRnJvbUZEOiBmdW5jdGlvbihmZCkge1xuICAgICAgICB2YXIgc3RyZWFtID0gRlMuZ2V0U3RyZWFtKGZkKTtcbiAgICAgICAgaWYgKCFzdHJlYW0pIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKDgpO1xuICAgICAgICByZXR1cm4gc3RyZWFtO1xuICAgICAgfSxcbiAgICAgIGdldDY0OiBmdW5jdGlvbihsb3csIGhpZ2gpIHtcbiAgICAgICAgcmV0dXJuIGxvdztcbiAgICAgIH1cbiAgICB9O1xuICAgIGZ1bmN0aW9uIF9fX3N5c19jaG1vZChwYXRoLCBtb2RlKSB7XG4gICAgICB0cnkge1xuICAgICAgICBwYXRoID0gU1lTQ0FMTFMuZ2V0U3RyKHBhdGgpO1xuICAgICAgICBGUy5jaG1vZChwYXRoLCBtb2RlKTtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGlmICh0eXBlb2YgRlMgPT09IFwidW5kZWZpbmVkXCIgfHwgIShlIGluc3RhbmNlb2YgRlMuRXJybm9FcnJvcikpXG4gICAgICAgICAgYWJvcnQoZSk7XG4gICAgICAgIHJldHVybiAtZS5lcnJubztcbiAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gc2V0RXJyTm8odmFsdWUpIHtcbiAgICAgIExFX0hFQVBfU1RPUkVfSTMyKChfX19lcnJub19sb2NhdGlvbigpID4+IDIpICogNCwgdmFsdWUpO1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgICBmdW5jdGlvbiBfX19zeXNfZmNudGw2NChmZCwgY21kLCB2YXJhcmdzKSB7XG4gICAgICBTWVNDQUxMUy52YXJhcmdzID0gdmFyYXJncztcbiAgICAgIHRyeSB7XG4gICAgICAgIHZhciBzdHJlYW0gPSBTWVNDQUxMUy5nZXRTdHJlYW1Gcm9tRkQoZmQpO1xuICAgICAgICBzd2l0Y2ggKGNtZCkge1xuICAgICAgICAgIGNhc2UgMDoge1xuICAgICAgICAgICAgdmFyIGFyZyA9IFNZU0NBTExTLmdldCgpO1xuICAgICAgICAgICAgaWYgKGFyZyA8IDApIHtcbiAgICAgICAgICAgICAgcmV0dXJuIC0yODtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBuZXdTdHJlYW07XG4gICAgICAgICAgICBuZXdTdHJlYW0gPSBGUy5vcGVuKHN0cmVhbS5wYXRoLCBzdHJlYW0uZmxhZ3MsIDAsIGFyZyk7XG4gICAgICAgICAgICByZXR1cm4gbmV3U3RyZWFtLmZkO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgcmV0dXJuIHN0cmVhbS5mbGFncztcbiAgICAgICAgICBjYXNlIDQ6IHtcbiAgICAgICAgICAgIHZhciBhcmcgPSBTWVNDQUxMUy5nZXQoKTtcbiAgICAgICAgICAgIHN0cmVhbS5mbGFncyB8PSBhcmc7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSAxMjoge1xuICAgICAgICAgICAgdmFyIGFyZyA9IFNZU0NBTExTLmdldCgpO1xuICAgICAgICAgICAgdmFyIG9mZnNldCA9IDA7XG4gICAgICAgICAgICBMRV9IRUFQX1NUT1JFX0kxNigoKGFyZyArIG9mZnNldCkgPj4gMSkgKiAyLCAyKTtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIDEzOlxuICAgICAgICAgIGNhc2UgMTQ6XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgICBjYXNlIDE2OlxuICAgICAgICAgIGNhc2UgODpcbiAgICAgICAgICAgIHJldHVybiAtMjg7XG4gICAgICAgICAgY2FzZSA5OlxuICAgICAgICAgICAgc2V0RXJyTm8oMjgpO1xuICAgICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgIHJldHVybiAtMjg7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGlmICh0eXBlb2YgRlMgPT09IFwidW5kZWZpbmVkXCIgfHwgIShlIGluc3RhbmNlb2YgRlMuRXJybm9FcnJvcikpXG4gICAgICAgICAgYWJvcnQoZSk7XG4gICAgICAgIHJldHVybiAtZS5lcnJubztcbiAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gX19fc3lzX2ZzdGF0NjQoZmQsIGJ1Zikge1xuICAgICAgdHJ5IHtcbiAgICAgICAgdmFyIHN0cmVhbSA9IFNZU0NBTExTLmdldFN0cmVhbUZyb21GRChmZCk7XG4gICAgICAgIHJldHVybiBTWVNDQUxMUy5kb1N0YXQoRlMuc3RhdCwgc3RyZWFtLnBhdGgsIGJ1Zik7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGlmICh0eXBlb2YgRlMgPT09IFwidW5kZWZpbmVkXCIgfHwgIShlIGluc3RhbmNlb2YgRlMuRXJybm9FcnJvcikpXG4gICAgICAgICAgYWJvcnQoZSk7XG4gICAgICAgIHJldHVybiAtZS5lcnJubztcbiAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gX19fc3lzX2lvY3RsKGZkLCBvcCwgdmFyYXJncykge1xuICAgICAgU1lTQ0FMTFMudmFyYXJncyA9IHZhcmFyZ3M7XG4gICAgICB0cnkge1xuICAgICAgICB2YXIgc3RyZWFtID0gU1lTQ0FMTFMuZ2V0U3RyZWFtRnJvbUZEKGZkKTtcbiAgICAgICAgc3dpdGNoIChvcCkge1xuICAgICAgICAgIGNhc2UgMjE1MDk6XG4gICAgICAgICAgY2FzZSAyMTUwNToge1xuICAgICAgICAgICAgaWYgKCFzdHJlYW0udHR5KSByZXR1cm4gLTU5O1xuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgMjE1MTA6XG4gICAgICAgICAgY2FzZSAyMTUxMTpcbiAgICAgICAgICBjYXNlIDIxNTEyOlxuICAgICAgICAgIGNhc2UgMjE1MDY6XG4gICAgICAgICAgY2FzZSAyMTUwNzpcbiAgICAgICAgICBjYXNlIDIxNTA4OiB7XG4gICAgICAgICAgICBpZiAoIXN0cmVhbS50dHkpIHJldHVybiAtNTk7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSAyMTUxOToge1xuICAgICAgICAgICAgaWYgKCFzdHJlYW0udHR5KSByZXR1cm4gLTU5O1xuICAgICAgICAgICAgdmFyIGFyZ3AgPSBTWVNDQUxMUy5nZXQoKTtcbiAgICAgICAgICAgIExFX0hFQVBfU1RPUkVfSTMyKChhcmdwID4+IDIpICogNCwgMCk7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSAyMTUyMDoge1xuICAgICAgICAgICAgaWYgKCFzdHJlYW0udHR5KSByZXR1cm4gLTU5O1xuICAgICAgICAgICAgcmV0dXJuIC0yODtcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSAyMTUzMToge1xuICAgICAgICAgICAgdmFyIGFyZ3AgPSBTWVNDQUxMUy5nZXQoKTtcbiAgICAgICAgICAgIHJldHVybiBGUy5pb2N0bChzdHJlYW0sIG9wLCBhcmdwKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSAyMTUyMzoge1xuICAgICAgICAgICAgaWYgKCFzdHJlYW0udHR5KSByZXR1cm4gLTU5O1xuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgMjE1MjQ6IHtcbiAgICAgICAgICAgIGlmICghc3RyZWFtLnR0eSkgcmV0dXJuIC01OTtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICAgIH1cbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgYWJvcnQoXCJiYWQgaW9jdGwgc3lzY2FsbCBcIiArIG9wKTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBpZiAodHlwZW9mIEZTID09PSBcInVuZGVmaW5lZFwiIHx8ICEoZSBpbnN0YW5jZW9mIEZTLkVycm5vRXJyb3IpKVxuICAgICAgICAgIGFib3J0KGUpO1xuICAgICAgICByZXR1cm4gLWUuZXJybm87XG4gICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIF9fX3N5c19vcGVuKHBhdGgsIGZsYWdzLCB2YXJhcmdzKSB7XG4gICAgICBTWVNDQUxMUy52YXJhcmdzID0gdmFyYXJncztcbiAgICAgIHRyeSB7XG4gICAgICAgIHZhciBwYXRobmFtZSA9IFNZU0NBTExTLmdldFN0cihwYXRoKTtcbiAgICAgICAgdmFyIG1vZGUgPSB2YXJhcmdzID8gU1lTQ0FMTFMuZ2V0KCkgOiAwO1xuICAgICAgICB2YXIgc3RyZWFtID0gRlMub3BlbihwYXRobmFtZSwgZmxhZ3MsIG1vZGUpO1xuICAgICAgICByZXR1cm4gc3RyZWFtLmZkO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBpZiAodHlwZW9mIEZTID09PSBcInVuZGVmaW5lZFwiIHx8ICEoZSBpbnN0YW5jZW9mIEZTLkVycm5vRXJyb3IpKVxuICAgICAgICAgIGFib3J0KGUpO1xuICAgICAgICByZXR1cm4gLWUuZXJybm87XG4gICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIF9fX3N5c19yZW5hbWUob2xkX3BhdGgsIG5ld19wYXRoKSB7XG4gICAgICB0cnkge1xuICAgICAgICBvbGRfcGF0aCA9IFNZU0NBTExTLmdldFN0cihvbGRfcGF0aCk7XG4gICAgICAgIG5ld19wYXRoID0gU1lTQ0FMTFMuZ2V0U3RyKG5ld19wYXRoKTtcbiAgICAgICAgRlMucmVuYW1lKG9sZF9wYXRoLCBuZXdfcGF0aCk7XG4gICAgICAgIHJldHVybiAwO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBpZiAodHlwZW9mIEZTID09PSBcInVuZGVmaW5lZFwiIHx8ICEoZSBpbnN0YW5jZW9mIEZTLkVycm5vRXJyb3IpKVxuICAgICAgICAgIGFib3J0KGUpO1xuICAgICAgICByZXR1cm4gLWUuZXJybm87XG4gICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIF9fX3N5c19ybWRpcihwYXRoKSB7XG4gICAgICB0cnkge1xuICAgICAgICBwYXRoID0gU1lTQ0FMTFMuZ2V0U3RyKHBhdGgpO1xuICAgICAgICBGUy5ybWRpcihwYXRoKTtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGlmICh0eXBlb2YgRlMgPT09IFwidW5kZWZpbmVkXCIgfHwgIShlIGluc3RhbmNlb2YgRlMuRXJybm9FcnJvcikpXG4gICAgICAgICAgYWJvcnQoZSk7XG4gICAgICAgIHJldHVybiAtZS5lcnJubztcbiAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gX19fc3lzX3N0YXQ2NChwYXRoLCBidWYpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHBhdGggPSBTWVNDQUxMUy5nZXRTdHIocGF0aCk7XG4gICAgICAgIHJldHVybiBTWVNDQUxMUy5kb1N0YXQoRlMuc3RhdCwgcGF0aCwgYnVmKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBGUyA9PT0gXCJ1bmRlZmluZWRcIiB8fCAhKGUgaW5zdGFuY2VvZiBGUy5FcnJub0Vycm9yKSlcbiAgICAgICAgICBhYm9ydChlKTtcbiAgICAgICAgcmV0dXJuIC1lLmVycm5vO1xuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBfX19zeXNfdW5saW5rKHBhdGgpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHBhdGggPSBTWVNDQUxMUy5nZXRTdHIocGF0aCk7XG4gICAgICAgIEZTLnVubGluayhwYXRoKTtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGlmICh0eXBlb2YgRlMgPT09IFwidW5kZWZpbmVkXCIgfHwgIShlIGluc3RhbmNlb2YgRlMuRXJybm9FcnJvcikpXG4gICAgICAgICAgYWJvcnQoZSk7XG4gICAgICAgIHJldHVybiAtZS5lcnJubztcbiAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gX2Vtc2NyaXB0ZW5fbWVtY3B5X2JpZyhkZXN0LCBzcmMsIG51bSkge1xuICAgICAgSEVBUFU4LmNvcHlXaXRoaW4oZGVzdCwgc3JjLCBzcmMgKyBudW0pO1xuICAgIH1cbiAgICBmdW5jdGlvbiBlbXNjcmlwdGVuX3JlYWxsb2NfYnVmZmVyKHNpemUpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHdhc21NZW1vcnkuZ3Jvdygoc2l6ZSAtIGJ1ZmZlci5ieXRlTGVuZ3RoICsgNjU1MzUpID4+PiAxNik7XG4gICAgICAgIHVwZGF0ZUdsb2JhbEJ1ZmZlckFuZFZpZXdzKHdhc21NZW1vcnkuYnVmZmVyKTtcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgICB9IGNhdGNoIChlKSB7fVxuICAgIH1cbiAgICBmdW5jdGlvbiBfZW1zY3JpcHRlbl9yZXNpemVfaGVhcChyZXF1ZXN0ZWRTaXplKSB7XG4gICAgICB2YXIgb2xkU2l6ZSA9IEhFQVBVOC5sZW5ndGg7XG4gICAgICByZXF1ZXN0ZWRTaXplID0gcmVxdWVzdGVkU2l6ZSA+Pj4gMDtcbiAgICAgIHZhciBtYXhIZWFwU2l6ZSA9IDIxNDc0ODM2NDg7XG4gICAgICBpZiAocmVxdWVzdGVkU2l6ZSA+IG1heEhlYXBTaXplKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGZvciAodmFyIGN1dERvd24gPSAxOyBjdXREb3duIDw9IDQ7IGN1dERvd24gKj0gMikge1xuICAgICAgICB2YXIgb3Zlckdyb3duSGVhcFNpemUgPSBvbGRTaXplICogKDEgKyAwLjIgLyBjdXREb3duKTtcbiAgICAgICAgb3Zlckdyb3duSGVhcFNpemUgPSBNYXRoLm1pbihcbiAgICAgICAgICBvdmVyR3Jvd25IZWFwU2l6ZSxcbiAgICAgICAgICByZXF1ZXN0ZWRTaXplICsgMTAwNjYzMjk2XG4gICAgICAgICk7XG4gICAgICAgIHZhciBuZXdTaXplID0gTWF0aC5taW4oXG4gICAgICAgICAgbWF4SGVhcFNpemUsXG4gICAgICAgICAgYWxpZ25VcChNYXRoLm1heChyZXF1ZXN0ZWRTaXplLCBvdmVyR3Jvd25IZWFwU2l6ZSksIDY1NTM2KVxuICAgICAgICApO1xuICAgICAgICB2YXIgcmVwbGFjZW1lbnQgPSBlbXNjcmlwdGVuX3JlYWxsb2NfYnVmZmVyKG5ld1NpemUpO1xuICAgICAgICBpZiAocmVwbGFjZW1lbnQpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBmdW5jdGlvbiBfZmRfY2xvc2UoZmQpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHZhciBzdHJlYW0gPSBTWVNDQUxMUy5nZXRTdHJlYW1Gcm9tRkQoZmQpO1xuICAgICAgICBGUy5jbG9zZShzdHJlYW0pO1xuICAgICAgICByZXR1cm4gMDtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBGUyA9PT0gXCJ1bmRlZmluZWRcIiB8fCAhKGUgaW5zdGFuY2VvZiBGUy5FcnJub0Vycm9yKSlcbiAgICAgICAgICBhYm9ydChlKTtcbiAgICAgICAgcmV0dXJuIGUuZXJybm87XG4gICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIF9mZF9mZHN0YXRfZ2V0KGZkLCBwYnVmKSB7XG4gICAgICB0cnkge1xuICAgICAgICB2YXIgc3RyZWFtID0gU1lTQ0FMTFMuZ2V0U3RyZWFtRnJvbUZEKGZkKTtcbiAgICAgICAgdmFyIHR5cGUgPSBzdHJlYW0udHR5XG4gICAgICAgICAgPyAyXG4gICAgICAgICAgOiBGUy5pc0RpcihzdHJlYW0ubW9kZSlcbiAgICAgICAgICA/IDNcbiAgICAgICAgICA6IEZTLmlzTGluayhzdHJlYW0ubW9kZSlcbiAgICAgICAgICA/IDdcbiAgICAgICAgICA6IDQ7XG4gICAgICAgIEhFQVA4W3BidWYgPj4gMF0gPSB0eXBlO1xuICAgICAgICByZXR1cm4gMDtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBGUyA9PT0gXCJ1bmRlZmluZWRcIiB8fCAhKGUgaW5zdGFuY2VvZiBGUy5FcnJub0Vycm9yKSlcbiAgICAgICAgICBhYm9ydChlKTtcbiAgICAgICAgcmV0dXJuIGUuZXJybm87XG4gICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIF9mZF9yZWFkKGZkLCBpb3YsIGlvdmNudCwgcG51bSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgdmFyIHN0cmVhbSA9IFNZU0NBTExTLmdldFN0cmVhbUZyb21GRChmZCk7XG4gICAgICAgIHZhciBudW0gPSBTWVNDQUxMUy5kb1JlYWR2KHN0cmVhbSwgaW92LCBpb3ZjbnQpO1xuICAgICAgICBMRV9IRUFQX1NUT1JFX0kzMigocG51bSA+PiAyKSAqIDQsIG51bSk7XG4gICAgICAgIHJldHVybiAwO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBpZiAodHlwZW9mIEZTID09PSBcInVuZGVmaW5lZFwiIHx8ICEoZSBpbnN0YW5jZW9mIEZTLkVycm5vRXJyb3IpKVxuICAgICAgICAgIGFib3J0KGUpO1xuICAgICAgICByZXR1cm4gZS5lcnJubztcbiAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gX2ZkX3NlZWsoZmQsIG9mZnNldF9sb3csIG9mZnNldF9oaWdoLCB3aGVuY2UsIG5ld09mZnNldCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgdmFyIHN0cmVhbSA9IFNZU0NBTExTLmdldFN0cmVhbUZyb21GRChmZCk7XG4gICAgICAgIHZhciBISUdIX09GRlNFVCA9IDQyOTQ5NjcyOTY7XG4gICAgICAgIHZhciBvZmZzZXQgPSBvZmZzZXRfaGlnaCAqIEhJR0hfT0ZGU0VUICsgKG9mZnNldF9sb3cgPj4+IDApO1xuICAgICAgICB2YXIgRE9VQkxFX0xJTUlUID0gOTAwNzE5OTI1NDc0MDk5MjtcbiAgICAgICAgaWYgKG9mZnNldCA8PSAtRE9VQkxFX0xJTUlUIHx8IG9mZnNldCA+PSBET1VCTEVfTElNSVQpIHtcbiAgICAgICAgICByZXR1cm4gLTYxO1xuICAgICAgICB9XG4gICAgICAgIEZTLmxsc2VlayhzdHJlYW0sIG9mZnNldCwgd2hlbmNlKTtcbiAgICAgICAgKHRlbXBJNjQgPSBbXG4gICAgICAgICAgc3RyZWFtLnBvc2l0aW9uID4+PiAwLFxuICAgICAgICAgICgodGVtcERvdWJsZSA9IHN0cmVhbS5wb3NpdGlvbiksXG4gICAgICAgICAgK01hdGguYWJzKHRlbXBEb3VibGUpID49IDFcbiAgICAgICAgICAgID8gdGVtcERvdWJsZSA+IDBcbiAgICAgICAgICAgICAgPyAoTWF0aC5taW4oK01hdGguZmxvb3IodGVtcERvdWJsZSAvIDQyOTQ5NjcyOTYpLCA0Mjk0OTY3Mjk1KSB8XG4gICAgICAgICAgICAgICAgICAwKSA+Pj5cbiAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgIDogfn4rTWF0aC5jZWlsKFxuICAgICAgICAgICAgICAgICAgKHRlbXBEb3VibGUgLSArKH5+dGVtcERvdWJsZSA+Pj4gMCkpIC8gNDI5NDk2NzI5NlxuICAgICAgICAgICAgICAgICkgPj4+IDBcbiAgICAgICAgICAgIDogMClcbiAgICAgICAgXSksXG4gICAgICAgICAgTEVfSEVBUF9TVE9SRV9JMzIoKG5ld09mZnNldCA+PiAyKSAqIDQsIHRlbXBJNjRbMF0pLFxuICAgICAgICAgIExFX0hFQVBfU1RPUkVfSTMyKCgobmV3T2Zmc2V0ICsgNCkgPj4gMikgKiA0LCB0ZW1wSTY0WzFdKTtcbiAgICAgICAgaWYgKHN0cmVhbS5nZXRkZW50cyAmJiBvZmZzZXQgPT09IDAgJiYgd2hlbmNlID09PSAwKVxuICAgICAgICAgIHN0cmVhbS5nZXRkZW50cyA9IG51bGw7XG4gICAgICAgIHJldHVybiAwO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBpZiAodHlwZW9mIEZTID09PSBcInVuZGVmaW5lZFwiIHx8ICEoZSBpbnN0YW5jZW9mIEZTLkVycm5vRXJyb3IpKVxuICAgICAgICAgIGFib3J0KGUpO1xuICAgICAgICByZXR1cm4gZS5lcnJubztcbiAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gX2ZkX3dyaXRlKGZkLCBpb3YsIGlvdmNudCwgcG51bSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgdmFyIHN0cmVhbSA9IFNZU0NBTExTLmdldFN0cmVhbUZyb21GRChmZCk7XG4gICAgICAgIHZhciBudW0gPSBTWVNDQUxMUy5kb1dyaXRldihzdHJlYW0sIGlvdiwgaW92Y250KTtcbiAgICAgICAgTEVfSEVBUF9TVE9SRV9JMzIoKHBudW0gPj4gMikgKiA0LCBudW0pO1xuICAgICAgICByZXR1cm4gMDtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBGUyA9PT0gXCJ1bmRlZmluZWRcIiB8fCAhKGUgaW5zdGFuY2VvZiBGUy5FcnJub0Vycm9yKSlcbiAgICAgICAgICBhYm9ydChlKTtcbiAgICAgICAgcmV0dXJuIGUuZXJybm87XG4gICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIF9zZXRUZW1wUmV0MCh2YWwpIHtcbiAgICAgIHNldFRlbXBSZXQwKHZhbCk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIF90aW1lKHB0cikge1xuICAgICAgdmFyIHJldCA9IChEYXRlLm5vdygpIC8gMWUzKSB8IDA7XG4gICAgICBpZiAocHRyKSB7XG4gICAgICAgIExFX0hFQVBfU1RPUkVfSTMyKChwdHIgPj4gMikgKiA0LCByZXQpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJldDtcbiAgICB9XG4gICAgZnVuY3Rpb24gX3R6c2V0KCkge1xuICAgICAgaWYgKF90enNldC5jYWxsZWQpIHJldHVybjtcbiAgICAgIF90enNldC5jYWxsZWQgPSB0cnVlO1xuICAgICAgdmFyIGN1cnJlbnRZZWFyID0gbmV3IERhdGUoKS5nZXRGdWxsWWVhcigpO1xuICAgICAgdmFyIHdpbnRlciA9IG5ldyBEYXRlKGN1cnJlbnRZZWFyLCAwLCAxKTtcbiAgICAgIHZhciBzdW1tZXIgPSBuZXcgRGF0ZShjdXJyZW50WWVhciwgNiwgMSk7XG4gICAgICB2YXIgd2ludGVyT2Zmc2V0ID0gd2ludGVyLmdldFRpbWV6b25lT2Zmc2V0KCk7XG4gICAgICB2YXIgc3VtbWVyT2Zmc2V0ID0gc3VtbWVyLmdldFRpbWV6b25lT2Zmc2V0KCk7XG4gICAgICB2YXIgc3RkVGltZXpvbmVPZmZzZXQgPSBNYXRoLm1heCh3aW50ZXJPZmZzZXQsIHN1bW1lck9mZnNldCk7XG4gICAgICBMRV9IRUFQX1NUT1JFX0kzMigoX19nZXRfdGltZXpvbmUoKSA+PiAyKSAqIDQsIHN0ZFRpbWV6b25lT2Zmc2V0ICogNjApO1xuICAgICAgTEVfSEVBUF9TVE9SRV9JMzIoXG4gICAgICAgIChfX2dldF9kYXlsaWdodCgpID4+IDIpICogNCxcbiAgICAgICAgTnVtYmVyKHdpbnRlck9mZnNldCAhPSBzdW1tZXJPZmZzZXQpXG4gICAgICApO1xuICAgICAgZnVuY3Rpb24gZXh0cmFjdFpvbmUoZGF0ZSkge1xuICAgICAgICB2YXIgbWF0Y2ggPSBkYXRlLnRvVGltZVN0cmluZygpLm1hdGNoKC9cXCgoW0EtWmEteiBdKylcXCkkLyk7XG4gICAgICAgIHJldHVybiBtYXRjaCA/IG1hdGNoWzFdIDogXCJHTVRcIjtcbiAgICAgIH1cbiAgICAgIHZhciB3aW50ZXJOYW1lID0gZXh0cmFjdFpvbmUod2ludGVyKTtcbiAgICAgIHZhciBzdW1tZXJOYW1lID0gZXh0cmFjdFpvbmUoc3VtbWVyKTtcbiAgICAgIHZhciB3aW50ZXJOYW1lUHRyID0gYWxsb2NhdGVVVEY4KHdpbnRlck5hbWUpO1xuICAgICAgdmFyIHN1bW1lck5hbWVQdHIgPSBhbGxvY2F0ZVVURjgoc3VtbWVyTmFtZSk7XG4gICAgICBpZiAoc3VtbWVyT2Zmc2V0IDwgd2ludGVyT2Zmc2V0KSB7XG4gICAgICAgIExFX0hFQVBfU1RPUkVfSTMyKChfX2dldF90em5hbWUoKSA+PiAyKSAqIDQsIHdpbnRlck5hbWVQdHIpO1xuICAgICAgICBMRV9IRUFQX1NUT1JFX0kzMigoKF9fZ2V0X3R6bmFtZSgpICsgNCkgPj4gMikgKiA0LCBzdW1tZXJOYW1lUHRyKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIExFX0hFQVBfU1RPUkVfSTMyKChfX2dldF90em5hbWUoKSA+PiAyKSAqIDQsIHN1bW1lck5hbWVQdHIpO1xuICAgICAgICBMRV9IRUFQX1NUT1JFX0kzMigoKF9fZ2V0X3R6bmFtZSgpICsgNCkgPj4gMikgKiA0LCB3aW50ZXJOYW1lUHRyKTtcbiAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gX3RpbWVnbSh0bVB0cikge1xuICAgICAgX3R6c2V0KCk7XG4gICAgICB2YXIgdGltZSA9IERhdGUuVVRDKFxuICAgICAgICBMRV9IRUFQX0xPQURfSTMyKCgodG1QdHIgKyAyMCkgPj4gMikgKiA0KSArIDE5MDAsXG4gICAgICAgIExFX0hFQVBfTE9BRF9JMzIoKCh0bVB0ciArIDE2KSA+PiAyKSAqIDQpLFxuICAgICAgICBMRV9IRUFQX0xPQURfSTMyKCgodG1QdHIgKyAxMikgPj4gMikgKiA0KSxcbiAgICAgICAgTEVfSEVBUF9MT0FEX0kzMigoKHRtUHRyICsgOCkgPj4gMikgKiA0KSxcbiAgICAgICAgTEVfSEVBUF9MT0FEX0kzMigoKHRtUHRyICsgNCkgPj4gMikgKiA0KSxcbiAgICAgICAgTEVfSEVBUF9MT0FEX0kzMigodG1QdHIgPj4gMikgKiA0KSxcbiAgICAgICAgMFxuICAgICAgKTtcbiAgICAgIHZhciBkYXRlID0gbmV3IERhdGUodGltZSk7XG4gICAgICBMRV9IRUFQX1NUT1JFX0kzMigoKHRtUHRyICsgMjQpID4+IDIpICogNCwgZGF0ZS5nZXRVVENEYXkoKSk7XG4gICAgICB2YXIgc3RhcnQgPSBEYXRlLlVUQyhkYXRlLmdldFVUQ0Z1bGxZZWFyKCksIDAsIDEsIDAsIDAsIDAsIDApO1xuICAgICAgdmFyIHlkYXkgPSAoKGRhdGUuZ2V0VGltZSgpIC0gc3RhcnQpIC8gKDFlMyAqIDYwICogNjAgKiAyNCkpIHwgMDtcbiAgICAgIExFX0hFQVBfU1RPUkVfSTMyKCgodG1QdHIgKyAyOCkgPj4gMikgKiA0LCB5ZGF5KTtcbiAgICAgIHJldHVybiAoZGF0ZS5nZXRUaW1lKCkgLyAxZTMpIHwgMDtcbiAgICB9XG4gICAgdmFyIEZTTm9kZSA9IGZ1bmN0aW9uKHBhcmVudCwgbmFtZSwgbW9kZSwgcmRldikge1xuICAgICAgaWYgKCFwYXJlbnQpIHtcbiAgICAgICAgcGFyZW50ID0gdGhpcztcbiAgICAgIH1cbiAgICAgIHRoaXMucGFyZW50ID0gcGFyZW50O1xuICAgICAgdGhpcy5tb3VudCA9IHBhcmVudC5tb3VudDtcbiAgICAgIHRoaXMubW91bnRlZCA9IG51bGw7XG4gICAgICB0aGlzLmlkID0gRlMubmV4dElub2RlKys7XG4gICAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgICAgdGhpcy5tb2RlID0gbW9kZTtcbiAgICAgIHRoaXMubm9kZV9vcHMgPSB7fTtcbiAgICAgIHRoaXMuc3RyZWFtX29wcyA9IHt9O1xuICAgICAgdGhpcy5yZGV2ID0gcmRldjtcbiAgICB9O1xuICAgIHZhciByZWFkTW9kZSA9IDI5MiB8IDczO1xuICAgIHZhciB3cml0ZU1vZGUgPSAxNDY7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoRlNOb2RlLnByb3RvdHlwZSwge1xuICAgICAgcmVhZDoge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgIHJldHVybiAodGhpcy5tb2RlICYgcmVhZE1vZGUpID09PSByZWFkTW9kZTtcbiAgICAgICAgfSxcbiAgICAgICAgc2V0OiBmdW5jdGlvbih2YWwpIHtcbiAgICAgICAgICB2YWwgPyAodGhpcy5tb2RlIHw9IHJlYWRNb2RlKSA6ICh0aGlzLm1vZGUgJj0gfnJlYWRNb2RlKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHdyaXRlOiB7XG4gICAgICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgcmV0dXJuICh0aGlzLm1vZGUgJiB3cml0ZU1vZGUpID09PSB3cml0ZU1vZGU7XG4gICAgICAgIH0sXG4gICAgICAgIHNldDogZnVuY3Rpb24odmFsKSB7XG4gICAgICAgICAgdmFsID8gKHRoaXMubW9kZSB8PSB3cml0ZU1vZGUpIDogKHRoaXMubW9kZSAmPSB+d3JpdGVNb2RlKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGlzRm9sZGVyOiB7XG4gICAgICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgcmV0dXJuIEZTLmlzRGlyKHRoaXMubW9kZSk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBpc0RldmljZToge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgIHJldHVybiBGUy5pc0NocmRldih0aGlzLm1vZGUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gICAgRlMuRlNOb2RlID0gRlNOb2RlO1xuICAgIEZTLnN0YXRpY0luaXQoKTtcbiAgICBpZiAoRU5WSVJPTk1FTlRfSVNfTk9ERSkge1xuICAgICAgdmFyIGZzID0gZnJvemVuRnM7XG4gICAgICB2YXIgTk9ERUpTX1BBVEggPSByZXF1aXJlKFwicGF0aFwiKTtcbiAgICAgIE5PREVGUy5zdGF0aWNJbml0KCk7XG4gICAgfVxuICAgIGlmIChFTlZJUk9OTUVOVF9JU19OT0RFKSB7XG4gICAgICB2YXIgX3dyYXBOb2RlRXJyb3IgPSBmdW5jdGlvbihmdW5jKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmV0dXJuIGZ1bmMuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICBpZiAoIWUuY29kZSkgdGhyb3cgZTtcbiAgICAgICAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTW2UuY29kZV0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICB2YXIgVkZTID0gT2JqZWN0LmFzc2lnbih7fSwgRlMpO1xuICAgICAgZm9yICh2YXIgX2tleSBpbiBOT0RFUkFXRlMpIEZTW19rZXldID0gX3dyYXBOb2RlRXJyb3IoTk9ERVJBV0ZTW19rZXldKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBcIk5PREVSQVdGUyBpcyBjdXJyZW50bHkgb25seSBzdXBwb3J0ZWQgb24gTm9kZS5qcyBlbnZpcm9ubWVudC5cIlxuICAgICAgKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaW50QXJyYXlGcm9tU3RyaW5nKHN0cmluZ3ksIGRvbnRBZGROdWxsLCBsZW5ndGgpIHtcbiAgICAgIHZhciBsZW4gPSBsZW5ndGggPiAwID8gbGVuZ3RoIDogbGVuZ3RoQnl0ZXNVVEY4KHN0cmluZ3kpICsgMTtcbiAgICAgIHZhciB1OGFycmF5ID0gbmV3IEFycmF5KGxlbik7XG4gICAgICB2YXIgbnVtQnl0ZXNXcml0dGVuID0gc3RyaW5nVG9VVEY4QXJyYXkoXG4gICAgICAgIHN0cmluZ3ksXG4gICAgICAgIHU4YXJyYXksXG4gICAgICAgIDAsXG4gICAgICAgIHU4YXJyYXkubGVuZ3RoXG4gICAgICApO1xuICAgICAgaWYgKGRvbnRBZGROdWxsKSB1OGFycmF5Lmxlbmd0aCA9IG51bUJ5dGVzV3JpdHRlbjtcbiAgICAgIHJldHVybiB1OGFycmF5O1xuICAgIH1cbiAgICB2YXIgZGVjb2RlQmFzZTY0ID1cbiAgICAgIHR5cGVvZiBhdG9iID09PSBcImZ1bmN0aW9uXCJcbiAgICAgICAgPyBhdG9iXG4gICAgICAgIDogZnVuY3Rpb24oaW5wdXQpIHtcbiAgICAgICAgICAgIHZhciBrZXlTdHIgPVxuICAgICAgICAgICAgICBcIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky89XCI7XG4gICAgICAgICAgICB2YXIgb3V0cHV0ID0gXCJcIjtcbiAgICAgICAgICAgIHZhciBjaHIxLCBjaHIyLCBjaHIzO1xuICAgICAgICAgICAgdmFyIGVuYzEsIGVuYzIsIGVuYzMsIGVuYzQ7XG4gICAgICAgICAgICB2YXIgaSA9IDA7XG4gICAgICAgICAgICBpbnB1dCA9IGlucHV0LnJlcGxhY2UoL1teQS1aYS16MC05XFwrXFwvXFw9XS9nLCBcIlwiKTtcbiAgICAgICAgICAgIGRvIHtcbiAgICAgICAgICAgICAgZW5jMSA9IGtleVN0ci5pbmRleE9mKGlucHV0LmNoYXJBdChpKyspKTtcbiAgICAgICAgICAgICAgZW5jMiA9IGtleVN0ci5pbmRleE9mKGlucHV0LmNoYXJBdChpKyspKTtcbiAgICAgICAgICAgICAgZW5jMyA9IGtleVN0ci5pbmRleE9mKGlucHV0LmNoYXJBdChpKyspKTtcbiAgICAgICAgICAgICAgZW5jNCA9IGtleVN0ci5pbmRleE9mKGlucHV0LmNoYXJBdChpKyspKTtcbiAgICAgICAgICAgICAgY2hyMSA9IChlbmMxIDw8IDIpIHwgKGVuYzIgPj4gNCk7XG4gICAgICAgICAgICAgIGNocjIgPSAoKGVuYzIgJiAxNSkgPDwgNCkgfCAoZW5jMyA+PiAyKTtcbiAgICAgICAgICAgICAgY2hyMyA9ICgoZW5jMyAmIDMpIDw8IDYpIHwgZW5jNDtcbiAgICAgICAgICAgICAgb3V0cHV0ID0gb3V0cHV0ICsgU3RyaW5nLmZyb21DaGFyQ29kZShjaHIxKTtcbiAgICAgICAgICAgICAgaWYgKGVuYzMgIT09IDY0KSB7XG4gICAgICAgICAgICAgICAgb3V0cHV0ID0gb3V0cHV0ICsgU3RyaW5nLmZyb21DaGFyQ29kZShjaHIyKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAoZW5jNCAhPT0gNjQpIHtcbiAgICAgICAgICAgICAgICBvdXRwdXQgPSBvdXRwdXQgKyBTdHJpbmcuZnJvbUNoYXJDb2RlKGNocjMpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IHdoaWxlIChpIDwgaW5wdXQubGVuZ3RoKTtcbiAgICAgICAgICAgIHJldHVybiBvdXRwdXQ7XG4gICAgICAgICAgfTtcbiAgICBmdW5jdGlvbiBpbnRBcnJheUZyb21CYXNlNjQocykge1xuICAgICAgaWYgKHR5cGVvZiBFTlZJUk9OTUVOVF9JU19OT0RFID09PSBcImJvb2xlYW5cIiAmJiBFTlZJUk9OTUVOVF9JU19OT0RFKSB7XG4gICAgICAgIHZhciBidWY7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgYnVmID0gQnVmZmVyLmZyb20ocywgXCJiYXNlNjRcIik7XG4gICAgICAgIH0gY2F0Y2ggKF8pIHtcbiAgICAgICAgICBidWYgPSBuZXcgQnVmZmVyKHMsIFwiYmFzZTY0XCIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgVWludDhBcnJheShcbiAgICAgICAgICBidWZbXCJidWZmZXJcIl0sXG4gICAgICAgICAgYnVmW1wiYnl0ZU9mZnNldFwiXSxcbiAgICAgICAgICBidWZbXCJieXRlTGVuZ3RoXCJdXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICB0cnkge1xuICAgICAgICB2YXIgZGVjb2RlZCA9IGRlY29kZUJhc2U2NChzKTtcbiAgICAgICAgdmFyIGJ5dGVzID0gbmV3IFVpbnQ4QXJyYXkoZGVjb2RlZC5sZW5ndGgpO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRlY29kZWQubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICBieXRlc1tpXSA9IGRlY29kZWQuY2hhckNvZGVBdChpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYnl0ZXM7XG4gICAgICB9IGNhdGNoIChfKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkNvbnZlcnRpbmcgYmFzZTY0IHN0cmluZyB0byBieXRlcyBmYWlsZWQuXCIpO1xuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiB0cnlQYXJzZUFzRGF0YVVSSShmaWxlbmFtZSkge1xuICAgICAgaWYgKCFpc0RhdGFVUkkoZmlsZW5hbWUpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHJldHVybiBpbnRBcnJheUZyb21CYXNlNjQoZmlsZW5hbWUuc2xpY2UoZGF0YVVSSVByZWZpeC5sZW5ndGgpKTtcbiAgICB9XG4gICAgdmFyIGFzbUxpYnJhcnlBcmcgPSB7XG4gICAgICBzOiBfX19nbXRpbWVfcixcbiAgICAgIHA6IF9fX3N5c19jaG1vZCxcbiAgICAgIGU6IF9fX3N5c19mY250bDY0LFxuICAgICAgazogX19fc3lzX2ZzdGF0NjQsXG4gICAgICBvOiBfX19zeXNfaW9jdGwsXG4gICAgICBxOiBfX19zeXNfb3BlbixcbiAgICAgIGk6IF9fX3N5c19yZW5hbWUsXG4gICAgICByOiBfX19zeXNfcm1kaXIsXG4gICAgICBjOiBfX19zeXNfc3RhdDY0LFxuICAgICAgaDogX19fc3lzX3VubGluayxcbiAgICAgIGw6IF9lbXNjcmlwdGVuX21lbWNweV9iaWcsXG4gICAgICBtOiBfZW1zY3JpcHRlbl9yZXNpemVfaGVhcCxcbiAgICAgIGY6IF9mZF9jbG9zZSxcbiAgICAgIGo6IF9mZF9mZHN0YXRfZ2V0LFxuICAgICAgZzogX2ZkX3JlYWQsXG4gICAgICBuOiBfZmRfc2VlayxcbiAgICAgIGQ6IF9mZF93cml0ZSxcbiAgICAgIGE6IF9zZXRUZW1wUmV0MCxcbiAgICAgIGI6IF90aW1lLFxuICAgICAgdDogX3RpbWVnbVxuICAgIH07XG4gICAgdmFyIGFzbSA9IGNyZWF0ZVdhc20oKTtcbiAgICB2YXIgX19fd2FzbV9jYWxsX2N0b3JzID0gKE1vZHVsZVtcIl9fX3dhc21fY2FsbF9jdG9yc1wiXSA9IGFzbVtcInZcIl0pO1xuICAgIHZhciBfemlwX2V4dF9jb3VudF9zeW1saW5rcyA9IChNb2R1bGVbXCJfemlwX2V4dF9jb3VudF9zeW1saW5rc1wiXSA9XG4gICAgICBhc21bXCJ3XCJdKTtcbiAgICB2YXIgX3ppcF9maWxlX2dldF9leHRlcm5hbF9hdHRyaWJ1dGVzID0gKE1vZHVsZVtcbiAgICAgIFwiX3ppcF9maWxlX2dldF9leHRlcm5hbF9hdHRyaWJ1dGVzXCJcbiAgICBdID0gYXNtW1wieFwiXSk7XG4gICAgdmFyIF96aXBzdHJ1Y3Rfc3RhdCA9IChNb2R1bGVbXCJfemlwc3RydWN0X3N0YXRcIl0gPSBhc21bXCJ5XCJdKTtcbiAgICB2YXIgX3ppcHN0cnVjdF9zdGF0UyA9IChNb2R1bGVbXCJfemlwc3RydWN0X3N0YXRTXCJdID0gYXNtW1wielwiXSk7XG4gICAgdmFyIF96aXBzdHJ1Y3Rfc3RhdF9uYW1lID0gKE1vZHVsZVtcIl96aXBzdHJ1Y3Rfc3RhdF9uYW1lXCJdID0gYXNtW1wiQVwiXSk7XG4gICAgdmFyIF96aXBzdHJ1Y3Rfc3RhdF9pbmRleCA9IChNb2R1bGVbXCJfemlwc3RydWN0X3N0YXRfaW5kZXhcIl0gPSBhc21bXCJCXCJdKTtcbiAgICB2YXIgX3ppcHN0cnVjdF9zdGF0X3NpemUgPSAoTW9kdWxlW1wiX3ppcHN0cnVjdF9zdGF0X3NpemVcIl0gPSBhc21bXCJDXCJdKTtcbiAgICB2YXIgX3ppcHN0cnVjdF9zdGF0X210aW1lID0gKE1vZHVsZVtcIl96aXBzdHJ1Y3Rfc3RhdF9tdGltZVwiXSA9IGFzbVtcIkRcIl0pO1xuICAgIHZhciBfemlwc3RydWN0X3N0YXRfY3JjID0gKE1vZHVsZVtcIl96aXBzdHJ1Y3Rfc3RhdF9jcmNcIl0gPSBhc21bXCJFXCJdKTtcbiAgICB2YXIgX3ppcHN0cnVjdF9lcnJvciA9IChNb2R1bGVbXCJfemlwc3RydWN0X2Vycm9yXCJdID0gYXNtW1wiRlwiXSk7XG4gICAgdmFyIF96aXBzdHJ1Y3RfZXJyb3JTID0gKE1vZHVsZVtcIl96aXBzdHJ1Y3RfZXJyb3JTXCJdID0gYXNtW1wiR1wiXSk7XG4gICAgdmFyIF96aXBzdHJ1Y3RfZXJyb3JfY29kZV96aXAgPSAoTW9kdWxlW1wiX3ppcHN0cnVjdF9lcnJvcl9jb2RlX3ppcFwiXSA9XG4gICAgICBhc21bXCJIXCJdKTtcbiAgICB2YXIgX3ppcHN0cnVjdF9zdGF0X2NvbXBfc2l6ZSA9IChNb2R1bGVbXCJfemlwc3RydWN0X3N0YXRfY29tcF9zaXplXCJdID1cbiAgICAgIGFzbVtcIklcIl0pO1xuICAgIHZhciBfemlwc3RydWN0X3N0YXRfY29tcF9tZXRob2QgPSAoTW9kdWxlW1wiX3ppcHN0cnVjdF9zdGF0X2NvbXBfbWV0aG9kXCJdID1cbiAgICAgIGFzbVtcIkpcIl0pO1xuICAgIHZhciBfemlwX2Nsb3NlID0gKE1vZHVsZVtcIl96aXBfY2xvc2VcIl0gPSBhc21bXCJLXCJdKTtcbiAgICB2YXIgX3ppcF9kZWxldGUgPSAoTW9kdWxlW1wiX3ppcF9kZWxldGVcIl0gPSBhc21bXCJMXCJdKTtcbiAgICB2YXIgX3ppcF9kaXJfYWRkID0gKE1vZHVsZVtcIl96aXBfZGlyX2FkZFwiXSA9IGFzbVtcIk1cIl0pO1xuICAgIHZhciBfemlwX2Rpc2NhcmQgPSAoTW9kdWxlW1wiX3ppcF9kaXNjYXJkXCJdID0gYXNtW1wiTlwiXSk7XG4gICAgdmFyIF96aXBfZXJyb3JfaW5pdF93aXRoX2NvZGUgPSAoTW9kdWxlW1wiX3ppcF9lcnJvcl9pbml0X3dpdGhfY29kZVwiXSA9XG4gICAgICBhc21bXCJPXCJdKTtcbiAgICB2YXIgX3ppcF9nZXRfZXJyb3IgPSAoTW9kdWxlW1wiX3ppcF9nZXRfZXJyb3JcIl0gPSBhc21bXCJQXCJdKTtcbiAgICB2YXIgX3ppcF9maWxlX2dldF9lcnJvciA9IChNb2R1bGVbXCJfemlwX2ZpbGVfZ2V0X2Vycm9yXCJdID0gYXNtW1wiUVwiXSk7XG4gICAgdmFyIF96aXBfZXJyb3Jfc3RyZXJyb3IgPSAoTW9kdWxlW1wiX3ppcF9lcnJvcl9zdHJlcnJvclwiXSA9IGFzbVtcIlJcIl0pO1xuICAgIHZhciBfemlwX2ZjbG9zZSA9IChNb2R1bGVbXCJfemlwX2ZjbG9zZVwiXSA9IGFzbVtcIlNcIl0pO1xuICAgIHZhciBfemlwX2ZpbGVfYWRkID0gKE1vZHVsZVtcIl96aXBfZmlsZV9hZGRcIl0gPSBhc21bXCJUXCJdKTtcbiAgICB2YXIgX2ZyZWUgPSAoTW9kdWxlW1wiX2ZyZWVcIl0gPSBhc21bXCJVXCJdKTtcbiAgICB2YXIgX21hbGxvYyA9IChNb2R1bGVbXCJfbWFsbG9jXCJdID0gYXNtW1wiVlwiXSk7XG4gICAgdmFyIF9fX2Vycm5vX2xvY2F0aW9uID0gKE1vZHVsZVtcIl9fX2Vycm5vX2xvY2F0aW9uXCJdID0gYXNtW1wiV1wiXSk7XG4gICAgdmFyIF96aXBfc291cmNlX2Vycm9yID0gKE1vZHVsZVtcIl96aXBfc291cmNlX2Vycm9yXCJdID0gYXNtW1wiWFwiXSk7XG4gICAgdmFyIF96aXBfc291cmNlX3NlZWsgPSAoTW9kdWxlW1wiX3ppcF9zb3VyY2Vfc2Vla1wiXSA9IGFzbVtcIllcIl0pO1xuICAgIHZhciBfemlwX2ZpbGVfc2V0X2V4dGVybmFsX2F0dHJpYnV0ZXMgPSAoTW9kdWxlW1xuICAgICAgXCJfemlwX2ZpbGVfc2V0X2V4dGVybmFsX2F0dHJpYnV0ZXNcIlxuICAgIF0gPSBhc21bXCJaXCJdKTtcbiAgICB2YXIgX3ppcF9maWxlX3NldF9tdGltZSA9IChNb2R1bGVbXCJfemlwX2ZpbGVfc2V0X210aW1lXCJdID0gYXNtW1wiX1wiXSk7XG4gICAgdmFyIF96aXBfZm9wZW4gPSAoTW9kdWxlW1wiX3ppcF9mb3BlblwiXSA9IGFzbVtcIiRcIl0pO1xuICAgIHZhciBfemlwX2ZvcGVuX2luZGV4ID0gKE1vZHVsZVtcIl96aXBfZm9wZW5faW5kZXhcIl0gPSBhc21bXCJhYVwiXSk7XG4gICAgdmFyIF96aXBfZnJlYWQgPSAoTW9kdWxlW1wiX3ppcF9mcmVhZFwiXSA9IGFzbVtcImJhXCJdKTtcbiAgICB2YXIgX3ppcF9nZXRfbmFtZSA9IChNb2R1bGVbXCJfemlwX2dldF9uYW1lXCJdID0gYXNtW1wiY2FcIl0pO1xuICAgIHZhciBfemlwX2dldF9udW1fZW50cmllcyA9IChNb2R1bGVbXCJfemlwX2dldF9udW1fZW50cmllc1wiXSA9IGFzbVtcImRhXCJdKTtcbiAgICB2YXIgX3ppcF9zb3VyY2VfcmVhZCA9IChNb2R1bGVbXCJfemlwX3NvdXJjZV9yZWFkXCJdID0gYXNtW1wiZWFcIl0pO1xuICAgIHZhciBfemlwX25hbWVfbG9jYXRlID0gKE1vZHVsZVtcIl96aXBfbmFtZV9sb2NhdGVcIl0gPSBhc21bXCJmYVwiXSk7XG4gICAgdmFyIF96aXBfb3BlbiA9IChNb2R1bGVbXCJfemlwX29wZW5cIl0gPSBhc21bXCJnYVwiXSk7XG4gICAgdmFyIF96aXBfb3Blbl9mcm9tX3NvdXJjZSA9IChNb2R1bGVbXCJfemlwX29wZW5fZnJvbV9zb3VyY2VcIl0gPSBhc21bXCJoYVwiXSk7XG4gICAgdmFyIF96aXBfc2V0X2ZpbGVfY29tcHJlc3Npb24gPSAoTW9kdWxlW1wiX3ppcF9zZXRfZmlsZV9jb21wcmVzc2lvblwiXSA9XG4gICAgICBhc21bXCJpYVwiXSk7XG4gICAgdmFyIF96aXBfc291cmNlX2J1ZmZlciA9IChNb2R1bGVbXCJfemlwX3NvdXJjZV9idWZmZXJcIl0gPSBhc21bXCJqYVwiXSk7XG4gICAgdmFyIF96aXBfc291cmNlX2J1ZmZlcl9jcmVhdGUgPSAoTW9kdWxlW1wiX3ppcF9zb3VyY2VfYnVmZmVyX2NyZWF0ZVwiXSA9XG4gICAgICBhc21bXCJrYVwiXSk7XG4gICAgdmFyIF96aXBfc291cmNlX2Nsb3NlID0gKE1vZHVsZVtcIl96aXBfc291cmNlX2Nsb3NlXCJdID0gYXNtW1wibGFcIl0pO1xuICAgIHZhciBfemlwX3NvdXJjZV9mcmVlID0gKE1vZHVsZVtcIl96aXBfc291cmNlX2ZyZWVcIl0gPSBhc21bXCJtYVwiXSk7XG4gICAgdmFyIF96aXBfc291cmNlX2tlZXAgPSAoTW9kdWxlW1wiX3ppcF9zb3VyY2Vfa2VlcFwiXSA9IGFzbVtcIm5hXCJdKTtcbiAgICB2YXIgX3ppcF9zb3VyY2Vfb3BlbiA9IChNb2R1bGVbXCJfemlwX3NvdXJjZV9vcGVuXCJdID0gYXNtW1wib2FcIl0pO1xuICAgIHZhciBfemlwX3NvdXJjZV9zZXRfbXRpbWUgPSAoTW9kdWxlW1wiX3ppcF9zb3VyY2Vfc2V0X210aW1lXCJdID0gYXNtW1wicWFcIl0pO1xuICAgIHZhciBfemlwX3NvdXJjZV90ZWxsID0gKE1vZHVsZVtcIl96aXBfc291cmNlX3RlbGxcIl0gPSBhc21bXCJyYVwiXSk7XG4gICAgdmFyIF96aXBfc3RhdCA9IChNb2R1bGVbXCJfemlwX3N0YXRcIl0gPSBhc21bXCJzYVwiXSk7XG4gICAgdmFyIF96aXBfc3RhdF9pbmRleCA9IChNb2R1bGVbXCJfemlwX3N0YXRfaW5kZXhcIl0gPSBhc21bXCJ0YVwiXSk7XG4gICAgdmFyIF9fZ2V0X3R6bmFtZSA9IChNb2R1bGVbXCJfX2dldF90em5hbWVcIl0gPSBhc21bXCJ1YVwiXSk7XG4gICAgdmFyIF9fZ2V0X2RheWxpZ2h0ID0gKE1vZHVsZVtcIl9fZ2V0X2RheWxpZ2h0XCJdID0gYXNtW1widmFcIl0pO1xuICAgIHZhciBfX2dldF90aW1lem9uZSA9IChNb2R1bGVbXCJfX2dldF90aW1lem9uZVwiXSA9IGFzbVtcIndhXCJdKTtcbiAgICB2YXIgc3RhY2tTYXZlID0gKE1vZHVsZVtcInN0YWNrU2F2ZVwiXSA9IGFzbVtcInhhXCJdKTtcbiAgICB2YXIgc3RhY2tSZXN0b3JlID0gKE1vZHVsZVtcInN0YWNrUmVzdG9yZVwiXSA9IGFzbVtcInlhXCJdKTtcbiAgICB2YXIgc3RhY2tBbGxvYyA9IChNb2R1bGVbXCJzdGFja0FsbG9jXCJdID0gYXNtW1wiemFcIl0pO1xuICAgIE1vZHVsZVtcImN3cmFwXCJdID0gY3dyYXA7XG4gICAgTW9kdWxlW1wiZ2V0VmFsdWVcIl0gPSBnZXRWYWx1ZTtcbiAgICB2YXIgY2FsbGVkUnVuO1xuICAgIGRlcGVuZGVuY2llc0Z1bGZpbGxlZCA9IGZ1bmN0aW9uIHJ1bkNhbGxlcigpIHtcbiAgICAgIGlmICghY2FsbGVkUnVuKSBydW4oKTtcbiAgICAgIGlmICghY2FsbGVkUnVuKSBkZXBlbmRlbmNpZXNGdWxmaWxsZWQgPSBydW5DYWxsZXI7XG4gICAgfTtcbiAgICBmdW5jdGlvbiBydW4oYXJncykge1xuICAgICAgYXJncyA9IGFyZ3MgfHwgYXJndW1lbnRzXztcbiAgICAgIGlmIChydW5EZXBlbmRlbmNpZXMgPiAwKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHByZVJ1bigpO1xuICAgICAgaWYgKHJ1bkRlcGVuZGVuY2llcyA+IDApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgZnVuY3Rpb24gZG9SdW4oKSB7XG4gICAgICAgIGlmIChjYWxsZWRSdW4pIHJldHVybjtcbiAgICAgICAgY2FsbGVkUnVuID0gdHJ1ZTtcbiAgICAgICAgTW9kdWxlW1wiY2FsbGVkUnVuXCJdID0gdHJ1ZTtcbiAgICAgICAgaWYgKEFCT1JUKSByZXR1cm47XG4gICAgICAgIGluaXRSdW50aW1lKCk7XG4gICAgICAgIHJlYWR5UHJvbWlzZVJlc29sdmUoTW9kdWxlKTtcbiAgICAgICAgaWYgKE1vZHVsZVtcIm9uUnVudGltZUluaXRpYWxpemVkXCJdKSBNb2R1bGVbXCJvblJ1bnRpbWVJbml0aWFsaXplZFwiXSgpO1xuICAgICAgICBwb3N0UnVuKCk7XG4gICAgICB9XG4gICAgICBpZiAoTW9kdWxlW1wic2V0U3RhdHVzXCJdKSB7XG4gICAgICAgIE1vZHVsZVtcInNldFN0YXR1c1wiXShcIlJ1bm5pbmcuLi5cIik7XG4gICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIE1vZHVsZVtcInNldFN0YXR1c1wiXShcIlwiKTtcbiAgICAgICAgICB9LCAxKTtcbiAgICAgICAgICBkb1J1bigpO1xuICAgICAgICB9LCAxKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRvUnVuKCk7XG4gICAgICB9XG4gICAgfVxuICAgIE1vZHVsZVtcInJ1blwiXSA9IHJ1bjtcbiAgICBpZiAoTW9kdWxlW1wicHJlSW5pdFwiXSkge1xuICAgICAgaWYgKHR5cGVvZiBNb2R1bGVbXCJwcmVJbml0XCJdID09IFwiZnVuY3Rpb25cIilcbiAgICAgICAgTW9kdWxlW1wicHJlSW5pdFwiXSA9IFtNb2R1bGVbXCJwcmVJbml0XCJdXTtcbiAgICAgIHdoaWxlIChNb2R1bGVbXCJwcmVJbml0XCJdLmxlbmd0aCA+IDApIHtcbiAgICAgICAgTW9kdWxlW1wicHJlSW5pdFwiXS5wb3AoKSgpO1xuICAgICAgfVxuICAgIH1cbiAgICBydW4oKTtcblxuICAgIHJldHVybiBjcmVhdGVNb2R1bGU7XG4gIH07XG59KSgpO1xuaWYgKHR5cGVvZiBleHBvcnRzID09PSBcIm9iamVjdFwiICYmIHR5cGVvZiBtb2R1bGUgPT09IFwib2JqZWN0XCIpXG4gIG1vZHVsZS5leHBvcnRzID0gY3JlYXRlTW9kdWxlO1xuZWxzZSBpZiAodHlwZW9mIGRlZmluZSA9PT0gXCJmdW5jdGlvblwiICYmIGRlZmluZVtcImFtZFwiXSlcbiAgZGVmaW5lKFtdLCBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gY3JlYXRlTW9kdWxlO1xuICB9KTtcbmVsc2UgaWYgKHR5cGVvZiBleHBvcnRzID09PSBcIm9iamVjdFwiKSBleHBvcnRzW1wiY3JlYXRlTW9kdWxlXCJdID0gY3JlYXRlTW9kdWxlO1xuIiwgIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5tYWtlSW50ZXJmYWNlID0gZXhwb3J0cy5FcnJvcnMgPSB2b2lkIDA7XG5jb25zdCBudW1iZXI2NCA9IFtcbiAgICBgbnVtYmVyYCxcbiAgICBgbnVtYmVyYCwgLy8gaGlnaFxuXTtcbnZhciBFcnJvcnM7XG4oZnVuY3Rpb24gKEVycm9ycykge1xuICAgIEVycm9yc1tFcnJvcnNbXCJaSVBfRVJfT0tcIl0gPSAwXSA9IFwiWklQX0VSX09LXCI7XG4gICAgRXJyb3JzW0Vycm9yc1tcIlpJUF9FUl9NVUxUSURJU0tcIl0gPSAxXSA9IFwiWklQX0VSX01VTFRJRElTS1wiO1xuICAgIEVycm9yc1tFcnJvcnNbXCJaSVBfRVJfUkVOQU1FXCJdID0gMl0gPSBcIlpJUF9FUl9SRU5BTUVcIjtcbiAgICBFcnJvcnNbRXJyb3JzW1wiWklQX0VSX0NMT1NFXCJdID0gM10gPSBcIlpJUF9FUl9DTE9TRVwiO1xuICAgIEVycm9yc1tFcnJvcnNbXCJaSVBfRVJfU0VFS1wiXSA9IDRdID0gXCJaSVBfRVJfU0VFS1wiO1xuICAgIEVycm9yc1tFcnJvcnNbXCJaSVBfRVJfUkVBRFwiXSA9IDVdID0gXCJaSVBfRVJfUkVBRFwiO1xuICAgIEVycm9yc1tFcnJvcnNbXCJaSVBfRVJfV1JJVEVcIl0gPSA2XSA9IFwiWklQX0VSX1dSSVRFXCI7XG4gICAgRXJyb3JzW0Vycm9yc1tcIlpJUF9FUl9DUkNcIl0gPSA3XSA9IFwiWklQX0VSX0NSQ1wiO1xuICAgIEVycm9yc1tFcnJvcnNbXCJaSVBfRVJfWklQQ0xPU0VEXCJdID0gOF0gPSBcIlpJUF9FUl9aSVBDTE9TRURcIjtcbiAgICBFcnJvcnNbRXJyb3JzW1wiWklQX0VSX05PRU5UXCJdID0gOV0gPSBcIlpJUF9FUl9OT0VOVFwiO1xuICAgIEVycm9yc1tFcnJvcnNbXCJaSVBfRVJfRVhJU1RTXCJdID0gMTBdID0gXCJaSVBfRVJfRVhJU1RTXCI7XG4gICAgRXJyb3JzW0Vycm9yc1tcIlpJUF9FUl9PUEVOXCJdID0gMTFdID0gXCJaSVBfRVJfT1BFTlwiO1xuICAgIEVycm9yc1tFcnJvcnNbXCJaSVBfRVJfVE1QT1BFTlwiXSA9IDEyXSA9IFwiWklQX0VSX1RNUE9QRU5cIjtcbiAgICBFcnJvcnNbRXJyb3JzW1wiWklQX0VSX1pMSUJcIl0gPSAxM10gPSBcIlpJUF9FUl9aTElCXCI7XG4gICAgRXJyb3JzW0Vycm9yc1tcIlpJUF9FUl9NRU1PUllcIl0gPSAxNF0gPSBcIlpJUF9FUl9NRU1PUllcIjtcbiAgICBFcnJvcnNbRXJyb3JzW1wiWklQX0VSX0NIQU5HRURcIl0gPSAxNV0gPSBcIlpJUF9FUl9DSEFOR0VEXCI7XG4gICAgRXJyb3JzW0Vycm9yc1tcIlpJUF9FUl9DT01QTk9UU1VQUFwiXSA9IDE2XSA9IFwiWklQX0VSX0NPTVBOT1RTVVBQXCI7XG4gICAgRXJyb3JzW0Vycm9yc1tcIlpJUF9FUl9FT0ZcIl0gPSAxN10gPSBcIlpJUF9FUl9FT0ZcIjtcbiAgICBFcnJvcnNbRXJyb3JzW1wiWklQX0VSX0lOVkFMXCJdID0gMThdID0gXCJaSVBfRVJfSU5WQUxcIjtcbiAgICBFcnJvcnNbRXJyb3JzW1wiWklQX0VSX05PWklQXCJdID0gMTldID0gXCJaSVBfRVJfTk9aSVBcIjtcbiAgICBFcnJvcnNbRXJyb3JzW1wiWklQX0VSX0lOVEVSTkFMXCJdID0gMjBdID0gXCJaSVBfRVJfSU5URVJOQUxcIjtcbiAgICBFcnJvcnNbRXJyb3JzW1wiWklQX0VSX0lOQ09OU1wiXSA9IDIxXSA9IFwiWklQX0VSX0lOQ09OU1wiO1xuICAgIEVycm9yc1tFcnJvcnNbXCJaSVBfRVJfUkVNT1ZFXCJdID0gMjJdID0gXCJaSVBfRVJfUkVNT1ZFXCI7XG4gICAgRXJyb3JzW0Vycm9yc1tcIlpJUF9FUl9ERUxFVEVEXCJdID0gMjNdID0gXCJaSVBfRVJfREVMRVRFRFwiO1xuICAgIEVycm9yc1tFcnJvcnNbXCJaSVBfRVJfRU5DUk5PVFNVUFBcIl0gPSAyNF0gPSBcIlpJUF9FUl9FTkNSTk9UU1VQUFwiO1xuICAgIEVycm9yc1tFcnJvcnNbXCJaSVBfRVJfUkRPTkxZXCJdID0gMjVdID0gXCJaSVBfRVJfUkRPTkxZXCI7XG4gICAgRXJyb3JzW0Vycm9yc1tcIlpJUF9FUl9OT1BBU1NXRFwiXSA9IDI2XSA9IFwiWklQX0VSX05PUEFTU1dEXCI7XG4gICAgRXJyb3JzW0Vycm9yc1tcIlpJUF9FUl9XUk9OR1BBU1NXRFwiXSA9IDI3XSA9IFwiWklQX0VSX1dST05HUEFTU1dEXCI7XG4gICAgRXJyb3JzW0Vycm9yc1tcIlpJUF9FUl9PUE5PVFNVUFBcIl0gPSAyOF0gPSBcIlpJUF9FUl9PUE5PVFNVUFBcIjtcbiAgICBFcnJvcnNbRXJyb3JzW1wiWklQX0VSX0lOVVNFXCJdID0gMjldID0gXCJaSVBfRVJfSU5VU0VcIjtcbiAgICBFcnJvcnNbRXJyb3JzW1wiWklQX0VSX1RFTExcIl0gPSAzMF0gPSBcIlpJUF9FUl9URUxMXCI7XG4gICAgRXJyb3JzW0Vycm9yc1tcIlpJUF9FUl9DT01QUkVTU0VEX0RBVEFcIl0gPSAzMV0gPSBcIlpJUF9FUl9DT01QUkVTU0VEX0RBVEFcIjtcbn0pKEVycm9ycyA9IGV4cG9ydHMuRXJyb3JzIHx8IChleHBvcnRzLkVycm9ycyA9IHt9KSk7XG5jb25zdCBtYWtlSW50ZXJmYWNlID0gKGVtWmlwKSA9PiAoe1xuICAgIC8vIFRob3NlIGFyZSBnZXR0ZXJzIGJlY2F1c2UgdGhleSBjYW4gY2hhbmdlIGFmdGVyIG1lbW9yeSBncm93dGhcbiAgICBnZXQgSEVBUDgoKSB7XG4gICAgICAgIHJldHVybiBlbVppcC5IRUFQODtcbiAgICB9LFxuICAgIGdldCBIRUFQVTgoKSB7XG4gICAgICAgIHJldHVybiBlbVppcC5IRUFQVTg7XG4gICAgfSxcbiAgICBlcnJvcnM6IEVycm9ycyxcbiAgICBTRUVLX1NFVDogMCxcbiAgICBTRUVLX0NVUjogMSxcbiAgICBTRUVLX0VORDogMixcbiAgICBaSVBfQ0hFQ0tDT05TOiA0LFxuICAgIFpJUF9DUkVBVEU6IDEsXG4gICAgWklQX0VYQ0w6IDIsXG4gICAgWklQX1RSVU5DQVRFOiA4LFxuICAgIFpJUF9SRE9OTFk6IDE2LFxuICAgIFpJUF9GTF9PVkVSV1JJVEU6IDgxOTIsXG4gICAgWklQX0ZMX0NPTVBSRVNTRUQ6IDQsXG4gICAgWklQX09QU1lTX0RPUzogMHgwMCxcbiAgICBaSVBfT1BTWVNfQU1JR0E6IDB4MDEsXG4gICAgWklQX09QU1lTX09QRU5WTVM6IDB4MDIsXG4gICAgWklQX09QU1lTX1VOSVg6IDB4MDMsXG4gICAgWklQX09QU1lTX1ZNX0NNUzogMHgwNCxcbiAgICBaSVBfT1BTWVNfQVRBUklfU1Q6IDB4MDUsXG4gICAgWklQX09QU1lTX09TXzI6IDB4MDYsXG4gICAgWklQX09QU1lTX01BQ0lOVE9TSDogMHgwNyxcbiAgICBaSVBfT1BTWVNfWl9TWVNURU06IDB4MDgsXG4gICAgWklQX09QU1lTX0NQTTogMHgwOSxcbiAgICBaSVBfT1BTWVNfV0lORE9XU19OVEZTOiAweDBhLFxuICAgIFpJUF9PUFNZU19NVlM6IDB4MGIsXG4gICAgWklQX09QU1lTX1ZTRTogMHgwYyxcbiAgICBaSVBfT1BTWVNfQUNPUk5fUklTQzogMHgwZCxcbiAgICBaSVBfT1BTWVNfVkZBVDogMHgwZSxcbiAgICBaSVBfT1BTWVNfQUxURVJOQVRFX01WUzogMHgwZixcbiAgICBaSVBfT1BTWVNfQkVPUzogMHgxMCxcbiAgICBaSVBfT1BTWVNfVEFOREVNOiAweDExLFxuICAgIFpJUF9PUFNZU19PU180MDA6IDB4MTIsXG4gICAgWklQX09QU1lTX09TX1g6IDB4MTMsXG4gICAgWklQX0NNX0RFRkFVTFQ6IC0xLFxuICAgIFpJUF9DTV9TVE9SRTogMCxcbiAgICBaSVBfQ01fREVGTEFURTogOCxcbiAgICB1aW50MDhTOiBlbVppcC5fbWFsbG9jKDEpLFxuICAgIHVpbnQxNlM6IGVtWmlwLl9tYWxsb2MoMiksXG4gICAgdWludDMyUzogZW1aaXAuX21hbGxvYyg0KSxcbiAgICB1aW50NjRTOiBlbVppcC5fbWFsbG9jKDgpLFxuICAgIG1hbGxvYzogZW1aaXAuX21hbGxvYyxcbiAgICBmcmVlOiBlbVppcC5fZnJlZSxcbiAgICBnZXRWYWx1ZTogZW1aaXAuZ2V0VmFsdWUsXG4gICAgb3BlbjogZW1aaXAuY3dyYXAoYHppcF9vcGVuYCwgYG51bWJlcmAsIFtgc3RyaW5nYCwgYG51bWJlcmAsIGBudW1iZXJgXSksXG4gICAgb3BlbkZyb21Tb3VyY2U6IGVtWmlwLmN3cmFwKGB6aXBfb3Blbl9mcm9tX3NvdXJjZWAsIGBudW1iZXJgLCBbYG51bWJlcmAsIGBudW1iZXJgLCBgbnVtYmVyYF0pLFxuICAgIGNsb3NlOiBlbVppcC5jd3JhcChgemlwX2Nsb3NlYCwgYG51bWJlcmAsIFtgbnVtYmVyYF0pLFxuICAgIGRpc2NhcmQ6IGVtWmlwLmN3cmFwKGB6aXBfZGlzY2FyZGAsIG51bGwsIFtgbnVtYmVyYF0pLFxuICAgIGdldEVycm9yOiBlbVppcC5jd3JhcChgemlwX2dldF9lcnJvcmAsIGBudW1iZXJgLCBbYG51bWJlcmBdKSxcbiAgICBnZXROYW1lOiBlbVppcC5jd3JhcChgemlwX2dldF9uYW1lYCwgYHN0cmluZ2AsIFtgbnVtYmVyYCwgYG51bWJlcmAsIGBudW1iZXJgXSksXG4gICAgZ2V0TnVtRW50cmllczogZW1aaXAuY3dyYXAoYHppcF9nZXRfbnVtX2VudHJpZXNgLCBgbnVtYmVyYCwgW2BudW1iZXJgLCBgbnVtYmVyYF0pLFxuICAgIGRlbGV0ZTogZW1aaXAuY3dyYXAoYHppcF9kZWxldGVgLCBgbnVtYmVyYCwgW2BudW1iZXJgLCBgbnVtYmVyYF0pLFxuICAgIHN0YXQ6IGVtWmlwLmN3cmFwKGB6aXBfc3RhdGAsIGBudW1iZXJgLCBbYG51bWJlcmAsIGBzdHJpbmdgLCBgbnVtYmVyYCwgYG51bWJlcmBdKSxcbiAgICBzdGF0SW5kZXg6IGVtWmlwLmN3cmFwKGB6aXBfc3RhdF9pbmRleGAsIGBudW1iZXJgLCBbYG51bWJlcmAsIC4uLm51bWJlcjY0LCBgbnVtYmVyYCwgYG51bWJlcmBdKSxcbiAgICBmb3BlbjogZW1aaXAuY3dyYXAoYHppcF9mb3BlbmAsIGBudW1iZXJgLCBbYG51bWJlcmAsIGBzdHJpbmdgLCBgbnVtYmVyYF0pLFxuICAgIGZvcGVuSW5kZXg6IGVtWmlwLmN3cmFwKGB6aXBfZm9wZW5faW5kZXhgLCBgbnVtYmVyYCwgW2BudW1iZXJgLCAuLi5udW1iZXI2NCwgYG51bWJlcmBdKSxcbiAgICBmcmVhZDogZW1aaXAuY3dyYXAoYHppcF9mcmVhZGAsIGBudW1iZXJgLCBbYG51bWJlcmAsIGBudW1iZXJgLCBgbnVtYmVyYCwgYG51bWJlcmBdKSxcbiAgICBmY2xvc2U6IGVtWmlwLmN3cmFwKGB6aXBfZmNsb3NlYCwgYG51bWJlcmAsIFtgbnVtYmVyYF0pLFxuICAgIGRpcjoge1xuICAgICAgICBhZGQ6IGVtWmlwLmN3cmFwKGB6aXBfZGlyX2FkZGAsIGBudW1iZXJgLCBbYG51bWJlcmAsIGBzdHJpbmdgXSksXG4gICAgfSxcbiAgICBmaWxlOiB7XG4gICAgICAgIGFkZDogZW1aaXAuY3dyYXAoYHppcF9maWxlX2FkZGAsIGBudW1iZXJgLCBbYG51bWJlcmAsIGBzdHJpbmdgLCBgbnVtYmVyYCwgYG51bWJlcmBdKSxcbiAgICAgICAgZ2V0RXJyb3I6IGVtWmlwLmN3cmFwKGB6aXBfZmlsZV9nZXRfZXJyb3JgLCBgbnVtYmVyYCwgW2BudW1iZXJgXSksXG4gICAgICAgIGdldEV4dGVybmFsQXR0cmlidXRlczogZW1aaXAuY3dyYXAoYHppcF9maWxlX2dldF9leHRlcm5hbF9hdHRyaWJ1dGVzYCwgYG51bWJlcmAsIFtgbnVtYmVyYCwgLi4ubnVtYmVyNjQsIGBudW1iZXJgLCBgbnVtYmVyYCwgYG51bWJlcmBdKSxcbiAgICAgICAgc2V0RXh0ZXJuYWxBdHRyaWJ1dGVzOiBlbVppcC5jd3JhcChgemlwX2ZpbGVfc2V0X2V4dGVybmFsX2F0dHJpYnV0ZXNgLCBgbnVtYmVyYCwgW2BudW1iZXJgLCAuLi5udW1iZXI2NCwgYG51bWJlcmAsIGBudW1iZXJgLCBgbnVtYmVyYF0pLFxuICAgICAgICBzZXRNdGltZTogZW1aaXAuY3dyYXAoYHppcF9maWxlX3NldF9tdGltZWAsIGBudW1iZXJgLCBbYG51bWJlcmAsIC4uLm51bWJlcjY0LCBgbnVtYmVyYCwgYG51bWJlcmBdKSxcbiAgICAgICAgc2V0Q29tcHJlc3Npb246IGVtWmlwLmN3cmFwKGB6aXBfc2V0X2ZpbGVfY29tcHJlc3Npb25gLCBgbnVtYmVyYCwgW2BudW1iZXJgLCAuLi5udW1iZXI2NCwgYG51bWJlcmAsIGBudW1iZXJgXSksXG4gICAgfSxcbiAgICBleHQ6IHtcbiAgICAgICAgY291bnRTeW1saW5rczogZW1aaXAuY3dyYXAoYHppcF9leHRfY291bnRfc3ltbGlua3NgLCBgbnVtYmVyYCwgW2BudW1iZXJgXSksXG4gICAgfSxcbiAgICBlcnJvcjoge1xuICAgICAgICBpbml0V2l0aENvZGU6IGVtWmlwLmN3cmFwKGB6aXBfZXJyb3JfaW5pdF93aXRoX2NvZGVgLCBudWxsLCBbYG51bWJlcmAsIGBudW1iZXJgXSksXG4gICAgICAgIHN0cmVycm9yOiBlbVppcC5jd3JhcChgemlwX2Vycm9yX3N0cmVycm9yYCwgYHN0cmluZ2AsIFtgbnVtYmVyYF0pLFxuICAgIH0sXG4gICAgbmFtZToge1xuICAgICAgICBsb2NhdGU6IGVtWmlwLmN3cmFwKGB6aXBfbmFtZV9sb2NhdGVgLCBgbnVtYmVyYCwgW2BudW1iZXJgLCBgc3RyaW5nYCwgYG51bWJlcmBdKSxcbiAgICB9LFxuICAgIHNvdXJjZToge1xuICAgICAgICBmcm9tVW5hdHRhY2hlZEJ1ZmZlcjogZW1aaXAuY3dyYXAoYHppcF9zb3VyY2VfYnVmZmVyX2NyZWF0ZWAsIGBudW1iZXJgLCBbYG51bWJlcmAsIC4uLm51bWJlcjY0LCBgbnVtYmVyYCwgYG51bWJlcmBdKSxcbiAgICAgICAgZnJvbUJ1ZmZlcjogZW1aaXAuY3dyYXAoYHppcF9zb3VyY2VfYnVmZmVyYCwgYG51bWJlcmAsIFtgbnVtYmVyYCwgYG51bWJlcmAsIC4uLm51bWJlcjY0LCBgbnVtYmVyYF0pLFxuICAgICAgICBmcmVlOiBlbVppcC5jd3JhcChgemlwX3NvdXJjZV9mcmVlYCwgbnVsbCwgW2BudW1iZXJgXSksXG4gICAgICAgIGtlZXA6IGVtWmlwLmN3cmFwKGB6aXBfc291cmNlX2tlZXBgLCBudWxsLCBbYG51bWJlcmBdKSxcbiAgICAgICAgb3BlbjogZW1aaXAuY3dyYXAoYHppcF9zb3VyY2Vfb3BlbmAsIGBudW1iZXJgLCBbYG51bWJlcmBdKSxcbiAgICAgICAgY2xvc2U6IGVtWmlwLmN3cmFwKGB6aXBfc291cmNlX2Nsb3NlYCwgYG51bWJlcmAsIFtgbnVtYmVyYF0pLFxuICAgICAgICBzZWVrOiBlbVppcC5jd3JhcChgemlwX3NvdXJjZV9zZWVrYCwgYG51bWJlcmAsIFtgbnVtYmVyYCwgLi4ubnVtYmVyNjQsIGBudW1iZXJgXSksXG4gICAgICAgIHRlbGw6IGVtWmlwLmN3cmFwKGB6aXBfc291cmNlX3RlbGxgLCBgbnVtYmVyYCwgW2BudW1iZXJgXSksXG4gICAgICAgIHJlYWQ6IGVtWmlwLmN3cmFwKGB6aXBfc291cmNlX3JlYWRgLCBgbnVtYmVyYCwgW2BudW1iZXJgLCBgbnVtYmVyYCwgYG51bWJlcmBdKSxcbiAgICAgICAgZXJyb3I6IGVtWmlwLmN3cmFwKGB6aXBfc291cmNlX2Vycm9yYCwgYG51bWJlcmAsIFtgbnVtYmVyYF0pLFxuICAgICAgICBzZXRNdGltZTogZW1aaXAuY3dyYXAoYHppcF9zb3VyY2Vfc2V0X210aW1lYCwgYG51bWJlcmAsIFtgbnVtYmVyYCwgYG51bWJlcmBdKSxcbiAgICB9LFxuICAgIHN0cnVjdDoge1xuICAgICAgICBzdGF0OiBlbVppcC5jd3JhcChgemlwc3RydWN0X3N0YXRgLCBgbnVtYmVyYCwgW10pLFxuICAgICAgICBzdGF0UzogZW1aaXAuY3dyYXAoYHppcHN0cnVjdF9zdGF0U2AsIGBudW1iZXJgLCBbXSksXG4gICAgICAgIHN0YXROYW1lOiBlbVppcC5jd3JhcChgemlwc3RydWN0X3N0YXRfbmFtZWAsIGBzdHJpbmdgLCBbYG51bWJlcmBdKSxcbiAgICAgICAgc3RhdEluZGV4OiBlbVppcC5jd3JhcChgemlwc3RydWN0X3N0YXRfaW5kZXhgLCBgbnVtYmVyYCwgW2BudW1iZXJgXSksXG4gICAgICAgIHN0YXRTaXplOiBlbVppcC5jd3JhcChgemlwc3RydWN0X3N0YXRfc2l6ZWAsIGBudW1iZXJgLCBbYG51bWJlcmBdKSxcbiAgICAgICAgc3RhdENvbXBTaXplOiBlbVppcC5jd3JhcChgemlwc3RydWN0X3N0YXRfY29tcF9zaXplYCwgYG51bWJlcmAsIFtgbnVtYmVyYF0pLFxuICAgICAgICBzdGF0Q29tcE1ldGhvZDogZW1aaXAuY3dyYXAoYHppcHN0cnVjdF9zdGF0X2NvbXBfbWV0aG9kYCwgYG51bWJlcmAsIFtgbnVtYmVyYF0pLFxuICAgICAgICBzdGF0TXRpbWU6IGVtWmlwLmN3cmFwKGB6aXBzdHJ1Y3Rfc3RhdF9tdGltZWAsIGBudW1iZXJgLCBbYG51bWJlcmBdKSxcbiAgICAgICAgc3RhdENyYzogZW1aaXAuY3dyYXAoYHppcHN0cnVjdF9zdGF0X2NyY2AsIGBudW1iZXJgLCBbYG51bWJlcmBdKSxcbiAgICAgICAgZXJyb3I6IGVtWmlwLmN3cmFwKGB6aXBzdHJ1Y3RfZXJyb3JgLCBgbnVtYmVyYCwgW10pLFxuICAgICAgICBlcnJvclM6IGVtWmlwLmN3cmFwKGB6aXBzdHJ1Y3RfZXJyb3JTYCwgYG51bWJlcmAsIFtdKSxcbiAgICAgICAgZXJyb3JDb2RlWmlwOiBlbVppcC5jd3JhcChgemlwc3RydWN0X2Vycm9yX2NvZGVfemlwYCwgYG51bWJlcmAsIFtgbnVtYmVyYF0pLFxuICAgIH0sXG59KTtcbmV4cG9ydHMubWFrZUludGVyZmFjZSA9IG1ha2VJbnRlcmZhY2U7XG4iLCAiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLlppcE9wZW5GUyA9IGV4cG9ydHMuZ2V0QXJjaGl2ZVBhcnQgPSB2b2lkIDA7XG5jb25zdCBmc2xpYl8xID0gcmVxdWlyZShcIkB5YXJucGtnL2ZzbGliXCIpO1xuY29uc3QgZnNsaWJfMiA9IHJlcXVpcmUoXCJAeWFybnBrZy9mc2xpYlwiKTtcbmNvbnN0IGxpYnppcF8xID0gcmVxdWlyZShcIkB5YXJucGtnL2xpYnppcFwiKTtcbi8qKlxuICogRXh0cmFjdHMgdGhlIGFyY2hpdmUgcGFydCAoZW5kaW5nIGluIHRoZSBmaXJzdCBpbnN0YW5jZSBvZiBgZXh0ZW5zaW9uYCkgZnJvbSBhIHBhdGguXG4gKlxuICogVGhlIGluZGV4T2YtYmFzZWQgaW1wbGVtZW50YXRpb24gaXMgfjMuN3ggZmFzdGVyIHRoYW4gYSBSZWdFeHAtYmFzZWQgaW1wbGVtZW50YXRpb24uXG4gKi9cbmZ1bmN0aW9uIGdldEFyY2hpdmVQYXJ0KHBhdGgsIGV4dGVuc2lvbikge1xuICAgIGxldCBpZHggPSBwYXRoLmluZGV4T2YoZXh0ZW5zaW9uKTtcbiAgICBpZiAoaWR4IDw9IDApXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIGxldCBuZXh0Q2hhcklkeCA9IGlkeDtcbiAgICB3aGlsZSAoaWR4ID49IDApIHtcbiAgICAgICAgbmV4dENoYXJJZHggPSBpZHggKyBleHRlbnNpb24ubGVuZ3RoO1xuICAgICAgICBpZiAocGF0aFtuZXh0Q2hhcklkeF0gPT09IGZzbGliXzIucHBhdGguc2VwKVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIC8vIERpc2FsbG93IGZpbGVzIG5hbWVkIFwiLnppcFwiXG4gICAgICAgIGlmIChwYXRoW2lkeCAtIDFdID09PSBmc2xpYl8yLnBwYXRoLnNlcClcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICBpZHggPSBwYXRoLmluZGV4T2YoZXh0ZW5zaW9uLCBuZXh0Q2hhcklkeCk7XG4gICAgfVxuICAgIC8vIFRoZSBwYXRoIGVpdGhlciBoYXMgdG8gZW5kIGluIFwiLnppcFwiIG9yIGNvbnRhaW4gYW4gYXJjaGl2ZSBzdWJwYXRoIChcIi56aXAvLi4uXCIpXG4gICAgaWYgKHBhdGgubGVuZ3RoID4gbmV4dENoYXJJZHggJiYgcGF0aFtuZXh0Q2hhcklkeF0gIT09IGZzbGliXzIucHBhdGguc2VwKVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICByZXR1cm4gcGF0aC5zbGljZSgwLCBuZXh0Q2hhcklkeCk7XG59XG5leHBvcnRzLmdldEFyY2hpdmVQYXJ0ID0gZ2V0QXJjaGl2ZVBhcnQ7XG5jbGFzcyBaaXBPcGVuRlMgZXh0ZW5kcyBmc2xpYl8xLk1vdW50RlMge1xuICAgIHN0YXRpYyBhc3luYyBvcGVuUHJvbWlzZShmbiwgb3B0cykge1xuICAgICAgICBjb25zdCB6aXBPcGVuRnMgPSBuZXcgWmlwT3BlbkZTKG9wdHMpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmV0dXJuIGF3YWl0IGZuKHppcE9wZW5Gcyk7XG4gICAgICAgIH1cbiAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICB6aXBPcGVuRnMuc2F2ZUFuZENsb3NlKCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgY29uc3RydWN0b3Iob3B0cyA9IHt9KSB7XG4gICAgICAgIGNvbnN0IGZpbGVFeHRlbnNpb25zID0gb3B0cy5maWxlRXh0ZW5zaW9ucztcbiAgICAgICAgY29uc3QgcmVhZE9ubHlBcmNoaXZlcyA9IG9wdHMucmVhZE9ubHlBcmNoaXZlcztcbiAgICAgICAgY29uc3QgZ2V0TW91bnRQb2ludCA9IHR5cGVvZiBmaWxlRXh0ZW5zaW9ucyA9PT0gYHVuZGVmaW5lZGBcbiAgICAgICAgICAgID8gcGF0aCA9PiBnZXRBcmNoaXZlUGFydChwYXRoLCBgLnppcGApXG4gICAgICAgICAgICA6IHBhdGggPT4ge1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgZXh0ZW5zaW9uIG9mIGZpbGVFeHRlbnNpb25zKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGdldEFyY2hpdmVQYXJ0KHBhdGgsIGV4dGVuc2lvbik7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9O1xuICAgICAgICBjb25zdCBmYWN0b3J5U3luYyA9IChiYXNlRnMsIHApID0+IHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgbGliemlwXzEuWmlwRlMocCwge1xuICAgICAgICAgICAgICAgIGJhc2VGcyxcbiAgICAgICAgICAgICAgICByZWFkT25seTogcmVhZE9ubHlBcmNoaXZlcyxcbiAgICAgICAgICAgICAgICBzdGF0czogYmFzZUZzLnN0YXRTeW5jKHApLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IGZhY3RvcnlQcm9taXNlID0gYXN5bmMgKGJhc2VGcywgcCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgemlwT3B0aW9ucyA9IHtcbiAgICAgICAgICAgICAgICBiYXNlRnMsXG4gICAgICAgICAgICAgICAgcmVhZE9ubHk6IHJlYWRPbmx5QXJjaGl2ZXMsXG4gICAgICAgICAgICAgICAgc3RhdHM6IGF3YWl0IGJhc2VGcy5zdGF0UHJvbWlzZShwKSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgbGliemlwXzEuWmlwRlMocCwgemlwT3B0aW9ucyk7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9O1xuICAgICAgICBzdXBlcih7XG4gICAgICAgICAgICAuLi5vcHRzLFxuICAgICAgICAgICAgZmFjdG9yeVN5bmMsXG4gICAgICAgICAgICBmYWN0b3J5UHJvbWlzZSxcbiAgICAgICAgICAgIGdldE1vdW50UG9pbnQsXG4gICAgICAgIH0pO1xuICAgIH1cbn1cbmV4cG9ydHMuWmlwT3BlbkZTID0gWmlwT3BlbkZTO1xuIiwgIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5aaXBGUyA9IGV4cG9ydHMuTGliemlwRXJyb3IgPSBleHBvcnRzLm1ha2VFbXB0eUFyY2hpdmUgPSBleHBvcnRzLkRFRkFVTFRfQ09NUFJFU1NJT05fTEVWRUwgPSB2b2lkIDA7XG5jb25zdCB0c2xpYl8xID0gcmVxdWlyZShcInRzbGliXCIpO1xuY29uc3QgZnNsaWJfMSA9IHJlcXVpcmUoXCJAeWFybnBrZy9mc2xpYlwiKTtcbmNvbnN0IGZzbGliXzIgPSByZXF1aXJlKFwiQHlhcm5wa2cvZnNsaWJcIik7XG5jb25zdCBmc2xpYl8zID0gcmVxdWlyZShcIkB5YXJucGtnL2ZzbGliXCIpO1xuY29uc3QgZnNsaWJfNCA9IHJlcXVpcmUoXCJAeWFybnBrZy9mc2xpYlwiKTtcbmNvbnN0IGZzbGliXzUgPSByZXF1aXJlKFwiQHlhcm5wa2cvZnNsaWJcIik7XG5jb25zdCBmc2xpYl82ID0gcmVxdWlyZShcIkB5YXJucGtnL2ZzbGliXCIpO1xuY29uc3QgZnNfMSA9IHJlcXVpcmUoXCJmc1wiKTtcbmNvbnN0IHN0cmVhbV8xID0gcmVxdWlyZShcInN0cmVhbVwiKTtcbmNvbnN0IHV0aWxfMSA9IHJlcXVpcmUoXCJ1dGlsXCIpO1xuY29uc3QgemxpYl8xID0gdHNsaWJfMS5fX2ltcG9ydERlZmF1bHQocmVxdWlyZShcInpsaWJcIikpO1xuY29uc3QgaW5zdGFuY2VfMSA9IHJlcXVpcmUoXCIuL2luc3RhbmNlXCIpO1xuZXhwb3J0cy5ERUZBVUxUX0NPTVBSRVNTSU9OX0xFVkVMID0gYG1peGVkYDtcbmZ1bmN0aW9uIHRvVW5peFRpbWVzdGFtcCh0aW1lKSB7XG4gICAgaWYgKHR5cGVvZiB0aW1lID09PSBgc3RyaW5nYCAmJiBTdHJpbmcoK3RpbWUpID09PSB0aW1lKVxuICAgICAgICByZXR1cm4gK3RpbWU7XG4gICAgaWYgKHR5cGVvZiB0aW1lID09PSBgbnVtYmVyYCAmJiBOdW1iZXIuaXNGaW5pdGUodGltZSkpIHtcbiAgICAgICAgaWYgKHRpbWUgPCAwKSB7XG4gICAgICAgICAgICByZXR1cm4gRGF0ZS5ub3coKSAvIDEwMDA7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGltZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBjb252ZXJ0IHRvIDEyMy40NTYgVU5JWCB0aW1lc3RhbXBcbiAgICBpZiAodXRpbF8xLnR5cGVzLmlzRGF0ZSh0aW1lKSlcbiAgICAgICAgcmV0dXJuIHRpbWUuZ2V0VGltZSgpIC8gMTAwMDtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgdGltZWApO1xufVxuZnVuY3Rpb24gbWFrZUVtcHR5QXJjaGl2ZSgpIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20oW1xuICAgICAgICAweDUwLCAweDRCLCAweDA1LCAweDA2LFxuICAgICAgICAweDAwLCAweDAwLCAweDAwLCAweDAwLFxuICAgICAgICAweDAwLCAweDAwLCAweDAwLCAweDAwLFxuICAgICAgICAweDAwLCAweDAwLCAweDAwLCAweDAwLFxuICAgICAgICAweDAwLCAweDAwLCAweDAwLCAweDAwLFxuICAgICAgICAweDAwLCAweDAwLFxuICAgIF0pO1xufVxuZXhwb3J0cy5tYWtlRW1wdHlBcmNoaXZlID0gbWFrZUVtcHR5QXJjaGl2ZTtcbmNsYXNzIExpYnppcEVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICAgIGNvbnN0cnVjdG9yKG1lc3NhZ2UsIGNvZGUpIHtcbiAgICAgICAgc3VwZXIobWVzc2FnZSk7XG4gICAgICAgIHRoaXMubmFtZSA9IGBMaWJ6aXAgRXJyb3JgO1xuICAgICAgICB0aGlzLmNvZGUgPSBjb2RlO1xuICAgIH1cbn1cbmV4cG9ydHMuTGliemlwRXJyb3IgPSBMaWJ6aXBFcnJvcjtcbmNsYXNzIFppcEZTIGV4dGVuZHMgZnNsaWJfMS5CYXNlUG9ydGFibGVGYWtlRlMge1xuICAgIGNvbnN0cnVjdG9yKHNvdXJjZSwgb3B0cyA9IHt9KSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMubHpTb3VyY2UgPSBudWxsO1xuICAgICAgICB0aGlzLmxpc3RpbmdzID0gbmV3IE1hcCgpO1xuICAgICAgICB0aGlzLmVudHJpZXMgPSBuZXcgTWFwKCk7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBBIGNhY2hlIG9mIGluZGljZXMgbWFwcGVkIHRvIGZpbGUgc291cmNlcy5cbiAgICAgICAgICogUG9wdWxhdGVkIGJ5IGBzZXRGaWxlU291cmNlYCBjYWxscy5cbiAgICAgICAgICogUmVxdWlyZWQgZm9yIHN1cHBvcnRpbmcgcmVhZCBhZnRlciB3cml0ZS5cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMuZmlsZVNvdXJjZXMgPSBuZXcgTWFwKCk7XG4gICAgICAgIHRoaXMuZmRzID0gbmV3IE1hcCgpO1xuICAgICAgICB0aGlzLm5leHRGZCA9IDA7XG4gICAgICAgIHRoaXMucmVhZHkgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5yZWFkT25seSA9IGZhbHNlO1xuICAgICAgICBjb25zdCBwYXRoT3B0aW9ucyA9IG9wdHM7XG4gICAgICAgIHRoaXMubGV2ZWwgPSB0eXBlb2YgcGF0aE9wdGlvbnMubGV2ZWwgIT09IGB1bmRlZmluZWRgXG4gICAgICAgICAgICA/IHBhdGhPcHRpb25zLmxldmVsXG4gICAgICAgICAgICA6IGV4cG9ydHMuREVGQVVMVF9DT01QUkVTU0lPTl9MRVZFTDtcbiAgICAgICAgc291cmNlICE9PSBudWxsICYmIHNvdXJjZSAhPT0gdm9pZCAwID8gc291cmNlIDogKHNvdXJjZSA9IG1ha2VFbXB0eUFyY2hpdmUoKSk7XG4gICAgICAgIGlmICh0eXBlb2Ygc291cmNlID09PSBgc3RyaW5nYCkge1xuICAgICAgICAgICAgY29uc3QgeyBiYXNlRnMgPSBuZXcgZnNsaWJfMi5Ob2RlRlMoKSB9ID0gcGF0aE9wdGlvbnM7XG4gICAgICAgICAgICB0aGlzLmJhc2VGcyA9IGJhc2VGcztcbiAgICAgICAgICAgIHRoaXMucGF0aCA9IHNvdXJjZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucGF0aCA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLmJhc2VGcyA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9wdHMuc3RhdHMpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdHMgPSBvcHRzLnN0YXRzO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBzb3VyY2UgPT09IGBzdHJpbmdgKSB7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0cyA9IHRoaXMuYmFzZUZzLnN0YXRTeW5jKHNvdXJjZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3IuY29kZSA9PT0gYEVOT0VOVGAgJiYgcGF0aE9wdGlvbnMuY3JlYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXRzID0gZnNsaWJfNS5zdGF0VXRpbHMubWFrZURlZmF1bHRTdGF0cygpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRzID0gZnNsaWJfNS5zdGF0VXRpbHMubWFrZURlZmF1bHRTdGF0cygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMubGliemlwID0gKDAsIGluc3RhbmNlXzEuZ2V0SW5zdGFuY2UpKCk7XG4gICAgICAgIGNvbnN0IGVyclB0ciA9IHRoaXMubGliemlwLm1hbGxvYyg0KTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGxldCBmbGFncyA9IDA7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHNvdXJjZSA9PT0gYHN0cmluZ2AgJiYgcGF0aE9wdGlvbnMuY3JlYXRlKVxuICAgICAgICAgICAgICAgIGZsYWdzIHw9IHRoaXMubGliemlwLlpJUF9DUkVBVEUgfCB0aGlzLmxpYnppcC5aSVBfVFJVTkNBVEU7XG4gICAgICAgICAgICBpZiAob3B0cy5yZWFkT25seSkge1xuICAgICAgICAgICAgICAgIGZsYWdzIHw9IHRoaXMubGliemlwLlpJUF9SRE9OTFk7XG4gICAgICAgICAgICAgICAgdGhpcy5yZWFkT25seSA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodHlwZW9mIHNvdXJjZSA9PT0gYHN0cmluZ2ApIHtcbiAgICAgICAgICAgICAgICB0aGlzLnppcCA9IHRoaXMubGliemlwLm9wZW4oZnNsaWJfNi5ucGF0aC5mcm9tUG9ydGFibGVQYXRoKHNvdXJjZSksIGZsYWdzLCBlcnJQdHIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbHpTb3VyY2UgPSB0aGlzLmFsbG9jYXRlVW5hdHRhY2hlZFNvdXJjZShzb3VyY2UpO1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuemlwID0gdGhpcy5saWJ6aXAub3BlbkZyb21Tb3VyY2UobHpTb3VyY2UsIGZsYWdzLCBlcnJQdHIpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmx6U291cmNlID0gbHpTb3VyY2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmxpYnppcC5zb3VyY2UuZnJlZShselNvdXJjZSk7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLnppcCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGVycm9yID0gdGhpcy5saWJ6aXAuc3RydWN0LmVycm9yUygpO1xuICAgICAgICAgICAgICAgIHRoaXMubGliemlwLmVycm9yLmluaXRXaXRoQ29kZShlcnJvciwgdGhpcy5saWJ6aXAuZ2V0VmFsdWUoZXJyUHRyLCBgaTMyYCkpO1xuICAgICAgICAgICAgICAgIHRocm93IHRoaXMubWFrZUxpYnppcEVycm9yKGVycm9yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgIHRoaXMubGliemlwLmZyZWUoZXJyUHRyKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmxpc3RpbmdzLnNldChmc2xpYl82LlBvcnRhYmxlUGF0aC5yb290LCBuZXcgU2V0KCkpO1xuICAgICAgICBjb25zdCBlbnRyeUNvdW50ID0gdGhpcy5saWJ6aXAuZ2V0TnVtRW50cmllcyh0aGlzLnppcCwgMCk7XG4gICAgICAgIGZvciAobGV0IHQgPSAwOyB0IDwgZW50cnlDb3VudDsgKyt0KSB7XG4gICAgICAgICAgICBjb25zdCByYXcgPSB0aGlzLmxpYnppcC5nZXROYW1lKHRoaXMuemlwLCB0LCAwKTtcbiAgICAgICAgICAgIGlmIChmc2xpYl82LnBwYXRoLmlzQWJzb2x1dGUocmF3KSlcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIGNvbnN0IHAgPSBmc2xpYl82LnBwYXRoLnJlc29sdmUoZnNsaWJfNi5Qb3J0YWJsZVBhdGgucm9vdCwgcmF3KTtcbiAgICAgICAgICAgIHRoaXMucmVnaXN0ZXJFbnRyeShwLCB0KTtcbiAgICAgICAgICAgIC8vIElmIHRoZSByYXcgcGF0aCBpcyBhIGRpcmVjdG9yeSwgcmVnaXN0ZXIgaXRcbiAgICAgICAgICAgIC8vIHRvIHByZXZlbnQgZW1wdHkgZm9sZGVyIGJlaW5nIHNraXBwZWRcbiAgICAgICAgICAgIGlmIChyYXcuZW5kc1dpdGgoYC9gKSkge1xuICAgICAgICAgICAgICAgIHRoaXMucmVnaXN0ZXJMaXN0aW5nKHApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuc3ltbGlua0NvdW50ID0gdGhpcy5saWJ6aXAuZXh0LmNvdW50U3ltbGlua3ModGhpcy56aXApO1xuICAgICAgICBpZiAodGhpcy5zeW1saW5rQ291bnQgPT09IC0xKVxuICAgICAgICAgICAgdGhyb3cgdGhpcy5tYWtlTGliemlwRXJyb3IodGhpcy5saWJ6aXAuZ2V0RXJyb3IodGhpcy56aXApKTtcbiAgICAgICAgdGhpcy5yZWFkeSA9IHRydWU7XG4gICAgfVxuICAgIG1ha2VMaWJ6aXBFcnJvcihlcnJvcikge1xuICAgICAgICBjb25zdCBlcnJvckNvZGUgPSB0aGlzLmxpYnppcC5zdHJ1Y3QuZXJyb3JDb2RlWmlwKGVycm9yKTtcbiAgICAgICAgY29uc3Qgc3RyZXJyb3IgPSB0aGlzLmxpYnppcC5lcnJvci5zdHJlcnJvcihlcnJvcik7XG4gICAgICAgIGNvbnN0IGxpYnppcEVycm9yID0gbmV3IExpYnppcEVycm9yKHN0cmVycm9yLCB0aGlzLmxpYnppcC5lcnJvcnNbZXJyb3JDb2RlXSk7XG4gICAgICAgIC8vIFRoaXMgZXJyb3Igc2hvdWxkIG5ldmVyIGNvbWUgdXAgYmVjYXVzZSBvZiB0aGUgZmlsZSBzb3VyY2UgY2FjaGVcbiAgICAgICAgaWYgKGVycm9yQ29kZSA9PT0gdGhpcy5saWJ6aXAuZXJyb3JzLlpJUF9FUl9DSEFOR0VEKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBBc3NlcnRpb24gZmFpbGVkOiBVbmV4cGVjdGVkIGxpYnppcCBlcnJvcjogJHtsaWJ6aXBFcnJvci5tZXNzYWdlfWApO1xuICAgICAgICByZXR1cm4gbGliemlwRXJyb3I7XG4gICAgfVxuICAgIGdldEV4dHJhY3RIaW50KGhpbnRzKSB7XG4gICAgICAgIGZvciAoY29uc3QgZmlsZU5hbWUgb2YgdGhpcy5lbnRyaWVzLmtleXMoKSkge1xuICAgICAgICAgICAgY29uc3QgZXh0ID0gdGhpcy5wYXRoVXRpbHMuZXh0bmFtZShmaWxlTmFtZSk7XG4gICAgICAgICAgICBpZiAoaGludHMucmVsZXZhbnRFeHRlbnNpb25zLmhhcyhleHQpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBnZXRBbGxGaWxlcygpIHtcbiAgICAgICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5lbnRyaWVzLmtleXMoKSk7XG4gICAgfVxuICAgIGdldFJlYWxQYXRoKCkge1xuICAgICAgICBpZiAoIXRoaXMucGF0aClcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgWmlwRlMgZG9uJ3QgaGF2ZSByZWFsIHBhdGhzIHdoZW4gbG9hZGVkIGZyb20gYSBidWZmZXJgKTtcbiAgICAgICAgcmV0dXJuIHRoaXMucGF0aDtcbiAgICB9XG4gICAgZ2V0QnVmZmVyQW5kQ2xvc2UoKSB7XG4gICAgICAgIHRoaXMucHJlcGFyZUNsb3NlKCk7XG4gICAgICAgIGlmICghdGhpcy5selNvdXJjZSlcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgWmlwRlMgd2FzIG5vdCBjcmVhdGVkIGZyb20gYSBCdWZmZXJgKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIC8vIFByZXZlbnQgY2xvc2UgZnJvbSBjbGVhbmluZyB1cCB0aGUgc291cmNlXG4gICAgICAgICAgICB0aGlzLmxpYnppcC5zb3VyY2Uua2VlcCh0aGlzLmx6U291cmNlKTtcbiAgICAgICAgICAgIC8vIENsb3NlIHRoZSB6aXAgYXJjaGl2ZVxuICAgICAgICAgICAgaWYgKHRoaXMubGliemlwLmNsb3NlKHRoaXMuemlwKSA9PT0gLTEpXG4gICAgICAgICAgICAgICAgdGhyb3cgdGhpcy5tYWtlTGliemlwRXJyb3IodGhpcy5saWJ6aXAuZ2V0RXJyb3IodGhpcy56aXApKTtcbiAgICAgICAgICAgIC8vIE9wZW4gdGhlIHNvdXJjZSBmb3IgcmVhZGluZ1xuICAgICAgICAgICAgaWYgKHRoaXMubGliemlwLnNvdXJjZS5vcGVuKHRoaXMubHpTb3VyY2UpID09PSAtMSlcbiAgICAgICAgICAgICAgICB0aHJvdyB0aGlzLm1ha2VMaWJ6aXBFcnJvcih0aGlzLmxpYnppcC5zb3VyY2UuZXJyb3IodGhpcy5selNvdXJjZSkpO1xuICAgICAgICAgICAgLy8gTW92ZSB0byB0aGUgZW5kIG9mIHNvdXJjZVxuICAgICAgICAgICAgaWYgKHRoaXMubGliemlwLnNvdXJjZS5zZWVrKHRoaXMubHpTb3VyY2UsIDAsIDAsIHRoaXMubGliemlwLlNFRUtfRU5EKSA9PT0gLTEpXG4gICAgICAgICAgICAgICAgdGhyb3cgdGhpcy5tYWtlTGliemlwRXJyb3IodGhpcy5saWJ6aXAuc291cmNlLmVycm9yKHRoaXMubHpTb3VyY2UpKTtcbiAgICAgICAgICAgIC8vIEdldCB0aGUgc2l6ZSBvZiBzb3VyY2VcbiAgICAgICAgICAgIGNvbnN0IHNpemUgPSB0aGlzLmxpYnppcC5zb3VyY2UudGVsbCh0aGlzLmx6U291cmNlKTtcbiAgICAgICAgICAgIGlmIChzaXplID09PSAtMSlcbiAgICAgICAgICAgICAgICB0aHJvdyB0aGlzLm1ha2VMaWJ6aXBFcnJvcih0aGlzLmxpYnppcC5zb3VyY2UuZXJyb3IodGhpcy5selNvdXJjZSkpO1xuICAgICAgICAgICAgLy8gTW92ZSB0byB0aGUgc3RhcnQgb2Ygc291cmNlXG4gICAgICAgICAgICBpZiAodGhpcy5saWJ6aXAuc291cmNlLnNlZWsodGhpcy5selNvdXJjZSwgMCwgMCwgdGhpcy5saWJ6aXAuU0VFS19TRVQpID09PSAtMSlcbiAgICAgICAgICAgICAgICB0aHJvdyB0aGlzLm1ha2VMaWJ6aXBFcnJvcih0aGlzLmxpYnppcC5zb3VyY2UuZXJyb3IodGhpcy5selNvdXJjZSkpO1xuICAgICAgICAgICAgY29uc3QgYnVmZmVyID0gdGhpcy5saWJ6aXAubWFsbG9jKHNpemUpO1xuICAgICAgICAgICAgaWYgKCFidWZmZXIpXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb3VsZG4ndCBhbGxvY2F0ZSBlbm91Z2ggbWVtb3J5YCk7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJjID0gdGhpcy5saWJ6aXAuc291cmNlLnJlYWQodGhpcy5selNvdXJjZSwgYnVmZmVyLCBzaXplKTtcbiAgICAgICAgICAgICAgICBpZiAocmMgPT09IC0xKVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyB0aGlzLm1ha2VMaWJ6aXBFcnJvcih0aGlzLmxpYnppcC5zb3VyY2UuZXJyb3IodGhpcy5selNvdXJjZSkpO1xuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHJjIDwgc2l6ZSlcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbmNvbXBsZXRlIHJlYWRgKTtcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChyYyA+IHNpemUpXG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgT3ZlcnJlYWRgKTtcbiAgICAgICAgICAgICAgICBjb25zdCBtZW1vcnkgPSB0aGlzLmxpYnppcC5IRUFQVTguc3ViYXJyYXkoYnVmZmVyLCBidWZmZXIgKyBzaXplKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gQnVmZmVyLmZyb20obWVtb3J5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgICAgIHRoaXMubGliemlwLmZyZWUoYnVmZmVyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgIHRoaXMubGliemlwLnNvdXJjZS5jbG9zZSh0aGlzLmx6U291cmNlKTtcbiAgICAgICAgICAgIHRoaXMubGliemlwLnNvdXJjZS5mcmVlKHRoaXMubHpTb3VyY2UpO1xuICAgICAgICAgICAgdGhpcy5yZWFkeSA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuICAgIHByZXBhcmVDbG9zZSgpIHtcbiAgICAgICAgaWYgKCF0aGlzLnJlYWR5KVxuICAgICAgICAgICAgdGhyb3cgZnNsaWJfNS5lcnJvcnMuRUJVU1koYGFyY2hpdmUgY2xvc2VkLCBjbG9zZWApO1xuICAgICAgICAoMCwgZnNsaWJfNC51bndhdGNoQWxsRmlsZXMpKHRoaXMpO1xuICAgIH1cbiAgICBzYXZlQW5kQ2xvc2UoKSB7XG4gICAgICAgIGlmICghdGhpcy5wYXRoIHx8ICF0aGlzLmJhc2VGcylcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgWmlwRlMgY2Fubm90IGJlIHNhdmVkIGFuZCBtdXN0IGJlIGRpc2NhcmRlZCB3aGVuIGxvYWRlZCBmcm9tIGEgYnVmZmVyYCk7XG4gICAgICAgIHRoaXMucHJlcGFyZUNsb3NlKCk7XG4gICAgICAgIGlmICh0aGlzLnJlYWRPbmx5KSB7XG4gICAgICAgICAgICB0aGlzLmRpc2NhcmRBbmRDbG9zZSgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG5ld01vZGUgPSB0aGlzLmJhc2VGcy5leGlzdHNTeW5jKHRoaXMucGF0aCkgfHwgdGhpcy5zdGF0cy5tb2RlID09PSBmc2xpYl81LnN0YXRVdGlscy5ERUZBVUxUX01PREVcbiAgICAgICAgICAgID8gdW5kZWZpbmVkXG4gICAgICAgICAgICA6IHRoaXMuc3RhdHMubW9kZTtcbiAgICAgICAgLy8gemlwX2Nsb3NlIGRvZXNuJ3QgcGVyc2lzdCBlbXB0eSBhcmNoaXZlc1xuICAgICAgICBpZiAodGhpcy5lbnRyaWVzLnNpemUgPT09IDApIHtcbiAgICAgICAgICAgIHRoaXMuZGlzY2FyZEFuZENsb3NlKCk7XG4gICAgICAgICAgICB0aGlzLmJhc2VGcy53cml0ZUZpbGVTeW5jKHRoaXMucGF0aCwgbWFrZUVtcHR5QXJjaGl2ZSgpLCB7IG1vZGU6IG5ld01vZGUgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjb25zdCByYyA9IHRoaXMubGliemlwLmNsb3NlKHRoaXMuemlwKTtcbiAgICAgICAgICAgIGlmIChyYyA9PT0gLTEpXG4gICAgICAgICAgICAgICAgdGhyb3cgdGhpcy5tYWtlTGliemlwRXJyb3IodGhpcy5saWJ6aXAuZ2V0RXJyb3IodGhpcy56aXApKTtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgbmV3TW9kZSAhPT0gYHVuZGVmaW5lZGApIHtcbiAgICAgICAgICAgICAgICB0aGlzLmJhc2VGcy5jaG1vZFN5bmModGhpcy5wYXRoLCBuZXdNb2RlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJlYWR5ID0gZmFsc2U7XG4gICAgfVxuICAgIGRpc2NhcmRBbmRDbG9zZSgpIHtcbiAgICAgICAgdGhpcy5wcmVwYXJlQ2xvc2UoKTtcbiAgICAgICAgdGhpcy5saWJ6aXAuZGlzY2FyZCh0aGlzLnppcCk7XG4gICAgICAgIHRoaXMucmVhZHkgPSBmYWxzZTtcbiAgICB9XG4gICAgcmVzb2x2ZShwKSB7XG4gICAgICAgIHJldHVybiBmc2xpYl82LnBwYXRoLnJlc29sdmUoZnNsaWJfNi5Qb3J0YWJsZVBhdGgucm9vdCwgcCk7XG4gICAgfVxuICAgIGFzeW5jIG9wZW5Qcm9taXNlKHAsIGZsYWdzLCBtb2RlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wZW5TeW5jKHAsIGZsYWdzLCBtb2RlKTtcbiAgICB9XG4gICAgb3BlblN5bmMocCwgZmxhZ3MsIG1vZGUpIHtcbiAgICAgICAgY29uc3QgZmQgPSB0aGlzLm5leHRGZCsrO1xuICAgICAgICB0aGlzLmZkcy5zZXQoZmQsIHsgY3Vyc29yOiAwLCBwIH0pO1xuICAgICAgICByZXR1cm4gZmQ7XG4gICAgfVxuICAgIGhhc09wZW5GaWxlSGFuZGxlcygpIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5mZHMuc2l6ZTtcbiAgICB9XG4gICAgYXN5bmMgb3BlbmRpclByb21pc2UocCwgb3B0cykge1xuICAgICAgICByZXR1cm4gdGhpcy5vcGVuZGlyU3luYyhwLCBvcHRzKTtcbiAgICB9XG4gICAgb3BlbmRpclN5bmMocCwgb3B0cyA9IHt9KSB7XG4gICAgICAgIGNvbnN0IHJlc29sdmVkUCA9IHRoaXMucmVzb2x2ZUZpbGVuYW1lKGBvcGVuZGlyICcke3B9J2AsIHApO1xuICAgICAgICBpZiAoIXRoaXMuZW50cmllcy5oYXMocmVzb2x2ZWRQKSAmJiAhdGhpcy5saXN0aW5ncy5oYXMocmVzb2x2ZWRQKSlcbiAgICAgICAgICAgIHRocm93IGZzbGliXzUuZXJyb3JzLkVOT0VOVChgb3BlbmRpciAnJHtwfSdgKTtcbiAgICAgICAgY29uc3QgZGlyZWN0b3J5TGlzdGluZyA9IHRoaXMubGlzdGluZ3MuZ2V0KHJlc29sdmVkUCk7XG4gICAgICAgIGlmICghZGlyZWN0b3J5TGlzdGluZylcbiAgICAgICAgICAgIHRocm93IGZzbGliXzUuZXJyb3JzLkVOT1RESVIoYG9wZW5kaXIgJyR7cH0nYCk7XG4gICAgICAgIGNvbnN0IGVudHJpZXMgPSBbLi4uZGlyZWN0b3J5TGlzdGluZ107XG4gICAgICAgIGNvbnN0IGZkID0gdGhpcy5vcGVuU3luYyhyZXNvbHZlZFAsIGByYCk7XG4gICAgICAgIGNvbnN0IG9uQ2xvc2UgPSAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNsb3NlU3luYyhmZCk7XG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiAoMCwgZnNsaWJfMy5vcGVuZGlyKSh0aGlzLCByZXNvbHZlZFAsIGVudHJpZXMsIHsgb25DbG9zZSB9KTtcbiAgICB9XG4gICAgYXN5bmMgcmVhZFByb21pc2UoZmQsIGJ1ZmZlciwgb2Zmc2V0LCBsZW5ndGgsIHBvc2l0aW9uKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlYWRTeW5jKGZkLCBidWZmZXIsIG9mZnNldCwgbGVuZ3RoLCBwb3NpdGlvbik7XG4gICAgfVxuICAgIHJlYWRTeW5jKGZkLCBidWZmZXIsIG9mZnNldCA9IDAsIGxlbmd0aCA9IGJ1ZmZlci5ieXRlTGVuZ3RoLCBwb3NpdGlvbiA9IC0xKSB7XG4gICAgICAgIGNvbnN0IGVudHJ5ID0gdGhpcy5mZHMuZ2V0KGZkKTtcbiAgICAgICAgaWYgKHR5cGVvZiBlbnRyeSA9PT0gYHVuZGVmaW5lZGApXG4gICAgICAgICAgICB0aHJvdyBmc2xpYl81LmVycm9ycy5FQkFERihgcmVhZGApO1xuICAgICAgICBjb25zdCByZWFsUG9zaXRpb24gPSBwb3NpdGlvbiA9PT0gLTEgfHwgcG9zaXRpb24gPT09IG51bGxcbiAgICAgICAgICAgID8gZW50cnkuY3Vyc29yXG4gICAgICAgICAgICA6IHBvc2l0aW9uO1xuICAgICAgICBjb25zdCBzb3VyY2UgPSB0aGlzLnJlYWRGaWxlU3luYyhlbnRyeS5wKTtcbiAgICAgICAgc291cmNlLmNvcHkoYnVmZmVyLCBvZmZzZXQsIHJlYWxQb3NpdGlvbiwgcmVhbFBvc2l0aW9uICsgbGVuZ3RoKTtcbiAgICAgICAgY29uc3QgYnl0ZXNSZWFkID0gTWF0aC5tYXgoMCwgTWF0aC5taW4oc291cmNlLmxlbmd0aCAtIHJlYWxQb3NpdGlvbiwgbGVuZ3RoKSk7XG4gICAgICAgIGlmIChwb3NpdGlvbiA9PT0gLTEgfHwgcG9zaXRpb24gPT09IG51bGwpXG4gICAgICAgICAgICBlbnRyeS5jdXJzb3IgKz0gYnl0ZXNSZWFkO1xuICAgICAgICByZXR1cm4gYnl0ZXNSZWFkO1xuICAgIH1cbiAgICBhc3luYyB3cml0ZVByb21pc2UoZmQsIGJ1ZmZlciwgb2Zmc2V0LCBsZW5ndGgsIHBvc2l0aW9uKSB7XG4gICAgICAgIGlmICh0eXBlb2YgYnVmZmVyID09PSBgc3RyaW5nYCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMud3JpdGVTeW5jKGZkLCBidWZmZXIsIHBvc2l0aW9uKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLndyaXRlU3luYyhmZCwgYnVmZmVyLCBvZmZzZXQsIGxlbmd0aCwgcG9zaXRpb24pO1xuICAgICAgICB9XG4gICAgfVxuICAgIHdyaXRlU3luYyhmZCwgYnVmZmVyLCBvZmZzZXQsIGxlbmd0aCwgcG9zaXRpb24pIHtcbiAgICAgICAgY29uc3QgZW50cnkgPSB0aGlzLmZkcy5nZXQoZmQpO1xuICAgICAgICBpZiAodHlwZW9mIGVudHJ5ID09PSBgdW5kZWZpbmVkYClcbiAgICAgICAgICAgIHRocm93IGZzbGliXzUuZXJyb3JzLkVCQURGKGByZWFkYCk7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5pbXBsZW1lbnRlZGApO1xuICAgIH1cbiAgICBhc3luYyBjbG9zZVByb21pc2UoZmQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2xvc2VTeW5jKGZkKTtcbiAgICB9XG4gICAgY2xvc2VTeW5jKGZkKSB7XG4gICAgICAgIGNvbnN0IGVudHJ5ID0gdGhpcy5mZHMuZ2V0KGZkKTtcbiAgICAgICAgaWYgKHR5cGVvZiBlbnRyeSA9PT0gYHVuZGVmaW5lZGApXG4gICAgICAgICAgICB0aHJvdyBmc2xpYl81LmVycm9ycy5FQkFERihgcmVhZGApO1xuICAgICAgICB0aGlzLmZkcy5kZWxldGUoZmQpO1xuICAgIH1cbiAgICBjcmVhdGVSZWFkU3RyZWFtKHAsIHsgZW5jb2RpbmcgfSA9IHt9KSB7XG4gICAgICAgIGlmIChwID09PSBudWxsKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmltcGxlbWVudGVkYCk7XG4gICAgICAgIGNvbnN0IGZkID0gdGhpcy5vcGVuU3luYyhwLCBgcmApO1xuICAgICAgICBjb25zdCBzdHJlYW0gPSBPYmplY3QuYXNzaWduKG5ldyBzdHJlYW1fMS5QYXNzVGhyb3VnaCh7XG4gICAgICAgICAgICBlbWl0Q2xvc2U6IHRydWUsXG4gICAgICAgICAgICBhdXRvRGVzdHJveTogdHJ1ZSxcbiAgICAgICAgICAgIGRlc3Ryb3k6IChlcnJvciwgY2FsbGJhY2spID0+IHtcbiAgICAgICAgICAgICAgICBjbGVhckltbWVkaWF0ZShpbW1lZGlhdGUpO1xuICAgICAgICAgICAgICAgIHRoaXMuY2xvc2VTeW5jKGZkKTtcbiAgICAgICAgICAgICAgICBjYWxsYmFjayhlcnJvcik7XG4gICAgICAgICAgICB9LFxuICAgICAgICB9KSwge1xuICAgICAgICAgICAgY2xvc2UoKSB7XG4gICAgICAgICAgICAgICAgc3RyZWFtLmRlc3Ryb3koKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBieXRlc1JlYWQ6IDAsXG4gICAgICAgICAgICBwYXRoOiBwLFxuICAgICAgICAgICAgLy8gXCJUaGlzIHByb3BlcnR5IGlzIGB0cnVlYCBpZiB0aGUgdW5kZXJseWluZyBmaWxlIGhhcyBub3QgYmVlbiBvcGVuZWQgeWV0XCJcbiAgICAgICAgICAgIHBlbmRpbmc6IGZhbHNlLFxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgaW1tZWRpYXRlID0gc2V0SW1tZWRpYXRlKGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMucmVhZEZpbGVQcm9taXNlKHAsIGVuY29kaW5nKTtcbiAgICAgICAgICAgICAgICBzdHJlYW0uYnl0ZXNSZWFkID0gZGF0YS5sZW5ndGg7XG4gICAgICAgICAgICAgICAgc3RyZWFtLmVuZChkYXRhKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgIHN0cmVhbS5kZXN0cm95KGVycm9yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBzdHJlYW07XG4gICAgfVxuICAgIGNyZWF0ZVdyaXRlU3RyZWFtKHAsIHsgZW5jb2RpbmcgfSA9IHt9KSB7XG4gICAgICAgIGlmICh0aGlzLnJlYWRPbmx5KVxuICAgICAgICAgICAgdGhyb3cgZnNsaWJfNS5lcnJvcnMuRVJPRlMoYG9wZW4gJyR7cH0nYCk7XG4gICAgICAgIGlmIChwID09PSBudWxsKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmltcGxlbWVudGVkYCk7XG4gICAgICAgIGNvbnN0IGNodW5rcyA9IFtdO1xuICAgICAgICBjb25zdCBmZCA9IHRoaXMub3BlblN5bmMocCwgYHdgKTtcbiAgICAgICAgY29uc3Qgc3RyZWFtID0gT2JqZWN0LmFzc2lnbihuZXcgc3RyZWFtXzEuUGFzc1Rocm91Z2goe1xuICAgICAgICAgICAgYXV0b0Rlc3Ryb3k6IHRydWUsXG4gICAgICAgICAgICBlbWl0Q2xvc2U6IHRydWUsXG4gICAgICAgICAgICBkZXN0cm95OiAoZXJyb3IsIGNhbGxiYWNrKSA9PiB7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhlcnJvcik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLndyaXRlRmlsZVN5bmMocCwgQnVmZmVyLmNvbmNhdChjaHVua3MpLCBlbmNvZGluZyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhudWxsKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKGVycik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNsb3NlU3luYyhmZCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSksIHtcbiAgICAgICAgICAgIGNsb3NlKCkge1xuICAgICAgICAgICAgICAgIHN0cmVhbS5kZXN0cm95KCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYnl0ZXNXcml0dGVuOiAwLFxuICAgICAgICAgICAgcGF0aDogcCxcbiAgICAgICAgICAgIC8vIFwiVGhpcyBwcm9wZXJ0eSBpcyBgdHJ1ZWAgaWYgdGhlIHVuZGVybHlpbmcgZmlsZSBoYXMgbm90IGJlZW4gb3BlbmVkIHlldFwiXG4gICAgICAgICAgICBwZW5kaW5nOiBmYWxzZSxcbiAgICAgICAgfSk7XG4gICAgICAgIHN0cmVhbS5vbihgZGF0YWAsIGNodW5rID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNodW5rQnVmZmVyID0gQnVmZmVyLmZyb20oY2h1bmspO1xuICAgICAgICAgICAgc3RyZWFtLmJ5dGVzV3JpdHRlbiArPSBjaHVua0J1ZmZlci5sZW5ndGg7XG4gICAgICAgICAgICBjaHVua3MucHVzaChjaHVua0J1ZmZlcik7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gc3RyZWFtO1xuICAgIH1cbiAgICBhc3luYyByZWFscGF0aFByb21pc2UocCkge1xuICAgICAgICByZXR1cm4gdGhpcy5yZWFscGF0aFN5bmMocCk7XG4gICAgfVxuICAgIHJlYWxwYXRoU3luYyhwKSB7XG4gICAgICAgIGNvbnN0IHJlc29sdmVkUCA9IHRoaXMucmVzb2x2ZUZpbGVuYW1lKGBsc3RhdCAnJHtwfSdgLCBwKTtcbiAgICAgICAgaWYgKCF0aGlzLmVudHJpZXMuaGFzKHJlc29sdmVkUCkgJiYgIXRoaXMubGlzdGluZ3MuaGFzKHJlc29sdmVkUCkpXG4gICAgICAgICAgICB0aHJvdyBmc2xpYl81LmVycm9ycy5FTk9FTlQoYGxzdGF0ICcke3B9J2ApO1xuICAgICAgICByZXR1cm4gcmVzb2x2ZWRQO1xuICAgIH1cbiAgICBhc3luYyBleGlzdHNQcm9taXNlKHApIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZXhpc3RzU3luYyhwKTtcbiAgICB9XG4gICAgZXhpc3RzU3luYyhwKSB7XG4gICAgICAgIGlmICghdGhpcy5yZWFkeSlcbiAgICAgICAgICAgIHRocm93IGZzbGliXzUuZXJyb3JzLkVCVVNZKGBhcmNoaXZlIGNsb3NlZCwgZXhpc3RzU3luYyAnJHtwfSdgKTtcbiAgICAgICAgaWYgKHRoaXMuc3ltbGlua0NvdW50ID09PSAwKSB7XG4gICAgICAgICAgICBjb25zdCByZXNvbHZlZFAgPSBmc2xpYl82LnBwYXRoLnJlc29sdmUoZnNsaWJfNi5Qb3J0YWJsZVBhdGgucm9vdCwgcCk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5lbnRyaWVzLmhhcyhyZXNvbHZlZFApIHx8IHRoaXMubGlzdGluZ3MuaGFzKHJlc29sdmVkUCk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHJlc29sdmVkUDtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJlc29sdmVkUCA9IHRoaXMucmVzb2x2ZUZpbGVuYW1lKGBzdGF0ICcke3B9J2AsIHAsIHVuZGVmaW5lZCwgZmFsc2UpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChyZXNvbHZlZFAgPT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZW50cmllcy5oYXMocmVzb2x2ZWRQKSB8fCB0aGlzLmxpc3RpbmdzLmhhcyhyZXNvbHZlZFApO1xuICAgIH1cbiAgICBhc3luYyBhY2Nlc3NQcm9taXNlKHAsIG1vZGUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWNjZXNzU3luYyhwLCBtb2RlKTtcbiAgICB9XG4gICAgYWNjZXNzU3luYyhwLCBtb2RlID0gZnNfMS5jb25zdGFudHMuRl9PSykge1xuICAgICAgICBjb25zdCByZXNvbHZlZFAgPSB0aGlzLnJlc29sdmVGaWxlbmFtZShgYWNjZXNzICcke3B9J2AsIHApO1xuICAgICAgICBpZiAoIXRoaXMuZW50cmllcy5oYXMocmVzb2x2ZWRQKSAmJiAhdGhpcy5saXN0aW5ncy5oYXMocmVzb2x2ZWRQKSlcbiAgICAgICAgICAgIHRocm93IGZzbGliXzUuZXJyb3JzLkVOT0VOVChgYWNjZXNzICcke3B9J2ApO1xuICAgICAgICBpZiAodGhpcy5yZWFkT25seSAmJiAobW9kZSAmIGZzXzEuY29uc3RhbnRzLldfT0spKSB7XG4gICAgICAgICAgICB0aHJvdyBmc2xpYl81LmVycm9ycy5FUk9GUyhgYWNjZXNzICcke3B9J2ApO1xuICAgICAgICB9XG4gICAgfVxuICAgIGFzeW5jIHN0YXRQcm9taXNlKHAsIG9wdHMgPSB7IGJpZ2ludDogZmFsc2UgfSkge1xuICAgICAgICBpZiAob3B0cy5iaWdpbnQpXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zdGF0U3luYyhwLCB7IGJpZ2ludDogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhdFN5bmMocCk7XG4gICAgfVxuICAgIHN0YXRTeW5jKHAsIG9wdHMgPSB7IGJpZ2ludDogZmFsc2UsIHRocm93SWZOb0VudHJ5OiB0cnVlIH0pIHtcbiAgICAgICAgY29uc3QgcmVzb2x2ZWRQID0gdGhpcy5yZXNvbHZlRmlsZW5hbWUoYHN0YXQgJyR7cH0nYCwgcCwgdW5kZWZpbmVkLCBvcHRzLnRocm93SWZOb0VudHJ5KTtcbiAgICAgICAgaWYgKHJlc29sdmVkUCA9PT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgaWYgKCF0aGlzLmVudHJpZXMuaGFzKHJlc29sdmVkUCkgJiYgIXRoaXMubGlzdGluZ3MuaGFzKHJlc29sdmVkUCkpIHtcbiAgICAgICAgICAgIGlmIChvcHRzLnRocm93SWZOb0VudHJ5ID09PSBmYWxzZSlcbiAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgdGhyb3cgZnNsaWJfNS5lcnJvcnMuRU5PRU5UKGBzdGF0ICcke3B9J2ApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwW3AubGVuZ3RoIC0gMV0gPT09IGAvYCAmJiAhdGhpcy5saXN0aW5ncy5oYXMocmVzb2x2ZWRQKSlcbiAgICAgICAgICAgIHRocm93IGZzbGliXzUuZXJyb3JzLkVOT1RESVIoYHN0YXQgJyR7cH0nYCk7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YXRJbXBsKGBzdGF0ICcke3B9J2AsIHJlc29sdmVkUCwgb3B0cyk7XG4gICAgfVxuICAgIGFzeW5jIGZzdGF0UHJvbWlzZShmZCwgb3B0cykge1xuICAgICAgICByZXR1cm4gdGhpcy5mc3RhdFN5bmMoZmQsIG9wdHMpO1xuICAgIH1cbiAgICBmc3RhdFN5bmMoZmQsIG9wdHMpIHtcbiAgICAgICAgY29uc3QgZW50cnkgPSB0aGlzLmZkcy5nZXQoZmQpO1xuICAgICAgICBpZiAodHlwZW9mIGVudHJ5ID09PSBgdW5kZWZpbmVkYClcbiAgICAgICAgICAgIHRocm93IGZzbGliXzUuZXJyb3JzLkVCQURGKGBmc3RhdFN5bmNgKTtcbiAgICAgICAgY29uc3QgeyBwIH0gPSBlbnRyeTtcbiAgICAgICAgY29uc3QgcmVzb2x2ZWRQID0gdGhpcy5yZXNvbHZlRmlsZW5hbWUoYHN0YXQgJyR7cH0nYCwgcCk7XG4gICAgICAgIGlmICghdGhpcy5lbnRyaWVzLmhhcyhyZXNvbHZlZFApICYmICF0aGlzLmxpc3RpbmdzLmhhcyhyZXNvbHZlZFApKVxuICAgICAgICAgICAgdGhyb3cgZnNsaWJfNS5lcnJvcnMuRU5PRU5UKGBzdGF0ICcke3B9J2ApO1xuICAgICAgICBpZiAocFtwLmxlbmd0aCAtIDFdID09PSBgL2AgJiYgIXRoaXMubGlzdGluZ3MuaGFzKHJlc29sdmVkUCkpXG4gICAgICAgICAgICB0aHJvdyBmc2xpYl81LmVycm9ycy5FTk9URElSKGBzdGF0ICcke3B9J2ApO1xuICAgICAgICByZXR1cm4gdGhpcy5zdGF0SW1wbChgZnN0YXQgJyR7cH0nYCwgcmVzb2x2ZWRQLCBvcHRzKTtcbiAgICB9XG4gICAgYXN5bmMgbHN0YXRQcm9taXNlKHAsIG9wdHMgPSB7IGJpZ2ludDogZmFsc2UgfSkge1xuICAgICAgICBpZiAob3B0cy5iaWdpbnQpXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5sc3RhdFN5bmMocCwgeyBiaWdpbnQ6IHRydWUgfSk7XG4gICAgICAgIHJldHVybiB0aGlzLmxzdGF0U3luYyhwKTtcbiAgICB9XG4gICAgbHN0YXRTeW5jKHAsIG9wdHMgPSB7IGJpZ2ludDogZmFsc2UsIHRocm93SWZOb0VudHJ5OiB0cnVlIH0pIHtcbiAgICAgICAgY29uc3QgcmVzb2x2ZWRQID0gdGhpcy5yZXNvbHZlRmlsZW5hbWUoYGxzdGF0ICcke3B9J2AsIHAsIGZhbHNlLCBvcHRzLnRocm93SWZOb0VudHJ5KTtcbiAgICAgICAgaWYgKHJlc29sdmVkUCA9PT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgaWYgKCF0aGlzLmVudHJpZXMuaGFzKHJlc29sdmVkUCkgJiYgIXRoaXMubGlzdGluZ3MuaGFzKHJlc29sdmVkUCkpIHtcbiAgICAgICAgICAgIGlmIChvcHRzLnRocm93SWZOb0VudHJ5ID09PSBmYWxzZSlcbiAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgdGhyb3cgZnNsaWJfNS5lcnJvcnMuRU5PRU5UKGBsc3RhdCAnJHtwfSdgKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocFtwLmxlbmd0aCAtIDFdID09PSBgL2AgJiYgIXRoaXMubGlzdGluZ3MuaGFzKHJlc29sdmVkUCkpXG4gICAgICAgICAgICB0aHJvdyBmc2xpYl81LmVycm9ycy5FTk9URElSKGBsc3RhdCAnJHtwfSdgKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhdEltcGwoYGxzdGF0ICcke3B9J2AsIHJlc29sdmVkUCwgb3B0cyk7XG4gICAgfVxuICAgIHN0YXRJbXBsKHJlYXNvbiwgcCwgb3B0cyA9IHt9KSB7XG4gICAgICAgIGNvbnN0IGVudHJ5ID0gdGhpcy5lbnRyaWVzLmdldChwKTtcbiAgICAgICAgLy8gRmlsZSwgb3IgZXhwbGljaXQgZGlyZWN0b3J5XG4gICAgICAgIGlmICh0eXBlb2YgZW50cnkgIT09IGB1bmRlZmluZWRgKSB7XG4gICAgICAgICAgICBjb25zdCBzdGF0ID0gdGhpcy5saWJ6aXAuc3RydWN0LnN0YXRTKCk7XG4gICAgICAgICAgICBjb25zdCByYyA9IHRoaXMubGliemlwLnN0YXRJbmRleCh0aGlzLnppcCwgZW50cnksIDAsIDAsIHN0YXQpO1xuICAgICAgICAgICAgaWYgKHJjID09PSAtMSlcbiAgICAgICAgICAgICAgICB0aHJvdyB0aGlzLm1ha2VMaWJ6aXBFcnJvcih0aGlzLmxpYnppcC5nZXRFcnJvcih0aGlzLnppcCkpO1xuICAgICAgICAgICAgY29uc3QgdWlkID0gdGhpcy5zdGF0cy51aWQ7XG4gICAgICAgICAgICBjb25zdCBnaWQgPSB0aGlzLnN0YXRzLmdpZDtcbiAgICAgICAgICAgIGNvbnN0IHNpemUgPSAodGhpcy5saWJ6aXAuc3RydWN0LnN0YXRTaXplKHN0YXQpID4+PiAwKTtcbiAgICAgICAgICAgIGNvbnN0IGJsa3NpemUgPSA1MTI7XG4gICAgICAgICAgICBjb25zdCBibG9ja3MgPSBNYXRoLmNlaWwoc2l6ZSAvIGJsa3NpemUpO1xuICAgICAgICAgICAgY29uc3QgbXRpbWVNcyA9ICh0aGlzLmxpYnppcC5zdHJ1Y3Quc3RhdE10aW1lKHN0YXQpID4+PiAwKSAqIDEwMDA7XG4gICAgICAgICAgICBjb25zdCBhdGltZU1zID0gbXRpbWVNcztcbiAgICAgICAgICAgIGNvbnN0IGJpcnRodGltZU1zID0gbXRpbWVNcztcbiAgICAgICAgICAgIGNvbnN0IGN0aW1lTXMgPSBtdGltZU1zO1xuICAgICAgICAgICAgY29uc3QgYXRpbWUgPSBuZXcgRGF0ZShhdGltZU1zKTtcbiAgICAgICAgICAgIGNvbnN0IGJpcnRodGltZSA9IG5ldyBEYXRlKGJpcnRodGltZU1zKTtcbiAgICAgICAgICAgIGNvbnN0IGN0aW1lID0gbmV3IERhdGUoY3RpbWVNcyk7XG4gICAgICAgICAgICBjb25zdCBtdGltZSA9IG5ldyBEYXRlKG10aW1lTXMpO1xuICAgICAgICAgICAgY29uc3QgdHlwZSA9IHRoaXMubGlzdGluZ3MuaGFzKHApXG4gICAgICAgICAgICAgICAgPyBmc18xLmNvbnN0YW50cy5TX0lGRElSXG4gICAgICAgICAgICAgICAgOiB0aGlzLmlzU3ltYm9saWNMaW5rKGVudHJ5KVxuICAgICAgICAgICAgICAgICAgICA/IGZzXzEuY29uc3RhbnRzLlNfSUZMTktcbiAgICAgICAgICAgICAgICAgICAgOiBmc18xLmNvbnN0YW50cy5TX0lGUkVHO1xuICAgICAgICAgICAgY29uc3QgZGVmYXVsdE1vZGUgPSB0eXBlID09PSBmc18xLmNvbnN0YW50cy5TX0lGRElSXG4gICAgICAgICAgICAgICAgPyAwbzc1NVxuICAgICAgICAgICAgICAgIDogMG82NDQ7XG4gICAgICAgICAgICBjb25zdCBtb2RlID0gdHlwZSB8ICh0aGlzLmdldFVuaXhNb2RlKGVudHJ5LCBkZWZhdWx0TW9kZSkgJiAwbzc3Nyk7XG4gICAgICAgICAgICBjb25zdCBjcmMgPSB0aGlzLmxpYnppcC5zdHJ1Y3Quc3RhdENyYyhzdGF0KTtcbiAgICAgICAgICAgIGNvbnN0IHN0YXRJbnN0YW5jZSA9IE9iamVjdC5hc3NpZ24obmV3IGZzbGliXzUuc3RhdFV0aWxzLlN0YXRFbnRyeSgpLCB7IHVpZCwgZ2lkLCBzaXplLCBibGtzaXplLCBibG9ja3MsIGF0aW1lLCBiaXJ0aHRpbWUsIGN0aW1lLCBtdGltZSwgYXRpbWVNcywgYmlydGh0aW1lTXMsIGN0aW1lTXMsIG10aW1lTXMsIG1vZGUsIGNyYyB9KTtcbiAgICAgICAgICAgIHJldHVybiBvcHRzLmJpZ2ludCA9PT0gdHJ1ZSA/IGZzbGliXzUuc3RhdFV0aWxzLmNvbnZlcnRUb0JpZ0ludFN0YXRzKHN0YXRJbnN0YW5jZSkgOiBzdGF0SW5zdGFuY2U7XG4gICAgICAgIH1cbiAgICAgICAgLy8gSW1wbGljaXQgZGlyZWN0b3J5XG4gICAgICAgIGlmICh0aGlzLmxpc3RpbmdzLmhhcyhwKSkge1xuICAgICAgICAgICAgY29uc3QgdWlkID0gdGhpcy5zdGF0cy51aWQ7XG4gICAgICAgICAgICBjb25zdCBnaWQgPSB0aGlzLnN0YXRzLmdpZDtcbiAgICAgICAgICAgIGNvbnN0IHNpemUgPSAwO1xuICAgICAgICAgICAgY29uc3QgYmxrc2l6ZSA9IDUxMjtcbiAgICAgICAgICAgIGNvbnN0IGJsb2NrcyA9IDA7XG4gICAgICAgICAgICBjb25zdCBhdGltZU1zID0gdGhpcy5zdGF0cy5tdGltZU1zO1xuICAgICAgICAgICAgY29uc3QgYmlydGh0aW1lTXMgPSB0aGlzLnN0YXRzLm10aW1lTXM7XG4gICAgICAgICAgICBjb25zdCBjdGltZU1zID0gdGhpcy5zdGF0cy5tdGltZU1zO1xuICAgICAgICAgICAgY29uc3QgbXRpbWVNcyA9IHRoaXMuc3RhdHMubXRpbWVNcztcbiAgICAgICAgICAgIGNvbnN0IGF0aW1lID0gbmV3IERhdGUoYXRpbWVNcyk7XG4gICAgICAgICAgICBjb25zdCBiaXJ0aHRpbWUgPSBuZXcgRGF0ZShiaXJ0aHRpbWVNcyk7XG4gICAgICAgICAgICBjb25zdCBjdGltZSA9IG5ldyBEYXRlKGN0aW1lTXMpO1xuICAgICAgICAgICAgY29uc3QgbXRpbWUgPSBuZXcgRGF0ZShtdGltZU1zKTtcbiAgICAgICAgICAgIGNvbnN0IG1vZGUgPSBmc18xLmNvbnN0YW50cy5TX0lGRElSIHwgMG83NTU7XG4gICAgICAgICAgICBjb25zdCBjcmMgPSAwO1xuICAgICAgICAgICAgY29uc3Qgc3RhdEluc3RhbmNlID0gT2JqZWN0LmFzc2lnbihuZXcgZnNsaWJfNS5zdGF0VXRpbHMuU3RhdEVudHJ5KCksIHsgdWlkLCBnaWQsIHNpemUsIGJsa3NpemUsIGJsb2NrcywgYXRpbWUsIGJpcnRodGltZSwgY3RpbWUsIG10aW1lLCBhdGltZU1zLCBiaXJ0aHRpbWVNcywgY3RpbWVNcywgbXRpbWVNcywgbW9kZSwgY3JjIH0pO1xuICAgICAgICAgICAgcmV0dXJuIG9wdHMuYmlnaW50ID09PSB0cnVlID8gZnNsaWJfNS5zdGF0VXRpbHMuY29udmVydFRvQmlnSW50U3RhdHMoc3RhdEluc3RhbmNlKSA6IHN0YXRJbnN0YW5jZTtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVucmVhY2hhYmxlYCk7XG4gICAgfVxuICAgIGdldFVuaXhNb2RlKGluZGV4LCBkZWZhdWx0TW9kZSkge1xuICAgICAgICBjb25zdCByYyA9IHRoaXMubGliemlwLmZpbGUuZ2V0RXh0ZXJuYWxBdHRyaWJ1dGVzKHRoaXMuemlwLCBpbmRleCwgMCwgMCwgdGhpcy5saWJ6aXAudWludDA4UywgdGhpcy5saWJ6aXAudWludDMyUyk7XG4gICAgICAgIGlmIChyYyA9PT0gLTEpXG4gICAgICAgICAgICB0aHJvdyB0aGlzLm1ha2VMaWJ6aXBFcnJvcih0aGlzLmxpYnppcC5nZXRFcnJvcih0aGlzLnppcCkpO1xuICAgICAgICBjb25zdCBvcHN5cyA9IHRoaXMubGliemlwLmdldFZhbHVlKHRoaXMubGliemlwLnVpbnQwOFMsIGBpOGApID4+PiAwO1xuICAgICAgICBpZiAob3BzeXMgIT09IHRoaXMubGliemlwLlpJUF9PUFNZU19VTklYKVxuICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHRNb2RlO1xuICAgICAgICByZXR1cm4gdGhpcy5saWJ6aXAuZ2V0VmFsdWUodGhpcy5saWJ6aXAudWludDMyUywgYGkzMmApID4+PiAxNjtcbiAgICB9XG4gICAgcmVnaXN0ZXJMaXN0aW5nKHApIHtcbiAgICAgICAgY29uc3QgZXhpc3RpbmdMaXN0aW5nID0gdGhpcy5saXN0aW5ncy5nZXQocCk7XG4gICAgICAgIGlmIChleGlzdGluZ0xpc3RpbmcpXG4gICAgICAgICAgICByZXR1cm4gZXhpc3RpbmdMaXN0aW5nO1xuICAgICAgICBjb25zdCBwYXJlbnRMaXN0aW5nID0gdGhpcy5yZWdpc3Rlckxpc3RpbmcoZnNsaWJfNi5wcGF0aC5kaXJuYW1lKHApKTtcbiAgICAgICAgcGFyZW50TGlzdGluZy5hZGQoZnNsaWJfNi5wcGF0aC5iYXNlbmFtZShwKSk7XG4gICAgICAgIGNvbnN0IG5ld0xpc3RpbmcgPSBuZXcgU2V0KCk7XG4gICAgICAgIHRoaXMubGlzdGluZ3Muc2V0KHAsIG5ld0xpc3RpbmcpO1xuICAgICAgICByZXR1cm4gbmV3TGlzdGluZztcbiAgICB9XG4gICAgcmVnaXN0ZXJFbnRyeShwLCBpbmRleCkge1xuICAgICAgICBjb25zdCBwYXJlbnRMaXN0aW5nID0gdGhpcy5yZWdpc3Rlckxpc3RpbmcoZnNsaWJfNi5wcGF0aC5kaXJuYW1lKHApKTtcbiAgICAgICAgcGFyZW50TGlzdGluZy5hZGQoZnNsaWJfNi5wcGF0aC5iYXNlbmFtZShwKSk7XG4gICAgICAgIHRoaXMuZW50cmllcy5zZXQocCwgaW5kZXgpO1xuICAgIH1cbiAgICB1bnJlZ2lzdGVyTGlzdGluZyhwKSB7XG4gICAgICAgIHRoaXMubGlzdGluZ3MuZGVsZXRlKHApO1xuICAgICAgICBjb25zdCBwYXJlbnRMaXN0aW5nID0gdGhpcy5saXN0aW5ncy5nZXQoZnNsaWJfNi5wcGF0aC5kaXJuYW1lKHApKTtcbiAgICAgICAgcGFyZW50TGlzdGluZyA9PT0gbnVsbCB8fCBwYXJlbnRMaXN0aW5nID09PSB2b2lkIDAgPyB2b2lkIDAgOiBwYXJlbnRMaXN0aW5nLmRlbGV0ZShmc2xpYl82LnBwYXRoLmJhc2VuYW1lKHApKTtcbiAgICB9XG4gICAgdW5yZWdpc3RlckVudHJ5KHApIHtcbiAgICAgICAgdGhpcy51bnJlZ2lzdGVyTGlzdGluZyhwKTtcbiAgICAgICAgY29uc3QgZW50cnkgPSB0aGlzLmVudHJpZXMuZ2V0KHApO1xuICAgICAgICB0aGlzLmVudHJpZXMuZGVsZXRlKHApO1xuICAgICAgICBpZiAodHlwZW9mIGVudHJ5ID09PSBgdW5kZWZpbmVkYClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgdGhpcy5maWxlU291cmNlcy5kZWxldGUoZW50cnkpO1xuICAgICAgICBpZiAodGhpcy5pc1N5bWJvbGljTGluayhlbnRyeSkpIHtcbiAgICAgICAgICAgIHRoaXMuc3ltbGlua0NvdW50LS07XG4gICAgICAgIH1cbiAgICB9XG4gICAgZGVsZXRlRW50cnkocCwgaW5kZXgpIHtcbiAgICAgICAgdGhpcy51bnJlZ2lzdGVyRW50cnkocCk7XG4gICAgICAgIGNvbnN0IHJjID0gdGhpcy5saWJ6aXAuZGVsZXRlKHRoaXMuemlwLCBpbmRleCk7XG4gICAgICAgIGlmIChyYyA9PT0gLTEpIHtcbiAgICAgICAgICAgIHRocm93IHRoaXMubWFrZUxpYnppcEVycm9yKHRoaXMubGliemlwLmdldEVycm9yKHRoaXMuemlwKSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmVzb2x2ZUZpbGVuYW1lKHJlYXNvbiwgcCwgcmVzb2x2ZUxhc3RDb21wb25lbnQgPSB0cnVlLCB0aHJvd0lmTm9FbnRyeSA9IHRydWUpIHtcbiAgICAgICAgaWYgKCF0aGlzLnJlYWR5KVxuICAgICAgICAgICAgdGhyb3cgZnNsaWJfNS5lcnJvcnMuRUJVU1koYGFyY2hpdmUgY2xvc2VkLCAke3JlYXNvbn1gKTtcbiAgICAgICAgbGV0IHJlc29sdmVkUCA9IGZzbGliXzYucHBhdGgucmVzb2x2ZShmc2xpYl82LlBvcnRhYmxlUGF0aC5yb290LCBwKTtcbiAgICAgICAgaWYgKHJlc29sdmVkUCA9PT0gYC9gKVxuICAgICAgICAgICAgcmV0dXJuIGZzbGliXzYuUG9ydGFibGVQYXRoLnJvb3Q7XG4gICAgICAgIGNvbnN0IGZpbGVJbmRleCA9IHRoaXMuZW50cmllcy5nZXQocmVzb2x2ZWRQKTtcbiAgICAgICAgaWYgKHJlc29sdmVMYXN0Q29tcG9uZW50ICYmIGZpbGVJbmRleCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5zeW1saW5rQ291bnQgIT09IDAgJiYgdGhpcy5pc1N5bWJvbGljTGluayhmaWxlSW5kZXgpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdGFyZ2V0ID0gdGhpcy5nZXRGaWxlU291cmNlKGZpbGVJbmRleCkudG9TdHJpbmcoKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXNvbHZlRmlsZW5hbWUocmVhc29uLCBmc2xpYl82LnBwYXRoLnJlc29sdmUoZnNsaWJfNi5wcGF0aC5kaXJuYW1lKHJlc29sdmVkUCksIHRhcmdldCksIHRydWUsIHRocm93SWZOb0VudHJ5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiByZXNvbHZlZFA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgICAgIGNvbnN0IHBhcmVudFAgPSB0aGlzLnJlc29sdmVGaWxlbmFtZShyZWFzb24sIGZzbGliXzYucHBhdGguZGlybmFtZShyZXNvbHZlZFApLCB0cnVlLCB0aHJvd0lmTm9FbnRyeSk7XG4gICAgICAgICAgICBpZiAocGFyZW50UCA9PT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgICAgIHJldHVybiBwYXJlbnRQO1xuICAgICAgICAgICAgY29uc3QgaXNEaXIgPSB0aGlzLmxpc3RpbmdzLmhhcyhwYXJlbnRQKTtcbiAgICAgICAgICAgIGNvbnN0IGRvZXNFeGlzdCA9IHRoaXMuZW50cmllcy5oYXMocGFyZW50UCk7XG4gICAgICAgICAgICBpZiAoIWlzRGlyICYmICFkb2VzRXhpc3QpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhyb3dJZk5vRW50cnkgPT09IGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIHRocm93IGZzbGliXzUuZXJyb3JzLkVOT0VOVChyZWFzb24pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFpc0RpcilcbiAgICAgICAgICAgICAgICB0aHJvdyBmc2xpYl81LmVycm9ycy5FTk9URElSKHJlYXNvbik7XG4gICAgICAgICAgICByZXNvbHZlZFAgPSBmc2xpYl82LnBwYXRoLnJlc29sdmUocGFyZW50UCwgZnNsaWJfNi5wcGF0aC5iYXNlbmFtZShyZXNvbHZlZFApKTtcbiAgICAgICAgICAgIGlmICghcmVzb2x2ZUxhc3RDb21wb25lbnQgfHwgdGhpcy5zeW1saW5rQ291bnQgPT09IDApXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMubGliemlwLm5hbWUubG9jYXRlKHRoaXMuemlwLCByZXNvbHZlZFAuc2xpY2UoMSksIDApO1xuICAgICAgICAgICAgaWYgKGluZGV4ID09PSAtMSlcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGlmICh0aGlzLmlzU3ltYm9saWNMaW5rKGluZGV4KSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9IHRoaXMuZ2V0RmlsZVNvdXJjZShpbmRleCkudG9TdHJpbmcoKTtcbiAgICAgICAgICAgICAgICByZXNvbHZlZFAgPSBmc2xpYl82LnBwYXRoLnJlc29sdmUoZnNsaWJfNi5wcGF0aC5kaXJuYW1lKHJlc29sdmVkUCksIHRhcmdldCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzb2x2ZWRQO1xuICAgIH1cbiAgICBhbGxvY2F0ZUJ1ZmZlcihjb250ZW50KSB7XG4gICAgICAgIGlmICghQnVmZmVyLmlzQnVmZmVyKGNvbnRlbnQpKVxuICAgICAgICAgICAgY29udGVudCA9IEJ1ZmZlci5mcm9tKGNvbnRlbnQpO1xuICAgICAgICBjb25zdCBidWZmZXIgPSB0aGlzLmxpYnppcC5tYWxsb2MoY29udGVudC5ieXRlTGVuZ3RoKTtcbiAgICAgICAgaWYgKCFidWZmZXIpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENvdWxkbid0IGFsbG9jYXRlIGVub3VnaCBtZW1vcnlgKTtcbiAgICAgICAgLy8gQ29weSB0aGUgZmlsZSBpbnRvIHRoZSBFbXNjcmlwdGVuIGhlYXBcbiAgICAgICAgY29uc3QgaGVhcCA9IG5ldyBVaW50OEFycmF5KHRoaXMubGliemlwLkhFQVBVOC5idWZmZXIsIGJ1ZmZlciwgY29udGVudC5ieXRlTGVuZ3RoKTtcbiAgICAgICAgaGVhcC5zZXQoY29udGVudCk7XG4gICAgICAgIHJldHVybiB7IGJ1ZmZlciwgYnl0ZUxlbmd0aDogY29udGVudC5ieXRlTGVuZ3RoIH07XG4gICAgfVxuICAgIGFsbG9jYXRlVW5hdHRhY2hlZFNvdXJjZShjb250ZW50KSB7XG4gICAgICAgIGNvbnN0IGVycm9yID0gdGhpcy5saWJ6aXAuc3RydWN0LmVycm9yUygpO1xuICAgICAgICBjb25zdCB7IGJ1ZmZlciwgYnl0ZUxlbmd0aCB9ID0gdGhpcy5hbGxvY2F0ZUJ1ZmZlcihjb250ZW50KTtcbiAgICAgICAgY29uc3Qgc291cmNlID0gdGhpcy5saWJ6aXAuc291cmNlLmZyb21VbmF0dGFjaGVkQnVmZmVyKGJ1ZmZlciwgYnl0ZUxlbmd0aCwgMCwgMSwgZXJyb3IpO1xuICAgICAgICBpZiAoc291cmNlID09PSAwKSB7XG4gICAgICAgICAgICB0aGlzLmxpYnppcC5mcmVlKGVycm9yKTtcbiAgICAgICAgICAgIHRocm93IHRoaXMubWFrZUxpYnppcEVycm9yKGVycm9yKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc291cmNlO1xuICAgIH1cbiAgICBhbGxvY2F0ZVNvdXJjZShjb250ZW50KSB7XG4gICAgICAgIGNvbnN0IHsgYnVmZmVyLCBieXRlTGVuZ3RoIH0gPSB0aGlzLmFsbG9jYXRlQnVmZmVyKGNvbnRlbnQpO1xuICAgICAgICBjb25zdCBzb3VyY2UgPSB0aGlzLmxpYnppcC5zb3VyY2UuZnJvbUJ1ZmZlcih0aGlzLnppcCwgYnVmZmVyLCBieXRlTGVuZ3RoLCAwLCAxKTtcbiAgICAgICAgaWYgKHNvdXJjZSA9PT0gMCkge1xuICAgICAgICAgICAgdGhpcy5saWJ6aXAuZnJlZShidWZmZXIpO1xuICAgICAgICAgICAgdGhyb3cgdGhpcy5tYWtlTGliemlwRXJyb3IodGhpcy5saWJ6aXAuZ2V0RXJyb3IodGhpcy56aXApKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc291cmNlO1xuICAgIH1cbiAgICBzZXRGaWxlU291cmNlKHAsIGNvbnRlbnQpIHtcbiAgICAgICAgY29uc3QgYnVmZmVyID0gQnVmZmVyLmlzQnVmZmVyKGNvbnRlbnQpID8gY29udGVudCA6IEJ1ZmZlci5mcm9tKGNvbnRlbnQpO1xuICAgICAgICBjb25zdCB0YXJnZXQgPSBmc2xpYl82LnBwYXRoLnJlbGF0aXZlKGZzbGliXzYuUG9ydGFibGVQYXRoLnJvb3QsIHApO1xuICAgICAgICBjb25zdCBselNvdXJjZSA9IHRoaXMuYWxsb2NhdGVTb3VyY2UoY29udGVudCk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBuZXdJbmRleCA9IHRoaXMubGliemlwLmZpbGUuYWRkKHRoaXMuemlwLCB0YXJnZXQsIGx6U291cmNlLCB0aGlzLmxpYnppcC5aSVBfRkxfT1ZFUldSSVRFKTtcbiAgICAgICAgICAgIGlmIChuZXdJbmRleCA9PT0gLTEpXG4gICAgICAgICAgICAgICAgdGhyb3cgdGhpcy5tYWtlTGliemlwRXJyb3IodGhpcy5saWJ6aXAuZ2V0RXJyb3IodGhpcy56aXApKTtcbiAgICAgICAgICAgIGlmICh0aGlzLmxldmVsICE9PSBgbWl4ZWRgKSB7XG4gICAgICAgICAgICAgICAgLy8gVXNlIHN0b3JlIGZvciBsZXZlbCAwLCBhbmQgZGVmbGF0ZSBmb3IgMS4uOVxuICAgICAgICAgICAgICAgIGNvbnN0IG1ldGhvZCA9IHRoaXMubGV2ZWwgPT09IDBcbiAgICAgICAgICAgICAgICAgICAgPyB0aGlzLmxpYnppcC5aSVBfQ01fU1RPUkVcbiAgICAgICAgICAgICAgICAgICAgOiB0aGlzLmxpYnppcC5aSVBfQ01fREVGTEFURTtcbiAgICAgICAgICAgICAgICBjb25zdCByYyA9IHRoaXMubGliemlwLmZpbGUuc2V0Q29tcHJlc3Npb24odGhpcy56aXAsIG5ld0luZGV4LCAwLCBtZXRob2QsIHRoaXMubGV2ZWwpO1xuICAgICAgICAgICAgICAgIGlmIChyYyA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgdGhpcy5tYWtlTGliemlwRXJyb3IodGhpcy5saWJ6aXAuZ2V0RXJyb3IodGhpcy56aXApKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmZpbGVTb3VyY2VzLnNldChuZXdJbmRleCwgYnVmZmVyKTtcbiAgICAgICAgICAgIHJldHVybiBuZXdJbmRleDtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIHRoaXMubGliemlwLnNvdXJjZS5mcmVlKGx6U291cmNlKTtcbiAgICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlzU3ltYm9saWNMaW5rKGluZGV4KSB7XG4gICAgICAgIGlmICh0aGlzLnN5bWxpbmtDb3VudCA9PT0gMClcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgY29uc3QgYXR0cnMgPSB0aGlzLmxpYnppcC5maWxlLmdldEV4dGVybmFsQXR0cmlidXRlcyh0aGlzLnppcCwgaW5kZXgsIDAsIDAsIHRoaXMubGliemlwLnVpbnQwOFMsIHRoaXMubGliemlwLnVpbnQzMlMpO1xuICAgICAgICBpZiAoYXR0cnMgPT09IC0xKVxuICAgICAgICAgICAgdGhyb3cgdGhpcy5tYWtlTGliemlwRXJyb3IodGhpcy5saWJ6aXAuZ2V0RXJyb3IodGhpcy56aXApKTtcbiAgICAgICAgY29uc3Qgb3BzeXMgPSB0aGlzLmxpYnppcC5nZXRWYWx1ZSh0aGlzLmxpYnppcC51aW50MDhTLCBgaThgKSA+Pj4gMDtcbiAgICAgICAgaWYgKG9wc3lzICE9PSB0aGlzLmxpYnppcC5aSVBfT1BTWVNfVU5JWClcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgY29uc3QgYXR0cmlidXRlcyA9IHRoaXMubGliemlwLmdldFZhbHVlKHRoaXMubGliemlwLnVpbnQzMlMsIGBpMzJgKSA+Pj4gMTY7XG4gICAgICAgIHJldHVybiAoYXR0cmlidXRlcyAmIGZzXzEuY29uc3RhbnRzLlNfSUZNVCkgPT09IGZzXzEuY29uc3RhbnRzLlNfSUZMTks7XG4gICAgfVxuICAgIGdldEZpbGVTb3VyY2UoaW5kZXgsIG9wdHMgPSB7IGFzeW5jRGVjb21wcmVzczogZmFsc2UgfSkge1xuICAgICAgICBjb25zdCBjYWNoZWRGaWxlU291cmNlID0gdGhpcy5maWxlU291cmNlcy5nZXQoaW5kZXgpO1xuICAgICAgICBpZiAodHlwZW9mIGNhY2hlZEZpbGVTb3VyY2UgIT09IGB1bmRlZmluZWRgKVxuICAgICAgICAgICAgcmV0dXJuIGNhY2hlZEZpbGVTb3VyY2U7XG4gICAgICAgIGNvbnN0IHN0YXQgPSB0aGlzLmxpYnppcC5zdHJ1Y3Quc3RhdFMoKTtcbiAgICAgICAgY29uc3QgcmMgPSB0aGlzLmxpYnppcC5zdGF0SW5kZXgodGhpcy56aXAsIGluZGV4LCAwLCAwLCBzdGF0KTtcbiAgICAgICAgaWYgKHJjID09PSAtMSlcbiAgICAgICAgICAgIHRocm93IHRoaXMubWFrZUxpYnppcEVycm9yKHRoaXMubGliemlwLmdldEVycm9yKHRoaXMuemlwKSk7XG4gICAgICAgIGNvbnN0IHNpemUgPSB0aGlzLmxpYnppcC5zdHJ1Y3Quc3RhdENvbXBTaXplKHN0YXQpO1xuICAgICAgICBjb25zdCBjb21wcmVzc2lvbk1ldGhvZCA9IHRoaXMubGliemlwLnN0cnVjdC5zdGF0Q29tcE1ldGhvZChzdGF0KTtcbiAgICAgICAgY29uc3QgYnVmZmVyID0gdGhpcy5saWJ6aXAubWFsbG9jKHNpemUpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgZmlsZSA9IHRoaXMubGliemlwLmZvcGVuSW5kZXgodGhpcy56aXAsIGluZGV4LCAwLCB0aGlzLmxpYnppcC5aSVBfRkxfQ09NUFJFU1NFRCk7XG4gICAgICAgICAgICBpZiAoZmlsZSA9PT0gMClcbiAgICAgICAgICAgICAgICB0aHJvdyB0aGlzLm1ha2VMaWJ6aXBFcnJvcih0aGlzLmxpYnppcC5nZXRFcnJvcih0aGlzLnppcCkpO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBjb25zdCByYyA9IHRoaXMubGliemlwLmZyZWFkKGZpbGUsIGJ1ZmZlciwgc2l6ZSwgMCk7XG4gICAgICAgICAgICAgICAgaWYgKHJjID09PSAtMSlcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgdGhpcy5tYWtlTGliemlwRXJyb3IodGhpcy5saWJ6aXAuZmlsZS5nZXRFcnJvcihmaWxlKSk7XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAocmMgPCBzaXplKVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEluY29tcGxldGUgcmVhZGApO1xuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHJjID4gc2l6ZSlcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBPdmVycmVhZGApO1xuICAgICAgICAgICAgICAgIGNvbnN0IG1lbW9yeSA9IHRoaXMubGliemlwLkhFQVBVOC5zdWJhcnJheShidWZmZXIsIGJ1ZmZlciArIHNpemUpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBCdWZmZXIuZnJvbShtZW1vcnkpO1xuICAgICAgICAgICAgICAgIGlmIChjb21wcmVzc2lvbk1ldGhvZCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbGVTb3VyY2VzLnNldChpbmRleCwgZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBkYXRhO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChvcHRzLmFzeW5jRGVjb21wcmVzcykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgemxpYl8xLmRlZmF1bHQuaW5mbGF0ZVJhdyhkYXRhLCAoZXJyb3IsIHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5maWxlU291cmNlcy5zZXQoaW5kZXgsIHJlc3VsdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUocmVzdWx0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBkZWNvbXByZXNzZWREYXRhID0gemxpYl8xLmRlZmF1bHQuaW5mbGF0ZVJhd1N5bmMoZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZmlsZVNvdXJjZXMuc2V0KGluZGV4LCBkZWNvbXByZXNzZWREYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRlY29tcHJlc3NlZERhdGE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICAgICAgdGhpcy5saWJ6aXAuZmNsb3NlKGZpbGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgdGhpcy5saWJ6aXAuZnJlZShidWZmZXIpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGFzeW5jIGZjaG1vZFByb21pc2UoZmQsIG1hc2spIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2htb2RQcm9taXNlKHRoaXMuZmRUb1BhdGgoZmQsIGBmY2htb2RgKSwgbWFzayk7XG4gICAgfVxuICAgIGZjaG1vZFN5bmMoZmQsIG1hc2spIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2htb2RTeW5jKHRoaXMuZmRUb1BhdGgoZmQsIGBmY2htb2RTeW5jYCksIG1hc2spO1xuICAgIH1cbiAgICBhc3luYyBjaG1vZFByb21pc2UocCwgbWFzaykge1xuICAgICAgICByZXR1cm4gdGhpcy5jaG1vZFN5bmMocCwgbWFzayk7XG4gICAgfVxuICAgIGNobW9kU3luYyhwLCBtYXNrKSB7XG4gICAgICAgIGlmICh0aGlzLnJlYWRPbmx5KVxuICAgICAgICAgICAgdGhyb3cgZnNsaWJfNS5lcnJvcnMuRVJPRlMoYGNobW9kICcke3B9J2ApO1xuICAgICAgICAvLyBXZSBkb24ndCBhbGxvdyB0byBtYWtlIHRoZSBleHRyYWN0ZWQgZW50cmllcyBncm91cC13cml0YWJsZVxuICAgICAgICBtYXNrICY9IDBvNzU1O1xuICAgICAgICBjb25zdCByZXNvbHZlZFAgPSB0aGlzLnJlc29sdmVGaWxlbmFtZShgY2htb2QgJyR7cH0nYCwgcCwgZmFsc2UpO1xuICAgICAgICBjb25zdCBlbnRyeSA9IHRoaXMuZW50cmllcy5nZXQocmVzb2x2ZWRQKTtcbiAgICAgICAgaWYgKHR5cGVvZiBlbnRyeSA9PT0gYHVuZGVmaW5lZGApXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEFzc2VydGlvbiBmYWlsZWQ6IFRoZSBlbnRyeSBzaG91bGQgaGF2ZSBiZWVuIHJlZ2lzdGVyZWQgKCR7cmVzb2x2ZWRQfSlgKTtcbiAgICAgICAgY29uc3Qgb2xkTW9kID0gdGhpcy5nZXRVbml4TW9kZShlbnRyeSwgZnNfMS5jb25zdGFudHMuU19JRlJFRyB8IDBvMDAwKTtcbiAgICAgICAgY29uc3QgbmV3TW9kID0gb2xkTW9kICYgKH4wbzc3NykgfCBtYXNrO1xuICAgICAgICBjb25zdCByYyA9IHRoaXMubGliemlwLmZpbGUuc2V0RXh0ZXJuYWxBdHRyaWJ1dGVzKHRoaXMuemlwLCBlbnRyeSwgMCwgMCwgdGhpcy5saWJ6aXAuWklQX09QU1lTX1VOSVgsIG5ld01vZCA8PCAxNik7XG4gICAgICAgIGlmIChyYyA9PT0gLTEpIHtcbiAgICAgICAgICAgIHRocm93IHRoaXMubWFrZUxpYnppcEVycm9yKHRoaXMubGliemlwLmdldEVycm9yKHRoaXMuemlwKSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgYXN5bmMgZmNob3duUHJvbWlzZShmZCwgdWlkLCBnaWQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hvd25Qcm9taXNlKHRoaXMuZmRUb1BhdGgoZmQsIGBmY2hvd25gKSwgdWlkLCBnaWQpO1xuICAgIH1cbiAgICBmY2hvd25TeW5jKGZkLCB1aWQsIGdpZCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jaG93blN5bmModGhpcy5mZFRvUGF0aChmZCwgYGZjaG93blN5bmNgKSwgdWlkLCBnaWQpO1xuICAgIH1cbiAgICBhc3luYyBjaG93blByb21pc2UocCwgdWlkLCBnaWQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hvd25TeW5jKHAsIHVpZCwgZ2lkKTtcbiAgICB9XG4gICAgY2hvd25TeW5jKHAsIHVpZCwgZ2lkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5pbXBsZW1lbnRlZGApO1xuICAgIH1cbiAgICBhc3luYyByZW5hbWVQcm9taXNlKG9sZFAsIG5ld1ApIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVuYW1lU3luYyhvbGRQLCBuZXdQKTtcbiAgICB9XG4gICAgcmVuYW1lU3luYyhvbGRQLCBuZXdQKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5pbXBsZW1lbnRlZGApO1xuICAgIH1cbiAgICBhc3luYyBjb3B5RmlsZVByb21pc2Uoc291cmNlUCwgZGVzdFAsIGZsYWdzKSB7XG4gICAgICAgIGNvbnN0IHsgaW5kZXhTb3VyY2UsIGluZGV4RGVzdCwgcmVzb2x2ZWREZXN0UCB9ID0gdGhpcy5wcmVwYXJlQ29weUZpbGUoc291cmNlUCwgZGVzdFAsIGZsYWdzKTtcbiAgICAgICAgY29uc3Qgc291cmNlID0gYXdhaXQgdGhpcy5nZXRGaWxlU291cmNlKGluZGV4U291cmNlLCB7IGFzeW5jRGVjb21wcmVzczogdHJ1ZSB9KTtcbiAgICAgICAgY29uc3QgbmV3SW5kZXggPSB0aGlzLnNldEZpbGVTb3VyY2UocmVzb2x2ZWREZXN0UCwgc291cmNlKTtcbiAgICAgICAgaWYgKG5ld0luZGV4ICE9PSBpbmRleERlc3QpIHtcbiAgICAgICAgICAgIHRoaXMucmVnaXN0ZXJFbnRyeShyZXNvbHZlZERlc3RQLCBuZXdJbmRleCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgY29weUZpbGVTeW5jKHNvdXJjZVAsIGRlc3RQLCBmbGFncyA9IDApIHtcbiAgICAgICAgY29uc3QgeyBpbmRleFNvdXJjZSwgaW5kZXhEZXN0LCByZXNvbHZlZERlc3RQIH0gPSB0aGlzLnByZXBhcmVDb3B5RmlsZShzb3VyY2VQLCBkZXN0UCwgZmxhZ3MpO1xuICAgICAgICBjb25zdCBzb3VyY2UgPSB0aGlzLmdldEZpbGVTb3VyY2UoaW5kZXhTb3VyY2UpO1xuICAgICAgICBjb25zdCBuZXdJbmRleCA9IHRoaXMuc2V0RmlsZVNvdXJjZShyZXNvbHZlZERlc3RQLCBzb3VyY2UpO1xuICAgICAgICBpZiAobmV3SW5kZXggIT09IGluZGV4RGVzdCkge1xuICAgICAgICAgICAgdGhpcy5yZWdpc3RlckVudHJ5KHJlc29sdmVkRGVzdFAsIG5ld0luZGV4KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBwcmVwYXJlQ29weUZpbGUoc291cmNlUCwgZGVzdFAsIGZsYWdzID0gMCkge1xuICAgICAgICBpZiAodGhpcy5yZWFkT25seSlcbiAgICAgICAgICAgIHRocm93IGZzbGliXzUuZXJyb3JzLkVST0ZTKGBjb3B5ZmlsZSAnJHtzb3VyY2VQfSAtPiAnJHtkZXN0UH0nYCk7XG4gICAgICAgIGlmICgoZmxhZ3MgJiBmc18xLmNvbnN0YW50cy5DT1BZRklMRV9GSUNMT05FX0ZPUkNFKSAhPT0gMClcbiAgICAgICAgICAgIHRocm93IGZzbGliXzUuZXJyb3JzLkVOT1NZUyhgdW5zdXBwb3J0ZWQgY2xvbmUgb3BlcmF0aW9uYCwgYGNvcHlmaWxlICcke3NvdXJjZVB9JyAtPiAke2Rlc3RQfSdgKTtcbiAgICAgICAgY29uc3QgcmVzb2x2ZWRTb3VyY2VQID0gdGhpcy5yZXNvbHZlRmlsZW5hbWUoYGNvcHlmaWxlICcke3NvdXJjZVB9IC0+ICR7ZGVzdFB9J2AsIHNvdXJjZVApO1xuICAgICAgICBjb25zdCBpbmRleFNvdXJjZSA9IHRoaXMuZW50cmllcy5nZXQocmVzb2x2ZWRTb3VyY2VQKTtcbiAgICAgICAgaWYgKHR5cGVvZiBpbmRleFNvdXJjZSA9PT0gYHVuZGVmaW5lZGApXG4gICAgICAgICAgICB0aHJvdyBmc2xpYl81LmVycm9ycy5FSU5WQUwoYGNvcHlmaWxlICcke3NvdXJjZVB9JyAtPiAnJHtkZXN0UH0nYCk7XG4gICAgICAgIGNvbnN0IHJlc29sdmVkRGVzdFAgPSB0aGlzLnJlc29sdmVGaWxlbmFtZShgY29weWZpbGUgJyR7c291cmNlUH0nIC0+ICR7ZGVzdFB9J2AsIGRlc3RQKTtcbiAgICAgICAgY29uc3QgaW5kZXhEZXN0ID0gdGhpcy5lbnRyaWVzLmdldChyZXNvbHZlZERlc3RQKTtcbiAgICAgICAgaWYgKChmbGFncyAmIChmc18xLmNvbnN0YW50cy5DT1BZRklMRV9FWENMIHwgZnNfMS5jb25zdGFudHMuQ09QWUZJTEVfRklDTE9ORV9GT1JDRSkpICE9PSAwICYmIHR5cGVvZiBpbmRleERlc3QgIT09IGB1bmRlZmluZWRgKVxuICAgICAgICAgICAgdGhyb3cgZnNsaWJfNS5lcnJvcnMuRUVYSVNUKGBjb3B5ZmlsZSAnJHtzb3VyY2VQfScgLT4gJyR7ZGVzdFB9J2ApO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaW5kZXhTb3VyY2UsXG4gICAgICAgICAgICByZXNvbHZlZERlc3RQLFxuICAgICAgICAgICAgaW5kZXhEZXN0LFxuICAgICAgICB9O1xuICAgIH1cbiAgICBhc3luYyBhcHBlbmRGaWxlUHJvbWlzZShwLCBjb250ZW50LCBvcHRzKSB7XG4gICAgICAgIGlmICh0aGlzLnJlYWRPbmx5KVxuICAgICAgICAgICAgdGhyb3cgZnNsaWJfNS5lcnJvcnMuRVJPRlMoYG9wZW4gJyR7cH0nYCk7XG4gICAgICAgIGlmICh0eXBlb2Ygb3B0cyA9PT0gYHVuZGVmaW5lZGApXG4gICAgICAgICAgICBvcHRzID0geyBmbGFnOiBgYWAgfTtcbiAgICAgICAgZWxzZSBpZiAodHlwZW9mIG9wdHMgPT09IGBzdHJpbmdgKVxuICAgICAgICAgICAgb3B0cyA9IHsgZmxhZzogYGFgLCBlbmNvZGluZzogb3B0cyB9O1xuICAgICAgICBlbHNlIGlmICh0eXBlb2Ygb3B0cy5mbGFnID09PSBgdW5kZWZpbmVkYClcbiAgICAgICAgICAgIG9wdHMgPSB7IGZsYWc6IGBhYCwgLi4ub3B0cyB9O1xuICAgICAgICByZXR1cm4gdGhpcy53cml0ZUZpbGVQcm9taXNlKHAsIGNvbnRlbnQsIG9wdHMpO1xuICAgIH1cbiAgICBhcHBlbmRGaWxlU3luYyhwLCBjb250ZW50LCBvcHRzID0ge30pIHtcbiAgICAgICAgaWYgKHRoaXMucmVhZE9ubHkpXG4gICAgICAgICAgICB0aHJvdyBmc2xpYl81LmVycm9ycy5FUk9GUyhgb3BlbiAnJHtwfSdgKTtcbiAgICAgICAgaWYgKHR5cGVvZiBvcHRzID09PSBgdW5kZWZpbmVkYClcbiAgICAgICAgICAgIG9wdHMgPSB7IGZsYWc6IGBhYCB9O1xuICAgICAgICBlbHNlIGlmICh0eXBlb2Ygb3B0cyA9PT0gYHN0cmluZ2ApXG4gICAgICAgICAgICBvcHRzID0geyBmbGFnOiBgYWAsIGVuY29kaW5nOiBvcHRzIH07XG4gICAgICAgIGVsc2UgaWYgKHR5cGVvZiBvcHRzLmZsYWcgPT09IGB1bmRlZmluZWRgKVxuICAgICAgICAgICAgb3B0cyA9IHsgZmxhZzogYGFgLCAuLi5vcHRzIH07XG4gICAgICAgIHJldHVybiB0aGlzLndyaXRlRmlsZVN5bmMocCwgY29udGVudCwgb3B0cyk7XG4gICAgfVxuICAgIGZkVG9QYXRoKGZkLCByZWFzb24pIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBjb25zdCBwYXRoID0gKF9hID0gdGhpcy5mZHMuZ2V0KGZkKSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnA7XG4gICAgICAgIGlmICh0eXBlb2YgcGF0aCA9PT0gYHVuZGVmaW5lZGApXG4gICAgICAgICAgICB0aHJvdyBmc2xpYl81LmVycm9ycy5FQkFERihyZWFzb24pO1xuICAgICAgICByZXR1cm4gcGF0aDtcbiAgICB9XG4gICAgYXN5bmMgd3JpdGVGaWxlUHJvbWlzZShwLCBjb250ZW50LCBvcHRzKSB7XG4gICAgICAgIGNvbnN0IHsgZW5jb2RpbmcsIG1vZGUsIGluZGV4LCByZXNvbHZlZFAgfSA9IHRoaXMucHJlcGFyZVdyaXRlRmlsZShwLCBvcHRzKTtcbiAgICAgICAgaWYgKGluZGV4ICE9PSB1bmRlZmluZWQgJiYgdHlwZW9mIG9wdHMgPT09IGBvYmplY3RgICYmIG9wdHMuZmxhZyAmJiBvcHRzLmZsYWcuaW5jbHVkZXMoYGFgKSlcbiAgICAgICAgICAgIGNvbnRlbnQgPSBCdWZmZXIuY29uY2F0KFthd2FpdCB0aGlzLmdldEZpbGVTb3VyY2UoaW5kZXgsIHsgYXN5bmNEZWNvbXByZXNzOiB0cnVlIH0pLCBCdWZmZXIuZnJvbShjb250ZW50KV0pO1xuICAgICAgICBpZiAoZW5jb2RpbmcgIT09IG51bGwpXG4gICAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yOiB0b1N0cmluZyBpZ25vcmVzIHVubmVlZGVkIGFyZ3VtZW50c1xuICAgICAgICAgICAgY29udGVudCA9IGNvbnRlbnQudG9TdHJpbmcoZW5jb2RpbmcpO1xuICAgICAgICBjb25zdCBuZXdJbmRleCA9IHRoaXMuc2V0RmlsZVNvdXJjZShyZXNvbHZlZFAsIGNvbnRlbnQpO1xuICAgICAgICBpZiAobmV3SW5kZXggIT09IGluZGV4KVxuICAgICAgICAgICAgdGhpcy5yZWdpc3RlckVudHJ5KHJlc29sdmVkUCwgbmV3SW5kZXgpO1xuICAgICAgICBpZiAobW9kZSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5jaG1vZFByb21pc2UocmVzb2x2ZWRQLCBtb2RlKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICB3cml0ZUZpbGVTeW5jKHAsIGNvbnRlbnQsIG9wdHMpIHtcbiAgICAgICAgY29uc3QgeyBlbmNvZGluZywgbW9kZSwgaW5kZXgsIHJlc29sdmVkUCB9ID0gdGhpcy5wcmVwYXJlV3JpdGVGaWxlKHAsIG9wdHMpO1xuICAgICAgICBpZiAoaW5kZXggIT09IHVuZGVmaW5lZCAmJiB0eXBlb2Ygb3B0cyA9PT0gYG9iamVjdGAgJiYgb3B0cy5mbGFnICYmIG9wdHMuZmxhZy5pbmNsdWRlcyhgYWApKVxuICAgICAgICAgICAgY29udGVudCA9IEJ1ZmZlci5jb25jYXQoW3RoaXMuZ2V0RmlsZVNvdXJjZShpbmRleCksIEJ1ZmZlci5mcm9tKGNvbnRlbnQpXSk7XG4gICAgICAgIGlmIChlbmNvZGluZyAhPT0gbnVsbClcbiAgICAgICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3I6IHRvU3RyaW5nIGlnbm9yZXMgdW5uZWVkZWQgYXJndW1lbnRzXG4gICAgICAgICAgICBjb250ZW50ID0gY29udGVudC50b1N0cmluZyhlbmNvZGluZyk7XG4gICAgICAgIGNvbnN0IG5ld0luZGV4ID0gdGhpcy5zZXRGaWxlU291cmNlKHJlc29sdmVkUCwgY29udGVudCk7XG4gICAgICAgIGlmIChuZXdJbmRleCAhPT0gaW5kZXgpXG4gICAgICAgICAgICB0aGlzLnJlZ2lzdGVyRW50cnkocmVzb2x2ZWRQLCBuZXdJbmRleCk7XG4gICAgICAgIGlmIChtb2RlICE9PSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLmNobW9kU3luYyhyZXNvbHZlZFAsIG1vZGUpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHByZXBhcmVXcml0ZUZpbGUocCwgb3B0cykge1xuICAgICAgICBpZiAodHlwZW9mIHAgPT09IGBudW1iZXJgKVxuICAgICAgICAgICAgcCA9IHRoaXMuZmRUb1BhdGgocCwgYHJlYWRgKTtcbiAgICAgICAgaWYgKHRoaXMucmVhZE9ubHkpXG4gICAgICAgICAgICB0aHJvdyBmc2xpYl81LmVycm9ycy5FUk9GUyhgb3BlbiAnJHtwfSdgKTtcbiAgICAgICAgY29uc3QgcmVzb2x2ZWRQID0gdGhpcy5yZXNvbHZlRmlsZW5hbWUoYG9wZW4gJyR7cH0nYCwgcCk7XG4gICAgICAgIGlmICh0aGlzLmxpc3RpbmdzLmhhcyhyZXNvbHZlZFApKVxuICAgICAgICAgICAgdGhyb3cgZnNsaWJfNS5lcnJvcnMuRUlTRElSKGBvcGVuICcke3B9J2ApO1xuICAgICAgICBsZXQgZW5jb2RpbmcgPSBudWxsLCBtb2RlID0gbnVsbDtcbiAgICAgICAgaWYgKHR5cGVvZiBvcHRzID09PSBgc3RyaW5nYCkge1xuICAgICAgICAgICAgZW5jb2RpbmcgPSBvcHRzO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHR5cGVvZiBvcHRzID09PSBgb2JqZWN0YCkge1xuICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICBlbmNvZGluZyA9IG51bGwsXG4gICAgICAgICAgICAgICAgbW9kZSA9IG51bGwsXG4gICAgICAgICAgICB9ID0gb3B0cyk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmVudHJpZXMuZ2V0KHJlc29sdmVkUCk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBlbmNvZGluZyxcbiAgICAgICAgICAgIG1vZGUsXG4gICAgICAgICAgICByZXNvbHZlZFAsXG4gICAgICAgICAgICBpbmRleCxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgYXN5bmMgdW5saW5rUHJvbWlzZShwKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnVubGlua1N5bmMocCk7XG4gICAgfVxuICAgIHVubGlua1N5bmMocCkge1xuICAgICAgICBpZiAodGhpcy5yZWFkT25seSlcbiAgICAgICAgICAgIHRocm93IGZzbGliXzUuZXJyb3JzLkVST0ZTKGB1bmxpbmsgJyR7cH0nYCk7XG4gICAgICAgIGNvbnN0IHJlc29sdmVkUCA9IHRoaXMucmVzb2x2ZUZpbGVuYW1lKGB1bmxpbmsgJyR7cH0nYCwgcCk7XG4gICAgICAgIGlmICh0aGlzLmxpc3RpbmdzLmhhcyhyZXNvbHZlZFApKVxuICAgICAgICAgICAgdGhyb3cgZnNsaWJfNS5lcnJvcnMuRUlTRElSKGB1bmxpbmsgJyR7cH0nYCk7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5lbnRyaWVzLmdldChyZXNvbHZlZFApO1xuICAgICAgICBpZiAodHlwZW9mIGluZGV4ID09PSBgdW5kZWZpbmVkYClcbiAgICAgICAgICAgIHRocm93IGZzbGliXzUuZXJyb3JzLkVJTlZBTChgdW5saW5rICcke3B9J2ApO1xuICAgICAgICB0aGlzLmRlbGV0ZUVudHJ5KHJlc29sdmVkUCwgaW5kZXgpO1xuICAgIH1cbiAgICBhc3luYyB1dGltZXNQcm9taXNlKHAsIGF0aW1lLCBtdGltZSkge1xuICAgICAgICByZXR1cm4gdGhpcy51dGltZXNTeW5jKHAsIGF0aW1lLCBtdGltZSk7XG4gICAgfVxuICAgIHV0aW1lc1N5bmMocCwgYXRpbWUsIG10aW1lKSB7XG4gICAgICAgIGlmICh0aGlzLnJlYWRPbmx5KVxuICAgICAgICAgICAgdGhyb3cgZnNsaWJfNS5lcnJvcnMuRVJPRlMoYHV0aW1lcyAnJHtwfSdgKTtcbiAgICAgICAgY29uc3QgcmVzb2x2ZWRQID0gdGhpcy5yZXNvbHZlRmlsZW5hbWUoYHV0aW1lcyAnJHtwfSdgLCBwKTtcbiAgICAgICAgdGhpcy51dGltZXNJbXBsKHJlc29sdmVkUCwgbXRpbWUpO1xuICAgIH1cbiAgICBhc3luYyBsdXRpbWVzUHJvbWlzZShwLCBhdGltZSwgbXRpbWUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubHV0aW1lc1N5bmMocCwgYXRpbWUsIG10aW1lKTtcbiAgICB9XG4gICAgbHV0aW1lc1N5bmMocCwgYXRpbWUsIG10aW1lKSB7XG4gICAgICAgIGlmICh0aGlzLnJlYWRPbmx5KVxuICAgICAgICAgICAgdGhyb3cgZnNsaWJfNS5lcnJvcnMuRVJPRlMoYGx1dGltZXMgJyR7cH0nYCk7XG4gICAgICAgIGNvbnN0IHJlc29sdmVkUCA9IHRoaXMucmVzb2x2ZUZpbGVuYW1lKGB1dGltZXMgJyR7cH0nYCwgcCwgZmFsc2UpO1xuICAgICAgICB0aGlzLnV0aW1lc0ltcGwocmVzb2x2ZWRQLCBtdGltZSk7XG4gICAgfVxuICAgIHV0aW1lc0ltcGwocmVzb2x2ZWRQLCBtdGltZSkge1xuICAgICAgICBpZiAodGhpcy5saXN0aW5ncy5oYXMocmVzb2x2ZWRQKSlcbiAgICAgICAgICAgIGlmICghdGhpcy5lbnRyaWVzLmhhcyhyZXNvbHZlZFApKVxuICAgICAgICAgICAgICAgIHRoaXMuaHlkcmF0ZURpcmVjdG9yeShyZXNvbHZlZFApO1xuICAgICAgICBjb25zdCBlbnRyeSA9IHRoaXMuZW50cmllcy5nZXQocmVzb2x2ZWRQKTtcbiAgICAgICAgaWYgKGVudHJ5ID09PSB1bmRlZmluZWQpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVucmVhY2hhYmxlYCk7XG4gICAgICAgIGNvbnN0IHJjID0gdGhpcy5saWJ6aXAuZmlsZS5zZXRNdGltZSh0aGlzLnppcCwgZW50cnksIDAsIHRvVW5peFRpbWVzdGFtcChtdGltZSksIDApO1xuICAgICAgICBpZiAocmMgPT09IC0xKSB7XG4gICAgICAgICAgICB0aHJvdyB0aGlzLm1ha2VMaWJ6aXBFcnJvcih0aGlzLmxpYnppcC5nZXRFcnJvcih0aGlzLnppcCkpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGFzeW5jIG1rZGlyUHJvbWlzZShwLCBvcHRzKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1rZGlyU3luYyhwLCBvcHRzKTtcbiAgICB9XG4gICAgbWtkaXJTeW5jKHAsIHsgbW9kZSA9IDBvNzU1LCByZWN1cnNpdmUgPSBmYWxzZSB9ID0ge30pIHtcbiAgICAgICAgaWYgKHJlY3Vyc2l2ZSlcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm1rZGlycFN5bmMocCwgeyBjaG1vZDogbW9kZSB9KTtcbiAgICAgICAgaWYgKHRoaXMucmVhZE9ubHkpXG4gICAgICAgICAgICB0aHJvdyBmc2xpYl81LmVycm9ycy5FUk9GUyhgbWtkaXIgJyR7cH0nYCk7XG4gICAgICAgIGNvbnN0IHJlc29sdmVkUCA9IHRoaXMucmVzb2x2ZUZpbGVuYW1lKGBta2RpciAnJHtwfSdgLCBwKTtcbiAgICAgICAgaWYgKHRoaXMuZW50cmllcy5oYXMocmVzb2x2ZWRQKSB8fCB0aGlzLmxpc3RpbmdzLmhhcyhyZXNvbHZlZFApKVxuICAgICAgICAgICAgdGhyb3cgZnNsaWJfNS5lcnJvcnMuRUVYSVNUKGBta2RpciAnJHtwfSdgKTtcbiAgICAgICAgdGhpcy5oeWRyYXRlRGlyZWN0b3J5KHJlc29sdmVkUCk7XG4gICAgICAgIHRoaXMuY2htb2RTeW5jKHJlc29sdmVkUCwgbW9kZSk7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGFzeW5jIHJtZGlyUHJvbWlzZShwLCBvcHRzKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJtZGlyU3luYyhwLCBvcHRzKTtcbiAgICB9XG4gICAgcm1kaXJTeW5jKHAsIHsgcmVjdXJzaXZlID0gZmFsc2UgfSA9IHt9KSB7XG4gICAgICAgIGlmICh0aGlzLnJlYWRPbmx5KVxuICAgICAgICAgICAgdGhyb3cgZnNsaWJfNS5lcnJvcnMuRVJPRlMoYHJtZGlyICcke3B9J2ApO1xuICAgICAgICBpZiAocmVjdXJzaXZlKSB7XG4gICAgICAgICAgICB0aGlzLnJlbW92ZVN5bmMocCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcmVzb2x2ZWRQID0gdGhpcy5yZXNvbHZlRmlsZW5hbWUoYHJtZGlyICcke3B9J2AsIHApO1xuICAgICAgICBjb25zdCBkaXJlY3RvcnlMaXN0aW5nID0gdGhpcy5saXN0aW5ncy5nZXQocmVzb2x2ZWRQKTtcbiAgICAgICAgaWYgKCFkaXJlY3RvcnlMaXN0aW5nKVxuICAgICAgICAgICAgdGhyb3cgZnNsaWJfNS5lcnJvcnMuRU5PVERJUihgcm1kaXIgJyR7cH0nYCk7XG4gICAgICAgIGlmIChkaXJlY3RvcnlMaXN0aW5nLnNpemUgPiAwKVxuICAgICAgICAgICAgdGhyb3cgZnNsaWJfNS5lcnJvcnMuRU5PVEVNUFRZKGBybWRpciAnJHtwfSdgKTtcbiAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmVudHJpZXMuZ2V0KHJlc29sdmVkUCk7XG4gICAgICAgIGlmICh0eXBlb2YgaW5kZXggPT09IGB1bmRlZmluZWRgKVxuICAgICAgICAgICAgdGhyb3cgZnNsaWJfNS5lcnJvcnMuRUlOVkFMKGBybWRpciAnJHtwfSdgKTtcbiAgICAgICAgdGhpcy5kZWxldGVFbnRyeShwLCBpbmRleCk7XG4gICAgfVxuICAgIGh5ZHJhdGVEaXJlY3RvcnkocmVzb2x2ZWRQKSB7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5saWJ6aXAuZGlyLmFkZCh0aGlzLnppcCwgZnNsaWJfNi5wcGF0aC5yZWxhdGl2ZShmc2xpYl82LlBvcnRhYmxlUGF0aC5yb290LCByZXNvbHZlZFApKTtcbiAgICAgICAgaWYgKGluZGV4ID09PSAtMSlcbiAgICAgICAgICAgIHRocm93IHRoaXMubWFrZUxpYnppcEVycm9yKHRoaXMubGliemlwLmdldEVycm9yKHRoaXMuemlwKSk7XG4gICAgICAgIHRoaXMucmVnaXN0ZXJMaXN0aW5nKHJlc29sdmVkUCk7XG4gICAgICAgIHRoaXMucmVnaXN0ZXJFbnRyeShyZXNvbHZlZFAsIGluZGV4KTtcbiAgICAgICAgcmV0dXJuIGluZGV4O1xuICAgIH1cbiAgICBhc3luYyBsaW5rUHJvbWlzZShleGlzdGluZ1AsIG5ld1ApIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubGlua1N5bmMoZXhpc3RpbmdQLCBuZXdQKTtcbiAgICB9XG4gICAgbGlua1N5bmMoZXhpc3RpbmdQLCBuZXdQKSB7XG4gICAgICAgIC8vIFppcCBhcmNoaXZlcyBkb24ndCBzdXBwb3J0IGhhcmQgbGlua3M6XG4gICAgICAgIC8vIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzg4NTk2MTYvYXJlLWhhcmQtbGlua3MtcG9zc2libGUtd2l0aGluLWEtemlwLWFyY2hpdmVcbiAgICAgICAgdGhyb3cgZnNsaWJfNS5lcnJvcnMuRU9QTk9UU1VQUChgbGluayAnJHtleGlzdGluZ1B9JyAtPiAnJHtuZXdQfSdgKTtcbiAgICB9XG4gICAgYXN5bmMgc3ltbGlua1Byb21pc2UodGFyZ2V0LCBwKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN5bWxpbmtTeW5jKHRhcmdldCwgcCk7XG4gICAgfVxuICAgIHN5bWxpbmtTeW5jKHRhcmdldCwgcCkge1xuICAgICAgICBpZiAodGhpcy5yZWFkT25seSlcbiAgICAgICAgICAgIHRocm93IGZzbGliXzUuZXJyb3JzLkVST0ZTKGBzeW1saW5rICcke3RhcmdldH0nIC0+ICcke3B9J2ApO1xuICAgICAgICBjb25zdCByZXNvbHZlZFAgPSB0aGlzLnJlc29sdmVGaWxlbmFtZShgc3ltbGluayAnJHt0YXJnZXR9JyAtPiAnJHtwfSdgLCBwKTtcbiAgICAgICAgaWYgKHRoaXMubGlzdGluZ3MuaGFzKHJlc29sdmVkUCkpXG4gICAgICAgICAgICB0aHJvdyBmc2xpYl81LmVycm9ycy5FSVNESVIoYHN5bWxpbmsgJyR7dGFyZ2V0fScgLT4gJyR7cH0nYCk7XG4gICAgICAgIGlmICh0aGlzLmVudHJpZXMuaGFzKHJlc29sdmVkUCkpXG4gICAgICAgICAgICB0aHJvdyBmc2xpYl81LmVycm9ycy5FRVhJU1QoYHN5bWxpbmsgJyR7dGFyZ2V0fScgLT4gJyR7cH0nYCk7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5zZXRGaWxlU291cmNlKHJlc29sdmVkUCwgdGFyZ2V0KTtcbiAgICAgICAgdGhpcy5yZWdpc3RlckVudHJ5KHJlc29sdmVkUCwgaW5kZXgpO1xuICAgICAgICBjb25zdCByYyA9IHRoaXMubGliemlwLmZpbGUuc2V0RXh0ZXJuYWxBdHRyaWJ1dGVzKHRoaXMuemlwLCBpbmRleCwgMCwgMCwgdGhpcy5saWJ6aXAuWklQX09QU1lTX1VOSVgsIChmc18xLmNvbnN0YW50cy5TX0lGTE5LIHwgMG83NzcpIDw8IDE2KTtcbiAgICAgICAgaWYgKHJjID09PSAtMSlcbiAgICAgICAgICAgIHRocm93IHRoaXMubWFrZUxpYnppcEVycm9yKHRoaXMubGliemlwLmdldEVycm9yKHRoaXMuemlwKSk7XG4gICAgICAgIHRoaXMuc3ltbGlua0NvdW50ICs9IDE7XG4gICAgfVxuICAgIGFzeW5jIHJlYWRGaWxlUHJvbWlzZShwLCBlbmNvZGluZykge1xuICAgICAgICAvLyBUaGlzIGlzIG1lc3NlZCB1cCByZWdhcmRpbmcgdGhlIFRTIHNpZ25hdHVyZXNcbiAgICAgICAgaWYgKHR5cGVvZiBlbmNvZGluZyA9PT0gYG9iamVjdGApXG4gICAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgICAgICAgICBlbmNvZGluZyA9IGVuY29kaW5nID8gZW5jb2RpbmcuZW5jb2RpbmcgOiB1bmRlZmluZWQ7XG4gICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB0aGlzLnJlYWRGaWxlQnVmZmVyKHAsIHsgYXN5bmNEZWNvbXByZXNzOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gZW5jb2RpbmcgPyBkYXRhLnRvU3RyaW5nKGVuY29kaW5nKSA6IGRhdGE7XG4gICAgfVxuICAgIHJlYWRGaWxlU3luYyhwLCBlbmNvZGluZykge1xuICAgICAgICAvLyBUaGlzIGlzIG1lc3NlZCB1cCByZWdhcmRpbmcgdGhlIFRTIHNpZ25hdHVyZXNcbiAgICAgICAgaWYgKHR5cGVvZiBlbmNvZGluZyA9PT0gYG9iamVjdGApXG4gICAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgICAgICAgICBlbmNvZGluZyA9IGVuY29kaW5nID8gZW5jb2RpbmcuZW5jb2RpbmcgOiB1bmRlZmluZWQ7XG4gICAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLnJlYWRGaWxlQnVmZmVyKHApO1xuICAgICAgICByZXR1cm4gZW5jb2RpbmcgPyBkYXRhLnRvU3RyaW5nKGVuY29kaW5nKSA6IGRhdGE7XG4gICAgfVxuICAgIHJlYWRGaWxlQnVmZmVyKHAsIG9wdHMgPSB7IGFzeW5jRGVjb21wcmVzczogZmFsc2UgfSkge1xuICAgICAgICBpZiAodHlwZW9mIHAgPT09IGBudW1iZXJgKVxuICAgICAgICAgICAgcCA9IHRoaXMuZmRUb1BhdGgocCwgYHJlYWRgKTtcbiAgICAgICAgY29uc3QgcmVzb2x2ZWRQID0gdGhpcy5yZXNvbHZlRmlsZW5hbWUoYG9wZW4gJyR7cH0nYCwgcCk7XG4gICAgICAgIGlmICghdGhpcy5lbnRyaWVzLmhhcyhyZXNvbHZlZFApICYmICF0aGlzLmxpc3RpbmdzLmhhcyhyZXNvbHZlZFApKVxuICAgICAgICAgICAgdGhyb3cgZnNsaWJfNS5lcnJvcnMuRU5PRU5UKGBvcGVuICcke3B9J2ApO1xuICAgICAgICAvLyBFbnN1cmVzIHRoYXQgdGhlIGxhc3QgY29tcG9uZW50IGlzIGEgZGlyZWN0b3J5LCBpZiB0aGUgdXNlciBzYWlkIHNvIChldmVuIGlmIGl0IGlzIHdlJ2xsIHRocm93IHJpZ2h0IGFmdGVyIHdpdGggRUlTRElSIGFueXdheSlcbiAgICAgICAgaWYgKHBbcC5sZW5ndGggLSAxXSA9PT0gYC9gICYmICF0aGlzLmxpc3RpbmdzLmhhcyhyZXNvbHZlZFApKVxuICAgICAgICAgICAgdGhyb3cgZnNsaWJfNS5lcnJvcnMuRU5PVERJUihgb3BlbiAnJHtwfSdgKTtcbiAgICAgICAgaWYgKHRoaXMubGlzdGluZ3MuaGFzKHJlc29sdmVkUCkpXG4gICAgICAgICAgICB0aHJvdyBmc2xpYl81LmVycm9ycy5FSVNESVIoYHJlYWRgKTtcbiAgICAgICAgY29uc3QgZW50cnkgPSB0aGlzLmVudHJpZXMuZ2V0KHJlc29sdmVkUCk7XG4gICAgICAgIGlmIChlbnRyeSA9PT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbnJlYWNoYWJsZWApO1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRGaWxlU291cmNlKGVudHJ5LCBvcHRzKTtcbiAgICB9XG4gICAgYXN5bmMgcmVhZGRpclByb21pc2UocCwgb3B0cykge1xuICAgICAgICByZXR1cm4gdGhpcy5yZWFkZGlyU3luYyhwLCBvcHRzKTtcbiAgICB9XG4gICAgcmVhZGRpclN5bmMocCwgb3B0cykge1xuICAgICAgICBjb25zdCByZXNvbHZlZFAgPSB0aGlzLnJlc29sdmVGaWxlbmFtZShgc2NhbmRpciAnJHtwfSdgLCBwKTtcbiAgICAgICAgaWYgKCF0aGlzLmVudHJpZXMuaGFzKHJlc29sdmVkUCkgJiYgIXRoaXMubGlzdGluZ3MuaGFzKHJlc29sdmVkUCkpXG4gICAgICAgICAgICB0aHJvdyBmc2xpYl81LmVycm9ycy5FTk9FTlQoYHNjYW5kaXIgJyR7cH0nYCk7XG4gICAgICAgIGNvbnN0IGRpcmVjdG9yeUxpc3RpbmcgPSB0aGlzLmxpc3RpbmdzLmdldChyZXNvbHZlZFApO1xuICAgICAgICBpZiAoIWRpcmVjdG9yeUxpc3RpbmcpXG4gICAgICAgICAgICB0aHJvdyBmc2xpYl81LmVycm9ycy5FTk9URElSKGBzY2FuZGlyICcke3B9J2ApO1xuICAgICAgICBjb25zdCBlbnRyaWVzID0gWy4uLmRpcmVjdG9yeUxpc3RpbmddO1xuICAgICAgICBpZiAoIShvcHRzID09PSBudWxsIHx8IG9wdHMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdHMud2l0aEZpbGVUeXBlcykpXG4gICAgICAgICAgICByZXR1cm4gZW50cmllcztcbiAgICAgICAgcmV0dXJuIGVudHJpZXMubWFwKG5hbWUgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24odGhpcy5zdGF0SW1wbChgbHN0YXRgLCBmc2xpYl82LnBwYXRoLmpvaW4ocCwgbmFtZSkpLCB7XG4gICAgICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgYXN5bmMgcmVhZGxpbmtQcm9taXNlKHApIHtcbiAgICAgICAgY29uc3QgZW50cnkgPSB0aGlzLnByZXBhcmVSZWFkbGluayhwKTtcbiAgICAgICAgcmV0dXJuIChhd2FpdCB0aGlzLmdldEZpbGVTb3VyY2UoZW50cnksIHsgYXN5bmNEZWNvbXByZXNzOiB0cnVlIH0pKS50b1N0cmluZygpO1xuICAgIH1cbiAgICByZWFkbGlua1N5bmMocCkge1xuICAgICAgICBjb25zdCBlbnRyeSA9IHRoaXMucHJlcGFyZVJlYWRsaW5rKHApO1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRGaWxlU291cmNlKGVudHJ5KS50b1N0cmluZygpO1xuICAgIH1cbiAgICBwcmVwYXJlUmVhZGxpbmsocCkge1xuICAgICAgICBjb25zdCByZXNvbHZlZFAgPSB0aGlzLnJlc29sdmVGaWxlbmFtZShgcmVhZGxpbmsgJyR7cH0nYCwgcCwgZmFsc2UpO1xuICAgICAgICBpZiAoIXRoaXMuZW50cmllcy5oYXMocmVzb2x2ZWRQKSAmJiAhdGhpcy5saXN0aW5ncy5oYXMocmVzb2x2ZWRQKSlcbiAgICAgICAgICAgIHRocm93IGZzbGliXzUuZXJyb3JzLkVOT0VOVChgcmVhZGxpbmsgJyR7cH0nYCk7XG4gICAgICAgIC8vIEVuc3VyZSB0aGF0IHRoZSBsYXN0IGNvbXBvbmVudCBpcyBhIGRpcmVjdG9yeSAoaWYgaXQgaXMgd2UnbGwgdGhyb3cgcmlnaHQgYWZ0ZXIgd2l0aCBFSVNESVIgYW55d2F5KVxuICAgICAgICBpZiAocFtwLmxlbmd0aCAtIDFdID09PSBgL2AgJiYgIXRoaXMubGlzdGluZ3MuaGFzKHJlc29sdmVkUCkpXG4gICAgICAgICAgICB0aHJvdyBmc2xpYl81LmVycm9ycy5FTk9URElSKGBvcGVuICcke3B9J2ApO1xuICAgICAgICBpZiAodGhpcy5saXN0aW5ncy5oYXMocmVzb2x2ZWRQKSlcbiAgICAgICAgICAgIHRocm93IGZzbGliXzUuZXJyb3JzLkVJTlZBTChgcmVhZGxpbmsgJyR7cH0nYCk7XG4gICAgICAgIGNvbnN0IGVudHJ5ID0gdGhpcy5lbnRyaWVzLmdldChyZXNvbHZlZFApO1xuICAgICAgICBpZiAoZW50cnkgPT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5yZWFjaGFibGVgKTtcbiAgICAgICAgaWYgKCF0aGlzLmlzU3ltYm9saWNMaW5rKGVudHJ5KSlcbiAgICAgICAgICAgIHRocm93IGZzbGliXzUuZXJyb3JzLkVJTlZBTChgcmVhZGxpbmsgJyR7cH0nYCk7XG4gICAgICAgIHJldHVybiBlbnRyeTtcbiAgICB9XG4gICAgYXN5bmMgdHJ1bmNhdGVQcm9taXNlKHAsIGxlbiA9IDApIHtcbiAgICAgICAgY29uc3QgcmVzb2x2ZWRQID0gdGhpcy5yZXNvbHZlRmlsZW5hbWUoYG9wZW4gJyR7cH0nYCwgcCk7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5lbnRyaWVzLmdldChyZXNvbHZlZFApO1xuICAgICAgICBpZiAodHlwZW9mIGluZGV4ID09PSBgdW5kZWZpbmVkYClcbiAgICAgICAgICAgIHRocm93IGZzbGliXzUuZXJyb3JzLkVJTlZBTChgb3BlbiAnJHtwfSdgKTtcbiAgICAgICAgY29uc3Qgc291cmNlID0gYXdhaXQgdGhpcy5nZXRGaWxlU291cmNlKGluZGV4LCB7IGFzeW5jRGVjb21wcmVzczogdHJ1ZSB9KTtcbiAgICAgICAgY29uc3QgdHJ1bmNhdGVkID0gQnVmZmVyLmFsbG9jKGxlbiwgMHgwMCk7XG4gICAgICAgIHNvdXJjZS5jb3B5KHRydW5jYXRlZCk7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLndyaXRlRmlsZVByb21pc2UocCwgdHJ1bmNhdGVkKTtcbiAgICB9XG4gICAgdHJ1bmNhdGVTeW5jKHAsIGxlbiA9IDApIHtcbiAgICAgICAgY29uc3QgcmVzb2x2ZWRQID0gdGhpcy5yZXNvbHZlRmlsZW5hbWUoYG9wZW4gJyR7cH0nYCwgcCk7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5lbnRyaWVzLmdldChyZXNvbHZlZFApO1xuICAgICAgICBpZiAodHlwZW9mIGluZGV4ID09PSBgdW5kZWZpbmVkYClcbiAgICAgICAgICAgIHRocm93IGZzbGliXzUuZXJyb3JzLkVJTlZBTChgb3BlbiAnJHtwfSdgKTtcbiAgICAgICAgY29uc3Qgc291cmNlID0gdGhpcy5nZXRGaWxlU291cmNlKGluZGV4KTtcbiAgICAgICAgY29uc3QgdHJ1bmNhdGVkID0gQnVmZmVyLmFsbG9jKGxlbiwgMHgwMCk7XG4gICAgICAgIHNvdXJjZS5jb3B5KHRydW5jYXRlZCk7XG4gICAgICAgIHJldHVybiB0aGlzLndyaXRlRmlsZVN5bmMocCwgdHJ1bmNhdGVkKTtcbiAgICB9XG4gICAgYXN5bmMgZnRydW5jYXRlUHJvbWlzZShmZCwgbGVuKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRydW5jYXRlUHJvbWlzZSh0aGlzLmZkVG9QYXRoKGZkLCBgZnRydW5jYXRlYCksIGxlbik7XG4gICAgfVxuICAgIGZ0cnVuY2F0ZVN5bmMoZmQsIGxlbikge1xuICAgICAgICByZXR1cm4gdGhpcy50cnVuY2F0ZVN5bmModGhpcy5mZFRvUGF0aChmZCwgYGZ0cnVuY2F0ZVN5bmNgKSwgbGVuKTtcbiAgICB9XG4gICAgd2F0Y2gocCwgYSwgYikge1xuICAgICAgICBsZXQgcGVyc2lzdGVudDtcbiAgICAgICAgc3dpdGNoICh0eXBlb2YgYSkge1xuICAgICAgICAgICAgY2FzZSBgZnVuY3Rpb25gOlxuICAgICAgICAgICAgY2FzZSBgc3RyaW5nYDpcbiAgICAgICAgICAgIGNhc2UgYHVuZGVmaW5lZGA6XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBwZXJzaXN0ZW50ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgKHsgcGVyc2lzdGVudCA9IHRydWUgfSA9IGEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXBlcnNpc3RlbnQpXG4gICAgICAgICAgICByZXR1cm4geyBvbjogKCkgPT4geyB9LCBjbG9zZTogKCkgPT4geyB9IH07XG4gICAgICAgIGNvbnN0IGludGVydmFsID0gc2V0SW50ZXJ2YWwoKCkgPT4geyB9LCAyNCAqIDYwICogNjAgKiAxMDAwKTtcbiAgICAgICAgcmV0dXJuIHsgb246ICgpID0+IHsgfSwgY2xvc2U6ICgpID0+IHtcbiAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGludGVydmFsKTtcbiAgICAgICAgICAgIH0gfTtcbiAgICB9XG4gICAgd2F0Y2hGaWxlKHAsIGEsIGIpIHtcbiAgICAgICAgY29uc3QgcmVzb2x2ZWRQID0gZnNsaWJfNi5wcGF0aC5yZXNvbHZlKGZzbGliXzYuUG9ydGFibGVQYXRoLnJvb3QsIHApO1xuICAgICAgICByZXR1cm4gKDAsIGZzbGliXzQud2F0Y2hGaWxlKSh0aGlzLCByZXNvbHZlZFAsIGEsIGIpO1xuICAgIH1cbiAgICB1bndhdGNoRmlsZShwLCBjYikge1xuICAgICAgICBjb25zdCByZXNvbHZlZFAgPSBmc2xpYl82LnBwYXRoLnJlc29sdmUoZnNsaWJfNi5Qb3J0YWJsZVBhdGgucm9vdCwgcCk7XG4gICAgICAgIHJldHVybiAoMCwgZnNsaWJfNC51bndhdGNoRmlsZSkodGhpcywgcmVzb2x2ZWRQLCBjYik7XG4gICAgfVxufVxuZXhwb3J0cy5aaXBGUyA9IFppcEZTO1xuIiwgIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5tb3VudE1lbW9yeURyaXZlID0gdm9pZCAwO1xuY29uc3QgdHNsaWJfMSA9IHJlcXVpcmUoXCJ0c2xpYlwiKTtcbmNvbnN0IGZzbGliXzEgPSByZXF1aXJlKFwiQHlhcm5wa2cvZnNsaWJcIik7XG5jb25zdCBmc18xID0gdHNsaWJfMS5fX2ltcG9ydERlZmF1bHQocmVxdWlyZShcImZzXCIpKTtcbmNvbnN0IFppcEZTXzEgPSByZXF1aXJlKFwiLi9aaXBGU1wiKTtcbmZ1bmN0aW9uIG1vdW50TWVtb3J5RHJpdmUob3JpZ0ZzLCBtb3VudFBvaW50LCBzb3VyY2UgPSBCdWZmZXIuYWxsb2MoMCkpIHtcbiAgICBjb25zdCBhcmNoaXZlID0gbmV3IFppcEZTXzEuWmlwRlMoc291cmNlKTtcbiAgICBjb25zdCBnZXRNb3VudFBvaW50ID0gKHApID0+IHtcbiAgICAgICAgY29uc3QgZGV0ZWN0ZWRNb3VudFBvaW50ID0gcC5zdGFydHNXaXRoKGAke21vdW50UG9pbnR9L2ApID8gcC5zbGljZSgwLCBtb3VudFBvaW50Lmxlbmd0aCkgOiBudWxsO1xuICAgICAgICByZXR1cm4gZGV0ZWN0ZWRNb3VudFBvaW50O1xuICAgIH07XG4gICAgY29uc3QgZmFjdG9yeVByb21pc2UgPSBhc3luYyAoYmFzZUZzLCBwKSA9PiB7XG4gICAgICAgIHJldHVybiAoKSA9PiBhcmNoaXZlO1xuICAgIH07XG4gICAgY29uc3QgZmFjdG9yeVN5bmMgPSAoYmFzZUZzLCBwKSA9PiB7XG4gICAgICAgIHJldHVybiBhcmNoaXZlO1xuICAgIH07XG4gICAgLy8gV2UgbXVzdCBjb3B5IHRoZSBmcyBpbnRvIGEgbG9jYWwsIGJlY2F1c2Ugb3RoZXJ3aXNlXG4gICAgLy8gMS4gd2Ugd291bGQgbWFrZSB0aGUgTm9kZUZTIGluc3RhbmNlIHVzZSB0aGUgZnVuY3Rpb24gdGhhdCB3ZSBwYXRjaGVkIChpbmZpbml0ZSBsb29wKVxuICAgIC8vIDIuIE9iamVjdC5jcmVhdGUoZnMpIGlzbid0IGVub3VnaCwgc2luY2UgaXQgd29uJ3QgcHJldmVudCB0aGUgcHJvdG8gZnJvbSBiZWluZyBtb2RpZmllZFxuICAgIGNvbnN0IGxvY2FsRnMgPSB7IC4uLm9yaWdGcyB9O1xuICAgIGNvbnN0IG5vZGVGcyA9IG5ldyBmc2xpYl8xLk5vZGVGUyhsb2NhbEZzKTtcbiAgICBjb25zdCBtb3VudEZzID0gbmV3IGZzbGliXzEuTW91bnRGUyh7XG4gICAgICAgIGJhc2VGczogbm9kZUZzLFxuICAgICAgICBnZXRNb3VudFBvaW50LFxuICAgICAgICBmYWN0b3J5UHJvbWlzZSxcbiAgICAgICAgZmFjdG9yeVN5bmMsXG4gICAgICAgIG1hZ2ljQnl0ZTogMjEsXG4gICAgICAgIG1heEFnZTogSW5maW5pdHksXG4gICAgfSk7XG4gICAgKDAsIGZzbGliXzEucGF0Y2hGcykoZnNfMS5kZWZhdWx0LCBuZXcgZnNsaWJfMS5Qb3NpeEZTKG1vdW50RnMpKTtcbiAgICByZXR1cm4gYXJjaGl2ZTtcbn1cbmV4cG9ydHMubW91bnRNZW1vcnlEcml2ZSA9IG1vdW50TWVtb3J5RHJpdmU7XG4iLCAiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLm1vdW50TWVtb3J5RHJpdmUgPSB2b2lkIDA7XG5jb25zdCB0c2xpYl8xID0gcmVxdWlyZShcInRzbGliXCIpO1xudHNsaWJfMS5fX2V4cG9ydFN0YXIocmVxdWlyZShcIi4vWmlwT3BlbkZTXCIpLCBleHBvcnRzKTtcbnRzbGliXzEuX19leHBvcnRTdGFyKHJlcXVpcmUoXCIuL1ppcEZTXCIpLCBleHBvcnRzKTtcbnZhciBtb3VudE1lbW9yeURyaXZlXzEgPSByZXF1aXJlKFwiLi9tb3VudE1lbW9yeURyaXZlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwibW91bnRNZW1vcnlEcml2ZVwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gbW91bnRNZW1vcnlEcml2ZV8xLm1vdW50TWVtb3J5RHJpdmU7IH0gfSk7XG4iLCAiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLmdldExpYnppcFByb21pc2UgPSBleHBvcnRzLmdldExpYnppcFN5bmMgPSB2b2lkIDA7XG5jb25zdCB0c2xpYl8xID0gcmVxdWlyZShcInRzbGliXCIpO1xuY29uc3QgaW5zdGFuY2VfMSA9IHJlcXVpcmUoXCIuL2luc3RhbmNlXCIpO1xuY29uc3QgbGliemlwU3luY18xID0gdHNsaWJfMS5fX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vbGliemlwU3luY1wiKSk7XG5jb25zdCBtYWtlSW50ZXJmYWNlXzEgPSByZXF1aXJlKFwiLi9tYWtlSW50ZXJmYWNlXCIpO1xudHNsaWJfMS5fX2V4cG9ydFN0YXIocmVxdWlyZShcIi4vY29tbW9uXCIpLCBleHBvcnRzKTtcbigwLCBpbnN0YW5jZV8xLnNldEZhY3RvcnkpKCgpID0+IHtcbiAgICBjb25zdCBlbVppcCA9ICgwLCBsaWJ6aXBTeW5jXzEuZGVmYXVsdCkoKTtcbiAgICByZXR1cm4gKDAsIG1ha2VJbnRlcmZhY2VfMS5tYWtlSW50ZXJmYWNlKShlbVppcCk7XG59KTtcbmZ1bmN0aW9uIGdldExpYnppcFN5bmMoKSB7XG4gICAgcmV0dXJuICgwLCBpbnN0YW5jZV8xLmdldEluc3RhbmNlKSgpO1xufVxuZXhwb3J0cy5nZXRMaWJ6aXBTeW5jID0gZ2V0TGliemlwU3luYztcbmFzeW5jIGZ1bmN0aW9uIGdldExpYnppcFByb21pc2UoKSB7XG4gICAgcmV0dXJuICgwLCBpbnN0YW5jZV8xLmdldEluc3RhbmNlKSgpO1xufVxuZXhwb3J0cy5nZXRMaWJ6aXBQcm9taXNlID0gZ2V0TGliemlwUHJvbWlzZTtcbiIsICIvKlxuICogR2VuZXJhdGVkIGJ5IFBFRy5qcyAwLjEwLjAuXG4gKlxuICogaHR0cDovL3BlZ2pzLm9yZy9cbiAqL1xuXG5cInVzZSBzdHJpY3RcIjtcblxuZnVuY3Rpb24gcGVnJHN1YmNsYXNzKGNoaWxkLCBwYXJlbnQpIHtcbiAgZnVuY3Rpb24gY3RvcigpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGNoaWxkOyB9XG4gIGN0b3IucHJvdG90eXBlID0gcGFyZW50LnByb3RvdHlwZTtcbiAgY2hpbGQucHJvdG90eXBlID0gbmV3IGN0b3IoKTtcbn1cblxuZnVuY3Rpb24gcGVnJFN5bnRheEVycm9yKG1lc3NhZ2UsIGV4cGVjdGVkLCBmb3VuZCwgbG9jYXRpb24pIHtcbiAgdGhpcy5tZXNzYWdlICA9IG1lc3NhZ2U7XG4gIHRoaXMuZXhwZWN0ZWQgPSBleHBlY3RlZDtcbiAgdGhpcy5mb3VuZCAgICA9IGZvdW5kO1xuICB0aGlzLmxvY2F0aW9uID0gbG9jYXRpb247XG4gIHRoaXMubmFtZSAgICAgPSBcIlN5bnRheEVycm9yXCI7XG5cbiAgaWYgKHR5cGVvZiBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UodGhpcywgcGVnJFN5bnRheEVycm9yKTtcbiAgfVxufVxuXG5wZWckc3ViY2xhc3MocGVnJFN5bnRheEVycm9yLCBFcnJvcik7XG5cbnBlZyRTeW50YXhFcnJvci5idWlsZE1lc3NhZ2UgPSBmdW5jdGlvbihleHBlY3RlZCwgZm91bmQpIHtcbiAgdmFyIERFU0NSSUJFX0VYUEVDVEFUSU9OX0ZOUyA9IHtcbiAgICAgICAgbGl0ZXJhbDogZnVuY3Rpb24oZXhwZWN0YXRpb24pIHtcbiAgICAgICAgICByZXR1cm4gXCJcXFwiXCIgKyBsaXRlcmFsRXNjYXBlKGV4cGVjdGF0aW9uLnRleHQpICsgXCJcXFwiXCI7XG4gICAgICAgIH0sXG5cbiAgICAgICAgXCJjbGFzc1wiOiBmdW5jdGlvbihleHBlY3RhdGlvbikge1xuICAgICAgICAgIHZhciBlc2NhcGVkUGFydHMgPSBcIlwiLFxuICAgICAgICAgICAgICBpO1xuXG4gICAgICAgICAgZm9yIChpID0gMDsgaSA8IGV4cGVjdGF0aW9uLnBhcnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBlc2NhcGVkUGFydHMgKz0gZXhwZWN0YXRpb24ucGFydHNbaV0gaW5zdGFuY2VvZiBBcnJheVxuICAgICAgICAgICAgICA/IGNsYXNzRXNjYXBlKGV4cGVjdGF0aW9uLnBhcnRzW2ldWzBdKSArIFwiLVwiICsgY2xhc3NFc2NhcGUoZXhwZWN0YXRpb24ucGFydHNbaV1bMV0pXG4gICAgICAgICAgICAgIDogY2xhc3NFc2NhcGUoZXhwZWN0YXRpb24ucGFydHNbaV0pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBcIltcIiArIChleHBlY3RhdGlvbi5pbnZlcnRlZCA/IFwiXlwiIDogXCJcIikgKyBlc2NhcGVkUGFydHMgKyBcIl1cIjtcbiAgICAgICAgfSxcblxuICAgICAgICBhbnk6IGZ1bmN0aW9uKGV4cGVjdGF0aW9uKSB7XG4gICAgICAgICAgcmV0dXJuIFwiYW55IGNoYXJhY3RlclwiO1xuICAgICAgICB9LFxuXG4gICAgICAgIGVuZDogZnVuY3Rpb24oZXhwZWN0YXRpb24pIHtcbiAgICAgICAgICByZXR1cm4gXCJlbmQgb2YgaW5wdXRcIjtcbiAgICAgICAgfSxcblxuICAgICAgICBvdGhlcjogZnVuY3Rpb24oZXhwZWN0YXRpb24pIHtcbiAgICAgICAgICByZXR1cm4gZXhwZWN0YXRpb24uZGVzY3JpcHRpb247XG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgZnVuY3Rpb24gaGV4KGNoKSB7XG4gICAgcmV0dXJuIGNoLmNoYXJDb2RlQXQoMCkudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCk7XG4gIH1cblxuICBmdW5jdGlvbiBsaXRlcmFsRXNjYXBlKHMpIHtcbiAgICByZXR1cm4gc1xuICAgICAgLnJlcGxhY2UoL1xcXFwvZywgJ1xcXFxcXFxcJylcbiAgICAgIC5yZXBsYWNlKC9cIi9nLCAgJ1xcXFxcIicpXG4gICAgICAucmVwbGFjZSgvXFwwL2csICdcXFxcMCcpXG4gICAgICAucmVwbGFjZSgvXFx0L2csICdcXFxcdCcpXG4gICAgICAucmVwbGFjZSgvXFxuL2csICdcXFxcbicpXG4gICAgICAucmVwbGFjZSgvXFxyL2csICdcXFxccicpXG4gICAgICAucmVwbGFjZSgvW1xceDAwLVxceDBGXS9nLCAgICAgICAgICBmdW5jdGlvbihjaCkgeyByZXR1cm4gJ1xcXFx4MCcgKyBoZXgoY2gpOyB9KVxuICAgICAgLnJlcGxhY2UoL1tcXHgxMC1cXHgxRlxceDdGLVxceDlGXS9nLCBmdW5jdGlvbihjaCkgeyByZXR1cm4gJ1xcXFx4JyAgKyBoZXgoY2gpOyB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNsYXNzRXNjYXBlKHMpIHtcbiAgICByZXR1cm4gc1xuICAgICAgLnJlcGxhY2UoL1xcXFwvZywgJ1xcXFxcXFxcJylcbiAgICAgIC5yZXBsYWNlKC9cXF0vZywgJ1xcXFxdJylcbiAgICAgIC5yZXBsYWNlKC9cXF4vZywgJ1xcXFxeJylcbiAgICAgIC5yZXBsYWNlKC8tL2csICAnXFxcXC0nKVxuICAgICAgLnJlcGxhY2UoL1xcMC9nLCAnXFxcXDAnKVxuICAgICAgLnJlcGxhY2UoL1xcdC9nLCAnXFxcXHQnKVxuICAgICAgLnJlcGxhY2UoL1xcbi9nLCAnXFxcXG4nKVxuICAgICAgLnJlcGxhY2UoL1xcci9nLCAnXFxcXHInKVxuICAgICAgLnJlcGxhY2UoL1tcXHgwMC1cXHgwRl0vZywgICAgICAgICAgZnVuY3Rpb24oY2gpIHsgcmV0dXJuICdcXFxceDAnICsgaGV4KGNoKTsgfSlcbiAgICAgIC5yZXBsYWNlKC9bXFx4MTAtXFx4MUZcXHg3Ri1cXHg5Rl0vZywgZnVuY3Rpb24oY2gpIHsgcmV0dXJuICdcXFxceCcgICsgaGV4KGNoKTsgfSk7XG4gIH1cblxuICBmdW5jdGlvbiBkZXNjcmliZUV4cGVjdGF0aW9uKGV4cGVjdGF0aW9uKSB7XG4gICAgcmV0dXJuIERFU0NSSUJFX0VYUEVDVEFUSU9OX0ZOU1tleHBlY3RhdGlvbi50eXBlXShleHBlY3RhdGlvbik7XG4gIH1cblxuICBmdW5jdGlvbiBkZXNjcmliZUV4cGVjdGVkKGV4cGVjdGVkKSB7XG4gICAgdmFyIGRlc2NyaXB0aW9ucyA9IG5ldyBBcnJheShleHBlY3RlZC5sZW5ndGgpLFxuICAgICAgICBpLCBqO1xuXG4gICAgZm9yIChpID0gMDsgaSA8IGV4cGVjdGVkLmxlbmd0aDsgaSsrKSB7XG4gICAgICBkZXNjcmlwdGlvbnNbaV0gPSBkZXNjcmliZUV4cGVjdGF0aW9uKGV4cGVjdGVkW2ldKTtcbiAgICB9XG5cbiAgICBkZXNjcmlwdGlvbnMuc29ydCgpO1xuXG4gICAgaWYgKGRlc2NyaXB0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICBmb3IgKGkgPSAxLCBqID0gMTsgaSA8IGRlc2NyaXB0aW9ucy5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAoZGVzY3JpcHRpb25zW2kgLSAxXSAhPT0gZGVzY3JpcHRpb25zW2ldKSB7XG4gICAgICAgICAgZGVzY3JpcHRpb25zW2pdID0gZGVzY3JpcHRpb25zW2ldO1xuICAgICAgICAgIGorKztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZGVzY3JpcHRpb25zLmxlbmd0aCA9IGo7XG4gICAgfVxuXG4gICAgc3dpdGNoIChkZXNjcmlwdGlvbnMubGVuZ3RoKSB7XG4gICAgICBjYXNlIDE6XG4gICAgICAgIHJldHVybiBkZXNjcmlwdGlvbnNbMF07XG5cbiAgICAgIGNhc2UgMjpcbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0aW9uc1swXSArIFwiIG9yIFwiICsgZGVzY3JpcHRpb25zWzFdO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gZGVzY3JpcHRpb25zLnNsaWNlKDAsIC0xKS5qb2luKFwiLCBcIilcbiAgICAgICAgICArIFwiLCBvciBcIlxuICAgICAgICAgICsgZGVzY3JpcHRpb25zW2Rlc2NyaXB0aW9ucy5sZW5ndGggLSAxXTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBkZXNjcmliZUZvdW5kKGZvdW5kKSB7XG4gICAgcmV0dXJuIGZvdW5kID8gXCJcXFwiXCIgKyBsaXRlcmFsRXNjYXBlKGZvdW5kKSArIFwiXFxcIlwiIDogXCJlbmQgb2YgaW5wdXRcIjtcbiAgfVxuXG4gIHJldHVybiBcIkV4cGVjdGVkIFwiICsgZGVzY3JpYmVFeHBlY3RlZChleHBlY3RlZCkgKyBcIiBidXQgXCIgKyBkZXNjcmliZUZvdW5kKGZvdW5kKSArIFwiIGZvdW5kLlwiO1xufTtcblxuZnVuY3Rpb24gcGVnJHBhcnNlKGlucHV0LCBvcHRpb25zKSB7XG4gIG9wdGlvbnMgPSBvcHRpb25zICE9PSB2b2lkIDAgPyBvcHRpb25zIDoge307XG5cbiAgdmFyIHBlZyRGQUlMRUQgPSB7fSxcblxuICAgICAgcGVnJHN0YXJ0UnVsZUZ1bmN0aW9ucyA9IHsgU3RhcnQ6IHBlZyRwYXJzZVN0YXJ0IH0sXG4gICAgICBwZWckc3RhcnRSdWxlRnVuY3Rpb24gID0gcGVnJHBhcnNlU3RhcnQsXG5cbiAgICAgIHBlZyRjMCA9IGZ1bmN0aW9uKGxpbmUpIHsgcmV0dXJuIGxpbmUgPyBsaW5lIDogW10gfSxcbiAgICAgIHBlZyRjMSA9IGZ1bmN0aW9uKGNvbW1hbmQsIHR5cGUsIHRoZW4pIHsgcmV0dXJuIFsgeyBjb21tYW5kLCB0eXBlIH0gXS5jb25jYXQodGhlbiB8fCBbXSkgfSxcbiAgICAgIHBlZyRjMiA9IGZ1bmN0aW9uKGNvbW1hbmQsIHR5cGUpIHsgcmV0dXJuIFsgeyBjb21tYW5kLCB0eXBlOiB0eXBlIHx8ICc7JyB9IF0gfSxcbiAgICAgIHBlZyRjMyA9IGZ1bmN0aW9uKHRoZW4pIHsgcmV0dXJuIHRoZW4gfSxcbiAgICAgIHBlZyRjNCA9IFwiO1wiLFxuICAgICAgcGVnJGM1ID0gcGVnJGxpdGVyYWxFeHBlY3RhdGlvbihcIjtcIiwgZmFsc2UpLFxuICAgICAgcGVnJGM2ID0gXCImXCIsXG4gICAgICBwZWckYzcgPSBwZWckbGl0ZXJhbEV4cGVjdGF0aW9uKFwiJlwiLCBmYWxzZSksXG4gICAgICBwZWckYzggPSBmdW5jdGlvbihjaGFpbiwgdGhlbikgeyByZXR1cm4gdGhlbiA/IHsgY2hhaW4sIHRoZW4gfSA6IHsgY2hhaW4gfSB9LFxuICAgICAgcGVnJGM5ID0gZnVuY3Rpb24odHlwZSwgdGhlbikgeyByZXR1cm4geyB0eXBlLCBsaW5lOiB0aGVuIH0gfSxcbiAgICAgIHBlZyRjMTAgPSBcIiYmXCIsXG4gICAgICBwZWckYzExID0gcGVnJGxpdGVyYWxFeHBlY3RhdGlvbihcIiYmXCIsIGZhbHNlKSxcbiAgICAgIHBlZyRjMTIgPSBcInx8XCIsXG4gICAgICBwZWckYzEzID0gcGVnJGxpdGVyYWxFeHBlY3RhdGlvbihcInx8XCIsIGZhbHNlKSxcbiAgICAgIHBlZyRjMTQgPSBmdW5jdGlvbihtYWluLCB0aGVuKSB7IHJldHVybiB0aGVuID8geyAuLi5tYWluLCB0aGVuIH0gOiBtYWluIH0sXG4gICAgICBwZWckYzE1ID0gZnVuY3Rpb24odHlwZSwgdGhlbikgeyByZXR1cm4geyB0eXBlLCBjaGFpbjogdGhlbiB9IH0sXG4gICAgICBwZWckYzE2ID0gXCJ8JlwiLFxuICAgICAgcGVnJGMxNyA9IHBlZyRsaXRlcmFsRXhwZWN0YXRpb24oXCJ8JlwiLCBmYWxzZSksXG4gICAgICBwZWckYzE4ID0gXCJ8XCIsXG4gICAgICBwZWckYzE5ID0gcGVnJGxpdGVyYWxFeHBlY3RhdGlvbihcInxcIiwgZmFsc2UpLFxuICAgICAgcGVnJGMyMCA9IFwiPVwiLFxuICAgICAgcGVnJGMyMSA9IHBlZyRsaXRlcmFsRXhwZWN0YXRpb24oXCI9XCIsIGZhbHNlKSxcbiAgICAgIHBlZyRjMjIgPSBmdW5jdGlvbihuYW1lLCBhcmcpIHsgcmV0dXJuIHsgbmFtZSwgYXJnczogW2FyZ10gfSB9LFxuICAgICAgcGVnJGMyMyA9IGZ1bmN0aW9uKG5hbWUpIHsgcmV0dXJuIHsgbmFtZSwgYXJnczogW10gfSB9LFxuICAgICAgcGVnJGMyNCA9IFwiKFwiLFxuICAgICAgcGVnJGMyNSA9IHBlZyRsaXRlcmFsRXhwZWN0YXRpb24oXCIoXCIsIGZhbHNlKSxcbiAgICAgIHBlZyRjMjYgPSBcIilcIixcbiAgICAgIHBlZyRjMjcgPSBwZWckbGl0ZXJhbEV4cGVjdGF0aW9uKFwiKVwiLCBmYWxzZSksXG4gICAgICBwZWckYzI4ID0gZnVuY3Rpb24oc3Vic2hlbGwsIGFyZ3MpIHsgcmV0dXJuIHsgdHlwZTogYHN1YnNoZWxsYCwgc3Vic2hlbGwsIGFyZ3MgfSB9LFxuICAgICAgcGVnJGMyOSA9IFwie1wiLFxuICAgICAgcGVnJGMzMCA9IHBlZyRsaXRlcmFsRXhwZWN0YXRpb24oXCJ7XCIsIGZhbHNlKSxcbiAgICAgIHBlZyRjMzEgPSBcIn1cIixcbiAgICAgIHBlZyRjMzIgPSBwZWckbGl0ZXJhbEV4cGVjdGF0aW9uKFwifVwiLCBmYWxzZSksXG4gICAgICBwZWckYzMzID0gZnVuY3Rpb24oZ3JvdXAsIGFyZ3MpIHsgcmV0dXJuIHsgdHlwZTogYGdyb3VwYCwgZ3JvdXAsIGFyZ3MgfSB9LFxuICAgICAgcGVnJGMzNCA9IGZ1bmN0aW9uKGVudnMsIGFyZ3MpIHsgcmV0dXJuIHsgdHlwZTogYGNvbW1hbmRgLCBhcmdzLCBlbnZzIH0gfSxcbiAgICAgIHBlZyRjMzUgPSBmdW5jdGlvbihlbnZzKSB7IHJldHVybiB7IHR5cGU6IGBlbnZzYCwgZW52cyB9IH0sXG4gICAgICBwZWckYzM2ID0gZnVuY3Rpb24oYXJncykgeyByZXR1cm4gYXJncyB9LFxuICAgICAgcGVnJGMzNyA9IGZ1bmN0aW9uKGFyZykgeyByZXR1cm4gYXJnIH0sXG4gICAgICBwZWckYzM4ID0gL15bMC05XS8sXG4gICAgICBwZWckYzM5ID0gcGVnJGNsYXNzRXhwZWN0YXRpb24oW1tcIjBcIiwgXCI5XCJdXSwgZmFsc2UsIGZhbHNlKSxcbiAgICAgIHBlZyRjNDAgPSBmdW5jdGlvbihmZCwgcmVkaXJlY3QsIGFyZykgeyByZXR1cm4geyB0eXBlOiBgcmVkaXJlY3Rpb25gLCBzdWJ0eXBlOiByZWRpcmVjdCwgZmQ6IGZkICE9PSBudWxsID8gcGFyc2VJbnQoZmQpIDogbnVsbCwgYXJnczogW2FyZ10gfSB9LFxuICAgICAgcGVnJGM0MSA9IFwiPj5cIixcbiAgICAgIHBlZyRjNDIgPSBwZWckbGl0ZXJhbEV4cGVjdGF0aW9uKFwiPj5cIiwgZmFsc2UpLFxuICAgICAgcGVnJGM0MyA9IFwiPiZcIixcbiAgICAgIHBlZyRjNDQgPSBwZWckbGl0ZXJhbEV4cGVjdGF0aW9uKFwiPiZcIiwgZmFsc2UpLFxuICAgICAgcGVnJGM0NSA9IFwiPlwiLFxuICAgICAgcGVnJGM0NiA9IHBlZyRsaXRlcmFsRXhwZWN0YXRpb24oXCI+XCIsIGZhbHNlKSxcbiAgICAgIHBlZyRjNDcgPSBcIjw8PFwiLFxuICAgICAgcGVnJGM0OCA9IHBlZyRsaXRlcmFsRXhwZWN0YXRpb24oXCI8PDxcIiwgZmFsc2UpLFxuICAgICAgcGVnJGM0OSA9IFwiPCZcIixcbiAgICAgIHBlZyRjNTAgPSBwZWckbGl0ZXJhbEV4cGVjdGF0aW9uKFwiPCZcIiwgZmFsc2UpLFxuICAgICAgcGVnJGM1MSA9IFwiPFwiLFxuICAgICAgcGVnJGM1MiA9IHBlZyRsaXRlcmFsRXhwZWN0YXRpb24oXCI8XCIsIGZhbHNlKSxcbiAgICAgIHBlZyRjNTMgPSBmdW5jdGlvbihzZWdtZW50cykgeyByZXR1cm4geyB0eXBlOiBgYXJndW1lbnRgLCBzZWdtZW50czogW10uY29uY2F0KC4uLiBzZWdtZW50cykgfSB9LFxuICAgICAgcGVnJGM1NCA9IGZ1bmN0aW9uKHN0cmluZykgeyByZXR1cm4gc3RyaW5nIH0sXG4gICAgICBwZWckYzU1ID0gXCIkJ1wiLFxuICAgICAgcGVnJGM1NiA9IHBlZyRsaXRlcmFsRXhwZWN0YXRpb24oXCIkJ1wiLCBmYWxzZSksXG4gICAgICBwZWckYzU3ID0gXCInXCIsXG4gICAgICBwZWckYzU4ID0gcGVnJGxpdGVyYWxFeHBlY3RhdGlvbihcIidcIiwgZmFsc2UpLFxuICAgICAgcGVnJGM1OSA9IGZ1bmN0aW9uKHRleHQpIHsgcmV0dXJuIFsgeyB0eXBlOiBgdGV4dGAsIHRleHQgfSBdIH0sXG4gICAgICBwZWckYzYwID0gXCJcXFwiXFxcIlwiLFxuICAgICAgcGVnJGM2MSA9IHBlZyRsaXRlcmFsRXhwZWN0YXRpb24oXCJcXFwiXFxcIlwiLCBmYWxzZSksXG4gICAgICBwZWckYzYyID0gZnVuY3Rpb24oKSB7IHJldHVybiB7IHR5cGU6IGB0ZXh0YCwgdGV4dDogYGAgfSB9LFxuICAgICAgcGVnJGM2MyA9IFwiXFxcIlwiLFxuICAgICAgcGVnJGM2NCA9IHBlZyRsaXRlcmFsRXhwZWN0YXRpb24oXCJcXFwiXCIsIGZhbHNlKSxcbiAgICAgIHBlZyRjNjUgPSBmdW5jdGlvbihzZWdtZW50cykgeyByZXR1cm4gc2VnbWVudHMgfSxcbiAgICAgIHBlZyRjNjYgPSBmdW5jdGlvbihhcml0aG1ldGljKSB7IHJldHVybiB7IHR5cGU6IGBhcml0aG1ldGljYCwgYXJpdGhtZXRpYywgcXVvdGVkOiB0cnVlfSB9LFxuICAgICAgcGVnJGM2NyA9IGZ1bmN0aW9uKHNoZWxsKSB7IHJldHVybiB7IHR5cGU6IGBzaGVsbGAsIHNoZWxsLCBxdW90ZWQ6IHRydWUgfSB9LFxuICAgICAgcGVnJGM2OCA9IGZ1bmN0aW9uKHZhcmlhYmxlKSB7IHJldHVybiB7IHR5cGU6IGB2YXJpYWJsZWAsIC4uLnZhcmlhYmxlLCBxdW90ZWQ6IHRydWUgfSB9LFxuICAgICAgcGVnJGM2OSA9IGZ1bmN0aW9uKHRleHQpIHsgcmV0dXJuIHsgdHlwZTogYHRleHRgLCB0ZXh0IH0gfSxcbiAgICAgIHBlZyRjNzAgPSBmdW5jdGlvbihhcml0aG1ldGljKSB7IHJldHVybiB7IHR5cGU6IGBhcml0aG1ldGljYCwgYXJpdGhtZXRpYywgcXVvdGVkOiBmYWxzZX0gfSxcbiAgICAgIHBlZyRjNzEgPSBmdW5jdGlvbihzaGVsbCkgeyByZXR1cm4geyB0eXBlOiBgc2hlbGxgLCBzaGVsbCwgcXVvdGVkOiBmYWxzZSB9IH0sXG4gICAgICBwZWckYzcyID0gZnVuY3Rpb24odmFyaWFibGUpIHsgcmV0dXJuIHsgdHlwZTogYHZhcmlhYmxlYCwgLi4udmFyaWFibGUsIHF1b3RlZDogZmFsc2UgfSB9LFxuICAgICAgcGVnJGM3MyA9IGZ1bmN0aW9uKHBhdHRlcm4pIHsgcmV0dXJuIHsgdHlwZTogYGdsb2JgLCBwYXR0ZXJuIH0gfSxcbiAgICAgIHBlZyRjNzQgPSAvXlteJ10vLFxuICAgICAgcGVnJGM3NSA9IHBlZyRjbGFzc0V4cGVjdGF0aW9uKFtcIidcIl0sIHRydWUsIGZhbHNlKSxcbiAgICAgIHBlZyRjNzYgPSBmdW5jdGlvbihjaGFycykgeyByZXR1cm4gY2hhcnMuam9pbihgYCkgfSxcbiAgICAgIHBlZyRjNzcgPSAvXlteJFwiXS8sXG4gICAgICBwZWckYzc4ID0gcGVnJGNsYXNzRXhwZWN0YXRpb24oW1wiJFwiLCBcIlxcXCJcIl0sIHRydWUsIGZhbHNlKSxcbiAgICAgIHBlZyRjNzkgPSBcIlxcXFxcXG5cIixcbiAgICAgIHBlZyRjODAgPSBwZWckbGl0ZXJhbEV4cGVjdGF0aW9uKFwiXFxcXFxcblwiLCBmYWxzZSksXG4gICAgICBwZWckYzgxID0gZnVuY3Rpb24oKSB7IHJldHVybiBgYCB9LFxuICAgICAgcGVnJGM4MiA9IFwiXFxcXFwiLFxuICAgICAgcGVnJGM4MyA9IHBlZyRsaXRlcmFsRXhwZWN0YXRpb24oXCJcXFxcXCIsIGZhbHNlKSxcbiAgICAgIHBlZyRjODQgPSAvXltcXFxcJFwiYF0vLFxuICAgICAgcGVnJGM4NSA9IHBlZyRjbGFzc0V4cGVjdGF0aW9uKFtcIlxcXFxcIiwgXCIkXCIsIFwiXFxcIlwiLCBcImBcIl0sIGZhbHNlLCBmYWxzZSksXG4gICAgICBwZWckYzg2ID0gZnVuY3Rpb24oYykgeyByZXR1cm4gYyB9LFxuICAgICAgcGVnJGM4NyA9IFwiXFxcXGFcIixcbiAgICAgIHBlZyRjODggPSBwZWckbGl0ZXJhbEV4cGVjdGF0aW9uKFwiXFxcXGFcIiwgZmFsc2UpLFxuICAgICAgcGVnJGM4OSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gJ1xcYScgfSxcbiAgICAgIHBlZyRjOTAgPSBcIlxcXFxiXCIsXG4gICAgICBwZWckYzkxID0gcGVnJGxpdGVyYWxFeHBlY3RhdGlvbihcIlxcXFxiXCIsIGZhbHNlKSxcbiAgICAgIHBlZyRjOTIgPSBmdW5jdGlvbigpIHsgcmV0dXJuICdcXGInIH0sXG4gICAgICBwZWckYzkzID0gL15bRWVdLyxcbiAgICAgIHBlZyRjOTQgPSBwZWckY2xhc3NFeHBlY3RhdGlvbihbXCJFXCIsIFwiZVwiXSwgZmFsc2UsIGZhbHNlKSxcbiAgICAgIHBlZyRjOTUgPSBmdW5jdGlvbigpIHsgcmV0dXJuICdcXHgxYicgfSxcbiAgICAgIHBlZyRjOTYgPSBcIlxcXFxmXCIsXG4gICAgICBwZWckYzk3ID0gcGVnJGxpdGVyYWxFeHBlY3RhdGlvbihcIlxcXFxmXCIsIGZhbHNlKSxcbiAgICAgIHBlZyRjOTggPSBmdW5jdGlvbigpIHsgcmV0dXJuICdcXGYnIH0sXG4gICAgICBwZWckYzk5ID0gXCJcXFxcblwiLFxuICAgICAgcGVnJGMxMDAgPSBwZWckbGl0ZXJhbEV4cGVjdGF0aW9uKFwiXFxcXG5cIiwgZmFsc2UpLFxuICAgICAgcGVnJGMxMDEgPSBmdW5jdGlvbigpIHsgcmV0dXJuICdcXG4nIH0sXG4gICAgICBwZWckYzEwMiA9IFwiXFxcXHJcIixcbiAgICAgIHBlZyRjMTAzID0gcGVnJGxpdGVyYWxFeHBlY3RhdGlvbihcIlxcXFxyXCIsIGZhbHNlKSxcbiAgICAgIHBlZyRjMTA0ID0gZnVuY3Rpb24oKSB7IHJldHVybiAnXFxyJyB9LFxuICAgICAgcGVnJGMxMDUgPSBcIlxcXFx0XCIsXG4gICAgICBwZWckYzEwNiA9IHBlZyRsaXRlcmFsRXhwZWN0YXRpb24oXCJcXFxcdFwiLCBmYWxzZSksXG4gICAgICBwZWckYzEwNyA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gJ1xcdCcgfSxcbiAgICAgIHBlZyRjMTA4ID0gXCJcXFxcdlwiLFxuICAgICAgcGVnJGMxMDkgPSBwZWckbGl0ZXJhbEV4cGVjdGF0aW9uKFwiXFxcXHZcIiwgZmFsc2UpLFxuICAgICAgcGVnJGMxMTAgPSBmdW5jdGlvbigpIHsgcmV0dXJuICdcXHYnIH0sXG4gICAgICBwZWckYzExMSA9IC9eW1xcXFwnXCI/XS8sXG4gICAgICBwZWckYzExMiA9IHBlZyRjbGFzc0V4cGVjdGF0aW9uKFtcIlxcXFxcIiwgXCInXCIsIFwiXFxcIlwiLCBcIj9cIl0sIGZhbHNlLCBmYWxzZSksXG4gICAgICBwZWckYzExMyA9IGZ1bmN0aW9uKGMpIHsgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUocGFyc2VJbnQoYywgMTYpKSB9LFxuICAgICAgcGVnJGMxMTQgPSBcIlxcXFx4XCIsXG4gICAgICBwZWckYzExNSA9IHBlZyRsaXRlcmFsRXhwZWN0YXRpb24oXCJcXFxceFwiLCBmYWxzZSksXG4gICAgICBwZWckYzExNiA9IFwiXFxcXHVcIixcbiAgICAgIHBlZyRjMTE3ID0gcGVnJGxpdGVyYWxFeHBlY3RhdGlvbihcIlxcXFx1XCIsIGZhbHNlKSxcbiAgICAgIHBlZyRjMTE4ID0gXCJcXFxcVVwiLFxuICAgICAgcGVnJGMxMTkgPSBwZWckbGl0ZXJhbEV4cGVjdGF0aW9uKFwiXFxcXFVcIiwgZmFsc2UpLFxuICAgICAgcGVnJGMxMjAgPSBmdW5jdGlvbihjKSB7IHJldHVybiBTdHJpbmcuZnJvbUNvZGVQb2ludChwYXJzZUludChjLCAxNikpIH0sXG4gICAgICBwZWckYzEyMSA9IC9eWzAtN10vLFxuICAgICAgcGVnJGMxMjIgPSBwZWckY2xhc3NFeHBlY3RhdGlvbihbW1wiMFwiLCBcIjdcIl1dLCBmYWxzZSwgZmFsc2UpLFxuICAgICAgcGVnJGMxMjMgPSAvXlswLTlhLWZBLWZdLyxcbiAgICAgIHBlZyRjMTI0ID0gcGVnJGNsYXNzRXhwZWN0YXRpb24oW1tcIjBcIiwgXCI5XCJdLCBbXCJhXCIsIFwiZlwiXSwgW1wiQVwiLCBcImZcIl1dLCBmYWxzZSwgZmFsc2UpLFxuICAgICAgcGVnJGMxMjUgPSBwZWckYW55RXhwZWN0YXRpb24oKSxcbiAgICAgIHBlZyRjMTI2ID0gXCJ7fVwiLFxuICAgICAgcGVnJGMxMjcgPSBwZWckbGl0ZXJhbEV4cGVjdGF0aW9uKFwie31cIiwgZmFsc2UpLFxuICAgICAgcGVnJGMxMjggPSBmdW5jdGlvbigpIHsgcmV0dXJuICd7fScgfSxcbiAgICAgIHBlZyRjMTI5ID0gXCItXCIsXG4gICAgICBwZWckYzEzMCA9IHBlZyRsaXRlcmFsRXhwZWN0YXRpb24oXCItXCIsIGZhbHNlKSxcbiAgICAgIHBlZyRjMTMxID0gXCIrXCIsXG4gICAgICBwZWckYzEzMiA9IHBlZyRsaXRlcmFsRXhwZWN0YXRpb24oXCIrXCIsIGZhbHNlKSxcbiAgICAgIHBlZyRjMTMzID0gXCIuXCIsXG4gICAgICBwZWckYzEzNCA9IHBlZyRsaXRlcmFsRXhwZWN0YXRpb24oXCIuXCIsIGZhbHNlKSxcbiAgICAgIHBlZyRjMTM1ID0gZnVuY3Rpb24oc2lnbiwgbGVmdCwgcmlnaHQpIHsgcmV0dXJuIHsgdHlwZTogYG51bWJlcmAsIHZhbHVlOiAoc2lnbiA9PT0gJy0nID8gLTEgOiAxKSAqIHBhcnNlRmxvYXQobGVmdC5qb2luKGBgKSArIGAuYCArIHJpZ2h0LmpvaW4oYGApKSB9IH0sXG4gICAgICBwZWckYzEzNiA9IGZ1bmN0aW9uKHNpZ24sIHZhbHVlKSB7IHJldHVybiB7IHR5cGU6IGBudW1iZXJgLCB2YWx1ZTogKHNpZ24gPT09ICctJyA/IC0xIDogMSkgKiAgcGFyc2VJbnQodmFsdWUuam9pbihgYCkpIH0gfSxcbiAgICAgIHBlZyRjMTM3ID0gZnVuY3Rpb24odmFyaWFibGUpIHsgcmV0dXJuIHsgdHlwZTogYHZhcmlhYmxlYCwgLi4udmFyaWFibGUgfSB9LFxuICAgICAgcGVnJGMxMzggPSBmdW5jdGlvbihuYW1lKSB7IHJldHVybiB7IHR5cGU6IGB2YXJpYWJsZWAsIG5hbWUgfSB9LFxuICAgICAgcGVnJGMxMzkgPSBmdW5jdGlvbih2YWx1ZSkgeyByZXR1cm4gdmFsdWUgfSxcbiAgICAgIHBlZyRjMTQwID0gXCIqXCIsXG4gICAgICBwZWckYzE0MSA9IHBlZyRsaXRlcmFsRXhwZWN0YXRpb24oXCIqXCIsIGZhbHNlKSxcbiAgICAgIHBlZyRjMTQyID0gXCIvXCIsXG4gICAgICBwZWckYzE0MyA9IHBlZyRsaXRlcmFsRXhwZWN0YXRpb24oXCIvXCIsIGZhbHNlKSxcbiAgICAgIHBlZyRjMTQ0ID0gZnVuY3Rpb24obGVmdCwgb3AsIHJpZ2h0KSB7IHJldHVybiB7IHR5cGU6IG9wID09PSBgKmAgPyBgbXVsdGlwbGljYXRpb25gIDogYGRpdmlzaW9uYCwgcmlnaHQgfSB9LFxuICAgICAgcGVnJGMxNDUgPSBmdW5jdGlvbihsZWZ0LCByZXN0KSB7XG4gICAgICAgICAgcmV0dXJuIHJlc3QucmVkdWNlKChsZWZ0LCByaWdodCkgPT4gKHsgbGVmdCwgLi4ucmlnaHQgfSksIGxlZnQpXG4gICAgICAgIH0sXG4gICAgICBwZWckYzE0NiA9IGZ1bmN0aW9uKGxlZnQsIG9wLCByaWdodCkgeyByZXR1cm4geyB0eXBlOiBvcCA9PT0gYCtgID8gYGFkZGl0aW9uYCA6IGBzdWJ0cmFjdGlvbmAsIHJpZ2h0IH0gfSxcbiAgICAgIHBlZyRjMTQ3ID0gXCIkKChcIixcbiAgICAgIHBlZyRjMTQ4ID0gcGVnJGxpdGVyYWxFeHBlY3RhdGlvbihcIiQoKFwiLCBmYWxzZSksXG4gICAgICBwZWckYzE0OSA9IFwiKSlcIixcbiAgICAgIHBlZyRjMTUwID0gcGVnJGxpdGVyYWxFeHBlY3RhdGlvbihcIikpXCIsIGZhbHNlKSxcbiAgICAgIHBlZyRjMTUxID0gZnVuY3Rpb24oYXJpdGhtZXRpYykgeyByZXR1cm4gYXJpdGhtZXRpYyB9LFxuICAgICAgcGVnJGMxNTIgPSBcIiQoXCIsXG4gICAgICBwZWckYzE1MyA9IHBlZyRsaXRlcmFsRXhwZWN0YXRpb24oXCIkKFwiLCBmYWxzZSksXG4gICAgICBwZWckYzE1NCA9IGZ1bmN0aW9uKGNvbW1hbmQpIHsgcmV0dXJuIGNvbW1hbmQgfSxcbiAgICAgIHBlZyRjMTU1ID0gXCIke1wiLFxuICAgICAgcGVnJGMxNTYgPSBwZWckbGl0ZXJhbEV4cGVjdGF0aW9uKFwiJHtcIiwgZmFsc2UpLFxuICAgICAgcGVnJGMxNTcgPSBcIjotXCIsXG4gICAgICBwZWckYzE1OCA9IHBlZyRsaXRlcmFsRXhwZWN0YXRpb24oXCI6LVwiLCBmYWxzZSksXG4gICAgICBwZWckYzE1OSA9IGZ1bmN0aW9uKG5hbWUsIGFyZykgeyByZXR1cm4geyBuYW1lLCBkZWZhdWx0VmFsdWU6IGFyZyB9IH0sXG4gICAgICBwZWckYzE2MCA9IFwiOi19XCIsXG4gICAgICBwZWckYzE2MSA9IHBlZyRsaXRlcmFsRXhwZWN0YXRpb24oXCI6LX1cIiwgZmFsc2UpLFxuICAgICAgcGVnJGMxNjIgPSBmdW5jdGlvbihuYW1lKSB7IHJldHVybiB7IG5hbWUsIGRlZmF1bHRWYWx1ZTogW10gfSB9LFxuICAgICAgcGVnJGMxNjMgPSBcIjorXCIsXG4gICAgICBwZWckYzE2NCA9IHBlZyRsaXRlcmFsRXhwZWN0YXRpb24oXCI6K1wiLCBmYWxzZSksXG4gICAgICBwZWckYzE2NSA9IGZ1bmN0aW9uKG5hbWUsIGFyZykgeyByZXR1cm4geyBuYW1lLCBhbHRlcm5hdGl2ZVZhbHVlOiBhcmcgfSB9LFxuICAgICAgcGVnJGMxNjYgPSBcIjorfVwiLFxuICAgICAgcGVnJGMxNjcgPSBwZWckbGl0ZXJhbEV4cGVjdGF0aW9uKFwiOit9XCIsIGZhbHNlKSxcbiAgICAgIHBlZyRjMTY4ID0gZnVuY3Rpb24obmFtZSkgeyByZXR1cm4geyBuYW1lLCBhbHRlcm5hdGl2ZVZhbHVlOiBbXSB9IH0sXG4gICAgICBwZWckYzE2OSA9IGZ1bmN0aW9uKG5hbWUpIHsgcmV0dXJuIHsgbmFtZSB9IH0sXG4gICAgICBwZWckYzE3MCA9IFwiJFwiLFxuICAgICAgcGVnJGMxNzEgPSBwZWckbGl0ZXJhbEV4cGVjdGF0aW9uKFwiJFwiLCBmYWxzZSksXG4gICAgICBwZWckYzE3MiA9IGZ1bmN0aW9uKHBhdHRlcm4pIHsgcmV0dXJuIG9wdGlvbnMuaXNHbG9iUGF0dGVybihwYXR0ZXJuKSB9LFxuICAgICAgcGVnJGMxNzMgPSBmdW5jdGlvbihwYXR0ZXJuKSB7IHJldHVybiBwYXR0ZXJuIH0sXG4gICAgICBwZWckYzE3NCA9IC9eW2EtekEtWjAtOV9dLyxcbiAgICAgIHBlZyRjMTc1ID0gcGVnJGNsYXNzRXhwZWN0YXRpb24oW1tcImFcIiwgXCJ6XCJdLCBbXCJBXCIsIFwiWlwiXSwgW1wiMFwiLCBcIjlcIl0sIFwiX1wiXSwgZmFsc2UsIGZhbHNlKSxcbiAgICAgIHBlZyRjMTc2ID0gZnVuY3Rpb24oKSB7IHJldHVybiB0ZXh0KCkgfSxcbiAgICAgIHBlZyRjMTc3ID0gL15bJEAqPyNhLXpBLVowLTlfXFwtXS8sXG4gICAgICBwZWckYzE3OCA9IHBlZyRjbGFzc0V4cGVjdGF0aW9uKFtcIiRcIiwgXCJAXCIsIFwiKlwiLCBcIj9cIiwgXCIjXCIsIFtcImFcIiwgXCJ6XCJdLCBbXCJBXCIsIFwiWlwiXSwgW1wiMFwiLCBcIjlcIl0sIFwiX1wiLCBcIi1cIl0sIGZhbHNlLCBmYWxzZSksXG4gICAgICBwZWckYzE3OSA9IC9eWygpfTw+JHwmOyBcXHRcIiddLyxcbiAgICAgIHBlZyRjMTgwID0gcGVnJGNsYXNzRXhwZWN0YXRpb24oW1wiKFwiLCBcIilcIiwgXCJ9XCIsIFwiPFwiLCBcIj5cIiwgXCIkXCIsIFwifFwiLCBcIiZcIiwgXCI7XCIsIFwiIFwiLCBcIlxcdFwiLCBcIlxcXCJcIiwgXCInXCJdLCBmYWxzZSwgZmFsc2UpLFxuICAgICAgcGVnJGMxODEgPSAvXls8PiY7IFxcdFwiJ10vLFxuICAgICAgcGVnJGMxODIgPSBwZWckY2xhc3NFeHBlY3RhdGlvbihbXCI8XCIsIFwiPlwiLCBcIiZcIiwgXCI7XCIsIFwiIFwiLCBcIlxcdFwiLCBcIlxcXCJcIiwgXCInXCJdLCBmYWxzZSwgZmFsc2UpLFxuICAgICAgcGVnJGMxODMgPSAvXlsgXFx0XS8sXG4gICAgICBwZWckYzE4NCA9IHBlZyRjbGFzc0V4cGVjdGF0aW9uKFtcIiBcIiwgXCJcXHRcIl0sIGZhbHNlLCBmYWxzZSksXG5cbiAgICAgIHBlZyRjdXJyUG9zICAgICAgICAgID0gMCxcbiAgICAgIHBlZyRzYXZlZFBvcyAgICAgICAgID0gMCxcbiAgICAgIHBlZyRwb3NEZXRhaWxzQ2FjaGUgID0gW3sgbGluZTogMSwgY29sdW1uOiAxIH1dLFxuICAgICAgcGVnJG1heEZhaWxQb3MgICAgICAgPSAwLFxuICAgICAgcGVnJG1heEZhaWxFeHBlY3RlZCAgPSBbXSxcbiAgICAgIHBlZyRzaWxlbnRGYWlscyAgICAgID0gMCxcblxuICAgICAgcGVnJHJlc3VsdDtcblxuICBpZiAoXCJzdGFydFJ1bGVcIiBpbiBvcHRpb25zKSB7XG4gICAgaWYgKCEob3B0aW9ucy5zdGFydFJ1bGUgaW4gcGVnJHN0YXJ0UnVsZUZ1bmN0aW9ucykpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkNhbid0IHN0YXJ0IHBhcnNpbmcgZnJvbSBydWxlIFxcXCJcIiArIG9wdGlvbnMuc3RhcnRSdWxlICsgXCJcXFwiLlwiKTtcbiAgICB9XG5cbiAgICBwZWckc3RhcnRSdWxlRnVuY3Rpb24gPSBwZWckc3RhcnRSdWxlRnVuY3Rpb25zW29wdGlvbnMuc3RhcnRSdWxlXTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHRleHQoKSB7XG4gICAgcmV0dXJuIGlucHV0LnN1YnN0cmluZyhwZWckc2F2ZWRQb3MsIHBlZyRjdXJyUG9zKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGxvY2F0aW9uKCkge1xuICAgIHJldHVybiBwZWckY29tcHV0ZUxvY2F0aW9uKHBlZyRzYXZlZFBvcywgcGVnJGN1cnJQb3MpO1xuICB9XG5cbiAgZnVuY3Rpb24gZXhwZWN0ZWQoZGVzY3JpcHRpb24sIGxvY2F0aW9uKSB7XG4gICAgbG9jYXRpb24gPSBsb2NhdGlvbiAhPT0gdm9pZCAwID8gbG9jYXRpb24gOiBwZWckY29tcHV0ZUxvY2F0aW9uKHBlZyRzYXZlZFBvcywgcGVnJGN1cnJQb3MpXG5cbiAgICB0aHJvdyBwZWckYnVpbGRTdHJ1Y3R1cmVkRXJyb3IoXG4gICAgICBbcGVnJG90aGVyRXhwZWN0YXRpb24oZGVzY3JpcHRpb24pXSxcbiAgICAgIGlucHV0LnN1YnN0cmluZyhwZWckc2F2ZWRQb3MsIHBlZyRjdXJyUG9zKSxcbiAgICAgIGxvY2F0aW9uXG4gICAgKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGVycm9yKG1lc3NhZ2UsIGxvY2F0aW9uKSB7XG4gICAgbG9jYXRpb24gPSBsb2NhdGlvbiAhPT0gdm9pZCAwID8gbG9jYXRpb24gOiBwZWckY29tcHV0ZUxvY2F0aW9uKHBlZyRzYXZlZFBvcywgcGVnJGN1cnJQb3MpXG5cbiAgICB0aHJvdyBwZWckYnVpbGRTaW1wbGVFcnJvcihtZXNzYWdlLCBsb2NhdGlvbik7XG4gIH1cblxuICBmdW5jdGlvbiBwZWckbGl0ZXJhbEV4cGVjdGF0aW9uKHRleHQsIGlnbm9yZUNhc2UpIHtcbiAgICByZXR1cm4geyB0eXBlOiBcImxpdGVyYWxcIiwgdGV4dDogdGV4dCwgaWdub3JlQ2FzZTogaWdub3JlQ2FzZSB9O1xuICB9XG5cbiAgZnVuY3Rpb24gcGVnJGNsYXNzRXhwZWN0YXRpb24ocGFydHMsIGludmVydGVkLCBpZ25vcmVDYXNlKSB7XG4gICAgcmV0dXJuIHsgdHlwZTogXCJjbGFzc1wiLCBwYXJ0czogcGFydHMsIGludmVydGVkOiBpbnZlcnRlZCwgaWdub3JlQ2FzZTogaWdub3JlQ2FzZSB9O1xuICB9XG5cbiAgZnVuY3Rpb24gcGVnJGFueUV4cGVjdGF0aW9uKCkge1xuICAgIHJldHVybiB7IHR5cGU6IFwiYW55XCIgfTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBlZyRlbmRFeHBlY3RhdGlvbigpIHtcbiAgICByZXR1cm4geyB0eXBlOiBcImVuZFwiIH07XG4gIH1cblxuICBmdW5jdGlvbiBwZWckb3RoZXJFeHBlY3RhdGlvbihkZXNjcmlwdGlvbikge1xuICAgIHJldHVybiB7IHR5cGU6IFwib3RoZXJcIiwgZGVzY3JpcHRpb246IGRlc2NyaXB0aW9uIH07XG4gIH1cblxuICBmdW5jdGlvbiBwZWckY29tcHV0ZVBvc0RldGFpbHMocG9zKSB7XG4gICAgdmFyIGRldGFpbHMgPSBwZWckcG9zRGV0YWlsc0NhY2hlW3Bvc10sIHA7XG5cbiAgICBpZiAoZGV0YWlscykge1xuICAgICAgcmV0dXJuIGRldGFpbHM7XG4gICAgfSBlbHNlIHtcbiAgICAgIHAgPSBwb3MgLSAxO1xuICAgICAgd2hpbGUgKCFwZWckcG9zRGV0YWlsc0NhY2hlW3BdKSB7XG4gICAgICAgIHAtLTtcbiAgICAgIH1cblxuICAgICAgZGV0YWlscyA9IHBlZyRwb3NEZXRhaWxzQ2FjaGVbcF07XG4gICAgICBkZXRhaWxzID0ge1xuICAgICAgICBsaW5lOiAgIGRldGFpbHMubGluZSxcbiAgICAgICAgY29sdW1uOiBkZXRhaWxzLmNvbHVtblxuICAgICAgfTtcblxuICAgICAgd2hpbGUgKHAgPCBwb3MpIHtcbiAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocCkgPT09IDEwKSB7XG4gICAgICAgICAgZGV0YWlscy5saW5lKys7XG4gICAgICAgICAgZGV0YWlscy5jb2x1bW4gPSAxO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGRldGFpbHMuY29sdW1uKys7XG4gICAgICAgIH1cblxuICAgICAgICBwKys7XG4gICAgICB9XG5cbiAgICAgIHBlZyRwb3NEZXRhaWxzQ2FjaGVbcG9zXSA9IGRldGFpbHM7XG4gICAgICByZXR1cm4gZGV0YWlscztcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBwZWckY29tcHV0ZUxvY2F0aW9uKHN0YXJ0UG9zLCBlbmRQb3MpIHtcbiAgICB2YXIgc3RhcnRQb3NEZXRhaWxzID0gcGVnJGNvbXB1dGVQb3NEZXRhaWxzKHN0YXJ0UG9zKSxcbiAgICAgICAgZW5kUG9zRGV0YWlscyAgID0gcGVnJGNvbXB1dGVQb3NEZXRhaWxzKGVuZFBvcyk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgc3RhcnQ6IHtcbiAgICAgICAgb2Zmc2V0OiBzdGFydFBvcyxcbiAgICAgICAgbGluZTogICBzdGFydFBvc0RldGFpbHMubGluZSxcbiAgICAgICAgY29sdW1uOiBzdGFydFBvc0RldGFpbHMuY29sdW1uXG4gICAgICB9LFxuICAgICAgZW5kOiB7XG4gICAgICAgIG9mZnNldDogZW5kUG9zLFxuICAgICAgICBsaW5lOiAgIGVuZFBvc0RldGFpbHMubGluZSxcbiAgICAgICAgY29sdW1uOiBlbmRQb3NEZXRhaWxzLmNvbHVtblxuICAgICAgfVxuICAgIH07XG4gIH1cblxuICBmdW5jdGlvbiBwZWckZmFpbChleHBlY3RlZCkge1xuICAgIGlmIChwZWckY3VyclBvcyA8IHBlZyRtYXhGYWlsUG9zKSB7IHJldHVybjsgfVxuXG4gICAgaWYgKHBlZyRjdXJyUG9zID4gcGVnJG1heEZhaWxQb3MpIHtcbiAgICAgIHBlZyRtYXhGYWlsUG9zID0gcGVnJGN1cnJQb3M7XG4gICAgICBwZWckbWF4RmFpbEV4cGVjdGVkID0gW107XG4gICAgfVxuXG4gICAgcGVnJG1heEZhaWxFeHBlY3RlZC5wdXNoKGV4cGVjdGVkKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBlZyRidWlsZFNpbXBsZUVycm9yKG1lc3NhZ2UsIGxvY2F0aW9uKSB7XG4gICAgcmV0dXJuIG5ldyBwZWckU3ludGF4RXJyb3IobWVzc2FnZSwgbnVsbCwgbnVsbCwgbG9jYXRpb24pO1xuICB9XG5cbiAgZnVuY3Rpb24gcGVnJGJ1aWxkU3RydWN0dXJlZEVycm9yKGV4cGVjdGVkLCBmb3VuZCwgbG9jYXRpb24pIHtcbiAgICByZXR1cm4gbmV3IHBlZyRTeW50YXhFcnJvcihcbiAgICAgIHBlZyRTeW50YXhFcnJvci5idWlsZE1lc3NhZ2UoZXhwZWN0ZWQsIGZvdW5kKSxcbiAgICAgIGV4cGVjdGVkLFxuICAgICAgZm91bmQsXG4gICAgICBsb2NhdGlvblxuICAgICk7XG4gIH1cblxuICBmdW5jdGlvbiBwZWckcGFyc2VTdGFydCgpIHtcbiAgICB2YXIgczAsIHMxLCBzMjtcblxuICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgczEgPSBbXTtcbiAgICBzMiA9IHBlZyRwYXJzZVMoKTtcbiAgICB3aGlsZSAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHMxLnB1c2goczIpO1xuICAgICAgczIgPSBwZWckcGFyc2VTKCk7XG4gICAgfVxuICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgczIgPSBwZWckcGFyc2VTaGVsbExpbmUoKTtcbiAgICAgIGlmIChzMiA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBzMiA9IG51bGw7XG4gICAgICB9XG4gICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgIHMxID0gcGVnJGMwKHMyKTtcbiAgICAgICAgczAgPSBzMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICB9XG5cbiAgICByZXR1cm4gczA7XG4gIH1cblxuICBmdW5jdGlvbiBwZWckcGFyc2VTaGVsbExpbmUoKSB7XG4gICAgdmFyIHMwLCBzMSwgczIsIHMzLCBzNDtcblxuICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgczEgPSBwZWckcGFyc2VDb21tYW5kTGluZSgpO1xuICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgczIgPSBbXTtcbiAgICAgIHMzID0gcGVnJHBhcnNlUygpO1xuICAgICAgd2hpbGUgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHMyLnB1c2goczMpO1xuICAgICAgICBzMyA9IHBlZyRwYXJzZVMoKTtcbiAgICAgIH1cbiAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBzMyA9IHBlZyRwYXJzZVNoZWxsTGluZVR5cGUoKTtcbiAgICAgICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgczQgPSBwZWckcGFyc2VTaGVsbExpbmVUaGVuKCk7XG4gICAgICAgICAgaWYgKHM0ID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzNCA9IG51bGw7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChzNCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgICAgICBzMSA9IHBlZyRjMShzMSwgczMsIHM0KTtcbiAgICAgICAgICAgIHMwID0gczE7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgfVxuICAgIGlmIChzMCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgczAgPSBwZWckY3VyclBvcztcbiAgICAgIHMxID0gcGVnJHBhcnNlQ29tbWFuZExpbmUoKTtcbiAgICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBzMiA9IFtdO1xuICAgICAgICBzMyA9IHBlZyRwYXJzZVMoKTtcbiAgICAgICAgd2hpbGUgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgczIucHVzaChzMyk7XG4gICAgICAgICAgczMgPSBwZWckcGFyc2VTKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgczMgPSBwZWckcGFyc2VTaGVsbExpbmVUeXBlKCk7XG4gICAgICAgICAgaWYgKHMzID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMyA9IG51bGw7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgICAgICBzMSA9IHBlZyRjMihzMSwgczMpO1xuICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gczA7XG4gIH1cblxuICBmdW5jdGlvbiBwZWckcGFyc2VTaGVsbExpbmVUaGVuKCkge1xuICAgIHZhciBzMCwgczEsIHMyLCBzMywgczQ7XG5cbiAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgIHMxID0gW107XG4gICAgczIgPSBwZWckcGFyc2VTKCk7XG4gICAgd2hpbGUgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICBzMS5wdXNoKHMyKTtcbiAgICAgIHMyID0gcGVnJHBhcnNlUygpO1xuICAgIH1cbiAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHMyID0gcGVnJHBhcnNlU2hlbGxMaW5lKCk7XG4gICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgczMgPSBbXTtcbiAgICAgICAgczQgPSBwZWckcGFyc2VTKCk7XG4gICAgICAgIHdoaWxlIChzNCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgIHMzLnB1c2goczQpO1xuICAgICAgICAgIHM0ID0gcGVnJHBhcnNlUygpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgIHMxID0gcGVnJGMzKHMyKTtcbiAgICAgICAgICBzMCA9IHMxO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHMwO1xuICB9XG5cbiAgZnVuY3Rpb24gcGVnJHBhcnNlU2hlbGxMaW5lVHlwZSgpIHtcbiAgICB2YXIgczA7XG5cbiAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDU5KSB7XG4gICAgICBzMCA9IHBlZyRjNDtcbiAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgfSBlbHNlIHtcbiAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGM1KTsgfVxuICAgIH1cbiAgICBpZiAoczAgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gMzgpIHtcbiAgICAgICAgczAgPSBwZWckYzY7XG4gICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGM3KTsgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBzMDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBlZyRwYXJzZUNvbW1hbmRMaW5lKCkge1xuICAgIHZhciBzMCwgczEsIHMyO1xuXG4gICAgczAgPSBwZWckY3VyclBvcztcbiAgICBzMSA9IHBlZyRwYXJzZUNvbW1hbmRDaGFpbigpO1xuICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgczIgPSBwZWckcGFyc2VDb21tYW5kTGluZVRoZW4oKTtcbiAgICAgIGlmIChzMiA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBzMiA9IG51bGw7XG4gICAgICB9XG4gICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgIHMxID0gcGVnJGM4KHMxLCBzMik7XG4gICAgICAgIHMwID0gczE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHMwO1xuICB9XG5cbiAgZnVuY3Rpb24gcGVnJHBhcnNlQ29tbWFuZExpbmVUaGVuKCkge1xuICAgIHZhciBzMCwgczEsIHMyLCBzMywgczQsIHM1LCBzNjtcblxuICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgczEgPSBbXTtcbiAgICBzMiA9IHBlZyRwYXJzZVMoKTtcbiAgICB3aGlsZSAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHMxLnB1c2goczIpO1xuICAgICAgczIgPSBwZWckcGFyc2VTKCk7XG4gICAgfVxuICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgczIgPSBwZWckcGFyc2VDb21tYW5kTGluZVR5cGUoKTtcbiAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBzMyA9IFtdO1xuICAgICAgICBzNCA9IHBlZyRwYXJzZVMoKTtcbiAgICAgICAgd2hpbGUgKHM0ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgczMucHVzaChzNCk7XG4gICAgICAgICAgczQgPSBwZWckcGFyc2VTKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgczQgPSBwZWckcGFyc2VDb21tYW5kTGluZSgpO1xuICAgICAgICAgIGlmIChzNCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczUgPSBbXTtcbiAgICAgICAgICAgIHM2ID0gcGVnJHBhcnNlUygpO1xuICAgICAgICAgICAgd2hpbGUgKHM2ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgIHM1LnB1c2goczYpO1xuICAgICAgICAgICAgICBzNiA9IHBlZyRwYXJzZVMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzNSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICAgICAgczEgPSBwZWckYzkoczIsIHM0KTtcbiAgICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICB9XG5cbiAgICByZXR1cm4gczA7XG4gIH1cblxuICBmdW5jdGlvbiBwZWckcGFyc2VDb21tYW5kTGluZVR5cGUoKSB7XG4gICAgdmFyIHMwO1xuXG4gICAgaWYgKGlucHV0LnN1YnN0cihwZWckY3VyclBvcywgMikgPT09IHBlZyRjMTApIHtcbiAgICAgIHMwID0gcGVnJGMxMDtcbiAgICAgIHBlZyRjdXJyUG9zICs9IDI7XG4gICAgfSBlbHNlIHtcbiAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMxMSk7IH1cbiAgICB9XG4gICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICBpZiAoaW5wdXQuc3Vic3RyKHBlZyRjdXJyUG9zLCAyKSA9PT0gcGVnJGMxMikge1xuICAgICAgICBzMCA9IHBlZyRjMTI7XG4gICAgICAgIHBlZyRjdXJyUG9zICs9IDI7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMxMyk7IH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gczA7XG4gIH1cblxuICBmdW5jdGlvbiBwZWckcGFyc2VDb21tYW5kQ2hhaW4oKSB7XG4gICAgdmFyIHMwLCBzMSwgczI7XG5cbiAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgIHMxID0gcGVnJHBhcnNlQ29tbWFuZCgpO1xuICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgczIgPSBwZWckcGFyc2VDb21tYW5kQ2hhaW5UaGVuKCk7XG4gICAgICBpZiAoczIgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgczIgPSBudWxsO1xuICAgICAgfVxuICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICBzMSA9IHBlZyRjMTQoczEsIHMyKTtcbiAgICAgICAgczAgPSBzMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICB9XG5cbiAgICByZXR1cm4gczA7XG4gIH1cblxuICBmdW5jdGlvbiBwZWckcGFyc2VDb21tYW5kQ2hhaW5UaGVuKCkge1xuICAgIHZhciBzMCwgczEsIHMyLCBzMywgczQsIHM1LCBzNjtcblxuICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgczEgPSBbXTtcbiAgICBzMiA9IHBlZyRwYXJzZVMoKTtcbiAgICB3aGlsZSAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHMxLnB1c2goczIpO1xuICAgICAgczIgPSBwZWckcGFyc2VTKCk7XG4gICAgfVxuICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgczIgPSBwZWckcGFyc2VDb21tYW5kQ2hhaW5UeXBlKCk7XG4gICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgczMgPSBbXTtcbiAgICAgICAgczQgPSBwZWckcGFyc2VTKCk7XG4gICAgICAgIHdoaWxlIChzNCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgIHMzLnB1c2goczQpO1xuICAgICAgICAgIHM0ID0gcGVnJHBhcnNlUygpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgIHM0ID0gcGVnJHBhcnNlQ29tbWFuZENoYWluKCk7XG4gICAgICAgICAgaWYgKHM0ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzNSA9IFtdO1xuICAgICAgICAgICAgczYgPSBwZWckcGFyc2VTKCk7XG4gICAgICAgICAgICB3aGlsZSAoczYgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgczUucHVzaChzNik7XG4gICAgICAgICAgICAgIHM2ID0gcGVnJHBhcnNlUygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHM1ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgICAgICBzMSA9IHBlZyRjMTUoczIsIHM0KTtcbiAgICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICB9XG5cbiAgICByZXR1cm4gczA7XG4gIH1cblxuICBmdW5jdGlvbiBwZWckcGFyc2VDb21tYW5kQ2hhaW5UeXBlKCkge1xuICAgIHZhciBzMDtcblxuICAgIGlmIChpbnB1dC5zdWJzdHIocGVnJGN1cnJQb3MsIDIpID09PSBwZWckYzE2KSB7XG4gICAgICBzMCA9IHBlZyRjMTY7XG4gICAgICBwZWckY3VyclBvcyArPSAyO1xuICAgIH0gZWxzZSB7XG4gICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMTcpOyB9XG4gICAgfVxuICAgIGlmIChzMCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSAxMjQpIHtcbiAgICAgICAgczAgPSBwZWckYzE4O1xuICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMTkpOyB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHMwO1xuICB9XG5cbiAgZnVuY3Rpb24gcGVnJHBhcnNlVmFyaWFibGVBc3NpZ25tZW50KCkge1xuICAgIHZhciBzMCwgczEsIHMyLCBzMywgczQsIHM1O1xuXG4gICAgczAgPSBwZWckY3VyclBvcztcbiAgICBzMSA9IHBlZyRwYXJzZUVudlZhcmlhYmxlKCk7XG4gICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDYxKSB7XG4gICAgICAgIHMyID0gcGVnJGMyMDtcbiAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHMyID0gcGVnJEZBSUxFRDtcbiAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzIxKTsgfVxuICAgICAgfVxuICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHMzID0gcGVnJHBhcnNlU3RyaWN0VmFsdWVBcmd1bWVudCgpO1xuICAgICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBzNCA9IFtdO1xuICAgICAgICAgIHM1ID0gcGVnJHBhcnNlUygpO1xuICAgICAgICAgIHdoaWxlIChzNSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczQucHVzaChzNSk7XG4gICAgICAgICAgICBzNSA9IHBlZyRwYXJzZVMoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHM0ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICAgIHMxID0gcGVnJGMyMihzMSwgczMpO1xuICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICB9XG4gICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgICAgczEgPSBwZWckcGFyc2VFbnZWYXJpYWJsZSgpO1xuICAgICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gNjEpIHtcbiAgICAgICAgICBzMiA9IHBlZyRjMjA7XG4gICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzMiA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzIxKTsgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgIHMzID0gW107XG4gICAgICAgICAgczQgPSBwZWckcGFyc2VTKCk7XG4gICAgICAgICAgd2hpbGUgKHM0ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMy5wdXNoKHM0KTtcbiAgICAgICAgICAgIHM0ID0gcGVnJHBhcnNlUygpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgICAgczEgPSBwZWckYzIzKHMxKTtcbiAgICAgICAgICAgIHMwID0gczE7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHMwO1xuICB9XG5cbiAgZnVuY3Rpb24gcGVnJHBhcnNlQ29tbWFuZCgpIHtcbiAgICB2YXIgczAsIHMxLCBzMiwgczMsIHM0LCBzNSwgczYsIHM3LCBzOCwgczksIHMxMDtcblxuICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgczEgPSBbXTtcbiAgICBzMiA9IHBlZyRwYXJzZVMoKTtcbiAgICB3aGlsZSAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHMxLnB1c2goczIpO1xuICAgICAgczIgPSBwZWckcGFyc2VTKCk7XG4gICAgfVxuICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSA0MCkge1xuICAgICAgICBzMiA9IHBlZyRjMjQ7XG4gICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzMiA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMyNSk7IH1cbiAgICAgIH1cbiAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBzMyA9IFtdO1xuICAgICAgICBzNCA9IHBlZyRwYXJzZVMoKTtcbiAgICAgICAgd2hpbGUgKHM0ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgczMucHVzaChzNCk7XG4gICAgICAgICAgczQgPSBwZWckcGFyc2VTKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgczQgPSBwZWckcGFyc2VTaGVsbExpbmUoKTtcbiAgICAgICAgICBpZiAoczQgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHM1ID0gW107XG4gICAgICAgICAgICBzNiA9IHBlZyRwYXJzZVMoKTtcbiAgICAgICAgICAgIHdoaWxlIChzNiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICBzNS5wdXNoKHM2KTtcbiAgICAgICAgICAgICAgczYgPSBwZWckcGFyc2VTKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoczUgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSA0MSkge1xuICAgICAgICAgICAgICAgIHM2ID0gcGVnJGMyNjtcbiAgICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHM2ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMjcpOyB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKHM2ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgczcgPSBbXTtcbiAgICAgICAgICAgICAgICBzOCA9IHBlZyRwYXJzZVMoKTtcbiAgICAgICAgICAgICAgICB3aGlsZSAoczggIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgIHM3LnB1c2goczgpO1xuICAgICAgICAgICAgICAgICAgczggPSBwZWckcGFyc2VTKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChzNyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgczggPSBbXTtcbiAgICAgICAgICAgICAgICAgIHM5ID0gcGVnJHBhcnNlUmVkaXJlY3RBcmd1bWVudCgpO1xuICAgICAgICAgICAgICAgICAgd2hpbGUgKHM5ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgIHM4LnB1c2goczkpO1xuICAgICAgICAgICAgICAgICAgICBzOSA9IHBlZyRwYXJzZVJlZGlyZWN0QXJndW1lbnQoKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIGlmIChzOCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICBzOSA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBzMTAgPSBwZWckcGFyc2VTKCk7XG4gICAgICAgICAgICAgICAgICAgIHdoaWxlIChzMTAgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICBzOS5wdXNoKHMxMCk7XG4gICAgICAgICAgICAgICAgICAgICAgczEwID0gcGVnJHBhcnNlUygpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChzOSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgIHMxID0gcGVnJGMyOChzNCwgczgpO1xuICAgICAgICAgICAgICAgICAgICAgIHMwID0gczE7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICB9XG4gICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgICAgczEgPSBbXTtcbiAgICAgIHMyID0gcGVnJHBhcnNlUygpO1xuICAgICAgd2hpbGUgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHMxLnB1c2goczIpO1xuICAgICAgICBzMiA9IHBlZyRwYXJzZVMoKTtcbiAgICAgIH1cbiAgICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDEyMykge1xuICAgICAgICAgIHMyID0gcGVnJGMyOTtcbiAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHMyID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMzApOyB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgczMgPSBbXTtcbiAgICAgICAgICBzNCA9IHBlZyRwYXJzZVMoKTtcbiAgICAgICAgICB3aGlsZSAoczQgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMzLnB1c2goczQpO1xuICAgICAgICAgICAgczQgPSBwZWckcGFyc2VTKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczQgPSBwZWckcGFyc2VTaGVsbExpbmUoKTtcbiAgICAgICAgICAgIGlmIChzNCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICBzNSA9IFtdO1xuICAgICAgICAgICAgICBzNiA9IHBlZyRwYXJzZVMoKTtcbiAgICAgICAgICAgICAgd2hpbGUgKHM2ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgczUucHVzaChzNik7XG4gICAgICAgICAgICAgICAgczYgPSBwZWckcGFyc2VTKCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKHM1ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSAxMjUpIHtcbiAgICAgICAgICAgICAgICAgIHM2ID0gcGVnJGMzMTtcbiAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIHM2ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMzMik7IH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHM2ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICBzNyA9IFtdO1xuICAgICAgICAgICAgICAgICAgczggPSBwZWckcGFyc2VTKCk7XG4gICAgICAgICAgICAgICAgICB3aGlsZSAoczggIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgczcucHVzaChzOCk7XG4gICAgICAgICAgICAgICAgICAgIHM4ID0gcGVnJHBhcnNlUygpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgaWYgKHM3ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgIHM4ID0gW107XG4gICAgICAgICAgICAgICAgICAgIHM5ID0gcGVnJHBhcnNlUmVkaXJlY3RBcmd1bWVudCgpO1xuICAgICAgICAgICAgICAgICAgICB3aGlsZSAoczkgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICBzOC5wdXNoKHM5KTtcbiAgICAgICAgICAgICAgICAgICAgICBzOSA9IHBlZyRwYXJzZVJlZGlyZWN0QXJndW1lbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoczggIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICBzOSA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgIHMxMCA9IHBlZyRwYXJzZVMoKTtcbiAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoczEwICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzOS5wdXNoKHMxMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBzMTAgPSBwZWckcGFyc2VTKCk7XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIGlmIChzOSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICBzMSA9IHBlZyRjMzMoczQsIHM4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gczE7XG4gICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICB9XG4gICAgICBpZiAoczAgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgczAgPSBwZWckY3VyclBvcztcbiAgICAgICAgczEgPSBbXTtcbiAgICAgICAgczIgPSBwZWckcGFyc2VTKCk7XG4gICAgICAgIHdoaWxlIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgIHMxLnB1c2goczIpO1xuICAgICAgICAgIHMyID0gcGVnJHBhcnNlUygpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgIHMyID0gW107XG4gICAgICAgICAgczMgPSBwZWckcGFyc2VWYXJpYWJsZUFzc2lnbm1lbnQoKTtcbiAgICAgICAgICB3aGlsZSAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMyLnB1c2goczMpO1xuICAgICAgICAgICAgczMgPSBwZWckcGFyc2VWYXJpYWJsZUFzc2lnbm1lbnQoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMyA9IFtdO1xuICAgICAgICAgICAgczQgPSBwZWckcGFyc2VTKCk7XG4gICAgICAgICAgICB3aGlsZSAoczQgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgczMucHVzaChzNCk7XG4gICAgICAgICAgICAgIHM0ID0gcGVnJHBhcnNlUygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgIHM0ID0gW107XG4gICAgICAgICAgICAgIHM1ID0gcGVnJHBhcnNlQXJndW1lbnQoKTtcbiAgICAgICAgICAgICAgaWYgKHM1ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgd2hpbGUgKHM1ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICBzNC5wdXNoKHM1KTtcbiAgICAgICAgICAgICAgICAgIHM1ID0gcGVnJHBhcnNlQXJndW1lbnQoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgczQgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmIChzNCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHM1ID0gW107XG4gICAgICAgICAgICAgICAgczYgPSBwZWckcGFyc2VTKCk7XG4gICAgICAgICAgICAgICAgd2hpbGUgKHM2ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICBzNS5wdXNoKHM2KTtcbiAgICAgICAgICAgICAgICAgIHM2ID0gcGVnJHBhcnNlUygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoczUgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgczEgPSBwZWckYzM0KHMyLCBzNCk7XG4gICAgICAgICAgICAgICAgICBzMCA9IHMxO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoczAgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgICAgICAgIHMxID0gW107XG4gICAgICAgICAgczIgPSBwZWckcGFyc2VTKCk7XG4gICAgICAgICAgd2hpbGUgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMS5wdXNoKHMyKTtcbiAgICAgICAgICAgIHMyID0gcGVnJHBhcnNlUygpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMyID0gW107XG4gICAgICAgICAgICBzMyA9IHBlZyRwYXJzZVZhcmlhYmxlQXNzaWdubWVudCgpO1xuICAgICAgICAgICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgIHdoaWxlIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHMyLnB1c2goczMpO1xuICAgICAgICAgICAgICAgIHMzID0gcGVnJHBhcnNlVmFyaWFibGVBc3NpZ25tZW50KCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHMyID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICBzMyA9IFtdO1xuICAgICAgICAgICAgICBzNCA9IHBlZyRwYXJzZVMoKTtcbiAgICAgICAgICAgICAgd2hpbGUgKHM0ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgczMucHVzaChzNCk7XG4gICAgICAgICAgICAgICAgczQgPSBwZWckcGFyc2VTKCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgICAgICAgICAgczEgPSBwZWckYzM1KHMyKTtcbiAgICAgICAgICAgICAgICBzMCA9IHMxO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHMwO1xuICB9XG5cbiAgZnVuY3Rpb24gcGVnJHBhcnNlQ29tbWFuZFN0cmluZygpIHtcbiAgICB2YXIgczAsIHMxLCBzMiwgczMsIHM0O1xuXG4gICAgczAgPSBwZWckY3VyclBvcztcbiAgICBzMSA9IFtdO1xuICAgIHMyID0gcGVnJHBhcnNlUygpO1xuICAgIHdoaWxlIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgczEucHVzaChzMik7XG4gICAgICBzMiA9IHBlZyRwYXJzZVMoKTtcbiAgICB9XG4gICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICBzMiA9IFtdO1xuICAgICAgczMgPSBwZWckcGFyc2VWYWx1ZUFyZ3VtZW50KCk7XG4gICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgd2hpbGUgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgczIucHVzaChzMyk7XG4gICAgICAgICAgczMgPSBwZWckcGFyc2VWYWx1ZUFyZ3VtZW50KCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHMyID0gcGVnJEZBSUxFRDtcbiAgICAgIH1cbiAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBzMyA9IFtdO1xuICAgICAgICBzNCA9IHBlZyRwYXJzZVMoKTtcbiAgICAgICAgd2hpbGUgKHM0ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgczMucHVzaChzNCk7XG4gICAgICAgICAgczQgPSBwZWckcGFyc2VTKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgICAgczEgPSBwZWckYzM2KHMyKTtcbiAgICAgICAgICBzMCA9IHMxO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHMwO1xuICB9XG5cbiAgZnVuY3Rpb24gcGVnJHBhcnNlQXJndW1lbnQoKSB7XG4gICAgdmFyIHMwLCBzMSwgczI7XG5cbiAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgIHMxID0gW107XG4gICAgczIgPSBwZWckcGFyc2VTKCk7XG4gICAgd2hpbGUgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICBzMS5wdXNoKHMyKTtcbiAgICAgIHMyID0gcGVnJHBhcnNlUygpO1xuICAgIH1cbiAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHMyID0gcGVnJHBhcnNlUmVkaXJlY3RBcmd1bWVudCgpO1xuICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICBzMSA9IHBlZyRjMzcoczIpO1xuICAgICAgICBzMCA9IHMxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgIH1cbiAgICBpZiAoczAgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgICBzMSA9IFtdO1xuICAgICAgczIgPSBwZWckcGFyc2VTKCk7XG4gICAgICB3aGlsZSAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgczEucHVzaChzMik7XG4gICAgICAgIHMyID0gcGVnJHBhcnNlUygpO1xuICAgICAgfVxuICAgICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHMyID0gcGVnJHBhcnNlVmFsdWVBcmd1bWVudCgpO1xuICAgICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICBzMSA9IHBlZyRjMzcoczIpO1xuICAgICAgICAgIHMwID0gczE7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gczA7XG4gIH1cblxuICBmdW5jdGlvbiBwZWckcGFyc2VSZWRpcmVjdEFyZ3VtZW50KCkge1xuICAgIHZhciBzMCwgczEsIHMyLCBzMywgczQ7XG5cbiAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgIHMxID0gW107XG4gICAgczIgPSBwZWckcGFyc2VTKCk7XG4gICAgd2hpbGUgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICBzMS5wdXNoKHMyKTtcbiAgICAgIHMyID0gcGVnJHBhcnNlUygpO1xuICAgIH1cbiAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIGlmIChwZWckYzM4LnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgczIgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgczIgPSBwZWckRkFJTEVEO1xuICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMzkpOyB9XG4gICAgICB9XG4gICAgICBpZiAoczIgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgczIgPSBudWxsO1xuICAgICAgfVxuICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHMzID0gcGVnJHBhcnNlUmVkaXJlY3RUeXBlKCk7XG4gICAgICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgIHM0ID0gcGVnJHBhcnNlVmFsdWVBcmd1bWVudCgpO1xuICAgICAgICAgIGlmIChzNCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgICAgICBzMSA9IHBlZyRjNDAoczIsIHMzLCBzNCk7XG4gICAgICAgICAgICBzMCA9IHMxO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgIH1cblxuICAgIHJldHVybiBzMDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBlZyRwYXJzZVJlZGlyZWN0VHlwZSgpIHtcbiAgICB2YXIgczA7XG5cbiAgICBpZiAoaW5wdXQuc3Vic3RyKHBlZyRjdXJyUG9zLCAyKSA9PT0gcGVnJGM0MSkge1xuICAgICAgczAgPSBwZWckYzQxO1xuICAgICAgcGVnJGN1cnJQb3MgKz0gMjtcbiAgICB9IGVsc2Uge1xuICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzQyKTsgfVxuICAgIH1cbiAgICBpZiAoczAgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIGlmIChpbnB1dC5zdWJzdHIocGVnJGN1cnJQb3MsIDIpID09PSBwZWckYzQzKSB7XG4gICAgICAgIHMwID0gcGVnJGM0MztcbiAgICAgICAgcGVnJGN1cnJQb3MgKz0gMjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzQ0KTsgfVxuICAgICAgfVxuICAgICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gNjIpIHtcbiAgICAgICAgICBzMCA9IHBlZyRjNDU7XG4gICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzQ2KTsgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChzMCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgIGlmIChpbnB1dC5zdWJzdHIocGVnJGN1cnJQb3MsIDMpID09PSBwZWckYzQ3KSB7XG4gICAgICAgICAgICBzMCA9IHBlZyRjNDc7XG4gICAgICAgICAgICBwZWckY3VyclBvcyArPSAzO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjNDgpOyB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChzMCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgaWYgKGlucHV0LnN1YnN0cihwZWckY3VyclBvcywgMikgPT09IHBlZyRjNDkpIHtcbiAgICAgICAgICAgICAgczAgPSBwZWckYzQ5O1xuICAgICAgICAgICAgICBwZWckY3VyclBvcyArPSAyO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjNTApOyB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoczAgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSA2MCkge1xuICAgICAgICAgICAgICAgIHMwID0gcGVnJGM1MTtcbiAgICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjNTIpOyB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gczA7XG4gIH1cblxuICBmdW5jdGlvbiBwZWckcGFyc2VWYWx1ZUFyZ3VtZW50KCkge1xuICAgIHZhciBzMCwgczEsIHMyO1xuXG4gICAgczAgPSBwZWckY3VyclBvcztcbiAgICBzMSA9IFtdO1xuICAgIHMyID0gcGVnJHBhcnNlUygpO1xuICAgIHdoaWxlIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgczEucHVzaChzMik7XG4gICAgICBzMiA9IHBlZyRwYXJzZVMoKTtcbiAgICB9XG4gICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICBzMiA9IHBlZyRwYXJzZVN0cmljdFZhbHVlQXJndW1lbnQoKTtcbiAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgczEgPSBwZWckYzM3KHMyKTtcbiAgICAgICAgczAgPSBzMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICB9XG5cbiAgICByZXR1cm4gczA7XG4gIH1cblxuICBmdW5jdGlvbiBwZWckcGFyc2VTdHJpY3RWYWx1ZUFyZ3VtZW50KCkge1xuICAgIHZhciBzMCwgczEsIHMyO1xuXG4gICAgczAgPSBwZWckY3VyclBvcztcbiAgICBzMSA9IFtdO1xuICAgIHMyID0gcGVnJHBhcnNlQXJndW1lbnRTZWdtZW50KCk7XG4gICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICB3aGlsZSAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgczEucHVzaChzMik7XG4gICAgICAgIHMyID0gcGVnJHBhcnNlQXJndW1lbnRTZWdtZW50KCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICB9XG4gICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgIHMxID0gcGVnJGM1MyhzMSk7XG4gICAgfVxuICAgIHMwID0gczE7XG5cbiAgICByZXR1cm4gczA7XG4gIH1cblxuICBmdW5jdGlvbiBwZWckcGFyc2VBcmd1bWVudFNlZ21lbnQoKSB7XG4gICAgdmFyIHMwLCBzMTtcblxuICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgczEgPSBwZWckcGFyc2VDUXVvdGVTdHJpbmcoKTtcbiAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgczEgPSBwZWckYzU0KHMxKTtcbiAgICB9XG4gICAgczAgPSBzMTtcbiAgICBpZiAoczAgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgICBzMSA9IHBlZyRwYXJzZVNnbFF1b3RlU3RyaW5nKCk7XG4gICAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgIHMxID0gcGVnJGM1NChzMSk7XG4gICAgICB9XG4gICAgICBzMCA9IHMxO1xuICAgICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgICAgIHMxID0gcGVnJHBhcnNlRGJsUXVvdGVTdHJpbmcoKTtcbiAgICAgICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgICAgczEgPSBwZWckYzU0KHMxKTtcbiAgICAgICAgfVxuICAgICAgICBzMCA9IHMxO1xuICAgICAgICBpZiAoczAgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgICAgICAgIHMxID0gcGVnJHBhcnNlUGxhaW5TdHJpbmcoKTtcbiAgICAgICAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgICAgczEgPSBwZWckYzU0KHMxKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBzMDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBlZyRwYXJzZUNRdW90ZVN0cmluZygpIHtcbiAgICB2YXIgczAsIHMxLCBzMiwgczM7XG5cbiAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgIGlmIChpbnB1dC5zdWJzdHIocGVnJGN1cnJQb3MsIDIpID09PSBwZWckYzU1KSB7XG4gICAgICBzMSA9IHBlZyRjNTU7XG4gICAgICBwZWckY3VyclBvcyArPSAyO1xuICAgIH0gZWxzZSB7XG4gICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjNTYpOyB9XG4gICAgfVxuICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgczIgPSBwZWckcGFyc2VDUXVvdGVTdHJpbmdUZXh0KCk7XG4gICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSAzOSkge1xuICAgICAgICAgIHMzID0gcGVnJGM1NztcbiAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHMzID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjNTgpOyB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgICAgczEgPSBwZWckYzU5KHMyKTtcbiAgICAgICAgICBzMCA9IHMxO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHMwO1xuICB9XG5cbiAgZnVuY3Rpb24gcGVnJHBhcnNlU2dsUXVvdGVTdHJpbmcoKSB7XG4gICAgdmFyIHMwLCBzMSwgczIsIHMzO1xuXG4gICAgczAgPSBwZWckY3VyclBvcztcbiAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDM5KSB7XG4gICAgICBzMSA9IHBlZyRjNTc7XG4gICAgICBwZWckY3VyclBvcysrO1xuICAgIH0gZWxzZSB7XG4gICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjNTgpOyB9XG4gICAgfVxuICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgczIgPSBwZWckcGFyc2VTZ2xRdW90ZVN0cmluZ1RleHQoKTtcbiAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDM5KSB7XG4gICAgICAgICAgczMgPSBwZWckYzU3O1xuICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgczMgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGM1OCk7IH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICBzMSA9IHBlZyRjNTkoczIpO1xuICAgICAgICAgIHMwID0gczE7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICB9XG5cbiAgICByZXR1cm4gczA7XG4gIH1cblxuICBmdW5jdGlvbiBwZWckcGFyc2VEYmxRdW90ZVN0cmluZygpIHtcbiAgICB2YXIgczAsIHMxLCBzMiwgczM7XG5cbiAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgIGlmIChpbnB1dC5zdWJzdHIocGVnJGN1cnJQb3MsIDIpID09PSBwZWckYzYwKSB7XG4gICAgICBzMSA9IHBlZyRjNjA7XG4gICAgICBwZWckY3VyclBvcyArPSAyO1xuICAgIH0gZWxzZSB7XG4gICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjNjEpOyB9XG4gICAgfVxuICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICBzMSA9IHBlZyRjNjIoKTtcbiAgICB9XG4gICAgczAgPSBzMTtcbiAgICBpZiAoczAgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDM0KSB7XG4gICAgICAgIHMxID0gcGVnJGM2MztcbiAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzY0KTsgfVxuICAgICAgfVxuICAgICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHMyID0gW107XG4gICAgICAgIHMzID0gcGVnJHBhcnNlRGJsUXVvdGVTdHJpbmdTZWdtZW50KCk7XG4gICAgICAgIHdoaWxlIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgIHMyLnB1c2goczMpO1xuICAgICAgICAgIHMzID0gcGVnJHBhcnNlRGJsUXVvdGVTdHJpbmdTZWdtZW50KCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSAzNCkge1xuICAgICAgICAgICAgczMgPSBwZWckYzYzO1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgczMgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzY0KTsgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgICAgczEgPSBwZWckYzY1KHMyKTtcbiAgICAgICAgICAgIHMwID0gczE7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHMwO1xuICB9XG5cbiAgZnVuY3Rpb24gcGVnJHBhcnNlUGxhaW5TdHJpbmcoKSB7XG4gICAgdmFyIHMwLCBzMSwgczI7XG5cbiAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgIHMxID0gW107XG4gICAgczIgPSBwZWckcGFyc2VQbGFpblN0cmluZ1NlZ21lbnQoKTtcbiAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHdoaWxlIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBzMS5wdXNoKHMyKTtcbiAgICAgICAgczIgPSBwZWckcGFyc2VQbGFpblN0cmluZ1NlZ21lbnQoKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgIH1cbiAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgczEgPSBwZWckYzY1KHMxKTtcbiAgICB9XG4gICAgczAgPSBzMTtcblxuICAgIHJldHVybiBzMDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBlZyRwYXJzZURibFF1b3RlU3RyaW5nU2VnbWVudCgpIHtcbiAgICB2YXIgczAsIHMxO1xuXG4gICAgczAgPSBwZWckY3VyclBvcztcbiAgICBzMSA9IHBlZyRwYXJzZUFyaXRobWV0aWMoKTtcbiAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgczEgPSBwZWckYzY2KHMxKTtcbiAgICB9XG4gICAgczAgPSBzMTtcbiAgICBpZiAoczAgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgICBzMSA9IHBlZyRwYXJzZVN1YnNoZWxsKCk7XG4gICAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgIHMxID0gcGVnJGM2NyhzMSk7XG4gICAgICB9XG4gICAgICBzMCA9IHMxO1xuICAgICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgICAgIHMxID0gcGVnJHBhcnNlVmFyaWFibGUoKTtcbiAgICAgICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgICAgczEgPSBwZWckYzY4KHMxKTtcbiAgICAgICAgfVxuICAgICAgICBzMCA9IHMxO1xuICAgICAgICBpZiAoczAgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgICAgICAgIHMxID0gcGVnJHBhcnNlRGJsUXVvdGVTdHJpbmdUZXh0KCk7XG4gICAgICAgICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICAgIHMxID0gcGVnJGM2OShzMSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHMwID0gczE7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gczA7XG4gIH1cblxuICBmdW5jdGlvbiBwZWckcGFyc2VQbGFpblN0cmluZ1NlZ21lbnQoKSB7XG4gICAgdmFyIHMwLCBzMTtcblxuICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgczEgPSBwZWckcGFyc2VBcml0aG1ldGljKCk7XG4gICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgIHMxID0gcGVnJGM3MChzMSk7XG4gICAgfVxuICAgIHMwID0gczE7XG4gICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgICAgczEgPSBwZWckcGFyc2VTdWJzaGVsbCgpO1xuICAgICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICBzMSA9IHBlZyRjNzEoczEpO1xuICAgICAgfVxuICAgICAgczAgPSBzMTtcbiAgICAgIGlmIChzMCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgICAgICBzMSA9IHBlZyRwYXJzZVZhcmlhYmxlKCk7XG4gICAgICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgIHMxID0gcGVnJGM3MihzMSk7XG4gICAgICAgIH1cbiAgICAgICAgczAgPSBzMTtcbiAgICAgICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgczAgPSBwZWckY3VyclBvcztcbiAgICAgICAgICBzMSA9IHBlZyRwYXJzZUdsb2IoKTtcbiAgICAgICAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgICAgczEgPSBwZWckYzczKHMxKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgICBpZiAoczAgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgICAgICAgICBzMSA9IHBlZyRwYXJzZVBsYWluU3RyaW5nVGV4dCgpO1xuICAgICAgICAgICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgICAgICBzMSA9IHBlZyRjNjkoczEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gczA7XG4gIH1cblxuICBmdW5jdGlvbiBwZWckcGFyc2VTZ2xRdW90ZVN0cmluZ1RleHQoKSB7XG4gICAgdmFyIHMwLCBzMSwgczI7XG5cbiAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgIHMxID0gW107XG4gICAgaWYgKHBlZyRjNzQudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgczIgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICB9IGVsc2Uge1xuICAgICAgczIgPSBwZWckRkFJTEVEO1xuICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzc1KTsgfVxuICAgIH1cbiAgICB3aGlsZSAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHMxLnB1c2goczIpO1xuICAgICAgaWYgKHBlZyRjNzQudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgICBzMiA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzMiA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGM3NSk7IH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgIHMxID0gcGVnJGM3NihzMSk7XG4gICAgfVxuICAgIHMwID0gczE7XG5cbiAgICByZXR1cm4gczA7XG4gIH1cblxuICBmdW5jdGlvbiBwZWckcGFyc2VEYmxRdW90ZVN0cmluZ1RleHQoKSB7XG4gICAgdmFyIHMwLCBzMSwgczI7XG5cbiAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgIHMxID0gW107XG4gICAgczIgPSBwZWckcGFyc2VEYmxRdW90ZUVzY2FwZWRDaGFyKCk7XG4gICAgaWYgKHMyID09PSBwZWckRkFJTEVEKSB7XG4gICAgICBpZiAocGVnJGM3Ny50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgIHMyID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHMyID0gcGVnJEZBSUxFRDtcbiAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzc4KTsgfVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHdoaWxlIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBzMS5wdXNoKHMyKTtcbiAgICAgICAgczIgPSBwZWckcGFyc2VEYmxRdW90ZUVzY2FwZWRDaGFyKCk7XG4gICAgICAgIGlmIChzMiA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgIGlmIChwZWckYzc3LnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgICAgIHMyID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHMyID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGM3OCk7IH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgIH1cbiAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgczEgPSBwZWckYzc2KHMxKTtcbiAgICB9XG4gICAgczAgPSBzMTtcblxuICAgIHJldHVybiBzMDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBlZyRwYXJzZURibFF1b3RlRXNjYXBlZENoYXIoKSB7XG4gICAgdmFyIHMwLCBzMSwgczI7XG5cbiAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgIGlmIChpbnB1dC5zdWJzdHIocGVnJGN1cnJQb3MsIDIpID09PSBwZWckYzc5KSB7XG4gICAgICBzMSA9IHBlZyRjNzk7XG4gICAgICBwZWckY3VyclBvcyArPSAyO1xuICAgIH0gZWxzZSB7XG4gICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjODApOyB9XG4gICAgfVxuICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICBzMSA9IHBlZyRjODEoKTtcbiAgICB9XG4gICAgczAgPSBzMTtcbiAgICBpZiAoczAgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDkyKSB7XG4gICAgICAgIHMxID0gcGVnJGM4MjtcbiAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzgzKTsgfVxuICAgICAgfVxuICAgICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIGlmIChwZWckYzg0LnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgICBzMiA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzMiA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzg1KTsgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgIHMxID0gcGVnJGM4NihzMik7XG4gICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBzMDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBlZyRwYXJzZUNRdW90ZVN0cmluZ1RleHQoKSB7XG4gICAgdmFyIHMwLCBzMSwgczI7XG5cbiAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgIHMxID0gW107XG4gICAgczIgPSBwZWckcGFyc2VDUXVvdGVFc2NhcGVkQ2hhcigpO1xuICAgIGlmIChzMiA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgaWYgKHBlZyRjNzQudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgICBzMiA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzMiA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGM3NSk7IH1cbiAgICAgIH1cbiAgICB9XG4gICAgd2hpbGUgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICBzMS5wdXNoKHMyKTtcbiAgICAgIHMyID0gcGVnJHBhcnNlQ1F1b3RlRXNjYXBlZENoYXIoKTtcbiAgICAgIGlmIChzMiA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBpZiAocGVnJGM3NC50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgICAgczIgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgczIgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGM3NSk7IH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgczEgPSBwZWckYzc2KHMxKTtcbiAgICB9XG4gICAgczAgPSBzMTtcblxuICAgIHJldHVybiBzMDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBlZyRwYXJzZUNRdW90ZUVzY2FwZWRDaGFyKCkge1xuICAgIHZhciBzMCwgczEsIHMyO1xuXG4gICAgczAgPSBwZWckY3VyclBvcztcbiAgICBpZiAoaW5wdXQuc3Vic3RyKHBlZyRjdXJyUG9zLCAyKSA9PT0gcGVnJGM4Nykge1xuICAgICAgczEgPSBwZWckYzg3O1xuICAgICAgcGVnJGN1cnJQb3MgKz0gMjtcbiAgICB9IGVsc2Uge1xuICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzg4KTsgfVxuICAgIH1cbiAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgczEgPSBwZWckYzg5KCk7XG4gICAgfVxuICAgIHMwID0gczE7XG4gICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgICAgaWYgKGlucHV0LnN1YnN0cihwZWckY3VyclBvcywgMikgPT09IHBlZyRjOTApIHtcbiAgICAgICAgczEgPSBwZWckYzkwO1xuICAgICAgICBwZWckY3VyclBvcyArPSAyO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjOTEpOyB9XG4gICAgICB9XG4gICAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgIHMxID0gcGVnJGM5MigpO1xuICAgICAgfVxuICAgICAgczAgPSBzMTtcbiAgICAgIGlmIChzMCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDkyKSB7XG4gICAgICAgICAgczEgPSBwZWckYzgyO1xuICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGM4Myk7IH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBpZiAocGVnJGM5My50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgICAgICBzMiA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzMiA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjOTQpOyB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgICAgICBzMSA9IHBlZyRjOTUoKTtcbiAgICAgICAgICAgIHMwID0gczE7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzMCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgICAgICAgaWYgKGlucHV0LnN1YnN0cihwZWckY3VyclBvcywgMikgPT09IHBlZyRjOTYpIHtcbiAgICAgICAgICAgIHMxID0gcGVnJGM5NjtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zICs9IDI7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGM5Nyk7IH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICAgIHMxID0gcGVnJGM5OCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBzMCA9IHMxO1xuICAgICAgICAgIGlmIChzMCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczAgPSBwZWckY3VyclBvcztcbiAgICAgICAgICAgIGlmIChpbnB1dC5zdWJzdHIocGVnJGN1cnJQb3MsIDIpID09PSBwZWckYzk5KSB7XG4gICAgICAgICAgICAgIHMxID0gcGVnJGM5OTtcbiAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgKz0gMjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzEwMCk7IH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICAgICAgczEgPSBwZWckYzEwMSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgICAgIGlmIChzMCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgICAgICAgICAgICBpZiAoaW5wdXQuc3Vic3RyKHBlZyRjdXJyUG9zLCAyKSA9PT0gcGVnJGMxMDIpIHtcbiAgICAgICAgICAgICAgICBzMSA9IHBlZyRjMTAyO1xuICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zICs9IDI7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMxMDMpOyB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgICAgICAgICAgczEgPSBwZWckYzEwNCgpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHMwID0gczE7XG4gICAgICAgICAgICAgIGlmIChzMCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgICAgICAgICAgICAgaWYgKGlucHV0LnN1YnN0cihwZWckY3VyclBvcywgMikgPT09IHBlZyRjMTA1KSB7XG4gICAgICAgICAgICAgICAgICBzMSA9IHBlZyRjMTA1O1xuICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgKz0gMjtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzEwNik7IH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgIHMxID0gcGVnJGMxMDcoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgICAgICAgICBpZiAoczAgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgICAgICAgICAgICAgICBpZiAoaW5wdXQuc3Vic3RyKHBlZyRjdXJyUG9zLCAyKSA9PT0gcGVnJGMxMDgpIHtcbiAgICAgICAgICAgICAgICAgICAgczEgPSBwZWckYzEwODtcbiAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgKz0gMjtcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzEwOSk7IH1cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgczEgPSBwZWckYzExMCgpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgICAgICAgICAgIGlmIChzMCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDkyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgczEgPSBwZWckYzgyO1xuICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGM4Myk7IH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAocGVnJGMxMTEudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgczIgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgczIgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzExMik7IH1cbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHMxID0gcGVnJGM4NihzMik7XG4gICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHMxO1xuICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoczAgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRwYXJzZUhleENvZGVTdHJpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBzMDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBlZyRwYXJzZUhleENvZGVTdHJpbmcoKSB7XG4gICAgdmFyIHMwLCBzMSwgczIsIHMzLCBzNCwgczUsIHM2LCBzNywgczgsIHM5LCBzMTAsIHMxMTtcblxuICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSA5Mikge1xuICAgICAgczEgPSBwZWckYzgyO1xuICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICB9IGVsc2Uge1xuICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzgzKTsgfVxuICAgIH1cbiAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHMyID0gcGVnJHBhcnNlSGV4Q29kZUNoYXIwKCk7XG4gICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgIHMxID0gcGVnJGMxMTMoczIpO1xuICAgICAgICBzMCA9IHMxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgIH1cbiAgICBpZiAoczAgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgICBpZiAoaW5wdXQuc3Vic3RyKHBlZyRjdXJyUG9zLCAyKSA9PT0gcGVnJGMxMTQpIHtcbiAgICAgICAgczEgPSBwZWckYzExNDtcbiAgICAgICAgcGVnJGN1cnJQb3MgKz0gMjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzExNSk7IH1cbiAgICAgIH1cbiAgICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBzMiA9IHBlZyRjdXJyUG9zO1xuICAgICAgICBzMyA9IHBlZyRjdXJyUG9zO1xuICAgICAgICBzNCA9IHBlZyRwYXJzZUhleENvZGVDaGFyMCgpO1xuICAgICAgICBpZiAoczQgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBzNSA9IHBlZyRwYXJzZUhleENvZGVDaGFyKCk7XG4gICAgICAgICAgaWYgKHM1ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzNCA9IFtzNCwgczVdO1xuICAgICAgICAgICAgczMgPSBzNDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMztcbiAgICAgICAgICAgIHMzID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMztcbiAgICAgICAgICBzMyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMzID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgczMgPSBwZWckcGFyc2VIZXhDb2RlQ2hhcjAoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBzMiA9IGlucHV0LnN1YnN0cmluZyhzMiwgcGVnJGN1cnJQb3MpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHMyID0gczM7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgICAgczEgPSBwZWckYzExMyhzMik7XG4gICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgfVxuICAgICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgICAgIGlmIChpbnB1dC5zdWJzdHIocGVnJGN1cnJQb3MsIDIpID09PSBwZWckYzExNikge1xuICAgICAgICAgIHMxID0gcGVnJGMxMTY7XG4gICAgICAgICAgcGVnJGN1cnJQb3MgKz0gMjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzExNyk7IH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBzMiA9IHBlZyRjdXJyUG9zO1xuICAgICAgICAgIHMzID0gcGVnJGN1cnJQb3M7XG4gICAgICAgICAgczQgPSBwZWckcGFyc2VIZXhDb2RlQ2hhcigpO1xuICAgICAgICAgIGlmIChzNCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczUgPSBwZWckcGFyc2VIZXhDb2RlQ2hhcigpO1xuICAgICAgICAgICAgaWYgKHM1ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgIHM2ID0gcGVnJHBhcnNlSGV4Q29kZUNoYXIoKTtcbiAgICAgICAgICAgICAgaWYgKHM2ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgczcgPSBwZWckcGFyc2VIZXhDb2RlQ2hhcigpO1xuICAgICAgICAgICAgICAgIGlmIChzNyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgczQgPSBbczQsIHM1LCBzNiwgczddO1xuICAgICAgICAgICAgICAgICAgczMgPSBzNDtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMztcbiAgICAgICAgICAgICAgICAgIHMzID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMztcbiAgICAgICAgICAgICAgICBzMyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczM7XG4gICAgICAgICAgICAgIHMzID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMztcbiAgICAgICAgICAgIHMzID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMiA9IGlucHV0LnN1YnN0cmluZyhzMiwgcGVnJGN1cnJQb3MpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzMiA9IHMzO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgICAgczEgPSBwZWckYzExMyhzMik7XG4gICAgICAgICAgICBzMCA9IHMxO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoczAgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgICAgICAgIGlmIChpbnB1dC5zdWJzdHIocGVnJGN1cnJQb3MsIDIpID09PSBwZWckYzExOCkge1xuICAgICAgICAgICAgczEgPSBwZWckYzExODtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zICs9IDI7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMxMTkpOyB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczIgPSBwZWckY3VyclBvcztcbiAgICAgICAgICAgIHMzID0gcGVnJGN1cnJQb3M7XG4gICAgICAgICAgICBzNCA9IHBlZyRwYXJzZUhleENvZGVDaGFyKCk7XG4gICAgICAgICAgICBpZiAoczQgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgczUgPSBwZWckcGFyc2VIZXhDb2RlQ2hhcigpO1xuICAgICAgICAgICAgICBpZiAoczUgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBzNiA9IHBlZyRwYXJzZUhleENvZGVDaGFyKCk7XG4gICAgICAgICAgICAgICAgaWYgKHM2ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICBzNyA9IHBlZyRwYXJzZUhleENvZGVDaGFyKCk7XG4gICAgICAgICAgICAgICAgICBpZiAoczcgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgczggPSBwZWckcGFyc2VIZXhDb2RlQ2hhcigpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoczggIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICBzOSA9IHBlZyRwYXJzZUhleENvZGVDaGFyKCk7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKHM5ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzMTAgPSBwZWckcGFyc2VIZXhDb2RlQ2hhcigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMxMCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzMTEgPSBwZWckcGFyc2VIZXhDb2RlQ2hhcigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoczExICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgczQgPSBbczQsIHM1LCBzNiwgczcsIHM4LCBzOSwgczEwLCBzMTFdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMzID0gczQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHMzID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMztcbiAgICAgICAgICAgICAgICAgICAgICAgIHMzID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMztcbiAgICAgICAgICAgICAgICAgICAgICBzMyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczM7XG4gICAgICAgICAgICAgICAgICAgIHMzID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMztcbiAgICAgICAgICAgICAgICAgIHMzID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMztcbiAgICAgICAgICAgICAgICBzMyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczM7XG4gICAgICAgICAgICAgIHMzID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICBzMiA9IGlucHV0LnN1YnN0cmluZyhzMiwgcGVnJGN1cnJQb3MpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgczIgPSBzMztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICAgICAgczEgPSBwZWckYzEyMChzMik7XG4gICAgICAgICAgICAgIHMwID0gczE7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHMwO1xuICB9XG5cbiAgZnVuY3Rpb24gcGVnJHBhcnNlSGV4Q29kZUNoYXIwKCkge1xuICAgIHZhciBzMDtcblxuICAgIGlmIChwZWckYzEyMS50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICBzMCA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICBwZWckY3VyclBvcysrO1xuICAgIH0gZWxzZSB7XG4gICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMTIyKTsgfVxuICAgIH1cblxuICAgIHJldHVybiBzMDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBlZyRwYXJzZUhleENvZGVDaGFyKCkge1xuICAgIHZhciBzMDtcblxuICAgIGlmIChwZWckYzEyMy50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICBzMCA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICBwZWckY3VyclBvcysrO1xuICAgIH0gZWxzZSB7XG4gICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMTI0KTsgfVxuICAgIH1cblxuICAgIHJldHVybiBzMDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBlZyRwYXJzZVBsYWluU3RyaW5nVGV4dCgpIHtcbiAgICB2YXIgczAsIHMxLCBzMiwgczMsIHM0O1xuXG4gICAgczAgPSBwZWckY3VyclBvcztcbiAgICBzMSA9IFtdO1xuICAgIHMyID0gcGVnJGN1cnJQb3M7XG4gICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSA5Mikge1xuICAgICAgczMgPSBwZWckYzgyO1xuICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICB9IGVsc2Uge1xuICAgICAgczMgPSBwZWckRkFJTEVEO1xuICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzgzKTsgfVxuICAgIH1cbiAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIGlmIChpbnB1dC5sZW5ndGggPiBwZWckY3VyclBvcykge1xuICAgICAgICBzNCA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzNCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMxMjUpOyB9XG4gICAgICB9XG4gICAgICBpZiAoczQgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgcGVnJHNhdmVkUG9zID0gczI7XG4gICAgICAgIHMzID0gcGVnJGM4NihzNCk7XG4gICAgICAgIHMyID0gczM7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwZWckY3VyclBvcyA9IHMyO1xuICAgICAgICBzMiA9IHBlZyRGQUlMRUQ7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHBlZyRjdXJyUG9zID0gczI7XG4gICAgICBzMiA9IHBlZyRGQUlMRUQ7XG4gICAgfVxuICAgIGlmIChzMiA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgczIgPSBwZWckY3VyclBvcztcbiAgICAgIGlmIChpbnB1dC5zdWJzdHIocGVnJGN1cnJQb3MsIDIpID09PSBwZWckYzEyNikge1xuICAgICAgICBzMyA9IHBlZyRjMTI2O1xuICAgICAgICBwZWckY3VyclBvcyArPSAyO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgczMgPSBwZWckRkFJTEVEO1xuICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMTI3KTsgfVxuICAgICAgfVxuICAgICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHBlZyRzYXZlZFBvcyA9IHMyO1xuICAgICAgICBzMyA9IHBlZyRjMTI4KCk7XG4gICAgICB9XG4gICAgICBzMiA9IHMzO1xuICAgICAgaWYgKHMyID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHMyID0gcGVnJGN1cnJQb3M7XG4gICAgICAgIHMzID0gcGVnJGN1cnJQb3M7XG4gICAgICAgIHBlZyRzaWxlbnRGYWlscysrO1xuICAgICAgICBzNCA9IHBlZyRwYXJzZVNwZWNpYWxTaGVsbENoYXJzKCk7XG4gICAgICAgIHBlZyRzaWxlbnRGYWlscy0tO1xuICAgICAgICBpZiAoczQgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBzMyA9IHZvaWQgMDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwZWckY3VyclBvcyA9IHMzO1xuICAgICAgICAgIHMzID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBpZiAoaW5wdXQubGVuZ3RoID4gcGVnJGN1cnJQb3MpIHtcbiAgICAgICAgICAgIHM0ID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHM0ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMxMjUpOyB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChzNCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gczI7XG4gICAgICAgICAgICBzMyA9IHBlZyRjODYoczQpO1xuICAgICAgICAgICAgczIgPSBzMztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMjtcbiAgICAgICAgICAgIHMyID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMjtcbiAgICAgICAgICBzMiA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICB3aGlsZSAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgczEucHVzaChzMik7XG4gICAgICAgIHMyID0gcGVnJGN1cnJQb3M7XG4gICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gOTIpIHtcbiAgICAgICAgICBzMyA9IHBlZyRjODI7XG4gICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzMyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzgzKTsgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgIGlmIChpbnB1dC5sZW5ndGggPiBwZWckY3VyclBvcykge1xuICAgICAgICAgICAgczQgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgczQgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzEyNSk7IH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHM0ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMjtcbiAgICAgICAgICAgIHMzID0gcGVnJGM4NihzNCk7XG4gICAgICAgICAgICBzMiA9IHMzO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwZWckY3VyclBvcyA9IHMyO1xuICAgICAgICAgICAgczIgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwZWckY3VyclBvcyA9IHMyO1xuICAgICAgICAgIHMyID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoczIgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBzMiA9IHBlZyRjdXJyUG9zO1xuICAgICAgICAgIGlmIChpbnB1dC5zdWJzdHIocGVnJGN1cnJQb3MsIDIpID09PSBwZWckYzEyNikge1xuICAgICAgICAgICAgczMgPSBwZWckYzEyNjtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zICs9IDI7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHMzID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMxMjcpOyB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gczI7XG4gICAgICAgICAgICBzMyA9IHBlZyRjMTI4KCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHMyID0gczM7XG4gICAgICAgICAgaWYgKHMyID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMiA9IHBlZyRjdXJyUG9zO1xuICAgICAgICAgICAgczMgPSBwZWckY3VyclBvcztcbiAgICAgICAgICAgIHBlZyRzaWxlbnRGYWlscysrO1xuICAgICAgICAgICAgczQgPSBwZWckcGFyc2VTcGVjaWFsU2hlbGxDaGFycygpO1xuICAgICAgICAgICAgcGVnJHNpbGVudEZhaWxzLS07XG4gICAgICAgICAgICBpZiAoczQgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgczMgPSB2b2lkIDA7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMzO1xuICAgICAgICAgICAgICBzMyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgaWYgKGlucHV0Lmxlbmd0aCA+IHBlZyRjdXJyUG9zKSB7XG4gICAgICAgICAgICAgICAgczQgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgczQgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMxMjUpOyB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKHM0ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gczI7XG4gICAgICAgICAgICAgICAgczMgPSBwZWckYzg2KHM0KTtcbiAgICAgICAgICAgICAgICBzMiA9IHMzO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczI7XG4gICAgICAgICAgICAgICAgczIgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMyO1xuICAgICAgICAgICAgICBzMiA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICB9XG4gICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgIHMxID0gcGVnJGM3NihzMSk7XG4gICAgfVxuICAgIHMwID0gczE7XG5cbiAgICByZXR1cm4gczA7XG4gIH1cblxuICBmdW5jdGlvbiBwZWckcGFyc2VBcml0aG1ldGljUHJpbWFyeSgpIHtcbiAgICB2YXIgczAsIHMxLCBzMiwgczMsIHM0LCBzNTtcblxuICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSA0NSkge1xuICAgICAgczEgPSBwZWckYzEyOTtcbiAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgfSBlbHNlIHtcbiAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMxMzApOyB9XG4gICAgfVxuICAgIGlmIChzMSA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSA0Mykge1xuICAgICAgICBzMSA9IHBlZyRjMTMxO1xuICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMTMyKTsgfVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoczEgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHMxID0gbnVsbDtcbiAgICB9XG4gICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICBzMiA9IFtdO1xuICAgICAgaWYgKHBlZyRjMzgudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgICBzMyA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzMyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMzOSk7IH1cbiAgICAgIH1cbiAgICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICB3aGlsZSAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBzMi5wdXNoKHMzKTtcbiAgICAgICAgICBpZiAocGVnJGMzOC50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgICAgICBzMyA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzMyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMzkpOyB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzMiA9IHBlZyRGQUlMRUQ7XG4gICAgICB9XG4gICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSA0Nikge1xuICAgICAgICAgIHMzID0gcGVnJGMxMzM7XG4gICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzMyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzEzNCk7IH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBzNCA9IFtdO1xuICAgICAgICAgIGlmIChwZWckYzM4LnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgICAgIHM1ID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHM1ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMzOSk7IH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHM1ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICB3aGlsZSAoczUgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgczQucHVzaChzNSk7XG4gICAgICAgICAgICAgIGlmIChwZWckYzM4LnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgICAgICAgICBzNSA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzNSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzM5KTsgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHM0ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHM0ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICAgIHMxID0gcGVnJGMxMzUoczEsIHMyLCBzNCk7XG4gICAgICAgICAgICBzMCA9IHMxO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgIH1cbiAgICBpZiAoczAgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDQ1KSB7XG4gICAgICAgIHMxID0gcGVnJGMxMjk7XG4gICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMxMzApOyB9XG4gICAgICB9XG4gICAgICBpZiAoczEgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSA0Mykge1xuICAgICAgICAgIHMxID0gcGVnJGMxMzE7XG4gICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzEzMik7IH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHMxID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHMxID0gbnVsbDtcbiAgICAgIH1cbiAgICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBzMiA9IFtdO1xuICAgICAgICBpZiAocGVnJGMzOC50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgICAgczMgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgczMgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMzOSk7IH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICB3aGlsZSAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMyLnB1c2goczMpO1xuICAgICAgICAgICAgaWYgKHBlZyRjMzgudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgICAgICAgICBzMyA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBzMyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMzOSk7IH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgczIgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgIHMxID0gcGVnJGMxMzYoczEsIHMyKTtcbiAgICAgICAgICBzMCA9IHMxO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICB9XG4gICAgICBpZiAoczAgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgczAgPSBwZWckY3VyclBvcztcbiAgICAgICAgczEgPSBwZWckcGFyc2VWYXJpYWJsZSgpO1xuICAgICAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICBzMSA9IHBlZyRjMTM3KHMxKTtcbiAgICAgICAgfVxuICAgICAgICBzMCA9IHMxO1xuICAgICAgICBpZiAoczAgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgICAgICAgIHMxID0gcGVnJHBhcnNlSWRlbnRpZmllcigpO1xuICAgICAgICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgICAgICBzMSA9IHBlZyRjMTM4KHMxKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgICBpZiAoczAgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDQwKSB7XG4gICAgICAgICAgICAgIHMxID0gcGVnJGMyNDtcbiAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzI1KTsgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgIHMyID0gW107XG4gICAgICAgICAgICAgIHMzID0gcGVnJHBhcnNlUygpO1xuICAgICAgICAgICAgICB3aGlsZSAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBzMi5wdXNoKHMzKTtcbiAgICAgICAgICAgICAgICBzMyA9IHBlZyRwYXJzZVMoKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBzMyA9IHBlZyRwYXJzZUFyaXRobWV0aWNFeHByZXNzaW9uKCk7XG4gICAgICAgICAgICAgICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICBzNCA9IFtdO1xuICAgICAgICAgICAgICAgICAgczUgPSBwZWckcGFyc2VTKCk7XG4gICAgICAgICAgICAgICAgICB3aGlsZSAoczUgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgczQucHVzaChzNSk7XG4gICAgICAgICAgICAgICAgICAgIHM1ID0gcGVnJHBhcnNlUygpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgaWYgKHM0ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gNDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICBzNSA9IHBlZyRjMjY7XG4gICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICBzNSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzI3KTsgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChzNSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgIHMxID0gcGVnJGMxMzkoczMpO1xuICAgICAgICAgICAgICAgICAgICAgIHMwID0gczE7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gczA7XG4gIH1cblxuICBmdW5jdGlvbiBwZWckcGFyc2VBcml0aG1ldGljVGltZXNFeHByZXNzaW9uKCkge1xuICAgIHZhciBzMCwgczEsIHMyLCBzMywgczQsIHM1LCBzNiwgczc7XG5cbiAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgIHMxID0gcGVnJHBhcnNlQXJpdGhtZXRpY1ByaW1hcnkoKTtcbiAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHMyID0gW107XG4gICAgICBzMyA9IHBlZyRjdXJyUG9zO1xuICAgICAgczQgPSBbXTtcbiAgICAgIHM1ID0gcGVnJHBhcnNlUygpO1xuICAgICAgd2hpbGUgKHM1ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHM0LnB1c2goczUpO1xuICAgICAgICBzNSA9IHBlZyRwYXJzZVMoKTtcbiAgICAgIH1cbiAgICAgIGlmIChzNCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDQyKSB7XG4gICAgICAgICAgczUgPSBwZWckYzE0MDtcbiAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHM1ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMTQxKTsgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChzNSA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gNDcpIHtcbiAgICAgICAgICAgIHM1ID0gcGVnJGMxNDI7XG4gICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzNSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMTQzKTsgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoczUgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBzNiA9IFtdO1xuICAgICAgICAgIHM3ID0gcGVnJHBhcnNlUygpO1xuICAgICAgICAgIHdoaWxlIChzNyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczYucHVzaChzNyk7XG4gICAgICAgICAgICBzNyA9IHBlZyRwYXJzZVMoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHM2ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzNyA9IHBlZyRwYXJzZUFyaXRobWV0aWNQcmltYXJ5KCk7XG4gICAgICAgICAgICBpZiAoczcgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gczM7XG4gICAgICAgICAgICAgIHM0ID0gcGVnJGMxNDQoczEsIHM1LCBzNyk7XG4gICAgICAgICAgICAgIHMzID0gczQ7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMzO1xuICAgICAgICAgICAgICBzMyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczM7XG4gICAgICAgICAgICBzMyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHBlZyRjdXJyUG9zID0gczM7XG4gICAgICAgICAgczMgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwZWckY3VyclBvcyA9IHMzO1xuICAgICAgICBzMyA9IHBlZyRGQUlMRUQ7XG4gICAgICB9XG4gICAgICB3aGlsZSAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgczIucHVzaChzMyk7XG4gICAgICAgIHMzID0gcGVnJGN1cnJQb3M7XG4gICAgICAgIHM0ID0gW107XG4gICAgICAgIHM1ID0gcGVnJHBhcnNlUygpO1xuICAgICAgICB3aGlsZSAoczUgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBzNC5wdXNoKHM1KTtcbiAgICAgICAgICBzNSA9IHBlZyRwYXJzZVMoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoczQgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDQyKSB7XG4gICAgICAgICAgICBzNSA9IHBlZyRjMTQwO1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgczUgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzE0MSk7IH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHM1ID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDQ3KSB7XG4gICAgICAgICAgICAgIHM1ID0gcGVnJGMxNDI7XG4gICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBzNSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMxNDMpOyB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChzNSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczYgPSBbXTtcbiAgICAgICAgICAgIHM3ID0gcGVnJHBhcnNlUygpO1xuICAgICAgICAgICAgd2hpbGUgKHM3ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgIHM2LnB1c2goczcpO1xuICAgICAgICAgICAgICBzNyA9IHBlZyRwYXJzZVMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzNiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICBzNyA9IHBlZyRwYXJzZUFyaXRobWV0aWNQcmltYXJ5KCk7XG4gICAgICAgICAgICAgIGlmIChzNyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMzO1xuICAgICAgICAgICAgICAgIHM0ID0gcGVnJGMxNDQoczEsIHM1LCBzNyk7XG4gICAgICAgICAgICAgICAgczMgPSBzNDtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMzO1xuICAgICAgICAgICAgICAgIHMzID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMztcbiAgICAgICAgICAgICAgczMgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwZWckY3VyclBvcyA9IHMzO1xuICAgICAgICAgICAgczMgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwZWckY3VyclBvcyA9IHMzO1xuICAgICAgICAgIHMzID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICBzMSA9IHBlZyRjMTQ1KHMxLCBzMik7XG4gICAgICAgIHMwID0gczE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHMwO1xuICB9XG5cbiAgZnVuY3Rpb24gcGVnJHBhcnNlQXJpdGhtZXRpY0V4cHJlc3Npb24oKSB7XG4gICAgdmFyIHMwLCBzMSwgczIsIHMzLCBzNCwgczUsIHM2LCBzNztcblxuICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgczEgPSBwZWckcGFyc2VBcml0aG1ldGljVGltZXNFeHByZXNzaW9uKCk7XG4gICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICBzMiA9IFtdO1xuICAgICAgczMgPSBwZWckY3VyclBvcztcbiAgICAgIHM0ID0gW107XG4gICAgICBzNSA9IHBlZyRwYXJzZVMoKTtcbiAgICAgIHdoaWxlIChzNSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBzNC5wdXNoKHM1KTtcbiAgICAgICAgczUgPSBwZWckcGFyc2VTKCk7XG4gICAgICB9XG4gICAgICBpZiAoczQgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSA0Mykge1xuICAgICAgICAgIHM1ID0gcGVnJGMxMzE7XG4gICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzNSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzEzMik7IH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoczUgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDQ1KSB7XG4gICAgICAgICAgICBzNSA9IHBlZyRjMTI5O1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgczUgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzEzMCk7IH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHM1ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgczYgPSBbXTtcbiAgICAgICAgICBzNyA9IHBlZyRwYXJzZVMoKTtcbiAgICAgICAgICB3aGlsZSAoczcgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHM2LnB1c2goczcpO1xuICAgICAgICAgICAgczcgPSBwZWckcGFyc2VTKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChzNiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczcgPSBwZWckcGFyc2VBcml0aG1ldGljVGltZXNFeHByZXNzaW9uKCk7XG4gICAgICAgICAgICBpZiAoczcgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gczM7XG4gICAgICAgICAgICAgIHM0ID0gcGVnJGMxNDYoczEsIHM1LCBzNyk7XG4gICAgICAgICAgICAgIHMzID0gczQ7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMzO1xuICAgICAgICAgICAgICBzMyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczM7XG4gICAgICAgICAgICBzMyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHBlZyRjdXJyUG9zID0gczM7XG4gICAgICAgICAgczMgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwZWckY3VyclBvcyA9IHMzO1xuICAgICAgICBzMyA9IHBlZyRGQUlMRUQ7XG4gICAgICB9XG4gICAgICB3aGlsZSAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgczIucHVzaChzMyk7XG4gICAgICAgIHMzID0gcGVnJGN1cnJQb3M7XG4gICAgICAgIHM0ID0gW107XG4gICAgICAgIHM1ID0gcGVnJHBhcnNlUygpO1xuICAgICAgICB3aGlsZSAoczUgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBzNC5wdXNoKHM1KTtcbiAgICAgICAgICBzNSA9IHBlZyRwYXJzZVMoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoczQgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDQzKSB7XG4gICAgICAgICAgICBzNSA9IHBlZyRjMTMxO1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgczUgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzEzMik7IH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHM1ID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDQ1KSB7XG4gICAgICAgICAgICAgIHM1ID0gcGVnJGMxMjk7XG4gICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBzNSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMxMzApOyB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChzNSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczYgPSBbXTtcbiAgICAgICAgICAgIHM3ID0gcGVnJHBhcnNlUygpO1xuICAgICAgICAgICAgd2hpbGUgKHM3ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgIHM2LnB1c2goczcpO1xuICAgICAgICAgICAgICBzNyA9IHBlZyRwYXJzZVMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzNiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICBzNyA9IHBlZyRwYXJzZUFyaXRobWV0aWNUaW1lc0V4cHJlc3Npb24oKTtcbiAgICAgICAgICAgICAgaWYgKHM3ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gczM7XG4gICAgICAgICAgICAgICAgczQgPSBwZWckYzE0NihzMSwgczUsIHM3KTtcbiAgICAgICAgICAgICAgICBzMyA9IHM0O1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczM7XG4gICAgICAgICAgICAgICAgczMgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMzO1xuICAgICAgICAgICAgICBzMyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczM7XG4gICAgICAgICAgICBzMyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHBlZyRjdXJyUG9zID0gczM7XG4gICAgICAgICAgczMgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgIHMxID0gcGVnJGMxNDUoczEsIHMyKTtcbiAgICAgICAgczAgPSBzMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICB9XG5cbiAgICByZXR1cm4gczA7XG4gIH1cblxuICBmdW5jdGlvbiBwZWckcGFyc2VBcml0aG1ldGljKCkge1xuICAgIHZhciBzMCwgczEsIHMyLCBzMywgczQsIHM1O1xuXG4gICAgczAgPSBwZWckY3VyclBvcztcbiAgICBpZiAoaW5wdXQuc3Vic3RyKHBlZyRjdXJyUG9zLCAzKSA9PT0gcGVnJGMxNDcpIHtcbiAgICAgIHMxID0gcGVnJGMxNDc7XG4gICAgICBwZWckY3VyclBvcyArPSAzO1xuICAgIH0gZWxzZSB7XG4gICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMTQ4KTsgfVxuICAgIH1cbiAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHMyID0gW107XG4gICAgICBzMyA9IHBlZyRwYXJzZVMoKTtcbiAgICAgIHdoaWxlIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBzMi5wdXNoKHMzKTtcbiAgICAgICAgczMgPSBwZWckcGFyc2VTKCk7XG4gICAgICB9XG4gICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgczMgPSBwZWckcGFyc2VBcml0aG1ldGljRXhwcmVzc2lvbigpO1xuICAgICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBzNCA9IFtdO1xuICAgICAgICAgIHM1ID0gcGVnJHBhcnNlUygpO1xuICAgICAgICAgIHdoaWxlIChzNSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczQucHVzaChzNSk7XG4gICAgICAgICAgICBzNSA9IHBlZyRwYXJzZVMoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHM0ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBpZiAoaW5wdXQuc3Vic3RyKHBlZyRjdXJyUG9zLCAyKSA9PT0gcGVnJGMxNDkpIHtcbiAgICAgICAgICAgICAgczUgPSBwZWckYzE0OTtcbiAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgKz0gMjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHM1ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzE1MCk7IH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzNSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICAgICAgczEgPSBwZWckYzE1MShzMyk7XG4gICAgICAgICAgICAgIHMwID0gczE7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHMwO1xuICB9XG5cbiAgZnVuY3Rpb24gcGVnJHBhcnNlU3Vic2hlbGwoKSB7XG4gICAgdmFyIHMwLCBzMSwgczIsIHMzO1xuXG4gICAgczAgPSBwZWckY3VyclBvcztcbiAgICBpZiAoaW5wdXQuc3Vic3RyKHBlZyRjdXJyUG9zLCAyKSA9PT0gcGVnJGMxNTIpIHtcbiAgICAgIHMxID0gcGVnJGMxNTI7XG4gICAgICBwZWckY3VyclBvcyArPSAyO1xuICAgIH0gZWxzZSB7XG4gICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMTUzKTsgfVxuICAgIH1cbiAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHMyID0gcGVnJHBhcnNlU2hlbGxMaW5lKCk7XG4gICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSA0MSkge1xuICAgICAgICAgIHMzID0gcGVnJGMyNjtcbiAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHMzID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMjcpOyB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgICAgczEgPSBwZWckYzE1NChzMik7XG4gICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgIH1cblxuICAgIHJldHVybiBzMDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBlZyRwYXJzZVZhcmlhYmxlKCkge1xuICAgIHZhciBzMCwgczEsIHMyLCBzMywgczQsIHM1O1xuXG4gICAgczAgPSBwZWckY3VyclBvcztcbiAgICBpZiAoaW5wdXQuc3Vic3RyKHBlZyRjdXJyUG9zLCAyKSA9PT0gcGVnJGMxNTUpIHtcbiAgICAgIHMxID0gcGVnJGMxNTU7XG4gICAgICBwZWckY3VyclBvcyArPSAyO1xuICAgIH0gZWxzZSB7XG4gICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMTU2KTsgfVxuICAgIH1cbiAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHMyID0gcGVnJHBhcnNlSWRlbnRpZmllcigpO1xuICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIGlmIChpbnB1dC5zdWJzdHIocGVnJGN1cnJQb3MsIDIpID09PSBwZWckYzE1Nykge1xuICAgICAgICAgIHMzID0gcGVnJGMxNTc7XG4gICAgICAgICAgcGVnJGN1cnJQb3MgKz0gMjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzMyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzE1OCk7IH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBzNCA9IHBlZyRwYXJzZUNvbW1hbmRTdHJpbmcoKTtcbiAgICAgICAgICBpZiAoczQgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gMTI1KSB7XG4gICAgICAgICAgICAgIHM1ID0gcGVnJGMzMTtcbiAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHM1ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzMyKTsgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHM1ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgICAgICBzMSA9IHBlZyRjMTU5KHMyLCBzNCk7XG4gICAgICAgICAgICAgIHMwID0gczE7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgfVxuICAgIGlmIChzMCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgczAgPSBwZWckY3VyclBvcztcbiAgICAgIGlmIChpbnB1dC5zdWJzdHIocGVnJGN1cnJQb3MsIDIpID09PSBwZWckYzE1NSkge1xuICAgICAgICBzMSA9IHBlZyRjMTU1O1xuICAgICAgICBwZWckY3VyclBvcyArPSAyO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMTU2KTsgfVxuICAgICAgfVxuICAgICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHMyID0gcGVnJHBhcnNlSWRlbnRpZmllcigpO1xuICAgICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBpZiAoaW5wdXQuc3Vic3RyKHBlZyRjdXJyUG9zLCAzKSA9PT0gcGVnJGMxNjApIHtcbiAgICAgICAgICAgIHMzID0gcGVnJGMxNjA7XG4gICAgICAgICAgICBwZWckY3VyclBvcyArPSAzO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzMyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMTYxKTsgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgICAgczEgPSBwZWckYzE2MihzMik7XG4gICAgICAgICAgICBzMCA9IHMxO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgfVxuICAgICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgICAgIGlmIChpbnB1dC5zdWJzdHIocGVnJGN1cnJQb3MsIDIpID09PSBwZWckYzE1NSkge1xuICAgICAgICAgIHMxID0gcGVnJGMxNTU7XG4gICAgICAgICAgcGVnJGN1cnJQb3MgKz0gMjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzE1Nik7IH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBzMiA9IHBlZyRwYXJzZUlkZW50aWZpZXIoKTtcbiAgICAgICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIGlmIChpbnB1dC5zdWJzdHIocGVnJGN1cnJQb3MsIDIpID09PSBwZWckYzE2Mykge1xuICAgICAgICAgICAgICBzMyA9IHBlZyRjMTYzO1xuICAgICAgICAgICAgICBwZWckY3VyclBvcyArPSAyO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgczMgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMTY0KTsgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgIHM0ID0gcGVnJHBhcnNlQ29tbWFuZFN0cmluZygpO1xuICAgICAgICAgICAgICBpZiAoczQgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDEyNSkge1xuICAgICAgICAgICAgICAgICAgczUgPSBwZWckYzMxO1xuICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgczUgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzMyKTsgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoczUgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgczEgPSBwZWckYzE2NShzMiwgczQpO1xuICAgICAgICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgczAgPSBwZWckY3VyclBvcztcbiAgICAgICAgICBpZiAoaW5wdXQuc3Vic3RyKHBlZyRjdXJyUG9zLCAyKSA9PT0gcGVnJGMxNTUpIHtcbiAgICAgICAgICAgIHMxID0gcGVnJGMxNTU7XG4gICAgICAgICAgICBwZWckY3VyclBvcyArPSAyO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMTU2KTsgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMyID0gcGVnJHBhcnNlSWRlbnRpZmllcigpO1xuICAgICAgICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgIGlmIChpbnB1dC5zdWJzdHIocGVnJGN1cnJQb3MsIDMpID09PSBwZWckYzE2Nikge1xuICAgICAgICAgICAgICAgIHMzID0gcGVnJGMxNjY7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgKz0gMztcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzMyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzE2Nyk7IH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICBzMSA9IHBlZyRjMTY4KHMyKTtcbiAgICAgICAgICAgICAgICBzMCA9IHMxO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChzMCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczAgPSBwZWckY3VyclBvcztcbiAgICAgICAgICAgIGlmIChpbnB1dC5zdWJzdHIocGVnJGN1cnJQb3MsIDIpID09PSBwZWckYzE1NSkge1xuICAgICAgICAgICAgICBzMSA9IHBlZyRjMTU1O1xuICAgICAgICAgICAgICBwZWckY3VyclBvcyArPSAyO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMTU2KTsgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgIHMyID0gcGVnJHBhcnNlSWRlbnRpZmllcigpO1xuICAgICAgICAgICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDEyNSkge1xuICAgICAgICAgICAgICAgICAgczMgPSBwZWckYzMxO1xuICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgczMgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzMyKTsgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgczEgPSBwZWckYzE2OShzMik7XG4gICAgICAgICAgICAgICAgICBzMCA9IHMxO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgICAgICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gMzYpIHtcbiAgICAgICAgICAgICAgICBzMSA9IHBlZyRjMTcwO1xuICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMxNzEpOyB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgczIgPSBwZWckcGFyc2VJZGVudGlmaWVyKCk7XG4gICAgICAgICAgICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgIHMxID0gcGVnJGMxNjkoczIpO1xuICAgICAgICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gczA7XG4gIH1cblxuICBmdW5jdGlvbiBwZWckcGFyc2VHbG9iKCkge1xuICAgIHZhciBzMCwgczEsIHMyO1xuXG4gICAgczAgPSBwZWckY3VyclBvcztcbiAgICBzMSA9IHBlZyRwYXJzZUdsb2JUZXh0KCk7XG4gICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICBwZWckc2F2ZWRQb3MgPSBwZWckY3VyclBvcztcbiAgICAgIHMyID0gcGVnJGMxNzIoczEpO1xuICAgICAgaWYgKHMyKSB7XG4gICAgICAgIHMyID0gdm9pZCAwO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgczIgPSBwZWckRkFJTEVEO1xuICAgICAgfVxuICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICBzMSA9IHBlZyRjMTczKHMxKTtcbiAgICAgICAgczAgPSBzMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICB9XG5cbiAgICByZXR1cm4gczA7XG4gIH1cblxuICBmdW5jdGlvbiBwZWckcGFyc2VHbG9iVGV4dCgpIHtcbiAgICB2YXIgczAsIHMxLCBzMiwgczMsIHM0O1xuXG4gICAgczAgPSBwZWckY3VyclBvcztcbiAgICBzMSA9IFtdO1xuICAgIHMyID0gcGVnJGN1cnJQb3M7XG4gICAgczMgPSBwZWckY3VyclBvcztcbiAgICBwZWckc2lsZW50RmFpbHMrKztcbiAgICBzNCA9IHBlZyRwYXJzZUdsb2JTcGVjaWFsU2hlbGxDaGFycygpO1xuICAgIHBlZyRzaWxlbnRGYWlscy0tO1xuICAgIGlmIChzNCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgczMgPSB2b2lkIDA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHBlZyRjdXJyUG9zID0gczM7XG4gICAgICBzMyA9IHBlZyRGQUlMRUQ7XG4gICAgfVxuICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgaWYgKGlucHV0Lmxlbmd0aCA+IHBlZyRjdXJyUG9zKSB7XG4gICAgICAgIHM0ID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHM0ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzEyNSk7IH1cbiAgICAgIH1cbiAgICAgIGlmIChzNCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMjtcbiAgICAgICAgczMgPSBwZWckYzg2KHM0KTtcbiAgICAgICAgczIgPSBzMztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBlZyRjdXJyUG9zID0gczI7XG4gICAgICAgIHMyID0gcGVnJEZBSUxFRDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcGVnJGN1cnJQb3MgPSBzMjtcbiAgICAgIHMyID0gcGVnJEZBSUxFRDtcbiAgICB9XG4gICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICB3aGlsZSAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgczEucHVzaChzMik7XG4gICAgICAgIHMyID0gcGVnJGN1cnJQb3M7XG4gICAgICAgIHMzID0gcGVnJGN1cnJQb3M7XG4gICAgICAgIHBlZyRzaWxlbnRGYWlscysrO1xuICAgICAgICBzNCA9IHBlZyRwYXJzZUdsb2JTcGVjaWFsU2hlbGxDaGFycygpO1xuICAgICAgICBwZWckc2lsZW50RmFpbHMtLTtcbiAgICAgICAgaWYgKHM0ID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgczMgPSB2b2lkIDA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMztcbiAgICAgICAgICBzMyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgaWYgKGlucHV0Lmxlbmd0aCA+IHBlZyRjdXJyUG9zKSB7XG4gICAgICAgICAgICBzNCA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzNCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMTI1KTsgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoczQgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMyO1xuICAgICAgICAgICAgczMgPSBwZWckYzg2KHM0KTtcbiAgICAgICAgICAgIHMyID0gczM7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczI7XG4gICAgICAgICAgICBzMiA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHBlZyRjdXJyUG9zID0gczI7XG4gICAgICAgICAgczIgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICB9XG4gICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgIHMxID0gcGVnJGM3NihzMSk7XG4gICAgfVxuICAgIHMwID0gczE7XG5cbiAgICByZXR1cm4gczA7XG4gIH1cblxuICBmdW5jdGlvbiBwZWckcGFyc2VFbnZWYXJpYWJsZSgpIHtcbiAgICB2YXIgczAsIHMxLCBzMjtcblxuICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgczEgPSBbXTtcbiAgICBpZiAocGVnJGMxNzQudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgczIgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICB9IGVsc2Uge1xuICAgICAgczIgPSBwZWckRkFJTEVEO1xuICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzE3NSk7IH1cbiAgICB9XG4gICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICB3aGlsZSAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgczEucHVzaChzMik7XG4gICAgICAgIGlmIChwZWckYzE3NC50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgICAgczIgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgczIgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMxNzUpOyB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgIH1cbiAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgczEgPSBwZWckYzE3NigpO1xuICAgIH1cbiAgICBzMCA9IHMxO1xuXG4gICAgcmV0dXJuIHMwO1xuICB9XG5cbiAgZnVuY3Rpb24gcGVnJHBhcnNlSWRlbnRpZmllcigpIHtcbiAgICB2YXIgczAsIHMxLCBzMjtcblxuICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgczEgPSBbXTtcbiAgICBpZiAocGVnJGMxNzcudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgczIgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICB9IGVsc2Uge1xuICAgICAgczIgPSBwZWckRkFJTEVEO1xuICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzE3OCk7IH1cbiAgICB9XG4gICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICB3aGlsZSAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgczEucHVzaChzMik7XG4gICAgICAgIGlmIChwZWckYzE3Ny50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgICAgczIgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgczIgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMxNzgpOyB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgIH1cbiAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgczEgPSBwZWckYzE3NigpO1xuICAgIH1cbiAgICBzMCA9IHMxO1xuXG4gICAgcmV0dXJuIHMwO1xuICB9XG5cbiAgZnVuY3Rpb24gcGVnJHBhcnNlU3BlY2lhbFNoZWxsQ2hhcnMoKSB7XG4gICAgdmFyIHMwO1xuXG4gICAgaWYgKHBlZyRjMTc5LnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgIHMwID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgfSBlbHNlIHtcbiAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMxODApOyB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHMwO1xuICB9XG5cbiAgZnVuY3Rpb24gcGVnJHBhcnNlR2xvYlNwZWNpYWxTaGVsbENoYXJzKCkge1xuICAgIHZhciBzMDtcblxuICAgIGlmIChwZWckYzE4MS50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICBzMCA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICBwZWckY3VyclBvcysrO1xuICAgIH0gZWxzZSB7XG4gICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMTgyKTsgfVxuICAgIH1cblxuICAgIHJldHVybiBzMDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBlZyRwYXJzZVMoKSB7XG4gICAgdmFyIHMwLCBzMTtcblxuICAgIHMwID0gW107XG4gICAgaWYgKHBlZyRjMTgzLnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgIHMxID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgfSBlbHNlIHtcbiAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMxODQpOyB9XG4gICAgfVxuICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgd2hpbGUgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHMwLnB1c2goczEpO1xuICAgICAgICBpZiAocGVnJGMxODMudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgICAgIHMxID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMTg0KTsgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICB9XG5cbiAgICByZXR1cm4gczA7XG4gIH1cblxuICBwZWckcmVzdWx0ID0gcGVnJHN0YXJ0UnVsZUZ1bmN0aW9uKCk7XG5cbiAgaWYgKHBlZyRyZXN1bHQgIT09IHBlZyRGQUlMRUQgJiYgcGVnJGN1cnJQb3MgPT09IGlucHV0Lmxlbmd0aCkge1xuICAgIHJldHVybiBwZWckcmVzdWx0O1xuICB9IGVsc2Uge1xuICAgIGlmIChwZWckcmVzdWx0ICE9PSBwZWckRkFJTEVEICYmIHBlZyRjdXJyUG9zIDwgaW5wdXQubGVuZ3RoKSB7XG4gICAgICBwZWckZmFpbChwZWckZW5kRXhwZWN0YXRpb24oKSk7XG4gICAgfVxuXG4gICAgdGhyb3cgcGVnJGJ1aWxkU3RydWN0dXJlZEVycm9yKFxuICAgICAgcGVnJG1heEZhaWxFeHBlY3RlZCxcbiAgICAgIHBlZyRtYXhGYWlsUG9zIDwgaW5wdXQubGVuZ3RoID8gaW5wdXQuY2hhckF0KHBlZyRtYXhGYWlsUG9zKSA6IG51bGwsXG4gICAgICBwZWckbWF4RmFpbFBvcyA8IGlucHV0Lmxlbmd0aFxuICAgICAgICA/IHBlZyRjb21wdXRlTG9jYXRpb24ocGVnJG1heEZhaWxQb3MsIHBlZyRtYXhGYWlsUG9zICsgMSlcbiAgICAgICAgOiBwZWckY29tcHV0ZUxvY2F0aW9uKHBlZyRtYXhGYWlsUG9zLCBwZWckbWF4RmFpbFBvcylcbiAgICApO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBTeW50YXhFcnJvcjogcGVnJFN5bnRheEVycm9yLFxuICBwYXJzZTogICAgICAgcGVnJHBhcnNlXG59O1xuIiwgIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5zdHJpbmdpZnlTaGVsbCA9IGV4cG9ydHMuc3RyaW5naWZ5QXJpdGhtZXRpY0V4cHJlc3Npb24gPSBleHBvcnRzLnN0cmluZ2lmeUFyZ3VtZW50U2VnbWVudCA9IGV4cG9ydHMuc3RyaW5naWZ5VmFsdWVBcmd1bWVudCA9IGV4cG9ydHMuc3RyaW5naWZ5UmVkaXJlY3RBcmd1bWVudCA9IGV4cG9ydHMuc3RyaW5naWZ5QXJndW1lbnQgPSBleHBvcnRzLnN0cmluZ2lmeUVudlNlZ21lbnQgPSBleHBvcnRzLnN0cmluZ2lmeUNvbW1hbmQgPSBleHBvcnRzLnN0cmluZ2lmeUNvbW1hbmRDaGFpblRoZW4gPSBleHBvcnRzLnN0cmluZ2lmeUNvbW1hbmRDaGFpbiA9IGV4cG9ydHMuc3RyaW5naWZ5Q29tbWFuZExpbmVUaGVuID0gZXhwb3J0cy5zdHJpbmdpZnlDb21tYW5kTGluZSA9IGV4cG9ydHMuc3RyaW5naWZ5U2hlbGxMaW5lID0gZXhwb3J0cy5wYXJzZVNoZWxsID0gdm9pZCAwO1xuY29uc3Qgc2hlbGxfMSA9IHJlcXVpcmUoXCIuL2dyYW1tYXJzL3NoZWxsXCIpO1xuZnVuY3Rpb24gcGFyc2VTaGVsbChzb3VyY2UsIG9wdGlvbnMgPSB7IGlzR2xvYlBhdHRlcm46ICgpID0+IGZhbHNlIH0pIHtcbiAgICB0cnkge1xuICAgICAgICByZXR1cm4gKDAsIHNoZWxsXzEucGFyc2UpKHNvdXJjZSwgb3B0aW9ucyk7XG4gICAgfVxuICAgIGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoZXJyb3IubG9jYXRpb24pXG4gICAgICAgICAgICBlcnJvci5tZXNzYWdlID0gZXJyb3IubWVzc2FnZS5yZXBsYWNlKC8oXFwuKT8kLywgYCAobGluZSAke2Vycm9yLmxvY2F0aW9uLnN0YXJ0LmxpbmV9LCBjb2x1bW4gJHtlcnJvci5sb2NhdGlvbi5zdGFydC5jb2x1bW59KSQxYCk7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbn1cbmV4cG9ydHMucGFyc2VTaGVsbCA9IHBhcnNlU2hlbGw7XG5mdW5jdGlvbiBzdHJpbmdpZnlTaGVsbExpbmUoc2hlbGxMaW5lLCB7IGVuZFNlbWljb2xvbiA9IGZhbHNlIH0gPSB7fSkge1xuICAgIHJldHVybiBzaGVsbExpbmVcbiAgICAgICAgLm1hcCgoeyBjb21tYW5kLCB0eXBlIH0sIGluZGV4KSA9PiBgJHtzdHJpbmdpZnlDb21tYW5kTGluZShjb21tYW5kKX0ke3R5cGUgPT09IGA7YFxuICAgICAgICA/IChpbmRleCAhPT0gc2hlbGxMaW5lLmxlbmd0aCAtIDEgfHwgZW5kU2VtaWNvbG9uID8gYDtgIDogYGApXG4gICAgICAgIDogYCAmYH1gKVxuICAgICAgICAuam9pbihgIGApO1xufVxuZXhwb3J0cy5zdHJpbmdpZnlTaGVsbExpbmUgPSBzdHJpbmdpZnlTaGVsbExpbmU7XG5leHBvcnRzLnN0cmluZ2lmeVNoZWxsID0gc3RyaW5naWZ5U2hlbGxMaW5lO1xuZnVuY3Rpb24gc3RyaW5naWZ5Q29tbWFuZExpbmUoY29tbWFuZExpbmUpIHtcbiAgICByZXR1cm4gYCR7c3RyaW5naWZ5Q29tbWFuZENoYWluKGNvbW1hbmRMaW5lLmNoYWluKX0ke2NvbW1hbmRMaW5lLnRoZW4gPyBgICR7c3RyaW5naWZ5Q29tbWFuZExpbmVUaGVuKGNvbW1hbmRMaW5lLnRoZW4pfWAgOiBgYH1gO1xufVxuZXhwb3J0cy5zdHJpbmdpZnlDb21tYW5kTGluZSA9IHN0cmluZ2lmeUNvbW1hbmRMaW5lO1xuZnVuY3Rpb24gc3RyaW5naWZ5Q29tbWFuZExpbmVUaGVuKGNvbW1hbmRMaW5lVGhlbikge1xuICAgIHJldHVybiBgJHtjb21tYW5kTGluZVRoZW4udHlwZX0gJHtzdHJpbmdpZnlDb21tYW5kTGluZShjb21tYW5kTGluZVRoZW4ubGluZSl9YDtcbn1cbmV4cG9ydHMuc3RyaW5naWZ5Q29tbWFuZExpbmVUaGVuID0gc3RyaW5naWZ5Q29tbWFuZExpbmVUaGVuO1xuZnVuY3Rpb24gc3RyaW5naWZ5Q29tbWFuZENoYWluKGNvbW1hbmRDaGFpbikge1xuICAgIHJldHVybiBgJHtzdHJpbmdpZnlDb21tYW5kKGNvbW1hbmRDaGFpbil9JHtjb21tYW5kQ2hhaW4udGhlbiA/IGAgJHtzdHJpbmdpZnlDb21tYW5kQ2hhaW5UaGVuKGNvbW1hbmRDaGFpbi50aGVuKX1gIDogYGB9YDtcbn1cbmV4cG9ydHMuc3RyaW5naWZ5Q29tbWFuZENoYWluID0gc3RyaW5naWZ5Q29tbWFuZENoYWluO1xuZnVuY3Rpb24gc3RyaW5naWZ5Q29tbWFuZENoYWluVGhlbihjb21tYW5kQ2hhaW5UaGVuKSB7XG4gICAgcmV0dXJuIGAke2NvbW1hbmRDaGFpblRoZW4udHlwZX0gJHtzdHJpbmdpZnlDb21tYW5kQ2hhaW4oY29tbWFuZENoYWluVGhlbi5jaGFpbil9YDtcbn1cbmV4cG9ydHMuc3RyaW5naWZ5Q29tbWFuZENoYWluVGhlbiA9IHN0cmluZ2lmeUNvbW1hbmRDaGFpblRoZW47XG5mdW5jdGlvbiBzdHJpbmdpZnlDb21tYW5kKGNvbW1hbmQpIHtcbiAgICBzd2l0Y2ggKGNvbW1hbmQudHlwZSkge1xuICAgICAgICBjYXNlIGBjb21tYW5kYDpcbiAgICAgICAgICAgIHJldHVybiBgJHtjb21tYW5kLmVudnMubGVuZ3RoID4gMCA/IGAke2NvbW1hbmQuZW52cy5tYXAoZW52ID0+IHN0cmluZ2lmeUVudlNlZ21lbnQoZW52KSkuam9pbihgIGApfSBgIDogYGB9JHtjb21tYW5kLmFyZ3MubWFwKGFyZ3VtZW50ID0+IHN0cmluZ2lmeUFyZ3VtZW50KGFyZ3VtZW50KSkuam9pbihgIGApfWA7XG4gICAgICAgIGNhc2UgYHN1YnNoZWxsYDpcbiAgICAgICAgICAgIHJldHVybiBgKCR7c3RyaW5naWZ5U2hlbGxMaW5lKGNvbW1hbmQuc3Vic2hlbGwpfSkke2NvbW1hbmQuYXJncy5sZW5ndGggPiAwID8gYCAke2NvbW1hbmQuYXJncy5tYXAoYXJndW1lbnQgPT4gc3RyaW5naWZ5UmVkaXJlY3RBcmd1bWVudChhcmd1bWVudCkpLmpvaW4oYCBgKX1gIDogYGB9YDtcbiAgICAgICAgY2FzZSBgZ3JvdXBgOlxuICAgICAgICAgICAgcmV0dXJuIGB7ICR7c3RyaW5naWZ5U2hlbGxMaW5lKGNvbW1hbmQuZ3JvdXAsIHsgLyogQmFzaCBjb21wYXQgKi8gZW5kU2VtaWNvbG9uOiB0cnVlIH0pfSB9JHtjb21tYW5kLmFyZ3MubGVuZ3RoID4gMCA/IGAgJHtjb21tYW5kLmFyZ3MubWFwKGFyZ3VtZW50ID0+IHN0cmluZ2lmeVJlZGlyZWN0QXJndW1lbnQoYXJndW1lbnQpKS5qb2luKGAgYCl9YCA6IGBgfWA7XG4gICAgICAgIGNhc2UgYGVudnNgOlxuICAgICAgICAgICAgcmV0dXJuIGNvbW1hbmQuZW52cy5tYXAoZW52ID0+IHN0cmluZ2lmeUVudlNlZ21lbnQoZW52KSkuam9pbihgIGApO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbnN1cHBvcnRlZCBjb21tYW5kIHR5cGU6ICBcIiR7Y29tbWFuZC50eXBlfVwiYCk7XG4gICAgfVxufVxuZXhwb3J0cy5zdHJpbmdpZnlDb21tYW5kID0gc3RyaW5naWZ5Q29tbWFuZDtcbmZ1bmN0aW9uIHN0cmluZ2lmeUVudlNlZ21lbnQoZW52U2VnbWVudCkge1xuICAgIHJldHVybiBgJHtlbnZTZWdtZW50Lm5hbWV9PSR7ZW52U2VnbWVudC5hcmdzWzBdID8gc3RyaW5naWZ5VmFsdWVBcmd1bWVudChlbnZTZWdtZW50LmFyZ3NbMF0pIDogYGB9YDtcbn1cbmV4cG9ydHMuc3RyaW5naWZ5RW52U2VnbWVudCA9IHN0cmluZ2lmeUVudlNlZ21lbnQ7XG5mdW5jdGlvbiBzdHJpbmdpZnlBcmd1bWVudChhcmd1bWVudCkge1xuICAgIHN3aXRjaCAoYXJndW1lbnQudHlwZSkge1xuICAgICAgICBjYXNlIGByZWRpcmVjdGlvbmA6XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5naWZ5UmVkaXJlY3RBcmd1bWVudChhcmd1bWVudCk7XG4gICAgICAgIGNhc2UgYGFyZ3VtZW50YDpcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmdpZnlWYWx1ZUFyZ3VtZW50KGFyZ3VtZW50KTtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5zdXBwb3J0ZWQgYXJndW1lbnQgdHlwZTogXCIke2FyZ3VtZW50LnR5cGV9XCJgKTtcbiAgICB9XG59XG5leHBvcnRzLnN0cmluZ2lmeUFyZ3VtZW50ID0gc3RyaW5naWZ5QXJndW1lbnQ7XG5mdW5jdGlvbiBzdHJpbmdpZnlSZWRpcmVjdEFyZ3VtZW50KGFyZ3VtZW50KSB7XG4gICAgcmV0dXJuIGAke2FyZ3VtZW50LnN1YnR5cGV9ICR7YXJndW1lbnQuYXJncy5tYXAoYXJndW1lbnQgPT4gc3RyaW5naWZ5VmFsdWVBcmd1bWVudChhcmd1bWVudCkpLmpvaW4oYCBgKX1gO1xufVxuZXhwb3J0cy5zdHJpbmdpZnlSZWRpcmVjdEFyZ3VtZW50ID0gc3RyaW5naWZ5UmVkaXJlY3RBcmd1bWVudDtcbmZ1bmN0aW9uIHN0cmluZ2lmeVZhbHVlQXJndW1lbnQoYXJndW1lbnQpIHtcbiAgICByZXR1cm4gYXJndW1lbnQuc2VnbWVudHMubWFwKHNlZ21lbnQgPT4gc3RyaW5naWZ5QXJndW1lbnRTZWdtZW50KHNlZ21lbnQpKS5qb2luKGBgKTtcbn1cbmV4cG9ydHMuc3RyaW5naWZ5VmFsdWVBcmd1bWVudCA9IHN0cmluZ2lmeVZhbHVlQXJndW1lbnQ7XG5mdW5jdGlvbiBzdHJpbmdpZnlBcmd1bWVudFNlZ21lbnQoYXJndW1lbnRTZWdtZW50KSB7XG4gICAgY29uc3QgZG91YmxlUXVvdGVJZlJlcXVlc3RlZCA9IChzdHJpbmcsIHF1b3RlKSA9PiBxdW90ZSA/IGBcIiR7c3RyaW5nfVwiYCA6IHN0cmluZztcbiAgICBjb25zdCBxdW90ZUlmTmVlZGVkID0gKHRleHQpID0+IHtcbiAgICAgICAgaWYgKHRleHQgPT09IGBgKVxuICAgICAgICAgICAgcmV0dXJuIGBcIlwiYDtcbiAgICAgICAgaWYgKCF0ZXh0Lm1hdGNoKC9bKCl7fTw+JHwmOyBcXHRcIiddLykpXG4gICAgICAgICAgICByZXR1cm4gdGV4dDtcbiAgICAgICAgcmV0dXJuIGAkJyR7dGV4dFxuICAgICAgICAgICAgLnJlcGxhY2UoL1xcXFwvZywgYFxcXFxcXFxcYClcbiAgICAgICAgICAgIC5yZXBsYWNlKC8nL2csIGBcXFxcJ2ApXG4gICAgICAgICAgICAucmVwbGFjZSgvXFxmL2csIGBcXFxcZmApXG4gICAgICAgICAgICAucmVwbGFjZSgvXFxuL2csIGBcXFxcbmApXG4gICAgICAgICAgICAucmVwbGFjZSgvXFxyL2csIGBcXFxccmApXG4gICAgICAgICAgICAucmVwbGFjZSgvXFx0L2csIGBcXFxcdGApXG4gICAgICAgICAgICAucmVwbGFjZSgvXFx2L2csIGBcXFxcdmApXG4gICAgICAgICAgICAucmVwbGFjZSgvXFwwL2csIGBcXFxcMGApfSdgO1xuICAgIH07XG4gICAgc3dpdGNoIChhcmd1bWVudFNlZ21lbnQudHlwZSkge1xuICAgICAgICBjYXNlIGB0ZXh0YDpcbiAgICAgICAgICAgIHJldHVybiBxdW90ZUlmTmVlZGVkKGFyZ3VtZW50U2VnbWVudC50ZXh0KTtcbiAgICAgICAgY2FzZSBgZ2xvYmA6XG4gICAgICAgICAgICByZXR1cm4gYXJndW1lbnRTZWdtZW50LnBhdHRlcm47XG4gICAgICAgIGNhc2UgYHNoZWxsYDpcbiAgICAgICAgICAgIHJldHVybiBkb3VibGVRdW90ZUlmUmVxdWVzdGVkKGBcXCR7JHtzdHJpbmdpZnlTaGVsbExpbmUoYXJndW1lbnRTZWdtZW50LnNoZWxsKX19YCwgYXJndW1lbnRTZWdtZW50LnF1b3RlZCk7XG4gICAgICAgIGNhc2UgYHZhcmlhYmxlYDpcbiAgICAgICAgICAgIHJldHVybiBkb3VibGVRdW90ZUlmUmVxdWVzdGVkKHR5cGVvZiBhcmd1bWVudFNlZ21lbnQuZGVmYXVsdFZhbHVlID09PSBgdW5kZWZpbmVkYFxuICAgICAgICAgICAgICAgID8gdHlwZW9mIGFyZ3VtZW50U2VnbWVudC5hbHRlcm5hdGl2ZVZhbHVlID09PSBgdW5kZWZpbmVkYFxuICAgICAgICAgICAgICAgICAgICA/IGBcXCR7JHthcmd1bWVudFNlZ21lbnQubmFtZX19YFxuICAgICAgICAgICAgICAgICAgICA6IGFyZ3VtZW50U2VnbWVudC5hbHRlcm5hdGl2ZVZhbHVlLmxlbmd0aCA9PT0gMFxuICAgICAgICAgICAgICAgICAgICAgICAgPyBgXFwkeyR7YXJndW1lbnRTZWdtZW50Lm5hbWV9Oit9YFxuICAgICAgICAgICAgICAgICAgICAgICAgOiBgXFwkeyR7YXJndW1lbnRTZWdtZW50Lm5hbWV9Oiske2FyZ3VtZW50U2VnbWVudC5hbHRlcm5hdGl2ZVZhbHVlLm1hcChhcmd1bWVudCA9PiBzdHJpbmdpZnlWYWx1ZUFyZ3VtZW50KGFyZ3VtZW50KSkuam9pbihgIGApfX1gXG4gICAgICAgICAgICAgICAgOiBhcmd1bWVudFNlZ21lbnQuZGVmYXVsdFZhbHVlLmxlbmd0aCA9PT0gMFxuICAgICAgICAgICAgICAgICAgICA/IGBcXCR7JHthcmd1bWVudFNlZ21lbnQubmFtZX06LX1gXG4gICAgICAgICAgICAgICAgICAgIDogYFxcJHske2FyZ3VtZW50U2VnbWVudC5uYW1lfTotJHthcmd1bWVudFNlZ21lbnQuZGVmYXVsdFZhbHVlLm1hcChhcmd1bWVudCA9PiBzdHJpbmdpZnlWYWx1ZUFyZ3VtZW50KGFyZ3VtZW50KSkuam9pbihgIGApfX1gLCBhcmd1bWVudFNlZ21lbnQucXVvdGVkKTtcbiAgICAgICAgY2FzZSBgYXJpdGhtZXRpY2A6XG4gICAgICAgICAgICByZXR1cm4gYCQoKCAke3N0cmluZ2lmeUFyaXRobWV0aWNFeHByZXNzaW9uKGFyZ3VtZW50U2VnbWVudC5hcml0aG1ldGljKX0gKSlgO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbnN1cHBvcnRlZCBhcmd1bWVudCBzZWdtZW50IHR5cGU6IFwiJHthcmd1bWVudFNlZ21lbnQudHlwZX1cImApO1xuICAgIH1cbn1cbmV4cG9ydHMuc3RyaW5naWZ5QXJndW1lbnRTZWdtZW50ID0gc3RyaW5naWZ5QXJndW1lbnRTZWdtZW50O1xuZnVuY3Rpb24gc3RyaW5naWZ5QXJpdGhtZXRpY0V4cHJlc3Npb24oYXJndW1lbnQpIHtcbiAgICBjb25zdCBnZXRPcGVyYXRvciA9ICh0eXBlKSA9PiB7XG4gICAgICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICAgICAgY2FzZSBgYWRkaXRpb25gOlxuICAgICAgICAgICAgICAgIHJldHVybiBgK2A7XG4gICAgICAgICAgICBjYXNlIGBzdWJ0cmFjdGlvbmA6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGAtYDtcbiAgICAgICAgICAgIGNhc2UgYG11bHRpcGxpY2F0aW9uYDpcbiAgICAgICAgICAgICAgICByZXR1cm4gYCpgO1xuICAgICAgICAgICAgY2FzZSBgZGl2aXNpb25gOlxuICAgICAgICAgICAgICAgIHJldHVybiBgL2A7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQ2FuJ3QgZXh0cmFjdCBvcGVyYXRvciBmcm9tIGFyaXRobWV0aWMgZXhwcmVzc2lvbiBvZiB0eXBlIFwiJHt0eXBlfVwiYCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIGNvbnN0IHBhcmVudGhlc2l6ZUlmUmVxdWVzdGVkID0gKHN0cmluZywgcGFyZW50aGVzaXplKSA9PiBwYXJlbnRoZXNpemUgPyBgKCAke3N0cmluZ30gKWAgOiBzdHJpbmc7XG4gICAgY29uc3Qgc3RyaW5naWZ5QW5kUGFyZW50aGVzaXplSWZOZWVkZWQgPSAoZXhwcmVzc2lvbikgPT4gXG4gICAgLy8gUmlnaHQgbm93IHdlIHBhcmVudGhlc2l6ZSBhbGwgYXJpdGhtZXRpYyBvcGVyYXRvciBleHByZXNzaW9ucyBiZWNhdXNlIGl0J3MgZWFzaWVyXG4gICAgcGFyZW50aGVzaXplSWZSZXF1ZXN0ZWQoc3RyaW5naWZ5QXJpdGhtZXRpY0V4cHJlc3Npb24oZXhwcmVzc2lvbiksICFbYG51bWJlcmAsIGB2YXJpYWJsZWBdLmluY2x1ZGVzKGV4cHJlc3Npb24udHlwZSkpO1xuICAgIHN3aXRjaCAoYXJndW1lbnQudHlwZSkge1xuICAgICAgICBjYXNlIGBudW1iZXJgOlxuICAgICAgICAgICAgcmV0dXJuIFN0cmluZyhhcmd1bWVudC52YWx1ZSk7XG4gICAgICAgIGNhc2UgYHZhcmlhYmxlYDpcbiAgICAgICAgICAgIHJldHVybiBhcmd1bWVudC5uYW1lO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuIGAke3N0cmluZ2lmeUFuZFBhcmVudGhlc2l6ZUlmTmVlZGVkKGFyZ3VtZW50LmxlZnQpfSAke2dldE9wZXJhdG9yKGFyZ3VtZW50LnR5cGUpfSAke3N0cmluZ2lmeUFuZFBhcmVudGhlc2l6ZUlmTmVlZGVkKGFyZ3VtZW50LnJpZ2h0KX1gO1xuICAgIH1cbn1cbmV4cG9ydHMuc3RyaW5naWZ5QXJpdGhtZXRpY0V4cHJlc3Npb24gPSBzdHJpbmdpZnlBcml0aG1ldGljRXhwcmVzc2lvbjtcbiIsICIvKlxuICogR2VuZXJhdGVkIGJ5IFBFRy5qcyAwLjEwLjAuXG4gKlxuICogaHR0cDovL3BlZ2pzLm9yZy9cbiAqL1xuXG5cInVzZSBzdHJpY3RcIjtcblxuZnVuY3Rpb24gcGVnJHN1YmNsYXNzKGNoaWxkLCBwYXJlbnQpIHtcbiAgZnVuY3Rpb24gY3RvcigpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGNoaWxkOyB9XG4gIGN0b3IucHJvdG90eXBlID0gcGFyZW50LnByb3RvdHlwZTtcbiAgY2hpbGQucHJvdG90eXBlID0gbmV3IGN0b3IoKTtcbn1cblxuZnVuY3Rpb24gcGVnJFN5bnRheEVycm9yKG1lc3NhZ2UsIGV4cGVjdGVkLCBmb3VuZCwgbG9jYXRpb24pIHtcbiAgdGhpcy5tZXNzYWdlICA9IG1lc3NhZ2U7XG4gIHRoaXMuZXhwZWN0ZWQgPSBleHBlY3RlZDtcbiAgdGhpcy5mb3VuZCAgICA9IGZvdW5kO1xuICB0aGlzLmxvY2F0aW9uID0gbG9jYXRpb247XG4gIHRoaXMubmFtZSAgICAgPSBcIlN5bnRheEVycm9yXCI7XG5cbiAgaWYgKHR5cGVvZiBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UodGhpcywgcGVnJFN5bnRheEVycm9yKTtcbiAgfVxufVxuXG5wZWckc3ViY2xhc3MocGVnJFN5bnRheEVycm9yLCBFcnJvcik7XG5cbnBlZyRTeW50YXhFcnJvci5idWlsZE1lc3NhZ2UgPSBmdW5jdGlvbihleHBlY3RlZCwgZm91bmQpIHtcbiAgdmFyIERFU0NSSUJFX0VYUEVDVEFUSU9OX0ZOUyA9IHtcbiAgICAgICAgbGl0ZXJhbDogZnVuY3Rpb24oZXhwZWN0YXRpb24pIHtcbiAgICAgICAgICByZXR1cm4gXCJcXFwiXCIgKyBsaXRlcmFsRXNjYXBlKGV4cGVjdGF0aW9uLnRleHQpICsgXCJcXFwiXCI7XG4gICAgICAgIH0sXG5cbiAgICAgICAgXCJjbGFzc1wiOiBmdW5jdGlvbihleHBlY3RhdGlvbikge1xuICAgICAgICAgIHZhciBlc2NhcGVkUGFydHMgPSBcIlwiLFxuICAgICAgICAgICAgICBpO1xuXG4gICAgICAgICAgZm9yIChpID0gMDsgaSA8IGV4cGVjdGF0aW9uLnBhcnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBlc2NhcGVkUGFydHMgKz0gZXhwZWN0YXRpb24ucGFydHNbaV0gaW5zdGFuY2VvZiBBcnJheVxuICAgICAgICAgICAgICA/IGNsYXNzRXNjYXBlKGV4cGVjdGF0aW9uLnBhcnRzW2ldWzBdKSArIFwiLVwiICsgY2xhc3NFc2NhcGUoZXhwZWN0YXRpb24ucGFydHNbaV1bMV0pXG4gICAgICAgICAgICAgIDogY2xhc3NFc2NhcGUoZXhwZWN0YXRpb24ucGFydHNbaV0pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBcIltcIiArIChleHBlY3RhdGlvbi5pbnZlcnRlZCA/IFwiXlwiIDogXCJcIikgKyBlc2NhcGVkUGFydHMgKyBcIl1cIjtcbiAgICAgICAgfSxcblxuICAgICAgICBhbnk6IGZ1bmN0aW9uKGV4cGVjdGF0aW9uKSB7XG4gICAgICAgICAgcmV0dXJuIFwiYW55IGNoYXJhY3RlclwiO1xuICAgICAgICB9LFxuXG4gICAgICAgIGVuZDogZnVuY3Rpb24oZXhwZWN0YXRpb24pIHtcbiAgICAgICAgICByZXR1cm4gXCJlbmQgb2YgaW5wdXRcIjtcbiAgICAgICAgfSxcblxuICAgICAgICBvdGhlcjogZnVuY3Rpb24oZXhwZWN0YXRpb24pIHtcbiAgICAgICAgICByZXR1cm4gZXhwZWN0YXRpb24uZGVzY3JpcHRpb247XG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgZnVuY3Rpb24gaGV4KGNoKSB7XG4gICAgcmV0dXJuIGNoLmNoYXJDb2RlQXQoMCkudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCk7XG4gIH1cblxuICBmdW5jdGlvbiBsaXRlcmFsRXNjYXBlKHMpIHtcbiAgICByZXR1cm4gc1xuICAgICAgLnJlcGxhY2UoL1xcXFwvZywgJ1xcXFxcXFxcJylcbiAgICAgIC5yZXBsYWNlKC9cIi9nLCAgJ1xcXFxcIicpXG4gICAgICAucmVwbGFjZSgvXFwwL2csICdcXFxcMCcpXG4gICAgICAucmVwbGFjZSgvXFx0L2csICdcXFxcdCcpXG4gICAgICAucmVwbGFjZSgvXFxuL2csICdcXFxcbicpXG4gICAgICAucmVwbGFjZSgvXFxyL2csICdcXFxccicpXG4gICAgICAucmVwbGFjZSgvW1xceDAwLVxceDBGXS9nLCAgICAgICAgICBmdW5jdGlvbihjaCkgeyByZXR1cm4gJ1xcXFx4MCcgKyBoZXgoY2gpOyB9KVxuICAgICAgLnJlcGxhY2UoL1tcXHgxMC1cXHgxRlxceDdGLVxceDlGXS9nLCBmdW5jdGlvbihjaCkgeyByZXR1cm4gJ1xcXFx4JyAgKyBoZXgoY2gpOyB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNsYXNzRXNjYXBlKHMpIHtcbiAgICByZXR1cm4gc1xuICAgICAgLnJlcGxhY2UoL1xcXFwvZywgJ1xcXFxcXFxcJylcbiAgICAgIC5yZXBsYWNlKC9cXF0vZywgJ1xcXFxdJylcbiAgICAgIC5yZXBsYWNlKC9cXF4vZywgJ1xcXFxeJylcbiAgICAgIC5yZXBsYWNlKC8tL2csICAnXFxcXC0nKVxuICAgICAgLnJlcGxhY2UoL1xcMC9nLCAnXFxcXDAnKVxuICAgICAgLnJlcGxhY2UoL1xcdC9nLCAnXFxcXHQnKVxuICAgICAgLnJlcGxhY2UoL1xcbi9nLCAnXFxcXG4nKVxuICAgICAgLnJlcGxhY2UoL1xcci9nLCAnXFxcXHInKVxuICAgICAgLnJlcGxhY2UoL1tcXHgwMC1cXHgwRl0vZywgICAgICAgICAgZnVuY3Rpb24oY2gpIHsgcmV0dXJuICdcXFxceDAnICsgaGV4KGNoKTsgfSlcbiAgICAgIC5yZXBsYWNlKC9bXFx4MTAtXFx4MUZcXHg3Ri1cXHg5Rl0vZywgZnVuY3Rpb24oY2gpIHsgcmV0dXJuICdcXFxceCcgICsgaGV4KGNoKTsgfSk7XG4gIH1cblxuICBmdW5jdGlvbiBkZXNjcmliZUV4cGVjdGF0aW9uKGV4cGVjdGF0aW9uKSB7XG4gICAgcmV0dXJuIERFU0NSSUJFX0VYUEVDVEFUSU9OX0ZOU1tleHBlY3RhdGlvbi50eXBlXShleHBlY3RhdGlvbik7XG4gIH1cblxuICBmdW5jdGlvbiBkZXNjcmliZUV4cGVjdGVkKGV4cGVjdGVkKSB7XG4gICAgdmFyIGRlc2NyaXB0aW9ucyA9IG5ldyBBcnJheShleHBlY3RlZC5sZW5ndGgpLFxuICAgICAgICBpLCBqO1xuXG4gICAgZm9yIChpID0gMDsgaSA8IGV4cGVjdGVkLmxlbmd0aDsgaSsrKSB7XG4gICAgICBkZXNjcmlwdGlvbnNbaV0gPSBkZXNjcmliZUV4cGVjdGF0aW9uKGV4cGVjdGVkW2ldKTtcbiAgICB9XG5cbiAgICBkZXNjcmlwdGlvbnMuc29ydCgpO1xuXG4gICAgaWYgKGRlc2NyaXB0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICBmb3IgKGkgPSAxLCBqID0gMTsgaSA8IGRlc2NyaXB0aW9ucy5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAoZGVzY3JpcHRpb25zW2kgLSAxXSAhPT0gZGVzY3JpcHRpb25zW2ldKSB7XG4gICAgICAgICAgZGVzY3JpcHRpb25zW2pdID0gZGVzY3JpcHRpb25zW2ldO1xuICAgICAgICAgIGorKztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZGVzY3JpcHRpb25zLmxlbmd0aCA9IGo7XG4gICAgfVxuXG4gICAgc3dpdGNoIChkZXNjcmlwdGlvbnMubGVuZ3RoKSB7XG4gICAgICBjYXNlIDE6XG4gICAgICAgIHJldHVybiBkZXNjcmlwdGlvbnNbMF07XG5cbiAgICAgIGNhc2UgMjpcbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0aW9uc1swXSArIFwiIG9yIFwiICsgZGVzY3JpcHRpb25zWzFdO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gZGVzY3JpcHRpb25zLnNsaWNlKDAsIC0xKS5qb2luKFwiLCBcIilcbiAgICAgICAgICArIFwiLCBvciBcIlxuICAgICAgICAgICsgZGVzY3JpcHRpb25zW2Rlc2NyaXB0aW9ucy5sZW5ndGggLSAxXTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBkZXNjcmliZUZvdW5kKGZvdW5kKSB7XG4gICAgcmV0dXJuIGZvdW5kID8gXCJcXFwiXCIgKyBsaXRlcmFsRXNjYXBlKGZvdW5kKSArIFwiXFxcIlwiIDogXCJlbmQgb2YgaW5wdXRcIjtcbiAgfVxuXG4gIHJldHVybiBcIkV4cGVjdGVkIFwiICsgZGVzY3JpYmVFeHBlY3RlZChleHBlY3RlZCkgKyBcIiBidXQgXCIgKyBkZXNjcmliZUZvdW5kKGZvdW5kKSArIFwiIGZvdW5kLlwiO1xufTtcblxuZnVuY3Rpb24gcGVnJHBhcnNlKGlucHV0LCBvcHRpb25zKSB7XG4gIG9wdGlvbnMgPSBvcHRpb25zICE9PSB2b2lkIDAgPyBvcHRpb25zIDoge307XG5cbiAgdmFyIHBlZyRGQUlMRUQgPSB7fSxcblxuICAgICAgcGVnJHN0YXJ0UnVsZUZ1bmN0aW9ucyA9IHsgcmVzb2x1dGlvbjogcGVnJHBhcnNlcmVzb2x1dGlvbiB9LFxuICAgICAgcGVnJHN0YXJ0UnVsZUZ1bmN0aW9uICA9IHBlZyRwYXJzZXJlc29sdXRpb24sXG5cbiAgICAgIHBlZyRjMCA9IFwiL1wiLFxuICAgICAgcGVnJGMxID0gcGVnJGxpdGVyYWxFeHBlY3RhdGlvbihcIi9cIiwgZmFsc2UpLFxuICAgICAgcGVnJGMyID0gZnVuY3Rpb24oZnJvbSwgZGVzY3JpcHRvcikgeyByZXR1cm4geyBmcm9tLCBkZXNjcmlwdG9yIH0gfSxcbiAgICAgIHBlZyRjMyA9IGZ1bmN0aW9uKGRlc2NyaXB0b3IpIHsgcmV0dXJuIHsgZGVzY3JpcHRvciB9IH0sXG4gICAgICBwZWckYzQgPSBcIkBcIixcbiAgICAgIHBlZyRjNSA9IHBlZyRsaXRlcmFsRXhwZWN0YXRpb24oXCJAXCIsIGZhbHNlKSxcbiAgICAgIHBlZyRjNiA9IGZ1bmN0aW9uKGZ1bGxOYW1lLCBkZXNjcmlwdGlvbikgeyByZXR1cm4geyBmdWxsTmFtZSwgZGVzY3JpcHRpb24gfSB9LFxuICAgICAgcGVnJGM3ID0gZnVuY3Rpb24oZnVsbE5hbWUpIHsgcmV0dXJuIHsgZnVsbE5hbWUgfSB9LFxuICAgICAgcGVnJGM4ID0gZnVuY3Rpb24oKSB7IHJldHVybiB0ZXh0KCkgfSxcbiAgICAgIHBlZyRjOSA9IC9eW15cXC9AXS8sXG4gICAgICBwZWckYzEwID0gcGVnJGNsYXNzRXhwZWN0YXRpb24oW1wiL1wiLCBcIkBcIl0sIHRydWUsIGZhbHNlKSxcbiAgICAgIHBlZyRjMTEgPSAvXlteXFwvXS8sXG4gICAgICBwZWckYzEyID0gcGVnJGNsYXNzRXhwZWN0YXRpb24oW1wiL1wiXSwgdHJ1ZSwgZmFsc2UpLFxuXG4gICAgICBwZWckY3VyclBvcyAgICAgICAgICA9IDAsXG4gICAgICBwZWckc2F2ZWRQb3MgICAgICAgICA9IDAsXG4gICAgICBwZWckcG9zRGV0YWlsc0NhY2hlICA9IFt7IGxpbmU6IDEsIGNvbHVtbjogMSB9XSxcbiAgICAgIHBlZyRtYXhGYWlsUG9zICAgICAgID0gMCxcbiAgICAgIHBlZyRtYXhGYWlsRXhwZWN0ZWQgID0gW10sXG4gICAgICBwZWckc2lsZW50RmFpbHMgICAgICA9IDAsXG5cbiAgICAgIHBlZyRyZXN1bHQ7XG5cbiAgaWYgKFwic3RhcnRSdWxlXCIgaW4gb3B0aW9ucykge1xuICAgIGlmICghKG9wdGlvbnMuc3RhcnRSdWxlIGluIHBlZyRzdGFydFJ1bGVGdW5jdGlvbnMpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDYW4ndCBzdGFydCBwYXJzaW5nIGZyb20gcnVsZSBcXFwiXCIgKyBvcHRpb25zLnN0YXJ0UnVsZSArIFwiXFxcIi5cIik7XG4gICAgfVxuXG4gICAgcGVnJHN0YXJ0UnVsZUZ1bmN0aW9uID0gcGVnJHN0YXJ0UnVsZUZ1bmN0aW9uc1tvcHRpb25zLnN0YXJ0UnVsZV07XG4gIH1cblxuICBmdW5jdGlvbiB0ZXh0KCkge1xuICAgIHJldHVybiBpbnB1dC5zdWJzdHJpbmcocGVnJHNhdmVkUG9zLCBwZWckY3VyclBvcyk7XG4gIH1cblxuICBmdW5jdGlvbiBsb2NhdGlvbigpIHtcbiAgICByZXR1cm4gcGVnJGNvbXB1dGVMb2NhdGlvbihwZWckc2F2ZWRQb3MsIHBlZyRjdXJyUG9zKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGV4cGVjdGVkKGRlc2NyaXB0aW9uLCBsb2NhdGlvbikge1xuICAgIGxvY2F0aW9uID0gbG9jYXRpb24gIT09IHZvaWQgMCA/IGxvY2F0aW9uIDogcGVnJGNvbXB1dGVMb2NhdGlvbihwZWckc2F2ZWRQb3MsIHBlZyRjdXJyUG9zKVxuXG4gICAgdGhyb3cgcGVnJGJ1aWxkU3RydWN0dXJlZEVycm9yKFxuICAgICAgW3BlZyRvdGhlckV4cGVjdGF0aW9uKGRlc2NyaXB0aW9uKV0sXG4gICAgICBpbnB1dC5zdWJzdHJpbmcocGVnJHNhdmVkUG9zLCBwZWckY3VyclBvcyksXG4gICAgICBsb2NhdGlvblxuICAgICk7XG4gIH1cblxuICBmdW5jdGlvbiBlcnJvcihtZXNzYWdlLCBsb2NhdGlvbikge1xuICAgIGxvY2F0aW9uID0gbG9jYXRpb24gIT09IHZvaWQgMCA/IGxvY2F0aW9uIDogcGVnJGNvbXB1dGVMb2NhdGlvbihwZWckc2F2ZWRQb3MsIHBlZyRjdXJyUG9zKVxuXG4gICAgdGhyb3cgcGVnJGJ1aWxkU2ltcGxlRXJyb3IobWVzc2FnZSwgbG9jYXRpb24pO1xuICB9XG5cbiAgZnVuY3Rpb24gcGVnJGxpdGVyYWxFeHBlY3RhdGlvbih0ZXh0LCBpZ25vcmVDYXNlKSB7XG4gICAgcmV0dXJuIHsgdHlwZTogXCJsaXRlcmFsXCIsIHRleHQ6IHRleHQsIGlnbm9yZUNhc2U6IGlnbm9yZUNhc2UgfTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBlZyRjbGFzc0V4cGVjdGF0aW9uKHBhcnRzLCBpbnZlcnRlZCwgaWdub3JlQ2FzZSkge1xuICAgIHJldHVybiB7IHR5cGU6IFwiY2xhc3NcIiwgcGFydHM6IHBhcnRzLCBpbnZlcnRlZDogaW52ZXJ0ZWQsIGlnbm9yZUNhc2U6IGlnbm9yZUNhc2UgfTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBlZyRhbnlFeHBlY3RhdGlvbigpIHtcbiAgICByZXR1cm4geyB0eXBlOiBcImFueVwiIH07XG4gIH1cblxuICBmdW5jdGlvbiBwZWckZW5kRXhwZWN0YXRpb24oKSB7XG4gICAgcmV0dXJuIHsgdHlwZTogXCJlbmRcIiB9O1xuICB9XG5cbiAgZnVuY3Rpb24gcGVnJG90aGVyRXhwZWN0YXRpb24oZGVzY3JpcHRpb24pIHtcbiAgICByZXR1cm4geyB0eXBlOiBcIm90aGVyXCIsIGRlc2NyaXB0aW9uOiBkZXNjcmlwdGlvbiB9O1xuICB9XG5cbiAgZnVuY3Rpb24gcGVnJGNvbXB1dGVQb3NEZXRhaWxzKHBvcykge1xuICAgIHZhciBkZXRhaWxzID0gcGVnJHBvc0RldGFpbHNDYWNoZVtwb3NdLCBwO1xuXG4gICAgaWYgKGRldGFpbHMpIHtcbiAgICAgIHJldHVybiBkZXRhaWxzO1xuICAgIH0gZWxzZSB7XG4gICAgICBwID0gcG9zIC0gMTtcbiAgICAgIHdoaWxlICghcGVnJHBvc0RldGFpbHNDYWNoZVtwXSkge1xuICAgICAgICBwLS07XG4gICAgICB9XG5cbiAgICAgIGRldGFpbHMgPSBwZWckcG9zRGV0YWlsc0NhY2hlW3BdO1xuICAgICAgZGV0YWlscyA9IHtcbiAgICAgICAgbGluZTogICBkZXRhaWxzLmxpbmUsXG4gICAgICAgIGNvbHVtbjogZGV0YWlscy5jb2x1bW5cbiAgICAgIH07XG5cbiAgICAgIHdoaWxlIChwIDwgcG9zKSB7XG4gICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHApID09PSAxMCkge1xuICAgICAgICAgIGRldGFpbHMubGluZSsrO1xuICAgICAgICAgIGRldGFpbHMuY29sdW1uID0gMTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBkZXRhaWxzLmNvbHVtbisrO1xuICAgICAgICB9XG5cbiAgICAgICAgcCsrO1xuICAgICAgfVxuXG4gICAgICBwZWckcG9zRGV0YWlsc0NhY2hlW3Bvc10gPSBkZXRhaWxzO1xuICAgICAgcmV0dXJuIGRldGFpbHM7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gcGVnJGNvbXB1dGVMb2NhdGlvbihzdGFydFBvcywgZW5kUG9zKSB7XG4gICAgdmFyIHN0YXJ0UG9zRGV0YWlscyA9IHBlZyRjb21wdXRlUG9zRGV0YWlscyhzdGFydFBvcyksXG4gICAgICAgIGVuZFBvc0RldGFpbHMgICA9IHBlZyRjb21wdXRlUG9zRGV0YWlscyhlbmRQb3MpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHN0YXJ0OiB7XG4gICAgICAgIG9mZnNldDogc3RhcnRQb3MsXG4gICAgICAgIGxpbmU6ICAgc3RhcnRQb3NEZXRhaWxzLmxpbmUsXG4gICAgICAgIGNvbHVtbjogc3RhcnRQb3NEZXRhaWxzLmNvbHVtblxuICAgICAgfSxcbiAgICAgIGVuZDoge1xuICAgICAgICBvZmZzZXQ6IGVuZFBvcyxcbiAgICAgICAgbGluZTogICBlbmRQb3NEZXRhaWxzLmxpbmUsXG4gICAgICAgIGNvbHVtbjogZW5kUG9zRGV0YWlscy5jb2x1bW5cbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgZnVuY3Rpb24gcGVnJGZhaWwoZXhwZWN0ZWQpIHtcbiAgICBpZiAocGVnJGN1cnJQb3MgPCBwZWckbWF4RmFpbFBvcykgeyByZXR1cm47IH1cblxuICAgIGlmIChwZWckY3VyclBvcyA+IHBlZyRtYXhGYWlsUG9zKSB7XG4gICAgICBwZWckbWF4RmFpbFBvcyA9IHBlZyRjdXJyUG9zO1xuICAgICAgcGVnJG1heEZhaWxFeHBlY3RlZCA9IFtdO1xuICAgIH1cblxuICAgIHBlZyRtYXhGYWlsRXhwZWN0ZWQucHVzaChleHBlY3RlZCk7XG4gIH1cblxuICBmdW5jdGlvbiBwZWckYnVpbGRTaW1wbGVFcnJvcihtZXNzYWdlLCBsb2NhdGlvbikge1xuICAgIHJldHVybiBuZXcgcGVnJFN5bnRheEVycm9yKG1lc3NhZ2UsIG51bGwsIG51bGwsIGxvY2F0aW9uKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBlZyRidWlsZFN0cnVjdHVyZWRFcnJvcihleHBlY3RlZCwgZm91bmQsIGxvY2F0aW9uKSB7XG4gICAgcmV0dXJuIG5ldyBwZWckU3ludGF4RXJyb3IoXG4gICAgICBwZWckU3ludGF4RXJyb3IuYnVpbGRNZXNzYWdlKGV4cGVjdGVkLCBmb3VuZCksXG4gICAgICBleHBlY3RlZCxcbiAgICAgIGZvdW5kLFxuICAgICAgbG9jYXRpb25cbiAgICApO1xuICB9XG5cbiAgZnVuY3Rpb24gcGVnJHBhcnNlcmVzb2x1dGlvbigpIHtcbiAgICB2YXIgczAsIHMxLCBzMiwgczM7XG5cbiAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgIHMxID0gcGVnJHBhcnNlc3BlY2lmaWVyKCk7XG4gICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDQ3KSB7XG4gICAgICAgIHMyID0gcGVnJGMwO1xuICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgczIgPSBwZWckRkFJTEVEO1xuICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMSk7IH1cbiAgICAgIH1cbiAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBzMyA9IHBlZyRwYXJzZXNwZWNpZmllcigpO1xuICAgICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICBzMSA9IHBlZyRjMihzMSwgczMpO1xuICAgICAgICAgIHMwID0gczE7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICB9XG4gICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgICAgczEgPSBwZWckcGFyc2VzcGVjaWZpZXIoKTtcbiAgICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgczEgPSBwZWckYzMoczEpO1xuICAgICAgfVxuICAgICAgczAgPSBzMTtcbiAgICB9XG5cbiAgICByZXR1cm4gczA7XG4gIH1cblxuICBmdW5jdGlvbiBwZWckcGFyc2VzcGVjaWZpZXIoKSB7XG4gICAgdmFyIHMwLCBzMSwgczIsIHMzO1xuXG4gICAgczAgPSBwZWckY3VyclBvcztcbiAgICBzMSA9IHBlZyRwYXJzZWZ1bGxOYW1lKCk7XG4gICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDY0KSB7XG4gICAgICAgIHMyID0gcGVnJGM0O1xuICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgczIgPSBwZWckRkFJTEVEO1xuICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjNSk7IH1cbiAgICAgIH1cbiAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBzMyA9IHBlZyRwYXJzZWRlc2NyaXB0aW9uKCk7XG4gICAgICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgIHMxID0gcGVnJGM2KHMxLCBzMyk7XG4gICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgIH1cbiAgICBpZiAoczAgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgICBzMSA9IHBlZyRwYXJzZWZ1bGxOYW1lKCk7XG4gICAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgIHMxID0gcGVnJGM3KHMxKTtcbiAgICAgIH1cbiAgICAgIHMwID0gczE7XG4gICAgfVxuXG4gICAgcmV0dXJuIHMwO1xuICB9XG5cbiAgZnVuY3Rpb24gcGVnJHBhcnNlZnVsbE5hbWUoKSB7XG4gICAgdmFyIHMwLCBzMSwgczIsIHMzLCBzNDtcblxuICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSA2NCkge1xuICAgICAgczEgPSBwZWckYzQ7XG4gICAgICBwZWckY3VyclBvcysrO1xuICAgIH0gZWxzZSB7XG4gICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjNSk7IH1cbiAgICB9XG4gICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICBzMiA9IHBlZyRwYXJzZWlkZW50KCk7XG4gICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSA0Nykge1xuICAgICAgICAgIHMzID0gcGVnJGMwO1xuICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgczMgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMxKTsgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgIHM0ID0gcGVnJHBhcnNlaWRlbnQoKTtcbiAgICAgICAgICBpZiAoczQgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgICAgczEgPSBwZWckYzgoKTtcbiAgICAgICAgICAgIHMwID0gczE7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgfVxuICAgIGlmIChzMCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgczAgPSBwZWckY3VyclBvcztcbiAgICAgIHMxID0gcGVnJHBhcnNlaWRlbnQoKTtcbiAgICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgczEgPSBwZWckYzgoKTtcbiAgICAgIH1cbiAgICAgIHMwID0gczE7XG4gICAgfVxuXG4gICAgcmV0dXJuIHMwO1xuICB9XG5cbiAgZnVuY3Rpb24gcGVnJHBhcnNlaWRlbnQoKSB7XG4gICAgdmFyIHMwLCBzMSwgczI7XG5cbiAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgIHMxID0gW107XG4gICAgaWYgKHBlZyRjOS50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICBzMiA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICBwZWckY3VyclBvcysrO1xuICAgIH0gZWxzZSB7XG4gICAgICBzMiA9IHBlZyRGQUlMRUQ7XG4gICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMTApOyB9XG4gICAgfVxuICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgd2hpbGUgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHMxLnB1c2goczIpO1xuICAgICAgICBpZiAocGVnJGM5LnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgICBzMiA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzMiA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzEwKTsgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICB9XG4gICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgIHMxID0gcGVnJGM4KCk7XG4gICAgfVxuICAgIHMwID0gczE7XG5cbiAgICByZXR1cm4gczA7XG4gIH1cblxuICBmdW5jdGlvbiBwZWckcGFyc2VkZXNjcmlwdGlvbigpIHtcbiAgICB2YXIgczAsIHMxLCBzMjtcblxuICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgczEgPSBbXTtcbiAgICBpZiAocGVnJGMxMS50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICBzMiA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICBwZWckY3VyclBvcysrO1xuICAgIH0gZWxzZSB7XG4gICAgICBzMiA9IHBlZyRGQUlMRUQ7XG4gICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMTIpOyB9XG4gICAgfVxuICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgd2hpbGUgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHMxLnB1c2goczIpO1xuICAgICAgICBpZiAocGVnJGMxMS50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgICAgczIgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgczIgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMxMik7IH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgfVxuICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICBzMSA9IHBlZyRjOCgpO1xuICAgIH1cbiAgICBzMCA9IHMxO1xuXG4gICAgcmV0dXJuIHMwO1xuICB9XG5cbiAgcGVnJHJlc3VsdCA9IHBlZyRzdGFydFJ1bGVGdW5jdGlvbigpO1xuXG4gIGlmIChwZWckcmVzdWx0ICE9PSBwZWckRkFJTEVEICYmIHBlZyRjdXJyUG9zID09PSBpbnB1dC5sZW5ndGgpIHtcbiAgICByZXR1cm4gcGVnJHJlc3VsdDtcbiAgfSBlbHNlIHtcbiAgICBpZiAocGVnJHJlc3VsdCAhPT0gcGVnJEZBSUxFRCAmJiBwZWckY3VyclBvcyA8IGlucHV0Lmxlbmd0aCkge1xuICAgICAgcGVnJGZhaWwocGVnJGVuZEV4cGVjdGF0aW9uKCkpO1xuICAgIH1cblxuICAgIHRocm93IHBlZyRidWlsZFN0cnVjdHVyZWRFcnJvcihcbiAgICAgIHBlZyRtYXhGYWlsRXhwZWN0ZWQsXG4gICAgICBwZWckbWF4RmFpbFBvcyA8IGlucHV0Lmxlbmd0aCA/IGlucHV0LmNoYXJBdChwZWckbWF4RmFpbFBvcykgOiBudWxsLFxuICAgICAgcGVnJG1heEZhaWxQb3MgPCBpbnB1dC5sZW5ndGhcbiAgICAgICAgPyBwZWckY29tcHV0ZUxvY2F0aW9uKHBlZyRtYXhGYWlsUG9zLCBwZWckbWF4RmFpbFBvcyArIDEpXG4gICAgICAgIDogcGVnJGNvbXB1dGVMb2NhdGlvbihwZWckbWF4RmFpbFBvcywgcGVnJG1heEZhaWxQb3MpXG4gICAgKTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgU3ludGF4RXJyb3I6IHBlZyRTeW50YXhFcnJvcixcbiAgcGFyc2U6ICAgICAgIHBlZyRwYXJzZVxufTtcbiIsICJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuc3RyaW5naWZ5UmVzb2x1dGlvbiA9IGV4cG9ydHMucGFyc2VSZXNvbHV0aW9uID0gdm9pZCAwO1xuY29uc3QgcmVzb2x1dGlvbl8xID0gcmVxdWlyZShcIi4vZ3JhbW1hcnMvcmVzb2x1dGlvblwiKTtcbmZ1bmN0aW9uIHBhcnNlUmVzb2x1dGlvbihzb3VyY2UpIHtcbiAgICBjb25zdCBsZWdhY3lSZXNvbHV0aW9uID0gc291cmNlLm1hdGNoKC9eXFwqezEsMn1cXC8oLiopLyk7XG4gICAgaWYgKGxlZ2FjeVJlc29sdXRpb24pXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVGhlIG92ZXJyaWRlIGZvciAnJHtzb3VyY2V9JyBpbmNsdWRlcyBhIGdsb2IgcGF0dGVybi4gR2xvYiBwYXR0ZXJucyBoYXZlIGJlZW4gcmVtb3ZlZCBzaW5jZSB0aGVpciBiZWhhdmlvdXJzIGRvbid0IG1hdGNoIHdoYXQgeW91J2QgZXhwZWN0LiBTZXQgdGhlIG92ZXJyaWRlIHRvICcke2xlZ2FjeVJlc29sdXRpb25bMV19JyBpbnN0ZWFkLmApO1xuICAgIHRyeSB7XG4gICAgICAgIHJldHVybiAoMCwgcmVzb2x1dGlvbl8xLnBhcnNlKShzb3VyY2UpO1xuICAgIH1cbiAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yLmxvY2F0aW9uKVxuICAgICAgICAgICAgZXJyb3IubWVzc2FnZSA9IGVycm9yLm1lc3NhZ2UucmVwbGFjZSgvKFxcLik/JC8sIGAgKGxpbmUgJHtlcnJvci5sb2NhdGlvbi5zdGFydC5saW5lfSwgY29sdW1uICR7ZXJyb3IubG9jYXRpb24uc3RhcnQuY29sdW1ufSkkMWApO1xuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG59XG5leHBvcnRzLnBhcnNlUmVzb2x1dGlvbiA9IHBhcnNlUmVzb2x1dGlvbjtcbmZ1bmN0aW9uIHN0cmluZ2lmeVJlc29sdXRpb24ocmVzb2x1dGlvbikge1xuICAgIGxldCBzdHIgPSBgYDtcbiAgICBpZiAocmVzb2x1dGlvbi5mcm9tKSB7XG4gICAgICAgIHN0ciArPSByZXNvbHV0aW9uLmZyb20uZnVsbE5hbWU7XG4gICAgICAgIGlmIChyZXNvbHV0aW9uLmZyb20uZGVzY3JpcHRpb24pXG4gICAgICAgICAgICBzdHIgKz0gYEAke3Jlc29sdXRpb24uZnJvbS5kZXNjcmlwdGlvbn1gO1xuICAgICAgICBzdHIgKz0gYC9gO1xuICAgIH1cbiAgICBzdHIgKz0gcmVzb2x1dGlvbi5kZXNjcmlwdG9yLmZ1bGxOYW1lO1xuICAgIGlmIChyZXNvbHV0aW9uLmRlc2NyaXB0b3IuZGVzY3JpcHRpb24pXG4gICAgICAgIHN0ciArPSBgQCR7cmVzb2x1dGlvbi5kZXNjcmlwdG9yLmRlc2NyaXB0aW9ufWA7XG4gICAgcmV0dXJuIHN0cjtcbn1cbmV4cG9ydHMuc3RyaW5naWZ5UmVzb2x1dGlvbiA9IHN0cmluZ2lmeVJlc29sdXRpb247XG4iLCAiJ3VzZSBzdHJpY3QnO1xuXG5cbmZ1bmN0aW9uIGlzTm90aGluZyhzdWJqZWN0KSB7XG4gIHJldHVybiAodHlwZW9mIHN1YmplY3QgPT09ICd1bmRlZmluZWQnKSB8fCAoc3ViamVjdCA9PT0gbnVsbCk7XG59XG5cblxuZnVuY3Rpb24gaXNPYmplY3Qoc3ViamVjdCkge1xuICByZXR1cm4gKHR5cGVvZiBzdWJqZWN0ID09PSAnb2JqZWN0JykgJiYgKHN1YmplY3QgIT09IG51bGwpO1xufVxuXG5cbmZ1bmN0aW9uIHRvQXJyYXkoc2VxdWVuY2UpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoc2VxdWVuY2UpKSByZXR1cm4gc2VxdWVuY2U7XG4gIGVsc2UgaWYgKGlzTm90aGluZyhzZXF1ZW5jZSkpIHJldHVybiBbXTtcblxuICByZXR1cm4gWyBzZXF1ZW5jZSBdO1xufVxuXG5cbmZ1bmN0aW9uIGV4dGVuZCh0YXJnZXQsIHNvdXJjZSkge1xuICB2YXIgaW5kZXgsIGxlbmd0aCwga2V5LCBzb3VyY2VLZXlzO1xuXG4gIGlmIChzb3VyY2UpIHtcbiAgICBzb3VyY2VLZXlzID0gT2JqZWN0LmtleXMoc291cmNlKTtcblxuICAgIGZvciAoaW5kZXggPSAwLCBsZW5ndGggPSBzb3VyY2VLZXlzLmxlbmd0aDsgaW5kZXggPCBsZW5ndGg7IGluZGV4ICs9IDEpIHtcbiAgICAgIGtleSA9IHNvdXJjZUtleXNbaW5kZXhdO1xuICAgICAgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdGFyZ2V0O1xufVxuXG5cbmZ1bmN0aW9uIHJlcGVhdChzdHJpbmcsIGNvdW50KSB7XG4gIHZhciByZXN1bHQgPSAnJywgY3ljbGU7XG5cbiAgZm9yIChjeWNsZSA9IDA7IGN5Y2xlIDwgY291bnQ7IGN5Y2xlICs9IDEpIHtcbiAgICByZXN1bHQgKz0gc3RyaW5nO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuXG5mdW5jdGlvbiBpc05lZ2F0aXZlWmVybyhudW1iZXIpIHtcbiAgcmV0dXJuIChudW1iZXIgPT09IDApICYmIChOdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFkgPT09IDEgLyBudW1iZXIpO1xufVxuXG5cbm1vZHVsZS5leHBvcnRzLmlzTm90aGluZyAgICAgID0gaXNOb3RoaW5nO1xubW9kdWxlLmV4cG9ydHMuaXNPYmplY3QgICAgICAgPSBpc09iamVjdDtcbm1vZHVsZS5leHBvcnRzLnRvQXJyYXkgICAgICAgID0gdG9BcnJheTtcbm1vZHVsZS5leHBvcnRzLnJlcGVhdCAgICAgICAgID0gcmVwZWF0O1xubW9kdWxlLmV4cG9ydHMuaXNOZWdhdGl2ZVplcm8gPSBpc05lZ2F0aXZlWmVybztcbm1vZHVsZS5leHBvcnRzLmV4dGVuZCAgICAgICAgID0gZXh0ZW5kO1xuIiwgIi8vIFlBTUwgZXJyb3IgY2xhc3MuIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvODQ1ODk4NFxuLy9cbid1c2Ugc3RyaWN0JztcblxuZnVuY3Rpb24gWUFNTEV4Y2VwdGlvbihyZWFzb24sIG1hcmspIHtcbiAgLy8gU3VwZXIgY29uc3RydWN0b3JcbiAgRXJyb3IuY2FsbCh0aGlzKTtcblxuICB0aGlzLm5hbWUgPSAnWUFNTEV4Y2VwdGlvbic7XG4gIHRoaXMucmVhc29uID0gcmVhc29uO1xuICB0aGlzLm1hcmsgPSBtYXJrO1xuICB0aGlzLm1lc3NhZ2UgPSAodGhpcy5yZWFzb24gfHwgJyh1bmtub3duIHJlYXNvbiknKSArICh0aGlzLm1hcmsgPyAnICcgKyB0aGlzLm1hcmsudG9TdHJpbmcoKSA6ICcnKTtcblxuICAvLyBJbmNsdWRlIHN0YWNrIHRyYWNlIGluIGVycm9yIG9iamVjdFxuICBpZiAoRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UpIHtcbiAgICAvLyBDaHJvbWUgYW5kIE5vZGVKU1xuICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsIHRoaXMuY29uc3RydWN0b3IpO1xuICB9IGVsc2Uge1xuICAgIC8vIEZGLCBJRSAxMCsgYW5kIFNhZmFyaSA2Ky4gRmFsbGJhY2sgZm9yIG90aGVyc1xuICAgIHRoaXMuc3RhY2sgPSAobmV3IEVycm9yKCkpLnN0YWNrIHx8ICcnO1xuICB9XG59XG5cblxuLy8gSW5oZXJpdCBmcm9tIEVycm9yXG5ZQU1MRXhjZXB0aW9uLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoRXJyb3IucHJvdG90eXBlKTtcbllBTUxFeGNlcHRpb24ucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gWUFNTEV4Y2VwdGlvbjtcblxuXG5ZQU1MRXhjZXB0aW9uLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uIHRvU3RyaW5nKGNvbXBhY3QpIHtcbiAgdmFyIHJlc3VsdCA9IHRoaXMubmFtZSArICc6ICc7XG5cbiAgcmVzdWx0ICs9IHRoaXMucmVhc29uIHx8ICcodW5rbm93biByZWFzb24pJztcblxuICBpZiAoIWNvbXBhY3QgJiYgdGhpcy5tYXJrKSB7XG4gICAgcmVzdWx0ICs9ICcgJyArIHRoaXMubWFyay50b1N0cmluZygpO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cblxubW9kdWxlLmV4cG9ydHMgPSBZQU1MRXhjZXB0aW9uO1xuIiwgIid1c2Ugc3RyaWN0JztcblxuXG52YXIgY29tbW9uID0gcmVxdWlyZSgnLi9jb21tb24nKTtcblxuXG5mdW5jdGlvbiBNYXJrKG5hbWUsIGJ1ZmZlciwgcG9zaXRpb24sIGxpbmUsIGNvbHVtbikge1xuICB0aGlzLm5hbWUgICAgID0gbmFtZTtcbiAgdGhpcy5idWZmZXIgICA9IGJ1ZmZlcjtcbiAgdGhpcy5wb3NpdGlvbiA9IHBvc2l0aW9uO1xuICB0aGlzLmxpbmUgICAgID0gbGluZTtcbiAgdGhpcy5jb2x1bW4gICA9IGNvbHVtbjtcbn1cblxuXG5NYXJrLnByb3RvdHlwZS5nZXRTbmlwcGV0ID0gZnVuY3Rpb24gZ2V0U25pcHBldChpbmRlbnQsIG1heExlbmd0aCkge1xuICB2YXIgaGVhZCwgc3RhcnQsIHRhaWwsIGVuZCwgc25pcHBldDtcblxuICBpZiAoIXRoaXMuYnVmZmVyKSByZXR1cm4gbnVsbDtcblxuICBpbmRlbnQgPSBpbmRlbnQgfHwgNDtcbiAgbWF4TGVuZ3RoID0gbWF4TGVuZ3RoIHx8IDc1O1xuXG4gIGhlYWQgPSAnJztcbiAgc3RhcnQgPSB0aGlzLnBvc2l0aW9uO1xuXG4gIHdoaWxlIChzdGFydCA+IDAgJiYgJ1xceDAwXFxyXFxuXFx4ODVcXHUyMDI4XFx1MjAyOScuaW5kZXhPZih0aGlzLmJ1ZmZlci5jaGFyQXQoc3RhcnQgLSAxKSkgPT09IC0xKSB7XG4gICAgc3RhcnQgLT0gMTtcbiAgICBpZiAodGhpcy5wb3NpdGlvbiAtIHN0YXJ0ID4gKG1heExlbmd0aCAvIDIgLSAxKSkge1xuICAgICAgaGVhZCA9ICcgLi4uICc7XG4gICAgICBzdGFydCArPSA1O1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgdGFpbCA9ICcnO1xuICBlbmQgPSB0aGlzLnBvc2l0aW9uO1xuXG4gIHdoaWxlIChlbmQgPCB0aGlzLmJ1ZmZlci5sZW5ndGggJiYgJ1xceDAwXFxyXFxuXFx4ODVcXHUyMDI4XFx1MjAyOScuaW5kZXhPZih0aGlzLmJ1ZmZlci5jaGFyQXQoZW5kKSkgPT09IC0xKSB7XG4gICAgZW5kICs9IDE7XG4gICAgaWYgKGVuZCAtIHRoaXMucG9zaXRpb24gPiAobWF4TGVuZ3RoIC8gMiAtIDEpKSB7XG4gICAgICB0YWlsID0gJyAuLi4gJztcbiAgICAgIGVuZCAtPSA1O1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgc25pcHBldCA9IHRoaXMuYnVmZmVyLnNsaWNlKHN0YXJ0LCBlbmQpO1xuXG4gIHJldHVybiBjb21tb24ucmVwZWF0KCcgJywgaW5kZW50KSArIGhlYWQgKyBzbmlwcGV0ICsgdGFpbCArICdcXG4nICtcbiAgICAgICAgIGNvbW1vbi5yZXBlYXQoJyAnLCBpbmRlbnQgKyB0aGlzLnBvc2l0aW9uIC0gc3RhcnQgKyBoZWFkLmxlbmd0aCkgKyAnXic7XG59O1xuXG5cbk1hcmsucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gdG9TdHJpbmcoY29tcGFjdCkge1xuICB2YXIgc25pcHBldCwgd2hlcmUgPSAnJztcblxuICBpZiAodGhpcy5uYW1lKSB7XG4gICAgd2hlcmUgKz0gJ2luIFwiJyArIHRoaXMubmFtZSArICdcIiAnO1xuICB9XG5cbiAgd2hlcmUgKz0gJ2F0IGxpbmUgJyArICh0aGlzLmxpbmUgKyAxKSArICcsIGNvbHVtbiAnICsgKHRoaXMuY29sdW1uICsgMSk7XG5cbiAgaWYgKCFjb21wYWN0KSB7XG4gICAgc25pcHBldCA9IHRoaXMuZ2V0U25pcHBldCgpO1xuXG4gICAgaWYgKHNuaXBwZXQpIHtcbiAgICAgIHdoZXJlICs9ICc6XFxuJyArIHNuaXBwZXQ7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHdoZXJlO1xufTtcblxuXG5tb2R1bGUuZXhwb3J0cyA9IE1hcms7XG4iLCAiJ3VzZSBzdHJpY3QnO1xuXG52YXIgWUFNTEV4Y2VwdGlvbiA9IHJlcXVpcmUoJy4vZXhjZXB0aW9uJyk7XG5cbnZhciBUWVBFX0NPTlNUUlVDVE9SX09QVElPTlMgPSBbXG4gICdraW5kJyxcbiAgJ3Jlc29sdmUnLFxuICAnY29uc3RydWN0JyxcbiAgJ2luc3RhbmNlT2YnLFxuICAncHJlZGljYXRlJyxcbiAgJ3JlcHJlc2VudCcsXG4gICdkZWZhdWx0U3R5bGUnLFxuICAnc3R5bGVBbGlhc2VzJ1xuXTtcblxudmFyIFlBTUxfTk9ERV9LSU5EUyA9IFtcbiAgJ3NjYWxhcicsXG4gICdzZXF1ZW5jZScsXG4gICdtYXBwaW5nJ1xuXTtcblxuZnVuY3Rpb24gY29tcGlsZVN0eWxlQWxpYXNlcyhtYXApIHtcbiAgdmFyIHJlc3VsdCA9IHt9O1xuXG4gIGlmIChtYXAgIT09IG51bGwpIHtcbiAgICBPYmplY3Qua2V5cyhtYXApLmZvckVhY2goZnVuY3Rpb24gKHN0eWxlKSB7XG4gICAgICBtYXBbc3R5bGVdLmZvckVhY2goZnVuY3Rpb24gKGFsaWFzKSB7XG4gICAgICAgIHJlc3VsdFtTdHJpbmcoYWxpYXMpXSA9IHN0eWxlO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5mdW5jdGlvbiBUeXBlKHRhZywgb3B0aW9ucykge1xuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcblxuICBPYmplY3Qua2V5cyhvcHRpb25zKS5mb3JFYWNoKGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgaWYgKFRZUEVfQ09OU1RSVUNUT1JfT1BUSU9OUy5pbmRleE9mKG5hbWUpID09PSAtMSkge1xuICAgICAgdGhyb3cgbmV3IFlBTUxFeGNlcHRpb24oJ1Vua25vd24gb3B0aW9uIFwiJyArIG5hbWUgKyAnXCIgaXMgbWV0IGluIGRlZmluaXRpb24gb2YgXCInICsgdGFnICsgJ1wiIFlBTUwgdHlwZS4nKTtcbiAgICB9XG4gIH0pO1xuXG4gIC8vIFRPRE86IEFkZCB0YWcgZm9ybWF0IGNoZWNrLlxuICB0aGlzLnRhZyAgICAgICAgICA9IHRhZztcbiAgdGhpcy5raW5kICAgICAgICAgPSBvcHRpb25zWydraW5kJ10gICAgICAgICB8fCBudWxsO1xuICB0aGlzLnJlc29sdmUgICAgICA9IG9wdGlvbnNbJ3Jlc29sdmUnXSAgICAgIHx8IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRydWU7IH07XG4gIHRoaXMuY29uc3RydWN0ICAgID0gb3B0aW9uc1snY29uc3RydWN0J10gICAgfHwgZnVuY3Rpb24gKGRhdGEpIHsgcmV0dXJuIGRhdGE7IH07XG4gIHRoaXMuaW5zdGFuY2VPZiAgID0gb3B0aW9uc1snaW5zdGFuY2VPZiddICAgfHwgbnVsbDtcbiAgdGhpcy5wcmVkaWNhdGUgICAgPSBvcHRpb25zWydwcmVkaWNhdGUnXSAgICB8fCBudWxsO1xuICB0aGlzLnJlcHJlc2VudCAgICA9IG9wdGlvbnNbJ3JlcHJlc2VudCddICAgIHx8IG51bGw7XG4gIHRoaXMuZGVmYXVsdFN0eWxlID0gb3B0aW9uc1snZGVmYXVsdFN0eWxlJ10gfHwgbnVsbDtcbiAgdGhpcy5zdHlsZUFsaWFzZXMgPSBjb21waWxlU3R5bGVBbGlhc2VzKG9wdGlvbnNbJ3N0eWxlQWxpYXNlcyddIHx8IG51bGwpO1xuXG4gIGlmIChZQU1MX05PREVfS0lORFMuaW5kZXhPZih0aGlzLmtpbmQpID09PSAtMSkge1xuICAgIHRocm93IG5ldyBZQU1MRXhjZXB0aW9uKCdVbmtub3duIGtpbmQgXCInICsgdGhpcy5raW5kICsgJ1wiIGlzIHNwZWNpZmllZCBmb3IgXCInICsgdGFnICsgJ1wiIFlBTUwgdHlwZS4nKTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFR5cGU7XG4iLCAiJ3VzZSBzdHJpY3QnO1xuXG4vKmVzbGludC1kaXNhYmxlIG1heC1sZW4qL1xuXG52YXIgY29tbW9uICAgICAgICA9IHJlcXVpcmUoJy4vY29tbW9uJyk7XG52YXIgWUFNTEV4Y2VwdGlvbiA9IHJlcXVpcmUoJy4vZXhjZXB0aW9uJyk7XG52YXIgVHlwZSAgICAgICAgICA9IHJlcXVpcmUoJy4vdHlwZScpO1xuXG5cbmZ1bmN0aW9uIGNvbXBpbGVMaXN0KHNjaGVtYSwgbmFtZSwgcmVzdWx0KSB7XG4gIHZhciBleGNsdWRlID0gW107XG5cbiAgc2NoZW1hLmluY2x1ZGUuZm9yRWFjaChmdW5jdGlvbiAoaW5jbHVkZWRTY2hlbWEpIHtcbiAgICByZXN1bHQgPSBjb21waWxlTGlzdChpbmNsdWRlZFNjaGVtYSwgbmFtZSwgcmVzdWx0KTtcbiAgfSk7XG5cbiAgc2NoZW1hW25hbWVdLmZvckVhY2goZnVuY3Rpb24gKGN1cnJlbnRUeXBlKSB7XG4gICAgcmVzdWx0LmZvckVhY2goZnVuY3Rpb24gKHByZXZpb3VzVHlwZSwgcHJldmlvdXNJbmRleCkge1xuICAgICAgaWYgKHByZXZpb3VzVHlwZS50YWcgPT09IGN1cnJlbnRUeXBlLnRhZyAmJiBwcmV2aW91c1R5cGUua2luZCA9PT0gY3VycmVudFR5cGUua2luZCkge1xuICAgICAgICBleGNsdWRlLnB1c2gocHJldmlvdXNJbmRleCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXN1bHQucHVzaChjdXJyZW50VHlwZSk7XG4gIH0pO1xuXG4gIHJldHVybiByZXN1bHQuZmlsdGVyKGZ1bmN0aW9uICh0eXBlLCBpbmRleCkge1xuICAgIHJldHVybiBleGNsdWRlLmluZGV4T2YoaW5kZXgpID09PSAtMTtcbiAgfSk7XG59XG5cblxuZnVuY3Rpb24gY29tcGlsZU1hcCgvKiBsaXN0cy4uLiAqLykge1xuICB2YXIgcmVzdWx0ID0ge1xuICAgICAgICBzY2FsYXI6IHt9LFxuICAgICAgICBzZXF1ZW5jZToge30sXG4gICAgICAgIG1hcHBpbmc6IHt9LFxuICAgICAgICBmYWxsYmFjazoge31cbiAgICAgIH0sIGluZGV4LCBsZW5ndGg7XG5cbiAgZnVuY3Rpb24gY29sbGVjdFR5cGUodHlwZSkge1xuICAgIHJlc3VsdFt0eXBlLmtpbmRdW3R5cGUudGFnXSA9IHJlc3VsdFsnZmFsbGJhY2snXVt0eXBlLnRhZ10gPSB0eXBlO1xuICB9XG5cbiAgZm9yIChpbmRleCA9IDAsIGxlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGg7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCArPSAxKSB7XG4gICAgYXJndW1lbnRzW2luZGV4XS5mb3JFYWNoKGNvbGxlY3RUeXBlKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5cbmZ1bmN0aW9uIFNjaGVtYShkZWZpbml0aW9uKSB7XG4gIHRoaXMuaW5jbHVkZSAgPSBkZWZpbml0aW9uLmluY2x1ZGUgIHx8IFtdO1xuICB0aGlzLmltcGxpY2l0ID0gZGVmaW5pdGlvbi5pbXBsaWNpdCB8fCBbXTtcbiAgdGhpcy5leHBsaWNpdCA9IGRlZmluaXRpb24uZXhwbGljaXQgfHwgW107XG5cbiAgdGhpcy5pbXBsaWNpdC5mb3JFYWNoKGZ1bmN0aW9uICh0eXBlKSB7XG4gICAgaWYgKHR5cGUubG9hZEtpbmQgJiYgdHlwZS5sb2FkS2luZCAhPT0gJ3NjYWxhcicpIHtcbiAgICAgIHRocm93IG5ldyBZQU1MRXhjZXB0aW9uKCdUaGVyZSBpcyBhIG5vbi1zY2FsYXIgdHlwZSBpbiB0aGUgaW1wbGljaXQgbGlzdCBvZiBhIHNjaGVtYS4gSW1wbGljaXQgcmVzb2x2aW5nIG9mIHN1Y2ggdHlwZXMgaXMgbm90IHN1cHBvcnRlZC4nKTtcbiAgICB9XG4gIH0pO1xuXG4gIHRoaXMuY29tcGlsZWRJbXBsaWNpdCA9IGNvbXBpbGVMaXN0KHRoaXMsICdpbXBsaWNpdCcsIFtdKTtcbiAgdGhpcy5jb21waWxlZEV4cGxpY2l0ID0gY29tcGlsZUxpc3QodGhpcywgJ2V4cGxpY2l0JywgW10pO1xuICB0aGlzLmNvbXBpbGVkVHlwZU1hcCAgPSBjb21waWxlTWFwKHRoaXMuY29tcGlsZWRJbXBsaWNpdCwgdGhpcy5jb21waWxlZEV4cGxpY2l0KTtcbn1cblxuXG5TY2hlbWEuREVGQVVMVCA9IG51bGw7XG5cblxuU2NoZW1hLmNyZWF0ZSA9IGZ1bmN0aW9uIGNyZWF0ZVNjaGVtYSgpIHtcbiAgdmFyIHNjaGVtYXMsIHR5cGVzO1xuXG4gIHN3aXRjaCAoYXJndW1lbnRzLmxlbmd0aCkge1xuICAgIGNhc2UgMTpcbiAgICAgIHNjaGVtYXMgPSBTY2hlbWEuREVGQVVMVDtcbiAgICAgIHR5cGVzID0gYXJndW1lbnRzWzBdO1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlIDI6XG4gICAgICBzY2hlbWFzID0gYXJndW1lbnRzWzBdO1xuICAgICAgdHlwZXMgPSBhcmd1bWVudHNbMV07XG4gICAgICBicmVhaztcblxuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgWUFNTEV4Y2VwdGlvbignV3JvbmcgbnVtYmVyIG9mIGFyZ3VtZW50cyBmb3IgU2NoZW1hLmNyZWF0ZSBmdW5jdGlvbicpO1xuICB9XG5cbiAgc2NoZW1hcyA9IGNvbW1vbi50b0FycmF5KHNjaGVtYXMpO1xuICB0eXBlcyA9IGNvbW1vbi50b0FycmF5KHR5cGVzKTtcblxuICBpZiAoIXNjaGVtYXMuZXZlcnkoZnVuY3Rpb24gKHNjaGVtYSkgeyByZXR1cm4gc2NoZW1hIGluc3RhbmNlb2YgU2NoZW1hOyB9KSkge1xuICAgIHRocm93IG5ldyBZQU1MRXhjZXB0aW9uKCdTcGVjaWZpZWQgbGlzdCBvZiBzdXBlciBzY2hlbWFzIChvciBhIHNpbmdsZSBTY2hlbWEgb2JqZWN0KSBjb250YWlucyBhIG5vbi1TY2hlbWEgb2JqZWN0LicpO1xuICB9XG5cbiAgaWYgKCF0eXBlcy5ldmVyeShmdW5jdGlvbiAodHlwZSkgeyByZXR1cm4gdHlwZSBpbnN0YW5jZW9mIFR5cGU7IH0pKSB7XG4gICAgdGhyb3cgbmV3IFlBTUxFeGNlcHRpb24oJ1NwZWNpZmllZCBsaXN0IG9mIFlBTUwgdHlwZXMgKG9yIGEgc2luZ2xlIFR5cGUgb2JqZWN0KSBjb250YWlucyBhIG5vbi1UeXBlIG9iamVjdC4nKTtcbiAgfVxuXG4gIHJldHVybiBuZXcgU2NoZW1hKHtcbiAgICBpbmNsdWRlOiBzY2hlbWFzLFxuICAgIGV4cGxpY2l0OiB0eXBlc1xuICB9KTtcbn07XG5cblxubW9kdWxlLmV4cG9ydHMgPSBTY2hlbWE7XG4iLCAiJ3VzZSBzdHJpY3QnO1xuXG52YXIgVHlwZSA9IHJlcXVpcmUoJy4uL3R5cGUnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgVHlwZSgndGFnOnlhbWwub3JnLDIwMDI6c3RyJywge1xuICBraW5kOiAnc2NhbGFyJyxcbiAgY29uc3RydWN0OiBmdW5jdGlvbiAoZGF0YSkgeyByZXR1cm4gZGF0YSAhPT0gbnVsbCA/IGRhdGEgOiAnJzsgfVxufSk7XG4iLCAiJ3VzZSBzdHJpY3QnO1xuXG52YXIgVHlwZSA9IHJlcXVpcmUoJy4uL3R5cGUnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgVHlwZSgndGFnOnlhbWwub3JnLDIwMDI6c2VxJywge1xuICBraW5kOiAnc2VxdWVuY2UnLFxuICBjb25zdHJ1Y3Q6IGZ1bmN0aW9uIChkYXRhKSB7IHJldHVybiBkYXRhICE9PSBudWxsID8gZGF0YSA6IFtdOyB9XG59KTtcbiIsICIndXNlIHN0cmljdCc7XG5cbnZhciBUeXBlID0gcmVxdWlyZSgnLi4vdHlwZScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IG5ldyBUeXBlKCd0YWc6eWFtbC5vcmcsMjAwMjptYXAnLCB7XG4gIGtpbmQ6ICdtYXBwaW5nJyxcbiAgY29uc3RydWN0OiBmdW5jdGlvbiAoZGF0YSkgeyByZXR1cm4gZGF0YSAhPT0gbnVsbCA/IGRhdGEgOiB7fTsgfVxufSk7XG4iLCAiLy8gU3RhbmRhcmQgWUFNTCdzIEZhaWxzYWZlIHNjaGVtYS5cbi8vIGh0dHA6Ly93d3cueWFtbC5vcmcvc3BlYy8xLjIvc3BlYy5odG1sI2lkMjgwMjM0NlxuXG5cbid1c2Ugc3RyaWN0JztcblxuXG52YXIgU2NoZW1hID0gcmVxdWlyZSgnLi4vc2NoZW1hJyk7XG5cblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgU2NoZW1hKHtcbiAgZXhwbGljaXQ6IFtcbiAgICByZXF1aXJlKCcuLi90eXBlL3N0cicpLFxuICAgIHJlcXVpcmUoJy4uL3R5cGUvc2VxJyksXG4gICAgcmVxdWlyZSgnLi4vdHlwZS9tYXAnKVxuICBdXG59KTtcbiIsICIndXNlIHN0cmljdCc7XG5cbnZhciBUeXBlID0gcmVxdWlyZSgnLi4vdHlwZScpO1xuXG5mdW5jdGlvbiByZXNvbHZlWWFtbE51bGwoZGF0YSkge1xuICBpZiAoZGF0YSA9PT0gbnVsbCkgcmV0dXJuIHRydWU7XG5cbiAgdmFyIG1heCA9IGRhdGEubGVuZ3RoO1xuXG4gIHJldHVybiAobWF4ID09PSAxICYmIGRhdGEgPT09ICd+JykgfHxcbiAgICAgICAgIChtYXggPT09IDQgJiYgKGRhdGEgPT09ICdudWxsJyB8fCBkYXRhID09PSAnTnVsbCcgfHwgZGF0YSA9PT0gJ05VTEwnKSk7XG59XG5cbmZ1bmN0aW9uIGNvbnN0cnVjdFlhbWxOdWxsKCkge1xuICByZXR1cm4gbnVsbDtcbn1cblxuZnVuY3Rpb24gaXNOdWxsKG9iamVjdCkge1xuICByZXR1cm4gb2JqZWN0ID09PSBudWxsO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG5ldyBUeXBlKCd0YWc6eWFtbC5vcmcsMjAwMjpudWxsJywge1xuICBraW5kOiAnc2NhbGFyJyxcbiAgcmVzb2x2ZTogcmVzb2x2ZVlhbWxOdWxsLFxuICBjb25zdHJ1Y3Q6IGNvbnN0cnVjdFlhbWxOdWxsLFxuICBwcmVkaWNhdGU6IGlzTnVsbCxcbiAgcmVwcmVzZW50OiB7XG4gICAgY2Fub25pY2FsOiBmdW5jdGlvbiAoKSB7IHJldHVybiAnfic7ICAgIH0sXG4gICAgbG93ZXJjYXNlOiBmdW5jdGlvbiAoKSB7IHJldHVybiAnbnVsbCc7IH0sXG4gICAgdXBwZXJjYXNlOiBmdW5jdGlvbiAoKSB7IHJldHVybiAnTlVMTCc7IH0sXG4gICAgY2FtZWxjYXNlOiBmdW5jdGlvbiAoKSB7IHJldHVybiAnTnVsbCc7IH1cbiAgfSxcbiAgZGVmYXVsdFN0eWxlOiAnbG93ZXJjYXNlJ1xufSk7XG4iLCAiJ3VzZSBzdHJpY3QnO1xuXG52YXIgVHlwZSA9IHJlcXVpcmUoJy4uL3R5cGUnKTtcblxuZnVuY3Rpb24gcmVzb2x2ZVlhbWxCb29sZWFuKGRhdGEpIHtcbiAgaWYgKGRhdGEgPT09IG51bGwpIHJldHVybiBmYWxzZTtcblxuICB2YXIgbWF4ID0gZGF0YS5sZW5ndGg7XG5cbiAgcmV0dXJuIChtYXggPT09IDQgJiYgKGRhdGEgPT09ICd0cnVlJyB8fCBkYXRhID09PSAnVHJ1ZScgfHwgZGF0YSA9PT0gJ1RSVUUnKSkgfHxcbiAgICAgICAgIChtYXggPT09IDUgJiYgKGRhdGEgPT09ICdmYWxzZScgfHwgZGF0YSA9PT0gJ0ZhbHNlJyB8fCBkYXRhID09PSAnRkFMU0UnKSk7XG59XG5cbmZ1bmN0aW9uIGNvbnN0cnVjdFlhbWxCb29sZWFuKGRhdGEpIHtcbiAgcmV0dXJuIGRhdGEgPT09ICd0cnVlJyB8fFxuICAgICAgICAgZGF0YSA9PT0gJ1RydWUnIHx8XG4gICAgICAgICBkYXRhID09PSAnVFJVRSc7XG59XG5cbmZ1bmN0aW9uIGlzQm9vbGVhbihvYmplY3QpIHtcbiAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvYmplY3QpID09PSAnW29iamVjdCBCb29sZWFuXSc7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbmV3IFR5cGUoJ3RhZzp5YW1sLm9yZywyMDAyOmJvb2wnLCB7XG4gIGtpbmQ6ICdzY2FsYXInLFxuICByZXNvbHZlOiByZXNvbHZlWWFtbEJvb2xlYW4sXG4gIGNvbnN0cnVjdDogY29uc3RydWN0WWFtbEJvb2xlYW4sXG4gIHByZWRpY2F0ZTogaXNCb29sZWFuLFxuICByZXByZXNlbnQ6IHtcbiAgICBsb3dlcmNhc2U6IGZ1bmN0aW9uIChvYmplY3QpIHsgcmV0dXJuIG9iamVjdCA/ICd0cnVlJyA6ICdmYWxzZSc7IH0sXG4gICAgdXBwZXJjYXNlOiBmdW5jdGlvbiAob2JqZWN0KSB7IHJldHVybiBvYmplY3QgPyAnVFJVRScgOiAnRkFMU0UnOyB9LFxuICAgIGNhbWVsY2FzZTogZnVuY3Rpb24gKG9iamVjdCkgeyByZXR1cm4gb2JqZWN0ID8gJ1RydWUnIDogJ0ZhbHNlJzsgfVxuICB9LFxuICBkZWZhdWx0U3R5bGU6ICdsb3dlcmNhc2UnXG59KTtcbiIsICIndXNlIHN0cmljdCc7XG5cbnZhciBjb21tb24gPSByZXF1aXJlKCcuLi9jb21tb24nKTtcbnZhciBUeXBlICAgPSByZXF1aXJlKCcuLi90eXBlJyk7XG5cbmZ1bmN0aW9uIGlzSGV4Q29kZShjKSB7XG4gIHJldHVybiAoKDB4MzAvKiAwICovIDw9IGMpICYmIChjIDw9IDB4MzkvKiA5ICovKSkgfHxcbiAgICAgICAgICgoMHg0MS8qIEEgKi8gPD0gYykgJiYgKGMgPD0gMHg0Ni8qIEYgKi8pKSB8fFxuICAgICAgICAgKCgweDYxLyogYSAqLyA8PSBjKSAmJiAoYyA8PSAweDY2LyogZiAqLykpO1xufVxuXG5mdW5jdGlvbiBpc09jdENvZGUoYykge1xuICByZXR1cm4gKCgweDMwLyogMCAqLyA8PSBjKSAmJiAoYyA8PSAweDM3LyogNyAqLykpO1xufVxuXG5mdW5jdGlvbiBpc0RlY0NvZGUoYykge1xuICByZXR1cm4gKCgweDMwLyogMCAqLyA8PSBjKSAmJiAoYyA8PSAweDM5LyogOSAqLykpO1xufVxuXG5mdW5jdGlvbiByZXNvbHZlWWFtbEludGVnZXIoZGF0YSkge1xuICBpZiAoZGF0YSA9PT0gbnVsbCkgcmV0dXJuIGZhbHNlO1xuXG4gIHZhciBtYXggPSBkYXRhLmxlbmd0aCxcbiAgICAgIGluZGV4ID0gMCxcbiAgICAgIGhhc0RpZ2l0cyA9IGZhbHNlLFxuICAgICAgY2g7XG5cbiAgaWYgKCFtYXgpIHJldHVybiBmYWxzZTtcblxuICBjaCA9IGRhdGFbaW5kZXhdO1xuXG4gIC8vIHNpZ25cbiAgaWYgKGNoID09PSAnLScgfHwgY2ggPT09ICcrJykge1xuICAgIGNoID0gZGF0YVsrK2luZGV4XTtcbiAgfVxuXG4gIGlmIChjaCA9PT0gJzAnKSB7XG4gICAgLy8gMFxuICAgIGlmIChpbmRleCArIDEgPT09IG1heCkgcmV0dXJuIHRydWU7XG4gICAgY2ggPSBkYXRhWysraW5kZXhdO1xuXG4gICAgLy8gYmFzZSAyLCBiYXNlIDgsIGJhc2UgMTZcblxuICAgIGlmIChjaCA9PT0gJ2InKSB7XG4gICAgICAvLyBiYXNlIDJcbiAgICAgIGluZGV4Kys7XG5cbiAgICAgIGZvciAoOyBpbmRleCA8IG1heDsgaW5kZXgrKykge1xuICAgICAgICBjaCA9IGRhdGFbaW5kZXhdO1xuICAgICAgICBpZiAoY2ggPT09ICdfJykgY29udGludWU7XG4gICAgICAgIGlmIChjaCAhPT0gJzAnICYmIGNoICE9PSAnMScpIHJldHVybiBmYWxzZTtcbiAgICAgICAgaGFzRGlnaXRzID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBoYXNEaWdpdHMgJiYgY2ggIT09ICdfJztcbiAgICB9XG5cblxuICAgIGlmIChjaCA9PT0gJ3gnKSB7XG4gICAgICAvLyBiYXNlIDE2XG4gICAgICBpbmRleCsrO1xuXG4gICAgICBmb3IgKDsgaW5kZXggPCBtYXg7IGluZGV4KyspIHtcbiAgICAgICAgY2ggPSBkYXRhW2luZGV4XTtcbiAgICAgICAgaWYgKGNoID09PSAnXycpIGNvbnRpbnVlO1xuICAgICAgICBpZiAoIWlzSGV4Q29kZShkYXRhLmNoYXJDb2RlQXQoaW5kZXgpKSkgcmV0dXJuIGZhbHNlO1xuICAgICAgICBoYXNEaWdpdHMgPSB0cnVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGhhc0RpZ2l0cyAmJiBjaCAhPT0gJ18nO1xuICAgIH1cblxuICAgIC8vIGJhc2UgOFxuICAgIGZvciAoOyBpbmRleCA8IG1heDsgaW5kZXgrKykge1xuICAgICAgY2ggPSBkYXRhW2luZGV4XTtcbiAgICAgIGlmIChjaCA9PT0gJ18nKSBjb250aW51ZTtcbiAgICAgIGlmICghaXNPY3RDb2RlKGRhdGEuY2hhckNvZGVBdChpbmRleCkpKSByZXR1cm4gZmFsc2U7XG4gICAgICBoYXNEaWdpdHMgPSB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gaGFzRGlnaXRzICYmIGNoICE9PSAnXyc7XG4gIH1cblxuICAvLyBiYXNlIDEwIChleGNlcHQgMCkgb3IgYmFzZSA2MFxuXG4gIC8vIHZhbHVlIHNob3VsZCBub3Qgc3RhcnQgd2l0aCBgX2A7XG4gIGlmIChjaCA9PT0gJ18nKSByZXR1cm4gZmFsc2U7XG5cbiAgZm9yICg7IGluZGV4IDwgbWF4OyBpbmRleCsrKSB7XG4gICAgY2ggPSBkYXRhW2luZGV4XTtcbiAgICBpZiAoY2ggPT09ICdfJykgY29udGludWU7XG4gICAgaWYgKGNoID09PSAnOicpIGJyZWFrO1xuICAgIGlmICghaXNEZWNDb2RlKGRhdGEuY2hhckNvZGVBdChpbmRleCkpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGhhc0RpZ2l0cyA9IHRydWU7XG4gIH1cblxuICAvLyBTaG91bGQgaGF2ZSBkaWdpdHMgYW5kIHNob3VsZCBub3QgZW5kIHdpdGggYF9gXG4gIGlmICghaGFzRGlnaXRzIHx8IGNoID09PSAnXycpIHJldHVybiBmYWxzZTtcblxuICAvLyBpZiAhYmFzZTYwIC0gZG9uZTtcbiAgaWYgKGNoICE9PSAnOicpIHJldHVybiB0cnVlO1xuXG4gIC8vIGJhc2U2MCBhbG1vc3Qgbm90IHVzZWQsIG5vIG5lZWRzIHRvIG9wdGltaXplXG4gIHJldHVybiAvXig6WzAtNV0/WzAtOV0pKyQvLnRlc3QoZGF0YS5zbGljZShpbmRleCkpO1xufVxuXG5mdW5jdGlvbiBjb25zdHJ1Y3RZYW1sSW50ZWdlcihkYXRhKSB7XG4gIHZhciB2YWx1ZSA9IGRhdGEsIHNpZ24gPSAxLCBjaCwgYmFzZSwgZGlnaXRzID0gW107XG5cbiAgaWYgKHZhbHVlLmluZGV4T2YoJ18nKSAhPT0gLTEpIHtcbiAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoL18vZywgJycpO1xuICB9XG5cbiAgY2ggPSB2YWx1ZVswXTtcblxuICBpZiAoY2ggPT09ICctJyB8fCBjaCA9PT0gJysnKSB7XG4gICAgaWYgKGNoID09PSAnLScpIHNpZ24gPSAtMTtcbiAgICB2YWx1ZSA9IHZhbHVlLnNsaWNlKDEpO1xuICAgIGNoID0gdmFsdWVbMF07XG4gIH1cblxuICBpZiAodmFsdWUgPT09ICcwJykgcmV0dXJuIDA7XG5cbiAgaWYgKGNoID09PSAnMCcpIHtcbiAgICBpZiAodmFsdWVbMV0gPT09ICdiJykgcmV0dXJuIHNpZ24gKiBwYXJzZUludCh2YWx1ZS5zbGljZSgyKSwgMik7XG4gICAgaWYgKHZhbHVlWzFdID09PSAneCcpIHJldHVybiBzaWduICogcGFyc2VJbnQodmFsdWUsIDE2KTtcbiAgICByZXR1cm4gc2lnbiAqIHBhcnNlSW50KHZhbHVlLCA4KTtcbiAgfVxuXG4gIGlmICh2YWx1ZS5pbmRleE9mKCc6JykgIT09IC0xKSB7XG4gICAgdmFsdWUuc3BsaXQoJzonKS5mb3JFYWNoKGZ1bmN0aW9uICh2KSB7XG4gICAgICBkaWdpdHMudW5zaGlmdChwYXJzZUludCh2LCAxMCkpO1xuICAgIH0pO1xuXG4gICAgdmFsdWUgPSAwO1xuICAgIGJhc2UgPSAxO1xuXG4gICAgZGlnaXRzLmZvckVhY2goZnVuY3Rpb24gKGQpIHtcbiAgICAgIHZhbHVlICs9IChkICogYmFzZSk7XG4gICAgICBiYXNlICo9IDYwO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHNpZ24gKiB2YWx1ZTtcblxuICB9XG5cbiAgcmV0dXJuIHNpZ24gKiBwYXJzZUludCh2YWx1ZSwgMTApO1xufVxuXG5mdW5jdGlvbiBpc0ludGVnZXIob2JqZWN0KSB7XG4gIHJldHVybiAoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG9iamVjdCkpID09PSAnW29iamVjdCBOdW1iZXJdJyAmJlxuICAgICAgICAgKG9iamVjdCAlIDEgPT09IDAgJiYgIWNvbW1vbi5pc05lZ2F0aXZlWmVybyhvYmplY3QpKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgVHlwZSgndGFnOnlhbWwub3JnLDIwMDI6aW50Jywge1xuICBraW5kOiAnc2NhbGFyJyxcbiAgcmVzb2x2ZTogcmVzb2x2ZVlhbWxJbnRlZ2VyLFxuICBjb25zdHJ1Y3Q6IGNvbnN0cnVjdFlhbWxJbnRlZ2VyLFxuICBwcmVkaWNhdGU6IGlzSW50ZWdlcixcbiAgcmVwcmVzZW50OiB7XG4gICAgYmluYXJ5OiAgICAgIGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIG9iaiA+PSAwID8gJzBiJyArIG9iai50b1N0cmluZygyKSA6ICctMGInICsgb2JqLnRvU3RyaW5nKDIpLnNsaWNlKDEpOyB9LFxuICAgIG9jdGFsOiAgICAgICBmdW5jdGlvbiAob2JqKSB7IHJldHVybiBvYmogPj0gMCA/ICcwJyAgKyBvYmoudG9TdHJpbmcoOCkgOiAnLTAnICArIG9iai50b1N0cmluZyg4KS5zbGljZSgxKTsgfSxcbiAgICBkZWNpbWFsOiAgICAgZnVuY3Rpb24gKG9iaikgeyByZXR1cm4gb2JqLnRvU3RyaW5nKDEwKTsgfSxcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuICovXG4gICAgaGV4YWRlY2ltYWw6IGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIG9iaiA+PSAwID8gJzB4JyArIG9iai50b1N0cmluZygxNikudG9VcHBlckNhc2UoKSA6ICAnLTB4JyArIG9iai50b1N0cmluZygxNikudG9VcHBlckNhc2UoKS5zbGljZSgxKTsgfVxuICB9LFxuICBkZWZhdWx0U3R5bGU6ICdkZWNpbWFsJyxcbiAgc3R5bGVBbGlhc2VzOiB7XG4gICAgYmluYXJ5OiAgICAgIFsgMiwgICdiaW4nIF0sXG4gICAgb2N0YWw6ICAgICAgIFsgOCwgICdvY3QnIF0sXG4gICAgZGVjaW1hbDogICAgIFsgMTAsICdkZWMnIF0sXG4gICAgaGV4YWRlY2ltYWw6IFsgMTYsICdoZXgnIF1cbiAgfVxufSk7XG4iLCAiJ3VzZSBzdHJpY3QnO1xuXG52YXIgY29tbW9uID0gcmVxdWlyZSgnLi4vY29tbW9uJyk7XG52YXIgVHlwZSAgID0gcmVxdWlyZSgnLi4vdHlwZScpO1xuXG52YXIgWUFNTF9GTE9BVF9QQVRURVJOID0gbmV3IFJlZ0V4cChcbiAgLy8gMi41ZTQsIDIuNSBhbmQgaW50ZWdlcnNcbiAgJ14oPzpbLStdPyg/OjB8WzEtOV1bMC05X10qKSg/OlxcXFwuWzAtOV9dKik/KD86W2VFXVstK10/WzAtOV0rKT8nICtcbiAgLy8gLjJlNCwgLjJcbiAgLy8gc3BlY2lhbCBjYXNlLCBzZWVtcyBub3QgZnJvbSBzcGVjXG4gICd8XFxcXC5bMC05X10rKD86W2VFXVstK10/WzAtOV0rKT8nICtcbiAgLy8gMjA6NTlcbiAgJ3xbLStdP1swLTldWzAtOV9dKig/OjpbMC01XT9bMC05XSkrXFxcXC5bMC05X10qJyArXG4gIC8vIC5pbmZcbiAgJ3xbLStdP1xcXFwuKD86aW5mfEluZnxJTkYpJyArXG4gIC8vIC5uYW5cbiAgJ3xcXFxcLig/Om5hbnxOYU58TkFOKSkkJyk7XG5cbmZ1bmN0aW9uIHJlc29sdmVZYW1sRmxvYXQoZGF0YSkge1xuICBpZiAoZGF0YSA9PT0gbnVsbCkgcmV0dXJuIGZhbHNlO1xuXG4gIGlmICghWUFNTF9GTE9BVF9QQVRURVJOLnRlc3QoZGF0YSkgfHxcbiAgICAgIC8vIFF1aWNrIGhhY2sgdG8gbm90IGFsbG93IGludGVnZXJzIGVuZCB3aXRoIGBfYFxuICAgICAgLy8gUHJvYmFibHkgc2hvdWxkIHVwZGF0ZSByZWdleHAgJiBjaGVjayBzcGVlZFxuICAgICAgZGF0YVtkYXRhLmxlbmd0aCAtIDFdID09PSAnXycpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gY29uc3RydWN0WWFtbEZsb2F0KGRhdGEpIHtcbiAgdmFyIHZhbHVlLCBzaWduLCBiYXNlLCBkaWdpdHM7XG5cbiAgdmFsdWUgID0gZGF0YS5yZXBsYWNlKC9fL2csICcnKS50b0xvd2VyQ2FzZSgpO1xuICBzaWduICAgPSB2YWx1ZVswXSA9PT0gJy0nID8gLTEgOiAxO1xuICBkaWdpdHMgPSBbXTtcblxuICBpZiAoJystJy5pbmRleE9mKHZhbHVlWzBdKSA+PSAwKSB7XG4gICAgdmFsdWUgPSB2YWx1ZS5zbGljZSgxKTtcbiAgfVxuXG4gIGlmICh2YWx1ZSA9PT0gJy5pbmYnKSB7XG4gICAgcmV0dXJuIChzaWduID09PSAxKSA/IE51bWJlci5QT1NJVElWRV9JTkZJTklUWSA6IE51bWJlci5ORUdBVElWRV9JTkZJTklUWTtcblxuICB9IGVsc2UgaWYgKHZhbHVlID09PSAnLm5hbicpIHtcbiAgICByZXR1cm4gTmFOO1xuXG4gIH0gZWxzZSBpZiAodmFsdWUuaW5kZXhPZignOicpID49IDApIHtcbiAgICB2YWx1ZS5zcGxpdCgnOicpLmZvckVhY2goZnVuY3Rpb24gKHYpIHtcbiAgICAgIGRpZ2l0cy51bnNoaWZ0KHBhcnNlRmxvYXQodiwgMTApKTtcbiAgICB9KTtcblxuICAgIHZhbHVlID0gMC4wO1xuICAgIGJhc2UgPSAxO1xuXG4gICAgZGlnaXRzLmZvckVhY2goZnVuY3Rpb24gKGQpIHtcbiAgICAgIHZhbHVlICs9IGQgKiBiYXNlO1xuICAgICAgYmFzZSAqPSA2MDtcbiAgICB9KTtcblxuICAgIHJldHVybiBzaWduICogdmFsdWU7XG5cbiAgfVxuICByZXR1cm4gc2lnbiAqIHBhcnNlRmxvYXQodmFsdWUsIDEwKTtcbn1cblxuXG52YXIgU0NJRU5USUZJQ19XSVRIT1VUX0RPVCA9IC9eWy0rXT9bMC05XStlLztcblxuZnVuY3Rpb24gcmVwcmVzZW50WWFtbEZsb2F0KG9iamVjdCwgc3R5bGUpIHtcbiAgdmFyIHJlcztcblxuICBpZiAoaXNOYU4ob2JqZWN0KSkge1xuICAgIHN3aXRjaCAoc3R5bGUpIHtcbiAgICAgIGNhc2UgJ2xvd2VyY2FzZSc6IHJldHVybiAnLm5hbic7XG4gICAgICBjYXNlICd1cHBlcmNhc2UnOiByZXR1cm4gJy5OQU4nO1xuICAgICAgY2FzZSAnY2FtZWxjYXNlJzogcmV0dXJuICcuTmFOJztcbiAgICB9XG4gIH0gZWxzZSBpZiAoTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZID09PSBvYmplY3QpIHtcbiAgICBzd2l0Y2ggKHN0eWxlKSB7XG4gICAgICBjYXNlICdsb3dlcmNhc2UnOiByZXR1cm4gJy5pbmYnO1xuICAgICAgY2FzZSAndXBwZXJjYXNlJzogcmV0dXJuICcuSU5GJztcbiAgICAgIGNhc2UgJ2NhbWVsY2FzZSc6IHJldHVybiAnLkluZic7XG4gICAgfVxuICB9IGVsc2UgaWYgKE51bWJlci5ORUdBVElWRV9JTkZJTklUWSA9PT0gb2JqZWN0KSB7XG4gICAgc3dpdGNoIChzdHlsZSkge1xuICAgICAgY2FzZSAnbG93ZXJjYXNlJzogcmV0dXJuICctLmluZic7XG4gICAgICBjYXNlICd1cHBlcmNhc2UnOiByZXR1cm4gJy0uSU5GJztcbiAgICAgIGNhc2UgJ2NhbWVsY2FzZSc6IHJldHVybiAnLS5JbmYnO1xuICAgIH1cbiAgfSBlbHNlIGlmIChjb21tb24uaXNOZWdhdGl2ZVplcm8ob2JqZWN0KSkge1xuICAgIHJldHVybiAnLTAuMCc7XG4gIH1cblxuICByZXMgPSBvYmplY3QudG9TdHJpbmcoMTApO1xuXG4gIC8vIEpTIHN0cmluZ2lmaWVyIGNhbiBidWlsZCBzY2llbnRpZmljIGZvcm1hdCB3aXRob3V0IGRvdHM6IDVlLTEwMCxcbiAgLy8gd2hpbGUgWUFNTCByZXF1cmVzIGRvdDogNS5lLTEwMC4gRml4IGl0IHdpdGggc2ltcGxlIGhhY2tcblxuICByZXR1cm4gU0NJRU5USUZJQ19XSVRIT1VUX0RPVC50ZXN0KHJlcykgPyByZXMucmVwbGFjZSgnZScsICcuZScpIDogcmVzO1xufVxuXG5mdW5jdGlvbiBpc0Zsb2F0KG9iamVjdCkge1xuICByZXR1cm4gKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvYmplY3QpID09PSAnW29iamVjdCBOdW1iZXJdJykgJiZcbiAgICAgICAgIChvYmplY3QgJSAxICE9PSAwIHx8IGNvbW1vbi5pc05lZ2F0aXZlWmVybyhvYmplY3QpKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgVHlwZSgndGFnOnlhbWwub3JnLDIwMDI6ZmxvYXQnLCB7XG4gIGtpbmQ6ICdzY2FsYXInLFxuICByZXNvbHZlOiByZXNvbHZlWWFtbEZsb2F0LFxuICBjb25zdHJ1Y3Q6IGNvbnN0cnVjdFlhbWxGbG9hdCxcbiAgcHJlZGljYXRlOiBpc0Zsb2F0LFxuICByZXByZXNlbnQ6IHJlcHJlc2VudFlhbWxGbG9hdCxcbiAgZGVmYXVsdFN0eWxlOiAnbG93ZXJjYXNlJ1xufSk7XG4iLCAiLy8gU3RhbmRhcmQgWUFNTCdzIEpTT04gc2NoZW1hLlxuLy8gaHR0cDovL3d3dy55YW1sLm9yZy9zcGVjLzEuMi9zcGVjLmh0bWwjaWQyODAzMjMxXG4vL1xuLy8gTk9URTogSlMtWUFNTCBkb2VzIG5vdCBzdXBwb3J0IHNjaGVtYS1zcGVjaWZpYyB0YWcgcmVzb2x1dGlvbiByZXN0cmljdGlvbnMuXG4vLyBTbywgdGhpcyBzY2hlbWEgaXMgbm90IHN1Y2ggc3RyaWN0IGFzIGRlZmluZWQgaW4gdGhlIFlBTUwgc3BlY2lmaWNhdGlvbi5cbi8vIEl0IGFsbG93cyBudW1iZXJzIGluIGJpbmFyeSBub3RhaW9uLCB1c2UgYE51bGxgIGFuZCBgTlVMTGAgYXMgYG51bGxgLCBldGMuXG5cblxuJ3VzZSBzdHJpY3QnO1xuXG5cbnZhciBTY2hlbWEgPSByZXF1aXJlKCcuLi9zY2hlbWEnKTtcblxuXG5tb2R1bGUuZXhwb3J0cyA9IG5ldyBTY2hlbWEoe1xuICBpbmNsdWRlOiBbXG4gICAgcmVxdWlyZSgnLi9mYWlsc2FmZScpXG4gIF0sXG4gIGltcGxpY2l0OiBbXG4gICAgcmVxdWlyZSgnLi4vdHlwZS9udWxsJyksXG4gICAgcmVxdWlyZSgnLi4vdHlwZS9ib29sJyksXG4gICAgcmVxdWlyZSgnLi4vdHlwZS9pbnQnKSxcbiAgICByZXF1aXJlKCcuLi90eXBlL2Zsb2F0JylcbiAgXVxufSk7XG4iLCAiLy8gU3RhbmRhcmQgWUFNTCdzIENvcmUgc2NoZW1hLlxuLy8gaHR0cDovL3d3dy55YW1sLm9yZy9zcGVjLzEuMi9zcGVjLmh0bWwjaWQyODA0OTIzXG4vL1xuLy8gTk9URTogSlMtWUFNTCBkb2VzIG5vdCBzdXBwb3J0IHNjaGVtYS1zcGVjaWZpYyB0YWcgcmVzb2x1dGlvbiByZXN0cmljdGlvbnMuXG4vLyBTbywgQ29yZSBzY2hlbWEgaGFzIG5vIGRpc3RpbmN0aW9ucyBmcm9tIEpTT04gc2NoZW1hIGlzIEpTLVlBTUwuXG5cblxuJ3VzZSBzdHJpY3QnO1xuXG5cbnZhciBTY2hlbWEgPSByZXF1aXJlKCcuLi9zY2hlbWEnKTtcblxuXG5tb2R1bGUuZXhwb3J0cyA9IG5ldyBTY2hlbWEoe1xuICBpbmNsdWRlOiBbXG4gICAgcmVxdWlyZSgnLi9qc29uJylcbiAgXVxufSk7XG4iLCAiJ3VzZSBzdHJpY3QnO1xuXG52YXIgVHlwZSA9IHJlcXVpcmUoJy4uL3R5cGUnKTtcblxudmFyIFlBTUxfREFURV9SRUdFWFAgPSBuZXcgUmVnRXhwKFxuICAnXihbMC05XVswLTldWzAtOV1bMC05XSknICAgICAgICAgICsgLy8gWzFdIHllYXJcbiAgJy0oWzAtOV1bMC05XSknICAgICAgICAgICAgICAgICAgICArIC8vIFsyXSBtb250aFxuICAnLShbMC05XVswLTldKSQnKTsgICAgICAgICAgICAgICAgICAgLy8gWzNdIGRheVxuXG52YXIgWUFNTF9USU1FU1RBTVBfUkVHRVhQID0gbmV3IFJlZ0V4cChcbiAgJ14oWzAtOV1bMC05XVswLTldWzAtOV0pJyAgICAgICAgICArIC8vIFsxXSB5ZWFyXG4gICctKFswLTldWzAtOV0/KScgICAgICAgICAgICAgICAgICAgKyAvLyBbMl0gbW9udGhcbiAgJy0oWzAtOV1bMC05XT8pJyAgICAgICAgICAgICAgICAgICArIC8vIFszXSBkYXlcbiAgJyg/OltUdF18WyBcXFxcdF0rKScgICAgICAgICAgICAgICAgICsgLy8gLi4uXG4gICcoWzAtOV1bMC05XT8pJyAgICAgICAgICAgICAgICAgICAgKyAvLyBbNF0gaG91clxuICAnOihbMC05XVswLTldKScgICAgICAgICAgICAgICAgICAgICsgLy8gWzVdIG1pbnV0ZVxuICAnOihbMC05XVswLTldKScgICAgICAgICAgICAgICAgICAgICsgLy8gWzZdIHNlY29uZFxuICAnKD86XFxcXC4oWzAtOV0qKSk/JyAgICAgICAgICAgICAgICAgKyAvLyBbN10gZnJhY3Rpb25cbiAgJyg/OlsgXFxcXHRdKihafChbLStdKShbMC05XVswLTldPyknICsgLy8gWzhdIHR6IFs5XSB0el9zaWduIFsxMF0gdHpfaG91clxuICAnKD86OihbMC05XVswLTldKSk/KSk/JCcpOyAgICAgICAgICAgLy8gWzExXSB0el9taW51dGVcblxuZnVuY3Rpb24gcmVzb2x2ZVlhbWxUaW1lc3RhbXAoZGF0YSkge1xuICBpZiAoZGF0YSA9PT0gbnVsbCkgcmV0dXJuIGZhbHNlO1xuICBpZiAoWUFNTF9EQVRFX1JFR0VYUC5leGVjKGRhdGEpICE9PSBudWxsKSByZXR1cm4gdHJ1ZTtcbiAgaWYgKFlBTUxfVElNRVNUQU1QX1JFR0VYUC5leGVjKGRhdGEpICE9PSBudWxsKSByZXR1cm4gdHJ1ZTtcbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5mdW5jdGlvbiBjb25zdHJ1Y3RZYW1sVGltZXN0YW1wKGRhdGEpIHtcbiAgdmFyIG1hdGNoLCB5ZWFyLCBtb250aCwgZGF5LCBob3VyLCBtaW51dGUsIHNlY29uZCwgZnJhY3Rpb24gPSAwLFxuICAgICAgZGVsdGEgPSBudWxsLCB0el9ob3VyLCB0el9taW51dGUsIGRhdGU7XG5cbiAgbWF0Y2ggPSBZQU1MX0RBVEVfUkVHRVhQLmV4ZWMoZGF0YSk7XG4gIGlmIChtYXRjaCA9PT0gbnVsbCkgbWF0Y2ggPSBZQU1MX1RJTUVTVEFNUF9SRUdFWFAuZXhlYyhkYXRhKTtcblxuICBpZiAobWF0Y2ggPT09IG51bGwpIHRocm93IG5ldyBFcnJvcignRGF0ZSByZXNvbHZlIGVycm9yJyk7XG5cbiAgLy8gbWF0Y2g6IFsxXSB5ZWFyIFsyXSBtb250aCBbM10gZGF5XG5cbiAgeWVhciA9ICsobWF0Y2hbMV0pO1xuICBtb250aCA9ICsobWF0Y2hbMl0pIC0gMTsgLy8gSlMgbW9udGggc3RhcnRzIHdpdGggMFxuICBkYXkgPSArKG1hdGNoWzNdKTtcblxuICBpZiAoIW1hdGNoWzRdKSB7IC8vIG5vIGhvdXJcbiAgICByZXR1cm4gbmV3IERhdGUoRGF0ZS5VVEMoeWVhciwgbW9udGgsIGRheSkpO1xuICB9XG5cbiAgLy8gbWF0Y2g6IFs0XSBob3VyIFs1XSBtaW51dGUgWzZdIHNlY29uZCBbN10gZnJhY3Rpb25cblxuICBob3VyID0gKyhtYXRjaFs0XSk7XG4gIG1pbnV0ZSA9ICsobWF0Y2hbNV0pO1xuICBzZWNvbmQgPSArKG1hdGNoWzZdKTtcblxuICBpZiAobWF0Y2hbN10pIHtcbiAgICBmcmFjdGlvbiA9IG1hdGNoWzddLnNsaWNlKDAsIDMpO1xuICAgIHdoaWxlIChmcmFjdGlvbi5sZW5ndGggPCAzKSB7IC8vIG1pbGxpLXNlY29uZHNcbiAgICAgIGZyYWN0aW9uICs9ICcwJztcbiAgICB9XG4gICAgZnJhY3Rpb24gPSArZnJhY3Rpb247XG4gIH1cblxuICAvLyBtYXRjaDogWzhdIHR6IFs5XSB0el9zaWduIFsxMF0gdHpfaG91ciBbMTFdIHR6X21pbnV0ZVxuXG4gIGlmIChtYXRjaFs5XSkge1xuICAgIHR6X2hvdXIgPSArKG1hdGNoWzEwXSk7XG4gICAgdHpfbWludXRlID0gKyhtYXRjaFsxMV0gfHwgMCk7XG4gICAgZGVsdGEgPSAodHpfaG91ciAqIDYwICsgdHpfbWludXRlKSAqIDYwMDAwOyAvLyBkZWx0YSBpbiBtaWxpLXNlY29uZHNcbiAgICBpZiAobWF0Y2hbOV0gPT09ICctJykgZGVsdGEgPSAtZGVsdGE7XG4gIH1cblxuICBkYXRlID0gbmV3IERhdGUoRGF0ZS5VVEMoeWVhciwgbW9udGgsIGRheSwgaG91ciwgbWludXRlLCBzZWNvbmQsIGZyYWN0aW9uKSk7XG5cbiAgaWYgKGRlbHRhKSBkYXRlLnNldFRpbWUoZGF0ZS5nZXRUaW1lKCkgLSBkZWx0YSk7XG5cbiAgcmV0dXJuIGRhdGU7XG59XG5cbmZ1bmN0aW9uIHJlcHJlc2VudFlhbWxUaW1lc3RhbXAob2JqZWN0IC8qLCBzdHlsZSovKSB7XG4gIHJldHVybiBvYmplY3QudG9JU09TdHJpbmcoKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgVHlwZSgndGFnOnlhbWwub3JnLDIwMDI6dGltZXN0YW1wJywge1xuICBraW5kOiAnc2NhbGFyJyxcbiAgcmVzb2x2ZTogcmVzb2x2ZVlhbWxUaW1lc3RhbXAsXG4gIGNvbnN0cnVjdDogY29uc3RydWN0WWFtbFRpbWVzdGFtcCxcbiAgaW5zdGFuY2VPZjogRGF0ZSxcbiAgcmVwcmVzZW50OiByZXByZXNlbnRZYW1sVGltZXN0YW1wXG59KTtcbiIsICIndXNlIHN0cmljdCc7XG5cbnZhciBUeXBlID0gcmVxdWlyZSgnLi4vdHlwZScpO1xuXG5mdW5jdGlvbiByZXNvbHZlWWFtbE1lcmdlKGRhdGEpIHtcbiAgcmV0dXJuIGRhdGEgPT09ICc8PCcgfHwgZGF0YSA9PT0gbnVsbDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgVHlwZSgndGFnOnlhbWwub3JnLDIwMDI6bWVyZ2UnLCB7XG4gIGtpbmQ6ICdzY2FsYXInLFxuICByZXNvbHZlOiByZXNvbHZlWWFtbE1lcmdlXG59KTtcbiIsICIndXNlIHN0cmljdCc7XG5cbi8qZXNsaW50LWRpc2FibGUgbm8tYml0d2lzZSovXG5cbnZhciBOb2RlQnVmZmVyO1xuXG50cnkge1xuICAvLyBBIHRyaWNrIGZvciBicm93c2VyaWZpZWQgdmVyc2lvbiwgdG8gbm90IGluY2x1ZGUgYEJ1ZmZlcmAgc2hpbVxuICB2YXIgX3JlcXVpcmUgPSByZXF1aXJlO1xuICBOb2RlQnVmZmVyID0gX3JlcXVpcmUoJ2J1ZmZlcicpLkJ1ZmZlcjtcbn0gY2F0Y2ggKF9fKSB7fVxuXG52YXIgVHlwZSAgICAgICA9IHJlcXVpcmUoJy4uL3R5cGUnKTtcblxuXG4vLyBbIDY0LCA2NSwgNjYgXSAtPiBbIHBhZGRpbmcsIENSLCBMRiBdXG52YXIgQkFTRTY0X01BUCA9ICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvPVxcblxccic7XG5cblxuZnVuY3Rpb24gcmVzb2x2ZVlhbWxCaW5hcnkoZGF0YSkge1xuICBpZiAoZGF0YSA9PT0gbnVsbCkgcmV0dXJuIGZhbHNlO1xuXG4gIHZhciBjb2RlLCBpZHgsIGJpdGxlbiA9IDAsIG1heCA9IGRhdGEubGVuZ3RoLCBtYXAgPSBCQVNFNjRfTUFQO1xuXG4gIC8vIENvbnZlcnQgb25lIGJ5IG9uZS5cbiAgZm9yIChpZHggPSAwOyBpZHggPCBtYXg7IGlkeCsrKSB7XG4gICAgY29kZSA9IG1hcC5pbmRleE9mKGRhdGEuY2hhckF0KGlkeCkpO1xuXG4gICAgLy8gU2tpcCBDUi9MRlxuICAgIGlmIChjb2RlID4gNjQpIGNvbnRpbnVlO1xuXG4gICAgLy8gRmFpbCBvbiBpbGxlZ2FsIGNoYXJhY3RlcnNcbiAgICBpZiAoY29kZSA8IDApIHJldHVybiBmYWxzZTtcblxuICAgIGJpdGxlbiArPSA2O1xuICB9XG5cbiAgLy8gSWYgdGhlcmUgYXJlIGFueSBiaXRzIGxlZnQsIHNvdXJjZSB3YXMgY29ycnVwdGVkXG4gIHJldHVybiAoYml0bGVuICUgOCkgPT09IDA7XG59XG5cbmZ1bmN0aW9uIGNvbnN0cnVjdFlhbWxCaW5hcnkoZGF0YSkge1xuICB2YXIgaWR4LCB0YWlsYml0cyxcbiAgICAgIGlucHV0ID0gZGF0YS5yZXBsYWNlKC9bXFxyXFxuPV0vZywgJycpLCAvLyByZW1vdmUgQ1IvTEYgJiBwYWRkaW5nIHRvIHNpbXBsaWZ5IHNjYW5cbiAgICAgIG1heCA9IGlucHV0Lmxlbmd0aCxcbiAgICAgIG1hcCA9IEJBU0U2NF9NQVAsXG4gICAgICBiaXRzID0gMCxcbiAgICAgIHJlc3VsdCA9IFtdO1xuXG4gIC8vIENvbGxlY3QgYnkgNio0IGJpdHMgKDMgYnl0ZXMpXG5cbiAgZm9yIChpZHggPSAwOyBpZHggPCBtYXg7IGlkeCsrKSB7XG4gICAgaWYgKChpZHggJSA0ID09PSAwKSAmJiBpZHgpIHtcbiAgICAgIHJlc3VsdC5wdXNoKChiaXRzID4+IDE2KSAmIDB4RkYpO1xuICAgICAgcmVzdWx0LnB1c2goKGJpdHMgPj4gOCkgJiAweEZGKTtcbiAgICAgIHJlc3VsdC5wdXNoKGJpdHMgJiAweEZGKTtcbiAgICB9XG5cbiAgICBiaXRzID0gKGJpdHMgPDwgNikgfCBtYXAuaW5kZXhPZihpbnB1dC5jaGFyQXQoaWR4KSk7XG4gIH1cblxuICAvLyBEdW1wIHRhaWxcblxuICB0YWlsYml0cyA9IChtYXggJSA0KSAqIDY7XG5cbiAgaWYgKHRhaWxiaXRzID09PSAwKSB7XG4gICAgcmVzdWx0LnB1c2goKGJpdHMgPj4gMTYpICYgMHhGRik7XG4gICAgcmVzdWx0LnB1c2goKGJpdHMgPj4gOCkgJiAweEZGKTtcbiAgICByZXN1bHQucHVzaChiaXRzICYgMHhGRik7XG4gIH0gZWxzZSBpZiAodGFpbGJpdHMgPT09IDE4KSB7XG4gICAgcmVzdWx0LnB1c2goKGJpdHMgPj4gMTApICYgMHhGRik7XG4gICAgcmVzdWx0LnB1c2goKGJpdHMgPj4gMikgJiAweEZGKTtcbiAgfSBlbHNlIGlmICh0YWlsYml0cyA9PT0gMTIpIHtcbiAgICByZXN1bHQucHVzaCgoYml0cyA+PiA0KSAmIDB4RkYpO1xuICB9XG5cbiAgLy8gV3JhcCBpbnRvIEJ1ZmZlciBmb3IgTm9kZUpTIGFuZCBsZWF2ZSBBcnJheSBmb3IgYnJvd3NlclxuICBpZiAoTm9kZUJ1ZmZlcikge1xuICAgIC8vIFN1cHBvcnQgbm9kZSA2LisgQnVmZmVyIEFQSSB3aGVuIGF2YWlsYWJsZVxuICAgIHJldHVybiBOb2RlQnVmZmVyLmZyb20gPyBOb2RlQnVmZmVyLmZyb20ocmVzdWx0KSA6IG5ldyBOb2RlQnVmZmVyKHJlc3VsdCk7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5mdW5jdGlvbiByZXByZXNlbnRZYW1sQmluYXJ5KG9iamVjdCAvKiwgc3R5bGUqLykge1xuICB2YXIgcmVzdWx0ID0gJycsIGJpdHMgPSAwLCBpZHgsIHRhaWwsXG4gICAgICBtYXggPSBvYmplY3QubGVuZ3RoLFxuICAgICAgbWFwID0gQkFTRTY0X01BUDtcblxuICAvLyBDb252ZXJ0IGV2ZXJ5IHRocmVlIGJ5dGVzIHRvIDQgQVNDSUkgY2hhcmFjdGVycy5cblxuICBmb3IgKGlkeCA9IDA7IGlkeCA8IG1heDsgaWR4KyspIHtcbiAgICBpZiAoKGlkeCAlIDMgPT09IDApICYmIGlkeCkge1xuICAgICAgcmVzdWx0ICs9IG1hcFsoYml0cyA+PiAxOCkgJiAweDNGXTtcbiAgICAgIHJlc3VsdCArPSBtYXBbKGJpdHMgPj4gMTIpICYgMHgzRl07XG4gICAgICByZXN1bHQgKz0gbWFwWyhiaXRzID4+IDYpICYgMHgzRl07XG4gICAgICByZXN1bHQgKz0gbWFwW2JpdHMgJiAweDNGXTtcbiAgICB9XG5cbiAgICBiaXRzID0gKGJpdHMgPDwgOCkgKyBvYmplY3RbaWR4XTtcbiAgfVxuXG4gIC8vIER1bXAgdGFpbFxuXG4gIHRhaWwgPSBtYXggJSAzO1xuXG4gIGlmICh0YWlsID09PSAwKSB7XG4gICAgcmVzdWx0ICs9IG1hcFsoYml0cyA+PiAxOCkgJiAweDNGXTtcbiAgICByZXN1bHQgKz0gbWFwWyhiaXRzID4+IDEyKSAmIDB4M0ZdO1xuICAgIHJlc3VsdCArPSBtYXBbKGJpdHMgPj4gNikgJiAweDNGXTtcbiAgICByZXN1bHQgKz0gbWFwW2JpdHMgJiAweDNGXTtcbiAgfSBlbHNlIGlmICh0YWlsID09PSAyKSB7XG4gICAgcmVzdWx0ICs9IG1hcFsoYml0cyA+PiAxMCkgJiAweDNGXTtcbiAgICByZXN1bHQgKz0gbWFwWyhiaXRzID4+IDQpICYgMHgzRl07XG4gICAgcmVzdWx0ICs9IG1hcFsoYml0cyA8PCAyKSAmIDB4M0ZdO1xuICAgIHJlc3VsdCArPSBtYXBbNjRdO1xuICB9IGVsc2UgaWYgKHRhaWwgPT09IDEpIHtcbiAgICByZXN1bHQgKz0gbWFwWyhiaXRzID4+IDIpICYgMHgzRl07XG4gICAgcmVzdWx0ICs9IG1hcFsoYml0cyA8PCA0KSAmIDB4M0ZdO1xuICAgIHJlc3VsdCArPSBtYXBbNjRdO1xuICAgIHJlc3VsdCArPSBtYXBbNjRdO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gaXNCaW5hcnkob2JqZWN0KSB7XG4gIHJldHVybiBOb2RlQnVmZmVyICYmIE5vZGVCdWZmZXIuaXNCdWZmZXIob2JqZWN0KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgVHlwZSgndGFnOnlhbWwub3JnLDIwMDI6YmluYXJ5Jywge1xuICBraW5kOiAnc2NhbGFyJyxcbiAgcmVzb2x2ZTogcmVzb2x2ZVlhbWxCaW5hcnksXG4gIGNvbnN0cnVjdDogY29uc3RydWN0WWFtbEJpbmFyeSxcbiAgcHJlZGljYXRlOiBpc0JpbmFyeSxcbiAgcmVwcmVzZW50OiByZXByZXNlbnRZYW1sQmluYXJ5XG59KTtcbiIsICIndXNlIHN0cmljdCc7XG5cbnZhciBUeXBlID0gcmVxdWlyZSgnLi4vdHlwZScpO1xuXG52YXIgX2hhc093blByb3BlcnR5ID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcbnZhciBfdG9TdHJpbmcgICAgICAgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO1xuXG5mdW5jdGlvbiByZXNvbHZlWWFtbE9tYXAoZGF0YSkge1xuICBpZiAoZGF0YSA9PT0gbnVsbCkgcmV0dXJuIHRydWU7XG5cbiAgdmFyIG9iamVjdEtleXMgPSBbXSwgaW5kZXgsIGxlbmd0aCwgcGFpciwgcGFpcktleSwgcGFpckhhc0tleSxcbiAgICAgIG9iamVjdCA9IGRhdGE7XG5cbiAgZm9yIChpbmRleCA9IDAsIGxlbmd0aCA9IG9iamVjdC5sZW5ndGg7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCArPSAxKSB7XG4gICAgcGFpciA9IG9iamVjdFtpbmRleF07XG4gICAgcGFpckhhc0tleSA9IGZhbHNlO1xuXG4gICAgaWYgKF90b1N0cmluZy5jYWxsKHBhaXIpICE9PSAnW29iamVjdCBPYmplY3RdJykgcmV0dXJuIGZhbHNlO1xuXG4gICAgZm9yIChwYWlyS2V5IGluIHBhaXIpIHtcbiAgICAgIGlmIChfaGFzT3duUHJvcGVydHkuY2FsbChwYWlyLCBwYWlyS2V5KSkge1xuICAgICAgICBpZiAoIXBhaXJIYXNLZXkpIHBhaXJIYXNLZXkgPSB0cnVlO1xuICAgICAgICBlbHNlIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIXBhaXJIYXNLZXkpIHJldHVybiBmYWxzZTtcblxuICAgIGlmIChvYmplY3RLZXlzLmluZGV4T2YocGFpcktleSkgPT09IC0xKSBvYmplY3RLZXlzLnB1c2gocGFpcktleSk7XG4gICAgZWxzZSByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gY29uc3RydWN0WWFtbE9tYXAoZGF0YSkge1xuICByZXR1cm4gZGF0YSAhPT0gbnVsbCA/IGRhdGEgOiBbXTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgVHlwZSgndGFnOnlhbWwub3JnLDIwMDI6b21hcCcsIHtcbiAga2luZDogJ3NlcXVlbmNlJyxcbiAgcmVzb2x2ZTogcmVzb2x2ZVlhbWxPbWFwLFxuICBjb25zdHJ1Y3Q6IGNvbnN0cnVjdFlhbWxPbWFwXG59KTtcbiIsICIndXNlIHN0cmljdCc7XG5cbnZhciBUeXBlID0gcmVxdWlyZSgnLi4vdHlwZScpO1xuXG52YXIgX3RvU3RyaW5nID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztcblxuZnVuY3Rpb24gcmVzb2x2ZVlhbWxQYWlycyhkYXRhKSB7XG4gIGlmIChkYXRhID09PSBudWxsKSByZXR1cm4gdHJ1ZTtcblxuICB2YXIgaW5kZXgsIGxlbmd0aCwgcGFpciwga2V5cywgcmVzdWx0LFxuICAgICAgb2JqZWN0ID0gZGF0YTtcblxuICByZXN1bHQgPSBuZXcgQXJyYXkob2JqZWN0Lmxlbmd0aCk7XG5cbiAgZm9yIChpbmRleCA9IDAsIGxlbmd0aCA9IG9iamVjdC5sZW5ndGg7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCArPSAxKSB7XG4gICAgcGFpciA9IG9iamVjdFtpbmRleF07XG5cbiAgICBpZiAoX3RvU3RyaW5nLmNhbGwocGFpcikgIT09ICdbb2JqZWN0IE9iamVjdF0nKSByZXR1cm4gZmFsc2U7XG5cbiAgICBrZXlzID0gT2JqZWN0LmtleXMocGFpcik7XG5cbiAgICBpZiAoa2V5cy5sZW5ndGggIT09IDEpIHJldHVybiBmYWxzZTtcblxuICAgIHJlc3VsdFtpbmRleF0gPSBbIGtleXNbMF0sIHBhaXJba2V5c1swXV0gXTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiBjb25zdHJ1Y3RZYW1sUGFpcnMoZGF0YSkge1xuICBpZiAoZGF0YSA9PT0gbnVsbCkgcmV0dXJuIFtdO1xuXG4gIHZhciBpbmRleCwgbGVuZ3RoLCBwYWlyLCBrZXlzLCByZXN1bHQsXG4gICAgICBvYmplY3QgPSBkYXRhO1xuXG4gIHJlc3VsdCA9IG5ldyBBcnJheShvYmplY3QubGVuZ3RoKTtcblxuICBmb3IgKGluZGV4ID0gMCwgbGVuZ3RoID0gb2JqZWN0Lmxlbmd0aDsgaW5kZXggPCBsZW5ndGg7IGluZGV4ICs9IDEpIHtcbiAgICBwYWlyID0gb2JqZWN0W2luZGV4XTtcblxuICAgIGtleXMgPSBPYmplY3Qua2V5cyhwYWlyKTtcblxuICAgIHJlc3VsdFtpbmRleF0gPSBbIGtleXNbMF0sIHBhaXJba2V5c1swXV0gXTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbmV3IFR5cGUoJ3RhZzp5YW1sLm9yZywyMDAyOnBhaXJzJywge1xuICBraW5kOiAnc2VxdWVuY2UnLFxuICByZXNvbHZlOiByZXNvbHZlWWFtbFBhaXJzLFxuICBjb25zdHJ1Y3Q6IGNvbnN0cnVjdFlhbWxQYWlyc1xufSk7XG4iLCAiJ3VzZSBzdHJpY3QnO1xuXG52YXIgVHlwZSA9IHJlcXVpcmUoJy4uL3R5cGUnKTtcblxudmFyIF9oYXNPd25Qcm9wZXJ0eSA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG5cbmZ1bmN0aW9uIHJlc29sdmVZYW1sU2V0KGRhdGEpIHtcbiAgaWYgKGRhdGEgPT09IG51bGwpIHJldHVybiB0cnVlO1xuXG4gIHZhciBrZXksIG9iamVjdCA9IGRhdGE7XG5cbiAgZm9yIChrZXkgaW4gb2JqZWN0KSB7XG4gICAgaWYgKF9oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwga2V5KSkge1xuICAgICAgaWYgKG9iamVjdFtrZXldICE9PSBudWxsKSByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG5cbmZ1bmN0aW9uIGNvbnN0cnVjdFlhbWxTZXQoZGF0YSkge1xuICByZXR1cm4gZGF0YSAhPT0gbnVsbCA/IGRhdGEgOiB7fTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgVHlwZSgndGFnOnlhbWwub3JnLDIwMDI6c2V0Jywge1xuICBraW5kOiAnbWFwcGluZycsXG4gIHJlc29sdmU6IHJlc29sdmVZYW1sU2V0LFxuICBjb25zdHJ1Y3Q6IGNvbnN0cnVjdFlhbWxTZXRcbn0pO1xuIiwgIi8vIEpTLVlBTUwncyBkZWZhdWx0IHNjaGVtYSBmb3IgYHNhZmVMb2FkYCBmdW5jdGlvbi5cbi8vIEl0IGlzIG5vdCBkZXNjcmliZWQgaW4gdGhlIFlBTUwgc3BlY2lmaWNhdGlvbi5cbi8vXG4vLyBUaGlzIHNjaGVtYSBpcyBiYXNlZCBvbiBzdGFuZGFyZCBZQU1MJ3MgQ29yZSBzY2hlbWEgYW5kIGluY2x1ZGVzIG1vc3Qgb2Zcbi8vIGV4dHJhIHR5cGVzIGRlc2NyaWJlZCBhdCBZQU1MIHRhZyByZXBvc2l0b3J5LiAoaHR0cDovL3lhbWwub3JnL3R5cGUvKVxuXG5cbid1c2Ugc3RyaWN0JztcblxuXG52YXIgU2NoZW1hID0gcmVxdWlyZSgnLi4vc2NoZW1hJyk7XG5cblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgU2NoZW1hKHtcbiAgaW5jbHVkZTogW1xuICAgIHJlcXVpcmUoJy4vY29yZScpXG4gIF0sXG4gIGltcGxpY2l0OiBbXG4gICAgcmVxdWlyZSgnLi4vdHlwZS90aW1lc3RhbXAnKSxcbiAgICByZXF1aXJlKCcuLi90eXBlL21lcmdlJylcbiAgXSxcbiAgZXhwbGljaXQ6IFtcbiAgICByZXF1aXJlKCcuLi90eXBlL2JpbmFyeScpLFxuICAgIHJlcXVpcmUoJy4uL3R5cGUvb21hcCcpLFxuICAgIHJlcXVpcmUoJy4uL3R5cGUvcGFpcnMnKSxcbiAgICByZXF1aXJlKCcuLi90eXBlL3NldCcpXG4gIF1cbn0pO1xuIiwgIid1c2Ugc3RyaWN0JztcblxudmFyIFR5cGUgPSByZXF1aXJlKCcuLi8uLi90eXBlJyk7XG5cbmZ1bmN0aW9uIHJlc29sdmVKYXZhc2NyaXB0VW5kZWZpbmVkKCkge1xuICByZXR1cm4gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gY29uc3RydWN0SmF2YXNjcmlwdFVuZGVmaW5lZCgpIHtcbiAgLyplc2xpbnQtZGlzYWJsZSBuby11bmRlZmluZWQqL1xuICByZXR1cm4gdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiByZXByZXNlbnRKYXZhc2NyaXB0VW5kZWZpbmVkKCkge1xuICByZXR1cm4gJyc7XG59XG5cbmZ1bmN0aW9uIGlzVW5kZWZpbmVkKG9iamVjdCkge1xuICByZXR1cm4gdHlwZW9mIG9iamVjdCA9PT0gJ3VuZGVmaW5lZCc7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbmV3IFR5cGUoJ3RhZzp5YW1sLm9yZywyMDAyOmpzL3VuZGVmaW5lZCcsIHtcbiAga2luZDogJ3NjYWxhcicsXG4gIHJlc29sdmU6IHJlc29sdmVKYXZhc2NyaXB0VW5kZWZpbmVkLFxuICBjb25zdHJ1Y3Q6IGNvbnN0cnVjdEphdmFzY3JpcHRVbmRlZmluZWQsXG4gIHByZWRpY2F0ZTogaXNVbmRlZmluZWQsXG4gIHJlcHJlc2VudDogcmVwcmVzZW50SmF2YXNjcmlwdFVuZGVmaW5lZFxufSk7XG4iLCAiJ3VzZSBzdHJpY3QnO1xuXG52YXIgVHlwZSA9IHJlcXVpcmUoJy4uLy4uL3R5cGUnKTtcblxuZnVuY3Rpb24gcmVzb2x2ZUphdmFzY3JpcHRSZWdFeHAoZGF0YSkge1xuICBpZiAoZGF0YSA9PT0gbnVsbCkgcmV0dXJuIGZhbHNlO1xuICBpZiAoZGF0YS5sZW5ndGggPT09IDApIHJldHVybiBmYWxzZTtcblxuICB2YXIgcmVnZXhwID0gZGF0YSxcbiAgICAgIHRhaWwgICA9IC9cXC8oW2dpbV0qKSQvLmV4ZWMoZGF0YSksXG4gICAgICBtb2RpZmllcnMgPSAnJztcblxuICAvLyBpZiByZWdleHAgc3RhcnRzIHdpdGggJy8nIGl0IGNhbiBoYXZlIG1vZGlmaWVycyBhbmQgbXVzdCBiZSBwcm9wZXJseSBjbG9zZWRcbiAgLy8gYC9mb28vZ2ltYCAtIG1vZGlmaWVycyB0YWlsIGNhbiBiZSBtYXhpbXVtIDMgY2hhcnNcbiAgaWYgKHJlZ2V4cFswXSA9PT0gJy8nKSB7XG4gICAgaWYgKHRhaWwpIG1vZGlmaWVycyA9IHRhaWxbMV07XG5cbiAgICBpZiAobW9kaWZpZXJzLmxlbmd0aCA+IDMpIHJldHVybiBmYWxzZTtcbiAgICAvLyBpZiBleHByZXNzaW9uIHN0YXJ0cyB3aXRoIC8sIGlzIHNob3VsZCBiZSBwcm9wZXJseSB0ZXJtaW5hdGVkXG4gICAgaWYgKHJlZ2V4cFtyZWdleHAubGVuZ3RoIC0gbW9kaWZpZXJzLmxlbmd0aCAtIDFdICE9PSAnLycpIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiBjb25zdHJ1Y3RKYXZhc2NyaXB0UmVnRXhwKGRhdGEpIHtcbiAgdmFyIHJlZ2V4cCA9IGRhdGEsXG4gICAgICB0YWlsICAgPSAvXFwvKFtnaW1dKikkLy5leGVjKGRhdGEpLFxuICAgICAgbW9kaWZpZXJzID0gJyc7XG5cbiAgLy8gYC9mb28vZ2ltYCAtIHRhaWwgY2FuIGJlIG1heGltdW0gNCBjaGFyc1xuICBpZiAocmVnZXhwWzBdID09PSAnLycpIHtcbiAgICBpZiAodGFpbCkgbW9kaWZpZXJzID0gdGFpbFsxXTtcbiAgICByZWdleHAgPSByZWdleHAuc2xpY2UoMSwgcmVnZXhwLmxlbmd0aCAtIG1vZGlmaWVycy5sZW5ndGggLSAxKTtcbiAgfVxuXG4gIHJldHVybiBuZXcgUmVnRXhwKHJlZ2V4cCwgbW9kaWZpZXJzKTtcbn1cblxuZnVuY3Rpb24gcmVwcmVzZW50SmF2YXNjcmlwdFJlZ0V4cChvYmplY3QgLyosIHN0eWxlKi8pIHtcbiAgdmFyIHJlc3VsdCA9ICcvJyArIG9iamVjdC5zb3VyY2UgKyAnLyc7XG5cbiAgaWYgKG9iamVjdC5nbG9iYWwpIHJlc3VsdCArPSAnZyc7XG4gIGlmIChvYmplY3QubXVsdGlsaW5lKSByZXN1bHQgKz0gJ20nO1xuICBpZiAob2JqZWN0Lmlnbm9yZUNhc2UpIHJlc3VsdCArPSAnaSc7XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gaXNSZWdFeHAob2JqZWN0KSB7XG4gIHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwob2JqZWN0KSA9PT0gJ1tvYmplY3QgUmVnRXhwXSc7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbmV3IFR5cGUoJ3RhZzp5YW1sLm9yZywyMDAyOmpzL3JlZ2V4cCcsIHtcbiAga2luZDogJ3NjYWxhcicsXG4gIHJlc29sdmU6IHJlc29sdmVKYXZhc2NyaXB0UmVnRXhwLFxuICBjb25zdHJ1Y3Q6IGNvbnN0cnVjdEphdmFzY3JpcHRSZWdFeHAsXG4gIHByZWRpY2F0ZTogaXNSZWdFeHAsXG4gIHJlcHJlc2VudDogcmVwcmVzZW50SmF2YXNjcmlwdFJlZ0V4cFxufSk7XG4iLCAiJ3VzZSBzdHJpY3QnO1xuXG52YXIgZXNwcmltYTtcblxuLy8gQnJvd3NlcmlmaWVkIHZlcnNpb24gZG9lcyBub3QgaGF2ZSBlc3ByaW1hXG4vL1xuLy8gMS4gRm9yIG5vZGUuanMganVzdCByZXF1aXJlIG1vZHVsZSBhcyBkZXBzXG4vLyAyLiBGb3IgYnJvd3NlciB0cnkgdG8gcmVxdWlyZSBtdWR1bGUgdmlhIGV4dGVybmFsIEFNRCBzeXN0ZW0uXG4vLyAgICBJZiBub3QgZm91bmQgLSB0cnkgdG8gZmFsbGJhY2sgdG8gd2luZG93LmVzcHJpbWEuIElmIG5vdFxuLy8gICAgZm91bmQgdG9vIC0gdGhlbiBmYWlsIHRvIHBhcnNlLlxuLy9cbnRyeSB7XG4gIC8vIHdvcmthcm91bmQgdG8gZXhjbHVkZSBwYWNrYWdlIGZyb20gYnJvd3NlcmlmeSBsaXN0LlxuICB2YXIgX3JlcXVpcmUgPSByZXF1aXJlO1xuICBlc3ByaW1hID0gX3JlcXVpcmUoJ2VzcHJpbWEnKTtcbn0gY2F0Y2ggKF8pIHtcbiAgLyogZXNsaW50LWRpc2FibGUgbm8tcmVkZWNsYXJlICovXG4gIC8qIGdsb2JhbCB3aW5kb3cgKi9cbiAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSBlc3ByaW1hID0gd2luZG93LmVzcHJpbWE7XG59XG5cbnZhciBUeXBlID0gcmVxdWlyZSgnLi4vLi4vdHlwZScpO1xuXG5mdW5jdGlvbiByZXNvbHZlSmF2YXNjcmlwdEZ1bmN0aW9uKGRhdGEpIHtcbiAgaWYgKGRhdGEgPT09IG51bGwpIHJldHVybiBmYWxzZTtcblxuICB0cnkge1xuICAgIHZhciBzb3VyY2UgPSAnKCcgKyBkYXRhICsgJyknLFxuICAgICAgICBhc3QgICAgPSBlc3ByaW1hLnBhcnNlKHNvdXJjZSwgeyByYW5nZTogdHJ1ZSB9KTtcblxuICAgIGlmIChhc3QudHlwZSAgICAgICAgICAgICAgICAgICAgIT09ICdQcm9ncmFtJyAgICAgICAgICAgICB8fFxuICAgICAgICBhc3QuYm9keS5sZW5ndGggICAgICAgICAgICAgIT09IDEgICAgICAgICAgICAgICAgICAgICB8fFxuICAgICAgICBhc3QuYm9keVswXS50eXBlICAgICAgICAgICAgIT09ICdFeHByZXNzaW9uU3RhdGVtZW50JyB8fFxuICAgICAgICAoYXN0LmJvZHlbMF0uZXhwcmVzc2lvbi50eXBlICE9PSAnQXJyb3dGdW5jdGlvbkV4cHJlc3Npb24nICYmXG4gICAgICAgICAgYXN0LmJvZHlbMF0uZXhwcmVzc2lvbi50eXBlICE9PSAnRnVuY3Rpb25FeHByZXNzaW9uJykpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNvbnN0cnVjdEphdmFzY3JpcHRGdW5jdGlvbihkYXRhKSB7XG4gIC8qanNsaW50IGV2aWw6dHJ1ZSovXG5cbiAgdmFyIHNvdXJjZSA9ICcoJyArIGRhdGEgKyAnKScsXG4gICAgICBhc3QgICAgPSBlc3ByaW1hLnBhcnNlKHNvdXJjZSwgeyByYW5nZTogdHJ1ZSB9KSxcbiAgICAgIHBhcmFtcyA9IFtdLFxuICAgICAgYm9keTtcblxuICBpZiAoYXN0LnR5cGUgICAgICAgICAgICAgICAgICAgICE9PSAnUHJvZ3JhbScgICAgICAgICAgICAgfHxcbiAgICAgIGFzdC5ib2R5Lmxlbmd0aCAgICAgICAgICAgICAhPT0gMSAgICAgICAgICAgICAgICAgICAgIHx8XG4gICAgICBhc3QuYm9keVswXS50eXBlICAgICAgICAgICAgIT09ICdFeHByZXNzaW9uU3RhdGVtZW50JyB8fFxuICAgICAgKGFzdC5ib2R5WzBdLmV4cHJlc3Npb24udHlwZSAhPT0gJ0Fycm93RnVuY3Rpb25FeHByZXNzaW9uJyAmJlxuICAgICAgICBhc3QuYm9keVswXS5leHByZXNzaW9uLnR5cGUgIT09ICdGdW5jdGlvbkV4cHJlc3Npb24nKSkge1xuICAgIHRocm93IG5ldyBFcnJvcignRmFpbGVkIHRvIHJlc29sdmUgZnVuY3Rpb24nKTtcbiAgfVxuXG4gIGFzdC5ib2R5WzBdLmV4cHJlc3Npb24ucGFyYW1zLmZvckVhY2goZnVuY3Rpb24gKHBhcmFtKSB7XG4gICAgcGFyYW1zLnB1c2gocGFyYW0ubmFtZSk7XG4gIH0pO1xuXG4gIGJvZHkgPSBhc3QuYm9keVswXS5leHByZXNzaW9uLmJvZHkucmFuZ2U7XG5cbiAgLy8gRXNwcmltYSdzIHJhbmdlcyBpbmNsdWRlIHRoZSBmaXJzdCAneycgYW5kIHRoZSBsYXN0ICd9JyBjaGFyYWN0ZXJzIG9uXG4gIC8vIGZ1bmN0aW9uIGV4cHJlc3Npb25zLiBTbyBjdXQgdGhlbSBvdXQuXG4gIGlmIChhc3QuYm9keVswXS5leHByZXNzaW9uLmJvZHkudHlwZSA9PT0gJ0Jsb2NrU3RhdGVtZW50Jykge1xuICAgIC8qZXNsaW50LWRpc2FibGUgbm8tbmV3LWZ1bmMqL1xuICAgIHJldHVybiBuZXcgRnVuY3Rpb24ocGFyYW1zLCBzb3VyY2Uuc2xpY2UoYm9keVswXSArIDEsIGJvZHlbMV0gLSAxKSk7XG4gIH1cbiAgLy8gRVM2IGFycm93IGZ1bmN0aW9ucyBjYW4gb21pdCB0aGUgQmxvY2tTdGF0ZW1lbnQuIEluIHRoYXQgY2FzZSwganVzdCByZXR1cm5cbiAgLy8gdGhlIGJvZHkuXG4gIC8qZXNsaW50LWRpc2FibGUgbm8tbmV3LWZ1bmMqL1xuICByZXR1cm4gbmV3IEZ1bmN0aW9uKHBhcmFtcywgJ3JldHVybiAnICsgc291cmNlLnNsaWNlKGJvZHlbMF0sIGJvZHlbMV0pKTtcbn1cblxuZnVuY3Rpb24gcmVwcmVzZW50SmF2YXNjcmlwdEZ1bmN0aW9uKG9iamVjdCAvKiwgc3R5bGUqLykge1xuICByZXR1cm4gb2JqZWN0LnRvU3RyaW5nKCk7XG59XG5cbmZ1bmN0aW9uIGlzRnVuY3Rpb24ob2JqZWN0KSB7XG4gIHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwob2JqZWN0KSA9PT0gJ1tvYmplY3QgRnVuY3Rpb25dJztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgVHlwZSgndGFnOnlhbWwub3JnLDIwMDI6anMvZnVuY3Rpb24nLCB7XG4gIGtpbmQ6ICdzY2FsYXInLFxuICByZXNvbHZlOiByZXNvbHZlSmF2YXNjcmlwdEZ1bmN0aW9uLFxuICBjb25zdHJ1Y3Q6IGNvbnN0cnVjdEphdmFzY3JpcHRGdW5jdGlvbixcbiAgcHJlZGljYXRlOiBpc0Z1bmN0aW9uLFxuICByZXByZXNlbnQ6IHJlcHJlc2VudEphdmFzY3JpcHRGdW5jdGlvblxufSk7XG4iLCAiLy8gSlMtWUFNTCdzIGRlZmF1bHQgc2NoZW1hIGZvciBgbG9hZGAgZnVuY3Rpb24uXG4vLyBJdCBpcyBub3QgZGVzY3JpYmVkIGluIHRoZSBZQU1MIHNwZWNpZmljYXRpb24uXG4vL1xuLy8gVGhpcyBzY2hlbWEgaXMgYmFzZWQgb24gSlMtWUFNTCdzIGRlZmF1bHQgc2FmZSBzY2hlbWEgYW5kIGluY2x1ZGVzXG4vLyBKYXZhU2NyaXB0LXNwZWNpZmljIHR5cGVzOiAhIWpzL3VuZGVmaW5lZCwgISFqcy9yZWdleHAgYW5kICEhanMvZnVuY3Rpb24uXG4vL1xuLy8gQWxzbyB0aGlzIHNjaGVtYSBpcyB1c2VkIGFzIGRlZmF1bHQgYmFzZSBzY2hlbWEgYXQgYFNjaGVtYS5jcmVhdGVgIGZ1bmN0aW9uLlxuXG5cbid1c2Ugc3RyaWN0JztcblxuXG52YXIgU2NoZW1hID0gcmVxdWlyZSgnLi4vc2NoZW1hJyk7XG5cblxubW9kdWxlLmV4cG9ydHMgPSBTY2hlbWEuREVGQVVMVCA9IG5ldyBTY2hlbWEoe1xuICBpbmNsdWRlOiBbXG4gICAgcmVxdWlyZSgnLi9kZWZhdWx0X3NhZmUnKVxuICBdLFxuICBleHBsaWNpdDogW1xuICAgIHJlcXVpcmUoJy4uL3R5cGUvanMvdW5kZWZpbmVkJyksXG4gICAgcmVxdWlyZSgnLi4vdHlwZS9qcy9yZWdleHAnKSxcbiAgICByZXF1aXJlKCcuLi90eXBlL2pzL2Z1bmN0aW9uJylcbiAgXVxufSk7XG4iLCAiJ3VzZSBzdHJpY3QnO1xuXG4vKmVzbGludC1kaXNhYmxlIG1heC1sZW4sbm8tdXNlLWJlZm9yZS1kZWZpbmUqL1xuXG52YXIgY29tbW9uICAgICAgICAgICAgICA9IHJlcXVpcmUoJy4vY29tbW9uJyk7XG52YXIgWUFNTEV4Y2VwdGlvbiAgICAgICA9IHJlcXVpcmUoJy4vZXhjZXB0aW9uJyk7XG52YXIgTWFyayAgICAgICAgICAgICAgICA9IHJlcXVpcmUoJy4vbWFyaycpO1xudmFyIERFRkFVTFRfU0FGRV9TQ0hFTUEgPSByZXF1aXJlKCcuL3NjaGVtYS9kZWZhdWx0X3NhZmUnKTtcbnZhciBERUZBVUxUX0ZVTExfU0NIRU1BID0gcmVxdWlyZSgnLi9zY2hlbWEvZGVmYXVsdF9mdWxsJyk7XG5cblxudmFyIF9oYXNPd25Qcm9wZXJ0eSA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG5cblxudmFyIENPTlRFWFRfRkxPV19JTiAgID0gMTtcbnZhciBDT05URVhUX0ZMT1dfT1VUICA9IDI7XG52YXIgQ09OVEVYVF9CTE9DS19JTiAgPSAzO1xudmFyIENPTlRFWFRfQkxPQ0tfT1VUID0gNDtcblxuXG52YXIgQ0hPTVBJTkdfQ0xJUCAgPSAxO1xudmFyIENIT01QSU5HX1NUUklQID0gMjtcbnZhciBDSE9NUElOR19LRUVQICA9IDM7XG5cblxudmFyIFBBVFRFUk5fTk9OX1BSSU5UQUJMRSAgICAgICAgID0gL1tcXHgwMC1cXHgwOFxceDBCXFx4MENcXHgwRS1cXHgxRlxceDdGLVxceDg0XFx4ODYtXFx4OUZcXHVGRkZFXFx1RkZGRl18W1xcdUQ4MDAtXFx1REJGRl0oPyFbXFx1REMwMC1cXHVERkZGXSl8KD86W15cXHVEODAwLVxcdURCRkZdfF4pW1xcdURDMDAtXFx1REZGRl0vO1xudmFyIFBBVFRFUk5fTk9OX0FTQ0lJX0xJTkVfQlJFQUtTID0gL1tcXHg4NVxcdTIwMjhcXHUyMDI5XS87XG52YXIgUEFUVEVSTl9GTE9XX0lORElDQVRPUlMgICAgICAgPSAvWyxcXFtcXF1cXHtcXH1dLztcbnZhciBQQVRURVJOX1RBR19IQU5ETEUgICAgICAgICAgICA9IC9eKD86IXwhIXwhW2EtelxcLV0rISkkL2k7XG52YXIgUEFUVEVSTl9UQUdfVVJJICAgICAgICAgICAgICAgPSAvXig/OiF8W14sXFxbXFxdXFx7XFx9XSkoPzolWzAtOWEtZl17Mn18WzAtOWEtelxcLSM7XFwvXFw/OkAmPVxcK1xcJCxfXFwuIX5cXConXFwoXFwpXFxbXFxdXSkqJC9pO1xuXG5cbmZ1bmN0aW9uIF9jbGFzcyhvYmopIHsgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvYmopOyB9XG5cbmZ1bmN0aW9uIGlzX0VPTChjKSB7XG4gIHJldHVybiAoYyA9PT0gMHgwQS8qIExGICovKSB8fCAoYyA9PT0gMHgwRC8qIENSICovKTtcbn1cblxuZnVuY3Rpb24gaXNfV0hJVEVfU1BBQ0UoYykge1xuICByZXR1cm4gKGMgPT09IDB4MDkvKiBUYWIgKi8pIHx8IChjID09PSAweDIwLyogU3BhY2UgKi8pO1xufVxuXG5mdW5jdGlvbiBpc19XU19PUl9FT0woYykge1xuICByZXR1cm4gKGMgPT09IDB4MDkvKiBUYWIgKi8pIHx8XG4gICAgICAgICAoYyA9PT0gMHgyMC8qIFNwYWNlICovKSB8fFxuICAgICAgICAgKGMgPT09IDB4MEEvKiBMRiAqLykgfHxcbiAgICAgICAgIChjID09PSAweDBELyogQ1IgKi8pO1xufVxuXG5mdW5jdGlvbiBpc19GTE9XX0lORElDQVRPUihjKSB7XG4gIHJldHVybiBjID09PSAweDJDLyogLCAqLyB8fFxuICAgICAgICAgYyA9PT0gMHg1Qi8qIFsgKi8gfHxcbiAgICAgICAgIGMgPT09IDB4NUQvKiBdICovIHx8XG4gICAgICAgICBjID09PSAweDdCLyogeyAqLyB8fFxuICAgICAgICAgYyA9PT0gMHg3RC8qIH0gKi87XG59XG5cbmZ1bmN0aW9uIGZyb21IZXhDb2RlKGMpIHtcbiAgdmFyIGxjO1xuXG4gIGlmICgoMHgzMC8qIDAgKi8gPD0gYykgJiYgKGMgPD0gMHgzOS8qIDkgKi8pKSB7XG4gICAgcmV0dXJuIGMgLSAweDMwO1xuICB9XG5cbiAgLyplc2xpbnQtZGlzYWJsZSBuby1iaXR3aXNlKi9cbiAgbGMgPSBjIHwgMHgyMDtcblxuICBpZiAoKDB4NjEvKiBhICovIDw9IGxjKSAmJiAobGMgPD0gMHg2Ni8qIGYgKi8pKSB7XG4gICAgcmV0dXJuIGxjIC0gMHg2MSArIDEwO1xuICB9XG5cbiAgcmV0dXJuIC0xO1xufVxuXG5mdW5jdGlvbiBlc2NhcGVkSGV4TGVuKGMpIHtcbiAgaWYgKGMgPT09IDB4NzgvKiB4ICovKSB7IHJldHVybiAyOyB9XG4gIGlmIChjID09PSAweDc1LyogdSAqLykgeyByZXR1cm4gNDsgfVxuICBpZiAoYyA9PT0gMHg1NS8qIFUgKi8pIHsgcmV0dXJuIDg7IH1cbiAgcmV0dXJuIDA7XG59XG5cbmZ1bmN0aW9uIGZyb21EZWNpbWFsQ29kZShjKSB7XG4gIGlmICgoMHgzMC8qIDAgKi8gPD0gYykgJiYgKGMgPD0gMHgzOS8qIDkgKi8pKSB7XG4gICAgcmV0dXJuIGMgLSAweDMwO1xuICB9XG5cbiAgcmV0dXJuIC0xO1xufVxuXG5mdW5jdGlvbiBzaW1wbGVFc2NhcGVTZXF1ZW5jZShjKSB7XG4gIC8qIGVzbGludC1kaXNhYmxlIGluZGVudCAqL1xuICByZXR1cm4gKGMgPT09IDB4MzAvKiAwICovKSA/ICdcXHgwMCcgOlxuICAgICAgICAoYyA9PT0gMHg2MS8qIGEgKi8pID8gJ1xceDA3JyA6XG4gICAgICAgIChjID09PSAweDYyLyogYiAqLykgPyAnXFx4MDgnIDpcbiAgICAgICAgKGMgPT09IDB4NzQvKiB0ICovKSA/ICdcXHgwOScgOlxuICAgICAgICAoYyA9PT0gMHgwOS8qIFRhYiAqLykgPyAnXFx4MDknIDpcbiAgICAgICAgKGMgPT09IDB4NkUvKiBuICovKSA/ICdcXHgwQScgOlxuICAgICAgICAoYyA9PT0gMHg3Ni8qIHYgKi8pID8gJ1xceDBCJyA6XG4gICAgICAgIChjID09PSAweDY2LyogZiAqLykgPyAnXFx4MEMnIDpcbiAgICAgICAgKGMgPT09IDB4NzIvKiByICovKSA/ICdcXHgwRCcgOlxuICAgICAgICAoYyA9PT0gMHg2NS8qIGUgKi8pID8gJ1xceDFCJyA6XG4gICAgICAgIChjID09PSAweDIwLyogU3BhY2UgKi8pID8gJyAnIDpcbiAgICAgICAgKGMgPT09IDB4MjIvKiBcIiAqLykgPyAnXFx4MjInIDpcbiAgICAgICAgKGMgPT09IDB4MkYvKiAvICovKSA/ICcvJyA6XG4gICAgICAgIChjID09PSAweDVDLyogXFwgKi8pID8gJ1xceDVDJyA6XG4gICAgICAgIChjID09PSAweDRFLyogTiAqLykgPyAnXFx4ODUnIDpcbiAgICAgICAgKGMgPT09IDB4NUYvKiBfICovKSA/ICdcXHhBMCcgOlxuICAgICAgICAoYyA9PT0gMHg0Qy8qIEwgKi8pID8gJ1xcdTIwMjgnIDpcbiAgICAgICAgKGMgPT09IDB4NTAvKiBQICovKSA/ICdcXHUyMDI5JyA6ICcnO1xufVxuXG5mdW5jdGlvbiBjaGFyRnJvbUNvZGVwb2ludChjKSB7XG4gIGlmIChjIDw9IDB4RkZGRikge1xuICAgIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKGMpO1xuICB9XG4gIC8vIEVuY29kZSBVVEYtMTYgc3Vycm9nYXRlIHBhaXJcbiAgLy8gaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVVRGLTE2I0NvZGVfcG9pbnRzX1UuMkIwMTAwMDBfdG9fVS4yQjEwRkZGRlxuICByZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShcbiAgICAoKGMgLSAweDAxMDAwMCkgPj4gMTApICsgMHhEODAwLFxuICAgICgoYyAtIDB4MDEwMDAwKSAmIDB4MDNGRikgKyAweERDMDBcbiAgKTtcbn1cblxudmFyIHNpbXBsZUVzY2FwZUNoZWNrID0gbmV3IEFycmF5KDI1Nik7IC8vIGludGVnZXIsIGZvciBmYXN0IGFjY2Vzc1xudmFyIHNpbXBsZUVzY2FwZU1hcCA9IG5ldyBBcnJheSgyNTYpO1xuZm9yICh2YXIgaSA9IDA7IGkgPCAyNTY7IGkrKykge1xuICBzaW1wbGVFc2NhcGVDaGVja1tpXSA9IHNpbXBsZUVzY2FwZVNlcXVlbmNlKGkpID8gMSA6IDA7XG4gIHNpbXBsZUVzY2FwZU1hcFtpXSA9IHNpbXBsZUVzY2FwZVNlcXVlbmNlKGkpO1xufVxuXG5cbmZ1bmN0aW9uIFN0YXRlKGlucHV0LCBvcHRpb25zKSB7XG4gIHRoaXMuaW5wdXQgPSBpbnB1dDtcblxuICB0aGlzLmZpbGVuYW1lICA9IG9wdGlvbnNbJ2ZpbGVuYW1lJ10gIHx8IG51bGw7XG4gIHRoaXMuc2NoZW1hICAgID0gb3B0aW9uc1snc2NoZW1hJ10gICAgfHwgREVGQVVMVF9GVUxMX1NDSEVNQTtcbiAgdGhpcy5vbldhcm5pbmcgPSBvcHRpb25zWydvbldhcm5pbmcnXSB8fCBudWxsO1xuICB0aGlzLmxlZ2FjeSAgICA9IG9wdGlvbnNbJ2xlZ2FjeSddICAgIHx8IGZhbHNlO1xuICB0aGlzLmpzb24gICAgICA9IG9wdGlvbnNbJ2pzb24nXSAgICAgIHx8IGZhbHNlO1xuICB0aGlzLmxpc3RlbmVyICA9IG9wdGlvbnNbJ2xpc3RlbmVyJ10gIHx8IG51bGw7XG5cbiAgdGhpcy5pbXBsaWNpdFR5cGVzID0gdGhpcy5zY2hlbWEuY29tcGlsZWRJbXBsaWNpdDtcbiAgdGhpcy50eXBlTWFwICAgICAgID0gdGhpcy5zY2hlbWEuY29tcGlsZWRUeXBlTWFwO1xuXG4gIHRoaXMubGVuZ3RoICAgICA9IGlucHV0Lmxlbmd0aDtcbiAgdGhpcy5wb3NpdGlvbiAgID0gMDtcbiAgdGhpcy5saW5lICAgICAgID0gMDtcbiAgdGhpcy5saW5lU3RhcnQgID0gMDtcbiAgdGhpcy5saW5lSW5kZW50ID0gMDtcblxuICB0aGlzLmRvY3VtZW50cyA9IFtdO1xuXG4gIC8qXG4gIHRoaXMudmVyc2lvbjtcbiAgdGhpcy5jaGVja0xpbmVCcmVha3M7XG4gIHRoaXMudGFnTWFwO1xuICB0aGlzLmFuY2hvck1hcDtcbiAgdGhpcy50YWc7XG4gIHRoaXMuYW5jaG9yO1xuICB0aGlzLmtpbmQ7XG4gIHRoaXMucmVzdWx0OyovXG5cbn1cblxuXG5mdW5jdGlvbiBnZW5lcmF0ZUVycm9yKHN0YXRlLCBtZXNzYWdlKSB7XG4gIHJldHVybiBuZXcgWUFNTEV4Y2VwdGlvbihcbiAgICBtZXNzYWdlLFxuICAgIG5ldyBNYXJrKHN0YXRlLmZpbGVuYW1lLCBzdGF0ZS5pbnB1dCwgc3RhdGUucG9zaXRpb24sIHN0YXRlLmxpbmUsIChzdGF0ZS5wb3NpdGlvbiAtIHN0YXRlLmxpbmVTdGFydCkpKTtcbn1cblxuZnVuY3Rpb24gdGhyb3dFcnJvcihzdGF0ZSwgbWVzc2FnZSkge1xuICB0aHJvdyBnZW5lcmF0ZUVycm9yKHN0YXRlLCBtZXNzYWdlKTtcbn1cblxuZnVuY3Rpb24gdGhyb3dXYXJuaW5nKHN0YXRlLCBtZXNzYWdlKSB7XG4gIGlmIChzdGF0ZS5vbldhcm5pbmcpIHtcbiAgICBzdGF0ZS5vbldhcm5pbmcuY2FsbChudWxsLCBnZW5lcmF0ZUVycm9yKHN0YXRlLCBtZXNzYWdlKSk7XG4gIH1cbn1cblxuXG52YXIgZGlyZWN0aXZlSGFuZGxlcnMgPSB7XG5cbiAgWUFNTDogZnVuY3Rpb24gaGFuZGxlWWFtbERpcmVjdGl2ZShzdGF0ZSwgbmFtZSwgYXJncykge1xuXG4gICAgdmFyIG1hdGNoLCBtYWpvciwgbWlub3I7XG5cbiAgICBpZiAoc3RhdGUudmVyc2lvbiAhPT0gbnVsbCkge1xuICAgICAgdGhyb3dFcnJvcihzdGF0ZSwgJ2R1cGxpY2F0aW9uIG9mICVZQU1MIGRpcmVjdGl2ZScpO1xuICAgIH1cblxuICAgIGlmIChhcmdzLmxlbmd0aCAhPT0gMSkge1xuICAgICAgdGhyb3dFcnJvcihzdGF0ZSwgJ1lBTUwgZGlyZWN0aXZlIGFjY2VwdHMgZXhhY3RseSBvbmUgYXJndW1lbnQnKTtcbiAgICB9XG5cbiAgICBtYXRjaCA9IC9eKFswLTldKylcXC4oWzAtOV0rKSQvLmV4ZWMoYXJnc1swXSk7XG5cbiAgICBpZiAobWF0Y2ggPT09IG51bGwpIHtcbiAgICAgIHRocm93RXJyb3Ioc3RhdGUsICdpbGwtZm9ybWVkIGFyZ3VtZW50IG9mIHRoZSBZQU1MIGRpcmVjdGl2ZScpO1xuICAgIH1cblxuICAgIG1ham9yID0gcGFyc2VJbnQobWF0Y2hbMV0sIDEwKTtcbiAgICBtaW5vciA9IHBhcnNlSW50KG1hdGNoWzJdLCAxMCk7XG5cbiAgICBpZiAobWFqb3IgIT09IDEpIHtcbiAgICAgIHRocm93RXJyb3Ioc3RhdGUsICd1bmFjY2VwdGFibGUgWUFNTCB2ZXJzaW9uIG9mIHRoZSBkb2N1bWVudCcpO1xuICAgIH1cblxuICAgIHN0YXRlLnZlcnNpb24gPSBhcmdzWzBdO1xuICAgIHN0YXRlLmNoZWNrTGluZUJyZWFrcyA9IChtaW5vciA8IDIpO1xuXG4gICAgaWYgKG1pbm9yICE9PSAxICYmIG1pbm9yICE9PSAyKSB7XG4gICAgICB0aHJvd1dhcm5pbmcoc3RhdGUsICd1bnN1cHBvcnRlZCBZQU1MIHZlcnNpb24gb2YgdGhlIGRvY3VtZW50Jyk7XG4gICAgfVxuICB9LFxuXG4gIFRBRzogZnVuY3Rpb24gaGFuZGxlVGFnRGlyZWN0aXZlKHN0YXRlLCBuYW1lLCBhcmdzKSB7XG5cbiAgICB2YXIgaGFuZGxlLCBwcmVmaXg7XG5cbiAgICBpZiAoYXJncy5sZW5ndGggIT09IDIpIHtcbiAgICAgIHRocm93RXJyb3Ioc3RhdGUsICdUQUcgZGlyZWN0aXZlIGFjY2VwdHMgZXhhY3RseSB0d28gYXJndW1lbnRzJyk7XG4gICAgfVxuXG4gICAgaGFuZGxlID0gYXJnc1swXTtcbiAgICBwcmVmaXggPSBhcmdzWzFdO1xuXG4gICAgaWYgKCFQQVRURVJOX1RBR19IQU5ETEUudGVzdChoYW5kbGUpKSB7XG4gICAgICB0aHJvd0Vycm9yKHN0YXRlLCAnaWxsLWZvcm1lZCB0YWcgaGFuZGxlIChmaXJzdCBhcmd1bWVudCkgb2YgdGhlIFRBRyBkaXJlY3RpdmUnKTtcbiAgICB9XG5cbiAgICBpZiAoX2hhc093blByb3BlcnR5LmNhbGwoc3RhdGUudGFnTWFwLCBoYW5kbGUpKSB7XG4gICAgICB0aHJvd0Vycm9yKHN0YXRlLCAndGhlcmUgaXMgYSBwcmV2aW91c2x5IGRlY2xhcmVkIHN1ZmZpeCBmb3IgXCInICsgaGFuZGxlICsgJ1wiIHRhZyBoYW5kbGUnKTtcbiAgICB9XG5cbiAgICBpZiAoIVBBVFRFUk5fVEFHX1VSSS50ZXN0KHByZWZpeCkpIHtcbiAgICAgIHRocm93RXJyb3Ioc3RhdGUsICdpbGwtZm9ybWVkIHRhZyBwcmVmaXggKHNlY29uZCBhcmd1bWVudCkgb2YgdGhlIFRBRyBkaXJlY3RpdmUnKTtcbiAgICB9XG5cbiAgICBzdGF0ZS50YWdNYXBbaGFuZGxlXSA9IHByZWZpeDtcbiAgfVxufTtcblxuXG5mdW5jdGlvbiBjYXB0dXJlU2VnbWVudChzdGF0ZSwgc3RhcnQsIGVuZCwgY2hlY2tKc29uKSB7XG4gIHZhciBfcG9zaXRpb24sIF9sZW5ndGgsIF9jaGFyYWN0ZXIsIF9yZXN1bHQ7XG5cbiAgaWYgKHN0YXJ0IDwgZW5kKSB7XG4gICAgX3Jlc3VsdCA9IHN0YXRlLmlucHV0LnNsaWNlKHN0YXJ0LCBlbmQpO1xuXG4gICAgaWYgKGNoZWNrSnNvbikge1xuICAgICAgZm9yIChfcG9zaXRpb24gPSAwLCBfbGVuZ3RoID0gX3Jlc3VsdC5sZW5ndGg7IF9wb3NpdGlvbiA8IF9sZW5ndGg7IF9wb3NpdGlvbiArPSAxKSB7XG4gICAgICAgIF9jaGFyYWN0ZXIgPSBfcmVzdWx0LmNoYXJDb2RlQXQoX3Bvc2l0aW9uKTtcbiAgICAgICAgaWYgKCEoX2NoYXJhY3RlciA9PT0gMHgwOSB8fFxuICAgICAgICAgICAgICAoMHgyMCA8PSBfY2hhcmFjdGVyICYmIF9jaGFyYWN0ZXIgPD0gMHgxMEZGRkYpKSkge1xuICAgICAgICAgIHRocm93RXJyb3Ioc3RhdGUsICdleHBlY3RlZCB2YWxpZCBKU09OIGNoYXJhY3RlcicpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChQQVRURVJOX05PTl9QUklOVEFCTEUudGVzdChfcmVzdWx0KSkge1xuICAgICAgdGhyb3dFcnJvcihzdGF0ZSwgJ3RoZSBzdHJlYW0gY29udGFpbnMgbm9uLXByaW50YWJsZSBjaGFyYWN0ZXJzJyk7XG4gICAgfVxuXG4gICAgc3RhdGUucmVzdWx0ICs9IF9yZXN1bHQ7XG4gIH1cbn1cblxuZnVuY3Rpb24gbWVyZ2VNYXBwaW5ncyhzdGF0ZSwgZGVzdGluYXRpb24sIHNvdXJjZSwgb3ZlcnJpZGFibGVLZXlzKSB7XG4gIHZhciBzb3VyY2VLZXlzLCBrZXksIGluZGV4LCBxdWFudGl0eTtcblxuICBpZiAoIWNvbW1vbi5pc09iamVjdChzb3VyY2UpKSB7XG4gICAgdGhyb3dFcnJvcihzdGF0ZSwgJ2Nhbm5vdCBtZXJnZSBtYXBwaW5nczsgdGhlIHByb3ZpZGVkIHNvdXJjZSBvYmplY3QgaXMgdW5hY2NlcHRhYmxlJyk7XG4gIH1cblxuICBzb3VyY2VLZXlzID0gT2JqZWN0LmtleXMoc291cmNlKTtcblxuICBmb3IgKGluZGV4ID0gMCwgcXVhbnRpdHkgPSBzb3VyY2VLZXlzLmxlbmd0aDsgaW5kZXggPCBxdWFudGl0eTsgaW5kZXggKz0gMSkge1xuICAgIGtleSA9IHNvdXJjZUtleXNbaW5kZXhdO1xuXG4gICAgaWYgKCFfaGFzT3duUHJvcGVydHkuY2FsbChkZXN0aW5hdGlvbiwga2V5KSkge1xuICAgICAgZGVzdGluYXRpb25ba2V5XSA9IHNvdXJjZVtrZXldO1xuICAgICAgb3ZlcnJpZGFibGVLZXlzW2tleV0gPSB0cnVlO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBzdG9yZU1hcHBpbmdQYWlyKHN0YXRlLCBfcmVzdWx0LCBvdmVycmlkYWJsZUtleXMsIGtleVRhZywga2V5Tm9kZSwgdmFsdWVOb2RlLCBzdGFydExpbmUsIHN0YXJ0UG9zKSB7XG4gIHZhciBpbmRleCwgcXVhbnRpdHk7XG5cbiAgLy8gVGhlIG91dHB1dCBpcyBhIHBsYWluIG9iamVjdCBoZXJlLCBzbyBrZXlzIGNhbiBvbmx5IGJlIHN0cmluZ3MuXG4gIC8vIFdlIG5lZWQgdG8gY29udmVydCBrZXlOb2RlIHRvIGEgc3RyaW5nLCBidXQgZG9pbmcgc28gY2FuIGhhbmcgdGhlIHByb2Nlc3NcbiAgLy8gKGRlZXBseSBuZXN0ZWQgYXJyYXlzIHRoYXQgZXhwbG9kZSBleHBvbmVudGlhbGx5IHVzaW5nIGFsaWFzZXMpLlxuICBpZiAoQXJyYXkuaXNBcnJheShrZXlOb2RlKSkge1xuICAgIGtleU5vZGUgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChrZXlOb2RlKTtcblxuICAgIGZvciAoaW5kZXggPSAwLCBxdWFudGl0eSA9IGtleU5vZGUubGVuZ3RoOyBpbmRleCA8IHF1YW50aXR5OyBpbmRleCArPSAxKSB7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShrZXlOb2RlW2luZGV4XSkpIHtcbiAgICAgICAgdGhyb3dFcnJvcihzdGF0ZSwgJ25lc3RlZCBhcnJheXMgYXJlIG5vdCBzdXBwb3J0ZWQgaW5zaWRlIGtleXMnKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGVvZiBrZXlOb2RlID09PSAnb2JqZWN0JyAmJiBfY2xhc3Moa2V5Tm9kZVtpbmRleF0pID09PSAnW29iamVjdCBPYmplY3RdJykge1xuICAgICAgICBrZXlOb2RlW2luZGV4XSA9ICdbb2JqZWN0IE9iamVjdF0nO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIEF2b2lkIGNvZGUgZXhlY3V0aW9uIGluIGxvYWQoKSB2aWEgdG9TdHJpbmcgcHJvcGVydHlcbiAgLy8gKHN0aWxsIHVzZSBpdHMgb3duIHRvU3RyaW5nIGZvciBhcnJheXMsIHRpbWVzdGFtcHMsXG4gIC8vIGFuZCB3aGF0ZXZlciB1c2VyIHNjaGVtYSBleHRlbnNpb25zIGhhcHBlbiB0byBoYXZlIEBAdG9TdHJpbmdUYWcpXG4gIGlmICh0eXBlb2Yga2V5Tm9kZSA9PT0gJ29iamVjdCcgJiYgX2NsYXNzKGtleU5vZGUpID09PSAnW29iamVjdCBPYmplY3RdJykge1xuICAgIGtleU5vZGUgPSAnW29iamVjdCBPYmplY3RdJztcbiAgfVxuXG5cbiAga2V5Tm9kZSA9IFN0cmluZyhrZXlOb2RlKTtcblxuICBpZiAoX3Jlc3VsdCA9PT0gbnVsbCkge1xuICAgIF9yZXN1bHQgPSB7fTtcbiAgfVxuXG4gIGlmIChrZXlUYWcgPT09ICd0YWc6eWFtbC5vcmcsMjAwMjptZXJnZScpIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZU5vZGUpKSB7XG4gICAgICBmb3IgKGluZGV4ID0gMCwgcXVhbnRpdHkgPSB2YWx1ZU5vZGUubGVuZ3RoOyBpbmRleCA8IHF1YW50aXR5OyBpbmRleCArPSAxKSB7XG4gICAgICAgIG1lcmdlTWFwcGluZ3Moc3RhdGUsIF9yZXN1bHQsIHZhbHVlTm9kZVtpbmRleF0sIG92ZXJyaWRhYmxlS2V5cyk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIG1lcmdlTWFwcGluZ3Moc3RhdGUsIF9yZXN1bHQsIHZhbHVlTm9kZSwgb3ZlcnJpZGFibGVLZXlzKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgaWYgKCFzdGF0ZS5qc29uICYmXG4gICAgICAgICFfaGFzT3duUHJvcGVydHkuY2FsbChvdmVycmlkYWJsZUtleXMsIGtleU5vZGUpICYmXG4gICAgICAgIF9oYXNPd25Qcm9wZXJ0eS5jYWxsKF9yZXN1bHQsIGtleU5vZGUpKSB7XG4gICAgICBzdGF0ZS5saW5lID0gc3RhcnRMaW5lIHx8IHN0YXRlLmxpbmU7XG4gICAgICBzdGF0ZS5wb3NpdGlvbiA9IHN0YXJ0UG9zIHx8IHN0YXRlLnBvc2l0aW9uO1xuICAgICAgdGhyb3dFcnJvcihzdGF0ZSwgJ2R1cGxpY2F0ZWQgbWFwcGluZyBrZXknKTtcbiAgICB9XG4gICAgX3Jlc3VsdFtrZXlOb2RlXSA9IHZhbHVlTm9kZTtcbiAgICBkZWxldGUgb3ZlcnJpZGFibGVLZXlzW2tleU5vZGVdO1xuICB9XG5cbiAgcmV0dXJuIF9yZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIHJlYWRMaW5lQnJlYWsoc3RhdGUpIHtcbiAgdmFyIGNoO1xuXG4gIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbik7XG5cbiAgaWYgKGNoID09PSAweDBBLyogTEYgKi8pIHtcbiAgICBzdGF0ZS5wb3NpdGlvbisrO1xuICB9IGVsc2UgaWYgKGNoID09PSAweDBELyogQ1IgKi8pIHtcbiAgICBzdGF0ZS5wb3NpdGlvbisrO1xuICAgIGlmIChzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlLnBvc2l0aW9uKSA9PT0gMHgwQS8qIExGICovKSB7XG4gICAgICBzdGF0ZS5wb3NpdGlvbisrO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB0aHJvd0Vycm9yKHN0YXRlLCAnYSBsaW5lIGJyZWFrIGlzIGV4cGVjdGVkJyk7XG4gIH1cblxuICBzdGF0ZS5saW5lICs9IDE7XG4gIHN0YXRlLmxpbmVTdGFydCA9IHN0YXRlLnBvc2l0aW9uO1xufVxuXG5mdW5jdGlvbiBza2lwU2VwYXJhdGlvblNwYWNlKHN0YXRlLCBhbGxvd0NvbW1lbnRzLCBjaGVja0luZGVudCkge1xuICB2YXIgbGluZUJyZWFrcyA9IDAsXG4gICAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24pO1xuXG4gIHdoaWxlIChjaCAhPT0gMCkge1xuICAgIHdoaWxlIChpc19XSElURV9TUEFDRShjaCkpIHtcbiAgICAgIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdCgrK3N0YXRlLnBvc2l0aW9uKTtcbiAgICB9XG5cbiAgICBpZiAoYWxsb3dDb21tZW50cyAmJiBjaCA9PT0gMHgyMy8qICMgKi8pIHtcbiAgICAgIGRvIHtcbiAgICAgICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUucG9zaXRpb24pO1xuICAgICAgfSB3aGlsZSAoY2ggIT09IDB4MEEvKiBMRiAqLyAmJiBjaCAhPT0gMHgwRC8qIENSICovICYmIGNoICE9PSAwKTtcbiAgICB9XG5cbiAgICBpZiAoaXNfRU9MKGNoKSkge1xuICAgICAgcmVhZExpbmVCcmVhayhzdGF0ZSk7XG5cbiAgICAgIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbik7XG4gICAgICBsaW5lQnJlYWtzKys7XG4gICAgICBzdGF0ZS5saW5lSW5kZW50ID0gMDtcblxuICAgICAgd2hpbGUgKGNoID09PSAweDIwLyogU3BhY2UgKi8pIHtcbiAgICAgICAgc3RhdGUubGluZUluZGVudCsrO1xuICAgICAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoKytzdGF0ZS5wb3NpdGlvbik7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIGlmIChjaGVja0luZGVudCAhPT0gLTEgJiYgbGluZUJyZWFrcyAhPT0gMCAmJiBzdGF0ZS5saW5lSW5kZW50IDwgY2hlY2tJbmRlbnQpIHtcbiAgICB0aHJvd1dhcm5pbmcoc3RhdGUsICdkZWZpY2llbnQgaW5kZW50YXRpb24nKTtcbiAgfVxuXG4gIHJldHVybiBsaW5lQnJlYWtzO1xufVxuXG5mdW5jdGlvbiB0ZXN0RG9jdW1lbnRTZXBhcmF0b3Ioc3RhdGUpIHtcbiAgdmFyIF9wb3NpdGlvbiA9IHN0YXRlLnBvc2l0aW9uLFxuICAgICAgY2g7XG5cbiAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KF9wb3NpdGlvbik7XG5cbiAgLy8gQ29uZGl0aW9uIHN0YXRlLnBvc2l0aW9uID09PSBzdGF0ZS5saW5lU3RhcnQgaXMgdGVzdGVkXG4gIC8vIGluIHBhcmVudCBvbiBlYWNoIGNhbGwsIGZvciBlZmZpY2llbmN5LiBObyBuZWVkcyB0byB0ZXN0IGhlcmUgYWdhaW4uXG4gIGlmICgoY2ggPT09IDB4MkQvKiAtICovIHx8IGNoID09PSAweDJFLyogLiAqLykgJiZcbiAgICAgIGNoID09PSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KF9wb3NpdGlvbiArIDEpICYmXG4gICAgICBjaCA9PT0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChfcG9zaXRpb24gKyAyKSkge1xuXG4gICAgX3Bvc2l0aW9uICs9IDM7XG5cbiAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoX3Bvc2l0aW9uKTtcblxuICAgIGlmIChjaCA9PT0gMCB8fCBpc19XU19PUl9FT0woY2gpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIHdyaXRlRm9sZGVkTGluZXMoc3RhdGUsIGNvdW50KSB7XG4gIGlmIChjb3VudCA9PT0gMSkge1xuICAgIHN0YXRlLnJlc3VsdCArPSAnICc7XG4gIH0gZWxzZSBpZiAoY291bnQgPiAxKSB7XG4gICAgc3RhdGUucmVzdWx0ICs9IGNvbW1vbi5yZXBlYXQoJ1xcbicsIGNvdW50IC0gMSk7XG4gIH1cbn1cblxuXG5mdW5jdGlvbiByZWFkUGxhaW5TY2FsYXIoc3RhdGUsIG5vZGVJbmRlbnQsIHdpdGhpbkZsb3dDb2xsZWN0aW9uKSB7XG4gIHZhciBwcmVjZWRpbmcsXG4gICAgICBmb2xsb3dpbmcsXG4gICAgICBjYXB0dXJlU3RhcnQsXG4gICAgICBjYXB0dXJlRW5kLFxuICAgICAgaGFzUGVuZGluZ0NvbnRlbnQsXG4gICAgICBfbGluZSxcbiAgICAgIF9saW5lU3RhcnQsXG4gICAgICBfbGluZUluZGVudCxcbiAgICAgIF9raW5kID0gc3RhdGUua2luZCxcbiAgICAgIF9yZXN1bHQgPSBzdGF0ZS5yZXN1bHQsXG4gICAgICBjaDtcblxuICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24pO1xuXG4gIGlmIChpc19XU19PUl9FT0woY2gpICAgICAgfHxcbiAgICAgIGlzX0ZMT1dfSU5ESUNBVE9SKGNoKSB8fFxuICAgICAgY2ggPT09IDB4MjMvKiAjICovICAgIHx8XG4gICAgICBjaCA9PT0gMHgyNi8qICYgKi8gICAgfHxcbiAgICAgIGNoID09PSAweDJBLyogKiAqLyAgICB8fFxuICAgICAgY2ggPT09IDB4MjEvKiAhICovICAgIHx8XG4gICAgICBjaCA9PT0gMHg3Qy8qIHwgKi8gICAgfHxcbiAgICAgIGNoID09PSAweDNFLyogPiAqLyAgICB8fFxuICAgICAgY2ggPT09IDB4MjcvKiAnICovICAgIHx8XG4gICAgICBjaCA9PT0gMHgyMi8qIFwiICovICAgIHx8XG4gICAgICBjaCA9PT0gMHgyNS8qICUgKi8gICAgfHxcbiAgICAgIGNoID09PSAweDQwLyogQCAqLyAgICB8fFxuICAgICAgY2ggPT09IDB4NjAvKiBgICovKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKGNoID09PSAweDNGLyogPyAqLyB8fCBjaCA9PT0gMHgyRC8qIC0gKi8pIHtcbiAgICBmb2xsb3dpbmcgPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlLnBvc2l0aW9uICsgMSk7XG5cbiAgICBpZiAoaXNfV1NfT1JfRU9MKGZvbGxvd2luZykgfHxcbiAgICAgICAgd2l0aGluRmxvd0NvbGxlY3Rpb24gJiYgaXNfRkxPV19JTkRJQ0FUT1IoZm9sbG93aW5nKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRlLmtpbmQgPSAnc2NhbGFyJztcbiAgc3RhdGUucmVzdWx0ID0gJyc7XG4gIGNhcHR1cmVTdGFydCA9IGNhcHR1cmVFbmQgPSBzdGF0ZS5wb3NpdGlvbjtcbiAgaGFzUGVuZGluZ0NvbnRlbnQgPSBmYWxzZTtcblxuICB3aGlsZSAoY2ggIT09IDApIHtcbiAgICBpZiAoY2ggPT09IDB4M0EvKiA6ICovKSB7XG4gICAgICBmb2xsb3dpbmcgPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlLnBvc2l0aW9uICsgMSk7XG5cbiAgICAgIGlmIChpc19XU19PUl9FT0woZm9sbG93aW5nKSB8fFxuICAgICAgICAgIHdpdGhpbkZsb3dDb2xsZWN0aW9uICYmIGlzX0ZMT1dfSU5ESUNBVE9SKGZvbGxvd2luZykpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICB9IGVsc2UgaWYgKGNoID09PSAweDIzLyogIyAqLykge1xuICAgICAgcHJlY2VkaW5nID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbiAtIDEpO1xuXG4gICAgICBpZiAoaXNfV1NfT1JfRU9MKHByZWNlZGluZykpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICB9IGVsc2UgaWYgKChzdGF0ZS5wb3NpdGlvbiA9PT0gc3RhdGUubGluZVN0YXJ0ICYmIHRlc3REb2N1bWVudFNlcGFyYXRvcihzdGF0ZSkpIHx8XG4gICAgICAgICAgICAgICB3aXRoaW5GbG93Q29sbGVjdGlvbiAmJiBpc19GTE9XX0lORElDQVRPUihjaCkpIHtcbiAgICAgIGJyZWFrO1xuXG4gICAgfSBlbHNlIGlmIChpc19FT0woY2gpKSB7XG4gICAgICBfbGluZSA9IHN0YXRlLmxpbmU7XG4gICAgICBfbGluZVN0YXJ0ID0gc3RhdGUubGluZVN0YXJ0O1xuICAgICAgX2xpbmVJbmRlbnQgPSBzdGF0ZS5saW5lSW5kZW50O1xuICAgICAgc2tpcFNlcGFyYXRpb25TcGFjZShzdGF0ZSwgZmFsc2UsIC0xKTtcblxuICAgICAgaWYgKHN0YXRlLmxpbmVJbmRlbnQgPj0gbm9kZUluZGVudCkge1xuICAgICAgICBoYXNQZW5kaW5nQ29udGVudCA9IHRydWU7XG4gICAgICAgIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbik7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3RhdGUucG9zaXRpb24gPSBjYXB0dXJlRW5kO1xuICAgICAgICBzdGF0ZS5saW5lID0gX2xpbmU7XG4gICAgICAgIHN0YXRlLmxpbmVTdGFydCA9IF9saW5lU3RhcnQ7XG4gICAgICAgIHN0YXRlLmxpbmVJbmRlbnQgPSBfbGluZUluZGVudDtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGhhc1BlbmRpbmdDb250ZW50KSB7XG4gICAgICBjYXB0dXJlU2VnbWVudChzdGF0ZSwgY2FwdHVyZVN0YXJ0LCBjYXB0dXJlRW5kLCBmYWxzZSk7XG4gICAgICB3cml0ZUZvbGRlZExpbmVzKHN0YXRlLCBzdGF0ZS5saW5lIC0gX2xpbmUpO1xuICAgICAgY2FwdHVyZVN0YXJ0ID0gY2FwdHVyZUVuZCA9IHN0YXRlLnBvc2l0aW9uO1xuICAgICAgaGFzUGVuZGluZ0NvbnRlbnQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoIWlzX1dISVRFX1NQQUNFKGNoKSkge1xuICAgICAgY2FwdHVyZUVuZCA9IHN0YXRlLnBvc2l0aW9uICsgMTtcbiAgICB9XG5cbiAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoKytzdGF0ZS5wb3NpdGlvbik7XG4gIH1cblxuICBjYXB0dXJlU2VnbWVudChzdGF0ZSwgY2FwdHVyZVN0YXJ0LCBjYXB0dXJlRW5kLCBmYWxzZSk7XG5cbiAgaWYgKHN0YXRlLnJlc3VsdCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgc3RhdGUua2luZCA9IF9raW5kO1xuICBzdGF0ZS5yZXN1bHQgPSBfcmVzdWx0O1xuICByZXR1cm4gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIHJlYWRTaW5nbGVRdW90ZWRTY2FsYXIoc3RhdGUsIG5vZGVJbmRlbnQpIHtcbiAgdmFyIGNoLFxuICAgICAgY2FwdHVyZVN0YXJ0LCBjYXB0dXJlRW5kO1xuXG4gIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbik7XG5cbiAgaWYgKGNoICE9PSAweDI3LyogJyAqLykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHN0YXRlLmtpbmQgPSAnc2NhbGFyJztcbiAgc3RhdGUucmVzdWx0ID0gJyc7XG4gIHN0YXRlLnBvc2l0aW9uKys7XG4gIGNhcHR1cmVTdGFydCA9IGNhcHR1cmVFbmQgPSBzdGF0ZS5wb3NpdGlvbjtcblxuICB3aGlsZSAoKGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbikpICE9PSAwKSB7XG4gICAgaWYgKGNoID09PSAweDI3LyogJyAqLykge1xuICAgICAgY2FwdHVyZVNlZ21lbnQoc3RhdGUsIGNhcHR1cmVTdGFydCwgc3RhdGUucG9zaXRpb24sIHRydWUpO1xuICAgICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUucG9zaXRpb24pO1xuXG4gICAgICBpZiAoY2ggPT09IDB4MjcvKiAnICovKSB7XG4gICAgICAgIGNhcHR1cmVTdGFydCA9IHN0YXRlLnBvc2l0aW9uO1xuICAgICAgICBzdGF0ZS5wb3NpdGlvbisrO1xuICAgICAgICBjYXB0dXJlRW5kID0gc3RhdGUucG9zaXRpb247XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cblxuICAgIH0gZWxzZSBpZiAoaXNfRU9MKGNoKSkge1xuICAgICAgY2FwdHVyZVNlZ21lbnQoc3RhdGUsIGNhcHR1cmVTdGFydCwgY2FwdHVyZUVuZCwgdHJ1ZSk7XG4gICAgICB3cml0ZUZvbGRlZExpbmVzKHN0YXRlLCBza2lwU2VwYXJhdGlvblNwYWNlKHN0YXRlLCBmYWxzZSwgbm9kZUluZGVudCkpO1xuICAgICAgY2FwdHVyZVN0YXJ0ID0gY2FwdHVyZUVuZCA9IHN0YXRlLnBvc2l0aW9uO1xuXG4gICAgfSBlbHNlIGlmIChzdGF0ZS5wb3NpdGlvbiA9PT0gc3RhdGUubGluZVN0YXJ0ICYmIHRlc3REb2N1bWVudFNlcGFyYXRvcihzdGF0ZSkpIHtcbiAgICAgIHRocm93RXJyb3Ioc3RhdGUsICd1bmV4cGVjdGVkIGVuZCBvZiB0aGUgZG9jdW1lbnQgd2l0aGluIGEgc2luZ2xlIHF1b3RlZCBzY2FsYXInKTtcblxuICAgIH0gZWxzZSB7XG4gICAgICBzdGF0ZS5wb3NpdGlvbisrO1xuICAgICAgY2FwdHVyZUVuZCA9IHN0YXRlLnBvc2l0aW9uO1xuICAgIH1cbiAgfVxuXG4gIHRocm93RXJyb3Ioc3RhdGUsICd1bmV4cGVjdGVkIGVuZCBvZiB0aGUgc3RyZWFtIHdpdGhpbiBhIHNpbmdsZSBxdW90ZWQgc2NhbGFyJyk7XG59XG5cbmZ1bmN0aW9uIHJlYWREb3VibGVRdW90ZWRTY2FsYXIoc3RhdGUsIG5vZGVJbmRlbnQpIHtcbiAgdmFyIGNhcHR1cmVTdGFydCxcbiAgICAgIGNhcHR1cmVFbmQsXG4gICAgICBoZXhMZW5ndGgsXG4gICAgICBoZXhSZXN1bHQsXG4gICAgICB0bXAsXG4gICAgICBjaDtcblxuICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24pO1xuXG4gIGlmIChjaCAhPT0gMHgyMi8qIFwiICovKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgc3RhdGUua2luZCA9ICdzY2FsYXInO1xuICBzdGF0ZS5yZXN1bHQgPSAnJztcbiAgc3RhdGUucG9zaXRpb24rKztcbiAgY2FwdHVyZVN0YXJ0ID0gY2FwdHVyZUVuZCA9IHN0YXRlLnBvc2l0aW9uO1xuXG4gIHdoaWxlICgoY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlLnBvc2l0aW9uKSkgIT09IDApIHtcbiAgICBpZiAoY2ggPT09IDB4MjIvKiBcIiAqLykge1xuICAgICAgY2FwdHVyZVNlZ21lbnQoc3RhdGUsIGNhcHR1cmVTdGFydCwgc3RhdGUucG9zaXRpb24sIHRydWUpO1xuICAgICAgc3RhdGUucG9zaXRpb24rKztcbiAgICAgIHJldHVybiB0cnVlO1xuXG4gICAgfSBlbHNlIGlmIChjaCA9PT0gMHg1Qy8qIFxcICovKSB7XG4gICAgICBjYXB0dXJlU2VnbWVudChzdGF0ZSwgY2FwdHVyZVN0YXJ0LCBzdGF0ZS5wb3NpdGlvbiwgdHJ1ZSk7XG4gICAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoKytzdGF0ZS5wb3NpdGlvbik7XG5cbiAgICAgIGlmIChpc19FT0woY2gpKSB7XG4gICAgICAgIHNraXBTZXBhcmF0aW9uU3BhY2Uoc3RhdGUsIGZhbHNlLCBub2RlSW5kZW50KTtcblxuICAgICAgICAvLyBUT0RPOiByZXdvcmsgdG8gaW5saW5lIGZuIHdpdGggbm8gdHlwZSBjYXN0P1xuICAgICAgfSBlbHNlIGlmIChjaCA8IDI1NiAmJiBzaW1wbGVFc2NhcGVDaGVja1tjaF0pIHtcbiAgICAgICAgc3RhdGUucmVzdWx0ICs9IHNpbXBsZUVzY2FwZU1hcFtjaF07XG4gICAgICAgIHN0YXRlLnBvc2l0aW9uKys7XG5cbiAgICAgIH0gZWxzZSBpZiAoKHRtcCA9IGVzY2FwZWRIZXhMZW4oY2gpKSA+IDApIHtcbiAgICAgICAgaGV4TGVuZ3RoID0gdG1wO1xuICAgICAgICBoZXhSZXN1bHQgPSAwO1xuXG4gICAgICAgIGZvciAoOyBoZXhMZW5ndGggPiAwOyBoZXhMZW5ndGgtLSkge1xuICAgICAgICAgIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdCgrK3N0YXRlLnBvc2l0aW9uKTtcblxuICAgICAgICAgIGlmICgodG1wID0gZnJvbUhleENvZGUoY2gpKSA+PSAwKSB7XG4gICAgICAgICAgICBoZXhSZXN1bHQgPSAoaGV4UmVzdWx0IDw8IDQpICsgdG1wO1xuXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93RXJyb3Ioc3RhdGUsICdleHBlY3RlZCBoZXhhZGVjaW1hbCBjaGFyYWN0ZXInKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBzdGF0ZS5yZXN1bHQgKz0gY2hhckZyb21Db2RlcG9pbnQoaGV4UmVzdWx0KTtcblxuICAgICAgICBzdGF0ZS5wb3NpdGlvbisrO1xuXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvd0Vycm9yKHN0YXRlLCAndW5rbm93biBlc2NhcGUgc2VxdWVuY2UnKTtcbiAgICAgIH1cblxuICAgICAgY2FwdHVyZVN0YXJ0ID0gY2FwdHVyZUVuZCA9IHN0YXRlLnBvc2l0aW9uO1xuXG4gICAgfSBlbHNlIGlmIChpc19FT0woY2gpKSB7XG4gICAgICBjYXB0dXJlU2VnbWVudChzdGF0ZSwgY2FwdHVyZVN0YXJ0LCBjYXB0dXJlRW5kLCB0cnVlKTtcbiAgICAgIHdyaXRlRm9sZGVkTGluZXMoc3RhdGUsIHNraXBTZXBhcmF0aW9uU3BhY2Uoc3RhdGUsIGZhbHNlLCBub2RlSW5kZW50KSk7XG4gICAgICBjYXB0dXJlU3RhcnQgPSBjYXB0dXJlRW5kID0gc3RhdGUucG9zaXRpb247XG5cbiAgICB9IGVsc2UgaWYgKHN0YXRlLnBvc2l0aW9uID09PSBzdGF0ZS5saW5lU3RhcnQgJiYgdGVzdERvY3VtZW50U2VwYXJhdG9yKHN0YXRlKSkge1xuICAgICAgdGhyb3dFcnJvcihzdGF0ZSwgJ3VuZXhwZWN0ZWQgZW5kIG9mIHRoZSBkb2N1bWVudCB3aXRoaW4gYSBkb3VibGUgcXVvdGVkIHNjYWxhcicpO1xuXG4gICAgfSBlbHNlIHtcbiAgICAgIHN0YXRlLnBvc2l0aW9uKys7XG4gICAgICBjYXB0dXJlRW5kID0gc3RhdGUucG9zaXRpb247XG4gICAgfVxuICB9XG5cbiAgdGhyb3dFcnJvcihzdGF0ZSwgJ3VuZXhwZWN0ZWQgZW5kIG9mIHRoZSBzdHJlYW0gd2l0aGluIGEgZG91YmxlIHF1b3RlZCBzY2FsYXInKTtcbn1cblxuZnVuY3Rpb24gcmVhZEZsb3dDb2xsZWN0aW9uKHN0YXRlLCBub2RlSW5kZW50KSB7XG4gIHZhciByZWFkTmV4dCA9IHRydWUsXG4gICAgICBfbGluZSxcbiAgICAgIF90YWcgICAgID0gc3RhdGUudGFnLFxuICAgICAgX3Jlc3VsdCxcbiAgICAgIF9hbmNob3IgID0gc3RhdGUuYW5jaG9yLFxuICAgICAgZm9sbG93aW5nLFxuICAgICAgdGVybWluYXRvcixcbiAgICAgIGlzUGFpcixcbiAgICAgIGlzRXhwbGljaXRQYWlyLFxuICAgICAgaXNNYXBwaW5nLFxuICAgICAgb3ZlcnJpZGFibGVLZXlzID0ge30sXG4gICAgICBrZXlOb2RlLFxuICAgICAga2V5VGFnLFxuICAgICAgdmFsdWVOb2RlLFxuICAgICAgY2g7XG5cbiAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlLnBvc2l0aW9uKTtcblxuICBpZiAoY2ggPT09IDB4NUIvKiBbICovKSB7XG4gICAgdGVybWluYXRvciA9IDB4NUQ7LyogXSAqL1xuICAgIGlzTWFwcGluZyA9IGZhbHNlO1xuICAgIF9yZXN1bHQgPSBbXTtcbiAgfSBlbHNlIGlmIChjaCA9PT0gMHg3Qi8qIHsgKi8pIHtcbiAgICB0ZXJtaW5hdG9yID0gMHg3RDsvKiB9ICovXG4gICAgaXNNYXBwaW5nID0gdHJ1ZTtcbiAgICBfcmVzdWx0ID0ge307XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKHN0YXRlLmFuY2hvciAhPT0gbnVsbCkge1xuICAgIHN0YXRlLmFuY2hvck1hcFtzdGF0ZS5hbmNob3JdID0gX3Jlc3VsdDtcbiAgfVxuXG4gIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdCgrK3N0YXRlLnBvc2l0aW9uKTtcblxuICB3aGlsZSAoY2ggIT09IDApIHtcbiAgICBza2lwU2VwYXJhdGlvblNwYWNlKHN0YXRlLCB0cnVlLCBub2RlSW5kZW50KTtcblxuICAgIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbik7XG5cbiAgICBpZiAoY2ggPT09IHRlcm1pbmF0b3IpIHtcbiAgICAgIHN0YXRlLnBvc2l0aW9uKys7XG4gICAgICBzdGF0ZS50YWcgPSBfdGFnO1xuICAgICAgc3RhdGUuYW5jaG9yID0gX2FuY2hvcjtcbiAgICAgIHN0YXRlLmtpbmQgPSBpc01hcHBpbmcgPyAnbWFwcGluZycgOiAnc2VxdWVuY2UnO1xuICAgICAgc3RhdGUucmVzdWx0ID0gX3Jlc3VsdDtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gZWxzZSBpZiAoIXJlYWROZXh0KSB7XG4gICAgICB0aHJvd0Vycm9yKHN0YXRlLCAnbWlzc2VkIGNvbW1hIGJldHdlZW4gZmxvdyBjb2xsZWN0aW9uIGVudHJpZXMnKTtcbiAgICB9XG5cbiAgICBrZXlUYWcgPSBrZXlOb2RlID0gdmFsdWVOb2RlID0gbnVsbDtcbiAgICBpc1BhaXIgPSBpc0V4cGxpY2l0UGFpciA9IGZhbHNlO1xuXG4gICAgaWYgKGNoID09PSAweDNGLyogPyAqLykge1xuICAgICAgZm9sbG93aW5nID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbiArIDEpO1xuXG4gICAgICBpZiAoaXNfV1NfT1JfRU9MKGZvbGxvd2luZykpIHtcbiAgICAgICAgaXNQYWlyID0gaXNFeHBsaWNpdFBhaXIgPSB0cnVlO1xuICAgICAgICBzdGF0ZS5wb3NpdGlvbisrO1xuICAgICAgICBza2lwU2VwYXJhdGlvblNwYWNlKHN0YXRlLCB0cnVlLCBub2RlSW5kZW50KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBfbGluZSA9IHN0YXRlLmxpbmU7XG4gICAgY29tcG9zZU5vZGUoc3RhdGUsIG5vZGVJbmRlbnQsIENPTlRFWFRfRkxPV19JTiwgZmFsc2UsIHRydWUpO1xuICAgIGtleVRhZyA9IHN0YXRlLnRhZztcbiAgICBrZXlOb2RlID0gc3RhdGUucmVzdWx0O1xuICAgIHNraXBTZXBhcmF0aW9uU3BhY2Uoc3RhdGUsIHRydWUsIG5vZGVJbmRlbnQpO1xuXG4gICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlLnBvc2l0aW9uKTtcblxuICAgIGlmICgoaXNFeHBsaWNpdFBhaXIgfHwgc3RhdGUubGluZSA9PT0gX2xpbmUpICYmIGNoID09PSAweDNBLyogOiAqLykge1xuICAgICAgaXNQYWlyID0gdHJ1ZTtcbiAgICAgIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdCgrK3N0YXRlLnBvc2l0aW9uKTtcbiAgICAgIHNraXBTZXBhcmF0aW9uU3BhY2Uoc3RhdGUsIHRydWUsIG5vZGVJbmRlbnQpO1xuICAgICAgY29tcG9zZU5vZGUoc3RhdGUsIG5vZGVJbmRlbnQsIENPTlRFWFRfRkxPV19JTiwgZmFsc2UsIHRydWUpO1xuICAgICAgdmFsdWVOb2RlID0gc3RhdGUucmVzdWx0O1xuICAgIH1cblxuICAgIGlmIChpc01hcHBpbmcpIHtcbiAgICAgIHN0b3JlTWFwcGluZ1BhaXIoc3RhdGUsIF9yZXN1bHQsIG92ZXJyaWRhYmxlS2V5cywga2V5VGFnLCBrZXlOb2RlLCB2YWx1ZU5vZGUpO1xuICAgIH0gZWxzZSBpZiAoaXNQYWlyKSB7XG4gICAgICBfcmVzdWx0LnB1c2goc3RvcmVNYXBwaW5nUGFpcihzdGF0ZSwgbnVsbCwgb3ZlcnJpZGFibGVLZXlzLCBrZXlUYWcsIGtleU5vZGUsIHZhbHVlTm9kZSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBfcmVzdWx0LnB1c2goa2V5Tm9kZSk7XG4gICAgfVxuXG4gICAgc2tpcFNlcGFyYXRpb25TcGFjZShzdGF0ZSwgdHJ1ZSwgbm9kZUluZGVudCk7XG5cbiAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24pO1xuXG4gICAgaWYgKGNoID09PSAweDJDLyogLCAqLykge1xuICAgICAgcmVhZE5leHQgPSB0cnVlO1xuICAgICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUucG9zaXRpb24pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZWFkTmV4dCA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHRocm93RXJyb3Ioc3RhdGUsICd1bmV4cGVjdGVkIGVuZCBvZiB0aGUgc3RyZWFtIHdpdGhpbiBhIGZsb3cgY29sbGVjdGlvbicpO1xufVxuXG5mdW5jdGlvbiByZWFkQmxvY2tTY2FsYXIoc3RhdGUsIG5vZGVJbmRlbnQpIHtcbiAgdmFyIGNhcHR1cmVTdGFydCxcbiAgICAgIGZvbGRpbmcsXG4gICAgICBjaG9tcGluZyAgICAgICA9IENIT01QSU5HX0NMSVAsXG4gICAgICBkaWRSZWFkQ29udGVudCA9IGZhbHNlLFxuICAgICAgZGV0ZWN0ZWRJbmRlbnQgPSBmYWxzZSxcbiAgICAgIHRleHRJbmRlbnQgICAgID0gbm9kZUluZGVudCxcbiAgICAgIGVtcHR5TGluZXMgICAgID0gMCxcbiAgICAgIGF0TW9yZUluZGVudGVkID0gZmFsc2UsXG4gICAgICB0bXAsXG4gICAgICBjaDtcblxuICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24pO1xuXG4gIGlmIChjaCA9PT0gMHg3Qy8qIHwgKi8pIHtcbiAgICBmb2xkaW5nID0gZmFsc2U7XG4gIH0gZWxzZSBpZiAoY2ggPT09IDB4M0UvKiA+ICovKSB7XG4gICAgZm9sZGluZyA9IHRydWU7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgc3RhdGUua2luZCA9ICdzY2FsYXInO1xuICBzdGF0ZS5yZXN1bHQgPSAnJztcblxuICB3aGlsZSAoY2ggIT09IDApIHtcbiAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoKytzdGF0ZS5wb3NpdGlvbik7XG5cbiAgICBpZiAoY2ggPT09IDB4MkIvKiArICovIHx8IGNoID09PSAweDJELyogLSAqLykge1xuICAgICAgaWYgKENIT01QSU5HX0NMSVAgPT09IGNob21waW5nKSB7XG4gICAgICAgIGNob21waW5nID0gKGNoID09PSAweDJCLyogKyAqLykgPyBDSE9NUElOR19LRUVQIDogQ0hPTVBJTkdfU1RSSVA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvd0Vycm9yKHN0YXRlLCAncmVwZWF0IG9mIGEgY2hvbXBpbmcgbW9kZSBpZGVudGlmaWVyJyk7XG4gICAgICB9XG5cbiAgICB9IGVsc2UgaWYgKCh0bXAgPSBmcm9tRGVjaW1hbENvZGUoY2gpKSA+PSAwKSB7XG4gICAgICBpZiAodG1wID09PSAwKSB7XG4gICAgICAgIHRocm93RXJyb3Ioc3RhdGUsICdiYWQgZXhwbGljaXQgaW5kZW50YXRpb24gd2lkdGggb2YgYSBibG9jayBzY2FsYXI7IGl0IGNhbm5vdCBiZSBsZXNzIHRoYW4gb25lJyk7XG4gICAgICB9IGVsc2UgaWYgKCFkZXRlY3RlZEluZGVudCkge1xuICAgICAgICB0ZXh0SW5kZW50ID0gbm9kZUluZGVudCArIHRtcCAtIDE7XG4gICAgICAgIGRldGVjdGVkSW5kZW50ID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93RXJyb3Ioc3RhdGUsICdyZXBlYXQgb2YgYW4gaW5kZW50YXRpb24gd2lkdGggaWRlbnRpZmllcicpO1xuICAgICAgfVxuXG4gICAgfSBlbHNlIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIGlmIChpc19XSElURV9TUEFDRShjaCkpIHtcbiAgICBkbyB7IGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdCgrK3N0YXRlLnBvc2l0aW9uKTsgfVxuICAgIHdoaWxlIChpc19XSElURV9TUEFDRShjaCkpO1xuXG4gICAgaWYgKGNoID09PSAweDIzLyogIyAqLykge1xuICAgICAgZG8geyBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoKytzdGF0ZS5wb3NpdGlvbik7IH1cbiAgICAgIHdoaWxlICghaXNfRU9MKGNoKSAmJiAoY2ggIT09IDApKTtcbiAgICB9XG4gIH1cblxuICB3aGlsZSAoY2ggIT09IDApIHtcbiAgICByZWFkTGluZUJyZWFrKHN0YXRlKTtcbiAgICBzdGF0ZS5saW5lSW5kZW50ID0gMDtcblxuICAgIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbik7XG5cbiAgICB3aGlsZSAoKCFkZXRlY3RlZEluZGVudCB8fCBzdGF0ZS5saW5lSW5kZW50IDwgdGV4dEluZGVudCkgJiZcbiAgICAgICAgICAgKGNoID09PSAweDIwLyogU3BhY2UgKi8pKSB7XG4gICAgICBzdGF0ZS5saW5lSW5kZW50Kys7XG4gICAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoKytzdGF0ZS5wb3NpdGlvbik7XG4gICAgfVxuXG4gICAgaWYgKCFkZXRlY3RlZEluZGVudCAmJiBzdGF0ZS5saW5lSW5kZW50ID4gdGV4dEluZGVudCkge1xuICAgICAgdGV4dEluZGVudCA9IHN0YXRlLmxpbmVJbmRlbnQ7XG4gICAgfVxuXG4gICAgaWYgKGlzX0VPTChjaCkpIHtcbiAgICAgIGVtcHR5TGluZXMrKztcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIC8vIEVuZCBvZiB0aGUgc2NhbGFyLlxuICAgIGlmIChzdGF0ZS5saW5lSW5kZW50IDwgdGV4dEluZGVudCkge1xuXG4gICAgICAvLyBQZXJmb3JtIHRoZSBjaG9tcGluZy5cbiAgICAgIGlmIChjaG9tcGluZyA9PT0gQ0hPTVBJTkdfS0VFUCkge1xuICAgICAgICBzdGF0ZS5yZXN1bHQgKz0gY29tbW9uLnJlcGVhdCgnXFxuJywgZGlkUmVhZENvbnRlbnQgPyAxICsgZW1wdHlMaW5lcyA6IGVtcHR5TGluZXMpO1xuICAgICAgfSBlbHNlIGlmIChjaG9tcGluZyA9PT0gQ0hPTVBJTkdfQ0xJUCkge1xuICAgICAgICBpZiAoZGlkUmVhZENvbnRlbnQpIHsgLy8gaS5lLiBvbmx5IGlmIHRoZSBzY2FsYXIgaXMgbm90IGVtcHR5LlxuICAgICAgICAgIHN0YXRlLnJlc3VsdCArPSAnXFxuJztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBCcmVhayB0aGlzIGB3aGlsZWAgY3ljbGUgYW5kIGdvIHRvIHRoZSBmdW5jaXRvbidzIGVwaWxvZ3VlLlxuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgLy8gRm9sZGVkIHN0eWxlOiB1c2UgZmFuY3kgcnVsZXMgdG8gaGFuZGxlIGxpbmUgYnJlYWtzLlxuICAgIGlmIChmb2xkaW5nKSB7XG5cbiAgICAgIC8vIExpbmVzIHN0YXJ0aW5nIHdpdGggd2hpdGUgc3BhY2UgY2hhcmFjdGVycyAobW9yZS1pbmRlbnRlZCBsaW5lcykgYXJlIG5vdCBmb2xkZWQuXG4gICAgICBpZiAoaXNfV0hJVEVfU1BBQ0UoY2gpKSB7XG4gICAgICAgIGF0TW9yZUluZGVudGVkID0gdHJ1ZTtcbiAgICAgICAgLy8gZXhjZXB0IGZvciB0aGUgZmlyc3QgY29udGVudCBsaW5lIChjZi4gRXhhbXBsZSA4LjEpXG4gICAgICAgIHN0YXRlLnJlc3VsdCArPSBjb21tb24ucmVwZWF0KCdcXG4nLCBkaWRSZWFkQ29udGVudCA/IDEgKyBlbXB0eUxpbmVzIDogZW1wdHlMaW5lcyk7XG5cbiAgICAgIC8vIEVuZCBvZiBtb3JlLWluZGVudGVkIGJsb2NrLlxuICAgICAgfSBlbHNlIGlmIChhdE1vcmVJbmRlbnRlZCkge1xuICAgICAgICBhdE1vcmVJbmRlbnRlZCA9IGZhbHNlO1xuICAgICAgICBzdGF0ZS5yZXN1bHQgKz0gY29tbW9uLnJlcGVhdCgnXFxuJywgZW1wdHlMaW5lcyArIDEpO1xuXG4gICAgICAvLyBKdXN0IG9uZSBsaW5lIGJyZWFrIC0gcGVyY2VpdmUgYXMgdGhlIHNhbWUgbGluZS5cbiAgICAgIH0gZWxzZSBpZiAoZW1wdHlMaW5lcyA9PT0gMCkge1xuICAgICAgICBpZiAoZGlkUmVhZENvbnRlbnQpIHsgLy8gaS5lLiBvbmx5IGlmIHdlIGhhdmUgYWxyZWFkeSByZWFkIHNvbWUgc2NhbGFyIGNvbnRlbnQuXG4gICAgICAgICAgc3RhdGUucmVzdWx0ICs9ICcgJztcbiAgICAgICAgfVxuXG4gICAgICAvLyBTZXZlcmFsIGxpbmUgYnJlYWtzIC0gcGVyY2VpdmUgYXMgZGlmZmVyZW50IGxpbmVzLlxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3RhdGUucmVzdWx0ICs9IGNvbW1vbi5yZXBlYXQoJ1xcbicsIGVtcHR5TGluZXMpO1xuICAgICAgfVxuXG4gICAgLy8gTGl0ZXJhbCBzdHlsZToganVzdCBhZGQgZXhhY3QgbnVtYmVyIG9mIGxpbmUgYnJlYWtzIGJldHdlZW4gY29udGVudCBsaW5lcy5cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gS2VlcCBhbGwgbGluZSBicmVha3MgZXhjZXB0IHRoZSBoZWFkZXIgbGluZSBicmVhay5cbiAgICAgIHN0YXRlLnJlc3VsdCArPSBjb21tb24ucmVwZWF0KCdcXG4nLCBkaWRSZWFkQ29udGVudCA/IDEgKyBlbXB0eUxpbmVzIDogZW1wdHlMaW5lcyk7XG4gICAgfVxuXG4gICAgZGlkUmVhZENvbnRlbnQgPSB0cnVlO1xuICAgIGRldGVjdGVkSW5kZW50ID0gdHJ1ZTtcbiAgICBlbXB0eUxpbmVzID0gMDtcbiAgICBjYXB0dXJlU3RhcnQgPSBzdGF0ZS5wb3NpdGlvbjtcblxuICAgIHdoaWxlICghaXNfRU9MKGNoKSAmJiAoY2ggIT09IDApKSB7XG4gICAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoKytzdGF0ZS5wb3NpdGlvbik7XG4gICAgfVxuXG4gICAgY2FwdHVyZVNlZ21lbnQoc3RhdGUsIGNhcHR1cmVTdGFydCwgc3RhdGUucG9zaXRpb24sIGZhbHNlKTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiByZWFkQmxvY2tTZXF1ZW5jZShzdGF0ZSwgbm9kZUluZGVudCkge1xuICB2YXIgX2xpbmUsXG4gICAgICBfdGFnICAgICAgPSBzdGF0ZS50YWcsXG4gICAgICBfYW5jaG9yICAgPSBzdGF0ZS5hbmNob3IsXG4gICAgICBfcmVzdWx0ICAgPSBbXSxcbiAgICAgIGZvbGxvd2luZyxcbiAgICAgIGRldGVjdGVkICA9IGZhbHNlLFxuICAgICAgY2g7XG5cbiAgaWYgKHN0YXRlLmFuY2hvciAhPT0gbnVsbCkge1xuICAgIHN0YXRlLmFuY2hvck1hcFtzdGF0ZS5hbmNob3JdID0gX3Jlc3VsdDtcbiAgfVxuXG4gIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbik7XG5cbiAgd2hpbGUgKGNoICE9PSAwKSB7XG5cbiAgICBpZiAoY2ggIT09IDB4MkQvKiAtICovKSB7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBmb2xsb3dpbmcgPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlLnBvc2l0aW9uICsgMSk7XG5cbiAgICBpZiAoIWlzX1dTX09SX0VPTChmb2xsb3dpbmcpKSB7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBkZXRlY3RlZCA9IHRydWU7XG4gICAgc3RhdGUucG9zaXRpb24rKztcblxuICAgIGlmIChza2lwU2VwYXJhdGlvblNwYWNlKHN0YXRlLCB0cnVlLCAtMSkpIHtcbiAgICAgIGlmIChzdGF0ZS5saW5lSW5kZW50IDw9IG5vZGVJbmRlbnQpIHtcbiAgICAgICAgX3Jlc3VsdC5wdXNoKG51bGwpO1xuICAgICAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24pO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBfbGluZSA9IHN0YXRlLmxpbmU7XG4gICAgY29tcG9zZU5vZGUoc3RhdGUsIG5vZGVJbmRlbnQsIENPTlRFWFRfQkxPQ0tfSU4sIGZhbHNlLCB0cnVlKTtcbiAgICBfcmVzdWx0LnB1c2goc3RhdGUucmVzdWx0KTtcbiAgICBza2lwU2VwYXJhdGlvblNwYWNlKHN0YXRlLCB0cnVlLCAtMSk7XG5cbiAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24pO1xuXG4gICAgaWYgKChzdGF0ZS5saW5lID09PSBfbGluZSB8fCBzdGF0ZS5saW5lSW5kZW50ID4gbm9kZUluZGVudCkgJiYgKGNoICE9PSAwKSkge1xuICAgICAgdGhyb3dFcnJvcihzdGF0ZSwgJ2JhZCBpbmRlbnRhdGlvbiBvZiBhIHNlcXVlbmNlIGVudHJ5Jyk7XG4gICAgfSBlbHNlIGlmIChzdGF0ZS5saW5lSW5kZW50IDwgbm9kZUluZGVudCkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgaWYgKGRldGVjdGVkKSB7XG4gICAgc3RhdGUudGFnID0gX3RhZztcbiAgICBzdGF0ZS5hbmNob3IgPSBfYW5jaG9yO1xuICAgIHN0YXRlLmtpbmQgPSAnc2VxdWVuY2UnO1xuICAgIHN0YXRlLnJlc3VsdCA9IF9yZXN1bHQ7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5mdW5jdGlvbiByZWFkQmxvY2tNYXBwaW5nKHN0YXRlLCBub2RlSW5kZW50LCBmbG93SW5kZW50KSB7XG4gIHZhciBmb2xsb3dpbmcsXG4gICAgICBhbGxvd0NvbXBhY3QsXG4gICAgICBfbGluZSxcbiAgICAgIF9wb3MsXG4gICAgICBfdGFnICAgICAgICAgID0gc3RhdGUudGFnLFxuICAgICAgX2FuY2hvciAgICAgICA9IHN0YXRlLmFuY2hvcixcbiAgICAgIF9yZXN1bHQgICAgICAgPSB7fSxcbiAgICAgIG92ZXJyaWRhYmxlS2V5cyA9IHt9LFxuICAgICAga2V5VGFnICAgICAgICA9IG51bGwsXG4gICAgICBrZXlOb2RlICAgICAgID0gbnVsbCxcbiAgICAgIHZhbHVlTm9kZSAgICAgPSBudWxsLFxuICAgICAgYXRFeHBsaWNpdEtleSA9IGZhbHNlLFxuICAgICAgZGV0ZWN0ZWQgICAgICA9IGZhbHNlLFxuICAgICAgY2g7XG5cbiAgaWYgKHN0YXRlLmFuY2hvciAhPT0gbnVsbCkge1xuICAgIHN0YXRlLmFuY2hvck1hcFtzdGF0ZS5hbmNob3JdID0gX3Jlc3VsdDtcbiAgfVxuXG4gIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbik7XG5cbiAgd2hpbGUgKGNoICE9PSAwKSB7XG4gICAgZm9sbG93aW5nID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbiArIDEpO1xuICAgIF9saW5lID0gc3RhdGUubGluZTsgLy8gU2F2ZSB0aGUgY3VycmVudCBsaW5lLlxuICAgIF9wb3MgPSBzdGF0ZS5wb3NpdGlvbjtcblxuICAgIC8vXG4gICAgLy8gRXhwbGljaXQgbm90YXRpb24gY2FzZS4gVGhlcmUgYXJlIHR3byBzZXBhcmF0ZSBibG9ja3M6XG4gICAgLy8gZmlyc3QgZm9yIHRoZSBrZXkgKGRlbm90ZWQgYnkgXCI/XCIpIGFuZCBzZWNvbmQgZm9yIHRoZSB2YWx1ZSAoZGVub3RlZCBieSBcIjpcIilcbiAgICAvL1xuICAgIGlmICgoY2ggPT09IDB4M0YvKiA/ICovIHx8IGNoID09PSAweDNBLyogOiAqLykgJiYgaXNfV1NfT1JfRU9MKGZvbGxvd2luZykpIHtcblxuICAgICAgaWYgKGNoID09PSAweDNGLyogPyAqLykge1xuICAgICAgICBpZiAoYXRFeHBsaWNpdEtleSkge1xuICAgICAgICAgIHN0b3JlTWFwcGluZ1BhaXIoc3RhdGUsIF9yZXN1bHQsIG92ZXJyaWRhYmxlS2V5cywga2V5VGFnLCBrZXlOb2RlLCBudWxsKTtcbiAgICAgICAgICBrZXlUYWcgPSBrZXlOb2RlID0gdmFsdWVOb2RlID0gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGRldGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgYXRFeHBsaWNpdEtleSA9IHRydWU7XG4gICAgICAgIGFsbG93Q29tcGFjdCA9IHRydWU7XG5cbiAgICAgIH0gZWxzZSBpZiAoYXRFeHBsaWNpdEtleSkge1xuICAgICAgICAvLyBpLmUuIDB4M0EvKiA6ICovID09PSBjaGFyYWN0ZXIgYWZ0ZXIgdGhlIGV4cGxpY2l0IGtleS5cbiAgICAgICAgYXRFeHBsaWNpdEtleSA9IGZhbHNlO1xuICAgICAgICBhbGxvd0NvbXBhY3QgPSB0cnVlO1xuXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvd0Vycm9yKHN0YXRlLCAnaW5jb21wbGV0ZSBleHBsaWNpdCBtYXBwaW5nIHBhaXI7IGEga2V5IG5vZGUgaXMgbWlzc2VkOyBvciBmb2xsb3dlZCBieSBhIG5vbi10YWJ1bGF0ZWQgZW1wdHkgbGluZScpO1xuICAgICAgfVxuXG4gICAgICBzdGF0ZS5wb3NpdGlvbiArPSAxO1xuICAgICAgY2ggPSBmb2xsb3dpbmc7XG5cbiAgICAvL1xuICAgIC8vIEltcGxpY2l0IG5vdGF0aW9uIGNhc2UuIEZsb3ctc3R5bGUgbm9kZSBhcyB0aGUga2V5IGZpcnN0LCB0aGVuIFwiOlwiLCBhbmQgdGhlIHZhbHVlLlxuICAgIC8vXG4gICAgfSBlbHNlIGlmIChjb21wb3NlTm9kZShzdGF0ZSwgZmxvd0luZGVudCwgQ09OVEVYVF9GTE9XX09VVCwgZmFsc2UsIHRydWUpKSB7XG5cbiAgICAgIGlmIChzdGF0ZS5saW5lID09PSBfbGluZSkge1xuICAgICAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24pO1xuXG4gICAgICAgIHdoaWxlIChpc19XSElURV9TUEFDRShjaCkpIHtcbiAgICAgICAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoKytzdGF0ZS5wb3NpdGlvbik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY2ggPT09IDB4M0EvKiA6ICovKSB7XG4gICAgICAgICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUucG9zaXRpb24pO1xuXG4gICAgICAgICAgaWYgKCFpc19XU19PUl9FT0woY2gpKSB7XG4gICAgICAgICAgICB0aHJvd0Vycm9yKHN0YXRlLCAnYSB3aGl0ZXNwYWNlIGNoYXJhY3RlciBpcyBleHBlY3RlZCBhZnRlciB0aGUga2V5LXZhbHVlIHNlcGFyYXRvciB3aXRoaW4gYSBibG9jayBtYXBwaW5nJyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGF0RXhwbGljaXRLZXkpIHtcbiAgICAgICAgICAgIHN0b3JlTWFwcGluZ1BhaXIoc3RhdGUsIF9yZXN1bHQsIG92ZXJyaWRhYmxlS2V5cywga2V5VGFnLCBrZXlOb2RlLCBudWxsKTtcbiAgICAgICAgICAgIGtleVRhZyA9IGtleU5vZGUgPSB2YWx1ZU5vZGUgPSBudWxsO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGRldGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgICBhdEV4cGxpY2l0S2V5ID0gZmFsc2U7XG4gICAgICAgICAgYWxsb3dDb21wYWN0ID0gZmFsc2U7XG4gICAgICAgICAga2V5VGFnID0gc3RhdGUudGFnO1xuICAgICAgICAgIGtleU5vZGUgPSBzdGF0ZS5yZXN1bHQ7XG5cbiAgICAgICAgfSBlbHNlIGlmIChkZXRlY3RlZCkge1xuICAgICAgICAgIHRocm93RXJyb3Ioc3RhdGUsICdjYW4gbm90IHJlYWQgYW4gaW1wbGljaXQgbWFwcGluZyBwYWlyOyBhIGNvbG9uIGlzIG1pc3NlZCcpO1xuXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc3RhdGUudGFnID0gX3RhZztcbiAgICAgICAgICBzdGF0ZS5hbmNob3IgPSBfYW5jaG9yO1xuICAgICAgICAgIHJldHVybiB0cnVlOyAvLyBLZWVwIHRoZSByZXN1bHQgb2YgYGNvbXBvc2VOb2RlYC5cbiAgICAgICAgfVxuXG4gICAgICB9IGVsc2UgaWYgKGRldGVjdGVkKSB7XG4gICAgICAgIHRocm93RXJyb3Ioc3RhdGUsICdjYW4gbm90IHJlYWQgYSBibG9jayBtYXBwaW5nIGVudHJ5OyBhIG11bHRpbGluZSBrZXkgbWF5IG5vdCBiZSBhbiBpbXBsaWNpdCBrZXknKTtcblxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3RhdGUudGFnID0gX3RhZztcbiAgICAgICAgc3RhdGUuYW5jaG9yID0gX2FuY2hvcjtcbiAgICAgICAgcmV0dXJuIHRydWU7IC8vIEtlZXAgdGhlIHJlc3VsdCBvZiBgY29tcG9zZU5vZGVgLlxuICAgICAgfVxuXG4gICAgfSBlbHNlIHtcbiAgICAgIGJyZWFrOyAvLyBSZWFkaW5nIGlzIGRvbmUuIEdvIHRvIHRoZSBlcGlsb2d1ZS5cbiAgICB9XG5cbiAgICAvL1xuICAgIC8vIENvbW1vbiByZWFkaW5nIGNvZGUgZm9yIGJvdGggZXhwbGljaXQgYW5kIGltcGxpY2l0IG5vdGF0aW9ucy5cbiAgICAvL1xuICAgIGlmIChzdGF0ZS5saW5lID09PSBfbGluZSB8fCBzdGF0ZS5saW5lSW5kZW50ID4gbm9kZUluZGVudCkge1xuICAgICAgaWYgKGNvbXBvc2VOb2RlKHN0YXRlLCBub2RlSW5kZW50LCBDT05URVhUX0JMT0NLX09VVCwgdHJ1ZSwgYWxsb3dDb21wYWN0KSkge1xuICAgICAgICBpZiAoYXRFeHBsaWNpdEtleSkge1xuICAgICAgICAgIGtleU5vZGUgPSBzdGF0ZS5yZXN1bHQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdmFsdWVOb2RlID0gc3RhdGUucmVzdWx0O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICghYXRFeHBsaWNpdEtleSkge1xuICAgICAgICBzdG9yZU1hcHBpbmdQYWlyKHN0YXRlLCBfcmVzdWx0LCBvdmVycmlkYWJsZUtleXMsIGtleVRhZywga2V5Tm9kZSwgdmFsdWVOb2RlLCBfbGluZSwgX3Bvcyk7XG4gICAgICAgIGtleVRhZyA9IGtleU5vZGUgPSB2YWx1ZU5vZGUgPSBudWxsO1xuICAgICAgfVxuXG4gICAgICBza2lwU2VwYXJhdGlvblNwYWNlKHN0YXRlLCB0cnVlLCAtMSk7XG4gICAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24pO1xuICAgIH1cblxuICAgIGlmIChzdGF0ZS5saW5lSW5kZW50ID4gbm9kZUluZGVudCAmJiAoY2ggIT09IDApKSB7XG4gICAgICB0aHJvd0Vycm9yKHN0YXRlLCAnYmFkIGluZGVudGF0aW9uIG9mIGEgbWFwcGluZyBlbnRyeScpO1xuICAgIH0gZWxzZSBpZiAoc3RhdGUubGluZUluZGVudCA8IG5vZGVJbmRlbnQpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIC8vXG4gIC8vIEVwaWxvZ3VlLlxuICAvL1xuXG4gIC8vIFNwZWNpYWwgY2FzZTogbGFzdCBtYXBwaW5nJ3Mgbm9kZSBjb250YWlucyBvbmx5IHRoZSBrZXkgaW4gZXhwbGljaXQgbm90YXRpb24uXG4gIGlmIChhdEV4cGxpY2l0S2V5KSB7XG4gICAgc3RvcmVNYXBwaW5nUGFpcihzdGF0ZSwgX3Jlc3VsdCwgb3ZlcnJpZGFibGVLZXlzLCBrZXlUYWcsIGtleU5vZGUsIG51bGwpO1xuICB9XG5cbiAgLy8gRXhwb3NlIHRoZSByZXN1bHRpbmcgbWFwcGluZy5cbiAgaWYgKGRldGVjdGVkKSB7XG4gICAgc3RhdGUudGFnID0gX3RhZztcbiAgICBzdGF0ZS5hbmNob3IgPSBfYW5jaG9yO1xuICAgIHN0YXRlLmtpbmQgPSAnbWFwcGluZyc7XG4gICAgc3RhdGUucmVzdWx0ID0gX3Jlc3VsdDtcbiAgfVxuXG4gIHJldHVybiBkZXRlY3RlZDtcbn1cblxuZnVuY3Rpb24gcmVhZFRhZ1Byb3BlcnR5KHN0YXRlKSB7XG4gIHZhciBfcG9zaXRpb24sXG4gICAgICBpc1ZlcmJhdGltID0gZmFsc2UsXG4gICAgICBpc05hbWVkICAgID0gZmFsc2UsXG4gICAgICB0YWdIYW5kbGUsXG4gICAgICB0YWdOYW1lLFxuICAgICAgY2g7XG5cbiAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlLnBvc2l0aW9uKTtcblxuICBpZiAoY2ggIT09IDB4MjEvKiAhICovKSByZXR1cm4gZmFsc2U7XG5cbiAgaWYgKHN0YXRlLnRhZyAhPT0gbnVsbCkge1xuICAgIHRocm93RXJyb3Ioc3RhdGUsICdkdXBsaWNhdGlvbiBvZiBhIHRhZyBwcm9wZXJ0eScpO1xuICB9XG5cbiAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUucG9zaXRpb24pO1xuXG4gIGlmIChjaCA9PT0gMHgzQy8qIDwgKi8pIHtcbiAgICBpc1ZlcmJhdGltID0gdHJ1ZTtcbiAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoKytzdGF0ZS5wb3NpdGlvbik7XG5cbiAgfSBlbHNlIGlmIChjaCA9PT0gMHgyMS8qICEgKi8pIHtcbiAgICBpc05hbWVkID0gdHJ1ZTtcbiAgICB0YWdIYW5kbGUgPSAnISEnO1xuICAgIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdCgrK3N0YXRlLnBvc2l0aW9uKTtcblxuICB9IGVsc2Uge1xuICAgIHRhZ0hhbmRsZSA9ICchJztcbiAgfVxuXG4gIF9wb3NpdGlvbiA9IHN0YXRlLnBvc2l0aW9uO1xuXG4gIGlmIChpc1ZlcmJhdGltKSB7XG4gICAgZG8geyBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoKytzdGF0ZS5wb3NpdGlvbik7IH1cbiAgICB3aGlsZSAoY2ggIT09IDAgJiYgY2ggIT09IDB4M0UvKiA+ICovKTtcblxuICAgIGlmIChzdGF0ZS5wb3NpdGlvbiA8IHN0YXRlLmxlbmd0aCkge1xuICAgICAgdGFnTmFtZSA9IHN0YXRlLmlucHV0LnNsaWNlKF9wb3NpdGlvbiwgc3RhdGUucG9zaXRpb24pO1xuICAgICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUucG9zaXRpb24pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvd0Vycm9yKHN0YXRlLCAndW5leHBlY3RlZCBlbmQgb2YgdGhlIHN0cmVhbSB3aXRoaW4gYSB2ZXJiYXRpbSB0YWcnKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgd2hpbGUgKGNoICE9PSAwICYmICFpc19XU19PUl9FT0woY2gpKSB7XG5cbiAgICAgIGlmIChjaCA9PT0gMHgyMS8qICEgKi8pIHtcbiAgICAgICAgaWYgKCFpc05hbWVkKSB7XG4gICAgICAgICAgdGFnSGFuZGxlID0gc3RhdGUuaW5wdXQuc2xpY2UoX3Bvc2l0aW9uIC0gMSwgc3RhdGUucG9zaXRpb24gKyAxKTtcblxuICAgICAgICAgIGlmICghUEFUVEVSTl9UQUdfSEFORExFLnRlc3QodGFnSGFuZGxlKSkge1xuICAgICAgICAgICAgdGhyb3dFcnJvcihzdGF0ZSwgJ25hbWVkIHRhZyBoYW5kbGUgY2Fubm90IGNvbnRhaW4gc3VjaCBjaGFyYWN0ZXJzJyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaXNOYW1lZCA9IHRydWU7XG4gICAgICAgICAgX3Bvc2l0aW9uID0gc3RhdGUucG9zaXRpb24gKyAxO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRocm93RXJyb3Ioc3RhdGUsICd0YWcgc3VmZml4IGNhbm5vdCBjb250YWluIGV4Y2xhbWF0aW9uIG1hcmtzJyk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUucG9zaXRpb24pO1xuICAgIH1cblxuICAgIHRhZ05hbWUgPSBzdGF0ZS5pbnB1dC5zbGljZShfcG9zaXRpb24sIHN0YXRlLnBvc2l0aW9uKTtcblxuICAgIGlmIChQQVRURVJOX0ZMT1dfSU5ESUNBVE9SUy50ZXN0KHRhZ05hbWUpKSB7XG4gICAgICB0aHJvd0Vycm9yKHN0YXRlLCAndGFnIHN1ZmZpeCBjYW5ub3QgY29udGFpbiBmbG93IGluZGljYXRvciBjaGFyYWN0ZXJzJyk7XG4gICAgfVxuICB9XG5cbiAgaWYgKHRhZ05hbWUgJiYgIVBBVFRFUk5fVEFHX1VSSS50ZXN0KHRhZ05hbWUpKSB7XG4gICAgdGhyb3dFcnJvcihzdGF0ZSwgJ3RhZyBuYW1lIGNhbm5vdCBjb250YWluIHN1Y2ggY2hhcmFjdGVyczogJyArIHRhZ05hbWUpO1xuICB9XG5cbiAgaWYgKGlzVmVyYmF0aW0pIHtcbiAgICBzdGF0ZS50YWcgPSB0YWdOYW1lO1xuXG4gIH0gZWxzZSBpZiAoX2hhc093blByb3BlcnR5LmNhbGwoc3RhdGUudGFnTWFwLCB0YWdIYW5kbGUpKSB7XG4gICAgc3RhdGUudGFnID0gc3RhdGUudGFnTWFwW3RhZ0hhbmRsZV0gKyB0YWdOYW1lO1xuXG4gIH0gZWxzZSBpZiAodGFnSGFuZGxlID09PSAnIScpIHtcbiAgICBzdGF0ZS50YWcgPSAnIScgKyB0YWdOYW1lO1xuXG4gIH0gZWxzZSBpZiAodGFnSGFuZGxlID09PSAnISEnKSB7XG4gICAgc3RhdGUudGFnID0gJ3RhZzp5YW1sLm9yZywyMDAyOicgKyB0YWdOYW1lO1xuXG4gIH0gZWxzZSB7XG4gICAgdGhyb3dFcnJvcihzdGF0ZSwgJ3VuZGVjbGFyZWQgdGFnIGhhbmRsZSBcIicgKyB0YWdIYW5kbGUgKyAnXCInKTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiByZWFkQW5jaG9yUHJvcGVydHkoc3RhdGUpIHtcbiAgdmFyIF9wb3NpdGlvbixcbiAgICAgIGNoO1xuXG4gIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbik7XG5cbiAgaWYgKGNoICE9PSAweDI2LyogJiAqLykgcmV0dXJuIGZhbHNlO1xuXG4gIGlmIChzdGF0ZS5hbmNob3IgIT09IG51bGwpIHtcbiAgICB0aHJvd0Vycm9yKHN0YXRlLCAnZHVwbGljYXRpb24gb2YgYW4gYW5jaG9yIHByb3BlcnR5Jyk7XG4gIH1cblxuICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoKytzdGF0ZS5wb3NpdGlvbik7XG4gIF9wb3NpdGlvbiA9IHN0YXRlLnBvc2l0aW9uO1xuXG4gIHdoaWxlIChjaCAhPT0gMCAmJiAhaXNfV1NfT1JfRU9MKGNoKSAmJiAhaXNfRkxPV19JTkRJQ0FUT1IoY2gpKSB7XG4gICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUucG9zaXRpb24pO1xuICB9XG5cbiAgaWYgKHN0YXRlLnBvc2l0aW9uID09PSBfcG9zaXRpb24pIHtcbiAgICB0aHJvd0Vycm9yKHN0YXRlLCAnbmFtZSBvZiBhbiBhbmNob3Igbm9kZSBtdXN0IGNvbnRhaW4gYXQgbGVhc3Qgb25lIGNoYXJhY3RlcicpO1xuICB9XG5cbiAgc3RhdGUuYW5jaG9yID0gc3RhdGUuaW5wdXQuc2xpY2UoX3Bvc2l0aW9uLCBzdGF0ZS5wb3NpdGlvbik7XG4gIHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiByZWFkQWxpYXMoc3RhdGUpIHtcbiAgdmFyIF9wb3NpdGlvbiwgYWxpYXMsXG4gICAgICBjaDtcblxuICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24pO1xuXG4gIGlmIChjaCAhPT0gMHgyQS8qICogKi8pIHJldHVybiBmYWxzZTtcblxuICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoKytzdGF0ZS5wb3NpdGlvbik7XG4gIF9wb3NpdGlvbiA9IHN0YXRlLnBvc2l0aW9uO1xuXG4gIHdoaWxlIChjaCAhPT0gMCAmJiAhaXNfV1NfT1JfRU9MKGNoKSAmJiAhaXNfRkxPV19JTkRJQ0FUT1IoY2gpKSB7XG4gICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUucG9zaXRpb24pO1xuICB9XG5cbiAgaWYgKHN0YXRlLnBvc2l0aW9uID09PSBfcG9zaXRpb24pIHtcbiAgICB0aHJvd0Vycm9yKHN0YXRlLCAnbmFtZSBvZiBhbiBhbGlhcyBub2RlIG11c3QgY29udGFpbiBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyJyk7XG4gIH1cblxuICBhbGlhcyA9IHN0YXRlLmlucHV0LnNsaWNlKF9wb3NpdGlvbiwgc3RhdGUucG9zaXRpb24pO1xuXG4gIGlmICghX2hhc093blByb3BlcnR5LmNhbGwoc3RhdGUuYW5jaG9yTWFwLCBhbGlhcykpIHtcbiAgICB0aHJvd0Vycm9yKHN0YXRlLCAndW5pZGVudGlmaWVkIGFsaWFzIFwiJyArIGFsaWFzICsgJ1wiJyk7XG4gIH1cblxuICBzdGF0ZS5yZXN1bHQgPSBzdGF0ZS5hbmNob3JNYXBbYWxpYXNdO1xuICBza2lwU2VwYXJhdGlvblNwYWNlKHN0YXRlLCB0cnVlLCAtMSk7XG4gIHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiBjb21wb3NlTm9kZShzdGF0ZSwgcGFyZW50SW5kZW50LCBub2RlQ29udGV4dCwgYWxsb3dUb1NlZWssIGFsbG93Q29tcGFjdCkge1xuICB2YXIgYWxsb3dCbG9ja1N0eWxlcyxcbiAgICAgIGFsbG93QmxvY2tTY2FsYXJzLFxuICAgICAgYWxsb3dCbG9ja0NvbGxlY3Rpb25zLFxuICAgICAgaW5kZW50U3RhdHVzID0gMSwgLy8gMTogdGhpcz5wYXJlbnQsIDA6IHRoaXM9cGFyZW50LCAtMTogdGhpczxwYXJlbnRcbiAgICAgIGF0TmV3TGluZSAgPSBmYWxzZSxcbiAgICAgIGhhc0NvbnRlbnQgPSBmYWxzZSxcbiAgICAgIHR5cGVJbmRleCxcbiAgICAgIHR5cGVRdWFudGl0eSxcbiAgICAgIHR5cGUsXG4gICAgICBmbG93SW5kZW50LFxuICAgICAgYmxvY2tJbmRlbnQ7XG5cbiAgaWYgKHN0YXRlLmxpc3RlbmVyICE9PSBudWxsKSB7XG4gICAgc3RhdGUubGlzdGVuZXIoJ29wZW4nLCBzdGF0ZSk7XG4gIH1cblxuICBzdGF0ZS50YWcgICAgPSBudWxsO1xuICBzdGF0ZS5hbmNob3IgPSBudWxsO1xuICBzdGF0ZS5raW5kICAgPSBudWxsO1xuICBzdGF0ZS5yZXN1bHQgPSBudWxsO1xuXG4gIGFsbG93QmxvY2tTdHlsZXMgPSBhbGxvd0Jsb2NrU2NhbGFycyA9IGFsbG93QmxvY2tDb2xsZWN0aW9ucyA9XG4gICAgQ09OVEVYVF9CTE9DS19PVVQgPT09IG5vZGVDb250ZXh0IHx8XG4gICAgQ09OVEVYVF9CTE9DS19JTiAgPT09IG5vZGVDb250ZXh0O1xuXG4gIGlmIChhbGxvd1RvU2Vlaykge1xuICAgIGlmIChza2lwU2VwYXJhdGlvblNwYWNlKHN0YXRlLCB0cnVlLCAtMSkpIHtcbiAgICAgIGF0TmV3TGluZSA9IHRydWU7XG5cbiAgICAgIGlmIChzdGF0ZS5saW5lSW5kZW50ID4gcGFyZW50SW5kZW50KSB7XG4gICAgICAgIGluZGVudFN0YXR1cyA9IDE7XG4gICAgICB9IGVsc2UgaWYgKHN0YXRlLmxpbmVJbmRlbnQgPT09IHBhcmVudEluZGVudCkge1xuICAgICAgICBpbmRlbnRTdGF0dXMgPSAwO1xuICAgICAgfSBlbHNlIGlmIChzdGF0ZS5saW5lSW5kZW50IDwgcGFyZW50SW5kZW50KSB7XG4gICAgICAgIGluZGVudFN0YXR1cyA9IC0xO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmIChpbmRlbnRTdGF0dXMgPT09IDEpIHtcbiAgICB3aGlsZSAocmVhZFRhZ1Byb3BlcnR5KHN0YXRlKSB8fCByZWFkQW5jaG9yUHJvcGVydHkoc3RhdGUpKSB7XG4gICAgICBpZiAoc2tpcFNlcGFyYXRpb25TcGFjZShzdGF0ZSwgdHJ1ZSwgLTEpKSB7XG4gICAgICAgIGF0TmV3TGluZSA9IHRydWU7XG4gICAgICAgIGFsbG93QmxvY2tDb2xsZWN0aW9ucyA9IGFsbG93QmxvY2tTdHlsZXM7XG5cbiAgICAgICAgaWYgKHN0YXRlLmxpbmVJbmRlbnQgPiBwYXJlbnRJbmRlbnQpIHtcbiAgICAgICAgICBpbmRlbnRTdGF0dXMgPSAxO1xuICAgICAgICB9IGVsc2UgaWYgKHN0YXRlLmxpbmVJbmRlbnQgPT09IHBhcmVudEluZGVudCkge1xuICAgICAgICAgIGluZGVudFN0YXR1cyA9IDA7XG4gICAgICAgIH0gZWxzZSBpZiAoc3RhdGUubGluZUluZGVudCA8IHBhcmVudEluZGVudCkge1xuICAgICAgICAgIGluZGVudFN0YXR1cyA9IC0xO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhbGxvd0Jsb2NrQ29sbGVjdGlvbnMgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAoYWxsb3dCbG9ja0NvbGxlY3Rpb25zKSB7XG4gICAgYWxsb3dCbG9ja0NvbGxlY3Rpb25zID0gYXROZXdMaW5lIHx8IGFsbG93Q29tcGFjdDtcbiAgfVxuXG4gIGlmIChpbmRlbnRTdGF0dXMgPT09IDEgfHwgQ09OVEVYVF9CTE9DS19PVVQgPT09IG5vZGVDb250ZXh0KSB7XG4gICAgaWYgKENPTlRFWFRfRkxPV19JTiA9PT0gbm9kZUNvbnRleHQgfHwgQ09OVEVYVF9GTE9XX09VVCA9PT0gbm9kZUNvbnRleHQpIHtcbiAgICAgIGZsb3dJbmRlbnQgPSBwYXJlbnRJbmRlbnQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIGZsb3dJbmRlbnQgPSBwYXJlbnRJbmRlbnQgKyAxO1xuICAgIH1cblxuICAgIGJsb2NrSW5kZW50ID0gc3RhdGUucG9zaXRpb24gLSBzdGF0ZS5saW5lU3RhcnQ7XG5cbiAgICBpZiAoaW5kZW50U3RhdHVzID09PSAxKSB7XG4gICAgICBpZiAoYWxsb3dCbG9ja0NvbGxlY3Rpb25zICYmXG4gICAgICAgICAgKHJlYWRCbG9ja1NlcXVlbmNlKHN0YXRlLCBibG9ja0luZGVudCkgfHxcbiAgICAgICAgICAgcmVhZEJsb2NrTWFwcGluZyhzdGF0ZSwgYmxvY2tJbmRlbnQsIGZsb3dJbmRlbnQpKSB8fFxuICAgICAgICAgIHJlYWRGbG93Q29sbGVjdGlvbihzdGF0ZSwgZmxvd0luZGVudCkpIHtcbiAgICAgICAgaGFzQ29udGVudCA9IHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoKGFsbG93QmxvY2tTY2FsYXJzICYmIHJlYWRCbG9ja1NjYWxhcihzdGF0ZSwgZmxvd0luZGVudCkpIHx8XG4gICAgICAgICAgICByZWFkU2luZ2xlUXVvdGVkU2NhbGFyKHN0YXRlLCBmbG93SW5kZW50KSB8fFxuICAgICAgICAgICAgcmVhZERvdWJsZVF1b3RlZFNjYWxhcihzdGF0ZSwgZmxvd0luZGVudCkpIHtcbiAgICAgICAgICBoYXNDb250ZW50ID0gdHJ1ZTtcblxuICAgICAgICB9IGVsc2UgaWYgKHJlYWRBbGlhcyhzdGF0ZSkpIHtcbiAgICAgICAgICBoYXNDb250ZW50ID0gdHJ1ZTtcblxuICAgICAgICAgIGlmIChzdGF0ZS50YWcgIT09IG51bGwgfHwgc3RhdGUuYW5jaG9yICE9PSBudWxsKSB7XG4gICAgICAgICAgICB0aHJvd0Vycm9yKHN0YXRlLCAnYWxpYXMgbm9kZSBzaG91bGQgbm90IGhhdmUgYW55IHByb3BlcnRpZXMnKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgfSBlbHNlIGlmIChyZWFkUGxhaW5TY2FsYXIoc3RhdGUsIGZsb3dJbmRlbnQsIENPTlRFWFRfRkxPV19JTiA9PT0gbm9kZUNvbnRleHQpKSB7XG4gICAgICAgICAgaGFzQ29udGVudCA9IHRydWU7XG5cbiAgICAgICAgICBpZiAoc3RhdGUudGFnID09PSBudWxsKSB7XG4gICAgICAgICAgICBzdGF0ZS50YWcgPSAnPyc7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHN0YXRlLmFuY2hvciAhPT0gbnVsbCkge1xuICAgICAgICAgIHN0YXRlLmFuY2hvck1hcFtzdGF0ZS5hbmNob3JdID0gc3RhdGUucmVzdWx0O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChpbmRlbnRTdGF0dXMgPT09IDApIHtcbiAgICAgIC8vIFNwZWNpYWwgY2FzZTogYmxvY2sgc2VxdWVuY2VzIGFyZSBhbGxvd2VkIHRvIGhhdmUgc2FtZSBpbmRlbnRhdGlvbiBsZXZlbCBhcyB0aGUgcGFyZW50LlxuICAgICAgLy8gaHR0cDovL3d3dy55YW1sLm9yZy9zcGVjLzEuMi9zcGVjLmh0bWwjaWQyNzk5Nzg0XG4gICAgICBoYXNDb250ZW50ID0gYWxsb3dCbG9ja0NvbGxlY3Rpb25zICYmIHJlYWRCbG9ja1NlcXVlbmNlKHN0YXRlLCBibG9ja0luZGVudCk7XG4gICAgfVxuICB9XG5cbiAgaWYgKHN0YXRlLnRhZyAhPT0gbnVsbCAmJiBzdGF0ZS50YWcgIT09ICchJykge1xuICAgIGlmIChzdGF0ZS50YWcgPT09ICc/Jykge1xuICAgICAgLy8gSW1wbGljaXQgcmVzb2x2aW5nIGlzIG5vdCBhbGxvd2VkIGZvciBub24tc2NhbGFyIHR5cGVzLCBhbmQgJz8nXG4gICAgICAvLyBub24tc3BlY2lmaWMgdGFnIGlzIG9ubHkgYXV0b21hdGljYWxseSBhc3NpZ25lZCB0byBwbGFpbiBzY2FsYXJzLlxuICAgICAgLy9cbiAgICAgIC8vIFdlIG9ubHkgbmVlZCB0byBjaGVjayBraW5kIGNvbmZvcm1pdHkgaW4gY2FzZSB1c2VyIGV4cGxpY2l0bHkgYXNzaWducyAnPydcbiAgICAgIC8vIHRhZywgZm9yIGV4YW1wbGUgbGlrZSB0aGlzOiBcIiE8Pz4gWzBdXCJcbiAgICAgIC8vXG4gICAgICBpZiAoc3RhdGUucmVzdWx0ICE9PSBudWxsICYmIHN0YXRlLmtpbmQgIT09ICdzY2FsYXInKSB7XG4gICAgICAgIHRocm93RXJyb3Ioc3RhdGUsICd1bmFjY2VwdGFibGUgbm9kZSBraW5kIGZvciAhPD8+IHRhZzsgaXQgc2hvdWxkIGJlIFwic2NhbGFyXCIsIG5vdCBcIicgKyBzdGF0ZS5raW5kICsgJ1wiJyk7XG4gICAgICB9XG5cbiAgICAgIGZvciAodHlwZUluZGV4ID0gMCwgdHlwZVF1YW50aXR5ID0gc3RhdGUuaW1wbGljaXRUeXBlcy5sZW5ndGg7IHR5cGVJbmRleCA8IHR5cGVRdWFudGl0eTsgdHlwZUluZGV4ICs9IDEpIHtcbiAgICAgICAgdHlwZSA9IHN0YXRlLmltcGxpY2l0VHlwZXNbdHlwZUluZGV4XTtcblxuICAgICAgICBpZiAodHlwZS5yZXNvbHZlKHN0YXRlLnJlc3VsdCkpIHsgLy8gYHN0YXRlLnJlc3VsdGAgdXBkYXRlZCBpbiByZXNvbHZlciBpZiBtYXRjaGVkXG4gICAgICAgICAgc3RhdGUucmVzdWx0ID0gdHlwZS5jb25zdHJ1Y3Qoc3RhdGUucmVzdWx0KTtcbiAgICAgICAgICBzdGF0ZS50YWcgPSB0eXBlLnRhZztcbiAgICAgICAgICBpZiAoc3RhdGUuYW5jaG9yICE9PSBudWxsKSB7XG4gICAgICAgICAgICBzdGF0ZS5hbmNob3JNYXBbc3RhdGUuYW5jaG9yXSA9IHN0YXRlLnJlc3VsdDtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKF9oYXNPd25Qcm9wZXJ0eS5jYWxsKHN0YXRlLnR5cGVNYXBbc3RhdGUua2luZCB8fCAnZmFsbGJhY2snXSwgc3RhdGUudGFnKSkge1xuICAgICAgdHlwZSA9IHN0YXRlLnR5cGVNYXBbc3RhdGUua2luZCB8fCAnZmFsbGJhY2snXVtzdGF0ZS50YWddO1xuXG4gICAgICBpZiAoc3RhdGUucmVzdWx0ICE9PSBudWxsICYmIHR5cGUua2luZCAhPT0gc3RhdGUua2luZCkge1xuICAgICAgICB0aHJvd0Vycm9yKHN0YXRlLCAndW5hY2NlcHRhYmxlIG5vZGUga2luZCBmb3IgITwnICsgc3RhdGUudGFnICsgJz4gdGFnOyBpdCBzaG91bGQgYmUgXCInICsgdHlwZS5raW5kICsgJ1wiLCBub3QgXCInICsgc3RhdGUua2luZCArICdcIicpO1xuICAgICAgfVxuXG4gICAgICBpZiAoIXR5cGUucmVzb2x2ZShzdGF0ZS5yZXN1bHQpKSB7IC8vIGBzdGF0ZS5yZXN1bHRgIHVwZGF0ZWQgaW4gcmVzb2x2ZXIgaWYgbWF0Y2hlZFxuICAgICAgICB0aHJvd0Vycm9yKHN0YXRlLCAnY2Fubm90IHJlc29sdmUgYSBub2RlIHdpdGggITwnICsgc3RhdGUudGFnICsgJz4gZXhwbGljaXQgdGFnJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzdGF0ZS5yZXN1bHQgPSB0eXBlLmNvbnN0cnVjdChzdGF0ZS5yZXN1bHQpO1xuICAgICAgICBpZiAoc3RhdGUuYW5jaG9yICE9PSBudWxsKSB7XG4gICAgICAgICAgc3RhdGUuYW5jaG9yTWFwW3N0YXRlLmFuY2hvcl0gPSBzdGF0ZS5yZXN1bHQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3dFcnJvcihzdGF0ZSwgJ3Vua25vd24gdGFnICE8JyArIHN0YXRlLnRhZyArICc+Jyk7XG4gICAgfVxuICB9XG5cbiAgaWYgKHN0YXRlLmxpc3RlbmVyICE9PSBudWxsKSB7XG4gICAgc3RhdGUubGlzdGVuZXIoJ2Nsb3NlJywgc3RhdGUpO1xuICB9XG4gIHJldHVybiBzdGF0ZS50YWcgIT09IG51bGwgfHwgIHN0YXRlLmFuY2hvciAhPT0gbnVsbCB8fCBoYXNDb250ZW50O1xufVxuXG5mdW5jdGlvbiByZWFkRG9jdW1lbnQoc3RhdGUpIHtcbiAgdmFyIGRvY3VtZW50U3RhcnQgPSBzdGF0ZS5wb3NpdGlvbixcbiAgICAgIF9wb3NpdGlvbixcbiAgICAgIGRpcmVjdGl2ZU5hbWUsXG4gICAgICBkaXJlY3RpdmVBcmdzLFxuICAgICAgaGFzRGlyZWN0aXZlcyA9IGZhbHNlLFxuICAgICAgY2g7XG5cbiAgc3RhdGUudmVyc2lvbiA9IG51bGw7XG4gIHN0YXRlLmNoZWNrTGluZUJyZWFrcyA9IHN0YXRlLmxlZ2FjeTtcbiAgc3RhdGUudGFnTWFwID0ge307XG4gIHN0YXRlLmFuY2hvck1hcCA9IHt9O1xuXG4gIHdoaWxlICgoY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlLnBvc2l0aW9uKSkgIT09IDApIHtcbiAgICBza2lwU2VwYXJhdGlvblNwYWNlKHN0YXRlLCB0cnVlLCAtMSk7XG5cbiAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24pO1xuXG4gICAgaWYgKHN0YXRlLmxpbmVJbmRlbnQgPiAwIHx8IGNoICE9PSAweDI1LyogJSAqLykge1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgaGFzRGlyZWN0aXZlcyA9IHRydWU7XG4gICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUucG9zaXRpb24pO1xuICAgIF9wb3NpdGlvbiA9IHN0YXRlLnBvc2l0aW9uO1xuXG4gICAgd2hpbGUgKGNoICE9PSAwICYmICFpc19XU19PUl9FT0woY2gpKSB7XG4gICAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoKytzdGF0ZS5wb3NpdGlvbik7XG4gICAgfVxuXG4gICAgZGlyZWN0aXZlTmFtZSA9IHN0YXRlLmlucHV0LnNsaWNlKF9wb3NpdGlvbiwgc3RhdGUucG9zaXRpb24pO1xuICAgIGRpcmVjdGl2ZUFyZ3MgPSBbXTtcblxuICAgIGlmIChkaXJlY3RpdmVOYW1lLmxlbmd0aCA8IDEpIHtcbiAgICAgIHRocm93RXJyb3Ioc3RhdGUsICdkaXJlY3RpdmUgbmFtZSBtdXN0IG5vdCBiZSBsZXNzIHRoYW4gb25lIGNoYXJhY3RlciBpbiBsZW5ndGgnKTtcbiAgICB9XG5cbiAgICB3aGlsZSAoY2ggIT09IDApIHtcbiAgICAgIHdoaWxlIChpc19XSElURV9TUEFDRShjaCkpIHtcbiAgICAgICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUucG9zaXRpb24pO1xuICAgICAgfVxuXG4gICAgICBpZiAoY2ggPT09IDB4MjMvKiAjICovKSB7XG4gICAgICAgIGRvIHsgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUucG9zaXRpb24pOyB9XG4gICAgICAgIHdoaWxlIChjaCAhPT0gMCAmJiAhaXNfRU9MKGNoKSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBpZiAoaXNfRU9MKGNoKSkgYnJlYWs7XG5cbiAgICAgIF9wb3NpdGlvbiA9IHN0YXRlLnBvc2l0aW9uO1xuXG4gICAgICB3aGlsZSAoY2ggIT09IDAgJiYgIWlzX1dTX09SX0VPTChjaCkpIHtcbiAgICAgICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUucG9zaXRpb24pO1xuICAgICAgfVxuXG4gICAgICBkaXJlY3RpdmVBcmdzLnB1c2goc3RhdGUuaW5wdXQuc2xpY2UoX3Bvc2l0aW9uLCBzdGF0ZS5wb3NpdGlvbikpO1xuICAgIH1cblxuICAgIGlmIChjaCAhPT0gMCkgcmVhZExpbmVCcmVhayhzdGF0ZSk7XG5cbiAgICBpZiAoX2hhc093blByb3BlcnR5LmNhbGwoZGlyZWN0aXZlSGFuZGxlcnMsIGRpcmVjdGl2ZU5hbWUpKSB7XG4gICAgICBkaXJlY3RpdmVIYW5kbGVyc1tkaXJlY3RpdmVOYW1lXShzdGF0ZSwgZGlyZWN0aXZlTmFtZSwgZGlyZWN0aXZlQXJncyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93V2FybmluZyhzdGF0ZSwgJ3Vua25vd24gZG9jdW1lbnQgZGlyZWN0aXZlIFwiJyArIGRpcmVjdGl2ZU5hbWUgKyAnXCInKTtcbiAgICB9XG4gIH1cblxuICBza2lwU2VwYXJhdGlvblNwYWNlKHN0YXRlLCB0cnVlLCAtMSk7XG5cbiAgaWYgKHN0YXRlLmxpbmVJbmRlbnQgPT09IDAgJiZcbiAgICAgIHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24pICAgICA9PT0gMHgyRC8qIC0gKi8gJiZcbiAgICAgIHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24gKyAxKSA9PT0gMHgyRC8qIC0gKi8gJiZcbiAgICAgIHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24gKyAyKSA9PT0gMHgyRC8qIC0gKi8pIHtcbiAgICBzdGF0ZS5wb3NpdGlvbiArPSAzO1xuICAgIHNraXBTZXBhcmF0aW9uU3BhY2Uoc3RhdGUsIHRydWUsIC0xKTtcblxuICB9IGVsc2UgaWYgKGhhc0RpcmVjdGl2ZXMpIHtcbiAgICB0aHJvd0Vycm9yKHN0YXRlLCAnZGlyZWN0aXZlcyBlbmQgbWFyayBpcyBleHBlY3RlZCcpO1xuICB9XG5cbiAgY29tcG9zZU5vZGUoc3RhdGUsIHN0YXRlLmxpbmVJbmRlbnQgLSAxLCBDT05URVhUX0JMT0NLX09VVCwgZmFsc2UsIHRydWUpO1xuICBza2lwU2VwYXJhdGlvblNwYWNlKHN0YXRlLCB0cnVlLCAtMSk7XG5cbiAgaWYgKHN0YXRlLmNoZWNrTGluZUJyZWFrcyAmJlxuICAgICAgUEFUVEVSTl9OT05fQVNDSUlfTElORV9CUkVBS1MudGVzdChzdGF0ZS5pbnB1dC5zbGljZShkb2N1bWVudFN0YXJ0LCBzdGF0ZS5wb3NpdGlvbikpKSB7XG4gICAgdGhyb3dXYXJuaW5nKHN0YXRlLCAnbm9uLUFTQ0lJIGxpbmUgYnJlYWtzIGFyZSBpbnRlcnByZXRlZCBhcyBjb250ZW50Jyk7XG4gIH1cblxuICBzdGF0ZS5kb2N1bWVudHMucHVzaChzdGF0ZS5yZXN1bHQpO1xuXG4gIGlmIChzdGF0ZS5wb3NpdGlvbiA9PT0gc3RhdGUubGluZVN0YXJ0ICYmIHRlc3REb2N1bWVudFNlcGFyYXRvcihzdGF0ZSkpIHtcblxuICAgIGlmIChzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlLnBvc2l0aW9uKSA9PT0gMHgyRS8qIC4gKi8pIHtcbiAgICAgIHN0YXRlLnBvc2l0aW9uICs9IDM7XG4gICAgICBza2lwU2VwYXJhdGlvblNwYWNlKHN0YXRlLCB0cnVlLCAtMSk7XG4gICAgfVxuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmIChzdGF0ZS5wb3NpdGlvbiA8IChzdGF0ZS5sZW5ndGggLSAxKSkge1xuICAgIHRocm93RXJyb3Ioc3RhdGUsICdlbmQgb2YgdGhlIHN0cmVhbSBvciBhIGRvY3VtZW50IHNlcGFyYXRvciBpcyBleHBlY3RlZCcpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybjtcbiAgfVxufVxuXG5cbmZ1bmN0aW9uIGxvYWREb2N1bWVudHMoaW5wdXQsIG9wdGlvbnMpIHtcbiAgaW5wdXQgPSBTdHJpbmcoaW5wdXQpO1xuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcblxuICBpZiAoaW5wdXQubGVuZ3RoICE9PSAwKSB7XG5cbiAgICAvLyBBZGQgdGFpbGluZyBgXFxuYCBpZiBub3QgZXhpc3RzXG4gICAgaWYgKGlucHV0LmNoYXJDb2RlQXQoaW5wdXQubGVuZ3RoIC0gMSkgIT09IDB4MEEvKiBMRiAqLyAmJlxuICAgICAgICBpbnB1dC5jaGFyQ29kZUF0KGlucHV0Lmxlbmd0aCAtIDEpICE9PSAweDBELyogQ1IgKi8pIHtcbiAgICAgIGlucHV0ICs9ICdcXG4nO1xuICAgIH1cblxuICAgIC8vIFN0cmlwIEJPTVxuICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KDApID09PSAweEZFRkYpIHtcbiAgICAgIGlucHV0ID0gaW5wdXQuc2xpY2UoMSk7XG4gICAgfVxuICB9XG5cbiAgdmFyIHN0YXRlID0gbmV3IFN0YXRlKGlucHV0LCBvcHRpb25zKTtcblxuICB2YXIgbnVsbHBvcyA9IGlucHV0LmluZGV4T2YoJ1xcMCcpO1xuXG4gIGlmIChudWxscG9zICE9PSAtMSkge1xuICAgIHN0YXRlLnBvc2l0aW9uID0gbnVsbHBvcztcbiAgICB0aHJvd0Vycm9yKHN0YXRlLCAnbnVsbCBieXRlIGlzIG5vdCBhbGxvd2VkIGluIGlucHV0Jyk7XG4gIH1cblxuICAvLyBVc2UgMCBhcyBzdHJpbmcgdGVybWluYXRvci4gVGhhdCBzaWduaWZpY2FudGx5IHNpbXBsaWZpZXMgYm91bmRzIGNoZWNrLlxuICBzdGF0ZS5pbnB1dCArPSAnXFwwJztcblxuICB3aGlsZSAoc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbikgPT09IDB4MjAvKiBTcGFjZSAqLykge1xuICAgIHN0YXRlLmxpbmVJbmRlbnQgKz0gMTtcbiAgICBzdGF0ZS5wb3NpdGlvbiArPSAxO1xuICB9XG5cbiAgd2hpbGUgKHN0YXRlLnBvc2l0aW9uIDwgKHN0YXRlLmxlbmd0aCAtIDEpKSB7XG4gICAgcmVhZERvY3VtZW50KHN0YXRlKTtcbiAgfVxuXG4gIHJldHVybiBzdGF0ZS5kb2N1bWVudHM7XG59XG5cblxuZnVuY3Rpb24gbG9hZEFsbChpbnB1dCwgaXRlcmF0b3IsIG9wdGlvbnMpIHtcbiAgaWYgKGl0ZXJhdG9yICE9PSBudWxsICYmIHR5cGVvZiBpdGVyYXRvciA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG9wdGlvbnMgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgb3B0aW9ucyA9IGl0ZXJhdG9yO1xuICAgIGl0ZXJhdG9yID0gbnVsbDtcbiAgfVxuXG4gIHZhciBkb2N1bWVudHMgPSBsb2FkRG9jdW1lbnRzKGlucHV0LCBvcHRpb25zKTtcblxuICBpZiAodHlwZW9mIGl0ZXJhdG9yICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIGRvY3VtZW50cztcbiAgfVxuXG4gIGZvciAodmFyIGluZGV4ID0gMCwgbGVuZ3RoID0gZG9jdW1lbnRzLmxlbmd0aDsgaW5kZXggPCBsZW5ndGg7IGluZGV4ICs9IDEpIHtcbiAgICBpdGVyYXRvcihkb2N1bWVudHNbaW5kZXhdKTtcbiAgfVxufVxuXG5cbmZ1bmN0aW9uIGxvYWQoaW5wdXQsIG9wdGlvbnMpIHtcbiAgdmFyIGRvY3VtZW50cyA9IGxvYWREb2N1bWVudHMoaW5wdXQsIG9wdGlvbnMpO1xuXG4gIGlmIChkb2N1bWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgLyplc2xpbnQtZGlzYWJsZSBuby11bmRlZmluZWQqL1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH0gZWxzZSBpZiAoZG9jdW1lbnRzLmxlbmd0aCA9PT0gMSkge1xuICAgIHJldHVybiBkb2N1bWVudHNbMF07XG4gIH1cbiAgdGhyb3cgbmV3IFlBTUxFeGNlcHRpb24oJ2V4cGVjdGVkIGEgc2luZ2xlIGRvY3VtZW50IGluIHRoZSBzdHJlYW0sIGJ1dCBmb3VuZCBtb3JlJyk7XG59XG5cblxuZnVuY3Rpb24gc2FmZUxvYWRBbGwoaW5wdXQsIGl0ZXJhdG9yLCBvcHRpb25zKSB7XG4gIGlmICh0eXBlb2YgaXRlcmF0b3IgPT09ICdvYmplY3QnICYmIGl0ZXJhdG9yICE9PSBudWxsICYmIHR5cGVvZiBvcHRpb25zID09PSAndW5kZWZpbmVkJykge1xuICAgIG9wdGlvbnMgPSBpdGVyYXRvcjtcbiAgICBpdGVyYXRvciA9IG51bGw7XG4gIH1cblxuICByZXR1cm4gbG9hZEFsbChpbnB1dCwgaXRlcmF0b3IsIGNvbW1vbi5leHRlbmQoeyBzY2hlbWE6IERFRkFVTFRfU0FGRV9TQ0hFTUEgfSwgb3B0aW9ucykpO1xufVxuXG5cbmZ1bmN0aW9uIHNhZmVMb2FkKGlucHV0LCBvcHRpb25zKSB7XG4gIHJldHVybiBsb2FkKGlucHV0LCBjb21tb24uZXh0ZW5kKHsgc2NoZW1hOiBERUZBVUxUX1NBRkVfU0NIRU1BIH0sIG9wdGlvbnMpKTtcbn1cblxuXG5tb2R1bGUuZXhwb3J0cy5sb2FkQWxsICAgICA9IGxvYWRBbGw7XG5tb2R1bGUuZXhwb3J0cy5sb2FkICAgICAgICA9IGxvYWQ7XG5tb2R1bGUuZXhwb3J0cy5zYWZlTG9hZEFsbCA9IHNhZmVMb2FkQWxsO1xubW9kdWxlLmV4cG9ydHMuc2FmZUxvYWQgICAgPSBzYWZlTG9hZDtcbiIsICIndXNlIHN0cmljdCc7XG5cbi8qZXNsaW50LWRpc2FibGUgbm8tdXNlLWJlZm9yZS1kZWZpbmUqL1xuXG52YXIgY29tbW9uICAgICAgICAgICAgICA9IHJlcXVpcmUoJy4vY29tbW9uJyk7XG52YXIgWUFNTEV4Y2VwdGlvbiAgICAgICA9IHJlcXVpcmUoJy4vZXhjZXB0aW9uJyk7XG52YXIgREVGQVVMVF9GVUxMX1NDSEVNQSA9IHJlcXVpcmUoJy4vc2NoZW1hL2RlZmF1bHRfZnVsbCcpO1xudmFyIERFRkFVTFRfU0FGRV9TQ0hFTUEgPSByZXF1aXJlKCcuL3NjaGVtYS9kZWZhdWx0X3NhZmUnKTtcblxudmFyIF90b1N0cmluZyAgICAgICA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7XG52YXIgX2hhc093blByb3BlcnR5ID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcblxudmFyIENIQVJfVEFCICAgICAgICAgICAgICAgICAgPSAweDA5OyAvKiBUYWIgKi9cbnZhciBDSEFSX0xJTkVfRkVFRCAgICAgICAgICAgID0gMHgwQTsgLyogTEYgKi9cbnZhciBDSEFSX0NBUlJJQUdFX1JFVFVSTiAgICAgID0gMHgwRDsgLyogQ1IgKi9cbnZhciBDSEFSX1NQQUNFICAgICAgICAgICAgICAgID0gMHgyMDsgLyogU3BhY2UgKi9cbnZhciBDSEFSX0VYQ0xBTUFUSU9OICAgICAgICAgID0gMHgyMTsgLyogISAqL1xudmFyIENIQVJfRE9VQkxFX1FVT1RFICAgICAgICAgPSAweDIyOyAvKiBcIiAqL1xudmFyIENIQVJfU0hBUlAgICAgICAgICAgICAgICAgPSAweDIzOyAvKiAjICovXG52YXIgQ0hBUl9QRVJDRU5UICAgICAgICAgICAgICA9IDB4MjU7IC8qICUgKi9cbnZhciBDSEFSX0FNUEVSU0FORCAgICAgICAgICAgID0gMHgyNjsgLyogJiAqL1xudmFyIENIQVJfU0lOR0xFX1FVT1RFICAgICAgICAgPSAweDI3OyAvKiAnICovXG52YXIgQ0hBUl9BU1RFUklTSyAgICAgICAgICAgICA9IDB4MkE7IC8qICogKi9cbnZhciBDSEFSX0NPTU1BICAgICAgICAgICAgICAgID0gMHgyQzsgLyogLCAqL1xudmFyIENIQVJfTUlOVVMgICAgICAgICAgICAgICAgPSAweDJEOyAvKiAtICovXG52YXIgQ0hBUl9DT0xPTiAgICAgICAgICAgICAgICA9IDB4M0E7IC8qIDogKi9cbnZhciBDSEFSX0VRVUFMUyAgICAgICAgICAgICAgID0gMHgzRDsgLyogPSAqL1xudmFyIENIQVJfR1JFQVRFUl9USEFOICAgICAgICAgPSAweDNFOyAvKiA+ICovXG52YXIgQ0hBUl9RVUVTVElPTiAgICAgICAgICAgICA9IDB4M0Y7IC8qID8gKi9cbnZhciBDSEFSX0NPTU1FUkNJQUxfQVQgICAgICAgID0gMHg0MDsgLyogQCAqL1xudmFyIENIQVJfTEVGVF9TUVVBUkVfQlJBQ0tFVCAgPSAweDVCOyAvKiBbICovXG52YXIgQ0hBUl9SSUdIVF9TUVVBUkVfQlJBQ0tFVCA9IDB4NUQ7IC8qIF0gKi9cbnZhciBDSEFSX0dSQVZFX0FDQ0VOVCAgICAgICAgID0gMHg2MDsgLyogYCAqL1xudmFyIENIQVJfTEVGVF9DVVJMWV9CUkFDS0VUICAgPSAweDdCOyAvKiB7ICovXG52YXIgQ0hBUl9WRVJUSUNBTF9MSU5FICAgICAgICA9IDB4N0M7IC8qIHwgKi9cbnZhciBDSEFSX1JJR0hUX0NVUkxZX0JSQUNLRVQgID0gMHg3RDsgLyogfSAqL1xuXG52YXIgRVNDQVBFX1NFUVVFTkNFUyA9IHt9O1xuXG5FU0NBUEVfU0VRVUVOQ0VTWzB4MDBdICAgPSAnXFxcXDAnO1xuRVNDQVBFX1NFUVVFTkNFU1sweDA3XSAgID0gJ1xcXFxhJztcbkVTQ0FQRV9TRVFVRU5DRVNbMHgwOF0gICA9ICdcXFxcYic7XG5FU0NBUEVfU0VRVUVOQ0VTWzB4MDldICAgPSAnXFxcXHQnO1xuRVNDQVBFX1NFUVVFTkNFU1sweDBBXSAgID0gJ1xcXFxuJztcbkVTQ0FQRV9TRVFVRU5DRVNbMHgwQl0gICA9ICdcXFxcdic7XG5FU0NBUEVfU0VRVUVOQ0VTWzB4MENdICAgPSAnXFxcXGYnO1xuRVNDQVBFX1NFUVVFTkNFU1sweDBEXSAgID0gJ1xcXFxyJztcbkVTQ0FQRV9TRVFVRU5DRVNbMHgxQl0gICA9ICdcXFxcZSc7XG5FU0NBUEVfU0VRVUVOQ0VTWzB4MjJdICAgPSAnXFxcXFwiJztcbkVTQ0FQRV9TRVFVRU5DRVNbMHg1Q10gICA9ICdcXFxcXFxcXCc7XG5FU0NBUEVfU0VRVUVOQ0VTWzB4ODVdICAgPSAnXFxcXE4nO1xuRVNDQVBFX1NFUVVFTkNFU1sweEEwXSAgID0gJ1xcXFxfJztcbkVTQ0FQRV9TRVFVRU5DRVNbMHgyMDI4XSA9ICdcXFxcTCc7XG5FU0NBUEVfU0VRVUVOQ0VTWzB4MjAyOV0gPSAnXFxcXFAnO1xuXG52YXIgREVQUkVDQVRFRF9CT09MRUFOU19TWU5UQVggPSBbXG4gICd5JywgJ1knLCAneWVzJywgJ1llcycsICdZRVMnLCAnb24nLCAnT24nLCAnT04nLFxuICAnbicsICdOJywgJ25vJywgJ05vJywgJ05PJywgJ29mZicsICdPZmYnLCAnT0ZGJ1xuXTtcblxuZnVuY3Rpb24gY29tcGlsZVN0eWxlTWFwKHNjaGVtYSwgbWFwKSB7XG4gIHZhciByZXN1bHQsIGtleXMsIGluZGV4LCBsZW5ndGgsIHRhZywgc3R5bGUsIHR5cGU7XG5cbiAgaWYgKG1hcCA9PT0gbnVsbCkgcmV0dXJuIHt9O1xuXG4gIHJlc3VsdCA9IHt9O1xuICBrZXlzID0gT2JqZWN0LmtleXMobWFwKTtcblxuICBmb3IgKGluZGV4ID0gMCwgbGVuZ3RoID0ga2V5cy5sZW5ndGg7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCArPSAxKSB7XG4gICAgdGFnID0ga2V5c1tpbmRleF07XG4gICAgc3R5bGUgPSBTdHJpbmcobWFwW3RhZ10pO1xuXG4gICAgaWYgKHRhZy5zbGljZSgwLCAyKSA9PT0gJyEhJykge1xuICAgICAgdGFnID0gJ3RhZzp5YW1sLm9yZywyMDAyOicgKyB0YWcuc2xpY2UoMik7XG4gICAgfVxuICAgIHR5cGUgPSBzY2hlbWEuY29tcGlsZWRUeXBlTWFwWydmYWxsYmFjayddW3RhZ107XG5cbiAgICBpZiAodHlwZSAmJiBfaGFzT3duUHJvcGVydHkuY2FsbCh0eXBlLnN0eWxlQWxpYXNlcywgc3R5bGUpKSB7XG4gICAgICBzdHlsZSA9IHR5cGUuc3R5bGVBbGlhc2VzW3N0eWxlXTtcbiAgICB9XG5cbiAgICByZXN1bHRbdGFnXSA9IHN0eWxlO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gZW5jb2RlSGV4KGNoYXJhY3Rlcikge1xuICB2YXIgc3RyaW5nLCBoYW5kbGUsIGxlbmd0aDtcblxuICBzdHJpbmcgPSBjaGFyYWN0ZXIudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCk7XG5cbiAgaWYgKGNoYXJhY3RlciA8PSAweEZGKSB7XG4gICAgaGFuZGxlID0gJ3gnO1xuICAgIGxlbmd0aCA9IDI7XG4gIH0gZWxzZSBpZiAoY2hhcmFjdGVyIDw9IDB4RkZGRikge1xuICAgIGhhbmRsZSA9ICd1JztcbiAgICBsZW5ndGggPSA0O1xuICB9IGVsc2UgaWYgKGNoYXJhY3RlciA8PSAweEZGRkZGRkZGKSB7XG4gICAgaGFuZGxlID0gJ1UnO1xuICAgIGxlbmd0aCA9IDg7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IFlBTUxFeGNlcHRpb24oJ2NvZGUgcG9pbnQgd2l0aGluIGEgc3RyaW5nIG1heSBub3QgYmUgZ3JlYXRlciB0aGFuIDB4RkZGRkZGRkYnKTtcbiAgfVxuXG4gIHJldHVybiAnXFxcXCcgKyBoYW5kbGUgKyBjb21tb24ucmVwZWF0KCcwJywgbGVuZ3RoIC0gc3RyaW5nLmxlbmd0aCkgKyBzdHJpbmc7XG59XG5cbmZ1bmN0aW9uIFN0YXRlKG9wdGlvbnMpIHtcbiAgdGhpcy5zY2hlbWEgICAgICAgID0gb3B0aW9uc1snc2NoZW1hJ10gfHwgREVGQVVMVF9GVUxMX1NDSEVNQTtcbiAgdGhpcy5pbmRlbnQgICAgICAgID0gTWF0aC5tYXgoMSwgKG9wdGlvbnNbJ2luZGVudCddIHx8IDIpKTtcbiAgdGhpcy5ub0FycmF5SW5kZW50ID0gb3B0aW9uc1snbm9BcnJheUluZGVudCddIHx8IGZhbHNlO1xuICB0aGlzLnNraXBJbnZhbGlkICAgPSBvcHRpb25zWydza2lwSW52YWxpZCddIHx8IGZhbHNlO1xuICB0aGlzLmZsb3dMZXZlbCAgICAgPSAoY29tbW9uLmlzTm90aGluZyhvcHRpb25zWydmbG93TGV2ZWwnXSkgPyAtMSA6IG9wdGlvbnNbJ2Zsb3dMZXZlbCddKTtcbiAgdGhpcy5zdHlsZU1hcCAgICAgID0gY29tcGlsZVN0eWxlTWFwKHRoaXMuc2NoZW1hLCBvcHRpb25zWydzdHlsZXMnXSB8fCBudWxsKTtcbiAgdGhpcy5zb3J0S2V5cyAgICAgID0gb3B0aW9uc1snc29ydEtleXMnXSB8fCBmYWxzZTtcbiAgdGhpcy5saW5lV2lkdGggICAgID0gb3B0aW9uc1snbGluZVdpZHRoJ10gfHwgODA7XG4gIHRoaXMubm9SZWZzICAgICAgICA9IG9wdGlvbnNbJ25vUmVmcyddIHx8IGZhbHNlO1xuICB0aGlzLm5vQ29tcGF0TW9kZSAgPSBvcHRpb25zWydub0NvbXBhdE1vZGUnXSB8fCBmYWxzZTtcbiAgdGhpcy5jb25kZW5zZUZsb3cgID0gb3B0aW9uc1snY29uZGVuc2VGbG93J10gfHwgZmFsc2U7XG5cbiAgdGhpcy5pbXBsaWNpdFR5cGVzID0gdGhpcy5zY2hlbWEuY29tcGlsZWRJbXBsaWNpdDtcbiAgdGhpcy5leHBsaWNpdFR5cGVzID0gdGhpcy5zY2hlbWEuY29tcGlsZWRFeHBsaWNpdDtcblxuICB0aGlzLnRhZyA9IG51bGw7XG4gIHRoaXMucmVzdWx0ID0gJyc7XG5cbiAgdGhpcy5kdXBsaWNhdGVzID0gW107XG4gIHRoaXMudXNlZER1cGxpY2F0ZXMgPSBudWxsO1xufVxuXG4vLyBJbmRlbnRzIGV2ZXJ5IGxpbmUgaW4gYSBzdHJpbmcuIEVtcHR5IGxpbmVzIChcXG4gb25seSkgYXJlIG5vdCBpbmRlbnRlZC5cbmZ1bmN0aW9uIGluZGVudFN0cmluZyhzdHJpbmcsIHNwYWNlcykge1xuICB2YXIgaW5kID0gY29tbW9uLnJlcGVhdCgnICcsIHNwYWNlcyksXG4gICAgICBwb3NpdGlvbiA9IDAsXG4gICAgICBuZXh0ID0gLTEsXG4gICAgICByZXN1bHQgPSAnJyxcbiAgICAgIGxpbmUsXG4gICAgICBsZW5ndGggPSBzdHJpbmcubGVuZ3RoO1xuXG4gIHdoaWxlIChwb3NpdGlvbiA8IGxlbmd0aCkge1xuICAgIG5leHQgPSBzdHJpbmcuaW5kZXhPZignXFxuJywgcG9zaXRpb24pO1xuICAgIGlmIChuZXh0ID09PSAtMSkge1xuICAgICAgbGluZSA9IHN0cmluZy5zbGljZShwb3NpdGlvbik7XG4gICAgICBwb3NpdGlvbiA9IGxlbmd0aDtcbiAgICB9IGVsc2Uge1xuICAgICAgbGluZSA9IHN0cmluZy5zbGljZShwb3NpdGlvbiwgbmV4dCArIDEpO1xuICAgICAgcG9zaXRpb24gPSBuZXh0ICsgMTtcbiAgICB9XG5cbiAgICBpZiAobGluZS5sZW5ndGggJiYgbGluZSAhPT0gJ1xcbicpIHJlc3VsdCArPSBpbmQ7XG5cbiAgICByZXN1bHQgKz0gbGluZTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIGdlbmVyYXRlTmV4dExpbmUoc3RhdGUsIGxldmVsKSB7XG4gIHJldHVybiAnXFxuJyArIGNvbW1vbi5yZXBlYXQoJyAnLCBzdGF0ZS5pbmRlbnQgKiBsZXZlbCk7XG59XG5cbmZ1bmN0aW9uIHRlc3RJbXBsaWNpdFJlc29sdmluZyhzdGF0ZSwgc3RyKSB7XG4gIHZhciBpbmRleCwgbGVuZ3RoLCB0eXBlO1xuXG4gIGZvciAoaW5kZXggPSAwLCBsZW5ndGggPSBzdGF0ZS5pbXBsaWNpdFR5cGVzLmxlbmd0aDsgaW5kZXggPCBsZW5ndGg7IGluZGV4ICs9IDEpIHtcbiAgICB0eXBlID0gc3RhdGUuaW1wbGljaXRUeXBlc1tpbmRleF07XG5cbiAgICBpZiAodHlwZS5yZXNvbHZlKHN0cikpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cblxuLy8gWzMzXSBzLXdoaXRlIDo6PSBzLXNwYWNlIHwgcy10YWJcbmZ1bmN0aW9uIGlzV2hpdGVzcGFjZShjKSB7XG4gIHJldHVybiBjID09PSBDSEFSX1NQQUNFIHx8IGMgPT09IENIQVJfVEFCO1xufVxuXG4vLyBSZXR1cm5zIHRydWUgaWYgdGhlIGNoYXJhY3RlciBjYW4gYmUgcHJpbnRlZCB3aXRob3V0IGVzY2FwaW5nLlxuLy8gRnJvbSBZQU1MIDEuMjogXCJhbnkgYWxsb3dlZCBjaGFyYWN0ZXJzIGtub3duIHRvIGJlIG5vbi1wcmludGFibGVcbi8vIHNob3VsZCBhbHNvIGJlIGVzY2FwZWQuIFtIb3dldmVyLF0gVGhpcyBpc25cdTIwMTl0IG1hbmRhdG9yeVwiXG4vLyBEZXJpdmVkIGZyb20gbmItY2hhciAtIFxcdCAtICN4ODUgLSAjeEEwIC0gI3gyMDI4IC0gI3gyMDI5LlxuZnVuY3Rpb24gaXNQcmludGFibGUoYykge1xuICByZXR1cm4gICgweDAwMDIwIDw9IGMgJiYgYyA8PSAweDAwMDA3RSlcbiAgICAgIHx8ICgoMHgwMDBBMSA8PSBjICYmIGMgPD0gMHgwMEQ3RkYpICYmIGMgIT09IDB4MjAyOCAmJiBjICE9PSAweDIwMjkpXG4gICAgICB8fCAoKDB4MEUwMDAgPD0gYyAmJiBjIDw9IDB4MDBGRkZEKSAmJiBjICE9PSAweEZFRkYgLyogQk9NICovKVxuICAgICAgfHwgICgweDEwMDAwIDw9IGMgJiYgYyA8PSAweDEwRkZGRik7XG59XG5cbi8vIFszNF0gbnMtY2hhciA6Oj0gbmItY2hhciAtIHMtd2hpdGVcbi8vIFsyN10gbmItY2hhciA6Oj0gYy1wcmludGFibGUgLSBiLWNoYXIgLSBjLWJ5dGUtb3JkZXItbWFya1xuLy8gWzI2XSBiLWNoYXIgIDo6PSBiLWxpbmUtZmVlZCB8IGItY2FycmlhZ2UtcmV0dXJuXG4vLyBbMjRdIGItbGluZS1mZWVkICAgICAgIDo6PSAgICAgI3hBICAgIC8qIExGICovXG4vLyBbMjVdIGItY2FycmlhZ2UtcmV0dXJuIDo6PSAgICAgI3hEICAgIC8qIENSICovXG4vLyBbM10gIGMtYnl0ZS1vcmRlci1tYXJrIDo6PSAgICAgI3hGRUZGXG5mdW5jdGlvbiBpc05zQ2hhcihjKSB7XG4gIHJldHVybiBpc1ByaW50YWJsZShjKSAmJiAhaXNXaGl0ZXNwYWNlKGMpXG4gICAgLy8gYnl0ZS1vcmRlci1tYXJrXG4gICAgJiYgYyAhPT0gMHhGRUZGXG4gICAgLy8gYi1jaGFyXG4gICAgJiYgYyAhPT0gQ0hBUl9DQVJSSUFHRV9SRVRVUk5cbiAgICAmJiBjICE9PSBDSEFSX0xJTkVfRkVFRDtcbn1cblxuLy8gU2ltcGxpZmllZCB0ZXN0IGZvciB2YWx1ZXMgYWxsb3dlZCBhZnRlciB0aGUgZmlyc3QgY2hhcmFjdGVyIGluIHBsYWluIHN0eWxlLlxuZnVuY3Rpb24gaXNQbGFpblNhZmUoYywgcHJldikge1xuICAvLyBVc2VzIGEgc3Vic2V0IG9mIG5iLWNoYXIgLSBjLWZsb3ctaW5kaWNhdG9yIC0gXCI6XCIgLSBcIiNcIlxuICAvLyB3aGVyZSBuYi1jaGFyIDo6PSBjLXByaW50YWJsZSAtIGItY2hhciAtIGMtYnl0ZS1vcmRlci1tYXJrLlxuICByZXR1cm4gaXNQcmludGFibGUoYykgJiYgYyAhPT0gMHhGRUZGXG4gICAgLy8gLSBjLWZsb3ctaW5kaWNhdG9yXG4gICAgJiYgYyAhPT0gQ0hBUl9DT01NQVxuICAgICYmIGMgIT09IENIQVJfTEVGVF9TUVVBUkVfQlJBQ0tFVFxuICAgICYmIGMgIT09IENIQVJfUklHSFRfU1FVQVJFX0JSQUNLRVRcbiAgICAmJiBjICE9PSBDSEFSX0xFRlRfQ1VSTFlfQlJBQ0tFVFxuICAgICYmIGMgIT09IENIQVJfUklHSFRfQ1VSTFlfQlJBQ0tFVFxuICAgIC8vIC0gXCI6XCIgLSBcIiNcIlxuICAgIC8vIC8qIEFuIG5zLWNoYXIgcHJlY2VkaW5nICovIFwiI1wiXG4gICAgJiYgYyAhPT0gQ0hBUl9DT0xPTlxuICAgICYmICgoYyAhPT0gQ0hBUl9TSEFSUCkgfHwgKHByZXYgJiYgaXNOc0NoYXIocHJldikpKTtcbn1cblxuLy8gU2ltcGxpZmllZCB0ZXN0IGZvciB2YWx1ZXMgYWxsb3dlZCBhcyB0aGUgZmlyc3QgY2hhcmFjdGVyIGluIHBsYWluIHN0eWxlLlxuZnVuY3Rpb24gaXNQbGFpblNhZmVGaXJzdChjKSB7XG4gIC8vIFVzZXMgYSBzdWJzZXQgb2YgbnMtY2hhciAtIGMtaW5kaWNhdG9yXG4gIC8vIHdoZXJlIG5zLWNoYXIgPSBuYi1jaGFyIC0gcy13aGl0ZS5cbiAgcmV0dXJuIGlzUHJpbnRhYmxlKGMpICYmIGMgIT09IDB4RkVGRlxuICAgICYmICFpc1doaXRlc3BhY2UoYykgLy8gLSBzLXdoaXRlXG4gICAgLy8gLSAoYy1pbmRpY2F0b3IgOjo9XG4gICAgLy8gXHUyMDFDLVx1MjAxRCB8IFx1MjAxQz9cdTIwMUQgfCBcdTIwMUM6XHUyMDFEIHwgXHUyMDFDLFx1MjAxRCB8IFx1MjAxQ1tcdTIwMUQgfCBcdTIwMUNdXHUyMDFEIHwgXHUyMDFDe1x1MjAxRCB8IFx1MjAxQ31cdTIwMURcbiAgICAmJiBjICE9PSBDSEFSX01JTlVTXG4gICAgJiYgYyAhPT0gQ0hBUl9RVUVTVElPTlxuICAgICYmIGMgIT09IENIQVJfQ09MT05cbiAgICAmJiBjICE9PSBDSEFSX0NPTU1BXG4gICAgJiYgYyAhPT0gQ0hBUl9MRUZUX1NRVUFSRV9CUkFDS0VUXG4gICAgJiYgYyAhPT0gQ0hBUl9SSUdIVF9TUVVBUkVfQlJBQ0tFVFxuICAgICYmIGMgIT09IENIQVJfTEVGVF9DVVJMWV9CUkFDS0VUXG4gICAgJiYgYyAhPT0gQ0hBUl9SSUdIVF9DVVJMWV9CUkFDS0VUXG4gICAgLy8gfCBcdTIwMUMjXHUyMDFEIHwgXHUyMDFDJlx1MjAxRCB8IFx1MjAxQypcdTIwMUQgfCBcdTIwMUMhXHUyMDFEIHwgXHUyMDFDfFx1MjAxRCB8IFx1MjAxQz1cdTIwMUQgfCBcdTIwMUM+XHUyMDFEIHwgXHUyMDFDJ1x1MjAxRCB8IFx1MjAxQ1wiXHUyMDFEXG4gICAgJiYgYyAhPT0gQ0hBUl9TSEFSUFxuICAgICYmIGMgIT09IENIQVJfQU1QRVJTQU5EXG4gICAgJiYgYyAhPT0gQ0hBUl9BU1RFUklTS1xuICAgICYmIGMgIT09IENIQVJfRVhDTEFNQVRJT05cbiAgICAmJiBjICE9PSBDSEFSX1ZFUlRJQ0FMX0xJTkVcbiAgICAmJiBjICE9PSBDSEFSX0VRVUFMU1xuICAgICYmIGMgIT09IENIQVJfR1JFQVRFUl9USEFOXG4gICAgJiYgYyAhPT0gQ0hBUl9TSU5HTEVfUVVPVEVcbiAgICAmJiBjICE9PSBDSEFSX0RPVUJMRV9RVU9URVxuICAgIC8vIHwgXHUyMDFDJVx1MjAxRCB8IFx1MjAxQ0BcdTIwMUQgfCBcdTIwMUNgXHUyMDFEKVxuICAgICYmIGMgIT09IENIQVJfUEVSQ0VOVFxuICAgICYmIGMgIT09IENIQVJfQ09NTUVSQ0lBTF9BVFxuICAgICYmIGMgIT09IENIQVJfR1JBVkVfQUNDRU5UO1xufVxuXG4vLyBEZXRlcm1pbmVzIHdoZXRoZXIgYmxvY2sgaW5kZW50YXRpb24gaW5kaWNhdG9yIGlzIHJlcXVpcmVkLlxuZnVuY3Rpb24gbmVlZEluZGVudEluZGljYXRvcihzdHJpbmcpIHtcbiAgdmFyIGxlYWRpbmdTcGFjZVJlID0gL15cXG4qIC87XG4gIHJldHVybiBsZWFkaW5nU3BhY2VSZS50ZXN0KHN0cmluZyk7XG59XG5cbnZhciBTVFlMRV9QTEFJTiAgID0gMSxcbiAgICBTVFlMRV9TSU5HTEUgID0gMixcbiAgICBTVFlMRV9MSVRFUkFMID0gMyxcbiAgICBTVFlMRV9GT0xERUQgID0gNCxcbiAgICBTVFlMRV9ET1VCTEUgID0gNTtcblxuLy8gRGV0ZXJtaW5lcyB3aGljaCBzY2FsYXIgc3R5bGVzIGFyZSBwb3NzaWJsZSBhbmQgcmV0dXJucyB0aGUgcHJlZmVycmVkIHN0eWxlLlxuLy8gbGluZVdpZHRoID0gLTEgPT4gbm8gbGltaXQuXG4vLyBQcmUtY29uZGl0aW9uczogc3RyLmxlbmd0aCA+IDAuXG4vLyBQb3N0LWNvbmRpdGlvbnM6XG4vLyAgICBTVFlMRV9QTEFJTiBvciBTVFlMRV9TSU5HTEUgPT4gbm8gXFxuIGFyZSBpbiB0aGUgc3RyaW5nLlxuLy8gICAgU1RZTEVfTElURVJBTCA9PiBubyBsaW5lcyBhcmUgc3VpdGFibGUgZm9yIGZvbGRpbmcgKG9yIGxpbmVXaWR0aCBpcyAtMSkuXG4vLyAgICBTVFlMRV9GT0xERUQgPT4gYSBsaW5lID4gbGluZVdpZHRoIGFuZCBjYW4gYmUgZm9sZGVkIChhbmQgbGluZVdpZHRoICE9IC0xKS5cbmZ1bmN0aW9uIGNob29zZVNjYWxhclN0eWxlKHN0cmluZywgc2luZ2xlTGluZU9ubHksIGluZGVudFBlckxldmVsLCBsaW5lV2lkdGgsIHRlc3RBbWJpZ3VvdXNUeXBlKSB7XG4gIHZhciBpO1xuICB2YXIgY2hhciwgcHJldl9jaGFyO1xuICB2YXIgaGFzTGluZUJyZWFrID0gZmFsc2U7XG4gIHZhciBoYXNGb2xkYWJsZUxpbmUgPSBmYWxzZTsgLy8gb25seSBjaGVja2VkIGlmIHNob3VsZFRyYWNrV2lkdGhcbiAgdmFyIHNob3VsZFRyYWNrV2lkdGggPSBsaW5lV2lkdGggIT09IC0xO1xuICB2YXIgcHJldmlvdXNMaW5lQnJlYWsgPSAtMTsgLy8gY291bnQgdGhlIGZpcnN0IGxpbmUgY29ycmVjdGx5XG4gIHZhciBwbGFpbiA9IGlzUGxhaW5TYWZlRmlyc3Qoc3RyaW5nLmNoYXJDb2RlQXQoMCkpXG4gICAgICAgICAgJiYgIWlzV2hpdGVzcGFjZShzdHJpbmcuY2hhckNvZGVBdChzdHJpbmcubGVuZ3RoIC0gMSkpO1xuXG4gIGlmIChzaW5nbGVMaW5lT25seSkge1xuICAgIC8vIENhc2U6IG5vIGJsb2NrIHN0eWxlcy5cbiAgICAvLyBDaGVjayBmb3IgZGlzYWxsb3dlZCBjaGFyYWN0ZXJzIHRvIHJ1bGUgb3V0IHBsYWluIGFuZCBzaW5nbGUuXG4gICAgZm9yIChpID0gMDsgaSA8IHN0cmluZy5sZW5ndGg7IGkrKykge1xuICAgICAgY2hhciA9IHN0cmluZy5jaGFyQ29kZUF0KGkpO1xuICAgICAgaWYgKCFpc1ByaW50YWJsZShjaGFyKSkge1xuICAgICAgICByZXR1cm4gU1RZTEVfRE9VQkxFO1xuICAgICAgfVxuICAgICAgcHJldl9jaGFyID0gaSA+IDAgPyBzdHJpbmcuY2hhckNvZGVBdChpIC0gMSkgOiBudWxsO1xuICAgICAgcGxhaW4gPSBwbGFpbiAmJiBpc1BsYWluU2FmZShjaGFyLCBwcmV2X2NoYXIpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICAvLyBDYXNlOiBibG9jayBzdHlsZXMgcGVybWl0dGVkLlxuICAgIGZvciAoaSA9IDA7IGkgPCBzdHJpbmcubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNoYXIgPSBzdHJpbmcuY2hhckNvZGVBdChpKTtcbiAgICAgIGlmIChjaGFyID09PSBDSEFSX0xJTkVfRkVFRCkge1xuICAgICAgICBoYXNMaW5lQnJlYWsgPSB0cnVlO1xuICAgICAgICAvLyBDaGVjayBpZiBhbnkgbGluZSBjYW4gYmUgZm9sZGVkLlxuICAgICAgICBpZiAoc2hvdWxkVHJhY2tXaWR0aCkge1xuICAgICAgICAgIGhhc0ZvbGRhYmxlTGluZSA9IGhhc0ZvbGRhYmxlTGluZSB8fFxuICAgICAgICAgICAgLy8gRm9sZGFibGUgbGluZSA9IHRvbyBsb25nLCBhbmQgbm90IG1vcmUtaW5kZW50ZWQuXG4gICAgICAgICAgICAoaSAtIHByZXZpb3VzTGluZUJyZWFrIC0gMSA+IGxpbmVXaWR0aCAmJlxuICAgICAgICAgICAgIHN0cmluZ1twcmV2aW91c0xpbmVCcmVhayArIDFdICE9PSAnICcpO1xuICAgICAgICAgIHByZXZpb3VzTGluZUJyZWFrID0gaTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICghaXNQcmludGFibGUoY2hhcikpIHtcbiAgICAgICAgcmV0dXJuIFNUWUxFX0RPVUJMRTtcbiAgICAgIH1cbiAgICAgIHByZXZfY2hhciA9IGkgPiAwID8gc3RyaW5nLmNoYXJDb2RlQXQoaSAtIDEpIDogbnVsbDtcbiAgICAgIHBsYWluID0gcGxhaW4gJiYgaXNQbGFpblNhZmUoY2hhciwgcHJldl9jaGFyKTtcbiAgICB9XG4gICAgLy8gaW4gY2FzZSB0aGUgZW5kIGlzIG1pc3NpbmcgYSBcXG5cbiAgICBoYXNGb2xkYWJsZUxpbmUgPSBoYXNGb2xkYWJsZUxpbmUgfHwgKHNob3VsZFRyYWNrV2lkdGggJiZcbiAgICAgIChpIC0gcHJldmlvdXNMaW5lQnJlYWsgLSAxID4gbGluZVdpZHRoICYmXG4gICAgICAgc3RyaW5nW3ByZXZpb3VzTGluZUJyZWFrICsgMV0gIT09ICcgJykpO1xuICB9XG4gIC8vIEFsdGhvdWdoIGV2ZXJ5IHN0eWxlIGNhbiByZXByZXNlbnQgXFxuIHdpdGhvdXQgZXNjYXBpbmcsIHByZWZlciBibG9jayBzdHlsZXNcbiAgLy8gZm9yIG11bHRpbGluZSwgc2luY2UgdGhleSdyZSBtb3JlIHJlYWRhYmxlIGFuZCB0aGV5IGRvbid0IGFkZCBlbXB0eSBsaW5lcy5cbiAgLy8gQWxzbyBwcmVmZXIgZm9sZGluZyBhIHN1cGVyLWxvbmcgbGluZS5cbiAgaWYgKCFoYXNMaW5lQnJlYWsgJiYgIWhhc0ZvbGRhYmxlTGluZSkge1xuICAgIC8vIFN0cmluZ3MgaW50ZXJwcmV0YWJsZSBhcyBhbm90aGVyIHR5cGUgaGF2ZSB0byBiZSBxdW90ZWQ7XG4gICAgLy8gZS5nLiB0aGUgc3RyaW5nICd0cnVlJyB2cy4gdGhlIGJvb2xlYW4gdHJ1ZS5cbiAgICByZXR1cm4gcGxhaW4gJiYgIXRlc3RBbWJpZ3VvdXNUeXBlKHN0cmluZylcbiAgICAgID8gU1RZTEVfUExBSU4gOiBTVFlMRV9TSU5HTEU7XG4gIH1cbiAgLy8gRWRnZSBjYXNlOiBibG9jayBpbmRlbnRhdGlvbiBpbmRpY2F0b3IgY2FuIG9ubHkgaGF2ZSBvbmUgZGlnaXQuXG4gIGlmIChpbmRlbnRQZXJMZXZlbCA+IDkgJiYgbmVlZEluZGVudEluZGljYXRvcihzdHJpbmcpKSB7XG4gICAgcmV0dXJuIFNUWUxFX0RPVUJMRTtcbiAgfVxuICAvLyBBdCB0aGlzIHBvaW50IHdlIGtub3cgYmxvY2sgc3R5bGVzIGFyZSB2YWxpZC5cbiAgLy8gUHJlZmVyIGxpdGVyYWwgc3R5bGUgdW5sZXNzIHdlIHdhbnQgdG8gZm9sZC5cbiAgcmV0dXJuIGhhc0ZvbGRhYmxlTGluZSA/IFNUWUxFX0ZPTERFRCA6IFNUWUxFX0xJVEVSQUw7XG59XG5cbi8vIE5vdGU6IGxpbmUgYnJlYWtpbmcvZm9sZGluZyBpcyBpbXBsZW1lbnRlZCBmb3Igb25seSB0aGUgZm9sZGVkIHN0eWxlLlxuLy8gTkIuIFdlIGRyb3AgdGhlIGxhc3QgdHJhaWxpbmcgbmV3bGluZSAoaWYgYW55KSBvZiBhIHJldHVybmVkIGJsb2NrIHNjYWxhclxuLy8gIHNpbmNlIHRoZSBkdW1wZXIgYWRkcyBpdHMgb3duIG5ld2xpbmUuIFRoaXMgYWx3YXlzIHdvcmtzOlxuLy8gICAgXHUyMDIyIE5vIGVuZGluZyBuZXdsaW5lID0+IHVuYWZmZWN0ZWQ7IGFscmVhZHkgdXNpbmcgc3RyaXAgXCItXCIgY2hvbXBpbmcuXG4vLyAgICBcdTIwMjIgRW5kaW5nIG5ld2xpbmUgICAgPT4gcmVtb3ZlZCB0aGVuIHJlc3RvcmVkLlxuLy8gIEltcG9ydGFudGx5LCB0aGlzIGtlZXBzIHRoZSBcIitcIiBjaG9tcCBpbmRpY2F0b3IgZnJvbSBnYWluaW5nIGFuIGV4dHJhIGxpbmUuXG5mdW5jdGlvbiB3cml0ZVNjYWxhcihzdGF0ZSwgc3RyaW5nLCBsZXZlbCwgaXNrZXkpIHtcbiAgc3RhdGUuZHVtcCA9IChmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHN0cmluZy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBcIicnXCI7XG4gICAgfVxuICAgIGlmICghc3RhdGUubm9Db21wYXRNb2RlICYmXG4gICAgICAgIERFUFJFQ0FURURfQk9PTEVBTlNfU1lOVEFYLmluZGV4T2Yoc3RyaW5nKSAhPT0gLTEpIHtcbiAgICAgIHJldHVybiBcIidcIiArIHN0cmluZyArIFwiJ1wiO1xuICAgIH1cblxuICAgIHZhciBpbmRlbnQgPSBzdGF0ZS5pbmRlbnQgKiBNYXRoLm1heCgxLCBsZXZlbCk7IC8vIG5vIDAtaW5kZW50IHNjYWxhcnNcbiAgICAvLyBBcyBpbmRlbnRhdGlvbiBnZXRzIGRlZXBlciwgbGV0IHRoZSB3aWR0aCBkZWNyZWFzZSBtb25vdG9uaWNhbGx5XG4gICAgLy8gdG8gdGhlIGxvd2VyIGJvdW5kIG1pbihzdGF0ZS5saW5lV2lkdGgsIDQwKS5cbiAgICAvLyBOb3RlIHRoYXQgdGhpcyBpbXBsaWVzXG4gICAgLy8gIHN0YXRlLmxpbmVXaWR0aCBcdTIyNjQgNDAgKyBzdGF0ZS5pbmRlbnQ6IHdpZHRoIGlzIGZpeGVkIGF0IHRoZSBsb3dlciBib3VuZC5cbiAgICAvLyAgc3RhdGUubGluZVdpZHRoID4gNDAgKyBzdGF0ZS5pbmRlbnQ6IHdpZHRoIGRlY3JlYXNlcyB1bnRpbCB0aGUgbG93ZXIgYm91bmQuXG4gICAgLy8gVGhpcyBiZWhhdmVzIGJldHRlciB0aGFuIGEgY29uc3RhbnQgbWluaW11bSB3aWR0aCB3aGljaCBkaXNhbGxvd3MgbmFycm93ZXIgb3B0aW9ucyxcbiAgICAvLyBvciBhbiBpbmRlbnQgdGhyZXNob2xkIHdoaWNoIGNhdXNlcyB0aGUgd2lkdGggdG8gc3VkZGVubHkgaW5jcmVhc2UuXG4gICAgdmFyIGxpbmVXaWR0aCA9IHN0YXRlLmxpbmVXaWR0aCA9PT0gLTFcbiAgICAgID8gLTEgOiBNYXRoLm1heChNYXRoLm1pbihzdGF0ZS5saW5lV2lkdGgsIDQwKSwgc3RhdGUubGluZVdpZHRoIC0gaW5kZW50KTtcblxuICAgIC8vIFdpdGhvdXQga25vd2luZyBpZiBrZXlzIGFyZSBpbXBsaWNpdC9leHBsaWNpdCwgYXNzdW1lIGltcGxpY2l0IGZvciBzYWZldHkuXG4gICAgdmFyIHNpbmdsZUxpbmVPbmx5ID0gaXNrZXlcbiAgICAgIC8vIE5vIGJsb2NrIHN0eWxlcyBpbiBmbG93IG1vZGUuXG4gICAgICB8fCAoc3RhdGUuZmxvd0xldmVsID4gLTEgJiYgbGV2ZWwgPj0gc3RhdGUuZmxvd0xldmVsKTtcbiAgICBmdW5jdGlvbiB0ZXN0QW1iaWd1aXR5KHN0cmluZykge1xuICAgICAgcmV0dXJuIHRlc3RJbXBsaWNpdFJlc29sdmluZyhzdGF0ZSwgc3RyaW5nKTtcbiAgICB9XG5cbiAgICBzd2l0Y2ggKGNob29zZVNjYWxhclN0eWxlKHN0cmluZywgc2luZ2xlTGluZU9ubHksIHN0YXRlLmluZGVudCwgbGluZVdpZHRoLCB0ZXN0QW1iaWd1aXR5KSkge1xuICAgICAgY2FzZSBTVFlMRV9QTEFJTjpcbiAgICAgICAgcmV0dXJuIHN0cmluZztcbiAgICAgIGNhc2UgU1RZTEVfU0lOR0xFOlxuICAgICAgICByZXR1cm4gXCInXCIgKyBzdHJpbmcucmVwbGFjZSgvJy9nLCBcIicnXCIpICsgXCInXCI7XG4gICAgICBjYXNlIFNUWUxFX0xJVEVSQUw6XG4gICAgICAgIHJldHVybiAnfCcgKyBibG9ja0hlYWRlcihzdHJpbmcsIHN0YXRlLmluZGVudClcbiAgICAgICAgICArIGRyb3BFbmRpbmdOZXdsaW5lKGluZGVudFN0cmluZyhzdHJpbmcsIGluZGVudCkpO1xuICAgICAgY2FzZSBTVFlMRV9GT0xERUQ6XG4gICAgICAgIHJldHVybiAnPicgKyBibG9ja0hlYWRlcihzdHJpbmcsIHN0YXRlLmluZGVudClcbiAgICAgICAgICArIGRyb3BFbmRpbmdOZXdsaW5lKGluZGVudFN0cmluZyhmb2xkU3RyaW5nKHN0cmluZywgbGluZVdpZHRoKSwgaW5kZW50KSk7XG4gICAgICBjYXNlIFNUWUxFX0RPVUJMRTpcbiAgICAgICAgcmV0dXJuICdcIicgKyBlc2NhcGVTdHJpbmcoc3RyaW5nLCBsaW5lV2lkdGgpICsgJ1wiJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBZQU1MRXhjZXB0aW9uKCdpbXBvc3NpYmxlIGVycm9yOiBpbnZhbGlkIHNjYWxhciBzdHlsZScpO1xuICAgIH1cbiAgfSgpKTtcbn1cblxuLy8gUHJlLWNvbmRpdGlvbnM6IHN0cmluZyBpcyB2YWxpZCBmb3IgYSBibG9jayBzY2FsYXIsIDEgPD0gaW5kZW50UGVyTGV2ZWwgPD0gOS5cbmZ1bmN0aW9uIGJsb2NrSGVhZGVyKHN0cmluZywgaW5kZW50UGVyTGV2ZWwpIHtcbiAgdmFyIGluZGVudEluZGljYXRvciA9IG5lZWRJbmRlbnRJbmRpY2F0b3Ioc3RyaW5nKSA/IFN0cmluZyhpbmRlbnRQZXJMZXZlbCkgOiAnJztcblxuICAvLyBub3RlIHRoZSBzcGVjaWFsIGNhc2U6IHRoZSBzdHJpbmcgJ1xcbicgY291bnRzIGFzIGEgXCJ0cmFpbGluZ1wiIGVtcHR5IGxpbmUuXG4gIHZhciBjbGlwID0gICAgICAgICAgc3RyaW5nW3N0cmluZy5sZW5ndGggLSAxXSA9PT0gJ1xcbic7XG4gIHZhciBrZWVwID0gY2xpcCAmJiAoc3RyaW5nW3N0cmluZy5sZW5ndGggLSAyXSA9PT0gJ1xcbicgfHwgc3RyaW5nID09PSAnXFxuJyk7XG4gIHZhciBjaG9tcCA9IGtlZXAgPyAnKycgOiAoY2xpcCA/ICcnIDogJy0nKTtcblxuICByZXR1cm4gaW5kZW50SW5kaWNhdG9yICsgY2hvbXAgKyAnXFxuJztcbn1cblxuLy8gKFNlZSB0aGUgbm90ZSBmb3Igd3JpdGVTY2FsYXIuKVxuZnVuY3Rpb24gZHJvcEVuZGluZ05ld2xpbmUoc3RyaW5nKSB7XG4gIHJldHVybiBzdHJpbmdbc3RyaW5nLmxlbmd0aCAtIDFdID09PSAnXFxuJyA/IHN0cmluZy5zbGljZSgwLCAtMSkgOiBzdHJpbmc7XG59XG5cbi8vIE5vdGU6IGEgbG9uZyBsaW5lIHdpdGhvdXQgYSBzdWl0YWJsZSBicmVhayBwb2ludCB3aWxsIGV4Y2VlZCB0aGUgd2lkdGggbGltaXQuXG4vLyBQcmUtY29uZGl0aW9uczogZXZlcnkgY2hhciBpbiBzdHIgaXNQcmludGFibGUsIHN0ci5sZW5ndGggPiAwLCB3aWR0aCA+IDAuXG5mdW5jdGlvbiBmb2xkU3RyaW5nKHN0cmluZywgd2lkdGgpIHtcbiAgLy8gSW4gZm9sZGVkIHN0eWxlLCAkayQgY29uc2VjdXRpdmUgbmV3bGluZXMgb3V0cHV0IGFzICRrKzEkIG5ld2xpbmVzXHUyMDE0XG4gIC8vIHVubGVzcyB0aGV5J3JlIGJlZm9yZSBvciBhZnRlciBhIG1vcmUtaW5kZW50ZWQgbGluZSwgb3IgYXQgdGhlIHZlcnlcbiAgLy8gYmVnaW5uaW5nIG9yIGVuZCwgaW4gd2hpY2ggY2FzZSAkayQgbWFwcyB0byAkayQuXG4gIC8vIFRoZXJlZm9yZSwgcGFyc2UgZWFjaCBjaHVuayBhcyBuZXdsaW5lKHMpIGZvbGxvd2VkIGJ5IGEgY29udGVudCBsaW5lLlxuICB2YXIgbGluZVJlID0gLyhcXG4rKShbXlxcbl0qKS9nO1xuXG4gIC8vIGZpcnN0IGxpbmUgKHBvc3NpYmx5IGFuIGVtcHR5IGxpbmUpXG4gIHZhciByZXN1bHQgPSAoZnVuY3Rpb24gKCkge1xuICAgIHZhciBuZXh0TEYgPSBzdHJpbmcuaW5kZXhPZignXFxuJyk7XG4gICAgbmV4dExGID0gbmV4dExGICE9PSAtMSA/IG5leHRMRiA6IHN0cmluZy5sZW5ndGg7XG4gICAgbGluZVJlLmxhc3RJbmRleCA9IG5leHRMRjtcbiAgICByZXR1cm4gZm9sZExpbmUoc3RyaW5nLnNsaWNlKDAsIG5leHRMRiksIHdpZHRoKTtcbiAgfSgpKTtcbiAgLy8gSWYgd2UgaGF2ZW4ndCByZWFjaGVkIHRoZSBmaXJzdCBjb250ZW50IGxpbmUgeWV0LCBkb24ndCBhZGQgYW4gZXh0cmEgXFxuLlxuICB2YXIgcHJldk1vcmVJbmRlbnRlZCA9IHN0cmluZ1swXSA9PT0gJ1xcbicgfHwgc3RyaW5nWzBdID09PSAnICc7XG4gIHZhciBtb3JlSW5kZW50ZWQ7XG5cbiAgLy8gcmVzdCBvZiB0aGUgbGluZXNcbiAgdmFyIG1hdGNoO1xuICB3aGlsZSAoKG1hdGNoID0gbGluZVJlLmV4ZWMoc3RyaW5nKSkpIHtcbiAgICB2YXIgcHJlZml4ID0gbWF0Y2hbMV0sIGxpbmUgPSBtYXRjaFsyXTtcbiAgICBtb3JlSW5kZW50ZWQgPSAobGluZVswXSA9PT0gJyAnKTtcbiAgICByZXN1bHQgKz0gcHJlZml4XG4gICAgICArICghcHJldk1vcmVJbmRlbnRlZCAmJiAhbW9yZUluZGVudGVkICYmIGxpbmUgIT09ICcnXG4gICAgICAgID8gJ1xcbicgOiAnJylcbiAgICAgICsgZm9sZExpbmUobGluZSwgd2lkdGgpO1xuICAgIHByZXZNb3JlSW5kZW50ZWQgPSBtb3JlSW5kZW50ZWQ7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vLyBHcmVlZHkgbGluZSBicmVha2luZy5cbi8vIFBpY2tzIHRoZSBsb25nZXN0IGxpbmUgdW5kZXIgdGhlIGxpbWl0IGVhY2ggdGltZSxcbi8vIG90aGVyd2lzZSBzZXR0bGVzIGZvciB0aGUgc2hvcnRlc3QgbGluZSBvdmVyIHRoZSBsaW1pdC5cbi8vIE5CLiBNb3JlLWluZGVudGVkIGxpbmVzICpjYW5ub3QqIGJlIGZvbGRlZCwgYXMgdGhhdCB3b3VsZCBhZGQgYW4gZXh0cmEgXFxuLlxuZnVuY3Rpb24gZm9sZExpbmUobGluZSwgd2lkdGgpIHtcbiAgaWYgKGxpbmUgPT09ICcnIHx8IGxpbmVbMF0gPT09ICcgJykgcmV0dXJuIGxpbmU7XG5cbiAgLy8gU2luY2UgYSBtb3JlLWluZGVudGVkIGxpbmUgYWRkcyBhIFxcbiwgYnJlYWtzIGNhbid0IGJlIGZvbGxvd2VkIGJ5IGEgc3BhY2UuXG4gIHZhciBicmVha1JlID0gLyBbXiBdL2c7IC8vIG5vdGU6IHRoZSBtYXRjaCBpbmRleCB3aWxsIGFsd2F5cyBiZSA8PSBsZW5ndGgtMi5cbiAgdmFyIG1hdGNoO1xuICAvLyBzdGFydCBpcyBhbiBpbmNsdXNpdmUgaW5kZXguIGVuZCwgY3VyciwgYW5kIG5leHQgYXJlIGV4Y2x1c2l2ZS5cbiAgdmFyIHN0YXJ0ID0gMCwgZW5kLCBjdXJyID0gMCwgbmV4dCA9IDA7XG4gIHZhciByZXN1bHQgPSAnJztcblxuICAvLyBJbnZhcmlhbnRzOiAwIDw9IHN0YXJ0IDw9IGxlbmd0aC0xLlxuICAvLyAgIDAgPD0gY3VyciA8PSBuZXh0IDw9IG1heCgwLCBsZW5ndGgtMikuIGN1cnIgLSBzdGFydCA8PSB3aWR0aC5cbiAgLy8gSW5zaWRlIHRoZSBsb29wOlxuICAvLyAgIEEgbWF0Y2ggaW1wbGllcyBsZW5ndGggPj0gMiwgc28gY3VyciBhbmQgbmV4dCBhcmUgPD0gbGVuZ3RoLTIuXG4gIHdoaWxlICgobWF0Y2ggPSBicmVha1JlLmV4ZWMobGluZSkpKSB7XG4gICAgbmV4dCA9IG1hdGNoLmluZGV4O1xuICAgIC8vIG1haW50YWluIGludmFyaWFudDogY3VyciAtIHN0YXJ0IDw9IHdpZHRoXG4gICAgaWYgKG5leHQgLSBzdGFydCA+IHdpZHRoKSB7XG4gICAgICBlbmQgPSAoY3VyciA+IHN0YXJ0KSA/IGN1cnIgOiBuZXh0OyAvLyBkZXJpdmUgZW5kIDw9IGxlbmd0aC0yXG4gICAgICByZXN1bHQgKz0gJ1xcbicgKyBsaW5lLnNsaWNlKHN0YXJ0LCBlbmQpO1xuICAgICAgLy8gc2tpcCB0aGUgc3BhY2UgdGhhdCB3YXMgb3V0cHV0IGFzIFxcblxuICAgICAgc3RhcnQgPSBlbmQgKyAxOyAgICAgICAgICAgICAgICAgICAgLy8gZGVyaXZlIHN0YXJ0IDw9IGxlbmd0aC0xXG4gICAgfVxuICAgIGN1cnIgPSBuZXh0O1xuICB9XG5cbiAgLy8gQnkgdGhlIGludmFyaWFudHMsIHN0YXJ0IDw9IGxlbmd0aC0xLCBzbyB0aGVyZSBpcyBzb21ldGhpbmcgbGVmdCBvdmVyLlxuICAvLyBJdCBpcyBlaXRoZXIgdGhlIHdob2xlIHN0cmluZyBvciBhIHBhcnQgc3RhcnRpbmcgZnJvbSBub24td2hpdGVzcGFjZS5cbiAgcmVzdWx0ICs9ICdcXG4nO1xuICAvLyBJbnNlcnQgYSBicmVhayBpZiB0aGUgcmVtYWluZGVyIGlzIHRvbyBsb25nIGFuZCB0aGVyZSBpcyBhIGJyZWFrIGF2YWlsYWJsZS5cbiAgaWYgKGxpbmUubGVuZ3RoIC0gc3RhcnQgPiB3aWR0aCAmJiBjdXJyID4gc3RhcnQpIHtcbiAgICByZXN1bHQgKz0gbGluZS5zbGljZShzdGFydCwgY3VycikgKyAnXFxuJyArIGxpbmUuc2xpY2UoY3VyciArIDEpO1xuICB9IGVsc2Uge1xuICAgIHJlc3VsdCArPSBsaW5lLnNsaWNlKHN0YXJ0KTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQuc2xpY2UoMSk7IC8vIGRyb3AgZXh0cmEgXFxuIGpvaW5lclxufVxuXG4vLyBFc2NhcGVzIGEgZG91YmxlLXF1b3RlZCBzdHJpbmcuXG5mdW5jdGlvbiBlc2NhcGVTdHJpbmcoc3RyaW5nKSB7XG4gIHZhciByZXN1bHQgPSAnJztcbiAgdmFyIGNoYXIsIG5leHRDaGFyO1xuICB2YXIgZXNjYXBlU2VxO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgc3RyaW5nLmxlbmd0aDsgaSsrKSB7XG4gICAgY2hhciA9IHN0cmluZy5jaGFyQ29kZUF0KGkpO1xuICAgIC8vIENoZWNrIGZvciBzdXJyb2dhdGUgcGFpcnMgKHJlZmVyZW5jZSBVbmljb2RlIDMuMCBzZWN0aW9uIFwiMy43IFN1cnJvZ2F0ZXNcIikuXG4gICAgaWYgKGNoYXIgPj0gMHhEODAwICYmIGNoYXIgPD0gMHhEQkZGLyogaGlnaCBzdXJyb2dhdGUgKi8pIHtcbiAgICAgIG5leHRDaGFyID0gc3RyaW5nLmNoYXJDb2RlQXQoaSArIDEpO1xuICAgICAgaWYgKG5leHRDaGFyID49IDB4REMwMCAmJiBuZXh0Q2hhciA8PSAweERGRkYvKiBsb3cgc3Vycm9nYXRlICovKSB7XG4gICAgICAgIC8vIENvbWJpbmUgdGhlIHN1cnJvZ2F0ZSBwYWlyIGFuZCBzdG9yZSBpdCBlc2NhcGVkLlxuICAgICAgICByZXN1bHQgKz0gZW5jb2RlSGV4KChjaGFyIC0gMHhEODAwKSAqIDB4NDAwICsgbmV4dENoYXIgLSAweERDMDAgKyAweDEwMDAwKTtcbiAgICAgICAgLy8gQWR2YW5jZSBpbmRleCBvbmUgZXh0cmEgc2luY2Ugd2UgYWxyZWFkeSB1c2VkIHRoYXQgY2hhciBoZXJlLlxuICAgICAgICBpKys7IGNvbnRpbnVlO1xuICAgICAgfVxuICAgIH1cbiAgICBlc2NhcGVTZXEgPSBFU0NBUEVfU0VRVUVOQ0VTW2NoYXJdO1xuICAgIHJlc3VsdCArPSAhZXNjYXBlU2VxICYmIGlzUHJpbnRhYmxlKGNoYXIpXG4gICAgICA/IHN0cmluZ1tpXVxuICAgICAgOiBlc2NhcGVTZXEgfHwgZW5jb2RlSGV4KGNoYXIpO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gd3JpdGVGbG93U2VxdWVuY2Uoc3RhdGUsIGxldmVsLCBvYmplY3QpIHtcbiAgdmFyIF9yZXN1bHQgPSAnJyxcbiAgICAgIF90YWcgICAgPSBzdGF0ZS50YWcsXG4gICAgICBpbmRleCxcbiAgICAgIGxlbmd0aDtcblxuICBmb3IgKGluZGV4ID0gMCwgbGVuZ3RoID0gb2JqZWN0Lmxlbmd0aDsgaW5kZXggPCBsZW5ndGg7IGluZGV4ICs9IDEpIHtcbiAgICAvLyBXcml0ZSBvbmx5IHZhbGlkIGVsZW1lbnRzLlxuICAgIGlmICh3cml0ZU5vZGUoc3RhdGUsIGxldmVsLCBvYmplY3RbaW5kZXhdLCBmYWxzZSwgZmFsc2UpKSB7XG4gICAgICBpZiAoaW5kZXggIT09IDApIF9yZXN1bHQgKz0gJywnICsgKCFzdGF0ZS5jb25kZW5zZUZsb3cgPyAnICcgOiAnJyk7XG4gICAgICBfcmVzdWx0ICs9IHN0YXRlLmR1bXA7XG4gICAgfVxuICB9XG5cbiAgc3RhdGUudGFnID0gX3RhZztcbiAgc3RhdGUuZHVtcCA9ICdbJyArIF9yZXN1bHQgKyAnXSc7XG59XG5cbmZ1bmN0aW9uIHdyaXRlQmxvY2tTZXF1ZW5jZShzdGF0ZSwgbGV2ZWwsIG9iamVjdCwgY29tcGFjdCkge1xuICB2YXIgX3Jlc3VsdCA9ICcnLFxuICAgICAgX3RhZyAgICA9IHN0YXRlLnRhZyxcbiAgICAgIGluZGV4LFxuICAgICAgbGVuZ3RoO1xuXG4gIGZvciAoaW5kZXggPSAwLCBsZW5ndGggPSBvYmplY3QubGVuZ3RoOyBpbmRleCA8IGxlbmd0aDsgaW5kZXggKz0gMSkge1xuICAgIC8vIFdyaXRlIG9ubHkgdmFsaWQgZWxlbWVudHMuXG4gICAgaWYgKHdyaXRlTm9kZShzdGF0ZSwgbGV2ZWwgKyAxLCBvYmplY3RbaW5kZXhdLCB0cnVlLCB0cnVlKSkge1xuICAgICAgaWYgKCFjb21wYWN0IHx8IGluZGV4ICE9PSAwKSB7XG4gICAgICAgIF9yZXN1bHQgKz0gZ2VuZXJhdGVOZXh0TGluZShzdGF0ZSwgbGV2ZWwpO1xuICAgICAgfVxuXG4gICAgICBpZiAoc3RhdGUuZHVtcCAmJiBDSEFSX0xJTkVfRkVFRCA9PT0gc3RhdGUuZHVtcC5jaGFyQ29kZUF0KDApKSB7XG4gICAgICAgIF9yZXN1bHQgKz0gJy0nO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgX3Jlc3VsdCArPSAnLSAnO1xuICAgICAgfVxuXG4gICAgICBfcmVzdWx0ICs9IHN0YXRlLmR1bXA7XG4gICAgfVxuICB9XG5cbiAgc3RhdGUudGFnID0gX3RhZztcbiAgc3RhdGUuZHVtcCA9IF9yZXN1bHQgfHwgJ1tdJzsgLy8gRW1wdHkgc2VxdWVuY2UgaWYgbm8gdmFsaWQgdmFsdWVzLlxufVxuXG5mdW5jdGlvbiB3cml0ZUZsb3dNYXBwaW5nKHN0YXRlLCBsZXZlbCwgb2JqZWN0KSB7XG4gIHZhciBfcmVzdWx0ICAgICAgID0gJycsXG4gICAgICBfdGFnICAgICAgICAgID0gc3RhdGUudGFnLFxuICAgICAgb2JqZWN0S2V5TGlzdCA9IE9iamVjdC5rZXlzKG9iamVjdCksXG4gICAgICBpbmRleCxcbiAgICAgIGxlbmd0aCxcbiAgICAgIG9iamVjdEtleSxcbiAgICAgIG9iamVjdFZhbHVlLFxuICAgICAgcGFpckJ1ZmZlcjtcblxuICBmb3IgKGluZGV4ID0gMCwgbGVuZ3RoID0gb2JqZWN0S2V5TGlzdC5sZW5ndGg7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCArPSAxKSB7XG5cbiAgICBwYWlyQnVmZmVyID0gJyc7XG4gICAgaWYgKGluZGV4ICE9PSAwKSBwYWlyQnVmZmVyICs9ICcsICc7XG5cbiAgICBpZiAoc3RhdGUuY29uZGVuc2VGbG93KSBwYWlyQnVmZmVyICs9ICdcIic7XG5cbiAgICBvYmplY3RLZXkgPSBvYmplY3RLZXlMaXN0W2luZGV4XTtcbiAgICBvYmplY3RWYWx1ZSA9IG9iamVjdFtvYmplY3RLZXldO1xuXG4gICAgaWYgKCF3cml0ZU5vZGUoc3RhdGUsIGxldmVsLCBvYmplY3RLZXksIGZhbHNlLCBmYWxzZSkpIHtcbiAgICAgIGNvbnRpbnVlOyAvLyBTa2lwIHRoaXMgcGFpciBiZWNhdXNlIG9mIGludmFsaWQga2V5O1xuICAgIH1cblxuICAgIGlmIChzdGF0ZS5kdW1wLmxlbmd0aCA+IDEwMjQpIHBhaXJCdWZmZXIgKz0gJz8gJztcblxuICAgIHBhaXJCdWZmZXIgKz0gc3RhdGUuZHVtcCArIChzdGF0ZS5jb25kZW5zZUZsb3cgPyAnXCInIDogJycpICsgJzonICsgKHN0YXRlLmNvbmRlbnNlRmxvdyA/ICcnIDogJyAnKTtcblxuICAgIGlmICghd3JpdGVOb2RlKHN0YXRlLCBsZXZlbCwgb2JqZWN0VmFsdWUsIGZhbHNlLCBmYWxzZSkpIHtcbiAgICAgIGNvbnRpbnVlOyAvLyBTa2lwIHRoaXMgcGFpciBiZWNhdXNlIG9mIGludmFsaWQgdmFsdWUuXG4gICAgfVxuXG4gICAgcGFpckJ1ZmZlciArPSBzdGF0ZS5kdW1wO1xuXG4gICAgLy8gQm90aCBrZXkgYW5kIHZhbHVlIGFyZSB2YWxpZC5cbiAgICBfcmVzdWx0ICs9IHBhaXJCdWZmZXI7XG4gIH1cblxuICBzdGF0ZS50YWcgPSBfdGFnO1xuICBzdGF0ZS5kdW1wID0gJ3snICsgX3Jlc3VsdCArICd9Jztcbn1cblxuZnVuY3Rpb24gd3JpdGVCbG9ja01hcHBpbmcoc3RhdGUsIGxldmVsLCBvYmplY3QsIGNvbXBhY3QpIHtcbiAgdmFyIF9yZXN1bHQgICAgICAgPSAnJyxcbiAgICAgIF90YWcgICAgICAgICAgPSBzdGF0ZS50YWcsXG4gICAgICBvYmplY3RLZXlMaXN0ID0gT2JqZWN0LmtleXMob2JqZWN0KSxcbiAgICAgIGluZGV4LFxuICAgICAgbGVuZ3RoLFxuICAgICAgb2JqZWN0S2V5LFxuICAgICAgb2JqZWN0VmFsdWUsXG4gICAgICBleHBsaWNpdFBhaXIsXG4gICAgICBwYWlyQnVmZmVyO1xuXG4gIC8vIEFsbG93IHNvcnRpbmcga2V5cyBzbyB0aGF0IHRoZSBvdXRwdXQgZmlsZSBpcyBkZXRlcm1pbmlzdGljXG4gIGlmIChzdGF0ZS5zb3J0S2V5cyA9PT0gdHJ1ZSkge1xuICAgIC8vIERlZmF1bHQgc29ydGluZ1xuICAgIG9iamVjdEtleUxpc3Quc29ydCgpO1xuICB9IGVsc2UgaWYgKHR5cGVvZiBzdGF0ZS5zb3J0S2V5cyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIC8vIEN1c3RvbSBzb3J0IGZ1bmN0aW9uXG4gICAgb2JqZWN0S2V5TGlzdC5zb3J0KHN0YXRlLnNvcnRLZXlzKTtcbiAgfSBlbHNlIGlmIChzdGF0ZS5zb3J0S2V5cykge1xuICAgIC8vIFNvbWV0aGluZyBpcyB3cm9uZ1xuICAgIHRocm93IG5ldyBZQU1MRXhjZXB0aW9uKCdzb3J0S2V5cyBtdXN0IGJlIGEgYm9vbGVhbiBvciBhIGZ1bmN0aW9uJyk7XG4gIH1cblxuICBmb3IgKGluZGV4ID0gMCwgbGVuZ3RoID0gb2JqZWN0S2V5TGlzdC5sZW5ndGg7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCArPSAxKSB7XG4gICAgcGFpckJ1ZmZlciA9ICcnO1xuXG4gICAgaWYgKCFjb21wYWN0IHx8IGluZGV4ICE9PSAwKSB7XG4gICAgICBwYWlyQnVmZmVyICs9IGdlbmVyYXRlTmV4dExpbmUoc3RhdGUsIGxldmVsKTtcbiAgICB9XG5cbiAgICBvYmplY3RLZXkgPSBvYmplY3RLZXlMaXN0W2luZGV4XTtcbiAgICBvYmplY3RWYWx1ZSA9IG9iamVjdFtvYmplY3RLZXldO1xuXG4gICAgaWYgKCF3cml0ZU5vZGUoc3RhdGUsIGxldmVsICsgMSwgb2JqZWN0S2V5LCB0cnVlLCB0cnVlLCB0cnVlKSkge1xuICAgICAgY29udGludWU7IC8vIFNraXAgdGhpcyBwYWlyIGJlY2F1c2Ugb2YgaW52YWxpZCBrZXkuXG4gICAgfVxuXG4gICAgZXhwbGljaXRQYWlyID0gKHN0YXRlLnRhZyAhPT0gbnVsbCAmJiBzdGF0ZS50YWcgIT09ICc/JykgfHxcbiAgICAgICAgICAgICAgICAgICAoc3RhdGUuZHVtcCAmJiBzdGF0ZS5kdW1wLmxlbmd0aCA+IDEwMjQpO1xuXG4gICAgaWYgKGV4cGxpY2l0UGFpcikge1xuICAgICAgaWYgKHN0YXRlLmR1bXAgJiYgQ0hBUl9MSU5FX0ZFRUQgPT09IHN0YXRlLmR1bXAuY2hhckNvZGVBdCgwKSkge1xuICAgICAgICBwYWlyQnVmZmVyICs9ICc/JztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBhaXJCdWZmZXIgKz0gJz8gJztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBwYWlyQnVmZmVyICs9IHN0YXRlLmR1bXA7XG5cbiAgICBpZiAoZXhwbGljaXRQYWlyKSB7XG4gICAgICBwYWlyQnVmZmVyICs9IGdlbmVyYXRlTmV4dExpbmUoc3RhdGUsIGxldmVsKTtcbiAgICB9XG5cbiAgICBpZiAoIXdyaXRlTm9kZShzdGF0ZSwgbGV2ZWwgKyAxLCBvYmplY3RWYWx1ZSwgdHJ1ZSwgZXhwbGljaXRQYWlyKSkge1xuICAgICAgY29udGludWU7IC8vIFNraXAgdGhpcyBwYWlyIGJlY2F1c2Ugb2YgaW52YWxpZCB2YWx1ZS5cbiAgICB9XG5cbiAgICBpZiAoc3RhdGUuZHVtcCAmJiBDSEFSX0xJTkVfRkVFRCA9PT0gc3RhdGUuZHVtcC5jaGFyQ29kZUF0KDApKSB7XG4gICAgICBwYWlyQnVmZmVyICs9ICc6JztcbiAgICB9IGVsc2Uge1xuICAgICAgcGFpckJ1ZmZlciArPSAnOiAnO1xuICAgIH1cblxuICAgIHBhaXJCdWZmZXIgKz0gc3RhdGUuZHVtcDtcblxuICAgIC8vIEJvdGgga2V5IGFuZCB2YWx1ZSBhcmUgdmFsaWQuXG4gICAgX3Jlc3VsdCArPSBwYWlyQnVmZmVyO1xuICB9XG5cbiAgc3RhdGUudGFnID0gX3RhZztcbiAgc3RhdGUuZHVtcCA9IF9yZXN1bHQgfHwgJ3t9JzsgLy8gRW1wdHkgbWFwcGluZyBpZiBubyB2YWxpZCBwYWlycy5cbn1cblxuZnVuY3Rpb24gZGV0ZWN0VHlwZShzdGF0ZSwgb2JqZWN0LCBleHBsaWNpdCkge1xuICB2YXIgX3Jlc3VsdCwgdHlwZUxpc3QsIGluZGV4LCBsZW5ndGgsIHR5cGUsIHN0eWxlO1xuXG4gIHR5cGVMaXN0ID0gZXhwbGljaXQgPyBzdGF0ZS5leHBsaWNpdFR5cGVzIDogc3RhdGUuaW1wbGljaXRUeXBlcztcblxuICBmb3IgKGluZGV4ID0gMCwgbGVuZ3RoID0gdHlwZUxpc3QubGVuZ3RoOyBpbmRleCA8IGxlbmd0aDsgaW5kZXggKz0gMSkge1xuICAgIHR5cGUgPSB0eXBlTGlzdFtpbmRleF07XG5cbiAgICBpZiAoKHR5cGUuaW5zdGFuY2VPZiAgfHwgdHlwZS5wcmVkaWNhdGUpICYmXG4gICAgICAgICghdHlwZS5pbnN0YW5jZU9mIHx8ICgodHlwZW9mIG9iamVjdCA9PT0gJ29iamVjdCcpICYmIChvYmplY3QgaW5zdGFuY2VvZiB0eXBlLmluc3RhbmNlT2YpKSkgJiZcbiAgICAgICAgKCF0eXBlLnByZWRpY2F0ZSAgfHwgdHlwZS5wcmVkaWNhdGUob2JqZWN0KSkpIHtcblxuICAgICAgc3RhdGUudGFnID0gZXhwbGljaXQgPyB0eXBlLnRhZyA6ICc/JztcblxuICAgICAgaWYgKHR5cGUucmVwcmVzZW50KSB7XG4gICAgICAgIHN0eWxlID0gc3RhdGUuc3R5bGVNYXBbdHlwZS50YWddIHx8IHR5cGUuZGVmYXVsdFN0eWxlO1xuXG4gICAgICAgIGlmIChfdG9TdHJpbmcuY2FsbCh0eXBlLnJlcHJlc2VudCkgPT09ICdbb2JqZWN0IEZ1bmN0aW9uXScpIHtcbiAgICAgICAgICBfcmVzdWx0ID0gdHlwZS5yZXByZXNlbnQob2JqZWN0LCBzdHlsZSk7XG4gICAgICAgIH0gZWxzZSBpZiAoX2hhc093blByb3BlcnR5LmNhbGwodHlwZS5yZXByZXNlbnQsIHN0eWxlKSkge1xuICAgICAgICAgIF9yZXN1bHQgPSB0eXBlLnJlcHJlc2VudFtzdHlsZV0ob2JqZWN0LCBzdHlsZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFlBTUxFeGNlcHRpb24oJyE8JyArIHR5cGUudGFnICsgJz4gdGFnIHJlc29sdmVyIGFjY2VwdHMgbm90IFwiJyArIHN0eWxlICsgJ1wiIHN0eWxlJyk7XG4gICAgICAgIH1cblxuICAgICAgICBzdGF0ZS5kdW1wID0gX3Jlc3VsdDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG4vLyBTZXJpYWxpemVzIGBvYmplY3RgIGFuZCB3cml0ZXMgaXQgdG8gZ2xvYmFsIGByZXN1bHRgLlxuLy8gUmV0dXJucyB0cnVlIG9uIHN1Y2Nlc3MsIG9yIGZhbHNlIG9uIGludmFsaWQgb2JqZWN0LlxuLy9cbmZ1bmN0aW9uIHdyaXRlTm9kZShzdGF0ZSwgbGV2ZWwsIG9iamVjdCwgYmxvY2ssIGNvbXBhY3QsIGlza2V5KSB7XG4gIHN0YXRlLnRhZyA9IG51bGw7XG4gIHN0YXRlLmR1bXAgPSBvYmplY3Q7XG5cbiAgaWYgKCFkZXRlY3RUeXBlKHN0YXRlLCBvYmplY3QsIGZhbHNlKSkge1xuICAgIGRldGVjdFR5cGUoc3RhdGUsIG9iamVjdCwgdHJ1ZSk7XG4gIH1cblxuICB2YXIgdHlwZSA9IF90b1N0cmluZy5jYWxsKHN0YXRlLmR1bXApO1xuXG4gIGlmIChibG9jaykge1xuICAgIGJsb2NrID0gKHN0YXRlLmZsb3dMZXZlbCA8IDAgfHwgc3RhdGUuZmxvd0xldmVsID4gbGV2ZWwpO1xuICB9XG5cbiAgdmFyIG9iamVjdE9yQXJyYXkgPSB0eXBlID09PSAnW29iamVjdCBPYmplY3RdJyB8fCB0eXBlID09PSAnW29iamVjdCBBcnJheV0nLFxuICAgICAgZHVwbGljYXRlSW5kZXgsXG4gICAgICBkdXBsaWNhdGU7XG5cbiAgaWYgKG9iamVjdE9yQXJyYXkpIHtcbiAgICBkdXBsaWNhdGVJbmRleCA9IHN0YXRlLmR1cGxpY2F0ZXMuaW5kZXhPZihvYmplY3QpO1xuICAgIGR1cGxpY2F0ZSA9IGR1cGxpY2F0ZUluZGV4ICE9PSAtMTtcbiAgfVxuXG4gIGlmICgoc3RhdGUudGFnICE9PSBudWxsICYmIHN0YXRlLnRhZyAhPT0gJz8nKSB8fCBkdXBsaWNhdGUgfHwgKHN0YXRlLmluZGVudCAhPT0gMiAmJiBsZXZlbCA+IDApKSB7XG4gICAgY29tcGFjdCA9IGZhbHNlO1xuICB9XG5cbiAgaWYgKGR1cGxpY2F0ZSAmJiBzdGF0ZS51c2VkRHVwbGljYXRlc1tkdXBsaWNhdGVJbmRleF0pIHtcbiAgICBzdGF0ZS5kdW1wID0gJypyZWZfJyArIGR1cGxpY2F0ZUluZGV4O1xuICB9IGVsc2Uge1xuICAgIGlmIChvYmplY3RPckFycmF5ICYmIGR1cGxpY2F0ZSAmJiAhc3RhdGUudXNlZER1cGxpY2F0ZXNbZHVwbGljYXRlSW5kZXhdKSB7XG4gICAgICBzdGF0ZS51c2VkRHVwbGljYXRlc1tkdXBsaWNhdGVJbmRleF0gPSB0cnVlO1xuICAgIH1cbiAgICBpZiAodHlwZSA9PT0gJ1tvYmplY3QgT2JqZWN0XScpIHtcbiAgICAgIGlmIChibG9jayAmJiAoT2JqZWN0LmtleXMoc3RhdGUuZHVtcCkubGVuZ3RoICE9PSAwKSkge1xuICAgICAgICB3cml0ZUJsb2NrTWFwcGluZyhzdGF0ZSwgbGV2ZWwsIHN0YXRlLmR1bXAsIGNvbXBhY3QpO1xuICAgICAgICBpZiAoZHVwbGljYXRlKSB7XG4gICAgICAgICAgc3RhdGUuZHVtcCA9ICcmcmVmXycgKyBkdXBsaWNhdGVJbmRleCArIHN0YXRlLmR1bXA7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHdyaXRlRmxvd01hcHBpbmcoc3RhdGUsIGxldmVsLCBzdGF0ZS5kdW1wKTtcbiAgICAgICAgaWYgKGR1cGxpY2F0ZSkge1xuICAgICAgICAgIHN0YXRlLmR1bXAgPSAnJnJlZl8nICsgZHVwbGljYXRlSW5kZXggKyAnICcgKyBzdGF0ZS5kdW1wO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAnW29iamVjdCBBcnJheV0nKSB7XG4gICAgICB2YXIgYXJyYXlMZXZlbCA9IChzdGF0ZS5ub0FycmF5SW5kZW50ICYmIChsZXZlbCA+IDApKSA/IGxldmVsIC0gMSA6IGxldmVsO1xuICAgICAgaWYgKGJsb2NrICYmIChzdGF0ZS5kdW1wLmxlbmd0aCAhPT0gMCkpIHtcbiAgICAgICAgd3JpdGVCbG9ja1NlcXVlbmNlKHN0YXRlLCBhcnJheUxldmVsLCBzdGF0ZS5kdW1wLCBjb21wYWN0KTtcbiAgICAgICAgaWYgKGR1cGxpY2F0ZSkge1xuICAgICAgICAgIHN0YXRlLmR1bXAgPSAnJnJlZl8nICsgZHVwbGljYXRlSW5kZXggKyBzdGF0ZS5kdW1wO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB3cml0ZUZsb3dTZXF1ZW5jZShzdGF0ZSwgYXJyYXlMZXZlbCwgc3RhdGUuZHVtcCk7XG4gICAgICAgIGlmIChkdXBsaWNhdGUpIHtcbiAgICAgICAgICBzdGF0ZS5kdW1wID0gJyZyZWZfJyArIGR1cGxpY2F0ZUluZGV4ICsgJyAnICsgc3RhdGUuZHVtcDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ1tvYmplY3QgU3RyaW5nXScpIHtcbiAgICAgIGlmIChzdGF0ZS50YWcgIT09ICc/Jykge1xuICAgICAgICB3cml0ZVNjYWxhcihzdGF0ZSwgc3RhdGUuZHVtcCwgbGV2ZWwsIGlza2V5KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHN0YXRlLnNraXBJbnZhbGlkKSByZXR1cm4gZmFsc2U7XG4gICAgICB0aHJvdyBuZXcgWUFNTEV4Y2VwdGlvbigndW5hY2NlcHRhYmxlIGtpbmQgb2YgYW4gb2JqZWN0IHRvIGR1bXAgJyArIHR5cGUpO1xuICAgIH1cblxuICAgIGlmIChzdGF0ZS50YWcgIT09IG51bGwgJiYgc3RhdGUudGFnICE9PSAnPycpIHtcbiAgICAgIHN0YXRlLmR1bXAgPSAnITwnICsgc3RhdGUudGFnICsgJz4gJyArIHN0YXRlLmR1bXA7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG5cbmZ1bmN0aW9uIGdldER1cGxpY2F0ZVJlZmVyZW5jZXMob2JqZWN0LCBzdGF0ZSkge1xuICB2YXIgb2JqZWN0cyA9IFtdLFxuICAgICAgZHVwbGljYXRlc0luZGV4ZXMgPSBbXSxcbiAgICAgIGluZGV4LFxuICAgICAgbGVuZ3RoO1xuXG4gIGluc3BlY3ROb2RlKG9iamVjdCwgb2JqZWN0cywgZHVwbGljYXRlc0luZGV4ZXMpO1xuXG4gIGZvciAoaW5kZXggPSAwLCBsZW5ndGggPSBkdXBsaWNhdGVzSW5kZXhlcy5sZW5ndGg7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCArPSAxKSB7XG4gICAgc3RhdGUuZHVwbGljYXRlcy5wdXNoKG9iamVjdHNbZHVwbGljYXRlc0luZGV4ZXNbaW5kZXhdXSk7XG4gIH1cbiAgc3RhdGUudXNlZER1cGxpY2F0ZXMgPSBuZXcgQXJyYXkobGVuZ3RoKTtcbn1cblxuZnVuY3Rpb24gaW5zcGVjdE5vZGUob2JqZWN0LCBvYmplY3RzLCBkdXBsaWNhdGVzSW5kZXhlcykge1xuICB2YXIgb2JqZWN0S2V5TGlzdCxcbiAgICAgIGluZGV4LFxuICAgICAgbGVuZ3RoO1xuXG4gIGlmIChvYmplY3QgIT09IG51bGwgJiYgdHlwZW9mIG9iamVjdCA9PT0gJ29iamVjdCcpIHtcbiAgICBpbmRleCA9IG9iamVjdHMuaW5kZXhPZihvYmplY3QpO1xuICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgIGlmIChkdXBsaWNhdGVzSW5kZXhlcy5pbmRleE9mKGluZGV4KSA9PT0gLTEpIHtcbiAgICAgICAgZHVwbGljYXRlc0luZGV4ZXMucHVzaChpbmRleCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIG9iamVjdHMucHVzaChvYmplY3QpO1xuXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShvYmplY3QpKSB7XG4gICAgICAgIGZvciAoaW5kZXggPSAwLCBsZW5ndGggPSBvYmplY3QubGVuZ3RoOyBpbmRleCA8IGxlbmd0aDsgaW5kZXggKz0gMSkge1xuICAgICAgICAgIGluc3BlY3ROb2RlKG9iamVjdFtpbmRleF0sIG9iamVjdHMsIGR1cGxpY2F0ZXNJbmRleGVzKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb2JqZWN0S2V5TGlzdCA9IE9iamVjdC5rZXlzKG9iamVjdCk7XG5cbiAgICAgICAgZm9yIChpbmRleCA9IDAsIGxlbmd0aCA9IG9iamVjdEtleUxpc3QubGVuZ3RoOyBpbmRleCA8IGxlbmd0aDsgaW5kZXggKz0gMSkge1xuICAgICAgICAgIGluc3BlY3ROb2RlKG9iamVjdFtvYmplY3RLZXlMaXN0W2luZGV4XV0sIG9iamVjdHMsIGR1cGxpY2F0ZXNJbmRleGVzKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBkdW1wKGlucHV0LCBvcHRpb25zKSB7XG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuXG4gIHZhciBzdGF0ZSA9IG5ldyBTdGF0ZShvcHRpb25zKTtcblxuICBpZiAoIXN0YXRlLm5vUmVmcykgZ2V0RHVwbGljYXRlUmVmZXJlbmNlcyhpbnB1dCwgc3RhdGUpO1xuXG4gIGlmICh3cml0ZU5vZGUoc3RhdGUsIDAsIGlucHV0LCB0cnVlLCB0cnVlKSkgcmV0dXJuIHN0YXRlLmR1bXAgKyAnXFxuJztcblxuICByZXR1cm4gJyc7XG59XG5cbmZ1bmN0aW9uIHNhZmVEdW1wKGlucHV0LCBvcHRpb25zKSB7XG4gIHJldHVybiBkdW1wKGlucHV0LCBjb21tb24uZXh0ZW5kKHsgc2NoZW1hOiBERUZBVUxUX1NBRkVfU0NIRU1BIH0sIG9wdGlvbnMpKTtcbn1cblxubW9kdWxlLmV4cG9ydHMuZHVtcCAgICAgPSBkdW1wO1xubW9kdWxlLmV4cG9ydHMuc2FmZUR1bXAgPSBzYWZlRHVtcDtcbiIsICIndXNlIHN0cmljdCc7XG5cblxudmFyIGxvYWRlciA9IHJlcXVpcmUoJy4vanMteWFtbC9sb2FkZXInKTtcbnZhciBkdW1wZXIgPSByZXF1aXJlKCcuL2pzLXlhbWwvZHVtcGVyJyk7XG5cblxuZnVuY3Rpb24gZGVwcmVjYXRlZChuYW1lKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdGdW5jdGlvbiAnICsgbmFtZSArICcgaXMgZGVwcmVjYXRlZCBhbmQgY2Fubm90IGJlIHVzZWQuJyk7XG4gIH07XG59XG5cblxubW9kdWxlLmV4cG9ydHMuVHlwZSAgICAgICAgICAgICAgICA9IHJlcXVpcmUoJy4vanMteWFtbC90eXBlJyk7XG5tb2R1bGUuZXhwb3J0cy5TY2hlbWEgICAgICAgICAgICAgID0gcmVxdWlyZSgnLi9qcy15YW1sL3NjaGVtYScpO1xubW9kdWxlLmV4cG9ydHMuRkFJTFNBRkVfU0NIRU1BICAgICA9IHJlcXVpcmUoJy4vanMteWFtbC9zY2hlbWEvZmFpbHNhZmUnKTtcbm1vZHVsZS5leHBvcnRzLkpTT05fU0NIRU1BICAgICAgICAgPSByZXF1aXJlKCcuL2pzLXlhbWwvc2NoZW1hL2pzb24nKTtcbm1vZHVsZS5leHBvcnRzLkNPUkVfU0NIRU1BICAgICAgICAgPSByZXF1aXJlKCcuL2pzLXlhbWwvc2NoZW1hL2NvcmUnKTtcbm1vZHVsZS5leHBvcnRzLkRFRkFVTFRfU0FGRV9TQ0hFTUEgPSByZXF1aXJlKCcuL2pzLXlhbWwvc2NoZW1hL2RlZmF1bHRfc2FmZScpO1xubW9kdWxlLmV4cG9ydHMuREVGQVVMVF9GVUxMX1NDSEVNQSA9IHJlcXVpcmUoJy4vanMteWFtbC9zY2hlbWEvZGVmYXVsdF9mdWxsJyk7XG5tb2R1bGUuZXhwb3J0cy5sb2FkICAgICAgICAgICAgICAgID0gbG9hZGVyLmxvYWQ7XG5tb2R1bGUuZXhwb3J0cy5sb2FkQWxsICAgICAgICAgICAgID0gbG9hZGVyLmxvYWRBbGw7XG5tb2R1bGUuZXhwb3J0cy5zYWZlTG9hZCAgICAgICAgICAgID0gbG9hZGVyLnNhZmVMb2FkO1xubW9kdWxlLmV4cG9ydHMuc2FmZUxvYWRBbGwgICAgICAgICA9IGxvYWRlci5zYWZlTG9hZEFsbDtcbm1vZHVsZS5leHBvcnRzLmR1bXAgICAgICAgICAgICAgICAgPSBkdW1wZXIuZHVtcDtcbm1vZHVsZS5leHBvcnRzLnNhZmVEdW1wICAgICAgICAgICAgPSBkdW1wZXIuc2FmZUR1bXA7XG5tb2R1bGUuZXhwb3J0cy5ZQU1MRXhjZXB0aW9uICAgICAgID0gcmVxdWlyZSgnLi9qcy15YW1sL2V4Y2VwdGlvbicpO1xuXG4vLyBEZXByZWNhdGVkIHNjaGVtYSBuYW1lcyBmcm9tIEpTLVlBTUwgMi4wLnhcbm1vZHVsZS5leHBvcnRzLk1JTklNQUxfU0NIRU1BID0gcmVxdWlyZSgnLi9qcy15YW1sL3NjaGVtYS9mYWlsc2FmZScpO1xubW9kdWxlLmV4cG9ydHMuU0FGRV9TQ0hFTUEgICAgPSByZXF1aXJlKCcuL2pzLXlhbWwvc2NoZW1hL2RlZmF1bHRfc2FmZScpO1xubW9kdWxlLmV4cG9ydHMuREVGQVVMVF9TQ0hFTUEgPSByZXF1aXJlKCcuL2pzLXlhbWwvc2NoZW1hL2RlZmF1bHRfZnVsbCcpO1xuXG4vLyBEZXByZWNhdGVkIGZ1bmN0aW9ucyBmcm9tIEpTLVlBTUwgMS54Lnhcbm1vZHVsZS5leHBvcnRzLnNjYW4gICAgICAgICAgID0gZGVwcmVjYXRlZCgnc2NhbicpO1xubW9kdWxlLmV4cG9ydHMucGFyc2UgICAgICAgICAgPSBkZXByZWNhdGVkKCdwYXJzZScpO1xubW9kdWxlLmV4cG9ydHMuY29tcG9zZSAgICAgICAgPSBkZXByZWNhdGVkKCdjb21wb3NlJyk7XG5tb2R1bGUuZXhwb3J0cy5hZGRDb25zdHJ1Y3RvciA9IGRlcHJlY2F0ZWQoJ2FkZENvbnN0cnVjdG9yJyk7XG4iLCAiJ3VzZSBzdHJpY3QnO1xuXG5cbnZhciB5YW1sID0gcmVxdWlyZSgnLi9saWIvanMteWFtbC5qcycpO1xuXG5cbm1vZHVsZS5leHBvcnRzID0geWFtbDtcbiIsICIvKlxuICogR2VuZXJhdGVkIGJ5IFBFRy5qcyAwLjEwLjAuXG4gKlxuICogaHR0cDovL3BlZ2pzLm9yZy9cbiAqL1xuXG5cInVzZSBzdHJpY3RcIjtcblxuZnVuY3Rpb24gcGVnJHN1YmNsYXNzKGNoaWxkLCBwYXJlbnQpIHtcbiAgZnVuY3Rpb24gY3RvcigpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGNoaWxkOyB9XG4gIGN0b3IucHJvdG90eXBlID0gcGFyZW50LnByb3RvdHlwZTtcbiAgY2hpbGQucHJvdG90eXBlID0gbmV3IGN0b3IoKTtcbn1cblxuZnVuY3Rpb24gcGVnJFN5bnRheEVycm9yKG1lc3NhZ2UsIGV4cGVjdGVkLCBmb3VuZCwgbG9jYXRpb24pIHtcbiAgdGhpcy5tZXNzYWdlICA9IG1lc3NhZ2U7XG4gIHRoaXMuZXhwZWN0ZWQgPSBleHBlY3RlZDtcbiAgdGhpcy5mb3VuZCAgICA9IGZvdW5kO1xuICB0aGlzLmxvY2F0aW9uID0gbG9jYXRpb247XG4gIHRoaXMubmFtZSAgICAgPSBcIlN5bnRheEVycm9yXCI7XG5cbiAgaWYgKHR5cGVvZiBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UodGhpcywgcGVnJFN5bnRheEVycm9yKTtcbiAgfVxufVxuXG5wZWckc3ViY2xhc3MocGVnJFN5bnRheEVycm9yLCBFcnJvcik7XG5cbnBlZyRTeW50YXhFcnJvci5idWlsZE1lc3NhZ2UgPSBmdW5jdGlvbihleHBlY3RlZCwgZm91bmQpIHtcbiAgdmFyIERFU0NSSUJFX0VYUEVDVEFUSU9OX0ZOUyA9IHtcbiAgICAgICAgbGl0ZXJhbDogZnVuY3Rpb24oZXhwZWN0YXRpb24pIHtcbiAgICAgICAgICByZXR1cm4gXCJcXFwiXCIgKyBsaXRlcmFsRXNjYXBlKGV4cGVjdGF0aW9uLnRleHQpICsgXCJcXFwiXCI7XG4gICAgICAgIH0sXG5cbiAgICAgICAgXCJjbGFzc1wiOiBmdW5jdGlvbihleHBlY3RhdGlvbikge1xuICAgICAgICAgIHZhciBlc2NhcGVkUGFydHMgPSBcIlwiLFxuICAgICAgICAgICAgICBpO1xuXG4gICAgICAgICAgZm9yIChpID0gMDsgaSA8IGV4cGVjdGF0aW9uLnBhcnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBlc2NhcGVkUGFydHMgKz0gZXhwZWN0YXRpb24ucGFydHNbaV0gaW5zdGFuY2VvZiBBcnJheVxuICAgICAgICAgICAgICA/IGNsYXNzRXNjYXBlKGV4cGVjdGF0aW9uLnBhcnRzW2ldWzBdKSArIFwiLVwiICsgY2xhc3NFc2NhcGUoZXhwZWN0YXRpb24ucGFydHNbaV1bMV0pXG4gICAgICAgICAgICAgIDogY2xhc3NFc2NhcGUoZXhwZWN0YXRpb24ucGFydHNbaV0pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBcIltcIiArIChleHBlY3RhdGlvbi5pbnZlcnRlZCA/IFwiXlwiIDogXCJcIikgKyBlc2NhcGVkUGFydHMgKyBcIl1cIjtcbiAgICAgICAgfSxcblxuICAgICAgICBhbnk6IGZ1bmN0aW9uKGV4cGVjdGF0aW9uKSB7XG4gICAgICAgICAgcmV0dXJuIFwiYW55IGNoYXJhY3RlclwiO1xuICAgICAgICB9LFxuXG4gICAgICAgIGVuZDogZnVuY3Rpb24oZXhwZWN0YXRpb24pIHtcbiAgICAgICAgICByZXR1cm4gXCJlbmQgb2YgaW5wdXRcIjtcbiAgICAgICAgfSxcblxuICAgICAgICBvdGhlcjogZnVuY3Rpb24oZXhwZWN0YXRpb24pIHtcbiAgICAgICAgICByZXR1cm4gZXhwZWN0YXRpb24uZGVzY3JpcHRpb247XG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgZnVuY3Rpb24gaGV4KGNoKSB7XG4gICAgcmV0dXJuIGNoLmNoYXJDb2RlQXQoMCkudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCk7XG4gIH1cblxuICBmdW5jdGlvbiBsaXRlcmFsRXNjYXBlKHMpIHtcbiAgICByZXR1cm4gc1xuICAgICAgLnJlcGxhY2UoL1xcXFwvZywgJ1xcXFxcXFxcJylcbiAgICAgIC5yZXBsYWNlKC9cIi9nLCAgJ1xcXFxcIicpXG4gICAgICAucmVwbGFjZSgvXFwwL2csICdcXFxcMCcpXG4gICAgICAucmVwbGFjZSgvXFx0L2csICdcXFxcdCcpXG4gICAgICAucmVwbGFjZSgvXFxuL2csICdcXFxcbicpXG4gICAgICAucmVwbGFjZSgvXFxyL2csICdcXFxccicpXG4gICAgICAucmVwbGFjZSgvW1xceDAwLVxceDBGXS9nLCAgICAgICAgICBmdW5jdGlvbihjaCkgeyByZXR1cm4gJ1xcXFx4MCcgKyBoZXgoY2gpOyB9KVxuICAgICAgLnJlcGxhY2UoL1tcXHgxMC1cXHgxRlxceDdGLVxceDlGXS9nLCBmdW5jdGlvbihjaCkgeyByZXR1cm4gJ1xcXFx4JyAgKyBoZXgoY2gpOyB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNsYXNzRXNjYXBlKHMpIHtcbiAgICByZXR1cm4gc1xuICAgICAgLnJlcGxhY2UoL1xcXFwvZywgJ1xcXFxcXFxcJylcbiAgICAgIC5yZXBsYWNlKC9cXF0vZywgJ1xcXFxdJylcbiAgICAgIC5yZXBsYWNlKC9cXF4vZywgJ1xcXFxeJylcbiAgICAgIC5yZXBsYWNlKC8tL2csICAnXFxcXC0nKVxuICAgICAgLnJlcGxhY2UoL1xcMC9nLCAnXFxcXDAnKVxuICAgICAgLnJlcGxhY2UoL1xcdC9nLCAnXFxcXHQnKVxuICAgICAgLnJlcGxhY2UoL1xcbi9nLCAnXFxcXG4nKVxuICAgICAgLnJlcGxhY2UoL1xcci9nLCAnXFxcXHInKVxuICAgICAgLnJlcGxhY2UoL1tcXHgwMC1cXHgwRl0vZywgICAgICAgICAgZnVuY3Rpb24oY2gpIHsgcmV0dXJuICdcXFxceDAnICsgaGV4KGNoKTsgfSlcbiAgICAgIC5yZXBsYWNlKC9bXFx4MTAtXFx4MUZcXHg3Ri1cXHg5Rl0vZywgZnVuY3Rpb24oY2gpIHsgcmV0dXJuICdcXFxceCcgICsgaGV4KGNoKTsgfSk7XG4gIH1cblxuICBmdW5jdGlvbiBkZXNjcmliZUV4cGVjdGF0aW9uKGV4cGVjdGF0aW9uKSB7XG4gICAgcmV0dXJuIERFU0NSSUJFX0VYUEVDVEFUSU9OX0ZOU1tleHBlY3RhdGlvbi50eXBlXShleHBlY3RhdGlvbik7XG4gIH1cblxuICBmdW5jdGlvbiBkZXNjcmliZUV4cGVjdGVkKGV4cGVjdGVkKSB7XG4gICAgdmFyIGRlc2NyaXB0aW9ucyA9IG5ldyBBcnJheShleHBlY3RlZC5sZW5ndGgpLFxuICAgICAgICBpLCBqO1xuXG4gICAgZm9yIChpID0gMDsgaSA8IGV4cGVjdGVkLmxlbmd0aDsgaSsrKSB7XG4gICAgICBkZXNjcmlwdGlvbnNbaV0gPSBkZXNjcmliZUV4cGVjdGF0aW9uKGV4cGVjdGVkW2ldKTtcbiAgICB9XG5cbiAgICBkZXNjcmlwdGlvbnMuc29ydCgpO1xuXG4gICAgaWYgKGRlc2NyaXB0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICBmb3IgKGkgPSAxLCBqID0gMTsgaSA8IGRlc2NyaXB0aW9ucy5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAoZGVzY3JpcHRpb25zW2kgLSAxXSAhPT0gZGVzY3JpcHRpb25zW2ldKSB7XG4gICAgICAgICAgZGVzY3JpcHRpb25zW2pdID0gZGVzY3JpcHRpb25zW2ldO1xuICAgICAgICAgIGorKztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZGVzY3JpcHRpb25zLmxlbmd0aCA9IGo7XG4gICAgfVxuXG4gICAgc3dpdGNoIChkZXNjcmlwdGlvbnMubGVuZ3RoKSB7XG4gICAgICBjYXNlIDE6XG4gICAgICAgIHJldHVybiBkZXNjcmlwdGlvbnNbMF07XG5cbiAgICAgIGNhc2UgMjpcbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0aW9uc1swXSArIFwiIG9yIFwiICsgZGVzY3JpcHRpb25zWzFdO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gZGVzY3JpcHRpb25zLnNsaWNlKDAsIC0xKS5qb2luKFwiLCBcIilcbiAgICAgICAgICArIFwiLCBvciBcIlxuICAgICAgICAgICsgZGVzY3JpcHRpb25zW2Rlc2NyaXB0aW9ucy5sZW5ndGggLSAxXTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBkZXNjcmliZUZvdW5kKGZvdW5kKSB7XG4gICAgcmV0dXJuIGZvdW5kID8gXCJcXFwiXCIgKyBsaXRlcmFsRXNjYXBlKGZvdW5kKSArIFwiXFxcIlwiIDogXCJlbmQgb2YgaW5wdXRcIjtcbiAgfVxuXG4gIHJldHVybiBcIkV4cGVjdGVkIFwiICsgZGVzY3JpYmVFeHBlY3RlZChleHBlY3RlZCkgKyBcIiBidXQgXCIgKyBkZXNjcmliZUZvdW5kKGZvdW5kKSArIFwiIGZvdW5kLlwiO1xufTtcblxuZnVuY3Rpb24gcGVnJHBhcnNlKGlucHV0LCBvcHRpb25zKSB7XG4gIG9wdGlvbnMgPSBvcHRpb25zICE9PSB2b2lkIDAgPyBvcHRpb25zIDoge307XG5cbiAgdmFyIHBlZyRGQUlMRUQgPSB7fSxcblxuICAgICAgcGVnJHN0YXJ0UnVsZUZ1bmN0aW9ucyA9IHsgU3RhcnQ6IHBlZyRwYXJzZVN0YXJ0IH0sXG4gICAgICBwZWckc3RhcnRSdWxlRnVuY3Rpb24gID0gcGVnJHBhcnNlU3RhcnQsXG5cbiAgICAgIHBlZyRjMCA9IGZ1bmN0aW9uKHN0YXRlbWVudHMpIHsgcmV0dXJuIFtdLmNvbmNhdCguLi4gc3RhdGVtZW50cykgfSxcbiAgICAgIHBlZyRjMSA9IFwiLVwiLFxuICAgICAgcGVnJGMyID0gcGVnJGxpdGVyYWxFeHBlY3RhdGlvbihcIi1cIiwgZmFsc2UpLFxuICAgICAgcGVnJGMzID0gZnVuY3Rpb24odmFsdWUpIHsgcmV0dXJuIHZhbHVlIH0sXG4gICAgICBwZWckYzQgPSBmdW5jdGlvbihzdGF0ZW1lbnRzKSB7IHJldHVybiBPYmplY3QuYXNzaWduKHt9LCAuLi4gc3RhdGVtZW50cykgfSxcbiAgICAgIHBlZyRjNSA9IFwiI1wiLFxuICAgICAgcGVnJGM2ID0gcGVnJGxpdGVyYWxFeHBlY3RhdGlvbihcIiNcIiwgZmFsc2UpLFxuICAgICAgcGVnJGM3ID0gcGVnJGFueUV4cGVjdGF0aW9uKCksXG4gICAgICBwZWckYzggPSBmdW5jdGlvbigpIHsgcmV0dXJuIHt9IH0sXG4gICAgICBwZWckYzkgPSBcIjpcIixcbiAgICAgIHBlZyRjMTAgPSBwZWckbGl0ZXJhbEV4cGVjdGF0aW9uKFwiOlwiLCBmYWxzZSksXG4gICAgICBwZWckYzExID0gZnVuY3Rpb24ocHJvcGVydHksIHZhbHVlKSB7IHJldHVybiB7W3Byb3BlcnR5XTogdmFsdWV9IH0sXG4gICAgICBwZWckYzEyID0gXCIsXCIsXG4gICAgICBwZWckYzEzID0gcGVnJGxpdGVyYWxFeHBlY3RhdGlvbihcIixcIiwgZmFsc2UpLFxuICAgICAgcGVnJGMxNCA9IGZ1bmN0aW9uKHByb3BlcnR5LCBvdGhlcikgeyByZXR1cm4gb3RoZXIgfSxcbiAgICAgIHBlZyRjMTUgPSBmdW5jdGlvbihwcm9wZXJ0eSwgb3RoZXJzLCB2YWx1ZSkgeyByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgLi4uIFtwcm9wZXJ0eV0uY29uY2F0KG90aGVycykubWFwKHByb3BlcnR5ID0+ICh7W3Byb3BlcnR5XTogdmFsdWV9KSkpIH0sXG4gICAgICBwZWckYzE2ID0gZnVuY3Rpb24oc3RhdGVtZW50cykgeyByZXR1cm4gc3RhdGVtZW50cyB9LFxuICAgICAgcGVnJGMxNyA9IGZ1bmN0aW9uKGV4cHJlc3Npb24pIHsgcmV0dXJuIGV4cHJlc3Npb24gfSxcbiAgICAgIHBlZyRjMTggPSBwZWckb3RoZXJFeHBlY3RhdGlvbihcImNvcnJlY3QgaW5kZW50YXRpb25cIiksXG4gICAgICBwZWckYzE5ID0gXCIgXCIsXG4gICAgICBwZWckYzIwID0gcGVnJGxpdGVyYWxFeHBlY3RhdGlvbihcIiBcIiwgZmFsc2UpLFxuICAgICAgcGVnJGMyMSA9IGZ1bmN0aW9uKHNwYWNlcykgeyByZXR1cm4gc3BhY2VzLmxlbmd0aCA9PT0gaW5kZW50TGV2ZWwgKiBJTkRFTlRfU1RFUCB9LFxuICAgICAgcGVnJGMyMiA9IGZ1bmN0aW9uKHNwYWNlcykgeyByZXR1cm4gc3BhY2VzLmxlbmd0aCA9PT0gKGluZGVudExldmVsICsgMSkgKiBJTkRFTlRfU1RFUCB9LFxuICAgICAgcGVnJGMyMyA9IGZ1bmN0aW9uKCkgeyBpbmRlbnRMZXZlbCsrOyByZXR1cm4gdHJ1ZSB9LFxuICAgICAgcGVnJGMyNCA9IGZ1bmN0aW9uKCkgeyBpbmRlbnRMZXZlbC0tOyByZXR1cm4gdHJ1ZSB9LFxuICAgICAgcGVnJGMyNSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGV4dCgpIH0sXG4gICAgICBwZWckYzI2ID0gcGVnJG90aGVyRXhwZWN0YXRpb24oXCJwc2V1ZG9zdHJpbmdcIiksXG4gICAgICBwZWckYzI3ID0gL15bXlxcclxcblxcdCA/OixcXF1be30jJiohfD4nXCIlQGBcXC1dLyxcbiAgICAgIHBlZyRjMjggPSBwZWckY2xhc3NFeHBlY3RhdGlvbihbXCJcXHJcIiwgXCJcXG5cIiwgXCJcXHRcIiwgXCIgXCIsIFwiP1wiLCBcIjpcIiwgXCIsXCIsIFwiXVwiLCBcIltcIiwgXCJ7XCIsIFwifVwiLCBcIiNcIiwgXCImXCIsIFwiKlwiLCBcIiFcIiwgXCJ8XCIsIFwiPlwiLCBcIidcIiwgXCJcXFwiXCIsIFwiJVwiLCBcIkBcIiwgXCJgXCIsIFwiLVwiXSwgdHJ1ZSwgZmFsc2UpLFxuICAgICAgcGVnJGMyOSA9IC9eW15cXHJcXG5cXHQgLFxcXVt7fTojXCInXS8sXG4gICAgICBwZWckYzMwID0gcGVnJGNsYXNzRXhwZWN0YXRpb24oW1wiXFxyXCIsIFwiXFxuXCIsIFwiXFx0XCIsIFwiIFwiLCBcIixcIiwgXCJdXCIsIFwiW1wiLCBcIntcIiwgXCJ9XCIsIFwiOlwiLCBcIiNcIiwgXCJcXFwiXCIsIFwiJ1wiXSwgdHJ1ZSwgZmFsc2UpLFxuICAgICAgcGVnJGMzMSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGV4dCgpLnJlcGxhY2UoL14gKnwgKiQvZywgJycpIH0sXG4gICAgICBwZWckYzMyID0gXCItLVwiLFxuICAgICAgcGVnJGMzMyA9IHBlZyRsaXRlcmFsRXhwZWN0YXRpb24oXCItLVwiLCBmYWxzZSksXG4gICAgICBwZWckYzM0ID0gL15bYS16QS1aXFwvMC05XS8sXG4gICAgICBwZWckYzM1ID0gcGVnJGNsYXNzRXhwZWN0YXRpb24oW1tcImFcIiwgXCJ6XCJdLCBbXCJBXCIsIFwiWlwiXSwgXCIvXCIsIFtcIjBcIiwgXCI5XCJdXSwgZmFsc2UsIGZhbHNlKSxcbiAgICAgIHBlZyRjMzYgPSAvXlteXFxyXFxuXFx0IDosXS8sXG4gICAgICBwZWckYzM3ID0gcGVnJGNsYXNzRXhwZWN0YXRpb24oW1wiXFxyXCIsIFwiXFxuXCIsIFwiXFx0XCIsIFwiIFwiLCBcIjpcIiwgXCIsXCJdLCB0cnVlLCBmYWxzZSksXG4gICAgICBwZWckYzM4ID0gXCJudWxsXCIsXG4gICAgICBwZWckYzM5ID0gcGVnJGxpdGVyYWxFeHBlY3RhdGlvbihcIm51bGxcIiwgZmFsc2UpLFxuICAgICAgcGVnJGM0MCA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gbnVsbCB9LFxuICAgICAgcGVnJGM0MSA9IFwidHJ1ZVwiLFxuICAgICAgcGVnJGM0MiA9IHBlZyRsaXRlcmFsRXhwZWN0YXRpb24oXCJ0cnVlXCIsIGZhbHNlKSxcbiAgICAgIHBlZyRjNDMgPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRydWUgfSxcbiAgICAgIHBlZyRjNDQgPSBcImZhbHNlXCIsXG4gICAgICBwZWckYzQ1ID0gcGVnJGxpdGVyYWxFeHBlY3RhdGlvbihcImZhbHNlXCIsIGZhbHNlKSxcbiAgICAgIHBlZyRjNDYgPSBmdW5jdGlvbigpIHsgcmV0dXJuIGZhbHNlIH0sXG4gICAgICBwZWckYzQ3ID0gcGVnJG90aGVyRXhwZWN0YXRpb24oXCJzdHJpbmdcIiksXG4gICAgICBwZWckYzQ4ID0gXCJcXFwiXCIsXG4gICAgICBwZWckYzQ5ID0gcGVnJGxpdGVyYWxFeHBlY3RhdGlvbihcIlxcXCJcIiwgZmFsc2UpLFxuICAgICAgcGVnJGM1MCA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gXCJcIiB9LFxuICAgICAgcGVnJGM1MSA9IGZ1bmN0aW9uKGNoYXJzKSB7IHJldHVybiBjaGFycyB9LFxuICAgICAgcGVnJGM1MiA9IGZ1bmN0aW9uKGNoYXJzKSB7IHJldHVybiBjaGFycy5qb2luKGBgKSB9LFxuICAgICAgcGVnJGM1MyA9IC9eW15cIlxcXFxcXDAtXFx4MUZcXHg3Rl0vLFxuICAgICAgcGVnJGM1NCA9IHBlZyRjbGFzc0V4cGVjdGF0aW9uKFtcIlxcXCJcIiwgXCJcXFxcXCIsIFtcIlxcMFwiLCBcIlxceDFGXCJdLCBcIlxceDdGXCJdLCB0cnVlLCBmYWxzZSksXG4gICAgICBwZWckYzU1ID0gXCJcXFxcXFxcIlwiLFxuICAgICAgcGVnJGM1NiA9IHBlZyRsaXRlcmFsRXhwZWN0YXRpb24oXCJcXFxcXFxcIlwiLCBmYWxzZSksXG4gICAgICBwZWckYzU3ID0gZnVuY3Rpb24oKSB7IHJldHVybiBgXCJgIH0sXG4gICAgICBwZWckYzU4ID0gXCJcXFxcXFxcXFwiLFxuICAgICAgcGVnJGM1OSA9IHBlZyRsaXRlcmFsRXhwZWN0YXRpb24oXCJcXFxcXFxcXFwiLCBmYWxzZSksXG4gICAgICBwZWckYzYwID0gZnVuY3Rpb24oKSB7IHJldHVybiBgXFxcXGAgfSxcbiAgICAgIHBlZyRjNjEgPSBcIlxcXFwvXCIsXG4gICAgICBwZWckYzYyID0gcGVnJGxpdGVyYWxFeHBlY3RhdGlvbihcIlxcXFwvXCIsIGZhbHNlKSxcbiAgICAgIHBlZyRjNjMgPSBmdW5jdGlvbigpIHsgcmV0dXJuIGAvYCAgfSxcbiAgICAgIHBlZyRjNjQgPSBcIlxcXFxiXCIsXG4gICAgICBwZWckYzY1ID0gcGVnJGxpdGVyYWxFeHBlY3RhdGlvbihcIlxcXFxiXCIsIGZhbHNlKSxcbiAgICAgIHBlZyRjNjYgPSBmdW5jdGlvbigpIHsgcmV0dXJuIGBcXGJgIH0sXG4gICAgICBwZWckYzY3ID0gXCJcXFxcZlwiLFxuICAgICAgcGVnJGM2OCA9IHBlZyRsaXRlcmFsRXhwZWN0YXRpb24oXCJcXFxcZlwiLCBmYWxzZSksXG4gICAgICBwZWckYzY5ID0gZnVuY3Rpb24oKSB7IHJldHVybiBgXFxmYCB9LFxuICAgICAgcGVnJGM3MCA9IFwiXFxcXG5cIixcbiAgICAgIHBlZyRjNzEgPSBwZWckbGl0ZXJhbEV4cGVjdGF0aW9uKFwiXFxcXG5cIiwgZmFsc2UpLFxuICAgICAgcGVnJGM3MiA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gYFxcbmAgfSxcbiAgICAgIHBlZyRjNzMgPSBcIlxcXFxyXCIsXG4gICAgICBwZWckYzc0ID0gcGVnJGxpdGVyYWxFeHBlY3RhdGlvbihcIlxcXFxyXCIsIGZhbHNlKSxcbiAgICAgIHBlZyRjNzUgPSBmdW5jdGlvbigpIHsgcmV0dXJuIGBcXHJgIH0sXG4gICAgICBwZWckYzc2ID0gXCJcXFxcdFwiLFxuICAgICAgcGVnJGM3NyA9IHBlZyRsaXRlcmFsRXhwZWN0YXRpb24oXCJcXFxcdFwiLCBmYWxzZSksXG4gICAgICBwZWckYzc4ID0gZnVuY3Rpb24oKSB7IHJldHVybiBgXFx0YCB9LFxuICAgICAgcGVnJGM3OSA9IFwiXFxcXHVcIixcbiAgICAgIHBlZyRjODAgPSBwZWckbGl0ZXJhbEV4cGVjdGF0aW9uKFwiXFxcXHVcIiwgZmFsc2UpLFxuICAgICAgcGVnJGM4MSA9IGZ1bmN0aW9uKGgxLCBoMiwgaDMsIGg0KSB7XG4gICAgICAgICAgICByZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShwYXJzZUludChgMHgke2gxfSR7aDJ9JHtoM30ke2g0fWApKTtcbiAgICAgICAgICB9LFxuICAgICAgcGVnJGM4MiA9IC9eWzAtOWEtZkEtRl0vLFxuICAgICAgcGVnJGM4MyA9IHBlZyRjbGFzc0V4cGVjdGF0aW9uKFtbXCIwXCIsIFwiOVwiXSwgW1wiYVwiLCBcImZcIl0sIFtcIkFcIiwgXCJGXCJdXSwgZmFsc2UsIGZhbHNlKSxcbiAgICAgIHBlZyRjODQgPSBwZWckb3RoZXJFeHBlY3RhdGlvbihcImJsYW5rIHNwYWNlXCIpLFxuICAgICAgcGVnJGM4NSA9IC9eWyBcXHRdLyxcbiAgICAgIHBlZyRjODYgPSBwZWckY2xhc3NFeHBlY3RhdGlvbihbXCIgXCIsIFwiXFx0XCJdLCBmYWxzZSwgZmFsc2UpLFxuICAgICAgcGVnJGM4NyA9IHBlZyRvdGhlckV4cGVjdGF0aW9uKFwid2hpdGUgc3BhY2VcIiksXG4gICAgICBwZWckYzg4ID0gL15bIFxcdFxcblxccl0vLFxuICAgICAgcGVnJGM4OSA9IHBlZyRjbGFzc0V4cGVjdGF0aW9uKFtcIiBcIiwgXCJcXHRcIiwgXCJcXG5cIiwgXCJcXHJcIl0sIGZhbHNlLCBmYWxzZSksXG4gICAgICBwZWckYzkwID0gXCJcXHJcXG5cIixcbiAgICAgIHBlZyRjOTEgPSBwZWckbGl0ZXJhbEV4cGVjdGF0aW9uKFwiXFxyXFxuXCIsIGZhbHNlKSxcbiAgICAgIHBlZyRjOTIgPSBcIlxcblwiLFxuICAgICAgcGVnJGM5MyA9IHBlZyRsaXRlcmFsRXhwZWN0YXRpb24oXCJcXG5cIiwgZmFsc2UpLFxuICAgICAgcGVnJGM5NCA9IFwiXFxyXCIsXG4gICAgICBwZWckYzk1ID0gcGVnJGxpdGVyYWxFeHBlY3RhdGlvbihcIlxcclwiLCBmYWxzZSksXG5cbiAgICAgIHBlZyRjdXJyUG9zICAgICAgICAgID0gMCxcbiAgICAgIHBlZyRzYXZlZFBvcyAgICAgICAgID0gMCxcbiAgICAgIHBlZyRwb3NEZXRhaWxzQ2FjaGUgID0gW3sgbGluZTogMSwgY29sdW1uOiAxIH1dLFxuICAgICAgcGVnJG1heEZhaWxQb3MgICAgICAgPSAwLFxuICAgICAgcGVnJG1heEZhaWxFeHBlY3RlZCAgPSBbXSxcbiAgICAgIHBlZyRzaWxlbnRGYWlscyAgICAgID0gMCxcblxuICAgICAgcGVnJHJlc3VsdDtcblxuICBpZiAoXCJzdGFydFJ1bGVcIiBpbiBvcHRpb25zKSB7XG4gICAgaWYgKCEob3B0aW9ucy5zdGFydFJ1bGUgaW4gcGVnJHN0YXJ0UnVsZUZ1bmN0aW9ucykpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkNhbid0IHN0YXJ0IHBhcnNpbmcgZnJvbSBydWxlIFxcXCJcIiArIG9wdGlvbnMuc3RhcnRSdWxlICsgXCJcXFwiLlwiKTtcbiAgICB9XG5cbiAgICBwZWckc3RhcnRSdWxlRnVuY3Rpb24gPSBwZWckc3RhcnRSdWxlRnVuY3Rpb25zW29wdGlvbnMuc3RhcnRSdWxlXTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHRleHQoKSB7XG4gICAgcmV0dXJuIGlucHV0LnN1YnN0cmluZyhwZWckc2F2ZWRQb3MsIHBlZyRjdXJyUG9zKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGxvY2F0aW9uKCkge1xuICAgIHJldHVybiBwZWckY29tcHV0ZUxvY2F0aW9uKHBlZyRzYXZlZFBvcywgcGVnJGN1cnJQb3MpO1xuICB9XG5cbiAgZnVuY3Rpb24gZXhwZWN0ZWQoZGVzY3JpcHRpb24sIGxvY2F0aW9uKSB7XG4gICAgbG9jYXRpb24gPSBsb2NhdGlvbiAhPT0gdm9pZCAwID8gbG9jYXRpb24gOiBwZWckY29tcHV0ZUxvY2F0aW9uKHBlZyRzYXZlZFBvcywgcGVnJGN1cnJQb3MpXG5cbiAgICB0aHJvdyBwZWckYnVpbGRTdHJ1Y3R1cmVkRXJyb3IoXG4gICAgICBbcGVnJG90aGVyRXhwZWN0YXRpb24oZGVzY3JpcHRpb24pXSxcbiAgICAgIGlucHV0LnN1YnN0cmluZyhwZWckc2F2ZWRQb3MsIHBlZyRjdXJyUG9zKSxcbiAgICAgIGxvY2F0aW9uXG4gICAgKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGVycm9yKG1lc3NhZ2UsIGxvY2F0aW9uKSB7XG4gICAgbG9jYXRpb24gPSBsb2NhdGlvbiAhPT0gdm9pZCAwID8gbG9jYXRpb24gOiBwZWckY29tcHV0ZUxvY2F0aW9uKHBlZyRzYXZlZFBvcywgcGVnJGN1cnJQb3MpXG5cbiAgICB0aHJvdyBwZWckYnVpbGRTaW1wbGVFcnJvcihtZXNzYWdlLCBsb2NhdGlvbik7XG4gIH1cblxuICBmdW5jdGlvbiBwZWckbGl0ZXJhbEV4cGVjdGF0aW9uKHRleHQsIGlnbm9yZUNhc2UpIHtcbiAgICByZXR1cm4geyB0eXBlOiBcImxpdGVyYWxcIiwgdGV4dDogdGV4dCwgaWdub3JlQ2FzZTogaWdub3JlQ2FzZSB9O1xuICB9XG5cbiAgZnVuY3Rpb24gcGVnJGNsYXNzRXhwZWN0YXRpb24ocGFydHMsIGludmVydGVkLCBpZ25vcmVDYXNlKSB7XG4gICAgcmV0dXJuIHsgdHlwZTogXCJjbGFzc1wiLCBwYXJ0czogcGFydHMsIGludmVydGVkOiBpbnZlcnRlZCwgaWdub3JlQ2FzZTogaWdub3JlQ2FzZSB9O1xuICB9XG5cbiAgZnVuY3Rpb24gcGVnJGFueUV4cGVjdGF0aW9uKCkge1xuICAgIHJldHVybiB7IHR5cGU6IFwiYW55XCIgfTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBlZyRlbmRFeHBlY3RhdGlvbigpIHtcbiAgICByZXR1cm4geyB0eXBlOiBcImVuZFwiIH07XG4gIH1cblxuICBmdW5jdGlvbiBwZWckb3RoZXJFeHBlY3RhdGlvbihkZXNjcmlwdGlvbikge1xuICAgIHJldHVybiB7IHR5cGU6IFwib3RoZXJcIiwgZGVzY3JpcHRpb246IGRlc2NyaXB0aW9uIH07XG4gIH1cblxuICBmdW5jdGlvbiBwZWckY29tcHV0ZVBvc0RldGFpbHMocG9zKSB7XG4gICAgdmFyIGRldGFpbHMgPSBwZWckcG9zRGV0YWlsc0NhY2hlW3Bvc10sIHA7XG5cbiAgICBpZiAoZGV0YWlscykge1xuICAgICAgcmV0dXJuIGRldGFpbHM7XG4gICAgfSBlbHNlIHtcbiAgICAgIHAgPSBwb3MgLSAxO1xuICAgICAgd2hpbGUgKCFwZWckcG9zRGV0YWlsc0NhY2hlW3BdKSB7XG4gICAgICAgIHAtLTtcbiAgICAgIH1cblxuICAgICAgZGV0YWlscyA9IHBlZyRwb3NEZXRhaWxzQ2FjaGVbcF07XG4gICAgICBkZXRhaWxzID0ge1xuICAgICAgICBsaW5lOiAgIGRldGFpbHMubGluZSxcbiAgICAgICAgY29sdW1uOiBkZXRhaWxzLmNvbHVtblxuICAgICAgfTtcblxuICAgICAgd2hpbGUgKHAgPCBwb3MpIHtcbiAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocCkgPT09IDEwKSB7XG4gICAgICAgICAgZGV0YWlscy5saW5lKys7XG4gICAgICAgICAgZGV0YWlscy5jb2x1bW4gPSAxO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGRldGFpbHMuY29sdW1uKys7XG4gICAgICAgIH1cblxuICAgICAgICBwKys7XG4gICAgICB9XG5cbiAgICAgIHBlZyRwb3NEZXRhaWxzQ2FjaGVbcG9zXSA9IGRldGFpbHM7XG4gICAgICByZXR1cm4gZGV0YWlscztcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBwZWckY29tcHV0ZUxvY2F0aW9uKHN0YXJ0UG9zLCBlbmRQb3MpIHtcbiAgICB2YXIgc3RhcnRQb3NEZXRhaWxzID0gcGVnJGNvbXB1dGVQb3NEZXRhaWxzKHN0YXJ0UG9zKSxcbiAgICAgICAgZW5kUG9zRGV0YWlscyAgID0gcGVnJGNvbXB1dGVQb3NEZXRhaWxzKGVuZFBvcyk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgc3RhcnQ6IHtcbiAgICAgICAgb2Zmc2V0OiBzdGFydFBvcyxcbiAgICAgICAgbGluZTogICBzdGFydFBvc0RldGFpbHMubGluZSxcbiAgICAgICAgY29sdW1uOiBzdGFydFBvc0RldGFpbHMuY29sdW1uXG4gICAgICB9LFxuICAgICAgZW5kOiB7XG4gICAgICAgIG9mZnNldDogZW5kUG9zLFxuICAgICAgICBsaW5lOiAgIGVuZFBvc0RldGFpbHMubGluZSxcbiAgICAgICAgY29sdW1uOiBlbmRQb3NEZXRhaWxzLmNvbHVtblxuICAgICAgfVxuICAgIH07XG4gIH1cblxuICBmdW5jdGlvbiBwZWckZmFpbChleHBlY3RlZCkge1xuICAgIGlmIChwZWckY3VyclBvcyA8IHBlZyRtYXhGYWlsUG9zKSB7IHJldHVybjsgfVxuXG4gICAgaWYgKHBlZyRjdXJyUG9zID4gcGVnJG1heEZhaWxQb3MpIHtcbiAgICAgIHBlZyRtYXhGYWlsUG9zID0gcGVnJGN1cnJQb3M7XG4gICAgICBwZWckbWF4RmFpbEV4cGVjdGVkID0gW107XG4gICAgfVxuXG4gICAgcGVnJG1heEZhaWxFeHBlY3RlZC5wdXNoKGV4cGVjdGVkKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBlZyRidWlsZFNpbXBsZUVycm9yKG1lc3NhZ2UsIGxvY2F0aW9uKSB7XG4gICAgcmV0dXJuIG5ldyBwZWckU3ludGF4RXJyb3IobWVzc2FnZSwgbnVsbCwgbnVsbCwgbG9jYXRpb24pO1xuICB9XG5cbiAgZnVuY3Rpb24gcGVnJGJ1aWxkU3RydWN0dXJlZEVycm9yKGV4cGVjdGVkLCBmb3VuZCwgbG9jYXRpb24pIHtcbiAgICByZXR1cm4gbmV3IHBlZyRTeW50YXhFcnJvcihcbiAgICAgIHBlZyRTeW50YXhFcnJvci5idWlsZE1lc3NhZ2UoZXhwZWN0ZWQsIGZvdW5kKSxcbiAgICAgIGV4cGVjdGVkLFxuICAgICAgZm91bmQsXG4gICAgICBsb2NhdGlvblxuICAgICk7XG4gIH1cblxuICBmdW5jdGlvbiBwZWckcGFyc2VTdGFydCgpIHtcbiAgICB2YXIgczA7XG5cbiAgICBzMCA9IHBlZyRwYXJzZVByb3BlcnR5U3RhdGVtZW50cygpO1xuXG4gICAgcmV0dXJuIHMwO1xuICB9XG5cbiAgZnVuY3Rpb24gcGVnJHBhcnNlSXRlbVN0YXRlbWVudHMoKSB7XG4gICAgdmFyIHMwLCBzMSwgczI7XG5cbiAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgIHMxID0gW107XG4gICAgczIgPSBwZWckcGFyc2VJdGVtU3RhdGVtZW50KCk7XG4gICAgd2hpbGUgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICBzMS5wdXNoKHMyKTtcbiAgICAgIHMyID0gcGVnJHBhcnNlSXRlbVN0YXRlbWVudCgpO1xuICAgIH1cbiAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgczEgPSBwZWckYzAoczEpO1xuICAgIH1cbiAgICBzMCA9IHMxO1xuXG4gICAgcmV0dXJuIHMwO1xuICB9XG5cbiAgZnVuY3Rpb24gcGVnJHBhcnNlSXRlbVN0YXRlbWVudCgpIHtcbiAgICB2YXIgczAsIHMxLCBzMiwgczMsIHM0O1xuXG4gICAgczAgPSBwZWckY3VyclBvcztcbiAgICBzMSA9IHBlZyRwYXJzZVNhbWVkZW50KCk7XG4gICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDQ1KSB7XG4gICAgICAgIHMyID0gcGVnJGMxO1xuICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgczIgPSBwZWckRkFJTEVEO1xuICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMik7IH1cbiAgICAgIH1cbiAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBzMyA9IHBlZyRwYXJzZUIoKTtcbiAgICAgICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgczQgPSBwZWckcGFyc2VFeHByZXNzaW9uKCk7XG4gICAgICAgICAgaWYgKHM0ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICAgIHMxID0gcGVnJGMzKHM0KTtcbiAgICAgICAgICAgIHMwID0gczE7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHMwO1xuICB9XG5cbiAgZnVuY3Rpb24gcGVnJHBhcnNlUHJvcGVydHlTdGF0ZW1lbnRzKCkge1xuICAgIHZhciBzMCwgczEsIHMyO1xuXG4gICAgczAgPSBwZWckY3VyclBvcztcbiAgICBzMSA9IFtdO1xuICAgIHMyID0gcGVnJHBhcnNlUHJvcGVydHlTdGF0ZW1lbnQoKTtcbiAgICB3aGlsZSAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHMxLnB1c2goczIpO1xuICAgICAgczIgPSBwZWckcGFyc2VQcm9wZXJ0eVN0YXRlbWVudCgpO1xuICAgIH1cbiAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgczEgPSBwZWckYzQoczEpO1xuICAgIH1cbiAgICBzMCA9IHMxO1xuXG4gICAgcmV0dXJuIHMwO1xuICB9XG5cbiAgZnVuY3Rpb24gcGVnJHBhcnNlUHJvcGVydHlTdGF0ZW1lbnQoKSB7XG4gICAgdmFyIHMwLCBzMSwgczIsIHMzLCBzNCwgczUsIHM2LCBzNywgczg7XG5cbiAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgIHMxID0gcGVnJHBhcnNlQigpO1xuICAgIGlmIChzMSA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgczEgPSBudWxsO1xuICAgIH1cbiAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHMyID0gcGVnJGN1cnJQb3M7XG4gICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDM1KSB7XG4gICAgICAgIHMzID0gcGVnJGM1O1xuICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgczMgPSBwZWckRkFJTEVEO1xuICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjNik7IH1cbiAgICAgIH1cbiAgICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBzNCA9IFtdO1xuICAgICAgICBzNSA9IHBlZyRjdXJyUG9zO1xuICAgICAgICBzNiA9IHBlZyRjdXJyUG9zO1xuICAgICAgICBwZWckc2lsZW50RmFpbHMrKztcbiAgICAgICAgczcgPSBwZWckcGFyc2VFT0woKTtcbiAgICAgICAgcGVnJHNpbGVudEZhaWxzLS07XG4gICAgICAgIGlmIChzNyA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgIHM2ID0gdm9pZCAwO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHBlZyRjdXJyUG9zID0gczY7XG4gICAgICAgICAgczYgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzNiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgIGlmIChpbnB1dC5sZW5ndGggPiBwZWckY3VyclBvcykge1xuICAgICAgICAgICAgczcgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgczcgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzcpOyB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChzNyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczYgPSBbczYsIHM3XTtcbiAgICAgICAgICAgIHM1ID0gczY7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczU7XG4gICAgICAgICAgICBzNSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHBlZyRjdXJyUG9zID0gczU7XG4gICAgICAgICAgczUgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzNSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgIHdoaWxlIChzNSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczQucHVzaChzNSk7XG4gICAgICAgICAgICBzNSA9IHBlZyRjdXJyUG9zO1xuICAgICAgICAgICAgczYgPSBwZWckY3VyclBvcztcbiAgICAgICAgICAgIHBlZyRzaWxlbnRGYWlscysrO1xuICAgICAgICAgICAgczcgPSBwZWckcGFyc2VFT0woKTtcbiAgICAgICAgICAgIHBlZyRzaWxlbnRGYWlscy0tO1xuICAgICAgICAgICAgaWYgKHM3ID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgIHM2ID0gdm9pZCAwO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzNjtcbiAgICAgICAgICAgICAgczYgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHM2ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgIGlmIChpbnB1dC5sZW5ndGggPiBwZWckY3VyclBvcykge1xuICAgICAgICAgICAgICAgIHM3ID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHM3ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjNyk7IH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAoczcgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBzNiA9IFtzNiwgczddO1xuICAgICAgICAgICAgICAgIHM1ID0gczY7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzNTtcbiAgICAgICAgICAgICAgICBzNSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczU7XG4gICAgICAgICAgICAgIHM1ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgczQgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzNCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgIHMzID0gW3MzLCBzNF07XG4gICAgICAgICAgczIgPSBzMztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwZWckY3VyclBvcyA9IHMyO1xuICAgICAgICAgIHMyID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGVnJGN1cnJQb3MgPSBzMjtcbiAgICAgICAgczIgPSBwZWckRkFJTEVEO1xuICAgICAgfVxuICAgICAgaWYgKHMyID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHMyID0gbnVsbDtcbiAgICAgIH1cbiAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBzMyA9IFtdO1xuICAgICAgICBzNCA9IHBlZyRwYXJzZUVPTF9BTlkoKTtcbiAgICAgICAgaWYgKHM0ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgd2hpbGUgKHM0ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMy5wdXNoKHM0KTtcbiAgICAgICAgICAgIHM0ID0gcGVnJHBhcnNlRU9MX0FOWSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzMyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgICAgczEgPSBwZWckYzgoKTtcbiAgICAgICAgICBzMCA9IHMxO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgfVxuICAgIGlmIChzMCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgczAgPSBwZWckY3VyclBvcztcbiAgICAgIHMxID0gcGVnJHBhcnNlU2FtZWRlbnQoKTtcbiAgICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBzMiA9IHBlZyRwYXJzZU5hbWUoKTtcbiAgICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgczMgPSBwZWckcGFyc2VCKCk7XG4gICAgICAgICAgaWYgKHMzID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMyA9IG51bGw7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSA1OCkge1xuICAgICAgICAgICAgICBzNCA9IHBlZyRjOTtcbiAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHM0ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzEwKTsgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHM0ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgIHM1ID0gcGVnJHBhcnNlQigpO1xuICAgICAgICAgICAgICBpZiAoczUgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBzNSA9IG51bGw7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKHM1ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgczYgPSBwZWckcGFyc2VFeHByZXNzaW9uKCk7XG4gICAgICAgICAgICAgICAgaWYgKHM2ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgIHMxID0gcGVnJGMxMShzMiwgczYpO1xuICAgICAgICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgIH1cbiAgICAgIGlmIChzMCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgICAgICBzMSA9IHBlZyRwYXJzZVNhbWVkZW50KCk7XG4gICAgICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgIHMyID0gcGVnJHBhcnNlTGVnYWN5TmFtZSgpO1xuICAgICAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczMgPSBwZWckcGFyc2VCKCk7XG4gICAgICAgICAgICBpZiAoczMgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgczMgPSBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gNTgpIHtcbiAgICAgICAgICAgICAgICBzNCA9IHBlZyRjOTtcbiAgICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHM0ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMTApOyB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKHM0ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgczUgPSBwZWckcGFyc2VCKCk7XG4gICAgICAgICAgICAgICAgaWYgKHM1ID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICBzNSA9IG51bGw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChzNSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgczYgPSBwZWckcGFyc2VFeHByZXNzaW9uKCk7XG4gICAgICAgICAgICAgICAgICBpZiAoczYgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgIHMxID0gcGVnJGMxMShzMiwgczYpO1xuICAgICAgICAgICAgICAgICAgICBzMCA9IHMxO1xuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoczAgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgICAgICAgIHMxID0gcGVnJHBhcnNlU2FtZWRlbnQoKTtcbiAgICAgICAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMyID0gcGVnJHBhcnNlTGVnYWN5TmFtZSgpO1xuICAgICAgICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgIHMzID0gcGVnJHBhcnNlQigpO1xuICAgICAgICAgICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBzNCA9IHBlZyRwYXJzZUxlZ2FjeUxpdGVyYWwoKTtcbiAgICAgICAgICAgICAgICBpZiAoczQgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgIHM1ID0gW107XG4gICAgICAgICAgICAgICAgICBzNiA9IHBlZyRwYXJzZUVPTF9BTlkoKTtcbiAgICAgICAgICAgICAgICAgIGlmIChzNiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICB3aGlsZSAoczYgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICBzNS5wdXNoKHM2KTtcbiAgICAgICAgICAgICAgICAgICAgICBzNiA9IHBlZyRwYXJzZUVPTF9BTlkoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgczUgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgaWYgKHM1ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICBzMSA9IHBlZyRjMTEoczIsIHM0KTtcbiAgICAgICAgICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgICAgICAgICAgczEgPSBwZWckcGFyc2VTYW1lZGVudCgpO1xuICAgICAgICAgICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgIHMyID0gcGVnJHBhcnNlTGVnYWN5TmFtZSgpO1xuICAgICAgICAgICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBzMyA9IFtdO1xuICAgICAgICAgICAgICAgIHM0ID0gcGVnJGN1cnJQb3M7XG4gICAgICAgICAgICAgICAgczUgPSBwZWckcGFyc2VCKCk7XG4gICAgICAgICAgICAgICAgaWYgKHM1ID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICBzNSA9IG51bGw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChzNSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSA0NCkge1xuICAgICAgICAgICAgICAgICAgICBzNiA9IHBlZyRjMTI7XG4gICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzNiA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMxMyk7IH1cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIGlmIChzNiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICBzNyA9IHBlZyRwYXJzZUIoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHM3ID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgczcgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChzNyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgIHM4ID0gcGVnJHBhcnNlTGVnYWN5TmFtZSgpO1xuICAgICAgICAgICAgICAgICAgICAgIGlmIChzOCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gczQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBzNSA9IHBlZyRjMTQoczIsIHM4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHM0ID0gczU7XG4gICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBzNCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczQ7XG4gICAgICAgICAgICAgICAgICAgICAgczQgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHM0O1xuICAgICAgICAgICAgICAgICAgICBzNCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczQ7XG4gICAgICAgICAgICAgICAgICBzNCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChzNCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgd2hpbGUgKHM0ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgIHMzLnB1c2goczQpO1xuICAgICAgICAgICAgICAgICAgICBzNCA9IHBlZyRjdXJyUG9zO1xuICAgICAgICAgICAgICAgICAgICBzNSA9IHBlZyRwYXJzZUIoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHM1ID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgczUgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChzNSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gNDQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHM2ID0gcGVnJGMxMjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHM2ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMxMyk7IH1cbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKHM2ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzNyA9IHBlZyRwYXJzZUIoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzNyA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzNyA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoczcgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgczggPSBwZWckcGFyc2VMZWdhY3lOYW1lKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzOCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHM0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM1ID0gcGVnJGMxNChzMiwgczgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM0ID0gczU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzNCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHM0ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzNDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHM0ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzNDtcbiAgICAgICAgICAgICAgICAgICAgICBzNCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgczMgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgIHM0ID0gcGVnJHBhcnNlQigpO1xuICAgICAgICAgICAgICAgICAgaWYgKHM0ID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgIHM0ID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIGlmIChzNCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDU4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgczUgPSBwZWckYzk7XG4gICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICBzNSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzEwKTsgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChzNSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgIHM2ID0gcGVnJHBhcnNlQigpO1xuICAgICAgICAgICAgICAgICAgICAgIGlmIChzNiA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgczYgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICBpZiAoczYgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHM3ID0gcGVnJHBhcnNlRXhwcmVzc2lvbigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHM3ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzMSA9IHBlZyRjMTUoczIsIHMzLCBzNyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gczE7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHMwO1xuICB9XG5cbiAgZnVuY3Rpb24gcGVnJHBhcnNlRXhwcmVzc2lvbigpIHtcbiAgICB2YXIgczAsIHMxLCBzMiwgczMsIHM0LCBzNSwgczY7XG5cbiAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgIHMxID0gcGVnJGN1cnJQb3M7XG4gICAgcGVnJHNpbGVudEZhaWxzKys7XG4gICAgczIgPSBwZWckY3VyclBvcztcbiAgICBzMyA9IHBlZyRwYXJzZUVPTCgpO1xuICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgczQgPSBwZWckcGFyc2VFeHRyYWRlbnQoKTtcbiAgICAgIGlmIChzNCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDQ1KSB7XG4gICAgICAgICAgczUgPSBwZWckYzE7XG4gICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzNSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzIpOyB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHM1ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgczYgPSBwZWckcGFyc2VCKCk7XG4gICAgICAgICAgaWYgKHM2ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMyA9IFtzMywgczQsIHM1LCBzNl07XG4gICAgICAgICAgICBzMiA9IHMzO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwZWckY3VyclBvcyA9IHMyO1xuICAgICAgICAgICAgczIgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwZWckY3VyclBvcyA9IHMyO1xuICAgICAgICAgIHMyID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGVnJGN1cnJQb3MgPSBzMjtcbiAgICAgICAgczIgPSBwZWckRkFJTEVEO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBwZWckY3VyclBvcyA9IHMyO1xuICAgICAgczIgPSBwZWckRkFJTEVEO1xuICAgIH1cbiAgICBwZWckc2lsZW50RmFpbHMtLTtcbiAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHBlZyRjdXJyUG9zID0gczE7XG4gICAgICBzMSA9IHZvaWQgMDtcbiAgICB9IGVsc2Uge1xuICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgIH1cbiAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHMyID0gcGVnJHBhcnNlRU9MX0FOWSgpO1xuICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHMzID0gcGVnJHBhcnNlSW5kZW50KCk7XG4gICAgICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgIHM0ID0gcGVnJHBhcnNlSXRlbVN0YXRlbWVudHMoKTtcbiAgICAgICAgICBpZiAoczQgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHM1ID0gcGVnJHBhcnNlRGVkZW50KCk7XG4gICAgICAgICAgICBpZiAoczUgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgICAgICAgIHMxID0gcGVnJGMxNihzNCk7XG4gICAgICAgICAgICAgIHMwID0gczE7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgfVxuICAgIGlmIChzMCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgczAgPSBwZWckY3VyclBvcztcbiAgICAgIHMxID0gcGVnJHBhcnNlRU9MKCk7XG4gICAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgczIgPSBwZWckcGFyc2VJbmRlbnQoKTtcbiAgICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgczMgPSBwZWckcGFyc2VQcm9wZXJ0eVN0YXRlbWVudHMoKTtcbiAgICAgICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHM0ID0gcGVnJHBhcnNlRGVkZW50KCk7XG4gICAgICAgICAgICBpZiAoczQgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgICAgICAgIHMxID0gcGVnJGMxNihzMyk7XG4gICAgICAgICAgICAgIHMwID0gczE7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICB9XG4gICAgICBpZiAoczAgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgczAgPSBwZWckY3VyclBvcztcbiAgICAgICAgczEgPSBwZWckcGFyc2VMaXRlcmFsKCk7XG4gICAgICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgIHMyID0gW107XG4gICAgICAgICAgczMgPSBwZWckcGFyc2VFT0xfQU5ZKCk7XG4gICAgICAgICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICB3aGlsZSAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgczIucHVzaChzMyk7XG4gICAgICAgICAgICAgIHMzID0gcGVnJHBhcnNlRU9MX0FOWSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzMiA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgICAgICBzMSA9IHBlZyRjMTcoczEpO1xuICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gczA7XG4gIH1cblxuICBmdW5jdGlvbiBwZWckcGFyc2VTYW1lZGVudCgpIHtcbiAgICB2YXIgczAsIHMxLCBzMjtcblxuICAgIHBlZyRzaWxlbnRGYWlscysrO1xuICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgczEgPSBbXTtcbiAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDMyKSB7XG4gICAgICBzMiA9IHBlZyRjMTk7XG4gICAgICBwZWckY3VyclBvcysrO1xuICAgIH0gZWxzZSB7XG4gICAgICBzMiA9IHBlZyRGQUlMRUQ7XG4gICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMjApOyB9XG4gICAgfVxuICAgIHdoaWxlIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgczEucHVzaChzMik7XG4gICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDMyKSB7XG4gICAgICAgIHMyID0gcGVnJGMxOTtcbiAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHMyID0gcGVnJEZBSUxFRDtcbiAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzIwKTsgfVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHBlZyRzYXZlZFBvcyA9IHBlZyRjdXJyUG9zO1xuICAgICAgczIgPSBwZWckYzIxKHMxKTtcbiAgICAgIGlmIChzMikge1xuICAgICAgICBzMiA9IHZvaWQgMDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHMyID0gcGVnJEZBSUxFRDtcbiAgICAgIH1cbiAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBzMSA9IFtzMSwgczJdO1xuICAgICAgICBzMCA9IHMxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgIH1cbiAgICBwZWckc2lsZW50RmFpbHMtLTtcbiAgICBpZiAoczAgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMxOCk7IH1cbiAgICB9XG5cbiAgICByZXR1cm4gczA7XG4gIH1cblxuICBmdW5jdGlvbiBwZWckcGFyc2VFeHRyYWRlbnQoKSB7XG4gICAgdmFyIHMwLCBzMSwgczI7XG5cbiAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgIHMxID0gW107XG4gICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSAzMikge1xuICAgICAgczIgPSBwZWckYzE5O1xuICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICB9IGVsc2Uge1xuICAgICAgczIgPSBwZWckRkFJTEVEO1xuICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzIwKTsgfVxuICAgIH1cbiAgICB3aGlsZSAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHMxLnB1c2goczIpO1xuICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSAzMikge1xuICAgICAgICBzMiA9IHBlZyRjMTk7XG4gICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzMiA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMyMCk7IH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICBwZWckc2F2ZWRQb3MgPSBwZWckY3VyclBvcztcbiAgICAgIHMyID0gcGVnJGMyMihzMSk7XG4gICAgICBpZiAoczIpIHtcbiAgICAgICAgczIgPSB2b2lkIDA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzMiA9IHBlZyRGQUlMRUQ7XG4gICAgICB9XG4gICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgczEgPSBbczEsIHMyXTtcbiAgICAgICAgczAgPSBzMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICB9XG5cbiAgICByZXR1cm4gczA7XG4gIH1cblxuICBmdW5jdGlvbiBwZWckcGFyc2VJbmRlbnQoKSB7XG4gICAgdmFyIHMwO1xuXG4gICAgcGVnJHNhdmVkUG9zID0gcGVnJGN1cnJQb3M7XG4gICAgczAgPSBwZWckYzIzKCk7XG4gICAgaWYgKHMwKSB7XG4gICAgICBzMCA9IHZvaWQgMDtcbiAgICB9IGVsc2Uge1xuICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgIH1cblxuICAgIHJldHVybiBzMDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBlZyRwYXJzZURlZGVudCgpIHtcbiAgICB2YXIgczA7XG5cbiAgICBwZWckc2F2ZWRQb3MgPSBwZWckY3VyclBvcztcbiAgICBzMCA9IHBlZyRjMjQoKTtcbiAgICBpZiAoczApIHtcbiAgICAgIHMwID0gdm9pZCAwO1xuICAgIH0gZWxzZSB7XG4gICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHMwO1xuICB9XG5cbiAgZnVuY3Rpb24gcGVnJHBhcnNlTmFtZSgpIHtcbiAgICB2YXIgczA7XG5cbiAgICBzMCA9IHBlZyRwYXJzZXN0cmluZygpO1xuICAgIGlmIChzMCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgczAgPSBwZWckcGFyc2Vwc2V1ZG9zdHJpbmcoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gczA7XG4gIH1cblxuICBmdW5jdGlvbiBwZWckcGFyc2VMZWdhY3lOYW1lKCkge1xuICAgIHZhciBzMCwgczEsIHMyO1xuXG4gICAgczAgPSBwZWckcGFyc2VzdHJpbmcoKTtcbiAgICBpZiAoczAgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgICBzMSA9IFtdO1xuICAgICAgczIgPSBwZWckcGFyc2Vwc2V1ZG9zdHJpbmdMZWdhY3koKTtcbiAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICB3aGlsZSAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBzMS5wdXNoKHMyKTtcbiAgICAgICAgICBzMiA9IHBlZyRwYXJzZXBzZXVkb3N0cmluZ0xlZ2FjeSgpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICB9XG4gICAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgIHMxID0gcGVnJGMyNSgpO1xuICAgICAgfVxuICAgICAgczAgPSBzMTtcbiAgICB9XG5cbiAgICByZXR1cm4gczA7XG4gIH1cblxuICBmdW5jdGlvbiBwZWckcGFyc2VMaXRlcmFsKCkge1xuICAgIHZhciBzMDtcblxuICAgIHMwID0gcGVnJHBhcnNlbnVsbCgpO1xuICAgIGlmIChzMCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgczAgPSBwZWckcGFyc2Vib29sZWFuKCk7XG4gICAgICBpZiAoczAgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgczAgPSBwZWckcGFyc2VzdHJpbmcoKTtcbiAgICAgICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgczAgPSBwZWckcGFyc2Vwc2V1ZG9zdHJpbmcoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBzMDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBlZyRwYXJzZUxlZ2FjeUxpdGVyYWwoKSB7XG4gICAgdmFyIHMwO1xuXG4gICAgczAgPSBwZWckcGFyc2VudWxsKCk7XG4gICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICBzMCA9IHBlZyRwYXJzZXN0cmluZygpO1xuICAgICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHMwID0gcGVnJHBhcnNlcHNldWRvc3RyaW5nTGVnYWN5KCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHMwO1xuICB9XG5cbiAgZnVuY3Rpb24gcGVnJHBhcnNlcHNldWRvc3RyaW5nKCkge1xuICAgIHZhciBzMCwgczEsIHMyLCBzMywgczQsIHM1O1xuXG4gICAgcGVnJHNpbGVudEZhaWxzKys7XG4gICAgczAgPSBwZWckY3VyclBvcztcbiAgICBpZiAocGVnJGMyNy50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICBzMSA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICBwZWckY3VyclBvcysrO1xuICAgIH0gZWxzZSB7XG4gICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMjgpOyB9XG4gICAgfVxuICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgczIgPSBbXTtcbiAgICAgIHMzID0gcGVnJGN1cnJQb3M7XG4gICAgICBzNCA9IHBlZyRwYXJzZUIoKTtcbiAgICAgIGlmIChzNCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBzNCA9IG51bGw7XG4gICAgICB9XG4gICAgICBpZiAoczQgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgaWYgKHBlZyRjMjkudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgICAgIHM1ID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHM1ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMzApOyB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHM1ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgczQgPSBbczQsIHM1XTtcbiAgICAgICAgICBzMyA9IHM0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHBlZyRjdXJyUG9zID0gczM7XG4gICAgICAgICAgczMgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwZWckY3VyclBvcyA9IHMzO1xuICAgICAgICBzMyA9IHBlZyRGQUlMRUQ7XG4gICAgICB9XG4gICAgICB3aGlsZSAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgczIucHVzaChzMyk7XG4gICAgICAgIHMzID0gcGVnJGN1cnJQb3M7XG4gICAgICAgIHM0ID0gcGVnJHBhcnNlQigpO1xuICAgICAgICBpZiAoczQgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBzNCA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHM0ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgaWYgKHBlZyRjMjkudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgICAgICAgczUgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgczUgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzMwKTsgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoczUgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHM0ID0gW3M0LCBzNV07XG4gICAgICAgICAgICBzMyA9IHM0O1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwZWckY3VyclBvcyA9IHMzO1xuICAgICAgICAgICAgczMgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwZWckY3VyclBvcyA9IHMzO1xuICAgICAgICAgIHMzID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICBzMSA9IHBlZyRjMzEoKTtcbiAgICAgICAgczAgPSBzMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICB9XG4gICAgcGVnJHNpbGVudEZhaWxzLS07XG4gICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMjYpOyB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHMwO1xuICB9XG5cbiAgZnVuY3Rpb24gcGVnJHBhcnNlcHNldWRvc3RyaW5nTGVnYWN5KCkge1xuICAgIHZhciBzMCwgczEsIHMyLCBzMywgczQ7XG5cbiAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgIGlmIChpbnB1dC5zdWJzdHIocGVnJGN1cnJQb3MsIDIpID09PSBwZWckYzMyKSB7XG4gICAgICBzMSA9IHBlZyRjMzI7XG4gICAgICBwZWckY3VyclBvcyArPSAyO1xuICAgIH0gZWxzZSB7XG4gICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMzMpOyB9XG4gICAgfVxuICAgIGlmIChzMSA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgczEgPSBudWxsO1xuICAgIH1cbiAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIGlmIChwZWckYzM0LnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgczIgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgczIgPSBwZWckRkFJTEVEO1xuICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMzUpOyB9XG4gICAgICB9XG4gICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgczMgPSBbXTtcbiAgICAgICAgaWYgKHBlZyRjMzYudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgICAgIHM0ID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHM0ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMzcpOyB9XG4gICAgICAgIH1cbiAgICAgICAgd2hpbGUgKHM0ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgczMucHVzaChzNCk7XG4gICAgICAgICAgaWYgKHBlZyRjMzYudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgICAgICAgczQgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgczQgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzM3KTsgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICBzMSA9IHBlZyRjMzEoKTtcbiAgICAgICAgICBzMCA9IHMxO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHMwO1xuICB9XG5cbiAgZnVuY3Rpb24gcGVnJHBhcnNlbnVsbCgpIHtcbiAgICB2YXIgczAsIHMxO1xuXG4gICAgczAgPSBwZWckY3VyclBvcztcbiAgICBpZiAoaW5wdXQuc3Vic3RyKHBlZyRjdXJyUG9zLCA0KSA9PT0gcGVnJGMzOCkge1xuICAgICAgczEgPSBwZWckYzM4O1xuICAgICAgcGVnJGN1cnJQb3MgKz0gNDtcbiAgICB9IGVsc2Uge1xuICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzM5KTsgfVxuICAgIH1cbiAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgczEgPSBwZWckYzQwKCk7XG4gICAgfVxuICAgIHMwID0gczE7XG5cbiAgICByZXR1cm4gczA7XG4gIH1cblxuICBmdW5jdGlvbiBwZWckcGFyc2Vib29sZWFuKCkge1xuICAgIHZhciBzMCwgczE7XG5cbiAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgIGlmIChpbnB1dC5zdWJzdHIocGVnJGN1cnJQb3MsIDQpID09PSBwZWckYzQxKSB7XG4gICAgICBzMSA9IHBlZyRjNDE7XG4gICAgICBwZWckY3VyclBvcyArPSA0O1xuICAgIH0gZWxzZSB7XG4gICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjNDIpOyB9XG4gICAgfVxuICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICBzMSA9IHBlZyRjNDMoKTtcbiAgICB9XG4gICAgczAgPSBzMTtcbiAgICBpZiAoczAgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgICBpZiAoaW5wdXQuc3Vic3RyKHBlZyRjdXJyUG9zLCA1KSA9PT0gcGVnJGM0NCkge1xuICAgICAgICBzMSA9IHBlZyRjNDQ7XG4gICAgICAgIHBlZyRjdXJyUG9zICs9IDU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGM0NSk7IH1cbiAgICAgIH1cbiAgICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgczEgPSBwZWckYzQ2KCk7XG4gICAgICB9XG4gICAgICBzMCA9IHMxO1xuICAgIH1cblxuICAgIHJldHVybiBzMDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBlZyRwYXJzZXN0cmluZygpIHtcbiAgICB2YXIgczAsIHMxLCBzMiwgczM7XG5cbiAgICBwZWckc2lsZW50RmFpbHMrKztcbiAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gMzQpIHtcbiAgICAgIHMxID0gcGVnJGM0ODtcbiAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgfSBlbHNlIHtcbiAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGM0OSk7IH1cbiAgICB9XG4gICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDM0KSB7XG4gICAgICAgIHMyID0gcGVnJGM0ODtcbiAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHMyID0gcGVnJEZBSUxFRDtcbiAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzQ5KTsgfVxuICAgICAgfVxuICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICBzMSA9IHBlZyRjNTAoKTtcbiAgICAgICAgczAgPSBzMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICB9XG4gICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSAzNCkge1xuICAgICAgICBzMSA9IHBlZyRjNDg7XG4gICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGM0OSk7IH1cbiAgICAgIH1cbiAgICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBzMiA9IHBlZyRwYXJzZWNoYXJzKCk7XG4gICAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gMzQpIHtcbiAgICAgICAgICAgIHMzID0gcGVnJGM0ODtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHMzID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGM0OSk7IH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICAgIHMxID0gcGVnJGM1MShzMik7XG4gICAgICAgICAgICBzMCA9IHMxO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgfVxuICAgIH1cbiAgICBwZWckc2lsZW50RmFpbHMtLTtcbiAgICBpZiAoczAgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGM0Nyk7IH1cbiAgICB9XG5cbiAgICByZXR1cm4gczA7XG4gIH1cblxuICBmdW5jdGlvbiBwZWckcGFyc2VjaGFycygpIHtcbiAgICB2YXIgczAsIHMxLCBzMjtcblxuICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgczEgPSBbXTtcbiAgICBzMiA9IHBlZyRwYXJzZWNoYXIoKTtcbiAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHdoaWxlIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBzMS5wdXNoKHMyKTtcbiAgICAgICAgczIgPSBwZWckcGFyc2VjaGFyKCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICB9XG4gICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgIHMxID0gcGVnJGM1MihzMSk7XG4gICAgfVxuICAgIHMwID0gczE7XG5cbiAgICByZXR1cm4gczA7XG4gIH1cblxuICBmdW5jdGlvbiBwZWckcGFyc2VjaGFyKCkge1xuICAgIHZhciBzMCwgczEsIHMyLCBzMywgczQsIHM1O1xuXG4gICAgaWYgKHBlZyRjNTMudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgczAgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICB9IGVsc2Uge1xuICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzU0KTsgfVxuICAgIH1cbiAgICBpZiAoczAgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgICBpZiAoaW5wdXQuc3Vic3RyKHBlZyRjdXJyUG9zLCAyKSA9PT0gcGVnJGM1NSkge1xuICAgICAgICBzMSA9IHBlZyRjNTU7XG4gICAgICAgIHBlZyRjdXJyUG9zICs9IDI7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGM1Nik7IH1cbiAgICAgIH1cbiAgICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgczEgPSBwZWckYzU3KCk7XG4gICAgICB9XG4gICAgICBzMCA9IHMxO1xuICAgICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgICAgIGlmIChpbnB1dC5zdWJzdHIocGVnJGN1cnJQb3MsIDIpID09PSBwZWckYzU4KSB7XG4gICAgICAgICAgczEgPSBwZWckYzU4O1xuICAgICAgICAgIHBlZyRjdXJyUG9zICs9IDI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGM1OSk7IH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICBzMSA9IHBlZyRjNjAoKTtcbiAgICAgICAgfVxuICAgICAgICBzMCA9IHMxO1xuICAgICAgICBpZiAoczAgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgICAgICAgIGlmIChpbnB1dC5zdWJzdHIocGVnJGN1cnJQb3MsIDIpID09PSBwZWckYzYxKSB7XG4gICAgICAgICAgICBzMSA9IHBlZyRjNjE7XG4gICAgICAgICAgICBwZWckY3VyclBvcyArPSAyO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjNjIpOyB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgICAgICBzMSA9IHBlZyRjNjMoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgICBpZiAoczAgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgICAgICAgICBpZiAoaW5wdXQuc3Vic3RyKHBlZyRjdXJyUG9zLCAyKSA9PT0gcGVnJGM2NCkge1xuICAgICAgICAgICAgICBzMSA9IHBlZyRjNjQ7XG4gICAgICAgICAgICAgIHBlZyRjdXJyUG9zICs9IDI7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGM2NSk7IH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICAgICAgczEgPSBwZWckYzY2KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzMCA9IHMxO1xuICAgICAgICAgICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgICAgICAgICAgIGlmIChpbnB1dC5zdWJzdHIocGVnJGN1cnJQb3MsIDIpID09PSBwZWckYzY3KSB7XG4gICAgICAgICAgICAgICAgczEgPSBwZWckYzY3O1xuICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zICs9IDI7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGM2OCk7IH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICBzMSA9IHBlZyRjNjkoKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBzMCA9IHMxO1xuICAgICAgICAgICAgICBpZiAoczAgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgICAgICAgICAgICAgIGlmIChpbnB1dC5zdWJzdHIocGVnJGN1cnJQb3MsIDIpID09PSBwZWckYzcwKSB7XG4gICAgICAgICAgICAgICAgICBzMSA9IHBlZyRjNzA7XG4gICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyArPSAyO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjNzEpOyB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICBzMSA9IHBlZyRjNzIoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgICAgICAgICBpZiAoczAgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgICAgICAgICAgICAgICBpZiAoaW5wdXQuc3Vic3RyKHBlZyRjdXJyUG9zLCAyKSA9PT0gcGVnJGM3Mykge1xuICAgICAgICAgICAgICAgICAgICBzMSA9IHBlZyRjNzM7XG4gICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zICs9IDI7XG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGM3NCk7IH1cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgczEgPSBwZWckYzc1KCk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBzMCA9IHMxO1xuICAgICAgICAgICAgICAgICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dC5zdWJzdHIocGVnJGN1cnJQb3MsIDIpID09PSBwZWckYzc2KSB7XG4gICAgICAgICAgICAgICAgICAgICAgczEgPSBwZWckYzc2O1xuICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zICs9IDI7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGM3Nyk7IH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICBzMSA9IHBlZyRjNzgoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBzMCA9IHMxO1xuICAgICAgICAgICAgICAgICAgICBpZiAoczAgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dC5zdWJzdHIocGVnJGN1cnJQb3MsIDIpID09PSBwZWckYzc5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzMSA9IHBlZyRjNzk7XG4gICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyArPSAyO1xuICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjODApOyB9XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgczIgPSBwZWckcGFyc2VoZXhEaWdpdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHMzID0gcGVnJHBhcnNlaGV4RGlnaXQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgczQgPSBwZWckcGFyc2VoZXhEaWdpdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzNCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczUgPSBwZWckcGFyc2VoZXhEaWdpdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHM1ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMSA9IHBlZyRjODEoczIsIHMzLCBzNCwgczUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHMxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBzMDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBlZyRwYXJzZWhleERpZ2l0KCkge1xuICAgIHZhciBzMDtcblxuICAgIGlmIChwZWckYzgyLnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgIHMwID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgfSBlbHNlIHtcbiAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGM4Myk7IH1cbiAgICB9XG5cbiAgICByZXR1cm4gczA7XG4gIH1cblxuICBmdW5jdGlvbiBwZWckcGFyc2VCKCkge1xuICAgIHZhciBzMCwgczE7XG5cbiAgICBwZWckc2lsZW50RmFpbHMrKztcbiAgICBzMCA9IFtdO1xuICAgIGlmIChwZWckYzg1LnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgIHMxID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgfSBlbHNlIHtcbiAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGM4Nik7IH1cbiAgICB9XG4gICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICB3aGlsZSAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgczAucHVzaChzMSk7XG4gICAgICAgIGlmIChwZWckYzg1LnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgICBzMSA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzg2KTsgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICB9XG4gICAgcGVnJHNpbGVudEZhaWxzLS07XG4gICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjODQpOyB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHMwO1xuICB9XG5cbiAgZnVuY3Rpb24gcGVnJHBhcnNlUygpIHtcbiAgICB2YXIgczAsIHMxO1xuXG4gICAgcGVnJHNpbGVudEZhaWxzKys7XG4gICAgczAgPSBbXTtcbiAgICBpZiAocGVnJGM4OC50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICBzMSA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICBwZWckY3VyclBvcysrO1xuICAgIH0gZWxzZSB7XG4gICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjODkpOyB9XG4gICAgfVxuICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgd2hpbGUgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHMwLnB1c2goczEpO1xuICAgICAgICBpZiAocGVnJGM4OC50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgICAgczEgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGM4OSk7IH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgfVxuICAgIHBlZyRzaWxlbnRGYWlscy0tO1xuICAgIGlmIChzMCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzg3KTsgfVxuICAgIH1cblxuICAgIHJldHVybiBzMDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBlZyRwYXJzZUVPTF9BTlkoKSB7XG4gICAgdmFyIHMwLCBzMSwgczIsIHMzLCBzNCwgczU7XG5cbiAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgIHMxID0gcGVnJHBhcnNlRU9MKCk7XG4gICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICBzMiA9IFtdO1xuICAgICAgczMgPSBwZWckY3VyclBvcztcbiAgICAgIHM0ID0gcGVnJHBhcnNlQigpO1xuICAgICAgaWYgKHM0ID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHM0ID0gbnVsbDtcbiAgICAgIH1cbiAgICAgIGlmIChzNCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBzNSA9IHBlZyRwYXJzZUVPTCgpO1xuICAgICAgICBpZiAoczUgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBzNCA9IFtzNCwgczVdO1xuICAgICAgICAgIHMzID0gczQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMztcbiAgICAgICAgICBzMyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBlZyRjdXJyUG9zID0gczM7XG4gICAgICAgIHMzID0gcGVnJEZBSUxFRDtcbiAgICAgIH1cbiAgICAgIHdoaWxlIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBzMi5wdXNoKHMzKTtcbiAgICAgICAgczMgPSBwZWckY3VyclBvcztcbiAgICAgICAgczQgPSBwZWckcGFyc2VCKCk7XG4gICAgICAgIGlmIChzNCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgIHM0ID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoczQgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBzNSA9IHBlZyRwYXJzZUVPTCgpO1xuICAgICAgICAgIGlmIChzNSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczQgPSBbczQsIHM1XTtcbiAgICAgICAgICAgIHMzID0gczQ7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczM7XG4gICAgICAgICAgICBzMyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHBlZyRjdXJyUG9zID0gczM7XG4gICAgICAgICAgczMgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgczEgPSBbczEsIHMyXTtcbiAgICAgICAgczAgPSBzMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICB9XG5cbiAgICByZXR1cm4gczA7XG4gIH1cblxuICBmdW5jdGlvbiBwZWckcGFyc2VFT0woKSB7XG4gICAgdmFyIHMwO1xuXG4gICAgaWYgKGlucHV0LnN1YnN0cihwZWckY3VyclBvcywgMikgPT09IHBlZyRjOTApIHtcbiAgICAgIHMwID0gcGVnJGM5MDtcbiAgICAgIHBlZyRjdXJyUG9zICs9IDI7XG4gICAgfSBlbHNlIHtcbiAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGM5MSk7IH1cbiAgICB9XG4gICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDEwKSB7XG4gICAgICAgIHMwID0gcGVnJGM5MjtcbiAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzkzKTsgfVxuICAgICAgfVxuICAgICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gMTMpIHtcbiAgICAgICAgICBzMCA9IHBlZyRjOTQ7XG4gICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzk1KTsgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHMwO1xuICB9XG5cblxuICAgIGNvbnN0IElOREVOVF9TVEVQID0gMjtcblxuICAgIGxldCBpbmRlbnRMZXZlbCA9IDA7XG5cblxuICBwZWckcmVzdWx0ID0gcGVnJHN0YXJ0UnVsZUZ1bmN0aW9uKCk7XG5cbiAgaWYgKHBlZyRyZXN1bHQgIT09IHBlZyRGQUlMRUQgJiYgcGVnJGN1cnJQb3MgPT09IGlucHV0Lmxlbmd0aCkge1xuICAgIHJldHVybiBwZWckcmVzdWx0O1xuICB9IGVsc2Uge1xuICAgIGlmIChwZWckcmVzdWx0ICE9PSBwZWckRkFJTEVEICYmIHBlZyRjdXJyUG9zIDwgaW5wdXQubGVuZ3RoKSB7XG4gICAgICBwZWckZmFpbChwZWckZW5kRXhwZWN0YXRpb24oKSk7XG4gICAgfVxuXG4gICAgdGhyb3cgcGVnJGJ1aWxkU3RydWN0dXJlZEVycm9yKFxuICAgICAgcGVnJG1heEZhaWxFeHBlY3RlZCxcbiAgICAgIHBlZyRtYXhGYWlsUG9zIDwgaW5wdXQubGVuZ3RoID8gaW5wdXQuY2hhckF0KHBlZyRtYXhGYWlsUG9zKSA6IG51bGwsXG4gICAgICBwZWckbWF4RmFpbFBvcyA8IGlucHV0Lmxlbmd0aFxuICAgICAgICA/IHBlZyRjb21wdXRlTG9jYXRpb24ocGVnJG1heEZhaWxQb3MsIHBlZyRtYXhGYWlsUG9zICsgMSlcbiAgICAgICAgOiBwZWckY29tcHV0ZUxvY2F0aW9uKHBlZyRtYXhGYWlsUG9zLCBwZWckbWF4RmFpbFBvcylcbiAgICApO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBTeW50YXhFcnJvcjogcGVnJFN5bnRheEVycm9yLFxuICBwYXJzZTogICAgICAgcGVnJHBhcnNlXG59O1xuIiwgIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5wYXJzZVN5bWwgPSBleHBvcnRzLnN0cmluZ2lmeVN5bWwgPSBleHBvcnRzLlByZXNlcnZlT3JkZXJpbmcgPSB2b2lkIDA7XG5jb25zdCBqc195YW1sXzEgPSByZXF1aXJlKFwianMteWFtbFwiKTtcbmNvbnN0IHN5bWxfMSA9IHJlcXVpcmUoXCIuL2dyYW1tYXJzL3N5bWxcIik7XG5jb25zdCBzaW1wbGVTdHJpbmdQYXR0ZXJuID0gL14oPyFbLT86LFxcXVt7fSMmKiF8PidcIiVAYCBcXHRcXHJcXG5dKS4oWyBcXHRdKig/IVssXFxdW3t9OiMgXFx0XFxyXFxuXSkuKSokLztcbi8vIFRoZSBmb2xsb3dpbmcga2V5cyB3aWxsIGFsd2F5cyBiZSBzdG9yZWQgYXQgdGhlIHRvcCBvZiB0aGUgb2JqZWN0LCBpbiB0aGVcbi8vIHNwZWNpZmllZCBvcmRlci4gSXQncyBub3QgZmFpciBidXQgbGlmZSBpc24ndCBmYWlyIGVpdGhlci5cbmNvbnN0IHNwZWNpYWxPYmplY3RLZXlzID0gW2BfX21ldGFkYXRhYCwgYHZlcnNpb25gLCBgcmVzb2x1dGlvbmAsIGBkZXBlbmRlbmNpZXNgLCBgcGVlckRlcGVuZGVuY2llc2AsIGBkZXBlbmRlbmNpZXNNZXRhYCwgYHBlZXJEZXBlbmRlbmNpZXNNZXRhYCwgYGJpbmFyaWVzYF07XG5jbGFzcyBQcmVzZXJ2ZU9yZGVyaW5nIHtcbiAgICBjb25zdHJ1Y3RvcihkYXRhKSB7XG4gICAgICAgIHRoaXMuZGF0YSA9IGRhdGE7XG4gICAgfVxufVxuZXhwb3J0cy5QcmVzZXJ2ZU9yZGVyaW5nID0gUHJlc2VydmVPcmRlcmluZztcbmZ1bmN0aW9uIHN0cmluZ2lmeVN0cmluZyh2YWx1ZSkge1xuICAgIGlmICh2YWx1ZS5tYXRjaChzaW1wbGVTdHJpbmdQYXR0ZXJuKSkge1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodmFsdWUpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGlzUmVtb3ZhYmxlRmllbGQodmFsdWUpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSBgdW5kZWZpbmVkYClcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gYG9iamVjdGAgJiYgdmFsdWUgIT09IG51bGwpXG4gICAgICAgIHJldHVybiBPYmplY3Qua2V5cyh2YWx1ZSkuZXZlcnkoa2V5ID0+IGlzUmVtb3ZhYmxlRmllbGQodmFsdWVba2V5XSkpO1xuICAgIHJldHVybiBmYWxzZTtcbn1cbmZ1bmN0aW9uIHN0cmluZ2lmeVZhbHVlKHZhbHVlLCBpbmRlbnRMZXZlbCwgbmV3TGluZUlmT2JqZWN0KSB7XG4gICAgaWYgKHZhbHVlID09PSBudWxsKVxuICAgICAgICByZXR1cm4gYG51bGxcXG5gO1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IGBudW1iZXJgIHx8IHR5cGVvZiB2YWx1ZSA9PT0gYGJvb2xlYW5gKVxuICAgICAgICByZXR1cm4gYCR7dmFsdWUudG9TdHJpbmcoKX1cXG5gO1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IGBzdHJpbmdgKVxuICAgICAgICByZXR1cm4gYCR7c3RyaW5naWZ5U3RyaW5nKHZhbHVlKX1cXG5gO1xuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICBpZiAodmFsdWUubGVuZ3RoID09PSAwKVxuICAgICAgICAgICAgcmV0dXJuIGBbXVxcbmA7XG4gICAgICAgIGNvbnN0IGluZGVudCA9IGAgIGAucmVwZWF0KGluZGVudExldmVsKTtcbiAgICAgICAgY29uc3Qgc2VyaWFsaXplZCA9IHZhbHVlLm1hcChzdWIgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGAke2luZGVudH0tICR7c3RyaW5naWZ5VmFsdWUoc3ViLCBpbmRlbnRMZXZlbCArIDEsIGZhbHNlKX1gO1xuICAgICAgICB9KS5qb2luKGBgKTtcbiAgICAgICAgcmV0dXJuIGBcXG4ke3NlcmlhbGl6ZWR9YDtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gYG9iamVjdGAgJiYgdmFsdWUpIHtcbiAgICAgICAgY29uc3QgW2RhdGEsIHNvcnRdID0gdmFsdWUgaW5zdGFuY2VvZiBQcmVzZXJ2ZU9yZGVyaW5nXG4gICAgICAgICAgICA/IFt2YWx1ZS5kYXRhLCBmYWxzZV1cbiAgICAgICAgICAgIDogW3ZhbHVlLCB0cnVlXTtcbiAgICAgICAgY29uc3QgaW5kZW50ID0gYCAgYC5yZXBlYXQoaW5kZW50TGV2ZWwpO1xuICAgICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoZGF0YSk7XG4gICAgICAgIGlmIChzb3J0KSB7XG4gICAgICAgICAgICBrZXlzLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBhSW5kZXggPSBzcGVjaWFsT2JqZWN0S2V5cy5pbmRleE9mKGEpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGJJbmRleCA9IHNwZWNpYWxPYmplY3RLZXlzLmluZGV4T2YoYik7XG4gICAgICAgICAgICAgICAgaWYgKGFJbmRleCA9PT0gLTEgJiYgYkluZGV4ID09PSAtMSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEgPCBiID8gLTEgOiBhID4gYiA/ICsxIDogMDtcbiAgICAgICAgICAgICAgICBpZiAoYUluZGV4ICE9PSAtMSAmJiBiSW5kZXggPT09IC0xKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7XG4gICAgICAgICAgICAgICAgaWYgKGFJbmRleCA9PT0gLTEgJiYgYkluZGV4ICE9PSAtMSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICsxO1xuICAgICAgICAgICAgICAgIHJldHVybiBhSW5kZXggLSBiSW5kZXg7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBmaWVsZHMgPSBrZXlzLmZpbHRlcihrZXkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuICFpc1JlbW92YWJsZUZpZWxkKGRhdGFba2V5XSk7XG4gICAgICAgIH0pLm1hcCgoa2V5LCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBkYXRhW2tleV07XG4gICAgICAgICAgICBjb25zdCBzdHJpbmdpZmllZEtleSA9IHN0cmluZ2lmeVN0cmluZyhrZXkpO1xuICAgICAgICAgICAgY29uc3Qgc3RyaW5naWZpZWRWYWx1ZSA9IHN0cmluZ2lmeVZhbHVlKHZhbHVlLCBpbmRlbnRMZXZlbCArIDEsIHRydWUpO1xuICAgICAgICAgICAgY29uc3QgcmVjb3JkSW5kZW50YXRpb24gPSBpbmRleCA+IDAgfHwgbmV3TGluZUlmT2JqZWN0XG4gICAgICAgICAgICAgICAgPyBpbmRlbnRcbiAgICAgICAgICAgICAgICA6IGBgO1xuICAgICAgICAgICAgLy8gWWFtbCAxLjIgc3BlYyBzYXlzIHRoYXQga2V5cyBvdmVyIDEwMjQgY2hhcmFjdGVycyBuZWVkIHRvIGJlIHByZWZpeGVkIHdpdGggPyBhbmQgdGhlIDogZ29lcyBpbiBhIG5ldyBsaW5lXG4gICAgICAgICAgICBjb25zdCBrZXlQYXJ0ID0gc3RyaW5naWZpZWRLZXkubGVuZ3RoID4gMTAyNFxuICAgICAgICAgICAgICAgID8gYD8gJHtzdHJpbmdpZmllZEtleX1cXG4ke3JlY29yZEluZGVudGF0aW9ufTpgXG4gICAgICAgICAgICAgICAgOiBgJHtzdHJpbmdpZmllZEtleX06YDtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlUGFydCA9IHN0cmluZ2lmaWVkVmFsdWUuc3RhcnRzV2l0aChgXFxuYClcbiAgICAgICAgICAgICAgICA/IHN0cmluZ2lmaWVkVmFsdWVcbiAgICAgICAgICAgICAgICA6IGAgJHtzdHJpbmdpZmllZFZhbHVlfWA7XG4gICAgICAgICAgICByZXR1cm4gYCR7cmVjb3JkSW5kZW50YXRpb259JHtrZXlQYXJ0fSR7dmFsdWVQYXJ0fWA7XG4gICAgICAgIH0pLmpvaW4oaW5kZW50TGV2ZWwgPT09IDAgPyBgXFxuYCA6IGBgKSB8fCBgXFxuYDtcbiAgICAgICAgaWYgKCFuZXdMaW5lSWZPYmplY3QpIHtcbiAgICAgICAgICAgIHJldHVybiBgJHtmaWVsZHN9YDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBgXFxuJHtmaWVsZHN9YDtcbiAgICAgICAgfVxuICAgIH1cbiAgICB0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIHZhbHVlIHR5cGUgKCR7dmFsdWV9KWApO1xufVxuZnVuY3Rpb24gc3RyaW5naWZ5U3ltbCh2YWx1ZSkge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHN0cmluZ2lmaWVkID0gc3RyaW5naWZ5VmFsdWUodmFsdWUsIDAsIGZhbHNlKTtcbiAgICAgICAgcmV0dXJuIHN0cmluZ2lmaWVkICE9PSBgXFxuYCA/IHN0cmluZ2lmaWVkIDogYGA7XG4gICAgfVxuICAgIGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoZXJyb3IubG9jYXRpb24pXG4gICAgICAgICAgICBlcnJvci5tZXNzYWdlID0gZXJyb3IubWVzc2FnZS5yZXBsYWNlKC8oXFwuKT8kLywgYCAobGluZSAke2Vycm9yLmxvY2F0aW9uLnN0YXJ0LmxpbmV9LCBjb2x1bW4gJHtlcnJvci5sb2NhdGlvbi5zdGFydC5jb2x1bW59KSQxYCk7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbn1cbmV4cG9ydHMuc3RyaW5naWZ5U3ltbCA9IHN0cmluZ2lmeVN5bWw7XG5zdHJpbmdpZnlTeW1sLlByZXNlcnZlT3JkZXJpbmcgPSBQcmVzZXJ2ZU9yZGVyaW5nO1xuZnVuY3Rpb24gcGFyc2VWaWFQZWcoc291cmNlKSB7XG4gICAgaWYgKCFzb3VyY2UuZW5kc1dpdGgoYFxcbmApKVxuICAgICAgICBzb3VyY2UgKz0gYFxcbmA7XG4gICAgcmV0dXJuICgwLCBzeW1sXzEucGFyc2UpKHNvdXJjZSk7XG59XG5jb25zdCBMRUdBQ1lfUkVHRVhQID0gL14oIy4qKFxccj9cXG4pKSo/I1xccyt5YXJuXFxzK2xvY2tmaWxlXFxzK3YxXFxyP1xcbi9pO1xuZnVuY3Rpb24gcGFyc2VWaWFKc1lhbWwoc291cmNlKSB7XG4gICAgaWYgKExFR0FDWV9SRUdFWFAudGVzdChzb3VyY2UpKVxuICAgICAgICByZXR1cm4gcGFyc2VWaWFQZWcoc291cmNlKTtcbiAgICBjb25zdCB2YWx1ZSA9ICgwLCBqc195YW1sXzEuc2FmZUxvYWQpKHNvdXJjZSwge1xuICAgICAgICBzY2hlbWE6IGpzX3lhbWxfMS5GQUlMU0FGRV9TQ0hFTUEsXG4gICAgICAgIGpzb246IHRydWUsXG4gICAgfSk7XG4gICAgLy8gRW1wdHkgZmlsZXMgYXJlIHBhcnNlZCBhcyBgdW5kZWZpbmVkYCBpbnN0ZWFkIG9mIGFuIGVtcHR5IG9iamVjdFxuICAgIC8vIEVtcHR5IGZpbGVzIHdpdGggMiBuZXdsaW5lcyBvciBtb3JlIGFyZSBgbnVsbGAgaW5zdGVhZFxuICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBudWxsKVxuICAgICAgICByZXR1cm4ge307XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gYG9iamVjdGApXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgYW4gaW5kZXhlZCBvYmplY3QsIGdvdCBhICR7dHlwZW9mIHZhbHVlfSBpbnN0ZWFkLiBEb2VzIHlvdXIgZmlsZSBmb2xsb3cgWWFtbCdzIHJ1bGVzP2ApO1xuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSlcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCBhbiBpbmRleGVkIG9iamVjdCwgZ290IGFuIGFycmF5IGluc3RlYWQuIERvZXMgeW91ciBmaWxlIGZvbGxvdyBZYW1sJ3MgcnVsZXM/YCk7XG4gICAgcmV0dXJuIHZhbHVlO1xufVxuZnVuY3Rpb24gcGFyc2VTeW1sKHNvdXJjZSkge1xuICAgIHJldHVybiBwYXJzZVZpYUpzWWFtbChzb3VyY2UpO1xufVxuZXhwb3J0cy5wYXJzZVN5bWwgPSBwYXJzZVN5bWw7XG4iLCAiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLnN0cmluZ2lmeVN5bWwgPSBleHBvcnRzLnBhcnNlU3ltbCA9IGV4cG9ydHMuc3RyaW5naWZ5UmVzb2x1dGlvbiA9IGV4cG9ydHMucGFyc2VSZXNvbHV0aW9uID0gZXhwb3J0cy5zdHJpbmdpZnlWYWx1ZUFyZ3VtZW50ID0gZXhwb3J0cy5zdHJpbmdpZnlTaGVsbExpbmUgPSBleHBvcnRzLnN0cmluZ2lmeVJlZGlyZWN0QXJndW1lbnQgPSBleHBvcnRzLnN0cmluZ2lmeUVudlNlZ21lbnQgPSBleHBvcnRzLnN0cmluZ2lmeUNvbW1hbmRMaW5lVGhlbiA9IGV4cG9ydHMuc3RyaW5naWZ5Q29tbWFuZExpbmUgPSBleHBvcnRzLnN0cmluZ2lmeUNvbW1hbmRDaGFpblRoZW4gPSBleHBvcnRzLnN0cmluZ2lmeUNvbW1hbmRDaGFpbiA9IGV4cG9ydHMuc3RyaW5naWZ5Q29tbWFuZCA9IGV4cG9ydHMuc3RyaW5naWZ5QXJpdGhtZXRpY0V4cHJlc3Npb24gPSBleHBvcnRzLnN0cmluZ2lmeUFyZ3VtZW50U2VnbWVudCA9IGV4cG9ydHMuc3RyaW5naWZ5QXJndW1lbnQgPSBleHBvcnRzLnN0cmluZ2lmeVNoZWxsID0gZXhwb3J0cy5wYXJzZVNoZWxsID0gdm9pZCAwO1xudmFyIHNoZWxsXzEgPSByZXF1aXJlKFwiLi9zaGVsbFwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcInBhcnNlU2hlbGxcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHNoZWxsXzEucGFyc2VTaGVsbDsgfSB9KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcInN0cmluZ2lmeVNoZWxsXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBzaGVsbF8xLnN0cmluZ2lmeVNoZWxsOyB9IH0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwic3RyaW5naWZ5QXJndW1lbnRcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHNoZWxsXzEuc3RyaW5naWZ5QXJndW1lbnQ7IH0gfSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJzdHJpbmdpZnlBcmd1bWVudFNlZ21lbnRcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHNoZWxsXzEuc3RyaW5naWZ5QXJndW1lbnRTZWdtZW50OyB9IH0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwic3RyaW5naWZ5QXJpdGhtZXRpY0V4cHJlc3Npb25cIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHNoZWxsXzEuc3RyaW5naWZ5QXJpdGhtZXRpY0V4cHJlc3Npb247IH0gfSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJzdHJpbmdpZnlDb21tYW5kXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBzaGVsbF8xLnN0cmluZ2lmeUNvbW1hbmQ7IH0gfSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJzdHJpbmdpZnlDb21tYW5kQ2hhaW5cIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHNoZWxsXzEuc3RyaW5naWZ5Q29tbWFuZENoYWluOyB9IH0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwic3RyaW5naWZ5Q29tbWFuZENoYWluVGhlblwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gc2hlbGxfMS5zdHJpbmdpZnlDb21tYW5kQ2hhaW5UaGVuOyB9IH0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwic3RyaW5naWZ5Q29tbWFuZExpbmVcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHNoZWxsXzEuc3RyaW5naWZ5Q29tbWFuZExpbmU7IH0gfSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJzdHJpbmdpZnlDb21tYW5kTGluZVRoZW5cIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHNoZWxsXzEuc3RyaW5naWZ5Q29tbWFuZExpbmVUaGVuOyB9IH0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwic3RyaW5naWZ5RW52U2VnbWVudFwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gc2hlbGxfMS5zdHJpbmdpZnlFbnZTZWdtZW50OyB9IH0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwic3RyaW5naWZ5UmVkaXJlY3RBcmd1bWVudFwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gc2hlbGxfMS5zdHJpbmdpZnlSZWRpcmVjdEFyZ3VtZW50OyB9IH0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwic3RyaW5naWZ5U2hlbGxMaW5lXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBzaGVsbF8xLnN0cmluZ2lmeVNoZWxsTGluZTsgfSB9KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcInN0cmluZ2lmeVZhbHVlQXJndW1lbnRcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHNoZWxsXzEuc3RyaW5naWZ5VmFsdWVBcmd1bWVudDsgfSB9KTtcbnZhciByZXNvbHV0aW9uXzEgPSByZXF1aXJlKFwiLi9yZXNvbHV0aW9uXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwicGFyc2VSZXNvbHV0aW9uXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiByZXNvbHV0aW9uXzEucGFyc2VSZXNvbHV0aW9uOyB9IH0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwic3RyaW5naWZ5UmVzb2x1dGlvblwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gcmVzb2x1dGlvbl8xLnN0cmluZ2lmeVJlc29sdXRpb247IH0gfSk7XG52YXIgc3ltbF8xID0gcmVxdWlyZShcIi4vc3ltbFwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcInBhcnNlU3ltbFwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gc3ltbF8xLnBhcnNlU3ltbDsgfSB9KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcInN0cmluZ2lmeVN5bWxcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHN5bWxfMS5zdHJpbmdpZnlTeW1sOyB9IH0pO1xuIiwgIid1c2Ugc3RyaWN0JztcblxuY29uc3QgcHJlc2VydmVDYW1lbENhc2UgPSBzdHJpbmcgPT4ge1xuXHRsZXQgaXNMYXN0Q2hhckxvd2VyID0gZmFsc2U7XG5cdGxldCBpc0xhc3RDaGFyVXBwZXIgPSBmYWxzZTtcblx0bGV0IGlzTGFzdExhc3RDaGFyVXBwZXIgPSBmYWxzZTtcblxuXHRmb3IgKGxldCBpID0gMDsgaSA8IHN0cmluZy5sZW5ndGg7IGkrKykge1xuXHRcdGNvbnN0IGNoYXJhY3RlciA9IHN0cmluZ1tpXTtcblxuXHRcdGlmIChpc0xhc3RDaGFyTG93ZXIgJiYgL1thLXpBLVpdLy50ZXN0KGNoYXJhY3RlcikgJiYgY2hhcmFjdGVyLnRvVXBwZXJDYXNlKCkgPT09IGNoYXJhY3Rlcikge1xuXHRcdFx0c3RyaW5nID0gc3RyaW5nLnNsaWNlKDAsIGkpICsgJy0nICsgc3RyaW5nLnNsaWNlKGkpO1xuXHRcdFx0aXNMYXN0Q2hhckxvd2VyID0gZmFsc2U7XG5cdFx0XHRpc0xhc3RMYXN0Q2hhclVwcGVyID0gaXNMYXN0Q2hhclVwcGVyO1xuXHRcdFx0aXNMYXN0Q2hhclVwcGVyID0gdHJ1ZTtcblx0XHRcdGkrKztcblx0XHR9IGVsc2UgaWYgKGlzTGFzdENoYXJVcHBlciAmJiBpc0xhc3RMYXN0Q2hhclVwcGVyICYmIC9bYS16QS1aXS8udGVzdChjaGFyYWN0ZXIpICYmIGNoYXJhY3Rlci50b0xvd2VyQ2FzZSgpID09PSBjaGFyYWN0ZXIpIHtcblx0XHRcdHN0cmluZyA9IHN0cmluZy5zbGljZSgwLCBpIC0gMSkgKyAnLScgKyBzdHJpbmcuc2xpY2UoaSAtIDEpO1xuXHRcdFx0aXNMYXN0TGFzdENoYXJVcHBlciA9IGlzTGFzdENoYXJVcHBlcjtcblx0XHRcdGlzTGFzdENoYXJVcHBlciA9IGZhbHNlO1xuXHRcdFx0aXNMYXN0Q2hhckxvd2VyID0gdHJ1ZTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0aXNMYXN0Q2hhckxvd2VyID0gY2hhcmFjdGVyLnRvTG93ZXJDYXNlKCkgPT09IGNoYXJhY3RlciAmJiBjaGFyYWN0ZXIudG9VcHBlckNhc2UoKSAhPT0gY2hhcmFjdGVyO1xuXHRcdFx0aXNMYXN0TGFzdENoYXJVcHBlciA9IGlzTGFzdENoYXJVcHBlcjtcblx0XHRcdGlzTGFzdENoYXJVcHBlciA9IGNoYXJhY3Rlci50b1VwcGVyQ2FzZSgpID09PSBjaGFyYWN0ZXIgJiYgY2hhcmFjdGVyLnRvTG93ZXJDYXNlKCkgIT09IGNoYXJhY3Rlcjtcblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gc3RyaW5nO1xufTtcblxuY29uc3QgY2FtZWxDYXNlID0gKGlucHV0LCBvcHRpb25zKSA9PiB7XG5cdGlmICghKHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZycgfHwgQXJyYXkuaXNBcnJheShpbnB1dCkpKSB7XG5cdFx0dGhyb3cgbmV3IFR5cGVFcnJvcignRXhwZWN0ZWQgdGhlIGlucHV0IHRvIGJlIGBzdHJpbmcgfCBzdHJpbmdbXWAnKTtcblx0fVxuXG5cdG9wdGlvbnMgPSBPYmplY3QuYXNzaWduKHtcblx0XHRwYXNjYWxDYXNlOiBmYWxzZVxuXHR9LCBvcHRpb25zKTtcblxuXHRjb25zdCBwb3N0UHJvY2VzcyA9IHggPT4gb3B0aW9ucy5wYXNjYWxDYXNlID8geC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHguc2xpY2UoMSkgOiB4O1xuXG5cdGlmIChBcnJheS5pc0FycmF5KGlucHV0KSkge1xuXHRcdGlucHV0ID0gaW5wdXQubWFwKHggPT4geC50cmltKCkpXG5cdFx0XHQuZmlsdGVyKHggPT4geC5sZW5ndGgpXG5cdFx0XHQuam9pbignLScpO1xuXHR9IGVsc2Uge1xuXHRcdGlucHV0ID0gaW5wdXQudHJpbSgpO1xuXHR9XG5cblx0aWYgKGlucHV0Lmxlbmd0aCA9PT0gMCkge1xuXHRcdHJldHVybiAnJztcblx0fVxuXG5cdGlmIChpbnB1dC5sZW5ndGggPT09IDEpIHtcblx0XHRyZXR1cm4gb3B0aW9ucy5wYXNjYWxDYXNlID8gaW5wdXQudG9VcHBlckNhc2UoKSA6IGlucHV0LnRvTG93ZXJDYXNlKCk7XG5cdH1cblxuXHRjb25zdCBoYXNVcHBlckNhc2UgPSBpbnB1dCAhPT0gaW5wdXQudG9Mb3dlckNhc2UoKTtcblxuXHRpZiAoaGFzVXBwZXJDYXNlKSB7XG5cdFx0aW5wdXQgPSBwcmVzZXJ2ZUNhbWVsQ2FzZShpbnB1dCk7XG5cdH1cblxuXHRpbnB1dCA9IGlucHV0XG5cdFx0LnJlcGxhY2UoL15bXy5cXC0gXSsvLCAnJylcblx0XHQudG9Mb3dlckNhc2UoKVxuXHRcdC5yZXBsYWNlKC9bXy5cXC0gXSsoXFx3fCQpL2csIChfLCBwMSkgPT4gcDEudG9VcHBlckNhc2UoKSlcblx0XHQucmVwbGFjZSgvXFxkKyhcXHd8JCkvZywgbSA9PiBtLnRvVXBwZXJDYXNlKCkpO1xuXG5cdHJldHVybiBwb3N0UHJvY2VzcyhpbnB1dCk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGNhbWVsQ2FzZTtcbi8vIFRPRE86IFJlbW92ZSB0aGlzIGZvciB0aGUgbmV4dCBtYWpvciByZWxlYXNlXG5tb2R1bGUuZXhwb3J0cy5kZWZhdWx0ID0gY2FtZWxDYXNlO1xuIiwgIid1c2Ugc3RyaWN0J1xuXG5jb25zdCB2ZW5kb3JzID0gcmVxdWlyZSgnLi92ZW5kb3JzLmpzb24nKVxuXG5jb25zdCBlbnYgPSBwcm9jZXNzLmVudlxuXG4vLyBVc2VkIGZvciB0ZXN0aW5nIG9ubHlcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX3ZlbmRvcnMnLCB7XG4gIHZhbHVlOiB2ZW5kb3JzLm1hcChmdW5jdGlvbiAodikge1xuICAgIHJldHVybiB2LmNvbnN0YW50XG4gIH0pXG59KVxuXG5leHBvcnRzLm5hbWUgPSBudWxsXG5leHBvcnRzLmlzUFIgPSBudWxsXG5cbnZlbmRvcnMuZm9yRWFjaChmdW5jdGlvbiAodmVuZG9yKSB7XG4gIGNvbnN0IGVudnMgPSBBcnJheS5pc0FycmF5KHZlbmRvci5lbnYpID8gdmVuZG9yLmVudiA6IFt2ZW5kb3IuZW52XVxuICBjb25zdCBpc0NJID0gZW52cy5ldmVyeShmdW5jdGlvbiAob2JqKSB7XG4gICAgcmV0dXJuIGNoZWNrRW52KG9iailcbiAgfSlcblxuICBleHBvcnRzW3ZlbmRvci5jb25zdGFudF0gPSBpc0NJXG5cbiAgaWYgKCFpc0NJKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICBleHBvcnRzLm5hbWUgPSB2ZW5kb3IubmFtZVxuXG4gIHN3aXRjaCAodHlwZW9mIHZlbmRvci5wcikge1xuICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICAvLyBcInByXCI6IFwiQ0lSUlVTX1BSXCJcbiAgICAgIGV4cG9ydHMuaXNQUiA9ICEhZW52W3ZlbmRvci5wcl1cbiAgICAgIGJyZWFrXG4gICAgY2FzZSAnb2JqZWN0JzpcbiAgICAgIGlmICgnZW52JyBpbiB2ZW5kb3IucHIpIHtcbiAgICAgICAgLy8gXCJwclwiOiB7IFwiZW52XCI6IFwiQlVJTERLSVRFX1BVTExfUkVRVUVTVFwiLCBcIm5lXCI6IFwiZmFsc2VcIiB9XG4gICAgICAgIGV4cG9ydHMuaXNQUiA9IHZlbmRvci5wci5lbnYgaW4gZW52ICYmIGVudlt2ZW5kb3IucHIuZW52XSAhPT0gdmVuZG9yLnByLm5lXG4gICAgICB9IGVsc2UgaWYgKCdhbnknIGluIHZlbmRvci5wcikge1xuICAgICAgICAvLyBcInByXCI6IHsgXCJhbnlcIjogW1wiZ2hwcmJQdWxsSWRcIiwgXCJDSEFOR0VfSURcIl0gfVxuICAgICAgICBleHBvcnRzLmlzUFIgPSB2ZW5kb3IucHIuYW55LnNvbWUoZnVuY3Rpb24gKGtleSkge1xuICAgICAgICAgIHJldHVybiAhIWVudltrZXldXG4gICAgICAgIH0pXG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBcInByXCI6IHsgXCJEUk9ORV9CVUlMRF9FVkVOVFwiOiBcInB1bGxfcmVxdWVzdFwiIH1cbiAgICAgICAgZXhwb3J0cy5pc1BSID0gY2hlY2tFbnYodmVuZG9yLnByKVxuICAgICAgfVxuICAgICAgYnJlYWtcbiAgICBkZWZhdWx0OlxuICAgICAgLy8gUFIgZGV0ZWN0aW9uIG5vdCBzdXBwb3J0ZWQgZm9yIHRoaXMgdmVuZG9yXG4gICAgICBleHBvcnRzLmlzUFIgPSBudWxsXG4gIH1cbn0pXG5cbmV4cG9ydHMuaXNDSSA9ICEhKFxuICBlbnYuQ0kgfHwgLy8gVHJhdmlzIENJLCBDaXJjbGVDSSwgQ2lycnVzIENJLCBHaXRsYWIgQ0ksIEFwcHZleW9yLCBDb2RlU2hpcCwgZHNhcmlcbiAgZW52LkNPTlRJTlVPVVNfSU5URUdSQVRJT04gfHwgLy8gVHJhdmlzIENJLCBDaXJydXMgQ0lcbiAgZW52LkJVSUxEX05VTUJFUiB8fCAvLyBKZW5raW5zLCBUZWFtQ2l0eVxuICBlbnYuQ0lfQVBQX0lEIHx8IC8vIEFwcGZsb3dcbiAgZW52LkNJX0JVSUxEX0lEIHx8IC8vIEFwcGZsb3dcbiAgZW52LkNJX0JVSUxEX05VTUJFUiB8fCAvLyBBcHBmbG93XG4gIGVudi5SVU5fSUQgfHwgLy8gVGFza0NsdXN0ZXIsIGRzYXJpXG4gIGV4cG9ydHMubmFtZSB8fFxuICBmYWxzZVxuKVxuXG5mdW5jdGlvbiBjaGVja0VudiAob2JqKSB7XG4gIGlmICh0eXBlb2Ygb2JqID09PSAnc3RyaW5nJykgcmV0dXJuICEhZW52W29ial1cbiAgcmV0dXJuIE9iamVjdC5rZXlzKG9iaikuZXZlcnkoZnVuY3Rpb24gKGspIHtcbiAgICByZXR1cm4gZW52W2tdID09PSBvYmpba11cbiAgfSlcbn1cbiIsICIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG5cbmNvbnN0IE5PREVfSU5JVElBTCA9IDA7XG5jb25zdCBOT0RFX1NVQ0NFU1MgPSAxO1xuY29uc3QgTk9ERV9FUlJPUkVEID0gMjtcbmNvbnN0IFNUQVJUX09GX0lOUFVUID0gYFxcdTAwMDFgO1xuY29uc3QgRU5EX09GX0lOUFVUID0gYFxcdTAwMDBgO1xuY29uc3QgSEVMUF9DT01NQU5EX0lOREVYID0gLTE7XG5jb25zdCBIRUxQX1JFR0VYID0gL14oLWh8LS1oZWxwKSg/Oj0oWzAtOV0rKSk/JC87XG5jb25zdCBPUFRJT05fUkVHRVggPSAvXigtLVthLXpdKyg/Oi1bYS16XSspKnwtW2EtekEtWl0rKSQvO1xuY29uc3QgQkFUQ0hfUkVHRVggPSAvXi1bYS16QS1aXXsyLH0kLztcbmNvbnN0IEJJTkRJTkdfUkVHRVggPSAvXihbXj1dKyk9KFtcXHNcXFNdKikkLztcbmNvbnN0IERFQlVHID0gcHJvY2Vzcy5lbnYuREVCVUdfQ0xJID09PSBgMWA7XG5cbmV4cG9ydHMuQkFUQ0hfUkVHRVggPSBCQVRDSF9SRUdFWDtcbmV4cG9ydHMuQklORElOR19SRUdFWCA9IEJJTkRJTkdfUkVHRVg7XG5leHBvcnRzLkRFQlVHID0gREVCVUc7XG5leHBvcnRzLkVORF9PRl9JTlBVVCA9IEVORF9PRl9JTlBVVDtcbmV4cG9ydHMuSEVMUF9DT01NQU5EX0lOREVYID0gSEVMUF9DT01NQU5EX0lOREVYO1xuZXhwb3J0cy5IRUxQX1JFR0VYID0gSEVMUF9SRUdFWDtcbmV4cG9ydHMuTk9ERV9FUlJPUkVEID0gTk9ERV9FUlJPUkVEO1xuZXhwb3J0cy5OT0RFX0lOSVRJQUwgPSBOT0RFX0lOSVRJQUw7XG5leHBvcnRzLk5PREVfU1VDQ0VTUyA9IE5PREVfU1VDQ0VTUztcbmV4cG9ydHMuT1BUSU9OX1JFR0VYID0gT1BUSU9OX1JFR0VYO1xuZXhwb3J0cy5TVEFSVF9PRl9JTlBVVCA9IFNUQVJUX09GX0lOUFVUO1xuIiwgIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcblxudmFyIGNvbnN0YW50cyA9IHJlcXVpcmUoJy4vY29uc3RhbnRzLmpzJyk7XG5cbi8qKlxuICogQSBnZW5lcmljIHVzYWdlIGVycm9yIHdpdGggdGhlIG5hbWUgYFVzYWdlRXJyb3JgLlxuICpcbiAqIEl0IHNob3VsZCBiZSB1c2VkIG92ZXIgYEVycm9yYCBvbmx5IHdoZW4gaXQncyB0aGUgdXNlcidzIGZhdWx0LlxuICovXG5jbGFzcyBVc2FnZUVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICAgIGNvbnN0cnVjdG9yKG1lc3NhZ2UpIHtcbiAgICAgICAgc3VwZXIobWVzc2FnZSk7XG4gICAgICAgIHRoaXMuY2xpcGFuaW9uID0geyB0eXBlOiBgdXNhZ2VgIH07XG4gICAgICAgIHRoaXMubmFtZSA9IGBVc2FnZUVycm9yYDtcbiAgICB9XG59XG5jbGFzcyBVbmtub3duU3ludGF4RXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gICAgY29uc3RydWN0b3IoaW5wdXQsIGNhbmRpZGF0ZXMpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5pbnB1dCA9IGlucHV0O1xuICAgICAgICB0aGlzLmNhbmRpZGF0ZXMgPSBjYW5kaWRhdGVzO1xuICAgICAgICB0aGlzLmNsaXBhbmlvbiA9IHsgdHlwZTogYG5vbmVgIH07XG4gICAgICAgIHRoaXMubmFtZSA9IGBVbmtub3duU3ludGF4RXJyb3JgO1xuICAgICAgICBpZiAodGhpcy5jYW5kaWRhdGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgdGhpcy5tZXNzYWdlID0gYENvbW1hbmQgbm90IGZvdW5kLCBidXQgd2UncmUgbm90IHN1cmUgd2hhdCdzIHRoZSBhbHRlcm5hdGl2ZS5gO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHRoaXMuY2FuZGlkYXRlcy5ldmVyeShjYW5kaWRhdGUgPT4gY2FuZGlkYXRlLnJlYXNvbiAhPT0gbnVsbCAmJiBjYW5kaWRhdGUucmVhc29uID09PSBjYW5kaWRhdGVzWzBdLnJlYXNvbikpIHtcbiAgICAgICAgICAgIGNvbnN0IFt7IHJlYXNvbiB9XSA9IHRoaXMuY2FuZGlkYXRlcztcbiAgICAgICAgICAgIHRoaXMubWVzc2FnZSA9IGAke3JlYXNvbn1cXG5cXG4ke3RoaXMuY2FuZGlkYXRlcy5tYXAoKHsgdXNhZ2UgfSkgPT4gYCQgJHt1c2FnZX1gKS5qb2luKGBcXG5gKX1gO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHRoaXMuY2FuZGlkYXRlcy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgIGNvbnN0IFt7IHVzYWdlIH1dID0gdGhpcy5jYW5kaWRhdGVzO1xuICAgICAgICAgICAgdGhpcy5tZXNzYWdlID0gYENvbW1hbmQgbm90IGZvdW5kOyBkaWQgeW91IG1lYW46XFxuXFxuJCAke3VzYWdlfVxcbiR7d2hpbGVSdW5uaW5nKGlucHV0KX1gO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5tZXNzYWdlID0gYENvbW1hbmQgbm90IGZvdW5kOyBkaWQgeW91IG1lYW4gb25lIG9mOlxcblxcbiR7dGhpcy5jYW5kaWRhdGVzLm1hcCgoeyB1c2FnZSB9LCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBgJHtgJHtpbmRleH0uYC5wYWRTdGFydCg0KX0gJHt1c2FnZX1gO1xuICAgICAgICAgICAgfSkuam9pbihgXFxuYCl9XFxuXFxuJHt3aGlsZVJ1bm5pbmcoaW5wdXQpfWA7XG4gICAgICAgIH1cbiAgICB9XG59XG5jbGFzcyBBbWJpZ3VvdXNTeW50YXhFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgICBjb25zdHJ1Y3RvcihpbnB1dCwgdXNhZ2VzKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuaW5wdXQgPSBpbnB1dDtcbiAgICAgICAgdGhpcy51c2FnZXMgPSB1c2FnZXM7XG4gICAgICAgIHRoaXMuY2xpcGFuaW9uID0geyB0eXBlOiBgbm9uZWAgfTtcbiAgICAgICAgdGhpcy5uYW1lID0gYEFtYmlndW91c1N5bnRheEVycm9yYDtcbiAgICAgICAgdGhpcy5tZXNzYWdlID0gYENhbm5vdCBmaW5kIHdoaWNoIHRvIHBpY2sgYW1vbmdzdCB0aGUgZm9sbG93aW5nIGFsdGVybmF0aXZlczpcXG5cXG4ke3RoaXMudXNhZ2VzLm1hcCgodXNhZ2UsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gYCR7YCR7aW5kZXh9LmAucGFkU3RhcnQoNCl9ICR7dXNhZ2V9YDtcbiAgICAgICAgfSkuam9pbihgXFxuYCl9XFxuXFxuJHt3aGlsZVJ1bm5pbmcoaW5wdXQpfWA7XG4gICAgfVxufVxuY29uc3Qgd2hpbGVSdW5uaW5nID0gKGlucHV0KSA9PiBgV2hpbGUgcnVubmluZyAke2lucHV0LmZpbHRlcih0b2tlbiA9PiB7XG4gICAgcmV0dXJuIHRva2VuICE9PSBjb25zdGFudHMuRU5EX09GX0lOUFVUO1xufSkubWFwKHRva2VuID0+IHtcbiAgICBjb25zdCBqc29uID0gSlNPTi5zdHJpbmdpZnkodG9rZW4pO1xuICAgIGlmICh0b2tlbi5tYXRjaCgvXFxzLykgfHwgdG9rZW4ubGVuZ3RoID09PSAwIHx8IGpzb24gIT09IGBcIiR7dG9rZW59XCJgKSB7XG4gICAgICAgIHJldHVybiBqc29uO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHRva2VuO1xuICAgIH1cbn0pLmpvaW4oYCBgKX1gO1xuXG5leHBvcnRzLkFtYmlndW91c1N5bnRheEVycm9yID0gQW1iaWd1b3VzU3ludGF4RXJyb3I7XG5leHBvcnRzLlVua25vd25TeW50YXhFcnJvciA9IFVua25vd25TeW50YXhFcnJvcjtcbmV4cG9ydHMuVXNhZ2VFcnJvciA9IFVzYWdlRXJyb3I7XG4iLCAiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuXG5jb25zdCBNQVhfTElORV9MRU5HVEggPSA4MDtcbmNvbnN0IHJpY2hMaW5lID0gQXJyYXkoTUFYX0xJTkVfTEVOR1RIKS5maWxsKGBcdTI1MDFgKTtcbmZvciAobGV0IHQgPSAwOyB0IDw9IDI0OyArK3QpXG4gICAgcmljaExpbmVbcmljaExpbmUubGVuZ3RoIC0gdF0gPSBgXFx4MWJbMzg7NTskezIzMiArIHR9bVx1MjUwMWA7XG5jb25zdCByaWNoRm9ybWF0ID0ge1xuICAgIGhlYWRlcjogc3RyID0+IGBcXHgxYlsxbVx1MjUwMVx1MjUwMVx1MjUwMSAke3N0cn0ke3N0ci5sZW5ndGggPCBNQVhfTElORV9MRU5HVEggLSA1ID8gYCAke3JpY2hMaW5lLnNsaWNlKHN0ci5sZW5ndGggKyA1KS5qb2luKGBgKX1gIDogYDpgfVxceDFiWzBtYCxcbiAgICBib2xkOiBzdHIgPT4gYFxceDFiWzFtJHtzdHJ9XFx4MWJbMjJtYCxcbiAgICBlcnJvcjogc3RyID0+IGBcXHgxYlszMW1cXHgxYlsxbSR7c3RyfVxceDFiWzIybVxceDFiWzM5bWAsXG4gICAgY29kZTogc3RyID0+IGBcXHgxYlszNm0ke3N0cn1cXHgxYlszOW1gLFxufTtcbmNvbnN0IHRleHRGb3JtYXQgPSB7XG4gICAgaGVhZGVyOiBzdHIgPT4gc3RyLFxuICAgIGJvbGQ6IHN0ciA9PiBzdHIsXG4gICAgZXJyb3I6IHN0ciA9PiBzdHIsXG4gICAgY29kZTogc3RyID0+IHN0cixcbn07XG5mdW5jdGlvbiBkZWRlbnQodGV4dCkge1xuICAgIGNvbnN0IGxpbmVzID0gdGV4dC5zcGxpdChgXFxuYCk7XG4gICAgY29uc3Qgbm9uRW1wdHlMaW5lcyA9IGxpbmVzLmZpbHRlcihsaW5lID0+IGxpbmUubWF0Y2goL1xcUy8pKTtcbiAgICBjb25zdCBpbmRlbnQgPSBub25FbXB0eUxpbmVzLmxlbmd0aCA+IDAgPyBub25FbXB0eUxpbmVzLnJlZHVjZSgobWluTGVuZ3RoLCBsaW5lKSA9PiBNYXRoLm1pbihtaW5MZW5ndGgsIGxpbmUubGVuZ3RoIC0gbGluZS50cmltU3RhcnQoKS5sZW5ndGgpLCBOdW1iZXIuTUFYX1ZBTFVFKSA6IDA7XG4gICAgcmV0dXJuIGxpbmVzXG4gICAgICAgIC5tYXAobGluZSA9PiBsaW5lLnNsaWNlKGluZGVudCkudHJpbVJpZ2h0KCkpXG4gICAgICAgIC5qb2luKGBcXG5gKTtcbn1cbi8qKlxuICogRm9ybWF0cyBtYXJrZG93biB0ZXh0IHRvIGJlIGRpc3BsYXllZCB0byB0aGUgY29uc29sZS4gTm90IGFsbCBtYXJrZG93biBmZWF0dXJlcyBhcmUgc3VwcG9ydGVkLlxuICpcbiAqIEBwYXJhbSB0ZXh0IFRoZSBtYXJrZG93biB0ZXh0IHRvIGZvcm1hdC5cbiAqIEBwYXJhbSBvcHRzLmZvcm1hdCBUaGUgZm9ybWF0IHRvIHVzZS5cbiAqIEBwYXJhbSBvcHRzLnBhcmFncmFwaHMgV2hldGhlciB0byBjdXQgdGhlIHRleHQgaW50byBwYXJhZ3JhcGhzIG9mIDgwIGNoYXJhY3RlcnMgYXQgbW9zdC5cbiAqL1xuZnVuY3Rpb24gZm9ybWF0TWFya2Rvd25pc2godGV4dCwgeyBmb3JtYXQsIHBhcmFncmFwaHMgfSkge1xuICAgIC8vIEVuZm9yY2UgXFxuIGFzIG5ld2xpbmUgY2hhcmFjdGVyXG4gICAgdGV4dCA9IHRleHQucmVwbGFjZSgvXFxyXFxuPy9nLCBgXFxuYCk7XG4gICAgLy8gUmVtb3ZlIHRoZSBpbmRlbnRhdGlvbiwgc2luY2UgaXQgZ290IG1lc3NlZCB1cCB3aXRoIHRoZSBKUyBpbmRlbnRhdGlvblxuICAgIHRleHQgPSBkZWRlbnQodGV4dCk7XG4gICAgLy8gUmVtb3ZlIHN1cnJvdW5kaW5nIG5ld2xpbmVzLCBzaW5jZSB0aGV5IGdvdCBhZGRlZCBmb3IgSlMgZm9ybWF0dGluZ1xuICAgIHRleHQgPSB0ZXh0LnJlcGxhY2UoL15cXG4rfFxcbiskL2csIGBgKTtcbiAgICAvLyBMaXN0IGl0ZW1zIGFsd2F5cyBlbmQgd2l0aCBhdCBsZWFzdCB0d28gbmV3bGluZXMgKGluIG9yZGVyIHRvIG5vdCBiZSBjb2xsYXBzZWQpXG4gICAgdGV4dCA9IHRleHQucmVwbGFjZSgvXihcXHMqKS0oW15cXG5dKj8pXFxuKy9nbSwgYCQxLSQyXFxuXFxuYCk7XG4gICAgLy8gU2luZ2xlIG5ld2xpbmVzIGFyZSByZW1vdmVkOyBsYXJnZXIgdGhhbiB0aGF0IGFyZSBjb2xsYXBzZWQgaW50byBvbmVcbiAgICB0ZXh0ID0gdGV4dC5yZXBsYWNlKC9cXG4oXFxuKT9cXG4qL2csICgkMCwgJDEpID0+ICQxID8gJDEgOiBgIGApO1xuICAgIGlmIChwYXJhZ3JhcGhzKSB7XG4gICAgICAgIHRleHQgPSB0ZXh0LnNwbGl0KC9cXG4vKS5tYXAocGFyYWdyYXBoID0+IHtcbiAgICAgICAgICAgIC8vIERvZXMgdGhlIHBhcmFncmFwaCBzdGFydHMgd2l0aCBhIGxpc3Q/XG4gICAgICAgICAgICBjb25zdCBidWxsZXRNYXRjaCA9IHBhcmFncmFwaC5tYXRjaCgvXlxccypbKi1dW1xcdCBdKyguKikvKTtcbiAgICAgICAgICAgIGlmICghYnVsbGV0TWF0Y2gpXG4gICAgICAgICAgICAgICAgLy8gTm8sIGN1dCB0aGUgcGFyYWdyYXBocyBpbnRvIHNlZ21lbnRzIG9mIDgwIGNoYXJhY3RlcnNcbiAgICAgICAgICAgICAgICByZXR1cm4gcGFyYWdyYXBoLm1hdGNoKC8oLnsxLDgwfSkoPzogfCQpL2cpLmpvaW4oYFxcbmApO1xuICAgICAgICAgICAgY29uc3QgaW5kZW50ID0gcGFyYWdyYXBoLmxlbmd0aCAtIHBhcmFncmFwaC50cmltU3RhcnQoKS5sZW5ndGg7XG4gICAgICAgICAgICAvLyBZZXMsIGN1dCB0aGUgcGFyYWdyYXBocyBpbnRvIHNlZ21lbnRzIG9mICg3OCAtIGluZGVudCkgY2hhcmFjdGVycyAodG8gYWNjb3VudCBmb3IgdGhlIHByZWZpeClcbiAgICAgICAgICAgIHJldHVybiBidWxsZXRNYXRjaFsxXS5tYXRjaChuZXcgUmVnRXhwKGAoLnsxLCR7NzggLSBpbmRlbnR9fSkoPzogfCQpYCwgYGdgKSkubWFwKChsaW5lLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBgIGAucmVwZWF0KGluZGVudCkgKyAoaW5kZXggPT09IDAgPyBgLSBgIDogYCAgYCkgKyBsaW5lO1xuICAgICAgICAgICAgfSkuam9pbihgXFxuYCk7XG4gICAgICAgIH0pLmpvaW4oYFxcblxcbmApO1xuICAgIH1cbiAgICAvLyBIaWdobGlnaHQgdGhlIGNvZGUgc2VnbWVudHNcbiAgICB0ZXh0ID0gdGV4dC5yZXBsYWNlKC8oYCspKCg/Oi58W1xcbl0pKj8pXFwxL2csICgkMCwgJDEsICQyKSA9PiB7XG4gICAgICAgIHJldHVybiBmb3JtYXQuY29kZSgkMSArICQyICsgJDEpO1xuICAgIH0pO1xuICAgIC8vIEhpZ2hsaWdodCB0aGUgYm9sZCBzZWdtZW50c1xuICAgIHRleHQgPSB0ZXh0LnJlcGxhY2UoLyhcXCpcXCopKCg/Oi58W1xcbl0pKj8pXFwxL2csICgkMCwgJDEsICQyKSA9PiB7XG4gICAgICAgIHJldHVybiBmb3JtYXQuYm9sZCgkMSArICQyICsgJDEpO1xuICAgIH0pO1xuICAgIHJldHVybiB0ZXh0ID8gYCR7dGV4dH1cXG5gIDogYGA7XG59XG5cbmV4cG9ydHMuZm9ybWF0TWFya2Rvd25pc2ggPSBmb3JtYXRNYXJrZG93bmlzaDtcbmV4cG9ydHMucmljaEZvcm1hdCA9IHJpY2hGb3JtYXQ7XG5leHBvcnRzLnRleHRGb3JtYXQgPSB0ZXh0Rm9ybWF0O1xuIiwgIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcblxudmFyIGVycm9ycyA9IHJlcXVpcmUoJy4uLy4uL2Vycm9ycy5qcycpO1xuXG5jb25zdCBpc09wdGlvblN5bWJvbCA9IFN5bWJvbChgY2xpcGFuaW9uL2lzT3B0aW9uYCk7XG5mdW5jdGlvbiBtYWtlQ29tbWFuZE9wdGlvbihzcGVjKSB7XG4gICAgLy8gV2UgbGllISBCdXQgaXQncyBmb3IgdGhlIGdvb2QgY2F1c2U6IHRoZSBjbGkgZW5naW5lIHdpbGwgdHVybiB0aGUgc3BlY3MgaW50byBwcm9wZXIgdmFsdWVzIGFmdGVyIGluc3RhbnRpYXRpb24uXG4gICAgcmV0dXJuIHsgLi4uc3BlYywgW2lzT3B0aW9uU3ltYm9sXTogdHJ1ZSB9O1xufVxuZnVuY3Rpb24gcmVyb3V0ZUFyZ3VtZW50cyhhLCBiKSB7XG4gICAgaWYgKHR5cGVvZiBhID09PSBgdW5kZWZpbmVkYClcbiAgICAgICAgcmV0dXJuIFthLCBiXTtcbiAgICBpZiAodHlwZW9mIGEgPT09IGBvYmplY3RgICYmIGEgIT09IG51bGwgJiYgIUFycmF5LmlzQXJyYXkoYSkpIHtcbiAgICAgICAgcmV0dXJuIFt1bmRlZmluZWQsIGFdO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcmV0dXJuIFthLCBiXTtcbiAgICB9XG59XG5mdW5jdGlvbiBjbGVhblZhbGlkYXRpb25FcnJvcihtZXNzYWdlLCB7IG1lcmdlTmFtZSA9IGZhbHNlIH0gPSB7fSkge1xuICAgIGNvbnN0IG1hdGNoID0gbWVzc2FnZS5tYXRjaCgvXihbXjpdKyk6ICguKikkL20pO1xuICAgIGlmICghbWF0Y2gpXG4gICAgICAgIHJldHVybiBgdmFsaWRhdGlvbiBmYWlsZWRgO1xuICAgIGxldCBbLCBwYXRoLCBsaW5lXSA9IG1hdGNoO1xuICAgIGlmIChtZXJnZU5hbWUpXG4gICAgICAgIGxpbmUgPSBsaW5lWzBdLnRvTG93ZXJDYXNlKCkgKyBsaW5lLnNsaWNlKDEpO1xuICAgIGxpbmUgPSBwYXRoICE9PSBgLmAgfHwgIW1lcmdlTmFtZVxuICAgICAgICA/IGAke3BhdGgucmVwbGFjZSgvXlxcLihcXFt8JCkvLCBgJDFgKX06ICR7bGluZX1gXG4gICAgICAgIDogYDogJHtsaW5lfWA7XG4gICAgcmV0dXJuIGxpbmU7XG59XG5mdW5jdGlvbiBmb3JtYXRFcnJvcihtZXNzYWdlLCBlcnJvcnMkMSkge1xuICAgIGlmIChlcnJvcnMkMS5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBlcnJvcnMuVXNhZ2VFcnJvcihgJHttZXNzYWdlfSR7Y2xlYW5WYWxpZGF0aW9uRXJyb3IoZXJyb3JzJDFbMF0sIHsgbWVyZ2VOYW1lOiB0cnVlIH0pfWApO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG5ldyBlcnJvcnMuVXNhZ2VFcnJvcihgJHttZXNzYWdlfTpcXG4ke2Vycm9ycyQxLm1hcChlcnJvciA9PiBgXFxuLSAke2NsZWFuVmFsaWRhdGlvbkVycm9yKGVycm9yKX1gKS5qb2luKGBgKX1gKTtcbiAgICB9XG59XG5mdW5jdGlvbiBhcHBseVZhbGlkYXRvcihuYW1lLCB2YWx1ZSwgdmFsaWRhdG9yKSB7XG4gICAgaWYgKHR5cGVvZiB2YWxpZGF0b3IgPT09IGB1bmRlZmluZWRgKVxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgY29uc3QgZXJyb3JzID0gW107XG4gICAgY29uc3QgY29lcmNpb25zID0gW107XG4gICAgY29uc3QgY29lcmNpb24gPSAodikgPT4ge1xuICAgICAgICBjb25zdCBvcmlnID0gdmFsdWU7XG4gICAgICAgIHZhbHVlID0gdjtcbiAgICAgICAgcmV0dXJuIGNvZXJjaW9uLmJpbmQobnVsbCwgb3JpZyk7XG4gICAgfTtcbiAgICBjb25zdCBjaGVjayA9IHZhbGlkYXRvcih2YWx1ZSwgeyBlcnJvcnMsIGNvZXJjaW9ucywgY29lcmNpb24gfSk7XG4gICAgaWYgKCFjaGVjaylcbiAgICAgICAgdGhyb3cgZm9ybWF0RXJyb3IoYEludmFsaWQgdmFsdWUgZm9yICR7bmFtZX1gLCBlcnJvcnMpO1xuICAgIGZvciAoY29uc3QgWywgb3BdIG9mIGNvZXJjaW9ucylcbiAgICAgICAgb3AoKTtcbiAgICByZXR1cm4gdmFsdWU7XG59XG5cbmV4cG9ydHMuYXBwbHlWYWxpZGF0b3IgPSBhcHBseVZhbGlkYXRvcjtcbmV4cG9ydHMuY2xlYW5WYWxpZGF0aW9uRXJyb3IgPSBjbGVhblZhbGlkYXRpb25FcnJvcjtcbmV4cG9ydHMuZm9ybWF0RXJyb3IgPSBmb3JtYXRFcnJvcjtcbmV4cG9ydHMuaXNPcHRpb25TeW1ib2wgPSBpc09wdGlvblN5bWJvbDtcbmV4cG9ydHMubWFrZUNvbW1hbmRPcHRpb24gPSBtYWtlQ29tbWFuZE9wdGlvbjtcbmV4cG9ydHMucmVyb3V0ZUFyZ3VtZW50cyA9IHJlcm91dGVBcmd1bWVudHM7XG4iLCAiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuXG5jb25zdCBzaW1wbGVLZXlSZWdFeHAgPSAvXlthLXpBLVpfXVthLXpBLVowLTlfXSokLztcbmZ1bmN0aW9uIGdldFByaW50YWJsZSh2YWx1ZSkge1xuICAgIGlmICh2YWx1ZSA9PT0gbnVsbClcbiAgICAgICAgcmV0dXJuIGBudWxsYDtcbiAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZClcbiAgICAgICAgcmV0dXJuIGB1bmRlZmluZWRgO1xuICAgIGlmICh2YWx1ZSA9PT0gYGApXG4gICAgICAgIHJldHVybiBgYW4gZW1wdHkgc3RyaW5nYDtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3ltYm9sJylcbiAgICAgICAgcmV0dXJuIGA8JHt2YWx1ZS50b1N0cmluZygpfT5gO1xuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSlcbiAgICAgICAgcmV0dXJuIGBhbiBhcnJheWA7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHZhbHVlKTtcbn1cbmZ1bmN0aW9uIGdldFByaW50YWJsZUFycmF5KHZhbHVlLCBjb25qdW5jdGlvbikge1xuICAgIGlmICh2YWx1ZS5sZW5ndGggPT09IDApXG4gICAgICAgIHJldHVybiBgbm90aGluZ2A7XG4gICAgaWYgKHZhbHVlLmxlbmd0aCA9PT0gMSlcbiAgICAgICAgcmV0dXJuIGdldFByaW50YWJsZSh2YWx1ZVswXSk7XG4gICAgY29uc3QgcmVzdCA9IHZhbHVlLnNsaWNlKDAsIC0xKTtcbiAgICBjb25zdCB0cmFpbGluZyA9IHZhbHVlW3ZhbHVlLmxlbmd0aCAtIDFdO1xuICAgIGNvbnN0IHNlcGFyYXRvciA9IHZhbHVlLmxlbmd0aCA+IDJcbiAgICAgICAgPyBgLCAke2Nvbmp1bmN0aW9ufSBgXG4gICAgICAgIDogYCAke2Nvbmp1bmN0aW9ufSBgO1xuICAgIHJldHVybiBgJHtyZXN0Lm1hcCh2YWx1ZSA9PiBnZXRQcmludGFibGUodmFsdWUpKS5qb2luKGAsIGApfSR7c2VwYXJhdG9yfSR7Z2V0UHJpbnRhYmxlKHRyYWlsaW5nKX1gO1xufVxuZnVuY3Rpb24gY29tcHV0ZUtleShzdGF0ZSwga2V5KSB7XG4gICAgdmFyIF9hLCBfYiwgX2M7XG4gICAgaWYgKHR5cGVvZiBrZXkgPT09IGBudW1iZXJgKSB7XG4gICAgICAgIHJldHVybiBgJHsoX2EgPSBzdGF0ZSA9PT0gbnVsbCB8fCBzdGF0ZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogc3RhdGUucCkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogYC5gfVske2tleX1dYDtcbiAgICB9XG4gICAgZWxzZSBpZiAoc2ltcGxlS2V5UmVnRXhwLnRlc3Qoa2V5KSkge1xuICAgICAgICByZXR1cm4gYCR7KF9iID0gc3RhdGUgPT09IG51bGwgfHwgc3RhdGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHN0YXRlLnApICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IGBgfS4ke2tleX1gO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGAkeyhfYyA9IHN0YXRlID09PSBudWxsIHx8IHN0YXRlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzdGF0ZS5wKSAhPT0gbnVsbCAmJiBfYyAhPT0gdm9pZCAwID8gX2MgOiBgLmB9WyR7SlNPTi5zdHJpbmdpZnkoa2V5KX1dYDtcbiAgICB9XG59XG5mdW5jdGlvbiBwbHVyYWwobiwgc2luZ3VsYXIsIHBsdXJhbCkge1xuICAgIHJldHVybiBuID09PSAxID8gc2luZ3VsYXIgOiBwbHVyYWw7XG59XG5cbmNvbnN0IGNvbG9yU3RyaW5nUmVnRXhwID0gL14jWzAtOWEtZl17Nn0kL2k7XG5jb25zdCBjb2xvclN0cmluZ0FscGhhUmVnRXhwID0gL14jWzAtOWEtZl17Nn0oWzAtOWEtZl17Mn0pPyQvaTtcbi8vIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vYS80NzUyMTcvODgwNzAzXG5jb25zdCBiYXNlNjRSZWdFeHAgPSAvXig/OltBLVphLXowLTkrL117NH0pKig/OltBLVphLXowLTkrL117Mn09PXxbQS1aYS16MC05Ky9dezN9PSk/JC87XG4vLyBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2EvMTQxNjYxOTQvODgwNzAzXG5jb25zdCB1dWlkNFJlZ0V4cCA9IC9eW2EtZjAtOV17OH0tW2EtZjAtOV17NH0tNFthLWYwLTldezN9LVs4OWFBYkJdW2EtZjAtOV17M30tW2EtZjAtOV17MTJ9JC9pO1xuLy8gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9hLzI4MDIyOTAxLzg4MDcwMyArIGh0dHBzOi8vd3d3LmRlYnVnZ2V4LmNvbS9yL2JsOEozNXdNS2s0OGE3dV9cbmNvbnN0IGlzbzg2MDFSZWdFeHAgPSAvXig/OlsxLTldXFxkezN9KC0/KSg/Oig/OjBbMS05XXwxWzAtMl0pXFwxKD86MFsxLTldfDFcXGR8MlswLThdKXwoPzowWzEzLTldfDFbMC0yXSlcXDEoPzoyOXwzMCl8KD86MFsxMzU3OF18MVswMl0pKD86XFwxKTMxfDAwWzEtOV18MFsxLTldXFxkfFsxMl1cXGR7Mn18Myg/OlswLTVdXFxkfDZbMC01XSkpfCg/OlsxLTldXFxkKD86MFs0OF18WzI0NjhdWzA0OF18WzEzNTc5XVsyNl0pfCg/OlsyNDY4XVswNDhdfFsxMzU3OV1bMjZdKTAwKSg/OigtPykwMig/OlxcMikyOXwtPzM2NikpVCg/OlswMV1cXGR8MlswLTNdKSg6PylbMC01XVxcZCg/OlxcM1swLTVdXFxkKT8oPzpafFsrLV1bMDFdXFxkKD86XFwzWzAtNV1cXGQpPykkLztcblxuZnVuY3Rpb24gcHVzaEVycm9yKHsgZXJyb3JzLCBwIH0gPSB7fSwgbWVzc2FnZSkge1xuICAgIGVycm9ycyA9PT0gbnVsbCB8fCBlcnJvcnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGVycm9ycy5wdXNoKGAke3AgIT09IG51bGwgJiYgcCAhPT0gdm9pZCAwID8gcCA6IGAuYH06ICR7bWVzc2FnZX1gKTtcbiAgICByZXR1cm4gZmFsc2U7XG59XG5mdW5jdGlvbiBtYWtlU2V0dGVyKHRhcmdldCwga2V5KSB7XG4gICAgcmV0dXJuICh2KSA9PiB7XG4gICAgICAgIHRhcmdldFtrZXldID0gdjtcbiAgICB9O1xufVxuZnVuY3Rpb24gbWFrZUNvZXJjaW9uRm4odGFyZ2V0LCBrZXkpIHtcbiAgICByZXR1cm4gKHYpID0+IHtcbiAgICAgICAgY29uc3QgcHJldmlvdXMgPSB0YXJnZXRba2V5XTtcbiAgICAgICAgdGFyZ2V0W2tleV0gPSB2O1xuICAgICAgICByZXR1cm4gbWFrZUNvZXJjaW9uRm4odGFyZ2V0LCBrZXkpLmJpbmQobnVsbCwgcHJldmlvdXMpO1xuICAgIH07XG59XG5mdW5jdGlvbiBtYWtlTGF6eUNvZXJjaW9uRm4oZm4sIG9yaWcsIGdlbmVyYXRvcikge1xuICAgIGNvbnN0IGNvbW1pdCA9ICgpID0+IHtcbiAgICAgICAgZm4oZ2VuZXJhdG9yKCkpO1xuICAgICAgICByZXR1cm4gcmV2ZXJ0O1xuICAgIH07XG4gICAgY29uc3QgcmV2ZXJ0ID0gKCkgPT4ge1xuICAgICAgICBmbihvcmlnKTtcbiAgICAgICAgcmV0dXJuIGNvbW1pdDtcbiAgICB9O1xuICAgIHJldHVybiBjb21taXQ7XG59XG5cbi8qKlxuICogQ3JlYXRlIGEgdmFsaWRhdG9yIHRoYXQgYWx3YXlzIHJldHVybnMgdHJ1ZSBhbmQgbmV2ZXIgcmVmaW5lcyB0aGUgdHlwZS5cbiAqL1xuZnVuY3Rpb24gaXNVbmtub3duKCkge1xuICAgIHJldHVybiBtYWtlVmFsaWRhdG9yKHtcbiAgICAgICAgdGVzdDogKHZhbHVlLCBzdGF0ZSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0sXG4gICAgfSk7XG59XG5mdW5jdGlvbiBpc0xpdGVyYWwoZXhwZWN0ZWQpIHtcbiAgICByZXR1cm4gbWFrZVZhbGlkYXRvcih7XG4gICAgICAgIHRlc3Q6ICh2YWx1ZSwgc3RhdGUpID0+IHtcbiAgICAgICAgICAgIGlmICh2YWx1ZSAhPT0gZXhwZWN0ZWQpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHB1c2hFcnJvcihzdGF0ZSwgYEV4cGVjdGVkICR7Z2V0UHJpbnRhYmxlKGV4cGVjdGVkKX0gKGdvdCAke2dldFByaW50YWJsZSh2YWx1ZSl9KWApO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0sXG4gICAgfSk7XG59XG4vKipcbiAqIENyZWF0ZSBhIHZhbGlkYXRvciB0aGF0IG9ubHkgcmV0dXJucyB0cnVlIHdoZW4gdGhlIHRlc3RlZCB2YWx1ZSBpcyBhIHN0cmluZy5cbiAqIFJlZmluZXMgdGhlIHR5cGUgdG8gYHN0cmluZ2AuXG4gKi9cbmZ1bmN0aW9uIGlzU3RyaW5nKCkge1xuICAgIHJldHVybiBtYWtlVmFsaWRhdG9yKHtcbiAgICAgICAgdGVzdDogKHZhbHVlLCBzdGF0ZSkgPT4ge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gYHN0cmluZ2ApXG4gICAgICAgICAgICAgICAgcmV0dXJuIHB1c2hFcnJvcihzdGF0ZSwgYEV4cGVjdGVkIGEgc3RyaW5nIChnb3QgJHtnZXRQcmludGFibGUodmFsdWUpfSlgKTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9LFxuICAgIH0pO1xufVxuZnVuY3Rpb24gaXNFbnVtKGVudW1TcGVjKSB7XG4gICAgY29uc3QgdmFsdWVzQXJyYXkgPSBBcnJheS5pc0FycmF5KGVudW1TcGVjKSA/IGVudW1TcGVjIDogT2JqZWN0LnZhbHVlcyhlbnVtU3BlYyk7XG4gICAgY29uc3QgaXNBbHBoYU51bSA9IHZhbHVlc0FycmF5LmV2ZXJ5KGl0ZW0gPT4gdHlwZW9mIGl0ZW0gPT09ICdzdHJpbmcnIHx8IHR5cGVvZiBpdGVtID09PSAnbnVtYmVyJyk7XG4gICAgY29uc3QgdmFsdWVzID0gbmV3IFNldCh2YWx1ZXNBcnJheSk7XG4gICAgaWYgKHZhbHVlcy5zaXplID09PSAxKVxuICAgICAgICByZXR1cm4gaXNMaXRlcmFsKFsuLi52YWx1ZXNdWzBdKTtcbiAgICByZXR1cm4gbWFrZVZhbGlkYXRvcih7XG4gICAgICAgIHRlc3Q6ICh2YWx1ZSwgc3RhdGUpID0+IHtcbiAgICAgICAgICAgIGlmICghdmFsdWVzLmhhcyh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICBpZiAoaXNBbHBoYU51bSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHVzaEVycm9yKHN0YXRlLCBgRXhwZWN0ZWQgb25lIG9mICR7Z2V0UHJpbnRhYmxlQXJyYXkodmFsdWVzQXJyYXksIGBvcmApfSAoZ290ICR7Z2V0UHJpbnRhYmxlKHZhbHVlKX0pYCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHVzaEVycm9yKHN0YXRlLCBgRXhwZWN0ZWQgYSB2YWxpZCBlbnVtZXJhdGlvbiB2YWx1ZSAoZ290ICR7Z2V0UHJpbnRhYmxlKHZhbHVlKX0pYCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0sXG4gICAgfSk7XG59XG5jb25zdCBCT09MRUFOX0NPRVJDSU9OUyA9IG5ldyBNYXAoW1xuICAgIFtgdHJ1ZWAsIHRydWVdLFxuICAgIFtgVHJ1ZWAsIHRydWVdLFxuICAgIFtgMWAsIHRydWVdLFxuICAgIFsxLCB0cnVlXSxcbiAgICBbYGZhbHNlYCwgZmFsc2VdLFxuICAgIFtgRmFsc2VgLCBmYWxzZV0sXG4gICAgW2AwYCwgZmFsc2VdLFxuICAgIFswLCBmYWxzZV0sXG5dKTtcbi8qKlxuICogQ3JlYXRlIGEgdmFsaWRhdG9yIHRoYXQgb25seSByZXR1cm5zIHRydWUgd2hlbiB0aGUgdGVzdGVkIHZhbHVlIGlzIGFcbiAqIGJvb2xlYW4uIFJlZmluZXMgdGhlIHR5cGUgdG8gYGJvb2xlYW5gLlxuICpcbiAqIFN1cHBvcnRzIGNvZXJjaW9uOlxuICogLSAndHJ1ZScgLyAnVHJ1ZScgLyAnMScgLyAxIHdpbGwgdHVybiB0byBgdHJ1ZWBcbiAqIC0gJ2ZhbHNlJyAvICdGYWxzZScgLyAnMCcgLyAwIHdpbGwgdHVybiB0byBgZmFsc2VgXG4gKi9cbmZ1bmN0aW9uIGlzQm9vbGVhbigpIHtcbiAgICByZXR1cm4gbWFrZVZhbGlkYXRvcih7XG4gICAgICAgIHRlc3Q6ICh2YWx1ZSwgc3RhdGUpID0+IHtcbiAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09IGBib29sZWFuYCkge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgKHN0YXRlID09PSBudWxsIHx8IHN0YXRlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzdGF0ZS5jb2VyY2lvbnMpICE9PSBgdW5kZWZpbmVkYCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIChzdGF0ZSA9PT0gbnVsbCB8fCBzdGF0ZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogc3RhdGUuY29lcmNpb24pID09PSBgdW5kZWZpbmVkYClcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwdXNoRXJyb3Ioc3RhdGUsIGBVbmJvdW5kIGNvZXJjaW9uIHJlc3VsdGApO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjb2VyY2lvbiA9IEJPT0xFQU5fQ09FUkNJT05TLmdldCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgY29lcmNpb24gIT09IGB1bmRlZmluZWRgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS5jb2VyY2lvbnMucHVzaChbKF9hID0gc3RhdGUucCkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogYC5gLCBzdGF0ZS5jb2VyY2lvbi5iaW5kKG51bGwsIGNvZXJjaW9uKV0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHB1c2hFcnJvcihzdGF0ZSwgYEV4cGVjdGVkIGEgYm9vbGVhbiAoZ290ICR7Z2V0UHJpbnRhYmxlKHZhbHVlKX0pYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSxcbiAgICB9KTtcbn1cbi8qKlxuICogQ3JlYXRlIGEgdmFsaWRhdG9yIHRoYXQgb25seSByZXR1cm5zIHRydWUgd2hlbiB0aGUgdGVzdGVkIHZhbHVlIGlzIGFcbiAqIG51bWJlciAoaW5jbHVkaW5nIGZsb2F0aW5nIG51bWJlcnM7IHVzZSBgY2FzY2FkZWAgYW5kIGBpc0ludGVnZXJgIHRvXG4gKiByZXN0cmljdCB0aGUgcmFuZ2UgZnVydGhlcikuIFJlZmluZXMgdGhlIHR5cGUgdG8gYG51bWJlcmAuXG4gKlxuICogU3VwcG9ydHMgY29lcmNpb24uXG4gKi9cbmZ1bmN0aW9uIGlzTnVtYmVyKCkge1xuICAgIHJldHVybiBtYWtlVmFsaWRhdG9yKHtcbiAgICAgICAgdGVzdDogKHZhbHVlLCBzdGF0ZSkgPT4ge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gYG51bWJlcmApIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIChzdGF0ZSA9PT0gbnVsbCB8fCBzdGF0ZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogc3RhdGUuY29lcmNpb25zKSAhPT0gYHVuZGVmaW5lZGApIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiAoc3RhdGUgPT09IG51bGwgfHwgc3RhdGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHN0YXRlLmNvZXJjaW9uKSA9PT0gYHVuZGVmaW5lZGApXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHVzaEVycm9yKHN0YXRlLCBgVW5ib3VuZCBjb2VyY2lvbiByZXN1bHRgKTtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGNvZXJjaW9uO1xuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSBgc3RyaW5nYCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHZhbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsID0gSlNPTi5wYXJzZSh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXRjaCAoX2IpIHsgfVxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2UgY2hlY2sgYWdhaW5zdCBKU09OLnN0cmluZ2lmeSB0aGF0IHRoZSBvdXRwdXQgaXMgdGhlIHNhbWUgdG8gZW5zdXJlIHRoYXQgdGhlIG51bWJlciBjYW4gYmUgc2FmZWx5IHJlcHJlc2VudGVkIGluIEpTXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHZhbCA9PT0gYG51bWJlcmApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoSlNPTi5zdHJpbmdpZnkodmFsKSA9PT0gdmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29lcmNpb24gPSB2YWw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHVzaEVycm9yKHN0YXRlLCBgUmVjZWl2ZWQgYSBudW1iZXIgdGhhdCBjYW4ndCBiZSBzYWZlbHkgcmVwcmVzZW50ZWQgYnkgdGhlIHJ1bnRpbWUgKCR7dmFsdWV9KWApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGNvZXJjaW9uICE9PSBgdW5kZWZpbmVkYCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUuY29lcmNpb25zLnB1c2goWyhfYSA9IHN0YXRlLnApICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IGAuYCwgc3RhdGUuY29lcmNpb24uYmluZChudWxsLCBjb2VyY2lvbildKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBwdXNoRXJyb3Ioc3RhdGUsIGBFeHBlY3RlZCBhIG51bWJlciAoZ290ICR7Z2V0UHJpbnRhYmxlKHZhbHVlKX0pYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSxcbiAgICB9KTtcbn1cbi8qKlxuICogQ3JlYXRlIGEgdmFsaWRhdG9yIHRoYXQgb25seSByZXR1cm5zIHRydWUgd2hlbiB0aGUgdGVzdGVkIHZhbHVlIGlzIGFcbiAqIHZhbGlkIGRhdGUuIFJlZmluZXMgdGhlIHR5cGUgdG8gYERhdGVgLlxuICpcbiAqIFN1cHBvcnRzIGNvZXJjaW9uIHZpYSBvbmUgb2YgdGhlIGZvbGxvd2luZyBmb3JtYXRzOlxuICogLSBJU084NjAwMSBzdHJpbmdzXG4gKiAtIFVuaXggdGltZXN0YW1wc1xuICovXG5mdW5jdGlvbiBpc0RhdGUoKSB7XG4gICAgcmV0dXJuIG1ha2VWYWxpZGF0b3Ioe1xuICAgICAgICB0ZXN0OiAodmFsdWUsIHN0YXRlKSA9PiB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICBpZiAoISh2YWx1ZSBpbnN0YW5jZW9mIERhdGUpKSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiAoc3RhdGUgPT09IG51bGwgfHwgc3RhdGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHN0YXRlLmNvZXJjaW9ucykgIT09IGB1bmRlZmluZWRgKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgKHN0YXRlID09PSBudWxsIHx8IHN0YXRlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzdGF0ZS5jb2VyY2lvbikgPT09IGB1bmRlZmluZWRgKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHB1c2hFcnJvcihzdGF0ZSwgYFVuYm91bmQgY29lcmNpb24gcmVzdWx0YCk7XG4gICAgICAgICAgICAgICAgICAgIGxldCBjb2VyY2lvbjtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gYHN0cmluZ2AgJiYgaXNvODYwMVJlZ0V4cC50ZXN0KHZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29lcmNpb24gPSBuZXcgRGF0ZSh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgdGltZXN0YW1wO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gYHN0cmluZ2ApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdmFsO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCA9IEpTT04ucGFyc2UodmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXRjaCAoX2IpIHsgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsID09PSBgbnVtYmVyYCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lc3RhbXAgPSB2YWw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSBgbnVtYmVyYCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVzdGFtcCA9IHZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB0aW1lc3RhbXAgIT09IGB1bmRlZmluZWRgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKE51bWJlci5pc1NhZmVJbnRlZ2VyKHRpbWVzdGFtcCkgfHwgIU51bWJlci5pc1NhZmVJbnRlZ2VyKHRpbWVzdGFtcCAqIDEwMDApKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZXJjaW9uID0gbmV3IERhdGUodGltZXN0YW1wICogMTAwMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHVzaEVycm9yKHN0YXRlLCBgUmVjZWl2ZWQgYSB0aW1lc3RhbXAgdGhhdCBjYW4ndCBiZSBzYWZlbHkgcmVwcmVzZW50ZWQgYnkgdGhlIHJ1bnRpbWUgKCR7dmFsdWV9KWApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGNvZXJjaW9uICE9PSBgdW5kZWZpbmVkYCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUuY29lcmNpb25zLnB1c2goWyhfYSA9IHN0YXRlLnApICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IGAuYCwgc3RhdGUuY29lcmNpb24uYmluZChudWxsLCBjb2VyY2lvbildKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBwdXNoRXJyb3Ioc3RhdGUsIGBFeHBlY3RlZCBhIGRhdGUgKGdvdCAke2dldFByaW50YWJsZSh2YWx1ZSl9KWApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0sXG4gICAgfSk7XG59XG4vKipcbiAqIENyZWF0ZSBhIHZhbGlkYXRvciB0aGF0IG9ubHkgcmV0dXJucyB0cnVlIHdoZW4gdGhlIHRlc3RlZCB2YWx1ZSBpcyBhblxuICogYXJyYXkgd2hvc2UgYWxsIHZhbHVlcyBtYXRjaCB0aGUgcHJvdmlkZWQgc3Vic3BlYy4gUmVmaW5lcyB0aGUgdHlwZSB0b1xuICogYEFycmF5PFQ+YCwgd2l0aCBgVGAgYmVpbmcgdGhlIHN1YnNwZWMgaW5mZXJyZWQgdHlwZS5cbiAqXG4gKiBTdXBwb3J0cyBjb2VyY2lvbiBpZiB0aGUgYGRlbGltaXRlcmAgb3B0aW9uIGlzIHNldCwgaW4gd2hpY2ggY2FzZSBzdHJpbmdzXG4gKiB3aWxsIGJlIHNwbGl0IGFjY29yZGluZ2x5LlxuICovXG5mdW5jdGlvbiBpc0FycmF5KHNwZWMsIHsgZGVsaW1pdGVyIH0gPSB7fSkge1xuICAgIHJldHVybiBtYWtlVmFsaWRhdG9yKHtcbiAgICAgICAgdGVzdDogKHZhbHVlLCBzdGF0ZSkgPT4ge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgY29uc3Qgb3JpZ2luYWxWYWx1ZSA9IHZhbHVlO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gYHN0cmluZ2AgJiYgdHlwZW9mIGRlbGltaXRlciAhPT0gYHVuZGVmaW5lZGApIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIChzdGF0ZSA9PT0gbnVsbCB8fCBzdGF0ZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogc3RhdGUuY29lcmNpb25zKSAhPT0gYHVuZGVmaW5lZGApIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiAoc3RhdGUgPT09IG51bGwgfHwgc3RhdGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHN0YXRlLmNvZXJjaW9uKSA9PT0gYHVuZGVmaW5lZGApXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHVzaEVycm9yKHN0YXRlLCBgVW5ib3VuZCBjb2VyY2lvbiByZXN1bHRgKTtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5zcGxpdChkZWxpbWl0ZXIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghQXJyYXkuaXNBcnJheSh2YWx1ZSkpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHB1c2hFcnJvcihzdGF0ZSwgYEV4cGVjdGVkIGFuIGFycmF5IChnb3QgJHtnZXRQcmludGFibGUodmFsdWUpfSlgKTtcbiAgICAgICAgICAgIGxldCB2YWxpZCA9IHRydWU7XG4gICAgICAgICAgICBmb3IgKGxldCB0ID0gMCwgVCA9IHZhbHVlLmxlbmd0aDsgdCA8IFQ7ICsrdCkge1xuICAgICAgICAgICAgICAgIHZhbGlkID0gc3BlYyh2YWx1ZVt0XSwgT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBzdGF0ZSksIHsgcDogY29tcHV0ZUtleShzdGF0ZSwgdCksIGNvZXJjaW9uOiBtYWtlQ29lcmNpb25Gbih2YWx1ZSwgdCkgfSkpICYmIHZhbGlkO1xuICAgICAgICAgICAgICAgIGlmICghdmFsaWQgJiYgKHN0YXRlID09PSBudWxsIHx8IHN0YXRlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzdGF0ZS5lcnJvcnMpID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHZhbHVlICE9PSBvcmlnaW5hbFZhbHVlKVxuICAgICAgICAgICAgICAgIHN0YXRlLmNvZXJjaW9ucy5wdXNoKFsoX2EgPSBzdGF0ZS5wKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBgLmAsIHN0YXRlLmNvZXJjaW9uLmJpbmQobnVsbCwgdmFsdWUpXSk7XG4gICAgICAgICAgICByZXR1cm4gdmFsaWQ7XG4gICAgICAgIH0sXG4gICAgfSk7XG59XG4vKipcbiAqIENyZWF0ZSBhIHZhbGlkYXRvciB0aGF0IG9ubHkgcmV0dXJucyB0cnVlIHdoZW4gdGhlIHRlc3RlZCB2YWx1ZSBpcyBhblxuICogc2V0IHdob3NlIGFsbCB2YWx1ZXMgbWF0Y2ggdGhlIHByb3ZpZGVkIHN1YnNwZWMuIFJlZmluZXMgdGhlIHR5cGUgdG9cbiAqIGBTZXQ8VD5gLCB3aXRoIGBUYCBiZWluZyB0aGUgc3Vic3BlYyBpbmZlcnJlZCB0eXBlLlxuICpcbiAqIFN1cHBvcnRzIGNvZXJjaW9uIGZyb20gYXJyYXlzIChvciBhbnl0aGluZyB0aGF0IGNhbiBiZSBjb2VyY2VkIGludG8gYW5cbiAqIGFycmF5KS5cbiAqL1xuZnVuY3Rpb24gaXNTZXQoc3BlYywgeyBkZWxpbWl0ZXIgfSA9IHt9KSB7XG4gICAgY29uc3QgaXNBcnJheVZhbGlkYXRvciA9IGlzQXJyYXkoc3BlYywgeyBkZWxpbWl0ZXIgfSk7XG4gICAgcmV0dXJuIG1ha2VWYWxpZGF0b3Ioe1xuICAgICAgICB0ZXN0OiAodmFsdWUsIHN0YXRlKSA9PiB7XG4gICAgICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICAgICAgaWYgKE9iamVjdC5nZXRQcm90b3R5cGVPZih2YWx1ZSkudG9TdHJpbmcoKSA9PT0gYFtvYmplY3QgU2V0XWApIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIChzdGF0ZSA9PT0gbnVsbCB8fCBzdGF0ZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogc3RhdGUuY29lcmNpb25zKSAhPT0gYHVuZGVmaW5lZGApIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiAoc3RhdGUgPT09IG51bGwgfHwgc3RhdGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHN0YXRlLmNvZXJjaW9uKSA9PT0gYHVuZGVmaW5lZGApXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHVzaEVycm9yKHN0YXRlLCBgVW5ib3VuZCBjb2VyY2lvbiByZXN1bHRgKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgb3JpZ2luYWxWYWx1ZXMgPSBbLi4udmFsdWVdO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjb2VyY2VkVmFsdWVzID0gWy4uLnZhbHVlXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFpc0FycmF5VmFsaWRhdG9yKGNvZXJjZWRWYWx1ZXMsIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUpLCB7IGNvZXJjaW9uOiB1bmRlZmluZWQgfSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB1cGRhdGVWYWx1ZSA9ICgpID0+IGNvZXJjZWRWYWx1ZXMuc29tZSgodmFsLCB0KSA9PiB2YWwgIT09IG9yaWdpbmFsVmFsdWVzW3RdKVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBuZXcgU2V0KGNvZXJjZWRWYWx1ZXMpXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHZhbHVlO1xuICAgICAgICAgICAgICAgICAgICBzdGF0ZS5jb2VyY2lvbnMucHVzaChbKF9hID0gc3RhdGUucCkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogYC5gLCBtYWtlTGF6eUNvZXJjaW9uRm4oc3RhdGUuY29lcmNpb24sIHZhbHVlLCB1cGRhdGVWYWx1ZSldKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBsZXQgdmFsaWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHN1YlZhbHVlIG9mIHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWxpZCA9IHNwZWMoc3ViVmFsdWUsIE9iamVjdC5hc3NpZ24oe30sIHN0YXRlKSkgJiYgdmFsaWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXZhbGlkICYmIChzdGF0ZSA9PT0gbnVsbCB8fCBzdGF0ZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogc3RhdGUuZXJyb3JzKSA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbGlkO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0eXBlb2YgKHN0YXRlID09PSBudWxsIHx8IHN0YXRlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzdGF0ZS5jb2VyY2lvbnMpICE9PSBgdW5kZWZpbmVkYCkge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgKHN0YXRlID09PSBudWxsIHx8IHN0YXRlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzdGF0ZS5jb2VyY2lvbikgPT09IGB1bmRlZmluZWRgKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHVzaEVycm9yKHN0YXRlLCBgVW5ib3VuZCBjb2VyY2lvbiByZXN1bHRgKTtcbiAgICAgICAgICAgICAgICBjb25zdCBzdG9yZSA9IHsgdmFsdWUgfTtcbiAgICAgICAgICAgICAgICBpZiAoIWlzQXJyYXlWYWxpZGF0b3IodmFsdWUsIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUpLCB7IGNvZXJjaW9uOiBtYWtlQ29lcmNpb25GbihzdG9yZSwgYHZhbHVlYCkgfSkpKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgc3RhdGUuY29lcmNpb25zLnB1c2goWyhfYiA9IHN0YXRlLnApICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IGAuYCwgbWFrZUxhenlDb2VyY2lvbkZuKHN0YXRlLmNvZXJjaW9uLCB2YWx1ZSwgKCkgPT4gbmV3IFNldChzdG9yZS52YWx1ZSkpXSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcHVzaEVycm9yKHN0YXRlLCBgRXhwZWN0ZWQgYSBzZXQgKGdvdCAke2dldFByaW50YWJsZSh2YWx1ZSl9KWApO1xuICAgICAgICB9XG4gICAgfSk7XG59XG4vKipcbiAqIENyZWF0ZSBhIHZhbGlkYXRvciB0aGF0IG9ubHkgcmV0dXJucyB0cnVlIHdoZW4gdGhlIHRlc3RlZCB2YWx1ZSBpcyBhblxuICogbWFwIHdob3NlIGFsbCB2YWx1ZXMgbWF0Y2ggdGhlIHByb3ZpZGVkIHN1YnNwZWNzLiBSZWZpbmVzIHRoZSB0eXBlIHRvXG4gKiBgTWFwPFUsIFY+YCwgd2l0aCBgVWAgYmVpbmcgdGhlIGtleSBzdWJzcGVjIGluZmVycmVkIHR5cGUgYW5kIGBWYCBiZWluZ1xuICogdGhlIHZhbHVlIHN1YnNwZWMgaW5mZXJyZWQgdHlwZS5cbiAqXG4gKiBTdXBwb3J0cyBjb2VyY2lvbiBmcm9tIGFycmF5IG9mIHR1cGxlcyAob3IgYW55dGhpbmcgdGhhdCBjYW4gYmUgY29lcmNlZCBpbnRvXG4gKiBhbiBhcnJheSBvZiB0dXBsZXMpLlxuICovXG5mdW5jdGlvbiBpc01hcChrZXlTcGVjLCB2YWx1ZVNwZWMpIHtcbiAgICBjb25zdCBpc0FycmF5VmFsaWRhdG9yID0gaXNBcnJheShpc1R1cGxlKFtrZXlTcGVjLCB2YWx1ZVNwZWNdKSk7XG4gICAgY29uc3QgaXNSZWNvcmRWYWxpZGF0b3IgPSBpc1JlY29yZCh2YWx1ZVNwZWMsIHsga2V5czoga2V5U3BlYyB9KTtcbiAgICByZXR1cm4gbWFrZVZhbGlkYXRvcih7XG4gICAgICAgIHRlc3Q6ICh2YWx1ZSwgc3RhdGUpID0+IHtcbiAgICAgICAgICAgIHZhciBfYSwgX2IsIF9jO1xuICAgICAgICAgICAgaWYgKE9iamVjdC5nZXRQcm90b3R5cGVPZih2YWx1ZSkudG9TdHJpbmcoKSA9PT0gYFtvYmplY3QgTWFwXWApIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIChzdGF0ZSA9PT0gbnVsbCB8fCBzdGF0ZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogc3RhdGUuY29lcmNpb25zKSAhPT0gYHVuZGVmaW5lZGApIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiAoc3RhdGUgPT09IG51bGwgfHwgc3RhdGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHN0YXRlLmNvZXJjaW9uKSA9PT0gYHVuZGVmaW5lZGApXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHVzaEVycm9yKHN0YXRlLCBgVW5ib3VuZCBjb2VyY2lvbiByZXN1bHRgKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgb3JpZ2luYWxWYWx1ZXMgPSBbLi4udmFsdWVdO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjb2VyY2VkVmFsdWVzID0gWy4uLnZhbHVlXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFpc0FycmF5VmFsaWRhdG9yKGNvZXJjZWRWYWx1ZXMsIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUpLCB7IGNvZXJjaW9uOiB1bmRlZmluZWQgfSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB1cGRhdGVWYWx1ZSA9ICgpID0+IGNvZXJjZWRWYWx1ZXMuc29tZSgodmFsLCB0KSA9PiB2YWxbMF0gIT09IG9yaWdpbmFsVmFsdWVzW3RdWzBdIHx8IHZhbFsxXSAhPT0gb3JpZ2luYWxWYWx1ZXNbdF1bMV0pXG4gICAgICAgICAgICAgICAgICAgICAgICA/IG5ldyBNYXAoY29lcmNlZFZhbHVlcylcbiAgICAgICAgICAgICAgICAgICAgICAgIDogdmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIHN0YXRlLmNvZXJjaW9ucy5wdXNoKFsoX2EgPSBzdGF0ZS5wKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBgLmAsIG1ha2VMYXp5Q29lcmNpb25GbihzdGF0ZS5jb2VyY2lvbiwgdmFsdWUsIHVwZGF0ZVZhbHVlKV0pO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCB2YWxpZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgW2tleSwgc3ViVmFsdWVdIG9mIHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWxpZCA9IGtleVNwZWMoa2V5LCBPYmplY3QuYXNzaWduKHt9LCBzdGF0ZSkpICYmIHZhbGlkO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF2YWxpZCAmJiAoc3RhdGUgPT09IG51bGwgfHwgc3RhdGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHN0YXRlLmVycm9ycykgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWQgPSB2YWx1ZVNwZWMoc3ViVmFsdWUsIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUpLCB7IHA6IGNvbXB1dGVLZXkoc3RhdGUsIGtleSkgfSkpICYmIHZhbGlkO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF2YWxpZCAmJiAoc3RhdGUgPT09IG51bGwgfHwgc3RhdGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHN0YXRlLmVycm9ycykgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB2YWxpZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodHlwZW9mIChzdGF0ZSA9PT0gbnVsbCB8fCBzdGF0ZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogc3RhdGUuY29lcmNpb25zKSAhPT0gYHVuZGVmaW5lZGApIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIChzdGF0ZSA9PT0gbnVsbCB8fCBzdGF0ZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogc3RhdGUuY29lcmNpb24pID09PSBgdW5kZWZpbmVkYClcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHB1c2hFcnJvcihzdGF0ZSwgYFVuYm91bmQgY29lcmNpb24gcmVzdWx0YCk7XG4gICAgICAgICAgICAgICAgY29uc3Qgc3RvcmUgPSB7IHZhbHVlIH07XG4gICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghaXNBcnJheVZhbGlkYXRvcih2YWx1ZSwgT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBzdGF0ZSksIHsgY29lcmNpb246IHVuZGVmaW5lZCB9KSkpXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHN0YXRlLmNvZXJjaW9ucy5wdXNoKFsoX2IgPSBzdGF0ZS5wKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiBgLmAsIG1ha2VMYXp5Q29lcmNpb25GbihzdGF0ZS5jb2VyY2lvbiwgdmFsdWUsICgpID0+IG5ldyBNYXAoc3RvcmUudmFsdWUpKV0pO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghaXNSZWNvcmRWYWxpZGF0b3IodmFsdWUsIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUpLCB7IGNvZXJjaW9uOiBtYWtlQ29lcmNpb25GbihzdG9yZSwgYHZhbHVlYCkgfSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBzdGF0ZS5jb2VyY2lvbnMucHVzaChbKF9jID0gc3RhdGUucCkgIT09IG51bGwgJiYgX2MgIT09IHZvaWQgMCA/IF9jIDogYC5gLCBtYWtlTGF6eUNvZXJjaW9uRm4oc3RhdGUuY29lcmNpb24sIHZhbHVlLCAoKSA9PiBuZXcgTWFwKE9iamVjdC5lbnRyaWVzKHN0b3JlLnZhbHVlKSkpXSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBwdXNoRXJyb3Ioc3RhdGUsIGBFeHBlY3RlZCBhIG1hcCAoZ290ICR7Z2V0UHJpbnRhYmxlKHZhbHVlKX0pYCk7XG4gICAgICAgIH1cbiAgICB9KTtcbn1cbi8qKlxuICogQ3JlYXRlIGEgdmFsaWRhdG9yIHRoYXQgb25seSByZXR1cm5zIHRydWUgd2hlbiB0aGUgdGVzdGVkIHZhbHVlIGlzIGFcbiAqIHR1cGxlIHdob3NlIGVhY2ggdmFsdWUgbWF0Y2hlcyB0aGUgY29ycmVzcG9uZGluZyBzdWJzcGVjLiBSZWZpbmVzIHRoZSB0eXBlXG4gKiBpbnRvIGEgdHVwbGUgd2hvc2UgZWFjaCBpdGVtIGhhcyB0aGUgdHlwZSBpbmZlcnJlZCBieSB0aGUgY29ycmVzcG9uZGluZ1xuICogdHVwbGUuXG4gKlxuICogU3VwcG9ydHMgY29lcmNpb24gaWYgdGhlIGBkZWxpbWl0ZXJgIG9wdGlvbiBpcyBzZXQsIGluIHdoaWNoIGNhc2Ugc3RyaW5nc1xuICogd2lsbCBiZSBzcGxpdCBhY2NvcmRpbmdseS5cbiAqL1xuZnVuY3Rpb24gaXNUdXBsZShzcGVjLCB7IGRlbGltaXRlciB9ID0ge30pIHtcbiAgICBjb25zdCBsZW5ndGhWYWxpZGF0b3IgPSBoYXNFeGFjdExlbmd0aChzcGVjLmxlbmd0aCk7XG4gICAgcmV0dXJuIG1ha2VWYWxpZGF0b3Ioe1xuICAgICAgICB0ZXN0OiAodmFsdWUsIHN0YXRlKSA9PiB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSBgc3RyaW5nYCAmJiB0eXBlb2YgZGVsaW1pdGVyICE9PSBgdW5kZWZpbmVkYCkge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgKHN0YXRlID09PSBudWxsIHx8IHN0YXRlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzdGF0ZS5jb2VyY2lvbnMpICE9PSBgdW5kZWZpbmVkYCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIChzdGF0ZSA9PT0gbnVsbCB8fCBzdGF0ZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogc3RhdGUuY29lcmNpb24pID09PSBgdW5kZWZpbmVkYClcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwdXNoRXJyb3Ioc3RhdGUsIGBVbmJvdW5kIGNvZXJjaW9uIHJlc3VsdGApO1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnNwbGl0KGRlbGltaXRlcik7XG4gICAgICAgICAgICAgICAgICAgIHN0YXRlLmNvZXJjaW9ucy5wdXNoKFsoX2EgPSBzdGF0ZS5wKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBgLmAsIHN0YXRlLmNvZXJjaW9uLmJpbmQobnVsbCwgdmFsdWUpXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHZhbHVlKSlcbiAgICAgICAgICAgICAgICByZXR1cm4gcHVzaEVycm9yKHN0YXRlLCBgRXhwZWN0ZWQgYSB0dXBsZSAoZ290ICR7Z2V0UHJpbnRhYmxlKHZhbHVlKX0pYCk7XG4gICAgICAgICAgICBsZXQgdmFsaWQgPSBsZW5ndGhWYWxpZGF0b3IodmFsdWUsIE9iamVjdC5hc3NpZ24oe30sIHN0YXRlKSk7XG4gICAgICAgICAgICBmb3IgKGxldCB0ID0gMCwgVCA9IHZhbHVlLmxlbmd0aDsgdCA8IFQgJiYgdCA8IHNwZWMubGVuZ3RoOyArK3QpIHtcbiAgICAgICAgICAgICAgICB2YWxpZCA9IHNwZWNbdF0odmFsdWVbdF0sIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUpLCB7IHA6IGNvbXB1dGVLZXkoc3RhdGUsIHQpLCBjb2VyY2lvbjogbWFrZUNvZXJjaW9uRm4odmFsdWUsIHQpIH0pKSAmJiB2YWxpZDtcbiAgICAgICAgICAgICAgICBpZiAoIXZhbGlkICYmIChzdGF0ZSA9PT0gbnVsbCB8fCBzdGF0ZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogc3RhdGUuZXJyb3JzKSA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB2YWxpZDtcbiAgICAgICAgfSxcbiAgICB9KTtcbn1cbi8qKlxuICogQ3JlYXRlIGEgdmFsaWRhdG9yIHRoYXQgb25seSByZXR1cm5zIHRydWUgd2hlbiB0aGUgdGVzdGVkIHZhbHVlIGlzIGFuXG4gKiBvYmplY3Qgd2l0aCBhbnkgYW1vdW50IG9mIHByb3BlcnRpZXMgdGhhdCBtdXN0IGFsbCBtYXRjaCB0aGUgcHJvdmlkZWRcbiAqIHN1YnNwZWMuIFJlZmluZXMgdGhlIHR5cGUgdG8gYFJlY29yZDxzdHJpbmcsIFQ+YCwgd2l0aCBgVGAgYmVpbmcgdGhlXG4gKiBzdWJzcGVjIGluZmVycmVkIHR5cGUuXG4gKlxuICogS2V5cyBjYW4gYmUgb3B0aW9uYWxseSB2YWxpZGF0ZWQgYXMgd2VsbCBieSB1c2luZyB0aGUgYGtleXNgIG9wdGlvbmFsXG4gKiBzdWJzcGVjIHBhcmFtZXRlci5cbiAqL1xuZnVuY3Rpb24gaXNSZWNvcmQoc3BlYywgeyBrZXlzOiBrZXlTcGVjID0gbnVsbCwgfSA9IHt9KSB7XG4gICAgY29uc3QgaXNBcnJheVZhbGlkYXRvciA9IGlzQXJyYXkoaXNUdXBsZShba2V5U3BlYyAhPT0gbnVsbCAmJiBrZXlTcGVjICE9PSB2b2lkIDAgPyBrZXlTcGVjIDogaXNTdHJpbmcoKSwgc3BlY10pKTtcbiAgICByZXR1cm4gbWFrZVZhbGlkYXRvcih7XG4gICAgICAgIHRlc3Q6ICh2YWx1ZSwgc3RhdGUpID0+IHtcbiAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgKHN0YXRlID09PSBudWxsIHx8IHN0YXRlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzdGF0ZS5jb2VyY2lvbnMpICE9PSBgdW5kZWZpbmVkYCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIChzdGF0ZSA9PT0gbnVsbCB8fCBzdGF0ZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogc3RhdGUuY29lcmNpb24pID09PSBgdW5kZWZpbmVkYClcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwdXNoRXJyb3Ioc3RhdGUsIGBVbmJvdW5kIGNvZXJjaW9uIHJlc3VsdGApO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWlzQXJyYXlWYWxpZGF0b3IodmFsdWUsIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUpLCB7IGNvZXJjaW9uOiB1bmRlZmluZWQgfSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IE9iamVjdC5mcm9tRW50cmllcyh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIHN0YXRlLmNvZXJjaW9ucy5wdXNoKFsoX2EgPSBzdGF0ZS5wKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBgLmAsIHN0YXRlLmNvZXJjaW9uLmJpbmQobnVsbCwgdmFsdWUpXSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09IGBvYmplY3RgIHx8IHZhbHVlID09PSBudWxsKVxuICAgICAgICAgICAgICAgIHJldHVybiBwdXNoRXJyb3Ioc3RhdGUsIGBFeHBlY3RlZCBhbiBvYmplY3QgKGdvdCAke2dldFByaW50YWJsZSh2YWx1ZSl9KWApO1xuICAgICAgICAgICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKHZhbHVlKTtcbiAgICAgICAgICAgIGxldCB2YWxpZCA9IHRydWU7XG4gICAgICAgICAgICBmb3IgKGxldCB0ID0gMCwgVCA9IGtleXMubGVuZ3RoOyB0IDwgVCAmJiAodmFsaWQgfHwgKHN0YXRlID09PSBudWxsIHx8IHN0YXRlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzdGF0ZS5lcnJvcnMpICE9IG51bGwpOyArK3QpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBrZXkgPSBrZXlzW3RdO1xuICAgICAgICAgICAgICAgIGNvbnN0IHN1YiA9IHZhbHVlW2tleV07XG4gICAgICAgICAgICAgICAgaWYgKGtleSA9PT0gYF9fcHJvdG9fX2AgfHwga2V5ID09PSBgY29uc3RydWN0b3JgKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhbGlkID0gcHVzaEVycm9yKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUpLCB7IHA6IGNvbXB1dGVLZXkoc3RhdGUsIGtleSkgfSksIGBVbnNhZmUgcHJvcGVydHkgbmFtZWApO1xuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGtleVNwZWMgIT09IG51bGwgJiYgIWtleVNwZWMoa2V5LCBzdGF0ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsaWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICghc3BlYyhzdWIsIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUpLCB7IHA6IGNvbXB1dGVLZXkoc3RhdGUsIGtleSksIGNvZXJjaW9uOiBtYWtlQ29lcmNpb25Gbih2YWx1ZSwga2V5KSB9KSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsaWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHZhbGlkO1xuICAgICAgICB9LFxuICAgIH0pO1xufVxuLyoqXG4gKiBAZGVwcmVjYXRlZCBSZXBsYWNlIGBpc0RpY3RgIGJ5IGBpc1JlY29yZGBcbiAqL1xuZnVuY3Rpb24gaXNEaWN0KHNwZWMsIG9wdHMgPSB7fSkge1xuICAgIHJldHVybiBpc1JlY29yZChzcGVjLCBvcHRzKTtcbn1cbi8qKlxuICogQ3JlYXRlIGEgdmFsaWRhdG9yIHRoYXQgb25seSByZXR1cm5zIHRydWUgd2hlbiB0aGUgdGVzdGVkIHZhbHVlIGlzIGFuXG4gKiBvYmplY3Qgd2hvc2UgYWxsIHByb3BlcnRpZXMgbWF0Y2ggdGhlaXIgY29ycmVzcG9uZGluZyBzdWJzcGVjLiBSZWZpbmVzXG4gKiB0aGUgdHlwZSBpbnRvIGFuIG9iamVjdCB3aG9zZSBlYWNoIHByb3BlcnR5IGhhcyB0aGUgdHlwZSBpbmZlcnJlZCBieSB0aGVcbiAqIGNvcnJlc3BvbmRpbmcgc3Vic3BlYy5cbiAqXG4gKiBVbmxpa2UgYHQuaXNQYXJ0aWFsYCwgYHQuaXNPYmplY3RgIGRvZXNuJ3QgYWxsb3cgZXh0cmFuZW91cyBwcm9wZXJ0aWVzIGJ5XG4gKiBkZWZhdWx0LiBUaGlzIGJlaGF2aW91ciBjYW4gYmUgYWx0ZXJlZCBieSB1c2luZyB0aGUgYGV4dHJhYCBvcHRpb25hbFxuICogc3Vic3BlYyBwYXJhbWV0ZXIsIHdoaWNoIHdpbGwgYmUgY2FsbGVkIHRvIHZhbGlkYXRlIGFuIG9iamVjdCBvbmx5XG4gKiBjb250YWluaW5nIHRoZSBleHRyYW5lb3VzIHByb3BlcnRpZXMuXG4gKlxuICogQ2FsbGluZyBgdC5pc09iamVjdCguLi4sIHtleHRyYTogdC5pc1JlY29yZCh0LmlzVW5rbm93bigpKX0pYCBpc1xuICogZXNzZW50aWFsbHkgdGhlIHNhbWUgYXMgY2FsbGluZyBgdC5pc1BhcnRpYWwoLi4uKWAuXG4gKi9cbmZ1bmN0aW9uIGlzT2JqZWN0KHByb3BzLCB7IGV4dHJhOiBleHRyYVNwZWMgPSBudWxsLCB9ID0ge30pIHtcbiAgICBjb25zdCBzcGVjS2V5cyA9IE9iamVjdC5rZXlzKHByb3BzKTtcbiAgICBjb25zdCB2YWxpZGF0b3IgPSBtYWtlVmFsaWRhdG9yKHtcbiAgICAgICAgdGVzdDogKHZhbHVlLCBzdGF0ZSkgPT4ge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gYG9iamVjdGAgfHwgdmFsdWUgPT09IG51bGwpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHB1c2hFcnJvcihzdGF0ZSwgYEV4cGVjdGVkIGFuIG9iamVjdCAoZ290ICR7Z2V0UHJpbnRhYmxlKHZhbHVlKX0pYCk7XG4gICAgICAgICAgICBjb25zdCBrZXlzID0gbmV3IFNldChbLi4uc3BlY0tleXMsIC4uLk9iamVjdC5rZXlzKHZhbHVlKV0pO1xuICAgICAgICAgICAgY29uc3QgZXh0cmEgPSB7fTtcbiAgICAgICAgICAgIGxldCB2YWxpZCA9IHRydWU7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzKSB7XG4gICAgICAgICAgICAgICAgaWYgKGtleSA9PT0gYGNvbnN0cnVjdG9yYCB8fCBrZXkgPT09IGBfX3Byb3RvX19gKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhbGlkID0gcHVzaEVycm9yKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUpLCB7IHA6IGNvbXB1dGVLZXkoc3RhdGUsIGtleSkgfSksIGBVbnNhZmUgcHJvcGVydHkgbmFtZWApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3BlYyA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChwcm9wcywga2V5KVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBwcm9wc1trZXldXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3ViID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHZhbHVlLCBrZXkpXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHZhbHVlW2tleV1cbiAgICAgICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHNwZWMgIT09IGB1bmRlZmluZWRgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWxpZCA9IHNwZWMoc3ViLCBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIHN0YXRlKSwgeyBwOiBjb21wdXRlS2V5KHN0YXRlLCBrZXkpLCBjb2VyY2lvbjogbWFrZUNvZXJjaW9uRm4odmFsdWUsIGtleSkgfSkpICYmIHZhbGlkO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGV4dHJhU3BlYyA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWQgPSBwdXNoRXJyb3IoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBzdGF0ZSksIHsgcDogY29tcHV0ZUtleShzdGF0ZSwga2V5KSB9KSwgYEV4dHJhbmVvdXMgcHJvcGVydHkgKGdvdCAke2dldFByaW50YWJsZShzdWIpfSlgKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHRyYSwga2V5LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXQ6ICgpID0+IHN1YixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXQ6IG1ha2VTZXR0ZXIodmFsdWUsIGtleSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICghdmFsaWQgJiYgKHN0YXRlID09PSBudWxsIHx8IHN0YXRlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzdGF0ZS5lcnJvcnMpID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGV4dHJhU3BlYyAhPT0gbnVsbCAmJiAodmFsaWQgfHwgKHN0YXRlID09PSBudWxsIHx8IHN0YXRlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzdGF0ZS5lcnJvcnMpICE9IG51bGwpKVxuICAgICAgICAgICAgICAgIHZhbGlkID0gZXh0cmFTcGVjKGV4dHJhLCBzdGF0ZSkgJiYgdmFsaWQ7XG4gICAgICAgICAgICByZXR1cm4gdmFsaWQ7XG4gICAgICAgIH0sXG4gICAgfSk7XG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24odmFsaWRhdG9yLCB7XG4gICAgICAgIHByb3BlcnRpZXM6IHByb3BzLFxuICAgIH0pO1xufVxuLyoqXG4gKiBDcmVhdGUgYSB2YWxpZGF0b3IgdGhhdCBvbmx5IHJldHVybnMgdHJ1ZSB3aGVuIHRoZSB0ZXN0ZWQgdmFsdWUgaXMgYW5cbiAqIG9iamVjdCB3aG9zZSBhbGwgcHJvcGVydGllcyBtYXRjaCB0aGVpciBjb3JyZXNwb25kaW5nIHN1YnNwZWMuIFJlZmluZXNcbiAqIHRoZSB0eXBlIGludG8gYW4gb2JqZWN0IHdob3NlIGVhY2ggcHJvcGVydHkgaGFzIHRoZSB0eXBlIGluZmVycmVkIGJ5IHRoZVxuICogY29ycmVzcG9uZGluZyBzdWJzcGVjLlxuICpcbiAqIFVubGlrZSBgdC5pc09iamVjdGAsIGB0LmlzUGFydGlhbGAgYWxsb3dzIGV4dHJhbmVvdXMgcHJvcGVydGllcy4gVGhlXG4gKiByZXN1bHRpbmcgdHlwZSB3aWxsIHJlZmxlY3QgdGhpcyBiZWhhdmlvdXIgYnkgaW5jbHVkaW5nIGFuIGluZGV4XG4gKiBzaWduYXR1cmUgKGVhY2ggZXh0cmFuZW91cyBwcm9wZXJ0eSBiZWluZyB0eXBlZCBgdW5rbm93bmApLlxuICpcbiAqIENhbGxpbmcgYHQuaXNQYXJ0aWFsKC4uLilgIGlzIGVzc2VudGlhbGx5IHRoZSBzYW1lIGFzIGNhbGxpbmdcbiAqIGB0LmlzT2JqZWN0KC4uLiwge2V4dHJhOiB0LmlzUmVjb3JkKHQuaXNVbmtub3duKCkpfSlgLlxuICovXG5mdW5jdGlvbiBpc1BhcnRpYWwocHJvcHMpIHtcbiAgICByZXR1cm4gaXNPYmplY3QocHJvcHMsIHsgZXh0cmE6IGlzUmVjb3JkKGlzVW5rbm93bigpKSB9KTtcbn1cbi8qKlxuICogQ3JlYXRlIGEgdmFsaWRhdG9yIHRoYXQgb25seSByZXR1cm5zIHRydWUgd2hlbiB0aGUgdGVzdGVkIHZhbHVlIGlzIGFuXG4gKiBvYmplY3Qgd2hvc2UgcHJvdG90eXBlIGlzIGRlcml2ZWQgZnJvbSB0aGUgZ2l2ZW4gY2xhc3MuIFJlZmluZXMgdGhlIHR5cGVcbiAqIGludG8gYSBjbGFzcyBpbnN0YW5jZS5cbiAqL1xuY29uc3QgaXNJbnN0YW5jZU9mID0gKGNvbnN0cnVjdG9yKSA9PiBtYWtlVmFsaWRhdG9yKHtcbiAgICB0ZXN0OiAodmFsdWUsIHN0YXRlKSA9PiB7XG4gICAgICAgIGlmICghKHZhbHVlIGluc3RhbmNlb2YgY29uc3RydWN0b3IpKVxuICAgICAgICAgICAgcmV0dXJuIHB1c2hFcnJvcihzdGF0ZSwgYEV4cGVjdGVkIGFuIGluc3RhbmNlIG9mICR7Y29uc3RydWN0b3IubmFtZX0gKGdvdCAke2dldFByaW50YWJsZSh2YWx1ZSl9KWApO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9LFxufSk7XG4vKipcbiAqIENyZWF0ZSBhIHZhbGlkYXRvciB0aGF0IG9ubHkgcmV0dXJucyB0cnVlIHdoZW4gdGhlIHRlc3RlZCB2YWx1ZSBpcyBhblxuICogb2JqZWN0IG1hdGNoaW5nIGFueSBvZiB0aGUgcHJvdmlkZWQgc3Vic3BlY3MuIElmIHRoZSBvcHRpb25hbCBgZXhjbHVzaXZlYFxuICogcGFyYW1ldGVyIGlzIHNldCB0byBgdHJ1ZWAsIHRoZSBiZWhhdmlvdXIgY2hhbmdlcyBzbyB0aGF0IHRoZSB2YWxpZGF0b3JcbiAqIG9ubHkgcmV0dXJucyB0cnVlIHdoZW4gZXhhY3RseSBvbmUgc3Vic3BlYyBtYXRjaGVzLlxuICovXG5jb25zdCBpc09uZU9mID0gKHNwZWNzLCB7IGV4Y2x1c2l2ZSA9IGZhbHNlLCB9ID0ge30pID0+IG1ha2VWYWxpZGF0b3Ioe1xuICAgIHRlc3Q6ICh2YWx1ZSwgc3RhdGUpID0+IHtcbiAgICAgICAgdmFyIF9hLCBfYiwgX2M7XG4gICAgICAgIGNvbnN0IG1hdGNoZXMgPSBbXTtcbiAgICAgICAgY29uc3QgZXJyb3JCdWZmZXIgPSB0eXBlb2YgKHN0YXRlID09PSBudWxsIHx8IHN0YXRlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzdGF0ZS5lcnJvcnMpICE9PSBgdW5kZWZpbmVkYFxuICAgICAgICAgICAgPyBbXSA6IHVuZGVmaW5lZDtcbiAgICAgICAgZm9yIChsZXQgdCA9IDAsIFQgPSBzcGVjcy5sZW5ndGg7IHQgPCBUOyArK3QpIHtcbiAgICAgICAgICAgIGNvbnN0IHN1YkVycm9ycyA9IHR5cGVvZiAoc3RhdGUgPT09IG51bGwgfHwgc3RhdGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHN0YXRlLmVycm9ycykgIT09IGB1bmRlZmluZWRgXG4gICAgICAgICAgICAgICAgPyBbXSA6IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGNvbnN0IHN1YkNvZXJjaW9ucyA9IHR5cGVvZiAoc3RhdGUgPT09IG51bGwgfHwgc3RhdGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHN0YXRlLmNvZXJjaW9ucykgIT09IGB1bmRlZmluZWRgXG4gICAgICAgICAgICAgICAgPyBbXSA6IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGlmIChzcGVjc1t0XSh2YWx1ZSwgT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBzdGF0ZSksIHsgZXJyb3JzOiBzdWJFcnJvcnMsIGNvZXJjaW9uczogc3ViQ29lcmNpb25zLCBwOiBgJHsoX2EgPSBzdGF0ZSA9PT0gbnVsbCB8fCBzdGF0ZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogc3RhdGUucCkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogYC5gfSMke3QgKyAxfWAgfSkpKSB7XG4gICAgICAgICAgICAgICAgbWF0Y2hlcy5wdXNoKFtgIyR7dCArIDF9YCwgc3ViQ29lcmNpb25zXSk7XG4gICAgICAgICAgICAgICAgaWYgKCFleGNsdXNpdmUpIHtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgZXJyb3JCdWZmZXIgPT09IG51bGwgfHwgZXJyb3JCdWZmZXIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGVycm9yQnVmZmVyLnB1c2goc3ViRXJyb3JzWzBdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAobWF0Y2hlcy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgIGNvbnN0IFssIHN1YkNvZXJjaW9uc10gPSBtYXRjaGVzWzBdO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBzdWJDb2VyY2lvbnMgIT09IGB1bmRlZmluZWRgKVxuICAgICAgICAgICAgICAgIChfYiA9IHN0YXRlID09PSBudWxsIHx8IHN0YXRlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzdGF0ZS5jb2VyY2lvbnMpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5wdXNoKC4uLnN1YkNvZXJjaW9ucyk7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobWF0Y2hlcy5sZW5ndGggPiAxKVxuICAgICAgICAgICAgcHVzaEVycm9yKHN0YXRlLCBgRXhwZWN0ZWQgdG8gbWF0Y2ggZXhhY3RseSBhIHNpbmdsZSBwcmVkaWNhdGUgKG1hdGNoZWQgJHttYXRjaGVzLmpvaW4oYCwgYCl9KWApO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICAoX2MgPSBzdGF0ZSA9PT0gbnVsbCB8fCBzdGF0ZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogc3RhdGUuZXJyb3JzKSA9PT0gbnVsbCB8fCBfYyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2MucHVzaCguLi5lcnJvckJ1ZmZlcik7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9LFxufSk7XG5cbmZ1bmN0aW9uIG1ha2VUcmFpdCh2YWx1ZSkge1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9O1xufVxuZnVuY3Rpb24gbWFrZVZhbGlkYXRvcih7IHRlc3QgfSkge1xuICAgIHJldHVybiBtYWtlVHJhaXQodGVzdCkoKTtcbn1cbmNsYXNzIFR5cGVBc3NlcnRpb25FcnJvciBleHRlbmRzIEVycm9yIHtcbiAgICBjb25zdHJ1Y3Rvcih7IGVycm9ycyB9ID0ge30pIHtcbiAgICAgICAgbGV0IGVycm9yTWVzc2FnZSA9IGBUeXBlIG1pc21hdGNoYDtcbiAgICAgICAgaWYgKGVycm9ycyAmJiBlcnJvcnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgZXJyb3JNZXNzYWdlICs9IGBcXG5gO1xuICAgICAgICAgICAgZm9yIChjb25zdCBlcnJvciBvZiBlcnJvcnMpIHtcbiAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2UgKz0gYFxcbi0gJHtlcnJvcn1gO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHN1cGVyKGVycm9yTWVzc2FnZSk7XG4gICAgfVxufVxuLyoqXG4gKiBDaGVjayB0aGF0IHRoZSBzcGVjaWZpZWQgdmFsdWUgbWF0Y2hlcyB0aGUgZ2l2ZW4gdmFsaWRhdG9yLCBhbmQgdGhyb3dzIGFuXG4gKiBleGNlcHRpb24gaWYgaXQgZG9lc24ndC4gUmVmaW5lIHRoZSB0eXBlIGlmIGl0IHBhc3Nlcy5cbiAqL1xuZnVuY3Rpb24gYXNzZXJ0KHZhbCwgdmFsaWRhdG9yKSB7XG4gICAgaWYgKCF2YWxpZGF0b3IodmFsKSkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUFzc2VydGlvbkVycm9yKCk7XG4gICAgfVxufVxuLyoqXG4gKiBDaGVjayB0aGF0IHRoZSBzcGVjaWZpZWQgdmFsdWUgbWF0Y2hlcyB0aGUgZ2l2ZW4gdmFsaWRhdG9yLCBhbmQgdGhyb3dzIGFuXG4gKiBleGNlcHRpb24gaWYgaXQgZG9lc24ndC4gUmVmaW5lIHRoZSB0eXBlIGlmIGl0IHBhc3Nlcy5cbiAqXG4gKiBUaHJvd24gZXhjZXB0aW9ucyBpbmNsdWRlIGRldGFpbHMgYWJvdXQgd2hhdCBleGFjdGx5IGxvb2tzIGludmFsaWQgaW4gdGhlXG4gKiB0ZXN0ZWQgdmFsdWUuXG4gKi9cbmZ1bmN0aW9uIGFzc2VydFdpdGhFcnJvcnModmFsLCB2YWxpZGF0b3IpIHtcbiAgICBjb25zdCBlcnJvcnMgPSBbXTtcbiAgICBpZiAoIXZhbGlkYXRvcih2YWwsIHsgZXJyb3JzIH0pKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlQXNzZXJ0aW9uRXJyb3IoeyBlcnJvcnMgfSk7XG4gICAgfVxufVxuLyoqXG4gKiBDb21waWxlLXRpbWUgb25seS4gUmVmaW5lIHRoZSB0eXBlIGFzIGlmIHRoZSB2YWxpZGF0b3Igd2FzIG1hdGNoaW5nIHRoZVxuICogdGVzdGVkIHZhbHVlLCBidXQgZG9lc24ndCBhY3R1YWxseSBydW4gaXQuIFNpbWlsYXIgdG8gdGhlIGNsYXNzaWMgYGFzYFxuICogb3BlcmF0b3IgaW4gVHlwZVNjcmlwdC5cbiAqL1xuZnVuY3Rpb24gc29mdEFzc2VydCh2YWwsIHZhbGlkYXRvcikge1xuICAgIC8vIEl0J3MgYSBzb2Z0IGFzc2VydDsgd2UgdGVsbCBUeXBlU2NyaXB0IGFib3V0IHRoZSB0eXBlLCBidXQgd2UgZG9uJ3QgbmVlZCB0byBjaGVjayBpdFxufVxuZnVuY3Rpb24gYXModmFsdWUsIHZhbGlkYXRvciwgeyBjb2VyY2UgPSBmYWxzZSwgZXJyb3JzOiBzdG9yZUVycm9ycywgdGhyb3c6IHRocm93cyB9ID0ge30pIHtcbiAgICBjb25zdCBlcnJvcnMgPSBzdG9yZUVycm9ycyA/IFtdIDogdW5kZWZpbmVkO1xuICAgIGlmICghY29lcmNlKSB7XG4gICAgICAgIGlmICh2YWxpZGF0b3IodmFsdWUsIHsgZXJyb3JzIH0pKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhyb3dzID8gdmFsdWUgOiB7IHZhbHVlLCBlcnJvcnM6IHVuZGVmaW5lZCB9O1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKCF0aHJvd3MpIHtcbiAgICAgICAgICAgIHJldHVybiB7IHZhbHVlOiB1bmRlZmluZWQsIGVycm9yczogZXJyb3JzICE9PSBudWxsICYmIGVycm9ycyAhPT0gdm9pZCAwID8gZXJyb3JzIDogdHJ1ZSB9O1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVBc3NlcnRpb25FcnJvcih7IGVycm9ycyB9KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBzdGF0ZSA9IHsgdmFsdWUgfTtcbiAgICBjb25zdCBjb2VyY2lvbiA9IG1ha2VDb2VyY2lvbkZuKHN0YXRlLCBgdmFsdWVgKTtcbiAgICBjb25zdCBjb2VyY2lvbnMgPSBbXTtcbiAgICBpZiAoIXZhbGlkYXRvcih2YWx1ZSwgeyBlcnJvcnMsIGNvZXJjaW9uLCBjb2VyY2lvbnMgfSkpIHtcbiAgICAgICAgaWYgKCF0aHJvd3MpIHtcbiAgICAgICAgICAgIHJldHVybiB7IHZhbHVlOiB1bmRlZmluZWQsIGVycm9yczogZXJyb3JzICE9PSBudWxsICYmIGVycm9ycyAhPT0gdm9pZCAwID8gZXJyb3JzIDogdHJ1ZSB9O1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVBc3NlcnRpb25FcnJvcih7IGVycm9ycyB9KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBmb3IgKGNvbnN0IFssIGFwcGx5XSBvZiBjb2VyY2lvbnMpXG4gICAgICAgIGFwcGx5KCk7XG4gICAgaWYgKHRocm93cykge1xuICAgICAgICByZXR1cm4gc3RhdGUudmFsdWU7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICByZXR1cm4geyB2YWx1ZTogc3RhdGUudmFsdWUsIGVycm9yczogdW5kZWZpbmVkIH07XG4gICAgfVxufVxuLyoqXG4gKiBDcmVhdGUgYW5kIHJldHVybiBhIG5ldyBmdW5jdGlvbiB0aGF0IGFwcGx5IHRoZSBnaXZlbiB2YWxpZGF0b3JzIHRvIGVhY2hcbiAqIGNvcnJlc3BvbmRpbmcgYXJndW1lbnQgcGFzc2VkIHRvIHRoZSBmdW5jdGlvbiBhbmQgdGhyb3dzIGFuIGV4Y2VwdGlvbiBpblxuICogY2FzZSBvZiBhIG1pc21hdGNoLlxuICovXG5mdW5jdGlvbiBmbih2YWxpZGF0b3JzLCBmbikge1xuICAgIGNvbnN0IGlzVmFsaWRBcmdMaXN0ID0gaXNUdXBsZSh2YWxpZGF0b3JzKTtcbiAgICByZXR1cm4gKCguLi5hcmdzKSA9PiB7XG4gICAgICAgIGNvbnN0IGNoZWNrID0gaXNWYWxpZEFyZ0xpc3QoYXJncyk7XG4gICAgICAgIGlmICghY2hlY2spXG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUFzc2VydGlvbkVycm9yKCk7XG4gICAgICAgIHJldHVybiBmbiguLi5hcmdzKTtcbiAgICB9KTtcbn1cblxuLyoqXG4gKiBDcmVhdGUgYSB2YWxpZGF0b3IgdGhhdCBjaGVja3MgdGhhdCB0aGUgdGVzdGVkIGFycmF5IG9yIHN0cmluZyBoYXMgYXQgbGVhc3RcbiAqIHRoZSBzcGVjaWZpZWQgbGVuZ3RoLlxuICovXG5mdW5jdGlvbiBoYXNNaW5MZW5ndGgobGVuZ3RoKSB7XG4gICAgcmV0dXJuIG1ha2VWYWxpZGF0b3Ioe1xuICAgICAgICB0ZXN0OiAodmFsdWUsIHN0YXRlKSA9PiB7XG4gICAgICAgICAgICBpZiAoISh2YWx1ZS5sZW5ndGggPj0gbGVuZ3RoKSlcbiAgICAgICAgICAgICAgICByZXR1cm4gcHVzaEVycm9yKHN0YXRlLCBgRXhwZWN0ZWQgdG8gaGF2ZSBhIGxlbmd0aCBvZiBhdCBsZWFzdCAke2xlbmd0aH0gZWxlbWVudHMgKGdvdCAke3ZhbHVlLmxlbmd0aH0pYCk7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSxcbiAgICB9KTtcbn1cbi8qKlxuICogQ3JlYXRlIGEgdmFsaWRhdG9yIHRoYXQgY2hlY2tzIHRoYXQgdGhlIHRlc3RlZCBhcnJheSBvciBzdHJpbmcgaGFzIGF0IG1vc3RcbiAqIHRoZSBzcGVjaWZpZWQgbGVuZ3RoLlxuICovXG5mdW5jdGlvbiBoYXNNYXhMZW5ndGgobGVuZ3RoKSB7XG4gICAgcmV0dXJuIG1ha2VWYWxpZGF0b3Ioe1xuICAgICAgICB0ZXN0OiAodmFsdWUsIHN0YXRlKSA9PiB7XG4gICAgICAgICAgICBpZiAoISh2YWx1ZS5sZW5ndGggPD0gbGVuZ3RoKSlcbiAgICAgICAgICAgICAgICByZXR1cm4gcHVzaEVycm9yKHN0YXRlLCBgRXhwZWN0ZWQgdG8gaGF2ZSBhIGxlbmd0aCBvZiBhdCBtb3N0ICR7bGVuZ3RofSBlbGVtZW50cyAoZ290ICR7dmFsdWUubGVuZ3RofSlgKTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9LFxuICAgIH0pO1xufVxuLyoqXG4gKiBDcmVhdGUgYSB2YWxpZGF0b3IgdGhhdCBjaGVja3MgdGhhdCB0aGUgdGVzdGVkIGFycmF5IG9yIHN0cmluZyBoYXMgZXhhY3RseVxuICogdGhlIHNwZWNpZmllZCBsZW5ndGguXG4gKi9cbmZ1bmN0aW9uIGhhc0V4YWN0TGVuZ3RoKGxlbmd0aCkge1xuICAgIHJldHVybiBtYWtlVmFsaWRhdG9yKHtcbiAgICAgICAgdGVzdDogKHZhbHVlLCBzdGF0ZSkgPT4ge1xuICAgICAgICAgICAgaWYgKCEodmFsdWUubGVuZ3RoID09PSBsZW5ndGgpKVxuICAgICAgICAgICAgICAgIHJldHVybiBwdXNoRXJyb3Ioc3RhdGUsIGBFeHBlY3RlZCB0byBoYXZlIGEgbGVuZ3RoIG9mIGV4YWN0bHkgJHtsZW5ndGh9IGVsZW1lbnRzIChnb3QgJHt2YWx1ZS5sZW5ndGh9KWApO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0sXG4gICAgfSk7XG59XG4vKipcbiAqIENyZWF0ZSBhIHZhbGlkYXRvciB0aGF0IGNoZWNrcyB0aGF0IHRoZSB0ZXN0ZWQgYXJyYXkgb25seSBjb250YWlucyB1bmlxdWVcbiAqIGVsZW1lbnRzLiBUaGUgb3B0aW9uYWwgYG1hcGAgcGFyYW1ldGVyIGxldHMgeW91IGRlZmluZSBhIHRyYW5zZm9ybSB0b1xuICogYXBwbHkgYmVmb3JlIG1ha2luZyB0aGUgY2hlY2sgKHRoZSByZXN1bHQgb2YgdGhpcyB0cmFuc2Zvcm0gd2lsbCBiZVxuICogZGlzY2FyZGVkIGFmdGVyd2FyZHMpLlxuICovXG5mdW5jdGlvbiBoYXNVbmlxdWVJdGVtcyh7IG1hcCwgfSA9IHt9KSB7XG4gICAgcmV0dXJuIG1ha2VWYWxpZGF0b3Ioe1xuICAgICAgICB0ZXN0OiAodmFsdWUsIHN0YXRlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzZXQgPSBuZXcgU2V0KCk7XG4gICAgICAgICAgICBjb25zdCBkdXAgPSBuZXcgU2V0KCk7XG4gICAgICAgICAgICBmb3IgKGxldCB0ID0gMCwgVCA9IHZhbHVlLmxlbmd0aDsgdCA8IFQ7ICsrdCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHN1YiA9IHZhbHVlW3RdO1xuICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IHR5cGVvZiBtYXAgIT09IGB1bmRlZmluZWRgXG4gICAgICAgICAgICAgICAgICAgID8gbWFwKHN1YilcbiAgICAgICAgICAgICAgICAgICAgOiBzdWI7XG4gICAgICAgICAgICAgICAgaWYgKHNldC5oYXMoa2V5KSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZHVwLmhhcyhrZXkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgIHB1c2hFcnJvcihzdGF0ZSwgYEV4cGVjdGVkIHRvIGNvbnRhaW4gdW5pcXVlIGVsZW1lbnRzOyBnb3QgYSBkdXBsaWNhdGUgd2l0aCAke2dldFByaW50YWJsZSh2YWx1ZSl9YCk7XG4gICAgICAgICAgICAgICAgICAgIGR1cC5hZGQoa2V5KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHNldC5hZGQoa2V5KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZHVwLnNpemUgPT09IDA7XG4gICAgICAgIH0sXG4gICAgfSk7XG59XG4vKipcbiAqIENyZWF0ZSBhIHZhbGlkYXRvciB0aGF0IGNoZWNrcyB0aGF0IHRoZSB0ZXN0ZWQgbnVtYmVyIGlzIHN0cmljdGx5IGxlc3MgdGhhbiAwLlxuICovXG5mdW5jdGlvbiBpc05lZ2F0aXZlKCkge1xuICAgIHJldHVybiBtYWtlVmFsaWRhdG9yKHtcbiAgICAgICAgdGVzdDogKHZhbHVlLCBzdGF0ZSkgPT4ge1xuICAgICAgICAgICAgaWYgKCEodmFsdWUgPD0gMCkpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHB1c2hFcnJvcihzdGF0ZSwgYEV4cGVjdGVkIHRvIGJlIG5lZ2F0aXZlIChnb3QgJHt2YWx1ZX0pYCk7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSxcbiAgICB9KTtcbn1cbi8qKlxuICogQ3JlYXRlIGEgdmFsaWRhdG9yIHRoYXQgY2hlY2tzIHRoYXQgdGhlIHRlc3RlZCBudW1iZXIgaXMgZXF1YWwgb3IgZ3JlYXRlclxuICogdGhhbiAwLlxuICovXG5mdW5jdGlvbiBpc1Bvc2l0aXZlKCkge1xuICAgIHJldHVybiBtYWtlVmFsaWRhdG9yKHtcbiAgICAgICAgdGVzdDogKHZhbHVlLCBzdGF0ZSkgPT4ge1xuICAgICAgICAgICAgaWYgKCEodmFsdWUgPj0gMCkpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHB1c2hFcnJvcihzdGF0ZSwgYEV4cGVjdGVkIHRvIGJlIHBvc2l0aXZlIChnb3QgJHt2YWx1ZX0pYCk7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSxcbiAgICB9KTtcbn1cbi8qKlxuICogQ3JlYXRlIGEgdmFsaWRhdG9yIHRoYXQgY2hlY2tzIHRoYXQgdGhlIHRlc3RlZCBudW1iZXIgaXMgZXF1YWwgb3IgZ3JlYXRlclxuICogdGhhbiB0aGUgc3BlY2lmaWVkIHJlZmVyZW5jZS5cbiAqL1xuZnVuY3Rpb24gaXNBdExlYXN0KG4pIHtcbiAgICByZXR1cm4gbWFrZVZhbGlkYXRvcih7XG4gICAgICAgIHRlc3Q6ICh2YWx1ZSwgc3RhdGUpID0+IHtcbiAgICAgICAgICAgIGlmICghKHZhbHVlID49IG4pKVxuICAgICAgICAgICAgICAgIHJldHVybiBwdXNoRXJyb3Ioc3RhdGUsIGBFeHBlY3RlZCB0byBiZSBhdCBsZWFzdCAke259IChnb3QgJHt2YWx1ZX0pYCk7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSxcbiAgICB9KTtcbn1cbi8qKlxuICogQ3JlYXRlIGEgdmFsaWRhdG9yIHRoYXQgY2hlY2tzIHRoYXQgdGhlIHRlc3RlZCBudW1iZXIgaXMgZXF1YWwgb3Igc21hbGxlclxuICogdGhhbiB0aGUgc3BlY2lmaWVkIHJlZmVyZW5jZS5cbiAqL1xuZnVuY3Rpb24gaXNBdE1vc3Qobikge1xuICAgIHJldHVybiBtYWtlVmFsaWRhdG9yKHtcbiAgICAgICAgdGVzdDogKHZhbHVlLCBzdGF0ZSkgPT4ge1xuICAgICAgICAgICAgaWYgKCEodmFsdWUgPD0gbikpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHB1c2hFcnJvcihzdGF0ZSwgYEV4cGVjdGVkIHRvIGJlIGF0IG1vc3QgJHtufSAoZ290ICR7dmFsdWV9KWApO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0sXG4gICAgfSk7XG59XG4vKipcbiAqIENyZWF0ZSBhIHZhbGlkYXRvciB0aGF0IGNoZWNrcyB0aGF0IHRoZSB0ZXN0ZWQgbnVtYmVyIGlzIGJldHdlZW4gdGhlXG4gKiBzcGVjaWZpZWQgcmVmZXJlbmNlcyAoaW5jbHVkaW5nIHRoZSB1cHBlciBib3VuZGFyeSkuXG4gKi9cbmZ1bmN0aW9uIGlzSW5JbmNsdXNpdmVSYW5nZShhLCBiKSB7XG4gICAgcmV0dXJuIG1ha2VWYWxpZGF0b3Ioe1xuICAgICAgICB0ZXN0OiAodmFsdWUsIHN0YXRlKSA9PiB7XG4gICAgICAgICAgICBpZiAoISh2YWx1ZSA+PSBhICYmIHZhbHVlIDw9IGIpKVxuICAgICAgICAgICAgICAgIHJldHVybiBwdXNoRXJyb3Ioc3RhdGUsIGBFeHBlY3RlZCB0byBiZSBpbiB0aGUgWyR7YX07ICR7Yn1dIHJhbmdlIChnb3QgJHt2YWx1ZX0pYCk7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSxcbiAgICB9KTtcbn1cbi8qKlxuICogQ3JlYXRlIGEgdmFsaWRhdG9yIHRoYXQgY2hlY2tzIHRoYXQgdGhlIHRlc3RlZCBudW1iZXIgaXMgYmV0d2VlbiB0aGVcbiAqIHNwZWNpZmllZCByZWZlcmVuY2VzIChleGNsdWRpbmcgdGhlIHVwcGVyIGJvdW5kYXJ5KS5cbiAqL1xuZnVuY3Rpb24gaXNJbkV4Y2x1c2l2ZVJhbmdlKGEsIGIpIHtcbiAgICByZXR1cm4gbWFrZVZhbGlkYXRvcih7XG4gICAgICAgIHRlc3Q6ICh2YWx1ZSwgc3RhdGUpID0+IHtcbiAgICAgICAgICAgIGlmICghKHZhbHVlID49IGEgJiYgdmFsdWUgPCBiKSlcbiAgICAgICAgICAgICAgICByZXR1cm4gcHVzaEVycm9yKHN0YXRlLCBgRXhwZWN0ZWQgdG8gYmUgaW4gdGhlIFske2F9OyAke2J9WyByYW5nZSAoZ290ICR7dmFsdWV9KWApO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0sXG4gICAgfSk7XG59XG4vKipcbiAqIENyZWF0ZSBhIHZhbGlkYXRvciB0aGF0IGNoZWNrcyB0aGF0IHRoZSB0ZXN0ZWQgbnVtYmVyIGlzIGFuIGludGVnZXIuXG4gKlxuICogQnkgZGVmYXVsdCBUeXBhbmlvbiB3aWxsIGFsc28gY2hlY2sgdGhhdCBpdCdzIGEgKnNhZmUqIGludGVnZXIuIEZvciBleGFtcGxlLFxuICogMl41MyB3b3VsZG4ndCBiZSBhIHNhZmUgaW50ZWdlciBiZWNhdXNlIDJeNTMrMSB3b3VsZCBiZSByb3VuZGVkIHRvIDJeNTMsXG4gKiB3aGljaCBjb3VsZCBwdXQgeW91ciBhcHBsaWNhdGlvbnMgYXQgcmlzayB3aGVuIHVzZWQgaW4gbG9vcHMuXG4gKi9cbmZ1bmN0aW9uIGlzSW50ZWdlcih7IHVuc2FmZSA9IGZhbHNlLCB9ID0ge30pIHtcbiAgICByZXR1cm4gbWFrZVZhbGlkYXRvcih7XG4gICAgICAgIHRlc3Q6ICh2YWx1ZSwgc3RhdGUpID0+IHtcbiAgICAgICAgICAgIGlmICh2YWx1ZSAhPT0gTWF0aC5yb3VuZCh2YWx1ZSkpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHB1c2hFcnJvcihzdGF0ZSwgYEV4cGVjdGVkIHRvIGJlIGFuIGludGVnZXIgKGdvdCAke3ZhbHVlfSlgKTtcbiAgICAgICAgICAgIGlmICghdW5zYWZlICYmICFOdW1iZXIuaXNTYWZlSW50ZWdlcih2YWx1ZSkpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHB1c2hFcnJvcihzdGF0ZSwgYEV4cGVjdGVkIHRvIGJlIGEgc2FmZSBpbnRlZ2VyIChnb3QgJHt2YWx1ZX0pYCk7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSxcbiAgICB9KTtcbn1cbi8qKlxuICogQ3JlYXRlIGEgdmFsaWRhdG9yIHRoYXQgY2hlY2tzIHRoYXQgdGhlIHRlc3RlZCBzdHJpbmcgbWF0Y2hlcyB0aGUgZ2l2ZW5cbiAqIHJlZ3VsYXIgZXhwcmVzc2lvbi5cbiAqL1xuZnVuY3Rpb24gbWF0Y2hlc1JlZ0V4cChyZWdFeHApIHtcbiAgICByZXR1cm4gbWFrZVZhbGlkYXRvcih7XG4gICAgICAgIHRlc3Q6ICh2YWx1ZSwgc3RhdGUpID0+IHtcbiAgICAgICAgICAgIGlmICghcmVnRXhwLnRlc3QodmFsdWUpKVxuICAgICAgICAgICAgICAgIHJldHVybiBwdXNoRXJyb3Ioc3RhdGUsIGBFeHBlY3RlZCB0byBtYXRjaCB0aGUgcGF0dGVybiAke3JlZ0V4cC50b1N0cmluZygpfSAoZ290ICR7Z2V0UHJpbnRhYmxlKHZhbHVlKX0pYCk7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSxcbiAgICB9KTtcbn1cbi8qKlxuICogQ3JlYXRlIGEgdmFsaWRhdG9yIHRoYXQgY2hlY2tzIHRoYXQgdGhlIHRlc3RlZCBzdHJpbmcgb25seSBjb250YWluIGxvd2VyY2FzZVxuICogY2hhcmFjdGVycy5cbiAqL1xuZnVuY3Rpb24gaXNMb3dlckNhc2UoKSB7XG4gICAgcmV0dXJuIG1ha2VWYWxpZGF0b3Ioe1xuICAgICAgICB0ZXN0OiAodmFsdWUsIHN0YXRlKSA9PiB7XG4gICAgICAgICAgICBpZiAodmFsdWUgIT09IHZhbHVlLnRvTG93ZXJDYXNlKCkpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHB1c2hFcnJvcihzdGF0ZSwgYEV4cGVjdGVkIHRvIGJlIGFsbC1sb3dlcmNhc2UgKGdvdCAke3ZhbHVlfSlgKTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9LFxuICAgIH0pO1xufVxuLyoqXG4gKiBDcmVhdGUgYSB2YWxpZGF0b3IgdGhhdCBjaGVja3MgdGhhdCB0aGUgdGVzdGVkIHN0cmluZyBvbmx5IGNvbnRhaW4gdXBwZXJjYXNlXG4gKiBjaGFyYWN0ZXJzLlxuICovXG5mdW5jdGlvbiBpc1VwcGVyQ2FzZSgpIHtcbiAgICByZXR1cm4gbWFrZVZhbGlkYXRvcih7XG4gICAgICAgIHRlc3Q6ICh2YWx1ZSwgc3RhdGUpID0+IHtcbiAgICAgICAgICAgIGlmICh2YWx1ZSAhPT0gdmFsdWUudG9VcHBlckNhc2UoKSlcbiAgICAgICAgICAgICAgICByZXR1cm4gcHVzaEVycm9yKHN0YXRlLCBgRXhwZWN0ZWQgdG8gYmUgYWxsLXVwcGVyY2FzZSAoZ290ICR7dmFsdWV9KWApO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0sXG4gICAgfSk7XG59XG4vKipcbiAqIENyZWF0ZSBhIHZhbGlkYXRvciB0aGF0IGNoZWNrcyB0aGF0IHRoZSB0ZXN0ZWQgc3RyaW5nIGlzIGEgdmFsaWQgVVVJRCB2NC5cbiAqL1xuZnVuY3Rpb24gaXNVVUlENCgpIHtcbiAgICByZXR1cm4gbWFrZVZhbGlkYXRvcih7XG4gICAgICAgIHRlc3Q6ICh2YWx1ZSwgc3RhdGUpID0+IHtcbiAgICAgICAgICAgIGlmICghdXVpZDRSZWdFeHAudGVzdCh2YWx1ZSkpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHB1c2hFcnJvcihzdGF0ZSwgYEV4cGVjdGVkIHRvIGJlIGEgdmFsaWQgVVVJRCB2NCAoZ290ICR7Z2V0UHJpbnRhYmxlKHZhbHVlKX0pYCk7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSxcbiAgICB9KTtcbn1cbi8qKlxuICogQ3JlYXRlIGEgdmFsaWRhdG9yIHRoYXQgY2hlY2tzIHRoYXQgdGhlIHRlc3RlZCBzdHJpbmcgaXMgYSB2YWxpZCBJU084NjAxXG4gKiBkYXRlLlxuICovXG5mdW5jdGlvbiBpc0lTTzg2MDEoKSB7XG4gICAgcmV0dXJuIG1ha2VWYWxpZGF0b3Ioe1xuICAgICAgICB0ZXN0OiAodmFsdWUsIHN0YXRlKSA9PiB7XG4gICAgICAgICAgICBpZiAoIWlzbzg2MDFSZWdFeHAudGVzdCh2YWx1ZSkpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHB1c2hFcnJvcihzdGF0ZSwgYEV4cGVjdGVkIHRvIGJlIGEgdmFsaWQgSVNPIDg2MDEgZGF0ZSBzdHJpbmcgKGdvdCAke2dldFByaW50YWJsZSh2YWx1ZSl9KWApO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0sXG4gICAgfSk7XG59XG4vKipcbiAqIENyZWF0ZSBhIHZhbGlkYXRvciB0aGF0IGNoZWNrcyB0aGF0IHRoZSB0ZXN0ZWQgc3RyaW5nIGlzIGEgdmFsaWQgaGV4YWRlY2ltYWxcbiAqIGNvbG9yLiBTZXR0aW5nIHRoZSBvcHRpb25hbCBgYWxwaGFgIHBhcmFtZXRlciB0byBgdHJ1ZWAgYWxsb3dzIGFuIGFkZGl0aW9uYWxcbiAqIHRyYW5zcGFyZW5jeSBjaGFubmVsIHRvIGJlIGluY2x1ZGVkLlxuICovXG5mdW5jdGlvbiBpc0hleENvbG9yKHsgYWxwaGEgPSBmYWxzZSwgfSkge1xuICAgIHJldHVybiBtYWtlVmFsaWRhdG9yKHtcbiAgICAgICAgdGVzdDogKHZhbHVlLCBzdGF0ZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcmVzID0gYWxwaGFcbiAgICAgICAgICAgICAgICA/IGNvbG9yU3RyaW5nUmVnRXhwLnRlc3QodmFsdWUpXG4gICAgICAgICAgICAgICAgOiBjb2xvclN0cmluZ0FscGhhUmVnRXhwLnRlc3QodmFsdWUpO1xuICAgICAgICAgICAgaWYgKCFyZXMpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHB1c2hFcnJvcihzdGF0ZSwgYEV4cGVjdGVkIHRvIGJlIGEgdmFsaWQgaGV4YWRlY2ltYWwgY29sb3Igc3RyaW5nIChnb3QgJHtnZXRQcmludGFibGUodmFsdWUpfSlgKTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9LFxuICAgIH0pO1xufVxuLyoqXG4gKiBDcmVhdGUgYSB2YWxpZGF0b3IgdGhhdCBjaGVja3MgdGhhdCB0aGUgdGVzdGVkIHN0cmluZyBpcyB2YWxpZCBiYXNlNjQuXG4gKi9cbmZ1bmN0aW9uIGlzQmFzZTY0KCkge1xuICAgIHJldHVybiBtYWtlVmFsaWRhdG9yKHtcbiAgICAgICAgdGVzdDogKHZhbHVlLCBzdGF0ZSkgPT4ge1xuICAgICAgICAgICAgaWYgKCFiYXNlNjRSZWdFeHAudGVzdCh2YWx1ZSkpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHB1c2hFcnJvcihzdGF0ZSwgYEV4cGVjdGVkIHRvIGJlIGEgdmFsaWQgYmFzZSA2NCBzdHJpbmcgKGdvdCAke2dldFByaW50YWJsZSh2YWx1ZSl9KWApO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0sXG4gICAgfSk7XG59XG4vKipcbiAqIENyZWF0ZSBhIHZhbGlkYXRvciB0aGF0IGNoZWNrcyB0aGF0IHRoZSB0ZXN0ZWQgc3RyaW5nIGlzIHZhbGlkIEpTT04uIEFcbiAqIG9wdGlvbmFsIHNwZWMgY2FuIGJlIHBhc3NlZCBhcyBwYXJhbWV0ZXIsIGluIHdoaWNoIGNhc2UgdGhlIGRhdGEgd2lsbCBiZVxuICogZGVzZXJpYWxpemVkIGFuZCB2YWxpZGF0ZWQgYWdhaW5zdCB0aGUgc3BlYyAoY29lcmNpb24gd2lsbCBiZSBkaXNhYmxlZFxuICogZm9yIHRoaXMgY2hlY2ssIGFuZCBldmVuIGlmIHN1Y2Nlc3NmdWwgdGhlIHJldHVybmVkIHZhbHVlIHdpbGwgc3RpbGwgYmVcbiAqIHRoZSBvcmlnaW5hbCBzdHJpbmcpLlxuICovXG5mdW5jdGlvbiBpc0pTT04oc3BlYyA9IGlzVW5rbm93bigpKSB7XG4gICAgcmV0dXJuIG1ha2VWYWxpZGF0b3Ioe1xuICAgICAgICB0ZXN0OiAodmFsdWUsIHN0YXRlKSA9PiB7XG4gICAgICAgICAgICBsZXQgZGF0YTtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgZGF0YSA9IEpTT04ucGFyc2UodmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKF9hKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHB1c2hFcnJvcihzdGF0ZSwgYEV4cGVjdGVkIHRvIGJlIGEgdmFsaWQgSlNPTiBzdHJpbmcgKGdvdCAke2dldFByaW50YWJsZSh2YWx1ZSl9KWApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHNwZWMoZGF0YSwgc3RhdGUpO1xuICAgICAgICB9LFxuICAgIH0pO1xufVxuXG5mdW5jdGlvbiBjYXNjYWRlKHNwZWMsIC4uLmZvbGxvd3Vwcykge1xuICAgIGNvbnN0IHJlc29sdmVkRm9sbG93dXBzID0gQXJyYXkuaXNBcnJheShmb2xsb3d1cHNbMF0pXG4gICAgICAgID8gZm9sbG93dXBzWzBdXG4gICAgICAgIDogZm9sbG93dXBzO1xuICAgIHJldHVybiBtYWtlVmFsaWRhdG9yKHtcbiAgICAgICAgdGVzdDogKHZhbHVlLCBzdGF0ZSkgPT4ge1xuICAgICAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRleHQgPSB7IHZhbHVlOiB2YWx1ZSB9O1xuICAgICAgICAgICAgY29uc3Qgc3ViQ29lcmNpb24gPSB0eXBlb2YgKHN0YXRlID09PSBudWxsIHx8IHN0YXRlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzdGF0ZS5jb2VyY2lvbnMpICE9PSBgdW5kZWZpbmVkYFxuICAgICAgICAgICAgICAgID8gbWFrZUNvZXJjaW9uRm4oY29udGV4dCwgYHZhbHVlYCkgOiB1bmRlZmluZWQ7XG4gICAgICAgICAgICBjb25zdCBzdWJDb2VyY2lvbnMgPSB0eXBlb2YgKHN0YXRlID09PSBudWxsIHx8IHN0YXRlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzdGF0ZS5jb2VyY2lvbnMpICE9PSBgdW5kZWZpbmVkYFxuICAgICAgICAgICAgICAgID8gW10gOiB1bmRlZmluZWQ7XG4gICAgICAgICAgICBpZiAoIXNwZWModmFsdWUsIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUpLCB7IGNvZXJjaW9uOiBzdWJDb2VyY2lvbiwgY29lcmNpb25zOiBzdWJDb2VyY2lvbnMgfSkpKVxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIGNvbnN0IHJldmVydHMgPSBbXTtcbiAgICAgICAgICAgIGlmICh0eXBlb2Ygc3ViQ29lcmNpb25zICE9PSBgdW5kZWZpbmVkYClcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IFssIGNvZXJjaW9uXSBvZiBzdWJDb2VyY2lvbnMpXG4gICAgICAgICAgICAgICAgICAgIHJldmVydHMucHVzaChjb2VyY2lvbigpKTtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiAoc3RhdGUgPT09IG51bGwgfHwgc3RhdGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHN0YXRlLmNvZXJjaW9ucykgIT09IGB1bmRlZmluZWRgKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjb250ZXh0LnZhbHVlICE9PSB2YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiAoc3RhdGUgPT09IG51bGwgfHwgc3RhdGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHN0YXRlLmNvZXJjaW9uKSA9PT0gYHVuZGVmaW5lZGApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHB1c2hFcnJvcihzdGF0ZSwgYFVuYm91bmQgY29lcmNpb24gcmVzdWx0YCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS5jb2VyY2lvbnMucHVzaChbKF9hID0gc3RhdGUucCkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogYC5gLCBzdGF0ZS5jb2VyY2lvbi5iaW5kKG51bGwsIGNvbnRleHQudmFsdWUpXSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKF9iID0gc3RhdGUgPT09IG51bGwgfHwgc3RhdGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHN0YXRlLmNvZXJjaW9ucykgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLnB1c2goLi4uc3ViQ29lcmNpb25zKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmVkRm9sbG93dXBzLmV2ZXJ5KHNwZWMgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3BlYyhjb250ZXh0LnZhbHVlLCBzdGF0ZSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHJldmVydCBvZiByZXZlcnRzKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldmVydCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICB9KTtcbn1cbmZ1bmN0aW9uIGFwcGx5Q2FzY2FkZShzcGVjLCAuLi5mb2xsb3d1cHMpIHtcbiAgICBjb25zdCByZXNvbHZlZEZvbGxvd3VwcyA9IEFycmF5LmlzQXJyYXkoZm9sbG93dXBzWzBdKVxuICAgICAgICA/IGZvbGxvd3Vwc1swXVxuICAgICAgICA6IGZvbGxvd3VwcztcbiAgICByZXR1cm4gY2FzY2FkZShzcGVjLCByZXNvbHZlZEZvbGxvd3Vwcyk7XG59XG4vKipcbiAqIFdyYXBzIHRoZSBnaXZlbiBzcGVjIHRvIGFsc28gYWxsb3cgYHVuZGVmaW5lZGAuXG4gKi9cbmZ1bmN0aW9uIGlzT3B0aW9uYWwoc3BlYykge1xuICAgIHJldHVybiBtYWtlVmFsaWRhdG9yKHtcbiAgICAgICAgdGVzdDogKHZhbHVlLCBzdGF0ZSkgPT4ge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gYHVuZGVmaW5lZGApXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICByZXR1cm4gc3BlYyh2YWx1ZSwgc3RhdGUpO1xuICAgICAgICB9LFxuICAgIH0pO1xufVxuLyoqXG4gKiBXcmFwcyB0aGUgZ2l2ZW4gc3BlYyB0byBhbHNvIGFsbG93IGBudWxsYC5cbiAqL1xuZnVuY3Rpb24gaXNOdWxsYWJsZShzcGVjKSB7XG4gICAgcmV0dXJuIG1ha2VWYWxpZGF0b3Ioe1xuICAgICAgICB0ZXN0OiAodmFsdWUsIHN0YXRlKSA9PiB7XG4gICAgICAgICAgICBpZiAodmFsdWUgPT09IG51bGwpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICByZXR1cm4gc3BlYyh2YWx1ZSwgc3RhdGUpO1xuICAgICAgICB9LFxuICAgIH0pO1xufVxuY29uc3QgY2hlY2tzID0ge1xuICAgIG1pc3Npbmc6IChrZXlzLCBrZXkpID0+IGtleXMuaGFzKGtleSksXG4gICAgdW5kZWZpbmVkOiAoa2V5cywga2V5LCB2YWx1ZSkgPT4ga2V5cy5oYXMoa2V5KSAmJiB0eXBlb2YgdmFsdWVba2V5XSAhPT0gYHVuZGVmaW5lZGAsXG4gICAgbmlsOiAoa2V5cywga2V5LCB2YWx1ZSkgPT4ga2V5cy5oYXMoa2V5KSAmJiB2YWx1ZVtrZXldICE9IG51bGwsXG4gICAgZmFsc3k6IChrZXlzLCBrZXksIHZhbHVlKSA9PiBrZXlzLmhhcyhrZXkpICYmICEhdmFsdWVba2V5XSxcbn07XG4vKipcbiAqIENyZWF0ZSBhIHZhbGlkYXRvciB0aGF0IGNoZWNrcyB0aGF0IHRoZSB0ZXN0ZWQgb2JqZWN0IGNvbnRhaW5zIHRoZSBzcGVjaWZpZWRcbiAqIGtleXMuXG4qL1xuZnVuY3Rpb24gaGFzUmVxdWlyZWRLZXlzKHJlcXVpcmVkS2V5cywgb3B0aW9ucykge1xuICAgIHZhciBfYTtcbiAgICBjb25zdCByZXF1aXJlZFNldCA9IG5ldyBTZXQocmVxdWlyZWRLZXlzKTtcbiAgICBjb25zdCBjaGVjayA9IGNoZWNrc1soX2EgPSBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMubWlzc2luZ0lmKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAnbWlzc2luZyddO1xuICAgIHJldHVybiBtYWtlVmFsaWRhdG9yKHtcbiAgICAgICAgdGVzdDogKHZhbHVlLCBzdGF0ZSkgPT4ge1xuICAgICAgICAgICAgY29uc3Qga2V5cyA9IG5ldyBTZXQoT2JqZWN0LmtleXModmFsdWUpKTtcbiAgICAgICAgICAgIGNvbnN0IHByb2JsZW1zID0gW107XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiByZXF1aXJlZFNldClcbiAgICAgICAgICAgICAgICBpZiAoIWNoZWNrKGtleXMsIGtleSwgdmFsdWUpKVxuICAgICAgICAgICAgICAgICAgICBwcm9ibGVtcy5wdXNoKGtleSk7XG4gICAgICAgICAgICBpZiAocHJvYmxlbXMubGVuZ3RoID4gMClcbiAgICAgICAgICAgICAgICByZXR1cm4gcHVzaEVycm9yKHN0YXRlLCBgTWlzc2luZyByZXF1aXJlZCAke3BsdXJhbChwcm9ibGVtcy5sZW5ndGgsIGBwcm9wZXJ0eWAsIGBwcm9wZXJ0aWVzYCl9ICR7Z2V0UHJpbnRhYmxlQXJyYXkocHJvYmxlbXMsIGBhbmRgKX1gKTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9LFxuICAgIH0pO1xufVxuLyoqXG4qIENyZWF0ZSBhIHZhbGlkYXRvciB0aGF0IGNoZWNrcyB0aGF0IHRoZSB0ZXN0ZWQgb2JqZWN0IGNvbnRhaW5zIGF0IGxlYXN0IG9uZVxuKiBvZiB0aGUgc3BlY2lmaWVkIGtleXMuXG4qL1xuZnVuY3Rpb24gaGFzQXRMZWFzdE9uZUtleShyZXF1aXJlZEtleXMsIG9wdGlvbnMpIHtcbiAgICB2YXIgX2E7XG4gICAgY29uc3QgcmVxdWlyZWRTZXQgPSBuZXcgU2V0KHJlcXVpcmVkS2V5cyk7XG4gICAgY29uc3QgY2hlY2sgPSBjaGVja3NbKF9hID0gb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLm1pc3NpbmdJZikgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogJ21pc3NpbmcnXTtcbiAgICByZXR1cm4gbWFrZVZhbGlkYXRvcih7XG4gICAgICAgIHRlc3Q6ICh2YWx1ZSwgc3RhdGUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyh2YWx1ZSk7XG4gICAgICAgICAgICBjb25zdCB2YWxpZCA9IGtleXMuc29tZShrZXkgPT4gY2hlY2socmVxdWlyZWRTZXQsIGtleSwgdmFsdWUpKTtcbiAgICAgICAgICAgIGlmICghdmFsaWQpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHB1c2hFcnJvcihzdGF0ZSwgYE1pc3NpbmcgYXQgbGVhc3Qgb25lIHByb3BlcnR5IGZyb20gJHtnZXRQcmludGFibGVBcnJheShBcnJheS5mcm9tKHJlcXVpcmVkU2V0KSwgYG9yYCl9YCk7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSxcbiAgICB9KTtcbn1cbi8qKlxuICogQ3JlYXRlIGEgdmFsaWRhdG9yIHRoYXQgY2hlY2tzIHRoYXQgdGhlIHRlc3RlZCBvYmplY3QgY29udGFpbnMgbm9uZSBvZiB0aGVcbiAqIHNwZWNpZmllZCBrZXlzLlxuKi9cbmZ1bmN0aW9uIGhhc0ZvcmJpZGRlbktleXMoZm9yYmlkZGVuS2V5cywgb3B0aW9ucykge1xuICAgIHZhciBfYTtcbiAgICBjb25zdCBmb3JiaWRkZW5TZXQgPSBuZXcgU2V0KGZvcmJpZGRlbktleXMpO1xuICAgIGNvbnN0IGNoZWNrID0gY2hlY2tzWyhfYSA9IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy5taXNzaW5nSWYpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6ICdtaXNzaW5nJ107XG4gICAgcmV0dXJuIG1ha2VWYWxpZGF0b3Ioe1xuICAgICAgICB0ZXN0OiAodmFsdWUsIHN0YXRlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBrZXlzID0gbmV3IFNldChPYmplY3Qua2V5cyh2YWx1ZSkpO1xuICAgICAgICAgICAgY29uc3QgcHJvYmxlbXMgPSBbXTtcbiAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IG9mIGZvcmJpZGRlblNldClcbiAgICAgICAgICAgICAgICBpZiAoY2hlY2soa2V5cywga2V5LCB2YWx1ZSkpXG4gICAgICAgICAgICAgICAgICAgIHByb2JsZW1zLnB1c2goa2V5KTtcbiAgICAgICAgICAgIGlmIChwcm9ibGVtcy5sZW5ndGggPiAwKVxuICAgICAgICAgICAgICAgIHJldHVybiBwdXNoRXJyb3Ioc3RhdGUsIGBGb3JiaWRkZW4gJHtwbHVyYWwocHJvYmxlbXMubGVuZ3RoLCBgcHJvcGVydHlgLCBgcHJvcGVydGllc2ApfSAke2dldFByaW50YWJsZUFycmF5KHByb2JsZW1zLCBgYW5kYCl9YCk7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSxcbiAgICB9KTtcbn1cbi8qKlxuICogQ3JlYXRlIGEgdmFsaWRhdG9yIHRoYXQgY2hlY2tzIHRoYXQgdGhlIHRlc3RlZCBvYmplY3QgY29udGFpbnMgYXQgbW9zdCBvbmVcbiAqIG9mIHRoZSBzcGVjaWZpZWQga2V5cy5cbiAqL1xuZnVuY3Rpb24gaGFzTXV0dWFsbHlFeGNsdXNpdmVLZXlzKGV4Y2x1c2l2ZUtleXMsIG9wdGlvbnMpIHtcbiAgICB2YXIgX2E7XG4gICAgY29uc3QgZXhjbHVzaXZlU2V0ID0gbmV3IFNldChleGNsdXNpdmVLZXlzKTtcbiAgICBjb25zdCBjaGVjayA9IGNoZWNrc1soX2EgPSBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMubWlzc2luZ0lmKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAnbWlzc2luZyddO1xuICAgIHJldHVybiBtYWtlVmFsaWRhdG9yKHtcbiAgICAgICAgdGVzdDogKHZhbHVlLCBzdGF0ZSkgPT4ge1xuICAgICAgICAgICAgY29uc3Qga2V5cyA9IG5ldyBTZXQoT2JqZWN0LmtleXModmFsdWUpKTtcbiAgICAgICAgICAgIGNvbnN0IHVzZWQgPSBbXTtcbiAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IG9mIGV4Y2x1c2l2ZVNldClcbiAgICAgICAgICAgICAgICBpZiAoY2hlY2soa2V5cywga2V5LCB2YWx1ZSkpXG4gICAgICAgICAgICAgICAgICAgIHVzZWQucHVzaChrZXkpO1xuICAgICAgICAgICAgaWYgKHVzZWQubGVuZ3RoID4gMSlcbiAgICAgICAgICAgICAgICByZXR1cm4gcHVzaEVycm9yKHN0YXRlLCBgTXV0dWFsbHkgZXhjbHVzaXZlIHByb3BlcnRpZXMgJHtnZXRQcmludGFibGVBcnJheSh1c2VkLCBgYW5kYCl9YCk7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSxcbiAgICB9KTtcbn1cbihmdW5jdGlvbiAoS2V5UmVsYXRpb25zaGlwKSB7XG4gICAgS2V5UmVsYXRpb25zaGlwW1wiRm9yYmlkc1wiXSA9IFwiRm9yYmlkc1wiO1xuICAgIEtleVJlbGF0aW9uc2hpcFtcIlJlcXVpcmVzXCJdID0gXCJSZXF1aXJlc1wiO1xufSkoZXhwb3J0cy5LZXlSZWxhdGlvbnNoaXAgfHwgKGV4cG9ydHMuS2V5UmVsYXRpb25zaGlwID0ge30pKTtcbmNvbnN0IGtleVJlbGF0aW9uc2hpcHMgPSB7XG4gICAgW2V4cG9ydHMuS2V5UmVsYXRpb25zaGlwLkZvcmJpZHNdOiB7XG4gICAgICAgIGV4cGVjdDogZmFsc2UsXG4gICAgICAgIG1lc3NhZ2U6IGBmb3JiaWRzIHVzaW5nYCxcbiAgICB9LFxuICAgIFtleHBvcnRzLktleVJlbGF0aW9uc2hpcC5SZXF1aXJlc106IHtcbiAgICAgICAgZXhwZWN0OiB0cnVlLFxuICAgICAgICBtZXNzYWdlOiBgcmVxdWlyZXMgdXNpbmdgLFxuICAgIH0sXG59O1xuLyoqXG4gKiBDcmVhdGUgYSB2YWxpZGF0b3IgdGhhdCBjaGVja3MgdGhhdCwgd2hlbiB0aGUgc3BlY2lmaWVkIHN1YmplY3QgcHJvcGVydHkgaXNcbiAqIHNldCwgdGhlIHJlbGF0aW9uc2hpcCBpcyBzYXRpc2ZpZWQuXG4gKi9cbmZ1bmN0aW9uIGhhc0tleVJlbGF0aW9uc2hpcChzdWJqZWN0LCByZWxhdGlvbnNoaXAsIG90aGVycywgeyBpZ25vcmUgPSBbXSwgfSA9IHt9KSB7XG4gICAgY29uc3Qgc2tpcHBlZCA9IG5ldyBTZXQoaWdub3JlKTtcbiAgICBjb25zdCBvdGhlclNldCA9IG5ldyBTZXQob3RoZXJzKTtcbiAgICBjb25zdCBzcGVjID0ga2V5UmVsYXRpb25zaGlwc1tyZWxhdGlvbnNoaXBdO1xuICAgIGNvbnN0IGNvbmp1bmN0aW9uID0gcmVsYXRpb25zaGlwID09PSBleHBvcnRzLktleVJlbGF0aW9uc2hpcC5Gb3JiaWRzXG4gICAgICAgID8gYG9yYFxuICAgICAgICA6IGBhbmRgO1xuICAgIHJldHVybiBtYWtlVmFsaWRhdG9yKHtcbiAgICAgICAgdGVzdDogKHZhbHVlLCBzdGF0ZSkgPT4ge1xuICAgICAgICAgICAgY29uc3Qga2V5cyA9IG5ldyBTZXQoT2JqZWN0LmtleXModmFsdWUpKTtcbiAgICAgICAgICAgIGlmICgha2V5cy5oYXMoc3ViamVjdCkgfHwgc2tpcHBlZC5oYXModmFsdWVbc3ViamVjdF0pKVxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgY29uc3QgcHJvYmxlbXMgPSBbXTtcbiAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IG9mIG90aGVyU2V0KVxuICAgICAgICAgICAgICAgIGlmICgoa2V5cy5oYXMoa2V5KSAmJiAhc2tpcHBlZC5oYXModmFsdWVba2V5XSkpICE9PSBzcGVjLmV4cGVjdClcbiAgICAgICAgICAgICAgICAgICAgcHJvYmxlbXMucHVzaChrZXkpO1xuICAgICAgICAgICAgaWYgKHByb2JsZW1zLmxlbmd0aCA+PSAxKVxuICAgICAgICAgICAgICAgIHJldHVybiBwdXNoRXJyb3Ioc3RhdGUsIGBQcm9wZXJ0eSBcIiR7c3ViamVjdH1cIiAke3NwZWMubWVzc2FnZX0gJHtwbHVyYWwocHJvYmxlbXMubGVuZ3RoLCBgcHJvcGVydHlgLCBgcHJvcGVydGllc2ApfSAke2dldFByaW50YWJsZUFycmF5KHByb2JsZW1zLCBjb25qdW5jdGlvbil9YCk7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSxcbiAgICB9KTtcbn1cblxuZXhwb3J0cy5UeXBlQXNzZXJ0aW9uRXJyb3IgPSBUeXBlQXNzZXJ0aW9uRXJyb3I7XG5leHBvcnRzLmFwcGx5Q2FzY2FkZSA9IGFwcGx5Q2FzY2FkZTtcbmV4cG9ydHMuYXMgPSBhcztcbmV4cG9ydHMuYXNzZXJ0ID0gYXNzZXJ0O1xuZXhwb3J0cy5hc3NlcnRXaXRoRXJyb3JzID0gYXNzZXJ0V2l0aEVycm9ycztcbmV4cG9ydHMuY2FzY2FkZSA9IGNhc2NhZGU7XG5leHBvcnRzLmZuID0gZm47XG5leHBvcnRzLmhhc0F0TGVhc3RPbmVLZXkgPSBoYXNBdExlYXN0T25lS2V5O1xuZXhwb3J0cy5oYXNFeGFjdExlbmd0aCA9IGhhc0V4YWN0TGVuZ3RoO1xuZXhwb3J0cy5oYXNGb3JiaWRkZW5LZXlzID0gaGFzRm9yYmlkZGVuS2V5cztcbmV4cG9ydHMuaGFzS2V5UmVsYXRpb25zaGlwID0gaGFzS2V5UmVsYXRpb25zaGlwO1xuZXhwb3J0cy5oYXNNYXhMZW5ndGggPSBoYXNNYXhMZW5ndGg7XG5leHBvcnRzLmhhc01pbkxlbmd0aCA9IGhhc01pbkxlbmd0aDtcbmV4cG9ydHMuaGFzTXV0dWFsbHlFeGNsdXNpdmVLZXlzID0gaGFzTXV0dWFsbHlFeGNsdXNpdmVLZXlzO1xuZXhwb3J0cy5oYXNSZXF1aXJlZEtleXMgPSBoYXNSZXF1aXJlZEtleXM7XG5leHBvcnRzLmhhc1VuaXF1ZUl0ZW1zID0gaGFzVW5pcXVlSXRlbXM7XG5leHBvcnRzLmlzQXJyYXkgPSBpc0FycmF5O1xuZXhwb3J0cy5pc0F0TGVhc3QgPSBpc0F0TGVhc3Q7XG5leHBvcnRzLmlzQXRNb3N0ID0gaXNBdE1vc3Q7XG5leHBvcnRzLmlzQmFzZTY0ID0gaXNCYXNlNjQ7XG5leHBvcnRzLmlzQm9vbGVhbiA9IGlzQm9vbGVhbjtcbmV4cG9ydHMuaXNEYXRlID0gaXNEYXRlO1xuZXhwb3J0cy5pc0RpY3QgPSBpc0RpY3Q7XG5leHBvcnRzLmlzRW51bSA9IGlzRW51bTtcbmV4cG9ydHMuaXNIZXhDb2xvciA9IGlzSGV4Q29sb3I7XG5leHBvcnRzLmlzSVNPODYwMSA9IGlzSVNPODYwMTtcbmV4cG9ydHMuaXNJbkV4Y2x1c2l2ZVJhbmdlID0gaXNJbkV4Y2x1c2l2ZVJhbmdlO1xuZXhwb3J0cy5pc0luSW5jbHVzaXZlUmFuZ2UgPSBpc0luSW5jbHVzaXZlUmFuZ2U7XG5leHBvcnRzLmlzSW5zdGFuY2VPZiA9IGlzSW5zdGFuY2VPZjtcbmV4cG9ydHMuaXNJbnRlZ2VyID0gaXNJbnRlZ2VyO1xuZXhwb3J0cy5pc0pTT04gPSBpc0pTT047XG5leHBvcnRzLmlzTGl0ZXJhbCA9IGlzTGl0ZXJhbDtcbmV4cG9ydHMuaXNMb3dlckNhc2UgPSBpc0xvd2VyQ2FzZTtcbmV4cG9ydHMuaXNNYXAgPSBpc01hcDtcbmV4cG9ydHMuaXNOZWdhdGl2ZSA9IGlzTmVnYXRpdmU7XG5leHBvcnRzLmlzTnVsbGFibGUgPSBpc051bGxhYmxlO1xuZXhwb3J0cy5pc051bWJlciA9IGlzTnVtYmVyO1xuZXhwb3J0cy5pc09iamVjdCA9IGlzT2JqZWN0O1xuZXhwb3J0cy5pc09uZU9mID0gaXNPbmVPZjtcbmV4cG9ydHMuaXNPcHRpb25hbCA9IGlzT3B0aW9uYWw7XG5leHBvcnRzLmlzUGFydGlhbCA9IGlzUGFydGlhbDtcbmV4cG9ydHMuaXNQb3NpdGl2ZSA9IGlzUG9zaXRpdmU7XG5leHBvcnRzLmlzUmVjb3JkID0gaXNSZWNvcmQ7XG5leHBvcnRzLmlzU2V0ID0gaXNTZXQ7XG5leHBvcnRzLmlzU3RyaW5nID0gaXNTdHJpbmc7XG5leHBvcnRzLmlzVHVwbGUgPSBpc1R1cGxlO1xuZXhwb3J0cy5pc1VVSUQ0ID0gaXNVVUlENDtcbmV4cG9ydHMuaXNVbmtub3duID0gaXNVbmtub3duO1xuZXhwb3J0cy5pc1VwcGVyQ2FzZSA9IGlzVXBwZXJDYXNlO1xuZXhwb3J0cy5tYWtlVHJhaXQgPSBtYWtlVHJhaXQ7XG5leHBvcnRzLm1ha2VWYWxpZGF0b3IgPSBtYWtlVmFsaWRhdG9yO1xuZXhwb3J0cy5tYXRjaGVzUmVnRXhwID0gbWF0Y2hlc1JlZ0V4cDtcbmV4cG9ydHMuc29mdEFzc2VydCA9IHNvZnRBc3NlcnQ7XG4iLCAiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuXG52YXIgYWR2YW5jZWRfb3B0aW9uc191dGlscyA9IHJlcXVpcmUoJy4vb3B0aW9ucy91dGlscy5qcycpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcE5hbWVzcGFjZShlKSB7XG4gICAgaWYgKGUgJiYgZS5fX2VzTW9kdWxlKSByZXR1cm4gZTtcbiAgICB2YXIgbiA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgaWYgKGUpIHtcbiAgICAgICAgT2JqZWN0LmtleXMoZSkuZm9yRWFjaChmdW5jdGlvbiAoaykge1xuICAgICAgICAgICAgaWYgKGsgIT09ICdkZWZhdWx0Jykge1xuICAgICAgICAgICAgICAgIHZhciBkID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLCBrKTtcbiAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobiwgaywgZC5nZXQgPyBkIDoge1xuICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlW2tdO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBuWydkZWZhdWx0J10gPSBlO1xuICAgIHJldHVybiBPYmplY3QuZnJlZXplKG4pO1xufVxuXG4vKipcbiAqIEJhc2UgYWJzdHJhY3QgY2xhc3MgZm9yIENMSSBjb21tYW5kcy4gVGhlIG1haW4gdGhpbmcgdG8gcmVtZW1iZXIgaXMgdG9cbiAqIGRlY2xhcmUgYW4gYXN5bmMgYGV4ZWN1dGVgIG1lbWJlciBmdW5jdGlvbiB0aGF0IHdpbGwgYmUgY2FsbGVkIHdoZW4gdGhlXG4gKiBjb21tYW5kIGlzIGludm9rZWQgZnJvbSB0aGUgQ0xJLCBhbmQgb3B0aW9uYWxseSBhIGBwYXRoc2AgcHJvcGVydHkgdG9cbiAqIGRlY2xhcmUgdGhlIHNldCBvZiBwYXRocyB1bmRlciB3aGljaCB0aGUgY29tbWFuZCBzaG91bGQgYmUgZXhwb3NlZC5cbiAqL1xuY2xhc3MgQ29tbWFuZCB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBQcmVkZWZpbmVkIHRoYXQgd2lsbCBiZSBzZXQgdG8gdHJ1ZSBpZiBgLWgsLS1oZWxwYCBoYXMgYmVlbiB1c2VkLCBpblxuICAgICAgICAgKiB3aGljaCBjYXNlIGBDb21tYW5kI2V4ZWN1dGVgIHdvbid0IGJlIGNhbGxlZC5cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMuaGVscCA9IGZhbHNlO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBEZWZpbmVzIHRoZSB1c2FnZSBpbmZvcm1hdGlvbiBmb3IgdGhlIGdpdmVuIGNvbW1hbmQuXG4gICAgICovXG4gICAgc3RhdGljIFVzYWdlKHVzYWdlKSB7XG4gICAgICAgIHJldHVybiB1c2FnZTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogU3RhbmRhcmQgZXJyb3IgaGFuZGxlciB3aGljaCB3aWxsIHNpbXBseSByZXRocm93IHRoZSBlcnJvci4gQ2FuIGJlIHVzZWRcbiAgICAgKiB0byBhZGQgY3VzdG9tIGxvZ2ljIHRvIGhhbmRsZSBlcnJvcnMgZnJvbSB0aGUgY29tbWFuZCBvciBzaW1wbHkgcmV0dXJuXG4gICAgICogdGhlIHBhcmVudCBjbGFzcyBlcnJvciBoYW5kbGluZy5cbiAgICAgKi9cbiAgICBhc3luYyBjYXRjaChlcnJvcikge1xuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gICAgYXN5bmMgdmFsaWRhdGVBbmRFeGVjdXRlKCkge1xuICAgICAgICBjb25zdCBjb21tYW5kQ2xhc3MgPSB0aGlzLmNvbnN0cnVjdG9yO1xuICAgICAgICBjb25zdCBjYXNjYWRlID0gY29tbWFuZENsYXNzLnNjaGVtYTtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoY2FzY2FkZSkpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgaXNEaWN0LCBpc1Vua25vd24sIGFwcGx5Q2FzY2FkZSB9ID0gYXdhaXQgUHJvbWlzZS5yZXNvbHZlKCkudGhlbihmdW5jdGlvbiAoKSB7IHJldHVybiAvKiNfX1BVUkVfXyovX2ludGVyb3BOYW1lc3BhY2UocmVxdWlyZSgndHlwYW5pb24nKSk7IH0pO1xuICAgICAgICAgICAgY29uc3Qgc2NoZW1hID0gYXBwbHlDYXNjYWRlKGlzRGljdChpc1Vua25vd24oKSksIGNhc2NhZGUpO1xuICAgICAgICAgICAgY29uc3QgZXJyb3JzID0gW107XG4gICAgICAgICAgICBjb25zdCBjb2VyY2lvbnMgPSBbXTtcbiAgICAgICAgICAgIGNvbnN0IGNoZWNrID0gc2NoZW1hKHRoaXMsIHsgZXJyb3JzLCBjb2VyY2lvbnMgfSk7XG4gICAgICAgICAgICBpZiAoIWNoZWNrKVxuICAgICAgICAgICAgICAgIHRocm93IGFkdmFuY2VkX29wdGlvbnNfdXRpbHMuZm9ybWF0RXJyb3IoYEludmFsaWQgb3B0aW9uIHNjaGVtYWAsIGVycm9ycyk7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IFssIG9wXSBvZiBjb2VyY2lvbnMpIHtcbiAgICAgICAgICAgICAgICBvcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGNhc2NhZGUgIT0gbnVsbCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGNvbW1hbmQgc2NoZW1hYCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZXhpdENvZGUgPSBhd2FpdCB0aGlzLmV4ZWN1dGUoKTtcbiAgICAgICAgaWYgKHR5cGVvZiBleGl0Q29kZSAhPT0gYHVuZGVmaW5lZGApIHtcbiAgICAgICAgICAgIHJldHVybiBleGl0Q29kZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG4gICAgfVxufVxuLyoqXG4gKiBVc2VkIHRvIGRldGVjdCBvcHRpb24gZGVmaW5pdGlvbnMuXG4gKi9cbkNvbW1hbmQuaXNPcHRpb24gPSBhZHZhbmNlZF9vcHRpb25zX3V0aWxzLmlzT3B0aW9uU3ltYm9sO1xuLyoqXG4gKiBKdXN0IGFuIGhlbHBlciB0byB1c2UgYWxvbmcgd2l0aCB0aGUgYHBhdGhzYCBmaWVsZHMsIHRvIG1ha2UgaXRcbiAqIGNsZWFyZXIgdGhhdCBhIGNvbW1hbmQgaXMgdGhlIGRlZmF1bHQgb25lLlxuICpcbiAqIEBleGFtcGxlXG4gKiBjbGFzcyBNeUNvbW1hbmQgZXh0ZW5kcyBDb21tYW5kIHtcbiAqICAgc3RhdGljIHBhdGhzID0gW0NvbW1hbmQuRGVmYXVsdF07XG4gKiB9XG4gKi9cbkNvbW1hbmQuRGVmYXVsdCA9IFtdO1xuXG5leHBvcnRzLkNvbW1hbmQgPSBDb21tYW5kO1xuIiwgIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcblxudmFyIGNvbnN0YW50cyA9IHJlcXVpcmUoJy4vY29uc3RhbnRzLmpzJyk7XG52YXIgZXJyb3JzID0gcmVxdWlyZSgnLi9lcnJvcnMuanMnKTtcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5mdW5jdGlvbiBkZWJ1ZyhzdHIpIHtcbiAgICBpZiAoY29uc3RhbnRzLkRFQlVHKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKHN0cik7XG4gICAgfVxufVxuY29uc3QgYmFzaWNIZWxwU3RhdGUgPSB7XG4gICAgY2FuZGlkYXRlVXNhZ2U6IG51bGwsXG4gICAgcmVxdWlyZWRPcHRpb25zOiBbXSxcbiAgICBlcnJvck1lc3NhZ2U6IG51bGwsXG4gICAgaWdub3JlT3B0aW9uczogZmFsc2UsXG4gICAgcGF0aDogW10sXG4gICAgcG9zaXRpb25hbHM6IFtdLFxuICAgIG9wdGlvbnM6IFtdLFxuICAgIHJlbWFpbmRlcjogbnVsbCxcbiAgICBzZWxlY3RlZEluZGV4OiBjb25zdGFudHMuSEVMUF9DT01NQU5EX0lOREVYLFxufTtcbmZ1bmN0aW9uIG1ha2VTdGF0ZU1hY2hpbmUoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgbm9kZXM6IFttYWtlTm9kZSgpLCBtYWtlTm9kZSgpLCBtYWtlTm9kZSgpXSxcbiAgICB9O1xufVxuZnVuY3Rpb24gbWFrZUFueU9mTWFjaGluZShpbnB1dHMpIHtcbiAgICBjb25zdCBvdXRwdXQgPSBtYWtlU3RhdGVNYWNoaW5lKCk7XG4gICAgY29uc3QgaGVhZHMgPSBbXTtcbiAgICBsZXQgb2Zmc2V0ID0gb3V0cHV0Lm5vZGVzLmxlbmd0aDtcbiAgICBmb3IgKGNvbnN0IGlucHV0IG9mIGlucHV0cykge1xuICAgICAgICBoZWFkcy5wdXNoKG9mZnNldCk7XG4gICAgICAgIGZvciAobGV0IHQgPSAwOyB0IDwgaW5wdXQubm9kZXMubGVuZ3RoOyArK3QpXG4gICAgICAgICAgICBpZiAoIWlzVGVybWluYWxOb2RlKHQpKVxuICAgICAgICAgICAgICAgIG91dHB1dC5ub2Rlcy5wdXNoKGNsb25lTm9kZShpbnB1dC5ub2Rlc1t0XSwgb2Zmc2V0KSk7XG4gICAgICAgIG9mZnNldCArPSBpbnB1dC5ub2Rlcy5sZW5ndGggLSAyO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IGhlYWQgb2YgaGVhZHMpXG4gICAgICAgIHJlZ2lzdGVyU2hvcnRjdXQob3V0cHV0LCBjb25zdGFudHMuTk9ERV9JTklUSUFMLCBoZWFkKTtcbiAgICByZXR1cm4gb3V0cHV0O1xufVxuZnVuY3Rpb24gaW5qZWN0Tm9kZShtYWNoaW5lLCBub2RlKSB7XG4gICAgbWFjaGluZS5ub2Rlcy5wdXNoKG5vZGUpO1xuICAgIHJldHVybiBtYWNoaW5lLm5vZGVzLmxlbmd0aCAtIDE7XG59XG5mdW5jdGlvbiBzaW1wbGlmeU1hY2hpbmUoaW5wdXQpIHtcbiAgICBjb25zdCB2aXNpdGVkID0gbmV3IFNldCgpO1xuICAgIGNvbnN0IHByb2Nlc3MgPSAobm9kZSkgPT4ge1xuICAgICAgICBpZiAodmlzaXRlZC5oYXMobm9kZSkpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIHZpc2l0ZWQuYWRkKG5vZGUpO1xuICAgICAgICBjb25zdCBub2RlRGVmID0gaW5wdXQubm9kZXNbbm9kZV07XG4gICAgICAgIGZvciAoY29uc3QgdHJhbnNpdGlvbnMgb2YgT2JqZWN0LnZhbHVlcyhub2RlRGVmLnN0YXRpY3MpKVxuICAgICAgICAgICAgZm9yIChjb25zdCB7IHRvIH0gb2YgdHJhbnNpdGlvbnMpXG4gICAgICAgICAgICAgICAgcHJvY2Vzcyh0byk7XG4gICAgICAgIGZvciAoY29uc3QgWywgeyB0byB9XSBvZiBub2RlRGVmLmR5bmFtaWNzKVxuICAgICAgICAgICAgcHJvY2Vzcyh0byk7XG4gICAgICAgIGZvciAoY29uc3QgeyB0byB9IG9mIG5vZGVEZWYuc2hvcnRjdXRzKVxuICAgICAgICAgICAgcHJvY2Vzcyh0byk7XG4gICAgICAgIGNvbnN0IHNob3J0Y3V0cyA9IG5ldyBTZXQobm9kZURlZi5zaG9ydGN1dHMubWFwKCh7IHRvIH0pID0+IHRvKSk7XG4gICAgICAgIHdoaWxlIChub2RlRGVmLnNob3J0Y3V0cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBjb25zdCB7IHRvIH0gPSBub2RlRGVmLnNob3J0Y3V0cy5zaGlmdCgpO1xuICAgICAgICAgICAgY29uc3QgdG9EZWYgPSBpbnB1dC5ub2Rlc1t0b107XG4gICAgICAgICAgICBmb3IgKGNvbnN0IFtzZWdtZW50LCB0cmFuc2l0aW9uc10gb2YgT2JqZWN0LmVudHJpZXModG9EZWYuc3RhdGljcykpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzdG9yZSA9ICFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobm9kZURlZi5zdGF0aWNzLCBzZWdtZW50KVxuICAgICAgICAgICAgICAgICAgICA/IG5vZGVEZWYuc3RhdGljc1tzZWdtZW50XSA9IFtdXG4gICAgICAgICAgICAgICAgICAgIDogbm9kZURlZi5zdGF0aWNzW3NlZ21lbnRdO1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgdHJhbnNpdGlvbiBvZiB0cmFuc2l0aW9ucykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXN0b3JlLnNvbWUoKHsgdG8gfSkgPT4gdHJhbnNpdGlvbi50byA9PT0gdG8pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdG9yZS5wdXNoKHRyYW5zaXRpb24pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZm9yIChjb25zdCBbdGVzdCwgdHJhbnNpdGlvbl0gb2YgdG9EZWYuZHluYW1pY3MpXG4gICAgICAgICAgICAgICAgaWYgKCFub2RlRGVmLmR5bmFtaWNzLnNvbWUoKFtvdGhlclRlc3QsIHsgdG8gfV0pID0+IHRlc3QgPT09IG90aGVyVGVzdCAmJiB0cmFuc2l0aW9uLnRvID09PSB0bykpXG4gICAgICAgICAgICAgICAgICAgIG5vZGVEZWYuZHluYW1pY3MucHVzaChbdGVzdCwgdHJhbnNpdGlvbl0pO1xuICAgICAgICAgICAgZm9yIChjb25zdCB0cmFuc2l0aW9uIG9mIHRvRGVmLnNob3J0Y3V0cykge1xuICAgICAgICAgICAgICAgIGlmICghc2hvcnRjdXRzLmhhcyh0cmFuc2l0aW9uLnRvKSkge1xuICAgICAgICAgICAgICAgICAgICBub2RlRGVmLnNob3J0Y3V0cy5wdXNoKHRyYW5zaXRpb24pO1xuICAgICAgICAgICAgICAgICAgICBzaG9ydGN1dHMuYWRkKHRyYW5zaXRpb24udG8pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG4gICAgcHJvY2Vzcyhjb25zdGFudHMuTk9ERV9JTklUSUFMKTtcbn1cbmZ1bmN0aW9uIGRlYnVnTWFjaGluZShtYWNoaW5lLCB7IHByZWZpeCA9IGBgIH0gPSB7fSkge1xuICAgIC8vIERvbid0IGl0ZXJhdGUgdW5sZXNzIGl0J3MgbmVlZGVkXG4gICAgaWYgKGNvbnN0YW50cy5ERUJVRykge1xuICAgICAgICBkZWJ1ZyhgJHtwcmVmaXh9Tm9kZXMgYXJlOmApO1xuICAgICAgICBmb3IgKGxldCB0ID0gMDsgdCA8IG1hY2hpbmUubm9kZXMubGVuZ3RoOyArK3QpIHtcbiAgICAgICAgICAgIGRlYnVnKGAke3ByZWZpeH0gICR7dH06ICR7SlNPTi5zdHJpbmdpZnkobWFjaGluZS5ub2Rlc1t0XSl9YCk7XG4gICAgICAgIH1cbiAgICB9XG59XG5mdW5jdGlvbiBydW5NYWNoaW5lSW50ZXJuYWwobWFjaGluZSwgaW5wdXQsIHBhcnRpYWwgPSBmYWxzZSkge1xuICAgIGRlYnVnKGBSdW5uaW5nIGEgdm0gb24gJHtKU09OLnN0cmluZ2lmeShpbnB1dCl9YCk7XG4gICAgbGV0IGJyYW5jaGVzID0gW3sgbm9kZTogY29uc3RhbnRzLk5PREVfSU5JVElBTCwgc3RhdGU6IHtcbiAgICAgICAgICAgICAgICBjYW5kaWRhdGVVc2FnZTogbnVsbCxcbiAgICAgICAgICAgICAgICByZXF1aXJlZE9wdGlvbnM6IFtdLFxuICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZTogbnVsbCxcbiAgICAgICAgICAgICAgICBpZ25vcmVPcHRpb25zOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBbXSxcbiAgICAgICAgICAgICAgICBwYXRoOiBbXSxcbiAgICAgICAgICAgICAgICBwb3NpdGlvbmFsczogW10sXG4gICAgICAgICAgICAgICAgcmVtYWluZGVyOiBudWxsLFxuICAgICAgICAgICAgICAgIHNlbGVjdGVkSW5kZXg6IG51bGwsXG4gICAgICAgICAgICB9IH1dO1xuICAgIGRlYnVnTWFjaGluZShtYWNoaW5lLCB7IHByZWZpeDogYCAgYCB9KTtcbiAgICBjb25zdCB0b2tlbnMgPSBbY29uc3RhbnRzLlNUQVJUX09GX0lOUFVULCAuLi5pbnB1dF07XG4gICAgZm9yIChsZXQgdCA9IDA7IHQgPCB0b2tlbnMubGVuZ3RoOyArK3QpIHtcbiAgICAgICAgY29uc3Qgc2VnbWVudCA9IHRva2Vuc1t0XTtcbiAgICAgICAgZGVidWcoYCAgUHJvY2Vzc2luZyAke0pTT04uc3RyaW5naWZ5KHNlZ21lbnQpfWApO1xuICAgICAgICBjb25zdCBuZXh0QnJhbmNoZXMgPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCB7IG5vZGUsIHN0YXRlIH0gb2YgYnJhbmNoZXMpIHtcbiAgICAgICAgICAgIGRlYnVnKGAgICAgQ3VycmVudCBub2RlIGlzICR7bm9kZX1gKTtcbiAgICAgICAgICAgIGNvbnN0IG5vZGVEZWYgPSBtYWNoaW5lLm5vZGVzW25vZGVdO1xuICAgICAgICAgICAgaWYgKG5vZGUgPT09IGNvbnN0YW50cy5OT0RFX0VSUk9SRUQpIHtcbiAgICAgICAgICAgICAgICBuZXh0QnJhbmNoZXMucHVzaCh7IG5vZGUsIHN0YXRlIH0pO1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc29sZS5hc3NlcnQobm9kZURlZi5zaG9ydGN1dHMubGVuZ3RoID09PSAwLCBgU2hvcnRjdXRzIHNob3VsZCBoYXZlIGJlZW4gZWxpbWluYXRlZCBieSBub3dgKTtcbiAgICAgICAgICAgIGNvbnN0IGhhc0V4YWN0TWF0Y2ggPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobm9kZURlZi5zdGF0aWNzLCBzZWdtZW50KTtcbiAgICAgICAgICAgIGlmICghcGFydGlhbCB8fCB0IDwgdG9rZW5zLmxlbmd0aCAtIDEgfHwgaGFzRXhhY3RNYXRjaCkge1xuICAgICAgICAgICAgICAgIGlmIChoYXNFeGFjdE1hdGNoKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRyYW5zaXRpb25zID0gbm9kZURlZi5zdGF0aWNzW3NlZ21lbnRdO1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHsgdG8sIHJlZHVjZXIgfSBvZiB0cmFuc2l0aW9ucykge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmV4dEJyYW5jaGVzLnB1c2goeyBub2RlOiB0bywgc3RhdGU6IHR5cGVvZiByZWR1Y2VyICE9PSBgdW5kZWZpbmVkYCA/IGV4ZWN1dGUocmVkdWNlcnMsIHJlZHVjZXIsIHN0YXRlLCBzZWdtZW50KSA6IHN0YXRlIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVidWcoYCAgICAgIFN0YXRpYyB0cmFuc2l0aW9uIHRvICR7dG99IGZvdW5kYCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGRlYnVnKGAgICAgICBObyBzdGF0aWMgdHJhbnNpdGlvbiBmb3VuZGApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGxldCBoYXNNYXRjaGVzID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBjYW5kaWRhdGUgb2YgT2JqZWN0LmtleXMobm9kZURlZi5zdGF0aWNzKSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWNhbmRpZGF0ZS5zdGFydHNXaXRoKHNlZ21lbnQpKVxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzZWdtZW50ID09PSBjYW5kaWRhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgeyB0bywgcmVkdWNlciB9IG9mIG5vZGVEZWYuc3RhdGljc1tjYW5kaWRhdGVdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dEJyYW5jaGVzLnB1c2goeyBub2RlOiB0bywgc3RhdGU6IHR5cGVvZiByZWR1Y2VyICE9PSBgdW5kZWZpbmVkYCA/IGV4ZWN1dGUocmVkdWNlcnMsIHJlZHVjZXIsIHN0YXRlLCBzZWdtZW50KSA6IHN0YXRlIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnKGAgICAgICBTdGF0aWMgdHJhbnNpdGlvbiB0byAke3RvfSBmb3VuZGApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCB7IHRvIH0gb2Ygbm9kZURlZi5zdGF0aWNzW2NhbmRpZGF0ZV0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0QnJhbmNoZXMucHVzaCh7IG5vZGU6IHRvLCBzdGF0ZTogeyAuLi5zdGF0ZSwgcmVtYWluZGVyOiBjYW5kaWRhdGUuc2xpY2Uoc2VnbWVudC5sZW5ndGgpIH0gfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVidWcoYCAgICAgIFN0YXRpYyB0cmFuc2l0aW9uIHRvICR7dG99IGZvdW5kIChwYXJ0aWFsIG1hdGNoKWApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGhhc01hdGNoZXMgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoIWhhc01hdGNoZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgZGVidWcoYCAgICAgIE5vIHBhcnRpYWwgc3RhdGljIHRyYW5zaXRpb24gZm91bmRgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoc2VnbWVudCAhPT0gY29uc3RhbnRzLkVORF9PRl9JTlBVVCkge1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgW3Rlc3QsIHsgdG8sIHJlZHVjZXIgfV0gb2Ygbm9kZURlZi5keW5hbWljcykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZXhlY3V0ZSh0ZXN0cywgdGVzdCwgc3RhdGUsIHNlZ21lbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuZXh0QnJhbmNoZXMucHVzaCh7IG5vZGU6IHRvLCBzdGF0ZTogdHlwZW9mIHJlZHVjZXIgIT09IGB1bmRlZmluZWRgID8gZXhlY3V0ZShyZWR1Y2VycywgcmVkdWNlciwgc3RhdGUsIHNlZ21lbnQpIDogc3RhdGUgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBkZWJ1ZyhgICAgICAgRHluYW1pYyB0cmFuc2l0aW9uIHRvICR7dG99IGZvdW5kICh2aWEgJHt0ZXN0fSlgKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAobmV4dEJyYW5jaGVzLmxlbmd0aCA9PT0gMCAmJiBzZWdtZW50ID09PSBjb25zdGFudHMuRU5EX09GX0lOUFVUICYmIGlucHV0Lmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgcmV0dXJuIFt7XG4gICAgICAgICAgICAgICAgICAgIG5vZGU6IGNvbnN0YW50cy5OT0RFX0lOSVRJQUwsXG4gICAgICAgICAgICAgICAgICAgIHN0YXRlOiBiYXNpY0hlbHBTdGF0ZSxcbiAgICAgICAgICAgICAgICB9XTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobmV4dEJyYW5jaGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IGVycm9ycy5Vbmtub3duU3ludGF4RXJyb3IoaW5wdXQsIGJyYW5jaGVzLmZpbHRlcigoeyBub2RlIH0pID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbm9kZSAhPT0gY29uc3RhbnRzLk5PREVfRVJST1JFRDtcbiAgICAgICAgICAgIH0pLm1hcCgoeyBzdGF0ZSB9KSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgdXNhZ2U6IHN0YXRlLmNhbmRpZGF0ZVVzYWdlLCByZWFzb246IG51bGwgfTtcbiAgICAgICAgICAgIH0pKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobmV4dEJyYW5jaGVzLmV2ZXJ5KCh7IG5vZGUgfSkgPT4gbm9kZSA9PT0gY29uc3RhbnRzLk5PREVfRVJST1JFRCkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBlcnJvcnMuVW5rbm93blN5bnRheEVycm9yKGlucHV0LCBuZXh0QnJhbmNoZXMubWFwKCh7IHN0YXRlIH0pID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4geyB1c2FnZTogc3RhdGUuY2FuZGlkYXRlVXNhZ2UsIHJlYXNvbjogc3RhdGUuZXJyb3JNZXNzYWdlIH07XG4gICAgICAgICAgICB9KSk7XG4gICAgICAgIH1cbiAgICAgICAgYnJhbmNoZXMgPSB0cmltU21hbGxlckJyYW5jaGVzKG5leHRCcmFuY2hlcyk7XG4gICAgfVxuICAgIGlmIChicmFuY2hlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGRlYnVnKGAgIFJlc3VsdHM6YCk7XG4gICAgICAgIGZvciAoY29uc3QgYnJhbmNoIG9mIGJyYW5jaGVzKSB7XG4gICAgICAgICAgICBkZWJ1ZyhgICAgIC0gJHticmFuY2gubm9kZX0gLT4gJHtKU09OLnN0cmluZ2lmeShicmFuY2guc3RhdGUpfWApO1xuICAgICAgICB9XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBkZWJ1ZyhgICBObyByZXN1bHRzYCk7XG4gICAgfVxuICAgIHJldHVybiBicmFuY2hlcztcbn1cbmZ1bmN0aW9uIGNoZWNrSWZOb2RlSXNGaW5pc2hlZChub2RlLCBzdGF0ZSkge1xuICAgIGlmIChzdGF0ZS5zZWxlY3RlZEluZGV4ICE9PSBudWxsKVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG5vZGUuc3RhdGljcywgY29uc3RhbnRzLkVORF9PRl9JTlBVVCkpXG4gICAgICAgIGZvciAoY29uc3QgeyB0byB9IG9mIG5vZGUuc3RhdGljc1tjb25zdGFudHMuRU5EX09GX0lOUFVUXSlcbiAgICAgICAgICAgIGlmICh0byA9PT0gY29uc3RhbnRzLk5PREVfU1VDQ0VTUylcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICByZXR1cm4gZmFsc2U7XG59XG5mdW5jdGlvbiBzdWdnZXN0TWFjaGluZShtYWNoaW5lLCBpbnB1dCwgcGFydGlhbCkge1xuICAgIC8vIElmIHdlJ3JlIGFjY2VwdGluZyBwYXJ0aWFsIG1hdGNoZXMsIHRoZW4gZXhhY3QgbWF0Y2hlcyBuZWVkIHRvIGJlXG4gICAgLy8gcHJlZml4ZWQgd2l0aCBhbiBleHRyYSBzcGFjZS5cbiAgICBjb25zdCBwcmVmaXggPSBwYXJ0aWFsICYmIGlucHV0Lmxlbmd0aCA+IDAgPyBbYGBdIDogW107XG4gICAgY29uc3QgYnJhbmNoZXMgPSBydW5NYWNoaW5lSW50ZXJuYWwobWFjaGluZSwgaW5wdXQsIHBhcnRpYWwpO1xuICAgIGNvbnN0IHN1Z2dlc3Rpb25zID0gW107XG4gICAgY29uc3Qgc3VnZ2VzdGlvbnNKc29uID0gbmV3IFNldCgpO1xuICAgIGNvbnN0IHRyYXZlcnNlU3VnZ2VzdGlvbiA9IChzdWdnZXN0aW9uLCBub2RlLCBza2lwRmlyc3QgPSB0cnVlKSA9PiB7XG4gICAgICAgIGxldCBuZXh0Tm9kZXMgPSBbbm9kZV07XG4gICAgICAgIHdoaWxlIChuZXh0Tm9kZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgY29uc3QgY3VycmVudE5vZGVzID0gbmV4dE5vZGVzO1xuICAgICAgICAgICAgbmV4dE5vZGVzID0gW107XG4gICAgICAgICAgICBmb3IgKGNvbnN0IG5vZGUgb2YgY3VycmVudE5vZGVzKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgbm9kZURlZiA9IG1hY2hpbmUubm9kZXNbbm9kZV07XG4gICAgICAgICAgICAgICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKG5vZGVEZWYuc3RhdGljcyk7XG4gICAgICAgICAgICAgICAgLy8gVGhlIGZhY3QgdGhhdCBga2V5YCBpcyB1bnVzZWQgaXMgbGlrZWx5IGEgYnVnLCBidXQgbm8gb25lIGhhcyBpbnZlc3RpZ2F0ZWQgaXQgeWV0LlxuICAgICAgICAgICAgICAgIC8vIFRPRE86IEludmVzdGlnYXRlIGl0LlxuICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhub2RlRGVmLnN0YXRpY3MpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNlZ21lbnQgPSBrZXlzWzBdO1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHsgdG8sIHJlZHVjZXIgfSBvZiBub2RlRGVmLnN0YXRpY3Nbc2VnbWVudF0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZWR1Y2VyICE9PSBgcHVzaFBhdGhgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFza2lwRmlyc3QpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VnZ2VzdGlvbi5wdXNoKHNlZ21lbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbmV4dE5vZGVzLnB1c2godG8pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2tpcEZpcnN0ID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QganNvbiA9IEpTT04uc3RyaW5naWZ5KHN1Z2dlc3Rpb24pO1xuICAgICAgICBpZiAoc3VnZ2VzdGlvbnNKc29uLmhhcyhqc29uKSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgc3VnZ2VzdGlvbnMucHVzaChzdWdnZXN0aW9uKTtcbiAgICAgICAgc3VnZ2VzdGlvbnNKc29uLmFkZChqc29uKTtcbiAgICB9O1xuICAgIGZvciAoY29uc3QgeyBub2RlLCBzdGF0ZSB9IG9mIGJyYW5jaGVzKSB7XG4gICAgICAgIGlmIChzdGF0ZS5yZW1haW5kZXIgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHRyYXZlcnNlU3VnZ2VzdGlvbihbc3RhdGUucmVtYWluZGVyXSwgbm9kZSk7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBub2RlRGVmID0gbWFjaGluZS5ub2Rlc1tub2RlXTtcbiAgICAgICAgY29uc3QgaXNGaW5pc2hlZCA9IGNoZWNrSWZOb2RlSXNGaW5pc2hlZChub2RlRGVmLCBzdGF0ZSk7XG4gICAgICAgIGZvciAoY29uc3QgW2NhbmRpZGF0ZSwgdHJhbnNpdGlvbnNdIG9mIE9iamVjdC5lbnRyaWVzKG5vZGVEZWYuc3RhdGljcykpXG4gICAgICAgICAgICBpZiAoKGlzRmluaXNoZWQgJiYgY2FuZGlkYXRlICE9PSBjb25zdGFudHMuRU5EX09GX0lOUFVUKSB8fCAoIWNhbmRpZGF0ZS5zdGFydHNXaXRoKGAtYCkgJiYgdHJhbnNpdGlvbnMuc29tZSgoeyByZWR1Y2VyIH0pID0+IHJlZHVjZXIgPT09IGBwdXNoUGF0aGApKSlcbiAgICAgICAgICAgICAgICB0cmF2ZXJzZVN1Z2dlc3Rpb24oWy4uLnByZWZpeCwgY2FuZGlkYXRlXSwgbm9kZSk7XG4gICAgICAgIGlmICghaXNGaW5pc2hlZClcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICBmb3IgKGNvbnN0IFt0ZXN0LCB7IHRvIH1dIG9mIG5vZGVEZWYuZHluYW1pY3MpIHtcbiAgICAgICAgICAgIGlmICh0byA9PT0gY29uc3RhbnRzLk5PREVfRVJST1JFRClcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIGNvbnN0IHRva2VucyA9IHN1Z2dlc3QodGVzdCwgc3RhdGUpO1xuICAgICAgICAgICAgaWYgKHRva2VucyA9PT0gbnVsbClcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgdG9rZW4gb2YgdG9rZW5zKSB7XG4gICAgICAgICAgICAgICAgdHJhdmVyc2VTdWdnZXN0aW9uKFsuLi5wcmVmaXgsIHRva2VuXSwgbm9kZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIFsuLi5zdWdnZXN0aW9uc10uc29ydCgpO1xufVxuZnVuY3Rpb24gcnVuTWFjaGluZShtYWNoaW5lLCBpbnB1dCkge1xuICAgIGNvbnN0IGJyYW5jaGVzID0gcnVuTWFjaGluZUludGVybmFsKG1hY2hpbmUsIFsuLi5pbnB1dCwgY29uc3RhbnRzLkVORF9PRl9JTlBVVF0pO1xuICAgIHJldHVybiBzZWxlY3RCZXN0U3RhdGUoaW5wdXQsIGJyYW5jaGVzLm1hcCgoeyBzdGF0ZSB9KSA9PiB7XG4gICAgICAgIHJldHVybiBzdGF0ZTtcbiAgICB9KSk7XG59XG5mdW5jdGlvbiB0cmltU21hbGxlckJyYW5jaGVzKGJyYW5jaGVzKSB7XG4gICAgbGV0IG1heFBhdGhTaXplID0gMDtcbiAgICBmb3IgKGNvbnN0IHsgc3RhdGUgfSBvZiBicmFuY2hlcylcbiAgICAgICAgaWYgKHN0YXRlLnBhdGgubGVuZ3RoID4gbWF4UGF0aFNpemUpXG4gICAgICAgICAgICBtYXhQYXRoU2l6ZSA9IHN0YXRlLnBhdGgubGVuZ3RoO1xuICAgIHJldHVybiBicmFuY2hlcy5maWx0ZXIoKHsgc3RhdGUgfSkgPT4ge1xuICAgICAgICByZXR1cm4gc3RhdGUucGF0aC5sZW5ndGggPT09IG1heFBhdGhTaXplO1xuICAgIH0pO1xufVxuZnVuY3Rpb24gc2VsZWN0QmVzdFN0YXRlKGlucHV0LCBzdGF0ZXMpIHtcbiAgICBjb25zdCB0ZXJtaW5hbFN0YXRlcyA9IHN0YXRlcy5maWx0ZXIoc3RhdGUgPT4ge1xuICAgICAgICByZXR1cm4gc3RhdGUuc2VsZWN0ZWRJbmRleCAhPT0gbnVsbDtcbiAgICB9KTtcbiAgICBpZiAodGVybWluYWxTdGF0ZXMubGVuZ3RoID09PSAwKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoKTtcbiAgICBjb25zdCByZXF1aXJlZE9wdGlvbnNTZXRTdGF0ZXMgPSB0ZXJtaW5hbFN0YXRlcy5maWx0ZXIoc3RhdGUgPT4gc3RhdGUuc2VsZWN0ZWRJbmRleCA9PT0gY29uc3RhbnRzLkhFTFBfQ09NTUFORF9JTkRFWCB8fCBzdGF0ZS5yZXF1aXJlZE9wdGlvbnMuZXZlcnkobmFtZXMgPT4gbmFtZXMuc29tZShuYW1lID0+IHN0YXRlLm9wdGlvbnMuZmluZChvcHQgPT4gb3B0Lm5hbWUgPT09IG5hbWUpKSkpO1xuICAgIGlmIChyZXF1aXJlZE9wdGlvbnNTZXRTdGF0ZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHRocm93IG5ldyBlcnJvcnMuVW5rbm93blN5bnRheEVycm9yKGlucHV0LCB0ZXJtaW5hbFN0YXRlcy5tYXAoc3RhdGUgPT4gKHtcbiAgICAgICAgICAgIHVzYWdlOiBzdGF0ZS5jYW5kaWRhdGVVc2FnZSxcbiAgICAgICAgICAgIHJlYXNvbjogbnVsbCxcbiAgICAgICAgfSkpKTtcbiAgICB9XG4gICAgbGV0IG1heFBhdGhTaXplID0gMDtcbiAgICBmb3IgKGNvbnN0IHN0YXRlIG9mIHJlcXVpcmVkT3B0aW9uc1NldFN0YXRlcylcbiAgICAgICAgaWYgKHN0YXRlLnBhdGgubGVuZ3RoID4gbWF4UGF0aFNpemUpXG4gICAgICAgICAgICBtYXhQYXRoU2l6ZSA9IHN0YXRlLnBhdGgubGVuZ3RoO1xuICAgIGNvbnN0IGJlc3RQYXRoQnJhbmNoZXMgPSByZXF1aXJlZE9wdGlvbnNTZXRTdGF0ZXMuZmlsdGVyKHN0YXRlID0+IHtcbiAgICAgICAgcmV0dXJuIHN0YXRlLnBhdGgubGVuZ3RoID09PSBtYXhQYXRoU2l6ZTtcbiAgICB9KTtcbiAgICBjb25zdCBnZXRQb3NpdGlvbmFsQ291bnQgPSAoc3RhdGUpID0+IHN0YXRlLnBvc2l0aW9uYWxzLmZpbHRlcigoeyBleHRyYSB9KSA9PiB7XG4gICAgICAgIHJldHVybiAhZXh0cmE7XG4gICAgfSkubGVuZ3RoICsgc3RhdGUub3B0aW9ucy5sZW5ndGg7XG4gICAgY29uc3Qgc3RhdGVzV2l0aFBvc2l0aW9uYWxDb3VudCA9IGJlc3RQYXRoQnJhbmNoZXMubWFwKHN0YXRlID0+IHtcbiAgICAgICAgcmV0dXJuIHsgc3RhdGUsIHBvc2l0aW9uYWxDb3VudDogZ2V0UG9zaXRpb25hbENvdW50KHN0YXRlKSB9O1xuICAgIH0pO1xuICAgIGxldCBtYXhQb3NpdGlvbmFsQ291bnQgPSAwO1xuICAgIGZvciAoY29uc3QgeyBwb3NpdGlvbmFsQ291bnQgfSBvZiBzdGF0ZXNXaXRoUG9zaXRpb25hbENvdW50KVxuICAgICAgICBpZiAocG9zaXRpb25hbENvdW50ID4gbWF4UG9zaXRpb25hbENvdW50KVxuICAgICAgICAgICAgbWF4UG9zaXRpb25hbENvdW50ID0gcG9zaXRpb25hbENvdW50O1xuICAgIGNvbnN0IGJlc3RQb3NpdGlvbmFsU3RhdGVzID0gc3RhdGVzV2l0aFBvc2l0aW9uYWxDb3VudC5maWx0ZXIoKHsgcG9zaXRpb25hbENvdW50IH0pID0+IHtcbiAgICAgICAgcmV0dXJuIHBvc2l0aW9uYWxDb3VudCA9PT0gbWF4UG9zaXRpb25hbENvdW50O1xuICAgIH0pLm1hcCgoeyBzdGF0ZSB9KSA9PiB7XG4gICAgICAgIHJldHVybiBzdGF0ZTtcbiAgICB9KTtcbiAgICBjb25zdCBmaXhlZFN0YXRlcyA9IGFnZ3JlZ2F0ZUhlbHBTdGF0ZXMoYmVzdFBvc2l0aW9uYWxTdGF0ZXMpO1xuICAgIGlmIChmaXhlZFN0YXRlcy5sZW5ndGggPiAxKVxuICAgICAgICB0aHJvdyBuZXcgZXJyb3JzLkFtYmlndW91c1N5bnRheEVycm9yKGlucHV0LCBmaXhlZFN0YXRlcy5tYXAoc3RhdGUgPT4gc3RhdGUuY2FuZGlkYXRlVXNhZ2UpKTtcbiAgICByZXR1cm4gZml4ZWRTdGF0ZXNbMF07XG59XG5mdW5jdGlvbiBhZ2dyZWdhdGVIZWxwU3RhdGVzKHN0YXRlcykge1xuICAgIGNvbnN0IG5vdEhlbHBzID0gW107XG4gICAgY29uc3QgaGVscHMgPSBbXTtcbiAgICBmb3IgKGNvbnN0IHN0YXRlIG9mIHN0YXRlcykge1xuICAgICAgICBpZiAoc3RhdGUuc2VsZWN0ZWRJbmRleCA9PT0gY29uc3RhbnRzLkhFTFBfQ09NTUFORF9JTkRFWCkge1xuICAgICAgICAgICAgaGVscHMucHVzaChzdGF0ZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBub3RIZWxwcy5wdXNoKHN0YXRlKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAoaGVscHMubGVuZ3RoID4gMCkge1xuICAgICAgICBub3RIZWxwcy5wdXNoKHtcbiAgICAgICAgICAgIC4uLmJhc2ljSGVscFN0YXRlLFxuICAgICAgICAgICAgcGF0aDogZmluZENvbW1vblByZWZpeCguLi5oZWxwcy5tYXAoc3RhdGUgPT4gc3RhdGUucGF0aCkpLFxuICAgICAgICAgICAgb3B0aW9uczogaGVscHMucmVkdWNlKChvcHRpb25zLCBzdGF0ZSkgPT4gb3B0aW9ucy5jb25jYXQoc3RhdGUub3B0aW9ucyksIFtdKSxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBub3RIZWxwcztcbn1cbmZ1bmN0aW9uIGZpbmRDb21tb25QcmVmaXgoZmlyc3RQYXRoLCBzZWNvbmRQYXRoLCAuLi5yZXN0KSB7XG4gICAgaWYgKHNlY29uZFBhdGggPT09IHVuZGVmaW5lZClcbiAgICAgICAgcmV0dXJuIEFycmF5LmZyb20oZmlyc3RQYXRoKTtcbiAgICByZXR1cm4gZmluZENvbW1vblByZWZpeChmaXJzdFBhdGguZmlsdGVyKChzZWdtZW50LCBpKSA9PiBzZWdtZW50ID09PSBzZWNvbmRQYXRoW2ldKSwgLi4ucmVzdCk7XG59XG5mdW5jdGlvbiBtYWtlTm9kZSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBkeW5hbWljczogW10sXG4gICAgICAgIHNob3J0Y3V0czogW10sXG4gICAgICAgIHN0YXRpY3M6IHt9LFxuICAgIH07XG59XG5mdW5jdGlvbiBpc1Rlcm1pbmFsTm9kZShub2RlKSB7XG4gICAgcmV0dXJuIG5vZGUgPT09IGNvbnN0YW50cy5OT0RFX1NVQ0NFU1MgfHwgbm9kZSA9PT0gY29uc3RhbnRzLk5PREVfRVJST1JFRDtcbn1cbmZ1bmN0aW9uIGNsb25lVHJhbnNpdGlvbihpbnB1dCwgb2Zmc2V0ID0gMCkge1xuICAgIHJldHVybiB7XG4gICAgICAgIHRvOiAhaXNUZXJtaW5hbE5vZGUoaW5wdXQudG8pID8gaW5wdXQudG8gPiAyID8gaW5wdXQudG8gKyBvZmZzZXQgLSAyIDogaW5wdXQudG8gKyBvZmZzZXQgOiBpbnB1dC50byxcbiAgICAgICAgcmVkdWNlcjogaW5wdXQucmVkdWNlcixcbiAgICB9O1xufVxuZnVuY3Rpb24gY2xvbmVOb2RlKGlucHV0LCBvZmZzZXQgPSAwKSB7XG4gICAgY29uc3Qgb3V0cHV0ID0gbWFrZU5vZGUoKTtcbiAgICBmb3IgKGNvbnN0IFt0ZXN0LCB0cmFuc2l0aW9uXSBvZiBpbnB1dC5keW5hbWljcylcbiAgICAgICAgb3V0cHV0LmR5bmFtaWNzLnB1c2goW3Rlc3QsIGNsb25lVHJhbnNpdGlvbih0cmFuc2l0aW9uLCBvZmZzZXQpXSk7XG4gICAgZm9yIChjb25zdCB0cmFuc2l0aW9uIG9mIGlucHV0LnNob3J0Y3V0cylcbiAgICAgICAgb3V0cHV0LnNob3J0Y3V0cy5wdXNoKGNsb25lVHJhbnNpdGlvbih0cmFuc2l0aW9uLCBvZmZzZXQpKTtcbiAgICBmb3IgKGNvbnN0IFtzZWdtZW50LCB0cmFuc2l0aW9uc10gb2YgT2JqZWN0LmVudHJpZXMoaW5wdXQuc3RhdGljcykpXG4gICAgICAgIG91dHB1dC5zdGF0aWNzW3NlZ21lbnRdID0gdHJhbnNpdGlvbnMubWFwKHRyYW5zaXRpb24gPT4gY2xvbmVUcmFuc2l0aW9uKHRyYW5zaXRpb24sIG9mZnNldCkpO1xuICAgIHJldHVybiBvdXRwdXQ7XG59XG5mdW5jdGlvbiByZWdpc3RlckR5bmFtaWMobWFjaGluZSwgZnJvbSwgdGVzdCwgdG8sIHJlZHVjZXIpIHtcbiAgICBtYWNoaW5lLm5vZGVzW2Zyb21dLmR5bmFtaWNzLnB1c2goW1xuICAgICAgICB0ZXN0LFxuICAgICAgICB7IHRvLCByZWR1Y2VyOiByZWR1Y2VyIH0sXG4gICAgXSk7XG59XG5mdW5jdGlvbiByZWdpc3RlclNob3J0Y3V0KG1hY2hpbmUsIGZyb20sIHRvLCByZWR1Y2VyKSB7XG4gICAgbWFjaGluZS5ub2Rlc1tmcm9tXS5zaG9ydGN1dHMucHVzaCh7IHRvLCByZWR1Y2VyOiByZWR1Y2VyIH0pO1xufVxuZnVuY3Rpb24gcmVnaXN0ZXJTdGF0aWMobWFjaGluZSwgZnJvbSwgdGVzdCwgdG8sIHJlZHVjZXIpIHtcbiAgICBjb25zdCBzdG9yZSA9ICFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobWFjaGluZS5ub2Rlc1tmcm9tXS5zdGF0aWNzLCB0ZXN0KVxuICAgICAgICA/IG1hY2hpbmUubm9kZXNbZnJvbV0uc3RhdGljc1t0ZXN0XSA9IFtdXG4gICAgICAgIDogbWFjaGluZS5ub2Rlc1tmcm9tXS5zdGF0aWNzW3Rlc3RdO1xuICAgIHN0b3JlLnB1c2goeyB0bywgcmVkdWNlcjogcmVkdWNlciB9KTtcbn1cbmZ1bmN0aW9uIGV4ZWN1dGUoc3RvcmUsIGNhbGxiYWNrLCBzdGF0ZSwgc2VnbWVudCkge1xuICAgIC8vIFR5cGVTY3JpcHQncyBjb250cm9sIGZsb3cgY2FuJ3QgcHJvcGVybHkgbmFycm93XG4gICAgLy8gZ2VuZXJpYyBjb25kaXRpb25hbHMgZm9yIHNvbWUgbXlzdGVyaW91cyByZWFzb25cbiAgICBpZiAoQXJyYXkuaXNBcnJheShjYWxsYmFjaykpIHtcbiAgICAgICAgY29uc3QgW25hbWUsIC4uLmFyZ3NdID0gY2FsbGJhY2s7XG4gICAgICAgIHJldHVybiBzdG9yZVtuYW1lXShzdGF0ZSwgc2VnbWVudCwgLi4uYXJncyk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICByZXR1cm4gc3RvcmVbY2FsbGJhY2tdKHN0YXRlLCBzZWdtZW50KTtcbiAgICB9XG59XG5mdW5jdGlvbiBzdWdnZXN0KGNhbGxiYWNrLCBzdGF0ZSkge1xuICAgIGNvbnN0IGZuID0gQXJyYXkuaXNBcnJheShjYWxsYmFjaylcbiAgICAgICAgPyB0ZXN0c1tjYWxsYmFja1swXV1cbiAgICAgICAgOiB0ZXN0c1tjYWxsYmFja107XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGlmICh0eXBlb2YgZm4uc3VnZ2VzdCA9PT0gYHVuZGVmaW5lZGApXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIGNvbnN0IGFyZ3MgPSBBcnJheS5pc0FycmF5KGNhbGxiYWNrKVxuICAgICAgICA/IGNhbGxiYWNrLnNsaWNlKDEpXG4gICAgICAgIDogW107XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHJldHVybiBmbi5zdWdnZXN0KHN0YXRlLCAuLi5hcmdzKTtcbn1cbmNvbnN0IHRlc3RzID0ge1xuICAgIGFsd2F5czogKCkgPT4ge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9LFxuICAgIGlzT3B0aW9uTGlrZTogKHN0YXRlLCBzZWdtZW50KSA9PiB7XG4gICAgICAgIHJldHVybiAhc3RhdGUuaWdub3JlT3B0aW9ucyAmJiAoc2VnbWVudCAhPT0gYC1gICYmIHNlZ21lbnQuc3RhcnRzV2l0aChgLWApKTtcbiAgICB9LFxuICAgIGlzTm90T3B0aW9uTGlrZTogKHN0YXRlLCBzZWdtZW50KSA9PiB7XG4gICAgICAgIHJldHVybiBzdGF0ZS5pZ25vcmVPcHRpb25zIHx8IHNlZ21lbnQgPT09IGAtYCB8fCAhc2VnbWVudC5zdGFydHNXaXRoKGAtYCk7XG4gICAgfSxcbiAgICBpc09wdGlvbjogKHN0YXRlLCBzZWdtZW50LCBuYW1lLCBoaWRkZW4pID0+IHtcbiAgICAgICAgcmV0dXJuICFzdGF0ZS5pZ25vcmVPcHRpb25zICYmIHNlZ21lbnQgPT09IG5hbWU7XG4gICAgfSxcbiAgICBpc0JhdGNoT3B0aW9uOiAoc3RhdGUsIHNlZ21lbnQsIG5hbWVzKSA9PiB7XG4gICAgICAgIHJldHVybiAhc3RhdGUuaWdub3JlT3B0aW9ucyAmJiBjb25zdGFudHMuQkFUQ0hfUkVHRVgudGVzdChzZWdtZW50KSAmJiBbLi4uc2VnbWVudC5zbGljZSgxKV0uZXZlcnkobmFtZSA9PiBuYW1lcy5pbmNsdWRlcyhgLSR7bmFtZX1gKSk7XG4gICAgfSxcbiAgICBpc0JvdW5kT3B0aW9uOiAoc3RhdGUsIHNlZ21lbnQsIG5hbWVzLCBvcHRpb25zKSA9PiB7XG4gICAgICAgIGNvbnN0IG9wdGlvblBhcnNpbmcgPSBzZWdtZW50Lm1hdGNoKGNvbnN0YW50cy5CSU5ESU5HX1JFR0VYKTtcbiAgICAgICAgcmV0dXJuICFzdGF0ZS5pZ25vcmVPcHRpb25zICYmICEhb3B0aW9uUGFyc2luZyAmJiBjb25zdGFudHMuT1BUSU9OX1JFR0VYLnRlc3Qob3B0aW9uUGFyc2luZ1sxXSkgJiYgbmFtZXMuaW5jbHVkZXMob3B0aW9uUGFyc2luZ1sxXSlcbiAgICAgICAgICAgIC8vIERpc2FsbG93IGJvdW5kIG9wdGlvbnMgd2l0aCBubyBhcmd1bWVudHMgKGkuZS4gYm9vbGVhbnMpXG4gICAgICAgICAgICAmJiBvcHRpb25zLmZpbHRlcihvcHQgPT4gb3B0Lm5hbWVzLmluY2x1ZGVzKG9wdGlvblBhcnNpbmdbMV0pKS5ldmVyeShvcHQgPT4gb3B0LmFsbG93QmluZGluZyk7XG4gICAgfSxcbiAgICBpc05lZ2F0ZWRPcHRpb246IChzdGF0ZSwgc2VnbWVudCwgbmFtZSkgPT4ge1xuICAgICAgICByZXR1cm4gIXN0YXRlLmlnbm9yZU9wdGlvbnMgJiYgc2VnbWVudCA9PT0gYC0tbm8tJHtuYW1lLnNsaWNlKDIpfWA7XG4gICAgfSxcbiAgICBpc0hlbHA6IChzdGF0ZSwgc2VnbWVudCkgPT4ge1xuICAgICAgICByZXR1cm4gIXN0YXRlLmlnbm9yZU9wdGlvbnMgJiYgY29uc3RhbnRzLkhFTFBfUkVHRVgudGVzdChzZWdtZW50KTtcbiAgICB9LFxuICAgIGlzVW5zdXBwb3J0ZWRPcHRpb246IChzdGF0ZSwgc2VnbWVudCwgbmFtZXMpID0+IHtcbiAgICAgICAgcmV0dXJuICFzdGF0ZS5pZ25vcmVPcHRpb25zICYmIHNlZ21lbnQuc3RhcnRzV2l0aChgLWApICYmIGNvbnN0YW50cy5PUFRJT05fUkVHRVgudGVzdChzZWdtZW50KSAmJiAhbmFtZXMuaW5jbHVkZXMoc2VnbWVudCk7XG4gICAgfSxcbiAgICBpc0ludmFsaWRPcHRpb246IChzdGF0ZSwgc2VnbWVudCkgPT4ge1xuICAgICAgICByZXR1cm4gIXN0YXRlLmlnbm9yZU9wdGlvbnMgJiYgc2VnbWVudC5zdGFydHNXaXRoKGAtYCkgJiYgIWNvbnN0YW50cy5PUFRJT05fUkVHRVgudGVzdChzZWdtZW50KTtcbiAgICB9LFxufTtcbi8vIEB0cy1pZ25vcmVcbnRlc3RzLmlzT3B0aW9uLnN1Z2dlc3QgPSAoc3RhdGUsIG5hbWUsIGhpZGRlbiA9IHRydWUpID0+IHtcbiAgICByZXR1cm4gIWhpZGRlbiA/IFtuYW1lXSA6IG51bGw7XG59O1xuY29uc3QgcmVkdWNlcnMgPSB7XG4gICAgc2V0Q2FuZGlkYXRlU3RhdGU6IChzdGF0ZSwgc2VnbWVudCwgY2FuZGlkYXRlU3RhdGUpID0+IHtcbiAgICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIC4uLmNhbmRpZGF0ZVN0YXRlIH07XG4gICAgfSxcbiAgICBzZXRTZWxlY3RlZEluZGV4OiAoc3RhdGUsIHNlZ21lbnQsIGluZGV4KSA9PiB7XG4gICAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBzZWxlY3RlZEluZGV4OiBpbmRleCB9O1xuICAgIH0sXG4gICAgcHVzaEJhdGNoOiAoc3RhdGUsIHNlZ21lbnQpID0+IHtcbiAgICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIG9wdGlvbnM6IHN0YXRlLm9wdGlvbnMuY29uY2F0KFsuLi5zZWdtZW50LnNsaWNlKDEpXS5tYXAobmFtZSA9PiAoeyBuYW1lOiBgLSR7bmFtZX1gLCB2YWx1ZTogdHJ1ZSB9KSkpIH07XG4gICAgfSxcbiAgICBwdXNoQm91bmQ6IChzdGF0ZSwgc2VnbWVudCkgPT4ge1xuICAgICAgICBjb25zdCBbLCBuYW1lLCB2YWx1ZV0gPSBzZWdtZW50Lm1hdGNoKGNvbnN0YW50cy5CSU5ESU5HX1JFR0VYKTtcbiAgICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIG9wdGlvbnM6IHN0YXRlLm9wdGlvbnMuY29uY2F0KHsgbmFtZSwgdmFsdWUgfSkgfTtcbiAgICB9LFxuICAgIHB1c2hQYXRoOiAoc3RhdGUsIHNlZ21lbnQpID0+IHtcbiAgICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIHBhdGg6IHN0YXRlLnBhdGguY29uY2F0KHNlZ21lbnQpIH07XG4gICAgfSxcbiAgICBwdXNoUG9zaXRpb25hbDogKHN0YXRlLCBzZWdtZW50KSA9PiB7XG4gICAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBwb3NpdGlvbmFsczogc3RhdGUucG9zaXRpb25hbHMuY29uY2F0KHsgdmFsdWU6IHNlZ21lbnQsIGV4dHJhOiBmYWxzZSB9KSB9O1xuICAgIH0sXG4gICAgcHVzaEV4dHJhOiAoc3RhdGUsIHNlZ21lbnQpID0+IHtcbiAgICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIHBvc2l0aW9uYWxzOiBzdGF0ZS5wb3NpdGlvbmFscy5jb25jYXQoeyB2YWx1ZTogc2VnbWVudCwgZXh0cmE6IHRydWUgfSkgfTtcbiAgICB9LFxuICAgIHB1c2hFeHRyYU5vTGltaXRzOiAoc3RhdGUsIHNlZ21lbnQpID0+IHtcbiAgICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIHBvc2l0aW9uYWxzOiBzdGF0ZS5wb3NpdGlvbmFscy5jb25jYXQoeyB2YWx1ZTogc2VnbWVudCwgZXh0cmE6IE5vTGltaXRzIH0pIH07XG4gICAgfSxcbiAgICBwdXNoVHJ1ZTogKHN0YXRlLCBzZWdtZW50LCBuYW1lID0gc2VnbWVudCkgPT4ge1xuICAgICAgICByZXR1cm4geyAuLi5zdGF0ZSwgb3B0aW9uczogc3RhdGUub3B0aW9ucy5jb25jYXQoeyBuYW1lOiBzZWdtZW50LCB2YWx1ZTogdHJ1ZSB9KSB9O1xuICAgIH0sXG4gICAgcHVzaEZhbHNlOiAoc3RhdGUsIHNlZ21lbnQsIG5hbWUgPSBzZWdtZW50KSA9PiB7XG4gICAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBvcHRpb25zOiBzdGF0ZS5vcHRpb25zLmNvbmNhdCh7IG5hbWUsIHZhbHVlOiBmYWxzZSB9KSB9O1xuICAgIH0sXG4gICAgcHVzaFVuZGVmaW5lZDogKHN0YXRlLCBzZWdtZW50KSA9PiB7XG4gICAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBvcHRpb25zOiBzdGF0ZS5vcHRpb25zLmNvbmNhdCh7IG5hbWU6IHNlZ21lbnQsIHZhbHVlOiB1bmRlZmluZWQgfSkgfTtcbiAgICB9LFxuICAgIHB1c2hTdHJpbmdWYWx1ZTogKHN0YXRlLCBzZWdtZW50KSA9PiB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgY29uc3QgY29weSA9IHsgLi4uc3RhdGUsIG9wdGlvbnM6IFsuLi5zdGF0ZS5vcHRpb25zXSB9O1xuICAgICAgICBjb25zdCBsYXN0T3B0aW9uID0gc3RhdGUub3B0aW9uc1tzdGF0ZS5vcHRpb25zLmxlbmd0aCAtIDFdO1xuICAgICAgICBsYXN0T3B0aW9uLnZhbHVlID0gKChfYSA9IGxhc3RPcHRpb24udmFsdWUpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IFtdKS5jb25jYXQoW3NlZ21lbnRdKTtcbiAgICAgICAgcmV0dXJuIGNvcHk7XG4gICAgfSxcbiAgICBzZXRTdHJpbmdWYWx1ZTogKHN0YXRlLCBzZWdtZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IGNvcHkgPSB7IC4uLnN0YXRlLCBvcHRpb25zOiBbLi4uc3RhdGUub3B0aW9uc10gfTtcbiAgICAgICAgY29uc3QgbGFzdE9wdGlvbiA9IHN0YXRlLm9wdGlvbnNbc3RhdGUub3B0aW9ucy5sZW5ndGggLSAxXTtcbiAgICAgICAgbGFzdE9wdGlvbi52YWx1ZSA9IHNlZ21lbnQ7XG4gICAgICAgIHJldHVybiBjb3B5O1xuICAgIH0sXG4gICAgaW5oaWJhdGVPcHRpb25zOiAoc3RhdGUpID0+IHtcbiAgICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIGlnbm9yZU9wdGlvbnM6IHRydWUgfTtcbiAgICB9LFxuICAgIHVzZUhlbHA6IChzdGF0ZSwgc2VnbWVudCwgY29tbWFuZCkgPT4ge1xuICAgICAgICBjb25zdCBbLCAvKiBuYW1lICovICwgaW5kZXhdID0gc2VnbWVudC5tYXRjaChjb25zdGFudHMuSEVMUF9SRUdFWCk7XG4gICAgICAgIGlmICh0eXBlb2YgaW5kZXggIT09IGB1bmRlZmluZWRgKSB7XG4gICAgICAgICAgICByZXR1cm4geyAuLi5zdGF0ZSwgb3B0aW9uczogW3sgbmFtZTogYC1jYCwgdmFsdWU6IFN0cmluZyhjb21tYW5kKSB9LCB7IG5hbWU6IGAtaWAsIHZhbHVlOiBpbmRleCB9XSB9O1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIG9wdGlvbnM6IFt7IG5hbWU6IGAtY2AsIHZhbHVlOiBTdHJpbmcoY29tbWFuZCkgfV0gfTtcbiAgICAgICAgfVxuICAgIH0sXG4gICAgc2V0RXJyb3I6IChzdGF0ZSwgc2VnbWVudCwgZXJyb3JNZXNzYWdlKSA9PiB7XG4gICAgICAgIGlmIChzZWdtZW50ID09PSBjb25zdGFudHMuRU5EX09GX0lOUFVUKSB7XG4gICAgICAgICAgICByZXR1cm4geyAuLi5zdGF0ZSwgZXJyb3JNZXNzYWdlOiBgJHtlcnJvck1lc3NhZ2V9LmAgfTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBlcnJvck1lc3NhZ2U6IGAke2Vycm9yTWVzc2FnZX0gKFwiJHtzZWdtZW50fVwiKS5gIH07XG4gICAgICAgIH1cbiAgICB9LFxuICAgIHNldE9wdGlvbkFyaXR5RXJyb3I6IChzdGF0ZSwgc2VnbWVudCkgPT4ge1xuICAgICAgICBjb25zdCBsYXN0T3B0aW9uID0gc3RhdGUub3B0aW9uc1tzdGF0ZS5vcHRpb25zLmxlbmd0aCAtIDFdO1xuICAgICAgICByZXR1cm4geyAuLi5zdGF0ZSwgZXJyb3JNZXNzYWdlOiBgTm90IGVub3VnaCBhcmd1bWVudHMgdG8gb3B0aW9uICR7bGFzdE9wdGlvbi5uYW1lfS5gIH07XG4gICAgfSxcbn07XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmNvbnN0IE5vTGltaXRzID0gU3ltYm9sKCk7XG5jbGFzcyBDb21tYW5kQnVpbGRlciB7XG4gICAgY29uc3RydWN0b3IoY2xpSW5kZXgsIGNsaU9wdHMpIHtcbiAgICAgICAgdGhpcy5hbGxPcHRpb25OYW1lcyA9IFtdO1xuICAgICAgICB0aGlzLmFyaXR5ID0geyBsZWFkaW5nOiBbXSwgdHJhaWxpbmc6IFtdLCBleHRyYTogW10sIHByb3h5OiBmYWxzZSB9O1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSBbXTtcbiAgICAgICAgdGhpcy5wYXRocyA9IFtdO1xuICAgICAgICB0aGlzLmNsaUluZGV4ID0gY2xpSW5kZXg7XG4gICAgICAgIHRoaXMuY2xpT3B0cyA9IGNsaU9wdHM7XG4gICAgfVxuICAgIGFkZFBhdGgocGF0aCkge1xuICAgICAgICB0aGlzLnBhdGhzLnB1c2gocGF0aCk7XG4gICAgfVxuICAgIHNldEFyaXR5KHsgbGVhZGluZyA9IHRoaXMuYXJpdHkubGVhZGluZywgdHJhaWxpbmcgPSB0aGlzLmFyaXR5LnRyYWlsaW5nLCBleHRyYSA9IHRoaXMuYXJpdHkuZXh0cmEsIHByb3h5ID0gdGhpcy5hcml0eS5wcm94eSB9KSB7XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5hcml0eSwgeyBsZWFkaW5nLCB0cmFpbGluZywgZXh0cmEsIHByb3h5IH0pO1xuICAgIH1cbiAgICBhZGRQb3NpdGlvbmFsKHsgbmFtZSA9IGBhcmdgLCByZXF1aXJlZCA9IHRydWUgfSA9IHt9KSB7XG4gICAgICAgIGlmICghcmVxdWlyZWQgJiYgdGhpcy5hcml0eS5leHRyYSA9PT0gTm9MaW1pdHMpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE9wdGlvbmFsIHBhcmFtZXRlcnMgY2Fubm90IGJlIGRlY2xhcmVkIHdoZW4gdXNpbmcgLnJlc3QoKSBvciAucHJveHkoKWApO1xuICAgICAgICBpZiAoIXJlcXVpcmVkICYmIHRoaXMuYXJpdHkudHJhaWxpbmcubGVuZ3RoID4gMClcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgT3B0aW9uYWwgcGFyYW1ldGVycyBjYW5ub3QgYmUgZGVjbGFyZWQgYWZ0ZXIgdGhlIHJlcXVpcmVkIHRyYWlsaW5nIHBvc2l0aW9uYWwgYXJndW1lbnRzYCk7XG4gICAgICAgIGlmICghcmVxdWlyZWQgJiYgdGhpcy5hcml0eS5leHRyYSAhPT0gTm9MaW1pdHMpIHtcbiAgICAgICAgICAgIHRoaXMuYXJpdHkuZXh0cmEucHVzaChuYW1lKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0aGlzLmFyaXR5LmV4dHJhICE9PSBOb0xpbWl0cyAmJiB0aGlzLmFyaXR5LmV4dHJhLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgdGhpcy5hcml0eS5sZWFkaW5nLnB1c2gobmFtZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmFyaXR5LnRyYWlsaW5nLnB1c2gobmFtZSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgYWRkUmVzdCh7IG5hbWUgPSBgYXJnYCwgcmVxdWlyZWQgPSAwIH0gPSB7fSkge1xuICAgICAgICBpZiAodGhpcy5hcml0eS5leHRyYSA9PT0gTm9MaW1pdHMpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEluZmluaXRlIGxpc3RzIGNhbm5vdCBiZSBkZWNsYXJlZCBtdWx0aXBsZSB0aW1lcyBpbiB0aGUgc2FtZSBjb21tYW5kYCk7XG4gICAgICAgIGlmICh0aGlzLmFyaXR5LnRyYWlsaW5nLmxlbmd0aCA+IDApXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEluZmluaXRlIGxpc3RzIGNhbm5vdCBiZSBkZWNsYXJlZCBhZnRlciB0aGUgcmVxdWlyZWQgdHJhaWxpbmcgcG9zaXRpb25hbCBhcmd1bWVudHNgKTtcbiAgICAgICAgZm9yIChsZXQgdCA9IDA7IHQgPCByZXF1aXJlZDsgKyt0KVxuICAgICAgICAgICAgdGhpcy5hZGRQb3NpdGlvbmFsKHsgbmFtZSB9KTtcbiAgICAgICAgdGhpcy5hcml0eS5leHRyYSA9IE5vTGltaXRzO1xuICAgIH1cbiAgICBhZGRQcm94eSh7IHJlcXVpcmVkID0gMCB9ID0ge30pIHtcbiAgICAgICAgdGhpcy5hZGRSZXN0KHsgcmVxdWlyZWQgfSk7XG4gICAgICAgIHRoaXMuYXJpdHkucHJveHkgPSB0cnVlO1xuICAgIH1cbiAgICBhZGRPcHRpb24oeyBuYW1lcywgZGVzY3JpcHRpb24sIGFyaXR5ID0gMCwgaGlkZGVuID0gZmFsc2UsIHJlcXVpcmVkID0gZmFsc2UsIGFsbG93QmluZGluZyA9IHRydWUgfSkge1xuICAgICAgICBpZiAoIWFsbG93QmluZGluZyAmJiBhcml0eSA+IDEpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSBhcml0eSBjYW5ub3QgYmUgaGlnaGVyIHRoYW4gMSB3aGVuIHRoZSBvcHRpb24gb25seSBzdXBwb3J0cyB0aGUgLS1hcmc9dmFsdWUgc3ludGF4YCk7XG4gICAgICAgIGlmICghTnVtYmVyLmlzSW50ZWdlcihhcml0eSkpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSBhcml0eSBtdXN0IGJlIGFuIGludGVnZXIsIGdvdCAke2FyaXR5fWApO1xuICAgICAgICBpZiAoYXJpdHkgPCAwKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgYXJpdHkgbXVzdCBiZSBwb3NpdGl2ZSwgZ290ICR7YXJpdHl9YCk7XG4gICAgICAgIHRoaXMuYWxsT3B0aW9uTmFtZXMucHVzaCguLi5uYW1lcyk7XG4gICAgICAgIHRoaXMub3B0aW9ucy5wdXNoKHsgbmFtZXMsIGRlc2NyaXB0aW9uLCBhcml0eSwgaGlkZGVuLCByZXF1aXJlZCwgYWxsb3dCaW5kaW5nIH0pO1xuICAgIH1cbiAgICBzZXRDb250ZXh0KGNvbnRleHQpIHtcbiAgICAgICAgdGhpcy5jb250ZXh0ID0gY29udGV4dDtcbiAgICB9XG4gICAgdXNhZ2UoeyBkZXRhaWxlZCA9IHRydWUsIGlubGluZU9wdGlvbnMgPSB0cnVlIH0gPSB7fSkge1xuICAgICAgICBjb25zdCBzZWdtZW50cyA9IFt0aGlzLmNsaU9wdHMuYmluYXJ5TmFtZV07XG4gICAgICAgIGNvbnN0IGRldGFpbGVkT3B0aW9uTGlzdCA9IFtdO1xuICAgICAgICBpZiAodGhpcy5wYXRocy5sZW5ndGggPiAwKVxuICAgICAgICAgICAgc2VnbWVudHMucHVzaCguLi50aGlzLnBhdGhzWzBdKTtcbiAgICAgICAgaWYgKGRldGFpbGVkKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHsgbmFtZXMsIGFyaXR5LCBoaWRkZW4sIGRlc2NyaXB0aW9uLCByZXF1aXJlZCB9IG9mIHRoaXMub3B0aW9ucykge1xuICAgICAgICAgICAgICAgIGlmIChoaWRkZW4pXG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGNvbnN0IGFyZ3MgPSBbXTtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCB0ID0gMDsgdCA8IGFyaXR5OyArK3QpXG4gICAgICAgICAgICAgICAgICAgIGFyZ3MucHVzaChgICMke3R9YCk7XG4gICAgICAgICAgICAgICAgY29uc3QgZGVmaW5pdGlvbiA9IGAke25hbWVzLmpvaW4oYCxgKX0ke2FyZ3Muam9pbihgYCl9YDtcbiAgICAgICAgICAgICAgICBpZiAoIWlubGluZU9wdGlvbnMgJiYgZGVzY3JpcHRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgZGV0YWlsZWRPcHRpb25MaXN0LnB1c2goeyBkZWZpbml0aW9uLCBkZXNjcmlwdGlvbiwgcmVxdWlyZWQgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzZWdtZW50cy5wdXNoKHJlcXVpcmVkID8gYDwke2RlZmluaXRpb259PmAgOiBgWyR7ZGVmaW5pdGlvbn1dYCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2VnbWVudHMucHVzaCguLi50aGlzLmFyaXR5LmxlYWRpbmcubWFwKG5hbWUgPT4gYDwke25hbWV9PmApKTtcbiAgICAgICAgICAgIGlmICh0aGlzLmFyaXR5LmV4dHJhID09PSBOb0xpbWl0cylcbiAgICAgICAgICAgICAgICBzZWdtZW50cy5wdXNoKGAuLi5gKTtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBzZWdtZW50cy5wdXNoKC4uLnRoaXMuYXJpdHkuZXh0cmEubWFwKG5hbWUgPT4gYFske25hbWV9XWApKTtcbiAgICAgICAgICAgIHNlZ21lbnRzLnB1c2goLi4udGhpcy5hcml0eS50cmFpbGluZy5tYXAobmFtZSA9PiBgPCR7bmFtZX0+YCkpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHVzYWdlID0gc2VnbWVudHMuam9pbihgIGApO1xuICAgICAgICByZXR1cm4geyB1c2FnZSwgb3B0aW9uczogZGV0YWlsZWRPcHRpb25MaXN0IH07XG4gICAgfVxuICAgIGNvbXBpbGUoKSB7XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5jb250ZXh0ID09PSBgdW5kZWZpbmVkYClcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQXNzZXJ0aW9uIGZhaWxlZDogTm8gY29udGV4dCBhdHRhY2hlZGApO1xuICAgICAgICBjb25zdCBtYWNoaW5lID0gbWFrZVN0YXRlTWFjaGluZSgpO1xuICAgICAgICBsZXQgZmlyc3ROb2RlID0gY29uc3RhbnRzLk5PREVfSU5JVElBTDtcbiAgICAgICAgY29uc3QgY2FuZGlkYXRlVXNhZ2UgPSB0aGlzLnVzYWdlKCkudXNhZ2U7XG4gICAgICAgIGNvbnN0IHJlcXVpcmVkT3B0aW9ucyA9IHRoaXMub3B0aW9uc1xuICAgICAgICAgICAgLmZpbHRlcihvcHQgPT4gb3B0LnJlcXVpcmVkKVxuICAgICAgICAgICAgLm1hcChvcHQgPT4gb3B0Lm5hbWVzKTtcbiAgICAgICAgZmlyc3ROb2RlID0gaW5qZWN0Tm9kZShtYWNoaW5lLCBtYWtlTm9kZSgpKTtcbiAgICAgICAgcmVnaXN0ZXJTdGF0aWMobWFjaGluZSwgY29uc3RhbnRzLk5PREVfSU5JVElBTCwgY29uc3RhbnRzLlNUQVJUX09GX0lOUFVULCBmaXJzdE5vZGUsIFtgc2V0Q2FuZGlkYXRlU3RhdGVgLCB7IGNhbmRpZGF0ZVVzYWdlLCByZXF1aXJlZE9wdGlvbnMgfV0pO1xuICAgICAgICBjb25zdCBwb3NpdGlvbmFsQXJndW1lbnQgPSB0aGlzLmFyaXR5LnByb3h5XG4gICAgICAgICAgICA/IGBhbHdheXNgXG4gICAgICAgICAgICA6IGBpc05vdE9wdGlvbkxpa2VgO1xuICAgICAgICBjb25zdCBwYXRocyA9IHRoaXMucGF0aHMubGVuZ3RoID4gMFxuICAgICAgICAgICAgPyB0aGlzLnBhdGhzXG4gICAgICAgICAgICA6IFtbXV07XG4gICAgICAgIGZvciAoY29uc3QgcGF0aCBvZiBwYXRocykge1xuICAgICAgICAgICAgbGV0IGxhc3RQYXRoTm9kZSA9IGZpcnN0Tm9kZTtcbiAgICAgICAgICAgIC8vIFdlIGFsbG93IG9wdGlvbnMgdG8gYmUgc3BlY2lmaWVkIGJlZm9yZSB0aGUgcGF0aC4gTm90ZSB0aGF0IHdlXG4gICAgICAgICAgICAvLyBvbmx5IGRvIHRoaXMgd2hlbiB0aGVyZSBpcyBhIHBhdGgsIG90aGVyd2lzZSB0aGVyZSB3b3VsZCBiZVxuICAgICAgICAgICAgLy8gc29tZSByZWR1bmRhbmN5IHdpdGggdGhlIG9wdGlvbnMgYXR0YWNoZWQgbGF0ZXIuXG4gICAgICAgICAgICBpZiAocGF0aC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgb3B0aW9uUGF0aE5vZGUgPSBpbmplY3ROb2RlKG1hY2hpbmUsIG1ha2VOb2RlKCkpO1xuICAgICAgICAgICAgICAgIHJlZ2lzdGVyU2hvcnRjdXQobWFjaGluZSwgbGFzdFBhdGhOb2RlLCBvcHRpb25QYXRoTm9kZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5yZWdpc3Rlck9wdGlvbnMobWFjaGluZSwgb3B0aW9uUGF0aE5vZGUpO1xuICAgICAgICAgICAgICAgIGxhc3RQYXRoTm9kZSA9IG9wdGlvblBhdGhOb2RlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZm9yIChsZXQgdCA9IDA7IHQgPCBwYXRoLmxlbmd0aDsgKyt0KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbmV4dFBhdGhOb2RlID0gaW5qZWN0Tm9kZShtYWNoaW5lLCBtYWtlTm9kZSgpKTtcbiAgICAgICAgICAgICAgICByZWdpc3RlclN0YXRpYyhtYWNoaW5lLCBsYXN0UGF0aE5vZGUsIHBhdGhbdF0sIG5leHRQYXRoTm9kZSwgYHB1c2hQYXRoYCk7XG4gICAgICAgICAgICAgICAgbGFzdFBhdGhOb2RlID0gbmV4dFBhdGhOb2RlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMuYXJpdHkubGVhZGluZy5sZW5ndGggPiAwIHx8ICF0aGlzLmFyaXR5LnByb3h5KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaGVscE5vZGUgPSBpbmplY3ROb2RlKG1hY2hpbmUsIG1ha2VOb2RlKCkpO1xuICAgICAgICAgICAgICAgIHJlZ2lzdGVyRHluYW1pYyhtYWNoaW5lLCBsYXN0UGF0aE5vZGUsIGBpc0hlbHBgLCBoZWxwTm9kZSwgW2B1c2VIZWxwYCwgdGhpcy5jbGlJbmRleF0pO1xuICAgICAgICAgICAgICAgIHJlZ2lzdGVyRHluYW1pYyhtYWNoaW5lLCBoZWxwTm9kZSwgYGFsd2F5c2AsIGhlbHBOb2RlLCBgcHVzaEV4dHJhYCk7XG4gICAgICAgICAgICAgICAgcmVnaXN0ZXJTdGF0aWMobWFjaGluZSwgaGVscE5vZGUsIGNvbnN0YW50cy5FTkRfT0ZfSU5QVVQsIGNvbnN0YW50cy5OT0RFX1NVQ0NFU1MsIFtgc2V0U2VsZWN0ZWRJbmRleGAsIGNvbnN0YW50cy5IRUxQX0NPTU1BTkRfSU5ERVhdKTtcbiAgICAgICAgICAgICAgICB0aGlzLnJlZ2lzdGVyT3B0aW9ucyhtYWNoaW5lLCBsYXN0UGF0aE5vZGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMuYXJpdHkubGVhZGluZy5sZW5ndGggPiAwKVxuICAgICAgICAgICAgICAgIHJlZ2lzdGVyU3RhdGljKG1hY2hpbmUsIGxhc3RQYXRoTm9kZSwgY29uc3RhbnRzLkVORF9PRl9JTlBVVCwgY29uc3RhbnRzLk5PREVfRVJST1JFRCwgW2BzZXRFcnJvcmAsIGBOb3QgZW5vdWdoIHBvc2l0aW9uYWwgYXJndW1lbnRzYF0pO1xuICAgICAgICAgICAgbGV0IGxhc3RMZWFkaW5nTm9kZSA9IGxhc3RQYXRoTm9kZTtcbiAgICAgICAgICAgIGZvciAobGV0IHQgPSAwOyB0IDwgdGhpcy5hcml0eS5sZWFkaW5nLmxlbmd0aDsgKyt0KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbmV4dExlYWRpbmdOb2RlID0gaW5qZWN0Tm9kZShtYWNoaW5lLCBtYWtlTm9kZSgpKTtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuYXJpdHkucHJveHkgfHwgdCArIDEgIT09IHRoaXMuYXJpdHkubGVhZGluZy5sZW5ndGgpXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVnaXN0ZXJPcHRpb25zKG1hY2hpbmUsIG5leHRMZWFkaW5nTm9kZSk7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuYXJpdHkudHJhaWxpbmcubGVuZ3RoID4gMCB8fCB0ICsgMSAhPT0gdGhpcy5hcml0eS5sZWFkaW5nLmxlbmd0aClcbiAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJTdGF0aWMobWFjaGluZSwgbmV4dExlYWRpbmdOb2RlLCBjb25zdGFudHMuRU5EX09GX0lOUFVULCBjb25zdGFudHMuTk9ERV9FUlJPUkVELCBbYHNldEVycm9yYCwgYE5vdCBlbm91Z2ggcG9zaXRpb25hbCBhcmd1bWVudHNgXSk7XG4gICAgICAgICAgICAgICAgcmVnaXN0ZXJEeW5hbWljKG1hY2hpbmUsIGxhc3RMZWFkaW5nTm9kZSwgYGlzTm90T3B0aW9uTGlrZWAsIG5leHRMZWFkaW5nTm9kZSwgYHB1c2hQb3NpdGlvbmFsYCk7XG4gICAgICAgICAgICAgICAgbGFzdExlYWRpbmdOb2RlID0gbmV4dExlYWRpbmdOb2RlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IGxhc3RFeHRyYU5vZGUgPSBsYXN0TGVhZGluZ05vZGU7XG4gICAgICAgICAgICBpZiAodGhpcy5hcml0eS5leHRyYSA9PT0gTm9MaW1pdHMgfHwgdGhpcy5hcml0eS5leHRyYS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZXh0cmFTaG9ydGN1dE5vZGUgPSBpbmplY3ROb2RlKG1hY2hpbmUsIG1ha2VOb2RlKCkpO1xuICAgICAgICAgICAgICAgIHJlZ2lzdGVyU2hvcnRjdXQobWFjaGluZSwgbGFzdExlYWRpbmdOb2RlLCBleHRyYVNob3J0Y3V0Tm9kZSk7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuYXJpdHkuZXh0cmEgPT09IE5vTGltaXRzKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGV4dHJhTm9kZSA9IGluamVjdE5vZGUobWFjaGluZSwgbWFrZU5vZGUoKSk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5hcml0eS5wcm94eSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVnaXN0ZXJPcHRpb25zKG1hY2hpbmUsIGV4dHJhTm9kZSk7XG4gICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyRHluYW1pYyhtYWNoaW5lLCBsYXN0TGVhZGluZ05vZGUsIHBvc2l0aW9uYWxBcmd1bWVudCwgZXh0cmFOb2RlLCBgcHVzaEV4dHJhTm9MaW1pdHNgKTtcbiAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJEeW5hbWljKG1hY2hpbmUsIGV4dHJhTm9kZSwgcG9zaXRpb25hbEFyZ3VtZW50LCBleHRyYU5vZGUsIGBwdXNoRXh0cmFOb0xpbWl0c2ApO1xuICAgICAgICAgICAgICAgICAgICByZWdpc3RlclNob3J0Y3V0KG1hY2hpbmUsIGV4dHJhTm9kZSwgZXh0cmFTaG9ydGN1dE5vZGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgdCA9IDA7IHQgPCB0aGlzLmFyaXR5LmV4dHJhLmxlbmd0aDsgKyt0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXh0RXh0cmFOb2RlID0gaW5qZWN0Tm9kZShtYWNoaW5lLCBtYWtlTm9kZSgpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5hcml0eS5wcm94eSB8fCB0ID4gMClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlZ2lzdGVyT3B0aW9ucyhtYWNoaW5lLCBuZXh0RXh0cmFOb2RlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyRHluYW1pYyhtYWNoaW5lLCBsYXN0RXh0cmFOb2RlLCBwb3NpdGlvbmFsQXJndW1lbnQsIG5leHRFeHRyYU5vZGUsIGBwdXNoRXh0cmFgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyU2hvcnRjdXQobWFjaGluZSwgbmV4dEV4dHJhTm9kZSwgZXh0cmFTaG9ydGN1dE5vZGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFzdEV4dHJhTm9kZSA9IG5leHRFeHRyYU5vZGU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbGFzdEV4dHJhTm9kZSA9IGV4dHJhU2hvcnRjdXROb2RlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMuYXJpdHkudHJhaWxpbmcubGVuZ3RoID4gMClcbiAgICAgICAgICAgICAgICByZWdpc3RlclN0YXRpYyhtYWNoaW5lLCBsYXN0RXh0cmFOb2RlLCBjb25zdGFudHMuRU5EX09GX0lOUFVULCBjb25zdGFudHMuTk9ERV9FUlJPUkVELCBbYHNldEVycm9yYCwgYE5vdCBlbm91Z2ggcG9zaXRpb25hbCBhcmd1bWVudHNgXSk7XG4gICAgICAgICAgICBsZXQgbGFzdFRyYWlsaW5nTm9kZSA9IGxhc3RFeHRyYU5vZGU7XG4gICAgICAgICAgICBmb3IgKGxldCB0ID0gMDsgdCA8IHRoaXMuYXJpdHkudHJhaWxpbmcubGVuZ3RoOyArK3QpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXh0VHJhaWxpbmdOb2RlID0gaW5qZWN0Tm9kZShtYWNoaW5lLCBtYWtlTm9kZSgpKTtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuYXJpdHkucHJveHkpXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVnaXN0ZXJPcHRpb25zKG1hY2hpbmUsIG5leHRUcmFpbGluZ05vZGUpO1xuICAgICAgICAgICAgICAgIGlmICh0ICsgMSA8IHRoaXMuYXJpdHkudHJhaWxpbmcubGVuZ3RoKVxuICAgICAgICAgICAgICAgICAgICByZWdpc3RlclN0YXRpYyhtYWNoaW5lLCBuZXh0VHJhaWxpbmdOb2RlLCBjb25zdGFudHMuRU5EX09GX0lOUFVULCBjb25zdGFudHMuTk9ERV9FUlJPUkVELCBbYHNldEVycm9yYCwgYE5vdCBlbm91Z2ggcG9zaXRpb25hbCBhcmd1bWVudHNgXSk7XG4gICAgICAgICAgICAgICAgcmVnaXN0ZXJEeW5hbWljKG1hY2hpbmUsIGxhc3RUcmFpbGluZ05vZGUsIGBpc05vdE9wdGlvbkxpa2VgLCBuZXh0VHJhaWxpbmdOb2RlLCBgcHVzaFBvc2l0aW9uYWxgKTtcbiAgICAgICAgICAgICAgICBsYXN0VHJhaWxpbmdOb2RlID0gbmV4dFRyYWlsaW5nTm9kZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlZ2lzdGVyRHluYW1pYyhtYWNoaW5lLCBsYXN0VHJhaWxpbmdOb2RlLCBwb3NpdGlvbmFsQXJndW1lbnQsIGNvbnN0YW50cy5OT0RFX0VSUk9SRUQsIFtgc2V0RXJyb3JgLCBgRXh0cmFuZW91cyBwb3NpdGlvbmFsIGFyZ3VtZW50YF0pO1xuICAgICAgICAgICAgcmVnaXN0ZXJTdGF0aWMobWFjaGluZSwgbGFzdFRyYWlsaW5nTm9kZSwgY29uc3RhbnRzLkVORF9PRl9JTlBVVCwgY29uc3RhbnRzLk5PREVfU1VDQ0VTUywgW2BzZXRTZWxlY3RlZEluZGV4YCwgdGhpcy5jbGlJbmRleF0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBtYWNoaW5lLFxuICAgICAgICAgICAgY29udGV4dDogdGhpcy5jb250ZXh0LFxuICAgICAgICB9O1xuICAgIH1cbiAgICByZWdpc3Rlck9wdGlvbnMobWFjaGluZSwgbm9kZSkge1xuICAgICAgICByZWdpc3RlckR5bmFtaWMobWFjaGluZSwgbm9kZSwgW2Bpc09wdGlvbmAsIGAtLWBdLCBub2RlLCBgaW5oaWJhdGVPcHRpb25zYCk7XG4gICAgICAgIHJlZ2lzdGVyRHluYW1pYyhtYWNoaW5lLCBub2RlLCBbYGlzQmF0Y2hPcHRpb25gLCB0aGlzLmFsbE9wdGlvbk5hbWVzXSwgbm9kZSwgYHB1c2hCYXRjaGApO1xuICAgICAgICByZWdpc3RlckR5bmFtaWMobWFjaGluZSwgbm9kZSwgW2Bpc0JvdW5kT3B0aW9uYCwgdGhpcy5hbGxPcHRpb25OYW1lcywgdGhpcy5vcHRpb25zXSwgbm9kZSwgYHB1c2hCb3VuZGApO1xuICAgICAgICByZWdpc3RlckR5bmFtaWMobWFjaGluZSwgbm9kZSwgW2Bpc1Vuc3VwcG9ydGVkT3B0aW9uYCwgdGhpcy5hbGxPcHRpb25OYW1lc10sIGNvbnN0YW50cy5OT0RFX0VSUk9SRUQsIFtgc2V0RXJyb3JgLCBgVW5zdXBwb3J0ZWQgb3B0aW9uIG5hbWVgXSk7XG4gICAgICAgIHJlZ2lzdGVyRHluYW1pYyhtYWNoaW5lLCBub2RlLCBbYGlzSW52YWxpZE9wdGlvbmBdLCBjb25zdGFudHMuTk9ERV9FUlJPUkVELCBbYHNldEVycm9yYCwgYEludmFsaWQgb3B0aW9uIG5hbWVgXSk7XG4gICAgICAgIGZvciAoY29uc3Qgb3B0aW9uIG9mIHRoaXMub3B0aW9ucykge1xuICAgICAgICAgICAgY29uc3QgbG9uZ2VzdE5hbWUgPSBvcHRpb24ubmFtZXMucmVkdWNlKChsb25nZXN0TmFtZSwgbmFtZSkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBuYW1lLmxlbmd0aCA+IGxvbmdlc3ROYW1lLmxlbmd0aCA/IG5hbWUgOiBsb25nZXN0TmFtZTtcbiAgICAgICAgICAgIH0sIGBgKTtcbiAgICAgICAgICAgIGlmIChvcHRpb24uYXJpdHkgPT09IDApIHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IG5hbWUgb2Ygb3B0aW9uLm5hbWVzKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyRHluYW1pYyhtYWNoaW5lLCBub2RlLCBbYGlzT3B0aW9uYCwgbmFtZSwgb3B0aW9uLmhpZGRlbiB8fCBuYW1lICE9PSBsb25nZXN0TmFtZV0sIG5vZGUsIGBwdXNoVHJ1ZWApO1xuICAgICAgICAgICAgICAgICAgICBpZiAobmFtZS5zdGFydHNXaXRoKGAtLWApICYmICFuYW1lLnN0YXJ0c1dpdGgoYC0tbm8tYCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyRHluYW1pYyhtYWNoaW5lLCBub2RlLCBbYGlzTmVnYXRlZE9wdGlvbmAsIG5hbWVdLCBub2RlLCBbYHB1c2hGYWxzZWAsIG5hbWVdKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIFdlIGluamVjdCBhIG5ldyBub2RlIGF0IHRoZSBlbmQgb2YgdGhlIHN0YXRlIG1hY2hpbmVcbiAgICAgICAgICAgICAgICBsZXQgbGFzdE5vZGUgPSBpbmplY3ROb2RlKG1hY2hpbmUsIG1ha2VOb2RlKCkpO1xuICAgICAgICAgICAgICAgIC8vIFdlIHJlZ2lzdGVyIHRyYW5zaXRpb25zIGZyb20gdGhlIHN0YXJ0aW5nIG5vZGUgdG8gdGhpcyBuZXcgbm9kZVxuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgbmFtZSBvZiBvcHRpb24ubmFtZXMpXG4gICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyRHluYW1pYyhtYWNoaW5lLCBub2RlLCBbYGlzT3B0aW9uYCwgbmFtZSwgb3B0aW9uLmhpZGRlbiB8fCBuYW1lICE9PSBsb25nZXN0TmFtZV0sIGxhc3ROb2RlLCBgcHVzaFVuZGVmaW5lZGApO1xuICAgICAgICAgICAgICAgIC8vIEZvciBlYWNoIGFyZ3VtZW50LCB3ZSBpbmplY3QgYSBuZXcgbm9kZSBhdCB0aGUgZW5kIGFuZCB3ZVxuICAgICAgICAgICAgICAgIC8vIHJlZ2lzdGVyIGEgdHJhbnNpdGlvbiBmcm9tIHRoZSBjdXJyZW50IG5vZGUgdG8gdGhpcyBuZXcgbm9kZVxuICAgICAgICAgICAgICAgIGZvciAobGV0IHQgPSAwOyB0IDwgb3B0aW9uLmFyaXR5OyArK3QpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV4dE5vZGUgPSBpbmplY3ROb2RlKG1hY2hpbmUsIG1ha2VOb2RlKCkpO1xuICAgICAgICAgICAgICAgICAgICAvLyBXZSBjYW4gcHJvdmlkZSBiZXR0ZXIgZXJyb3JzIHdoZW4gYW5vdGhlciBvcHRpb24gb3IgRU5EX09GX0lOUFVUIGlzIGVuY291bnRlcmVkXG4gICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyU3RhdGljKG1hY2hpbmUsIGxhc3ROb2RlLCBjb25zdGFudHMuRU5EX09GX0lOUFVULCBjb25zdGFudHMuTk9ERV9FUlJPUkVELCBgc2V0T3B0aW9uQXJpdHlFcnJvcmApO1xuICAgICAgICAgICAgICAgICAgICByZWdpc3RlckR5bmFtaWMobWFjaGluZSwgbGFzdE5vZGUsIGBpc09wdGlvbkxpa2VgLCBjb25zdGFudHMuTk9ERV9FUlJPUkVELCBgc2V0T3B0aW9uQXJpdHlFcnJvcmApO1xuICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgb3B0aW9uIGhhcyBhIHNpbmdsZSBhcmd1bWVudCwgbm8gbmVlZCB0byBzdG9yZSBpdCBpbiBhbiBhcnJheVxuICAgICAgICAgICAgICAgICAgICBjb25zdCBhY3Rpb24gPSBvcHRpb24uYXJpdHkgPT09IDFcbiAgICAgICAgICAgICAgICAgICAgICAgID8gYHNldFN0cmluZ1ZhbHVlYFxuICAgICAgICAgICAgICAgICAgICAgICAgOiBgcHVzaFN0cmluZ1ZhbHVlYDtcbiAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJEeW5hbWljKG1hY2hpbmUsIGxhc3ROb2RlLCBgaXNOb3RPcHRpb25MaWtlYCwgbmV4dE5vZGUsIGFjdGlvbik7XG4gICAgICAgICAgICAgICAgICAgIGxhc3ROb2RlID0gbmV4dE5vZGU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIEluIHRoZSBlbmQsIHdlIHJlZ2lzdGVyIGEgc2hvcnRjdXQgZnJvbVxuICAgICAgICAgICAgICAgIC8vIHRoZSBsYXN0IG5vZGUgYmFjayB0byB0aGUgc3RhcnRpbmcgbm9kZVxuICAgICAgICAgICAgICAgIHJlZ2lzdGVyU2hvcnRjdXQobWFjaGluZSwgbGFzdE5vZGUsIG5vZGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuY2xhc3MgQ2xpQnVpbGRlciB7XG4gICAgY29uc3RydWN0b3IoeyBiaW5hcnlOYW1lID0gYC4uLmAgfSA9IHt9KSB7XG4gICAgICAgIHRoaXMuYnVpbGRlcnMgPSBbXTtcbiAgICAgICAgdGhpcy5vcHRzID0geyBiaW5hcnlOYW1lIH07XG4gICAgfVxuICAgIHN0YXRpYyBidWlsZChjYnMsIG9wdHMgPSB7fSkge1xuICAgICAgICByZXR1cm4gbmV3IENsaUJ1aWxkZXIob3B0cykuY29tbWFuZHMoY2JzKS5jb21waWxlKCk7XG4gICAgfVxuICAgIGdldEJ1aWxkZXJCeUluZGV4KG4pIHtcbiAgICAgICAgaWYgKCEobiA+PSAwICYmIG4gPCB0aGlzLmJ1aWxkZXJzLmxlbmd0aCkpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEFzc2VydGlvbiBmYWlsZWQ6IE91dC1vZi1ib3VuZCBjb21tYW5kIGluZGV4ICgke259KWApO1xuICAgICAgICByZXR1cm4gdGhpcy5idWlsZGVyc1tuXTtcbiAgICB9XG4gICAgY29tbWFuZHMoY2JzKSB7XG4gICAgICAgIGZvciAoY29uc3QgY2Igb2YgY2JzKVxuICAgICAgICAgICAgY2IodGhpcy5jb21tYW5kKCkpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgY29tbWFuZCgpIHtcbiAgICAgICAgY29uc3QgYnVpbGRlciA9IG5ldyBDb21tYW5kQnVpbGRlcih0aGlzLmJ1aWxkZXJzLmxlbmd0aCwgdGhpcy5vcHRzKTtcbiAgICAgICAgdGhpcy5idWlsZGVycy5wdXNoKGJ1aWxkZXIpO1xuICAgICAgICByZXR1cm4gYnVpbGRlcjtcbiAgICB9XG4gICAgY29tcGlsZSgpIHtcbiAgICAgICAgY29uc3QgbWFjaGluZXMgPSBbXTtcbiAgICAgICAgY29uc3QgY29udGV4dHMgPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBidWlsZGVyIG9mIHRoaXMuYnVpbGRlcnMpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgbWFjaGluZSwgY29udGV4dCB9ID0gYnVpbGRlci5jb21waWxlKCk7XG4gICAgICAgICAgICBtYWNoaW5lcy5wdXNoKG1hY2hpbmUpO1xuICAgICAgICAgICAgY29udGV4dHMucHVzaChjb250ZXh0KTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBtYWNoaW5lID0gbWFrZUFueU9mTWFjaGluZShtYWNoaW5lcyk7XG4gICAgICAgIHNpbXBsaWZ5TWFjaGluZShtYWNoaW5lKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG1hY2hpbmUsXG4gICAgICAgICAgICBjb250ZXh0cyxcbiAgICAgICAgICAgIHByb2Nlc3M6IChpbnB1dCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBydW5NYWNoaW5lKG1hY2hpbmUsIGlucHV0KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzdWdnZXN0OiAoaW5wdXQsIHBhcnRpYWwpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3VnZ2VzdE1hY2hpbmUobWFjaGluZSwgaW5wdXQsIHBhcnRpYWwpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICB9XG59XG5cbmV4cG9ydHMuQ2xpQnVpbGRlciA9IENsaUJ1aWxkZXI7XG5leHBvcnRzLkNvbW1hbmRCdWlsZGVyID0gQ29tbWFuZEJ1aWxkZXI7XG5leHBvcnRzLk5vTGltaXRzID0gTm9MaW1pdHM7XG5leHBvcnRzLmFnZ3JlZ2F0ZUhlbHBTdGF0ZXMgPSBhZ2dyZWdhdGVIZWxwU3RhdGVzO1xuZXhwb3J0cy5jbG9uZU5vZGUgPSBjbG9uZU5vZGU7XG5leHBvcnRzLmNsb25lVHJhbnNpdGlvbiA9IGNsb25lVHJhbnNpdGlvbjtcbmV4cG9ydHMuZGVidWcgPSBkZWJ1ZztcbmV4cG9ydHMuZGVidWdNYWNoaW5lID0gZGVidWdNYWNoaW5lO1xuZXhwb3J0cy5leGVjdXRlID0gZXhlY3V0ZTtcbmV4cG9ydHMuaW5qZWN0Tm9kZSA9IGluamVjdE5vZGU7XG5leHBvcnRzLmlzVGVybWluYWxOb2RlID0gaXNUZXJtaW5hbE5vZGU7XG5leHBvcnRzLm1ha2VBbnlPZk1hY2hpbmUgPSBtYWtlQW55T2ZNYWNoaW5lO1xuZXhwb3J0cy5tYWtlTm9kZSA9IG1ha2VOb2RlO1xuZXhwb3J0cy5tYWtlU3RhdGVNYWNoaW5lID0gbWFrZVN0YXRlTWFjaGluZTtcbmV4cG9ydHMucmVkdWNlcnMgPSByZWR1Y2VycztcbmV4cG9ydHMucmVnaXN0ZXJEeW5hbWljID0gcmVnaXN0ZXJEeW5hbWljO1xuZXhwb3J0cy5yZWdpc3RlclNob3J0Y3V0ID0gcmVnaXN0ZXJTaG9ydGN1dDtcbmV4cG9ydHMucmVnaXN0ZXJTdGF0aWMgPSByZWdpc3RlclN0YXRpYztcbmV4cG9ydHMucnVuTWFjaGluZUludGVybmFsID0gcnVuTWFjaGluZUludGVybmFsO1xuZXhwb3J0cy5zZWxlY3RCZXN0U3RhdGUgPSBzZWxlY3RCZXN0U3RhdGU7XG5leHBvcnRzLnNpbXBsaWZ5TWFjaGluZSA9IHNpbXBsaWZ5TWFjaGluZTtcbmV4cG9ydHMuc3VnZ2VzdCA9IHN1Z2dlc3Q7XG5leHBvcnRzLnRlc3RzID0gdGVzdHM7XG5leHBvcnRzLnRyaW1TbWFsbGVyQnJhbmNoZXMgPSB0cmltU21hbGxlckJyYW5jaGVzO1xuIiwgIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcblxudmFyIHR0eSA9IHJlcXVpcmUoJ3R0eScpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcERlZmF1bHRMZWdhY3kgKGUpIHsgcmV0dXJuIGUgJiYgdHlwZW9mIGUgPT09ICdvYmplY3QnICYmICdkZWZhdWx0JyBpbiBlID8gZSA6IHsgJ2RlZmF1bHQnOiBlIH07IH1cblxudmFyIHR0eV9fZGVmYXVsdCA9IC8qI19fUFVSRV9fKi9faW50ZXJvcERlZmF1bHRMZWdhY3kodHR5KTtcblxuZnVuY3Rpb24gZ2V0RGVmYXVsdENvbG9yRGVwdGgoKSB7XG4gICAgaWYgKHR0eV9fZGVmYXVsdFsnZGVmYXVsdCddICYmIGBnZXRDb2xvckRlcHRoYCBpbiB0dHlfX2RlZmF1bHRbJ2RlZmF1bHQnXS5Xcml0ZVN0cmVhbS5wcm90b3R5cGUpXG4gICAgICAgIHJldHVybiB0dHlfX2RlZmF1bHRbJ2RlZmF1bHQnXS5Xcml0ZVN0cmVhbS5wcm90b3R5cGUuZ2V0Q29sb3JEZXB0aCgpO1xuICAgIGlmIChwcm9jZXNzLmVudi5GT1JDRV9DT0xPUiA9PT0gYDBgKVxuICAgICAgICByZXR1cm4gMTtcbiAgICBpZiAocHJvY2Vzcy5lbnYuRk9SQ0VfQ09MT1IgPT09IGAxYClcbiAgICAgICAgcmV0dXJuIDg7XG4gICAgaWYgKHR5cGVvZiBwcm9jZXNzLnN0ZG91dCAhPT0gYHVuZGVmaW5lZGAgJiYgcHJvY2Vzcy5zdGRvdXQuaXNUVFkpXG4gICAgICAgIHJldHVybiA4O1xuICAgIHJldHVybiAxO1xufVxubGV0IGdDb250ZXh0U3RvcmFnZTtcbmZ1bmN0aW9uIGdldENhcHR1cmVBY3RpdmF0b3IoY29udGV4dCkge1xuICAgIGxldCBjb250ZXh0U3RvcmFnZSA9IGdDb250ZXh0U3RvcmFnZTtcbiAgICBpZiAodHlwZW9mIGNvbnRleHRTdG9yYWdlID09PSBgdW5kZWZpbmVkYCkge1xuICAgICAgICBpZiAoY29udGV4dC5zdGRvdXQgPT09IHByb2Nlc3Muc3Rkb3V0ICYmIGNvbnRleHQuc3RkZXJyID09PSBwcm9jZXNzLnN0ZGVycilcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICBjb25zdCB7IEFzeW5jTG9jYWxTdG9yYWdlOiBMYXp5QXN5bmNMb2NhbFN0b3JhZ2UgfSA9IHJlcXVpcmUoYGFzeW5jX2hvb2tzYCk7XG4gICAgICAgIGNvbnRleHRTdG9yYWdlID0gZ0NvbnRleHRTdG9yYWdlID0gbmV3IExhenlBc3luY0xvY2FsU3RvcmFnZSgpO1xuICAgICAgICBjb25zdCBvcmlnU3Rkb3V0V3JpdGUgPSBwcm9jZXNzLnN0ZG91dC5fd3JpdGU7XG4gICAgICAgIHByb2Nlc3Muc3Rkb3V0Ll93cml0ZSA9IGZ1bmN0aW9uIChjaHVuaywgZW5jb2RpbmcsIGNiKSB7XG4gICAgICAgICAgICBjb25zdCBjb250ZXh0ID0gY29udGV4dFN0b3JhZ2UuZ2V0U3RvcmUoKTtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgY29udGV4dCA9PT0gYHVuZGVmaW5lZGApXG4gICAgICAgICAgICAgICAgcmV0dXJuIG9yaWdTdGRvdXRXcml0ZS5jYWxsKHRoaXMsIGNodW5rLCBlbmNvZGluZywgY2IpO1xuICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuc3Rkb3V0LndyaXRlKGNodW5rLCBlbmNvZGluZywgY2IpO1xuICAgICAgICB9O1xuICAgICAgICBjb25zdCBvcmlnU3RkZXJyV3JpdGUgPSBwcm9jZXNzLnN0ZGVyci5fd3JpdGU7XG4gICAgICAgIHByb2Nlc3Muc3RkZXJyLl93cml0ZSA9IGZ1bmN0aW9uIChjaHVuaywgZW5jb2RpbmcsIGNiKSB7XG4gICAgICAgICAgICBjb25zdCBjb250ZXh0ID0gY29udGV4dFN0b3JhZ2UuZ2V0U3RvcmUoKTtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgY29udGV4dCA9PT0gYHVuZGVmaW5lZGApXG4gICAgICAgICAgICAgICAgcmV0dXJuIG9yaWdTdGRlcnJXcml0ZS5jYWxsKHRoaXMsIGNodW5rLCBlbmNvZGluZywgY2IpO1xuICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuc3RkZXJyLndyaXRlKGNodW5rLCBlbmNvZGluZywgY2IpO1xuICAgICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gKGZuKSA9PiB7XG4gICAgICAgIHJldHVybiBjb250ZXh0U3RvcmFnZS5ydW4oY29udGV4dCwgZm4pO1xuICAgIH07XG59XG5cbmV4cG9ydHMuZ2V0Q2FwdHVyZUFjdGl2YXRvciA9IGdldENhcHR1cmVBY3RpdmF0b3I7XG5leHBvcnRzLmdldERlZmF1bHRDb2xvckRlcHRoID0gZ2V0RGVmYXVsdENvbG9yRGVwdGg7XG4iLCAiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuXG52YXIgYWR2YW5jZWRfQ29tbWFuZCA9IHJlcXVpcmUoJy4vQ29tbWFuZC5qcycpO1xuXG5jbGFzcyBIZWxwQ29tbWFuZCBleHRlbmRzIGFkdmFuY2VkX0NvbW1hbmQuQ29tbWFuZCB7XG4gICAgY29uc3RydWN0b3IoY29udGV4dHMpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5jb250ZXh0cyA9IGNvbnRleHRzO1xuICAgICAgICB0aGlzLmNvbW1hbmRzID0gW107XG4gICAgfVxuICAgIHN0YXRpYyBmcm9tKHN0YXRlLCBjb250ZXh0cykge1xuICAgICAgICBjb25zdCBjb21tYW5kID0gbmV3IEhlbHBDb21tYW5kKGNvbnRleHRzKTtcbiAgICAgICAgY29tbWFuZC5wYXRoID0gc3RhdGUucGF0aDtcbiAgICAgICAgZm9yIChjb25zdCBvcHQgb2Ygc3RhdGUub3B0aW9ucykge1xuICAgICAgICAgICAgc3dpdGNoIChvcHQubmFtZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgYC1jYDpcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZC5jb21tYW5kcy5wdXNoKE51bWJlcihvcHQudmFsdWUpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIGAtaWA6XG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQuaW5kZXggPSBOdW1iZXIob3B0LnZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY29tbWFuZDtcbiAgICB9XG4gICAgYXN5bmMgZXhlY3V0ZSgpIHtcbiAgICAgICAgbGV0IGNvbW1hbmRzID0gdGhpcy5jb21tYW5kcztcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmluZGV4ICE9PSBgdW5kZWZpbmVkYCAmJiB0aGlzLmluZGV4ID49IDAgJiYgdGhpcy5pbmRleCA8IGNvbW1hbmRzLmxlbmd0aClcbiAgICAgICAgICAgIGNvbW1hbmRzID0gW2NvbW1hbmRzW3RoaXMuaW5kZXhdXTtcbiAgICAgICAgaWYgKGNvbW1hbmRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgdGhpcy5jb250ZXh0LnN0ZG91dC53cml0ZSh0aGlzLmNsaS51c2FnZSgpKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChjb21tYW5kcy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgIHRoaXMuY29udGV4dC5zdGRvdXQud3JpdGUodGhpcy5jbGkudXNhZ2UodGhpcy5jb250ZXh0c1tjb21tYW5kc1swXV0uY29tbWFuZENsYXNzLCB7IGRldGFpbGVkOiB0cnVlIH0pKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChjb21tYW5kcy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICB0aGlzLmNvbnRleHQuc3Rkb3V0LndyaXRlKGBNdWx0aXBsZSBjb21tYW5kcyBtYXRjaCB5b3VyIHNlbGVjdGlvbjpcXG5gKTtcbiAgICAgICAgICAgIHRoaXMuY29udGV4dC5zdGRvdXQud3JpdGUoYFxcbmApO1xuICAgICAgICAgICAgbGV0IGluZGV4ID0gMDtcbiAgICAgICAgICAgIGZvciAoY29uc3QgY29tbWFuZCBvZiB0aGlzLmNvbW1hbmRzKVxuICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5zdGRvdXQud3JpdGUodGhpcy5jbGkudXNhZ2UodGhpcy5jb250ZXh0c1tjb21tYW5kXS5jb21tYW5kQ2xhc3MsIHsgcHJlZml4OiBgJHtpbmRleCsrfS4gYC5wYWRTdGFydCg1KSB9KSk7XG4gICAgICAgICAgICB0aGlzLmNvbnRleHQuc3Rkb3V0LndyaXRlKGBcXG5gKTtcbiAgICAgICAgICAgIHRoaXMuY29udGV4dC5zdGRvdXQud3JpdGUoYFJ1biBhZ2FpbiB3aXRoIC1oPTxpbmRleD4gdG8gc2VlIHRoZSBsb25nZXIgZGV0YWlscyBvZiBhbnkgb2YgdGhvc2UgY29tbWFuZHMuXFxuYCk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydHMuSGVscENvbW1hbmQgPSBIZWxwQ29tbWFuZDtcbiIsICIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG5cbnZhciBjb25zdGFudHMgPSByZXF1aXJlKCcuLi9jb25zdGFudHMuanMnKTtcbnZhciBjb3JlID0gcmVxdWlyZSgnLi4vY29yZS5qcycpO1xudmFyIGZvcm1hdCA9IHJlcXVpcmUoJy4uL2Zvcm1hdC5qcycpO1xudmFyIHBsYXRmb3JtID0gcmVxdWlyZSgnLi4vcGxhdGZvcm0nKTtcbnZhciBhZHZhbmNlZF9Db21tYW5kID0gcmVxdWlyZSgnLi9Db21tYW5kLmpzJyk7XG52YXIgYWR2YW5jZWRfSGVscENvbW1hbmQgPSByZXF1aXJlKCcuL0hlbHBDb21tYW5kLmpzJyk7XG5cbmNvbnN0IGVycm9yQ29tbWFuZFN5bWJvbCA9IFN5bWJvbChgY2xpcGFuaW9uL2Vycm9yQ29tbWFuZGApO1xuYXN5bmMgZnVuY3Rpb24gcnVuRXhpdCguLi5hcmdzKSB7XG4gICAgY29uc3QgeyByZXNvbHZlZE9wdGlvbnMsIHJlc29sdmVkQ29tbWFuZENsYXNzZXMsIHJlc29sdmVkQXJndiwgcmVzb2x2ZWRDb250ZXh0LCB9ID0gcmVzb2x2ZVJ1blBhcmFtZXRlcnMoYXJncyk7XG4gICAgY29uc3QgY2xpID0gQ2xpLmZyb20ocmVzb2x2ZWRDb21tYW5kQ2xhc3NlcywgcmVzb2x2ZWRPcHRpb25zKTtcbiAgICByZXR1cm4gY2xpLnJ1bkV4aXQocmVzb2x2ZWRBcmd2LCByZXNvbHZlZENvbnRleHQpO1xufVxuYXN5bmMgZnVuY3Rpb24gcnVuKC4uLmFyZ3MpIHtcbiAgICBjb25zdCB7IHJlc29sdmVkT3B0aW9ucywgcmVzb2x2ZWRDb21tYW5kQ2xhc3NlcywgcmVzb2x2ZWRBcmd2LCByZXNvbHZlZENvbnRleHQsIH0gPSByZXNvbHZlUnVuUGFyYW1ldGVycyhhcmdzKTtcbiAgICBjb25zdCBjbGkgPSBDbGkuZnJvbShyZXNvbHZlZENvbW1hbmRDbGFzc2VzLCByZXNvbHZlZE9wdGlvbnMpO1xuICAgIHJldHVybiBjbGkucnVuKHJlc29sdmVkQXJndiwgcmVzb2x2ZWRDb250ZXh0KTtcbn1cbmZ1bmN0aW9uIHJlc29sdmVSdW5QYXJhbWV0ZXJzKGFyZ3MpIHtcbiAgICBsZXQgcmVzb2x2ZWRPcHRpb25zO1xuICAgIGxldCByZXNvbHZlZENvbW1hbmRDbGFzc2VzO1xuICAgIGxldCByZXNvbHZlZEFyZ3Y7XG4gICAgbGV0IHJlc29sdmVkQ29udGV4dDtcbiAgICBpZiAodHlwZW9mIHByb2Nlc3MgIT09IGB1bmRlZmluZWRgICYmIHR5cGVvZiBwcm9jZXNzLmFyZ3YgIT09IGB1bmRlZmluZWRgKVxuICAgICAgICByZXNvbHZlZEFyZ3YgPSBwcm9jZXNzLmFyZ3Yuc2xpY2UoMik7XG4gICAgc3dpdGNoIChhcmdzLmxlbmd0aCkge1xuICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZWRDb21tYW5kQ2xhc3NlcyA9IGFyZ3NbMF07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlmIChhcmdzWzBdICYmIChhcmdzWzBdLnByb3RvdHlwZSBpbnN0YW5jZW9mIGFkdmFuY2VkX0NvbW1hbmQuQ29tbWFuZCkgfHwgQXJyYXkuaXNBcnJheShhcmdzWzBdKSkge1xuICAgICAgICAgICAgICAgICAgICByZXNvbHZlZENvbW1hbmRDbGFzc2VzID0gYXJnc1swXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoYXJnc1sxXSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmVkQXJndiA9IGFyZ3NbMV07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlZENvbnRleHQgPSBhcmdzWzFdO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXNvbHZlZE9wdGlvbnMgPSBhcmdzWzBdO1xuICAgICAgICAgICAgICAgICAgICByZXNvbHZlZENvbW1hbmRDbGFzc2VzID0gYXJnc1sxXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGFyZ3NbMl0pKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmVkT3B0aW9ucyA9IGFyZ3NbMF07XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmVkQ29tbWFuZENsYXNzZXMgPSBhcmdzWzFdO1xuICAgICAgICAgICAgICAgICAgICByZXNvbHZlZEFyZ3YgPSBhcmdzWzJdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChhcmdzWzBdICYmIChhcmdzWzBdLnByb3RvdHlwZSBpbnN0YW5jZW9mIGFkdmFuY2VkX0NvbW1hbmQuQ29tbWFuZCkgfHwgQXJyYXkuaXNBcnJheShhcmdzWzBdKSkge1xuICAgICAgICAgICAgICAgICAgICByZXNvbHZlZENvbW1hbmRDbGFzc2VzID0gYXJnc1swXTtcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZWRBcmd2ID0gYXJnc1sxXTtcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZWRDb250ZXh0ID0gYXJnc1syXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmVkT3B0aW9ucyA9IGFyZ3NbMF07XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmVkQ29tbWFuZENsYXNzZXMgPSBhcmdzWzFdO1xuICAgICAgICAgICAgICAgICAgICByZXNvbHZlZENvbnRleHQgPSBhcmdzWzJdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHJlc29sdmVkT3B0aW9ucyA9IGFyZ3NbMF07XG4gICAgICAgICAgICAgICAgcmVzb2x2ZWRDb21tYW5kQ2xhc3NlcyA9IGFyZ3NbMV07XG4gICAgICAgICAgICAgICAgcmVzb2x2ZWRBcmd2ID0gYXJnc1syXTtcbiAgICAgICAgICAgICAgICByZXNvbHZlZENvbnRleHQgPSBhcmdzWzNdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgcmVzb2x2ZWRBcmd2ID09PSBgdW5kZWZpbmVkYClcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgYXJndiBwYXJhbWV0ZXIgbXVzdCBiZSBwcm92aWRlZCB3aGVuIHJ1bm5pbmcgQ2xpcGFuaW9uIG91dHNpZGUgb2YgYSBOb2RlIGNvbnRleHRgKTtcbiAgICByZXR1cm4ge1xuICAgICAgICByZXNvbHZlZE9wdGlvbnMsXG4gICAgICAgIHJlc29sdmVkQ29tbWFuZENsYXNzZXMsXG4gICAgICAgIHJlc29sdmVkQXJndixcbiAgICAgICAgcmVzb2x2ZWRDb250ZXh0LFxuICAgIH07XG59XG4vKipcbiAqIEB0ZW1wbGF0ZSBDb250ZXh0IFRoZSBjb250ZXh0IHNoYXJlZCBieSBhbGwgY29tbWFuZHMuIENvbnRleHRzIGFyZSBhIHNldCBvZiB2YWx1ZXMsIGRlZmluZWQgd2hlbiBjYWxsaW5nIHRoZSBgcnVuYC9gcnVuRXhpdGAgZnVuY3Rpb25zIGZyb20gdGhlIENMSSBpbnN0YW5jZSwgdGhhdCB3aWxsIGJlIG1hZGUgYXZhaWxhYmxlIHRvIHRoZSBjb21tYW5kcyB2aWEgYHRoaXMuY29udGV4dGAuXG4gKi9cbmNsYXNzIENsaSB7XG4gICAgY29uc3RydWN0b3IoeyBiaW5hcnlMYWJlbCwgYmluYXJ5TmFtZTogYmluYXJ5TmFtZU9wdCA9IGAuLi5gLCBiaW5hcnlWZXJzaW9uLCBlbmFibGVDYXB0dXJlID0gZmFsc2UsIGVuYWJsZUNvbG9ycyB9ID0ge30pIHtcbiAgICAgICAgdGhpcy5yZWdpc3RyYXRpb25zID0gbmV3IE1hcCgpO1xuICAgICAgICB0aGlzLmJ1aWxkZXIgPSBuZXcgY29yZS5DbGlCdWlsZGVyKHsgYmluYXJ5TmFtZTogYmluYXJ5TmFtZU9wdCB9KTtcbiAgICAgICAgdGhpcy5iaW5hcnlMYWJlbCA9IGJpbmFyeUxhYmVsO1xuICAgICAgICB0aGlzLmJpbmFyeU5hbWUgPSBiaW5hcnlOYW1lT3B0O1xuICAgICAgICB0aGlzLmJpbmFyeVZlcnNpb24gPSBiaW5hcnlWZXJzaW9uO1xuICAgICAgICB0aGlzLmVuYWJsZUNhcHR1cmUgPSBlbmFibGVDYXB0dXJlO1xuICAgICAgICB0aGlzLmVuYWJsZUNvbG9ycyA9IGVuYWJsZUNvbG9ycztcbiAgICB9XG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIG5ldyBDbGkgYW5kIHJlZ2lzdGVycyBhbGwgY29tbWFuZHMgcGFzc2VkIGFzIHBhcmFtZXRlcnMuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY29tbWFuZENsYXNzZXMgVGhlIENvbW1hbmRzIHRvIHJlZ2lzdGVyXG4gICAgICogQHJldHVybnMgVGhlIGNyZWF0ZWQgYENsaWAgaW5zdGFuY2VcbiAgICAgKi9cbiAgICBzdGF0aWMgZnJvbShjb21tYW5kQ2xhc3Nlcywgb3B0aW9ucyA9IHt9KSB7XG4gICAgICAgIGNvbnN0IGNsaSA9IG5ldyBDbGkob3B0aW9ucyk7XG4gICAgICAgIGNvbnN0IHJlc29sdmVkQ29tbWFuZENsYXNzZXMgPSBBcnJheS5pc0FycmF5KGNvbW1hbmRDbGFzc2VzKVxuICAgICAgICAgICAgPyBjb21tYW5kQ2xhc3Nlc1xuICAgICAgICAgICAgOiBbY29tbWFuZENsYXNzZXNdO1xuICAgICAgICBmb3IgKGNvbnN0IGNvbW1hbmRDbGFzcyBvZiByZXNvbHZlZENvbW1hbmRDbGFzc2VzKVxuICAgICAgICAgICAgY2xpLnJlZ2lzdGVyKGNvbW1hbmRDbGFzcyk7XG4gICAgICAgIHJldHVybiBjbGk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJlZ2lzdGVycyBhIGNvbW1hbmQgaW5zaWRlIHRoZSBDTEkuXG4gICAgICovXG4gICAgcmVnaXN0ZXIoY29tbWFuZENsYXNzKSB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgY29uc3Qgc3BlY3MgPSBuZXcgTWFwKCk7XG4gICAgICAgIGNvbnN0IGNvbW1hbmQgPSBuZXcgY29tbWFuZENsYXNzKCk7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGNvbW1hbmQpIHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gY29tbWFuZFtrZXldO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gYG9iamVjdGAgJiYgdmFsdWUgIT09IG51bGwgJiYgdmFsdWVbYWR2YW5jZWRfQ29tbWFuZC5Db21tYW5kLmlzT3B0aW9uXSkge1xuICAgICAgICAgICAgICAgIHNwZWNzLnNldChrZXksIHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb25zdCBidWlsZGVyID0gdGhpcy5idWlsZGVyLmNvbW1hbmQoKTtcbiAgICAgICAgY29uc3QgaW5kZXggPSBidWlsZGVyLmNsaUluZGV4O1xuICAgICAgICBjb25zdCBwYXRocyA9IChfYSA9IGNvbW1hbmRDbGFzcy5wYXRocykgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogY29tbWFuZC5wYXRocztcbiAgICAgICAgaWYgKHR5cGVvZiBwYXRocyAhPT0gYHVuZGVmaW5lZGApXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHBhdGggb2YgcGF0aHMpXG4gICAgICAgICAgICAgICAgYnVpbGRlci5hZGRQYXRoKHBhdGgpO1xuICAgICAgICB0aGlzLnJlZ2lzdHJhdGlvbnMuc2V0KGNvbW1hbmRDbGFzcywgeyBzcGVjcywgYnVpbGRlciwgaW5kZXggfSk7XG4gICAgICAgIGZvciAoY29uc3QgW2tleSwgeyBkZWZpbml0aW9uIH1dIG9mIHNwZWNzLmVudHJpZXMoKSlcbiAgICAgICAgICAgIGRlZmluaXRpb24oYnVpbGRlciwga2V5KTtcbiAgICAgICAgYnVpbGRlci5zZXRDb250ZXh0KHtcbiAgICAgICAgICAgIGNvbW1hbmRDbGFzcyxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHByb2Nlc3MoaW5wdXQsIHVzZXJDb250ZXh0KSB7XG4gICAgICAgIGNvbnN0IHsgY29udGV4dHMsIHByb2Nlc3MgfSA9IHRoaXMuYnVpbGRlci5jb21waWxlKCk7XG4gICAgICAgIGNvbnN0IHN0YXRlID0gcHJvY2VzcyhpbnB1dCk7XG4gICAgICAgIGNvbnN0IGNvbnRleHQgPSB7XG4gICAgICAgICAgICAuLi5DbGkuZGVmYXVsdENvbnRleHQsXG4gICAgICAgICAgICAuLi51c2VyQ29udGV4dCxcbiAgICAgICAgfTtcbiAgICAgICAgc3dpdGNoIChzdGF0ZS5zZWxlY3RlZEluZGV4KSB7XG4gICAgICAgICAgICBjYXNlIGNvbnN0YW50cy5IRUxQX0NPTU1BTkRfSU5ERVg6XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjb21tYW5kID0gYWR2YW5jZWRfSGVscENvbW1hbmQuSGVscENvbW1hbmQuZnJvbShzdGF0ZSwgY29udGV4dHMpO1xuICAgICAgICAgICAgICAgICAgICBjb21tYW5kLmNvbnRleHQgPSBjb250ZXh0O1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29tbWFuZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBjb21tYW5kQ2xhc3MgfSA9IGNvbnRleHRzW3N0YXRlLnNlbGVjdGVkSW5kZXhdO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByZWNvcmQgPSB0aGlzLnJlZ2lzdHJhdGlvbnMuZ2V0KGNvbW1hbmRDbGFzcyk7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgcmVjb3JkID09PSBgdW5kZWZpbmVkYClcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQXNzZXJ0aW9uIGZhaWxlZDogRXhwZWN0ZWQgdGhlIGNvbW1hbmQgY2xhc3MgdG8gaGF2ZSBiZWVuIHJlZ2lzdGVyZWQuYCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbW1hbmQgPSBuZXcgY29tbWFuZENsYXNzKCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbW1hbmQuY29udGV4dCA9IGNvbnRleHQ7XG4gICAgICAgICAgICAgICAgICAgIGNvbW1hbmQucGF0aCA9IHN0YXRlLnBhdGg7XG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IFtrZXksIHsgdHJhbnNmb3JtZXIgfV0gb2YgcmVjb3JkLnNwZWNzLmVudHJpZXMoKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kW2tleV0gPSB0cmFuc2Zvcm1lcihyZWNvcmQuYnVpbGRlciwga2V5LCBzdGF0ZSwgY29udGV4dCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29tbWFuZDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yW2Vycm9yQ29tbWFuZFN5bWJvbF0gPSBjb21tYW5kO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG4gICAgYXN5bmMgcnVuKGlucHV0LCB1c2VyQ29udGV4dCkge1xuICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICBsZXQgY29tbWFuZDtcbiAgICAgICAgY29uc3QgY29udGV4dCA9IHtcbiAgICAgICAgICAgIC4uLkNsaS5kZWZhdWx0Q29udGV4dCxcbiAgICAgICAgICAgIC4uLnVzZXJDb250ZXh0LFxuICAgICAgICB9O1xuICAgICAgICBjb25zdCBjb2xvcmVkID0gKF9hID0gdGhpcy5lbmFibGVDb2xvcnMpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IGNvbnRleHQuY29sb3JEZXB0aCA+IDE7XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShpbnB1dCkpIHtcbiAgICAgICAgICAgIGNvbW1hbmQgPSBpbnB1dDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgY29tbWFuZCA9IHRoaXMucHJvY2VzcyhpbnB1dCwgY29udGV4dCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICBjb250ZXh0LnN0ZG91dC53cml0ZSh0aGlzLmVycm9yKGVycm9yLCB7IGNvbG9yZWQgfSkpO1xuICAgICAgICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChjb21tYW5kLmhlbHApIHtcbiAgICAgICAgICAgIGNvbnRleHQuc3Rkb3V0LndyaXRlKHRoaXMudXNhZ2UoY29tbWFuZCwgeyBjb2xvcmVkLCBkZXRhaWxlZDogdHJ1ZSB9KSk7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfVxuICAgICAgICBjb21tYW5kLmNvbnRleHQgPSBjb250ZXh0O1xuICAgICAgICBjb21tYW5kLmNsaSA9IHtcbiAgICAgICAgICAgIGJpbmFyeUxhYmVsOiB0aGlzLmJpbmFyeUxhYmVsLFxuICAgICAgICAgICAgYmluYXJ5TmFtZTogdGhpcy5iaW5hcnlOYW1lLFxuICAgICAgICAgICAgYmluYXJ5VmVyc2lvbjogdGhpcy5iaW5hcnlWZXJzaW9uLFxuICAgICAgICAgICAgZW5hYmxlQ2FwdHVyZTogdGhpcy5lbmFibGVDYXB0dXJlLFxuICAgICAgICAgICAgZW5hYmxlQ29sb3JzOiB0aGlzLmVuYWJsZUNvbG9ycyxcbiAgICAgICAgICAgIGRlZmluaXRpb25zOiAoKSA9PiB0aGlzLmRlZmluaXRpb25zKCksXG4gICAgICAgICAgICBlcnJvcjogKGVycm9yLCBvcHRzKSA9PiB0aGlzLmVycm9yKGVycm9yLCBvcHRzKSxcbiAgICAgICAgICAgIGZvcm1hdDogY29sb3JlZCA9PiB0aGlzLmZvcm1hdChjb2xvcmVkKSxcbiAgICAgICAgICAgIHByb2Nlc3M6IChpbnB1dCwgc3ViQ29udGV4dCkgPT4gdGhpcy5wcm9jZXNzKGlucHV0LCB7IC4uLmNvbnRleHQsIC4uLnN1YkNvbnRleHQgfSksXG4gICAgICAgICAgICBydW46IChpbnB1dCwgc3ViQ29udGV4dCkgPT4gdGhpcy5ydW4oaW5wdXQsIHsgLi4uY29udGV4dCwgLi4uc3ViQ29udGV4dCB9KSxcbiAgICAgICAgICAgIHVzYWdlOiAoY29tbWFuZCwgb3B0cykgPT4gdGhpcy51c2FnZShjb21tYW5kLCBvcHRzKSxcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgYWN0aXZhdGUgPSB0aGlzLmVuYWJsZUNhcHR1cmVcbiAgICAgICAgICAgID8gKF9iID0gcGxhdGZvcm0uZ2V0Q2FwdHVyZUFjdGl2YXRvcihjb250ZXh0KSkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogbm9vcENhcHR1cmVBY3RpdmF0b3IgOiBub29wQ2FwdHVyZUFjdGl2YXRvcjtcbiAgICAgICAgbGV0IGV4aXRDb2RlO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgZXhpdENvZGUgPSBhd2FpdCBhY3RpdmF0ZSgoKSA9PiBjb21tYW5kLnZhbGlkYXRlQW5kRXhlY3V0ZSgpLmNhdGNoKGVycm9yID0+IGNvbW1hbmQuY2F0Y2goZXJyb3IpLnRoZW4oKCkgPT4gMCkpKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIGNvbnRleHQuc3Rkb3V0LndyaXRlKHRoaXMuZXJyb3IoZXJyb3IsIHsgY29sb3JlZCwgY29tbWFuZCB9KSk7XG4gICAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZXhpdENvZGU7XG4gICAgfVxuICAgIGFzeW5jIHJ1bkV4aXQoaW5wdXQsIGNvbnRleHQpIHtcbiAgICAgICAgcHJvY2Vzcy5leGl0Q29kZSA9IGF3YWl0IHRoaXMucnVuKGlucHV0LCBjb250ZXh0KTtcbiAgICB9XG4gICAgc3VnZ2VzdChpbnB1dCwgcGFydGlhbCkge1xuICAgICAgICBjb25zdCB7IHN1Z2dlc3QgfSA9IHRoaXMuYnVpbGRlci5jb21waWxlKCk7XG4gICAgICAgIHJldHVybiBzdWdnZXN0KGlucHV0LCBwYXJ0aWFsKTtcbiAgICB9XG4gICAgZGVmaW5pdGlvbnMoeyBjb2xvcmVkID0gZmFsc2UgfSA9IHt9KSB7XG4gICAgICAgIGNvbnN0IGRhdGEgPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBbY29tbWFuZENsYXNzLCB7IGluZGV4IH1dIG9mIHRoaXMucmVnaXN0cmF0aW9ucykge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBjb21tYW5kQ2xhc3MudXNhZ2UgPT09IGB1bmRlZmluZWRgKVxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgY29uc3QgeyB1c2FnZTogcGF0aCB9ID0gdGhpcy5nZXRVc2FnZUJ5SW5kZXgoaW5kZXgsIHsgZGV0YWlsZWQ6IGZhbHNlIH0pO1xuICAgICAgICAgICAgY29uc3QgeyB1c2FnZSwgb3B0aW9ucyB9ID0gdGhpcy5nZXRVc2FnZUJ5SW5kZXgoaW5kZXgsIHsgZGV0YWlsZWQ6IHRydWUsIGlubGluZU9wdGlvbnM6IGZhbHNlIH0pO1xuICAgICAgICAgICAgY29uc3QgY2F0ZWdvcnkgPSB0eXBlb2YgY29tbWFuZENsYXNzLnVzYWdlLmNhdGVnb3J5ICE9PSBgdW5kZWZpbmVkYFxuICAgICAgICAgICAgICAgID8gZm9ybWF0LmZvcm1hdE1hcmtkb3duaXNoKGNvbW1hbmRDbGFzcy51c2FnZS5jYXRlZ29yeSwgeyBmb3JtYXQ6IHRoaXMuZm9ybWF0KGNvbG9yZWQpLCBwYXJhZ3JhcGhzOiBmYWxzZSB9KVxuICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuICAgICAgICAgICAgY29uc3QgZGVzY3JpcHRpb24gPSB0eXBlb2YgY29tbWFuZENsYXNzLnVzYWdlLmRlc2NyaXB0aW9uICE9PSBgdW5kZWZpbmVkYFxuICAgICAgICAgICAgICAgID8gZm9ybWF0LmZvcm1hdE1hcmtkb3duaXNoKGNvbW1hbmRDbGFzcy51c2FnZS5kZXNjcmlwdGlvbiwgeyBmb3JtYXQ6IHRoaXMuZm9ybWF0KGNvbG9yZWQpLCBwYXJhZ3JhcGhzOiBmYWxzZSB9KVxuICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuICAgICAgICAgICAgY29uc3QgZGV0YWlscyA9IHR5cGVvZiBjb21tYW5kQ2xhc3MudXNhZ2UuZGV0YWlscyAhPT0gYHVuZGVmaW5lZGBcbiAgICAgICAgICAgICAgICA/IGZvcm1hdC5mb3JtYXRNYXJrZG93bmlzaChjb21tYW5kQ2xhc3MudXNhZ2UuZGV0YWlscywgeyBmb3JtYXQ6IHRoaXMuZm9ybWF0KGNvbG9yZWQpLCBwYXJhZ3JhcGhzOiB0cnVlIH0pXG4gICAgICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgICAgICAgICBjb25zdCBleGFtcGxlcyA9IHR5cGVvZiBjb21tYW5kQ2xhc3MudXNhZ2UuZXhhbXBsZXMgIT09IGB1bmRlZmluZWRgXG4gICAgICAgICAgICAgICAgPyBjb21tYW5kQ2xhc3MudXNhZ2UuZXhhbXBsZXMubWFwKChbbGFiZWwsIGNsaV0pID0+IFtmb3JtYXQuZm9ybWF0TWFya2Rvd25pc2gobGFiZWwsIHsgZm9ybWF0OiB0aGlzLmZvcm1hdChjb2xvcmVkKSwgcGFyYWdyYXBoczogZmFsc2UgfSksIGNsaS5yZXBsYWNlKC9cXCQwL2csIHRoaXMuYmluYXJ5TmFtZSldKVxuICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuICAgICAgICAgICAgZGF0YS5wdXNoKHsgcGF0aCwgdXNhZ2UsIGNhdGVnb3J5LCBkZXNjcmlwdGlvbiwgZGV0YWlscywgZXhhbXBsZXMsIG9wdGlvbnMgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfVxuICAgIHVzYWdlKGNvbW1hbmQgPSBudWxsLCB7IGNvbG9yZWQsIGRldGFpbGVkID0gZmFsc2UsIHByZWZpeCA9IGAkIGAgfSA9IHt9KSB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgLy8gSW4gY2FzZSB0aGUgZGVmYXVsdCBjb21tYW5kIGlzIHRoZSBvbmx5IG9uZSwgd2UgY2FuIGp1c3Qgc2hvdyB0aGUgY29tbWFuZCBoZWxwIHJhdGhlciB0aGFuIHRoZSBnZW5lcmFsIG9uZVxuICAgICAgICBpZiAoY29tbWFuZCA9PT0gbnVsbCkge1xuICAgICAgICAgICAgZm9yIChjb25zdCBjb21tYW5kQ2xhc3Mgb2YgdGhpcy5yZWdpc3RyYXRpb25zLmtleXMoKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhdGhzID0gY29tbWFuZENsYXNzLnBhdGhzO1xuICAgICAgICAgICAgICAgIGNvbnN0IGlzRG9jdW1lbnRlZCA9IHR5cGVvZiBjb21tYW5kQ2xhc3MudXNhZ2UgIT09IGB1bmRlZmluZWRgO1xuICAgICAgICAgICAgICAgIGNvbnN0IGlzRXhjbHVzaXZlbHlEZWZhdWx0ID0gIXBhdGhzIHx8IHBhdGhzLmxlbmd0aCA9PT0gMCB8fCAocGF0aHMubGVuZ3RoID09PSAxICYmIHBhdGhzWzBdLmxlbmd0aCA9PT0gMCk7XG4gICAgICAgICAgICAgICAgY29uc3QgaXNEZWZhdWx0ID0gaXNFeGNsdXNpdmVseURlZmF1bHQgfHwgKChfYSA9IHBhdGhzID09PSBudWxsIHx8IHBhdGhzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBwYXRocy5zb21lKHBhdGggPT4gcGF0aC5sZW5ndGggPT09IDApKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBmYWxzZSk7XG4gICAgICAgICAgICAgICAgaWYgKGlzRGVmYXVsdCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoY29tbWFuZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZCA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQgPSBjb21tYW5kQ2xhc3M7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc0RvY3VtZW50ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoY29tbWFuZCkge1xuICAgICAgICAgICAgICAgIGRldGFpbGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIGNvbnN0IGNvbW1hbmRDbGFzcyA9IGNvbW1hbmQgIT09IG51bGwgJiYgY29tbWFuZCBpbnN0YW5jZW9mIGFkdmFuY2VkX0NvbW1hbmQuQ29tbWFuZFxuICAgICAgICAgICAgPyBjb21tYW5kLmNvbnN0cnVjdG9yXG4gICAgICAgICAgICA6IGNvbW1hbmQ7XG4gICAgICAgIGxldCByZXN1bHQgPSBgYDtcbiAgICAgICAgaWYgKCFjb21tYW5kQ2xhc3MpIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbW1hbmRzQnlDYXRlZ29yaWVzID0gbmV3IE1hcCgpO1xuICAgICAgICAgICAgZm9yIChjb25zdCBbY29tbWFuZENsYXNzLCB7IGluZGV4IH1dIG9mIHRoaXMucmVnaXN0cmF0aW9ucy5lbnRyaWVzKCkpIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGNvbW1hbmRDbGFzcy51c2FnZSA9PT0gYHVuZGVmaW5lZGApXG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNhdGVnb3J5ID0gdHlwZW9mIGNvbW1hbmRDbGFzcy51c2FnZS5jYXRlZ29yeSAhPT0gYHVuZGVmaW5lZGBcbiAgICAgICAgICAgICAgICAgICAgPyBmb3JtYXQuZm9ybWF0TWFya2Rvd25pc2goY29tbWFuZENsYXNzLnVzYWdlLmNhdGVnb3J5LCB7IGZvcm1hdDogdGhpcy5mb3JtYXQoY29sb3JlZCksIHBhcmFncmFwaHM6IGZhbHNlIH0pXG4gICAgICAgICAgICAgICAgICAgIDogbnVsbDtcbiAgICAgICAgICAgICAgICBsZXQgY2F0ZWdvcnlDb21tYW5kcyA9IGNvbW1hbmRzQnlDYXRlZ29yaWVzLmdldChjYXRlZ29yeSk7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBjYXRlZ29yeUNvbW1hbmRzID09PSBgdW5kZWZpbmVkYClcbiAgICAgICAgICAgICAgICAgICAgY29tbWFuZHNCeUNhdGVnb3JpZXMuc2V0KGNhdGVnb3J5LCBjYXRlZ29yeUNvbW1hbmRzID0gW10pO1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgdXNhZ2UgfSA9IHRoaXMuZ2V0VXNhZ2VCeUluZGV4KGluZGV4KTtcbiAgICAgICAgICAgICAgICBjYXRlZ29yeUNvbW1hbmRzLnB1c2goeyBjb21tYW5kQ2xhc3MsIHVzYWdlIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgY2F0ZWdvcnlOYW1lcyA9IEFycmF5LmZyb20oY29tbWFuZHNCeUNhdGVnb3JpZXMua2V5cygpKS5zb3J0KChhLCBiKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGEgPT09IG51bGwpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgICAgICAgICBpZiAoYiA9PT0gbnVsbClcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICsxO1xuICAgICAgICAgICAgICAgIHJldHVybiBhLmxvY2FsZUNvbXBhcmUoYiwgYGVuYCwgeyB1c2FnZTogYHNvcnRgLCBjYXNlRmlyc3Q6IGB1cHBlcmAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbnN0IGhhc0xhYmVsID0gdHlwZW9mIHRoaXMuYmluYXJ5TGFiZWwgIT09IGB1bmRlZmluZWRgO1xuICAgICAgICAgICAgY29uc3QgaGFzVmVyc2lvbiA9IHR5cGVvZiB0aGlzLmJpbmFyeVZlcnNpb24gIT09IGB1bmRlZmluZWRgO1xuICAgICAgICAgICAgaWYgKGhhc0xhYmVsIHx8IGhhc1ZlcnNpb24pIHtcbiAgICAgICAgICAgICAgICBpZiAoaGFzTGFiZWwgJiYgaGFzVmVyc2lvbilcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IGAke3RoaXMuZm9ybWF0KGNvbG9yZWQpLmhlYWRlcihgJHt0aGlzLmJpbmFyeUxhYmVsfSAtICR7dGhpcy5iaW5hcnlWZXJzaW9ufWApfVxcblxcbmA7XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoaGFzTGFiZWwpXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSBgJHt0aGlzLmZvcm1hdChjb2xvcmVkKS5oZWFkZXIoYCR7dGhpcy5iaW5hcnlMYWJlbH1gKX1cXG5gO1xuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IGAke3RoaXMuZm9ybWF0KGNvbG9yZWQpLmhlYWRlcihgJHt0aGlzLmJpbmFyeVZlcnNpb259YCl9XFxuYDtcbiAgICAgICAgICAgICAgICByZXN1bHQgKz0gYCAgJHt0aGlzLmZvcm1hdChjb2xvcmVkKS5ib2xkKHByZWZpeCl9JHt0aGlzLmJpbmFyeU5hbWV9IDxjb21tYW5kPlxcbmA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXN1bHQgKz0gYCR7dGhpcy5mb3JtYXQoY29sb3JlZCkuYm9sZChwcmVmaXgpfSR7dGhpcy5iaW5hcnlOYW1lfSA8Y29tbWFuZD5cXG5gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZm9yIChjb25zdCBjYXRlZ29yeU5hbWUgb2YgY2F0ZWdvcnlOYW1lcykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbW1hbmRzID0gY29tbWFuZHNCeUNhdGVnb3JpZXMuZ2V0KGNhdGVnb3J5TmFtZSkuc2xpY2UoKS5zb3J0KChhLCBiKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhLnVzYWdlLmxvY2FsZUNvbXBhcmUoYi51c2FnZSwgYGVuYCwgeyB1c2FnZTogYHNvcnRgLCBjYXNlRmlyc3Q6IGB1cHBlcmAgfSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgY29uc3QgaGVhZGVyID0gY2F0ZWdvcnlOYW1lICE9PSBudWxsXG4gICAgICAgICAgICAgICAgICAgID8gY2F0ZWdvcnlOYW1lLnRyaW0oKVxuICAgICAgICAgICAgICAgICAgICA6IGBHZW5lcmFsIGNvbW1hbmRzYDtcbiAgICAgICAgICAgICAgICByZXN1bHQgKz0gYFxcbmA7XG4gICAgICAgICAgICAgICAgcmVzdWx0ICs9IGAke3RoaXMuZm9ybWF0KGNvbG9yZWQpLmhlYWRlcihgJHtoZWFkZXJ9YCl9XFxuYDtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHsgY29tbWFuZENsYXNzLCB1c2FnZSB9IG9mIGNvbW1hbmRzKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRvYyA9IGNvbW1hbmRDbGFzcy51c2FnZS5kZXNjcmlwdGlvbiB8fCBgdW5kb2N1bWVudGVkYDtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IGBcXG5gO1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gYCAgJHt0aGlzLmZvcm1hdChjb2xvcmVkKS5ib2xkKHVzYWdlKX1cXG5gO1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gYCAgICAke2Zvcm1hdC5mb3JtYXRNYXJrZG93bmlzaChkb2MsIHsgZm9ybWF0OiB0aGlzLmZvcm1hdChjb2xvcmVkKSwgcGFyYWdyYXBoczogZmFsc2UgfSl9YDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXN1bHQgKz0gYFxcbmA7XG4gICAgICAgICAgICByZXN1bHQgKz0gZm9ybWF0LmZvcm1hdE1hcmtkb3duaXNoKGBZb3UgY2FuIGFsc28gcHJpbnQgbW9yZSBkZXRhaWxzIGFib3V0IGFueSBvZiB0aGVzZSBjb21tYW5kcyBieSBjYWxsaW5nIHRoZW0gd2l0aCB0aGUgXFxgLWgsLS1oZWxwXFxgIGZsYWcgcmlnaHQgYWZ0ZXIgdGhlIGNvbW1hbmQgbmFtZS5gLCB7IGZvcm1hdDogdGhpcy5mb3JtYXQoY29sb3JlZCksIHBhcmFncmFwaHM6IHRydWUgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBpZiAoIWRldGFpbGVkKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyB1c2FnZSB9ID0gdGhpcy5nZXRVc2FnZUJ5UmVnaXN0cmF0aW9uKGNvbW1hbmRDbGFzcyk7XG4gICAgICAgICAgICAgICAgcmVzdWx0ICs9IGAke3RoaXMuZm9ybWF0KGNvbG9yZWQpLmJvbGQocHJlZml4KX0ke3VzYWdlfVxcbmA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCB7IGRlc2NyaXB0aW9uID0gYGAsIGRldGFpbHMgPSBgYCwgZXhhbXBsZXMgPSBbXSwgfSA9IGNvbW1hbmRDbGFzcy51c2FnZSB8fCB7fTtcbiAgICAgICAgICAgICAgICBpZiAoZGVzY3JpcHRpb24gIT09IGBgKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSBmb3JtYXQuZm9ybWF0TWFya2Rvd25pc2goZGVzY3JpcHRpb24sIHsgZm9ybWF0OiB0aGlzLmZvcm1hdChjb2xvcmVkKSwgcGFyYWdyYXBoczogZmFsc2UgfSkucmVwbGFjZSgvXi4vLCAkMCA9PiAkMC50b1VwcGVyQ2FzZSgpKTtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IGBcXG5gO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoZGV0YWlscyAhPT0gYGAgfHwgZXhhbXBsZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gYCR7dGhpcy5mb3JtYXQoY29sb3JlZCkuaGVhZGVyKGBVc2FnZWApfVxcbmA7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSBgXFxuYDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgeyB1c2FnZSwgb3B0aW9ucyB9ID0gdGhpcy5nZXRVc2FnZUJ5UmVnaXN0cmF0aW9uKGNvbW1hbmRDbGFzcywgeyBpbmxpbmVPcHRpb25zOiBmYWxzZSB9KTtcbiAgICAgICAgICAgICAgICByZXN1bHQgKz0gYCR7dGhpcy5mb3JtYXQoY29sb3JlZCkuYm9sZChwcmVmaXgpfSR7dXNhZ2V9XFxuYDtcbiAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSBgXFxuYDtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IGAke3RoaXMuZm9ybWF0KGNvbG9yZWQpLmhlYWRlcihgT3B0aW9uc2ApfVxcbmA7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1heERlZmluaXRpb25MZW5ndGggPSBvcHRpb25zLnJlZHVjZSgobGVuZ3RoLCBvcHRpb24pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBNYXRoLm1heChsZW5ndGgsIG9wdGlvbi5kZWZpbml0aW9uLmxlbmd0aCk7XG4gICAgICAgICAgICAgICAgICAgIH0sIDApO1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gYFxcbmA7XG4gICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgeyBkZWZpbml0aW9uLCBkZXNjcmlwdGlvbiB9IG9mIG9wdGlvbnMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSBgICAke3RoaXMuZm9ybWF0KGNvbG9yZWQpLmJvbGQoZGVmaW5pdGlvbi5wYWRFbmQobWF4RGVmaW5pdGlvbkxlbmd0aCkpfSAgICAke2Zvcm1hdC5mb3JtYXRNYXJrZG93bmlzaChkZXNjcmlwdGlvbiwgeyBmb3JtYXQ6IHRoaXMuZm9ybWF0KGNvbG9yZWQpLCBwYXJhZ3JhcGhzOiBmYWxzZSB9KX1gO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChkZXRhaWxzICE9PSBgYCkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gYFxcbmA7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSBgJHt0aGlzLmZvcm1hdChjb2xvcmVkKS5oZWFkZXIoYERldGFpbHNgKX1cXG5gO1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gYFxcbmA7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSBmb3JtYXQuZm9ybWF0TWFya2Rvd25pc2goZGV0YWlscywgeyBmb3JtYXQ6IHRoaXMuZm9ybWF0KGNvbG9yZWQpLCBwYXJhZ3JhcGhzOiB0cnVlIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoZXhhbXBsZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gYFxcbmA7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSBgJHt0aGlzLmZvcm1hdChjb2xvcmVkKS5oZWFkZXIoYEV4YW1wbGVzYCl9XFxuYDtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBbZGVzY3JpcHRpb24sIGV4YW1wbGVdIG9mIGV4YW1wbGVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gYFxcbmA7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gZm9ybWF0LmZvcm1hdE1hcmtkb3duaXNoKGRlc2NyaXB0aW9uLCB7IGZvcm1hdDogdGhpcy5mb3JtYXQoY29sb3JlZCksIHBhcmFncmFwaHM6IGZhbHNlIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IGAke2V4YW1wbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSgvXi9tLCBgICAke3RoaXMuZm9ybWF0KGNvbG9yZWQpLmJvbGQocHJlZml4KX1gKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9cXCQwL2csIHRoaXMuYmluYXJ5TmFtZSl9XFxuYDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICBlcnJvcihlcnJvciwgX2EpIHtcbiAgICAgICAgdmFyIF9iO1xuICAgICAgICB2YXIgeyBjb2xvcmVkLCBjb21tYW5kID0gKF9iID0gZXJyb3JbZXJyb3JDb21tYW5kU3ltYm9sXSkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogbnVsbCB9ID0gX2EgPT09IHZvaWQgMCA/IHt9IDogX2E7XG4gICAgICAgIGlmICghKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpKVxuICAgICAgICAgICAgZXJyb3IgPSBuZXcgRXJyb3IoYEV4ZWN1dGlvbiBmYWlsZWQgd2l0aCBhIG5vbi1lcnJvciByZWplY3Rpb24gKHJlamVjdGVkIHZhbHVlOiAke0pTT04uc3RyaW5naWZ5KGVycm9yKX0pYCk7XG4gICAgICAgIGxldCByZXN1bHQgPSBgYDtcbiAgICAgICAgbGV0IG5hbWUgPSBlcnJvci5uYW1lLnJlcGxhY2UoLyhbYS16XSkoW0EtWl0pL2csIGAkMSAkMmApO1xuICAgICAgICBpZiAobmFtZSA9PT0gYEVycm9yYClcbiAgICAgICAgICAgIG5hbWUgPSBgSW50ZXJuYWwgRXJyb3JgO1xuICAgICAgICByZXN1bHQgKz0gYCR7dGhpcy5mb3JtYXQoY29sb3JlZCkuZXJyb3IobmFtZSl9OiAke2Vycm9yLm1lc3NhZ2V9XFxuYDtcbiAgICAgICAgY29uc3QgbWV0YSA9IGVycm9yLmNsaXBhbmlvbjtcbiAgICAgICAgaWYgKHR5cGVvZiBtZXRhICE9PSBgdW5kZWZpbmVkYCkge1xuICAgICAgICAgICAgaWYgKG1ldGEudHlwZSA9PT0gYHVzYWdlYCkge1xuICAgICAgICAgICAgICAgIHJlc3VsdCArPSBgXFxuYDtcbiAgICAgICAgICAgICAgICByZXN1bHQgKz0gdGhpcy51c2FnZShjb21tYW5kKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGlmIChlcnJvci5zdGFjaykge1xuICAgICAgICAgICAgICAgIHJlc3VsdCArPSBgJHtlcnJvci5zdGFjay5yZXBsYWNlKC9eLipcXG4vLCBgYCl9XFxuYDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICBmb3JtYXQoY29sb3JlZCkge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIHJldHVybiAoKF9hID0gY29sb3JlZCAhPT0gbnVsbCAmJiBjb2xvcmVkICE9PSB2b2lkIDAgPyBjb2xvcmVkIDogdGhpcy5lbmFibGVDb2xvcnMpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IENsaS5kZWZhdWx0Q29udGV4dC5jb2xvckRlcHRoID4gMSkgPyBmb3JtYXQucmljaEZvcm1hdCA6IGZvcm1hdC50ZXh0Rm9ybWF0O1xuICAgIH1cbiAgICBnZXRVc2FnZUJ5UmVnaXN0cmF0aW9uKGtsYXNzLCBvcHRzKSB7XG4gICAgICAgIGNvbnN0IHJlY29yZCA9IHRoaXMucmVnaXN0cmF0aW9ucy5nZXQoa2xhc3MpO1xuICAgICAgICBpZiAodHlwZW9mIHJlY29yZCA9PT0gYHVuZGVmaW5lZGApXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEFzc2VydGlvbiBmYWlsZWQ6IFVucmVnaXN0ZXJlZCBjb21tYW5kYCk7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFVzYWdlQnlJbmRleChyZWNvcmQuaW5kZXgsIG9wdHMpO1xuICAgIH1cbiAgICBnZXRVc2FnZUJ5SW5kZXgobiwgb3B0cykge1xuICAgICAgICByZXR1cm4gdGhpcy5idWlsZGVyLmdldEJ1aWxkZXJCeUluZGV4KG4pLnVzYWdlKG9wdHMpO1xuICAgIH1cbn1cbi8qKlxuICogVGhlIGRlZmF1bHQgY29udGV4dCBvZiB0aGUgQ0xJLlxuICpcbiAqIENvbnRhaW5zIHRoZSBzdGRpbyBvZiB0aGUgY3VycmVudCBgcHJvY2Vzc2AuXG4gKi9cbkNsaS5kZWZhdWx0Q29udGV4dCA9IHtcbiAgICBlbnY6IHByb2Nlc3MuZW52LFxuICAgIHN0ZGluOiBwcm9jZXNzLnN0ZGluLFxuICAgIHN0ZG91dDogcHJvY2Vzcy5zdGRvdXQsXG4gICAgc3RkZXJyOiBwcm9jZXNzLnN0ZGVycixcbiAgICBjb2xvckRlcHRoOiBwbGF0Zm9ybS5nZXREZWZhdWx0Q29sb3JEZXB0aCgpLFxufTtcbmZ1bmN0aW9uIG5vb3BDYXB0dXJlQWN0aXZhdG9yKGZuKSB7XG4gICAgcmV0dXJuIGZuKCk7XG59XG5cbmV4cG9ydHMuQ2xpID0gQ2xpO1xuZXhwb3J0cy5ydW4gPSBydW47XG5leHBvcnRzLnJ1bkV4aXQgPSBydW5FeGl0O1xuIiwgIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcblxudmFyIGFkdmFuY2VkX0NvbW1hbmQgPSByZXF1aXJlKCcuLi9Db21tYW5kLmpzJyk7XG5cbi8qKlxuICogQSBjb21tYW5kIHRoYXQgcHJpbnRzIHRoZSBjbGlwYW5pb24gZGVmaW5pdGlvbnMuXG4gKi9cbmNsYXNzIERlZmluaXRpb25zQ29tbWFuZCBleHRlbmRzIGFkdmFuY2VkX0NvbW1hbmQuQ29tbWFuZCB7XG4gICAgYXN5bmMgZXhlY3V0ZSgpIHtcbiAgICAgICAgdGhpcy5jb250ZXh0LnN0ZG91dC53cml0ZShgJHtKU09OLnN0cmluZ2lmeSh0aGlzLmNsaS5kZWZpbml0aW9ucygpLCBudWxsLCAyKX1cXG5gKTtcbiAgICB9XG59XG5EZWZpbml0aW9uc0NvbW1hbmQucGF0aHMgPSBbW2AtLWNsaXBhbmlvbj1kZWZpbml0aW9uc2BdXTtcblxuZXhwb3J0cy5EZWZpbml0aW9uc0NvbW1hbmQgPSBEZWZpbml0aW9uc0NvbW1hbmQ7XG4iLCAiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuXG52YXIgYWR2YW5jZWRfQ29tbWFuZCA9IHJlcXVpcmUoJy4uL0NvbW1hbmQuanMnKTtcblxuLyoqXG4gKiBBIGNvbW1hbmQgdGhhdCBwcmludHMgdGhlIHVzYWdlIG9mIGFsbCBjb21tYW5kcy5cbiAqXG4gKiBQYXRoczogYC1oYCwgYC0taGVscGBcbiAqL1xuY2xhc3MgSGVscENvbW1hbmQgZXh0ZW5kcyBhZHZhbmNlZF9Db21tYW5kLkNvbW1hbmQge1xuICAgIGFzeW5jIGV4ZWN1dGUoKSB7XG4gICAgICAgIHRoaXMuY29udGV4dC5zdGRvdXQud3JpdGUodGhpcy5jbGkudXNhZ2UoKSk7XG4gICAgfVxufVxuSGVscENvbW1hbmQucGF0aHMgPSBbW2AtaGBdLCBbYC0taGVscGBdXTtcblxuZXhwb3J0cy5IZWxwQ29tbWFuZCA9IEhlbHBDb21tYW5kO1xuIiwgIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcblxudmFyIGFkdmFuY2VkX0NvbW1hbmQgPSByZXF1aXJlKCcuLi9Db21tYW5kLmpzJyk7XG5cbi8qKlxuICogQSBjb21tYW5kIHRoYXQgcHJpbnRzIHRoZSB2ZXJzaW9uIG9mIHRoZSBiaW5hcnkgKGBjbGkuYmluYXJ5VmVyc2lvbmApLlxuICpcbiAqIFBhdGhzOiBgLXZgLCBgLS12ZXJzaW9uYFxuICovXG5jbGFzcyBWZXJzaW9uQ29tbWFuZCBleHRlbmRzIGFkdmFuY2VkX0NvbW1hbmQuQ29tbWFuZCB7XG4gICAgYXN5bmMgZXhlY3V0ZSgpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICB0aGlzLmNvbnRleHQuc3Rkb3V0LndyaXRlKGAkeyhfYSA9IHRoaXMuY2xpLmJpbmFyeVZlcnNpb24pICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IGA8dW5rbm93bj5gfVxcbmApO1xuICAgIH1cbn1cblZlcnNpb25Db21tYW5kLnBhdGhzID0gW1tgLXZgXSwgW2AtLXZlcnNpb25gXV07XG5cbmV4cG9ydHMuVmVyc2lvbkNvbW1hbmQgPSBWZXJzaW9uQ29tbWFuZDtcbiIsICIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG5cbnZhciBhZHZhbmNlZF9idWlsdGluc19kZWZpbml0aW9ucyA9IHJlcXVpcmUoJy4vZGVmaW5pdGlvbnMuanMnKTtcbnZhciBhZHZhbmNlZF9idWlsdGluc19oZWxwID0gcmVxdWlyZSgnLi9oZWxwLmpzJyk7XG52YXIgYWR2YW5jZWRfYnVpbHRpbnNfdmVyc2lvbiA9IHJlcXVpcmUoJy4vdmVyc2lvbi5qcycpO1xuXG5cblxuZXhwb3J0cy5EZWZpbml0aW9uc0NvbW1hbmQgPSBhZHZhbmNlZF9idWlsdGluc19kZWZpbml0aW9ucy5EZWZpbml0aW9uc0NvbW1hbmQ7XG5leHBvcnRzLkhlbHBDb21tYW5kID0gYWR2YW5jZWRfYnVpbHRpbnNfaGVscC5IZWxwQ29tbWFuZDtcbmV4cG9ydHMuVmVyc2lvbkNvbW1hbmQgPSBhZHZhbmNlZF9idWlsdGluc192ZXJzaW9uLlZlcnNpb25Db21tYW5kO1xuIiwgIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcblxudmFyIGFkdmFuY2VkX29wdGlvbnNfdXRpbHMgPSByZXF1aXJlKCcuL3V0aWxzLmpzJyk7XG5cbmZ1bmN0aW9uIEFycmF5KGRlc2NyaXB0b3IsIGluaXRpYWxWYWx1ZUJhc2UsIG9wdHNCYXNlKSB7XG4gICAgY29uc3QgW2luaXRpYWxWYWx1ZSwgb3B0c10gPSBhZHZhbmNlZF9vcHRpb25zX3V0aWxzLnJlcm91dGVBcmd1bWVudHMoaW5pdGlhbFZhbHVlQmFzZSwgb3B0c0Jhc2UgIT09IG51bGwgJiYgb3B0c0Jhc2UgIT09IHZvaWQgMCA/IG9wdHNCYXNlIDoge30pO1xuICAgIGNvbnN0IHsgYXJpdHkgPSAxIH0gPSBvcHRzO1xuICAgIGNvbnN0IG9wdE5hbWVzID0gZGVzY3JpcHRvci5zcGxpdChgLGApO1xuICAgIGNvbnN0IG5hbWVTZXQgPSBuZXcgU2V0KG9wdE5hbWVzKTtcbiAgICByZXR1cm4gYWR2YW5jZWRfb3B0aW9uc191dGlscy5tYWtlQ29tbWFuZE9wdGlvbih7XG4gICAgICAgIGRlZmluaXRpb24oYnVpbGRlcikge1xuICAgICAgICAgICAgYnVpbGRlci5hZGRPcHRpb24oe1xuICAgICAgICAgICAgICAgIG5hbWVzOiBvcHROYW1lcyxcbiAgICAgICAgICAgICAgICBhcml0eSxcbiAgICAgICAgICAgICAgICBoaWRkZW46IG9wdHMgPT09IG51bGwgfHwgb3B0cyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0cy5oaWRkZW4sXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IG9wdHMgPT09IG51bGwgfHwgb3B0cyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0cy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICByZXF1aXJlZDogb3B0cy5yZXF1aXJlZCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICB0cmFuc2Zvcm1lcihidWlsZGVyLCBrZXksIHN0YXRlKSB7XG4gICAgICAgICAgICBsZXQgdXNlZE5hbWU7XG4gICAgICAgICAgICBsZXQgY3VycmVudFZhbHVlID0gdHlwZW9mIGluaXRpYWxWYWx1ZSAhPT0gYHVuZGVmaW5lZGBcbiAgICAgICAgICAgICAgICA/IFsuLi5pbml0aWFsVmFsdWVdXG4gICAgICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHsgbmFtZSwgdmFsdWUgfSBvZiBzdGF0ZS5vcHRpb25zKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFuYW1lU2V0LmhhcyhuYW1lKSlcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgdXNlZE5hbWUgPSBuYW1lO1xuICAgICAgICAgICAgICAgIGN1cnJlbnRWYWx1ZSA9IGN1cnJlbnRWYWx1ZSAhPT0gbnVsbCAmJiBjdXJyZW50VmFsdWUgIT09IHZvaWQgMCA/IGN1cnJlbnRWYWx1ZSA6IFtdO1xuICAgICAgICAgICAgICAgIGN1cnJlbnRWYWx1ZS5wdXNoKHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0eXBlb2YgY3VycmVudFZhbHVlICE9PSBgdW5kZWZpbmVkYCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBhZHZhbmNlZF9vcHRpb25zX3V0aWxzLmFwcGx5VmFsaWRhdG9yKHVzZWROYW1lICE9PSBudWxsICYmIHVzZWROYW1lICE9PSB2b2lkIDAgPyB1c2VkTmFtZSA6IGtleSwgY3VycmVudFZhbHVlLCBvcHRzLnZhbGlkYXRvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gY3VycmVudFZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgIH0pO1xufVxuXG5leHBvcnRzLkFycmF5ID0gQXJyYXk7XG4iLCAiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuXG52YXIgYWR2YW5jZWRfb3B0aW9uc191dGlscyA9IHJlcXVpcmUoJy4vdXRpbHMuanMnKTtcblxuZnVuY3Rpb24gQm9vbGVhbihkZXNjcmlwdG9yLCBpbml0aWFsVmFsdWVCYXNlLCBvcHRzQmFzZSkge1xuICAgIGNvbnN0IFtpbml0aWFsVmFsdWUsIG9wdHNdID0gYWR2YW5jZWRfb3B0aW9uc191dGlscy5yZXJvdXRlQXJndW1lbnRzKGluaXRpYWxWYWx1ZUJhc2UsIG9wdHNCYXNlICE9PSBudWxsICYmIG9wdHNCYXNlICE9PSB2b2lkIDAgPyBvcHRzQmFzZSA6IHt9KTtcbiAgICBjb25zdCBvcHROYW1lcyA9IGRlc2NyaXB0b3Iuc3BsaXQoYCxgKTtcbiAgICBjb25zdCBuYW1lU2V0ID0gbmV3IFNldChvcHROYW1lcyk7XG4gICAgcmV0dXJuIGFkdmFuY2VkX29wdGlvbnNfdXRpbHMubWFrZUNvbW1hbmRPcHRpb24oe1xuICAgICAgICBkZWZpbml0aW9uKGJ1aWxkZXIpIHtcbiAgICAgICAgICAgIGJ1aWxkZXIuYWRkT3B0aW9uKHtcbiAgICAgICAgICAgICAgICBuYW1lczogb3B0TmFtZXMsXG4gICAgICAgICAgICAgICAgYWxsb3dCaW5kaW5nOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBhcml0eTogMCxcbiAgICAgICAgICAgICAgICBoaWRkZW46IG9wdHMuaGlkZGVuLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBvcHRzLmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgIHJlcXVpcmVkOiBvcHRzLnJlcXVpcmVkLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIHRyYW5zZm9ybWVyKGJ1aWxlciwga2V5LCBzdGF0ZSkge1xuICAgICAgICAgICAgbGV0IGN1cnJlbnRWYWx1ZSA9IGluaXRpYWxWYWx1ZTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgeyBuYW1lLCB2YWx1ZSB9IG9mIHN0YXRlLm9wdGlvbnMpIHtcbiAgICAgICAgICAgICAgICBpZiAoIW5hbWVTZXQuaGFzKG5hbWUpKVxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBjdXJyZW50VmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBjdXJyZW50VmFsdWU7XG4gICAgICAgIH0sXG4gICAgfSk7XG59XG5cbmV4cG9ydHMuQm9vbGVhbiA9IEJvb2xlYW47XG4iLCAiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuXG52YXIgYWR2YW5jZWRfb3B0aW9uc191dGlscyA9IHJlcXVpcmUoJy4vdXRpbHMuanMnKTtcblxuZnVuY3Rpb24gQ291bnRlcihkZXNjcmlwdG9yLCBpbml0aWFsVmFsdWVCYXNlLCBvcHRzQmFzZSkge1xuICAgIGNvbnN0IFtpbml0aWFsVmFsdWUsIG9wdHNdID0gYWR2YW5jZWRfb3B0aW9uc191dGlscy5yZXJvdXRlQXJndW1lbnRzKGluaXRpYWxWYWx1ZUJhc2UsIG9wdHNCYXNlICE9PSBudWxsICYmIG9wdHNCYXNlICE9PSB2b2lkIDAgPyBvcHRzQmFzZSA6IHt9KTtcbiAgICBjb25zdCBvcHROYW1lcyA9IGRlc2NyaXB0b3Iuc3BsaXQoYCxgKTtcbiAgICBjb25zdCBuYW1lU2V0ID0gbmV3IFNldChvcHROYW1lcyk7XG4gICAgcmV0dXJuIGFkdmFuY2VkX29wdGlvbnNfdXRpbHMubWFrZUNvbW1hbmRPcHRpb24oe1xuICAgICAgICBkZWZpbml0aW9uKGJ1aWxkZXIpIHtcbiAgICAgICAgICAgIGJ1aWxkZXIuYWRkT3B0aW9uKHtcbiAgICAgICAgICAgICAgICBuYW1lczogb3B0TmFtZXMsXG4gICAgICAgICAgICAgICAgYWxsb3dCaW5kaW5nOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBhcml0eTogMCxcbiAgICAgICAgICAgICAgICBoaWRkZW46IG9wdHMuaGlkZGVuLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBvcHRzLmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgIHJlcXVpcmVkOiBvcHRzLnJlcXVpcmVkLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIHRyYW5zZm9ybWVyKGJ1aWxkZXIsIGtleSwgc3RhdGUpIHtcbiAgICAgICAgICAgIGxldCBjdXJyZW50VmFsdWUgPSBpbml0aWFsVmFsdWU7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHsgbmFtZSwgdmFsdWUgfSBvZiBzdGF0ZS5vcHRpb25zKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFuYW1lU2V0LmhhcyhuYW1lKSlcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgY3VycmVudFZhbHVlICE9PSBudWxsICYmIGN1cnJlbnRWYWx1ZSAhPT0gdm9pZCAwID8gY3VycmVudFZhbHVlIDogKGN1cnJlbnRWYWx1ZSA9IDApO1xuICAgICAgICAgICAgICAgIC8vIE5lZ2F0ZWQgb3B0aW9ucyByZXNldCB0aGUgY291bnRlclxuICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudFZhbHVlID0gMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRWYWx1ZSArPSAxO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBjdXJyZW50VmFsdWU7XG4gICAgICAgIH0sXG4gICAgfSk7XG59XG5cbmV4cG9ydHMuQ291bnRlciA9IENvdW50ZXI7XG4iLCAiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuXG52YXIgYWR2YW5jZWRfb3B0aW9uc191dGlscyA9IHJlcXVpcmUoJy4vdXRpbHMuanMnKTtcblxuLyoqXG4gKiBVc2VkIHRvIGFubm90YXRlIHRoYXQgdGhlIGNvbW1hbmQgd2FudHMgdG8gcmV0cmlldmUgYWxsIHRyYWlsaW5nXG4gKiBhcmd1bWVudHMgdGhhdCBjYW5ub3QgYmUgdGllZCB0byBhIGRlY2xhcmVkIG9wdGlvbi5cbiAqXG4gKiBCZSBjYXJlZnVsOiB0aGlzIGZ1bmN0aW9uIGlzIG9yZGVyLWRlcGVuZGVudCEgTWFrZSBzdXJlIHRvIGRlZmluZSBpdFxuICogYWZ0ZXIgYW55IHBvc2l0aW9uYWwgYXJndW1lbnQgeW91IHdhbnQgdG8gZGVjbGFyZS5cbiAqXG4gKiBUaGlzIGZ1bmN0aW9uIGlzIG11dHVhbGx5IGV4Y2x1c2l2ZSB3aXRoIE9wdGlvbi5SZXN0LlxuICpcbiAqIEBleGFtcGxlXG4gKiB5YXJuIHJ1biBmb28gaGVsbG8gLS1mb289YmFyIHdvcmxkXG4gKiAgICAgXHUyNUJBIHByb3h5ID0gW1wiaGVsbG9cIiwgXCItLWZvbz1iYXJcIiwgXCJ3b3JsZFwiXVxuICovXG5mdW5jdGlvbiBQcm94eShvcHRzID0ge30pIHtcbiAgICByZXR1cm4gYWR2YW5jZWRfb3B0aW9uc191dGlscy5tYWtlQ29tbWFuZE9wdGlvbih7XG4gICAgICAgIGRlZmluaXRpb24oYnVpbGRlciwga2V5KSB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICBidWlsZGVyLmFkZFByb3h5KHtcbiAgICAgICAgICAgICAgICBuYW1lOiAoX2EgPSBvcHRzLm5hbWUpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IGtleSxcbiAgICAgICAgICAgICAgICByZXF1aXJlZDogb3B0cy5yZXF1aXJlZCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICB0cmFuc2Zvcm1lcihidWlsZGVyLCBrZXksIHN0YXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RhdGUucG9zaXRpb25hbHMubWFwKCh7IHZhbHVlIH0pID0+IHZhbHVlKTtcbiAgICAgICAgfSxcbiAgICB9KTtcbn1cblxuZXhwb3J0cy5Qcm94eSA9IFByb3h5O1xuIiwgIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcblxudmFyIGNvcmUgPSByZXF1aXJlKCcuLi8uLi9jb3JlLmpzJyk7XG52YXIgYWR2YW5jZWRfb3B0aW9uc191dGlscyA9IHJlcXVpcmUoJy4vdXRpbHMuanMnKTtcblxuLyoqXG4gKiBVc2VkIHRvIGFubm90YXRlIHRoYXQgdGhlIGNvbW1hbmQgc3VwcG9ydHMgYW55IG51bWJlciBvZiBwb3NpdGlvbmFsXG4gKiBhcmd1bWVudHMuXG4gKlxuICogQmUgY2FyZWZ1bDogdGhpcyBmdW5jdGlvbiBpcyBvcmRlci1kZXBlbmRlbnQhIE1ha2Ugc3VyZSB0byBkZWZpbmUgaXRcbiAqIGFmdGVyIGFueSBwb3NpdGlvbmFsIGFyZ3VtZW50IHlvdSB3YW50IHRvIGRlY2xhcmUuXG4gKlxuICogVGhpcyBmdW5jdGlvbiBpcyBtdXR1YWxseSBleGNsdXNpdmUgd2l0aCBPcHRpb24uUHJveHkuXG4gKlxuICogQGV4YW1wbGVcbiAqIHlhcm4gYWRkIGhlbGxvIHdvcmxkXG4gKiAgICAgXHUyNUJBIHJlc3QgPSBbXCJoZWxsb1wiLCBcIndvcmxkXCJdXG4gKi9cbmZ1bmN0aW9uIFJlc3Qob3B0cyA9IHt9KSB7XG4gICAgcmV0dXJuIGFkdmFuY2VkX29wdGlvbnNfdXRpbHMubWFrZUNvbW1hbmRPcHRpb24oe1xuICAgICAgICBkZWZpbml0aW9uKGJ1aWxkZXIsIGtleSkge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgYnVpbGRlci5hZGRSZXN0KHtcbiAgICAgICAgICAgICAgICBuYW1lOiAoX2EgPSBvcHRzLm5hbWUpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IGtleSxcbiAgICAgICAgICAgICAgICByZXF1aXJlZDogb3B0cy5yZXF1aXJlZCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICB0cmFuc2Zvcm1lcihidWlsZGVyLCBrZXksIHN0YXRlKSB7XG4gICAgICAgICAgICAvLyBUaGUgYnVpbGRlcidzIGFyaXR5LmV4dHJhIHdpbGwgYWx3YXlzIGJlIE5vTGltaXRzLFxuICAgICAgICAgICAgLy8gYmVjYXVzZSBpdCBpcyBzZXQgd2hlbiB3ZSBjYWxsIHJlZ2lzdGVyRGVmaW5pdGlvblxuICAgICAgICAgICAgY29uc3QgaXNSZXN0UG9zaXRpb25hbCA9IChpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBvc2l0aW9uYWwgPSBzdGF0ZS5wb3NpdGlvbmFsc1tpbmRleF07XG4gICAgICAgICAgICAgICAgLy8gQSBOb0xpbWl0cyBleHRyYSAoaS5lLiBhbiBvcHRpb25hbCByZXN0IGFyZ3VtZW50KVxuICAgICAgICAgICAgICAgIGlmIChwb3NpdGlvbmFsLmV4dHJhID09PSBjb3JlLk5vTGltaXRzKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICAvLyBBIGxlYWRpbmcgcG9zaXRpb25hbCAoaS5lLiBhIHJlcXVpcmVkIHJlc3QgYXJndW1lbnQpXG4gICAgICAgICAgICAgICAgaWYgKHBvc2l0aW9uYWwuZXh0cmEgPT09IGZhbHNlICYmIGluZGV4IDwgYnVpbGRlci5hcml0eS5sZWFkaW5nLmxlbmd0aClcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGxldCBjb3VudCA9IDA7XG4gICAgICAgICAgICB3aGlsZSAoY291bnQgPCBzdGF0ZS5wb3NpdGlvbmFscy5sZW5ndGggJiYgaXNSZXN0UG9zaXRpb25hbChjb3VudCkpXG4gICAgICAgICAgICAgICAgY291bnQgKz0gMTtcbiAgICAgICAgICAgIHJldHVybiBzdGF0ZS5wb3NpdGlvbmFscy5zcGxpY2UoMCwgY291bnQpLm1hcCgoeyB2YWx1ZSB9KSA9PiB2YWx1ZSk7XG4gICAgICAgIH0sXG4gICAgfSk7XG59XG5cbmV4cG9ydHMuUmVzdCA9IFJlc3Q7XG4iLCAiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuXG52YXIgY29yZSA9IHJlcXVpcmUoJy4uLy4uL2NvcmUuanMnKTtcbnZhciBhZHZhbmNlZF9vcHRpb25zX3V0aWxzID0gcmVxdWlyZSgnLi91dGlscy5qcycpO1xuXG5mdW5jdGlvbiBTdHJpbmdPcHRpb24oZGVzY3JpcHRvciwgaW5pdGlhbFZhbHVlQmFzZSwgb3B0c0Jhc2UpIHtcbiAgICBjb25zdCBbaW5pdGlhbFZhbHVlLCBvcHRzXSA9IGFkdmFuY2VkX29wdGlvbnNfdXRpbHMucmVyb3V0ZUFyZ3VtZW50cyhpbml0aWFsVmFsdWVCYXNlLCBvcHRzQmFzZSAhPT0gbnVsbCAmJiBvcHRzQmFzZSAhPT0gdm9pZCAwID8gb3B0c0Jhc2UgOiB7fSk7XG4gICAgY29uc3QgeyBhcml0eSA9IDEgfSA9IG9wdHM7XG4gICAgY29uc3Qgb3B0TmFtZXMgPSBkZXNjcmlwdG9yLnNwbGl0KGAsYCk7XG4gICAgY29uc3QgbmFtZVNldCA9IG5ldyBTZXQob3B0TmFtZXMpO1xuICAgIHJldHVybiBhZHZhbmNlZF9vcHRpb25zX3V0aWxzLm1ha2VDb21tYW5kT3B0aW9uKHtcbiAgICAgICAgZGVmaW5pdGlvbihidWlsZGVyKSB7XG4gICAgICAgICAgICBidWlsZGVyLmFkZE9wdGlvbih7XG4gICAgICAgICAgICAgICAgbmFtZXM6IG9wdE5hbWVzLFxuICAgICAgICAgICAgICAgIGFyaXR5OiBvcHRzLnRvbGVyYXRlQm9vbGVhbiA/IDAgOiBhcml0eSxcbiAgICAgICAgICAgICAgICBoaWRkZW46IG9wdHMuaGlkZGVuLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBvcHRzLmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgIHJlcXVpcmVkOiBvcHRzLnJlcXVpcmVkLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIHRyYW5zZm9ybWVyKGJ1aWxkZXIsIGtleSwgc3RhdGUsIGNvbnRleHQpIHtcbiAgICAgICAgICAgIGxldCB1c2VkTmFtZTtcbiAgICAgICAgICAgIGxldCBjdXJyZW50VmFsdWUgPSBpbml0aWFsVmFsdWU7XG4gICAgICAgICAgICBpZiAodHlwZW9mIG9wdHMuZW52ICE9PSBgdW5kZWZpbmVkYCAmJiBjb250ZXh0LmVudltvcHRzLmVudl0pIHtcbiAgICAgICAgICAgICAgICB1c2VkTmFtZSA9IG9wdHMuZW52O1xuICAgICAgICAgICAgICAgIGN1cnJlbnRWYWx1ZSA9IGNvbnRleHQuZW52W29wdHMuZW52XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZvciAoY29uc3QgeyBuYW1lLCB2YWx1ZSB9IG9mIHN0YXRlLm9wdGlvbnMpIHtcbiAgICAgICAgICAgICAgICBpZiAoIW5hbWVTZXQuaGFzKG5hbWUpKVxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB1c2VkTmFtZSA9IG5hbWU7XG4gICAgICAgICAgICAgICAgY3VycmVudFZhbHVlID0gdmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodHlwZW9mIGN1cnJlbnRWYWx1ZSA9PT0gYHN0cmluZ2ApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYWR2YW5jZWRfb3B0aW9uc191dGlscy5hcHBseVZhbGlkYXRvcih1c2VkTmFtZSAhPT0gbnVsbCAmJiB1c2VkTmFtZSAhPT0gdm9pZCAwID8gdXNlZE5hbWUgOiBrZXksIGN1cnJlbnRWYWx1ZSwgb3B0cy52YWxpZGF0b3IpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnRWYWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICB9KTtcbn1cbmZ1bmN0aW9uIFN0cmluZ1Bvc2l0aW9uYWwob3B0cyA9IHt9KSB7XG4gICAgY29uc3QgeyByZXF1aXJlZCA9IHRydWUgfSA9IG9wdHM7XG4gICAgcmV0dXJuIGFkdmFuY2VkX29wdGlvbnNfdXRpbHMubWFrZUNvbW1hbmRPcHRpb24oe1xuICAgICAgICBkZWZpbml0aW9uKGJ1aWxkZXIsIGtleSkge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgYnVpbGRlci5hZGRQb3NpdGlvbmFsKHtcbiAgICAgICAgICAgICAgICBuYW1lOiAoX2EgPSBvcHRzLm5hbWUpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IGtleSxcbiAgICAgICAgICAgICAgICByZXF1aXJlZDogb3B0cy5yZXF1aXJlZCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICB0cmFuc2Zvcm1lcihidWlsZGVyLCBrZXksIHN0YXRlKSB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHN0YXRlLnBvc2l0aW9uYWxzLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgICAgICAgLy8gV2Ugc2tpcCBOb0xpbWl0cyBleHRyYXMuIFdlIG9ubHkgY2FyZSBhYm91dFxuICAgICAgICAgICAgICAgIC8vIHJlcXVpcmVkIGFuZCBvcHRpb25hbCBmaW5pdGUgcG9zaXRpb25hbHMuXG4gICAgICAgICAgICAgICAgaWYgKHN0YXRlLnBvc2l0aW9uYWxzW2ldLmV4dHJhID09PSBjb3JlLk5vTGltaXRzKVxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAvLyBXZSBza2lwIG9wdGlvbmFsIHBvc2l0aW9uYWxzIHdoZW4gd2Ugb25seVxuICAgICAgICAgICAgICAgIC8vIGNhcmUgYWJvdXQgcmVxdWlyZWQgcG9zaXRpb25hbHMuXG4gICAgICAgICAgICAgICAgaWYgKHJlcXVpcmVkICYmIHN0YXRlLnBvc2l0aW9uYWxzW2ldLmV4dHJhID09PSB0cnVlKVxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAvLyBXZSBza2lwIHJlcXVpcmVkIHBvc2l0aW9uYWxzIHdoZW4gd2Ugb25seVxuICAgICAgICAgICAgICAgIC8vIGNhcmUgYWJvdXQgb3B0aW9uYWwgcG9zaXRpb25hbHMuXG4gICAgICAgICAgICAgICAgaWYgKCFyZXF1aXJlZCAmJiBzdGF0ZS5wb3NpdGlvbmFsc1tpXS5leHRyYSA9PT0gZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIC8vIFdlIHJlbW92ZSB0aGUgcG9zaXRpb25hbCBmcm9tIHRoZSBsaXN0XG4gICAgICAgICAgICAgICAgY29uc3QgW3Bvc2l0aW9uYWxdID0gc3RhdGUucG9zaXRpb25hbHMuc3BsaWNlKGksIDEpO1xuICAgICAgICAgICAgICAgIHJldHVybiBhZHZhbmNlZF9vcHRpb25zX3V0aWxzLmFwcGx5VmFsaWRhdG9yKChfYSA9IG9wdHMubmFtZSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDoga2V5LCBwb3NpdGlvbmFsLnZhbHVlLCBvcHRzLnZhbGlkYXRvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9LFxuICAgIH0pO1xufVxuLy8gVGhpcyBmdW5jdGlvbiBpcyBiYWRseSB0eXBlZCwgYnV0IGl0IGRvZXNuJ3QgbWF0dGVyIGJlY2F1c2UgdGhlIG92ZXJsb2FkcyBwcm92aWRlIHRoZSB0cnVlIHB1YmxpYyB0eXBpbmdzXG5mdW5jdGlvbiBTdHJpbmcoZGVzY3JpcHRvciwgLi4uYXJncykge1xuICAgIGlmICh0eXBlb2YgZGVzY3JpcHRvciA9PT0gYHN0cmluZ2ApIHtcbiAgICAgICAgcmV0dXJuIFN0cmluZ09wdGlvbihkZXNjcmlwdG9yLCAuLi5hcmdzKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHJldHVybiBTdHJpbmdQb3NpdGlvbmFsKGRlc2NyaXB0b3IpO1xuICAgIH1cbn1cblxuZXhwb3J0cy5TdHJpbmcgPSBTdHJpbmc7XG4iLCAiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuXG52YXIgYWR2YW5jZWRfb3B0aW9uc191dGlscyA9IHJlcXVpcmUoJy4vdXRpbHMuanMnKTtcbnZhciBhZHZhbmNlZF9vcHRpb25zX0FycmF5ID0gcmVxdWlyZSgnLi9BcnJheS5qcycpO1xudmFyIGFkdmFuY2VkX29wdGlvbnNfQm9vbGVhbiA9IHJlcXVpcmUoJy4vQm9vbGVhbi5qcycpO1xudmFyIGFkdmFuY2VkX29wdGlvbnNfQ291bnRlciA9IHJlcXVpcmUoJy4vQ291bnRlci5qcycpO1xudmFyIGFkdmFuY2VkX29wdGlvbnNfUHJveHkgPSByZXF1aXJlKCcuL1Byb3h5LmpzJyk7XG52YXIgYWR2YW5jZWRfb3B0aW9uc19SZXN0ID0gcmVxdWlyZSgnLi9SZXN0LmpzJyk7XG52YXIgYWR2YW5jZWRfb3B0aW9uc19TdHJpbmcgPSByZXF1aXJlKCcuL1N0cmluZy5qcycpO1xuXG5cblxuZXhwb3J0cy5hcHBseVZhbGlkYXRvciA9IGFkdmFuY2VkX29wdGlvbnNfdXRpbHMuYXBwbHlWYWxpZGF0b3I7XG5leHBvcnRzLmNsZWFuVmFsaWRhdGlvbkVycm9yID0gYWR2YW5jZWRfb3B0aW9uc191dGlscy5jbGVhblZhbGlkYXRpb25FcnJvcjtcbmV4cG9ydHMuZm9ybWF0RXJyb3IgPSBhZHZhbmNlZF9vcHRpb25zX3V0aWxzLmZvcm1hdEVycm9yO1xuZXhwb3J0cy5pc09wdGlvblN5bWJvbCA9IGFkdmFuY2VkX29wdGlvbnNfdXRpbHMuaXNPcHRpb25TeW1ib2w7XG5leHBvcnRzLm1ha2VDb21tYW5kT3B0aW9uID0gYWR2YW5jZWRfb3B0aW9uc191dGlscy5tYWtlQ29tbWFuZE9wdGlvbjtcbmV4cG9ydHMucmVyb3V0ZUFyZ3VtZW50cyA9IGFkdmFuY2VkX29wdGlvbnNfdXRpbHMucmVyb3V0ZUFyZ3VtZW50cztcbmV4cG9ydHMuQXJyYXkgPSBhZHZhbmNlZF9vcHRpb25zX0FycmF5LkFycmF5O1xuZXhwb3J0cy5Cb29sZWFuID0gYWR2YW5jZWRfb3B0aW9uc19Cb29sZWFuLkJvb2xlYW47XG5leHBvcnRzLkNvdW50ZXIgPSBhZHZhbmNlZF9vcHRpb25zX0NvdW50ZXIuQ291bnRlcjtcbmV4cG9ydHMuUHJveHkgPSBhZHZhbmNlZF9vcHRpb25zX1Byb3h5LlByb3h5O1xuZXhwb3J0cy5SZXN0ID0gYWR2YW5jZWRfb3B0aW9uc19SZXN0LlJlc3Q7XG5leHBvcnRzLlN0cmluZyA9IGFkdmFuY2VkX29wdGlvbnNfU3RyaW5nLlN0cmluZztcbiIsICIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG5cbnZhciBlcnJvcnMgPSByZXF1aXJlKCcuLi9lcnJvcnMuanMnKTtcbnZhciBmb3JtYXQgPSByZXF1aXJlKCcuLi9mb3JtYXQuanMnKTtcbnZhciBhZHZhbmNlZF9Db21tYW5kID0gcmVxdWlyZSgnLi9Db21tYW5kLmpzJyk7XG52YXIgYWR2YW5jZWRfQ2xpID0gcmVxdWlyZSgnLi9DbGkuanMnKTtcbnZhciBhZHZhbmNlZF9idWlsdGluc19pbmRleCA9IHJlcXVpcmUoJy4vYnVpbHRpbnMvaW5kZXguanMnKTtcbnZhciBhZHZhbmNlZF9vcHRpb25zX2luZGV4ID0gcmVxdWlyZSgnLi9vcHRpb25zL2luZGV4LmpzJyk7XG5cblxuXG5leHBvcnRzLlVzYWdlRXJyb3IgPSBlcnJvcnMuVXNhZ2VFcnJvcjtcbmV4cG9ydHMuZm9ybWF0TWFya2Rvd25pc2ggPSBmb3JtYXQuZm9ybWF0TWFya2Rvd25pc2g7XG5leHBvcnRzLkNvbW1hbmQgPSBhZHZhbmNlZF9Db21tYW5kLkNvbW1hbmQ7XG5leHBvcnRzLkNsaSA9IGFkdmFuY2VkX0NsaS5DbGk7XG5leHBvcnRzLnJ1biA9IGFkdmFuY2VkX0NsaS5ydW47XG5leHBvcnRzLnJ1bkV4aXQgPSBhZHZhbmNlZF9DbGkucnVuRXhpdDtcbmV4cG9ydHMuQnVpbHRpbnMgPSBhZHZhbmNlZF9idWlsdGluc19pbmRleDtcbmV4cG9ydHMuT3B0aW9uID0gYWR2YW5jZWRfb3B0aW9uc19pbmRleDtcbiIsICIndXNlIHN0cmljdCc7XG5cbmNvbnN0IHBUcnkgPSAoZm4sIC4uLmFyZ3VtZW50c18pID0+IG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuXHRyZXNvbHZlKGZuKC4uLmFyZ3VtZW50c18pKTtcbn0pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHBUcnk7XG4vLyBUT0RPOiByZW1vdmUgdGhpcyBpbiB0aGUgbmV4dCBtYWpvciB2ZXJzaW9uXG5tb2R1bGUuZXhwb3J0cy5kZWZhdWx0ID0gcFRyeTtcbiIsICIndXNlIHN0cmljdCc7XG5jb25zdCBwVHJ5ID0gcmVxdWlyZSgncC10cnknKTtcblxuY29uc3QgcExpbWl0ID0gY29uY3VycmVuY3kgPT4ge1xuXHRpZiAoISgoTnVtYmVyLmlzSW50ZWdlcihjb25jdXJyZW5jeSkgfHwgY29uY3VycmVuY3kgPT09IEluZmluaXR5KSAmJiBjb25jdXJyZW5jeSA+IDApKSB7XG5cdFx0cmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBUeXBlRXJyb3IoJ0V4cGVjdGVkIGBjb25jdXJyZW5jeWAgdG8gYmUgYSBudW1iZXIgZnJvbSAxIGFuZCB1cCcpKTtcblx0fVxuXG5cdGNvbnN0IHF1ZXVlID0gW107XG5cdGxldCBhY3RpdmVDb3VudCA9IDA7XG5cblx0Y29uc3QgbmV4dCA9ICgpID0+IHtcblx0XHRhY3RpdmVDb3VudC0tO1xuXG5cdFx0aWYgKHF1ZXVlLmxlbmd0aCA+IDApIHtcblx0XHRcdHF1ZXVlLnNoaWZ0KCkoKTtcblx0XHR9XG5cdH07XG5cblx0Y29uc3QgcnVuID0gKGZuLCByZXNvbHZlLCAuLi5hcmdzKSA9PiB7XG5cdFx0YWN0aXZlQ291bnQrKztcblxuXHRcdGNvbnN0IHJlc3VsdCA9IHBUcnkoZm4sIC4uLmFyZ3MpO1xuXG5cdFx0cmVzb2x2ZShyZXN1bHQpO1xuXG5cdFx0cmVzdWx0LnRoZW4obmV4dCwgbmV4dCk7XG5cdH07XG5cblx0Y29uc3QgZW5xdWV1ZSA9IChmbiwgcmVzb2x2ZSwgLi4uYXJncykgPT4ge1xuXHRcdGlmIChhY3RpdmVDb3VudCA8IGNvbmN1cnJlbmN5KSB7XG5cdFx0XHRydW4oZm4sIHJlc29sdmUsIC4uLmFyZ3MpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRxdWV1ZS5wdXNoKHJ1bi5iaW5kKG51bGwsIGZuLCByZXNvbHZlLCAuLi5hcmdzKSk7XG5cdFx0fVxuXHR9O1xuXG5cdGNvbnN0IGdlbmVyYXRvciA9IChmbiwgLi4uYXJncykgPT4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiBlbnF1ZXVlKGZuLCByZXNvbHZlLCAuLi5hcmdzKSk7XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGdlbmVyYXRvciwge1xuXHRcdGFjdGl2ZUNvdW50OiB7XG5cdFx0XHRnZXQ6ICgpID0+IGFjdGl2ZUNvdW50XG5cdFx0fSxcblx0XHRwZW5kaW5nQ291bnQ6IHtcblx0XHRcdGdldDogKCkgPT4gcXVldWUubGVuZ3RoXG5cdFx0fSxcblx0XHRjbGVhclF1ZXVlOiB7XG5cdFx0XHR2YWx1ZTogKCkgPT4ge1xuXHRcdFx0XHRxdWV1ZS5sZW5ndGggPSAwO1xuXHRcdFx0fVxuXHRcdH1cblx0fSk7XG5cblx0cmV0dXJuIGdlbmVyYXRvcjtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gcExpbWl0O1xubW9kdWxlLmV4cG9ydHMuZGVmYXVsdCA9IHBMaW1pdDtcbiIsICJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMucGFyc2VNZXNzYWdlTmFtZSA9IGV4cG9ydHMuc3RyaW5naWZ5TWVzc2FnZU5hbWUgPSBleHBvcnRzLk1lc3NhZ2VOYW1lID0gdm9pZCAwO1xuLy8gVGhlIHZhbHVlcyBpbiB0aGlzIGVudW0gc2hvdWxkIG5ldmVyIGJlIHJlYXNzaWduZWQsIGV2ZW4gaWYgc29tZSBhcmUgcmVtb3ZlZFxuLy8gb3ZlciB0aW1lIChpdCB3b3VsZCBtZXNzIHVwIHRoZSBzZWFyY2ggcmVzdWx0cywgd2hpY2ggYXJlIHRoZSB3aG9sZSBwb2ludCBvZlxuLy8gaGF2aW5nIHRoaXMgc3lzdGVtKVxudmFyIE1lc3NhZ2VOYW1lO1xuKGZ1bmN0aW9uIChNZXNzYWdlTmFtZSkge1xuICAgIE1lc3NhZ2VOYW1lW01lc3NhZ2VOYW1lW1wiVU5OQU1FRFwiXSA9IDBdID0gXCJVTk5BTUVEXCI7XG4gICAgTWVzc2FnZU5hbWVbTWVzc2FnZU5hbWVbXCJFWENFUFRJT05cIl0gPSAxXSA9IFwiRVhDRVBUSU9OXCI7XG4gICAgTWVzc2FnZU5hbWVbTWVzc2FnZU5hbWVbXCJNSVNTSU5HX1BFRVJfREVQRU5ERU5DWVwiXSA9IDJdID0gXCJNSVNTSU5HX1BFRVJfREVQRU5ERU5DWVwiO1xuICAgIE1lc3NhZ2VOYW1lW01lc3NhZ2VOYW1lW1wiQ1lDTElDX0RFUEVOREVOQ0lFU1wiXSA9IDNdID0gXCJDWUNMSUNfREVQRU5ERU5DSUVTXCI7XG4gICAgTWVzc2FnZU5hbWVbTWVzc2FnZU5hbWVbXCJESVNBQkxFRF9CVUlMRF9TQ1JJUFRTXCJdID0gNF0gPSBcIkRJU0FCTEVEX0JVSUxEX1NDUklQVFNcIjtcbiAgICBNZXNzYWdlTmFtZVtNZXNzYWdlTmFtZVtcIkJVSUxEX0RJU0FCTEVEXCJdID0gNV0gPSBcIkJVSUxEX0RJU0FCTEVEXCI7XG4gICAgTWVzc2FnZU5hbWVbTWVzc2FnZU5hbWVbXCJTT0ZUX0xJTktfQlVJTERcIl0gPSA2XSA9IFwiU09GVF9MSU5LX0JVSUxEXCI7XG4gICAgTWVzc2FnZU5hbWVbTWVzc2FnZU5hbWVbXCJNVVNUX0JVSUxEXCJdID0gN10gPSBcIk1VU1RfQlVJTERcIjtcbiAgICBNZXNzYWdlTmFtZVtNZXNzYWdlTmFtZVtcIk1VU1RfUkVCVUlMRFwiXSA9IDhdID0gXCJNVVNUX1JFQlVJTERcIjtcbiAgICBNZXNzYWdlTmFtZVtNZXNzYWdlTmFtZVtcIkJVSUxEX0ZBSUxFRFwiXSA9IDldID0gXCJCVUlMRF9GQUlMRURcIjtcbiAgICBNZXNzYWdlTmFtZVtNZXNzYWdlTmFtZVtcIlJFU09MVkVSX05PVF9GT1VORFwiXSA9IDEwXSA9IFwiUkVTT0xWRVJfTk9UX0ZPVU5EXCI7XG4gICAgTWVzc2FnZU5hbWVbTWVzc2FnZU5hbWVbXCJGRVRDSEVSX05PVF9GT1VORFwiXSA9IDExXSA9IFwiRkVUQ0hFUl9OT1RfRk9VTkRcIjtcbiAgICBNZXNzYWdlTmFtZVtNZXNzYWdlTmFtZVtcIkxJTktFUl9OT1RfRk9VTkRcIl0gPSAxMl0gPSBcIkxJTktFUl9OT1RfRk9VTkRcIjtcbiAgICBNZXNzYWdlTmFtZVtNZXNzYWdlTmFtZVtcIkZFVENIX05PVF9DQUNIRURcIl0gPSAxM10gPSBcIkZFVENIX05PVF9DQUNIRURcIjtcbiAgICBNZXNzYWdlTmFtZVtNZXNzYWdlTmFtZVtcIllBUk5fSU1QT1JUX0ZBSUxFRFwiXSA9IDE0XSA9IFwiWUFSTl9JTVBPUlRfRkFJTEVEXCI7XG4gICAgTWVzc2FnZU5hbWVbTWVzc2FnZU5hbWVbXCJSRU1PVEVfSU5WQUxJRFwiXSA9IDE1XSA9IFwiUkVNT1RFX0lOVkFMSURcIjtcbiAgICBNZXNzYWdlTmFtZVtNZXNzYWdlTmFtZVtcIlJFTU9URV9OT1RfRk9VTkRcIl0gPSAxNl0gPSBcIlJFTU9URV9OT1RfRk9VTkRcIjtcbiAgICBNZXNzYWdlTmFtZVtNZXNzYWdlTmFtZVtcIlJFU09MVVRJT05fUEFDS1wiXSA9IDE3XSA9IFwiUkVTT0xVVElPTl9QQUNLXCI7XG4gICAgTWVzc2FnZU5hbWVbTWVzc2FnZU5hbWVbXCJDQUNIRV9DSEVDS1NVTV9NSVNNQVRDSFwiXSA9IDE4XSA9IFwiQ0FDSEVfQ0hFQ0tTVU1fTUlTTUFUQ0hcIjtcbiAgICBNZXNzYWdlTmFtZVtNZXNzYWdlTmFtZVtcIlVOVVNFRF9DQUNIRV9FTlRSWVwiXSA9IDE5XSA9IFwiVU5VU0VEX0NBQ0hFX0VOVFJZXCI7XG4gICAgTWVzc2FnZU5hbWVbTWVzc2FnZU5hbWVbXCJNSVNTSU5HX0xPQ0tGSUxFX0VOVFJZXCJdID0gMjBdID0gXCJNSVNTSU5HX0xPQ0tGSUxFX0VOVFJZXCI7XG4gICAgTWVzc2FnZU5hbWVbTWVzc2FnZU5hbWVbXCJXT1JLU1BBQ0VfTk9UX0ZPVU5EXCJdID0gMjFdID0gXCJXT1JLU1BBQ0VfTk9UX0ZPVU5EXCI7XG4gICAgTWVzc2FnZU5hbWVbTWVzc2FnZU5hbWVbXCJUT09fTUFOWV9NQVRDSElOR19XT1JLU1BBQ0VTXCJdID0gMjJdID0gXCJUT09fTUFOWV9NQVRDSElOR19XT1JLU1BBQ0VTXCI7XG4gICAgTWVzc2FnZU5hbWVbTWVzc2FnZU5hbWVbXCJDT05TVFJBSU5UU19NSVNTSU5HX0RFUEVOREVOQ1lcIl0gPSAyM10gPSBcIkNPTlNUUkFJTlRTX01JU1NJTkdfREVQRU5ERU5DWVwiO1xuICAgIE1lc3NhZ2VOYW1lW01lc3NhZ2VOYW1lW1wiQ09OU1RSQUlOVFNfSU5DT01QQVRJQkxFX0RFUEVOREVOQ1lcIl0gPSAyNF0gPSBcIkNPTlNUUkFJTlRTX0lOQ09NUEFUSUJMRV9ERVBFTkRFTkNZXCI7XG4gICAgTWVzc2FnZU5hbWVbTWVzc2FnZU5hbWVbXCJDT05TVFJBSU5UU19FWFRSQU5FT1VTX0RFUEVOREVOQ1lcIl0gPSAyNV0gPSBcIkNPTlNUUkFJTlRTX0VYVFJBTkVPVVNfREVQRU5ERU5DWVwiO1xuICAgIE1lc3NhZ2VOYW1lW01lc3NhZ2VOYW1lW1wiQ09OU1RSQUlOVFNfSU5WQUxJRF9ERVBFTkRFTkNZXCJdID0gMjZdID0gXCJDT05TVFJBSU5UU19JTlZBTElEX0RFUEVOREVOQ1lcIjtcbiAgICBNZXNzYWdlTmFtZVtNZXNzYWdlTmFtZVtcIkNBTlRfU1VHR0VTVF9SRVNPTFVUSU9OU1wiXSA9IDI3XSA9IFwiQ0FOVF9TVUdHRVNUX1JFU09MVVRJT05TXCI7XG4gICAgTWVzc2FnZU5hbWVbTWVzc2FnZU5hbWVbXCJGUk9aRU5fTE9DS0ZJTEVfRVhDRVBUSU9OXCJdID0gMjhdID0gXCJGUk9aRU5fTE9DS0ZJTEVfRVhDRVBUSU9OXCI7XG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgVmlydHVhbHMgYXJlbid0IGltcGxlbWVudGVkIHVzaW5nIHN5bWxpbmtzIGFueW1vcmUuIENvbnRleHQ6IGh0dHBzOi8vZ2l0aHViLmNvbS95YXJucGtnL2JlcnJ5L3B1bGwvNDMjZGlzY3Vzc2lvbl9yMjY5NTc4MDMxXG4gICAgICovXG4gICAgTWVzc2FnZU5hbWVbTWVzc2FnZU5hbWVbXCJDUk9TU19EUklWRV9WSVJUVUFMX0xPQ0FMXCJdID0gMjldID0gXCJDUk9TU19EUklWRV9WSVJUVUFMX0xPQ0FMXCI7XG4gICAgTWVzc2FnZU5hbWVbTWVzc2FnZU5hbWVbXCJGRVRDSF9GQUlMRURcIl0gPSAzMF0gPSBcIkZFVENIX0ZBSUxFRFwiO1xuICAgIE1lc3NhZ2VOYW1lW01lc3NhZ2VOYW1lW1wiREFOR0VST1VTX05PREVfTU9EVUxFU1wiXSA9IDMxXSA9IFwiREFOR0VST1VTX05PREVfTU9EVUxFU1wiO1xuICAgIE1lc3NhZ2VOYW1lW01lc3NhZ2VOYW1lW1wiTk9ERV9HWVBfSU5KRUNURURcIl0gPSAzMl0gPSBcIk5PREVfR1lQX0lOSkVDVEVEXCI7XG4gICAgTWVzc2FnZU5hbWVbTWVzc2FnZU5hbWVbXCJBVVRIRU5USUNBVElPTl9OT1RfRk9VTkRcIl0gPSAzM10gPSBcIkFVVEhFTlRJQ0FUSU9OX05PVF9GT1VORFwiO1xuICAgIE1lc3NhZ2VOYW1lW01lc3NhZ2VOYW1lW1wiSU5WQUxJRF9DT05GSUdVUkFUSU9OX0tFWVwiXSA9IDM0XSA9IFwiSU5WQUxJRF9DT05GSUdVUkFUSU9OX0tFWVwiO1xuICAgIE1lc3NhZ2VOYW1lW01lc3NhZ2VOYW1lW1wiTkVUV09SS19FUlJPUlwiXSA9IDM1XSA9IFwiTkVUV09SS19FUlJPUlwiO1xuICAgIE1lc3NhZ2VOYW1lW01lc3NhZ2VOYW1lW1wiTElGRUNZQ0xFX1NDUklQVFwiXSA9IDM2XSA9IFwiTElGRUNZQ0xFX1NDUklQVFwiO1xuICAgIE1lc3NhZ2VOYW1lW01lc3NhZ2VOYW1lW1wiQ09OU1RSQUlOVFNfTUlTU0lOR19GSUVMRFwiXSA9IDM3XSA9IFwiQ09OU1RSQUlOVFNfTUlTU0lOR19GSUVMRFwiO1xuICAgIE1lc3NhZ2VOYW1lW01lc3NhZ2VOYW1lW1wiQ09OU1RSQUlOVFNfSU5DT01QQVRJQkxFX0ZJRUxEXCJdID0gMzhdID0gXCJDT05TVFJBSU5UU19JTkNPTVBBVElCTEVfRklFTERcIjtcbiAgICBNZXNzYWdlTmFtZVtNZXNzYWdlTmFtZVtcIkNPTlNUUkFJTlRTX0VYVFJBTkVPVVNfRklFTERcIl0gPSAzOV0gPSBcIkNPTlNUUkFJTlRTX0VYVFJBTkVPVVNfRklFTERcIjtcbiAgICBNZXNzYWdlTmFtZVtNZXNzYWdlTmFtZVtcIkNPTlNUUkFJTlRTX0lOVkFMSURfRklFTERcIl0gPSA0MF0gPSBcIkNPTlNUUkFJTlRTX0lOVkFMSURfRklFTERcIjtcbiAgICBNZXNzYWdlTmFtZVtNZXNzYWdlTmFtZVtcIkFVVEhFTlRJQ0FUSU9OX0lOVkFMSURcIl0gPSA0MV0gPSBcIkFVVEhFTlRJQ0FUSU9OX0lOVkFMSURcIjtcbiAgICBNZXNzYWdlTmFtZVtNZXNzYWdlTmFtZVtcIlBST0xPR19VTktOT1dOX0VSUk9SXCJdID0gNDJdID0gXCJQUk9MT0dfVU5LTk9XTl9FUlJPUlwiO1xuICAgIE1lc3NhZ2VOYW1lW01lc3NhZ2VOYW1lW1wiUFJPTE9HX1NZTlRBWF9FUlJPUlwiXSA9IDQzXSA9IFwiUFJPTE9HX1NZTlRBWF9FUlJPUlwiO1xuICAgIE1lc3NhZ2VOYW1lW01lc3NhZ2VOYW1lW1wiUFJPTE9HX0VYSVNURU5DRV9FUlJPUlwiXSA9IDQ0XSA9IFwiUFJPTE9HX0VYSVNURU5DRV9FUlJPUlwiO1xuICAgIE1lc3NhZ2VOYW1lW01lc3NhZ2VOYW1lW1wiU1RBQ0tfT1ZFUkZMT1dfUkVTT0xVVElPTlwiXSA9IDQ1XSA9IFwiU1RBQ0tfT1ZFUkZMT1dfUkVTT0xVVElPTlwiO1xuICAgIE1lc3NhZ2VOYW1lW01lc3NhZ2VOYW1lW1wiQVVUT01FUkdFX0ZBSUxFRF9UT19QQVJTRVwiXSA9IDQ2XSA9IFwiQVVUT01FUkdFX0ZBSUxFRF9UT19QQVJTRVwiO1xuICAgIE1lc3NhZ2VOYW1lW01lc3NhZ2VOYW1lW1wiQVVUT01FUkdFX0lNTVVUQUJMRVwiXSA9IDQ3XSA9IFwiQVVUT01FUkdFX0lNTVVUQUJMRVwiO1xuICAgIE1lc3NhZ2VOYW1lW01lc3NhZ2VOYW1lW1wiQVVUT01FUkdFX1NVQ0NFU1NcIl0gPSA0OF0gPSBcIkFVVE9NRVJHRV9TVUNDRVNTXCI7XG4gICAgTWVzc2FnZU5hbWVbTWVzc2FnZU5hbWVbXCJBVVRPTUVSR0VfUkVRVUlSRURcIl0gPSA0OV0gPSBcIkFVVE9NRVJHRV9SRVFVSVJFRFwiO1xuICAgIE1lc3NhZ2VOYW1lW01lc3NhZ2VOYW1lW1wiREVQUkVDQVRFRF9DTElfU0VUVElOR1NcIl0gPSA1MF0gPSBcIkRFUFJFQ0FURURfQ0xJX1NFVFRJTkdTXCI7XG4gICAgTWVzc2FnZU5hbWVbTWVzc2FnZU5hbWVbXCJQTFVHSU5fTkFNRV9OT1RfRk9VTkRcIl0gPSA1MV0gPSBcIlBMVUdJTl9OQU1FX05PVF9GT1VORFwiO1xuICAgIE1lc3NhZ2VOYW1lW01lc3NhZ2VOYW1lW1wiSU5WQUxJRF9QTFVHSU5fUkVGRVJFTkNFXCJdID0gNTJdID0gXCJJTlZBTElEX1BMVUdJTl9SRUZFUkVOQ0VcIjtcbiAgICBNZXNzYWdlTmFtZVtNZXNzYWdlTmFtZVtcIkNPTlNUUkFJTlRTX0FNQklHVUlUWVwiXSA9IDUzXSA9IFwiQ09OU1RSQUlOVFNfQU1CSUdVSVRZXCI7XG4gICAgTWVzc2FnZU5hbWVbTWVzc2FnZU5hbWVbXCJDQUNIRV9PVVRTSURFX1BST0pFQ1RcIl0gPSA1NF0gPSBcIkNBQ0hFX09VVFNJREVfUFJPSkVDVFwiO1xuICAgIE1lc3NhZ2VOYW1lW01lc3NhZ2VOYW1lW1wiSU1NVVRBQkxFX0lOU1RBTExcIl0gPSA1NV0gPSBcIklNTVVUQUJMRV9JTlNUQUxMXCI7XG4gICAgTWVzc2FnZU5hbWVbTWVzc2FnZU5hbWVbXCJJTU1VVEFCTEVfQ0FDSEVcIl0gPSA1Nl0gPSBcIklNTVVUQUJMRV9DQUNIRVwiO1xuICAgIE1lc3NhZ2VOYW1lW01lc3NhZ2VOYW1lW1wiSU5WQUxJRF9NQU5JRkVTVFwiXSA9IDU3XSA9IFwiSU5WQUxJRF9NQU5JRkVTVFwiO1xuICAgIE1lc3NhZ2VOYW1lW01lc3NhZ2VOYW1lW1wiUEFDS0FHRV9QUkVQQVJBVElPTl9GQUlMRURcIl0gPSA1OF0gPSBcIlBBQ0tBR0VfUFJFUEFSQVRJT05fRkFJTEVEXCI7XG4gICAgTWVzc2FnZU5hbWVbTWVzc2FnZU5hbWVbXCJJTlZBTElEX1JBTkdFX1BFRVJfREVQRU5ERU5DWVwiXSA9IDU5XSA9IFwiSU5WQUxJRF9SQU5HRV9QRUVSX0RFUEVOREVOQ1lcIjtcbiAgICBNZXNzYWdlTmFtZVtNZXNzYWdlTmFtZVtcIklOQ09NUEFUSUJMRV9QRUVSX0RFUEVOREVOQ1lcIl0gPSA2MF0gPSBcIklOQ09NUEFUSUJMRV9QRUVSX0RFUEVOREVOQ1lcIjtcbiAgICBNZXNzYWdlTmFtZVtNZXNzYWdlTmFtZVtcIkRFUFJFQ0FURURfUEFDS0FHRVwiXSA9IDYxXSA9IFwiREVQUkVDQVRFRF9QQUNLQUdFXCI7XG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgVXNlIHtAbGluayBJTkNPTVBBVElCTEVfQVJDSElURUNUVVJFfVxuICAgICAqL1xuICAgIE1lc3NhZ2VOYW1lW01lc3NhZ2VOYW1lW1wiSU5DT01QQVRJQkxFX09TXCJdID0gNjJdID0gXCJJTkNPTVBBVElCTEVfT1NcIjtcbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCBVc2Uge0BsaW5rIElOQ09NUEFUSUJMRV9BUkNISVRFQ1RVUkV9XG4gICAgICovXG4gICAgTWVzc2FnZU5hbWVbTWVzc2FnZU5hbWVbXCJJTkNPTVBBVElCTEVfQ1BVXCJdID0gNjNdID0gXCJJTkNPTVBBVElCTEVfQ1BVXCI7XG4gICAgTWVzc2FnZU5hbWVbTWVzc2FnZU5hbWVbXCJGUk9aRU5fQVJUSUZBQ1RfRVhDRVBUSU9OXCJdID0gNjRdID0gXCJGUk9aRU5fQVJUSUZBQ1RfRVhDRVBUSU9OXCI7XG4gICAgTWVzc2FnZU5hbWVbTWVzc2FnZU5hbWVbXCJURUxFTUVUUllfTk9USUNFXCJdID0gNjVdID0gXCJURUxFTUVUUllfTk9USUNFXCI7XG4gICAgTWVzc2FnZU5hbWVbTWVzc2FnZU5hbWVbXCJQQVRDSF9IVU5LX0ZBSUxFRFwiXSA9IDY2XSA9IFwiUEFUQ0hfSFVOS19GQUlMRURcIjtcbiAgICBNZXNzYWdlTmFtZVtNZXNzYWdlTmFtZVtcIklOVkFMSURfQ09ORklHVVJBVElPTl9WQUxVRVwiXSA9IDY3XSA9IFwiSU5WQUxJRF9DT05GSUdVUkFUSU9OX1ZBTFVFXCI7XG4gICAgTWVzc2FnZU5hbWVbTWVzc2FnZU5hbWVbXCJVTlVTRURfUEFDS0FHRV9FWFRFTlNJT05cIl0gPSA2OF0gPSBcIlVOVVNFRF9QQUNLQUdFX0VYVEVOU0lPTlwiO1xuICAgIE1lc3NhZ2VOYW1lW01lc3NhZ2VOYW1lW1wiUkVEVU5EQU5UX1BBQ0tBR0VfRVhURU5TSU9OXCJdID0gNjldID0gXCJSRURVTkRBTlRfUEFDS0FHRV9FWFRFTlNJT05cIjtcbiAgICBNZXNzYWdlTmFtZVtNZXNzYWdlTmFtZVtcIkFVVE9fTk1fU1VDQ0VTU1wiXSA9IDcwXSA9IFwiQVVUT19OTV9TVUNDRVNTXCI7XG4gICAgTWVzc2FnZU5hbWVbTWVzc2FnZU5hbWVbXCJOTV9DQU5UX0lOU1RBTExfRVhURVJOQUxfU09GVF9MSU5LXCJdID0gNzFdID0gXCJOTV9DQU5UX0lOU1RBTExfRVhURVJOQUxfU09GVF9MSU5LXCI7XG4gICAgTWVzc2FnZU5hbWVbTWVzc2FnZU5hbWVbXCJOTV9QUkVTRVJWRV9TWU1MSU5LU19SRVFVSVJFRFwiXSA9IDcyXSA9IFwiTk1fUFJFU0VSVkVfU1lNTElOS1NfUkVRVUlSRURcIjtcbiAgICBNZXNzYWdlTmFtZVtNZXNzYWdlTmFtZVtcIlVQREFURV9MT0NLRklMRV9PTkxZX1NLSVBfTElOS1wiXSA9IDczXSA9IFwiVVBEQVRFX0xPQ0tGSUxFX09OTFlfU0tJUF9MSU5LXCI7XG4gICAgTWVzc2FnZU5hbWVbTWVzc2FnZU5hbWVbXCJOTV9IQVJETElOS1NfTU9ERV9ET1dOR1JBREVEXCJdID0gNzRdID0gXCJOTV9IQVJETElOS1NfTU9ERV9ET1dOR1JBREVEXCI7XG4gICAgTWVzc2FnZU5hbWVbTWVzc2FnZU5hbWVbXCJQUk9MT0dfSU5TVEFOVElBVElPTl9FUlJPUlwiXSA9IDc1XSA9IFwiUFJPTE9HX0lOU1RBTlRJQVRJT05fRVJST1JcIjtcbiAgICBNZXNzYWdlTmFtZVtNZXNzYWdlTmFtZVtcIklOQ09NUEFUSUJMRV9BUkNISVRFQ1RVUkVcIl0gPSA3Nl0gPSBcIklOQ09NUEFUSUJMRV9BUkNISVRFQ1RVUkVcIjtcbiAgICBNZXNzYWdlTmFtZVtNZXNzYWdlTmFtZVtcIkdIT1NUX0FSQ0hJVEVDVFVSRVwiXSA9IDc3XSA9IFwiR0hPU1RfQVJDSElURUNUVVJFXCI7XG4gICAgTWVzc2FnZU5hbWVbTWVzc2FnZU5hbWVbXCJSRVNPTFVUSU9OX01JU01BVENIXCJdID0gNzhdID0gXCJSRVNPTFVUSU9OX01JU01BVENIXCI7XG4gICAgTWVzc2FnZU5hbWVbTWVzc2FnZU5hbWVbXCJQUk9MT0dfTElNSVRfRVhDRUVERURcIl0gPSA3OV0gPSBcIlBST0xPR19MSU1JVF9FWENFRURFRFwiO1xuICAgIE1lc3NhZ2VOYW1lW01lc3NhZ2VOYW1lW1wiTkVUV09SS19ESVNBQkxFRFwiXSA9IDgwXSA9IFwiTkVUV09SS19ESVNBQkxFRFwiO1xuICAgIE1lc3NhZ2VOYW1lW01lc3NhZ2VOYW1lW1wiTkVUV09SS19VTlNBRkVfSFRUUFwiXSA9IDgxXSA9IFwiTkVUV09SS19VTlNBRkVfSFRUUFwiO1xuICAgIE1lc3NhZ2VOYW1lW01lc3NhZ2VOYW1lW1wiUkVTT0xVVElPTl9GQUlMRURcIl0gPSA4Ml0gPSBcIlJFU09MVVRJT05fRkFJTEVEXCI7XG59KShNZXNzYWdlTmFtZSA9IGV4cG9ydHMuTWVzc2FnZU5hbWUgfHwgKGV4cG9ydHMuTWVzc2FnZU5hbWUgPSB7fSkpO1xuZnVuY3Rpb24gc3RyaW5naWZ5TWVzc2FnZU5hbWUobmFtZSkge1xuICAgIHJldHVybiBgWU4ke25hbWUudG9TdHJpbmcoMTApLnBhZFN0YXJ0KDQsIGAwYCl9YDtcbn1cbmV4cG9ydHMuc3RyaW5naWZ5TWVzc2FnZU5hbWUgPSBzdHJpbmdpZnlNZXNzYWdlTmFtZTtcbmZ1bmN0aW9uIHBhcnNlTWVzc2FnZU5hbWUobWVzc2FnZU5hbWUpIHtcbiAgICBjb25zdCBwYXJzZWQgPSBOdW1iZXIobWVzc2FnZU5hbWUuc2xpY2UoMikpO1xuICAgIGlmICh0eXBlb2YgTWVzc2FnZU5hbWVbcGFyc2VkXSA9PT0gYHVuZGVmaW5lZGApXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biBtZXNzYWdlIG5hbWU6IFwiJHttZXNzYWdlTmFtZX1cImApO1xuICAgIHJldHVybiBwYXJzZWQ7XG59XG5leHBvcnRzLnBhcnNlTWVzc2FnZU5hbWUgPSBwYXJzZU1lc3NhZ2VOYW1lO1xuIiwgIi8vIE5vdGU6IHRoaXMgaXMgdGhlIHNlbXZlci5vcmcgdmVyc2lvbiBvZiB0aGUgc3BlYyB0aGF0IGl0IGltcGxlbWVudHNcbi8vIE5vdCBuZWNlc3NhcmlseSB0aGUgcGFja2FnZSB2ZXJzaW9uIG9mIHRoaXMgY29kZS5cbmNvbnN0IFNFTVZFUl9TUEVDX1ZFUlNJT04gPSAnMi4wLjAnXG5cbmNvbnN0IE1BWF9MRU5HVEggPSAyNTZcbmNvbnN0IE1BWF9TQUZFX0lOVEVHRVIgPSBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUiB8fFxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi8gOTAwNzE5OTI1NDc0MDk5MVxuXG4vLyBNYXggc2FmZSBzZWdtZW50IGxlbmd0aCBmb3IgY29lcmNpb24uXG5jb25zdCBNQVhfU0FGRV9DT01QT05FTlRfTEVOR1RIID0gMTZcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIFNFTVZFUl9TUEVDX1ZFUlNJT04sXG4gIE1BWF9MRU5HVEgsXG4gIE1BWF9TQUZFX0lOVEVHRVIsXG4gIE1BWF9TQUZFX0NPTVBPTkVOVF9MRU5HVEgsXG59XG4iLCAiY29uc3QgZGVidWcgPSAoXG4gIHR5cGVvZiBwcm9jZXNzID09PSAnb2JqZWN0JyAmJlxuICBwcm9jZXNzLmVudiAmJlxuICBwcm9jZXNzLmVudi5OT0RFX0RFQlVHICYmXG4gIC9cXGJzZW12ZXJcXGIvaS50ZXN0KHByb2Nlc3MuZW52Lk5PREVfREVCVUcpXG4pID8gKC4uLmFyZ3MpID0+IGNvbnNvbGUuZXJyb3IoJ1NFTVZFUicsIC4uLmFyZ3MpXG4gIDogKCkgPT4ge31cblxubW9kdWxlLmV4cG9ydHMgPSBkZWJ1Z1xuIiwgImNvbnN0IHsgTUFYX1NBRkVfQ09NUE9ORU5UX0xFTkdUSCB9ID0gcmVxdWlyZSgnLi9jb25zdGFudHMnKVxuY29uc3QgZGVidWcgPSByZXF1aXJlKCcuL2RlYnVnJylcbmV4cG9ydHMgPSBtb2R1bGUuZXhwb3J0cyA9IHt9XG5cbi8vIFRoZSBhY3R1YWwgcmVnZXhwcyBnbyBvbiBleHBvcnRzLnJlXG5jb25zdCByZSA9IGV4cG9ydHMucmUgPSBbXVxuY29uc3Qgc3JjID0gZXhwb3J0cy5zcmMgPSBbXVxuY29uc3QgdCA9IGV4cG9ydHMudCA9IHt9XG5sZXQgUiA9IDBcblxuY29uc3QgY3JlYXRlVG9rZW4gPSAobmFtZSwgdmFsdWUsIGlzR2xvYmFsKSA9PiB7XG4gIGNvbnN0IGluZGV4ID0gUisrXG4gIGRlYnVnKG5hbWUsIGluZGV4LCB2YWx1ZSlcbiAgdFtuYW1lXSA9IGluZGV4XG4gIHNyY1tpbmRleF0gPSB2YWx1ZVxuICByZVtpbmRleF0gPSBuZXcgUmVnRXhwKHZhbHVlLCBpc0dsb2JhbCA/ICdnJyA6IHVuZGVmaW5lZClcbn1cblxuLy8gVGhlIGZvbGxvd2luZyBSZWd1bGFyIEV4cHJlc3Npb25zIGNhbiBiZSB1c2VkIGZvciB0b2tlbml6aW5nLFxuLy8gdmFsaWRhdGluZywgYW5kIHBhcnNpbmcgU2VtVmVyIHZlcnNpb24gc3RyaW5ncy5cblxuLy8gIyMgTnVtZXJpYyBJZGVudGlmaWVyXG4vLyBBIHNpbmdsZSBgMGAsIG9yIGEgbm9uLXplcm8gZGlnaXQgZm9sbG93ZWQgYnkgemVybyBvciBtb3JlIGRpZ2l0cy5cblxuY3JlYXRlVG9rZW4oJ05VTUVSSUNJREVOVElGSUVSJywgJzB8WzEtOV1cXFxcZConKVxuY3JlYXRlVG9rZW4oJ05VTUVSSUNJREVOVElGSUVSTE9PU0UnLCAnWzAtOV0rJylcblxuLy8gIyMgTm9uLW51bWVyaWMgSWRlbnRpZmllclxuLy8gWmVybyBvciBtb3JlIGRpZ2l0cywgZm9sbG93ZWQgYnkgYSBsZXR0ZXIgb3IgaHlwaGVuLCBhbmQgdGhlbiB6ZXJvIG9yXG4vLyBtb3JlIGxldHRlcnMsIGRpZ2l0cywgb3IgaHlwaGVucy5cblxuY3JlYXRlVG9rZW4oJ05PTk5VTUVSSUNJREVOVElGSUVSJywgJ1xcXFxkKlthLXpBLVotXVthLXpBLVowLTktXSonKVxuXG4vLyAjIyBNYWluIFZlcnNpb25cbi8vIFRocmVlIGRvdC1zZXBhcmF0ZWQgbnVtZXJpYyBpZGVudGlmaWVycy5cblxuY3JlYXRlVG9rZW4oJ01BSU5WRVJTSU9OJywgYCgke3NyY1t0Lk5VTUVSSUNJREVOVElGSUVSXX0pXFxcXC5gICtcbiAgICAgICAgICAgICAgICAgICBgKCR7c3JjW3QuTlVNRVJJQ0lERU5USUZJRVJdfSlcXFxcLmAgK1xuICAgICAgICAgICAgICAgICAgIGAoJHtzcmNbdC5OVU1FUklDSURFTlRJRklFUl19KWApXG5cbmNyZWF0ZVRva2VuKCdNQUlOVkVSU0lPTkxPT1NFJywgYCgke3NyY1t0Lk5VTUVSSUNJREVOVElGSUVSTE9PU0VdfSlcXFxcLmAgK1xuICAgICAgICAgICAgICAgICAgICAgICAgYCgke3NyY1t0Lk5VTUVSSUNJREVOVElGSUVSTE9PU0VdfSlcXFxcLmAgK1xuICAgICAgICAgICAgICAgICAgICAgICAgYCgke3NyY1t0Lk5VTUVSSUNJREVOVElGSUVSTE9PU0VdfSlgKVxuXG4vLyAjIyBQcmUtcmVsZWFzZSBWZXJzaW9uIElkZW50aWZpZXJcbi8vIEEgbnVtZXJpYyBpZGVudGlmaWVyLCBvciBhIG5vbi1udW1lcmljIGlkZW50aWZpZXIuXG5cbmNyZWF0ZVRva2VuKCdQUkVSRUxFQVNFSURFTlRJRklFUicsIGAoPzoke3NyY1t0Lk5VTUVSSUNJREVOVElGSUVSXVxufXwke3NyY1t0Lk5PTk5VTUVSSUNJREVOVElGSUVSXX0pYClcblxuY3JlYXRlVG9rZW4oJ1BSRVJFTEVBU0VJREVOVElGSUVSTE9PU0UnLCBgKD86JHtzcmNbdC5OVU1FUklDSURFTlRJRklFUkxPT1NFXVxufXwke3NyY1t0Lk5PTk5VTUVSSUNJREVOVElGSUVSXX0pYClcblxuLy8gIyMgUHJlLXJlbGVhc2UgVmVyc2lvblxuLy8gSHlwaGVuLCBmb2xsb3dlZCBieSBvbmUgb3IgbW9yZSBkb3Qtc2VwYXJhdGVkIHByZS1yZWxlYXNlIHZlcnNpb25cbi8vIGlkZW50aWZpZXJzLlxuXG5jcmVhdGVUb2tlbignUFJFUkVMRUFTRScsIGAoPzotKCR7c3JjW3QuUFJFUkVMRUFTRUlERU5USUZJRVJdXG59KD86XFxcXC4ke3NyY1t0LlBSRVJFTEVBU0VJREVOVElGSUVSXX0pKikpYClcblxuY3JlYXRlVG9rZW4oJ1BSRVJFTEVBU0VMT09TRScsIGAoPzotPygke3NyY1t0LlBSRVJFTEVBU0VJREVOVElGSUVSTE9PU0VdXG59KD86XFxcXC4ke3NyY1t0LlBSRVJFTEVBU0VJREVOVElGSUVSTE9PU0VdfSkqKSlgKVxuXG4vLyAjIyBCdWlsZCBNZXRhZGF0YSBJZGVudGlmaWVyXG4vLyBBbnkgY29tYmluYXRpb24gb2YgZGlnaXRzLCBsZXR0ZXJzLCBvciBoeXBoZW5zLlxuXG5jcmVhdGVUb2tlbignQlVJTERJREVOVElGSUVSJywgJ1swLTlBLVphLXotXSsnKVxuXG4vLyAjIyBCdWlsZCBNZXRhZGF0YVxuLy8gUGx1cyBzaWduLCBmb2xsb3dlZCBieSBvbmUgb3IgbW9yZSBwZXJpb2Qtc2VwYXJhdGVkIGJ1aWxkIG1ldGFkYXRhXG4vLyBpZGVudGlmaWVycy5cblxuY3JlYXRlVG9rZW4oJ0JVSUxEJywgYCg/OlxcXFwrKCR7c3JjW3QuQlVJTERJREVOVElGSUVSXVxufSg/OlxcXFwuJHtzcmNbdC5CVUlMRElERU5USUZJRVJdfSkqKSlgKVxuXG4vLyAjIyBGdWxsIFZlcnNpb24gU3RyaW5nXG4vLyBBIG1haW4gdmVyc2lvbiwgZm9sbG93ZWQgb3B0aW9uYWxseSBieSBhIHByZS1yZWxlYXNlIHZlcnNpb24gYW5kXG4vLyBidWlsZCBtZXRhZGF0YS5cblxuLy8gTm90ZSB0aGF0IHRoZSBvbmx5IG1ham9yLCBtaW5vciwgcGF0Y2gsIGFuZCBwcmUtcmVsZWFzZSBzZWN0aW9ucyBvZlxuLy8gdGhlIHZlcnNpb24gc3RyaW5nIGFyZSBjYXB0dXJpbmcgZ3JvdXBzLiAgVGhlIGJ1aWxkIG1ldGFkYXRhIGlzIG5vdCBhXG4vLyBjYXB0dXJpbmcgZ3JvdXAsIGJlY2F1c2UgaXQgc2hvdWxkIG5vdCBldmVyIGJlIHVzZWQgaW4gdmVyc2lvblxuLy8gY29tcGFyaXNvbi5cblxuY3JlYXRlVG9rZW4oJ0ZVTExQTEFJTicsIGB2PyR7c3JjW3QuTUFJTlZFUlNJT05dXG59JHtzcmNbdC5QUkVSRUxFQVNFXX0/JHtcbiAgc3JjW3QuQlVJTERdfT9gKVxuXG5jcmVhdGVUb2tlbignRlVMTCcsIGBeJHtzcmNbdC5GVUxMUExBSU5dfSRgKVxuXG4vLyBsaWtlIGZ1bGwsIGJ1dCBhbGxvd3MgdjEuMi4zIGFuZCA9MS4yLjMsIHdoaWNoIHBlb3BsZSBkbyBzb21ldGltZXMuXG4vLyBhbHNvLCAxLjAuMGFscGhhMSAocHJlcmVsZWFzZSB3aXRob3V0IHRoZSBoeXBoZW4pIHdoaWNoIGlzIHByZXR0eVxuLy8gY29tbW9uIGluIHRoZSBucG0gcmVnaXN0cnkuXG5jcmVhdGVUb2tlbignTE9PU0VQTEFJTicsIGBbdj1cXFxcc10qJHtzcmNbdC5NQUlOVkVSU0lPTkxPT1NFXVxufSR7c3JjW3QuUFJFUkVMRUFTRUxPT1NFXX0/JHtcbiAgc3JjW3QuQlVJTERdfT9gKVxuXG5jcmVhdGVUb2tlbignTE9PU0UnLCBgXiR7c3JjW3QuTE9PU0VQTEFJTl19JGApXG5cbmNyZWF0ZVRva2VuKCdHVExUJywgJygoPzo8fD4pPz0/KScpXG5cbi8vIFNvbWV0aGluZyBsaWtlIFwiMi4qXCIgb3IgXCIxLjIueFwiLlxuLy8gTm90ZSB0aGF0IFwieC54XCIgaXMgYSB2YWxpZCB4UmFuZ2UgaWRlbnRpZmVyLCBtZWFuaW5nIFwiYW55IHZlcnNpb25cIlxuLy8gT25seSB0aGUgZmlyc3QgaXRlbSBpcyBzdHJpY3RseSByZXF1aXJlZC5cbmNyZWF0ZVRva2VuKCdYUkFOR0VJREVOVElGSUVSTE9PU0UnLCBgJHtzcmNbdC5OVU1FUklDSURFTlRJRklFUkxPT1NFXX18eHxYfFxcXFwqYClcbmNyZWF0ZVRva2VuKCdYUkFOR0VJREVOVElGSUVSJywgYCR7c3JjW3QuTlVNRVJJQ0lERU5USUZJRVJdfXx4fFh8XFxcXCpgKVxuXG5jcmVhdGVUb2tlbignWFJBTkdFUExBSU4nLCBgW3Y9XFxcXHNdKigke3NyY1t0LlhSQU5HRUlERU5USUZJRVJdfSlgICtcbiAgICAgICAgICAgICAgICAgICBgKD86XFxcXC4oJHtzcmNbdC5YUkFOR0VJREVOVElGSUVSXX0pYCArXG4gICAgICAgICAgICAgICAgICAgYCg/OlxcXFwuKCR7c3JjW3QuWFJBTkdFSURFTlRJRklFUl19KWAgK1xuICAgICAgICAgICAgICAgICAgIGAoPzoke3NyY1t0LlBSRVJFTEVBU0VdfSk/JHtcbiAgICAgICAgICAgICAgICAgICAgIHNyY1t0LkJVSUxEXX0/YCArXG4gICAgICAgICAgICAgICAgICAgYCk/KT9gKVxuXG5jcmVhdGVUb2tlbignWFJBTkdFUExBSU5MT09TRScsIGBbdj1cXFxcc10qKCR7c3JjW3QuWFJBTkdFSURFTlRJRklFUkxPT1NFXX0pYCArXG4gICAgICAgICAgICAgICAgICAgICAgICBgKD86XFxcXC4oJHtzcmNbdC5YUkFOR0VJREVOVElGSUVSTE9PU0VdfSlgICtcbiAgICAgICAgICAgICAgICAgICAgICAgIGAoPzpcXFxcLigke3NyY1t0LlhSQU5HRUlERU5USUZJRVJMT09TRV19KWAgK1xuICAgICAgICAgICAgICAgICAgICAgICAgYCg/OiR7c3JjW3QuUFJFUkVMRUFTRUxPT1NFXX0pPyR7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNyY1t0LkJVSUxEXX0/YCArXG4gICAgICAgICAgICAgICAgICAgICAgICBgKT8pP2ApXG5cbmNyZWF0ZVRva2VuKCdYUkFOR0UnLCBgXiR7c3JjW3QuR1RMVF19XFxcXHMqJHtzcmNbdC5YUkFOR0VQTEFJTl19JGApXG5jcmVhdGVUb2tlbignWFJBTkdFTE9PU0UnLCBgXiR7c3JjW3QuR1RMVF19XFxcXHMqJHtzcmNbdC5YUkFOR0VQTEFJTkxPT1NFXX0kYClcblxuLy8gQ29lcmNpb24uXG4vLyBFeHRyYWN0IGFueXRoaW5nIHRoYXQgY291bGQgY29uY2VpdmFibHkgYmUgYSBwYXJ0IG9mIGEgdmFsaWQgc2VtdmVyXG5jcmVhdGVUb2tlbignQ09FUkNFJywgYCR7JyhefFteXFxcXGRdKScgK1xuICAgICAgICAgICAgICAnKFxcXFxkezEsJ30ke01BWF9TQUZFX0NPTVBPTkVOVF9MRU5HVEh9fSlgICtcbiAgICAgICAgICAgICAgYCg/OlxcXFwuKFxcXFxkezEsJHtNQVhfU0FGRV9DT01QT05FTlRfTEVOR1RIfX0pKT9gICtcbiAgICAgICAgICAgICAgYCg/OlxcXFwuKFxcXFxkezEsJHtNQVhfU0FGRV9DT01QT05FTlRfTEVOR1RIfX0pKT9gICtcbiAgICAgICAgICAgICAgYCg/OiR8W15cXFxcZF0pYClcbmNyZWF0ZVRva2VuKCdDT0VSQ0VSVEwnLCBzcmNbdC5DT0VSQ0VdLCB0cnVlKVxuXG4vLyBUaWxkZSByYW5nZXMuXG4vLyBNZWFuaW5nIGlzIFwicmVhc29uYWJseSBhdCBvciBncmVhdGVyIHRoYW5cIlxuY3JlYXRlVG9rZW4oJ0xPTkVUSUxERScsICcoPzp+Pj8pJylcblxuY3JlYXRlVG9rZW4oJ1RJTERFVFJJTScsIGAoXFxcXHMqKSR7c3JjW3QuTE9ORVRJTERFXX1cXFxccytgLCB0cnVlKVxuZXhwb3J0cy50aWxkZVRyaW1SZXBsYWNlID0gJyQxfidcblxuY3JlYXRlVG9rZW4oJ1RJTERFJywgYF4ke3NyY1t0LkxPTkVUSUxERV19JHtzcmNbdC5YUkFOR0VQTEFJTl19JGApXG5jcmVhdGVUb2tlbignVElMREVMT09TRScsIGBeJHtzcmNbdC5MT05FVElMREVdfSR7c3JjW3QuWFJBTkdFUExBSU5MT09TRV19JGApXG5cbi8vIENhcmV0IHJhbmdlcy5cbi8vIE1lYW5pbmcgaXMgXCJhdCBsZWFzdCBhbmQgYmFja3dhcmRzIGNvbXBhdGlibGUgd2l0aFwiXG5jcmVhdGVUb2tlbignTE9ORUNBUkVUJywgJyg/OlxcXFxeKScpXG5cbmNyZWF0ZVRva2VuKCdDQVJFVFRSSU0nLCBgKFxcXFxzKikke3NyY1t0LkxPTkVDQVJFVF19XFxcXHMrYCwgdHJ1ZSlcbmV4cG9ydHMuY2FyZXRUcmltUmVwbGFjZSA9ICckMV4nXG5cbmNyZWF0ZVRva2VuKCdDQVJFVCcsIGBeJHtzcmNbdC5MT05FQ0FSRVRdfSR7c3JjW3QuWFJBTkdFUExBSU5dfSRgKVxuY3JlYXRlVG9rZW4oJ0NBUkVUTE9PU0UnLCBgXiR7c3JjW3QuTE9ORUNBUkVUXX0ke3NyY1t0LlhSQU5HRVBMQUlOTE9PU0VdfSRgKVxuXG4vLyBBIHNpbXBsZSBndC9sdC9lcSB0aGluZywgb3IganVzdCBcIlwiIHRvIGluZGljYXRlIFwiYW55IHZlcnNpb25cIlxuY3JlYXRlVG9rZW4oJ0NPTVBBUkFUT1JMT09TRScsIGBeJHtzcmNbdC5HVExUXX1cXFxccyooJHtzcmNbdC5MT09TRVBMQUlOXX0pJHxeJGApXG5jcmVhdGVUb2tlbignQ09NUEFSQVRPUicsIGBeJHtzcmNbdC5HVExUXX1cXFxccyooJHtzcmNbdC5GVUxMUExBSU5dfSkkfF4kYClcblxuLy8gQW4gZXhwcmVzc2lvbiB0byBzdHJpcCBhbnkgd2hpdGVzcGFjZSBiZXR3ZWVuIHRoZSBndGx0IGFuZCB0aGUgdGhpbmdcbi8vIGl0IG1vZGlmaWVzLCBzbyB0aGF0IGA+IDEuMi4zYCA9PT4gYD4xLjIuM2BcbmNyZWF0ZVRva2VuKCdDT01QQVJBVE9SVFJJTScsIGAoXFxcXHMqKSR7c3JjW3QuR1RMVF1cbn1cXFxccyooJHtzcmNbdC5MT09TRVBMQUlOXX18JHtzcmNbdC5YUkFOR0VQTEFJTl19KWAsIHRydWUpXG5leHBvcnRzLmNvbXBhcmF0b3JUcmltUmVwbGFjZSA9ICckMSQyJDMnXG5cbi8vIFNvbWV0aGluZyBsaWtlIGAxLjIuMyAtIDEuMi40YFxuLy8gTm90ZSB0aGF0IHRoZXNlIGFsbCB1c2UgdGhlIGxvb3NlIGZvcm0sIGJlY2F1c2UgdGhleSdsbCBiZVxuLy8gY2hlY2tlZCBhZ2FpbnN0IGVpdGhlciB0aGUgc3RyaWN0IG9yIGxvb3NlIGNvbXBhcmF0b3IgZm9ybVxuLy8gbGF0ZXIuXG5jcmVhdGVUb2tlbignSFlQSEVOUkFOR0UnLCBgXlxcXFxzKigke3NyY1t0LlhSQU5HRVBMQUlOXX0pYCArXG4gICAgICAgICAgICAgICAgICAgYFxcXFxzKy1cXFxccytgICtcbiAgICAgICAgICAgICAgICAgICBgKCR7c3JjW3QuWFJBTkdFUExBSU5dfSlgICtcbiAgICAgICAgICAgICAgICAgICBgXFxcXHMqJGApXG5cbmNyZWF0ZVRva2VuKCdIWVBIRU5SQU5HRUxPT1NFJywgYF5cXFxccyooJHtzcmNbdC5YUkFOR0VQTEFJTkxPT1NFXX0pYCArXG4gICAgICAgICAgICAgICAgICAgICAgICBgXFxcXHMrLVxcXFxzK2AgK1xuICAgICAgICAgICAgICAgICAgICAgICAgYCgke3NyY1t0LlhSQU5HRVBMQUlOTE9PU0VdfSlgICtcbiAgICAgICAgICAgICAgICAgICAgICAgIGBcXFxccyokYClcblxuLy8gU3RhciByYW5nZXMgYmFzaWNhbGx5IGp1c3QgYWxsb3cgYW55dGhpbmcgYXQgYWxsLlxuY3JlYXRlVG9rZW4oJ1NUQVInLCAnKDx8Pik/PT9cXFxccypcXFxcKicpXG4vLyA+PTAuMC4wIGlzIGxpa2UgYSBzdGFyXG5jcmVhdGVUb2tlbignR1RFMCcsICdeXFxcXHMqPj1cXFxccyowXFxcXC4wXFxcXC4wXFxcXHMqJCcpXG5jcmVhdGVUb2tlbignR1RFMFBSRScsICdeXFxcXHMqPj1cXFxccyowXFxcXC4wXFxcXC4wLTBcXFxccyokJylcbiIsICIvLyBwYXJzZSBvdXQganVzdCB0aGUgb3B0aW9ucyB3ZSBjYXJlIGFib3V0IHNvIHdlIGFsd2F5cyBnZXQgYSBjb25zaXN0ZW50XG4vLyBvYmogd2l0aCBrZXlzIGluIGEgY29uc2lzdGVudCBvcmRlci5cbmNvbnN0IG9wdHMgPSBbJ2luY2x1ZGVQcmVyZWxlYXNlJywgJ2xvb3NlJywgJ3J0bCddXG5jb25zdCBwYXJzZU9wdGlvbnMgPSBvcHRpb25zID0+XG4gICFvcHRpb25zID8ge31cbiAgOiB0eXBlb2Ygb3B0aW9ucyAhPT0gJ29iamVjdCcgPyB7IGxvb3NlOiB0cnVlIH1cbiAgOiBvcHRzLmZpbHRlcihrID0+IG9wdGlvbnNba10pLnJlZHVjZSgobywgaykgPT4ge1xuICAgIG9ba10gPSB0cnVlXG4gICAgcmV0dXJuIG9cbiAgfSwge30pXG5tb2R1bGUuZXhwb3J0cyA9IHBhcnNlT3B0aW9uc1xuIiwgImNvbnN0IG51bWVyaWMgPSAvXlswLTldKyQvXG5jb25zdCBjb21wYXJlSWRlbnRpZmllcnMgPSAoYSwgYikgPT4ge1xuICBjb25zdCBhbnVtID0gbnVtZXJpYy50ZXN0KGEpXG4gIGNvbnN0IGJudW0gPSBudW1lcmljLnRlc3QoYilcblxuICBpZiAoYW51bSAmJiBibnVtKSB7XG4gICAgYSA9ICthXG4gICAgYiA9ICtiXG4gIH1cblxuICByZXR1cm4gYSA9PT0gYiA/IDBcbiAgICA6IChhbnVtICYmICFibnVtKSA/IC0xXG4gICAgOiAoYm51bSAmJiAhYW51bSkgPyAxXG4gICAgOiBhIDwgYiA/IC0xXG4gICAgOiAxXG59XG5cbmNvbnN0IHJjb21wYXJlSWRlbnRpZmllcnMgPSAoYSwgYikgPT4gY29tcGFyZUlkZW50aWZpZXJzKGIsIGEpXG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBjb21wYXJlSWRlbnRpZmllcnMsXG4gIHJjb21wYXJlSWRlbnRpZmllcnMsXG59XG4iLCAiY29uc3QgZGVidWcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbC9kZWJ1ZycpXG5jb25zdCB7IE1BWF9MRU5HVEgsIE1BWF9TQUZFX0lOVEVHRVIgfSA9IHJlcXVpcmUoJy4uL2ludGVybmFsL2NvbnN0YW50cycpXG5jb25zdCB7IHJlLCB0IH0gPSByZXF1aXJlKCcuLi9pbnRlcm5hbC9yZScpXG5cbmNvbnN0IHBhcnNlT3B0aW9ucyA9IHJlcXVpcmUoJy4uL2ludGVybmFsL3BhcnNlLW9wdGlvbnMnKVxuY29uc3QgeyBjb21wYXJlSWRlbnRpZmllcnMgfSA9IHJlcXVpcmUoJy4uL2ludGVybmFsL2lkZW50aWZpZXJzJylcbmNsYXNzIFNlbVZlciB7XG4gIGNvbnN0cnVjdG9yICh2ZXJzaW9uLCBvcHRpb25zKSB7XG4gICAgb3B0aW9ucyA9IHBhcnNlT3B0aW9ucyhvcHRpb25zKVxuXG4gICAgaWYgKHZlcnNpb24gaW5zdGFuY2VvZiBTZW1WZXIpIHtcbiAgICAgIGlmICh2ZXJzaW9uLmxvb3NlID09PSAhIW9wdGlvbnMubG9vc2UgJiZcbiAgICAgICAgICB2ZXJzaW9uLmluY2x1ZGVQcmVyZWxlYXNlID09PSAhIW9wdGlvbnMuaW5jbHVkZVByZXJlbGVhc2UpIHtcbiAgICAgICAgcmV0dXJuIHZlcnNpb25cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZlcnNpb24gPSB2ZXJzaW9uLnZlcnNpb25cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2ZXJzaW9uICE9PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgSW52YWxpZCBWZXJzaW9uOiAke3ZlcnNpb259YClcbiAgICB9XG5cbiAgICBpZiAodmVyc2lvbi5sZW5ndGggPiBNQVhfTEVOR1RIKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFxuICAgICAgICBgdmVyc2lvbiBpcyBsb25nZXIgdGhhbiAke01BWF9MRU5HVEh9IGNoYXJhY3RlcnNgXG4gICAgICApXG4gICAgfVxuXG4gICAgZGVidWcoJ1NlbVZlcicsIHZlcnNpb24sIG9wdGlvbnMpXG4gICAgdGhpcy5vcHRpb25zID0gb3B0aW9uc1xuICAgIHRoaXMubG9vc2UgPSAhIW9wdGlvbnMubG9vc2VcbiAgICAvLyB0aGlzIGlzbid0IGFjdHVhbGx5IHJlbGV2YW50IGZvciB2ZXJzaW9ucywgYnV0IGtlZXAgaXQgc28gdGhhdCB3ZVxuICAgIC8vIGRvbid0IHJ1biBpbnRvIHRyb3VibGUgcGFzc2luZyB0aGlzLm9wdGlvbnMgYXJvdW5kLlxuICAgIHRoaXMuaW5jbHVkZVByZXJlbGVhc2UgPSAhIW9wdGlvbnMuaW5jbHVkZVByZXJlbGVhc2VcblxuICAgIGNvbnN0IG0gPSB2ZXJzaW9uLnRyaW0oKS5tYXRjaChvcHRpb25zLmxvb3NlID8gcmVbdC5MT09TRV0gOiByZVt0LkZVTExdKVxuXG4gICAgaWYgKCFtKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBJbnZhbGlkIFZlcnNpb246ICR7dmVyc2lvbn1gKVxuICAgIH1cblxuICAgIHRoaXMucmF3ID0gdmVyc2lvblxuXG4gICAgLy8gdGhlc2UgYXJlIGFjdHVhbGx5IG51bWJlcnNcbiAgICB0aGlzLm1ham9yID0gK21bMV1cbiAgICB0aGlzLm1pbm9yID0gK21bMl1cbiAgICB0aGlzLnBhdGNoID0gK21bM11cblxuICAgIGlmICh0aGlzLm1ham9yID4gTUFYX1NBRkVfSU5URUdFUiB8fCB0aGlzLm1ham9yIDwgMCkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignSW52YWxpZCBtYWpvciB2ZXJzaW9uJylcbiAgICB9XG5cbiAgICBpZiAodGhpcy5taW5vciA+IE1BWF9TQUZFX0lOVEVHRVIgfHwgdGhpcy5taW5vciA8IDApIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0ludmFsaWQgbWlub3IgdmVyc2lvbicpXG4gICAgfVxuXG4gICAgaWYgKHRoaXMucGF0Y2ggPiBNQVhfU0FGRV9JTlRFR0VSIHx8IHRoaXMucGF0Y2ggPCAwKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdJbnZhbGlkIHBhdGNoIHZlcnNpb24nKVxuICAgIH1cblxuICAgIC8vIG51bWJlcmlmeSBhbnkgcHJlcmVsZWFzZSBudW1lcmljIGlkc1xuICAgIGlmICghbVs0XSkge1xuICAgICAgdGhpcy5wcmVyZWxlYXNlID0gW11cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wcmVyZWxlYXNlID0gbVs0XS5zcGxpdCgnLicpLm1hcCgoaWQpID0+IHtcbiAgICAgICAgaWYgKC9eWzAtOV0rJC8udGVzdChpZCkpIHtcbiAgICAgICAgICBjb25zdCBudW0gPSAraWRcbiAgICAgICAgICBpZiAobnVtID49IDAgJiYgbnVtIDwgTUFYX1NBRkVfSU5URUdFUikge1xuICAgICAgICAgICAgcmV0dXJuIG51bVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaWRcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgdGhpcy5idWlsZCA9IG1bNV0gPyBtWzVdLnNwbGl0KCcuJykgOiBbXVxuICAgIHRoaXMuZm9ybWF0KClcbiAgfVxuXG4gIGZvcm1hdCAoKSB7XG4gICAgdGhpcy52ZXJzaW9uID0gYCR7dGhpcy5tYWpvcn0uJHt0aGlzLm1pbm9yfS4ke3RoaXMucGF0Y2h9YFxuICAgIGlmICh0aGlzLnByZXJlbGVhc2UubGVuZ3RoKSB7XG4gICAgICB0aGlzLnZlcnNpb24gKz0gYC0ke3RoaXMucHJlcmVsZWFzZS5qb2luKCcuJyl9YFxuICAgIH1cbiAgICByZXR1cm4gdGhpcy52ZXJzaW9uXG4gIH1cblxuICB0b1N0cmluZyAoKSB7XG4gICAgcmV0dXJuIHRoaXMudmVyc2lvblxuICB9XG5cbiAgY29tcGFyZSAob3RoZXIpIHtcbiAgICBkZWJ1ZygnU2VtVmVyLmNvbXBhcmUnLCB0aGlzLnZlcnNpb24sIHRoaXMub3B0aW9ucywgb3RoZXIpXG4gICAgaWYgKCEob3RoZXIgaW5zdGFuY2VvZiBTZW1WZXIpKSB7XG4gICAgICBpZiAodHlwZW9mIG90aGVyID09PSAnc3RyaW5nJyAmJiBvdGhlciA9PT0gdGhpcy52ZXJzaW9uKSB7XG4gICAgICAgIHJldHVybiAwXG4gICAgICB9XG4gICAgICBvdGhlciA9IG5ldyBTZW1WZXIob3RoZXIsIHRoaXMub3B0aW9ucylcbiAgICB9XG5cbiAgICBpZiAob3RoZXIudmVyc2lvbiA9PT0gdGhpcy52ZXJzaW9uKSB7XG4gICAgICByZXR1cm4gMFxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmNvbXBhcmVNYWluKG90aGVyKSB8fCB0aGlzLmNvbXBhcmVQcmUob3RoZXIpXG4gIH1cblxuICBjb21wYXJlTWFpbiAob3RoZXIpIHtcbiAgICBpZiAoIShvdGhlciBpbnN0YW5jZW9mIFNlbVZlcikpIHtcbiAgICAgIG90aGVyID0gbmV3IFNlbVZlcihvdGhlciwgdGhpcy5vcHRpb25zKVxuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICBjb21wYXJlSWRlbnRpZmllcnModGhpcy5tYWpvciwgb3RoZXIubWFqb3IpIHx8XG4gICAgICBjb21wYXJlSWRlbnRpZmllcnModGhpcy5taW5vciwgb3RoZXIubWlub3IpIHx8XG4gICAgICBjb21wYXJlSWRlbnRpZmllcnModGhpcy5wYXRjaCwgb3RoZXIucGF0Y2gpXG4gICAgKVxuICB9XG5cbiAgY29tcGFyZVByZSAob3RoZXIpIHtcbiAgICBpZiAoIShvdGhlciBpbnN0YW5jZW9mIFNlbVZlcikpIHtcbiAgICAgIG90aGVyID0gbmV3IFNlbVZlcihvdGhlciwgdGhpcy5vcHRpb25zKVxuICAgIH1cblxuICAgIC8vIE5PVCBoYXZpbmcgYSBwcmVyZWxlYXNlIGlzID4gaGF2aW5nIG9uZVxuICAgIGlmICh0aGlzLnByZXJlbGVhc2UubGVuZ3RoICYmICFvdGhlci5wcmVyZWxlYXNlLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIC0xXG4gICAgfSBlbHNlIGlmICghdGhpcy5wcmVyZWxlYXNlLmxlbmd0aCAmJiBvdGhlci5wcmVyZWxlYXNlLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIDFcbiAgICB9IGVsc2UgaWYgKCF0aGlzLnByZXJlbGVhc2UubGVuZ3RoICYmICFvdGhlci5wcmVyZWxlYXNlLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIDBcbiAgICB9XG5cbiAgICBsZXQgaSA9IDBcbiAgICBkbyB7XG4gICAgICBjb25zdCBhID0gdGhpcy5wcmVyZWxlYXNlW2ldXG4gICAgICBjb25zdCBiID0gb3RoZXIucHJlcmVsZWFzZVtpXVxuICAgICAgZGVidWcoJ3ByZXJlbGVhc2UgY29tcGFyZScsIGksIGEsIGIpXG4gICAgICBpZiAoYSA9PT0gdW5kZWZpbmVkICYmIGIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gMFxuICAgICAgfSBlbHNlIGlmIChiID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIDFcbiAgICAgIH0gZWxzZSBpZiAoYSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiAtMVxuICAgICAgfSBlbHNlIGlmIChhID09PSBiKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gY29tcGFyZUlkZW50aWZpZXJzKGEsIGIpXG4gICAgICB9XG4gICAgfSB3aGlsZSAoKytpKVxuICB9XG5cbiAgY29tcGFyZUJ1aWxkIChvdGhlcikge1xuICAgIGlmICghKG90aGVyIGluc3RhbmNlb2YgU2VtVmVyKSkge1xuICAgICAgb3RoZXIgPSBuZXcgU2VtVmVyKG90aGVyLCB0aGlzLm9wdGlvbnMpXG4gICAgfVxuXG4gICAgbGV0IGkgPSAwXG4gICAgZG8ge1xuICAgICAgY29uc3QgYSA9IHRoaXMuYnVpbGRbaV1cbiAgICAgIGNvbnN0IGIgPSBvdGhlci5idWlsZFtpXVxuICAgICAgZGVidWcoJ3ByZXJlbGVhc2UgY29tcGFyZScsIGksIGEsIGIpXG4gICAgICBpZiAoYSA9PT0gdW5kZWZpbmVkICYmIGIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gMFxuICAgICAgfSBlbHNlIGlmIChiID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIDFcbiAgICAgIH0gZWxzZSBpZiAoYSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiAtMVxuICAgICAgfSBlbHNlIGlmIChhID09PSBiKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gY29tcGFyZUlkZW50aWZpZXJzKGEsIGIpXG4gICAgICB9XG4gICAgfSB3aGlsZSAoKytpKVxuICB9XG5cbiAgLy8gcHJlbWlub3Igd2lsbCBidW1wIHRoZSB2ZXJzaW9uIHVwIHRvIHRoZSBuZXh0IG1pbm9yIHJlbGVhc2UsIGFuZCBpbW1lZGlhdGVseVxuICAvLyBkb3duIHRvIHByZS1yZWxlYXNlLiBwcmVtYWpvciBhbmQgcHJlcGF0Y2ggd29yayB0aGUgc2FtZSB3YXkuXG4gIGluYyAocmVsZWFzZSwgaWRlbnRpZmllcikge1xuICAgIHN3aXRjaCAocmVsZWFzZSkge1xuICAgICAgY2FzZSAncHJlbWFqb3InOlxuICAgICAgICB0aGlzLnByZXJlbGVhc2UubGVuZ3RoID0gMFxuICAgICAgICB0aGlzLnBhdGNoID0gMFxuICAgICAgICB0aGlzLm1pbm9yID0gMFxuICAgICAgICB0aGlzLm1ham9yKytcbiAgICAgICAgdGhpcy5pbmMoJ3ByZScsIGlkZW50aWZpZXIpXG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlICdwcmVtaW5vcic6XG4gICAgICAgIHRoaXMucHJlcmVsZWFzZS5sZW5ndGggPSAwXG4gICAgICAgIHRoaXMucGF0Y2ggPSAwXG4gICAgICAgIHRoaXMubWlub3IrK1xuICAgICAgICB0aGlzLmluYygncHJlJywgaWRlbnRpZmllcilcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgJ3ByZXBhdGNoJzpcbiAgICAgICAgLy8gSWYgdGhpcyBpcyBhbHJlYWR5IGEgcHJlcmVsZWFzZSwgaXQgd2lsbCBidW1wIHRvIHRoZSBuZXh0IHZlcnNpb25cbiAgICAgICAgLy8gZHJvcCBhbnkgcHJlcmVsZWFzZXMgdGhhdCBtaWdodCBhbHJlYWR5IGV4aXN0LCBzaW5jZSB0aGV5IGFyZSBub3RcbiAgICAgICAgLy8gcmVsZXZhbnQgYXQgdGhpcyBwb2ludC5cbiAgICAgICAgdGhpcy5wcmVyZWxlYXNlLmxlbmd0aCA9IDBcbiAgICAgICAgdGhpcy5pbmMoJ3BhdGNoJywgaWRlbnRpZmllcilcbiAgICAgICAgdGhpcy5pbmMoJ3ByZScsIGlkZW50aWZpZXIpXG4gICAgICAgIGJyZWFrXG4gICAgICAvLyBJZiB0aGUgaW5wdXQgaXMgYSBub24tcHJlcmVsZWFzZSB2ZXJzaW9uLCB0aGlzIGFjdHMgdGhlIHNhbWUgYXNcbiAgICAgIC8vIHByZXBhdGNoLlxuICAgICAgY2FzZSAncHJlcmVsZWFzZSc6XG4gICAgICAgIGlmICh0aGlzLnByZXJlbGVhc2UubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgdGhpcy5pbmMoJ3BhdGNoJywgaWRlbnRpZmllcilcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmluYygncHJlJywgaWRlbnRpZmllcilcbiAgICAgICAgYnJlYWtcblxuICAgICAgY2FzZSAnbWFqb3InOlxuICAgICAgICAvLyBJZiB0aGlzIGlzIGEgcHJlLW1ham9yIHZlcnNpb24sIGJ1bXAgdXAgdG8gdGhlIHNhbWUgbWFqb3IgdmVyc2lvbi5cbiAgICAgICAgLy8gT3RoZXJ3aXNlIGluY3JlbWVudCBtYWpvci5cbiAgICAgICAgLy8gMS4wLjAtNSBidW1wcyB0byAxLjAuMFxuICAgICAgICAvLyAxLjEuMCBidW1wcyB0byAyLjAuMFxuICAgICAgICBpZiAoXG4gICAgICAgICAgdGhpcy5taW5vciAhPT0gMCB8fFxuICAgICAgICAgIHRoaXMucGF0Y2ggIT09IDAgfHxcbiAgICAgICAgICB0aGlzLnByZXJlbGVhc2UubGVuZ3RoID09PSAwXG4gICAgICAgICkge1xuICAgICAgICAgIHRoaXMubWFqb3IrK1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubWlub3IgPSAwXG4gICAgICAgIHRoaXMucGF0Y2ggPSAwXG4gICAgICAgIHRoaXMucHJlcmVsZWFzZSA9IFtdXG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlICdtaW5vcic6XG4gICAgICAgIC8vIElmIHRoaXMgaXMgYSBwcmUtbWlub3IgdmVyc2lvbiwgYnVtcCB1cCB0byB0aGUgc2FtZSBtaW5vciB2ZXJzaW9uLlxuICAgICAgICAvLyBPdGhlcndpc2UgaW5jcmVtZW50IG1pbm9yLlxuICAgICAgICAvLyAxLjIuMC01IGJ1bXBzIHRvIDEuMi4wXG4gICAgICAgIC8vIDEuMi4xIGJ1bXBzIHRvIDEuMy4wXG4gICAgICAgIGlmICh0aGlzLnBhdGNoICE9PSAwIHx8IHRoaXMucHJlcmVsZWFzZS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICB0aGlzLm1pbm9yKytcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnBhdGNoID0gMFxuICAgICAgICB0aGlzLnByZXJlbGVhc2UgPSBbXVxuICAgICAgICBicmVha1xuICAgICAgY2FzZSAncGF0Y2gnOlxuICAgICAgICAvLyBJZiB0aGlzIGlzIG5vdCBhIHByZS1yZWxlYXNlIHZlcnNpb24sIGl0IHdpbGwgaW5jcmVtZW50IHRoZSBwYXRjaC5cbiAgICAgICAgLy8gSWYgaXQgaXMgYSBwcmUtcmVsZWFzZSBpdCB3aWxsIGJ1bXAgdXAgdG8gdGhlIHNhbWUgcGF0Y2ggdmVyc2lvbi5cbiAgICAgICAgLy8gMS4yLjAtNSBwYXRjaGVzIHRvIDEuMi4wXG4gICAgICAgIC8vIDEuMi4wIHBhdGNoZXMgdG8gMS4yLjFcbiAgICAgICAgaWYgKHRoaXMucHJlcmVsZWFzZS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICB0aGlzLnBhdGNoKytcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnByZXJlbGVhc2UgPSBbXVxuICAgICAgICBicmVha1xuICAgICAgLy8gVGhpcyBwcm9iYWJseSBzaG91bGRuJ3QgYmUgdXNlZCBwdWJsaWNseS5cbiAgICAgIC8vIDEuMC4wICdwcmUnIHdvdWxkIGJlY29tZSAxLjAuMC0wIHdoaWNoIGlzIHRoZSB3cm9uZyBkaXJlY3Rpb24uXG4gICAgICBjYXNlICdwcmUnOlxuICAgICAgICBpZiAodGhpcy5wcmVyZWxlYXNlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIHRoaXMucHJlcmVsZWFzZSA9IFswXVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGxldCBpID0gdGhpcy5wcmVyZWxlYXNlLmxlbmd0aFxuICAgICAgICAgIHdoaWxlICgtLWkgPj0gMCkge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnByZXJlbGVhc2VbaV0gPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICAgIHRoaXMucHJlcmVsZWFzZVtpXSsrXG4gICAgICAgICAgICAgIGkgPSAtMlxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoaSA9PT0gLTEpIHtcbiAgICAgICAgICAgIC8vIGRpZG4ndCBpbmNyZW1lbnQgYW55dGhpbmdcbiAgICAgICAgICAgIHRoaXMucHJlcmVsZWFzZS5wdXNoKDApXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChpZGVudGlmaWVyKSB7XG4gICAgICAgICAgLy8gMS4yLjAtYmV0YS4xIGJ1bXBzIHRvIDEuMi4wLWJldGEuMixcbiAgICAgICAgICAvLyAxLjIuMC1iZXRhLmZvb2JseiBvciAxLjIuMC1iZXRhIGJ1bXBzIHRvIDEuMi4wLWJldGEuMFxuICAgICAgICAgIGlmIChjb21wYXJlSWRlbnRpZmllcnModGhpcy5wcmVyZWxlYXNlWzBdLCBpZGVudGlmaWVyKSA9PT0gMCkge1xuICAgICAgICAgICAgaWYgKGlzTmFOKHRoaXMucHJlcmVsZWFzZVsxXSkpIHtcbiAgICAgICAgICAgICAgdGhpcy5wcmVyZWxlYXNlID0gW2lkZW50aWZpZXIsIDBdXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucHJlcmVsZWFzZSA9IFtpZGVudGlmaWVyLCAwXVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBicmVha1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQgaW5jcmVtZW50IGFyZ3VtZW50OiAke3JlbGVhc2V9YClcbiAgICB9XG4gICAgdGhpcy5mb3JtYXQoKVxuICAgIHRoaXMucmF3ID0gdGhpcy52ZXJzaW9uXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFNlbVZlclxuIiwgImNvbnN0IHsgTUFYX0xFTkdUSCB9ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWwvY29uc3RhbnRzJylcbmNvbnN0IHsgcmUsIHQgfSA9IHJlcXVpcmUoJy4uL2ludGVybmFsL3JlJylcbmNvbnN0IFNlbVZlciA9IHJlcXVpcmUoJy4uL2NsYXNzZXMvc2VtdmVyJylcblxuY29uc3QgcGFyc2VPcHRpb25zID0gcmVxdWlyZSgnLi4vaW50ZXJuYWwvcGFyc2Utb3B0aW9ucycpXG5jb25zdCBwYXJzZSA9ICh2ZXJzaW9uLCBvcHRpb25zKSA9PiB7XG4gIG9wdGlvbnMgPSBwYXJzZU9wdGlvbnMob3B0aW9ucylcblxuICBpZiAodmVyc2lvbiBpbnN0YW5jZW9mIFNlbVZlcikge1xuICAgIHJldHVybiB2ZXJzaW9uXG4gIH1cblxuICBpZiAodHlwZW9mIHZlcnNpb24gIT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIGlmICh2ZXJzaW9uLmxlbmd0aCA+IE1BWF9MRU5HVEgpIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgY29uc3QgciA9IG9wdGlvbnMubG9vc2UgPyByZVt0LkxPT1NFXSA6IHJlW3QuRlVMTF1cbiAgaWYgKCFyLnRlc3QodmVyc2lvbikpIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgdHJ5IHtcbiAgICByZXR1cm4gbmV3IFNlbVZlcih2ZXJzaW9uLCBvcHRpb25zKVxuICB9IGNhdGNoIChlcikge1xuICAgIHJldHVybiBudWxsXG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBwYXJzZVxuIiwgImNvbnN0IHBhcnNlID0gcmVxdWlyZSgnLi9wYXJzZScpXG5jb25zdCB2YWxpZCA9ICh2ZXJzaW9uLCBvcHRpb25zKSA9PiB7XG4gIGNvbnN0IHYgPSBwYXJzZSh2ZXJzaW9uLCBvcHRpb25zKVxuICByZXR1cm4gdiA/IHYudmVyc2lvbiA6IG51bGxcbn1cbm1vZHVsZS5leHBvcnRzID0gdmFsaWRcbiIsICJjb25zdCBwYXJzZSA9IHJlcXVpcmUoJy4vcGFyc2UnKVxuY29uc3QgY2xlYW4gPSAodmVyc2lvbiwgb3B0aW9ucykgPT4ge1xuICBjb25zdCBzID0gcGFyc2UodmVyc2lvbi50cmltKCkucmVwbGFjZSgvXls9dl0rLywgJycpLCBvcHRpb25zKVxuICByZXR1cm4gcyA/IHMudmVyc2lvbiA6IG51bGxcbn1cbm1vZHVsZS5leHBvcnRzID0gY2xlYW5cbiIsICJjb25zdCBTZW1WZXIgPSByZXF1aXJlKCcuLi9jbGFzc2VzL3NlbXZlcicpXG5cbmNvbnN0IGluYyA9ICh2ZXJzaW9uLCByZWxlYXNlLCBvcHRpb25zLCBpZGVudGlmaWVyKSA9PiB7XG4gIGlmICh0eXBlb2YgKG9wdGlvbnMpID09PSAnc3RyaW5nJykge1xuICAgIGlkZW50aWZpZXIgPSBvcHRpb25zXG4gICAgb3B0aW9ucyA9IHVuZGVmaW5lZFxuICB9XG5cbiAgdHJ5IHtcbiAgICByZXR1cm4gbmV3IFNlbVZlcihcbiAgICAgIHZlcnNpb24gaW5zdGFuY2VvZiBTZW1WZXIgPyB2ZXJzaW9uLnZlcnNpb24gOiB2ZXJzaW9uLFxuICAgICAgb3B0aW9uc1xuICAgICkuaW5jKHJlbGVhc2UsIGlkZW50aWZpZXIpLnZlcnNpb25cbiAgfSBjYXRjaCAoZXIpIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG59XG5tb2R1bGUuZXhwb3J0cyA9IGluY1xuIiwgImNvbnN0IFNlbVZlciA9IHJlcXVpcmUoJy4uL2NsYXNzZXMvc2VtdmVyJylcbmNvbnN0IGNvbXBhcmUgPSAoYSwgYiwgbG9vc2UpID0+XG4gIG5ldyBTZW1WZXIoYSwgbG9vc2UpLmNvbXBhcmUobmV3IFNlbVZlcihiLCBsb29zZSkpXG5cbm1vZHVsZS5leHBvcnRzID0gY29tcGFyZVxuIiwgImNvbnN0IGNvbXBhcmUgPSByZXF1aXJlKCcuL2NvbXBhcmUnKVxuY29uc3QgZXEgPSAoYSwgYiwgbG9vc2UpID0+IGNvbXBhcmUoYSwgYiwgbG9vc2UpID09PSAwXG5tb2R1bGUuZXhwb3J0cyA9IGVxXG4iLCAiY29uc3QgcGFyc2UgPSByZXF1aXJlKCcuL3BhcnNlJylcbmNvbnN0IGVxID0gcmVxdWlyZSgnLi9lcScpXG5cbmNvbnN0IGRpZmYgPSAodmVyc2lvbjEsIHZlcnNpb24yKSA9PiB7XG4gIGlmIChlcSh2ZXJzaW9uMSwgdmVyc2lvbjIpKSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfSBlbHNlIHtcbiAgICBjb25zdCB2MSA9IHBhcnNlKHZlcnNpb24xKVxuICAgIGNvbnN0IHYyID0gcGFyc2UodmVyc2lvbjIpXG4gICAgY29uc3QgaGFzUHJlID0gdjEucHJlcmVsZWFzZS5sZW5ndGggfHwgdjIucHJlcmVsZWFzZS5sZW5ndGhcbiAgICBjb25zdCBwcmVmaXggPSBoYXNQcmUgPyAncHJlJyA6ICcnXG4gICAgY29uc3QgZGVmYXVsdFJlc3VsdCA9IGhhc1ByZSA/ICdwcmVyZWxlYXNlJyA6ICcnXG4gICAgZm9yIChjb25zdCBrZXkgaW4gdjEpIHtcbiAgICAgIGlmIChrZXkgPT09ICdtYWpvcicgfHwga2V5ID09PSAnbWlub3InIHx8IGtleSA9PT0gJ3BhdGNoJykge1xuICAgICAgICBpZiAodjFba2V5XSAhPT0gdjJba2V5XSkge1xuICAgICAgICAgIHJldHVybiBwcmVmaXggKyBrZXlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZGVmYXVsdFJlc3VsdCAvLyBtYXkgYmUgdW5kZWZpbmVkXG4gIH1cbn1cbm1vZHVsZS5leHBvcnRzID0gZGlmZlxuIiwgImNvbnN0IFNlbVZlciA9IHJlcXVpcmUoJy4uL2NsYXNzZXMvc2VtdmVyJylcbmNvbnN0IG1ham9yID0gKGEsIGxvb3NlKSA9PiBuZXcgU2VtVmVyKGEsIGxvb3NlKS5tYWpvclxubW9kdWxlLmV4cG9ydHMgPSBtYWpvclxuIiwgImNvbnN0IFNlbVZlciA9IHJlcXVpcmUoJy4uL2NsYXNzZXMvc2VtdmVyJylcbmNvbnN0IG1pbm9yID0gKGEsIGxvb3NlKSA9PiBuZXcgU2VtVmVyKGEsIGxvb3NlKS5taW5vclxubW9kdWxlLmV4cG9ydHMgPSBtaW5vclxuIiwgImNvbnN0IFNlbVZlciA9IHJlcXVpcmUoJy4uL2NsYXNzZXMvc2VtdmVyJylcbmNvbnN0IHBhdGNoID0gKGEsIGxvb3NlKSA9PiBuZXcgU2VtVmVyKGEsIGxvb3NlKS5wYXRjaFxubW9kdWxlLmV4cG9ydHMgPSBwYXRjaFxuIiwgImNvbnN0IHBhcnNlID0gcmVxdWlyZSgnLi9wYXJzZScpXG5jb25zdCBwcmVyZWxlYXNlID0gKHZlcnNpb24sIG9wdGlvbnMpID0+IHtcbiAgY29uc3QgcGFyc2VkID0gcGFyc2UodmVyc2lvbiwgb3B0aW9ucylcbiAgcmV0dXJuIChwYXJzZWQgJiYgcGFyc2VkLnByZXJlbGVhc2UubGVuZ3RoKSA/IHBhcnNlZC5wcmVyZWxlYXNlIDogbnVsbFxufVxubW9kdWxlLmV4cG9ydHMgPSBwcmVyZWxlYXNlXG4iLCAiY29uc3QgY29tcGFyZSA9IHJlcXVpcmUoJy4vY29tcGFyZScpXG5jb25zdCByY29tcGFyZSA9IChhLCBiLCBsb29zZSkgPT4gY29tcGFyZShiLCBhLCBsb29zZSlcbm1vZHVsZS5leHBvcnRzID0gcmNvbXBhcmVcbiIsICJjb25zdCBjb21wYXJlID0gcmVxdWlyZSgnLi9jb21wYXJlJylcbmNvbnN0IGNvbXBhcmVMb29zZSA9IChhLCBiKSA9PiBjb21wYXJlKGEsIGIsIHRydWUpXG5tb2R1bGUuZXhwb3J0cyA9IGNvbXBhcmVMb29zZVxuIiwgImNvbnN0IFNlbVZlciA9IHJlcXVpcmUoJy4uL2NsYXNzZXMvc2VtdmVyJylcbmNvbnN0IGNvbXBhcmVCdWlsZCA9IChhLCBiLCBsb29zZSkgPT4ge1xuICBjb25zdCB2ZXJzaW9uQSA9IG5ldyBTZW1WZXIoYSwgbG9vc2UpXG4gIGNvbnN0IHZlcnNpb25CID0gbmV3IFNlbVZlcihiLCBsb29zZSlcbiAgcmV0dXJuIHZlcnNpb25BLmNvbXBhcmUodmVyc2lvbkIpIHx8IHZlcnNpb25BLmNvbXBhcmVCdWlsZCh2ZXJzaW9uQilcbn1cbm1vZHVsZS5leHBvcnRzID0gY29tcGFyZUJ1aWxkXG4iLCAiY29uc3QgY29tcGFyZUJ1aWxkID0gcmVxdWlyZSgnLi9jb21wYXJlLWJ1aWxkJylcbmNvbnN0IHNvcnQgPSAobGlzdCwgbG9vc2UpID0+IGxpc3Quc29ydCgoYSwgYikgPT4gY29tcGFyZUJ1aWxkKGEsIGIsIGxvb3NlKSlcbm1vZHVsZS5leHBvcnRzID0gc29ydFxuIiwgImNvbnN0IGNvbXBhcmVCdWlsZCA9IHJlcXVpcmUoJy4vY29tcGFyZS1idWlsZCcpXG5jb25zdCByc29ydCA9IChsaXN0LCBsb29zZSkgPT4gbGlzdC5zb3J0KChhLCBiKSA9PiBjb21wYXJlQnVpbGQoYiwgYSwgbG9vc2UpKVxubW9kdWxlLmV4cG9ydHMgPSByc29ydFxuIiwgImNvbnN0IGNvbXBhcmUgPSByZXF1aXJlKCcuL2NvbXBhcmUnKVxuY29uc3QgZ3QgPSAoYSwgYiwgbG9vc2UpID0+IGNvbXBhcmUoYSwgYiwgbG9vc2UpID4gMFxubW9kdWxlLmV4cG9ydHMgPSBndFxuIiwgImNvbnN0IGNvbXBhcmUgPSByZXF1aXJlKCcuL2NvbXBhcmUnKVxuY29uc3QgbHQgPSAoYSwgYiwgbG9vc2UpID0+IGNvbXBhcmUoYSwgYiwgbG9vc2UpIDwgMFxubW9kdWxlLmV4cG9ydHMgPSBsdFxuIiwgImNvbnN0IGNvbXBhcmUgPSByZXF1aXJlKCcuL2NvbXBhcmUnKVxuY29uc3QgbmVxID0gKGEsIGIsIGxvb3NlKSA9PiBjb21wYXJlKGEsIGIsIGxvb3NlKSAhPT0gMFxubW9kdWxlLmV4cG9ydHMgPSBuZXFcbiIsICJjb25zdCBjb21wYXJlID0gcmVxdWlyZSgnLi9jb21wYXJlJylcbmNvbnN0IGd0ZSA9IChhLCBiLCBsb29zZSkgPT4gY29tcGFyZShhLCBiLCBsb29zZSkgPj0gMFxubW9kdWxlLmV4cG9ydHMgPSBndGVcbiIsICJjb25zdCBjb21wYXJlID0gcmVxdWlyZSgnLi9jb21wYXJlJylcbmNvbnN0IGx0ZSA9IChhLCBiLCBsb29zZSkgPT4gY29tcGFyZShhLCBiLCBsb29zZSkgPD0gMFxubW9kdWxlLmV4cG9ydHMgPSBsdGVcbiIsICJjb25zdCBlcSA9IHJlcXVpcmUoJy4vZXEnKVxuY29uc3QgbmVxID0gcmVxdWlyZSgnLi9uZXEnKVxuY29uc3QgZ3QgPSByZXF1aXJlKCcuL2d0JylcbmNvbnN0IGd0ZSA9IHJlcXVpcmUoJy4vZ3RlJylcbmNvbnN0IGx0ID0gcmVxdWlyZSgnLi9sdCcpXG5jb25zdCBsdGUgPSByZXF1aXJlKCcuL2x0ZScpXG5cbmNvbnN0IGNtcCA9IChhLCBvcCwgYiwgbG9vc2UpID0+IHtcbiAgc3dpdGNoIChvcCkge1xuICAgIGNhc2UgJz09PSc6XG4gICAgICBpZiAodHlwZW9mIGEgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIGEgPSBhLnZlcnNpb25cbiAgICAgIH1cbiAgICAgIGlmICh0eXBlb2YgYiA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgYiA9IGIudmVyc2lvblxuICAgICAgfVxuICAgICAgcmV0dXJuIGEgPT09IGJcblxuICAgIGNhc2UgJyE9PSc6XG4gICAgICBpZiAodHlwZW9mIGEgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIGEgPSBhLnZlcnNpb25cbiAgICAgIH1cbiAgICAgIGlmICh0eXBlb2YgYiA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgYiA9IGIudmVyc2lvblxuICAgICAgfVxuICAgICAgcmV0dXJuIGEgIT09IGJcblxuICAgIGNhc2UgJyc6XG4gICAgY2FzZSAnPSc6XG4gICAgY2FzZSAnPT0nOlxuICAgICAgcmV0dXJuIGVxKGEsIGIsIGxvb3NlKVxuXG4gICAgY2FzZSAnIT0nOlxuICAgICAgcmV0dXJuIG5lcShhLCBiLCBsb29zZSlcblxuICAgIGNhc2UgJz4nOlxuICAgICAgcmV0dXJuIGd0KGEsIGIsIGxvb3NlKVxuXG4gICAgY2FzZSAnPj0nOlxuICAgICAgcmV0dXJuIGd0ZShhLCBiLCBsb29zZSlcblxuICAgIGNhc2UgJzwnOlxuICAgICAgcmV0dXJuIGx0KGEsIGIsIGxvb3NlKVxuXG4gICAgY2FzZSAnPD0nOlxuICAgICAgcmV0dXJuIGx0ZShhLCBiLCBsb29zZSlcblxuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBJbnZhbGlkIG9wZXJhdG9yOiAke29wfWApXG4gIH1cbn1cbm1vZHVsZS5leHBvcnRzID0gY21wXG4iLCAiY29uc3QgU2VtVmVyID0gcmVxdWlyZSgnLi4vY2xhc3Nlcy9zZW12ZXInKVxuY29uc3QgcGFyc2UgPSByZXF1aXJlKCcuL3BhcnNlJylcbmNvbnN0IHsgcmUsIHQgfSA9IHJlcXVpcmUoJy4uL2ludGVybmFsL3JlJylcblxuY29uc3QgY29lcmNlID0gKHZlcnNpb24sIG9wdGlvbnMpID0+IHtcbiAgaWYgKHZlcnNpb24gaW5zdGFuY2VvZiBTZW1WZXIpIHtcbiAgICByZXR1cm4gdmVyc2lvblxuICB9XG5cbiAgaWYgKHR5cGVvZiB2ZXJzaW9uID09PSAnbnVtYmVyJykge1xuICAgIHZlcnNpb24gPSBTdHJpbmcodmVyc2lvbilcbiAgfVxuXG4gIGlmICh0eXBlb2YgdmVyc2lvbiAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge31cblxuICBsZXQgbWF0Y2ggPSBudWxsXG4gIGlmICghb3B0aW9ucy5ydGwpIHtcbiAgICBtYXRjaCA9IHZlcnNpb24ubWF0Y2gocmVbdC5DT0VSQ0VdKVxuICB9IGVsc2Uge1xuICAgIC8vIEZpbmQgdGhlIHJpZ2h0LW1vc3QgY29lcmNpYmxlIHN0cmluZyB0aGF0IGRvZXMgbm90IHNoYXJlXG4gICAgLy8gYSB0ZXJtaW51cyB3aXRoIGEgbW9yZSBsZWZ0LXdhcmQgY29lcmNpYmxlIHN0cmluZy5cbiAgICAvLyBFZywgJzEuMi4zLjQnIHdhbnRzIHRvIGNvZXJjZSAnMi4zLjQnLCBub3QgJzMuNCcgb3IgJzQnXG4gICAgLy9cbiAgICAvLyBXYWxrIHRocm91Z2ggdGhlIHN0cmluZyBjaGVja2luZyB3aXRoIGEgL2cgcmVnZXhwXG4gICAgLy8gTWFudWFsbHkgc2V0IHRoZSBpbmRleCBzbyBhcyB0byBwaWNrIHVwIG92ZXJsYXBwaW5nIG1hdGNoZXMuXG4gICAgLy8gU3RvcCB3aGVuIHdlIGdldCBhIG1hdGNoIHRoYXQgZW5kcyBhdCB0aGUgc3RyaW5nIGVuZCwgc2luY2Ugbm9cbiAgICAvLyBjb2VyY2libGUgc3RyaW5nIGNhbiBiZSBtb3JlIHJpZ2h0LXdhcmQgd2l0aG91dCB0aGUgc2FtZSB0ZXJtaW51cy5cbiAgICBsZXQgbmV4dFxuICAgIHdoaWxlICgobmV4dCA9IHJlW3QuQ09FUkNFUlRMXS5leGVjKHZlcnNpb24pKSAmJlxuICAgICAgICAoIW1hdGNoIHx8IG1hdGNoLmluZGV4ICsgbWF0Y2hbMF0ubGVuZ3RoICE9PSB2ZXJzaW9uLmxlbmd0aClcbiAgICApIHtcbiAgICAgIGlmICghbWF0Y2ggfHxcbiAgICAgICAgICAgIG5leHQuaW5kZXggKyBuZXh0WzBdLmxlbmd0aCAhPT0gbWF0Y2guaW5kZXggKyBtYXRjaFswXS5sZW5ndGgpIHtcbiAgICAgICAgbWF0Y2ggPSBuZXh0XG4gICAgICB9XG4gICAgICByZVt0LkNPRVJDRVJUTF0ubGFzdEluZGV4ID0gbmV4dC5pbmRleCArIG5leHRbMV0ubGVuZ3RoICsgbmV4dFsyXS5sZW5ndGhcbiAgICB9XG4gICAgLy8gbGVhdmUgaXQgaW4gYSBjbGVhbiBzdGF0ZVxuICAgIHJlW3QuQ09FUkNFUlRMXS5sYXN0SW5kZXggPSAtMVxuICB9XG5cbiAgaWYgKG1hdGNoID09PSBudWxsKSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIHJldHVybiBwYXJzZShgJHttYXRjaFsyXX0uJHttYXRjaFszXSB8fCAnMCd9LiR7bWF0Y2hbNF0gfHwgJzAnfWAsIG9wdGlvbnMpXG59XG5tb2R1bGUuZXhwb3J0cyA9IGNvZXJjZVxuIiwgIid1c2Ugc3RyaWN0J1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoWWFsbGlzdCkge1xuICBZYWxsaXN0LnByb3RvdHlwZVtTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24qICgpIHtcbiAgICBmb3IgKGxldCB3YWxrZXIgPSB0aGlzLmhlYWQ7IHdhbGtlcjsgd2Fsa2VyID0gd2Fsa2VyLm5leHQpIHtcbiAgICAgIHlpZWxkIHdhbGtlci52YWx1ZVxuICAgIH1cbiAgfVxufVxuIiwgIid1c2Ugc3RyaWN0J1xubW9kdWxlLmV4cG9ydHMgPSBZYWxsaXN0XG5cbllhbGxpc3QuTm9kZSA9IE5vZGVcbllhbGxpc3QuY3JlYXRlID0gWWFsbGlzdFxuXG5mdW5jdGlvbiBZYWxsaXN0IChsaXN0KSB7XG4gIHZhciBzZWxmID0gdGhpc1xuICBpZiAoIShzZWxmIGluc3RhbmNlb2YgWWFsbGlzdCkpIHtcbiAgICBzZWxmID0gbmV3IFlhbGxpc3QoKVxuICB9XG5cbiAgc2VsZi50YWlsID0gbnVsbFxuICBzZWxmLmhlYWQgPSBudWxsXG4gIHNlbGYubGVuZ3RoID0gMFxuXG4gIGlmIChsaXN0ICYmIHR5cGVvZiBsaXN0LmZvckVhY2ggPT09ICdmdW5jdGlvbicpIHtcbiAgICBsaXN0LmZvckVhY2goZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgIHNlbGYucHVzaChpdGVtKVxuICAgIH0pXG4gIH0gZWxzZSBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDApIHtcbiAgICBmb3IgKHZhciBpID0gMCwgbCA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgIHNlbGYucHVzaChhcmd1bWVudHNbaV0pXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHNlbGZcbn1cblxuWWFsbGlzdC5wcm90b3R5cGUucmVtb3ZlTm9kZSA9IGZ1bmN0aW9uIChub2RlKSB7XG4gIGlmIChub2RlLmxpc3QgIT09IHRoaXMpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3JlbW92aW5nIG5vZGUgd2hpY2ggZG9lcyBub3QgYmVsb25nIHRvIHRoaXMgbGlzdCcpXG4gIH1cblxuICB2YXIgbmV4dCA9IG5vZGUubmV4dFxuICB2YXIgcHJldiA9IG5vZGUucHJldlxuXG4gIGlmIChuZXh0KSB7XG4gICAgbmV4dC5wcmV2ID0gcHJldlxuICB9XG5cbiAgaWYgKHByZXYpIHtcbiAgICBwcmV2Lm5leHQgPSBuZXh0XG4gIH1cblxuICBpZiAobm9kZSA9PT0gdGhpcy5oZWFkKSB7XG4gICAgdGhpcy5oZWFkID0gbmV4dFxuICB9XG4gIGlmIChub2RlID09PSB0aGlzLnRhaWwpIHtcbiAgICB0aGlzLnRhaWwgPSBwcmV2XG4gIH1cblxuICBub2RlLmxpc3QubGVuZ3RoLS1cbiAgbm9kZS5uZXh0ID0gbnVsbFxuICBub2RlLnByZXYgPSBudWxsXG4gIG5vZGUubGlzdCA9IG51bGxcblxuICByZXR1cm4gbmV4dFxufVxuXG5ZYWxsaXN0LnByb3RvdHlwZS51bnNoaWZ0Tm9kZSA9IGZ1bmN0aW9uIChub2RlKSB7XG4gIGlmIChub2RlID09PSB0aGlzLmhlYWQpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIGlmIChub2RlLmxpc3QpIHtcbiAgICBub2RlLmxpc3QucmVtb3ZlTm9kZShub2RlKVxuICB9XG5cbiAgdmFyIGhlYWQgPSB0aGlzLmhlYWRcbiAgbm9kZS5saXN0ID0gdGhpc1xuICBub2RlLm5leHQgPSBoZWFkXG4gIGlmIChoZWFkKSB7XG4gICAgaGVhZC5wcmV2ID0gbm9kZVxuICB9XG5cbiAgdGhpcy5oZWFkID0gbm9kZVxuICBpZiAoIXRoaXMudGFpbCkge1xuICAgIHRoaXMudGFpbCA9IG5vZGVcbiAgfVxuICB0aGlzLmxlbmd0aCsrXG59XG5cbllhbGxpc3QucHJvdG90eXBlLnB1c2hOb2RlID0gZnVuY3Rpb24gKG5vZGUpIHtcbiAgaWYgKG5vZGUgPT09IHRoaXMudGFpbCkge1xuICAgIHJldHVyblxuICB9XG5cbiAgaWYgKG5vZGUubGlzdCkge1xuICAgIG5vZGUubGlzdC5yZW1vdmVOb2RlKG5vZGUpXG4gIH1cblxuICB2YXIgdGFpbCA9IHRoaXMudGFpbFxuICBub2RlLmxpc3QgPSB0aGlzXG4gIG5vZGUucHJldiA9IHRhaWxcbiAgaWYgKHRhaWwpIHtcbiAgICB0YWlsLm5leHQgPSBub2RlXG4gIH1cblxuICB0aGlzLnRhaWwgPSBub2RlXG4gIGlmICghdGhpcy5oZWFkKSB7XG4gICAgdGhpcy5oZWFkID0gbm9kZVxuICB9XG4gIHRoaXMubGVuZ3RoKytcbn1cblxuWWFsbGlzdC5wcm90b3R5cGUucHVzaCA9IGZ1bmN0aW9uICgpIHtcbiAgZm9yICh2YXIgaSA9IDAsIGwgPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgcHVzaCh0aGlzLCBhcmd1bWVudHNbaV0pXG4gIH1cbiAgcmV0dXJuIHRoaXMubGVuZ3RoXG59XG5cbllhbGxpc3QucHJvdG90eXBlLnVuc2hpZnQgPSBmdW5jdGlvbiAoKSB7XG4gIGZvciAodmFyIGkgPSAwLCBsID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIHVuc2hpZnQodGhpcywgYXJndW1lbnRzW2ldKVxuICB9XG4gIHJldHVybiB0aGlzLmxlbmd0aFxufVxuXG5ZYWxsaXN0LnByb3RvdHlwZS5wb3AgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICghdGhpcy50YWlsKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9XG5cbiAgdmFyIHJlcyA9IHRoaXMudGFpbC52YWx1ZVxuICB0aGlzLnRhaWwgPSB0aGlzLnRhaWwucHJldlxuICBpZiAodGhpcy50YWlsKSB7XG4gICAgdGhpcy50YWlsLm5leHQgPSBudWxsXG4gIH0gZWxzZSB7XG4gICAgdGhpcy5oZWFkID0gbnVsbFxuICB9XG4gIHRoaXMubGVuZ3RoLS1cbiAgcmV0dXJuIHJlc1xufVxuXG5ZYWxsaXN0LnByb3RvdHlwZS5zaGlmdCA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKCF0aGlzLmhlYWQpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkXG4gIH1cblxuICB2YXIgcmVzID0gdGhpcy5oZWFkLnZhbHVlXG4gIHRoaXMuaGVhZCA9IHRoaXMuaGVhZC5uZXh0XG4gIGlmICh0aGlzLmhlYWQpIHtcbiAgICB0aGlzLmhlYWQucHJldiA9IG51bGxcbiAgfSBlbHNlIHtcbiAgICB0aGlzLnRhaWwgPSBudWxsXG4gIH1cbiAgdGhpcy5sZW5ndGgtLVxuICByZXR1cm4gcmVzXG59XG5cbllhbGxpc3QucHJvdG90eXBlLmZvckVhY2ggPSBmdW5jdGlvbiAoZm4sIHRoaXNwKSB7XG4gIHRoaXNwID0gdGhpc3AgfHwgdGhpc1xuICBmb3IgKHZhciB3YWxrZXIgPSB0aGlzLmhlYWQsIGkgPSAwOyB3YWxrZXIgIT09IG51bGw7IGkrKykge1xuICAgIGZuLmNhbGwodGhpc3AsIHdhbGtlci52YWx1ZSwgaSwgdGhpcylcbiAgICB3YWxrZXIgPSB3YWxrZXIubmV4dFxuICB9XG59XG5cbllhbGxpc3QucHJvdG90eXBlLmZvckVhY2hSZXZlcnNlID0gZnVuY3Rpb24gKGZuLCB0aGlzcCkge1xuICB0aGlzcCA9IHRoaXNwIHx8IHRoaXNcbiAgZm9yICh2YXIgd2Fsa2VyID0gdGhpcy50YWlsLCBpID0gdGhpcy5sZW5ndGggLSAxOyB3YWxrZXIgIT09IG51bGw7IGktLSkge1xuICAgIGZuLmNhbGwodGhpc3AsIHdhbGtlci52YWx1ZSwgaSwgdGhpcylcbiAgICB3YWxrZXIgPSB3YWxrZXIucHJldlxuICB9XG59XG5cbllhbGxpc3QucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uIChuKSB7XG4gIGZvciAodmFyIGkgPSAwLCB3YWxrZXIgPSB0aGlzLmhlYWQ7IHdhbGtlciAhPT0gbnVsbCAmJiBpIDwgbjsgaSsrKSB7XG4gICAgLy8gYWJvcnQgb3V0IG9mIHRoZSBsaXN0IGVhcmx5IGlmIHdlIGhpdCBhIGN5Y2xlXG4gICAgd2Fsa2VyID0gd2Fsa2VyLm5leHRcbiAgfVxuICBpZiAoaSA9PT0gbiAmJiB3YWxrZXIgIT09IG51bGwpIHtcbiAgICByZXR1cm4gd2Fsa2VyLnZhbHVlXG4gIH1cbn1cblxuWWFsbGlzdC5wcm90b3R5cGUuZ2V0UmV2ZXJzZSA9IGZ1bmN0aW9uIChuKSB7XG4gIGZvciAodmFyIGkgPSAwLCB3YWxrZXIgPSB0aGlzLnRhaWw7IHdhbGtlciAhPT0gbnVsbCAmJiBpIDwgbjsgaSsrKSB7XG4gICAgLy8gYWJvcnQgb3V0IG9mIHRoZSBsaXN0IGVhcmx5IGlmIHdlIGhpdCBhIGN5Y2xlXG4gICAgd2Fsa2VyID0gd2Fsa2VyLnByZXZcbiAgfVxuICBpZiAoaSA9PT0gbiAmJiB3YWxrZXIgIT09IG51bGwpIHtcbiAgICByZXR1cm4gd2Fsa2VyLnZhbHVlXG4gIH1cbn1cblxuWWFsbGlzdC5wcm90b3R5cGUubWFwID0gZnVuY3Rpb24gKGZuLCB0aGlzcCkge1xuICB0aGlzcCA9IHRoaXNwIHx8IHRoaXNcbiAgdmFyIHJlcyA9IG5ldyBZYWxsaXN0KClcbiAgZm9yICh2YXIgd2Fsa2VyID0gdGhpcy5oZWFkOyB3YWxrZXIgIT09IG51bGw7KSB7XG4gICAgcmVzLnB1c2goZm4uY2FsbCh0aGlzcCwgd2Fsa2VyLnZhbHVlLCB0aGlzKSlcbiAgICB3YWxrZXIgPSB3YWxrZXIubmV4dFxuICB9XG4gIHJldHVybiByZXNcbn1cblxuWWFsbGlzdC5wcm90b3R5cGUubWFwUmV2ZXJzZSA9IGZ1bmN0aW9uIChmbiwgdGhpc3ApIHtcbiAgdGhpc3AgPSB0aGlzcCB8fCB0aGlzXG4gIHZhciByZXMgPSBuZXcgWWFsbGlzdCgpXG4gIGZvciAodmFyIHdhbGtlciA9IHRoaXMudGFpbDsgd2Fsa2VyICE9PSBudWxsOykge1xuICAgIHJlcy5wdXNoKGZuLmNhbGwodGhpc3AsIHdhbGtlci52YWx1ZSwgdGhpcykpXG4gICAgd2Fsa2VyID0gd2Fsa2VyLnByZXZcbiAgfVxuICByZXR1cm4gcmVzXG59XG5cbllhbGxpc3QucHJvdG90eXBlLnJlZHVjZSA9IGZ1bmN0aW9uIChmbiwgaW5pdGlhbCkge1xuICB2YXIgYWNjXG4gIHZhciB3YWxrZXIgPSB0aGlzLmhlYWRcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPiAxKSB7XG4gICAgYWNjID0gaW5pdGlhbFxuICB9IGVsc2UgaWYgKHRoaXMuaGVhZCkge1xuICAgIHdhbGtlciA9IHRoaXMuaGVhZC5uZXh0XG4gICAgYWNjID0gdGhpcy5oZWFkLnZhbHVlXG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignUmVkdWNlIG9mIGVtcHR5IGxpc3Qgd2l0aCBubyBpbml0aWFsIHZhbHVlJylcbiAgfVxuXG4gIGZvciAodmFyIGkgPSAwOyB3YWxrZXIgIT09IG51bGw7IGkrKykge1xuICAgIGFjYyA9IGZuKGFjYywgd2Fsa2VyLnZhbHVlLCBpKVxuICAgIHdhbGtlciA9IHdhbGtlci5uZXh0XG4gIH1cblxuICByZXR1cm4gYWNjXG59XG5cbllhbGxpc3QucHJvdG90eXBlLnJlZHVjZVJldmVyc2UgPSBmdW5jdGlvbiAoZm4sIGluaXRpYWwpIHtcbiAgdmFyIGFjY1xuICB2YXIgd2Fsa2VyID0gdGhpcy50YWlsXG4gIGlmIChhcmd1bWVudHMubGVuZ3RoID4gMSkge1xuICAgIGFjYyA9IGluaXRpYWxcbiAgfSBlbHNlIGlmICh0aGlzLnRhaWwpIHtcbiAgICB3YWxrZXIgPSB0aGlzLnRhaWwucHJldlxuICAgIGFjYyA9IHRoaXMudGFpbC52YWx1ZVxuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1JlZHVjZSBvZiBlbXB0eSBsaXN0IHdpdGggbm8gaW5pdGlhbCB2YWx1ZScpXG4gIH1cblxuICBmb3IgKHZhciBpID0gdGhpcy5sZW5ndGggLSAxOyB3YWxrZXIgIT09IG51bGw7IGktLSkge1xuICAgIGFjYyA9IGZuKGFjYywgd2Fsa2VyLnZhbHVlLCBpKVxuICAgIHdhbGtlciA9IHdhbGtlci5wcmV2XG4gIH1cblxuICByZXR1cm4gYWNjXG59XG5cbllhbGxpc3QucHJvdG90eXBlLnRvQXJyYXkgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBhcnIgPSBuZXcgQXJyYXkodGhpcy5sZW5ndGgpXG4gIGZvciAodmFyIGkgPSAwLCB3YWxrZXIgPSB0aGlzLmhlYWQ7IHdhbGtlciAhPT0gbnVsbDsgaSsrKSB7XG4gICAgYXJyW2ldID0gd2Fsa2VyLnZhbHVlXG4gICAgd2Fsa2VyID0gd2Fsa2VyLm5leHRcbiAgfVxuICByZXR1cm4gYXJyXG59XG5cbllhbGxpc3QucHJvdG90eXBlLnRvQXJyYXlSZXZlcnNlID0gZnVuY3Rpb24gKCkge1xuICB2YXIgYXJyID0gbmV3IEFycmF5KHRoaXMubGVuZ3RoKVxuICBmb3IgKHZhciBpID0gMCwgd2Fsa2VyID0gdGhpcy50YWlsOyB3YWxrZXIgIT09IG51bGw7IGkrKykge1xuICAgIGFycltpXSA9IHdhbGtlci52YWx1ZVxuICAgIHdhbGtlciA9IHdhbGtlci5wcmV2XG4gIH1cbiAgcmV0dXJuIGFyclxufVxuXG5ZYWxsaXN0LnByb3RvdHlwZS5zbGljZSA9IGZ1bmN0aW9uIChmcm9tLCB0bykge1xuICB0byA9IHRvIHx8IHRoaXMubGVuZ3RoXG4gIGlmICh0byA8IDApIHtcbiAgICB0byArPSB0aGlzLmxlbmd0aFxuICB9XG4gIGZyb20gPSBmcm9tIHx8IDBcbiAgaWYgKGZyb20gPCAwKSB7XG4gICAgZnJvbSArPSB0aGlzLmxlbmd0aFxuICB9XG4gIHZhciByZXQgPSBuZXcgWWFsbGlzdCgpXG4gIGlmICh0byA8IGZyb20gfHwgdG8gPCAwKSB7XG4gICAgcmV0dXJuIHJldFxuICB9XG4gIGlmIChmcm9tIDwgMCkge1xuICAgIGZyb20gPSAwXG4gIH1cbiAgaWYgKHRvID4gdGhpcy5sZW5ndGgpIHtcbiAgICB0byA9IHRoaXMubGVuZ3RoXG4gIH1cbiAgZm9yICh2YXIgaSA9IDAsIHdhbGtlciA9IHRoaXMuaGVhZDsgd2Fsa2VyICE9PSBudWxsICYmIGkgPCBmcm9tOyBpKyspIHtcbiAgICB3YWxrZXIgPSB3YWxrZXIubmV4dFxuICB9XG4gIGZvciAoOyB3YWxrZXIgIT09IG51bGwgJiYgaSA8IHRvOyBpKyssIHdhbGtlciA9IHdhbGtlci5uZXh0KSB7XG4gICAgcmV0LnB1c2god2Fsa2VyLnZhbHVlKVxuICB9XG4gIHJldHVybiByZXRcbn1cblxuWWFsbGlzdC5wcm90b3R5cGUuc2xpY2VSZXZlcnNlID0gZnVuY3Rpb24gKGZyb20sIHRvKSB7XG4gIHRvID0gdG8gfHwgdGhpcy5sZW5ndGhcbiAgaWYgKHRvIDwgMCkge1xuICAgIHRvICs9IHRoaXMubGVuZ3RoXG4gIH1cbiAgZnJvbSA9IGZyb20gfHwgMFxuICBpZiAoZnJvbSA8IDApIHtcbiAgICBmcm9tICs9IHRoaXMubGVuZ3RoXG4gIH1cbiAgdmFyIHJldCA9IG5ldyBZYWxsaXN0KClcbiAgaWYgKHRvIDwgZnJvbSB8fCB0byA8IDApIHtcbiAgICByZXR1cm4gcmV0XG4gIH1cbiAgaWYgKGZyb20gPCAwKSB7XG4gICAgZnJvbSA9IDBcbiAgfVxuICBpZiAodG8gPiB0aGlzLmxlbmd0aCkge1xuICAgIHRvID0gdGhpcy5sZW5ndGhcbiAgfVxuICBmb3IgKHZhciBpID0gdGhpcy5sZW5ndGgsIHdhbGtlciA9IHRoaXMudGFpbDsgd2Fsa2VyICE9PSBudWxsICYmIGkgPiB0bzsgaS0tKSB7XG4gICAgd2Fsa2VyID0gd2Fsa2VyLnByZXZcbiAgfVxuICBmb3IgKDsgd2Fsa2VyICE9PSBudWxsICYmIGkgPiBmcm9tOyBpLS0sIHdhbGtlciA9IHdhbGtlci5wcmV2KSB7XG4gICAgcmV0LnB1c2god2Fsa2VyLnZhbHVlKVxuICB9XG4gIHJldHVybiByZXRcbn1cblxuWWFsbGlzdC5wcm90b3R5cGUuc3BsaWNlID0gZnVuY3Rpb24gKHN0YXJ0LCBkZWxldGVDb3VudCwgLi4ubm9kZXMpIHtcbiAgaWYgKHN0YXJ0ID4gdGhpcy5sZW5ndGgpIHtcbiAgICBzdGFydCA9IHRoaXMubGVuZ3RoIC0gMVxuICB9XG4gIGlmIChzdGFydCA8IDApIHtcbiAgICBzdGFydCA9IHRoaXMubGVuZ3RoICsgc3RhcnQ7XG4gIH1cblxuICBmb3IgKHZhciBpID0gMCwgd2Fsa2VyID0gdGhpcy5oZWFkOyB3YWxrZXIgIT09IG51bGwgJiYgaSA8IHN0YXJ0OyBpKyspIHtcbiAgICB3YWxrZXIgPSB3YWxrZXIubmV4dFxuICB9XG5cbiAgdmFyIHJldCA9IFtdXG4gIGZvciAodmFyIGkgPSAwOyB3YWxrZXIgJiYgaSA8IGRlbGV0ZUNvdW50OyBpKyspIHtcbiAgICByZXQucHVzaCh3YWxrZXIudmFsdWUpXG4gICAgd2Fsa2VyID0gdGhpcy5yZW1vdmVOb2RlKHdhbGtlcilcbiAgfVxuICBpZiAod2Fsa2VyID09PSBudWxsKSB7XG4gICAgd2Fsa2VyID0gdGhpcy50YWlsXG4gIH1cblxuICBpZiAod2Fsa2VyICE9PSB0aGlzLmhlYWQgJiYgd2Fsa2VyICE9PSB0aGlzLnRhaWwpIHtcbiAgICB3YWxrZXIgPSB3YWxrZXIucHJldlxuICB9XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2Rlcy5sZW5ndGg7IGkrKykge1xuICAgIHdhbGtlciA9IGluc2VydCh0aGlzLCB3YWxrZXIsIG5vZGVzW2ldKVxuICB9XG4gIHJldHVybiByZXQ7XG59XG5cbllhbGxpc3QucHJvdG90eXBlLnJldmVyc2UgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBoZWFkID0gdGhpcy5oZWFkXG4gIHZhciB0YWlsID0gdGhpcy50YWlsXG4gIGZvciAodmFyIHdhbGtlciA9IGhlYWQ7IHdhbGtlciAhPT0gbnVsbDsgd2Fsa2VyID0gd2Fsa2VyLnByZXYpIHtcbiAgICB2YXIgcCA9IHdhbGtlci5wcmV2XG4gICAgd2Fsa2VyLnByZXYgPSB3YWxrZXIubmV4dFxuICAgIHdhbGtlci5uZXh0ID0gcFxuICB9XG4gIHRoaXMuaGVhZCA9IHRhaWxcbiAgdGhpcy50YWlsID0gaGVhZFxuICByZXR1cm4gdGhpc1xufVxuXG5mdW5jdGlvbiBpbnNlcnQgKHNlbGYsIG5vZGUsIHZhbHVlKSB7XG4gIHZhciBpbnNlcnRlZCA9IG5vZGUgPT09IHNlbGYuaGVhZCA/XG4gICAgbmV3IE5vZGUodmFsdWUsIG51bGwsIG5vZGUsIHNlbGYpIDpcbiAgICBuZXcgTm9kZSh2YWx1ZSwgbm9kZSwgbm9kZS5uZXh0LCBzZWxmKVxuXG4gIGlmIChpbnNlcnRlZC5uZXh0ID09PSBudWxsKSB7XG4gICAgc2VsZi50YWlsID0gaW5zZXJ0ZWRcbiAgfVxuICBpZiAoaW5zZXJ0ZWQucHJldiA9PT0gbnVsbCkge1xuICAgIHNlbGYuaGVhZCA9IGluc2VydGVkXG4gIH1cblxuICBzZWxmLmxlbmd0aCsrXG5cbiAgcmV0dXJuIGluc2VydGVkXG59XG5cbmZ1bmN0aW9uIHB1c2ggKHNlbGYsIGl0ZW0pIHtcbiAgc2VsZi50YWlsID0gbmV3IE5vZGUoaXRlbSwgc2VsZi50YWlsLCBudWxsLCBzZWxmKVxuICBpZiAoIXNlbGYuaGVhZCkge1xuICAgIHNlbGYuaGVhZCA9IHNlbGYudGFpbFxuICB9XG4gIHNlbGYubGVuZ3RoKytcbn1cblxuZnVuY3Rpb24gdW5zaGlmdCAoc2VsZiwgaXRlbSkge1xuICBzZWxmLmhlYWQgPSBuZXcgTm9kZShpdGVtLCBudWxsLCBzZWxmLmhlYWQsIHNlbGYpXG4gIGlmICghc2VsZi50YWlsKSB7XG4gICAgc2VsZi50YWlsID0gc2VsZi5oZWFkXG4gIH1cbiAgc2VsZi5sZW5ndGgrK1xufVxuXG5mdW5jdGlvbiBOb2RlICh2YWx1ZSwgcHJldiwgbmV4dCwgbGlzdCkge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgTm9kZSkpIHtcbiAgICByZXR1cm4gbmV3IE5vZGUodmFsdWUsIHByZXYsIG5leHQsIGxpc3QpXG4gIH1cblxuICB0aGlzLmxpc3QgPSBsaXN0XG4gIHRoaXMudmFsdWUgPSB2YWx1ZVxuXG4gIGlmIChwcmV2KSB7XG4gICAgcHJldi5uZXh0ID0gdGhpc1xuICAgIHRoaXMucHJldiA9IHByZXZcbiAgfSBlbHNlIHtcbiAgICB0aGlzLnByZXYgPSBudWxsXG4gIH1cblxuICBpZiAobmV4dCkge1xuICAgIG5leHQucHJldiA9IHRoaXNcbiAgICB0aGlzLm5leHQgPSBuZXh0XG4gIH0gZWxzZSB7XG4gICAgdGhpcy5uZXh0ID0gbnVsbFxuICB9XG59XG5cbnRyeSB7XG4gIC8vIGFkZCBpZiBzdXBwb3J0IGZvciBTeW1ib2wuaXRlcmF0b3IgaXMgcHJlc2VudFxuICByZXF1aXJlKCcuL2l0ZXJhdG9yLmpzJykoWWFsbGlzdClcbn0gY2F0Y2ggKGVyKSB7fVxuIiwgIid1c2Ugc3RyaWN0J1xuXG4vLyBBIGxpbmtlZCBsaXN0IHRvIGtlZXAgdHJhY2sgb2YgcmVjZW50bHktdXNlZC1uZXNzXG5jb25zdCBZYWxsaXN0ID0gcmVxdWlyZSgneWFsbGlzdCcpXG5cbmNvbnN0IE1BWCA9IFN5bWJvbCgnbWF4JylcbmNvbnN0IExFTkdUSCA9IFN5bWJvbCgnbGVuZ3RoJylcbmNvbnN0IExFTkdUSF9DQUxDVUxBVE9SID0gU3ltYm9sKCdsZW5ndGhDYWxjdWxhdG9yJylcbmNvbnN0IEFMTE9XX1NUQUxFID0gU3ltYm9sKCdhbGxvd1N0YWxlJylcbmNvbnN0IE1BWF9BR0UgPSBTeW1ib2woJ21heEFnZScpXG5jb25zdCBESVNQT1NFID0gU3ltYm9sKCdkaXNwb3NlJylcbmNvbnN0IE5PX0RJU1BPU0VfT05fU0VUID0gU3ltYm9sKCdub0Rpc3Bvc2VPblNldCcpXG5jb25zdCBMUlVfTElTVCA9IFN5bWJvbCgnbHJ1TGlzdCcpXG5jb25zdCBDQUNIRSA9IFN5bWJvbCgnY2FjaGUnKVxuY29uc3QgVVBEQVRFX0FHRV9PTl9HRVQgPSBTeW1ib2woJ3VwZGF0ZUFnZU9uR2V0JylcblxuY29uc3QgbmFpdmVMZW5ndGggPSAoKSA9PiAxXG5cbi8vIGxydUxpc3QgaXMgYSB5YWxsaXN0IHdoZXJlIHRoZSBoZWFkIGlzIHRoZSB5b3VuZ2VzdFxuLy8gaXRlbSwgYW5kIHRoZSB0YWlsIGlzIHRoZSBvbGRlc3QuICB0aGUgbGlzdCBjb250YWlucyB0aGUgSGl0XG4vLyBvYmplY3RzIGFzIHRoZSBlbnRyaWVzLlxuLy8gRWFjaCBIaXQgb2JqZWN0IGhhcyBhIHJlZmVyZW5jZSB0byBpdHMgWWFsbGlzdC5Ob2RlLiAgVGhpc1xuLy8gbmV2ZXIgY2hhbmdlcy5cbi8vXG4vLyBjYWNoZSBpcyBhIE1hcCAob3IgUHNldWRvTWFwKSB0aGF0IG1hdGNoZXMgdGhlIGtleXMgdG9cbi8vIHRoZSBZYWxsaXN0Lk5vZGUgb2JqZWN0LlxuY2xhc3MgTFJVQ2FjaGUge1xuICBjb25zdHJ1Y3RvciAob3B0aW9ucykge1xuICAgIGlmICh0eXBlb2Ygb3B0aW9ucyA9PT0gJ251bWJlcicpXG4gICAgICBvcHRpb25zID0geyBtYXg6IG9wdGlvbnMgfVxuXG4gICAgaWYgKCFvcHRpb25zKVxuICAgICAgb3B0aW9ucyA9IHt9XG5cbiAgICBpZiAob3B0aW9ucy5tYXggJiYgKHR5cGVvZiBvcHRpb25zLm1heCAhPT0gJ251bWJlcicgfHwgb3B0aW9ucy5tYXggPCAwKSlcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ21heCBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIG51bWJlcicpXG4gICAgLy8gS2luZCBvZiB3ZWlyZCB0byBoYXZlIGEgZGVmYXVsdCBtYXggb2YgSW5maW5pdHksIGJ1dCBvaCB3ZWxsLlxuICAgIGNvbnN0IG1heCA9IHRoaXNbTUFYXSA9IG9wdGlvbnMubWF4IHx8IEluZmluaXR5XG5cbiAgICBjb25zdCBsYyA9IG9wdGlvbnMubGVuZ3RoIHx8IG5haXZlTGVuZ3RoXG4gICAgdGhpc1tMRU5HVEhfQ0FMQ1VMQVRPUl0gPSAodHlwZW9mIGxjICE9PSAnZnVuY3Rpb24nKSA/IG5haXZlTGVuZ3RoIDogbGNcbiAgICB0aGlzW0FMTE9XX1NUQUxFXSA9IG9wdGlvbnMuc3RhbGUgfHwgZmFsc2VcbiAgICBpZiAob3B0aW9ucy5tYXhBZ2UgJiYgdHlwZW9mIG9wdGlvbnMubWF4QWdlICE9PSAnbnVtYmVyJylcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ21heEFnZSBtdXN0IGJlIGEgbnVtYmVyJylcbiAgICB0aGlzW01BWF9BR0VdID0gb3B0aW9ucy5tYXhBZ2UgfHwgMFxuICAgIHRoaXNbRElTUE9TRV0gPSBvcHRpb25zLmRpc3Bvc2VcbiAgICB0aGlzW05PX0RJU1BPU0VfT05fU0VUXSA9IG9wdGlvbnMubm9EaXNwb3NlT25TZXQgfHwgZmFsc2VcbiAgICB0aGlzW1VQREFURV9BR0VfT05fR0VUXSA9IG9wdGlvbnMudXBkYXRlQWdlT25HZXQgfHwgZmFsc2VcbiAgICB0aGlzLnJlc2V0KClcbiAgfVxuXG4gIC8vIHJlc2l6ZSB0aGUgY2FjaGUgd2hlbiB0aGUgbWF4IGNoYW5nZXMuXG4gIHNldCBtYXggKG1MKSB7XG4gICAgaWYgKHR5cGVvZiBtTCAhPT0gJ251bWJlcicgfHwgbUwgPCAwKVxuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignbWF4IG11c3QgYmUgYSBub24tbmVnYXRpdmUgbnVtYmVyJylcblxuICAgIHRoaXNbTUFYXSA9IG1MIHx8IEluZmluaXR5XG4gICAgdHJpbSh0aGlzKVxuICB9XG4gIGdldCBtYXggKCkge1xuICAgIHJldHVybiB0aGlzW01BWF1cbiAgfVxuXG4gIHNldCBhbGxvd1N0YWxlIChhbGxvd1N0YWxlKSB7XG4gICAgdGhpc1tBTExPV19TVEFMRV0gPSAhIWFsbG93U3RhbGVcbiAgfVxuICBnZXQgYWxsb3dTdGFsZSAoKSB7XG4gICAgcmV0dXJuIHRoaXNbQUxMT1dfU1RBTEVdXG4gIH1cblxuICBzZXQgbWF4QWdlIChtQSkge1xuICAgIGlmICh0eXBlb2YgbUEgIT09ICdudW1iZXInKVxuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignbWF4QWdlIG11c3QgYmUgYSBub24tbmVnYXRpdmUgbnVtYmVyJylcblxuICAgIHRoaXNbTUFYX0FHRV0gPSBtQVxuICAgIHRyaW0odGhpcylcbiAgfVxuICBnZXQgbWF4QWdlICgpIHtcbiAgICByZXR1cm4gdGhpc1tNQVhfQUdFXVxuICB9XG5cbiAgLy8gcmVzaXplIHRoZSBjYWNoZSB3aGVuIHRoZSBsZW5ndGhDYWxjdWxhdG9yIGNoYW5nZXMuXG4gIHNldCBsZW5ndGhDYWxjdWxhdG9yIChsQykge1xuICAgIGlmICh0eXBlb2YgbEMgIT09ICdmdW5jdGlvbicpXG4gICAgICBsQyA9IG5haXZlTGVuZ3RoXG5cbiAgICBpZiAobEMgIT09IHRoaXNbTEVOR1RIX0NBTENVTEFUT1JdKSB7XG4gICAgICB0aGlzW0xFTkdUSF9DQUxDVUxBVE9SXSA9IGxDXG4gICAgICB0aGlzW0xFTkdUSF0gPSAwXG4gICAgICB0aGlzW0xSVV9MSVNUXS5mb3JFYWNoKGhpdCA9PiB7XG4gICAgICAgIGhpdC5sZW5ndGggPSB0aGlzW0xFTkdUSF9DQUxDVUxBVE9SXShoaXQudmFsdWUsIGhpdC5rZXkpXG4gICAgICAgIHRoaXNbTEVOR1RIXSArPSBoaXQubGVuZ3RoXG4gICAgICB9KVxuICAgIH1cbiAgICB0cmltKHRoaXMpXG4gIH1cbiAgZ2V0IGxlbmd0aENhbGN1bGF0b3IgKCkgeyByZXR1cm4gdGhpc1tMRU5HVEhfQ0FMQ1VMQVRPUl0gfVxuXG4gIGdldCBsZW5ndGggKCkgeyByZXR1cm4gdGhpc1tMRU5HVEhdIH1cbiAgZ2V0IGl0ZW1Db3VudCAoKSB7IHJldHVybiB0aGlzW0xSVV9MSVNUXS5sZW5ndGggfVxuXG4gIHJmb3JFYWNoIChmbiwgdGhpc3ApIHtcbiAgICB0aGlzcCA9IHRoaXNwIHx8IHRoaXNcbiAgICBmb3IgKGxldCB3YWxrZXIgPSB0aGlzW0xSVV9MSVNUXS50YWlsOyB3YWxrZXIgIT09IG51bGw7KSB7XG4gICAgICBjb25zdCBwcmV2ID0gd2Fsa2VyLnByZXZcbiAgICAgIGZvckVhY2hTdGVwKHRoaXMsIGZuLCB3YWxrZXIsIHRoaXNwKVxuICAgICAgd2Fsa2VyID0gcHJldlxuICAgIH1cbiAgfVxuXG4gIGZvckVhY2ggKGZuLCB0aGlzcCkge1xuICAgIHRoaXNwID0gdGhpc3AgfHwgdGhpc1xuICAgIGZvciAobGV0IHdhbGtlciA9IHRoaXNbTFJVX0xJU1RdLmhlYWQ7IHdhbGtlciAhPT0gbnVsbDspIHtcbiAgICAgIGNvbnN0IG5leHQgPSB3YWxrZXIubmV4dFxuICAgICAgZm9yRWFjaFN0ZXAodGhpcywgZm4sIHdhbGtlciwgdGhpc3ApXG4gICAgICB3YWxrZXIgPSBuZXh0XG4gICAgfVxuICB9XG5cbiAga2V5cyAoKSB7XG4gICAgcmV0dXJuIHRoaXNbTFJVX0xJU1RdLnRvQXJyYXkoKS5tYXAoayA9PiBrLmtleSlcbiAgfVxuXG4gIHZhbHVlcyAoKSB7XG4gICAgcmV0dXJuIHRoaXNbTFJVX0xJU1RdLnRvQXJyYXkoKS5tYXAoayA9PiBrLnZhbHVlKVxuICB9XG5cbiAgcmVzZXQgKCkge1xuICAgIGlmICh0aGlzW0RJU1BPU0VdICYmXG4gICAgICAgIHRoaXNbTFJVX0xJU1RdICYmXG4gICAgICAgIHRoaXNbTFJVX0xJU1RdLmxlbmd0aCkge1xuICAgICAgdGhpc1tMUlVfTElTVF0uZm9yRWFjaChoaXQgPT4gdGhpc1tESVNQT1NFXShoaXQua2V5LCBoaXQudmFsdWUpKVxuICAgIH1cblxuICAgIHRoaXNbQ0FDSEVdID0gbmV3IE1hcCgpIC8vIGhhc2ggb2YgaXRlbXMgYnkga2V5XG4gICAgdGhpc1tMUlVfTElTVF0gPSBuZXcgWWFsbGlzdCgpIC8vIGxpc3Qgb2YgaXRlbXMgaW4gb3JkZXIgb2YgdXNlIHJlY2VuY3lcbiAgICB0aGlzW0xFTkdUSF0gPSAwIC8vIGxlbmd0aCBvZiBpdGVtcyBpbiB0aGUgbGlzdFxuICB9XG5cbiAgZHVtcCAoKSB7XG4gICAgcmV0dXJuIHRoaXNbTFJVX0xJU1RdLm1hcChoaXQgPT5cbiAgICAgIGlzU3RhbGUodGhpcywgaGl0KSA/IGZhbHNlIDoge1xuICAgICAgICBrOiBoaXQua2V5LFxuICAgICAgICB2OiBoaXQudmFsdWUsXG4gICAgICAgIGU6IGhpdC5ub3cgKyAoaGl0Lm1heEFnZSB8fCAwKVxuICAgICAgfSkudG9BcnJheSgpLmZpbHRlcihoID0+IGgpXG4gIH1cblxuICBkdW1wTHJ1ICgpIHtcbiAgICByZXR1cm4gdGhpc1tMUlVfTElTVF1cbiAgfVxuXG4gIHNldCAoa2V5LCB2YWx1ZSwgbWF4QWdlKSB7XG4gICAgbWF4QWdlID0gbWF4QWdlIHx8IHRoaXNbTUFYX0FHRV1cblxuICAgIGlmIChtYXhBZ2UgJiYgdHlwZW9mIG1heEFnZSAhPT0gJ251bWJlcicpXG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdtYXhBZ2UgbXVzdCBiZSBhIG51bWJlcicpXG5cbiAgICBjb25zdCBub3cgPSBtYXhBZ2UgPyBEYXRlLm5vdygpIDogMFxuICAgIGNvbnN0IGxlbiA9IHRoaXNbTEVOR1RIX0NBTENVTEFUT1JdKHZhbHVlLCBrZXkpXG5cbiAgICBpZiAodGhpc1tDQUNIRV0uaGFzKGtleSkpIHtcbiAgICAgIGlmIChsZW4gPiB0aGlzW01BWF0pIHtcbiAgICAgICAgZGVsKHRoaXMsIHRoaXNbQ0FDSEVdLmdldChrZXkpKVxuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cblxuICAgICAgY29uc3Qgbm9kZSA9IHRoaXNbQ0FDSEVdLmdldChrZXkpXG4gICAgICBjb25zdCBpdGVtID0gbm9kZS52YWx1ZVxuXG4gICAgICAvLyBkaXNwb3NlIG9mIHRoZSBvbGQgb25lIGJlZm9yZSBvdmVyd3JpdGluZ1xuICAgICAgLy8gc3BsaXQgb3V0IGludG8gMiBpZnMgZm9yIGJldHRlciBjb3ZlcmFnZSB0cmFja2luZ1xuICAgICAgaWYgKHRoaXNbRElTUE9TRV0pIHtcbiAgICAgICAgaWYgKCF0aGlzW05PX0RJU1BPU0VfT05fU0VUXSlcbiAgICAgICAgICB0aGlzW0RJU1BPU0VdKGtleSwgaXRlbS52YWx1ZSlcbiAgICAgIH1cblxuICAgICAgaXRlbS5ub3cgPSBub3dcbiAgICAgIGl0ZW0ubWF4QWdlID0gbWF4QWdlXG4gICAgICBpdGVtLnZhbHVlID0gdmFsdWVcbiAgICAgIHRoaXNbTEVOR1RIXSArPSBsZW4gLSBpdGVtLmxlbmd0aFxuICAgICAgaXRlbS5sZW5ndGggPSBsZW5cbiAgICAgIHRoaXMuZ2V0KGtleSlcbiAgICAgIHRyaW0odGhpcylcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuXG4gICAgY29uc3QgaGl0ID0gbmV3IEVudHJ5KGtleSwgdmFsdWUsIGxlbiwgbm93LCBtYXhBZ2UpXG5cbiAgICAvLyBvdmVyc2l6ZWQgb2JqZWN0cyBmYWxsIG91dCBvZiBjYWNoZSBhdXRvbWF0aWNhbGx5LlxuICAgIGlmIChoaXQubGVuZ3RoID4gdGhpc1tNQVhdKSB7XG4gICAgICBpZiAodGhpc1tESVNQT1NFXSlcbiAgICAgICAgdGhpc1tESVNQT1NFXShrZXksIHZhbHVlKVxuXG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG5cbiAgICB0aGlzW0xFTkdUSF0gKz0gaGl0Lmxlbmd0aFxuICAgIHRoaXNbTFJVX0xJU1RdLnVuc2hpZnQoaGl0KVxuICAgIHRoaXNbQ0FDSEVdLnNldChrZXksIHRoaXNbTFJVX0xJU1RdLmhlYWQpXG4gICAgdHJpbSh0aGlzKVxuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICBoYXMgKGtleSkge1xuICAgIGlmICghdGhpc1tDQUNIRV0uaGFzKGtleSkpIHJldHVybiBmYWxzZVxuICAgIGNvbnN0IGhpdCA9IHRoaXNbQ0FDSEVdLmdldChrZXkpLnZhbHVlXG4gICAgcmV0dXJuICFpc1N0YWxlKHRoaXMsIGhpdClcbiAgfVxuXG4gIGdldCAoa2V5KSB7XG4gICAgcmV0dXJuIGdldCh0aGlzLCBrZXksIHRydWUpXG4gIH1cblxuICBwZWVrIChrZXkpIHtcbiAgICByZXR1cm4gZ2V0KHRoaXMsIGtleSwgZmFsc2UpXG4gIH1cblxuICBwb3AgKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzW0xSVV9MSVNUXS50YWlsXG4gICAgaWYgKCFub2RlKVxuICAgICAgcmV0dXJuIG51bGxcblxuICAgIGRlbCh0aGlzLCBub2RlKVxuICAgIHJldHVybiBub2RlLnZhbHVlXG4gIH1cblxuICBkZWwgKGtleSkge1xuICAgIGRlbCh0aGlzLCB0aGlzW0NBQ0hFXS5nZXQoa2V5KSlcbiAgfVxuXG4gIGxvYWQgKGFycikge1xuICAgIC8vIHJlc2V0IHRoZSBjYWNoZVxuICAgIHRoaXMucmVzZXQoKVxuXG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKVxuICAgIC8vIEEgcHJldmlvdXMgc2VyaWFsaXplZCBjYWNoZSBoYXMgdGhlIG1vc3QgcmVjZW50IGl0ZW1zIGZpcnN0XG4gICAgZm9yIChsZXQgbCA9IGFyci5sZW5ndGggLSAxOyBsID49IDA7IGwtLSkge1xuICAgICAgY29uc3QgaGl0ID0gYXJyW2xdXG4gICAgICBjb25zdCBleHBpcmVzQXQgPSBoaXQuZSB8fCAwXG4gICAgICBpZiAoZXhwaXJlc0F0ID09PSAwKVxuICAgICAgICAvLyB0aGUgaXRlbSB3YXMgY3JlYXRlZCB3aXRob3V0IGV4cGlyYXRpb24gaW4gYSBub24gYWdlZCBjYWNoZVxuICAgICAgICB0aGlzLnNldChoaXQuaywgaGl0LnYpXG4gICAgICBlbHNlIHtcbiAgICAgICAgY29uc3QgbWF4QWdlID0gZXhwaXJlc0F0IC0gbm93XG4gICAgICAgIC8vIGRvbnQgYWRkIGFscmVhZHkgZXhwaXJlZCBpdGVtc1xuICAgICAgICBpZiAobWF4QWdlID4gMCkge1xuICAgICAgICAgIHRoaXMuc2V0KGhpdC5rLCBoaXQudiwgbWF4QWdlKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJ1bmUgKCkge1xuICAgIHRoaXNbQ0FDSEVdLmZvckVhY2goKHZhbHVlLCBrZXkpID0+IGdldCh0aGlzLCBrZXksIGZhbHNlKSlcbiAgfVxufVxuXG5jb25zdCBnZXQgPSAoc2VsZiwga2V5LCBkb1VzZSkgPT4ge1xuICBjb25zdCBub2RlID0gc2VsZltDQUNIRV0uZ2V0KGtleSlcbiAgaWYgKG5vZGUpIHtcbiAgICBjb25zdCBoaXQgPSBub2RlLnZhbHVlXG4gICAgaWYgKGlzU3RhbGUoc2VsZiwgaGl0KSkge1xuICAgICAgZGVsKHNlbGYsIG5vZGUpXG4gICAgICBpZiAoIXNlbGZbQUxMT1dfU1RBTEVdKVxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChkb1VzZSkge1xuICAgICAgICBpZiAoc2VsZltVUERBVEVfQUdFX09OX0dFVF0pXG4gICAgICAgICAgbm9kZS52YWx1ZS5ub3cgPSBEYXRlLm5vdygpXG4gICAgICAgIHNlbGZbTFJVX0xJU1RdLnVuc2hpZnROb2RlKG5vZGUpXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBoaXQudmFsdWVcbiAgfVxufVxuXG5jb25zdCBpc1N0YWxlID0gKHNlbGYsIGhpdCkgPT4ge1xuICBpZiAoIWhpdCB8fCAoIWhpdC5tYXhBZ2UgJiYgIXNlbGZbTUFYX0FHRV0pKVxuICAgIHJldHVybiBmYWxzZVxuXG4gIGNvbnN0IGRpZmYgPSBEYXRlLm5vdygpIC0gaGl0Lm5vd1xuICByZXR1cm4gaGl0Lm1heEFnZSA/IGRpZmYgPiBoaXQubWF4QWdlXG4gICAgOiBzZWxmW01BWF9BR0VdICYmIChkaWZmID4gc2VsZltNQVhfQUdFXSlcbn1cblxuY29uc3QgdHJpbSA9IHNlbGYgPT4ge1xuICBpZiAoc2VsZltMRU5HVEhdID4gc2VsZltNQVhdKSB7XG4gICAgZm9yIChsZXQgd2Fsa2VyID0gc2VsZltMUlVfTElTVF0udGFpbDtcbiAgICAgIHNlbGZbTEVOR1RIXSA+IHNlbGZbTUFYXSAmJiB3YWxrZXIgIT09IG51bGw7KSB7XG4gICAgICAvLyBXZSBrbm93IHRoYXQgd2UncmUgYWJvdXQgdG8gZGVsZXRlIHRoaXMgb25lLCBhbmQgYWxzb1xuICAgICAgLy8gd2hhdCB0aGUgbmV4dCBsZWFzdCByZWNlbnRseSB1c2VkIGtleSB3aWxsIGJlLCBzbyBqdXN0XG4gICAgICAvLyBnbyBhaGVhZCBhbmQgc2V0IGl0IG5vdy5cbiAgICAgIGNvbnN0IHByZXYgPSB3YWxrZXIucHJldlxuICAgICAgZGVsKHNlbGYsIHdhbGtlcilcbiAgICAgIHdhbGtlciA9IHByZXZcbiAgICB9XG4gIH1cbn1cblxuY29uc3QgZGVsID0gKHNlbGYsIG5vZGUpID0+IHtcbiAgaWYgKG5vZGUpIHtcbiAgICBjb25zdCBoaXQgPSBub2RlLnZhbHVlXG4gICAgaWYgKHNlbGZbRElTUE9TRV0pXG4gICAgICBzZWxmW0RJU1BPU0VdKGhpdC5rZXksIGhpdC52YWx1ZSlcblxuICAgIHNlbGZbTEVOR1RIXSAtPSBoaXQubGVuZ3RoXG4gICAgc2VsZltDQUNIRV0uZGVsZXRlKGhpdC5rZXkpXG4gICAgc2VsZltMUlVfTElTVF0ucmVtb3ZlTm9kZShub2RlKVxuICB9XG59XG5cbmNsYXNzIEVudHJ5IHtcbiAgY29uc3RydWN0b3IgKGtleSwgdmFsdWUsIGxlbmd0aCwgbm93LCBtYXhBZ2UpIHtcbiAgICB0aGlzLmtleSA9IGtleVxuICAgIHRoaXMudmFsdWUgPSB2YWx1ZVxuICAgIHRoaXMubGVuZ3RoID0gbGVuZ3RoXG4gICAgdGhpcy5ub3cgPSBub3dcbiAgICB0aGlzLm1heEFnZSA9IG1heEFnZSB8fCAwXG4gIH1cbn1cblxuY29uc3QgZm9yRWFjaFN0ZXAgPSAoc2VsZiwgZm4sIG5vZGUsIHRoaXNwKSA9PiB7XG4gIGxldCBoaXQgPSBub2RlLnZhbHVlXG4gIGlmIChpc1N0YWxlKHNlbGYsIGhpdCkpIHtcbiAgICBkZWwoc2VsZiwgbm9kZSlcbiAgICBpZiAoIXNlbGZbQUxMT1dfU1RBTEVdKVxuICAgICAgaGl0ID0gdW5kZWZpbmVkXG4gIH1cbiAgaWYgKGhpdClcbiAgICBmbi5jYWxsKHRoaXNwLCBoaXQudmFsdWUsIGhpdC5rZXksIHNlbGYpXG59XG5cbm1vZHVsZS5leHBvcnRzID0gTFJVQ2FjaGVcbiIsICIvLyBob2lzdGVkIGNsYXNzIGZvciBjeWNsaWMgZGVwZW5kZW5jeVxuY2xhc3MgUmFuZ2Uge1xuICBjb25zdHJ1Y3RvciAocmFuZ2UsIG9wdGlvbnMpIHtcbiAgICBvcHRpb25zID0gcGFyc2VPcHRpb25zKG9wdGlvbnMpXG5cbiAgICBpZiAocmFuZ2UgaW5zdGFuY2VvZiBSYW5nZSkge1xuICAgICAgaWYgKFxuICAgICAgICByYW5nZS5sb29zZSA9PT0gISFvcHRpb25zLmxvb3NlICYmXG4gICAgICAgIHJhbmdlLmluY2x1ZGVQcmVyZWxlYXNlID09PSAhIW9wdGlvbnMuaW5jbHVkZVByZXJlbGVhc2VcbiAgICAgICkge1xuICAgICAgICByZXR1cm4gcmFuZ2VcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBuZXcgUmFuZ2UocmFuZ2UucmF3LCBvcHRpb25zKVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChyYW5nZSBpbnN0YW5jZW9mIENvbXBhcmF0b3IpIHtcbiAgICAgIC8vIGp1c3QgcHV0IGl0IGluIHRoZSBzZXQgYW5kIHJldHVyblxuICAgICAgdGhpcy5yYXcgPSByYW5nZS52YWx1ZVxuICAgICAgdGhpcy5zZXQgPSBbW3JhbmdlXV1cbiAgICAgIHRoaXMuZm9ybWF0KClcbiAgICAgIHJldHVybiB0aGlzXG4gICAgfVxuXG4gICAgdGhpcy5vcHRpb25zID0gb3B0aW9uc1xuICAgIHRoaXMubG9vc2UgPSAhIW9wdGlvbnMubG9vc2VcbiAgICB0aGlzLmluY2x1ZGVQcmVyZWxlYXNlID0gISFvcHRpb25zLmluY2x1ZGVQcmVyZWxlYXNlXG5cbiAgICAvLyBGaXJzdCwgc3BsaXQgYmFzZWQgb24gYm9vbGVhbiBvciB8fFxuICAgIHRoaXMucmF3ID0gcmFuZ2VcbiAgICB0aGlzLnNldCA9IHJhbmdlXG4gICAgICAuc3BsaXQoJ3x8JylcbiAgICAgIC8vIG1hcCB0aGUgcmFuZ2UgdG8gYSAyZCBhcnJheSBvZiBjb21wYXJhdG9yc1xuICAgICAgLm1hcChyID0+IHRoaXMucGFyc2VSYW5nZShyLnRyaW0oKSkpXG4gICAgICAvLyB0aHJvdyBvdXQgYW55IGNvbXBhcmF0b3IgbGlzdHMgdGhhdCBhcmUgZW1wdHlcbiAgICAgIC8vIHRoaXMgZ2VuZXJhbGx5IG1lYW5zIHRoYXQgaXQgd2FzIG5vdCBhIHZhbGlkIHJhbmdlLCB3aGljaCBpcyBhbGxvd2VkXG4gICAgICAvLyBpbiBsb29zZSBtb2RlLCBidXQgd2lsbCBzdGlsbCB0aHJvdyBpZiB0aGUgV0hPTEUgcmFuZ2UgaXMgaW52YWxpZC5cbiAgICAgIC5maWx0ZXIoYyA9PiBjLmxlbmd0aClcblxuICAgIGlmICghdGhpcy5zZXQubGVuZ3RoKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBJbnZhbGlkIFNlbVZlciBSYW5nZTogJHtyYW5nZX1gKVxuICAgIH1cblxuICAgIC8vIGlmIHdlIGhhdmUgYW55IHRoYXQgYXJlIG5vdCB0aGUgbnVsbCBzZXQsIHRocm93IG91dCBudWxsIHNldHMuXG4gICAgaWYgKHRoaXMuc2V0Lmxlbmd0aCA+IDEpIHtcbiAgICAgIC8vIGtlZXAgdGhlIGZpcnN0IG9uZSwgaW4gY2FzZSB0aGV5J3JlIGFsbCBudWxsIHNldHNcbiAgICAgIGNvbnN0IGZpcnN0ID0gdGhpcy5zZXRbMF1cbiAgICAgIHRoaXMuc2V0ID0gdGhpcy5zZXQuZmlsdGVyKGMgPT4gIWlzTnVsbFNldChjWzBdKSlcbiAgICAgIGlmICh0aGlzLnNldC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgdGhpcy5zZXQgPSBbZmlyc3RdXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuc2V0Lmxlbmd0aCA+IDEpIHtcbiAgICAgICAgLy8gaWYgd2UgaGF2ZSBhbnkgdGhhdCBhcmUgKiwgdGhlbiB0aGUgcmFuZ2UgaXMganVzdCAqXG4gICAgICAgIGZvciAoY29uc3QgYyBvZiB0aGlzLnNldCkge1xuICAgICAgICAgIGlmIChjLmxlbmd0aCA9PT0gMSAmJiBpc0FueShjWzBdKSkge1xuICAgICAgICAgICAgdGhpcy5zZXQgPSBbY11cbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5mb3JtYXQoKVxuICB9XG5cbiAgZm9ybWF0ICgpIHtcbiAgICB0aGlzLnJhbmdlID0gdGhpcy5zZXRcbiAgICAgIC5tYXAoKGNvbXBzKSA9PiB7XG4gICAgICAgIHJldHVybiBjb21wcy5qb2luKCcgJykudHJpbSgpXG4gICAgICB9KVxuICAgICAgLmpvaW4oJ3x8JylcbiAgICAgIC50cmltKClcbiAgICByZXR1cm4gdGhpcy5yYW5nZVxuICB9XG5cbiAgdG9TdHJpbmcgKCkge1xuICAgIHJldHVybiB0aGlzLnJhbmdlXG4gIH1cblxuICBwYXJzZVJhbmdlIChyYW5nZSkge1xuICAgIHJhbmdlID0gcmFuZ2UudHJpbSgpXG5cbiAgICAvLyBtZW1vaXplIHJhbmdlIHBhcnNpbmcgZm9yIHBlcmZvcm1hbmNlLlxuICAgIC8vIHRoaXMgaXMgYSB2ZXJ5IGhvdCBwYXRoLCBhbmQgZnVsbHkgZGV0ZXJtaW5pc3RpYy5cbiAgICBjb25zdCBtZW1vT3B0cyA9IE9iamVjdC5rZXlzKHRoaXMub3B0aW9ucykuam9pbignLCcpXG4gICAgY29uc3QgbWVtb0tleSA9IGBwYXJzZVJhbmdlOiR7bWVtb09wdHN9OiR7cmFuZ2V9YFxuICAgIGNvbnN0IGNhY2hlZCA9IGNhY2hlLmdldChtZW1vS2V5KVxuICAgIGlmIChjYWNoZWQpIHtcbiAgICAgIHJldHVybiBjYWNoZWRcbiAgICB9XG5cbiAgICBjb25zdCBsb29zZSA9IHRoaXMub3B0aW9ucy5sb29zZVxuICAgIC8vIGAxLjIuMyAtIDEuMi40YCA9PiBgPj0xLjIuMyA8PTEuMi40YFxuICAgIGNvbnN0IGhyID0gbG9vc2UgPyByZVt0LkhZUEhFTlJBTkdFTE9PU0VdIDogcmVbdC5IWVBIRU5SQU5HRV1cbiAgICByYW5nZSA9IHJhbmdlLnJlcGxhY2UoaHIsIGh5cGhlblJlcGxhY2UodGhpcy5vcHRpb25zLmluY2x1ZGVQcmVyZWxlYXNlKSlcbiAgICBkZWJ1ZygnaHlwaGVuIHJlcGxhY2UnLCByYW5nZSlcbiAgICAvLyBgPiAxLjIuMyA8IDEuMi41YCA9PiBgPjEuMi4zIDwxLjIuNWBcbiAgICByYW5nZSA9IHJhbmdlLnJlcGxhY2UocmVbdC5DT01QQVJBVE9SVFJJTV0sIGNvbXBhcmF0b3JUcmltUmVwbGFjZSlcbiAgICBkZWJ1ZygnY29tcGFyYXRvciB0cmltJywgcmFuZ2UpXG5cbiAgICAvLyBgfiAxLjIuM2AgPT4gYH4xLjIuM2BcbiAgICByYW5nZSA9IHJhbmdlLnJlcGxhY2UocmVbdC5USUxERVRSSU1dLCB0aWxkZVRyaW1SZXBsYWNlKVxuXG4gICAgLy8gYF4gMS4yLjNgID0+IGBeMS4yLjNgXG4gICAgcmFuZ2UgPSByYW5nZS5yZXBsYWNlKHJlW3QuQ0FSRVRUUklNXSwgY2FyZXRUcmltUmVwbGFjZSlcblxuICAgIC8vIG5vcm1hbGl6ZSBzcGFjZXNcbiAgICByYW5nZSA9IHJhbmdlLnNwbGl0KC9cXHMrLykuam9pbignICcpXG5cbiAgICAvLyBBdCB0aGlzIHBvaW50LCB0aGUgcmFuZ2UgaXMgY29tcGxldGVseSB0cmltbWVkIGFuZFxuICAgIC8vIHJlYWR5IHRvIGJlIHNwbGl0IGludG8gY29tcGFyYXRvcnMuXG5cbiAgICBsZXQgcmFuZ2VMaXN0ID0gcmFuZ2VcbiAgICAgIC5zcGxpdCgnICcpXG4gICAgICAubWFwKGNvbXAgPT4gcGFyc2VDb21wYXJhdG9yKGNvbXAsIHRoaXMub3B0aW9ucykpXG4gICAgICAuam9pbignICcpXG4gICAgICAuc3BsaXQoL1xccysvKVxuICAgICAgLy8gPj0wLjAuMCBpcyBlcXVpdmFsZW50IHRvICpcbiAgICAgIC5tYXAoY29tcCA9PiByZXBsYWNlR1RFMChjb21wLCB0aGlzLm9wdGlvbnMpKVxuXG4gICAgaWYgKGxvb3NlKSB7XG4gICAgICAvLyBpbiBsb29zZSBtb2RlLCB0aHJvdyBvdXQgYW55IHRoYXQgYXJlIG5vdCB2YWxpZCBjb21wYXJhdG9yc1xuICAgICAgcmFuZ2VMaXN0ID0gcmFuZ2VMaXN0LmZpbHRlcihjb21wID0+IHtcbiAgICAgICAgZGVidWcoJ2xvb3NlIGludmFsaWQgZmlsdGVyJywgY29tcCwgdGhpcy5vcHRpb25zKVxuICAgICAgICByZXR1cm4gISFjb21wLm1hdGNoKHJlW3QuQ09NUEFSQVRPUkxPT1NFXSlcbiAgICAgIH0pXG4gICAgfVxuICAgIGRlYnVnKCdyYW5nZSBsaXN0JywgcmFuZ2VMaXN0KVxuXG4gICAgLy8gaWYgYW55IGNvbXBhcmF0b3JzIGFyZSB0aGUgbnVsbCBzZXQsIHRoZW4gcmVwbGFjZSB3aXRoIEpVU1QgbnVsbCBzZXRcbiAgICAvLyBpZiBtb3JlIHRoYW4gb25lIGNvbXBhcmF0b3IsIHJlbW92ZSBhbnkgKiBjb21wYXJhdG9yc1xuICAgIC8vIGFsc28sIGRvbid0IGluY2x1ZGUgdGhlIHNhbWUgY29tcGFyYXRvciBtb3JlIHRoYW4gb25jZVxuICAgIGNvbnN0IHJhbmdlTWFwID0gbmV3IE1hcCgpXG4gICAgY29uc3QgY29tcGFyYXRvcnMgPSByYW5nZUxpc3QubWFwKGNvbXAgPT4gbmV3IENvbXBhcmF0b3IoY29tcCwgdGhpcy5vcHRpb25zKSlcbiAgICBmb3IgKGNvbnN0IGNvbXAgb2YgY29tcGFyYXRvcnMpIHtcbiAgICAgIGlmIChpc051bGxTZXQoY29tcCkpIHtcbiAgICAgICAgcmV0dXJuIFtjb21wXVxuICAgICAgfVxuICAgICAgcmFuZ2VNYXAuc2V0KGNvbXAudmFsdWUsIGNvbXApXG4gICAgfVxuICAgIGlmIChyYW5nZU1hcC5zaXplID4gMSAmJiByYW5nZU1hcC5oYXMoJycpKSB7XG4gICAgICByYW5nZU1hcC5kZWxldGUoJycpXG4gICAgfVxuXG4gICAgY29uc3QgcmVzdWx0ID0gWy4uLnJhbmdlTWFwLnZhbHVlcygpXVxuICAgIGNhY2hlLnNldChtZW1vS2V5LCByZXN1bHQpXG4gICAgcmV0dXJuIHJlc3VsdFxuICB9XG5cbiAgaW50ZXJzZWN0cyAocmFuZ2UsIG9wdGlvbnMpIHtcbiAgICBpZiAoIShyYW5nZSBpbnN0YW5jZW9mIFJhbmdlKSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignYSBSYW5nZSBpcyByZXF1aXJlZCcpXG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc2V0LnNvbWUoKHRoaXNDb21wYXJhdG9ycykgPT4ge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgaXNTYXRpc2ZpYWJsZSh0aGlzQ29tcGFyYXRvcnMsIG9wdGlvbnMpICYmXG4gICAgICAgIHJhbmdlLnNldC5zb21lKChyYW5nZUNvbXBhcmF0b3JzKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIGlzU2F0aXNmaWFibGUocmFuZ2VDb21wYXJhdG9ycywgb3B0aW9ucykgJiZcbiAgICAgICAgICAgIHRoaXNDb21wYXJhdG9ycy5ldmVyeSgodGhpc0NvbXBhcmF0b3IpID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuIHJhbmdlQ29tcGFyYXRvcnMuZXZlcnkoKHJhbmdlQ29tcGFyYXRvcikgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzQ29tcGFyYXRvci5pbnRlcnNlY3RzKHJhbmdlQ29tcGFyYXRvciwgb3B0aW9ucylcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKVxuICAgICAgICB9KVxuICAgICAgKVxuICAgIH0pXG4gIH1cblxuICAvLyBpZiBBTlkgb2YgdGhlIHNldHMgbWF0Y2ggQUxMIG9mIGl0cyBjb21wYXJhdG9ycywgdGhlbiBwYXNzXG4gIHRlc3QgKHZlcnNpb24pIHtcbiAgICBpZiAoIXZlcnNpb24pIHtcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cblxuICAgIGlmICh0eXBlb2YgdmVyc2lvbiA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHZlcnNpb24gPSBuZXcgU2VtVmVyKHZlcnNpb24sIHRoaXMub3B0aW9ucylcbiAgICAgIH0gY2F0Y2ggKGVyKSB7XG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfVxuICAgIH1cblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5zZXQubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmICh0ZXN0U2V0KHRoaXMuc2V0W2ldLCB2ZXJzaW9uLCB0aGlzLm9wdGlvbnMpKSB7XG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZVxuICB9XG59XG5tb2R1bGUuZXhwb3J0cyA9IFJhbmdlXG5cbmNvbnN0IExSVSA9IHJlcXVpcmUoJ2xydS1jYWNoZScpXG5jb25zdCBjYWNoZSA9IG5ldyBMUlUoeyBtYXg6IDEwMDAgfSlcblxuY29uc3QgcGFyc2VPcHRpb25zID0gcmVxdWlyZSgnLi4vaW50ZXJuYWwvcGFyc2Utb3B0aW9ucycpXG5jb25zdCBDb21wYXJhdG9yID0gcmVxdWlyZSgnLi9jb21wYXJhdG9yJylcbmNvbnN0IGRlYnVnID0gcmVxdWlyZSgnLi4vaW50ZXJuYWwvZGVidWcnKVxuY29uc3QgU2VtVmVyID0gcmVxdWlyZSgnLi9zZW12ZXInKVxuY29uc3Qge1xuICByZSxcbiAgdCxcbiAgY29tcGFyYXRvclRyaW1SZXBsYWNlLFxuICB0aWxkZVRyaW1SZXBsYWNlLFxuICBjYXJldFRyaW1SZXBsYWNlLFxufSA9IHJlcXVpcmUoJy4uL2ludGVybmFsL3JlJylcblxuY29uc3QgaXNOdWxsU2V0ID0gYyA9PiBjLnZhbHVlID09PSAnPDAuMC4wLTAnXG5jb25zdCBpc0FueSA9IGMgPT4gYy52YWx1ZSA9PT0gJydcblxuLy8gdGFrZSBhIHNldCBvZiBjb21wYXJhdG9ycyBhbmQgZGV0ZXJtaW5lIHdoZXRoZXIgdGhlcmVcbi8vIGV4aXN0cyBhIHZlcnNpb24gd2hpY2ggY2FuIHNhdGlzZnkgaXRcbmNvbnN0IGlzU2F0aXNmaWFibGUgPSAoY29tcGFyYXRvcnMsIG9wdGlvbnMpID0+IHtcbiAgbGV0IHJlc3VsdCA9IHRydWVcbiAgY29uc3QgcmVtYWluaW5nQ29tcGFyYXRvcnMgPSBjb21wYXJhdG9ycy5zbGljZSgpXG4gIGxldCB0ZXN0Q29tcGFyYXRvciA9IHJlbWFpbmluZ0NvbXBhcmF0b3JzLnBvcCgpXG5cbiAgd2hpbGUgKHJlc3VsdCAmJiByZW1haW5pbmdDb21wYXJhdG9ycy5sZW5ndGgpIHtcbiAgICByZXN1bHQgPSByZW1haW5pbmdDb21wYXJhdG9ycy5ldmVyeSgob3RoZXJDb21wYXJhdG9yKSA9PiB7XG4gICAgICByZXR1cm4gdGVzdENvbXBhcmF0b3IuaW50ZXJzZWN0cyhvdGhlckNvbXBhcmF0b3IsIG9wdGlvbnMpXG4gICAgfSlcblxuICAgIHRlc3RDb21wYXJhdG9yID0gcmVtYWluaW5nQ29tcGFyYXRvcnMucG9wKClcbiAgfVxuXG4gIHJldHVybiByZXN1bHRcbn1cblxuLy8gY29tcHJpc2VkIG9mIHhyYW5nZXMsIHRpbGRlcywgc3RhcnMsIGFuZCBndGx0J3MgYXQgdGhpcyBwb2ludC5cbi8vIGFscmVhZHkgcmVwbGFjZWQgdGhlIGh5cGhlbiByYW5nZXNcbi8vIHR1cm4gaW50byBhIHNldCBvZiBKVVNUIGNvbXBhcmF0b3JzLlxuY29uc3QgcGFyc2VDb21wYXJhdG9yID0gKGNvbXAsIG9wdGlvbnMpID0+IHtcbiAgZGVidWcoJ2NvbXAnLCBjb21wLCBvcHRpb25zKVxuICBjb21wID0gcmVwbGFjZUNhcmV0cyhjb21wLCBvcHRpb25zKVxuICBkZWJ1ZygnY2FyZXQnLCBjb21wKVxuICBjb21wID0gcmVwbGFjZVRpbGRlcyhjb21wLCBvcHRpb25zKVxuICBkZWJ1ZygndGlsZGVzJywgY29tcClcbiAgY29tcCA9IHJlcGxhY2VYUmFuZ2VzKGNvbXAsIG9wdGlvbnMpXG4gIGRlYnVnKCd4cmFuZ2UnLCBjb21wKVxuICBjb21wID0gcmVwbGFjZVN0YXJzKGNvbXAsIG9wdGlvbnMpXG4gIGRlYnVnKCdzdGFycycsIGNvbXApXG4gIHJldHVybiBjb21wXG59XG5cbmNvbnN0IGlzWCA9IGlkID0+ICFpZCB8fCBpZC50b0xvd2VyQ2FzZSgpID09PSAneCcgfHwgaWQgPT09ICcqJ1xuXG4vLyB+LCB+PiAtLT4gKiAoYW55LCBraW5kYSBzaWxseSlcbi8vIH4yLCB+Mi54LCB+Mi54LngsIH4+Miwgfj4yLnggfj4yLngueCAtLT4gPj0yLjAuMCA8My4wLjAtMFxuLy8gfjIuMCwgfjIuMC54LCB+PjIuMCwgfj4yLjAueCAtLT4gPj0yLjAuMCA8Mi4xLjAtMFxuLy8gfjEuMiwgfjEuMi54LCB+PjEuMiwgfj4xLjIueCAtLT4gPj0xLjIuMCA8MS4zLjAtMFxuLy8gfjEuMi4zLCB+PjEuMi4zIC0tPiA+PTEuMi4zIDwxLjMuMC0wXG4vLyB+MS4yLjAsIH4+MS4yLjAgLS0+ID49MS4yLjAgPDEuMy4wLTBcbi8vIH4wLjAuMSAtLT4gPj0wLjAuMSA8MC4xLjAtMFxuY29uc3QgcmVwbGFjZVRpbGRlcyA9IChjb21wLCBvcHRpb25zKSA9PlxuICBjb21wLnRyaW0oKS5zcGxpdCgvXFxzKy8pLm1hcCgoYykgPT4ge1xuICAgIHJldHVybiByZXBsYWNlVGlsZGUoYywgb3B0aW9ucylcbiAgfSkuam9pbignICcpXG5cbmNvbnN0IHJlcGxhY2VUaWxkZSA9IChjb21wLCBvcHRpb25zKSA9PiB7XG4gIGNvbnN0IHIgPSBvcHRpb25zLmxvb3NlID8gcmVbdC5USUxERUxPT1NFXSA6IHJlW3QuVElMREVdXG4gIHJldHVybiBjb21wLnJlcGxhY2UociwgKF8sIE0sIG0sIHAsIHByKSA9PiB7XG4gICAgZGVidWcoJ3RpbGRlJywgY29tcCwgXywgTSwgbSwgcCwgcHIpXG4gICAgbGV0IHJldFxuXG4gICAgaWYgKGlzWChNKSkge1xuICAgICAgcmV0ID0gJydcbiAgICB9IGVsc2UgaWYgKGlzWChtKSkge1xuICAgICAgcmV0ID0gYD49JHtNfS4wLjAgPCR7K00gKyAxfS4wLjAtMGBcbiAgICB9IGVsc2UgaWYgKGlzWChwKSkge1xuICAgICAgLy8gfjEuMiA9PSA+PTEuMi4wIDwxLjMuMC0wXG4gICAgICByZXQgPSBgPj0ke019LiR7bX0uMCA8JHtNfS4keyttICsgMX0uMC0wYFxuICAgIH0gZWxzZSBpZiAocHIpIHtcbiAgICAgIGRlYnVnKCdyZXBsYWNlVGlsZGUgcHInLCBwcilcbiAgICAgIHJldCA9IGA+PSR7TX0uJHttfS4ke3B9LSR7cHJcbiAgICAgIH0gPCR7TX0uJHsrbSArIDF9LjAtMGBcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gfjEuMi4zID09ID49MS4yLjMgPDEuMy4wLTBcbiAgICAgIHJldCA9IGA+PSR7TX0uJHttfS4ke3BcbiAgICAgIH0gPCR7TX0uJHsrbSArIDF9LjAtMGBcbiAgICB9XG5cbiAgICBkZWJ1ZygndGlsZGUgcmV0dXJuJywgcmV0KVxuICAgIHJldHVybiByZXRcbiAgfSlcbn1cblxuLy8gXiAtLT4gKiAoYW55LCBraW5kYSBzaWxseSlcbi8vIF4yLCBeMi54LCBeMi54LnggLS0+ID49Mi4wLjAgPDMuMC4wLTBcbi8vIF4yLjAsIF4yLjAueCAtLT4gPj0yLjAuMCA8My4wLjAtMFxuLy8gXjEuMiwgXjEuMi54IC0tPiA+PTEuMi4wIDwyLjAuMC0wXG4vLyBeMS4yLjMgLS0+ID49MS4yLjMgPDIuMC4wLTBcbi8vIF4xLjIuMCAtLT4gPj0xLjIuMCA8Mi4wLjAtMFxuLy8gXjAuMC4xIC0tPiA+PTAuMC4xIDwwLjAuMi0wXG4vLyBeMC4xLjAgLS0+ID49MC4xLjAgPDAuMi4wLTBcbmNvbnN0IHJlcGxhY2VDYXJldHMgPSAoY29tcCwgb3B0aW9ucykgPT5cbiAgY29tcC50cmltKCkuc3BsaXQoL1xccysvKS5tYXAoKGMpID0+IHtcbiAgICByZXR1cm4gcmVwbGFjZUNhcmV0KGMsIG9wdGlvbnMpXG4gIH0pLmpvaW4oJyAnKVxuXG5jb25zdCByZXBsYWNlQ2FyZXQgPSAoY29tcCwgb3B0aW9ucykgPT4ge1xuICBkZWJ1ZygnY2FyZXQnLCBjb21wLCBvcHRpb25zKVxuICBjb25zdCByID0gb3B0aW9ucy5sb29zZSA/IHJlW3QuQ0FSRVRMT09TRV0gOiByZVt0LkNBUkVUXVxuICBjb25zdCB6ID0gb3B0aW9ucy5pbmNsdWRlUHJlcmVsZWFzZSA/ICctMCcgOiAnJ1xuICByZXR1cm4gY29tcC5yZXBsYWNlKHIsIChfLCBNLCBtLCBwLCBwcikgPT4ge1xuICAgIGRlYnVnKCdjYXJldCcsIGNvbXAsIF8sIE0sIG0sIHAsIHByKVxuICAgIGxldCByZXRcblxuICAgIGlmIChpc1goTSkpIHtcbiAgICAgIHJldCA9ICcnXG4gICAgfSBlbHNlIGlmIChpc1gobSkpIHtcbiAgICAgIHJldCA9IGA+PSR7TX0uMC4wJHt6fSA8JHsrTSArIDF9LjAuMC0wYFxuICAgIH0gZWxzZSBpZiAoaXNYKHApKSB7XG4gICAgICBpZiAoTSA9PT0gJzAnKSB7XG4gICAgICAgIHJldCA9IGA+PSR7TX0uJHttfS4wJHt6fSA8JHtNfS4keyttICsgMX0uMC0wYFxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0ID0gYD49JHtNfS4ke219LjAke3p9IDwkeytNICsgMX0uMC4wLTBgXG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChwcikge1xuICAgICAgZGVidWcoJ3JlcGxhY2VDYXJldCBwcicsIHByKVxuICAgICAgaWYgKE0gPT09ICcwJykge1xuICAgICAgICBpZiAobSA9PT0gJzAnKSB7XG4gICAgICAgICAgcmV0ID0gYD49JHtNfS4ke219LiR7cH0tJHtwclxuICAgICAgICAgIH0gPCR7TX0uJHttfS4keytwICsgMX0tMGBcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXQgPSBgPj0ke019LiR7bX0uJHtwfS0ke3ByXG4gICAgICAgICAgfSA8JHtNfS4keyttICsgMX0uMC0wYFxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXQgPSBgPj0ke019LiR7bX0uJHtwfS0ke3ByXG4gICAgICAgIH0gPCR7K00gKyAxfS4wLjAtMGBcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgZGVidWcoJ25vIHByJylcbiAgICAgIGlmIChNID09PSAnMCcpIHtcbiAgICAgICAgaWYgKG0gPT09ICcwJykge1xuICAgICAgICAgIHJldCA9IGA+PSR7TX0uJHttfS4ke3BcbiAgICAgICAgICB9JHt6fSA8JHtNfS4ke219LiR7K3AgKyAxfS0wYFxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldCA9IGA+PSR7TX0uJHttfS4ke3BcbiAgICAgICAgICB9JHt6fSA8JHtNfS4keyttICsgMX0uMC0wYFxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXQgPSBgPj0ke019LiR7bX0uJHtwXG4gICAgICAgIH0gPCR7K00gKyAxfS4wLjAtMGBcbiAgICAgIH1cbiAgICB9XG5cbiAgICBkZWJ1ZygnY2FyZXQgcmV0dXJuJywgcmV0KVxuICAgIHJldHVybiByZXRcbiAgfSlcbn1cblxuY29uc3QgcmVwbGFjZVhSYW5nZXMgPSAoY29tcCwgb3B0aW9ucykgPT4ge1xuICBkZWJ1ZygncmVwbGFjZVhSYW5nZXMnLCBjb21wLCBvcHRpb25zKVxuICByZXR1cm4gY29tcC5zcGxpdCgvXFxzKy8pLm1hcCgoYykgPT4ge1xuICAgIHJldHVybiByZXBsYWNlWFJhbmdlKGMsIG9wdGlvbnMpXG4gIH0pLmpvaW4oJyAnKVxufVxuXG5jb25zdCByZXBsYWNlWFJhbmdlID0gKGNvbXAsIG9wdGlvbnMpID0+IHtcbiAgY29tcCA9IGNvbXAudHJpbSgpXG4gIGNvbnN0IHIgPSBvcHRpb25zLmxvb3NlID8gcmVbdC5YUkFOR0VMT09TRV0gOiByZVt0LlhSQU5HRV1cbiAgcmV0dXJuIGNvbXAucmVwbGFjZShyLCAocmV0LCBndGx0LCBNLCBtLCBwLCBwcikgPT4ge1xuICAgIGRlYnVnKCd4UmFuZ2UnLCBjb21wLCByZXQsIGd0bHQsIE0sIG0sIHAsIHByKVxuICAgIGNvbnN0IHhNID0gaXNYKE0pXG4gICAgY29uc3QgeG0gPSB4TSB8fCBpc1gobSlcbiAgICBjb25zdCB4cCA9IHhtIHx8IGlzWChwKVxuICAgIGNvbnN0IGFueVggPSB4cFxuXG4gICAgaWYgKGd0bHQgPT09ICc9JyAmJiBhbnlYKSB7XG4gICAgICBndGx0ID0gJydcbiAgICB9XG5cbiAgICAvLyBpZiB3ZSdyZSBpbmNsdWRpbmcgcHJlcmVsZWFzZXMgaW4gdGhlIG1hdGNoLCB0aGVuIHdlIG5lZWRcbiAgICAvLyB0byBmaXggdGhpcyB0byAtMCwgdGhlIGxvd2VzdCBwb3NzaWJsZSBwcmVyZWxlYXNlIHZhbHVlXG4gICAgcHIgPSBvcHRpb25zLmluY2x1ZGVQcmVyZWxlYXNlID8gJy0wJyA6ICcnXG5cbiAgICBpZiAoeE0pIHtcbiAgICAgIGlmIChndGx0ID09PSAnPicgfHwgZ3RsdCA9PT0gJzwnKSB7XG4gICAgICAgIC8vIG5vdGhpbmcgaXMgYWxsb3dlZFxuICAgICAgICByZXQgPSAnPDAuMC4wLTAnXG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBub3RoaW5nIGlzIGZvcmJpZGRlblxuICAgICAgICByZXQgPSAnKidcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGd0bHQgJiYgYW55WCkge1xuICAgICAgLy8gd2Uga25vdyBwYXRjaCBpcyBhbiB4LCBiZWNhdXNlIHdlIGhhdmUgYW55IHggYXQgYWxsLlxuICAgICAgLy8gcmVwbGFjZSBYIHdpdGggMFxuICAgICAgaWYgKHhtKSB7XG4gICAgICAgIG0gPSAwXG4gICAgICB9XG4gICAgICBwID0gMFxuXG4gICAgICBpZiAoZ3RsdCA9PT0gJz4nKSB7XG4gICAgICAgIC8vID4xID0+ID49Mi4wLjBcbiAgICAgICAgLy8gPjEuMiA9PiA+PTEuMy4wXG4gICAgICAgIGd0bHQgPSAnPj0nXG4gICAgICAgIGlmICh4bSkge1xuICAgICAgICAgIE0gPSArTSArIDFcbiAgICAgICAgICBtID0gMFxuICAgICAgICAgIHAgPSAwXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbSA9ICttICsgMVxuICAgICAgICAgIHAgPSAwXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoZ3RsdCA9PT0gJzw9Jykge1xuICAgICAgICAvLyA8PTAuNy54IGlzIGFjdHVhbGx5IDwwLjguMCwgc2luY2UgYW55IDAuNy54IHNob3VsZFxuICAgICAgICAvLyBwYXNzLiAgU2ltaWxhcmx5LCA8PTcueCBpcyBhY3R1YWxseSA8OC4wLjAsIGV0Yy5cbiAgICAgICAgZ3RsdCA9ICc8J1xuICAgICAgICBpZiAoeG0pIHtcbiAgICAgICAgICBNID0gK00gKyAxXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbSA9ICttICsgMVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChndGx0ID09PSAnPCcpIHtcbiAgICAgICAgcHIgPSAnLTAnXG4gICAgICB9XG5cbiAgICAgIHJldCA9IGAke2d0bHQgKyBNfS4ke219LiR7cH0ke3ByfWBcbiAgICB9IGVsc2UgaWYgKHhtKSB7XG4gICAgICByZXQgPSBgPj0ke019LjAuMCR7cHJ9IDwkeytNICsgMX0uMC4wLTBgXG4gICAgfSBlbHNlIGlmICh4cCkge1xuICAgICAgcmV0ID0gYD49JHtNfS4ke219LjAke3ByXG4gICAgICB9IDwke019LiR7K20gKyAxfS4wLTBgXG4gICAgfVxuXG4gICAgZGVidWcoJ3hSYW5nZSByZXR1cm4nLCByZXQpXG5cbiAgICByZXR1cm4gcmV0XG4gIH0pXG59XG5cbi8vIEJlY2F1c2UgKiBpcyBBTkQtZWQgd2l0aCBldmVyeXRoaW5nIGVsc2UgaW4gdGhlIGNvbXBhcmF0b3IsXG4vLyBhbmQgJycgbWVhbnMgXCJhbnkgdmVyc2lvblwiLCBqdXN0IHJlbW92ZSB0aGUgKnMgZW50aXJlbHkuXG5jb25zdCByZXBsYWNlU3RhcnMgPSAoY29tcCwgb3B0aW9ucykgPT4ge1xuICBkZWJ1ZygncmVwbGFjZVN0YXJzJywgY29tcCwgb3B0aW9ucylcbiAgLy8gTG9vc2VuZXNzIGlzIGlnbm9yZWQgaGVyZS4gIHN0YXIgaXMgYWx3YXlzIGFzIGxvb3NlIGFzIGl0IGdldHMhXG4gIHJldHVybiBjb21wLnRyaW0oKS5yZXBsYWNlKHJlW3QuU1RBUl0sICcnKVxufVxuXG5jb25zdCByZXBsYWNlR1RFMCA9IChjb21wLCBvcHRpb25zKSA9PiB7XG4gIGRlYnVnKCdyZXBsYWNlR1RFMCcsIGNvbXAsIG9wdGlvbnMpXG4gIHJldHVybiBjb21wLnRyaW0oKVxuICAgIC5yZXBsYWNlKHJlW29wdGlvbnMuaW5jbHVkZVByZXJlbGVhc2UgPyB0LkdURTBQUkUgOiB0LkdURTBdLCAnJylcbn1cblxuLy8gVGhpcyBmdW5jdGlvbiBpcyBwYXNzZWQgdG8gc3RyaW5nLnJlcGxhY2UocmVbdC5IWVBIRU5SQU5HRV0pXG4vLyBNLCBtLCBwYXRjaCwgcHJlcmVsZWFzZSwgYnVpbGRcbi8vIDEuMiAtIDMuNC41ID0+ID49MS4yLjAgPD0zLjQuNVxuLy8gMS4yLjMgLSAzLjQgPT4gPj0xLjIuMCA8My41LjAtMCBBbnkgMy40Lnggd2lsbCBkb1xuLy8gMS4yIC0gMy40ID0+ID49MS4yLjAgPDMuNS4wLTBcbmNvbnN0IGh5cGhlblJlcGxhY2UgPSBpbmNQciA9PiAoJDAsXG4gIGZyb20sIGZNLCBmbSwgZnAsIGZwciwgZmIsXG4gIHRvLCB0TSwgdG0sIHRwLCB0cHIsIHRiKSA9PiB7XG4gIGlmIChpc1goZk0pKSB7XG4gICAgZnJvbSA9ICcnXG4gIH0gZWxzZSBpZiAoaXNYKGZtKSkge1xuICAgIGZyb20gPSBgPj0ke2ZNfS4wLjAke2luY1ByID8gJy0wJyA6ICcnfWBcbiAgfSBlbHNlIGlmIChpc1goZnApKSB7XG4gICAgZnJvbSA9IGA+PSR7Zk19LiR7Zm19LjAke2luY1ByID8gJy0wJyA6ICcnfWBcbiAgfSBlbHNlIGlmIChmcHIpIHtcbiAgICBmcm9tID0gYD49JHtmcm9tfWBcbiAgfSBlbHNlIHtcbiAgICBmcm9tID0gYD49JHtmcm9tfSR7aW5jUHIgPyAnLTAnIDogJyd9YFxuICB9XG5cbiAgaWYgKGlzWCh0TSkpIHtcbiAgICB0byA9ICcnXG4gIH0gZWxzZSBpZiAoaXNYKHRtKSkge1xuICAgIHRvID0gYDwkeyt0TSArIDF9LjAuMC0wYFxuICB9IGVsc2UgaWYgKGlzWCh0cCkpIHtcbiAgICB0byA9IGA8JHt0TX0uJHsrdG0gKyAxfS4wLTBgXG4gIH0gZWxzZSBpZiAodHByKSB7XG4gICAgdG8gPSBgPD0ke3RNfS4ke3RtfS4ke3RwfS0ke3Rwcn1gXG4gIH0gZWxzZSBpZiAoaW5jUHIpIHtcbiAgICB0byA9IGA8JHt0TX0uJHt0bX0uJHsrdHAgKyAxfS0wYFxuICB9IGVsc2Uge1xuICAgIHRvID0gYDw9JHt0b31gXG4gIH1cblxuICByZXR1cm4gKGAke2Zyb219ICR7dG99YCkudHJpbSgpXG59XG5cbmNvbnN0IHRlc3RTZXQgPSAoc2V0LCB2ZXJzaW9uLCBvcHRpb25zKSA9PiB7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc2V0Lmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKCFzZXRbaV0udGVzdCh2ZXJzaW9uKSkge1xuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuICB9XG5cbiAgaWYgKHZlcnNpb24ucHJlcmVsZWFzZS5sZW5ndGggJiYgIW9wdGlvbnMuaW5jbHVkZVByZXJlbGVhc2UpIHtcbiAgICAvLyBGaW5kIHRoZSBzZXQgb2YgdmVyc2lvbnMgdGhhdCBhcmUgYWxsb3dlZCB0byBoYXZlIHByZXJlbGVhc2VzXG4gICAgLy8gRm9yIGV4YW1wbGUsIF4xLjIuMy1wci4xIGRlc3VnYXJzIHRvID49MS4yLjMtcHIuMSA8Mi4wLjBcbiAgICAvLyBUaGF0IHNob3VsZCBhbGxvdyBgMS4yLjMtcHIuMmAgdG8gcGFzcy5cbiAgICAvLyBIb3dldmVyLCBgMS4yLjQtYWxwaGEubm90cmVhZHlgIHNob3VsZCBOT1QgYmUgYWxsb3dlZCxcbiAgICAvLyBldmVuIHRob3VnaCBpdCdzIHdpdGhpbiB0aGUgcmFuZ2Ugc2V0IGJ5IHRoZSBjb21wYXJhdG9ycy5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNldC5sZW5ndGg7IGkrKykge1xuICAgICAgZGVidWcoc2V0W2ldLnNlbXZlcilcbiAgICAgIGlmIChzZXRbaV0uc2VtdmVyID09PSBDb21wYXJhdG9yLkFOWSkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuXG4gICAgICBpZiAoc2V0W2ldLnNlbXZlci5wcmVyZWxlYXNlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgY29uc3QgYWxsb3dlZCA9IHNldFtpXS5zZW12ZXJcbiAgICAgICAgaWYgKGFsbG93ZWQubWFqb3IgPT09IHZlcnNpb24ubWFqb3IgJiZcbiAgICAgICAgICAgIGFsbG93ZWQubWlub3IgPT09IHZlcnNpb24ubWlub3IgJiZcbiAgICAgICAgICAgIGFsbG93ZWQucGF0Y2ggPT09IHZlcnNpb24ucGF0Y2gpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gVmVyc2lvbiBoYXMgYSAtcHJlLCBidXQgaXQncyBub3Qgb25lIG9mIHRoZSBvbmVzIHdlIGxpa2UuXG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICByZXR1cm4gdHJ1ZVxufVxuIiwgImNvbnN0IEFOWSA9IFN5bWJvbCgnU2VtVmVyIEFOWScpXG4vLyBob2lzdGVkIGNsYXNzIGZvciBjeWNsaWMgZGVwZW5kZW5jeVxuY2xhc3MgQ29tcGFyYXRvciB7XG4gIHN0YXRpYyBnZXQgQU5ZICgpIHtcbiAgICByZXR1cm4gQU5ZXG4gIH1cblxuICBjb25zdHJ1Y3RvciAoY29tcCwgb3B0aW9ucykge1xuICAgIG9wdGlvbnMgPSBwYXJzZU9wdGlvbnMob3B0aW9ucylcblxuICAgIGlmIChjb21wIGluc3RhbmNlb2YgQ29tcGFyYXRvcikge1xuICAgICAgaWYgKGNvbXAubG9vc2UgPT09ICEhb3B0aW9ucy5sb29zZSkge1xuICAgICAgICByZXR1cm4gY29tcFxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29tcCA9IGNvbXAudmFsdWVcbiAgICAgIH1cbiAgICB9XG5cbiAgICBkZWJ1ZygnY29tcGFyYXRvcicsIGNvbXAsIG9wdGlvbnMpXG4gICAgdGhpcy5vcHRpb25zID0gb3B0aW9uc1xuICAgIHRoaXMubG9vc2UgPSAhIW9wdGlvbnMubG9vc2VcbiAgICB0aGlzLnBhcnNlKGNvbXApXG5cbiAgICBpZiAodGhpcy5zZW12ZXIgPT09IEFOWSkge1xuICAgICAgdGhpcy52YWx1ZSA9ICcnXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudmFsdWUgPSB0aGlzLm9wZXJhdG9yICsgdGhpcy5zZW12ZXIudmVyc2lvblxuICAgIH1cblxuICAgIGRlYnVnKCdjb21wJywgdGhpcylcbiAgfVxuXG4gIHBhcnNlIChjb21wKSB7XG4gICAgY29uc3QgciA9IHRoaXMub3B0aW9ucy5sb29zZSA/IHJlW3QuQ09NUEFSQVRPUkxPT1NFXSA6IHJlW3QuQ09NUEFSQVRPUl1cbiAgICBjb25zdCBtID0gY29tcC5tYXRjaChyKVxuXG4gICAgaWYgKCFtKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBJbnZhbGlkIGNvbXBhcmF0b3I6ICR7Y29tcH1gKVxuICAgIH1cblxuICAgIHRoaXMub3BlcmF0b3IgPSBtWzFdICE9PSB1bmRlZmluZWQgPyBtWzFdIDogJydcbiAgICBpZiAodGhpcy5vcGVyYXRvciA9PT0gJz0nKSB7XG4gICAgICB0aGlzLm9wZXJhdG9yID0gJydcbiAgICB9XG5cbiAgICAvLyBpZiBpdCBsaXRlcmFsbHkgaXMganVzdCAnPicgb3IgJycgdGhlbiBhbGxvdyBhbnl0aGluZy5cbiAgICBpZiAoIW1bMl0pIHtcbiAgICAgIHRoaXMuc2VtdmVyID0gQU5ZXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VtdmVyID0gbmV3IFNlbVZlcihtWzJdLCB0aGlzLm9wdGlvbnMubG9vc2UpXG4gICAgfVxuICB9XG5cbiAgdG9TdHJpbmcgKCkge1xuICAgIHJldHVybiB0aGlzLnZhbHVlXG4gIH1cblxuICB0ZXN0ICh2ZXJzaW9uKSB7XG4gICAgZGVidWcoJ0NvbXBhcmF0b3IudGVzdCcsIHZlcnNpb24sIHRoaXMub3B0aW9ucy5sb29zZSlcblxuICAgIGlmICh0aGlzLnNlbXZlciA9PT0gQU5ZIHx8IHZlcnNpb24gPT09IEFOWSkge1xuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIHZlcnNpb24gPT09ICdzdHJpbmcnKSB7XG4gICAgICB0cnkge1xuICAgICAgICB2ZXJzaW9uID0gbmV3IFNlbVZlcih2ZXJzaW9uLCB0aGlzLm9wdGlvbnMpXG4gICAgICB9IGNhdGNoIChlcikge1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gY21wKHZlcnNpb24sIHRoaXMub3BlcmF0b3IsIHRoaXMuc2VtdmVyLCB0aGlzLm9wdGlvbnMpXG4gIH1cblxuICBpbnRlcnNlY3RzIChjb21wLCBvcHRpb25zKSB7XG4gICAgaWYgKCEoY29tcCBpbnN0YW5jZW9mIENvbXBhcmF0b3IpKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdhIENvbXBhcmF0b3IgaXMgcmVxdWlyZWQnKVxuICAgIH1cblxuICAgIGlmICghb3B0aW9ucyB8fCB0eXBlb2Ygb3B0aW9ucyAhPT0gJ29iamVjdCcpIHtcbiAgICAgIG9wdGlvbnMgPSB7XG4gICAgICAgIGxvb3NlOiAhIW9wdGlvbnMsXG4gICAgICAgIGluY2x1ZGVQcmVyZWxlYXNlOiBmYWxzZSxcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy5vcGVyYXRvciA9PT0gJycpIHtcbiAgICAgIGlmICh0aGlzLnZhbHVlID09PSAnJykge1xuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfVxuICAgICAgcmV0dXJuIG5ldyBSYW5nZShjb21wLnZhbHVlLCBvcHRpb25zKS50ZXN0KHRoaXMudmFsdWUpXG4gICAgfSBlbHNlIGlmIChjb21wLm9wZXJhdG9yID09PSAnJykge1xuICAgICAgaWYgKGNvbXAudmFsdWUgPT09ICcnKSB7XG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgICB9XG4gICAgICByZXR1cm4gbmV3IFJhbmdlKHRoaXMudmFsdWUsIG9wdGlvbnMpLnRlc3QoY29tcC5zZW12ZXIpXG4gICAgfVxuXG4gICAgY29uc3Qgc2FtZURpcmVjdGlvbkluY3JlYXNpbmcgPVxuICAgICAgKHRoaXMub3BlcmF0b3IgPT09ICc+PScgfHwgdGhpcy5vcGVyYXRvciA9PT0gJz4nKSAmJlxuICAgICAgKGNvbXAub3BlcmF0b3IgPT09ICc+PScgfHwgY29tcC5vcGVyYXRvciA9PT0gJz4nKVxuICAgIGNvbnN0IHNhbWVEaXJlY3Rpb25EZWNyZWFzaW5nID1cbiAgICAgICh0aGlzLm9wZXJhdG9yID09PSAnPD0nIHx8IHRoaXMub3BlcmF0b3IgPT09ICc8JykgJiZcbiAgICAgIChjb21wLm9wZXJhdG9yID09PSAnPD0nIHx8IGNvbXAub3BlcmF0b3IgPT09ICc8JylcbiAgICBjb25zdCBzYW1lU2VtVmVyID0gdGhpcy5zZW12ZXIudmVyc2lvbiA9PT0gY29tcC5zZW12ZXIudmVyc2lvblxuICAgIGNvbnN0IGRpZmZlcmVudERpcmVjdGlvbnNJbmNsdXNpdmUgPVxuICAgICAgKHRoaXMub3BlcmF0b3IgPT09ICc+PScgfHwgdGhpcy5vcGVyYXRvciA9PT0gJzw9JykgJiZcbiAgICAgIChjb21wLm9wZXJhdG9yID09PSAnPj0nIHx8IGNvbXAub3BlcmF0b3IgPT09ICc8PScpXG4gICAgY29uc3Qgb3Bwb3NpdGVEaXJlY3Rpb25zTGVzc1RoYW4gPVxuICAgICAgY21wKHRoaXMuc2VtdmVyLCAnPCcsIGNvbXAuc2VtdmVyLCBvcHRpb25zKSAmJlxuICAgICAgKHRoaXMub3BlcmF0b3IgPT09ICc+PScgfHwgdGhpcy5vcGVyYXRvciA9PT0gJz4nKSAmJlxuICAgICAgICAoY29tcC5vcGVyYXRvciA9PT0gJzw9JyB8fCBjb21wLm9wZXJhdG9yID09PSAnPCcpXG4gICAgY29uc3Qgb3Bwb3NpdGVEaXJlY3Rpb25zR3JlYXRlclRoYW4gPVxuICAgICAgY21wKHRoaXMuc2VtdmVyLCAnPicsIGNvbXAuc2VtdmVyLCBvcHRpb25zKSAmJlxuICAgICAgKHRoaXMub3BlcmF0b3IgPT09ICc8PScgfHwgdGhpcy5vcGVyYXRvciA9PT0gJzwnKSAmJlxuICAgICAgICAoY29tcC5vcGVyYXRvciA9PT0gJz49JyB8fCBjb21wLm9wZXJhdG9yID09PSAnPicpXG5cbiAgICByZXR1cm4gKFxuICAgICAgc2FtZURpcmVjdGlvbkluY3JlYXNpbmcgfHxcbiAgICAgIHNhbWVEaXJlY3Rpb25EZWNyZWFzaW5nIHx8XG4gICAgICAoc2FtZVNlbVZlciAmJiBkaWZmZXJlbnREaXJlY3Rpb25zSW5jbHVzaXZlKSB8fFxuICAgICAgb3Bwb3NpdGVEaXJlY3Rpb25zTGVzc1RoYW4gfHxcbiAgICAgIG9wcG9zaXRlRGlyZWN0aW9uc0dyZWF0ZXJUaGFuXG4gICAgKVxuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gQ29tcGFyYXRvclxuXG5jb25zdCBwYXJzZU9wdGlvbnMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbC9wYXJzZS1vcHRpb25zJylcbmNvbnN0IHsgcmUsIHQgfSA9IHJlcXVpcmUoJy4uL2ludGVybmFsL3JlJylcbmNvbnN0IGNtcCA9IHJlcXVpcmUoJy4uL2Z1bmN0aW9ucy9jbXAnKVxuY29uc3QgZGVidWcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbC9kZWJ1ZycpXG5jb25zdCBTZW1WZXIgPSByZXF1aXJlKCcuL3NlbXZlcicpXG5jb25zdCBSYW5nZSA9IHJlcXVpcmUoJy4vcmFuZ2UnKVxuIiwgImNvbnN0IFJhbmdlID0gcmVxdWlyZSgnLi4vY2xhc3Nlcy9yYW5nZScpXG5jb25zdCBzYXRpc2ZpZXMgPSAodmVyc2lvbiwgcmFuZ2UsIG9wdGlvbnMpID0+IHtcbiAgdHJ5IHtcbiAgICByYW5nZSA9IG5ldyBSYW5nZShyYW5nZSwgb3B0aW9ucylcbiAgfSBjYXRjaCAoZXIpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuICByZXR1cm4gcmFuZ2UudGVzdCh2ZXJzaW9uKVxufVxubW9kdWxlLmV4cG9ydHMgPSBzYXRpc2ZpZXNcbiIsICJjb25zdCBSYW5nZSA9IHJlcXVpcmUoJy4uL2NsYXNzZXMvcmFuZ2UnKVxuXG4vLyBNb3N0bHkganVzdCBmb3IgdGVzdGluZyBhbmQgbGVnYWN5IEFQSSByZWFzb25zXG5jb25zdCB0b0NvbXBhcmF0b3JzID0gKHJhbmdlLCBvcHRpb25zKSA9PlxuICBuZXcgUmFuZ2UocmFuZ2UsIG9wdGlvbnMpLnNldFxuICAgIC5tYXAoY29tcCA9PiBjb21wLm1hcChjID0+IGMudmFsdWUpLmpvaW4oJyAnKS50cmltKCkuc3BsaXQoJyAnKSlcblxubW9kdWxlLmV4cG9ydHMgPSB0b0NvbXBhcmF0b3JzXG4iLCAiY29uc3QgU2VtVmVyID0gcmVxdWlyZSgnLi4vY2xhc3Nlcy9zZW12ZXInKVxuY29uc3QgUmFuZ2UgPSByZXF1aXJlKCcuLi9jbGFzc2VzL3JhbmdlJylcblxuY29uc3QgbWF4U2F0aXNmeWluZyA9ICh2ZXJzaW9ucywgcmFuZ2UsIG9wdGlvbnMpID0+IHtcbiAgbGV0IG1heCA9IG51bGxcbiAgbGV0IG1heFNWID0gbnVsbFxuICBsZXQgcmFuZ2VPYmogPSBudWxsXG4gIHRyeSB7XG4gICAgcmFuZ2VPYmogPSBuZXcgUmFuZ2UocmFuZ2UsIG9wdGlvbnMpXG4gIH0gY2F0Y2ggKGVyKSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuICB2ZXJzaW9ucy5mb3JFYWNoKCh2KSA9PiB7XG4gICAgaWYgKHJhbmdlT2JqLnRlc3QodikpIHtcbiAgICAgIC8vIHNhdGlzZmllcyh2LCByYW5nZSwgb3B0aW9ucylcbiAgICAgIGlmICghbWF4IHx8IG1heFNWLmNvbXBhcmUodikgPT09IC0xKSB7XG4gICAgICAgIC8vIGNvbXBhcmUobWF4LCB2LCB0cnVlKVxuICAgICAgICBtYXggPSB2XG4gICAgICAgIG1heFNWID0gbmV3IFNlbVZlcihtYXgsIG9wdGlvbnMpXG4gICAgICB9XG4gICAgfVxuICB9KVxuICByZXR1cm4gbWF4XG59XG5tb2R1bGUuZXhwb3J0cyA9IG1heFNhdGlzZnlpbmdcbiIsICJjb25zdCBTZW1WZXIgPSByZXF1aXJlKCcuLi9jbGFzc2VzL3NlbXZlcicpXG5jb25zdCBSYW5nZSA9IHJlcXVpcmUoJy4uL2NsYXNzZXMvcmFuZ2UnKVxuY29uc3QgbWluU2F0aXNmeWluZyA9ICh2ZXJzaW9ucywgcmFuZ2UsIG9wdGlvbnMpID0+IHtcbiAgbGV0IG1pbiA9IG51bGxcbiAgbGV0IG1pblNWID0gbnVsbFxuICBsZXQgcmFuZ2VPYmogPSBudWxsXG4gIHRyeSB7XG4gICAgcmFuZ2VPYmogPSBuZXcgUmFuZ2UocmFuZ2UsIG9wdGlvbnMpXG4gIH0gY2F0Y2ggKGVyKSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuICB2ZXJzaW9ucy5mb3JFYWNoKCh2KSA9PiB7XG4gICAgaWYgKHJhbmdlT2JqLnRlc3QodikpIHtcbiAgICAgIC8vIHNhdGlzZmllcyh2LCByYW5nZSwgb3B0aW9ucylcbiAgICAgIGlmICghbWluIHx8IG1pblNWLmNvbXBhcmUodikgPT09IDEpIHtcbiAgICAgICAgLy8gY29tcGFyZShtaW4sIHYsIHRydWUpXG4gICAgICAgIG1pbiA9IHZcbiAgICAgICAgbWluU1YgPSBuZXcgU2VtVmVyKG1pbiwgb3B0aW9ucylcbiAgICAgIH1cbiAgICB9XG4gIH0pXG4gIHJldHVybiBtaW5cbn1cbm1vZHVsZS5leHBvcnRzID0gbWluU2F0aXNmeWluZ1xuIiwgImNvbnN0IFNlbVZlciA9IHJlcXVpcmUoJy4uL2NsYXNzZXMvc2VtdmVyJylcbmNvbnN0IFJhbmdlID0gcmVxdWlyZSgnLi4vY2xhc3Nlcy9yYW5nZScpXG5jb25zdCBndCA9IHJlcXVpcmUoJy4uL2Z1bmN0aW9ucy9ndCcpXG5cbmNvbnN0IG1pblZlcnNpb24gPSAocmFuZ2UsIGxvb3NlKSA9PiB7XG4gIHJhbmdlID0gbmV3IFJhbmdlKHJhbmdlLCBsb29zZSlcblxuICBsZXQgbWludmVyID0gbmV3IFNlbVZlcignMC4wLjAnKVxuICBpZiAocmFuZ2UudGVzdChtaW52ZXIpKSB7XG4gICAgcmV0dXJuIG1pbnZlclxuICB9XG5cbiAgbWludmVyID0gbmV3IFNlbVZlcignMC4wLjAtMCcpXG4gIGlmIChyYW5nZS50ZXN0KG1pbnZlcikpIHtcbiAgICByZXR1cm4gbWludmVyXG4gIH1cblxuICBtaW52ZXIgPSBudWxsXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgcmFuZ2Uuc2V0Lmxlbmd0aDsgKytpKSB7XG4gICAgY29uc3QgY29tcGFyYXRvcnMgPSByYW5nZS5zZXRbaV1cblxuICAgIGxldCBzZXRNaW4gPSBudWxsXG4gICAgY29tcGFyYXRvcnMuZm9yRWFjaCgoY29tcGFyYXRvcikgPT4ge1xuICAgICAgLy8gQ2xvbmUgdG8gYXZvaWQgbWFuaXB1bGF0aW5nIHRoZSBjb21wYXJhdG9yJ3Mgc2VtdmVyIG9iamVjdC5cbiAgICAgIGNvbnN0IGNvbXB2ZXIgPSBuZXcgU2VtVmVyKGNvbXBhcmF0b3Iuc2VtdmVyLnZlcnNpb24pXG4gICAgICBzd2l0Y2ggKGNvbXBhcmF0b3Iub3BlcmF0b3IpIHtcbiAgICAgICAgY2FzZSAnPic6XG4gICAgICAgICAgaWYgKGNvbXB2ZXIucHJlcmVsZWFzZS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIGNvbXB2ZXIucGF0Y2grK1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb21wdmVyLnByZXJlbGVhc2UucHVzaCgwKVxuICAgICAgICAgIH1cbiAgICAgICAgICBjb21wdmVyLnJhdyA9IGNvbXB2ZXIuZm9ybWF0KClcbiAgICAgICAgICAvKiBmYWxsdGhyb3VnaCAqL1xuICAgICAgICBjYXNlICcnOlxuICAgICAgICBjYXNlICc+PSc6XG4gICAgICAgICAgaWYgKCFzZXRNaW4gfHwgZ3QoY29tcHZlciwgc2V0TWluKSkge1xuICAgICAgICAgICAgc2V0TWluID0gY29tcHZlclxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlICc8JzpcbiAgICAgICAgY2FzZSAnPD0nOlxuICAgICAgICAgIC8qIElnbm9yZSBtYXhpbXVtIHZlcnNpb25zICovXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuZXhwZWN0ZWQgb3BlcmF0aW9uOiAke2NvbXBhcmF0b3Iub3BlcmF0b3J9YClcbiAgICAgIH1cbiAgICB9KVxuICAgIGlmIChzZXRNaW4gJiYgKCFtaW52ZXIgfHwgZ3QobWludmVyLCBzZXRNaW4pKSkge1xuICAgICAgbWludmVyID0gc2V0TWluXG4gICAgfVxuICB9XG5cbiAgaWYgKG1pbnZlciAmJiByYW5nZS50ZXN0KG1pbnZlcikpIHtcbiAgICByZXR1cm4gbWludmVyXG4gIH1cblxuICByZXR1cm4gbnVsbFxufVxubW9kdWxlLmV4cG9ydHMgPSBtaW5WZXJzaW9uXG4iLCAiY29uc3QgUmFuZ2UgPSByZXF1aXJlKCcuLi9jbGFzc2VzL3JhbmdlJylcbmNvbnN0IHZhbGlkUmFuZ2UgPSAocmFuZ2UsIG9wdGlvbnMpID0+IHtcbiAgdHJ5IHtcbiAgICAvLyBSZXR1cm4gJyonIGluc3RlYWQgb2YgJycgc28gdGhhdCB0cnV0aGluZXNzIHdvcmtzLlxuICAgIC8vIFRoaXMgd2lsbCB0aHJvdyBpZiBpdCdzIGludmFsaWQgYW55d2F5XG4gICAgcmV0dXJuIG5ldyBSYW5nZShyYW5nZSwgb3B0aW9ucykucmFuZ2UgfHwgJyonXG4gIH0gY2F0Y2ggKGVyKSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxufVxubW9kdWxlLmV4cG9ydHMgPSB2YWxpZFJhbmdlXG4iLCAiY29uc3QgU2VtVmVyID0gcmVxdWlyZSgnLi4vY2xhc3Nlcy9zZW12ZXInKVxuY29uc3QgQ29tcGFyYXRvciA9IHJlcXVpcmUoJy4uL2NsYXNzZXMvY29tcGFyYXRvcicpXG5jb25zdCB7IEFOWSB9ID0gQ29tcGFyYXRvclxuY29uc3QgUmFuZ2UgPSByZXF1aXJlKCcuLi9jbGFzc2VzL3JhbmdlJylcbmNvbnN0IHNhdGlzZmllcyA9IHJlcXVpcmUoJy4uL2Z1bmN0aW9ucy9zYXRpc2ZpZXMnKVxuY29uc3QgZ3QgPSByZXF1aXJlKCcuLi9mdW5jdGlvbnMvZ3QnKVxuY29uc3QgbHQgPSByZXF1aXJlKCcuLi9mdW5jdGlvbnMvbHQnKVxuY29uc3QgbHRlID0gcmVxdWlyZSgnLi4vZnVuY3Rpb25zL2x0ZScpXG5jb25zdCBndGUgPSByZXF1aXJlKCcuLi9mdW5jdGlvbnMvZ3RlJylcblxuY29uc3Qgb3V0c2lkZSA9ICh2ZXJzaW9uLCByYW5nZSwgaGlsbywgb3B0aW9ucykgPT4ge1xuICB2ZXJzaW9uID0gbmV3IFNlbVZlcih2ZXJzaW9uLCBvcHRpb25zKVxuICByYW5nZSA9IG5ldyBSYW5nZShyYW5nZSwgb3B0aW9ucylcblxuICBsZXQgZ3RmbiwgbHRlZm4sIGx0Zm4sIGNvbXAsIGVjb21wXG4gIHN3aXRjaCAoaGlsbykge1xuICAgIGNhc2UgJz4nOlxuICAgICAgZ3RmbiA9IGd0XG4gICAgICBsdGVmbiA9IGx0ZVxuICAgICAgbHRmbiA9IGx0XG4gICAgICBjb21wID0gJz4nXG4gICAgICBlY29tcCA9ICc+PSdcbiAgICAgIGJyZWFrXG4gICAgY2FzZSAnPCc6XG4gICAgICBndGZuID0gbHRcbiAgICAgIGx0ZWZuID0gZ3RlXG4gICAgICBsdGZuID0gZ3RcbiAgICAgIGNvbXAgPSAnPCdcbiAgICAgIGVjb21wID0gJzw9J1xuICAgICAgYnJlYWtcbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignTXVzdCBwcm92aWRlIGEgaGlsbyB2YWwgb2YgXCI8XCIgb3IgXCI+XCInKVxuICB9XG5cbiAgLy8gSWYgaXQgc2F0aXNmaWVzIHRoZSByYW5nZSBpdCBpcyBub3Qgb3V0c2lkZVxuICBpZiAoc2F0aXNmaWVzKHZlcnNpb24sIHJhbmdlLCBvcHRpb25zKSkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgLy8gRnJvbSBub3cgb24sIHZhcmlhYmxlIHRlcm1zIGFyZSBhcyBpZiB3ZSdyZSBpbiBcImd0clwiIG1vZGUuXG4gIC8vIGJ1dCBub3RlIHRoYXQgZXZlcnl0aGluZyBpcyBmbGlwcGVkIGZvciB0aGUgXCJsdHJcIiBmdW5jdGlvbi5cblxuICBmb3IgKGxldCBpID0gMDsgaSA8IHJhbmdlLnNldC5sZW5ndGg7ICsraSkge1xuICAgIGNvbnN0IGNvbXBhcmF0b3JzID0gcmFuZ2Uuc2V0W2ldXG5cbiAgICBsZXQgaGlnaCA9IG51bGxcbiAgICBsZXQgbG93ID0gbnVsbFxuXG4gICAgY29tcGFyYXRvcnMuZm9yRWFjaCgoY29tcGFyYXRvcikgPT4ge1xuICAgICAgaWYgKGNvbXBhcmF0b3Iuc2VtdmVyID09PSBBTlkpIHtcbiAgICAgICAgY29tcGFyYXRvciA9IG5ldyBDb21wYXJhdG9yKCc+PTAuMC4wJylcbiAgICAgIH1cbiAgICAgIGhpZ2ggPSBoaWdoIHx8IGNvbXBhcmF0b3JcbiAgICAgIGxvdyA9IGxvdyB8fCBjb21wYXJhdG9yXG4gICAgICBpZiAoZ3Rmbihjb21wYXJhdG9yLnNlbXZlciwgaGlnaC5zZW12ZXIsIG9wdGlvbnMpKSB7XG4gICAgICAgIGhpZ2ggPSBjb21wYXJhdG9yXG4gICAgICB9IGVsc2UgaWYgKGx0Zm4oY29tcGFyYXRvci5zZW12ZXIsIGxvdy5zZW12ZXIsIG9wdGlvbnMpKSB7XG4gICAgICAgIGxvdyA9IGNvbXBhcmF0b3JcbiAgICAgIH1cbiAgICB9KVxuXG4gICAgLy8gSWYgdGhlIGVkZ2UgdmVyc2lvbiBjb21wYXJhdG9yIGhhcyBhIG9wZXJhdG9yIHRoZW4gb3VyIHZlcnNpb25cbiAgICAvLyBpc24ndCBvdXRzaWRlIGl0XG4gICAgaWYgKGhpZ2gub3BlcmF0b3IgPT09IGNvbXAgfHwgaGlnaC5vcGVyYXRvciA9PT0gZWNvbXApIHtcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cblxuICAgIC8vIElmIHRoZSBsb3dlc3QgdmVyc2lvbiBjb21wYXJhdG9yIGhhcyBhbiBvcGVyYXRvciBhbmQgb3VyIHZlcnNpb25cbiAgICAvLyBpcyBsZXNzIHRoYW4gaXQgdGhlbiBpdCBpc24ndCBoaWdoZXIgdGhhbiB0aGUgcmFuZ2VcbiAgICBpZiAoKCFsb3cub3BlcmF0b3IgfHwgbG93Lm9wZXJhdG9yID09PSBjb21wKSAmJlxuICAgICAgICBsdGVmbih2ZXJzaW9uLCBsb3cuc2VtdmVyKSkge1xuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfSBlbHNlIGlmIChsb3cub3BlcmF0b3IgPT09IGVjb21wICYmIGx0Zm4odmVyc2lvbiwgbG93LnNlbXZlcikpIHtcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cbiAgfVxuICByZXR1cm4gdHJ1ZVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG91dHNpZGVcbiIsICIvLyBEZXRlcm1pbmUgaWYgdmVyc2lvbiBpcyBncmVhdGVyIHRoYW4gYWxsIHRoZSB2ZXJzaW9ucyBwb3NzaWJsZSBpbiB0aGUgcmFuZ2UuXG5jb25zdCBvdXRzaWRlID0gcmVxdWlyZSgnLi9vdXRzaWRlJylcbmNvbnN0IGd0ciA9ICh2ZXJzaW9uLCByYW5nZSwgb3B0aW9ucykgPT4gb3V0c2lkZSh2ZXJzaW9uLCByYW5nZSwgJz4nLCBvcHRpb25zKVxubW9kdWxlLmV4cG9ydHMgPSBndHJcbiIsICJjb25zdCBvdXRzaWRlID0gcmVxdWlyZSgnLi9vdXRzaWRlJylcbi8vIERldGVybWluZSBpZiB2ZXJzaW9uIGlzIGxlc3MgdGhhbiBhbGwgdGhlIHZlcnNpb25zIHBvc3NpYmxlIGluIHRoZSByYW5nZVxuY29uc3QgbHRyID0gKHZlcnNpb24sIHJhbmdlLCBvcHRpb25zKSA9PiBvdXRzaWRlKHZlcnNpb24sIHJhbmdlLCAnPCcsIG9wdGlvbnMpXG5tb2R1bGUuZXhwb3J0cyA9IGx0clxuIiwgImNvbnN0IFJhbmdlID0gcmVxdWlyZSgnLi4vY2xhc3Nlcy9yYW5nZScpXG5jb25zdCBpbnRlcnNlY3RzID0gKHIxLCByMiwgb3B0aW9ucykgPT4ge1xuICByMSA9IG5ldyBSYW5nZShyMSwgb3B0aW9ucylcbiAgcjIgPSBuZXcgUmFuZ2UocjIsIG9wdGlvbnMpXG4gIHJldHVybiByMS5pbnRlcnNlY3RzKHIyKVxufVxubW9kdWxlLmV4cG9ydHMgPSBpbnRlcnNlY3RzXG4iLCAiLy8gZ2l2ZW4gYSBzZXQgb2YgdmVyc2lvbnMgYW5kIGEgcmFuZ2UsIGNyZWF0ZSBhIFwic2ltcGxpZmllZFwiIHJhbmdlXG4vLyB0aGF0IGluY2x1ZGVzIHRoZSBzYW1lIHZlcnNpb25zIHRoYXQgdGhlIG9yaWdpbmFsIHJhbmdlIGRvZXNcbi8vIElmIHRoZSBvcmlnaW5hbCByYW5nZSBpcyBzaG9ydGVyIHRoYW4gdGhlIHNpbXBsaWZpZWQgb25lLCByZXR1cm4gdGhhdC5cbmNvbnN0IHNhdGlzZmllcyA9IHJlcXVpcmUoJy4uL2Z1bmN0aW9ucy9zYXRpc2ZpZXMuanMnKVxuY29uc3QgY29tcGFyZSA9IHJlcXVpcmUoJy4uL2Z1bmN0aW9ucy9jb21wYXJlLmpzJylcbm1vZHVsZS5leHBvcnRzID0gKHZlcnNpb25zLCByYW5nZSwgb3B0aW9ucykgPT4ge1xuICBjb25zdCBzZXQgPSBbXVxuICBsZXQgZmlyc3QgPSBudWxsXG4gIGxldCBwcmV2ID0gbnVsbFxuICBjb25zdCB2ID0gdmVyc2lvbnMuc29ydCgoYSwgYikgPT4gY29tcGFyZShhLCBiLCBvcHRpb25zKSlcbiAgZm9yIChjb25zdCB2ZXJzaW9uIG9mIHYpIHtcbiAgICBjb25zdCBpbmNsdWRlZCA9IHNhdGlzZmllcyh2ZXJzaW9uLCByYW5nZSwgb3B0aW9ucylcbiAgICBpZiAoaW5jbHVkZWQpIHtcbiAgICAgIHByZXYgPSB2ZXJzaW9uXG4gICAgICBpZiAoIWZpcnN0KSB7XG4gICAgICAgIGZpcnN0ID0gdmVyc2lvblxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAocHJldikge1xuICAgICAgICBzZXQucHVzaChbZmlyc3QsIHByZXZdKVxuICAgICAgfVxuICAgICAgcHJldiA9IG51bGxcbiAgICAgIGZpcnN0ID0gbnVsbFxuICAgIH1cbiAgfVxuICBpZiAoZmlyc3QpIHtcbiAgICBzZXQucHVzaChbZmlyc3QsIG51bGxdKVxuICB9XG5cbiAgY29uc3QgcmFuZ2VzID0gW11cbiAgZm9yIChjb25zdCBbbWluLCBtYXhdIG9mIHNldCkge1xuICAgIGlmIChtaW4gPT09IG1heCkge1xuICAgICAgcmFuZ2VzLnB1c2gobWluKVxuICAgIH0gZWxzZSBpZiAoIW1heCAmJiBtaW4gPT09IHZbMF0pIHtcbiAgICAgIHJhbmdlcy5wdXNoKCcqJylcbiAgICB9IGVsc2UgaWYgKCFtYXgpIHtcbiAgICAgIHJhbmdlcy5wdXNoKGA+PSR7bWlufWApXG4gICAgfSBlbHNlIGlmIChtaW4gPT09IHZbMF0pIHtcbiAgICAgIHJhbmdlcy5wdXNoKGA8PSR7bWF4fWApXG4gICAgfSBlbHNlIHtcbiAgICAgIHJhbmdlcy5wdXNoKGAke21pbn0gLSAke21heH1gKVxuICAgIH1cbiAgfVxuICBjb25zdCBzaW1wbGlmaWVkID0gcmFuZ2VzLmpvaW4oJyB8fCAnKVxuICBjb25zdCBvcmlnaW5hbCA9IHR5cGVvZiByYW5nZS5yYXcgPT09ICdzdHJpbmcnID8gcmFuZ2UucmF3IDogU3RyaW5nKHJhbmdlKVxuICByZXR1cm4gc2ltcGxpZmllZC5sZW5ndGggPCBvcmlnaW5hbC5sZW5ndGggPyBzaW1wbGlmaWVkIDogcmFuZ2Vcbn1cbiIsICJjb25zdCBSYW5nZSA9IHJlcXVpcmUoJy4uL2NsYXNzZXMvcmFuZ2UuanMnKVxuY29uc3QgQ29tcGFyYXRvciA9IHJlcXVpcmUoJy4uL2NsYXNzZXMvY29tcGFyYXRvci5qcycpXG5jb25zdCB7IEFOWSB9ID0gQ29tcGFyYXRvclxuY29uc3Qgc2F0aXNmaWVzID0gcmVxdWlyZSgnLi4vZnVuY3Rpb25zL3NhdGlzZmllcy5qcycpXG5jb25zdCBjb21wYXJlID0gcmVxdWlyZSgnLi4vZnVuY3Rpb25zL2NvbXBhcmUuanMnKVxuXG4vLyBDb21wbGV4IHJhbmdlIGByMSB8fCByMiB8fCAuLi5gIGlzIGEgc3Vic2V0IG9mIGBSMSB8fCBSMiB8fCAuLi5gIGlmZjpcbi8vIC0gRXZlcnkgc2ltcGxlIHJhbmdlIGByMSwgcjIsIC4uLmAgaXMgYSBudWxsIHNldCwgT1Jcbi8vIC0gRXZlcnkgc2ltcGxlIHJhbmdlIGByMSwgcjIsIC4uLmAgd2hpY2ggaXMgbm90IGEgbnVsbCBzZXQgaXMgYSBzdWJzZXQgb2Zcbi8vICAgc29tZSBgUjEsIFIyLCAuLi5gXG4vL1xuLy8gU2ltcGxlIHJhbmdlIGBjMSBjMiAuLi5gIGlzIGEgc3Vic2V0IG9mIHNpbXBsZSByYW5nZSBgQzEgQzIgLi4uYCBpZmY6XG4vLyAtIElmIGMgaXMgb25seSB0aGUgQU5ZIGNvbXBhcmF0b3Jcbi8vICAgLSBJZiBDIGlzIG9ubHkgdGhlIEFOWSBjb21wYXJhdG9yLCByZXR1cm4gdHJ1ZVxuLy8gICAtIEVsc2UgaWYgaW4gcHJlcmVsZWFzZSBtb2RlLCByZXR1cm4gZmFsc2Vcbi8vICAgLSBlbHNlIHJlcGxhY2UgYyB3aXRoIGBbPj0wLjAuMF1gXG4vLyAtIElmIEMgaXMgb25seSB0aGUgQU5ZIGNvbXBhcmF0b3Jcbi8vICAgLSBpZiBpbiBwcmVyZWxlYXNlIG1vZGUsIHJldHVybiB0cnVlXG4vLyAgIC0gZWxzZSByZXBsYWNlIEMgd2l0aCBgWz49MC4wLjBdYFxuLy8gLSBMZXQgRVEgYmUgdGhlIHNldCBvZiA9IGNvbXBhcmF0b3JzIGluIGNcbi8vIC0gSWYgRVEgaXMgbW9yZSB0aGFuIG9uZSwgcmV0dXJuIHRydWUgKG51bGwgc2V0KVxuLy8gLSBMZXQgR1QgYmUgdGhlIGhpZ2hlc3QgPiBvciA+PSBjb21wYXJhdG9yIGluIGNcbi8vIC0gTGV0IExUIGJlIHRoZSBsb3dlc3QgPCBvciA8PSBjb21wYXJhdG9yIGluIGNcbi8vIC0gSWYgR1QgYW5kIExULCBhbmQgR1Quc2VtdmVyID4gTFQuc2VtdmVyLCByZXR1cm4gdHJ1ZSAobnVsbCBzZXQpXG4vLyAtIElmIGFueSBDIGlzIGEgPSByYW5nZSwgYW5kIEdUIG9yIExUIGFyZSBzZXQsIHJldHVybiBmYWxzZVxuLy8gLSBJZiBFUVxuLy8gICAtIElmIEdULCBhbmQgRVEgZG9lcyBub3Qgc2F0aXNmeSBHVCwgcmV0dXJuIHRydWUgKG51bGwgc2V0KVxuLy8gICAtIElmIExULCBhbmQgRVEgZG9lcyBub3Qgc2F0aXNmeSBMVCwgcmV0dXJuIHRydWUgKG51bGwgc2V0KVxuLy8gICAtIElmIEVRIHNhdGlzZmllcyBldmVyeSBDLCByZXR1cm4gdHJ1ZVxuLy8gICAtIEVsc2UgcmV0dXJuIGZhbHNlXG4vLyAtIElmIEdUXG4vLyAgIC0gSWYgR1Quc2VtdmVyIGlzIGxvd2VyIHRoYW4gYW55ID4gb3IgPj0gY29tcCBpbiBDLCByZXR1cm4gZmFsc2Vcbi8vICAgLSBJZiBHVCBpcyA+PSwgYW5kIEdULnNlbXZlciBkb2VzIG5vdCBzYXRpc2Z5IGV2ZXJ5IEMsIHJldHVybiBmYWxzZVxuLy8gICAtIElmIEdULnNlbXZlciBoYXMgYSBwcmVyZWxlYXNlLCBhbmQgbm90IGluIHByZXJlbGVhc2UgbW9kZVxuLy8gICAgIC0gSWYgbm8gQyBoYXMgYSBwcmVyZWxlYXNlIGFuZCB0aGUgR1Quc2VtdmVyIHR1cGxlLCByZXR1cm4gZmFsc2Vcbi8vIC0gSWYgTFRcbi8vICAgLSBJZiBMVC5zZW12ZXIgaXMgZ3JlYXRlciB0aGFuIGFueSA8IG9yIDw9IGNvbXAgaW4gQywgcmV0dXJuIGZhbHNlXG4vLyAgIC0gSWYgTFQgaXMgPD0sIGFuZCBMVC5zZW12ZXIgZG9lcyBub3Qgc2F0aXNmeSBldmVyeSBDLCByZXR1cm4gZmFsc2Vcbi8vICAgLSBJZiBHVC5zZW12ZXIgaGFzIGEgcHJlcmVsZWFzZSwgYW5kIG5vdCBpbiBwcmVyZWxlYXNlIG1vZGVcbi8vICAgICAtIElmIG5vIEMgaGFzIGEgcHJlcmVsZWFzZSBhbmQgdGhlIExULnNlbXZlciB0dXBsZSwgcmV0dXJuIGZhbHNlXG4vLyAtIEVsc2UgcmV0dXJuIHRydWVcblxuY29uc3Qgc3Vic2V0ID0gKHN1YiwgZG9tLCBvcHRpb25zID0ge30pID0+IHtcbiAgaWYgKHN1YiA9PT0gZG9tKSB7XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIHN1YiA9IG5ldyBSYW5nZShzdWIsIG9wdGlvbnMpXG4gIGRvbSA9IG5ldyBSYW5nZShkb20sIG9wdGlvbnMpXG4gIGxldCBzYXdOb25OdWxsID0gZmFsc2VcblxuICBPVVRFUjogZm9yIChjb25zdCBzaW1wbGVTdWIgb2Ygc3ViLnNldCkge1xuICAgIGZvciAoY29uc3Qgc2ltcGxlRG9tIG9mIGRvbS5zZXQpIHtcbiAgICAgIGNvbnN0IGlzU3ViID0gc2ltcGxlU3Vic2V0KHNpbXBsZVN1Yiwgc2ltcGxlRG9tLCBvcHRpb25zKVxuICAgICAgc2F3Tm9uTnVsbCA9IHNhd05vbk51bGwgfHwgaXNTdWIgIT09IG51bGxcbiAgICAgIGlmIChpc1N1Yikge1xuICAgICAgICBjb250aW51ZSBPVVRFUlxuICAgICAgfVxuICAgIH1cbiAgICAvLyB0aGUgbnVsbCBzZXQgaXMgYSBzdWJzZXQgb2YgZXZlcnl0aGluZywgYnV0IG51bGwgc2ltcGxlIHJhbmdlcyBpblxuICAgIC8vIGEgY29tcGxleCByYW5nZSBzaG91bGQgYmUgaWdub3JlZC4gIHNvIGlmIHdlIHNhdyBhIG5vbi1udWxsIHJhbmdlLFxuICAgIC8vIHRoZW4gd2Uga25vdyB0aGlzIGlzbid0IGEgc3Vic2V0LCBidXQgaWYgRVZFUlkgc2ltcGxlIHJhbmdlIHdhcyBudWxsLFxuICAgIC8vIHRoZW4gaXQgaXMgYSBzdWJzZXQuXG4gICAgaWYgKHNhd05vbk51bGwpIHtcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cbiAgfVxuICByZXR1cm4gdHJ1ZVxufVxuXG5jb25zdCBzaW1wbGVTdWJzZXQgPSAoc3ViLCBkb20sIG9wdGlvbnMpID0+IHtcbiAgaWYgKHN1YiA9PT0gZG9tKSB7XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIGlmIChzdWIubGVuZ3RoID09PSAxICYmIHN1YlswXS5zZW12ZXIgPT09IEFOWSkge1xuICAgIGlmIChkb20ubGVuZ3RoID09PSAxICYmIGRvbVswXS5zZW12ZXIgPT09IEFOWSkge1xuICAgICAgcmV0dXJuIHRydWVcbiAgICB9IGVsc2UgaWYgKG9wdGlvbnMuaW5jbHVkZVByZXJlbGVhc2UpIHtcbiAgICAgIHN1YiA9IFtuZXcgQ29tcGFyYXRvcignPj0wLjAuMC0wJyldXG4gICAgfSBlbHNlIHtcbiAgICAgIHN1YiA9IFtuZXcgQ29tcGFyYXRvcignPj0wLjAuMCcpXVxuICAgIH1cbiAgfVxuXG4gIGlmIChkb20ubGVuZ3RoID09PSAxICYmIGRvbVswXS5zZW12ZXIgPT09IEFOWSkge1xuICAgIGlmIChvcHRpb25zLmluY2x1ZGVQcmVyZWxlYXNlKSB7XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH0gZWxzZSB7XG4gICAgICBkb20gPSBbbmV3IENvbXBhcmF0b3IoJz49MC4wLjAnKV1cbiAgICB9XG4gIH1cblxuICBjb25zdCBlcVNldCA9IG5ldyBTZXQoKVxuICBsZXQgZ3QsIGx0XG4gIGZvciAoY29uc3QgYyBvZiBzdWIpIHtcbiAgICBpZiAoYy5vcGVyYXRvciA9PT0gJz4nIHx8IGMub3BlcmF0b3IgPT09ICc+PScpIHtcbiAgICAgIGd0ID0gaGlnaGVyR1QoZ3QsIGMsIG9wdGlvbnMpXG4gICAgfSBlbHNlIGlmIChjLm9wZXJhdG9yID09PSAnPCcgfHwgYy5vcGVyYXRvciA9PT0gJzw9Jykge1xuICAgICAgbHQgPSBsb3dlckxUKGx0LCBjLCBvcHRpb25zKVxuICAgIH0gZWxzZSB7XG4gICAgICBlcVNldC5hZGQoYy5zZW12ZXIpXG4gICAgfVxuICB9XG5cbiAgaWYgKGVxU2V0LnNpemUgPiAxKSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIGxldCBndGx0Q29tcFxuICBpZiAoZ3QgJiYgbHQpIHtcbiAgICBndGx0Q29tcCA9IGNvbXBhcmUoZ3Quc2VtdmVyLCBsdC5zZW12ZXIsIG9wdGlvbnMpXG4gICAgaWYgKGd0bHRDb21wID4gMCkge1xuICAgICAgcmV0dXJuIG51bGxcbiAgICB9IGVsc2UgaWYgKGd0bHRDb21wID09PSAwICYmIChndC5vcGVyYXRvciAhPT0gJz49JyB8fCBsdC5vcGVyYXRvciAhPT0gJzw9JykpIHtcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuICB9XG5cbiAgLy8gd2lsbCBpdGVyYXRlIG9uZSBvciB6ZXJvIHRpbWVzXG4gIGZvciAoY29uc3QgZXEgb2YgZXFTZXQpIHtcbiAgICBpZiAoZ3QgJiYgIXNhdGlzZmllcyhlcSwgU3RyaW5nKGd0KSwgb3B0aW9ucykpIHtcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuXG4gICAgaWYgKGx0ICYmICFzYXRpc2ZpZXMoZXEsIFN0cmluZyhsdCksIG9wdGlvbnMpKSB7XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cblxuICAgIGZvciAoY29uc3QgYyBvZiBkb20pIHtcbiAgICAgIGlmICghc2F0aXNmaWVzKGVxLCBTdHJpbmcoYyksIG9wdGlvbnMpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICBsZXQgaGlnaGVyLCBsb3dlclxuICBsZXQgaGFzRG9tTFQsIGhhc0RvbUdUXG4gIC8vIGlmIHRoZSBzdWJzZXQgaGFzIGEgcHJlcmVsZWFzZSwgd2UgbmVlZCBhIGNvbXBhcmF0b3IgaW4gdGhlIHN1cGVyc2V0XG4gIC8vIHdpdGggdGhlIHNhbWUgdHVwbGUgYW5kIGEgcHJlcmVsZWFzZSwgb3IgaXQncyBub3QgYSBzdWJzZXRcbiAgbGV0IG5lZWREb21MVFByZSA9IGx0ICYmXG4gICAgIW9wdGlvbnMuaW5jbHVkZVByZXJlbGVhc2UgJiZcbiAgICBsdC5zZW12ZXIucHJlcmVsZWFzZS5sZW5ndGggPyBsdC5zZW12ZXIgOiBmYWxzZVxuICBsZXQgbmVlZERvbUdUUHJlID0gZ3QgJiZcbiAgICAhb3B0aW9ucy5pbmNsdWRlUHJlcmVsZWFzZSAmJlxuICAgIGd0LnNlbXZlci5wcmVyZWxlYXNlLmxlbmd0aCA/IGd0LnNlbXZlciA6IGZhbHNlXG4gIC8vIGV4Y2VwdGlvbjogPDEuMi4zLTAgaXMgdGhlIHNhbWUgYXMgPDEuMi4zXG4gIGlmIChuZWVkRG9tTFRQcmUgJiYgbmVlZERvbUxUUHJlLnByZXJlbGVhc2UubGVuZ3RoID09PSAxICYmXG4gICAgICBsdC5vcGVyYXRvciA9PT0gJzwnICYmIG5lZWREb21MVFByZS5wcmVyZWxlYXNlWzBdID09PSAwKSB7XG4gICAgbmVlZERvbUxUUHJlID0gZmFsc2VcbiAgfVxuXG4gIGZvciAoY29uc3QgYyBvZiBkb20pIHtcbiAgICBoYXNEb21HVCA9IGhhc0RvbUdUIHx8IGMub3BlcmF0b3IgPT09ICc+JyB8fCBjLm9wZXJhdG9yID09PSAnPj0nXG4gICAgaGFzRG9tTFQgPSBoYXNEb21MVCB8fCBjLm9wZXJhdG9yID09PSAnPCcgfHwgYy5vcGVyYXRvciA9PT0gJzw9J1xuICAgIGlmIChndCkge1xuICAgICAgaWYgKG5lZWREb21HVFByZSkge1xuICAgICAgICBpZiAoYy5zZW12ZXIucHJlcmVsZWFzZSAmJiBjLnNlbXZlci5wcmVyZWxlYXNlLmxlbmd0aCAmJlxuICAgICAgICAgICAgYy5zZW12ZXIubWFqb3IgPT09IG5lZWREb21HVFByZS5tYWpvciAmJlxuICAgICAgICAgICAgYy5zZW12ZXIubWlub3IgPT09IG5lZWREb21HVFByZS5taW5vciAmJlxuICAgICAgICAgICAgYy5zZW12ZXIucGF0Y2ggPT09IG5lZWREb21HVFByZS5wYXRjaCkge1xuICAgICAgICAgIG5lZWREb21HVFByZSA9IGZhbHNlXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChjLm9wZXJhdG9yID09PSAnPicgfHwgYy5vcGVyYXRvciA9PT0gJz49Jykge1xuICAgICAgICBoaWdoZXIgPSBoaWdoZXJHVChndCwgYywgb3B0aW9ucylcbiAgICAgICAgaWYgKGhpZ2hlciA9PT0gYyAmJiBoaWdoZXIgIT09IGd0KSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoZ3Qub3BlcmF0b3IgPT09ICc+PScgJiYgIXNhdGlzZmllcyhndC5zZW12ZXIsIFN0cmluZyhjKSwgb3B0aW9ucykpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChsdCkge1xuICAgICAgaWYgKG5lZWREb21MVFByZSkge1xuICAgICAgICBpZiAoYy5zZW12ZXIucHJlcmVsZWFzZSAmJiBjLnNlbXZlci5wcmVyZWxlYXNlLmxlbmd0aCAmJlxuICAgICAgICAgICAgYy5zZW12ZXIubWFqb3IgPT09IG5lZWREb21MVFByZS5tYWpvciAmJlxuICAgICAgICAgICAgYy5zZW12ZXIubWlub3IgPT09IG5lZWREb21MVFByZS5taW5vciAmJlxuICAgICAgICAgICAgYy5zZW12ZXIucGF0Y2ggPT09IG5lZWREb21MVFByZS5wYXRjaCkge1xuICAgICAgICAgIG5lZWREb21MVFByZSA9IGZhbHNlXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChjLm9wZXJhdG9yID09PSAnPCcgfHwgYy5vcGVyYXRvciA9PT0gJzw9Jykge1xuICAgICAgICBsb3dlciA9IGxvd2VyTFQobHQsIGMsIG9wdGlvbnMpXG4gICAgICAgIGlmIChsb3dlciA9PT0gYyAmJiBsb3dlciAhPT0gbHQpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChsdC5vcGVyYXRvciA9PT0gJzw9JyAmJiAhc2F0aXNmaWVzKGx0LnNlbXZlciwgU3RyaW5nKGMpLCBvcHRpb25zKSkge1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKCFjLm9wZXJhdG9yICYmIChsdCB8fCBndCkgJiYgZ3RsdENvbXAgIT09IDApIHtcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cbiAgfVxuXG4gIC8vIGlmIHRoZXJlIHdhcyBhIDwgb3IgPiwgYW5kIG5vdGhpbmcgaW4gdGhlIGRvbSwgdGhlbiBtdXN0IGJlIGZhbHNlXG4gIC8vIFVOTEVTUyBpdCB3YXMgbGltaXRlZCBieSBhbm90aGVyIHJhbmdlIGluIHRoZSBvdGhlciBkaXJlY3Rpb24uXG4gIC8vIEVnLCA+MS4wLjAgPDEuMC4xIGlzIHN0aWxsIGEgc3Vic2V0IG9mIDwyLjAuMFxuICBpZiAoZ3QgJiYgaGFzRG9tTFQgJiYgIWx0ICYmIGd0bHRDb21wICE9PSAwKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICBpZiAobHQgJiYgaGFzRG9tR1QgJiYgIWd0ICYmIGd0bHRDb21wICE9PSAwKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICAvLyB3ZSBuZWVkZWQgYSBwcmVyZWxlYXNlIHJhbmdlIGluIGEgc3BlY2lmaWMgdHVwbGUsIGJ1dCBkaWRuJ3QgZ2V0IG9uZVxuICAvLyB0aGVuIHRoaXMgaXNuJ3QgYSBzdWJzZXQuICBlZyA+PTEuMi4zLXByZSBpcyBub3QgYSBzdWJzZXQgb2YgPj0xLjAuMCxcbiAgLy8gYmVjYXVzZSBpdCBpbmNsdWRlcyBwcmVyZWxlYXNlcyBpbiB0aGUgMS4yLjMgdHVwbGVcbiAgaWYgKG5lZWREb21HVFByZSB8fCBuZWVkRG9tTFRQcmUpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIHJldHVybiB0cnVlXG59XG5cbi8vID49MS4yLjMgaXMgbG93ZXIgdGhhbiA+MS4yLjNcbmNvbnN0IGhpZ2hlckdUID0gKGEsIGIsIG9wdGlvbnMpID0+IHtcbiAgaWYgKCFhKSB7XG4gICAgcmV0dXJuIGJcbiAgfVxuICBjb25zdCBjb21wID0gY29tcGFyZShhLnNlbXZlciwgYi5zZW12ZXIsIG9wdGlvbnMpXG4gIHJldHVybiBjb21wID4gMCA/IGFcbiAgICA6IGNvbXAgPCAwID8gYlxuICAgIDogYi5vcGVyYXRvciA9PT0gJz4nICYmIGEub3BlcmF0b3IgPT09ICc+PScgPyBiXG4gICAgOiBhXG59XG5cbi8vIDw9MS4yLjMgaXMgaGlnaGVyIHRoYW4gPDEuMi4zXG5jb25zdCBsb3dlckxUID0gKGEsIGIsIG9wdGlvbnMpID0+IHtcbiAgaWYgKCFhKSB7XG4gICAgcmV0dXJuIGJcbiAgfVxuICBjb25zdCBjb21wID0gY29tcGFyZShhLnNlbXZlciwgYi5zZW12ZXIsIG9wdGlvbnMpXG4gIHJldHVybiBjb21wIDwgMCA/IGFcbiAgICA6IGNvbXAgPiAwID8gYlxuICAgIDogYi5vcGVyYXRvciA9PT0gJzwnICYmIGEub3BlcmF0b3IgPT09ICc8PScgPyBiXG4gICAgOiBhXG59XG5cbm1vZHVsZS5leHBvcnRzID0gc3Vic2V0XG4iLCAiLy8ganVzdCBwcmUtbG9hZCBhbGwgdGhlIHN0dWZmIHRoYXQgaW5kZXguanMgbGF6aWx5IGV4cG9ydHNcbmNvbnN0IGludGVybmFsUmUgPSByZXF1aXJlKCcuL2ludGVybmFsL3JlJylcbmNvbnN0IGNvbnN0YW50cyA9IHJlcXVpcmUoJy4vaW50ZXJuYWwvY29uc3RhbnRzJylcbmNvbnN0IFNlbVZlciA9IHJlcXVpcmUoJy4vY2xhc3Nlcy9zZW12ZXInKVxuY29uc3QgaWRlbnRpZmllcnMgPSByZXF1aXJlKCcuL2ludGVybmFsL2lkZW50aWZpZXJzJylcbmNvbnN0IHBhcnNlID0gcmVxdWlyZSgnLi9mdW5jdGlvbnMvcGFyc2UnKVxuY29uc3QgdmFsaWQgPSByZXF1aXJlKCcuL2Z1bmN0aW9ucy92YWxpZCcpXG5jb25zdCBjbGVhbiA9IHJlcXVpcmUoJy4vZnVuY3Rpb25zL2NsZWFuJylcbmNvbnN0IGluYyA9IHJlcXVpcmUoJy4vZnVuY3Rpb25zL2luYycpXG5jb25zdCBkaWZmID0gcmVxdWlyZSgnLi9mdW5jdGlvbnMvZGlmZicpXG5jb25zdCBtYWpvciA9IHJlcXVpcmUoJy4vZnVuY3Rpb25zL21ham9yJylcbmNvbnN0IG1pbm9yID0gcmVxdWlyZSgnLi9mdW5jdGlvbnMvbWlub3InKVxuY29uc3QgcGF0Y2ggPSByZXF1aXJlKCcuL2Z1bmN0aW9ucy9wYXRjaCcpXG5jb25zdCBwcmVyZWxlYXNlID0gcmVxdWlyZSgnLi9mdW5jdGlvbnMvcHJlcmVsZWFzZScpXG5jb25zdCBjb21wYXJlID0gcmVxdWlyZSgnLi9mdW5jdGlvbnMvY29tcGFyZScpXG5jb25zdCByY29tcGFyZSA9IHJlcXVpcmUoJy4vZnVuY3Rpb25zL3Jjb21wYXJlJylcbmNvbnN0IGNvbXBhcmVMb29zZSA9IHJlcXVpcmUoJy4vZnVuY3Rpb25zL2NvbXBhcmUtbG9vc2UnKVxuY29uc3QgY29tcGFyZUJ1aWxkID0gcmVxdWlyZSgnLi9mdW5jdGlvbnMvY29tcGFyZS1idWlsZCcpXG5jb25zdCBzb3J0ID0gcmVxdWlyZSgnLi9mdW5jdGlvbnMvc29ydCcpXG5jb25zdCByc29ydCA9IHJlcXVpcmUoJy4vZnVuY3Rpb25zL3Jzb3J0JylcbmNvbnN0IGd0ID0gcmVxdWlyZSgnLi9mdW5jdGlvbnMvZ3QnKVxuY29uc3QgbHQgPSByZXF1aXJlKCcuL2Z1bmN0aW9ucy9sdCcpXG5jb25zdCBlcSA9IHJlcXVpcmUoJy4vZnVuY3Rpb25zL2VxJylcbmNvbnN0IG5lcSA9IHJlcXVpcmUoJy4vZnVuY3Rpb25zL25lcScpXG5jb25zdCBndGUgPSByZXF1aXJlKCcuL2Z1bmN0aW9ucy9ndGUnKVxuY29uc3QgbHRlID0gcmVxdWlyZSgnLi9mdW5jdGlvbnMvbHRlJylcbmNvbnN0IGNtcCA9IHJlcXVpcmUoJy4vZnVuY3Rpb25zL2NtcCcpXG5jb25zdCBjb2VyY2UgPSByZXF1aXJlKCcuL2Z1bmN0aW9ucy9jb2VyY2UnKVxuY29uc3QgQ29tcGFyYXRvciA9IHJlcXVpcmUoJy4vY2xhc3Nlcy9jb21wYXJhdG9yJylcbmNvbnN0IFJhbmdlID0gcmVxdWlyZSgnLi9jbGFzc2VzL3JhbmdlJylcbmNvbnN0IHNhdGlzZmllcyA9IHJlcXVpcmUoJy4vZnVuY3Rpb25zL3NhdGlzZmllcycpXG5jb25zdCB0b0NvbXBhcmF0b3JzID0gcmVxdWlyZSgnLi9yYW5nZXMvdG8tY29tcGFyYXRvcnMnKVxuY29uc3QgbWF4U2F0aXNmeWluZyA9IHJlcXVpcmUoJy4vcmFuZ2VzL21heC1zYXRpc2Z5aW5nJylcbmNvbnN0IG1pblNhdGlzZnlpbmcgPSByZXF1aXJlKCcuL3Jhbmdlcy9taW4tc2F0aXNmeWluZycpXG5jb25zdCBtaW5WZXJzaW9uID0gcmVxdWlyZSgnLi9yYW5nZXMvbWluLXZlcnNpb24nKVxuY29uc3QgdmFsaWRSYW5nZSA9IHJlcXVpcmUoJy4vcmFuZ2VzL3ZhbGlkJylcbmNvbnN0IG91dHNpZGUgPSByZXF1aXJlKCcuL3Jhbmdlcy9vdXRzaWRlJylcbmNvbnN0IGd0ciA9IHJlcXVpcmUoJy4vcmFuZ2VzL2d0cicpXG5jb25zdCBsdHIgPSByZXF1aXJlKCcuL3Jhbmdlcy9sdHInKVxuY29uc3QgaW50ZXJzZWN0cyA9IHJlcXVpcmUoJy4vcmFuZ2VzL2ludGVyc2VjdHMnKVxuY29uc3Qgc2ltcGxpZnlSYW5nZSA9IHJlcXVpcmUoJy4vcmFuZ2VzL3NpbXBsaWZ5JylcbmNvbnN0IHN1YnNldCA9IHJlcXVpcmUoJy4vcmFuZ2VzL3N1YnNldCcpXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgcGFyc2UsXG4gIHZhbGlkLFxuICBjbGVhbixcbiAgaW5jLFxuICBkaWZmLFxuICBtYWpvcixcbiAgbWlub3IsXG4gIHBhdGNoLFxuICBwcmVyZWxlYXNlLFxuICBjb21wYXJlLFxuICByY29tcGFyZSxcbiAgY29tcGFyZUxvb3NlLFxuICBjb21wYXJlQnVpbGQsXG4gIHNvcnQsXG4gIHJzb3J0LFxuICBndCxcbiAgbHQsXG4gIGVxLFxuICBuZXEsXG4gIGd0ZSxcbiAgbHRlLFxuICBjbXAsXG4gIGNvZXJjZSxcbiAgQ29tcGFyYXRvcixcbiAgUmFuZ2UsXG4gIHNhdGlzZmllcyxcbiAgdG9Db21wYXJhdG9ycyxcbiAgbWF4U2F0aXNmeWluZyxcbiAgbWluU2F0aXNmeWluZyxcbiAgbWluVmVyc2lvbixcbiAgdmFsaWRSYW5nZSxcbiAgb3V0c2lkZSxcbiAgZ3RyLFxuICBsdHIsXG4gIGludGVyc2VjdHMsXG4gIHNpbXBsaWZ5UmFuZ2UsXG4gIHN1YnNldCxcbiAgU2VtVmVyLFxuICByZTogaW50ZXJuYWxSZS5yZSxcbiAgc3JjOiBpbnRlcm5hbFJlLnNyYyxcbiAgdG9rZW5zOiBpbnRlcm5hbFJlLnQsXG4gIFNFTVZFUl9TUEVDX1ZFUlNJT046IGNvbnN0YW50cy5TRU1WRVJfU1BFQ19WRVJTSU9OLFxuICBjb21wYXJlSWRlbnRpZmllcnM6IGlkZW50aWZpZXJzLmNvbXBhcmVJZGVudGlmaWVycyxcbiAgcmNvbXBhcmVJZGVudGlmaWVyczogaWRlbnRpZmllcnMucmNvbXBhcmVJZGVudGlmaWVycyxcbn1cbiIsICIvKlxuICogR2VuZXJhdGVkIGJ5IFBFRy5qcyAwLjEwLjAuXG4gKlxuICogaHR0cDovL3BlZ2pzLm9yZy9cbiAqL1xuXG5cInVzZSBzdHJpY3RcIjtcblxuZnVuY3Rpb24gcGVnJHN1YmNsYXNzKGNoaWxkLCBwYXJlbnQpIHtcbiAgZnVuY3Rpb24gY3RvcigpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGNoaWxkOyB9XG4gIGN0b3IucHJvdG90eXBlID0gcGFyZW50LnByb3RvdHlwZTtcbiAgY2hpbGQucHJvdG90eXBlID0gbmV3IGN0b3IoKTtcbn1cblxuZnVuY3Rpb24gcGVnJFN5bnRheEVycm9yKG1lc3NhZ2UsIGV4cGVjdGVkLCBmb3VuZCwgbG9jYXRpb24pIHtcbiAgdGhpcy5tZXNzYWdlICA9IG1lc3NhZ2U7XG4gIHRoaXMuZXhwZWN0ZWQgPSBleHBlY3RlZDtcbiAgdGhpcy5mb3VuZCAgICA9IGZvdW5kO1xuICB0aGlzLmxvY2F0aW9uID0gbG9jYXRpb247XG4gIHRoaXMubmFtZSAgICAgPSBcIlN5bnRheEVycm9yXCI7XG5cbiAgaWYgKHR5cGVvZiBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UodGhpcywgcGVnJFN5bnRheEVycm9yKTtcbiAgfVxufVxuXG5wZWckc3ViY2xhc3MocGVnJFN5bnRheEVycm9yLCBFcnJvcik7XG5cbnBlZyRTeW50YXhFcnJvci5idWlsZE1lc3NhZ2UgPSBmdW5jdGlvbihleHBlY3RlZCwgZm91bmQpIHtcbiAgdmFyIERFU0NSSUJFX0VYUEVDVEFUSU9OX0ZOUyA9IHtcbiAgICAgICAgbGl0ZXJhbDogZnVuY3Rpb24oZXhwZWN0YXRpb24pIHtcbiAgICAgICAgICByZXR1cm4gXCJcXFwiXCIgKyBsaXRlcmFsRXNjYXBlKGV4cGVjdGF0aW9uLnRleHQpICsgXCJcXFwiXCI7XG4gICAgICAgIH0sXG5cbiAgICAgICAgXCJjbGFzc1wiOiBmdW5jdGlvbihleHBlY3RhdGlvbikge1xuICAgICAgICAgIHZhciBlc2NhcGVkUGFydHMgPSBcIlwiLFxuICAgICAgICAgICAgICBpO1xuXG4gICAgICAgICAgZm9yIChpID0gMDsgaSA8IGV4cGVjdGF0aW9uLnBhcnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBlc2NhcGVkUGFydHMgKz0gZXhwZWN0YXRpb24ucGFydHNbaV0gaW5zdGFuY2VvZiBBcnJheVxuICAgICAgICAgICAgICA/IGNsYXNzRXNjYXBlKGV4cGVjdGF0aW9uLnBhcnRzW2ldWzBdKSArIFwiLVwiICsgY2xhc3NFc2NhcGUoZXhwZWN0YXRpb24ucGFydHNbaV1bMV0pXG4gICAgICAgICAgICAgIDogY2xhc3NFc2NhcGUoZXhwZWN0YXRpb24ucGFydHNbaV0pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBcIltcIiArIChleHBlY3RhdGlvbi5pbnZlcnRlZCA/IFwiXlwiIDogXCJcIikgKyBlc2NhcGVkUGFydHMgKyBcIl1cIjtcbiAgICAgICAgfSxcblxuICAgICAgICBhbnk6IGZ1bmN0aW9uKGV4cGVjdGF0aW9uKSB7XG4gICAgICAgICAgcmV0dXJuIFwiYW55IGNoYXJhY3RlclwiO1xuICAgICAgICB9LFxuXG4gICAgICAgIGVuZDogZnVuY3Rpb24oZXhwZWN0YXRpb24pIHtcbiAgICAgICAgICByZXR1cm4gXCJlbmQgb2YgaW5wdXRcIjtcbiAgICAgICAgfSxcblxuICAgICAgICBvdGhlcjogZnVuY3Rpb24oZXhwZWN0YXRpb24pIHtcbiAgICAgICAgICByZXR1cm4gZXhwZWN0YXRpb24uZGVzY3JpcHRpb247XG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgZnVuY3Rpb24gaGV4KGNoKSB7XG4gICAgcmV0dXJuIGNoLmNoYXJDb2RlQXQoMCkudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCk7XG4gIH1cblxuICBmdW5jdGlvbiBsaXRlcmFsRXNjYXBlKHMpIHtcbiAgICByZXR1cm4gc1xuICAgICAgLnJlcGxhY2UoL1xcXFwvZywgJ1xcXFxcXFxcJylcbiAgICAgIC5yZXBsYWNlKC9cIi9nLCAgJ1xcXFxcIicpXG4gICAgICAucmVwbGFjZSgvXFwwL2csICdcXFxcMCcpXG4gICAgICAucmVwbGFjZSgvXFx0L2csICdcXFxcdCcpXG4gICAgICAucmVwbGFjZSgvXFxuL2csICdcXFxcbicpXG4gICAgICAucmVwbGFjZSgvXFxyL2csICdcXFxccicpXG4gICAgICAucmVwbGFjZSgvW1xceDAwLVxceDBGXS9nLCAgICAgICAgICBmdW5jdGlvbihjaCkgeyByZXR1cm4gJ1xcXFx4MCcgKyBoZXgoY2gpOyB9KVxuICAgICAgLnJlcGxhY2UoL1tcXHgxMC1cXHgxRlxceDdGLVxceDlGXS9nLCBmdW5jdGlvbihjaCkgeyByZXR1cm4gJ1xcXFx4JyAgKyBoZXgoY2gpOyB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNsYXNzRXNjYXBlKHMpIHtcbiAgICByZXR1cm4gc1xuICAgICAgLnJlcGxhY2UoL1xcXFwvZywgJ1xcXFxcXFxcJylcbiAgICAgIC5yZXBsYWNlKC9cXF0vZywgJ1xcXFxdJylcbiAgICAgIC5yZXBsYWNlKC9cXF4vZywgJ1xcXFxeJylcbiAgICAgIC5yZXBsYWNlKC8tL2csICAnXFxcXC0nKVxuICAgICAgLnJlcGxhY2UoL1xcMC9nLCAnXFxcXDAnKVxuICAgICAgLnJlcGxhY2UoL1xcdC9nLCAnXFxcXHQnKVxuICAgICAgLnJlcGxhY2UoL1xcbi9nLCAnXFxcXG4nKVxuICAgICAgLnJlcGxhY2UoL1xcci9nLCAnXFxcXHInKVxuICAgICAgLnJlcGxhY2UoL1tcXHgwMC1cXHgwRl0vZywgICAgICAgICAgZnVuY3Rpb24oY2gpIHsgcmV0dXJuICdcXFxceDAnICsgaGV4KGNoKTsgfSlcbiAgICAgIC5yZXBsYWNlKC9bXFx4MTAtXFx4MUZcXHg3Ri1cXHg5Rl0vZywgZnVuY3Rpb24oY2gpIHsgcmV0dXJuICdcXFxceCcgICsgaGV4KGNoKTsgfSk7XG4gIH1cblxuICBmdW5jdGlvbiBkZXNjcmliZUV4cGVjdGF0aW9uKGV4cGVjdGF0aW9uKSB7XG4gICAgcmV0dXJuIERFU0NSSUJFX0VYUEVDVEFUSU9OX0ZOU1tleHBlY3RhdGlvbi50eXBlXShleHBlY3RhdGlvbik7XG4gIH1cblxuICBmdW5jdGlvbiBkZXNjcmliZUV4cGVjdGVkKGV4cGVjdGVkKSB7XG4gICAgdmFyIGRlc2NyaXB0aW9ucyA9IG5ldyBBcnJheShleHBlY3RlZC5sZW5ndGgpLFxuICAgICAgICBpLCBqO1xuXG4gICAgZm9yIChpID0gMDsgaSA8IGV4cGVjdGVkLmxlbmd0aDsgaSsrKSB7XG4gICAgICBkZXNjcmlwdGlvbnNbaV0gPSBkZXNjcmliZUV4cGVjdGF0aW9uKGV4cGVjdGVkW2ldKTtcbiAgICB9XG5cbiAgICBkZXNjcmlwdGlvbnMuc29ydCgpO1xuXG4gICAgaWYgKGRlc2NyaXB0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICBmb3IgKGkgPSAxLCBqID0gMTsgaSA8IGRlc2NyaXB0aW9ucy5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAoZGVzY3JpcHRpb25zW2kgLSAxXSAhPT0gZGVzY3JpcHRpb25zW2ldKSB7XG4gICAgICAgICAgZGVzY3JpcHRpb25zW2pdID0gZGVzY3JpcHRpb25zW2ldO1xuICAgICAgICAgIGorKztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZGVzY3JpcHRpb25zLmxlbmd0aCA9IGo7XG4gICAgfVxuXG4gICAgc3dpdGNoIChkZXNjcmlwdGlvbnMubGVuZ3RoKSB7XG4gICAgICBjYXNlIDE6XG4gICAgICAgIHJldHVybiBkZXNjcmlwdGlvbnNbMF07XG5cbiAgICAgIGNhc2UgMjpcbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0aW9uc1swXSArIFwiIG9yIFwiICsgZGVzY3JpcHRpb25zWzFdO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gZGVzY3JpcHRpb25zLnNsaWNlKDAsIC0xKS5qb2luKFwiLCBcIilcbiAgICAgICAgICArIFwiLCBvciBcIlxuICAgICAgICAgICsgZGVzY3JpcHRpb25zW2Rlc2NyaXB0aW9ucy5sZW5ndGggLSAxXTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBkZXNjcmliZUZvdW5kKGZvdW5kKSB7XG4gICAgcmV0dXJuIGZvdW5kID8gXCJcXFwiXCIgKyBsaXRlcmFsRXNjYXBlKGZvdW5kKSArIFwiXFxcIlwiIDogXCJlbmQgb2YgaW5wdXRcIjtcbiAgfVxuXG4gIHJldHVybiBcIkV4cGVjdGVkIFwiICsgZGVzY3JpYmVFeHBlY3RlZChleHBlY3RlZCkgKyBcIiBidXQgXCIgKyBkZXNjcmliZUZvdW5kKGZvdW5kKSArIFwiIGZvdW5kLlwiO1xufTtcblxuZnVuY3Rpb24gcGVnJHBhcnNlKGlucHV0LCBvcHRpb25zKSB7XG4gIG9wdGlvbnMgPSBvcHRpb25zICE9PSB2b2lkIDAgPyBvcHRpb25zIDoge307XG5cbiAgdmFyIHBlZyRGQUlMRUQgPSB7fSxcblxuICAgICAgcGVnJHN0YXJ0UnVsZUZ1bmN0aW9ucyA9IHsgRXhwcmVzc2lvbjogcGVnJHBhcnNlRXhwcmVzc2lvbiB9LFxuICAgICAgcGVnJHN0YXJ0UnVsZUZ1bmN0aW9uICA9IHBlZyRwYXJzZUV4cHJlc3Npb24sXG5cbiAgICAgIHBlZyRjMCA9IFwifFwiLFxuICAgICAgcGVnJGMxID0gcGVnJGxpdGVyYWxFeHBlY3RhdGlvbihcInxcIiwgZmFsc2UpLFxuICAgICAgcGVnJGMyID0gXCImXCIsXG4gICAgICBwZWckYzMgPSBwZWckbGl0ZXJhbEV4cGVjdGF0aW9uKFwiJlwiLCBmYWxzZSksXG4gICAgICBwZWckYzQgPSBcIl5cIixcbiAgICAgIHBlZyRjNSA9IHBlZyRsaXRlcmFsRXhwZWN0YXRpb24oXCJeXCIsIGZhbHNlKSxcbiAgICAgIHBlZyRjNiA9IGZ1bmN0aW9uKGhlYWQsIHRhaWwpIHtcbiAgICAgICAgICAgIHJldHVybiAhIXRhaWwucmVkdWNlKChyZXN1bHQsIGVsZW1lbnQpID0+IHtcbiAgICAgICAgICAgIFx0c3dpdGNoIChlbGVtZW50WzFdKSB7XG4gICAgICAgICAgICAgICAgY2FzZSBcInxcIjogcmV0dXJuIHJlc3VsdCB8IGVsZW1lbnRbM107XG4gICAgICAgICAgICAgICAgY2FzZSBcIiZcIjogcmV0dXJuIHJlc3VsdCAmIGVsZW1lbnRbM107XG4gICAgICAgICAgICAgICAgY2FzZSBcIl5cIjogcmV0dXJuIHJlc3VsdCBeIGVsZW1lbnRbM107XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sIGhlYWQpO1xuICAgICAgICAgIH0sXG4gICAgICBwZWckYzcgPSBcIiFcIixcbiAgICAgIHBlZyRjOCA9IHBlZyRsaXRlcmFsRXhwZWN0YXRpb24oXCIhXCIsIGZhbHNlKSxcbiAgICAgIHBlZyRjOSA9IGZ1bmN0aW9uKHRlcm0pIHsgcmV0dXJuICF0ZXJtOyB9LFxuICAgICAgcGVnJGMxMCA9IFwiKFwiLFxuICAgICAgcGVnJGMxMSA9IHBlZyRsaXRlcmFsRXhwZWN0YXRpb24oXCIoXCIsIGZhbHNlKSxcbiAgICAgIHBlZyRjMTIgPSBcIilcIixcbiAgICAgIHBlZyRjMTMgPSBwZWckbGl0ZXJhbEV4cGVjdGF0aW9uKFwiKVwiLCBmYWxzZSksXG4gICAgICBwZWckYzE0ID0gZnVuY3Rpb24oZXhwcikgeyByZXR1cm4gZXhwcjsgfSxcbiAgICAgIHBlZyRjMTUgPSAvXlteIFxcdFxcblxccigpIXwmXFxeXS8sXG4gICAgICBwZWckYzE2ID0gcGVnJGNsYXNzRXhwZWN0YXRpb24oW1wiIFwiLCBcIlxcdFwiLCBcIlxcblwiLCBcIlxcclwiLCBcIihcIiwgXCIpXCIsIFwiIVwiLCBcInxcIiwgXCImXCIsIFwiXlwiXSwgdHJ1ZSwgZmFsc2UpLFxuICAgICAgcGVnJGMxNyA9IGZ1bmN0aW9uKHRva2VuKSB7IHJldHVybiBvcHRpb25zLnF1ZXJ5UGF0dGVybi50ZXN0KHRva2VuKTsgfSxcbiAgICAgIHBlZyRjMTggPSBmdW5jdGlvbih0b2tlbikgeyByZXR1cm4gb3B0aW9ucy5jaGVja0ZuKHRva2VuKTsgfSxcbiAgICAgIHBlZyRjMTkgPSBwZWckb3RoZXJFeHBlY3RhdGlvbihcIndoaXRlc3BhY2VcIiksXG4gICAgICBwZWckYzIwID0gL15bIFxcdFxcblxccl0vLFxuICAgICAgcGVnJGMyMSA9IHBlZyRjbGFzc0V4cGVjdGF0aW9uKFtcIiBcIiwgXCJcXHRcIiwgXCJcXG5cIiwgXCJcXHJcIl0sIGZhbHNlLCBmYWxzZSksXG5cbiAgICAgIHBlZyRjdXJyUG9zICAgICAgICAgID0gMCxcbiAgICAgIHBlZyRzYXZlZFBvcyAgICAgICAgID0gMCxcbiAgICAgIHBlZyRwb3NEZXRhaWxzQ2FjaGUgID0gW3sgbGluZTogMSwgY29sdW1uOiAxIH1dLFxuICAgICAgcGVnJG1heEZhaWxQb3MgICAgICAgPSAwLFxuICAgICAgcGVnJG1heEZhaWxFeHBlY3RlZCAgPSBbXSxcbiAgICAgIHBlZyRzaWxlbnRGYWlscyAgICAgID0gMCxcblxuICAgICAgcGVnJHJlc3VsdDtcblxuICBpZiAoXCJzdGFydFJ1bGVcIiBpbiBvcHRpb25zKSB7XG4gICAgaWYgKCEob3B0aW9ucy5zdGFydFJ1bGUgaW4gcGVnJHN0YXJ0UnVsZUZ1bmN0aW9ucykpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkNhbid0IHN0YXJ0IHBhcnNpbmcgZnJvbSBydWxlIFxcXCJcIiArIG9wdGlvbnMuc3RhcnRSdWxlICsgXCJcXFwiLlwiKTtcbiAgICB9XG5cbiAgICBwZWckc3RhcnRSdWxlRnVuY3Rpb24gPSBwZWckc3RhcnRSdWxlRnVuY3Rpb25zW29wdGlvbnMuc3RhcnRSdWxlXTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHRleHQoKSB7XG4gICAgcmV0dXJuIGlucHV0LnN1YnN0cmluZyhwZWckc2F2ZWRQb3MsIHBlZyRjdXJyUG9zKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGxvY2F0aW9uKCkge1xuICAgIHJldHVybiBwZWckY29tcHV0ZUxvY2F0aW9uKHBlZyRzYXZlZFBvcywgcGVnJGN1cnJQb3MpO1xuICB9XG5cbiAgZnVuY3Rpb24gZXhwZWN0ZWQoZGVzY3JpcHRpb24sIGxvY2F0aW9uKSB7XG4gICAgbG9jYXRpb24gPSBsb2NhdGlvbiAhPT0gdm9pZCAwID8gbG9jYXRpb24gOiBwZWckY29tcHV0ZUxvY2F0aW9uKHBlZyRzYXZlZFBvcywgcGVnJGN1cnJQb3MpXG5cbiAgICB0aHJvdyBwZWckYnVpbGRTdHJ1Y3R1cmVkRXJyb3IoXG4gICAgICBbcGVnJG90aGVyRXhwZWN0YXRpb24oZGVzY3JpcHRpb24pXSxcbiAgICAgIGlucHV0LnN1YnN0cmluZyhwZWckc2F2ZWRQb3MsIHBlZyRjdXJyUG9zKSxcbiAgICAgIGxvY2F0aW9uXG4gICAgKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGVycm9yKG1lc3NhZ2UsIGxvY2F0aW9uKSB7XG4gICAgbG9jYXRpb24gPSBsb2NhdGlvbiAhPT0gdm9pZCAwID8gbG9jYXRpb24gOiBwZWckY29tcHV0ZUxvY2F0aW9uKHBlZyRzYXZlZFBvcywgcGVnJGN1cnJQb3MpXG5cbiAgICB0aHJvdyBwZWckYnVpbGRTaW1wbGVFcnJvcihtZXNzYWdlLCBsb2NhdGlvbik7XG4gIH1cblxuICBmdW5jdGlvbiBwZWckbGl0ZXJhbEV4cGVjdGF0aW9uKHRleHQsIGlnbm9yZUNhc2UpIHtcbiAgICByZXR1cm4geyB0eXBlOiBcImxpdGVyYWxcIiwgdGV4dDogdGV4dCwgaWdub3JlQ2FzZTogaWdub3JlQ2FzZSB9O1xuICB9XG5cbiAgZnVuY3Rpb24gcGVnJGNsYXNzRXhwZWN0YXRpb24ocGFydHMsIGludmVydGVkLCBpZ25vcmVDYXNlKSB7XG4gICAgcmV0dXJuIHsgdHlwZTogXCJjbGFzc1wiLCBwYXJ0czogcGFydHMsIGludmVydGVkOiBpbnZlcnRlZCwgaWdub3JlQ2FzZTogaWdub3JlQ2FzZSB9O1xuICB9XG5cbiAgZnVuY3Rpb24gcGVnJGFueUV4cGVjdGF0aW9uKCkge1xuICAgIHJldHVybiB7IHR5cGU6IFwiYW55XCIgfTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBlZyRlbmRFeHBlY3RhdGlvbigpIHtcbiAgICByZXR1cm4geyB0eXBlOiBcImVuZFwiIH07XG4gIH1cblxuICBmdW5jdGlvbiBwZWckb3RoZXJFeHBlY3RhdGlvbihkZXNjcmlwdGlvbikge1xuICAgIHJldHVybiB7IHR5cGU6IFwib3RoZXJcIiwgZGVzY3JpcHRpb246IGRlc2NyaXB0aW9uIH07XG4gIH1cblxuICBmdW5jdGlvbiBwZWckY29tcHV0ZVBvc0RldGFpbHMocG9zKSB7XG4gICAgdmFyIGRldGFpbHMgPSBwZWckcG9zRGV0YWlsc0NhY2hlW3Bvc10sIHA7XG5cbiAgICBpZiAoZGV0YWlscykge1xuICAgICAgcmV0dXJuIGRldGFpbHM7XG4gICAgfSBlbHNlIHtcbiAgICAgIHAgPSBwb3MgLSAxO1xuICAgICAgd2hpbGUgKCFwZWckcG9zRGV0YWlsc0NhY2hlW3BdKSB7XG4gICAgICAgIHAtLTtcbiAgICAgIH1cblxuICAgICAgZGV0YWlscyA9IHBlZyRwb3NEZXRhaWxzQ2FjaGVbcF07XG4gICAgICBkZXRhaWxzID0ge1xuICAgICAgICBsaW5lOiAgIGRldGFpbHMubGluZSxcbiAgICAgICAgY29sdW1uOiBkZXRhaWxzLmNvbHVtblxuICAgICAgfTtcblxuICAgICAgd2hpbGUgKHAgPCBwb3MpIHtcbiAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocCkgPT09IDEwKSB7XG4gICAgICAgICAgZGV0YWlscy5saW5lKys7XG4gICAgICAgICAgZGV0YWlscy5jb2x1bW4gPSAxO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGRldGFpbHMuY29sdW1uKys7XG4gICAgICAgIH1cblxuICAgICAgICBwKys7XG4gICAgICB9XG5cbiAgICAgIHBlZyRwb3NEZXRhaWxzQ2FjaGVbcG9zXSA9IGRldGFpbHM7XG4gICAgICByZXR1cm4gZGV0YWlscztcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBwZWckY29tcHV0ZUxvY2F0aW9uKHN0YXJ0UG9zLCBlbmRQb3MpIHtcbiAgICB2YXIgc3RhcnRQb3NEZXRhaWxzID0gcGVnJGNvbXB1dGVQb3NEZXRhaWxzKHN0YXJ0UG9zKSxcbiAgICAgICAgZW5kUG9zRGV0YWlscyAgID0gcGVnJGNvbXB1dGVQb3NEZXRhaWxzKGVuZFBvcyk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgc3RhcnQ6IHtcbiAgICAgICAgb2Zmc2V0OiBzdGFydFBvcyxcbiAgICAgICAgbGluZTogICBzdGFydFBvc0RldGFpbHMubGluZSxcbiAgICAgICAgY29sdW1uOiBzdGFydFBvc0RldGFpbHMuY29sdW1uXG4gICAgICB9LFxuICAgICAgZW5kOiB7XG4gICAgICAgIG9mZnNldDogZW5kUG9zLFxuICAgICAgICBsaW5lOiAgIGVuZFBvc0RldGFpbHMubGluZSxcbiAgICAgICAgY29sdW1uOiBlbmRQb3NEZXRhaWxzLmNvbHVtblxuICAgICAgfVxuICAgIH07XG4gIH1cblxuICBmdW5jdGlvbiBwZWckZmFpbChleHBlY3RlZCkge1xuICAgIGlmIChwZWckY3VyclBvcyA8IHBlZyRtYXhGYWlsUG9zKSB7IHJldHVybjsgfVxuXG4gICAgaWYgKHBlZyRjdXJyUG9zID4gcGVnJG1heEZhaWxQb3MpIHtcbiAgICAgIHBlZyRtYXhGYWlsUG9zID0gcGVnJGN1cnJQb3M7XG4gICAgICBwZWckbWF4RmFpbEV4cGVjdGVkID0gW107XG4gICAgfVxuXG4gICAgcGVnJG1heEZhaWxFeHBlY3RlZC5wdXNoKGV4cGVjdGVkKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBlZyRidWlsZFNpbXBsZUVycm9yKG1lc3NhZ2UsIGxvY2F0aW9uKSB7XG4gICAgcmV0dXJuIG5ldyBwZWckU3ludGF4RXJyb3IobWVzc2FnZSwgbnVsbCwgbnVsbCwgbG9jYXRpb24pO1xuICB9XG5cbiAgZnVuY3Rpb24gcGVnJGJ1aWxkU3RydWN0dXJlZEVycm9yKGV4cGVjdGVkLCBmb3VuZCwgbG9jYXRpb24pIHtcbiAgICByZXR1cm4gbmV3IHBlZyRTeW50YXhFcnJvcihcbiAgICAgIHBlZyRTeW50YXhFcnJvci5idWlsZE1lc3NhZ2UoZXhwZWN0ZWQsIGZvdW5kKSxcbiAgICAgIGV4cGVjdGVkLFxuICAgICAgZm91bmQsXG4gICAgICBsb2NhdGlvblxuICAgICk7XG4gIH1cblxuICBmdW5jdGlvbiBwZWckcGFyc2VFeHByZXNzaW9uKCkge1xuICAgIHZhciBzMCwgczEsIHMyLCBzMywgczQsIHM1LCBzNiwgczc7XG5cbiAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgIHMxID0gcGVnJHBhcnNlVGVybSgpO1xuICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgczIgPSBbXTtcbiAgICAgIHMzID0gcGVnJGN1cnJQb3M7XG4gICAgICBzNCA9IHBlZyRwYXJzZV8oKTtcbiAgICAgIGlmIChzNCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDEyNCkge1xuICAgICAgICAgIHM1ID0gcGVnJGMwO1xuICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgczUgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMxKTsgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChzNSA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gMzgpIHtcbiAgICAgICAgICAgIHM1ID0gcGVnJGMyO1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgczUgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzMpOyB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChzNSA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSA5NCkge1xuICAgICAgICAgICAgICBzNSA9IHBlZyRjNDtcbiAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHM1ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzUpOyB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChzNSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgIHM2ID0gcGVnJHBhcnNlXygpO1xuICAgICAgICAgIGlmIChzNiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczcgPSBwZWckcGFyc2VUZXJtKCk7XG4gICAgICAgICAgICBpZiAoczcgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgczQgPSBbczQsIHM1LCBzNiwgczddO1xuICAgICAgICAgICAgICBzMyA9IHM0O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMztcbiAgICAgICAgICAgICAgczMgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwZWckY3VyclBvcyA9IHMzO1xuICAgICAgICAgICAgczMgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwZWckY3VyclBvcyA9IHMzO1xuICAgICAgICAgIHMzID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGVnJGN1cnJQb3MgPSBzMztcbiAgICAgICAgczMgPSBwZWckRkFJTEVEO1xuICAgICAgfVxuICAgICAgd2hpbGUgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHMyLnB1c2goczMpO1xuICAgICAgICBzMyA9IHBlZyRjdXJyUG9zO1xuICAgICAgICBzNCA9IHBlZyRwYXJzZV8oKTtcbiAgICAgICAgaWYgKHM0ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSAxMjQpIHtcbiAgICAgICAgICAgIHM1ID0gcGVnJGMwO1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgczUgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzEpOyB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChzNSA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSAzOCkge1xuICAgICAgICAgICAgICBzNSA9IHBlZyRjMjtcbiAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHM1ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzMpOyB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoczUgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSA5NCkge1xuICAgICAgICAgICAgICAgIHM1ID0gcGVnJGM0O1xuICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgczUgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGM1KTsgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChzNSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczYgPSBwZWckcGFyc2VfKCk7XG4gICAgICAgICAgICBpZiAoczYgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgczcgPSBwZWckcGFyc2VUZXJtKCk7XG4gICAgICAgICAgICAgIGlmIChzNyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHM0ID0gW3M0LCBzNSwgczYsIHM3XTtcbiAgICAgICAgICAgICAgICBzMyA9IHM0O1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczM7XG4gICAgICAgICAgICAgICAgczMgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMzO1xuICAgICAgICAgICAgICBzMyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczM7XG4gICAgICAgICAgICBzMyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHBlZyRjdXJyUG9zID0gczM7XG4gICAgICAgICAgczMgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgIHMxID0gcGVnJGM2KHMxLCBzMik7XG4gICAgICAgIHMwID0gczE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHMwO1xuICB9XG5cbiAgZnVuY3Rpb24gcGVnJHBhcnNlVGVybSgpIHtcbiAgICB2YXIgczAsIHMxLCBzMiwgczMsIHM0LCBzNTtcblxuICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSAzMykge1xuICAgICAgczEgPSBwZWckYzc7XG4gICAgICBwZWckY3VyclBvcysrO1xuICAgIH0gZWxzZSB7XG4gICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjOCk7IH1cbiAgICB9XG4gICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICBzMiA9IHBlZyRwYXJzZVRlcm0oKTtcbiAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgczEgPSBwZWckYzkoczIpO1xuICAgICAgICBzMCA9IHMxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgIH1cbiAgICBpZiAoczAgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDQwKSB7XG4gICAgICAgIHMxID0gcGVnJGMxMDtcbiAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzExKTsgfVxuICAgICAgfVxuICAgICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHMyID0gcGVnJHBhcnNlXygpO1xuICAgICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBzMyA9IHBlZyRwYXJzZUV4cHJlc3Npb24oKTtcbiAgICAgICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHM0ID0gcGVnJHBhcnNlXygpO1xuICAgICAgICAgICAgaWYgKHM0ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gNDEpIHtcbiAgICAgICAgICAgICAgICBzNSA9IHBlZyRjMTI7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzNSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzEzKTsgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmIChzNSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgICAgICAgIHMxID0gcGVnJGMxNChzMyk7XG4gICAgICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgfVxuICAgICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHMwID0gcGVnJHBhcnNlVG9rZW4oKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gczA7XG4gIH1cblxuICBmdW5jdGlvbiBwZWckcGFyc2VUb2tlbigpIHtcbiAgICB2YXIgczAsIHMxLCBzMiwgczMsIHM0O1xuXG4gICAgczAgPSBwZWckY3VyclBvcztcbiAgICBzMSA9IHBlZyRwYXJzZV8oKTtcbiAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHMyID0gcGVnJGN1cnJQb3M7XG4gICAgICBzMyA9IFtdO1xuICAgICAgaWYgKHBlZyRjMTUudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgICBzNCA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzNCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMxNik7IH1cbiAgICAgIH1cbiAgICAgIGlmIChzNCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICB3aGlsZSAoczQgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBzMy5wdXNoKHM0KTtcbiAgICAgICAgICBpZiAocGVnJGMxNS50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgICAgICBzNCA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzNCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMTYpOyB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzMyA9IHBlZyRGQUlMRUQ7XG4gICAgICB9XG4gICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgczIgPSBpbnB1dC5zdWJzdHJpbmcoczIsIHBlZyRjdXJyUG9zKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHMyID0gczM7XG4gICAgICB9XG4gICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgcGVnJHNhdmVkUG9zID0gcGVnJGN1cnJQb3M7XG4gICAgICAgIHMzID0gcGVnJGMxNyhzMik7XG4gICAgICAgIGlmIChzMykge1xuICAgICAgICAgIHMzID0gdm9pZCAwO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHMzID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICBzMSA9IHBlZyRjMTgoczIpO1xuICAgICAgICAgIHMwID0gczE7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICB9XG5cbiAgICByZXR1cm4gczA7XG4gIH1cblxuICBmdW5jdGlvbiBwZWckcGFyc2VfKCkge1xuICAgIHZhciBzMCwgczE7XG5cbiAgICBwZWckc2lsZW50RmFpbHMrKztcbiAgICBzMCA9IFtdO1xuICAgIGlmIChwZWckYzIwLnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgIHMxID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgfSBlbHNlIHtcbiAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMyMSk7IH1cbiAgICB9XG4gICAgd2hpbGUgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICBzMC5wdXNoKHMxKTtcbiAgICAgIGlmIChwZWckYzIwLnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgczEgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMjEpOyB9XG4gICAgICB9XG4gICAgfVxuICAgIHBlZyRzaWxlbnRGYWlscy0tO1xuICAgIGlmIChzMCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzE5KTsgfVxuICAgIH1cblxuICAgIHJldHVybiBzMDtcbiAgfVxuXG4gIHBlZyRyZXN1bHQgPSBwZWckc3RhcnRSdWxlRnVuY3Rpb24oKTtcblxuICBpZiAocGVnJHJlc3VsdCAhPT0gcGVnJEZBSUxFRCAmJiBwZWckY3VyclBvcyA9PT0gaW5wdXQubGVuZ3RoKSB7XG4gICAgcmV0dXJuIHBlZyRyZXN1bHQ7XG4gIH0gZWxzZSB7XG4gICAgaWYgKHBlZyRyZXN1bHQgIT09IHBlZyRGQUlMRUQgJiYgcGVnJGN1cnJQb3MgPCBpbnB1dC5sZW5ndGgpIHtcbiAgICAgIHBlZyRmYWlsKHBlZyRlbmRFeHBlY3RhdGlvbigpKTtcbiAgICB9XG5cbiAgICB0aHJvdyBwZWckYnVpbGRTdHJ1Y3R1cmVkRXJyb3IoXG4gICAgICBwZWckbWF4RmFpbEV4cGVjdGVkLFxuICAgICAgcGVnJG1heEZhaWxQb3MgPCBpbnB1dC5sZW5ndGggPyBpbnB1dC5jaGFyQXQocGVnJG1heEZhaWxQb3MpIDogbnVsbCxcbiAgICAgIHBlZyRtYXhGYWlsUG9zIDwgaW5wdXQubGVuZ3RoXG4gICAgICAgID8gcGVnJGNvbXB1dGVMb2NhdGlvbihwZWckbWF4RmFpbFBvcywgcGVnJG1heEZhaWxQb3MgKyAxKVxuICAgICAgICA6IHBlZyRjb21wdXRlTG9jYXRpb24ocGVnJG1heEZhaWxQb3MsIHBlZyRtYXhGYWlsUG9zKVxuICAgICk7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIFN5bnRheEVycm9yOiBwZWckU3ludGF4RXJyb3IsXG4gIHBhcnNlOiAgICAgICBwZWckcGFyc2Vcbn07XG4iLCAiY29uc3Qge3BhcnNlfSA9IHJlcXVpcmUoYC4vZ3JhbW1hcmApO1xuXG5leHBvcnRzLm1ha2VQYXJzZXIgPSAocXVlcnlQYXR0ZXJuID0gL1thLXpdKy8pID0+IHtcbiAgcmV0dXJuIChzdHIsIGNoZWNrRm4pID0+IHBhcnNlKHN0ciwge3F1ZXJ5UGF0dGVybiwgY2hlY2tGbn0pO1xufTtcblxuZXhwb3J0cy5wYXJzZSA9IGV4cG9ydHMubWFrZVBhcnNlcigpO1xuIiwgIid1c2Ugc3RyaWN0J1xyXG5cclxubW9kdWxlLmV4cG9ydHMgPSB7XHJcblx0XCJhbGljZWJsdWVcIjogWzI0MCwgMjQ4LCAyNTVdLFxyXG5cdFwiYW50aXF1ZXdoaXRlXCI6IFsyNTAsIDIzNSwgMjE1XSxcclxuXHRcImFxdWFcIjogWzAsIDI1NSwgMjU1XSxcclxuXHRcImFxdWFtYXJpbmVcIjogWzEyNywgMjU1LCAyMTJdLFxyXG5cdFwiYXp1cmVcIjogWzI0MCwgMjU1LCAyNTVdLFxyXG5cdFwiYmVpZ2VcIjogWzI0NSwgMjQ1LCAyMjBdLFxyXG5cdFwiYmlzcXVlXCI6IFsyNTUsIDIyOCwgMTk2XSxcclxuXHRcImJsYWNrXCI6IFswLCAwLCAwXSxcclxuXHRcImJsYW5jaGVkYWxtb25kXCI6IFsyNTUsIDIzNSwgMjA1XSxcclxuXHRcImJsdWVcIjogWzAsIDAsIDI1NV0sXHJcblx0XCJibHVldmlvbGV0XCI6IFsxMzgsIDQzLCAyMjZdLFxyXG5cdFwiYnJvd25cIjogWzE2NSwgNDIsIDQyXSxcclxuXHRcImJ1cmx5d29vZFwiOiBbMjIyLCAxODQsIDEzNV0sXHJcblx0XCJjYWRldGJsdWVcIjogWzk1LCAxNTgsIDE2MF0sXHJcblx0XCJjaGFydHJldXNlXCI6IFsxMjcsIDI1NSwgMF0sXHJcblx0XCJjaG9jb2xhdGVcIjogWzIxMCwgMTA1LCAzMF0sXHJcblx0XCJjb3JhbFwiOiBbMjU1LCAxMjcsIDgwXSxcclxuXHRcImNvcm5mbG93ZXJibHVlXCI6IFsxMDAsIDE0OSwgMjM3XSxcclxuXHRcImNvcm5zaWxrXCI6IFsyNTUsIDI0OCwgMjIwXSxcclxuXHRcImNyaW1zb25cIjogWzIyMCwgMjAsIDYwXSxcclxuXHRcImN5YW5cIjogWzAsIDI1NSwgMjU1XSxcclxuXHRcImRhcmtibHVlXCI6IFswLCAwLCAxMzldLFxyXG5cdFwiZGFya2N5YW5cIjogWzAsIDEzOSwgMTM5XSxcclxuXHRcImRhcmtnb2xkZW5yb2RcIjogWzE4NCwgMTM0LCAxMV0sXHJcblx0XCJkYXJrZ3JheVwiOiBbMTY5LCAxNjksIDE2OV0sXHJcblx0XCJkYXJrZ3JlZW5cIjogWzAsIDEwMCwgMF0sXHJcblx0XCJkYXJrZ3JleVwiOiBbMTY5LCAxNjksIDE2OV0sXHJcblx0XCJkYXJra2hha2lcIjogWzE4OSwgMTgzLCAxMDddLFxyXG5cdFwiZGFya21hZ2VudGFcIjogWzEzOSwgMCwgMTM5XSxcclxuXHRcImRhcmtvbGl2ZWdyZWVuXCI6IFs4NSwgMTA3LCA0N10sXHJcblx0XCJkYXJrb3JhbmdlXCI6IFsyNTUsIDE0MCwgMF0sXHJcblx0XCJkYXJrb3JjaGlkXCI6IFsxNTMsIDUwLCAyMDRdLFxyXG5cdFwiZGFya3JlZFwiOiBbMTM5LCAwLCAwXSxcclxuXHRcImRhcmtzYWxtb25cIjogWzIzMywgMTUwLCAxMjJdLFxyXG5cdFwiZGFya3NlYWdyZWVuXCI6IFsxNDMsIDE4OCwgMTQzXSxcclxuXHRcImRhcmtzbGF0ZWJsdWVcIjogWzcyLCA2MSwgMTM5XSxcclxuXHRcImRhcmtzbGF0ZWdyYXlcIjogWzQ3LCA3OSwgNzldLFxyXG5cdFwiZGFya3NsYXRlZ3JleVwiOiBbNDcsIDc5LCA3OV0sXHJcblx0XCJkYXJrdHVycXVvaXNlXCI6IFswLCAyMDYsIDIwOV0sXHJcblx0XCJkYXJrdmlvbGV0XCI6IFsxNDgsIDAsIDIxMV0sXHJcblx0XCJkZWVwcGlua1wiOiBbMjU1LCAyMCwgMTQ3XSxcclxuXHRcImRlZXBza3libHVlXCI6IFswLCAxOTEsIDI1NV0sXHJcblx0XCJkaW1ncmF5XCI6IFsxMDUsIDEwNSwgMTA1XSxcclxuXHRcImRpbWdyZXlcIjogWzEwNSwgMTA1LCAxMDVdLFxyXG5cdFwiZG9kZ2VyYmx1ZVwiOiBbMzAsIDE0NCwgMjU1XSxcclxuXHRcImZpcmVicmlja1wiOiBbMTc4LCAzNCwgMzRdLFxyXG5cdFwiZmxvcmFsd2hpdGVcIjogWzI1NSwgMjUwLCAyNDBdLFxyXG5cdFwiZm9yZXN0Z3JlZW5cIjogWzM0LCAxMzksIDM0XSxcclxuXHRcImZ1Y2hzaWFcIjogWzI1NSwgMCwgMjU1XSxcclxuXHRcImdhaW5zYm9yb1wiOiBbMjIwLCAyMjAsIDIyMF0sXHJcblx0XCJnaG9zdHdoaXRlXCI6IFsyNDgsIDI0OCwgMjU1XSxcclxuXHRcImdvbGRcIjogWzI1NSwgMjE1LCAwXSxcclxuXHRcImdvbGRlbnJvZFwiOiBbMjE4LCAxNjUsIDMyXSxcclxuXHRcImdyYXlcIjogWzEyOCwgMTI4LCAxMjhdLFxyXG5cdFwiZ3JlZW5cIjogWzAsIDEyOCwgMF0sXHJcblx0XCJncmVlbnllbGxvd1wiOiBbMTczLCAyNTUsIDQ3XSxcclxuXHRcImdyZXlcIjogWzEyOCwgMTI4LCAxMjhdLFxyXG5cdFwiaG9uZXlkZXdcIjogWzI0MCwgMjU1LCAyNDBdLFxyXG5cdFwiaG90cGlua1wiOiBbMjU1LCAxMDUsIDE4MF0sXHJcblx0XCJpbmRpYW5yZWRcIjogWzIwNSwgOTIsIDkyXSxcclxuXHRcImluZGlnb1wiOiBbNzUsIDAsIDEzMF0sXHJcblx0XCJpdm9yeVwiOiBbMjU1LCAyNTUsIDI0MF0sXHJcblx0XCJraGFraVwiOiBbMjQwLCAyMzAsIDE0MF0sXHJcblx0XCJsYXZlbmRlclwiOiBbMjMwLCAyMzAsIDI1MF0sXHJcblx0XCJsYXZlbmRlcmJsdXNoXCI6IFsyNTUsIDI0MCwgMjQ1XSxcclxuXHRcImxhd25ncmVlblwiOiBbMTI0LCAyNTIsIDBdLFxyXG5cdFwibGVtb25jaGlmZm9uXCI6IFsyNTUsIDI1MCwgMjA1XSxcclxuXHRcImxpZ2h0Ymx1ZVwiOiBbMTczLCAyMTYsIDIzMF0sXHJcblx0XCJsaWdodGNvcmFsXCI6IFsyNDAsIDEyOCwgMTI4XSxcclxuXHRcImxpZ2h0Y3lhblwiOiBbMjI0LCAyNTUsIDI1NV0sXHJcblx0XCJsaWdodGdvbGRlbnJvZHllbGxvd1wiOiBbMjUwLCAyNTAsIDIxMF0sXHJcblx0XCJsaWdodGdyYXlcIjogWzIxMSwgMjExLCAyMTFdLFxyXG5cdFwibGlnaHRncmVlblwiOiBbMTQ0LCAyMzgsIDE0NF0sXHJcblx0XCJsaWdodGdyZXlcIjogWzIxMSwgMjExLCAyMTFdLFxyXG5cdFwibGlnaHRwaW5rXCI6IFsyNTUsIDE4MiwgMTkzXSxcclxuXHRcImxpZ2h0c2FsbW9uXCI6IFsyNTUsIDE2MCwgMTIyXSxcclxuXHRcImxpZ2h0c2VhZ3JlZW5cIjogWzMyLCAxNzgsIDE3MF0sXHJcblx0XCJsaWdodHNreWJsdWVcIjogWzEzNSwgMjA2LCAyNTBdLFxyXG5cdFwibGlnaHRzbGF0ZWdyYXlcIjogWzExOSwgMTM2LCAxNTNdLFxyXG5cdFwibGlnaHRzbGF0ZWdyZXlcIjogWzExOSwgMTM2LCAxNTNdLFxyXG5cdFwibGlnaHRzdGVlbGJsdWVcIjogWzE3NiwgMTk2LCAyMjJdLFxyXG5cdFwibGlnaHR5ZWxsb3dcIjogWzI1NSwgMjU1LCAyMjRdLFxyXG5cdFwibGltZVwiOiBbMCwgMjU1LCAwXSxcclxuXHRcImxpbWVncmVlblwiOiBbNTAsIDIwNSwgNTBdLFxyXG5cdFwibGluZW5cIjogWzI1MCwgMjQwLCAyMzBdLFxyXG5cdFwibWFnZW50YVwiOiBbMjU1LCAwLCAyNTVdLFxyXG5cdFwibWFyb29uXCI6IFsxMjgsIDAsIDBdLFxyXG5cdFwibWVkaXVtYXF1YW1hcmluZVwiOiBbMTAyLCAyMDUsIDE3MF0sXHJcblx0XCJtZWRpdW1ibHVlXCI6IFswLCAwLCAyMDVdLFxyXG5cdFwibWVkaXVtb3JjaGlkXCI6IFsxODYsIDg1LCAyMTFdLFxyXG5cdFwibWVkaXVtcHVycGxlXCI6IFsxNDcsIDExMiwgMjE5XSxcclxuXHRcIm1lZGl1bXNlYWdyZWVuXCI6IFs2MCwgMTc5LCAxMTNdLFxyXG5cdFwibWVkaXVtc2xhdGVibHVlXCI6IFsxMjMsIDEwNCwgMjM4XSxcclxuXHRcIm1lZGl1bXNwcmluZ2dyZWVuXCI6IFswLCAyNTAsIDE1NF0sXHJcblx0XCJtZWRpdW10dXJxdW9pc2VcIjogWzcyLCAyMDksIDIwNF0sXHJcblx0XCJtZWRpdW12aW9sZXRyZWRcIjogWzE5OSwgMjEsIDEzM10sXHJcblx0XCJtaWRuaWdodGJsdWVcIjogWzI1LCAyNSwgMTEyXSxcclxuXHRcIm1pbnRjcmVhbVwiOiBbMjQ1LCAyNTUsIDI1MF0sXHJcblx0XCJtaXN0eXJvc2VcIjogWzI1NSwgMjI4LCAyMjVdLFxyXG5cdFwibW9jY2FzaW5cIjogWzI1NSwgMjI4LCAxODFdLFxyXG5cdFwibmF2YWpvd2hpdGVcIjogWzI1NSwgMjIyLCAxNzNdLFxyXG5cdFwibmF2eVwiOiBbMCwgMCwgMTI4XSxcclxuXHRcIm9sZGxhY2VcIjogWzI1MywgMjQ1LCAyMzBdLFxyXG5cdFwib2xpdmVcIjogWzEyOCwgMTI4LCAwXSxcclxuXHRcIm9saXZlZHJhYlwiOiBbMTA3LCAxNDIsIDM1XSxcclxuXHRcIm9yYW5nZVwiOiBbMjU1LCAxNjUsIDBdLFxyXG5cdFwib3JhbmdlcmVkXCI6IFsyNTUsIDY5LCAwXSxcclxuXHRcIm9yY2hpZFwiOiBbMjE4LCAxMTIsIDIxNF0sXHJcblx0XCJwYWxlZ29sZGVucm9kXCI6IFsyMzgsIDIzMiwgMTcwXSxcclxuXHRcInBhbGVncmVlblwiOiBbMTUyLCAyNTEsIDE1Ml0sXHJcblx0XCJwYWxldHVycXVvaXNlXCI6IFsxNzUsIDIzOCwgMjM4XSxcclxuXHRcInBhbGV2aW9sZXRyZWRcIjogWzIxOSwgMTEyLCAxNDddLFxyXG5cdFwicGFwYXlhd2hpcFwiOiBbMjU1LCAyMzksIDIxM10sXHJcblx0XCJwZWFjaHB1ZmZcIjogWzI1NSwgMjE4LCAxODVdLFxyXG5cdFwicGVydVwiOiBbMjA1LCAxMzMsIDYzXSxcclxuXHRcInBpbmtcIjogWzI1NSwgMTkyLCAyMDNdLFxyXG5cdFwicGx1bVwiOiBbMjIxLCAxNjAsIDIyMV0sXHJcblx0XCJwb3dkZXJibHVlXCI6IFsxNzYsIDIyNCwgMjMwXSxcclxuXHRcInB1cnBsZVwiOiBbMTI4LCAwLCAxMjhdLFxyXG5cdFwicmViZWNjYXB1cnBsZVwiOiBbMTAyLCA1MSwgMTUzXSxcclxuXHRcInJlZFwiOiBbMjU1LCAwLCAwXSxcclxuXHRcInJvc3licm93blwiOiBbMTg4LCAxNDMsIDE0M10sXHJcblx0XCJyb3lhbGJsdWVcIjogWzY1LCAxMDUsIDIyNV0sXHJcblx0XCJzYWRkbGVicm93blwiOiBbMTM5LCA2OSwgMTldLFxyXG5cdFwic2FsbW9uXCI6IFsyNTAsIDEyOCwgMTE0XSxcclxuXHRcInNhbmR5YnJvd25cIjogWzI0NCwgMTY0LCA5Nl0sXHJcblx0XCJzZWFncmVlblwiOiBbNDYsIDEzOSwgODddLFxyXG5cdFwic2Vhc2hlbGxcIjogWzI1NSwgMjQ1LCAyMzhdLFxyXG5cdFwic2llbm5hXCI6IFsxNjAsIDgyLCA0NV0sXHJcblx0XCJzaWx2ZXJcIjogWzE5MiwgMTkyLCAxOTJdLFxyXG5cdFwic2t5Ymx1ZVwiOiBbMTM1LCAyMDYsIDIzNV0sXHJcblx0XCJzbGF0ZWJsdWVcIjogWzEwNiwgOTAsIDIwNV0sXHJcblx0XCJzbGF0ZWdyYXlcIjogWzExMiwgMTI4LCAxNDRdLFxyXG5cdFwic2xhdGVncmV5XCI6IFsxMTIsIDEyOCwgMTQ0XSxcclxuXHRcInNub3dcIjogWzI1NSwgMjUwLCAyNTBdLFxyXG5cdFwic3ByaW5nZ3JlZW5cIjogWzAsIDI1NSwgMTI3XSxcclxuXHRcInN0ZWVsYmx1ZVwiOiBbNzAsIDEzMCwgMTgwXSxcclxuXHRcInRhblwiOiBbMjEwLCAxODAsIDE0MF0sXHJcblx0XCJ0ZWFsXCI6IFswLCAxMjgsIDEyOF0sXHJcblx0XCJ0aGlzdGxlXCI6IFsyMTYsIDE5MSwgMjE2XSxcclxuXHRcInRvbWF0b1wiOiBbMjU1LCA5OSwgNzFdLFxyXG5cdFwidHVycXVvaXNlXCI6IFs2NCwgMjI0LCAyMDhdLFxyXG5cdFwidmlvbGV0XCI6IFsyMzgsIDEzMCwgMjM4XSxcclxuXHRcIndoZWF0XCI6IFsyNDUsIDIyMiwgMTc5XSxcclxuXHRcIndoaXRlXCI6IFsyNTUsIDI1NSwgMjU1XSxcclxuXHRcIndoaXRlc21va2VcIjogWzI0NSwgMjQ1LCAyNDVdLFxyXG5cdFwieWVsbG93XCI6IFsyNTUsIDI1NSwgMF0sXHJcblx0XCJ5ZWxsb3dncmVlblwiOiBbMTU0LCAyMDUsIDUwXVxyXG59O1xyXG4iLCAiLyogTUlUIGxpY2Vuc2UgKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLW1peGVkLW9wZXJhdG9ycyAqL1xuY29uc3QgY3NzS2V5d29yZHMgPSByZXF1aXJlKCdjb2xvci1uYW1lJyk7XG5cbi8vIE5PVEU6IGNvbnZlcnNpb25zIHNob3VsZCBvbmx5IHJldHVybiBwcmltaXRpdmUgdmFsdWVzIChpLmUuIGFycmF5cywgb3Jcbi8vICAgICAgIHZhbHVlcyB0aGF0IGdpdmUgY29ycmVjdCBgdHlwZW9mYCByZXN1bHRzKS5cbi8vICAgICAgIGRvIG5vdCB1c2UgYm94IHZhbHVlcyB0eXBlcyAoaS5lLiBOdW1iZXIoKSwgU3RyaW5nKCksIGV0Yy4pXG5cbmNvbnN0IHJldmVyc2VLZXl3b3JkcyA9IHt9O1xuZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMoY3NzS2V5d29yZHMpKSB7XG5cdHJldmVyc2VLZXl3b3Jkc1tjc3NLZXl3b3Jkc1trZXldXSA9IGtleTtcbn1cblxuY29uc3QgY29udmVydCA9IHtcblx0cmdiOiB7Y2hhbm5lbHM6IDMsIGxhYmVsczogJ3JnYid9LFxuXHRoc2w6IHtjaGFubmVsczogMywgbGFiZWxzOiAnaHNsJ30sXG5cdGhzdjoge2NoYW5uZWxzOiAzLCBsYWJlbHM6ICdoc3YnfSxcblx0aHdiOiB7Y2hhbm5lbHM6IDMsIGxhYmVsczogJ2h3Yid9LFxuXHRjbXlrOiB7Y2hhbm5lbHM6IDQsIGxhYmVsczogJ2NteWsnfSxcblx0eHl6OiB7Y2hhbm5lbHM6IDMsIGxhYmVsczogJ3h5eid9LFxuXHRsYWI6IHtjaGFubmVsczogMywgbGFiZWxzOiAnbGFiJ30sXG5cdGxjaDoge2NoYW5uZWxzOiAzLCBsYWJlbHM6ICdsY2gnfSxcblx0aGV4OiB7Y2hhbm5lbHM6IDEsIGxhYmVsczogWydoZXgnXX0sXG5cdGtleXdvcmQ6IHtjaGFubmVsczogMSwgbGFiZWxzOiBbJ2tleXdvcmQnXX0sXG5cdGFuc2kxNjoge2NoYW5uZWxzOiAxLCBsYWJlbHM6IFsnYW5zaTE2J119LFxuXHRhbnNpMjU2OiB7Y2hhbm5lbHM6IDEsIGxhYmVsczogWydhbnNpMjU2J119LFxuXHRoY2c6IHtjaGFubmVsczogMywgbGFiZWxzOiBbJ2gnLCAnYycsICdnJ119LFxuXHRhcHBsZToge2NoYW5uZWxzOiAzLCBsYWJlbHM6IFsncjE2JywgJ2cxNicsICdiMTYnXX0sXG5cdGdyYXk6IHtjaGFubmVsczogMSwgbGFiZWxzOiBbJ2dyYXknXX1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gY29udmVydDtcblxuLy8gSGlkZSAuY2hhbm5lbHMgYW5kIC5sYWJlbHMgcHJvcGVydGllc1xuZm9yIChjb25zdCBtb2RlbCBvZiBPYmplY3Qua2V5cyhjb252ZXJ0KSkge1xuXHRpZiAoISgnY2hhbm5lbHMnIGluIGNvbnZlcnRbbW9kZWxdKSkge1xuXHRcdHRocm93IG5ldyBFcnJvcignbWlzc2luZyBjaGFubmVscyBwcm9wZXJ0eTogJyArIG1vZGVsKTtcblx0fVxuXG5cdGlmICghKCdsYWJlbHMnIGluIGNvbnZlcnRbbW9kZWxdKSkge1xuXHRcdHRocm93IG5ldyBFcnJvcignbWlzc2luZyBjaGFubmVsIGxhYmVscyBwcm9wZXJ0eTogJyArIG1vZGVsKTtcblx0fVxuXG5cdGlmIChjb252ZXJ0W21vZGVsXS5sYWJlbHMubGVuZ3RoICE9PSBjb252ZXJ0W21vZGVsXS5jaGFubmVscykge1xuXHRcdHRocm93IG5ldyBFcnJvcignY2hhbm5lbCBhbmQgbGFiZWwgY291bnRzIG1pc21hdGNoOiAnICsgbW9kZWwpO1xuXHR9XG5cblx0Y29uc3Qge2NoYW5uZWxzLCBsYWJlbHN9ID0gY29udmVydFttb2RlbF07XG5cdGRlbGV0ZSBjb252ZXJ0W21vZGVsXS5jaGFubmVscztcblx0ZGVsZXRlIGNvbnZlcnRbbW9kZWxdLmxhYmVscztcblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGNvbnZlcnRbbW9kZWxdLCAnY2hhbm5lbHMnLCB7dmFsdWU6IGNoYW5uZWxzfSk7XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjb252ZXJ0W21vZGVsXSwgJ2xhYmVscycsIHt2YWx1ZTogbGFiZWxzfSk7XG59XG5cbmNvbnZlcnQucmdiLmhzbCA9IGZ1bmN0aW9uIChyZ2IpIHtcblx0Y29uc3QgciA9IHJnYlswXSAvIDI1NTtcblx0Y29uc3QgZyA9IHJnYlsxXSAvIDI1NTtcblx0Y29uc3QgYiA9IHJnYlsyXSAvIDI1NTtcblx0Y29uc3QgbWluID0gTWF0aC5taW4ociwgZywgYik7XG5cdGNvbnN0IG1heCA9IE1hdGgubWF4KHIsIGcsIGIpO1xuXHRjb25zdCBkZWx0YSA9IG1heCAtIG1pbjtcblx0bGV0IGg7XG5cdGxldCBzO1xuXG5cdGlmIChtYXggPT09IG1pbikge1xuXHRcdGggPSAwO1xuXHR9IGVsc2UgaWYgKHIgPT09IG1heCkge1xuXHRcdGggPSAoZyAtIGIpIC8gZGVsdGE7XG5cdH0gZWxzZSBpZiAoZyA9PT0gbWF4KSB7XG5cdFx0aCA9IDIgKyAoYiAtIHIpIC8gZGVsdGE7XG5cdH0gZWxzZSBpZiAoYiA9PT0gbWF4KSB7XG5cdFx0aCA9IDQgKyAociAtIGcpIC8gZGVsdGE7XG5cdH1cblxuXHRoID0gTWF0aC5taW4oaCAqIDYwLCAzNjApO1xuXG5cdGlmIChoIDwgMCkge1xuXHRcdGggKz0gMzYwO1xuXHR9XG5cblx0Y29uc3QgbCA9IChtaW4gKyBtYXgpIC8gMjtcblxuXHRpZiAobWF4ID09PSBtaW4pIHtcblx0XHRzID0gMDtcblx0fSBlbHNlIGlmIChsIDw9IDAuNSkge1xuXHRcdHMgPSBkZWx0YSAvIChtYXggKyBtaW4pO1xuXHR9IGVsc2Uge1xuXHRcdHMgPSBkZWx0YSAvICgyIC0gbWF4IC0gbWluKTtcblx0fVxuXG5cdHJldHVybiBbaCwgcyAqIDEwMCwgbCAqIDEwMF07XG59O1xuXG5jb252ZXJ0LnJnYi5oc3YgPSBmdW5jdGlvbiAocmdiKSB7XG5cdGxldCByZGlmO1xuXHRsZXQgZ2RpZjtcblx0bGV0IGJkaWY7XG5cdGxldCBoO1xuXHRsZXQgcztcblxuXHRjb25zdCByID0gcmdiWzBdIC8gMjU1O1xuXHRjb25zdCBnID0gcmdiWzFdIC8gMjU1O1xuXHRjb25zdCBiID0gcmdiWzJdIC8gMjU1O1xuXHRjb25zdCB2ID0gTWF0aC5tYXgociwgZywgYik7XG5cdGNvbnN0IGRpZmYgPSB2IC0gTWF0aC5taW4ociwgZywgYik7XG5cdGNvbnN0IGRpZmZjID0gZnVuY3Rpb24gKGMpIHtcblx0XHRyZXR1cm4gKHYgLSBjKSAvIDYgLyBkaWZmICsgMSAvIDI7XG5cdH07XG5cblx0aWYgKGRpZmYgPT09IDApIHtcblx0XHRoID0gMDtcblx0XHRzID0gMDtcblx0fSBlbHNlIHtcblx0XHRzID0gZGlmZiAvIHY7XG5cdFx0cmRpZiA9IGRpZmZjKHIpO1xuXHRcdGdkaWYgPSBkaWZmYyhnKTtcblx0XHRiZGlmID0gZGlmZmMoYik7XG5cblx0XHRpZiAociA9PT0gdikge1xuXHRcdFx0aCA9IGJkaWYgLSBnZGlmO1xuXHRcdH0gZWxzZSBpZiAoZyA9PT0gdikge1xuXHRcdFx0aCA9ICgxIC8gMykgKyByZGlmIC0gYmRpZjtcblx0XHR9IGVsc2UgaWYgKGIgPT09IHYpIHtcblx0XHRcdGggPSAoMiAvIDMpICsgZ2RpZiAtIHJkaWY7XG5cdFx0fVxuXG5cdFx0aWYgKGggPCAwKSB7XG5cdFx0XHRoICs9IDE7XG5cdFx0fSBlbHNlIGlmIChoID4gMSkge1xuXHRcdFx0aCAtPSAxO1xuXHRcdH1cblx0fVxuXG5cdHJldHVybiBbXG5cdFx0aCAqIDM2MCxcblx0XHRzICogMTAwLFxuXHRcdHYgKiAxMDBcblx0XTtcbn07XG5cbmNvbnZlcnQucmdiLmh3YiA9IGZ1bmN0aW9uIChyZ2IpIHtcblx0Y29uc3QgciA9IHJnYlswXTtcblx0Y29uc3QgZyA9IHJnYlsxXTtcblx0bGV0IGIgPSByZ2JbMl07XG5cdGNvbnN0IGggPSBjb252ZXJ0LnJnYi5oc2wocmdiKVswXTtcblx0Y29uc3QgdyA9IDEgLyAyNTUgKiBNYXRoLm1pbihyLCBNYXRoLm1pbihnLCBiKSk7XG5cblx0YiA9IDEgLSAxIC8gMjU1ICogTWF0aC5tYXgociwgTWF0aC5tYXgoZywgYikpO1xuXG5cdHJldHVybiBbaCwgdyAqIDEwMCwgYiAqIDEwMF07XG59O1xuXG5jb252ZXJ0LnJnYi5jbXlrID0gZnVuY3Rpb24gKHJnYikge1xuXHRjb25zdCByID0gcmdiWzBdIC8gMjU1O1xuXHRjb25zdCBnID0gcmdiWzFdIC8gMjU1O1xuXHRjb25zdCBiID0gcmdiWzJdIC8gMjU1O1xuXG5cdGNvbnN0IGsgPSBNYXRoLm1pbigxIC0gciwgMSAtIGcsIDEgLSBiKTtcblx0Y29uc3QgYyA9ICgxIC0gciAtIGspIC8gKDEgLSBrKSB8fCAwO1xuXHRjb25zdCBtID0gKDEgLSBnIC0gaykgLyAoMSAtIGspIHx8IDA7XG5cdGNvbnN0IHkgPSAoMSAtIGIgLSBrKSAvICgxIC0gaykgfHwgMDtcblxuXHRyZXR1cm4gW2MgKiAxMDAsIG0gKiAxMDAsIHkgKiAxMDAsIGsgKiAxMDBdO1xufTtcblxuZnVuY3Rpb24gY29tcGFyYXRpdmVEaXN0YW5jZSh4LCB5KSB7XG5cdC8qXG5cdFx0U2VlIGh0dHBzOi8vZW4ubS53aWtpcGVkaWEub3JnL3dpa2kvRXVjbGlkZWFuX2Rpc3RhbmNlI1NxdWFyZWRfRXVjbGlkZWFuX2Rpc3RhbmNlXG5cdCovXG5cdHJldHVybiAoXG5cdFx0KCh4WzBdIC0geVswXSkgKiogMikgK1xuXHRcdCgoeFsxXSAtIHlbMV0pICoqIDIpICtcblx0XHQoKHhbMl0gLSB5WzJdKSAqKiAyKVxuXHQpO1xufVxuXG5jb252ZXJ0LnJnYi5rZXl3b3JkID0gZnVuY3Rpb24gKHJnYikge1xuXHRjb25zdCByZXZlcnNlZCA9IHJldmVyc2VLZXl3b3Jkc1tyZ2JdO1xuXHRpZiAocmV2ZXJzZWQpIHtcblx0XHRyZXR1cm4gcmV2ZXJzZWQ7XG5cdH1cblxuXHRsZXQgY3VycmVudENsb3Nlc3REaXN0YW5jZSA9IEluZmluaXR5O1xuXHRsZXQgY3VycmVudENsb3Nlc3RLZXl3b3JkO1xuXG5cdGZvciAoY29uc3Qga2V5d29yZCBvZiBPYmplY3Qua2V5cyhjc3NLZXl3b3JkcykpIHtcblx0XHRjb25zdCB2YWx1ZSA9IGNzc0tleXdvcmRzW2tleXdvcmRdO1xuXG5cdFx0Ly8gQ29tcHV0ZSBjb21wYXJhdGl2ZSBkaXN0YW5jZVxuXHRcdGNvbnN0IGRpc3RhbmNlID0gY29tcGFyYXRpdmVEaXN0YW5jZShyZ2IsIHZhbHVlKTtcblxuXHRcdC8vIENoZWNrIGlmIGl0cyBsZXNzLCBpZiBzbyBzZXQgYXMgY2xvc2VzdFxuXHRcdGlmIChkaXN0YW5jZSA8IGN1cnJlbnRDbG9zZXN0RGlzdGFuY2UpIHtcblx0XHRcdGN1cnJlbnRDbG9zZXN0RGlzdGFuY2UgPSBkaXN0YW5jZTtcblx0XHRcdGN1cnJlbnRDbG9zZXN0S2V5d29yZCA9IGtleXdvcmQ7XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIGN1cnJlbnRDbG9zZXN0S2V5d29yZDtcbn07XG5cbmNvbnZlcnQua2V5d29yZC5yZ2IgPSBmdW5jdGlvbiAoa2V5d29yZCkge1xuXHRyZXR1cm4gY3NzS2V5d29yZHNba2V5d29yZF07XG59O1xuXG5jb252ZXJ0LnJnYi54eXogPSBmdW5jdGlvbiAocmdiKSB7XG5cdGxldCByID0gcmdiWzBdIC8gMjU1O1xuXHRsZXQgZyA9IHJnYlsxXSAvIDI1NTtcblx0bGV0IGIgPSByZ2JbMl0gLyAyNTU7XG5cblx0Ly8gQXNzdW1lIHNSR0Jcblx0ciA9IHIgPiAwLjA0MDQ1ID8gKCgociArIDAuMDU1KSAvIDEuMDU1KSAqKiAyLjQpIDogKHIgLyAxMi45Mik7XG5cdGcgPSBnID4gMC4wNDA0NSA/ICgoKGcgKyAwLjA1NSkgLyAxLjA1NSkgKiogMi40KSA6IChnIC8gMTIuOTIpO1xuXHRiID0gYiA+IDAuMDQwNDUgPyAoKChiICsgMC4wNTUpIC8gMS4wNTUpICoqIDIuNCkgOiAoYiAvIDEyLjkyKTtcblxuXHRjb25zdCB4ID0gKHIgKiAwLjQxMjQpICsgKGcgKiAwLjM1NzYpICsgKGIgKiAwLjE4MDUpO1xuXHRjb25zdCB5ID0gKHIgKiAwLjIxMjYpICsgKGcgKiAwLjcxNTIpICsgKGIgKiAwLjA3MjIpO1xuXHRjb25zdCB6ID0gKHIgKiAwLjAxOTMpICsgKGcgKiAwLjExOTIpICsgKGIgKiAwLjk1MDUpO1xuXG5cdHJldHVybiBbeCAqIDEwMCwgeSAqIDEwMCwgeiAqIDEwMF07XG59O1xuXG5jb252ZXJ0LnJnYi5sYWIgPSBmdW5jdGlvbiAocmdiKSB7XG5cdGNvbnN0IHh5eiA9IGNvbnZlcnQucmdiLnh5eihyZ2IpO1xuXHRsZXQgeCA9IHh5elswXTtcblx0bGV0IHkgPSB4eXpbMV07XG5cdGxldCB6ID0geHl6WzJdO1xuXG5cdHggLz0gOTUuMDQ3O1xuXHR5IC89IDEwMDtcblx0eiAvPSAxMDguODgzO1xuXG5cdHggPSB4ID4gMC4wMDg4NTYgPyAoeCAqKiAoMSAvIDMpKSA6ICg3Ljc4NyAqIHgpICsgKDE2IC8gMTE2KTtcblx0eSA9IHkgPiAwLjAwODg1NiA/ICh5ICoqICgxIC8gMykpIDogKDcuNzg3ICogeSkgKyAoMTYgLyAxMTYpO1xuXHR6ID0geiA+IDAuMDA4ODU2ID8gKHogKiogKDEgLyAzKSkgOiAoNy43ODcgKiB6KSArICgxNiAvIDExNik7XG5cblx0Y29uc3QgbCA9ICgxMTYgKiB5KSAtIDE2O1xuXHRjb25zdCBhID0gNTAwICogKHggLSB5KTtcblx0Y29uc3QgYiA9IDIwMCAqICh5IC0geik7XG5cblx0cmV0dXJuIFtsLCBhLCBiXTtcbn07XG5cbmNvbnZlcnQuaHNsLnJnYiA9IGZ1bmN0aW9uIChoc2wpIHtcblx0Y29uc3QgaCA9IGhzbFswXSAvIDM2MDtcblx0Y29uc3QgcyA9IGhzbFsxXSAvIDEwMDtcblx0Y29uc3QgbCA9IGhzbFsyXSAvIDEwMDtcblx0bGV0IHQyO1xuXHRsZXQgdDM7XG5cdGxldCB2YWw7XG5cblx0aWYgKHMgPT09IDApIHtcblx0XHR2YWwgPSBsICogMjU1O1xuXHRcdHJldHVybiBbdmFsLCB2YWwsIHZhbF07XG5cdH1cblxuXHRpZiAobCA8IDAuNSkge1xuXHRcdHQyID0gbCAqICgxICsgcyk7XG5cdH0gZWxzZSB7XG5cdFx0dDIgPSBsICsgcyAtIGwgKiBzO1xuXHR9XG5cblx0Y29uc3QgdDEgPSAyICogbCAtIHQyO1xuXG5cdGNvbnN0IHJnYiA9IFswLCAwLCAwXTtcblx0Zm9yIChsZXQgaSA9IDA7IGkgPCAzOyBpKyspIHtcblx0XHR0MyA9IGggKyAxIC8gMyAqIC0oaSAtIDEpO1xuXHRcdGlmICh0MyA8IDApIHtcblx0XHRcdHQzKys7XG5cdFx0fVxuXG5cdFx0aWYgKHQzID4gMSkge1xuXHRcdFx0dDMtLTtcblx0XHR9XG5cblx0XHRpZiAoNiAqIHQzIDwgMSkge1xuXHRcdFx0dmFsID0gdDEgKyAodDIgLSB0MSkgKiA2ICogdDM7XG5cdFx0fSBlbHNlIGlmICgyICogdDMgPCAxKSB7XG5cdFx0XHR2YWwgPSB0Mjtcblx0XHR9IGVsc2UgaWYgKDMgKiB0MyA8IDIpIHtcblx0XHRcdHZhbCA9IHQxICsgKHQyIC0gdDEpICogKDIgLyAzIC0gdDMpICogNjtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dmFsID0gdDE7XG5cdFx0fVxuXG5cdFx0cmdiW2ldID0gdmFsICogMjU1O1xuXHR9XG5cblx0cmV0dXJuIHJnYjtcbn07XG5cbmNvbnZlcnQuaHNsLmhzdiA9IGZ1bmN0aW9uIChoc2wpIHtcblx0Y29uc3QgaCA9IGhzbFswXTtcblx0bGV0IHMgPSBoc2xbMV0gLyAxMDA7XG5cdGxldCBsID0gaHNsWzJdIC8gMTAwO1xuXHRsZXQgc21pbiA9IHM7XG5cdGNvbnN0IGxtaW4gPSBNYXRoLm1heChsLCAwLjAxKTtcblxuXHRsICo9IDI7XG5cdHMgKj0gKGwgPD0gMSkgPyBsIDogMiAtIGw7XG5cdHNtaW4gKj0gbG1pbiA8PSAxID8gbG1pbiA6IDIgLSBsbWluO1xuXHRjb25zdCB2ID0gKGwgKyBzKSAvIDI7XG5cdGNvbnN0IHN2ID0gbCA9PT0gMCA/ICgyICogc21pbikgLyAobG1pbiArIHNtaW4pIDogKDIgKiBzKSAvIChsICsgcyk7XG5cblx0cmV0dXJuIFtoLCBzdiAqIDEwMCwgdiAqIDEwMF07XG59O1xuXG5jb252ZXJ0Lmhzdi5yZ2IgPSBmdW5jdGlvbiAoaHN2KSB7XG5cdGNvbnN0IGggPSBoc3ZbMF0gLyA2MDtcblx0Y29uc3QgcyA9IGhzdlsxXSAvIDEwMDtcblx0bGV0IHYgPSBoc3ZbMl0gLyAxMDA7XG5cdGNvbnN0IGhpID0gTWF0aC5mbG9vcihoKSAlIDY7XG5cblx0Y29uc3QgZiA9IGggLSBNYXRoLmZsb29yKGgpO1xuXHRjb25zdCBwID0gMjU1ICogdiAqICgxIC0gcyk7XG5cdGNvbnN0IHEgPSAyNTUgKiB2ICogKDEgLSAocyAqIGYpKTtcblx0Y29uc3QgdCA9IDI1NSAqIHYgKiAoMSAtIChzICogKDEgLSBmKSkpO1xuXHR2ICo9IDI1NTtcblxuXHRzd2l0Y2ggKGhpKSB7XG5cdFx0Y2FzZSAwOlxuXHRcdFx0cmV0dXJuIFt2LCB0LCBwXTtcblx0XHRjYXNlIDE6XG5cdFx0XHRyZXR1cm4gW3EsIHYsIHBdO1xuXHRcdGNhc2UgMjpcblx0XHRcdHJldHVybiBbcCwgdiwgdF07XG5cdFx0Y2FzZSAzOlxuXHRcdFx0cmV0dXJuIFtwLCBxLCB2XTtcblx0XHRjYXNlIDQ6XG5cdFx0XHRyZXR1cm4gW3QsIHAsIHZdO1xuXHRcdGNhc2UgNTpcblx0XHRcdHJldHVybiBbdiwgcCwgcV07XG5cdH1cbn07XG5cbmNvbnZlcnQuaHN2LmhzbCA9IGZ1bmN0aW9uIChoc3YpIHtcblx0Y29uc3QgaCA9IGhzdlswXTtcblx0Y29uc3QgcyA9IGhzdlsxXSAvIDEwMDtcblx0Y29uc3QgdiA9IGhzdlsyXSAvIDEwMDtcblx0Y29uc3Qgdm1pbiA9IE1hdGgubWF4KHYsIDAuMDEpO1xuXHRsZXQgc2w7XG5cdGxldCBsO1xuXG5cdGwgPSAoMiAtIHMpICogdjtcblx0Y29uc3QgbG1pbiA9ICgyIC0gcykgKiB2bWluO1xuXHRzbCA9IHMgKiB2bWluO1xuXHRzbCAvPSAobG1pbiA8PSAxKSA/IGxtaW4gOiAyIC0gbG1pbjtcblx0c2wgPSBzbCB8fCAwO1xuXHRsIC89IDI7XG5cblx0cmV0dXJuIFtoLCBzbCAqIDEwMCwgbCAqIDEwMF07XG59O1xuXG4vLyBodHRwOi8vZGV2LnczLm9yZy9jc3N3Zy9jc3MtY29sb3IvI2h3Yi10by1yZ2JcbmNvbnZlcnQuaHdiLnJnYiA9IGZ1bmN0aW9uIChod2IpIHtcblx0Y29uc3QgaCA9IGh3YlswXSAvIDM2MDtcblx0bGV0IHdoID0gaHdiWzFdIC8gMTAwO1xuXHRsZXQgYmwgPSBod2JbMl0gLyAxMDA7XG5cdGNvbnN0IHJhdGlvID0gd2ggKyBibDtcblx0bGV0IGY7XG5cblx0Ly8gV2ggKyBibCBjYW50IGJlID4gMVxuXHRpZiAocmF0aW8gPiAxKSB7XG5cdFx0d2ggLz0gcmF0aW87XG5cdFx0YmwgLz0gcmF0aW87XG5cdH1cblxuXHRjb25zdCBpID0gTWF0aC5mbG9vcig2ICogaCk7XG5cdGNvbnN0IHYgPSAxIC0gYmw7XG5cdGYgPSA2ICogaCAtIGk7XG5cblx0aWYgKChpICYgMHgwMSkgIT09IDApIHtcblx0XHRmID0gMSAtIGY7XG5cdH1cblxuXHRjb25zdCBuID0gd2ggKyBmICogKHYgLSB3aCk7IC8vIExpbmVhciBpbnRlcnBvbGF0aW9uXG5cblx0bGV0IHI7XG5cdGxldCBnO1xuXHRsZXQgYjtcblx0LyogZXNsaW50LWRpc2FibGUgbWF4LXN0YXRlbWVudHMtcGVyLWxpbmUsbm8tbXVsdGktc3BhY2VzICovXG5cdHN3aXRjaCAoaSkge1xuXHRcdGRlZmF1bHQ6XG5cdFx0Y2FzZSA2OlxuXHRcdGNhc2UgMDogciA9IHY7ICBnID0gbjsgIGIgPSB3aDsgYnJlYWs7XG5cdFx0Y2FzZSAxOiByID0gbjsgIGcgPSB2OyAgYiA9IHdoOyBicmVhaztcblx0XHRjYXNlIDI6IHIgPSB3aDsgZyA9IHY7ICBiID0gbjsgYnJlYWs7XG5cdFx0Y2FzZSAzOiByID0gd2g7IGcgPSBuOyAgYiA9IHY7IGJyZWFrO1xuXHRcdGNhc2UgNDogciA9IG47ICBnID0gd2g7IGIgPSB2OyBicmVhaztcblx0XHRjYXNlIDU6IHIgPSB2OyAgZyA9IHdoOyBiID0gbjsgYnJlYWs7XG5cdH1cblx0LyogZXNsaW50LWVuYWJsZSBtYXgtc3RhdGVtZW50cy1wZXItbGluZSxuby1tdWx0aS1zcGFjZXMgKi9cblxuXHRyZXR1cm4gW3IgKiAyNTUsIGcgKiAyNTUsIGIgKiAyNTVdO1xufTtcblxuY29udmVydC5jbXlrLnJnYiA9IGZ1bmN0aW9uIChjbXlrKSB7XG5cdGNvbnN0IGMgPSBjbXlrWzBdIC8gMTAwO1xuXHRjb25zdCBtID0gY215a1sxXSAvIDEwMDtcblx0Y29uc3QgeSA9IGNteWtbMl0gLyAxMDA7XG5cdGNvbnN0IGsgPSBjbXlrWzNdIC8gMTAwO1xuXG5cdGNvbnN0IHIgPSAxIC0gTWF0aC5taW4oMSwgYyAqICgxIC0gaykgKyBrKTtcblx0Y29uc3QgZyA9IDEgLSBNYXRoLm1pbigxLCBtICogKDEgLSBrKSArIGspO1xuXHRjb25zdCBiID0gMSAtIE1hdGgubWluKDEsIHkgKiAoMSAtIGspICsgayk7XG5cblx0cmV0dXJuIFtyICogMjU1LCBnICogMjU1LCBiICogMjU1XTtcbn07XG5cbmNvbnZlcnQueHl6LnJnYiA9IGZ1bmN0aW9uICh4eXopIHtcblx0Y29uc3QgeCA9IHh5elswXSAvIDEwMDtcblx0Y29uc3QgeSA9IHh5elsxXSAvIDEwMDtcblx0Y29uc3QgeiA9IHh5elsyXSAvIDEwMDtcblx0bGV0IHI7XG5cdGxldCBnO1xuXHRsZXQgYjtcblxuXHRyID0gKHggKiAzLjI0MDYpICsgKHkgKiAtMS41MzcyKSArICh6ICogLTAuNDk4Nik7XG5cdGcgPSAoeCAqIC0wLjk2ODkpICsgKHkgKiAxLjg3NTgpICsgKHogKiAwLjA0MTUpO1xuXHRiID0gKHggKiAwLjA1NTcpICsgKHkgKiAtMC4yMDQwKSArICh6ICogMS4wNTcwKTtcblxuXHQvLyBBc3N1bWUgc1JHQlxuXHRyID0gciA+IDAuMDAzMTMwOFxuXHRcdD8gKCgxLjA1NSAqIChyICoqICgxLjAgLyAyLjQpKSkgLSAwLjA1NSlcblx0XHQ6IHIgKiAxMi45MjtcblxuXHRnID0gZyA+IDAuMDAzMTMwOFxuXHRcdD8gKCgxLjA1NSAqIChnICoqICgxLjAgLyAyLjQpKSkgLSAwLjA1NSlcblx0XHQ6IGcgKiAxMi45MjtcblxuXHRiID0gYiA+IDAuMDAzMTMwOFxuXHRcdD8gKCgxLjA1NSAqIChiICoqICgxLjAgLyAyLjQpKSkgLSAwLjA1NSlcblx0XHQ6IGIgKiAxMi45MjtcblxuXHRyID0gTWF0aC5taW4oTWF0aC5tYXgoMCwgciksIDEpO1xuXHRnID0gTWF0aC5taW4oTWF0aC5tYXgoMCwgZyksIDEpO1xuXHRiID0gTWF0aC5taW4oTWF0aC5tYXgoMCwgYiksIDEpO1xuXG5cdHJldHVybiBbciAqIDI1NSwgZyAqIDI1NSwgYiAqIDI1NV07XG59O1xuXG5jb252ZXJ0Lnh5ei5sYWIgPSBmdW5jdGlvbiAoeHl6KSB7XG5cdGxldCB4ID0geHl6WzBdO1xuXHRsZXQgeSA9IHh5elsxXTtcblx0bGV0IHogPSB4eXpbMl07XG5cblx0eCAvPSA5NS4wNDc7XG5cdHkgLz0gMTAwO1xuXHR6IC89IDEwOC44ODM7XG5cblx0eCA9IHggPiAwLjAwODg1NiA/ICh4ICoqICgxIC8gMykpIDogKDcuNzg3ICogeCkgKyAoMTYgLyAxMTYpO1xuXHR5ID0geSA+IDAuMDA4ODU2ID8gKHkgKiogKDEgLyAzKSkgOiAoNy43ODcgKiB5KSArICgxNiAvIDExNik7XG5cdHogPSB6ID4gMC4wMDg4NTYgPyAoeiAqKiAoMSAvIDMpKSA6ICg3Ljc4NyAqIHopICsgKDE2IC8gMTE2KTtcblxuXHRjb25zdCBsID0gKDExNiAqIHkpIC0gMTY7XG5cdGNvbnN0IGEgPSA1MDAgKiAoeCAtIHkpO1xuXHRjb25zdCBiID0gMjAwICogKHkgLSB6KTtcblxuXHRyZXR1cm4gW2wsIGEsIGJdO1xufTtcblxuY29udmVydC5sYWIueHl6ID0gZnVuY3Rpb24gKGxhYikge1xuXHRjb25zdCBsID0gbGFiWzBdO1xuXHRjb25zdCBhID0gbGFiWzFdO1xuXHRjb25zdCBiID0gbGFiWzJdO1xuXHRsZXQgeDtcblx0bGV0IHk7XG5cdGxldCB6O1xuXG5cdHkgPSAobCArIDE2KSAvIDExNjtcblx0eCA9IGEgLyA1MDAgKyB5O1xuXHR6ID0geSAtIGIgLyAyMDA7XG5cblx0Y29uc3QgeTIgPSB5ICoqIDM7XG5cdGNvbnN0IHgyID0geCAqKiAzO1xuXHRjb25zdCB6MiA9IHogKiogMztcblx0eSA9IHkyID4gMC4wMDg4NTYgPyB5MiA6ICh5IC0gMTYgLyAxMTYpIC8gNy43ODc7XG5cdHggPSB4MiA+IDAuMDA4ODU2ID8geDIgOiAoeCAtIDE2IC8gMTE2KSAvIDcuNzg3O1xuXHR6ID0gejIgPiAwLjAwODg1NiA/IHoyIDogKHogLSAxNiAvIDExNikgLyA3Ljc4NztcblxuXHR4ICo9IDk1LjA0Nztcblx0eSAqPSAxMDA7XG5cdHogKj0gMTA4Ljg4MztcblxuXHRyZXR1cm4gW3gsIHksIHpdO1xufTtcblxuY29udmVydC5sYWIubGNoID0gZnVuY3Rpb24gKGxhYikge1xuXHRjb25zdCBsID0gbGFiWzBdO1xuXHRjb25zdCBhID0gbGFiWzFdO1xuXHRjb25zdCBiID0gbGFiWzJdO1xuXHRsZXQgaDtcblxuXHRjb25zdCBociA9IE1hdGguYXRhbjIoYiwgYSk7XG5cdGggPSBociAqIDM2MCAvIDIgLyBNYXRoLlBJO1xuXG5cdGlmIChoIDwgMCkge1xuXHRcdGggKz0gMzYwO1xuXHR9XG5cblx0Y29uc3QgYyA9IE1hdGguc3FydChhICogYSArIGIgKiBiKTtcblxuXHRyZXR1cm4gW2wsIGMsIGhdO1xufTtcblxuY29udmVydC5sY2gubGFiID0gZnVuY3Rpb24gKGxjaCkge1xuXHRjb25zdCBsID0gbGNoWzBdO1xuXHRjb25zdCBjID0gbGNoWzFdO1xuXHRjb25zdCBoID0gbGNoWzJdO1xuXG5cdGNvbnN0IGhyID0gaCAvIDM2MCAqIDIgKiBNYXRoLlBJO1xuXHRjb25zdCBhID0gYyAqIE1hdGguY29zKGhyKTtcblx0Y29uc3QgYiA9IGMgKiBNYXRoLnNpbihocik7XG5cblx0cmV0dXJuIFtsLCBhLCBiXTtcbn07XG5cbmNvbnZlcnQucmdiLmFuc2kxNiA9IGZ1bmN0aW9uIChhcmdzLCBzYXR1cmF0aW9uID0gbnVsbCkge1xuXHRjb25zdCBbciwgZywgYl0gPSBhcmdzO1xuXHRsZXQgdmFsdWUgPSBzYXR1cmF0aW9uID09PSBudWxsID8gY29udmVydC5yZ2IuaHN2KGFyZ3MpWzJdIDogc2F0dXJhdGlvbjsgLy8gSHN2IC0+IGFuc2kxNiBvcHRpbWl6YXRpb25cblxuXHR2YWx1ZSA9IE1hdGgucm91bmQodmFsdWUgLyA1MCk7XG5cblx0aWYgKHZhbHVlID09PSAwKSB7XG5cdFx0cmV0dXJuIDMwO1xuXHR9XG5cblx0bGV0IGFuc2kgPSAzMFxuXHRcdCsgKChNYXRoLnJvdW5kKGIgLyAyNTUpIDw8IDIpXG5cdFx0fCAoTWF0aC5yb3VuZChnIC8gMjU1KSA8PCAxKVxuXHRcdHwgTWF0aC5yb3VuZChyIC8gMjU1KSk7XG5cblx0aWYgKHZhbHVlID09PSAyKSB7XG5cdFx0YW5zaSArPSA2MDtcblx0fVxuXG5cdHJldHVybiBhbnNpO1xufTtcblxuY29udmVydC5oc3YuYW5zaTE2ID0gZnVuY3Rpb24gKGFyZ3MpIHtcblx0Ly8gT3B0aW1pemF0aW9uIGhlcmU7IHdlIGFscmVhZHkga25vdyB0aGUgdmFsdWUgYW5kIGRvbid0IG5lZWQgdG8gZ2V0XG5cdC8vIGl0IGNvbnZlcnRlZCBmb3IgdXMuXG5cdHJldHVybiBjb252ZXJ0LnJnYi5hbnNpMTYoY29udmVydC5oc3YucmdiKGFyZ3MpLCBhcmdzWzJdKTtcbn07XG5cbmNvbnZlcnQucmdiLmFuc2kyNTYgPSBmdW5jdGlvbiAoYXJncykge1xuXHRjb25zdCByID0gYXJnc1swXTtcblx0Y29uc3QgZyA9IGFyZ3NbMV07XG5cdGNvbnN0IGIgPSBhcmdzWzJdO1xuXG5cdC8vIFdlIHVzZSB0aGUgZXh0ZW5kZWQgZ3JleXNjYWxlIHBhbGV0dGUgaGVyZSwgd2l0aCB0aGUgZXhjZXB0aW9uIG9mXG5cdC8vIGJsYWNrIGFuZCB3aGl0ZS4gbm9ybWFsIHBhbGV0dGUgb25seSBoYXMgNCBncmV5c2NhbGUgc2hhZGVzLlxuXHRpZiAociA9PT0gZyAmJiBnID09PSBiKSB7XG5cdFx0aWYgKHIgPCA4KSB7XG5cdFx0XHRyZXR1cm4gMTY7XG5cdFx0fVxuXG5cdFx0aWYgKHIgPiAyNDgpIHtcblx0XHRcdHJldHVybiAyMzE7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIE1hdGgucm91bmQoKChyIC0gOCkgLyAyNDcpICogMjQpICsgMjMyO1xuXHR9XG5cblx0Y29uc3QgYW5zaSA9IDE2XG5cdFx0KyAoMzYgKiBNYXRoLnJvdW5kKHIgLyAyNTUgKiA1KSlcblx0XHQrICg2ICogTWF0aC5yb3VuZChnIC8gMjU1ICogNSkpXG5cdFx0KyBNYXRoLnJvdW5kKGIgLyAyNTUgKiA1KTtcblxuXHRyZXR1cm4gYW5zaTtcbn07XG5cbmNvbnZlcnQuYW5zaTE2LnJnYiA9IGZ1bmN0aW9uIChhcmdzKSB7XG5cdGxldCBjb2xvciA9IGFyZ3MgJSAxMDtcblxuXHQvLyBIYW5kbGUgZ3JleXNjYWxlXG5cdGlmIChjb2xvciA9PT0gMCB8fCBjb2xvciA9PT0gNykge1xuXHRcdGlmIChhcmdzID4gNTApIHtcblx0XHRcdGNvbG9yICs9IDMuNTtcblx0XHR9XG5cblx0XHRjb2xvciA9IGNvbG9yIC8gMTAuNSAqIDI1NTtcblxuXHRcdHJldHVybiBbY29sb3IsIGNvbG9yLCBjb2xvcl07XG5cdH1cblxuXHRjb25zdCBtdWx0ID0gKH5+KGFyZ3MgPiA1MCkgKyAxKSAqIDAuNTtcblx0Y29uc3QgciA9ICgoY29sb3IgJiAxKSAqIG11bHQpICogMjU1O1xuXHRjb25zdCBnID0gKCgoY29sb3IgPj4gMSkgJiAxKSAqIG11bHQpICogMjU1O1xuXHRjb25zdCBiID0gKCgoY29sb3IgPj4gMikgJiAxKSAqIG11bHQpICogMjU1O1xuXG5cdHJldHVybiBbciwgZywgYl07XG59O1xuXG5jb252ZXJ0LmFuc2kyNTYucmdiID0gZnVuY3Rpb24gKGFyZ3MpIHtcblx0Ly8gSGFuZGxlIGdyZXlzY2FsZVxuXHRpZiAoYXJncyA+PSAyMzIpIHtcblx0XHRjb25zdCBjID0gKGFyZ3MgLSAyMzIpICogMTAgKyA4O1xuXHRcdHJldHVybiBbYywgYywgY107XG5cdH1cblxuXHRhcmdzIC09IDE2O1xuXG5cdGxldCByZW07XG5cdGNvbnN0IHIgPSBNYXRoLmZsb29yKGFyZ3MgLyAzNikgLyA1ICogMjU1O1xuXHRjb25zdCBnID0gTWF0aC5mbG9vcigocmVtID0gYXJncyAlIDM2KSAvIDYpIC8gNSAqIDI1NTtcblx0Y29uc3QgYiA9IChyZW0gJSA2KSAvIDUgKiAyNTU7XG5cblx0cmV0dXJuIFtyLCBnLCBiXTtcbn07XG5cbmNvbnZlcnQucmdiLmhleCA9IGZ1bmN0aW9uIChhcmdzKSB7XG5cdGNvbnN0IGludGVnZXIgPSAoKE1hdGgucm91bmQoYXJnc1swXSkgJiAweEZGKSA8PCAxNilcblx0XHQrICgoTWF0aC5yb3VuZChhcmdzWzFdKSAmIDB4RkYpIDw8IDgpXG5cdFx0KyAoTWF0aC5yb3VuZChhcmdzWzJdKSAmIDB4RkYpO1xuXG5cdGNvbnN0IHN0cmluZyA9IGludGVnZXIudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCk7XG5cdHJldHVybiAnMDAwMDAwJy5zdWJzdHJpbmcoc3RyaW5nLmxlbmd0aCkgKyBzdHJpbmc7XG59O1xuXG5jb252ZXJ0LmhleC5yZ2IgPSBmdW5jdGlvbiAoYXJncykge1xuXHRjb25zdCBtYXRjaCA9IGFyZ3MudG9TdHJpbmcoMTYpLm1hdGNoKC9bYS1mMC05XXs2fXxbYS1mMC05XXszfS9pKTtcblx0aWYgKCFtYXRjaCkge1xuXHRcdHJldHVybiBbMCwgMCwgMF07XG5cdH1cblxuXHRsZXQgY29sb3JTdHJpbmcgPSBtYXRjaFswXTtcblxuXHRpZiAobWF0Y2hbMF0ubGVuZ3RoID09PSAzKSB7XG5cdFx0Y29sb3JTdHJpbmcgPSBjb2xvclN0cmluZy5zcGxpdCgnJykubWFwKGNoYXIgPT4ge1xuXHRcdFx0cmV0dXJuIGNoYXIgKyBjaGFyO1xuXHRcdH0pLmpvaW4oJycpO1xuXHR9XG5cblx0Y29uc3QgaW50ZWdlciA9IHBhcnNlSW50KGNvbG9yU3RyaW5nLCAxNik7XG5cdGNvbnN0IHIgPSAoaW50ZWdlciA+PiAxNikgJiAweEZGO1xuXHRjb25zdCBnID0gKGludGVnZXIgPj4gOCkgJiAweEZGO1xuXHRjb25zdCBiID0gaW50ZWdlciAmIDB4RkY7XG5cblx0cmV0dXJuIFtyLCBnLCBiXTtcbn07XG5cbmNvbnZlcnQucmdiLmhjZyA9IGZ1bmN0aW9uIChyZ2IpIHtcblx0Y29uc3QgciA9IHJnYlswXSAvIDI1NTtcblx0Y29uc3QgZyA9IHJnYlsxXSAvIDI1NTtcblx0Y29uc3QgYiA9IHJnYlsyXSAvIDI1NTtcblx0Y29uc3QgbWF4ID0gTWF0aC5tYXgoTWF0aC5tYXgociwgZyksIGIpO1xuXHRjb25zdCBtaW4gPSBNYXRoLm1pbihNYXRoLm1pbihyLCBnKSwgYik7XG5cdGNvbnN0IGNocm9tYSA9IChtYXggLSBtaW4pO1xuXHRsZXQgZ3JheXNjYWxlO1xuXHRsZXQgaHVlO1xuXG5cdGlmIChjaHJvbWEgPCAxKSB7XG5cdFx0Z3JheXNjYWxlID0gbWluIC8gKDEgLSBjaHJvbWEpO1xuXHR9IGVsc2Uge1xuXHRcdGdyYXlzY2FsZSA9IDA7XG5cdH1cblxuXHRpZiAoY2hyb21hIDw9IDApIHtcblx0XHRodWUgPSAwO1xuXHR9IGVsc2Vcblx0aWYgKG1heCA9PT0gcikge1xuXHRcdGh1ZSA9ICgoZyAtIGIpIC8gY2hyb21hKSAlIDY7XG5cdH0gZWxzZVxuXHRpZiAobWF4ID09PSBnKSB7XG5cdFx0aHVlID0gMiArIChiIC0gcikgLyBjaHJvbWE7XG5cdH0gZWxzZSB7XG5cdFx0aHVlID0gNCArIChyIC0gZykgLyBjaHJvbWE7XG5cdH1cblxuXHRodWUgLz0gNjtcblx0aHVlICU9IDE7XG5cblx0cmV0dXJuIFtodWUgKiAzNjAsIGNocm9tYSAqIDEwMCwgZ3JheXNjYWxlICogMTAwXTtcbn07XG5cbmNvbnZlcnQuaHNsLmhjZyA9IGZ1bmN0aW9uIChoc2wpIHtcblx0Y29uc3QgcyA9IGhzbFsxXSAvIDEwMDtcblx0Y29uc3QgbCA9IGhzbFsyXSAvIDEwMDtcblxuXHRjb25zdCBjID0gbCA8IDAuNSA/ICgyLjAgKiBzICogbCkgOiAoMi4wICogcyAqICgxLjAgLSBsKSk7XG5cblx0bGV0IGYgPSAwO1xuXHRpZiAoYyA8IDEuMCkge1xuXHRcdGYgPSAobCAtIDAuNSAqIGMpIC8gKDEuMCAtIGMpO1xuXHR9XG5cblx0cmV0dXJuIFtoc2xbMF0sIGMgKiAxMDAsIGYgKiAxMDBdO1xufTtcblxuY29udmVydC5oc3YuaGNnID0gZnVuY3Rpb24gKGhzdikge1xuXHRjb25zdCBzID0gaHN2WzFdIC8gMTAwO1xuXHRjb25zdCB2ID0gaHN2WzJdIC8gMTAwO1xuXG5cdGNvbnN0IGMgPSBzICogdjtcblx0bGV0IGYgPSAwO1xuXG5cdGlmIChjIDwgMS4wKSB7XG5cdFx0ZiA9ICh2IC0gYykgLyAoMSAtIGMpO1xuXHR9XG5cblx0cmV0dXJuIFtoc3ZbMF0sIGMgKiAxMDAsIGYgKiAxMDBdO1xufTtcblxuY29udmVydC5oY2cucmdiID0gZnVuY3Rpb24gKGhjZykge1xuXHRjb25zdCBoID0gaGNnWzBdIC8gMzYwO1xuXHRjb25zdCBjID0gaGNnWzFdIC8gMTAwO1xuXHRjb25zdCBnID0gaGNnWzJdIC8gMTAwO1xuXG5cdGlmIChjID09PSAwLjApIHtcblx0XHRyZXR1cm4gW2cgKiAyNTUsIGcgKiAyNTUsIGcgKiAyNTVdO1xuXHR9XG5cblx0Y29uc3QgcHVyZSA9IFswLCAwLCAwXTtcblx0Y29uc3QgaGkgPSAoaCAlIDEpICogNjtcblx0Y29uc3QgdiA9IGhpICUgMTtcblx0Y29uc3QgdyA9IDEgLSB2O1xuXHRsZXQgbWcgPSAwO1xuXG5cdC8qIGVzbGludC1kaXNhYmxlIG1heC1zdGF0ZW1lbnRzLXBlci1saW5lICovXG5cdHN3aXRjaCAoTWF0aC5mbG9vcihoaSkpIHtcblx0XHRjYXNlIDA6XG5cdFx0XHRwdXJlWzBdID0gMTsgcHVyZVsxXSA9IHY7IHB1cmVbMl0gPSAwOyBicmVhaztcblx0XHRjYXNlIDE6XG5cdFx0XHRwdXJlWzBdID0gdzsgcHVyZVsxXSA9IDE7IHB1cmVbMl0gPSAwOyBicmVhaztcblx0XHRjYXNlIDI6XG5cdFx0XHRwdXJlWzBdID0gMDsgcHVyZVsxXSA9IDE7IHB1cmVbMl0gPSB2OyBicmVhaztcblx0XHRjYXNlIDM6XG5cdFx0XHRwdXJlWzBdID0gMDsgcHVyZVsxXSA9IHc7IHB1cmVbMl0gPSAxOyBicmVhaztcblx0XHRjYXNlIDQ6XG5cdFx0XHRwdXJlWzBdID0gdjsgcHVyZVsxXSA9IDA7IHB1cmVbMl0gPSAxOyBicmVhaztcblx0XHRkZWZhdWx0OlxuXHRcdFx0cHVyZVswXSA9IDE7IHB1cmVbMV0gPSAwOyBwdXJlWzJdID0gdztcblx0fVxuXHQvKiBlc2xpbnQtZW5hYmxlIG1heC1zdGF0ZW1lbnRzLXBlci1saW5lICovXG5cblx0bWcgPSAoMS4wIC0gYykgKiBnO1xuXG5cdHJldHVybiBbXG5cdFx0KGMgKiBwdXJlWzBdICsgbWcpICogMjU1LFxuXHRcdChjICogcHVyZVsxXSArIG1nKSAqIDI1NSxcblx0XHQoYyAqIHB1cmVbMl0gKyBtZykgKiAyNTVcblx0XTtcbn07XG5cbmNvbnZlcnQuaGNnLmhzdiA9IGZ1bmN0aW9uIChoY2cpIHtcblx0Y29uc3QgYyA9IGhjZ1sxXSAvIDEwMDtcblx0Y29uc3QgZyA9IGhjZ1syXSAvIDEwMDtcblxuXHRjb25zdCB2ID0gYyArIGcgKiAoMS4wIC0gYyk7XG5cdGxldCBmID0gMDtcblxuXHRpZiAodiA+IDAuMCkge1xuXHRcdGYgPSBjIC8gdjtcblx0fVxuXG5cdHJldHVybiBbaGNnWzBdLCBmICogMTAwLCB2ICogMTAwXTtcbn07XG5cbmNvbnZlcnQuaGNnLmhzbCA9IGZ1bmN0aW9uIChoY2cpIHtcblx0Y29uc3QgYyA9IGhjZ1sxXSAvIDEwMDtcblx0Y29uc3QgZyA9IGhjZ1syXSAvIDEwMDtcblxuXHRjb25zdCBsID0gZyAqICgxLjAgLSBjKSArIDAuNSAqIGM7XG5cdGxldCBzID0gMDtcblxuXHRpZiAobCA+IDAuMCAmJiBsIDwgMC41KSB7XG5cdFx0cyA9IGMgLyAoMiAqIGwpO1xuXHR9IGVsc2Vcblx0aWYgKGwgPj0gMC41ICYmIGwgPCAxLjApIHtcblx0XHRzID0gYyAvICgyICogKDEgLSBsKSk7XG5cdH1cblxuXHRyZXR1cm4gW2hjZ1swXSwgcyAqIDEwMCwgbCAqIDEwMF07XG59O1xuXG5jb252ZXJ0LmhjZy5od2IgPSBmdW5jdGlvbiAoaGNnKSB7XG5cdGNvbnN0IGMgPSBoY2dbMV0gLyAxMDA7XG5cdGNvbnN0IGcgPSBoY2dbMl0gLyAxMDA7XG5cdGNvbnN0IHYgPSBjICsgZyAqICgxLjAgLSBjKTtcblx0cmV0dXJuIFtoY2dbMF0sICh2IC0gYykgKiAxMDAsICgxIC0gdikgKiAxMDBdO1xufTtcblxuY29udmVydC5od2IuaGNnID0gZnVuY3Rpb24gKGh3Yikge1xuXHRjb25zdCB3ID0gaHdiWzFdIC8gMTAwO1xuXHRjb25zdCBiID0gaHdiWzJdIC8gMTAwO1xuXHRjb25zdCB2ID0gMSAtIGI7XG5cdGNvbnN0IGMgPSB2IC0gdztcblx0bGV0IGcgPSAwO1xuXG5cdGlmIChjIDwgMSkge1xuXHRcdGcgPSAodiAtIGMpIC8gKDEgLSBjKTtcblx0fVxuXG5cdHJldHVybiBbaHdiWzBdLCBjICogMTAwLCBnICogMTAwXTtcbn07XG5cbmNvbnZlcnQuYXBwbGUucmdiID0gZnVuY3Rpb24gKGFwcGxlKSB7XG5cdHJldHVybiBbKGFwcGxlWzBdIC8gNjU1MzUpICogMjU1LCAoYXBwbGVbMV0gLyA2NTUzNSkgKiAyNTUsIChhcHBsZVsyXSAvIDY1NTM1KSAqIDI1NV07XG59O1xuXG5jb252ZXJ0LnJnYi5hcHBsZSA9IGZ1bmN0aW9uIChyZ2IpIHtcblx0cmV0dXJuIFsocmdiWzBdIC8gMjU1KSAqIDY1NTM1LCAocmdiWzFdIC8gMjU1KSAqIDY1NTM1LCAocmdiWzJdIC8gMjU1KSAqIDY1NTM1XTtcbn07XG5cbmNvbnZlcnQuZ3JheS5yZ2IgPSBmdW5jdGlvbiAoYXJncykge1xuXHRyZXR1cm4gW2FyZ3NbMF0gLyAxMDAgKiAyNTUsIGFyZ3NbMF0gLyAxMDAgKiAyNTUsIGFyZ3NbMF0gLyAxMDAgKiAyNTVdO1xufTtcblxuY29udmVydC5ncmF5LmhzbCA9IGZ1bmN0aW9uIChhcmdzKSB7XG5cdHJldHVybiBbMCwgMCwgYXJnc1swXV07XG59O1xuXG5jb252ZXJ0LmdyYXkuaHN2ID0gY29udmVydC5ncmF5LmhzbDtcblxuY29udmVydC5ncmF5Lmh3YiA9IGZ1bmN0aW9uIChncmF5KSB7XG5cdHJldHVybiBbMCwgMTAwLCBncmF5WzBdXTtcbn07XG5cbmNvbnZlcnQuZ3JheS5jbXlrID0gZnVuY3Rpb24gKGdyYXkpIHtcblx0cmV0dXJuIFswLCAwLCAwLCBncmF5WzBdXTtcbn07XG5cbmNvbnZlcnQuZ3JheS5sYWIgPSBmdW5jdGlvbiAoZ3JheSkge1xuXHRyZXR1cm4gW2dyYXlbMF0sIDAsIDBdO1xufTtcblxuY29udmVydC5ncmF5LmhleCA9IGZ1bmN0aW9uIChncmF5KSB7XG5cdGNvbnN0IHZhbCA9IE1hdGgucm91bmQoZ3JheVswXSAvIDEwMCAqIDI1NSkgJiAweEZGO1xuXHRjb25zdCBpbnRlZ2VyID0gKHZhbCA8PCAxNikgKyAodmFsIDw8IDgpICsgdmFsO1xuXG5cdGNvbnN0IHN0cmluZyA9IGludGVnZXIudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCk7XG5cdHJldHVybiAnMDAwMDAwJy5zdWJzdHJpbmcoc3RyaW5nLmxlbmd0aCkgKyBzdHJpbmc7XG59O1xuXG5jb252ZXJ0LnJnYi5ncmF5ID0gZnVuY3Rpb24gKHJnYikge1xuXHRjb25zdCB2YWwgPSAocmdiWzBdICsgcmdiWzFdICsgcmdiWzJdKSAvIDM7XG5cdHJldHVybiBbdmFsIC8gMjU1ICogMTAwXTtcbn07XG4iLCAiY29uc3QgY29udmVyc2lvbnMgPSByZXF1aXJlKCcuL2NvbnZlcnNpb25zJyk7XG5cbi8qXG5cdFRoaXMgZnVuY3Rpb24gcm91dGVzIGEgbW9kZWwgdG8gYWxsIG90aGVyIG1vZGVscy5cblxuXHRhbGwgZnVuY3Rpb25zIHRoYXQgYXJlIHJvdXRlZCBoYXZlIGEgcHJvcGVydHkgYC5jb252ZXJzaW9uYCBhdHRhY2hlZFxuXHR0byB0aGUgcmV0dXJuZWQgc3ludGhldGljIGZ1bmN0aW9uLiBUaGlzIHByb3BlcnR5IGlzIGFuIGFycmF5XG5cdG9mIHN0cmluZ3MsIGVhY2ggd2l0aCB0aGUgc3RlcHMgaW4gYmV0d2VlbiB0aGUgJ2Zyb20nIGFuZCAndG8nXG5cdGNvbG9yIG1vZGVscyAoaW5jbHVzaXZlKS5cblxuXHRjb252ZXJzaW9ucyB0aGF0IGFyZSBub3QgcG9zc2libGUgc2ltcGx5IGFyZSBub3QgaW5jbHVkZWQuXG4qL1xuXG5mdW5jdGlvbiBidWlsZEdyYXBoKCkge1xuXHRjb25zdCBncmFwaCA9IHt9O1xuXHQvLyBodHRwczovL2pzcGVyZi5jb20vb2JqZWN0LWtleXMtdnMtZm9yLWluLXdpdGgtY2xvc3VyZS8zXG5cdGNvbnN0IG1vZGVscyA9IE9iamVjdC5rZXlzKGNvbnZlcnNpb25zKTtcblxuXHRmb3IgKGxldCBsZW4gPSBtb2RlbHMubGVuZ3RoLCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG5cdFx0Z3JhcGhbbW9kZWxzW2ldXSA9IHtcblx0XHRcdC8vIGh0dHA6Ly9qc3BlcmYuY29tLzEtdnMtaW5maW5pdHlcblx0XHRcdC8vIG1pY3JvLW9wdCwgYnV0IHRoaXMgaXMgc2ltcGxlLlxuXHRcdFx0ZGlzdGFuY2U6IC0xLFxuXHRcdFx0cGFyZW50OiBudWxsXG5cdFx0fTtcblx0fVxuXG5cdHJldHVybiBncmFwaDtcbn1cblxuLy8gaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQnJlYWR0aC1maXJzdF9zZWFyY2hcbmZ1bmN0aW9uIGRlcml2ZUJGUyhmcm9tTW9kZWwpIHtcblx0Y29uc3QgZ3JhcGggPSBidWlsZEdyYXBoKCk7XG5cdGNvbnN0IHF1ZXVlID0gW2Zyb21Nb2RlbF07IC8vIFVuc2hpZnQgLT4gcXVldWUgLT4gcG9wXG5cblx0Z3JhcGhbZnJvbU1vZGVsXS5kaXN0YW5jZSA9IDA7XG5cblx0d2hpbGUgKHF1ZXVlLmxlbmd0aCkge1xuXHRcdGNvbnN0IGN1cnJlbnQgPSBxdWV1ZS5wb3AoKTtcblx0XHRjb25zdCBhZGphY2VudHMgPSBPYmplY3Qua2V5cyhjb252ZXJzaW9uc1tjdXJyZW50XSk7XG5cblx0XHRmb3IgKGxldCBsZW4gPSBhZGphY2VudHMubGVuZ3RoLCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG5cdFx0XHRjb25zdCBhZGphY2VudCA9IGFkamFjZW50c1tpXTtcblx0XHRcdGNvbnN0IG5vZGUgPSBncmFwaFthZGphY2VudF07XG5cblx0XHRcdGlmIChub2RlLmRpc3RhbmNlID09PSAtMSkge1xuXHRcdFx0XHRub2RlLmRpc3RhbmNlID0gZ3JhcGhbY3VycmVudF0uZGlzdGFuY2UgKyAxO1xuXHRcdFx0XHRub2RlLnBhcmVudCA9IGN1cnJlbnQ7XG5cdFx0XHRcdHF1ZXVlLnVuc2hpZnQoYWRqYWNlbnQpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHJldHVybiBncmFwaDtcbn1cblxuZnVuY3Rpb24gbGluayhmcm9tLCB0bykge1xuXHRyZXR1cm4gZnVuY3Rpb24gKGFyZ3MpIHtcblx0XHRyZXR1cm4gdG8oZnJvbShhcmdzKSk7XG5cdH07XG59XG5cbmZ1bmN0aW9uIHdyYXBDb252ZXJzaW9uKHRvTW9kZWwsIGdyYXBoKSB7XG5cdGNvbnN0IHBhdGggPSBbZ3JhcGhbdG9Nb2RlbF0ucGFyZW50LCB0b01vZGVsXTtcblx0bGV0IGZuID0gY29udmVyc2lvbnNbZ3JhcGhbdG9Nb2RlbF0ucGFyZW50XVt0b01vZGVsXTtcblxuXHRsZXQgY3VyID0gZ3JhcGhbdG9Nb2RlbF0ucGFyZW50O1xuXHR3aGlsZSAoZ3JhcGhbY3VyXS5wYXJlbnQpIHtcblx0XHRwYXRoLnVuc2hpZnQoZ3JhcGhbY3VyXS5wYXJlbnQpO1xuXHRcdGZuID0gbGluayhjb252ZXJzaW9uc1tncmFwaFtjdXJdLnBhcmVudF1bY3VyXSwgZm4pO1xuXHRcdGN1ciA9IGdyYXBoW2N1cl0ucGFyZW50O1xuXHR9XG5cblx0Zm4uY29udmVyc2lvbiA9IHBhdGg7XG5cdHJldHVybiBmbjtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZnJvbU1vZGVsKSB7XG5cdGNvbnN0IGdyYXBoID0gZGVyaXZlQkZTKGZyb21Nb2RlbCk7XG5cdGNvbnN0IGNvbnZlcnNpb24gPSB7fTtcblxuXHRjb25zdCBtb2RlbHMgPSBPYmplY3Qua2V5cyhncmFwaCk7XG5cdGZvciAobGV0IGxlbiA9IG1vZGVscy5sZW5ndGgsIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcblx0XHRjb25zdCB0b01vZGVsID0gbW9kZWxzW2ldO1xuXHRcdGNvbnN0IG5vZGUgPSBncmFwaFt0b01vZGVsXTtcblxuXHRcdGlmIChub2RlLnBhcmVudCA9PT0gbnVsbCkge1xuXHRcdFx0Ly8gTm8gcG9zc2libGUgY29udmVyc2lvbiwgb3IgdGhpcyBub2RlIGlzIHRoZSBzb3VyY2UgbW9kZWwuXG5cdFx0XHRjb250aW51ZTtcblx0XHR9XG5cblx0XHRjb252ZXJzaW9uW3RvTW9kZWxdID0gd3JhcENvbnZlcnNpb24odG9Nb2RlbCwgZ3JhcGgpO1xuXHR9XG5cblx0cmV0dXJuIGNvbnZlcnNpb247XG59O1xuXG4iLCAiY29uc3QgY29udmVyc2lvbnMgPSByZXF1aXJlKCcuL2NvbnZlcnNpb25zJyk7XG5jb25zdCByb3V0ZSA9IHJlcXVpcmUoJy4vcm91dGUnKTtcblxuY29uc3QgY29udmVydCA9IHt9O1xuXG5jb25zdCBtb2RlbHMgPSBPYmplY3Qua2V5cyhjb252ZXJzaW9ucyk7XG5cbmZ1bmN0aW9uIHdyYXBSYXcoZm4pIHtcblx0Y29uc3Qgd3JhcHBlZEZuID0gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcblx0XHRjb25zdCBhcmcwID0gYXJnc1swXTtcblx0XHRpZiAoYXJnMCA9PT0gdW5kZWZpbmVkIHx8IGFyZzAgPT09IG51bGwpIHtcblx0XHRcdHJldHVybiBhcmcwO1xuXHRcdH1cblxuXHRcdGlmIChhcmcwLmxlbmd0aCA+IDEpIHtcblx0XHRcdGFyZ3MgPSBhcmcwO1xuXHRcdH1cblxuXHRcdHJldHVybiBmbihhcmdzKTtcblx0fTtcblxuXHQvLyBQcmVzZXJ2ZSAuY29udmVyc2lvbiBwcm9wZXJ0eSBpZiB0aGVyZSBpcyBvbmVcblx0aWYgKCdjb252ZXJzaW9uJyBpbiBmbikge1xuXHRcdHdyYXBwZWRGbi5jb252ZXJzaW9uID0gZm4uY29udmVyc2lvbjtcblx0fVxuXG5cdHJldHVybiB3cmFwcGVkRm47XG59XG5cbmZ1bmN0aW9uIHdyYXBSb3VuZGVkKGZuKSB7XG5cdGNvbnN0IHdyYXBwZWRGbiA9IGZ1bmN0aW9uICguLi5hcmdzKSB7XG5cdFx0Y29uc3QgYXJnMCA9IGFyZ3NbMF07XG5cblx0XHRpZiAoYXJnMCA9PT0gdW5kZWZpbmVkIHx8IGFyZzAgPT09IG51bGwpIHtcblx0XHRcdHJldHVybiBhcmcwO1xuXHRcdH1cblxuXHRcdGlmIChhcmcwLmxlbmd0aCA+IDEpIHtcblx0XHRcdGFyZ3MgPSBhcmcwO1xuXHRcdH1cblxuXHRcdGNvbnN0IHJlc3VsdCA9IGZuKGFyZ3MpO1xuXG5cdFx0Ly8gV2UncmUgYXNzdW1pbmcgdGhlIHJlc3VsdCBpcyBhbiBhcnJheSBoZXJlLlxuXHRcdC8vIHNlZSBub3RpY2UgaW4gY29udmVyc2lvbnMuanM7IGRvbid0IHVzZSBib3ggdHlwZXNcblx0XHQvLyBpbiBjb252ZXJzaW9uIGZ1bmN0aW9ucy5cblx0XHRpZiAodHlwZW9mIHJlc3VsdCA9PT0gJ29iamVjdCcpIHtcblx0XHRcdGZvciAobGV0IGxlbiA9IHJlc3VsdC5sZW5ndGgsIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcblx0XHRcdFx0cmVzdWx0W2ldID0gTWF0aC5yb3VuZChyZXN1bHRbaV0pO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiByZXN1bHQ7XG5cdH07XG5cblx0Ly8gUHJlc2VydmUgLmNvbnZlcnNpb24gcHJvcGVydHkgaWYgdGhlcmUgaXMgb25lXG5cdGlmICgnY29udmVyc2lvbicgaW4gZm4pIHtcblx0XHR3cmFwcGVkRm4uY29udmVyc2lvbiA9IGZuLmNvbnZlcnNpb247XG5cdH1cblxuXHRyZXR1cm4gd3JhcHBlZEZuO1xufVxuXG5tb2RlbHMuZm9yRWFjaChmcm9tTW9kZWwgPT4ge1xuXHRjb252ZXJ0W2Zyb21Nb2RlbF0gPSB7fTtcblxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoY29udmVydFtmcm9tTW9kZWxdLCAnY2hhbm5lbHMnLCB7dmFsdWU6IGNvbnZlcnNpb25zW2Zyb21Nb2RlbF0uY2hhbm5lbHN9KTtcblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGNvbnZlcnRbZnJvbU1vZGVsXSwgJ2xhYmVscycsIHt2YWx1ZTogY29udmVyc2lvbnNbZnJvbU1vZGVsXS5sYWJlbHN9KTtcblxuXHRjb25zdCByb3V0ZXMgPSByb3V0ZShmcm9tTW9kZWwpO1xuXHRjb25zdCByb3V0ZU1vZGVscyA9IE9iamVjdC5rZXlzKHJvdXRlcyk7XG5cblx0cm91dGVNb2RlbHMuZm9yRWFjaCh0b01vZGVsID0+IHtcblx0XHRjb25zdCBmbiA9IHJvdXRlc1t0b01vZGVsXTtcblxuXHRcdGNvbnZlcnRbZnJvbU1vZGVsXVt0b01vZGVsXSA9IHdyYXBSb3VuZGVkKGZuKTtcblx0XHRjb252ZXJ0W2Zyb21Nb2RlbF1bdG9Nb2RlbF0ucmF3ID0gd3JhcFJhdyhmbik7XG5cdH0pO1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gY29udmVydDtcbiIsICIndXNlIHN0cmljdCc7XG5cbmNvbnN0IHdyYXBBbnNpMTYgPSAoZm4sIG9mZnNldCkgPT4gKC4uLmFyZ3MpID0+IHtcblx0Y29uc3QgY29kZSA9IGZuKC4uLmFyZ3MpO1xuXHRyZXR1cm4gYFxcdTAwMUJbJHtjb2RlICsgb2Zmc2V0fW1gO1xufTtcblxuY29uc3Qgd3JhcEFuc2kyNTYgPSAoZm4sIG9mZnNldCkgPT4gKC4uLmFyZ3MpID0+IHtcblx0Y29uc3QgY29kZSA9IGZuKC4uLmFyZ3MpO1xuXHRyZXR1cm4gYFxcdTAwMUJbJHszOCArIG9mZnNldH07NTske2NvZGV9bWA7XG59O1xuXG5jb25zdCB3cmFwQW5zaTE2bSA9IChmbiwgb2Zmc2V0KSA9PiAoLi4uYXJncykgPT4ge1xuXHRjb25zdCByZ2IgPSBmbiguLi5hcmdzKTtcblx0cmV0dXJuIGBcXHUwMDFCWyR7MzggKyBvZmZzZXR9OzI7JHtyZ2JbMF19OyR7cmdiWzFdfTske3JnYlsyXX1tYDtcbn07XG5cbmNvbnN0IGFuc2kyYW5zaSA9IG4gPT4gbjtcbmNvbnN0IHJnYjJyZ2IgPSAociwgZywgYikgPT4gW3IsIGcsIGJdO1xuXG5jb25zdCBzZXRMYXp5UHJvcGVydHkgPSAob2JqZWN0LCBwcm9wZXJ0eSwgZ2V0KSA9PiB7XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmplY3QsIHByb3BlcnR5LCB7XG5cdFx0Z2V0OiAoKSA9PiB7XG5cdFx0XHRjb25zdCB2YWx1ZSA9IGdldCgpO1xuXG5cdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCBwcm9wZXJ0eSwge1xuXHRcdFx0XHR2YWx1ZSxcblx0XHRcdFx0ZW51bWVyYWJsZTogdHJ1ZSxcblx0XHRcdFx0Y29uZmlndXJhYmxlOiB0cnVlXG5cdFx0XHR9KTtcblxuXHRcdFx0cmV0dXJuIHZhbHVlO1xuXHRcdH0sXG5cdFx0ZW51bWVyYWJsZTogdHJ1ZSxcblx0XHRjb25maWd1cmFibGU6IHRydWVcblx0fSk7XG59O1xuXG4vKiogQHR5cGUge3R5cGVvZiBpbXBvcnQoJ2NvbG9yLWNvbnZlcnQnKX0gKi9cbmxldCBjb2xvckNvbnZlcnQ7XG5jb25zdCBtYWtlRHluYW1pY1N0eWxlcyA9ICh3cmFwLCB0YXJnZXRTcGFjZSwgaWRlbnRpdHksIGlzQmFja2dyb3VuZCkgPT4ge1xuXHRpZiAoY29sb3JDb252ZXJ0ID09PSB1bmRlZmluZWQpIHtcblx0XHRjb2xvckNvbnZlcnQgPSByZXF1aXJlKCdjb2xvci1jb252ZXJ0Jyk7XG5cdH1cblxuXHRjb25zdCBvZmZzZXQgPSBpc0JhY2tncm91bmQgPyAxMCA6IDA7XG5cdGNvbnN0IHN0eWxlcyA9IHt9O1xuXG5cdGZvciAoY29uc3QgW3NvdXJjZVNwYWNlLCBzdWl0ZV0gb2YgT2JqZWN0LmVudHJpZXMoY29sb3JDb252ZXJ0KSkge1xuXHRcdGNvbnN0IG5hbWUgPSBzb3VyY2VTcGFjZSA9PT0gJ2Fuc2kxNicgPyAnYW5zaScgOiBzb3VyY2VTcGFjZTtcblx0XHRpZiAoc291cmNlU3BhY2UgPT09IHRhcmdldFNwYWNlKSB7XG5cdFx0XHRzdHlsZXNbbmFtZV0gPSB3cmFwKGlkZW50aXR5LCBvZmZzZXQpO1xuXHRcdH0gZWxzZSBpZiAodHlwZW9mIHN1aXRlID09PSAnb2JqZWN0Jykge1xuXHRcdFx0c3R5bGVzW25hbWVdID0gd3JhcChzdWl0ZVt0YXJnZXRTcGFjZV0sIG9mZnNldCk7XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIHN0eWxlcztcbn07XG5cbmZ1bmN0aW9uIGFzc2VtYmxlU3R5bGVzKCkge1xuXHRjb25zdCBjb2RlcyA9IG5ldyBNYXAoKTtcblx0Y29uc3Qgc3R5bGVzID0ge1xuXHRcdG1vZGlmaWVyOiB7XG5cdFx0XHRyZXNldDogWzAsIDBdLFxuXHRcdFx0Ly8gMjEgaXNuJ3Qgd2lkZWx5IHN1cHBvcnRlZCBhbmQgMjIgZG9lcyB0aGUgc2FtZSB0aGluZ1xuXHRcdFx0Ym9sZDogWzEsIDIyXSxcblx0XHRcdGRpbTogWzIsIDIyXSxcblx0XHRcdGl0YWxpYzogWzMsIDIzXSxcblx0XHRcdHVuZGVybGluZTogWzQsIDI0XSxcblx0XHRcdGludmVyc2U6IFs3LCAyN10sXG5cdFx0XHRoaWRkZW46IFs4LCAyOF0sXG5cdFx0XHRzdHJpa2V0aHJvdWdoOiBbOSwgMjldXG5cdFx0fSxcblx0XHRjb2xvcjoge1xuXHRcdFx0YmxhY2s6IFszMCwgMzldLFxuXHRcdFx0cmVkOiBbMzEsIDM5XSxcblx0XHRcdGdyZWVuOiBbMzIsIDM5XSxcblx0XHRcdHllbGxvdzogWzMzLCAzOV0sXG5cdFx0XHRibHVlOiBbMzQsIDM5XSxcblx0XHRcdG1hZ2VudGE6IFszNSwgMzldLFxuXHRcdFx0Y3lhbjogWzM2LCAzOV0sXG5cdFx0XHR3aGl0ZTogWzM3LCAzOV0sXG5cblx0XHRcdC8vIEJyaWdodCBjb2xvclxuXHRcdFx0YmxhY2tCcmlnaHQ6IFs5MCwgMzldLFxuXHRcdFx0cmVkQnJpZ2h0OiBbOTEsIDM5XSxcblx0XHRcdGdyZWVuQnJpZ2h0OiBbOTIsIDM5XSxcblx0XHRcdHllbGxvd0JyaWdodDogWzkzLCAzOV0sXG5cdFx0XHRibHVlQnJpZ2h0OiBbOTQsIDM5XSxcblx0XHRcdG1hZ2VudGFCcmlnaHQ6IFs5NSwgMzldLFxuXHRcdFx0Y3lhbkJyaWdodDogWzk2LCAzOV0sXG5cdFx0XHR3aGl0ZUJyaWdodDogWzk3LCAzOV1cblx0XHR9LFxuXHRcdGJnQ29sb3I6IHtcblx0XHRcdGJnQmxhY2s6IFs0MCwgNDldLFxuXHRcdFx0YmdSZWQ6IFs0MSwgNDldLFxuXHRcdFx0YmdHcmVlbjogWzQyLCA0OV0sXG5cdFx0XHRiZ1llbGxvdzogWzQzLCA0OV0sXG5cdFx0XHRiZ0JsdWU6IFs0NCwgNDldLFxuXHRcdFx0YmdNYWdlbnRhOiBbNDUsIDQ5XSxcblx0XHRcdGJnQ3lhbjogWzQ2LCA0OV0sXG5cdFx0XHRiZ1doaXRlOiBbNDcsIDQ5XSxcblxuXHRcdFx0Ly8gQnJpZ2h0IGNvbG9yXG5cdFx0XHRiZ0JsYWNrQnJpZ2h0OiBbMTAwLCA0OV0sXG5cdFx0XHRiZ1JlZEJyaWdodDogWzEwMSwgNDldLFxuXHRcdFx0YmdHcmVlbkJyaWdodDogWzEwMiwgNDldLFxuXHRcdFx0YmdZZWxsb3dCcmlnaHQ6IFsxMDMsIDQ5XSxcblx0XHRcdGJnQmx1ZUJyaWdodDogWzEwNCwgNDldLFxuXHRcdFx0YmdNYWdlbnRhQnJpZ2h0OiBbMTA1LCA0OV0sXG5cdFx0XHRiZ0N5YW5CcmlnaHQ6IFsxMDYsIDQ5XSxcblx0XHRcdGJnV2hpdGVCcmlnaHQ6IFsxMDcsIDQ5XVxuXHRcdH1cblx0fTtcblxuXHQvLyBBbGlhcyBicmlnaHQgYmxhY2sgYXMgZ3JheSAoYW5kIGdyZXkpXG5cdHN0eWxlcy5jb2xvci5ncmF5ID0gc3R5bGVzLmNvbG9yLmJsYWNrQnJpZ2h0O1xuXHRzdHlsZXMuYmdDb2xvci5iZ0dyYXkgPSBzdHlsZXMuYmdDb2xvci5iZ0JsYWNrQnJpZ2h0O1xuXHRzdHlsZXMuY29sb3IuZ3JleSA9IHN0eWxlcy5jb2xvci5ibGFja0JyaWdodDtcblx0c3R5bGVzLmJnQ29sb3IuYmdHcmV5ID0gc3R5bGVzLmJnQ29sb3IuYmdCbGFja0JyaWdodDtcblxuXHRmb3IgKGNvbnN0IFtncm91cE5hbWUsIGdyb3VwXSBvZiBPYmplY3QuZW50cmllcyhzdHlsZXMpKSB7XG5cdFx0Zm9yIChjb25zdCBbc3R5bGVOYW1lLCBzdHlsZV0gb2YgT2JqZWN0LmVudHJpZXMoZ3JvdXApKSB7XG5cdFx0XHRzdHlsZXNbc3R5bGVOYW1lXSA9IHtcblx0XHRcdFx0b3BlbjogYFxcdTAwMUJbJHtzdHlsZVswXX1tYCxcblx0XHRcdFx0Y2xvc2U6IGBcXHUwMDFCWyR7c3R5bGVbMV19bWBcblx0XHRcdH07XG5cblx0XHRcdGdyb3VwW3N0eWxlTmFtZV0gPSBzdHlsZXNbc3R5bGVOYW1lXTtcblxuXHRcdFx0Y29kZXMuc2V0KHN0eWxlWzBdLCBzdHlsZVsxXSk7XG5cdFx0fVxuXG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KHN0eWxlcywgZ3JvdXBOYW1lLCB7XG5cdFx0XHR2YWx1ZTogZ3JvdXAsXG5cdFx0XHRlbnVtZXJhYmxlOiBmYWxzZVxuXHRcdH0pO1xuXHR9XG5cblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KHN0eWxlcywgJ2NvZGVzJywge1xuXHRcdHZhbHVlOiBjb2Rlcyxcblx0XHRlbnVtZXJhYmxlOiBmYWxzZVxuXHR9KTtcblxuXHRzdHlsZXMuY29sb3IuY2xvc2UgPSAnXFx1MDAxQlszOW0nO1xuXHRzdHlsZXMuYmdDb2xvci5jbG9zZSA9ICdcXHUwMDFCWzQ5bSc7XG5cblx0c2V0TGF6eVByb3BlcnR5KHN0eWxlcy5jb2xvciwgJ2Fuc2knLCAoKSA9PiBtYWtlRHluYW1pY1N0eWxlcyh3cmFwQW5zaTE2LCAnYW5zaTE2JywgYW5zaTJhbnNpLCBmYWxzZSkpO1xuXHRzZXRMYXp5UHJvcGVydHkoc3R5bGVzLmNvbG9yLCAnYW5zaTI1NicsICgpID0+IG1ha2VEeW5hbWljU3R5bGVzKHdyYXBBbnNpMjU2LCAnYW5zaTI1NicsIGFuc2kyYW5zaSwgZmFsc2UpKTtcblx0c2V0TGF6eVByb3BlcnR5KHN0eWxlcy5jb2xvciwgJ2Fuc2kxNm0nLCAoKSA9PiBtYWtlRHluYW1pY1N0eWxlcyh3cmFwQW5zaTE2bSwgJ3JnYicsIHJnYjJyZ2IsIGZhbHNlKSk7XG5cdHNldExhenlQcm9wZXJ0eShzdHlsZXMuYmdDb2xvciwgJ2Fuc2knLCAoKSA9PiBtYWtlRHluYW1pY1N0eWxlcyh3cmFwQW5zaTE2LCAnYW5zaTE2JywgYW5zaTJhbnNpLCB0cnVlKSk7XG5cdHNldExhenlQcm9wZXJ0eShzdHlsZXMuYmdDb2xvciwgJ2Fuc2kyNTYnLCAoKSA9PiBtYWtlRHluYW1pY1N0eWxlcyh3cmFwQW5zaTI1NiwgJ2Fuc2kyNTYnLCBhbnNpMmFuc2ksIHRydWUpKTtcblx0c2V0TGF6eVByb3BlcnR5KHN0eWxlcy5iZ0NvbG9yLCAnYW5zaTE2bScsICgpID0+IG1ha2VEeW5hbWljU3R5bGVzKHdyYXBBbnNpMTZtLCAncmdiJywgcmdiMnJnYiwgdHJ1ZSkpO1xuXG5cdHJldHVybiBzdHlsZXM7XG59XG5cbi8vIE1ha2UgdGhlIGV4cG9ydCBpbW11dGFibGVcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShtb2R1bGUsICdleHBvcnRzJywge1xuXHRlbnVtZXJhYmxlOiB0cnVlLFxuXHRnZXQ6IGFzc2VtYmxlU3R5bGVzXG59KTtcbiIsICIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gKGZsYWcsIGFyZ3YgPSBwcm9jZXNzLmFyZ3YpID0+IHtcblx0Y29uc3QgcHJlZml4ID0gZmxhZy5zdGFydHNXaXRoKCctJykgPyAnJyA6IChmbGFnLmxlbmd0aCA9PT0gMSA/ICctJyA6ICctLScpO1xuXHRjb25zdCBwb3NpdGlvbiA9IGFyZ3YuaW5kZXhPZihwcmVmaXggKyBmbGFnKTtcblx0Y29uc3QgdGVybWluYXRvclBvc2l0aW9uID0gYXJndi5pbmRleE9mKCctLScpO1xuXHRyZXR1cm4gcG9zaXRpb24gIT09IC0xICYmICh0ZXJtaW5hdG9yUG9zaXRpb24gPT09IC0xIHx8IHBvc2l0aW9uIDwgdGVybWluYXRvclBvc2l0aW9uKTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xuY29uc3Qgb3MgPSByZXF1aXJlKCdvcycpO1xuY29uc3QgdHR5ID0gcmVxdWlyZSgndHR5Jyk7XG5jb25zdCBoYXNGbGFnID0gcmVxdWlyZSgnaGFzLWZsYWcnKTtcblxuY29uc3Qge2Vudn0gPSBwcm9jZXNzO1xuXG5sZXQgZm9yY2VDb2xvcjtcbmlmIChoYXNGbGFnKCduby1jb2xvcicpIHx8XG5cdGhhc0ZsYWcoJ25vLWNvbG9ycycpIHx8XG5cdGhhc0ZsYWcoJ2NvbG9yPWZhbHNlJykgfHxcblx0aGFzRmxhZygnY29sb3I9bmV2ZXInKSkge1xuXHRmb3JjZUNvbG9yID0gMDtcbn0gZWxzZSBpZiAoaGFzRmxhZygnY29sb3InKSB8fFxuXHRoYXNGbGFnKCdjb2xvcnMnKSB8fFxuXHRoYXNGbGFnKCdjb2xvcj10cnVlJykgfHxcblx0aGFzRmxhZygnY29sb3I9YWx3YXlzJykpIHtcblx0Zm9yY2VDb2xvciA9IDE7XG59XG5cbmlmICgnRk9SQ0VfQ09MT1InIGluIGVudikge1xuXHRpZiAoZW52LkZPUkNFX0NPTE9SID09PSAndHJ1ZScpIHtcblx0XHRmb3JjZUNvbG9yID0gMTtcblx0fSBlbHNlIGlmIChlbnYuRk9SQ0VfQ09MT1IgPT09ICdmYWxzZScpIHtcblx0XHRmb3JjZUNvbG9yID0gMDtcblx0fSBlbHNlIHtcblx0XHRmb3JjZUNvbG9yID0gZW52LkZPUkNFX0NPTE9SLmxlbmd0aCA9PT0gMCA/IDEgOiBNYXRoLm1pbihwYXJzZUludChlbnYuRk9SQ0VfQ09MT1IsIDEwKSwgMyk7XG5cdH1cbn1cblxuZnVuY3Rpb24gdHJhbnNsYXRlTGV2ZWwobGV2ZWwpIHtcblx0aWYgKGxldmVsID09PSAwKSB7XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0cmV0dXJuIHtcblx0XHRsZXZlbCxcblx0XHRoYXNCYXNpYzogdHJ1ZSxcblx0XHRoYXMyNTY6IGxldmVsID49IDIsXG5cdFx0aGFzMTZtOiBsZXZlbCA+PSAzXG5cdH07XG59XG5cbmZ1bmN0aW9uIHN1cHBvcnRzQ29sb3IoaGF2ZVN0cmVhbSwgc3RyZWFtSXNUVFkpIHtcblx0aWYgKGZvcmNlQ29sb3IgPT09IDApIHtcblx0XHRyZXR1cm4gMDtcblx0fVxuXG5cdGlmIChoYXNGbGFnKCdjb2xvcj0xNm0nKSB8fFxuXHRcdGhhc0ZsYWcoJ2NvbG9yPWZ1bGwnKSB8fFxuXHRcdGhhc0ZsYWcoJ2NvbG9yPXRydWVjb2xvcicpKSB7XG5cdFx0cmV0dXJuIDM7XG5cdH1cblxuXHRpZiAoaGFzRmxhZygnY29sb3I9MjU2JykpIHtcblx0XHRyZXR1cm4gMjtcblx0fVxuXG5cdGlmIChoYXZlU3RyZWFtICYmICFzdHJlYW1Jc1RUWSAmJiBmb3JjZUNvbG9yID09PSB1bmRlZmluZWQpIHtcblx0XHRyZXR1cm4gMDtcblx0fVxuXG5cdGNvbnN0IG1pbiA9IGZvcmNlQ29sb3IgfHwgMDtcblxuXHRpZiAoZW52LlRFUk0gPT09ICdkdW1iJykge1xuXHRcdHJldHVybiBtaW47XG5cdH1cblxuXHRpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuXHRcdC8vIFdpbmRvd3MgMTAgYnVpbGQgMTA1ODYgaXMgdGhlIGZpcnN0IFdpbmRvd3MgcmVsZWFzZSB0aGF0IHN1cHBvcnRzIDI1NiBjb2xvcnMuXG5cdFx0Ly8gV2luZG93cyAxMCBidWlsZCAxNDkzMSBpcyB0aGUgZmlyc3QgcmVsZWFzZSB0aGF0IHN1cHBvcnRzIDE2bS9UcnVlQ29sb3IuXG5cdFx0Y29uc3Qgb3NSZWxlYXNlID0gb3MucmVsZWFzZSgpLnNwbGl0KCcuJyk7XG5cdFx0aWYgKFxuXHRcdFx0TnVtYmVyKG9zUmVsZWFzZVswXSkgPj0gMTAgJiZcblx0XHRcdE51bWJlcihvc1JlbGVhc2VbMl0pID49IDEwNTg2XG5cdFx0KSB7XG5cdFx0XHRyZXR1cm4gTnVtYmVyKG9zUmVsZWFzZVsyXSkgPj0gMTQ5MzEgPyAzIDogMjtcblx0XHR9XG5cblx0XHRyZXR1cm4gMTtcblx0fVxuXG5cdGlmICgnQ0knIGluIGVudikge1xuXHRcdGlmIChbJ1RSQVZJUycsICdDSVJDTEVDSScsICdBUFBWRVlPUicsICdHSVRMQUJfQ0knLCAnR0lUSFVCX0FDVElPTlMnLCAnQlVJTERLSVRFJ10uc29tZShzaWduID0+IHNpZ24gaW4gZW52KSB8fCBlbnYuQ0lfTkFNRSA9PT0gJ2NvZGVzaGlwJykge1xuXHRcdFx0cmV0dXJuIDE7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIG1pbjtcblx0fVxuXG5cdGlmICgnVEVBTUNJVFlfVkVSU0lPTicgaW4gZW52KSB7XG5cdFx0cmV0dXJuIC9eKDlcXC4oMCpbMS05XVxcZCopXFwufFxcZHsyLH1cXC4pLy50ZXN0KGVudi5URUFNQ0lUWV9WRVJTSU9OKSA/IDEgOiAwO1xuXHR9XG5cblx0aWYgKGVudi5DT0xPUlRFUk0gPT09ICd0cnVlY29sb3InKSB7XG5cdFx0cmV0dXJuIDM7XG5cdH1cblxuXHRpZiAoJ1RFUk1fUFJPR1JBTScgaW4gZW52KSB7XG5cdFx0Y29uc3QgdmVyc2lvbiA9IHBhcnNlSW50KChlbnYuVEVSTV9QUk9HUkFNX1ZFUlNJT04gfHwgJycpLnNwbGl0KCcuJylbMF0sIDEwKTtcblxuXHRcdHN3aXRjaCAoZW52LlRFUk1fUFJPR1JBTSkge1xuXHRcdFx0Y2FzZSAnaVRlcm0uYXBwJzpcblx0XHRcdFx0cmV0dXJuIHZlcnNpb24gPj0gMyA/IDMgOiAyO1xuXHRcdFx0Y2FzZSAnQXBwbGVfVGVybWluYWwnOlxuXHRcdFx0XHRyZXR1cm4gMjtcblx0XHRcdC8vIE5vIGRlZmF1bHRcblx0XHR9XG5cdH1cblxuXHRpZiAoLy0yNTYoY29sb3IpPyQvaS50ZXN0KGVudi5URVJNKSkge1xuXHRcdHJldHVybiAyO1xuXHR9XG5cblx0aWYgKC9ec2NyZWVufF54dGVybXxednQxMDB8XnZ0MjIwfF5yeHZ0fGNvbG9yfGFuc2l8Y3lnd2lufGxpbnV4L2kudGVzdChlbnYuVEVSTSkpIHtcblx0XHRyZXR1cm4gMTtcblx0fVxuXG5cdGlmICgnQ09MT1JURVJNJyBpbiBlbnYpIHtcblx0XHRyZXR1cm4gMTtcblx0fVxuXG5cdHJldHVybiBtaW47XG59XG5cbmZ1bmN0aW9uIGdldFN1cHBvcnRMZXZlbChzdHJlYW0pIHtcblx0Y29uc3QgbGV2ZWwgPSBzdXBwb3J0c0NvbG9yKHN0cmVhbSwgc3RyZWFtICYmIHN0cmVhbS5pc1RUWSk7XG5cdHJldHVybiB0cmFuc2xhdGVMZXZlbChsZXZlbCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuXHRzdXBwb3J0c0NvbG9yOiBnZXRTdXBwb3J0TGV2ZWwsXG5cdHN0ZG91dDogdHJhbnNsYXRlTGV2ZWwoc3VwcG9ydHNDb2xvcih0cnVlLCB0dHkuaXNhdHR5KDEpKSksXG5cdHN0ZGVycjogdHJhbnNsYXRlTGV2ZWwoc3VwcG9ydHNDb2xvcih0cnVlLCB0dHkuaXNhdHR5KDIpKSlcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBzdHJpbmdSZXBsYWNlQWxsID0gKHN0cmluZywgc3Vic3RyaW5nLCByZXBsYWNlcikgPT4ge1xuXHRsZXQgaW5kZXggPSBzdHJpbmcuaW5kZXhPZihzdWJzdHJpbmcpO1xuXHRpZiAoaW5kZXggPT09IC0xKSB7XG5cdFx0cmV0dXJuIHN0cmluZztcblx0fVxuXG5cdGNvbnN0IHN1YnN0cmluZ0xlbmd0aCA9IHN1YnN0cmluZy5sZW5ndGg7XG5cdGxldCBlbmRJbmRleCA9IDA7XG5cdGxldCByZXR1cm5WYWx1ZSA9ICcnO1xuXHRkbyB7XG5cdFx0cmV0dXJuVmFsdWUgKz0gc3RyaW5nLnN1YnN0cihlbmRJbmRleCwgaW5kZXggLSBlbmRJbmRleCkgKyBzdWJzdHJpbmcgKyByZXBsYWNlcjtcblx0XHRlbmRJbmRleCA9IGluZGV4ICsgc3Vic3RyaW5nTGVuZ3RoO1xuXHRcdGluZGV4ID0gc3RyaW5nLmluZGV4T2Yoc3Vic3RyaW5nLCBlbmRJbmRleCk7XG5cdH0gd2hpbGUgKGluZGV4ICE9PSAtMSk7XG5cblx0cmV0dXJuVmFsdWUgKz0gc3RyaW5nLnN1YnN0cihlbmRJbmRleCk7XG5cdHJldHVybiByZXR1cm5WYWx1ZTtcbn07XG5cbmNvbnN0IHN0cmluZ0VuY2FzZUNSTEZXaXRoRmlyc3RJbmRleCA9IChzdHJpbmcsIHByZWZpeCwgcG9zdGZpeCwgaW5kZXgpID0+IHtcblx0bGV0IGVuZEluZGV4ID0gMDtcblx0bGV0IHJldHVyblZhbHVlID0gJyc7XG5cdGRvIHtcblx0XHRjb25zdCBnb3RDUiA9IHN0cmluZ1tpbmRleCAtIDFdID09PSAnXFxyJztcblx0XHRyZXR1cm5WYWx1ZSArPSBzdHJpbmcuc3Vic3RyKGVuZEluZGV4LCAoZ290Q1IgPyBpbmRleCAtIDEgOiBpbmRleCkgLSBlbmRJbmRleCkgKyBwcmVmaXggKyAoZ290Q1IgPyAnXFxyXFxuJyA6ICdcXG4nKSArIHBvc3RmaXg7XG5cdFx0ZW5kSW5kZXggPSBpbmRleCArIDE7XG5cdFx0aW5kZXggPSBzdHJpbmcuaW5kZXhPZignXFxuJywgZW5kSW5kZXgpO1xuXHR9IHdoaWxlIChpbmRleCAhPT0gLTEpO1xuXG5cdHJldHVyblZhbHVlICs9IHN0cmluZy5zdWJzdHIoZW5kSW5kZXgpO1xuXHRyZXR1cm4gcmV0dXJuVmFsdWU7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcblx0c3RyaW5nUmVwbGFjZUFsbCxcblx0c3RyaW5nRW5jYXNlQ1JMRldpdGhGaXJzdEluZGV4XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbmNvbnN0IFRFTVBMQVRFX1JFR0VYID0gLyg/OlxcXFwodSg/OlthLWZcXGRdezR9fFxce1thLWZcXGRdezEsNn1cXH0pfHhbYS1mXFxkXXsyfXwuKSl8KD86XFx7KH4pPyhcXHcrKD86XFwoW14pXSpcXCkpPyg/OlxcLlxcdysoPzpcXChbXildKlxcKSk/KSopKD86WyBcXHRdfCg/PVxccj9cXG4pKSl8KFxcfSl8KCg/Oi58W1xcclxcblxcZl0pKz8pL2dpO1xuY29uc3QgU1RZTEVfUkVHRVggPSAvKD86XnxcXC4pKFxcdyspKD86XFwoKFteKV0qKVxcKSk/L2c7XG5jb25zdCBTVFJJTkdfUkVHRVggPSAvXihbJ1wiXSkoKD86XFxcXC58KD8hXFwxKVteXFxcXF0pKilcXDEkLztcbmNvbnN0IEVTQ0FQRV9SRUdFWCA9IC9cXFxcKHUoPzpbYS1mXFxkXXs0fXxcXHtbYS1mXFxkXXsxLDZ9XFx9KXx4W2EtZlxcZF17Mn18Lil8KFteXFxcXF0pL2dpO1xuXG5jb25zdCBFU0NBUEVTID0gbmV3IE1hcChbXG5cdFsnbicsICdcXG4nXSxcblx0WydyJywgJ1xcciddLFxuXHRbJ3QnLCAnXFx0J10sXG5cdFsnYicsICdcXGInXSxcblx0WydmJywgJ1xcZiddLFxuXHRbJ3YnLCAnXFx2J10sXG5cdFsnMCcsICdcXDAnXSxcblx0WydcXFxcJywgJ1xcXFwnXSxcblx0WydlJywgJ1xcdTAwMUInXSxcblx0WydhJywgJ1xcdTAwMDcnXVxuXSk7XG5cbmZ1bmN0aW9uIHVuZXNjYXBlKGMpIHtcblx0Y29uc3QgdSA9IGNbMF0gPT09ICd1Jztcblx0Y29uc3QgYnJhY2tldCA9IGNbMV0gPT09ICd7JztcblxuXHRpZiAoKHUgJiYgIWJyYWNrZXQgJiYgYy5sZW5ndGggPT09IDUpIHx8IChjWzBdID09PSAneCcgJiYgYy5sZW5ndGggPT09IDMpKSB7XG5cdFx0cmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUocGFyc2VJbnQoYy5zbGljZSgxKSwgMTYpKTtcblx0fVxuXG5cdGlmICh1ICYmIGJyYWNrZXQpIHtcblx0XHRyZXR1cm4gU3RyaW5nLmZyb21Db2RlUG9pbnQocGFyc2VJbnQoYy5zbGljZSgyLCAtMSksIDE2KSk7XG5cdH1cblxuXHRyZXR1cm4gRVNDQVBFUy5nZXQoYykgfHwgYztcbn1cblxuZnVuY3Rpb24gcGFyc2VBcmd1bWVudHMobmFtZSwgYXJndW1lbnRzXykge1xuXHRjb25zdCByZXN1bHRzID0gW107XG5cdGNvbnN0IGNodW5rcyA9IGFyZ3VtZW50c18udHJpbSgpLnNwbGl0KC9cXHMqLFxccyovZyk7XG5cdGxldCBtYXRjaGVzO1xuXG5cdGZvciAoY29uc3QgY2h1bmsgb2YgY2h1bmtzKSB7XG5cdFx0Y29uc3QgbnVtYmVyID0gTnVtYmVyKGNodW5rKTtcblx0XHRpZiAoIU51bWJlci5pc05hTihudW1iZXIpKSB7XG5cdFx0XHRyZXN1bHRzLnB1c2gobnVtYmVyKTtcblx0XHR9IGVsc2UgaWYgKChtYXRjaGVzID0gY2h1bmsubWF0Y2goU1RSSU5HX1JFR0VYKSkpIHtcblx0XHRcdHJlc3VsdHMucHVzaChtYXRjaGVzWzJdLnJlcGxhY2UoRVNDQVBFX1JFR0VYLCAobSwgZXNjYXBlLCBjaGFyYWN0ZXIpID0+IGVzY2FwZSA/IHVuZXNjYXBlKGVzY2FwZSkgOiBjaGFyYWN0ZXIpKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIENoYWxrIHRlbXBsYXRlIHN0eWxlIGFyZ3VtZW50OiAke2NodW5rfSAoaW4gc3R5bGUgJyR7bmFtZX0nKWApO1xuXHRcdH1cblx0fVxuXG5cdHJldHVybiByZXN1bHRzO1xufVxuXG5mdW5jdGlvbiBwYXJzZVN0eWxlKHN0eWxlKSB7XG5cdFNUWUxFX1JFR0VYLmxhc3RJbmRleCA9IDA7XG5cblx0Y29uc3QgcmVzdWx0cyA9IFtdO1xuXHRsZXQgbWF0Y2hlcztcblxuXHR3aGlsZSAoKG1hdGNoZXMgPSBTVFlMRV9SRUdFWC5leGVjKHN0eWxlKSkgIT09IG51bGwpIHtcblx0XHRjb25zdCBuYW1lID0gbWF0Y2hlc1sxXTtcblxuXHRcdGlmIChtYXRjaGVzWzJdKSB7XG5cdFx0XHRjb25zdCBhcmdzID0gcGFyc2VBcmd1bWVudHMobmFtZSwgbWF0Y2hlc1syXSk7XG5cdFx0XHRyZXN1bHRzLnB1c2goW25hbWVdLmNvbmNhdChhcmdzKSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJlc3VsdHMucHVzaChbbmFtZV0pO1xuXHRcdH1cblx0fVxuXG5cdHJldHVybiByZXN1bHRzO1xufVxuXG5mdW5jdGlvbiBidWlsZFN0eWxlKGNoYWxrLCBzdHlsZXMpIHtcblx0Y29uc3QgZW5hYmxlZCA9IHt9O1xuXG5cdGZvciAoY29uc3QgbGF5ZXIgb2Ygc3R5bGVzKSB7XG5cdFx0Zm9yIChjb25zdCBzdHlsZSBvZiBsYXllci5zdHlsZXMpIHtcblx0XHRcdGVuYWJsZWRbc3R5bGVbMF1dID0gbGF5ZXIuaW52ZXJzZSA/IG51bGwgOiBzdHlsZS5zbGljZSgxKTtcblx0XHR9XG5cdH1cblxuXHRsZXQgY3VycmVudCA9IGNoYWxrO1xuXHRmb3IgKGNvbnN0IFtzdHlsZU5hbWUsIHN0eWxlc10gb2YgT2JqZWN0LmVudHJpZXMoZW5hYmxlZCkpIHtcblx0XHRpZiAoIUFycmF5LmlzQXJyYXkoc3R5bGVzKSkge1xuXHRcdFx0Y29udGludWU7XG5cdFx0fVxuXG5cdFx0aWYgKCEoc3R5bGVOYW1lIGluIGN1cnJlbnQpKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gQ2hhbGsgc3R5bGU6ICR7c3R5bGVOYW1lfWApO1xuXHRcdH1cblxuXHRcdGN1cnJlbnQgPSBzdHlsZXMubGVuZ3RoID4gMCA/IGN1cnJlbnRbc3R5bGVOYW1lXSguLi5zdHlsZXMpIDogY3VycmVudFtzdHlsZU5hbWVdO1xuXHR9XG5cblx0cmV0dXJuIGN1cnJlbnQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gKGNoYWxrLCB0ZW1wb3JhcnkpID0+IHtcblx0Y29uc3Qgc3R5bGVzID0gW107XG5cdGNvbnN0IGNodW5rcyA9IFtdO1xuXHRsZXQgY2h1bmsgPSBbXTtcblxuXHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbWF4LXBhcmFtc1xuXHR0ZW1wb3JhcnkucmVwbGFjZShURU1QTEFURV9SRUdFWCwgKG0sIGVzY2FwZUNoYXJhY3RlciwgaW52ZXJzZSwgc3R5bGUsIGNsb3NlLCBjaGFyYWN0ZXIpID0+IHtcblx0XHRpZiAoZXNjYXBlQ2hhcmFjdGVyKSB7XG5cdFx0XHRjaHVuay5wdXNoKHVuZXNjYXBlKGVzY2FwZUNoYXJhY3RlcikpO1xuXHRcdH0gZWxzZSBpZiAoc3R5bGUpIHtcblx0XHRcdGNvbnN0IHN0cmluZyA9IGNodW5rLmpvaW4oJycpO1xuXHRcdFx0Y2h1bmsgPSBbXTtcblx0XHRcdGNodW5rcy5wdXNoKHN0eWxlcy5sZW5ndGggPT09IDAgPyBzdHJpbmcgOiBidWlsZFN0eWxlKGNoYWxrLCBzdHlsZXMpKHN0cmluZykpO1xuXHRcdFx0c3R5bGVzLnB1c2goe2ludmVyc2UsIHN0eWxlczogcGFyc2VTdHlsZShzdHlsZSl9KTtcblx0XHR9IGVsc2UgaWYgKGNsb3NlKSB7XG5cdFx0XHRpZiAoc3R5bGVzLmxlbmd0aCA9PT0gMCkge1xuXHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoJ0ZvdW5kIGV4dHJhbmVvdXMgfSBpbiBDaGFsayB0ZW1wbGF0ZSBsaXRlcmFsJyk7XG5cdFx0XHR9XG5cblx0XHRcdGNodW5rcy5wdXNoKGJ1aWxkU3R5bGUoY2hhbGssIHN0eWxlcykoY2h1bmsuam9pbignJykpKTtcblx0XHRcdGNodW5rID0gW107XG5cdFx0XHRzdHlsZXMucG9wKCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGNodW5rLnB1c2goY2hhcmFjdGVyKTtcblx0XHR9XG5cdH0pO1xuXG5cdGNodW5rcy5wdXNoKGNodW5rLmpvaW4oJycpKTtcblxuXHRpZiAoc3R5bGVzLmxlbmd0aCA+IDApIHtcblx0XHRjb25zdCBlcnJNc2cgPSBgQ2hhbGsgdGVtcGxhdGUgbGl0ZXJhbCBpcyBtaXNzaW5nICR7c3R5bGVzLmxlbmd0aH0gY2xvc2luZyBicmFja2V0JHtzdHlsZXMubGVuZ3RoID09PSAxID8gJycgOiAncyd9IChcXGB9XFxgKWA7XG5cdFx0dGhyb3cgbmV3IEVycm9yKGVyck1zZyk7XG5cdH1cblxuXHRyZXR1cm4gY2h1bmtzLmpvaW4oJycpO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG5jb25zdCBhbnNpU3R5bGVzID0gcmVxdWlyZSgnYW5zaS1zdHlsZXMnKTtcbmNvbnN0IHtzdGRvdXQ6IHN0ZG91dENvbG9yLCBzdGRlcnI6IHN0ZGVyckNvbG9yfSA9IHJlcXVpcmUoJ3N1cHBvcnRzLWNvbG9yJyk7XG5jb25zdCB7XG5cdHN0cmluZ1JlcGxhY2VBbGwsXG5cdHN0cmluZ0VuY2FzZUNSTEZXaXRoRmlyc3RJbmRleFxufSA9IHJlcXVpcmUoJy4vdXRpbCcpO1xuXG4vLyBgc3VwcG9ydHNDb2xvci5sZXZlbGAgXHUyMTkyIGBhbnNpU3R5bGVzLmNvbG9yW25hbWVdYCBtYXBwaW5nXG5jb25zdCBsZXZlbE1hcHBpbmcgPSBbXG5cdCdhbnNpJyxcblx0J2Fuc2knLFxuXHQnYW5zaTI1NicsXG5cdCdhbnNpMTZtJ1xuXTtcblxuY29uc3Qgc3R5bGVzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcblxuY29uc3QgYXBwbHlPcHRpb25zID0gKG9iamVjdCwgb3B0aW9ucyA9IHt9KSA9PiB7XG5cdGlmIChvcHRpb25zLmxldmVsID4gMyB8fCBvcHRpb25zLmxldmVsIDwgMCkge1xuXHRcdHRocm93IG5ldyBFcnJvcignVGhlIGBsZXZlbGAgb3B0aW9uIHNob3VsZCBiZSBhbiBpbnRlZ2VyIGZyb20gMCB0byAzJyk7XG5cdH1cblxuXHQvLyBEZXRlY3QgbGV2ZWwgaWYgbm90IHNldCBtYW51YWxseVxuXHRjb25zdCBjb2xvckxldmVsID0gc3Rkb3V0Q29sb3IgPyBzdGRvdXRDb2xvci5sZXZlbCA6IDA7XG5cdG9iamVjdC5sZXZlbCA9IG9wdGlvbnMubGV2ZWwgPT09IHVuZGVmaW5lZCA/IGNvbG9yTGV2ZWwgOiBvcHRpb25zLmxldmVsO1xufTtcblxuY2xhc3MgQ2hhbGtDbGFzcyB7XG5cdGNvbnN0cnVjdG9yKG9wdGlvbnMpIHtcblx0XHRyZXR1cm4gY2hhbGtGYWN0b3J5KG9wdGlvbnMpO1xuXHR9XG59XG5cbmNvbnN0IGNoYWxrRmFjdG9yeSA9IG9wdGlvbnMgPT4ge1xuXHRjb25zdCBjaGFsayA9IHt9O1xuXHRhcHBseU9wdGlvbnMoY2hhbGssIG9wdGlvbnMpO1xuXG5cdGNoYWxrLnRlbXBsYXRlID0gKC4uLmFyZ3VtZW50c18pID0+IGNoYWxrVGFnKGNoYWxrLnRlbXBsYXRlLCAuLi5hcmd1bWVudHNfKTtcblxuXHRPYmplY3Quc2V0UHJvdG90eXBlT2YoY2hhbGssIENoYWxrLnByb3RvdHlwZSk7XG5cdE9iamVjdC5zZXRQcm90b3R5cGVPZihjaGFsay50ZW1wbGF0ZSwgY2hhbGspO1xuXG5cdGNoYWxrLnRlbXBsYXRlLmNvbnN0cnVjdG9yID0gKCkgPT4ge1xuXHRcdHRocm93IG5ldyBFcnJvcignYGNoYWxrLmNvbnN0cnVjdG9yKClgIGlzIGRlcHJlY2F0ZWQuIFVzZSBgbmV3IGNoYWxrLkluc3RhbmNlKClgIGluc3RlYWQuJyk7XG5cdH07XG5cblx0Y2hhbGsudGVtcGxhdGUuSW5zdGFuY2UgPSBDaGFsa0NsYXNzO1xuXG5cdHJldHVybiBjaGFsay50ZW1wbGF0ZTtcbn07XG5cbmZ1bmN0aW9uIENoYWxrKG9wdGlvbnMpIHtcblx0cmV0dXJuIGNoYWxrRmFjdG9yeShvcHRpb25zKTtcbn1cblxuZm9yIChjb25zdCBbc3R5bGVOYW1lLCBzdHlsZV0gb2YgT2JqZWN0LmVudHJpZXMoYW5zaVN0eWxlcykpIHtcblx0c3R5bGVzW3N0eWxlTmFtZV0gPSB7XG5cdFx0Z2V0KCkge1xuXHRcdFx0Y29uc3QgYnVpbGRlciA9IGNyZWF0ZUJ1aWxkZXIodGhpcywgY3JlYXRlU3R5bGVyKHN0eWxlLm9wZW4sIHN0eWxlLmNsb3NlLCB0aGlzLl9zdHlsZXIpLCB0aGlzLl9pc0VtcHR5KTtcblx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCBzdHlsZU5hbWUsIHt2YWx1ZTogYnVpbGRlcn0pO1xuXHRcdFx0cmV0dXJuIGJ1aWxkZXI7XG5cdFx0fVxuXHR9O1xufVxuXG5zdHlsZXMudmlzaWJsZSA9IHtcblx0Z2V0KCkge1xuXHRcdGNvbnN0IGJ1aWxkZXIgPSBjcmVhdGVCdWlsZGVyKHRoaXMsIHRoaXMuX3N0eWxlciwgdHJ1ZSk7XG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsICd2aXNpYmxlJywge3ZhbHVlOiBidWlsZGVyfSk7XG5cdFx0cmV0dXJuIGJ1aWxkZXI7XG5cdH1cbn07XG5cbmNvbnN0IHVzZWRNb2RlbHMgPSBbJ3JnYicsICdoZXgnLCAna2V5d29yZCcsICdoc2wnLCAnaHN2JywgJ2h3YicsICdhbnNpJywgJ2Fuc2kyNTYnXTtcblxuZm9yIChjb25zdCBtb2RlbCBvZiB1c2VkTW9kZWxzKSB7XG5cdHN0eWxlc1ttb2RlbF0gPSB7XG5cdFx0Z2V0KCkge1xuXHRcdFx0Y29uc3Qge2xldmVsfSA9IHRoaXM7XG5cdFx0XHRyZXR1cm4gZnVuY3Rpb24gKC4uLmFyZ3VtZW50c18pIHtcblx0XHRcdFx0Y29uc3Qgc3R5bGVyID0gY3JlYXRlU3R5bGVyKGFuc2lTdHlsZXMuY29sb3JbbGV2ZWxNYXBwaW5nW2xldmVsXV1bbW9kZWxdKC4uLmFyZ3VtZW50c18pLCBhbnNpU3R5bGVzLmNvbG9yLmNsb3NlLCB0aGlzLl9zdHlsZXIpO1xuXHRcdFx0XHRyZXR1cm4gY3JlYXRlQnVpbGRlcih0aGlzLCBzdHlsZXIsIHRoaXMuX2lzRW1wdHkpO1xuXHRcdFx0fTtcblx0XHR9XG5cdH07XG59XG5cbmZvciAoY29uc3QgbW9kZWwgb2YgdXNlZE1vZGVscykge1xuXHRjb25zdCBiZ01vZGVsID0gJ2JnJyArIG1vZGVsWzBdLnRvVXBwZXJDYXNlKCkgKyBtb2RlbC5zbGljZSgxKTtcblx0c3R5bGVzW2JnTW9kZWxdID0ge1xuXHRcdGdldCgpIHtcblx0XHRcdGNvbnN0IHtsZXZlbH0gPSB0aGlzO1xuXHRcdFx0cmV0dXJuIGZ1bmN0aW9uICguLi5hcmd1bWVudHNfKSB7XG5cdFx0XHRcdGNvbnN0IHN0eWxlciA9IGNyZWF0ZVN0eWxlcihhbnNpU3R5bGVzLmJnQ29sb3JbbGV2ZWxNYXBwaW5nW2xldmVsXV1bbW9kZWxdKC4uLmFyZ3VtZW50c18pLCBhbnNpU3R5bGVzLmJnQ29sb3IuY2xvc2UsIHRoaXMuX3N0eWxlcik7XG5cdFx0XHRcdHJldHVybiBjcmVhdGVCdWlsZGVyKHRoaXMsIHN0eWxlciwgdGhpcy5faXNFbXB0eSk7XG5cdFx0XHR9O1xuXHRcdH1cblx0fTtcbn1cblxuY29uc3QgcHJvdG8gPSBPYmplY3QuZGVmaW5lUHJvcGVydGllcygoKSA9PiB7fSwge1xuXHQuLi5zdHlsZXMsXG5cdGxldmVsOiB7XG5cdFx0ZW51bWVyYWJsZTogdHJ1ZSxcblx0XHRnZXQoKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5fZ2VuZXJhdG9yLmxldmVsO1xuXHRcdH0sXG5cdFx0c2V0KGxldmVsKSB7XG5cdFx0XHR0aGlzLl9nZW5lcmF0b3IubGV2ZWwgPSBsZXZlbDtcblx0XHR9XG5cdH1cbn0pO1xuXG5jb25zdCBjcmVhdGVTdHlsZXIgPSAob3BlbiwgY2xvc2UsIHBhcmVudCkgPT4ge1xuXHRsZXQgb3BlbkFsbDtcblx0bGV0IGNsb3NlQWxsO1xuXHRpZiAocGFyZW50ID09PSB1bmRlZmluZWQpIHtcblx0XHRvcGVuQWxsID0gb3Blbjtcblx0XHRjbG9zZUFsbCA9IGNsb3NlO1xuXHR9IGVsc2Uge1xuXHRcdG9wZW5BbGwgPSBwYXJlbnQub3BlbkFsbCArIG9wZW47XG5cdFx0Y2xvc2VBbGwgPSBjbG9zZSArIHBhcmVudC5jbG9zZUFsbDtcblx0fVxuXG5cdHJldHVybiB7XG5cdFx0b3Blbixcblx0XHRjbG9zZSxcblx0XHRvcGVuQWxsLFxuXHRcdGNsb3NlQWxsLFxuXHRcdHBhcmVudFxuXHR9O1xufTtcblxuY29uc3QgY3JlYXRlQnVpbGRlciA9IChzZWxmLCBfc3R5bGVyLCBfaXNFbXB0eSkgPT4ge1xuXHRjb25zdCBidWlsZGVyID0gKC4uLmFyZ3VtZW50c18pID0+IHtcblx0XHQvLyBTaW5nbGUgYXJndW1lbnQgaXMgaG90IHBhdGgsIGltcGxpY2l0IGNvZXJjaW9uIGlzIGZhc3RlciB0aGFuIGFueXRoaW5nXG5cdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWltcGxpY2l0LWNvZXJjaW9uXG5cdFx0cmV0dXJuIGFwcGx5U3R5bGUoYnVpbGRlciwgKGFyZ3VtZW50c18ubGVuZ3RoID09PSAxKSA/ICgnJyArIGFyZ3VtZW50c19bMF0pIDogYXJndW1lbnRzXy5qb2luKCcgJykpO1xuXHR9O1xuXG5cdC8vIGBfX3Byb3RvX19gIGlzIHVzZWQgYmVjYXVzZSB3ZSBtdXN0IHJldHVybiBhIGZ1bmN0aW9uLCBidXQgdGhlcmUgaXNcblx0Ly8gbm8gd2F5IHRvIGNyZWF0ZSBhIGZ1bmN0aW9uIHdpdGggYSBkaWZmZXJlbnQgcHJvdG90eXBlXG5cdGJ1aWxkZXIuX19wcm90b19fID0gcHJvdG87IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tcHJvdG9cblxuXHRidWlsZGVyLl9nZW5lcmF0b3IgPSBzZWxmO1xuXHRidWlsZGVyLl9zdHlsZXIgPSBfc3R5bGVyO1xuXHRidWlsZGVyLl9pc0VtcHR5ID0gX2lzRW1wdHk7XG5cblx0cmV0dXJuIGJ1aWxkZXI7XG59O1xuXG5jb25zdCBhcHBseVN0eWxlID0gKHNlbGYsIHN0cmluZykgPT4ge1xuXHRpZiAoc2VsZi5sZXZlbCA8PSAwIHx8ICFzdHJpbmcpIHtcblx0XHRyZXR1cm4gc2VsZi5faXNFbXB0eSA/ICcnIDogc3RyaW5nO1xuXHR9XG5cblx0bGV0IHN0eWxlciA9IHNlbGYuX3N0eWxlcjtcblxuXHRpZiAoc3R5bGVyID09PSB1bmRlZmluZWQpIHtcblx0XHRyZXR1cm4gc3RyaW5nO1xuXHR9XG5cblx0Y29uc3Qge29wZW5BbGwsIGNsb3NlQWxsfSA9IHN0eWxlcjtcblx0aWYgKHN0cmluZy5pbmRleE9mKCdcXHUwMDFCJykgIT09IC0xKSB7XG5cdFx0d2hpbGUgKHN0eWxlciAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHQvLyBSZXBsYWNlIGFueSBpbnN0YW5jZXMgYWxyZWFkeSBwcmVzZW50IHdpdGggYSByZS1vcGVuaW5nIGNvZGVcblx0XHRcdC8vIG90aGVyd2lzZSBvbmx5IHRoZSBwYXJ0IG9mIHRoZSBzdHJpbmcgdW50aWwgc2FpZCBjbG9zaW5nIGNvZGVcblx0XHRcdC8vIHdpbGwgYmUgY29sb3JlZCwgYW5kIHRoZSByZXN0IHdpbGwgc2ltcGx5IGJlICdwbGFpbicuXG5cdFx0XHRzdHJpbmcgPSBzdHJpbmdSZXBsYWNlQWxsKHN0cmluZywgc3R5bGVyLmNsb3NlLCBzdHlsZXIub3Blbik7XG5cblx0XHRcdHN0eWxlciA9IHN0eWxlci5wYXJlbnQ7XG5cdFx0fVxuXHR9XG5cblx0Ly8gV2UgY2FuIG1vdmUgYm90aCBuZXh0IGFjdGlvbnMgb3V0IG9mIGxvb3AsIGJlY2F1c2UgcmVtYWluaW5nIGFjdGlvbnMgaW4gbG9vcCB3b24ndCBoYXZlXG5cdC8vIGFueS92aXNpYmxlIGVmZmVjdCBvbiBwYXJ0cyB3ZSBhZGQgaGVyZS4gQ2xvc2UgdGhlIHN0eWxpbmcgYmVmb3JlIGEgbGluZWJyZWFrIGFuZCByZW9wZW5cblx0Ly8gYWZ0ZXIgbmV4dCBsaW5lIHRvIGZpeCBhIGJsZWVkIGlzc3VlIG9uIG1hY09TOiBodHRwczovL2dpdGh1Yi5jb20vY2hhbGsvY2hhbGsvcHVsbC85MlxuXHRjb25zdCBsZkluZGV4ID0gc3RyaW5nLmluZGV4T2YoJ1xcbicpO1xuXHRpZiAobGZJbmRleCAhPT0gLTEpIHtcblx0XHRzdHJpbmcgPSBzdHJpbmdFbmNhc2VDUkxGV2l0aEZpcnN0SW5kZXgoc3RyaW5nLCBjbG9zZUFsbCwgb3BlbkFsbCwgbGZJbmRleCk7XG5cdH1cblxuXHRyZXR1cm4gb3BlbkFsbCArIHN0cmluZyArIGNsb3NlQWxsO1xufTtcblxubGV0IHRlbXBsYXRlO1xuY29uc3QgY2hhbGtUYWcgPSAoY2hhbGssIC4uLnN0cmluZ3MpID0+IHtcblx0Y29uc3QgW2ZpcnN0U3RyaW5nXSA9IHN0cmluZ3M7XG5cblx0aWYgKCFBcnJheS5pc0FycmF5KGZpcnN0U3RyaW5nKSkge1xuXHRcdC8vIElmIGNoYWxrKCkgd2FzIGNhbGxlZCBieSBpdHNlbGYgb3Igd2l0aCBhIHN0cmluZyxcblx0XHQvLyByZXR1cm4gdGhlIHN0cmluZyBpdHNlbGYgYXMgYSBzdHJpbmcuXG5cdFx0cmV0dXJuIHN0cmluZ3Muam9pbignICcpO1xuXHR9XG5cblx0Y29uc3QgYXJndW1lbnRzXyA9IHN0cmluZ3Muc2xpY2UoMSk7XG5cdGNvbnN0IHBhcnRzID0gW2ZpcnN0U3RyaW5nLnJhd1swXV07XG5cblx0Zm9yIChsZXQgaSA9IDE7IGkgPCBmaXJzdFN0cmluZy5sZW5ndGg7IGkrKykge1xuXHRcdHBhcnRzLnB1c2goXG5cdFx0XHRTdHJpbmcoYXJndW1lbnRzX1tpIC0gMV0pLnJlcGxhY2UoL1t7fVxcXFxdL2csICdcXFxcJCYnKSxcblx0XHRcdFN0cmluZyhmaXJzdFN0cmluZy5yYXdbaV0pXG5cdFx0KTtcblx0fVxuXG5cdGlmICh0ZW1wbGF0ZSA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0dGVtcGxhdGUgPSByZXF1aXJlKCcuL3RlbXBsYXRlcycpO1xuXHR9XG5cblx0cmV0dXJuIHRlbXBsYXRlKGNoYWxrLCBwYXJ0cy5qb2luKCcnKSk7XG59O1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydGllcyhDaGFsay5wcm90b3R5cGUsIHN0eWxlcyk7XG5cbmNvbnN0IGNoYWxrID0gQ2hhbGsoKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuZXctY2FwXG5jaGFsay5zdXBwb3J0c0NvbG9yID0gc3Rkb3V0Q29sb3I7XG5jaGFsay5zdGRlcnIgPSBDaGFsayh7bGV2ZWw6IHN0ZGVyckNvbG9yID8gc3RkZXJyQ29sb3IubGV2ZWwgOiAwfSk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbmV3LWNhcFxuY2hhbGsuc3RkZXJyLnN1cHBvcnRzQ29sb3IgPSBzdGRlcnJDb2xvcjtcblxuLy8gRm9yIFR5cGVTY3JpcHRcbmNoYWxrLkxldmVsID0ge1xuXHROb25lOiAwLFxuXHRCYXNpYzogMSxcblx0QW5zaTI1NjogMixcblx0VHJ1ZUNvbG9yOiAzLFxuXHQwOiAnTm9uZScsXG5cdDE6ICdCYXNpYycsXG5cdDI6ICdBbnNpMjU2Jyxcblx0MzogJ1RydWVDb2xvcidcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gY2hhbGs7XG4iLCAiJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnRzLmlzSW50ZWdlciA9IG51bSA9PiB7XG4gIGlmICh0eXBlb2YgbnVtID09PSAnbnVtYmVyJykge1xuICAgIHJldHVybiBOdW1iZXIuaXNJbnRlZ2VyKG51bSk7XG4gIH1cbiAgaWYgKHR5cGVvZiBudW0gPT09ICdzdHJpbmcnICYmIG51bS50cmltKCkgIT09ICcnKSB7XG4gICAgcmV0dXJuIE51bWJlci5pc0ludGVnZXIoTnVtYmVyKG51bSkpO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn07XG5cbi8qKlxuICogRmluZCBhIG5vZGUgb2YgdGhlIGdpdmVuIHR5cGVcbiAqL1xuXG5leHBvcnRzLmZpbmQgPSAobm9kZSwgdHlwZSkgPT4gbm9kZS5ub2Rlcy5maW5kKG5vZGUgPT4gbm9kZS50eXBlID09PSB0eXBlKTtcblxuLyoqXG4gKiBGaW5kIGEgbm9kZSBvZiB0aGUgZ2l2ZW4gdHlwZVxuICovXG5cbmV4cG9ydHMuZXhjZWVkc0xpbWl0ID0gKG1pbiwgbWF4LCBzdGVwID0gMSwgbGltaXQpID0+IHtcbiAgaWYgKGxpbWl0ID09PSBmYWxzZSkgcmV0dXJuIGZhbHNlO1xuICBpZiAoIWV4cG9ydHMuaXNJbnRlZ2VyKG1pbikgfHwgIWV4cG9ydHMuaXNJbnRlZ2VyKG1heCkpIHJldHVybiBmYWxzZTtcbiAgcmV0dXJuICgoTnVtYmVyKG1heCkgLSBOdW1iZXIobWluKSkgLyBOdW1iZXIoc3RlcCkpID49IGxpbWl0O1xufTtcblxuLyoqXG4gKiBFc2NhcGUgdGhlIGdpdmVuIG5vZGUgd2l0aCAnXFxcXCcgYmVmb3JlIG5vZGUudmFsdWVcbiAqL1xuXG5leHBvcnRzLmVzY2FwZU5vZGUgPSAoYmxvY2ssIG4gPSAwLCB0eXBlKSA9PiB7XG4gIGxldCBub2RlID0gYmxvY2subm9kZXNbbl07XG4gIGlmICghbm9kZSkgcmV0dXJuO1xuXG4gIGlmICgodHlwZSAmJiBub2RlLnR5cGUgPT09IHR5cGUpIHx8IG5vZGUudHlwZSA9PT0gJ29wZW4nIHx8IG5vZGUudHlwZSA9PT0gJ2Nsb3NlJykge1xuICAgIGlmIChub2RlLmVzY2FwZWQgIT09IHRydWUpIHtcbiAgICAgIG5vZGUudmFsdWUgPSAnXFxcXCcgKyBub2RlLnZhbHVlO1xuICAgICAgbm9kZS5lc2NhcGVkID0gdHJ1ZTtcbiAgICB9XG4gIH1cbn07XG5cbi8qKlxuICogUmV0dXJucyB0cnVlIGlmIHRoZSBnaXZlbiBicmFjZSBub2RlIHNob3VsZCBiZSBlbmNsb3NlZCBpbiBsaXRlcmFsIGJyYWNlc1xuICovXG5cbmV4cG9ydHMuZW5jbG9zZUJyYWNlID0gbm9kZSA9PiB7XG4gIGlmIChub2RlLnR5cGUgIT09ICdicmFjZScpIHJldHVybiBmYWxzZTtcbiAgaWYgKChub2RlLmNvbW1hcyA+PiAwICsgbm9kZS5yYW5nZXMgPj4gMCkgPT09IDApIHtcbiAgICBub2RlLmludmFsaWQgPSB0cnVlO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn07XG5cbi8qKlxuICogUmV0dXJucyB0cnVlIGlmIGEgYnJhY2Ugbm9kZSBpcyBpbnZhbGlkLlxuICovXG5cbmV4cG9ydHMuaXNJbnZhbGlkQnJhY2UgPSBibG9jayA9PiB7XG4gIGlmIChibG9jay50eXBlICE9PSAnYnJhY2UnKSByZXR1cm4gZmFsc2U7XG4gIGlmIChibG9jay5pbnZhbGlkID09PSB0cnVlIHx8IGJsb2NrLmRvbGxhcikgcmV0dXJuIHRydWU7XG4gIGlmICgoYmxvY2suY29tbWFzID4+IDAgKyBibG9jay5yYW5nZXMgPj4gMCkgPT09IDApIHtcbiAgICBibG9jay5pbnZhbGlkID0gdHJ1ZTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBpZiAoYmxvY2sub3BlbiAhPT0gdHJ1ZSB8fCBibG9jay5jbG9zZSAhPT0gdHJ1ZSkge1xuICAgIGJsb2NrLmludmFsaWQgPSB0cnVlO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn07XG5cbi8qKlxuICogUmV0dXJucyB0cnVlIGlmIGEgbm9kZSBpcyBhbiBvcGVuIG9yIGNsb3NlIG5vZGVcbiAqL1xuXG5leHBvcnRzLmlzT3Blbk9yQ2xvc2UgPSBub2RlID0+IHtcbiAgaWYgKG5vZGUudHlwZSA9PT0gJ29wZW4nIHx8IG5vZGUudHlwZSA9PT0gJ2Nsb3NlJykge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHJldHVybiBub2RlLm9wZW4gPT09IHRydWUgfHwgbm9kZS5jbG9zZSA9PT0gdHJ1ZTtcbn07XG5cbi8qKlxuICogUmVkdWNlIGFuIGFycmF5IG9mIHRleHQgbm9kZXMuXG4gKi9cblxuZXhwb3J0cy5yZWR1Y2UgPSBub2RlcyA9PiBub2Rlcy5yZWR1Y2UoKGFjYywgbm9kZSkgPT4ge1xuICBpZiAobm9kZS50eXBlID09PSAndGV4dCcpIGFjYy5wdXNoKG5vZGUudmFsdWUpO1xuICBpZiAobm9kZS50eXBlID09PSAncmFuZ2UnKSBub2RlLnR5cGUgPSAndGV4dCc7XG4gIHJldHVybiBhY2M7XG59LCBbXSk7XG5cbi8qKlxuICogRmxhdHRlbiBhbiBhcnJheVxuICovXG5cbmV4cG9ydHMuZmxhdHRlbiA9ICguLi5hcmdzKSA9PiB7XG4gIGNvbnN0IHJlc3VsdCA9IFtdO1xuICBjb25zdCBmbGF0ID0gYXJyID0+IHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xuICAgICAgbGV0IGVsZSA9IGFycltpXTtcbiAgICAgIEFycmF5LmlzQXJyYXkoZWxlKSA/IGZsYXQoZWxlLCByZXN1bHQpIDogZWxlICE9PSB2b2lkIDAgJiYgcmVzdWx0LnB1c2goZWxlKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcbiAgZmxhdChhcmdzKTtcbiAgcmV0dXJuIHJlc3VsdDtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCB1dGlscyA9IHJlcXVpcmUoJy4vdXRpbHMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSAoYXN0LCBvcHRpb25zID0ge30pID0+IHtcbiAgbGV0IHN0cmluZ2lmeSA9IChub2RlLCBwYXJlbnQgPSB7fSkgPT4ge1xuICAgIGxldCBpbnZhbGlkQmxvY2sgPSBvcHRpb25zLmVzY2FwZUludmFsaWQgJiYgdXRpbHMuaXNJbnZhbGlkQnJhY2UocGFyZW50KTtcbiAgICBsZXQgaW52YWxpZE5vZGUgPSBub2RlLmludmFsaWQgPT09IHRydWUgJiYgb3B0aW9ucy5lc2NhcGVJbnZhbGlkID09PSB0cnVlO1xuICAgIGxldCBvdXRwdXQgPSAnJztcblxuICAgIGlmIChub2RlLnZhbHVlKSB7XG4gICAgICBpZiAoKGludmFsaWRCbG9jayB8fCBpbnZhbGlkTm9kZSkgJiYgdXRpbHMuaXNPcGVuT3JDbG9zZShub2RlKSkge1xuICAgICAgICByZXR1cm4gJ1xcXFwnICsgbm9kZS52YWx1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBub2RlLnZhbHVlO1xuICAgIH1cblxuICAgIGlmIChub2RlLnZhbHVlKSB7XG4gICAgICByZXR1cm4gbm9kZS52YWx1ZTtcbiAgICB9XG5cbiAgICBpZiAobm9kZS5ub2Rlcykge1xuICAgICAgZm9yIChsZXQgY2hpbGQgb2Ygbm9kZS5ub2Rlcykge1xuICAgICAgICBvdXRwdXQgKz0gc3RyaW5naWZ5KGNoaWxkKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG91dHB1dDtcbiAgfTtcblxuICByZXR1cm4gc3RyaW5naWZ5KGFzdCk7XG59O1xuXG4iLCAiLyohXG4gKiBpcy1udW1iZXIgPGh0dHBzOi8vZ2l0aHViLmNvbS9qb25zY2hsaW5rZXJ0L2lzLW51bWJlcj5cbiAqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTQtcHJlc2VudCwgSm9uIFNjaGxpbmtlcnQuXG4gKiBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKG51bSkge1xuICBpZiAodHlwZW9mIG51bSA9PT0gJ251bWJlcicpIHtcbiAgICByZXR1cm4gbnVtIC0gbnVtID09PSAwO1xuICB9XG4gIGlmICh0eXBlb2YgbnVtID09PSAnc3RyaW5nJyAmJiBudW0udHJpbSgpICE9PSAnJykge1xuICAgIHJldHVybiBOdW1iZXIuaXNGaW5pdGUgPyBOdW1iZXIuaXNGaW5pdGUoK251bSkgOiBpc0Zpbml0ZSgrbnVtKTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59O1xuIiwgIi8qIVxuICogdG8tcmVnZXgtcmFuZ2UgPGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb21hdGNoL3RvLXJlZ2V4LXJhbmdlPlxuICpcbiAqIENvcHlyaWdodCAoYykgMjAxNS1wcmVzZW50LCBKb24gU2NobGlua2VydC5cbiAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbmNvbnN0IGlzTnVtYmVyID0gcmVxdWlyZSgnaXMtbnVtYmVyJyk7XG5cbmNvbnN0IHRvUmVnZXhSYW5nZSA9IChtaW4sIG1heCwgb3B0aW9ucykgPT4ge1xuICBpZiAoaXNOdW1iZXIobWluKSA9PT0gZmFsc2UpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCd0b1JlZ2V4UmFuZ2U6IGV4cGVjdGVkIHRoZSBmaXJzdCBhcmd1bWVudCB0byBiZSBhIG51bWJlcicpO1xuICB9XG5cbiAgaWYgKG1heCA9PT0gdm9pZCAwIHx8IG1pbiA9PT0gbWF4KSB7XG4gICAgcmV0dXJuIFN0cmluZyhtaW4pO1xuICB9XG5cbiAgaWYgKGlzTnVtYmVyKG1heCkgPT09IGZhbHNlKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcigndG9SZWdleFJhbmdlOiBleHBlY3RlZCB0aGUgc2Vjb25kIGFyZ3VtZW50IHRvIGJlIGEgbnVtYmVyLicpO1xuICB9XG5cbiAgbGV0IG9wdHMgPSB7IHJlbGF4WmVyb3M6IHRydWUsIC4uLm9wdGlvbnMgfTtcbiAgaWYgKHR5cGVvZiBvcHRzLnN0cmljdFplcm9zID09PSAnYm9vbGVhbicpIHtcbiAgICBvcHRzLnJlbGF4WmVyb3MgPSBvcHRzLnN0cmljdFplcm9zID09PSBmYWxzZTtcbiAgfVxuXG4gIGxldCByZWxheCA9IFN0cmluZyhvcHRzLnJlbGF4WmVyb3MpO1xuICBsZXQgc2hvcnRoYW5kID0gU3RyaW5nKG9wdHMuc2hvcnRoYW5kKTtcbiAgbGV0IGNhcHR1cmUgPSBTdHJpbmcob3B0cy5jYXB0dXJlKTtcbiAgbGV0IHdyYXAgPSBTdHJpbmcob3B0cy53cmFwKTtcbiAgbGV0IGNhY2hlS2V5ID0gbWluICsgJzonICsgbWF4ICsgJz0nICsgcmVsYXggKyBzaG9ydGhhbmQgKyBjYXB0dXJlICsgd3JhcDtcblxuICBpZiAodG9SZWdleFJhbmdlLmNhY2hlLmhhc093blByb3BlcnR5KGNhY2hlS2V5KSkge1xuICAgIHJldHVybiB0b1JlZ2V4UmFuZ2UuY2FjaGVbY2FjaGVLZXldLnJlc3VsdDtcbiAgfVxuXG4gIGxldCBhID0gTWF0aC5taW4obWluLCBtYXgpO1xuICBsZXQgYiA9IE1hdGgubWF4KG1pbiwgbWF4KTtcblxuICBpZiAoTWF0aC5hYnMoYSAtIGIpID09PSAxKSB7XG4gICAgbGV0IHJlc3VsdCA9IG1pbiArICd8JyArIG1heDtcbiAgICBpZiAob3B0cy5jYXB0dXJlKSB7XG4gICAgICByZXR1cm4gYCgke3Jlc3VsdH0pYDtcbiAgICB9XG4gICAgaWYgKG9wdHMud3JhcCA9PT0gZmFsc2UpIHtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIHJldHVybiBgKD86JHtyZXN1bHR9KWA7XG4gIH1cblxuICBsZXQgaXNQYWRkZWQgPSBoYXNQYWRkaW5nKG1pbikgfHwgaGFzUGFkZGluZyhtYXgpO1xuICBsZXQgc3RhdGUgPSB7IG1pbiwgbWF4LCBhLCBiIH07XG4gIGxldCBwb3NpdGl2ZXMgPSBbXTtcbiAgbGV0IG5lZ2F0aXZlcyA9IFtdO1xuXG4gIGlmIChpc1BhZGRlZCkge1xuICAgIHN0YXRlLmlzUGFkZGVkID0gaXNQYWRkZWQ7XG4gICAgc3RhdGUubWF4TGVuID0gU3RyaW5nKHN0YXRlLm1heCkubGVuZ3RoO1xuICB9XG5cbiAgaWYgKGEgPCAwKSB7XG4gICAgbGV0IG5ld01pbiA9IGIgPCAwID8gTWF0aC5hYnMoYikgOiAxO1xuICAgIG5lZ2F0aXZlcyA9IHNwbGl0VG9QYXR0ZXJucyhuZXdNaW4sIE1hdGguYWJzKGEpLCBzdGF0ZSwgb3B0cyk7XG4gICAgYSA9IHN0YXRlLmEgPSAwO1xuICB9XG5cbiAgaWYgKGIgPj0gMCkge1xuICAgIHBvc2l0aXZlcyA9IHNwbGl0VG9QYXR0ZXJucyhhLCBiLCBzdGF0ZSwgb3B0cyk7XG4gIH1cblxuICBzdGF0ZS5uZWdhdGl2ZXMgPSBuZWdhdGl2ZXM7XG4gIHN0YXRlLnBvc2l0aXZlcyA9IHBvc2l0aXZlcztcbiAgc3RhdGUucmVzdWx0ID0gY29sbGF0ZVBhdHRlcm5zKG5lZ2F0aXZlcywgcG9zaXRpdmVzLCBvcHRzKTtcblxuICBpZiAob3B0cy5jYXB0dXJlID09PSB0cnVlKSB7XG4gICAgc3RhdGUucmVzdWx0ID0gYCgke3N0YXRlLnJlc3VsdH0pYDtcbiAgfSBlbHNlIGlmIChvcHRzLndyYXAgIT09IGZhbHNlICYmIChwb3NpdGl2ZXMubGVuZ3RoICsgbmVnYXRpdmVzLmxlbmd0aCkgPiAxKSB7XG4gICAgc3RhdGUucmVzdWx0ID0gYCg/OiR7c3RhdGUucmVzdWx0fSlgO1xuICB9XG5cbiAgdG9SZWdleFJhbmdlLmNhY2hlW2NhY2hlS2V5XSA9IHN0YXRlO1xuICByZXR1cm4gc3RhdGUucmVzdWx0O1xufTtcblxuZnVuY3Rpb24gY29sbGF0ZVBhdHRlcm5zKG5lZywgcG9zLCBvcHRpb25zKSB7XG4gIGxldCBvbmx5TmVnYXRpdmUgPSBmaWx0ZXJQYXR0ZXJucyhuZWcsIHBvcywgJy0nLCBmYWxzZSwgb3B0aW9ucykgfHwgW107XG4gIGxldCBvbmx5UG9zaXRpdmUgPSBmaWx0ZXJQYXR0ZXJucyhwb3MsIG5lZywgJycsIGZhbHNlLCBvcHRpb25zKSB8fCBbXTtcbiAgbGV0IGludGVyc2VjdGVkID0gZmlsdGVyUGF0dGVybnMobmVnLCBwb3MsICctPycsIHRydWUsIG9wdGlvbnMpIHx8IFtdO1xuICBsZXQgc3VicGF0dGVybnMgPSBvbmx5TmVnYXRpdmUuY29uY2F0KGludGVyc2VjdGVkKS5jb25jYXQob25seVBvc2l0aXZlKTtcbiAgcmV0dXJuIHN1YnBhdHRlcm5zLmpvaW4oJ3wnKTtcbn1cblxuZnVuY3Rpb24gc3BsaXRUb1JhbmdlcyhtaW4sIG1heCkge1xuICBsZXQgbmluZXMgPSAxO1xuICBsZXQgemVyb3MgPSAxO1xuXG4gIGxldCBzdG9wID0gY291bnROaW5lcyhtaW4sIG5pbmVzKTtcbiAgbGV0IHN0b3BzID0gbmV3IFNldChbbWF4XSk7XG5cbiAgd2hpbGUgKG1pbiA8PSBzdG9wICYmIHN0b3AgPD0gbWF4KSB7XG4gICAgc3RvcHMuYWRkKHN0b3ApO1xuICAgIG5pbmVzICs9IDE7XG4gICAgc3RvcCA9IGNvdW50TmluZXMobWluLCBuaW5lcyk7XG4gIH1cblxuICBzdG9wID0gY291bnRaZXJvcyhtYXggKyAxLCB6ZXJvcykgLSAxO1xuXG4gIHdoaWxlIChtaW4gPCBzdG9wICYmIHN0b3AgPD0gbWF4KSB7XG4gICAgc3RvcHMuYWRkKHN0b3ApO1xuICAgIHplcm9zICs9IDE7XG4gICAgc3RvcCA9IGNvdW50WmVyb3MobWF4ICsgMSwgemVyb3MpIC0gMTtcbiAgfVxuXG4gIHN0b3BzID0gWy4uLnN0b3BzXTtcbiAgc3RvcHMuc29ydChjb21wYXJlKTtcbiAgcmV0dXJuIHN0b3BzO1xufVxuXG4vKipcbiAqIENvbnZlcnQgYSByYW5nZSB0byBhIHJlZ2V4IHBhdHRlcm5cbiAqIEBwYXJhbSB7TnVtYmVyfSBgc3RhcnRgXG4gKiBAcGFyYW0ge051bWJlcn0gYHN0b3BgXG4gKiBAcmV0dXJuIHtTdHJpbmd9XG4gKi9cblxuZnVuY3Rpb24gcmFuZ2VUb1BhdHRlcm4oc3RhcnQsIHN0b3AsIG9wdGlvbnMpIHtcbiAgaWYgKHN0YXJ0ID09PSBzdG9wKSB7XG4gICAgcmV0dXJuIHsgcGF0dGVybjogc3RhcnQsIGNvdW50OiBbXSwgZGlnaXRzOiAwIH07XG4gIH1cblxuICBsZXQgemlwcGVkID0gemlwKHN0YXJ0LCBzdG9wKTtcbiAgbGV0IGRpZ2l0cyA9IHppcHBlZC5sZW5ndGg7XG4gIGxldCBwYXR0ZXJuID0gJyc7XG4gIGxldCBjb3VudCA9IDA7XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBkaWdpdHM7IGkrKykge1xuICAgIGxldCBbc3RhcnREaWdpdCwgc3RvcERpZ2l0XSA9IHppcHBlZFtpXTtcblxuICAgIGlmIChzdGFydERpZ2l0ID09PSBzdG9wRGlnaXQpIHtcbiAgICAgIHBhdHRlcm4gKz0gc3RhcnREaWdpdDtcblxuICAgIH0gZWxzZSBpZiAoc3RhcnREaWdpdCAhPT0gJzAnIHx8IHN0b3BEaWdpdCAhPT0gJzknKSB7XG4gICAgICBwYXR0ZXJuICs9IHRvQ2hhcmFjdGVyQ2xhc3Moc3RhcnREaWdpdCwgc3RvcERpZ2l0LCBvcHRpb25zKTtcblxuICAgIH0gZWxzZSB7XG4gICAgICBjb3VudCsrO1xuICAgIH1cbiAgfVxuXG4gIGlmIChjb3VudCkge1xuICAgIHBhdHRlcm4gKz0gb3B0aW9ucy5zaG9ydGhhbmQgPT09IHRydWUgPyAnXFxcXGQnIDogJ1swLTldJztcbiAgfVxuXG4gIHJldHVybiB7IHBhdHRlcm4sIGNvdW50OiBbY291bnRdLCBkaWdpdHMgfTtcbn1cblxuZnVuY3Rpb24gc3BsaXRUb1BhdHRlcm5zKG1pbiwgbWF4LCB0b2ssIG9wdGlvbnMpIHtcbiAgbGV0IHJhbmdlcyA9IHNwbGl0VG9SYW5nZXMobWluLCBtYXgpO1xuICBsZXQgdG9rZW5zID0gW107XG4gIGxldCBzdGFydCA9IG1pbjtcbiAgbGV0IHByZXY7XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCByYW5nZXMubGVuZ3RoOyBpKyspIHtcbiAgICBsZXQgbWF4ID0gcmFuZ2VzW2ldO1xuICAgIGxldCBvYmogPSByYW5nZVRvUGF0dGVybihTdHJpbmcoc3RhcnQpLCBTdHJpbmcobWF4KSwgb3B0aW9ucyk7XG4gICAgbGV0IHplcm9zID0gJyc7XG5cbiAgICBpZiAoIXRvay5pc1BhZGRlZCAmJiBwcmV2ICYmIHByZXYucGF0dGVybiA9PT0gb2JqLnBhdHRlcm4pIHtcbiAgICAgIGlmIChwcmV2LmNvdW50Lmxlbmd0aCA+IDEpIHtcbiAgICAgICAgcHJldi5jb3VudC5wb3AoKTtcbiAgICAgIH1cblxuICAgICAgcHJldi5jb3VudC5wdXNoKG9iai5jb3VudFswXSk7XG4gICAgICBwcmV2LnN0cmluZyA9IHByZXYucGF0dGVybiArIHRvUXVhbnRpZmllcihwcmV2LmNvdW50KTtcbiAgICAgIHN0YXJ0ID0gbWF4ICsgMTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmICh0b2suaXNQYWRkZWQpIHtcbiAgICAgIHplcm9zID0gcGFkWmVyb3MobWF4LCB0b2ssIG9wdGlvbnMpO1xuICAgIH1cblxuICAgIG9iai5zdHJpbmcgPSB6ZXJvcyArIG9iai5wYXR0ZXJuICsgdG9RdWFudGlmaWVyKG9iai5jb3VudCk7XG4gICAgdG9rZW5zLnB1c2gob2JqKTtcbiAgICBzdGFydCA9IG1heCArIDE7XG4gICAgcHJldiA9IG9iajtcbiAgfVxuXG4gIHJldHVybiB0b2tlbnM7XG59XG5cbmZ1bmN0aW9uIGZpbHRlclBhdHRlcm5zKGFyciwgY29tcGFyaXNvbiwgcHJlZml4LCBpbnRlcnNlY3Rpb24sIG9wdGlvbnMpIHtcbiAgbGV0IHJlc3VsdCA9IFtdO1xuXG4gIGZvciAobGV0IGVsZSBvZiBhcnIpIHtcbiAgICBsZXQgeyBzdHJpbmcgfSA9IGVsZTtcblxuICAgIC8vIG9ubHkgcHVzaCBpZiBfYm90aF8gYXJlIG5lZ2F0aXZlLi4uXG4gICAgaWYgKCFpbnRlcnNlY3Rpb24gJiYgIWNvbnRhaW5zKGNvbXBhcmlzb24sICdzdHJpbmcnLCBzdHJpbmcpKSB7XG4gICAgICByZXN1bHQucHVzaChwcmVmaXggKyBzdHJpbmcpO1xuICAgIH1cblxuICAgIC8vIG9yIF9ib3RoXyBhcmUgcG9zaXRpdmVcbiAgICBpZiAoaW50ZXJzZWN0aW9uICYmIGNvbnRhaW5zKGNvbXBhcmlzb24sICdzdHJpbmcnLCBzdHJpbmcpKSB7XG4gICAgICByZXN1bHQucHVzaChwcmVmaXggKyBzdHJpbmcpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vKipcbiAqIFppcCBzdHJpbmdzXG4gKi9cblxuZnVuY3Rpb24gemlwKGEsIGIpIHtcbiAgbGV0IGFyciA9IFtdO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGEubGVuZ3RoOyBpKyspIGFyci5wdXNoKFthW2ldLCBiW2ldXSk7XG4gIHJldHVybiBhcnI7XG59XG5cbmZ1bmN0aW9uIGNvbXBhcmUoYSwgYikge1xuICByZXR1cm4gYSA+IGIgPyAxIDogYiA+IGEgPyAtMSA6IDA7XG59XG5cbmZ1bmN0aW9uIGNvbnRhaW5zKGFyciwga2V5LCB2YWwpIHtcbiAgcmV0dXJuIGFyci5zb21lKGVsZSA9PiBlbGVba2V5XSA9PT0gdmFsKTtcbn1cblxuZnVuY3Rpb24gY291bnROaW5lcyhtaW4sIGxlbikge1xuICByZXR1cm4gTnVtYmVyKFN0cmluZyhtaW4pLnNsaWNlKDAsIC1sZW4pICsgJzknLnJlcGVhdChsZW4pKTtcbn1cblxuZnVuY3Rpb24gY291bnRaZXJvcyhpbnRlZ2VyLCB6ZXJvcykge1xuICByZXR1cm4gaW50ZWdlciAtIChpbnRlZ2VyICUgTWF0aC5wb3coMTAsIHplcm9zKSk7XG59XG5cbmZ1bmN0aW9uIHRvUXVhbnRpZmllcihkaWdpdHMpIHtcbiAgbGV0IFtzdGFydCA9IDAsIHN0b3AgPSAnJ10gPSBkaWdpdHM7XG4gIGlmIChzdG9wIHx8IHN0YXJ0ID4gMSkge1xuICAgIHJldHVybiBgeyR7c3RhcnQgKyAoc3RvcCA/ICcsJyArIHN0b3AgOiAnJyl9fWA7XG4gIH1cbiAgcmV0dXJuICcnO1xufVxuXG5mdW5jdGlvbiB0b0NoYXJhY3RlckNsYXNzKGEsIGIsIG9wdGlvbnMpIHtcbiAgcmV0dXJuIGBbJHthfSR7KGIgLSBhID09PSAxKSA/ICcnIDogJy0nfSR7Yn1dYDtcbn1cblxuZnVuY3Rpb24gaGFzUGFkZGluZyhzdHIpIHtcbiAgcmV0dXJuIC9eLT8oMCspXFxkLy50ZXN0KHN0cik7XG59XG5cbmZ1bmN0aW9uIHBhZFplcm9zKHZhbHVlLCB0b2ssIG9wdGlvbnMpIHtcbiAgaWYgKCF0b2suaXNQYWRkZWQpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICBsZXQgZGlmZiA9IE1hdGguYWJzKHRvay5tYXhMZW4gLSBTdHJpbmcodmFsdWUpLmxlbmd0aCk7XG4gIGxldCByZWxheCA9IG9wdGlvbnMucmVsYXhaZXJvcyAhPT0gZmFsc2U7XG5cbiAgc3dpdGNoIChkaWZmKSB7XG4gICAgY2FzZSAwOlxuICAgICAgcmV0dXJuICcnO1xuICAgIGNhc2UgMTpcbiAgICAgIHJldHVybiByZWxheCA/ICcwPycgOiAnMCc7XG4gICAgY2FzZSAyOlxuICAgICAgcmV0dXJuIHJlbGF4ID8gJzB7MCwyfScgOiAnMDAnO1xuICAgIGRlZmF1bHQ6IHtcbiAgICAgIHJldHVybiByZWxheCA/IGAwezAsJHtkaWZmfX1gIDogYDB7JHtkaWZmfX1gO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIENhY2hlXG4gKi9cblxudG9SZWdleFJhbmdlLmNhY2hlID0ge307XG50b1JlZ2V4UmFuZ2UuY2xlYXJDYWNoZSA9ICgpID0+ICh0b1JlZ2V4UmFuZ2UuY2FjaGUgPSB7fSk7XG5cbi8qKlxuICogRXhwb3NlIGB0b1JlZ2V4UmFuZ2VgXG4gKi9cblxubW9kdWxlLmV4cG9ydHMgPSB0b1JlZ2V4UmFuZ2U7XG4iLCAiLyohXG4gKiBmaWxsLXJhbmdlIDxodHRwczovL2dpdGh1Yi5jb20vam9uc2NobGlua2VydC9maWxsLXJhbmdlPlxuICpcbiAqIENvcHlyaWdodCAoYykgMjAxNC1wcmVzZW50LCBKb24gU2NobGlua2VydC5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbmNvbnN0IHV0aWwgPSByZXF1aXJlKCd1dGlsJyk7XG5jb25zdCB0b1JlZ2V4UmFuZ2UgPSByZXF1aXJlKCd0by1yZWdleC1yYW5nZScpO1xuXG5jb25zdCBpc09iamVjdCA9IHZhbCA9PiB2YWwgIT09IG51bGwgJiYgdHlwZW9mIHZhbCA9PT0gJ29iamVjdCcgJiYgIUFycmF5LmlzQXJyYXkodmFsKTtcblxuY29uc3QgdHJhbnNmb3JtID0gdG9OdW1iZXIgPT4ge1xuICByZXR1cm4gdmFsdWUgPT4gdG9OdW1iZXIgPT09IHRydWUgPyBOdW1iZXIodmFsdWUpIDogU3RyaW5nKHZhbHVlKTtcbn07XG5cbmNvbnN0IGlzVmFsaWRWYWx1ZSA9IHZhbHVlID0+IHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgfHwgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgdmFsdWUgIT09ICcnKTtcbn07XG5cbmNvbnN0IGlzTnVtYmVyID0gbnVtID0+IE51bWJlci5pc0ludGVnZXIoK251bSk7XG5cbmNvbnN0IHplcm9zID0gaW5wdXQgPT4ge1xuICBsZXQgdmFsdWUgPSBgJHtpbnB1dH1gO1xuICBsZXQgaW5kZXggPSAtMTtcbiAgaWYgKHZhbHVlWzBdID09PSAnLScpIHZhbHVlID0gdmFsdWUuc2xpY2UoMSk7XG4gIGlmICh2YWx1ZSA9PT0gJzAnKSByZXR1cm4gZmFsc2U7XG4gIHdoaWxlICh2YWx1ZVsrK2luZGV4XSA9PT0gJzAnKTtcbiAgcmV0dXJuIGluZGV4ID4gMDtcbn07XG5cbmNvbnN0IHN0cmluZ2lmeSA9IChzdGFydCwgZW5kLCBvcHRpb25zKSA9PiB7XG4gIGlmICh0eXBlb2Ygc3RhcnQgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiBlbmQgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgcmV0dXJuIG9wdGlvbnMuc3RyaW5naWZ5ID09PSB0cnVlO1xufTtcblxuY29uc3QgcGFkID0gKGlucHV0LCBtYXhMZW5ndGgsIHRvTnVtYmVyKSA9PiB7XG4gIGlmIChtYXhMZW5ndGggPiAwKSB7XG4gICAgbGV0IGRhc2ggPSBpbnB1dFswXSA9PT0gJy0nID8gJy0nIDogJyc7XG4gICAgaWYgKGRhc2gpIGlucHV0ID0gaW5wdXQuc2xpY2UoMSk7XG4gICAgaW5wdXQgPSAoZGFzaCArIGlucHV0LnBhZFN0YXJ0KGRhc2ggPyBtYXhMZW5ndGggLSAxIDogbWF4TGVuZ3RoLCAnMCcpKTtcbiAgfVxuICBpZiAodG9OdW1iZXIgPT09IGZhbHNlKSB7XG4gICAgcmV0dXJuIFN0cmluZyhpbnB1dCk7XG4gIH1cbiAgcmV0dXJuIGlucHV0O1xufTtcblxuY29uc3QgdG9NYXhMZW4gPSAoaW5wdXQsIG1heExlbmd0aCkgPT4ge1xuICBsZXQgbmVnYXRpdmUgPSBpbnB1dFswXSA9PT0gJy0nID8gJy0nIDogJyc7XG4gIGlmIChuZWdhdGl2ZSkge1xuICAgIGlucHV0ID0gaW5wdXQuc2xpY2UoMSk7XG4gICAgbWF4TGVuZ3RoLS07XG4gIH1cbiAgd2hpbGUgKGlucHV0Lmxlbmd0aCA8IG1heExlbmd0aCkgaW5wdXQgPSAnMCcgKyBpbnB1dDtcbiAgcmV0dXJuIG5lZ2F0aXZlID8gKCctJyArIGlucHV0KSA6IGlucHV0O1xufTtcblxuY29uc3QgdG9TZXF1ZW5jZSA9IChwYXJ0cywgb3B0aW9ucykgPT4ge1xuICBwYXJ0cy5uZWdhdGl2ZXMuc29ydCgoYSwgYikgPT4gYSA8IGIgPyAtMSA6IGEgPiBiID8gMSA6IDApO1xuICBwYXJ0cy5wb3NpdGl2ZXMuc29ydCgoYSwgYikgPT4gYSA8IGIgPyAtMSA6IGEgPiBiID8gMSA6IDApO1xuXG4gIGxldCBwcmVmaXggPSBvcHRpb25zLmNhcHR1cmUgPyAnJyA6ICc/Oic7XG4gIGxldCBwb3NpdGl2ZXMgPSAnJztcbiAgbGV0IG5lZ2F0aXZlcyA9ICcnO1xuICBsZXQgcmVzdWx0O1xuXG4gIGlmIChwYXJ0cy5wb3NpdGl2ZXMubGVuZ3RoKSB7XG4gICAgcG9zaXRpdmVzID0gcGFydHMucG9zaXRpdmVzLmpvaW4oJ3wnKTtcbiAgfVxuXG4gIGlmIChwYXJ0cy5uZWdhdGl2ZXMubGVuZ3RoKSB7XG4gICAgbmVnYXRpdmVzID0gYC0oJHtwcmVmaXh9JHtwYXJ0cy5uZWdhdGl2ZXMuam9pbignfCcpfSlgO1xuICB9XG5cbiAgaWYgKHBvc2l0aXZlcyAmJiBuZWdhdGl2ZXMpIHtcbiAgICByZXN1bHQgPSBgJHtwb3NpdGl2ZXN9fCR7bmVnYXRpdmVzfWA7XG4gIH0gZWxzZSB7XG4gICAgcmVzdWx0ID0gcG9zaXRpdmVzIHx8IG5lZ2F0aXZlcztcbiAgfVxuXG4gIGlmIChvcHRpb25zLndyYXApIHtcbiAgICByZXR1cm4gYCgke3ByZWZpeH0ke3Jlc3VsdH0pYDtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG5jb25zdCB0b1JhbmdlID0gKGEsIGIsIGlzTnVtYmVycywgb3B0aW9ucykgPT4ge1xuICBpZiAoaXNOdW1iZXJzKSB7XG4gICAgcmV0dXJuIHRvUmVnZXhSYW5nZShhLCBiLCB7IHdyYXA6IGZhbHNlLCAuLi5vcHRpb25zIH0pO1xuICB9XG5cbiAgbGV0IHN0YXJ0ID0gU3RyaW5nLmZyb21DaGFyQ29kZShhKTtcbiAgaWYgKGEgPT09IGIpIHJldHVybiBzdGFydDtcblxuICBsZXQgc3RvcCA9IFN0cmluZy5mcm9tQ2hhckNvZGUoYik7XG4gIHJldHVybiBgWyR7c3RhcnR9LSR7c3RvcH1dYDtcbn07XG5cbmNvbnN0IHRvUmVnZXggPSAoc3RhcnQsIGVuZCwgb3B0aW9ucykgPT4ge1xuICBpZiAoQXJyYXkuaXNBcnJheShzdGFydCkpIHtcbiAgICBsZXQgd3JhcCA9IG9wdGlvbnMud3JhcCA9PT0gdHJ1ZTtcbiAgICBsZXQgcHJlZml4ID0gb3B0aW9ucy5jYXB0dXJlID8gJycgOiAnPzonO1xuICAgIHJldHVybiB3cmFwID8gYCgke3ByZWZpeH0ke3N0YXJ0LmpvaW4oJ3wnKX0pYCA6IHN0YXJ0LmpvaW4oJ3wnKTtcbiAgfVxuICByZXR1cm4gdG9SZWdleFJhbmdlKHN0YXJ0LCBlbmQsIG9wdGlvbnMpO1xufTtcblxuY29uc3QgcmFuZ2VFcnJvciA9ICguLi5hcmdzKSA9PiB7XG4gIHJldHVybiBuZXcgUmFuZ2VFcnJvcignSW52YWxpZCByYW5nZSBhcmd1bWVudHM6ICcgKyB1dGlsLmluc3BlY3QoLi4uYXJncykpO1xufTtcblxuY29uc3QgaW52YWxpZFJhbmdlID0gKHN0YXJ0LCBlbmQsIG9wdGlvbnMpID0+IHtcbiAgaWYgKG9wdGlvbnMuc3RyaWN0UmFuZ2VzID09PSB0cnVlKSB0aHJvdyByYW5nZUVycm9yKFtzdGFydCwgZW5kXSk7XG4gIHJldHVybiBbXTtcbn07XG5cbmNvbnN0IGludmFsaWRTdGVwID0gKHN0ZXAsIG9wdGlvbnMpID0+IHtcbiAgaWYgKG9wdGlvbnMuc3RyaWN0UmFuZ2VzID09PSB0cnVlKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgRXhwZWN0ZWQgc3RlcCBcIiR7c3RlcH1cIiB0byBiZSBhIG51bWJlcmApO1xuICB9XG4gIHJldHVybiBbXTtcbn07XG5cbmNvbnN0IGZpbGxOdW1iZXJzID0gKHN0YXJ0LCBlbmQsIHN0ZXAgPSAxLCBvcHRpb25zID0ge30pID0+IHtcbiAgbGV0IGEgPSBOdW1iZXIoc3RhcnQpO1xuICBsZXQgYiA9IE51bWJlcihlbmQpO1xuXG4gIGlmICghTnVtYmVyLmlzSW50ZWdlcihhKSB8fCAhTnVtYmVyLmlzSW50ZWdlcihiKSkge1xuICAgIGlmIChvcHRpb25zLnN0cmljdFJhbmdlcyA9PT0gdHJ1ZSkgdGhyb3cgcmFuZ2VFcnJvcihbc3RhcnQsIGVuZF0pO1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIC8vIGZpeCBuZWdhdGl2ZSB6ZXJvXG4gIGlmIChhID09PSAwKSBhID0gMDtcbiAgaWYgKGIgPT09IDApIGIgPSAwO1xuXG4gIGxldCBkZXNjZW5kaW5nID0gYSA+IGI7XG4gIGxldCBzdGFydFN0cmluZyA9IFN0cmluZyhzdGFydCk7XG4gIGxldCBlbmRTdHJpbmcgPSBTdHJpbmcoZW5kKTtcbiAgbGV0IHN0ZXBTdHJpbmcgPSBTdHJpbmcoc3RlcCk7XG4gIHN0ZXAgPSBNYXRoLm1heChNYXRoLmFicyhzdGVwKSwgMSk7XG5cbiAgbGV0IHBhZGRlZCA9IHplcm9zKHN0YXJ0U3RyaW5nKSB8fCB6ZXJvcyhlbmRTdHJpbmcpIHx8IHplcm9zKHN0ZXBTdHJpbmcpO1xuICBsZXQgbWF4TGVuID0gcGFkZGVkID8gTWF0aC5tYXgoc3RhcnRTdHJpbmcubGVuZ3RoLCBlbmRTdHJpbmcubGVuZ3RoLCBzdGVwU3RyaW5nLmxlbmd0aCkgOiAwO1xuICBsZXQgdG9OdW1iZXIgPSBwYWRkZWQgPT09IGZhbHNlICYmIHN0cmluZ2lmeShzdGFydCwgZW5kLCBvcHRpb25zKSA9PT0gZmFsc2U7XG4gIGxldCBmb3JtYXQgPSBvcHRpb25zLnRyYW5zZm9ybSB8fCB0cmFuc2Zvcm0odG9OdW1iZXIpO1xuXG4gIGlmIChvcHRpb25zLnRvUmVnZXggJiYgc3RlcCA9PT0gMSkge1xuICAgIHJldHVybiB0b1JhbmdlKHRvTWF4TGVuKHN0YXJ0LCBtYXhMZW4pLCB0b01heExlbihlbmQsIG1heExlbiksIHRydWUsIG9wdGlvbnMpO1xuICB9XG5cbiAgbGV0IHBhcnRzID0geyBuZWdhdGl2ZXM6IFtdLCBwb3NpdGl2ZXM6IFtdIH07XG4gIGxldCBwdXNoID0gbnVtID0+IHBhcnRzW251bSA8IDAgPyAnbmVnYXRpdmVzJyA6ICdwb3NpdGl2ZXMnXS5wdXNoKE1hdGguYWJzKG51bSkpO1xuICBsZXQgcmFuZ2UgPSBbXTtcbiAgbGV0IGluZGV4ID0gMDtcblxuICB3aGlsZSAoZGVzY2VuZGluZyA/IGEgPj0gYiA6IGEgPD0gYikge1xuICAgIGlmIChvcHRpb25zLnRvUmVnZXggPT09IHRydWUgJiYgc3RlcCA+IDEpIHtcbiAgICAgIHB1c2goYSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJhbmdlLnB1c2gocGFkKGZvcm1hdChhLCBpbmRleCksIG1heExlbiwgdG9OdW1iZXIpKTtcbiAgICB9XG4gICAgYSA9IGRlc2NlbmRpbmcgPyBhIC0gc3RlcCA6IGEgKyBzdGVwO1xuICAgIGluZGV4Kys7XG4gIH1cblxuICBpZiAob3B0aW9ucy50b1JlZ2V4ID09PSB0cnVlKSB7XG4gICAgcmV0dXJuIHN0ZXAgPiAxXG4gICAgICA/IHRvU2VxdWVuY2UocGFydHMsIG9wdGlvbnMpXG4gICAgICA6IHRvUmVnZXgocmFuZ2UsIG51bGwsIHsgd3JhcDogZmFsc2UsIC4uLm9wdGlvbnMgfSk7XG4gIH1cblxuICByZXR1cm4gcmFuZ2U7XG59O1xuXG5jb25zdCBmaWxsTGV0dGVycyA9IChzdGFydCwgZW5kLCBzdGVwID0gMSwgb3B0aW9ucyA9IHt9KSA9PiB7XG4gIGlmICgoIWlzTnVtYmVyKHN0YXJ0KSAmJiBzdGFydC5sZW5ndGggPiAxKSB8fCAoIWlzTnVtYmVyKGVuZCkgJiYgZW5kLmxlbmd0aCA+IDEpKSB7XG4gICAgcmV0dXJuIGludmFsaWRSYW5nZShzdGFydCwgZW5kLCBvcHRpb25zKTtcbiAgfVxuXG5cbiAgbGV0IGZvcm1hdCA9IG9wdGlvbnMudHJhbnNmb3JtIHx8ICh2YWwgPT4gU3RyaW5nLmZyb21DaGFyQ29kZSh2YWwpKTtcbiAgbGV0IGEgPSBgJHtzdGFydH1gLmNoYXJDb2RlQXQoMCk7XG4gIGxldCBiID0gYCR7ZW5kfWAuY2hhckNvZGVBdCgwKTtcblxuICBsZXQgZGVzY2VuZGluZyA9IGEgPiBiO1xuICBsZXQgbWluID0gTWF0aC5taW4oYSwgYik7XG4gIGxldCBtYXggPSBNYXRoLm1heChhLCBiKTtcblxuICBpZiAob3B0aW9ucy50b1JlZ2V4ICYmIHN0ZXAgPT09IDEpIHtcbiAgICByZXR1cm4gdG9SYW5nZShtaW4sIG1heCwgZmFsc2UsIG9wdGlvbnMpO1xuICB9XG5cbiAgbGV0IHJhbmdlID0gW107XG4gIGxldCBpbmRleCA9IDA7XG5cbiAgd2hpbGUgKGRlc2NlbmRpbmcgPyBhID49IGIgOiBhIDw9IGIpIHtcbiAgICByYW5nZS5wdXNoKGZvcm1hdChhLCBpbmRleCkpO1xuICAgIGEgPSBkZXNjZW5kaW5nID8gYSAtIHN0ZXAgOiBhICsgc3RlcDtcbiAgICBpbmRleCsrO1xuICB9XG5cbiAgaWYgKG9wdGlvbnMudG9SZWdleCA9PT0gdHJ1ZSkge1xuICAgIHJldHVybiB0b1JlZ2V4KHJhbmdlLCBudWxsLCB7IHdyYXA6IGZhbHNlLCBvcHRpb25zIH0pO1xuICB9XG5cbiAgcmV0dXJuIHJhbmdlO1xufTtcblxuY29uc3QgZmlsbCA9IChzdGFydCwgZW5kLCBzdGVwLCBvcHRpb25zID0ge30pID0+IHtcbiAgaWYgKGVuZCA9PSBudWxsICYmIGlzVmFsaWRWYWx1ZShzdGFydCkpIHtcbiAgICByZXR1cm4gW3N0YXJ0XTtcbiAgfVxuXG4gIGlmICghaXNWYWxpZFZhbHVlKHN0YXJ0KSB8fCAhaXNWYWxpZFZhbHVlKGVuZCkpIHtcbiAgICByZXR1cm4gaW52YWxpZFJhbmdlKHN0YXJ0LCBlbmQsIG9wdGlvbnMpO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBzdGVwID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIGZpbGwoc3RhcnQsIGVuZCwgMSwgeyB0cmFuc2Zvcm06IHN0ZXAgfSk7XG4gIH1cblxuICBpZiAoaXNPYmplY3Qoc3RlcCkpIHtcbiAgICByZXR1cm4gZmlsbChzdGFydCwgZW5kLCAwLCBzdGVwKTtcbiAgfVxuXG4gIGxldCBvcHRzID0geyAuLi5vcHRpb25zIH07XG4gIGlmIChvcHRzLmNhcHR1cmUgPT09IHRydWUpIG9wdHMud3JhcCA9IHRydWU7XG4gIHN0ZXAgPSBzdGVwIHx8IG9wdHMuc3RlcCB8fCAxO1xuXG4gIGlmICghaXNOdW1iZXIoc3RlcCkpIHtcbiAgICBpZiAoc3RlcCAhPSBudWxsICYmICFpc09iamVjdChzdGVwKSkgcmV0dXJuIGludmFsaWRTdGVwKHN0ZXAsIG9wdHMpO1xuICAgIHJldHVybiBmaWxsKHN0YXJ0LCBlbmQsIDEsIHN0ZXApO1xuICB9XG5cbiAgaWYgKGlzTnVtYmVyKHN0YXJ0KSAmJiBpc051bWJlcihlbmQpKSB7XG4gICAgcmV0dXJuIGZpbGxOdW1iZXJzKHN0YXJ0LCBlbmQsIHN0ZXAsIG9wdHMpO1xuICB9XG5cbiAgcmV0dXJuIGZpbGxMZXR0ZXJzKHN0YXJ0LCBlbmQsIE1hdGgubWF4KE1hdGguYWJzKHN0ZXApLCAxKSwgb3B0cyk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZpbGw7XG4iLCAiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBmaWxsID0gcmVxdWlyZSgnZmlsbC1yYW5nZScpO1xuY29uc3QgdXRpbHMgPSByZXF1aXJlKCcuL3V0aWxzJyk7XG5cbmNvbnN0IGNvbXBpbGUgPSAoYXN0LCBvcHRpb25zID0ge30pID0+IHtcbiAgbGV0IHdhbGsgPSAobm9kZSwgcGFyZW50ID0ge30pID0+IHtcbiAgICBsZXQgaW52YWxpZEJsb2NrID0gdXRpbHMuaXNJbnZhbGlkQnJhY2UocGFyZW50KTtcbiAgICBsZXQgaW52YWxpZE5vZGUgPSBub2RlLmludmFsaWQgPT09IHRydWUgJiYgb3B0aW9ucy5lc2NhcGVJbnZhbGlkID09PSB0cnVlO1xuICAgIGxldCBpbnZhbGlkID0gaW52YWxpZEJsb2NrID09PSB0cnVlIHx8IGludmFsaWROb2RlID09PSB0cnVlO1xuICAgIGxldCBwcmVmaXggPSBvcHRpb25zLmVzY2FwZUludmFsaWQgPT09IHRydWUgPyAnXFxcXCcgOiAnJztcbiAgICBsZXQgb3V0cHV0ID0gJyc7XG5cbiAgICBpZiAobm9kZS5pc09wZW4gPT09IHRydWUpIHtcbiAgICAgIHJldHVybiBwcmVmaXggKyBub2RlLnZhbHVlO1xuICAgIH1cbiAgICBpZiAobm9kZS5pc0Nsb3NlID09PSB0cnVlKSB7XG4gICAgICByZXR1cm4gcHJlZml4ICsgbm9kZS52YWx1ZTtcbiAgICB9XG5cbiAgICBpZiAobm9kZS50eXBlID09PSAnb3BlbicpIHtcbiAgICAgIHJldHVybiBpbnZhbGlkID8gKHByZWZpeCArIG5vZGUudmFsdWUpIDogJygnO1xuICAgIH1cblxuICAgIGlmIChub2RlLnR5cGUgPT09ICdjbG9zZScpIHtcbiAgICAgIHJldHVybiBpbnZhbGlkID8gKHByZWZpeCArIG5vZGUudmFsdWUpIDogJyknO1xuICAgIH1cblxuICAgIGlmIChub2RlLnR5cGUgPT09ICdjb21tYScpIHtcbiAgICAgIHJldHVybiBub2RlLnByZXYudHlwZSA9PT0gJ2NvbW1hJyA/ICcnIDogKGludmFsaWQgPyBub2RlLnZhbHVlIDogJ3wnKTtcbiAgICB9XG5cbiAgICBpZiAobm9kZS52YWx1ZSkge1xuICAgICAgcmV0dXJuIG5vZGUudmFsdWU7XG4gICAgfVxuXG4gICAgaWYgKG5vZGUubm9kZXMgJiYgbm9kZS5yYW5nZXMgPiAwKSB7XG4gICAgICBsZXQgYXJncyA9IHV0aWxzLnJlZHVjZShub2RlLm5vZGVzKTtcbiAgICAgIGxldCByYW5nZSA9IGZpbGwoLi4uYXJncywgeyAuLi5vcHRpb25zLCB3cmFwOiBmYWxzZSwgdG9SZWdleDogdHJ1ZSB9KTtcblxuICAgICAgaWYgKHJhbmdlLmxlbmd0aCAhPT0gMCkge1xuICAgICAgICByZXR1cm4gYXJncy5sZW5ndGggPiAxICYmIHJhbmdlLmxlbmd0aCA+IDEgPyBgKCR7cmFuZ2V9KWAgOiByYW5nZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobm9kZS5ub2Rlcykge1xuICAgICAgZm9yIChsZXQgY2hpbGQgb2Ygbm9kZS5ub2Rlcykge1xuICAgICAgICBvdXRwdXQgKz0gd2FsayhjaGlsZCwgbm9kZSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBvdXRwdXQ7XG4gIH07XG5cbiAgcmV0dXJuIHdhbGsoYXN0KTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gY29tcGlsZTtcbiIsICIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGZpbGwgPSByZXF1aXJlKCdmaWxsLXJhbmdlJyk7XG5jb25zdCBzdHJpbmdpZnkgPSByZXF1aXJlKCcuL3N0cmluZ2lmeScpO1xuY29uc3QgdXRpbHMgPSByZXF1aXJlKCcuL3V0aWxzJyk7XG5cbmNvbnN0IGFwcGVuZCA9IChxdWV1ZSA9ICcnLCBzdGFzaCA9ICcnLCBlbmNsb3NlID0gZmFsc2UpID0+IHtcbiAgbGV0IHJlc3VsdCA9IFtdO1xuXG4gIHF1ZXVlID0gW10uY29uY2F0KHF1ZXVlKTtcbiAgc3Rhc2ggPSBbXS5jb25jYXQoc3Rhc2gpO1xuXG4gIGlmICghc3Rhc2gubGVuZ3RoKSByZXR1cm4gcXVldWU7XG4gIGlmICghcXVldWUubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGVuY2xvc2UgPyB1dGlscy5mbGF0dGVuKHN0YXNoKS5tYXAoZWxlID0+IGB7JHtlbGV9fWApIDogc3Rhc2g7XG4gIH1cblxuICBmb3IgKGxldCBpdGVtIG9mIHF1ZXVlKSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoaXRlbSkpIHtcbiAgICAgIGZvciAobGV0IHZhbHVlIG9mIGl0ZW0pIHtcbiAgICAgICAgcmVzdWx0LnB1c2goYXBwZW5kKHZhbHVlLCBzdGFzaCwgZW5jbG9zZSkpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBmb3IgKGxldCBlbGUgb2Ygc3Rhc2gpIHtcbiAgICAgICAgaWYgKGVuY2xvc2UgPT09IHRydWUgJiYgdHlwZW9mIGVsZSA9PT0gJ3N0cmluZycpIGVsZSA9IGB7JHtlbGV9fWA7XG4gICAgICAgIHJlc3VsdC5wdXNoKEFycmF5LmlzQXJyYXkoZWxlKSA/IGFwcGVuZChpdGVtLCBlbGUsIGVuY2xvc2UpIDogKGl0ZW0gKyBlbGUpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIHV0aWxzLmZsYXR0ZW4ocmVzdWx0KTtcbn07XG5cbmNvbnN0IGV4cGFuZCA9IChhc3QsIG9wdGlvbnMgPSB7fSkgPT4ge1xuICBsZXQgcmFuZ2VMaW1pdCA9IG9wdGlvbnMucmFuZ2VMaW1pdCA9PT0gdm9pZCAwID8gMTAwMCA6IG9wdGlvbnMucmFuZ2VMaW1pdDtcblxuICBsZXQgd2FsayA9IChub2RlLCBwYXJlbnQgPSB7fSkgPT4ge1xuICAgIG5vZGUucXVldWUgPSBbXTtcblxuICAgIGxldCBwID0gcGFyZW50O1xuICAgIGxldCBxID0gcGFyZW50LnF1ZXVlO1xuXG4gICAgd2hpbGUgKHAudHlwZSAhPT0gJ2JyYWNlJyAmJiBwLnR5cGUgIT09ICdyb290JyAmJiBwLnBhcmVudCkge1xuICAgICAgcCA9IHAucGFyZW50O1xuICAgICAgcSA9IHAucXVldWU7XG4gICAgfVxuXG4gICAgaWYgKG5vZGUuaW52YWxpZCB8fCBub2RlLmRvbGxhcikge1xuICAgICAgcS5wdXNoKGFwcGVuZChxLnBvcCgpLCBzdHJpbmdpZnkobm9kZSwgb3B0aW9ucykpKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAobm9kZS50eXBlID09PSAnYnJhY2UnICYmIG5vZGUuaW52YWxpZCAhPT0gdHJ1ZSAmJiBub2RlLm5vZGVzLmxlbmd0aCA9PT0gMikge1xuICAgICAgcS5wdXNoKGFwcGVuZChxLnBvcCgpLCBbJ3t9J10pKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAobm9kZS5ub2RlcyAmJiBub2RlLnJhbmdlcyA+IDApIHtcbiAgICAgIGxldCBhcmdzID0gdXRpbHMucmVkdWNlKG5vZGUubm9kZXMpO1xuXG4gICAgICBpZiAodXRpbHMuZXhjZWVkc0xpbWl0KC4uLmFyZ3MsIG9wdGlvbnMuc3RlcCwgcmFuZ2VMaW1pdCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ2V4cGFuZGVkIGFycmF5IGxlbmd0aCBleGNlZWRzIHJhbmdlIGxpbWl0LiBVc2Ugb3B0aW9ucy5yYW5nZUxpbWl0IHRvIGluY3JlYXNlIG9yIGRpc2FibGUgdGhlIGxpbWl0LicpO1xuICAgICAgfVxuXG4gICAgICBsZXQgcmFuZ2UgPSBmaWxsKC4uLmFyZ3MsIG9wdGlvbnMpO1xuICAgICAgaWYgKHJhbmdlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByYW5nZSA9IHN0cmluZ2lmeShub2RlLCBvcHRpb25zKTtcbiAgICAgIH1cblxuICAgICAgcS5wdXNoKGFwcGVuZChxLnBvcCgpLCByYW5nZSkpO1xuICAgICAgbm9kZS5ub2RlcyA9IFtdO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBlbmNsb3NlID0gdXRpbHMuZW5jbG9zZUJyYWNlKG5vZGUpO1xuICAgIGxldCBxdWV1ZSA9IG5vZGUucXVldWU7XG4gICAgbGV0IGJsb2NrID0gbm9kZTtcblxuICAgIHdoaWxlIChibG9jay50eXBlICE9PSAnYnJhY2UnICYmIGJsb2NrLnR5cGUgIT09ICdyb290JyAmJiBibG9jay5wYXJlbnQpIHtcbiAgICAgIGJsb2NrID0gYmxvY2sucGFyZW50O1xuICAgICAgcXVldWUgPSBibG9jay5xdWV1ZTtcbiAgICB9XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5vZGUubm9kZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGxldCBjaGlsZCA9IG5vZGUubm9kZXNbaV07XG5cbiAgICAgIGlmIChjaGlsZC50eXBlID09PSAnY29tbWEnICYmIG5vZGUudHlwZSA9PT0gJ2JyYWNlJykge1xuICAgICAgICBpZiAoaSA9PT0gMSkgcXVldWUucHVzaCgnJyk7XG4gICAgICAgIHF1ZXVlLnB1c2goJycpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKGNoaWxkLnR5cGUgPT09ICdjbG9zZScpIHtcbiAgICAgICAgcS5wdXNoKGFwcGVuZChxLnBvcCgpLCBxdWV1ZSwgZW5jbG9zZSkpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKGNoaWxkLnZhbHVlICYmIGNoaWxkLnR5cGUgIT09ICdvcGVuJykge1xuICAgICAgICBxdWV1ZS5wdXNoKGFwcGVuZChxdWV1ZS5wb3AoKSwgY2hpbGQudmFsdWUpKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChjaGlsZC5ub2Rlcykge1xuICAgICAgICB3YWxrKGNoaWxkLCBub2RlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcXVldWU7XG4gIH07XG5cbiAgcmV0dXJuIHV0aWxzLmZsYXR0ZW4od2Fsayhhc3QpKTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gZXhwYW5kO1xuIiwgIid1c2Ugc3RyaWN0JztcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIE1BWF9MRU5HVEg6IDEwMjQgKiA2NCxcblxuICAvLyBEaWdpdHNcbiAgQ0hBUl8wOiAnMCcsIC8qIDAgKi9cbiAgQ0hBUl85OiAnOScsIC8qIDkgKi9cblxuICAvLyBBbHBoYWJldCBjaGFycy5cbiAgQ0hBUl9VUFBFUkNBU0VfQTogJ0EnLCAvKiBBICovXG4gIENIQVJfTE9XRVJDQVNFX0E6ICdhJywgLyogYSAqL1xuICBDSEFSX1VQUEVSQ0FTRV9aOiAnWicsIC8qIFogKi9cbiAgQ0hBUl9MT1dFUkNBU0VfWjogJ3onLCAvKiB6ICovXG5cbiAgQ0hBUl9MRUZUX1BBUkVOVEhFU0VTOiAnKCcsIC8qICggKi9cbiAgQ0hBUl9SSUdIVF9QQVJFTlRIRVNFUzogJyknLCAvKiApICovXG5cbiAgQ0hBUl9BU1RFUklTSzogJyonLCAvKiAqICovXG5cbiAgLy8gTm9uLWFscGhhYmV0aWMgY2hhcnMuXG4gIENIQVJfQU1QRVJTQU5EOiAnJicsIC8qICYgKi9cbiAgQ0hBUl9BVDogJ0AnLCAvKiBAICovXG4gIENIQVJfQkFDS1NMQVNIOiAnXFxcXCcsIC8qIFxcICovXG4gIENIQVJfQkFDS1RJQ0s6ICdgJywgLyogYCAqL1xuICBDSEFSX0NBUlJJQUdFX1JFVFVSTjogJ1xccicsIC8qIFxcciAqL1xuICBDSEFSX0NJUkNVTUZMRVhfQUNDRU5UOiAnXicsIC8qIF4gKi9cbiAgQ0hBUl9DT0xPTjogJzonLCAvKiA6ICovXG4gIENIQVJfQ09NTUE6ICcsJywgLyogLCAqL1xuICBDSEFSX0RPTExBUjogJyQnLCAvKiAuICovXG4gIENIQVJfRE9UOiAnLicsIC8qIC4gKi9cbiAgQ0hBUl9ET1VCTEVfUVVPVEU6ICdcIicsIC8qIFwiICovXG4gIENIQVJfRVFVQUw6ICc9JywgLyogPSAqL1xuICBDSEFSX0VYQ0xBTUFUSU9OX01BUks6ICchJywgLyogISAqL1xuICBDSEFSX0ZPUk1fRkVFRDogJ1xcZicsIC8qIFxcZiAqL1xuICBDSEFSX0ZPUldBUkRfU0xBU0g6ICcvJywgLyogLyAqL1xuICBDSEFSX0hBU0g6ICcjJywgLyogIyAqL1xuICBDSEFSX0hZUEhFTl9NSU5VUzogJy0nLCAvKiAtICovXG4gIENIQVJfTEVGVF9BTkdMRV9CUkFDS0VUOiAnPCcsIC8qIDwgKi9cbiAgQ0hBUl9MRUZUX0NVUkxZX0JSQUNFOiAneycsIC8qIHsgKi9cbiAgQ0hBUl9MRUZUX1NRVUFSRV9CUkFDS0VUOiAnWycsIC8qIFsgKi9cbiAgQ0hBUl9MSU5FX0ZFRUQ6ICdcXG4nLCAvKiBcXG4gKi9cbiAgQ0hBUl9OT19CUkVBS19TUEFDRTogJ1xcdTAwQTAnLCAvKiBcXHUwMEEwICovXG4gIENIQVJfUEVSQ0VOVDogJyUnLCAvKiAlICovXG4gIENIQVJfUExVUzogJysnLCAvKiArICovXG4gIENIQVJfUVVFU1RJT05fTUFSSzogJz8nLCAvKiA/ICovXG4gIENIQVJfUklHSFRfQU5HTEVfQlJBQ0tFVDogJz4nLCAvKiA+ICovXG4gIENIQVJfUklHSFRfQ1VSTFlfQlJBQ0U6ICd9JywgLyogfSAqL1xuICBDSEFSX1JJR0hUX1NRVUFSRV9CUkFDS0VUOiAnXScsIC8qIF0gKi9cbiAgQ0hBUl9TRU1JQ09MT046ICc7JywgLyogOyAqL1xuICBDSEFSX1NJTkdMRV9RVU9URTogJ1xcJycsIC8qICcgKi9cbiAgQ0hBUl9TUEFDRTogJyAnLCAvKiAgICovXG4gIENIQVJfVEFCOiAnXFx0JywgLyogXFx0ICovXG4gIENIQVJfVU5ERVJTQ09SRTogJ18nLCAvKiBfICovXG4gIENIQVJfVkVSVElDQUxfTElORTogJ3wnLCAvKiB8ICovXG4gIENIQVJfWkVST19XSURUSF9OT0JSRUFLX1NQQUNFOiAnXFx1RkVGRicgLyogXFx1RkVGRiAqL1xufTtcbiIsICIndXNlIHN0cmljdCc7XG5cbmNvbnN0IHN0cmluZ2lmeSA9IHJlcXVpcmUoJy4vc3RyaW5naWZ5Jyk7XG5cbi8qKlxuICogQ29uc3RhbnRzXG4gKi9cblxuY29uc3Qge1xuICBNQVhfTEVOR1RILFxuICBDSEFSX0JBQ0tTTEFTSCwgLyogXFwgKi9cbiAgQ0hBUl9CQUNLVElDSywgLyogYCAqL1xuICBDSEFSX0NPTU1BLCAvKiAsICovXG4gIENIQVJfRE9ULCAvKiAuICovXG4gIENIQVJfTEVGVF9QQVJFTlRIRVNFUywgLyogKCAqL1xuICBDSEFSX1JJR0hUX1BBUkVOVEhFU0VTLCAvKiApICovXG4gIENIQVJfTEVGVF9DVVJMWV9CUkFDRSwgLyogeyAqL1xuICBDSEFSX1JJR0hUX0NVUkxZX0JSQUNFLCAvKiB9ICovXG4gIENIQVJfTEVGVF9TUVVBUkVfQlJBQ0tFVCwgLyogWyAqL1xuICBDSEFSX1JJR0hUX1NRVUFSRV9CUkFDS0VULCAvKiBdICovXG4gIENIQVJfRE9VQkxFX1FVT1RFLCAvKiBcIiAqL1xuICBDSEFSX1NJTkdMRV9RVU9URSwgLyogJyAqL1xuICBDSEFSX05PX0JSRUFLX1NQQUNFLFxuICBDSEFSX1pFUk9fV0lEVEhfTk9CUkVBS19TUEFDRVxufSA9IHJlcXVpcmUoJy4vY29uc3RhbnRzJyk7XG5cbi8qKlxuICogcGFyc2VcbiAqL1xuXG5jb25zdCBwYXJzZSA9IChpbnB1dCwgb3B0aW9ucyA9IHt9KSA9PiB7XG4gIGlmICh0eXBlb2YgaW5wdXQgIT09ICdzdHJpbmcnKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignRXhwZWN0ZWQgYSBzdHJpbmcnKTtcbiAgfVxuXG4gIGxldCBvcHRzID0gb3B0aW9ucyB8fCB7fTtcbiAgbGV0IG1heCA9IHR5cGVvZiBvcHRzLm1heExlbmd0aCA9PT0gJ251bWJlcicgPyBNYXRoLm1pbihNQVhfTEVOR1RILCBvcHRzLm1heExlbmd0aCkgOiBNQVhfTEVOR1RIO1xuICBpZiAoaW5wdXQubGVuZ3RoID4gbWF4KSB7XG4gICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKGBJbnB1dCBsZW5ndGggKCR7aW5wdXQubGVuZ3RofSksIGV4Y2VlZHMgbWF4IGNoYXJhY3RlcnMgKCR7bWF4fSlgKTtcbiAgfVxuXG4gIGxldCBhc3QgPSB7IHR5cGU6ICdyb290JywgaW5wdXQsIG5vZGVzOiBbXSB9O1xuICBsZXQgc3RhY2sgPSBbYXN0XTtcbiAgbGV0IGJsb2NrID0gYXN0O1xuICBsZXQgcHJldiA9IGFzdDtcbiAgbGV0IGJyYWNrZXRzID0gMDtcbiAgbGV0IGxlbmd0aCA9IGlucHV0Lmxlbmd0aDtcbiAgbGV0IGluZGV4ID0gMDtcbiAgbGV0IGRlcHRoID0gMDtcbiAgbGV0IHZhbHVlO1xuICBsZXQgbWVtbyA9IHt9O1xuXG4gIC8qKlxuICAgKiBIZWxwZXJzXG4gICAqL1xuXG4gIGNvbnN0IGFkdmFuY2UgPSAoKSA9PiBpbnB1dFtpbmRleCsrXTtcbiAgY29uc3QgcHVzaCA9IG5vZGUgPT4ge1xuICAgIGlmIChub2RlLnR5cGUgPT09ICd0ZXh0JyAmJiBwcmV2LnR5cGUgPT09ICdkb3QnKSB7XG4gICAgICBwcmV2LnR5cGUgPSAndGV4dCc7XG4gICAgfVxuXG4gICAgaWYgKHByZXYgJiYgcHJldi50eXBlID09PSAndGV4dCcgJiYgbm9kZS50eXBlID09PSAndGV4dCcpIHtcbiAgICAgIHByZXYudmFsdWUgKz0gbm9kZS52YWx1ZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBibG9jay5ub2Rlcy5wdXNoKG5vZGUpO1xuICAgIG5vZGUucGFyZW50ID0gYmxvY2s7XG4gICAgbm9kZS5wcmV2ID0gcHJldjtcbiAgICBwcmV2ID0gbm9kZTtcbiAgICByZXR1cm4gbm9kZTtcbiAgfTtcblxuICBwdXNoKHsgdHlwZTogJ2JvcycgfSk7XG5cbiAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgYmxvY2sgPSBzdGFja1tzdGFjay5sZW5ndGggLSAxXTtcbiAgICB2YWx1ZSA9IGFkdmFuY2UoKTtcblxuICAgIC8qKlxuICAgICAqIEludmFsaWQgY2hhcnNcbiAgICAgKi9cblxuICAgIGlmICh2YWx1ZSA9PT0gQ0hBUl9aRVJPX1dJRFRIX05PQlJFQUtfU1BBQ0UgfHwgdmFsdWUgPT09IENIQVJfTk9fQlJFQUtfU1BBQ0UpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEVzY2FwZWQgY2hhcnNcbiAgICAgKi9cblxuICAgIGlmICh2YWx1ZSA9PT0gQ0hBUl9CQUNLU0xBU0gpIHtcbiAgICAgIHB1c2goeyB0eXBlOiAndGV4dCcsIHZhbHVlOiAob3B0aW9ucy5rZWVwRXNjYXBpbmcgPyB2YWx1ZSA6ICcnKSArIGFkdmFuY2UoKSB9KTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJpZ2h0IHNxdWFyZSBicmFja2V0IChsaXRlcmFsKTogJ10nXG4gICAgICovXG5cbiAgICBpZiAodmFsdWUgPT09IENIQVJfUklHSFRfU1FVQVJFX0JSQUNLRVQpIHtcbiAgICAgIHB1c2goeyB0eXBlOiAndGV4dCcsIHZhbHVlOiAnXFxcXCcgKyB2YWx1ZSB9KTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIExlZnQgc3F1YXJlIGJyYWNrZXQ6ICdbJ1xuICAgICAqL1xuXG4gICAgaWYgKHZhbHVlID09PSBDSEFSX0xFRlRfU1FVQVJFX0JSQUNLRVQpIHtcbiAgICAgIGJyYWNrZXRzKys7XG5cbiAgICAgIGxldCBjbG9zZWQgPSB0cnVlO1xuICAgICAgbGV0IG5leHQ7XG5cbiAgICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCAmJiAobmV4dCA9IGFkdmFuY2UoKSkpIHtcbiAgICAgICAgdmFsdWUgKz0gbmV4dDtcblxuICAgICAgICBpZiAobmV4dCA9PT0gQ0hBUl9MRUZUX1NRVUFSRV9CUkFDS0VUKSB7XG4gICAgICAgICAgYnJhY2tldHMrKztcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChuZXh0ID09PSBDSEFSX0JBQ0tTTEFTSCkge1xuICAgICAgICAgIHZhbHVlICs9IGFkdmFuY2UoKTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChuZXh0ID09PSBDSEFSX1JJR0hUX1NRVUFSRV9CUkFDS0VUKSB7XG4gICAgICAgICAgYnJhY2tldHMtLTtcblxuICAgICAgICAgIGlmIChicmFja2V0cyA9PT0gMCkge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHB1c2goeyB0eXBlOiAndGV4dCcsIHZhbHVlIH0pO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUGFyZW50aGVzZXNcbiAgICAgKi9cblxuICAgIGlmICh2YWx1ZSA9PT0gQ0hBUl9MRUZUX1BBUkVOVEhFU0VTKSB7XG4gICAgICBibG9jayA9IHB1c2goeyB0eXBlOiAncGFyZW4nLCBub2RlczogW10gfSk7XG4gICAgICBzdGFjay5wdXNoKGJsb2NrKTtcbiAgICAgIHB1c2goeyB0eXBlOiAndGV4dCcsIHZhbHVlIH0pO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKHZhbHVlID09PSBDSEFSX1JJR0hUX1BBUkVOVEhFU0VTKSB7XG4gICAgICBpZiAoYmxvY2sudHlwZSAhPT0gJ3BhcmVuJykge1xuICAgICAgICBwdXNoKHsgdHlwZTogJ3RleHQnLCB2YWx1ZSB9KTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBibG9jayA9IHN0YWNrLnBvcCgpO1xuICAgICAgcHVzaCh7IHR5cGU6ICd0ZXh0JywgdmFsdWUgfSk7XG4gICAgICBibG9jayA9IHN0YWNrW3N0YWNrLmxlbmd0aCAtIDFdO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUXVvdGVzOiAnfFwifGBcbiAgICAgKi9cblxuICAgIGlmICh2YWx1ZSA9PT0gQ0hBUl9ET1VCTEVfUVVPVEUgfHwgdmFsdWUgPT09IENIQVJfU0lOR0xFX1FVT1RFIHx8IHZhbHVlID09PSBDSEFSX0JBQ0tUSUNLKSB7XG4gICAgICBsZXQgb3BlbiA9IHZhbHVlO1xuICAgICAgbGV0IG5leHQ7XG5cbiAgICAgIGlmIChvcHRpb25zLmtlZXBRdW90ZXMgIT09IHRydWUpIHtcbiAgICAgICAgdmFsdWUgPSAnJztcbiAgICAgIH1cblxuICAgICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoICYmIChuZXh0ID0gYWR2YW5jZSgpKSkge1xuICAgICAgICBpZiAobmV4dCA9PT0gQ0hBUl9CQUNLU0xBU0gpIHtcbiAgICAgICAgICB2YWx1ZSArPSBuZXh0ICsgYWR2YW5jZSgpO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG5leHQgPT09IG9wZW4pIHtcbiAgICAgICAgICBpZiAob3B0aW9ucy5rZWVwUXVvdGVzID09PSB0cnVlKSB2YWx1ZSArPSBuZXh0O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFsdWUgKz0gbmV4dDtcbiAgICAgIH1cblxuICAgICAgcHVzaCh7IHR5cGU6ICd0ZXh0JywgdmFsdWUgfSk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBMZWZ0IGN1cmx5IGJyYWNlOiAneydcbiAgICAgKi9cblxuICAgIGlmICh2YWx1ZSA9PT0gQ0hBUl9MRUZUX0NVUkxZX0JSQUNFKSB7XG4gICAgICBkZXB0aCsrO1xuXG4gICAgICBsZXQgZG9sbGFyID0gcHJldi52YWx1ZSAmJiBwcmV2LnZhbHVlLnNsaWNlKC0xKSA9PT0gJyQnIHx8IGJsb2NrLmRvbGxhciA9PT0gdHJ1ZTtcbiAgICAgIGxldCBicmFjZSA9IHtcbiAgICAgICAgdHlwZTogJ2JyYWNlJyxcbiAgICAgICAgb3BlbjogdHJ1ZSxcbiAgICAgICAgY2xvc2U6IGZhbHNlLFxuICAgICAgICBkb2xsYXIsXG4gICAgICAgIGRlcHRoLFxuICAgICAgICBjb21tYXM6IDAsXG4gICAgICAgIHJhbmdlczogMCxcbiAgICAgICAgbm9kZXM6IFtdXG4gICAgICB9O1xuXG4gICAgICBibG9jayA9IHB1c2goYnJhY2UpO1xuICAgICAgc3RhY2sucHVzaChibG9jayk7XG4gICAgICBwdXNoKHsgdHlwZTogJ29wZW4nLCB2YWx1ZSB9KTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJpZ2h0IGN1cmx5IGJyYWNlOiAnfSdcbiAgICAgKi9cblxuICAgIGlmICh2YWx1ZSA9PT0gQ0hBUl9SSUdIVF9DVVJMWV9CUkFDRSkge1xuICAgICAgaWYgKGJsb2NrLnR5cGUgIT09ICdicmFjZScpIHtcbiAgICAgICAgcHVzaCh7IHR5cGU6ICd0ZXh0JywgdmFsdWUgfSk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBsZXQgdHlwZSA9ICdjbG9zZSc7XG4gICAgICBibG9jayA9IHN0YWNrLnBvcCgpO1xuICAgICAgYmxvY2suY2xvc2UgPSB0cnVlO1xuXG4gICAgICBwdXNoKHsgdHlwZSwgdmFsdWUgfSk7XG4gICAgICBkZXB0aC0tO1xuXG4gICAgICBibG9jayA9IHN0YWNrW3N0YWNrLmxlbmd0aCAtIDFdO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29tbWE6ICcsJ1xuICAgICAqL1xuXG4gICAgaWYgKHZhbHVlID09PSBDSEFSX0NPTU1BICYmIGRlcHRoID4gMCkge1xuICAgICAgaWYgKGJsb2NrLnJhbmdlcyA+IDApIHtcbiAgICAgICAgYmxvY2sucmFuZ2VzID0gMDtcbiAgICAgICAgbGV0IG9wZW4gPSBibG9jay5ub2Rlcy5zaGlmdCgpO1xuICAgICAgICBibG9jay5ub2RlcyA9IFtvcGVuLCB7IHR5cGU6ICd0ZXh0JywgdmFsdWU6IHN0cmluZ2lmeShibG9jaykgfV07XG4gICAgICB9XG5cbiAgICAgIHB1c2goeyB0eXBlOiAnY29tbWEnLCB2YWx1ZSB9KTtcbiAgICAgIGJsb2NrLmNvbW1hcysrO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRG90OiAnLidcbiAgICAgKi9cblxuICAgIGlmICh2YWx1ZSA9PT0gQ0hBUl9ET1QgJiYgZGVwdGggPiAwICYmIGJsb2NrLmNvbW1hcyA9PT0gMCkge1xuICAgICAgbGV0IHNpYmxpbmdzID0gYmxvY2subm9kZXM7XG5cbiAgICAgIGlmIChkZXB0aCA9PT0gMCB8fCBzaWJsaW5ncy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcHVzaCh7IHR5cGU6ICd0ZXh0JywgdmFsdWUgfSk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAocHJldi50eXBlID09PSAnZG90Jykge1xuICAgICAgICBibG9jay5yYW5nZSA9IFtdO1xuICAgICAgICBwcmV2LnZhbHVlICs9IHZhbHVlO1xuICAgICAgICBwcmV2LnR5cGUgPSAncmFuZ2UnO1xuXG4gICAgICAgIGlmIChibG9jay5ub2Rlcy5sZW5ndGggIT09IDMgJiYgYmxvY2subm9kZXMubGVuZ3RoICE9PSA1KSB7XG4gICAgICAgICAgYmxvY2suaW52YWxpZCA9IHRydWU7XG4gICAgICAgICAgYmxvY2sucmFuZ2VzID0gMDtcbiAgICAgICAgICBwcmV2LnR5cGUgPSAndGV4dCc7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBibG9jay5yYW5nZXMrKztcbiAgICAgICAgYmxvY2suYXJncyA9IFtdO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHByZXYudHlwZSA9PT0gJ3JhbmdlJykge1xuICAgICAgICBzaWJsaW5ncy5wb3AoKTtcblxuICAgICAgICBsZXQgYmVmb3JlID0gc2libGluZ3Nbc2libGluZ3MubGVuZ3RoIC0gMV07XG4gICAgICAgIGJlZm9yZS52YWx1ZSArPSBwcmV2LnZhbHVlICsgdmFsdWU7XG4gICAgICAgIHByZXYgPSBiZWZvcmU7XG4gICAgICAgIGJsb2NrLnJhbmdlcy0tO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgcHVzaCh7IHR5cGU6ICdkb3QnLCB2YWx1ZSB9KTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRleHRcbiAgICAgKi9cblxuICAgIHB1c2goeyB0eXBlOiAndGV4dCcsIHZhbHVlIH0pO1xuICB9XG5cbiAgLy8gTWFyayBpbWJhbGFuY2VkIGJyYWNlcyBhbmQgYnJhY2tldHMgYXMgaW52YWxpZFxuICBkbyB7XG4gICAgYmxvY2sgPSBzdGFjay5wb3AoKTtcblxuICAgIGlmIChibG9jay50eXBlICE9PSAncm9vdCcpIHtcbiAgICAgIGJsb2NrLm5vZGVzLmZvckVhY2gobm9kZSA9PiB7XG4gICAgICAgIGlmICghbm9kZS5ub2Rlcykge1xuICAgICAgICAgIGlmIChub2RlLnR5cGUgPT09ICdvcGVuJykgbm9kZS5pc09wZW4gPSB0cnVlO1xuICAgICAgICAgIGlmIChub2RlLnR5cGUgPT09ICdjbG9zZScpIG5vZGUuaXNDbG9zZSA9IHRydWU7XG4gICAgICAgICAgaWYgKCFub2RlLm5vZGVzKSBub2RlLnR5cGUgPSAndGV4dCc7XG4gICAgICAgICAgbm9kZS5pbnZhbGlkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIC8vIGdldCB0aGUgbG9jYXRpb24gb2YgdGhlIGJsb2NrIG9uIHBhcmVudC5ub2RlcyAoYmxvY2sncyBzaWJsaW5ncylcbiAgICAgIGxldCBwYXJlbnQgPSBzdGFja1tzdGFjay5sZW5ndGggLSAxXTtcbiAgICAgIGxldCBpbmRleCA9IHBhcmVudC5ub2Rlcy5pbmRleE9mKGJsb2NrKTtcbiAgICAgIC8vIHJlcGxhY2UgdGhlIChpbnZhbGlkKSBibG9jayB3aXRoIGl0J3Mgbm9kZXNcbiAgICAgIHBhcmVudC5ub2Rlcy5zcGxpY2UoaW5kZXgsIDEsIC4uLmJsb2NrLm5vZGVzKTtcbiAgICB9XG4gIH0gd2hpbGUgKHN0YWNrLmxlbmd0aCA+IDApO1xuXG4gIHB1c2goeyB0eXBlOiAnZW9zJyB9KTtcbiAgcmV0dXJuIGFzdDtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gcGFyc2U7XG4iLCAiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBzdHJpbmdpZnkgPSByZXF1aXJlKCcuL2xpYi9zdHJpbmdpZnknKTtcbmNvbnN0IGNvbXBpbGUgPSByZXF1aXJlKCcuL2xpYi9jb21waWxlJyk7XG5jb25zdCBleHBhbmQgPSByZXF1aXJlKCcuL2xpYi9leHBhbmQnKTtcbmNvbnN0IHBhcnNlID0gcmVxdWlyZSgnLi9saWIvcGFyc2UnKTtcblxuLyoqXG4gKiBFeHBhbmQgdGhlIGdpdmVuIHBhdHRlcm4gb3IgY3JlYXRlIGEgcmVnZXgtY29tcGF0aWJsZSBzdHJpbmcuXG4gKlxuICogYGBganNcbiAqIGNvbnN0IGJyYWNlcyA9IHJlcXVpcmUoJ2JyYWNlcycpO1xuICogY29uc29sZS5sb2coYnJhY2VzKCd7YSxiLGN9JywgeyBjb21waWxlOiB0cnVlIH0pKTsgLy89PiBbJyhhfGJ8YyknXVxuICogY29uc29sZS5sb2coYnJhY2VzKCd7YSxiLGN9JykpOyAvLz0+IFsnYScsICdiJywgJ2MnXVxuICogYGBgXG4gKiBAcGFyYW0ge1N0cmluZ30gYHN0cmBcbiAqIEBwYXJhbSB7T2JqZWN0fSBgb3B0aW9uc2BcbiAqIEByZXR1cm4ge1N0cmluZ31cbiAqIEBhcGkgcHVibGljXG4gKi9cblxuY29uc3QgYnJhY2VzID0gKGlucHV0LCBvcHRpb25zID0ge30pID0+IHtcbiAgbGV0IG91dHB1dCA9IFtdO1xuXG4gIGlmIChBcnJheS5pc0FycmF5KGlucHV0KSkge1xuICAgIGZvciAobGV0IHBhdHRlcm4gb2YgaW5wdXQpIHtcbiAgICAgIGxldCByZXN1bHQgPSBicmFjZXMuY3JlYXRlKHBhdHRlcm4sIG9wdGlvbnMpO1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkocmVzdWx0KSkge1xuICAgICAgICBvdXRwdXQucHVzaCguLi5yZXN1bHQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3V0cHV0LnB1c2gocmVzdWx0KTtcbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgb3V0cHV0ID0gW10uY29uY2F0KGJyYWNlcy5jcmVhdGUoaW5wdXQsIG9wdGlvbnMpKTtcbiAgfVxuXG4gIGlmIChvcHRpb25zICYmIG9wdGlvbnMuZXhwYW5kID09PSB0cnVlICYmIG9wdGlvbnMubm9kdXBlcyA9PT0gdHJ1ZSkge1xuICAgIG91dHB1dCA9IFsuLi5uZXcgU2V0KG91dHB1dCldO1xuICB9XG4gIHJldHVybiBvdXRwdXQ7XG59O1xuXG4vKipcbiAqIFBhcnNlIHRoZSBnaXZlbiBgc3RyYCB3aXRoIHRoZSBnaXZlbiBgb3B0aW9uc2AuXG4gKlxuICogYGBganNcbiAqIC8vIGJyYWNlcy5wYXJzZShwYXR0ZXJuLCBbLCBvcHRpb25zXSk7XG4gKiBjb25zdCBhc3QgPSBicmFjZXMucGFyc2UoJ2Eve2IsY30vZCcpO1xuICogY29uc29sZS5sb2coYXN0KTtcbiAqIGBgYFxuICogQHBhcmFtIHtTdHJpbmd9IHBhdHRlcm4gQnJhY2UgcGF0dGVybiB0byBwYXJzZVxuICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnNcbiAqIEByZXR1cm4ge09iamVjdH0gUmV0dXJucyBhbiBBU1RcbiAqIEBhcGkgcHVibGljXG4gKi9cblxuYnJhY2VzLnBhcnNlID0gKGlucHV0LCBvcHRpb25zID0ge30pID0+IHBhcnNlKGlucHV0LCBvcHRpb25zKTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgYnJhY2VzIHN0cmluZyBmcm9tIGFuIEFTVCwgb3IgYW4gQVNUIG5vZGUuXG4gKlxuICogYGBganNcbiAqIGNvbnN0IGJyYWNlcyA9IHJlcXVpcmUoJ2JyYWNlcycpO1xuICogbGV0IGFzdCA9IGJyYWNlcy5wYXJzZSgnZm9vL3thLGJ9L2JhcicpO1xuICogY29uc29sZS5sb2coc3RyaW5naWZ5KGFzdC5ub2Rlc1syXSkpOyAvLz0+ICd7YSxifSdcbiAqIGBgYFxuICogQHBhcmFtIHtTdHJpbmd9IGBpbnB1dGAgQnJhY2UgcGF0dGVybiBvciBBU1QuXG4gKiBAcGFyYW0ge09iamVjdH0gYG9wdGlvbnNgXG4gKiBAcmV0dXJuIHtBcnJheX0gUmV0dXJucyBhbiBhcnJheSBvZiBleHBhbmRlZCB2YWx1ZXMuXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbmJyYWNlcy5zdHJpbmdpZnkgPSAoaW5wdXQsIG9wdGlvbnMgPSB7fSkgPT4ge1xuICBpZiAodHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBzdHJpbmdpZnkoYnJhY2VzLnBhcnNlKGlucHV0LCBvcHRpb25zKSwgb3B0aW9ucyk7XG4gIH1cbiAgcmV0dXJuIHN0cmluZ2lmeShpbnB1dCwgb3B0aW9ucyk7XG59O1xuXG4vKipcbiAqIENvbXBpbGVzIGEgYnJhY2UgcGF0dGVybiBpbnRvIGEgcmVnZXgtY29tcGF0aWJsZSwgb3B0aW1pemVkIHN0cmluZy5cbiAqIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCBieSB0aGUgbWFpbiBbYnJhY2VzXSgjYnJhY2VzKSBmdW5jdGlvbiBieSBkZWZhdWx0LlxuICpcbiAqIGBgYGpzXG4gKiBjb25zdCBicmFjZXMgPSByZXF1aXJlKCdicmFjZXMnKTtcbiAqIGNvbnNvbGUubG9nKGJyYWNlcy5jb21waWxlKCdhL3tiLGN9L2QnKSk7XG4gKiAvLz0+IFsnYS8oYnxjKS9kJ11cbiAqIGBgYFxuICogQHBhcmFtIHtTdHJpbmd9IGBpbnB1dGAgQnJhY2UgcGF0dGVybiBvciBBU1QuXG4gKiBAcGFyYW0ge09iamVjdH0gYG9wdGlvbnNgXG4gKiBAcmV0dXJuIHtBcnJheX0gUmV0dXJucyBhbiBhcnJheSBvZiBleHBhbmRlZCB2YWx1ZXMuXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbmJyYWNlcy5jb21waWxlID0gKGlucHV0LCBvcHRpb25zID0ge30pID0+IHtcbiAgaWYgKHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZycpIHtcbiAgICBpbnB1dCA9IGJyYWNlcy5wYXJzZShpbnB1dCwgb3B0aW9ucyk7XG4gIH1cbiAgcmV0dXJuIGNvbXBpbGUoaW5wdXQsIG9wdGlvbnMpO1xufTtcblxuLyoqXG4gKiBFeHBhbmRzIGEgYnJhY2UgcGF0dGVybiBpbnRvIGFuIGFycmF5LiBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgYnkgdGhlXG4gKiBtYWluIFticmFjZXNdKCNicmFjZXMpIGZ1bmN0aW9uIHdoZW4gYG9wdGlvbnMuZXhwYW5kYCBpcyB0cnVlLiBCZWZvcmVcbiAqIHVzaW5nIHRoaXMgbWV0aG9kIGl0J3MgcmVjb21tZW5kZWQgdGhhdCB5b3UgcmVhZCB0aGUgW3BlcmZvcm1hbmNlIG5vdGVzXSgjcGVyZm9ybWFuY2UpKVxuICogYW5kIGFkdmFudGFnZXMgb2YgdXNpbmcgWy5jb21waWxlXSgjY29tcGlsZSkgaW5zdGVhZC5cbiAqXG4gKiBgYGBqc1xuICogY29uc3QgYnJhY2VzID0gcmVxdWlyZSgnYnJhY2VzJyk7XG4gKiBjb25zb2xlLmxvZyhicmFjZXMuZXhwYW5kKCdhL3tiLGN9L2QnKSk7XG4gKiAvLz0+IFsnYS9iL2QnLCAnYS9jL2QnXTtcbiAqIGBgYFxuICogQHBhcmFtIHtTdHJpbmd9IGBwYXR0ZXJuYCBCcmFjZSBwYXR0ZXJuXG4gKiBAcGFyYW0ge09iamVjdH0gYG9wdGlvbnNgXG4gKiBAcmV0dXJuIHtBcnJheX0gUmV0dXJucyBhbiBhcnJheSBvZiBleHBhbmRlZCB2YWx1ZXMuXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbmJyYWNlcy5leHBhbmQgPSAoaW5wdXQsIG9wdGlvbnMgPSB7fSkgPT4ge1xuICBpZiAodHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJykge1xuICAgIGlucHV0ID0gYnJhY2VzLnBhcnNlKGlucHV0LCBvcHRpb25zKTtcbiAgfVxuXG4gIGxldCByZXN1bHQgPSBleHBhbmQoaW5wdXQsIG9wdGlvbnMpO1xuXG4gIC8vIGZpbHRlciBvdXQgZW1wdHkgc3RyaW5ncyBpZiBzcGVjaWZpZWRcbiAgaWYgKG9wdGlvbnMubm9lbXB0eSA9PT0gdHJ1ZSkge1xuICAgIHJlc3VsdCA9IHJlc3VsdC5maWx0ZXIoQm9vbGVhbik7XG4gIH1cblxuICAvLyBmaWx0ZXIgb3V0IGR1cGxpY2F0ZXMgaWYgc3BlY2lmaWVkXG4gIGlmIChvcHRpb25zLm5vZHVwZXMgPT09IHRydWUpIHtcbiAgICByZXN1bHQgPSBbLi4ubmV3IFNldChyZXN1bHQpXTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG4vKipcbiAqIFByb2Nlc3NlcyBhIGJyYWNlIHBhdHRlcm4gYW5kIHJldHVybnMgZWl0aGVyIGFuIGV4cGFuZGVkIGFycmF5XG4gKiAoaWYgYG9wdGlvbnMuZXhwYW5kYCBpcyB0cnVlKSwgYSBoaWdobHkgb3B0aW1pemVkIHJlZ2V4LWNvbXBhdGlibGUgc3RyaW5nLlxuICogVGhpcyBtZXRob2QgaXMgY2FsbGVkIGJ5IHRoZSBtYWluIFticmFjZXNdKCNicmFjZXMpIGZ1bmN0aW9uLlxuICpcbiAqIGBgYGpzXG4gKiBjb25zdCBicmFjZXMgPSByZXF1aXJlKCdicmFjZXMnKTtcbiAqIGNvbnNvbGUubG9nKGJyYWNlcy5jcmVhdGUoJ3VzZXItezIwMC4uMzAwfS9wcm9qZWN0LXthLGIsY30tezEuLjEwfScpKVxuICogLy89PiAndXNlci0oMjBbMC05XXwyWzEtOV1bMC05XXwzMDApL3Byb2plY3QtKGF8YnxjKS0oWzEtOV18MTApJ1xuICogYGBgXG4gKiBAcGFyYW0ge1N0cmluZ30gYHBhdHRlcm5gIEJyYWNlIHBhdHRlcm5cbiAqIEBwYXJhbSB7T2JqZWN0fSBgb3B0aW9uc2BcbiAqIEByZXR1cm4ge0FycmF5fSBSZXR1cm5zIGFuIGFycmF5IG9mIGV4cGFuZGVkIHZhbHVlcy5cbiAqIEBhcGkgcHVibGljXG4gKi9cblxuYnJhY2VzLmNyZWF0ZSA9IChpbnB1dCwgb3B0aW9ucyA9IHt9KSA9PiB7XG4gIGlmIChpbnB1dCA9PT0gJycgfHwgaW5wdXQubGVuZ3RoIDwgMykge1xuICAgIHJldHVybiBbaW5wdXRdO1xuICB9XG5cbiByZXR1cm4gb3B0aW9ucy5leHBhbmQgIT09IHRydWVcbiAgICA/IGJyYWNlcy5jb21waWxlKGlucHV0LCBvcHRpb25zKVxuICAgIDogYnJhY2VzLmV4cGFuZChpbnB1dCwgb3B0aW9ucyk7XG59O1xuXG4vKipcbiAqIEV4cG9zZSBcImJyYWNlc1wiXG4gKi9cblxubW9kdWxlLmV4cG9ydHMgPSBicmFjZXM7XG4iLCAiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBwYXRoID0gcmVxdWlyZSgncGF0aCcpO1xuY29uc3QgV0lOX1NMQVNIID0gJ1xcXFxcXFxcLyc7XG5jb25zdCBXSU5fTk9fU0xBU0ggPSBgW14ke1dJTl9TTEFTSH1dYDtcblxuLyoqXG4gKiBQb3NpeCBnbG9iIHJlZ2V4XG4gKi9cblxuY29uc3QgRE9UX0xJVEVSQUwgPSAnXFxcXC4nO1xuY29uc3QgUExVU19MSVRFUkFMID0gJ1xcXFwrJztcbmNvbnN0IFFNQVJLX0xJVEVSQUwgPSAnXFxcXD8nO1xuY29uc3QgU0xBU0hfTElURVJBTCA9ICdcXFxcLyc7XG5jb25zdCBPTkVfQ0hBUiA9ICcoPz0uKSc7XG5jb25zdCBRTUFSSyA9ICdbXi9dJztcbmNvbnN0IEVORF9BTkNIT1IgPSBgKD86JHtTTEFTSF9MSVRFUkFMfXwkKWA7XG5jb25zdCBTVEFSVF9BTkNIT1IgPSBgKD86Xnwke1NMQVNIX0xJVEVSQUx9KWA7XG5jb25zdCBET1RTX1NMQVNIID0gYCR7RE9UX0xJVEVSQUx9ezEsMn0ke0VORF9BTkNIT1J9YDtcbmNvbnN0IE5PX0RPVCA9IGAoPyEke0RPVF9MSVRFUkFMfSlgO1xuY29uc3QgTk9fRE9UUyA9IGAoPyEke1NUQVJUX0FOQ0hPUn0ke0RPVFNfU0xBU0h9KWA7XG5jb25zdCBOT19ET1RfU0xBU0ggPSBgKD8hJHtET1RfTElURVJBTH17MCwxfSR7RU5EX0FOQ0hPUn0pYDtcbmNvbnN0IE5PX0RPVFNfU0xBU0ggPSBgKD8hJHtET1RTX1NMQVNIfSlgO1xuY29uc3QgUU1BUktfTk9fRE9UID0gYFteLiR7U0xBU0hfTElURVJBTH1dYDtcbmNvbnN0IFNUQVIgPSBgJHtRTUFSS30qP2A7XG5cbmNvbnN0IFBPU0lYX0NIQVJTID0ge1xuICBET1RfTElURVJBTCxcbiAgUExVU19MSVRFUkFMLFxuICBRTUFSS19MSVRFUkFMLFxuICBTTEFTSF9MSVRFUkFMLFxuICBPTkVfQ0hBUixcbiAgUU1BUkssXG4gIEVORF9BTkNIT1IsXG4gIERPVFNfU0xBU0gsXG4gIE5PX0RPVCxcbiAgTk9fRE9UUyxcbiAgTk9fRE9UX1NMQVNILFxuICBOT19ET1RTX1NMQVNILFxuICBRTUFSS19OT19ET1QsXG4gIFNUQVIsXG4gIFNUQVJUX0FOQ0hPUlxufTtcblxuLyoqXG4gKiBXaW5kb3dzIGdsb2IgcmVnZXhcbiAqL1xuXG5jb25zdCBXSU5ET1dTX0NIQVJTID0ge1xuICAuLi5QT1NJWF9DSEFSUyxcblxuICBTTEFTSF9MSVRFUkFMOiBgWyR7V0lOX1NMQVNIfV1gLFxuICBRTUFSSzogV0lOX05PX1NMQVNILFxuICBTVEFSOiBgJHtXSU5fTk9fU0xBU0h9Kj9gLFxuICBET1RTX1NMQVNIOiBgJHtET1RfTElURVJBTH17MSwyfSg/Olske1dJTl9TTEFTSH1dfCQpYCxcbiAgTk9fRE9UOiBgKD8hJHtET1RfTElURVJBTH0pYCxcbiAgTk9fRE9UUzogYCg/ISg/Ol58WyR7V0lOX1NMQVNIfV0pJHtET1RfTElURVJBTH17MSwyfSg/Olske1dJTl9TTEFTSH1dfCQpKWAsXG4gIE5PX0RPVF9TTEFTSDogYCg/ISR7RE9UX0xJVEVSQUx9ezAsMX0oPzpbJHtXSU5fU0xBU0h9XXwkKSlgLFxuICBOT19ET1RTX1NMQVNIOiBgKD8hJHtET1RfTElURVJBTH17MSwyfSg/Olske1dJTl9TTEFTSH1dfCQpKWAsXG4gIFFNQVJLX05PX0RPVDogYFteLiR7V0lOX1NMQVNIfV1gLFxuICBTVEFSVF9BTkNIT1I6IGAoPzpefFske1dJTl9TTEFTSH1dKWAsXG4gIEVORF9BTkNIT1I6IGAoPzpbJHtXSU5fU0xBU0h9XXwkKWBcbn07XG5cbi8qKlxuICogUE9TSVggQnJhY2tldCBSZWdleFxuICovXG5cbmNvbnN0IFBPU0lYX1JFR0VYX1NPVVJDRSA9IHtcbiAgYWxudW06ICdhLXpBLVowLTknLFxuICBhbHBoYTogJ2EtekEtWicsXG4gIGFzY2lpOiAnXFxcXHgwMC1cXFxceDdGJyxcbiAgYmxhbms6ICcgXFxcXHQnLFxuICBjbnRybDogJ1xcXFx4MDAtXFxcXHgxRlxcXFx4N0YnLFxuICBkaWdpdDogJzAtOScsXG4gIGdyYXBoOiAnXFxcXHgyMS1cXFxceDdFJyxcbiAgbG93ZXI6ICdhLXonLFxuICBwcmludDogJ1xcXFx4MjAtXFxcXHg3RSAnLFxuICBwdW5jdDogJ1xcXFwtIVwiIyQlJlxcJygpXFxcXCorLC4vOjs8PT4/QFtcXFxcXV5fYHt8fX4nLFxuICBzcGFjZTogJyBcXFxcdFxcXFxyXFxcXG5cXFxcdlxcXFxmJyxcbiAgdXBwZXI6ICdBLVonLFxuICB3b3JkOiAnQS1aYS16MC05XycsXG4gIHhkaWdpdDogJ0EtRmEtZjAtOSdcbn07XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBNQVhfTEVOR1RIOiAxMDI0ICogNjQsXG4gIFBPU0lYX1JFR0VYX1NPVVJDRSxcblxuICAvLyByZWd1bGFyIGV4cHJlc3Npb25zXG4gIFJFR0VYX0JBQ0tTTEFTSDogL1xcXFwoPyFbKis/XiR7fSh8KVtcXF1dKS9nLFxuICBSRUdFWF9OT05fU1BFQ0lBTF9DSEFSUzogL15bXkAhW1xcXS4sJCorP157fSgpfFxcXFwvXSsvLFxuICBSRUdFWF9TUEVDSUFMX0NIQVJTOiAvWy0qKz8uXiR7fSh8KVtcXF1dLyxcbiAgUkVHRVhfU1BFQ0lBTF9DSEFSU19CQUNLUkVGOiAvKFxcXFw/KSgoXFxXKShcXDMqKSkvZyxcbiAgUkVHRVhfU1BFQ0lBTF9DSEFSU19HTE9CQUw6IC8oWy0qKz8uXiR7fSh8KVtcXF1dKS9nLFxuICBSRUdFWF9SRU1PVkVfQkFDS1NMQVNIOiAvKD86XFxbLio/W15cXFxcXVxcXXxcXFxcKD89LikpL2csXG5cbiAgLy8gUmVwbGFjZSBnbG9icyB3aXRoIGVxdWl2YWxlbnQgcGF0dGVybnMgdG8gcmVkdWNlIHBhcnNpbmcgdGltZS5cbiAgUkVQTEFDRU1FTlRTOiB7XG4gICAgJyoqKic6ICcqJyxcbiAgICAnKiovKionOiAnKionLFxuICAgICcqKi8qKi8qKic6ICcqKidcbiAgfSxcblxuICAvLyBEaWdpdHNcbiAgQ0hBUl8wOiA0OCwgLyogMCAqL1xuICBDSEFSXzk6IDU3LCAvKiA5ICovXG5cbiAgLy8gQWxwaGFiZXQgY2hhcnMuXG4gIENIQVJfVVBQRVJDQVNFX0E6IDY1LCAvKiBBICovXG4gIENIQVJfTE9XRVJDQVNFX0E6IDk3LCAvKiBhICovXG4gIENIQVJfVVBQRVJDQVNFX1o6IDkwLCAvKiBaICovXG4gIENIQVJfTE9XRVJDQVNFX1o6IDEyMiwgLyogeiAqL1xuXG4gIENIQVJfTEVGVF9QQVJFTlRIRVNFUzogNDAsIC8qICggKi9cbiAgQ0hBUl9SSUdIVF9QQVJFTlRIRVNFUzogNDEsIC8qICkgKi9cblxuICBDSEFSX0FTVEVSSVNLOiA0MiwgLyogKiAqL1xuXG4gIC8vIE5vbi1hbHBoYWJldGljIGNoYXJzLlxuICBDSEFSX0FNUEVSU0FORDogMzgsIC8qICYgKi9cbiAgQ0hBUl9BVDogNjQsIC8qIEAgKi9cbiAgQ0hBUl9CQUNLV0FSRF9TTEFTSDogOTIsIC8qIFxcICovXG4gIENIQVJfQ0FSUklBR0VfUkVUVVJOOiAxMywgLyogXFxyICovXG4gIENIQVJfQ0lSQ1VNRkxFWF9BQ0NFTlQ6IDk0LCAvKiBeICovXG4gIENIQVJfQ09MT046IDU4LCAvKiA6ICovXG4gIENIQVJfQ09NTUE6IDQ0LCAvKiAsICovXG4gIENIQVJfRE9UOiA0NiwgLyogLiAqL1xuICBDSEFSX0RPVUJMRV9RVU9URTogMzQsIC8qIFwiICovXG4gIENIQVJfRVFVQUw6IDYxLCAvKiA9ICovXG4gIENIQVJfRVhDTEFNQVRJT05fTUFSSzogMzMsIC8qICEgKi9cbiAgQ0hBUl9GT1JNX0ZFRUQ6IDEyLCAvKiBcXGYgKi9cbiAgQ0hBUl9GT1JXQVJEX1NMQVNIOiA0NywgLyogLyAqL1xuICBDSEFSX0dSQVZFX0FDQ0VOVDogOTYsIC8qIGAgKi9cbiAgQ0hBUl9IQVNIOiAzNSwgLyogIyAqL1xuICBDSEFSX0hZUEhFTl9NSU5VUzogNDUsIC8qIC0gKi9cbiAgQ0hBUl9MRUZUX0FOR0xFX0JSQUNLRVQ6IDYwLCAvKiA8ICovXG4gIENIQVJfTEVGVF9DVVJMWV9CUkFDRTogMTIzLCAvKiB7ICovXG4gIENIQVJfTEVGVF9TUVVBUkVfQlJBQ0tFVDogOTEsIC8qIFsgKi9cbiAgQ0hBUl9MSU5FX0ZFRUQ6IDEwLCAvKiBcXG4gKi9cbiAgQ0hBUl9OT19CUkVBS19TUEFDRTogMTYwLCAvKiBcXHUwMEEwICovXG4gIENIQVJfUEVSQ0VOVDogMzcsIC8qICUgKi9cbiAgQ0hBUl9QTFVTOiA0MywgLyogKyAqL1xuICBDSEFSX1FVRVNUSU9OX01BUks6IDYzLCAvKiA/ICovXG4gIENIQVJfUklHSFRfQU5HTEVfQlJBQ0tFVDogNjIsIC8qID4gKi9cbiAgQ0hBUl9SSUdIVF9DVVJMWV9CUkFDRTogMTI1LCAvKiB9ICovXG4gIENIQVJfUklHSFRfU1FVQVJFX0JSQUNLRVQ6IDkzLCAvKiBdICovXG4gIENIQVJfU0VNSUNPTE9OOiA1OSwgLyogOyAqL1xuICBDSEFSX1NJTkdMRV9RVU9URTogMzksIC8qICcgKi9cbiAgQ0hBUl9TUEFDRTogMzIsIC8qICAgKi9cbiAgQ0hBUl9UQUI6IDksIC8qIFxcdCAqL1xuICBDSEFSX1VOREVSU0NPUkU6IDk1LCAvKiBfICovXG4gIENIQVJfVkVSVElDQUxfTElORTogMTI0LCAvKiB8ICovXG4gIENIQVJfWkVST19XSURUSF9OT0JSRUFLX1NQQUNFOiA2NTI3OSwgLyogXFx1RkVGRiAqL1xuXG4gIFNFUDogcGF0aC5zZXAsXG5cbiAgLyoqXG4gICAqIENyZWF0ZSBFWFRHTE9CX0NIQVJTXG4gICAqL1xuXG4gIGV4dGdsb2JDaGFycyhjaGFycykge1xuICAgIHJldHVybiB7XG4gICAgICAnISc6IHsgdHlwZTogJ25lZ2F0ZScsIG9wZW46ICcoPzooPyEoPzonLCBjbG9zZTogYCkpJHtjaGFycy5TVEFSfSlgIH0sXG4gICAgICAnPyc6IHsgdHlwZTogJ3FtYXJrJywgb3BlbjogJyg/OicsIGNsb3NlOiAnKT8nIH0sXG4gICAgICAnKyc6IHsgdHlwZTogJ3BsdXMnLCBvcGVuOiAnKD86JywgY2xvc2U6ICcpKycgfSxcbiAgICAgICcqJzogeyB0eXBlOiAnc3RhcicsIG9wZW46ICcoPzonLCBjbG9zZTogJykqJyB9LFxuICAgICAgJ0AnOiB7IHR5cGU6ICdhdCcsIG9wZW46ICcoPzonLCBjbG9zZTogJyknIH1cbiAgICB9O1xuICB9LFxuXG4gIC8qKlxuICAgKiBDcmVhdGUgR0xPQl9DSEFSU1xuICAgKi9cblxuICBnbG9iQ2hhcnMod2luMzIpIHtcbiAgICByZXR1cm4gd2luMzIgPT09IHRydWUgPyBXSU5ET1dTX0NIQVJTIDogUE9TSVhfQ0hBUlM7XG4gIH1cbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBwYXRoID0gcmVxdWlyZSgncGF0aCcpO1xuY29uc3Qgd2luMzIgPSBwcm9jZXNzLnBsYXRmb3JtID09PSAnd2luMzInO1xuY29uc3Qge1xuICBSRUdFWF9CQUNLU0xBU0gsXG4gIFJFR0VYX1JFTU9WRV9CQUNLU0xBU0gsXG4gIFJFR0VYX1NQRUNJQUxfQ0hBUlMsXG4gIFJFR0VYX1NQRUNJQUxfQ0hBUlNfR0xPQkFMXG59ID0gcmVxdWlyZSgnLi9jb25zdGFudHMnKTtcblxuZXhwb3J0cy5pc09iamVjdCA9IHZhbCA9PiB2YWwgIT09IG51bGwgJiYgdHlwZW9mIHZhbCA9PT0gJ29iamVjdCcgJiYgIUFycmF5LmlzQXJyYXkodmFsKTtcbmV4cG9ydHMuaGFzUmVnZXhDaGFycyA9IHN0ciA9PiBSRUdFWF9TUEVDSUFMX0NIQVJTLnRlc3Qoc3RyKTtcbmV4cG9ydHMuaXNSZWdleENoYXIgPSBzdHIgPT4gc3RyLmxlbmd0aCA9PT0gMSAmJiBleHBvcnRzLmhhc1JlZ2V4Q2hhcnMoc3RyKTtcbmV4cG9ydHMuZXNjYXBlUmVnZXggPSBzdHIgPT4gc3RyLnJlcGxhY2UoUkVHRVhfU1BFQ0lBTF9DSEFSU19HTE9CQUwsICdcXFxcJDEnKTtcbmV4cG9ydHMudG9Qb3NpeFNsYXNoZXMgPSBzdHIgPT4gc3RyLnJlcGxhY2UoUkVHRVhfQkFDS1NMQVNILCAnLycpO1xuXG5leHBvcnRzLnJlbW92ZUJhY2tzbGFzaGVzID0gc3RyID0+IHtcbiAgcmV0dXJuIHN0ci5yZXBsYWNlKFJFR0VYX1JFTU9WRV9CQUNLU0xBU0gsIG1hdGNoID0+IHtcbiAgICByZXR1cm4gbWF0Y2ggPT09ICdcXFxcJyA/ICcnIDogbWF0Y2g7XG4gIH0pO1xufTtcblxuZXhwb3J0cy5zdXBwb3J0c0xvb2tiZWhpbmRzID0gKCkgPT4ge1xuICBjb25zdCBzZWdzID0gcHJvY2Vzcy52ZXJzaW9uLnNsaWNlKDEpLnNwbGl0KCcuJykubWFwKE51bWJlcik7XG4gIGlmIChzZWdzLmxlbmd0aCA9PT0gMyAmJiBzZWdzWzBdID49IDkgfHwgKHNlZ3NbMF0gPT09IDggJiYgc2Vnc1sxXSA+PSAxMCkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59O1xuXG5leHBvcnRzLmlzV2luZG93cyA9IG9wdGlvbnMgPT4ge1xuICBpZiAob3B0aW9ucyAmJiB0eXBlb2Ygb3B0aW9ucy53aW5kb3dzID09PSAnYm9vbGVhbicpIHtcbiAgICByZXR1cm4gb3B0aW9ucy53aW5kb3dzO1xuICB9XG4gIHJldHVybiB3aW4zMiA9PT0gdHJ1ZSB8fCBwYXRoLnNlcCA9PT0gJ1xcXFwnO1xufTtcblxuZXhwb3J0cy5lc2NhcGVMYXN0ID0gKGlucHV0LCBjaGFyLCBsYXN0SWR4KSA9PiB7XG4gIGNvbnN0IGlkeCA9IGlucHV0Lmxhc3RJbmRleE9mKGNoYXIsIGxhc3RJZHgpO1xuICBpZiAoaWR4ID09PSAtMSkgcmV0dXJuIGlucHV0O1xuICBpZiAoaW5wdXRbaWR4IC0gMV0gPT09ICdcXFxcJykgcmV0dXJuIGV4cG9ydHMuZXNjYXBlTGFzdChpbnB1dCwgY2hhciwgaWR4IC0gMSk7XG4gIHJldHVybiBgJHtpbnB1dC5zbGljZSgwLCBpZHgpfVxcXFwke2lucHV0LnNsaWNlKGlkeCl9YDtcbn07XG5cbmV4cG9ydHMucmVtb3ZlUHJlZml4ID0gKGlucHV0LCBzdGF0ZSA9IHt9KSA9PiB7XG4gIGxldCBvdXRwdXQgPSBpbnB1dDtcbiAgaWYgKG91dHB1dC5zdGFydHNXaXRoKCcuLycpKSB7XG4gICAgb3V0cHV0ID0gb3V0cHV0LnNsaWNlKDIpO1xuICAgIHN0YXRlLnByZWZpeCA9ICcuLyc7XG4gIH1cbiAgcmV0dXJuIG91dHB1dDtcbn07XG5cbmV4cG9ydHMud3JhcE91dHB1dCA9IChpbnB1dCwgc3RhdGUgPSB7fSwgb3B0aW9ucyA9IHt9KSA9PiB7XG4gIGNvbnN0IHByZXBlbmQgPSBvcHRpb25zLmNvbnRhaW5zID8gJycgOiAnXic7XG4gIGNvbnN0IGFwcGVuZCA9IG9wdGlvbnMuY29udGFpbnMgPyAnJyA6ICckJztcblxuICBsZXQgb3V0cHV0ID0gYCR7cHJlcGVuZH0oPzoke2lucHV0fSkke2FwcGVuZH1gO1xuICBpZiAoc3RhdGUubmVnYXRlZCA9PT0gdHJ1ZSkge1xuICAgIG91dHB1dCA9IGAoPzpeKD8hJHtvdXRwdXR9KS4qJClgO1xuICB9XG4gIHJldHVybiBvdXRwdXQ7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcblxuY29uc3QgdXRpbHMgPSByZXF1aXJlKCcuL3V0aWxzJyk7XG5jb25zdCB7XG4gIENIQVJfQVNURVJJU0ssICAgICAgICAgICAgIC8qICogKi9cbiAgQ0hBUl9BVCwgICAgICAgICAgICAgICAgICAgLyogQCAqL1xuICBDSEFSX0JBQ0tXQVJEX1NMQVNILCAgICAgICAvKiBcXCAqL1xuICBDSEFSX0NPTU1BLCAgICAgICAgICAgICAgICAvKiAsICovXG4gIENIQVJfRE9ULCAgICAgICAgICAgICAgICAgIC8qIC4gKi9cbiAgQ0hBUl9FWENMQU1BVElPTl9NQVJLLCAgICAgLyogISAqL1xuICBDSEFSX0ZPUldBUkRfU0xBU0gsICAgICAgICAvKiAvICovXG4gIENIQVJfTEVGVF9DVVJMWV9CUkFDRSwgICAgIC8qIHsgKi9cbiAgQ0hBUl9MRUZUX1BBUkVOVEhFU0VTLCAgICAgLyogKCAqL1xuICBDSEFSX0xFRlRfU1FVQVJFX0JSQUNLRVQsICAvKiBbICovXG4gIENIQVJfUExVUywgICAgICAgICAgICAgICAgIC8qICsgKi9cbiAgQ0hBUl9RVUVTVElPTl9NQVJLLCAgICAgICAgLyogPyAqL1xuICBDSEFSX1JJR0hUX0NVUkxZX0JSQUNFLCAgICAvKiB9ICovXG4gIENIQVJfUklHSFRfUEFSRU5USEVTRVMsICAgIC8qICkgKi9cbiAgQ0hBUl9SSUdIVF9TUVVBUkVfQlJBQ0tFVCAgLyogXSAqL1xufSA9IHJlcXVpcmUoJy4vY29uc3RhbnRzJyk7XG5cbmNvbnN0IGlzUGF0aFNlcGFyYXRvciA9IGNvZGUgPT4ge1xuICByZXR1cm4gY29kZSA9PT0gQ0hBUl9GT1JXQVJEX1NMQVNIIHx8IGNvZGUgPT09IENIQVJfQkFDS1dBUkRfU0xBU0g7XG59O1xuXG5jb25zdCBkZXB0aCA9IHRva2VuID0+IHtcbiAgaWYgKHRva2VuLmlzUHJlZml4ICE9PSB0cnVlKSB7XG4gICAgdG9rZW4uZGVwdGggPSB0b2tlbi5pc0dsb2JzdGFyID8gSW5maW5pdHkgOiAxO1xuICB9XG59O1xuXG4vKipcbiAqIFF1aWNrbHkgc2NhbnMgYSBnbG9iIHBhdHRlcm4gYW5kIHJldHVybnMgYW4gb2JqZWN0IHdpdGggYSBoYW5kZnVsIG9mXG4gKiB1c2VmdWwgcHJvcGVydGllcywgbGlrZSBgaXNHbG9iYCwgYHBhdGhgICh0aGUgbGVhZGluZyBub24tZ2xvYiwgaWYgaXQgZXhpc3RzKSxcbiAqIGBnbG9iYCAodGhlIGFjdHVhbCBwYXR0ZXJuKSwgYG5lZ2F0ZWRgICh0cnVlIGlmIHRoZSBwYXRoIHN0YXJ0cyB3aXRoIGAhYCBidXQgbm90XG4gKiB3aXRoIGAhKGApIGFuZCBgbmVnYXRlZEV4dGdsb2JgICh0cnVlIGlmIHRoZSBwYXRoIHN0YXJ0cyB3aXRoIGAhKGApLlxuICpcbiAqIGBgYGpzXG4gKiBjb25zdCBwbSA9IHJlcXVpcmUoJ3BpY29tYXRjaCcpO1xuICogY29uc29sZS5sb2cocG0uc2NhbignZm9vL2Jhci8qLmpzJykpO1xuICogeyBpc0dsb2I6IHRydWUsIGlucHV0OiAnZm9vL2Jhci8qLmpzJywgYmFzZTogJ2Zvby9iYXInLCBnbG9iOiAnKi5qcycgfVxuICogYGBgXG4gKiBAcGFyYW0ge1N0cmluZ30gYHN0cmBcbiAqIEBwYXJhbSB7T2JqZWN0fSBgb3B0aW9uc2BcbiAqIEByZXR1cm4ge09iamVjdH0gUmV0dXJucyBhbiBvYmplY3Qgd2l0aCB0b2tlbnMgYW5kIHJlZ2V4IHNvdXJjZSBzdHJpbmcuXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbmNvbnN0IHNjYW4gPSAoaW5wdXQsIG9wdGlvbnMpID0+IHtcbiAgY29uc3Qgb3B0cyA9IG9wdGlvbnMgfHwge307XG5cbiAgY29uc3QgbGVuZ3RoID0gaW5wdXQubGVuZ3RoIC0gMTtcbiAgY29uc3Qgc2NhblRvRW5kID0gb3B0cy5wYXJ0cyA9PT0gdHJ1ZSB8fCBvcHRzLnNjYW5Ub0VuZCA9PT0gdHJ1ZTtcbiAgY29uc3Qgc2xhc2hlcyA9IFtdO1xuICBjb25zdCB0b2tlbnMgPSBbXTtcbiAgY29uc3QgcGFydHMgPSBbXTtcblxuICBsZXQgc3RyID0gaW5wdXQ7XG4gIGxldCBpbmRleCA9IC0xO1xuICBsZXQgc3RhcnQgPSAwO1xuICBsZXQgbGFzdEluZGV4ID0gMDtcbiAgbGV0IGlzQnJhY2UgPSBmYWxzZTtcbiAgbGV0IGlzQnJhY2tldCA9IGZhbHNlO1xuICBsZXQgaXNHbG9iID0gZmFsc2U7XG4gIGxldCBpc0V4dGdsb2IgPSBmYWxzZTtcbiAgbGV0IGlzR2xvYnN0YXIgPSBmYWxzZTtcbiAgbGV0IGJyYWNlRXNjYXBlZCA9IGZhbHNlO1xuICBsZXQgYmFja3NsYXNoZXMgPSBmYWxzZTtcbiAgbGV0IG5lZ2F0ZWQgPSBmYWxzZTtcbiAgbGV0IG5lZ2F0ZWRFeHRnbG9iID0gZmFsc2U7XG4gIGxldCBmaW5pc2hlZCA9IGZhbHNlO1xuICBsZXQgYnJhY2VzID0gMDtcbiAgbGV0IHByZXY7XG4gIGxldCBjb2RlO1xuICBsZXQgdG9rZW4gPSB7IHZhbHVlOiAnJywgZGVwdGg6IDAsIGlzR2xvYjogZmFsc2UgfTtcblxuICBjb25zdCBlb3MgPSAoKSA9PiBpbmRleCA+PSBsZW5ndGg7XG4gIGNvbnN0IHBlZWsgPSAoKSA9PiBzdHIuY2hhckNvZGVBdChpbmRleCArIDEpO1xuICBjb25zdCBhZHZhbmNlID0gKCkgPT4ge1xuICAgIHByZXYgPSBjb2RlO1xuICAgIHJldHVybiBzdHIuY2hhckNvZGVBdCgrK2luZGV4KTtcbiAgfTtcblxuICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICBjb2RlID0gYWR2YW5jZSgpO1xuICAgIGxldCBuZXh0O1xuXG4gICAgaWYgKGNvZGUgPT09IENIQVJfQkFDS1dBUkRfU0xBU0gpIHtcbiAgICAgIGJhY2tzbGFzaGVzID0gdG9rZW4uYmFja3NsYXNoZXMgPSB0cnVlO1xuICAgICAgY29kZSA9IGFkdmFuY2UoKTtcblxuICAgICAgaWYgKGNvZGUgPT09IENIQVJfTEVGVF9DVVJMWV9CUkFDRSkge1xuICAgICAgICBicmFjZUVzY2FwZWQgPSB0cnVlO1xuICAgICAgfVxuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKGJyYWNlRXNjYXBlZCA9PT0gdHJ1ZSB8fCBjb2RlID09PSBDSEFSX0xFRlRfQ1VSTFlfQlJBQ0UpIHtcbiAgICAgIGJyYWNlcysrO1xuXG4gICAgICB3aGlsZSAoZW9zKCkgIT09IHRydWUgJiYgKGNvZGUgPSBhZHZhbmNlKCkpKSB7XG4gICAgICAgIGlmIChjb2RlID09PSBDSEFSX0JBQ0tXQVJEX1NMQVNIKSB7XG4gICAgICAgICAgYmFja3NsYXNoZXMgPSB0b2tlbi5iYWNrc2xhc2hlcyA9IHRydWU7XG4gICAgICAgICAgYWR2YW5jZSgpO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNvZGUgPT09IENIQVJfTEVGVF9DVVJMWV9CUkFDRSkge1xuICAgICAgICAgIGJyYWNlcysrO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGJyYWNlRXNjYXBlZCAhPT0gdHJ1ZSAmJiBjb2RlID09PSBDSEFSX0RPVCAmJiAoY29kZSA9IGFkdmFuY2UoKSkgPT09IENIQVJfRE9UKSB7XG4gICAgICAgICAgaXNCcmFjZSA9IHRva2VuLmlzQnJhY2UgPSB0cnVlO1xuICAgICAgICAgIGlzR2xvYiA9IHRva2VuLmlzR2xvYiA9IHRydWU7XG4gICAgICAgICAgZmluaXNoZWQgPSB0cnVlO1xuXG4gICAgICAgICAgaWYgKHNjYW5Ub0VuZCA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYnJhY2VFc2NhcGVkICE9PSB0cnVlICYmIGNvZGUgPT09IENIQVJfQ09NTUEpIHtcbiAgICAgICAgICBpc0JyYWNlID0gdG9rZW4uaXNCcmFjZSA9IHRydWU7XG4gICAgICAgICAgaXNHbG9iID0gdG9rZW4uaXNHbG9iID0gdHJ1ZTtcbiAgICAgICAgICBmaW5pc2hlZCA9IHRydWU7XG5cbiAgICAgICAgICBpZiAoc2NhblRvRW5kID09PSB0cnVlKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjb2RlID09PSBDSEFSX1JJR0hUX0NVUkxZX0JSQUNFKSB7XG4gICAgICAgICAgYnJhY2VzLS07XG5cbiAgICAgICAgICBpZiAoYnJhY2VzID09PSAwKSB7XG4gICAgICAgICAgICBicmFjZUVzY2FwZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIGlzQnJhY2UgPSB0b2tlbi5pc0JyYWNlID0gdHJ1ZTtcbiAgICAgICAgICAgIGZpbmlzaGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoc2NhblRvRW5kID09PSB0cnVlKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBpZiAoY29kZSA9PT0gQ0hBUl9GT1JXQVJEX1NMQVNIKSB7XG4gICAgICBzbGFzaGVzLnB1c2goaW5kZXgpO1xuICAgICAgdG9rZW5zLnB1c2godG9rZW4pO1xuICAgICAgdG9rZW4gPSB7IHZhbHVlOiAnJywgZGVwdGg6IDAsIGlzR2xvYjogZmFsc2UgfTtcblxuICAgICAgaWYgKGZpbmlzaGVkID09PSB0cnVlKSBjb250aW51ZTtcbiAgICAgIGlmIChwcmV2ID09PSBDSEFSX0RPVCAmJiBpbmRleCA9PT0gKHN0YXJ0ICsgMSkpIHtcbiAgICAgICAgc3RhcnQgKz0gMjtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGxhc3RJbmRleCA9IGluZGV4ICsgMTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmIChvcHRzLm5vZXh0ICE9PSB0cnVlKSB7XG4gICAgICBjb25zdCBpc0V4dGdsb2JDaGFyID0gY29kZSA9PT0gQ0hBUl9QTFVTXG4gICAgICAgIHx8IGNvZGUgPT09IENIQVJfQVRcbiAgICAgICAgfHwgY29kZSA9PT0gQ0hBUl9BU1RFUklTS1xuICAgICAgICB8fCBjb2RlID09PSBDSEFSX1FVRVNUSU9OX01BUktcbiAgICAgICAgfHwgY29kZSA9PT0gQ0hBUl9FWENMQU1BVElPTl9NQVJLO1xuXG4gICAgICBpZiAoaXNFeHRnbG9iQ2hhciA9PT0gdHJ1ZSAmJiBwZWVrKCkgPT09IENIQVJfTEVGVF9QQVJFTlRIRVNFUykge1xuICAgICAgICBpc0dsb2IgPSB0b2tlbi5pc0dsb2IgPSB0cnVlO1xuICAgICAgICBpc0V4dGdsb2IgPSB0b2tlbi5pc0V4dGdsb2IgPSB0cnVlO1xuICAgICAgICBmaW5pc2hlZCA9IHRydWU7XG4gICAgICAgIGlmIChjb2RlID09PSBDSEFSX0VYQ0xBTUFUSU9OX01BUksgJiYgaW5kZXggPT09IHN0YXJ0KSB7XG4gICAgICAgICAgbmVnYXRlZEV4dGdsb2IgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHNjYW5Ub0VuZCA9PT0gdHJ1ZSkge1xuICAgICAgICAgIHdoaWxlIChlb3MoKSAhPT0gdHJ1ZSAmJiAoY29kZSA9IGFkdmFuY2UoKSkpIHtcbiAgICAgICAgICAgIGlmIChjb2RlID09PSBDSEFSX0JBQ0tXQVJEX1NMQVNIKSB7XG4gICAgICAgICAgICAgIGJhY2tzbGFzaGVzID0gdG9rZW4uYmFja3NsYXNoZXMgPSB0cnVlO1xuICAgICAgICAgICAgICBjb2RlID0gYWR2YW5jZSgpO1xuICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGNvZGUgPT09IENIQVJfUklHSFRfUEFSRU5USEVTRVMpIHtcbiAgICAgICAgICAgICAgaXNHbG9iID0gdG9rZW4uaXNHbG9iID0gdHJ1ZTtcbiAgICAgICAgICAgICAgZmluaXNoZWQgPSB0cnVlO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGNvZGUgPT09IENIQVJfQVNURVJJU0spIHtcbiAgICAgIGlmIChwcmV2ID09PSBDSEFSX0FTVEVSSVNLKSBpc0dsb2JzdGFyID0gdG9rZW4uaXNHbG9ic3RhciA9IHRydWU7XG4gICAgICBpc0dsb2IgPSB0b2tlbi5pc0dsb2IgPSB0cnVlO1xuICAgICAgZmluaXNoZWQgPSB0cnVlO1xuXG4gICAgICBpZiAoc2NhblRvRW5kID09PSB0cnVlKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgaWYgKGNvZGUgPT09IENIQVJfUVVFU1RJT05fTUFSSykge1xuICAgICAgaXNHbG9iID0gdG9rZW4uaXNHbG9iID0gdHJ1ZTtcbiAgICAgIGZpbmlzaGVkID0gdHJ1ZTtcblxuICAgICAgaWYgKHNjYW5Ub0VuZCA9PT0gdHJ1ZSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGlmIChjb2RlID09PSBDSEFSX0xFRlRfU1FVQVJFX0JSQUNLRVQpIHtcbiAgICAgIHdoaWxlIChlb3MoKSAhPT0gdHJ1ZSAmJiAobmV4dCA9IGFkdmFuY2UoKSkpIHtcbiAgICAgICAgaWYgKG5leHQgPT09IENIQVJfQkFDS1dBUkRfU0xBU0gpIHtcbiAgICAgICAgICBiYWNrc2xhc2hlcyA9IHRva2VuLmJhY2tzbGFzaGVzID0gdHJ1ZTtcbiAgICAgICAgICBhZHZhbmNlKCk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobmV4dCA9PT0gQ0hBUl9SSUdIVF9TUVVBUkVfQlJBQ0tFVCkge1xuICAgICAgICAgIGlzQnJhY2tldCA9IHRva2VuLmlzQnJhY2tldCA9IHRydWU7XG4gICAgICAgICAgaXNHbG9iID0gdG9rZW4uaXNHbG9iID0gdHJ1ZTtcbiAgICAgICAgICBmaW5pc2hlZCA9IHRydWU7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHNjYW5Ub0VuZCA9PT0gdHJ1ZSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgaWYgKG9wdHMubm9uZWdhdGUgIT09IHRydWUgJiYgY29kZSA9PT0gQ0hBUl9FWENMQU1BVElPTl9NQVJLICYmIGluZGV4ID09PSBzdGFydCkge1xuICAgICAgbmVnYXRlZCA9IHRva2VuLm5lZ2F0ZWQgPSB0cnVlO1xuICAgICAgc3RhcnQrKztcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmIChvcHRzLm5vcGFyZW4gIT09IHRydWUgJiYgY29kZSA9PT0gQ0hBUl9MRUZUX1BBUkVOVEhFU0VTKSB7XG4gICAgICBpc0dsb2IgPSB0b2tlbi5pc0dsb2IgPSB0cnVlO1xuXG4gICAgICBpZiAoc2NhblRvRW5kID09PSB0cnVlKSB7XG4gICAgICAgIHdoaWxlIChlb3MoKSAhPT0gdHJ1ZSAmJiAoY29kZSA9IGFkdmFuY2UoKSkpIHtcbiAgICAgICAgICBpZiAoY29kZSA9PT0gQ0hBUl9MRUZUX1BBUkVOVEhFU0VTKSB7XG4gICAgICAgICAgICBiYWNrc2xhc2hlcyA9IHRva2VuLmJhY2tzbGFzaGVzID0gdHJ1ZTtcbiAgICAgICAgICAgIGNvZGUgPSBhZHZhbmNlKCk7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoY29kZSA9PT0gQ0hBUl9SSUdIVF9QQVJFTlRIRVNFUykge1xuICAgICAgICAgICAgZmluaXNoZWQgPSB0cnVlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgaWYgKGlzR2xvYiA9PT0gdHJ1ZSkge1xuICAgICAgZmluaXNoZWQgPSB0cnVlO1xuXG4gICAgICBpZiAoc2NhblRvRW5kID09PSB0cnVlKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBpZiAob3B0cy5ub2V4dCA9PT0gdHJ1ZSkge1xuICAgIGlzRXh0Z2xvYiA9IGZhbHNlO1xuICAgIGlzR2xvYiA9IGZhbHNlO1xuICB9XG5cbiAgbGV0IGJhc2UgPSBzdHI7XG4gIGxldCBwcmVmaXggPSAnJztcbiAgbGV0IGdsb2IgPSAnJztcblxuICBpZiAoc3RhcnQgPiAwKSB7XG4gICAgcHJlZml4ID0gc3RyLnNsaWNlKDAsIHN0YXJ0KTtcbiAgICBzdHIgPSBzdHIuc2xpY2Uoc3RhcnQpO1xuICAgIGxhc3RJbmRleCAtPSBzdGFydDtcbiAgfVxuXG4gIGlmIChiYXNlICYmIGlzR2xvYiA9PT0gdHJ1ZSAmJiBsYXN0SW5kZXggPiAwKSB7XG4gICAgYmFzZSA9IHN0ci5zbGljZSgwLCBsYXN0SW5kZXgpO1xuICAgIGdsb2IgPSBzdHIuc2xpY2UobGFzdEluZGV4KTtcbiAgfSBlbHNlIGlmIChpc0dsb2IgPT09IHRydWUpIHtcbiAgICBiYXNlID0gJyc7XG4gICAgZ2xvYiA9IHN0cjtcbiAgfSBlbHNlIHtcbiAgICBiYXNlID0gc3RyO1xuICB9XG5cbiAgaWYgKGJhc2UgJiYgYmFzZSAhPT0gJycgJiYgYmFzZSAhPT0gJy8nICYmIGJhc2UgIT09IHN0cikge1xuICAgIGlmIChpc1BhdGhTZXBhcmF0b3IoYmFzZS5jaGFyQ29kZUF0KGJhc2UubGVuZ3RoIC0gMSkpKSB7XG4gICAgICBiYXNlID0gYmFzZS5zbGljZSgwLCAtMSk7XG4gICAgfVxuICB9XG5cbiAgaWYgKG9wdHMudW5lc2NhcGUgPT09IHRydWUpIHtcbiAgICBpZiAoZ2xvYikgZ2xvYiA9IHV0aWxzLnJlbW92ZUJhY2tzbGFzaGVzKGdsb2IpO1xuXG4gICAgaWYgKGJhc2UgJiYgYmFja3NsYXNoZXMgPT09IHRydWUpIHtcbiAgICAgIGJhc2UgPSB1dGlscy5yZW1vdmVCYWNrc2xhc2hlcyhiYXNlKTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBzdGF0ZSA9IHtcbiAgICBwcmVmaXgsXG4gICAgaW5wdXQsXG4gICAgc3RhcnQsXG4gICAgYmFzZSxcbiAgICBnbG9iLFxuICAgIGlzQnJhY2UsXG4gICAgaXNCcmFja2V0LFxuICAgIGlzR2xvYixcbiAgICBpc0V4dGdsb2IsXG4gICAgaXNHbG9ic3RhcixcbiAgICBuZWdhdGVkLFxuICAgIG5lZ2F0ZWRFeHRnbG9iXG4gIH07XG5cbiAgaWYgKG9wdHMudG9rZW5zID09PSB0cnVlKSB7XG4gICAgc3RhdGUubWF4RGVwdGggPSAwO1xuICAgIGlmICghaXNQYXRoU2VwYXJhdG9yKGNvZGUpKSB7XG4gICAgICB0b2tlbnMucHVzaCh0b2tlbik7XG4gICAgfVxuICAgIHN0YXRlLnRva2VucyA9IHRva2VucztcbiAgfVxuXG4gIGlmIChvcHRzLnBhcnRzID09PSB0cnVlIHx8IG9wdHMudG9rZW5zID09PSB0cnVlKSB7XG4gICAgbGV0IHByZXZJbmRleDtcblxuICAgIGZvciAobGV0IGlkeCA9IDA7IGlkeCA8IHNsYXNoZXMubGVuZ3RoOyBpZHgrKykge1xuICAgICAgY29uc3QgbiA9IHByZXZJbmRleCA/IHByZXZJbmRleCArIDEgOiBzdGFydDtcbiAgICAgIGNvbnN0IGkgPSBzbGFzaGVzW2lkeF07XG4gICAgICBjb25zdCB2YWx1ZSA9IGlucHV0LnNsaWNlKG4sIGkpO1xuICAgICAgaWYgKG9wdHMudG9rZW5zKSB7XG4gICAgICAgIGlmIChpZHggPT09IDAgJiYgc3RhcnQgIT09IDApIHtcbiAgICAgICAgICB0b2tlbnNbaWR4XS5pc1ByZWZpeCA9IHRydWU7XG4gICAgICAgICAgdG9rZW5zW2lkeF0udmFsdWUgPSBwcmVmaXg7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdG9rZW5zW2lkeF0udmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBkZXB0aCh0b2tlbnNbaWR4XSk7XG4gICAgICAgIHN0YXRlLm1heERlcHRoICs9IHRva2Vuc1tpZHhdLmRlcHRoO1xuICAgICAgfVxuICAgICAgaWYgKGlkeCAhPT0gMCB8fCB2YWx1ZSAhPT0gJycpIHtcbiAgICAgICAgcGFydHMucHVzaCh2YWx1ZSk7XG4gICAgICB9XG4gICAgICBwcmV2SW5kZXggPSBpO1xuICAgIH1cblxuICAgIGlmIChwcmV2SW5kZXggJiYgcHJldkluZGV4ICsgMSA8IGlucHV0Lmxlbmd0aCkge1xuICAgICAgY29uc3QgdmFsdWUgPSBpbnB1dC5zbGljZShwcmV2SW5kZXggKyAxKTtcbiAgICAgIHBhcnRzLnB1c2godmFsdWUpO1xuXG4gICAgICBpZiAob3B0cy50b2tlbnMpIHtcbiAgICAgICAgdG9rZW5zW3Rva2Vucy5sZW5ndGggLSAxXS52YWx1ZSA9IHZhbHVlO1xuICAgICAgICBkZXB0aCh0b2tlbnNbdG9rZW5zLmxlbmd0aCAtIDFdKTtcbiAgICAgICAgc3RhdGUubWF4RGVwdGggKz0gdG9rZW5zW3Rva2Vucy5sZW5ndGggLSAxXS5kZXB0aDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBzdGF0ZS5zbGFzaGVzID0gc2xhc2hlcztcbiAgICBzdGF0ZS5wYXJ0cyA9IHBhcnRzO1xuICB9XG5cbiAgcmV0dXJuIHN0YXRlO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBzY2FuO1xuIiwgIid1c2Ugc3RyaWN0JztcblxuY29uc3QgY29uc3RhbnRzID0gcmVxdWlyZSgnLi9jb25zdGFudHMnKTtcbmNvbnN0IHV0aWxzID0gcmVxdWlyZSgnLi91dGlscycpO1xuXG4vKipcbiAqIENvbnN0YW50c1xuICovXG5cbmNvbnN0IHtcbiAgTUFYX0xFTkdUSCxcbiAgUE9TSVhfUkVHRVhfU09VUkNFLFxuICBSRUdFWF9OT05fU1BFQ0lBTF9DSEFSUyxcbiAgUkVHRVhfU1BFQ0lBTF9DSEFSU19CQUNLUkVGLFxuICBSRVBMQUNFTUVOVFNcbn0gPSBjb25zdGFudHM7XG5cbi8qKlxuICogSGVscGVyc1xuICovXG5cbmNvbnN0IGV4cGFuZFJhbmdlID0gKGFyZ3MsIG9wdGlvbnMpID0+IHtcbiAgaWYgKHR5cGVvZiBvcHRpb25zLmV4cGFuZFJhbmdlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIG9wdGlvbnMuZXhwYW5kUmFuZ2UoLi4uYXJncywgb3B0aW9ucyk7XG4gIH1cblxuICBhcmdzLnNvcnQoKTtcbiAgY29uc3QgdmFsdWUgPSBgWyR7YXJncy5qb2luKCctJyl9XWA7XG5cbiAgdHJ5IHtcbiAgICAvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbmV3ICovXG4gICAgbmV3IFJlZ0V4cCh2YWx1ZSk7XG4gIH0gY2F0Y2ggKGV4KSB7XG4gICAgcmV0dXJuIGFyZ3MubWFwKHYgPT4gdXRpbHMuZXNjYXBlUmVnZXgodikpLmpvaW4oJy4uJyk7XG4gIH1cblxuICByZXR1cm4gdmFsdWU7XG59O1xuXG4vKipcbiAqIENyZWF0ZSB0aGUgbWVzc2FnZSBmb3IgYSBzeW50YXggZXJyb3JcbiAqL1xuXG5jb25zdCBzeW50YXhFcnJvciA9ICh0eXBlLCBjaGFyKSA9PiB7XG4gIHJldHVybiBgTWlzc2luZyAke3R5cGV9OiBcIiR7Y2hhcn1cIiAtIHVzZSBcIlxcXFxcXFxcJHtjaGFyfVwiIHRvIG1hdGNoIGxpdGVyYWwgY2hhcmFjdGVyc2A7XG59O1xuXG4vKipcbiAqIFBhcnNlIHRoZSBnaXZlbiBpbnB1dCBzdHJpbmcuXG4gKiBAcGFyYW0ge1N0cmluZ30gaW5wdXRcbiAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zXG4gKiBAcmV0dXJuIHtPYmplY3R9XG4gKi9cblxuY29uc3QgcGFyc2UgPSAoaW5wdXQsIG9wdGlvbnMpID0+IHtcbiAgaWYgKHR5cGVvZiBpbnB1dCAhPT0gJ3N0cmluZycpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCBhIHN0cmluZycpO1xuICB9XG5cbiAgaW5wdXQgPSBSRVBMQUNFTUVOVFNbaW5wdXRdIHx8IGlucHV0O1xuXG4gIGNvbnN0IG9wdHMgPSB7IC4uLm9wdGlvbnMgfTtcbiAgY29uc3QgbWF4ID0gdHlwZW9mIG9wdHMubWF4TGVuZ3RoID09PSAnbnVtYmVyJyA/IE1hdGgubWluKE1BWF9MRU5HVEgsIG9wdHMubWF4TGVuZ3RoKSA6IE1BWF9MRU5HVEg7XG5cbiAgbGV0IGxlbiA9IGlucHV0Lmxlbmd0aDtcbiAgaWYgKGxlbiA+IG1heCkge1xuICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihgSW5wdXQgbGVuZ3RoOiAke2xlbn0sIGV4Y2VlZHMgbWF4aW11bSBhbGxvd2VkIGxlbmd0aDogJHttYXh9YCk7XG4gIH1cblxuICBjb25zdCBib3MgPSB7IHR5cGU6ICdib3MnLCB2YWx1ZTogJycsIG91dHB1dDogb3B0cy5wcmVwZW5kIHx8ICcnIH07XG4gIGNvbnN0IHRva2VucyA9IFtib3NdO1xuXG4gIGNvbnN0IGNhcHR1cmUgPSBvcHRzLmNhcHR1cmUgPyAnJyA6ICc/Oic7XG4gIGNvbnN0IHdpbjMyID0gdXRpbHMuaXNXaW5kb3dzKG9wdGlvbnMpO1xuXG4gIC8vIGNyZWF0ZSBjb25zdGFudHMgYmFzZWQgb24gcGxhdGZvcm0sIGZvciB3aW5kb3dzIG9yIHBvc2l4XG4gIGNvbnN0IFBMQVRGT1JNX0NIQVJTID0gY29uc3RhbnRzLmdsb2JDaGFycyh3aW4zMik7XG4gIGNvbnN0IEVYVEdMT0JfQ0hBUlMgPSBjb25zdGFudHMuZXh0Z2xvYkNoYXJzKFBMQVRGT1JNX0NIQVJTKTtcblxuICBjb25zdCB7XG4gICAgRE9UX0xJVEVSQUwsXG4gICAgUExVU19MSVRFUkFMLFxuICAgIFNMQVNIX0xJVEVSQUwsXG4gICAgT05FX0NIQVIsXG4gICAgRE9UU19TTEFTSCxcbiAgICBOT19ET1QsXG4gICAgTk9fRE9UX1NMQVNILFxuICAgIE5PX0RPVFNfU0xBU0gsXG4gICAgUU1BUkssXG4gICAgUU1BUktfTk9fRE9ULFxuICAgIFNUQVIsXG4gICAgU1RBUlRfQU5DSE9SXG4gIH0gPSBQTEFURk9STV9DSEFSUztcblxuICBjb25zdCBnbG9ic3RhciA9IG9wdHMgPT4ge1xuICAgIHJldHVybiBgKCR7Y2FwdHVyZX0oPzooPyEke1NUQVJUX0FOQ0hPUn0ke29wdHMuZG90ID8gRE9UU19TTEFTSCA6IERPVF9MSVRFUkFMfSkuKSo/KWA7XG4gIH07XG5cbiAgY29uc3Qgbm9kb3QgPSBvcHRzLmRvdCA/ICcnIDogTk9fRE9UO1xuICBjb25zdCBxbWFya05vRG90ID0gb3B0cy5kb3QgPyBRTUFSSyA6IFFNQVJLX05PX0RPVDtcbiAgbGV0IHN0YXIgPSBvcHRzLmJhc2ggPT09IHRydWUgPyBnbG9ic3RhcihvcHRzKSA6IFNUQVI7XG5cbiAgaWYgKG9wdHMuY2FwdHVyZSkge1xuICAgIHN0YXIgPSBgKCR7c3Rhcn0pYDtcbiAgfVxuXG4gIC8vIG1pbmltYXRjaCBvcHRpb25zIHN1cHBvcnRcbiAgaWYgKHR5cGVvZiBvcHRzLm5vZXh0ID09PSAnYm9vbGVhbicpIHtcbiAgICBvcHRzLm5vZXh0Z2xvYiA9IG9wdHMubm9leHQ7XG4gIH1cblxuICBjb25zdCBzdGF0ZSA9IHtcbiAgICBpbnB1dCxcbiAgICBpbmRleDogLTEsXG4gICAgc3RhcnQ6IDAsXG4gICAgZG90OiBvcHRzLmRvdCA9PT0gdHJ1ZSxcbiAgICBjb25zdW1lZDogJycsXG4gICAgb3V0cHV0OiAnJyxcbiAgICBwcmVmaXg6ICcnLFxuICAgIGJhY2t0cmFjazogZmFsc2UsXG4gICAgbmVnYXRlZDogZmFsc2UsXG4gICAgYnJhY2tldHM6IDAsXG4gICAgYnJhY2VzOiAwLFxuICAgIHBhcmVuczogMCxcbiAgICBxdW90ZXM6IDAsXG4gICAgZ2xvYnN0YXI6IGZhbHNlLFxuICAgIHRva2Vuc1xuICB9O1xuXG4gIGlucHV0ID0gdXRpbHMucmVtb3ZlUHJlZml4KGlucHV0LCBzdGF0ZSk7XG4gIGxlbiA9IGlucHV0Lmxlbmd0aDtcblxuICBjb25zdCBleHRnbG9icyA9IFtdO1xuICBjb25zdCBicmFjZXMgPSBbXTtcbiAgY29uc3Qgc3RhY2sgPSBbXTtcbiAgbGV0IHByZXYgPSBib3M7XG4gIGxldCB2YWx1ZTtcblxuICAvKipcbiAgICogVG9rZW5pemluZyBoZWxwZXJzXG4gICAqL1xuXG4gIGNvbnN0IGVvcyA9ICgpID0+IHN0YXRlLmluZGV4ID09PSBsZW4gLSAxO1xuICBjb25zdCBwZWVrID0gc3RhdGUucGVlayA9IChuID0gMSkgPT4gaW5wdXRbc3RhdGUuaW5kZXggKyBuXTtcbiAgY29uc3QgYWR2YW5jZSA9IHN0YXRlLmFkdmFuY2UgPSAoKSA9PiBpbnB1dFsrK3N0YXRlLmluZGV4XSB8fCAnJztcbiAgY29uc3QgcmVtYWluaW5nID0gKCkgPT4gaW5wdXQuc2xpY2Uoc3RhdGUuaW5kZXggKyAxKTtcbiAgY29uc3QgY29uc3VtZSA9ICh2YWx1ZSA9ICcnLCBudW0gPSAwKSA9PiB7XG4gICAgc3RhdGUuY29uc3VtZWQgKz0gdmFsdWU7XG4gICAgc3RhdGUuaW5kZXggKz0gbnVtO1xuICB9O1xuXG4gIGNvbnN0IGFwcGVuZCA9IHRva2VuID0+IHtcbiAgICBzdGF0ZS5vdXRwdXQgKz0gdG9rZW4ub3V0cHV0ICE9IG51bGwgPyB0b2tlbi5vdXRwdXQgOiB0b2tlbi52YWx1ZTtcbiAgICBjb25zdW1lKHRva2VuLnZhbHVlKTtcbiAgfTtcblxuICBjb25zdCBuZWdhdGUgPSAoKSA9PiB7XG4gICAgbGV0IGNvdW50ID0gMTtcblxuICAgIHdoaWxlIChwZWVrKCkgPT09ICchJyAmJiAocGVlaygyKSAhPT0gJygnIHx8IHBlZWsoMykgPT09ICc/JykpIHtcbiAgICAgIGFkdmFuY2UoKTtcbiAgICAgIHN0YXRlLnN0YXJ0Kys7XG4gICAgICBjb3VudCsrO1xuICAgIH1cblxuICAgIGlmIChjb3VudCAlIDIgPT09IDApIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBzdGF0ZS5uZWdhdGVkID0gdHJ1ZTtcbiAgICBzdGF0ZS5zdGFydCsrO1xuICAgIHJldHVybiB0cnVlO1xuICB9O1xuXG4gIGNvbnN0IGluY3JlbWVudCA9IHR5cGUgPT4ge1xuICAgIHN0YXRlW3R5cGVdKys7XG4gICAgc3RhY2sucHVzaCh0eXBlKTtcbiAgfTtcblxuICBjb25zdCBkZWNyZW1lbnQgPSB0eXBlID0+IHtcbiAgICBzdGF0ZVt0eXBlXS0tO1xuICAgIHN0YWNrLnBvcCgpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBQdXNoIHRva2VucyBvbnRvIHRoZSB0b2tlbnMgYXJyYXkuIFRoaXMgaGVscGVyIHNwZWVkcyB1cFxuICAgKiB0b2tlbml6aW5nIGJ5IDEpIGhlbHBpbmcgdXMgYXZvaWQgYmFja3RyYWNraW5nIGFzIG11Y2ggYXMgcG9zc2libGUsXG4gICAqIGFuZCAyKSBoZWxwaW5nIHVzIGF2b2lkIGNyZWF0aW5nIGV4dHJhIHRva2VucyB3aGVuIGNvbnNlY3V0aXZlXG4gICAqIGNoYXJhY3RlcnMgYXJlIHBsYWluIHRleHQuIFRoaXMgaW1wcm92ZXMgcGVyZm9ybWFuY2UgYW5kIHNpbXBsaWZpZXNcbiAgICogbG9va2JlaGluZHMuXG4gICAqL1xuXG4gIGNvbnN0IHB1c2ggPSB0b2sgPT4ge1xuICAgIGlmIChwcmV2LnR5cGUgPT09ICdnbG9ic3RhcicpIHtcbiAgICAgIGNvbnN0IGlzQnJhY2UgPSBzdGF0ZS5icmFjZXMgPiAwICYmICh0b2sudHlwZSA9PT0gJ2NvbW1hJyB8fCB0b2sudHlwZSA9PT0gJ2JyYWNlJyk7XG4gICAgICBjb25zdCBpc0V4dGdsb2IgPSB0b2suZXh0Z2xvYiA9PT0gdHJ1ZSB8fCAoZXh0Z2xvYnMubGVuZ3RoICYmICh0b2sudHlwZSA9PT0gJ3BpcGUnIHx8IHRvay50eXBlID09PSAncGFyZW4nKSk7XG5cbiAgICAgIGlmICh0b2sudHlwZSAhPT0gJ3NsYXNoJyAmJiB0b2sudHlwZSAhPT0gJ3BhcmVuJyAmJiAhaXNCcmFjZSAmJiAhaXNFeHRnbG9iKSB7XG4gICAgICAgIHN0YXRlLm91dHB1dCA9IHN0YXRlLm91dHB1dC5zbGljZSgwLCAtcHJldi5vdXRwdXQubGVuZ3RoKTtcbiAgICAgICAgcHJldi50eXBlID0gJ3N0YXInO1xuICAgICAgICBwcmV2LnZhbHVlID0gJyonO1xuICAgICAgICBwcmV2Lm91dHB1dCA9IHN0YXI7XG4gICAgICAgIHN0YXRlLm91dHB1dCArPSBwcmV2Lm91dHB1dDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZXh0Z2xvYnMubGVuZ3RoICYmIHRvay50eXBlICE9PSAncGFyZW4nKSB7XG4gICAgICBleHRnbG9ic1tleHRnbG9icy5sZW5ndGggLSAxXS5pbm5lciArPSB0b2sudmFsdWU7XG4gICAgfVxuXG4gICAgaWYgKHRvay52YWx1ZSB8fCB0b2sub3V0cHV0KSBhcHBlbmQodG9rKTtcbiAgICBpZiAocHJldiAmJiBwcmV2LnR5cGUgPT09ICd0ZXh0JyAmJiB0b2sudHlwZSA9PT0gJ3RleHQnKSB7XG4gICAgICBwcmV2LnZhbHVlICs9IHRvay52YWx1ZTtcbiAgICAgIHByZXYub3V0cHV0ID0gKHByZXYub3V0cHV0IHx8ICcnKSArIHRvay52YWx1ZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0b2sucHJldiA9IHByZXY7XG4gICAgdG9rZW5zLnB1c2godG9rKTtcbiAgICBwcmV2ID0gdG9rO1xuICB9O1xuXG4gIGNvbnN0IGV4dGdsb2JPcGVuID0gKHR5cGUsIHZhbHVlKSA9PiB7XG4gICAgY29uc3QgdG9rZW4gPSB7IC4uLkVYVEdMT0JfQ0hBUlNbdmFsdWVdLCBjb25kaXRpb25zOiAxLCBpbm5lcjogJycgfTtcblxuICAgIHRva2VuLnByZXYgPSBwcmV2O1xuICAgIHRva2VuLnBhcmVucyA9IHN0YXRlLnBhcmVucztcbiAgICB0b2tlbi5vdXRwdXQgPSBzdGF0ZS5vdXRwdXQ7XG4gICAgY29uc3Qgb3V0cHV0ID0gKG9wdHMuY2FwdHVyZSA/ICcoJyA6ICcnKSArIHRva2VuLm9wZW47XG5cbiAgICBpbmNyZW1lbnQoJ3BhcmVucycpO1xuICAgIHB1c2goeyB0eXBlLCB2YWx1ZSwgb3V0cHV0OiBzdGF0ZS5vdXRwdXQgPyAnJyA6IE9ORV9DSEFSIH0pO1xuICAgIHB1c2goeyB0eXBlOiAncGFyZW4nLCBleHRnbG9iOiB0cnVlLCB2YWx1ZTogYWR2YW5jZSgpLCBvdXRwdXQgfSk7XG4gICAgZXh0Z2xvYnMucHVzaCh0b2tlbik7XG4gIH07XG5cbiAgY29uc3QgZXh0Z2xvYkNsb3NlID0gdG9rZW4gPT4ge1xuICAgIGxldCBvdXRwdXQgPSB0b2tlbi5jbG9zZSArIChvcHRzLmNhcHR1cmUgPyAnKScgOiAnJyk7XG4gICAgbGV0IHJlc3Q7XG5cbiAgICBpZiAodG9rZW4udHlwZSA9PT0gJ25lZ2F0ZScpIHtcbiAgICAgIGxldCBleHRnbG9iU3RhciA9IHN0YXI7XG5cbiAgICAgIGlmICh0b2tlbi5pbm5lciAmJiB0b2tlbi5pbm5lci5sZW5ndGggPiAxICYmIHRva2VuLmlubmVyLmluY2x1ZGVzKCcvJykpIHtcbiAgICAgICAgZXh0Z2xvYlN0YXIgPSBnbG9ic3RhcihvcHRzKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGV4dGdsb2JTdGFyICE9PSBzdGFyIHx8IGVvcygpIHx8IC9eXFwpKyQvLnRlc3QocmVtYWluaW5nKCkpKSB7XG4gICAgICAgIG91dHB1dCA9IHRva2VuLmNsb3NlID0gYCkkKSkke2V4dGdsb2JTdGFyfWA7XG4gICAgICB9XG5cbiAgICAgIGlmICh0b2tlbi5pbm5lci5pbmNsdWRlcygnKicpICYmIChyZXN0ID0gcmVtYWluaW5nKCkpICYmIC9eXFwuW15cXFxcLy5dKyQvLnRlc3QocmVzdCkpIHtcbiAgICAgICAgLy8gQW55IG5vbi1tYWdpY2FsIHN0cmluZyAoYC50c2ApIG9yIGV2ZW4gbmVzdGVkIGV4cHJlc3Npb24gKGAue3RzLHRzeH1gKSBjYW4gZm9sbG93IGFmdGVyIHRoZSBjbG9zaW5nIHBhcmVudGhlc2lzLlxuICAgICAgICAvLyBJbiB0aGlzIGNhc2UsIHdlIG5lZWQgdG8gcGFyc2UgdGhlIHN0cmluZyBhbmQgdXNlIGl0IGluIHRoZSBvdXRwdXQgb2YgdGhlIG9yaWdpbmFsIHBhdHRlcm4uXG4gICAgICAgIC8vIFN1aXRhYmxlIHBhdHRlcm5zOiBgLyEoKi5kKS50c2AsIGAvISgqLmQpLnt0cyx0c3h9YCwgYCoqLyEoKi1kYmcpLkAoanMpYC5cbiAgICAgICAgLy9cbiAgICAgICAgLy8gRGlzYWJsaW5nIHRoZSBgZmFzdHBhdGhzYCBvcHRpb24gZHVlIHRvIGEgcHJvYmxlbSB3aXRoIHBhcnNpbmcgc3RyaW5ncyBhcyBgLnRzYCBpbiB0aGUgcGF0dGVybiBsaWtlIGAqKi8hKCouZCkudHNgLlxuICAgICAgICBjb25zdCBleHByZXNzaW9uID0gcGFyc2UocmVzdCwgeyAuLi5vcHRpb25zLCBmYXN0cGF0aHM6IGZhbHNlIH0pLm91dHB1dDtcblxuICAgICAgICBvdXRwdXQgPSB0b2tlbi5jbG9zZSA9IGApJHtleHByZXNzaW9ufSkke2V4dGdsb2JTdGFyfSlgO1xuICAgICAgfVxuXG4gICAgICBpZiAodG9rZW4ucHJldi50eXBlID09PSAnYm9zJykge1xuICAgICAgICBzdGF0ZS5uZWdhdGVkRXh0Z2xvYiA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcHVzaCh7IHR5cGU6ICdwYXJlbicsIGV4dGdsb2I6IHRydWUsIHZhbHVlLCBvdXRwdXQgfSk7XG4gICAgZGVjcmVtZW50KCdwYXJlbnMnKTtcbiAgfTtcblxuICAvKipcbiAgICogRmFzdCBwYXRoc1xuICAgKi9cblxuICBpZiAob3B0cy5mYXN0cGF0aHMgIT09IGZhbHNlICYmICEvKF5bKiFdfFsvKClbXFxde31cIl0pLy50ZXN0KGlucHV0KSkge1xuICAgIGxldCBiYWNrc2xhc2hlcyA9IGZhbHNlO1xuXG4gICAgbGV0IG91dHB1dCA9IGlucHV0LnJlcGxhY2UoUkVHRVhfU1BFQ0lBTF9DSEFSU19CQUNLUkVGLCAobSwgZXNjLCBjaGFycywgZmlyc3QsIHJlc3QsIGluZGV4KSA9PiB7XG4gICAgICBpZiAoZmlyc3QgPT09ICdcXFxcJykge1xuICAgICAgICBiYWNrc2xhc2hlcyA9IHRydWU7XG4gICAgICAgIHJldHVybiBtO1xuICAgICAgfVxuXG4gICAgICBpZiAoZmlyc3QgPT09ICc/Jykge1xuICAgICAgICBpZiAoZXNjKSB7XG4gICAgICAgICAgcmV0dXJuIGVzYyArIGZpcnN0ICsgKHJlc3QgPyBRTUFSSy5yZXBlYXQocmVzdC5sZW5ndGgpIDogJycpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpbmRleCA9PT0gMCkge1xuICAgICAgICAgIHJldHVybiBxbWFya05vRG90ICsgKHJlc3QgPyBRTUFSSy5yZXBlYXQocmVzdC5sZW5ndGgpIDogJycpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBRTUFSSy5yZXBlYXQoY2hhcnMubGVuZ3RoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGZpcnN0ID09PSAnLicpIHtcbiAgICAgICAgcmV0dXJuIERPVF9MSVRFUkFMLnJlcGVhdChjaGFycy5sZW5ndGgpO1xuICAgICAgfVxuXG4gICAgICBpZiAoZmlyc3QgPT09ICcqJykge1xuICAgICAgICBpZiAoZXNjKSB7XG4gICAgICAgICAgcmV0dXJuIGVzYyArIGZpcnN0ICsgKHJlc3QgPyBzdGFyIDogJycpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdGFyO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGVzYyA/IG0gOiBgXFxcXCR7bX1gO1xuICAgIH0pO1xuXG4gICAgaWYgKGJhY2tzbGFzaGVzID09PSB0cnVlKSB7XG4gICAgICBpZiAob3B0cy51bmVzY2FwZSA9PT0gdHJ1ZSkge1xuICAgICAgICBvdXRwdXQgPSBvdXRwdXQucmVwbGFjZSgvXFxcXC9nLCAnJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvdXRwdXQgPSBvdXRwdXQucmVwbGFjZSgvXFxcXCsvZywgbSA9PiB7XG4gICAgICAgICAgcmV0dXJuIG0ubGVuZ3RoICUgMiA9PT0gMCA/ICdcXFxcXFxcXCcgOiAobSA/ICdcXFxcJyA6ICcnKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG91dHB1dCA9PT0gaW5wdXQgJiYgb3B0cy5jb250YWlucyA9PT0gdHJ1ZSkge1xuICAgICAgc3RhdGUub3V0cHV0ID0gaW5wdXQ7XG4gICAgICByZXR1cm4gc3RhdGU7XG4gICAgfVxuXG4gICAgc3RhdGUub3V0cHV0ID0gdXRpbHMud3JhcE91dHB1dChvdXRwdXQsIHN0YXRlLCBvcHRpb25zKTtcbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cblxuICAvKipcbiAgICogVG9rZW5pemUgaW5wdXQgdW50aWwgd2UgcmVhY2ggZW5kLW9mLXN0cmluZ1xuICAgKi9cblxuICB3aGlsZSAoIWVvcygpKSB7XG4gICAgdmFsdWUgPSBhZHZhbmNlKCk7XG5cbiAgICBpZiAodmFsdWUgPT09ICdcXHUwMDAwJykge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRXNjYXBlZCBjaGFyYWN0ZXJzXG4gICAgICovXG5cbiAgICBpZiAodmFsdWUgPT09ICdcXFxcJykge1xuICAgICAgY29uc3QgbmV4dCA9IHBlZWsoKTtcblxuICAgICAgaWYgKG5leHQgPT09ICcvJyAmJiBvcHRzLmJhc2ggIT09IHRydWUpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChuZXh0ID09PSAnLicgfHwgbmV4dCA9PT0gJzsnKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoIW5leHQpIHtcbiAgICAgICAgdmFsdWUgKz0gJ1xcXFwnO1xuICAgICAgICBwdXNoKHsgdHlwZTogJ3RleHQnLCB2YWx1ZSB9KTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIC8vIGNvbGxhcHNlIHNsYXNoZXMgdG8gcmVkdWNlIHBvdGVudGlhbCBmb3IgZXhwbG9pdHNcbiAgICAgIGNvbnN0IG1hdGNoID0gL15cXFxcKy8uZXhlYyhyZW1haW5pbmcoKSk7XG4gICAgICBsZXQgc2xhc2hlcyA9IDA7XG5cbiAgICAgIGlmIChtYXRjaCAmJiBtYXRjaFswXS5sZW5ndGggPiAyKSB7XG4gICAgICAgIHNsYXNoZXMgPSBtYXRjaFswXS5sZW5ndGg7XG4gICAgICAgIHN0YXRlLmluZGV4ICs9IHNsYXNoZXM7XG4gICAgICAgIGlmIChzbGFzaGVzICUgMiAhPT0gMCkge1xuICAgICAgICAgIHZhbHVlICs9ICdcXFxcJztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAob3B0cy51bmVzY2FwZSA9PT0gdHJ1ZSkge1xuICAgICAgICB2YWx1ZSA9IGFkdmFuY2UoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhbHVlICs9IGFkdmFuY2UoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHN0YXRlLmJyYWNrZXRzID09PSAwKSB7XG4gICAgICAgIHB1c2goeyB0eXBlOiAndGV4dCcsIHZhbHVlIH0pO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJZiB3ZSdyZSBpbnNpZGUgYSByZWdleCBjaGFyYWN0ZXIgY2xhc3MsIGNvbnRpbnVlXG4gICAgICogdW50aWwgd2UgcmVhY2ggdGhlIGNsb3NpbmcgYnJhY2tldC5cbiAgICAgKi9cblxuICAgIGlmIChzdGF0ZS5icmFja2V0cyA+IDAgJiYgKHZhbHVlICE9PSAnXScgfHwgcHJldi52YWx1ZSA9PT0gJ1snIHx8IHByZXYudmFsdWUgPT09ICdbXicpKSB7XG4gICAgICBpZiAob3B0cy5wb3NpeCAhPT0gZmFsc2UgJiYgdmFsdWUgPT09ICc6Jykge1xuICAgICAgICBjb25zdCBpbm5lciA9IHByZXYudmFsdWUuc2xpY2UoMSk7XG4gICAgICAgIGlmIChpbm5lci5pbmNsdWRlcygnWycpKSB7XG4gICAgICAgICAgcHJldi5wb3NpeCA9IHRydWU7XG5cbiAgICAgICAgICBpZiAoaW5uZXIuaW5jbHVkZXMoJzonKSkge1xuICAgICAgICAgICAgY29uc3QgaWR4ID0gcHJldi52YWx1ZS5sYXN0SW5kZXhPZignWycpO1xuICAgICAgICAgICAgY29uc3QgcHJlID0gcHJldi52YWx1ZS5zbGljZSgwLCBpZHgpO1xuICAgICAgICAgICAgY29uc3QgcmVzdCA9IHByZXYudmFsdWUuc2xpY2UoaWR4ICsgMik7XG4gICAgICAgICAgICBjb25zdCBwb3NpeCA9IFBPU0lYX1JFR0VYX1NPVVJDRVtyZXN0XTtcbiAgICAgICAgICAgIGlmIChwb3NpeCkge1xuICAgICAgICAgICAgICBwcmV2LnZhbHVlID0gcHJlICsgcG9zaXg7XG4gICAgICAgICAgICAgIHN0YXRlLmJhY2t0cmFjayA9IHRydWU7XG4gICAgICAgICAgICAgIGFkdmFuY2UoKTtcblxuICAgICAgICAgICAgICBpZiAoIWJvcy5vdXRwdXQgJiYgdG9rZW5zLmluZGV4T2YocHJldikgPT09IDEpIHtcbiAgICAgICAgICAgICAgICBib3Mub3V0cHV0ID0gT05FX0NIQVI7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICgodmFsdWUgPT09ICdbJyAmJiBwZWVrKCkgIT09ICc6JykgfHwgKHZhbHVlID09PSAnLScgJiYgcGVlaygpID09PSAnXScpKSB7XG4gICAgICAgIHZhbHVlID0gYFxcXFwke3ZhbHVlfWA7XG4gICAgICB9XG5cbiAgICAgIGlmICh2YWx1ZSA9PT0gJ10nICYmIChwcmV2LnZhbHVlID09PSAnWycgfHwgcHJldi52YWx1ZSA9PT0gJ1teJykpIHtcbiAgICAgICAgdmFsdWUgPSBgXFxcXCR7dmFsdWV9YDtcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdHMucG9zaXggPT09IHRydWUgJiYgdmFsdWUgPT09ICchJyAmJiBwcmV2LnZhbHVlID09PSAnWycpIHtcbiAgICAgICAgdmFsdWUgPSAnXic7XG4gICAgICB9XG5cbiAgICAgIHByZXYudmFsdWUgKz0gdmFsdWU7XG4gICAgICBhcHBlbmQoeyB2YWx1ZSB9KTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIElmIHdlJ3JlIGluc2lkZSBhIHF1b3RlZCBzdHJpbmcsIGNvbnRpbnVlXG4gICAgICogdW50aWwgd2UgcmVhY2ggdGhlIGNsb3NpbmcgZG91YmxlIHF1b3RlLlxuICAgICAqL1xuXG4gICAgaWYgKHN0YXRlLnF1b3RlcyA9PT0gMSAmJiB2YWx1ZSAhPT0gJ1wiJykge1xuICAgICAgdmFsdWUgPSB1dGlscy5lc2NhcGVSZWdleCh2YWx1ZSk7XG4gICAgICBwcmV2LnZhbHVlICs9IHZhbHVlO1xuICAgICAgYXBwZW5kKHsgdmFsdWUgfSk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEb3VibGUgcXVvdGVzXG4gICAgICovXG5cbiAgICBpZiAodmFsdWUgPT09ICdcIicpIHtcbiAgICAgIHN0YXRlLnF1b3RlcyA9IHN0YXRlLnF1b3RlcyA9PT0gMSA/IDAgOiAxO1xuICAgICAgaWYgKG9wdHMua2VlcFF1b3RlcyA9PT0gdHJ1ZSkge1xuICAgICAgICBwdXNoKHsgdHlwZTogJ3RleHQnLCB2YWx1ZSB9KTtcbiAgICAgIH1cbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFBhcmVudGhlc2VzXG4gICAgICovXG5cbiAgICBpZiAodmFsdWUgPT09ICcoJykge1xuICAgICAgaW5jcmVtZW50KCdwYXJlbnMnKTtcbiAgICAgIHB1c2goeyB0eXBlOiAncGFyZW4nLCB2YWx1ZSB9KTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmICh2YWx1ZSA9PT0gJyknKSB7XG4gICAgICBpZiAoc3RhdGUucGFyZW5zID09PSAwICYmIG9wdHMuc3RyaWN0QnJhY2tldHMgPT09IHRydWUpIHtcbiAgICAgICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKHN5bnRheEVycm9yKCdvcGVuaW5nJywgJygnKSk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGV4dGdsb2IgPSBleHRnbG9ic1tleHRnbG9icy5sZW5ndGggLSAxXTtcbiAgICAgIGlmIChleHRnbG9iICYmIHN0YXRlLnBhcmVucyA9PT0gZXh0Z2xvYi5wYXJlbnMgKyAxKSB7XG4gICAgICAgIGV4dGdsb2JDbG9zZShleHRnbG9icy5wb3AoKSk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBwdXNoKHsgdHlwZTogJ3BhcmVuJywgdmFsdWUsIG91dHB1dDogc3RhdGUucGFyZW5zID8gJyknIDogJ1xcXFwpJyB9KTtcbiAgICAgIGRlY3JlbWVudCgncGFyZW5zJyk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTcXVhcmUgYnJhY2tldHNcbiAgICAgKi9cblxuICAgIGlmICh2YWx1ZSA9PT0gJ1snKSB7XG4gICAgICBpZiAob3B0cy5ub2JyYWNrZXQgPT09IHRydWUgfHwgIXJlbWFpbmluZygpLmluY2x1ZGVzKCddJykpIHtcbiAgICAgICAgaWYgKG9wdHMubm9icmFja2V0ICE9PSB0cnVlICYmIG9wdHMuc3RyaWN0QnJhY2tldHMgPT09IHRydWUpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3Ioc3ludGF4RXJyb3IoJ2Nsb3NpbmcnLCAnXScpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhbHVlID0gYFxcXFwke3ZhbHVlfWA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpbmNyZW1lbnQoJ2JyYWNrZXRzJyk7XG4gICAgICB9XG5cbiAgICAgIHB1c2goeyB0eXBlOiAnYnJhY2tldCcsIHZhbHVlIH0pO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKHZhbHVlID09PSAnXScpIHtcbiAgICAgIGlmIChvcHRzLm5vYnJhY2tldCA9PT0gdHJ1ZSB8fCAocHJldiAmJiBwcmV2LnR5cGUgPT09ICdicmFja2V0JyAmJiBwcmV2LnZhbHVlLmxlbmd0aCA9PT0gMSkpIHtcbiAgICAgICAgcHVzaCh7IHR5cGU6ICd0ZXh0JywgdmFsdWUsIG91dHB1dDogYFxcXFwke3ZhbHVlfWAgfSk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoc3RhdGUuYnJhY2tldHMgPT09IDApIHtcbiAgICAgICAgaWYgKG9wdHMuc3RyaWN0QnJhY2tldHMgPT09IHRydWUpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3Ioc3ludGF4RXJyb3IoJ29wZW5pbmcnLCAnWycpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHB1c2goeyB0eXBlOiAndGV4dCcsIHZhbHVlLCBvdXRwdXQ6IGBcXFxcJHt2YWx1ZX1gIH0pO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgZGVjcmVtZW50KCdicmFja2V0cycpO1xuXG4gICAgICBjb25zdCBwcmV2VmFsdWUgPSBwcmV2LnZhbHVlLnNsaWNlKDEpO1xuICAgICAgaWYgKHByZXYucG9zaXggIT09IHRydWUgJiYgcHJldlZhbHVlWzBdID09PSAnXicgJiYgIXByZXZWYWx1ZS5pbmNsdWRlcygnLycpKSB7XG4gICAgICAgIHZhbHVlID0gYC8ke3ZhbHVlfWA7XG4gICAgICB9XG5cbiAgICAgIHByZXYudmFsdWUgKz0gdmFsdWU7XG4gICAgICBhcHBlbmQoeyB2YWx1ZSB9KTtcblxuICAgICAgLy8gd2hlbiBsaXRlcmFsIGJyYWNrZXRzIGFyZSBleHBsaWNpdGx5IGRpc2FibGVkXG4gICAgICAvLyBhc3N1bWUgd2Ugc2hvdWxkIG1hdGNoIHdpdGggYSByZWdleCBjaGFyYWN0ZXIgY2xhc3NcbiAgICAgIGlmIChvcHRzLmxpdGVyYWxCcmFja2V0cyA9PT0gZmFsc2UgfHwgdXRpbHMuaGFzUmVnZXhDaGFycyhwcmV2VmFsdWUpKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBlc2NhcGVkID0gdXRpbHMuZXNjYXBlUmVnZXgocHJldi52YWx1ZSk7XG4gICAgICBzdGF0ZS5vdXRwdXQgPSBzdGF0ZS5vdXRwdXQuc2xpY2UoMCwgLXByZXYudmFsdWUubGVuZ3RoKTtcblxuICAgICAgLy8gd2hlbiBsaXRlcmFsIGJyYWNrZXRzIGFyZSBleHBsaWNpdGx5IGVuYWJsZWRcbiAgICAgIC8vIGFzc3VtZSB3ZSBzaG91bGQgZXNjYXBlIHRoZSBicmFja2V0cyB0byBtYXRjaCBsaXRlcmFsIGNoYXJhY3RlcnNcbiAgICAgIGlmIChvcHRzLmxpdGVyYWxCcmFja2V0cyA9PT0gdHJ1ZSkge1xuICAgICAgICBzdGF0ZS5vdXRwdXQgKz0gZXNjYXBlZDtcbiAgICAgICAgcHJldi52YWx1ZSA9IGVzY2FwZWQ7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICAvLyB3aGVuIHRoZSB1c2VyIHNwZWNpZmllcyBub3RoaW5nLCB0cnkgdG8gbWF0Y2ggYm90aFxuICAgICAgcHJldi52YWx1ZSA9IGAoJHtjYXB0dXJlfSR7ZXNjYXBlZH18JHtwcmV2LnZhbHVlfSlgO1xuICAgICAgc3RhdGUub3V0cHV0ICs9IHByZXYudmFsdWU7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBCcmFjZXNcbiAgICAgKi9cblxuICAgIGlmICh2YWx1ZSA9PT0gJ3snICYmIG9wdHMubm9icmFjZSAhPT0gdHJ1ZSkge1xuICAgICAgaW5jcmVtZW50KCdicmFjZXMnKTtcblxuICAgICAgY29uc3Qgb3BlbiA9IHtcbiAgICAgICAgdHlwZTogJ2JyYWNlJyxcbiAgICAgICAgdmFsdWUsXG4gICAgICAgIG91dHB1dDogJygnLFxuICAgICAgICBvdXRwdXRJbmRleDogc3RhdGUub3V0cHV0Lmxlbmd0aCxcbiAgICAgICAgdG9rZW5zSW5kZXg6IHN0YXRlLnRva2Vucy5sZW5ndGhcbiAgICAgIH07XG5cbiAgICAgIGJyYWNlcy5wdXNoKG9wZW4pO1xuICAgICAgcHVzaChvcGVuKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmICh2YWx1ZSA9PT0gJ30nKSB7XG4gICAgICBjb25zdCBicmFjZSA9IGJyYWNlc1ticmFjZXMubGVuZ3RoIC0gMV07XG5cbiAgICAgIGlmIChvcHRzLm5vYnJhY2UgPT09IHRydWUgfHwgIWJyYWNlKSB7XG4gICAgICAgIHB1c2goeyB0eXBlOiAndGV4dCcsIHZhbHVlLCBvdXRwdXQ6IHZhbHVlIH0pO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgbGV0IG91dHB1dCA9ICcpJztcblxuICAgICAgaWYgKGJyYWNlLmRvdHMgPT09IHRydWUpIHtcbiAgICAgICAgY29uc3QgYXJyID0gdG9rZW5zLnNsaWNlKCk7XG4gICAgICAgIGNvbnN0IHJhbmdlID0gW107XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IGFyci5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICAgIHRva2Vucy5wb3AoKTtcbiAgICAgICAgICBpZiAoYXJyW2ldLnR5cGUgPT09ICdicmFjZScpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoYXJyW2ldLnR5cGUgIT09ICdkb3RzJykge1xuICAgICAgICAgICAgcmFuZ2UudW5zaGlmdChhcnJbaV0udmFsdWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIG91dHB1dCA9IGV4cGFuZFJhbmdlKHJhbmdlLCBvcHRzKTtcbiAgICAgICAgc3RhdGUuYmFja3RyYWNrID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKGJyYWNlLmNvbW1hICE9PSB0cnVlICYmIGJyYWNlLmRvdHMgIT09IHRydWUpIHtcbiAgICAgICAgY29uc3Qgb3V0ID0gc3RhdGUub3V0cHV0LnNsaWNlKDAsIGJyYWNlLm91dHB1dEluZGV4KTtcbiAgICAgICAgY29uc3QgdG9rcyA9IHN0YXRlLnRva2Vucy5zbGljZShicmFjZS50b2tlbnNJbmRleCk7XG4gICAgICAgIGJyYWNlLnZhbHVlID0gYnJhY2Uub3V0cHV0ID0gJ1xcXFx7JztcbiAgICAgICAgdmFsdWUgPSBvdXRwdXQgPSAnXFxcXH0nO1xuICAgICAgICBzdGF0ZS5vdXRwdXQgPSBvdXQ7XG4gICAgICAgIGZvciAoY29uc3QgdCBvZiB0b2tzKSB7XG4gICAgICAgICAgc3RhdGUub3V0cHV0ICs9ICh0Lm91dHB1dCB8fCB0LnZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBwdXNoKHsgdHlwZTogJ2JyYWNlJywgdmFsdWUsIG91dHB1dCB9KTtcbiAgICAgIGRlY3JlbWVudCgnYnJhY2VzJyk7XG4gICAgICBicmFjZXMucG9wKCk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQaXBlc1xuICAgICAqL1xuXG4gICAgaWYgKHZhbHVlID09PSAnfCcpIHtcbiAgICAgIGlmIChleHRnbG9icy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGV4dGdsb2JzW2V4dGdsb2JzLmxlbmd0aCAtIDFdLmNvbmRpdGlvbnMrKztcbiAgICAgIH1cbiAgICAgIHB1c2goeyB0eXBlOiAndGV4dCcsIHZhbHVlIH0pO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29tbWFzXG4gICAgICovXG5cbiAgICBpZiAodmFsdWUgPT09ICcsJykge1xuICAgICAgbGV0IG91dHB1dCA9IHZhbHVlO1xuXG4gICAgICBjb25zdCBicmFjZSA9IGJyYWNlc1ticmFjZXMubGVuZ3RoIC0gMV07XG4gICAgICBpZiAoYnJhY2UgJiYgc3RhY2tbc3RhY2subGVuZ3RoIC0gMV0gPT09ICdicmFjZXMnKSB7XG4gICAgICAgIGJyYWNlLmNvbW1hID0gdHJ1ZTtcbiAgICAgICAgb3V0cHV0ID0gJ3wnO1xuICAgICAgfVxuXG4gICAgICBwdXNoKHsgdHlwZTogJ2NvbW1hJywgdmFsdWUsIG91dHB1dCB9KTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNsYXNoZXNcbiAgICAgKi9cblxuICAgIGlmICh2YWx1ZSA9PT0gJy8nKSB7XG4gICAgICAvLyBpZiB0aGUgYmVnaW5uaW5nIG9mIHRoZSBnbG9iIGlzIFwiLi9cIiwgYWR2YW5jZSB0aGUgc3RhcnRcbiAgICAgIC8vIHRvIHRoZSBjdXJyZW50IGluZGV4LCBhbmQgZG9uJ3QgYWRkIHRoZSBcIi4vXCIgY2hhcmFjdGVyc1xuICAgICAgLy8gdG8gdGhlIHN0YXRlLiBUaGlzIGdyZWF0bHkgc2ltcGxpZmllcyBsb29rYmVoaW5kcyB3aGVuXG4gICAgICAvLyBjaGVja2luZyBmb3IgQk9TIGNoYXJhY3RlcnMgbGlrZSBcIiFcIiBhbmQgXCIuXCIgKG5vdCBcIi4vXCIpXG4gICAgICBpZiAocHJldi50eXBlID09PSAnZG90JyAmJiBzdGF0ZS5pbmRleCA9PT0gc3RhdGUuc3RhcnQgKyAxKSB7XG4gICAgICAgIHN0YXRlLnN0YXJ0ID0gc3RhdGUuaW5kZXggKyAxO1xuICAgICAgICBzdGF0ZS5jb25zdW1lZCA9ICcnO1xuICAgICAgICBzdGF0ZS5vdXRwdXQgPSAnJztcbiAgICAgICAgdG9rZW5zLnBvcCgpO1xuICAgICAgICBwcmV2ID0gYm9zOyAvLyByZXNldCBcInByZXZcIiB0byB0aGUgZmlyc3QgdG9rZW5cbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIHB1c2goeyB0eXBlOiAnc2xhc2gnLCB2YWx1ZSwgb3V0cHV0OiBTTEFTSF9MSVRFUkFMIH0pO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRG90c1xuICAgICAqL1xuXG4gICAgaWYgKHZhbHVlID09PSAnLicpIHtcbiAgICAgIGlmIChzdGF0ZS5icmFjZXMgPiAwICYmIHByZXYudHlwZSA9PT0gJ2RvdCcpIHtcbiAgICAgICAgaWYgKHByZXYudmFsdWUgPT09ICcuJykgcHJldi5vdXRwdXQgPSBET1RfTElURVJBTDtcbiAgICAgICAgY29uc3QgYnJhY2UgPSBicmFjZXNbYnJhY2VzLmxlbmd0aCAtIDFdO1xuICAgICAgICBwcmV2LnR5cGUgPSAnZG90cyc7XG4gICAgICAgIHByZXYub3V0cHV0ICs9IHZhbHVlO1xuICAgICAgICBwcmV2LnZhbHVlICs9IHZhbHVlO1xuICAgICAgICBicmFjZS5kb3RzID0gdHJ1ZTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmICgoc3RhdGUuYnJhY2VzICsgc3RhdGUucGFyZW5zKSA9PT0gMCAmJiBwcmV2LnR5cGUgIT09ICdib3MnICYmIHByZXYudHlwZSAhPT0gJ3NsYXNoJykge1xuICAgICAgICBwdXNoKHsgdHlwZTogJ3RleHQnLCB2YWx1ZSwgb3V0cHV0OiBET1RfTElURVJBTCB9KTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIHB1c2goeyB0eXBlOiAnZG90JywgdmFsdWUsIG91dHB1dDogRE9UX0xJVEVSQUwgfSk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBRdWVzdGlvbiBtYXJrc1xuICAgICAqL1xuXG4gICAgaWYgKHZhbHVlID09PSAnPycpIHtcbiAgICAgIGNvbnN0IGlzR3JvdXAgPSBwcmV2ICYmIHByZXYudmFsdWUgPT09ICcoJztcbiAgICAgIGlmICghaXNHcm91cCAmJiBvcHRzLm5vZXh0Z2xvYiAhPT0gdHJ1ZSAmJiBwZWVrKCkgPT09ICcoJyAmJiBwZWVrKDIpICE9PSAnPycpIHtcbiAgICAgICAgZXh0Z2xvYk9wZW4oJ3FtYXJrJywgdmFsdWUpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHByZXYgJiYgcHJldi50eXBlID09PSAncGFyZW4nKSB7XG4gICAgICAgIGNvbnN0IG5leHQgPSBwZWVrKCk7XG4gICAgICAgIGxldCBvdXRwdXQgPSB2YWx1ZTtcblxuICAgICAgICBpZiAobmV4dCA9PT0gJzwnICYmICF1dGlscy5zdXBwb3J0c0xvb2tiZWhpbmRzKCkpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vZGUuanMgdjEwIG9yIGhpZ2hlciBpcyByZXF1aXJlZCBmb3IgcmVnZXggbG9va2JlaGluZHMnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICgocHJldi52YWx1ZSA9PT0gJygnICYmICEvWyE9PDpdLy50ZXN0KG5leHQpKSB8fCAobmV4dCA9PT0gJzwnICYmICEvPChbIT1dfFxcdys+KS8udGVzdChyZW1haW5pbmcoKSkpKSB7XG4gICAgICAgICAgb3V0cHV0ID0gYFxcXFwke3ZhbHVlfWA7XG4gICAgICAgIH1cblxuICAgICAgICBwdXNoKHsgdHlwZTogJ3RleHQnLCB2YWx1ZSwgb3V0cHV0IH0pO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdHMuZG90ICE9PSB0cnVlICYmIChwcmV2LnR5cGUgPT09ICdzbGFzaCcgfHwgcHJldi50eXBlID09PSAnYm9zJykpIHtcbiAgICAgICAgcHVzaCh7IHR5cGU6ICdxbWFyaycsIHZhbHVlLCBvdXRwdXQ6IFFNQVJLX05PX0RPVCB9KTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIHB1c2goeyB0eXBlOiAncW1hcmsnLCB2YWx1ZSwgb3V0cHV0OiBRTUFSSyB9KTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEV4Y2xhbWF0aW9uXG4gICAgICovXG5cbiAgICBpZiAodmFsdWUgPT09ICchJykge1xuICAgICAgaWYgKG9wdHMubm9leHRnbG9iICE9PSB0cnVlICYmIHBlZWsoKSA9PT0gJygnKSB7XG4gICAgICAgIGlmIChwZWVrKDIpICE9PSAnPycgfHwgIS9bIT08Ol0vLnRlc3QocGVlaygzKSkpIHtcbiAgICAgICAgICBleHRnbG9iT3BlbignbmVnYXRlJywgdmFsdWUpO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRzLm5vbmVnYXRlICE9PSB0cnVlICYmIHN0YXRlLmluZGV4ID09PSAwKSB7XG4gICAgICAgIG5lZ2F0ZSgpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQbHVzXG4gICAgICovXG5cbiAgICBpZiAodmFsdWUgPT09ICcrJykge1xuICAgICAgaWYgKG9wdHMubm9leHRnbG9iICE9PSB0cnVlICYmIHBlZWsoKSA9PT0gJygnICYmIHBlZWsoMikgIT09ICc/Jykge1xuICAgICAgICBleHRnbG9iT3BlbigncGx1cycsIHZhbHVlKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmICgocHJldiAmJiBwcmV2LnZhbHVlID09PSAnKCcpIHx8IG9wdHMucmVnZXggPT09IGZhbHNlKSB7XG4gICAgICAgIHB1c2goeyB0eXBlOiAncGx1cycsIHZhbHVlLCBvdXRwdXQ6IFBMVVNfTElURVJBTCB9KTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmICgocHJldiAmJiAocHJldi50eXBlID09PSAnYnJhY2tldCcgfHwgcHJldi50eXBlID09PSAncGFyZW4nIHx8IHByZXYudHlwZSA9PT0gJ2JyYWNlJykpIHx8IHN0YXRlLnBhcmVucyA+IDApIHtcbiAgICAgICAgcHVzaCh7IHR5cGU6ICdwbHVzJywgdmFsdWUgfSk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBwdXNoKHsgdHlwZTogJ3BsdXMnLCB2YWx1ZTogUExVU19MSVRFUkFMIH0pO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUGxhaW4gdGV4dFxuICAgICAqL1xuXG4gICAgaWYgKHZhbHVlID09PSAnQCcpIHtcbiAgICAgIGlmIChvcHRzLm5vZXh0Z2xvYiAhPT0gdHJ1ZSAmJiBwZWVrKCkgPT09ICcoJyAmJiBwZWVrKDIpICE9PSAnPycpIHtcbiAgICAgICAgcHVzaCh7IHR5cGU6ICdhdCcsIGV4dGdsb2I6IHRydWUsIHZhbHVlLCBvdXRwdXQ6ICcnIH0pO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgcHVzaCh7IHR5cGU6ICd0ZXh0JywgdmFsdWUgfSk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQbGFpbiB0ZXh0XG4gICAgICovXG5cbiAgICBpZiAodmFsdWUgIT09ICcqJykge1xuICAgICAgaWYgKHZhbHVlID09PSAnJCcgfHwgdmFsdWUgPT09ICdeJykge1xuICAgICAgICB2YWx1ZSA9IGBcXFxcJHt2YWx1ZX1gO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBtYXRjaCA9IFJFR0VYX05PTl9TUEVDSUFMX0NIQVJTLmV4ZWMocmVtYWluaW5nKCkpO1xuICAgICAgaWYgKG1hdGNoKSB7XG4gICAgICAgIHZhbHVlICs9IG1hdGNoWzBdO1xuICAgICAgICBzdGF0ZS5pbmRleCArPSBtYXRjaFswXS5sZW5ndGg7XG4gICAgICB9XG5cbiAgICAgIHB1c2goeyB0eXBlOiAndGV4dCcsIHZhbHVlIH0pO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU3RhcnNcbiAgICAgKi9cblxuICAgIGlmIChwcmV2ICYmIChwcmV2LnR5cGUgPT09ICdnbG9ic3RhcicgfHwgcHJldi5zdGFyID09PSB0cnVlKSkge1xuICAgICAgcHJldi50eXBlID0gJ3N0YXInO1xuICAgICAgcHJldi5zdGFyID0gdHJ1ZTtcbiAgICAgIHByZXYudmFsdWUgKz0gdmFsdWU7XG4gICAgICBwcmV2Lm91dHB1dCA9IHN0YXI7XG4gICAgICBzdGF0ZS5iYWNrdHJhY2sgPSB0cnVlO1xuICAgICAgc3RhdGUuZ2xvYnN0YXIgPSB0cnVlO1xuICAgICAgY29uc3VtZSh2YWx1ZSk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBsZXQgcmVzdCA9IHJlbWFpbmluZygpO1xuICAgIGlmIChvcHRzLm5vZXh0Z2xvYiAhPT0gdHJ1ZSAmJiAvXlxcKFteP10vLnRlc3QocmVzdCkpIHtcbiAgICAgIGV4dGdsb2JPcGVuKCdzdGFyJywgdmFsdWUpO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKHByZXYudHlwZSA9PT0gJ3N0YXInKSB7XG4gICAgICBpZiAob3B0cy5ub2dsb2JzdGFyID09PSB0cnVlKSB7XG4gICAgICAgIGNvbnN1bWUodmFsdWUpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcHJpb3IgPSBwcmV2LnByZXY7XG4gICAgICBjb25zdCBiZWZvcmUgPSBwcmlvci5wcmV2O1xuICAgICAgY29uc3QgaXNTdGFydCA9IHByaW9yLnR5cGUgPT09ICdzbGFzaCcgfHwgcHJpb3IudHlwZSA9PT0gJ2Jvcyc7XG4gICAgICBjb25zdCBhZnRlclN0YXIgPSBiZWZvcmUgJiYgKGJlZm9yZS50eXBlID09PSAnc3RhcicgfHwgYmVmb3JlLnR5cGUgPT09ICdnbG9ic3RhcicpO1xuXG4gICAgICBpZiAob3B0cy5iYXNoID09PSB0cnVlICYmICghaXNTdGFydCB8fCAocmVzdFswXSAmJiByZXN0WzBdICE9PSAnLycpKSkge1xuICAgICAgICBwdXNoKHsgdHlwZTogJ3N0YXInLCB2YWx1ZSwgb3V0cHV0OiAnJyB9KTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGlzQnJhY2UgPSBzdGF0ZS5icmFjZXMgPiAwICYmIChwcmlvci50eXBlID09PSAnY29tbWEnIHx8IHByaW9yLnR5cGUgPT09ICdicmFjZScpO1xuICAgICAgY29uc3QgaXNFeHRnbG9iID0gZXh0Z2xvYnMubGVuZ3RoICYmIChwcmlvci50eXBlID09PSAncGlwZScgfHwgcHJpb3IudHlwZSA9PT0gJ3BhcmVuJyk7XG4gICAgICBpZiAoIWlzU3RhcnQgJiYgcHJpb3IudHlwZSAhPT0gJ3BhcmVuJyAmJiAhaXNCcmFjZSAmJiAhaXNFeHRnbG9iKSB7XG4gICAgICAgIHB1c2goeyB0eXBlOiAnc3RhcicsIHZhbHVlLCBvdXRwdXQ6ICcnIH0pO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgLy8gc3RyaXAgY29uc2VjdXRpdmUgYC8qKi9gXG4gICAgICB3aGlsZSAocmVzdC5zbGljZSgwLCAzKSA9PT0gJy8qKicpIHtcbiAgICAgICAgY29uc3QgYWZ0ZXIgPSBpbnB1dFtzdGF0ZS5pbmRleCArIDRdO1xuICAgICAgICBpZiAoYWZ0ZXIgJiYgYWZ0ZXIgIT09ICcvJykge1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIHJlc3QgPSByZXN0LnNsaWNlKDMpO1xuICAgICAgICBjb25zdW1lKCcvKionLCAzKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHByaW9yLnR5cGUgPT09ICdib3MnICYmIGVvcygpKSB7XG4gICAgICAgIHByZXYudHlwZSA9ICdnbG9ic3Rhcic7XG4gICAgICAgIHByZXYudmFsdWUgKz0gdmFsdWU7XG4gICAgICAgIHByZXYub3V0cHV0ID0gZ2xvYnN0YXIob3B0cyk7XG4gICAgICAgIHN0YXRlLm91dHB1dCA9IHByZXYub3V0cHV0O1xuICAgICAgICBzdGF0ZS5nbG9ic3RhciA9IHRydWU7XG4gICAgICAgIGNvbnN1bWUodmFsdWUpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHByaW9yLnR5cGUgPT09ICdzbGFzaCcgJiYgcHJpb3IucHJldi50eXBlICE9PSAnYm9zJyAmJiAhYWZ0ZXJTdGFyICYmIGVvcygpKSB7XG4gICAgICAgIHN0YXRlLm91dHB1dCA9IHN0YXRlLm91dHB1dC5zbGljZSgwLCAtKHByaW9yLm91dHB1dCArIHByZXYub3V0cHV0KS5sZW5ndGgpO1xuICAgICAgICBwcmlvci5vdXRwdXQgPSBgKD86JHtwcmlvci5vdXRwdXR9YDtcblxuICAgICAgICBwcmV2LnR5cGUgPSAnZ2xvYnN0YXInO1xuICAgICAgICBwcmV2Lm91dHB1dCA9IGdsb2JzdGFyKG9wdHMpICsgKG9wdHMuc3RyaWN0U2xhc2hlcyA/ICcpJyA6ICd8JCknKTtcbiAgICAgICAgcHJldi52YWx1ZSArPSB2YWx1ZTtcbiAgICAgICAgc3RhdGUuZ2xvYnN0YXIgPSB0cnVlO1xuICAgICAgICBzdGF0ZS5vdXRwdXQgKz0gcHJpb3Iub3V0cHV0ICsgcHJldi5vdXRwdXQ7XG4gICAgICAgIGNvbnN1bWUodmFsdWUpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHByaW9yLnR5cGUgPT09ICdzbGFzaCcgJiYgcHJpb3IucHJldi50eXBlICE9PSAnYm9zJyAmJiByZXN0WzBdID09PSAnLycpIHtcbiAgICAgICAgY29uc3QgZW5kID0gcmVzdFsxXSAhPT0gdm9pZCAwID8gJ3wkJyA6ICcnO1xuXG4gICAgICAgIHN0YXRlLm91dHB1dCA9IHN0YXRlLm91dHB1dC5zbGljZSgwLCAtKHByaW9yLm91dHB1dCArIHByZXYub3V0cHV0KS5sZW5ndGgpO1xuICAgICAgICBwcmlvci5vdXRwdXQgPSBgKD86JHtwcmlvci5vdXRwdXR9YDtcblxuICAgICAgICBwcmV2LnR5cGUgPSAnZ2xvYnN0YXInO1xuICAgICAgICBwcmV2Lm91dHB1dCA9IGAke2dsb2JzdGFyKG9wdHMpfSR7U0xBU0hfTElURVJBTH18JHtTTEFTSF9MSVRFUkFMfSR7ZW5kfSlgO1xuICAgICAgICBwcmV2LnZhbHVlICs9IHZhbHVlO1xuXG4gICAgICAgIHN0YXRlLm91dHB1dCArPSBwcmlvci5vdXRwdXQgKyBwcmV2Lm91dHB1dDtcbiAgICAgICAgc3RhdGUuZ2xvYnN0YXIgPSB0cnVlO1xuXG4gICAgICAgIGNvbnN1bWUodmFsdWUgKyBhZHZhbmNlKCkpO1xuXG4gICAgICAgIHB1c2goeyB0eXBlOiAnc2xhc2gnLCB2YWx1ZTogJy8nLCBvdXRwdXQ6ICcnIH0pO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHByaW9yLnR5cGUgPT09ICdib3MnICYmIHJlc3RbMF0gPT09ICcvJykge1xuICAgICAgICBwcmV2LnR5cGUgPSAnZ2xvYnN0YXInO1xuICAgICAgICBwcmV2LnZhbHVlICs9IHZhbHVlO1xuICAgICAgICBwcmV2Lm91dHB1dCA9IGAoPzpefCR7U0xBU0hfTElURVJBTH18JHtnbG9ic3RhcihvcHRzKX0ke1NMQVNIX0xJVEVSQUx9KWA7XG4gICAgICAgIHN0YXRlLm91dHB1dCA9IHByZXYub3V0cHV0O1xuICAgICAgICBzdGF0ZS5nbG9ic3RhciA9IHRydWU7XG4gICAgICAgIGNvbnN1bWUodmFsdWUgKyBhZHZhbmNlKCkpO1xuICAgICAgICBwdXNoKHsgdHlwZTogJ3NsYXNoJywgdmFsdWU6ICcvJywgb3V0cHV0OiAnJyB9KTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIC8vIHJlbW92ZSBzaW5nbGUgc3RhciBmcm9tIG91dHB1dFxuICAgICAgc3RhdGUub3V0cHV0ID0gc3RhdGUub3V0cHV0LnNsaWNlKDAsIC1wcmV2Lm91dHB1dC5sZW5ndGgpO1xuXG4gICAgICAvLyByZXNldCBwcmV2aW91cyB0b2tlbiB0byBnbG9ic3RhclxuICAgICAgcHJldi50eXBlID0gJ2dsb2JzdGFyJztcbiAgICAgIHByZXYub3V0cHV0ID0gZ2xvYnN0YXIob3B0cyk7XG4gICAgICBwcmV2LnZhbHVlICs9IHZhbHVlO1xuXG4gICAgICAvLyByZXNldCBvdXRwdXQgd2l0aCBnbG9ic3RhclxuICAgICAgc3RhdGUub3V0cHV0ICs9IHByZXYub3V0cHV0O1xuICAgICAgc3RhdGUuZ2xvYnN0YXIgPSB0cnVlO1xuICAgICAgY29uc3VtZSh2YWx1ZSk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBjb25zdCB0b2tlbiA9IHsgdHlwZTogJ3N0YXInLCB2YWx1ZSwgb3V0cHV0OiBzdGFyIH07XG5cbiAgICBpZiAob3B0cy5iYXNoID09PSB0cnVlKSB7XG4gICAgICB0b2tlbi5vdXRwdXQgPSAnLio/JztcbiAgICAgIGlmIChwcmV2LnR5cGUgPT09ICdib3MnIHx8IHByZXYudHlwZSA9PT0gJ3NsYXNoJykge1xuICAgICAgICB0b2tlbi5vdXRwdXQgPSBub2RvdCArIHRva2VuLm91dHB1dDtcbiAgICAgIH1cbiAgICAgIHB1c2godG9rZW4pO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKHByZXYgJiYgKHByZXYudHlwZSA9PT0gJ2JyYWNrZXQnIHx8IHByZXYudHlwZSA9PT0gJ3BhcmVuJykgJiYgb3B0cy5yZWdleCA9PT0gdHJ1ZSkge1xuICAgICAgdG9rZW4ub3V0cHV0ID0gdmFsdWU7XG4gICAgICBwdXNoKHRva2VuKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmIChzdGF0ZS5pbmRleCA9PT0gc3RhdGUuc3RhcnQgfHwgcHJldi50eXBlID09PSAnc2xhc2gnIHx8IHByZXYudHlwZSA9PT0gJ2RvdCcpIHtcbiAgICAgIGlmIChwcmV2LnR5cGUgPT09ICdkb3QnKSB7XG4gICAgICAgIHN0YXRlLm91dHB1dCArPSBOT19ET1RfU0xBU0g7XG4gICAgICAgIHByZXYub3V0cHV0ICs9IE5PX0RPVF9TTEFTSDtcblxuICAgICAgfSBlbHNlIGlmIChvcHRzLmRvdCA9PT0gdHJ1ZSkge1xuICAgICAgICBzdGF0ZS5vdXRwdXQgKz0gTk9fRE9UU19TTEFTSDtcbiAgICAgICAgcHJldi5vdXRwdXQgKz0gTk9fRE9UU19TTEFTSDtcblxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3RhdGUub3V0cHV0ICs9IG5vZG90O1xuICAgICAgICBwcmV2Lm91dHB1dCArPSBub2RvdDtcbiAgICAgIH1cblxuICAgICAgaWYgKHBlZWsoKSAhPT0gJyonKSB7XG4gICAgICAgIHN0YXRlLm91dHB1dCArPSBPTkVfQ0hBUjtcbiAgICAgICAgcHJldi5vdXRwdXQgKz0gT05FX0NIQVI7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcHVzaCh0b2tlbik7XG4gIH1cblxuICB3aGlsZSAoc3RhdGUuYnJhY2tldHMgPiAwKSB7XG4gICAgaWYgKG9wdHMuc3RyaWN0QnJhY2tldHMgPT09IHRydWUpIHRocm93IG5ldyBTeW50YXhFcnJvcihzeW50YXhFcnJvcignY2xvc2luZycsICddJykpO1xuICAgIHN0YXRlLm91dHB1dCA9IHV0aWxzLmVzY2FwZUxhc3Qoc3RhdGUub3V0cHV0LCAnWycpO1xuICAgIGRlY3JlbWVudCgnYnJhY2tldHMnKTtcbiAgfVxuXG4gIHdoaWxlIChzdGF0ZS5wYXJlbnMgPiAwKSB7XG4gICAgaWYgKG9wdHMuc3RyaWN0QnJhY2tldHMgPT09IHRydWUpIHRocm93IG5ldyBTeW50YXhFcnJvcihzeW50YXhFcnJvcignY2xvc2luZycsICcpJykpO1xuICAgIHN0YXRlLm91dHB1dCA9IHV0aWxzLmVzY2FwZUxhc3Qoc3RhdGUub3V0cHV0LCAnKCcpO1xuICAgIGRlY3JlbWVudCgncGFyZW5zJyk7XG4gIH1cblxuICB3aGlsZSAoc3RhdGUuYnJhY2VzID4gMCkge1xuICAgIGlmIChvcHRzLnN0cmljdEJyYWNrZXRzID09PSB0cnVlKSB0aHJvdyBuZXcgU3ludGF4RXJyb3Ioc3ludGF4RXJyb3IoJ2Nsb3NpbmcnLCAnfScpKTtcbiAgICBzdGF0ZS5vdXRwdXQgPSB1dGlscy5lc2NhcGVMYXN0KHN0YXRlLm91dHB1dCwgJ3snKTtcbiAgICBkZWNyZW1lbnQoJ2JyYWNlcycpO1xuICB9XG5cbiAgaWYgKG9wdHMuc3RyaWN0U2xhc2hlcyAhPT0gdHJ1ZSAmJiAocHJldi50eXBlID09PSAnc3RhcicgfHwgcHJldi50eXBlID09PSAnYnJhY2tldCcpKSB7XG4gICAgcHVzaCh7IHR5cGU6ICdtYXliZV9zbGFzaCcsIHZhbHVlOiAnJywgb3V0cHV0OiBgJHtTTEFTSF9MSVRFUkFMfT9gIH0pO1xuICB9XG5cbiAgLy8gcmVidWlsZCB0aGUgb3V0cHV0IGlmIHdlIGhhZCB0byBiYWNrdHJhY2sgYXQgYW55IHBvaW50XG4gIGlmIChzdGF0ZS5iYWNrdHJhY2sgPT09IHRydWUpIHtcbiAgICBzdGF0ZS5vdXRwdXQgPSAnJztcblxuICAgIGZvciAoY29uc3QgdG9rZW4gb2Ygc3RhdGUudG9rZW5zKSB7XG4gICAgICBzdGF0ZS5vdXRwdXQgKz0gdG9rZW4ub3V0cHV0ICE9IG51bGwgPyB0b2tlbi5vdXRwdXQgOiB0b2tlbi52YWx1ZTtcblxuICAgICAgaWYgKHRva2VuLnN1ZmZpeCkge1xuICAgICAgICBzdGF0ZS5vdXRwdXQgKz0gdG9rZW4uc3VmZml4O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBzdGF0ZTtcbn07XG5cbi8qKlxuICogRmFzdCBwYXRocyBmb3IgY3JlYXRpbmcgcmVndWxhciBleHByZXNzaW9ucyBmb3IgY29tbW9uIGdsb2IgcGF0dGVybnMuXG4gKiBUaGlzIGNhbiBzaWduaWZpY2FudGx5IHNwZWVkIHVwIHByb2Nlc3NpbmcgYW5kIGhhcyB2ZXJ5IGxpdHRsZSBkb3duc2lkZVxuICogaW1wYWN0IHdoZW4gbm9uZSBvZiB0aGUgZmFzdCBwYXRocyBtYXRjaC5cbiAqL1xuXG5wYXJzZS5mYXN0cGF0aHMgPSAoaW5wdXQsIG9wdGlvbnMpID0+IHtcbiAgY29uc3Qgb3B0cyA9IHsgLi4ub3B0aW9ucyB9O1xuICBjb25zdCBtYXggPSB0eXBlb2Ygb3B0cy5tYXhMZW5ndGggPT09ICdudW1iZXInID8gTWF0aC5taW4oTUFYX0xFTkdUSCwgb3B0cy5tYXhMZW5ndGgpIDogTUFYX0xFTkdUSDtcbiAgY29uc3QgbGVuID0gaW5wdXQubGVuZ3RoO1xuICBpZiAobGVuID4gbWF4KSB7XG4gICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKGBJbnB1dCBsZW5ndGg6ICR7bGVufSwgZXhjZWVkcyBtYXhpbXVtIGFsbG93ZWQgbGVuZ3RoOiAke21heH1gKTtcbiAgfVxuXG4gIGlucHV0ID0gUkVQTEFDRU1FTlRTW2lucHV0XSB8fCBpbnB1dDtcbiAgY29uc3Qgd2luMzIgPSB1dGlscy5pc1dpbmRvd3Mob3B0aW9ucyk7XG5cbiAgLy8gY3JlYXRlIGNvbnN0YW50cyBiYXNlZCBvbiBwbGF0Zm9ybSwgZm9yIHdpbmRvd3Mgb3IgcG9zaXhcbiAgY29uc3Qge1xuICAgIERPVF9MSVRFUkFMLFxuICAgIFNMQVNIX0xJVEVSQUwsXG4gICAgT05FX0NIQVIsXG4gICAgRE9UU19TTEFTSCxcbiAgICBOT19ET1QsXG4gICAgTk9fRE9UUyxcbiAgICBOT19ET1RTX1NMQVNILFxuICAgIFNUQVIsXG4gICAgU1RBUlRfQU5DSE9SXG4gIH0gPSBjb25zdGFudHMuZ2xvYkNoYXJzKHdpbjMyKTtcblxuICBjb25zdCBub2RvdCA9IG9wdHMuZG90ID8gTk9fRE9UUyA6IE5PX0RPVDtcbiAgY29uc3Qgc2xhc2hEb3QgPSBvcHRzLmRvdCA/IE5PX0RPVFNfU0xBU0ggOiBOT19ET1Q7XG4gIGNvbnN0IGNhcHR1cmUgPSBvcHRzLmNhcHR1cmUgPyAnJyA6ICc/Oic7XG4gIGNvbnN0IHN0YXRlID0geyBuZWdhdGVkOiBmYWxzZSwgcHJlZml4OiAnJyB9O1xuICBsZXQgc3RhciA9IG9wdHMuYmFzaCA9PT0gdHJ1ZSA/ICcuKj8nIDogU1RBUjtcblxuICBpZiAob3B0cy5jYXB0dXJlKSB7XG4gICAgc3RhciA9IGAoJHtzdGFyfSlgO1xuICB9XG5cbiAgY29uc3QgZ2xvYnN0YXIgPSBvcHRzID0+IHtcbiAgICBpZiAob3B0cy5ub2dsb2JzdGFyID09PSB0cnVlKSByZXR1cm4gc3RhcjtcbiAgICByZXR1cm4gYCgke2NhcHR1cmV9KD86KD8hJHtTVEFSVF9BTkNIT1J9JHtvcHRzLmRvdCA/IERPVFNfU0xBU0ggOiBET1RfTElURVJBTH0pLikqPylgO1xuICB9O1xuXG4gIGNvbnN0IGNyZWF0ZSA9IHN0ciA9PiB7XG4gICAgc3dpdGNoIChzdHIpIHtcbiAgICAgIGNhc2UgJyonOlxuICAgICAgICByZXR1cm4gYCR7bm9kb3R9JHtPTkVfQ0hBUn0ke3N0YXJ9YDtcblxuICAgICAgY2FzZSAnLionOlxuICAgICAgICByZXR1cm4gYCR7RE9UX0xJVEVSQUx9JHtPTkVfQ0hBUn0ke3N0YXJ9YDtcblxuICAgICAgY2FzZSAnKi4qJzpcbiAgICAgICAgcmV0dXJuIGAke25vZG90fSR7c3Rhcn0ke0RPVF9MSVRFUkFMfSR7T05FX0NIQVJ9JHtzdGFyfWA7XG5cbiAgICAgIGNhc2UgJyovKic6XG4gICAgICAgIHJldHVybiBgJHtub2RvdH0ke3N0YXJ9JHtTTEFTSF9MSVRFUkFMfSR7T05FX0NIQVJ9JHtzbGFzaERvdH0ke3N0YXJ9YDtcblxuICAgICAgY2FzZSAnKionOlxuICAgICAgICByZXR1cm4gbm9kb3QgKyBnbG9ic3RhcihvcHRzKTtcblxuICAgICAgY2FzZSAnKiovKic6XG4gICAgICAgIHJldHVybiBgKD86JHtub2RvdH0ke2dsb2JzdGFyKG9wdHMpfSR7U0xBU0hfTElURVJBTH0pPyR7c2xhc2hEb3R9JHtPTkVfQ0hBUn0ke3N0YXJ9YDtcblxuICAgICAgY2FzZSAnKiovKi4qJzpcbiAgICAgICAgcmV0dXJuIGAoPzoke25vZG90fSR7Z2xvYnN0YXIob3B0cyl9JHtTTEFTSF9MSVRFUkFMfSk/JHtzbGFzaERvdH0ke3N0YXJ9JHtET1RfTElURVJBTH0ke09ORV9DSEFSfSR7c3Rhcn1gO1xuXG4gICAgICBjYXNlICcqKi8uKic6XG4gICAgICAgIHJldHVybiBgKD86JHtub2RvdH0ke2dsb2JzdGFyKG9wdHMpfSR7U0xBU0hfTElURVJBTH0pPyR7RE9UX0xJVEVSQUx9JHtPTkVfQ0hBUn0ke3N0YXJ9YDtcblxuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb25zdCBtYXRjaCA9IC9eKC4qPylcXC4oXFx3KykkLy5leGVjKHN0cik7XG4gICAgICAgIGlmICghbWF0Y2gpIHJldHVybjtcblxuICAgICAgICBjb25zdCBzb3VyY2UgPSBjcmVhdGUobWF0Y2hbMV0pO1xuICAgICAgICBpZiAoIXNvdXJjZSkgcmV0dXJuO1xuXG4gICAgICAgIHJldHVybiBzb3VyY2UgKyBET1RfTElURVJBTCArIG1hdGNoWzJdO1xuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICBjb25zdCBvdXRwdXQgPSB1dGlscy5yZW1vdmVQcmVmaXgoaW5wdXQsIHN0YXRlKTtcbiAgbGV0IHNvdXJjZSA9IGNyZWF0ZShvdXRwdXQpO1xuXG4gIGlmIChzb3VyY2UgJiYgb3B0cy5zdHJpY3RTbGFzaGVzICE9PSB0cnVlKSB7XG4gICAgc291cmNlICs9IGAke1NMQVNIX0xJVEVSQUx9P2A7XG4gIH1cblxuICByZXR1cm4gc291cmNlO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBwYXJzZTtcbiIsICIndXNlIHN0cmljdCc7XG5cbmNvbnN0IHBhdGggPSByZXF1aXJlKCdwYXRoJyk7XG5jb25zdCBzY2FuID0gcmVxdWlyZSgnLi9zY2FuJyk7XG5jb25zdCBwYXJzZSA9IHJlcXVpcmUoJy4vcGFyc2UnKTtcbmNvbnN0IHV0aWxzID0gcmVxdWlyZSgnLi91dGlscycpO1xuY29uc3QgY29uc3RhbnRzID0gcmVxdWlyZSgnLi9jb25zdGFudHMnKTtcbmNvbnN0IGlzT2JqZWN0ID0gdmFsID0+IHZhbCAmJiB0eXBlb2YgdmFsID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheSh2YWwpO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBtYXRjaGVyIGZ1bmN0aW9uIGZyb20gb25lIG9yIG1vcmUgZ2xvYiBwYXR0ZXJucy4gVGhlXG4gKiByZXR1cm5lZCBmdW5jdGlvbiB0YWtlcyBhIHN0cmluZyB0byBtYXRjaCBhcyBpdHMgZmlyc3QgYXJndW1lbnQsXG4gKiBhbmQgcmV0dXJucyB0cnVlIGlmIHRoZSBzdHJpbmcgaXMgYSBtYXRjaC4gVGhlIHJldHVybmVkIG1hdGNoZXJcbiAqIGZ1bmN0aW9uIGFsc28gdGFrZXMgYSBib29sZWFuIGFzIHRoZSBzZWNvbmQgYXJndW1lbnQgdGhhdCwgd2hlbiB0cnVlLFxuICogcmV0dXJucyBhbiBvYmplY3Qgd2l0aCBhZGRpdGlvbmFsIGluZm9ybWF0aW9uLlxuICpcbiAqIGBgYGpzXG4gKiBjb25zdCBwaWNvbWF0Y2ggPSByZXF1aXJlKCdwaWNvbWF0Y2gnKTtcbiAqIC8vIHBpY29tYXRjaChnbG9iWywgb3B0aW9uc10pO1xuICpcbiAqIGNvbnN0IGlzTWF0Y2ggPSBwaWNvbWF0Y2goJyouISgqYSknKTtcbiAqIGNvbnNvbGUubG9nKGlzTWF0Y2goJ2EuYScpKTsgLy89PiBmYWxzZVxuICogY29uc29sZS5sb2coaXNNYXRjaCgnYS5iJykpOyAvLz0+IHRydWVcbiAqIGBgYFxuICogQG5hbWUgcGljb21hdGNoXG4gKiBAcGFyYW0ge1N0cmluZ3xBcnJheX0gYGdsb2JzYCBPbmUgb3IgbW9yZSBnbG9iIHBhdHRlcm5zLlxuICogQHBhcmFtIHtPYmplY3Q9fSBgb3B0aW9uc2BcbiAqIEByZXR1cm4ge0Z1bmN0aW9uPX0gUmV0dXJucyBhIG1hdGNoZXIgZnVuY3Rpb24uXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbmNvbnN0IHBpY29tYXRjaCA9IChnbG9iLCBvcHRpb25zLCByZXR1cm5TdGF0ZSA9IGZhbHNlKSA9PiB7XG4gIGlmIChBcnJheS5pc0FycmF5KGdsb2IpKSB7XG4gICAgY29uc3QgZm5zID0gZ2xvYi5tYXAoaW5wdXQgPT4gcGljb21hdGNoKGlucHV0LCBvcHRpb25zLCByZXR1cm5TdGF0ZSkpO1xuICAgIGNvbnN0IGFycmF5TWF0Y2hlciA9IHN0ciA9PiB7XG4gICAgICBmb3IgKGNvbnN0IGlzTWF0Y2ggb2YgZm5zKSB7XG4gICAgICAgIGNvbnN0IHN0YXRlID0gaXNNYXRjaChzdHIpO1xuICAgICAgICBpZiAoc3RhdGUpIHJldHVybiBzdGF0ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9O1xuICAgIHJldHVybiBhcnJheU1hdGNoZXI7XG4gIH1cblxuICBjb25zdCBpc1N0YXRlID0gaXNPYmplY3QoZ2xvYikgJiYgZ2xvYi50b2tlbnMgJiYgZ2xvYi5pbnB1dDtcblxuICBpZiAoZ2xvYiA9PT0gJycgfHwgKHR5cGVvZiBnbG9iICE9PSAnc3RyaW5nJyAmJiAhaXNTdGF0ZSkpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCBwYXR0ZXJuIHRvIGJlIGEgbm9uLWVtcHR5IHN0cmluZycpO1xuICB9XG5cbiAgY29uc3Qgb3B0cyA9IG9wdGlvbnMgfHwge307XG4gIGNvbnN0IHBvc2l4ID0gdXRpbHMuaXNXaW5kb3dzKG9wdGlvbnMpO1xuICBjb25zdCByZWdleCA9IGlzU3RhdGVcbiAgICA/IHBpY29tYXRjaC5jb21waWxlUmUoZ2xvYiwgb3B0aW9ucylcbiAgICA6IHBpY29tYXRjaC5tYWtlUmUoZ2xvYiwgb3B0aW9ucywgZmFsc2UsIHRydWUpO1xuXG4gIGNvbnN0IHN0YXRlID0gcmVnZXguc3RhdGU7XG4gIGRlbGV0ZSByZWdleC5zdGF0ZTtcblxuICBsZXQgaXNJZ25vcmVkID0gKCkgPT4gZmFsc2U7XG4gIGlmIChvcHRzLmlnbm9yZSkge1xuICAgIGNvbnN0IGlnbm9yZU9wdHMgPSB7IC4uLm9wdGlvbnMsIGlnbm9yZTogbnVsbCwgb25NYXRjaDogbnVsbCwgb25SZXN1bHQ6IG51bGwgfTtcbiAgICBpc0lnbm9yZWQgPSBwaWNvbWF0Y2gob3B0cy5pZ25vcmUsIGlnbm9yZU9wdHMsIHJldHVyblN0YXRlKTtcbiAgfVxuXG4gIGNvbnN0IG1hdGNoZXIgPSAoaW5wdXQsIHJldHVybk9iamVjdCA9IGZhbHNlKSA9PiB7XG4gICAgY29uc3QgeyBpc01hdGNoLCBtYXRjaCwgb3V0cHV0IH0gPSBwaWNvbWF0Y2gudGVzdChpbnB1dCwgcmVnZXgsIG9wdGlvbnMsIHsgZ2xvYiwgcG9zaXggfSk7XG4gICAgY29uc3QgcmVzdWx0ID0geyBnbG9iLCBzdGF0ZSwgcmVnZXgsIHBvc2l4LCBpbnB1dCwgb3V0cHV0LCBtYXRjaCwgaXNNYXRjaCB9O1xuXG4gICAgaWYgKHR5cGVvZiBvcHRzLm9uUmVzdWx0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBvcHRzLm9uUmVzdWx0KHJlc3VsdCk7XG4gICAgfVxuXG4gICAgaWYgKGlzTWF0Y2ggPT09IGZhbHNlKSB7XG4gICAgICByZXN1bHQuaXNNYXRjaCA9IGZhbHNlO1xuICAgICAgcmV0dXJuIHJldHVybk9iamVjdCA/IHJlc3VsdCA6IGZhbHNlO1xuICAgIH1cblxuICAgIGlmIChpc0lnbm9yZWQoaW5wdXQpKSB7XG4gICAgICBpZiAodHlwZW9mIG9wdHMub25JZ25vcmUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgb3B0cy5vbklnbm9yZShyZXN1bHQpO1xuICAgICAgfVxuICAgICAgcmVzdWx0LmlzTWF0Y2ggPSBmYWxzZTtcbiAgICAgIHJldHVybiByZXR1cm5PYmplY3QgPyByZXN1bHQgOiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIG9wdHMub25NYXRjaCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgb3B0cy5vbk1hdGNoKHJlc3VsdCk7XG4gICAgfVxuICAgIHJldHVybiByZXR1cm5PYmplY3QgPyByZXN1bHQgOiB0cnVlO1xuICB9O1xuXG4gIGlmIChyZXR1cm5TdGF0ZSkge1xuICAgIG1hdGNoZXIuc3RhdGUgPSBzdGF0ZTtcbiAgfVxuXG4gIHJldHVybiBtYXRjaGVyO1xufTtcblxuLyoqXG4gKiBUZXN0IGBpbnB1dGAgd2l0aCB0aGUgZ2l2ZW4gYHJlZ2V4YC4gVGhpcyBpcyB1c2VkIGJ5IHRoZSBtYWluXG4gKiBgcGljb21hdGNoKClgIGZ1bmN0aW9uIHRvIHRlc3QgdGhlIGlucHV0IHN0cmluZy5cbiAqXG4gKiBgYGBqc1xuICogY29uc3QgcGljb21hdGNoID0gcmVxdWlyZSgncGljb21hdGNoJyk7XG4gKiAvLyBwaWNvbWF0Y2gudGVzdChpbnB1dCwgcmVnZXhbLCBvcHRpb25zXSk7XG4gKlxuICogY29uc29sZS5sb2cocGljb21hdGNoLnRlc3QoJ2Zvby9iYXInLCAvXig/OihbXi9dKj8pXFwvKFteL10qPykpJC8pKTtcbiAqIC8vIHsgaXNNYXRjaDogdHJ1ZSwgbWF0Y2g6IFsgJ2Zvby8nLCAnZm9vJywgJ2JhcicgXSwgb3V0cHV0OiAnZm9vL2JhcicgfVxuICogYGBgXG4gKiBAcGFyYW0ge1N0cmluZ30gYGlucHV0YCBTdHJpbmcgdG8gdGVzdC5cbiAqIEBwYXJhbSB7UmVnRXhwfSBgcmVnZXhgXG4gKiBAcmV0dXJuIHtPYmplY3R9IFJldHVybnMgYW4gb2JqZWN0IHdpdGggbWF0Y2hpbmcgaW5mby5cbiAqIEBhcGkgcHVibGljXG4gKi9cblxucGljb21hdGNoLnRlc3QgPSAoaW5wdXQsIHJlZ2V4LCBvcHRpb25zLCB7IGdsb2IsIHBvc2l4IH0gPSB7fSkgPT4ge1xuICBpZiAodHlwZW9mIGlucHV0ICE9PSAnc3RyaW5nJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0V4cGVjdGVkIGlucHV0IHRvIGJlIGEgc3RyaW5nJyk7XG4gIH1cblxuICBpZiAoaW5wdXQgPT09ICcnKSB7XG4gICAgcmV0dXJuIHsgaXNNYXRjaDogZmFsc2UsIG91dHB1dDogJycgfTtcbiAgfVxuXG4gIGNvbnN0IG9wdHMgPSBvcHRpb25zIHx8IHt9O1xuICBjb25zdCBmb3JtYXQgPSBvcHRzLmZvcm1hdCB8fCAocG9zaXggPyB1dGlscy50b1Bvc2l4U2xhc2hlcyA6IG51bGwpO1xuICBsZXQgbWF0Y2ggPSBpbnB1dCA9PT0gZ2xvYjtcbiAgbGV0IG91dHB1dCA9IChtYXRjaCAmJiBmb3JtYXQpID8gZm9ybWF0KGlucHV0KSA6IGlucHV0O1xuXG4gIGlmIChtYXRjaCA9PT0gZmFsc2UpIHtcbiAgICBvdXRwdXQgPSBmb3JtYXQgPyBmb3JtYXQoaW5wdXQpIDogaW5wdXQ7XG4gICAgbWF0Y2ggPSBvdXRwdXQgPT09IGdsb2I7XG4gIH1cblxuICBpZiAobWF0Y2ggPT09IGZhbHNlIHx8IG9wdHMuY2FwdHVyZSA9PT0gdHJ1ZSkge1xuICAgIGlmIChvcHRzLm1hdGNoQmFzZSA9PT0gdHJ1ZSB8fCBvcHRzLmJhc2VuYW1lID09PSB0cnVlKSB7XG4gICAgICBtYXRjaCA9IHBpY29tYXRjaC5tYXRjaEJhc2UoaW5wdXQsIHJlZ2V4LCBvcHRpb25zLCBwb3NpeCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG1hdGNoID0gcmVnZXguZXhlYyhvdXRwdXQpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7IGlzTWF0Y2g6IEJvb2xlYW4obWF0Y2gpLCBtYXRjaCwgb3V0cHV0IH07XG59O1xuXG4vKipcbiAqIE1hdGNoIHRoZSBiYXNlbmFtZSBvZiBhIGZpbGVwYXRoLlxuICpcbiAqIGBgYGpzXG4gKiBjb25zdCBwaWNvbWF0Y2ggPSByZXF1aXJlKCdwaWNvbWF0Y2gnKTtcbiAqIC8vIHBpY29tYXRjaC5tYXRjaEJhc2UoaW5wdXQsIGdsb2JbLCBvcHRpb25zXSk7XG4gKiBjb25zb2xlLmxvZyhwaWNvbWF0Y2gubWF0Y2hCYXNlKCdmb28vYmFyLmpzJywgJyouanMnKTsgLy8gdHJ1ZVxuICogYGBgXG4gKiBAcGFyYW0ge1N0cmluZ30gYGlucHV0YCBTdHJpbmcgdG8gdGVzdC5cbiAqIEBwYXJhbSB7UmVnRXhwfFN0cmluZ30gYGdsb2JgIEdsb2IgcGF0dGVybiBvciByZWdleCBjcmVhdGVkIGJ5IFsubWFrZVJlXSgjbWFrZVJlKS5cbiAqIEByZXR1cm4ge0Jvb2xlYW59XG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbnBpY29tYXRjaC5tYXRjaEJhc2UgPSAoaW5wdXQsIGdsb2IsIG9wdGlvbnMsIHBvc2l4ID0gdXRpbHMuaXNXaW5kb3dzKG9wdGlvbnMpKSA9PiB7XG4gIGNvbnN0IHJlZ2V4ID0gZ2xvYiBpbnN0YW5jZW9mIFJlZ0V4cCA/IGdsb2IgOiBwaWNvbWF0Y2gubWFrZVJlKGdsb2IsIG9wdGlvbnMpO1xuICByZXR1cm4gcmVnZXgudGVzdChwYXRoLmJhc2VuYW1lKGlucHV0KSk7XG59O1xuXG4vKipcbiAqIFJldHVybnMgdHJ1ZSBpZiAqKmFueSoqIG9mIHRoZSBnaXZlbiBnbG9iIGBwYXR0ZXJuc2AgbWF0Y2ggdGhlIHNwZWNpZmllZCBgc3RyaW5nYC5cbiAqXG4gKiBgYGBqc1xuICogY29uc3QgcGljb21hdGNoID0gcmVxdWlyZSgncGljb21hdGNoJyk7XG4gKiAvLyBwaWNvbWF0Y2guaXNNYXRjaChzdHJpbmcsIHBhdHRlcm5zWywgb3B0aW9uc10pO1xuICpcbiAqIGNvbnNvbGUubG9nKHBpY29tYXRjaC5pc01hdGNoKCdhLmEnLCBbJ2IuKicsICcqLmEnXSkpOyAvLz0+IHRydWVcbiAqIGNvbnNvbGUubG9nKHBpY29tYXRjaC5pc01hdGNoKCdhLmEnLCAnYi4qJykpOyAvLz0+IGZhbHNlXG4gKiBgYGBcbiAqIEBwYXJhbSB7U3RyaW5nfEFycmF5fSBzdHIgVGhlIHN0cmluZyB0byB0ZXN0LlxuICogQHBhcmFtIHtTdHJpbmd8QXJyYXl9IHBhdHRlcm5zIE9uZSBvciBtb3JlIGdsb2IgcGF0dGVybnMgdG8gdXNlIGZvciBtYXRjaGluZy5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9uc10gU2VlIGF2YWlsYWJsZSBbb3B0aW9uc10oI29wdGlvbnMpLlxuICogQHJldHVybiB7Qm9vbGVhbn0gUmV0dXJucyB0cnVlIGlmIGFueSBwYXR0ZXJucyBtYXRjaCBgc3RyYFxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5waWNvbWF0Y2guaXNNYXRjaCA9IChzdHIsIHBhdHRlcm5zLCBvcHRpb25zKSA9PiBwaWNvbWF0Y2gocGF0dGVybnMsIG9wdGlvbnMpKHN0cik7XG5cbi8qKlxuICogUGFyc2UgYSBnbG9iIHBhdHRlcm4gdG8gY3JlYXRlIHRoZSBzb3VyY2Ugc3RyaW5nIGZvciBhIHJlZ3VsYXJcbiAqIGV4cHJlc3Npb24uXG4gKlxuICogYGBganNcbiAqIGNvbnN0IHBpY29tYXRjaCA9IHJlcXVpcmUoJ3BpY29tYXRjaCcpO1xuICogY29uc3QgcmVzdWx0ID0gcGljb21hdGNoLnBhcnNlKHBhdHRlcm5bLCBvcHRpb25zXSk7XG4gKiBgYGBcbiAqIEBwYXJhbSB7U3RyaW5nfSBgcGF0dGVybmBcbiAqIEBwYXJhbSB7T2JqZWN0fSBgb3B0aW9uc2BcbiAqIEByZXR1cm4ge09iamVjdH0gUmV0dXJucyBhbiBvYmplY3Qgd2l0aCB1c2VmdWwgcHJvcGVydGllcyBhbmQgb3V0cHV0IHRvIGJlIHVzZWQgYXMgYSByZWdleCBzb3VyY2Ugc3RyaW5nLlxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5waWNvbWF0Y2gucGFyc2UgPSAocGF0dGVybiwgb3B0aW9ucykgPT4ge1xuICBpZiAoQXJyYXkuaXNBcnJheShwYXR0ZXJuKSkgcmV0dXJuIHBhdHRlcm4ubWFwKHAgPT4gcGljb21hdGNoLnBhcnNlKHAsIG9wdGlvbnMpKTtcbiAgcmV0dXJuIHBhcnNlKHBhdHRlcm4sIHsgLi4ub3B0aW9ucywgZmFzdHBhdGhzOiBmYWxzZSB9KTtcbn07XG5cbi8qKlxuICogU2NhbiBhIGdsb2IgcGF0dGVybiB0byBzZXBhcmF0ZSB0aGUgcGF0dGVybiBpbnRvIHNlZ21lbnRzLlxuICpcbiAqIGBgYGpzXG4gKiBjb25zdCBwaWNvbWF0Y2ggPSByZXF1aXJlKCdwaWNvbWF0Y2gnKTtcbiAqIC8vIHBpY29tYXRjaC5zY2FuKGlucHV0Wywgb3B0aW9uc10pO1xuICpcbiAqIGNvbnN0IHJlc3VsdCA9IHBpY29tYXRjaC5zY2FuKCchLi9mb28vKi5qcycpO1xuICogY29uc29sZS5sb2cocmVzdWx0KTtcbiAqIHsgcHJlZml4OiAnIS4vJyxcbiAqICAgaW5wdXQ6ICchLi9mb28vKi5qcycsXG4gKiAgIHN0YXJ0OiAzLFxuICogICBiYXNlOiAnZm9vJyxcbiAqICAgZ2xvYjogJyouanMnLFxuICogICBpc0JyYWNlOiBmYWxzZSxcbiAqICAgaXNCcmFja2V0OiBmYWxzZSxcbiAqICAgaXNHbG9iOiB0cnVlLFxuICogICBpc0V4dGdsb2I6IGZhbHNlLFxuICogICBpc0dsb2JzdGFyOiBmYWxzZSxcbiAqICAgbmVnYXRlZDogdHJ1ZSB9XG4gKiBgYGBcbiAqIEBwYXJhbSB7U3RyaW5nfSBgaW5wdXRgIEdsb2IgcGF0dGVybiB0byBzY2FuLlxuICogQHBhcmFtIHtPYmplY3R9IGBvcHRpb25zYFxuICogQHJldHVybiB7T2JqZWN0fSBSZXR1cm5zIGFuIG9iamVjdCB3aXRoXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbnBpY29tYXRjaC5zY2FuID0gKGlucHV0LCBvcHRpb25zKSA9PiBzY2FuKGlucHV0LCBvcHRpb25zKTtcblxuLyoqXG4gKiBDb21waWxlIGEgcmVndWxhciBleHByZXNzaW9uIGZyb20gdGhlIGBzdGF0ZWAgb2JqZWN0IHJldHVybmVkIGJ5IHRoZVxuICogW3BhcnNlKCldKCNwYXJzZSkgbWV0aG9kLlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBgc3RhdGVgXG4gKiBAcGFyYW0ge09iamVjdH0gYG9wdGlvbnNgXG4gKiBAcGFyYW0ge0Jvb2xlYW59IGByZXR1cm5PdXRwdXRgIEludGVuZGVkIGZvciBpbXBsZW1lbnRvcnMsIHRoaXMgYXJndW1lbnQgYWxsb3dzIHlvdSB0byByZXR1cm4gdGhlIHJhdyBvdXRwdXQgZnJvbSB0aGUgcGFyc2VyLlxuICogQHBhcmFtIHtCb29sZWFufSBgcmV0dXJuU3RhdGVgIEFkZHMgdGhlIHN0YXRlIHRvIGEgYHN0YXRlYCBwcm9wZXJ0eSBvbiB0aGUgcmV0dXJuZWQgcmVnZXguIFVzZWZ1bCBmb3IgaW1wbGVtZW50b3JzIGFuZCBkZWJ1Z2dpbmcuXG4gKiBAcmV0dXJuIHtSZWdFeHB9XG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbnBpY29tYXRjaC5jb21waWxlUmUgPSAoc3RhdGUsIG9wdGlvbnMsIHJldHVybk91dHB1dCA9IGZhbHNlLCByZXR1cm5TdGF0ZSA9IGZhbHNlKSA9PiB7XG4gIGlmIChyZXR1cm5PdXRwdXQgPT09IHRydWUpIHtcbiAgICByZXR1cm4gc3RhdGUub3V0cHV0O1xuICB9XG5cbiAgY29uc3Qgb3B0cyA9IG9wdGlvbnMgfHwge307XG4gIGNvbnN0IHByZXBlbmQgPSBvcHRzLmNvbnRhaW5zID8gJycgOiAnXic7XG4gIGNvbnN0IGFwcGVuZCA9IG9wdHMuY29udGFpbnMgPyAnJyA6ICckJztcblxuICBsZXQgc291cmNlID0gYCR7cHJlcGVuZH0oPzoke3N0YXRlLm91dHB1dH0pJHthcHBlbmR9YDtcbiAgaWYgKHN0YXRlICYmIHN0YXRlLm5lZ2F0ZWQgPT09IHRydWUpIHtcbiAgICBzb3VyY2UgPSBgXig/ISR7c291cmNlfSkuKiRgO1xuICB9XG5cbiAgY29uc3QgcmVnZXggPSBwaWNvbWF0Y2gudG9SZWdleChzb3VyY2UsIG9wdGlvbnMpO1xuICBpZiAocmV0dXJuU3RhdGUgPT09IHRydWUpIHtcbiAgICByZWdleC5zdGF0ZSA9IHN0YXRlO1xuICB9XG5cbiAgcmV0dXJuIHJlZ2V4O1xufTtcblxuLyoqXG4gKiBDcmVhdGUgYSByZWd1bGFyIGV4cHJlc3Npb24gZnJvbSBhIHBhcnNlZCBnbG9iIHBhdHRlcm4uXG4gKlxuICogYGBganNcbiAqIGNvbnN0IHBpY29tYXRjaCA9IHJlcXVpcmUoJ3BpY29tYXRjaCcpO1xuICogY29uc3Qgc3RhdGUgPSBwaWNvbWF0Y2gucGFyc2UoJyouanMnKTtcbiAqIC8vIHBpY29tYXRjaC5jb21waWxlUmUoc3RhdGVbLCBvcHRpb25zXSk7XG4gKlxuICogY29uc29sZS5sb2cocGljb21hdGNoLmNvbXBpbGVSZShzdGF0ZSkpO1xuICogLy89PiAvXig/Oig/IVxcLikoPz0uKVteL10qP1xcLmpzKSQvXG4gKiBgYGBcbiAqIEBwYXJhbSB7U3RyaW5nfSBgc3RhdGVgIFRoZSBvYmplY3QgcmV0dXJuZWQgZnJvbSB0aGUgYC5wYXJzZWAgbWV0aG9kLlxuICogQHBhcmFtIHtPYmplY3R9IGBvcHRpb25zYFxuICogQHBhcmFtIHtCb29sZWFufSBgcmV0dXJuT3V0cHV0YCBJbXBsZW1lbnRvcnMgbWF5IHVzZSB0aGlzIGFyZ3VtZW50IHRvIHJldHVybiB0aGUgY29tcGlsZWQgb3V0cHV0LCBpbnN0ZWFkIG9mIGEgcmVndWxhciBleHByZXNzaW9uLiBUaGlzIGlzIG5vdCBleHBvc2VkIG9uIHRoZSBvcHRpb25zIHRvIHByZXZlbnQgZW5kLXVzZXJzIGZyb20gbXV0YXRpbmcgdGhlIHJlc3VsdC5cbiAqIEBwYXJhbSB7Qm9vbGVhbn0gYHJldHVyblN0YXRlYCBJbXBsZW1lbnRvcnMgbWF5IHVzZSB0aGlzIGFyZ3VtZW50IHRvIHJldHVybiB0aGUgc3RhdGUgZnJvbSB0aGUgcGFyc2VkIGdsb2Igd2l0aCB0aGUgcmV0dXJuZWQgcmVndWxhciBleHByZXNzaW9uLlxuICogQHJldHVybiB7UmVnRXhwfSBSZXR1cm5zIGEgcmVnZXggY3JlYXRlZCBmcm9tIHRoZSBnaXZlbiBwYXR0ZXJuLlxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5waWNvbWF0Y2gubWFrZVJlID0gKGlucHV0LCBvcHRpb25zID0ge30sIHJldHVybk91dHB1dCA9IGZhbHNlLCByZXR1cm5TdGF0ZSA9IGZhbHNlKSA9PiB7XG4gIGlmICghaW5wdXQgfHwgdHlwZW9mIGlucHV0ICE9PSAnc3RyaW5nJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0V4cGVjdGVkIGEgbm9uLWVtcHR5IHN0cmluZycpO1xuICB9XG5cbiAgbGV0IHBhcnNlZCA9IHsgbmVnYXRlZDogZmFsc2UsIGZhc3RwYXRoczogdHJ1ZSB9O1xuXG4gIGlmIChvcHRpb25zLmZhc3RwYXRocyAhPT0gZmFsc2UgJiYgKGlucHV0WzBdID09PSAnLicgfHwgaW5wdXRbMF0gPT09ICcqJykpIHtcbiAgICBwYXJzZWQub3V0cHV0ID0gcGFyc2UuZmFzdHBhdGhzKGlucHV0LCBvcHRpb25zKTtcbiAgfVxuXG4gIGlmICghcGFyc2VkLm91dHB1dCkge1xuICAgIHBhcnNlZCA9IHBhcnNlKGlucHV0LCBvcHRpb25zKTtcbiAgfVxuXG4gIHJldHVybiBwaWNvbWF0Y2guY29tcGlsZVJlKHBhcnNlZCwgb3B0aW9ucywgcmV0dXJuT3V0cHV0LCByZXR1cm5TdGF0ZSk7XG59O1xuXG4vKipcbiAqIENyZWF0ZSBhIHJlZ3VsYXIgZXhwcmVzc2lvbiBmcm9tIHRoZSBnaXZlbiByZWdleCBzb3VyY2Ugc3RyaW5nLlxuICpcbiAqIGBgYGpzXG4gKiBjb25zdCBwaWNvbWF0Y2ggPSByZXF1aXJlKCdwaWNvbWF0Y2gnKTtcbiAqIC8vIHBpY29tYXRjaC50b1JlZ2V4KHNvdXJjZVssIG9wdGlvbnNdKTtcbiAqXG4gKiBjb25zdCB7IG91dHB1dCB9ID0gcGljb21hdGNoLnBhcnNlKCcqLmpzJyk7XG4gKiBjb25zb2xlLmxvZyhwaWNvbWF0Y2gudG9SZWdleChvdXRwdXQpKTtcbiAqIC8vPT4gL14oPzooPyFcXC4pKD89LilbXi9dKj9cXC5qcykkL1xuICogYGBgXG4gKiBAcGFyYW0ge1N0cmluZ30gYHNvdXJjZWAgUmVndWxhciBleHByZXNzaW9uIHNvdXJjZSBzdHJpbmcuXG4gKiBAcGFyYW0ge09iamVjdH0gYG9wdGlvbnNgXG4gKiBAcmV0dXJuIHtSZWdFeHB9XG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbnBpY29tYXRjaC50b1JlZ2V4ID0gKHNvdXJjZSwgb3B0aW9ucykgPT4ge1xuICB0cnkge1xuICAgIGNvbnN0IG9wdHMgPSBvcHRpb25zIHx8IHt9O1xuICAgIHJldHVybiBuZXcgUmVnRXhwKHNvdXJjZSwgb3B0cy5mbGFncyB8fCAob3B0cy5ub2Nhc2UgPyAnaScgOiAnJykpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLmRlYnVnID09PSB0cnVlKSB0aHJvdyBlcnI7XG4gICAgcmV0dXJuIC8kXi87XG4gIH1cbn07XG5cbi8qKlxuICogUGljb21hdGNoIGNvbnN0YW50cy5cbiAqIEByZXR1cm4ge09iamVjdH1cbiAqL1xuXG5waWNvbWF0Y2guY29uc3RhbnRzID0gY29uc3RhbnRzO1xuXG4vKipcbiAqIEV4cG9zZSBcInBpY29tYXRjaFwiXG4gKi9cblxubW9kdWxlLmV4cG9ydHMgPSBwaWNvbWF0Y2g7XG4iLCAiJ3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vbGliL3BpY29tYXRjaCcpO1xuIiwgIid1c2Ugc3RyaWN0JztcblxuY29uc3QgdXRpbCA9IHJlcXVpcmUoJ3V0aWwnKTtcbmNvbnN0IGJyYWNlcyA9IHJlcXVpcmUoJ2JyYWNlcycpO1xuY29uc3QgcGljb21hdGNoID0gcmVxdWlyZSgncGljb21hdGNoJyk7XG5jb25zdCB1dGlscyA9IHJlcXVpcmUoJ3BpY29tYXRjaC9saWIvdXRpbHMnKTtcbmNvbnN0IGlzRW1wdHlTdHJpbmcgPSB2YWwgPT4gdmFsID09PSAnJyB8fCB2YWwgPT09ICcuLyc7XG5cbi8qKlxuICogUmV0dXJucyBhbiBhcnJheSBvZiBzdHJpbmdzIHRoYXQgbWF0Y2ggb25lIG9yIG1vcmUgZ2xvYiBwYXR0ZXJucy5cbiAqXG4gKiBgYGBqc1xuICogY29uc3QgbW0gPSByZXF1aXJlKCdtaWNyb21hdGNoJyk7XG4gKiAvLyBtbShsaXN0LCBwYXR0ZXJuc1ssIG9wdGlvbnNdKTtcbiAqXG4gKiBjb25zb2xlLmxvZyhtbShbJ2EuanMnLCAnYS50eHQnXSwgWycqLmpzJ10pKTtcbiAqIC8vPT4gWyAnYS5qcycgXVxuICogYGBgXG4gKiBAcGFyYW0ge1N0cmluZ3xBcnJheTxzdHJpbmc+fSBgbGlzdGAgTGlzdCBvZiBzdHJpbmdzIHRvIG1hdGNoLlxuICogQHBhcmFtIHtTdHJpbmd8QXJyYXk8c3RyaW5nPn0gYHBhdHRlcm5zYCBPbmUgb3IgbW9yZSBnbG9iIHBhdHRlcm5zIHRvIHVzZSBmb3IgbWF0Y2hpbmcuXG4gKiBAcGFyYW0ge09iamVjdH0gYG9wdGlvbnNgIFNlZSBhdmFpbGFibGUgW29wdGlvbnNdKCNvcHRpb25zKVxuICogQHJldHVybiB7QXJyYXl9IFJldHVybnMgYW4gYXJyYXkgb2YgbWF0Y2hlc1xuICogQHN1bW1hcnkgZmFsc2VcbiAqIEBhcGkgcHVibGljXG4gKi9cblxuY29uc3QgbWljcm9tYXRjaCA9IChsaXN0LCBwYXR0ZXJucywgb3B0aW9ucykgPT4ge1xuICBwYXR0ZXJucyA9IFtdLmNvbmNhdChwYXR0ZXJucyk7XG4gIGxpc3QgPSBbXS5jb25jYXQobGlzdCk7XG5cbiAgbGV0IG9taXQgPSBuZXcgU2V0KCk7XG4gIGxldCBrZWVwID0gbmV3IFNldCgpO1xuICBsZXQgaXRlbXMgPSBuZXcgU2V0KCk7XG4gIGxldCBuZWdhdGl2ZXMgPSAwO1xuXG4gIGxldCBvblJlc3VsdCA9IHN0YXRlID0+IHtcbiAgICBpdGVtcy5hZGQoc3RhdGUub3V0cHV0KTtcbiAgICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLm9uUmVzdWx0KSB7XG4gICAgICBvcHRpb25zLm9uUmVzdWx0KHN0YXRlKTtcbiAgICB9XG4gIH07XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBwYXR0ZXJucy5sZW5ndGg7IGkrKykge1xuICAgIGxldCBpc01hdGNoID0gcGljb21hdGNoKFN0cmluZyhwYXR0ZXJuc1tpXSksIHsgLi4ub3B0aW9ucywgb25SZXN1bHQgfSwgdHJ1ZSk7XG4gICAgbGV0IG5lZ2F0ZWQgPSBpc01hdGNoLnN0YXRlLm5lZ2F0ZWQgfHwgaXNNYXRjaC5zdGF0ZS5uZWdhdGVkRXh0Z2xvYjtcbiAgICBpZiAobmVnYXRlZCkgbmVnYXRpdmVzKys7XG5cbiAgICBmb3IgKGxldCBpdGVtIG9mIGxpc3QpIHtcbiAgICAgIGxldCBtYXRjaGVkID0gaXNNYXRjaChpdGVtLCB0cnVlKTtcblxuICAgICAgbGV0IG1hdGNoID0gbmVnYXRlZCA/ICFtYXRjaGVkLmlzTWF0Y2ggOiBtYXRjaGVkLmlzTWF0Y2g7XG4gICAgICBpZiAoIW1hdGNoKSBjb250aW51ZTtcblxuICAgICAgaWYgKG5lZ2F0ZWQpIHtcbiAgICAgICAgb21pdC5hZGQobWF0Y2hlZC5vdXRwdXQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb21pdC5kZWxldGUobWF0Y2hlZC5vdXRwdXQpO1xuICAgICAgICBrZWVwLmFkZChtYXRjaGVkLm91dHB1dCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbGV0IHJlc3VsdCA9IG5lZ2F0aXZlcyA9PT0gcGF0dGVybnMubGVuZ3RoID8gWy4uLml0ZW1zXSA6IFsuLi5rZWVwXTtcbiAgbGV0IG1hdGNoZXMgPSByZXN1bHQuZmlsdGVyKGl0ZW0gPT4gIW9taXQuaGFzKGl0ZW0pKTtcblxuICBpZiAob3B0aW9ucyAmJiBtYXRjaGVzLmxlbmd0aCA9PT0gMCkge1xuICAgIGlmIChvcHRpb25zLmZhaWxnbG9iID09PSB0cnVlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYE5vIG1hdGNoZXMgZm91bmQgZm9yIFwiJHtwYXR0ZXJucy5qb2luKCcsICcpfVwiYCk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMubm9udWxsID09PSB0cnVlIHx8IG9wdGlvbnMubnVsbGdsb2IgPT09IHRydWUpIHtcbiAgICAgIHJldHVybiBvcHRpb25zLnVuZXNjYXBlID8gcGF0dGVybnMubWFwKHAgPT4gcC5yZXBsYWNlKC9cXFxcL2csICcnKSkgOiBwYXR0ZXJucztcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbWF0Y2hlcztcbn07XG5cbi8qKlxuICogQmFja3dhcmRzIGNvbXBhdGliaWxpdHlcbiAqL1xuXG5taWNyb21hdGNoLm1hdGNoID0gbWljcm9tYXRjaDtcblxuLyoqXG4gKiBSZXR1cm5zIGEgbWF0Y2hlciBmdW5jdGlvbiBmcm9tIHRoZSBnaXZlbiBnbG9iIGBwYXR0ZXJuYCBhbmQgYG9wdGlvbnNgLlxuICogVGhlIHJldHVybmVkIGZ1bmN0aW9uIHRha2VzIGEgc3RyaW5nIHRvIG1hdGNoIGFzIGl0cyBvbmx5IGFyZ3VtZW50IGFuZCByZXR1cm5zXG4gKiB0cnVlIGlmIHRoZSBzdHJpbmcgaXMgYSBtYXRjaC5cbiAqXG4gKiBgYGBqc1xuICogY29uc3QgbW0gPSByZXF1aXJlKCdtaWNyb21hdGNoJyk7XG4gKiAvLyBtbS5tYXRjaGVyKHBhdHRlcm5bLCBvcHRpb25zXSk7XG4gKlxuICogY29uc3QgaXNNYXRjaCA9IG1tLm1hdGNoZXIoJyouISgqYSknKTtcbiAqIGNvbnNvbGUubG9nKGlzTWF0Y2goJ2EuYScpKTsgLy89PiBmYWxzZVxuICogY29uc29sZS5sb2coaXNNYXRjaCgnYS5iJykpOyAvLz0+IHRydWVcbiAqIGBgYFxuICogQHBhcmFtIHtTdHJpbmd9IGBwYXR0ZXJuYCBHbG9iIHBhdHRlcm5cbiAqIEBwYXJhbSB7T2JqZWN0fSBgb3B0aW9uc2BcbiAqIEByZXR1cm4ge0Z1bmN0aW9ufSBSZXR1cm5zIGEgbWF0Y2hlciBmdW5jdGlvbi5cbiAqIEBhcGkgcHVibGljXG4gKi9cblxubWljcm9tYXRjaC5tYXRjaGVyID0gKHBhdHRlcm4sIG9wdGlvbnMpID0+IHBpY29tYXRjaChwYXR0ZXJuLCBvcHRpb25zKTtcblxuLyoqXG4gKiBSZXR1cm5zIHRydWUgaWYgKiphbnkqKiBvZiB0aGUgZ2l2ZW4gZ2xvYiBgcGF0dGVybnNgIG1hdGNoIHRoZSBzcGVjaWZpZWQgYHN0cmluZ2AuXG4gKlxuICogYGBganNcbiAqIGNvbnN0IG1tID0gcmVxdWlyZSgnbWljcm9tYXRjaCcpO1xuICogLy8gbW0uaXNNYXRjaChzdHJpbmcsIHBhdHRlcm5zWywgb3B0aW9uc10pO1xuICpcbiAqIGNvbnNvbGUubG9nKG1tLmlzTWF0Y2goJ2EuYScsIFsnYi4qJywgJyouYSddKSk7IC8vPT4gdHJ1ZVxuICogY29uc29sZS5sb2cobW0uaXNNYXRjaCgnYS5hJywgJ2IuKicpKTsgLy89PiBmYWxzZVxuICogYGBgXG4gKiBAcGFyYW0ge1N0cmluZ30gYHN0cmAgVGhlIHN0cmluZyB0byB0ZXN0LlxuICogQHBhcmFtIHtTdHJpbmd8QXJyYXl9IGBwYXR0ZXJuc2AgT25lIG9yIG1vcmUgZ2xvYiBwYXR0ZXJucyB0byB1c2UgZm9yIG1hdGNoaW5nLlxuICogQHBhcmFtIHtPYmplY3R9IGBbb3B0aW9uc11gIFNlZSBhdmFpbGFibGUgW29wdGlvbnNdKCNvcHRpb25zKS5cbiAqIEByZXR1cm4ge0Jvb2xlYW59IFJldHVybnMgdHJ1ZSBpZiBhbnkgcGF0dGVybnMgbWF0Y2ggYHN0cmBcbiAqIEBhcGkgcHVibGljXG4gKi9cblxubWljcm9tYXRjaC5pc01hdGNoID0gKHN0ciwgcGF0dGVybnMsIG9wdGlvbnMpID0+IHBpY29tYXRjaChwYXR0ZXJucywgb3B0aW9ucykoc3RyKTtcblxuLyoqXG4gKiBCYWNrd2FyZHMgY29tcGF0aWJpbGl0eVxuICovXG5cbm1pY3JvbWF0Y2guYW55ID0gbWljcm9tYXRjaC5pc01hdGNoO1xuXG4vKipcbiAqIFJldHVybnMgYSBsaXN0IG9mIHN0cmluZ3MgdGhhdCBfKipkbyBub3QgbWF0Y2ggYW55KipfIG9mIHRoZSBnaXZlbiBgcGF0dGVybnNgLlxuICpcbiAqIGBgYGpzXG4gKiBjb25zdCBtbSA9IHJlcXVpcmUoJ21pY3JvbWF0Y2gnKTtcbiAqIC8vIG1tLm5vdChsaXN0LCBwYXR0ZXJuc1ssIG9wdGlvbnNdKTtcbiAqXG4gKiBjb25zb2xlLmxvZyhtbS5ub3QoWydhLmEnLCAnYi5iJywgJ2MuYyddLCAnKi5hJykpO1xuICogLy89PiBbJ2IuYicsICdjLmMnXVxuICogYGBgXG4gKiBAcGFyYW0ge0FycmF5fSBgbGlzdGAgQXJyYXkgb2Ygc3RyaW5ncyB0byBtYXRjaC5cbiAqIEBwYXJhbSB7U3RyaW5nfEFycmF5fSBgcGF0dGVybnNgIE9uZSBvciBtb3JlIGdsb2IgcGF0dGVybiB0byB1c2UgZm9yIG1hdGNoaW5nLlxuICogQHBhcmFtIHtPYmplY3R9IGBvcHRpb25zYCBTZWUgYXZhaWxhYmxlIFtvcHRpb25zXSgjb3B0aW9ucykgZm9yIGNoYW5naW5nIGhvdyBtYXRjaGVzIGFyZSBwZXJmb3JtZWRcbiAqIEByZXR1cm4ge0FycmF5fSBSZXR1cm5zIGFuIGFycmF5IG9mIHN0cmluZ3MgdGhhdCAqKmRvIG5vdCBtYXRjaCoqIHRoZSBnaXZlbiBwYXR0ZXJucy5cbiAqIEBhcGkgcHVibGljXG4gKi9cblxubWljcm9tYXRjaC5ub3QgPSAobGlzdCwgcGF0dGVybnMsIG9wdGlvbnMgPSB7fSkgPT4ge1xuICBwYXR0ZXJucyA9IFtdLmNvbmNhdChwYXR0ZXJucykubWFwKFN0cmluZyk7XG4gIGxldCByZXN1bHQgPSBuZXcgU2V0KCk7XG4gIGxldCBpdGVtcyA9IFtdO1xuXG4gIGxldCBvblJlc3VsdCA9IHN0YXRlID0+IHtcbiAgICBpZiAob3B0aW9ucy5vblJlc3VsdCkgb3B0aW9ucy5vblJlc3VsdChzdGF0ZSk7XG4gICAgaXRlbXMucHVzaChzdGF0ZS5vdXRwdXQpO1xuICB9O1xuXG4gIGxldCBtYXRjaGVzID0gbmV3IFNldChtaWNyb21hdGNoKGxpc3QsIHBhdHRlcm5zLCB7IC4uLm9wdGlvbnMsIG9uUmVzdWx0IH0pKTtcblxuICBmb3IgKGxldCBpdGVtIG9mIGl0ZW1zKSB7XG4gICAgaWYgKCFtYXRjaGVzLmhhcyhpdGVtKSkge1xuICAgICAgcmVzdWx0LmFkZChpdGVtKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIFsuLi5yZXN1bHRdO1xufTtcblxuLyoqXG4gKiBSZXR1cm5zIHRydWUgaWYgdGhlIGdpdmVuIGBzdHJpbmdgIGNvbnRhaW5zIHRoZSBnaXZlbiBwYXR0ZXJuLiBTaW1pbGFyXG4gKiB0byBbLmlzTWF0Y2hdKCNpc01hdGNoKSBidXQgdGhlIHBhdHRlcm4gY2FuIG1hdGNoIGFueSBwYXJ0IG9mIHRoZSBzdHJpbmcuXG4gKlxuICogYGBganNcbiAqIHZhciBtbSA9IHJlcXVpcmUoJ21pY3JvbWF0Y2gnKTtcbiAqIC8vIG1tLmNvbnRhaW5zKHN0cmluZywgcGF0dGVyblssIG9wdGlvbnNdKTtcbiAqXG4gKiBjb25zb2xlLmxvZyhtbS5jb250YWlucygnYWEvYmIvY2MnLCAnKmInKSk7XG4gKiAvLz0+IHRydWVcbiAqIGNvbnNvbGUubG9nKG1tLmNvbnRhaW5zKCdhYS9iYi9jYycsICcqZCcpKTtcbiAqIC8vPT4gZmFsc2VcbiAqIGBgYFxuICogQHBhcmFtIHtTdHJpbmd9IGBzdHJgIFRoZSBzdHJpbmcgdG8gbWF0Y2guXG4gKiBAcGFyYW0ge1N0cmluZ3xBcnJheX0gYHBhdHRlcm5zYCBHbG9iIHBhdHRlcm4gdG8gdXNlIGZvciBtYXRjaGluZy5cbiAqIEBwYXJhbSB7T2JqZWN0fSBgb3B0aW9uc2AgU2VlIGF2YWlsYWJsZSBbb3B0aW9uc10oI29wdGlvbnMpIGZvciBjaGFuZ2luZyBob3cgbWF0Y2hlcyBhcmUgcGVyZm9ybWVkXG4gKiBAcmV0dXJuIHtCb29sZWFufSBSZXR1cm5zIHRydWUgaWYgYW55IG9mIHRoZSBwYXR0ZXJucyBtYXRjaGVzIGFueSBwYXJ0IG9mIGBzdHJgLlxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5taWNyb21hdGNoLmNvbnRhaW5zID0gKHN0ciwgcGF0dGVybiwgb3B0aW9ucykgPT4ge1xuICBpZiAodHlwZW9mIHN0ciAhPT0gJ3N0cmluZycpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBFeHBlY3RlZCBhIHN0cmluZzogXCIke3V0aWwuaW5zcGVjdChzdHIpfVwiYCk7XG4gIH1cblxuICBpZiAoQXJyYXkuaXNBcnJheShwYXR0ZXJuKSkge1xuICAgIHJldHVybiBwYXR0ZXJuLnNvbWUocCA9PiBtaWNyb21hdGNoLmNvbnRhaW5zKHN0ciwgcCwgb3B0aW9ucykpO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBwYXR0ZXJuID09PSAnc3RyaW5nJykge1xuICAgIGlmIChpc0VtcHR5U3RyaW5nKHN0cikgfHwgaXNFbXB0eVN0cmluZyhwYXR0ZXJuKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmIChzdHIuaW5jbHVkZXMocGF0dGVybikgfHwgKHN0ci5zdGFydHNXaXRoKCcuLycpICYmIHN0ci5zbGljZSgyKS5pbmNsdWRlcyhwYXR0ZXJuKSkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBtaWNyb21hdGNoLmlzTWF0Y2goc3RyLCBwYXR0ZXJuLCB7IC4uLm9wdGlvbnMsIGNvbnRhaW5zOiB0cnVlIH0pO1xufTtcblxuLyoqXG4gKiBGaWx0ZXIgdGhlIGtleXMgb2YgdGhlIGdpdmVuIG9iamVjdCB3aXRoIHRoZSBnaXZlbiBgZ2xvYmAgcGF0dGVyblxuICogYW5kIGBvcHRpb25zYC4gRG9lcyBub3QgYXR0ZW1wdCB0byBtYXRjaCBuZXN0ZWQga2V5cy4gSWYgeW91IG5lZWQgdGhpcyBmZWF0dXJlLFxuICogdXNlIFtnbG9iLW9iamVjdF1bXSBpbnN0ZWFkLlxuICpcbiAqIGBgYGpzXG4gKiBjb25zdCBtbSA9IHJlcXVpcmUoJ21pY3JvbWF0Y2gnKTtcbiAqIC8vIG1tLm1hdGNoS2V5cyhvYmplY3QsIHBhdHRlcm5zWywgb3B0aW9uc10pO1xuICpcbiAqIGNvbnN0IG9iaiA9IHsgYWE6ICdhJywgYWI6ICdiJywgYWM6ICdjJyB9O1xuICogY29uc29sZS5sb2cobW0ubWF0Y2hLZXlzKG9iaiwgJypiJykpO1xuICogLy89PiB7IGFiOiAnYicgfVxuICogYGBgXG4gKiBAcGFyYW0ge09iamVjdH0gYG9iamVjdGAgVGhlIG9iamVjdCB3aXRoIGtleXMgdG8gZmlsdGVyLlxuICogQHBhcmFtIHtTdHJpbmd8QXJyYXl9IGBwYXR0ZXJuc2AgT25lIG9yIG1vcmUgZ2xvYiBwYXR0ZXJucyB0byB1c2UgZm9yIG1hdGNoaW5nLlxuICogQHBhcmFtIHtPYmplY3R9IGBvcHRpb25zYCBTZWUgYXZhaWxhYmxlIFtvcHRpb25zXSgjb3B0aW9ucykgZm9yIGNoYW5naW5nIGhvdyBtYXRjaGVzIGFyZSBwZXJmb3JtZWRcbiAqIEByZXR1cm4ge09iamVjdH0gUmV0dXJucyBhbiBvYmplY3Qgd2l0aCBvbmx5IGtleXMgdGhhdCBtYXRjaCB0aGUgZ2l2ZW4gcGF0dGVybnMuXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbm1pY3JvbWF0Y2gubWF0Y2hLZXlzID0gKG9iaiwgcGF0dGVybnMsIG9wdGlvbnMpID0+IHtcbiAgaWYgKCF1dGlscy5pc09iamVjdChvYmopKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignRXhwZWN0ZWQgdGhlIGZpcnN0IGFyZ3VtZW50IHRvIGJlIGFuIG9iamVjdCcpO1xuICB9XG4gIGxldCBrZXlzID0gbWljcm9tYXRjaChPYmplY3Qua2V5cyhvYmopLCBwYXR0ZXJucywgb3B0aW9ucyk7XG4gIGxldCByZXMgPSB7fTtcbiAgZm9yIChsZXQga2V5IG9mIGtleXMpIHJlc1trZXldID0gb2JqW2tleV07XG4gIHJldHVybiByZXM7XG59O1xuXG4vKipcbiAqIFJldHVybnMgdHJ1ZSBpZiBzb21lIG9mIHRoZSBzdHJpbmdzIGluIHRoZSBnaXZlbiBgbGlzdGAgbWF0Y2ggYW55IG9mIHRoZSBnaXZlbiBnbG9iIGBwYXR0ZXJuc2AuXG4gKlxuICogYGBganNcbiAqIGNvbnN0IG1tID0gcmVxdWlyZSgnbWljcm9tYXRjaCcpO1xuICogLy8gbW0uc29tZShsaXN0LCBwYXR0ZXJuc1ssIG9wdGlvbnNdKTtcbiAqXG4gKiBjb25zb2xlLmxvZyhtbS5zb21lKFsnZm9vLmpzJywgJ2Jhci5qcyddLCBbJyouanMnLCAnIWZvby5qcyddKSk7XG4gKiAvLyB0cnVlXG4gKiBjb25zb2xlLmxvZyhtbS5zb21lKFsnZm9vLmpzJ10sIFsnKi5qcycsICchZm9vLmpzJ10pKTtcbiAqIC8vIGZhbHNlXG4gKiBgYGBcbiAqIEBwYXJhbSB7U3RyaW5nfEFycmF5fSBgbGlzdGAgVGhlIHN0cmluZyBvciBhcnJheSBvZiBzdHJpbmdzIHRvIHRlc3QuIFJldHVybnMgYXMgc29vbiBhcyB0aGUgZmlyc3QgbWF0Y2ggaXMgZm91bmQuXG4gKiBAcGFyYW0ge1N0cmluZ3xBcnJheX0gYHBhdHRlcm5zYCBPbmUgb3IgbW9yZSBnbG9iIHBhdHRlcm5zIHRvIHVzZSBmb3IgbWF0Y2hpbmcuXG4gKiBAcGFyYW0ge09iamVjdH0gYG9wdGlvbnNgIFNlZSBhdmFpbGFibGUgW29wdGlvbnNdKCNvcHRpb25zKSBmb3IgY2hhbmdpbmcgaG93IG1hdGNoZXMgYXJlIHBlcmZvcm1lZFxuICogQHJldHVybiB7Qm9vbGVhbn0gUmV0dXJucyB0cnVlIGlmIGFueSBgcGF0dGVybnNgIG1hdGNoZXMgYW55IG9mIHRoZSBzdHJpbmdzIGluIGBsaXN0YFxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5taWNyb21hdGNoLnNvbWUgPSAobGlzdCwgcGF0dGVybnMsIG9wdGlvbnMpID0+IHtcbiAgbGV0IGl0ZW1zID0gW10uY29uY2F0KGxpc3QpO1xuXG4gIGZvciAobGV0IHBhdHRlcm4gb2YgW10uY29uY2F0KHBhdHRlcm5zKSkge1xuICAgIGxldCBpc01hdGNoID0gcGljb21hdGNoKFN0cmluZyhwYXR0ZXJuKSwgb3B0aW9ucyk7XG4gICAgaWYgKGl0ZW1zLnNvbWUoaXRlbSA9PiBpc01hdGNoKGl0ZW0pKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG4gIHJldHVybiBmYWxzZTtcbn07XG5cbi8qKlxuICogUmV0dXJucyB0cnVlIGlmIGV2ZXJ5IHN0cmluZyBpbiB0aGUgZ2l2ZW4gYGxpc3RgIG1hdGNoZXNcbiAqIGFueSBvZiB0aGUgZ2l2ZW4gZ2xvYiBgcGF0dGVybnNgLlxuICpcbiAqIGBgYGpzXG4gKiBjb25zdCBtbSA9IHJlcXVpcmUoJ21pY3JvbWF0Y2gnKTtcbiAqIC8vIG1tLmV2ZXJ5KGxpc3QsIHBhdHRlcm5zWywgb3B0aW9uc10pO1xuICpcbiAqIGNvbnNvbGUubG9nKG1tLmV2ZXJ5KCdmb28uanMnLCBbJ2Zvby5qcyddKSk7XG4gKiAvLyB0cnVlXG4gKiBjb25zb2xlLmxvZyhtbS5ldmVyeShbJ2Zvby5qcycsICdiYXIuanMnXSwgWycqLmpzJ10pKTtcbiAqIC8vIHRydWVcbiAqIGNvbnNvbGUubG9nKG1tLmV2ZXJ5KFsnZm9vLmpzJywgJ2Jhci5qcyddLCBbJyouanMnLCAnIWZvby5qcyddKSk7XG4gKiAvLyBmYWxzZVxuICogY29uc29sZS5sb2cobW0uZXZlcnkoWydmb28uanMnXSwgWycqLmpzJywgJyFmb28uanMnXSkpO1xuICogLy8gZmFsc2VcbiAqIGBgYFxuICogQHBhcmFtIHtTdHJpbmd8QXJyYXl9IGBsaXN0YCBUaGUgc3RyaW5nIG9yIGFycmF5IG9mIHN0cmluZ3MgdG8gdGVzdC5cbiAqIEBwYXJhbSB7U3RyaW5nfEFycmF5fSBgcGF0dGVybnNgIE9uZSBvciBtb3JlIGdsb2IgcGF0dGVybnMgdG8gdXNlIGZvciBtYXRjaGluZy5cbiAqIEBwYXJhbSB7T2JqZWN0fSBgb3B0aW9uc2AgU2VlIGF2YWlsYWJsZSBbb3B0aW9uc10oI29wdGlvbnMpIGZvciBjaGFuZ2luZyBob3cgbWF0Y2hlcyBhcmUgcGVyZm9ybWVkXG4gKiBAcmV0dXJuIHtCb29sZWFufSBSZXR1cm5zIHRydWUgaWYgYWxsIGBwYXR0ZXJuc2AgbWF0Y2hlcyBhbGwgb2YgdGhlIHN0cmluZ3MgaW4gYGxpc3RgXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbm1pY3JvbWF0Y2guZXZlcnkgPSAobGlzdCwgcGF0dGVybnMsIG9wdGlvbnMpID0+IHtcbiAgbGV0IGl0ZW1zID0gW10uY29uY2F0KGxpc3QpO1xuXG4gIGZvciAobGV0IHBhdHRlcm4gb2YgW10uY29uY2F0KHBhdHRlcm5zKSkge1xuICAgIGxldCBpc01hdGNoID0gcGljb21hdGNoKFN0cmluZyhwYXR0ZXJuKSwgb3B0aW9ucyk7XG4gICAgaWYgKCFpdGVtcy5ldmVyeShpdGVtID0+IGlzTWF0Y2goaXRlbSkpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIHJldHVybiB0cnVlO1xufTtcblxuLyoqXG4gKiBSZXR1cm5zIHRydWUgaWYgKiphbGwqKiBvZiB0aGUgZ2l2ZW4gYHBhdHRlcm5zYCBtYXRjaFxuICogdGhlIHNwZWNpZmllZCBzdHJpbmcuXG4gKlxuICogYGBganNcbiAqIGNvbnN0IG1tID0gcmVxdWlyZSgnbWljcm9tYXRjaCcpO1xuICogLy8gbW0uYWxsKHN0cmluZywgcGF0dGVybnNbLCBvcHRpb25zXSk7XG4gKlxuICogY29uc29sZS5sb2cobW0uYWxsKCdmb28uanMnLCBbJ2Zvby5qcyddKSk7XG4gKiAvLyB0cnVlXG4gKlxuICogY29uc29sZS5sb2cobW0uYWxsKCdmb28uanMnLCBbJyouanMnLCAnIWZvby5qcyddKSk7XG4gKiAvLyBmYWxzZVxuICpcbiAqIGNvbnNvbGUubG9nKG1tLmFsbCgnZm9vLmpzJywgWycqLmpzJywgJ2Zvby5qcyddKSk7XG4gKiAvLyB0cnVlXG4gKlxuICogY29uc29sZS5sb2cobW0uYWxsKCdmb28uanMnLCBbJyouanMnLCAnZionLCAnKm8qJywgJypvLmpzJ10pKTtcbiAqIC8vIHRydWVcbiAqIGBgYFxuICogQHBhcmFtIHtTdHJpbmd8QXJyYXl9IGBzdHJgIFRoZSBzdHJpbmcgdG8gdGVzdC5cbiAqIEBwYXJhbSB7U3RyaW5nfEFycmF5fSBgcGF0dGVybnNgIE9uZSBvciBtb3JlIGdsb2IgcGF0dGVybnMgdG8gdXNlIGZvciBtYXRjaGluZy5cbiAqIEBwYXJhbSB7T2JqZWN0fSBgb3B0aW9uc2AgU2VlIGF2YWlsYWJsZSBbb3B0aW9uc10oI29wdGlvbnMpIGZvciBjaGFuZ2luZyBob3cgbWF0Y2hlcyBhcmUgcGVyZm9ybWVkXG4gKiBAcmV0dXJuIHtCb29sZWFufSBSZXR1cm5zIHRydWUgaWYgYW55IHBhdHRlcm5zIG1hdGNoIGBzdHJgXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbm1pY3JvbWF0Y2guYWxsID0gKHN0ciwgcGF0dGVybnMsIG9wdGlvbnMpID0+IHtcbiAgaWYgKHR5cGVvZiBzdHIgIT09ICdzdHJpbmcnKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgRXhwZWN0ZWQgYSBzdHJpbmc6IFwiJHt1dGlsLmluc3BlY3Qoc3RyKX1cImApO1xuICB9XG5cbiAgcmV0dXJuIFtdLmNvbmNhdChwYXR0ZXJucykuZXZlcnkocCA9PiBwaWNvbWF0Y2gocCwgb3B0aW9ucykoc3RyKSk7XG59O1xuXG4vKipcbiAqIFJldHVybnMgYW4gYXJyYXkgb2YgbWF0Y2hlcyBjYXB0dXJlZCBieSBgcGF0dGVybmAgaW4gYHN0cmluZywgb3IgYG51bGxgIGlmIHRoZSBwYXR0ZXJuIGRpZCBub3QgbWF0Y2guXG4gKlxuICogYGBganNcbiAqIGNvbnN0IG1tID0gcmVxdWlyZSgnbWljcm9tYXRjaCcpO1xuICogLy8gbW0uY2FwdHVyZShwYXR0ZXJuLCBzdHJpbmdbLCBvcHRpb25zXSk7XG4gKlxuICogY29uc29sZS5sb2cobW0uY2FwdHVyZSgndGVzdC8qLmpzJywgJ3Rlc3QvZm9vLmpzJykpO1xuICogLy89PiBbJ2ZvbyddXG4gKiBjb25zb2xlLmxvZyhtbS5jYXB0dXJlKCd0ZXN0LyouanMnLCAnZm9vL2Jhci5jc3MnKSk7XG4gKiAvLz0+IG51bGxcbiAqIGBgYFxuICogQHBhcmFtIHtTdHJpbmd9IGBnbG9iYCBHbG9iIHBhdHRlcm4gdG8gdXNlIGZvciBtYXRjaGluZy5cbiAqIEBwYXJhbSB7U3RyaW5nfSBgaW5wdXRgIFN0cmluZyB0byBtYXRjaFxuICogQHBhcmFtIHtPYmplY3R9IGBvcHRpb25zYCBTZWUgYXZhaWxhYmxlIFtvcHRpb25zXSgjb3B0aW9ucykgZm9yIGNoYW5naW5nIGhvdyBtYXRjaGVzIGFyZSBwZXJmb3JtZWRcbiAqIEByZXR1cm4ge0FycmF5fG51bGx9IFJldHVybnMgYW4gYXJyYXkgb2YgY2FwdHVyZXMgaWYgdGhlIGlucHV0IG1hdGNoZXMgdGhlIGdsb2IgcGF0dGVybiwgb3RoZXJ3aXNlIGBudWxsYC5cbiAqIEBhcGkgcHVibGljXG4gKi9cblxubWljcm9tYXRjaC5jYXB0dXJlID0gKGdsb2IsIGlucHV0LCBvcHRpb25zKSA9PiB7XG4gIGxldCBwb3NpeCA9IHV0aWxzLmlzV2luZG93cyhvcHRpb25zKTtcbiAgbGV0IHJlZ2V4ID0gcGljb21hdGNoLm1ha2VSZShTdHJpbmcoZ2xvYiksIHsgLi4ub3B0aW9ucywgY2FwdHVyZTogdHJ1ZSB9KTtcbiAgbGV0IG1hdGNoID0gcmVnZXguZXhlYyhwb3NpeCA/IHV0aWxzLnRvUG9zaXhTbGFzaGVzKGlucHV0KSA6IGlucHV0KTtcblxuICBpZiAobWF0Y2gpIHtcbiAgICByZXR1cm4gbWF0Y2guc2xpY2UoMSkubWFwKHYgPT4gdiA9PT0gdm9pZCAwID8gJycgOiB2KTtcbiAgfVxufTtcblxuLyoqXG4gKiBDcmVhdGUgYSByZWd1bGFyIGV4cHJlc3Npb24gZnJvbSB0aGUgZ2l2ZW4gZ2xvYiBgcGF0dGVybmAuXG4gKlxuICogYGBganNcbiAqIGNvbnN0IG1tID0gcmVxdWlyZSgnbWljcm9tYXRjaCcpO1xuICogLy8gbW0ubWFrZVJlKHBhdHRlcm5bLCBvcHRpb25zXSk7XG4gKlxuICogY29uc29sZS5sb2cobW0ubWFrZVJlKCcqLmpzJykpO1xuICogLy89PiAvXig/OihcXC5bXFxcXFxcL10pPyg/IVxcLikoPz0uKVteXFwvXSo/XFwuanMpJC9cbiAqIGBgYFxuICogQHBhcmFtIHtTdHJpbmd9IGBwYXR0ZXJuYCBBIGdsb2IgcGF0dGVybiB0byBjb252ZXJ0IHRvIHJlZ2V4LlxuICogQHBhcmFtIHtPYmplY3R9IGBvcHRpb25zYFxuICogQHJldHVybiB7UmVnRXhwfSBSZXR1cm5zIGEgcmVnZXggY3JlYXRlZCBmcm9tIHRoZSBnaXZlbiBwYXR0ZXJuLlxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5taWNyb21hdGNoLm1ha2VSZSA9ICguLi5hcmdzKSA9PiBwaWNvbWF0Y2gubWFrZVJlKC4uLmFyZ3MpO1xuXG4vKipcbiAqIFNjYW4gYSBnbG9iIHBhdHRlcm4gdG8gc2VwYXJhdGUgdGhlIHBhdHRlcm4gaW50byBzZWdtZW50cy4gVXNlZFxuICogYnkgdGhlIFtzcGxpdF0oI3NwbGl0KSBtZXRob2QuXG4gKlxuICogYGBganNcbiAqIGNvbnN0IG1tID0gcmVxdWlyZSgnbWljcm9tYXRjaCcpO1xuICogY29uc3Qgc3RhdGUgPSBtbS5zY2FuKHBhdHRlcm5bLCBvcHRpb25zXSk7XG4gKiBgYGBcbiAqIEBwYXJhbSB7U3RyaW5nfSBgcGF0dGVybmBcbiAqIEBwYXJhbSB7T2JqZWN0fSBgb3B0aW9uc2BcbiAqIEByZXR1cm4ge09iamVjdH0gUmV0dXJucyBhbiBvYmplY3Qgd2l0aFxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5taWNyb21hdGNoLnNjYW4gPSAoLi4uYXJncykgPT4gcGljb21hdGNoLnNjYW4oLi4uYXJncyk7XG5cbi8qKlxuICogUGFyc2UgYSBnbG9iIHBhdHRlcm4gdG8gY3JlYXRlIHRoZSBzb3VyY2Ugc3RyaW5nIGZvciBhIHJlZ3VsYXJcbiAqIGV4cHJlc3Npb24uXG4gKlxuICogYGBganNcbiAqIGNvbnN0IG1tID0gcmVxdWlyZSgnbWljcm9tYXRjaCcpO1xuICogY29uc3Qgc3RhdGUgPSBtbS5wYXJzZShwYXR0ZXJuWywgb3B0aW9uc10pO1xuICogYGBgXG4gKiBAcGFyYW0ge1N0cmluZ30gYGdsb2JgXG4gKiBAcGFyYW0ge09iamVjdH0gYG9wdGlvbnNgXG4gKiBAcmV0dXJuIHtPYmplY3R9IFJldHVybnMgYW4gb2JqZWN0IHdpdGggdXNlZnVsIHByb3BlcnRpZXMgYW5kIG91dHB1dCB0byBiZSB1c2VkIGFzIHJlZ2V4IHNvdXJjZSBzdHJpbmcuXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbm1pY3JvbWF0Y2gucGFyc2UgPSAocGF0dGVybnMsIG9wdGlvbnMpID0+IHtcbiAgbGV0IHJlcyA9IFtdO1xuICBmb3IgKGxldCBwYXR0ZXJuIG9mIFtdLmNvbmNhdChwYXR0ZXJucyB8fCBbXSkpIHtcbiAgICBmb3IgKGxldCBzdHIgb2YgYnJhY2VzKFN0cmluZyhwYXR0ZXJuKSwgb3B0aW9ucykpIHtcbiAgICAgIHJlcy5wdXNoKHBpY29tYXRjaC5wYXJzZShzdHIsIG9wdGlvbnMpKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlcztcbn07XG5cbi8qKlxuICogUHJvY2VzcyB0aGUgZ2l2ZW4gYnJhY2UgYHBhdHRlcm5gLlxuICpcbiAqIGBgYGpzXG4gKiBjb25zdCB7IGJyYWNlcyB9ID0gcmVxdWlyZSgnbWljcm9tYXRjaCcpO1xuICogY29uc29sZS5sb2coYnJhY2VzKCdmb28ve2EsYixjfS9iYXInKSk7XG4gKiAvLz0+IFsgJ2Zvby8oYXxifGMpL2JhcicgXVxuICpcbiAqIGNvbnNvbGUubG9nKGJyYWNlcygnZm9vL3thLGIsY30vYmFyJywgeyBleHBhbmQ6IHRydWUgfSkpO1xuICogLy89PiBbICdmb28vYS9iYXInLCAnZm9vL2IvYmFyJywgJ2Zvby9jL2JhcicgXVxuICogYGBgXG4gKiBAcGFyYW0ge1N0cmluZ30gYHBhdHRlcm5gIFN0cmluZyB3aXRoIGJyYWNlIHBhdHRlcm4gdG8gcHJvY2Vzcy5cbiAqIEBwYXJhbSB7T2JqZWN0fSBgb3B0aW9uc2AgQW55IFtvcHRpb25zXSgjb3B0aW9ucykgdG8gY2hhbmdlIGhvdyBleHBhbnNpb24gaXMgcGVyZm9ybWVkLiBTZWUgdGhlIFticmFjZXNdW10gbGlicmFyeSBmb3IgYWxsIGF2YWlsYWJsZSBvcHRpb25zLlxuICogQHJldHVybiB7QXJyYXl9XG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbm1pY3JvbWF0Y2guYnJhY2VzID0gKHBhdHRlcm4sIG9wdGlvbnMpID0+IHtcbiAgaWYgKHR5cGVvZiBwYXR0ZXJuICE9PSAnc3RyaW5nJykgdGhyb3cgbmV3IFR5cGVFcnJvcignRXhwZWN0ZWQgYSBzdHJpbmcnKTtcbiAgaWYgKChvcHRpb25zICYmIG9wdGlvbnMubm9icmFjZSA9PT0gdHJ1ZSkgfHwgIS9cXHsuKlxcfS8udGVzdChwYXR0ZXJuKSkge1xuICAgIHJldHVybiBbcGF0dGVybl07XG4gIH1cbiAgcmV0dXJuIGJyYWNlcyhwYXR0ZXJuLCBvcHRpb25zKTtcbn07XG5cbi8qKlxuICogRXhwYW5kIGJyYWNlc1xuICovXG5cbm1pY3JvbWF0Y2guYnJhY2VFeHBhbmQgPSAocGF0dGVybiwgb3B0aW9ucykgPT4ge1xuICBpZiAodHlwZW9mIHBhdHRlcm4gIT09ICdzdHJpbmcnKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCBhIHN0cmluZycpO1xuICByZXR1cm4gbWljcm9tYXRjaC5icmFjZXMocGF0dGVybiwgeyAuLi5vcHRpb25zLCBleHBhbmQ6IHRydWUgfSk7XG59O1xuXG4vKipcbiAqIEV4cG9zZSBtaWNyb21hdGNoXG4gKi9cblxubW9kdWxlLmV4cG9ydHMgPSBtaWNyb21hdGNoO1xuIiwgIid1c2Ugc3RyaWN0JztcblxubW9kdWxlLmV4cG9ydHMgPSAoe29ubHlGaXJzdCA9IGZhbHNlfSA9IHt9KSA9PiB7XG5cdGNvbnN0IHBhdHRlcm4gPSBbXG5cdFx0J1tcXFxcdTAwMUJcXFxcdTAwOUJdW1tcXFxcXSgpIzs/XSooPzooPzooPzooPzo7Wy1hLXpBLVpcXFxcZFxcXFwvIyYuOj0/JUB+X10rKSp8W2EtekEtWlxcXFxkXSsoPzo7Wy1hLXpBLVpcXFxcZFxcXFwvIyYuOj0/JUB+X10qKSopP1xcXFx1MDAwNyknLFxuXHRcdCcoPzooPzpcXFxcZHsxLDR9KD86O1xcXFxkezAsNH0pKik/W1xcXFxkQS1QUi1UWmNmLW50cXJ5PT48fl0pKSdcblx0XS5qb2luKCd8Jyk7XG5cblx0cmV0dXJuIG5ldyBSZWdFeHAocGF0dGVybiwgb25seUZpcnN0ID8gdW5kZWZpbmVkIDogJ2cnKTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xuY29uc3QgYW5zaVJlZ2V4ID0gcmVxdWlyZSgnYW5zaS1yZWdleCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHN0cmluZyA9PiB0eXBlb2Ygc3RyaW5nID09PSAnc3RyaW5nJyA/IHN0cmluZy5yZXBsYWNlKGFuc2lSZWdleCgpLCAnJykgOiBzdHJpbmc7XG4iLCAiLyoqXG4gKiBSZW1vdmVzIGFsbCBrZXktdmFsdWUgZW50cmllcyBmcm9tIHRoZSBsaXN0IGNhY2hlLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBjbGVhclxuICogQG1lbWJlck9mIExpc3RDYWNoZVxuICovXG5mdW5jdGlvbiBsaXN0Q2FjaGVDbGVhcigpIHtcbiAgdGhpcy5fX2RhdGFfXyA9IFtdO1xuICB0aGlzLnNpemUgPSAwO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGxpc3RDYWNoZUNsZWFyO1xuIiwgIi8qKlxuICogUGVyZm9ybXMgYVxuICogW2BTYW1lVmFsdWVaZXJvYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtc2FtZXZhbHVlemVybylcbiAqIGNvbXBhcmlzb24gYmV0d2VlbiB0d28gdmFsdWVzIHRvIGRldGVybWluZSBpZiB0aGV5IGFyZSBlcXVpdmFsZW50LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgdmFsdWVzIGFyZSBlcXVpdmFsZW50LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3QgPSB7ICdhJzogMSB9O1xuICogdmFyIG90aGVyID0geyAnYSc6IDEgfTtcbiAqXG4gKiBfLmVxKG9iamVjdCwgb2JqZWN0KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmVxKG9iamVjdCwgb3RoZXIpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmVxKCdhJywgJ2EnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmVxKCdhJywgT2JqZWN0KCdhJykpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmVxKE5hTiwgTmFOKTtcbiAqIC8vID0+IHRydWVcbiAqL1xuZnVuY3Rpb24gZXEodmFsdWUsIG90aGVyKSB7XG4gIHJldHVybiB2YWx1ZSA9PT0gb3RoZXIgfHwgKHZhbHVlICE9PSB2YWx1ZSAmJiBvdGhlciAhPT0gb3RoZXIpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGVxO1xuIiwgInZhciBlcSA9IHJlcXVpcmUoJy4vZXEnKTtcblxuLyoqXG4gKiBHZXRzIHRoZSBpbmRleCBhdCB3aGljaCB0aGUgYGtleWAgaXMgZm91bmQgaW4gYGFycmF5YCBvZiBrZXktdmFsdWUgcGFpcnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICogQHBhcmFtIHsqfSBrZXkgVGhlIGtleSB0byBzZWFyY2ggZm9yLlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIG1hdGNoZWQgdmFsdWUsIGVsc2UgYC0xYC5cbiAqL1xuZnVuY3Rpb24gYXNzb2NJbmRleE9mKGFycmF5LCBrZXkpIHtcbiAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcbiAgd2hpbGUgKGxlbmd0aC0tKSB7XG4gICAgaWYgKGVxKGFycmF5W2xlbmd0aF1bMF0sIGtleSkpIHtcbiAgICAgIHJldHVybiBsZW5ndGg7XG4gICAgfVxuICB9XG4gIHJldHVybiAtMTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBhc3NvY0luZGV4T2Y7XG4iLCAidmFyIGFzc29jSW5kZXhPZiA9IHJlcXVpcmUoJy4vX2Fzc29jSW5kZXhPZicpO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgYXJyYXlQcm90byA9IEFycmF5LnByb3RvdHlwZTtcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgc3BsaWNlID0gYXJyYXlQcm90by5zcGxpY2U7XG5cbi8qKlxuICogUmVtb3ZlcyBga2V5YCBhbmQgaXRzIHZhbHVlIGZyb20gdGhlIGxpc3QgY2FjaGUuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGRlbGV0ZVxuICogQG1lbWJlck9mIExpc3RDYWNoZVxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byByZW1vdmUuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGVudHJ5IHdhcyByZW1vdmVkLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGxpc3RDYWNoZURlbGV0ZShrZXkpIHtcbiAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fLFxuICAgICAgaW5kZXggPSBhc3NvY0luZGV4T2YoZGF0YSwga2V5KTtcblxuICBpZiAoaW5kZXggPCAwKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHZhciBsYXN0SW5kZXggPSBkYXRhLmxlbmd0aCAtIDE7XG4gIGlmIChpbmRleCA9PSBsYXN0SW5kZXgpIHtcbiAgICBkYXRhLnBvcCgpO1xuICB9IGVsc2Uge1xuICAgIHNwbGljZS5jYWxsKGRhdGEsIGluZGV4LCAxKTtcbiAgfVxuICAtLXRoaXMuc2l6ZTtcbiAgcmV0dXJuIHRydWU7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbGlzdENhY2hlRGVsZXRlO1xuIiwgInZhciBhc3NvY0luZGV4T2YgPSByZXF1aXJlKCcuL19hc3NvY0luZGV4T2YnKTtcblxuLyoqXG4gKiBHZXRzIHRoZSBsaXN0IGNhY2hlIHZhbHVlIGZvciBga2V5YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgZ2V0XG4gKiBAbWVtYmVyT2YgTGlzdENhY2hlXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIGdldC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBlbnRyeSB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gbGlzdENhY2hlR2V0KGtleSkge1xuICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX18sXG4gICAgICBpbmRleCA9IGFzc29jSW5kZXhPZihkYXRhLCBrZXkpO1xuXG4gIHJldHVybiBpbmRleCA8IDAgPyB1bmRlZmluZWQgOiBkYXRhW2luZGV4XVsxXTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBsaXN0Q2FjaGVHZXQ7XG4iLCAidmFyIGFzc29jSW5kZXhPZiA9IHJlcXVpcmUoJy4vX2Fzc29jSW5kZXhPZicpO1xuXG4vKipcbiAqIENoZWNrcyBpZiBhIGxpc3QgY2FjaGUgdmFsdWUgZm9yIGBrZXlgIGV4aXN0cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgaGFzXG4gKiBAbWVtYmVyT2YgTGlzdENhY2hlXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIGVudHJ5IHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFuIGVudHJ5IGZvciBga2V5YCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gbGlzdENhY2hlSGFzKGtleSkge1xuICByZXR1cm4gYXNzb2NJbmRleE9mKHRoaXMuX19kYXRhX18sIGtleSkgPiAtMTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBsaXN0Q2FjaGVIYXM7XG4iLCAidmFyIGFzc29jSW5kZXhPZiA9IHJlcXVpcmUoJy4vX2Fzc29jSW5kZXhPZicpO1xuXG4vKipcbiAqIFNldHMgdGhlIGxpc3QgY2FjaGUgYGtleWAgdG8gYHZhbHVlYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgc2V0XG4gKiBAbWVtYmVyT2YgTGlzdENhY2hlXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHNldC5cbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNldC5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGxpc3QgY2FjaGUgaW5zdGFuY2UuXG4gKi9cbmZ1bmN0aW9uIGxpc3RDYWNoZVNldChrZXksIHZhbHVlKSB7XG4gIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXyxcbiAgICAgIGluZGV4ID0gYXNzb2NJbmRleE9mKGRhdGEsIGtleSk7XG5cbiAgaWYgKGluZGV4IDwgMCkge1xuICAgICsrdGhpcy5zaXplO1xuICAgIGRhdGEucHVzaChba2V5LCB2YWx1ZV0pO1xuICB9IGVsc2Uge1xuICAgIGRhdGFbaW5kZXhdWzFdID0gdmFsdWU7XG4gIH1cbiAgcmV0dXJuIHRoaXM7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbGlzdENhY2hlU2V0O1xuIiwgInZhciBsaXN0Q2FjaGVDbGVhciA9IHJlcXVpcmUoJy4vX2xpc3RDYWNoZUNsZWFyJyksXG4gICAgbGlzdENhY2hlRGVsZXRlID0gcmVxdWlyZSgnLi9fbGlzdENhY2hlRGVsZXRlJyksXG4gICAgbGlzdENhY2hlR2V0ID0gcmVxdWlyZSgnLi9fbGlzdENhY2hlR2V0JyksXG4gICAgbGlzdENhY2hlSGFzID0gcmVxdWlyZSgnLi9fbGlzdENhY2hlSGFzJyksXG4gICAgbGlzdENhY2hlU2V0ID0gcmVxdWlyZSgnLi9fbGlzdENhY2hlU2V0Jyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBsaXN0IGNhY2hlIG9iamVjdC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQGNvbnN0cnVjdG9yXG4gKiBAcGFyYW0ge0FycmF5fSBbZW50cmllc10gVGhlIGtleS12YWx1ZSBwYWlycyB0byBjYWNoZS5cbiAqL1xuZnVuY3Rpb24gTGlzdENhY2hlKGVudHJpZXMpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBlbnRyaWVzID09IG51bGwgPyAwIDogZW50cmllcy5sZW5ndGg7XG5cbiAgdGhpcy5jbGVhcigpO1xuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhciBlbnRyeSA9IGVudHJpZXNbaW5kZXhdO1xuICAgIHRoaXMuc2V0KGVudHJ5WzBdLCBlbnRyeVsxXSk7XG4gIH1cbn1cblxuLy8gQWRkIG1ldGhvZHMgdG8gYExpc3RDYWNoZWAuXG5MaXN0Q2FjaGUucHJvdG90eXBlLmNsZWFyID0gbGlzdENhY2hlQ2xlYXI7XG5MaXN0Q2FjaGUucHJvdG90eXBlWydkZWxldGUnXSA9IGxpc3RDYWNoZURlbGV0ZTtcbkxpc3RDYWNoZS5wcm90b3R5cGUuZ2V0ID0gbGlzdENhY2hlR2V0O1xuTGlzdENhY2hlLnByb3RvdHlwZS5oYXMgPSBsaXN0Q2FjaGVIYXM7XG5MaXN0Q2FjaGUucHJvdG90eXBlLnNldCA9IGxpc3RDYWNoZVNldDtcblxubW9kdWxlLmV4cG9ydHMgPSBMaXN0Q2FjaGU7XG4iLCAidmFyIExpc3RDYWNoZSA9IHJlcXVpcmUoJy4vX0xpc3RDYWNoZScpO1xuXG4vKipcbiAqIFJlbW92ZXMgYWxsIGtleS12YWx1ZSBlbnRyaWVzIGZyb20gdGhlIHN0YWNrLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBjbGVhclxuICogQG1lbWJlck9mIFN0YWNrXG4gKi9cbmZ1bmN0aW9uIHN0YWNrQ2xlYXIoKSB7XG4gIHRoaXMuX19kYXRhX18gPSBuZXcgTGlzdENhY2hlO1xuICB0aGlzLnNpemUgPSAwO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHN0YWNrQ2xlYXI7XG4iLCAiLyoqXG4gKiBSZW1vdmVzIGBrZXlgIGFuZCBpdHMgdmFsdWUgZnJvbSB0aGUgc3RhY2suXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGRlbGV0ZVxuICogQG1lbWJlck9mIFN0YWNrXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHJlbW92ZS5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgZW50cnkgd2FzIHJlbW92ZWQsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gc3RhY2tEZWxldGUoa2V5KSB7XG4gIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXyxcbiAgICAgIHJlc3VsdCA9IGRhdGFbJ2RlbGV0ZSddKGtleSk7XG5cbiAgdGhpcy5zaXplID0gZGF0YS5zaXplO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHN0YWNrRGVsZXRlO1xuIiwgIi8qKlxuICogR2V0cyB0aGUgc3RhY2sgdmFsdWUgZm9yIGBrZXlgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBnZXRcbiAqIEBtZW1iZXJPZiBTdGFja1xuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBnZXQuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZW50cnkgdmFsdWUuXG4gKi9cbmZ1bmN0aW9uIHN0YWNrR2V0KGtleSkge1xuICByZXR1cm4gdGhpcy5fX2RhdGFfXy5nZXQoa2V5KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzdGFja0dldDtcbiIsICIvKipcbiAqIENoZWNrcyBpZiBhIHN0YWNrIHZhbHVlIGZvciBga2V5YCBleGlzdHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGhhc1xuICogQG1lbWJlck9mIFN0YWNrXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIGVudHJ5IHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFuIGVudHJ5IGZvciBga2V5YCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gc3RhY2tIYXMoa2V5KSB7XG4gIHJldHVybiB0aGlzLl9fZGF0YV9fLmhhcyhrZXkpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHN0YWNrSGFzO1xuIiwgIi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgZ2xvYmFsYCBmcm9tIE5vZGUuanMuICovXG52YXIgZnJlZUdsb2JhbCA9IHR5cGVvZiBnbG9iYWwgPT0gJ29iamVjdCcgJiYgZ2xvYmFsICYmIGdsb2JhbC5PYmplY3QgPT09IE9iamVjdCAmJiBnbG9iYWw7XG5cbm1vZHVsZS5leHBvcnRzID0gZnJlZUdsb2JhbDtcbiIsICJ2YXIgZnJlZUdsb2JhbCA9IHJlcXVpcmUoJy4vX2ZyZWVHbG9iYWwnKTtcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBzZWxmYC4gKi9cbnZhciBmcmVlU2VsZiA9IHR5cGVvZiBzZWxmID09ICdvYmplY3QnICYmIHNlbGYgJiYgc2VsZi5PYmplY3QgPT09IE9iamVjdCAmJiBzZWxmO1xuXG4vKiogVXNlZCBhcyBhIHJlZmVyZW5jZSB0byB0aGUgZ2xvYmFsIG9iamVjdC4gKi9cbnZhciByb290ID0gZnJlZUdsb2JhbCB8fCBmcmVlU2VsZiB8fCBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJvb3Q7XG4iLCAidmFyIHJvb3QgPSByZXF1aXJlKCcuL19yb290Jyk7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIFN5bWJvbCA9IHJvb3QuU3ltYm9sO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFN5bWJvbDtcbiIsICJ2YXIgU3ltYm9sID0gcmVxdWlyZSgnLi9fU3ltYm9sJyk7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogVXNlZCB0byByZXNvbHZlIHRoZVxuICogW2B0b1N0cmluZ1RhZ2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLW9iamVjdC5wcm90b3R5cGUudG9zdHJpbmcpXG4gKiBvZiB2YWx1ZXMuXG4gKi9cbnZhciBuYXRpdmVPYmplY3RUb1N0cmluZyA9IG9iamVjdFByb3RvLnRvU3RyaW5nO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBzeW1Ub1N0cmluZ1RhZyA9IFN5bWJvbCA/IFN5bWJvbC50b1N0cmluZ1RhZyA6IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VHZXRUYWdgIHdoaWNoIGlnbm9yZXMgYFN5bWJvbC50b1N0cmluZ1RhZ2AgdmFsdWVzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHJhdyBgdG9TdHJpbmdUYWdgLlxuICovXG5mdW5jdGlvbiBnZXRSYXdUYWcodmFsdWUpIHtcbiAgdmFyIGlzT3duID0gaGFzT3duUHJvcGVydHkuY2FsbCh2YWx1ZSwgc3ltVG9TdHJpbmdUYWcpLFxuICAgICAgdGFnID0gdmFsdWVbc3ltVG9TdHJpbmdUYWddO1xuXG4gIHRyeSB7XG4gICAgdmFsdWVbc3ltVG9TdHJpbmdUYWddID0gdW5kZWZpbmVkO1xuICAgIHZhciB1bm1hc2tlZCA9IHRydWU7XG4gIH0gY2F0Y2ggKGUpIHt9XG5cbiAgdmFyIHJlc3VsdCA9IG5hdGl2ZU9iamVjdFRvU3RyaW5nLmNhbGwodmFsdWUpO1xuICBpZiAodW5tYXNrZWQpIHtcbiAgICBpZiAoaXNPd24pIHtcbiAgICAgIHZhbHVlW3N5bVRvU3RyaW5nVGFnXSA9IHRhZztcbiAgICB9IGVsc2Uge1xuICAgICAgZGVsZXRlIHZhbHVlW3N5bVRvU3RyaW5nVGFnXTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBnZXRSYXdUYWc7XG4iLCAiLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqXG4gKiBVc2VkIHRvIHJlc29sdmUgdGhlXG4gKiBbYHRvU3RyaW5nVGFnYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtb2JqZWN0LnByb3RvdHlwZS50b3N0cmluZylcbiAqIG9mIHZhbHVlcy5cbiAqL1xudmFyIG5hdGl2ZU9iamVjdFRvU3RyaW5nID0gb2JqZWN0UHJvdG8udG9TdHJpbmc7XG5cbi8qKlxuICogQ29udmVydHMgYHZhbHVlYCB0byBhIHN0cmluZyB1c2luZyBgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZ2AuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgc3RyaW5nLlxuICovXG5mdW5jdGlvbiBvYmplY3RUb1N0cmluZyh2YWx1ZSkge1xuICByZXR1cm4gbmF0aXZlT2JqZWN0VG9TdHJpbmcuY2FsbCh2YWx1ZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gb2JqZWN0VG9TdHJpbmc7XG4iLCAidmFyIFN5bWJvbCA9IHJlcXVpcmUoJy4vX1N5bWJvbCcpLFxuICAgIGdldFJhd1RhZyA9IHJlcXVpcmUoJy4vX2dldFJhd1RhZycpLFxuICAgIG9iamVjdFRvU3RyaW5nID0gcmVxdWlyZSgnLi9fb2JqZWN0VG9TdHJpbmcnKTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIG51bGxUYWcgPSAnW29iamVjdCBOdWxsXScsXG4gICAgdW5kZWZpbmVkVGFnID0gJ1tvYmplY3QgVW5kZWZpbmVkXSc7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIHN5bVRvU3RyaW5nVGFnID0gU3ltYm9sID8gU3ltYm9sLnRvU3RyaW5nVGFnIDogdW5kZWZpbmVkO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBnZXRUYWdgIHdpdGhvdXQgZmFsbGJhY2tzIGZvciBidWdneSBlbnZpcm9ubWVudHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHF1ZXJ5LlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgYHRvU3RyaW5nVGFnYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUdldFRhZyh2YWx1ZSkge1xuICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgIHJldHVybiB2YWx1ZSA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkVGFnIDogbnVsbFRhZztcbiAgfVxuICByZXR1cm4gKHN5bVRvU3RyaW5nVGFnICYmIHN5bVRvU3RyaW5nVGFnIGluIE9iamVjdCh2YWx1ZSkpXG4gICAgPyBnZXRSYXdUYWcodmFsdWUpXG4gICAgOiBvYmplY3RUb1N0cmluZyh2YWx1ZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUdldFRhZztcbiIsICIvKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIHRoZVxuICogW2xhbmd1YWdlIHR5cGVdKGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1lY21hc2NyaXB0LWxhbmd1YWdlLXR5cGVzKVxuICogb2YgYE9iamVjdGAuIChlLmcuIGFycmF5cywgZnVuY3Rpb25zLCBvYmplY3RzLCByZWdleGVzLCBgbmV3IE51bWJlcigwKWAsIGFuZCBgbmV3IFN0cmluZygnJylgKVxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIG9iamVjdCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzT2JqZWN0KHt9KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0KFsxLCAyLCAzXSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdChfLm5vb3ApO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3QobnVsbCk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc09iamVjdCh2YWx1ZSkge1xuICB2YXIgdHlwZSA9IHR5cGVvZiB2YWx1ZTtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgJiYgKHR5cGUgPT0gJ29iamVjdCcgfHwgdHlwZSA9PSAnZnVuY3Rpb24nKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc09iamVjdDtcbiIsICJ2YXIgYmFzZUdldFRhZyA9IHJlcXVpcmUoJy4vX2Jhc2VHZXRUYWcnKSxcbiAgICBpc09iamVjdCA9IHJlcXVpcmUoJy4vaXNPYmplY3QnKTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIGFzeW5jVGFnID0gJ1tvYmplY3QgQXN5bmNGdW5jdGlvbl0nLFxuICAgIGZ1bmNUYWcgPSAnW29iamVjdCBGdW5jdGlvbl0nLFxuICAgIGdlblRhZyA9ICdbb2JqZWN0IEdlbmVyYXRvckZ1bmN0aW9uXScsXG4gICAgcHJveHlUYWcgPSAnW29iamVjdCBQcm94eV0nO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgRnVuY3Rpb25gIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIGZ1bmN0aW9uLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNGdW5jdGlvbihfKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzRnVuY3Rpb24oL2FiYy8pO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNGdW5jdGlvbih2YWx1ZSkge1xuICBpZiAoIWlzT2JqZWN0KHZhbHVlKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICAvLyBUaGUgdXNlIG9mIGBPYmplY3QjdG9TdHJpbmdgIGF2b2lkcyBpc3N1ZXMgd2l0aCB0aGUgYHR5cGVvZmAgb3BlcmF0b3JcbiAgLy8gaW4gU2FmYXJpIDkgd2hpY2ggcmV0dXJucyAnb2JqZWN0JyBmb3IgdHlwZWQgYXJyYXlzIGFuZCBvdGhlciBjb25zdHJ1Y3RvcnMuXG4gIHZhciB0YWcgPSBiYXNlR2V0VGFnKHZhbHVlKTtcbiAgcmV0dXJuIHRhZyA9PSBmdW5jVGFnIHx8IHRhZyA9PSBnZW5UYWcgfHwgdGFnID09IGFzeW5jVGFnIHx8IHRhZyA9PSBwcm94eVRhZztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc0Z1bmN0aW9uO1xuIiwgInZhciByb290ID0gcmVxdWlyZSgnLi9fcm9vdCcpO1xuXG4vKiogVXNlZCB0byBkZXRlY3Qgb3ZlcnJlYWNoaW5nIGNvcmUtanMgc2hpbXMuICovXG52YXIgY29yZUpzRGF0YSA9IHJvb3RbJ19fY29yZS1qc19zaGFyZWRfXyddO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGNvcmVKc0RhdGE7XG4iLCAidmFyIGNvcmVKc0RhdGEgPSByZXF1aXJlKCcuL19jb3JlSnNEYXRhJyk7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCBtZXRob2RzIG1hc3F1ZXJhZGluZyBhcyBuYXRpdmUuICovXG52YXIgbWFza1NyY0tleSA9IChmdW5jdGlvbigpIHtcbiAgdmFyIHVpZCA9IC9bXi5dKyQvLmV4ZWMoY29yZUpzRGF0YSAmJiBjb3JlSnNEYXRhLmtleXMgJiYgY29yZUpzRGF0YS5rZXlzLklFX1BST1RPIHx8ICcnKTtcbiAgcmV0dXJuIHVpZCA/ICgnU3ltYm9sKHNyYylfMS4nICsgdWlkKSA6ICcnO1xufSgpKTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYGZ1bmNgIGhhcyBpdHMgc291cmNlIG1hc2tlZC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYGZ1bmNgIGlzIG1hc2tlZCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBpc01hc2tlZChmdW5jKSB7XG4gIHJldHVybiAhIW1hc2tTcmNLZXkgJiYgKG1hc2tTcmNLZXkgaW4gZnVuYyk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNNYXNrZWQ7XG4iLCAiLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIGZ1bmNQcm90byA9IEZ1bmN0aW9uLnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gcmVzb2x2ZSB0aGUgZGVjb21waWxlZCBzb3VyY2Ugb2YgZnVuY3Rpb25zLiAqL1xudmFyIGZ1bmNUb1N0cmluZyA9IGZ1bmNQcm90by50b1N0cmluZztcblxuLyoqXG4gKiBDb252ZXJ0cyBgZnVuY2AgdG8gaXRzIHNvdXJjZSBjb2RlLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBjb252ZXJ0LlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgc291cmNlIGNvZGUuXG4gKi9cbmZ1bmN0aW9uIHRvU291cmNlKGZ1bmMpIHtcbiAgaWYgKGZ1bmMgIT0gbnVsbCkge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gZnVuY1RvU3RyaW5nLmNhbGwoZnVuYyk7XG4gICAgfSBjYXRjaCAoZSkge31cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIChmdW5jICsgJycpO1xuICAgIH0gY2F0Y2ggKGUpIHt9XG4gIH1cbiAgcmV0dXJuICcnO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHRvU291cmNlO1xuIiwgInZhciBpc0Z1bmN0aW9uID0gcmVxdWlyZSgnLi9pc0Z1bmN0aW9uJyksXG4gICAgaXNNYXNrZWQgPSByZXF1aXJlKCcuL19pc01hc2tlZCcpLFxuICAgIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9pc09iamVjdCcpLFxuICAgIHRvU291cmNlID0gcmVxdWlyZSgnLi9fdG9Tb3VyY2UnKTtcblxuLyoqXG4gKiBVc2VkIHRvIG1hdGNoIGBSZWdFeHBgXG4gKiBbc3ludGF4IGNoYXJhY3RlcnNdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXBhdHRlcm5zKS5cbiAqL1xudmFyIHJlUmVnRXhwQ2hhciA9IC9bXFxcXF4kLiorPygpW1xcXXt9fF0vZztcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IGhvc3QgY29uc3RydWN0b3JzIChTYWZhcmkpLiAqL1xudmFyIHJlSXNIb3N0Q3RvciA9IC9eXFxbb2JqZWN0IC4rP0NvbnN0cnVjdG9yXFxdJC87XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBmdW5jUHJvdG8gPSBGdW5jdGlvbi5wcm90b3R5cGUsXG4gICAgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byByZXNvbHZlIHRoZSBkZWNvbXBpbGVkIHNvdXJjZSBvZiBmdW5jdGlvbnMuICovXG52YXIgZnVuY1RvU3RyaW5nID0gZnVuY1Byb3RvLnRvU3RyaW5nO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKiogVXNlZCB0byBkZXRlY3QgaWYgYSBtZXRob2QgaXMgbmF0aXZlLiAqL1xudmFyIHJlSXNOYXRpdmUgPSBSZWdFeHAoJ14nICtcbiAgZnVuY1RvU3RyaW5nLmNhbGwoaGFzT3duUHJvcGVydHkpLnJlcGxhY2UocmVSZWdFeHBDaGFyLCAnXFxcXCQmJylcbiAgLnJlcGxhY2UoL2hhc093blByb3BlcnR5fChmdW5jdGlvbikuKj8oPz1cXFxcXFwoKXwgZm9yIC4rPyg/PVxcXFxcXF0pL2csICckMS4qPycpICsgJyQnXG4pO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzTmF0aXZlYCB3aXRob3V0IGJhZCBzaGltIGNoZWNrcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIG5hdGl2ZSBmdW5jdGlvbixcbiAqICBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VJc05hdGl2ZSh2YWx1ZSkge1xuICBpZiAoIWlzT2JqZWN0KHZhbHVlKSB8fCBpc01hc2tlZCh2YWx1ZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdmFyIHBhdHRlcm4gPSBpc0Z1bmN0aW9uKHZhbHVlKSA/IHJlSXNOYXRpdmUgOiByZUlzSG9zdEN0b3I7XG4gIHJldHVybiBwYXR0ZXJuLnRlc3QodG9Tb3VyY2UodmFsdWUpKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlSXNOYXRpdmU7XG4iLCAiLyoqXG4gKiBHZXRzIHRoZSB2YWx1ZSBhdCBga2V5YCBvZiBgb2JqZWN0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IFtvYmplY3RdIFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGdldC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBwcm9wZXJ0eSB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gZ2V0VmFsdWUob2JqZWN0LCBrZXkpIHtcbiAgcmV0dXJuIG9iamVjdCA9PSBudWxsID8gdW5kZWZpbmVkIDogb2JqZWN0W2tleV07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0VmFsdWU7XG4iLCAidmFyIGJhc2VJc05hdGl2ZSA9IHJlcXVpcmUoJy4vX2Jhc2VJc05hdGl2ZScpLFxuICAgIGdldFZhbHVlID0gcmVxdWlyZSgnLi9fZ2V0VmFsdWUnKTtcblxuLyoqXG4gKiBHZXRzIHRoZSBuYXRpdmUgZnVuY3Rpb24gYXQgYGtleWAgb2YgYG9iamVjdGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgbWV0aG9kIHRvIGdldC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBmdW5jdGlvbiBpZiBpdCdzIG5hdGl2ZSwgZWxzZSBgdW5kZWZpbmVkYC5cbiAqL1xuZnVuY3Rpb24gZ2V0TmF0aXZlKG9iamVjdCwga2V5KSB7XG4gIHZhciB2YWx1ZSA9IGdldFZhbHVlKG9iamVjdCwga2V5KTtcbiAgcmV0dXJuIGJhc2VJc05hdGl2ZSh2YWx1ZSkgPyB2YWx1ZSA6IHVuZGVmaW5lZDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBnZXROYXRpdmU7XG4iLCAidmFyIGdldE5hdGl2ZSA9IHJlcXVpcmUoJy4vX2dldE5hdGl2ZScpLFxuICAgIHJvb3QgPSByZXF1aXJlKCcuL19yb290Jyk7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIHRoYXQgYXJlIHZlcmlmaWVkIHRvIGJlIG5hdGl2ZS4gKi9cbnZhciBNYXAgPSBnZXROYXRpdmUocm9vdCwgJ01hcCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IE1hcDtcbiIsICJ2YXIgZ2V0TmF0aXZlID0gcmVxdWlyZSgnLi9fZ2V0TmF0aXZlJyk7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIHRoYXQgYXJlIHZlcmlmaWVkIHRvIGJlIG5hdGl2ZS4gKi9cbnZhciBuYXRpdmVDcmVhdGUgPSBnZXROYXRpdmUoT2JqZWN0LCAnY3JlYXRlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gbmF0aXZlQ3JlYXRlO1xuIiwgInZhciBuYXRpdmVDcmVhdGUgPSByZXF1aXJlKCcuL19uYXRpdmVDcmVhdGUnKTtcblxuLyoqXG4gKiBSZW1vdmVzIGFsbCBrZXktdmFsdWUgZW50cmllcyBmcm9tIHRoZSBoYXNoLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBjbGVhclxuICogQG1lbWJlck9mIEhhc2hcbiAqL1xuZnVuY3Rpb24gaGFzaENsZWFyKCkge1xuICB0aGlzLl9fZGF0YV9fID0gbmF0aXZlQ3JlYXRlID8gbmF0aXZlQ3JlYXRlKG51bGwpIDoge307XG4gIHRoaXMuc2l6ZSA9IDA7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaGFzaENsZWFyO1xuIiwgIi8qKlxuICogUmVtb3ZlcyBga2V5YCBhbmQgaXRzIHZhbHVlIGZyb20gdGhlIGhhc2guXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGRlbGV0ZVxuICogQG1lbWJlck9mIEhhc2hcbiAqIEBwYXJhbSB7T2JqZWN0fSBoYXNoIFRoZSBoYXNoIHRvIG1vZGlmeS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gcmVtb3ZlLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBlbnRyeSB3YXMgcmVtb3ZlZCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBoYXNoRGVsZXRlKGtleSkge1xuICB2YXIgcmVzdWx0ID0gdGhpcy5oYXMoa2V5KSAmJiBkZWxldGUgdGhpcy5fX2RhdGFfX1trZXldO1xuICB0aGlzLnNpemUgLT0gcmVzdWx0ID8gMSA6IDA7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaGFzaERlbGV0ZTtcbiIsICJ2YXIgbmF0aXZlQ3JlYXRlID0gcmVxdWlyZSgnLi9fbmF0aXZlQ3JlYXRlJyk7XG5cbi8qKiBVc2VkIHRvIHN0YW5kLWluIGZvciBgdW5kZWZpbmVkYCBoYXNoIHZhbHVlcy4gKi9cbnZhciBIQVNIX1VOREVGSU5FRCA9ICdfX2xvZGFzaF9oYXNoX3VuZGVmaW5lZF9fJztcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBHZXRzIHRoZSBoYXNoIHZhbHVlIGZvciBga2V5YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgZ2V0XG4gKiBAbWVtYmVyT2YgSGFzaFxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBnZXQuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZW50cnkgdmFsdWUuXG4gKi9cbmZ1bmN0aW9uIGhhc2hHZXQoa2V5KSB7XG4gIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXztcbiAgaWYgKG5hdGl2ZUNyZWF0ZSkge1xuICAgIHZhciByZXN1bHQgPSBkYXRhW2tleV07XG4gICAgcmV0dXJuIHJlc3VsdCA9PT0gSEFTSF9VTkRFRklORUQgPyB1bmRlZmluZWQgOiByZXN1bHQ7XG4gIH1cbiAgcmV0dXJuIGhhc093blByb3BlcnR5LmNhbGwoZGF0YSwga2V5KSA/IGRhdGFba2V5XSA6IHVuZGVmaW5lZDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBoYXNoR2V0O1xuIiwgInZhciBuYXRpdmVDcmVhdGUgPSByZXF1aXJlKCcuL19uYXRpdmVDcmVhdGUnKTtcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYSBoYXNoIHZhbHVlIGZvciBga2V5YCBleGlzdHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGhhc1xuICogQG1lbWJlck9mIEhhc2hcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgZW50cnkgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYW4gZW50cnkgZm9yIGBrZXlgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBoYXNoSGFzKGtleSkge1xuICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX187XG4gIHJldHVybiBuYXRpdmVDcmVhdGUgPyAoZGF0YVtrZXldICE9PSB1bmRlZmluZWQpIDogaGFzT3duUHJvcGVydHkuY2FsbChkYXRhLCBrZXkpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGhhc2hIYXM7XG4iLCAidmFyIG5hdGl2ZUNyZWF0ZSA9IHJlcXVpcmUoJy4vX25hdGl2ZUNyZWF0ZScpO1xuXG4vKiogVXNlZCB0byBzdGFuZC1pbiBmb3IgYHVuZGVmaW5lZGAgaGFzaCB2YWx1ZXMuICovXG52YXIgSEFTSF9VTkRFRklORUQgPSAnX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyc7XG5cbi8qKlxuICogU2V0cyB0aGUgaGFzaCBga2V5YCB0byBgdmFsdWVgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBzZXRcbiAqIEBtZW1iZXJPZiBIYXNoXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHNldC5cbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNldC5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGhhc2ggaW5zdGFuY2UuXG4gKi9cbmZ1bmN0aW9uIGhhc2hTZXQoa2V5LCB2YWx1ZSkge1xuICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX187XG4gIHRoaXMuc2l6ZSArPSB0aGlzLmhhcyhrZXkpID8gMCA6IDE7XG4gIGRhdGFba2V5XSA9IChuYXRpdmVDcmVhdGUgJiYgdmFsdWUgPT09IHVuZGVmaW5lZCkgPyBIQVNIX1VOREVGSU5FRCA6IHZhbHVlO1xuICByZXR1cm4gdGhpcztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBoYXNoU2V0O1xuIiwgInZhciBoYXNoQ2xlYXIgPSByZXF1aXJlKCcuL19oYXNoQ2xlYXInKSxcbiAgICBoYXNoRGVsZXRlID0gcmVxdWlyZSgnLi9faGFzaERlbGV0ZScpLFxuICAgIGhhc2hHZXQgPSByZXF1aXJlKCcuL19oYXNoR2V0JyksXG4gICAgaGFzaEhhcyA9IHJlcXVpcmUoJy4vX2hhc2hIYXMnKSxcbiAgICBoYXNoU2V0ID0gcmVxdWlyZSgnLi9faGFzaFNldCcpO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBoYXNoIG9iamVjdC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQGNvbnN0cnVjdG9yXG4gKiBAcGFyYW0ge0FycmF5fSBbZW50cmllc10gVGhlIGtleS12YWx1ZSBwYWlycyB0byBjYWNoZS5cbiAqL1xuZnVuY3Rpb24gSGFzaChlbnRyaWVzKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gZW50cmllcyA9PSBudWxsID8gMCA6IGVudHJpZXMubGVuZ3RoO1xuXG4gIHRoaXMuY2xlYXIoKTtcbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICB2YXIgZW50cnkgPSBlbnRyaWVzW2luZGV4XTtcbiAgICB0aGlzLnNldChlbnRyeVswXSwgZW50cnlbMV0pO1xuICB9XG59XG5cbi8vIEFkZCBtZXRob2RzIHRvIGBIYXNoYC5cbkhhc2gucHJvdG90eXBlLmNsZWFyID0gaGFzaENsZWFyO1xuSGFzaC5wcm90b3R5cGVbJ2RlbGV0ZSddID0gaGFzaERlbGV0ZTtcbkhhc2gucHJvdG90eXBlLmdldCA9IGhhc2hHZXQ7XG5IYXNoLnByb3RvdHlwZS5oYXMgPSBoYXNoSGFzO1xuSGFzaC5wcm90b3R5cGUuc2V0ID0gaGFzaFNldDtcblxubW9kdWxlLmV4cG9ydHMgPSBIYXNoO1xuIiwgInZhciBIYXNoID0gcmVxdWlyZSgnLi9fSGFzaCcpLFxuICAgIExpc3RDYWNoZSA9IHJlcXVpcmUoJy4vX0xpc3RDYWNoZScpLFxuICAgIE1hcCA9IHJlcXVpcmUoJy4vX01hcCcpO1xuXG4vKipcbiAqIFJlbW92ZXMgYWxsIGtleS12YWx1ZSBlbnRyaWVzIGZyb20gdGhlIG1hcC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgY2xlYXJcbiAqIEBtZW1iZXJPZiBNYXBDYWNoZVxuICovXG5mdW5jdGlvbiBtYXBDYWNoZUNsZWFyKCkge1xuICB0aGlzLnNpemUgPSAwO1xuICB0aGlzLl9fZGF0YV9fID0ge1xuICAgICdoYXNoJzogbmV3IEhhc2gsXG4gICAgJ21hcCc6IG5ldyAoTWFwIHx8IExpc3RDYWNoZSksXG4gICAgJ3N0cmluZyc6IG5ldyBIYXNoXG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbWFwQ2FjaGVDbGVhcjtcbiIsICIvKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIHN1aXRhYmxlIGZvciB1c2UgYXMgdW5pcXVlIG9iamVjdCBrZXkuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgc3VpdGFibGUsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNLZXlhYmxlKHZhbHVlKSB7XG4gIHZhciB0eXBlID0gdHlwZW9mIHZhbHVlO1xuICByZXR1cm4gKHR5cGUgPT0gJ3N0cmluZycgfHwgdHlwZSA9PSAnbnVtYmVyJyB8fCB0eXBlID09ICdzeW1ib2wnIHx8IHR5cGUgPT0gJ2Jvb2xlYW4nKVxuICAgID8gKHZhbHVlICE9PSAnX19wcm90b19fJylcbiAgICA6ICh2YWx1ZSA9PT0gbnVsbCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNLZXlhYmxlO1xuIiwgInZhciBpc0tleWFibGUgPSByZXF1aXJlKCcuL19pc0tleWFibGUnKTtcblxuLyoqXG4gKiBHZXRzIHRoZSBkYXRhIGZvciBgbWFwYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG1hcCBUaGUgbWFwIHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUgcmVmZXJlbmNlIGtleS5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBtYXAgZGF0YS5cbiAqL1xuZnVuY3Rpb24gZ2V0TWFwRGF0YShtYXAsIGtleSkge1xuICB2YXIgZGF0YSA9IG1hcC5fX2RhdGFfXztcbiAgcmV0dXJuIGlzS2V5YWJsZShrZXkpXG4gICAgPyBkYXRhW3R5cGVvZiBrZXkgPT0gJ3N0cmluZycgPyAnc3RyaW5nJyA6ICdoYXNoJ11cbiAgICA6IGRhdGEubWFwO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldE1hcERhdGE7XG4iLCAidmFyIGdldE1hcERhdGEgPSByZXF1aXJlKCcuL19nZXRNYXBEYXRhJyk7XG5cbi8qKlxuICogUmVtb3ZlcyBga2V5YCBhbmQgaXRzIHZhbHVlIGZyb20gdGhlIG1hcC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgZGVsZXRlXG4gKiBAbWVtYmVyT2YgTWFwQ2FjaGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gcmVtb3ZlLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBlbnRyeSB3YXMgcmVtb3ZlZCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBtYXBDYWNoZURlbGV0ZShrZXkpIHtcbiAgdmFyIHJlc3VsdCA9IGdldE1hcERhdGEodGhpcywga2V5KVsnZGVsZXRlJ10oa2V5KTtcbiAgdGhpcy5zaXplIC09IHJlc3VsdCA/IDEgOiAwO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG1hcENhY2hlRGVsZXRlO1xuIiwgInZhciBnZXRNYXBEYXRhID0gcmVxdWlyZSgnLi9fZ2V0TWFwRGF0YScpO1xuXG4vKipcbiAqIEdldHMgdGhlIG1hcCB2YWx1ZSBmb3IgYGtleWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGdldFxuICogQG1lbWJlck9mIE1hcENhY2hlXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIGdldC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBlbnRyeSB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gbWFwQ2FjaGVHZXQoa2V5KSB7XG4gIHJldHVybiBnZXRNYXBEYXRhKHRoaXMsIGtleSkuZ2V0KGtleSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbWFwQ2FjaGVHZXQ7XG4iLCAidmFyIGdldE1hcERhdGEgPSByZXF1aXJlKCcuL19nZXRNYXBEYXRhJyk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGEgbWFwIHZhbHVlIGZvciBga2V5YCBleGlzdHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGhhc1xuICogQG1lbWJlck9mIE1hcENhY2hlXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIGVudHJ5IHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFuIGVudHJ5IGZvciBga2V5YCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gbWFwQ2FjaGVIYXMoa2V5KSB7XG4gIHJldHVybiBnZXRNYXBEYXRhKHRoaXMsIGtleSkuaGFzKGtleSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbWFwQ2FjaGVIYXM7XG4iLCAidmFyIGdldE1hcERhdGEgPSByZXF1aXJlKCcuL19nZXRNYXBEYXRhJyk7XG5cbi8qKlxuICogU2V0cyB0aGUgbWFwIGBrZXlgIHRvIGB2YWx1ZWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIHNldFxuICogQG1lbWJlck9mIE1hcENhY2hlXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHNldC5cbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNldC5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG1hcCBjYWNoZSBpbnN0YW5jZS5cbiAqL1xuZnVuY3Rpb24gbWFwQ2FjaGVTZXQoa2V5LCB2YWx1ZSkge1xuICB2YXIgZGF0YSA9IGdldE1hcERhdGEodGhpcywga2V5KSxcbiAgICAgIHNpemUgPSBkYXRhLnNpemU7XG5cbiAgZGF0YS5zZXQoa2V5LCB2YWx1ZSk7XG4gIHRoaXMuc2l6ZSArPSBkYXRhLnNpemUgPT0gc2l6ZSA/IDAgOiAxO1xuICByZXR1cm4gdGhpcztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBtYXBDYWNoZVNldDtcbiIsICJ2YXIgbWFwQ2FjaGVDbGVhciA9IHJlcXVpcmUoJy4vX21hcENhY2hlQ2xlYXInKSxcbiAgICBtYXBDYWNoZURlbGV0ZSA9IHJlcXVpcmUoJy4vX21hcENhY2hlRGVsZXRlJyksXG4gICAgbWFwQ2FjaGVHZXQgPSByZXF1aXJlKCcuL19tYXBDYWNoZUdldCcpLFxuICAgIG1hcENhY2hlSGFzID0gcmVxdWlyZSgnLi9fbWFwQ2FjaGVIYXMnKSxcbiAgICBtYXBDYWNoZVNldCA9IHJlcXVpcmUoJy4vX21hcENhY2hlU2V0Jyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhIG1hcCBjYWNoZSBvYmplY3QgdG8gc3RvcmUga2V5LXZhbHVlIHBhaXJzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAY29uc3RydWN0b3JcbiAqIEBwYXJhbSB7QXJyYXl9IFtlbnRyaWVzXSBUaGUga2V5LXZhbHVlIHBhaXJzIHRvIGNhY2hlLlxuICovXG5mdW5jdGlvbiBNYXBDYWNoZShlbnRyaWVzKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gZW50cmllcyA9PSBudWxsID8gMCA6IGVudHJpZXMubGVuZ3RoO1xuXG4gIHRoaXMuY2xlYXIoKTtcbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICB2YXIgZW50cnkgPSBlbnRyaWVzW2luZGV4XTtcbiAgICB0aGlzLnNldChlbnRyeVswXSwgZW50cnlbMV0pO1xuICB9XG59XG5cbi8vIEFkZCBtZXRob2RzIHRvIGBNYXBDYWNoZWAuXG5NYXBDYWNoZS5wcm90b3R5cGUuY2xlYXIgPSBtYXBDYWNoZUNsZWFyO1xuTWFwQ2FjaGUucHJvdG90eXBlWydkZWxldGUnXSA9IG1hcENhY2hlRGVsZXRlO1xuTWFwQ2FjaGUucHJvdG90eXBlLmdldCA9IG1hcENhY2hlR2V0O1xuTWFwQ2FjaGUucHJvdG90eXBlLmhhcyA9IG1hcENhY2hlSGFzO1xuTWFwQ2FjaGUucHJvdG90eXBlLnNldCA9IG1hcENhY2hlU2V0O1xuXG5tb2R1bGUuZXhwb3J0cyA9IE1hcENhY2hlO1xuIiwgInZhciBMaXN0Q2FjaGUgPSByZXF1aXJlKCcuL19MaXN0Q2FjaGUnKSxcbiAgICBNYXAgPSByZXF1aXJlKCcuL19NYXAnKSxcbiAgICBNYXBDYWNoZSA9IHJlcXVpcmUoJy4vX01hcENhY2hlJyk7XG5cbi8qKiBVc2VkIGFzIHRoZSBzaXplIHRvIGVuYWJsZSBsYXJnZSBhcnJheSBvcHRpbWl6YXRpb25zLiAqL1xudmFyIExBUkdFX0FSUkFZX1NJWkUgPSAyMDA7XG5cbi8qKlxuICogU2V0cyB0aGUgc3RhY2sgYGtleWAgdG8gYHZhbHVlYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgc2V0XG4gKiBAbWVtYmVyT2YgU3RhY2tcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gc2V0LlxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2V0LlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgc3RhY2sgY2FjaGUgaW5zdGFuY2UuXG4gKi9cbmZ1bmN0aW9uIHN0YWNrU2V0KGtleSwgdmFsdWUpIHtcbiAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fO1xuICBpZiAoZGF0YSBpbnN0YW5jZW9mIExpc3RDYWNoZSkge1xuICAgIHZhciBwYWlycyA9IGRhdGEuX19kYXRhX187XG4gICAgaWYgKCFNYXAgfHwgKHBhaXJzLmxlbmd0aCA8IExBUkdFX0FSUkFZX1NJWkUgLSAxKSkge1xuICAgICAgcGFpcnMucHVzaChba2V5LCB2YWx1ZV0pO1xuICAgICAgdGhpcy5zaXplID0gKytkYXRhLnNpemU7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgZGF0YSA9IHRoaXMuX19kYXRhX18gPSBuZXcgTWFwQ2FjaGUocGFpcnMpO1xuICB9XG4gIGRhdGEuc2V0KGtleSwgdmFsdWUpO1xuICB0aGlzLnNpemUgPSBkYXRhLnNpemU7XG4gIHJldHVybiB0aGlzO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHN0YWNrU2V0O1xuIiwgInZhciBMaXN0Q2FjaGUgPSByZXF1aXJlKCcuL19MaXN0Q2FjaGUnKSxcbiAgICBzdGFja0NsZWFyID0gcmVxdWlyZSgnLi9fc3RhY2tDbGVhcicpLFxuICAgIHN0YWNrRGVsZXRlID0gcmVxdWlyZSgnLi9fc3RhY2tEZWxldGUnKSxcbiAgICBzdGFja0dldCA9IHJlcXVpcmUoJy4vX3N0YWNrR2V0JyksXG4gICAgc3RhY2tIYXMgPSByZXF1aXJlKCcuL19zdGFja0hhcycpLFxuICAgIHN0YWNrU2V0ID0gcmVxdWlyZSgnLi9fc3RhY2tTZXQnKTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgc3RhY2sgY2FjaGUgb2JqZWN0IHRvIHN0b3JlIGtleS12YWx1ZSBwYWlycy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQGNvbnN0cnVjdG9yXG4gKiBAcGFyYW0ge0FycmF5fSBbZW50cmllc10gVGhlIGtleS12YWx1ZSBwYWlycyB0byBjYWNoZS5cbiAqL1xuZnVuY3Rpb24gU3RhY2soZW50cmllcykge1xuICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX18gPSBuZXcgTGlzdENhY2hlKGVudHJpZXMpO1xuICB0aGlzLnNpemUgPSBkYXRhLnNpemU7XG59XG5cbi8vIEFkZCBtZXRob2RzIHRvIGBTdGFja2AuXG5TdGFjay5wcm90b3R5cGUuY2xlYXIgPSBzdGFja0NsZWFyO1xuU3RhY2sucHJvdG90eXBlWydkZWxldGUnXSA9IHN0YWNrRGVsZXRlO1xuU3RhY2sucHJvdG90eXBlLmdldCA9IHN0YWNrR2V0O1xuU3RhY2sucHJvdG90eXBlLmhhcyA9IHN0YWNrSGFzO1xuU3RhY2sucHJvdG90eXBlLnNldCA9IHN0YWNrU2V0O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFN0YWNrO1xuIiwgIi8qKiBVc2VkIHRvIHN0YW5kLWluIGZvciBgdW5kZWZpbmVkYCBoYXNoIHZhbHVlcy4gKi9cbnZhciBIQVNIX1VOREVGSU5FRCA9ICdfX2xvZGFzaF9oYXNoX3VuZGVmaW5lZF9fJztcblxuLyoqXG4gKiBBZGRzIGB2YWx1ZWAgdG8gdGhlIGFycmF5IGNhY2hlLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBhZGRcbiAqIEBtZW1iZXJPZiBTZXRDYWNoZVxuICogQGFsaWFzIHB1c2hcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNhY2hlLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY2FjaGUgaW5zdGFuY2UuXG4gKi9cbmZ1bmN0aW9uIHNldENhY2hlQWRkKHZhbHVlKSB7XG4gIHRoaXMuX19kYXRhX18uc2V0KHZhbHVlLCBIQVNIX1VOREVGSU5FRCk7XG4gIHJldHVybiB0aGlzO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHNldENhY2hlQWRkO1xuIiwgIi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgaW4gdGhlIGFycmF5IGNhY2hlLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBoYXNcbiAqIEBtZW1iZXJPZiBTZXRDYWNoZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2VhcmNoIGZvci5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgZm91bmQsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gc2V0Q2FjaGVIYXModmFsdWUpIHtcbiAgcmV0dXJuIHRoaXMuX19kYXRhX18uaGFzKHZhbHVlKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzZXRDYWNoZUhhcztcbiIsICJ2YXIgTWFwQ2FjaGUgPSByZXF1aXJlKCcuL19NYXBDYWNoZScpLFxuICAgIHNldENhY2hlQWRkID0gcmVxdWlyZSgnLi9fc2V0Q2FjaGVBZGQnKSxcbiAgICBzZXRDYWNoZUhhcyA9IHJlcXVpcmUoJy4vX3NldENhY2hlSGFzJyk7XG5cbi8qKlxuICpcbiAqIENyZWF0ZXMgYW4gYXJyYXkgY2FjaGUgb2JqZWN0IHRvIHN0b3JlIHVuaXF1ZSB2YWx1ZXMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBjb25zdHJ1Y3RvclxuICogQHBhcmFtIHtBcnJheX0gW3ZhbHVlc10gVGhlIHZhbHVlcyB0byBjYWNoZS5cbiAqL1xuZnVuY3Rpb24gU2V0Q2FjaGUodmFsdWVzKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gdmFsdWVzID09IG51bGwgPyAwIDogdmFsdWVzLmxlbmd0aDtcblxuICB0aGlzLl9fZGF0YV9fID0gbmV3IE1hcENhY2hlO1xuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHRoaXMuYWRkKHZhbHVlc1tpbmRleF0pO1xuICB9XG59XG5cbi8vIEFkZCBtZXRob2RzIHRvIGBTZXRDYWNoZWAuXG5TZXRDYWNoZS5wcm90b3R5cGUuYWRkID0gU2V0Q2FjaGUucHJvdG90eXBlLnB1c2ggPSBzZXRDYWNoZUFkZDtcblNldENhY2hlLnByb3RvdHlwZS5oYXMgPSBzZXRDYWNoZUhhcztcblxubW9kdWxlLmV4cG9ydHMgPSBTZXRDYWNoZTtcbiIsICIvKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5zb21lYCBmb3IgYXJyYXlzIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWVcbiAqIHNob3J0aGFuZHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IFthcnJheV0gVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHByZWRpY2F0ZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFueSBlbGVtZW50IHBhc3NlcyB0aGUgcHJlZGljYXRlIGNoZWNrLFxuICogIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYXJyYXlTb21lKGFycmF5LCBwcmVkaWNhdGUpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIGlmIChwcmVkaWNhdGUoYXJyYXlbaW5kZXhdLCBpbmRleCwgYXJyYXkpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFycmF5U29tZTtcbiIsICIvKipcbiAqIENoZWNrcyBpZiBhIGBjYWNoZWAgdmFsdWUgZm9yIGBrZXlgIGV4aXN0cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IGNhY2hlIFRoZSBjYWNoZSB0byBxdWVyeS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgZW50cnkgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYW4gZW50cnkgZm9yIGBrZXlgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBjYWNoZUhhcyhjYWNoZSwga2V5KSB7XG4gIHJldHVybiBjYWNoZS5oYXMoa2V5KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjYWNoZUhhcztcbiIsICJ2YXIgU2V0Q2FjaGUgPSByZXF1aXJlKCcuL19TZXRDYWNoZScpLFxuICAgIGFycmF5U29tZSA9IHJlcXVpcmUoJy4vX2FycmF5U29tZScpLFxuICAgIGNhY2hlSGFzID0gcmVxdWlyZSgnLi9fY2FjaGVIYXMnKTtcblxuLyoqIFVzZWQgdG8gY29tcG9zZSBiaXRtYXNrcyBmb3IgdmFsdWUgY29tcGFyaXNvbnMuICovXG52YXIgQ09NUEFSRV9QQVJUSUFMX0ZMQUcgPSAxLFxuICAgIENPTVBBUkVfVU5PUkRFUkVEX0ZMQUcgPSAyO1xuXG4vKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZUlzRXF1YWxEZWVwYCBmb3IgYXJyYXlzIHdpdGggc3VwcG9ydCBmb3JcbiAqIHBhcnRpYWwgZGVlcCBjb21wYXJpc29ucy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0ge0FycmF5fSBvdGhlciBUaGUgb3RoZXIgYXJyYXkgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLiBTZWUgYGJhc2VJc0VxdWFsYCBmb3IgbW9yZSBkZXRhaWxzLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gY3VzdG9taXplciBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvbXBhcmlzb25zLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gZXF1YWxGdW5jIFRoZSBmdW5jdGlvbiB0byBkZXRlcm1pbmUgZXF1aXZhbGVudHMgb2YgdmFsdWVzLlxuICogQHBhcmFtIHtPYmplY3R9IHN0YWNrIFRyYWNrcyB0cmF2ZXJzZWQgYGFycmF5YCBhbmQgYG90aGVyYCBvYmplY3RzLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBhcnJheXMgYXJlIGVxdWl2YWxlbnQsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gZXF1YWxBcnJheXMoYXJyYXksIG90aGVyLCBiaXRtYXNrLCBjdXN0b21pemVyLCBlcXVhbEZ1bmMsIHN0YWNrKSB7XG4gIHZhciBpc1BhcnRpYWwgPSBiaXRtYXNrICYgQ09NUEFSRV9QQVJUSUFMX0ZMQUcsXG4gICAgICBhcnJMZW5ndGggPSBhcnJheS5sZW5ndGgsXG4gICAgICBvdGhMZW5ndGggPSBvdGhlci5sZW5ndGg7XG5cbiAgaWYgKGFyckxlbmd0aCAhPSBvdGhMZW5ndGggJiYgIShpc1BhcnRpYWwgJiYgb3RoTGVuZ3RoID4gYXJyTGVuZ3RoKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICAvLyBDaGVjayB0aGF0IGN5Y2xpYyB2YWx1ZXMgYXJlIGVxdWFsLlxuICB2YXIgYXJyU3RhY2tlZCA9IHN0YWNrLmdldChhcnJheSk7XG4gIHZhciBvdGhTdGFja2VkID0gc3RhY2suZ2V0KG90aGVyKTtcbiAgaWYgKGFyclN0YWNrZWQgJiYgb3RoU3RhY2tlZCkge1xuICAgIHJldHVybiBhcnJTdGFja2VkID09IG90aGVyICYmIG90aFN0YWNrZWQgPT0gYXJyYXk7XG4gIH1cbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICByZXN1bHQgPSB0cnVlLFxuICAgICAgc2VlbiA9IChiaXRtYXNrICYgQ09NUEFSRV9VTk9SREVSRURfRkxBRykgPyBuZXcgU2V0Q2FjaGUgOiB1bmRlZmluZWQ7XG5cbiAgc3RhY2suc2V0KGFycmF5LCBvdGhlcik7XG4gIHN0YWNrLnNldChvdGhlciwgYXJyYXkpO1xuXG4gIC8vIElnbm9yZSBub24taW5kZXggcHJvcGVydGllcy5cbiAgd2hpbGUgKCsraW5kZXggPCBhcnJMZW5ndGgpIHtcbiAgICB2YXIgYXJyVmFsdWUgPSBhcnJheVtpbmRleF0sXG4gICAgICAgIG90aFZhbHVlID0gb3RoZXJbaW5kZXhdO1xuXG4gICAgaWYgKGN1c3RvbWl6ZXIpIHtcbiAgICAgIHZhciBjb21wYXJlZCA9IGlzUGFydGlhbFxuICAgICAgICA/IGN1c3RvbWl6ZXIob3RoVmFsdWUsIGFyclZhbHVlLCBpbmRleCwgb3RoZXIsIGFycmF5LCBzdGFjaylcbiAgICAgICAgOiBjdXN0b21pemVyKGFyclZhbHVlLCBvdGhWYWx1ZSwgaW5kZXgsIGFycmF5LCBvdGhlciwgc3RhY2spO1xuICAgIH1cbiAgICBpZiAoY29tcGFyZWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKGNvbXBhcmVkKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgcmVzdWx0ID0gZmFsc2U7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgLy8gUmVjdXJzaXZlbHkgY29tcGFyZSBhcnJheXMgKHN1c2NlcHRpYmxlIHRvIGNhbGwgc3RhY2sgbGltaXRzKS5cbiAgICBpZiAoc2Vlbikge1xuICAgICAgaWYgKCFhcnJheVNvbWUob3RoZXIsIGZ1bmN0aW9uKG90aFZhbHVlLCBvdGhJbmRleCkge1xuICAgICAgICAgICAgaWYgKCFjYWNoZUhhcyhzZWVuLCBvdGhJbmRleCkgJiZcbiAgICAgICAgICAgICAgICAoYXJyVmFsdWUgPT09IG90aFZhbHVlIHx8IGVxdWFsRnVuYyhhcnJWYWx1ZSwgb3RoVmFsdWUsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIHN0YWNrKSkpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHNlZW4ucHVzaChvdGhJbmRleCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSkpIHtcbiAgICAgICAgcmVzdWx0ID0gZmFsc2U7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoIShcbiAgICAgICAgICBhcnJWYWx1ZSA9PT0gb3RoVmFsdWUgfHxcbiAgICAgICAgICAgIGVxdWFsRnVuYyhhcnJWYWx1ZSwgb3RoVmFsdWUsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIHN0YWNrKVxuICAgICAgICApKSB7XG4gICAgICByZXN1bHQgPSBmYWxzZTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICBzdGFja1snZGVsZXRlJ10oYXJyYXkpO1xuICBzdGFja1snZGVsZXRlJ10ob3RoZXIpO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGVxdWFsQXJyYXlzO1xuIiwgInZhciByb290ID0gcmVxdWlyZSgnLi9fcm9vdCcpO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBVaW50OEFycmF5ID0gcm9vdC5VaW50OEFycmF5O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFVpbnQ4QXJyYXk7XG4iLCAiLyoqXG4gKiBDb252ZXJ0cyBgbWFwYCB0byBpdHMga2V5LXZhbHVlIHBhaXJzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gbWFwIFRoZSBtYXAgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUga2V5LXZhbHVlIHBhaXJzLlxuICovXG5mdW5jdGlvbiBtYXBUb0FycmF5KG1hcCkge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIHJlc3VsdCA9IEFycmF5KG1hcC5zaXplKTtcblxuICBtYXAuZm9yRWFjaChmdW5jdGlvbih2YWx1ZSwga2V5KSB7XG4gICAgcmVzdWx0WysraW5kZXhdID0gW2tleSwgdmFsdWVdO1xuICB9KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBtYXBUb0FycmF5O1xuIiwgIi8qKlxuICogQ29udmVydHMgYHNldGAgdG8gYW4gYXJyYXkgb2YgaXRzIHZhbHVlcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IHNldCBUaGUgc2V0IHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHZhbHVlcy5cbiAqL1xuZnVuY3Rpb24gc2V0VG9BcnJheShzZXQpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICByZXN1bHQgPSBBcnJheShzZXQuc2l6ZSk7XG5cbiAgc2V0LmZvckVhY2goZnVuY3Rpb24odmFsdWUpIHtcbiAgICByZXN1bHRbKytpbmRleF0gPSB2YWx1ZTtcbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc2V0VG9BcnJheTtcbiIsICJ2YXIgU3ltYm9sID0gcmVxdWlyZSgnLi9fU3ltYm9sJyksXG4gICAgVWludDhBcnJheSA9IHJlcXVpcmUoJy4vX1VpbnQ4QXJyYXknKSxcbiAgICBlcSA9IHJlcXVpcmUoJy4vZXEnKSxcbiAgICBlcXVhbEFycmF5cyA9IHJlcXVpcmUoJy4vX2VxdWFsQXJyYXlzJyksXG4gICAgbWFwVG9BcnJheSA9IHJlcXVpcmUoJy4vX21hcFRvQXJyYXknKSxcbiAgICBzZXRUb0FycmF5ID0gcmVxdWlyZSgnLi9fc2V0VG9BcnJheScpO1xuXG4vKiogVXNlZCB0byBjb21wb3NlIGJpdG1hc2tzIGZvciB2YWx1ZSBjb21wYXJpc29ucy4gKi9cbnZhciBDT01QQVJFX1BBUlRJQUxfRkxBRyA9IDEsXG4gICAgQ09NUEFSRV9VTk9SREVSRURfRkxBRyA9IDI7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBib29sVGFnID0gJ1tvYmplY3QgQm9vbGVhbl0nLFxuICAgIGRhdGVUYWcgPSAnW29iamVjdCBEYXRlXScsXG4gICAgZXJyb3JUYWcgPSAnW29iamVjdCBFcnJvcl0nLFxuICAgIG1hcFRhZyA9ICdbb2JqZWN0IE1hcF0nLFxuICAgIG51bWJlclRhZyA9ICdbb2JqZWN0IE51bWJlcl0nLFxuICAgIHJlZ2V4cFRhZyA9ICdbb2JqZWN0IFJlZ0V4cF0nLFxuICAgIHNldFRhZyA9ICdbb2JqZWN0IFNldF0nLFxuICAgIHN0cmluZ1RhZyA9ICdbb2JqZWN0IFN0cmluZ10nLFxuICAgIHN5bWJvbFRhZyA9ICdbb2JqZWN0IFN5bWJvbF0nO1xuXG52YXIgYXJyYXlCdWZmZXJUYWcgPSAnW29iamVjdCBBcnJheUJ1ZmZlcl0nLFxuICAgIGRhdGFWaWV3VGFnID0gJ1tvYmplY3QgRGF0YVZpZXddJztcblxuLyoqIFVzZWQgdG8gY29udmVydCBzeW1ib2xzIHRvIHByaW1pdGl2ZXMgYW5kIHN0cmluZ3MuICovXG52YXIgc3ltYm9sUHJvdG8gPSBTeW1ib2wgPyBTeW1ib2wucHJvdG90eXBlIDogdW5kZWZpbmVkLFxuICAgIHN5bWJvbFZhbHVlT2YgPSBzeW1ib2xQcm90byA/IHN5bWJvbFByb3RvLnZhbHVlT2YgOiB1bmRlZmluZWQ7XG5cbi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlSXNFcXVhbERlZXBgIGZvciBjb21wYXJpbmcgb2JqZWN0cyBvZlxuICogdGhlIHNhbWUgYHRvU3RyaW5nVGFnYC5cbiAqXG4gKiAqKk5vdGU6KiogVGhpcyBmdW5jdGlvbiBvbmx5IHN1cHBvcnRzIGNvbXBhcmluZyB2YWx1ZXMgd2l0aCB0YWdzIG9mXG4gKiBgQm9vbGVhbmAsIGBEYXRlYCwgYEVycm9yYCwgYE51bWJlcmAsIGBSZWdFeHBgLCBvciBgU3RyaW5nYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0ge09iamVjdH0gb3RoZXIgVGhlIG90aGVyIG9iamVjdCB0byBjb21wYXJlLlxuICogQHBhcmFtIHtzdHJpbmd9IHRhZyBUaGUgYHRvU3RyaW5nVGFnYCBvZiB0aGUgb2JqZWN0cyB0byBjb21wYXJlLlxuICogQHBhcmFtIHtudW1iZXJ9IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuIFNlZSBgYmFzZUlzRXF1YWxgIGZvciBtb3JlIGRldGFpbHMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBjdXN0b21pemVyIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY29tcGFyaXNvbnMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBlcXVhbEZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGRldGVybWluZSBlcXVpdmFsZW50cyBvZiB2YWx1ZXMuXG4gKiBAcGFyYW0ge09iamVjdH0gc3RhY2sgVHJhY2tzIHRyYXZlcnNlZCBgb2JqZWN0YCBhbmQgYG90aGVyYCBvYmplY3RzLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBvYmplY3RzIGFyZSBlcXVpdmFsZW50LCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGVxdWFsQnlUYWcob2JqZWN0LCBvdGhlciwgdGFnLCBiaXRtYXNrLCBjdXN0b21pemVyLCBlcXVhbEZ1bmMsIHN0YWNrKSB7XG4gIHN3aXRjaCAodGFnKSB7XG4gICAgY2FzZSBkYXRhVmlld1RhZzpcbiAgICAgIGlmICgob2JqZWN0LmJ5dGVMZW5ndGggIT0gb3RoZXIuYnl0ZUxlbmd0aCkgfHxcbiAgICAgICAgICAob2JqZWN0LmJ5dGVPZmZzZXQgIT0gb3RoZXIuYnl0ZU9mZnNldCkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgb2JqZWN0ID0gb2JqZWN0LmJ1ZmZlcjtcbiAgICAgIG90aGVyID0gb3RoZXIuYnVmZmVyO1xuXG4gICAgY2FzZSBhcnJheUJ1ZmZlclRhZzpcbiAgICAgIGlmICgob2JqZWN0LmJ5dGVMZW5ndGggIT0gb3RoZXIuYnl0ZUxlbmd0aCkgfHxcbiAgICAgICAgICAhZXF1YWxGdW5jKG5ldyBVaW50OEFycmF5KG9iamVjdCksIG5ldyBVaW50OEFycmF5KG90aGVyKSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWU7XG5cbiAgICBjYXNlIGJvb2xUYWc6XG4gICAgY2FzZSBkYXRlVGFnOlxuICAgIGNhc2UgbnVtYmVyVGFnOlxuICAgICAgLy8gQ29lcmNlIGJvb2xlYW5zIHRvIGAxYCBvciBgMGAgYW5kIGRhdGVzIHRvIG1pbGxpc2Vjb25kcy5cbiAgICAgIC8vIEludmFsaWQgZGF0ZXMgYXJlIGNvZXJjZWQgdG8gYE5hTmAuXG4gICAgICByZXR1cm4gZXEoK29iamVjdCwgK290aGVyKTtcblxuICAgIGNhc2UgZXJyb3JUYWc6XG4gICAgICByZXR1cm4gb2JqZWN0Lm5hbWUgPT0gb3RoZXIubmFtZSAmJiBvYmplY3QubWVzc2FnZSA9PSBvdGhlci5tZXNzYWdlO1xuXG4gICAgY2FzZSByZWdleHBUYWc6XG4gICAgY2FzZSBzdHJpbmdUYWc6XG4gICAgICAvLyBDb2VyY2UgcmVnZXhlcyB0byBzdHJpbmdzIGFuZCB0cmVhdCBzdHJpbmdzLCBwcmltaXRpdmVzIGFuZCBvYmplY3RzLFxuICAgICAgLy8gYXMgZXF1YWwuIFNlZSBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtcmVnZXhwLnByb3RvdHlwZS50b3N0cmluZ1xuICAgICAgLy8gZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgIHJldHVybiBvYmplY3QgPT0gKG90aGVyICsgJycpO1xuXG4gICAgY2FzZSBtYXBUYWc6XG4gICAgICB2YXIgY29udmVydCA9IG1hcFRvQXJyYXk7XG5cbiAgICBjYXNlIHNldFRhZzpcbiAgICAgIHZhciBpc1BhcnRpYWwgPSBiaXRtYXNrICYgQ09NUEFSRV9QQVJUSUFMX0ZMQUc7XG4gICAgICBjb252ZXJ0IHx8IChjb252ZXJ0ID0gc2V0VG9BcnJheSk7XG5cbiAgICAgIGlmIChvYmplY3Quc2l6ZSAhPSBvdGhlci5zaXplICYmICFpc1BhcnRpYWwpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgLy8gQXNzdW1lIGN5Y2xpYyB2YWx1ZXMgYXJlIGVxdWFsLlxuICAgICAgdmFyIHN0YWNrZWQgPSBzdGFjay5nZXQob2JqZWN0KTtcbiAgICAgIGlmIChzdGFja2VkKSB7XG4gICAgICAgIHJldHVybiBzdGFja2VkID09IG90aGVyO1xuICAgICAgfVxuICAgICAgYml0bWFzayB8PSBDT01QQVJFX1VOT1JERVJFRF9GTEFHO1xuXG4gICAgICAvLyBSZWN1cnNpdmVseSBjb21wYXJlIG9iamVjdHMgKHN1c2NlcHRpYmxlIHRvIGNhbGwgc3RhY2sgbGltaXRzKS5cbiAgICAgIHN0YWNrLnNldChvYmplY3QsIG90aGVyKTtcbiAgICAgIHZhciByZXN1bHQgPSBlcXVhbEFycmF5cyhjb252ZXJ0KG9iamVjdCksIGNvbnZlcnQob3RoZXIpLCBiaXRtYXNrLCBjdXN0b21pemVyLCBlcXVhbEZ1bmMsIHN0YWNrKTtcbiAgICAgIHN0YWNrWydkZWxldGUnXShvYmplY3QpO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcblxuICAgIGNhc2Ugc3ltYm9sVGFnOlxuICAgICAgaWYgKHN5bWJvbFZhbHVlT2YpIHtcbiAgICAgICAgcmV0dXJuIHN5bWJvbFZhbHVlT2YuY2FsbChvYmplY3QpID09IHN5bWJvbFZhbHVlT2YuY2FsbChvdGhlcik7XG4gICAgICB9XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGVxdWFsQnlUYWc7XG4iLCAiLyoqXG4gKiBBcHBlbmRzIHRoZSBlbGVtZW50cyBvZiBgdmFsdWVzYCB0byBgYXJyYXlgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gbW9kaWZ5LlxuICogQHBhcmFtIHtBcnJheX0gdmFsdWVzIFRoZSB2YWx1ZXMgdG8gYXBwZW5kLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gKi9cbmZ1bmN0aW9uIGFycmF5UHVzaChhcnJheSwgdmFsdWVzKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gdmFsdWVzLmxlbmd0aCxcbiAgICAgIG9mZnNldCA9IGFycmF5Lmxlbmd0aDtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIGFycmF5W29mZnNldCArIGluZGV4XSA9IHZhbHVlc1tpbmRleF07XG4gIH1cbiAgcmV0dXJuIGFycmF5O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFycmF5UHVzaDtcbiIsICIvKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYW4gYEFycmF5YCBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gYXJyYXksIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0FycmF5KFsxLCAyLCAzXSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0FycmF5KGRvY3VtZW50LmJvZHkuY2hpbGRyZW4pO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzQXJyYXkoJ2FiYycpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzQXJyYXkoXy5ub29wKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbnZhciBpc0FycmF5ID0gQXJyYXkuaXNBcnJheTtcblxubW9kdWxlLmV4cG9ydHMgPSBpc0FycmF5O1xuIiwgInZhciBhcnJheVB1c2ggPSByZXF1aXJlKCcuL19hcnJheVB1c2gnKSxcbiAgICBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5Jyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYGdldEFsbEtleXNgIGFuZCBgZ2V0QWxsS2V5c0luYCB3aGljaCB1c2VzXG4gKiBga2V5c0Z1bmNgIGFuZCBgc3ltYm9sc0Z1bmNgIHRvIGdldCB0aGUgZW51bWVyYWJsZSBwcm9wZXJ0eSBuYW1lcyBhbmRcbiAqIHN5bWJvbHMgb2YgYG9iamVjdGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGtleXNGdW5jIFRoZSBmdW5jdGlvbiB0byBnZXQgdGhlIGtleXMgb2YgYG9iamVjdGAuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBzeW1ib2xzRnVuYyBUaGUgZnVuY3Rpb24gdG8gZ2V0IHRoZSBzeW1ib2xzIG9mIGBvYmplY3RgLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcyBhbmQgc3ltYm9scy5cbiAqL1xuZnVuY3Rpb24gYmFzZUdldEFsbEtleXMob2JqZWN0LCBrZXlzRnVuYywgc3ltYm9sc0Z1bmMpIHtcbiAgdmFyIHJlc3VsdCA9IGtleXNGdW5jKG9iamVjdCk7XG4gIHJldHVybiBpc0FycmF5KG9iamVjdCkgPyByZXN1bHQgOiBhcnJheVB1c2gocmVzdWx0LCBzeW1ib2xzRnVuYyhvYmplY3QpKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlR2V0QWxsS2V5cztcbiIsICIvKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5maWx0ZXJgIGZvciBhcnJheXMgd2l0aG91dCBzdXBwb3J0IGZvclxuICogaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gW2FycmF5XSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gcHJlZGljYXRlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBmaWx0ZXJlZCBhcnJheS5cbiAqL1xuZnVuY3Rpb24gYXJyYXlGaWx0ZXIoYXJyYXksIHByZWRpY2F0ZSkge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoLFxuICAgICAgcmVzSW5kZXggPSAwLFxuICAgICAgcmVzdWx0ID0gW107XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICB2YXIgdmFsdWUgPSBhcnJheVtpbmRleF07XG4gICAgaWYgKHByZWRpY2F0ZSh2YWx1ZSwgaW5kZXgsIGFycmF5KSkge1xuICAgICAgcmVzdWx0W3Jlc0luZGV4KytdID0gdmFsdWU7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYXJyYXlGaWx0ZXI7XG4iLCAiLyoqXG4gKiBUaGlzIG1ldGhvZCByZXR1cm5zIGEgbmV3IGVtcHR5IGFycmF5LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4xMy4wXG4gKiBAY2F0ZWdvcnkgVXRpbFxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZW1wdHkgYXJyYXkuXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBhcnJheXMgPSBfLnRpbWVzKDIsIF8uc3R1YkFycmF5KTtcbiAqXG4gKiBjb25zb2xlLmxvZyhhcnJheXMpO1xuICogLy8gPT4gW1tdLCBbXV1cbiAqXG4gKiBjb25zb2xlLmxvZyhhcnJheXNbMF0gPT09IGFycmF5c1sxXSk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBzdHViQXJyYXkoKSB7XG4gIHJldHVybiBbXTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzdHViQXJyYXk7XG4iLCAidmFyIGFycmF5RmlsdGVyID0gcmVxdWlyZSgnLi9fYXJyYXlGaWx0ZXInKSxcbiAgICBzdHViQXJyYXkgPSByZXF1aXJlKCcuL3N0dWJBcnJheScpO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBwcm9wZXJ0eUlzRW51bWVyYWJsZSA9IG9iamVjdFByb3RvLnByb3BlcnR5SXNFbnVtZXJhYmxlO1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyBmb3IgdGhvc2Ugd2l0aCB0aGUgc2FtZSBuYW1lIGFzIG90aGVyIGBsb2Rhc2hgIG1ldGhvZHMuICovXG52YXIgbmF0aXZlR2V0U3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiB0aGUgb3duIGVudW1lcmFibGUgc3ltYm9scyBvZiBgb2JqZWN0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBzeW1ib2xzLlxuICovXG52YXIgZ2V0U3ltYm9scyA9ICFuYXRpdmVHZXRTeW1ib2xzID8gc3R1YkFycmF5IDogZnVuY3Rpb24ob2JqZWN0KSB7XG4gIGlmIChvYmplY3QgPT0gbnVsbCkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuICBvYmplY3QgPSBPYmplY3Qob2JqZWN0KTtcbiAgcmV0dXJuIGFycmF5RmlsdGVyKG5hdGl2ZUdldFN5bWJvbHMob2JqZWN0KSwgZnVuY3Rpb24oc3ltYm9sKSB7XG4gICAgcmV0dXJuIHByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwob2JqZWN0LCBzeW1ib2wpO1xuICB9KTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0U3ltYm9scztcbiIsICIvKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnRpbWVzYCB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHNcbiAqIG9yIG1heCBhcnJheSBsZW5ndGggY2hlY2tzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge251bWJlcn0gbiBUaGUgbnVtYmVyIG9mIHRpbWVzIHRvIGludm9rZSBgaXRlcmF0ZWVgLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcmVzdWx0cy5cbiAqL1xuZnVuY3Rpb24gYmFzZVRpbWVzKG4sIGl0ZXJhdGVlKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgcmVzdWx0ID0gQXJyYXkobik7XG5cbiAgd2hpbGUgKCsraW5kZXggPCBuKSB7XG4gICAgcmVzdWx0W2luZGV4XSA9IGl0ZXJhdGVlKGluZGV4KTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VUaW1lcztcbiIsICIvKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIG9iamVjdC1saWtlLiBBIHZhbHVlIGlzIG9iamVjdC1saWtlIGlmIGl0J3Mgbm90IGBudWxsYFxuICogYW5kIGhhcyBhIGB0eXBlb2ZgIHJlc3VsdCBvZiBcIm9iamVjdFwiLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIG9iamVjdC1saWtlLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKHt9KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0TGlrZShbMSwgMiwgM10pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKF8ubm9vcCk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKG51bGwpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNPYmplY3RMaWtlKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSAhPSBudWxsICYmIHR5cGVvZiB2YWx1ZSA9PSAnb2JqZWN0Jztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc09iamVjdExpa2U7XG4iLCAidmFyIGJhc2VHZXRUYWcgPSByZXF1aXJlKCcuL19iYXNlR2V0VGFnJyksXG4gICAgaXNPYmplY3RMaWtlID0gcmVxdWlyZSgnLi9pc09iamVjdExpa2UnKTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIGFyZ3NUYWcgPSAnW29iamVjdCBBcmd1bWVudHNdJztcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc0FyZ3VtZW50c2AuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gYGFyZ3VtZW50c2Agb2JqZWN0LFxuICovXG5mdW5jdGlvbiBiYXNlSXNBcmd1bWVudHModmFsdWUpIHtcbiAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgYmFzZUdldFRhZyh2YWx1ZSkgPT0gYXJnc1RhZztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlSXNBcmd1bWVudHM7XG4iLCAidmFyIGJhc2VJc0FyZ3VtZW50cyA9IHJlcXVpcmUoJy4vX2Jhc2VJc0FyZ3VtZW50cycpLFxuICAgIGlzT2JqZWN0TGlrZSA9IHJlcXVpcmUoJy4vaXNPYmplY3RMaWtlJyk7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIHByb3BlcnR5SXNFbnVtZXJhYmxlID0gb2JqZWN0UHJvdG8ucHJvcGVydHlJc0VudW1lcmFibGU7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgbGlrZWx5IGFuIGBhcmd1bWVudHNgIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBgYXJndW1lbnRzYCBvYmplY3QsXG4gKiAgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzQXJndW1lbnRzKGZ1bmN0aW9uKCkgeyByZXR1cm4gYXJndW1lbnRzOyB9KCkpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcmd1bWVudHMoWzEsIDIsIDNdKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbnZhciBpc0FyZ3VtZW50cyA9IGJhc2VJc0FyZ3VtZW50cyhmdW5jdGlvbigpIHsgcmV0dXJuIGFyZ3VtZW50czsgfSgpKSA/IGJhc2VJc0FyZ3VtZW50cyA6IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIGhhc093blByb3BlcnR5LmNhbGwodmFsdWUsICdjYWxsZWUnKSAmJlxuICAgICFwcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHZhbHVlLCAnY2FsbGVlJyk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlzQXJndW1lbnRzO1xuIiwgIi8qKlxuICogVGhpcyBtZXRob2QgcmV0dXJucyBgZmFsc2VgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4xMy4wXG4gKiBAY2F0ZWdvcnkgVXRpbFxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy50aW1lcygyLCBfLnN0dWJGYWxzZSk7XG4gKiAvLyA9PiBbZmFsc2UsIGZhbHNlXVxuICovXG5mdW5jdGlvbiBzdHViRmFsc2UoKSB7XG4gIHJldHVybiBmYWxzZTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzdHViRmFsc2U7XG4iLCAidmFyIHJvb3QgPSByZXF1aXJlKCcuL19yb290JyksXG4gICAgc3R1YkZhbHNlID0gcmVxdWlyZSgnLi9zdHViRmFsc2UnKTtcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBleHBvcnRzYC4gKi9cbnZhciBmcmVlRXhwb3J0cyA9IHR5cGVvZiBleHBvcnRzID09ICdvYmplY3QnICYmIGV4cG9ydHMgJiYgIWV4cG9ydHMubm9kZVR5cGUgJiYgZXhwb3J0cztcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBtb2R1bGVgLiAqL1xudmFyIGZyZWVNb2R1bGUgPSBmcmVlRXhwb3J0cyAmJiB0eXBlb2YgbW9kdWxlID09ICdvYmplY3QnICYmIG1vZHVsZSAmJiAhbW9kdWxlLm5vZGVUeXBlICYmIG1vZHVsZTtcblxuLyoqIERldGVjdCB0aGUgcG9wdWxhciBDb21tb25KUyBleHRlbnNpb24gYG1vZHVsZS5leHBvcnRzYC4gKi9cbnZhciBtb2R1bGVFeHBvcnRzID0gZnJlZU1vZHVsZSAmJiBmcmVlTW9kdWxlLmV4cG9ydHMgPT09IGZyZWVFeHBvcnRzO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBCdWZmZXIgPSBtb2R1bGVFeHBvcnRzID8gcm9vdC5CdWZmZXIgOiB1bmRlZmluZWQ7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIGZvciB0aG9zZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgb3RoZXIgYGxvZGFzaGAgbWV0aG9kcy4gKi9cbnZhciBuYXRpdmVJc0J1ZmZlciA9IEJ1ZmZlciA/IEJ1ZmZlci5pc0J1ZmZlciA6IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIGJ1ZmZlci5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMy4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIGJ1ZmZlciwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzQnVmZmVyKG5ldyBCdWZmZXIoMikpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNCdWZmZXIobmV3IFVpbnQ4QXJyYXkoMikpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xudmFyIGlzQnVmZmVyID0gbmF0aXZlSXNCdWZmZXIgfHwgc3R1YkZhbHNlO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlzQnVmZmVyO1xuIiwgIi8qKiBVc2VkIGFzIHJlZmVyZW5jZXMgZm9yIHZhcmlvdXMgYE51bWJlcmAgY29uc3RhbnRzLiAqL1xudmFyIE1BWF9TQUZFX0lOVEVHRVIgPSA5MDA3MTk5MjU0NzQwOTkxO1xuXG4vKiogVXNlZCB0byBkZXRlY3QgdW5zaWduZWQgaW50ZWdlciB2YWx1ZXMuICovXG52YXIgcmVJc1VpbnQgPSAvXig/OjB8WzEtOV1cXGQqKSQvO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgdmFsaWQgYXJyYXktbGlrZSBpbmRleC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcGFyYW0ge251bWJlcn0gW2xlbmd0aD1NQVhfU0FGRV9JTlRFR0VSXSBUaGUgdXBwZXIgYm91bmRzIG9mIGEgdmFsaWQgaW5kZXguXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHZhbGlkIGluZGV4LCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGlzSW5kZXgodmFsdWUsIGxlbmd0aCkge1xuICB2YXIgdHlwZSA9IHR5cGVvZiB2YWx1ZTtcbiAgbGVuZ3RoID0gbGVuZ3RoID09IG51bGwgPyBNQVhfU0FGRV9JTlRFR0VSIDogbGVuZ3RoO1xuXG4gIHJldHVybiAhIWxlbmd0aCAmJlxuICAgICh0eXBlID09ICdudW1iZXInIHx8XG4gICAgICAodHlwZSAhPSAnc3ltYm9sJyAmJiByZUlzVWludC50ZXN0KHZhbHVlKSkpICYmXG4gICAgICAgICh2YWx1ZSA+IC0xICYmIHZhbHVlICUgMSA9PSAwICYmIHZhbHVlIDwgbGVuZ3RoKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc0luZGV4O1xuIiwgIi8qKiBVc2VkIGFzIHJlZmVyZW5jZXMgZm9yIHZhcmlvdXMgYE51bWJlcmAgY29uc3RhbnRzLiAqL1xudmFyIE1BWF9TQUZFX0lOVEVHRVIgPSA5MDA3MTk5MjU0NzQwOTkxO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgdmFsaWQgYXJyYXktbGlrZSBsZW5ndGguXG4gKlxuICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIGxvb3NlbHkgYmFzZWQgb25cbiAqIFtgVG9MZW5ndGhgXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy10b2xlbmd0aCkuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSB2YWxpZCBsZW5ndGgsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0xlbmd0aCgzKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzTGVuZ3RoKE51bWJlci5NSU5fVkFMVUUpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzTGVuZ3RoKEluZmluaXR5KTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc0xlbmd0aCgnMycpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNMZW5ndGgodmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PSAnbnVtYmVyJyAmJlxuICAgIHZhbHVlID4gLTEgJiYgdmFsdWUgJSAxID09IDAgJiYgdmFsdWUgPD0gTUFYX1NBRkVfSU5URUdFUjtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc0xlbmd0aDtcbiIsICJ2YXIgYmFzZUdldFRhZyA9IHJlcXVpcmUoJy4vX2Jhc2VHZXRUYWcnKSxcbiAgICBpc0xlbmd0aCA9IHJlcXVpcmUoJy4vaXNMZW5ndGgnKSxcbiAgICBpc09iamVjdExpa2UgPSByZXF1aXJlKCcuL2lzT2JqZWN0TGlrZScpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgYXJnc1RhZyA9ICdbb2JqZWN0IEFyZ3VtZW50c10nLFxuICAgIGFycmF5VGFnID0gJ1tvYmplY3QgQXJyYXldJyxcbiAgICBib29sVGFnID0gJ1tvYmplY3QgQm9vbGVhbl0nLFxuICAgIGRhdGVUYWcgPSAnW29iamVjdCBEYXRlXScsXG4gICAgZXJyb3JUYWcgPSAnW29iamVjdCBFcnJvcl0nLFxuICAgIGZ1bmNUYWcgPSAnW29iamVjdCBGdW5jdGlvbl0nLFxuICAgIG1hcFRhZyA9ICdbb2JqZWN0IE1hcF0nLFxuICAgIG51bWJlclRhZyA9ICdbb2JqZWN0IE51bWJlcl0nLFxuICAgIG9iamVjdFRhZyA9ICdbb2JqZWN0IE9iamVjdF0nLFxuICAgIHJlZ2V4cFRhZyA9ICdbb2JqZWN0IFJlZ0V4cF0nLFxuICAgIHNldFRhZyA9ICdbb2JqZWN0IFNldF0nLFxuICAgIHN0cmluZ1RhZyA9ICdbb2JqZWN0IFN0cmluZ10nLFxuICAgIHdlYWtNYXBUYWcgPSAnW29iamVjdCBXZWFrTWFwXSc7XG5cbnZhciBhcnJheUJ1ZmZlclRhZyA9ICdbb2JqZWN0IEFycmF5QnVmZmVyXScsXG4gICAgZGF0YVZpZXdUYWcgPSAnW29iamVjdCBEYXRhVmlld10nLFxuICAgIGZsb2F0MzJUYWcgPSAnW29iamVjdCBGbG9hdDMyQXJyYXldJyxcbiAgICBmbG9hdDY0VGFnID0gJ1tvYmplY3QgRmxvYXQ2NEFycmF5XScsXG4gICAgaW50OFRhZyA9ICdbb2JqZWN0IEludDhBcnJheV0nLFxuICAgIGludDE2VGFnID0gJ1tvYmplY3QgSW50MTZBcnJheV0nLFxuICAgIGludDMyVGFnID0gJ1tvYmplY3QgSW50MzJBcnJheV0nLFxuICAgIHVpbnQ4VGFnID0gJ1tvYmplY3QgVWludDhBcnJheV0nLFxuICAgIHVpbnQ4Q2xhbXBlZFRhZyA9ICdbb2JqZWN0IFVpbnQ4Q2xhbXBlZEFycmF5XScsXG4gICAgdWludDE2VGFnID0gJ1tvYmplY3QgVWludDE2QXJyYXldJyxcbiAgICB1aW50MzJUYWcgPSAnW29iamVjdCBVaW50MzJBcnJheV0nO1xuXG4vKiogVXNlZCB0byBpZGVudGlmeSBgdG9TdHJpbmdUYWdgIHZhbHVlcyBvZiB0eXBlZCBhcnJheXMuICovXG52YXIgdHlwZWRBcnJheVRhZ3MgPSB7fTtcbnR5cGVkQXJyYXlUYWdzW2Zsb2F0MzJUYWddID0gdHlwZWRBcnJheVRhZ3NbZmxvYXQ2NFRhZ10gPVxudHlwZWRBcnJheVRhZ3NbaW50OFRhZ10gPSB0eXBlZEFycmF5VGFnc1tpbnQxNlRhZ10gPVxudHlwZWRBcnJheVRhZ3NbaW50MzJUYWddID0gdHlwZWRBcnJheVRhZ3NbdWludDhUYWddID1cbnR5cGVkQXJyYXlUYWdzW3VpbnQ4Q2xhbXBlZFRhZ10gPSB0eXBlZEFycmF5VGFnc1t1aW50MTZUYWddID1cbnR5cGVkQXJyYXlUYWdzW3VpbnQzMlRhZ10gPSB0cnVlO1xudHlwZWRBcnJheVRhZ3NbYXJnc1RhZ10gPSB0eXBlZEFycmF5VGFnc1thcnJheVRhZ10gPVxudHlwZWRBcnJheVRhZ3NbYXJyYXlCdWZmZXJUYWddID0gdHlwZWRBcnJheVRhZ3NbYm9vbFRhZ10gPVxudHlwZWRBcnJheVRhZ3NbZGF0YVZpZXdUYWddID0gdHlwZWRBcnJheVRhZ3NbZGF0ZVRhZ10gPVxudHlwZWRBcnJheVRhZ3NbZXJyb3JUYWddID0gdHlwZWRBcnJheVRhZ3NbZnVuY1RhZ10gPVxudHlwZWRBcnJheVRhZ3NbbWFwVGFnXSA9IHR5cGVkQXJyYXlUYWdzW251bWJlclRhZ10gPVxudHlwZWRBcnJheVRhZ3Nbb2JqZWN0VGFnXSA9IHR5cGVkQXJyYXlUYWdzW3JlZ2V4cFRhZ10gPVxudHlwZWRBcnJheVRhZ3Nbc2V0VGFnXSA9IHR5cGVkQXJyYXlUYWdzW3N0cmluZ1RhZ10gPVxudHlwZWRBcnJheVRhZ3Nbd2Vha01hcFRhZ10gPSBmYWxzZTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc1R5cGVkQXJyYXlgIHdpdGhvdXQgTm9kZS5qcyBvcHRpbWl6YXRpb25zLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgdHlwZWQgYXJyYXksIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUlzVHlwZWRBcnJheSh2YWx1ZSkge1xuICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJlxuICAgIGlzTGVuZ3RoKHZhbHVlLmxlbmd0aCkgJiYgISF0eXBlZEFycmF5VGFnc1tiYXNlR2V0VGFnKHZhbHVlKV07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUlzVHlwZWRBcnJheTtcbiIsICIvKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnVuYXJ5YCB3aXRob3V0IHN1cHBvcnQgZm9yIHN0b3JpbmcgbWV0YWRhdGEuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGNhcCBhcmd1bWVudHMgZm9yLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgY2FwcGVkIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBiYXNlVW5hcnkoZnVuYykge1xuICByZXR1cm4gZnVuY3Rpb24odmFsdWUpIHtcbiAgICByZXR1cm4gZnVuYyh2YWx1ZSk7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZVVuYXJ5O1xuIiwgInZhciBmcmVlR2xvYmFsID0gcmVxdWlyZSgnLi9fZnJlZUdsb2JhbCcpO1xuXG4vKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYGV4cG9ydHNgLiAqL1xudmFyIGZyZWVFeHBvcnRzID0gdHlwZW9mIGV4cG9ydHMgPT0gJ29iamVjdCcgJiYgZXhwb3J0cyAmJiAhZXhwb3J0cy5ub2RlVHlwZSAmJiBleHBvcnRzO1xuXG4vKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYG1vZHVsZWAuICovXG52YXIgZnJlZU1vZHVsZSA9IGZyZWVFeHBvcnRzICYmIHR5cGVvZiBtb2R1bGUgPT0gJ29iamVjdCcgJiYgbW9kdWxlICYmICFtb2R1bGUubm9kZVR5cGUgJiYgbW9kdWxlO1xuXG4vKiogRGV0ZWN0IHRoZSBwb3B1bGFyIENvbW1vbkpTIGV4dGVuc2lvbiBgbW9kdWxlLmV4cG9ydHNgLiAqL1xudmFyIG1vZHVsZUV4cG9ydHMgPSBmcmVlTW9kdWxlICYmIGZyZWVNb2R1bGUuZXhwb3J0cyA9PT0gZnJlZUV4cG9ydHM7XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgcHJvY2Vzc2AgZnJvbSBOb2RlLmpzLiAqL1xudmFyIGZyZWVQcm9jZXNzID0gbW9kdWxlRXhwb3J0cyAmJiBmcmVlR2xvYmFsLnByb2Nlc3M7XG5cbi8qKiBVc2VkIHRvIGFjY2VzcyBmYXN0ZXIgTm9kZS5qcyBoZWxwZXJzLiAqL1xudmFyIG5vZGVVdGlsID0gKGZ1bmN0aW9uKCkge1xuICB0cnkge1xuICAgIC8vIFVzZSBgdXRpbC50eXBlc2AgZm9yIE5vZGUuanMgMTArLlxuICAgIHZhciB0eXBlcyA9IGZyZWVNb2R1bGUgJiYgZnJlZU1vZHVsZS5yZXF1aXJlICYmIGZyZWVNb2R1bGUucmVxdWlyZSgndXRpbCcpLnR5cGVzO1xuXG4gICAgaWYgKHR5cGVzKSB7XG4gICAgICByZXR1cm4gdHlwZXM7XG4gICAgfVxuXG4gICAgLy8gTGVnYWN5IGBwcm9jZXNzLmJpbmRpbmcoJ3V0aWwnKWAgZm9yIE5vZGUuanMgPCAxMC5cbiAgICByZXR1cm4gZnJlZVByb2Nlc3MgJiYgZnJlZVByb2Nlc3MuYmluZGluZyAmJiBmcmVlUHJvY2Vzcy5iaW5kaW5nKCd1dGlsJyk7XG4gIH0gY2F0Y2ggKGUpIHt9XG59KCkpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IG5vZGVVdGlsO1xuIiwgInZhciBiYXNlSXNUeXBlZEFycmF5ID0gcmVxdWlyZSgnLi9fYmFzZUlzVHlwZWRBcnJheScpLFxuICAgIGJhc2VVbmFyeSA9IHJlcXVpcmUoJy4vX2Jhc2VVbmFyeScpLFxuICAgIG5vZGVVdGlsID0gcmVxdWlyZSgnLi9fbm9kZVV0aWwnKTtcblxuLyogTm9kZS5qcyBoZWxwZXIgcmVmZXJlbmNlcy4gKi9cbnZhciBub2RlSXNUeXBlZEFycmF5ID0gbm9kZVV0aWwgJiYgbm9kZVV0aWwuaXNUeXBlZEFycmF5O1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSB0eXBlZCBhcnJheS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDMuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHR5cGVkIGFycmF5LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNUeXBlZEFycmF5KG5ldyBVaW50OEFycmF5KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzVHlwZWRBcnJheShbXSk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG52YXIgaXNUeXBlZEFycmF5ID0gbm9kZUlzVHlwZWRBcnJheSA/IGJhc2VVbmFyeShub2RlSXNUeXBlZEFycmF5KSA6IGJhc2VJc1R5cGVkQXJyYXk7XG5cbm1vZHVsZS5leHBvcnRzID0gaXNUeXBlZEFycmF5O1xuIiwgInZhciBiYXNlVGltZXMgPSByZXF1aXJlKCcuL19iYXNlVGltZXMnKSxcbiAgICBpc0FyZ3VtZW50cyA9IHJlcXVpcmUoJy4vaXNBcmd1bWVudHMnKSxcbiAgICBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5JyksXG4gICAgaXNCdWZmZXIgPSByZXF1aXJlKCcuL2lzQnVmZmVyJyksXG4gICAgaXNJbmRleCA9IHJlcXVpcmUoJy4vX2lzSW5kZXgnKSxcbiAgICBpc1R5cGVkQXJyYXkgPSByZXF1aXJlKCcuL2lzVHlwZWRBcnJheScpO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdGhlIGVudW1lcmFibGUgcHJvcGVydHkgbmFtZXMgb2YgdGhlIGFycmF5LWxpa2UgYHZhbHVlYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IGluaGVyaXRlZCBTcGVjaWZ5IHJldHVybmluZyBpbmhlcml0ZWQgcHJvcGVydHkgbmFtZXMuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzLlxuICovXG5mdW5jdGlvbiBhcnJheUxpa2VLZXlzKHZhbHVlLCBpbmhlcml0ZWQpIHtcbiAgdmFyIGlzQXJyID0gaXNBcnJheSh2YWx1ZSksXG4gICAgICBpc0FyZyA9ICFpc0FyciAmJiBpc0FyZ3VtZW50cyh2YWx1ZSksXG4gICAgICBpc0J1ZmYgPSAhaXNBcnIgJiYgIWlzQXJnICYmIGlzQnVmZmVyKHZhbHVlKSxcbiAgICAgIGlzVHlwZSA9ICFpc0FyciAmJiAhaXNBcmcgJiYgIWlzQnVmZiAmJiBpc1R5cGVkQXJyYXkodmFsdWUpLFxuICAgICAgc2tpcEluZGV4ZXMgPSBpc0FyciB8fCBpc0FyZyB8fCBpc0J1ZmYgfHwgaXNUeXBlLFxuICAgICAgcmVzdWx0ID0gc2tpcEluZGV4ZXMgPyBiYXNlVGltZXModmFsdWUubGVuZ3RoLCBTdHJpbmcpIDogW10sXG4gICAgICBsZW5ndGggPSByZXN1bHQubGVuZ3RoO1xuXG4gIGZvciAodmFyIGtleSBpbiB2YWx1ZSkge1xuICAgIGlmICgoaW5oZXJpdGVkIHx8IGhhc093blByb3BlcnR5LmNhbGwodmFsdWUsIGtleSkpICYmXG4gICAgICAgICEoc2tpcEluZGV4ZXMgJiYgKFxuICAgICAgICAgICAvLyBTYWZhcmkgOSBoYXMgZW51bWVyYWJsZSBgYXJndW1lbnRzLmxlbmd0aGAgaW4gc3RyaWN0IG1vZGUuXG4gICAgICAgICAgIGtleSA9PSAnbGVuZ3RoJyB8fFxuICAgICAgICAgICAvLyBOb2RlLmpzIDAuMTAgaGFzIGVudW1lcmFibGUgbm9uLWluZGV4IHByb3BlcnRpZXMgb24gYnVmZmVycy5cbiAgICAgICAgICAgKGlzQnVmZiAmJiAoa2V5ID09ICdvZmZzZXQnIHx8IGtleSA9PSAncGFyZW50JykpIHx8XG4gICAgICAgICAgIC8vIFBoYW50b21KUyAyIGhhcyBlbnVtZXJhYmxlIG5vbi1pbmRleCBwcm9wZXJ0aWVzIG9uIHR5cGVkIGFycmF5cy5cbiAgICAgICAgICAgKGlzVHlwZSAmJiAoa2V5ID09ICdidWZmZXInIHx8IGtleSA9PSAnYnl0ZUxlbmd0aCcgfHwga2V5ID09ICdieXRlT2Zmc2V0JykpIHx8XG4gICAgICAgICAgIC8vIFNraXAgaW5kZXggcHJvcGVydGllcy5cbiAgICAgICAgICAgaXNJbmRleChrZXksIGxlbmd0aClcbiAgICAgICAgKSkpIHtcbiAgICAgIHJlc3VsdC5wdXNoKGtleSk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYXJyYXlMaWtlS2V5cztcbiIsICIvKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGxpa2VseSBhIHByb3RvdHlwZSBvYmplY3QuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBwcm90b3R5cGUsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNQcm90b3R5cGUodmFsdWUpIHtcbiAgdmFyIEN0b3IgPSB2YWx1ZSAmJiB2YWx1ZS5jb25zdHJ1Y3RvcixcbiAgICAgIHByb3RvID0gKHR5cGVvZiBDdG9yID09ICdmdW5jdGlvbicgJiYgQ3Rvci5wcm90b3R5cGUpIHx8IG9iamVjdFByb3RvO1xuXG4gIHJldHVybiB2YWx1ZSA9PT0gcHJvdG87XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNQcm90b3R5cGU7XG4iLCAiLyoqXG4gKiBDcmVhdGVzIGEgdW5hcnkgZnVuY3Rpb24gdGhhdCBpbnZva2VzIGBmdW5jYCB3aXRoIGl0cyBhcmd1bWVudCB0cmFuc2Zvcm1lZC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gd3JhcC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHRyYW5zZm9ybSBUaGUgYXJndW1lbnQgdHJhbnNmb3JtLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIG92ZXJBcmcoZnVuYywgdHJhbnNmb3JtKSB7XG4gIHJldHVybiBmdW5jdGlvbihhcmcpIHtcbiAgICByZXR1cm4gZnVuYyh0cmFuc2Zvcm0oYXJnKSk7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gb3ZlckFyZztcbiIsICJ2YXIgb3ZlckFyZyA9IHJlcXVpcmUoJy4vX292ZXJBcmcnKTtcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgZm9yIHRob3NlIHdpdGggdGhlIHNhbWUgbmFtZSBhcyBvdGhlciBgbG9kYXNoYCBtZXRob2RzLiAqL1xudmFyIG5hdGl2ZUtleXMgPSBvdmVyQXJnKE9iamVjdC5rZXlzLCBPYmplY3QpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IG5hdGl2ZUtleXM7XG4iLCAidmFyIGlzUHJvdG90eXBlID0gcmVxdWlyZSgnLi9faXNQcm90b3R5cGUnKSxcbiAgICBuYXRpdmVLZXlzID0gcmVxdWlyZSgnLi9fbmF0aXZlS2V5cycpO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmtleXNgIHdoaWNoIGRvZXNuJ3QgdHJlYXQgc3BhcnNlIGFycmF5cyBhcyBkZW5zZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAqL1xuZnVuY3Rpb24gYmFzZUtleXMob2JqZWN0KSB7XG4gIGlmICghaXNQcm90b3R5cGUob2JqZWN0KSkge1xuICAgIHJldHVybiBuYXRpdmVLZXlzKG9iamVjdCk7XG4gIH1cbiAgdmFyIHJlc3VsdCA9IFtdO1xuICBmb3IgKHZhciBrZXkgaW4gT2JqZWN0KG9iamVjdCkpIHtcbiAgICBpZiAoaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIGtleSkgJiYga2V5ICE9ICdjb25zdHJ1Y3RvcicpIHtcbiAgICAgIHJlc3VsdC5wdXNoKGtleSk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUtleXM7XG4iLCAidmFyIGlzRnVuY3Rpb24gPSByZXF1aXJlKCcuL2lzRnVuY3Rpb24nKSxcbiAgICBpc0xlbmd0aCA9IHJlcXVpcmUoJy4vaXNMZW5ndGgnKTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhcnJheS1saWtlLiBBIHZhbHVlIGlzIGNvbnNpZGVyZWQgYXJyYXktbGlrZSBpZiBpdCdzXG4gKiBub3QgYSBmdW5jdGlvbiBhbmQgaGFzIGEgYHZhbHVlLmxlbmd0aGAgdGhhdCdzIGFuIGludGVnZXIgZ3JlYXRlciB0aGFuIG9yXG4gKiBlcXVhbCB0byBgMGAgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byBgTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVJgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFycmF5LWxpa2UsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0FycmF5TGlrZShbMSwgMiwgM10pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcnJheUxpa2UoZG9jdW1lbnQuYm9keS5jaGlsZHJlbik7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0FycmF5TGlrZSgnYWJjJyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0FycmF5TGlrZShfLm5vb3ApO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNBcnJheUxpa2UodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgJiYgaXNMZW5ndGgodmFsdWUubGVuZ3RoKSAmJiAhaXNGdW5jdGlvbih2YWx1ZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNBcnJheUxpa2U7XG4iLCAidmFyIGFycmF5TGlrZUtleXMgPSByZXF1aXJlKCcuL19hcnJheUxpa2VLZXlzJyksXG4gICAgYmFzZUtleXMgPSByZXF1aXJlKCcuL19iYXNlS2V5cycpLFxuICAgIGlzQXJyYXlMaWtlID0gcmVxdWlyZSgnLi9pc0FycmF5TGlrZScpO1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdGhlIG93biBlbnVtZXJhYmxlIHByb3BlcnR5IG5hbWVzIG9mIGBvYmplY3RgLlxuICpcbiAqICoqTm90ZToqKiBOb24tb2JqZWN0IHZhbHVlcyBhcmUgY29lcmNlZCB0byBvYmplY3RzLiBTZWUgdGhlXG4gKiBbRVMgc3BlY10oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtb2JqZWN0LmtleXMpXG4gKiBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBzaW5jZSAwLjEuMFxuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBPYmplY3RcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMuXG4gKiBAZXhhbXBsZVxuICpcbiAqIGZ1bmN0aW9uIEZvbygpIHtcbiAqICAgdGhpcy5hID0gMTtcbiAqICAgdGhpcy5iID0gMjtcbiAqIH1cbiAqXG4gKiBGb28ucHJvdG90eXBlLmMgPSAzO1xuICpcbiAqIF8ua2V5cyhuZXcgRm9vKTtcbiAqIC8vID0+IFsnYScsICdiJ10gKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZClcbiAqXG4gKiBfLmtleXMoJ2hpJyk7XG4gKiAvLyA9PiBbJzAnLCAnMSddXG4gKi9cbmZ1bmN0aW9uIGtleXMob2JqZWN0KSB7XG4gIHJldHVybiBpc0FycmF5TGlrZShvYmplY3QpID8gYXJyYXlMaWtlS2V5cyhvYmplY3QpIDogYmFzZUtleXMob2JqZWN0KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBrZXlzO1xuIiwgInZhciBiYXNlR2V0QWxsS2V5cyA9IHJlcXVpcmUoJy4vX2Jhc2VHZXRBbGxLZXlzJyksXG4gICAgZ2V0U3ltYm9scyA9IHJlcXVpcmUoJy4vX2dldFN5bWJvbHMnKSxcbiAgICBrZXlzID0gcmVxdWlyZSgnLi9rZXlzJyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiBvd24gZW51bWVyYWJsZSBwcm9wZXJ0eSBuYW1lcyBhbmQgc3ltYm9scyBvZiBgb2JqZWN0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcyBhbmQgc3ltYm9scy5cbiAqL1xuZnVuY3Rpb24gZ2V0QWxsS2V5cyhvYmplY3QpIHtcbiAgcmV0dXJuIGJhc2VHZXRBbGxLZXlzKG9iamVjdCwga2V5cywgZ2V0U3ltYm9scyk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0QWxsS2V5cztcbiIsICJ2YXIgZ2V0QWxsS2V5cyA9IHJlcXVpcmUoJy4vX2dldEFsbEtleXMnKTtcblxuLyoqIFVzZWQgdG8gY29tcG9zZSBiaXRtYXNrcyBmb3IgdmFsdWUgY29tcGFyaXNvbnMuICovXG52YXIgQ09NUEFSRV9QQVJUSUFMX0ZMQUcgPSAxO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZUlzRXF1YWxEZWVwYCBmb3Igb2JqZWN0cyB3aXRoIHN1cHBvcnQgZm9yXG4gKiBwYXJ0aWFsIGRlZXAgY29tcGFyaXNvbnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBjb21wYXJlLlxuICogQHBhcmFtIHtPYmplY3R9IG90aGVyIFRoZSBvdGhlciBvYmplY3QgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLiBTZWUgYGJhc2VJc0VxdWFsYCBmb3IgbW9yZSBkZXRhaWxzLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gY3VzdG9taXplciBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvbXBhcmlzb25zLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gZXF1YWxGdW5jIFRoZSBmdW5jdGlvbiB0byBkZXRlcm1pbmUgZXF1aXZhbGVudHMgb2YgdmFsdWVzLlxuICogQHBhcmFtIHtPYmplY3R9IHN0YWNrIFRyYWNrcyB0cmF2ZXJzZWQgYG9iamVjdGAgYW5kIGBvdGhlcmAgb2JqZWN0cy5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgb2JqZWN0cyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBlcXVhbE9iamVjdHMob2JqZWN0LCBvdGhlciwgYml0bWFzaywgY3VzdG9taXplciwgZXF1YWxGdW5jLCBzdGFjaykge1xuICB2YXIgaXNQYXJ0aWFsID0gYml0bWFzayAmIENPTVBBUkVfUEFSVElBTF9GTEFHLFxuICAgICAgb2JqUHJvcHMgPSBnZXRBbGxLZXlzKG9iamVjdCksXG4gICAgICBvYmpMZW5ndGggPSBvYmpQcm9wcy5sZW5ndGgsXG4gICAgICBvdGhQcm9wcyA9IGdldEFsbEtleXMob3RoZXIpLFxuICAgICAgb3RoTGVuZ3RoID0gb3RoUHJvcHMubGVuZ3RoO1xuXG4gIGlmIChvYmpMZW5ndGggIT0gb3RoTGVuZ3RoICYmICFpc1BhcnRpYWwpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdmFyIGluZGV4ID0gb2JqTGVuZ3RoO1xuICB3aGlsZSAoaW5kZXgtLSkge1xuICAgIHZhciBrZXkgPSBvYmpQcm9wc1tpbmRleF07XG4gICAgaWYgKCEoaXNQYXJ0aWFsID8ga2V5IGluIG90aGVyIDogaGFzT3duUHJvcGVydHkuY2FsbChvdGhlciwga2V5KSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbiAgLy8gQ2hlY2sgdGhhdCBjeWNsaWMgdmFsdWVzIGFyZSBlcXVhbC5cbiAgdmFyIG9ialN0YWNrZWQgPSBzdGFjay5nZXQob2JqZWN0KTtcbiAgdmFyIG90aFN0YWNrZWQgPSBzdGFjay5nZXQob3RoZXIpO1xuICBpZiAob2JqU3RhY2tlZCAmJiBvdGhTdGFja2VkKSB7XG4gICAgcmV0dXJuIG9ialN0YWNrZWQgPT0gb3RoZXIgJiYgb3RoU3RhY2tlZCA9PSBvYmplY3Q7XG4gIH1cbiAgdmFyIHJlc3VsdCA9IHRydWU7XG4gIHN0YWNrLnNldChvYmplY3QsIG90aGVyKTtcbiAgc3RhY2suc2V0KG90aGVyLCBvYmplY3QpO1xuXG4gIHZhciBza2lwQ3RvciA9IGlzUGFydGlhbDtcbiAgd2hpbGUgKCsraW5kZXggPCBvYmpMZW5ndGgpIHtcbiAgICBrZXkgPSBvYmpQcm9wc1tpbmRleF07XG4gICAgdmFyIG9ialZhbHVlID0gb2JqZWN0W2tleV0sXG4gICAgICAgIG90aFZhbHVlID0gb3RoZXJba2V5XTtcblxuICAgIGlmIChjdXN0b21pemVyKSB7XG4gICAgICB2YXIgY29tcGFyZWQgPSBpc1BhcnRpYWxcbiAgICAgICAgPyBjdXN0b21pemVyKG90aFZhbHVlLCBvYmpWYWx1ZSwga2V5LCBvdGhlciwgb2JqZWN0LCBzdGFjaylcbiAgICAgICAgOiBjdXN0b21pemVyKG9ialZhbHVlLCBvdGhWYWx1ZSwga2V5LCBvYmplY3QsIG90aGVyLCBzdGFjayk7XG4gICAgfVxuICAgIC8vIFJlY3Vyc2l2ZWx5IGNvbXBhcmUgb2JqZWN0cyAoc3VzY2VwdGlibGUgdG8gY2FsbCBzdGFjayBsaW1pdHMpLlxuICAgIGlmICghKGNvbXBhcmVkID09PSB1bmRlZmluZWRcbiAgICAgICAgICA/IChvYmpWYWx1ZSA9PT0gb3RoVmFsdWUgfHwgZXF1YWxGdW5jKG9ialZhbHVlLCBvdGhWYWx1ZSwgYml0bWFzaywgY3VzdG9taXplciwgc3RhY2spKVxuICAgICAgICAgIDogY29tcGFyZWRcbiAgICAgICAgKSkge1xuICAgICAgcmVzdWx0ID0gZmFsc2U7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgc2tpcEN0b3IgfHwgKHNraXBDdG9yID0ga2V5ID09ICdjb25zdHJ1Y3RvcicpO1xuICB9XG4gIGlmIChyZXN1bHQgJiYgIXNraXBDdG9yKSB7XG4gICAgdmFyIG9iakN0b3IgPSBvYmplY3QuY29uc3RydWN0b3IsXG4gICAgICAgIG90aEN0b3IgPSBvdGhlci5jb25zdHJ1Y3RvcjtcblxuICAgIC8vIE5vbiBgT2JqZWN0YCBvYmplY3QgaW5zdGFuY2VzIHdpdGggZGlmZmVyZW50IGNvbnN0cnVjdG9ycyBhcmUgbm90IGVxdWFsLlxuICAgIGlmIChvYmpDdG9yICE9IG90aEN0b3IgJiZcbiAgICAgICAgKCdjb25zdHJ1Y3RvcicgaW4gb2JqZWN0ICYmICdjb25zdHJ1Y3RvcicgaW4gb3RoZXIpICYmXG4gICAgICAgICEodHlwZW9mIG9iakN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiBvYmpDdG9yIGluc3RhbmNlb2Ygb2JqQ3RvciAmJlxuICAgICAgICAgIHR5cGVvZiBvdGhDdG9yID09ICdmdW5jdGlvbicgJiYgb3RoQ3RvciBpbnN0YW5jZW9mIG90aEN0b3IpKSB7XG4gICAgICByZXN1bHQgPSBmYWxzZTtcbiAgICB9XG4gIH1cbiAgc3RhY2tbJ2RlbGV0ZSddKG9iamVjdCk7XG4gIHN0YWNrWydkZWxldGUnXShvdGhlcik7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZXF1YWxPYmplY3RzO1xuIiwgInZhciBnZXROYXRpdmUgPSByZXF1aXJlKCcuL19nZXROYXRpdmUnKSxcbiAgICByb290ID0gcmVxdWlyZSgnLi9fcm9vdCcpO1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyB0aGF0IGFyZSB2ZXJpZmllZCB0byBiZSBuYXRpdmUuICovXG52YXIgRGF0YVZpZXcgPSBnZXROYXRpdmUocm9vdCwgJ0RhdGFWaWV3Jyk7XG5cbm1vZHVsZS5leHBvcnRzID0gRGF0YVZpZXc7XG4iLCAidmFyIGdldE5hdGl2ZSA9IHJlcXVpcmUoJy4vX2dldE5hdGl2ZScpLFxuICAgIHJvb3QgPSByZXF1aXJlKCcuL19yb290Jyk7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIHRoYXQgYXJlIHZlcmlmaWVkIHRvIGJlIG5hdGl2ZS4gKi9cbnZhciBQcm9taXNlID0gZ2V0TmF0aXZlKHJvb3QsICdQcm9taXNlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gUHJvbWlzZTtcbiIsICJ2YXIgZ2V0TmF0aXZlID0gcmVxdWlyZSgnLi9fZ2V0TmF0aXZlJyksXG4gICAgcm9vdCA9IHJlcXVpcmUoJy4vX3Jvb3QnKTtcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgdGhhdCBhcmUgdmVyaWZpZWQgdG8gYmUgbmF0aXZlLiAqL1xudmFyIFNldCA9IGdldE5hdGl2ZShyb290LCAnU2V0Jyk7XG5cbm1vZHVsZS5leHBvcnRzID0gU2V0O1xuIiwgInZhciBnZXROYXRpdmUgPSByZXF1aXJlKCcuL19nZXROYXRpdmUnKSxcbiAgICByb290ID0gcmVxdWlyZSgnLi9fcm9vdCcpO1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyB0aGF0IGFyZSB2ZXJpZmllZCB0byBiZSBuYXRpdmUuICovXG52YXIgV2Vha01hcCA9IGdldE5hdGl2ZShyb290LCAnV2Vha01hcCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFdlYWtNYXA7XG4iLCAidmFyIERhdGFWaWV3ID0gcmVxdWlyZSgnLi9fRGF0YVZpZXcnKSxcbiAgICBNYXAgPSByZXF1aXJlKCcuL19NYXAnKSxcbiAgICBQcm9taXNlID0gcmVxdWlyZSgnLi9fUHJvbWlzZScpLFxuICAgIFNldCA9IHJlcXVpcmUoJy4vX1NldCcpLFxuICAgIFdlYWtNYXAgPSByZXF1aXJlKCcuL19XZWFrTWFwJyksXG4gICAgYmFzZUdldFRhZyA9IHJlcXVpcmUoJy4vX2Jhc2VHZXRUYWcnKSxcbiAgICB0b1NvdXJjZSA9IHJlcXVpcmUoJy4vX3RvU291cmNlJyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBtYXBUYWcgPSAnW29iamVjdCBNYXBdJyxcbiAgICBvYmplY3RUYWcgPSAnW29iamVjdCBPYmplY3RdJyxcbiAgICBwcm9taXNlVGFnID0gJ1tvYmplY3QgUHJvbWlzZV0nLFxuICAgIHNldFRhZyA9ICdbb2JqZWN0IFNldF0nLFxuICAgIHdlYWtNYXBUYWcgPSAnW29iamVjdCBXZWFrTWFwXSc7XG5cbnZhciBkYXRhVmlld1RhZyA9ICdbb2JqZWN0IERhdGFWaWV3XSc7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCBtYXBzLCBzZXRzLCBhbmQgd2Vha21hcHMuICovXG52YXIgZGF0YVZpZXdDdG9yU3RyaW5nID0gdG9Tb3VyY2UoRGF0YVZpZXcpLFxuICAgIG1hcEN0b3JTdHJpbmcgPSB0b1NvdXJjZShNYXApLFxuICAgIHByb21pc2VDdG9yU3RyaW5nID0gdG9Tb3VyY2UoUHJvbWlzZSksXG4gICAgc2V0Q3RvclN0cmluZyA9IHRvU291cmNlKFNldCksXG4gICAgd2Vha01hcEN0b3JTdHJpbmcgPSB0b1NvdXJjZShXZWFrTWFwKTtcblxuLyoqXG4gKiBHZXRzIHRoZSBgdG9TdHJpbmdUYWdgIG9mIGB2YWx1ZWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHF1ZXJ5LlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgYHRvU3RyaW5nVGFnYC5cbiAqL1xudmFyIGdldFRhZyA9IGJhc2VHZXRUYWc7XG5cbi8vIEZhbGxiYWNrIGZvciBkYXRhIHZpZXdzLCBtYXBzLCBzZXRzLCBhbmQgd2VhayBtYXBzIGluIElFIDExIGFuZCBwcm9taXNlcyBpbiBOb2RlLmpzIDwgNi5cbmlmICgoRGF0YVZpZXcgJiYgZ2V0VGFnKG5ldyBEYXRhVmlldyhuZXcgQXJyYXlCdWZmZXIoMSkpKSAhPSBkYXRhVmlld1RhZykgfHxcbiAgICAoTWFwICYmIGdldFRhZyhuZXcgTWFwKSAhPSBtYXBUYWcpIHx8XG4gICAgKFByb21pc2UgJiYgZ2V0VGFnKFByb21pc2UucmVzb2x2ZSgpKSAhPSBwcm9taXNlVGFnKSB8fFxuICAgIChTZXQgJiYgZ2V0VGFnKG5ldyBTZXQpICE9IHNldFRhZykgfHxcbiAgICAoV2Vha01hcCAmJiBnZXRUYWcobmV3IFdlYWtNYXApICE9IHdlYWtNYXBUYWcpKSB7XG4gIGdldFRhZyA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgdmFyIHJlc3VsdCA9IGJhc2VHZXRUYWcodmFsdWUpLFxuICAgICAgICBDdG9yID0gcmVzdWx0ID09IG9iamVjdFRhZyA/IHZhbHVlLmNvbnN0cnVjdG9yIDogdW5kZWZpbmVkLFxuICAgICAgICBjdG9yU3RyaW5nID0gQ3RvciA/IHRvU291cmNlKEN0b3IpIDogJyc7XG5cbiAgICBpZiAoY3RvclN0cmluZykge1xuICAgICAgc3dpdGNoIChjdG9yU3RyaW5nKSB7XG4gICAgICAgIGNhc2UgZGF0YVZpZXdDdG9yU3RyaW5nOiByZXR1cm4gZGF0YVZpZXdUYWc7XG4gICAgICAgIGNhc2UgbWFwQ3RvclN0cmluZzogcmV0dXJuIG1hcFRhZztcbiAgICAgICAgY2FzZSBwcm9taXNlQ3RvclN0cmluZzogcmV0dXJuIHByb21pc2VUYWc7XG4gICAgICAgIGNhc2Ugc2V0Q3RvclN0cmluZzogcmV0dXJuIHNldFRhZztcbiAgICAgICAgY2FzZSB3ZWFrTWFwQ3RvclN0cmluZzogcmV0dXJuIHdlYWtNYXBUYWc7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0VGFnO1xuIiwgInZhciBTdGFjayA9IHJlcXVpcmUoJy4vX1N0YWNrJyksXG4gICAgZXF1YWxBcnJheXMgPSByZXF1aXJlKCcuL19lcXVhbEFycmF5cycpLFxuICAgIGVxdWFsQnlUYWcgPSByZXF1aXJlKCcuL19lcXVhbEJ5VGFnJyksXG4gICAgZXF1YWxPYmplY3RzID0gcmVxdWlyZSgnLi9fZXF1YWxPYmplY3RzJyksXG4gICAgZ2V0VGFnID0gcmVxdWlyZSgnLi9fZ2V0VGFnJyksXG4gICAgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpLFxuICAgIGlzQnVmZmVyID0gcmVxdWlyZSgnLi9pc0J1ZmZlcicpLFxuICAgIGlzVHlwZWRBcnJheSA9IHJlcXVpcmUoJy4vaXNUeXBlZEFycmF5Jyk7XG5cbi8qKiBVc2VkIHRvIGNvbXBvc2UgYml0bWFza3MgZm9yIHZhbHVlIGNvbXBhcmlzb25zLiAqL1xudmFyIENPTVBBUkVfUEFSVElBTF9GTEFHID0gMTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIGFyZ3NUYWcgPSAnW29iamVjdCBBcmd1bWVudHNdJyxcbiAgICBhcnJheVRhZyA9ICdbb2JqZWN0IEFycmF5XScsXG4gICAgb2JqZWN0VGFnID0gJ1tvYmplY3QgT2JqZWN0XSc7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlSXNFcXVhbGAgZm9yIGFycmF5cyBhbmQgb2JqZWN0cyB3aGljaCBwZXJmb3Jtc1xuICogZGVlcCBjb21wYXJpc29ucyBhbmQgdHJhY2tzIHRyYXZlcnNlZCBvYmplY3RzIGVuYWJsaW5nIG9iamVjdHMgd2l0aCBjaXJjdWxhclxuICogcmVmZXJlbmNlcyB0byBiZSBjb21wYXJlZC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0ge09iamVjdH0gb3RoZXIgVGhlIG90aGVyIG9iamVjdCB0byBjb21wYXJlLlxuICogQHBhcmFtIHtudW1iZXJ9IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuIFNlZSBgYmFzZUlzRXF1YWxgIGZvciBtb3JlIGRldGFpbHMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBjdXN0b21pemVyIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY29tcGFyaXNvbnMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBlcXVhbEZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGRldGVybWluZSBlcXVpdmFsZW50cyBvZiB2YWx1ZXMuXG4gKiBAcGFyYW0ge09iamVjdH0gW3N0YWNrXSBUcmFja3MgdHJhdmVyc2VkIGBvYmplY3RgIGFuZCBgb3RoZXJgIG9iamVjdHMuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIG9iamVjdHMgYXJlIGVxdWl2YWxlbnQsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUlzRXF1YWxEZWVwKG9iamVjdCwgb3RoZXIsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGVxdWFsRnVuYywgc3RhY2spIHtcbiAgdmFyIG9iaklzQXJyID0gaXNBcnJheShvYmplY3QpLFxuICAgICAgb3RoSXNBcnIgPSBpc0FycmF5KG90aGVyKSxcbiAgICAgIG9ialRhZyA9IG9iaklzQXJyID8gYXJyYXlUYWcgOiBnZXRUYWcob2JqZWN0KSxcbiAgICAgIG90aFRhZyA9IG90aElzQXJyID8gYXJyYXlUYWcgOiBnZXRUYWcob3RoZXIpO1xuXG4gIG9ialRhZyA9IG9ialRhZyA9PSBhcmdzVGFnID8gb2JqZWN0VGFnIDogb2JqVGFnO1xuICBvdGhUYWcgPSBvdGhUYWcgPT0gYXJnc1RhZyA/IG9iamVjdFRhZyA6IG90aFRhZztcblxuICB2YXIgb2JqSXNPYmogPSBvYmpUYWcgPT0gb2JqZWN0VGFnLFxuICAgICAgb3RoSXNPYmogPSBvdGhUYWcgPT0gb2JqZWN0VGFnLFxuICAgICAgaXNTYW1lVGFnID0gb2JqVGFnID09IG90aFRhZztcblxuICBpZiAoaXNTYW1lVGFnICYmIGlzQnVmZmVyKG9iamVjdCkpIHtcbiAgICBpZiAoIWlzQnVmZmVyKG90aGVyKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBvYmpJc0FyciA9IHRydWU7XG4gICAgb2JqSXNPYmogPSBmYWxzZTtcbiAgfVxuICBpZiAoaXNTYW1lVGFnICYmICFvYmpJc09iaikge1xuICAgIHN0YWNrIHx8IChzdGFjayA9IG5ldyBTdGFjayk7XG4gICAgcmV0dXJuIChvYmpJc0FyciB8fCBpc1R5cGVkQXJyYXkob2JqZWN0KSlcbiAgICAgID8gZXF1YWxBcnJheXMob2JqZWN0LCBvdGhlciwgYml0bWFzaywgY3VzdG9taXplciwgZXF1YWxGdW5jLCBzdGFjaylcbiAgICAgIDogZXF1YWxCeVRhZyhvYmplY3QsIG90aGVyLCBvYmpUYWcsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGVxdWFsRnVuYywgc3RhY2spO1xuICB9XG4gIGlmICghKGJpdG1hc2sgJiBDT01QQVJFX1BBUlRJQUxfRkxBRykpIHtcbiAgICB2YXIgb2JqSXNXcmFwcGVkID0gb2JqSXNPYmogJiYgaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsICdfX3dyYXBwZWRfXycpLFxuICAgICAgICBvdGhJc1dyYXBwZWQgPSBvdGhJc09iaiAmJiBoYXNPd25Qcm9wZXJ0eS5jYWxsKG90aGVyLCAnX193cmFwcGVkX18nKTtcblxuICAgIGlmIChvYmpJc1dyYXBwZWQgfHwgb3RoSXNXcmFwcGVkKSB7XG4gICAgICB2YXIgb2JqVW53cmFwcGVkID0gb2JqSXNXcmFwcGVkID8gb2JqZWN0LnZhbHVlKCkgOiBvYmplY3QsXG4gICAgICAgICAgb3RoVW53cmFwcGVkID0gb3RoSXNXcmFwcGVkID8gb3RoZXIudmFsdWUoKSA6IG90aGVyO1xuXG4gICAgICBzdGFjayB8fCAoc3RhY2sgPSBuZXcgU3RhY2spO1xuICAgICAgcmV0dXJuIGVxdWFsRnVuYyhvYmpVbndyYXBwZWQsIG90aFVud3JhcHBlZCwgYml0bWFzaywgY3VzdG9taXplciwgc3RhY2spO1xuICAgIH1cbiAgfVxuICBpZiAoIWlzU2FtZVRhZykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBzdGFjayB8fCAoc3RhY2sgPSBuZXcgU3RhY2spO1xuICByZXR1cm4gZXF1YWxPYmplY3RzKG9iamVjdCwgb3RoZXIsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGVxdWFsRnVuYywgc3RhY2spO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VJc0VxdWFsRGVlcDtcbiIsICJ2YXIgYmFzZUlzRXF1YWxEZWVwID0gcmVxdWlyZSgnLi9fYmFzZUlzRXF1YWxEZWVwJyksXG4gICAgaXNPYmplY3RMaWtlID0gcmVxdWlyZSgnLi9pc09iamVjdExpa2UnKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc0VxdWFsYCB3aGljaCBzdXBwb3J0cyBwYXJ0aWFsIGNvbXBhcmlzb25zXG4gKiBhbmQgdHJhY2tzIHRyYXZlcnNlZCBvYmplY3RzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gYml0bWFzayBUaGUgYml0bWFzayBmbGFncy5cbiAqICAxIC0gVW5vcmRlcmVkIGNvbXBhcmlzb25cbiAqICAyIC0gUGFydGlhbCBjb21wYXJpc29uXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjb21wYXJpc29ucy5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbc3RhY2tdIFRyYWNrcyB0cmF2ZXJzZWQgYHZhbHVlYCBhbmQgYG90aGVyYCBvYmplY3RzLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSB2YWx1ZXMgYXJlIGVxdWl2YWxlbnQsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUlzRXF1YWwodmFsdWUsIG90aGVyLCBiaXRtYXNrLCBjdXN0b21pemVyLCBzdGFjaykge1xuICBpZiAodmFsdWUgPT09IG90aGVyKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgaWYgKHZhbHVlID09IG51bGwgfHwgb3RoZXIgPT0gbnVsbCB8fCAoIWlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgIWlzT2JqZWN0TGlrZShvdGhlcikpKSB7XG4gICAgcmV0dXJuIHZhbHVlICE9PSB2YWx1ZSAmJiBvdGhlciAhPT0gb3RoZXI7XG4gIH1cbiAgcmV0dXJuIGJhc2VJc0VxdWFsRGVlcCh2YWx1ZSwgb3RoZXIsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGJhc2VJc0VxdWFsLCBzdGFjayk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUlzRXF1YWw7XG4iLCAidmFyIGJhc2VJc0VxdWFsID0gcmVxdWlyZSgnLi9fYmFzZUlzRXF1YWwnKTtcblxuLyoqXG4gKiBQZXJmb3JtcyBhIGRlZXAgY29tcGFyaXNvbiBiZXR3ZWVuIHR3byB2YWx1ZXMgdG8gZGV0ZXJtaW5lIGlmIHRoZXkgYXJlXG4gKiBlcXVpdmFsZW50LlxuICpcbiAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBzdXBwb3J0cyBjb21wYXJpbmcgYXJyYXlzLCBhcnJheSBidWZmZXJzLCBib29sZWFucyxcbiAqIGRhdGUgb2JqZWN0cywgZXJyb3Igb2JqZWN0cywgbWFwcywgbnVtYmVycywgYE9iamVjdGAgb2JqZWN0cywgcmVnZXhlcyxcbiAqIHNldHMsIHN0cmluZ3MsIHN5bWJvbHMsIGFuZCB0eXBlZCBhcnJheXMuIGBPYmplY3RgIG9iamVjdHMgYXJlIGNvbXBhcmVkXG4gKiBieSB0aGVpciBvd24sIG5vdCBpbmhlcml0ZWQsIGVudW1lcmFibGUgcHJvcGVydGllcy4gRnVuY3Rpb25zIGFuZCBET01cbiAqIG5vZGVzIGFyZSBjb21wYXJlZCBieSBzdHJpY3QgZXF1YWxpdHksIGkuZS4gYD09PWAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0geyp9IG90aGVyIFRoZSBvdGhlciB2YWx1ZSB0byBjb21wYXJlLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSB2YWx1ZXMgYXJlIGVxdWl2YWxlbnQsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxIH07XG4gKiB2YXIgb3RoZXIgPSB7ICdhJzogMSB9O1xuICpcbiAqIF8uaXNFcXVhbChvYmplY3QsIG90aGVyKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBvYmplY3QgPT09IG90aGVyO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNFcXVhbCh2YWx1ZSwgb3RoZXIpIHtcbiAgcmV0dXJuIGJhc2VJc0VxdWFsKHZhbHVlLCBvdGhlcik7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNFcXVhbDtcbiIsICJ2YXIgZ2V0TmF0aXZlID0gcmVxdWlyZSgnLi9fZ2V0TmF0aXZlJyk7XG5cbnZhciBkZWZpbmVQcm9wZXJ0eSA9IChmdW5jdGlvbigpIHtcbiAgdHJ5IHtcbiAgICB2YXIgZnVuYyA9IGdldE5hdGl2ZShPYmplY3QsICdkZWZpbmVQcm9wZXJ0eScpO1xuICAgIGZ1bmMoe30sICcnLCB7fSk7XG4gICAgcmV0dXJuIGZ1bmM7XG4gIH0gY2F0Y2ggKGUpIHt9XG59KCkpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGRlZmluZVByb3BlcnR5O1xuIiwgInZhciBkZWZpbmVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4vX2RlZmluZVByb3BlcnR5Jyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYGFzc2lnblZhbHVlYCBhbmQgYGFzc2lnbk1lcmdlVmFsdWVgIHdpdGhvdXRcbiAqIHZhbHVlIGNoZWNrcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIG1vZGlmeS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gYXNzaWduLlxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gYXNzaWduLlxuICovXG5mdW5jdGlvbiBiYXNlQXNzaWduVmFsdWUob2JqZWN0LCBrZXksIHZhbHVlKSB7XG4gIGlmIChrZXkgPT0gJ19fcHJvdG9fXycgJiYgZGVmaW5lUHJvcGVydHkpIHtcbiAgICBkZWZpbmVQcm9wZXJ0eShvYmplY3QsIGtleSwge1xuICAgICAgJ2NvbmZpZ3VyYWJsZSc6IHRydWUsXG4gICAgICAnZW51bWVyYWJsZSc6IHRydWUsXG4gICAgICAndmFsdWUnOiB2YWx1ZSxcbiAgICAgICd3cml0YWJsZSc6IHRydWVcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICBvYmplY3Rba2V5XSA9IHZhbHVlO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUFzc2lnblZhbHVlO1xuIiwgInZhciBiYXNlQXNzaWduVmFsdWUgPSByZXF1aXJlKCcuL19iYXNlQXNzaWduVmFsdWUnKSxcbiAgICBlcSA9IHJlcXVpcmUoJy4vZXEnKTtcblxuLyoqXG4gKiBUaGlzIGZ1bmN0aW9uIGlzIGxpa2UgYGFzc2lnblZhbHVlYCBleGNlcHQgdGhhdCBpdCBkb2Vzbid0IGFzc2lnblxuICogYHVuZGVmaW5lZGAgdmFsdWVzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gbW9kaWZ5LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBwcm9wZXJ0eSB0byBhc3NpZ24uXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBhc3NpZ24uXG4gKi9cbmZ1bmN0aW9uIGFzc2lnbk1lcmdlVmFsdWUob2JqZWN0LCBrZXksIHZhbHVlKSB7XG4gIGlmICgodmFsdWUgIT09IHVuZGVmaW5lZCAmJiAhZXEob2JqZWN0W2tleV0sIHZhbHVlKSkgfHxcbiAgICAgICh2YWx1ZSA9PT0gdW5kZWZpbmVkICYmICEoa2V5IGluIG9iamVjdCkpKSB7XG4gICAgYmFzZUFzc2lnblZhbHVlKG9iamVjdCwga2V5LCB2YWx1ZSk7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBhc3NpZ25NZXJnZVZhbHVlO1xuIiwgIi8qKlxuICogQ3JlYXRlcyBhIGJhc2UgZnVuY3Rpb24gZm9yIG1ldGhvZHMgbGlrZSBgXy5mb3JJbmAgYW5kIGBfLmZvck93bmAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2Zyb21SaWdodF0gU3BlY2lmeSBpdGVyYXRpbmcgZnJvbSByaWdodCB0byBsZWZ0LlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgYmFzZSBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gY3JlYXRlQmFzZUZvcihmcm9tUmlnaHQpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKG9iamVjdCwgaXRlcmF0ZWUsIGtleXNGdW5jKSB7XG4gICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgIGl0ZXJhYmxlID0gT2JqZWN0KG9iamVjdCksXG4gICAgICAgIHByb3BzID0ga2V5c0Z1bmMob2JqZWN0KSxcbiAgICAgICAgbGVuZ3RoID0gcHJvcHMubGVuZ3RoO1xuXG4gICAgd2hpbGUgKGxlbmd0aC0tKSB7XG4gICAgICB2YXIga2V5ID0gcHJvcHNbZnJvbVJpZ2h0ID8gbGVuZ3RoIDogKytpbmRleF07XG4gICAgICBpZiAoaXRlcmF0ZWUoaXRlcmFibGVba2V5XSwga2V5LCBpdGVyYWJsZSkgPT09IGZhbHNlKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gb2JqZWN0O1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNyZWF0ZUJhc2VGb3I7XG4iLCAidmFyIGNyZWF0ZUJhc2VGb3IgPSByZXF1aXJlKCcuL19jcmVhdGVCYXNlRm9yJyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYGJhc2VGb3JPd25gIHdoaWNoIGl0ZXJhdGVzIG92ZXIgYG9iamVjdGBcbiAqIHByb3BlcnRpZXMgcmV0dXJuZWQgYnkgYGtleXNGdW5jYCBhbmQgaW52b2tlcyBgaXRlcmF0ZWVgIGZvciBlYWNoIHByb3BlcnR5LlxuICogSXRlcmF0ZWUgZnVuY3Rpb25zIG1heSBleGl0IGl0ZXJhdGlvbiBlYXJseSBieSBleHBsaWNpdGx5IHJldHVybmluZyBgZmFsc2VgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGtleXNGdW5jIFRoZSBmdW5jdGlvbiB0byBnZXQgdGhlIGtleXMgb2YgYG9iamVjdGAuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICovXG52YXIgYmFzZUZvciA9IGNyZWF0ZUJhc2VGb3IoKTtcblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlRm9yO1xuIiwgInZhciByb290ID0gcmVxdWlyZSgnLi9fcm9vdCcpO1xuXG4vKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYGV4cG9ydHNgLiAqL1xudmFyIGZyZWVFeHBvcnRzID0gdHlwZW9mIGV4cG9ydHMgPT0gJ29iamVjdCcgJiYgZXhwb3J0cyAmJiAhZXhwb3J0cy5ub2RlVHlwZSAmJiBleHBvcnRzO1xuXG4vKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYG1vZHVsZWAuICovXG52YXIgZnJlZU1vZHVsZSA9IGZyZWVFeHBvcnRzICYmIHR5cGVvZiBtb2R1bGUgPT0gJ29iamVjdCcgJiYgbW9kdWxlICYmICFtb2R1bGUubm9kZVR5cGUgJiYgbW9kdWxlO1xuXG4vKiogRGV0ZWN0IHRoZSBwb3B1bGFyIENvbW1vbkpTIGV4dGVuc2lvbiBgbW9kdWxlLmV4cG9ydHNgLiAqL1xudmFyIG1vZHVsZUV4cG9ydHMgPSBmcmVlTW9kdWxlICYmIGZyZWVNb2R1bGUuZXhwb3J0cyA9PT0gZnJlZUV4cG9ydHM7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIEJ1ZmZlciA9IG1vZHVsZUV4cG9ydHMgPyByb290LkJ1ZmZlciA6IHVuZGVmaW5lZCxcbiAgICBhbGxvY1Vuc2FmZSA9IEJ1ZmZlciA/IEJ1ZmZlci5hbGxvY1Vuc2FmZSA6IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBDcmVhdGVzIGEgY2xvbmUgb2YgIGBidWZmZXJgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0J1ZmZlcn0gYnVmZmVyIFRoZSBidWZmZXIgdG8gY2xvbmUuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtpc0RlZXBdIFNwZWNpZnkgYSBkZWVwIGNsb25lLlxuICogQHJldHVybnMge0J1ZmZlcn0gUmV0dXJucyB0aGUgY2xvbmVkIGJ1ZmZlci5cbiAqL1xuZnVuY3Rpb24gY2xvbmVCdWZmZXIoYnVmZmVyLCBpc0RlZXApIHtcbiAgaWYgKGlzRGVlcCkge1xuICAgIHJldHVybiBidWZmZXIuc2xpY2UoKTtcbiAgfVxuICB2YXIgbGVuZ3RoID0gYnVmZmVyLmxlbmd0aCxcbiAgICAgIHJlc3VsdCA9IGFsbG9jVW5zYWZlID8gYWxsb2NVbnNhZmUobGVuZ3RoKSA6IG5ldyBidWZmZXIuY29uc3RydWN0b3IobGVuZ3RoKTtcblxuICBidWZmZXIuY29weShyZXN1bHQpO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNsb25lQnVmZmVyO1xuIiwgInZhciBVaW50OEFycmF5ID0gcmVxdWlyZSgnLi9fVWludDhBcnJheScpO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBjbG9uZSBvZiBgYXJyYXlCdWZmZXJgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5QnVmZmVyfSBhcnJheUJ1ZmZlciBUaGUgYXJyYXkgYnVmZmVyIHRvIGNsb25lLlxuICogQHJldHVybnMge0FycmF5QnVmZmVyfSBSZXR1cm5zIHRoZSBjbG9uZWQgYXJyYXkgYnVmZmVyLlxuICovXG5mdW5jdGlvbiBjbG9uZUFycmF5QnVmZmVyKGFycmF5QnVmZmVyKSB7XG4gIHZhciByZXN1bHQgPSBuZXcgYXJyYXlCdWZmZXIuY29uc3RydWN0b3IoYXJyYXlCdWZmZXIuYnl0ZUxlbmd0aCk7XG4gIG5ldyBVaW50OEFycmF5KHJlc3VsdCkuc2V0KG5ldyBVaW50OEFycmF5KGFycmF5QnVmZmVyKSk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2xvbmVBcnJheUJ1ZmZlcjtcbiIsICJ2YXIgY2xvbmVBcnJheUJ1ZmZlciA9IHJlcXVpcmUoJy4vX2Nsb25lQXJyYXlCdWZmZXInKTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgY2xvbmUgb2YgYHR5cGVkQXJyYXlgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gdHlwZWRBcnJheSBUaGUgdHlwZWQgYXJyYXkgdG8gY2xvbmUuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtpc0RlZXBdIFNwZWNpZnkgYSBkZWVwIGNsb25lLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY2xvbmVkIHR5cGVkIGFycmF5LlxuICovXG5mdW5jdGlvbiBjbG9uZVR5cGVkQXJyYXkodHlwZWRBcnJheSwgaXNEZWVwKSB7XG4gIHZhciBidWZmZXIgPSBpc0RlZXAgPyBjbG9uZUFycmF5QnVmZmVyKHR5cGVkQXJyYXkuYnVmZmVyKSA6IHR5cGVkQXJyYXkuYnVmZmVyO1xuICByZXR1cm4gbmV3IHR5cGVkQXJyYXkuY29uc3RydWN0b3IoYnVmZmVyLCB0eXBlZEFycmF5LmJ5dGVPZmZzZXQsIHR5cGVkQXJyYXkubGVuZ3RoKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjbG9uZVR5cGVkQXJyYXk7XG4iLCAiLyoqXG4gKiBDb3BpZXMgdGhlIHZhbHVlcyBvZiBgc291cmNlYCB0byBgYXJyYXlgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBzb3VyY2UgVGhlIGFycmF5IHRvIGNvcHkgdmFsdWVzIGZyb20uXG4gKiBAcGFyYW0ge0FycmF5fSBbYXJyYXk9W11dIFRoZSBhcnJheSB0byBjb3B5IHZhbHVlcyB0by5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICovXG5mdW5jdGlvbiBjb3B5QXJyYXkoc291cmNlLCBhcnJheSkge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IHNvdXJjZS5sZW5ndGg7XG5cbiAgYXJyYXkgfHwgKGFycmF5ID0gQXJyYXkobGVuZ3RoKSk7XG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgYXJyYXlbaW5kZXhdID0gc291cmNlW2luZGV4XTtcbiAgfVxuICByZXR1cm4gYXJyYXk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY29weUFycmF5O1xuIiwgInZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vaXNPYmplY3QnKTtcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0Q3JlYXRlID0gT2JqZWN0LmNyZWF0ZTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5jcmVhdGVgIHdpdGhvdXQgc3VwcG9ydCBmb3IgYXNzaWduaW5nXG4gKiBwcm9wZXJ0aWVzIHRvIHRoZSBjcmVhdGVkIG9iamVjdC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IHByb3RvIFRoZSBvYmplY3QgdG8gaW5oZXJpdCBmcm9tLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IG9iamVjdC5cbiAqL1xudmFyIGJhc2VDcmVhdGUgPSAoZnVuY3Rpb24oKSB7XG4gIGZ1bmN0aW9uIG9iamVjdCgpIHt9XG4gIHJldHVybiBmdW5jdGlvbihwcm90bykge1xuICAgIGlmICghaXNPYmplY3QocHJvdG8pKSB7XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuICAgIGlmIChvYmplY3RDcmVhdGUpIHtcbiAgICAgIHJldHVybiBvYmplY3RDcmVhdGUocHJvdG8pO1xuICAgIH1cbiAgICBvYmplY3QucHJvdG90eXBlID0gcHJvdG87XG4gICAgdmFyIHJlc3VsdCA9IG5ldyBvYmplY3Q7XG4gICAgb2JqZWN0LnByb3RvdHlwZSA9IHVuZGVmaW5lZDtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xufSgpKTtcblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlQ3JlYXRlO1xuIiwgInZhciBvdmVyQXJnID0gcmVxdWlyZSgnLi9fb3ZlckFyZycpO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBnZXRQcm90b3R5cGUgPSBvdmVyQXJnKE9iamVjdC5nZXRQcm90b3R5cGVPZiwgT2JqZWN0KTtcblxubW9kdWxlLmV4cG9ydHMgPSBnZXRQcm90b3R5cGU7XG4iLCAidmFyIGJhc2VDcmVhdGUgPSByZXF1aXJlKCcuL19iYXNlQ3JlYXRlJyksXG4gICAgZ2V0UHJvdG90eXBlID0gcmVxdWlyZSgnLi9fZ2V0UHJvdG90eXBlJyksXG4gICAgaXNQcm90b3R5cGUgPSByZXF1aXJlKCcuL19pc1Byb3RvdHlwZScpO1xuXG4vKipcbiAqIEluaXRpYWxpemVzIGFuIG9iamVjdCBjbG9uZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGNsb25lLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgaW5pdGlhbGl6ZWQgY2xvbmUuXG4gKi9cbmZ1bmN0aW9uIGluaXRDbG9uZU9iamVjdChvYmplY3QpIHtcbiAgcmV0dXJuICh0eXBlb2Ygb2JqZWN0LmNvbnN0cnVjdG9yID09ICdmdW5jdGlvbicgJiYgIWlzUHJvdG90eXBlKG9iamVjdCkpXG4gICAgPyBiYXNlQ3JlYXRlKGdldFByb3RvdHlwZShvYmplY3QpKVxuICAgIDoge307XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaW5pdENsb25lT2JqZWN0O1xuIiwgInZhciBpc0FycmF5TGlrZSA9IHJlcXVpcmUoJy4vaXNBcnJheUxpa2UnKSxcbiAgICBpc09iamVjdExpa2UgPSByZXF1aXJlKCcuL2lzT2JqZWN0TGlrZScpO1xuXG4vKipcbiAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uaXNBcnJheUxpa2VgIGV4Y2VwdCB0aGF0IGl0IGFsc28gY2hlY2tzIGlmIGB2YWx1ZWBcbiAqIGlzIGFuIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBhcnJheS1saWtlIG9iamVjdCxcbiAqICBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNBcnJheUxpa2VPYmplY3QoWzEsIDIsIDNdKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQXJyYXlMaWtlT2JqZWN0KGRvY3VtZW50LmJvZHkuY2hpbGRyZW4pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcnJheUxpa2VPYmplY3QoJ2FiYycpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzQXJyYXlMaWtlT2JqZWN0KF8ubm9vcCk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0FycmF5TGlrZU9iamVjdCh2YWx1ZSkge1xuICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBpc0FycmF5TGlrZSh2YWx1ZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNBcnJheUxpa2VPYmplY3Q7XG4iLCAidmFyIGJhc2VHZXRUYWcgPSByZXF1aXJlKCcuL19iYXNlR2V0VGFnJyksXG4gICAgZ2V0UHJvdG90eXBlID0gcmVxdWlyZSgnLi9fZ2V0UHJvdG90eXBlJyksXG4gICAgaXNPYmplY3RMaWtlID0gcmVxdWlyZSgnLi9pc09iamVjdExpa2UnKTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFRhZyA9ICdbb2JqZWN0IE9iamVjdF0nO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgZnVuY1Byb3RvID0gRnVuY3Rpb24ucHJvdG90eXBlLFxuICAgIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gcmVzb2x2ZSB0aGUgZGVjb21waWxlZCBzb3VyY2Ugb2YgZnVuY3Rpb25zLiAqL1xudmFyIGZ1bmNUb1N0cmluZyA9IGZ1bmNQcm90by50b1N0cmluZztcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqIFVzZWQgdG8gaW5mZXIgdGhlIGBPYmplY3RgIGNvbnN0cnVjdG9yLiAqL1xudmFyIG9iamVjdEN0b3JTdHJpbmcgPSBmdW5jVG9TdHJpbmcuY2FsbChPYmplY3QpO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgcGxhaW4gb2JqZWN0LCB0aGF0IGlzLCBhbiBvYmplY3QgY3JlYXRlZCBieSB0aGVcbiAqIGBPYmplY3RgIGNvbnN0cnVjdG9yIG9yIG9uZSB3aXRoIGEgYFtbUHJvdG90eXBlXV1gIG9mIGBudWxsYC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuOC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHBsYWluIG9iamVjdCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBmdW5jdGlvbiBGb28oKSB7XG4gKiAgIHRoaXMuYSA9IDE7XG4gKiB9XG4gKlxuICogXy5pc1BsYWluT2JqZWN0KG5ldyBGb28pO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzUGxhaW5PYmplY3QoWzEsIDIsIDNdKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc1BsYWluT2JqZWN0KHsgJ3gnOiAwLCAneSc6IDAgfSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc1BsYWluT2JqZWN0KE9iamVjdC5jcmVhdGUobnVsbCkpO1xuICogLy8gPT4gdHJ1ZVxuICovXG5mdW5jdGlvbiBpc1BsYWluT2JqZWN0KHZhbHVlKSB7XG4gIGlmICghaXNPYmplY3RMaWtlKHZhbHVlKSB8fCBiYXNlR2V0VGFnKHZhbHVlKSAhPSBvYmplY3RUYWcpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdmFyIHByb3RvID0gZ2V0UHJvdG90eXBlKHZhbHVlKTtcbiAgaWYgKHByb3RvID09PSBudWxsKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgdmFyIEN0b3IgPSBoYXNPd25Qcm9wZXJ0eS5jYWxsKHByb3RvLCAnY29uc3RydWN0b3InKSAmJiBwcm90by5jb25zdHJ1Y3RvcjtcbiAgcmV0dXJuIHR5cGVvZiBDdG9yID09ICdmdW5jdGlvbicgJiYgQ3RvciBpbnN0YW5jZW9mIEN0b3IgJiZcbiAgICBmdW5jVG9TdHJpbmcuY2FsbChDdG9yKSA9PSBvYmplY3RDdG9yU3RyaW5nO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzUGxhaW5PYmplY3Q7XG4iLCAiLyoqXG4gKiBHZXRzIHRoZSB2YWx1ZSBhdCBga2V5YCwgdW5sZXNzIGBrZXlgIGlzIFwiX19wcm90b19fXCIgb3IgXCJjb25zdHJ1Y3RvclwiLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGdldC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBwcm9wZXJ0eSB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gc2FmZUdldChvYmplY3QsIGtleSkge1xuICBpZiAoa2V5ID09PSAnY29uc3RydWN0b3InICYmIHR5cGVvZiBvYmplY3Rba2V5XSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmIChrZXkgPT0gJ19fcHJvdG9fXycpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICByZXR1cm4gb2JqZWN0W2tleV07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc2FmZUdldDtcbiIsICJ2YXIgYmFzZUFzc2lnblZhbHVlID0gcmVxdWlyZSgnLi9fYmFzZUFzc2lnblZhbHVlJyksXG4gICAgZXEgPSByZXF1aXJlKCcuL2VxJyk7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogQXNzaWducyBgdmFsdWVgIHRvIGBrZXlgIG9mIGBvYmplY3RgIGlmIHRoZSBleGlzdGluZyB2YWx1ZSBpcyBub3QgZXF1aXZhbGVudFxuICogdXNpbmcgW2BTYW1lVmFsdWVaZXJvYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtc2FtZXZhbHVlemVybylcbiAqIGZvciBlcXVhbGl0eSBjb21wYXJpc29ucy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIG1vZGlmeS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gYXNzaWduLlxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gYXNzaWduLlxuICovXG5mdW5jdGlvbiBhc3NpZ25WYWx1ZShvYmplY3QsIGtleSwgdmFsdWUpIHtcbiAgdmFyIG9ialZhbHVlID0gb2JqZWN0W2tleV07XG4gIGlmICghKGhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBrZXkpICYmIGVxKG9ialZhbHVlLCB2YWx1ZSkpIHx8XG4gICAgICAodmFsdWUgPT09IHVuZGVmaW5lZCAmJiAhKGtleSBpbiBvYmplY3QpKSkge1xuICAgIGJhc2VBc3NpZ25WYWx1ZShvYmplY3QsIGtleSwgdmFsdWUpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYXNzaWduVmFsdWU7XG4iLCAidmFyIGFzc2lnblZhbHVlID0gcmVxdWlyZSgnLi9fYXNzaWduVmFsdWUnKSxcbiAgICBiYXNlQXNzaWduVmFsdWUgPSByZXF1aXJlKCcuL19iYXNlQXNzaWduVmFsdWUnKTtcblxuLyoqXG4gKiBDb3BpZXMgcHJvcGVydGllcyBvZiBgc291cmNlYCB0byBgb2JqZWN0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IHRvIGNvcHkgcHJvcGVydGllcyBmcm9tLlxuICogQHBhcmFtIHtBcnJheX0gcHJvcHMgVGhlIHByb3BlcnR5IGlkZW50aWZpZXJzIHRvIGNvcHkuXG4gKiBAcGFyYW0ge09iamVjdH0gW29iamVjdD17fV0gVGhlIG9iamVjdCB0byBjb3B5IHByb3BlcnRpZXMgdG8uXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjb3BpZWQgdmFsdWVzLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAqL1xuZnVuY3Rpb24gY29weU9iamVjdChzb3VyY2UsIHByb3BzLCBvYmplY3QsIGN1c3RvbWl6ZXIpIHtcbiAgdmFyIGlzTmV3ID0gIW9iamVjdDtcbiAgb2JqZWN0IHx8IChvYmplY3QgPSB7fSk7XG5cbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBwcm9wcy5sZW5ndGg7XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICB2YXIga2V5ID0gcHJvcHNbaW5kZXhdO1xuXG4gICAgdmFyIG5ld1ZhbHVlID0gY3VzdG9taXplclxuICAgICAgPyBjdXN0b21pemVyKG9iamVjdFtrZXldLCBzb3VyY2Vba2V5XSwga2V5LCBvYmplY3QsIHNvdXJjZSlcbiAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgaWYgKG5ld1ZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIG5ld1ZhbHVlID0gc291cmNlW2tleV07XG4gICAgfVxuICAgIGlmIChpc05ldykge1xuICAgICAgYmFzZUFzc2lnblZhbHVlKG9iamVjdCwga2V5LCBuZXdWYWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFzc2lnblZhbHVlKG9iamVjdCwga2V5LCBuZXdWYWx1ZSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBvYmplY3Q7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY29weU9iamVjdDtcbiIsICIvKipcbiAqIFRoaXMgZnVuY3Rpb24gaXMgbGlrZVxuICogW2BPYmplY3Qua2V5c2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLW9iamVjdC5rZXlzKVxuICogZXhjZXB0IHRoYXQgaXQgaW5jbHVkZXMgaW5oZXJpdGVkIGVudW1lcmFibGUgcHJvcGVydGllcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAqL1xuZnVuY3Rpb24gbmF0aXZlS2V5c0luKG9iamVjdCkge1xuICB2YXIgcmVzdWx0ID0gW107XG4gIGlmIChvYmplY3QgIT0gbnVsbCkge1xuICAgIGZvciAodmFyIGtleSBpbiBPYmplY3Qob2JqZWN0KSkge1xuICAgICAgcmVzdWx0LnB1c2goa2V5KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBuYXRpdmVLZXlzSW47XG4iLCAidmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9pc09iamVjdCcpLFxuICAgIGlzUHJvdG90eXBlID0gcmVxdWlyZSgnLi9faXNQcm90b3R5cGUnKSxcbiAgICBuYXRpdmVLZXlzSW4gPSByZXF1aXJlKCcuL19uYXRpdmVLZXlzSW4nKTtcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5rZXlzSW5gIHdoaWNoIGRvZXNuJ3QgdHJlYXQgc3BhcnNlIGFycmF5cyBhcyBkZW5zZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAqL1xuZnVuY3Rpb24gYmFzZUtleXNJbihvYmplY3QpIHtcbiAgaWYgKCFpc09iamVjdChvYmplY3QpKSB7XG4gICAgcmV0dXJuIG5hdGl2ZUtleXNJbihvYmplY3QpO1xuICB9XG4gIHZhciBpc1Byb3RvID0gaXNQcm90b3R5cGUob2JqZWN0KSxcbiAgICAgIHJlc3VsdCA9IFtdO1xuXG4gIGZvciAodmFyIGtleSBpbiBvYmplY3QpIHtcbiAgICBpZiAoIShrZXkgPT0gJ2NvbnN0cnVjdG9yJyAmJiAoaXNQcm90byB8fCAhaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIGtleSkpKSkge1xuICAgICAgcmVzdWx0LnB1c2goa2V5KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlS2V5c0luO1xuIiwgInZhciBhcnJheUxpa2VLZXlzID0gcmVxdWlyZSgnLi9fYXJyYXlMaWtlS2V5cycpLFxuICAgIGJhc2VLZXlzSW4gPSByZXF1aXJlKCcuL19iYXNlS2V5c0luJyksXG4gICAgaXNBcnJheUxpa2UgPSByZXF1aXJlKCcuL2lzQXJyYXlMaWtlJyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiB0aGUgb3duIGFuZCBpbmhlcml0ZWQgZW51bWVyYWJsZSBwcm9wZXJ0eSBuYW1lcyBvZiBgb2JqZWN0YC5cbiAqXG4gKiAqKk5vdGU6KiogTm9uLW9iamVjdCB2YWx1ZXMgYXJlIGNvZXJjZWQgdG8gb2JqZWN0cy5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDMuMC4wXG4gKiBAY2F0ZWdvcnkgT2JqZWN0XG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzLlxuICogQGV4YW1wbGVcbiAqXG4gKiBmdW5jdGlvbiBGb28oKSB7XG4gKiAgIHRoaXMuYSA9IDE7XG4gKiAgIHRoaXMuYiA9IDI7XG4gKiB9XG4gKlxuICogRm9vLnByb3RvdHlwZS5jID0gMztcbiAqXG4gKiBfLmtleXNJbihuZXcgRm9vKTtcbiAqIC8vID0+IFsnYScsICdiJywgJ2MnXSAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKVxuICovXG5mdW5jdGlvbiBrZXlzSW4ob2JqZWN0KSB7XG4gIHJldHVybiBpc0FycmF5TGlrZShvYmplY3QpID8gYXJyYXlMaWtlS2V5cyhvYmplY3QsIHRydWUpIDogYmFzZUtleXNJbihvYmplY3QpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGtleXNJbjtcbiIsICJ2YXIgY29weU9iamVjdCA9IHJlcXVpcmUoJy4vX2NvcHlPYmplY3QnKSxcbiAgICBrZXlzSW4gPSByZXF1aXJlKCcuL2tleXNJbicpO1xuXG4vKipcbiAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBwbGFpbiBvYmplY3QgZmxhdHRlbmluZyBpbmhlcml0ZWQgZW51bWVyYWJsZSBzdHJpbmdcbiAqIGtleWVkIHByb3BlcnRpZXMgb2YgYHZhbHVlYCB0byBvd24gcHJvcGVydGllcyBvZiB0aGUgcGxhaW4gb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMy4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb252ZXJ0LlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY29udmVydGVkIHBsYWluIG9iamVjdC5cbiAqIEBleGFtcGxlXG4gKlxuICogZnVuY3Rpb24gRm9vKCkge1xuICogICB0aGlzLmIgPSAyO1xuICogfVxuICpcbiAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gKlxuICogXy5hc3NpZ24oeyAnYSc6IDEgfSwgbmV3IEZvbyk7XG4gKiAvLyA9PiB7ICdhJzogMSwgJ2InOiAyIH1cbiAqXG4gKiBfLmFzc2lnbih7ICdhJzogMSB9LCBfLnRvUGxhaW5PYmplY3QobmV3IEZvbykpO1xuICogLy8gPT4geyAnYSc6IDEsICdiJzogMiwgJ2MnOiAzIH1cbiAqL1xuZnVuY3Rpb24gdG9QbGFpbk9iamVjdCh2YWx1ZSkge1xuICByZXR1cm4gY29weU9iamVjdCh2YWx1ZSwga2V5c0luKHZhbHVlKSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdG9QbGFpbk9iamVjdDtcbiIsICJ2YXIgYXNzaWduTWVyZ2VWYWx1ZSA9IHJlcXVpcmUoJy4vX2Fzc2lnbk1lcmdlVmFsdWUnKSxcbiAgICBjbG9uZUJ1ZmZlciA9IHJlcXVpcmUoJy4vX2Nsb25lQnVmZmVyJyksXG4gICAgY2xvbmVUeXBlZEFycmF5ID0gcmVxdWlyZSgnLi9fY2xvbmVUeXBlZEFycmF5JyksXG4gICAgY29weUFycmF5ID0gcmVxdWlyZSgnLi9fY29weUFycmF5JyksXG4gICAgaW5pdENsb25lT2JqZWN0ID0gcmVxdWlyZSgnLi9faW5pdENsb25lT2JqZWN0JyksXG4gICAgaXNBcmd1bWVudHMgPSByZXF1aXJlKCcuL2lzQXJndW1lbnRzJyksXG4gICAgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpLFxuICAgIGlzQXJyYXlMaWtlT2JqZWN0ID0gcmVxdWlyZSgnLi9pc0FycmF5TGlrZU9iamVjdCcpLFxuICAgIGlzQnVmZmVyID0gcmVxdWlyZSgnLi9pc0J1ZmZlcicpLFxuICAgIGlzRnVuY3Rpb24gPSByZXF1aXJlKCcuL2lzRnVuY3Rpb24nKSxcbiAgICBpc09iamVjdCA9IHJlcXVpcmUoJy4vaXNPYmplY3QnKSxcbiAgICBpc1BsYWluT2JqZWN0ID0gcmVxdWlyZSgnLi9pc1BsYWluT2JqZWN0JyksXG4gICAgaXNUeXBlZEFycmF5ID0gcmVxdWlyZSgnLi9pc1R5cGVkQXJyYXknKSxcbiAgICBzYWZlR2V0ID0gcmVxdWlyZSgnLi9fc2FmZUdldCcpLFxuICAgIHRvUGxhaW5PYmplY3QgPSByZXF1aXJlKCcuL3RvUGxhaW5PYmplY3QnKTtcblxuLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VNZXJnZWAgZm9yIGFycmF5cyBhbmQgb2JqZWN0cyB3aGljaCBwZXJmb3Jtc1xuICogZGVlcCBtZXJnZXMgYW5kIHRyYWNrcyB0cmF2ZXJzZWQgb2JqZWN0cyBlbmFibGluZyBvYmplY3RzIHdpdGggY2lyY3VsYXJcbiAqIHJlZmVyZW5jZXMgdG8gYmUgbWVyZ2VkLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBkZXN0aW5hdGlvbiBvYmplY3QuXG4gKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBzb3VyY2Ugb2JqZWN0LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBtZXJnZS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBzcmNJbmRleCBUaGUgaW5kZXggb2YgYHNvdXJjZWAuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBtZXJnZUZ1bmMgVGhlIGZ1bmN0aW9uIHRvIG1lcmdlIHZhbHVlcy5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGFzc2lnbmVkIHZhbHVlcy5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbc3RhY2tdIFRyYWNrcyB0cmF2ZXJzZWQgc291cmNlIHZhbHVlcyBhbmQgdGhlaXIgbWVyZ2VkXG4gKiAgY291bnRlcnBhcnRzLlxuICovXG5mdW5jdGlvbiBiYXNlTWVyZ2VEZWVwKG9iamVjdCwgc291cmNlLCBrZXksIHNyY0luZGV4LCBtZXJnZUZ1bmMsIGN1c3RvbWl6ZXIsIHN0YWNrKSB7XG4gIHZhciBvYmpWYWx1ZSA9IHNhZmVHZXQob2JqZWN0LCBrZXkpLFxuICAgICAgc3JjVmFsdWUgPSBzYWZlR2V0KHNvdXJjZSwga2V5KSxcbiAgICAgIHN0YWNrZWQgPSBzdGFjay5nZXQoc3JjVmFsdWUpO1xuXG4gIGlmIChzdGFja2VkKSB7XG4gICAgYXNzaWduTWVyZ2VWYWx1ZShvYmplY3QsIGtleSwgc3RhY2tlZCk7XG4gICAgcmV0dXJuO1xuICB9XG4gIHZhciBuZXdWYWx1ZSA9IGN1c3RvbWl6ZXJcbiAgICA/IGN1c3RvbWl6ZXIob2JqVmFsdWUsIHNyY1ZhbHVlLCAoa2V5ICsgJycpLCBvYmplY3QsIHNvdXJjZSwgc3RhY2spXG4gICAgOiB1bmRlZmluZWQ7XG5cbiAgdmFyIGlzQ29tbW9uID0gbmV3VmFsdWUgPT09IHVuZGVmaW5lZDtcblxuICBpZiAoaXNDb21tb24pIHtcbiAgICB2YXIgaXNBcnIgPSBpc0FycmF5KHNyY1ZhbHVlKSxcbiAgICAgICAgaXNCdWZmID0gIWlzQXJyICYmIGlzQnVmZmVyKHNyY1ZhbHVlKSxcbiAgICAgICAgaXNUeXBlZCA9ICFpc0FyciAmJiAhaXNCdWZmICYmIGlzVHlwZWRBcnJheShzcmNWYWx1ZSk7XG5cbiAgICBuZXdWYWx1ZSA9IHNyY1ZhbHVlO1xuICAgIGlmIChpc0FyciB8fCBpc0J1ZmYgfHwgaXNUeXBlZCkge1xuICAgICAgaWYgKGlzQXJyYXkob2JqVmFsdWUpKSB7XG4gICAgICAgIG5ld1ZhbHVlID0gb2JqVmFsdWU7XG4gICAgICB9XG4gICAgICBlbHNlIGlmIChpc0FycmF5TGlrZU9iamVjdChvYmpWYWx1ZSkpIHtcbiAgICAgICAgbmV3VmFsdWUgPSBjb3B5QXJyYXkob2JqVmFsdWUpO1xuICAgICAgfVxuICAgICAgZWxzZSBpZiAoaXNCdWZmKSB7XG4gICAgICAgIGlzQ29tbW9uID0gZmFsc2U7XG4gICAgICAgIG5ld1ZhbHVlID0gY2xvbmVCdWZmZXIoc3JjVmFsdWUsIHRydWUpO1xuICAgICAgfVxuICAgICAgZWxzZSBpZiAoaXNUeXBlZCkge1xuICAgICAgICBpc0NvbW1vbiA9IGZhbHNlO1xuICAgICAgICBuZXdWYWx1ZSA9IGNsb25lVHlwZWRBcnJheShzcmNWYWx1ZSwgdHJ1ZSk7XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgbmV3VmFsdWUgPSBbXTtcbiAgICAgIH1cbiAgICB9XG4gICAgZWxzZSBpZiAoaXNQbGFpbk9iamVjdChzcmNWYWx1ZSkgfHwgaXNBcmd1bWVudHMoc3JjVmFsdWUpKSB7XG4gICAgICBuZXdWYWx1ZSA9IG9ialZhbHVlO1xuICAgICAgaWYgKGlzQXJndW1lbnRzKG9ialZhbHVlKSkge1xuICAgICAgICBuZXdWYWx1ZSA9IHRvUGxhaW5PYmplY3Qob2JqVmFsdWUpO1xuICAgICAgfVxuICAgICAgZWxzZSBpZiAoIWlzT2JqZWN0KG9ialZhbHVlKSB8fCBpc0Z1bmN0aW9uKG9ialZhbHVlKSkge1xuICAgICAgICBuZXdWYWx1ZSA9IGluaXRDbG9uZU9iamVjdChzcmNWYWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgaXNDb21tb24gPSBmYWxzZTtcbiAgICB9XG4gIH1cbiAgaWYgKGlzQ29tbW9uKSB7XG4gICAgLy8gUmVjdXJzaXZlbHkgbWVyZ2Ugb2JqZWN0cyBhbmQgYXJyYXlzIChzdXNjZXB0aWJsZSB0byBjYWxsIHN0YWNrIGxpbWl0cykuXG4gICAgc3RhY2suc2V0KHNyY1ZhbHVlLCBuZXdWYWx1ZSk7XG4gICAgbWVyZ2VGdW5jKG5ld1ZhbHVlLCBzcmNWYWx1ZSwgc3JjSW5kZXgsIGN1c3RvbWl6ZXIsIHN0YWNrKTtcbiAgICBzdGFja1snZGVsZXRlJ10oc3JjVmFsdWUpO1xuICB9XG4gIGFzc2lnbk1lcmdlVmFsdWUob2JqZWN0LCBrZXksIG5ld1ZhbHVlKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlTWVyZ2VEZWVwO1xuIiwgInZhciBTdGFjayA9IHJlcXVpcmUoJy4vX1N0YWNrJyksXG4gICAgYXNzaWduTWVyZ2VWYWx1ZSA9IHJlcXVpcmUoJy4vX2Fzc2lnbk1lcmdlVmFsdWUnKSxcbiAgICBiYXNlRm9yID0gcmVxdWlyZSgnLi9fYmFzZUZvcicpLFxuICAgIGJhc2VNZXJnZURlZXAgPSByZXF1aXJlKCcuL19iYXNlTWVyZ2VEZWVwJyksXG4gICAgaXNPYmplY3QgPSByZXF1aXJlKCcuL2lzT2JqZWN0JyksXG4gICAga2V5c0luID0gcmVxdWlyZSgnLi9rZXlzSW4nKSxcbiAgICBzYWZlR2V0ID0gcmVxdWlyZSgnLi9fc2FmZUdldCcpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLm1lcmdlYCB3aXRob3V0IHN1cHBvcnQgZm9yIG11bHRpcGxlIHNvdXJjZXMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIGRlc3RpbmF0aW9uIG9iamVjdC5cbiAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIHNvdXJjZSBvYmplY3QuXG4gKiBAcGFyYW0ge251bWJlcn0gc3JjSW5kZXggVGhlIGluZGV4IG9mIGBzb3VyY2VgLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgbWVyZ2VkIHZhbHVlcy5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbc3RhY2tdIFRyYWNrcyB0cmF2ZXJzZWQgc291cmNlIHZhbHVlcyBhbmQgdGhlaXIgbWVyZ2VkXG4gKiAgY291bnRlcnBhcnRzLlxuICovXG5mdW5jdGlvbiBiYXNlTWVyZ2Uob2JqZWN0LCBzb3VyY2UsIHNyY0luZGV4LCBjdXN0b21pemVyLCBzdGFjaykge1xuICBpZiAob2JqZWN0ID09PSBzb3VyY2UpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgYmFzZUZvcihzb3VyY2UsIGZ1bmN0aW9uKHNyY1ZhbHVlLCBrZXkpIHtcbiAgICBzdGFjayB8fCAoc3RhY2sgPSBuZXcgU3RhY2spO1xuICAgIGlmIChpc09iamVjdChzcmNWYWx1ZSkpIHtcbiAgICAgIGJhc2VNZXJnZURlZXAob2JqZWN0LCBzb3VyY2UsIGtleSwgc3JjSW5kZXgsIGJhc2VNZXJnZSwgY3VzdG9taXplciwgc3RhY2spO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHZhciBuZXdWYWx1ZSA9IGN1c3RvbWl6ZXJcbiAgICAgICAgPyBjdXN0b21pemVyKHNhZmVHZXQob2JqZWN0LCBrZXkpLCBzcmNWYWx1ZSwgKGtleSArICcnKSwgb2JqZWN0LCBzb3VyY2UsIHN0YWNrKVxuICAgICAgICA6IHVuZGVmaW5lZDtcblxuICAgICAgaWYgKG5ld1ZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgbmV3VmFsdWUgPSBzcmNWYWx1ZTtcbiAgICAgIH1cbiAgICAgIGFzc2lnbk1lcmdlVmFsdWUob2JqZWN0LCBrZXksIG5ld1ZhbHVlKTtcbiAgICB9XG4gIH0sIGtleXNJbik7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZU1lcmdlO1xuIiwgIi8qKlxuICogVGhpcyBtZXRob2QgcmV0dXJucyB0aGUgZmlyc3QgYXJndW1lbnQgaXQgcmVjZWl2ZXMuXG4gKlxuICogQHN0YXRpY1xuICogQHNpbmNlIDAuMS4wXG4gKiBAbWVtYmVyT2YgX1xuICogQGNhdGVnb3J5IFV0aWxcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgQW55IHZhbHVlLlxuICogQHJldHVybnMgeyp9IFJldHVybnMgYHZhbHVlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxIH07XG4gKlxuICogY29uc29sZS5sb2coXy5pZGVudGl0eShvYmplY3QpID09PSBvYmplY3QpO1xuICogLy8gPT4gdHJ1ZVxuICovXG5mdW5jdGlvbiBpZGVudGl0eSh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWU7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaWRlbnRpdHk7XG4iLCAiLyoqXG4gKiBBIGZhc3RlciBhbHRlcm5hdGl2ZSB0byBgRnVuY3Rpb24jYXBwbHlgLCB0aGlzIGZ1bmN0aW9uIGludm9rZXMgYGZ1bmNgXG4gKiB3aXRoIHRoZSBgdGhpc2AgYmluZGluZyBvZiBgdGhpc0FyZ2AgYW5kIHRoZSBhcmd1bWVudHMgb2YgYGFyZ3NgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBpbnZva2UuXG4gKiBAcGFyYW0geyp9IHRoaXNBcmcgVGhlIGB0aGlzYCBiaW5kaW5nIG9mIGBmdW5jYC5cbiAqIEBwYXJhbSB7QXJyYXl9IGFyZ3MgVGhlIGFyZ3VtZW50cyB0byBpbnZva2UgYGZ1bmNgIHdpdGguXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcmVzdWx0IG9mIGBmdW5jYC5cbiAqL1xuZnVuY3Rpb24gYXBwbHkoZnVuYywgdGhpc0FyZywgYXJncykge1xuICBzd2l0Y2ggKGFyZ3MubGVuZ3RoKSB7XG4gICAgY2FzZSAwOiByZXR1cm4gZnVuYy5jYWxsKHRoaXNBcmcpO1xuICAgIGNhc2UgMTogcmV0dXJuIGZ1bmMuY2FsbCh0aGlzQXJnLCBhcmdzWzBdKTtcbiAgICBjYXNlIDI6IHJldHVybiBmdW5jLmNhbGwodGhpc0FyZywgYXJnc1swXSwgYXJnc1sxXSk7XG4gICAgY2FzZSAzOiByZXR1cm4gZnVuYy5jYWxsKHRoaXNBcmcsIGFyZ3NbMF0sIGFyZ3NbMV0sIGFyZ3NbMl0pO1xuICB9XG4gIHJldHVybiBmdW5jLmFwcGx5KHRoaXNBcmcsIGFyZ3MpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFwcGx5O1xuIiwgInZhciBhcHBseSA9IHJlcXVpcmUoJy4vX2FwcGx5Jyk7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIGZvciB0aG9zZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgb3RoZXIgYGxvZGFzaGAgbWV0aG9kcy4gKi9cbnZhciBuYXRpdmVNYXggPSBNYXRoLm1heDtcblxuLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VSZXN0YCB3aGljaCB0cmFuc2Zvcm1zIHRoZSByZXN0IGFycmF5LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBhcHBseSBhIHJlc3QgcGFyYW1ldGVyIHRvLlxuICogQHBhcmFtIHtudW1iZXJ9IFtzdGFydD1mdW5jLmxlbmd0aC0xXSBUaGUgc3RhcnQgcG9zaXRpb24gb2YgdGhlIHJlc3QgcGFyYW1ldGVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gdHJhbnNmb3JtIFRoZSByZXN0IGFycmF5IHRyYW5zZm9ybS5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBvdmVyUmVzdChmdW5jLCBzdGFydCwgdHJhbnNmb3JtKSB7XG4gIHN0YXJ0ID0gbmF0aXZlTWF4KHN0YXJ0ID09PSB1bmRlZmluZWQgPyAoZnVuYy5sZW5ndGggLSAxKSA6IHN0YXJ0LCAwKTtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHZhciBhcmdzID0gYXJndW1lbnRzLFxuICAgICAgICBpbmRleCA9IC0xLFxuICAgICAgICBsZW5ndGggPSBuYXRpdmVNYXgoYXJncy5sZW5ndGggLSBzdGFydCwgMCksXG4gICAgICAgIGFycmF5ID0gQXJyYXkobGVuZ3RoKTtcblxuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBhcnJheVtpbmRleF0gPSBhcmdzW3N0YXJ0ICsgaW5kZXhdO1xuICAgIH1cbiAgICBpbmRleCA9IC0xO1xuICAgIHZhciBvdGhlckFyZ3MgPSBBcnJheShzdGFydCArIDEpO1xuICAgIHdoaWxlICgrK2luZGV4IDwgc3RhcnQpIHtcbiAgICAgIG90aGVyQXJnc1tpbmRleF0gPSBhcmdzW2luZGV4XTtcbiAgICB9XG4gICAgb3RoZXJBcmdzW3N0YXJ0XSA9IHRyYW5zZm9ybShhcnJheSk7XG4gICAgcmV0dXJuIGFwcGx5KGZ1bmMsIHRoaXMsIG90aGVyQXJncyk7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gb3ZlclJlc3Q7XG4iLCAiLyoqXG4gKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIGB2YWx1ZWAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAyLjQuMFxuICogQGNhdGVnb3J5IFV0aWxcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHJldHVybiBmcm9tIHRoZSBuZXcgZnVuY3Rpb24uXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBjb25zdGFudCBmdW5jdGlvbi5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdHMgPSBfLnRpbWVzKDIsIF8uY29uc3RhbnQoeyAnYSc6IDEgfSkpO1xuICpcbiAqIGNvbnNvbGUubG9nKG9iamVjdHMpO1xuICogLy8gPT4gW3sgJ2EnOiAxIH0sIHsgJ2EnOiAxIH1dXG4gKlxuICogY29uc29sZS5sb2cob2JqZWN0c1swXSA9PT0gb2JqZWN0c1sxXSk7XG4gKiAvLyA9PiB0cnVlXG4gKi9cbmZ1bmN0aW9uIGNvbnN0YW50KHZhbHVlKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY29uc3RhbnQ7XG4iLCAidmFyIGNvbnN0YW50ID0gcmVxdWlyZSgnLi9jb25zdGFudCcpLFxuICAgIGRlZmluZVByb3BlcnR5ID0gcmVxdWlyZSgnLi9fZGVmaW5lUHJvcGVydHknKSxcbiAgICBpZGVudGl0eSA9IHJlcXVpcmUoJy4vaWRlbnRpdHknKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgc2V0VG9TdHJpbmdgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaG90IGxvb3Agc2hvcnRpbmcuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIG1vZGlmeS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHN0cmluZyBUaGUgYHRvU3RyaW5nYCByZXN1bHQuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgYGZ1bmNgLlxuICovXG52YXIgYmFzZVNldFRvU3RyaW5nID0gIWRlZmluZVByb3BlcnR5ID8gaWRlbnRpdHkgOiBmdW5jdGlvbihmdW5jLCBzdHJpbmcpIHtcbiAgcmV0dXJuIGRlZmluZVByb3BlcnR5KGZ1bmMsICd0b1N0cmluZycsIHtcbiAgICAnY29uZmlndXJhYmxlJzogdHJ1ZSxcbiAgICAnZW51bWVyYWJsZSc6IGZhbHNlLFxuICAgICd2YWx1ZSc6IGNvbnN0YW50KHN0cmluZyksXG4gICAgJ3dyaXRhYmxlJzogdHJ1ZVxuICB9KTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZVNldFRvU3RyaW5nO1xuIiwgIi8qKiBVc2VkIHRvIGRldGVjdCBob3QgZnVuY3Rpb25zIGJ5IG51bWJlciBvZiBjYWxscyB3aXRoaW4gYSBzcGFuIG9mIG1pbGxpc2Vjb25kcy4gKi9cbnZhciBIT1RfQ09VTlQgPSA4MDAsXG4gICAgSE9UX1NQQU4gPSAxNjtcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgZm9yIHRob3NlIHdpdGggdGhlIHNhbWUgbmFtZSBhcyBvdGhlciBgbG9kYXNoYCBtZXRob2RzLiAqL1xudmFyIG5hdGl2ZU5vdyA9IERhdGUubm93O1xuXG4vKipcbiAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0J2xsIHNob3J0IG91dCBhbmQgaW52b2tlIGBpZGVudGl0eWAgaW5zdGVhZFxuICogb2YgYGZ1bmNgIHdoZW4gaXQncyBjYWxsZWQgYEhPVF9DT1VOVGAgb3IgbW9yZSB0aW1lcyBpbiBgSE9UX1NQQU5gXG4gKiBtaWxsaXNlY29uZHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIHJlc3RyaWN0LlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgc2hvcnRhYmxlIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBzaG9ydE91dChmdW5jKSB7XG4gIHZhciBjb3VudCA9IDAsXG4gICAgICBsYXN0Q2FsbGVkID0gMDtcblxuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdmFyIHN0YW1wID0gbmF0aXZlTm93KCksXG4gICAgICAgIHJlbWFpbmluZyA9IEhPVF9TUEFOIC0gKHN0YW1wIC0gbGFzdENhbGxlZCk7XG5cbiAgICBsYXN0Q2FsbGVkID0gc3RhbXA7XG4gICAgaWYgKHJlbWFpbmluZyA+IDApIHtcbiAgICAgIGlmICgrK2NvdW50ID49IEhPVF9DT1VOVCkge1xuICAgICAgICByZXR1cm4gYXJndW1lbnRzWzBdO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb3VudCA9IDA7XG4gICAgfVxuICAgIHJldHVybiBmdW5jLmFwcGx5KHVuZGVmaW5lZCwgYXJndW1lbnRzKTtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzaG9ydE91dDtcbiIsICJ2YXIgYmFzZVNldFRvU3RyaW5nID0gcmVxdWlyZSgnLi9fYmFzZVNldFRvU3RyaW5nJyksXG4gICAgc2hvcnRPdXQgPSByZXF1aXJlKCcuL19zaG9ydE91dCcpO1xuXG4vKipcbiAqIFNldHMgdGhlIGB0b1N0cmluZ2AgbWV0aG9kIG9mIGBmdW5jYCB0byByZXR1cm4gYHN0cmluZ2AuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIG1vZGlmeS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHN0cmluZyBUaGUgYHRvU3RyaW5nYCByZXN1bHQuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgYGZ1bmNgLlxuICovXG52YXIgc2V0VG9TdHJpbmcgPSBzaG9ydE91dChiYXNlU2V0VG9TdHJpbmcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHNldFRvU3RyaW5nO1xuIiwgInZhciBpZGVudGl0eSA9IHJlcXVpcmUoJy4vaWRlbnRpdHknKSxcbiAgICBvdmVyUmVzdCA9IHJlcXVpcmUoJy4vX292ZXJSZXN0JyksXG4gICAgc2V0VG9TdHJpbmcgPSByZXF1aXJlKCcuL19zZXRUb1N0cmluZycpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnJlc3RgIHdoaWNoIGRvZXNuJ3QgdmFsaWRhdGUgb3IgY29lcmNlIGFyZ3VtZW50cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gYXBwbHkgYSByZXN0IHBhcmFtZXRlciB0by5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbc3RhcnQ9ZnVuYy5sZW5ndGgtMV0gVGhlIHN0YXJ0IHBvc2l0aW9uIG9mIHRoZSByZXN0IHBhcmFtZXRlci5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBiYXNlUmVzdChmdW5jLCBzdGFydCkge1xuICByZXR1cm4gc2V0VG9TdHJpbmcob3ZlclJlc3QoZnVuYywgc3RhcnQsIGlkZW50aXR5KSwgZnVuYyArICcnKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlUmVzdDtcbiIsICJ2YXIgZXEgPSByZXF1aXJlKCcuL2VxJyksXG4gICAgaXNBcnJheUxpa2UgPSByZXF1aXJlKCcuL2lzQXJyYXlMaWtlJyksXG4gICAgaXNJbmRleCA9IHJlcXVpcmUoJy4vX2lzSW5kZXgnKSxcbiAgICBpc09iamVjdCA9IHJlcXVpcmUoJy4vaXNPYmplY3QnKTtcblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGdpdmVuIGFyZ3VtZW50cyBhcmUgZnJvbSBhbiBpdGVyYXRlZSBjYWxsLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSBwb3RlbnRpYWwgaXRlcmF0ZWUgdmFsdWUgYXJndW1lbnQuXG4gKiBAcGFyYW0geyp9IGluZGV4IFRoZSBwb3RlbnRpYWwgaXRlcmF0ZWUgaW5kZXggb3Iga2V5IGFyZ3VtZW50LlxuICogQHBhcmFtIHsqfSBvYmplY3QgVGhlIHBvdGVudGlhbCBpdGVyYXRlZSBvYmplY3QgYXJndW1lbnQuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGFyZ3VtZW50cyBhcmUgZnJvbSBhbiBpdGVyYXRlZSBjYWxsLFxuICogIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNJdGVyYXRlZUNhbGwodmFsdWUsIGluZGV4LCBvYmplY3QpIHtcbiAgaWYgKCFpc09iamVjdChvYmplY3QpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHZhciB0eXBlID0gdHlwZW9mIGluZGV4O1xuICBpZiAodHlwZSA9PSAnbnVtYmVyJ1xuICAgICAgICA/IChpc0FycmF5TGlrZShvYmplY3QpICYmIGlzSW5kZXgoaW5kZXgsIG9iamVjdC5sZW5ndGgpKVxuICAgICAgICA6ICh0eXBlID09ICdzdHJpbmcnICYmIGluZGV4IGluIG9iamVjdClcbiAgICAgICkge1xuICAgIHJldHVybiBlcShvYmplY3RbaW5kZXhdLCB2YWx1ZSk7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzSXRlcmF0ZWVDYWxsO1xuIiwgInZhciBiYXNlUmVzdCA9IHJlcXVpcmUoJy4vX2Jhc2VSZXN0JyksXG4gICAgaXNJdGVyYXRlZUNhbGwgPSByZXF1aXJlKCcuL19pc0l0ZXJhdGVlQ2FsbCcpO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBmdW5jdGlvbiBsaWtlIGBfLmFzc2lnbmAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGFzc2lnbmVyIFRoZSBmdW5jdGlvbiB0byBhc3NpZ24gdmFsdWVzLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgYXNzaWduZXIgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUFzc2lnbmVyKGFzc2lnbmVyKSB7XG4gIHJldHVybiBiYXNlUmVzdChmdW5jdGlvbihvYmplY3QsIHNvdXJjZXMpIHtcbiAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgbGVuZ3RoID0gc291cmNlcy5sZW5ndGgsXG4gICAgICAgIGN1c3RvbWl6ZXIgPSBsZW5ndGggPiAxID8gc291cmNlc1tsZW5ndGggLSAxXSA6IHVuZGVmaW5lZCxcbiAgICAgICAgZ3VhcmQgPSBsZW5ndGggPiAyID8gc291cmNlc1syXSA6IHVuZGVmaW5lZDtcblxuICAgIGN1c3RvbWl6ZXIgPSAoYXNzaWduZXIubGVuZ3RoID4gMyAmJiB0eXBlb2YgY3VzdG9taXplciA9PSAnZnVuY3Rpb24nKVxuICAgICAgPyAobGVuZ3RoLS0sIGN1c3RvbWl6ZXIpXG4gICAgICA6IHVuZGVmaW5lZDtcblxuICAgIGlmIChndWFyZCAmJiBpc0l0ZXJhdGVlQ2FsbChzb3VyY2VzWzBdLCBzb3VyY2VzWzFdLCBndWFyZCkpIHtcbiAgICAgIGN1c3RvbWl6ZXIgPSBsZW5ndGggPCAzID8gdW5kZWZpbmVkIDogY3VzdG9taXplcjtcbiAgICAgIGxlbmd0aCA9IDE7XG4gICAgfVxuICAgIG9iamVjdCA9IE9iamVjdChvYmplY3QpO1xuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICB2YXIgc291cmNlID0gc291cmNlc1tpbmRleF07XG4gICAgICBpZiAoc291cmNlKSB7XG4gICAgICAgIGFzc2lnbmVyKG9iamVjdCwgc291cmNlLCBpbmRleCwgY3VzdG9taXplcik7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBvYmplY3Q7XG4gIH0pO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNyZWF0ZUFzc2lnbmVyO1xuIiwgInZhciBiYXNlTWVyZ2UgPSByZXF1aXJlKCcuL19iYXNlTWVyZ2UnKSxcbiAgICBjcmVhdGVBc3NpZ25lciA9IHJlcXVpcmUoJy4vX2NyZWF0ZUFzc2lnbmVyJyk7XG5cbi8qKlxuICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5tZXJnZWAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgY3VzdG9taXplcmAgd2hpY2hcbiAqIGlzIGludm9rZWQgdG8gcHJvZHVjZSB0aGUgbWVyZ2VkIHZhbHVlcyBvZiB0aGUgZGVzdGluYXRpb24gYW5kIHNvdXJjZVxuICogcHJvcGVydGllcy4gSWYgYGN1c3RvbWl6ZXJgIHJldHVybnMgYHVuZGVmaW5lZGAsIG1lcmdpbmcgaXMgaGFuZGxlZCBieSB0aGVcbiAqIG1ldGhvZCBpbnN0ZWFkLiBUaGUgYGN1c3RvbWl6ZXJgIGlzIGludm9rZWQgd2l0aCBzaXggYXJndW1lbnRzOlxuICogKG9ialZhbHVlLCBzcmNWYWx1ZSwga2V5LCBvYmplY3QsIHNvdXJjZSwgc3RhY2spLlxuICpcbiAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBtdXRhdGVzIGBvYmplY3RgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBPYmplY3RcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIGRlc3RpbmF0aW9uIG9iamVjdC5cbiAqIEBwYXJhbSB7Li4uT2JqZWN0fSBzb3VyY2VzIFRoZSBzb3VyY2Ugb2JqZWN0cy5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGN1c3RvbWl6ZXIgVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBhc3NpZ25lZCB2YWx1ZXMuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBmdW5jdGlvbiBjdXN0b21pemVyKG9ialZhbHVlLCBzcmNWYWx1ZSkge1xuICogICBpZiAoXy5pc0FycmF5KG9ialZhbHVlKSkge1xuICogICAgIHJldHVybiBvYmpWYWx1ZS5jb25jYXQoc3JjVmFsdWUpO1xuICogICB9XG4gKiB9XG4gKlxuICogdmFyIG9iamVjdCA9IHsgJ2EnOiBbMV0sICdiJzogWzJdIH07XG4gKiB2YXIgb3RoZXIgPSB7ICdhJzogWzNdLCAnYic6IFs0XSB9O1xuICpcbiAqIF8ubWVyZ2VXaXRoKG9iamVjdCwgb3RoZXIsIGN1c3RvbWl6ZXIpO1xuICogLy8gPT4geyAnYSc6IFsxLCAzXSwgJ2InOiBbMiwgNF0gfVxuICovXG52YXIgbWVyZ2VXaXRoID0gY3JlYXRlQXNzaWduZXIoZnVuY3Rpb24ob2JqZWN0LCBzb3VyY2UsIHNyY0luZGV4LCBjdXN0b21pemVyKSB7XG4gIGJhc2VNZXJnZShvYmplY3QsIHNvdXJjZSwgc3JjSW5kZXgsIGN1c3RvbWl6ZXIpO1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gbWVyZ2VXaXRoO1xuIiwgIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy50b01lcmdlZCA9IGV4cG9ydHMubWVyZ2VJbnRvVGFyZ2V0ID0gZXhwb3J0cy5pc1BhdGhMaWtlID0gZXhwb3J0cy50cnlQYXJzZU9wdGlvbmFsQm9vbGVhbiA9IGV4cG9ydHMucGFyc2VPcHRpb25hbEJvb2xlYW4gPSBleHBvcnRzLnBhcnNlQm9vbGVhbiA9IGV4cG9ydHMucmVwbGFjZUVudlZhcmlhYmxlcyA9IGV4cG9ydHMuYnVpbGRJZ25vcmVQYXR0ZXJuID0gZXhwb3J0cy5zb3J0TWFwID0gZXhwb3J0cy5keW5hbWljUmVxdWlyZSA9IGV4cG9ydHMuQ2FjaGluZ1N0cmF0ZWd5ID0gZXhwb3J0cy5EZWZhdWx0U3RyZWFtID0gZXhwb3J0cy5Bc3luY0FjdGlvbnMgPSBleHBvcnRzLm1ha2VEZWZlcnJlZCA9IGV4cG9ydHMuQnVmZmVyU3RyZWFtID0gZXhwb3J0cy5idWZmZXJTdHJlYW0gPSBleHBvcnRzLnByZXR0aWZ5U3luY0Vycm9ycyA9IGV4cG9ydHMucHJldHRpZnlBc3luY0Vycm9ycyA9IGV4cG9ydHMucmVsZWFzZUFmdGVyVXNlQXN5bmMgPSBleHBvcnRzLmdldE1hcFdpdGhEZWZhdWx0ID0gZXhwb3J0cy5nZXRTZXRXaXRoRGVmYXVsdCA9IGV4cG9ydHMuZ2V0QXJyYXlXaXRoRGVmYXVsdCA9IGV4cG9ydHMuZ2V0RmFjdG9yeVdpdGhEZWZhdWx0ID0gZXhwb3J0cy5jb252ZXJ0TWFwc1RvSW5kZXhhYmxlT2JqZWN0cyA9IGV4cG9ydHMuYWxsU2V0dGxlZFNhZmUgPSBleHBvcnRzLmlzSW5kZXhhYmxlT2JqZWN0ID0gZXhwb3J0cy5tYXBBbmRGaW5kID0gZXhwb3J0cy5tYXBBbmRGaWx0ZXIgPSBleHBvcnRzLnZhbGlkYXRlRW51bSA9IGV4cG9ydHMuYXNzZXJ0TmV2ZXIgPSBleHBvcnRzLm92ZXJyaWRlVHlwZSA9IGV4cG9ydHMuZXNjYXBlUmVnRXhwID0gZXhwb3J0cy5pc1RhZ2dlZFlhcm5WZXJzaW9uID0gdm9pZCAwO1xuY29uc3QgdHNsaWJfMSA9IHJlcXVpcmUoXCJ0c2xpYlwiKTtcbmNvbnN0IGZzbGliXzEgPSByZXF1aXJlKFwiQHlhcm5wa2cvZnNsaWJcIik7XG5jb25zdCBjbGlwYW5pb25fMSA9IHJlcXVpcmUoXCJjbGlwYW5pb25cIik7XG5jb25zdCBpc0VxdWFsXzEgPSB0c2xpYl8xLl9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwibG9kYXNoL2lzRXF1YWxcIikpO1xuY29uc3QgbWVyZ2VXaXRoXzEgPSB0c2xpYl8xLl9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwibG9kYXNoL21lcmdlV2l0aFwiKSk7XG5jb25zdCBtaWNyb21hdGNoXzEgPSB0c2xpYl8xLl9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwibWljcm9tYXRjaFwiKSk7XG5jb25zdCBwX2xpbWl0XzEgPSB0c2xpYl8xLl9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwicC1saW1pdFwiKSk7XG5jb25zdCBzZW12ZXJfMSA9IHRzbGliXzEuX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJzZW12ZXJcIikpO1xuY29uc3Qgc3RyZWFtXzEgPSByZXF1aXJlKFwic3RyZWFtXCIpO1xuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZnVuY3Rpb24gaXNUYWdnZWRZYXJuVmVyc2lvbih2ZXJzaW9uKSB7XG4gICAgcmV0dXJuICEhKHNlbXZlcl8xLmRlZmF1bHQudmFsaWQodmVyc2lvbikgJiYgdmVyc2lvbi5tYXRjaCgvXlteLV0rKC1yY1xcLlswLTldKyk/JC8pKTtcbn1cbmV4cG9ydHMuaXNUYWdnZWRZYXJuVmVyc2lvbiA9IGlzVGFnZ2VkWWFyblZlcnNpb247XG5mdW5jdGlvbiBlc2NhcGVSZWdFeHAoc3RyKSB7XG4gICAgcmV0dXJuIHN0ci5yZXBsYWNlKC9bLiorP14ke30oKXxbXFxdXFxcXF0vZywgYFxcXFwkJmApO1xufVxuZXhwb3J0cy5lc2NhcGVSZWdFeHAgPSBlc2NhcGVSZWdFeHA7XG5mdW5jdGlvbiBvdmVycmlkZVR5cGUodmFsKSB7XG59XG5leHBvcnRzLm92ZXJyaWRlVHlwZSA9IG92ZXJyaWRlVHlwZTtcbmZ1bmN0aW9uIGFzc2VydE5ldmVyKGFyZykge1xuICAgIHRocm93IG5ldyBFcnJvcihgQXNzZXJ0aW9uIGZhaWxlZDogVW5leHBlY3RlZCBvYmplY3QgJyR7YXJnfSdgKTtcbn1cbmV4cG9ydHMuYXNzZXJ0TmV2ZXIgPSBhc3NlcnROZXZlcjtcbmZ1bmN0aW9uIHZhbGlkYXRlRW51bShkZWYsIHZhbHVlKSB7XG4gICAgY29uc3QgdmFsdWVzID0gT2JqZWN0LnZhbHVlcyhkZWYpO1xuICAgIGlmICghdmFsdWVzLmluY2x1ZGVzKHZhbHVlKSlcbiAgICAgICAgdGhyb3cgbmV3IGNsaXBhbmlvbl8xLlVzYWdlRXJyb3IoYEludmFsaWQgdmFsdWUgZm9yIGVudW1lcmF0aW9uOiAke0pTT04uc3RyaW5naWZ5KHZhbHVlKX0gKGV4cGVjdGVkIG9uZSBvZiAke3ZhbHVlcy5tYXAodmFsdWUgPT4gSlNPTi5zdHJpbmdpZnkodmFsdWUpKS5qb2luKGAsIGApfSlgKTtcbiAgICByZXR1cm4gdmFsdWU7XG59XG5leHBvcnRzLnZhbGlkYXRlRW51bSA9IHZhbGlkYXRlRW51bTtcbmZ1bmN0aW9uIG1hcEFuZEZpbHRlcihpdGVyYWJsZSwgY2IpIHtcbiAgICBjb25zdCBvdXRwdXQgPSBbXTtcbiAgICBmb3IgKGNvbnN0IHZhbHVlIG9mIGl0ZXJhYmxlKSB7XG4gICAgICAgIGNvbnN0IG91dCA9IGNiKHZhbHVlKTtcbiAgICAgICAgaWYgKG91dCAhPT0gbWFwQW5kRmlsdGVyU2tpcCkge1xuICAgICAgICAgICAgb3V0cHV0LnB1c2gob3V0KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gb3V0cHV0O1xufVxuZXhwb3J0cy5tYXBBbmRGaWx0ZXIgPSBtYXBBbmRGaWx0ZXI7XG5jb25zdCBtYXBBbmRGaWx0ZXJTa2lwID0gU3ltYm9sKCk7XG5tYXBBbmRGaWx0ZXIuc2tpcCA9IG1hcEFuZEZpbHRlclNraXA7XG5mdW5jdGlvbiBtYXBBbmRGaW5kKGl0ZXJhYmxlLCBjYikge1xuICAgIGZvciAoY29uc3QgdmFsdWUgb2YgaXRlcmFibGUpIHtcbiAgICAgICAgY29uc3Qgb3V0ID0gY2IodmFsdWUpO1xuICAgICAgICBpZiAob3V0ICE9PSBtYXBBbmRGaW5kU2tpcCkge1xuICAgICAgICAgICAgcmV0dXJuIG91dDtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xufVxuZXhwb3J0cy5tYXBBbmRGaW5kID0gbWFwQW5kRmluZDtcbmNvbnN0IG1hcEFuZEZpbmRTa2lwID0gU3ltYm9sKCk7XG5tYXBBbmRGaW5kLnNraXAgPSBtYXBBbmRGaW5kU2tpcDtcbmZ1bmN0aW9uIGlzSW5kZXhhYmxlT2JqZWN0KHZhbHVlKSB7XG4gICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gYG9iamVjdGAgJiYgdmFsdWUgIT09IG51bGw7XG59XG5leHBvcnRzLmlzSW5kZXhhYmxlT2JqZWN0ID0gaXNJbmRleGFibGVPYmplY3Q7XG5hc3luYyBmdW5jdGlvbiBhbGxTZXR0bGVkU2FmZShwcm9taXNlcykge1xuICAgIGNvbnN0IHJlc3VsdHMgPSBhd2FpdCBQcm9taXNlLmFsbFNldHRsZWQocHJvbWlzZXMpO1xuICAgIGNvbnN0IHZhbHVlcyA9IFtdO1xuICAgIGZvciAoY29uc3QgcmVzdWx0IG9mIHJlc3VsdHMpIHtcbiAgICAgICAgaWYgKHJlc3VsdC5zdGF0dXMgPT09IGByZWplY3RlZGApIHtcbiAgICAgICAgICAgIHRocm93IHJlc3VsdC5yZWFzb247XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB2YWx1ZXMucHVzaChyZXN1bHQudmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZXM7XG59XG5leHBvcnRzLmFsbFNldHRsZWRTYWZlID0gYWxsU2V0dGxlZFNhZmU7XG4vKipcbiAqIENvbnZlcnRzIE1hcHMgdG8gaW5kZXhhYmxlIG9iamVjdHMgcmVjdXJzaXZlbHkuXG4gKi9cbmZ1bmN0aW9uIGNvbnZlcnRNYXBzVG9JbmRleGFibGVPYmplY3RzKGFyZykge1xuICAgIGlmIChhcmcgaW5zdGFuY2VvZiBNYXApXG4gICAgICAgIGFyZyA9IE9iamVjdC5mcm9tRW50cmllcyhhcmcpO1xuICAgIGlmIChpc0luZGV4YWJsZU9iamVjdChhcmcpKSB7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKGFyZykpIHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gYXJnW2tleV07XG4gICAgICAgICAgICBpZiAoaXNJbmRleGFibGVPYmplY3QodmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvcjogQXBwYXJlbnRseSBub3RoaW5nIGluIHRoaXMgd29ybGQgY2FuIGJlIHVzZWQgdG8gaW5kZXggdHlwZSAnVCAmIHsgW2tleTogc3RyaW5nXTogdW5rbm93bjsgfSdcbiAgICAgICAgICAgICAgICBhcmdba2V5XSA9IGNvbnZlcnRNYXBzVG9JbmRleGFibGVPYmplY3RzKHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gYXJnO1xufVxuZXhwb3J0cy5jb252ZXJ0TWFwc1RvSW5kZXhhYmxlT2JqZWN0cyA9IGNvbnZlcnRNYXBzVG9JbmRleGFibGVPYmplY3RzO1xuZnVuY3Rpb24gZ2V0RmFjdG9yeVdpdGhEZWZhdWx0KG1hcCwga2V5LCBmYWN0b3J5KSB7XG4gICAgbGV0IHZhbHVlID0gbWFwLmdldChrZXkpO1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IGB1bmRlZmluZWRgKVxuICAgICAgICBtYXAuc2V0KGtleSwgdmFsdWUgPSBmYWN0b3J5KCkpO1xuICAgIHJldHVybiB2YWx1ZTtcbn1cbmV4cG9ydHMuZ2V0RmFjdG9yeVdpdGhEZWZhdWx0ID0gZ2V0RmFjdG9yeVdpdGhEZWZhdWx0O1xuZnVuY3Rpb24gZ2V0QXJyYXlXaXRoRGVmYXVsdChtYXAsIGtleSkge1xuICAgIGxldCB2YWx1ZSA9IG1hcC5nZXQoa2V5KTtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSBgdW5kZWZpbmVkYClcbiAgICAgICAgbWFwLnNldChrZXksIHZhbHVlID0gW10pO1xuICAgIHJldHVybiB2YWx1ZTtcbn1cbmV4cG9ydHMuZ2V0QXJyYXlXaXRoRGVmYXVsdCA9IGdldEFycmF5V2l0aERlZmF1bHQ7XG5mdW5jdGlvbiBnZXRTZXRXaXRoRGVmYXVsdChtYXAsIGtleSkge1xuICAgIGxldCB2YWx1ZSA9IG1hcC5nZXQoa2V5KTtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSBgdW5kZWZpbmVkYClcbiAgICAgICAgbWFwLnNldChrZXksIHZhbHVlID0gbmV3IFNldCgpKTtcbiAgICByZXR1cm4gdmFsdWU7XG59XG5leHBvcnRzLmdldFNldFdpdGhEZWZhdWx0ID0gZ2V0U2V0V2l0aERlZmF1bHQ7XG5mdW5jdGlvbiBnZXRNYXBXaXRoRGVmYXVsdChtYXAsIGtleSkge1xuICAgIGxldCB2YWx1ZSA9IG1hcC5nZXQoa2V5KTtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSBgdW5kZWZpbmVkYClcbiAgICAgICAgbWFwLnNldChrZXksIHZhbHVlID0gbmV3IE1hcCgpKTtcbiAgICByZXR1cm4gdmFsdWU7XG59XG5leHBvcnRzLmdldE1hcFdpdGhEZWZhdWx0ID0gZ2V0TWFwV2l0aERlZmF1bHQ7XG4vLyBFeGVjdXRlcyBhIGNodW5rIG9mIGNvZGUgYW5kIGNhbGxzIGEgY2xlYW51cCBmdW5jdGlvbiBvbmNlIGl0IHJldHVybnMgKGV2ZW5cbi8vIGlmIGl0IHRocm93cyBhbiBleGNlcHRpb24pXG5hc3luYyBmdW5jdGlvbiByZWxlYXNlQWZ0ZXJVc2VBc3luYyhmbiwgY2xlYW51cCkge1xuICAgIGlmIChjbGVhbnVwID09IG51bGwpXG4gICAgICAgIHJldHVybiBhd2FpdCBmbigpO1xuICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBhd2FpdCBmbigpO1xuICAgIH1cbiAgICBmaW5hbGx5IHtcbiAgICAgICAgYXdhaXQgY2xlYW51cCgpO1xuICAgIH1cbn1cbmV4cG9ydHMucmVsZWFzZUFmdGVyVXNlQXN5bmMgPSByZWxlYXNlQWZ0ZXJVc2VBc3luYztcbi8vIEV4ZWN1dGVzIGEgY2h1bmsgb2YgY29kZSBidXQgc2xpZ2h0bHkgbW9kaWZ5IGl0cyBleGNlcHRpb24gbWVzc2FnZSBpZiBpdFxuLy8gdGhyb3dzIHNvbWV0aGluZ1xuYXN5bmMgZnVuY3Rpb24gcHJldHRpZnlBc3luY0Vycm9ycyhmbiwgdXBkYXRlKSB7XG4gICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IGZuKCk7XG4gICAgfVxuICAgIGNhdGNoIChlcnJvcikge1xuICAgICAgICBlcnJvci5tZXNzYWdlID0gdXBkYXRlKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG59XG5leHBvcnRzLnByZXR0aWZ5QXN5bmNFcnJvcnMgPSBwcmV0dGlmeUFzeW5jRXJyb3JzO1xuLy8gU2FtZSB0aGluZyBidXQgc3luY2hyb25vdXNcbmZ1bmN0aW9uIHByZXR0aWZ5U3luY0Vycm9ycyhmbiwgdXBkYXRlKSB7XG4gICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIGZuKCk7XG4gICAgfVxuICAgIGNhdGNoIChlcnJvcikge1xuICAgICAgICBlcnJvci5tZXNzYWdlID0gdXBkYXRlKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG59XG5leHBvcnRzLnByZXR0aWZ5U3luY0Vycm9ycyA9IHByZXR0aWZ5U3luY0Vycm9ycztcbi8vIENvbnZlcnRzIGEgTm9kZSBzdHJlYW0gaW50byBhIEJ1ZmZlciBpbnN0YW5jZVxuYXN5bmMgZnVuY3Rpb24gYnVmZmVyU3RyZWFtKHN0cmVhbSkge1xuICAgIHJldHVybiBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIGNvbnN0IGNodW5rcyA9IFtdO1xuICAgICAgICBzdHJlYW0ub24oYGVycm9yYCwgZXJyb3IgPT4ge1xuICAgICAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHN0cmVhbS5vbihgZGF0YWAsIGNodW5rID0+IHtcbiAgICAgICAgICAgIGNodW5rcy5wdXNoKGNodW5rKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHN0cmVhbS5vbihgZW5kYCwgKCkgPT4ge1xuICAgICAgICAgICAgcmVzb2x2ZShCdWZmZXIuY29uY2F0KGNodW5rcykpO1xuICAgICAgICB9KTtcbiAgICB9KTtcbn1cbmV4cG9ydHMuYnVmZmVyU3RyZWFtID0gYnVmZmVyU3RyZWFtO1xuLy8gQSBzdHJlYW0gaW1wbGVtZW50YXRpb24gdGhhdCBidWZmZXJzIGEgc3RyZWFtIHRvIHNlbmQgaXQgYWxsIGF0IG9uY2VcbmNsYXNzIEJ1ZmZlclN0cmVhbSBleHRlbmRzIHN0cmVhbV8xLlRyYW5zZm9ybSB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKC4uLmFyZ3VtZW50cyk7XG4gICAgICAgIHRoaXMuY2h1bmtzID0gW107XG4gICAgfVxuICAgIF90cmFuc2Zvcm0oY2h1bmssIGVuY29kaW5nLCBjYikge1xuICAgICAgICBpZiAoZW5jb2RpbmcgIT09IGBidWZmZXJgIHx8ICFCdWZmZXIuaXNCdWZmZXIoY2h1bmspKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBBc3NlcnRpb24gZmFpbGVkOiBCdWZmZXJTdHJlYW0gb25seSBhY2NlcHQgYnVmZmVyc2ApO1xuICAgICAgICB0aGlzLmNodW5rcy5wdXNoKGNodW5rKTtcbiAgICAgICAgY2IobnVsbCwgbnVsbCk7XG4gICAgfVxuICAgIF9mbHVzaChjYikge1xuICAgICAgICBjYihudWxsLCBCdWZmZXIuY29uY2F0KHRoaXMuY2h1bmtzKSk7XG4gICAgfVxufVxuZXhwb3J0cy5CdWZmZXJTdHJlYW0gPSBCdWZmZXJTdHJlYW07XG5mdW5jdGlvbiBtYWtlRGVmZXJyZWQoKSB7XG4gICAgbGV0IHJlc29sdmU7XG4gICAgbGV0IHJlamVjdDtcbiAgICBjb25zdCBwcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmVGbiwgcmVqZWN0Rm4pID0+IHtcbiAgICAgICAgcmVzb2x2ZSA9IHJlc29sdmVGbjtcbiAgICAgICAgcmVqZWN0ID0gcmVqZWN0Rm47XG4gICAgfSk7XG4gICAgcmV0dXJuIHsgcHJvbWlzZSwgcmVzb2x2ZTogcmVzb2x2ZSwgcmVqZWN0OiByZWplY3QgfTtcbn1cbmV4cG9ydHMubWFrZURlZmVycmVkID0gbWFrZURlZmVycmVkO1xuY2xhc3MgQXN5bmNBY3Rpb25zIHtcbiAgICBjb25zdHJ1Y3RvcihsaW1pdCkge1xuICAgICAgICB0aGlzLmRlZmVycmVkID0gbmV3IE1hcCgpO1xuICAgICAgICB0aGlzLnByb21pc2VzID0gbmV3IE1hcCgpO1xuICAgICAgICB0aGlzLmxpbWl0ID0gKDAsIHBfbGltaXRfMS5kZWZhdWx0KShsaW1pdCk7XG4gICAgfVxuICAgIHNldChrZXksIGZhY3RvcnkpIHtcbiAgICAgICAgbGV0IGRlZmVycmVkID0gdGhpcy5kZWZlcnJlZC5nZXQoa2V5KTtcbiAgICAgICAgaWYgKHR5cGVvZiBkZWZlcnJlZCA9PT0gYHVuZGVmaW5lZGApXG4gICAgICAgICAgICB0aGlzLmRlZmVycmVkLnNldChrZXksIGRlZmVycmVkID0gbWFrZURlZmVycmVkKCkpO1xuICAgICAgICBjb25zdCBwcm9taXNlID0gdGhpcy5saW1pdCgoKSA9PiBmYWN0b3J5KCkpO1xuICAgICAgICB0aGlzLnByb21pc2VzLnNldChrZXksIHByb21pc2UpO1xuICAgICAgICBwcm9taXNlLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMucHJvbWlzZXMuZ2V0KGtleSkgPT09IHByb21pc2UpIHtcbiAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIGVyciA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5wcm9taXNlcy5nZXQoa2V5KSA9PT0gcHJvbWlzZSkge1xuICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlamVjdChlcnIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGRlZmVycmVkLnByb21pc2U7XG4gICAgfVxuICAgIHJlZHVjZShrZXksIGZhY3RvcnkpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBjb25zdCBwcm9taXNlID0gKF9hID0gdGhpcy5wcm9taXNlcy5nZXQoa2V5KSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgICAgIHRoaXMuc2V0KGtleSwgKCkgPT4gZmFjdG9yeShwcm9taXNlKSk7XG4gICAgfVxuICAgIGFzeW5jIHdhaXQoKSB7XG4gICAgICAgIGF3YWl0IFByb21pc2UuYWxsKHRoaXMucHJvbWlzZXMudmFsdWVzKCkpO1xuICAgIH1cbn1cbmV4cG9ydHMuQXN5bmNBY3Rpb25zID0gQXN5bmNBY3Rpb25zO1xuLy8gQSBzdHJlYW0gaW1wbGVtZW50YXRpb24gdGhhdCBwcmludHMgYSBtZXNzYWdlIGlmIG5vdGhpbmcgd2FzIG91dHB1dFxuY2xhc3MgRGVmYXVsdFN0cmVhbSBleHRlbmRzIHN0cmVhbV8xLlRyYW5zZm9ybSB7XG4gICAgY29uc3RydWN0b3IoaWZFbXB0eSA9IEJ1ZmZlci5hbGxvYygwKSkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLmFjdGl2ZSA9IHRydWU7XG4gICAgICAgIHRoaXMuaWZFbXB0eSA9IGlmRW1wdHk7XG4gICAgfVxuICAgIF90cmFuc2Zvcm0oY2h1bmssIGVuY29kaW5nLCBjYikge1xuICAgICAgICBpZiAoZW5jb2RpbmcgIT09IGBidWZmZXJgIHx8ICFCdWZmZXIuaXNCdWZmZXIoY2h1bmspKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBBc3NlcnRpb24gZmFpbGVkOiBEZWZhdWx0U3RyZWFtIG9ubHkgYWNjZXB0IGJ1ZmZlcnNgKTtcbiAgICAgICAgdGhpcy5hY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgY2IobnVsbCwgY2h1bmspO1xuICAgIH1cbiAgICBfZmx1c2goY2IpIHtcbiAgICAgICAgaWYgKHRoaXMuYWN0aXZlICYmIHRoaXMuaWZFbXB0eS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBjYihudWxsLCB0aGlzLmlmRW1wdHkpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY2IobnVsbCk7XG4gICAgICAgIH1cbiAgICB9XG59XG5leHBvcnRzLkRlZmF1bHRTdHJlYW0gPSBEZWZhdWx0U3RyZWFtO1xuLy8gV2VicGFjayBoYXMgdGhpcyBhbm5veWluZyB0ZW5kZW5jeSB0byByZXBsYWNlIGR5bmFtaWMgcmVxdWlyZXMgYnkgYSBzdHViXG4vLyBjb2RlIHRoYXQgc2ltcGx5IHRocm93cyB3aGVuIGNhbGxlZC4gSXQncyBhbGwgZmluZSBhbmQgZGFuZHkgaW4gdGhlIGNvbnRleHRcbi8vIG9mIGEgd2ViIGFwcGxpY2F0aW9uLCBidXQgaXMgcXVpdGUgYW5ub3lpbmcgd2hlbiB3b3JraW5nIHdpdGggTm9kZSBwcm9qZWN0cyFcbmNvbnN0IHJlYWxSZXF1aXJlID0gZXZhbChgcmVxdWlyZWApO1xuZnVuY3Rpb24gZHluYW1pY1JlcXVpcmVOb2RlKHBhdGgpIHtcbiAgICByZXR1cm4gcmVhbFJlcXVpcmUoZnNsaWJfMS5ucGF0aC5mcm9tUG9ydGFibGVQYXRoKHBhdGgpKTtcbn1cbi8qKlxuICogUmVxdWlyZXMgYSBtb2R1bGUgd2l0aG91dCB1c2luZyB0aGUgbW9kdWxlIGNhY2hlXG4gKi9cbmZ1bmN0aW9uIGR5bmFtaWNSZXF1aXJlTm9DYWNoZShwYXRoKSB7XG4gICAgY29uc3QgcGh5c2ljYWxQYXRoID0gZnNsaWJfMS5ucGF0aC5mcm9tUG9ydGFibGVQYXRoKHBhdGgpO1xuICAgIGNvbnN0IGN1cnJlbnRDYWNoZUVudHJ5ID0gcmVhbFJlcXVpcmUuY2FjaGVbcGh5c2ljYWxQYXRoXTtcbiAgICBkZWxldGUgcmVhbFJlcXVpcmUuY2FjaGVbcGh5c2ljYWxQYXRoXTtcbiAgICBsZXQgcmVzdWx0O1xuICAgIHRyeSB7XG4gICAgICAgIHJlc3VsdCA9IGR5bmFtaWNSZXF1aXJlTm9kZShwaHlzaWNhbFBhdGgpO1xuICAgICAgICBjb25zdCBmcmVzaENhY2hlRW50cnkgPSByZWFsUmVxdWlyZS5jYWNoZVtwaHlzaWNhbFBhdGhdO1xuICAgICAgICBjb25zdCBkeW5hbWljTW9kdWxlID0gZXZhbChgbW9kdWxlYCk7XG4gICAgICAgIGNvbnN0IGZyZXNoQ2FjaGVJbmRleCA9IGR5bmFtaWNNb2R1bGUuY2hpbGRyZW4uaW5kZXhPZihmcmVzaENhY2hlRW50cnkpO1xuICAgICAgICBpZiAoZnJlc2hDYWNoZUluZGV4ICE9PSAtMSkge1xuICAgICAgICAgICAgZHluYW1pY01vZHVsZS5jaGlsZHJlbi5zcGxpY2UoZnJlc2hDYWNoZUluZGV4LCAxKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBmaW5hbGx5IHtcbiAgICAgICAgcmVhbFJlcXVpcmUuY2FjaGVbcGh5c2ljYWxQYXRoXSA9IGN1cnJlbnRDYWNoZUVudHJ5O1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xufVxuY29uc3QgZHluYW1pY1JlcXVpcmVGc1RpbWVDYWNoZSA9IG5ldyBNYXAoKTtcbi8qKlxuICogUmVxdWlyZXMgYSBtb2R1bGUgd2l0aG91dCB1c2luZyB0aGUgY2FjaGUgaWYgaXQgaGFzIGNoYW5nZWQgc2luY2UgdGhlIGxhc3QgdGltZSBpdCB3YXMgbG9hZGVkXG4gKi9cbmZ1bmN0aW9uIGR5bmFtaWNSZXF1aXJlRnNUaW1lKHBhdGgpIHtcbiAgICBjb25zdCBjYWNoZWRJbnN0YW5jZSA9IGR5bmFtaWNSZXF1aXJlRnNUaW1lQ2FjaGUuZ2V0KHBhdGgpO1xuICAgIGNvbnN0IHN0YXQgPSBmc2xpYl8xLnhmcy5zdGF0U3luYyhwYXRoKTtcbiAgICBpZiAoKGNhY2hlZEluc3RhbmNlID09PSBudWxsIHx8IGNhY2hlZEluc3RhbmNlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjYWNoZWRJbnN0YW5jZS5tdGltZSkgPT09IHN0YXQubXRpbWVNcylcbiAgICAgICAgcmV0dXJuIGNhY2hlZEluc3RhbmNlLmluc3RhbmNlO1xuICAgIGNvbnN0IGluc3RhbmNlID0gZHluYW1pY1JlcXVpcmVOb0NhY2hlKHBhdGgpO1xuICAgIGR5bmFtaWNSZXF1aXJlRnNUaW1lQ2FjaGUuc2V0KHBhdGgsIHsgbXRpbWU6IHN0YXQubXRpbWVNcywgaW5zdGFuY2UgfSk7XG4gICAgcmV0dXJuIGluc3RhbmNlO1xufVxudmFyIENhY2hpbmdTdHJhdGVneTtcbihmdW5jdGlvbiAoQ2FjaGluZ1N0cmF0ZWd5KSB7XG4gICAgQ2FjaGluZ1N0cmF0ZWd5W0NhY2hpbmdTdHJhdGVneVtcIk5vQ2FjaGVcIl0gPSAwXSA9IFwiTm9DYWNoZVwiO1xuICAgIENhY2hpbmdTdHJhdGVneVtDYWNoaW5nU3RyYXRlZ3lbXCJGc1RpbWVcIl0gPSAxXSA9IFwiRnNUaW1lXCI7XG4gICAgQ2FjaGluZ1N0cmF0ZWd5W0NhY2hpbmdTdHJhdGVneVtcIk5vZGVcIl0gPSAyXSA9IFwiTm9kZVwiO1xufSkoQ2FjaGluZ1N0cmF0ZWd5ID0gZXhwb3J0cy5DYWNoaW5nU3RyYXRlZ3kgfHwgKGV4cG9ydHMuQ2FjaGluZ1N0cmF0ZWd5ID0ge30pKTtcbmZ1bmN0aW9uIGR5bmFtaWNSZXF1aXJlKHBhdGgsIHsgY2FjaGluZ1N0cmF0ZWd5ID0gQ2FjaGluZ1N0cmF0ZWd5Lk5vZGUgfSA9IHt9KSB7XG4gICAgc3dpdGNoIChjYWNoaW5nU3RyYXRlZ3kpIHtcbiAgICAgICAgY2FzZSBDYWNoaW5nU3RyYXRlZ3kuTm9DYWNoZTpcbiAgICAgICAgICAgIHJldHVybiBkeW5hbWljUmVxdWlyZU5vQ2FjaGUocGF0aCk7XG4gICAgICAgIGNhc2UgQ2FjaGluZ1N0cmF0ZWd5LkZzVGltZTpcbiAgICAgICAgICAgIHJldHVybiBkeW5hbWljUmVxdWlyZUZzVGltZShwYXRoKTtcbiAgICAgICAgY2FzZSBDYWNoaW5nU3RyYXRlZ3kuTm9kZTpcbiAgICAgICAgICAgIHJldHVybiBkeW5hbWljUmVxdWlyZU5vZGUocGF0aCk7XG4gICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5zdXBwb3J0ZWQgY2FjaGluZyBzdHJhdGVneWApO1xuICAgICAgICB9XG4gICAgfVxufVxuZXhwb3J0cy5keW5hbWljUmVxdWlyZSA9IGR5bmFtaWNSZXF1aXJlO1xuLy8gVGhpcyBmdW5jdGlvbiB0cmFuc2Zvcm1zIGFuIGl0ZXJhYmxlIGludG8gYW4gYXJyYXkgYW5kIHNvcnRzIGl0IGFjY29yZGluZyB0b1xuLy8gdGhlIG1hcHBlciBmdW5jdGlvbnMgcHJvdmlkZWQgYXMgcGFyYW1ldGVyLiBUaGUgbWFwcGVycyBhcmUgZXhwZWN0ZWQgdG8gdGFrZVxuLy8gZWFjaCBlbGVtZW50IGZyb20gdGhlIGl0ZXJhYmxlIGFuZCBnZW5lcmF0ZSBhIHN0cmluZyBmcm9tIGl0LCB0aGF0IHdpbGwgdGhlblxuLy8gYmUgdXNlZCB0byBjb21wYXJlIHRoZSBlbnRyaWVzLlxuLy9cbi8vIFVzaW5nIHNvcnRNYXAgaXMgbW9yZSBlZmZpY2llbnQgdGhhbiBraW5kYSByZWltcGxlbWVudGluZyB0aGUgbG9naWMgaW4gYSBzb3J0XG4vLyBwcmVkaWNhdGUgYmVjYXVzZSBzb3J0TWFwIGNhY2hlcyB0aGUgcmVzdWx0IG9mIHRoZSBtYXBwZXJzIGluIHN1Y2ggYSB3YXkgdGhhdFxuLy8gdGhleSBhcmUgZ3VhcmFudGVlZCB0byBiZSBleGVjdXRlZCBleGFjdGx5IG9uY2UgZm9yIGVhY2ggZWxlbWVudC5cbmZ1bmN0aW9uIHNvcnRNYXAodmFsdWVzLCBtYXBwZXJzKSB7XG4gICAgY29uc3QgYXNBcnJheSA9IEFycmF5LmZyb20odmFsdWVzKTtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkobWFwcGVycykpXG4gICAgICAgIG1hcHBlcnMgPSBbbWFwcGVyc107XG4gICAgY29uc3Qgc3RyaW5naWZpZWQgPSBbXTtcbiAgICBmb3IgKGNvbnN0IG1hcHBlciBvZiBtYXBwZXJzKVxuICAgICAgICBzdHJpbmdpZmllZC5wdXNoKGFzQXJyYXkubWFwKHZhbHVlID0+IG1hcHBlcih2YWx1ZSkpKTtcbiAgICBjb25zdCBpbmRpY2VzID0gYXNBcnJheS5tYXAoKF8sIGluZGV4KSA9PiBpbmRleCk7XG4gICAgaW5kaWNlcy5zb3J0KChhLCBiKSA9PiB7XG4gICAgICAgIGZvciAoY29uc3QgbGF5ZXIgb2Ygc3RyaW5naWZpZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbXBhcmlzb24gPSBsYXllclthXSA8IGxheWVyW2JdID8gLTEgOiBsYXllclthXSA+IGxheWVyW2JdID8gKzEgOiAwO1xuICAgICAgICAgICAgaWYgKGNvbXBhcmlzb24gIT09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gY29tcGFyaXNvbjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gMDtcbiAgICB9KTtcbiAgICByZXR1cm4gaW5kaWNlcy5tYXAoaW5kZXggPT4ge1xuICAgICAgICByZXR1cm4gYXNBcnJheVtpbmRleF07XG4gICAgfSk7XG59XG5leHBvcnRzLnNvcnRNYXAgPSBzb3J0TWFwO1xuLyoqXG4gKiBDb21iaW5lcyBhbiBBcnJheSBvZiBnbG9iIHBhdHRlcm5zIGludG8gYSByZWd1bGFyIGV4cHJlc3Npb24uXG4gKlxuICogQHBhcmFtIGlnbm9yZVBhdHRlcm5zIEFuIGFycmF5IG9mIGdsb2IgcGF0dGVybnNcbiAqXG4gKiBAcmV0dXJucyBBIGBzdHJpbmdgIHJlcHJlc2VudGluZyBhIHJlZ3VsYXIgZXhwcmVzc2lvbiBvciBgbnVsbGAgaWYgbm8gZ2xvYiBwYXR0ZXJucyBhcmUgcHJvdmlkZWRcbiAqL1xuZnVuY3Rpb24gYnVpbGRJZ25vcmVQYXR0ZXJuKGlnbm9yZVBhdHRlcm5zKSB7XG4gICAgaWYgKGlnbm9yZVBhdHRlcm5zLmxlbmd0aCA9PT0gMClcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgcmV0dXJuIGlnbm9yZVBhdHRlcm5zLm1hcChwYXR0ZXJuID0+IHtcbiAgICAgICAgcmV0dXJuIGAoJHttaWNyb21hdGNoXzEuZGVmYXVsdC5tYWtlUmUocGF0dGVybiwge1xuICAgICAgICAgICAgd2luZG93czogZmFsc2UsXG4gICAgICAgICAgICBkb3Q6IHRydWUsXG4gICAgICAgIH0pLnNvdXJjZX0pYDtcbiAgICB9KS5qb2luKGB8YCk7XG59XG5leHBvcnRzLmJ1aWxkSWdub3JlUGF0dGVybiA9IGJ1aWxkSWdub3JlUGF0dGVybjtcbmZ1bmN0aW9uIHJlcGxhY2VFbnZWYXJpYWJsZXModmFsdWUsIHsgZW52IH0pIHtcbiAgICBjb25zdCByZWdleCA9IC9cXCR7KD88dmFyaWFibGVOYW1lPltcXGRcXHdfXSspKD88Y29sb24+Oik/KD86LSg/PGZhbGxiYWNrPltefV0qKSk/fS9nO1xuICAgIHJldHVybiB2YWx1ZS5yZXBsYWNlKHJlZ2V4LCAoLi4uYXJncykgPT4ge1xuICAgICAgICBjb25zdCB7IHZhcmlhYmxlTmFtZSwgY29sb24sIGZhbGxiYWNrIH0gPSBhcmdzW2FyZ3MubGVuZ3RoIC0gMV07XG4gICAgICAgIGNvbnN0IHZhcmlhYmxlRXhpc3QgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZW52LCB2YXJpYWJsZU5hbWUpO1xuICAgICAgICBjb25zdCB2YXJpYWJsZVZhbHVlID0gZW52W3ZhcmlhYmxlTmFtZV07XG4gICAgICAgIGlmICh2YXJpYWJsZVZhbHVlKVxuICAgICAgICAgICAgcmV0dXJuIHZhcmlhYmxlVmFsdWU7XG4gICAgICAgIGlmICh2YXJpYWJsZUV4aXN0ICYmICFjb2xvbilcbiAgICAgICAgICAgIHJldHVybiB2YXJpYWJsZVZhbHVlO1xuICAgICAgICBpZiAoZmFsbGJhY2sgIT0gbnVsbClcbiAgICAgICAgICAgIHJldHVybiBmYWxsYmFjaztcbiAgICAgICAgdGhyb3cgbmV3IGNsaXBhbmlvbl8xLlVzYWdlRXJyb3IoYEVudmlyb25tZW50IHZhcmlhYmxlIG5vdCBmb3VuZCAoJHt2YXJpYWJsZU5hbWV9KWApO1xuICAgIH0pO1xufVxuZXhwb3J0cy5yZXBsYWNlRW52VmFyaWFibGVzID0gcmVwbGFjZUVudlZhcmlhYmxlcztcbmZ1bmN0aW9uIHBhcnNlQm9vbGVhbih2YWx1ZSkge1xuICAgIHN3aXRjaCAodmFsdWUpIHtcbiAgICAgICAgY2FzZSBgdHJ1ZWA6XG4gICAgICAgIGNhc2UgYDFgOlxuICAgICAgICBjYXNlIDE6XG4gICAgICAgIGNhc2UgdHJ1ZToge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBgZmFsc2VgOlxuICAgICAgICBjYXNlIGAwYDpcbiAgICAgICAgY2FzZSAwOlxuICAgICAgICBjYXNlIGZhbHNlOiB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb3VsZG4ndCBwYXJzZSBcIiR7dmFsdWV9XCIgYXMgYSBib29sZWFuYCk7XG4gICAgICAgIH1cbiAgICB9XG59XG5leHBvcnRzLnBhcnNlQm9vbGVhbiA9IHBhcnNlQm9vbGVhbjtcbmZ1bmN0aW9uIHBhcnNlT3B0aW9uYWxCb29sZWFuKHZhbHVlKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gYHVuZGVmaW5lZGApXG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICByZXR1cm4gcGFyc2VCb29sZWFuKHZhbHVlKTtcbn1cbmV4cG9ydHMucGFyc2VPcHRpb25hbEJvb2xlYW4gPSBwYXJzZU9wdGlvbmFsQm9vbGVhbjtcbmZ1bmN0aW9uIHRyeVBhcnNlT3B0aW9uYWxCb29sZWFuKHZhbHVlKSB7XG4gICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIHBhcnNlT3B0aW9uYWxCb29sZWFuKHZhbHVlKTtcbiAgICB9XG4gICAgY2F0Y2gge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG59XG5leHBvcnRzLnRyeVBhcnNlT3B0aW9uYWxCb29sZWFuID0gdHJ5UGFyc2VPcHRpb25hbEJvb2xlYW47XG5mdW5jdGlvbiBpc1BhdGhMaWtlKHZhbHVlKSB7XG4gICAgaWYgKGZzbGliXzEubnBhdGguaXNBYnNvbHV0ZSh2YWx1ZSkgfHwgdmFsdWUubWF0Y2goL14oXFwuezEsMn18filcXC8vKSlcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgcmV0dXJuIGZhbHNlO1xufVxuZXhwb3J0cy5pc1BhdGhMaWtlID0gaXNQYXRoTGlrZTtcbi8qKlxuICogTWVyZ2VzIG11bHRpcGxlIG9iamVjdHMgaW50byB0aGUgdGFyZ2V0IGFyZ3VtZW50LlxuICpcbiAqICoqSW1wb3J0YW50OioqIFRoaXMgZnVuY3Rpb24gbXV0YXRlcyB0aGUgdGFyZ2V0IGFyZ3VtZW50LlxuICpcbiAqIEN1c3RvbSBjbGFzc2VzIGluc2lkZSB0aGUgdGFyZ2V0IHBhcmFtZXRlciBhcmUgc3VwcG9ydGVkIChlLmcuIGNvbW1lbnQtanNvbidzIGBDb21tZW50QXJyYXlgIC0gY29tbWVudHMgZnJvbSB0YXJnZXQgd2lsbCBiZSBwcmVzZXJ2ZWQpLlxuICpcbiAqIEBzZWUgdG9NZXJnZWQgZm9yIGEgdmVyc2lvbiB0aGF0IGRvZXNuJ3QgbXV0YXRlIHRoZSB0YXJnZXQgYXJndW1lbnRcbiAqXG4gKi9cbmZ1bmN0aW9uIG1lcmdlSW50b1RhcmdldCh0YXJnZXQsIC4uLnNvdXJjZXMpIHtcbiAgICAvLyBXZSBuZWVkIHRvIHdyYXAgZXZlcnl0aGluZyBpbiBhbiBvYmplY3QgYmVjYXVzZSBvdGhlcndpc2UgbG9kYXNoIGZhaWxzIHRvIG1lcmdlIDIgdG9wLWxldmVsIGFycmF5c1xuICAgIGNvbnN0IHdyYXAgPSAodmFsdWUpID0+ICh7IHZhbHVlIH0pO1xuICAgIGNvbnN0IHdyYXBwZWRUYXJnZXQgPSB3cmFwKHRhcmdldCk7XG4gICAgY29uc3Qgd3JhcHBlZFNvdXJjZXMgPSBzb3VyY2VzLm1hcChzb3VyY2UgPT4gd3JhcChzb3VyY2UpKTtcbiAgICBjb25zdCB7IHZhbHVlIH0gPSAoMCwgbWVyZ2VXaXRoXzEuZGVmYXVsdCkod3JhcHBlZFRhcmdldCwgLi4ud3JhcHBlZFNvdXJjZXMsICh0YXJnZXRWYWx1ZSwgc291cmNlVmFsdWUpID0+IHtcbiAgICAgICAgLy8gV2UgbmVlZCB0byBwcmVzZXJ2ZSBjb21tZW50cyBpbiBjdXN0b20gQXJyYXkgY2xhc3NlcyBzdWNoIGFzIGNvbW1lbnQtanNvbidzIGBDb21tZW50QXJyYXlgLCBzbyB3ZSBjYW4ndCB1c2Ugc3ByZWFkIG9yIGBTZXRgc1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh0YXJnZXRWYWx1ZSkgJiYgQXJyYXkuaXNBcnJheShzb3VyY2VWYWx1ZSkpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3Qgc291cmNlSXRlbSBvZiBzb3VyY2VWYWx1ZSkge1xuICAgICAgICAgICAgICAgIGlmICghdGFyZ2V0VmFsdWUuZmluZCh0YXJnZXRJdGVtID0+ICgwLCBpc0VxdWFsXzEuZGVmYXVsdCkodGFyZ2V0SXRlbSwgc291cmNlSXRlbSkpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldFZhbHVlLnB1c2goc291cmNlSXRlbSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRhcmdldFZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfSk7XG4gICAgcmV0dXJuIHZhbHVlO1xufVxuZXhwb3J0cy5tZXJnZUludG9UYXJnZXQgPSBtZXJnZUludG9UYXJnZXQ7XG4vKipcbiAqIE1lcmdlcyBtdWx0aXBsZSBvYmplY3RzIGludG8gYSBzaW5nbGUgb25lLCB3aXRob3V0IG11dGF0aW5nIGFueSBhcmd1bWVudHMuXG4gKlxuICogQ3VzdG9tIGNsYXNzZXMgYXJlIG5vdCBzdXBwb3J0ZWQgKGkuZS4gY29tbWVudC1qc29uJ3MgY29tbWVudHMgd2lsbCBiZSBsb3N0KS5cbiAqL1xuZnVuY3Rpb24gdG9NZXJnZWQoLi4uc291cmNlcykge1xuICAgIHJldHVybiBtZXJnZUludG9UYXJnZXQoe30sIC4uLnNvdXJjZXMpO1xufVxuZXhwb3J0cy50b01lcmdlZCA9IHRvTWVyZ2VkO1xuIiwgIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5QYWNrYWdlRXh0ZW5zaW9uU3RhdHVzID0gZXhwb3J0cy5QYWNrYWdlRXh0ZW5zaW9uVHlwZSA9IGV4cG9ydHMuTGlua1R5cGUgPSB2b2lkIDA7XG4vKipcbiAqIERlc2NyaWJlcyBpbiB3aGljaCBjYXBhY2l0eSB0aGUgbGlua2VycyBjYW4gbWFuaXB1bGF0ZSB0aGUgcGFja2FnZSBzb3VyY2VzLlxuICovXG52YXIgTGlua1R5cGU7XG4oZnVuY3Rpb24gKExpbmtUeXBlKSB7XG4gICAgLyoqXG4gICAgICogVGhlIHBhY2thZ2UgbWFuYWdlciBvd25zIHRoZSBsb2NhdGlvbiAodHlwaWNhbGx5IHRoaW5ncyB3aXRoaW4gdGhlIGNhY2hlKVxuICAgICAqIGFuZCBjYW4gdHJhbnNmb3JtIGl0IGF0IHdpbGwgKGZvciBpbnN0YW5jZSB0aGUgUG5QIGxpbmtlciBtYXkgZGVjaWRlIHRvXG4gICAgICogdW5wbHVnIHRob3NlIHBhY2thZ2VzKS5cbiAgICAgKi9cbiAgICBMaW5rVHlwZVtcIkhBUkRcIl0gPSBcIkhBUkRcIjtcbiAgICAvKipcbiAgICAgKiBUaGUgcGFja2FnZSBtYW5hZ2VyIGRvZXNuJ3Qgb3duIHRoZSBsb2NhdGlvbiAoc3ltbGlua3MsIHdvcmtzcGFjZXMsIGV0YyksXG4gICAgICogc28gdGhlIGxpbmtlcnMgYXJlbid0IGFsbG93ZWQgdG8gZG8gYW55dGhpbmcgd2l0aCB0aGVtIGV4Y2VwdCB1c2UgdGhlbSBhc1xuICAgICAqIHRoZXkgYXJlLlxuICAgICAqL1xuICAgIExpbmtUeXBlW1wiU09GVFwiXSA9IFwiU09GVFwiO1xufSkoTGlua1R5cGUgPSBleHBvcnRzLkxpbmtUeXBlIHx8IChleHBvcnRzLkxpbmtUeXBlID0ge30pKTtcbnZhciBQYWNrYWdlRXh0ZW5zaW9uVHlwZTtcbihmdW5jdGlvbiAoUGFja2FnZUV4dGVuc2lvblR5cGUpIHtcbiAgICBQYWNrYWdlRXh0ZW5zaW9uVHlwZVtcIkRlcGVuZGVuY3lcIl0gPSBcIkRlcGVuZGVuY3lcIjtcbiAgICBQYWNrYWdlRXh0ZW5zaW9uVHlwZVtcIlBlZXJEZXBlbmRlbmN5XCJdID0gXCJQZWVyRGVwZW5kZW5jeVwiO1xuICAgIFBhY2thZ2VFeHRlbnNpb25UeXBlW1wiUGVlckRlcGVuZGVuY3lNZXRhXCJdID0gXCJQZWVyRGVwZW5kZW5jeU1ldGFcIjtcbn0pKFBhY2thZ2VFeHRlbnNpb25UeXBlID0gZXhwb3J0cy5QYWNrYWdlRXh0ZW5zaW9uVHlwZSB8fCAoZXhwb3J0cy5QYWNrYWdlRXh0ZW5zaW9uVHlwZSA9IHt9KSk7XG52YXIgUGFja2FnZUV4dGVuc2lvblN0YXR1cztcbihmdW5jdGlvbiAoUGFja2FnZUV4dGVuc2lvblN0YXR1cykge1xuICAgIFBhY2thZ2VFeHRlbnNpb25TdGF0dXNbXCJJbmFjdGl2ZVwiXSA9IFwiaW5hY3RpdmVcIjtcbiAgICBQYWNrYWdlRXh0ZW5zaW9uU3RhdHVzW1wiUmVkdW5kYW50XCJdID0gXCJyZWR1bmRhbnRcIjtcbiAgICBQYWNrYWdlRXh0ZW5zaW9uU3RhdHVzW1wiQWN0aXZlXCJdID0gXCJhY3RpdmVcIjtcbn0pKFBhY2thZ2VFeHRlbnNpb25TdGF0dXMgPSBleHBvcnRzLlBhY2thZ2VFeHRlbnNpb25TdGF0dXMgfHwgKGV4cG9ydHMuUGFja2FnZUV4dGVuc2lvblN0YXR1cyA9IHt9KSk7XG4iLCAiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLmFkZExvZ0ZpbHRlclN1cHBvcnQgPSBleHBvcnRzLkxvZ0xldmVsID0gZXhwb3J0cy5wcmV0dHlGaWVsZCA9IGV4cG9ydHMubWFyayA9IGV4cG9ydHMuanNvbk9yUHJldHR5ID0gZXhwb3J0cy5qc29uID0gZXhwb3J0cy5wcmV0dHlMaXN0ID0gZXhwb3J0cy5wcmV0dHkgPSBleHBvcnRzLmFwcGx5SHlwZXJsaW5rID0gZXhwb3J0cy5hcHBseUNvbG9yID0gZXhwb3J0cy5hcHBseVN0eWxlID0gZXhwb3J0cy50dXBsZSA9IGV4cG9ydHMuc3VwcG9ydHNIeXBlcmxpbmtzID0gZXhwb3J0cy5zdXBwb3J0c0NvbG9yID0gZXhwb3J0cy5TdHlsZSA9IGV4cG9ydHMuVHlwZSA9IHZvaWQgMDtcbmNvbnN0IHRzbGliXzEgPSByZXF1aXJlKFwidHNsaWJcIik7XG5jb25zdCBmc2xpYl8xID0gcmVxdWlyZShcIkB5YXJucGtnL2ZzbGliXCIpO1xuY29uc3QgY2hhbGtfMSA9IHRzbGliXzEuX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJjaGFsa1wiKSk7XG5jb25zdCBjaV9pbmZvXzEgPSB0c2xpYl8xLl9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiY2ktaW5mb1wiKSk7XG5jb25zdCBjbGlwYW5pb25fMSA9IHJlcXVpcmUoXCJjbGlwYW5pb25cIik7XG5jb25zdCBtaWNyb21hdGNoXzEgPSB0c2xpYl8xLl9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwibWljcm9tYXRjaFwiKSk7XG5jb25zdCBzdHJpcF9hbnNpXzEgPSB0c2xpYl8xLl9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwic3RyaXAtYW5zaVwiKSk7XG5jb25zdCBNZXNzYWdlTmFtZV8xID0gcmVxdWlyZShcIi4vTWVzc2FnZU5hbWVcIik7XG5jb25zdCBtaXNjVXRpbHMgPSB0c2xpYl8xLl9faW1wb3J0U3RhcihyZXF1aXJlKFwiLi9taXNjVXRpbHNcIikpO1xuY29uc3Qgc3RydWN0VXRpbHMgPSB0c2xpYl8xLl9faW1wb3J0U3RhcihyZXF1aXJlKFwiLi9zdHJ1Y3RVdGlsc1wiKSk7XG5jb25zdCB0eXBlc18xID0gcmVxdWlyZShcIi4vdHlwZXNcIik7XG4vLyBXZSBoYXZlIHRvIHdvcmthcm91bmQgYSBUUyBidWc6XG4vLyBodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L1R5cGVTY3JpcHQvaXNzdWVzLzM1MzI5XG4vL1xuLy8gV2UgYWxzbyBjYW4ndCB1c2UgY29uc3QgZW51bSBiZWNhdXNlIEJhYmVsIGRvZXNuJ3Qgc3VwcG9ydCB0aGVtOlxuLy8gaHR0cHM6Ly9naXRodWIuY29tL2JhYmVsL2JhYmVsL2lzc3Vlcy84NzQxXG4vL1xuZXhwb3J0cy5UeXBlID0ge1xuICAgIE5PX0hJTlQ6IGBOT19ISU5UYCxcbiAgICBOVUxMOiBgTlVMTGAsXG4gICAgU0NPUEU6IGBTQ09QRWAsXG4gICAgTkFNRTogYE5BTUVgLFxuICAgIFJBTkdFOiBgUkFOR0VgLFxuICAgIFJFRkVSRU5DRTogYFJFRkVSRU5DRWAsXG4gICAgTlVNQkVSOiBgTlVNQkVSYCxcbiAgICBQQVRIOiBgUEFUSGAsXG4gICAgVVJMOiBgVVJMYCxcbiAgICBBRERFRDogYEFEREVEYCxcbiAgICBSRU1PVkVEOiBgUkVNT1ZFRGAsXG4gICAgQ09ERTogYENPREVgLFxuICAgIERVUkFUSU9OOiBgRFVSQVRJT05gLFxuICAgIFNJWkU6IGBTSVpFYCxcbiAgICBJREVOVDogYElERU5UYCxcbiAgICBERVNDUklQVE9SOiBgREVTQ1JJUFRPUmAsXG4gICAgTE9DQVRPUjogYExPQ0FUT1JgLFxuICAgIFJFU09MVVRJT046IGBSRVNPTFVUSU9OYCxcbiAgICBERVBFTkRFTlQ6IGBERVBFTkRFTlRgLFxuICAgIFBBQ0tBR0VfRVhURU5TSU9OOiBgUEFDS0FHRV9FWFRFTlNJT05gLFxuICAgIFNFVFRJTkc6IGBTRVRUSU5HYCxcbiAgICBNQVJLRE9XTjogYE1BUktET1dOYCxcbn07XG52YXIgU3R5bGU7XG4oZnVuY3Rpb24gKFN0eWxlKSB7XG4gICAgU3R5bGVbU3R5bGVbXCJCT0xEXCJdID0gMl0gPSBcIkJPTERcIjtcbn0pKFN0eWxlID0gZXhwb3J0cy5TdHlsZSB8fCAoZXhwb3J0cy5TdHlsZSA9IHt9KSk7XG5jb25zdCBjaGFsa09wdGlvbnMgPSBjaV9pbmZvXzEuZGVmYXVsdC5HSVRIVUJfQUNUSU9OU1xuICAgID8geyBsZXZlbDogMiB9XG4gICAgOiBjaGFsa18xLmRlZmF1bHQuc3VwcG9ydHNDb2xvclxuICAgICAgICA/IHsgbGV2ZWw6IGNoYWxrXzEuZGVmYXVsdC5zdXBwb3J0c0NvbG9yLmxldmVsIH1cbiAgICAgICAgOiB7IGxldmVsOiAwIH07XG5leHBvcnRzLnN1cHBvcnRzQ29sb3IgPSBjaGFsa09wdGlvbnMubGV2ZWwgIT09IDA7XG5leHBvcnRzLnN1cHBvcnRzSHlwZXJsaW5rcyA9IGV4cG9ydHMuc3VwcG9ydHNDb2xvciAmJiAhY2lfaW5mb18xLmRlZmF1bHQuR0lUSFVCX0FDVElPTlMgJiYgIWNpX2luZm9fMS5kZWZhdWx0LkNJUkNMRSAmJiAhY2lfaW5mb18xLmRlZmF1bHQuR0lUTEFCO1xuY29uc3QgY2hhbGtJbnN0YW5jZSA9IG5ldyBjaGFsa18xLmRlZmF1bHQuSW5zdGFuY2UoY2hhbGtPcHRpb25zKTtcbmNvbnN0IGNvbG9ycyA9IG5ldyBNYXAoW1xuICAgIFtleHBvcnRzLlR5cGUuTk9fSElOVCwgbnVsbF0sXG4gICAgW2V4cG9ydHMuVHlwZS5OVUxMLCBbYCNhODUzYjVgLCAxMjldXSxcbiAgICBbZXhwb3J0cy5UeXBlLlNDT1BFLCBbYCNkNzVmMDBgLCAxNjZdXSxcbiAgICBbZXhwb3J0cy5UeXBlLk5BTUUsIFtgI2Q3ODc1ZmAsIDE3M11dLFxuICAgIFtleHBvcnRzLlR5cGUuUkFOR0UsIFtgIzAwYWZhZmAsIDM3XV0sXG4gICAgW2V4cG9ydHMuVHlwZS5SRUZFUkVOQ0UsIFtgIzg3YWZmZmAsIDExMV1dLFxuICAgIFtleHBvcnRzLlR5cGUuTlVNQkVSLCBbYCNmZmQ3MDBgLCAyMjBdXSxcbiAgICBbZXhwb3J0cy5UeXBlLlBBVEgsIFtgI2Q3NWZkN2AsIDE3MF1dLFxuICAgIFtleHBvcnRzLlR5cGUuVVJMLCBbYCNkNzVmZDdgLCAxNzBdXSxcbiAgICBbZXhwb3J0cy5UeXBlLkFEREVELCBbYCM1ZmFmMDBgLCA3MF1dLFxuICAgIFtleHBvcnRzLlR5cGUuUkVNT1ZFRCwgW2AjZDcwMDAwYCwgMTYwXV0sXG4gICAgW2V4cG9ydHMuVHlwZS5DT0RFLCBbYCM4N2FmZmZgLCAxMTFdXSxcbiAgICBbZXhwb3J0cy5UeXBlLlNJWkUsIFtgI2ZmZDcwMGAsIDIyMF1dLFxuXSk7XG4vLyBKdXN0IHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBpbmRpdmlkdWFsIGZpZWxkcyBvZiB0aGUgdHJhbnNmb3JtIG1hcCBoYXZlXG4vLyBjb21wYXRpYmxlIHBhcmFtZXRlciB0eXBlcywgd2l0aG91dCB1cGNhc3RpbmcgdGhlIG1hcCB0byBhIHRvbyBnZW5lcmljIHR5cGVcbi8vXG4vLyBXZSBhbHNvIHRha2UgdGhlIG9wcG9ydHVuaXR5IHRvIGRvd25jYXN0IHRoZSBjb25maWd1cmF0aW9uIGludG8gYGFueWAsXG4vLyBvdGhlcndpc2UgVHlwZVNjcmlwdCB3aWxsIGRldGVjdCBhIGNpcmN1bGFyIHJlZmVyZW5jZSBhbmQgd29uJ3QgYWxsb3cgdXMgdG9cbi8vIHByb3Blcmx5IHR5cGUgdGhlIGBmb3JtYXRgIG1ldGhvZCBmcm9tIENvbmZpZ3VyYXRpb24uIFNpbmNlIHRyYW5zZm9ybXMgYXJlXG4vLyBpbnRlcm5hbCB0byB0aGlzIGZpbGUsIGl0IHNob3VsZCBiZSBmaW5lLlxuY29uc3QgdmFsaWRhdGVUcmFuc2Zvcm0gPSAoc3BlYykgPT4gc3BlYztcbmNvbnN0IHRyYW5zZm9ybXMgPSB7XG4gICAgW2V4cG9ydHMuVHlwZS5OVU1CRVJdOiB2YWxpZGF0ZVRyYW5zZm9ybSh7XG4gICAgICAgIHByZXR0eTogKGNvbmZpZ3VyYXRpb24sIHZhbHVlKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gYXBwbHlDb2xvcihjb25maWd1cmF0aW9uLCBgJHt2YWx1ZX1gLCBleHBvcnRzLlR5cGUuTlVNQkVSKTtcbiAgICAgICAgfSxcbiAgICAgICAganNvbjogKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH0sXG4gICAgfSksXG4gICAgW2V4cG9ydHMuVHlwZS5JREVOVF06IHZhbGlkYXRlVHJhbnNmb3JtKHtcbiAgICAgICAgcHJldHR5OiAoY29uZmlndXJhdGlvbiwgaWRlbnQpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBzdHJ1Y3RVdGlscy5wcmV0dHlJZGVudChjb25maWd1cmF0aW9uLCBpZGVudCk7XG4gICAgICAgIH0sXG4gICAgICAgIGpzb246IChpZGVudCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHN0cnVjdFV0aWxzLnN0cmluZ2lmeUlkZW50KGlkZW50KTtcbiAgICAgICAgfSxcbiAgICB9KSxcbiAgICBbZXhwb3J0cy5UeXBlLkxPQ0FUT1JdOiB2YWxpZGF0ZVRyYW5zZm9ybSh7XG4gICAgICAgIHByZXR0eTogKGNvbmZpZ3VyYXRpb24sIGxvY2F0b3IpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBzdHJ1Y3RVdGlscy5wcmV0dHlMb2NhdG9yKGNvbmZpZ3VyYXRpb24sIGxvY2F0b3IpO1xuICAgICAgICB9LFxuICAgICAgICBqc29uOiAobG9jYXRvcikgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHN0cnVjdFV0aWxzLnN0cmluZ2lmeUxvY2F0b3IobG9jYXRvcik7XG4gICAgICAgIH0sXG4gICAgfSksXG4gICAgW2V4cG9ydHMuVHlwZS5ERVNDUklQVE9SXTogdmFsaWRhdGVUcmFuc2Zvcm0oe1xuICAgICAgICBwcmV0dHk6IChjb25maWd1cmF0aW9uLCBkZXNjcmlwdG9yKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gc3RydWN0VXRpbHMucHJldHR5RGVzY3JpcHRvcihjb25maWd1cmF0aW9uLCBkZXNjcmlwdG9yKTtcbiAgICAgICAgfSxcbiAgICAgICAganNvbjogKGRlc2NyaXB0b3IpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBzdHJ1Y3RVdGlscy5zdHJpbmdpZnlEZXNjcmlwdG9yKGRlc2NyaXB0b3IpO1xuICAgICAgICB9LFxuICAgIH0pLFxuICAgIFtleHBvcnRzLlR5cGUuUkVTT0xVVElPTl06IHZhbGlkYXRlVHJhbnNmb3JtKHtcbiAgICAgICAgcHJldHR5OiAoY29uZmlndXJhdGlvbiwgeyBkZXNjcmlwdG9yLCBsb2NhdG9yIH0pID0+IHtcbiAgICAgICAgICAgIHJldHVybiBzdHJ1Y3RVdGlscy5wcmV0dHlSZXNvbHV0aW9uKGNvbmZpZ3VyYXRpb24sIGRlc2NyaXB0b3IsIGxvY2F0b3IpO1xuICAgICAgICB9LFxuICAgICAgICBqc29uOiAoeyBkZXNjcmlwdG9yLCBsb2NhdG9yIH0pID0+IHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgZGVzY3JpcHRvcjogc3RydWN0VXRpbHMuc3RyaW5naWZ5RGVzY3JpcHRvcihkZXNjcmlwdG9yKSxcbiAgICAgICAgICAgICAgICBsb2NhdG9yOiBsb2NhdG9yICE9PSBudWxsXG4gICAgICAgICAgICAgICAgICAgID8gc3RydWN0VXRpbHMuc3RyaW5naWZ5TG9jYXRvcihsb2NhdG9yKVxuICAgICAgICAgICAgICAgICAgICA6IG51bGwsXG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuICAgIH0pLFxuICAgIFtleHBvcnRzLlR5cGUuREVQRU5ERU5UXTogdmFsaWRhdGVUcmFuc2Zvcm0oe1xuICAgICAgICBwcmV0dHk6IChjb25maWd1cmF0aW9uLCB7IGxvY2F0b3IsIGRlc2NyaXB0b3IgfSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHN0cnVjdFV0aWxzLnByZXR0eURlcGVuZGVudChjb25maWd1cmF0aW9uLCBsb2NhdG9yLCBkZXNjcmlwdG9yKTtcbiAgICAgICAgfSxcbiAgICAgICAganNvbjogKHsgbG9jYXRvciwgZGVzY3JpcHRvciB9KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGxvY2F0b3I6IHN0cnVjdFV0aWxzLnN0cmluZ2lmeUxvY2F0b3IobG9jYXRvciksXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRvcjogc3RydWN0VXRpbHMuc3RyaW5naWZ5RGVzY3JpcHRvcihkZXNjcmlwdG9yKSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG4gICAgfSksXG4gICAgW2V4cG9ydHMuVHlwZS5QQUNLQUdFX0VYVEVOU0lPTl06IHZhbGlkYXRlVHJhbnNmb3JtKHtcbiAgICAgICAgcHJldHR5OiAoY29uZmlndXJhdGlvbiwgcGFja2FnZUV4dGVuc2lvbikgPT4ge1xuICAgICAgICAgICAgc3dpdGNoIChwYWNrYWdlRXh0ZW5zaW9uLnR5cGUpIHtcbiAgICAgICAgICAgICAgICBjYXNlIHR5cGVzXzEuUGFja2FnZUV4dGVuc2lvblR5cGUuRGVwZW5kZW5jeTpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGAke3N0cnVjdFV0aWxzLnByZXR0eUlkZW50KGNvbmZpZ3VyYXRpb24sIHBhY2thZ2VFeHRlbnNpb24ucGFyZW50RGVzY3JpcHRvcil9IFx1MjdBNCAke2FwcGx5Q29sb3IoY29uZmlndXJhdGlvbiwgYGRlcGVuZGVuY2llc2AsIGV4cG9ydHMuVHlwZS5DT0RFKX0gXHUyN0E0ICR7c3RydWN0VXRpbHMucHJldHR5SWRlbnQoY29uZmlndXJhdGlvbiwgcGFja2FnZUV4dGVuc2lvbi5kZXNjcmlwdG9yKX1gO1xuICAgICAgICAgICAgICAgIGNhc2UgdHlwZXNfMS5QYWNrYWdlRXh0ZW5zaW9uVHlwZS5QZWVyRGVwZW5kZW5jeTpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGAke3N0cnVjdFV0aWxzLnByZXR0eUlkZW50KGNvbmZpZ3VyYXRpb24sIHBhY2thZ2VFeHRlbnNpb24ucGFyZW50RGVzY3JpcHRvcil9IFx1MjdBNCAke2FwcGx5Q29sb3IoY29uZmlndXJhdGlvbiwgYHBlZXJEZXBlbmRlbmNpZXNgLCBleHBvcnRzLlR5cGUuQ09ERSl9IFx1MjdBNCAke3N0cnVjdFV0aWxzLnByZXR0eUlkZW50KGNvbmZpZ3VyYXRpb24sIHBhY2thZ2VFeHRlbnNpb24uZGVzY3JpcHRvcil9YDtcbiAgICAgICAgICAgICAgICBjYXNlIHR5cGVzXzEuUGFja2FnZUV4dGVuc2lvblR5cGUuUGVlckRlcGVuZGVuY3lNZXRhOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYCR7c3RydWN0VXRpbHMucHJldHR5SWRlbnQoY29uZmlndXJhdGlvbiwgcGFja2FnZUV4dGVuc2lvbi5wYXJlbnREZXNjcmlwdG9yKX0gXHUyN0E0ICR7YXBwbHlDb2xvcihjb25maWd1cmF0aW9uLCBgcGVlckRlcGVuZGVuY2llc01ldGFgLCBleHBvcnRzLlR5cGUuQ09ERSl9IFx1MjdBNCAke3N0cnVjdFV0aWxzLnByZXR0eUlkZW50KGNvbmZpZ3VyYXRpb24sIHN0cnVjdFV0aWxzLnBhcnNlSWRlbnQocGFja2FnZUV4dGVuc2lvbi5zZWxlY3RvcikpfSBcdTI3QTQgJHthcHBseUNvbG9yKGNvbmZpZ3VyYXRpb24sIHBhY2thZ2VFeHRlbnNpb24ua2V5LCBleHBvcnRzLlR5cGUuQ09ERSl9YDtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEFzc2VydGlvbiBmYWlsZWQ6IFVuc3VwcG9ydGVkIHBhY2thZ2UgZXh0ZW5zaW9uIHR5cGU6ICR7cGFja2FnZUV4dGVuc2lvbi50eXBlfWApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBqc29uOiAocGFja2FnZUV4dGVuc2lvbikgPT4ge1xuICAgICAgICAgICAgc3dpdGNoIChwYWNrYWdlRXh0ZW5zaW9uLnR5cGUpIHtcbiAgICAgICAgICAgICAgICBjYXNlIHR5cGVzXzEuUGFja2FnZUV4dGVuc2lvblR5cGUuRGVwZW5kZW5jeTpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGAke3N0cnVjdFV0aWxzLnN0cmluZ2lmeUlkZW50KHBhY2thZ2VFeHRlbnNpb24ucGFyZW50RGVzY3JpcHRvcil9ID4gJHtzdHJ1Y3RVdGlscy5zdHJpbmdpZnlJZGVudChwYWNrYWdlRXh0ZW5zaW9uLmRlc2NyaXB0b3IpfWA7XG4gICAgICAgICAgICAgICAgY2FzZSB0eXBlc18xLlBhY2thZ2VFeHRlbnNpb25UeXBlLlBlZXJEZXBlbmRlbmN5OlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYCR7c3RydWN0VXRpbHMuc3RyaW5naWZ5SWRlbnQocGFja2FnZUV4dGVuc2lvbi5wYXJlbnREZXNjcmlwdG9yKX0gPj4gJHtzdHJ1Y3RVdGlscy5zdHJpbmdpZnlJZGVudChwYWNrYWdlRXh0ZW5zaW9uLmRlc2NyaXB0b3IpfWA7XG4gICAgICAgICAgICAgICAgY2FzZSB0eXBlc18xLlBhY2thZ2VFeHRlbnNpb25UeXBlLlBlZXJEZXBlbmRlbmN5TWV0YTpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGAke3N0cnVjdFV0aWxzLnN0cmluZ2lmeUlkZW50KHBhY2thZ2VFeHRlbnNpb24ucGFyZW50RGVzY3JpcHRvcil9ID4+ICR7cGFja2FnZUV4dGVuc2lvbi5zZWxlY3Rvcn0gLyAke3BhY2thZ2VFeHRlbnNpb24ua2V5fWA7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBBc3NlcnRpb24gZmFpbGVkOiBVbnN1cHBvcnRlZCBwYWNrYWdlIGV4dGVuc2lvbiB0eXBlOiAke3BhY2thZ2VFeHRlbnNpb24udHlwZX1gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICB9KSxcbiAgICBbZXhwb3J0cy5UeXBlLlNFVFRJTkddOiB2YWxpZGF0ZVRyYW5zZm9ybSh7XG4gICAgICAgIHByZXR0eTogKGNvbmZpZ3VyYXRpb24sIHNldHRpbmdOYW1lKSA9PiB7XG4gICAgICAgICAgICAvLyBBc3NlcnRzIHRoYXQgdGhlIHNldHRpbmcgaXMgdmFsaWRcbiAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24uZ2V0KHNldHRpbmdOYW1lKTtcbiAgICAgICAgICAgIHJldHVybiBhcHBseUh5cGVybGluayhjb25maWd1cmF0aW9uLCBhcHBseUNvbG9yKGNvbmZpZ3VyYXRpb24sIHNldHRpbmdOYW1lLCBleHBvcnRzLlR5cGUuQ09ERSksIGBodHRwczovL3lhcm5wa2cuY29tL2NvbmZpZ3VyYXRpb24veWFybnJjIyR7c2V0dGluZ05hbWV9YCk7XG4gICAgICAgIH0sXG4gICAgICAgIGpzb246IChzZXR0aW5nTmFtZSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHNldHRpbmdOYW1lO1xuICAgICAgICB9LFxuICAgIH0pLFxuICAgIFtleHBvcnRzLlR5cGUuRFVSQVRJT05dOiB2YWxpZGF0ZVRyYW5zZm9ybSh7XG4gICAgICAgIHByZXR0eTogKGNvbmZpZ3VyYXRpb24sIGR1cmF0aW9uKSA9PiB7XG4gICAgICAgICAgICBpZiAoZHVyYXRpb24gPiAxMDAwICogNjApIHtcbiAgICAgICAgICAgICAgICBjb25zdCBtaW51dGVzID0gTWF0aC5mbG9vcihkdXJhdGlvbiAvIDEwMDAgLyA2MCk7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2Vjb25kcyA9IE1hdGguY2VpbCgoZHVyYXRpb24gLSBtaW51dGVzICogNjAgKiAxMDAwKSAvIDEwMDApO1xuICAgICAgICAgICAgICAgIHJldHVybiBzZWNvbmRzID09PSAwID8gYCR7bWludXRlc31tYCA6IGAke21pbnV0ZXN9bSAke3NlY29uZHN9c2A7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzZWNvbmRzID0gTWF0aC5mbG9vcihkdXJhdGlvbiAvIDEwMDApO1xuICAgICAgICAgICAgICAgIGNvbnN0IG1pbGxpc2Vjb25kcyA9IGR1cmF0aW9uIC0gc2Vjb25kcyAqIDEwMDA7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1pbGxpc2Vjb25kcyA9PT0gMCA/IGAke3NlY29uZHN9c2AgOiBgJHtzZWNvbmRzfXMgJHttaWxsaXNlY29uZHN9bXNgO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBqc29uOiAoZHVyYXRpb24pID0+IHtcbiAgICAgICAgICAgIHJldHVybiBkdXJhdGlvbjtcbiAgICAgICAgfSxcbiAgICB9KSxcbiAgICBbZXhwb3J0cy5UeXBlLlNJWkVdOiB2YWxpZGF0ZVRyYW5zZm9ybSh7XG4gICAgICAgIHByZXR0eTogKGNvbmZpZ3VyYXRpb24sIHNpemUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHRocmVzaG9sZHMgPSBbYEtCYCwgYE1CYCwgYEdCYCwgYFRCYF07XG4gICAgICAgICAgICBsZXQgcG93ZXIgPSB0aHJlc2hvbGRzLmxlbmd0aDtcbiAgICAgICAgICAgIHdoaWxlIChwb3dlciA+IDEgJiYgc2l6ZSA8IDEwMjQgKiogcG93ZXIpXG4gICAgICAgICAgICAgICAgcG93ZXIgLT0gMTtcbiAgICAgICAgICAgIGNvbnN0IGZhY3RvciA9IDEwMjQgKiogcG93ZXI7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IE1hdGguZmxvb3Ioc2l6ZSAqIDEwMCAvIGZhY3RvcikgLyAxMDA7XG4gICAgICAgICAgICByZXR1cm4gYXBwbHlDb2xvcihjb25maWd1cmF0aW9uLCBgJHt2YWx1ZX0gJHt0aHJlc2hvbGRzW3Bvd2VyIC0gMV19YCwgZXhwb3J0cy5UeXBlLk5VTUJFUik7XG4gICAgICAgIH0sXG4gICAgICAgIGpzb246IChzaXplKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gc2l6ZTtcbiAgICAgICAgfSxcbiAgICB9KSxcbiAgICBbZXhwb3J0cy5UeXBlLlBBVEhdOiB2YWxpZGF0ZVRyYW5zZm9ybSh7XG4gICAgICAgIHByZXR0eTogKGNvbmZpZ3VyYXRpb24sIGZpbGVQYXRoKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gYXBwbHlDb2xvcihjb25maWd1cmF0aW9uLCBmc2xpYl8xLm5wYXRoLmZyb21Qb3J0YWJsZVBhdGgoZmlsZVBhdGgpLCBleHBvcnRzLlR5cGUuUEFUSCk7XG4gICAgICAgIH0sXG4gICAgICAgIGpzb246IChmaWxlUGF0aCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGZzbGliXzEubnBhdGguZnJvbVBvcnRhYmxlUGF0aChmaWxlUGF0aCk7XG4gICAgICAgIH0sXG4gICAgfSksXG4gICAgW2V4cG9ydHMuVHlwZS5NQVJLRE9XTl06IHZhbGlkYXRlVHJhbnNmb3JtKHtcbiAgICAgICAgcHJldHR5OiAoY29uZmlndXJhdGlvbiwgeyB0ZXh0LCBmb3JtYXQsIHBhcmFncmFwaHMgfSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuICgwLCBjbGlwYW5pb25fMS5mb3JtYXRNYXJrZG93bmlzaCkodGV4dCwgeyBmb3JtYXQsIHBhcmFncmFwaHMgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIGpzb246ICh7IHRleHQgfSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHRleHQ7XG4gICAgICAgIH0sXG4gICAgfSksXG59O1xuZnVuY3Rpb24gdHVwbGUoZm9ybWF0VHlwZSwgdmFsdWUpIHtcbiAgICByZXR1cm4gW3ZhbHVlLCBmb3JtYXRUeXBlXTtcbn1cbmV4cG9ydHMudHVwbGUgPSB0dXBsZTtcbmZ1bmN0aW9uIGFwcGx5U3R5bGUoY29uZmlndXJhdGlvbiwgdGV4dCwgZmxhZ3MpIHtcbiAgICBpZiAoIWNvbmZpZ3VyYXRpb24uZ2V0KGBlbmFibGVDb2xvcnNgKSlcbiAgICAgICAgcmV0dXJuIHRleHQ7XG4gICAgaWYgKGZsYWdzICYgU3R5bGUuQk9MRClcbiAgICAgICAgdGV4dCA9IGNoYWxrXzEuZGVmYXVsdC5ib2xkKHRleHQpO1xuICAgIHJldHVybiB0ZXh0O1xufVxuZXhwb3J0cy5hcHBseVN0eWxlID0gYXBwbHlTdHlsZTtcbmZ1bmN0aW9uIGFwcGx5Q29sb3IoY29uZmlndXJhdGlvbiwgdmFsdWUsIGZvcm1hdFR5cGUpIHtcbiAgICBpZiAoIWNvbmZpZ3VyYXRpb24uZ2V0KGBlbmFibGVDb2xvcnNgKSlcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIGNvbnN0IGNvbG9yU3BlYyA9IGNvbG9ycy5nZXQoZm9ybWF0VHlwZSk7XG4gICAgaWYgKGNvbG9yU3BlYyA9PT0gbnVsbClcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIGNvbnN0IGNvbG9yID0gdHlwZW9mIGNvbG9yU3BlYyA9PT0gYHVuZGVmaW5lZGBcbiAgICAgICAgPyBmb3JtYXRUeXBlXG4gICAgICAgIDogY2hhbGtPcHRpb25zLmxldmVsID49IDNcbiAgICAgICAgICAgID8gY29sb3JTcGVjWzBdXG4gICAgICAgICAgICA6IGNvbG9yU3BlY1sxXTtcbiAgICBjb25zdCBmbiA9IHR5cGVvZiBjb2xvciA9PT0gYG51bWJlcmBcbiAgICAgICAgPyBjaGFsa0luc3RhbmNlLmFuc2kyNTYoY29sb3IpXG4gICAgICAgIDogY29sb3Iuc3RhcnRzV2l0aChgI2ApXG4gICAgICAgICAgICA/IGNoYWxrSW5zdGFuY2UuaGV4KGNvbG9yKVxuICAgICAgICAgICAgOiBjaGFsa0luc3RhbmNlW2NvbG9yXTtcbiAgICBpZiAodHlwZW9mIGZuICE9PSBgZnVuY3Rpb25gKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgZm9ybWF0IHR5cGUgJHtjb2xvcn1gKTtcbiAgICByZXR1cm4gZm4odmFsdWUpO1xufVxuZXhwb3J0cy5hcHBseUNvbG9yID0gYXBwbHlDb2xvcjtcbmNvbnN0IGlzS29uc29sZSA9ICEhcHJvY2Vzcy5lbnYuS09OU09MRV9WRVJTSU9OO1xuZnVuY3Rpb24gYXBwbHlIeXBlcmxpbmsoY29uZmlndXJhdGlvbiwgdGV4dCwgaHJlZikge1xuICAgIC8vIE9ubHkgcHJpbnQgaHlwZXJsaW5rcyBpZiBhbGxvd2VkIHBlciBjb25maWd1cmF0aW9uXG4gICAgaWYgKCFjb25maWd1cmF0aW9uLmdldChgZW5hYmxlSHlwZXJsaW5rc2ApKVxuICAgICAgICByZXR1cm4gdGV4dDtcbiAgICAvLyBXZSB1c2UgRVNDIGFzIFNUIGZvciBLb25zb2xlIGJlY2F1c2UgaXQgZG9lc24ndCBzdXBwb3J0XG4gICAgLy8gdGhlIG5vbi1zdGFuZGFyZCBCRUwgY2hhcmFjdGVyIGZvciBoeXBlcmxpbmtzXG4gICAgaWYgKGlzS29uc29sZSlcbiAgICAgICAgcmV0dXJuIGBcXHUwMDFiXTg7OyR7aHJlZn1cXHUwMDFiXFxcXCR7dGV4dH1cXHUwMDFiXTg7O1xcdTAwMWJcXFxcYDtcbiAgICAvLyBXZSB1c2UgQkVMTCBhcyBTVCBiZWNhdXNlIGl0IHNlZW1zIHRoYXQgaVRlcm0gZG9lc24ndCBwcm9wZXJseSBzdXBwb3J0XG4gICAgLy8gdGhlIFxceDFiXFxcXCBzZXF1ZW5jZSBkZXNjcmliZWQgaW4gdGhlIHJlZmVyZW5jZSBkb2N1bWVudFxuICAgIC8vIGh0dHBzOi8vZ2lzdC5naXRodWIuY29tL2VnbW9udGtvYi9lYjExNDI5NGVmYmNkNWFkYjE5NDRjOWYzY2I1ZmVkYSN0aGUtZXNjYXBlLXNlcXVlbmNlXG4gICAgcmV0dXJuIGBcXHUwMDFiXTg7OyR7aHJlZn1cXHUwMDA3JHt0ZXh0fVxcdTAwMWJdODs7XFx1MDAwN2A7XG59XG5leHBvcnRzLmFwcGx5SHlwZXJsaW5rID0gYXBwbHlIeXBlcmxpbms7XG5mdW5jdGlvbiBwcmV0dHkoY29uZmlndXJhdGlvbiwgdmFsdWUsIGZvcm1hdFR5cGUpIHtcbiAgICBpZiAodmFsdWUgPT09IG51bGwpXG4gICAgICAgIHJldHVybiBhcHBseUNvbG9yKGNvbmZpZ3VyYXRpb24sIGBudWxsYCwgZXhwb3J0cy5UeXBlLk5VTEwpO1xuICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodHJhbnNmb3JtcywgZm9ybWF0VHlwZSkpIHtcbiAgICAgICAgY29uc3QgdHJhbnNmb3JtID0gdHJhbnNmb3Jtc1tmb3JtYXRUeXBlXTtcbiAgICAgICAgY29uc3QgdHlwZWRUcmFuc2Zvcm0gPSB0cmFuc2Zvcm07XG4gICAgICAgIHJldHVybiB0eXBlZFRyYW5zZm9ybS5wcmV0dHkoY29uZmlndXJhdGlvbiwgdmFsdWUpO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSBgc3RyaW5nYClcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBBc3NlcnRpb24gZmFpbGVkOiBFeHBlY3RlZCB0aGUgdmFsdWUgdG8gYmUgYSBzdHJpbmcsIGdvdCAke3R5cGVvZiB2YWx1ZX1gKTtcbiAgICByZXR1cm4gYXBwbHlDb2xvcihjb25maWd1cmF0aW9uLCB2YWx1ZSwgZm9ybWF0VHlwZSk7XG59XG5leHBvcnRzLnByZXR0eSA9IHByZXR0eTtcbmZ1bmN0aW9uIHByZXR0eUxpc3QoY29uZmlndXJhdGlvbiwgdmFsdWVzLCBmb3JtYXRUeXBlLCB7IHNlcGFyYXRvciA9IGAsIGAgfSA9IHt9KSB7XG4gICAgcmV0dXJuIFsuLi52YWx1ZXNdLm1hcCh2YWx1ZSA9PiBwcmV0dHkoY29uZmlndXJhdGlvbiwgdmFsdWUsIGZvcm1hdFR5cGUpKS5qb2luKHNlcGFyYXRvcik7XG59XG5leHBvcnRzLnByZXR0eUxpc3QgPSBwcmV0dHlMaXN0O1xuZnVuY3Rpb24ganNvbih2YWx1ZSwgZm9ybWF0VHlwZSkge1xuICAgIGlmICh2YWx1ZSA9PT0gbnVsbClcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0cmFuc2Zvcm1zLCBmb3JtYXRUeXBlKSkge1xuICAgICAgICBtaXNjVXRpbHMub3ZlcnJpZGVUeXBlKGZvcm1hdFR5cGUpO1xuICAgICAgICByZXR1cm4gdHJhbnNmb3Jtc1tmb3JtYXRUeXBlXS5qc29uKHZhbHVlKTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gYHN0cmluZ2ApXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQXNzZXJ0aW9uIGZhaWxlZDogRXhwZWN0ZWQgdGhlIHZhbHVlIHRvIGJlIGEgc3RyaW5nLCBnb3QgJHt0eXBlb2YgdmFsdWV9YCk7XG4gICAgcmV0dXJuIHZhbHVlO1xufVxuZXhwb3J0cy5qc29uID0ganNvbjtcbmZ1bmN0aW9uIGpzb25PclByZXR0eShvdXRwdXRKc29uLCBjb25maWd1cmF0aW9uLCBbdmFsdWUsIGZvcm1hdFR5cGVdKSB7XG4gICAgcmV0dXJuIG91dHB1dEpzb25cbiAgICAgICAgPyBqc29uKHZhbHVlLCBmb3JtYXRUeXBlKVxuICAgICAgICA6IHByZXR0eShjb25maWd1cmF0aW9uLCB2YWx1ZSwgZm9ybWF0VHlwZSk7XG59XG5leHBvcnRzLmpzb25PclByZXR0eSA9IGpzb25PclByZXR0eTtcbmZ1bmN0aW9uIG1hcmsoY29uZmlndXJhdGlvbikge1xuICAgIHJldHVybiB7XG4gICAgICAgIENoZWNrOiBhcHBseUNvbG9yKGNvbmZpZ3VyYXRpb24sIGBcdTI3MTNgLCBgZ3JlZW5gKSxcbiAgICAgICAgQ3Jvc3M6IGFwcGx5Q29sb3IoY29uZmlndXJhdGlvbiwgYFx1MjcxOGAsIGByZWRgKSxcbiAgICAgICAgUXVlc3Rpb246IGFwcGx5Q29sb3IoY29uZmlndXJhdGlvbiwgYD9gLCBgY3lhbmApLFxuICAgIH07XG59XG5leHBvcnRzLm1hcmsgPSBtYXJrO1xuZnVuY3Rpb24gcHJldHR5RmllbGQoY29uZmlndXJhdGlvbiwgeyBsYWJlbCwgdmFsdWU6IFt2YWx1ZSwgZm9ybWF0VHlwZV0gfSkge1xuICAgIHJldHVybiBgJHtwcmV0dHkoY29uZmlndXJhdGlvbiwgbGFiZWwsIGV4cG9ydHMuVHlwZS5DT0RFKX06ICR7cHJldHR5KGNvbmZpZ3VyYXRpb24sIHZhbHVlLCBmb3JtYXRUeXBlKX1gO1xufVxuZXhwb3J0cy5wcmV0dHlGaWVsZCA9IHByZXR0eUZpZWxkO1xudmFyIExvZ0xldmVsO1xuKGZ1bmN0aW9uIChMb2dMZXZlbCkge1xuICAgIExvZ0xldmVsW1wiRXJyb3JcIl0gPSBcImVycm9yXCI7XG4gICAgTG9nTGV2ZWxbXCJXYXJuaW5nXCJdID0gXCJ3YXJuaW5nXCI7XG4gICAgTG9nTGV2ZWxbXCJJbmZvXCJdID0gXCJpbmZvXCI7XG4gICAgTG9nTGV2ZWxbXCJEaXNjYXJkXCJdID0gXCJkaXNjYXJkXCI7XG59KShMb2dMZXZlbCA9IGV4cG9ydHMuTG9nTGV2ZWwgfHwgKGV4cG9ydHMuTG9nTGV2ZWwgPSB7fSkpO1xuLyoqXG4gKiBBZGQgc3VwcG9ydCBzdXBwb3J0IGZvciB0aGUgYGxvZ0ZpbHRlcnNgIHNldHRpbmcgdG8gdGhlIHNwZWNpZmllZCBSZXBvcnRcbiAqIGluc3RhbmNlLlxuICovXG5mdW5jdGlvbiBhZGRMb2dGaWx0ZXJTdXBwb3J0KHJlcG9ydCwgeyBjb25maWd1cmF0aW9uIH0pIHtcbiAgICBjb25zdCBsb2dGaWx0ZXJzID0gY29uZmlndXJhdGlvbi5nZXQoYGxvZ0ZpbHRlcnNgKTtcbiAgICBjb25zdCBsb2dGaWx0ZXJzQnlDb2RlID0gbmV3IE1hcCgpO1xuICAgIGNvbnN0IGxvZ0ZpbHRlcnNCeVRleHQgPSBuZXcgTWFwKCk7XG4gICAgY29uc3QgbG9nRmlsdGVyc0J5UGF0dGVybk1hdGNoZXIgPSBbXTtcbiAgICBmb3IgKGNvbnN0IGZpbHRlciBvZiBsb2dGaWx0ZXJzKSB7XG4gICAgICAgIGNvbnN0IGxldmVsID0gZmlsdGVyLmdldChgbGV2ZWxgKTtcbiAgICAgICAgaWYgKHR5cGVvZiBsZXZlbCA9PT0gYHVuZGVmaW5lZGApXG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgY29uc3QgY29kZSA9IGZpbHRlci5nZXQoYGNvZGVgKTtcbiAgICAgICAgaWYgKHR5cGVvZiBjb2RlICE9PSBgdW5kZWZpbmVkYClcbiAgICAgICAgICAgIGxvZ0ZpbHRlcnNCeUNvZGUuc2V0KGNvZGUsIGxldmVsKTtcbiAgICAgICAgY29uc3QgdGV4dCA9IGZpbHRlci5nZXQoYHRleHRgKTtcbiAgICAgICAgaWYgKHR5cGVvZiB0ZXh0ICE9PSBgdW5kZWZpbmVkYClcbiAgICAgICAgICAgIGxvZ0ZpbHRlcnNCeVRleHQuc2V0KHRleHQsIGxldmVsKTtcbiAgICAgICAgY29uc3QgcGF0dGVybiA9IGZpbHRlci5nZXQoYHBhdHRlcm5gKTtcbiAgICAgICAgaWYgKHR5cGVvZiBwYXR0ZXJuICE9PSBgdW5kZWZpbmVkYCkge1xuICAgICAgICAgICAgbG9nRmlsdGVyc0J5UGF0dGVybk1hdGNoZXIucHVzaChbbWljcm9tYXRjaF8xLmRlZmF1bHQubWF0Y2hlcihwYXR0ZXJuLCB7IGNvbnRhaW5zOiB0cnVlIH0pLCBsZXZlbF0pO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vIEhpZ2hlciBwcmlvcml0eSB0byB0aGUgbGFzdCBwYXR0ZXJucywganVzdCBsaWtlIG90aGVyIGZpbHRlcnNcbiAgICBsb2dGaWx0ZXJzQnlQYXR0ZXJuTWF0Y2hlci5yZXZlcnNlKCk7XG4gICAgY29uc3QgZmluZExvZ0xldmVsID0gKG5hbWUsIHRleHQsIGRlZmF1bHRMZXZlbCkgPT4ge1xuICAgICAgICBpZiAobmFtZSA9PT0gbnVsbCB8fCBuYW1lID09PSBNZXNzYWdlTmFtZV8xLk1lc3NhZ2VOYW1lLlVOTkFNRUQpXG4gICAgICAgICAgICByZXR1cm4gZGVmYXVsdExldmVsO1xuICAgICAgICAvLyBBdm9pZCBwcm9jZXNzaW5nIHRoZSBzdHJpbmcgdW5sZXNzIHdlIGtub3cgd2UnbGwgYWN0dWFsbHkgbmVlZCBpdFxuICAgICAgICBjb25zdCBzdHJpcHBlZFRleHQgPSBsb2dGaWx0ZXJzQnlUZXh0LnNpemUgPiAwIHx8IGxvZ0ZpbHRlcnNCeVBhdHRlcm5NYXRjaGVyLmxlbmd0aCA+IDBcbiAgICAgICAgICAgID8gKDAsIHN0cmlwX2Fuc2lfMS5kZWZhdWx0KSh0ZXh0KVxuICAgICAgICAgICAgOiB0ZXh0O1xuICAgICAgICBpZiAobG9nRmlsdGVyc0J5VGV4dC5zaXplID4gMCkge1xuICAgICAgICAgICAgY29uc3QgbGV2ZWwgPSBsb2dGaWx0ZXJzQnlUZXh0LmdldChzdHJpcHBlZFRleHQpO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBsZXZlbCAhPT0gYHVuZGVmaW5lZGApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbGV2ZWwgIT09IG51bGwgJiYgbGV2ZWwgIT09IHZvaWQgMCA/IGxldmVsIDogZGVmYXVsdExldmVsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChsb2dGaWx0ZXJzQnlQYXR0ZXJuTWF0Y2hlci5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IFtmaWx0ZXJNYXRjaGVyLCBmaWx0ZXJMZXZlbF0gb2YgbG9nRmlsdGVyc0J5UGF0dGVybk1hdGNoZXIpIHtcbiAgICAgICAgICAgICAgICBpZiAoZmlsdGVyTWF0Y2hlcihzdHJpcHBlZFRleHQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmaWx0ZXJMZXZlbCAhPT0gbnVsbCAmJiBmaWx0ZXJMZXZlbCAhPT0gdm9pZCAwID8gZmlsdGVyTGV2ZWwgOiBkZWZhdWx0TGV2ZWw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChsb2dGaWx0ZXJzQnlDb2RlLnNpemUgPiAwKSB7XG4gICAgICAgICAgICBjb25zdCBsZXZlbCA9IGxvZ0ZpbHRlcnNCeUNvZGUuZ2V0KCgwLCBNZXNzYWdlTmFtZV8xLnN0cmluZ2lmeU1lc3NhZ2VOYW1lKShuYW1lKSk7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGxldmVsICE9PSBgdW5kZWZpbmVkYCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBsZXZlbCAhPT0gbnVsbCAmJiBsZXZlbCAhPT0gdm9pZCAwID8gbGV2ZWwgOiBkZWZhdWx0TGV2ZWw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRlZmF1bHRMZXZlbDtcbiAgICB9O1xuICAgIGNvbnN0IHJlcG9ydEluZm8gPSByZXBvcnQucmVwb3J0SW5mbztcbiAgICBjb25zdCByZXBvcnRXYXJuaW5nID0gcmVwb3J0LnJlcG9ydFdhcm5pbmc7XG4gICAgY29uc3QgcmVwb3J0RXJyb3IgPSByZXBvcnQucmVwb3J0RXJyb3I7XG4gICAgY29uc3Qgcm91dGVNZXNzYWdlID0gZnVuY3Rpb24gKHJlcG9ydCwgbmFtZSwgdGV4dCwgbGV2ZWwpIHtcbiAgICAgICAgc3dpdGNoIChmaW5kTG9nTGV2ZWwobmFtZSwgdGV4dCwgbGV2ZWwpKSB7XG4gICAgICAgICAgICBjYXNlIExvZ0xldmVsLkluZm86XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICByZXBvcnRJbmZvLmNhbGwocmVwb3J0LCBuYW1lLCB0ZXh0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIExvZ0xldmVsLldhcm5pbmc6XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICByZXBvcnRXYXJuaW5nLmNhbGwocmVwb3J0LCBuYW1lICE9PSBudWxsICYmIG5hbWUgIT09IHZvaWQgMCA/IG5hbWUgOiBNZXNzYWdlTmFtZV8xLk1lc3NhZ2VOYW1lLlVOTkFNRUQsIHRleHQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgTG9nTGV2ZWwuRXJyb3I6XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICByZXBvcnRFcnJvci5jYWxsKHJlcG9ydCwgbmFtZSAhPT0gbnVsbCAmJiBuYW1lICE9PSB2b2lkIDAgPyBuYW1lIDogTWVzc2FnZU5hbWVfMS5NZXNzYWdlTmFtZS5VTk5BTUVELCB0ZXh0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHJlcG9ydC5yZXBvcnRJbmZvID0gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcbiAgICAgICAgcmV0dXJuIHJvdXRlTWVzc2FnZSh0aGlzLCAuLi5hcmdzLCBMb2dMZXZlbC5JbmZvKTtcbiAgICB9O1xuICAgIHJlcG9ydC5yZXBvcnRXYXJuaW5nID0gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcbiAgICAgICAgcmV0dXJuIHJvdXRlTWVzc2FnZSh0aGlzLCAuLi5hcmdzLCBMb2dMZXZlbC5XYXJuaW5nKTtcbiAgICB9O1xuICAgIHJlcG9ydC5yZXBvcnRFcnJvciA9IGZ1bmN0aW9uICguLi5hcmdzKSB7XG4gICAgICAgIHJldHVybiByb3V0ZU1lc3NhZ2UodGhpcywgLi4uYXJncywgTG9nTGV2ZWwuRXJyb3IpO1xuICAgIH07XG59XG5leHBvcnRzLmFkZExvZ0ZpbHRlclN1cHBvcnQgPSBhZGRMb2dGaWx0ZXJTdXBwb3J0O1xuIiwgIid1c2Ugc3RyaWN0JztcblxubW9kdWxlLmV4cG9ydHMgPSAoLi4uYXJndW1lbnRzXykgPT4ge1xuXHRyZXR1cm4gWy4uLm5ldyBTZXQoW10uY29uY2F0KC4uLmFyZ3VtZW50c18pKV07XG59O1xuIiwgIid1c2Ugc3RyaWN0J1xuLypcbiAqIG1lcmdlMlxuICogaHR0cHM6Ly9naXRodWIuY29tL3RlYW1iaXRpb24vbWVyZ2UyXG4gKlxuICogQ29weXJpZ2h0IChjKSAyMDE0LTIwMjAgVGVhbWJpdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLlxuICovXG5jb25zdCBTdHJlYW0gPSByZXF1aXJlKCdzdHJlYW0nKVxuY29uc3QgUGFzc1Rocm91Z2ggPSBTdHJlYW0uUGFzc1Rocm91Z2hcbmNvbnN0IHNsaWNlID0gQXJyYXkucHJvdG90eXBlLnNsaWNlXG5cbm1vZHVsZS5leHBvcnRzID0gbWVyZ2UyXG5cbmZ1bmN0aW9uIG1lcmdlMiAoKSB7XG4gIGNvbnN0IHN0cmVhbXNRdWV1ZSA9IFtdXG4gIGNvbnN0IGFyZ3MgPSBzbGljZS5jYWxsKGFyZ3VtZW50cylcbiAgbGV0IG1lcmdpbmcgPSBmYWxzZVxuICBsZXQgb3B0aW9ucyA9IGFyZ3NbYXJncy5sZW5ndGggLSAxXVxuXG4gIGlmIChvcHRpb25zICYmICFBcnJheS5pc0FycmF5KG9wdGlvbnMpICYmIG9wdGlvbnMucGlwZSA9PSBudWxsKSB7XG4gICAgYXJncy5wb3AoKVxuICB9IGVsc2Uge1xuICAgIG9wdGlvbnMgPSB7fVxuICB9XG5cbiAgY29uc3QgZG9FbmQgPSBvcHRpb25zLmVuZCAhPT0gZmFsc2VcbiAgY29uc3QgZG9QaXBlRXJyb3IgPSBvcHRpb25zLnBpcGVFcnJvciA9PT0gdHJ1ZVxuICBpZiAob3B0aW9ucy5vYmplY3RNb2RlID09IG51bGwpIHtcbiAgICBvcHRpb25zLm9iamVjdE1vZGUgPSB0cnVlXG4gIH1cbiAgaWYgKG9wdGlvbnMuaGlnaFdhdGVyTWFyayA9PSBudWxsKSB7XG4gICAgb3B0aW9ucy5oaWdoV2F0ZXJNYXJrID0gNjQgKiAxMDI0XG4gIH1cbiAgY29uc3QgbWVyZ2VkU3RyZWFtID0gUGFzc1Rocm91Z2gob3B0aW9ucylcblxuICBmdW5jdGlvbiBhZGRTdHJlYW0gKCkge1xuICAgIGZvciAobGV0IGkgPSAwLCBsZW4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIHN0cmVhbXNRdWV1ZS5wdXNoKHBhdXNlU3RyZWFtcyhhcmd1bWVudHNbaV0sIG9wdGlvbnMpKVxuICAgIH1cbiAgICBtZXJnZVN0cmVhbSgpXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIGZ1bmN0aW9uIG1lcmdlU3RyZWFtICgpIHtcbiAgICBpZiAobWVyZ2luZykge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIG1lcmdpbmcgPSB0cnVlXG5cbiAgICBsZXQgc3RyZWFtcyA9IHN0cmVhbXNRdWV1ZS5zaGlmdCgpXG4gICAgaWYgKCFzdHJlYW1zKSB7XG4gICAgICBwcm9jZXNzLm5leHRUaWNrKGVuZFN0cmVhbSlcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoc3RyZWFtcykpIHtcbiAgICAgIHN0cmVhbXMgPSBbc3RyZWFtc11cbiAgICB9XG5cbiAgICBsZXQgcGlwZXNDb3VudCA9IHN0cmVhbXMubGVuZ3RoICsgMVxuXG4gICAgZnVuY3Rpb24gbmV4dCAoKSB7XG4gICAgICBpZiAoLS1waXBlc0NvdW50ID4gMCkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIG1lcmdpbmcgPSBmYWxzZVxuICAgICAgbWVyZ2VTdHJlYW0oKVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHBpcGUgKHN0cmVhbSkge1xuICAgICAgZnVuY3Rpb24gb25lbmQgKCkge1xuICAgICAgICBzdHJlYW0ucmVtb3ZlTGlzdGVuZXIoJ21lcmdlMlVucGlwZUVuZCcsIG9uZW5kKVxuICAgICAgICBzdHJlYW0ucmVtb3ZlTGlzdGVuZXIoJ2VuZCcsIG9uZW5kKVxuICAgICAgICBpZiAoZG9QaXBlRXJyb3IpIHtcbiAgICAgICAgICBzdHJlYW0ucmVtb3ZlTGlzdGVuZXIoJ2Vycm9yJywgb25lcnJvcilcbiAgICAgICAgfVxuICAgICAgICBuZXh0KClcbiAgICAgIH1cbiAgICAgIGZ1bmN0aW9uIG9uZXJyb3IgKGVycikge1xuICAgICAgICBtZXJnZWRTdHJlYW0uZW1pdCgnZXJyb3InLCBlcnIpXG4gICAgICB9XG4gICAgICAvLyBza2lwIGVuZGVkIHN0cmVhbVxuICAgICAgaWYgKHN0cmVhbS5fcmVhZGFibGVTdGF0ZS5lbmRFbWl0dGVkKSB7XG4gICAgICAgIHJldHVybiBuZXh0KClcbiAgICAgIH1cblxuICAgICAgc3RyZWFtLm9uKCdtZXJnZTJVbnBpcGVFbmQnLCBvbmVuZClcbiAgICAgIHN0cmVhbS5vbignZW5kJywgb25lbmQpXG5cbiAgICAgIGlmIChkb1BpcGVFcnJvcikge1xuICAgICAgICBzdHJlYW0ub24oJ2Vycm9yJywgb25lcnJvcilcbiAgICAgIH1cblxuICAgICAgc3RyZWFtLnBpcGUobWVyZ2VkU3RyZWFtLCB7IGVuZDogZmFsc2UgfSlcbiAgICAgIC8vIGNvbXBhdGlibGUgZm9yIG9sZCBzdHJlYW1cbiAgICAgIHN0cmVhbS5yZXN1bWUoKVxuICAgIH1cblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3RyZWFtcy5sZW5ndGg7IGkrKykge1xuICAgICAgcGlwZShzdHJlYW1zW2ldKVxuICAgIH1cblxuICAgIG5leHQoKVxuICB9XG5cbiAgZnVuY3Rpb24gZW5kU3RyZWFtICgpIHtcbiAgICBtZXJnaW5nID0gZmFsc2VcbiAgICAvLyBlbWl0ICdxdWV1ZURyYWluJyB3aGVuIGFsbCBzdHJlYW1zIG1lcmdlZC5cbiAgICBtZXJnZWRTdHJlYW0uZW1pdCgncXVldWVEcmFpbicpXG4gICAgaWYgKGRvRW5kKSB7XG4gICAgICBtZXJnZWRTdHJlYW0uZW5kKClcbiAgICB9XG4gIH1cblxuICBtZXJnZWRTdHJlYW0uc2V0TWF4TGlzdGVuZXJzKDApXG4gIG1lcmdlZFN0cmVhbS5hZGQgPSBhZGRTdHJlYW1cbiAgbWVyZ2VkU3RyZWFtLm9uKCd1bnBpcGUnLCBmdW5jdGlvbiAoc3RyZWFtKSB7XG4gICAgc3RyZWFtLmVtaXQoJ21lcmdlMlVucGlwZUVuZCcpXG4gIH0pXG5cbiAgaWYgKGFyZ3MubGVuZ3RoKSB7XG4gICAgYWRkU3RyZWFtLmFwcGx5KG51bGwsIGFyZ3MpXG4gIH1cbiAgcmV0dXJuIG1lcmdlZFN0cmVhbVxufVxuXG4vLyBjaGVjayBhbmQgcGF1c2Ugc3RyZWFtcyBmb3IgcGlwZS5cbmZ1bmN0aW9uIHBhdXNlU3RyZWFtcyAoc3RyZWFtcywgb3B0aW9ucykge1xuICBpZiAoIUFycmF5LmlzQXJyYXkoc3RyZWFtcykpIHtcbiAgICAvLyBCYWNrd2FyZHMtY29tcGF0IHdpdGggb2xkLXN0eWxlIHN0cmVhbXNcbiAgICBpZiAoIXN0cmVhbXMuX3JlYWRhYmxlU3RhdGUgJiYgc3RyZWFtcy5waXBlKSB7XG4gICAgICBzdHJlYW1zID0gc3RyZWFtcy5waXBlKFBhc3NUaHJvdWdoKG9wdGlvbnMpKVxuICAgIH1cbiAgICBpZiAoIXN0cmVhbXMuX3JlYWRhYmxlU3RhdGUgfHwgIXN0cmVhbXMucGF1c2UgfHwgIXN0cmVhbXMucGlwZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdPbmx5IHJlYWRhYmxlIHN0cmVhbSBjYW4gYmUgbWVyZ2VkLicpXG4gICAgfVxuICAgIHN0cmVhbXMucGF1c2UoKVxuICB9IGVsc2Uge1xuICAgIGZvciAobGV0IGkgPSAwLCBsZW4gPSBzdHJlYW1zLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICBzdHJlYW1zW2ldID0gcGF1c2VTdHJlYW1zKHN0cmVhbXNbaV0sIG9wdGlvbnMpXG4gICAgfVxuICB9XG4gIHJldHVybiBzdHJlYW1zXG59XG4iLCAiXCJ1c2Ugc3RyaWN0XCI7XHJcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcclxuZXhwb3J0cy5zcGxpdFdoZW4gPSBleHBvcnRzLmZsYXR0ZW4gPSB2b2lkIDA7XHJcbmZ1bmN0aW9uIGZsYXR0ZW4oaXRlbXMpIHtcclxuICAgIHJldHVybiBpdGVtcy5yZWR1Y2UoKGNvbGxlY3Rpb24sIGl0ZW0pID0+IFtdLmNvbmNhdChjb2xsZWN0aW9uLCBpdGVtKSwgW10pO1xyXG59XHJcbmV4cG9ydHMuZmxhdHRlbiA9IGZsYXR0ZW47XHJcbmZ1bmN0aW9uIHNwbGl0V2hlbihpdGVtcywgcHJlZGljYXRlKSB7XHJcbiAgICBjb25zdCByZXN1bHQgPSBbW11dO1xyXG4gICAgbGV0IGdyb3VwSW5kZXggPSAwO1xyXG4gICAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7XHJcbiAgICAgICAgaWYgKHByZWRpY2F0ZShpdGVtKSkge1xyXG4gICAgICAgICAgICBncm91cEluZGV4Kys7XHJcbiAgICAgICAgICAgIHJlc3VsdFtncm91cEluZGV4XSA9IFtdO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgcmVzdWx0W2dyb3VwSW5kZXhdLnB1c2goaXRlbSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxufVxyXG5leHBvcnRzLnNwbGl0V2hlbiA9IHNwbGl0V2hlbjtcclxuIiwgIlwidXNlIHN0cmljdFwiO1xyXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XHJcbmV4cG9ydHMuaXNFbm9lbnRDb2RlRXJyb3IgPSB2b2lkIDA7XHJcbmZ1bmN0aW9uIGlzRW5vZW50Q29kZUVycm9yKGVycm9yKSB7XHJcbiAgICByZXR1cm4gZXJyb3IuY29kZSA9PT0gJ0VOT0VOVCc7XHJcbn1cclxuZXhwb3J0cy5pc0Vub2VudENvZGVFcnJvciA9IGlzRW5vZW50Q29kZUVycm9yO1xyXG4iLCAiXCJ1c2Ugc3RyaWN0XCI7XHJcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcclxuZXhwb3J0cy5jcmVhdGVEaXJlbnRGcm9tU3RhdHMgPSB2b2lkIDA7XHJcbmNsYXNzIERpcmVudEZyb21TdGF0cyB7XHJcbiAgICBjb25zdHJ1Y3RvcihuYW1lLCBzdGF0cykge1xyXG4gICAgICAgIHRoaXMubmFtZSA9IG5hbWU7XHJcbiAgICAgICAgdGhpcy5pc0Jsb2NrRGV2aWNlID0gc3RhdHMuaXNCbG9ja0RldmljZS5iaW5kKHN0YXRzKTtcclxuICAgICAgICB0aGlzLmlzQ2hhcmFjdGVyRGV2aWNlID0gc3RhdHMuaXNDaGFyYWN0ZXJEZXZpY2UuYmluZChzdGF0cyk7XHJcbiAgICAgICAgdGhpcy5pc0RpcmVjdG9yeSA9IHN0YXRzLmlzRGlyZWN0b3J5LmJpbmQoc3RhdHMpO1xyXG4gICAgICAgIHRoaXMuaXNGSUZPID0gc3RhdHMuaXNGSUZPLmJpbmQoc3RhdHMpO1xyXG4gICAgICAgIHRoaXMuaXNGaWxlID0gc3RhdHMuaXNGaWxlLmJpbmQoc3RhdHMpO1xyXG4gICAgICAgIHRoaXMuaXNTb2NrZXQgPSBzdGF0cy5pc1NvY2tldC5iaW5kKHN0YXRzKTtcclxuICAgICAgICB0aGlzLmlzU3ltYm9saWNMaW5rID0gc3RhdHMuaXNTeW1ib2xpY0xpbmsuYmluZChzdGF0cyk7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gY3JlYXRlRGlyZW50RnJvbVN0YXRzKG5hbWUsIHN0YXRzKSB7XHJcbiAgICByZXR1cm4gbmV3IERpcmVudEZyb21TdGF0cyhuYW1lLCBzdGF0cyk7XHJcbn1cclxuZXhwb3J0cy5jcmVhdGVEaXJlbnRGcm9tU3RhdHMgPSBjcmVhdGVEaXJlbnRGcm9tU3RhdHM7XHJcbiIsICJcInVzZSBzdHJpY3RcIjtcclxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xyXG5leHBvcnRzLnJlbW92ZUxlYWRpbmdEb3RTZWdtZW50ID0gZXhwb3J0cy5lc2NhcGUgPSBleHBvcnRzLm1ha2VBYnNvbHV0ZSA9IGV4cG9ydHMudW5peGlmeSA9IHZvaWQgMDtcclxuY29uc3QgcGF0aCA9IHJlcXVpcmUoXCJwYXRoXCIpO1xyXG5jb25zdCBMRUFESU5HX0RPVF9TRUdNRU5UX0NIQVJBQ1RFUlNfQ09VTlQgPSAyOyAvLyAuLyBvciAuXFxcXFxyXG5jb25zdCBVTkVTQ0FQRURfR0xPQl9TWU1CT0xTX1JFID0gLyhcXFxcPykoWygpKj9bXFxde3x9XXxeIXxbIStAXSg/PVxcKCkpL2c7XHJcbi8qKlxyXG4gKiBEZXNpZ25lZCB0byB3b3JrIG9ubHkgd2l0aCBzaW1wbGUgcGF0aHM6IGBkaXJcXFxcZmlsZWAuXHJcbiAqL1xyXG5mdW5jdGlvbiB1bml4aWZ5KGZpbGVwYXRoKSB7XHJcbiAgICByZXR1cm4gZmlsZXBhdGgucmVwbGFjZSgvXFxcXC9nLCAnLycpO1xyXG59XHJcbmV4cG9ydHMudW5peGlmeSA9IHVuaXhpZnk7XHJcbmZ1bmN0aW9uIG1ha2VBYnNvbHV0ZShjd2QsIGZpbGVwYXRoKSB7XHJcbiAgICByZXR1cm4gcGF0aC5yZXNvbHZlKGN3ZCwgZmlsZXBhdGgpO1xyXG59XHJcbmV4cG9ydHMubWFrZUFic29sdXRlID0gbWFrZUFic29sdXRlO1xyXG5mdW5jdGlvbiBlc2NhcGUocGF0dGVybikge1xyXG4gICAgcmV0dXJuIHBhdHRlcm4ucmVwbGFjZShVTkVTQ0FQRURfR0xPQl9TWU1CT0xTX1JFLCAnXFxcXCQyJyk7XHJcbn1cclxuZXhwb3J0cy5lc2NhcGUgPSBlc2NhcGU7XHJcbmZ1bmN0aW9uIHJlbW92ZUxlYWRpbmdEb3RTZWdtZW50KGVudHJ5KSB7XHJcbiAgICAvLyBXZSBkbyBub3QgdXNlIGBzdGFydHNXaXRoYCBiZWNhdXNlIHRoaXMgaXMgMTB4IHNsb3dlciB0aGFuIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gZm9yIHNvbWUgY2FzZXMuXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L3ByZWZlci1zdHJpbmctc3RhcnRzLWVuZHMtd2l0aFxyXG4gICAgaWYgKGVudHJ5LmNoYXJBdCgwKSA9PT0gJy4nKSB7XHJcbiAgICAgICAgY29uc3Qgc2Vjb25kQ2hhcmFjdGVyeSA9IGVudHJ5LmNoYXJBdCgxKTtcclxuICAgICAgICBpZiAoc2Vjb25kQ2hhcmFjdGVyeSA9PT0gJy8nIHx8IHNlY29uZENoYXJhY3RlcnkgPT09ICdcXFxcJykge1xyXG4gICAgICAgICAgICByZXR1cm4gZW50cnkuc2xpY2UoTEVBRElOR19ET1RfU0VHTUVOVF9DSEFSQUNURVJTX0NPVU5UKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZW50cnk7XHJcbn1cclxuZXhwb3J0cy5yZW1vdmVMZWFkaW5nRG90U2VnbWVudCA9IHJlbW92ZUxlYWRpbmdEb3RTZWdtZW50O1xyXG4iLCAiLyohXG4gKiBpcy1leHRnbG9iIDxodHRwczovL2dpdGh1Yi5jb20vam9uc2NobGlua2VydC9pcy1leHRnbG9iPlxuICpcbiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDE2LCBKb24gU2NobGlua2VydC5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS5cbiAqL1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGlzRXh0Z2xvYihzdHIpIHtcbiAgaWYgKHR5cGVvZiBzdHIgIT09ICdzdHJpbmcnIHx8IHN0ciA9PT0gJycpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICB2YXIgbWF0Y2g7XG4gIHdoaWxlICgobWF0Y2ggPSAvKFxcXFwpLnwoW0A/ISsqXVxcKC4qXFwpKS9nLmV4ZWMoc3RyKSkpIHtcbiAgICBpZiAobWF0Y2hbMl0pIHJldHVybiB0cnVlO1xuICAgIHN0ciA9IHN0ci5zbGljZShtYXRjaC5pbmRleCArIG1hdGNoWzBdLmxlbmd0aCk7XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59O1xuIiwgIi8qIVxuICogaXMtZ2xvYiA8aHR0cHM6Ly9naXRodWIuY29tL2pvbnNjaGxpbmtlcnQvaXMtZ2xvYj5cbiAqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNywgSm9uIFNjaGxpbmtlcnQuXG4gKiBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuXG4gKi9cblxudmFyIGlzRXh0Z2xvYiA9IHJlcXVpcmUoJ2lzLWV4dGdsb2InKTtcbnZhciBjaGFycyA9IHsgJ3snOiAnfScsICcoJzogJyknLCAnWyc6ICddJ307XG52YXIgc3RyaWN0Q2hlY2sgPSBmdW5jdGlvbihzdHIpIHtcbiAgaWYgKHN0clswXSA9PT0gJyEnKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgdmFyIGluZGV4ID0gMDtcbiAgdmFyIHBpcGVJbmRleCA9IC0yO1xuICB2YXIgY2xvc2VTcXVhcmVJbmRleCA9IC0yO1xuICB2YXIgY2xvc2VDdXJseUluZGV4ID0gLTI7XG4gIHZhciBjbG9zZVBhcmVuSW5kZXggPSAtMjtcbiAgdmFyIGJhY2tTbGFzaEluZGV4ID0gLTI7XG4gIHdoaWxlIChpbmRleCA8IHN0ci5sZW5ndGgpIHtcbiAgICBpZiAoc3RyW2luZGV4XSA9PT0gJyonKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoc3RyW2luZGV4ICsgMV0gPT09ICc/JyAmJiAvW1xcXS4rKV0vLnRlc3Qoc3RyW2luZGV4XSkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGlmIChjbG9zZVNxdWFyZUluZGV4ICE9PSAtMSAmJiBzdHJbaW5kZXhdID09PSAnWycgJiYgc3RyW2luZGV4ICsgMV0gIT09ICddJykge1xuICAgICAgaWYgKGNsb3NlU3F1YXJlSW5kZXggPCBpbmRleCkge1xuICAgICAgICBjbG9zZVNxdWFyZUluZGV4ID0gc3RyLmluZGV4T2YoJ10nLCBpbmRleCk7XG4gICAgICB9XG4gICAgICBpZiAoY2xvc2VTcXVhcmVJbmRleCA+IGluZGV4KSB7XG4gICAgICAgIGlmIChiYWNrU2xhc2hJbmRleCA9PT0gLTEgfHwgYmFja1NsYXNoSW5kZXggPiBjbG9zZVNxdWFyZUluZGV4KSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgYmFja1NsYXNoSW5kZXggPSBzdHIuaW5kZXhPZignXFxcXCcsIGluZGV4KTtcbiAgICAgICAgaWYgKGJhY2tTbGFzaEluZGV4ID09PSAtMSB8fCBiYWNrU2xhc2hJbmRleCA+IGNsb3NlU3F1YXJlSW5kZXgpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChjbG9zZUN1cmx5SW5kZXggIT09IC0xICYmIHN0cltpbmRleF0gPT09ICd7JyAmJiBzdHJbaW5kZXggKyAxXSAhPT0gJ30nKSB7XG4gICAgICBjbG9zZUN1cmx5SW5kZXggPSBzdHIuaW5kZXhPZignfScsIGluZGV4KTtcbiAgICAgIGlmIChjbG9zZUN1cmx5SW5kZXggPiBpbmRleCkge1xuICAgICAgICBiYWNrU2xhc2hJbmRleCA9IHN0ci5pbmRleE9mKCdcXFxcJywgaW5kZXgpO1xuICAgICAgICBpZiAoYmFja1NsYXNoSW5kZXggPT09IC0xIHx8IGJhY2tTbGFzaEluZGV4ID4gY2xvc2VDdXJseUluZGV4KSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoY2xvc2VQYXJlbkluZGV4ICE9PSAtMSAmJiBzdHJbaW5kZXhdID09PSAnKCcgJiYgc3RyW2luZGV4ICsgMV0gPT09ICc/JyAmJiAvWzohPV0vLnRlc3Qoc3RyW2luZGV4ICsgMl0pICYmIHN0cltpbmRleCArIDNdICE9PSAnKScpIHtcbiAgICAgIGNsb3NlUGFyZW5JbmRleCA9IHN0ci5pbmRleE9mKCcpJywgaW5kZXgpO1xuICAgICAgaWYgKGNsb3NlUGFyZW5JbmRleCA+IGluZGV4KSB7XG4gICAgICAgIGJhY2tTbGFzaEluZGV4ID0gc3RyLmluZGV4T2YoJ1xcXFwnLCBpbmRleCk7XG4gICAgICAgIGlmIChiYWNrU2xhc2hJbmRleCA9PT0gLTEgfHwgYmFja1NsYXNoSW5kZXggPiBjbG9zZVBhcmVuSW5kZXgpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChwaXBlSW5kZXggIT09IC0xICYmIHN0cltpbmRleF0gPT09ICcoJyAmJiBzdHJbaW5kZXggKyAxXSAhPT0gJ3wnKSB7XG4gICAgICBpZiAocGlwZUluZGV4IDwgaW5kZXgpIHtcbiAgICAgICAgcGlwZUluZGV4ID0gc3RyLmluZGV4T2YoJ3wnLCBpbmRleCk7XG4gICAgICB9XG4gICAgICBpZiAocGlwZUluZGV4ICE9PSAtMSAmJiBzdHJbcGlwZUluZGV4ICsgMV0gIT09ICcpJykge1xuICAgICAgICBjbG9zZVBhcmVuSW5kZXggPSBzdHIuaW5kZXhPZignKScsIHBpcGVJbmRleCk7XG4gICAgICAgIGlmIChjbG9zZVBhcmVuSW5kZXggPiBwaXBlSW5kZXgpIHtcbiAgICAgICAgICBiYWNrU2xhc2hJbmRleCA9IHN0ci5pbmRleE9mKCdcXFxcJywgcGlwZUluZGV4KTtcbiAgICAgICAgICBpZiAoYmFja1NsYXNoSW5kZXggPT09IC0xIHx8IGJhY2tTbGFzaEluZGV4ID4gY2xvc2VQYXJlbkluZGV4KSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoc3RyW2luZGV4XSA9PT0gJ1xcXFwnKSB7XG4gICAgICB2YXIgb3BlbiA9IHN0cltpbmRleCArIDFdO1xuICAgICAgaW5kZXggKz0gMjtcbiAgICAgIHZhciBjbG9zZSA9IGNoYXJzW29wZW5dO1xuXG4gICAgICBpZiAoY2xvc2UpIHtcbiAgICAgICAgdmFyIG4gPSBzdHIuaW5kZXhPZihjbG9zZSwgaW5kZXgpO1xuICAgICAgICBpZiAobiAhPT0gLTEpIHtcbiAgICAgICAgICBpbmRleCA9IG4gKyAxO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChzdHJbaW5kZXhdID09PSAnIScpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGluZGV4Kys7XG4gICAgfVxuICB9XG4gIHJldHVybiBmYWxzZTtcbn07XG5cbnZhciByZWxheGVkQ2hlY2sgPSBmdW5jdGlvbihzdHIpIHtcbiAgaWYgKHN0clswXSA9PT0gJyEnKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgdmFyIGluZGV4ID0gMDtcbiAgd2hpbGUgKGluZGV4IDwgc3RyLmxlbmd0aCkge1xuICAgIGlmICgvWyo/e30oKVtcXF1dLy50ZXN0KHN0cltpbmRleF0pKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoc3RyW2luZGV4XSA9PT0gJ1xcXFwnKSB7XG4gICAgICB2YXIgb3BlbiA9IHN0cltpbmRleCArIDFdO1xuICAgICAgaW5kZXggKz0gMjtcbiAgICAgIHZhciBjbG9zZSA9IGNoYXJzW29wZW5dO1xuXG4gICAgICBpZiAoY2xvc2UpIHtcbiAgICAgICAgdmFyIG4gPSBzdHIuaW5kZXhPZihjbG9zZSwgaW5kZXgpO1xuICAgICAgICBpZiAobiAhPT0gLTEpIHtcbiAgICAgICAgICBpbmRleCA9IG4gKyAxO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChzdHJbaW5kZXhdID09PSAnIScpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGluZGV4Kys7XG4gICAgfVxuICB9XG4gIHJldHVybiBmYWxzZTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gaXNHbG9iKHN0ciwgb3B0aW9ucykge1xuICBpZiAodHlwZW9mIHN0ciAhPT0gJ3N0cmluZycgfHwgc3RyID09PSAnJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmIChpc0V4dGdsb2Ioc3RyKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgdmFyIGNoZWNrID0gc3RyaWN0Q2hlY2s7XG5cbiAgLy8gb3B0aW9uYWxseSByZWxheCBjaGVja1xuICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLnN0cmljdCA9PT0gZmFsc2UpIHtcbiAgICBjaGVjayA9IHJlbGF4ZWRDaGVjaztcbiAgfVxuXG4gIHJldHVybiBjaGVjayhzdHIpO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG5cbnZhciBpc0dsb2IgPSByZXF1aXJlKCdpcy1nbG9iJyk7XG52YXIgcGF0aFBvc2l4RGlybmFtZSA9IHJlcXVpcmUoJ3BhdGgnKS5wb3NpeC5kaXJuYW1lO1xudmFyIGlzV2luMzIgPSByZXF1aXJlKCdvcycpLnBsYXRmb3JtKCkgPT09ICd3aW4zMic7XG5cbnZhciBzbGFzaCA9ICcvJztcbnZhciBiYWNrc2xhc2ggPSAvXFxcXC9nO1xudmFyIGVuY2xvc3VyZSA9IC9bXFx7XFxbXS4qW1xcfVxcXV0kLztcbnZhciBnbG9iYnkgPSAvKF58W15cXFxcXSkoW1xce1xcW118XFwoW15cXCldKyQpLztcbnZhciBlc2NhcGVkID0gL1xcXFwoW1xcIVxcKlxcP1xcfFxcW1xcXVxcKFxcKVxce1xcfV0pL2c7XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHN0clxuICogQHBhcmFtIHtPYmplY3R9IG9wdHNcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuZmxpcEJhY2tzbGFzaGVzPXRydWVdXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGdsb2JQYXJlbnQoc3RyLCBvcHRzKSB7XG4gIHZhciBvcHRpb25zID0gT2JqZWN0LmFzc2lnbih7IGZsaXBCYWNrc2xhc2hlczogdHJ1ZSB9LCBvcHRzKTtcblxuICAvLyBmbGlwIHdpbmRvd3MgcGF0aCBzZXBhcmF0b3JzXG4gIGlmIChvcHRpb25zLmZsaXBCYWNrc2xhc2hlcyAmJiBpc1dpbjMyICYmIHN0ci5pbmRleE9mKHNsYXNoKSA8IDApIHtcbiAgICBzdHIgPSBzdHIucmVwbGFjZShiYWNrc2xhc2gsIHNsYXNoKTtcbiAgfVxuXG4gIC8vIHNwZWNpYWwgY2FzZSBmb3Igc3RyaW5ncyBlbmRpbmcgaW4gZW5jbG9zdXJlIGNvbnRhaW5pbmcgcGF0aCBzZXBhcmF0b3JcbiAgaWYgKGVuY2xvc3VyZS50ZXN0KHN0cikpIHtcbiAgICBzdHIgKz0gc2xhc2g7XG4gIH1cblxuICAvLyBwcmVzZXJ2ZXMgZnVsbCBwYXRoIGluIGNhc2Ugb2YgdHJhaWxpbmcgcGF0aCBzZXBhcmF0b3JcbiAgc3RyICs9ICdhJztcblxuICAvLyByZW1vdmUgcGF0aCBwYXJ0cyB0aGF0IGFyZSBnbG9iYnlcbiAgZG8ge1xuICAgIHN0ciA9IHBhdGhQb3NpeERpcm5hbWUoc3RyKTtcbiAgfSB3aGlsZSAoaXNHbG9iKHN0cikgfHwgZ2xvYmJ5LnRlc3Qoc3RyKSk7XG5cbiAgLy8gcmVtb3ZlIGVzY2FwZSBjaGFycyBhbmQgcmV0dXJuIHJlc3VsdFxuICByZXR1cm4gc3RyLnJlcGxhY2UoZXNjYXBlZCwgJyQxJyk7XG59O1xuIiwgIlwidXNlIHN0cmljdFwiO1xyXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XHJcbmV4cG9ydHMubWF0Y2hBbnkgPSBleHBvcnRzLmNvbnZlcnRQYXR0ZXJuc1RvUmUgPSBleHBvcnRzLm1ha2VSZSA9IGV4cG9ydHMuZ2V0UGF0dGVyblBhcnRzID0gZXhwb3J0cy5leHBhbmRCcmFjZUV4cGFuc2lvbiA9IGV4cG9ydHMuZXhwYW5kUGF0dGVybnNXaXRoQnJhY2VFeHBhbnNpb24gPSBleHBvcnRzLmlzQWZmZWN0RGVwdGhPZlJlYWRpbmdQYXR0ZXJuID0gZXhwb3J0cy5lbmRzV2l0aFNsYXNoR2xvYlN0YXIgPSBleHBvcnRzLmhhc0dsb2JTdGFyID0gZXhwb3J0cy5nZXRCYXNlRGlyZWN0b3J5ID0gZXhwb3J0cy5pc1BhdHRlcm5SZWxhdGVkVG9QYXJlbnREaXJlY3RvcnkgPSBleHBvcnRzLmdldFBhdHRlcm5zT3V0c2lkZUN1cnJlbnREaXJlY3RvcnkgPSBleHBvcnRzLmdldFBhdHRlcm5zSW5zaWRlQ3VycmVudERpcmVjdG9yeSA9IGV4cG9ydHMuZ2V0UG9zaXRpdmVQYXR0ZXJucyA9IGV4cG9ydHMuZ2V0TmVnYXRpdmVQYXR0ZXJucyA9IGV4cG9ydHMuaXNQb3NpdGl2ZVBhdHRlcm4gPSBleHBvcnRzLmlzTmVnYXRpdmVQYXR0ZXJuID0gZXhwb3J0cy5jb252ZXJ0VG9OZWdhdGl2ZVBhdHRlcm4gPSBleHBvcnRzLmNvbnZlcnRUb1Bvc2l0aXZlUGF0dGVybiA9IGV4cG9ydHMuaXNEeW5hbWljUGF0dGVybiA9IGV4cG9ydHMuaXNTdGF0aWNQYXR0ZXJuID0gdm9pZCAwO1xyXG5jb25zdCBwYXRoID0gcmVxdWlyZShcInBhdGhcIik7XHJcbmNvbnN0IGdsb2JQYXJlbnQgPSByZXF1aXJlKFwiZ2xvYi1wYXJlbnRcIik7XHJcbmNvbnN0IG1pY3JvbWF0Y2ggPSByZXF1aXJlKFwibWljcm9tYXRjaFwiKTtcclxuY29uc3QgR0xPQlNUQVIgPSAnKionO1xyXG5jb25zdCBFU0NBUEVfU1lNQk9MID0gJ1xcXFwnO1xyXG5jb25zdCBDT01NT05fR0xPQl9TWU1CT0xTX1JFID0gL1sqP118XiEvO1xyXG5jb25zdCBSRUdFWF9DSEFSQUNURVJfQ0xBU1NfU1lNQk9MU19SRSA9IC9cXFtbXltdKl0vO1xyXG5jb25zdCBSRUdFWF9HUk9VUF9TWU1CT0xTX1JFID0gLyg/Ol58W14hKis/QF0pXFwoW14oXSpcXHxbXnxdKlxcKS87XHJcbmNvbnN0IEdMT0JfRVhURU5TSU9OX1NZTUJPTFNfUkUgPSAvWyEqKz9AXVxcKFteKF0qXFwpLztcclxuY29uc3QgQlJBQ0VfRVhQQU5TSU9OX1NFUEFSQVRPUlNfUkUgPSAvLHxcXC5cXC4vO1xyXG5mdW5jdGlvbiBpc1N0YXRpY1BhdHRlcm4ocGF0dGVybiwgb3B0aW9ucyA9IHt9KSB7XHJcbiAgICByZXR1cm4gIWlzRHluYW1pY1BhdHRlcm4ocGF0dGVybiwgb3B0aW9ucyk7XHJcbn1cclxuZXhwb3J0cy5pc1N0YXRpY1BhdHRlcm4gPSBpc1N0YXRpY1BhdHRlcm47XHJcbmZ1bmN0aW9uIGlzRHluYW1pY1BhdHRlcm4ocGF0dGVybiwgb3B0aW9ucyA9IHt9KSB7XHJcbiAgICAvKipcclxuICAgICAqIEEgc3BlY2lhbCBjYXNlIHdpdGggYW4gZW1wdHkgc3RyaW5nIGlzIG5lY2Vzc2FyeSBmb3IgbWF0Y2hpbmcgcGF0dGVybnMgdGhhdCBzdGFydCB3aXRoIGEgZm9yd2FyZCBzbGFzaC5cclxuICAgICAqIEFuIGVtcHR5IHN0cmluZyBjYW5ub3QgYmUgYSBkeW5hbWljIHBhdHRlcm4uXHJcbiAgICAgKiBGb3IgZXhhbXBsZSwgdGhlIHBhdHRlcm4gYC9saWIvKmAgd2lsbCBiZSBzcHJlYWQgaW50byBwYXJ0czogJycsICdsaWInLCAnKicuXHJcbiAgICAgKi9cclxuICAgIGlmIChwYXR0ZXJuID09PSAnJykge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIC8qKlxyXG4gICAgICogV2hlbiB0aGUgYGNhc2VTZW5zaXRpdmVNYXRjaGAgb3B0aW9uIGlzIGRpc2FibGVkLCBhbGwgcGF0dGVybnMgbXVzdCBiZSBtYXJrZWQgYXMgZHluYW1pYywgYmVjYXVzZSB3ZSBjYW5ub3QgY2hlY2tcclxuICAgICAqIGZpbGVwYXRoIGRpcmVjdGx5ICh3aXRob3V0IHJlYWQgZGlyZWN0b3J5KS5cclxuICAgICAqL1xyXG4gICAgaWYgKG9wdGlvbnMuY2FzZVNlbnNpdGl2ZU1hdGNoID09PSBmYWxzZSB8fCBwYXR0ZXJuLmluY2x1ZGVzKEVTQ0FQRV9TWU1CT0wpKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICBpZiAoQ09NTU9OX0dMT0JfU1lNQk9MU19SRS50ZXN0KHBhdHRlcm4pIHx8IFJFR0VYX0NIQVJBQ1RFUl9DTEFTU19TWU1CT0xTX1JFLnRlc3QocGF0dGVybikgfHwgUkVHRVhfR1JPVVBfU1lNQk9MU19SRS50ZXN0KHBhdHRlcm4pKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICBpZiAob3B0aW9ucy5leHRnbG9iICE9PSBmYWxzZSAmJiBHTE9CX0VYVEVOU0lPTl9TWU1CT0xTX1JFLnRlc3QocGF0dGVybikpIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIGlmIChvcHRpb25zLmJyYWNlRXhwYW5zaW9uICE9PSBmYWxzZSAmJiBoYXNCcmFjZUV4cGFuc2lvbihwYXR0ZXJuKSkge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG59XHJcbmV4cG9ydHMuaXNEeW5hbWljUGF0dGVybiA9IGlzRHluYW1pY1BhdHRlcm47XHJcbmZ1bmN0aW9uIGhhc0JyYWNlRXhwYW5zaW9uKHBhdHRlcm4pIHtcclxuICAgIGNvbnN0IG9wZW5pbmdCcmFjZUluZGV4ID0gcGF0dGVybi5pbmRleE9mKCd7Jyk7XHJcbiAgICBpZiAob3BlbmluZ0JyYWNlSW5kZXggPT09IC0xKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgY29uc3QgY2xvc2luZ0JyYWNlSW5kZXggPSBwYXR0ZXJuLmluZGV4T2YoJ30nLCBvcGVuaW5nQnJhY2VJbmRleCArIDEpO1xyXG4gICAgaWYgKGNsb3NpbmdCcmFjZUluZGV4ID09PSAtMSkge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIGNvbnN0IGJyYWNlQ29udGVudCA9IHBhdHRlcm4uc2xpY2Uob3BlbmluZ0JyYWNlSW5kZXgsIGNsb3NpbmdCcmFjZUluZGV4KTtcclxuICAgIHJldHVybiBCUkFDRV9FWFBBTlNJT05fU0VQQVJBVE9SU19SRS50ZXN0KGJyYWNlQ29udGVudCk7XHJcbn1cclxuZnVuY3Rpb24gY29udmVydFRvUG9zaXRpdmVQYXR0ZXJuKHBhdHRlcm4pIHtcclxuICAgIHJldHVybiBpc05lZ2F0aXZlUGF0dGVybihwYXR0ZXJuKSA/IHBhdHRlcm4uc2xpY2UoMSkgOiBwYXR0ZXJuO1xyXG59XHJcbmV4cG9ydHMuY29udmVydFRvUG9zaXRpdmVQYXR0ZXJuID0gY29udmVydFRvUG9zaXRpdmVQYXR0ZXJuO1xyXG5mdW5jdGlvbiBjb252ZXJ0VG9OZWdhdGl2ZVBhdHRlcm4ocGF0dGVybikge1xyXG4gICAgcmV0dXJuICchJyArIHBhdHRlcm47XHJcbn1cclxuZXhwb3J0cy5jb252ZXJ0VG9OZWdhdGl2ZVBhdHRlcm4gPSBjb252ZXJ0VG9OZWdhdGl2ZVBhdHRlcm47XHJcbmZ1bmN0aW9uIGlzTmVnYXRpdmVQYXR0ZXJuKHBhdHRlcm4pIHtcclxuICAgIHJldHVybiBwYXR0ZXJuLnN0YXJ0c1dpdGgoJyEnKSAmJiBwYXR0ZXJuWzFdICE9PSAnKCc7XHJcbn1cclxuZXhwb3J0cy5pc05lZ2F0aXZlUGF0dGVybiA9IGlzTmVnYXRpdmVQYXR0ZXJuO1xyXG5mdW5jdGlvbiBpc1Bvc2l0aXZlUGF0dGVybihwYXR0ZXJuKSB7XHJcbiAgICByZXR1cm4gIWlzTmVnYXRpdmVQYXR0ZXJuKHBhdHRlcm4pO1xyXG59XHJcbmV4cG9ydHMuaXNQb3NpdGl2ZVBhdHRlcm4gPSBpc1Bvc2l0aXZlUGF0dGVybjtcclxuZnVuY3Rpb24gZ2V0TmVnYXRpdmVQYXR0ZXJucyhwYXR0ZXJucykge1xyXG4gICAgcmV0dXJuIHBhdHRlcm5zLmZpbHRlcihpc05lZ2F0aXZlUGF0dGVybik7XHJcbn1cclxuZXhwb3J0cy5nZXROZWdhdGl2ZVBhdHRlcm5zID0gZ2V0TmVnYXRpdmVQYXR0ZXJucztcclxuZnVuY3Rpb24gZ2V0UG9zaXRpdmVQYXR0ZXJucyhwYXR0ZXJucykge1xyXG4gICAgcmV0dXJuIHBhdHRlcm5zLmZpbHRlcihpc1Bvc2l0aXZlUGF0dGVybik7XHJcbn1cclxuZXhwb3J0cy5nZXRQb3NpdGl2ZVBhdHRlcm5zID0gZ2V0UG9zaXRpdmVQYXR0ZXJucztcclxuLyoqXHJcbiAqIFJldHVybnMgcGF0dGVybnMgdGhhdCBjYW4gYmUgYXBwbGllZCBpbnNpZGUgdGhlIGN1cnJlbnQgZGlyZWN0b3J5LlxyXG4gKlxyXG4gKiBAZXhhbXBsZVxyXG4gKiAvLyBbJy4vKicsICcqJywgJ2EvKiddXHJcbiAqIGdldFBhdHRlcm5zSW5zaWRlQ3VycmVudERpcmVjdG9yeShbJy4vKicsICcqJywgJ2EvKicsICcuLi8qJywgJy4vLi4vKiddKVxyXG4gKi9cclxuZnVuY3Rpb24gZ2V0UGF0dGVybnNJbnNpZGVDdXJyZW50RGlyZWN0b3J5KHBhdHRlcm5zKSB7XHJcbiAgICByZXR1cm4gcGF0dGVybnMuZmlsdGVyKChwYXR0ZXJuKSA9PiAhaXNQYXR0ZXJuUmVsYXRlZFRvUGFyZW50RGlyZWN0b3J5KHBhdHRlcm4pKTtcclxufVxyXG5leHBvcnRzLmdldFBhdHRlcm5zSW5zaWRlQ3VycmVudERpcmVjdG9yeSA9IGdldFBhdHRlcm5zSW5zaWRlQ3VycmVudERpcmVjdG9yeTtcclxuLyoqXHJcbiAqIFJldHVybnMgcGF0dGVybnMgdG8gYmUgZXhwYW5kZWQgcmVsYXRpdmUgdG8gKG91dHNpZGUpIHRoZSBjdXJyZW50IGRpcmVjdG9yeS5cclxuICpcclxuICogQGV4YW1wbGVcclxuICogLy8gWycuLi8qJywgJy4vLi4vKiddXHJcbiAqIGdldFBhdHRlcm5zSW5zaWRlQ3VycmVudERpcmVjdG9yeShbJy4vKicsICcqJywgJ2EvKicsICcuLi8qJywgJy4vLi4vKiddKVxyXG4gKi9cclxuZnVuY3Rpb24gZ2V0UGF0dGVybnNPdXRzaWRlQ3VycmVudERpcmVjdG9yeShwYXR0ZXJucykge1xyXG4gICAgcmV0dXJuIHBhdHRlcm5zLmZpbHRlcihpc1BhdHRlcm5SZWxhdGVkVG9QYXJlbnREaXJlY3RvcnkpO1xyXG59XHJcbmV4cG9ydHMuZ2V0UGF0dGVybnNPdXRzaWRlQ3VycmVudERpcmVjdG9yeSA9IGdldFBhdHRlcm5zT3V0c2lkZUN1cnJlbnREaXJlY3Rvcnk7XHJcbmZ1bmN0aW9uIGlzUGF0dGVyblJlbGF0ZWRUb1BhcmVudERpcmVjdG9yeShwYXR0ZXJuKSB7XHJcbiAgICByZXR1cm4gcGF0dGVybi5zdGFydHNXaXRoKCcuLicpIHx8IHBhdHRlcm4uc3RhcnRzV2l0aCgnLi8uLicpO1xyXG59XHJcbmV4cG9ydHMuaXNQYXR0ZXJuUmVsYXRlZFRvUGFyZW50RGlyZWN0b3J5ID0gaXNQYXR0ZXJuUmVsYXRlZFRvUGFyZW50RGlyZWN0b3J5O1xyXG5mdW5jdGlvbiBnZXRCYXNlRGlyZWN0b3J5KHBhdHRlcm4pIHtcclxuICAgIHJldHVybiBnbG9iUGFyZW50KHBhdHRlcm4sIHsgZmxpcEJhY2tzbGFzaGVzOiBmYWxzZSB9KTtcclxufVxyXG5leHBvcnRzLmdldEJhc2VEaXJlY3RvcnkgPSBnZXRCYXNlRGlyZWN0b3J5O1xyXG5mdW5jdGlvbiBoYXNHbG9iU3RhcihwYXR0ZXJuKSB7XHJcbiAgICByZXR1cm4gcGF0dGVybi5pbmNsdWRlcyhHTE9CU1RBUik7XHJcbn1cclxuZXhwb3J0cy5oYXNHbG9iU3RhciA9IGhhc0dsb2JTdGFyO1xyXG5mdW5jdGlvbiBlbmRzV2l0aFNsYXNoR2xvYlN0YXIocGF0dGVybikge1xyXG4gICAgcmV0dXJuIHBhdHRlcm4uZW5kc1dpdGgoJy8nICsgR0xPQlNUQVIpO1xyXG59XHJcbmV4cG9ydHMuZW5kc1dpdGhTbGFzaEdsb2JTdGFyID0gZW5kc1dpdGhTbGFzaEdsb2JTdGFyO1xyXG5mdW5jdGlvbiBpc0FmZmVjdERlcHRoT2ZSZWFkaW5nUGF0dGVybihwYXR0ZXJuKSB7XHJcbiAgICBjb25zdCBiYXNlbmFtZSA9IHBhdGguYmFzZW5hbWUocGF0dGVybik7XHJcbiAgICByZXR1cm4gZW5kc1dpdGhTbGFzaEdsb2JTdGFyKHBhdHRlcm4pIHx8IGlzU3RhdGljUGF0dGVybihiYXNlbmFtZSk7XHJcbn1cclxuZXhwb3J0cy5pc0FmZmVjdERlcHRoT2ZSZWFkaW5nUGF0dGVybiA9IGlzQWZmZWN0RGVwdGhPZlJlYWRpbmdQYXR0ZXJuO1xyXG5mdW5jdGlvbiBleHBhbmRQYXR0ZXJuc1dpdGhCcmFjZUV4cGFuc2lvbihwYXR0ZXJucykge1xyXG4gICAgcmV0dXJuIHBhdHRlcm5zLnJlZHVjZSgoY29sbGVjdGlvbiwgcGF0dGVybikgPT4ge1xyXG4gICAgICAgIHJldHVybiBjb2xsZWN0aW9uLmNvbmNhdChleHBhbmRCcmFjZUV4cGFuc2lvbihwYXR0ZXJuKSk7XHJcbiAgICB9LCBbXSk7XHJcbn1cclxuZXhwb3J0cy5leHBhbmRQYXR0ZXJuc1dpdGhCcmFjZUV4cGFuc2lvbiA9IGV4cGFuZFBhdHRlcm5zV2l0aEJyYWNlRXhwYW5zaW9uO1xyXG5mdW5jdGlvbiBleHBhbmRCcmFjZUV4cGFuc2lvbihwYXR0ZXJuKSB7XHJcbiAgICByZXR1cm4gbWljcm9tYXRjaC5icmFjZXMocGF0dGVybiwge1xyXG4gICAgICAgIGV4cGFuZDogdHJ1ZSxcclxuICAgICAgICBub2R1cGVzOiB0cnVlXHJcbiAgICB9KTtcclxufVxyXG5leHBvcnRzLmV4cGFuZEJyYWNlRXhwYW5zaW9uID0gZXhwYW5kQnJhY2VFeHBhbnNpb247XHJcbmZ1bmN0aW9uIGdldFBhdHRlcm5QYXJ0cyhwYXR0ZXJuLCBvcHRpb25zKSB7XHJcbiAgICBsZXQgeyBwYXJ0cyB9ID0gbWljcm9tYXRjaC5zY2FuKHBhdHRlcm4sIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgb3B0aW9ucyksIHsgcGFydHM6IHRydWUgfSkpO1xyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgc2NhbiBtZXRob2QgcmV0dXJucyBhbiBlbXB0eSBhcnJheSBpbiBzb21lIGNhc2VzLlxyXG4gICAgICogU2VlIG1pY3JvbWF0Y2gvcGljb21hdGNoIzU4IGZvciBtb3JlIGRldGFpbHMuXHJcbiAgICAgKi9cclxuICAgIGlmIChwYXJ0cy5sZW5ndGggPT09IDApIHtcclxuICAgICAgICBwYXJ0cyA9IFtwYXR0ZXJuXTtcclxuICAgIH1cclxuICAgIC8qKlxyXG4gICAgICogVGhlIHNjYW4gbWV0aG9kIGRvZXMgbm90IHJldHVybiBhbiBlbXB0eSBwYXJ0IGZvciB0aGUgcGF0dGVybiB3aXRoIGEgZm9yd2FyZCBzbGFzaC5cclxuICAgICAqIFRoaXMgaXMgYW5vdGhlciBwYXJ0IG9mIG1pY3JvbWF0Y2gvcGljb21hdGNoIzU4LlxyXG4gICAgICovXHJcbiAgICBpZiAocGFydHNbMF0uc3RhcnRzV2l0aCgnLycpKSB7XHJcbiAgICAgICAgcGFydHNbMF0gPSBwYXJ0c1swXS5zbGljZSgxKTtcclxuICAgICAgICBwYXJ0cy51bnNoaWZ0KCcnKTtcclxuICAgIH1cclxuICAgIHJldHVybiBwYXJ0cztcclxufVxyXG5leHBvcnRzLmdldFBhdHRlcm5QYXJ0cyA9IGdldFBhdHRlcm5QYXJ0cztcclxuZnVuY3Rpb24gbWFrZVJlKHBhdHRlcm4sIG9wdGlvbnMpIHtcclxuICAgIHJldHVybiBtaWNyb21hdGNoLm1ha2VSZShwYXR0ZXJuLCBvcHRpb25zKTtcclxufVxyXG5leHBvcnRzLm1ha2VSZSA9IG1ha2VSZTtcclxuZnVuY3Rpb24gY29udmVydFBhdHRlcm5zVG9SZShwYXR0ZXJucywgb3B0aW9ucykge1xyXG4gICAgcmV0dXJuIHBhdHRlcm5zLm1hcCgocGF0dGVybikgPT4gbWFrZVJlKHBhdHRlcm4sIG9wdGlvbnMpKTtcclxufVxyXG5leHBvcnRzLmNvbnZlcnRQYXR0ZXJuc1RvUmUgPSBjb252ZXJ0UGF0dGVybnNUb1JlO1xyXG5mdW5jdGlvbiBtYXRjaEFueShlbnRyeSwgcGF0dGVybnNSZSkge1xyXG4gICAgcmV0dXJuIHBhdHRlcm5zUmUuc29tZSgocGF0dGVyblJlKSA9PiBwYXR0ZXJuUmUudGVzdChlbnRyeSkpO1xyXG59XHJcbmV4cG9ydHMubWF0Y2hBbnkgPSBtYXRjaEFueTtcclxuIiwgIlwidXNlIHN0cmljdFwiO1xyXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XHJcbmV4cG9ydHMubWVyZ2UgPSB2b2lkIDA7XHJcbmNvbnN0IG1lcmdlMiA9IHJlcXVpcmUoXCJtZXJnZTJcIik7XHJcbmZ1bmN0aW9uIG1lcmdlKHN0cmVhbXMpIHtcclxuICAgIGNvbnN0IG1lcmdlZFN0cmVhbSA9IG1lcmdlMihzdHJlYW1zKTtcclxuICAgIHN0cmVhbXMuZm9yRWFjaCgoc3RyZWFtKSA9PiB7XHJcbiAgICAgICAgc3RyZWFtLm9uY2UoJ2Vycm9yJywgKGVycm9yKSA9PiBtZXJnZWRTdHJlYW0uZW1pdCgnZXJyb3InLCBlcnJvcikpO1xyXG4gICAgfSk7XHJcbiAgICBtZXJnZWRTdHJlYW0ub25jZSgnY2xvc2UnLCAoKSA9PiBwcm9wYWdhdGVDbG9zZUV2ZW50VG9Tb3VyY2VzKHN0cmVhbXMpKTtcclxuICAgIG1lcmdlZFN0cmVhbS5vbmNlKCdlbmQnLCAoKSA9PiBwcm9wYWdhdGVDbG9zZUV2ZW50VG9Tb3VyY2VzKHN0cmVhbXMpKTtcclxuICAgIHJldHVybiBtZXJnZWRTdHJlYW07XHJcbn1cclxuZXhwb3J0cy5tZXJnZSA9IG1lcmdlO1xyXG5mdW5jdGlvbiBwcm9wYWdhdGVDbG9zZUV2ZW50VG9Tb3VyY2VzKHN0cmVhbXMpIHtcclxuICAgIHN0cmVhbXMuZm9yRWFjaCgoc3RyZWFtKSA9PiBzdHJlYW0uZW1pdCgnY2xvc2UnKSk7XHJcbn1cclxuIiwgIlwidXNlIHN0cmljdFwiO1xyXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XHJcbmV4cG9ydHMuaXNFbXB0eSA9IGV4cG9ydHMuaXNTdHJpbmcgPSB2b2lkIDA7XHJcbmZ1bmN0aW9uIGlzU3RyaW5nKGlucHV0KSB7XHJcbiAgICByZXR1cm4gdHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJztcclxufVxyXG5leHBvcnRzLmlzU3RyaW5nID0gaXNTdHJpbmc7XHJcbmZ1bmN0aW9uIGlzRW1wdHkoaW5wdXQpIHtcclxuICAgIHJldHVybiBpbnB1dCA9PT0gJyc7XHJcbn1cclxuZXhwb3J0cy5pc0VtcHR5ID0gaXNFbXB0eTtcclxuIiwgIlwidXNlIHN0cmljdFwiO1xyXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XHJcbmV4cG9ydHMuc3RyaW5nID0gZXhwb3J0cy5zdHJlYW0gPSBleHBvcnRzLnBhdHRlcm4gPSBleHBvcnRzLnBhdGggPSBleHBvcnRzLmZzID0gZXhwb3J0cy5lcnJubyA9IGV4cG9ydHMuYXJyYXkgPSB2b2lkIDA7XHJcbmNvbnN0IGFycmF5ID0gcmVxdWlyZShcIi4vYXJyYXlcIik7XHJcbmV4cG9ydHMuYXJyYXkgPSBhcnJheTtcclxuY29uc3QgZXJybm8gPSByZXF1aXJlKFwiLi9lcnJub1wiKTtcclxuZXhwb3J0cy5lcnJubyA9IGVycm5vO1xyXG5jb25zdCBmcyA9IHJlcXVpcmUoXCIuL2ZzXCIpO1xyXG5leHBvcnRzLmZzID0gZnM7XHJcbmNvbnN0IHBhdGggPSByZXF1aXJlKFwiLi9wYXRoXCIpO1xyXG5leHBvcnRzLnBhdGggPSBwYXRoO1xyXG5jb25zdCBwYXR0ZXJuID0gcmVxdWlyZShcIi4vcGF0dGVyblwiKTtcclxuZXhwb3J0cy5wYXR0ZXJuID0gcGF0dGVybjtcclxuY29uc3Qgc3RyZWFtID0gcmVxdWlyZShcIi4vc3RyZWFtXCIpO1xyXG5leHBvcnRzLnN0cmVhbSA9IHN0cmVhbTtcclxuY29uc3Qgc3RyaW5nID0gcmVxdWlyZShcIi4vc3RyaW5nXCIpO1xyXG5leHBvcnRzLnN0cmluZyA9IHN0cmluZztcclxuIiwgIlwidXNlIHN0cmljdFwiO1xyXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XHJcbmV4cG9ydHMuY29udmVydFBhdHRlcm5Hcm91cFRvVGFzayA9IGV4cG9ydHMuY29udmVydFBhdHRlcm5Hcm91cHNUb1Rhc2tzID0gZXhwb3J0cy5ncm91cFBhdHRlcm5zQnlCYXNlRGlyZWN0b3J5ID0gZXhwb3J0cy5nZXROZWdhdGl2ZVBhdHRlcm5zQXNQb3NpdGl2ZSA9IGV4cG9ydHMuZ2V0UG9zaXRpdmVQYXR0ZXJucyA9IGV4cG9ydHMuY29udmVydFBhdHRlcm5zVG9UYXNrcyA9IGV4cG9ydHMuZ2VuZXJhdGUgPSB2b2lkIDA7XHJcbmNvbnN0IHV0aWxzID0gcmVxdWlyZShcIi4uL3V0aWxzXCIpO1xyXG5mdW5jdGlvbiBnZW5lcmF0ZShwYXR0ZXJucywgc2V0dGluZ3MpIHtcclxuICAgIGNvbnN0IHBvc2l0aXZlUGF0dGVybnMgPSBnZXRQb3NpdGl2ZVBhdHRlcm5zKHBhdHRlcm5zKTtcclxuICAgIGNvbnN0IG5lZ2F0aXZlUGF0dGVybnMgPSBnZXROZWdhdGl2ZVBhdHRlcm5zQXNQb3NpdGl2ZShwYXR0ZXJucywgc2V0dGluZ3MuaWdub3JlKTtcclxuICAgIGNvbnN0IHN0YXRpY1BhdHRlcm5zID0gcG9zaXRpdmVQYXR0ZXJucy5maWx0ZXIoKHBhdHRlcm4pID0+IHV0aWxzLnBhdHRlcm4uaXNTdGF0aWNQYXR0ZXJuKHBhdHRlcm4sIHNldHRpbmdzKSk7XHJcbiAgICBjb25zdCBkeW5hbWljUGF0dGVybnMgPSBwb3NpdGl2ZVBhdHRlcm5zLmZpbHRlcigocGF0dGVybikgPT4gdXRpbHMucGF0dGVybi5pc0R5bmFtaWNQYXR0ZXJuKHBhdHRlcm4sIHNldHRpbmdzKSk7XHJcbiAgICBjb25zdCBzdGF0aWNUYXNrcyA9IGNvbnZlcnRQYXR0ZXJuc1RvVGFza3Moc3RhdGljUGF0dGVybnMsIG5lZ2F0aXZlUGF0dGVybnMsIC8qIGR5bmFtaWMgKi8gZmFsc2UpO1xyXG4gICAgY29uc3QgZHluYW1pY1Rhc2tzID0gY29udmVydFBhdHRlcm5zVG9UYXNrcyhkeW5hbWljUGF0dGVybnMsIG5lZ2F0aXZlUGF0dGVybnMsIC8qIGR5bmFtaWMgKi8gdHJ1ZSk7XHJcbiAgICByZXR1cm4gc3RhdGljVGFza3MuY29uY2F0KGR5bmFtaWNUYXNrcyk7XHJcbn1cclxuZXhwb3J0cy5nZW5lcmF0ZSA9IGdlbmVyYXRlO1xyXG4vKipcclxuICogUmV0dXJucyB0YXNrcyBncm91cGVkIGJ5IGJhc2ljIHBhdHRlcm4gZGlyZWN0b3JpZXMuXHJcbiAqXHJcbiAqIFBhdHRlcm5zIHRoYXQgY2FuIGJlIGZvdW5kIGluc2lkZSAoYC4vYCkgYW5kIG91dHNpZGUgKGAuLi9gKSB0aGUgY3VycmVudCBkaXJlY3RvcnkgYXJlIGhhbmRsZWQgc2VwYXJhdGVseS5cclxuICogVGhpcyBpcyBuZWNlc3NhcnkgYmVjYXVzZSBkaXJlY3RvcnkgdHJhdmVyc2FsIHN0YXJ0cyBhdCB0aGUgYmFzZSBkaXJlY3RvcnkgYW5kIGdvZXMgZGVlcGVyLlxyXG4gKi9cclxuZnVuY3Rpb24gY29udmVydFBhdHRlcm5zVG9UYXNrcyhwb3NpdGl2ZSwgbmVnYXRpdmUsIGR5bmFtaWMpIHtcclxuICAgIGNvbnN0IHRhc2tzID0gW107XHJcbiAgICBjb25zdCBwYXR0ZXJuc091dHNpZGVDdXJyZW50RGlyZWN0b3J5ID0gdXRpbHMucGF0dGVybi5nZXRQYXR0ZXJuc091dHNpZGVDdXJyZW50RGlyZWN0b3J5KHBvc2l0aXZlKTtcclxuICAgIGNvbnN0IHBhdHRlcm5zSW5zaWRlQ3VycmVudERpcmVjdG9yeSA9IHV0aWxzLnBhdHRlcm4uZ2V0UGF0dGVybnNJbnNpZGVDdXJyZW50RGlyZWN0b3J5KHBvc2l0aXZlKTtcclxuICAgIGNvbnN0IG91dHNpZGVDdXJyZW50RGlyZWN0b3J5R3JvdXAgPSBncm91cFBhdHRlcm5zQnlCYXNlRGlyZWN0b3J5KHBhdHRlcm5zT3V0c2lkZUN1cnJlbnREaXJlY3RvcnkpO1xyXG4gICAgY29uc3QgaW5zaWRlQ3VycmVudERpcmVjdG9yeUdyb3VwID0gZ3JvdXBQYXR0ZXJuc0J5QmFzZURpcmVjdG9yeShwYXR0ZXJuc0luc2lkZUN1cnJlbnREaXJlY3RvcnkpO1xyXG4gICAgdGFza3MucHVzaCguLi5jb252ZXJ0UGF0dGVybkdyb3Vwc1RvVGFza3Mob3V0c2lkZUN1cnJlbnREaXJlY3RvcnlHcm91cCwgbmVnYXRpdmUsIGR5bmFtaWMpKTtcclxuICAgIC8qXHJcbiAgICAgKiBGb3IgdGhlIHNha2Ugb2YgcmVkdWNpbmcgZnV0dXJlIGFjY2Vzc2VzIHRvIHRoZSBmaWxlIHN5c3RlbSwgd2UgbWVyZ2UgYWxsIHRhc2tzIHdpdGhpbiB0aGUgY3VycmVudCBkaXJlY3RvcnlcclxuICAgICAqIGludG8gYSBnbG9iYWwgdGFzaywgaWYgYXQgbGVhc3Qgb25lIHBhdHRlcm4gcmVmZXJzIHRvIHRoZSByb290IChgLmApLiBJbiB0aGlzIGNhc2UsIHRoZSBnbG9iYWwgdGFzayBjb3ZlcnMgdGhlIHJlc3QuXHJcbiAgICAgKi9cclxuICAgIGlmICgnLicgaW4gaW5zaWRlQ3VycmVudERpcmVjdG9yeUdyb3VwKSB7XHJcbiAgICAgICAgdGFza3MucHVzaChjb252ZXJ0UGF0dGVybkdyb3VwVG9UYXNrKCcuJywgcGF0dGVybnNJbnNpZGVDdXJyZW50RGlyZWN0b3J5LCBuZWdhdGl2ZSwgZHluYW1pYykpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgdGFza3MucHVzaCguLi5jb252ZXJ0UGF0dGVybkdyb3Vwc1RvVGFza3MoaW5zaWRlQ3VycmVudERpcmVjdG9yeUdyb3VwLCBuZWdhdGl2ZSwgZHluYW1pYykpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRhc2tzO1xyXG59XHJcbmV4cG9ydHMuY29udmVydFBhdHRlcm5zVG9UYXNrcyA9IGNvbnZlcnRQYXR0ZXJuc1RvVGFza3M7XHJcbmZ1bmN0aW9uIGdldFBvc2l0aXZlUGF0dGVybnMocGF0dGVybnMpIHtcclxuICAgIHJldHVybiB1dGlscy5wYXR0ZXJuLmdldFBvc2l0aXZlUGF0dGVybnMocGF0dGVybnMpO1xyXG59XHJcbmV4cG9ydHMuZ2V0UG9zaXRpdmVQYXR0ZXJucyA9IGdldFBvc2l0aXZlUGF0dGVybnM7XHJcbmZ1bmN0aW9uIGdldE5lZ2F0aXZlUGF0dGVybnNBc1Bvc2l0aXZlKHBhdHRlcm5zLCBpZ25vcmUpIHtcclxuICAgIGNvbnN0IG5lZ2F0aXZlID0gdXRpbHMucGF0dGVybi5nZXROZWdhdGl2ZVBhdHRlcm5zKHBhdHRlcm5zKS5jb25jYXQoaWdub3JlKTtcclxuICAgIGNvbnN0IHBvc2l0aXZlID0gbmVnYXRpdmUubWFwKHV0aWxzLnBhdHRlcm4uY29udmVydFRvUG9zaXRpdmVQYXR0ZXJuKTtcclxuICAgIHJldHVybiBwb3NpdGl2ZTtcclxufVxyXG5leHBvcnRzLmdldE5lZ2F0aXZlUGF0dGVybnNBc1Bvc2l0aXZlID0gZ2V0TmVnYXRpdmVQYXR0ZXJuc0FzUG9zaXRpdmU7XHJcbmZ1bmN0aW9uIGdyb3VwUGF0dGVybnNCeUJhc2VEaXJlY3RvcnkocGF0dGVybnMpIHtcclxuICAgIGNvbnN0IGdyb3VwID0ge307XHJcbiAgICByZXR1cm4gcGF0dGVybnMucmVkdWNlKChjb2xsZWN0aW9uLCBwYXR0ZXJuKSA9PiB7XHJcbiAgICAgICAgY29uc3QgYmFzZSA9IHV0aWxzLnBhdHRlcm4uZ2V0QmFzZURpcmVjdG9yeShwYXR0ZXJuKTtcclxuICAgICAgICBpZiAoYmFzZSBpbiBjb2xsZWN0aW9uKSB7XHJcbiAgICAgICAgICAgIGNvbGxlY3Rpb25bYmFzZV0ucHVzaChwYXR0ZXJuKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbGxlY3Rpb25bYmFzZV0gPSBbcGF0dGVybl07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBjb2xsZWN0aW9uO1xyXG4gICAgfSwgZ3JvdXApO1xyXG59XHJcbmV4cG9ydHMuZ3JvdXBQYXR0ZXJuc0J5QmFzZURpcmVjdG9yeSA9IGdyb3VwUGF0dGVybnNCeUJhc2VEaXJlY3Rvcnk7XHJcbmZ1bmN0aW9uIGNvbnZlcnRQYXR0ZXJuR3JvdXBzVG9UYXNrcyhwb3NpdGl2ZSwgbmVnYXRpdmUsIGR5bmFtaWMpIHtcclxuICAgIHJldHVybiBPYmplY3Qua2V5cyhwb3NpdGl2ZSkubWFwKChiYXNlKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIGNvbnZlcnRQYXR0ZXJuR3JvdXBUb1Rhc2soYmFzZSwgcG9zaXRpdmVbYmFzZV0sIG5lZ2F0aXZlLCBkeW5hbWljKTtcclxuICAgIH0pO1xyXG59XHJcbmV4cG9ydHMuY29udmVydFBhdHRlcm5Hcm91cHNUb1Rhc2tzID0gY29udmVydFBhdHRlcm5Hcm91cHNUb1Rhc2tzO1xyXG5mdW5jdGlvbiBjb252ZXJ0UGF0dGVybkdyb3VwVG9UYXNrKGJhc2UsIHBvc2l0aXZlLCBuZWdhdGl2ZSwgZHluYW1pYykge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICBkeW5hbWljLFxyXG4gICAgICAgIHBvc2l0aXZlLFxyXG4gICAgICAgIG5lZ2F0aXZlLFxyXG4gICAgICAgIGJhc2UsXHJcbiAgICAgICAgcGF0dGVybnM6IFtdLmNvbmNhdChwb3NpdGl2ZSwgbmVnYXRpdmUubWFwKHV0aWxzLnBhdHRlcm4uY29udmVydFRvTmVnYXRpdmVQYXR0ZXJuKSlcclxuICAgIH07XHJcbn1cclxuZXhwb3J0cy5jb252ZXJ0UGF0dGVybkdyb3VwVG9UYXNrID0gY29udmVydFBhdHRlcm5Hcm91cFRvVGFzaztcclxuIiwgIlwidXNlIHN0cmljdFwiO1xyXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XHJcbmV4cG9ydHMucmVtb3ZlRHVwbGljYXRlU2xhc2hlcyA9IGV4cG9ydHMudHJhbnNmb3JtID0gdm9pZCAwO1xyXG4vKipcclxuICogTWF0Y2hlcyBhIHNlcXVlbmNlIG9mIHR3byBvciBtb3JlIGNvbnNlY3V0aXZlIHNsYXNoZXMsIGV4Y2x1ZGluZyB0aGUgZmlyc3QgdHdvIHNsYXNoZXMgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgc3RyaW5nLlxyXG4gKiBUaGUgbGF0dGVyIGlzIGR1ZSB0byB0aGUgcHJlc2VuY2Ugb2YgdGhlIGRldmljZSBwYXRoIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIFVOQyBwYXRoLlxyXG4gKiBAdG9kbyByZXdyaXRlIHRvIG5lZ2F0aXZlIGxvb2tiZWhpbmQgd2l0aCB0aGUgbmV4dCBtYWpvciByZWxlYXNlLlxyXG4gKi9cclxuY29uc3QgRE9VQkxFX1NMQVNIX1JFID0gLyg/IV4pXFwvezIsfS9nO1xyXG5mdW5jdGlvbiB0cmFuc2Zvcm0ocGF0dGVybnMpIHtcclxuICAgIHJldHVybiBwYXR0ZXJucy5tYXAoKHBhdHRlcm4pID0+IHJlbW92ZUR1cGxpY2F0ZVNsYXNoZXMocGF0dGVybikpO1xyXG59XHJcbmV4cG9ydHMudHJhbnNmb3JtID0gdHJhbnNmb3JtO1xyXG4vKipcclxuICogVGhpcyBwYWNrYWdlIG9ubHkgd29ya3Mgd2l0aCBmb3J3YXJkIHNsYXNoZXMgYXMgYSBwYXRoIHNlcGFyYXRvci5cclxuICogQmVjYXVzZSBvZiB0aGlzLCB3ZSBjYW5ub3QgdXNlIHRoZSBzdGFuZGFyZCBgcGF0aC5ub3JtYWxpemVgIG1ldGhvZCwgYmVjYXVzZSBvbiBXaW5kb3dzIHBsYXRmb3JtIGl0IHdpbGwgdXNlIG9mIGJhY2tzbGFzaGVzLlxyXG4gKi9cclxuZnVuY3Rpb24gcmVtb3ZlRHVwbGljYXRlU2xhc2hlcyhwYXR0ZXJuKSB7XHJcbiAgICByZXR1cm4gcGF0dGVybi5yZXBsYWNlKERPVUJMRV9TTEFTSF9SRSwgJy8nKTtcclxufVxyXG5leHBvcnRzLnJlbW92ZUR1cGxpY2F0ZVNsYXNoZXMgPSByZW1vdmVEdXBsaWNhdGVTbGFzaGVzO1xyXG4iLCAiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLnJlYWQgPSB2b2lkIDA7XG5mdW5jdGlvbiByZWFkKHBhdGgsIHNldHRpbmdzLCBjYWxsYmFjaykge1xuICAgIHNldHRpbmdzLmZzLmxzdGF0KHBhdGgsIChsc3RhdEVycm9yLCBsc3RhdCkgPT4ge1xuICAgICAgICBpZiAobHN0YXRFcnJvciAhPT0gbnVsbCkge1xuICAgICAgICAgICAgY2FsbEZhaWx1cmVDYWxsYmFjayhjYWxsYmFjaywgbHN0YXRFcnJvcik7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFsc3RhdC5pc1N5bWJvbGljTGluaygpIHx8ICFzZXR0aW5ncy5mb2xsb3dTeW1ib2xpY0xpbmspIHtcbiAgICAgICAgICAgIGNhbGxTdWNjZXNzQ2FsbGJhY2soY2FsbGJhY2ssIGxzdGF0KTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBzZXR0aW5ncy5mcy5zdGF0KHBhdGgsIChzdGF0RXJyb3IsIHN0YXQpID0+IHtcbiAgICAgICAgICAgIGlmIChzdGF0RXJyb3IgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBpZiAoc2V0dGluZ3MudGhyb3dFcnJvck9uQnJva2VuU3ltYm9saWNMaW5rKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhbGxGYWlsdXJlQ2FsbGJhY2soY2FsbGJhY2ssIHN0YXRFcnJvcik7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FsbFN1Y2Nlc3NDYWxsYmFjayhjYWxsYmFjaywgbHN0YXQpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzZXR0aW5ncy5tYXJrU3ltYm9saWNMaW5rKSB7XG4gICAgICAgICAgICAgICAgc3RhdC5pc1N5bWJvbGljTGluayA9ICgpID0+IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYWxsU3VjY2Vzc0NhbGxiYWNrKGNhbGxiYWNrLCBzdGF0KTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG59XG5leHBvcnRzLnJlYWQgPSByZWFkO1xuZnVuY3Rpb24gY2FsbEZhaWx1cmVDYWxsYmFjayhjYWxsYmFjaywgZXJyb3IpIHtcbiAgICBjYWxsYmFjayhlcnJvcik7XG59XG5mdW5jdGlvbiBjYWxsU3VjY2Vzc0NhbGxiYWNrKGNhbGxiYWNrLCByZXN1bHQpIHtcbiAgICBjYWxsYmFjayhudWxsLCByZXN1bHQpO1xufVxuIiwgIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5yZWFkID0gdm9pZCAwO1xuZnVuY3Rpb24gcmVhZChwYXRoLCBzZXR0aW5ncykge1xuICAgIGNvbnN0IGxzdGF0ID0gc2V0dGluZ3MuZnMubHN0YXRTeW5jKHBhdGgpO1xuICAgIGlmICghbHN0YXQuaXNTeW1ib2xpY0xpbmsoKSB8fCAhc2V0dGluZ3MuZm9sbG93U3ltYm9saWNMaW5rKSB7XG4gICAgICAgIHJldHVybiBsc3RhdDtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3Qgc3RhdCA9IHNldHRpbmdzLmZzLnN0YXRTeW5jKHBhdGgpO1xuICAgICAgICBpZiAoc2V0dGluZ3MubWFya1N5bWJvbGljTGluaykge1xuICAgICAgICAgICAgc3RhdC5pc1N5bWJvbGljTGluayA9ICgpID0+IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN0YXQ7XG4gICAgfVxuICAgIGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoIXNldHRpbmdzLnRocm93RXJyb3JPbkJyb2tlblN5bWJvbGljTGluaykge1xuICAgICAgICAgICAgcmV0dXJuIGxzdGF0O1xuICAgICAgICB9XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbn1cbmV4cG9ydHMucmVhZCA9IHJlYWQ7XG4iLCAiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLmNyZWF0ZUZpbGVTeXN0ZW1BZGFwdGVyID0gZXhwb3J0cy5GSUxFX1NZU1RFTV9BREFQVEVSID0gdm9pZCAwO1xuY29uc3QgZnMgPSByZXF1aXJlKFwiZnNcIik7XG5leHBvcnRzLkZJTEVfU1lTVEVNX0FEQVBURVIgPSB7XG4gICAgbHN0YXQ6IGZzLmxzdGF0LFxuICAgIHN0YXQ6IGZzLnN0YXQsXG4gICAgbHN0YXRTeW5jOiBmcy5sc3RhdFN5bmMsXG4gICAgc3RhdFN5bmM6IGZzLnN0YXRTeW5jXG59O1xuZnVuY3Rpb24gY3JlYXRlRmlsZVN5c3RlbUFkYXB0ZXIoZnNNZXRob2RzKSB7XG4gICAgaWYgKGZzTWV0aG9kcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiBleHBvcnRzLkZJTEVfU1lTVEVNX0FEQVBURVI7XG4gICAgfVxuICAgIHJldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIGV4cG9ydHMuRklMRV9TWVNURU1fQURBUFRFUiksIGZzTWV0aG9kcyk7XG59XG5leHBvcnRzLmNyZWF0ZUZpbGVTeXN0ZW1BZGFwdGVyID0gY3JlYXRlRmlsZVN5c3RlbUFkYXB0ZXI7XG4iLCAiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5jb25zdCBmcyA9IHJlcXVpcmUoXCIuL2FkYXB0ZXJzL2ZzXCIpO1xuY2xhc3MgU2V0dGluZ3Mge1xuICAgIGNvbnN0cnVjdG9yKF9vcHRpb25zID0ge30pIHtcbiAgICAgICAgdGhpcy5fb3B0aW9ucyA9IF9vcHRpb25zO1xuICAgICAgICB0aGlzLmZvbGxvd1N5bWJvbGljTGluayA9IHRoaXMuX2dldFZhbHVlKHRoaXMuX29wdGlvbnMuZm9sbG93U3ltYm9saWNMaW5rLCB0cnVlKTtcbiAgICAgICAgdGhpcy5mcyA9IGZzLmNyZWF0ZUZpbGVTeXN0ZW1BZGFwdGVyKHRoaXMuX29wdGlvbnMuZnMpO1xuICAgICAgICB0aGlzLm1hcmtTeW1ib2xpY0xpbmsgPSB0aGlzLl9nZXRWYWx1ZSh0aGlzLl9vcHRpb25zLm1hcmtTeW1ib2xpY0xpbmssIGZhbHNlKTtcbiAgICAgICAgdGhpcy50aHJvd0Vycm9yT25Ccm9rZW5TeW1ib2xpY0xpbmsgPSB0aGlzLl9nZXRWYWx1ZSh0aGlzLl9vcHRpb25zLnRocm93RXJyb3JPbkJyb2tlblN5bWJvbGljTGluaywgdHJ1ZSk7XG4gICAgfVxuICAgIF9nZXRWYWx1ZShvcHRpb24sIHZhbHVlKSB7XG4gICAgICAgIHJldHVybiBvcHRpb24gIT09IG51bGwgJiYgb3B0aW9uICE9PSB2b2lkIDAgPyBvcHRpb24gOiB2YWx1ZTtcbiAgICB9XG59XG5leHBvcnRzLmRlZmF1bHQgPSBTZXR0aW5ncztcbiIsICJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuc3RhdFN5bmMgPSBleHBvcnRzLnN0YXQgPSBleHBvcnRzLlNldHRpbmdzID0gdm9pZCAwO1xuY29uc3QgYXN5bmMgPSByZXF1aXJlKFwiLi9wcm92aWRlcnMvYXN5bmNcIik7XG5jb25zdCBzeW5jID0gcmVxdWlyZShcIi4vcHJvdmlkZXJzL3N5bmNcIik7XG5jb25zdCBzZXR0aW5nc18xID0gcmVxdWlyZShcIi4vc2V0dGluZ3NcIik7XG5leHBvcnRzLlNldHRpbmdzID0gc2V0dGluZ3NfMS5kZWZhdWx0O1xuZnVuY3Rpb24gc3RhdChwYXRoLCBvcHRpb25zT3JTZXR0aW5nc09yQ2FsbGJhY2ssIGNhbGxiYWNrKSB7XG4gICAgaWYgKHR5cGVvZiBvcHRpb25zT3JTZXR0aW5nc09yQ2FsbGJhY2sgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgYXN5bmMucmVhZChwYXRoLCBnZXRTZXR0aW5ncygpLCBvcHRpb25zT3JTZXR0aW5nc09yQ2FsbGJhY2spO1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGFzeW5jLnJlYWQocGF0aCwgZ2V0U2V0dGluZ3Mob3B0aW9uc09yU2V0dGluZ3NPckNhbGxiYWNrKSwgY2FsbGJhY2spO1xufVxuZXhwb3J0cy5zdGF0ID0gc3RhdDtcbmZ1bmN0aW9uIHN0YXRTeW5jKHBhdGgsIG9wdGlvbnNPclNldHRpbmdzKSB7XG4gICAgY29uc3Qgc2V0dGluZ3MgPSBnZXRTZXR0aW5ncyhvcHRpb25zT3JTZXR0aW5ncyk7XG4gICAgcmV0dXJuIHN5bmMucmVhZChwYXRoLCBzZXR0aW5ncyk7XG59XG5leHBvcnRzLnN0YXRTeW5jID0gc3RhdFN5bmM7XG5mdW5jdGlvbiBnZXRTZXR0aW5ncyhzZXR0aW5nc09yT3B0aW9ucyA9IHt9KSB7XG4gICAgaWYgKHNldHRpbmdzT3JPcHRpb25zIGluc3RhbmNlb2Ygc2V0dGluZ3NfMS5kZWZhdWx0KSB7XG4gICAgICAgIHJldHVybiBzZXR0aW5nc09yT3B0aW9ucztcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBzZXR0aW5nc18xLmRlZmF1bHQoc2V0dGluZ3NPck9wdGlvbnMpO1xufVxuIiwgIi8qISBxdWV1ZS1taWNyb3Rhc2suIE1JVCBMaWNlbnNlLiBGZXJvc3MgQWJvdWtoYWRpamVoIDxodHRwczovL2Zlcm9zcy5vcmcvb3BlbnNvdXJjZT4gKi9cbmxldCBwcm9taXNlXG5cbm1vZHVsZS5leHBvcnRzID0gdHlwZW9mIHF1ZXVlTWljcm90YXNrID09PSAnZnVuY3Rpb24nXG4gID8gcXVldWVNaWNyb3Rhc2suYmluZCh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyA/IHdpbmRvdyA6IGdsb2JhbClcbiAgLy8gcmV1c2UgcmVzb2x2ZWQgcHJvbWlzZSwgYW5kIGFsbG9jYXRlIGl0IGxhemlseVxuICA6IGNiID0+IChwcm9taXNlIHx8IChwcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKCkpKVxuICAgIC50aGVuKGNiKVxuICAgIC5jYXRjaChlcnIgPT4gc2V0VGltZW91dCgoKSA9PiB7IHRocm93IGVyciB9LCAwKSlcbiIsICIvKiEgcnVuLXBhcmFsbGVsLiBNSVQgTGljZW5zZS4gRmVyb3NzIEFib3VraGFkaWplaCA8aHR0cHM6Ly9mZXJvc3Mub3JnL29wZW5zb3VyY2U+ICovXG5tb2R1bGUuZXhwb3J0cyA9IHJ1blBhcmFsbGVsXG5cbmNvbnN0IHF1ZXVlTWljcm90YXNrID0gcmVxdWlyZSgncXVldWUtbWljcm90YXNrJylcblxuZnVuY3Rpb24gcnVuUGFyYWxsZWwgKHRhc2tzLCBjYikge1xuICBsZXQgcmVzdWx0cywgcGVuZGluZywga2V5c1xuICBsZXQgaXNTeW5jID0gdHJ1ZVxuXG4gIGlmIChBcnJheS5pc0FycmF5KHRhc2tzKSkge1xuICAgIHJlc3VsdHMgPSBbXVxuICAgIHBlbmRpbmcgPSB0YXNrcy5sZW5ndGhcbiAgfSBlbHNlIHtcbiAgICBrZXlzID0gT2JqZWN0LmtleXModGFza3MpXG4gICAgcmVzdWx0cyA9IHt9XG4gICAgcGVuZGluZyA9IGtleXMubGVuZ3RoXG4gIH1cblxuICBmdW5jdGlvbiBkb25lIChlcnIpIHtcbiAgICBmdW5jdGlvbiBlbmQgKCkge1xuICAgICAgaWYgKGNiKSBjYihlcnIsIHJlc3VsdHMpXG4gICAgICBjYiA9IG51bGxcbiAgICB9XG4gICAgaWYgKGlzU3luYykgcXVldWVNaWNyb3Rhc2soZW5kKVxuICAgIGVsc2UgZW5kKClcbiAgfVxuXG4gIGZ1bmN0aW9uIGVhY2ggKGksIGVyciwgcmVzdWx0KSB7XG4gICAgcmVzdWx0c1tpXSA9IHJlc3VsdFxuICAgIGlmICgtLXBlbmRpbmcgPT09IDAgfHwgZXJyKSB7XG4gICAgICBkb25lKGVycilcbiAgICB9XG4gIH1cblxuICBpZiAoIXBlbmRpbmcpIHtcbiAgICAvLyBlbXB0eVxuICAgIGRvbmUobnVsbClcbiAgfSBlbHNlIGlmIChrZXlzKSB7XG4gICAgLy8gb2JqZWN0XG4gICAga2V5cy5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgIHRhc2tzW2tleV0oZnVuY3Rpb24gKGVyciwgcmVzdWx0KSB7IGVhY2goa2V5LCBlcnIsIHJlc3VsdCkgfSlcbiAgICB9KVxuICB9IGVsc2Uge1xuICAgIC8vIGFycmF5XG4gICAgdGFza3MuZm9yRWFjaChmdW5jdGlvbiAodGFzaywgaSkge1xuICAgICAgdGFzayhmdW5jdGlvbiAoZXJyLCByZXN1bHQpIHsgZWFjaChpLCBlcnIsIHJlc3VsdCkgfSlcbiAgICB9KVxuICB9XG5cbiAgaXNTeW5jID0gZmFsc2Vcbn1cbiIsICJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuSVNfU1VQUE9SVF9SRUFERElSX1dJVEhfRklMRV9UWVBFUyA9IHZvaWQgMDtcbmNvbnN0IE5PREVfUFJPQ0VTU19WRVJTSU9OX1BBUlRTID0gcHJvY2Vzcy52ZXJzaW9ucy5ub2RlLnNwbGl0KCcuJyk7XG5pZiAoTk9ERV9QUk9DRVNTX1ZFUlNJT05fUEFSVFNbMF0gPT09IHVuZGVmaW5lZCB8fCBOT0RFX1BST0NFU1NfVkVSU0lPTl9QQVJUU1sxXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBVbmV4cGVjdGVkIGJlaGF2aW9yLiBUaGUgJ3Byb2Nlc3MudmVyc2lvbnMubm9kZScgdmFyaWFibGUgaGFzIGludmFsaWQgdmFsdWU6ICR7cHJvY2Vzcy52ZXJzaW9ucy5ub2RlfWApO1xufVxuY29uc3QgTUFKT1JfVkVSU0lPTiA9IE51bWJlci5wYXJzZUludChOT0RFX1BST0NFU1NfVkVSU0lPTl9QQVJUU1swXSwgMTApO1xuY29uc3QgTUlOT1JfVkVSU0lPTiA9IE51bWJlci5wYXJzZUludChOT0RFX1BST0NFU1NfVkVSU0lPTl9QQVJUU1sxXSwgMTApO1xuY29uc3QgU1VQUE9SVEVEX01BSk9SX1ZFUlNJT04gPSAxMDtcbmNvbnN0IFNVUFBPUlRFRF9NSU5PUl9WRVJTSU9OID0gMTA7XG5jb25zdCBJU19NQVRDSEVEX0JZX01BSk9SID0gTUFKT1JfVkVSU0lPTiA+IFNVUFBPUlRFRF9NQUpPUl9WRVJTSU9OO1xuY29uc3QgSVNfTUFUQ0hFRF9CWV9NQUpPUl9BTkRfTUlOT1IgPSBNQUpPUl9WRVJTSU9OID09PSBTVVBQT1JURURfTUFKT1JfVkVSU0lPTiAmJiBNSU5PUl9WRVJTSU9OID49IFNVUFBPUlRFRF9NSU5PUl9WRVJTSU9OO1xuLyoqXG4gKiBJUyBgdHJ1ZWAgZm9yIE5vZGUuanMgMTAuMTAgYW5kIGdyZWF0ZXIuXG4gKi9cbmV4cG9ydHMuSVNfU1VQUE9SVF9SRUFERElSX1dJVEhfRklMRV9UWVBFUyA9IElTX01BVENIRURfQllfTUFKT1IgfHwgSVNfTUFUQ0hFRF9CWV9NQUpPUl9BTkRfTUlOT1I7XG4iLCAiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLmNyZWF0ZURpcmVudEZyb21TdGF0cyA9IHZvaWQgMDtcbmNsYXNzIERpcmVudEZyb21TdGF0cyB7XG4gICAgY29uc3RydWN0b3IobmFtZSwgc3RhdHMpIHtcbiAgICAgICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICAgICAgdGhpcy5pc0Jsb2NrRGV2aWNlID0gc3RhdHMuaXNCbG9ja0RldmljZS5iaW5kKHN0YXRzKTtcbiAgICAgICAgdGhpcy5pc0NoYXJhY3RlckRldmljZSA9IHN0YXRzLmlzQ2hhcmFjdGVyRGV2aWNlLmJpbmQoc3RhdHMpO1xuICAgICAgICB0aGlzLmlzRGlyZWN0b3J5ID0gc3RhdHMuaXNEaXJlY3RvcnkuYmluZChzdGF0cyk7XG4gICAgICAgIHRoaXMuaXNGSUZPID0gc3RhdHMuaXNGSUZPLmJpbmQoc3RhdHMpO1xuICAgICAgICB0aGlzLmlzRmlsZSA9IHN0YXRzLmlzRmlsZS5iaW5kKHN0YXRzKTtcbiAgICAgICAgdGhpcy5pc1NvY2tldCA9IHN0YXRzLmlzU29ja2V0LmJpbmQoc3RhdHMpO1xuICAgICAgICB0aGlzLmlzU3ltYm9saWNMaW5rID0gc3RhdHMuaXNTeW1ib2xpY0xpbmsuYmluZChzdGF0cyk7XG4gICAgfVxufVxuZnVuY3Rpb24gY3JlYXRlRGlyZW50RnJvbVN0YXRzKG5hbWUsIHN0YXRzKSB7XG4gICAgcmV0dXJuIG5ldyBEaXJlbnRGcm9tU3RhdHMobmFtZSwgc3RhdHMpO1xufVxuZXhwb3J0cy5jcmVhdGVEaXJlbnRGcm9tU3RhdHMgPSBjcmVhdGVEaXJlbnRGcm9tU3RhdHM7XG4iLCAiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLmZzID0gdm9pZCAwO1xuY29uc3QgZnMgPSByZXF1aXJlKFwiLi9mc1wiKTtcbmV4cG9ydHMuZnMgPSBmcztcbiIsICJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuam9pblBhdGhTZWdtZW50cyA9IHZvaWQgMDtcbmZ1bmN0aW9uIGpvaW5QYXRoU2VnbWVudHMoYSwgYiwgc2VwYXJhdG9yKSB7XG4gICAgLyoqXG4gICAgICogVGhlIGNvcnJlY3QgaGFuZGxpbmcgb2YgY2FzZXMgd2hlbiB0aGUgZmlyc3Qgc2VnbWVudCBpcyBhIHJvb3QgKGAvYCwgYEM6L2ApIG9yIFVOQyBwYXRoIChgLy8/L0M6L2ApLlxuICAgICAqL1xuICAgIGlmIChhLmVuZHNXaXRoKHNlcGFyYXRvcikpIHtcbiAgICAgICAgcmV0dXJuIGEgKyBiO1xuICAgIH1cbiAgICByZXR1cm4gYSArIHNlcGFyYXRvciArIGI7XG59XG5leHBvcnRzLmpvaW5QYXRoU2VnbWVudHMgPSBqb2luUGF0aFNlZ21lbnRzO1xuIiwgIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5yZWFkZGlyID0gZXhwb3J0cy5yZWFkZGlyV2l0aEZpbGVUeXBlcyA9IGV4cG9ydHMucmVhZCA9IHZvaWQgMDtcbmNvbnN0IGZzU3RhdCA9IHJlcXVpcmUoXCJAbm9kZWxpYi9mcy5zdGF0XCIpO1xuY29uc3QgcnBsID0gcmVxdWlyZShcInJ1bi1wYXJhbGxlbFwiKTtcbmNvbnN0IGNvbnN0YW50c18xID0gcmVxdWlyZShcIi4uL2NvbnN0YW50c1wiKTtcbmNvbnN0IHV0aWxzID0gcmVxdWlyZShcIi4uL3V0aWxzXCIpO1xuY29uc3QgY29tbW9uID0gcmVxdWlyZShcIi4vY29tbW9uXCIpO1xuZnVuY3Rpb24gcmVhZChkaXJlY3RvcnksIHNldHRpbmdzLCBjYWxsYmFjaykge1xuICAgIGlmICghc2V0dGluZ3Muc3RhdHMgJiYgY29uc3RhbnRzXzEuSVNfU1VQUE9SVF9SRUFERElSX1dJVEhfRklMRV9UWVBFUykge1xuICAgICAgICByZWFkZGlyV2l0aEZpbGVUeXBlcyhkaXJlY3RvcnksIHNldHRpbmdzLCBjYWxsYmFjayk7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgcmVhZGRpcihkaXJlY3RvcnksIHNldHRpbmdzLCBjYWxsYmFjayk7XG59XG5leHBvcnRzLnJlYWQgPSByZWFkO1xuZnVuY3Rpb24gcmVhZGRpcldpdGhGaWxlVHlwZXMoZGlyZWN0b3J5LCBzZXR0aW5ncywgY2FsbGJhY2spIHtcbiAgICBzZXR0aW5ncy5mcy5yZWFkZGlyKGRpcmVjdG9yeSwgeyB3aXRoRmlsZVR5cGVzOiB0cnVlIH0sIChyZWFkZGlyRXJyb3IsIGRpcmVudHMpID0+IHtcbiAgICAgICAgaWYgKHJlYWRkaXJFcnJvciAhPT0gbnVsbCkge1xuICAgICAgICAgICAgY2FsbEZhaWx1cmVDYWxsYmFjayhjYWxsYmFjaywgcmVhZGRpckVycm9yKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBlbnRyaWVzID0gZGlyZW50cy5tYXAoKGRpcmVudCkgPT4gKHtcbiAgICAgICAgICAgIGRpcmVudCxcbiAgICAgICAgICAgIG5hbWU6IGRpcmVudC5uYW1lLFxuICAgICAgICAgICAgcGF0aDogY29tbW9uLmpvaW5QYXRoU2VnbWVudHMoZGlyZWN0b3J5LCBkaXJlbnQubmFtZSwgc2V0dGluZ3MucGF0aFNlZ21lbnRTZXBhcmF0b3IpXG4gICAgICAgIH0pKTtcbiAgICAgICAgaWYgKCFzZXR0aW5ncy5mb2xsb3dTeW1ib2xpY0xpbmtzKSB7XG4gICAgICAgICAgICBjYWxsU3VjY2Vzc0NhbGxiYWNrKGNhbGxiYWNrLCBlbnRyaWVzKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB0YXNrcyA9IGVudHJpZXMubWFwKChlbnRyeSkgPT4gbWFrZVJwbFRhc2tFbnRyeShlbnRyeSwgc2V0dGluZ3MpKTtcbiAgICAgICAgcnBsKHRhc2tzLCAocnBsRXJyb3IsIHJwbEVudHJpZXMpID0+IHtcbiAgICAgICAgICAgIGlmIChycGxFcnJvciAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGNhbGxGYWlsdXJlQ2FsbGJhY2soY2FsbGJhY2ssIHJwbEVycm9yKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYWxsU3VjY2Vzc0NhbGxiYWNrKGNhbGxiYWNrLCBycGxFbnRyaWVzKTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG59XG5leHBvcnRzLnJlYWRkaXJXaXRoRmlsZVR5cGVzID0gcmVhZGRpcldpdGhGaWxlVHlwZXM7XG5mdW5jdGlvbiBtYWtlUnBsVGFza0VudHJ5KGVudHJ5LCBzZXR0aW5ncykge1xuICAgIHJldHVybiAoZG9uZSkgPT4ge1xuICAgICAgICBpZiAoIWVudHJ5LmRpcmVudC5pc1N5bWJvbGljTGluaygpKSB7XG4gICAgICAgICAgICBkb25lKG51bGwsIGVudHJ5KTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBzZXR0aW5ncy5mcy5zdGF0KGVudHJ5LnBhdGgsIChzdGF0RXJyb3IsIHN0YXRzKSA9PiB7XG4gICAgICAgICAgICBpZiAoc3RhdEVycm9yICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgaWYgKHNldHRpbmdzLnRocm93RXJyb3JPbkJyb2tlblN5bWJvbGljTGluaykge1xuICAgICAgICAgICAgICAgICAgICBkb25lKHN0YXRFcnJvcik7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZG9uZShudWxsLCBlbnRyeSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZW50cnkuZGlyZW50ID0gdXRpbHMuZnMuY3JlYXRlRGlyZW50RnJvbVN0YXRzKGVudHJ5Lm5hbWUsIHN0YXRzKTtcbiAgICAgICAgICAgIGRvbmUobnVsbCwgZW50cnkpO1xuICAgICAgICB9KTtcbiAgICB9O1xufVxuZnVuY3Rpb24gcmVhZGRpcihkaXJlY3RvcnksIHNldHRpbmdzLCBjYWxsYmFjaykge1xuICAgIHNldHRpbmdzLmZzLnJlYWRkaXIoZGlyZWN0b3J5LCAocmVhZGRpckVycm9yLCBuYW1lcykgPT4ge1xuICAgICAgICBpZiAocmVhZGRpckVycm9yICE9PSBudWxsKSB7XG4gICAgICAgICAgICBjYWxsRmFpbHVyZUNhbGxiYWNrKGNhbGxiYWNrLCByZWFkZGlyRXJyb3IpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHRhc2tzID0gbmFtZXMubWFwKChuYW1lKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBwYXRoID0gY29tbW9uLmpvaW5QYXRoU2VnbWVudHMoZGlyZWN0b3J5LCBuYW1lLCBzZXR0aW5ncy5wYXRoU2VnbWVudFNlcGFyYXRvcik7XG4gICAgICAgICAgICByZXR1cm4gKGRvbmUpID0+IHtcbiAgICAgICAgICAgICAgICBmc1N0YXQuc3RhdChwYXRoLCBzZXR0aW5ncy5mc1N0YXRTZXR0aW5ncywgKGVycm9yLCBzdGF0cykgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3IgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRvbmUoZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGVudHJ5ID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICBkaXJlbnQ6IHV0aWxzLmZzLmNyZWF0ZURpcmVudEZyb21TdGF0cyhuYW1lLCBzdGF0cylcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNldHRpbmdzLnN0YXRzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbnRyeS5zdGF0cyA9IHN0YXRzO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGRvbmUobnVsbCwgZW50cnkpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJwbCh0YXNrcywgKHJwbEVycm9yLCBlbnRyaWVzKSA9PiB7XG4gICAgICAgICAgICBpZiAocnBsRXJyb3IgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBjYWxsRmFpbHVyZUNhbGxiYWNrKGNhbGxiYWNrLCBycGxFcnJvcik7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FsbFN1Y2Nlc3NDYWxsYmFjayhjYWxsYmFjaywgZW50cmllcyk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xufVxuZXhwb3J0cy5yZWFkZGlyID0gcmVhZGRpcjtcbmZ1bmN0aW9uIGNhbGxGYWlsdXJlQ2FsbGJhY2soY2FsbGJhY2ssIGVycm9yKSB7XG4gICAgY2FsbGJhY2soZXJyb3IpO1xufVxuZnVuY3Rpb24gY2FsbFN1Y2Nlc3NDYWxsYmFjayhjYWxsYmFjaywgcmVzdWx0KSB7XG4gICAgY2FsbGJhY2sobnVsbCwgcmVzdWx0KTtcbn1cbiIsICJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMucmVhZGRpciA9IGV4cG9ydHMucmVhZGRpcldpdGhGaWxlVHlwZXMgPSBleHBvcnRzLnJlYWQgPSB2b2lkIDA7XG5jb25zdCBmc1N0YXQgPSByZXF1aXJlKFwiQG5vZGVsaWIvZnMuc3RhdFwiKTtcbmNvbnN0IGNvbnN0YW50c18xID0gcmVxdWlyZShcIi4uL2NvbnN0YW50c1wiKTtcbmNvbnN0IHV0aWxzID0gcmVxdWlyZShcIi4uL3V0aWxzXCIpO1xuY29uc3QgY29tbW9uID0gcmVxdWlyZShcIi4vY29tbW9uXCIpO1xuZnVuY3Rpb24gcmVhZChkaXJlY3RvcnksIHNldHRpbmdzKSB7XG4gICAgaWYgKCFzZXR0aW5ncy5zdGF0cyAmJiBjb25zdGFudHNfMS5JU19TVVBQT1JUX1JFQURESVJfV0lUSF9GSUxFX1RZUEVTKSB7XG4gICAgICAgIHJldHVybiByZWFkZGlyV2l0aEZpbGVUeXBlcyhkaXJlY3RvcnksIHNldHRpbmdzKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlYWRkaXIoZGlyZWN0b3J5LCBzZXR0aW5ncyk7XG59XG5leHBvcnRzLnJlYWQgPSByZWFkO1xuZnVuY3Rpb24gcmVhZGRpcldpdGhGaWxlVHlwZXMoZGlyZWN0b3J5LCBzZXR0aW5ncykge1xuICAgIGNvbnN0IGRpcmVudHMgPSBzZXR0aW5ncy5mcy5yZWFkZGlyU3luYyhkaXJlY3RvcnksIHsgd2l0aEZpbGVUeXBlczogdHJ1ZSB9KTtcbiAgICByZXR1cm4gZGlyZW50cy5tYXAoKGRpcmVudCkgPT4ge1xuICAgICAgICBjb25zdCBlbnRyeSA9IHtcbiAgICAgICAgICAgIGRpcmVudCxcbiAgICAgICAgICAgIG5hbWU6IGRpcmVudC5uYW1lLFxuICAgICAgICAgICAgcGF0aDogY29tbW9uLmpvaW5QYXRoU2VnbWVudHMoZGlyZWN0b3J5LCBkaXJlbnQubmFtZSwgc2V0dGluZ3MucGF0aFNlZ21lbnRTZXBhcmF0b3IpXG4gICAgICAgIH07XG4gICAgICAgIGlmIChlbnRyeS5kaXJlbnQuaXNTeW1ib2xpY0xpbmsoKSAmJiBzZXR0aW5ncy5mb2xsb3dTeW1ib2xpY0xpbmtzKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHN0YXRzID0gc2V0dGluZ3MuZnMuc3RhdFN5bmMoZW50cnkucGF0aCk7XG4gICAgICAgICAgICAgICAgZW50cnkuZGlyZW50ID0gdXRpbHMuZnMuY3JlYXRlRGlyZW50RnJvbVN0YXRzKGVudHJ5Lm5hbWUsIHN0YXRzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgIGlmIChzZXR0aW5ncy50aHJvd0Vycm9yT25Ccm9rZW5TeW1ib2xpY0xpbmspIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBlbnRyeTtcbiAgICB9KTtcbn1cbmV4cG9ydHMucmVhZGRpcldpdGhGaWxlVHlwZXMgPSByZWFkZGlyV2l0aEZpbGVUeXBlcztcbmZ1bmN0aW9uIHJlYWRkaXIoZGlyZWN0b3J5LCBzZXR0aW5ncykge1xuICAgIGNvbnN0IG5hbWVzID0gc2V0dGluZ3MuZnMucmVhZGRpclN5bmMoZGlyZWN0b3J5KTtcbiAgICByZXR1cm4gbmFtZXMubWFwKChuYW1lKSA9PiB7XG4gICAgICAgIGNvbnN0IGVudHJ5UGF0aCA9IGNvbW1vbi5qb2luUGF0aFNlZ21lbnRzKGRpcmVjdG9yeSwgbmFtZSwgc2V0dGluZ3MucGF0aFNlZ21lbnRTZXBhcmF0b3IpO1xuICAgICAgICBjb25zdCBzdGF0cyA9IGZzU3RhdC5zdGF0U3luYyhlbnRyeVBhdGgsIHNldHRpbmdzLmZzU3RhdFNldHRpbmdzKTtcbiAgICAgICAgY29uc3QgZW50cnkgPSB7XG4gICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgcGF0aDogZW50cnlQYXRoLFxuICAgICAgICAgICAgZGlyZW50OiB1dGlscy5mcy5jcmVhdGVEaXJlbnRGcm9tU3RhdHMobmFtZSwgc3RhdHMpXG4gICAgICAgIH07XG4gICAgICAgIGlmIChzZXR0aW5ncy5zdGF0cykge1xuICAgICAgICAgICAgZW50cnkuc3RhdHMgPSBzdGF0cztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZW50cnk7XG4gICAgfSk7XG59XG5leHBvcnRzLnJlYWRkaXIgPSByZWFkZGlyO1xuIiwgIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5jcmVhdGVGaWxlU3lzdGVtQWRhcHRlciA9IGV4cG9ydHMuRklMRV9TWVNURU1fQURBUFRFUiA9IHZvaWQgMDtcbmNvbnN0IGZzID0gcmVxdWlyZShcImZzXCIpO1xuZXhwb3J0cy5GSUxFX1NZU1RFTV9BREFQVEVSID0ge1xuICAgIGxzdGF0OiBmcy5sc3RhdCxcbiAgICBzdGF0OiBmcy5zdGF0LFxuICAgIGxzdGF0U3luYzogZnMubHN0YXRTeW5jLFxuICAgIHN0YXRTeW5jOiBmcy5zdGF0U3luYyxcbiAgICByZWFkZGlyOiBmcy5yZWFkZGlyLFxuICAgIHJlYWRkaXJTeW5jOiBmcy5yZWFkZGlyU3luY1xufTtcbmZ1bmN0aW9uIGNyZWF0ZUZpbGVTeXN0ZW1BZGFwdGVyKGZzTWV0aG9kcykge1xuICAgIGlmIChmc01ldGhvZHMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gZXhwb3J0cy5GSUxFX1NZU1RFTV9BREFQVEVSO1xuICAgIH1cbiAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBleHBvcnRzLkZJTEVfU1lTVEVNX0FEQVBURVIpLCBmc01ldGhvZHMpO1xufVxuZXhwb3J0cy5jcmVhdGVGaWxlU3lzdGVtQWRhcHRlciA9IGNyZWF0ZUZpbGVTeXN0ZW1BZGFwdGVyO1xuIiwgIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuY29uc3QgcGF0aCA9IHJlcXVpcmUoXCJwYXRoXCIpO1xuY29uc3QgZnNTdGF0ID0gcmVxdWlyZShcIkBub2RlbGliL2ZzLnN0YXRcIik7XG5jb25zdCBmcyA9IHJlcXVpcmUoXCIuL2FkYXB0ZXJzL2ZzXCIpO1xuY2xhc3MgU2V0dGluZ3Mge1xuICAgIGNvbnN0cnVjdG9yKF9vcHRpb25zID0ge30pIHtcbiAgICAgICAgdGhpcy5fb3B0aW9ucyA9IF9vcHRpb25zO1xuICAgICAgICB0aGlzLmZvbGxvd1N5bWJvbGljTGlua3MgPSB0aGlzLl9nZXRWYWx1ZSh0aGlzLl9vcHRpb25zLmZvbGxvd1N5bWJvbGljTGlua3MsIGZhbHNlKTtcbiAgICAgICAgdGhpcy5mcyA9IGZzLmNyZWF0ZUZpbGVTeXN0ZW1BZGFwdGVyKHRoaXMuX29wdGlvbnMuZnMpO1xuICAgICAgICB0aGlzLnBhdGhTZWdtZW50U2VwYXJhdG9yID0gdGhpcy5fZ2V0VmFsdWUodGhpcy5fb3B0aW9ucy5wYXRoU2VnbWVudFNlcGFyYXRvciwgcGF0aC5zZXApO1xuICAgICAgICB0aGlzLnN0YXRzID0gdGhpcy5fZ2V0VmFsdWUodGhpcy5fb3B0aW9ucy5zdGF0cywgZmFsc2UpO1xuICAgICAgICB0aGlzLnRocm93RXJyb3JPbkJyb2tlblN5bWJvbGljTGluayA9IHRoaXMuX2dldFZhbHVlKHRoaXMuX29wdGlvbnMudGhyb3dFcnJvck9uQnJva2VuU3ltYm9saWNMaW5rLCB0cnVlKTtcbiAgICAgICAgdGhpcy5mc1N0YXRTZXR0aW5ncyA9IG5ldyBmc1N0YXQuU2V0dGluZ3Moe1xuICAgICAgICAgICAgZm9sbG93U3ltYm9saWNMaW5rOiB0aGlzLmZvbGxvd1N5bWJvbGljTGlua3MsXG4gICAgICAgICAgICBmczogdGhpcy5mcyxcbiAgICAgICAgICAgIHRocm93RXJyb3JPbkJyb2tlblN5bWJvbGljTGluazogdGhpcy50aHJvd0Vycm9yT25Ccm9rZW5TeW1ib2xpY0xpbmtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIF9nZXRWYWx1ZShvcHRpb24sIHZhbHVlKSB7XG4gICAgICAgIHJldHVybiBvcHRpb24gIT09IG51bGwgJiYgb3B0aW9uICE9PSB2b2lkIDAgPyBvcHRpb24gOiB2YWx1ZTtcbiAgICB9XG59XG5leHBvcnRzLmRlZmF1bHQgPSBTZXR0aW5ncztcbiIsICJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuU2V0dGluZ3MgPSBleHBvcnRzLnNjYW5kaXJTeW5jID0gZXhwb3J0cy5zY2FuZGlyID0gdm9pZCAwO1xuY29uc3QgYXN5bmMgPSByZXF1aXJlKFwiLi9wcm92aWRlcnMvYXN5bmNcIik7XG5jb25zdCBzeW5jID0gcmVxdWlyZShcIi4vcHJvdmlkZXJzL3N5bmNcIik7XG5jb25zdCBzZXR0aW5nc18xID0gcmVxdWlyZShcIi4vc2V0dGluZ3NcIik7XG5leHBvcnRzLlNldHRpbmdzID0gc2V0dGluZ3NfMS5kZWZhdWx0O1xuZnVuY3Rpb24gc2NhbmRpcihwYXRoLCBvcHRpb25zT3JTZXR0aW5nc09yQ2FsbGJhY2ssIGNhbGxiYWNrKSB7XG4gICAgaWYgKHR5cGVvZiBvcHRpb25zT3JTZXR0aW5nc09yQ2FsbGJhY2sgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgYXN5bmMucmVhZChwYXRoLCBnZXRTZXR0aW5ncygpLCBvcHRpb25zT3JTZXR0aW5nc09yQ2FsbGJhY2spO1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGFzeW5jLnJlYWQocGF0aCwgZ2V0U2V0dGluZ3Mob3B0aW9uc09yU2V0dGluZ3NPckNhbGxiYWNrKSwgY2FsbGJhY2spO1xufVxuZXhwb3J0cy5zY2FuZGlyID0gc2NhbmRpcjtcbmZ1bmN0aW9uIHNjYW5kaXJTeW5jKHBhdGgsIG9wdGlvbnNPclNldHRpbmdzKSB7XG4gICAgY29uc3Qgc2V0dGluZ3MgPSBnZXRTZXR0aW5ncyhvcHRpb25zT3JTZXR0aW5ncyk7XG4gICAgcmV0dXJuIHN5bmMucmVhZChwYXRoLCBzZXR0aW5ncyk7XG59XG5leHBvcnRzLnNjYW5kaXJTeW5jID0gc2NhbmRpclN5bmM7XG5mdW5jdGlvbiBnZXRTZXR0aW5ncyhzZXR0aW5nc09yT3B0aW9ucyA9IHt9KSB7XG4gICAgaWYgKHNldHRpbmdzT3JPcHRpb25zIGluc3RhbmNlb2Ygc2V0dGluZ3NfMS5kZWZhdWx0KSB7XG4gICAgICAgIHJldHVybiBzZXR0aW5nc09yT3B0aW9ucztcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBzZXR0aW5nc18xLmRlZmF1bHQoc2V0dGluZ3NPck9wdGlvbnMpO1xufVxuIiwgIid1c2Ugc3RyaWN0J1xuXG5mdW5jdGlvbiByZXVzaWZ5IChDb25zdHJ1Y3Rvcikge1xuICB2YXIgaGVhZCA9IG5ldyBDb25zdHJ1Y3RvcigpXG4gIHZhciB0YWlsID0gaGVhZFxuXG4gIGZ1bmN0aW9uIGdldCAoKSB7XG4gICAgdmFyIGN1cnJlbnQgPSBoZWFkXG5cbiAgICBpZiAoY3VycmVudC5uZXh0KSB7XG4gICAgICBoZWFkID0gY3VycmVudC5uZXh0XG4gICAgfSBlbHNlIHtcbiAgICAgIGhlYWQgPSBuZXcgQ29uc3RydWN0b3IoKVxuICAgICAgdGFpbCA9IGhlYWRcbiAgICB9XG5cbiAgICBjdXJyZW50Lm5leHQgPSBudWxsXG5cbiAgICByZXR1cm4gY3VycmVudFxuICB9XG5cbiAgZnVuY3Rpb24gcmVsZWFzZSAob2JqKSB7XG4gICAgdGFpbC5uZXh0ID0gb2JqXG4gICAgdGFpbCA9IG9ialxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBnZXQ6IGdldCxcbiAgICByZWxlYXNlOiByZWxlYXNlXG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSByZXVzaWZ5XG4iLCAiJ3VzZSBzdHJpY3QnXG5cbi8qIGVzbGludC1kaXNhYmxlIG5vLXZhciAqL1xuXG52YXIgcmV1c2lmeSA9IHJlcXVpcmUoJ3JldXNpZnknKVxuXG5mdW5jdGlvbiBmYXN0cXVldWUgKGNvbnRleHQsIHdvcmtlciwgY29uY3VycmVuY3kpIHtcbiAgaWYgKHR5cGVvZiBjb250ZXh0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgY29uY3VycmVuY3kgPSB3b3JrZXJcbiAgICB3b3JrZXIgPSBjb250ZXh0XG4gICAgY29udGV4dCA9IG51bGxcbiAgfVxuXG4gIGlmIChjb25jdXJyZW5jeSA8IDEpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2Zhc3RxdWV1ZSBjb25jdXJyZW5jeSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAxJylcbiAgfVxuXG4gIHZhciBjYWNoZSA9IHJldXNpZnkoVGFzaylcbiAgdmFyIHF1ZXVlSGVhZCA9IG51bGxcbiAgdmFyIHF1ZXVlVGFpbCA9IG51bGxcbiAgdmFyIF9ydW5uaW5nID0gMFxuICB2YXIgZXJyb3JIYW5kbGVyID0gbnVsbFxuXG4gIHZhciBzZWxmID0ge1xuICAgIHB1c2g6IHB1c2gsXG4gICAgZHJhaW46IG5vb3AsXG4gICAgc2F0dXJhdGVkOiBub29wLFxuICAgIHBhdXNlOiBwYXVzZSxcbiAgICBwYXVzZWQ6IGZhbHNlLFxuICAgIGNvbmN1cnJlbmN5OiBjb25jdXJyZW5jeSxcbiAgICBydW5uaW5nOiBydW5uaW5nLFxuICAgIHJlc3VtZTogcmVzdW1lLFxuICAgIGlkbGU6IGlkbGUsXG4gICAgbGVuZ3RoOiBsZW5ndGgsXG4gICAgZ2V0UXVldWU6IGdldFF1ZXVlLFxuICAgIHVuc2hpZnQ6IHVuc2hpZnQsXG4gICAgZW1wdHk6IG5vb3AsXG4gICAga2lsbDoga2lsbCxcbiAgICBraWxsQW5kRHJhaW46IGtpbGxBbmREcmFpbixcbiAgICBlcnJvcjogZXJyb3JcbiAgfVxuXG4gIHJldHVybiBzZWxmXG5cbiAgZnVuY3Rpb24gcnVubmluZyAoKSB7XG4gICAgcmV0dXJuIF9ydW5uaW5nXG4gIH1cblxuICBmdW5jdGlvbiBwYXVzZSAoKSB7XG4gICAgc2VsZi5wYXVzZWQgPSB0cnVlXG4gIH1cblxuICBmdW5jdGlvbiBsZW5ndGggKCkge1xuICAgIHZhciBjdXJyZW50ID0gcXVldWVIZWFkXG4gICAgdmFyIGNvdW50ZXIgPSAwXG5cbiAgICB3aGlsZSAoY3VycmVudCkge1xuICAgICAgY3VycmVudCA9IGN1cnJlbnQubmV4dFxuICAgICAgY291bnRlcisrXG4gICAgfVxuXG4gICAgcmV0dXJuIGNvdW50ZXJcbiAgfVxuXG4gIGZ1bmN0aW9uIGdldFF1ZXVlICgpIHtcbiAgICB2YXIgY3VycmVudCA9IHF1ZXVlSGVhZFxuICAgIHZhciB0YXNrcyA9IFtdXG5cbiAgICB3aGlsZSAoY3VycmVudCkge1xuICAgICAgdGFza3MucHVzaChjdXJyZW50LnZhbHVlKVxuICAgICAgY3VycmVudCA9IGN1cnJlbnQubmV4dFxuICAgIH1cblxuICAgIHJldHVybiB0YXNrc1xuICB9XG5cbiAgZnVuY3Rpb24gcmVzdW1lICgpIHtcbiAgICBpZiAoIXNlbGYucGF1c2VkKSByZXR1cm5cbiAgICBzZWxmLnBhdXNlZCA9IGZhbHNlXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzZWxmLmNvbmN1cnJlbmN5OyBpKyspIHtcbiAgICAgIF9ydW5uaW5nKytcbiAgICAgIHJlbGVhc2UoKVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGlkbGUgKCkge1xuICAgIHJldHVybiBfcnVubmluZyA9PT0gMCAmJiBzZWxmLmxlbmd0aCgpID09PSAwXG4gIH1cblxuICBmdW5jdGlvbiBwdXNoICh2YWx1ZSwgZG9uZSkge1xuICAgIHZhciBjdXJyZW50ID0gY2FjaGUuZ2V0KClcblxuICAgIGN1cnJlbnQuY29udGV4dCA9IGNvbnRleHRcbiAgICBjdXJyZW50LnJlbGVhc2UgPSByZWxlYXNlXG4gICAgY3VycmVudC52YWx1ZSA9IHZhbHVlXG4gICAgY3VycmVudC5jYWxsYmFjayA9IGRvbmUgfHwgbm9vcFxuICAgIGN1cnJlbnQuZXJyb3JIYW5kbGVyID0gZXJyb3JIYW5kbGVyXG5cbiAgICBpZiAoX3J1bm5pbmcgPT09IHNlbGYuY29uY3VycmVuY3kgfHwgc2VsZi5wYXVzZWQpIHtcbiAgICAgIGlmIChxdWV1ZVRhaWwpIHtcbiAgICAgICAgcXVldWVUYWlsLm5leHQgPSBjdXJyZW50XG4gICAgICAgIHF1ZXVlVGFpbCA9IGN1cnJlbnRcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHF1ZXVlSGVhZCA9IGN1cnJlbnRcbiAgICAgICAgcXVldWVUYWlsID0gY3VycmVudFxuICAgICAgICBzZWxmLnNhdHVyYXRlZCgpXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIF9ydW5uaW5nKytcbiAgICAgIHdvcmtlci5jYWxsKGNvbnRleHQsIGN1cnJlbnQudmFsdWUsIGN1cnJlbnQud29ya2VkKVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHVuc2hpZnQgKHZhbHVlLCBkb25lKSB7XG4gICAgdmFyIGN1cnJlbnQgPSBjYWNoZS5nZXQoKVxuXG4gICAgY3VycmVudC5jb250ZXh0ID0gY29udGV4dFxuICAgIGN1cnJlbnQucmVsZWFzZSA9IHJlbGVhc2VcbiAgICBjdXJyZW50LnZhbHVlID0gdmFsdWVcbiAgICBjdXJyZW50LmNhbGxiYWNrID0gZG9uZSB8fCBub29wXG5cbiAgICBpZiAoX3J1bm5pbmcgPT09IHNlbGYuY29uY3VycmVuY3kgfHwgc2VsZi5wYXVzZWQpIHtcbiAgICAgIGlmIChxdWV1ZUhlYWQpIHtcbiAgICAgICAgY3VycmVudC5uZXh0ID0gcXVldWVIZWFkXG4gICAgICAgIHF1ZXVlSGVhZCA9IGN1cnJlbnRcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHF1ZXVlSGVhZCA9IGN1cnJlbnRcbiAgICAgICAgcXVldWVUYWlsID0gY3VycmVudFxuICAgICAgICBzZWxmLnNhdHVyYXRlZCgpXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIF9ydW5uaW5nKytcbiAgICAgIHdvcmtlci5jYWxsKGNvbnRleHQsIGN1cnJlbnQudmFsdWUsIGN1cnJlbnQud29ya2VkKVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHJlbGVhc2UgKGhvbGRlcikge1xuICAgIGlmIChob2xkZXIpIHtcbiAgICAgIGNhY2hlLnJlbGVhc2UoaG9sZGVyKVxuICAgIH1cbiAgICB2YXIgbmV4dCA9IHF1ZXVlSGVhZFxuICAgIGlmIChuZXh0KSB7XG4gICAgICBpZiAoIXNlbGYucGF1c2VkKSB7XG4gICAgICAgIGlmIChxdWV1ZVRhaWwgPT09IHF1ZXVlSGVhZCkge1xuICAgICAgICAgIHF1ZXVlVGFpbCA9IG51bGxcbiAgICAgICAgfVxuICAgICAgICBxdWV1ZUhlYWQgPSBuZXh0Lm5leHRcbiAgICAgICAgbmV4dC5uZXh0ID0gbnVsbFxuICAgICAgICB3b3JrZXIuY2FsbChjb250ZXh0LCBuZXh0LnZhbHVlLCBuZXh0LndvcmtlZClcbiAgICAgICAgaWYgKHF1ZXVlVGFpbCA9PT0gbnVsbCkge1xuICAgICAgICAgIHNlbGYuZW1wdHkoKVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBfcnVubmluZy0tXG4gICAgICB9XG4gICAgfSBlbHNlIGlmICgtLV9ydW5uaW5nID09PSAwKSB7XG4gICAgICBzZWxmLmRyYWluKClcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBraWxsICgpIHtcbiAgICBxdWV1ZUhlYWQgPSBudWxsXG4gICAgcXVldWVUYWlsID0gbnVsbFxuICAgIHNlbGYuZHJhaW4gPSBub29wXG4gIH1cblxuICBmdW5jdGlvbiBraWxsQW5kRHJhaW4gKCkge1xuICAgIHF1ZXVlSGVhZCA9IG51bGxcbiAgICBxdWV1ZVRhaWwgPSBudWxsXG4gICAgc2VsZi5kcmFpbigpXG4gICAgc2VsZi5kcmFpbiA9IG5vb3BcbiAgfVxuXG4gIGZ1bmN0aW9uIGVycm9yIChoYW5kbGVyKSB7XG4gICAgZXJyb3JIYW5kbGVyID0gaGFuZGxlclxuICB9XG59XG5cbmZ1bmN0aW9uIG5vb3AgKCkge31cblxuZnVuY3Rpb24gVGFzayAoKSB7XG4gIHRoaXMudmFsdWUgPSBudWxsXG4gIHRoaXMuY2FsbGJhY2sgPSBub29wXG4gIHRoaXMubmV4dCA9IG51bGxcbiAgdGhpcy5yZWxlYXNlID0gbm9vcFxuICB0aGlzLmNvbnRleHQgPSBudWxsXG4gIHRoaXMuZXJyb3JIYW5kbGVyID0gbnVsbFxuXG4gIHZhciBzZWxmID0gdGhpc1xuXG4gIHRoaXMud29ya2VkID0gZnVuY3Rpb24gd29ya2VkIChlcnIsIHJlc3VsdCkge1xuICAgIHZhciBjYWxsYmFjayA9IHNlbGYuY2FsbGJhY2tcbiAgICB2YXIgZXJyb3JIYW5kbGVyID0gc2VsZi5lcnJvckhhbmRsZXJcbiAgICB2YXIgdmFsID0gc2VsZi52YWx1ZVxuICAgIHNlbGYudmFsdWUgPSBudWxsXG4gICAgc2VsZi5jYWxsYmFjayA9IG5vb3BcbiAgICBpZiAoc2VsZi5lcnJvckhhbmRsZXIpIHtcbiAgICAgIGVycm9ySGFuZGxlcihlcnIsIHZhbClcbiAgICB9XG4gICAgY2FsbGJhY2suY2FsbChzZWxmLmNvbnRleHQsIGVyciwgcmVzdWx0KVxuICAgIHNlbGYucmVsZWFzZShzZWxmKVxuICB9XG59XG5cbmZ1bmN0aW9uIHF1ZXVlQXNQcm9taXNlZCAoY29udGV4dCwgd29ya2VyLCBjb25jdXJyZW5jeSkge1xuICBpZiAodHlwZW9mIGNvbnRleHQgPT09ICdmdW5jdGlvbicpIHtcbiAgICBjb25jdXJyZW5jeSA9IHdvcmtlclxuICAgIHdvcmtlciA9IGNvbnRleHRcbiAgICBjb250ZXh0ID0gbnVsbFxuICB9XG5cbiAgZnVuY3Rpb24gYXN5bmNXcmFwcGVyIChhcmcsIGNiKSB7XG4gICAgd29ya2VyLmNhbGwodGhpcywgYXJnKVxuICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICBjYihudWxsLCByZXMpXG4gICAgICB9LCBjYilcbiAgfVxuXG4gIHZhciBxdWV1ZSA9IGZhc3RxdWV1ZShjb250ZXh0LCBhc3luY1dyYXBwZXIsIGNvbmN1cnJlbmN5KVxuXG4gIHZhciBwdXNoQ2IgPSBxdWV1ZS5wdXNoXG4gIHZhciB1bnNoaWZ0Q2IgPSBxdWV1ZS51bnNoaWZ0XG5cbiAgcXVldWUucHVzaCA9IHB1c2hcbiAgcXVldWUudW5zaGlmdCA9IHVuc2hpZnRcbiAgcXVldWUuZHJhaW5lZCA9IGRyYWluZWRcblxuICByZXR1cm4gcXVldWVcblxuICBmdW5jdGlvbiBwdXNoICh2YWx1ZSkge1xuICAgIHZhciBwID0gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgcHVzaENiKHZhbHVlLCBmdW5jdGlvbiAoZXJyLCByZXN1bHQpIHtcbiAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgIHJlamVjdChlcnIpXG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cbiAgICAgICAgcmVzb2x2ZShyZXN1bHQpXG4gICAgICB9KVxuICAgIH0pXG5cbiAgICAvLyBMZXQncyBmb3JrIHRoZSBwcm9taXNlIGNoYWluIHRvXG4gICAgLy8gbWFrZSB0aGUgZXJyb3IgYnViYmxlIHVwIHRvIHRoZSB1c2VyIGJ1dFxuICAgIC8vIG5vdCBsZWFkIHRvIGEgdW5oYW5kbGVkUmVqZWN0aW9uXG4gICAgcC5jYXRjaChub29wKVxuXG4gICAgcmV0dXJuIHBcbiAgfVxuXG4gIGZ1bmN0aW9uIHVuc2hpZnQgKHZhbHVlKSB7XG4gICAgdmFyIHAgPSBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICB1bnNoaWZ0Q2IodmFsdWUsIGZ1bmN0aW9uIChlcnIsIHJlc3VsdCkge1xuICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgcmVqZWN0KGVycilcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuICAgICAgICByZXNvbHZlKHJlc3VsdClcbiAgICAgIH0pXG4gICAgfSlcblxuICAgIC8vIExldCdzIGZvcmsgdGhlIHByb21pc2UgY2hhaW4gdG9cbiAgICAvLyBtYWtlIHRoZSBlcnJvciBidWJibGUgdXAgdG8gdGhlIHVzZXIgYnV0XG4gICAgLy8gbm90IGxlYWQgdG8gYSB1bmhhbmRsZWRSZWplY3Rpb25cbiAgICBwLmNhdGNoKG5vb3ApXG5cbiAgICByZXR1cm4gcFxuICB9XG5cbiAgZnVuY3Rpb24gZHJhaW5lZCAoKSB7XG4gICAgdmFyIHByZXZpb3VzRHJhaW4gPSBxdWV1ZS5kcmFpblxuXG4gICAgdmFyIHAgPSBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSkge1xuICAgICAgcXVldWUuZHJhaW4gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHByZXZpb3VzRHJhaW4oKVxuICAgICAgICByZXNvbHZlKClcbiAgICAgIH1cbiAgICB9KVxuXG4gICAgcmV0dXJuIHBcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZhc3RxdWV1ZVxubW9kdWxlLmV4cG9ydHMucHJvbWlzZSA9IHF1ZXVlQXNQcm9taXNlZFxuIiwgIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5qb2luUGF0aFNlZ21lbnRzID0gZXhwb3J0cy5yZXBsYWNlUGF0aFNlZ21lbnRTZXBhcmF0b3IgPSBleHBvcnRzLmlzQXBwbGllZEZpbHRlciA9IGV4cG9ydHMuaXNGYXRhbEVycm9yID0gdm9pZCAwO1xuZnVuY3Rpb24gaXNGYXRhbEVycm9yKHNldHRpbmdzLCBlcnJvcikge1xuICAgIGlmIChzZXR0aW5ncy5lcnJvckZpbHRlciA9PT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuICFzZXR0aW5ncy5lcnJvckZpbHRlcihlcnJvcik7XG59XG5leHBvcnRzLmlzRmF0YWxFcnJvciA9IGlzRmF0YWxFcnJvcjtcbmZ1bmN0aW9uIGlzQXBwbGllZEZpbHRlcihmaWx0ZXIsIHZhbHVlKSB7XG4gICAgcmV0dXJuIGZpbHRlciA9PT0gbnVsbCB8fCBmaWx0ZXIodmFsdWUpO1xufVxuZXhwb3J0cy5pc0FwcGxpZWRGaWx0ZXIgPSBpc0FwcGxpZWRGaWx0ZXI7XG5mdW5jdGlvbiByZXBsYWNlUGF0aFNlZ21lbnRTZXBhcmF0b3IoZmlsZXBhdGgsIHNlcGFyYXRvcikge1xuICAgIHJldHVybiBmaWxlcGF0aC5zcGxpdCgvWy9cXFxcXS8pLmpvaW4oc2VwYXJhdG9yKTtcbn1cbmV4cG9ydHMucmVwbGFjZVBhdGhTZWdtZW50U2VwYXJhdG9yID0gcmVwbGFjZVBhdGhTZWdtZW50U2VwYXJhdG9yO1xuZnVuY3Rpb24gam9pblBhdGhTZWdtZW50cyhhLCBiLCBzZXBhcmF0b3IpIHtcbiAgICBpZiAoYSA9PT0gJycpIHtcbiAgICAgICAgcmV0dXJuIGI7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFRoZSBjb3JyZWN0IGhhbmRsaW5nIG9mIGNhc2VzIHdoZW4gdGhlIGZpcnN0IHNlZ21lbnQgaXMgYSByb290IChgL2AsIGBDOi9gKSBvciBVTkMgcGF0aCAoYC8vPy9DOi9gKS5cbiAgICAgKi9cbiAgICBpZiAoYS5lbmRzV2l0aChzZXBhcmF0b3IpKSB7XG4gICAgICAgIHJldHVybiBhICsgYjtcbiAgICB9XG4gICAgcmV0dXJuIGEgKyBzZXBhcmF0b3IgKyBiO1xufVxuZXhwb3J0cy5qb2luUGF0aFNlZ21lbnRzID0gam9pblBhdGhTZWdtZW50cztcbiIsICJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmNvbnN0IGNvbW1vbiA9IHJlcXVpcmUoXCIuL2NvbW1vblwiKTtcbmNsYXNzIFJlYWRlciB7XG4gICAgY29uc3RydWN0b3IoX3Jvb3QsIF9zZXR0aW5ncykge1xuICAgICAgICB0aGlzLl9yb290ID0gX3Jvb3Q7XG4gICAgICAgIHRoaXMuX3NldHRpbmdzID0gX3NldHRpbmdzO1xuICAgICAgICB0aGlzLl9yb290ID0gY29tbW9uLnJlcGxhY2VQYXRoU2VnbWVudFNlcGFyYXRvcihfcm9vdCwgX3NldHRpbmdzLnBhdGhTZWdtZW50U2VwYXJhdG9yKTtcbiAgICB9XG59XG5leHBvcnRzLmRlZmF1bHQgPSBSZWFkZXI7XG4iLCAiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5jb25zdCBldmVudHNfMSA9IHJlcXVpcmUoXCJldmVudHNcIik7XG5jb25zdCBmc1NjYW5kaXIgPSByZXF1aXJlKFwiQG5vZGVsaWIvZnMuc2NhbmRpclwiKTtcbmNvbnN0IGZhc3RxID0gcmVxdWlyZShcImZhc3RxXCIpO1xuY29uc3QgY29tbW9uID0gcmVxdWlyZShcIi4vY29tbW9uXCIpO1xuY29uc3QgcmVhZGVyXzEgPSByZXF1aXJlKFwiLi9yZWFkZXJcIik7XG5jbGFzcyBBc3luY1JlYWRlciBleHRlbmRzIHJlYWRlcl8xLmRlZmF1bHQge1xuICAgIGNvbnN0cnVjdG9yKF9yb290LCBfc2V0dGluZ3MpIHtcbiAgICAgICAgc3VwZXIoX3Jvb3QsIF9zZXR0aW5ncyk7XG4gICAgICAgIHRoaXMuX3NldHRpbmdzID0gX3NldHRpbmdzO1xuICAgICAgICB0aGlzLl9zY2FuZGlyID0gZnNTY2FuZGlyLnNjYW5kaXI7XG4gICAgICAgIHRoaXMuX2VtaXR0ZXIgPSBuZXcgZXZlbnRzXzEuRXZlbnRFbWl0dGVyKCk7XG4gICAgICAgIHRoaXMuX3F1ZXVlID0gZmFzdHEodGhpcy5fd29ya2VyLmJpbmQodGhpcyksIHRoaXMuX3NldHRpbmdzLmNvbmN1cnJlbmN5KTtcbiAgICAgICAgdGhpcy5faXNGYXRhbEVycm9yID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX2lzRGVzdHJveWVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX3F1ZXVlLmRyYWluID0gKCkgPT4ge1xuICAgICAgICAgICAgaWYgKCF0aGlzLl9pc0ZhdGFsRXJyb3IpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0dGVyLmVtaXQoJ2VuZCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH1cbiAgICByZWFkKCkge1xuICAgICAgICB0aGlzLl9pc0ZhdGFsRXJyb3IgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5faXNEZXN0cm95ZWQgPSBmYWxzZTtcbiAgICAgICAgc2V0SW1tZWRpYXRlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX3B1c2hUb1F1ZXVlKHRoaXMuX3Jvb3QsIHRoaXMuX3NldHRpbmdzLmJhc2VQYXRoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB0aGlzLl9lbWl0dGVyO1xuICAgIH1cbiAgICBnZXQgaXNEZXN0cm95ZWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc0Rlc3Ryb3llZDtcbiAgICB9XG4gICAgZGVzdHJveSgpIHtcbiAgICAgICAgaWYgKHRoaXMuX2lzRGVzdHJveWVkKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSByZWFkZXIgaXMgYWxyZWFkeSBkZXN0cm95ZWQnKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9pc0Rlc3Ryb3llZCA9IHRydWU7XG4gICAgICAgIHRoaXMuX3F1ZXVlLmtpbGxBbmREcmFpbigpO1xuICAgIH1cbiAgICBvbkVudHJ5KGNhbGxiYWNrKSB7XG4gICAgICAgIHRoaXMuX2VtaXR0ZXIub24oJ2VudHJ5JywgY2FsbGJhY2spO1xuICAgIH1cbiAgICBvbkVycm9yKGNhbGxiYWNrKSB7XG4gICAgICAgIHRoaXMuX2VtaXR0ZXIub25jZSgnZXJyb3InLCBjYWxsYmFjayk7XG4gICAgfVxuICAgIG9uRW5kKGNhbGxiYWNrKSB7XG4gICAgICAgIHRoaXMuX2VtaXR0ZXIub25jZSgnZW5kJywgY2FsbGJhY2spO1xuICAgIH1cbiAgICBfcHVzaFRvUXVldWUoZGlyZWN0b3J5LCBiYXNlKSB7XG4gICAgICAgIGNvbnN0IHF1ZXVlSXRlbSA9IHsgZGlyZWN0b3J5LCBiYXNlIH07XG4gICAgICAgIHRoaXMuX3F1ZXVlLnB1c2gocXVldWVJdGVtLCAoZXJyb3IpID0+IHtcbiAgICAgICAgICAgIGlmIChlcnJvciAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2hhbmRsZUVycm9yKGVycm9yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICAgIF93b3JrZXIoaXRlbSwgZG9uZSkge1xuICAgICAgICB0aGlzLl9zY2FuZGlyKGl0ZW0uZGlyZWN0b3J5LCB0aGlzLl9zZXR0aW5ncy5mc1NjYW5kaXJTZXR0aW5ncywgKGVycm9yLCBlbnRyaWVzKSA9PiB7XG4gICAgICAgICAgICBpZiAoZXJyb3IgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBkb25lKGVycm9yLCB1bmRlZmluZWQpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgICAgICAgICAgICAgIHRoaXMuX2hhbmRsZUVudHJ5KGVudHJ5LCBpdGVtLmJhc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZG9uZShudWxsLCB1bmRlZmluZWQpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgX2hhbmRsZUVycm9yKGVycm9yKSB7XG4gICAgICAgIGlmICh0aGlzLl9pc0Rlc3Ryb3llZCB8fCAhY29tbW9uLmlzRmF0YWxFcnJvcih0aGlzLl9zZXR0aW5ncywgZXJyb3IpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5faXNGYXRhbEVycm9yID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5faXNEZXN0cm95ZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLl9lbWl0dGVyLmVtaXQoJ2Vycm9yJywgZXJyb3IpO1xuICAgIH1cbiAgICBfaGFuZGxlRW50cnkoZW50cnksIGJhc2UpIHtcbiAgICAgICAgaWYgKHRoaXMuX2lzRGVzdHJveWVkIHx8IHRoaXMuX2lzRmF0YWxFcnJvcikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGZ1bGxwYXRoID0gZW50cnkucGF0aDtcbiAgICAgICAgaWYgKGJhc2UgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgZW50cnkucGF0aCA9IGNvbW1vbi5qb2luUGF0aFNlZ21lbnRzKGJhc2UsIGVudHJ5Lm5hbWUsIHRoaXMuX3NldHRpbmdzLnBhdGhTZWdtZW50U2VwYXJhdG9yKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY29tbW9uLmlzQXBwbGllZEZpbHRlcih0aGlzLl9zZXR0aW5ncy5lbnRyeUZpbHRlciwgZW50cnkpKSB7XG4gICAgICAgICAgICB0aGlzLl9lbWl0RW50cnkoZW50cnkpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChlbnRyeS5kaXJlbnQuaXNEaXJlY3RvcnkoKSAmJiBjb21tb24uaXNBcHBsaWVkRmlsdGVyKHRoaXMuX3NldHRpbmdzLmRlZXBGaWx0ZXIsIGVudHJ5KSkge1xuICAgICAgICAgICAgdGhpcy5fcHVzaFRvUXVldWUoZnVsbHBhdGgsIGJhc2UgPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IGVudHJ5LnBhdGgpO1xuICAgICAgICB9XG4gICAgfVxuICAgIF9lbWl0RW50cnkoZW50cnkpIHtcbiAgICAgICAgdGhpcy5fZW1pdHRlci5lbWl0KCdlbnRyeScsIGVudHJ5KTtcbiAgICB9XG59XG5leHBvcnRzLmRlZmF1bHQgPSBBc3luY1JlYWRlcjtcbiIsICJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmNvbnN0IGFzeW5jXzEgPSByZXF1aXJlKFwiLi4vcmVhZGVycy9hc3luY1wiKTtcbmNsYXNzIEFzeW5jUHJvdmlkZXIge1xuICAgIGNvbnN0cnVjdG9yKF9yb290LCBfc2V0dGluZ3MpIHtcbiAgICAgICAgdGhpcy5fcm9vdCA9IF9yb290O1xuICAgICAgICB0aGlzLl9zZXR0aW5ncyA9IF9zZXR0aW5ncztcbiAgICAgICAgdGhpcy5fcmVhZGVyID0gbmV3IGFzeW5jXzEuZGVmYXVsdCh0aGlzLl9yb290LCB0aGlzLl9zZXR0aW5ncyk7XG4gICAgICAgIHRoaXMuX3N0b3JhZ2UgPSBbXTtcbiAgICB9XG4gICAgcmVhZChjYWxsYmFjaykge1xuICAgICAgICB0aGlzLl9yZWFkZXIub25FcnJvcigoZXJyb3IpID0+IHtcbiAgICAgICAgICAgIGNhbGxGYWlsdXJlQ2FsbGJhY2soY2FsbGJhY2ssIGVycm9yKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuX3JlYWRlci5vbkVudHJ5KChlbnRyeSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fc3RvcmFnZS5wdXNoKGVudHJ5KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuX3JlYWRlci5vbkVuZCgoKSA9PiB7XG4gICAgICAgICAgICBjYWxsU3VjY2Vzc0NhbGxiYWNrKGNhbGxiYWNrLCB0aGlzLl9zdG9yYWdlKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuX3JlYWRlci5yZWFkKCk7XG4gICAgfVxufVxuZXhwb3J0cy5kZWZhdWx0ID0gQXN5bmNQcm92aWRlcjtcbmZ1bmN0aW9uIGNhbGxGYWlsdXJlQ2FsbGJhY2soY2FsbGJhY2ssIGVycm9yKSB7XG4gICAgY2FsbGJhY2soZXJyb3IpO1xufVxuZnVuY3Rpb24gY2FsbFN1Y2Nlc3NDYWxsYmFjayhjYWxsYmFjaywgZW50cmllcykge1xuICAgIGNhbGxiYWNrKG51bGwsIGVudHJpZXMpO1xufVxuIiwgIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuY29uc3Qgc3RyZWFtXzEgPSByZXF1aXJlKFwic3RyZWFtXCIpO1xuY29uc3QgYXN5bmNfMSA9IHJlcXVpcmUoXCIuLi9yZWFkZXJzL2FzeW5jXCIpO1xuY2xhc3MgU3RyZWFtUHJvdmlkZXIge1xuICAgIGNvbnN0cnVjdG9yKF9yb290LCBfc2V0dGluZ3MpIHtcbiAgICAgICAgdGhpcy5fcm9vdCA9IF9yb290O1xuICAgICAgICB0aGlzLl9zZXR0aW5ncyA9IF9zZXR0aW5ncztcbiAgICAgICAgdGhpcy5fcmVhZGVyID0gbmV3IGFzeW5jXzEuZGVmYXVsdCh0aGlzLl9yb290LCB0aGlzLl9zZXR0aW5ncyk7XG4gICAgICAgIHRoaXMuX3N0cmVhbSA9IG5ldyBzdHJlYW1fMS5SZWFkYWJsZSh7XG4gICAgICAgICAgICBvYmplY3RNb2RlOiB0cnVlLFxuICAgICAgICAgICAgcmVhZDogKCkgPT4geyB9LFxuICAgICAgICAgICAgZGVzdHJveTogKCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5fcmVhZGVyLmlzRGVzdHJveWVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3JlYWRlci5kZXN0cm95KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgcmVhZCgpIHtcbiAgICAgICAgdGhpcy5fcmVhZGVyLm9uRXJyb3IoKGVycm9yKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9zdHJlYW0uZW1pdCgnZXJyb3InLCBlcnJvcik7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLl9yZWFkZXIub25FbnRyeSgoZW50cnkpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX3N0cmVhbS5wdXNoKGVudHJ5KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuX3JlYWRlci5vbkVuZCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9zdHJlYW0ucHVzaChudWxsKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuX3JlYWRlci5yZWFkKCk7XG4gICAgICAgIHJldHVybiB0aGlzLl9zdHJlYW07XG4gICAgfVxufVxuZXhwb3J0cy5kZWZhdWx0ID0gU3RyZWFtUHJvdmlkZXI7XG4iLCAiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5jb25zdCBmc1NjYW5kaXIgPSByZXF1aXJlKFwiQG5vZGVsaWIvZnMuc2NhbmRpclwiKTtcbmNvbnN0IGNvbW1vbiA9IHJlcXVpcmUoXCIuL2NvbW1vblwiKTtcbmNvbnN0IHJlYWRlcl8xID0gcmVxdWlyZShcIi4vcmVhZGVyXCIpO1xuY2xhc3MgU3luY1JlYWRlciBleHRlbmRzIHJlYWRlcl8xLmRlZmF1bHQge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlciguLi5hcmd1bWVudHMpO1xuICAgICAgICB0aGlzLl9zY2FuZGlyID0gZnNTY2FuZGlyLnNjYW5kaXJTeW5jO1xuICAgICAgICB0aGlzLl9zdG9yYWdlID0gW107XG4gICAgICAgIHRoaXMuX3F1ZXVlID0gbmV3IFNldCgpO1xuICAgIH1cbiAgICByZWFkKCkge1xuICAgICAgICB0aGlzLl9wdXNoVG9RdWV1ZSh0aGlzLl9yb290LCB0aGlzLl9zZXR0aW5ncy5iYXNlUGF0aCk7XG4gICAgICAgIHRoaXMuX2hhbmRsZVF1ZXVlKCk7XG4gICAgICAgIHJldHVybiB0aGlzLl9zdG9yYWdlO1xuICAgIH1cbiAgICBfcHVzaFRvUXVldWUoZGlyZWN0b3J5LCBiYXNlKSB7XG4gICAgICAgIHRoaXMuX3F1ZXVlLmFkZCh7IGRpcmVjdG9yeSwgYmFzZSB9KTtcbiAgICB9XG4gICAgX2hhbmRsZVF1ZXVlKCkge1xuICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgdGhpcy5fcXVldWUudmFsdWVzKCkpIHtcbiAgICAgICAgICAgIHRoaXMuX2hhbmRsZURpcmVjdG9yeShpdGVtLmRpcmVjdG9yeSwgaXRlbS5iYXNlKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBfaGFuZGxlRGlyZWN0b3J5KGRpcmVjdG9yeSwgYmFzZSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgZW50cmllcyA9IHRoaXMuX3NjYW5kaXIoZGlyZWN0b3J5LCB0aGlzLl9zZXR0aW5ncy5mc1NjYW5kaXJTZXR0aW5ncyk7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIGVudHJpZXMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9oYW5kbGVFbnRyeShlbnRyeSwgYmFzZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICB0aGlzLl9oYW5kbGVFcnJvcihlcnJvcik7XG4gICAgICAgIH1cbiAgICB9XG4gICAgX2hhbmRsZUVycm9yKGVycm9yKSB7XG4gICAgICAgIGlmICghY29tbW9uLmlzRmF0YWxFcnJvcih0aGlzLl9zZXR0aW5ncywgZXJyb3IpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICAgIF9oYW5kbGVFbnRyeShlbnRyeSwgYmFzZSkge1xuICAgICAgICBjb25zdCBmdWxscGF0aCA9IGVudHJ5LnBhdGg7XG4gICAgICAgIGlmIChiYXNlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGVudHJ5LnBhdGggPSBjb21tb24uam9pblBhdGhTZWdtZW50cyhiYXNlLCBlbnRyeS5uYW1lLCB0aGlzLl9zZXR0aW5ncy5wYXRoU2VnbWVudFNlcGFyYXRvcik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNvbW1vbi5pc0FwcGxpZWRGaWx0ZXIodGhpcy5fc2V0dGluZ3MuZW50cnlGaWx0ZXIsIGVudHJ5KSkge1xuICAgICAgICAgICAgdGhpcy5fcHVzaFRvU3RvcmFnZShlbnRyeSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVudHJ5LmRpcmVudC5pc0RpcmVjdG9yeSgpICYmIGNvbW1vbi5pc0FwcGxpZWRGaWx0ZXIodGhpcy5fc2V0dGluZ3MuZGVlcEZpbHRlciwgZW50cnkpKSB7XG4gICAgICAgICAgICB0aGlzLl9wdXNoVG9RdWV1ZShmdWxscGF0aCwgYmFzZSA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogZW50cnkucGF0aCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgX3B1c2hUb1N0b3JhZ2UoZW50cnkpIHtcbiAgICAgICAgdGhpcy5fc3RvcmFnZS5wdXNoKGVudHJ5KTtcbiAgICB9XG59XG5leHBvcnRzLmRlZmF1bHQgPSBTeW5jUmVhZGVyO1xuIiwgIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuY29uc3Qgc3luY18xID0gcmVxdWlyZShcIi4uL3JlYWRlcnMvc3luY1wiKTtcbmNsYXNzIFN5bmNQcm92aWRlciB7XG4gICAgY29uc3RydWN0b3IoX3Jvb3QsIF9zZXR0aW5ncykge1xuICAgICAgICB0aGlzLl9yb290ID0gX3Jvb3Q7XG4gICAgICAgIHRoaXMuX3NldHRpbmdzID0gX3NldHRpbmdzO1xuICAgICAgICB0aGlzLl9yZWFkZXIgPSBuZXcgc3luY18xLmRlZmF1bHQodGhpcy5fcm9vdCwgdGhpcy5fc2V0dGluZ3MpO1xuICAgIH1cbiAgICByZWFkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcmVhZGVyLnJlYWQoKTtcbiAgICB9XG59XG5leHBvcnRzLmRlZmF1bHQgPSBTeW5jUHJvdmlkZXI7XG4iLCAiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5jb25zdCBwYXRoID0gcmVxdWlyZShcInBhdGhcIik7XG5jb25zdCBmc1NjYW5kaXIgPSByZXF1aXJlKFwiQG5vZGVsaWIvZnMuc2NhbmRpclwiKTtcbmNsYXNzIFNldHRpbmdzIHtcbiAgICBjb25zdHJ1Y3Rvcihfb3B0aW9ucyA9IHt9KSB7XG4gICAgICAgIHRoaXMuX29wdGlvbnMgPSBfb3B0aW9ucztcbiAgICAgICAgdGhpcy5iYXNlUGF0aCA9IHRoaXMuX2dldFZhbHVlKHRoaXMuX29wdGlvbnMuYmFzZVBhdGgsIHVuZGVmaW5lZCk7XG4gICAgICAgIHRoaXMuY29uY3VycmVuY3kgPSB0aGlzLl9nZXRWYWx1ZSh0aGlzLl9vcHRpb25zLmNvbmN1cnJlbmN5LCBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkpO1xuICAgICAgICB0aGlzLmRlZXBGaWx0ZXIgPSB0aGlzLl9nZXRWYWx1ZSh0aGlzLl9vcHRpb25zLmRlZXBGaWx0ZXIsIG51bGwpO1xuICAgICAgICB0aGlzLmVudHJ5RmlsdGVyID0gdGhpcy5fZ2V0VmFsdWUodGhpcy5fb3B0aW9ucy5lbnRyeUZpbHRlciwgbnVsbCk7XG4gICAgICAgIHRoaXMuZXJyb3JGaWx0ZXIgPSB0aGlzLl9nZXRWYWx1ZSh0aGlzLl9vcHRpb25zLmVycm9yRmlsdGVyLCBudWxsKTtcbiAgICAgICAgdGhpcy5wYXRoU2VnbWVudFNlcGFyYXRvciA9IHRoaXMuX2dldFZhbHVlKHRoaXMuX29wdGlvbnMucGF0aFNlZ21lbnRTZXBhcmF0b3IsIHBhdGguc2VwKTtcbiAgICAgICAgdGhpcy5mc1NjYW5kaXJTZXR0aW5ncyA9IG5ldyBmc1NjYW5kaXIuU2V0dGluZ3Moe1xuICAgICAgICAgICAgZm9sbG93U3ltYm9saWNMaW5rczogdGhpcy5fb3B0aW9ucy5mb2xsb3dTeW1ib2xpY0xpbmtzLFxuICAgICAgICAgICAgZnM6IHRoaXMuX29wdGlvbnMuZnMsXG4gICAgICAgICAgICBwYXRoU2VnbWVudFNlcGFyYXRvcjogdGhpcy5fb3B0aW9ucy5wYXRoU2VnbWVudFNlcGFyYXRvcixcbiAgICAgICAgICAgIHN0YXRzOiB0aGlzLl9vcHRpb25zLnN0YXRzLFxuICAgICAgICAgICAgdGhyb3dFcnJvck9uQnJva2VuU3ltYm9saWNMaW5rOiB0aGlzLl9vcHRpb25zLnRocm93RXJyb3JPbkJyb2tlblN5bWJvbGljTGlua1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgX2dldFZhbHVlKG9wdGlvbiwgdmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIG9wdGlvbiAhPT0gbnVsbCAmJiBvcHRpb24gIT09IHZvaWQgMCA/IG9wdGlvbiA6IHZhbHVlO1xuICAgIH1cbn1cbmV4cG9ydHMuZGVmYXVsdCA9IFNldHRpbmdzO1xuIiwgIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5TZXR0aW5ncyA9IGV4cG9ydHMud2Fsa1N0cmVhbSA9IGV4cG9ydHMud2Fsa1N5bmMgPSBleHBvcnRzLndhbGsgPSB2b2lkIDA7XG5jb25zdCBhc3luY18xID0gcmVxdWlyZShcIi4vcHJvdmlkZXJzL2FzeW5jXCIpO1xuY29uc3Qgc3RyZWFtXzEgPSByZXF1aXJlKFwiLi9wcm92aWRlcnMvc3RyZWFtXCIpO1xuY29uc3Qgc3luY18xID0gcmVxdWlyZShcIi4vcHJvdmlkZXJzL3N5bmNcIik7XG5jb25zdCBzZXR0aW5nc18xID0gcmVxdWlyZShcIi4vc2V0dGluZ3NcIik7XG5leHBvcnRzLlNldHRpbmdzID0gc2V0dGluZ3NfMS5kZWZhdWx0O1xuZnVuY3Rpb24gd2FsayhkaXJlY3RvcnksIG9wdGlvbnNPclNldHRpbmdzT3JDYWxsYmFjaywgY2FsbGJhY2spIHtcbiAgICBpZiAodHlwZW9mIG9wdGlvbnNPclNldHRpbmdzT3JDYWxsYmFjayA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBuZXcgYXN5bmNfMS5kZWZhdWx0KGRpcmVjdG9yeSwgZ2V0U2V0dGluZ3MoKSkucmVhZChvcHRpb25zT3JTZXR0aW5nc09yQ2FsbGJhY2spO1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIG5ldyBhc3luY18xLmRlZmF1bHQoZGlyZWN0b3J5LCBnZXRTZXR0aW5ncyhvcHRpb25zT3JTZXR0aW5nc09yQ2FsbGJhY2spKS5yZWFkKGNhbGxiYWNrKTtcbn1cbmV4cG9ydHMud2FsayA9IHdhbGs7XG5mdW5jdGlvbiB3YWxrU3luYyhkaXJlY3RvcnksIG9wdGlvbnNPclNldHRpbmdzKSB7XG4gICAgY29uc3Qgc2V0dGluZ3MgPSBnZXRTZXR0aW5ncyhvcHRpb25zT3JTZXR0aW5ncyk7XG4gICAgY29uc3QgcHJvdmlkZXIgPSBuZXcgc3luY18xLmRlZmF1bHQoZGlyZWN0b3J5LCBzZXR0aW5ncyk7XG4gICAgcmV0dXJuIHByb3ZpZGVyLnJlYWQoKTtcbn1cbmV4cG9ydHMud2Fsa1N5bmMgPSB3YWxrU3luYztcbmZ1bmN0aW9uIHdhbGtTdHJlYW0oZGlyZWN0b3J5LCBvcHRpb25zT3JTZXR0aW5ncykge1xuICAgIGNvbnN0IHNldHRpbmdzID0gZ2V0U2V0dGluZ3Mob3B0aW9uc09yU2V0dGluZ3MpO1xuICAgIGNvbnN0IHByb3ZpZGVyID0gbmV3IHN0cmVhbV8xLmRlZmF1bHQoZGlyZWN0b3J5LCBzZXR0aW5ncyk7XG4gICAgcmV0dXJuIHByb3ZpZGVyLnJlYWQoKTtcbn1cbmV4cG9ydHMud2Fsa1N0cmVhbSA9IHdhbGtTdHJlYW07XG5mdW5jdGlvbiBnZXRTZXR0aW5ncyhzZXR0aW5nc09yT3B0aW9ucyA9IHt9KSB7XG4gICAgaWYgKHNldHRpbmdzT3JPcHRpb25zIGluc3RhbmNlb2Ygc2V0dGluZ3NfMS5kZWZhdWx0KSB7XG4gICAgICAgIHJldHVybiBzZXR0aW5nc09yT3B0aW9ucztcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBzZXR0aW5nc18xLmRlZmF1bHQoc2V0dGluZ3NPck9wdGlvbnMpO1xufVxuIiwgIlwidXNlIHN0cmljdFwiO1xyXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XHJcbmNvbnN0IHBhdGggPSByZXF1aXJlKFwicGF0aFwiKTtcclxuY29uc3QgZnNTdGF0ID0gcmVxdWlyZShcIkBub2RlbGliL2ZzLnN0YXRcIik7XHJcbmNvbnN0IHV0aWxzID0gcmVxdWlyZShcIi4uL3V0aWxzXCIpO1xyXG5jbGFzcyBSZWFkZXIge1xyXG4gICAgY29uc3RydWN0b3IoX3NldHRpbmdzKSB7XHJcbiAgICAgICAgdGhpcy5fc2V0dGluZ3MgPSBfc2V0dGluZ3M7XHJcbiAgICAgICAgdGhpcy5fZnNTdGF0U2V0dGluZ3MgPSBuZXcgZnNTdGF0LlNldHRpbmdzKHtcclxuICAgICAgICAgICAgZm9sbG93U3ltYm9saWNMaW5rOiB0aGlzLl9zZXR0aW5ncy5mb2xsb3dTeW1ib2xpY0xpbmtzLFxyXG4gICAgICAgICAgICBmczogdGhpcy5fc2V0dGluZ3MuZnMsXHJcbiAgICAgICAgICAgIHRocm93RXJyb3JPbkJyb2tlblN5bWJvbGljTGluazogdGhpcy5fc2V0dGluZ3MuZm9sbG93U3ltYm9saWNMaW5rc1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgX2dldEZ1bGxFbnRyeVBhdGgoZmlsZXBhdGgpIHtcclxuICAgICAgICByZXR1cm4gcGF0aC5yZXNvbHZlKHRoaXMuX3NldHRpbmdzLmN3ZCwgZmlsZXBhdGgpO1xyXG4gICAgfVxyXG4gICAgX21ha2VFbnRyeShzdGF0cywgcGF0dGVybikge1xyXG4gICAgICAgIGNvbnN0IGVudHJ5ID0ge1xyXG4gICAgICAgICAgICBuYW1lOiBwYXR0ZXJuLFxyXG4gICAgICAgICAgICBwYXRoOiBwYXR0ZXJuLFxyXG4gICAgICAgICAgICBkaXJlbnQ6IHV0aWxzLmZzLmNyZWF0ZURpcmVudEZyb21TdGF0cyhwYXR0ZXJuLCBzdGF0cylcclxuICAgICAgICB9O1xyXG4gICAgICAgIGlmICh0aGlzLl9zZXR0aW5ncy5zdGF0cykge1xyXG4gICAgICAgICAgICBlbnRyeS5zdGF0cyA9IHN0YXRzO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZW50cnk7XHJcbiAgICB9XHJcbiAgICBfaXNGYXRhbEVycm9yKGVycm9yKSB7XHJcbiAgICAgICAgcmV0dXJuICF1dGlscy5lcnJuby5pc0Vub2VudENvZGVFcnJvcihlcnJvcikgJiYgIXRoaXMuX3NldHRpbmdzLnN1cHByZXNzRXJyb3JzO1xyXG4gICAgfVxyXG59XHJcbmV4cG9ydHMuZGVmYXVsdCA9IFJlYWRlcjtcclxuIiwgIlwidXNlIHN0cmljdFwiO1xyXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XHJcbmNvbnN0IHN0cmVhbV8xID0gcmVxdWlyZShcInN0cmVhbVwiKTtcclxuY29uc3QgZnNTdGF0ID0gcmVxdWlyZShcIkBub2RlbGliL2ZzLnN0YXRcIik7XHJcbmNvbnN0IGZzV2FsayA9IHJlcXVpcmUoXCJAbm9kZWxpYi9mcy53YWxrXCIpO1xyXG5jb25zdCByZWFkZXJfMSA9IHJlcXVpcmUoXCIuL3JlYWRlclwiKTtcclxuY2xhc3MgUmVhZGVyU3RyZWFtIGV4dGVuZHMgcmVhZGVyXzEuZGVmYXVsdCB7XHJcbiAgICBjb25zdHJ1Y3RvcigpIHtcclxuICAgICAgICBzdXBlciguLi5hcmd1bWVudHMpO1xyXG4gICAgICAgIHRoaXMuX3dhbGtTdHJlYW0gPSBmc1dhbGsud2Fsa1N0cmVhbTtcclxuICAgICAgICB0aGlzLl9zdGF0ID0gZnNTdGF0LnN0YXQ7XHJcbiAgICB9XHJcbiAgICBkeW5hbWljKHJvb3QsIG9wdGlvbnMpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fd2Fsa1N0cmVhbShyb290LCBvcHRpb25zKTtcclxuICAgIH1cclxuICAgIHN0YXRpYyhwYXR0ZXJucywgb3B0aW9ucykge1xyXG4gICAgICAgIGNvbnN0IGZpbGVwYXRocyA9IHBhdHRlcm5zLm1hcCh0aGlzLl9nZXRGdWxsRW50cnlQYXRoLCB0aGlzKTtcclxuICAgICAgICBjb25zdCBzdHJlYW0gPSBuZXcgc3RyZWFtXzEuUGFzc1Rocm91Z2goeyBvYmplY3RNb2RlOiB0cnVlIH0pO1xyXG4gICAgICAgIHN0cmVhbS5fd3JpdGUgPSAoaW5kZXgsIF9lbmMsIGRvbmUpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2dldEVudHJ5KGZpbGVwYXRoc1tpbmRleF0sIHBhdHRlcm5zW2luZGV4XSwgb3B0aW9ucylcclxuICAgICAgICAgICAgICAgIC50aGVuKChlbnRyeSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKGVudHJ5ICE9PSBudWxsICYmIG9wdGlvbnMuZW50cnlGaWx0ZXIoZW50cnkpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc3RyZWFtLnB1c2goZW50cnkpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKGluZGV4ID09PSBmaWxlcGF0aHMubGVuZ3RoIC0gMSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHN0cmVhbS5lbmQoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGRvbmUoKTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgIC5jYXRjaChkb25lKTtcclxuICAgICAgICB9O1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZmlsZXBhdGhzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIHN0cmVhbS53cml0ZShpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHN0cmVhbTtcclxuICAgIH1cclxuICAgIF9nZXRFbnRyeShmaWxlcGF0aCwgcGF0dGVybiwgb3B0aW9ucykge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9nZXRTdGF0KGZpbGVwYXRoKVxyXG4gICAgICAgICAgICAudGhlbigoc3RhdHMpID0+IHRoaXMuX21ha2VFbnRyeShzdGF0cywgcGF0dGVybikpXHJcbiAgICAgICAgICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcclxuICAgICAgICAgICAgaWYgKG9wdGlvbnMuZXJyb3JGaWx0ZXIoZXJyb3IpKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aHJvdyBlcnJvcjtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIF9nZXRTdGF0KGZpbGVwYXRoKSB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5fc3RhdChmaWxlcGF0aCwgdGhpcy5fZnNTdGF0U2V0dGluZ3MsIChlcnJvciwgc3RhdHMpID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBlcnJvciA9PT0gbnVsbCA/IHJlc29sdmUoc3RhdHMpIDogcmVqZWN0KGVycm9yKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbn1cclxuZXhwb3J0cy5kZWZhdWx0ID0gUmVhZGVyU3RyZWFtO1xyXG4iLCAiXCJ1c2Ugc3RyaWN0XCI7XHJcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcclxuY29uc3QgZnNXYWxrID0gcmVxdWlyZShcIkBub2RlbGliL2ZzLndhbGtcIik7XHJcbmNvbnN0IHJlYWRlcl8xID0gcmVxdWlyZShcIi4vcmVhZGVyXCIpO1xyXG5jb25zdCBzdHJlYW1fMSA9IHJlcXVpcmUoXCIuL3N0cmVhbVwiKTtcclxuY2xhc3MgUmVhZGVyQXN5bmMgZXh0ZW5kcyByZWFkZXJfMS5kZWZhdWx0IHtcclxuICAgIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgICAgIHN1cGVyKC4uLmFyZ3VtZW50cyk7XHJcbiAgICAgICAgdGhpcy5fd2Fsa0FzeW5jID0gZnNXYWxrLndhbGs7XHJcbiAgICAgICAgdGhpcy5fcmVhZGVyU3RyZWFtID0gbmV3IHN0cmVhbV8xLmRlZmF1bHQodGhpcy5fc2V0dGluZ3MpO1xyXG4gICAgfVxyXG4gICAgZHluYW1pYyhyb290LCBvcHRpb25zKSB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5fd2Fsa0FzeW5jKHJvb3QsIG9wdGlvbnMsIChlcnJvciwgZW50cmllcykgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKGVycm9yID09PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShlbnRyaWVzKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlamVjdChlcnJvcik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgYXN5bmMgc3RhdGljKHBhdHRlcm5zLCBvcHRpb25zKSB7XHJcbiAgICAgICAgY29uc3QgZW50cmllcyA9IFtdO1xyXG4gICAgICAgIGNvbnN0IHN0cmVhbSA9IHRoaXMuX3JlYWRlclN0cmVhbS5zdGF0aWMocGF0dGVybnMsIG9wdGlvbnMpO1xyXG4gICAgICAgIC8vIEFmdGVyICMyMzUsIHJlcGxhY2UgaXQgd2l0aCBhbiBhc3luY2hyb25vdXMgaXRlcmF0b3IuXHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICAgICAgc3RyZWFtLm9uY2UoJ2Vycm9yJywgcmVqZWN0KTtcclxuICAgICAgICAgICAgc3RyZWFtLm9uKCdkYXRhJywgKGVudHJ5KSA9PiBlbnRyaWVzLnB1c2goZW50cnkpKTtcclxuICAgICAgICAgICAgc3RyZWFtLm9uY2UoJ2VuZCcsICgpID0+IHJlc29sdmUoZW50cmllcykpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG59XHJcbmV4cG9ydHMuZGVmYXVsdCA9IFJlYWRlckFzeW5jO1xyXG4iLCAiXCJ1c2Ugc3RyaWN0XCI7XHJcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcclxuY29uc3QgdXRpbHMgPSByZXF1aXJlKFwiLi4vLi4vdXRpbHNcIik7XHJcbmNsYXNzIE1hdGNoZXIge1xyXG4gICAgY29uc3RydWN0b3IoX3BhdHRlcm5zLCBfc2V0dGluZ3MsIF9taWNyb21hdGNoT3B0aW9ucykge1xyXG4gICAgICAgIHRoaXMuX3BhdHRlcm5zID0gX3BhdHRlcm5zO1xyXG4gICAgICAgIHRoaXMuX3NldHRpbmdzID0gX3NldHRpbmdzO1xyXG4gICAgICAgIHRoaXMuX21pY3JvbWF0Y2hPcHRpb25zID0gX21pY3JvbWF0Y2hPcHRpb25zO1xyXG4gICAgICAgIHRoaXMuX3N0b3JhZ2UgPSBbXTtcclxuICAgICAgICB0aGlzLl9maWxsU3RvcmFnZSgpO1xyXG4gICAgfVxyXG4gICAgX2ZpbGxTdG9yYWdlKCkge1xyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIFRoZSBvcmlnaW5hbCBwYXR0ZXJuIG1heSBpbmNsdWRlIGB7LCosKiosYS8qfWAsIHdoaWNoIHdpbGwgbGVhZCB0byBwcm9ibGVtcyB3aXRoIG1hdGNoaW5nICh1bnJlc29sdmVkIGxldmVsKS5cclxuICAgICAgICAgKiBTbywgYmVmb3JlIGV4cGFuZCBwYXR0ZXJucyB3aXRoIGJyYWNlIGV4cGFuc2lvbiBpbnRvIHNlcGFyYXRlZCBwYXR0ZXJucy5cclxuICAgICAgICAgKi9cclxuICAgICAgICBjb25zdCBwYXR0ZXJucyA9IHV0aWxzLnBhdHRlcm4uZXhwYW5kUGF0dGVybnNXaXRoQnJhY2VFeHBhbnNpb24odGhpcy5fcGF0dGVybnMpO1xyXG4gICAgICAgIGZvciAoY29uc3QgcGF0dGVybiBvZiBwYXR0ZXJucykge1xyXG4gICAgICAgICAgICBjb25zdCBzZWdtZW50cyA9IHRoaXMuX2dldFBhdHRlcm5TZWdtZW50cyhwYXR0ZXJuKTtcclxuICAgICAgICAgICAgY29uc3Qgc2VjdGlvbnMgPSB0aGlzLl9zcGxpdFNlZ21lbnRzSW50b1NlY3Rpb25zKHNlZ21lbnRzKTtcclxuICAgICAgICAgICAgdGhpcy5fc3RvcmFnZS5wdXNoKHtcclxuICAgICAgICAgICAgICAgIGNvbXBsZXRlOiBzZWN0aW9ucy5sZW5ndGggPD0gMSxcclxuICAgICAgICAgICAgICAgIHBhdHRlcm4sXHJcbiAgICAgICAgICAgICAgICBzZWdtZW50cyxcclxuICAgICAgICAgICAgICAgIHNlY3Rpb25zXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIF9nZXRQYXR0ZXJuU2VnbWVudHMocGF0dGVybikge1xyXG4gICAgICAgIGNvbnN0IHBhcnRzID0gdXRpbHMucGF0dGVybi5nZXRQYXR0ZXJuUGFydHMocGF0dGVybiwgdGhpcy5fbWljcm9tYXRjaE9wdGlvbnMpO1xyXG4gICAgICAgIHJldHVybiBwYXJ0cy5tYXAoKHBhcnQpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgZHluYW1pYyA9IHV0aWxzLnBhdHRlcm4uaXNEeW5hbWljUGF0dGVybihwYXJ0LCB0aGlzLl9zZXR0aW5ncyk7XHJcbiAgICAgICAgICAgIGlmICghZHluYW1pYykge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgICAgICBkeW5hbWljOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICBwYXR0ZXJuOiBwYXJ0XHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICBkeW5hbWljOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgcGF0dGVybjogcGFydCxcclxuICAgICAgICAgICAgICAgIHBhdHRlcm5SZTogdXRpbHMucGF0dGVybi5tYWtlUmUocGFydCwgdGhpcy5fbWljcm9tYXRjaE9wdGlvbnMpXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBfc3BsaXRTZWdtZW50c0ludG9TZWN0aW9ucyhzZWdtZW50cykge1xyXG4gICAgICAgIHJldHVybiB1dGlscy5hcnJheS5zcGxpdFdoZW4oc2VnbWVudHMsIChzZWdtZW50KSA9PiBzZWdtZW50LmR5bmFtaWMgJiYgdXRpbHMucGF0dGVybi5oYXNHbG9iU3RhcihzZWdtZW50LnBhdHRlcm4pKTtcclxuICAgIH1cclxufVxyXG5leHBvcnRzLmRlZmF1bHQgPSBNYXRjaGVyO1xyXG4iLCAiXCJ1c2Ugc3RyaWN0XCI7XHJcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcclxuY29uc3QgbWF0Y2hlcl8xID0gcmVxdWlyZShcIi4vbWF0Y2hlclwiKTtcclxuY2xhc3MgUGFydGlhbE1hdGNoZXIgZXh0ZW5kcyBtYXRjaGVyXzEuZGVmYXVsdCB7XHJcbiAgICBtYXRjaChmaWxlcGF0aCkge1xyXG4gICAgICAgIGNvbnN0IHBhcnRzID0gZmlsZXBhdGguc3BsaXQoJy8nKTtcclxuICAgICAgICBjb25zdCBsZXZlbHMgPSBwYXJ0cy5sZW5ndGg7XHJcbiAgICAgICAgY29uc3QgcGF0dGVybnMgPSB0aGlzLl9zdG9yYWdlLmZpbHRlcigoaW5mbykgPT4gIWluZm8uY29tcGxldGUgfHwgaW5mby5zZWdtZW50cy5sZW5ndGggPiBsZXZlbHMpO1xyXG4gICAgICAgIGZvciAoY29uc3QgcGF0dGVybiBvZiBwYXR0ZXJucykge1xyXG4gICAgICAgICAgICBjb25zdCBzZWN0aW9uID0gcGF0dGVybi5zZWN0aW9uc1swXTtcclxuICAgICAgICAgICAgLyoqXHJcbiAgICAgICAgICAgICAqIEluIHRoaXMgY2FzZSwgdGhlIHBhdHRlcm4gaGFzIGEgZ2xvYnN0YXIgYW5kIHdlIG11c3QgcmVhZCBhbGwgZGlyZWN0b3JpZXMgdW5jb25kaXRpb25hbGx5LFxyXG4gICAgICAgICAgICAgKiBidXQgb25seSBpZiB0aGUgbGV2ZWwgaGFzIHJlYWNoZWQgdGhlIGVuZCBvZiB0aGUgZmlyc3QgZ3JvdXAuXHJcbiAgICAgICAgICAgICAqXHJcbiAgICAgICAgICAgICAqIGZpeHR1cmVzL3thLGJ9LyoqXHJcbiAgICAgICAgICAgICAqICBeIHRydWUvZmFsc2UgIF4gYWx3YXlzIHRydWVcclxuICAgICAgICAgICAgKi9cclxuICAgICAgICAgICAgaWYgKCFwYXR0ZXJuLmNvbXBsZXRlICYmIGxldmVscyA+IHNlY3Rpb24ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zdCBtYXRjaCA9IHBhcnRzLmV2ZXJ5KChwYXJ0LCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgc2VnbWVudCA9IHBhdHRlcm4uc2VnbWVudHNbaW5kZXhdO1xyXG4gICAgICAgICAgICAgICAgaWYgKHNlZ21lbnQuZHluYW1pYyAmJiBzZWdtZW50LnBhdHRlcm5SZS50ZXN0KHBhcnQpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoIXNlZ21lbnQuZHluYW1pYyAmJiBzZWdtZW50LnBhdHRlcm4gPT09IHBhcnQpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGlmIChtYXRjaCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG59XHJcbmV4cG9ydHMuZGVmYXVsdCA9IFBhcnRpYWxNYXRjaGVyO1xyXG4iLCAiXCJ1c2Ugc3RyaWN0XCI7XHJcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcclxuY29uc3QgdXRpbHMgPSByZXF1aXJlKFwiLi4vLi4vdXRpbHNcIik7XHJcbmNvbnN0IHBhcnRpYWxfMSA9IHJlcXVpcmUoXCIuLi9tYXRjaGVycy9wYXJ0aWFsXCIpO1xyXG5jbGFzcyBEZWVwRmlsdGVyIHtcclxuICAgIGNvbnN0cnVjdG9yKF9zZXR0aW5ncywgX21pY3JvbWF0Y2hPcHRpb25zKSB7XHJcbiAgICAgICAgdGhpcy5fc2V0dGluZ3MgPSBfc2V0dGluZ3M7XHJcbiAgICAgICAgdGhpcy5fbWljcm9tYXRjaE9wdGlvbnMgPSBfbWljcm9tYXRjaE9wdGlvbnM7XHJcbiAgICB9XHJcbiAgICBnZXRGaWx0ZXIoYmFzZVBhdGgsIHBvc2l0aXZlLCBuZWdhdGl2ZSkge1xyXG4gICAgICAgIGNvbnN0IG1hdGNoZXIgPSB0aGlzLl9nZXRNYXRjaGVyKHBvc2l0aXZlKTtcclxuICAgICAgICBjb25zdCBuZWdhdGl2ZVJlID0gdGhpcy5fZ2V0TmVnYXRpdmVQYXR0ZXJuc1JlKG5lZ2F0aXZlKTtcclxuICAgICAgICByZXR1cm4gKGVudHJ5KSA9PiB0aGlzLl9maWx0ZXIoYmFzZVBhdGgsIGVudHJ5LCBtYXRjaGVyLCBuZWdhdGl2ZVJlKTtcclxuICAgIH1cclxuICAgIF9nZXRNYXRjaGVyKHBhdHRlcm5zKSB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBwYXJ0aWFsXzEuZGVmYXVsdChwYXR0ZXJucywgdGhpcy5fc2V0dGluZ3MsIHRoaXMuX21pY3JvbWF0Y2hPcHRpb25zKTtcclxuICAgIH1cclxuICAgIF9nZXROZWdhdGl2ZVBhdHRlcm5zUmUocGF0dGVybnMpIHtcclxuICAgICAgICBjb25zdCBhZmZlY3REZXB0aE9mUmVhZGluZ1BhdHRlcm5zID0gcGF0dGVybnMuZmlsdGVyKHV0aWxzLnBhdHRlcm4uaXNBZmZlY3REZXB0aE9mUmVhZGluZ1BhdHRlcm4pO1xyXG4gICAgICAgIHJldHVybiB1dGlscy5wYXR0ZXJuLmNvbnZlcnRQYXR0ZXJuc1RvUmUoYWZmZWN0RGVwdGhPZlJlYWRpbmdQYXR0ZXJucywgdGhpcy5fbWljcm9tYXRjaE9wdGlvbnMpO1xyXG4gICAgfVxyXG4gICAgX2ZpbHRlcihiYXNlUGF0aCwgZW50cnksIG1hdGNoZXIsIG5lZ2F0aXZlUmUpIHtcclxuICAgICAgICBpZiAodGhpcy5faXNTa2lwcGVkQnlEZWVwKGJhc2VQYXRoLCBlbnRyeS5wYXRoKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLl9pc1NraXBwZWRTeW1ib2xpY0xpbmsoZW50cnkpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgZmlsZXBhdGggPSB1dGlscy5wYXRoLnJlbW92ZUxlYWRpbmdEb3RTZWdtZW50KGVudHJ5LnBhdGgpO1xyXG4gICAgICAgIGlmICh0aGlzLl9pc1NraXBwZWRCeVBvc2l0aXZlUGF0dGVybnMoZmlsZXBhdGgsIG1hdGNoZXIpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzU2tpcHBlZEJ5TmVnYXRpdmVQYXR0ZXJucyhmaWxlcGF0aCwgbmVnYXRpdmVSZSk7XHJcbiAgICB9XHJcbiAgICBfaXNTa2lwcGVkQnlEZWVwKGJhc2VQYXRoLCBlbnRyeVBhdGgpIHtcclxuICAgICAgICAvKipcclxuICAgICAgICAgKiBBdm9pZCB1bm5lY2Vzc2FyeSBkZXB0aCBjYWxjdWxhdGlvbnMgd2hlbiBpdCBkb2Vzbid0IG1hdHRlci5cclxuICAgICAgICAgKi9cclxuICAgICAgICBpZiAodGhpcy5fc2V0dGluZ3MuZGVlcCA9PT0gSW5maW5pdHkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0RW50cnlMZXZlbChiYXNlUGF0aCwgZW50cnlQYXRoKSA+PSB0aGlzLl9zZXR0aW5ncy5kZWVwO1xyXG4gICAgfVxyXG4gICAgX2dldEVudHJ5TGV2ZWwoYmFzZVBhdGgsIGVudHJ5UGF0aCkge1xyXG4gICAgICAgIGNvbnN0IGVudHJ5UGF0aERlcHRoID0gZW50cnlQYXRoLnNwbGl0KCcvJykubGVuZ3RoO1xyXG4gICAgICAgIGlmIChiYXNlUGF0aCA9PT0gJycpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGVudHJ5UGF0aERlcHRoO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBiYXNlUGF0aERlcHRoID0gYmFzZVBhdGguc3BsaXQoJy8nKS5sZW5ndGg7XHJcbiAgICAgICAgcmV0dXJuIGVudHJ5UGF0aERlcHRoIC0gYmFzZVBhdGhEZXB0aDtcclxuICAgIH1cclxuICAgIF9pc1NraXBwZWRTeW1ib2xpY0xpbmsoZW50cnkpIHtcclxuICAgICAgICByZXR1cm4gIXRoaXMuX3NldHRpbmdzLmZvbGxvd1N5bWJvbGljTGlua3MgJiYgZW50cnkuZGlyZW50LmlzU3ltYm9saWNMaW5rKCk7XHJcbiAgICB9XHJcbiAgICBfaXNTa2lwcGVkQnlQb3NpdGl2ZVBhdHRlcm5zKGVudHJ5UGF0aCwgbWF0Y2hlcikge1xyXG4gICAgICAgIHJldHVybiAhdGhpcy5fc2V0dGluZ3MuYmFzZU5hbWVNYXRjaCAmJiAhbWF0Y2hlci5tYXRjaChlbnRyeVBhdGgpO1xyXG4gICAgfVxyXG4gICAgX2lzU2tpcHBlZEJ5TmVnYXRpdmVQYXR0ZXJucyhlbnRyeVBhdGgsIHBhdHRlcm5zUmUpIHtcclxuICAgICAgICByZXR1cm4gIXV0aWxzLnBhdHRlcm4ubWF0Y2hBbnkoZW50cnlQYXRoLCBwYXR0ZXJuc1JlKTtcclxuICAgIH1cclxufVxyXG5leHBvcnRzLmRlZmF1bHQgPSBEZWVwRmlsdGVyO1xyXG4iLCAiXCJ1c2Ugc3RyaWN0XCI7XHJcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcclxuY29uc3QgdXRpbHMgPSByZXF1aXJlKFwiLi4vLi4vdXRpbHNcIik7XHJcbmNsYXNzIEVudHJ5RmlsdGVyIHtcclxuICAgIGNvbnN0cnVjdG9yKF9zZXR0aW5ncywgX21pY3JvbWF0Y2hPcHRpb25zKSB7XHJcbiAgICAgICAgdGhpcy5fc2V0dGluZ3MgPSBfc2V0dGluZ3M7XHJcbiAgICAgICAgdGhpcy5fbWljcm9tYXRjaE9wdGlvbnMgPSBfbWljcm9tYXRjaE9wdGlvbnM7XHJcbiAgICAgICAgdGhpcy5pbmRleCA9IG5ldyBNYXAoKTtcclxuICAgIH1cclxuICAgIGdldEZpbHRlcihwb3NpdGl2ZSwgbmVnYXRpdmUpIHtcclxuICAgICAgICBjb25zdCBwb3NpdGl2ZVJlID0gdXRpbHMucGF0dGVybi5jb252ZXJ0UGF0dGVybnNUb1JlKHBvc2l0aXZlLCB0aGlzLl9taWNyb21hdGNoT3B0aW9ucyk7XHJcbiAgICAgICAgY29uc3QgbmVnYXRpdmVSZSA9IHV0aWxzLnBhdHRlcm4uY29udmVydFBhdHRlcm5zVG9SZShuZWdhdGl2ZSwgdGhpcy5fbWljcm9tYXRjaE9wdGlvbnMpO1xyXG4gICAgICAgIHJldHVybiAoZW50cnkpID0+IHRoaXMuX2ZpbHRlcihlbnRyeSwgcG9zaXRpdmVSZSwgbmVnYXRpdmVSZSk7XHJcbiAgICB9XHJcbiAgICBfZmlsdGVyKGVudHJ5LCBwb3NpdGl2ZVJlLCBuZWdhdGl2ZVJlKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuX3NldHRpbmdzLnVuaXF1ZSAmJiB0aGlzLl9pc0R1cGxpY2F0ZUVudHJ5KGVudHJ5KSkge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLl9vbmx5RmlsZUZpbHRlcihlbnRyeSkgfHwgdGhpcy5fb25seURpcmVjdG9yeUZpbHRlcihlbnRyeSkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5faXNTa2lwcGVkQnlBYnNvbHV0ZU5lZ2F0aXZlUGF0dGVybnMoZW50cnkucGF0aCwgbmVnYXRpdmVSZSkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBmaWxlcGF0aCA9IHRoaXMuX3NldHRpbmdzLmJhc2VOYW1lTWF0Y2ggPyBlbnRyeS5uYW1lIDogZW50cnkucGF0aDtcclxuICAgICAgICBjb25zdCBpc0RpcmVjdG9yeSA9IGVudHJ5LmRpcmVudC5pc0RpcmVjdG9yeSgpO1xyXG4gICAgICAgIGNvbnN0IGlzTWF0Y2hlZCA9IHRoaXMuX2lzTWF0Y2hUb1BhdHRlcm5zKGZpbGVwYXRoLCBwb3NpdGl2ZVJlLCBpc0RpcmVjdG9yeSkgJiYgIXRoaXMuX2lzTWF0Y2hUb1BhdHRlcm5zKGVudHJ5LnBhdGgsIG5lZ2F0aXZlUmUsIGlzRGlyZWN0b3J5KTtcclxuICAgICAgICBpZiAodGhpcy5fc2V0dGluZ3MudW5pcXVlICYmIGlzTWF0Y2hlZCkge1xyXG4gICAgICAgICAgICB0aGlzLl9jcmVhdGVJbmRleFJlY29yZChlbnRyeSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBpc01hdGNoZWQ7XHJcbiAgICB9XHJcbiAgICBfaXNEdXBsaWNhdGVFbnRyeShlbnRyeSkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmluZGV4LmhhcyhlbnRyeS5wYXRoKTtcclxuICAgIH1cclxuICAgIF9jcmVhdGVJbmRleFJlY29yZChlbnRyeSkge1xyXG4gICAgICAgIHRoaXMuaW5kZXguc2V0KGVudHJ5LnBhdGgsIHVuZGVmaW5lZCk7XHJcbiAgICB9XHJcbiAgICBfb25seUZpbGVGaWx0ZXIoZW50cnkpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fc2V0dGluZ3Mub25seUZpbGVzICYmICFlbnRyeS5kaXJlbnQuaXNGaWxlKCk7XHJcbiAgICB9XHJcbiAgICBfb25seURpcmVjdG9yeUZpbHRlcihlbnRyeSkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9zZXR0aW5ncy5vbmx5RGlyZWN0b3JpZXMgJiYgIWVudHJ5LmRpcmVudC5pc0RpcmVjdG9yeSgpO1xyXG4gICAgfVxyXG4gICAgX2lzU2tpcHBlZEJ5QWJzb2x1dGVOZWdhdGl2ZVBhdHRlcm5zKGVudHJ5UGF0aCwgcGF0dGVybnNSZSkge1xyXG4gICAgICAgIGlmICghdGhpcy5fc2V0dGluZ3MuYWJzb2x1dGUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBmdWxscGF0aCA9IHV0aWxzLnBhdGgubWFrZUFic29sdXRlKHRoaXMuX3NldHRpbmdzLmN3ZCwgZW50cnlQYXRoKTtcclxuICAgICAgICByZXR1cm4gdXRpbHMucGF0dGVybi5tYXRjaEFueShmdWxscGF0aCwgcGF0dGVybnNSZSk7XHJcbiAgICB9XHJcbiAgICBfaXNNYXRjaFRvUGF0dGVybnMoZW50cnlQYXRoLCBwYXR0ZXJuc1JlLCBpc0RpcmVjdG9yeSkge1xyXG4gICAgICAgIGNvbnN0IGZpbGVwYXRoID0gdXRpbHMucGF0aC5yZW1vdmVMZWFkaW5nRG90U2VnbWVudChlbnRyeVBhdGgpO1xyXG4gICAgICAgIC8vIFRyeWluZyB0byBtYXRjaCBmaWxlcyBhbmQgZGlyZWN0b3JpZXMgYnkgcGF0dGVybnMuXHJcbiAgICAgICAgY29uc3QgaXNNYXRjaGVkID0gdXRpbHMucGF0dGVybi5tYXRjaEFueShmaWxlcGF0aCwgcGF0dGVybnNSZSk7XHJcbiAgICAgICAgLy8gQSBwYXR0ZXJuIHdpdGggYSB0cmFpbGxpbmcgc2xhc2ggY2FuIGJlIHVzZWQgZm9yIGRpcmVjdG9yeSBtYXRjaGluZy5cclxuICAgICAgICAvLyBUbyBhcHBseSBzdWNoIHBhdHRlcm4sIHdlIG5lZWQgdG8gYWRkIGEgdHJhbGxpbmcgc2xhc2ggdG8gdGhlIHBhdGguXHJcbiAgICAgICAgaWYgKCFpc01hdGNoZWQgJiYgaXNEaXJlY3RvcnkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHV0aWxzLnBhdHRlcm4ubWF0Y2hBbnkoZmlsZXBhdGggKyAnLycsIHBhdHRlcm5zUmUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gaXNNYXRjaGVkO1xyXG4gICAgfVxyXG59XHJcbmV4cG9ydHMuZGVmYXVsdCA9IEVudHJ5RmlsdGVyO1xyXG4iLCAiXCJ1c2Ugc3RyaWN0XCI7XHJcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcclxuY29uc3QgdXRpbHMgPSByZXF1aXJlKFwiLi4vLi4vdXRpbHNcIik7XHJcbmNsYXNzIEVycm9yRmlsdGVyIHtcclxuICAgIGNvbnN0cnVjdG9yKF9zZXR0aW5ncykge1xyXG4gICAgICAgIHRoaXMuX3NldHRpbmdzID0gX3NldHRpbmdzO1xyXG4gICAgfVxyXG4gICAgZ2V0RmlsdGVyKCkge1xyXG4gICAgICAgIHJldHVybiAoZXJyb3IpID0+IHRoaXMuX2lzTm9uRmF0YWxFcnJvcihlcnJvcik7XHJcbiAgICB9XHJcbiAgICBfaXNOb25GYXRhbEVycm9yKGVycm9yKSB7XHJcbiAgICAgICAgcmV0dXJuIHV0aWxzLmVycm5vLmlzRW5vZW50Q29kZUVycm9yKGVycm9yKSB8fCB0aGlzLl9zZXR0aW5ncy5zdXBwcmVzc0Vycm9ycztcclxuICAgIH1cclxufVxyXG5leHBvcnRzLmRlZmF1bHQgPSBFcnJvckZpbHRlcjtcclxuIiwgIlwidXNlIHN0cmljdFwiO1xyXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XHJcbmNvbnN0IHV0aWxzID0gcmVxdWlyZShcIi4uLy4uL3V0aWxzXCIpO1xyXG5jbGFzcyBFbnRyeVRyYW5zZm9ybWVyIHtcclxuICAgIGNvbnN0cnVjdG9yKF9zZXR0aW5ncykge1xyXG4gICAgICAgIHRoaXMuX3NldHRpbmdzID0gX3NldHRpbmdzO1xyXG4gICAgfVxyXG4gICAgZ2V0VHJhbnNmb3JtZXIoKSB7XHJcbiAgICAgICAgcmV0dXJuIChlbnRyeSkgPT4gdGhpcy5fdHJhbnNmb3JtKGVudHJ5KTtcclxuICAgIH1cclxuICAgIF90cmFuc2Zvcm0oZW50cnkpIHtcclxuICAgICAgICBsZXQgZmlsZXBhdGggPSBlbnRyeS5wYXRoO1xyXG4gICAgICAgIGlmICh0aGlzLl9zZXR0aW5ncy5hYnNvbHV0ZSkge1xyXG4gICAgICAgICAgICBmaWxlcGF0aCA9IHV0aWxzLnBhdGgubWFrZUFic29sdXRlKHRoaXMuX3NldHRpbmdzLmN3ZCwgZmlsZXBhdGgpO1xyXG4gICAgICAgICAgICBmaWxlcGF0aCA9IHV0aWxzLnBhdGgudW5peGlmeShmaWxlcGF0aCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLl9zZXR0aW5ncy5tYXJrRGlyZWN0b3JpZXMgJiYgZW50cnkuZGlyZW50LmlzRGlyZWN0b3J5KCkpIHtcclxuICAgICAgICAgICAgZmlsZXBhdGggKz0gJy8nO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIXRoaXMuX3NldHRpbmdzLm9iamVjdE1vZGUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZpbGVwYXRoO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBlbnRyeSksIHsgcGF0aDogZmlsZXBhdGggfSk7XHJcbiAgICB9XHJcbn1cclxuZXhwb3J0cy5kZWZhdWx0ID0gRW50cnlUcmFuc2Zvcm1lcjtcclxuIiwgIlwidXNlIHN0cmljdFwiO1xyXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XHJcbmNvbnN0IHBhdGggPSByZXF1aXJlKFwicGF0aFwiKTtcclxuY29uc3QgZGVlcF8xID0gcmVxdWlyZShcIi4vZmlsdGVycy9kZWVwXCIpO1xyXG5jb25zdCBlbnRyeV8xID0gcmVxdWlyZShcIi4vZmlsdGVycy9lbnRyeVwiKTtcclxuY29uc3QgZXJyb3JfMSA9IHJlcXVpcmUoXCIuL2ZpbHRlcnMvZXJyb3JcIik7XHJcbmNvbnN0IGVudHJ5XzIgPSByZXF1aXJlKFwiLi90cmFuc2Zvcm1lcnMvZW50cnlcIik7XHJcbmNsYXNzIFByb3ZpZGVyIHtcclxuICAgIGNvbnN0cnVjdG9yKF9zZXR0aW5ncykge1xyXG4gICAgICAgIHRoaXMuX3NldHRpbmdzID0gX3NldHRpbmdzO1xyXG4gICAgICAgIHRoaXMuZXJyb3JGaWx0ZXIgPSBuZXcgZXJyb3JfMS5kZWZhdWx0KHRoaXMuX3NldHRpbmdzKTtcclxuICAgICAgICB0aGlzLmVudHJ5RmlsdGVyID0gbmV3IGVudHJ5XzEuZGVmYXVsdCh0aGlzLl9zZXR0aW5ncywgdGhpcy5fZ2V0TWljcm9tYXRjaE9wdGlvbnMoKSk7XHJcbiAgICAgICAgdGhpcy5kZWVwRmlsdGVyID0gbmV3IGRlZXBfMS5kZWZhdWx0KHRoaXMuX3NldHRpbmdzLCB0aGlzLl9nZXRNaWNyb21hdGNoT3B0aW9ucygpKTtcclxuICAgICAgICB0aGlzLmVudHJ5VHJhbnNmb3JtZXIgPSBuZXcgZW50cnlfMi5kZWZhdWx0KHRoaXMuX3NldHRpbmdzKTtcclxuICAgIH1cclxuICAgIF9nZXRSb290RGlyZWN0b3J5KHRhc2spIHtcclxuICAgICAgICByZXR1cm4gcGF0aC5yZXNvbHZlKHRoaXMuX3NldHRpbmdzLmN3ZCwgdGFzay5iYXNlKTtcclxuICAgIH1cclxuICAgIF9nZXRSZWFkZXJPcHRpb25zKHRhc2spIHtcclxuICAgICAgICBjb25zdCBiYXNlUGF0aCA9IHRhc2suYmFzZSA9PT0gJy4nID8gJycgOiB0YXNrLmJhc2U7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgYmFzZVBhdGgsXHJcbiAgICAgICAgICAgIHBhdGhTZWdtZW50U2VwYXJhdG9yOiAnLycsXHJcbiAgICAgICAgICAgIGNvbmN1cnJlbmN5OiB0aGlzLl9zZXR0aW5ncy5jb25jdXJyZW5jeSxcclxuICAgICAgICAgICAgZGVlcEZpbHRlcjogdGhpcy5kZWVwRmlsdGVyLmdldEZpbHRlcihiYXNlUGF0aCwgdGFzay5wb3NpdGl2ZSwgdGFzay5uZWdhdGl2ZSksXHJcbiAgICAgICAgICAgIGVudHJ5RmlsdGVyOiB0aGlzLmVudHJ5RmlsdGVyLmdldEZpbHRlcih0YXNrLnBvc2l0aXZlLCB0YXNrLm5lZ2F0aXZlKSxcclxuICAgICAgICAgICAgZXJyb3JGaWx0ZXI6IHRoaXMuZXJyb3JGaWx0ZXIuZ2V0RmlsdGVyKCksXHJcbiAgICAgICAgICAgIGZvbGxvd1N5bWJvbGljTGlua3M6IHRoaXMuX3NldHRpbmdzLmZvbGxvd1N5bWJvbGljTGlua3MsXHJcbiAgICAgICAgICAgIGZzOiB0aGlzLl9zZXR0aW5ncy5mcyxcclxuICAgICAgICAgICAgc3RhdHM6IHRoaXMuX3NldHRpbmdzLnN0YXRzLFxyXG4gICAgICAgICAgICB0aHJvd0Vycm9yT25Ccm9rZW5TeW1ib2xpY0xpbms6IHRoaXMuX3NldHRpbmdzLnRocm93RXJyb3JPbkJyb2tlblN5bWJvbGljTGluayxcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0aGlzLmVudHJ5VHJhbnNmb3JtZXIuZ2V0VHJhbnNmb3JtZXIoKVxyXG4gICAgICAgIH07XHJcbiAgICB9XHJcbiAgICBfZ2V0TWljcm9tYXRjaE9wdGlvbnMoKSB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgZG90OiB0aGlzLl9zZXR0aW5ncy5kb3QsXHJcbiAgICAgICAgICAgIG1hdGNoQmFzZTogdGhpcy5fc2V0dGluZ3MuYmFzZU5hbWVNYXRjaCxcclxuICAgICAgICAgICAgbm9icmFjZTogIXRoaXMuX3NldHRpbmdzLmJyYWNlRXhwYW5zaW9uLFxyXG4gICAgICAgICAgICBub2Nhc2U6ICF0aGlzLl9zZXR0aW5ncy5jYXNlU2Vuc2l0aXZlTWF0Y2gsXHJcbiAgICAgICAgICAgIG5vZXh0OiAhdGhpcy5fc2V0dGluZ3MuZXh0Z2xvYixcclxuICAgICAgICAgICAgbm9nbG9ic3RhcjogIXRoaXMuX3NldHRpbmdzLmdsb2JzdGFyLFxyXG4gICAgICAgICAgICBwb3NpeDogdHJ1ZSxcclxuICAgICAgICAgICAgc3RyaWN0U2xhc2hlczogZmFsc2VcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG59XHJcbmV4cG9ydHMuZGVmYXVsdCA9IFByb3ZpZGVyO1xyXG4iLCAiXCJ1c2Ugc3RyaWN0XCI7XHJcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcclxuY29uc3QgYXN5bmNfMSA9IHJlcXVpcmUoXCIuLi9yZWFkZXJzL2FzeW5jXCIpO1xyXG5jb25zdCBwcm92aWRlcl8xID0gcmVxdWlyZShcIi4vcHJvdmlkZXJcIik7XHJcbmNsYXNzIFByb3ZpZGVyQXN5bmMgZXh0ZW5kcyBwcm92aWRlcl8xLmRlZmF1bHQge1xyXG4gICAgY29uc3RydWN0b3IoKSB7XHJcbiAgICAgICAgc3VwZXIoLi4uYXJndW1lbnRzKTtcclxuICAgICAgICB0aGlzLl9yZWFkZXIgPSBuZXcgYXN5bmNfMS5kZWZhdWx0KHRoaXMuX3NldHRpbmdzKTtcclxuICAgIH1cclxuICAgIGFzeW5jIHJlYWQodGFzaykge1xyXG4gICAgICAgIGNvbnN0IHJvb3QgPSB0aGlzLl9nZXRSb290RGlyZWN0b3J5KHRhc2spO1xyXG4gICAgICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLl9nZXRSZWFkZXJPcHRpb25zKHRhc2spO1xyXG4gICAgICAgIGNvbnN0IGVudHJpZXMgPSBhd2FpdCB0aGlzLmFwaShyb290LCB0YXNrLCBvcHRpb25zKTtcclxuICAgICAgICByZXR1cm4gZW50cmllcy5tYXAoKGVudHJ5KSA9PiBvcHRpb25zLnRyYW5zZm9ybShlbnRyeSkpO1xyXG4gICAgfVxyXG4gICAgYXBpKHJvb3QsIHRhc2ssIG9wdGlvbnMpIHtcclxuICAgICAgICBpZiAodGFzay5keW5hbWljKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9yZWFkZXIuZHluYW1pYyhyb290LCBvcHRpb25zKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3JlYWRlci5zdGF0aWModGFzay5wYXR0ZXJucywgb3B0aW9ucyk7XHJcbiAgICB9XHJcbn1cclxuZXhwb3J0cy5kZWZhdWx0ID0gUHJvdmlkZXJBc3luYztcclxuIiwgIlwidXNlIHN0cmljdFwiO1xyXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XHJcbmNvbnN0IHN0cmVhbV8xID0gcmVxdWlyZShcInN0cmVhbVwiKTtcclxuY29uc3Qgc3RyZWFtXzIgPSByZXF1aXJlKFwiLi4vcmVhZGVycy9zdHJlYW1cIik7XHJcbmNvbnN0IHByb3ZpZGVyXzEgPSByZXF1aXJlKFwiLi9wcm92aWRlclwiKTtcclxuY2xhc3MgUHJvdmlkZXJTdHJlYW0gZXh0ZW5kcyBwcm92aWRlcl8xLmRlZmF1bHQge1xyXG4gICAgY29uc3RydWN0b3IoKSB7XHJcbiAgICAgICAgc3VwZXIoLi4uYXJndW1lbnRzKTtcclxuICAgICAgICB0aGlzLl9yZWFkZXIgPSBuZXcgc3RyZWFtXzIuZGVmYXVsdCh0aGlzLl9zZXR0aW5ncyk7XHJcbiAgICB9XHJcbiAgICByZWFkKHRhc2spIHtcclxuICAgICAgICBjb25zdCByb290ID0gdGhpcy5fZ2V0Um9vdERpcmVjdG9yeSh0YXNrKTtcclxuICAgICAgICBjb25zdCBvcHRpb25zID0gdGhpcy5fZ2V0UmVhZGVyT3B0aW9ucyh0YXNrKTtcclxuICAgICAgICBjb25zdCBzb3VyY2UgPSB0aGlzLmFwaShyb290LCB0YXNrLCBvcHRpb25zKTtcclxuICAgICAgICBjb25zdCBkZXN0aW5hdGlvbiA9IG5ldyBzdHJlYW1fMS5SZWFkYWJsZSh7IG9iamVjdE1vZGU6IHRydWUsIHJlYWQ6ICgpID0+IHsgfSB9KTtcclxuICAgICAgICBzb3VyY2VcclxuICAgICAgICAgICAgLm9uY2UoJ2Vycm9yJywgKGVycm9yKSA9PiBkZXN0aW5hdGlvbi5lbWl0KCdlcnJvcicsIGVycm9yKSlcclxuICAgICAgICAgICAgLm9uKCdkYXRhJywgKGVudHJ5KSA9PiBkZXN0aW5hdGlvbi5lbWl0KCdkYXRhJywgb3B0aW9ucy50cmFuc2Zvcm0oZW50cnkpKSlcclxuICAgICAgICAgICAgLm9uY2UoJ2VuZCcsICgpID0+IGRlc3RpbmF0aW9uLmVtaXQoJ2VuZCcpKTtcclxuICAgICAgICBkZXN0aW5hdGlvblxyXG4gICAgICAgICAgICAub25jZSgnY2xvc2UnLCAoKSA9PiBzb3VyY2UuZGVzdHJveSgpKTtcclxuICAgICAgICByZXR1cm4gZGVzdGluYXRpb247XHJcbiAgICB9XHJcbiAgICBhcGkocm9vdCwgdGFzaywgb3B0aW9ucykge1xyXG4gICAgICAgIGlmICh0YXNrLmR5bmFtaWMpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3JlYWRlci5keW5hbWljKHJvb3QsIG9wdGlvbnMpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhpcy5fcmVhZGVyLnN0YXRpYyh0YXNrLnBhdHRlcm5zLCBvcHRpb25zKTtcclxuICAgIH1cclxufVxyXG5leHBvcnRzLmRlZmF1bHQgPSBQcm92aWRlclN0cmVhbTtcclxuIiwgIlwidXNlIHN0cmljdFwiO1xyXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XHJcbmNvbnN0IGZzU3RhdCA9IHJlcXVpcmUoXCJAbm9kZWxpYi9mcy5zdGF0XCIpO1xyXG5jb25zdCBmc1dhbGsgPSByZXF1aXJlKFwiQG5vZGVsaWIvZnMud2Fsa1wiKTtcclxuY29uc3QgcmVhZGVyXzEgPSByZXF1aXJlKFwiLi9yZWFkZXJcIik7XHJcbmNsYXNzIFJlYWRlclN5bmMgZXh0ZW5kcyByZWFkZXJfMS5kZWZhdWx0IHtcclxuICAgIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgICAgIHN1cGVyKC4uLmFyZ3VtZW50cyk7XHJcbiAgICAgICAgdGhpcy5fd2Fsa1N5bmMgPSBmc1dhbGsud2Fsa1N5bmM7XHJcbiAgICAgICAgdGhpcy5fc3RhdFN5bmMgPSBmc1N0YXQuc3RhdFN5bmM7XHJcbiAgICB9XHJcbiAgICBkeW5hbWljKHJvb3QsIG9wdGlvbnMpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fd2Fsa1N5bmMocm9vdCwgb3B0aW9ucyk7XHJcbiAgICB9XHJcbiAgICBzdGF0aWMocGF0dGVybnMsIG9wdGlvbnMpIHtcclxuICAgICAgICBjb25zdCBlbnRyaWVzID0gW107XHJcbiAgICAgICAgZm9yIChjb25zdCBwYXR0ZXJuIG9mIHBhdHRlcm5zKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGZpbGVwYXRoID0gdGhpcy5fZ2V0RnVsbEVudHJ5UGF0aChwYXR0ZXJuKTtcclxuICAgICAgICAgICAgY29uc3QgZW50cnkgPSB0aGlzLl9nZXRFbnRyeShmaWxlcGF0aCwgcGF0dGVybiwgb3B0aW9ucyk7XHJcbiAgICAgICAgICAgIGlmIChlbnRyeSA9PT0gbnVsbCB8fCAhb3B0aW9ucy5lbnRyeUZpbHRlcihlbnRyeSkpIHtcclxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVudHJpZXMucHVzaChlbnRyeSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBlbnRyaWVzO1xyXG4gICAgfVxyXG4gICAgX2dldEVudHJ5KGZpbGVwYXRoLCBwYXR0ZXJuLCBvcHRpb25zKSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgY29uc3Qgc3RhdHMgPSB0aGlzLl9nZXRTdGF0KGZpbGVwYXRoKTtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX21ha2VFbnRyeShzdGF0cywgcGF0dGVybik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgICAgICBpZiAob3B0aW9ucy5lcnJvckZpbHRlcihlcnJvcikpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRocm93IGVycm9yO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIF9nZXRTdGF0KGZpbGVwYXRoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3N0YXRTeW5jKGZpbGVwYXRoLCB0aGlzLl9mc1N0YXRTZXR0aW5ncyk7XHJcbiAgICB9XHJcbn1cclxuZXhwb3J0cy5kZWZhdWx0ID0gUmVhZGVyU3luYztcclxuIiwgIlwidXNlIHN0cmljdFwiO1xyXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XHJcbmNvbnN0IHN5bmNfMSA9IHJlcXVpcmUoXCIuLi9yZWFkZXJzL3N5bmNcIik7XHJcbmNvbnN0IHByb3ZpZGVyXzEgPSByZXF1aXJlKFwiLi9wcm92aWRlclwiKTtcclxuY2xhc3MgUHJvdmlkZXJTeW5jIGV4dGVuZHMgcHJvdmlkZXJfMS5kZWZhdWx0IHtcclxuICAgIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgICAgIHN1cGVyKC4uLmFyZ3VtZW50cyk7XHJcbiAgICAgICAgdGhpcy5fcmVhZGVyID0gbmV3IHN5bmNfMS5kZWZhdWx0KHRoaXMuX3NldHRpbmdzKTtcclxuICAgIH1cclxuICAgIHJlYWQodGFzaykge1xyXG4gICAgICAgIGNvbnN0IHJvb3QgPSB0aGlzLl9nZXRSb290RGlyZWN0b3J5KHRhc2spO1xyXG4gICAgICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLl9nZXRSZWFkZXJPcHRpb25zKHRhc2spO1xyXG4gICAgICAgIGNvbnN0IGVudHJpZXMgPSB0aGlzLmFwaShyb290LCB0YXNrLCBvcHRpb25zKTtcclxuICAgICAgICByZXR1cm4gZW50cmllcy5tYXAob3B0aW9ucy50cmFuc2Zvcm0pO1xyXG4gICAgfVxyXG4gICAgYXBpKHJvb3QsIHRhc2ssIG9wdGlvbnMpIHtcclxuICAgICAgICBpZiAodGFzay5keW5hbWljKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9yZWFkZXIuZHluYW1pYyhyb290LCBvcHRpb25zKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3JlYWRlci5zdGF0aWModGFzay5wYXR0ZXJucywgb3B0aW9ucyk7XHJcbiAgICB9XHJcbn1cclxuZXhwb3J0cy5kZWZhdWx0ID0gUHJvdmlkZXJTeW5jO1xyXG4iLCAiXCJ1c2Ugc3RyaWN0XCI7XHJcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcclxuZXhwb3J0cy5ERUZBVUxUX0ZJTEVfU1lTVEVNX0FEQVBURVIgPSB2b2lkIDA7XHJcbmNvbnN0IGZzID0gcmVxdWlyZShcImZzXCIpO1xyXG5jb25zdCBvcyA9IHJlcXVpcmUoXCJvc1wiKTtcclxuLyoqXHJcbiAqIFRoZSBgb3MuY3B1c2AgbWV0aG9kIGNhbiByZXR1cm4gemVyby4gV2UgZXhwZWN0IHRoZSBudW1iZXIgb2YgY29yZXMgdG8gYmUgZ3JlYXRlciB0aGFuIHplcm8uXHJcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlanMvbm9kZS9ibG9iLzdmYWVkZGYyM2E5OGM1Mzg5NmY4YjU3NGE2ZTY2NTg5ZThmYjFlYjgvbGliL29zLmpzI0wxMDYtTDEwN1xyXG4gKi9cclxuY29uc3QgQ1BVX0NPVU5UID0gTWF0aC5tYXgob3MuY3B1cygpLmxlbmd0aCwgMSk7XHJcbmV4cG9ydHMuREVGQVVMVF9GSUxFX1NZU1RFTV9BREFQVEVSID0ge1xyXG4gICAgbHN0YXQ6IGZzLmxzdGF0LFxyXG4gICAgbHN0YXRTeW5jOiBmcy5sc3RhdFN5bmMsXHJcbiAgICBzdGF0OiBmcy5zdGF0LFxyXG4gICAgc3RhdFN5bmM6IGZzLnN0YXRTeW5jLFxyXG4gICAgcmVhZGRpcjogZnMucmVhZGRpcixcclxuICAgIHJlYWRkaXJTeW5jOiBmcy5yZWFkZGlyU3luY1xyXG59O1xyXG5jbGFzcyBTZXR0aW5ncyB7XHJcbiAgICBjb25zdHJ1Y3Rvcihfb3B0aW9ucyA9IHt9KSB7XHJcbiAgICAgICAgdGhpcy5fb3B0aW9ucyA9IF9vcHRpb25zO1xyXG4gICAgICAgIHRoaXMuYWJzb2x1dGUgPSB0aGlzLl9nZXRWYWx1ZSh0aGlzLl9vcHRpb25zLmFic29sdXRlLCBmYWxzZSk7XHJcbiAgICAgICAgdGhpcy5iYXNlTmFtZU1hdGNoID0gdGhpcy5fZ2V0VmFsdWUodGhpcy5fb3B0aW9ucy5iYXNlTmFtZU1hdGNoLCBmYWxzZSk7XHJcbiAgICAgICAgdGhpcy5icmFjZUV4cGFuc2lvbiA9IHRoaXMuX2dldFZhbHVlKHRoaXMuX29wdGlvbnMuYnJhY2VFeHBhbnNpb24sIHRydWUpO1xyXG4gICAgICAgIHRoaXMuY2FzZVNlbnNpdGl2ZU1hdGNoID0gdGhpcy5fZ2V0VmFsdWUodGhpcy5fb3B0aW9ucy5jYXNlU2Vuc2l0aXZlTWF0Y2gsIHRydWUpO1xyXG4gICAgICAgIHRoaXMuY29uY3VycmVuY3kgPSB0aGlzLl9nZXRWYWx1ZSh0aGlzLl9vcHRpb25zLmNvbmN1cnJlbmN5LCBDUFVfQ09VTlQpO1xyXG4gICAgICAgIHRoaXMuY3dkID0gdGhpcy5fZ2V0VmFsdWUodGhpcy5fb3B0aW9ucy5jd2QsIHByb2Nlc3MuY3dkKCkpO1xyXG4gICAgICAgIHRoaXMuZGVlcCA9IHRoaXMuX2dldFZhbHVlKHRoaXMuX29wdGlvbnMuZGVlcCwgSW5maW5pdHkpO1xyXG4gICAgICAgIHRoaXMuZG90ID0gdGhpcy5fZ2V0VmFsdWUodGhpcy5fb3B0aW9ucy5kb3QsIGZhbHNlKTtcclxuICAgICAgICB0aGlzLmV4dGdsb2IgPSB0aGlzLl9nZXRWYWx1ZSh0aGlzLl9vcHRpb25zLmV4dGdsb2IsIHRydWUpO1xyXG4gICAgICAgIHRoaXMuZm9sbG93U3ltYm9saWNMaW5rcyA9IHRoaXMuX2dldFZhbHVlKHRoaXMuX29wdGlvbnMuZm9sbG93U3ltYm9saWNMaW5rcywgdHJ1ZSk7XHJcbiAgICAgICAgdGhpcy5mcyA9IHRoaXMuX2dldEZpbGVTeXN0ZW1NZXRob2RzKHRoaXMuX29wdGlvbnMuZnMpO1xyXG4gICAgICAgIHRoaXMuZ2xvYnN0YXIgPSB0aGlzLl9nZXRWYWx1ZSh0aGlzLl9vcHRpb25zLmdsb2JzdGFyLCB0cnVlKTtcclxuICAgICAgICB0aGlzLmlnbm9yZSA9IHRoaXMuX2dldFZhbHVlKHRoaXMuX29wdGlvbnMuaWdub3JlLCBbXSk7XHJcbiAgICAgICAgdGhpcy5tYXJrRGlyZWN0b3JpZXMgPSB0aGlzLl9nZXRWYWx1ZSh0aGlzLl9vcHRpb25zLm1hcmtEaXJlY3RvcmllcywgZmFsc2UpO1xyXG4gICAgICAgIHRoaXMub2JqZWN0TW9kZSA9IHRoaXMuX2dldFZhbHVlKHRoaXMuX29wdGlvbnMub2JqZWN0TW9kZSwgZmFsc2UpO1xyXG4gICAgICAgIHRoaXMub25seURpcmVjdG9yaWVzID0gdGhpcy5fZ2V0VmFsdWUodGhpcy5fb3B0aW9ucy5vbmx5RGlyZWN0b3JpZXMsIGZhbHNlKTtcclxuICAgICAgICB0aGlzLm9ubHlGaWxlcyA9IHRoaXMuX2dldFZhbHVlKHRoaXMuX29wdGlvbnMub25seUZpbGVzLCB0cnVlKTtcclxuICAgICAgICB0aGlzLnN0YXRzID0gdGhpcy5fZ2V0VmFsdWUodGhpcy5fb3B0aW9ucy5zdGF0cywgZmFsc2UpO1xyXG4gICAgICAgIHRoaXMuc3VwcHJlc3NFcnJvcnMgPSB0aGlzLl9nZXRWYWx1ZSh0aGlzLl9vcHRpb25zLnN1cHByZXNzRXJyb3JzLCBmYWxzZSk7XHJcbiAgICAgICAgdGhpcy50aHJvd0Vycm9yT25Ccm9rZW5TeW1ib2xpY0xpbmsgPSB0aGlzLl9nZXRWYWx1ZSh0aGlzLl9vcHRpb25zLnRocm93RXJyb3JPbkJyb2tlblN5bWJvbGljTGluaywgZmFsc2UpO1xyXG4gICAgICAgIHRoaXMudW5pcXVlID0gdGhpcy5fZ2V0VmFsdWUodGhpcy5fb3B0aW9ucy51bmlxdWUsIHRydWUpO1xyXG4gICAgICAgIGlmICh0aGlzLm9ubHlEaXJlY3Rvcmllcykge1xyXG4gICAgICAgICAgICB0aGlzLm9ubHlGaWxlcyA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5zdGF0cykge1xyXG4gICAgICAgICAgICB0aGlzLm9iamVjdE1vZGUgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIF9nZXRWYWx1ZShvcHRpb24sIHZhbHVlKSB7XHJcbiAgICAgICAgcmV0dXJuIG9wdGlvbiA9PT0gdW5kZWZpbmVkID8gdmFsdWUgOiBvcHRpb247XHJcbiAgICB9XHJcbiAgICBfZ2V0RmlsZVN5c3RlbU1ldGhvZHMobWV0aG9kcyA9IHt9KSB7XHJcbiAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgZXhwb3J0cy5ERUZBVUxUX0ZJTEVfU1lTVEVNX0FEQVBURVIpLCBtZXRob2RzKTtcclxuICAgIH1cclxufVxyXG5leHBvcnRzLmRlZmF1bHQgPSBTZXR0aW5ncztcclxuIiwgIlwidXNlIHN0cmljdFwiO1xyXG5jb25zdCB0YXNrTWFuYWdlciA9IHJlcXVpcmUoXCIuL21hbmFnZXJzL3Rhc2tzXCIpO1xyXG5jb25zdCBwYXR0ZXJuTWFuYWdlciA9IHJlcXVpcmUoXCIuL21hbmFnZXJzL3BhdHRlcm5zXCIpO1xyXG5jb25zdCBhc3luY18xID0gcmVxdWlyZShcIi4vcHJvdmlkZXJzL2FzeW5jXCIpO1xyXG5jb25zdCBzdHJlYW1fMSA9IHJlcXVpcmUoXCIuL3Byb3ZpZGVycy9zdHJlYW1cIik7XHJcbmNvbnN0IHN5bmNfMSA9IHJlcXVpcmUoXCIuL3Byb3ZpZGVycy9zeW5jXCIpO1xyXG5jb25zdCBzZXR0aW5nc18xID0gcmVxdWlyZShcIi4vc2V0dGluZ3NcIik7XHJcbmNvbnN0IHV0aWxzID0gcmVxdWlyZShcIi4vdXRpbHNcIik7XHJcbmFzeW5jIGZ1bmN0aW9uIEZhc3RHbG9iKHNvdXJjZSwgb3B0aW9ucykge1xyXG4gICAgYXNzZXJ0UGF0dGVybnNJbnB1dChzb3VyY2UpO1xyXG4gICAgY29uc3Qgd29ya3MgPSBnZXRXb3Jrcyhzb3VyY2UsIGFzeW5jXzEuZGVmYXVsdCwgb3B0aW9ucyk7XHJcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBQcm9taXNlLmFsbCh3b3Jrcyk7XHJcbiAgICByZXR1cm4gdXRpbHMuYXJyYXkuZmxhdHRlbihyZXN1bHQpO1xyXG59XHJcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90eXBlc2NyaXB0LWVzbGludC90eXBlc2NyaXB0LWVzbGludC9pc3N1ZXMvNjBcclxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXJlZGVjbGFyZVxyXG4oZnVuY3Rpb24gKEZhc3RHbG9iKSB7XHJcbiAgICBmdW5jdGlvbiBzeW5jKHNvdXJjZSwgb3B0aW9ucykge1xyXG4gICAgICAgIGFzc2VydFBhdHRlcm5zSW5wdXQoc291cmNlKTtcclxuICAgICAgICBjb25zdCB3b3JrcyA9IGdldFdvcmtzKHNvdXJjZSwgc3luY18xLmRlZmF1bHQsIG9wdGlvbnMpO1xyXG4gICAgICAgIHJldHVybiB1dGlscy5hcnJheS5mbGF0dGVuKHdvcmtzKTtcclxuICAgIH1cclxuICAgIEZhc3RHbG9iLnN5bmMgPSBzeW5jO1xyXG4gICAgZnVuY3Rpb24gc3RyZWFtKHNvdXJjZSwgb3B0aW9ucykge1xyXG4gICAgICAgIGFzc2VydFBhdHRlcm5zSW5wdXQoc291cmNlKTtcclxuICAgICAgICBjb25zdCB3b3JrcyA9IGdldFdvcmtzKHNvdXJjZSwgc3RyZWFtXzEuZGVmYXVsdCwgb3B0aW9ucyk7XHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICogVGhlIHN0cmVhbSByZXR1cm5lZCBieSB0aGUgcHJvdmlkZXIgY2Fubm90IHdvcmsgd2l0aCBhbiBhc3luY2hyb25vdXMgaXRlcmF0b3IuXHJcbiAgICAgICAgICogVG8gc3VwcG9ydCBhc3luY2hyb25vdXMgaXRlcmF0b3JzLCByZWdhcmRsZXNzIG9mIHRoZSBudW1iZXIgb2YgdGFza3MsIHdlIGFsd2F5cyBtdWx0aXBsZXggc3RyZWFtcy5cclxuICAgICAgICAgKiBUaGlzIGFmZmVjdHMgcGVyZm9ybWFuY2UgKCsyNSUpLiBJIGRvbid0IHNlZSBiZXN0IHNvbHV0aW9uIHJpZ2h0IG5vdy5cclxuICAgICAgICAgKi9cclxuICAgICAgICByZXR1cm4gdXRpbHMuc3RyZWFtLm1lcmdlKHdvcmtzKTtcclxuICAgIH1cclxuICAgIEZhc3RHbG9iLnN0cmVhbSA9IHN0cmVhbTtcclxuICAgIGZ1bmN0aW9uIGdlbmVyYXRlVGFza3Moc291cmNlLCBvcHRpb25zKSB7XHJcbiAgICAgICAgYXNzZXJ0UGF0dGVybnNJbnB1dChzb3VyY2UpO1xyXG4gICAgICAgIGNvbnN0IHBhdHRlcm5zID0gcGF0dGVybk1hbmFnZXIudHJhbnNmb3JtKFtdLmNvbmNhdChzb3VyY2UpKTtcclxuICAgICAgICBjb25zdCBzZXR0aW5ncyA9IG5ldyBzZXR0aW5nc18xLmRlZmF1bHQob3B0aW9ucyk7XHJcbiAgICAgICAgcmV0dXJuIHRhc2tNYW5hZ2VyLmdlbmVyYXRlKHBhdHRlcm5zLCBzZXR0aW5ncyk7XHJcbiAgICB9XHJcbiAgICBGYXN0R2xvYi5nZW5lcmF0ZVRhc2tzID0gZ2VuZXJhdGVUYXNrcztcclxuICAgIGZ1bmN0aW9uIGlzRHluYW1pY1BhdHRlcm4oc291cmNlLCBvcHRpb25zKSB7XHJcbiAgICAgICAgYXNzZXJ0UGF0dGVybnNJbnB1dChzb3VyY2UpO1xyXG4gICAgICAgIGNvbnN0IHNldHRpbmdzID0gbmV3IHNldHRpbmdzXzEuZGVmYXVsdChvcHRpb25zKTtcclxuICAgICAgICByZXR1cm4gdXRpbHMucGF0dGVybi5pc0R5bmFtaWNQYXR0ZXJuKHNvdXJjZSwgc2V0dGluZ3MpO1xyXG4gICAgfVxyXG4gICAgRmFzdEdsb2IuaXNEeW5hbWljUGF0dGVybiA9IGlzRHluYW1pY1BhdHRlcm47XHJcbiAgICBmdW5jdGlvbiBlc2NhcGVQYXRoKHNvdXJjZSkge1xyXG4gICAgICAgIGFzc2VydFBhdHRlcm5zSW5wdXQoc291cmNlKTtcclxuICAgICAgICByZXR1cm4gdXRpbHMucGF0aC5lc2NhcGUoc291cmNlKTtcclxuICAgIH1cclxuICAgIEZhc3RHbG9iLmVzY2FwZVBhdGggPSBlc2NhcGVQYXRoO1xyXG59KShGYXN0R2xvYiB8fCAoRmFzdEdsb2IgPSB7fSkpO1xyXG5mdW5jdGlvbiBnZXRXb3Jrcyhzb3VyY2UsIF9Qcm92aWRlciwgb3B0aW9ucykge1xyXG4gICAgY29uc3QgcGF0dGVybnMgPSBwYXR0ZXJuTWFuYWdlci50cmFuc2Zvcm0oW10uY29uY2F0KHNvdXJjZSkpO1xyXG4gICAgY29uc3Qgc2V0dGluZ3MgPSBuZXcgc2V0dGluZ3NfMS5kZWZhdWx0KG9wdGlvbnMpO1xyXG4gICAgY29uc3QgdGFza3MgPSB0YXNrTWFuYWdlci5nZW5lcmF0ZShwYXR0ZXJucywgc2V0dGluZ3MpO1xyXG4gICAgY29uc3QgcHJvdmlkZXIgPSBuZXcgX1Byb3ZpZGVyKHNldHRpbmdzKTtcclxuICAgIHJldHVybiB0YXNrcy5tYXAocHJvdmlkZXIucmVhZCwgcHJvdmlkZXIpO1xyXG59XHJcbmZ1bmN0aW9uIGFzc2VydFBhdHRlcm5zSW5wdXQoaW5wdXQpIHtcclxuICAgIGNvbnN0IHNvdXJjZSA9IFtdLmNvbmNhdChpbnB1dCk7XHJcbiAgICBjb25zdCBpc1ZhbGlkU291cmNlID0gc291cmNlLmV2ZXJ5KChpdGVtKSA9PiB1dGlscy5zdHJpbmcuaXNTdHJpbmcoaXRlbSkgJiYgIXV0aWxzLnN0cmluZy5pc0VtcHR5KGl0ZW0pKTtcclxuICAgIGlmICghaXNWYWxpZFNvdXJjZSkge1xyXG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1BhdHRlcm5zIG11c3QgYmUgYSBzdHJpbmcgKG5vbiBlbXB0eSkgb3IgYW4gYXJyYXkgb2Ygc3RyaW5ncycpO1xyXG4gICAgfVxyXG59XHJcbm1vZHVsZS5leHBvcnRzID0gRmFzdEdsb2I7XHJcbiIsICIndXNlIHN0cmljdCc7XG5jb25zdCB7cHJvbWlzaWZ5fSA9IHJlcXVpcmUoJ3V0aWwnKTtcbmNvbnN0IGZzID0gcmVxdWlyZSgnZnMnKTtcblxuYXN5bmMgZnVuY3Rpb24gaXNUeXBlKGZzU3RhdFR5cGUsIHN0YXRzTWV0aG9kTmFtZSwgZmlsZVBhdGgpIHtcblx0aWYgKHR5cGVvZiBmaWxlUGF0aCAhPT0gJ3N0cmluZycpIHtcblx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKGBFeHBlY3RlZCBhIHN0cmluZywgZ290ICR7dHlwZW9mIGZpbGVQYXRofWApO1xuXHR9XG5cblx0dHJ5IHtcblx0XHRjb25zdCBzdGF0cyA9IGF3YWl0IHByb21pc2lmeShmc1tmc1N0YXRUeXBlXSkoZmlsZVBhdGgpO1xuXHRcdHJldHVybiBzdGF0c1tzdGF0c01ldGhvZE5hbWVdKCk7XG5cdH0gY2F0Y2ggKGVycm9yKSB7XG5cdFx0aWYgKGVycm9yLmNvZGUgPT09ICdFTk9FTlQnKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXG5cdFx0dGhyb3cgZXJyb3I7XG5cdH1cbn1cblxuZnVuY3Rpb24gaXNUeXBlU3luYyhmc1N0YXRUeXBlLCBzdGF0c01ldGhvZE5hbWUsIGZpbGVQYXRoKSB7XG5cdGlmICh0eXBlb2YgZmlsZVBhdGggIT09ICdzdHJpbmcnKSB7XG5cdFx0dGhyb3cgbmV3IFR5cGVFcnJvcihgRXhwZWN0ZWQgYSBzdHJpbmcsIGdvdCAke3R5cGVvZiBmaWxlUGF0aH1gKTtcblx0fVxuXG5cdHRyeSB7XG5cdFx0cmV0dXJuIGZzW2ZzU3RhdFR5cGVdKGZpbGVQYXRoKVtzdGF0c01ldGhvZE5hbWVdKCk7XG5cdH0gY2F0Y2ggKGVycm9yKSB7XG5cdFx0aWYgKGVycm9yLmNvZGUgPT09ICdFTk9FTlQnKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXG5cdFx0dGhyb3cgZXJyb3I7XG5cdH1cbn1cblxuZXhwb3J0cy5pc0ZpbGUgPSBpc1R5cGUuYmluZChudWxsLCAnc3RhdCcsICdpc0ZpbGUnKTtcbmV4cG9ydHMuaXNEaXJlY3RvcnkgPSBpc1R5cGUuYmluZChudWxsLCAnc3RhdCcsICdpc0RpcmVjdG9yeScpO1xuZXhwb3J0cy5pc1N5bWxpbmsgPSBpc1R5cGUuYmluZChudWxsLCAnbHN0YXQnLCAnaXNTeW1ib2xpY0xpbmsnKTtcbmV4cG9ydHMuaXNGaWxlU3luYyA9IGlzVHlwZVN5bmMuYmluZChudWxsLCAnc3RhdFN5bmMnLCAnaXNGaWxlJyk7XG5leHBvcnRzLmlzRGlyZWN0b3J5U3luYyA9IGlzVHlwZVN5bmMuYmluZChudWxsLCAnc3RhdFN5bmMnLCAnaXNEaXJlY3RvcnknKTtcbmV4cG9ydHMuaXNTeW1saW5rU3luYyA9IGlzVHlwZVN5bmMuYmluZChudWxsLCAnbHN0YXRTeW5jJywgJ2lzU3ltYm9saWNMaW5rJyk7XG4iLCAiJ3VzZSBzdHJpY3QnO1xuY29uc3QgcGF0aCA9IHJlcXVpcmUoJ3BhdGgnKTtcbmNvbnN0IHBhdGhUeXBlID0gcmVxdWlyZSgncGF0aC10eXBlJyk7XG5cbmNvbnN0IGdldEV4dGVuc2lvbnMgPSBleHRlbnNpb25zID0+IGV4dGVuc2lvbnMubGVuZ3RoID4gMSA/IGB7JHtleHRlbnNpb25zLmpvaW4oJywnKX19YCA6IGV4dGVuc2lvbnNbMF07XG5cbmNvbnN0IGdldFBhdGggPSAoZmlsZXBhdGgsIGN3ZCkgPT4ge1xuXHRjb25zdCBwdGggPSBmaWxlcGF0aFswXSA9PT0gJyEnID8gZmlsZXBhdGguc2xpY2UoMSkgOiBmaWxlcGF0aDtcblx0cmV0dXJuIHBhdGguaXNBYnNvbHV0ZShwdGgpID8gcHRoIDogcGF0aC5qb2luKGN3ZCwgcHRoKTtcbn07XG5cbmNvbnN0IGFkZEV4dGVuc2lvbnMgPSAoZmlsZSwgZXh0ZW5zaW9ucykgPT4ge1xuXHRpZiAocGF0aC5leHRuYW1lKGZpbGUpKSB7XG5cdFx0cmV0dXJuIGAqKi8ke2ZpbGV9YDtcblx0fVxuXG5cdHJldHVybiBgKiovJHtmaWxlfS4ke2dldEV4dGVuc2lvbnMoZXh0ZW5zaW9ucyl9YDtcbn07XG5cbmNvbnN0IGdldEdsb2IgPSAoZGlyZWN0b3J5LCBvcHRpb25zKSA9PiB7XG5cdGlmIChvcHRpb25zLmZpbGVzICYmICFBcnJheS5pc0FycmF5KG9wdGlvbnMuZmlsZXMpKSB7XG5cdFx0dGhyb3cgbmV3IFR5cGVFcnJvcihgRXhwZWN0ZWQgXFxgZmlsZXNcXGAgdG8gYmUgb2YgdHlwZSBcXGBBcnJheVxcYCBidXQgcmVjZWl2ZWQgdHlwZSBcXGAke3R5cGVvZiBvcHRpb25zLmZpbGVzfVxcYGApO1xuXHR9XG5cblx0aWYgKG9wdGlvbnMuZXh0ZW5zaW9ucyAmJiAhQXJyYXkuaXNBcnJheShvcHRpb25zLmV4dGVuc2lvbnMpKSB7XG5cdFx0dGhyb3cgbmV3IFR5cGVFcnJvcihgRXhwZWN0ZWQgXFxgZXh0ZW5zaW9uc1xcYCB0byBiZSBvZiB0eXBlIFxcYEFycmF5XFxgIGJ1dCByZWNlaXZlZCB0eXBlIFxcYCR7dHlwZW9mIG9wdGlvbnMuZXh0ZW5zaW9uc31cXGBgKTtcblx0fVxuXG5cdGlmIChvcHRpb25zLmZpbGVzICYmIG9wdGlvbnMuZXh0ZW5zaW9ucykge1xuXHRcdHJldHVybiBvcHRpb25zLmZpbGVzLm1hcCh4ID0+IHBhdGgucG9zaXguam9pbihkaXJlY3RvcnksIGFkZEV4dGVuc2lvbnMoeCwgb3B0aW9ucy5leHRlbnNpb25zKSkpO1xuXHR9XG5cblx0aWYgKG9wdGlvbnMuZmlsZXMpIHtcblx0XHRyZXR1cm4gb3B0aW9ucy5maWxlcy5tYXAoeCA9PiBwYXRoLnBvc2l4LmpvaW4oZGlyZWN0b3J5LCBgKiovJHt4fWApKTtcblx0fVxuXG5cdGlmIChvcHRpb25zLmV4dGVuc2lvbnMpIHtcblx0XHRyZXR1cm4gW3BhdGgucG9zaXguam9pbihkaXJlY3RvcnksIGAqKi8qLiR7Z2V0RXh0ZW5zaW9ucyhvcHRpb25zLmV4dGVuc2lvbnMpfWApXTtcblx0fVxuXG5cdHJldHVybiBbcGF0aC5wb3NpeC5qb2luKGRpcmVjdG9yeSwgJyoqJyldO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBhc3luYyAoaW5wdXQsIG9wdGlvbnMpID0+IHtcblx0b3B0aW9ucyA9IHtcblx0XHRjd2Q6IHByb2Nlc3MuY3dkKCksXG5cdFx0Li4ub3B0aW9uc1xuXHR9O1xuXG5cdGlmICh0eXBlb2Ygb3B0aW9ucy5jd2QgIT09ICdzdHJpbmcnKSB7XG5cdFx0dGhyb3cgbmV3IFR5cGVFcnJvcihgRXhwZWN0ZWQgXFxgY3dkXFxgIHRvIGJlIG9mIHR5cGUgXFxgc3RyaW5nXFxgIGJ1dCByZWNlaXZlZCB0eXBlIFxcYCR7dHlwZW9mIG9wdGlvbnMuY3dkfVxcYGApO1xuXHR9XG5cblx0Y29uc3QgZ2xvYnMgPSBhd2FpdCBQcm9taXNlLmFsbChbXS5jb25jYXQoaW5wdXQpLm1hcChhc3luYyB4ID0+IHtcblx0XHRjb25zdCBpc0RpcmVjdG9yeSA9IGF3YWl0IHBhdGhUeXBlLmlzRGlyZWN0b3J5KGdldFBhdGgoeCwgb3B0aW9ucy5jd2QpKTtcblx0XHRyZXR1cm4gaXNEaXJlY3RvcnkgPyBnZXRHbG9iKHgsIG9wdGlvbnMpIDogeDtcblx0fSkpO1xuXG5cdHJldHVybiBbXS5jb25jYXQuYXBwbHkoW10sIGdsb2JzKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBwcmVmZXItc3ByZWFkXG59O1xuXG5tb2R1bGUuZXhwb3J0cy5zeW5jID0gKGlucHV0LCBvcHRpb25zKSA9PiB7XG5cdG9wdGlvbnMgPSB7XG5cdFx0Y3dkOiBwcm9jZXNzLmN3ZCgpLFxuXHRcdC4uLm9wdGlvbnNcblx0fTtcblxuXHRpZiAodHlwZW9mIG9wdGlvbnMuY3dkICE9PSAnc3RyaW5nJykge1xuXHRcdHRocm93IG5ldyBUeXBlRXJyb3IoYEV4cGVjdGVkIFxcYGN3ZFxcYCB0byBiZSBvZiB0eXBlIFxcYHN0cmluZ1xcYCBidXQgcmVjZWl2ZWQgdHlwZSBcXGAke3R5cGVvZiBvcHRpb25zLmN3ZH1cXGBgKTtcblx0fVxuXG5cdGNvbnN0IGdsb2JzID0gW10uY29uY2F0KGlucHV0KS5tYXAoeCA9PiBwYXRoVHlwZS5pc0RpcmVjdG9yeVN5bmMoZ2V0UGF0aCh4LCBvcHRpb25zLmN3ZCkpID8gZ2V0R2xvYih4LCBvcHRpb25zKSA6IHgpO1xuXG5cdHJldHVybiBbXS5jb25jYXQuYXBwbHkoW10sIGdsb2JzKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBwcmVmZXItc3ByZWFkXG59O1xuIiwgIi8vIEEgc2ltcGxlIGltcGxlbWVudGF0aW9uIG9mIG1ha2UtYXJyYXlcbmZ1bmN0aW9uIG1ha2VBcnJheSAoc3ViamVjdCkge1xuICByZXR1cm4gQXJyYXkuaXNBcnJheShzdWJqZWN0KVxuICAgID8gc3ViamVjdFxuICAgIDogW3N1YmplY3RdXG59XG5cbmNvbnN0IEVNUFRZID0gJydcbmNvbnN0IFNQQUNFID0gJyAnXG5jb25zdCBFU0NBUEUgPSAnXFxcXCdcbmNvbnN0IFJFR0VYX1RFU1RfQkxBTktfTElORSA9IC9eXFxzKyQvXG5jb25zdCBSRUdFWF9SRVBMQUNFX0xFQURJTkdfRVhDQVBFRF9FWENMQU1BVElPTiA9IC9eXFxcXCEvXG5jb25zdCBSRUdFWF9SRVBMQUNFX0xFQURJTkdfRVhDQVBFRF9IQVNIID0gL15cXFxcIy9cbmNvbnN0IFJFR0VYX1NQTElUQUxMX0NSTEYgPSAvXFxyP1xcbi9nXG4vLyAvZm9vLFxuLy8gLi9mb28sXG4vLyAuLi9mb28sXG4vLyAuXG4vLyAuLlxuY29uc3QgUkVHRVhfVEVTVF9JTlZBTElEX1BBVEggPSAvXlxcLipcXC98XlxcLiskL1xuXG5jb25zdCBTTEFTSCA9ICcvJ1xuY29uc3QgS0VZX0lHTk9SRSA9IHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnXG4gID8gU3ltYm9sLmZvcignbm9kZS1pZ25vcmUnKVxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICA6ICdub2RlLWlnbm9yZSdcblxuY29uc3QgZGVmaW5lID0gKG9iamVjdCwga2V5LCB2YWx1ZSkgPT5cbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iamVjdCwga2V5LCB7dmFsdWV9KVxuXG5jb25zdCBSRUdFWF9SRUdFWFBfUkFOR0UgPSAvKFswLXpdKS0oWzAtel0pL2dcblxuY29uc3QgUkVUVVJOX0ZBTFNFID0gKCkgPT4gZmFsc2VcblxuLy8gU2FuaXRpemUgdGhlIHJhbmdlIG9mIGEgcmVndWxhciBleHByZXNzaW9uXG4vLyBUaGUgY2FzZXMgYXJlIGNvbXBsaWNhdGVkLCBzZWUgdGVzdCBjYXNlcyBmb3IgZGV0YWlsc1xuY29uc3Qgc2FuaXRpemVSYW5nZSA9IHJhbmdlID0+IHJhbmdlLnJlcGxhY2UoXG4gIFJFR0VYX1JFR0VYUF9SQU5HRSxcbiAgKG1hdGNoLCBmcm9tLCB0bykgPT4gZnJvbS5jaGFyQ29kZUF0KDApIDw9IHRvLmNoYXJDb2RlQXQoMClcbiAgICA/IG1hdGNoXG4gICAgLy8gSW52YWxpZCByYW5nZSAob3V0IG9mIG9yZGVyKSB3aGljaCBpcyBvayBmb3IgZ2l0aWdub3JlIHJ1bGVzIGJ1dFxuICAgIC8vICAgZmF0YWwgZm9yIEphdmFTY3JpcHQgcmVndWxhciBleHByZXNzaW9uLCBzbyBlbGltaW5hdGUgaXQuXG4gICAgOiBFTVBUWVxuKVxuXG4vLyBTZWUgZml4dHVyZXMgIzU5XG5jb25zdCBjbGVhblJhbmdlQmFja1NsYXNoID0gc2xhc2hlcyA9PiB7XG4gIGNvbnN0IHtsZW5ndGh9ID0gc2xhc2hlc1xuICByZXR1cm4gc2xhc2hlcy5zbGljZSgwLCBsZW5ndGggLSBsZW5ndGggJSAyKVxufVxuXG4vLyA+IElmIHRoZSBwYXR0ZXJuIGVuZHMgd2l0aCBhIHNsYXNoLFxuLy8gPiBpdCBpcyByZW1vdmVkIGZvciB0aGUgcHVycG9zZSBvZiB0aGUgZm9sbG93aW5nIGRlc2NyaXB0aW9uLFxuLy8gPiBidXQgaXQgd291bGQgb25seSBmaW5kIGEgbWF0Y2ggd2l0aCBhIGRpcmVjdG9yeS5cbi8vID4gSW4gb3RoZXIgd29yZHMsIGZvby8gd2lsbCBtYXRjaCBhIGRpcmVjdG9yeSBmb28gYW5kIHBhdGhzIHVuZGVybmVhdGggaXQsXG4vLyA+IGJ1dCB3aWxsIG5vdCBtYXRjaCBhIHJlZ3VsYXIgZmlsZSBvciBhIHN5bWJvbGljIGxpbmsgZm9vXG4vLyA+ICAodGhpcyBpcyBjb25zaXN0ZW50IHdpdGggdGhlIHdheSBob3cgcGF0aHNwZWMgd29ya3MgaW4gZ2VuZXJhbCBpbiBHaXQpLlxuLy8gJ2Bmb28vYCcgd2lsbCBub3QgbWF0Y2ggcmVndWxhciBmaWxlICdgZm9vYCcgb3Igc3ltYm9saWMgbGluayAnYGZvb2AnXG4vLyAtPiBpZ25vcmUtcnVsZXMgd2lsbCBub3QgZGVhbCB3aXRoIGl0LCBiZWNhdXNlIGl0IGNvc3RzIGV4dHJhIGBmcy5zdGF0YCBjYWxsXG4vLyAgICAgIHlvdSBjb3VsZCB1c2Ugb3B0aW9uIGBtYXJrOiB0cnVlYCB3aXRoIGBnbG9iYFxuXG4vLyAnYGZvby9gJyBzaG91bGQgbm90IGNvbnRpbnVlIHdpdGggdGhlICdgLi5gJ1xuY29uc3QgUkVQTEFDRVJTID0gW1xuXG4gIC8vID4gVHJhaWxpbmcgc3BhY2VzIGFyZSBpZ25vcmVkIHVubGVzcyB0aGV5IGFyZSBxdW90ZWQgd2l0aCBiYWNrc2xhc2ggKFwiXFxcIilcbiAgW1xuICAgIC8vIChhXFwgKSAtPiAoYSApXG4gICAgLy8gKGEgICkgLT4gKGEpXG4gICAgLy8gKGEgXFwgKSAtPiAoYSAgKVxuICAgIC9cXFxcP1xccyskLyxcbiAgICBtYXRjaCA9PiBtYXRjaC5pbmRleE9mKCdcXFxcJykgPT09IDBcbiAgICAgID8gU1BBQ0VcbiAgICAgIDogRU1QVFlcbiAgXSxcblxuICAvLyByZXBsYWNlIChcXCApIHdpdGggJyAnXG4gIFtcbiAgICAvXFxcXFxccy9nLFxuICAgICgpID0+IFNQQUNFXG4gIF0sXG5cbiAgLy8gRXNjYXBlIG1ldGFjaGFyYWN0ZXJzXG4gIC8vIHdoaWNoIGlzIHdyaXR0ZW4gZG93biBieSB1c2VycyBidXQgbWVhbnMgc3BlY2lhbCBmb3IgcmVndWxhciBleHByZXNzaW9ucy5cblxuICAvLyA+IFRoZXJlIGFyZSAxMiBjaGFyYWN0ZXJzIHdpdGggc3BlY2lhbCBtZWFuaW5nczpcbiAgLy8gPiAtIHRoZSBiYWNrc2xhc2ggXFwsXG4gIC8vID4gLSB0aGUgY2FyZXQgXixcbiAgLy8gPiAtIHRoZSBkb2xsYXIgc2lnbiAkLFxuICAvLyA+IC0gdGhlIHBlcmlvZCBvciBkb3QgLixcbiAgLy8gPiAtIHRoZSB2ZXJ0aWNhbCBiYXIgb3IgcGlwZSBzeW1ib2wgfCxcbiAgLy8gPiAtIHRoZSBxdWVzdGlvbiBtYXJrID8sXG4gIC8vID4gLSB0aGUgYXN0ZXJpc2sgb3Igc3RhciAqLFxuICAvLyA+IC0gdGhlIHBsdXMgc2lnbiArLFxuICAvLyA+IC0gdGhlIG9wZW5pbmcgcGFyZW50aGVzaXMgKCxcbiAgLy8gPiAtIHRoZSBjbG9zaW5nIHBhcmVudGhlc2lzICksXG4gIC8vID4gLSBhbmQgdGhlIG9wZW5pbmcgc3F1YXJlIGJyYWNrZXQgWyxcbiAgLy8gPiAtIHRoZSBvcGVuaW5nIGN1cmx5IGJyYWNlIHssXG4gIC8vID4gVGhlc2Ugc3BlY2lhbCBjaGFyYWN0ZXJzIGFyZSBvZnRlbiBjYWxsZWQgXCJtZXRhY2hhcmFjdGVyc1wiLlxuICBbXG4gICAgL1tcXFxcJC58KisoKXteXS9nLFxuICAgIG1hdGNoID0+IGBcXFxcJHttYXRjaH1gXG4gIF0sXG5cbiAgW1xuICAgIC8vID4gYSBxdWVzdGlvbiBtYXJrICg/KSBtYXRjaGVzIGEgc2luZ2xlIGNoYXJhY3RlclxuICAgIC8oPyFcXFxcKVxcPy9nLFxuICAgICgpID0+ICdbXi9dJ1xuICBdLFxuXG4gIC8vIGxlYWRpbmcgc2xhc2hcbiAgW1xuXG4gICAgLy8gPiBBIGxlYWRpbmcgc2xhc2ggbWF0Y2hlcyB0aGUgYmVnaW5uaW5nIG9mIHRoZSBwYXRobmFtZS5cbiAgICAvLyA+IEZvciBleGFtcGxlLCBcIi8qLmNcIiBtYXRjaGVzIFwiY2F0LWZpbGUuY1wiIGJ1dCBub3QgXCJtb3ppbGxhLXNoYTEvc2hhMS5jXCIuXG4gICAgLy8gQSBsZWFkaW5nIHNsYXNoIG1hdGNoZXMgdGhlIGJlZ2lubmluZyBvZiB0aGUgcGF0aG5hbWVcbiAgICAvXlxcLy8sXG4gICAgKCkgPT4gJ14nXG4gIF0sXG5cbiAgLy8gcmVwbGFjZSBzcGVjaWFsIG1ldGFjaGFyYWN0ZXIgc2xhc2ggYWZ0ZXIgdGhlIGxlYWRpbmcgc2xhc2hcbiAgW1xuICAgIC9cXC8vZyxcbiAgICAoKSA9PiAnXFxcXC8nXG4gIF0sXG5cbiAgW1xuICAgIC8vID4gQSBsZWFkaW5nIFwiKipcIiBmb2xsb3dlZCBieSBhIHNsYXNoIG1lYW5zIG1hdGNoIGluIGFsbCBkaXJlY3Rvcmllcy5cbiAgICAvLyA+IEZvciBleGFtcGxlLCBcIioqL2Zvb1wiIG1hdGNoZXMgZmlsZSBvciBkaXJlY3RvcnkgXCJmb29cIiBhbnl3aGVyZSxcbiAgICAvLyA+IHRoZSBzYW1lIGFzIHBhdHRlcm4gXCJmb29cIi5cbiAgICAvLyA+IFwiKiovZm9vL2JhclwiIG1hdGNoZXMgZmlsZSBvciBkaXJlY3RvcnkgXCJiYXJcIiBhbnl3aGVyZSB0aGF0IGlzIGRpcmVjdGx5XG4gICAgLy8gPiAgIHVuZGVyIGRpcmVjdG9yeSBcImZvb1wiLlxuICAgIC8vIE5vdGljZSB0aGF0IHRoZSAnKidzIGhhdmUgYmVlbiByZXBsYWNlZCBhcyAnXFxcXConXG4gICAgL15cXF4qXFxcXFxcKlxcXFxcXCpcXFxcXFwvLyxcblxuICAgIC8vICcqKi9mb28nIDwtPiAnZm9vJ1xuICAgICgpID0+ICdeKD86LipcXFxcLyk/J1xuICBdLFxuXG4gIC8vIHN0YXJ0aW5nXG4gIFtcbiAgICAvLyB0aGVyZSB3aWxsIGJlIG5vIGxlYWRpbmcgJy8nXG4gICAgLy8gICAod2hpY2ggaGFzIGJlZW4gcmVwbGFjZWQgYnkgc2VjdGlvbiBcImxlYWRpbmcgc2xhc2hcIilcbiAgICAvLyBJZiBzdGFydHMgd2l0aCAnKionLCBhZGRpbmcgYSAnXicgdG8gdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiBhbHNvIHdvcmtzXG4gICAgL14oPz1bXl5dKS8sXG4gICAgZnVuY3Rpb24gc3RhcnRpbmdSZXBsYWNlciAoKSB7XG4gICAgICAvLyBJZiBoYXMgYSBzbGFzaCBgL2AgYXQgdGhlIGJlZ2lubmluZyBvciBtaWRkbGVcbiAgICAgIHJldHVybiAhL1xcLyg/ISQpLy50ZXN0KHRoaXMpXG4gICAgICAgIC8vID4gUHJpb3IgdG8gMi4yMi4xXG4gICAgICAgIC8vID4gSWYgdGhlIHBhdHRlcm4gZG9lcyBub3QgY29udGFpbiBhIHNsYXNoIC8sXG4gICAgICAgIC8vID4gICBHaXQgdHJlYXRzIGl0IGFzIGEgc2hlbGwgZ2xvYiBwYXR0ZXJuXG4gICAgICAgIC8vIEFjdHVhbGx5LCBpZiB0aGVyZSBpcyBvbmx5IGEgdHJhaWxpbmcgc2xhc2gsXG4gICAgICAgIC8vICAgZ2l0IGFsc28gdHJlYXRzIGl0IGFzIGEgc2hlbGwgZ2xvYiBwYXR0ZXJuXG5cbiAgICAgICAgLy8gQWZ0ZXIgMi4yMi4xIChjb21wYXRpYmxlIGJ1dCBjbGVhcmVyKVxuICAgICAgICAvLyA+IElmIHRoZXJlIGlzIGEgc2VwYXJhdG9yIGF0IHRoZSBiZWdpbm5pbmcgb3IgbWlkZGxlIChvciBib3RoKVxuICAgICAgICAvLyA+IG9mIHRoZSBwYXR0ZXJuLCB0aGVuIHRoZSBwYXR0ZXJuIGlzIHJlbGF0aXZlIHRvIHRoZSBkaXJlY3RvcnlcbiAgICAgICAgLy8gPiBsZXZlbCBvZiB0aGUgcGFydGljdWxhciAuZ2l0aWdub3JlIGZpbGUgaXRzZWxmLlxuICAgICAgICAvLyA+IE90aGVyd2lzZSB0aGUgcGF0dGVybiBtYXkgYWxzbyBtYXRjaCBhdCBhbnkgbGV2ZWwgYmVsb3dcbiAgICAgICAgLy8gPiB0aGUgLmdpdGlnbm9yZSBsZXZlbC5cbiAgICAgICAgPyAnKD86XnxcXFxcLyknXG5cbiAgICAgICAgLy8gPiBPdGhlcndpc2UsIEdpdCB0cmVhdHMgdGhlIHBhdHRlcm4gYXMgYSBzaGVsbCBnbG9iIHN1aXRhYmxlIGZvclxuICAgICAgICAvLyA+ICAgY29uc3VtcHRpb24gYnkgZm5tYXRjaCgzKVxuICAgICAgICA6ICdeJ1xuICAgIH1cbiAgXSxcblxuICAvLyB0d28gZ2xvYnN0YXJzXG4gIFtcbiAgICAvLyBVc2UgbG9va2FoZWFkIGFzc2VydGlvbnMgc28gdGhhdCB3ZSBjb3VsZCBtYXRjaCBtb3JlIHRoYW4gb25lIGAnLyoqJ2BcbiAgICAvXFxcXFxcL1xcXFxcXCpcXFxcXFwqKD89XFxcXFxcL3wkKS9nLFxuXG4gICAgLy8gWmVybywgb25lIG9yIHNldmVyYWwgZGlyZWN0b3JpZXNcbiAgICAvLyBzaG91bGQgbm90IHVzZSAnKicsIG9yIGl0IHdpbGwgYmUgcmVwbGFjZWQgYnkgdGhlIG5leHQgcmVwbGFjZXJcblxuICAgIC8vIENoZWNrIGlmIGl0IGlzIG5vdCB0aGUgbGFzdCBgJy8qKidgXG4gICAgKF8sIGluZGV4LCBzdHIpID0+IGluZGV4ICsgNiA8IHN0ci5sZW5ndGhcblxuICAgICAgLy8gY2FzZTogLyoqL1xuICAgICAgLy8gPiBBIHNsYXNoIGZvbGxvd2VkIGJ5IHR3byBjb25zZWN1dGl2ZSBhc3Rlcmlza3MgdGhlbiBhIHNsYXNoIG1hdGNoZXNcbiAgICAgIC8vID4gICB6ZXJvIG9yIG1vcmUgZGlyZWN0b3JpZXMuXG4gICAgICAvLyA+IEZvciBleGFtcGxlLCBcImEvKiovYlwiIG1hdGNoZXMgXCJhL2JcIiwgXCJhL3gvYlwiLCBcImEveC95L2JcIiBhbmQgc28gb24uXG4gICAgICAvLyAnLyoqLydcbiAgICAgID8gJyg/OlxcXFwvW15cXFxcL10rKSonXG5cbiAgICAgIC8vIGNhc2U6IC8qKlxuICAgICAgLy8gPiBBIHRyYWlsaW5nIGBcIi8qKlwiYCBtYXRjaGVzIGV2ZXJ5dGhpbmcgaW5zaWRlLlxuXG4gICAgICAvLyAjMjE6IGV2ZXJ5dGhpbmcgaW5zaWRlIGJ1dCBpdCBzaG91bGQgbm90IGluY2x1ZGUgdGhlIGN1cnJlbnQgZm9sZGVyXG4gICAgICA6ICdcXFxcLy4rJ1xuICBdLFxuXG4gIC8vIGludGVybWVkaWF0ZSB3aWxkY2FyZHNcbiAgW1xuICAgIC8vIE5ldmVyIHJlcGxhY2UgZXNjYXBlZCAnKidcbiAgICAvLyBpZ25vcmUgcnVsZSAnXFwqJyB3aWxsIG1hdGNoIHRoZSBwYXRoICcqJ1xuXG4gICAgLy8gJ2FiYy4qLycgLT4gZ29cbiAgICAvLyAnYWJjLionICAtPiBza2lwIHRoaXMgcnVsZVxuICAgIC8oXnxbXlxcXFxdKylcXFxcXFwqKD89LispL2csXG5cbiAgICAvLyAnKi5qcycgbWF0Y2hlcyAnLmpzJ1xuICAgIC8vICcqLmpzJyBkb2Vzbid0IG1hdGNoICdhYmMnXG4gICAgKF8sIHAxKSA9PiBgJHtwMX1bXlxcXFwvXSpgXG4gIF0sXG5cbiAgW1xuICAgIC8vIHVuZXNjYXBlLCByZXZlcnQgc3RlcCAzIGV4Y2VwdCBmb3IgYmFjayBzbGFzaFxuICAgIC8vIEZvciBleGFtcGxlLCBpZiBhIHVzZXIgZXNjYXBlIGEgJ1xcXFwqJyxcbiAgICAvLyBhZnRlciBzdGVwIDMsIHRoZSByZXN1bHQgd2lsbCBiZSAnXFxcXFxcXFxcXFxcKidcbiAgICAvXFxcXFxcXFxcXFxcKD89WyQufCorKCl7Xl0pL2csXG4gICAgKCkgPT4gRVNDQVBFXG4gIF0sXG5cbiAgW1xuICAgIC8vICdcXFxcXFxcXCcgLT4gJ1xcXFwnXG4gICAgL1xcXFxcXFxcL2csXG4gICAgKCkgPT4gRVNDQVBFXG4gIF0sXG5cbiAgW1xuICAgIC8vID4gVGhlIHJhbmdlIG5vdGF0aW9uLCBlLmcuIFthLXpBLVpdLFxuICAgIC8vID4gY2FuIGJlIHVzZWQgdG8gbWF0Y2ggb25lIG9mIHRoZSBjaGFyYWN0ZXJzIGluIGEgcmFuZ2UuXG5cbiAgICAvLyBgXFxgIGlzIGVzY2FwZWQgYnkgc3RlcCAzXG4gICAgLyhcXFxcKT9cXFsoW15cXF0vXSo/KShcXFxcKikoJHxcXF0pL2csXG4gICAgKG1hdGNoLCBsZWFkRXNjYXBlLCByYW5nZSwgZW5kRXNjYXBlLCBjbG9zZSkgPT4gbGVhZEVzY2FwZSA9PT0gRVNDQVBFXG4gICAgICAvLyAnXFxcXFtiYXJdJyAtPiAnXFxcXFxcXFxbYmFyXFxcXF0nXG4gICAgICA/IGBcXFxcWyR7cmFuZ2V9JHtjbGVhblJhbmdlQmFja1NsYXNoKGVuZEVzY2FwZSl9JHtjbG9zZX1gXG4gICAgICA6IGNsb3NlID09PSAnXSdcbiAgICAgICAgPyBlbmRFc2NhcGUubGVuZ3RoICUgMiA9PT0gMFxuICAgICAgICAgIC8vIEEgbm9ybWFsIGNhc2UsIGFuZCBpdCBpcyBhIHJhbmdlIG5vdGF0aW9uXG4gICAgICAgICAgLy8gJ1tiYXJdJ1xuICAgICAgICAgIC8vICdbYmFyXFxcXFxcXFxdJ1xuICAgICAgICAgID8gYFske3Nhbml0aXplUmFuZ2UocmFuZ2UpfSR7ZW5kRXNjYXBlfV1gXG4gICAgICAgICAgLy8gSW52YWxpZCByYW5nZSBub3RhdG9uXG4gICAgICAgICAgLy8gJ1tiYXJcXFxcXScgLT4gJ1tiYXJcXFxcXFxcXF0nXG4gICAgICAgICAgOiAnW10nXG4gICAgICAgIDogJ1tdJ1xuICBdLFxuXG4gIC8vIGVuZGluZ1xuICBbXG4gICAgLy8gJ2pzJyB3aWxsIG5vdCBtYXRjaCAnanMuJ1xuICAgIC8vICdhYicgd2lsbCBub3QgbWF0Y2ggJ2FiYydcbiAgICAvKD86W14qXSkkLyxcblxuICAgIC8vIFdURiFcbiAgICAvLyBodHRwczovL2dpdC1zY20uY29tL2RvY3MvZ2l0aWdub3JlXG4gICAgLy8gY2hhbmdlcyBpbiBbMi4yMi4xXShodHRwczovL2dpdC1zY20uY29tL2RvY3MvZ2l0aWdub3JlLzIuMjIuMSlcbiAgICAvLyB3aGljaCByZS1maXhlcyAjMjQsICMzOFxuXG4gICAgLy8gPiBJZiB0aGVyZSBpcyBhIHNlcGFyYXRvciBhdCB0aGUgZW5kIG9mIHRoZSBwYXR0ZXJuIHRoZW4gdGhlIHBhdHRlcm5cbiAgICAvLyA+IHdpbGwgb25seSBtYXRjaCBkaXJlY3Rvcmllcywgb3RoZXJ3aXNlIHRoZSBwYXR0ZXJuIGNhbiBtYXRjaCBib3RoXG4gICAgLy8gPiBmaWxlcyBhbmQgZGlyZWN0b3JpZXMuXG5cbiAgICAvLyAnanMqJyB3aWxsIG5vdCBtYXRjaCAnYS5qcydcbiAgICAvLyAnanMvJyB3aWxsIG5vdCBtYXRjaCAnYS5qcydcbiAgICAvLyAnanMnIHdpbGwgbWF0Y2ggJ2EuanMnIGFuZCAnYS5qcy8nXG4gICAgbWF0Y2ggPT4gL1xcLyQvLnRlc3QobWF0Y2gpXG4gICAgICAvLyBmb28vIHdpbGwgbm90IG1hdGNoICdmb28nXG4gICAgICA/IGAke21hdGNofSRgXG4gICAgICAvLyBmb28gbWF0Y2hlcyAnZm9vJyBhbmQgJ2Zvby8nXG4gICAgICA6IGAke21hdGNofSg/PSR8XFxcXC8kKWBcbiAgXSxcblxuICAvLyB0cmFpbGluZyB3aWxkY2FyZFxuICBbXG4gICAgLyhcXF58XFxcXFxcLyk/XFxcXFxcKiQvLFxuICAgIChfLCBwMSkgPT4ge1xuICAgICAgY29uc3QgcHJlZml4ID0gcDFcbiAgICAgICAgLy8gJ1xcXic6XG4gICAgICAgIC8vICcvKicgZG9lcyBub3QgbWF0Y2ggRU1QVFlcbiAgICAgICAgLy8gJy8qJyBkb2VzIG5vdCBtYXRjaCBldmVyeXRoaW5nXG5cbiAgICAgICAgLy8gJ1xcXFxcXC8nOlxuICAgICAgICAvLyAnYWJjLyonIGRvZXMgbm90IG1hdGNoICdhYmMvJ1xuICAgICAgICA/IGAke3AxfVteL10rYFxuXG4gICAgICAgIC8vICdhKicgbWF0Y2hlcyAnYSdcbiAgICAgICAgLy8gJ2EqJyBtYXRjaGVzICdhYSdcbiAgICAgICAgOiAnW14vXSonXG5cbiAgICAgIHJldHVybiBgJHtwcmVmaXh9KD89JHxcXFxcLyQpYFxuICAgIH1cbiAgXSxcbl1cblxuLy8gQSBzaW1wbGUgY2FjaGUsIGJlY2F1c2UgYW4gaWdub3JlIHJ1bGUgb25seSBoYXMgb25seSBvbmUgY2VydGFpbiBtZWFuaW5nXG5jb25zdCByZWdleENhY2hlID0gT2JqZWN0LmNyZWF0ZShudWxsKVxuXG4vLyBAcGFyYW0ge3BhdHRlcm59XG5jb25zdCBtYWtlUmVnZXggPSAocGF0dGVybiwgaWdub3JlQ2FzZSkgPT4ge1xuICBsZXQgc291cmNlID0gcmVnZXhDYWNoZVtwYXR0ZXJuXVxuXG4gIGlmICghc291cmNlKSB7XG4gICAgc291cmNlID0gUkVQTEFDRVJTLnJlZHVjZShcbiAgICAgIChwcmV2LCBjdXJyZW50KSA9PiBwcmV2LnJlcGxhY2UoY3VycmVudFswXSwgY3VycmVudFsxXS5iaW5kKHBhdHRlcm4pKSxcbiAgICAgIHBhdHRlcm5cbiAgICApXG4gICAgcmVnZXhDYWNoZVtwYXR0ZXJuXSA9IHNvdXJjZVxuICB9XG5cbiAgcmV0dXJuIGlnbm9yZUNhc2VcbiAgICA/IG5ldyBSZWdFeHAoc291cmNlLCAnaScpXG4gICAgOiBuZXcgUmVnRXhwKHNvdXJjZSlcbn1cblxuY29uc3QgaXNTdHJpbmcgPSBzdWJqZWN0ID0+IHR5cGVvZiBzdWJqZWN0ID09PSAnc3RyaW5nJ1xuXG4vLyA+IEEgYmxhbmsgbGluZSBtYXRjaGVzIG5vIGZpbGVzLCBzbyBpdCBjYW4gc2VydmUgYXMgYSBzZXBhcmF0b3IgZm9yIHJlYWRhYmlsaXR5LlxuY29uc3QgY2hlY2tQYXR0ZXJuID0gcGF0dGVybiA9PiBwYXR0ZXJuXG4gICYmIGlzU3RyaW5nKHBhdHRlcm4pXG4gICYmICFSRUdFWF9URVNUX0JMQU5LX0xJTkUudGVzdChwYXR0ZXJuKVxuXG4gIC8vID4gQSBsaW5lIHN0YXJ0aW5nIHdpdGggIyBzZXJ2ZXMgYXMgYSBjb21tZW50LlxuICAmJiBwYXR0ZXJuLmluZGV4T2YoJyMnKSAhPT0gMFxuXG5jb25zdCBzcGxpdFBhdHRlcm4gPSBwYXR0ZXJuID0+IHBhdHRlcm4uc3BsaXQoUkVHRVhfU1BMSVRBTExfQ1JMRilcblxuY2xhc3MgSWdub3JlUnVsZSB7XG4gIGNvbnN0cnVjdG9yIChcbiAgICBvcmlnaW4sXG4gICAgcGF0dGVybixcbiAgICBuZWdhdGl2ZSxcbiAgICByZWdleFxuICApIHtcbiAgICB0aGlzLm9yaWdpbiA9IG9yaWdpblxuICAgIHRoaXMucGF0dGVybiA9IHBhdHRlcm5cbiAgICB0aGlzLm5lZ2F0aXZlID0gbmVnYXRpdmVcbiAgICB0aGlzLnJlZ2V4ID0gcmVnZXhcbiAgfVxufVxuXG5jb25zdCBjcmVhdGVSdWxlID0gKHBhdHRlcm4sIGlnbm9yZUNhc2UpID0+IHtcbiAgY29uc3Qgb3JpZ2luID0gcGF0dGVyblxuICBsZXQgbmVnYXRpdmUgPSBmYWxzZVxuXG4gIC8vID4gQW4gb3B0aW9uYWwgcHJlZml4IFwiIVwiIHdoaWNoIG5lZ2F0ZXMgdGhlIHBhdHRlcm47XG4gIGlmIChwYXR0ZXJuLmluZGV4T2YoJyEnKSA9PT0gMCkge1xuICAgIG5lZ2F0aXZlID0gdHJ1ZVxuICAgIHBhdHRlcm4gPSBwYXR0ZXJuLnN1YnN0cigxKVxuICB9XG5cbiAgcGF0dGVybiA9IHBhdHRlcm5cbiAgLy8gPiBQdXQgYSBiYWNrc2xhc2ggKFwiXFxcIikgaW4gZnJvbnQgb2YgdGhlIGZpcnN0IFwiIVwiIGZvciBwYXR0ZXJucyB0aGF0XG4gIC8vID4gICBiZWdpbiB3aXRoIGEgbGl0ZXJhbCBcIiFcIiwgZm9yIGV4YW1wbGUsIGBcIlxcIWltcG9ydGFudCEudHh0XCJgLlxuICAucmVwbGFjZShSRUdFWF9SRVBMQUNFX0xFQURJTkdfRVhDQVBFRF9FWENMQU1BVElPTiwgJyEnKVxuICAvLyA+IFB1dCBhIGJhY2tzbGFzaCAoXCJcXFwiKSBpbiBmcm9udCBvZiB0aGUgZmlyc3QgaGFzaCBmb3IgcGF0dGVybnMgdGhhdFxuICAvLyA+ICAgYmVnaW4gd2l0aCBhIGhhc2guXG4gIC5yZXBsYWNlKFJFR0VYX1JFUExBQ0VfTEVBRElOR19FWENBUEVEX0hBU0gsICcjJylcblxuICBjb25zdCByZWdleCA9IG1ha2VSZWdleChwYXR0ZXJuLCBpZ25vcmVDYXNlKVxuXG4gIHJldHVybiBuZXcgSWdub3JlUnVsZShcbiAgICBvcmlnaW4sXG4gICAgcGF0dGVybixcbiAgICBuZWdhdGl2ZSxcbiAgICByZWdleFxuICApXG59XG5cbmNvbnN0IHRocm93RXJyb3IgPSAobWVzc2FnZSwgQ3RvcikgPT4ge1xuICB0aHJvdyBuZXcgQ3RvcihtZXNzYWdlKVxufVxuXG5jb25zdCBjaGVja1BhdGggPSAocGF0aCwgb3JpZ2luYWxQYXRoLCBkb1Rocm93KSA9PiB7XG4gIGlmICghaXNTdHJpbmcocGF0aCkpIHtcbiAgICByZXR1cm4gZG9UaHJvdyhcbiAgICAgIGBwYXRoIG11c3QgYmUgYSBzdHJpbmcsIGJ1dCBnb3QgXFxgJHtvcmlnaW5hbFBhdGh9XFxgYCxcbiAgICAgIFR5cGVFcnJvclxuICAgIClcbiAgfVxuXG4gIC8vIFdlIGRvbid0IGtub3cgaWYgd2Ugc2hvdWxkIGlnbm9yZSBFTVBUWSwgc28gdGhyb3dcbiAgaWYgKCFwYXRoKSB7XG4gICAgcmV0dXJuIGRvVGhyb3coYHBhdGggbXVzdCBub3QgYmUgZW1wdHlgLCBUeXBlRXJyb3IpXG4gIH1cblxuICAvLyBDaGVjayBpZiBpdCBpcyBhIHJlbGF0aXZlIHBhdGhcbiAgaWYgKGNoZWNrUGF0aC5pc05vdFJlbGF0aXZlKHBhdGgpKSB7XG4gICAgY29uc3QgciA9ICdgcGF0aC5yZWxhdGl2ZSgpYGQnXG4gICAgcmV0dXJuIGRvVGhyb3coXG4gICAgICBgcGF0aCBzaG91bGQgYmUgYSAke3J9IHN0cmluZywgYnV0IGdvdCBcIiR7b3JpZ2luYWxQYXRofVwiYCxcbiAgICAgIFJhbmdlRXJyb3JcbiAgICApXG4gIH1cblxuICByZXR1cm4gdHJ1ZVxufVxuXG5jb25zdCBpc05vdFJlbGF0aXZlID0gcGF0aCA9PiBSRUdFWF9URVNUX0lOVkFMSURfUEFUSC50ZXN0KHBhdGgpXG5cbmNoZWNrUGF0aC5pc05vdFJlbGF0aXZlID0gaXNOb3RSZWxhdGl2ZVxuY2hlY2tQYXRoLmNvbnZlcnQgPSBwID0+IHBcblxuY2xhc3MgSWdub3JlIHtcbiAgY29uc3RydWN0b3IgKHtcbiAgICBpZ25vcmVjYXNlID0gdHJ1ZSxcbiAgICBpZ25vcmVDYXNlID0gaWdub3JlY2FzZSxcbiAgICBhbGxvd1JlbGF0aXZlUGF0aHMgPSBmYWxzZVxuICB9ID0ge30pIHtcbiAgICBkZWZpbmUodGhpcywgS0VZX0lHTk9SRSwgdHJ1ZSlcblxuICAgIHRoaXMuX3J1bGVzID0gW11cbiAgICB0aGlzLl9pZ25vcmVDYXNlID0gaWdub3JlQ2FzZVxuICAgIHRoaXMuX2FsbG93UmVsYXRpdmVQYXRocyA9IGFsbG93UmVsYXRpdmVQYXRoc1xuICAgIHRoaXMuX2luaXRDYWNoZSgpXG4gIH1cblxuICBfaW5pdENhY2hlICgpIHtcbiAgICB0aGlzLl9pZ25vcmVDYWNoZSA9IE9iamVjdC5jcmVhdGUobnVsbClcbiAgICB0aGlzLl90ZXN0Q2FjaGUgPSBPYmplY3QuY3JlYXRlKG51bGwpXG4gIH1cblxuICBfYWRkUGF0dGVybiAocGF0dGVybikge1xuICAgIC8vICMzMlxuICAgIGlmIChwYXR0ZXJuICYmIHBhdHRlcm5bS0VZX0lHTk9SRV0pIHtcbiAgICAgIHRoaXMuX3J1bGVzID0gdGhpcy5fcnVsZXMuY29uY2F0KHBhdHRlcm4uX3J1bGVzKVxuICAgICAgdGhpcy5fYWRkZWQgPSB0cnVlXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAoY2hlY2tQYXR0ZXJuKHBhdHRlcm4pKSB7XG4gICAgICBjb25zdCBydWxlID0gY3JlYXRlUnVsZShwYXR0ZXJuLCB0aGlzLl9pZ25vcmVDYXNlKVxuICAgICAgdGhpcy5fYWRkZWQgPSB0cnVlXG4gICAgICB0aGlzLl9ydWxlcy5wdXNoKHJ1bGUpXG4gICAgfVxuICB9XG5cbiAgLy8gQHBhcmFtIHtBcnJheTxzdHJpbmc+IHwgc3RyaW5nIHwgSWdub3JlfSBwYXR0ZXJuXG4gIGFkZCAocGF0dGVybikge1xuICAgIHRoaXMuX2FkZGVkID0gZmFsc2VcblxuICAgIG1ha2VBcnJheShcbiAgICAgIGlzU3RyaW5nKHBhdHRlcm4pXG4gICAgICAgID8gc3BsaXRQYXR0ZXJuKHBhdHRlcm4pXG4gICAgICAgIDogcGF0dGVyblxuICAgICkuZm9yRWFjaCh0aGlzLl9hZGRQYXR0ZXJuLCB0aGlzKVxuXG4gICAgLy8gU29tZSBydWxlcyBoYXZlIGp1c3QgYWRkZWQgdG8gdGhlIGlnbm9yZSxcbiAgICAvLyBtYWtpbmcgdGhlIGJlaGF2aW9yIGNoYW5nZWQuXG4gICAgaWYgKHRoaXMuX2FkZGVkKSB7XG4gICAgICB0aGlzLl9pbml0Q2FjaGUoKVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICAvLyBsZWdhY3lcbiAgYWRkUGF0dGVybiAocGF0dGVybikge1xuICAgIHJldHVybiB0aGlzLmFkZChwYXR0ZXJuKVxuICB9XG5cbiAgLy8gICAgICAgICAgfCAgICAgICAgICAgaWdub3JlZCA6IHVuaWdub3JlZFxuICAvLyBuZWdhdGl2ZSB8ICAgMDowICAgfCAgIDA6MSAgIHwgICAxOjAgICB8ICAgMToxXG4gIC8vIC0tLS0tLS0tIHwgLS0tLS0tLSB8IC0tLS0tLS0gfCAtLS0tLS0tIHwgLS0tLS0tLS1cbiAgLy8gICAgIDAgICAgfCAgVEVTVCAgIHwgIFRFU1QgICB8ICBTS0lQICAgfCAgICBYXG4gIC8vICAgICAxICAgIHwgIFRFU1RJRiB8ICBTS0lQICAgfCAgVEVTVCAgIHwgICAgWFxuXG4gIC8vIC0gU0tJUDogYWx3YXlzIHNraXBcbiAgLy8gLSBURVNUOiBhbHdheXMgdGVzdFxuICAvLyAtIFRFU1RJRjogb25seSB0ZXN0IGlmIGNoZWNrVW5pZ25vcmVkXG4gIC8vIC0gWDogdGhhdCBuZXZlciBoYXBwZW5cblxuICAvLyBAcGFyYW0ge2Jvb2xlYW59IHdoZXRoZXIgc2hvdWxkIGNoZWNrIGlmIHRoZSBwYXRoIGlzIHVuaWdub3JlZCxcbiAgLy8gICBzZXR0aW5nIGBjaGVja1VuaWdub3JlZGAgdG8gYGZhbHNlYCBjb3VsZCByZWR1Y2UgYWRkaXRpb25hbFxuICAvLyAgIHBhdGggbWF0Y2hpbmcuXG5cbiAgLy8gQHJldHVybnMge1Rlc3RSZXN1bHR9IHRydWUgaWYgYSBmaWxlIGlzIGlnbm9yZWRcbiAgX3Rlc3RPbmUgKHBhdGgsIGNoZWNrVW5pZ25vcmVkKSB7XG4gICAgbGV0IGlnbm9yZWQgPSBmYWxzZVxuICAgIGxldCB1bmlnbm9yZWQgPSBmYWxzZVxuXG4gICAgdGhpcy5fcnVsZXMuZm9yRWFjaChydWxlID0+IHtcbiAgICAgIGNvbnN0IHtuZWdhdGl2ZX0gPSBydWxlXG4gICAgICBpZiAoXG4gICAgICAgIHVuaWdub3JlZCA9PT0gbmVnYXRpdmUgJiYgaWdub3JlZCAhPT0gdW5pZ25vcmVkXG4gICAgICAgIHx8IG5lZ2F0aXZlICYmICFpZ25vcmVkICYmICF1bmlnbm9yZWQgJiYgIWNoZWNrVW5pZ25vcmVkXG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1hdGNoZWQgPSBydWxlLnJlZ2V4LnRlc3QocGF0aClcblxuICAgICAgaWYgKG1hdGNoZWQpIHtcbiAgICAgICAgaWdub3JlZCA9ICFuZWdhdGl2ZVxuICAgICAgICB1bmlnbm9yZWQgPSBuZWdhdGl2ZVxuICAgICAgfVxuICAgIH0pXG5cbiAgICByZXR1cm4ge1xuICAgICAgaWdub3JlZCxcbiAgICAgIHVuaWdub3JlZFxuICAgIH1cbiAgfVxuXG4gIC8vIEByZXR1cm5zIHtUZXN0UmVzdWx0fVxuICBfdGVzdCAob3JpZ2luYWxQYXRoLCBjYWNoZSwgY2hlY2tVbmlnbm9yZWQsIHNsaWNlcykge1xuICAgIGNvbnN0IHBhdGggPSBvcmlnaW5hbFBhdGhcbiAgICAgIC8vIFN1cHBvcnRzIG51bGxhYmxlIHBhdGhcbiAgICAgICYmIGNoZWNrUGF0aC5jb252ZXJ0KG9yaWdpbmFsUGF0aClcblxuICAgIGNoZWNrUGF0aChcbiAgICAgIHBhdGgsXG4gICAgICBvcmlnaW5hbFBhdGgsXG4gICAgICB0aGlzLl9hbGxvd1JlbGF0aXZlUGF0aHNcbiAgICAgICAgPyBSRVRVUk5fRkFMU0VcbiAgICAgICAgOiB0aHJvd0Vycm9yXG4gICAgKVxuXG4gICAgcmV0dXJuIHRoaXMuX3QocGF0aCwgY2FjaGUsIGNoZWNrVW5pZ25vcmVkLCBzbGljZXMpXG4gIH1cblxuICBfdCAocGF0aCwgY2FjaGUsIGNoZWNrVW5pZ25vcmVkLCBzbGljZXMpIHtcbiAgICBpZiAocGF0aCBpbiBjYWNoZSkge1xuICAgICAgcmV0dXJuIGNhY2hlW3BhdGhdXG4gICAgfVxuXG4gICAgaWYgKCFzbGljZXMpIHtcbiAgICAgIC8vIHBhdGgvdG8vYS5qc1xuICAgICAgLy8gWydwYXRoJywgJ3RvJywgJ2EuanMnXVxuICAgICAgc2xpY2VzID0gcGF0aC5zcGxpdChTTEFTSClcbiAgICB9XG5cbiAgICBzbGljZXMucG9wKClcblxuICAgIC8vIElmIHRoZSBwYXRoIGhhcyBubyBwYXJlbnQgZGlyZWN0b3J5LCBqdXN0IHRlc3QgaXRcbiAgICBpZiAoIXNsaWNlcy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBjYWNoZVtwYXRoXSA9IHRoaXMuX3Rlc3RPbmUocGF0aCwgY2hlY2tVbmlnbm9yZWQpXG4gICAgfVxuXG4gICAgY29uc3QgcGFyZW50ID0gdGhpcy5fdChcbiAgICAgIHNsaWNlcy5qb2luKFNMQVNIKSArIFNMQVNILFxuICAgICAgY2FjaGUsXG4gICAgICBjaGVja1VuaWdub3JlZCxcbiAgICAgIHNsaWNlc1xuICAgIClcblxuICAgIC8vIElmIHRoZSBwYXRoIGNvbnRhaW5zIGEgcGFyZW50IGRpcmVjdG9yeSwgY2hlY2sgdGhlIHBhcmVudCBmaXJzdFxuICAgIHJldHVybiBjYWNoZVtwYXRoXSA9IHBhcmVudC5pZ25vcmVkXG4gICAgICAvLyA+IEl0IGlzIG5vdCBwb3NzaWJsZSB0byByZS1pbmNsdWRlIGEgZmlsZSBpZiBhIHBhcmVudCBkaXJlY3Rvcnkgb2ZcbiAgICAgIC8vID4gICB0aGF0IGZpbGUgaXMgZXhjbHVkZWQuXG4gICAgICA/IHBhcmVudFxuICAgICAgOiB0aGlzLl90ZXN0T25lKHBhdGgsIGNoZWNrVW5pZ25vcmVkKVxuICB9XG5cbiAgaWdub3JlcyAocGF0aCkge1xuICAgIHJldHVybiB0aGlzLl90ZXN0KHBhdGgsIHRoaXMuX2lnbm9yZUNhY2hlLCBmYWxzZSkuaWdub3JlZFxuICB9XG5cbiAgY3JlYXRlRmlsdGVyICgpIHtcbiAgICByZXR1cm4gcGF0aCA9PiAhdGhpcy5pZ25vcmVzKHBhdGgpXG4gIH1cblxuICBmaWx0ZXIgKHBhdGhzKSB7XG4gICAgcmV0dXJuIG1ha2VBcnJheShwYXRocykuZmlsdGVyKHRoaXMuY3JlYXRlRmlsdGVyKCkpXG4gIH1cblxuICAvLyBAcmV0dXJucyB7VGVzdFJlc3VsdH1cbiAgdGVzdCAocGF0aCkge1xuICAgIHJldHVybiB0aGlzLl90ZXN0KHBhdGgsIHRoaXMuX3Rlc3RDYWNoZSwgdHJ1ZSlcbiAgfVxufVxuXG5jb25zdCBmYWN0b3J5ID0gb3B0aW9ucyA9PiBuZXcgSWdub3JlKG9wdGlvbnMpXG5cbmNvbnN0IGlzUGF0aFZhbGlkID0gcGF0aCA9PlxuICBjaGVja1BhdGgocGF0aCAmJiBjaGVja1BhdGguY29udmVydChwYXRoKSwgcGF0aCwgUkVUVVJOX0ZBTFNFKVxuXG5mYWN0b3J5LmlzUGF0aFZhbGlkID0gaXNQYXRoVmFsaWRcblxuLy8gRml4ZXMgdHlwZXNjcmlwdFxuZmFjdG9yeS5kZWZhdWx0ID0gZmFjdG9yeVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnlcblxuLy8gV2luZG93c1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8qIGlzdGFuYnVsIGlnbm9yZSBpZiAgKi9cbmlmIChcbiAgLy8gRGV0ZWN0IGBwcm9jZXNzYCBzbyB0aGF0IGl0IGNhbiBydW4gaW4gYnJvd3NlcnMuXG4gIHR5cGVvZiBwcm9jZXNzICE9PSAndW5kZWZpbmVkJ1xuICAmJiAoXG4gICAgcHJvY2Vzcy5lbnYgJiYgcHJvY2Vzcy5lbnYuSUdOT1JFX1RFU1RfV0lOMzJcbiAgICB8fCBwcm9jZXNzLnBsYXRmb3JtID09PSAnd2luMzInXG4gIClcbikge1xuICAvKiBlc2xpbnQgbm8tY29udHJvbC1yZWdleDogXCJvZmZcIiAqL1xuICBjb25zdCBtYWtlUG9zaXggPSBzdHIgPT4gL15cXFxcXFxcXFxcP1xcXFwvLnRlc3Qoc3RyKVxuICB8fCAvW1wiPD58XFx1MDAwMC1cXHUwMDFGXSsvdS50ZXN0KHN0cilcbiAgICA/IHN0clxuICAgIDogc3RyLnJlcGxhY2UoL1xcXFwvZywgJy8nKVxuXG4gIGNoZWNrUGF0aC5jb252ZXJ0ID0gbWFrZVBvc2l4XG5cbiAgLy8gJ0M6XFxcXGZvbycgICAgIDwtICdDOlxcXFxmb28nIGhhcyBiZWVuIGNvbnZlcnRlZCB0byAnQzovJ1xuICAvLyAnZDpcXFxcZm9vJ1xuICBjb25zdCBSRUdJWF9JU19XSU5ET1dTX1BBVEhfQUJTT0xVVEUgPSAvXlthLXpdOlxcLy9pXG4gIGNoZWNrUGF0aC5pc05vdFJlbGF0aXZlID0gcGF0aCA9PlxuICAgIFJFR0lYX0lTX1dJTkRPV1NfUEFUSF9BQlNPTFVURS50ZXN0KHBhdGgpXG4gICAgfHwgaXNOb3RSZWxhdGl2ZShwYXRoKVxufVxuIiwgIid1c2Ugc3RyaWN0Jztcbm1vZHVsZS5leHBvcnRzID0gcGF0aCA9PiB7XG5cdGNvbnN0IGlzRXh0ZW5kZWRMZW5ndGhQYXRoID0gL15cXFxcXFxcXFxcP1xcXFwvLnRlc3QocGF0aCk7XG5cdGNvbnN0IGhhc05vbkFzY2lpID0gL1teXFx1MDAwMC1cXHUwMDgwXSsvLnRlc3QocGF0aCk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tY29udHJvbC1yZWdleFxuXG5cdGlmIChpc0V4dGVuZGVkTGVuZ3RoUGF0aCB8fCBoYXNOb25Bc2NpaSkge1xuXHRcdHJldHVybiBwYXRoO1xuXHR9XG5cblx0cmV0dXJuIHBhdGgucmVwbGFjZSgvXFxcXC9nLCAnLycpO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG5jb25zdCB7cHJvbWlzaWZ5fSA9IHJlcXVpcmUoJ3V0aWwnKTtcbmNvbnN0IGZzID0gcmVxdWlyZSgnZnMnKTtcbmNvbnN0IHBhdGggPSByZXF1aXJlKCdwYXRoJyk7XG5jb25zdCBmYXN0R2xvYiA9IHJlcXVpcmUoJ2Zhc3QtZ2xvYicpO1xuY29uc3QgZ2l0SWdub3JlID0gcmVxdWlyZSgnaWdub3JlJyk7XG5jb25zdCBzbGFzaCA9IHJlcXVpcmUoJ3NsYXNoJyk7XG5cbmNvbnN0IERFRkFVTFRfSUdOT1JFID0gW1xuXHQnKiovbm9kZV9tb2R1bGVzLyoqJyxcblx0JyoqL2Zsb3ctdHlwZWQvKionLFxuXHQnKiovY292ZXJhZ2UvKionLFxuXHQnKiovLmdpdCdcbl07XG5cbmNvbnN0IHJlYWRGaWxlUCA9IHByb21pc2lmeShmcy5yZWFkRmlsZSk7XG5cbmNvbnN0IG1hcEdpdElnbm9yZVBhdHRlcm5UbyA9IGJhc2UgPT4gaWdub3JlID0+IHtcblx0aWYgKGlnbm9yZS5zdGFydHNXaXRoKCchJykpIHtcblx0XHRyZXR1cm4gJyEnICsgcGF0aC5wb3NpeC5qb2luKGJhc2UsIGlnbm9yZS5zbGljZSgxKSk7XG5cdH1cblxuXHRyZXR1cm4gcGF0aC5wb3NpeC5qb2luKGJhc2UsIGlnbm9yZSk7XG59O1xuXG5jb25zdCBwYXJzZUdpdElnbm9yZSA9IChjb250ZW50LCBvcHRpb25zKSA9PiB7XG5cdGNvbnN0IGJhc2UgPSBzbGFzaChwYXRoLnJlbGF0aXZlKG9wdGlvbnMuY3dkLCBwYXRoLmRpcm5hbWUob3B0aW9ucy5maWxlTmFtZSkpKTtcblxuXHRyZXR1cm4gY29udGVudFxuXHRcdC5zcGxpdCgvXFxyP1xcbi8pXG5cdFx0LmZpbHRlcihCb29sZWFuKVxuXHRcdC5maWx0ZXIobGluZSA9PiAhbGluZS5zdGFydHNXaXRoKCcjJykpXG5cdFx0Lm1hcChtYXBHaXRJZ25vcmVQYXR0ZXJuVG8oYmFzZSkpO1xufTtcblxuY29uc3QgcmVkdWNlSWdub3JlID0gZmlsZXMgPT4ge1xuXHRjb25zdCBpZ25vcmVzID0gZ2l0SWdub3JlKCk7XG5cdGZvciAoY29uc3QgZmlsZSBvZiBmaWxlcykge1xuXHRcdGlnbm9yZXMuYWRkKHBhcnNlR2l0SWdub3JlKGZpbGUuY29udGVudCwge1xuXHRcdFx0Y3dkOiBmaWxlLmN3ZCxcblx0XHRcdGZpbGVOYW1lOiBmaWxlLmZpbGVQYXRoXG5cdFx0fSkpO1xuXHR9XG5cblx0cmV0dXJuIGlnbm9yZXM7XG59O1xuXG5jb25zdCBlbnN1cmVBYnNvbHV0ZVBhdGhGb3JDd2QgPSAoY3dkLCBwKSA9PiB7XG5cdGN3ZCA9IHNsYXNoKGN3ZCk7XG5cdGlmIChwYXRoLmlzQWJzb2x1dGUocCkpIHtcblx0XHRpZiAoc2xhc2gocCkuc3RhcnRzV2l0aChjd2QpKSB7XG5cdFx0XHRyZXR1cm4gcDtcblx0XHR9XG5cblx0XHR0aHJvdyBuZXcgRXJyb3IoYFBhdGggJHtwfSBpcyBub3QgaW4gY3dkICR7Y3dkfWApO1xuXHR9XG5cblx0cmV0dXJuIHBhdGguam9pbihjd2QsIHApO1xufTtcblxuY29uc3QgZ2V0SXNJZ25vcmVkUHJlZGVjYXRlID0gKGlnbm9yZXMsIGN3ZCkgPT4ge1xuXHRyZXR1cm4gcCA9PiBpZ25vcmVzLmlnbm9yZXMoc2xhc2gocGF0aC5yZWxhdGl2ZShjd2QsIGVuc3VyZUFic29sdXRlUGF0aEZvckN3ZChjd2QsIHAucGF0aCB8fCBwKSkpKTtcbn07XG5cbmNvbnN0IGdldEZpbGUgPSBhc3luYyAoZmlsZSwgY3dkKSA9PiB7XG5cdGNvbnN0IGZpbGVQYXRoID0gcGF0aC5qb2luKGN3ZCwgZmlsZSk7XG5cdGNvbnN0IGNvbnRlbnQgPSBhd2FpdCByZWFkRmlsZVAoZmlsZVBhdGgsICd1dGY4Jyk7XG5cblx0cmV0dXJuIHtcblx0XHRjd2QsXG5cdFx0ZmlsZVBhdGgsXG5cdFx0Y29udGVudFxuXHR9O1xufTtcblxuY29uc3QgZ2V0RmlsZVN5bmMgPSAoZmlsZSwgY3dkKSA9PiB7XG5cdGNvbnN0IGZpbGVQYXRoID0gcGF0aC5qb2luKGN3ZCwgZmlsZSk7XG5cdGNvbnN0IGNvbnRlbnQgPSBmcy5yZWFkRmlsZVN5bmMoZmlsZVBhdGgsICd1dGY4Jyk7XG5cblx0cmV0dXJuIHtcblx0XHRjd2QsXG5cdFx0ZmlsZVBhdGgsXG5cdFx0Y29udGVudFxuXHR9O1xufTtcblxuY29uc3Qgbm9ybWFsaXplT3B0aW9ucyA9ICh7XG5cdGlnbm9yZSA9IFtdLFxuXHRjd2QgPSBzbGFzaChwcm9jZXNzLmN3ZCgpKVxufSA9IHt9KSA9PiB7XG5cdHJldHVybiB7aWdub3JlLCBjd2R9O1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBhc3luYyBvcHRpb25zID0+IHtcblx0b3B0aW9ucyA9IG5vcm1hbGl6ZU9wdGlvbnMob3B0aW9ucyk7XG5cblx0Y29uc3QgcGF0aHMgPSBhd2FpdCBmYXN0R2xvYignKiovLmdpdGlnbm9yZScsIHtcblx0XHRpZ25vcmU6IERFRkFVTFRfSUdOT1JFLmNvbmNhdChvcHRpb25zLmlnbm9yZSksXG5cdFx0Y3dkOiBvcHRpb25zLmN3ZFxuXHR9KTtcblxuXHRjb25zdCBmaWxlcyA9IGF3YWl0IFByb21pc2UuYWxsKHBhdGhzLm1hcChmaWxlID0+IGdldEZpbGUoZmlsZSwgb3B0aW9ucy5jd2QpKSk7XG5cdGNvbnN0IGlnbm9yZXMgPSByZWR1Y2VJZ25vcmUoZmlsZXMpO1xuXG5cdHJldHVybiBnZXRJc0lnbm9yZWRQcmVkZWNhdGUoaWdub3Jlcywgb3B0aW9ucy5jd2QpO1xufTtcblxubW9kdWxlLmV4cG9ydHMuc3luYyA9IG9wdGlvbnMgPT4ge1xuXHRvcHRpb25zID0gbm9ybWFsaXplT3B0aW9ucyhvcHRpb25zKTtcblxuXHRjb25zdCBwYXRocyA9IGZhc3RHbG9iLnN5bmMoJyoqLy5naXRpZ25vcmUnLCB7XG5cdFx0aWdub3JlOiBERUZBVUxUX0lHTk9SRS5jb25jYXQob3B0aW9ucy5pZ25vcmUpLFxuXHRcdGN3ZDogb3B0aW9ucy5jd2Rcblx0fSk7XG5cblx0Y29uc3QgZmlsZXMgPSBwYXRocy5tYXAoZmlsZSA9PiBnZXRGaWxlU3luYyhmaWxlLCBvcHRpb25zLmN3ZCkpO1xuXHRjb25zdCBpZ25vcmVzID0gcmVkdWNlSWdub3JlKGZpbGVzKTtcblxuXHRyZXR1cm4gZ2V0SXNJZ25vcmVkUHJlZGVjYXRlKGlnbm9yZXMsIG9wdGlvbnMuY3dkKTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xuY29uc3Qge1RyYW5zZm9ybX0gPSByZXF1aXJlKCdzdHJlYW0nKTtcblxuY2xhc3MgT2JqZWN0VHJhbnNmb3JtIGV4dGVuZHMgVHJhbnNmb3JtIHtcblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0c3VwZXIoe1xuXHRcdFx0b2JqZWN0TW9kZTogdHJ1ZVxuXHRcdH0pO1xuXHR9XG59XG5cbmNsYXNzIEZpbHRlclN0cmVhbSBleHRlbmRzIE9iamVjdFRyYW5zZm9ybSB7XG5cdGNvbnN0cnVjdG9yKGZpbHRlcikge1xuXHRcdHN1cGVyKCk7XG5cdFx0dGhpcy5fZmlsdGVyID0gZmlsdGVyO1xuXHR9XG5cblx0X3RyYW5zZm9ybShkYXRhLCBlbmNvZGluZywgY2FsbGJhY2spIHtcblx0XHRpZiAodGhpcy5fZmlsdGVyKGRhdGEpKSB7XG5cdFx0XHR0aGlzLnB1c2goZGF0YSk7XG5cdFx0fVxuXG5cdFx0Y2FsbGJhY2soKTtcblx0fVxufVxuXG5jbGFzcyBVbmlxdWVTdHJlYW0gZXh0ZW5kcyBPYmplY3RUcmFuc2Zvcm0ge1xuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRzdXBlcigpO1xuXHRcdHRoaXMuX3B1c2hlZCA9IG5ldyBTZXQoKTtcblx0fVxuXG5cdF90cmFuc2Zvcm0oZGF0YSwgZW5jb2RpbmcsIGNhbGxiYWNrKSB7XG5cdFx0aWYgKCF0aGlzLl9wdXNoZWQuaGFzKGRhdGEpKSB7XG5cdFx0XHR0aGlzLnB1c2goZGF0YSk7XG5cdFx0XHR0aGlzLl9wdXNoZWQuYWRkKGRhdGEpO1xuXHRcdH1cblxuXHRcdGNhbGxiYWNrKCk7XG5cdH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG5cdEZpbHRlclN0cmVhbSxcblx0VW5pcXVlU3RyZWFtXG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbmNvbnN0IGZzID0gcmVxdWlyZSgnZnMnKTtcbmNvbnN0IGFycmF5VW5pb24gPSByZXF1aXJlKCdhcnJheS11bmlvbicpO1xuY29uc3QgbWVyZ2UyID0gcmVxdWlyZSgnbWVyZ2UyJyk7XG5jb25zdCBmYXN0R2xvYiA9IHJlcXVpcmUoJ2Zhc3QtZ2xvYicpO1xuY29uc3QgZGlyR2xvYiA9IHJlcXVpcmUoJ2Rpci1nbG9iJyk7XG5jb25zdCBnaXRpZ25vcmUgPSByZXF1aXJlKCcuL2dpdGlnbm9yZScpO1xuY29uc3Qge0ZpbHRlclN0cmVhbSwgVW5pcXVlU3RyZWFtfSA9IHJlcXVpcmUoJy4vc3RyZWFtLXV0aWxzJyk7XG5cbmNvbnN0IERFRkFVTFRfRklMVEVSID0gKCkgPT4gZmFsc2U7XG5cbmNvbnN0IGlzTmVnYXRpdmUgPSBwYXR0ZXJuID0+IHBhdHRlcm5bMF0gPT09ICchJztcblxuY29uc3QgYXNzZXJ0UGF0dGVybnNJbnB1dCA9IHBhdHRlcm5zID0+IHtcblx0aWYgKCFwYXR0ZXJucy5ldmVyeShwYXR0ZXJuID0+IHR5cGVvZiBwYXR0ZXJuID09PSAnc3RyaW5nJykpIHtcblx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdQYXR0ZXJucyBtdXN0IGJlIGEgc3RyaW5nIG9yIGFuIGFycmF5IG9mIHN0cmluZ3MnKTtcblx0fVxufTtcblxuY29uc3QgY2hlY2tDd2RPcHRpb24gPSAob3B0aW9ucyA9IHt9KSA9PiB7XG5cdGlmICghb3B0aW9ucy5jd2QpIHtcblx0XHRyZXR1cm47XG5cdH1cblxuXHRsZXQgc3RhdDtcblx0dHJ5IHtcblx0XHRzdGF0ID0gZnMuc3RhdFN5bmMob3B0aW9ucy5jd2QpO1xuXHR9IGNhdGNoIHtcblx0XHRyZXR1cm47XG5cdH1cblxuXHRpZiAoIXN0YXQuaXNEaXJlY3RvcnkoKSkge1xuXHRcdHRocm93IG5ldyBFcnJvcignVGhlIGBjd2RgIG9wdGlvbiBtdXN0IGJlIGEgcGF0aCB0byBhIGRpcmVjdG9yeScpO1xuXHR9XG59O1xuXG5jb25zdCBnZXRQYXRoU3RyaW5nID0gcCA9PiBwLnN0YXRzIGluc3RhbmNlb2YgZnMuU3RhdHMgPyBwLnBhdGggOiBwO1xuXG5jb25zdCBnZW5lcmF0ZUdsb2JUYXNrcyA9IChwYXR0ZXJucywgdGFza09wdGlvbnMpID0+IHtcblx0cGF0dGVybnMgPSBhcnJheVVuaW9uKFtdLmNvbmNhdChwYXR0ZXJucykpO1xuXHRhc3NlcnRQYXR0ZXJuc0lucHV0KHBhdHRlcm5zKTtcblx0Y2hlY2tDd2RPcHRpb24odGFza09wdGlvbnMpO1xuXG5cdGNvbnN0IGdsb2JUYXNrcyA9IFtdO1xuXG5cdHRhc2tPcHRpb25zID0ge1xuXHRcdGlnbm9yZTogW10sXG5cdFx0ZXhwYW5kRGlyZWN0b3JpZXM6IHRydWUsXG5cdFx0Li4udGFza09wdGlvbnNcblx0fTtcblxuXHRmb3IgKGNvbnN0IFtpbmRleCwgcGF0dGVybl0gb2YgcGF0dGVybnMuZW50cmllcygpKSB7XG5cdFx0aWYgKGlzTmVnYXRpdmUocGF0dGVybikpIHtcblx0XHRcdGNvbnRpbnVlO1xuXHRcdH1cblxuXHRcdGNvbnN0IGlnbm9yZSA9IHBhdHRlcm5zXG5cdFx0XHQuc2xpY2UoaW5kZXgpXG5cdFx0XHQuZmlsdGVyKHBhdHRlcm4gPT4gaXNOZWdhdGl2ZShwYXR0ZXJuKSlcblx0XHRcdC5tYXAocGF0dGVybiA9PiBwYXR0ZXJuLnNsaWNlKDEpKTtcblxuXHRcdGNvbnN0IG9wdGlvbnMgPSB7XG5cdFx0XHQuLi50YXNrT3B0aW9ucyxcblx0XHRcdGlnbm9yZTogdGFza09wdGlvbnMuaWdub3JlLmNvbmNhdChpZ25vcmUpXG5cdFx0fTtcblxuXHRcdGdsb2JUYXNrcy5wdXNoKHtwYXR0ZXJuLCBvcHRpb25zfSk7XG5cdH1cblxuXHRyZXR1cm4gZ2xvYlRhc2tzO1xufTtcblxuY29uc3QgZ2xvYkRpcnMgPSAodGFzaywgZm4pID0+IHtcblx0bGV0IG9wdGlvbnMgPSB7fTtcblx0aWYgKHRhc2sub3B0aW9ucy5jd2QpIHtcblx0XHRvcHRpb25zLmN3ZCA9IHRhc2sub3B0aW9ucy5jd2Q7XG5cdH1cblxuXHRpZiAoQXJyYXkuaXNBcnJheSh0YXNrLm9wdGlvbnMuZXhwYW5kRGlyZWN0b3JpZXMpKSB7XG5cdFx0b3B0aW9ucyA9IHtcblx0XHRcdC4uLm9wdGlvbnMsXG5cdFx0XHRmaWxlczogdGFzay5vcHRpb25zLmV4cGFuZERpcmVjdG9yaWVzXG5cdFx0fTtcblx0fSBlbHNlIGlmICh0eXBlb2YgdGFzay5vcHRpb25zLmV4cGFuZERpcmVjdG9yaWVzID09PSAnb2JqZWN0Jykge1xuXHRcdG9wdGlvbnMgPSB7XG5cdFx0XHQuLi5vcHRpb25zLFxuXHRcdFx0Li4udGFzay5vcHRpb25zLmV4cGFuZERpcmVjdG9yaWVzXG5cdFx0fTtcblx0fVxuXG5cdHJldHVybiBmbih0YXNrLnBhdHRlcm4sIG9wdGlvbnMpO1xufTtcblxuY29uc3QgZ2V0UGF0dGVybiA9ICh0YXNrLCBmbikgPT4gdGFzay5vcHRpb25zLmV4cGFuZERpcmVjdG9yaWVzID8gZ2xvYkRpcnModGFzaywgZm4pIDogW3Rhc2sucGF0dGVybl07XG5cbmNvbnN0IGdldEZpbHRlclN5bmMgPSBvcHRpb25zID0+IHtcblx0cmV0dXJuIG9wdGlvbnMgJiYgb3B0aW9ucy5naXRpZ25vcmUgP1xuXHRcdGdpdGlnbm9yZS5zeW5jKHtjd2Q6IG9wdGlvbnMuY3dkLCBpZ25vcmU6IG9wdGlvbnMuaWdub3JlfSkgOlxuXHRcdERFRkFVTFRfRklMVEVSO1xufTtcblxuY29uc3QgZ2xvYlRvVGFzayA9IHRhc2sgPT4gZ2xvYiA9PiB7XG5cdGNvbnN0IHtvcHRpb25zfSA9IHRhc2s7XG5cdGlmIChvcHRpb25zLmlnbm9yZSAmJiBBcnJheS5pc0FycmF5KG9wdGlvbnMuaWdub3JlKSAmJiBvcHRpb25zLmV4cGFuZERpcmVjdG9yaWVzKSB7XG5cdFx0b3B0aW9ucy5pZ25vcmUgPSBkaXJHbG9iLnN5bmMob3B0aW9ucy5pZ25vcmUpO1xuXHR9XG5cblx0cmV0dXJuIHtcblx0XHRwYXR0ZXJuOiBnbG9iLFxuXHRcdG9wdGlvbnNcblx0fTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gYXN5bmMgKHBhdHRlcm5zLCBvcHRpb25zKSA9PiB7XG5cdGNvbnN0IGdsb2JUYXNrcyA9IGdlbmVyYXRlR2xvYlRhc2tzKHBhdHRlcm5zLCBvcHRpb25zKTtcblxuXHRjb25zdCBnZXRGaWx0ZXIgPSBhc3luYyAoKSA9PiB7XG5cdFx0cmV0dXJuIG9wdGlvbnMgJiYgb3B0aW9ucy5naXRpZ25vcmUgP1xuXHRcdFx0Z2l0aWdub3JlKHtjd2Q6IG9wdGlvbnMuY3dkLCBpZ25vcmU6IG9wdGlvbnMuaWdub3JlfSkgOlxuXHRcdFx0REVGQVVMVF9GSUxURVI7XG5cdH07XG5cblx0Y29uc3QgZ2V0VGFza3MgPSBhc3luYyAoKSA9PiB7XG5cdFx0Y29uc3QgdGFza3MgPSBhd2FpdCBQcm9taXNlLmFsbChnbG9iVGFza3MubWFwKGFzeW5jIHRhc2sgPT4ge1xuXHRcdFx0Y29uc3QgZ2xvYnMgPSBhd2FpdCBnZXRQYXR0ZXJuKHRhc2ssIGRpckdsb2IpO1xuXHRcdFx0cmV0dXJuIFByb21pc2UuYWxsKGdsb2JzLm1hcChnbG9iVG9UYXNrKHRhc2spKSk7XG5cdFx0fSkpO1xuXG5cdFx0cmV0dXJuIGFycmF5VW5pb24oLi4udGFza3MpO1xuXHR9O1xuXG5cdGNvbnN0IFtmaWx0ZXIsIHRhc2tzXSA9IGF3YWl0IFByb21pc2UuYWxsKFtnZXRGaWx0ZXIoKSwgZ2V0VGFza3MoKV0pO1xuXHRjb25zdCBwYXRocyA9IGF3YWl0IFByb21pc2UuYWxsKHRhc2tzLm1hcCh0YXNrID0+IGZhc3RHbG9iKHRhc2sucGF0dGVybiwgdGFzay5vcHRpb25zKSkpO1xuXG5cdHJldHVybiBhcnJheVVuaW9uKC4uLnBhdGhzKS5maWx0ZXIocGF0aF8gPT4gIWZpbHRlcihnZXRQYXRoU3RyaW5nKHBhdGhfKSkpO1xufTtcblxubW9kdWxlLmV4cG9ydHMuc3luYyA9IChwYXR0ZXJucywgb3B0aW9ucykgPT4ge1xuXHRjb25zdCBnbG9iVGFza3MgPSBnZW5lcmF0ZUdsb2JUYXNrcyhwYXR0ZXJucywgb3B0aW9ucyk7XG5cblx0Y29uc3QgdGFza3MgPSBbXTtcblx0Zm9yIChjb25zdCB0YXNrIG9mIGdsb2JUYXNrcykge1xuXHRcdGNvbnN0IG5ld1Rhc2sgPSBnZXRQYXR0ZXJuKHRhc2ssIGRpckdsb2Iuc3luYykubWFwKGdsb2JUb1Rhc2sodGFzaykpO1xuXHRcdHRhc2tzLnB1c2goLi4ubmV3VGFzayk7XG5cdH1cblxuXHRjb25zdCBmaWx0ZXIgPSBnZXRGaWx0ZXJTeW5jKG9wdGlvbnMpO1xuXG5cdGxldCBtYXRjaGVzID0gW107XG5cdGZvciAoY29uc3QgdGFzayBvZiB0YXNrcykge1xuXHRcdG1hdGNoZXMgPSBhcnJheVVuaW9uKG1hdGNoZXMsIGZhc3RHbG9iLnN5bmModGFzay5wYXR0ZXJuLCB0YXNrLm9wdGlvbnMpKTtcblx0fVxuXG5cdHJldHVybiBtYXRjaGVzLmZpbHRlcihwYXRoXyA9PiAhZmlsdGVyKHBhdGhfKSk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cy5zdHJlYW0gPSAocGF0dGVybnMsIG9wdGlvbnMpID0+IHtcblx0Y29uc3QgZ2xvYlRhc2tzID0gZ2VuZXJhdGVHbG9iVGFza3MocGF0dGVybnMsIG9wdGlvbnMpO1xuXG5cdGNvbnN0IHRhc2tzID0gW107XG5cdGZvciAoY29uc3QgdGFzayBvZiBnbG9iVGFza3MpIHtcblx0XHRjb25zdCBuZXdUYXNrID0gZ2V0UGF0dGVybih0YXNrLCBkaXJHbG9iLnN5bmMpLm1hcChnbG9iVG9UYXNrKHRhc2spKTtcblx0XHR0YXNrcy5wdXNoKC4uLm5ld1Rhc2spO1xuXHR9XG5cblx0Y29uc3QgZmlsdGVyID0gZ2V0RmlsdGVyU3luYyhvcHRpb25zKTtcblx0Y29uc3QgZmlsdGVyU3RyZWFtID0gbmV3IEZpbHRlclN0cmVhbShwID0+ICFmaWx0ZXIocCkpO1xuXHRjb25zdCB1bmlxdWVTdHJlYW0gPSBuZXcgVW5pcXVlU3RyZWFtKCk7XG5cblx0cmV0dXJuIG1lcmdlMih0YXNrcy5tYXAodGFzayA9PiBmYXN0R2xvYi5zdHJlYW0odGFzay5wYXR0ZXJuLCB0YXNrLm9wdGlvbnMpKSlcblx0XHQucGlwZShmaWx0ZXJTdHJlYW0pXG5cdFx0LnBpcGUodW5pcXVlU3RyZWFtKTtcbn07XG5cbm1vZHVsZS5leHBvcnRzLmdlbmVyYXRlR2xvYlRhc2tzID0gZ2VuZXJhdGVHbG9iVGFza3M7XG5cbm1vZHVsZS5leHBvcnRzLmhhc01hZ2ljID0gKHBhdHRlcm5zLCBvcHRpb25zKSA9PiBbXVxuXHQuY29uY2F0KHBhdHRlcm5zKVxuXHQuc29tZShwYXR0ZXJuID0+IGZhc3RHbG9iLmlzRHluYW1pY1BhdHRlcm4ocGF0dGVybiwgb3B0aW9ucykpO1xuXG5tb2R1bGUuZXhwb3J0cy5naXRpZ25vcmUgPSBnaXRpZ25vcmU7XG4iLCAiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLmNoZWNrc3VtUGF0dGVybiA9IGV4cG9ydHMuY2hlY2tzdW1GaWxlID0gZXhwb3J0cy5tYWtlSGFzaCA9IHZvaWQgMDtcbmNvbnN0IHRzbGliXzEgPSByZXF1aXJlKFwidHNsaWJcIik7XG5jb25zdCBmc2xpYl8xID0gcmVxdWlyZShcIkB5YXJucGtnL2ZzbGliXCIpO1xuY29uc3QgY3J5cHRvXzEgPSByZXF1aXJlKFwiY3J5cHRvXCIpO1xuY29uc3QgZ2xvYmJ5XzEgPSB0c2xpYl8xLl9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiZ2xvYmJ5XCIpKTtcbmZ1bmN0aW9uIG1ha2VIYXNoKC4uLmFyZ3MpIHtcbiAgICBjb25zdCBoYXNoID0gKDAsIGNyeXB0b18xLmNyZWF0ZUhhc2gpKGBzaGE1MTJgKTtcbiAgICBsZXQgYWNjID0gYGA7XG4gICAgZm9yIChjb25zdCBhcmcgb2YgYXJncykge1xuICAgICAgICBpZiAodHlwZW9mIGFyZyA9PT0gYHN0cmluZ2ApIHtcbiAgICAgICAgICAgIGFjYyArPSBhcmc7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoYXJnKSB7XG4gICAgICAgICAgICBpZiAoYWNjKSB7XG4gICAgICAgICAgICAgICAgaGFzaC51cGRhdGUoYWNjKTtcbiAgICAgICAgICAgICAgICBhY2MgPSBgYDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGhhc2gudXBkYXRlKGFyZyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKGFjYylcbiAgICAgICAgaGFzaC51cGRhdGUoYWNjKTtcbiAgICByZXR1cm4gaGFzaC5kaWdlc3QoYGhleGApO1xufVxuZXhwb3J0cy5tYWtlSGFzaCA9IG1ha2VIYXNoO1xuYXN5bmMgZnVuY3Rpb24gY2hlY2tzdW1GaWxlKHBhdGgsIHsgYmFzZUZzLCBhbGdvcml0aG0gfSA9IHsgYmFzZUZzOiBmc2xpYl8xLnhmcywgYWxnb3JpdGhtOiBgc2hhNTEyYCB9KSB7XG4gICAgY29uc3QgZmQgPSBhd2FpdCBiYXNlRnMub3BlblByb21pc2UocGF0aCwgYHJgKTtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCBDSFVOS19TSVpFID0gNjU1MzY7XG4gICAgICAgIGNvbnN0IGNodW5rID0gQnVmZmVyLmFsbG9jVW5zYWZlU2xvdyhDSFVOS19TSVpFKTtcbiAgICAgICAgY29uc3QgaGFzaCA9ICgwLCBjcnlwdG9fMS5jcmVhdGVIYXNoKShhbGdvcml0aG0pO1xuICAgICAgICBsZXQgYnl0ZXNSZWFkID0gMDtcbiAgICAgICAgd2hpbGUgKChieXRlc1JlYWQgPSBhd2FpdCBiYXNlRnMucmVhZFByb21pc2UoZmQsIGNodW5rLCAwLCBDSFVOS19TSVpFKSkgIT09IDApXG4gICAgICAgICAgICBoYXNoLnVwZGF0ZShieXRlc1JlYWQgPT09IENIVU5LX1NJWkUgPyBjaHVuayA6IGNodW5rLnNsaWNlKDAsIGJ5dGVzUmVhZCkpO1xuICAgICAgICByZXR1cm4gaGFzaC5kaWdlc3QoYGhleGApO1xuICAgIH1cbiAgICBmaW5hbGx5IHtcbiAgICAgICAgYXdhaXQgYmFzZUZzLmNsb3NlUHJvbWlzZShmZCk7XG4gICAgfVxufVxuZXhwb3J0cy5jaGVja3N1bUZpbGUgPSBjaGVja3N1bUZpbGU7XG5hc3luYyBmdW5jdGlvbiBjaGVja3N1bVBhdHRlcm4ocGF0dGVybiwgeyBjd2QgfSkge1xuICAgIC8vIE5vdGU6IFdlIHVzZSBhIHR3by1wYXNzIGdsb2IgaW5zdGVhZCBvZiB1c2luZyB0aGUgZXhwYW5kRGlyZWN0b3JpZXMgb3B0aW9uXG4gICAgLy8gZnJvbSBnbG9iYnksIGJlY2F1c2UgdGhlIG5hdGl2ZSBpbXBsZW1lbnRhdGlvbiBpcyBicm9rZW4uXG4gICAgLy9cbiAgICAvLyBSZWY6IGh0dHBzOi8vZ2l0aHViLmNvbS9zaW5kcmVzb3JodXMvZ2xvYmJ5L2lzc3Vlcy8xNDdcbiAgICBjb25zdCBkaXJMaXN0aW5nID0gYXdhaXQgKDAsIGdsb2JieV8xLmRlZmF1bHQpKHBhdHRlcm4sIHtcbiAgICAgICAgY3dkOiBmc2xpYl8xLm5wYXRoLmZyb21Qb3J0YWJsZVBhdGgoY3dkKSxcbiAgICAgICAgZXhwYW5kRGlyZWN0b3JpZXM6IGZhbHNlLFxuICAgICAgICBvbmx5RGlyZWN0b3JpZXM6IHRydWUsXG4gICAgICAgIHVuaXF1ZTogdHJ1ZSxcbiAgICB9KTtcbiAgICBjb25zdCBkaXJQYXR0ZXJucyA9IGRpckxpc3RpbmcubWFwKGVudHJ5ID0+IHtcbiAgICAgICAgcmV0dXJuIGAke2VudHJ5fS8qKi8qYDtcbiAgICB9KTtcbiAgICBjb25zdCBsaXN0aW5nID0gYXdhaXQgKDAsIGdsb2JieV8xLmRlZmF1bHQpKFtwYXR0ZXJuLCAuLi5kaXJQYXR0ZXJuc10sIHtcbiAgICAgICAgY3dkOiBmc2xpYl8xLm5wYXRoLmZyb21Qb3J0YWJsZVBhdGgoY3dkKSxcbiAgICAgICAgZXhwYW5kRGlyZWN0b3JpZXM6IGZhbHNlLFxuICAgICAgICBvbmx5RmlsZXM6IGZhbHNlLFxuICAgICAgICB1bmlxdWU6IHRydWUsXG4gICAgfSk7XG4gICAgbGlzdGluZy5zb3J0KCk7XG4gICAgY29uc3QgaGFzaGVzID0gYXdhaXQgUHJvbWlzZS5hbGwobGlzdGluZy5tYXAoYXN5bmMgKGVudHJ5KSA9PiB7XG4gICAgICAgIGNvbnN0IHBhcnRzID0gW0J1ZmZlci5mcm9tKGVudHJ5KV07XG4gICAgICAgIGNvbnN0IHAgPSBmc2xpYl8xLm5wYXRoLnRvUG9ydGFibGVQYXRoKGVudHJ5KTtcbiAgICAgICAgY29uc3Qgc3RhdCA9IGF3YWl0IGZzbGliXzEueGZzLmxzdGF0UHJvbWlzZShwKTtcbiAgICAgICAgaWYgKHN0YXQuaXNTeW1ib2xpY0xpbmsoKSlcbiAgICAgICAgICAgIHBhcnRzLnB1c2goQnVmZmVyLmZyb20oYXdhaXQgZnNsaWJfMS54ZnMucmVhZGxpbmtQcm9taXNlKHApKSk7XG4gICAgICAgIGVsc2UgaWYgKHN0YXQuaXNGaWxlKCkpXG4gICAgICAgICAgICBwYXJ0cy5wdXNoKGF3YWl0IGZzbGliXzEueGZzLnJlYWRGaWxlUHJvbWlzZShwKSk7XG4gICAgICAgIHJldHVybiBwYXJ0cy5qb2luKGBcXHUwMDAwYCk7XG4gICAgfSkpO1xuICAgIGNvbnN0IGhhc2ggPSAoMCwgY3J5cHRvXzEuY3JlYXRlSGFzaCkoYHNoYTUxMmApO1xuICAgIGZvciAoY29uc3Qgc3ViIG9mIGhhc2hlcylcbiAgICAgICAgaGFzaC51cGRhdGUoc3ViKTtcbiAgICByZXR1cm4gaGFzaC5kaWdlc3QoYGhleGApO1xufVxuZXhwb3J0cy5jaGVja3N1bVBhdHRlcm4gPSBjaGVja3N1bVBhdHRlcm47XG4iLCAiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLmdldElkZW50VmVuZG9yUGF0aCA9IGV4cG9ydHMucHJldHR5RGVwZW5kZW50ID0gZXhwb3J0cy5wcmV0dHlSZXNvbHV0aW9uID0gZXhwb3J0cy5wcmV0dHlXb3Jrc3BhY2UgPSBleHBvcnRzLnNvcnREZXNjcmlwdG9ycyA9IGV4cG9ydHMucHJldHR5TG9jYXRvck5vQ29sb3JzID0gZXhwb3J0cy5wcmV0dHlMb2NhdG9yID0gZXhwb3J0cy5wcmV0dHlSZWZlcmVuY2UgPSBleHBvcnRzLnByZXR0eURlc2NyaXB0b3IgPSBleHBvcnRzLnByZXR0eVJhbmdlID0gZXhwb3J0cy5wcmV0dHlJZGVudCA9IGV4cG9ydHMuc2x1Z2lmeUxvY2F0b3IgPSBleHBvcnRzLnNsdWdpZnlJZGVudCA9IGV4cG9ydHMuc3RyaW5naWZ5TG9jYXRvciA9IGV4cG9ydHMuc3RyaW5naWZ5RGVzY3JpcHRvciA9IGV4cG9ydHMuc3RyaW5naWZ5SWRlbnQgPSBleHBvcnRzLmNvbnZlcnRUb01hbmlmZXN0UmFuZ2UgPSBleHBvcnRzLm1ha2VSYW5nZSA9IGV4cG9ydHMucGFyc2VGaWxlU3R5bGVSYW5nZSA9IGV4cG9ydHMudHJ5UGFyc2VSYW5nZSA9IGV4cG9ydHMucGFyc2VSYW5nZSA9IGV4cG9ydHMudHJ5UGFyc2VMb2NhdG9yID0gZXhwb3J0cy5wYXJzZUxvY2F0b3IgPSBleHBvcnRzLnRyeVBhcnNlRGVzY3JpcHRvciA9IGV4cG9ydHMucGFyc2VEZXNjcmlwdG9yID0gZXhwb3J0cy50cnlQYXJzZUlkZW50ID0gZXhwb3J0cy5wYXJzZUlkZW50ID0gZXhwb3J0cy5hcmVWaXJ0dWFsUGFja2FnZXNFcXVpdmFsZW50ID0gZXhwb3J0cy5hcmVMb2NhdG9yc0VxdWFsID0gZXhwb3J0cy5hcmVEZXNjcmlwdG9yc0VxdWFsID0gZXhwb3J0cy5hcmVJZGVudHNFcXVhbCA9IGV4cG9ydHMuYmluZExvY2F0b3IgPSBleHBvcnRzLmJpbmREZXNjcmlwdG9yID0gZXhwb3J0cy5lbnN1cmVEZXZpcnR1YWxpemVkTG9jYXRvciA9IGV4cG9ydHMuZW5zdXJlRGV2aXJ0dWFsaXplZERlc2NyaXB0b3IgPSBleHBvcnRzLmRldmlydHVhbGl6ZUxvY2F0b3IgPSBleHBvcnRzLmRldmlydHVhbGl6ZURlc2NyaXB0b3IgPSBleHBvcnRzLmlzVmlydHVhbExvY2F0b3IgPSBleHBvcnRzLmlzVmlydHVhbERlc2NyaXB0b3IgPSBleHBvcnRzLnZpcnR1YWxpemVQYWNrYWdlID0gZXhwb3J0cy52aXJ0dWFsaXplRGVzY3JpcHRvciA9IGV4cG9ydHMuY29weVBhY2thZ2UgPSBleHBvcnRzLnJlbmFtZVBhY2thZ2UgPSBleHBvcnRzLmNvbnZlcnRQYWNrYWdlVG9Mb2NhdG9yID0gZXhwb3J0cy5jb252ZXJ0TG9jYXRvclRvRGVzY3JpcHRvciA9IGV4cG9ydHMuY29udmVydERlc2NyaXB0b3JUb0xvY2F0b3IgPSBleHBvcnRzLmNvbnZlcnRUb0lkZW50ID0gZXhwb3J0cy5tYWtlTG9jYXRvciA9IGV4cG9ydHMubWFrZURlc2NyaXB0b3IgPSBleHBvcnRzLm1ha2VJZGVudCA9IHZvaWQgMDtcbmV4cG9ydHMuaXNQYWNrYWdlQ29tcGF0aWJsZSA9IHZvaWQgMDtcbmNvbnN0IHRzbGliXzEgPSByZXF1aXJlKFwidHNsaWJcIik7XG5jb25zdCBmc2xpYl8xID0gcmVxdWlyZShcIkB5YXJucGtnL2ZzbGliXCIpO1xuY29uc3QgcXVlcnlzdHJpbmdfMSA9IHRzbGliXzEuX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJxdWVyeXN0cmluZ1wiKSk7XG5jb25zdCBzZW12ZXJfMSA9IHRzbGliXzEuX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJzZW12ZXJcIikpO1xuY29uc3QgdGlueWxvZ2ljXzEgPSByZXF1aXJlKFwidGlueWxvZ2ljXCIpO1xuY29uc3QgZm9ybWF0VXRpbHMgPSB0c2xpYl8xLl9faW1wb3J0U3RhcihyZXF1aXJlKFwiLi9mb3JtYXRVdGlsc1wiKSk7XG5jb25zdCBoYXNoVXRpbHMgPSB0c2xpYl8xLl9faW1wb3J0U3RhcihyZXF1aXJlKFwiLi9oYXNoVXRpbHNcIikpO1xuY29uc3QgbWlzY1V0aWxzID0gdHNsaWJfMS5fX2ltcG9ydFN0YXIocmVxdWlyZShcIi4vbWlzY1V0aWxzXCIpKTtcbmNvbnN0IHN0cnVjdFV0aWxzID0gdHNsaWJfMS5fX2ltcG9ydFN0YXIocmVxdWlyZShcIi4vc3RydWN0VXRpbHNcIikpO1xuY29uc3QgVklSVFVBTF9QUk9UT0NPTCA9IGB2aXJ0dWFsOmA7XG5jb25zdCBWSVJUVUFMX0FCQlJFVklBVEUgPSA1O1xuY29uc3QgY29uZGl0aW9uUmVnZXggPSAvKG9zfGNwdXxsaWJjKT0oW2EtejAtOV8tXSspLztcbmNvbnN0IGNvbmRpdGlvblBhcnNlciA9ICgwLCB0aW55bG9naWNfMS5tYWtlUGFyc2VyKShjb25kaXRpb25SZWdleCk7XG4vKipcbiAqIENyZWF0ZXMgYSBwYWNrYWdlIGlkZW50LlxuICpcbiAqIEBwYXJhbSBzY29wZSBUaGUgcGFja2FnZSBzY29wZSB3aXRob3V0IHRoZSBgQGAgcHJlZml4IChlZy4gYHR5cGVzYClcbiAqIEBwYXJhbSBuYW1lIFRoZSBuYW1lIG9mIHRoZSBwYWNrYWdlXG4gKi9cbmZ1bmN0aW9uIG1ha2VJZGVudChzY29wZSwgbmFtZSkge1xuICAgIGlmIChzY29wZSA9PT0gbnVsbCB8fCBzY29wZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogc2NvcGUuc3RhcnRzV2l0aChgQGApKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgc2NvcGU6IGRvbid0IHByZWZpeCBpdCB3aXRoICdAJ2ApO1xuICAgIHJldHVybiB7IGlkZW50SGFzaDogaGFzaFV0aWxzLm1ha2VIYXNoKHNjb3BlLCBuYW1lKSwgc2NvcGUsIG5hbWUgfTtcbn1cbmV4cG9ydHMubWFrZUlkZW50ID0gbWFrZUlkZW50O1xuLyoqXG4gKiBDcmVhdGVzIGEgcGFja2FnZSBkZXNjcmlwdG9yLlxuICpcbiAqIEBwYXJhbSBpZGVudCBUaGUgYmFzZSBpZGVudCAoc2VlIGBtYWtlSWRlbnRgKVxuICogQHBhcmFtIHJhbmdlIFRoZSByYW5nZSB0byBhdHRhY2ggKGVnLiBgXjEuMC4wYClcbiAqL1xuZnVuY3Rpb24gbWFrZURlc2NyaXB0b3IoaWRlbnQsIHJhbmdlKSB7XG4gICAgcmV0dXJuIHsgaWRlbnRIYXNoOiBpZGVudC5pZGVudEhhc2gsIHNjb3BlOiBpZGVudC5zY29wZSwgbmFtZTogaWRlbnQubmFtZSwgZGVzY3JpcHRvckhhc2g6IGhhc2hVdGlscy5tYWtlSGFzaChpZGVudC5pZGVudEhhc2gsIHJhbmdlKSwgcmFuZ2UgfTtcbn1cbmV4cG9ydHMubWFrZURlc2NyaXB0b3IgPSBtYWtlRGVzY3JpcHRvcjtcbi8qKlxuICogQ3JlYXRlcyBhIHBhY2thZ2UgbG9jYXRvci5cbiAqXG4gKiBAcGFyYW0gaWRlbnQgVGhlIGJhc2UgaWRlbnQgKHNlZSBgbWFrZUlkZW50YClcbiAqIEBwYXJhbSByZWZlcmVuY2UgVGhlIHJlZmVyZW5jZSB0byBhdHRhY2ggKGVnLiBgMS4wLjBgKVxuICovXG5mdW5jdGlvbiBtYWtlTG9jYXRvcihpZGVudCwgcmVmZXJlbmNlKSB7XG4gICAgcmV0dXJuIHsgaWRlbnRIYXNoOiBpZGVudC5pZGVudEhhc2gsIHNjb3BlOiBpZGVudC5zY29wZSwgbmFtZTogaWRlbnQubmFtZSwgbG9jYXRvckhhc2g6IGhhc2hVdGlscy5tYWtlSGFzaChpZGVudC5pZGVudEhhc2gsIHJlZmVyZW5jZSksIHJlZmVyZW5jZSB9O1xufVxuZXhwb3J0cy5tYWtlTG9jYXRvciA9IG1ha2VMb2NhdG9yO1xuLyoqXG4gKiBUdXJucyBhIGNvbXBhdGlibGUgc291cmNlIHRvIGFuIGlkZW50LiBZb3Ugd29uJ3QgcmVhbGx5IGhhdmUgdG8gdXNlIHRoaXNcbiAqIGZ1bmN0aW9uIHNpbmNlIGJ5IHZpcnR1ZSBvZiBzdHJ1Y3R1cmFsIGluaGVyaXRhbmNlIGFsbCBkZXNjcmlwdG9ycyBhbmRcbiAqIGxvY2F0b3JzIGFyZSBhbHJlYWR5IHZhbGlkIGlkZW50cy5cbiAqXG4gKiBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgdXNlZnVsIGlmIHlvdSBhYnNvbHV0ZWx5IG5lZWQgdG8gcmVtb3ZlIHRoZSBub24taWRlbnRcbiAqIGZpZWxkcyBmcm9tIGEgc3RydWN0dXJlIGJlZm9yZSBzdG9yaW5nIGl0IHNvbWV3aGVyZS5cbiAqXG4gKiBAcGFyYW0gc291cmNlIFRoZSBkYXRhIHN0cnVjdHVyZSB0byBjb252ZXJ0IGludG8gYW4gaWRlbnQuXG4gKi9cbmZ1bmN0aW9uIGNvbnZlcnRUb0lkZW50KHNvdXJjZSkge1xuICAgIHJldHVybiB7IGlkZW50SGFzaDogc291cmNlLmlkZW50SGFzaCwgc2NvcGU6IHNvdXJjZS5zY29wZSwgbmFtZTogc291cmNlLm5hbWUgfTtcbn1cbmV4cG9ydHMuY29udmVydFRvSWRlbnQgPSBjb252ZXJ0VG9JZGVudDtcbi8qKlxuICogVHVybnMgYSBkZXNjcmlwdG9yIGludG8gYSBsb2NhdG9yLlxuICpcbiAqIE5vdGUgdGhhdCB0aGlzIHByb2Nlc3MgbWF5IGJlIHVuc2FmZSwgYXMgZGVzY3JpcHRvcnMgbWF5IHJlZmVyZW5jZSBtdWx0aXBsZVxuICogcGFja2FnZXMsIHB1dHRpbmcgdGhlbSBhdCBvZGQgd2l0aCBsb2NhdG9ycycgZXhwZWN0ZWQgc2VtYW50aWMuIE9ubHkgbWFrZXNcbiAqIHNlbnNlIHdoZW4gdXNlZCB3aXRoIHNpbmdsZS1yZXNvbHV0aW9uIHByb3RvY29scywgZm9yIGluc3RhbmNlIGBmaWxlOmAuXG4gKlxuICogQHBhcmFtIGRlc2NyaXB0b3IgVGhlIGRlc2NyaXB0b3IgdG8gY29udmVydCBpbnRvIGEgbG9jYXRvci5cbiAqL1xuZnVuY3Rpb24gY29udmVydERlc2NyaXB0b3JUb0xvY2F0b3IoZGVzY3JpcHRvcikge1xuICAgIHJldHVybiB7IGlkZW50SGFzaDogZGVzY3JpcHRvci5pZGVudEhhc2gsIHNjb3BlOiBkZXNjcmlwdG9yLnNjb3BlLCBuYW1lOiBkZXNjcmlwdG9yLm5hbWUsIGxvY2F0b3JIYXNoOiBkZXNjcmlwdG9yLmRlc2NyaXB0b3JIYXNoLCByZWZlcmVuY2U6IGRlc2NyaXB0b3IucmFuZ2UgfTtcbn1cbmV4cG9ydHMuY29udmVydERlc2NyaXB0b3JUb0xvY2F0b3IgPSBjb252ZXJ0RGVzY3JpcHRvclRvTG9jYXRvcjtcbi8qKlxuICogVHVybnMgYSBsb2NhdG9yIGludG8gYSBkZXNjcmlwdG9yLlxuICpcbiAqIFRoaXMgc2hvdWxkIGJlIHNhZmUgdG8gZG8gcmVnYXJkbGVzcyBvZiB0aGUgbG9jYXRvciwgc2luY2UgYWxsIGxvY2F0b3JcbiAqIHJlZmVyZW5jZXMgYXJlIGV4cGVjdGVkIHRvIGJlIHZhbGlkIGRlc2NyaXB0b3IgcmFuZ2VzLlxuICpcbiAqIEBwYXJhbSBsb2NhdG9yIFRoZSBsb2NhdG9yIHRvIGNvbnZlcnQgaW50byBhIGRlc2NyaXB0b3IuXG4gKi9cbmZ1bmN0aW9uIGNvbnZlcnRMb2NhdG9yVG9EZXNjcmlwdG9yKGxvY2F0b3IpIHtcbiAgICByZXR1cm4geyBpZGVudEhhc2g6IGxvY2F0b3IuaWRlbnRIYXNoLCBzY29wZTogbG9jYXRvci5zY29wZSwgbmFtZTogbG9jYXRvci5uYW1lLCBkZXNjcmlwdG9ySGFzaDogbG9jYXRvci5sb2NhdG9ySGFzaCwgcmFuZ2U6IGxvY2F0b3IucmVmZXJlbmNlIH07XG59XG5leHBvcnRzLmNvbnZlcnRMb2NhdG9yVG9EZXNjcmlwdG9yID0gY29udmVydExvY2F0b3JUb0Rlc2NyaXB0b3I7XG4vKipcbiAqIFR1cm5zIGEgcGFja2FnZSBzdHJ1Y3R1cmUgaW50byBhIHNpbXBsZSBsb2NhdG9yLiBZb3Ugd29uJ3Qgb2Z0ZW4gbmVlZCB0b1xuICogY2FsbCB0aGlzIGZ1bmN0aW9uIHNpbmNlIHBhY2thZ2VzIGFyZSBhbHJlYWR5IHZhbGlkIGxvY2F0b3JzIGJ5IHZpcnR1ZSBvZlxuICogc3RydWN0dXJhbCBpbmhlcml0YW5jZS5cbiAqXG4gKiBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgdXNlZnVsIGlmIHlvdSBhYnNvbHV0ZWx5IG5lZWQgdG8gcmVtb3ZlIHRoZVxuICogbm9uLWxvY2F0b3IgZmllbGRzIGZyb20gYSBzdHJ1Y3R1cmUgYmVmb3JlIHN0b3JpbmcgaXQgc29tZXdoZXJlLlxuICpcbiAqIEBwYXJhbSBwa2cgVGhlIHBhY2thZ2UgdG8gY29udmVydCBpbnRvIGEgbG9jYXRvci5cbiAqL1xuZnVuY3Rpb24gY29udmVydFBhY2thZ2VUb0xvY2F0b3IocGtnKSB7XG4gICAgcmV0dXJuIHsgaWRlbnRIYXNoOiBwa2cuaWRlbnRIYXNoLCBzY29wZTogcGtnLnNjb3BlLCBuYW1lOiBwa2cubmFtZSwgbG9jYXRvckhhc2g6IHBrZy5sb2NhdG9ySGFzaCwgcmVmZXJlbmNlOiBwa2cucmVmZXJlbmNlIH07XG59XG5leHBvcnRzLmNvbnZlcnRQYWNrYWdlVG9Mb2NhdG9yID0gY29udmVydFBhY2thZ2VUb0xvY2F0b3I7XG4vKipcbiAqIERlZXAgY29waWVzIGEgcGFja2FnZSB0aGVuIGNoYW5nZSBpdHMgbG9jYXRvciB0byBzb21ldGhpbmcgZWxzZS5cbiAqXG4gKiBAcGFyYW0gcGtnIFRoZSBzb3VyY2UgcGFja2FnZVxuICogQHBhcmFtIGxvY2F0b3IgSXRzIG5ldyBuZXcgbG9jYXRvclxuICovXG5mdW5jdGlvbiByZW5hbWVQYWNrYWdlKHBrZywgbG9jYXRvcikge1xuICAgIHJldHVybiB7XG4gICAgICAgIGlkZW50SGFzaDogbG9jYXRvci5pZGVudEhhc2gsXG4gICAgICAgIHNjb3BlOiBsb2NhdG9yLnNjb3BlLFxuICAgICAgICBuYW1lOiBsb2NhdG9yLm5hbWUsXG4gICAgICAgIGxvY2F0b3JIYXNoOiBsb2NhdG9yLmxvY2F0b3JIYXNoLFxuICAgICAgICByZWZlcmVuY2U6IGxvY2F0b3IucmVmZXJlbmNlLFxuICAgICAgICB2ZXJzaW9uOiBwa2cudmVyc2lvbixcbiAgICAgICAgbGFuZ3VhZ2VOYW1lOiBwa2cubGFuZ3VhZ2VOYW1lLFxuICAgICAgICBsaW5rVHlwZTogcGtnLmxpbmtUeXBlLFxuICAgICAgICBjb25kaXRpb25zOiBwa2cuY29uZGl0aW9ucyxcbiAgICAgICAgZGVwZW5kZW5jaWVzOiBuZXcgTWFwKHBrZy5kZXBlbmRlbmNpZXMpLFxuICAgICAgICBwZWVyRGVwZW5kZW5jaWVzOiBuZXcgTWFwKHBrZy5wZWVyRGVwZW5kZW5jaWVzKSxcbiAgICAgICAgZGVwZW5kZW5jaWVzTWV0YTogbmV3IE1hcChwa2cuZGVwZW5kZW5jaWVzTWV0YSksXG4gICAgICAgIHBlZXJEZXBlbmRlbmNpZXNNZXRhOiBuZXcgTWFwKHBrZy5wZWVyRGVwZW5kZW5jaWVzTWV0YSksXG4gICAgICAgIGJpbjogbmV3IE1hcChwa2cuYmluKSxcbiAgICB9O1xufVxuZXhwb3J0cy5yZW5hbWVQYWNrYWdlID0gcmVuYW1lUGFja2FnZTtcbi8qKlxuICogRGVlcCBjb3BpZXMgYSBwYWNrYWdlLiBUaGUgY29weSB3aWxsIHNoYXJlIHRoZSBzYW1lIGxvY2F0b3IgYXMgdGhlIG9yaWdpbmFsLlxuICpcbiAqIEBwYXJhbSBwa2cgVGhlIHNvdXJjZSBwYWNrYWdlXG4gKi9cbmZ1bmN0aW9uIGNvcHlQYWNrYWdlKHBrZykge1xuICAgIHJldHVybiByZW5hbWVQYWNrYWdlKHBrZywgcGtnKTtcbn1cbmV4cG9ydHMuY29weVBhY2thZ2UgPSBjb3B5UGFja2FnZTtcbi8qKlxuICogQ3JlYXRlcyBhIG5ldyB2aXJ0dWFsIGRlc2NyaXB0b3IgZnJvbSBhIG5vbiB2aXJ0dWFsIG9uZS5cbiAqXG4gKiBAcGFyYW0gZGVzY3JpcHRvciBUaGUgZGVzY3JpcHRvciB0byB2aXJ0dWFsaXplXG4gKiBAcGFyYW0gZW50cm9weSBBIGhhc2ggdGhhdCBwcm92aWRlcyB1bmlxdWVuZXNzIHRvIHRoaXMgdmlydHVhbGl6ZWQgZGVzY3JpcHRvciAobm9ybWFsbHkgYSBsb2NhdG9yIGhhc2gpXG4gKi9cbmZ1bmN0aW9uIHZpcnR1YWxpemVEZXNjcmlwdG9yKGRlc2NyaXB0b3IsIGVudHJvcHkpIHtcbiAgICBpZiAoZW50cm9weS5pbmNsdWRlcyhgI2ApKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgZW50cm9weWApO1xuICAgIHJldHVybiBtYWtlRGVzY3JpcHRvcihkZXNjcmlwdG9yLCBgdmlydHVhbDoke2VudHJvcHl9IyR7ZGVzY3JpcHRvci5yYW5nZX1gKTtcbn1cbmV4cG9ydHMudmlydHVhbGl6ZURlc2NyaXB0b3IgPSB2aXJ0dWFsaXplRGVzY3JpcHRvcjtcbi8qKlxuICogQ3JlYXRlcyBhIG5ldyB2aXJ0dWFsIHBhY2thZ2UgZnJvbSBhIG5vbiB2aXJ0dWFsIG9uZS5cbiAqXG4gKiBAcGFyYW0gcGtnIFRoZSBwYWNrYWdlIHRvIHZpcnR1YWxpemVcbiAqIEBwYXJhbSBlbnRyb3B5IEEgaGFzaCB0aGF0IHByb3ZpZGVzIHVuaXF1ZW5lc3MgdG8gdGhpcyB2aXJ0dWFsaXplZCBwYWNrYWdlIChub3JtYWxseSBhIGxvY2F0b3IgaGFzaClcbiAqL1xuZnVuY3Rpb24gdmlydHVhbGl6ZVBhY2thZ2UocGtnLCBlbnRyb3B5KSB7XG4gICAgaWYgKGVudHJvcHkuaW5jbHVkZXMoYCNgKSlcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGVudHJvcHlgKTtcbiAgICByZXR1cm4gcmVuYW1lUGFja2FnZShwa2csIG1ha2VMb2NhdG9yKHBrZywgYHZpcnR1YWw6JHtlbnRyb3B5fSMke3BrZy5yZWZlcmVuY2V9YCkpO1xufVxuZXhwb3J0cy52aXJ0dWFsaXplUGFja2FnZSA9IHZpcnR1YWxpemVQYWNrYWdlO1xuLyoqXG4gKiBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgZGVzY3JpcHRvciBpcyB2aXJ0dWFsLlxuICovXG5mdW5jdGlvbiBpc1ZpcnR1YWxEZXNjcmlwdG9yKGRlc2NyaXB0b3IpIHtcbiAgICByZXR1cm4gZGVzY3JpcHRvci5yYW5nZS5zdGFydHNXaXRoKFZJUlRVQUxfUFJPVE9DT0wpO1xufVxuZXhwb3J0cy5pc1ZpcnR1YWxEZXNjcmlwdG9yID0gaXNWaXJ0dWFsRGVzY3JpcHRvcjtcbi8qKlxuICogUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGxvY2F0b3IgaXMgdmlydHVhbC5cbiAqL1xuZnVuY3Rpb24gaXNWaXJ0dWFsTG9jYXRvcihsb2NhdG9yKSB7XG4gICAgcmV0dXJuIGxvY2F0b3IucmVmZXJlbmNlLnN0YXJ0c1dpdGgoVklSVFVBTF9QUk9UT0NPTCk7XG59XG5leHBvcnRzLmlzVmlydHVhbExvY2F0b3IgPSBpc1ZpcnR1YWxMb2NhdG9yO1xuLyoqXG4gKiBSZXR1cm5zIGEgbmV3IGRldmlydHVhbGl6ZWQgZGVzY3JpcHRvciBiYXNlZCBvbiBhIHZpcnR1YWxpemVkIGRlc2NyaXB0b3JcbiAqL1xuZnVuY3Rpb24gZGV2aXJ0dWFsaXplRGVzY3JpcHRvcihkZXNjcmlwdG9yKSB7XG4gICAgaWYgKCFpc1ZpcnR1YWxEZXNjcmlwdG9yKGRlc2NyaXB0b3IpKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE5vdCBhIHZpcnR1YWwgZGVzY3JpcHRvcmApO1xuICAgIHJldHVybiBtYWtlRGVzY3JpcHRvcihkZXNjcmlwdG9yLCBkZXNjcmlwdG9yLnJhbmdlLnJlcGxhY2UoL15bXiNdKiMvLCBgYCkpO1xufVxuZXhwb3J0cy5kZXZpcnR1YWxpemVEZXNjcmlwdG9yID0gZGV2aXJ0dWFsaXplRGVzY3JpcHRvcjtcbi8qKlxuICogUmV0dXJucyBhIG5ldyBkZXZpcnR1YWxpemVkIGxvY2F0b3IgYmFzZWQgb24gYSB2aXJ0dWFsaXplZCBsb2NhdG9yXG4gKiBAcGFyYW0gbG9jYXRvciB0aGUgbG9jYXRvclxuICovXG5mdW5jdGlvbiBkZXZpcnR1YWxpemVMb2NhdG9yKGxvY2F0b3IpIHtcbiAgICBpZiAoIWlzVmlydHVhbExvY2F0b3IobG9jYXRvcikpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgTm90IGEgdmlydHVhbCBkZXNjcmlwdG9yYCk7XG4gICAgcmV0dXJuIG1ha2VMb2NhdG9yKGxvY2F0b3IsIGxvY2F0b3IucmVmZXJlbmNlLnJlcGxhY2UoL15bXiNdKiMvLCBgYCkpO1xufVxuZXhwb3J0cy5kZXZpcnR1YWxpemVMb2NhdG9yID0gZGV2aXJ0dWFsaXplTG9jYXRvcjtcbi8qKlxuICogUmV0dXJucyBhIGRlc2NyaXB0b3IgZ3VhcmFudGVlZCB0byBiZSBkZXZpcnR1YWxpemVkXG4gKi9cbmZ1bmN0aW9uIGVuc3VyZURldmlydHVhbGl6ZWREZXNjcmlwdG9yKGRlc2NyaXB0b3IpIHtcbiAgICBpZiAoIWlzVmlydHVhbERlc2NyaXB0b3IoZGVzY3JpcHRvcikpXG4gICAgICAgIHJldHVybiBkZXNjcmlwdG9yO1xuICAgIHJldHVybiBtYWtlRGVzY3JpcHRvcihkZXNjcmlwdG9yLCBkZXNjcmlwdG9yLnJhbmdlLnJlcGxhY2UoL15bXiNdKiMvLCBgYCkpO1xufVxuZXhwb3J0cy5lbnN1cmVEZXZpcnR1YWxpemVkRGVzY3JpcHRvciA9IGVuc3VyZURldmlydHVhbGl6ZWREZXNjcmlwdG9yO1xuLyoqXG4gKiBSZXR1cm5zIGEgbG9jYXRvciBndWFyYW50ZWVkIHRvIGJlIGRldmlydHVhbGl6ZWRcbiAqIEBwYXJhbSBsb2NhdG9yIHRoZSBsb2NhdG9yXG4gKi9cbmZ1bmN0aW9uIGVuc3VyZURldmlydHVhbGl6ZWRMb2NhdG9yKGxvY2F0b3IpIHtcbiAgICBpZiAoIWlzVmlydHVhbExvY2F0b3IobG9jYXRvcikpXG4gICAgICAgIHJldHVybiBsb2NhdG9yO1xuICAgIHJldHVybiBtYWtlTG9jYXRvcihsb2NhdG9yLCBsb2NhdG9yLnJlZmVyZW5jZS5yZXBsYWNlKC9eW14jXSojLywgYGApKTtcbn1cbmV4cG9ydHMuZW5zdXJlRGV2aXJ0dWFsaXplZExvY2F0b3IgPSBlbnN1cmVEZXZpcnR1YWxpemVkTG9jYXRvcjtcbi8qKlxuICogU29tZSBkZXNjcmlwdG9ycyBvbmx5IG1ha2Ugc2Vuc2Ugd2hlbiBib3VuZCB3aXRoIHNvbWUgaW50ZXJuYWwgc3RhdGUuIEZvclxuICogaW5zdGFuY2UgdGhhdCB3b3VsZCBiZSB0aGUgY2FzZSBmb3IgdGhlIGBmaWxlOmAgcmFuZ2VzLCB3aGljaCByZXF1aXJlIHRvXG4gKiBiZSBib3VuZCB0byB0aGVpciBwYXJlbnQgcGFja2FnZXMgaW4gb3JkZXIgdG8gcmVzb2x2ZSByZWxhdGl2ZSBwYXRocyBmcm9tXG4gKiB0aGUgcmlnaHQgbG9jYXRpb24uXG4gKlxuICogVGhpcyBmdW5jdGlvbiB3aWxsIGFwcGx5IHRoZSBzcGVjaWZpZWQgcGFyYW1ldGVycyBvbnRvIHRoZSByZXF1ZXN0ZWRcbiAqIGRlc2NyaXB0b3IsIGJ1dCBvbmx5IGlmIGl0IGRpZG4ndCBnZXQgYm91bmQgYmVmb3JlIChpbXBvcnRhbnQgdG8gaGFuZGxlIHRoZVxuICogY2FzZSB3aGVyZSB3ZSByZXBsYWNlIGEgZGVzY3JpcHRvciBieSBhbm90aGVyLCBzaW5jZSB3aGVuIHRoYXQgaGFwcGVucyB0aGVcbiAqIHJlcGxhY2VtZW50IGhhcyBwcm9iYWJseSBiZWVuIGFscmVhZHkgYm91bmQpLlxuICpcbiAqIEBwYXJhbSBkZXNjcmlwdG9yIFRoZSBvcmlnaW5hbCBkZXNjcmlwdG9yXG4gKiBAcGFyYW0gcGFyYW1zIFRoZSBwYXJhbWV0ZXJzIHRvIGVuY29kZSBpbiB0aGUgcmFuZ2VcbiAqL1xuZnVuY3Rpb24gYmluZERlc2NyaXB0b3IoZGVzY3JpcHRvciwgcGFyYW1zKSB7XG4gICAgaWYgKGRlc2NyaXB0b3IucmFuZ2UuaW5jbHVkZXMoYDo6YCkpXG4gICAgICAgIHJldHVybiBkZXNjcmlwdG9yO1xuICAgIHJldHVybiBtYWtlRGVzY3JpcHRvcihkZXNjcmlwdG9yLCBgJHtkZXNjcmlwdG9yLnJhbmdlfTo6JHtxdWVyeXN0cmluZ18xLmRlZmF1bHQuc3RyaW5naWZ5KHBhcmFtcyl9YCk7XG59XG5leHBvcnRzLmJpbmREZXNjcmlwdG9yID0gYmluZERlc2NyaXB0b3I7XG4vKipcbiAqIFNvbWUgbG9jYXRvcnMgb25seSBtYWtlIHNlbnNlIHdoZW4gYm91bmQgd2l0aCBzb21lIGludGVybmFsIHN0YXRlLiBGb3JcbiAqIGluc3RhbmNlIHRoYXQgd291bGQgYmUgdGhlIGNhc2UgZm9yIHRoZSBgZmlsZTpgIHJlZmVyZW5jZXMsIHdoaWNoIHJlcXVpcmUgdG9cbiAqIGJlIGJvdW5kIHRvIHRoZWlyIHBhcmVudCBwYWNrYWdlcyBpbiBvcmRlciB0byByZXNvbHZlIHJlbGF0aXZlIHBhdGhzIGZyb21cbiAqIHRoZSByaWdodCBsb2NhdGlvbi5cbiAqXG4gKiBUaGlzIGZ1bmN0aW9uIHdpbGwgYXBwbHkgdGhlIHNwZWNpZmllZCBwYXJhbWV0ZXJzIG9udG8gdGhlIHJlcXVlc3RlZFxuICogbG9jYXRvciwgYnV0IG9ubHkgaWYgaXQgZGlkbid0IGdldCBib3VuZCBiZWZvcmUgKGltcG9ydGFudCB0byBoYW5kbGUgdGhlXG4gKiBjYXNlIHdoZXJlIHdlIHJlcGxhY2UgYSBsb2NhdG9yIGJ5IGFub3RoZXIsIHNpbmNlIHdoZW4gdGhhdCBoYXBwZW5zIHRoZVxuICogcmVwbGFjZW1lbnQgaGFzIHByb2JhYmx5IGJlZW4gYWxyZWFkeSBib3VuZCkuXG4gKlxuICogQHBhcmFtIGxvY2F0b3IgVGhlIG9yaWdpbmFsIGxvY2F0b3JcbiAqIEBwYXJhbSBwYXJhbXMgVGhlIHBhcmFtZXRlcnMgdG8gZW5jb2RlIGluIHRoZSByZWZlcmVuY2VcbiAqL1xuZnVuY3Rpb24gYmluZExvY2F0b3IobG9jYXRvciwgcGFyYW1zKSB7XG4gICAgaWYgKGxvY2F0b3IucmVmZXJlbmNlLmluY2x1ZGVzKGA6OmApKVxuICAgICAgICByZXR1cm4gbG9jYXRvcjtcbiAgICByZXR1cm4gbWFrZUxvY2F0b3IobG9jYXRvciwgYCR7bG9jYXRvci5yZWZlcmVuY2V9Ojoke3F1ZXJ5c3RyaW5nXzEuZGVmYXVsdC5zdHJpbmdpZnkocGFyYW1zKX1gKTtcbn1cbmV4cG9ydHMuYmluZExvY2F0b3IgPSBiaW5kTG9jYXRvcjtcbi8qKlxuICogUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGlkZW50cyBhcmUgZXF1YWxcbiAqL1xuZnVuY3Rpb24gYXJlSWRlbnRzRXF1YWwoYSwgYikge1xuICAgIHJldHVybiBhLmlkZW50SGFzaCA9PT0gYi5pZGVudEhhc2g7XG59XG5leHBvcnRzLmFyZUlkZW50c0VxdWFsID0gYXJlSWRlbnRzRXF1YWw7XG4vKipcbiAqIFJldHVybnMgYHRydWVgIGlmIHRoZSBkZXNjcmlwdG9ycyBhcmUgZXF1YWxcbiAqL1xuZnVuY3Rpb24gYXJlRGVzY3JpcHRvcnNFcXVhbChhLCBiKSB7XG4gICAgcmV0dXJuIGEuZGVzY3JpcHRvckhhc2ggPT09IGIuZGVzY3JpcHRvckhhc2g7XG59XG5leHBvcnRzLmFyZURlc2NyaXB0b3JzRXF1YWwgPSBhcmVEZXNjcmlwdG9yc0VxdWFsO1xuLyoqXG4gKiBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgbG9jYXRvcnMgYXJlIGVxdWFsXG4gKi9cbmZ1bmN0aW9uIGFyZUxvY2F0b3JzRXF1YWwoYSwgYikge1xuICAgIHJldHVybiBhLmxvY2F0b3JIYXNoID09PSBiLmxvY2F0b3JIYXNoO1xufVxuZXhwb3J0cy5hcmVMb2NhdG9yc0VxdWFsID0gYXJlTG9jYXRvcnNFcXVhbDtcbi8qKlxuICogVmlydHVhbCBwYWNrYWdlcyBhcmUgY29uc2lkZXJlZCBlcXVpdmFsZW50IHdoZW4gdGhleSBiZWxvbmcgdG8gdGhlIHNhbWVcbiAqIHBhY2thZ2UgaWRlbnRpdHkgYW5kIGhhdmUgdGhlIHNhbWUgZGVwZW5kZW5jaWVzLiBOb3RlIHRoYXQgZXF1aXZhbGVuY2VcbiAqIGlzIG5vdCB0aGUgc2FtZSBhcyBlcXVhbGl0eSwgYXMgdGhlIHJlZmVyZW5jZXMgbWF5IGJlIGRpZmZlcmVudC5cbiAqL1xuZnVuY3Rpb24gYXJlVmlydHVhbFBhY2thZ2VzRXF1aXZhbGVudChhLCBiKSB7XG4gICAgaWYgKCFpc1ZpcnR1YWxMb2NhdG9yKGEpKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgcGFja2FnZSB0eXBlYCk7XG4gICAgaWYgKCFpc1ZpcnR1YWxMb2NhdG9yKGIpKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgcGFja2FnZSB0eXBlYCk7XG4gICAgaWYgKCFhcmVJZGVudHNFcXVhbChhLCBiKSlcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIGlmIChhLmRlcGVuZGVuY2llcy5zaXplICE9PSBiLmRlcGVuZGVuY2llcy5zaXplKVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgZm9yIChjb25zdCBkZXBlbmRlbmN5RGVzY3JpcHRvckEgb2YgYS5kZXBlbmRlbmNpZXMudmFsdWVzKCkpIHtcbiAgICAgICAgY29uc3QgZGVwZW5kZW5jeURlc2NyaXB0b3JCID0gYi5kZXBlbmRlbmNpZXMuZ2V0KGRlcGVuZGVuY3lEZXNjcmlwdG9yQS5pZGVudEhhc2gpO1xuICAgICAgICBpZiAoIWRlcGVuZGVuY3lEZXNjcmlwdG9yQilcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgaWYgKCFhcmVEZXNjcmlwdG9yc0VxdWFsKGRlcGVuZGVuY3lEZXNjcmlwdG9yQSwgZGVwZW5kZW5jeURlc2NyaXB0b3JCKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xufVxuZXhwb3J0cy5hcmVWaXJ0dWFsUGFja2FnZXNFcXVpdmFsZW50ID0gYXJlVmlydHVhbFBhY2thZ2VzRXF1aXZhbGVudDtcbi8qKlxuICogUGFyc2VzIGEgc3RyaW5nIGludG8gYW4gaWRlbnQuXG4gKlxuICogVGhyb3dzIGFuIGVycm9yIGlmIHRoZSBpZGVudCBjYW5ub3QgYmUgcGFyc2VkLlxuICpcbiAqIEBwYXJhbSBzdHJpbmcgVGhlIGlkZW50IHN0cmluZyAoZWcuIGBAdHlwZXMvbG9kYXNoYClcbiAqL1xuZnVuY3Rpb24gcGFyc2VJZGVudChzdHJpbmcpIHtcbiAgICBjb25zdCBpZGVudCA9IHRyeVBhcnNlSWRlbnQoc3RyaW5nKTtcbiAgICBpZiAoIWlkZW50KVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgaWRlbnQgKCR7c3RyaW5nfSlgKTtcbiAgICByZXR1cm4gaWRlbnQ7XG59XG5leHBvcnRzLnBhcnNlSWRlbnQgPSBwYXJzZUlkZW50O1xuLyoqXG4gKiBQYXJzZXMgYSBzdHJpbmcgaW50byBhbiBpZGVudC5cbiAqXG4gKiBSZXR1cm5zIGBudWxsYCBpZiB0aGUgaWRlbnQgY2Fubm90IGJlIHBhcnNlZC5cbiAqXG4gKiBAcGFyYW0gc3RyaW5nIFRoZSBpZGVudCBzdHJpbmcgKGVnLiBgQHR5cGVzL2xvZGFzaGApXG4gKi9cbmZ1bmN0aW9uIHRyeVBhcnNlSWRlbnQoc3RyaW5nKSB7XG4gICAgY29uc3QgbWF0Y2ggPSBzdHJpbmcubWF0Y2goL14oPzpAKFteL10rPylcXC8pPyhbXi9dKykkLyk7XG4gICAgaWYgKCFtYXRjaClcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgY29uc3QgWywgc2NvcGUsIG5hbWVdID0gbWF0Y2g7XG4gICAgY29uc3QgcmVhbFNjb3BlID0gdHlwZW9mIHNjb3BlICE9PSBgdW5kZWZpbmVkYFxuICAgICAgICA/IHNjb3BlXG4gICAgICAgIDogbnVsbDtcbiAgICByZXR1cm4gbWFrZUlkZW50KHJlYWxTY29wZSwgbmFtZSk7XG59XG5leHBvcnRzLnRyeVBhcnNlSWRlbnQgPSB0cnlQYXJzZUlkZW50O1xuLyoqXG4gKiBQYXJzZXMgYSBgc3RyaW5nYCBpbnRvIGEgZGVzY3JpcHRvclxuICpcbiAqIFRocm93cyBhbiBlcnJvciBpZiB0aGUgZGVzY3JpcHRvciBjYW5ub3QgYmUgcGFyc2VkLlxuICpcbiAqIEBwYXJhbSBzdHJpbmcgVGhlIGRlc2NyaXB0b3Igc3RyaW5nIChlZy4gYGxvZGFzaEBeMS4wLjBgKVxuICogQHBhcmFtIHN0cmljdCBJZiBgZmFsc2VgLCB0aGUgcmFuZ2UgaXMgb3B0aW9uYWwgKGB1bmtub3duYCB3aWxsIGJlIHVzZWQgYXMgZmFsbGJhY2spXG4gKi9cbmZ1bmN0aW9uIHBhcnNlRGVzY3JpcHRvcihzdHJpbmcsIHN0cmljdCA9IGZhbHNlKSB7XG4gICAgY29uc3QgZGVzY3JpcHRvciA9IHRyeVBhcnNlRGVzY3JpcHRvcihzdHJpbmcsIHN0cmljdCk7XG4gICAgaWYgKCFkZXNjcmlwdG9yKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgZGVzY3JpcHRvciAoJHtzdHJpbmd9KWApO1xuICAgIHJldHVybiBkZXNjcmlwdG9yO1xufVxuZXhwb3J0cy5wYXJzZURlc2NyaXB0b3IgPSBwYXJzZURlc2NyaXB0b3I7XG4vKipcbiAqIFBhcnNlcyBhIGBzdHJpbmdgIGludG8gYSBkZXNjcmlwdG9yXG4gKlxuICogUmV0dXJucyBgbnVsbGAgaWYgdGhlIGRlc2NyaXB0b3IgY2Fubm90IGJlIHBhcnNlZC5cbiAqXG4gKiBAcGFyYW0gc3RyaW5nIFRoZSBkZXNjcmlwdG9yIHN0cmluZyAoZWcuIGBsb2Rhc2hAXjEuMC4wYClcbiAqIEBwYXJhbSBzdHJpY3QgSWYgYGZhbHNlYCwgdGhlIHJhbmdlIGlzIG9wdGlvbmFsIChgdW5rbm93bmAgd2lsbCBiZSB1c2VkIGFzIGZhbGxiYWNrKVxuICovXG5mdW5jdGlvbiB0cnlQYXJzZURlc2NyaXB0b3Ioc3RyaW5nLCBzdHJpY3QgPSBmYWxzZSkge1xuICAgIGNvbnN0IG1hdGNoID0gc3RyaWN0XG4gICAgICAgID8gc3RyaW5nLm1hdGNoKC9eKD86QChbXi9dKz8pXFwvKT8oW14vXSs/KSg/OkAoLispKSQvKVxuICAgICAgICA6IHN0cmluZy5tYXRjaCgvXig/OkAoW14vXSs/KVxcLyk/KFteL10rPykoPzpAKC4rKSk/JC8pO1xuICAgIGlmICghbWF0Y2gpXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIGNvbnN0IFssIHNjb3BlLCBuYW1lLCByYW5nZV0gPSBtYXRjaDtcbiAgICBpZiAocmFuZ2UgPT09IGB1bmtub3duYClcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHJhbmdlICgke3N0cmluZ30pYCk7XG4gICAgY29uc3QgcmVhbFNjb3BlID0gdHlwZW9mIHNjb3BlICE9PSBgdW5kZWZpbmVkYFxuICAgICAgICA/IHNjb3BlXG4gICAgICAgIDogbnVsbDtcbiAgICBjb25zdCByZWFsUmFuZ2UgPSB0eXBlb2YgcmFuZ2UgIT09IGB1bmRlZmluZWRgXG4gICAgICAgID8gcmFuZ2VcbiAgICAgICAgOiBgdW5rbm93bmA7XG4gICAgcmV0dXJuIG1ha2VEZXNjcmlwdG9yKG1ha2VJZGVudChyZWFsU2NvcGUsIG5hbWUpLCByZWFsUmFuZ2UpO1xufVxuZXhwb3J0cy50cnlQYXJzZURlc2NyaXB0b3IgPSB0cnlQYXJzZURlc2NyaXB0b3I7XG4vKipcbiAqIFBhcnNlcyBhIGBzdHJpbmdgIGludG8gYSBsb2NhdG9yXG4gKlxuICogVGhyb3dzIGFuIGVycm9yIGlmIHRoZSBsb2NhdG9yIGNhbm5vdCBiZSBwYXJzZWQuXG4gKlxuICogQHBhcmFtIHN0cmluZyBUaGUgbG9jYXRvciBgc3RyaW5nYCAoZWcuIGBsb2Rhc2hAMS4wLjBgKVxuICogQHBhcmFtIHN0cmljdCBJZiBgZmFsc2VgLCB0aGUgcmVmZXJlbmNlIGlzIG9wdGlvbmFsIChgdW5rbm93bmAgd2lsbCBiZSB1c2VkIGFzIGZhbGxiYWNrKVxuICovXG5mdW5jdGlvbiBwYXJzZUxvY2F0b3Ioc3RyaW5nLCBzdHJpY3QgPSBmYWxzZSkge1xuICAgIGNvbnN0IGxvY2F0b3IgPSB0cnlQYXJzZUxvY2F0b3Ioc3RyaW5nLCBzdHJpY3QpO1xuICAgIGlmICghbG9jYXRvcilcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGxvY2F0b3IgKCR7c3RyaW5nfSlgKTtcbiAgICByZXR1cm4gbG9jYXRvcjtcbn1cbmV4cG9ydHMucGFyc2VMb2NhdG9yID0gcGFyc2VMb2NhdG9yO1xuLyoqXG4gKiBQYXJzZXMgYSBgc3RyaW5nYCBpbnRvIGEgbG9jYXRvclxuICpcbiAqIFJldHVybnMgYG51bGxgIGlmIHRoZSBsb2NhdG9yIGNhbm5vdCBiZSBwYXJzZWQuXG4gKlxuICogQHBhcmFtIHN0cmluZyBUaGUgbG9jYXRvciBzdHJpbmcgKGVnLiBgbG9kYXNoQDEuMC4wYClcbiAqIEBwYXJhbSBzdHJpY3QgSWYgYGZhbHNlYCwgdGhlIHJlZmVyZW5jZSBpcyBvcHRpb25hbCAoYHVua25vd25gIHdpbGwgYmUgdXNlZCBhcyBmYWxsYmFjaylcbiAqL1xuZnVuY3Rpb24gdHJ5UGFyc2VMb2NhdG9yKHN0cmluZywgc3RyaWN0ID0gZmFsc2UpIHtcbiAgICBjb25zdCBtYXRjaCA9IHN0cmljdFxuICAgICAgICA/IHN0cmluZy5tYXRjaCgvXig/OkAoW14vXSs/KVxcLyk/KFteL10rPykoPzpAKC4rKSkkLylcbiAgICAgICAgOiBzdHJpbmcubWF0Y2goL14oPzpAKFteL10rPylcXC8pPyhbXi9dKz8pKD86QCguKykpPyQvKTtcbiAgICBpZiAoIW1hdGNoKVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICBjb25zdCBbLCBzY29wZSwgbmFtZSwgcmVmZXJlbmNlXSA9IG1hdGNoO1xuICAgIGlmIChyZWZlcmVuY2UgPT09IGB1bmtub3duYClcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHJlZmVyZW5jZSAoJHtzdHJpbmd9KWApO1xuICAgIGNvbnN0IHJlYWxTY29wZSA9IHR5cGVvZiBzY29wZSAhPT0gYHVuZGVmaW5lZGBcbiAgICAgICAgPyBzY29wZVxuICAgICAgICA6IG51bGw7XG4gICAgY29uc3QgcmVhbFJlZmVyZW5jZSA9IHR5cGVvZiByZWZlcmVuY2UgIT09IGB1bmRlZmluZWRgXG4gICAgICAgID8gcmVmZXJlbmNlXG4gICAgICAgIDogYHVua25vd25gO1xuICAgIHJldHVybiBtYWtlTG9jYXRvcihtYWtlSWRlbnQocmVhbFNjb3BlLCBuYW1lKSwgcmVhbFJlZmVyZW5jZSk7XG59XG5leHBvcnRzLnRyeVBhcnNlTG9jYXRvciA9IHRyeVBhcnNlTG9jYXRvcjtcbi8qKlxuICogUGFyc2VzIGEgcmFuZ2UgaW50byBpdHMgY29uc3RpdHVlbnRzLiBSYW5nZXMgdHlwaWNhbGx5IGZvbGxvdyB0aGVzZSBmb3JtcyxcbiAqIHdpdGggYm90aCBgcHJvdG9jb2xgIGFuZCBgYmluZGluZ3NgIGJlaW5nIG9wdGlvbmFsczpcbiAqXG4gKiAgICAgPHByb3RvY29sPjo8c2VsZWN0b3I+Ojo8YmluZGluZ3M+XG4gKiAgICAgPHByb3RvY29sPjo8c291cmNlPiM8c2VsZWN0b3I+Ojo8YmluZGluZ3M+XG4gKlxuICogVGhlIHNlbGVjdG9yIGlzIGludGVuZGVkIHRvIFwicmVmaW5lXCIgdGhlIHNvdXJjZSwgYW5kIGlzIHJlcXVpcmVkLiBUaGUgc291cmNlXG4gKiBpdHNlbGYgaXMgb3B0aW9uYWwgKGZvciBpbnN0YW5jZSB3ZSBkb24ndCBuZWVkIGl0IGZvciBucG0gcGFja2FnZXMsIGJ1dCB3ZVxuICogZG8gZm9yIGdpdCBkZXBlbmRlbmNpZXMpLlxuICovXG5mdW5jdGlvbiBwYXJzZVJhbmdlKHJhbmdlLCBvcHRzKSB7XG4gICAgY29uc3QgbWF0Y2ggPSByYW5nZS5tYXRjaCgvXihbXiM6XSo6KT8oKD86KD8hOjopW14jXSkqKSg/OiMoKD86KD8hOjopLikqKSk/KD86OjooLiopKT8kLyk7XG4gICAgaWYgKG1hdGNoID09PSBudWxsKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgcmFuZ2UgKCR7cmFuZ2V9KWApO1xuICAgIGNvbnN0IHByb3RvY29sID0gdHlwZW9mIG1hdGNoWzFdICE9PSBgdW5kZWZpbmVkYFxuICAgICAgICA/IG1hdGNoWzFdXG4gICAgICAgIDogbnVsbDtcbiAgICBpZiAodHlwZW9mIChvcHRzID09PSBudWxsIHx8IG9wdHMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdHMucmVxdWlyZVByb3RvY29sKSA9PT0gYHN0cmluZ2AgJiYgcHJvdG9jb2wgIT09IG9wdHMucmVxdWlyZVByb3RvY29sKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgcHJvdG9jb2wgKCR7cHJvdG9jb2x9KWApO1xuICAgIGVsc2UgaWYgKChvcHRzID09PSBudWxsIHx8IG9wdHMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdHMucmVxdWlyZVByb3RvY29sKSAmJiBwcm90b2NvbCA9PT0gbnVsbClcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBNaXNzaW5nIHByb3RvY29sICgke3Byb3RvY29sfSlgKTtcbiAgICBjb25zdCBzb3VyY2UgPSB0eXBlb2YgbWF0Y2hbM10gIT09IGB1bmRlZmluZWRgXG4gICAgICAgID8gZGVjb2RlVVJJQ29tcG9uZW50KG1hdGNoWzJdKVxuICAgICAgICA6IG51bGw7XG4gICAgaWYgKChvcHRzID09PSBudWxsIHx8IG9wdHMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdHMucmVxdWlyZVNvdXJjZSkgJiYgc291cmNlID09PSBudWxsKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE1pc3Npbmcgc291cmNlICgke3JhbmdlfSlgKTtcbiAgICBjb25zdCByYXdTZWxlY3RvciA9IHR5cGVvZiBtYXRjaFszXSAhPT0gYHVuZGVmaW5lZGBcbiAgICAgICAgPyBkZWNvZGVVUklDb21wb25lbnQobWF0Y2hbM10pXG4gICAgICAgIDogZGVjb2RlVVJJQ29tcG9uZW50KG1hdGNoWzJdKTtcbiAgICBjb25zdCBzZWxlY3RvciA9IChvcHRzID09PSBudWxsIHx8IG9wdHMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdHMucGFyc2VTZWxlY3RvcilcbiAgICAgICAgPyBxdWVyeXN0cmluZ18xLmRlZmF1bHQucGFyc2UocmF3U2VsZWN0b3IpXG4gICAgICAgIDogcmF3U2VsZWN0b3I7XG4gICAgY29uc3QgcGFyYW1zID0gdHlwZW9mIG1hdGNoWzRdICE9PSBgdW5kZWZpbmVkYFxuICAgICAgICA/IHF1ZXJ5c3RyaW5nXzEuZGVmYXVsdC5wYXJzZShtYXRjaFs0XSlcbiAgICAgICAgOiBudWxsO1xuICAgIHJldHVybiB7XG4gICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICAgICAgcHJvdG9jb2wsXG4gICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICAgICAgc291cmNlLFxuICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgICAgIHNlbGVjdG9yLFxuICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgICAgIHBhcmFtcyxcbiAgICB9O1xufVxuZXhwb3J0cy5wYXJzZVJhbmdlID0gcGFyc2VSYW5nZTtcbi8qKlxuICogUGFyc2VzIGEgcmFuZ2UgaW50byBpdHMgY29uc3RpdHVlbnRzLiBSYW5nZXMgdHlwaWNhbGx5IGZvbGxvdyB0aGVzZSBmb3JtcyxcbiAqIHdpdGggYm90aCBgcHJvdG9jb2xgIGFuZCBgYmluZGluZ3NgIGJlaW5nIG9wdGlvbmFsczpcbiAqXG4gKiAgICAgPHByb3RvY29sPjo8c2VsZWN0b3I+Ojo8YmluZGluZ3M+XG4gKiAgICAgPHByb3RvY29sPjo8c291cmNlPiM8c2VsZWN0b3I+Ojo8YmluZGluZ3M+XG4gKlxuICogVGhlIHNlbGVjdG9yIGlzIGludGVuZGVkIHRvIFwicmVmaW5lXCIgdGhlIHNvdXJjZSwgYW5kIGlzIHJlcXVpcmVkLiBUaGUgc291cmNlXG4gKiBpdHNlbGYgaXMgb3B0aW9uYWwgKGZvciBpbnN0YW5jZSB3ZSBkb24ndCBuZWVkIGl0IGZvciBucG0gcGFja2FnZXMsIGJ1dCB3ZVxuICogZG8gZm9yIGdpdCBkZXBlbmRlbmNpZXMpLlxuICovXG5mdW5jdGlvbiB0cnlQYXJzZVJhbmdlKHJhbmdlLCBvcHRzKSB7XG4gICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIHBhcnNlUmFuZ2UocmFuZ2UsIG9wdHMpO1xuICAgIH1cbiAgICBjYXRjaCB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbn1cbmV4cG9ydHMudHJ5UGFyc2VSYW5nZSA9IHRyeVBhcnNlUmFuZ2U7XG4vKipcbiAqIEZpbGUtc3R5bGUgcmFuZ2VzIGFyZSBib3VuZCB0byBhIHBhcmVudCBsb2NhdG9ycyB0aGF0IHdlIG5lZWQgaW4gb3JkZXIgdG9cbiAqIHJlc29sdmUgcmVsYXRpdmUgcGF0aHMgdG8gdGhlIGxvY2F0aW9uIG9mIHRoZWlyIHBhcmVudCBwYWNrYWdlcy4gVGhpc1xuICogZnVuY3Rpb24gd3JhcHMgYHBhcnNlUmFuZ2VgIHRvIGF1dG9tYXRpY2FsbHkgZXh0cmFjdCB0aGUgcGFyZW50IGxvY2F0b3JcbiAqIGZyb20gdGhlIGJpbmRpbmdzIGFuZCByZXR1cm4gaXQgYWxvbmcgd2l0aCB0aGUgc2VsZWN0b3IuXG4gKi9cbmZ1bmN0aW9uIHBhcnNlRmlsZVN0eWxlUmFuZ2UocmFuZ2UsIHsgcHJvdG9jb2wgfSkge1xuICAgIGNvbnN0IHsgc2VsZWN0b3IsIHBhcmFtcyB9ID0gcGFyc2VSYW5nZShyYW5nZSwge1xuICAgICAgICByZXF1aXJlUHJvdG9jb2w6IHByb3RvY29sLFxuICAgICAgICByZXF1aXJlQmluZGluZ3M6IHRydWUsXG4gICAgfSk7XG4gICAgaWYgKHR5cGVvZiBwYXJhbXMubG9jYXRvciAhPT0gYHN0cmluZ2ApXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQXNzZXJ0aW9uIGZhaWxlZDogSW52YWxpZCBiaW5kaW5ncyBmb3IgJHtyYW5nZX1gKTtcbiAgICBjb25zdCBwYXJlbnRMb2NhdG9yID0gcGFyc2VMb2NhdG9yKHBhcmFtcy5sb2NhdG9yLCB0cnVlKTtcbiAgICBjb25zdCBwYXRoID0gc2VsZWN0b3I7XG4gICAgcmV0dXJuIHsgcGFyZW50TG9jYXRvciwgcGF0aCB9O1xufVxuZXhwb3J0cy5wYXJzZUZpbGVTdHlsZVJhbmdlID0gcGFyc2VGaWxlU3R5bGVSYW5nZTtcbmZ1bmN0aW9uIGVuY29kZVVuc2FmZUNoYXJhY3RlcnMoc3RyKSB7XG4gICAgc3RyID0gc3RyLnJlcGxhY2UoLyUvZywgYCUyNWApO1xuICAgIHN0ciA9IHN0ci5yZXBsYWNlKC86L2csIGAlM0FgKTtcbiAgICBzdHIgPSBzdHIucmVwbGFjZSgvIy9nLCBgJTIzYCk7XG4gICAgcmV0dXJuIHN0cjtcbn1cbmZ1bmN0aW9uIGhhc1BhcmFtcyhwYXJhbXMpIHtcbiAgICBpZiAocGFyYW1zID09PSBudWxsKVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHBhcmFtcykubGVuZ3RoID4gMDtcbn1cbi8qKlxuICogVHVybiB0aGUgY29tcG9uZW50cyByZXR1cm5lZCBieSBgcGFyc2VSYW5nZWAgYmFjayBpbnRvIGEgc3RyaW5nLiBDaGVja1xuICogYHBhcnNlUmFuZ2VgIGZvciBtb3JlIGRldGFpbHMuXG4gKi9cbmZ1bmN0aW9uIG1ha2VSYW5nZSh7IHByb3RvY29sLCBzb3VyY2UsIHNlbGVjdG9yLCBwYXJhbXMgfSkge1xuICAgIGxldCByYW5nZSA9IGBgO1xuICAgIGlmIChwcm90b2NvbCAhPT0gbnVsbClcbiAgICAgICAgcmFuZ2UgKz0gYCR7cHJvdG9jb2x9YDtcbiAgICBpZiAoc291cmNlICE9PSBudWxsKVxuICAgICAgICByYW5nZSArPSBgJHtlbmNvZGVVbnNhZmVDaGFyYWN0ZXJzKHNvdXJjZSl9I2A7XG4gICAgcmFuZ2UgKz0gZW5jb2RlVW5zYWZlQ2hhcmFjdGVycyhzZWxlY3Rvcik7XG4gICAgaWYgKGhhc1BhcmFtcyhwYXJhbXMpKVxuICAgICAgICByYW5nZSArPSBgOjoke3F1ZXJ5c3RyaW5nXzEuZGVmYXVsdC5zdHJpbmdpZnkocGFyYW1zKX1gO1xuICAgIHJldHVybiByYW5nZTtcbn1cbmV4cG9ydHMubWFrZVJhbmdlID0gbWFrZVJhbmdlO1xuLyoqXG4gKiBTb21lIGJpbmRpbmdzIGFyZSBpbnRlcm5hbC1vbmx5IGFuZCBub3QgbWVhbnQgdG8gYmUgZGlzcGxheWVkIGFueXdoZXJlIChmb3JcbiAqIGluc3RhbmNlIHRoYXQncyB0aGUgY2FzZSB3aXRoIHRoZSBwYXJlbnQgbG9jYXRvciBib3VuZCB0byB0aGUgYGZpbGU6YCByYW5nZXMpLlxuICpcbiAqIHRoaXMgZnVuY3Rpb24gc3RyaXBzIHRoZW0gZnJvbSBhIHJhbmdlLlxuICovXG5mdW5jdGlvbiBjb252ZXJ0VG9NYW5pZmVzdFJhbmdlKHJhbmdlKSB7XG4gICAgY29uc3QgeyBwYXJhbXMsIHByb3RvY29sLCBzb3VyY2UsIHNlbGVjdG9yIH0gPSBwYXJzZVJhbmdlKHJhbmdlKTtcbiAgICBmb3IgKGNvbnN0IG5hbWUgaW4gcGFyYW1zKVxuICAgICAgICBpZiAobmFtZS5zdGFydHNXaXRoKGBfX2ApKVxuICAgICAgICAgICAgZGVsZXRlIHBhcmFtc1tuYW1lXTtcbiAgICByZXR1cm4gbWFrZVJhbmdlKHsgcHJvdG9jb2wsIHNvdXJjZSwgcGFyYW1zLCBzZWxlY3RvciB9KTtcbn1cbmV4cG9ydHMuY29udmVydFRvTWFuaWZlc3RSYW5nZSA9IGNvbnZlcnRUb01hbmlmZXN0UmFuZ2U7XG4vKipcbiAqIFJldHVybnMgYSBzdHJpbmcgZnJvbSBhbiBpZGVudCAoZWcuIGBAdHlwZXMvbG9kYXNoYCkuXG4gKi9cbmZ1bmN0aW9uIHN0cmluZ2lmeUlkZW50KGlkZW50KSB7XG4gICAgaWYgKGlkZW50LnNjb3BlKSB7XG4gICAgICAgIHJldHVybiBgQCR7aWRlbnQuc2NvcGV9LyR7aWRlbnQubmFtZX1gO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGAke2lkZW50Lm5hbWV9YDtcbiAgICB9XG59XG5leHBvcnRzLnN0cmluZ2lmeUlkZW50ID0gc3RyaW5naWZ5SWRlbnQ7XG4vKipcbiAqIFJldHVybnMgYSBzdHJpbmcgZnJvbSBhIGRlc2NyaXB0b3IgKGVnLiBgQHR5cGVzL2xvZGFzaEBeMS4wLjBgKS5cbiAqL1xuZnVuY3Rpb24gc3RyaW5naWZ5RGVzY3JpcHRvcihkZXNjcmlwdG9yKSB7XG4gICAgaWYgKGRlc2NyaXB0b3Iuc2NvcGUpIHtcbiAgICAgICAgcmV0dXJuIGBAJHtkZXNjcmlwdG9yLnNjb3BlfS8ke2Rlc2NyaXB0b3IubmFtZX1AJHtkZXNjcmlwdG9yLnJhbmdlfWA7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICByZXR1cm4gYCR7ZGVzY3JpcHRvci5uYW1lfUAke2Rlc2NyaXB0b3IucmFuZ2V9YDtcbiAgICB9XG59XG5leHBvcnRzLnN0cmluZ2lmeURlc2NyaXB0b3IgPSBzdHJpbmdpZnlEZXNjcmlwdG9yO1xuLyoqXG4gKiBSZXR1cm5zIGEgc3RyaW5nIGZyb20gYSBkZXNjcmlwdG9yIChlZy4gYEB0eXBlcy9sb2Rhc2hAMS4wLjBgKS5cbiAqL1xuZnVuY3Rpb24gc3RyaW5naWZ5TG9jYXRvcihsb2NhdG9yKSB7XG4gICAgaWYgKGxvY2F0b3Iuc2NvcGUpIHtcbiAgICAgICAgcmV0dXJuIGBAJHtsb2NhdG9yLnNjb3BlfS8ke2xvY2F0b3IubmFtZX1AJHtsb2NhdG9yLnJlZmVyZW5jZX1gO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGAke2xvY2F0b3IubmFtZX1AJHtsb2NhdG9yLnJlZmVyZW5jZX1gO1xuICAgIH1cbn1cbmV4cG9ydHMuc3RyaW5naWZ5TG9jYXRvciA9IHN0cmluZ2lmeUxvY2F0b3I7XG4vKipcbiAqIFJldHVybnMgYSBzdHJpbmcgZnJvbSBhbiBpZGVudCwgZm9ybWF0dGVkIGFzIGEgc2x1ZyAoZWcuIGBAdHlwZXMtbG9kYXNoYCkuXG4gKi9cbmZ1bmN0aW9uIHNsdWdpZnlJZGVudChpZGVudCkge1xuICAgIGlmIChpZGVudC5zY29wZSAhPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gYEAke2lkZW50LnNjb3BlfS0ke2lkZW50Lm5hbWV9YDtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHJldHVybiBpZGVudC5uYW1lO1xuICAgIH1cbn1cbmV4cG9ydHMuc2x1Z2lmeUlkZW50ID0gc2x1Z2lmeUlkZW50O1xuLyoqXG4gKiBSZXR1cm5zIGEgc3RyaW5nIGZyb20gYSBsb2NhdG9yLCBmb3JtYXR0ZWQgYXMgYSBzbHVnIChlZy4gYEB0eXBlcy1sb2Rhc2gtbnBtLTEuMC4wLWFiY2RlZjEyMzRgKS5cbiAqL1xuZnVuY3Rpb24gc2x1Z2lmeUxvY2F0b3IobG9jYXRvcikge1xuICAgIGNvbnN0IHsgcHJvdG9jb2wsIHNlbGVjdG9yIH0gPSBwYXJzZVJhbmdlKGxvY2F0b3IucmVmZXJlbmNlKTtcbiAgICBjb25zdCBodW1hblByb3RvY29sID0gcHJvdG9jb2wgIT09IG51bGxcbiAgICAgICAgPyBwcm90b2NvbC5yZXBsYWNlKC86JC8sIGBgKVxuICAgICAgICA6IGBleG90aWNgO1xuICAgIGNvbnN0IGh1bWFuVmVyc2lvbiA9IHNlbXZlcl8xLmRlZmF1bHQudmFsaWQoc2VsZWN0b3IpO1xuICAgIGNvbnN0IGh1bWFuUmVmZXJlbmNlID0gaHVtYW5WZXJzaW9uICE9PSBudWxsXG4gICAgICAgID8gYCR7aHVtYW5Qcm90b2NvbH0tJHtodW1hblZlcnNpb259YFxuICAgICAgICA6IGAke2h1bWFuUHJvdG9jb2x9YDtcbiAgICAvLyAxMCBoZXggY2hhcmFjdGVycyBtZWFucyB0aGF0IDQ3IGRpZmZlcmVudCBlbnRyaWVzIGhhdmUgMTBeLTkgY2hhbmNlcyBvZlxuICAgIC8vIGNhdXNpbmcgYSBoYXNoIGNvbGxpc2lvbi4gU2luY2UgdGhpcyBoYXNoIGlzIGpvaW5lZCB3aXRoIHRoZSBwYWNrYWdlIG5hbWVcbiAgICAvLyAobWFraW5nIGl0IGhpZ2hseSB1bmxpa2VseSB5b3UnbGwgaGF2ZSBtb3JlIHRoYW4gYSBoYW5kZnVsIG9mIGluc3RhbmNlc1xuICAgIC8vIG9mIGFueSBzaW5nbGUgcGFja2FnZSksIHRoaXMgc2hvdWxkIHByb3ZpZGUgYSBnb29kIGVub3VnaCBndWFyZCBpbiBtb3N0XG4gICAgLy8gY2FzZXMuXG4gICAgLy9cbiAgICAvLyBBbHNvIG5vdGUgdGhhdCBlQ3J5cHRmcyBlYXRzIHNvbWUgYnl0ZXMsIHNvIHRoZSB0aGVvcmV0aWNhbCBtYXhpbXVtIGZvciBhXG4gICAgLy8gZmlsZSBzaXplIGlzIGFyb3VuZCAxNDAgYnl0ZXMgKGJ1dCB3ZSBkb24ndCBuZWVkIGFzIG11Y2gsIGFzIGV4cGxhaW5lZCkuXG4gICAgY29uc3QgaGFzaFRydW5jYXRlID0gMTA7XG4gICAgY29uc3Qgc2x1ZyA9IGxvY2F0b3Iuc2NvcGVcbiAgICAgICAgPyBgJHtzbHVnaWZ5SWRlbnQobG9jYXRvcil9LSR7aHVtYW5SZWZlcmVuY2V9LSR7bG9jYXRvci5sb2NhdG9ySGFzaC5zbGljZSgwLCBoYXNoVHJ1bmNhdGUpfWBcbiAgICAgICAgOiBgJHtzbHVnaWZ5SWRlbnQobG9jYXRvcil9LSR7aHVtYW5SZWZlcmVuY2V9LSR7bG9jYXRvci5sb2NhdG9ySGFzaC5zbGljZSgwLCBoYXNoVHJ1bmNhdGUpfWA7XG4gICAgcmV0dXJuICgwLCBmc2xpYl8xLnRvRmlsZW5hbWUpKHNsdWcpO1xufVxuZXhwb3J0cy5zbHVnaWZ5TG9jYXRvciA9IHNsdWdpZnlMb2NhdG9yO1xuLyoqXG4gKiBSZXR1cm5zIGEgc3RyaW5nIHRoYXQgaXMgc3VpdGFibGUgdG8gYmUgcHJpbnRlZCB0byBzdGRvdXQuIEJhc2VkIG9uIHRoZVxuICogY29uZmlndXJhdGlvbiBpdCBtYXkgaW5jbHVkZSBjb2xvciBzZXF1ZW5jZXMuXG4gKlxuICogQHBhcmFtIGNvbmZpZ3VyYXRpb24gUmVmZXJlbmNlIGNvbmZpZ3VyYXRpb25cbiAqIEBwYXJhbSBpZGVudCBUaGUgaWRlbnQgdG8gcHJldHR5IHByaW50XG4gKi9cbmZ1bmN0aW9uIHByZXR0eUlkZW50KGNvbmZpZ3VyYXRpb24sIGlkZW50KSB7XG4gICAgaWYgKGlkZW50LnNjb3BlKSB7XG4gICAgICAgIHJldHVybiBgJHtmb3JtYXRVdGlscy5wcmV0dHkoY29uZmlndXJhdGlvbiwgYEAke2lkZW50LnNjb3BlfS9gLCBmb3JtYXRVdGlscy5UeXBlLlNDT1BFKX0ke2Zvcm1hdFV0aWxzLnByZXR0eShjb25maWd1cmF0aW9uLCBpZGVudC5uYW1lLCBmb3JtYXRVdGlscy5UeXBlLk5BTUUpfWA7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICByZXR1cm4gYCR7Zm9ybWF0VXRpbHMucHJldHR5KGNvbmZpZ3VyYXRpb24sIGlkZW50Lm5hbWUsIGZvcm1hdFV0aWxzLlR5cGUuTkFNRSl9YDtcbiAgICB9XG59XG5leHBvcnRzLnByZXR0eUlkZW50ID0gcHJldHR5SWRlbnQ7XG5mdW5jdGlvbiBwcmV0dHlSYW5nZU5vQ29sb3JzKHJhbmdlKSB7XG4gICAgaWYgKHJhbmdlLnN0YXJ0c1dpdGgoVklSVFVBTF9QUk9UT0NPTCkpIHtcbiAgICAgICAgY29uc3QgbmVzdGVkID0gcHJldHR5UmFuZ2VOb0NvbG9ycyhyYW5nZS5zdWJzdHJpbmcocmFuZ2UuaW5kZXhPZihgI2ApICsgMSkpO1xuICAgICAgICBjb25zdCBhYmJyZXYgPSByYW5nZS5zdWJzdHJpbmcoVklSVFVBTF9QUk9UT0NPTC5sZW5ndGgsIFZJUlRVQUxfUFJPVE9DT0wubGVuZ3RoICsgVklSVFVBTF9BQkJSRVZJQVRFKTtcbiAgICAgICAgLy8gSSdtIG5vdCBzYXRpc2ZpZWQgb2YgaG93IHRoZSB2aXJ0dWFsIHBhY2thZ2VzIGFwcGVhciBpbiB0aGUgb3V0cHV0XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zdGFudC1jb25kaXRpb25cbiAgICAgICAgcmV0dXJuIGZhbHNlID8gYCR7bmVzdGVkfSAodmlydHVhbDoke2FiYnJldn0pYCA6IGAke25lc3RlZH0gWyR7YWJicmV2fV1gO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHJhbmdlLnJlcGxhY2UoL1xcPy4qLywgYD9bLi4uXWApO1xuICAgIH1cbn1cbi8qKlxuICogUmV0dXJucyBhIHN0cmluZyB0aGF0IGlzIHN1aXRhYmxlIHRvIGJlIHByaW50ZWQgdG8gc3Rkb3V0LiBCYXNlZCBvbiB0aGVcbiAqIGNvbmZpZ3VyYXRpb24gaXQgbWF5IGluY2x1ZGUgY29sb3Igc2VxdWVuY2VzLlxuICpcbiAqIEBwYXJhbSBjb25maWd1cmF0aW9uIFJlZmVyZW5jZSBjb25maWd1cmF0aW9uXG4gKiBAcGFyYW0gaWRlbnQgVGhlIHJhbmdlIHRvIHByZXR0eSBwcmludFxuICovXG5mdW5jdGlvbiBwcmV0dHlSYW5nZShjb25maWd1cmF0aW9uLCByYW5nZSkge1xuICAgIHJldHVybiBgJHtmb3JtYXRVdGlscy5wcmV0dHkoY29uZmlndXJhdGlvbiwgcHJldHR5UmFuZ2VOb0NvbG9ycyhyYW5nZSksIGZvcm1hdFV0aWxzLlR5cGUuUkFOR0UpfWA7XG59XG5leHBvcnRzLnByZXR0eVJhbmdlID0gcHJldHR5UmFuZ2U7XG4vKipcbiAqIFJldHVybnMgYSBzdHJpbmcgdGhhdCBpcyBzdWl0YWJsZSB0byBiZSBwcmludGVkIHRvIHN0ZG91dC4gQmFzZWQgb24gdGhlXG4gKiBjb25maWd1cmF0aW9uIGl0IG1heSBpbmNsdWRlIGNvbG9yIHNlcXVlbmNlcy5cbiAqXG4gKiBAcGFyYW0gY29uZmlndXJhdGlvbiBSZWZlcmVuY2UgY29uZmlndXJhdGlvblxuICogQHBhcmFtIGRlc2NyaXB0b3IgVGhlIGRlc2NyaXB0b3IgdG8gcHJldHR5IHByaW50XG4gKi9cbmZ1bmN0aW9uIHByZXR0eURlc2NyaXB0b3IoY29uZmlndXJhdGlvbiwgZGVzY3JpcHRvcikge1xuICAgIHJldHVybiBgJHtwcmV0dHlJZGVudChjb25maWd1cmF0aW9uLCBkZXNjcmlwdG9yKX0ke2Zvcm1hdFV0aWxzLnByZXR0eShjb25maWd1cmF0aW9uLCBgQGAsIGZvcm1hdFV0aWxzLlR5cGUuUkFOR0UpfSR7cHJldHR5UmFuZ2UoY29uZmlndXJhdGlvbiwgZGVzY3JpcHRvci5yYW5nZSl9YDtcbn1cbmV4cG9ydHMucHJldHR5RGVzY3JpcHRvciA9IHByZXR0eURlc2NyaXB0b3I7XG4vKipcbiAqIFJldHVybnMgYSBzdHJpbmcgdGhhdCBpcyBzdWl0YWJsZSB0byBiZSBwcmludGVkIHRvIHN0ZG91dC4gQmFzZWQgb24gdGhlXG4gKiBjb25maWd1cmF0aW9uIGl0IG1heSBpbmNsdWRlIGNvbG9yIHNlcXVlbmNlcy5cbiAqXG4gKiBAcGFyYW0gY29uZmlndXJhdGlvbiBSZWZlcmVuY2UgY29uZmlndXJhdGlvblxuICogQHBhcmFtIHJlZmVyZW5jZSBUaGUgcmVmZXJlbmNlIHRvIHByZXR0eSBwcmludFxuICovXG5mdW5jdGlvbiBwcmV0dHlSZWZlcmVuY2UoY29uZmlndXJhdGlvbiwgcmVmZXJlbmNlKSB7XG4gICAgcmV0dXJuIGAke2Zvcm1hdFV0aWxzLnByZXR0eShjb25maWd1cmF0aW9uLCBwcmV0dHlSYW5nZU5vQ29sb3JzKHJlZmVyZW5jZSksIGZvcm1hdFV0aWxzLlR5cGUuUkVGRVJFTkNFKX1gO1xufVxuZXhwb3J0cy5wcmV0dHlSZWZlcmVuY2UgPSBwcmV0dHlSZWZlcmVuY2U7XG4vKipcbiAqIFJldHVybnMgYSBzdHJpbmcgdGhhdCBpcyBzdWl0YWJsZSB0byBiZSBwcmludGVkIHRvIHN0ZG91dC4gQmFzZWQgb24gdGhlXG4gKiBjb25maWd1cmF0aW9uIGl0IG1heSBpbmNsdWRlIGNvbG9yIHNlcXVlbmNlcy5cbiAqXG4gKiBAcGFyYW0gY29uZmlndXJhdGlvbiBSZWZlcmVuY2UgY29uZmlndXJhdGlvblxuICogQHBhcmFtIGxvY2F0b3IgVGhlIGxvY2F0b3IgdG8gcHJldHR5IHByaW50XG4gKi9cbmZ1bmN0aW9uIHByZXR0eUxvY2F0b3IoY29uZmlndXJhdGlvbiwgbG9jYXRvcikge1xuICAgIHJldHVybiBgJHtwcmV0dHlJZGVudChjb25maWd1cmF0aW9uLCBsb2NhdG9yKX0ke2Zvcm1hdFV0aWxzLnByZXR0eShjb25maWd1cmF0aW9uLCBgQGAsIGZvcm1hdFV0aWxzLlR5cGUuUkVGRVJFTkNFKX0ke3ByZXR0eVJlZmVyZW5jZShjb25maWd1cmF0aW9uLCBsb2NhdG9yLnJlZmVyZW5jZSl9YDtcbn1cbmV4cG9ydHMucHJldHR5TG9jYXRvciA9IHByZXR0eUxvY2F0b3I7XG4vKipcbiAqIFJldHVybnMgYSBzdHJpbmcgdGhhdCBpcyBzdWl0YWJsZSB0byBiZSBwcmludGVkIHRvIHN0ZG91dC4gSXQgd2lsbCBuZXZlclxuICogYmUgY29sb3JlZC5cbiAqXG4gKiBAcGFyYW0gbG9jYXRvciBUaGUgbG9jYXRvciB0byBwcmV0dHkgcHJpbnRcbiAqL1xuZnVuY3Rpb24gcHJldHR5TG9jYXRvck5vQ29sb3JzKGxvY2F0b3IpIHtcbiAgICByZXR1cm4gYCR7c3RyaW5naWZ5SWRlbnQobG9jYXRvcil9QCR7cHJldHR5UmFuZ2VOb0NvbG9ycyhsb2NhdG9yLnJlZmVyZW5jZSl9YDtcbn1cbmV4cG9ydHMucHJldHR5TG9jYXRvck5vQ29sb3JzID0gcHJldHR5TG9jYXRvck5vQ29sb3JzO1xuLyoqXG4gKiBTb3J0cyBhIGxpc3Qgb2YgZGVzY3JpcHRvcnMsIGZpcnN0IGJ5IHRoZWlyIGlkZW50cyB0aGVuIGJ5IHRoZWlyIHJhbmdlcy5cbiAqL1xuZnVuY3Rpb24gc29ydERlc2NyaXB0b3JzKGRlc2NyaXB0b3JzKSB7XG4gICAgcmV0dXJuIG1pc2NVdGlscy5zb3J0TWFwKGRlc2NyaXB0b3JzLCBbXG4gICAgICAgIGRlc2NyaXB0b3IgPT4gc3RyaW5naWZ5SWRlbnQoZGVzY3JpcHRvciksXG4gICAgICAgIGRlc2NyaXB0b3IgPT4gZGVzY3JpcHRvci5yYW5nZSxcbiAgICBdKTtcbn1cbmV4cG9ydHMuc29ydERlc2NyaXB0b3JzID0gc29ydERlc2NyaXB0b3JzO1xuLyoqXG4gKiBSZXR1cm5zIGEgc3RyaW5nIHRoYXQgaXMgc3VpdGFibGUgdG8gYmUgcHJpbnRlZCB0byBzdGRvdXQuIEJhc2VkIG9uIHRoZVxuICogY29uZmlndXJhdGlvbiBpdCBtYXkgaW5jbHVkZSBjb2xvciBzZXF1ZW5jZXMuXG4gKlxuICogQHBhcmFtIGNvbmZpZ3VyYXRpb24gUmVmZXJlbmNlIGNvbmZpZ3VyYXRpb25cbiAqIEBwYXJhbSB3b3Jrc3BhY2UgVGhlIHdvcmtzcGFjZSB0byBwcmV0dHkgcHJpbnRcbiAqL1xuZnVuY3Rpb24gcHJldHR5V29ya3NwYWNlKGNvbmZpZ3VyYXRpb24sIHdvcmtzcGFjZSkge1xuICAgIHJldHVybiBwcmV0dHlJZGVudChjb25maWd1cmF0aW9uLCB3b3Jrc3BhY2UubG9jYXRvcik7XG59XG5leHBvcnRzLnByZXR0eVdvcmtzcGFjZSA9IHByZXR0eVdvcmtzcGFjZTtcbi8qKlxuICogUmV0dXJucyBhIHN0cmluZyB0aGF0IGlzIHN1aXRhYmxlIHRvIGJlIHByaW50ZWQgdG8gc3Rkb3V0LiBCYXNlZCBvbiB0aGVcbiAqIGNvbmZpZ3VyYXRpb24gaXQgbWF5IGluY2x1ZGUgY29sb3Igc2VxdWVuY2VzLlxuICpcbiAqIEBwYXJhbSBjb25maWd1cmF0aW9uIFJlZmVyZW5jZSBjb25maWd1cmF0aW9uXG4gKiBAcGFyYW0gZGVzY3JpcHRvciBUaGUgZGVzY3JpcHRvciB0byBwcmV0dHkgcHJpbnRcbiAqIEBwYXJhbSBsb2NhdG9yIFRoZSBsb2NhdG9yIGlzIHJlc29sdmVzIHRvXG4gKi9cbmZ1bmN0aW9uIHByZXR0eVJlc29sdXRpb24oY29uZmlndXJhdGlvbiwgZGVzY3JpcHRvciwgbG9jYXRvcikge1xuICAgIGNvbnN0IGRldmlydHVhbGl6ZWREZXNjcmlwdG9yID0gaXNWaXJ0dWFsRGVzY3JpcHRvcihkZXNjcmlwdG9yKVxuICAgICAgICA/IGRldmlydHVhbGl6ZURlc2NyaXB0b3IoZGVzY3JpcHRvcilcbiAgICAgICAgOiBkZXNjcmlwdG9yO1xuICAgIGlmIChsb2NhdG9yID09PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBgJHtzdHJ1Y3RVdGlscy5wcmV0dHlEZXNjcmlwdG9yKGNvbmZpZ3VyYXRpb24sIGRldmlydHVhbGl6ZWREZXNjcmlwdG9yKX0gXHUyMTkyICR7Zm9ybWF0VXRpbHMubWFyayhjb25maWd1cmF0aW9uKS5Dcm9zc31gO1xuICAgIH1cbiAgICBlbHNlIGlmIChkZXZpcnR1YWxpemVkRGVzY3JpcHRvci5pZGVudEhhc2ggPT09IGxvY2F0b3IuaWRlbnRIYXNoKSB7XG4gICAgICAgIHJldHVybiBgJHtzdHJ1Y3RVdGlscy5wcmV0dHlEZXNjcmlwdG9yKGNvbmZpZ3VyYXRpb24sIGRldmlydHVhbGl6ZWREZXNjcmlwdG9yKX0gXHUyMTkyICR7cHJldHR5UmVmZXJlbmNlKGNvbmZpZ3VyYXRpb24sIGxvY2F0b3IucmVmZXJlbmNlKX1gO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGAke3N0cnVjdFV0aWxzLnByZXR0eURlc2NyaXB0b3IoY29uZmlndXJhdGlvbiwgZGV2aXJ0dWFsaXplZERlc2NyaXB0b3IpfSBcdTIxOTIgJHtwcmV0dHlMb2NhdG9yKGNvbmZpZ3VyYXRpb24sIGxvY2F0b3IpfWA7XG4gICAgfVxufVxuZXhwb3J0cy5wcmV0dHlSZXNvbHV0aW9uID0gcHJldHR5UmVzb2x1dGlvbjtcbi8qKlxuICogUmV0dXJucyBhIHN0cmluZyB0aGF0IGlzIHN1aXRhYmxlIHRvIGJlIHByaW50ZWQgdG8gc3Rkb3V0LiBCYXNlZCBvbiB0aGVcbiAqIGNvbmZpZ3VyYXRpb24gaXQgbWF5IGluY2x1ZGUgY29sb3Igc2VxdWVuY2VzLlxuICpcbiAqIEBwYXJhbSBjb25maWd1cmF0aW9uIFJlZmVyZW5jZSBjb25maWd1cmF0aW9uXG4gKiBAcGFyYW0gbG9jYXRvciBUaGUgbG9jYXRvciB0byBwcmV0dHkgcHJpbnRcbiAqIEBwYXJhbSBkZXNjcmlwdG9yIFRoZSBkZXNjcmlwdG9yIHRoYXQgZGVwZW5kcyBvbiBpdFxuICovXG5mdW5jdGlvbiBwcmV0dHlEZXBlbmRlbnQoY29uZmlndXJhdGlvbiwgbG9jYXRvciwgZGVzY3JpcHRvcikge1xuICAgIGlmIChkZXNjcmlwdG9yID09PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBgJHtwcmV0dHlMb2NhdG9yKGNvbmZpZ3VyYXRpb24sIGxvY2F0b3IpfWA7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICByZXR1cm4gYCR7cHJldHR5TG9jYXRvcihjb25maWd1cmF0aW9uLCBsb2NhdG9yKX0gKHZpYSAke3N0cnVjdFV0aWxzLnByZXR0eVJhbmdlKGNvbmZpZ3VyYXRpb24sIGRlc2NyaXB0b3IucmFuZ2UpfSlgO1xuICAgIH1cbn1cbmV4cG9ydHMucHJldHR5RGVwZW5kZW50ID0gcHJldHR5RGVwZW5kZW50O1xuLyoqXG4gKiBUaGUgcHJlc2VuY2Ugb2YgYSBgbm9kZV9tb2R1bGVzYCBkaXJlY3RvcnkgaW4gdGhlIHBhdGggaXMgZXh0cmVtZWx5IGNvbW1vblxuICogaW4gdGhlIEphdmFTY3JpcHQgZWNvc3lzdGVtIHRvIGRlbm90ZSB3aGV0aGVyIGEgcGF0aCBiZWxvbmdzIHRvIGEgdmVuZG9yXG4gKiBvciBub3QuIEkgY29uc2lkZXJlZCB1c2luZyBhIG1vcmUgZ2VuZXJpYyBwYXRoIGZvciBwYWNrYWdlcyB0aGF0IGFyZW4ndFxuICogYWx3YXlzIEpTLW9ubHkgKHN1Y2ggYXMgd2hlbiB1c2luZyB0aGUgR2l0IGZldGNoZXIpLCBidXQgdGhhdCB1bmZvcnR1bmF0ZWx5XG4gKiBjYXVzZWQgdmFyaW91cyBKUyBhcHBzIHRvIHN0YXJ0IHNob3dpbmcgZXJyb3JzIHdoZW4gd29ya2luZyB3aXRoIGdpdCByZXBvcy5cbiAqXG4gKiBBcyBhIHJlc3VsdCwgYWxsIHBhY2thZ2VzIGZyb20gYWxsIGxhbmd1YWdlcyB3aWxsIGZvbGxvdyB0aGlzIGNvbnZlbnRpb24uIEF0XG4gKiBsZWFzdCBpdCdsbCBiZSBjb25zaXN0ZW50LCBhbmQgbGlua2VycyB3aWxsIGFsd2F5cyBoYXZlIHRoZSBhYmlsaXR5IHRvIHJlbWFwXG4gKiB0aGVtIHRvIGEgZGlmZmVyZW50IGxvY2F0aW9uIGlmIHRoYXQncyBhIGNyaXRpY2FsIHJlcXVpcmVtZW50LlxuICovXG5mdW5jdGlvbiBnZXRJZGVudFZlbmRvclBhdGgoaWRlbnQpIHtcbiAgICByZXR1cm4gYG5vZGVfbW9kdWxlcy8ke3N0cmluZ2lmeUlkZW50KGlkZW50KX1gO1xufVxuZXhwb3J0cy5nZXRJZGVudFZlbmRvclBhdGggPSBnZXRJZGVudFZlbmRvclBhdGg7XG4vKipcbiAqIFJldHVybnMgd2hldGhlciB0aGUgZ2l2ZW4gcGFja2FnZSBpcyBjb21wYXRpYmxlIHdpdGggdGhlIHNwZWNpZmllZCBlbnZpcm9ubWVudC5cbiAqL1xuZnVuY3Rpb24gaXNQYWNrYWdlQ29tcGF0aWJsZShwa2csIGFyY2hpdGVjdHVyZXMpIHtcbiAgICBpZiAoIXBrZy5jb25kaXRpb25zKVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICByZXR1cm4gY29uZGl0aW9uUGFyc2VyKHBrZy5jb25kaXRpb25zLCBzcGVjaWZpZXIgPT4ge1xuICAgICAgICBjb25zdCBbLCBuYW1lLCB2YWx1ZV0gPSBzcGVjaWZpZXIubWF0Y2goY29uZGl0aW9uUmVnZXgpO1xuICAgICAgICBjb25zdCBzdXBwb3J0ZWQgPSBhcmNoaXRlY3R1cmVzW25hbWVdO1xuICAgICAgICByZXR1cm4gc3VwcG9ydGVkID8gc3VwcG9ydGVkLmluY2x1ZGVzKHZhbHVlKSA6IHRydWU7XG4gICAgfSk7XG59XG5leHBvcnRzLmlzUGFja2FnZUNvbXBhdGlibGUgPSBpc1BhY2thZ2VDb21wYXRpYmxlO1xuIiwgIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5Db3JlUGx1Z2luID0gdm9pZCAwO1xuY29uc3QgdHNsaWJfMSA9IHJlcXVpcmUoXCJ0c2xpYlwiKTtcbmNvbnN0IE1lc3NhZ2VOYW1lXzEgPSByZXF1aXJlKFwiLi9NZXNzYWdlTmFtZVwiKTtcbmNvbnN0IHN0cnVjdFV0aWxzID0gdHNsaWJfMS5fX2ltcG9ydFN0YXIocmVxdWlyZShcIi4vc3RydWN0VXRpbHNcIikpO1xuZXhwb3J0cy5Db3JlUGx1Z2luID0ge1xuICAgIGhvb2tzOiB7XG4gICAgICAgIHJlZHVjZURlcGVuZGVuY3k6IChkZXBlbmRlbmN5LCBwcm9qZWN0LCBsb2NhdG9yLCBpbml0aWFsRGVwZW5kZW5jeSwgeyByZXNvbHZlciwgcmVzb2x2ZU9wdGlvbnMgfSkgPT4ge1xuICAgICAgICAgICAgZm9yIChjb25zdCB7IHBhdHRlcm4sIHJlZmVyZW5jZSB9IG9mIHByb2plY3QudG9wTGV2ZWxXb3Jrc3BhY2UubWFuaWZlc3QucmVzb2x1dGlvbnMpIHtcbiAgICAgICAgICAgICAgICBpZiAocGF0dGVybi5mcm9tICYmIHBhdHRlcm4uZnJvbS5mdWxsTmFtZSAhPT0gc3RydWN0VXRpbHMuc3RyaW5naWZ5SWRlbnQobG9jYXRvcikpXG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGlmIChwYXR0ZXJuLmZyb20gJiYgcGF0dGVybi5mcm9tLmRlc2NyaXB0aW9uICYmIHBhdHRlcm4uZnJvbS5kZXNjcmlwdGlvbiAhPT0gbG9jYXRvci5yZWZlcmVuY2UpXG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGlmIChwYXR0ZXJuLmRlc2NyaXB0b3IuZnVsbE5hbWUgIT09IHN0cnVjdFV0aWxzLnN0cmluZ2lmeUlkZW50KGRlcGVuZGVuY3kpKVxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBpZiAocGF0dGVybi5kZXNjcmlwdG9yLmRlc2NyaXB0aW9uICYmIHBhdHRlcm4uZGVzY3JpcHRvci5kZXNjcmlwdGlvbiAhPT0gZGVwZW5kZW5jeS5yYW5nZSlcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgY29uc3QgYWxpYXMgPSByZXNvbHZlci5iaW5kRGVzY3JpcHRvcihwcm9qZWN0LmNvbmZpZ3VyYXRpb24ubm9ybWFsaXplRGVwZW5kZW5jeShzdHJ1Y3RVdGlscy5tYWtlRGVzY3JpcHRvcihkZXBlbmRlbmN5LCByZWZlcmVuY2UpKSwgcHJvamVjdC50b3BMZXZlbFdvcmtzcGFjZS5hbmNob3JlZExvY2F0b3IsIHJlc29sdmVPcHRpb25zKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gYWxpYXM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZGVwZW5kZW5jeTtcbiAgICAgICAgfSxcbiAgICAgICAgdmFsaWRhdGVQcm9qZWN0OiBhc3luYyAocHJvamVjdCwgcmVwb3J0KSA9PiB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHdvcmtzcGFjZSBvZiBwcm9qZWN0LndvcmtzcGFjZXMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB3b3Jrc3BhY2VOYW1lID0gc3RydWN0VXRpbHMucHJldHR5V29ya3NwYWNlKHByb2plY3QuY29uZmlndXJhdGlvbiwgd29ya3NwYWNlKTtcbiAgICAgICAgICAgICAgICBhd2FpdCBwcm9qZWN0LmNvbmZpZ3VyYXRpb24udHJpZ2dlckhvb2soaG9va3MgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaG9va3MudmFsaWRhdGVXb3Jrc3BhY2U7XG4gICAgICAgICAgICAgICAgfSwgd29ya3NwYWNlLCB7XG4gICAgICAgICAgICAgICAgICAgIHJlcG9ydFdhcm5pbmc6IChuYW1lLCB0ZXh0KSA9PiByZXBvcnQucmVwb3J0V2FybmluZyhuYW1lLCBgJHt3b3Jrc3BhY2VOYW1lfTogJHt0ZXh0fWApLFxuICAgICAgICAgICAgICAgICAgICByZXBvcnRFcnJvcjogKG5hbWUsIHRleHQpID0+IHJlcG9ydC5yZXBvcnRFcnJvcihuYW1lLCBgJHt3b3Jrc3BhY2VOYW1lfTogJHt0ZXh0fWApLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB2YWxpZGF0ZVdvcmtzcGFjZTogYXN5bmMgKHdvcmtzcGFjZSwgcmVwb3J0KSA9PiB7XG4gICAgICAgICAgICAvLyBWYWxpZGF0ZSBtYW5pZmVzdFxuICAgICAgICAgICAgY29uc3QgeyBtYW5pZmVzdCB9ID0gd29ya3NwYWNlO1xuICAgICAgICAgICAgaWYgKG1hbmlmZXN0LnJlc29sdXRpb25zLmxlbmd0aCAmJiB3b3Jrc3BhY2UuY3dkICE9PSB3b3Jrc3BhY2UucHJvamVjdC5jd2QpXG4gICAgICAgICAgICAgICAgbWFuaWZlc3QuZXJyb3JzLnB1c2gobmV3IEVycm9yKGBSZXNvbHV0aW9ucyBmaWVsZCB3aWxsIGJlIGlnbm9yZWRgKSk7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IG1hbmlmZXN0RXJyb3Igb2YgbWFuaWZlc3QuZXJyb3JzKSB7XG4gICAgICAgICAgICAgICAgcmVwb3J0LnJlcG9ydFdhcm5pbmcoTWVzc2FnZU5hbWVfMS5NZXNzYWdlTmFtZS5JTlZBTElEX01BTklGRVNULCBtYW5pZmVzdEVycm9yLm1lc3NhZ2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgIH0sXG59O1xuIiwgIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5Xb3Jrc3BhY2VSZXNvbHZlciA9IHZvaWQgMDtcbmNvbnN0IHR5cGVzXzEgPSByZXF1aXJlKFwiLi90eXBlc1wiKTtcbmNsYXNzIFdvcmtzcGFjZVJlc29sdmVyIHtcbiAgICBzdXBwb3J0c0Rlc2NyaXB0b3IoZGVzY3JpcHRvciwgb3B0cykge1xuICAgICAgICBpZiAoZGVzY3JpcHRvci5yYW5nZS5zdGFydHNXaXRoKFdvcmtzcGFjZVJlc29sdmVyLnByb3RvY29sKSlcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICBjb25zdCB3b3Jrc3BhY2UgPSBvcHRzLnByb2plY3QudHJ5V29ya3NwYWNlQnlEZXNjcmlwdG9yKGRlc2NyaXB0b3IpO1xuICAgICAgICBpZiAod29ya3NwYWNlICE9PSBudWxsKVxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgc3VwcG9ydHNMb2NhdG9yKGxvY2F0b3IsIG9wdHMpIHtcbiAgICAgICAgaWYgKCFsb2NhdG9yLnJlZmVyZW5jZS5zdGFydHNXaXRoKFdvcmtzcGFjZVJlc29sdmVyLnByb3RvY29sKSlcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHNob3VsZFBlcnNpc3RSZXNvbHV0aW9uKGxvY2F0b3IsIG9wdHMpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBiaW5kRGVzY3JpcHRvcihkZXNjcmlwdG9yLCBmcm9tTG9jYXRvciwgb3B0cykge1xuICAgICAgICByZXR1cm4gZGVzY3JpcHRvcjtcbiAgICB9XG4gICAgZ2V0UmVzb2x1dGlvbkRlcGVuZGVuY2llcyhkZXNjcmlwdG9yLCBvcHRzKSB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICB9XG4gICAgYXN5bmMgZ2V0Q2FuZGlkYXRlcyhkZXNjcmlwdG9yLCBkZXBlbmRlbmNpZXMsIG9wdHMpIHtcbiAgICAgICAgY29uc3Qgd29ya3NwYWNlID0gb3B0cy5wcm9qZWN0LmdldFdvcmtzcGFjZUJ5RGVzY3JpcHRvcihkZXNjcmlwdG9yKTtcbiAgICAgICAgcmV0dXJuIFt3b3Jrc3BhY2UuYW5jaG9yZWRMb2NhdG9yXTtcbiAgICB9XG4gICAgYXN5bmMgZ2V0U2F0aXNmeWluZyhkZXNjcmlwdG9yLCBkZXBlbmRlbmNpZXMsIGxvY2F0b3JzLCBvcHRzKSB7XG4gICAgICAgIGNvbnN0IFtsb2NhdG9yXSA9IGF3YWl0IHRoaXMuZ2V0Q2FuZGlkYXRlcyhkZXNjcmlwdG9yLCBkZXBlbmRlbmNpZXMsIG9wdHMpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbG9jYXRvcnM6IGxvY2F0b3JzLmZpbHRlcihjYW5kaWRhdGUgPT4gY2FuZGlkYXRlLmxvY2F0b3JIYXNoID09PSBsb2NhdG9yLmxvY2F0b3JIYXNoKSxcbiAgICAgICAgICAgIHNvcnRlZDogZmFsc2UsXG4gICAgICAgIH07XG4gICAgfVxuICAgIGFzeW5jIHJlc29sdmUobG9jYXRvciwgb3B0cykge1xuICAgICAgICBjb25zdCB3b3Jrc3BhY2UgPSBvcHRzLnByb2plY3QuZ2V0V29ya3NwYWNlQnlDd2QobG9jYXRvci5yZWZlcmVuY2Uuc2xpY2UoV29ya3NwYWNlUmVzb2x2ZXIucHJvdG9jb2wubGVuZ3RoKSk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5sb2NhdG9yLFxuICAgICAgICAgICAgdmVyc2lvbjogd29ya3NwYWNlLm1hbmlmZXN0LnZlcnNpb24gfHwgYDAuMC4wYCxcbiAgICAgICAgICAgIGxhbmd1YWdlTmFtZTogYHVua25vd25gLFxuICAgICAgICAgICAgbGlua1R5cGU6IHR5cGVzXzEuTGlua1R5cGUuU09GVCxcbiAgICAgICAgICAgIGNvbmRpdGlvbnM6IG51bGwsXG4gICAgICAgICAgICBkZXBlbmRlbmNpZXM6IG9wdHMucHJvamVjdC5jb25maWd1cmF0aW9uLm5vcm1hbGl6ZURlcGVuZGVuY3lNYXAobmV3IE1hcChbLi4ud29ya3NwYWNlLm1hbmlmZXN0LmRlcGVuZGVuY2llcywgLi4ud29ya3NwYWNlLm1hbmlmZXN0LmRldkRlcGVuZGVuY2llc10pKSxcbiAgICAgICAgICAgIHBlZXJEZXBlbmRlbmNpZXM6IG5ldyBNYXAoWy4uLndvcmtzcGFjZS5tYW5pZmVzdC5wZWVyRGVwZW5kZW5jaWVzXSksXG4gICAgICAgICAgICBkZXBlbmRlbmNpZXNNZXRhOiB3b3Jrc3BhY2UubWFuaWZlc3QuZGVwZW5kZW5jaWVzTWV0YSxcbiAgICAgICAgICAgIHBlZXJEZXBlbmRlbmNpZXNNZXRhOiB3b3Jrc3BhY2UubWFuaWZlc3QucGVlckRlcGVuZGVuY2llc01ldGEsXG4gICAgICAgICAgICBiaW46IHdvcmtzcGFjZS5tYW5pZmVzdC5iaW4sXG4gICAgICAgIH07XG4gICAgfVxufVxuZXhwb3J0cy5Xb3Jrc3BhY2VSZXNvbHZlciA9IFdvcmtzcGFjZVJlc29sdmVyO1xuV29ya3NwYWNlUmVzb2x2ZXIucHJvdG9jb2wgPSBgd29ya3NwYWNlOmA7XG4iLCAiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLmNsZWFuID0gZXhwb3J0cy52YWxpZFJhbmdlID0gZXhwb3J0cy5zYXRpc2ZpZXNXaXRoUHJlcmVsZWFzZXMgPSBleHBvcnRzLlNlbVZlciA9IHZvaWQgMDtcbmNvbnN0IHRzbGliXzEgPSByZXF1aXJlKFwidHNsaWJcIik7XG5jb25zdCBzZW12ZXJfMSA9IHRzbGliXzEuX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJzZW12ZXJcIikpO1xudmFyIHNlbXZlcl8yID0gcmVxdWlyZShcInNlbXZlclwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlNlbVZlclwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gc2VtdmVyXzIuU2VtVmVyOyB9IH0pO1xuY29uc3Qgc2F0aXNmaWVzV2l0aFByZXJlbGVhc2VzQ2FjaGUgPSBuZXcgTWFwKCk7XG4vKipcbiAqIFJldHVybnMgd2hldGhlciB0aGUgZ2l2ZW4gc2VtdmVyIHZlcnNpb24gc2F0aXNmaWVzIHRoZSBnaXZlbiByYW5nZS4gTm90YWJseVxuICogdGhpcyBzdXBwb3J0cyBwcmVyZWxlYXNlIHZlcnNpb25zIHNvIHRoYXQgXCIyLjAuMC1yYy4wXCIgc2F0aXNmaWVzIHRoZSByYW5nZVxuICogXCI+PTEuMC4wXCIsIGZvciBleGFtcGxlLlxuICpcbiAqIFRoaXMgZnVuY3Rpb24gZXhpc3RzIGJlY2F1c2UgdGhlIHNlbXZlci5zYXRpc2ZpZXMgbWV0aG9kIGRvZXMgbm90IGluY2x1ZGVcbiAqIHByZSByZWxlYXNlcy4gVGhpcyBtZWFucyByYW5nZXMgc3VjaCBhcyAqIHdvdWxkIG5vdCBzYXRpc2Z5IDEuMC4wLXJjLiBUaGVcbiAqIGluY2x1ZGVQcmVyZWxlYXNlIGZsYWcgaGFzIGEgd2VpcmQgYmVoYXZpb3IgYW5kIGNhbm5vdCBiZSB1c2VkIChpZiB5b3Ugd2FudFxuICogdG8gdHJ5IGl0IG91dCwganVzdCBydW4gdGhlIGBzZW12ZXJVdGlsc2AgdGVzdHN1aXRlIHVzaW5nIHRoaXMgZmxhZyBpbnN0ZWFkXG4gKiBvZiBvdXIgb3duIGltcGxlbWVudGF0aW9uLCBhbmQgeW91J2xsIHNlZSB0aGUgZmFpbGluZyBjYXNlcykuXG4gKlxuICogU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS95YXJucGtnL2JlcnJ5L2lzc3Vlcy81NzUgZm9yIG1vcmUgY29udGV4dC5cbiAqL1xuZnVuY3Rpb24gc2F0aXNmaWVzV2l0aFByZXJlbGVhc2VzKHZlcnNpb24sIHJhbmdlLCBsb29zZSA9IGZhbHNlKSB7XG4gICAgaWYgKCF2ZXJzaW9uKVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgY29uc3Qga2V5ID0gYCR7cmFuZ2V9JHtsb29zZX1gO1xuICAgIGxldCBzZW12ZXJSYW5nZSA9IHNhdGlzZmllc1dpdGhQcmVyZWxlYXNlc0NhY2hlLmdldChrZXkpO1xuICAgIGlmICh0eXBlb2Ygc2VtdmVyUmFuZ2UgPT09IGB1bmRlZmluZWRgKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcmVzdHJpY3RlZC1wcm9wZXJ0aWVzXG4gICAgICAgICAgICBzZW12ZXJSYW5nZSA9IG5ldyBzZW12ZXJfMS5kZWZhdWx0LlJhbmdlKHJhbmdlLCB7IGluY2x1ZGVQcmVyZWxlYXNlOiB0cnVlLCBsb29zZSB9KTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICBzYXRpc2ZpZXNXaXRoUHJlcmVsZWFzZXNDYWNoZS5zZXQoa2V5LCBzZW12ZXJSYW5nZSB8fCBudWxsKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBlbHNlIGlmIChzZW12ZXJSYW5nZSA9PT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGxldCBzZW12ZXJWZXJzaW9uO1xuICAgIHRyeSB7XG4gICAgICAgIHNlbXZlclZlcnNpb24gPSBuZXcgc2VtdmVyXzEuZGVmYXVsdC5TZW1WZXIodmVyc2lvbiwgc2VtdmVyUmFuZ2UpO1xuICAgIH1cbiAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKHNlbXZlclJhbmdlLnRlc3Qoc2VtdmVyVmVyc2lvbikpXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIGlmIChzZW12ZXJWZXJzaW9uLnByZXJlbGVhc2UpXG4gICAgICAgIHNlbXZlclZlcnNpb24ucHJlcmVsZWFzZSA9IFtdO1xuICAgIC8vIEEgcmFuZ2UgaGFzIG11bHRpcGxlIHNldHMgb2YgY29tcGFyYXRvcnMuIEEgdmVyc2lvbiBtdXN0IHNhdGlzZnkgYWxsXG4gICAgLy8gY29tcGFyYXRvcnMgaW4gYSBzZXQgYW5kIGF0IGxlYXN0IG9uZSBzZXQgdG8gc2F0aXNmeSB0aGUgcmFuZ2UuXG4gICAgcmV0dXJuIHNlbXZlclJhbmdlLnNldC5zb21lKGNvbXBhcmF0b3JTZXQgPT4ge1xuICAgICAgICBmb3IgKGNvbnN0IGNvbXBhcmF0b3Igb2YgY29tcGFyYXRvclNldClcbiAgICAgICAgICAgIGlmIChjb21wYXJhdG9yLnNlbXZlci5wcmVyZWxlYXNlKVxuICAgICAgICAgICAgICAgIGNvbXBhcmF0b3Iuc2VtdmVyLnByZXJlbGVhc2UgPSBbXTtcbiAgICAgICAgcmV0dXJuIGNvbXBhcmF0b3JTZXQuZXZlcnkoY29tcGFyYXRvciA9PiB7XG4gICAgICAgICAgICByZXR1cm4gY29tcGFyYXRvci50ZXN0KHNlbXZlclZlcnNpb24pO1xuICAgICAgICB9KTtcbiAgICB9KTtcbn1cbmV4cG9ydHMuc2F0aXNmaWVzV2l0aFByZXJlbGVhc2VzID0gc2F0aXNmaWVzV2l0aFByZXJlbGVhc2VzO1xuY29uc3QgcmFuZ2VzQ2FjaGUgPSBuZXcgTWFwKCk7XG4vKipcbiAqIEEgY2FjaGVkIHZlcnNpb24gb2YgYG5ldyBzZW12ZXIuUmFuZ2UocG90ZW50aWFsUmFuZ2UpYCB0aGF0IHJldHVybnMgYG51bGxgIG9uIGludmFsaWQgcmFuZ2VzXG4gKi9cbmZ1bmN0aW9uIHZhbGlkUmFuZ2UocG90ZW50aWFsUmFuZ2UpIHtcbiAgICBpZiAocG90ZW50aWFsUmFuZ2UuaW5kZXhPZihgOmApICE9PSAtMSlcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgbGV0IHJhbmdlID0gcmFuZ2VzQ2FjaGUuZ2V0KHBvdGVudGlhbFJhbmdlKTtcbiAgICBpZiAodHlwZW9mIHJhbmdlICE9PSBgdW5kZWZpbmVkYClcbiAgICAgICAgcmV0dXJuIHJhbmdlO1xuICAgIHRyeSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1yZXN0cmljdGVkLXByb3BlcnRpZXNcbiAgICAgICAgcmFuZ2UgPSBuZXcgc2VtdmVyXzEuZGVmYXVsdC5SYW5nZShwb3RlbnRpYWxSYW5nZSk7XG4gICAgfVxuICAgIGNhdGNoIHtcbiAgICAgICAgcmFuZ2UgPSBudWxsO1xuICAgIH1cbiAgICByYW5nZXNDYWNoZS5zZXQocG90ZW50aWFsUmFuZ2UsIHJhbmdlKTtcbiAgICByZXR1cm4gcmFuZ2U7XG59XG5leHBvcnRzLnZhbGlkUmFuZ2UgPSB2YWxpZFJhbmdlO1xuLyoqXG4gVGhlIFJlZ0V4cCBmcm9tIGh0dHBzOi8vc2VtdmVyLm9yZy8gYnV0IG1vZGlmaWVkIHRvXG4gLSBhbGxvdyB0aGUgdmVyc2lvbiB0byBzdGFydCB3aXRoIGAoPzpbXFxzdj1dKj8pYFxuIC0gYWxsb3cgdGhlIHZlcnNpb24gdG8gZW5kIHdpdGggYCg/OlxccyopYFxuIC0gcGxhY2UgdGhlIHZhbGlkIHZlcnNpb24gaW4gY2FwdHVyZSBncm91cCBvbmVcbiAqL1xuY29uc3QgQ0xFQU5fU0VNVkVSX1JFR0VYUCA9IC9eKD86W1xcc3Y9XSo/KSgoMHxbMS05XVxcZCopXFwuKDB8WzEtOV1cXGQqKVxcLigwfFsxLTldXFxkKikoPzotKCg/OjB8WzEtOV1cXGQqfFxcZCpbYS16QS1aLV1bMC05YS16QS1aLV0qKSg/OlxcLig/OjB8WzEtOV1cXGQqfFxcZCpbYS16QS1aLV1bMC05YS16QS1aLV0qKSkqKSk/KD86XFwrKFswLTlhLXpBLVotXSsoPzpcXC5bMC05YS16QS1aLV0rKSopKT8pKD86XFxzKikkLztcbi8qKlxuICogQ2xlYW5zIHRoZSBwb3RlbnRpYWwgdmVyc2lvbiBieSByZW1vdmluZyBsZWFkaW5nL3RyYWlsaW5nIHdoaXRlc3BhY2UgYW5kICc9dicgcHJlZml4XG4gKiBAcmV0dXJucyBBIHZhbGlkIFNlbVZlciBzdHJpbmcsIG90aGVyd2lzZSBudWxsXG4gKi9cbmZ1bmN0aW9uIGNsZWFuKHBvdGVudGlhbFZlcnNpb24pIHtcbiAgICBjb25zdCB2ZXJzaW9uID0gQ0xFQU5fU0VNVkVSX1JFR0VYUC5leGVjKHBvdGVudGlhbFZlcnNpb24pO1xuICAgIHJldHVybiB2ZXJzaW9uID8gdmVyc2lvblsxXSA6IG51bGw7XG59XG5leHBvcnRzLmNsZWFuID0gY2xlYW47XG4iLCAiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLk1hbmlmZXN0ID0gdm9pZCAwO1xuY29uc3QgdHNsaWJfMSA9IHJlcXVpcmUoXCJ0c2xpYlwiKTtcbmNvbnN0IGZzbGliXzEgPSByZXF1aXJlKFwiQHlhcm5wa2cvZnNsaWJcIik7XG5jb25zdCBwYXJzZXJzXzEgPSByZXF1aXJlKFwiQHlhcm5wa2cvcGFyc2Vyc1wiKTtcbmNvbnN0IHNlbXZlcl8xID0gdHNsaWJfMS5fX2ltcG9ydERlZmF1bHQocmVxdWlyZShcInNlbXZlclwiKSk7XG5jb25zdCBXb3Jrc3BhY2VSZXNvbHZlcl8xID0gcmVxdWlyZShcIi4vV29ya3NwYWNlUmVzb2x2ZXJcIik7XG5jb25zdCBtaXNjVXRpbHMgPSB0c2xpYl8xLl9faW1wb3J0U3RhcihyZXF1aXJlKFwiLi9taXNjVXRpbHNcIikpO1xuY29uc3Qgc2VtdmVyVXRpbHMgPSB0c2xpYl8xLl9faW1wb3J0U3RhcihyZXF1aXJlKFwiLi9zZW12ZXJVdGlsc1wiKSk7XG5jb25zdCBzdHJ1Y3RVdGlscyA9IHRzbGliXzEuX19pbXBvcnRTdGFyKHJlcXVpcmUoXCIuL3N0cnVjdFV0aWxzXCIpKTtcbmNsYXNzIE1hbmlmZXN0IHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5pbmRlbnQgPSBgICBgO1xuICAgICAgICB0aGlzLm5hbWUgPSBudWxsO1xuICAgICAgICB0aGlzLnZlcnNpb24gPSBudWxsO1xuICAgICAgICB0aGlzLm9zID0gbnVsbDtcbiAgICAgICAgdGhpcy5jcHUgPSBudWxsO1xuICAgICAgICB0aGlzLmxpYmMgPSBudWxsO1xuICAgICAgICB0aGlzLnR5cGUgPSBudWxsO1xuICAgICAgICB0aGlzLnBhY2thZ2VNYW5hZ2VyID0gbnVsbDtcbiAgICAgICAgdGhpc1tcInByaXZhdGVcIl0gPSBmYWxzZTtcbiAgICAgICAgdGhpcy5saWNlbnNlID0gbnVsbDtcbiAgICAgICAgdGhpcy5tYWluID0gbnVsbDtcbiAgICAgICAgdGhpcy5tb2R1bGUgPSBudWxsO1xuICAgICAgICB0aGlzLmJyb3dzZXIgPSBudWxsO1xuICAgICAgICB0aGlzLmxhbmd1YWdlTmFtZSA9IG51bGw7XG4gICAgICAgIHRoaXMuYmluID0gbmV3IE1hcCgpO1xuICAgICAgICB0aGlzLnNjcmlwdHMgPSBuZXcgTWFwKCk7XG4gICAgICAgIHRoaXMuZGVwZW5kZW5jaWVzID0gbmV3IE1hcCgpO1xuICAgICAgICB0aGlzLmRldkRlcGVuZGVuY2llcyA9IG5ldyBNYXAoKTtcbiAgICAgICAgdGhpcy5wZWVyRGVwZW5kZW5jaWVzID0gbmV3IE1hcCgpO1xuICAgICAgICB0aGlzLndvcmtzcGFjZURlZmluaXRpb25zID0gW107XG4gICAgICAgIHRoaXMuZGVwZW5kZW5jaWVzTWV0YSA9IG5ldyBNYXAoKTtcbiAgICAgICAgdGhpcy5wZWVyRGVwZW5kZW5jaWVzTWV0YSA9IG5ldyBNYXAoKTtcbiAgICAgICAgdGhpcy5yZXNvbHV0aW9ucyA9IFtdO1xuICAgICAgICB0aGlzLmZpbGVzID0gbnVsbDtcbiAgICAgICAgdGhpcy5wdWJsaXNoQ29uZmlnID0gbnVsbDtcbiAgICAgICAgdGhpcy5pbnN0YWxsQ29uZmlnID0gbnVsbDtcbiAgICAgICAgdGhpcy5wcmVmZXJVbnBsdWdnZWQgPSBudWxsO1xuICAgICAgICB0aGlzLnJhdyA9IHt9O1xuICAgICAgICAvKipcbiAgICAgICAgICogZXJyb3JzIGZvdW5kIGluIHRoZSByYXcgbWFuaWZlc3Qgd2hpbGUgbG9hZGluZ1xuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5lcnJvcnMgPSBbXTtcbiAgICB9XG4gICAgc3RhdGljIGFzeW5jIHRyeUZpbmQocGF0aCwgeyBiYXNlRnMgPSBuZXcgZnNsaWJfMS5Ob2RlRlMoKSB9ID0ge30pIHtcbiAgICAgICAgY29uc3QgbWFuaWZlc3RQYXRoID0gZnNsaWJfMS5wcGF0aC5qb2luKHBhdGgsIGBwYWNrYWdlLmpzb25gKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJldHVybiBhd2FpdCBNYW5pZmVzdC5mcm9tRmlsZShtYW5pZmVzdFBhdGgsIHsgYmFzZUZzIH0pO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIGlmIChlcnIuY29kZSA9PT0gYEVOT0VOVGApXG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgIH1cbiAgICB9XG4gICAgc3RhdGljIGFzeW5jIGZpbmQocGF0aCwgeyBiYXNlRnMgfSA9IHt9KSB7XG4gICAgICAgIGNvbnN0IG1hbmlmZXN0ID0gYXdhaXQgTWFuaWZlc3QudHJ5RmluZChwYXRoLCB7IGJhc2VGcyB9KTtcbiAgICAgICAgaWYgKG1hbmlmZXN0ID09PSBudWxsKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBNYW5pZmVzdCBub3QgZm91bmRgKTtcbiAgICAgICAgcmV0dXJuIG1hbmlmZXN0O1xuICAgIH1cbiAgICBzdGF0aWMgYXN5bmMgZnJvbUZpbGUocGF0aCwgeyBiYXNlRnMgPSBuZXcgZnNsaWJfMS5Ob2RlRlMoKSB9ID0ge30pIHtcbiAgICAgICAgY29uc3QgbWFuaWZlc3QgPSBuZXcgTWFuaWZlc3QoKTtcbiAgICAgICAgYXdhaXQgbWFuaWZlc3QubG9hZEZpbGUocGF0aCwgeyBiYXNlRnMgfSk7XG4gICAgICAgIHJldHVybiBtYW5pZmVzdDtcbiAgICB9XG4gICAgc3RhdGljIGZyb21UZXh0KHRleHQpIHtcbiAgICAgICAgY29uc3QgbWFuaWZlc3QgPSBuZXcgTWFuaWZlc3QoKTtcbiAgICAgICAgbWFuaWZlc3QubG9hZEZyb21UZXh0KHRleHQpO1xuICAgICAgICByZXR1cm4gbWFuaWZlc3Q7XG4gICAgfVxuICAgIGxvYWRGcm9tVGV4dCh0ZXh0KSB7XG4gICAgICAgIGxldCBkYXRhO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgZGF0YSA9IEpTT04ucGFyc2Uoc3RyaXBCT00odGV4dCkgfHwgYHt9YCk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICBlcnJvci5tZXNzYWdlICs9IGAgKHdoZW4gcGFyc2luZyAke3RleHR9KWA7XG4gICAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmxvYWQoZGF0YSk7XG4gICAgICAgIHRoaXMuaW5kZW50ID0gZ2V0SW5kZW50KHRleHQpO1xuICAgIH1cbiAgICBhc3luYyBsb2FkRmlsZShwYXRoLCB7IGJhc2VGcyA9IG5ldyBmc2xpYl8xLk5vZGVGUygpIH0pIHtcbiAgICAgICAgY29uc3QgY29udGVudCA9IGF3YWl0IGJhc2VGcy5yZWFkRmlsZVByb21pc2UocGF0aCwgYHV0ZjhgKTtcbiAgICAgICAgbGV0IGRhdGE7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBkYXRhID0gSlNPTi5wYXJzZShzdHJpcEJPTShjb250ZW50KSB8fCBge31gKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIGVycm9yLm1lc3NhZ2UgKz0gYCAod2hlbiBwYXJzaW5nICR7cGF0aH0pYDtcbiAgICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubG9hZChkYXRhKTtcbiAgICAgICAgdGhpcy5pbmRlbnQgPSBnZXRJbmRlbnQoY29udGVudCk7XG4gICAgfVxuICAgIGxvYWQoZGF0YSwgeyB5YW1sQ29tcGF0aWJpbGl0eU1vZGUgPSBmYWxzZSB9ID0ge30pIHtcbiAgICAgICAgaWYgKHR5cGVvZiBkYXRhICE9PSBgb2JqZWN0YCB8fCBkYXRhID09PSBudWxsKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVdHRlcmx5IGludmFsaWQgbWFuaWZlc3QgZGF0YSAoJHtkYXRhfSlgKTtcbiAgICAgICAgdGhpcy5yYXcgPSBkYXRhO1xuICAgICAgICBjb25zdCBlcnJvcnMgPSBbXTtcbiAgICAgICAgdGhpcy5uYW1lID0gbnVsbDtcbiAgICAgICAgaWYgKHR5cGVvZiBkYXRhLm5hbWUgPT09IGBzdHJpbmdgKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHRoaXMubmFtZSA9IHN0cnVjdFV0aWxzLnBhcnNlSWRlbnQoZGF0YS5uYW1lKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgIGVycm9ycy5wdXNoKG5ldyBFcnJvcihgUGFyc2luZyBmYWlsZWQgZm9yIHRoZSAnbmFtZScgZmllbGRgKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiBkYXRhLnZlcnNpb24gPT09IGBzdHJpbmdgKVxuICAgICAgICAgICAgdGhpcy52ZXJzaW9uID0gZGF0YS52ZXJzaW9uO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICB0aGlzLnZlcnNpb24gPSBudWxsO1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShkYXRhLm9zKSkge1xuICAgICAgICAgICAgY29uc3Qgb3MgPSBbXTtcbiAgICAgICAgICAgIHRoaXMub3MgPSBvcztcbiAgICAgICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBkYXRhLm9zKSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBpdGVtICE9PSBgc3RyaW5nYCkge1xuICAgICAgICAgICAgICAgICAgICBlcnJvcnMucHVzaChuZXcgRXJyb3IoYFBhcnNpbmcgZmFpbGVkIGZvciB0aGUgJ29zJyBmaWVsZGApKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIG9zLnB1c2goaXRlbSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5vcyA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZGF0YS5jcHUpKSB7XG4gICAgICAgICAgICBjb25zdCBjcHUgPSBbXTtcbiAgICAgICAgICAgIHRoaXMuY3B1ID0gY3B1O1xuICAgICAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGRhdGEuY3B1KSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBpdGVtICE9PSBgc3RyaW5nYCkge1xuICAgICAgICAgICAgICAgICAgICBlcnJvcnMucHVzaChuZXcgRXJyb3IoYFBhcnNpbmcgZmFpbGVkIGZvciB0aGUgJ2NwdScgZmllbGRgKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjcHUucHVzaChpdGVtKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmNwdSA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZGF0YS5saWJjKSkge1xuICAgICAgICAgICAgY29uc3QgbGliYyA9IFtdO1xuICAgICAgICAgICAgdGhpcy5saWJjID0gbGliYztcbiAgICAgICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBkYXRhLmxpYmMpIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGl0ZW0gIT09IGBzdHJpbmdgKSB7XG4gICAgICAgICAgICAgICAgICAgIGVycm9ycy5wdXNoKG5ldyBFcnJvcihgUGFyc2luZyBmYWlsZWQgZm9yIHRoZSAnbGliYycgZmllbGRgKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBsaWJjLnB1c2goaXRlbSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5saWJjID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIGRhdGEudHlwZSA9PT0gYHN0cmluZ2ApXG4gICAgICAgICAgICB0aGlzLnR5cGUgPSBkYXRhLnR5cGU7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHRoaXMudHlwZSA9IG51bGw7XG4gICAgICAgIGlmICh0eXBlb2YgZGF0YS5wYWNrYWdlTWFuYWdlciA9PT0gYHN0cmluZ2ApXG4gICAgICAgICAgICB0aGlzLnBhY2thZ2VNYW5hZ2VyID0gZGF0YS5wYWNrYWdlTWFuYWdlcjtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgdGhpcy5wYWNrYWdlTWFuYWdlciA9IG51bGw7XG4gICAgICAgIGlmICh0eXBlb2YgZGF0YS5wcml2YXRlID09PSBgYm9vbGVhbmApXG4gICAgICAgICAgICB0aGlzLnByaXZhdGUgPSBkYXRhLnByaXZhdGU7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHRoaXMucHJpdmF0ZSA9IGZhbHNlO1xuICAgICAgICBpZiAodHlwZW9mIGRhdGEubGljZW5zZSA9PT0gYHN0cmluZ2ApXG4gICAgICAgICAgICB0aGlzLmxpY2Vuc2UgPSBkYXRhLmxpY2Vuc2U7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHRoaXMubGljZW5zZSA9IG51bGw7XG4gICAgICAgIGlmICh0eXBlb2YgZGF0YS5sYW5ndWFnZU5hbWUgPT09IGBzdHJpbmdgKVxuICAgICAgICAgICAgdGhpcy5sYW5ndWFnZU5hbWUgPSBkYXRhLmxhbmd1YWdlTmFtZTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgdGhpcy5sYW5ndWFnZU5hbWUgPSBudWxsO1xuICAgICAgICBpZiAodHlwZW9mIGRhdGEubWFpbiA9PT0gYHN0cmluZ2ApXG4gICAgICAgICAgICB0aGlzLm1haW4gPSBub3JtYWxpemVTbGFzaGVzKGRhdGEubWFpbik7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHRoaXMubWFpbiA9IG51bGw7XG4gICAgICAgIGlmICh0eXBlb2YgZGF0YS5tb2R1bGUgPT09IGBzdHJpbmdgKVxuICAgICAgICAgICAgdGhpcy5tb2R1bGUgPSBub3JtYWxpemVTbGFzaGVzKGRhdGEubW9kdWxlKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgdGhpcy5tb2R1bGUgPSBudWxsO1xuICAgICAgICBpZiAoZGF0YS5icm93c2VyICE9IG51bGwpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgZGF0YS5icm93c2VyID09PSBgc3RyaW5nYCkge1xuICAgICAgICAgICAgICAgIHRoaXMuYnJvd3NlciA9IG5vcm1hbGl6ZVNsYXNoZXMoZGF0YS5icm93c2VyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuYnJvd3NlciA9IG5ldyBNYXAoKTtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhkYXRhLmJyb3dzZXIpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYnJvd3Nlci5zZXQobm9ybWFsaXplU2xhc2hlcyhrZXkpLCB0eXBlb2YgdmFsdWUgPT09IGBzdHJpbmdgID8gbm9ybWFsaXplU2xhc2hlcyh2YWx1ZSkgOiB2YWx1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5icm93c2VyID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmJpbiA9IG5ldyBNYXAoKTtcbiAgICAgICAgaWYgKHR5cGVvZiBkYXRhLmJpbiA9PT0gYHN0cmluZ2ApIHtcbiAgICAgICAgICAgIGlmICh0aGlzLm5hbWUgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmJpbi5zZXQodGhpcy5uYW1lLm5hbWUsIG5vcm1hbGl6ZVNsYXNoZXMoZGF0YS5iaW4pKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGVycm9ycy5wdXNoKG5ldyBFcnJvcihgU3RyaW5nIGJpbiBmaWVsZCwgYnV0IG5vIGF0dGFjaGVkIHBhY2thZ2UgbmFtZWApKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0eXBlb2YgZGF0YS5iaW4gPT09IGBvYmplY3RgICYmIGRhdGEuYmluICE9PSBudWxsKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhkYXRhLmJpbikpIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlICE9PSBgc3RyaW5nYCkge1xuICAgICAgICAgICAgICAgICAgICBlcnJvcnMucHVzaChuZXcgRXJyb3IoYEludmFsaWQgYmluIGRlZmluaXRpb24gZm9yICcke2tleX0nYCkpO1xuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gU29tZSByZWdpc3RyaWVzIGluY29ycmVjdGx5IG5vcm1hbGl6ZSB0aGUgYGJpbmAgZmllbGQgb2ZcbiAgICAgICAgICAgICAgICAvLyBzY29wZWQgcGFja2FnZXMgdG8gYmUgaW52YWxpZCBmaWxlbmFtZXMuXG4gICAgICAgICAgICAgICAgLy8gRS5nLiBmcm9tXG4gICAgICAgICAgICAgICAgLy8ge1xuICAgICAgICAgICAgICAgIC8vICAgXCJuYW1lXCI6IFwiQHlhcm5wa2cvZG9jdG9yXCIsXG4gICAgICAgICAgICAgICAgLy8gICBcImJpblwiOiBcImluZGV4LmpzXCJcbiAgICAgICAgICAgICAgICAvLyB9XG4gICAgICAgICAgICAgICAgLy8gdG9cbiAgICAgICAgICAgICAgICAvLyB7XG4gICAgICAgICAgICAgICAgLy8gICBcIm5hbWVcIjogXCJAeWFybnBrZy9kb2N0b3JcIixcbiAgICAgICAgICAgICAgICAvLyAgIFwiYmluXCI6IHtcbiAgICAgICAgICAgICAgICAvLyAgICAgXCJAeWFybnBrZy9kb2N0b3JcIjogXCJpbmRleC5qc1wiXG4gICAgICAgICAgICAgICAgLy8gICB9XG4gICAgICAgICAgICAgICAgLy8gfVxuICAgICAgICAgICAgICAgIGNvbnN0IGJpbmFyeUlkZW50ID0gc3RydWN0VXRpbHMucGFyc2VJZGVudChrZXkpO1xuICAgICAgICAgICAgICAgIHRoaXMuYmluLnNldChiaW5hcnlJZGVudC5uYW1lLCBub3JtYWxpemVTbGFzaGVzKHZhbHVlKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zY3JpcHRzID0gbmV3IE1hcCgpO1xuICAgICAgICBpZiAodHlwZW9mIGRhdGEuc2NyaXB0cyA9PT0gYG9iamVjdGAgJiYgZGF0YS5zY3JpcHRzICE9PSBudWxsKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhkYXRhLnNjcmlwdHMpKSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gYHN0cmluZ2ApIHtcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JzLnB1c2gobmV3IEVycm9yKGBJbnZhbGlkIHNjcmlwdCBkZWZpbml0aW9uIGZvciAnJHtrZXl9J2ApKTtcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuc2NyaXB0cy5zZXQoa2V5LCB2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5kZXBlbmRlbmNpZXMgPSBuZXcgTWFwKCk7XG4gICAgICAgIGlmICh0eXBlb2YgZGF0YS5kZXBlbmRlbmNpZXMgPT09IGBvYmplY3RgICYmIGRhdGEuZGVwZW5kZW5jaWVzICE9PSBudWxsKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IFtuYW1lLCByYW5nZV0gb2YgT2JqZWN0LmVudHJpZXMoZGF0YS5kZXBlbmRlbmNpZXMpKSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiByYW5nZSAhPT0gYHN0cmluZ2ApIHtcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JzLnB1c2gobmV3IEVycm9yKGBJbnZhbGlkIGRlcGVuZGVuY3kgcmFuZ2UgZm9yICcke25hbWV9J2ApKTtcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGxldCBpZGVudDtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBpZGVudCA9IHN0cnVjdFV0aWxzLnBhcnNlSWRlbnQobmFtZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgICAgICBlcnJvcnMucHVzaChuZXcgRXJyb3IoYFBhcnNpbmcgZmFpbGVkIGZvciB0aGUgZGVwZW5kZW5jeSBuYW1lICcke25hbWV9J2ApKTtcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBzdHJ1Y3RVdGlscy5tYWtlRGVzY3JpcHRvcihpZGVudCwgcmFuZ2UpO1xuICAgICAgICAgICAgICAgIHRoaXMuZGVwZW5kZW5jaWVzLnNldChkZXNjcmlwdG9yLmlkZW50SGFzaCwgZGVzY3JpcHRvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5kZXZEZXBlbmRlbmNpZXMgPSBuZXcgTWFwKCk7XG4gICAgICAgIGlmICh0eXBlb2YgZGF0YS5kZXZEZXBlbmRlbmNpZXMgPT09IGBvYmplY3RgICYmIGRhdGEuZGV2RGVwZW5kZW5jaWVzICE9PSBudWxsKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IFtuYW1lLCByYW5nZV0gb2YgT2JqZWN0LmVudHJpZXMoZGF0YS5kZXZEZXBlbmRlbmNpZXMpKSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiByYW5nZSAhPT0gYHN0cmluZ2ApIHtcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JzLnB1c2gobmV3IEVycm9yKGBJbnZhbGlkIGRlcGVuZGVuY3kgcmFuZ2UgZm9yICcke25hbWV9J2ApKTtcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGxldCBpZGVudDtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBpZGVudCA9IHN0cnVjdFV0aWxzLnBhcnNlSWRlbnQobmFtZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgICAgICBlcnJvcnMucHVzaChuZXcgRXJyb3IoYFBhcnNpbmcgZmFpbGVkIGZvciB0aGUgZGVwZW5kZW5jeSBuYW1lICcke25hbWV9J2ApKTtcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBzdHJ1Y3RVdGlscy5tYWtlRGVzY3JpcHRvcihpZGVudCwgcmFuZ2UpO1xuICAgICAgICAgICAgICAgIHRoaXMuZGV2RGVwZW5kZW5jaWVzLnNldChkZXNjcmlwdG9yLmlkZW50SGFzaCwgZGVzY3JpcHRvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5wZWVyRGVwZW5kZW5jaWVzID0gbmV3IE1hcCgpO1xuICAgICAgICBpZiAodHlwZW9mIGRhdGEucGVlckRlcGVuZGVuY2llcyA9PT0gYG9iamVjdGAgJiYgZGF0YS5wZWVyRGVwZW5kZW5jaWVzICE9PSBudWxsKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBbbmFtZSwgcmFuZ2VdIG9mIE9iamVjdC5lbnRyaWVzKGRhdGEucGVlckRlcGVuZGVuY2llcykpIHtcbiAgICAgICAgICAgICAgICBsZXQgaWRlbnQ7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgaWRlbnQgPSBzdHJ1Y3RVdGlscy5wYXJzZUlkZW50KG5hbWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JzLnB1c2gobmV3IEVycm9yKGBQYXJzaW5nIGZhaWxlZCBmb3IgdGhlIGRlcGVuZGVuY3kgbmFtZSAnJHtuYW1lfSdgKSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHJhbmdlICE9PSBgc3RyaW5nYCB8fCAoIXJhbmdlLnN0YXJ0c1dpdGgoV29ya3NwYWNlUmVzb2x2ZXJfMS5Xb3Jrc3BhY2VSZXNvbHZlci5wcm90b2NvbCkgJiYgIXNlbXZlclV0aWxzLnZhbGlkUmFuZ2UocmFuZ2UpKSkge1xuICAgICAgICAgICAgICAgICAgICBlcnJvcnMucHVzaChuZXcgRXJyb3IoYEludmFsaWQgZGVwZW5kZW5jeSByYW5nZSBmb3IgJyR7bmFtZX0nYCkpO1xuICAgICAgICAgICAgICAgICAgICByYW5nZSA9IGAqYDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgZGVzY3JpcHRvciA9IHN0cnVjdFV0aWxzLm1ha2VEZXNjcmlwdG9yKGlkZW50LCByYW5nZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5wZWVyRGVwZW5kZW5jaWVzLnNldChkZXNjcmlwdG9yLmlkZW50SGFzaCwgZGVzY3JpcHRvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiBkYXRhLndvcmtzcGFjZXMgPT09IGBvYmplY3RgICYmIGRhdGEud29ya3NwYWNlcyAhPT0gbnVsbCAmJiBkYXRhLndvcmtzcGFjZXMubm9ob2lzdClcbiAgICAgICAgICAgIGVycm9ycy5wdXNoKG5ldyBFcnJvcihgJ25vaG9pc3QnIGlzIGRlcHJlY2F0ZWQsIHBsZWFzZSB1c2UgJ2luc3RhbGxDb25maWcuaG9pc3RpbmdMaW1pdHMnIGluc3RlYWRgKSk7XG4gICAgICAgIGNvbnN0IHdvcmtzcGFjZXMgPSBBcnJheS5pc0FycmF5KGRhdGEud29ya3NwYWNlcylcbiAgICAgICAgICAgID8gZGF0YS53b3Jrc3BhY2VzXG4gICAgICAgICAgICA6IHR5cGVvZiBkYXRhLndvcmtzcGFjZXMgPT09IGBvYmplY3RgICYmIGRhdGEud29ya3NwYWNlcyAhPT0gbnVsbCAmJiBBcnJheS5pc0FycmF5KGRhdGEud29ya3NwYWNlcy5wYWNrYWdlcylcbiAgICAgICAgICAgICAgICA/IGRhdGEud29ya3NwYWNlcy5wYWNrYWdlc1xuICAgICAgICAgICAgICAgIDogW107XG4gICAgICAgIHRoaXMud29ya3NwYWNlRGVmaW5pdGlvbnMgPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBlbnRyeSBvZiB3b3Jrc3BhY2VzKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGVudHJ5ICE9PSBgc3RyaW5nYCkge1xuICAgICAgICAgICAgICAgIGVycm9ycy5wdXNoKG5ldyBFcnJvcihgSW52YWxpZCB3b3Jrc3BhY2UgZGVmaW5pdGlvbiBmb3IgJyR7ZW50cnl9J2ApKTtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMud29ya3NwYWNlRGVmaW5pdGlvbnMucHVzaCh7XG4gICAgICAgICAgICAgICAgcGF0dGVybjogZW50cnksXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmRlcGVuZGVuY2llc01ldGEgPSBuZXcgTWFwKCk7XG4gICAgICAgIGlmICh0eXBlb2YgZGF0YS5kZXBlbmRlbmNpZXNNZXRhID09PSBgb2JqZWN0YCAmJiBkYXRhLmRlcGVuZGVuY2llc01ldGEgIT09IG51bGwpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgW3BhdHRlcm4sIG1ldGFdIG9mIE9iamVjdC5lbnRyaWVzKGRhdGEuZGVwZW5kZW5jaWVzTWV0YSkpIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIG1ldGEgIT09IGBvYmplY3RgIHx8IG1ldGEgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JzLnB1c2gobmV3IEVycm9yKGBJbnZhbGlkIG1ldGEgZmllbGQgZm9yICcke3BhdHRlcm59YCkpO1xuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgZGVzY3JpcHRvciA9IHN0cnVjdFV0aWxzLnBhcnNlRGVzY3JpcHRvcihwYXR0ZXJuKTtcbiAgICAgICAgICAgICAgICBjb25zdCBkZXBlbmRlbmN5TWV0YSA9IHRoaXMuZW5zdXJlRGVwZW5kZW5jeU1ldGEoZGVzY3JpcHRvcik7XG4gICAgICAgICAgICAgICAgY29uc3QgYnVpbHQgPSB0cnlQYXJzZU9wdGlvbmFsQm9vbGVhbihtZXRhLmJ1aWx0LCB7IHlhbWxDb21wYXRpYmlsaXR5TW9kZSB9KTtcbiAgICAgICAgICAgICAgICBpZiAoYnVpbHQgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JzLnB1c2gobmV3IEVycm9yKGBJbnZhbGlkIGJ1aWx0IG1ldGEgZmllbGQgZm9yICcke3BhdHRlcm59J2ApKTtcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IG9wdGlvbmFsID0gdHJ5UGFyc2VPcHRpb25hbEJvb2xlYW4obWV0YS5vcHRpb25hbCwgeyB5YW1sQ29tcGF0aWJpbGl0eU1vZGUgfSk7XG4gICAgICAgICAgICAgICAgaWYgKG9wdGlvbmFsID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIGVycm9ycy5wdXNoKG5ldyBFcnJvcihgSW52YWxpZCBvcHRpb25hbCBtZXRhIGZpZWxkIGZvciAnJHtwYXR0ZXJufSdgKSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCB1bnBsdWdnZWQgPSB0cnlQYXJzZU9wdGlvbmFsQm9vbGVhbihtZXRhLnVucGx1Z2dlZCwgeyB5YW1sQ29tcGF0aWJpbGl0eU1vZGUgfSk7XG4gICAgICAgICAgICAgICAgaWYgKHVucGx1Z2dlZCA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICBlcnJvcnMucHVzaChuZXcgRXJyb3IoYEludmFsaWQgdW5wbHVnZ2VkIG1ldGEgZmllbGQgZm9yICcke3BhdHRlcm59J2ApKTtcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oZGVwZW5kZW5jeU1ldGEsIHsgYnVpbHQsIG9wdGlvbmFsLCB1bnBsdWdnZWQgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5wZWVyRGVwZW5kZW5jaWVzTWV0YSA9IG5ldyBNYXAoKTtcbiAgICAgICAgaWYgKHR5cGVvZiBkYXRhLnBlZXJEZXBlbmRlbmNpZXNNZXRhID09PSBgb2JqZWN0YCAmJiBkYXRhLnBlZXJEZXBlbmRlbmNpZXNNZXRhICE9PSBudWxsKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IFtwYXR0ZXJuLCBtZXRhXSBvZiBPYmplY3QuZW50cmllcyhkYXRhLnBlZXJEZXBlbmRlbmNpZXNNZXRhKSkge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgbWV0YSAhPT0gYG9iamVjdGAgfHwgbWV0YSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICBlcnJvcnMucHVzaChuZXcgRXJyb3IoYEludmFsaWQgbWV0YSBmaWVsZCBmb3IgJyR7cGF0dGVybn0nYCkpO1xuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgZGVzY3JpcHRvciA9IHN0cnVjdFV0aWxzLnBhcnNlRGVzY3JpcHRvcihwYXR0ZXJuKTtcbiAgICAgICAgICAgICAgICBjb25zdCBwZWVyRGVwZW5kZW5jeU1ldGEgPSB0aGlzLmVuc3VyZVBlZXJEZXBlbmRlbmN5TWV0YShkZXNjcmlwdG9yKTtcbiAgICAgICAgICAgICAgICBjb25zdCBvcHRpb25hbCA9IHRyeVBhcnNlT3B0aW9uYWxCb29sZWFuKG1ldGEub3B0aW9uYWwsIHsgeWFtbENvbXBhdGliaWxpdHlNb2RlIH0pO1xuICAgICAgICAgICAgICAgIGlmIChvcHRpb25hbCA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICBlcnJvcnMucHVzaChuZXcgRXJyb3IoYEludmFsaWQgb3B0aW9uYWwgbWV0YSBmaWVsZCBmb3IgJyR7cGF0dGVybn0nYCkpO1xuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihwZWVyRGVwZW5kZW5jeU1ldGEsIHsgb3B0aW9uYWwgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yZXNvbHV0aW9ucyA9IFtdO1xuICAgICAgICBpZiAodHlwZW9mIGRhdGEucmVzb2x1dGlvbnMgPT09IGBvYmplY3RgICYmIGRhdGEucmVzb2x1dGlvbnMgIT09IG51bGwpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgW3BhdHRlcm4sIHJlZmVyZW5jZV0gb2YgT2JqZWN0LmVudHJpZXMoZGF0YS5yZXNvbHV0aW9ucykpIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHJlZmVyZW5jZSAhPT0gYHN0cmluZ2ApIHtcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JzLnB1c2gobmV3IEVycm9yKGBJbnZhbGlkIHJlc29sdXRpb24gZW50cnkgZm9yICcke3BhdHRlcm59J2ApKTtcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVzb2x1dGlvbnMucHVzaCh7IHBhdHRlcm46ICgwLCBwYXJzZXJzXzEucGFyc2VSZXNvbHV0aW9uKShwYXR0ZXJuKSwgcmVmZXJlbmNlIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JzLnB1c2goZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZGF0YS5maWxlcykpIHtcbiAgICAgICAgICAgIHRoaXMuZmlsZXMgPSBuZXcgU2V0KCk7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGZpbGVuYW1lIG9mIGRhdGEuZmlsZXMpIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGZpbGVuYW1lICE9PSBgc3RyaW5nYCkge1xuICAgICAgICAgICAgICAgICAgICBlcnJvcnMucHVzaChuZXcgRXJyb3IoYEludmFsaWQgZmlsZXMgZW50cnkgZm9yICcke2ZpbGVuYW1lfSdgKSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLmZpbGVzLmFkZChmaWxlbmFtZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmZpbGVzID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIGRhdGEucHVibGlzaENvbmZpZyA9PT0gYG9iamVjdGAgJiYgZGF0YS5wdWJsaXNoQ29uZmlnICE9PSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLnB1Ymxpc2hDb25maWcgPSB7fTtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgZGF0YS5wdWJsaXNoQ29uZmlnLmFjY2VzcyA9PT0gYHN0cmluZ2ApXG4gICAgICAgICAgICAgICAgdGhpcy5wdWJsaXNoQ29uZmlnLmFjY2VzcyA9IGRhdGEucHVibGlzaENvbmZpZy5hY2Nlc3M7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGRhdGEucHVibGlzaENvbmZpZy5tYWluID09PSBgc3RyaW5nYClcbiAgICAgICAgICAgICAgICB0aGlzLnB1Ymxpc2hDb25maWcubWFpbiA9IG5vcm1hbGl6ZVNsYXNoZXMoZGF0YS5wdWJsaXNoQ29uZmlnLm1haW4pO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBkYXRhLnB1Ymxpc2hDb25maWcubW9kdWxlID09PSBgc3RyaW5nYClcbiAgICAgICAgICAgICAgICB0aGlzLnB1Ymxpc2hDb25maWcubW9kdWxlID0gbm9ybWFsaXplU2xhc2hlcyhkYXRhLnB1Ymxpc2hDb25maWcubW9kdWxlKTtcbiAgICAgICAgICAgIGlmIChkYXRhLnB1Ymxpc2hDb25maWcuYnJvd3NlciAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBkYXRhLnB1Ymxpc2hDb25maWcuYnJvd3NlciA9PT0gYHN0cmluZ2ApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wdWJsaXNoQ29uZmlnLmJyb3dzZXIgPSBub3JtYWxpemVTbGFzaGVzKGRhdGEucHVibGlzaENvbmZpZy5icm93c2VyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHVibGlzaENvbmZpZy5icm93c2VyID0gbmV3IE1hcCgpO1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhkYXRhLnB1Ymxpc2hDb25maWcuYnJvd3NlcikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHVibGlzaENvbmZpZy5icm93c2VyLnNldChub3JtYWxpemVTbGFzaGVzKGtleSksIHR5cGVvZiB2YWx1ZSA9PT0gYHN0cmluZ2AgPyBub3JtYWxpemVTbGFzaGVzKHZhbHVlKSA6IHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0eXBlb2YgZGF0YS5wdWJsaXNoQ29uZmlnLnJlZ2lzdHJ5ID09PSBgc3RyaW5nYClcbiAgICAgICAgICAgICAgICB0aGlzLnB1Ymxpc2hDb25maWcucmVnaXN0cnkgPSBkYXRhLnB1Ymxpc2hDb25maWcucmVnaXN0cnk7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGRhdGEucHVibGlzaENvbmZpZy5iaW4gPT09IGBzdHJpbmdgKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubmFtZSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnB1Ymxpc2hDb25maWcuYmluID0gbmV3IE1hcChbW3RoaXMubmFtZS5uYW1lLCBub3JtYWxpemVTbGFzaGVzKGRhdGEucHVibGlzaENvbmZpZy5iaW4pXV0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JzLnB1c2gobmV3IEVycm9yKGBTdHJpbmcgYmluIGZpZWxkLCBidXQgbm8gYXR0YWNoZWQgcGFja2FnZSBuYW1lYCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHR5cGVvZiBkYXRhLnB1Ymxpc2hDb25maWcuYmluID09PSBgb2JqZWN0YCAmJiBkYXRhLnB1Ymxpc2hDb25maWcuYmluICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wdWJsaXNoQ29uZmlnLmJpbiA9IG5ldyBNYXAoKTtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhkYXRhLnB1Ymxpc2hDb25maWcuYmluKSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlICE9PSBgc3RyaW5nYCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLnB1c2gobmV3IEVycm9yKGBJbnZhbGlkIGJpbiBkZWZpbml0aW9uIGZvciAnJHtrZXl9J2ApKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHVibGlzaENvbmZpZy5iaW4uc2V0KGtleSwgbm9ybWFsaXplU2xhc2hlcyh2YWx1ZSkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGRhdGEucHVibGlzaENvbmZpZy5leGVjdXRhYmxlRmlsZXMpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wdWJsaXNoQ29uZmlnLmV4ZWN1dGFibGVGaWxlcyA9IG5ldyBTZXQoKTtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHZhbHVlIG9mIGRhdGEucHVibGlzaENvbmZpZy5leGVjdXRhYmxlRmlsZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gYHN0cmluZ2ApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycy5wdXNoKG5ldyBFcnJvcihgSW52YWxpZCBleGVjdXRhYmxlIGZpbGUgZGVmaW5pdGlvbmApKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHVibGlzaENvbmZpZy5leGVjdXRhYmxlRmlsZXMuYWRkKG5vcm1hbGl6ZVNsYXNoZXModmFsdWUpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnB1Ymxpc2hDb25maWcgPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgZGF0YS5pbnN0YWxsQ29uZmlnID09PSBgb2JqZWN0YCAmJiBkYXRhLmluc3RhbGxDb25maWcgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMuaW5zdGFsbENvbmZpZyA9IHt9O1xuICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMoZGF0YS5pbnN0YWxsQ29uZmlnKSkge1xuICAgICAgICAgICAgICAgIGlmIChrZXkgPT09IGBob2lzdGluZ0xpbWl0c2ApIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBkYXRhLmluc3RhbGxDb25maWcuaG9pc3RpbmdMaW1pdHMgPT09IGBzdHJpbmdgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmluc3RhbGxDb25maWcuaG9pc3RpbmdMaW1pdHMgPSBkYXRhLmluc3RhbGxDb25maWcuaG9pc3RpbmdMaW1pdHM7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMucHVzaChuZXcgRXJyb3IoYEludmFsaWQgaG9pc3RpbmcgbGltaXRzIGRlZmluaXRpb25gKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoa2V5ID09IGBzZWxmUmVmZXJlbmNlc2ApIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBkYXRhLmluc3RhbGxDb25maWcuc2VsZlJlZmVyZW5jZXMgPT0gYGJvb2xlYW5gKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmluc3RhbGxDb25maWcuc2VsZlJlZmVyZW5jZXMgPSBkYXRhLmluc3RhbGxDb25maWcuc2VsZlJlZmVyZW5jZXM7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMucHVzaChuZXcgRXJyb3IoYEludmFsaWQgc2VsZlJlZmVyZW5jZXMgZGVmaW5pdGlvbiwgbXVzdCBiZSBhIGJvb2xlYW4gdmFsdWVgKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGVycm9ycy5wdXNoKG5ldyBFcnJvcihgVW5yZWNvZ25pemVkIGluc3RhbGxDb25maWcga2V5OiAke2tleX1gKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5pbnN0YWxsQ29uZmlnID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICAvLyBXZSB0cmVhdCBvcHRpb25hbCBkZXBlbmRlbmNpZXMgYWZ0ZXIgYm90aCB0aGUgcmVndWxhciBkZXBlbmRlbmN5IGZpZWxkXG4gICAgICAgIC8vIGFuZCB0aGUgZGVwZW5kZW5jaWVzTWV0YSBmaWVsZCBoYXZlIGJlZW4gZ2VuZXJhdGVkIChiZWNhdXNlIHdlIHdpbGxcbiAgICAgICAgLy8gb3ZlcnJpZGUgdGhlbSlcbiAgICAgICAgaWYgKHR5cGVvZiBkYXRhLm9wdGlvbmFsRGVwZW5kZW5jaWVzID09PSBgb2JqZWN0YCAmJiBkYXRhLm9wdGlvbmFsRGVwZW5kZW5jaWVzICE9PSBudWxsKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IFtuYW1lLCByYW5nZV0gb2YgT2JqZWN0LmVudHJpZXMoZGF0YS5vcHRpb25hbERlcGVuZGVuY2llcykpIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHJhbmdlICE9PSBgc3RyaW5nYCkge1xuICAgICAgICAgICAgICAgICAgICBlcnJvcnMucHVzaChuZXcgRXJyb3IoYEludmFsaWQgZGVwZW5kZW5jeSByYW5nZSBmb3IgJyR7bmFtZX0nYCkpO1xuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbGV0IGlkZW50O1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGlkZW50ID0gc3RydWN0VXRpbHMucGFyc2VJZGVudChuYW1lKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgIGVycm9ycy5wdXNoKG5ldyBFcnJvcihgUGFyc2luZyBmYWlsZWQgZm9yIHRoZSBkZXBlbmRlbmN5IG5hbWUgJyR7bmFtZX0nYCkpO1xuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gTm90ZSB0aGF0IHdlIHN0b3JlIHRoZSBvcHRpb25hbCBkZXBlbmRlbmNpZXMgaW4gdGhlIHNhbWUgc3RvcmUgYXNcbiAgICAgICAgICAgICAgICAvLyB0aGUgb25lIHRoYXQga2VlcCB0aGUgcmVndWxhciBkZXBlbmRlbmNpZXMsIGJlY2F1c2UgdGhleSdyZVxuICAgICAgICAgICAgICAgIC8vIGVmZmVjdGl2ZWx5IHRoZSBzYW1lICh0aGUgb25seSBkaWZmZXJlbmNlIGlzIHRoYXQgb3B0aW9uYWxcbiAgICAgICAgICAgICAgICAvLyBkZXBlbmRlbmNpZXMgaGF2ZSBhbiBleHRyYSBmaWVsZCBzZXQgaW4gZGVwZW5kZW5jaWVzTWV0YSkuXG4gICAgICAgICAgICAgICAgY29uc3QgcmVhbERlc2NyaXB0b3IgPSBzdHJ1Y3RVdGlscy5tYWtlRGVzY3JpcHRvcihpZGVudCwgcmFuZ2UpO1xuICAgICAgICAgICAgICAgIHRoaXMuZGVwZW5kZW5jaWVzLnNldChyZWFsRGVzY3JpcHRvci5pZGVudEhhc2gsIHJlYWxEZXNjcmlwdG9yKTtcbiAgICAgICAgICAgICAgICBjb25zdCBpZGVudERlc2NyaXB0b3IgPSBzdHJ1Y3RVdGlscy5tYWtlRGVzY3JpcHRvcihpZGVudCwgYHVua25vd25gKTtcbiAgICAgICAgICAgICAgICBjb25zdCBkZXBlbmRlbmN5TWV0YSA9IHRoaXMuZW5zdXJlRGVwZW5kZW5jeU1ldGEoaWRlbnREZXNjcmlwdG9yKTtcbiAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKGRlcGVuZGVuY3lNZXRhLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgZGF0YS5wcmVmZXJVbnBsdWdnZWQgPT09IGBib29sZWFuYClcbiAgICAgICAgICAgIHRoaXMucHJlZmVyVW5wbHVnZ2VkID0gZGF0YS5wcmVmZXJVbnBsdWdnZWQ7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHRoaXMucHJlZmVyVW5wbHVnZ2VkID0gbnVsbDtcbiAgICAgICAgdGhpcy5lcnJvcnMgPSBlcnJvcnM7XG4gICAgfVxuICAgIGdldEZvclNjb3BlKHR5cGUpIHtcbiAgICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgICAgICBjYXNlIGBkZXBlbmRlbmNpZXNgOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRlcGVuZGVuY2llcztcbiAgICAgICAgICAgIGNhc2UgYGRldkRlcGVuZGVuY2llc2A6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGV2RGVwZW5kZW5jaWVzO1xuICAgICAgICAgICAgY2FzZSBgcGVlckRlcGVuZGVuY2llc2A6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucGVlckRlcGVuZGVuY2llcztcbiAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIHZhbHVlIChcIiR7dHlwZX1cIilgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBoYXNDb25zdW1lckRlcGVuZGVuY3koaWRlbnQpIHtcbiAgICAgICAgaWYgKHRoaXMuZGVwZW5kZW5jaWVzLmhhcyhpZGVudC5pZGVudEhhc2gpKVxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIGlmICh0aGlzLnBlZXJEZXBlbmRlbmNpZXMuaGFzKGlkZW50LmlkZW50SGFzaCkpXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBoYXNIYXJkRGVwZW5kZW5jeShpZGVudCkge1xuICAgICAgICBpZiAodGhpcy5kZXBlbmRlbmNpZXMuaGFzKGlkZW50LmlkZW50SGFzaCkpXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgaWYgKHRoaXMuZGV2RGVwZW5kZW5jaWVzLmhhcyhpZGVudC5pZGVudEhhc2gpKVxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaGFzU29mdERlcGVuZGVuY3koaWRlbnQpIHtcbiAgICAgICAgaWYgKHRoaXMucGVlckRlcGVuZGVuY2llcy5oYXMoaWRlbnQuaWRlbnRIYXNoKSlcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGhhc0RlcGVuZGVuY3koaWRlbnQpIHtcbiAgICAgICAgaWYgKHRoaXMuaGFzSGFyZERlcGVuZGVuY3koaWRlbnQpKVxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIGlmICh0aGlzLmhhc1NvZnREZXBlbmRlbmN5KGlkZW50KSlcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGdldENvbmRpdGlvbnMoKSB7XG4gICAgICAgIGNvbnN0IGZpZWxkcyA9IFtdO1xuICAgICAgICBpZiAodGhpcy5vcyAmJiB0aGlzLm9zLmxlbmd0aCA+IDApXG4gICAgICAgICAgICBmaWVsZHMucHVzaCh0b0NvbmRpdGlvbkxpbmUoYG9zYCwgdGhpcy5vcykpO1xuICAgICAgICBpZiAodGhpcy5jcHUgJiYgdGhpcy5jcHUubGVuZ3RoID4gMClcbiAgICAgICAgICAgIGZpZWxkcy5wdXNoKHRvQ29uZGl0aW9uTGluZShgY3B1YCwgdGhpcy5jcHUpKTtcbiAgICAgICAgaWYgKHRoaXMubGliYyAmJiB0aGlzLmxpYmMubGVuZ3RoID4gMClcbiAgICAgICAgICAgIGZpZWxkcy5wdXNoKHRvQ29uZGl0aW9uTGluZShgbGliY2AsIHRoaXMubGliYykpO1xuICAgICAgICByZXR1cm4gZmllbGRzLmxlbmd0aCA+IDAgPyBmaWVsZHMuam9pbihgICYgYCkgOiBudWxsO1xuICAgIH1cbiAgICBlbnN1cmVEZXBlbmRlbmN5TWV0YShkZXNjcmlwdG9yKSB7XG4gICAgICAgIGlmIChkZXNjcmlwdG9yLnJhbmdlICE9PSBgdW5rbm93bmAgJiYgIXNlbXZlcl8xLmRlZmF1bHQudmFsaWQoZGVzY3JpcHRvci5yYW5nZSkpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgbWV0YSBmaWVsZCByYW5nZSBmb3IgJyR7c3RydWN0VXRpbHMuc3RyaW5naWZ5RGVzY3JpcHRvcihkZXNjcmlwdG9yKX0nYCk7XG4gICAgICAgIGNvbnN0IGlkZW50U3RyaW5nID0gc3RydWN0VXRpbHMuc3RyaW5naWZ5SWRlbnQoZGVzY3JpcHRvcik7XG4gICAgICAgIGNvbnN0IHJhbmdlID0gZGVzY3JpcHRvci5yYW5nZSAhPT0gYHVua25vd25gID8gZGVzY3JpcHRvci5yYW5nZSA6IG51bGw7XG4gICAgICAgIGxldCBkZXBlbmRlbmN5TWV0YVNldCA9IHRoaXMuZGVwZW5kZW5jaWVzTWV0YS5nZXQoaWRlbnRTdHJpbmcpO1xuICAgICAgICBpZiAoIWRlcGVuZGVuY3lNZXRhU2V0KVxuICAgICAgICAgICAgdGhpcy5kZXBlbmRlbmNpZXNNZXRhLnNldChpZGVudFN0cmluZywgZGVwZW5kZW5jeU1ldGFTZXQgPSBuZXcgTWFwKCkpO1xuICAgICAgICBsZXQgZGVwZW5kZW5jeU1ldGEgPSBkZXBlbmRlbmN5TWV0YVNldC5nZXQocmFuZ2UpO1xuICAgICAgICBpZiAoIWRlcGVuZGVuY3lNZXRhKVxuICAgICAgICAgICAgZGVwZW5kZW5jeU1ldGFTZXQuc2V0KHJhbmdlLCBkZXBlbmRlbmN5TWV0YSA9IHt9KTtcbiAgICAgICAgcmV0dXJuIGRlcGVuZGVuY3lNZXRhO1xuICAgIH1cbiAgICBlbnN1cmVQZWVyRGVwZW5kZW5jeU1ldGEoZGVzY3JpcHRvcikge1xuICAgICAgICBpZiAoZGVzY3JpcHRvci5yYW5nZSAhPT0gYHVua25vd25gKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIG1ldGEgZmllbGQgcmFuZ2UgZm9yICcke3N0cnVjdFV0aWxzLnN0cmluZ2lmeURlc2NyaXB0b3IoZGVzY3JpcHRvcil9J2ApO1xuICAgICAgICBjb25zdCBpZGVudFN0cmluZyA9IHN0cnVjdFV0aWxzLnN0cmluZ2lmeUlkZW50KGRlc2NyaXB0b3IpO1xuICAgICAgICBsZXQgcGVlckRlcGVuZGVuY3lNZXRhID0gdGhpcy5wZWVyRGVwZW5kZW5jaWVzTWV0YS5nZXQoaWRlbnRTdHJpbmcpO1xuICAgICAgICBpZiAoIXBlZXJEZXBlbmRlbmN5TWV0YSlcbiAgICAgICAgICAgIHRoaXMucGVlckRlcGVuZGVuY2llc01ldGEuc2V0KGlkZW50U3RyaW5nLCBwZWVyRGVwZW5kZW5jeU1ldGEgPSB7fSk7XG4gICAgICAgIHJldHVybiBwZWVyRGVwZW5kZW5jeU1ldGE7XG4gICAgfVxuICAgIHNldFJhd0ZpZWxkKG5hbWUsIHZhbHVlLCB7IGFmdGVyID0gW10gfSA9IHt9KSB7XG4gICAgICAgIGNvbnN0IGFmdGVyU2V0ID0gbmV3IFNldChhZnRlci5maWx0ZXIoa2V5ID0+IHtcbiAgICAgICAgICAgIHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpcy5yYXcsIGtleSk7XG4gICAgICAgIH0pKTtcbiAgICAgICAgaWYgKGFmdGVyU2V0LnNpemUgPT09IDAgfHwgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRoaXMucmF3LCBuYW1lKSkge1xuICAgICAgICAgICAgdGhpcy5yYXdbbmFtZV0gPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IG9sZFJhdyA9IHRoaXMucmF3O1xuICAgICAgICAgICAgY29uc3QgbmV3UmF3ID0gdGhpcy5yYXcgPSB7fTtcbiAgICAgICAgICAgIGxldCBpbnNlcnRlZCA9IGZhbHNlO1xuICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMob2xkUmF3KSkge1xuICAgICAgICAgICAgICAgIG5ld1Jhd1trZXldID0gb2xkUmF3W2tleV07XG4gICAgICAgICAgICAgICAgaWYgKCFpbnNlcnRlZCkge1xuICAgICAgICAgICAgICAgICAgICBhZnRlclNldC5kZWxldGUoa2V5KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGFmdGVyU2V0LnNpemUgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ld1Jhd1tuYW1lXSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5zZXJ0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIGV4cG9ydFRvKGRhdGEsIHsgY29tcGF0aWJpbGl0eU1vZGUgPSB0cnVlIH0gPSB7fSkge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIC8vIE5vdGUgdGhhdCB3ZSBldmVuIHNldCB0aGUgZmllbGRzIHRoYXQgd2UgcmUtc2V0IGxhdGVyOyBpdFxuICAgICAgICAvLyBhbGxvd3MgdXMgdG8gcHJlc2VydmUgdGhlIGtleSBvcmRlcmluZ1xuICAgICAgICBPYmplY3QuYXNzaWduKGRhdGEsIHRoaXMucmF3KTtcbiAgICAgICAgaWYgKHRoaXMubmFtZSAhPT0gbnVsbClcbiAgICAgICAgICAgIGRhdGEubmFtZSA9IHN0cnVjdFV0aWxzLnN0cmluZ2lmeUlkZW50KHRoaXMubmFtZSk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIGRlbGV0ZSBkYXRhLm5hbWU7XG4gICAgICAgIGlmICh0aGlzLnZlcnNpb24gIT09IG51bGwpXG4gICAgICAgICAgICBkYXRhLnZlcnNpb24gPSB0aGlzLnZlcnNpb247XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIGRlbGV0ZSBkYXRhLnZlcnNpb247XG4gICAgICAgIGlmICh0aGlzLm9zICE9PSBudWxsKVxuICAgICAgICAgICAgZGF0YS5vcyA9IHRoaXMub3M7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIGRlbGV0ZSBkYXRhLm9zO1xuICAgICAgICBpZiAodGhpcy5jcHUgIT09IG51bGwpXG4gICAgICAgICAgICBkYXRhLmNwdSA9IHRoaXMuY3B1O1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICBkZWxldGUgZGF0YS5jcHU7XG4gICAgICAgIGlmICh0aGlzLnR5cGUgIT09IG51bGwpXG4gICAgICAgICAgICBkYXRhLnR5cGUgPSB0aGlzLnR5cGU7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIGRlbGV0ZSBkYXRhLnR5cGU7XG4gICAgICAgIGlmICh0aGlzLnBhY2thZ2VNYW5hZ2VyICE9PSBudWxsKVxuICAgICAgICAgICAgZGF0YS5wYWNrYWdlTWFuYWdlciA9IHRoaXMucGFja2FnZU1hbmFnZXI7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIGRlbGV0ZSBkYXRhLnBhY2thZ2VNYW5hZ2VyO1xuICAgICAgICBpZiAodGhpcy5wcml2YXRlKVxuICAgICAgICAgICAgZGF0YS5wcml2YXRlID0gdHJ1ZTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgZGVsZXRlIGRhdGEucHJpdmF0ZTtcbiAgICAgICAgaWYgKHRoaXMubGljZW5zZSAhPT0gbnVsbClcbiAgICAgICAgICAgIGRhdGEubGljZW5zZSA9IHRoaXMubGljZW5zZTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgZGVsZXRlIGRhdGEubGljZW5zZTtcbiAgICAgICAgaWYgKHRoaXMubGFuZ3VhZ2VOYW1lICE9PSBudWxsKVxuICAgICAgICAgICAgZGF0YS5sYW5ndWFnZU5hbWUgPSB0aGlzLmxhbmd1YWdlTmFtZTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgZGVsZXRlIGRhdGEubGFuZ3VhZ2VOYW1lO1xuICAgICAgICBpZiAodGhpcy5tYWluICE9PSBudWxsKVxuICAgICAgICAgICAgZGF0YS5tYWluID0gdGhpcy5tYWluO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICBkZWxldGUgZGF0YS5tYWluO1xuICAgICAgICBpZiAodGhpcy5tb2R1bGUgIT09IG51bGwpXG4gICAgICAgICAgICBkYXRhLm1vZHVsZSA9IHRoaXMubW9kdWxlO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICBkZWxldGUgZGF0YS5tb2R1bGU7XG4gICAgICAgIGlmICh0aGlzLmJyb3dzZXIgIT09IG51bGwpIHtcbiAgICAgICAgICAgIGNvbnN0IGJyb3dzZXIgPSB0aGlzLmJyb3dzZXI7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGJyb3dzZXIgPT09IGBzdHJpbmdgKSB7XG4gICAgICAgICAgICAgICAgZGF0YS5icm93c2VyID0gYnJvd3NlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGJyb3dzZXIgaW5zdGFuY2VvZiBNYXApIHtcbiAgICAgICAgICAgICAgICBkYXRhLmJyb3dzZXIgPSBPYmplY3QuYXNzaWduKHt9LCAuLi5BcnJheS5mcm9tKGJyb3dzZXIua2V5cygpKS5zb3J0KCkubWFwKG5hbWUgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBbbmFtZV06IGJyb3dzZXIuZ2V0KG5hbWUpIH07XG4gICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgZGVsZXRlIGRhdGEuYnJvd3NlcjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5iaW4uc2l6ZSA9PT0gMSAmJiB0aGlzLm5hbWUgIT09IG51bGwgJiYgdGhpcy5iaW4uaGFzKHRoaXMubmFtZS5uYW1lKSkge1xuICAgICAgICAgICAgZGF0YS5iaW4gPSB0aGlzLmJpbi5nZXQodGhpcy5uYW1lLm5hbWUpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHRoaXMuYmluLnNpemUgPiAwKSB7XG4gICAgICAgICAgICBkYXRhLmJpbiA9IE9iamVjdC5hc3NpZ24oe30sIC4uLkFycmF5LmZyb20odGhpcy5iaW4ua2V5cygpKS5zb3J0KCkubWFwKG5hbWUgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB7IFtuYW1lXTogdGhpcy5iaW4uZ2V0KG5hbWUpIH07XG4gICAgICAgICAgICB9KSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBkZWxldGUgZGF0YS5iaW47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMud29ya3NwYWNlRGVmaW5pdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgaWYgKHRoaXMucmF3LndvcmtzcGFjZXMgJiYgIUFycmF5LmlzQXJyYXkodGhpcy5yYXcud29ya3NwYWNlcykpIHtcbiAgICAgICAgICAgICAgICBkYXRhLndvcmtzcGFjZXMgPSB7IC4uLnRoaXMucmF3LndvcmtzcGFjZXMsIHBhY2thZ2VzOiB0aGlzLndvcmtzcGFjZURlZmluaXRpb25zLm1hcCgoeyBwYXR0ZXJuIH0pID0+IHBhdHRlcm4pIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBkYXRhLndvcmtzcGFjZXMgPSB0aGlzLndvcmtzcGFjZURlZmluaXRpb25zLm1hcCgoeyBwYXR0ZXJuIH0pID0+IHBhdHRlcm4pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHRoaXMucmF3LndvcmtzcGFjZXMgJiYgIUFycmF5LmlzQXJyYXkodGhpcy5yYXcud29ya3NwYWNlcykgJiYgT2JqZWN0LmtleXModGhpcy5yYXcud29ya3NwYWNlcykubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgZGF0YS53b3Jrc3BhY2VzID0gdGhpcy5yYXcud29ya3NwYWNlcztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGRlbGV0ZSBkYXRhLndvcmtzcGFjZXM7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcmVndWxhckRlcGVuZGVuY2llcyA9IFtdO1xuICAgICAgICBjb25zdCBvcHRpb25hbERlcGVuZGVuY2llcyA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IGRlcGVuZGVuY3kgb2YgdGhpcy5kZXBlbmRlbmNpZXMudmFsdWVzKCkpIHtcbiAgICAgICAgICAgIGNvbnN0IGRlcGVuZGVuY3lNZXRhU2V0ID0gdGhpcy5kZXBlbmRlbmNpZXNNZXRhLmdldChzdHJ1Y3RVdGlscy5zdHJpbmdpZnlJZGVudChkZXBlbmRlbmN5KSk7XG4gICAgICAgICAgICBsZXQgaXNPcHRpb25hbGx5QnVpbHQgPSBmYWxzZTtcbiAgICAgICAgICAgIGlmIChjb21wYXRpYmlsaXR5TW9kZSkge1xuICAgICAgICAgICAgICAgIGlmIChkZXBlbmRlbmN5TWV0YVNldCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtZXRhID0gZGVwZW5kZW5jeU1ldGFTZXQuZ2V0KG51bGwpO1xuICAgICAgICAgICAgICAgICAgICBpZiAobWV0YSAmJiBtZXRhLm9wdGlvbmFsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpc09wdGlvbmFsbHlCdWlsdCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXNPcHRpb25hbGx5QnVpbHQpIHtcbiAgICAgICAgICAgICAgICBvcHRpb25hbERlcGVuZGVuY2llcy5wdXNoKGRlcGVuZGVuY3kpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVndWxhckRlcGVuZGVuY2llcy5wdXNoKGRlcGVuZGVuY3kpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChyZWd1bGFyRGVwZW5kZW5jaWVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGRhdGEuZGVwZW5kZW5jaWVzID0gT2JqZWN0LmFzc2lnbih7fSwgLi4uc3RydWN0VXRpbHMuc29ydERlc2NyaXB0b3JzKHJlZ3VsYXJEZXBlbmRlbmNpZXMpLm1hcChkZXBlbmRlbmN5ID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4geyBbc3RydWN0VXRpbHMuc3RyaW5naWZ5SWRlbnQoZGVwZW5kZW5jeSldOiBkZXBlbmRlbmN5LnJhbmdlIH07XG4gICAgICAgICAgICB9KSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBkZWxldGUgZGF0YS5kZXBlbmRlbmNpZXM7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9wdGlvbmFsRGVwZW5kZW5jaWVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGRhdGEub3B0aW9uYWxEZXBlbmRlbmNpZXMgPSBPYmplY3QuYXNzaWduKHt9LCAuLi5zdHJ1Y3RVdGlscy5zb3J0RGVzY3JpcHRvcnMob3B0aW9uYWxEZXBlbmRlbmNpZXMpLm1hcChkZXBlbmRlbmN5ID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4geyBbc3RydWN0VXRpbHMuc3RyaW5naWZ5SWRlbnQoZGVwZW5kZW5jeSldOiBkZXBlbmRlbmN5LnJhbmdlIH07XG4gICAgICAgICAgICB9KSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBkZWxldGUgZGF0YS5vcHRpb25hbERlcGVuZGVuY2llcztcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5kZXZEZXBlbmRlbmNpZXMuc2l6ZSA+IDApIHtcbiAgICAgICAgICAgIGRhdGEuZGV2RGVwZW5kZW5jaWVzID0gT2JqZWN0LmFzc2lnbih7fSwgLi4uc3RydWN0VXRpbHMuc29ydERlc2NyaXB0b3JzKHRoaXMuZGV2RGVwZW5kZW5jaWVzLnZhbHVlcygpKS5tYXAoZGVwZW5kZW5jeSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgW3N0cnVjdFV0aWxzLnN0cmluZ2lmeUlkZW50KGRlcGVuZGVuY3kpXTogZGVwZW5kZW5jeS5yYW5nZSB9O1xuICAgICAgICAgICAgfSkpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgZGVsZXRlIGRhdGEuZGV2RGVwZW5kZW5jaWVzO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnBlZXJEZXBlbmRlbmNpZXMuc2l6ZSA+IDApIHtcbiAgICAgICAgICAgIGRhdGEucGVlckRlcGVuZGVuY2llcyA9IE9iamVjdC5hc3NpZ24oe30sIC4uLnN0cnVjdFV0aWxzLnNvcnREZXNjcmlwdG9ycyh0aGlzLnBlZXJEZXBlbmRlbmNpZXMudmFsdWVzKCkpLm1hcChkZXBlbmRlbmN5ID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4geyBbc3RydWN0VXRpbHMuc3RyaW5naWZ5SWRlbnQoZGVwZW5kZW5jeSldOiBkZXBlbmRlbmN5LnJhbmdlIH07XG4gICAgICAgICAgICB9KSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBkZWxldGUgZGF0YS5wZWVyRGVwZW5kZW5jaWVzO1xuICAgICAgICB9XG4gICAgICAgIGRhdGEuZGVwZW5kZW5jaWVzTWV0YSA9IHt9O1xuICAgICAgICBmb3IgKGNvbnN0IFtpZGVudFN0cmluZywgZGVwZW5kZW5jeU1ldGFTZXRdIG9mIG1pc2NVdGlscy5zb3J0TWFwKHRoaXMuZGVwZW5kZW5jaWVzTWV0YS5lbnRyaWVzKCksIChbaWRlbnRTdHJpbmcsIGRlcGVuZGVuY3lNZXRhU2V0XSkgPT4gaWRlbnRTdHJpbmcpKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IFtyYW5nZSwgbWV0YV0gb2YgbWlzY1V0aWxzLnNvcnRNYXAoZGVwZW5kZW5jeU1ldGFTZXQuZW50cmllcygpLCAoW3JhbmdlLCBtZXRhXSkgPT4gcmFuZ2UgIT09IG51bGwgPyBgMCR7cmFuZ2V9YCA6IGAxYCkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBrZXkgPSByYW5nZSAhPT0gbnVsbFxuICAgICAgICAgICAgICAgICAgICA/IHN0cnVjdFV0aWxzLnN0cmluZ2lmeURlc2NyaXB0b3Ioc3RydWN0VXRpbHMubWFrZURlc2NyaXB0b3Ioc3RydWN0VXRpbHMucGFyc2VJZGVudChpZGVudFN0cmluZyksIHJhbmdlKSlcbiAgICAgICAgICAgICAgICAgICAgOiBpZGVudFN0cmluZztcbiAgICAgICAgICAgICAgICBjb25zdCBtZXRhQ29weSA9IHsgLi4ubWV0YSB9O1xuICAgICAgICAgICAgICAgIGlmIChjb21wYXRpYmlsaXR5TW9kZSAmJiByYW5nZSA9PT0gbnVsbClcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIG1ldGFDb3B5Lm9wdGlvbmFsO1xuICAgICAgICAgICAgICAgIGlmIChPYmplY3Qua2V5cyhtZXRhQ29weSkubGVuZ3RoID09PSAwKVxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBkYXRhLmRlcGVuZGVuY2llc01ldGFba2V5XSA9IG1ldGFDb3B5O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChPYmplY3Qua2V5cyhkYXRhLmRlcGVuZGVuY2llc01ldGEpLmxlbmd0aCA9PT0gMClcbiAgICAgICAgICAgIGRlbGV0ZSBkYXRhLmRlcGVuZGVuY2llc01ldGE7XG4gICAgICAgIGlmICh0aGlzLnBlZXJEZXBlbmRlbmNpZXNNZXRhLnNpemUgPiAwKSB7XG4gICAgICAgICAgICBkYXRhLnBlZXJEZXBlbmRlbmNpZXNNZXRhID0gT2JqZWN0LmFzc2lnbih7fSwgLi4ubWlzY1V0aWxzLnNvcnRNYXAodGhpcy5wZWVyRGVwZW5kZW5jaWVzTWV0YS5lbnRyaWVzKCksIChbaWRlbnRTdHJpbmcsIG1ldGFdKSA9PiBpZGVudFN0cmluZykubWFwKChbaWRlbnRTdHJpbmcsIG1ldGFdKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgW2lkZW50U3RyaW5nXTogbWV0YSB9O1xuICAgICAgICAgICAgfSkpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgZGVsZXRlIGRhdGEucGVlckRlcGVuZGVuY2llc01ldGE7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMucmVzb2x1dGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgZGF0YS5yZXNvbHV0aW9ucyA9IE9iamVjdC5hc3NpZ24oe30sIC4uLnRoaXMucmVzb2x1dGlvbnMubWFwKCh7IHBhdHRlcm4sIHJlZmVyZW5jZSB9KSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgWygwLCBwYXJzZXJzXzEuc3RyaW5naWZ5UmVzb2x1dGlvbikocGF0dGVybildOiByZWZlcmVuY2UgfTtcbiAgICAgICAgICAgIH0pKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGRlbGV0ZSBkYXRhLnJlc29sdXRpb25zO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmZpbGVzICE9PSBudWxsKVxuICAgICAgICAgICAgZGF0YS5maWxlcyA9IEFycmF5LmZyb20odGhpcy5maWxlcyk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIGRlbGV0ZSBkYXRhLmZpbGVzO1xuICAgICAgICBpZiAodGhpcy5wcmVmZXJVbnBsdWdnZWQgIT09IG51bGwpXG4gICAgICAgICAgICBkYXRhLnByZWZlclVucGx1Z2dlZCA9IHRoaXMucHJlZmVyVW5wbHVnZ2VkO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICBkZWxldGUgZGF0YS5wcmVmZXJVbnBsdWdnZWQ7XG4gICAgICAgIGlmICh0aGlzLnNjcmlwdHMgIT09IG51bGwgJiYgdGhpcy5zY3JpcHRzLnNpemUgPiAwKSB7XG4gICAgICAgICAgICAoX2EgPSBkYXRhLnNjcmlwdHMpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IChkYXRhLnNjcmlwdHMgPSB7fSk7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGV4aXN0aW5nU2NyaXB0TmFtZSBvZiBPYmplY3Qua2V5cyhkYXRhLnNjcmlwdHMpKVxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5zY3JpcHRzLmhhcyhleGlzdGluZ1NjcmlwdE5hbWUpKVxuICAgICAgICAgICAgICAgICAgICBkZWxldGUgZGF0YS5zY3JpcHRzW2V4aXN0aW5nU2NyaXB0TmFtZV07XG4gICAgICAgICAgICBmb3IgKGNvbnN0IFtuYW1lLCBjb250ZW50XSBvZiB0aGlzLnNjcmlwdHMuZW50cmllcygpKSB7XG4gICAgICAgICAgICAgICAgLy8gU2V0IG9uZSBhdCBhIHRpbWUgaW4gb3JkZXIgdG8gcHJlc2VydmUgaW1wbGljaXRseS1wcmVzZXJ2ZWQgb3JkZXJpbmcgb2YgZXhpc3Rpbmcgc2NyaXB0cy5cbiAgICAgICAgICAgICAgICBkYXRhLnNjcmlwdHNbbmFtZV0gPSBjb250ZW50O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgZGVsZXRlIGRhdGEuc2NyaXB0cztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZGF0YTtcbiAgICB9XG59XG5leHBvcnRzLk1hbmlmZXN0ID0gTWFuaWZlc3Q7XG5NYW5pZmVzdC5maWxlTmFtZSA9IGBwYWNrYWdlLmpzb25gO1xuTWFuaWZlc3QuYWxsRGVwZW5kZW5jaWVzID0gW2BkZXBlbmRlbmNpZXNgLCBgZGV2RGVwZW5kZW5jaWVzYCwgYHBlZXJEZXBlbmRlbmNpZXNgXTtcbk1hbmlmZXN0LmhhcmREZXBlbmRlbmNpZXMgPSBbYGRlcGVuZGVuY2llc2AsIGBkZXZEZXBlbmRlbmNpZXNgXTtcbmZ1bmN0aW9uIGdldEluZGVudChjb250ZW50KSB7XG4gICAgY29uc3QgaW5kZW50TWF0Y2ggPSBjb250ZW50Lm1hdGNoKC9eWyBcXHRdKy9tKTtcbiAgICBpZiAoaW5kZW50TWF0Y2gpIHtcbiAgICAgICAgcmV0dXJuIGluZGVudE1hdGNoWzBdO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGAgIGA7XG4gICAgfVxufVxuZnVuY3Rpb24gc3RyaXBCT00oY29udGVudCkge1xuICAgIGlmIChjb250ZW50LmNoYXJDb2RlQXQoMCkgPT09IDB4RkVGRikge1xuICAgICAgICByZXR1cm4gY29udGVudC5zbGljZSgxKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHJldHVybiBjb250ZW50O1xuICAgIH1cbn1cbmZ1bmN0aW9uIG5vcm1hbGl6ZVNsYXNoZXMoc3RyKSB7XG4gICAgcmV0dXJuIHN0ci5yZXBsYWNlKC9cXFxcL2csIGAvYCk7XG59XG5mdW5jdGlvbiB0cnlQYXJzZU9wdGlvbmFsQm9vbGVhbih2YWx1ZSwgeyB5YW1sQ29tcGF0aWJpbGl0eU1vZGUgfSkge1xuICAgIGlmICh5YW1sQ29tcGF0aWJpbGl0eU1vZGUpXG4gICAgICAgIHJldHVybiBtaXNjVXRpbHMudHJ5UGFyc2VPcHRpb25hbEJvb2xlYW4odmFsdWUpO1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IGB1bmRlZmluZWRgIHx8IHR5cGVvZiB2YWx1ZSA9PT0gYGJvb2xlYW5gKVxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgcmV0dXJuIG51bGw7XG59XG5mdW5jdGlvbiB0b0NvbmRpdGlvblRva2VuKG5hbWUsIHJhdykge1xuICAgIGNvbnN0IGluZGV4ID0gcmF3LnNlYXJjaCgvW14hXS8pO1xuICAgIGlmIChpbmRleCA9PT0gLTEpXG4gICAgICAgIHJldHVybiBgaW52YWxpZGA7XG4gICAgY29uc3QgcHJlZml4ID0gaW5kZXggJSAyID09PSAwID8gYGAgOiBgIWA7XG4gICAgY29uc3QgdmFsdWUgPSByYXcuc2xpY2UoaW5kZXgpO1xuICAgIHJldHVybiBgJHtwcmVmaXh9JHtuYW1lfT0ke3ZhbHVlfWA7XG59XG5mdW5jdGlvbiB0b0NvbmRpdGlvbkxpbmUobmFtZSwgcmF3VG9rZW5zKSB7XG4gICAgaWYgKHJhd1Rva2Vucy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgcmV0dXJuIHRvQ29uZGl0aW9uVG9rZW4obmFtZSwgcmF3VG9rZW5zWzBdKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHJldHVybiBgKCR7cmF3VG9rZW5zLm1hcChyYXcgPT4gdG9Db25kaXRpb25Ub2tlbihuYW1lLCByYXcpKS5qb2luKGAgfCBgKX0pYDtcbiAgICB9XG59XG4iLCAidmFyIHJvb3QgPSByZXF1aXJlKCcuL19yb290Jyk7XG5cbi8qKlxuICogR2V0cyB0aGUgdGltZXN0YW1wIG9mIHRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHRoYXQgaGF2ZSBlbGFwc2VkIHNpbmNlXG4gKiB0aGUgVW5peCBlcG9jaCAoMSBKYW51YXJ5IDE5NzAgMDA6MDA6MDAgVVRDKS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDIuNC4wXG4gKiBAY2F0ZWdvcnkgRGF0ZVxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgdGltZXN0YW1wLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmRlZmVyKGZ1bmN0aW9uKHN0YW1wKSB7XG4gKiAgIGNvbnNvbGUubG9nKF8ubm93KCkgLSBzdGFtcCk7XG4gKiB9LCBfLm5vdygpKTtcbiAqIC8vID0+IExvZ3MgdGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgaXQgdG9vayBmb3IgdGhlIGRlZmVycmVkIGludm9jYXRpb24uXG4gKi9cbnZhciBub3cgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHJvb3QuRGF0ZS5ub3coKTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gbm93O1xuIiwgIi8qKiBVc2VkIHRvIG1hdGNoIGEgc2luZ2xlIHdoaXRlc3BhY2UgY2hhcmFjdGVyLiAqL1xudmFyIHJlV2hpdGVzcGFjZSA9IC9cXHMvO1xuXG4vKipcbiAqIFVzZWQgYnkgYF8udHJpbWAgYW5kIGBfLnRyaW1FbmRgIHRvIGdldCB0aGUgaW5kZXggb2YgdGhlIGxhc3Qgbm9uLXdoaXRlc3BhY2VcbiAqIGNoYXJhY3RlciBvZiBgc3RyaW5nYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBUaGUgc3RyaW5nIHRvIGluc3BlY3QuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbGFzdCBub24td2hpdGVzcGFjZSBjaGFyYWN0ZXIuXG4gKi9cbmZ1bmN0aW9uIHRyaW1tZWRFbmRJbmRleChzdHJpbmcpIHtcbiAgdmFyIGluZGV4ID0gc3RyaW5nLmxlbmd0aDtcblxuICB3aGlsZSAoaW5kZXgtLSAmJiByZVdoaXRlc3BhY2UudGVzdChzdHJpbmcuY2hhckF0KGluZGV4KSkpIHt9XG4gIHJldHVybiBpbmRleDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB0cmltbWVkRW5kSW5kZXg7XG4iLCAidmFyIHRyaW1tZWRFbmRJbmRleCA9IHJlcXVpcmUoJy4vX3RyaW1tZWRFbmRJbmRleCcpO1xuXG4vKiogVXNlZCB0byBtYXRjaCBsZWFkaW5nIHdoaXRlc3BhY2UuICovXG52YXIgcmVUcmltU3RhcnQgPSAvXlxccysvO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnRyaW1gLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgdG8gdHJpbS5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHRyaW1tZWQgc3RyaW5nLlxuICovXG5mdW5jdGlvbiBiYXNlVHJpbShzdHJpbmcpIHtcbiAgcmV0dXJuIHN0cmluZ1xuICAgID8gc3RyaW5nLnNsaWNlKDAsIHRyaW1tZWRFbmRJbmRleChzdHJpbmcpICsgMSkucmVwbGFjZShyZVRyaW1TdGFydCwgJycpXG4gICAgOiBzdHJpbmc7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZVRyaW07XG4iLCAidmFyIGJhc2VHZXRUYWcgPSByZXF1aXJlKCcuL19iYXNlR2V0VGFnJyksXG4gICAgaXNPYmplY3RMaWtlID0gcmVxdWlyZSgnLi9pc09iamVjdExpa2UnKTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIHN5bWJvbFRhZyA9ICdbb2JqZWN0IFN5bWJvbF0nO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgU3ltYm9sYCBwcmltaXRpdmUgb3Igb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgc3ltYm9sLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNTeW1ib2woU3ltYm9sLml0ZXJhdG9yKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzU3ltYm9sKCdhYmMnKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzU3ltYm9sKHZhbHVlKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT0gJ3N5bWJvbCcgfHxcbiAgICAoaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBiYXNlR2V0VGFnKHZhbHVlKSA9PSBzeW1ib2xUYWcpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzU3ltYm9sO1xuIiwgInZhciBiYXNlVHJpbSA9IHJlcXVpcmUoJy4vX2Jhc2VUcmltJyksXG4gICAgaXNPYmplY3QgPSByZXF1aXJlKCcuL2lzT2JqZWN0JyksXG4gICAgaXNTeW1ib2wgPSByZXF1aXJlKCcuL2lzU3ltYm9sJyk7XG5cbi8qKiBVc2VkIGFzIHJlZmVyZW5jZXMgZm9yIHZhcmlvdXMgYE51bWJlcmAgY29uc3RhbnRzLiAqL1xudmFyIE5BTiA9IDAgLyAwO1xuXG4vKiogVXNlZCB0byBkZXRlY3QgYmFkIHNpZ25lZCBoZXhhZGVjaW1hbCBzdHJpbmcgdmFsdWVzLiAqL1xudmFyIHJlSXNCYWRIZXggPSAvXlstK10weFswLTlhLWZdKyQvaTtcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IGJpbmFyeSBzdHJpbmcgdmFsdWVzLiAqL1xudmFyIHJlSXNCaW5hcnkgPSAvXjBiWzAxXSskL2k7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCBvY3RhbCBzdHJpbmcgdmFsdWVzLiAqL1xudmFyIHJlSXNPY3RhbCA9IC9eMG9bMC03XSskL2k7XG5cbi8qKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyB3aXRob3V0IGEgZGVwZW5kZW5jeSBvbiBgcm9vdGAuICovXG52YXIgZnJlZVBhcnNlSW50ID0gcGFyc2VJbnQ7XG5cbi8qKlxuICogQ29udmVydHMgYHZhbHVlYCB0byBhIG51bWJlci5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcHJvY2Vzcy5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIG51bWJlci5cbiAqIEBleGFtcGxlXG4gKlxuICogXy50b051bWJlcigzLjIpO1xuICogLy8gPT4gMy4yXG4gKlxuICogXy50b051bWJlcihOdW1iZXIuTUlOX1ZBTFVFKTtcbiAqIC8vID0+IDVlLTMyNFxuICpcbiAqIF8udG9OdW1iZXIoSW5maW5pdHkpO1xuICogLy8gPT4gSW5maW5pdHlcbiAqXG4gKiBfLnRvTnVtYmVyKCczLjInKTtcbiAqIC8vID0+IDMuMlxuICovXG5mdW5jdGlvbiB0b051bWJlcih2YWx1ZSkge1xuICBpZiAodHlwZW9mIHZhbHVlID09ICdudW1iZXInKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIGlmIChpc1N5bWJvbCh2YWx1ZSkpIHtcbiAgICByZXR1cm4gTkFOO1xuICB9XG4gIGlmIChpc09iamVjdCh2YWx1ZSkpIHtcbiAgICB2YXIgb3RoZXIgPSB0eXBlb2YgdmFsdWUudmFsdWVPZiA9PSAnZnVuY3Rpb24nID8gdmFsdWUudmFsdWVPZigpIDogdmFsdWU7XG4gICAgdmFsdWUgPSBpc09iamVjdChvdGhlcikgPyAob3RoZXIgKyAnJykgOiBvdGhlcjtcbiAgfVxuICBpZiAodHlwZW9mIHZhbHVlICE9ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHZhbHVlID09PSAwID8gdmFsdWUgOiArdmFsdWU7XG4gIH1cbiAgdmFsdWUgPSBiYXNlVHJpbSh2YWx1ZSk7XG4gIHZhciBpc0JpbmFyeSA9IHJlSXNCaW5hcnkudGVzdCh2YWx1ZSk7XG4gIHJldHVybiAoaXNCaW5hcnkgfHwgcmVJc09jdGFsLnRlc3QodmFsdWUpKVxuICAgID8gZnJlZVBhcnNlSW50KHZhbHVlLnNsaWNlKDIpLCBpc0JpbmFyeSA/IDIgOiA4KVxuICAgIDogKHJlSXNCYWRIZXgudGVzdCh2YWx1ZSkgPyBOQU4gOiArdmFsdWUpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHRvTnVtYmVyO1xuIiwgInZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vaXNPYmplY3QnKSxcbiAgICBub3cgPSByZXF1aXJlKCcuL25vdycpLFxuICAgIHRvTnVtYmVyID0gcmVxdWlyZSgnLi90b051bWJlcicpO1xuXG4vKiogRXJyb3IgbWVzc2FnZSBjb25zdGFudHMuICovXG52YXIgRlVOQ19FUlJPUl9URVhUID0gJ0V4cGVjdGVkIGEgZnVuY3Rpb24nO1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyBmb3IgdGhvc2Ugd2l0aCB0aGUgc2FtZSBuYW1lIGFzIG90aGVyIGBsb2Rhc2hgIG1ldGhvZHMuICovXG52YXIgbmF0aXZlTWF4ID0gTWF0aC5tYXgsXG4gICAgbmF0aXZlTWluID0gTWF0aC5taW47XG5cbi8qKlxuICogQ3JlYXRlcyBhIGRlYm91bmNlZCBmdW5jdGlvbiB0aGF0IGRlbGF5cyBpbnZva2luZyBgZnVuY2AgdW50aWwgYWZ0ZXIgYHdhaXRgXG4gKiBtaWxsaXNlY29uZHMgaGF2ZSBlbGFwc2VkIHNpbmNlIHRoZSBsYXN0IHRpbWUgdGhlIGRlYm91bmNlZCBmdW5jdGlvbiB3YXNcbiAqIGludm9rZWQuIFRoZSBkZWJvdW5jZWQgZnVuY3Rpb24gY29tZXMgd2l0aCBhIGBjYW5jZWxgIG1ldGhvZCB0byBjYW5jZWxcbiAqIGRlbGF5ZWQgYGZ1bmNgIGludm9jYXRpb25zIGFuZCBhIGBmbHVzaGAgbWV0aG9kIHRvIGltbWVkaWF0ZWx5IGludm9rZSB0aGVtLlxuICogUHJvdmlkZSBgb3B0aW9uc2AgdG8gaW5kaWNhdGUgd2hldGhlciBgZnVuY2Agc2hvdWxkIGJlIGludm9rZWQgb24gdGhlXG4gKiBsZWFkaW5nIGFuZC9vciB0cmFpbGluZyBlZGdlIG9mIHRoZSBgd2FpdGAgdGltZW91dC4gVGhlIGBmdW5jYCBpcyBpbnZva2VkXG4gKiB3aXRoIHRoZSBsYXN0IGFyZ3VtZW50cyBwcm92aWRlZCB0byB0aGUgZGVib3VuY2VkIGZ1bmN0aW9uLiBTdWJzZXF1ZW50XG4gKiBjYWxscyB0byB0aGUgZGVib3VuY2VkIGZ1bmN0aW9uIHJldHVybiB0aGUgcmVzdWx0IG9mIHRoZSBsYXN0IGBmdW5jYFxuICogaW52b2NhdGlvbi5cbiAqXG4gKiAqKk5vdGU6KiogSWYgYGxlYWRpbmdgIGFuZCBgdHJhaWxpbmdgIG9wdGlvbnMgYXJlIGB0cnVlYCwgYGZ1bmNgIGlzXG4gKiBpbnZva2VkIG9uIHRoZSB0cmFpbGluZyBlZGdlIG9mIHRoZSB0aW1lb3V0IG9ubHkgaWYgdGhlIGRlYm91bmNlZCBmdW5jdGlvblxuICogaXMgaW52b2tlZCBtb3JlIHRoYW4gb25jZSBkdXJpbmcgdGhlIGB3YWl0YCB0aW1lb3V0LlxuICpcbiAqIElmIGB3YWl0YCBpcyBgMGAgYW5kIGBsZWFkaW5nYCBpcyBgZmFsc2VgLCBgZnVuY2AgaW52b2NhdGlvbiBpcyBkZWZlcnJlZFxuICogdW50aWwgdG8gdGhlIG5leHQgdGljaywgc2ltaWxhciB0byBgc2V0VGltZW91dGAgd2l0aCBhIHRpbWVvdXQgb2YgYDBgLlxuICpcbiAqIFNlZSBbRGF2aWQgQ29yYmFjaG8ncyBhcnRpY2xlXShodHRwczovL2Nzcy10cmlja3MuY29tL2RlYm91bmNpbmctdGhyb3R0bGluZy1leHBsYWluZWQtZXhhbXBsZXMvKVxuICogZm9yIGRldGFpbHMgb3ZlciB0aGUgZGlmZmVyZW5jZXMgYmV0d2VlbiBgXy5kZWJvdW5jZWAgYW5kIGBfLnRocm90dGxlYC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGRlYm91bmNlLlxuICogQHBhcmFtIHtudW1iZXJ9IFt3YWl0PTBdIFRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHRvIGRlbGF5LlxuICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zPXt9XSBUaGUgb3B0aW9ucyBvYmplY3QuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRpb25zLmxlYWRpbmc9ZmFsc2VdXG4gKiAgU3BlY2lmeSBpbnZva2luZyBvbiB0aGUgbGVhZGluZyBlZGdlIG9mIHRoZSB0aW1lb3V0LlxuICogQHBhcmFtIHtudW1iZXJ9IFtvcHRpb25zLm1heFdhaXRdXG4gKiAgVGhlIG1heGltdW0gdGltZSBgZnVuY2AgaXMgYWxsb3dlZCB0byBiZSBkZWxheWVkIGJlZm9yZSBpdCdzIGludm9rZWQuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRpb25zLnRyYWlsaW5nPXRydWVdXG4gKiAgU3BlY2lmeSBpbnZva2luZyBvbiB0aGUgdHJhaWxpbmcgZWRnZSBvZiB0aGUgdGltZW91dC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGRlYm91bmNlZCBmdW5jdGlvbi5cbiAqIEBleGFtcGxlXG4gKlxuICogLy8gQXZvaWQgY29zdGx5IGNhbGN1bGF0aW9ucyB3aGlsZSB0aGUgd2luZG93IHNpemUgaXMgaW4gZmx1eC5cbiAqIGpRdWVyeSh3aW5kb3cpLm9uKCdyZXNpemUnLCBfLmRlYm91bmNlKGNhbGN1bGF0ZUxheW91dCwgMTUwKSk7XG4gKlxuICogLy8gSW52b2tlIGBzZW5kTWFpbGAgd2hlbiBjbGlja2VkLCBkZWJvdW5jaW5nIHN1YnNlcXVlbnQgY2FsbHMuXG4gKiBqUXVlcnkoZWxlbWVudCkub24oJ2NsaWNrJywgXy5kZWJvdW5jZShzZW5kTWFpbCwgMzAwLCB7XG4gKiAgICdsZWFkaW5nJzogdHJ1ZSxcbiAqICAgJ3RyYWlsaW5nJzogZmFsc2VcbiAqIH0pKTtcbiAqXG4gKiAvLyBFbnN1cmUgYGJhdGNoTG9nYCBpcyBpbnZva2VkIG9uY2UgYWZ0ZXIgMSBzZWNvbmQgb2YgZGVib3VuY2VkIGNhbGxzLlxuICogdmFyIGRlYm91bmNlZCA9IF8uZGVib3VuY2UoYmF0Y2hMb2csIDI1MCwgeyAnbWF4V2FpdCc6IDEwMDAgfSk7XG4gKiB2YXIgc291cmNlID0gbmV3IEV2ZW50U291cmNlKCcvc3RyZWFtJyk7XG4gKiBqUXVlcnkoc291cmNlKS5vbignbWVzc2FnZScsIGRlYm91bmNlZCk7XG4gKlxuICogLy8gQ2FuY2VsIHRoZSB0cmFpbGluZyBkZWJvdW5jZWQgaW52b2NhdGlvbi5cbiAqIGpRdWVyeSh3aW5kb3cpLm9uKCdwb3BzdGF0ZScsIGRlYm91bmNlZC5jYW5jZWwpO1xuICovXG5mdW5jdGlvbiBkZWJvdW5jZShmdW5jLCB3YWl0LCBvcHRpb25zKSB7XG4gIHZhciBsYXN0QXJncyxcbiAgICAgIGxhc3RUaGlzLFxuICAgICAgbWF4V2FpdCxcbiAgICAgIHJlc3VsdCxcbiAgICAgIHRpbWVySWQsXG4gICAgICBsYXN0Q2FsbFRpbWUsXG4gICAgICBsYXN0SW52b2tlVGltZSA9IDAsXG4gICAgICBsZWFkaW5nID0gZmFsc2UsXG4gICAgICBtYXhpbmcgPSBmYWxzZSxcbiAgICAgIHRyYWlsaW5nID0gdHJ1ZTtcblxuICBpZiAodHlwZW9mIGZ1bmMgIT0gJ2Z1bmN0aW9uJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoRlVOQ19FUlJPUl9URVhUKTtcbiAgfVxuICB3YWl0ID0gdG9OdW1iZXIod2FpdCkgfHwgMDtcbiAgaWYgKGlzT2JqZWN0KG9wdGlvbnMpKSB7XG4gICAgbGVhZGluZyA9ICEhb3B0aW9ucy5sZWFkaW5nO1xuICAgIG1heGluZyA9ICdtYXhXYWl0JyBpbiBvcHRpb25zO1xuICAgIG1heFdhaXQgPSBtYXhpbmcgPyBuYXRpdmVNYXgodG9OdW1iZXIob3B0aW9ucy5tYXhXYWl0KSB8fCAwLCB3YWl0KSA6IG1heFdhaXQ7XG4gICAgdHJhaWxpbmcgPSAndHJhaWxpbmcnIGluIG9wdGlvbnMgPyAhIW9wdGlvbnMudHJhaWxpbmcgOiB0cmFpbGluZztcbiAgfVxuXG4gIGZ1bmN0aW9uIGludm9rZUZ1bmModGltZSkge1xuICAgIHZhciBhcmdzID0gbGFzdEFyZ3MsXG4gICAgICAgIHRoaXNBcmcgPSBsYXN0VGhpcztcblxuICAgIGxhc3RBcmdzID0gbGFzdFRoaXMgPSB1bmRlZmluZWQ7XG4gICAgbGFzdEludm9rZVRpbWUgPSB0aW1lO1xuICAgIHJlc3VsdCA9IGZ1bmMuYXBwbHkodGhpc0FyZywgYXJncyk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIGZ1bmN0aW9uIGxlYWRpbmdFZGdlKHRpbWUpIHtcbiAgICAvLyBSZXNldCBhbnkgYG1heFdhaXRgIHRpbWVyLlxuICAgIGxhc3RJbnZva2VUaW1lID0gdGltZTtcbiAgICAvLyBTdGFydCB0aGUgdGltZXIgZm9yIHRoZSB0cmFpbGluZyBlZGdlLlxuICAgIHRpbWVySWQgPSBzZXRUaW1lb3V0KHRpbWVyRXhwaXJlZCwgd2FpdCk7XG4gICAgLy8gSW52b2tlIHRoZSBsZWFkaW5nIGVkZ2UuXG4gICAgcmV0dXJuIGxlYWRpbmcgPyBpbnZva2VGdW5jKHRpbWUpIDogcmVzdWx0O1xuICB9XG5cbiAgZnVuY3Rpb24gcmVtYWluaW5nV2FpdCh0aW1lKSB7XG4gICAgdmFyIHRpbWVTaW5jZUxhc3RDYWxsID0gdGltZSAtIGxhc3RDYWxsVGltZSxcbiAgICAgICAgdGltZVNpbmNlTGFzdEludm9rZSA9IHRpbWUgLSBsYXN0SW52b2tlVGltZSxcbiAgICAgICAgdGltZVdhaXRpbmcgPSB3YWl0IC0gdGltZVNpbmNlTGFzdENhbGw7XG5cbiAgICByZXR1cm4gbWF4aW5nXG4gICAgICA/IG5hdGl2ZU1pbih0aW1lV2FpdGluZywgbWF4V2FpdCAtIHRpbWVTaW5jZUxhc3RJbnZva2UpXG4gICAgICA6IHRpbWVXYWl0aW5nO1xuICB9XG5cbiAgZnVuY3Rpb24gc2hvdWxkSW52b2tlKHRpbWUpIHtcbiAgICB2YXIgdGltZVNpbmNlTGFzdENhbGwgPSB0aW1lIC0gbGFzdENhbGxUaW1lLFxuICAgICAgICB0aW1lU2luY2VMYXN0SW52b2tlID0gdGltZSAtIGxhc3RJbnZva2VUaW1lO1xuXG4gICAgLy8gRWl0aGVyIHRoaXMgaXMgdGhlIGZpcnN0IGNhbGwsIGFjdGl2aXR5IGhhcyBzdG9wcGVkIGFuZCB3ZSdyZSBhdCB0aGVcbiAgICAvLyB0cmFpbGluZyBlZGdlLCB0aGUgc3lzdGVtIHRpbWUgaGFzIGdvbmUgYmFja3dhcmRzIGFuZCB3ZSdyZSB0cmVhdGluZ1xuICAgIC8vIGl0IGFzIHRoZSB0cmFpbGluZyBlZGdlLCBvciB3ZSd2ZSBoaXQgdGhlIGBtYXhXYWl0YCBsaW1pdC5cbiAgICByZXR1cm4gKGxhc3RDYWxsVGltZSA9PT0gdW5kZWZpbmVkIHx8ICh0aW1lU2luY2VMYXN0Q2FsbCA+PSB3YWl0KSB8fFxuICAgICAgKHRpbWVTaW5jZUxhc3RDYWxsIDwgMCkgfHwgKG1heGluZyAmJiB0aW1lU2luY2VMYXN0SW52b2tlID49IG1heFdhaXQpKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHRpbWVyRXhwaXJlZCgpIHtcbiAgICB2YXIgdGltZSA9IG5vdygpO1xuICAgIGlmIChzaG91bGRJbnZva2UodGltZSkpIHtcbiAgICAgIHJldHVybiB0cmFpbGluZ0VkZ2UodGltZSk7XG4gICAgfVxuICAgIC8vIFJlc3RhcnQgdGhlIHRpbWVyLlxuICAgIHRpbWVySWQgPSBzZXRUaW1lb3V0KHRpbWVyRXhwaXJlZCwgcmVtYWluaW5nV2FpdCh0aW1lKSk7XG4gIH1cblxuICBmdW5jdGlvbiB0cmFpbGluZ0VkZ2UodGltZSkge1xuICAgIHRpbWVySWQgPSB1bmRlZmluZWQ7XG5cbiAgICAvLyBPbmx5IGludm9rZSBpZiB3ZSBoYXZlIGBsYXN0QXJnc2Agd2hpY2ggbWVhbnMgYGZ1bmNgIGhhcyBiZWVuXG4gICAgLy8gZGVib3VuY2VkIGF0IGxlYXN0IG9uY2UuXG4gICAgaWYgKHRyYWlsaW5nICYmIGxhc3RBcmdzKSB7XG4gICAgICByZXR1cm4gaW52b2tlRnVuYyh0aW1lKTtcbiAgICB9XG4gICAgbGFzdEFyZ3MgPSBsYXN0VGhpcyA9IHVuZGVmaW5lZDtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgZnVuY3Rpb24gY2FuY2VsKCkge1xuICAgIGlmICh0aW1lcklkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aW1lcklkKTtcbiAgICB9XG4gICAgbGFzdEludm9rZVRpbWUgPSAwO1xuICAgIGxhc3RBcmdzID0gbGFzdENhbGxUaW1lID0gbGFzdFRoaXMgPSB0aW1lcklkID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgZnVuY3Rpb24gZmx1c2goKSB7XG4gICAgcmV0dXJuIHRpbWVySWQgPT09IHVuZGVmaW5lZCA/IHJlc3VsdCA6IHRyYWlsaW5nRWRnZShub3coKSk7XG4gIH1cblxuICBmdW5jdGlvbiBkZWJvdW5jZWQoKSB7XG4gICAgdmFyIHRpbWUgPSBub3coKSxcbiAgICAgICAgaXNJbnZva2luZyA9IHNob3VsZEludm9rZSh0aW1lKTtcblxuICAgIGxhc3RBcmdzID0gYXJndW1lbnRzO1xuICAgIGxhc3RUaGlzID0gdGhpcztcbiAgICBsYXN0Q2FsbFRpbWUgPSB0aW1lO1xuXG4gICAgaWYgKGlzSW52b2tpbmcpIHtcbiAgICAgIGlmICh0aW1lcklkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIGxlYWRpbmdFZGdlKGxhc3RDYWxsVGltZSk7XG4gICAgICB9XG4gICAgICBpZiAobWF4aW5nKSB7XG4gICAgICAgIC8vIEhhbmRsZSBpbnZvY2F0aW9ucyBpbiBhIHRpZ2h0IGxvb3AuXG4gICAgICAgIGNsZWFyVGltZW91dCh0aW1lcklkKTtcbiAgICAgICAgdGltZXJJZCA9IHNldFRpbWVvdXQodGltZXJFeHBpcmVkLCB3YWl0KTtcbiAgICAgICAgcmV0dXJuIGludm9rZUZ1bmMobGFzdENhbGxUaW1lKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHRpbWVySWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGltZXJJZCA9IHNldFRpbWVvdXQodGltZXJFeHBpcmVkLCB3YWl0KTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuICBkZWJvdW5jZWQuY2FuY2VsID0gY2FuY2VsO1xuICBkZWJvdW5jZWQuZmx1c2ggPSBmbHVzaDtcbiAgcmV0dXJuIGRlYm91bmNlZDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBkZWJvdW5jZTtcbiIsICJ2YXIgZGVib3VuY2UgPSByZXF1aXJlKCcuL2RlYm91bmNlJyksXG4gICAgaXNPYmplY3QgPSByZXF1aXJlKCcuL2lzT2JqZWN0Jyk7XG5cbi8qKiBFcnJvciBtZXNzYWdlIGNvbnN0YW50cy4gKi9cbnZhciBGVU5DX0VSUk9SX1RFWFQgPSAnRXhwZWN0ZWQgYSBmdW5jdGlvbic7XG5cbi8qKlxuICogQ3JlYXRlcyBhIHRocm90dGxlZCBmdW5jdGlvbiB0aGF0IG9ubHkgaW52b2tlcyBgZnVuY2AgYXQgbW9zdCBvbmNlIHBlclxuICogZXZlcnkgYHdhaXRgIG1pbGxpc2Vjb25kcy4gVGhlIHRocm90dGxlZCBmdW5jdGlvbiBjb21lcyB3aXRoIGEgYGNhbmNlbGBcbiAqIG1ldGhvZCB0byBjYW5jZWwgZGVsYXllZCBgZnVuY2AgaW52b2NhdGlvbnMgYW5kIGEgYGZsdXNoYCBtZXRob2QgdG9cbiAqIGltbWVkaWF0ZWx5IGludm9rZSB0aGVtLiBQcm92aWRlIGBvcHRpb25zYCB0byBpbmRpY2F0ZSB3aGV0aGVyIGBmdW5jYFxuICogc2hvdWxkIGJlIGludm9rZWQgb24gdGhlIGxlYWRpbmcgYW5kL29yIHRyYWlsaW5nIGVkZ2Ugb2YgdGhlIGB3YWl0YFxuICogdGltZW91dC4gVGhlIGBmdW5jYCBpcyBpbnZva2VkIHdpdGggdGhlIGxhc3QgYXJndW1lbnRzIHByb3ZpZGVkIHRvIHRoZVxuICogdGhyb3R0bGVkIGZ1bmN0aW9uLiBTdWJzZXF1ZW50IGNhbGxzIHRvIHRoZSB0aHJvdHRsZWQgZnVuY3Rpb24gcmV0dXJuIHRoZVxuICogcmVzdWx0IG9mIHRoZSBsYXN0IGBmdW5jYCBpbnZvY2F0aW9uLlxuICpcbiAqICoqTm90ZToqKiBJZiBgbGVhZGluZ2AgYW5kIGB0cmFpbGluZ2Agb3B0aW9ucyBhcmUgYHRydWVgLCBgZnVuY2AgaXNcbiAqIGludm9rZWQgb24gdGhlIHRyYWlsaW5nIGVkZ2Ugb2YgdGhlIHRpbWVvdXQgb25seSBpZiB0aGUgdGhyb3R0bGVkIGZ1bmN0aW9uXG4gKiBpcyBpbnZva2VkIG1vcmUgdGhhbiBvbmNlIGR1cmluZyB0aGUgYHdhaXRgIHRpbWVvdXQuXG4gKlxuICogSWYgYHdhaXRgIGlzIGAwYCBhbmQgYGxlYWRpbmdgIGlzIGBmYWxzZWAsIGBmdW5jYCBpbnZvY2F0aW9uIGlzIGRlZmVycmVkXG4gKiB1bnRpbCB0byB0aGUgbmV4dCB0aWNrLCBzaW1pbGFyIHRvIGBzZXRUaW1lb3V0YCB3aXRoIGEgdGltZW91dCBvZiBgMGAuXG4gKlxuICogU2VlIFtEYXZpZCBDb3JiYWNobydzIGFydGljbGVdKGh0dHBzOi8vY3NzLXRyaWNrcy5jb20vZGVib3VuY2luZy10aHJvdHRsaW5nLWV4cGxhaW5lZC1leGFtcGxlcy8pXG4gKiBmb3IgZGV0YWlscyBvdmVyIHRoZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIGBfLnRocm90dGxlYCBhbmQgYF8uZGVib3VuY2VgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gdGhyb3R0bGUuXG4gKiBAcGFyYW0ge251bWJlcn0gW3dhaXQ9MF0gVGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgdG8gdGhyb3R0bGUgaW52b2NhdGlvbnMgdG8uXG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnM9e31dIFRoZSBvcHRpb25zIG9iamVjdC5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMubGVhZGluZz10cnVlXVxuICogIFNwZWNpZnkgaW52b2tpbmcgb24gdGhlIGxlYWRpbmcgZWRnZSBvZiB0aGUgdGltZW91dC5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMudHJhaWxpbmc9dHJ1ZV1cbiAqICBTcGVjaWZ5IGludm9raW5nIG9uIHRoZSB0cmFpbGluZyBlZGdlIG9mIHRoZSB0aW1lb3V0LlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgdGhyb3R0bGVkIGZ1bmN0aW9uLlxuICogQGV4YW1wbGVcbiAqXG4gKiAvLyBBdm9pZCBleGNlc3NpdmVseSB1cGRhdGluZyB0aGUgcG9zaXRpb24gd2hpbGUgc2Nyb2xsaW5nLlxuICogalF1ZXJ5KHdpbmRvdykub24oJ3Njcm9sbCcsIF8udGhyb3R0bGUodXBkYXRlUG9zaXRpb24sIDEwMCkpO1xuICpcbiAqIC8vIEludm9rZSBgcmVuZXdUb2tlbmAgd2hlbiB0aGUgY2xpY2sgZXZlbnQgaXMgZmlyZWQsIGJ1dCBub3QgbW9yZSB0aGFuIG9uY2UgZXZlcnkgNSBtaW51dGVzLlxuICogdmFyIHRocm90dGxlZCA9IF8udGhyb3R0bGUocmVuZXdUb2tlbiwgMzAwMDAwLCB7ICd0cmFpbGluZyc6IGZhbHNlIH0pO1xuICogalF1ZXJ5KGVsZW1lbnQpLm9uKCdjbGljaycsIHRocm90dGxlZCk7XG4gKlxuICogLy8gQ2FuY2VsIHRoZSB0cmFpbGluZyB0aHJvdHRsZWQgaW52b2NhdGlvbi5cbiAqIGpRdWVyeSh3aW5kb3cpLm9uKCdwb3BzdGF0ZScsIHRocm90dGxlZC5jYW5jZWwpO1xuICovXG5mdW5jdGlvbiB0aHJvdHRsZShmdW5jLCB3YWl0LCBvcHRpb25zKSB7XG4gIHZhciBsZWFkaW5nID0gdHJ1ZSxcbiAgICAgIHRyYWlsaW5nID0gdHJ1ZTtcblxuICBpZiAodHlwZW9mIGZ1bmMgIT0gJ2Z1bmN0aW9uJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoRlVOQ19FUlJPUl9URVhUKTtcbiAgfVxuICBpZiAoaXNPYmplY3Qob3B0aW9ucykpIHtcbiAgICBsZWFkaW5nID0gJ2xlYWRpbmcnIGluIG9wdGlvbnMgPyAhIW9wdGlvbnMubGVhZGluZyA6IGxlYWRpbmc7XG4gICAgdHJhaWxpbmcgPSAndHJhaWxpbmcnIGluIG9wdGlvbnMgPyAhIW9wdGlvbnMudHJhaWxpbmcgOiB0cmFpbGluZztcbiAgfVxuICByZXR1cm4gZGVib3VuY2UoZnVuYywgd2FpdCwge1xuICAgICdsZWFkaW5nJzogbGVhZGluZyxcbiAgICAnbWF4V2FpdCc6IHdhaXQsXG4gICAgJ3RyYWlsaW5nJzogdHJhaWxpbmdcbiAgfSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdGhyb3R0bGU7XG4iLCAiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLlJlcG9ydCA9IGV4cG9ydHMuaXNSZXBvcnRFcnJvciA9IGV4cG9ydHMuUmVwb3J0RXJyb3IgPSB2b2lkIDA7XG5jb25zdCB0c2xpYl8xID0gcmVxdWlyZShcInRzbGliXCIpO1xuY29uc3QgdGhyb3R0bGVfMSA9IHRzbGliXzEuX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJsb2Rhc2gvdGhyb3R0bGVcIikpO1xuY29uc3Qgc3RyZWFtXzEgPSByZXF1aXJlKFwic3RyZWFtXCIpO1xuY29uc3Qgc3RyaW5nX2RlY29kZXJfMSA9IHJlcXVpcmUoXCJzdHJpbmdfZGVjb2RlclwiKTtcbmNvbnN0IE1lc3NhZ2VOYW1lXzEgPSByZXF1aXJlKFwiLi9NZXNzYWdlTmFtZVwiKTtcbmNvbnN0IFRJVExFX1BST0dSRVNTX0ZQUyA9IDE1O1xuY2xhc3MgUmVwb3J0RXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gICAgY29uc3RydWN0b3IoY29kZSwgbWVzc2FnZSwgcmVwb3J0RXh0cmEpIHtcbiAgICAgICAgc3VwZXIobWVzc2FnZSk7XG4gICAgICAgIHRoaXMucmVwb3J0RXh0cmEgPSByZXBvcnRFeHRyYTtcbiAgICAgICAgdGhpcy5yZXBvcnRDb2RlID0gY29kZTtcbiAgICB9XG59XG5leHBvcnRzLlJlcG9ydEVycm9yID0gUmVwb3J0RXJyb3I7XG5mdW5jdGlvbiBpc1JlcG9ydEVycm9yKGVycm9yKSB7XG4gICAgcmV0dXJuIHR5cGVvZiBlcnJvci5yZXBvcnRDb2RlICE9PSBgdW5kZWZpbmVkYDtcbn1cbmV4cG9ydHMuaXNSZXBvcnRFcnJvciA9IGlzUmVwb3J0RXJyb3I7XG5jbGFzcyBSZXBvcnQge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLnJlcG9ydGVkSW5mb3MgPSBuZXcgU2V0KCk7XG4gICAgICAgIHRoaXMucmVwb3J0ZWRXYXJuaW5ncyA9IG5ldyBTZXQoKTtcbiAgICAgICAgdGhpcy5yZXBvcnRlZEVycm9ycyA9IG5ldyBTZXQoKTtcbiAgICB9XG4gICAgc3RhdGljIHByb2dyZXNzVmlhQ291bnRlcihtYXgpIHtcbiAgICAgICAgbGV0IGN1cnJlbnQgPSAwO1xuICAgICAgICBsZXQgdW5sb2NrO1xuICAgICAgICBsZXQgbG9jayA9IG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgICAgICAgdW5sb2NrID0gcmVzb2x2ZTtcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IHNldCA9IChuKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB0aGlzVW5sb2NrID0gdW5sb2NrO1xuICAgICAgICAgICAgbG9jayA9IG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgICAgICAgICAgIHVubG9jayA9IHJlc29sdmU7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGN1cnJlbnQgPSBuO1xuICAgICAgICAgICAgdGhpc1VubG9jaygpO1xuICAgICAgICB9O1xuICAgICAgICBjb25zdCB0aWNrID0gKG4gPSAwKSA9PiB7XG4gICAgICAgICAgICBzZXQoY3VycmVudCArIDEpO1xuICAgICAgICB9O1xuICAgICAgICBjb25zdCBnZW4gPSAoYXN5bmMgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgIHdoaWxlIChjdXJyZW50IDwgbWF4KSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgbG9jaztcbiAgICAgICAgICAgICAgICB5aWVsZCB7XG4gICAgICAgICAgICAgICAgICAgIHByb2dyZXNzOiBjdXJyZW50IC8gbWF4LFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pKCk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBbU3ltYm9sLmFzeW5jSXRlcmF0b3JdKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBnZW47XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaGFzUHJvZ3Jlc3M6IHRydWUsXG4gICAgICAgICAgICBoYXNUaXRsZTogZmFsc2UsXG4gICAgICAgICAgICBzZXQsXG4gICAgICAgICAgICB0aWNrLFxuICAgICAgICB9O1xuICAgIH1cbiAgICBzdGF0aWMgcHJvZ3Jlc3NWaWFUaXRsZSgpIHtcbiAgICAgICAgbGV0IGN1cnJlbnRUaXRsZTtcbiAgICAgICAgbGV0IHVubG9jaztcbiAgICAgICAgbGV0IGxvY2sgPSBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcbiAgICAgICAgICAgIHVubG9jayA9IHJlc29sdmU7XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBzZXRUaXRsZSA9ICgwLCB0aHJvdHRsZV8xLmRlZmF1bHQpKCh0aXRsZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdGhpc1VubG9jayA9IHVubG9jaztcbiAgICAgICAgICAgIGxvY2sgPSBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcbiAgICAgICAgICAgICAgICB1bmxvY2sgPSByZXNvbHZlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjdXJyZW50VGl0bGUgPSB0aXRsZTtcbiAgICAgICAgICAgIHRoaXNVbmxvY2soKTtcbiAgICAgICAgfSwgMTAwMCAvIFRJVExFX1BST0dSRVNTX0ZQUyk7XG4gICAgICAgIGNvbnN0IGdlbiA9IChhc3luYyBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgICAgICAgICBhd2FpdCBsb2NrO1xuICAgICAgICAgICAgICAgIHlpZWxkIHtcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGN1cnJlbnRUaXRsZSxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9KSgpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZ2VuO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGhhc1Byb2dyZXNzOiBmYWxzZSxcbiAgICAgICAgICAgIGhhc1RpdGxlOiB0cnVlLFxuICAgICAgICAgICAgc2V0VGl0bGUsXG4gICAgICAgIH07XG4gICAgfVxuICAgIGFzeW5jIHN0YXJ0UHJvZ3Jlc3NQcm9taXNlKHByb2dyZXNzSXQsIGNiKSB7XG4gICAgICAgIGNvbnN0IHJlcG9ydGVkUHJvZ3Jlc3MgPSB0aGlzLnJlcG9ydFByb2dyZXNzKHByb2dyZXNzSXQpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmV0dXJuIGF3YWl0IGNiKHByb2dyZXNzSXQpO1xuICAgICAgICB9XG4gICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgcmVwb3J0ZWRQcm9ncmVzcy5zdG9wKCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgc3RhcnRQcm9ncmVzc1N5bmMocHJvZ3Jlc3NJdCwgY2IpIHtcbiAgICAgICAgY29uc3QgcmVwb3J0ZWRQcm9ncmVzcyA9IHRoaXMucmVwb3J0UHJvZ3Jlc3MocHJvZ3Jlc3NJdCk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXR1cm4gY2IocHJvZ3Jlc3NJdCk7XG4gICAgICAgIH1cbiAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICByZXBvcnRlZFByb2dyZXNzLnN0b3AoKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXBvcnRJbmZvT25jZShuYW1lLCB0ZXh0LCBvcHRzKSB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgY29uc3Qga2V5ID0gb3B0cyAmJiBvcHRzLmtleSA/IG9wdHMua2V5IDogdGV4dDtcbiAgICAgICAgaWYgKCF0aGlzLnJlcG9ydGVkSW5mb3MuaGFzKGtleSkpIHtcbiAgICAgICAgICAgIHRoaXMucmVwb3J0ZWRJbmZvcy5hZGQoa2V5KTtcbiAgICAgICAgICAgIHRoaXMucmVwb3J0SW5mbyhuYW1lLCB0ZXh0KTtcbiAgICAgICAgICAgIChfYSA9IG9wdHMgPT09IG51bGwgfHwgb3B0cyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0cy5yZXBvcnRFeHRyYSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmNhbGwob3B0cywgdGhpcyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmVwb3J0V2FybmluZ09uY2UobmFtZSwgdGV4dCwgb3B0cykge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGNvbnN0IGtleSA9IG9wdHMgJiYgb3B0cy5rZXkgPyBvcHRzLmtleSA6IHRleHQ7XG4gICAgICAgIGlmICghdGhpcy5yZXBvcnRlZFdhcm5pbmdzLmhhcyhrZXkpKSB7XG4gICAgICAgICAgICB0aGlzLnJlcG9ydGVkV2FybmluZ3MuYWRkKGtleSk7XG4gICAgICAgICAgICB0aGlzLnJlcG9ydFdhcm5pbmcobmFtZSwgdGV4dCk7XG4gICAgICAgICAgICAoX2EgPSBvcHRzID09PSBudWxsIHx8IG9wdHMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdHMucmVwb3J0RXh0cmEpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jYWxsKG9wdHMsIHRoaXMpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJlcG9ydEVycm9yT25jZShuYW1lLCB0ZXh0LCBvcHRzKSB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgY29uc3Qga2V5ID0gb3B0cyAmJiBvcHRzLmtleSA/IG9wdHMua2V5IDogdGV4dDtcbiAgICAgICAgaWYgKCF0aGlzLnJlcG9ydGVkRXJyb3JzLmhhcyhrZXkpKSB7XG4gICAgICAgICAgICB0aGlzLnJlcG9ydGVkRXJyb3JzLmFkZChrZXkpO1xuICAgICAgICAgICAgdGhpcy5yZXBvcnRFcnJvcihuYW1lLCB0ZXh0KTtcbiAgICAgICAgICAgIChfYSA9IG9wdHMgPT09IG51bGwgfHwgb3B0cyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0cy5yZXBvcnRFeHRyYSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmNhbGwob3B0cywgdGhpcyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmVwb3J0RXhjZXB0aW9uT25jZShlcnJvcikge1xuICAgICAgICBpZiAoaXNSZXBvcnRFcnJvcihlcnJvcikpIHtcbiAgICAgICAgICAgIHRoaXMucmVwb3J0RXJyb3JPbmNlKGVycm9yLnJlcG9ydENvZGUsIGVycm9yLm1lc3NhZ2UsIHsga2V5OiBlcnJvciwgcmVwb3J0RXh0cmE6IGVycm9yLnJlcG9ydEV4dHJhIH0pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5yZXBvcnRFcnJvck9uY2UoTWVzc2FnZU5hbWVfMS5NZXNzYWdlTmFtZS5FWENFUFRJT04sIGVycm9yLnN0YWNrIHx8IGVycm9yLm1lc3NhZ2UsIHsga2V5OiBlcnJvciB9KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBjcmVhdGVTdHJlYW1SZXBvcnRlcihwcmVmaXggPSBudWxsKSB7XG4gICAgICAgIGNvbnN0IHN0cmVhbSA9IG5ldyBzdHJlYW1fMS5QYXNzVGhyb3VnaCgpO1xuICAgICAgICBjb25zdCBkZWNvZGVyID0gbmV3IHN0cmluZ19kZWNvZGVyXzEuU3RyaW5nRGVjb2RlcigpO1xuICAgICAgICBsZXQgYnVmZmVyID0gYGA7XG4gICAgICAgIHN0cmVhbS5vbihgZGF0YWAsIGNodW5rID0+IHtcbiAgICAgICAgICAgIGxldCBjaHVua1N0ciA9IGRlY29kZXIud3JpdGUoY2h1bmspO1xuICAgICAgICAgICAgbGV0IGxpbmVJbmRleDtcbiAgICAgICAgICAgIGRvIHtcbiAgICAgICAgICAgICAgICBsaW5lSW5kZXggPSBjaHVua1N0ci5pbmRleE9mKGBcXG5gKTtcbiAgICAgICAgICAgICAgICBpZiAobGluZUluZGV4ICE9PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBsaW5lID0gYnVmZmVyICsgY2h1bmtTdHIuc3Vic3RyaW5nKDAsIGxpbmVJbmRleCk7XG4gICAgICAgICAgICAgICAgICAgIGNodW5rU3RyID0gY2h1bmtTdHIuc3Vic3RyaW5nKGxpbmVJbmRleCArIDEpO1xuICAgICAgICAgICAgICAgICAgICBidWZmZXIgPSBgYDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHByZWZpeCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXBvcnRJbmZvKG51bGwsIGAke3ByZWZpeH0gJHtsaW5lfWApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXBvcnRJbmZvKG51bGwsIGxpbmUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSB3aGlsZSAobGluZUluZGV4ICE9PSAtMSk7XG4gICAgICAgICAgICBidWZmZXIgKz0gY2h1bmtTdHI7XG4gICAgICAgIH0pO1xuICAgICAgICBzdHJlYW0ub24oYGVuZGAsICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGxhc3QgPSBkZWNvZGVyLmVuZCgpO1xuICAgICAgICAgICAgaWYgKGxhc3QgIT09IGBgKSB7XG4gICAgICAgICAgICAgICAgaWYgKHByZWZpeCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlcG9ydEluZm8obnVsbCwgYCR7cHJlZml4fSAke2xhc3R9YCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlcG9ydEluZm8obnVsbCwgbGFzdCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHN0cmVhbTtcbiAgICB9XG59XG5leHBvcnRzLlJlcG9ydCA9IFJlcG9ydDtcbiIsICJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuTXVsdGlGZXRjaGVyID0gdm9pZCAwO1xuY29uc3QgdHNsaWJfMSA9IHJlcXVpcmUoXCJ0c2xpYlwiKTtcbmNvbnN0IE1lc3NhZ2VOYW1lXzEgPSByZXF1aXJlKFwiLi9NZXNzYWdlTmFtZVwiKTtcbmNvbnN0IFJlcG9ydF8xID0gcmVxdWlyZShcIi4vUmVwb3J0XCIpO1xuY29uc3Qgc3RydWN0VXRpbHMgPSB0c2xpYl8xLl9faW1wb3J0U3RhcihyZXF1aXJlKFwiLi9zdHJ1Y3RVdGlsc1wiKSk7XG5jbGFzcyBNdWx0aUZldGNoZXIge1xuICAgIGNvbnN0cnVjdG9yKGZldGNoZXJzKSB7XG4gICAgICAgIHRoaXMuZmV0Y2hlcnMgPSBmZXRjaGVycztcbiAgICB9XG4gICAgc3VwcG9ydHMobG9jYXRvciwgb3B0cykge1xuICAgICAgICBpZiAoIXRoaXMudHJ5RmV0Y2hlcihsb2NhdG9yLCBvcHRzKSlcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGdldExvY2FsUGF0aChsb2NhdG9yLCBvcHRzKSB7XG4gICAgICAgIGNvbnN0IGZldGNoZXIgPSB0aGlzLmdldEZldGNoZXIobG9jYXRvciwgb3B0cyk7XG4gICAgICAgIHJldHVybiBmZXRjaGVyLmdldExvY2FsUGF0aChsb2NhdG9yLCBvcHRzKTtcbiAgICB9XG4gICAgYXN5bmMgZmV0Y2gobG9jYXRvciwgb3B0cykge1xuICAgICAgICBjb25zdCBmZXRjaGVyID0gdGhpcy5nZXRGZXRjaGVyKGxvY2F0b3IsIG9wdHMpO1xuICAgICAgICByZXR1cm4gYXdhaXQgZmV0Y2hlci5mZXRjaChsb2NhdG9yLCBvcHRzKTtcbiAgICB9XG4gICAgdHJ5RmV0Y2hlcihsb2NhdG9yLCBvcHRzKSB7XG4gICAgICAgIGNvbnN0IGZldGNoZXIgPSB0aGlzLmZldGNoZXJzLmZpbmQoZmV0Y2hlciA9PiBmZXRjaGVyLnN1cHBvcnRzKGxvY2F0b3IsIG9wdHMpKTtcbiAgICAgICAgaWYgKCFmZXRjaGVyKVxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIHJldHVybiBmZXRjaGVyO1xuICAgIH1cbiAgICBnZXRGZXRjaGVyKGxvY2F0b3IsIG9wdHMpIHtcbiAgICAgICAgY29uc3QgZmV0Y2hlciA9IHRoaXMuZmV0Y2hlcnMuZmluZChmZXRjaGVyID0+IGZldGNoZXIuc3VwcG9ydHMobG9jYXRvciwgb3B0cykpO1xuICAgICAgICBpZiAoIWZldGNoZXIpXG4gICAgICAgICAgICB0aHJvdyBuZXcgUmVwb3J0XzEuUmVwb3J0RXJyb3IoTWVzc2FnZU5hbWVfMS5NZXNzYWdlTmFtZS5GRVRDSEVSX05PVF9GT1VORCwgYCR7c3RydWN0VXRpbHMucHJldHR5TG9jYXRvcihvcHRzLnByb2plY3QuY29uZmlndXJhdGlvbiwgbG9jYXRvcil9IGlzbid0IHN1cHBvcnRlZCBieSBhbnkgYXZhaWxhYmxlIGZldGNoZXJgKTtcbiAgICAgICAgcmV0dXJuIGZldGNoZXI7XG4gICAgfVxufVxuZXhwb3J0cy5NdWx0aUZldGNoZXIgPSBNdWx0aUZldGNoZXI7XG4iLCAiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLk11bHRpUmVzb2x2ZXIgPSB2b2lkIDA7XG5jb25zdCB0c2xpYl8xID0gcmVxdWlyZShcInRzbGliXCIpO1xuY29uc3Qgc3RydWN0VXRpbHMgPSB0c2xpYl8xLl9faW1wb3J0U3RhcihyZXF1aXJlKFwiLi9zdHJ1Y3RVdGlsc1wiKSk7XG5jbGFzcyBNdWx0aVJlc29sdmVyIHtcbiAgICBjb25zdHJ1Y3RvcihyZXNvbHZlcnMpIHtcbiAgICAgICAgdGhpcy5yZXNvbHZlcnMgPSByZXNvbHZlcnMuZmlsdGVyKHJlc29sdmVyID0+IHJlc29sdmVyKTtcbiAgICB9XG4gICAgc3VwcG9ydHNEZXNjcmlwdG9yKGRlc2NyaXB0b3IsIG9wdHMpIHtcbiAgICAgICAgY29uc3QgcmVzb2x2ZXIgPSB0aGlzLnRyeVJlc29sdmVyQnlEZXNjcmlwdG9yKGRlc2NyaXB0b3IsIG9wdHMpO1xuICAgICAgICByZXR1cm4gISFyZXNvbHZlcjtcbiAgICB9XG4gICAgc3VwcG9ydHNMb2NhdG9yKGxvY2F0b3IsIG9wdHMpIHtcbiAgICAgICAgY29uc3QgcmVzb2x2ZXIgPSB0aGlzLnRyeVJlc29sdmVyQnlMb2NhdG9yKGxvY2F0b3IsIG9wdHMpO1xuICAgICAgICByZXR1cm4gISFyZXNvbHZlcjtcbiAgICB9XG4gICAgc2hvdWxkUGVyc2lzdFJlc29sdXRpb24obG9jYXRvciwgb3B0cykge1xuICAgICAgICBjb25zdCByZXNvbHZlciA9IHRoaXMuZ2V0UmVzb2x2ZXJCeUxvY2F0b3IobG9jYXRvciwgb3B0cyk7XG4gICAgICAgIHJldHVybiByZXNvbHZlci5zaG91bGRQZXJzaXN0UmVzb2x1dGlvbihsb2NhdG9yLCBvcHRzKTtcbiAgICB9XG4gICAgYmluZERlc2NyaXB0b3IoZGVzY3JpcHRvciwgZnJvbUxvY2F0b3IsIG9wdHMpIHtcbiAgICAgICAgY29uc3QgcmVzb2x2ZXIgPSB0aGlzLmdldFJlc29sdmVyQnlEZXNjcmlwdG9yKGRlc2NyaXB0b3IsIG9wdHMpO1xuICAgICAgICByZXR1cm4gcmVzb2x2ZXIuYmluZERlc2NyaXB0b3IoZGVzY3JpcHRvciwgZnJvbUxvY2F0b3IsIG9wdHMpO1xuICAgIH1cbiAgICBnZXRSZXNvbHV0aW9uRGVwZW5kZW5jaWVzKGRlc2NyaXB0b3IsIG9wdHMpIHtcbiAgICAgICAgY29uc3QgcmVzb2x2ZXIgPSB0aGlzLmdldFJlc29sdmVyQnlEZXNjcmlwdG9yKGRlc2NyaXB0b3IsIG9wdHMpO1xuICAgICAgICByZXR1cm4gcmVzb2x2ZXIuZ2V0UmVzb2x1dGlvbkRlcGVuZGVuY2llcyhkZXNjcmlwdG9yLCBvcHRzKTtcbiAgICB9XG4gICAgYXN5bmMgZ2V0Q2FuZGlkYXRlcyhkZXNjcmlwdG9yLCBkZXBlbmRlbmNpZXMsIG9wdHMpIHtcbiAgICAgICAgY29uc3QgcmVzb2x2ZXIgPSB0aGlzLmdldFJlc29sdmVyQnlEZXNjcmlwdG9yKGRlc2NyaXB0b3IsIG9wdHMpO1xuICAgICAgICByZXR1cm4gYXdhaXQgcmVzb2x2ZXIuZ2V0Q2FuZGlkYXRlcyhkZXNjcmlwdG9yLCBkZXBlbmRlbmNpZXMsIG9wdHMpO1xuICAgIH1cbiAgICBhc3luYyBnZXRTYXRpc2Z5aW5nKGRlc2NyaXB0b3IsIGRlcGVuZGVuY2llcywgbG9jYXRvcnMsIG9wdHMpIHtcbiAgICAgICAgY29uc3QgcmVzb2x2ZXIgPSB0aGlzLmdldFJlc29sdmVyQnlEZXNjcmlwdG9yKGRlc2NyaXB0b3IsIG9wdHMpO1xuICAgICAgICByZXR1cm4gcmVzb2x2ZXIuZ2V0U2F0aXNmeWluZyhkZXNjcmlwdG9yLCBkZXBlbmRlbmNpZXMsIGxvY2F0b3JzLCBvcHRzKTtcbiAgICB9XG4gICAgYXN5bmMgcmVzb2x2ZShsb2NhdG9yLCBvcHRzKSB7XG4gICAgICAgIGNvbnN0IHJlc29sdmVyID0gdGhpcy5nZXRSZXNvbHZlckJ5TG9jYXRvcihsb2NhdG9yLCBvcHRzKTtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHJlc29sdmVyLnJlc29sdmUobG9jYXRvciwgb3B0cyk7XG4gICAgfVxuICAgIHRyeVJlc29sdmVyQnlEZXNjcmlwdG9yKGRlc2NyaXB0b3IsIG9wdHMpIHtcbiAgICAgICAgY29uc3QgcmVzb2x2ZXIgPSB0aGlzLnJlc29sdmVycy5maW5kKHJlc29sdmVyID0+IHJlc29sdmVyLnN1cHBvcnRzRGVzY3JpcHRvcihkZXNjcmlwdG9yLCBvcHRzKSk7XG4gICAgICAgIGlmICghcmVzb2x2ZXIpXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgcmV0dXJuIHJlc29sdmVyO1xuICAgIH1cbiAgICBnZXRSZXNvbHZlckJ5RGVzY3JpcHRvcihkZXNjcmlwdG9yLCBvcHRzKSB7XG4gICAgICAgIGNvbnN0IHJlc29sdmVyID0gdGhpcy5yZXNvbHZlcnMuZmluZChyZXNvbHZlciA9PiByZXNvbHZlci5zdXBwb3J0c0Rlc2NyaXB0b3IoZGVzY3JpcHRvciwgb3B0cykpO1xuICAgICAgICBpZiAoIXJlc29sdmVyKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAke3N0cnVjdFV0aWxzLnByZXR0eURlc2NyaXB0b3Iob3B0cy5wcm9qZWN0LmNvbmZpZ3VyYXRpb24sIGRlc2NyaXB0b3IpfSBpc24ndCBzdXBwb3J0ZWQgYnkgYW55IGF2YWlsYWJsZSByZXNvbHZlcmApO1xuICAgICAgICByZXR1cm4gcmVzb2x2ZXI7XG4gICAgfVxuICAgIHRyeVJlc29sdmVyQnlMb2NhdG9yKGxvY2F0b3IsIG9wdHMpIHtcbiAgICAgICAgY29uc3QgcmVzb2x2ZXIgPSB0aGlzLnJlc29sdmVycy5maW5kKHJlc29sdmVyID0+IHJlc29sdmVyLnN1cHBvcnRzTG9jYXRvcihsb2NhdG9yLCBvcHRzKSk7XG4gICAgICAgIGlmICghcmVzb2x2ZXIpXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgcmV0dXJuIHJlc29sdmVyO1xuICAgIH1cbiAgICBnZXRSZXNvbHZlckJ5TG9jYXRvcihsb2NhdG9yLCBvcHRzKSB7XG4gICAgICAgIGNvbnN0IHJlc29sdmVyID0gdGhpcy5yZXNvbHZlcnMuZmluZChyZXNvbHZlciA9PiByZXNvbHZlci5zdXBwb3J0c0xvY2F0b3IobG9jYXRvciwgb3B0cykpO1xuICAgICAgICBpZiAoIXJlc29sdmVyKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAke3N0cnVjdFV0aWxzLnByZXR0eUxvY2F0b3Iob3B0cy5wcm9qZWN0LmNvbmZpZ3VyYXRpb24sIGxvY2F0b3IpfSBpc24ndCBzdXBwb3J0ZWQgYnkgYW55IGF2YWlsYWJsZSByZXNvbHZlcmApO1xuICAgICAgICByZXR1cm4gcmVzb2x2ZXI7XG4gICAgfVxufVxuZXhwb3J0cy5NdWx0aVJlc29sdmVyID0gTXVsdGlSZXNvbHZlcjtcbiIsICJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuVmlydHVhbEZldGNoZXIgPSB2b2lkIDA7XG5jb25zdCB0c2xpYl8xID0gcmVxdWlyZShcInRzbGliXCIpO1xuY29uc3QgZnNsaWJfMSA9IHJlcXVpcmUoXCJAeWFybnBrZy9mc2xpYlwiKTtcbmNvbnN0IHN0cnVjdFV0aWxzID0gdHNsaWJfMS5fX2ltcG9ydFN0YXIocmVxdWlyZShcIi4vc3RydWN0VXRpbHNcIikpO1xuY2xhc3MgVmlydHVhbEZldGNoZXIge1xuICAgIHN1cHBvcnRzKGxvY2F0b3IpIHtcbiAgICAgICAgaWYgKCFsb2NhdG9yLnJlZmVyZW5jZS5zdGFydHNXaXRoKGB2aXJ0dWFsOmApKVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgZ2V0TG9jYWxQYXRoKGxvY2F0b3IsIG9wdHMpIHtcbiAgICAgICAgY29uc3Qgc3BsaXRQb2ludCA9IGxvY2F0b3IucmVmZXJlbmNlLmluZGV4T2YoYCNgKTtcbiAgICAgICAgaWYgKHNwbGl0UG9pbnQgPT09IC0xKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHZpcnR1YWwgcGFja2FnZSByZWZlcmVuY2VgKTtcbiAgICAgICAgY29uc3QgbmV4dFJlZmVyZW5jZSA9IGxvY2F0b3IucmVmZXJlbmNlLnNsaWNlKHNwbGl0UG9pbnQgKyAxKTtcbiAgICAgICAgY29uc3QgbmV4dExvY2F0b3IgPSBzdHJ1Y3RVdGlscy5tYWtlTG9jYXRvcihsb2NhdG9yLCBuZXh0UmVmZXJlbmNlKTtcbiAgICAgICAgcmV0dXJuIG9wdHMuZmV0Y2hlci5nZXRMb2NhbFBhdGgobmV4dExvY2F0b3IsIG9wdHMpO1xuICAgIH1cbiAgICBhc3luYyBmZXRjaChsb2NhdG9yLCBvcHRzKSB7XG4gICAgICAgIGNvbnN0IHNwbGl0UG9pbnQgPSBsb2NhdG9yLnJlZmVyZW5jZS5pbmRleE9mKGAjYCk7XG4gICAgICAgIGlmIChzcGxpdFBvaW50ID09PSAtMSlcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCB2aXJ0dWFsIHBhY2thZ2UgcmVmZXJlbmNlYCk7XG4gICAgICAgIGNvbnN0IG5leHRSZWZlcmVuY2UgPSBsb2NhdG9yLnJlZmVyZW5jZS5zbGljZShzcGxpdFBvaW50ICsgMSk7XG4gICAgICAgIGNvbnN0IG5leHRMb2NhdG9yID0gc3RydWN0VXRpbHMubWFrZUxvY2F0b3IobG9jYXRvciwgbmV4dFJlZmVyZW5jZSk7XG4gICAgICAgIGNvbnN0IHBhcmVudEZldGNoID0gYXdhaXQgb3B0cy5mZXRjaGVyLmZldGNoKG5leHRMb2NhdG9yLCBvcHRzKTtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuZW5zdXJlVmlydHVhbExpbmsobG9jYXRvciwgcGFyZW50RmV0Y2gsIG9wdHMpO1xuICAgIH1cbiAgICBnZXRMb2NhdG9yRmlsZW5hbWUobG9jYXRvcikge1xuICAgICAgICByZXR1cm4gc3RydWN0VXRpbHMuc2x1Z2lmeUxvY2F0b3IobG9jYXRvcik7XG4gICAgfVxuICAgIGFzeW5jIGVuc3VyZVZpcnR1YWxMaW5rKGxvY2F0b3IsIHNvdXJjZUZldGNoLCBvcHRzKSB7XG4gICAgICAgIGNvbnN0IHRvID0gc291cmNlRmV0Y2gucGFja2FnZUZzLmdldFJlYWxQYXRoKCk7XG4gICAgICAgIGNvbnN0IHZpcnR1YWxGb2xkZXIgPSBvcHRzLnByb2plY3QuY29uZmlndXJhdGlvbi5nZXQoYHZpcnR1YWxGb2xkZXJgKTtcbiAgICAgICAgY29uc3QgdmlydHVhbE5hbWUgPSB0aGlzLmdldExvY2F0b3JGaWxlbmFtZShsb2NhdG9yKTtcbiAgICAgICAgY29uc3QgdmlydHVhbFBhdGggPSBmc2xpYl8xLlZpcnR1YWxGUy5tYWtlVmlydHVhbFBhdGgodmlydHVhbEZvbGRlciwgdmlydHVhbE5hbWUsIHRvKTtcbiAgICAgICAgLy8gV2UgdGhlbiB1c2UgYW4gYWxpYXMgdG8gdGVsbCBhbnlvbmUgdGhhdCBhc2tzIHVzIHRoYXQgd2UncmUgb3BlcmF0aW5nIHdpdGhpbiB0aGUgdmlydHVhbCBmb2xkZXIsIHdoaWxlIHN0aWxsIHVzaW5nIHRoZSBzYW1lIG9sZCBmc1xuICAgICAgICBjb25zdCBhbGlhc0ZzID0gbmV3IGZzbGliXzEuQWxpYXNGUyh2aXJ0dWFsUGF0aCwgeyBiYXNlRnM6IHNvdXJjZUZldGNoLnBhY2thZ2VGcywgcGF0aFV0aWxzOiBmc2xpYl8xLnBwYXRoIH0pO1xuICAgICAgICByZXR1cm4geyAuLi5zb3VyY2VGZXRjaCwgcGFja2FnZUZzOiBhbGlhc0ZzIH07XG4gICAgfVxufVxuZXhwb3J0cy5WaXJ0dWFsRmV0Y2hlciA9IFZpcnR1YWxGZXRjaGVyO1xuIiwgIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5WaXJ0dWFsUmVzb2x2ZXIgPSB2b2lkIDA7XG5jbGFzcyBWaXJ0dWFsUmVzb2x2ZXIge1xuICAgIHN0YXRpYyBpc1ZpcnR1YWxEZXNjcmlwdG9yKGRlc2NyaXB0b3IpIHtcbiAgICAgICAgaWYgKCFkZXNjcmlwdG9yLnJhbmdlLnN0YXJ0c1dpdGgoVmlydHVhbFJlc29sdmVyLnByb3RvY29sKSlcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHN0YXRpYyBpc1ZpcnR1YWxMb2NhdG9yKGxvY2F0b3IpIHtcbiAgICAgICAgaWYgKCFsb2NhdG9yLnJlZmVyZW5jZS5zdGFydHNXaXRoKFZpcnR1YWxSZXNvbHZlci5wcm90b2NvbCkpXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBzdXBwb3J0c0Rlc2NyaXB0b3IoZGVzY3JpcHRvciwgb3B0cykge1xuICAgICAgICByZXR1cm4gVmlydHVhbFJlc29sdmVyLmlzVmlydHVhbERlc2NyaXB0b3IoZGVzY3JpcHRvcik7XG4gICAgfVxuICAgIHN1cHBvcnRzTG9jYXRvcihsb2NhdG9yLCBvcHRzKSB7XG4gICAgICAgIHJldHVybiBWaXJ0dWFsUmVzb2x2ZXIuaXNWaXJ0dWFsTG9jYXRvcihsb2NhdG9yKTtcbiAgICB9XG4gICAgc2hvdWxkUGVyc2lzdFJlc29sdXRpb24obG9jYXRvciwgb3B0cykge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGJpbmREZXNjcmlwdG9yKGRlc2NyaXB0b3IsIGxvY2F0b3IsIG9wdHMpIHtcbiAgICAgICAgLy8gSXQncyB1bnN1cHBvcnRlZCBiZWNhdXNlIHBhY2thZ2VzIGluc2lkZSB0aGUgZGVwZW5kZW5jeSB0cmVlIHNob3VsZFxuICAgICAgICAvLyBvbmx5IGJlY29tZSB2aXJ0dWFsIEFGVEVSIHRoZXkgaGF2ZSBhbGwgYmVlbiByZXNvbHZlZCwgYnkgd2hpY2ggcG9pbnRcbiAgICAgICAgLy8geW91IHNob3VsZG4ndCBuZWVkIHRvIGNhbGwgYGJpbmREZXNjcmlwdG9yYCBhbnltb3JlLlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEFzc2VydGlvbiBmYWlsZWQ6IGNhbGxpbmcgXCJiaW5kRGVzY3JpcHRvclwiIG9uIGEgdmlydHVhbCBkZXNjcmlwdG9yIGlzIHVuc3VwcG9ydGVkYCk7XG4gICAgfVxuICAgIGdldFJlc29sdXRpb25EZXBlbmRlbmNpZXMoZGVzY3JpcHRvciwgb3B0cykge1xuICAgICAgICAvLyBJdCdzIHVuc3VwcG9ydGVkIGJlY2F1c2UgcGFja2FnZXMgaW5zaWRlIHRoZSBkZXBlbmRlbmN5IHRyZWUgc2hvdWxkXG4gICAgICAgIC8vIG9ubHkgYmVjb21lIHZpcnR1YWwgQUZURVIgdGhleSBoYXZlIGFsbCBiZWVuIHJlc29sdmVkLCBieSB3aGljaCBwb2ludFxuICAgICAgICAvLyB5b3Ugc2hvdWxkbid0IG5lZWQgdG8gY2FsbCBgYmluZERlc2NyaXB0b3JgIGFueW1vcmUuXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQXNzZXJ0aW9uIGZhaWxlZDogY2FsbGluZyBcImdldFJlc29sdXRpb25EZXBlbmRlbmNpZXNcIiBvbiBhIHZpcnR1YWwgZGVzY3JpcHRvciBpcyB1bnN1cHBvcnRlZGApO1xuICAgIH1cbiAgICBhc3luYyBnZXRDYW5kaWRhdGVzKGRlc2NyaXB0b3IsIGRlcGVuZGVuY2llcywgb3B0cykge1xuICAgICAgICAvLyBJdCdzIHVuc3VwcG9ydGVkIGJlY2F1c2UgcGFja2FnZXMgaW5zaWRlIHRoZSBkZXBlbmRlbmN5IHRyZWUgc2hvdWxkXG4gICAgICAgIC8vIG9ubHkgYmVjb21lIHZpcnR1YWwgQUZURVIgdGhleSBoYXZlIGFsbCBiZWVuIHJlc29sdmVkLCBieSB3aGljaCBwb2ludFxuICAgICAgICAvLyB5b3Ugc2hvdWxkbid0IG5lZWQgdG8gY2FsbCBgZ2V0Q2FuZGlkYXRlc2AgYW55bW9yZS5cbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBBc3NlcnRpb24gZmFpbGVkOiBjYWxsaW5nIFwiZ2V0Q2FuZGlkYXRlc1wiIG9uIGEgdmlydHVhbCBkZXNjcmlwdG9yIGlzIHVuc3VwcG9ydGVkYCk7XG4gICAgfVxuICAgIGFzeW5jIGdldFNhdGlzZnlpbmcoZGVzY3JpcHRvciwgZGVwZW5kZW5jaWVzLCBjYW5kaWRhdGVzLCBvcHRzKSB7XG4gICAgICAgIC8vIEl0J3MgdW5zdXBwb3J0ZWQgYmVjYXVzZSBwYWNrYWdlcyBpbnNpZGUgdGhlIGRlcGVuZGVuY3kgdHJlZSBzaG91bGRcbiAgICAgICAgLy8gb25seSBiZWNvbWUgdmlydHVhbCBBRlRFUiB0aGV5IGhhdmUgYWxsIGJlZW4gcmVzb2x2ZWQsIGJ5IHdoaWNoIHBvaW50XG4gICAgICAgIC8vIHlvdSBzaG91bGRuJ3QgbmVlZCB0byBjYWxsIGBnZXRTYXRpc2Z5aW5nYCBhbnltb3JlLlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEFzc2VydGlvbiBmYWlsZWQ6IGNhbGxpbmcgXCJnZXRTYXRpc2Z5aW5nXCIgb24gYSB2aXJ0dWFsIGRlc2NyaXB0b3IgaXMgdW5zdXBwb3J0ZWRgKTtcbiAgICB9XG4gICAgYXN5bmMgcmVzb2x2ZShsb2NhdG9yLCBvcHRzKSB7XG4gICAgICAgIC8vIEl0J3MgdW5zdXBwb3J0ZWQgYmVjYXVzZSBwYWNrYWdlcyBpbnNpZGUgdGhlIGRlcGVuZGVuY3kgdHJlZSBzaG91bGRcbiAgICAgICAgLy8gb25seSBiZWNvbWUgdmlydHVhbCBBRlRFUiB0aGV5IGhhdmUgYWxsIGJlZW4gcmVzb2x2ZWQsIGJ5IHdoaWNoIHBvaW50XG4gICAgICAgIC8vIHlvdSBzaG91bGRuJ3QgbmVlZCB0byBjYWxsIGByZXNvbHZlYCBhbnltb3JlLlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEFzc2VydGlvbiBmYWlsZWQ6IGNhbGxpbmcgXCJyZXNvbHZlXCIgb24gYSB2aXJ0dWFsIGxvY2F0b3IgaXMgdW5zdXBwb3J0ZWRgKTtcbiAgICB9XG59XG5leHBvcnRzLlZpcnR1YWxSZXNvbHZlciA9IFZpcnR1YWxSZXNvbHZlcjtcblZpcnR1YWxSZXNvbHZlci5wcm90b2NvbCA9IGB2aXJ0dWFsOmA7XG4iLCAiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLldvcmtzcGFjZUZldGNoZXIgPSB2b2lkIDA7XG5jb25zdCBmc2xpYl8xID0gcmVxdWlyZShcIkB5YXJucGtnL2ZzbGliXCIpO1xuY29uc3QgV29ya3NwYWNlUmVzb2x2ZXJfMSA9IHJlcXVpcmUoXCIuL1dvcmtzcGFjZVJlc29sdmVyXCIpO1xuY2xhc3MgV29ya3NwYWNlRmV0Y2hlciB7XG4gICAgc3VwcG9ydHMobG9jYXRvcikge1xuICAgICAgICBpZiAoIWxvY2F0b3IucmVmZXJlbmNlLnN0YXJ0c1dpdGgoV29ya3NwYWNlUmVzb2x2ZXJfMS5Xb3Jrc3BhY2VSZXNvbHZlci5wcm90b2NvbCkpXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBnZXRMb2NhbFBhdGgobG9jYXRvciwgb3B0cykge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRXb3Jrc3BhY2UobG9jYXRvciwgb3B0cykuY3dkO1xuICAgIH1cbiAgICBhc3luYyBmZXRjaChsb2NhdG9yLCBvcHRzKSB7XG4gICAgICAgIGNvbnN0IHNvdXJjZVBhdGggPSB0aGlzLmdldFdvcmtzcGFjZShsb2NhdG9yLCBvcHRzKS5jd2Q7XG4gICAgICAgIHJldHVybiB7IHBhY2thZ2VGczogbmV3IGZzbGliXzEuQ3dkRlMoc291cmNlUGF0aCksIHByZWZpeFBhdGg6IGZzbGliXzEuUG9ydGFibGVQYXRoLmRvdCwgbG9jYWxQYXRoOiBzb3VyY2VQYXRoIH07XG4gICAgfVxuICAgIGdldFdvcmtzcGFjZShsb2NhdG9yLCBvcHRzKSB7XG4gICAgICAgIHJldHVybiBvcHRzLnByb2plY3QuZ2V0V29ya3NwYWNlQnlDd2QobG9jYXRvci5yZWZlcmVuY2Uuc2xpY2UoV29ya3NwYWNlUmVzb2x2ZXJfMS5Xb3Jrc3BhY2VSZXNvbHZlci5wcm90b2NvbC5sZW5ndGgpKTtcbiAgICB9XG59XG5leHBvcnRzLldvcmtzcGFjZUZldGNoZXIgPSBXb3Jrc3BhY2VGZXRjaGVyO1xuIiwgIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5pc0ZvbGRlckluc2lkZSA9IGV4cG9ydHMuZ2V0SG9tZUZvbGRlciA9IGV4cG9ydHMuZ2V0RGVmYXVsdEdsb2JhbEZvbGRlciA9IHZvaWQgMDtcbmNvbnN0IGZzbGliXzEgPSByZXF1aXJlKFwiQHlhcm5wa2cvZnNsaWJcIik7XG5jb25zdCBvc18xID0gcmVxdWlyZShcIm9zXCIpO1xuZnVuY3Rpb24gZ2V0RGVmYXVsdEdsb2JhbEZvbGRlcigpIHtcbiAgICBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gYHdpbjMyYCkge1xuICAgICAgICBjb25zdCBiYXNlID0gZnNsaWJfMS5ucGF0aC50b1BvcnRhYmxlUGF0aChwcm9jZXNzLmVudi5MT0NBTEFQUERBVEEgfHwgZnNsaWJfMS5ucGF0aC5qb2luKCgwLCBvc18xLmhvbWVkaXIpKCksIGBBcHBEYXRhYCwgYExvY2FsYCkpO1xuICAgICAgICByZXR1cm4gZnNsaWJfMS5wcGF0aC5yZXNvbHZlKGJhc2UsIGBZYXJuL0JlcnJ5YCk7XG4gICAgfVxuICAgIGlmIChwcm9jZXNzLmVudi5YREdfREFUQV9IT01FKSB7XG4gICAgICAgIGNvbnN0IGJhc2UgPSBmc2xpYl8xLm5wYXRoLnRvUG9ydGFibGVQYXRoKHByb2Nlc3MuZW52LlhER19EQVRBX0hPTUUpO1xuICAgICAgICByZXR1cm4gZnNsaWJfMS5wcGF0aC5yZXNvbHZlKGJhc2UsIGB5YXJuL2JlcnJ5YCk7XG4gICAgfVxuICAgIHJldHVybiBmc2xpYl8xLnBwYXRoLnJlc29sdmUoZ2V0SG9tZUZvbGRlcigpLCBgLnlhcm4vYmVycnlgKTtcbn1cbmV4cG9ydHMuZ2V0RGVmYXVsdEdsb2JhbEZvbGRlciA9IGdldERlZmF1bHRHbG9iYWxGb2xkZXI7XG5mdW5jdGlvbiBnZXRIb21lRm9sZGVyKCkge1xuICAgIHJldHVybiBmc2xpYl8xLm5wYXRoLnRvUG9ydGFibGVQYXRoKCgwLCBvc18xLmhvbWVkaXIpKCkgfHwgYC91c3IvbG9jYWwvc2hhcmVgKTtcbn1cbmV4cG9ydHMuZ2V0SG9tZUZvbGRlciA9IGdldEhvbWVGb2xkZXI7XG5mdW5jdGlvbiBpc0ZvbGRlckluc2lkZSh0YXJnZXQsIHBhcmVudCkge1xuICAgIGNvbnN0IHJlbGF0aXZlID0gZnNsaWJfMS5wcGF0aC5yZWxhdGl2ZShwYXJlbnQsIHRhcmdldCk7XG4gICAgcmV0dXJuIHJlbGF0aXZlICYmICFyZWxhdGl2ZS5zdGFydHNXaXRoKGAuLmApICYmICFmc2xpYl8xLnBwYXRoLmlzQWJzb2x1dGUocmVsYXRpdmUpO1xufVxuZXhwb3J0cy5pc0ZvbGRlckluc2lkZSA9IGlzRm9sZGVySW5zaWRlO1xuIiwgIid1c2Ugc3RyaWN0JztcblxudmFyIG5ldCA9IHJlcXVpcmUoJ25ldCcpO1xudmFyIHRscyA9IHJlcXVpcmUoJ3RscycpO1xudmFyIGh0dHAgPSByZXF1aXJlKCdodHRwJyk7XG52YXIgaHR0cHMgPSByZXF1aXJlKCdodHRwcycpO1xudmFyIGV2ZW50cyA9IHJlcXVpcmUoJ2V2ZW50cycpO1xudmFyIGFzc2VydCA9IHJlcXVpcmUoJ2Fzc2VydCcpO1xudmFyIHV0aWwgPSByZXF1aXJlKCd1dGlsJyk7XG5cblxuZXhwb3J0cy5odHRwT3Zlckh0dHAgPSBodHRwT3Zlckh0dHA7XG5leHBvcnRzLmh0dHBzT3Zlckh0dHAgPSBodHRwc092ZXJIdHRwO1xuZXhwb3J0cy5odHRwT3Zlckh0dHBzID0gaHR0cE92ZXJIdHRwcztcbmV4cG9ydHMuaHR0cHNPdmVySHR0cHMgPSBodHRwc092ZXJIdHRwcztcblxuXG5mdW5jdGlvbiBodHRwT3Zlckh0dHAob3B0aW9ucykge1xuICB2YXIgYWdlbnQgPSBuZXcgVHVubmVsaW5nQWdlbnQob3B0aW9ucyk7XG4gIGFnZW50LnJlcXVlc3QgPSBodHRwLnJlcXVlc3Q7XG4gIHJldHVybiBhZ2VudDtcbn1cblxuZnVuY3Rpb24gaHR0cHNPdmVySHR0cChvcHRpb25zKSB7XG4gIHZhciBhZ2VudCA9IG5ldyBUdW5uZWxpbmdBZ2VudChvcHRpb25zKTtcbiAgYWdlbnQucmVxdWVzdCA9IGh0dHAucmVxdWVzdDtcbiAgYWdlbnQuY3JlYXRlU29ja2V0ID0gY3JlYXRlU2VjdXJlU29ja2V0O1xuICBhZ2VudC5kZWZhdWx0UG9ydCA9IDQ0MztcbiAgcmV0dXJuIGFnZW50O1xufVxuXG5mdW5jdGlvbiBodHRwT3Zlckh0dHBzKG9wdGlvbnMpIHtcbiAgdmFyIGFnZW50ID0gbmV3IFR1bm5lbGluZ0FnZW50KG9wdGlvbnMpO1xuICBhZ2VudC5yZXF1ZXN0ID0gaHR0cHMucmVxdWVzdDtcbiAgcmV0dXJuIGFnZW50O1xufVxuXG5mdW5jdGlvbiBodHRwc092ZXJIdHRwcyhvcHRpb25zKSB7XG4gIHZhciBhZ2VudCA9IG5ldyBUdW5uZWxpbmdBZ2VudChvcHRpb25zKTtcbiAgYWdlbnQucmVxdWVzdCA9IGh0dHBzLnJlcXVlc3Q7XG4gIGFnZW50LmNyZWF0ZVNvY2tldCA9IGNyZWF0ZVNlY3VyZVNvY2tldDtcbiAgYWdlbnQuZGVmYXVsdFBvcnQgPSA0NDM7XG4gIHJldHVybiBhZ2VudDtcbn1cblxuXG5mdW5jdGlvbiBUdW5uZWxpbmdBZ2VudChvcHRpb25zKSB7XG4gIHZhciBzZWxmID0gdGhpcztcbiAgc2VsZi5vcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgc2VsZi5wcm94eU9wdGlvbnMgPSBzZWxmLm9wdGlvbnMucHJveHkgfHwge307XG4gIHNlbGYubWF4U29ja2V0cyA9IHNlbGYub3B0aW9ucy5tYXhTb2NrZXRzIHx8IGh0dHAuQWdlbnQuZGVmYXVsdE1heFNvY2tldHM7XG4gIHNlbGYucmVxdWVzdHMgPSBbXTtcbiAgc2VsZi5zb2NrZXRzID0gW107XG5cbiAgc2VsZi5vbignZnJlZScsIGZ1bmN0aW9uIG9uRnJlZShzb2NrZXQsIGhvc3QsIHBvcnQsIGxvY2FsQWRkcmVzcykge1xuICAgIHZhciBvcHRpb25zID0gdG9PcHRpb25zKGhvc3QsIHBvcnQsIGxvY2FsQWRkcmVzcyk7XG4gICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IHNlbGYucmVxdWVzdHMubGVuZ3RoOyBpIDwgbGVuOyArK2kpIHtcbiAgICAgIHZhciBwZW5kaW5nID0gc2VsZi5yZXF1ZXN0c1tpXTtcbiAgICAgIGlmIChwZW5kaW5nLmhvc3QgPT09IG9wdGlvbnMuaG9zdCAmJiBwZW5kaW5nLnBvcnQgPT09IG9wdGlvbnMucG9ydCkge1xuICAgICAgICAvLyBEZXRlY3QgdGhlIHJlcXVlc3QgdG8gY29ubmVjdCBzYW1lIG9yaWdpbiBzZXJ2ZXIsXG4gICAgICAgIC8vIHJldXNlIHRoZSBjb25uZWN0aW9uLlxuICAgICAgICBzZWxmLnJlcXVlc3RzLnNwbGljZShpLCAxKTtcbiAgICAgICAgcGVuZGluZy5yZXF1ZXN0Lm9uU29ja2V0KHNvY2tldCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG4gICAgc29ja2V0LmRlc3Ryb3koKTtcbiAgICBzZWxmLnJlbW92ZVNvY2tldChzb2NrZXQpO1xuICB9KTtcbn1cbnV0aWwuaW5oZXJpdHMoVHVubmVsaW5nQWdlbnQsIGV2ZW50cy5FdmVudEVtaXR0ZXIpO1xuXG5UdW5uZWxpbmdBZ2VudC5wcm90b3R5cGUuYWRkUmVxdWVzdCA9IGZ1bmN0aW9uIGFkZFJlcXVlc3QocmVxLCBob3N0LCBwb3J0LCBsb2NhbEFkZHJlc3MpIHtcbiAgdmFyIHNlbGYgPSB0aGlzO1xuICB2YXIgb3B0aW9ucyA9IG1lcmdlT3B0aW9ucyh7cmVxdWVzdDogcmVxfSwgc2VsZi5vcHRpb25zLCB0b09wdGlvbnMoaG9zdCwgcG9ydCwgbG9jYWxBZGRyZXNzKSk7XG5cbiAgaWYgKHNlbGYuc29ja2V0cy5sZW5ndGggPj0gdGhpcy5tYXhTb2NrZXRzKSB7XG4gICAgLy8gV2UgYXJlIG92ZXIgbGltaXQgc28gd2UnbGwgYWRkIGl0IHRvIHRoZSBxdWV1ZS5cbiAgICBzZWxmLnJlcXVlc3RzLnB1c2gob3B0aW9ucyk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLy8gSWYgd2UgYXJlIHVuZGVyIG1heFNvY2tldHMgY3JlYXRlIGEgbmV3IG9uZS5cbiAgc2VsZi5jcmVhdGVTb2NrZXQob3B0aW9ucywgZnVuY3Rpb24oc29ja2V0KSB7XG4gICAgc29ja2V0Lm9uKCdmcmVlJywgb25GcmVlKTtcbiAgICBzb2NrZXQub24oJ2Nsb3NlJywgb25DbG9zZU9yUmVtb3ZlKTtcbiAgICBzb2NrZXQub24oJ2FnZW50UmVtb3ZlJywgb25DbG9zZU9yUmVtb3ZlKTtcbiAgICByZXEub25Tb2NrZXQoc29ja2V0KTtcblxuICAgIGZ1bmN0aW9uIG9uRnJlZSgpIHtcbiAgICAgIHNlbGYuZW1pdCgnZnJlZScsIHNvY2tldCwgb3B0aW9ucyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gb25DbG9zZU9yUmVtb3ZlKGVycikge1xuICAgICAgc2VsZi5yZW1vdmVTb2NrZXQoc29ja2V0KTtcbiAgICAgIHNvY2tldC5yZW1vdmVMaXN0ZW5lcignZnJlZScsIG9uRnJlZSk7XG4gICAgICBzb2NrZXQucmVtb3ZlTGlzdGVuZXIoJ2Nsb3NlJywgb25DbG9zZU9yUmVtb3ZlKTtcbiAgICAgIHNvY2tldC5yZW1vdmVMaXN0ZW5lcignYWdlbnRSZW1vdmUnLCBvbkNsb3NlT3JSZW1vdmUpO1xuICAgIH1cbiAgfSk7XG59O1xuXG5UdW5uZWxpbmdBZ2VudC5wcm90b3R5cGUuY3JlYXRlU29ja2V0ID0gZnVuY3Rpb24gY3JlYXRlU29ja2V0KG9wdGlvbnMsIGNiKSB7XG4gIHZhciBzZWxmID0gdGhpcztcbiAgdmFyIHBsYWNlaG9sZGVyID0ge307XG4gIHNlbGYuc29ja2V0cy5wdXNoKHBsYWNlaG9sZGVyKTtcblxuICB2YXIgY29ubmVjdE9wdGlvbnMgPSBtZXJnZU9wdGlvbnMoe30sIHNlbGYucHJveHlPcHRpb25zLCB7XG4gICAgbWV0aG9kOiAnQ09OTkVDVCcsXG4gICAgcGF0aDogb3B0aW9ucy5ob3N0ICsgJzonICsgb3B0aW9ucy5wb3J0LFxuICAgIGFnZW50OiBmYWxzZSxcbiAgICBoZWFkZXJzOiB7XG4gICAgICBob3N0OiBvcHRpb25zLmhvc3QgKyAnOicgKyBvcHRpb25zLnBvcnRcbiAgICB9XG4gIH0pO1xuICBpZiAob3B0aW9ucy5sb2NhbEFkZHJlc3MpIHtcbiAgICBjb25uZWN0T3B0aW9ucy5sb2NhbEFkZHJlc3MgPSBvcHRpb25zLmxvY2FsQWRkcmVzcztcbiAgfVxuICBpZiAoY29ubmVjdE9wdGlvbnMucHJveHlBdXRoKSB7XG4gICAgY29ubmVjdE9wdGlvbnMuaGVhZGVycyA9IGNvbm5lY3RPcHRpb25zLmhlYWRlcnMgfHwge307XG4gICAgY29ubmVjdE9wdGlvbnMuaGVhZGVyc1snUHJveHktQXV0aG9yaXphdGlvbiddID0gJ0Jhc2ljICcgK1xuICAgICAgICBuZXcgQnVmZmVyKGNvbm5lY3RPcHRpb25zLnByb3h5QXV0aCkudG9TdHJpbmcoJ2Jhc2U2NCcpO1xuICB9XG5cbiAgZGVidWcoJ21ha2luZyBDT05ORUNUIHJlcXVlc3QnKTtcbiAgdmFyIGNvbm5lY3RSZXEgPSBzZWxmLnJlcXVlc3QoY29ubmVjdE9wdGlvbnMpO1xuICBjb25uZWN0UmVxLnVzZUNodW5rZWRFbmNvZGluZ0J5RGVmYXVsdCA9IGZhbHNlOyAvLyBmb3IgdjAuNlxuICBjb25uZWN0UmVxLm9uY2UoJ3Jlc3BvbnNlJywgb25SZXNwb25zZSk7IC8vIGZvciB2MC42XG4gIGNvbm5lY3RSZXEub25jZSgndXBncmFkZScsIG9uVXBncmFkZSk7ICAgLy8gZm9yIHYwLjZcbiAgY29ubmVjdFJlcS5vbmNlKCdjb25uZWN0Jywgb25Db25uZWN0KTsgICAvLyBmb3IgdjAuNyBvciBsYXRlclxuICBjb25uZWN0UmVxLm9uY2UoJ2Vycm9yJywgb25FcnJvcik7XG4gIGNvbm5lY3RSZXEuZW5kKCk7XG5cbiAgZnVuY3Rpb24gb25SZXNwb25zZShyZXMpIHtcbiAgICAvLyBWZXJ5IGhhY2t5LiBUaGlzIGlzIG5lY2Vzc2FyeSB0byBhdm9pZCBodHRwLXBhcnNlciBsZWFrcy5cbiAgICByZXMudXBncmFkZSA9IHRydWU7XG4gIH1cblxuICBmdW5jdGlvbiBvblVwZ3JhZGUocmVzLCBzb2NrZXQsIGhlYWQpIHtcbiAgICAvLyBIYWNreS5cbiAgICBwcm9jZXNzLm5leHRUaWNrKGZ1bmN0aW9uKCkge1xuICAgICAgb25Db25uZWN0KHJlcywgc29ja2V0LCBoZWFkKTtcbiAgICB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIG9uQ29ubmVjdChyZXMsIHNvY2tldCwgaGVhZCkge1xuICAgIGNvbm5lY3RSZXEucmVtb3ZlQWxsTGlzdGVuZXJzKCk7XG4gICAgc29ja2V0LnJlbW92ZUFsbExpc3RlbmVycygpO1xuXG4gICAgaWYgKHJlcy5zdGF0dXNDb2RlICE9PSAyMDApIHtcbiAgICAgIGRlYnVnKCd0dW5uZWxpbmcgc29ja2V0IGNvdWxkIG5vdCBiZSBlc3RhYmxpc2hlZCwgc3RhdHVzQ29kZT0lZCcsXG4gICAgICAgIHJlcy5zdGF0dXNDb2RlKTtcbiAgICAgIHNvY2tldC5kZXN0cm95KCk7XG4gICAgICB2YXIgZXJyb3IgPSBuZXcgRXJyb3IoJ3R1bm5lbGluZyBzb2NrZXQgY291bGQgbm90IGJlIGVzdGFibGlzaGVkLCAnICtcbiAgICAgICAgJ3N0YXR1c0NvZGU9JyArIHJlcy5zdGF0dXNDb2RlKTtcbiAgICAgIGVycm9yLmNvZGUgPSAnRUNPTk5SRVNFVCc7XG4gICAgICBvcHRpb25zLnJlcXVlc3QuZW1pdCgnZXJyb3InLCBlcnJvcik7XG4gICAgICBzZWxmLnJlbW92ZVNvY2tldChwbGFjZWhvbGRlcik7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChoZWFkLmxlbmd0aCA+IDApIHtcbiAgICAgIGRlYnVnKCdnb3QgaWxsZWdhbCByZXNwb25zZSBib2R5IGZyb20gcHJveHknKTtcbiAgICAgIHNvY2tldC5kZXN0cm95KCk7XG4gICAgICB2YXIgZXJyb3IgPSBuZXcgRXJyb3IoJ2dvdCBpbGxlZ2FsIHJlc3BvbnNlIGJvZHkgZnJvbSBwcm94eScpO1xuICAgICAgZXJyb3IuY29kZSA9ICdFQ09OTlJFU0VUJztcbiAgICAgIG9wdGlvbnMucmVxdWVzdC5lbWl0KCdlcnJvcicsIGVycm9yKTtcbiAgICAgIHNlbGYucmVtb3ZlU29ja2V0KHBsYWNlaG9sZGVyKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZGVidWcoJ3R1bm5lbGluZyBjb25uZWN0aW9uIGhhcyBlc3RhYmxpc2hlZCcpO1xuICAgIHNlbGYuc29ja2V0c1tzZWxmLnNvY2tldHMuaW5kZXhPZihwbGFjZWhvbGRlcildID0gc29ja2V0O1xuICAgIHJldHVybiBjYihzb2NrZXQpO1xuICB9XG5cbiAgZnVuY3Rpb24gb25FcnJvcihjYXVzZSkge1xuICAgIGNvbm5lY3RSZXEucmVtb3ZlQWxsTGlzdGVuZXJzKCk7XG5cbiAgICBkZWJ1ZygndHVubmVsaW5nIHNvY2tldCBjb3VsZCBub3QgYmUgZXN0YWJsaXNoZWQsIGNhdXNlPSVzXFxuJyxcbiAgICAgICAgICBjYXVzZS5tZXNzYWdlLCBjYXVzZS5zdGFjayk7XG4gICAgdmFyIGVycm9yID0gbmV3IEVycm9yKCd0dW5uZWxpbmcgc29ja2V0IGNvdWxkIG5vdCBiZSBlc3RhYmxpc2hlZCwgJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdjYXVzZT0nICsgY2F1c2UubWVzc2FnZSk7XG4gICAgZXJyb3IuY29kZSA9ICdFQ09OTlJFU0VUJztcbiAgICBvcHRpb25zLnJlcXVlc3QuZW1pdCgnZXJyb3InLCBlcnJvcik7XG4gICAgc2VsZi5yZW1vdmVTb2NrZXQocGxhY2Vob2xkZXIpO1xuICB9XG59O1xuXG5UdW5uZWxpbmdBZ2VudC5wcm90b3R5cGUucmVtb3ZlU29ja2V0ID0gZnVuY3Rpb24gcmVtb3ZlU29ja2V0KHNvY2tldCkge1xuICB2YXIgcG9zID0gdGhpcy5zb2NrZXRzLmluZGV4T2Yoc29ja2V0KVxuICBpZiAocG9zID09PSAtMSkge1xuICAgIHJldHVybjtcbiAgfVxuICB0aGlzLnNvY2tldHMuc3BsaWNlKHBvcywgMSk7XG5cbiAgdmFyIHBlbmRpbmcgPSB0aGlzLnJlcXVlc3RzLnNoaWZ0KCk7XG4gIGlmIChwZW5kaW5nKSB7XG4gICAgLy8gSWYgd2UgaGF2ZSBwZW5kaW5nIHJlcXVlc3RzIGFuZCBhIHNvY2tldCBnZXRzIGNsb3NlZCBhIG5ldyBvbmVcbiAgICAvLyBuZWVkcyB0byBiZSBjcmVhdGVkIHRvIHRha2Ugb3ZlciBpbiB0aGUgcG9vbCBmb3IgdGhlIG9uZSB0aGF0IGNsb3NlZC5cbiAgICB0aGlzLmNyZWF0ZVNvY2tldChwZW5kaW5nLCBmdW5jdGlvbihzb2NrZXQpIHtcbiAgICAgIHBlbmRpbmcucmVxdWVzdC5vblNvY2tldChzb2NrZXQpO1xuICAgIH0pO1xuICB9XG59O1xuXG5mdW5jdGlvbiBjcmVhdGVTZWN1cmVTb2NrZXQob3B0aW9ucywgY2IpIHtcbiAgdmFyIHNlbGYgPSB0aGlzO1xuICBUdW5uZWxpbmdBZ2VudC5wcm90b3R5cGUuY3JlYXRlU29ja2V0LmNhbGwoc2VsZiwgb3B0aW9ucywgZnVuY3Rpb24oc29ja2V0KSB7XG4gICAgdmFyIGhvc3RIZWFkZXIgPSBvcHRpb25zLnJlcXVlc3QuZ2V0SGVhZGVyKCdob3N0Jyk7XG4gICAgdmFyIHRsc09wdGlvbnMgPSBtZXJnZU9wdGlvbnMoe30sIHNlbGYub3B0aW9ucywge1xuICAgICAgc29ja2V0OiBzb2NrZXQsXG4gICAgICBzZXJ2ZXJuYW1lOiBob3N0SGVhZGVyID8gaG9zdEhlYWRlci5yZXBsYWNlKC86LiokLywgJycpIDogb3B0aW9ucy5ob3N0XG4gICAgfSk7XG5cbiAgICAvLyAwIGlzIGR1bW15IHBvcnQgZm9yIHYwLjZcbiAgICB2YXIgc2VjdXJlU29ja2V0ID0gdGxzLmNvbm5lY3QoMCwgdGxzT3B0aW9ucyk7XG4gICAgc2VsZi5zb2NrZXRzW3NlbGYuc29ja2V0cy5pbmRleE9mKHNvY2tldCldID0gc2VjdXJlU29ja2V0O1xuICAgIGNiKHNlY3VyZVNvY2tldCk7XG4gIH0pO1xufVxuXG5cbmZ1bmN0aW9uIHRvT3B0aW9ucyhob3N0LCBwb3J0LCBsb2NhbEFkZHJlc3MpIHtcbiAgaWYgKHR5cGVvZiBob3N0ID09PSAnc3RyaW5nJykgeyAvLyBzaW5jZSB2MC4xMFxuICAgIHJldHVybiB7XG4gICAgICBob3N0OiBob3N0LFxuICAgICAgcG9ydDogcG9ydCxcbiAgICAgIGxvY2FsQWRkcmVzczogbG9jYWxBZGRyZXNzXG4gICAgfTtcbiAgfVxuICByZXR1cm4gaG9zdDsgLy8gZm9yIHYwLjExIG9yIGxhdGVyXG59XG5cbmZ1bmN0aW9uIG1lcmdlT3B0aW9ucyh0YXJnZXQpIHtcbiAgZm9yICh2YXIgaSA9IDEsIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBsZW47ICsraSkge1xuICAgIHZhciBvdmVycmlkZXMgPSBhcmd1bWVudHNbaV07XG4gICAgaWYgKHR5cGVvZiBvdmVycmlkZXMgPT09ICdvYmplY3QnKSB7XG4gICAgICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKG92ZXJyaWRlcyk7XG4gICAgICBmb3IgKHZhciBqID0gMCwga2V5TGVuID0ga2V5cy5sZW5ndGg7IGogPCBrZXlMZW47ICsraikge1xuICAgICAgICB2YXIgayA9IGtleXNbal07XG4gICAgICAgIGlmIChvdmVycmlkZXNba10gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHRhcmdldFtrXSA9IG92ZXJyaWRlc1trXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gdGFyZ2V0O1xufVxuXG5cbnZhciBkZWJ1ZztcbmlmIChwcm9jZXNzLmVudi5OT0RFX0RFQlVHICYmIC9cXGJ0dW5uZWxcXGIvLnRlc3QocHJvY2Vzcy5lbnYuTk9ERV9ERUJVRykpIHtcbiAgZGVidWcgPSBmdW5jdGlvbigpIHtcbiAgICB2YXIgYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cyk7XG4gICAgaWYgKHR5cGVvZiBhcmdzWzBdID09PSAnc3RyaW5nJykge1xuICAgICAgYXJnc1swXSA9ICdUVU5ORUw6ICcgKyBhcmdzWzBdO1xuICAgIH0gZWxzZSB7XG4gICAgICBhcmdzLnVuc2hpZnQoJ1RVTk5FTDonKTtcbiAgICB9XG4gICAgY29uc29sZS5lcnJvci5hcHBseShjb25zb2xlLCBhcmdzKTtcbiAgfVxufSBlbHNlIHtcbiAgZGVidWcgPSBmdW5jdGlvbigpIHt9O1xufVxuZXhwb3J0cy5kZWJ1ZyA9IGRlYnVnOyAvLyBmb3IgdGVzdFxuIiwgIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9saWIvdHVubmVsJyk7XG4iLCAiXCJ1c2Ugc3RyaWN0XCI7XG4vLy8gPHJlZmVyZW5jZSBsaWI9XCJlczIwMThcIi8+XG4vLy8gPHJlZmVyZW5jZSBsaWI9XCJkb21cIi8+XG4vLy8gPHJlZmVyZW5jZSB0eXBlcz1cIm5vZGVcIi8+XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5jb25zdCB0eXBlZEFycmF5VHlwZU5hbWVzID0gW1xuICAgICdJbnQ4QXJyYXknLFxuICAgICdVaW50OEFycmF5JyxcbiAgICAnVWludDhDbGFtcGVkQXJyYXknLFxuICAgICdJbnQxNkFycmF5JyxcbiAgICAnVWludDE2QXJyYXknLFxuICAgICdJbnQzMkFycmF5JyxcbiAgICAnVWludDMyQXJyYXknLFxuICAgICdGbG9hdDMyQXJyYXknLFxuICAgICdGbG9hdDY0QXJyYXknLFxuICAgICdCaWdJbnQ2NEFycmF5JyxcbiAgICAnQmlnVWludDY0QXJyYXknXG5dO1xuZnVuY3Rpb24gaXNUeXBlZEFycmF5TmFtZShuYW1lKSB7XG4gICAgcmV0dXJuIHR5cGVkQXJyYXlUeXBlTmFtZXMuaW5jbHVkZXMobmFtZSk7XG59XG5jb25zdCBvYmplY3RUeXBlTmFtZXMgPSBbXG4gICAgJ0Z1bmN0aW9uJyxcbiAgICAnR2VuZXJhdG9yJyxcbiAgICAnQXN5bmNHZW5lcmF0b3InLFxuICAgICdHZW5lcmF0b3JGdW5jdGlvbicsXG4gICAgJ0FzeW5jR2VuZXJhdG9yRnVuY3Rpb24nLFxuICAgICdBc3luY0Z1bmN0aW9uJyxcbiAgICAnT2JzZXJ2YWJsZScsXG4gICAgJ0FycmF5JyxcbiAgICAnQnVmZmVyJyxcbiAgICAnQmxvYicsXG4gICAgJ09iamVjdCcsXG4gICAgJ1JlZ0V4cCcsXG4gICAgJ0RhdGUnLFxuICAgICdFcnJvcicsXG4gICAgJ01hcCcsXG4gICAgJ1NldCcsXG4gICAgJ1dlYWtNYXAnLFxuICAgICdXZWFrU2V0JyxcbiAgICAnQXJyYXlCdWZmZXInLFxuICAgICdTaGFyZWRBcnJheUJ1ZmZlcicsXG4gICAgJ0RhdGFWaWV3JyxcbiAgICAnUHJvbWlzZScsXG4gICAgJ1VSTCcsXG4gICAgJ0Zvcm1EYXRhJyxcbiAgICAnVVJMU2VhcmNoUGFyYW1zJyxcbiAgICAnSFRNTEVsZW1lbnQnLFxuICAgIC4uLnR5cGVkQXJyYXlUeXBlTmFtZXNcbl07XG5mdW5jdGlvbiBpc09iamVjdFR5cGVOYW1lKG5hbWUpIHtcbiAgICByZXR1cm4gb2JqZWN0VHlwZU5hbWVzLmluY2x1ZGVzKG5hbWUpO1xufVxuY29uc3QgcHJpbWl0aXZlVHlwZU5hbWVzID0gW1xuICAgICdudWxsJyxcbiAgICAndW5kZWZpbmVkJyxcbiAgICAnc3RyaW5nJyxcbiAgICAnbnVtYmVyJyxcbiAgICAnYmlnaW50JyxcbiAgICAnYm9vbGVhbicsXG4gICAgJ3N5bWJvbCdcbl07XG5mdW5jdGlvbiBpc1ByaW1pdGl2ZVR5cGVOYW1lKG5hbWUpIHtcbiAgICByZXR1cm4gcHJpbWl0aXZlVHlwZU5hbWVzLmluY2x1ZGVzKG5hbWUpO1xufVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHlwZXNcbmZ1bmN0aW9uIGlzT2ZUeXBlKHR5cGUpIHtcbiAgICByZXR1cm4gKHZhbHVlKSA9PiB0eXBlb2YgdmFsdWUgPT09IHR5cGU7XG59XG5jb25zdCB7IHRvU3RyaW5nIH0gPSBPYmplY3QucHJvdG90eXBlO1xuY29uc3QgZ2V0T2JqZWN0VHlwZSA9ICh2YWx1ZSkgPT4ge1xuICAgIGNvbnN0IG9iamVjdFR5cGVOYW1lID0gdG9TdHJpbmcuY2FsbCh2YWx1ZSkuc2xpY2UoOCwgLTEpO1xuICAgIGlmICgvSFRNTFxcdytFbGVtZW50Ly50ZXN0KG9iamVjdFR5cGVOYW1lKSAmJiBpcy5kb21FbGVtZW50KHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gJ0hUTUxFbGVtZW50JztcbiAgICB9XG4gICAgaWYgKGlzT2JqZWN0VHlwZU5hbWUob2JqZWN0VHlwZU5hbWUpKSB7XG4gICAgICAgIHJldHVybiBvYmplY3RUeXBlTmFtZTtcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbn07XG5jb25zdCBpc09iamVjdE9mVHlwZSA9ICh0eXBlKSA9PiAodmFsdWUpID0+IGdldE9iamVjdFR5cGUodmFsdWUpID09PSB0eXBlO1xuZnVuY3Rpb24gaXModmFsdWUpIHtcbiAgICBpZiAodmFsdWUgPT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuICdudWxsJztcbiAgICB9XG4gICAgc3dpdGNoICh0eXBlb2YgdmFsdWUpIHtcbiAgICAgICAgY2FzZSAndW5kZWZpbmVkJzpcbiAgICAgICAgICAgIHJldHVybiAndW5kZWZpbmVkJztcbiAgICAgICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgICAgICAgIHJldHVybiAnc3RyaW5nJztcbiAgICAgICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgICAgICAgIHJldHVybiAnbnVtYmVyJztcbiAgICAgICAgY2FzZSAnYm9vbGVhbic6XG4gICAgICAgICAgICByZXR1cm4gJ2Jvb2xlYW4nO1xuICAgICAgICBjYXNlICdmdW5jdGlvbic6XG4gICAgICAgICAgICByZXR1cm4gJ0Z1bmN0aW9uJztcbiAgICAgICAgY2FzZSAnYmlnaW50JzpcbiAgICAgICAgICAgIHJldHVybiAnYmlnaW50JztcbiAgICAgICAgY2FzZSAnc3ltYm9sJzpcbiAgICAgICAgICAgIHJldHVybiAnc3ltYm9sJztcbiAgICAgICAgZGVmYXVsdDpcbiAgICB9XG4gICAgaWYgKGlzLm9ic2VydmFibGUodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiAnT2JzZXJ2YWJsZSc7XG4gICAgfVxuICAgIGlmIChpcy5hcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuICdBcnJheSc7XG4gICAgfVxuICAgIGlmIChpcy5idWZmZXIodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiAnQnVmZmVyJztcbiAgICB9XG4gICAgY29uc3QgdGFnVHlwZSA9IGdldE9iamVjdFR5cGUodmFsdWUpO1xuICAgIGlmICh0YWdUeXBlKSB7XG4gICAgICAgIHJldHVybiB0YWdUeXBlO1xuICAgIH1cbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBTdHJpbmcgfHwgdmFsdWUgaW5zdGFuY2VvZiBCb29sZWFuIHx8IHZhbHVlIGluc3RhbmNlb2YgTnVtYmVyKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1BsZWFzZSBkb25cXCd0IHVzZSBvYmplY3Qgd3JhcHBlcnMgZm9yIHByaW1pdGl2ZSB0eXBlcycpO1xuICAgIH1cbiAgICByZXR1cm4gJ09iamVjdCc7XG59XG5pcy51bmRlZmluZWQgPSBpc09mVHlwZSgndW5kZWZpbmVkJyk7XG5pcy5zdHJpbmcgPSBpc09mVHlwZSgnc3RyaW5nJyk7XG5jb25zdCBpc051bWJlclR5cGUgPSBpc09mVHlwZSgnbnVtYmVyJyk7XG5pcy5udW1iZXIgPSAodmFsdWUpID0+IGlzTnVtYmVyVHlwZSh2YWx1ZSkgJiYgIWlzLm5hbih2YWx1ZSk7XG5pcy5iaWdpbnQgPSBpc09mVHlwZSgnYmlnaW50Jyk7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10eXBlc1xuaXMuZnVuY3Rpb25fID0gaXNPZlR5cGUoJ2Z1bmN0aW9uJyk7XG5pcy5udWxsXyA9ICh2YWx1ZSkgPT4gdmFsdWUgPT09IG51bGw7XG5pcy5jbGFzc18gPSAodmFsdWUpID0+IGlzLmZ1bmN0aW9uXyh2YWx1ZSkgJiYgdmFsdWUudG9TdHJpbmcoKS5zdGFydHNXaXRoKCdjbGFzcyAnKTtcbmlzLmJvb2xlYW4gPSAodmFsdWUpID0+IHZhbHVlID09PSB0cnVlIHx8IHZhbHVlID09PSBmYWxzZTtcbmlzLnN5bWJvbCA9IGlzT2ZUeXBlKCdzeW1ib2wnKTtcbmlzLm51bWVyaWNTdHJpbmcgPSAodmFsdWUpID0+IGlzLnN0cmluZyh2YWx1ZSkgJiYgIWlzLmVtcHR5U3RyaW5nT3JXaGl0ZXNwYWNlKHZhbHVlKSAmJiAhTnVtYmVyLmlzTmFOKE51bWJlcih2YWx1ZSkpO1xuaXMuYXJyYXkgPSAodmFsdWUsIGFzc2VydGlvbikgPT4ge1xuICAgIGlmICghQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAoIWlzLmZ1bmN0aW9uXyhhc3NlcnRpb24pKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWUuZXZlcnkoYXNzZXJ0aW9uKTtcbn07XG5pcy5idWZmZXIgPSAodmFsdWUpID0+IHsgdmFyIF9hLCBfYiwgX2MsIF9kOyByZXR1cm4gKF9kID0gKF9jID0gKF9iID0gKF9hID0gdmFsdWUpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jb25zdHJ1Y3RvcikgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmlzQnVmZmVyKSA9PT0gbnVsbCB8fCBfYyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2MuY2FsbChfYiwgdmFsdWUpKSAhPT0gbnVsbCAmJiBfZCAhPT0gdm9pZCAwID8gX2QgOiBmYWxzZTsgfTtcbmlzLmJsb2IgPSAodmFsdWUpID0+IGlzT2JqZWN0T2ZUeXBlKCdCbG9iJykodmFsdWUpO1xuaXMubnVsbE9yVW5kZWZpbmVkID0gKHZhbHVlKSA9PiBpcy5udWxsXyh2YWx1ZSkgfHwgaXMudW5kZWZpbmVkKHZhbHVlKTtcbmlzLm9iamVjdCA9ICh2YWx1ZSkgPT4gIWlzLm51bGxfKHZhbHVlKSAmJiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyB8fCBpcy5mdW5jdGlvbl8odmFsdWUpKTtcbmlzLml0ZXJhYmxlID0gKHZhbHVlKSA9PiB7IHZhciBfYTsgcmV0dXJuIGlzLmZ1bmN0aW9uXygoX2EgPSB2YWx1ZSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hW1N5bWJvbC5pdGVyYXRvcl0pOyB9O1xuaXMuYXN5bmNJdGVyYWJsZSA9ICh2YWx1ZSkgPT4geyB2YXIgX2E7IHJldHVybiBpcy5mdW5jdGlvbl8oKF9hID0gdmFsdWUpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYVtTeW1ib2wuYXN5bmNJdGVyYXRvcl0pOyB9O1xuaXMuZ2VuZXJhdG9yID0gKHZhbHVlKSA9PiB7IHZhciBfYSwgX2I7IHJldHVybiBpcy5pdGVyYWJsZSh2YWx1ZSkgJiYgaXMuZnVuY3Rpb25fKChfYSA9IHZhbHVlKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EubmV4dCkgJiYgaXMuZnVuY3Rpb25fKChfYiA9IHZhbHVlKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IudGhyb3cpOyB9O1xuaXMuYXN5bmNHZW5lcmF0b3IgPSAodmFsdWUpID0+IGlzLmFzeW5jSXRlcmFibGUodmFsdWUpICYmIGlzLmZ1bmN0aW9uXyh2YWx1ZS5uZXh0KSAmJiBpcy5mdW5jdGlvbl8odmFsdWUudGhyb3cpO1xuaXMubmF0aXZlUHJvbWlzZSA9ICh2YWx1ZSkgPT4gaXNPYmplY3RPZlR5cGUoJ1Byb21pc2UnKSh2YWx1ZSk7XG5jb25zdCBoYXNQcm9taXNlQVBJID0gKHZhbHVlKSA9PiB7XG4gICAgdmFyIF9hLCBfYjtcbiAgICByZXR1cm4gaXMuZnVuY3Rpb25fKChfYSA9IHZhbHVlKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EudGhlbikgJiZcbiAgICAgICAgaXMuZnVuY3Rpb25fKChfYiA9IHZhbHVlKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IuY2F0Y2gpO1xufTtcbmlzLnByb21pc2UgPSAodmFsdWUpID0+IGlzLm5hdGl2ZVByb21pc2UodmFsdWUpIHx8IGhhc1Byb21pc2VBUEkodmFsdWUpO1xuaXMuZ2VuZXJhdG9yRnVuY3Rpb24gPSBpc09iamVjdE9mVHlwZSgnR2VuZXJhdG9yRnVuY3Rpb24nKTtcbmlzLmFzeW5jR2VuZXJhdG9yRnVuY3Rpb24gPSAodmFsdWUpID0+IGdldE9iamVjdFR5cGUodmFsdWUpID09PSAnQXN5bmNHZW5lcmF0b3JGdW5jdGlvbic7XG5pcy5hc3luY0Z1bmN0aW9uID0gKHZhbHVlKSA9PiBnZXRPYmplY3RUeXBlKHZhbHVlKSA9PT0gJ0FzeW5jRnVuY3Rpb24nO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXByb3RvdHlwZS1idWlsdGlucywgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10eXBlc1xuaXMuYm91bmRGdW5jdGlvbiA9ICh2YWx1ZSkgPT4gaXMuZnVuY3Rpb25fKHZhbHVlKSAmJiAhdmFsdWUuaGFzT3duUHJvcGVydHkoJ3Byb3RvdHlwZScpO1xuaXMucmVnRXhwID0gaXNPYmplY3RPZlR5cGUoJ1JlZ0V4cCcpO1xuaXMuZGF0ZSA9IGlzT2JqZWN0T2ZUeXBlKCdEYXRlJyk7XG5pcy5lcnJvciA9IGlzT2JqZWN0T2ZUeXBlKCdFcnJvcicpO1xuaXMubWFwID0gKHZhbHVlKSA9PiBpc09iamVjdE9mVHlwZSgnTWFwJykodmFsdWUpO1xuaXMuc2V0ID0gKHZhbHVlKSA9PiBpc09iamVjdE9mVHlwZSgnU2V0JykodmFsdWUpO1xuaXMud2Vha01hcCA9ICh2YWx1ZSkgPT4gaXNPYmplY3RPZlR5cGUoJ1dlYWtNYXAnKSh2YWx1ZSk7XG5pcy53ZWFrU2V0ID0gKHZhbHVlKSA9PiBpc09iamVjdE9mVHlwZSgnV2Vha1NldCcpKHZhbHVlKTtcbmlzLmludDhBcnJheSA9IGlzT2JqZWN0T2ZUeXBlKCdJbnQ4QXJyYXknKTtcbmlzLnVpbnQ4QXJyYXkgPSBpc09iamVjdE9mVHlwZSgnVWludDhBcnJheScpO1xuaXMudWludDhDbGFtcGVkQXJyYXkgPSBpc09iamVjdE9mVHlwZSgnVWludDhDbGFtcGVkQXJyYXknKTtcbmlzLmludDE2QXJyYXkgPSBpc09iamVjdE9mVHlwZSgnSW50MTZBcnJheScpO1xuaXMudWludDE2QXJyYXkgPSBpc09iamVjdE9mVHlwZSgnVWludDE2QXJyYXknKTtcbmlzLmludDMyQXJyYXkgPSBpc09iamVjdE9mVHlwZSgnSW50MzJBcnJheScpO1xuaXMudWludDMyQXJyYXkgPSBpc09iamVjdE9mVHlwZSgnVWludDMyQXJyYXknKTtcbmlzLmZsb2F0MzJBcnJheSA9IGlzT2JqZWN0T2ZUeXBlKCdGbG9hdDMyQXJyYXknKTtcbmlzLmZsb2F0NjRBcnJheSA9IGlzT2JqZWN0T2ZUeXBlKCdGbG9hdDY0QXJyYXknKTtcbmlzLmJpZ0ludDY0QXJyYXkgPSBpc09iamVjdE9mVHlwZSgnQmlnSW50NjRBcnJheScpO1xuaXMuYmlnVWludDY0QXJyYXkgPSBpc09iamVjdE9mVHlwZSgnQmlnVWludDY0QXJyYXknKTtcbmlzLmFycmF5QnVmZmVyID0gaXNPYmplY3RPZlR5cGUoJ0FycmF5QnVmZmVyJyk7XG5pcy5zaGFyZWRBcnJheUJ1ZmZlciA9IGlzT2JqZWN0T2ZUeXBlKCdTaGFyZWRBcnJheUJ1ZmZlcicpO1xuaXMuZGF0YVZpZXcgPSBpc09iamVjdE9mVHlwZSgnRGF0YVZpZXcnKTtcbmlzLmVudW1DYXNlID0gKHZhbHVlLCB0YXJnZXRFbnVtKSA9PiBPYmplY3QudmFsdWVzKHRhcmdldEVudW0pLmluY2x1ZGVzKHZhbHVlKTtcbmlzLmRpcmVjdEluc3RhbmNlT2YgPSAoaW5zdGFuY2UsIGNsYXNzXykgPT4gT2JqZWN0LmdldFByb3RvdHlwZU9mKGluc3RhbmNlKSA9PT0gY2xhc3NfLnByb3RvdHlwZTtcbmlzLnVybEluc3RhbmNlID0gKHZhbHVlKSA9PiBpc09iamVjdE9mVHlwZSgnVVJMJykodmFsdWUpO1xuaXMudXJsU3RyaW5nID0gKHZhbHVlKSA9PiB7XG4gICAgaWYgKCFpcy5zdHJpbmcodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgICAgbmV3IFVSTCh2YWx1ZSk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tbmV3XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBjYXRjaCAoX2EpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbn07XG4vLyBFeGFtcGxlOiBgaXMudHJ1dGh5ID0gKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgKG5vdCBmYWxzZSB8IG5vdCAwIHwgbm90ICcnIHwgbm90IHVuZGVmaW5lZCB8IG5vdCBudWxsKSA9PiBCb29sZWFuKHZhbHVlKTtgXG5pcy50cnV0aHkgPSAodmFsdWUpID0+IEJvb2xlYW4odmFsdWUpO1xuLy8gRXhhbXBsZTogYGlzLmZhbHN5ID0gKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgKG5vdCB0cnVlIHwgMCB8ICcnIHwgdW5kZWZpbmVkIHwgbnVsbCkgPT4gQm9vbGVhbih2YWx1ZSk7YFxuaXMuZmFsc3kgPSAodmFsdWUpID0+ICF2YWx1ZTtcbmlzLm5hbiA9ICh2YWx1ZSkgPT4gTnVtYmVyLmlzTmFOKHZhbHVlKTtcbmlzLnByaW1pdGl2ZSA9ICh2YWx1ZSkgPT4gaXMubnVsbF8odmFsdWUpIHx8IGlzUHJpbWl0aXZlVHlwZU5hbWUodHlwZW9mIHZhbHVlKTtcbmlzLmludGVnZXIgPSAodmFsdWUpID0+IE51bWJlci5pc0ludGVnZXIodmFsdWUpO1xuaXMuc2FmZUludGVnZXIgPSAodmFsdWUpID0+IE51bWJlci5pc1NhZmVJbnRlZ2VyKHZhbHVlKTtcbmlzLnBsYWluT2JqZWN0ID0gKHZhbHVlKSA9PiB7XG4gICAgLy8gRnJvbTogaHR0cHM6Ly9naXRodWIuY29tL3NpbmRyZXNvcmh1cy9pcy1wbGFpbi1vYmovYmxvYi9tYWluL2luZGV4LmpzXG4gICAgaWYgKHRvU3RyaW5nLmNhbGwodmFsdWUpICE9PSAnW29iamVjdCBPYmplY3RdJykge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGNvbnN0IHByb3RvdHlwZSA9IE9iamVjdC5nZXRQcm90b3R5cGVPZih2YWx1ZSk7XG4gICAgcmV0dXJuIHByb3RvdHlwZSA9PT0gbnVsbCB8fCBwcm90b3R5cGUgPT09IE9iamVjdC5nZXRQcm90b3R5cGVPZih7fSk7XG59O1xuaXMudHlwZWRBcnJheSA9ICh2YWx1ZSkgPT4gaXNUeXBlZEFycmF5TmFtZShnZXRPYmplY3RUeXBlKHZhbHVlKSk7XG5jb25zdCBpc1ZhbGlkTGVuZ3RoID0gKHZhbHVlKSA9PiBpcy5zYWZlSW50ZWdlcih2YWx1ZSkgJiYgdmFsdWUgPj0gMDtcbmlzLmFycmF5TGlrZSA9ICh2YWx1ZSkgPT4gIWlzLm51bGxPclVuZGVmaW5lZCh2YWx1ZSkgJiYgIWlzLmZ1bmN0aW9uXyh2YWx1ZSkgJiYgaXNWYWxpZExlbmd0aCh2YWx1ZS5sZW5ndGgpO1xuaXMuaW5SYW5nZSA9ICh2YWx1ZSwgcmFuZ2UpID0+IHtcbiAgICBpZiAoaXMubnVtYmVyKHJhbmdlKSkge1xuICAgICAgICByZXR1cm4gdmFsdWUgPj0gTWF0aC5taW4oMCwgcmFuZ2UpICYmIHZhbHVlIDw9IE1hdGgubWF4KHJhbmdlLCAwKTtcbiAgICB9XG4gICAgaWYgKGlzLmFycmF5KHJhbmdlKSAmJiByYW5nZS5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlID49IE1hdGgubWluKC4uLnJhbmdlKSAmJiB2YWx1ZSA8PSBNYXRoLm1heCguLi5yYW5nZSk7XG4gICAgfVxuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYEludmFsaWQgcmFuZ2U6ICR7SlNPTi5zdHJpbmdpZnkocmFuZ2UpfWApO1xufTtcbmNvbnN0IE5PREVfVFlQRV9FTEVNRU5UID0gMTtcbmNvbnN0IERPTV9QUk9QRVJUSUVTX1RPX0NIRUNLID0gW1xuICAgICdpbm5lckhUTUwnLFxuICAgICdvd25lckRvY3VtZW50JyxcbiAgICAnc3R5bGUnLFxuICAgICdhdHRyaWJ1dGVzJyxcbiAgICAnbm9kZVZhbHVlJ1xuXTtcbmlzLmRvbUVsZW1lbnQgPSAodmFsdWUpID0+IHtcbiAgICByZXR1cm4gaXMub2JqZWN0KHZhbHVlKSAmJlxuICAgICAgICB2YWx1ZS5ub2RlVHlwZSA9PT0gTk9ERV9UWVBFX0VMRU1FTlQgJiZcbiAgICAgICAgaXMuc3RyaW5nKHZhbHVlLm5vZGVOYW1lKSAmJlxuICAgICAgICAhaXMucGxhaW5PYmplY3QodmFsdWUpICYmXG4gICAgICAgIERPTV9QUk9QRVJUSUVTX1RPX0NIRUNLLmV2ZXJ5KHByb3BlcnR5ID0+IHByb3BlcnR5IGluIHZhbHVlKTtcbn07XG5pcy5vYnNlcnZhYmxlID0gKHZhbHVlKSA9PiB7XG4gICAgdmFyIF9hLCBfYiwgX2MsIF9kO1xuICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdXNlLWV4dGVuZC1uYXRpdmUvbm8tdXNlLWV4dGVuZC1uYXRpdmVcbiAgICBpZiAodmFsdWUgPT09ICgoX2IgPSAoX2EgPSB2YWx1ZSlbU3ltYm9sLm9ic2VydmFibGVdKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IuY2FsbChfYSkpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBpZiAodmFsdWUgPT09ICgoX2QgPSAoX2MgPSB2YWx1ZSlbJ0BAb2JzZXJ2YWJsZSddKSA9PT0gbnVsbCB8fCBfZCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2QuY2FsbChfYykpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG59O1xuaXMubm9kZVN0cmVhbSA9ICh2YWx1ZSkgPT4gaXMub2JqZWN0KHZhbHVlKSAmJiBpcy5mdW5jdGlvbl8odmFsdWUucGlwZSkgJiYgIWlzLm9ic2VydmFibGUodmFsdWUpO1xuaXMuaW5maW5pdGUgPSAodmFsdWUpID0+IHZhbHVlID09PSBJbmZpbml0eSB8fCB2YWx1ZSA9PT0gLUluZmluaXR5O1xuY29uc3QgaXNBYnNvbHV0ZU1vZDIgPSAocmVtYWluZGVyKSA9PiAodmFsdWUpID0+IGlzLmludGVnZXIodmFsdWUpICYmIE1hdGguYWJzKHZhbHVlICUgMikgPT09IHJlbWFpbmRlcjtcbmlzLmV2ZW5JbnRlZ2VyID0gaXNBYnNvbHV0ZU1vZDIoMCk7XG5pcy5vZGRJbnRlZ2VyID0gaXNBYnNvbHV0ZU1vZDIoMSk7XG5pcy5lbXB0eUFycmF5ID0gKHZhbHVlKSA9PiBpcy5hcnJheSh2YWx1ZSkgJiYgdmFsdWUubGVuZ3RoID09PSAwO1xuaXMubm9uRW1wdHlBcnJheSA9ICh2YWx1ZSkgPT4gaXMuYXJyYXkodmFsdWUpICYmIHZhbHVlLmxlbmd0aCA+IDA7XG5pcy5lbXB0eVN0cmluZyA9ICh2YWx1ZSkgPT4gaXMuc3RyaW5nKHZhbHVlKSAmJiB2YWx1ZS5sZW5ndGggPT09IDA7XG5jb25zdCBpc1doaXRlU3BhY2VTdHJpbmcgPSAodmFsdWUpID0+IGlzLnN0cmluZyh2YWx1ZSkgJiYgIS9cXFMvLnRlc3QodmFsdWUpO1xuaXMuZW1wdHlTdHJpbmdPcldoaXRlc3BhY2UgPSAodmFsdWUpID0+IGlzLmVtcHR5U3RyaW5nKHZhbHVlKSB8fCBpc1doaXRlU3BhY2VTdHJpbmcodmFsdWUpO1xuLy8gVE9ETzogVXNlIGBub3QgJydgIHdoZW4gdGhlIGBub3RgIG9wZXJhdG9yIGlzIGF2YWlsYWJsZS5cbmlzLm5vbkVtcHR5U3RyaW5nID0gKHZhbHVlKSA9PiBpcy5zdHJpbmcodmFsdWUpICYmIHZhbHVlLmxlbmd0aCA+IDA7XG4vLyBUT0RPOiBVc2UgYG5vdCAnJ2Agd2hlbiB0aGUgYG5vdGAgb3BlcmF0b3IgaXMgYXZhaWxhYmxlLlxuaXMubm9uRW1wdHlTdHJpbmdBbmROb3RXaGl0ZXNwYWNlID0gKHZhbHVlKSA9PiBpcy5zdHJpbmcodmFsdWUpICYmICFpcy5lbXB0eVN0cmluZ09yV2hpdGVzcGFjZSh2YWx1ZSk7XG5pcy5lbXB0eU9iamVjdCA9ICh2YWx1ZSkgPT4gaXMub2JqZWN0KHZhbHVlKSAmJiAhaXMubWFwKHZhbHVlKSAmJiAhaXMuc2V0KHZhbHVlKSAmJiBPYmplY3Qua2V5cyh2YWx1ZSkubGVuZ3RoID09PSAwO1xuLy8gVE9ETzogVXNlIGBub3RgIG9wZXJhdG9yIGhlcmUgdG8gcmVtb3ZlIGBNYXBgIGFuZCBgU2V0YCBmcm9tIHR5cGUgZ3VhcmQ6XG4vLyAtIGh0dHBzOi8vZ2l0aHViLmNvbS9NaWNyb3NvZnQvVHlwZVNjcmlwdC9wdWxsLzI5MzE3XG5pcy5ub25FbXB0eU9iamVjdCA9ICh2YWx1ZSkgPT4gaXMub2JqZWN0KHZhbHVlKSAmJiAhaXMubWFwKHZhbHVlKSAmJiAhaXMuc2V0KHZhbHVlKSAmJiBPYmplY3Qua2V5cyh2YWx1ZSkubGVuZ3RoID4gMDtcbmlzLmVtcHR5U2V0ID0gKHZhbHVlKSA9PiBpcy5zZXQodmFsdWUpICYmIHZhbHVlLnNpemUgPT09IDA7XG5pcy5ub25FbXB0eVNldCA9ICh2YWx1ZSkgPT4gaXMuc2V0KHZhbHVlKSAmJiB2YWx1ZS5zaXplID4gMDtcbmlzLmVtcHR5TWFwID0gKHZhbHVlKSA9PiBpcy5tYXAodmFsdWUpICYmIHZhbHVlLnNpemUgPT09IDA7XG5pcy5ub25FbXB0eU1hcCA9ICh2YWx1ZSkgPT4gaXMubWFwKHZhbHVlKSAmJiB2YWx1ZS5zaXplID4gMDtcbi8vIGBQcm9wZXJ0eUtleWAgaXMgYW55IHZhbHVlIHRoYXQgY2FuIGJlIHVzZWQgYXMgYW4gb2JqZWN0IGtleSAoc3RyaW5nLCBudW1iZXIsIG9yIHN5bWJvbClcbmlzLnByb3BlcnR5S2V5ID0gKHZhbHVlKSA9PiBpcy5hbnkoW2lzLnN0cmluZywgaXMubnVtYmVyLCBpcy5zeW1ib2xdLCB2YWx1ZSk7XG5pcy5mb3JtRGF0YSA9ICh2YWx1ZSkgPT4gaXNPYmplY3RPZlR5cGUoJ0Zvcm1EYXRhJykodmFsdWUpO1xuaXMudXJsU2VhcmNoUGFyYW1zID0gKHZhbHVlKSA9PiBpc09iamVjdE9mVHlwZSgnVVJMU2VhcmNoUGFyYW1zJykodmFsdWUpO1xuY29uc3QgcHJlZGljYXRlT25BcnJheSA9IChtZXRob2QsIHByZWRpY2F0ZSwgdmFsdWVzKSA9PiB7XG4gICAgaWYgKCFpcy5mdW5jdGlvbl8ocHJlZGljYXRlKSkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBJbnZhbGlkIHByZWRpY2F0ZTogJHtKU09OLnN0cmluZ2lmeShwcmVkaWNhdGUpfWApO1xuICAgIH1cbiAgICBpZiAodmFsdWVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdJbnZhbGlkIG51bWJlciBvZiB2YWx1ZXMnKTtcbiAgICB9XG4gICAgcmV0dXJuIG1ldGhvZC5jYWxsKHZhbHVlcywgcHJlZGljYXRlKTtcbn07XG5pcy5hbnkgPSAocHJlZGljYXRlLCAuLi52YWx1ZXMpID0+IHtcbiAgICBjb25zdCBwcmVkaWNhdGVzID0gaXMuYXJyYXkocHJlZGljYXRlKSA/IHByZWRpY2F0ZSA6IFtwcmVkaWNhdGVdO1xuICAgIHJldHVybiBwcmVkaWNhdGVzLnNvbWUoc2luZ2xlUHJlZGljYXRlID0+IHByZWRpY2F0ZU9uQXJyYXkoQXJyYXkucHJvdG90eXBlLnNvbWUsIHNpbmdsZVByZWRpY2F0ZSwgdmFsdWVzKSk7XG59O1xuaXMuYWxsID0gKHByZWRpY2F0ZSwgLi4udmFsdWVzKSA9PiBwcmVkaWNhdGVPbkFycmF5KEFycmF5LnByb3RvdHlwZS5ldmVyeSwgcHJlZGljYXRlLCB2YWx1ZXMpO1xuY29uc3QgYXNzZXJ0VHlwZSA9IChjb25kaXRpb24sIGRlc2NyaXB0aW9uLCB2YWx1ZSwgb3B0aW9ucyA9IHt9KSA9PiB7XG4gICAgaWYgKCFjb25kaXRpb24pIHtcbiAgICAgICAgY29uc3QgeyBtdWx0aXBsZVZhbHVlcyB9ID0gb3B0aW9ucztcbiAgICAgICAgY29uc3QgdmFsdWVzTWVzc2FnZSA9IG11bHRpcGxlVmFsdWVzID9cbiAgICAgICAgICAgIGByZWNlaXZlZCB2YWx1ZXMgb2YgdHlwZXMgJHtbXG4gICAgICAgICAgICAgICAgLi4ubmV3IFNldCh2YWx1ZS5tYXAoc2luZ2xlVmFsdWUgPT4gYFxcYCR7aXMoc2luZ2xlVmFsdWUpfVxcYGApKVxuICAgICAgICAgICAgXS5qb2luKCcsICcpfWAgOlxuICAgICAgICAgICAgYHJlY2VpdmVkIHZhbHVlIG9mIHR5cGUgXFxgJHtpcyh2YWx1ZSl9XFxgYDtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgRXhwZWN0ZWQgdmFsdWUgd2hpY2ggaXMgXFxgJHtkZXNjcmlwdGlvbn1cXGAsICR7dmFsdWVzTWVzc2FnZX0uYCk7XG4gICAgfVxufTtcbmV4cG9ydHMuYXNzZXJ0ID0ge1xuICAgIC8vIFVua25vd25zLlxuICAgIHVuZGVmaW5lZDogKHZhbHVlKSA9PiBhc3NlcnRUeXBlKGlzLnVuZGVmaW5lZCh2YWx1ZSksICd1bmRlZmluZWQnLCB2YWx1ZSksXG4gICAgc3RyaW5nOiAodmFsdWUpID0+IGFzc2VydFR5cGUoaXMuc3RyaW5nKHZhbHVlKSwgJ3N0cmluZycsIHZhbHVlKSxcbiAgICBudW1iZXI6ICh2YWx1ZSkgPT4gYXNzZXJ0VHlwZShpcy5udW1iZXIodmFsdWUpLCAnbnVtYmVyJywgdmFsdWUpLFxuICAgIGJpZ2ludDogKHZhbHVlKSA9PiBhc3NlcnRUeXBlKGlzLmJpZ2ludCh2YWx1ZSksICdiaWdpbnQnLCB2YWx1ZSksXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHlwZXNcbiAgICBmdW5jdGlvbl86ICh2YWx1ZSkgPT4gYXNzZXJ0VHlwZShpcy5mdW5jdGlvbl8odmFsdWUpLCAnRnVuY3Rpb24nLCB2YWx1ZSksXG4gICAgbnVsbF86ICh2YWx1ZSkgPT4gYXNzZXJ0VHlwZShpcy5udWxsXyh2YWx1ZSksICdudWxsJywgdmFsdWUpLFxuICAgIGNsYXNzXzogKHZhbHVlKSA9PiBhc3NlcnRUeXBlKGlzLmNsYXNzXyh2YWx1ZSksIFwiQ2xhc3NcIiAvKiBjbGFzc18gKi8sIHZhbHVlKSxcbiAgICBib29sZWFuOiAodmFsdWUpID0+IGFzc2VydFR5cGUoaXMuYm9vbGVhbih2YWx1ZSksICdib29sZWFuJywgdmFsdWUpLFxuICAgIHN5bWJvbDogKHZhbHVlKSA9PiBhc3NlcnRUeXBlKGlzLnN5bWJvbCh2YWx1ZSksICdzeW1ib2wnLCB2YWx1ZSksXG4gICAgbnVtZXJpY1N0cmluZzogKHZhbHVlKSA9PiBhc3NlcnRUeXBlKGlzLm51bWVyaWNTdHJpbmcodmFsdWUpLCBcInN0cmluZyB3aXRoIGEgbnVtYmVyXCIgLyogbnVtZXJpY1N0cmluZyAqLywgdmFsdWUpLFxuICAgIGFycmF5OiAodmFsdWUsIGFzc2VydGlvbikgPT4ge1xuICAgICAgICBjb25zdCBhc3NlcnQgPSBhc3NlcnRUeXBlO1xuICAgICAgICBhc3NlcnQoaXMuYXJyYXkodmFsdWUpLCAnQXJyYXknLCB2YWx1ZSk7XG4gICAgICAgIGlmIChhc3NlcnRpb24pIHtcbiAgICAgICAgICAgIHZhbHVlLmZvckVhY2goYXNzZXJ0aW9uKTtcbiAgICAgICAgfVxuICAgIH0sXG4gICAgYnVmZmVyOiAodmFsdWUpID0+IGFzc2VydFR5cGUoaXMuYnVmZmVyKHZhbHVlKSwgJ0J1ZmZlcicsIHZhbHVlKSxcbiAgICBibG9iOiAodmFsdWUpID0+IGFzc2VydFR5cGUoaXMuYmxvYih2YWx1ZSksICdCbG9iJywgdmFsdWUpLFxuICAgIG51bGxPclVuZGVmaW5lZDogKHZhbHVlKSA9PiBhc3NlcnRUeXBlKGlzLm51bGxPclVuZGVmaW5lZCh2YWx1ZSksIFwibnVsbCBvciB1bmRlZmluZWRcIiAvKiBudWxsT3JVbmRlZmluZWQgKi8sIHZhbHVlKSxcbiAgICBvYmplY3Q6ICh2YWx1ZSkgPT4gYXNzZXJ0VHlwZShpcy5vYmplY3QodmFsdWUpLCAnT2JqZWN0JywgdmFsdWUpLFxuICAgIGl0ZXJhYmxlOiAodmFsdWUpID0+IGFzc2VydFR5cGUoaXMuaXRlcmFibGUodmFsdWUpLCBcIkl0ZXJhYmxlXCIgLyogaXRlcmFibGUgKi8sIHZhbHVlKSxcbiAgICBhc3luY0l0ZXJhYmxlOiAodmFsdWUpID0+IGFzc2VydFR5cGUoaXMuYXN5bmNJdGVyYWJsZSh2YWx1ZSksIFwiQXN5bmNJdGVyYWJsZVwiIC8qIGFzeW5jSXRlcmFibGUgKi8sIHZhbHVlKSxcbiAgICBnZW5lcmF0b3I6ICh2YWx1ZSkgPT4gYXNzZXJ0VHlwZShpcy5nZW5lcmF0b3IodmFsdWUpLCAnR2VuZXJhdG9yJywgdmFsdWUpLFxuICAgIGFzeW5jR2VuZXJhdG9yOiAodmFsdWUpID0+IGFzc2VydFR5cGUoaXMuYXN5bmNHZW5lcmF0b3IodmFsdWUpLCAnQXN5bmNHZW5lcmF0b3InLCB2YWx1ZSksXG4gICAgbmF0aXZlUHJvbWlzZTogKHZhbHVlKSA9PiBhc3NlcnRUeXBlKGlzLm5hdGl2ZVByb21pc2UodmFsdWUpLCBcIm5hdGl2ZSBQcm9taXNlXCIgLyogbmF0aXZlUHJvbWlzZSAqLywgdmFsdWUpLFxuICAgIHByb21pc2U6ICh2YWx1ZSkgPT4gYXNzZXJ0VHlwZShpcy5wcm9taXNlKHZhbHVlKSwgJ1Byb21pc2UnLCB2YWx1ZSksXG4gICAgZ2VuZXJhdG9yRnVuY3Rpb246ICh2YWx1ZSkgPT4gYXNzZXJ0VHlwZShpcy5nZW5lcmF0b3JGdW5jdGlvbih2YWx1ZSksICdHZW5lcmF0b3JGdW5jdGlvbicsIHZhbHVlKSxcbiAgICBhc3luY0dlbmVyYXRvckZ1bmN0aW9uOiAodmFsdWUpID0+IGFzc2VydFR5cGUoaXMuYXN5bmNHZW5lcmF0b3JGdW5jdGlvbih2YWx1ZSksICdBc3luY0dlbmVyYXRvckZ1bmN0aW9uJywgdmFsdWUpLFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXR5cGVzXG4gICAgYXN5bmNGdW5jdGlvbjogKHZhbHVlKSA9PiBhc3NlcnRUeXBlKGlzLmFzeW5jRnVuY3Rpb24odmFsdWUpLCAnQXN5bmNGdW5jdGlvbicsIHZhbHVlKSxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10eXBlc1xuICAgIGJvdW5kRnVuY3Rpb246ICh2YWx1ZSkgPT4gYXNzZXJ0VHlwZShpcy5ib3VuZEZ1bmN0aW9uKHZhbHVlKSwgJ0Z1bmN0aW9uJywgdmFsdWUpLFxuICAgIHJlZ0V4cDogKHZhbHVlKSA9PiBhc3NlcnRUeXBlKGlzLnJlZ0V4cCh2YWx1ZSksICdSZWdFeHAnLCB2YWx1ZSksXG4gICAgZGF0ZTogKHZhbHVlKSA9PiBhc3NlcnRUeXBlKGlzLmRhdGUodmFsdWUpLCAnRGF0ZScsIHZhbHVlKSxcbiAgICBlcnJvcjogKHZhbHVlKSA9PiBhc3NlcnRUeXBlKGlzLmVycm9yKHZhbHVlKSwgJ0Vycm9yJywgdmFsdWUpLFxuICAgIG1hcDogKHZhbHVlKSA9PiBhc3NlcnRUeXBlKGlzLm1hcCh2YWx1ZSksICdNYXAnLCB2YWx1ZSksXG4gICAgc2V0OiAodmFsdWUpID0+IGFzc2VydFR5cGUoaXMuc2V0KHZhbHVlKSwgJ1NldCcsIHZhbHVlKSxcbiAgICB3ZWFrTWFwOiAodmFsdWUpID0+IGFzc2VydFR5cGUoaXMud2Vha01hcCh2YWx1ZSksICdXZWFrTWFwJywgdmFsdWUpLFxuICAgIHdlYWtTZXQ6ICh2YWx1ZSkgPT4gYXNzZXJ0VHlwZShpcy53ZWFrU2V0KHZhbHVlKSwgJ1dlYWtTZXQnLCB2YWx1ZSksXG4gICAgaW50OEFycmF5OiAodmFsdWUpID0+IGFzc2VydFR5cGUoaXMuaW50OEFycmF5KHZhbHVlKSwgJ0ludDhBcnJheScsIHZhbHVlKSxcbiAgICB1aW50OEFycmF5OiAodmFsdWUpID0+IGFzc2VydFR5cGUoaXMudWludDhBcnJheSh2YWx1ZSksICdVaW50OEFycmF5JywgdmFsdWUpLFxuICAgIHVpbnQ4Q2xhbXBlZEFycmF5OiAodmFsdWUpID0+IGFzc2VydFR5cGUoaXMudWludDhDbGFtcGVkQXJyYXkodmFsdWUpLCAnVWludDhDbGFtcGVkQXJyYXknLCB2YWx1ZSksXG4gICAgaW50MTZBcnJheTogKHZhbHVlKSA9PiBhc3NlcnRUeXBlKGlzLmludDE2QXJyYXkodmFsdWUpLCAnSW50MTZBcnJheScsIHZhbHVlKSxcbiAgICB1aW50MTZBcnJheTogKHZhbHVlKSA9PiBhc3NlcnRUeXBlKGlzLnVpbnQxNkFycmF5KHZhbHVlKSwgJ1VpbnQxNkFycmF5JywgdmFsdWUpLFxuICAgIGludDMyQXJyYXk6ICh2YWx1ZSkgPT4gYXNzZXJ0VHlwZShpcy5pbnQzMkFycmF5KHZhbHVlKSwgJ0ludDMyQXJyYXknLCB2YWx1ZSksXG4gICAgdWludDMyQXJyYXk6ICh2YWx1ZSkgPT4gYXNzZXJ0VHlwZShpcy51aW50MzJBcnJheSh2YWx1ZSksICdVaW50MzJBcnJheScsIHZhbHVlKSxcbiAgICBmbG9hdDMyQXJyYXk6ICh2YWx1ZSkgPT4gYXNzZXJ0VHlwZShpcy5mbG9hdDMyQXJyYXkodmFsdWUpLCAnRmxvYXQzMkFycmF5JywgdmFsdWUpLFxuICAgIGZsb2F0NjRBcnJheTogKHZhbHVlKSA9PiBhc3NlcnRUeXBlKGlzLmZsb2F0NjRBcnJheSh2YWx1ZSksICdGbG9hdDY0QXJyYXknLCB2YWx1ZSksXG4gICAgYmlnSW50NjRBcnJheTogKHZhbHVlKSA9PiBhc3NlcnRUeXBlKGlzLmJpZ0ludDY0QXJyYXkodmFsdWUpLCAnQmlnSW50NjRBcnJheScsIHZhbHVlKSxcbiAgICBiaWdVaW50NjRBcnJheTogKHZhbHVlKSA9PiBhc3NlcnRUeXBlKGlzLmJpZ1VpbnQ2NEFycmF5KHZhbHVlKSwgJ0JpZ1VpbnQ2NEFycmF5JywgdmFsdWUpLFxuICAgIGFycmF5QnVmZmVyOiAodmFsdWUpID0+IGFzc2VydFR5cGUoaXMuYXJyYXlCdWZmZXIodmFsdWUpLCAnQXJyYXlCdWZmZXInLCB2YWx1ZSksXG4gICAgc2hhcmVkQXJyYXlCdWZmZXI6ICh2YWx1ZSkgPT4gYXNzZXJ0VHlwZShpcy5zaGFyZWRBcnJheUJ1ZmZlcih2YWx1ZSksICdTaGFyZWRBcnJheUJ1ZmZlcicsIHZhbHVlKSxcbiAgICBkYXRhVmlldzogKHZhbHVlKSA9PiBhc3NlcnRUeXBlKGlzLmRhdGFWaWV3KHZhbHVlKSwgJ0RhdGFWaWV3JywgdmFsdWUpLFxuICAgIGVudW1DYXNlOiAodmFsdWUsIHRhcmdldEVudW0pID0+IGFzc2VydFR5cGUoaXMuZW51bUNhc2UodmFsdWUsIHRhcmdldEVudW0pLCAnRW51bUNhc2UnLCB2YWx1ZSksXG4gICAgdXJsSW5zdGFuY2U6ICh2YWx1ZSkgPT4gYXNzZXJ0VHlwZShpcy51cmxJbnN0YW5jZSh2YWx1ZSksICdVUkwnLCB2YWx1ZSksXG4gICAgdXJsU3RyaW5nOiAodmFsdWUpID0+IGFzc2VydFR5cGUoaXMudXJsU3RyaW5nKHZhbHVlKSwgXCJzdHJpbmcgd2l0aCBhIFVSTFwiIC8qIHVybFN0cmluZyAqLywgdmFsdWUpLFxuICAgIHRydXRoeTogKHZhbHVlKSA9PiBhc3NlcnRUeXBlKGlzLnRydXRoeSh2YWx1ZSksIFwidHJ1dGh5XCIgLyogdHJ1dGh5ICovLCB2YWx1ZSksXG4gICAgZmFsc3k6ICh2YWx1ZSkgPT4gYXNzZXJ0VHlwZShpcy5mYWxzeSh2YWx1ZSksIFwiZmFsc3lcIiAvKiBmYWxzeSAqLywgdmFsdWUpLFxuICAgIG5hbjogKHZhbHVlKSA9PiBhc3NlcnRUeXBlKGlzLm5hbih2YWx1ZSksIFwiTmFOXCIgLyogbmFuICovLCB2YWx1ZSksXG4gICAgcHJpbWl0aXZlOiAodmFsdWUpID0+IGFzc2VydFR5cGUoaXMucHJpbWl0aXZlKHZhbHVlKSwgXCJwcmltaXRpdmVcIiAvKiBwcmltaXRpdmUgKi8sIHZhbHVlKSxcbiAgICBpbnRlZ2VyOiAodmFsdWUpID0+IGFzc2VydFR5cGUoaXMuaW50ZWdlcih2YWx1ZSksIFwiaW50ZWdlclwiIC8qIGludGVnZXIgKi8sIHZhbHVlKSxcbiAgICBzYWZlSW50ZWdlcjogKHZhbHVlKSA9PiBhc3NlcnRUeXBlKGlzLnNhZmVJbnRlZ2VyKHZhbHVlKSwgXCJpbnRlZ2VyXCIgLyogc2FmZUludGVnZXIgKi8sIHZhbHVlKSxcbiAgICBwbGFpbk9iamVjdDogKHZhbHVlKSA9PiBhc3NlcnRUeXBlKGlzLnBsYWluT2JqZWN0KHZhbHVlKSwgXCJwbGFpbiBvYmplY3RcIiAvKiBwbGFpbk9iamVjdCAqLywgdmFsdWUpLFxuICAgIHR5cGVkQXJyYXk6ICh2YWx1ZSkgPT4gYXNzZXJ0VHlwZShpcy50eXBlZEFycmF5KHZhbHVlKSwgXCJUeXBlZEFycmF5XCIgLyogdHlwZWRBcnJheSAqLywgdmFsdWUpLFxuICAgIGFycmF5TGlrZTogKHZhbHVlKSA9PiBhc3NlcnRUeXBlKGlzLmFycmF5TGlrZSh2YWx1ZSksIFwiYXJyYXktbGlrZVwiIC8qIGFycmF5TGlrZSAqLywgdmFsdWUpLFxuICAgIGRvbUVsZW1lbnQ6ICh2YWx1ZSkgPT4gYXNzZXJ0VHlwZShpcy5kb21FbGVtZW50KHZhbHVlKSwgXCJIVE1MRWxlbWVudFwiIC8qIGRvbUVsZW1lbnQgKi8sIHZhbHVlKSxcbiAgICBvYnNlcnZhYmxlOiAodmFsdWUpID0+IGFzc2VydFR5cGUoaXMub2JzZXJ2YWJsZSh2YWx1ZSksICdPYnNlcnZhYmxlJywgdmFsdWUpLFxuICAgIG5vZGVTdHJlYW06ICh2YWx1ZSkgPT4gYXNzZXJ0VHlwZShpcy5ub2RlU3RyZWFtKHZhbHVlKSwgXCJOb2RlLmpzIFN0cmVhbVwiIC8qIG5vZGVTdHJlYW0gKi8sIHZhbHVlKSxcbiAgICBpbmZpbml0ZTogKHZhbHVlKSA9PiBhc3NlcnRUeXBlKGlzLmluZmluaXRlKHZhbHVlKSwgXCJpbmZpbml0ZSBudW1iZXJcIiAvKiBpbmZpbml0ZSAqLywgdmFsdWUpLFxuICAgIGVtcHR5QXJyYXk6ICh2YWx1ZSkgPT4gYXNzZXJ0VHlwZShpcy5lbXB0eUFycmF5KHZhbHVlKSwgXCJlbXB0eSBhcnJheVwiIC8qIGVtcHR5QXJyYXkgKi8sIHZhbHVlKSxcbiAgICBub25FbXB0eUFycmF5OiAodmFsdWUpID0+IGFzc2VydFR5cGUoaXMubm9uRW1wdHlBcnJheSh2YWx1ZSksIFwibm9uLWVtcHR5IGFycmF5XCIgLyogbm9uRW1wdHlBcnJheSAqLywgdmFsdWUpLFxuICAgIGVtcHR5U3RyaW5nOiAodmFsdWUpID0+IGFzc2VydFR5cGUoaXMuZW1wdHlTdHJpbmcodmFsdWUpLCBcImVtcHR5IHN0cmluZ1wiIC8qIGVtcHR5U3RyaW5nICovLCB2YWx1ZSksXG4gICAgZW1wdHlTdHJpbmdPcldoaXRlc3BhY2U6ICh2YWx1ZSkgPT4gYXNzZXJ0VHlwZShpcy5lbXB0eVN0cmluZ09yV2hpdGVzcGFjZSh2YWx1ZSksIFwiZW1wdHkgc3RyaW5nIG9yIHdoaXRlc3BhY2VcIiAvKiBlbXB0eVN0cmluZ09yV2hpdGVzcGFjZSAqLywgdmFsdWUpLFxuICAgIG5vbkVtcHR5U3RyaW5nOiAodmFsdWUpID0+IGFzc2VydFR5cGUoaXMubm9uRW1wdHlTdHJpbmcodmFsdWUpLCBcIm5vbi1lbXB0eSBzdHJpbmdcIiAvKiBub25FbXB0eVN0cmluZyAqLywgdmFsdWUpLFxuICAgIG5vbkVtcHR5U3RyaW5nQW5kTm90V2hpdGVzcGFjZTogKHZhbHVlKSA9PiBhc3NlcnRUeXBlKGlzLm5vbkVtcHR5U3RyaW5nQW5kTm90V2hpdGVzcGFjZSh2YWx1ZSksIFwibm9uLWVtcHR5IHN0cmluZyBhbmQgbm90IHdoaXRlc3BhY2VcIiAvKiBub25FbXB0eVN0cmluZ0FuZE5vdFdoaXRlc3BhY2UgKi8sIHZhbHVlKSxcbiAgICBlbXB0eU9iamVjdDogKHZhbHVlKSA9PiBhc3NlcnRUeXBlKGlzLmVtcHR5T2JqZWN0KHZhbHVlKSwgXCJlbXB0eSBvYmplY3RcIiAvKiBlbXB0eU9iamVjdCAqLywgdmFsdWUpLFxuICAgIG5vbkVtcHR5T2JqZWN0OiAodmFsdWUpID0+IGFzc2VydFR5cGUoaXMubm9uRW1wdHlPYmplY3QodmFsdWUpLCBcIm5vbi1lbXB0eSBvYmplY3RcIiAvKiBub25FbXB0eU9iamVjdCAqLywgdmFsdWUpLFxuICAgIGVtcHR5U2V0OiAodmFsdWUpID0+IGFzc2VydFR5cGUoaXMuZW1wdHlTZXQodmFsdWUpLCBcImVtcHR5IHNldFwiIC8qIGVtcHR5U2V0ICovLCB2YWx1ZSksXG4gICAgbm9uRW1wdHlTZXQ6ICh2YWx1ZSkgPT4gYXNzZXJ0VHlwZShpcy5ub25FbXB0eVNldCh2YWx1ZSksIFwibm9uLWVtcHR5IHNldFwiIC8qIG5vbkVtcHR5U2V0ICovLCB2YWx1ZSksXG4gICAgZW1wdHlNYXA6ICh2YWx1ZSkgPT4gYXNzZXJ0VHlwZShpcy5lbXB0eU1hcCh2YWx1ZSksIFwiZW1wdHkgbWFwXCIgLyogZW1wdHlNYXAgKi8sIHZhbHVlKSxcbiAgICBub25FbXB0eU1hcDogKHZhbHVlKSA9PiBhc3NlcnRUeXBlKGlzLm5vbkVtcHR5TWFwKHZhbHVlKSwgXCJub24tZW1wdHkgbWFwXCIgLyogbm9uRW1wdHlNYXAgKi8sIHZhbHVlKSxcbiAgICBwcm9wZXJ0eUtleTogKHZhbHVlKSA9PiBhc3NlcnRUeXBlKGlzLnByb3BlcnR5S2V5KHZhbHVlKSwgJ1Byb3BlcnR5S2V5JywgdmFsdWUpLFxuICAgIGZvcm1EYXRhOiAodmFsdWUpID0+IGFzc2VydFR5cGUoaXMuZm9ybURhdGEodmFsdWUpLCAnRm9ybURhdGEnLCB2YWx1ZSksXG4gICAgdXJsU2VhcmNoUGFyYW1zOiAodmFsdWUpID0+IGFzc2VydFR5cGUoaXMudXJsU2VhcmNoUGFyYW1zKHZhbHVlKSwgJ1VSTFNlYXJjaFBhcmFtcycsIHZhbHVlKSxcbiAgICAvLyBOdW1iZXJzLlxuICAgIGV2ZW5JbnRlZ2VyOiAodmFsdWUpID0+IGFzc2VydFR5cGUoaXMuZXZlbkludGVnZXIodmFsdWUpLCBcImV2ZW4gaW50ZWdlclwiIC8qIGV2ZW5JbnRlZ2VyICovLCB2YWx1ZSksXG4gICAgb2RkSW50ZWdlcjogKHZhbHVlKSA9PiBhc3NlcnRUeXBlKGlzLm9kZEludGVnZXIodmFsdWUpLCBcIm9kZCBpbnRlZ2VyXCIgLyogb2RkSW50ZWdlciAqLywgdmFsdWUpLFxuICAgIC8vIFR3byBhcmd1bWVudHMuXG4gICAgZGlyZWN0SW5zdGFuY2VPZjogKGluc3RhbmNlLCBjbGFzc18pID0+IGFzc2VydFR5cGUoaXMuZGlyZWN0SW5zdGFuY2VPZihpbnN0YW5jZSwgY2xhc3NfKSwgXCJUXCIgLyogZGlyZWN0SW5zdGFuY2VPZiAqLywgaW5zdGFuY2UpLFxuICAgIGluUmFuZ2U6ICh2YWx1ZSwgcmFuZ2UpID0+IGFzc2VydFR5cGUoaXMuaW5SYW5nZSh2YWx1ZSwgcmFuZ2UpLCBcImluIHJhbmdlXCIgLyogaW5SYW5nZSAqLywgdmFsdWUpLFxuICAgIC8vIFZhcmlhZGljIGZ1bmN0aW9ucy5cbiAgICBhbnk6IChwcmVkaWNhdGUsIC4uLnZhbHVlcykgPT4ge1xuICAgICAgICByZXR1cm4gYXNzZXJ0VHlwZShpcy5hbnkocHJlZGljYXRlLCAuLi52YWx1ZXMpLCBcInByZWRpY2F0ZSByZXR1cm5zIHRydXRoeSBmb3IgYW55IHZhbHVlXCIgLyogYW55ICovLCB2YWx1ZXMsIHsgbXVsdGlwbGVWYWx1ZXM6IHRydWUgfSk7XG4gICAgfSxcbiAgICBhbGw6IChwcmVkaWNhdGUsIC4uLnZhbHVlcykgPT4gYXNzZXJ0VHlwZShpcy5hbGwocHJlZGljYXRlLCAuLi52YWx1ZXMpLCBcInByZWRpY2F0ZSByZXR1cm5zIHRydXRoeSBmb3IgYWxsIHZhbHVlc1wiIC8qIGFsbCAqLywgdmFsdWVzLCB7IG11bHRpcGxlVmFsdWVzOiB0cnVlIH0pXG59O1xuLy8gU29tZSBmZXcga2V5d29yZHMgYXJlIHJlc2VydmVkLCBidXQgd2UnbGwgcG9wdWxhdGUgdGhlbSBmb3IgTm9kZS5qcyB1c2Vyc1xuLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9NaWNyb3NvZnQvVHlwZVNjcmlwdC9pc3N1ZXMvMjUzNlxuT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoaXMsIHtcbiAgICBjbGFzczoge1xuICAgICAgICB2YWx1ZTogaXMuY2xhc3NfXG4gICAgfSxcbiAgICBmdW5jdGlvbjoge1xuICAgICAgICB2YWx1ZTogaXMuZnVuY3Rpb25fXG4gICAgfSxcbiAgICBudWxsOiB7XG4gICAgICAgIHZhbHVlOiBpcy5udWxsX1xuICAgIH1cbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZXhwb3J0cy5hc3NlcnQsIHtcbiAgICBjbGFzczoge1xuICAgICAgICB2YWx1ZTogZXhwb3J0cy5hc3NlcnQuY2xhc3NfXG4gICAgfSxcbiAgICBmdW5jdGlvbjoge1xuICAgICAgICB2YWx1ZTogZXhwb3J0cy5hc3NlcnQuZnVuY3Rpb25fXG4gICAgfSxcbiAgICBudWxsOiB7XG4gICAgICAgIHZhbHVlOiBleHBvcnRzLmFzc2VydC5udWxsX1xuICAgIH1cbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gaXM7XG4vLyBGb3IgQ29tbW9uSlMgZGVmYXVsdCBleHBvcnQgc3VwcG9ydFxubW9kdWxlLmV4cG9ydHMgPSBpcztcbm1vZHVsZS5leHBvcnRzLmRlZmF1bHQgPSBpcztcbm1vZHVsZS5leHBvcnRzLmFzc2VydCA9IGV4cG9ydHMuYXNzZXJ0O1xuIiwgIid1c2Ugc3RyaWN0JztcblxuY2xhc3MgQ2FuY2VsRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG5cdGNvbnN0cnVjdG9yKHJlYXNvbikge1xuXHRcdHN1cGVyKHJlYXNvbiB8fCAnUHJvbWlzZSB3YXMgY2FuY2VsZWQnKTtcblx0XHR0aGlzLm5hbWUgPSAnQ2FuY2VsRXJyb3InO1xuXHR9XG5cblx0Z2V0IGlzQ2FuY2VsZWQoKSB7XG5cdFx0cmV0dXJuIHRydWU7XG5cdH1cbn1cblxuY2xhc3MgUENhbmNlbGFibGUge1xuXHRzdGF0aWMgZm4odXNlckZuKSB7XG5cdFx0cmV0dXJuICguLi5hcmd1bWVudHNfKSA9PiB7XG5cdFx0XHRyZXR1cm4gbmV3IFBDYW5jZWxhYmxlKChyZXNvbHZlLCByZWplY3QsIG9uQ2FuY2VsKSA9PiB7XG5cdFx0XHRcdGFyZ3VtZW50c18ucHVzaChvbkNhbmNlbCk7XG5cdFx0XHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcm9taXNlL3ByZWZlci1hd2FpdC10by10aGVuXG5cdFx0XHRcdHVzZXJGbiguLi5hcmd1bWVudHNfKS50aGVuKHJlc29sdmUsIHJlamVjdCk7XG5cdFx0XHR9KTtcblx0XHR9O1xuXHR9XG5cblx0Y29uc3RydWN0b3IoZXhlY3V0b3IpIHtcblx0XHR0aGlzLl9jYW5jZWxIYW5kbGVycyA9IFtdO1xuXHRcdHRoaXMuX2lzUGVuZGluZyA9IHRydWU7XG5cdFx0dGhpcy5faXNDYW5jZWxlZCA9IGZhbHNlO1xuXHRcdHRoaXMuX3JlamVjdE9uQ2FuY2VsID0gdHJ1ZTtcblxuXHRcdHRoaXMuX3Byb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG5cdFx0XHR0aGlzLl9yZWplY3QgPSByZWplY3Q7XG5cblx0XHRcdGNvbnN0IG9uUmVzb2x2ZSA9IHZhbHVlID0+IHtcblx0XHRcdFx0aWYgKCF0aGlzLl9pc0NhbmNlbGVkIHx8ICFvbkNhbmNlbC5zaG91bGRSZWplY3QpIHtcblx0XHRcdFx0XHR0aGlzLl9pc1BlbmRpbmcgPSBmYWxzZTtcblx0XHRcdFx0XHRyZXNvbHZlKHZhbHVlKTtcblx0XHRcdFx0fVxuXHRcdFx0fTtcblxuXHRcdFx0Y29uc3Qgb25SZWplY3QgPSBlcnJvciA9PiB7XG5cdFx0XHRcdHRoaXMuX2lzUGVuZGluZyA9IGZhbHNlO1xuXHRcdFx0XHRyZWplY3QoZXJyb3IpO1xuXHRcdFx0fTtcblxuXHRcdFx0Y29uc3Qgb25DYW5jZWwgPSBoYW5kbGVyID0+IHtcblx0XHRcdFx0aWYgKCF0aGlzLl9pc1BlbmRpbmcpIHtcblx0XHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoJ1RoZSBgb25DYW5jZWxgIGhhbmRsZXIgd2FzIGF0dGFjaGVkIGFmdGVyIHRoZSBwcm9taXNlIHNldHRsZWQuJyk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHR0aGlzLl9jYW5jZWxIYW5kbGVycy5wdXNoKGhhbmRsZXIpO1xuXHRcdFx0fTtcblxuXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnRpZXMob25DYW5jZWwsIHtcblx0XHRcdFx0c2hvdWxkUmVqZWN0OiB7XG5cdFx0XHRcdFx0Z2V0OiAoKSA9PiB0aGlzLl9yZWplY3RPbkNhbmNlbCxcblx0XHRcdFx0XHRzZXQ6IGJvb2xlYW4gPT4ge1xuXHRcdFx0XHRcdFx0dGhpcy5fcmVqZWN0T25DYW5jZWwgPSBib29sZWFuO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cblx0XHRcdHJldHVybiBleGVjdXRvcihvblJlc29sdmUsIG9uUmVqZWN0LCBvbkNhbmNlbCk7XG5cdFx0fSk7XG5cdH1cblxuXHR0aGVuKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKSB7XG5cdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByb21pc2UvcHJlZmVyLWF3YWl0LXRvLXRoZW5cblx0XHRyZXR1cm4gdGhpcy5fcHJvbWlzZS50aGVuKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKTtcblx0fVxuXG5cdGNhdGNoKG9uUmVqZWN0ZWQpIHtcblx0XHRyZXR1cm4gdGhpcy5fcHJvbWlzZS5jYXRjaChvblJlamVjdGVkKTtcblx0fVxuXG5cdGZpbmFsbHkob25GaW5hbGx5KSB7XG5cdFx0cmV0dXJuIHRoaXMuX3Byb21pc2UuZmluYWxseShvbkZpbmFsbHkpO1xuXHR9XG5cblx0Y2FuY2VsKHJlYXNvbikge1xuXHRcdGlmICghdGhpcy5faXNQZW5kaW5nIHx8IHRoaXMuX2lzQ2FuY2VsZWQpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHR0aGlzLl9pc0NhbmNlbGVkID0gdHJ1ZTtcblxuXHRcdGlmICh0aGlzLl9jYW5jZWxIYW5kbGVycy5sZW5ndGggPiAwKSB7XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRmb3IgKGNvbnN0IGhhbmRsZXIgb2YgdGhpcy5fY2FuY2VsSGFuZGxlcnMpIHtcblx0XHRcdFx0XHRoYW5kbGVyKCk7XG5cdFx0XHRcdH1cblx0XHRcdH0gY2F0Y2ggKGVycm9yKSB7XG5cdFx0XHRcdHRoaXMuX3JlamVjdChlcnJvcik7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRpZiAodGhpcy5fcmVqZWN0T25DYW5jZWwpIHtcblx0XHRcdHRoaXMuX3JlamVjdChuZXcgQ2FuY2VsRXJyb3IocmVhc29uKSk7XG5cdFx0fVxuXHR9XG5cblx0Z2V0IGlzQ2FuY2VsZWQoKSB7XG5cdFx0cmV0dXJuIHRoaXMuX2lzQ2FuY2VsZWQ7XG5cdH1cbn1cblxuT2JqZWN0LnNldFByb3RvdHlwZU9mKFBDYW5jZWxhYmxlLnByb3RvdHlwZSwgUHJvbWlzZS5wcm90b3R5cGUpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFBDYW5jZWxhYmxlO1xubW9kdWxlLmV4cG9ydHMuQ2FuY2VsRXJyb3IgPSBDYW5jZWxFcnJvcjtcbiIsICJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmZ1bmN0aW9uIGlzVExTU29ja2V0KHNvY2tldCkge1xuICAgIHJldHVybiBzb2NrZXQuZW5jcnlwdGVkO1xufVxuY29uc3QgZGVmZXJUb0Nvbm5lY3QgPSAoc29ja2V0LCBmbikgPT4ge1xuICAgIGxldCBsaXN0ZW5lcnM7XG4gICAgaWYgKHR5cGVvZiBmbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBjb25zdCBjb25uZWN0ID0gZm47XG4gICAgICAgIGxpc3RlbmVycyA9IHsgY29ubmVjdCB9O1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgbGlzdGVuZXJzID0gZm47XG4gICAgfVxuICAgIGNvbnN0IGhhc0Nvbm5lY3RMaXN0ZW5lciA9IHR5cGVvZiBsaXN0ZW5lcnMuY29ubmVjdCA9PT0gJ2Z1bmN0aW9uJztcbiAgICBjb25zdCBoYXNTZWN1cmVDb25uZWN0TGlzdGVuZXIgPSB0eXBlb2YgbGlzdGVuZXJzLnNlY3VyZUNvbm5lY3QgPT09ICdmdW5jdGlvbic7XG4gICAgY29uc3QgaGFzQ2xvc2VMaXN0ZW5lciA9IHR5cGVvZiBsaXN0ZW5lcnMuY2xvc2UgPT09ICdmdW5jdGlvbic7XG4gICAgY29uc3Qgb25Db25uZWN0ID0gKCkgPT4ge1xuICAgICAgICBpZiAoaGFzQ29ubmVjdExpc3RlbmVyKSB7XG4gICAgICAgICAgICBsaXN0ZW5lcnMuY29ubmVjdCgpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc1RMU1NvY2tldChzb2NrZXQpICYmIGhhc1NlY3VyZUNvbm5lY3RMaXN0ZW5lcikge1xuICAgICAgICAgICAgaWYgKHNvY2tldC5hdXRob3JpemVkKSB7XG4gICAgICAgICAgICAgICAgbGlzdGVuZXJzLnNlY3VyZUNvbm5lY3QoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKCFzb2NrZXQuYXV0aG9yaXphdGlvbkVycm9yKSB7XG4gICAgICAgICAgICAgICAgc29ja2V0Lm9uY2UoJ3NlY3VyZUNvbm5lY3QnLCBsaXN0ZW5lcnMuc2VjdXJlQ29ubmVjdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGhhc0Nsb3NlTGlzdGVuZXIpIHtcbiAgICAgICAgICAgIHNvY2tldC5vbmNlKCdjbG9zZScsIGxpc3RlbmVycy5jbG9zZSk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIGlmIChzb2NrZXQud3JpdGFibGUgJiYgIXNvY2tldC5jb25uZWN0aW5nKSB7XG4gICAgICAgIG9uQ29ubmVjdCgpO1xuICAgIH1cbiAgICBlbHNlIGlmIChzb2NrZXQuY29ubmVjdGluZykge1xuICAgICAgICBzb2NrZXQub25jZSgnY29ubmVjdCcsIG9uQ29ubmVjdCk7XG4gICAgfVxuICAgIGVsc2UgaWYgKHNvY2tldC5kZXN0cm95ZWQgJiYgaGFzQ2xvc2VMaXN0ZW5lcikge1xuICAgICAgICBsaXN0ZW5lcnMuY2xvc2Uoc29ja2V0Ll9oYWRFcnJvcik7XG4gICAgfVxufTtcbmV4cG9ydHMuZGVmYXVsdCA9IGRlZmVyVG9Db25uZWN0O1xuLy8gRm9yIENvbW1vbkpTIGRlZmF1bHQgZXhwb3J0IHN1cHBvcnRcbm1vZHVsZS5leHBvcnRzID0gZGVmZXJUb0Nvbm5lY3Q7XG5tb2R1bGUuZXhwb3J0cy5kZWZhdWx0ID0gZGVmZXJUb0Nvbm5lY3Q7XG4iLCAiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5jb25zdCBkZWZlcl90b19jb25uZWN0XzEgPSByZXF1aXJlKFwiZGVmZXItdG8tY29ubmVjdFwiKTtcbmNvbnN0IHV0aWxfMSA9IHJlcXVpcmUoXCJ1dGlsXCIpO1xuY29uc3Qgbm9kZWpzTWFqb3JWZXJzaW9uID0gTnVtYmVyKHByb2Nlc3MudmVyc2lvbnMubm9kZS5zcGxpdCgnLicpWzBdKTtcbmNvbnN0IHRpbWVyID0gKHJlcXVlc3QpID0+IHtcbiAgICBpZiAocmVxdWVzdC50aW1pbmdzKSB7XG4gICAgICAgIHJldHVybiByZXF1ZXN0LnRpbWluZ3M7XG4gICAgfVxuICAgIGNvbnN0IHRpbWluZ3MgPSB7XG4gICAgICAgIHN0YXJ0OiBEYXRlLm5vdygpLFxuICAgICAgICBzb2NrZXQ6IHVuZGVmaW5lZCxcbiAgICAgICAgbG9va3VwOiB1bmRlZmluZWQsXG4gICAgICAgIGNvbm5lY3Q6IHVuZGVmaW5lZCxcbiAgICAgICAgc2VjdXJlQ29ubmVjdDogdW5kZWZpbmVkLFxuICAgICAgICB1cGxvYWQ6IHVuZGVmaW5lZCxcbiAgICAgICAgcmVzcG9uc2U6IHVuZGVmaW5lZCxcbiAgICAgICAgZW5kOiB1bmRlZmluZWQsXG4gICAgICAgIGVycm9yOiB1bmRlZmluZWQsXG4gICAgICAgIGFib3J0OiB1bmRlZmluZWQsXG4gICAgICAgIHBoYXNlczoge1xuICAgICAgICAgICAgd2FpdDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgZG5zOiB1bmRlZmluZWQsXG4gICAgICAgICAgICB0Y3A6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHRsczogdW5kZWZpbmVkLFxuICAgICAgICAgICAgcmVxdWVzdDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgZmlyc3RCeXRlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBkb3dubG9hZDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgdG90YWw6IHVuZGVmaW5lZFxuICAgICAgICB9XG4gICAgfTtcbiAgICByZXF1ZXN0LnRpbWluZ3MgPSB0aW1pbmdzO1xuICAgIGNvbnN0IGhhbmRsZUVycm9yID0gKG9yaWdpbikgPT4ge1xuICAgICAgICBjb25zdCBlbWl0ID0gb3JpZ2luLmVtaXQuYmluZChvcmlnaW4pO1xuICAgICAgICBvcmlnaW4uZW1pdCA9IChldmVudCwgLi4uYXJncykgPT4ge1xuICAgICAgICAgICAgLy8gQ2F0Y2hlcyB0aGUgYGVycm9yYCBldmVudFxuICAgICAgICAgICAgaWYgKGV2ZW50ID09PSAnZXJyb3InKSB7XG4gICAgICAgICAgICAgICAgdGltaW5ncy5lcnJvciA9IERhdGUubm93KCk7XG4gICAgICAgICAgICAgICAgdGltaW5ncy5waGFzZXMudG90YWwgPSB0aW1pbmdzLmVycm9yIC0gdGltaW5ncy5zdGFydDtcbiAgICAgICAgICAgICAgICBvcmlnaW4uZW1pdCA9IGVtaXQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBTYXZlcyB0aGUgb3JpZ2luYWwgYmVoYXZpb3JcbiAgICAgICAgICAgIHJldHVybiBlbWl0KGV2ZW50LCAuLi5hcmdzKTtcbiAgICAgICAgfTtcbiAgICB9O1xuICAgIGhhbmRsZUVycm9yKHJlcXVlc3QpO1xuICAgIGNvbnN0IG9uQWJvcnQgPSAoKSA9PiB7XG4gICAgICAgIHRpbWluZ3MuYWJvcnQgPSBEYXRlLm5vdygpO1xuICAgICAgICAvLyBMZXQgdGhlIGBlbmRgIHJlc3BvbnNlIGV2ZW50IGJlIHJlc3BvbnNpYmxlIGZvciBzZXR0aW5nIHRoZSB0b3RhbCBwaGFzZSxcbiAgICAgICAgLy8gdW5sZXNzIHRoZSBOb2RlLmpzIG1ham9yIHZlcnNpb24gaXMgPj0gMTMuXG4gICAgICAgIGlmICghdGltaW5ncy5yZXNwb25zZSB8fCBub2RlanNNYWpvclZlcnNpb24gPj0gMTMpIHtcbiAgICAgICAgICAgIHRpbWluZ3MucGhhc2VzLnRvdGFsID0gRGF0ZS5ub3coKSAtIHRpbWluZ3Muc3RhcnQ7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHJlcXVlc3QucHJlcGVuZE9uY2VMaXN0ZW5lcignYWJvcnQnLCBvbkFib3J0KTtcbiAgICBjb25zdCBvblNvY2tldCA9IChzb2NrZXQpID0+IHtcbiAgICAgICAgdGltaW5ncy5zb2NrZXQgPSBEYXRlLm5vdygpO1xuICAgICAgICB0aW1pbmdzLnBoYXNlcy53YWl0ID0gdGltaW5ncy5zb2NrZXQgLSB0aW1pbmdzLnN0YXJ0O1xuICAgICAgICBpZiAodXRpbF8xLnR5cGVzLmlzUHJveHkoc29ja2V0KSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGxvb2t1cExpc3RlbmVyID0gKCkgPT4ge1xuICAgICAgICAgICAgdGltaW5ncy5sb29rdXAgPSBEYXRlLm5vdygpO1xuICAgICAgICAgICAgdGltaW5ncy5waGFzZXMuZG5zID0gdGltaW5ncy5sb29rdXAgLSB0aW1pbmdzLnNvY2tldDtcbiAgICAgICAgfTtcbiAgICAgICAgc29ja2V0LnByZXBlbmRPbmNlTGlzdGVuZXIoJ2xvb2t1cCcsIGxvb2t1cExpc3RlbmVyKTtcbiAgICAgICAgZGVmZXJfdG9fY29ubmVjdF8xLmRlZmF1bHQoc29ja2V0LCB7XG4gICAgICAgICAgICBjb25uZWN0OiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGltaW5ncy5jb25uZWN0ID0gRGF0ZS5ub3coKTtcbiAgICAgICAgICAgICAgICBpZiAodGltaW5ncy5sb29rdXAgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICBzb2NrZXQucmVtb3ZlTGlzdGVuZXIoJ2xvb2t1cCcsIGxvb2t1cExpc3RlbmVyKTtcbiAgICAgICAgICAgICAgICAgICAgdGltaW5ncy5sb29rdXAgPSB0aW1pbmdzLmNvbm5lY3Q7XG4gICAgICAgICAgICAgICAgICAgIHRpbWluZ3MucGhhc2VzLmRucyA9IHRpbWluZ3MubG9va3VwIC0gdGltaW5ncy5zb2NrZXQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRpbWluZ3MucGhhc2VzLnRjcCA9IHRpbWluZ3MuY29ubmVjdCAtIHRpbWluZ3MubG9va3VwO1xuICAgICAgICAgICAgICAgIC8vIFRoaXMgY2FsbGJhY2sgaXMgY2FsbGVkIGJlZm9yZSBmbHVzaGluZyBhbnkgZGF0YSxcbiAgICAgICAgICAgICAgICAvLyBzbyB3ZSBkb24ndCBuZWVkIHRvIHNldCBgdGltaW5ncy5waGFzZXMucmVxdWVzdGAgaGVyZS5cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzZWN1cmVDb25uZWN0OiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGltaW5ncy5zZWN1cmVDb25uZWN0ID0gRGF0ZS5ub3coKTtcbiAgICAgICAgICAgICAgICB0aW1pbmdzLnBoYXNlcy50bHMgPSB0aW1pbmdzLnNlY3VyZUNvbm5lY3QgLSB0aW1pbmdzLmNvbm5lY3Q7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgaWYgKHJlcXVlc3Quc29ja2V0KSB7XG4gICAgICAgIG9uU29ja2V0KHJlcXVlc3Quc29ja2V0KTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHJlcXVlc3QucHJlcGVuZE9uY2VMaXN0ZW5lcignc29ja2V0Jywgb25Tb2NrZXQpO1xuICAgIH1cbiAgICBjb25zdCBvblVwbG9hZCA9ICgpID0+IHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICB0aW1pbmdzLnVwbG9hZCA9IERhdGUubm93KCk7XG4gICAgICAgIHRpbWluZ3MucGhhc2VzLnJlcXVlc3QgPSB0aW1pbmdzLnVwbG9hZCAtICgoX2EgPSB0aW1pbmdzLnNlY3VyZUNvbm5lY3QpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IHRpbWluZ3MuY29ubmVjdCk7XG4gICAgfTtcbiAgICBjb25zdCB3cml0YWJsZUZpbmlzaGVkID0gKCkgPT4ge1xuICAgICAgICBpZiAodHlwZW9mIHJlcXVlc3Qud3JpdGFibGVGaW5pc2hlZCA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVxdWVzdC53cml0YWJsZUZpbmlzaGVkO1xuICAgICAgICB9XG4gICAgICAgIC8vIE5vZGUuanMgZG9lc24ndCBoYXZlIGByZXF1ZXN0LndyaXRhYmxlRmluaXNoZWRgIHByb3BlcnR5XG4gICAgICAgIHJldHVybiByZXF1ZXN0LmZpbmlzaGVkICYmIHJlcXVlc3Qub3V0cHV0U2l6ZSA9PT0gMCAmJiAoIXJlcXVlc3Quc29ja2V0IHx8IHJlcXVlc3Quc29ja2V0LndyaXRhYmxlTGVuZ3RoID09PSAwKTtcbiAgICB9O1xuICAgIGlmICh3cml0YWJsZUZpbmlzaGVkKCkpIHtcbiAgICAgICAgb25VcGxvYWQoKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHJlcXVlc3QucHJlcGVuZE9uY2VMaXN0ZW5lcignZmluaXNoJywgb25VcGxvYWQpO1xuICAgIH1cbiAgICByZXF1ZXN0LnByZXBlbmRPbmNlTGlzdGVuZXIoJ3Jlc3BvbnNlJywgKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgIHRpbWluZ3MucmVzcG9uc2UgPSBEYXRlLm5vdygpO1xuICAgICAgICB0aW1pbmdzLnBoYXNlcy5maXJzdEJ5dGUgPSB0aW1pbmdzLnJlc3BvbnNlIC0gdGltaW5ncy51cGxvYWQ7XG4gICAgICAgIHJlc3BvbnNlLnRpbWluZ3MgPSB0aW1pbmdzO1xuICAgICAgICBoYW5kbGVFcnJvcihyZXNwb25zZSk7XG4gICAgICAgIHJlc3BvbnNlLnByZXBlbmRPbmNlTGlzdGVuZXIoJ2VuZCcsICgpID0+IHtcbiAgICAgICAgICAgIHRpbWluZ3MuZW5kID0gRGF0ZS5ub3coKTtcbiAgICAgICAgICAgIHRpbWluZ3MucGhhc2VzLmRvd25sb2FkID0gdGltaW5ncy5lbmQgLSB0aW1pbmdzLnJlc3BvbnNlO1xuICAgICAgICAgICAgdGltaW5ncy5waGFzZXMudG90YWwgPSB0aW1pbmdzLmVuZCAtIHRpbWluZ3Muc3RhcnQ7XG4gICAgICAgIH0pO1xuICAgICAgICByZXNwb25zZS5wcmVwZW5kT25jZUxpc3RlbmVyKCdhYm9ydGVkJywgb25BYm9ydCk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHRpbWluZ3M7XG59O1xuZXhwb3J0cy5kZWZhdWx0ID0gdGltZXI7XG4vLyBGb3IgQ29tbW9uSlMgZGVmYXVsdCBleHBvcnQgc3VwcG9ydFxubW9kdWxlLmV4cG9ydHMgPSB0aW1lcjtcbm1vZHVsZS5leHBvcnRzLmRlZmF1bHQgPSB0aW1lcjtcbiIsICIndXNlIHN0cmljdCc7XG5jb25zdCB7XG5cdFY0TUFQUEVELFxuXHRBRERSQ09ORklHLFxuXHRBTEwsXG5cdHByb21pc2VzOiB7XG5cdFx0UmVzb2x2ZXI6IEFzeW5jUmVzb2x2ZXJcblx0fSxcblx0bG9va3VwOiBkbnNMb29rdXBcbn0gPSByZXF1aXJlKCdkbnMnKTtcbmNvbnN0IHtwcm9taXNpZnl9ID0gcmVxdWlyZSgndXRpbCcpO1xuY29uc3Qgb3MgPSByZXF1aXJlKCdvcycpO1xuXG5jb25zdCBrQ2FjaGVhYmxlTG9va3VwQ3JlYXRlQ29ubmVjdGlvbiA9IFN5bWJvbCgnY2FjaGVhYmxlTG9va3VwQ3JlYXRlQ29ubmVjdGlvbicpO1xuY29uc3Qga0NhY2hlYWJsZUxvb2t1cEluc3RhbmNlID0gU3ltYm9sKCdjYWNoZWFibGVMb29rdXBJbnN0YW5jZScpO1xuY29uc3Qga0V4cGlyZXMgPSBTeW1ib2woJ2V4cGlyZXMnKTtcblxuY29uc3Qgc3VwcG9ydHNBTEwgPSB0eXBlb2YgQUxMID09PSAnbnVtYmVyJztcblxuY29uc3QgdmVyaWZ5QWdlbnQgPSBhZ2VudCA9PiB7XG5cdGlmICghKGFnZW50ICYmIHR5cGVvZiBhZ2VudC5jcmVhdGVDb25uZWN0aW9uID09PSAnZnVuY3Rpb24nKSkge1xuXHRcdHRocm93IG5ldyBFcnJvcignRXhwZWN0ZWQgYW4gQWdlbnQgaW5zdGFuY2UgYXMgdGhlIGZpcnN0IGFyZ3VtZW50Jyk7XG5cdH1cbn07XG5cbmNvbnN0IG1hcDR0bzYgPSBlbnRyaWVzID0+IHtcblx0Zm9yIChjb25zdCBlbnRyeSBvZiBlbnRyaWVzKSB7XG5cdFx0aWYgKGVudHJ5LmZhbWlseSA9PT0gNikge1xuXHRcdFx0Y29udGludWU7XG5cdFx0fVxuXG5cdFx0ZW50cnkuYWRkcmVzcyA9IGA6OmZmZmY6JHtlbnRyeS5hZGRyZXNzfWA7XG5cdFx0ZW50cnkuZmFtaWx5ID0gNjtcblx0fVxufTtcblxuY29uc3QgZ2V0SWZhY2VJbmZvID0gKCkgPT4ge1xuXHRsZXQgaGFzNCA9IGZhbHNlO1xuXHRsZXQgaGFzNiA9IGZhbHNlO1xuXG5cdGZvciAoY29uc3QgZGV2aWNlIG9mIE9iamVjdC52YWx1ZXMob3MubmV0d29ya0ludGVyZmFjZXMoKSkpIHtcblx0XHRmb3IgKGNvbnN0IGlmYWNlIG9mIGRldmljZSkge1xuXHRcdFx0aWYgKGlmYWNlLmludGVybmFsKSB7XG5cdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoaWZhY2UuZmFtaWx5ID09PSAnSVB2NicpIHtcblx0XHRcdFx0aGFzNiA9IHRydWU7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRoYXM0ID0gdHJ1ZTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKGhhczQgJiYgaGFzNikge1xuXHRcdFx0XHRyZXR1cm4ge2hhczQsIGhhczZ9O1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHJldHVybiB7aGFzNCwgaGFzNn07XG59O1xuXG5jb25zdCBpc0l0ZXJhYmxlID0gbWFwID0+IHtcblx0cmV0dXJuIFN5bWJvbC5pdGVyYXRvciBpbiBtYXA7XG59O1xuXG5jb25zdCB0dGwgPSB7dHRsOiB0cnVlfTtcbmNvbnN0IGFsbCA9IHthbGw6IHRydWV9O1xuXG5jbGFzcyBDYWNoZWFibGVMb29rdXAge1xuXHRjb25zdHJ1Y3Rvcih7XG5cdFx0Y2FjaGUgPSBuZXcgTWFwKCksXG5cdFx0bWF4VHRsID0gSW5maW5pdHksXG5cdFx0ZmFsbGJhY2tEdXJhdGlvbiA9IDM2MDAsXG5cdFx0ZXJyb3JUdGwgPSAwLjE1LFxuXHRcdHJlc29sdmVyID0gbmV3IEFzeW5jUmVzb2x2ZXIoKSxcblx0XHRsb29rdXAgPSBkbnNMb29rdXBcblx0fSA9IHt9KSB7XG5cdFx0dGhpcy5tYXhUdGwgPSBtYXhUdGw7XG5cdFx0dGhpcy5lcnJvclR0bCA9IGVycm9yVHRsO1xuXG5cdFx0dGhpcy5fY2FjaGUgPSBjYWNoZTtcblx0XHR0aGlzLl9yZXNvbHZlciA9IHJlc29sdmVyO1xuXHRcdHRoaXMuX2Ruc0xvb2t1cCA9IHByb21pc2lmeShsb29rdXApO1xuXG5cdFx0aWYgKHRoaXMuX3Jlc29sdmVyIGluc3RhbmNlb2YgQXN5bmNSZXNvbHZlcikge1xuXHRcdFx0dGhpcy5fcmVzb2x2ZTQgPSB0aGlzLl9yZXNvbHZlci5yZXNvbHZlNC5iaW5kKHRoaXMuX3Jlc29sdmVyKTtcblx0XHRcdHRoaXMuX3Jlc29sdmU2ID0gdGhpcy5fcmVzb2x2ZXIucmVzb2x2ZTYuYmluZCh0aGlzLl9yZXNvbHZlcik7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuX3Jlc29sdmU0ID0gcHJvbWlzaWZ5KHRoaXMuX3Jlc29sdmVyLnJlc29sdmU0LmJpbmQodGhpcy5fcmVzb2x2ZXIpKTtcblx0XHRcdHRoaXMuX3Jlc29sdmU2ID0gcHJvbWlzaWZ5KHRoaXMuX3Jlc29sdmVyLnJlc29sdmU2LmJpbmQodGhpcy5fcmVzb2x2ZXIpKTtcblx0XHR9XG5cblx0XHR0aGlzLl9pZmFjZSA9IGdldElmYWNlSW5mbygpO1xuXG5cdFx0dGhpcy5fcGVuZGluZyA9IHt9O1xuXHRcdHRoaXMuX25leHRSZW1vdmFsVGltZSA9IGZhbHNlO1xuXHRcdHRoaXMuX2hvc3RuYW1lc1RvRmFsbGJhY2sgPSBuZXcgU2V0KCk7XG5cblx0XHRpZiAoZmFsbGJhY2tEdXJhdGlvbiA8IDEpIHtcblx0XHRcdHRoaXMuX2ZhbGxiYWNrID0gZmFsc2U7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuX2ZhbGxiYWNrID0gdHJ1ZTtcblxuXHRcdFx0Y29uc3QgaW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG5cdFx0XHRcdHRoaXMuX2hvc3RuYW1lc1RvRmFsbGJhY2suY2xlYXIoKTtcblx0XHRcdH0sIGZhbGxiYWNrRHVyYXRpb24gKiAxMDAwKTtcblxuXHRcdFx0LyogaXN0YW5idWwgaWdub3JlIG5leHQ6IFRoZXJlIGlzIG5vIGBpbnRlcnZhbC51bnJlZigpYCB3aGVuIHJ1bm5pbmcgaW5zaWRlIGFuIEVsZWN0cm9uIHJlbmRlcmVyICovXG5cdFx0XHRpZiAoaW50ZXJ2YWwudW5yZWYpIHtcblx0XHRcdFx0aW50ZXJ2YWwudW5yZWYoKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHR0aGlzLmxvb2t1cCA9IHRoaXMubG9va3VwLmJpbmQodGhpcyk7XG5cdFx0dGhpcy5sb29rdXBBc3luYyA9IHRoaXMubG9va3VwQXN5bmMuYmluZCh0aGlzKTtcblx0fVxuXG5cdHNldCBzZXJ2ZXJzKHNlcnZlcnMpIHtcblx0XHR0aGlzLmNsZWFyKCk7XG5cblx0XHR0aGlzLl9yZXNvbHZlci5zZXRTZXJ2ZXJzKHNlcnZlcnMpO1xuXHR9XG5cblx0Z2V0IHNlcnZlcnMoKSB7XG5cdFx0cmV0dXJuIHRoaXMuX3Jlc29sdmVyLmdldFNlcnZlcnMoKTtcblx0fVxuXG5cdGxvb2t1cChob3N0bmFtZSwgb3B0aW9ucywgY2FsbGJhY2spIHtcblx0XHRpZiAodHlwZW9mIG9wdGlvbnMgPT09ICdmdW5jdGlvbicpIHtcblx0XHRcdGNhbGxiYWNrID0gb3B0aW9ucztcblx0XHRcdG9wdGlvbnMgPSB7fTtcblx0XHR9IGVsc2UgaWYgKHR5cGVvZiBvcHRpb25zID09PSAnbnVtYmVyJykge1xuXHRcdFx0b3B0aW9ucyA9IHtcblx0XHRcdFx0ZmFtaWx5OiBvcHRpb25zXG5cdFx0XHR9O1xuXHRcdH1cblxuXHRcdGlmICghY2FsbGJhY2spIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcignQ2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uLicpO1xuXHRcdH1cblxuXHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcm9taXNlL3ByZWZlci1hd2FpdC10by10aGVuXG5cdFx0dGhpcy5sb29rdXBBc3luYyhob3N0bmFtZSwgb3B0aW9ucykudGhlbihyZXN1bHQgPT4ge1xuXHRcdFx0aWYgKG9wdGlvbnMuYWxsKSB7XG5cdFx0XHRcdGNhbGxiYWNrKG51bGwsIHJlc3VsdCk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRjYWxsYmFjayhudWxsLCByZXN1bHQuYWRkcmVzcywgcmVzdWx0LmZhbWlseSwgcmVzdWx0LmV4cGlyZXMsIHJlc3VsdC50dGwpO1xuXHRcdFx0fVxuXHRcdH0sIGNhbGxiYWNrKTtcblx0fVxuXG5cdGFzeW5jIGxvb2t1cEFzeW5jKGhvc3RuYW1lLCBvcHRpb25zID0ge30pIHtcblx0XHRpZiAodHlwZW9mIG9wdGlvbnMgPT09ICdudW1iZXInKSB7XG5cdFx0XHRvcHRpb25zID0ge1xuXHRcdFx0XHRmYW1pbHk6IG9wdGlvbnNcblx0XHRcdH07XG5cdFx0fVxuXG5cdFx0bGV0IGNhY2hlZCA9IGF3YWl0IHRoaXMucXVlcnkoaG9zdG5hbWUpO1xuXG5cdFx0aWYgKG9wdGlvbnMuZmFtaWx5ID09PSA2KSB7XG5cdFx0XHRjb25zdCBmaWx0ZXJlZCA9IGNhY2hlZC5maWx0ZXIoZW50cnkgPT4gZW50cnkuZmFtaWx5ID09PSA2KTtcblxuXHRcdFx0aWYgKG9wdGlvbnMuaGludHMgJiBWNE1BUFBFRCkge1xuXHRcdFx0XHRpZiAoKHN1cHBvcnRzQUxMICYmIG9wdGlvbnMuaGludHMgJiBBTEwpIHx8IGZpbHRlcmVkLmxlbmd0aCA9PT0gMCkge1xuXHRcdFx0XHRcdG1hcDR0bzYoY2FjaGVkKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRjYWNoZWQgPSBmaWx0ZXJlZDtcblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Y2FjaGVkID0gZmlsdGVyZWQ7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIGlmIChvcHRpb25zLmZhbWlseSA9PT0gNCkge1xuXHRcdFx0Y2FjaGVkID0gY2FjaGVkLmZpbHRlcihlbnRyeSA9PiBlbnRyeS5mYW1pbHkgPT09IDQpO1xuXHRcdH1cblxuXHRcdGlmIChvcHRpb25zLmhpbnRzICYgQUREUkNPTkZJRykge1xuXHRcdFx0Y29uc3Qge19pZmFjZX0gPSB0aGlzO1xuXHRcdFx0Y2FjaGVkID0gY2FjaGVkLmZpbHRlcihlbnRyeSA9PiBlbnRyeS5mYW1pbHkgPT09IDYgPyBfaWZhY2UuaGFzNiA6IF9pZmFjZS5oYXM0KTtcblx0XHR9XG5cblx0XHRpZiAoY2FjaGVkLmxlbmd0aCA9PT0gMCkge1xuXHRcdFx0Y29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoYGNhY2hlYWJsZUxvb2t1cCBFTk9URk9VTkQgJHtob3N0bmFtZX1gKTtcblx0XHRcdGVycm9yLmNvZGUgPSAnRU5PVEZPVU5EJztcblx0XHRcdGVycm9yLmhvc3RuYW1lID0gaG9zdG5hbWU7XG5cblx0XHRcdHRocm93IGVycm9yO1xuXHRcdH1cblxuXHRcdGlmIChvcHRpb25zLmFsbCkge1xuXHRcdFx0cmV0dXJuIGNhY2hlZDtcblx0XHR9XG5cblx0XHRyZXR1cm4gY2FjaGVkWzBdO1xuXHR9XG5cblx0YXN5bmMgcXVlcnkoaG9zdG5hbWUpIHtcblx0XHRsZXQgY2FjaGVkID0gYXdhaXQgdGhpcy5fY2FjaGUuZ2V0KGhvc3RuYW1lKTtcblxuXHRcdGlmICghY2FjaGVkKSB7XG5cdFx0XHRjb25zdCBwZW5kaW5nID0gdGhpcy5fcGVuZGluZ1tob3N0bmFtZV07XG5cblx0XHRcdGlmIChwZW5kaW5nKSB7XG5cdFx0XHRcdGNhY2hlZCA9IGF3YWl0IHBlbmRpbmc7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRjb25zdCBuZXdQcm9taXNlID0gdGhpcy5xdWVyeUFuZENhY2hlKGhvc3RuYW1lKTtcblx0XHRcdFx0dGhpcy5fcGVuZGluZ1tob3N0bmFtZV0gPSBuZXdQcm9taXNlO1xuXG5cdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0Y2FjaGVkID0gYXdhaXQgbmV3UHJvbWlzZTtcblx0XHRcdFx0fSBmaW5hbGx5IHtcblx0XHRcdFx0XHRkZWxldGUgdGhpcy5fcGVuZGluZ1tob3N0bmFtZV07XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRjYWNoZWQgPSBjYWNoZWQubWFwKGVudHJ5ID0+IHtcblx0XHRcdHJldHVybiB7Li4uZW50cnl9O1xuXHRcdH0pO1xuXG5cdFx0cmV0dXJuIGNhY2hlZDtcblx0fVxuXG5cdGFzeW5jIF9yZXNvbHZlKGhvc3RuYW1lKSB7XG5cdFx0Y29uc3Qgd3JhcCA9IGFzeW5jIHByb21pc2UgPT4ge1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0cmV0dXJuIGF3YWl0IHByb21pc2U7XG5cdFx0XHR9IGNhdGNoIChlcnJvcikge1xuXHRcdFx0XHRpZiAoZXJyb3IuY29kZSA9PT0gJ0VOT0RBVEEnIHx8IGVycm9yLmNvZGUgPT09ICdFTk9URk9VTkQnKSB7XG5cdFx0XHRcdFx0cmV0dXJuIFtdO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0dGhyb3cgZXJyb3I7XG5cdFx0XHR9XG5cdFx0fTtcblxuXHRcdC8vIEFOWSBpcyB1bnNhZmUgYXMgaXQgZG9lc24ndCB0cmlnZ2VyIG5ldyBxdWVyaWVzIGluIHRoZSB1bmRlcmx5aW5nIHNlcnZlci5cblx0XHRjb25zdCBbQSwgQUFBQV0gPSBhd2FpdCBQcm9taXNlLmFsbChbXG5cdFx0XHR0aGlzLl9yZXNvbHZlNChob3N0bmFtZSwgdHRsKSxcblx0XHRcdHRoaXMuX3Jlc29sdmU2KGhvc3RuYW1lLCB0dGwpXG5cdFx0XS5tYXAocHJvbWlzZSA9PiB3cmFwKHByb21pc2UpKSk7XG5cblx0XHRsZXQgYVR0bCA9IDA7XG5cdFx0bGV0IGFhYWFUdGwgPSAwO1xuXHRcdGxldCBjYWNoZVR0bCA9IDA7XG5cblx0XHRjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuXG5cdFx0Zm9yIChjb25zdCBlbnRyeSBvZiBBKSB7XG5cdFx0XHRlbnRyeS5mYW1pbHkgPSA0O1xuXHRcdFx0ZW50cnkuZXhwaXJlcyA9IG5vdyArIChlbnRyeS50dGwgKiAxMDAwKTtcblxuXHRcdFx0YVR0bCA9IE1hdGgubWF4KGFUdGwsIGVudHJ5LnR0bCk7XG5cdFx0fVxuXG5cdFx0Zm9yIChjb25zdCBlbnRyeSBvZiBBQUFBKSB7XG5cdFx0XHRlbnRyeS5mYW1pbHkgPSA2O1xuXHRcdFx0ZW50cnkuZXhwaXJlcyA9IG5vdyArIChlbnRyeS50dGwgKiAxMDAwKTtcblxuXHRcdFx0YWFhYVR0bCA9IE1hdGgubWF4KGFhYWFUdGwsIGVudHJ5LnR0bCk7XG5cdFx0fVxuXG5cdFx0aWYgKEEubGVuZ3RoID4gMCkge1xuXHRcdFx0aWYgKEFBQUEubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRjYWNoZVR0bCA9IE1hdGgubWluKGFUdGwsIGFhYWFUdGwpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Y2FjaGVUdGwgPSBhVHRsO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRjYWNoZVR0bCA9IGFhYWFUdGw7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHtcblx0XHRcdGVudHJpZXM6IFtcblx0XHRcdFx0Li4uQSxcblx0XHRcdFx0Li4uQUFBQVxuXHRcdFx0XSxcblx0XHRcdGNhY2hlVHRsXG5cdFx0fTtcblx0fVxuXG5cdGFzeW5jIF9sb29rdXAoaG9zdG5hbWUpIHtcblx0XHR0cnkge1xuXHRcdFx0Y29uc3QgZW50cmllcyA9IGF3YWl0IHRoaXMuX2Ruc0xvb2t1cChob3N0bmFtZSwge1xuXHRcdFx0XHRhbGw6IHRydWVcblx0XHRcdH0pO1xuXG5cdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRlbnRyaWVzLFxuXHRcdFx0XHRjYWNoZVR0bDogMFxuXHRcdFx0fTtcblx0XHR9IGNhdGNoIChfKSB7XG5cdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRlbnRyaWVzOiBbXSxcblx0XHRcdFx0Y2FjaGVUdGw6IDBcblx0XHRcdH07XG5cdFx0fVxuXHR9XG5cblx0YXN5bmMgX3NldChob3N0bmFtZSwgZGF0YSwgY2FjaGVUdGwpIHtcblx0XHRpZiAodGhpcy5tYXhUdGwgPiAwICYmIGNhY2hlVHRsID4gMCkge1xuXHRcdFx0Y2FjaGVUdGwgPSBNYXRoLm1pbihjYWNoZVR0bCwgdGhpcy5tYXhUdGwpICogMTAwMDtcblx0XHRcdGRhdGFba0V4cGlyZXNdID0gRGF0ZS5ub3coKSArIGNhY2hlVHRsO1xuXG5cdFx0XHR0cnkge1xuXHRcdFx0XHRhd2FpdCB0aGlzLl9jYWNoZS5zZXQoaG9zdG5hbWUsIGRhdGEsIGNhY2hlVHRsKTtcblx0XHRcdH0gY2F0Y2ggKGVycm9yKSB7XG5cdFx0XHRcdHRoaXMubG9va3VwQXN5bmMgPSBhc3luYyAoKSA9PiB7XG5cdFx0XHRcdFx0Y29uc3QgY2FjaGVFcnJvciA9IG5ldyBFcnJvcignQ2FjaGUgRXJyb3IuIFBsZWFzZSByZWNyZWF0ZSB0aGUgQ2FjaGVhYmxlTG9va3VwIGluc3RhbmNlLicpO1xuXHRcdFx0XHRcdGNhY2hlRXJyb3IuY2F1c2UgPSBlcnJvcjtcblxuXHRcdFx0XHRcdHRocm93IGNhY2hlRXJyb3I7XG5cdFx0XHRcdH07XG5cdFx0XHR9XG5cblx0XHRcdGlmIChpc0l0ZXJhYmxlKHRoaXMuX2NhY2hlKSkge1xuXHRcdFx0XHR0aGlzLl90aWNrKGNhY2hlVHRsKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRhc3luYyBxdWVyeUFuZENhY2hlKGhvc3RuYW1lKSB7XG5cdFx0aWYgKHRoaXMuX2hvc3RuYW1lc1RvRmFsbGJhY2suaGFzKGhvc3RuYW1lKSkge1xuXHRcdFx0cmV0dXJuIHRoaXMuX2Ruc0xvb2t1cChob3N0bmFtZSwgYWxsKTtcblx0XHR9XG5cblx0XHRsZXQgcXVlcnkgPSBhd2FpdCB0aGlzLl9yZXNvbHZlKGhvc3RuYW1lKTtcblxuXHRcdGlmIChxdWVyeS5lbnRyaWVzLmxlbmd0aCA9PT0gMCAmJiB0aGlzLl9mYWxsYmFjaykge1xuXHRcdFx0cXVlcnkgPSBhd2FpdCB0aGlzLl9sb29rdXAoaG9zdG5hbWUpO1xuXG5cdFx0XHRpZiAocXVlcnkuZW50cmllcy5sZW5ndGggIT09IDApIHtcblx0XHRcdFx0Ly8gVXNlIGBkbnMubG9va3VwKC4uLilgIGZvciB0aGF0IHBhcnRpY3VsYXIgaG9zdG5hbWVcblx0XHRcdFx0dGhpcy5faG9zdG5hbWVzVG9GYWxsYmFjay5hZGQoaG9zdG5hbWUpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGNvbnN0IGNhY2hlVHRsID0gcXVlcnkuZW50cmllcy5sZW5ndGggPT09IDAgPyB0aGlzLmVycm9yVHRsIDogcXVlcnkuY2FjaGVUdGw7XG5cdFx0YXdhaXQgdGhpcy5fc2V0KGhvc3RuYW1lLCBxdWVyeS5lbnRyaWVzLCBjYWNoZVR0bCk7XG5cblx0XHRyZXR1cm4gcXVlcnkuZW50cmllcztcblx0fVxuXG5cdF90aWNrKG1zKSB7XG5cdFx0Y29uc3QgbmV4dFJlbW92YWxUaW1lID0gdGhpcy5fbmV4dFJlbW92YWxUaW1lO1xuXG5cdFx0aWYgKCFuZXh0UmVtb3ZhbFRpbWUgfHwgbXMgPCBuZXh0UmVtb3ZhbFRpbWUpIHtcblx0XHRcdGNsZWFyVGltZW91dCh0aGlzLl9yZW1vdmFsVGltZW91dCk7XG5cblx0XHRcdHRoaXMuX25leHRSZW1vdmFsVGltZSA9IG1zO1xuXG5cdFx0XHR0aGlzLl9yZW1vdmFsVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuXHRcdFx0XHR0aGlzLl9uZXh0UmVtb3ZhbFRpbWUgPSBmYWxzZTtcblxuXHRcdFx0XHRsZXQgbmV4dEV4cGlyeSA9IEluZmluaXR5O1xuXG5cdFx0XHRcdGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG5cblx0XHRcdFx0Zm9yIChjb25zdCBbaG9zdG5hbWUsIGVudHJpZXNdIG9mIHRoaXMuX2NhY2hlKSB7XG5cdFx0XHRcdFx0Y29uc3QgZXhwaXJlcyA9IGVudHJpZXNba0V4cGlyZXNdO1xuXG5cdFx0XHRcdFx0aWYgKG5vdyA+PSBleHBpcmVzKSB7XG5cdFx0XHRcdFx0XHR0aGlzLl9jYWNoZS5kZWxldGUoaG9zdG5hbWUpO1xuXHRcdFx0XHRcdH0gZWxzZSBpZiAoZXhwaXJlcyA8IG5leHRFeHBpcnkpIHtcblx0XHRcdFx0XHRcdG5leHRFeHBpcnkgPSBleHBpcmVzO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmIChuZXh0RXhwaXJ5ICE9PSBJbmZpbml0eSkge1xuXHRcdFx0XHRcdHRoaXMuX3RpY2sobmV4dEV4cGlyeSAtIG5vdyk7XG5cdFx0XHRcdH1cblx0XHRcdH0sIG1zKTtcblxuXHRcdFx0LyogaXN0YW5idWwgaWdub3JlIG5leHQ6IFRoZXJlIGlzIG5vIGB0aW1lb3V0LnVucmVmKClgIHdoZW4gcnVubmluZyBpbnNpZGUgYW4gRWxlY3Ryb24gcmVuZGVyZXIgKi9cblx0XHRcdGlmICh0aGlzLl9yZW1vdmFsVGltZW91dC51bnJlZikge1xuXHRcdFx0XHR0aGlzLl9yZW1vdmFsVGltZW91dC51bnJlZigpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdGluc3RhbGwoYWdlbnQpIHtcblx0XHR2ZXJpZnlBZ2VudChhZ2VudCk7XG5cblx0XHRpZiAoa0NhY2hlYWJsZUxvb2t1cENyZWF0ZUNvbm5lY3Rpb24gaW4gYWdlbnQpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcignQ2FjaGVhYmxlTG9va3VwIGhhcyBiZWVuIGFscmVhZHkgaW5zdGFsbGVkJyk7XG5cdFx0fVxuXG5cdFx0YWdlbnRba0NhY2hlYWJsZUxvb2t1cENyZWF0ZUNvbm5lY3Rpb25dID0gYWdlbnQuY3JlYXRlQ29ubmVjdGlvbjtcblx0XHRhZ2VudFtrQ2FjaGVhYmxlTG9va3VwSW5zdGFuY2VdID0gdGhpcztcblxuXHRcdGFnZW50LmNyZWF0ZUNvbm5lY3Rpb24gPSAob3B0aW9ucywgY2FsbGJhY2spID0+IHtcblx0XHRcdGlmICghKCdsb29rdXAnIGluIG9wdGlvbnMpKSB7XG5cdFx0XHRcdG9wdGlvbnMubG9va3VwID0gdGhpcy5sb29rdXA7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBhZ2VudFtrQ2FjaGVhYmxlTG9va3VwQ3JlYXRlQ29ubmVjdGlvbl0ob3B0aW9ucywgY2FsbGJhY2spO1xuXHRcdH07XG5cdH1cblxuXHR1bmluc3RhbGwoYWdlbnQpIHtcblx0XHR2ZXJpZnlBZ2VudChhZ2VudCk7XG5cblx0XHRpZiAoYWdlbnRba0NhY2hlYWJsZUxvb2t1cENyZWF0ZUNvbm5lY3Rpb25dKSB7XG5cdFx0XHRpZiAoYWdlbnRba0NhY2hlYWJsZUxvb2t1cEluc3RhbmNlXSAhPT0gdGhpcykge1xuXHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoJ1RoZSBhZ2VudCBpcyBub3Qgb3duZWQgYnkgdGhpcyBDYWNoZWFibGVMb29rdXAgaW5zdGFuY2UnKTtcblx0XHRcdH1cblxuXHRcdFx0YWdlbnQuY3JlYXRlQ29ubmVjdGlvbiA9IGFnZW50W2tDYWNoZWFibGVMb29rdXBDcmVhdGVDb25uZWN0aW9uXTtcblxuXHRcdFx0ZGVsZXRlIGFnZW50W2tDYWNoZWFibGVMb29rdXBDcmVhdGVDb25uZWN0aW9uXTtcblx0XHRcdGRlbGV0ZSBhZ2VudFtrQ2FjaGVhYmxlTG9va3VwSW5zdGFuY2VdO1xuXHRcdH1cblx0fVxuXG5cdHVwZGF0ZUludGVyZmFjZUluZm8oKSB7XG5cdFx0Y29uc3Qge19pZmFjZX0gPSB0aGlzO1xuXG5cdFx0dGhpcy5faWZhY2UgPSBnZXRJZmFjZUluZm8oKTtcblxuXHRcdGlmICgoX2lmYWNlLmhhczQgJiYgIXRoaXMuX2lmYWNlLmhhczQpIHx8IChfaWZhY2UuaGFzNiAmJiAhdGhpcy5faWZhY2UuaGFzNikpIHtcblx0XHRcdHRoaXMuX2NhY2hlLmNsZWFyKCk7XG5cdFx0fVxuXHR9XG5cblx0Y2xlYXIoaG9zdG5hbWUpIHtcblx0XHRpZiAoaG9zdG5hbWUpIHtcblx0XHRcdHRoaXMuX2NhY2hlLmRlbGV0ZShob3N0bmFtZSk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0dGhpcy5fY2FjaGUuY2xlYXIoKTtcblx0fVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IENhY2hlYWJsZUxvb2t1cDtcbm1vZHVsZS5leHBvcnRzLmRlZmF1bHQgPSBDYWNoZWFibGVMb29rdXA7XG4iLCAiJ3VzZSBzdHJpY3QnO1xuXG4vLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVFRQL0Jhc2ljc19vZl9IVFRQL0RhdGFfVVJJc1xuY29uc3QgREFUQV9VUkxfREVGQVVMVF9NSU1FX1RZUEUgPSAndGV4dC9wbGFpbic7XG5jb25zdCBEQVRBX1VSTF9ERUZBVUxUX0NIQVJTRVQgPSAndXMtYXNjaWknO1xuXG5jb25zdCB0ZXN0UGFyYW1ldGVyID0gKG5hbWUsIGZpbHRlcnMpID0+IHtcblx0cmV0dXJuIGZpbHRlcnMuc29tZShmaWx0ZXIgPT4gZmlsdGVyIGluc3RhbmNlb2YgUmVnRXhwID8gZmlsdGVyLnRlc3QobmFtZSkgOiBmaWx0ZXIgPT09IG5hbWUpO1xufTtcblxuY29uc3Qgbm9ybWFsaXplRGF0YVVSTCA9ICh1cmxTdHJpbmcsIHtzdHJpcEhhc2h9KSA9PiB7XG5cdGNvbnN0IG1hdGNoID0gL15kYXRhOig/PHR5cGU+W14sXSo/KSwoPzxkYXRhPlteI10qPykoPzojKD88aGFzaD4uKikpPyQvLmV4ZWModXJsU3RyaW5nKTtcblxuXHRpZiAoIW1hdGNoKSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIFVSTDogJHt1cmxTdHJpbmd9YCk7XG5cdH1cblxuXHRsZXQge3R5cGUsIGRhdGEsIGhhc2h9ID0gbWF0Y2guZ3JvdXBzO1xuXHRjb25zdCBtZWRpYVR5cGUgPSB0eXBlLnNwbGl0KCc7Jyk7XG5cdGhhc2ggPSBzdHJpcEhhc2ggPyAnJyA6IGhhc2g7XG5cblx0bGV0IGlzQmFzZTY0ID0gZmFsc2U7XG5cdGlmIChtZWRpYVR5cGVbbWVkaWFUeXBlLmxlbmd0aCAtIDFdID09PSAnYmFzZTY0Jykge1xuXHRcdG1lZGlhVHlwZS5wb3AoKTtcblx0XHRpc0Jhc2U2NCA9IHRydWU7XG5cdH1cblxuXHQvLyBMb3dlcmNhc2UgTUlNRSB0eXBlXG5cdGNvbnN0IG1pbWVUeXBlID0gKG1lZGlhVHlwZS5zaGlmdCgpIHx8ICcnKS50b0xvd2VyQ2FzZSgpO1xuXHRjb25zdCBhdHRyaWJ1dGVzID0gbWVkaWFUeXBlXG5cdFx0Lm1hcChhdHRyaWJ1dGUgPT4ge1xuXHRcdFx0bGV0IFtrZXksIHZhbHVlID0gJyddID0gYXR0cmlidXRlLnNwbGl0KCc9JykubWFwKHN0cmluZyA9PiBzdHJpbmcudHJpbSgpKTtcblxuXHRcdFx0Ly8gTG93ZXJjYXNlIGBjaGFyc2V0YFxuXHRcdFx0aWYgKGtleSA9PT0gJ2NoYXJzZXQnKSB7XG5cdFx0XHRcdHZhbHVlID0gdmFsdWUudG9Mb3dlckNhc2UoKTtcblxuXHRcdFx0XHRpZiAodmFsdWUgPT09IERBVEFfVVJMX0RFRkFVTFRfQ0hBUlNFVCkge1xuXHRcdFx0XHRcdHJldHVybiAnJztcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gYCR7a2V5fSR7dmFsdWUgPyBgPSR7dmFsdWV9YCA6ICcnfWA7XG5cdFx0fSlcblx0XHQuZmlsdGVyKEJvb2xlYW4pO1xuXG5cdGNvbnN0IG5vcm1hbGl6ZWRNZWRpYVR5cGUgPSBbXG5cdFx0Li4uYXR0cmlidXRlc1xuXHRdO1xuXG5cdGlmIChpc0Jhc2U2NCkge1xuXHRcdG5vcm1hbGl6ZWRNZWRpYVR5cGUucHVzaCgnYmFzZTY0Jyk7XG5cdH1cblxuXHRpZiAobm9ybWFsaXplZE1lZGlhVHlwZS5sZW5ndGggIT09IDAgfHwgKG1pbWVUeXBlICYmIG1pbWVUeXBlICE9PSBEQVRBX1VSTF9ERUZBVUxUX01JTUVfVFlQRSkpIHtcblx0XHRub3JtYWxpemVkTWVkaWFUeXBlLnVuc2hpZnQobWltZVR5cGUpO1xuXHR9XG5cblx0cmV0dXJuIGBkYXRhOiR7bm9ybWFsaXplZE1lZGlhVHlwZS5qb2luKCc7Jyl9LCR7aXNCYXNlNjQgPyBkYXRhLnRyaW0oKSA6IGRhdGF9JHtoYXNoID8gYCMke2hhc2h9YCA6ICcnfWA7XG59O1xuXG5jb25zdCBub3JtYWxpemVVcmwgPSAodXJsU3RyaW5nLCBvcHRpb25zKSA9PiB7XG5cdG9wdGlvbnMgPSB7XG5cdFx0ZGVmYXVsdFByb3RvY29sOiAnaHR0cDonLFxuXHRcdG5vcm1hbGl6ZVByb3RvY29sOiB0cnVlLFxuXHRcdGZvcmNlSHR0cDogZmFsc2UsXG5cdFx0Zm9yY2VIdHRwczogZmFsc2UsXG5cdFx0c3RyaXBBdXRoZW50aWNhdGlvbjogdHJ1ZSxcblx0XHRzdHJpcEhhc2g6IGZhbHNlLFxuXHRcdHN0cmlwVGV4dEZyYWdtZW50OiB0cnVlLFxuXHRcdHN0cmlwV1dXOiB0cnVlLFxuXHRcdHJlbW92ZVF1ZXJ5UGFyYW1ldGVyczogWy9edXRtX1xcdysvaV0sXG5cdFx0cmVtb3ZlVHJhaWxpbmdTbGFzaDogdHJ1ZSxcblx0XHRyZW1vdmVTaW5nbGVTbGFzaDogdHJ1ZSxcblx0XHRyZW1vdmVEaXJlY3RvcnlJbmRleDogZmFsc2UsXG5cdFx0c29ydFF1ZXJ5UGFyYW1ldGVyczogdHJ1ZSxcblx0XHQuLi5vcHRpb25zXG5cdH07XG5cblx0dXJsU3RyaW5nID0gdXJsU3RyaW5nLnRyaW0oKTtcblxuXHQvLyBEYXRhIFVSTFxuXHRpZiAoL15kYXRhOi9pLnRlc3QodXJsU3RyaW5nKSkge1xuXHRcdHJldHVybiBub3JtYWxpemVEYXRhVVJMKHVybFN0cmluZywgb3B0aW9ucyk7XG5cdH1cblxuXHRpZiAoL152aWV3LXNvdXJjZTovaS50ZXN0KHVybFN0cmluZykpIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoJ2B2aWV3LXNvdXJjZTpgIGlzIG5vdCBzdXBwb3J0ZWQgYXMgaXQgaXMgYSBub24tc3RhbmRhcmQgcHJvdG9jb2wnKTtcblx0fVxuXG5cdGNvbnN0IGhhc1JlbGF0aXZlUHJvdG9jb2wgPSB1cmxTdHJpbmcuc3RhcnRzV2l0aCgnLy8nKTtcblx0Y29uc3QgaXNSZWxhdGl2ZVVybCA9ICFoYXNSZWxhdGl2ZVByb3RvY29sICYmIC9eXFwuKlxcLy8udGVzdCh1cmxTdHJpbmcpO1xuXG5cdC8vIFByZXBlbmQgcHJvdG9jb2xcblx0aWYgKCFpc1JlbGF0aXZlVXJsKSB7XG5cdFx0dXJsU3RyaW5nID0gdXJsU3RyaW5nLnJlcGxhY2UoL14oPyEoPzpcXHcrOik/XFwvXFwvKXxeXFwvXFwvLywgb3B0aW9ucy5kZWZhdWx0UHJvdG9jb2wpO1xuXHR9XG5cblx0Y29uc3QgdXJsT2JqID0gbmV3IFVSTCh1cmxTdHJpbmcpO1xuXG5cdGlmIChvcHRpb25zLmZvcmNlSHR0cCAmJiBvcHRpb25zLmZvcmNlSHR0cHMpIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoJ1RoZSBgZm9yY2VIdHRwYCBhbmQgYGZvcmNlSHR0cHNgIG9wdGlvbnMgY2Fubm90IGJlIHVzZWQgdG9nZXRoZXInKTtcblx0fVxuXG5cdGlmIChvcHRpb25zLmZvcmNlSHR0cCAmJiB1cmxPYmoucHJvdG9jb2wgPT09ICdodHRwczonKSB7XG5cdFx0dXJsT2JqLnByb3RvY29sID0gJ2h0dHA6Jztcblx0fVxuXG5cdGlmIChvcHRpb25zLmZvcmNlSHR0cHMgJiYgdXJsT2JqLnByb3RvY29sID09PSAnaHR0cDonKSB7XG5cdFx0dXJsT2JqLnByb3RvY29sID0gJ2h0dHBzOic7XG5cdH1cblxuXHQvLyBSZW1vdmUgYXV0aFxuXHRpZiAob3B0aW9ucy5zdHJpcEF1dGhlbnRpY2F0aW9uKSB7XG5cdFx0dXJsT2JqLnVzZXJuYW1lID0gJyc7XG5cdFx0dXJsT2JqLnBhc3N3b3JkID0gJyc7XG5cdH1cblxuXHQvLyBSZW1vdmUgaGFzaFxuXHRpZiAob3B0aW9ucy5zdHJpcEhhc2gpIHtcblx0XHR1cmxPYmouaGFzaCA9ICcnO1xuXHR9IGVsc2UgaWYgKG9wdGlvbnMuc3RyaXBUZXh0RnJhZ21lbnQpIHtcblx0XHR1cmxPYmouaGFzaCA9IHVybE9iai5oYXNoLnJlcGxhY2UoLyM/On46dGV4dC4qPyQvaSwgJycpO1xuXHR9XG5cblx0Ly8gUmVtb3ZlIGR1cGxpY2F0ZSBzbGFzaGVzIGlmIG5vdCBwcmVjZWRlZCBieSBhIHByb3RvY29sXG5cdGlmICh1cmxPYmoucGF0aG5hbWUpIHtcblx0XHR1cmxPYmoucGF0aG5hbWUgPSB1cmxPYmoucGF0aG5hbWUucmVwbGFjZSgvKD88IVxcYig/OlthLXpdW2EtelxcZCtcXC0uXXsxLDUwfTopKVxcL3syLH0vZywgJy8nKTtcblx0fVxuXG5cdC8vIERlY29kZSBVUkkgb2N0ZXRzXG5cdGlmICh1cmxPYmoucGF0aG5hbWUpIHtcblx0XHR0cnkge1xuXHRcdFx0dXJsT2JqLnBhdGhuYW1lID0gZGVjb2RlVVJJKHVybE9iai5wYXRobmFtZSk7XG5cdFx0fSBjYXRjaCAoXykge31cblx0fVxuXG5cdC8vIFJlbW92ZSBkaXJlY3RvcnkgaW5kZXhcblx0aWYgKG9wdGlvbnMucmVtb3ZlRGlyZWN0b3J5SW5kZXggPT09IHRydWUpIHtcblx0XHRvcHRpb25zLnJlbW92ZURpcmVjdG9yeUluZGV4ID0gWy9eaW5kZXhcXC5bYS16XSskL107XG5cdH1cblxuXHRpZiAoQXJyYXkuaXNBcnJheShvcHRpb25zLnJlbW92ZURpcmVjdG9yeUluZGV4KSAmJiBvcHRpb25zLnJlbW92ZURpcmVjdG9yeUluZGV4Lmxlbmd0aCA+IDApIHtcblx0XHRsZXQgcGF0aENvbXBvbmVudHMgPSB1cmxPYmoucGF0aG5hbWUuc3BsaXQoJy8nKTtcblx0XHRjb25zdCBsYXN0Q29tcG9uZW50ID0gcGF0aENvbXBvbmVudHNbcGF0aENvbXBvbmVudHMubGVuZ3RoIC0gMV07XG5cblx0XHRpZiAodGVzdFBhcmFtZXRlcihsYXN0Q29tcG9uZW50LCBvcHRpb25zLnJlbW92ZURpcmVjdG9yeUluZGV4KSkge1xuXHRcdFx0cGF0aENvbXBvbmVudHMgPSBwYXRoQ29tcG9uZW50cy5zbGljZSgwLCBwYXRoQ29tcG9uZW50cy5sZW5ndGggLSAxKTtcblx0XHRcdHVybE9iai5wYXRobmFtZSA9IHBhdGhDb21wb25lbnRzLnNsaWNlKDEpLmpvaW4oJy8nKSArICcvJztcblx0XHR9XG5cdH1cblxuXHRpZiAodXJsT2JqLmhvc3RuYW1lKSB7XG5cdFx0Ly8gUmVtb3ZlIHRyYWlsaW5nIGRvdFxuXHRcdHVybE9iai5ob3N0bmFtZSA9IHVybE9iai5ob3N0bmFtZS5yZXBsYWNlKC9cXC4kLywgJycpO1xuXG5cdFx0Ly8gUmVtb3ZlIGB3d3cuYFxuXHRcdGlmIChvcHRpb25zLnN0cmlwV1dXICYmIC9ed3d3XFwuKD8hd3d3XFwuKSg/OlthLXpcXC1cXGRdezEsNjN9KVxcLig/OlthLXouXFwtXFxkXXsyLDYzfSkkLy50ZXN0KHVybE9iai5ob3N0bmFtZSkpIHtcblx0XHRcdC8vIEVhY2ggbGFiZWwgc2hvdWxkIGJlIG1heCA2MyBhdCBsZW5ndGggKG1pbjogMSkuXG5cdFx0XHQvLyBTb3VyY2U6IGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0hvc3RuYW1lI1Jlc3RyaWN0aW9uc19vbl92YWxpZF9ob3N0X25hbWVzXG5cdFx0XHQvLyBFYWNoIFRMRCBzaG91bGQgYmUgdXAgdG8gNjMgY2hhcmFjdGVycyBsb25nIChtaW46IDIpLlxuXHRcdFx0Ly8gSXQgaXMgdGVjaG5pY2FsbHkgcG9zc2libGUgdG8gaGF2ZSBhIHNpbmdsZSBjaGFyYWN0ZXIgVExELCBidXQgbm9uZSBjdXJyZW50bHkgZXhpc3QuXG5cdFx0XHR1cmxPYmouaG9zdG5hbWUgPSB1cmxPYmouaG9zdG5hbWUucmVwbGFjZSgvXnd3d1xcLi8sICcnKTtcblx0XHR9XG5cdH1cblxuXHQvLyBSZW1vdmUgcXVlcnkgdW53YW50ZWQgcGFyYW1ldGVyc1xuXHRpZiAoQXJyYXkuaXNBcnJheShvcHRpb25zLnJlbW92ZVF1ZXJ5UGFyYW1ldGVycykpIHtcblx0XHRmb3IgKGNvbnN0IGtleSBvZiBbLi4udXJsT2JqLnNlYXJjaFBhcmFtcy5rZXlzKCldKSB7XG5cdFx0XHRpZiAodGVzdFBhcmFtZXRlcihrZXksIG9wdGlvbnMucmVtb3ZlUXVlcnlQYXJhbWV0ZXJzKSkge1xuXHRcdFx0XHR1cmxPYmouc2VhcmNoUGFyYW1zLmRlbGV0ZShrZXkpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdGlmIChvcHRpb25zLnJlbW92ZVF1ZXJ5UGFyYW1ldGVycyA9PT0gdHJ1ZSkge1xuXHRcdHVybE9iai5zZWFyY2ggPSAnJztcblx0fVxuXG5cdC8vIFNvcnQgcXVlcnkgcGFyYW1ldGVyc1xuXHRpZiAob3B0aW9ucy5zb3J0UXVlcnlQYXJhbWV0ZXJzKSB7XG5cdFx0dXJsT2JqLnNlYXJjaFBhcmFtcy5zb3J0KCk7XG5cdH1cblxuXHRpZiAob3B0aW9ucy5yZW1vdmVUcmFpbGluZ1NsYXNoKSB7XG5cdFx0dXJsT2JqLnBhdGhuYW1lID0gdXJsT2JqLnBhdGhuYW1lLnJlcGxhY2UoL1xcLyQvLCAnJyk7XG5cdH1cblxuXHRjb25zdCBvbGRVcmxTdHJpbmcgPSB1cmxTdHJpbmc7XG5cblx0Ly8gVGFrZSBhZHZhbnRhZ2Ugb2YgbWFueSBvZiB0aGUgTm9kZSBgdXJsYCBub3JtYWxpemF0aW9uc1xuXHR1cmxTdHJpbmcgPSB1cmxPYmoudG9TdHJpbmcoKTtcblxuXHRpZiAoIW9wdGlvbnMucmVtb3ZlU2luZ2xlU2xhc2ggJiYgdXJsT2JqLnBhdGhuYW1lID09PSAnLycgJiYgIW9sZFVybFN0cmluZy5lbmRzV2l0aCgnLycpICYmIHVybE9iai5oYXNoID09PSAnJykge1xuXHRcdHVybFN0cmluZyA9IHVybFN0cmluZy5yZXBsYWNlKC9cXC8kLywgJycpO1xuXHR9XG5cblx0Ly8gUmVtb3ZlIGVuZGluZyBgL2AgdW5sZXNzIHJlbW92ZVNpbmdsZVNsYXNoIGlzIGZhbHNlXG5cdGlmICgob3B0aW9ucy5yZW1vdmVUcmFpbGluZ1NsYXNoIHx8IHVybE9iai5wYXRobmFtZSA9PT0gJy8nKSAmJiB1cmxPYmouaGFzaCA9PT0gJycgJiYgb3B0aW9ucy5yZW1vdmVTaW5nbGVTbGFzaCkge1xuXHRcdHVybFN0cmluZyA9IHVybFN0cmluZy5yZXBsYWNlKC9cXC8kLywgJycpO1xuXHR9XG5cblx0Ly8gUmVzdG9yZSByZWxhdGl2ZSBwcm90b2NvbCwgaWYgYXBwbGljYWJsZVxuXHRpZiAoaGFzUmVsYXRpdmVQcm90b2NvbCAmJiAhb3B0aW9ucy5ub3JtYWxpemVQcm90b2NvbCkge1xuXHRcdHVybFN0cmluZyA9IHVybFN0cmluZy5yZXBsYWNlKC9eaHR0cDpcXC9cXC8vLCAnLy8nKTtcblx0fVxuXG5cdC8vIFJlbW92ZSBodHRwL2h0dHBzXG5cdGlmIChvcHRpb25zLnN0cmlwUHJvdG9jb2wpIHtcblx0XHR1cmxTdHJpbmcgPSB1cmxTdHJpbmcucmVwbGFjZSgvXig/Omh0dHBzPzopP1xcL1xcLy8sICcnKTtcblx0fVxuXG5cdHJldHVybiB1cmxTdHJpbmc7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IG5vcm1hbGl6ZVVybDtcbiIsICIvLyBSZXR1cm5zIGEgd3JhcHBlciBmdW5jdGlvbiB0aGF0IHJldHVybnMgYSB3cmFwcGVkIGNhbGxiYWNrXG4vLyBUaGUgd3JhcHBlciBmdW5jdGlvbiBzaG91bGQgZG8gc29tZSBzdHVmZiwgYW5kIHJldHVybiBhXG4vLyBwcmVzdW1hYmx5IGRpZmZlcmVudCBjYWxsYmFjayBmdW5jdGlvbi5cbi8vIFRoaXMgbWFrZXMgc3VyZSB0aGF0IG93biBwcm9wZXJ0aWVzIGFyZSByZXRhaW5lZCwgc28gdGhhdFxuLy8gZGVjb3JhdGlvbnMgYW5kIHN1Y2ggYXJlIG5vdCBsb3N0IGFsb25nIHRoZSB3YXkuXG5tb2R1bGUuZXhwb3J0cyA9IHdyYXBweVxuZnVuY3Rpb24gd3JhcHB5IChmbiwgY2IpIHtcbiAgaWYgKGZuICYmIGNiKSByZXR1cm4gd3JhcHB5KGZuKShjYilcblxuICBpZiAodHlwZW9mIGZuICE9PSAnZnVuY3Rpb24nKVxuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ25lZWQgd3JhcHBlciBmdW5jdGlvbicpXG5cbiAgT2JqZWN0LmtleXMoZm4pLmZvckVhY2goZnVuY3Rpb24gKGspIHtcbiAgICB3cmFwcGVyW2tdID0gZm5ba11cbiAgfSlcblxuICByZXR1cm4gd3JhcHBlclxuXG4gIGZ1bmN0aW9uIHdyYXBwZXIoKSB7XG4gICAgdmFyIGFyZ3MgPSBuZXcgQXJyYXkoYXJndW1lbnRzLmxlbmd0aClcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFyZ3MubGVuZ3RoOyBpKyspIHtcbiAgICAgIGFyZ3NbaV0gPSBhcmd1bWVudHNbaV1cbiAgICB9XG4gICAgdmFyIHJldCA9IGZuLmFwcGx5KHRoaXMsIGFyZ3MpXG4gICAgdmFyIGNiID0gYXJnc1thcmdzLmxlbmd0aC0xXVxuICAgIGlmICh0eXBlb2YgcmV0ID09PSAnZnVuY3Rpb24nICYmIHJldCAhPT0gY2IpIHtcbiAgICAgIE9iamVjdC5rZXlzKGNiKS5mb3JFYWNoKGZ1bmN0aW9uIChrKSB7XG4gICAgICAgIHJldFtrXSA9IGNiW2tdXG4gICAgICB9KVxuICAgIH1cbiAgICByZXR1cm4gcmV0XG4gIH1cbn1cbiIsICJ2YXIgd3JhcHB5ID0gcmVxdWlyZSgnd3JhcHB5Jylcbm1vZHVsZS5leHBvcnRzID0gd3JhcHB5KG9uY2UpXG5tb2R1bGUuZXhwb3J0cy5zdHJpY3QgPSB3cmFwcHkob25jZVN0cmljdClcblxub25jZS5wcm90byA9IG9uY2UoZnVuY3Rpb24gKCkge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRnVuY3Rpb24ucHJvdG90eXBlLCAnb25jZScsIHtcbiAgICB2YWx1ZTogZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIG9uY2UodGhpcylcbiAgICB9LFxuICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICB9KVxuXG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShGdW5jdGlvbi5wcm90b3R5cGUsICdvbmNlU3RyaWN0Jywge1xuICAgIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gb25jZVN0cmljdCh0aGlzKVxuICAgIH0sXG4gICAgY29uZmlndXJhYmxlOiB0cnVlXG4gIH0pXG59KVxuXG5mdW5jdGlvbiBvbmNlIChmbikge1xuICB2YXIgZiA9IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoZi5jYWxsZWQpIHJldHVybiBmLnZhbHVlXG4gICAgZi5jYWxsZWQgPSB0cnVlXG4gICAgcmV0dXJuIGYudmFsdWUgPSBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpXG4gIH1cbiAgZi5jYWxsZWQgPSBmYWxzZVxuICByZXR1cm4gZlxufVxuXG5mdW5jdGlvbiBvbmNlU3RyaWN0IChmbikge1xuICB2YXIgZiA9IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoZi5jYWxsZWQpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoZi5vbmNlRXJyb3IpXG4gICAgZi5jYWxsZWQgPSB0cnVlXG4gICAgcmV0dXJuIGYudmFsdWUgPSBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpXG4gIH1cbiAgdmFyIG5hbWUgPSBmbi5uYW1lIHx8ICdGdW5jdGlvbiB3cmFwcGVkIHdpdGggYG9uY2VgJ1xuICBmLm9uY2VFcnJvciA9IG5hbWUgKyBcIiBzaG91bGRuJ3QgYmUgY2FsbGVkIG1vcmUgdGhhbiBvbmNlXCJcbiAgZi5jYWxsZWQgPSBmYWxzZVxuICByZXR1cm4gZlxufVxuIiwgInZhciBvbmNlID0gcmVxdWlyZSgnb25jZScpO1xuXG52YXIgbm9vcCA9IGZ1bmN0aW9uKCkge307XG5cbnZhciBpc1JlcXVlc3QgPSBmdW5jdGlvbihzdHJlYW0pIHtcblx0cmV0dXJuIHN0cmVhbS5zZXRIZWFkZXIgJiYgdHlwZW9mIHN0cmVhbS5hYm9ydCA9PT0gJ2Z1bmN0aW9uJztcbn07XG5cbnZhciBpc0NoaWxkUHJvY2VzcyA9IGZ1bmN0aW9uKHN0cmVhbSkge1xuXHRyZXR1cm4gc3RyZWFtLnN0ZGlvICYmIEFycmF5LmlzQXJyYXkoc3RyZWFtLnN0ZGlvKSAmJiBzdHJlYW0uc3RkaW8ubGVuZ3RoID09PSAzXG59O1xuXG52YXIgZW9zID0gZnVuY3Rpb24oc3RyZWFtLCBvcHRzLCBjYWxsYmFjaykge1xuXHRpZiAodHlwZW9mIG9wdHMgPT09ICdmdW5jdGlvbicpIHJldHVybiBlb3Moc3RyZWFtLCBudWxsLCBvcHRzKTtcblx0aWYgKCFvcHRzKSBvcHRzID0ge307XG5cblx0Y2FsbGJhY2sgPSBvbmNlKGNhbGxiYWNrIHx8IG5vb3ApO1xuXG5cdHZhciB3cyA9IHN0cmVhbS5fd3JpdGFibGVTdGF0ZTtcblx0dmFyIHJzID0gc3RyZWFtLl9yZWFkYWJsZVN0YXRlO1xuXHR2YXIgcmVhZGFibGUgPSBvcHRzLnJlYWRhYmxlIHx8IChvcHRzLnJlYWRhYmxlICE9PSBmYWxzZSAmJiBzdHJlYW0ucmVhZGFibGUpO1xuXHR2YXIgd3JpdGFibGUgPSBvcHRzLndyaXRhYmxlIHx8IChvcHRzLndyaXRhYmxlICE9PSBmYWxzZSAmJiBzdHJlYW0ud3JpdGFibGUpO1xuXHR2YXIgY2FuY2VsbGVkID0gZmFsc2U7XG5cblx0dmFyIG9ubGVnYWN5ZmluaXNoID0gZnVuY3Rpb24oKSB7XG5cdFx0aWYgKCFzdHJlYW0ud3JpdGFibGUpIG9uZmluaXNoKCk7XG5cdH07XG5cblx0dmFyIG9uZmluaXNoID0gZnVuY3Rpb24oKSB7XG5cdFx0d3JpdGFibGUgPSBmYWxzZTtcblx0XHRpZiAoIXJlYWRhYmxlKSBjYWxsYmFjay5jYWxsKHN0cmVhbSk7XG5cdH07XG5cblx0dmFyIG9uZW5kID0gZnVuY3Rpb24oKSB7XG5cdFx0cmVhZGFibGUgPSBmYWxzZTtcblx0XHRpZiAoIXdyaXRhYmxlKSBjYWxsYmFjay5jYWxsKHN0cmVhbSk7XG5cdH07XG5cblx0dmFyIG9uZXhpdCA9IGZ1bmN0aW9uKGV4aXRDb2RlKSB7XG5cdFx0Y2FsbGJhY2suY2FsbChzdHJlYW0sIGV4aXRDb2RlID8gbmV3IEVycm9yKCdleGl0ZWQgd2l0aCBlcnJvciBjb2RlOiAnICsgZXhpdENvZGUpIDogbnVsbCk7XG5cdH07XG5cblx0dmFyIG9uZXJyb3IgPSBmdW5jdGlvbihlcnIpIHtcblx0XHRjYWxsYmFjay5jYWxsKHN0cmVhbSwgZXJyKTtcblx0fTtcblxuXHR2YXIgb25jbG9zZSA9IGZ1bmN0aW9uKCkge1xuXHRcdHByb2Nlc3MubmV4dFRpY2sob25jbG9zZW5leHR0aWNrKTtcblx0fTtcblxuXHR2YXIgb25jbG9zZW5leHR0aWNrID0gZnVuY3Rpb24oKSB7XG5cdFx0aWYgKGNhbmNlbGxlZCkgcmV0dXJuO1xuXHRcdGlmIChyZWFkYWJsZSAmJiAhKHJzICYmIChycy5lbmRlZCAmJiAhcnMuZGVzdHJveWVkKSkpIHJldHVybiBjYWxsYmFjay5jYWxsKHN0cmVhbSwgbmV3IEVycm9yKCdwcmVtYXR1cmUgY2xvc2UnKSk7XG5cdFx0aWYgKHdyaXRhYmxlICYmICEod3MgJiYgKHdzLmVuZGVkICYmICF3cy5kZXN0cm95ZWQpKSkgcmV0dXJuIGNhbGxiYWNrLmNhbGwoc3RyZWFtLCBuZXcgRXJyb3IoJ3ByZW1hdHVyZSBjbG9zZScpKTtcblx0fTtcblxuXHR2YXIgb25yZXF1ZXN0ID0gZnVuY3Rpb24oKSB7XG5cdFx0c3RyZWFtLnJlcS5vbignZmluaXNoJywgb25maW5pc2gpO1xuXHR9O1xuXG5cdGlmIChpc1JlcXVlc3Qoc3RyZWFtKSkge1xuXHRcdHN0cmVhbS5vbignY29tcGxldGUnLCBvbmZpbmlzaCk7XG5cdFx0c3RyZWFtLm9uKCdhYm9ydCcsIG9uY2xvc2UpO1xuXHRcdGlmIChzdHJlYW0ucmVxKSBvbnJlcXVlc3QoKTtcblx0XHRlbHNlIHN0cmVhbS5vbigncmVxdWVzdCcsIG9ucmVxdWVzdCk7XG5cdH0gZWxzZSBpZiAod3JpdGFibGUgJiYgIXdzKSB7IC8vIGxlZ2FjeSBzdHJlYW1zXG5cdFx0c3RyZWFtLm9uKCdlbmQnLCBvbmxlZ2FjeWZpbmlzaCk7XG5cdFx0c3RyZWFtLm9uKCdjbG9zZScsIG9ubGVnYWN5ZmluaXNoKTtcblx0fVxuXG5cdGlmIChpc0NoaWxkUHJvY2VzcyhzdHJlYW0pKSBzdHJlYW0ub24oJ2V4aXQnLCBvbmV4aXQpO1xuXG5cdHN0cmVhbS5vbignZW5kJywgb25lbmQpO1xuXHRzdHJlYW0ub24oJ2ZpbmlzaCcsIG9uZmluaXNoKTtcblx0aWYgKG9wdHMuZXJyb3IgIT09IGZhbHNlKSBzdHJlYW0ub24oJ2Vycm9yJywgb25lcnJvcik7XG5cdHN0cmVhbS5vbignY2xvc2UnLCBvbmNsb3NlKTtcblxuXHRyZXR1cm4gZnVuY3Rpb24oKSB7XG5cdFx0Y2FuY2VsbGVkID0gdHJ1ZTtcblx0XHRzdHJlYW0ucmVtb3ZlTGlzdGVuZXIoJ2NvbXBsZXRlJywgb25maW5pc2gpO1xuXHRcdHN0cmVhbS5yZW1vdmVMaXN0ZW5lcignYWJvcnQnLCBvbmNsb3NlKTtcblx0XHRzdHJlYW0ucmVtb3ZlTGlzdGVuZXIoJ3JlcXVlc3QnLCBvbnJlcXVlc3QpO1xuXHRcdGlmIChzdHJlYW0ucmVxKSBzdHJlYW0ucmVxLnJlbW92ZUxpc3RlbmVyKCdmaW5pc2gnLCBvbmZpbmlzaCk7XG5cdFx0c3RyZWFtLnJlbW92ZUxpc3RlbmVyKCdlbmQnLCBvbmxlZ2FjeWZpbmlzaCk7XG5cdFx0c3RyZWFtLnJlbW92ZUxpc3RlbmVyKCdjbG9zZScsIG9ubGVnYWN5ZmluaXNoKTtcblx0XHRzdHJlYW0ucmVtb3ZlTGlzdGVuZXIoJ2ZpbmlzaCcsIG9uZmluaXNoKTtcblx0XHRzdHJlYW0ucmVtb3ZlTGlzdGVuZXIoJ2V4aXQnLCBvbmV4aXQpO1xuXHRcdHN0cmVhbS5yZW1vdmVMaXN0ZW5lcignZW5kJywgb25lbmQpO1xuXHRcdHN0cmVhbS5yZW1vdmVMaXN0ZW5lcignZXJyb3InLCBvbmVycm9yKTtcblx0XHRzdHJlYW0ucmVtb3ZlTGlzdGVuZXIoJ2Nsb3NlJywgb25jbG9zZSk7XG5cdH07XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGVvcztcbiIsICJ2YXIgb25jZSA9IHJlcXVpcmUoJ29uY2UnKVxudmFyIGVvcyA9IHJlcXVpcmUoJ2VuZC1vZi1zdHJlYW0nKVxudmFyIGZzID0gcmVxdWlyZSgnZnMnKSAvLyB3ZSBvbmx5IG5lZWQgZnMgdG8gZ2V0IHRoZSBSZWFkU3RyZWFtIGFuZCBXcml0ZVN0cmVhbSBwcm90b3R5cGVzXG5cbnZhciBub29wID0gZnVuY3Rpb24gKCkge31cbnZhciBhbmNpZW50ID0gL152P1xcLjAvLnRlc3QocHJvY2Vzcy52ZXJzaW9uKVxuXG52YXIgaXNGbiA9IGZ1bmN0aW9uIChmbikge1xuICByZXR1cm4gdHlwZW9mIGZuID09PSAnZnVuY3Rpb24nXG59XG5cbnZhciBpc0ZTID0gZnVuY3Rpb24gKHN0cmVhbSkge1xuICBpZiAoIWFuY2llbnQpIHJldHVybiBmYWxzZSAvLyBuZXdlciBub2RlIHZlcnNpb24gZG8gbm90IG5lZWQgdG8gY2FyZSBhYm91dCBmcyBpcyBhIHNwZWNpYWwgd2F5XG4gIGlmICghZnMpIHJldHVybiBmYWxzZSAvLyBicm93c2VyXG4gIHJldHVybiAoc3RyZWFtIGluc3RhbmNlb2YgKGZzLlJlYWRTdHJlYW0gfHwgbm9vcCkgfHwgc3RyZWFtIGluc3RhbmNlb2YgKGZzLldyaXRlU3RyZWFtIHx8IG5vb3ApKSAmJiBpc0ZuKHN0cmVhbS5jbG9zZSlcbn1cblxudmFyIGlzUmVxdWVzdCA9IGZ1bmN0aW9uIChzdHJlYW0pIHtcbiAgcmV0dXJuIHN0cmVhbS5zZXRIZWFkZXIgJiYgaXNGbihzdHJlYW0uYWJvcnQpXG59XG5cbnZhciBkZXN0cm95ZXIgPSBmdW5jdGlvbiAoc3RyZWFtLCByZWFkaW5nLCB3cml0aW5nLCBjYWxsYmFjaykge1xuICBjYWxsYmFjayA9IG9uY2UoY2FsbGJhY2spXG5cbiAgdmFyIGNsb3NlZCA9IGZhbHNlXG4gIHN0cmVhbS5vbignY2xvc2UnLCBmdW5jdGlvbiAoKSB7XG4gICAgY2xvc2VkID0gdHJ1ZVxuICB9KVxuXG4gIGVvcyhzdHJlYW0sIHtyZWFkYWJsZTogcmVhZGluZywgd3JpdGFibGU6IHdyaXRpbmd9LCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgaWYgKGVycikgcmV0dXJuIGNhbGxiYWNrKGVycilcbiAgICBjbG9zZWQgPSB0cnVlXG4gICAgY2FsbGJhY2soKVxuICB9KVxuXG4gIHZhciBkZXN0cm95ZWQgPSBmYWxzZVxuICByZXR1cm4gZnVuY3Rpb24gKGVycikge1xuICAgIGlmIChjbG9zZWQpIHJldHVyblxuICAgIGlmIChkZXN0cm95ZWQpIHJldHVyblxuICAgIGRlc3Ryb3llZCA9IHRydWVcblxuICAgIGlmIChpc0ZTKHN0cmVhbSkpIHJldHVybiBzdHJlYW0uY2xvc2Uobm9vcCkgLy8gdXNlIGNsb3NlIGZvciBmcyBzdHJlYW1zIHRvIGF2b2lkIGZkIGxlYWtzXG4gICAgaWYgKGlzUmVxdWVzdChzdHJlYW0pKSByZXR1cm4gc3RyZWFtLmFib3J0KCkgLy8gcmVxdWVzdC5kZXN0cm95IGp1c3QgZG8gLmVuZCAtIC5hYm9ydCBpcyB3aGF0IHdlIHdhbnRcblxuICAgIGlmIChpc0ZuKHN0cmVhbS5kZXN0cm95KSkgcmV0dXJuIHN0cmVhbS5kZXN0cm95KClcblxuICAgIGNhbGxiYWNrKGVyciB8fCBuZXcgRXJyb3IoJ3N0cmVhbSB3YXMgZGVzdHJveWVkJykpXG4gIH1cbn1cblxudmFyIGNhbGwgPSBmdW5jdGlvbiAoZm4pIHtcbiAgZm4oKVxufVxuXG52YXIgcGlwZSA9IGZ1bmN0aW9uIChmcm9tLCB0bykge1xuICByZXR1cm4gZnJvbS5waXBlKHRvKVxufVxuXG52YXIgcHVtcCA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIHN0cmVhbXMgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpXG4gIHZhciBjYWxsYmFjayA9IGlzRm4oc3RyZWFtc1tzdHJlYW1zLmxlbmd0aCAtIDFdIHx8IG5vb3ApICYmIHN0cmVhbXMucG9wKCkgfHwgbm9vcFxuXG4gIGlmIChBcnJheS5pc0FycmF5KHN0cmVhbXNbMF0pKSBzdHJlYW1zID0gc3RyZWFtc1swXVxuICBpZiAoc3RyZWFtcy5sZW5ndGggPCAyKSB0aHJvdyBuZXcgRXJyb3IoJ3B1bXAgcmVxdWlyZXMgdHdvIHN0cmVhbXMgcGVyIG1pbmltdW0nKVxuXG4gIHZhciBlcnJvclxuICB2YXIgZGVzdHJveXMgPSBzdHJlYW1zLm1hcChmdW5jdGlvbiAoc3RyZWFtLCBpKSB7XG4gICAgdmFyIHJlYWRpbmcgPSBpIDwgc3RyZWFtcy5sZW5ndGggLSAxXG4gICAgdmFyIHdyaXRpbmcgPSBpID4gMFxuICAgIHJldHVybiBkZXN0cm95ZXIoc3RyZWFtLCByZWFkaW5nLCB3cml0aW5nLCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICBpZiAoIWVycm9yKSBlcnJvciA9IGVyclxuICAgICAgaWYgKGVycikgZGVzdHJveXMuZm9yRWFjaChjYWxsKVxuICAgICAgaWYgKHJlYWRpbmcpIHJldHVyblxuICAgICAgZGVzdHJveXMuZm9yRWFjaChjYWxsKVxuICAgICAgY2FsbGJhY2soZXJyb3IpXG4gICAgfSlcbiAgfSlcblxuICByZXR1cm4gc3RyZWFtcy5yZWR1Y2UocGlwZSlcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBwdW1wXG4iLCAiJ3VzZSBzdHJpY3QnO1xuY29uc3Qge1Bhc3NUaHJvdWdoOiBQYXNzVGhyb3VnaFN0cmVhbX0gPSByZXF1aXJlKCdzdHJlYW0nKTtcblxubW9kdWxlLmV4cG9ydHMgPSBvcHRpb25zID0+IHtcblx0b3B0aW9ucyA9IHsuLi5vcHRpb25zfTtcblxuXHRjb25zdCB7YXJyYXl9ID0gb3B0aW9ucztcblx0bGV0IHtlbmNvZGluZ30gPSBvcHRpb25zO1xuXHRjb25zdCBpc0J1ZmZlciA9IGVuY29kaW5nID09PSAnYnVmZmVyJztcblx0bGV0IG9iamVjdE1vZGUgPSBmYWxzZTtcblxuXHRpZiAoYXJyYXkpIHtcblx0XHRvYmplY3RNb2RlID0gIShlbmNvZGluZyB8fCBpc0J1ZmZlcik7XG5cdH0gZWxzZSB7XG5cdFx0ZW5jb2RpbmcgPSBlbmNvZGluZyB8fCAndXRmOCc7XG5cdH1cblxuXHRpZiAoaXNCdWZmZXIpIHtcblx0XHRlbmNvZGluZyA9IG51bGw7XG5cdH1cblxuXHRjb25zdCBzdHJlYW0gPSBuZXcgUGFzc1Rocm91Z2hTdHJlYW0oe29iamVjdE1vZGV9KTtcblxuXHRpZiAoZW5jb2RpbmcpIHtcblx0XHRzdHJlYW0uc2V0RW5jb2RpbmcoZW5jb2RpbmcpO1xuXHR9XG5cblx0bGV0IGxlbmd0aCA9IDA7XG5cdGNvbnN0IGNodW5rcyA9IFtdO1xuXG5cdHN0cmVhbS5vbignZGF0YScsIGNodW5rID0+IHtcblx0XHRjaHVua3MucHVzaChjaHVuayk7XG5cblx0XHRpZiAob2JqZWN0TW9kZSkge1xuXHRcdFx0bGVuZ3RoID0gY2h1bmtzLmxlbmd0aDtcblx0XHR9IGVsc2Uge1xuXHRcdFx0bGVuZ3RoICs9IGNodW5rLmxlbmd0aDtcblx0XHR9XG5cdH0pO1xuXG5cdHN0cmVhbS5nZXRCdWZmZXJlZFZhbHVlID0gKCkgPT4ge1xuXHRcdGlmIChhcnJheSkge1xuXHRcdFx0cmV0dXJuIGNodW5rcztcblx0XHR9XG5cblx0XHRyZXR1cm4gaXNCdWZmZXIgPyBCdWZmZXIuY29uY2F0KGNodW5rcywgbGVuZ3RoKSA6IGNodW5rcy5qb2luKCcnKTtcblx0fTtcblxuXHRzdHJlYW0uZ2V0QnVmZmVyZWRMZW5ndGggPSAoKSA9PiBsZW5ndGg7XG5cblx0cmV0dXJuIHN0cmVhbTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xuY29uc3Qge2NvbnN0YW50czogQnVmZmVyQ29uc3RhbnRzfSA9IHJlcXVpcmUoJ2J1ZmZlcicpO1xuY29uc3QgcHVtcCA9IHJlcXVpcmUoJ3B1bXAnKTtcbmNvbnN0IGJ1ZmZlclN0cmVhbSA9IHJlcXVpcmUoJy4vYnVmZmVyLXN0cmVhbScpO1xuXG5jbGFzcyBNYXhCdWZmZXJFcnJvciBleHRlbmRzIEVycm9yIHtcblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0c3VwZXIoJ21heEJ1ZmZlciBleGNlZWRlZCcpO1xuXHRcdHRoaXMubmFtZSA9ICdNYXhCdWZmZXJFcnJvcic7XG5cdH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0U3RyZWFtKGlucHV0U3RyZWFtLCBvcHRpb25zKSB7XG5cdGlmICghaW5wdXRTdHJlYW0pIHtcblx0XHRyZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCdFeHBlY3RlZCBhIHN0cmVhbScpKTtcblx0fVxuXG5cdG9wdGlvbnMgPSB7XG5cdFx0bWF4QnVmZmVyOiBJbmZpbml0eSxcblx0XHQuLi5vcHRpb25zXG5cdH07XG5cblx0Y29uc3Qge21heEJ1ZmZlcn0gPSBvcHRpb25zO1xuXG5cdGxldCBzdHJlYW07XG5cdGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcblx0XHRjb25zdCByZWplY3RQcm9taXNlID0gZXJyb3IgPT4ge1xuXHRcdFx0Ly8gRG9uJ3QgcmV0cmlldmUgYW4gb3ZlcnNpemVkIGJ1ZmZlci5cblx0XHRcdGlmIChlcnJvciAmJiBzdHJlYW0uZ2V0QnVmZmVyZWRMZW5ndGgoKSA8PSBCdWZmZXJDb25zdGFudHMuTUFYX0xFTkdUSCkge1xuXHRcdFx0XHRlcnJvci5idWZmZXJlZERhdGEgPSBzdHJlYW0uZ2V0QnVmZmVyZWRWYWx1ZSgpO1xuXHRcdFx0fVxuXG5cdFx0XHRyZWplY3QoZXJyb3IpO1xuXHRcdH07XG5cblx0XHRzdHJlYW0gPSBwdW1wKGlucHV0U3RyZWFtLCBidWZmZXJTdHJlYW0ob3B0aW9ucyksIGVycm9yID0+IHtcblx0XHRcdGlmIChlcnJvcikge1xuXHRcdFx0XHRyZWplY3RQcm9taXNlKGVycm9yKTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXNvbHZlKCk7XG5cdFx0fSk7XG5cblx0XHRzdHJlYW0ub24oJ2RhdGEnLCAoKSA9PiB7XG5cdFx0XHRpZiAoc3RyZWFtLmdldEJ1ZmZlcmVkTGVuZ3RoKCkgPiBtYXhCdWZmZXIpIHtcblx0XHRcdFx0cmVqZWN0UHJvbWlzZShuZXcgTWF4QnVmZmVyRXJyb3IoKSk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH0pO1xuXG5cdHJldHVybiBzdHJlYW0uZ2V0QnVmZmVyZWRWYWx1ZSgpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldFN0cmVhbTtcbi8vIFRPRE86IFJlbW92ZSB0aGlzIGZvciB0aGUgbmV4dCBtYWpvciByZWxlYXNlXG5tb2R1bGUuZXhwb3J0cy5kZWZhdWx0ID0gZ2V0U3RyZWFtO1xubW9kdWxlLmV4cG9ydHMuYnVmZmVyID0gKHN0cmVhbSwgb3B0aW9ucykgPT4gZ2V0U3RyZWFtKHN0cmVhbSwgey4uLm9wdGlvbnMsIGVuY29kaW5nOiAnYnVmZmVyJ30pO1xubW9kdWxlLmV4cG9ydHMuYXJyYXkgPSAoc3RyZWFtLCBvcHRpb25zKSA9PiBnZXRTdHJlYW0oc3RyZWFtLCB7Li4ub3B0aW9ucywgYXJyYXk6IHRydWV9KTtcbm1vZHVsZS5leHBvcnRzLk1heEJ1ZmZlckVycm9yID0gTWF4QnVmZmVyRXJyb3I7XG4iLCAiJ3VzZSBzdHJpY3QnO1xuLy8gcmZjNzIzMSA2LjFcbmNvbnN0IHN0YXR1c0NvZGVDYWNoZWFibGVCeURlZmF1bHQgPSBuZXcgU2V0KFtcbiAgICAyMDAsXG4gICAgMjAzLFxuICAgIDIwNCxcbiAgICAyMDYsXG4gICAgMzAwLFxuICAgIDMwMSxcbiAgICA0MDQsXG4gICAgNDA1LFxuICAgIDQxMCxcbiAgICA0MTQsXG4gICAgNTAxLFxuXSk7XG5cbi8vIFRoaXMgaW1wbGVtZW50YXRpb24gZG9lcyBub3QgdW5kZXJzdGFuZCBwYXJ0aWFsIHJlc3BvbnNlcyAoMjA2KVxuY29uc3QgdW5kZXJzdG9vZFN0YXR1c2VzID0gbmV3IFNldChbXG4gICAgMjAwLFxuICAgIDIwMyxcbiAgICAyMDQsXG4gICAgMzAwLFxuICAgIDMwMSxcbiAgICAzMDIsXG4gICAgMzAzLFxuICAgIDMwNyxcbiAgICAzMDgsXG4gICAgNDA0LFxuICAgIDQwNSxcbiAgICA0MTAsXG4gICAgNDE0LFxuICAgIDUwMSxcbl0pO1xuXG5jb25zdCBlcnJvclN0YXR1c0NvZGVzID0gbmV3IFNldChbXG4gICAgNTAwLFxuICAgIDUwMixcbiAgICA1MDMsIFxuICAgIDUwNCxcbl0pO1xuXG5jb25zdCBob3BCeUhvcEhlYWRlcnMgPSB7XG4gICAgZGF0ZTogdHJ1ZSwgLy8gaW5jbHVkZWQsIGJlY2F1c2Ugd2UgYWRkIEFnZSB1cGRhdGUgRGF0ZVxuICAgIGNvbm5lY3Rpb246IHRydWUsXG4gICAgJ2tlZXAtYWxpdmUnOiB0cnVlLFxuICAgICdwcm94eS1hdXRoZW50aWNhdGUnOiB0cnVlLFxuICAgICdwcm94eS1hdXRob3JpemF0aW9uJzogdHJ1ZSxcbiAgICB0ZTogdHJ1ZSxcbiAgICB0cmFpbGVyOiB0cnVlLFxuICAgICd0cmFuc2Zlci1lbmNvZGluZyc6IHRydWUsXG4gICAgdXBncmFkZTogdHJ1ZSxcbn07XG5cbmNvbnN0IGV4Y2x1ZGVkRnJvbVJldmFsaWRhdGlvblVwZGF0ZSA9IHtcbiAgICAvLyBTaW5jZSB0aGUgb2xkIGJvZHkgaXMgcmV1c2VkLCBpdCBkb2Vzbid0IG1ha2Ugc2Vuc2UgdG8gY2hhbmdlIHByb3BlcnRpZXMgb2YgdGhlIGJvZHlcbiAgICAnY29udGVudC1sZW5ndGgnOiB0cnVlLFxuICAgICdjb250ZW50LWVuY29kaW5nJzogdHJ1ZSxcbiAgICAndHJhbnNmZXItZW5jb2RpbmcnOiB0cnVlLFxuICAgICdjb250ZW50LXJhbmdlJzogdHJ1ZSxcbn07XG5cbmZ1bmN0aW9uIHRvTnVtYmVyT3JaZXJvKHMpIHtcbiAgICBjb25zdCBuID0gcGFyc2VJbnQocywgMTApO1xuICAgIHJldHVybiBpc0Zpbml0ZShuKSA/IG4gOiAwO1xufVxuXG4vLyBSRkMgNTg2MVxuZnVuY3Rpb24gaXNFcnJvclJlc3BvbnNlKHJlc3BvbnNlKSB7XG4gICAgLy8gY29uc2lkZXIgdW5kZWZpbmVkIHJlc3BvbnNlIGFzIGZhdWx0eVxuICAgIGlmKCFyZXNwb25zZSkge1xuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cbiAgICByZXR1cm4gZXJyb3JTdGF0dXNDb2Rlcy5oYXMocmVzcG9uc2Uuc3RhdHVzKTtcbn1cblxuZnVuY3Rpb24gcGFyc2VDYWNoZUNvbnRyb2woaGVhZGVyKSB7XG4gICAgY29uc3QgY2MgPSB7fTtcbiAgICBpZiAoIWhlYWRlcikgcmV0dXJuIGNjO1xuXG4gICAgLy8gVE9ETzogV2hlbiB0aGVyZSBpcyBtb3JlIHRoYW4gb25lIHZhbHVlIHByZXNlbnQgZm9yIGEgZ2l2ZW4gZGlyZWN0aXZlIChlLmcuLCB0d28gRXhwaXJlcyBoZWFkZXIgZmllbGRzLCBtdWx0aXBsZSBDYWNoZS1Db250cm9sOiBtYXgtYWdlIGRpcmVjdGl2ZXMpLFxuICAgIC8vIHRoZSBkaXJlY3RpdmUncyB2YWx1ZSBpcyBjb25zaWRlcmVkIGludmFsaWQuIENhY2hlcyBhcmUgZW5jb3VyYWdlZCB0byBjb25zaWRlciByZXNwb25zZXMgdGhhdCBoYXZlIGludmFsaWQgZnJlc2huZXNzIGluZm9ybWF0aW9uIHRvIGJlIHN0YWxlXG4gICAgY29uc3QgcGFydHMgPSBoZWFkZXIudHJpbSgpLnNwbGl0KC9cXHMqLFxccyovKTsgLy8gVE9ETzogbGFtZSBwYXJzaW5nXG4gICAgZm9yIChjb25zdCBwYXJ0IG9mIHBhcnRzKSB7XG4gICAgICAgIGNvbnN0IFtrLCB2XSA9IHBhcnQuc3BsaXQoL1xccyo9XFxzKi8sIDIpO1xuICAgICAgICBjY1trXSA9IHYgPT09IHVuZGVmaW5lZCA/IHRydWUgOiB2LnJlcGxhY2UoL15cInxcIiQvZywgJycpOyAvLyBUT0RPOiBsYW1lIHVucXVvdGluZ1xuICAgIH1cblxuICAgIHJldHVybiBjYztcbn1cblxuZnVuY3Rpb24gZm9ybWF0Q2FjaGVDb250cm9sKGNjKSB7XG4gICAgbGV0IHBhcnRzID0gW107XG4gICAgZm9yIChjb25zdCBrIGluIGNjKSB7XG4gICAgICAgIGNvbnN0IHYgPSBjY1trXTtcbiAgICAgICAgcGFydHMucHVzaCh2ID09PSB0cnVlID8gayA6IGsgKyAnPScgKyB2KTtcbiAgICB9XG4gICAgaWYgKCFwYXJ0cy5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgcmV0dXJuIHBhcnRzLmpvaW4oJywgJyk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2xhc3MgQ2FjaGVQb2xpY3kge1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICByZXEsXG4gICAgICAgIHJlcyxcbiAgICAgICAge1xuICAgICAgICAgICAgc2hhcmVkLFxuICAgICAgICAgICAgY2FjaGVIZXVyaXN0aWMsXG4gICAgICAgICAgICBpbW11dGFibGVNaW5UaW1lVG9MaXZlLFxuICAgICAgICAgICAgaWdub3JlQ2FyZ29DdWx0LFxuICAgICAgICAgICAgX2Zyb21PYmplY3QsXG4gICAgICAgIH0gPSB7fVxuICAgICkge1xuICAgICAgICBpZiAoX2Zyb21PYmplY3QpIHtcbiAgICAgICAgICAgIHRoaXMuX2Zyb21PYmplY3QoX2Zyb21PYmplY3QpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFyZXMgfHwgIXJlcy5oZWFkZXJzKSB7XG4gICAgICAgICAgICB0aHJvdyBFcnJvcignUmVzcG9uc2UgaGVhZGVycyBtaXNzaW5nJyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fYXNzZXJ0UmVxdWVzdEhhc0hlYWRlcnMocmVxKTtcblxuICAgICAgICB0aGlzLl9yZXNwb25zZVRpbWUgPSB0aGlzLm5vdygpO1xuICAgICAgICB0aGlzLl9pc1NoYXJlZCA9IHNoYXJlZCAhPT0gZmFsc2U7XG4gICAgICAgIHRoaXMuX2NhY2hlSGV1cmlzdGljID1cbiAgICAgICAgICAgIHVuZGVmaW5lZCAhPT0gY2FjaGVIZXVyaXN0aWMgPyBjYWNoZUhldXJpc3RpYyA6IDAuMTsgLy8gMTAlIG1hdGNoZXMgSUVcbiAgICAgICAgdGhpcy5faW1tdXRhYmxlTWluVHRsID1cbiAgICAgICAgICAgIHVuZGVmaW5lZCAhPT0gaW1tdXRhYmxlTWluVGltZVRvTGl2ZVxuICAgICAgICAgICAgICAgID8gaW1tdXRhYmxlTWluVGltZVRvTGl2ZVxuICAgICAgICAgICAgICAgIDogMjQgKiAzNjAwICogMTAwMDtcblxuICAgICAgICB0aGlzLl9zdGF0dXMgPSAnc3RhdHVzJyBpbiByZXMgPyByZXMuc3RhdHVzIDogMjAwO1xuICAgICAgICB0aGlzLl9yZXNIZWFkZXJzID0gcmVzLmhlYWRlcnM7XG4gICAgICAgIHRoaXMuX3Jlc2NjID0gcGFyc2VDYWNoZUNvbnRyb2wocmVzLmhlYWRlcnNbJ2NhY2hlLWNvbnRyb2wnXSk7XG4gICAgICAgIHRoaXMuX21ldGhvZCA9ICdtZXRob2QnIGluIHJlcSA/IHJlcS5tZXRob2QgOiAnR0VUJztcbiAgICAgICAgdGhpcy5fdXJsID0gcmVxLnVybDtcbiAgICAgICAgdGhpcy5faG9zdCA9IHJlcS5oZWFkZXJzLmhvc3Q7XG4gICAgICAgIHRoaXMuX25vQXV0aG9yaXphdGlvbiA9ICFyZXEuaGVhZGVycy5hdXRob3JpemF0aW9uO1xuICAgICAgICB0aGlzLl9yZXFIZWFkZXJzID0gcmVzLmhlYWRlcnMudmFyeSA/IHJlcS5oZWFkZXJzIDogbnVsbDsgLy8gRG9uJ3Qga2VlcCBhbGwgcmVxdWVzdCBoZWFkZXJzIGlmIHRoZXkgd29uJ3QgYmUgdXNlZFxuICAgICAgICB0aGlzLl9yZXFjYyA9IHBhcnNlQ2FjaGVDb250cm9sKHJlcS5oZWFkZXJzWydjYWNoZS1jb250cm9sJ10pO1xuXG4gICAgICAgIC8vIEFzc3VtZSB0aGF0IGlmIHNvbWVvbmUgdXNlcyBsZWdhY3ksIG5vbi1zdGFuZGFyZCB1bmNlY2Vzc2FyeSBvcHRpb25zIHRoZXkgZG9uJ3QgdW5kZXJzdGFuZCBjYWNoaW5nLFxuICAgICAgICAvLyBzbyB0aGVyZSdzIG5vIHBvaW50IHN0cmljbHkgYWRoZXJpbmcgdG8gdGhlIGJsaW5kbHkgY29weSZwYXN0ZWQgZGlyZWN0aXZlcy5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgaWdub3JlQ2FyZ29DdWx0ICYmXG4gICAgICAgICAgICAncHJlLWNoZWNrJyBpbiB0aGlzLl9yZXNjYyAmJlxuICAgICAgICAgICAgJ3Bvc3QtY2hlY2snIGluIHRoaXMuX3Jlc2NjXG4gICAgICAgICkge1xuICAgICAgICAgICAgZGVsZXRlIHRoaXMuX3Jlc2NjWydwcmUtY2hlY2snXTtcbiAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9yZXNjY1sncG9zdC1jaGVjayddO1xuICAgICAgICAgICAgZGVsZXRlIHRoaXMuX3Jlc2NjWyduby1jYWNoZSddO1xuICAgICAgICAgICAgZGVsZXRlIHRoaXMuX3Jlc2NjWyduby1zdG9yZSddO1xuICAgICAgICAgICAgZGVsZXRlIHRoaXMuX3Jlc2NjWydtdXN0LXJldmFsaWRhdGUnXTtcbiAgICAgICAgICAgIHRoaXMuX3Jlc0hlYWRlcnMgPSBPYmplY3QuYXNzaWduKHt9LCB0aGlzLl9yZXNIZWFkZXJzLCB7XG4gICAgICAgICAgICAgICAgJ2NhY2hlLWNvbnRyb2wnOiBmb3JtYXRDYWNoZUNvbnRyb2wodGhpcy5fcmVzY2MpLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBkZWxldGUgdGhpcy5fcmVzSGVhZGVycy5leHBpcmVzO1xuICAgICAgICAgICAgZGVsZXRlIHRoaXMuX3Jlc0hlYWRlcnMucHJhZ21hO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gV2hlbiB0aGUgQ2FjaGUtQ29udHJvbCBoZWFkZXIgZmllbGQgaXMgbm90IHByZXNlbnQgaW4gYSByZXF1ZXN0LCBjYWNoZXMgTVVTVCBjb25zaWRlciB0aGUgbm8tY2FjaGUgcmVxdWVzdCBwcmFnbWEtZGlyZWN0aXZlXG4gICAgICAgIC8vIGFzIGhhdmluZyB0aGUgc2FtZSBlZmZlY3QgYXMgaWYgXCJDYWNoZS1Db250cm9sOiBuby1jYWNoZVwiIHdlcmUgcHJlc2VudCAoc2VlIFNlY3Rpb24gNS4yLjEpLlxuICAgICAgICBpZiAoXG4gICAgICAgICAgICByZXMuaGVhZGVyc1snY2FjaGUtY29udHJvbCddID09IG51bGwgJiZcbiAgICAgICAgICAgIC9uby1jYWNoZS8udGVzdChyZXMuaGVhZGVycy5wcmFnbWEpXG4gICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5fcmVzY2NbJ25vLWNhY2hlJ10gPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbm93KCkge1xuICAgICAgICByZXR1cm4gRGF0ZS5ub3coKTtcbiAgICB9XG5cbiAgICBzdG9yYWJsZSgpIHtcbiAgICAgICAgLy8gVGhlIFwibm8tc3RvcmVcIiByZXF1ZXN0IGRpcmVjdGl2ZSBpbmRpY2F0ZXMgdGhhdCBhIGNhY2hlIE1VU1QgTk9UIHN0b3JlIGFueSBwYXJ0IG9mIGVpdGhlciB0aGlzIHJlcXVlc3Qgb3IgYW55IHJlc3BvbnNlIHRvIGl0LlxuICAgICAgICByZXR1cm4gISEoXG4gICAgICAgICAgICAhdGhpcy5fcmVxY2NbJ25vLXN0b3JlJ10gJiZcbiAgICAgICAgICAgIC8vIEEgY2FjaGUgTVVTVCBOT1Qgc3RvcmUgYSByZXNwb25zZSB0byBhbnkgcmVxdWVzdCwgdW5sZXNzOlxuICAgICAgICAgICAgLy8gVGhlIHJlcXVlc3QgbWV0aG9kIGlzIHVuZGVyc3Rvb2QgYnkgdGhlIGNhY2hlIGFuZCBkZWZpbmVkIGFzIGJlaW5nIGNhY2hlYWJsZSwgYW5kXG4gICAgICAgICAgICAoJ0dFVCcgPT09IHRoaXMuX21ldGhvZCB8fFxuICAgICAgICAgICAgICAgICdIRUFEJyA9PT0gdGhpcy5fbWV0aG9kIHx8XG4gICAgICAgICAgICAgICAgKCdQT1NUJyA9PT0gdGhpcy5fbWV0aG9kICYmIHRoaXMuX2hhc0V4cGxpY2l0RXhwaXJhdGlvbigpKSkgJiZcbiAgICAgICAgICAgIC8vIHRoZSByZXNwb25zZSBzdGF0dXMgY29kZSBpcyB1bmRlcnN0b29kIGJ5IHRoZSBjYWNoZSwgYW5kXG4gICAgICAgICAgICB1bmRlcnN0b29kU3RhdHVzZXMuaGFzKHRoaXMuX3N0YXR1cykgJiZcbiAgICAgICAgICAgIC8vIHRoZSBcIm5vLXN0b3JlXCIgY2FjaGUgZGlyZWN0aXZlIGRvZXMgbm90IGFwcGVhciBpbiByZXF1ZXN0IG9yIHJlc3BvbnNlIGhlYWRlciBmaWVsZHMsIGFuZFxuICAgICAgICAgICAgIXRoaXMuX3Jlc2NjWyduby1zdG9yZSddICYmXG4gICAgICAgICAgICAvLyB0aGUgXCJwcml2YXRlXCIgcmVzcG9uc2UgZGlyZWN0aXZlIGRvZXMgbm90IGFwcGVhciBpbiB0aGUgcmVzcG9uc2UsIGlmIHRoZSBjYWNoZSBpcyBzaGFyZWQsIGFuZFxuICAgICAgICAgICAgKCF0aGlzLl9pc1NoYXJlZCB8fCAhdGhpcy5fcmVzY2MucHJpdmF0ZSkgJiZcbiAgICAgICAgICAgIC8vIHRoZSBBdXRob3JpemF0aW9uIGhlYWRlciBmaWVsZCBkb2VzIG5vdCBhcHBlYXIgaW4gdGhlIHJlcXVlc3QsIGlmIHRoZSBjYWNoZSBpcyBzaGFyZWQsXG4gICAgICAgICAgICAoIXRoaXMuX2lzU2hhcmVkIHx8XG4gICAgICAgICAgICAgICAgdGhpcy5fbm9BdXRob3JpemF0aW9uIHx8XG4gICAgICAgICAgICAgICAgdGhpcy5fYWxsb3dzU3RvcmluZ0F1dGhlbnRpY2F0ZWQoKSkgJiZcbiAgICAgICAgICAgIC8vIHRoZSByZXNwb25zZSBlaXRoZXI6XG4gICAgICAgICAgICAvLyBjb250YWlucyBhbiBFeHBpcmVzIGhlYWRlciBmaWVsZCwgb3JcbiAgICAgICAgICAgICh0aGlzLl9yZXNIZWFkZXJzLmV4cGlyZXMgfHxcbiAgICAgICAgICAgICAgICAvLyBjb250YWlucyBhIG1heC1hZ2UgcmVzcG9uc2UgZGlyZWN0aXZlLCBvclxuICAgICAgICAgICAgICAgIC8vIGNvbnRhaW5zIGEgcy1tYXhhZ2UgcmVzcG9uc2UgZGlyZWN0aXZlIGFuZCB0aGUgY2FjaGUgaXMgc2hhcmVkLCBvclxuICAgICAgICAgICAgICAgIC8vIGNvbnRhaW5zIGEgcHVibGljIHJlc3BvbnNlIGRpcmVjdGl2ZS5cbiAgICAgICAgICAgICAgICB0aGlzLl9yZXNjY1snbWF4LWFnZSddIHx8XG4gICAgICAgICAgICAgICAgKHRoaXMuX2lzU2hhcmVkICYmIHRoaXMuX3Jlc2NjWydzLW1heGFnZSddKSB8fFxuICAgICAgICAgICAgICAgIHRoaXMuX3Jlc2NjLnB1YmxpYyB8fFxuICAgICAgICAgICAgICAgIC8vIGhhcyBhIHN0YXR1cyBjb2RlIHRoYXQgaXMgZGVmaW5lZCBhcyBjYWNoZWFibGUgYnkgZGVmYXVsdFxuICAgICAgICAgICAgICAgIHN0YXR1c0NvZGVDYWNoZWFibGVCeURlZmF1bHQuaGFzKHRoaXMuX3N0YXR1cykpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgX2hhc0V4cGxpY2l0RXhwaXJhdGlvbigpIHtcbiAgICAgICAgLy8gNC4yLjEgQ2FsY3VsYXRpbmcgRnJlc2huZXNzIExpZmV0aW1lXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAodGhpcy5faXNTaGFyZWQgJiYgdGhpcy5fcmVzY2NbJ3MtbWF4YWdlJ10pIHx8XG4gICAgICAgICAgICB0aGlzLl9yZXNjY1snbWF4LWFnZSddIHx8XG4gICAgICAgICAgICB0aGlzLl9yZXNIZWFkZXJzLmV4cGlyZXNcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBfYXNzZXJ0UmVxdWVzdEhhc0hlYWRlcnMocmVxKSB7XG4gICAgICAgIGlmICghcmVxIHx8ICFyZXEuaGVhZGVycykge1xuICAgICAgICAgICAgdGhyb3cgRXJyb3IoJ1JlcXVlc3QgaGVhZGVycyBtaXNzaW5nJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzYXRpc2ZpZXNXaXRob3V0UmV2YWxpZGF0aW9uKHJlcSkge1xuICAgICAgICB0aGlzLl9hc3NlcnRSZXF1ZXN0SGFzSGVhZGVycyhyZXEpO1xuXG4gICAgICAgIC8vIFdoZW4gcHJlc2VudGVkIHdpdGggYSByZXF1ZXN0LCBhIGNhY2hlIE1VU1QgTk9UIHJldXNlIGEgc3RvcmVkIHJlc3BvbnNlLCB1bmxlc3M6XG4gICAgICAgIC8vIHRoZSBwcmVzZW50ZWQgcmVxdWVzdCBkb2VzIG5vdCBjb250YWluIHRoZSBuby1jYWNoZSBwcmFnbWEgKFNlY3Rpb24gNS40KSwgbm9yIHRoZSBuby1jYWNoZSBjYWNoZSBkaXJlY3RpdmUsXG4gICAgICAgIC8vIHVubGVzcyB0aGUgc3RvcmVkIHJlc3BvbnNlIGlzIHN1Y2Nlc3NmdWxseSB2YWxpZGF0ZWQgKFNlY3Rpb24gNC4zKSwgYW5kXG4gICAgICAgIGNvbnN0IHJlcXVlc3RDQyA9IHBhcnNlQ2FjaGVDb250cm9sKHJlcS5oZWFkZXJzWydjYWNoZS1jb250cm9sJ10pO1xuICAgICAgICBpZiAocmVxdWVzdENDWyduby1jYWNoZSddIHx8IC9uby1jYWNoZS8udGVzdChyZXEuaGVhZGVycy5wcmFnbWEpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocmVxdWVzdENDWydtYXgtYWdlJ10gJiYgdGhpcy5hZ2UoKSA+IHJlcXVlc3RDQ1snbWF4LWFnZSddKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoXG4gICAgICAgICAgICByZXF1ZXN0Q0NbJ21pbi1mcmVzaCddICYmXG4gICAgICAgICAgICB0aGlzLnRpbWVUb0xpdmUoKSA8IDEwMDAgKiByZXF1ZXN0Q0NbJ21pbi1mcmVzaCddXG4gICAgICAgICkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gdGhlIHN0b3JlZCByZXNwb25zZSBpcyBlaXRoZXI6XG4gICAgICAgIC8vIGZyZXNoLCBvciBhbGxvd2VkIHRvIGJlIHNlcnZlZCBzdGFsZVxuICAgICAgICBpZiAodGhpcy5zdGFsZSgpKSB7XG4gICAgICAgICAgICBjb25zdCBhbGxvd3NTdGFsZSA9XG4gICAgICAgICAgICAgICAgcmVxdWVzdENDWydtYXgtc3RhbGUnXSAmJlxuICAgICAgICAgICAgICAgICF0aGlzLl9yZXNjY1snbXVzdC1yZXZhbGlkYXRlJ10gJiZcbiAgICAgICAgICAgICAgICAodHJ1ZSA9PT0gcmVxdWVzdENDWydtYXgtc3RhbGUnXSB8fFxuICAgICAgICAgICAgICAgICAgICByZXF1ZXN0Q0NbJ21heC1zdGFsZSddID4gdGhpcy5hZ2UoKSAtIHRoaXMubWF4QWdlKCkpO1xuICAgICAgICAgICAgaWYgKCFhbGxvd3NTdGFsZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLl9yZXF1ZXN0TWF0Y2hlcyhyZXEsIGZhbHNlKTtcbiAgICB9XG5cbiAgICBfcmVxdWVzdE1hdGNoZXMocmVxLCBhbGxvd0hlYWRNZXRob2QpIHtcbiAgICAgICAgLy8gVGhlIHByZXNlbnRlZCBlZmZlY3RpdmUgcmVxdWVzdCBVUkkgYW5kIHRoYXQgb2YgdGhlIHN0b3JlZCByZXNwb25zZSBtYXRjaCwgYW5kXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAoIXRoaXMuX3VybCB8fCB0aGlzLl91cmwgPT09IHJlcS51cmwpICYmXG4gICAgICAgICAgICB0aGlzLl9ob3N0ID09PSByZXEuaGVhZGVycy5ob3N0ICYmXG4gICAgICAgICAgICAvLyB0aGUgcmVxdWVzdCBtZXRob2QgYXNzb2NpYXRlZCB3aXRoIHRoZSBzdG9yZWQgcmVzcG9uc2UgYWxsb3dzIGl0IHRvIGJlIHVzZWQgZm9yIHRoZSBwcmVzZW50ZWQgcmVxdWVzdCwgYW5kXG4gICAgICAgICAgICAoIXJlcS5tZXRob2QgfHxcbiAgICAgICAgICAgICAgICB0aGlzLl9tZXRob2QgPT09IHJlcS5tZXRob2QgfHxcbiAgICAgICAgICAgICAgICAoYWxsb3dIZWFkTWV0aG9kICYmICdIRUFEJyA9PT0gcmVxLm1ldGhvZCkpICYmXG4gICAgICAgICAgICAvLyBzZWxlY3RpbmcgaGVhZGVyIGZpZWxkcyBub21pbmF0ZWQgYnkgdGhlIHN0b3JlZCByZXNwb25zZSAoaWYgYW55KSBtYXRjaCB0aG9zZSBwcmVzZW50ZWQsIGFuZFxuICAgICAgICAgICAgdGhpcy5fdmFyeU1hdGNoZXMocmVxKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIF9hbGxvd3NTdG9yaW5nQXV0aGVudGljYXRlZCgpIHtcbiAgICAgICAgLy8gIGZvbGxvd2luZyBDYWNoZS1Db250cm9sIHJlc3BvbnNlIGRpcmVjdGl2ZXMgKFNlY3Rpb24gNS4yLjIpIGhhdmUgc3VjaCBhbiBlZmZlY3Q6IG11c3QtcmV2YWxpZGF0ZSwgcHVibGljLCBhbmQgcy1tYXhhZ2UuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICB0aGlzLl9yZXNjY1snbXVzdC1yZXZhbGlkYXRlJ10gfHxcbiAgICAgICAgICAgIHRoaXMuX3Jlc2NjLnB1YmxpYyB8fFxuICAgICAgICAgICAgdGhpcy5fcmVzY2NbJ3MtbWF4YWdlJ11cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBfdmFyeU1hdGNoZXMocmVxKSB7XG4gICAgICAgIGlmICghdGhpcy5fcmVzSGVhZGVycy52YXJ5KSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEEgVmFyeSBoZWFkZXIgZmllbGQtdmFsdWUgb2YgXCIqXCIgYWx3YXlzIGZhaWxzIHRvIG1hdGNoXG4gICAgICAgIGlmICh0aGlzLl9yZXNIZWFkZXJzLnZhcnkgPT09ICcqJykge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZmllbGRzID0gdGhpcy5fcmVzSGVhZGVycy52YXJ5XG4gICAgICAgICAgICAudHJpbSgpXG4gICAgICAgICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgICAgICAgLnNwbGl0KC9cXHMqLFxccyovKTtcbiAgICAgICAgZm9yIChjb25zdCBuYW1lIG9mIGZpZWxkcykge1xuICAgICAgICAgICAgaWYgKHJlcS5oZWFkZXJzW25hbWVdICE9PSB0aGlzLl9yZXFIZWFkZXJzW25hbWVdKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgX2NvcHlXaXRob3V0SG9wQnlIb3BIZWFkZXJzKGluSGVhZGVycykge1xuICAgICAgICBjb25zdCBoZWFkZXJzID0ge307XG4gICAgICAgIGZvciAoY29uc3QgbmFtZSBpbiBpbkhlYWRlcnMpIHtcbiAgICAgICAgICAgIGlmIChob3BCeUhvcEhlYWRlcnNbbmFtZV0pIGNvbnRpbnVlO1xuICAgICAgICAgICAgaGVhZGVyc1tuYW1lXSA9IGluSGVhZGVyc1tuYW1lXTtcbiAgICAgICAgfVxuICAgICAgICAvLyA5LjEuICBDb25uZWN0aW9uXG4gICAgICAgIGlmIChpbkhlYWRlcnMuY29ubmVjdGlvbikge1xuICAgICAgICAgICAgY29uc3QgdG9rZW5zID0gaW5IZWFkZXJzLmNvbm5lY3Rpb24udHJpbSgpLnNwbGl0KC9cXHMqLFxccyovKTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgbmFtZSBvZiB0b2tlbnMpIHtcbiAgICAgICAgICAgICAgICBkZWxldGUgaGVhZGVyc1tuYW1lXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoaGVhZGVycy53YXJuaW5nKSB7XG4gICAgICAgICAgICBjb25zdCB3YXJuaW5ncyA9IGhlYWRlcnMud2FybmluZy5zcGxpdCgvLC8pLmZpbHRlcih3YXJuaW5nID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gIS9eXFxzKjFbMC05XVswLTldLy50ZXN0KHdhcm5pbmcpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAoIXdhcm5pbmdzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBoZWFkZXJzLndhcm5pbmc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGhlYWRlcnMud2FybmluZyA9IHdhcm5pbmdzLmpvaW4oJywnKS50cmltKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGhlYWRlcnM7XG4gICAgfVxuXG4gICAgcmVzcG9uc2VIZWFkZXJzKCkge1xuICAgICAgICBjb25zdCBoZWFkZXJzID0gdGhpcy5fY29weVdpdGhvdXRIb3BCeUhvcEhlYWRlcnModGhpcy5fcmVzSGVhZGVycyk7XG4gICAgICAgIGNvbnN0IGFnZSA9IHRoaXMuYWdlKCk7XG5cbiAgICAgICAgLy8gQSBjYWNoZSBTSE9VTEQgZ2VuZXJhdGUgMTEzIHdhcm5pbmcgaWYgaXQgaGV1cmlzdGljYWxseSBjaG9zZSBhIGZyZXNobmVzc1xuICAgICAgICAvLyBsaWZldGltZSBncmVhdGVyIHRoYW4gMjQgaG91cnMgYW5kIHRoZSByZXNwb25zZSdzIGFnZSBpcyBncmVhdGVyIHRoYW4gMjQgaG91cnMuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIGFnZSA+IDM2MDAgKiAyNCAmJlxuICAgICAgICAgICAgIXRoaXMuX2hhc0V4cGxpY2l0RXhwaXJhdGlvbigpICYmXG4gICAgICAgICAgICB0aGlzLm1heEFnZSgpID4gMzYwMCAqIDI0XG4gICAgICAgICkge1xuICAgICAgICAgICAgaGVhZGVycy53YXJuaW5nID1cbiAgICAgICAgICAgICAgICAoaGVhZGVycy53YXJuaW5nID8gYCR7aGVhZGVycy53YXJuaW5nfSwgYCA6ICcnKSArXG4gICAgICAgICAgICAgICAgJzExMyAtIFwicmZjNzIzNCA1LjUuNFwiJztcbiAgICAgICAgfVxuICAgICAgICBoZWFkZXJzLmFnZSA9IGAke01hdGgucm91bmQoYWdlKX1gO1xuICAgICAgICBoZWFkZXJzLmRhdGUgPSBuZXcgRGF0ZSh0aGlzLm5vdygpKS50b1VUQ1N0cmluZygpO1xuICAgICAgICByZXR1cm4gaGVhZGVycztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBWYWx1ZSBvZiB0aGUgRGF0ZSByZXNwb25zZSBoZWFkZXIgb3IgY3VycmVudCB0aW1lIGlmIERhdGUgd2FzIGludmFsaWRcbiAgICAgKiBAcmV0dXJuIHRpbWVzdGFtcFxuICAgICAqL1xuICAgIGRhdGUoKSB7XG4gICAgICAgIGNvbnN0IHNlcnZlckRhdGUgPSBEYXRlLnBhcnNlKHRoaXMuX3Jlc0hlYWRlcnMuZGF0ZSk7XG4gICAgICAgIGlmIChpc0Zpbml0ZShzZXJ2ZXJEYXRlKSkge1xuICAgICAgICAgICAgcmV0dXJuIHNlcnZlckRhdGU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc3BvbnNlVGltZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBWYWx1ZSBvZiB0aGUgQWdlIGhlYWRlciwgaW4gc2Vjb25kcywgdXBkYXRlZCBmb3IgdGhlIGN1cnJlbnQgdGltZS5cbiAgICAgKiBNYXkgYmUgZnJhY3Rpb25hbC5cbiAgICAgKlxuICAgICAqIEByZXR1cm4gTnVtYmVyXG4gICAgICovXG4gICAgYWdlKCkge1xuICAgICAgICBsZXQgYWdlID0gdGhpcy5fYWdlVmFsdWUoKTtcblxuICAgICAgICBjb25zdCByZXNpZGVudFRpbWUgPSAodGhpcy5ub3coKSAtIHRoaXMuX3Jlc3BvbnNlVGltZSkgLyAxMDAwO1xuICAgICAgICByZXR1cm4gYWdlICsgcmVzaWRlbnRUaW1lO1xuICAgIH1cblxuICAgIF9hZ2VWYWx1ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRvTnVtYmVyT3JaZXJvKHRoaXMuX3Jlc0hlYWRlcnMuYWdlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBWYWx1ZSBvZiBhcHBsaWNhYmxlIG1heC1hZ2UgKG9yIGhldXJpc3RpYyBlcXVpdmFsZW50KSBpbiBzZWNvbmRzLiBUaGlzIGNvdW50cyBzaW5jZSByZXNwb25zZSdzIGBEYXRlYC5cbiAgICAgKlxuICAgICAqIEZvciBhbiB1cC10by1kYXRlIHZhbHVlLCBzZWUgYHRpbWVUb0xpdmUoKWAuXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIE51bWJlclxuICAgICAqL1xuICAgIG1heEFnZSgpIHtcbiAgICAgICAgaWYgKCF0aGlzLnN0b3JhYmxlKCkgfHwgdGhpcy5fcmVzY2NbJ25vLWNhY2hlJ10pIHtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gU2hhcmVkIHJlc3BvbnNlcyB3aXRoIGNvb2tpZXMgYXJlIGNhY2hlYWJsZSBhY2NvcmRpbmcgdG8gdGhlIFJGQywgYnV0IElNSE8gaXQnZCBiZSB1bndpc2UgdG8gZG8gc28gYnkgZGVmYXVsdFxuICAgICAgICAvLyBzbyB0aGlzIGltcGxlbWVudGF0aW9uIHJlcXVpcmVzIGV4cGxpY2l0IG9wdC1pbiB2aWEgcHVibGljIGhlYWRlclxuICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLl9pc1NoYXJlZCAmJlxuICAgICAgICAgICAgKHRoaXMuX3Jlc0hlYWRlcnNbJ3NldC1jb29raWUnXSAmJlxuICAgICAgICAgICAgICAgICF0aGlzLl9yZXNjYy5wdWJsaWMgJiZcbiAgICAgICAgICAgICAgICAhdGhpcy5fcmVzY2MuaW1tdXRhYmxlKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuX3Jlc0hlYWRlcnMudmFyeSA9PT0gJyonKSB7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLl9pc1NoYXJlZCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuX3Jlc2NjWydwcm94eS1yZXZhbGlkYXRlJ10pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIGlmIGEgcmVzcG9uc2UgaW5jbHVkZXMgdGhlIHMtbWF4YWdlIGRpcmVjdGl2ZSwgYSBzaGFyZWQgY2FjaGUgcmVjaXBpZW50IE1VU1QgaWdub3JlIHRoZSBFeHBpcmVzIGZpZWxkLlxuICAgICAgICAgICAgaWYgKHRoaXMuX3Jlc2NjWydzLW1heGFnZSddKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRvTnVtYmVyT3JaZXJvKHRoaXMuX3Jlc2NjWydzLW1heGFnZSddKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIElmIGEgcmVzcG9uc2UgaW5jbHVkZXMgYSBDYWNoZS1Db250cm9sIGZpZWxkIHdpdGggdGhlIG1heC1hZ2UgZGlyZWN0aXZlLCBhIHJlY2lwaWVudCBNVVNUIGlnbm9yZSB0aGUgRXhwaXJlcyBmaWVsZC5cbiAgICAgICAgaWYgKHRoaXMuX3Jlc2NjWydtYXgtYWdlJ10pIHtcbiAgICAgICAgICAgIHJldHVybiB0b051bWJlck9yWmVybyh0aGlzLl9yZXNjY1snbWF4LWFnZSddKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGRlZmF1bHRNaW5UdGwgPSB0aGlzLl9yZXNjYy5pbW11dGFibGUgPyB0aGlzLl9pbW11dGFibGVNaW5UdGwgOiAwO1xuXG4gICAgICAgIGNvbnN0IHNlcnZlckRhdGUgPSB0aGlzLmRhdGUoKTtcbiAgICAgICAgaWYgKHRoaXMuX3Jlc0hlYWRlcnMuZXhwaXJlcykge1xuICAgICAgICAgICAgY29uc3QgZXhwaXJlcyA9IERhdGUucGFyc2UodGhpcy5fcmVzSGVhZGVycy5leHBpcmVzKTtcbiAgICAgICAgICAgIC8vIEEgY2FjaGUgcmVjaXBpZW50IE1VU1QgaW50ZXJwcmV0IGludmFsaWQgZGF0ZSBmb3JtYXRzLCBlc3BlY2lhbGx5IHRoZSB2YWx1ZSBcIjBcIiwgYXMgcmVwcmVzZW50aW5nIGEgdGltZSBpbiB0aGUgcGFzdCAoaS5lLiwgXCJhbHJlYWR5IGV4cGlyZWRcIikuXG4gICAgICAgICAgICBpZiAoTnVtYmVyLmlzTmFOKGV4cGlyZXMpIHx8IGV4cGlyZXMgPCBzZXJ2ZXJEYXRlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gTWF0aC5tYXgoZGVmYXVsdE1pblR0bCwgKGV4cGlyZXMgLSBzZXJ2ZXJEYXRlKSAvIDEwMDApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuX3Jlc0hlYWRlcnNbJ2xhc3QtbW9kaWZpZWQnXSkge1xuICAgICAgICAgICAgY29uc3QgbGFzdE1vZGlmaWVkID0gRGF0ZS5wYXJzZSh0aGlzLl9yZXNIZWFkZXJzWydsYXN0LW1vZGlmaWVkJ10pO1xuICAgICAgICAgICAgaWYgKGlzRmluaXRlKGxhc3RNb2RpZmllZCkgJiYgc2VydmVyRGF0ZSA+IGxhc3RNb2RpZmllZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBNYXRoLm1heChcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdE1pblR0bCxcbiAgICAgICAgICAgICAgICAgICAgKChzZXJ2ZXJEYXRlIC0gbGFzdE1vZGlmaWVkKSAvIDEwMDApICogdGhpcy5fY2FjaGVIZXVyaXN0aWNcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGRlZmF1bHRNaW5UdGw7XG4gICAgfVxuXG4gICAgdGltZVRvTGl2ZSgpIHtcbiAgICAgICAgY29uc3QgYWdlID0gdGhpcy5tYXhBZ2UoKSAtIHRoaXMuYWdlKCk7XG4gICAgICAgIGNvbnN0IHN0YWxlSWZFcnJvckFnZSA9IGFnZSArIHRvTnVtYmVyT3JaZXJvKHRoaXMuX3Jlc2NjWydzdGFsZS1pZi1lcnJvciddKTtcbiAgICAgICAgY29uc3Qgc3RhbGVXaGlsZVJldmFsaWRhdGVBZ2UgPSBhZ2UgKyB0b051bWJlck9yWmVybyh0aGlzLl9yZXNjY1snc3RhbGUtd2hpbGUtcmV2YWxpZGF0ZSddKTtcbiAgICAgICAgcmV0dXJuIE1hdGgubWF4KDAsIGFnZSwgc3RhbGVJZkVycm9yQWdlLCBzdGFsZVdoaWxlUmV2YWxpZGF0ZUFnZSkgKiAxMDAwO1xuICAgIH1cblxuICAgIHN0YWxlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5tYXhBZ2UoKSA8PSB0aGlzLmFnZSgpO1xuICAgIH1cblxuICAgIF91c2VTdGFsZUlmRXJyb3IoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1heEFnZSgpICsgdG9OdW1iZXJPclplcm8odGhpcy5fcmVzY2NbJ3N0YWxlLWlmLWVycm9yJ10pID4gdGhpcy5hZ2UoKTtcbiAgICB9XG5cbiAgICB1c2VTdGFsZVdoaWxlUmV2YWxpZGF0ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWF4QWdlKCkgKyB0b051bWJlck9yWmVybyh0aGlzLl9yZXNjY1snc3RhbGUtd2hpbGUtcmV2YWxpZGF0ZSddKSA+IHRoaXMuYWdlKCk7XG4gICAgfVxuXG4gICAgc3RhdGljIGZyb21PYmplY3Qob2JqKSB7XG4gICAgICAgIHJldHVybiBuZXcgdGhpcyh1bmRlZmluZWQsIHVuZGVmaW5lZCwgeyBfZnJvbU9iamVjdDogb2JqIH0pO1xuICAgIH1cblxuICAgIF9mcm9tT2JqZWN0KG9iaikge1xuICAgICAgICBpZiAodGhpcy5fcmVzcG9uc2VUaW1lKSB0aHJvdyBFcnJvcignUmVpbml0aWFsaXplZCcpO1xuICAgICAgICBpZiAoIW9iaiB8fCBvYmoudiAhPT0gMSkgdGhyb3cgRXJyb3IoJ0ludmFsaWQgc2VyaWFsaXphdGlvbicpO1xuXG4gICAgICAgIHRoaXMuX3Jlc3BvbnNlVGltZSA9IG9iai50O1xuICAgICAgICB0aGlzLl9pc1NoYXJlZCA9IG9iai5zaDtcbiAgICAgICAgdGhpcy5fY2FjaGVIZXVyaXN0aWMgPSBvYmouY2g7XG4gICAgICAgIHRoaXMuX2ltbXV0YWJsZU1pblR0bCA9XG4gICAgICAgICAgICBvYmouaW1tICE9PSB1bmRlZmluZWQgPyBvYmouaW1tIDogMjQgKiAzNjAwICogMTAwMDtcbiAgICAgICAgdGhpcy5fc3RhdHVzID0gb2JqLnN0O1xuICAgICAgICB0aGlzLl9yZXNIZWFkZXJzID0gb2JqLnJlc2g7XG4gICAgICAgIHRoaXMuX3Jlc2NjID0gb2JqLnJlc2NjO1xuICAgICAgICB0aGlzLl9tZXRob2QgPSBvYmoubTtcbiAgICAgICAgdGhpcy5fdXJsID0gb2JqLnU7XG4gICAgICAgIHRoaXMuX2hvc3QgPSBvYmouaDtcbiAgICAgICAgdGhpcy5fbm9BdXRob3JpemF0aW9uID0gb2JqLmE7XG4gICAgICAgIHRoaXMuX3JlcUhlYWRlcnMgPSBvYmoucmVxaDtcbiAgICAgICAgdGhpcy5fcmVxY2MgPSBvYmoucmVxY2M7XG4gICAgfVxuXG4gICAgdG9PYmplY3QoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB2OiAxLFxuICAgICAgICAgICAgdDogdGhpcy5fcmVzcG9uc2VUaW1lLFxuICAgICAgICAgICAgc2g6IHRoaXMuX2lzU2hhcmVkLFxuICAgICAgICAgICAgY2g6IHRoaXMuX2NhY2hlSGV1cmlzdGljLFxuICAgICAgICAgICAgaW1tOiB0aGlzLl9pbW11dGFibGVNaW5UdGwsXG4gICAgICAgICAgICBzdDogdGhpcy5fc3RhdHVzLFxuICAgICAgICAgICAgcmVzaDogdGhpcy5fcmVzSGVhZGVycyxcbiAgICAgICAgICAgIHJlc2NjOiB0aGlzLl9yZXNjYyxcbiAgICAgICAgICAgIG06IHRoaXMuX21ldGhvZCxcbiAgICAgICAgICAgIHU6IHRoaXMuX3VybCxcbiAgICAgICAgICAgIGg6IHRoaXMuX2hvc3QsXG4gICAgICAgICAgICBhOiB0aGlzLl9ub0F1dGhvcml6YXRpb24sXG4gICAgICAgICAgICByZXFoOiB0aGlzLl9yZXFIZWFkZXJzLFxuICAgICAgICAgICAgcmVxY2M6IHRoaXMuX3JlcWNjLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEhlYWRlcnMgZm9yIHNlbmRpbmcgdG8gdGhlIG9yaWdpbiBzZXJ2ZXIgdG8gcmV2YWxpZGF0ZSBzdGFsZSByZXNwb25zZS5cbiAgICAgKiBBbGxvd3Mgc2VydmVyIHRvIHJldHVybiAzMDQgdG8gYWxsb3cgcmV1c2Ugb2YgdGhlIHByZXZpb3VzIHJlc3BvbnNlLlxuICAgICAqXG4gICAgICogSG9wIGJ5IGhvcCBoZWFkZXJzIGFyZSBhbHdheXMgc3RyaXBwZWQuXG4gICAgICogUmV2YWxpZGF0aW9uIGhlYWRlcnMgbWF5IGJlIGFkZGVkIG9yIHJlbW92ZWQsIGRlcGVuZGluZyBvbiByZXF1ZXN0LlxuICAgICAqL1xuICAgIHJldmFsaWRhdGlvbkhlYWRlcnMoaW5jb21pbmdSZXEpIHtcbiAgICAgICAgdGhpcy5fYXNzZXJ0UmVxdWVzdEhhc0hlYWRlcnMoaW5jb21pbmdSZXEpO1xuICAgICAgICBjb25zdCBoZWFkZXJzID0gdGhpcy5fY29weVdpdGhvdXRIb3BCeUhvcEhlYWRlcnMoaW5jb21pbmdSZXEuaGVhZGVycyk7XG5cbiAgICAgICAgLy8gVGhpcyBpbXBsZW1lbnRhdGlvbiBkb2VzIG5vdCB1bmRlcnN0YW5kIHJhbmdlIHJlcXVlc3RzXG4gICAgICAgIGRlbGV0ZSBoZWFkZXJzWydpZi1yYW5nZSddO1xuXG4gICAgICAgIGlmICghdGhpcy5fcmVxdWVzdE1hdGNoZXMoaW5jb21pbmdSZXEsIHRydWUpIHx8ICF0aGlzLnN0b3JhYmxlKCkpIHtcbiAgICAgICAgICAgIC8vIHJldmFsaWRhdGlvbiBhbGxvd2VkIHZpYSBIRUFEXG4gICAgICAgICAgICAvLyBub3QgZm9yIHRoZSBzYW1lIHJlc291cmNlLCBvciB3YXNuJ3QgYWxsb3dlZCB0byBiZSBjYWNoZWQgYW55d2F5XG4gICAgICAgICAgICBkZWxldGUgaGVhZGVyc1snaWYtbm9uZS1tYXRjaCddO1xuICAgICAgICAgICAgZGVsZXRlIGhlYWRlcnNbJ2lmLW1vZGlmaWVkLXNpbmNlJ107XG4gICAgICAgICAgICByZXR1cm4gaGVhZGVycztcbiAgICAgICAgfVxuXG4gICAgICAgIC8qIE1VU1Qgc2VuZCB0aGF0IGVudGl0eS10YWcgaW4gYW55IGNhY2hlIHZhbGlkYXRpb24gcmVxdWVzdCAodXNpbmcgSWYtTWF0Y2ggb3IgSWYtTm9uZS1NYXRjaCkgaWYgYW4gZW50aXR5LXRhZyBoYXMgYmVlbiBwcm92aWRlZCBieSB0aGUgb3JpZ2luIHNlcnZlci4gKi9cbiAgICAgICAgaWYgKHRoaXMuX3Jlc0hlYWRlcnMuZXRhZykge1xuICAgICAgICAgICAgaGVhZGVyc1snaWYtbm9uZS1tYXRjaCddID0gaGVhZGVyc1snaWYtbm9uZS1tYXRjaCddXG4gICAgICAgICAgICAgICAgPyBgJHtoZWFkZXJzWydpZi1ub25lLW1hdGNoJ119LCAke3RoaXMuX3Jlc0hlYWRlcnMuZXRhZ31gXG4gICAgICAgICAgICAgICAgOiB0aGlzLl9yZXNIZWFkZXJzLmV0YWc7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDbGllbnRzIE1BWSBpc3N1ZSBzaW1wbGUgKG5vbi1zdWJyYW5nZSkgR0VUIHJlcXVlc3RzIHdpdGggZWl0aGVyIHdlYWsgdmFsaWRhdG9ycyBvciBzdHJvbmcgdmFsaWRhdG9ycy4gQ2xpZW50cyBNVVNUIE5PVCB1c2Ugd2VhayB2YWxpZGF0b3JzIGluIG90aGVyIGZvcm1zIG9mIHJlcXVlc3QuXG4gICAgICAgIGNvbnN0IGZvcmJpZHNXZWFrVmFsaWRhdG9ycyA9XG4gICAgICAgICAgICBoZWFkZXJzWydhY2NlcHQtcmFuZ2VzJ10gfHxcbiAgICAgICAgICAgIGhlYWRlcnNbJ2lmLW1hdGNoJ10gfHxcbiAgICAgICAgICAgIGhlYWRlcnNbJ2lmLXVubW9kaWZpZWQtc2luY2UnXSB8fFxuICAgICAgICAgICAgKHRoaXMuX21ldGhvZCAmJiB0aGlzLl9tZXRob2QgIT0gJ0dFVCcpO1xuXG4gICAgICAgIC8qIFNIT1VMRCBzZW5kIHRoZSBMYXN0LU1vZGlmaWVkIHZhbHVlIGluIG5vbi1zdWJyYW5nZSBjYWNoZSB2YWxpZGF0aW9uIHJlcXVlc3RzICh1c2luZyBJZi1Nb2RpZmllZC1TaW5jZSkgaWYgb25seSBhIExhc3QtTW9kaWZpZWQgdmFsdWUgaGFzIGJlZW4gcHJvdmlkZWQgYnkgdGhlIG9yaWdpbiBzZXJ2ZXIuXG4gICAgICAgIE5vdGU6IFRoaXMgaW1wbGVtZW50YXRpb24gZG9lcyBub3QgdW5kZXJzdGFuZCBwYXJ0aWFsIHJlc3BvbnNlcyAoMjA2KSAqL1xuICAgICAgICBpZiAoZm9yYmlkc1dlYWtWYWxpZGF0b3JzKSB7XG4gICAgICAgICAgICBkZWxldGUgaGVhZGVyc1snaWYtbW9kaWZpZWQtc2luY2UnXTtcblxuICAgICAgICAgICAgaWYgKGhlYWRlcnNbJ2lmLW5vbmUtbWF0Y2gnXSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGV0YWdzID0gaGVhZGVyc1snaWYtbm9uZS1tYXRjaCddXG4gICAgICAgICAgICAgICAgICAgIC5zcGxpdCgvLC8pXG4gICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoZXRhZyA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIS9eXFxzKldcXC8vLnRlc3QoZXRhZyk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGlmICghZXRhZ3MubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBoZWFkZXJzWydpZi1ub25lLW1hdGNoJ107XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaGVhZGVyc1snaWYtbm9uZS1tYXRjaCddID0gZXRhZ3Muam9pbignLCcpLnRyaW0oKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICB0aGlzLl9yZXNIZWFkZXJzWydsYXN0LW1vZGlmaWVkJ10gJiZcbiAgICAgICAgICAgICFoZWFkZXJzWydpZi1tb2RpZmllZC1zaW5jZSddXG4gICAgICAgICkge1xuICAgICAgICAgICAgaGVhZGVyc1snaWYtbW9kaWZpZWQtc2luY2UnXSA9IHRoaXMuX3Jlc0hlYWRlcnNbJ2xhc3QtbW9kaWZpZWQnXTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBoZWFkZXJzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgbmV3IENhY2hlUG9saWN5IHdpdGggaW5mb3JtYXRpb24gY29tYmluZWQgZnJvbSB0aGUgcHJldmlld3MgcmVzcG9uc2UsXG4gICAgICogYW5kIHRoZSBuZXcgcmV2YWxpZGF0aW9uIHJlc3BvbnNlLlxuICAgICAqXG4gICAgICogUmV0dXJucyB7cG9saWN5LCBtb2RpZmllZH0gd2hlcmUgbW9kaWZpZWQgaXMgYSBib29sZWFuIGluZGljYXRpbmdcbiAgICAgKiB3aGV0aGVyIHRoZSByZXNwb25zZSBib2R5IGhhcyBiZWVuIG1vZGlmaWVkLCBhbmQgb2xkIGNhY2hlZCBib2R5IGNhbid0IGJlIHVzZWQuXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtPYmplY3R9IHtwb2xpY3k6IENhY2hlUG9saWN5LCBtb2RpZmllZDogQm9vbGVhbn1cbiAgICAgKi9cbiAgICByZXZhbGlkYXRlZFBvbGljeShyZXF1ZXN0LCByZXNwb25zZSkge1xuICAgICAgICB0aGlzLl9hc3NlcnRSZXF1ZXN0SGFzSGVhZGVycyhyZXF1ZXN0KTtcbiAgICAgICAgaWYodGhpcy5fdXNlU3RhbGVJZkVycm9yKCkgJiYgaXNFcnJvclJlc3BvbnNlKHJlc3BvbnNlKSkgeyAgLy8gSSBjb25zaWRlciB0aGUgcmV2YWxpZGF0aW9uIHJlcXVlc3QgdW5zdWNjZXNzZnVsXG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG1vZGlmaWVkOiBmYWxzZSxcbiAgICAgICAgICAgIG1hdGNoZXM6IGZhbHNlLFxuICAgICAgICAgICAgcG9saWN5OiB0aGlzLFxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFyZXNwb25zZSB8fCAhcmVzcG9uc2UuaGVhZGVycykge1xuICAgICAgICAgICAgdGhyb3cgRXJyb3IoJ1Jlc3BvbnNlIGhlYWRlcnMgbWlzc2luZycpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVGhlc2UgYXJlbid0IGdvaW5nIHRvIGJlIHN1cHBvcnRlZCBleGFjdGx5LCBzaW5jZSBvbmUgQ2FjaGVQb2xpY3kgb2JqZWN0XG4gICAgICAgIC8vIGRvZXNuJ3Qga25vdyBhYm91dCBhbGwgdGhlIG90aGVyIGNhY2hlZCBvYmplY3RzLlxuICAgICAgICBsZXQgbWF0Y2hlcyA9IGZhbHNlO1xuICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzICE9PSB1bmRlZmluZWQgJiYgcmVzcG9uc2Uuc3RhdHVzICE9IDMwNCkge1xuICAgICAgICAgICAgbWF0Y2hlcyA9IGZhbHNlO1xuICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgcmVzcG9uc2UuaGVhZGVycy5ldGFnICYmXG4gICAgICAgICAgICAhL15cXHMqV1xcLy8udGVzdChyZXNwb25zZS5oZWFkZXJzLmV0YWcpXG4gICAgICAgICkge1xuICAgICAgICAgICAgLy8gXCJBbGwgb2YgdGhlIHN0b3JlZCByZXNwb25zZXMgd2l0aCB0aGUgc2FtZSBzdHJvbmcgdmFsaWRhdG9yIGFyZSBzZWxlY3RlZC5cbiAgICAgICAgICAgIC8vIElmIG5vbmUgb2YgdGhlIHN0b3JlZCByZXNwb25zZXMgY29udGFpbiB0aGUgc2FtZSBzdHJvbmcgdmFsaWRhdG9yLFxuICAgICAgICAgICAgLy8gdGhlbiB0aGUgY2FjaGUgTVVTVCBOT1QgdXNlIHRoZSBuZXcgcmVzcG9uc2UgdG8gdXBkYXRlIGFueSBzdG9yZWQgcmVzcG9uc2VzLlwiXG4gICAgICAgICAgICBtYXRjaGVzID1cbiAgICAgICAgICAgICAgICB0aGlzLl9yZXNIZWFkZXJzLmV0YWcgJiZcbiAgICAgICAgICAgICAgICB0aGlzLl9yZXNIZWFkZXJzLmV0YWcucmVwbGFjZSgvXlxccypXXFwvLywgJycpID09PVxuICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5oZWFkZXJzLmV0YWc7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5fcmVzSGVhZGVycy5ldGFnICYmIHJlc3BvbnNlLmhlYWRlcnMuZXRhZykge1xuICAgICAgICAgICAgLy8gXCJJZiB0aGUgbmV3IHJlc3BvbnNlIGNvbnRhaW5zIGEgd2VhayB2YWxpZGF0b3IgYW5kIHRoYXQgdmFsaWRhdG9yIGNvcnJlc3BvbmRzXG4gICAgICAgICAgICAvLyB0byBvbmUgb2YgdGhlIGNhY2hlJ3Mgc3RvcmVkIHJlc3BvbnNlcyxcbiAgICAgICAgICAgIC8vIHRoZW4gdGhlIG1vc3QgcmVjZW50IG9mIHRob3NlIG1hdGNoaW5nIHN0b3JlZCByZXNwb25zZXMgaXMgc2VsZWN0ZWQgZm9yIHVwZGF0ZS5cIlxuICAgICAgICAgICAgbWF0Y2hlcyA9XG4gICAgICAgICAgICAgICAgdGhpcy5fcmVzSGVhZGVycy5ldGFnLnJlcGxhY2UoL15cXHMqV1xcLy8sICcnKSA9PT1cbiAgICAgICAgICAgICAgICByZXNwb25zZS5oZWFkZXJzLmV0YWcucmVwbGFjZSgvXlxccypXXFwvLywgJycpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuX3Jlc0hlYWRlcnNbJ2xhc3QtbW9kaWZpZWQnXSkge1xuICAgICAgICAgICAgbWF0Y2hlcyA9XG4gICAgICAgICAgICAgICAgdGhpcy5fcmVzSGVhZGVyc1snbGFzdC1tb2RpZmllZCddID09PVxuICAgICAgICAgICAgICAgIHJlc3BvbnNlLmhlYWRlcnNbJ2xhc3QtbW9kaWZpZWQnXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIElmIHRoZSBuZXcgcmVzcG9uc2UgZG9lcyBub3QgaW5jbHVkZSBhbnkgZm9ybSBvZiB2YWxpZGF0b3IgKHN1Y2ggYXMgaW4gdGhlIGNhc2Ugd2hlcmVcbiAgICAgICAgICAgIC8vIGEgY2xpZW50IGdlbmVyYXRlcyBhbiBJZi1Nb2RpZmllZC1TaW5jZSByZXF1ZXN0IGZyb20gYSBzb3VyY2Ugb3RoZXIgdGhhbiB0aGUgTGFzdC1Nb2RpZmllZFxuICAgICAgICAgICAgLy8gcmVzcG9uc2UgaGVhZGVyIGZpZWxkKSwgYW5kIHRoZXJlIGlzIG9ubHkgb25lIHN0b3JlZCByZXNwb25zZSwgYW5kIHRoYXQgc3RvcmVkIHJlc3BvbnNlIGFsc29cbiAgICAgICAgICAgIC8vIGxhY2tzIGEgdmFsaWRhdG9yLCB0aGVuIHRoYXQgc3RvcmVkIHJlc3BvbnNlIGlzIHNlbGVjdGVkIGZvciB1cGRhdGUuXG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgIXRoaXMuX3Jlc0hlYWRlcnMuZXRhZyAmJlxuICAgICAgICAgICAgICAgICF0aGlzLl9yZXNIZWFkZXJzWydsYXN0LW1vZGlmaWVkJ10gJiZcbiAgICAgICAgICAgICAgICAhcmVzcG9uc2UuaGVhZGVycy5ldGFnICYmXG4gICAgICAgICAgICAgICAgIXJlc3BvbnNlLmhlYWRlcnNbJ2xhc3QtbW9kaWZpZWQnXVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgbWF0Y2hlcyA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIW1hdGNoZXMpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgcG9saWN5OiBuZXcgdGhpcy5jb25zdHJ1Y3RvcihyZXF1ZXN0LCByZXNwb25zZSksXG4gICAgICAgICAgICAgICAgLy8gQ2xpZW50IHJlY2VpdmluZyAzMDQgd2l0aG91dCBib2R5LCBldmVuIGlmIGl0J3MgaW52YWxpZC9taXNtYXRjaGVkIGhhcyBubyBvcHRpb25cbiAgICAgICAgICAgICAgICAvLyBidXQgdG8gcmV1c2UgYSBjYWNoZWQgYm9keS4gV2UgZG9uJ3QgaGF2ZSBhIGdvb2Qgd2F5IHRvIHRlbGwgY2xpZW50cyB0byBkb1xuICAgICAgICAgICAgICAgIC8vIGVycm9yIHJlY292ZXJ5IGluIHN1Y2ggY2FzZS5cbiAgICAgICAgICAgICAgICBtb2RpZmllZDogcmVzcG9uc2Uuc3RhdHVzICE9IDMwNCxcbiAgICAgICAgICAgICAgICBtYXRjaGVzOiBmYWxzZSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICAvLyB1c2Ugb3RoZXIgaGVhZGVyIGZpZWxkcyBwcm92aWRlZCBpbiB0aGUgMzA0IChOb3QgTW9kaWZpZWQpIHJlc3BvbnNlIHRvIHJlcGxhY2UgYWxsIGluc3RhbmNlc1xuICAgICAgICAvLyBvZiB0aGUgY29ycmVzcG9uZGluZyBoZWFkZXIgZmllbGRzIGluIHRoZSBzdG9yZWQgcmVzcG9uc2UuXG4gICAgICAgIGNvbnN0IGhlYWRlcnMgPSB7fTtcbiAgICAgICAgZm9yIChjb25zdCBrIGluIHRoaXMuX3Jlc0hlYWRlcnMpIHtcbiAgICAgICAgICAgIGhlYWRlcnNba10gPVxuICAgICAgICAgICAgICAgIGsgaW4gcmVzcG9uc2UuaGVhZGVycyAmJiAhZXhjbHVkZWRGcm9tUmV2YWxpZGF0aW9uVXBkYXRlW2tdXG4gICAgICAgICAgICAgICAgICAgID8gcmVzcG9uc2UuaGVhZGVyc1trXVxuICAgICAgICAgICAgICAgICAgICA6IHRoaXMuX3Jlc0hlYWRlcnNba107XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBuZXdSZXNwb25zZSA9IE9iamVjdC5hc3NpZ24oe30sIHJlc3BvbnNlLCB7XG4gICAgICAgICAgICBzdGF0dXM6IHRoaXMuX3N0YXR1cyxcbiAgICAgICAgICAgIG1ldGhvZDogdGhpcy5fbWV0aG9kLFxuICAgICAgICAgICAgaGVhZGVycyxcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwb2xpY3k6IG5ldyB0aGlzLmNvbnN0cnVjdG9yKHJlcXVlc3QsIG5ld1Jlc3BvbnNlLCB7XG4gICAgICAgICAgICAgICAgc2hhcmVkOiB0aGlzLl9pc1NoYXJlZCxcbiAgICAgICAgICAgICAgICBjYWNoZUhldXJpc3RpYzogdGhpcy5fY2FjaGVIZXVyaXN0aWMsXG4gICAgICAgICAgICAgICAgaW1tdXRhYmxlTWluVGltZVRvTGl2ZTogdGhpcy5faW1tdXRhYmxlTWluVHRsLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBtb2RpZmllZDogZmFsc2UsXG4gICAgICAgICAgICBtYXRjaGVzOiB0cnVlLFxuICAgICAgICB9O1xuICAgIH1cbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xubW9kdWxlLmV4cG9ydHMgPSBvYmplY3QgPT4ge1xuXHRjb25zdCByZXN1bHQgPSB7fTtcblxuXHRmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhvYmplY3QpKSB7XG5cdFx0cmVzdWx0W2tleS50b0xvd2VyQ2FzZSgpXSA9IHZhbHVlO1xuXHR9XG5cblx0cmV0dXJuIHJlc3VsdDtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBSZWFkYWJsZSA9IHJlcXVpcmUoJ3N0cmVhbScpLlJlYWRhYmxlO1xuY29uc3QgbG93ZXJjYXNlS2V5cyA9IHJlcXVpcmUoJ2xvd2VyY2FzZS1rZXlzJyk7XG5cbmNsYXNzIFJlc3BvbnNlIGV4dGVuZHMgUmVhZGFibGUge1xuXHRjb25zdHJ1Y3RvcihzdGF0dXNDb2RlLCBoZWFkZXJzLCBib2R5LCB1cmwpIHtcblx0XHRpZiAodHlwZW9mIHN0YXR1c0NvZGUgIT09ICdudW1iZXInKSB7XG5cdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdBcmd1bWVudCBgc3RhdHVzQ29kZWAgc2hvdWxkIGJlIGEgbnVtYmVyJyk7XG5cdFx0fVxuXHRcdGlmICh0eXBlb2YgaGVhZGVycyAhPT0gJ29iamVjdCcpIHtcblx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoJ0FyZ3VtZW50IGBoZWFkZXJzYCBzaG91bGQgYmUgYW4gb2JqZWN0Jyk7XG5cdFx0fVxuXHRcdGlmICghKGJvZHkgaW5zdGFuY2VvZiBCdWZmZXIpKSB7XG5cdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdBcmd1bWVudCBgYm9keWAgc2hvdWxkIGJlIGEgYnVmZmVyJyk7XG5cdFx0fVxuXHRcdGlmICh0eXBlb2YgdXJsICE9PSAnc3RyaW5nJykge1xuXHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvcignQXJndW1lbnQgYHVybGAgc2hvdWxkIGJlIGEgc3RyaW5nJyk7XG5cdFx0fVxuXG5cdFx0c3VwZXIoKTtcblx0XHR0aGlzLnN0YXR1c0NvZGUgPSBzdGF0dXNDb2RlO1xuXHRcdHRoaXMuaGVhZGVycyA9IGxvd2VyY2FzZUtleXMoaGVhZGVycyk7XG5cdFx0dGhpcy5ib2R5ID0gYm9keTtcblx0XHR0aGlzLnVybCA9IHVybDtcblx0fVxuXG5cdF9yZWFkKCkge1xuXHRcdHRoaXMucHVzaCh0aGlzLmJvZHkpO1xuXHRcdHRoaXMucHVzaChudWxsKTtcblx0fVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFJlc3BvbnNlO1xuIiwgIid1c2Ugc3RyaWN0JztcblxuLy8gV2UgZGVmaW5lIHRoZXNlIG1hbnVhbGx5IHRvIGVuc3VyZSB0aGV5J3JlIGFsd2F5cyBjb3BpZWRcbi8vIGV2ZW4gaWYgdGhleSB3b3VsZCBtb3ZlIHVwIHRoZSBwcm90b3R5cGUgY2hhaW5cbi8vIGh0dHBzOi8vbm9kZWpzLm9yZy9hcGkvaHR0cC5odG1sI2h0dHBfY2xhc3NfaHR0cF9pbmNvbWluZ21lc3NhZ2VcbmNvbnN0IGtub3duUHJvcHMgPSBbXG5cdCdkZXN0cm95Jyxcblx0J3NldFRpbWVvdXQnLFxuXHQnc29ja2V0Jyxcblx0J2hlYWRlcnMnLFxuXHQndHJhaWxlcnMnLFxuXHQncmF3SGVhZGVycycsXG5cdCdzdGF0dXNDb2RlJyxcblx0J2h0dHBWZXJzaW9uJyxcblx0J2h0dHBWZXJzaW9uTWlub3InLFxuXHQnaHR0cFZlcnNpb25NYWpvcicsXG5cdCdyYXdUcmFpbGVycycsXG5cdCdzdGF0dXNNZXNzYWdlJ1xuXTtcblxubW9kdWxlLmV4cG9ydHMgPSAoZnJvbVN0cmVhbSwgdG9TdHJlYW0pID0+IHtcblx0Y29uc3QgZnJvbVByb3BzID0gbmV3IFNldChPYmplY3Qua2V5cyhmcm9tU3RyZWFtKS5jb25jYXQoa25vd25Qcm9wcykpO1xuXG5cdGZvciAoY29uc3QgcHJvcCBvZiBmcm9tUHJvcHMpIHtcblx0XHQvLyBEb24ndCBvdmVyd3JpdGUgZXhpc3RpbmcgcHJvcGVydGllc1xuXHRcdGlmIChwcm9wIGluIHRvU3RyZWFtKSB7XG5cdFx0XHRjb250aW51ZTtcblx0XHR9XG5cblx0XHR0b1N0cmVhbVtwcm9wXSA9IHR5cGVvZiBmcm9tU3RyZWFtW3Byb3BdID09PSAnZnVuY3Rpb24nID8gZnJvbVN0cmVhbVtwcm9wXS5iaW5kKGZyb21TdHJlYW0pIDogZnJvbVN0cmVhbVtwcm9wXTtcblx0fVxufTtcbiIsICIndXNlIHN0cmljdCc7XG5cbmNvbnN0IFBhc3NUaHJvdWdoID0gcmVxdWlyZSgnc3RyZWFtJykuUGFzc1Rocm91Z2g7XG5jb25zdCBtaW1pY1Jlc3BvbnNlID0gcmVxdWlyZSgnbWltaWMtcmVzcG9uc2UnKTtcblxuY29uc3QgY2xvbmVSZXNwb25zZSA9IHJlc3BvbnNlID0+IHtcblx0aWYgKCEocmVzcG9uc2UgJiYgcmVzcG9uc2UucGlwZSkpIHtcblx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdQYXJhbWV0ZXIgYHJlc3BvbnNlYCBtdXN0IGJlIGEgcmVzcG9uc2Ugc3RyZWFtLicpO1xuXHR9XG5cblx0Y29uc3QgY2xvbmUgPSBuZXcgUGFzc1Rocm91Z2goKTtcblx0bWltaWNSZXNwb25zZShyZXNwb25zZSwgY2xvbmUpO1xuXG5cdHJldHVybiByZXNwb25zZS5waXBlKGNsb25lKTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gY2xvbmVSZXNwb25zZTtcbiIsICIvL1RPRE86IGhhbmRsZSByZXZpdmVyL2RlaHlkcmF0ZSBmdW5jdGlvbiBsaWtlIG5vcm1hbFxuLy9hbmQgaGFuZGxlIGluZGVudGF0aW9uLCBsaWtlIG5vcm1hbC5cbi8vaWYgYW55b25lIG5lZWRzIHRoaXMuLi4gcGxlYXNlIHNlbmQgcHVsbCByZXF1ZXN0LlxuXG5leHBvcnRzLnN0cmluZ2lmeSA9IGZ1bmN0aW9uIHN0cmluZ2lmeSAobykge1xuICBpZigndW5kZWZpbmVkJyA9PSB0eXBlb2YgbykgcmV0dXJuIG9cblxuICBpZihvICYmIEJ1ZmZlci5pc0J1ZmZlcihvKSlcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoJzpiYXNlNjQ6JyArIG8udG9TdHJpbmcoJ2Jhc2U2NCcpKVxuXG4gIGlmKG8gJiYgby50b0pTT04pXG4gICAgbyA9ICBvLnRvSlNPTigpXG5cbiAgaWYobyAmJiAnb2JqZWN0JyA9PT0gdHlwZW9mIG8pIHtcbiAgICB2YXIgcyA9ICcnXG4gICAgdmFyIGFycmF5ID0gQXJyYXkuaXNBcnJheShvKVxuICAgIHMgPSBhcnJheSA/ICdbJyA6ICd7J1xuICAgIHZhciBmaXJzdCA9IHRydWVcblxuICAgIGZvcih2YXIgayBpbiBvKSB7XG4gICAgICB2YXIgaWdub3JlID0gJ2Z1bmN0aW9uJyA9PSB0eXBlb2Ygb1trXSB8fCAoIWFycmF5ICYmICd1bmRlZmluZWQnID09PSB0eXBlb2Ygb1trXSlcbiAgICAgIGlmKE9iamVjdC5oYXNPd25Qcm9wZXJ0eS5jYWxsKG8sIGspICYmICFpZ25vcmUpIHtcbiAgICAgICAgaWYoIWZpcnN0KVxuICAgICAgICAgIHMgKz0gJywnXG4gICAgICAgIGZpcnN0ID0gZmFsc2VcbiAgICAgICAgaWYgKGFycmF5KSB7XG4gICAgICAgICAgaWYob1trXSA9PSB1bmRlZmluZWQpXG4gICAgICAgICAgICBzICs9ICdudWxsJ1xuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIHMgKz0gc3RyaW5naWZ5KG9ba10pXG4gICAgICAgIH0gZWxzZSBpZiAob1trXSAhPT0gdm9pZCgwKSkge1xuICAgICAgICAgIHMgKz0gc3RyaW5naWZ5KGspICsgJzonICsgc3RyaW5naWZ5KG9ba10pXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBzICs9IGFycmF5ID8gJ10nIDogJ30nXG5cbiAgICByZXR1cm4gc1xuICB9IGVsc2UgaWYgKCdzdHJpbmcnID09PSB0eXBlb2Ygbykge1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSgvXjovLnRlc3QobykgPyAnOicgKyBvIDogbylcbiAgfSBlbHNlIGlmICgndW5kZWZpbmVkJyA9PT0gdHlwZW9mIG8pIHtcbiAgICByZXR1cm4gJ251bGwnO1xuICB9IGVsc2VcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkobylcbn1cblxuZXhwb3J0cy5wYXJzZSA9IGZ1bmN0aW9uIChzKSB7XG4gIHJldHVybiBKU09OLnBhcnNlKHMsIGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG4gICAgaWYoJ3N0cmluZycgPT09IHR5cGVvZiB2YWx1ZSkge1xuICAgICAgaWYoL146YmFzZTY0Oi8udGVzdCh2YWx1ZSkpXG4gICAgICAgIHJldHVybiBCdWZmZXIuZnJvbSh2YWx1ZS5zdWJzdHJpbmcoOCksICdiYXNlNjQnKVxuICAgICAgZWxzZVxuICAgICAgICByZXR1cm4gL146Ly50ZXN0KHZhbHVlKSA/IHZhbHVlLnN1YnN0cmluZygxKSA6IHZhbHVlIFxuICAgIH1cbiAgICByZXR1cm4gdmFsdWVcbiAgfSlcbn1cbiIsICIndXNlIHN0cmljdCc7XG5cbmNvbnN0IEV2ZW50RW1pdHRlciA9IHJlcXVpcmUoJ2V2ZW50cycpO1xuY29uc3QgSlNPTkIgPSByZXF1aXJlKCdqc29uLWJ1ZmZlcicpO1xuXG5jb25zdCBsb2FkU3RvcmUgPSBvcHRpb25zID0+IHtcblx0Y29uc3QgYWRhcHRlcnMgPSB7XG5cdFx0cmVkaXM6ICdAa2V5di9yZWRpcycsXG5cdFx0cmVkaXNzOiAnQGtleXYvcmVkaXMnLFxuXHRcdG1vbmdvZGI6ICdAa2V5di9tb25nbycsXG5cdFx0bW9uZ286ICdAa2V5di9tb25nbycsXG5cdFx0c3FsaXRlOiAnQGtleXYvc3FsaXRlJyxcblx0XHRwb3N0Z3Jlc3FsOiAnQGtleXYvcG9zdGdyZXMnLFxuXHRcdHBvc3RncmVzOiAnQGtleXYvcG9zdGdyZXMnLFxuXHRcdG15c3FsOiAnQGtleXYvbXlzcWwnLFxuXHRcdGV0Y2Q6ICdAa2V5di9ldGNkJyxcblx0XHRvZmZsaW5lOiAnQGtleXYvb2ZmbGluZScsXG5cdFx0dGllcmVkOiAnQGtleXYvdGllcmVkJyxcblx0fTtcblx0aWYgKG9wdGlvbnMuYWRhcHRlciB8fCBvcHRpb25zLnVyaSkge1xuXHRcdGNvbnN0IGFkYXB0ZXIgPSBvcHRpb25zLmFkYXB0ZXIgfHwgL15bXjorXSovLmV4ZWMob3B0aW9ucy51cmkpWzBdO1xuXHRcdHJldHVybiBuZXcgKHJlcXVpcmUoYWRhcHRlcnNbYWRhcHRlcl0pKShvcHRpb25zKTtcblx0fVxuXG5cdHJldHVybiBuZXcgTWFwKCk7XG59O1xuXG5jb25zdCBpdGVyYWJsZUFkYXB0ZXJzID0gW1xuXHQnc3FsaXRlJyxcblx0J3Bvc3RncmVzJyxcblx0J215c3FsJyxcblx0J21vbmdvJyxcblx0J3JlZGlzJyxcblx0J3RpZXJlZCcsXG5dO1xuXG5jbGFzcyBLZXl2IGV4dGVuZHMgRXZlbnRFbWl0dGVyIHtcblx0Y29uc3RydWN0b3IodXJpLCB7ZW1pdEVycm9ycyA9IHRydWUsIC4uLm9wdGlvbnN9ID0ge30pIHtcblx0XHRzdXBlcigpO1xuXHRcdHRoaXMub3B0cyA9IHtcblx0XHRcdG5hbWVzcGFjZTogJ2tleXYnLFxuXHRcdFx0c2VyaWFsaXplOiBKU09OQi5zdHJpbmdpZnksXG5cdFx0XHRkZXNlcmlhbGl6ZTogSlNPTkIucGFyc2UsXG5cdFx0XHQuLi4oKHR5cGVvZiB1cmkgPT09ICdzdHJpbmcnKSA/IHt1cml9IDogdXJpKSxcblx0XHRcdC4uLm9wdGlvbnMsXG5cdFx0fTtcblxuXHRcdGlmICghdGhpcy5vcHRzLnN0b3JlKSB7XG5cdFx0XHRjb25zdCBhZGFwdGVyT3B0aW9ucyA9IHsuLi50aGlzLm9wdHN9O1xuXHRcdFx0dGhpcy5vcHRzLnN0b3JlID0gbG9hZFN0b3JlKGFkYXB0ZXJPcHRpb25zKTtcblx0XHR9XG5cblx0XHRpZiAodGhpcy5vcHRzLmNvbXByZXNzaW9uKSB7XG5cdFx0XHRjb25zdCBjb21wcmVzc2lvbiA9IHRoaXMub3B0cy5jb21wcmVzc2lvbjtcblx0XHRcdGNvbnN0IHtzZXJpYWxpemUsIGRlc2VyaWFsaXplfSA9IGNvbXByZXNzaW9uLm9wdHM7XG5cdFx0XHR0aGlzLm9wdHMuc2VyaWFsaXplID0gc2VyaWFsaXplO1xuXHRcdFx0dGhpcy5vcHRzLmRlc2VyaWFsaXplID0gZGVzZXJpYWxpemU7XG5cdFx0fVxuXG5cdFx0aWYgKHR5cGVvZiB0aGlzLm9wdHMuc3RvcmUub24gPT09ICdmdW5jdGlvbicgJiYgZW1pdEVycm9ycykge1xuXHRcdFx0dGhpcy5vcHRzLnN0b3JlLm9uKCdlcnJvcicsIGVycm9yID0+IHRoaXMuZW1pdCgnZXJyb3InLCBlcnJvcikpO1xuXHRcdH1cblxuXHRcdHRoaXMub3B0cy5zdG9yZS5uYW1lc3BhY2UgPSB0aGlzLm9wdHMubmFtZXNwYWNlO1xuXG5cdFx0Y29uc3QgZ2VuZXJhdGVJdGVyYXRvciA9IGl0ZXJhdG9yID0+IGFzeW5jIGZ1bmN0aW9uICogKCkge1xuXHRcdFx0Zm9yIGF3YWl0IChjb25zdCBba2V5LCByYXddIG9mIHR5cGVvZiBpdGVyYXRvciA9PT0gJ2Z1bmN0aW9uJ1xuXHRcdFx0XHQ/IGl0ZXJhdG9yKHRoaXMub3B0cy5zdG9yZS5uYW1lc3BhY2UpXG5cdFx0XHRcdDogaXRlcmF0b3IpIHtcblx0XHRcdFx0Y29uc3QgZGF0YSA9IHRoaXMub3B0cy5kZXNlcmlhbGl6ZShyYXcpO1xuXHRcdFx0XHRpZiAodGhpcy5vcHRzLnN0b3JlLm5hbWVzcGFjZSAmJiAha2V5LmluY2x1ZGVzKHRoaXMub3B0cy5zdG9yZS5uYW1lc3BhY2UpKSB7XG5cdFx0XHRcdFx0Y29udGludWU7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAodHlwZW9mIGRhdGEuZXhwaXJlcyA9PT0gJ251bWJlcicgJiYgRGF0ZS5ub3coKSA+IGRhdGEuZXhwaXJlcykge1xuXHRcdFx0XHRcdHRoaXMuZGVsZXRlKGtleSk7XG5cdFx0XHRcdFx0Y29udGludWU7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHR5aWVsZCBbdGhpcy5fZ2V0S2V5VW5wcmVmaXgoa2V5KSwgZGF0YS52YWx1ZV07XG5cdFx0XHR9XG5cdFx0fTtcblxuXHRcdC8vIEF0dGFjaCBpdGVyYXRvcnNcblx0XHRpZiAodHlwZW9mIHRoaXMub3B0cy5zdG9yZVtTeW1ib2wuaXRlcmF0b3JdID09PSAnZnVuY3Rpb24nICYmIHRoaXMub3B0cy5zdG9yZSBpbnN0YW5jZW9mIE1hcCkge1xuXHRcdFx0dGhpcy5pdGVyYXRvciA9IGdlbmVyYXRlSXRlcmF0b3IodGhpcy5vcHRzLnN0b3JlKTtcblx0XHR9IGVsc2UgaWYgKHR5cGVvZiB0aGlzLm9wdHMuc3RvcmUuaXRlcmF0b3IgPT09ICdmdW5jdGlvbicgJiYgdGhpcy5vcHRzLnN0b3JlLm9wdHNcblx0XHRcdCYmIHRoaXMuX2NoZWNrSXRlcmFibGVBZGFwdGFyKCkpIHtcblx0XHRcdHRoaXMuaXRlcmF0b3IgPSBnZW5lcmF0ZUl0ZXJhdG9yKHRoaXMub3B0cy5zdG9yZS5pdGVyYXRvci5iaW5kKHRoaXMub3B0cy5zdG9yZSkpO1xuXHRcdH1cblx0fVxuXG5cdF9jaGVja0l0ZXJhYmxlQWRhcHRhcigpIHtcblx0XHRyZXR1cm4gaXRlcmFibGVBZGFwdGVycy5pbmNsdWRlcyh0aGlzLm9wdHMuc3RvcmUub3B0cy5kaWFsZWN0KVxuXHRcdFx0fHwgaXRlcmFibGVBZGFwdGVycy5maW5kSW5kZXgoZWxlbWVudCA9PiB0aGlzLm9wdHMuc3RvcmUub3B0cy51cmwuaW5jbHVkZXMoZWxlbWVudCkpID49IDA7XG5cdH1cblxuXHRfZ2V0S2V5UHJlZml4KGtleSkge1xuXHRcdHJldHVybiBgJHt0aGlzLm9wdHMubmFtZXNwYWNlfToke2tleX1gO1xuXHR9XG5cblx0X2dldEtleVByZWZpeEFycmF5KGtleXMpIHtcblx0XHRyZXR1cm4ga2V5cy5tYXAoa2V5ID0+IGAke3RoaXMub3B0cy5uYW1lc3BhY2V9OiR7a2V5fWApO1xuXHR9XG5cblx0X2dldEtleVVucHJlZml4KGtleSkge1xuXHRcdHJldHVybiBrZXlcblx0XHRcdC5zcGxpdCgnOicpXG5cdFx0XHQuc3BsaWNlKDEpXG5cdFx0XHQuam9pbignOicpO1xuXHR9XG5cblx0Z2V0KGtleSwgb3B0aW9ucykge1xuXHRcdGNvbnN0IHtzdG9yZX0gPSB0aGlzLm9wdHM7XG5cdFx0Y29uc3QgaXNBcnJheSA9IEFycmF5LmlzQXJyYXkoa2V5KTtcblx0XHRjb25zdCBrZXlQcmVmaXhlZCA9IGlzQXJyYXkgPyB0aGlzLl9nZXRLZXlQcmVmaXhBcnJheShrZXkpIDogdGhpcy5fZ2V0S2V5UHJlZml4KGtleSk7XG5cdFx0aWYgKGlzQXJyYXkgJiYgc3RvcmUuZ2V0TWFueSA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRjb25zdCBwcm9taXNlcyA9IFtdO1xuXHRcdFx0Zm9yIChjb25zdCBrZXkgb2Yga2V5UHJlZml4ZWQpIHtcblx0XHRcdFx0cHJvbWlzZXMucHVzaChQcm9taXNlLnJlc29sdmUoKVxuXHRcdFx0XHRcdC50aGVuKCgpID0+IHN0b3JlLmdldChrZXkpKVxuXHRcdFx0XHRcdC50aGVuKGRhdGEgPT4gKHR5cGVvZiBkYXRhID09PSAnc3RyaW5nJykgPyB0aGlzLm9wdHMuZGVzZXJpYWxpemUoZGF0YSkgOiBkYXRhKVxuXHRcdFx0XHRcdC50aGVuKGRhdGEgPT4ge1xuXHRcdFx0XHRcdFx0aWYgKGRhdGEgPT09IHVuZGVmaW5lZCB8fCBkYXRhID09PSBudWxsKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdGlmICh0eXBlb2YgZGF0YS5leHBpcmVzID09PSAnbnVtYmVyJyAmJiBEYXRlLm5vdygpID4gZGF0YS5leHBpcmVzKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiB0aGlzLmRlbGV0ZShrZXkpLnRoZW4oKCkgPT4gdW5kZWZpbmVkKTtcblx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0cmV0dXJuIChvcHRpb25zICYmIG9wdGlvbnMucmF3KSA/IGRhdGEgOiBkYXRhLnZhbHVlO1xuXHRcdFx0XHRcdH0pLFxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gUHJvbWlzZS5hbGxTZXR0bGVkKHByb21pc2VzKVxuXHRcdFx0XHQudGhlbih2YWx1ZXMgPT4ge1xuXHRcdFx0XHRcdGNvbnN0IGRhdGEgPSBbXTtcblx0XHRcdFx0XHRmb3IgKGNvbnN0IHZhbHVlIG9mIHZhbHVlcykge1xuXHRcdFx0XHRcdFx0ZGF0YS5wdXNoKHZhbHVlLnZhbHVlKTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRyZXR1cm4gZGF0YTtcblx0XHRcdFx0fSk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpXG5cdFx0XHQudGhlbigoKSA9PiBpc0FycmF5ID8gc3RvcmUuZ2V0TWFueShrZXlQcmVmaXhlZCkgOiBzdG9yZS5nZXQoa2V5UHJlZml4ZWQpKVxuXHRcdFx0LnRoZW4oZGF0YSA9PiAodHlwZW9mIGRhdGEgPT09ICdzdHJpbmcnKSA/IHRoaXMub3B0cy5kZXNlcmlhbGl6ZShkYXRhKSA6IGRhdGEpXG5cdFx0XHQudGhlbihkYXRhID0+IHtcblx0XHRcdFx0aWYgKGRhdGEgPT09IHVuZGVmaW5lZCB8fCBkYXRhID09PSBudWxsKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmIChpc0FycmF5KSB7XG5cdFx0XHRcdFx0Y29uc3QgcmVzdWx0ID0gW107XG5cblx0XHRcdFx0XHRmb3IgKGxldCByb3cgb2YgZGF0YSkge1xuXHRcdFx0XHRcdFx0aWYgKCh0eXBlb2Ygcm93ID09PSAnc3RyaW5nJykpIHtcblx0XHRcdFx0XHRcdFx0cm93ID0gdGhpcy5vcHRzLmRlc2VyaWFsaXplKHJvdyk7XG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdGlmIChyb3cgPT09IHVuZGVmaW5lZCB8fCByb3cgPT09IG51bGwpIHtcblx0XHRcdFx0XHRcdFx0cmVzdWx0LnB1c2godW5kZWZpbmVkKTtcblx0XHRcdFx0XHRcdFx0Y29udGludWU7XG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdGlmICh0eXBlb2Ygcm93LmV4cGlyZXMgPT09ICdudW1iZXInICYmIERhdGUubm93KCkgPiByb3cuZXhwaXJlcykge1xuXHRcdFx0XHRcdFx0XHR0aGlzLmRlbGV0ZShrZXkpLnRoZW4oKCkgPT4gdW5kZWZpbmVkKTtcblx0XHRcdFx0XHRcdFx0cmVzdWx0LnB1c2godW5kZWZpbmVkKTtcblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdHJlc3VsdC5wdXNoKChvcHRpb25zICYmIG9wdGlvbnMucmF3KSA/IHJvdyA6IHJvdy52YWx1ZSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0cmV0dXJuIHJlc3VsdDtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmICh0eXBlb2YgZGF0YS5leHBpcmVzID09PSAnbnVtYmVyJyAmJiBEYXRlLm5vdygpID4gZGF0YS5leHBpcmVzKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHRoaXMuZGVsZXRlKGtleSkudGhlbigoKSA9PiB1bmRlZmluZWQpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0cmV0dXJuIChvcHRpb25zICYmIG9wdGlvbnMucmF3KSA/IGRhdGEgOiBkYXRhLnZhbHVlO1xuXHRcdFx0fSk7XG5cdH1cblxuXHRzZXQoa2V5LCB2YWx1ZSwgdHRsKSB7XG5cdFx0Y29uc3Qga2V5UHJlZml4ZWQgPSB0aGlzLl9nZXRLZXlQcmVmaXgoa2V5KTtcblx0XHRpZiAodHlwZW9mIHR0bCA9PT0gJ3VuZGVmaW5lZCcpIHtcblx0XHRcdHR0bCA9IHRoaXMub3B0cy50dGw7XG5cdFx0fVxuXG5cdFx0aWYgKHR0bCA9PT0gMCkge1xuXHRcdFx0dHRsID0gdW5kZWZpbmVkO1xuXHRcdH1cblxuXHRcdGNvbnN0IHtzdG9yZX0gPSB0aGlzLm9wdHM7XG5cblx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKClcblx0XHRcdC50aGVuKCgpID0+IHtcblx0XHRcdFx0Y29uc3QgZXhwaXJlcyA9ICh0eXBlb2YgdHRsID09PSAnbnVtYmVyJykgPyAoRGF0ZS5ub3coKSArIHR0bCkgOiBudWxsO1xuXHRcdFx0XHRpZiAodHlwZW9mIHZhbHVlID09PSAnc3ltYm9sJykge1xuXHRcdFx0XHRcdHRoaXMuZW1pdCgnZXJyb3InLCAnc3ltYm9sIGNhbm5vdCBiZSBzZXJpYWxpemVkJyk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHR2YWx1ZSA9IHt2YWx1ZSwgZXhwaXJlc307XG5cdFx0XHRcdHJldHVybiB0aGlzLm9wdHMuc2VyaWFsaXplKHZhbHVlKTtcblx0XHRcdH0pXG5cdFx0XHQudGhlbih2YWx1ZSA9PiBzdG9yZS5zZXQoa2V5UHJlZml4ZWQsIHZhbHVlLCB0dGwpKVxuXHRcdFx0LnRoZW4oKCkgPT4gdHJ1ZSk7XG5cdH1cblxuXHRkZWxldGUoa2V5KSB7XG5cdFx0Y29uc3Qge3N0b3JlfSA9IHRoaXMub3B0cztcblx0XHRpZiAoQXJyYXkuaXNBcnJheShrZXkpKSB7XG5cdFx0XHRjb25zdCBrZXlQcmVmaXhlZCA9IHRoaXMuX2dldEtleVByZWZpeEFycmF5KGtleSk7XG5cdFx0XHRpZiAoc3RvcmUuZGVsZXRlTWFueSA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdGNvbnN0IHByb21pc2VzID0gW107XG5cdFx0XHRcdGZvciAoY29uc3Qga2V5IG9mIGtleVByZWZpeGVkKSB7XG5cdFx0XHRcdFx0cHJvbWlzZXMucHVzaChzdG9yZS5kZWxldGUoa2V5KSk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRyZXR1cm4gUHJvbWlzZS5hbGxTZXR0bGVkKHByb21pc2VzKVxuXHRcdFx0XHRcdC50aGVuKHZhbHVlcyA9PiB2YWx1ZXMuZXZlcnkoeCA9PiB4LnZhbHVlID09PSB0cnVlKSk7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUoKVxuXHRcdFx0XHQudGhlbigoKSA9PiBzdG9yZS5kZWxldGVNYW55KGtleVByZWZpeGVkKSk7XG5cdFx0fVxuXG5cdFx0Y29uc3Qga2V5UHJlZml4ZWQgPSB0aGlzLl9nZXRLZXlQcmVmaXgoa2V5KTtcblx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKClcblx0XHRcdC50aGVuKCgpID0+IHN0b3JlLmRlbGV0ZShrZXlQcmVmaXhlZCkpO1xuXHR9XG5cblx0Y2xlYXIoKSB7XG5cdFx0Y29uc3Qge3N0b3JlfSA9IHRoaXMub3B0cztcblx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKClcblx0XHRcdC50aGVuKCgpID0+IHN0b3JlLmNsZWFyKCkpO1xuXHR9XG5cblx0aGFzKGtleSkge1xuXHRcdGNvbnN0IGtleVByZWZpeGVkID0gdGhpcy5fZ2V0S2V5UHJlZml4KGtleSk7XG5cdFx0Y29uc3Qge3N0b3JlfSA9IHRoaXMub3B0cztcblx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKClcblx0XHRcdC50aGVuKGFzeW5jICgpID0+IHtcblx0XHRcdFx0aWYgKHR5cGVvZiBzdG9yZS5oYXMgPT09ICdmdW5jdGlvbicpIHtcblx0XHRcdFx0XHRyZXR1cm4gc3RvcmUuaGFzKGtleVByZWZpeGVkKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGNvbnN0IHZhbHVlID0gYXdhaXQgc3RvcmUuZ2V0KGtleVByZWZpeGVkKTtcblx0XHRcdFx0cmV0dXJuIHZhbHVlICE9PSB1bmRlZmluZWQ7XG5cdFx0XHR9KTtcblx0fVxuXG5cdGRpc2Nvbm5lY3QoKSB7XG5cdFx0Y29uc3Qge3N0b3JlfSA9IHRoaXMub3B0cztcblx0XHRpZiAodHlwZW9mIHN0b3JlLmRpc2Nvbm5lY3QgPT09ICdmdW5jdGlvbicpIHtcblx0XHRcdHJldHVybiBzdG9yZS5kaXNjb25uZWN0KCk7XG5cdFx0fVxuXHR9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gS2V5djtcbiIsICIndXNlIHN0cmljdCc7XG5cbmNvbnN0IEV2ZW50RW1pdHRlciA9IHJlcXVpcmUoJ2V2ZW50cycpO1xuY29uc3QgdXJsTGliID0gcmVxdWlyZSgndXJsJyk7XG5jb25zdCBub3JtYWxpemVVcmwgPSByZXF1aXJlKCdub3JtYWxpemUtdXJsJyk7XG5jb25zdCBnZXRTdHJlYW0gPSByZXF1aXJlKCdnZXQtc3RyZWFtJyk7XG5jb25zdCBDYWNoZVBvbGljeSA9IHJlcXVpcmUoJ2h0dHAtY2FjaGUtc2VtYW50aWNzJyk7XG5jb25zdCBSZXNwb25zZSA9IHJlcXVpcmUoJ3Jlc3BvbnNlbGlrZScpO1xuY29uc3QgbG93ZXJjYXNlS2V5cyA9IHJlcXVpcmUoJ2xvd2VyY2FzZS1rZXlzJyk7XG5jb25zdCBjbG9uZVJlc3BvbnNlID0gcmVxdWlyZSgnY2xvbmUtcmVzcG9uc2UnKTtcbmNvbnN0IEtleXYgPSByZXF1aXJlKCdrZXl2Jyk7XG5cbmNsYXNzIENhY2hlYWJsZVJlcXVlc3Qge1xuXHRjb25zdHJ1Y3RvcihyZXF1ZXN0LCBjYWNoZUFkYXB0ZXIpIHtcblx0XHRpZiAodHlwZW9mIHJlcXVlc3QgIT09ICdmdW5jdGlvbicpIHtcblx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoJ1BhcmFtZXRlciBgcmVxdWVzdGAgbXVzdCBiZSBhIGZ1bmN0aW9uJyk7XG5cdFx0fVxuXG5cdFx0dGhpcy5jYWNoZSA9IG5ldyBLZXl2KHtcblx0XHRcdHVyaTogdHlwZW9mIGNhY2hlQWRhcHRlciA9PT0gJ3N0cmluZycgJiYgY2FjaGVBZGFwdGVyLFxuXHRcdFx0c3RvcmU6IHR5cGVvZiBjYWNoZUFkYXB0ZXIgIT09ICdzdHJpbmcnICYmIGNhY2hlQWRhcHRlcixcblx0XHRcdG5hbWVzcGFjZTogJ2NhY2hlYWJsZS1yZXF1ZXN0J1xuXHRcdH0pO1xuXG5cdFx0cmV0dXJuIHRoaXMuY3JlYXRlQ2FjaGVhYmxlUmVxdWVzdChyZXF1ZXN0KTtcblx0fVxuXG5cdGNyZWF0ZUNhY2hlYWJsZVJlcXVlc3QocmVxdWVzdCkge1xuXHRcdHJldHVybiAob3B0cywgY2IpID0+IHtcblx0XHRcdGxldCB1cmw7XG5cdFx0XHRpZiAodHlwZW9mIG9wdHMgPT09ICdzdHJpbmcnKSB7XG5cdFx0XHRcdHVybCA9IG5vcm1hbGl6ZVVybE9iamVjdCh1cmxMaWIucGFyc2Uob3B0cykpO1xuXHRcdFx0XHRvcHRzID0ge307XG5cdFx0XHR9IGVsc2UgaWYgKG9wdHMgaW5zdGFuY2VvZiB1cmxMaWIuVVJMKSB7XG5cdFx0XHRcdHVybCA9IG5vcm1hbGl6ZVVybE9iamVjdCh1cmxMaWIucGFyc2Uob3B0cy50b1N0cmluZygpKSk7XG5cdFx0XHRcdG9wdHMgPSB7fTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGNvbnN0IFtwYXRobmFtZSwgLi4uc2VhcmNoUGFydHNdID0gKG9wdHMucGF0aCB8fCAnJykuc3BsaXQoJz8nKTtcblx0XHRcdFx0Y29uc3Qgc2VhcmNoID0gc2VhcmNoUGFydHMubGVuZ3RoID4gMCA/XG5cdFx0XHRcdFx0YD8ke3NlYXJjaFBhcnRzLmpvaW4oJz8nKX1gIDpcblx0XHRcdFx0XHQnJztcblx0XHRcdFx0dXJsID0gbm9ybWFsaXplVXJsT2JqZWN0KHsgLi4ub3B0cywgcGF0aG5hbWUsIHNlYXJjaCB9KTtcblx0XHRcdH1cblxuXHRcdFx0b3B0cyA9IHtcblx0XHRcdFx0aGVhZGVyczoge30sXG5cdFx0XHRcdG1ldGhvZDogJ0dFVCcsXG5cdFx0XHRcdGNhY2hlOiB0cnVlLFxuXHRcdFx0XHRzdHJpY3RUdGw6IGZhbHNlLFxuXHRcdFx0XHRhdXRvbWF0aWNGYWlsb3ZlcjogZmFsc2UsXG5cdFx0XHRcdC4uLm9wdHMsXG5cdFx0XHRcdC4uLnVybE9iamVjdFRvUmVxdWVzdE9wdGlvbnModXJsKVxuXHRcdFx0fTtcblx0XHRcdG9wdHMuaGVhZGVycyA9IGxvd2VyY2FzZUtleXMob3B0cy5oZWFkZXJzKTtcblxuXHRcdFx0Y29uc3QgZWUgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cdFx0XHRjb25zdCBub3JtYWxpemVkVXJsU3RyaW5nID0gbm9ybWFsaXplVXJsKFxuXHRcdFx0XHR1cmxMaWIuZm9ybWF0KHVybCksXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRzdHJpcFdXVzogZmFsc2UsXG5cdFx0XHRcdFx0cmVtb3ZlVHJhaWxpbmdTbGFzaDogZmFsc2UsXG5cdFx0XHRcdFx0c3RyaXBBdXRoZW50aWNhdGlvbjogZmFsc2Vcblx0XHRcdFx0fVxuXHRcdFx0KTtcblx0XHRcdGNvbnN0IGtleSA9IGAke29wdHMubWV0aG9kfToke25vcm1hbGl6ZWRVcmxTdHJpbmd9YDtcblx0XHRcdGxldCByZXZhbGlkYXRlID0gZmFsc2U7XG5cdFx0XHRsZXQgbWFkZVJlcXVlc3QgPSBmYWxzZTtcblxuXHRcdFx0Y29uc3QgbWFrZVJlcXVlc3QgPSBvcHRzID0+IHtcblx0XHRcdFx0bWFkZVJlcXVlc3QgPSB0cnVlO1xuXHRcdFx0XHRsZXQgcmVxdWVzdEVycm9yZWQgPSBmYWxzZTtcblx0XHRcdFx0bGV0IHJlcXVlc3RFcnJvckNhbGxiYWNrO1xuXG5cdFx0XHRcdGNvbnN0IHJlcXVlc3RFcnJvclByb21pc2UgPSBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcblx0XHRcdFx0XHRyZXF1ZXN0RXJyb3JDYWxsYmFjayA9ICgpID0+IHtcblx0XHRcdFx0XHRcdGlmICghcmVxdWVzdEVycm9yZWQpIHtcblx0XHRcdFx0XHRcdFx0cmVxdWVzdEVycm9yZWQgPSB0cnVlO1xuXHRcdFx0XHRcdFx0XHRyZXNvbHZlKCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0fSk7XG5cblx0XHRcdFx0Y29uc3QgaGFuZGxlciA9IHJlc3BvbnNlID0+IHtcblx0XHRcdFx0XHRpZiAocmV2YWxpZGF0ZSAmJiAhb3B0cy5mb3JjZVJlZnJlc2gpIHtcblx0XHRcdFx0XHRcdHJlc3BvbnNlLnN0YXR1cyA9IHJlc3BvbnNlLnN0YXR1c0NvZGU7XG5cdFx0XHRcdFx0XHRjb25zdCByZXZhbGlkYXRlZFBvbGljeSA9IENhY2hlUG9saWN5LmZyb21PYmplY3QocmV2YWxpZGF0ZS5jYWNoZVBvbGljeSkucmV2YWxpZGF0ZWRQb2xpY3kob3B0cywgcmVzcG9uc2UpO1xuXHRcdFx0XHRcdFx0aWYgKCFyZXZhbGlkYXRlZFBvbGljeS5tb2RpZmllZCkge1xuXHRcdFx0XHRcdFx0XHRjb25zdCBoZWFkZXJzID0gcmV2YWxpZGF0ZWRQb2xpY3kucG9saWN5LnJlc3BvbnNlSGVhZGVycygpO1xuXHRcdFx0XHRcdFx0XHRyZXNwb25zZSA9IG5ldyBSZXNwb25zZShyZXZhbGlkYXRlLnN0YXR1c0NvZGUsIGhlYWRlcnMsIHJldmFsaWRhdGUuYm9keSwgcmV2YWxpZGF0ZS51cmwpO1xuXHRcdFx0XHRcdFx0XHRyZXNwb25zZS5jYWNoZVBvbGljeSA9IHJldmFsaWRhdGVkUG9saWN5LnBvbGljeTtcblx0XHRcdFx0XHRcdFx0cmVzcG9uc2UuZnJvbUNhY2hlID0gdHJ1ZTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRpZiAoIXJlc3BvbnNlLmZyb21DYWNoZSkge1xuXHRcdFx0XHRcdFx0cmVzcG9uc2UuY2FjaGVQb2xpY3kgPSBuZXcgQ2FjaGVQb2xpY3kob3B0cywgcmVzcG9uc2UsIG9wdHMpO1xuXHRcdFx0XHRcdFx0cmVzcG9uc2UuZnJvbUNhY2hlID0gZmFsc2U7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0bGV0IGNsb25lZFJlc3BvbnNlO1xuXHRcdFx0XHRcdGlmIChvcHRzLmNhY2hlICYmIHJlc3BvbnNlLmNhY2hlUG9saWN5LnN0b3JhYmxlKCkpIHtcblx0XHRcdFx0XHRcdGNsb25lZFJlc3BvbnNlID0gY2xvbmVSZXNwb25zZShyZXNwb25zZSk7XG5cblx0XHRcdFx0XHRcdChhc3luYyAoKSA9PiB7XG5cdFx0XHRcdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc3QgYm9keVByb21pc2UgPSBnZXRTdHJlYW0uYnVmZmVyKHJlc3BvbnNlKTtcblxuXHRcdFx0XHRcdFx0XHRcdGF3YWl0IFByb21pc2UucmFjZShbXG5cdFx0XHRcdFx0XHRcdFx0XHRyZXF1ZXN0RXJyb3JQcm9taXNlLFxuXHRcdFx0XHRcdFx0XHRcdFx0bmV3IFByb21pc2UocmVzb2x2ZSA9PiByZXNwb25zZS5vbmNlKCdlbmQnLCByZXNvbHZlKSlcblx0XHRcdFx0XHRcdFx0XHRdKTtcblxuXHRcdFx0XHRcdFx0XHRcdGlmIChyZXF1ZXN0RXJyb3JlZCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRcdGNvbnN0IGJvZHkgPSBhd2FpdCBib2R5UHJvbWlzZTtcblxuXHRcdFx0XHRcdFx0XHRcdGNvbnN0IHZhbHVlID0ge1xuXHRcdFx0XHRcdFx0XHRcdFx0Y2FjaGVQb2xpY3k6IHJlc3BvbnNlLmNhY2hlUG9saWN5LnRvT2JqZWN0KCksXG5cdFx0XHRcdFx0XHRcdFx0XHR1cmw6IHJlc3BvbnNlLnVybCxcblx0XHRcdFx0XHRcdFx0XHRcdHN0YXR1c0NvZGU6IHJlc3BvbnNlLmZyb21DYWNoZSA/IHJldmFsaWRhdGUuc3RhdHVzQ29kZSA6IHJlc3BvbnNlLnN0YXR1c0NvZGUsXG5cdFx0XHRcdFx0XHRcdFx0XHRib2R5XG5cdFx0XHRcdFx0XHRcdFx0fTtcblxuXHRcdFx0XHRcdFx0XHRcdGxldCB0dGwgPSBvcHRzLnN0cmljdFR0bCA/IHJlc3BvbnNlLmNhY2hlUG9saWN5LnRpbWVUb0xpdmUoKSA6IHVuZGVmaW5lZDtcblx0XHRcdFx0XHRcdFx0XHRpZiAob3B0cy5tYXhUdGwpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHR0bCA9IHR0bCA/IE1hdGgubWluKHR0bCwgb3B0cy5tYXhUdGwpIDogb3B0cy5tYXhUdGw7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdFx0YXdhaXQgdGhpcy5jYWNoZS5zZXQoa2V5LCB2YWx1ZSwgdHRsKTtcblx0XHRcdFx0XHRcdFx0fSBjYXRjaCAoZXJyb3IpIHtcblx0XHRcdFx0XHRcdFx0XHRlZS5lbWl0KCdlcnJvcicsIG5ldyBDYWNoZWFibGVSZXF1ZXN0LkNhY2hlRXJyb3IoZXJyb3IpKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fSkoKTtcblx0XHRcdFx0XHR9IGVsc2UgaWYgKG9wdHMuY2FjaGUgJiYgcmV2YWxpZGF0ZSkge1xuXHRcdFx0XHRcdFx0KGFzeW5jICgpID0+IHtcblx0XHRcdFx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRcdFx0XHRhd2FpdCB0aGlzLmNhY2hlLmRlbGV0ZShrZXkpO1xuXHRcdFx0XHRcdFx0XHR9IGNhdGNoIChlcnJvcikge1xuXHRcdFx0XHRcdFx0XHRcdGVlLmVtaXQoJ2Vycm9yJywgbmV3IENhY2hlYWJsZVJlcXVlc3QuQ2FjaGVFcnJvcihlcnJvcikpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9KSgpO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGVlLmVtaXQoJ3Jlc3BvbnNlJywgY2xvbmVkUmVzcG9uc2UgfHwgcmVzcG9uc2UpO1xuXHRcdFx0XHRcdGlmICh0eXBlb2YgY2IgPT09ICdmdW5jdGlvbicpIHtcblx0XHRcdFx0XHRcdGNiKGNsb25lZFJlc3BvbnNlIHx8IHJlc3BvbnNlKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH07XG5cblx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRjb25zdCByZXEgPSByZXF1ZXN0KG9wdHMsIGhhbmRsZXIpO1xuXHRcdFx0XHRcdHJlcS5vbmNlKCdlcnJvcicsIHJlcXVlc3RFcnJvckNhbGxiYWNrKTtcblx0XHRcdFx0XHRyZXEub25jZSgnYWJvcnQnLCByZXF1ZXN0RXJyb3JDYWxsYmFjayk7XG5cdFx0XHRcdFx0ZWUuZW1pdCgncmVxdWVzdCcsIHJlcSk7XG5cdFx0XHRcdH0gY2F0Y2ggKGVycm9yKSB7XG5cdFx0XHRcdFx0ZWUuZW1pdCgnZXJyb3InLCBuZXcgQ2FjaGVhYmxlUmVxdWVzdC5SZXF1ZXN0RXJyb3IoZXJyb3IpKTtcblx0XHRcdFx0fVxuXHRcdFx0fTtcblxuXHRcdFx0KGFzeW5jICgpID0+IHtcblx0XHRcdFx0Y29uc3QgZ2V0ID0gYXN5bmMgb3B0cyA9PiB7XG5cdFx0XHRcdFx0YXdhaXQgUHJvbWlzZS5yZXNvbHZlKCk7XG5cblx0XHRcdFx0XHRjb25zdCBjYWNoZUVudHJ5ID0gb3B0cy5jYWNoZSA/IGF3YWl0IHRoaXMuY2FjaGUuZ2V0KGtleSkgOiB1bmRlZmluZWQ7XG5cdFx0XHRcdFx0aWYgKHR5cGVvZiBjYWNoZUVudHJ5ID09PSAndW5kZWZpbmVkJykge1xuXHRcdFx0XHRcdFx0cmV0dXJuIG1ha2VSZXF1ZXN0KG9wdHMpO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGNvbnN0IHBvbGljeSA9IENhY2hlUG9saWN5LmZyb21PYmplY3QoY2FjaGVFbnRyeS5jYWNoZVBvbGljeSk7XG5cdFx0XHRcdFx0aWYgKHBvbGljeS5zYXRpc2ZpZXNXaXRob3V0UmV2YWxpZGF0aW9uKG9wdHMpICYmICFvcHRzLmZvcmNlUmVmcmVzaCkge1xuXHRcdFx0XHRcdFx0Y29uc3QgaGVhZGVycyA9IHBvbGljeS5yZXNwb25zZUhlYWRlcnMoKTtcblx0XHRcdFx0XHRcdGNvbnN0IHJlc3BvbnNlID0gbmV3IFJlc3BvbnNlKGNhY2hlRW50cnkuc3RhdHVzQ29kZSwgaGVhZGVycywgY2FjaGVFbnRyeS5ib2R5LCBjYWNoZUVudHJ5LnVybCk7XG5cdFx0XHRcdFx0XHRyZXNwb25zZS5jYWNoZVBvbGljeSA9IHBvbGljeTtcblx0XHRcdFx0XHRcdHJlc3BvbnNlLmZyb21DYWNoZSA9IHRydWU7XG5cblx0XHRcdFx0XHRcdGVlLmVtaXQoJ3Jlc3BvbnNlJywgcmVzcG9uc2UpO1xuXHRcdFx0XHRcdFx0aWYgKHR5cGVvZiBjYiA9PT0gJ2Z1bmN0aW9uJykge1xuXHRcdFx0XHRcdFx0XHRjYihyZXNwb25zZSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdHJldmFsaWRhdGUgPSBjYWNoZUVudHJ5O1xuXHRcdFx0XHRcdFx0b3B0cy5oZWFkZXJzID0gcG9saWN5LnJldmFsaWRhdGlvbkhlYWRlcnMob3B0cyk7XG5cdFx0XHRcdFx0XHRtYWtlUmVxdWVzdChvcHRzKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH07XG5cblx0XHRcdFx0Y29uc3QgZXJyb3JIYW5kbGVyID0gZXJyb3IgPT4gZWUuZW1pdCgnZXJyb3InLCBuZXcgQ2FjaGVhYmxlUmVxdWVzdC5DYWNoZUVycm9yKGVycm9yKSk7XG5cdFx0XHRcdHRoaXMuY2FjaGUub25jZSgnZXJyb3InLCBlcnJvckhhbmRsZXIpO1xuXHRcdFx0XHRlZS5vbigncmVzcG9uc2UnLCAoKSA9PiB0aGlzLmNhY2hlLnJlbW92ZUxpc3RlbmVyKCdlcnJvcicsIGVycm9ySGFuZGxlcikpO1xuXG5cdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0YXdhaXQgZ2V0KG9wdHMpO1xuXHRcdFx0XHR9IGNhdGNoIChlcnJvcikge1xuXHRcdFx0XHRcdGlmIChvcHRzLmF1dG9tYXRpY0ZhaWxvdmVyICYmICFtYWRlUmVxdWVzdCkge1xuXHRcdFx0XHRcdFx0bWFrZVJlcXVlc3Qob3B0cyk7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0ZWUuZW1pdCgnZXJyb3InLCBuZXcgQ2FjaGVhYmxlUmVxdWVzdC5DYWNoZUVycm9yKGVycm9yKSk7XG5cdFx0XHRcdH1cblx0XHRcdH0pKCk7XG5cblx0XHRcdHJldHVybiBlZTtcblx0XHR9O1xuXHR9XG59XG5cbmZ1bmN0aW9uIHVybE9iamVjdFRvUmVxdWVzdE9wdGlvbnModXJsKSB7XG5cdGNvbnN0IG9wdGlvbnMgPSB7IC4uLnVybCB9O1xuXHRvcHRpb25zLnBhdGggPSBgJHt1cmwucGF0aG5hbWUgfHwgJy8nfSR7dXJsLnNlYXJjaCB8fCAnJ31gO1xuXHRkZWxldGUgb3B0aW9ucy5wYXRobmFtZTtcblx0ZGVsZXRlIG9wdGlvbnMuc2VhcmNoO1xuXHRyZXR1cm4gb3B0aW9ucztcbn1cblxuZnVuY3Rpb24gbm9ybWFsaXplVXJsT2JqZWN0KHVybCkge1xuXHQvLyBJZiB1cmwgd2FzIHBhcnNlZCBieSB1cmwucGFyc2Ugb3IgbmV3IFVSTDpcblx0Ly8gLSBob3N0bmFtZSB3aWxsIGJlIHNldFxuXHQvLyAtIGhvc3Qgd2lsbCBiZSBob3N0bmFtZVs6cG9ydF1cblx0Ly8gLSBwb3J0IHdpbGwgYmUgc2V0IGlmIGl0IHdhcyBleHBsaWNpdCBpbiB0aGUgcGFyc2VkIHN0cmluZ1xuXHQvLyBPdGhlcndpc2UsIHVybCB3YXMgZnJvbSByZXF1ZXN0IG9wdGlvbnM6XG5cdC8vIC0gaG9zdG5hbWUgb3IgaG9zdCBtYXkgYmUgc2V0XG5cdC8vIC0gaG9zdCBzaGFsbCBub3QgaGF2ZSBwb3J0IGVuY29kZWRcblx0cmV0dXJuIHtcblx0XHRwcm90b2NvbDogdXJsLnByb3RvY29sLFxuXHRcdGF1dGg6IHVybC5hdXRoLFxuXHRcdGhvc3RuYW1lOiB1cmwuaG9zdG5hbWUgfHwgdXJsLmhvc3QgfHwgJ2xvY2FsaG9zdCcsXG5cdFx0cG9ydDogdXJsLnBvcnQsXG5cdFx0cGF0aG5hbWU6IHVybC5wYXRobmFtZSxcblx0XHRzZWFyY2g6IHVybC5zZWFyY2hcblx0fTtcbn1cblxuQ2FjaGVhYmxlUmVxdWVzdC5SZXF1ZXN0RXJyb3IgPSBjbGFzcyBleHRlbmRzIEVycm9yIHtcblx0Y29uc3RydWN0b3IoZXJyb3IpIHtcblx0XHRzdXBlcihlcnJvci5tZXNzYWdlKTtcblx0XHR0aGlzLm5hbWUgPSAnUmVxdWVzdEVycm9yJztcblx0XHRPYmplY3QuYXNzaWduKHRoaXMsIGVycm9yKTtcblx0fVxufTtcblxuQ2FjaGVhYmxlUmVxdWVzdC5DYWNoZUVycm9yID0gY2xhc3MgZXh0ZW5kcyBFcnJvciB7XG5cdGNvbnN0cnVjdG9yKGVycm9yKSB7XG5cdFx0c3VwZXIoZXJyb3IubWVzc2FnZSk7XG5cdFx0dGhpcy5uYW1lID0gJ0NhY2hlRXJyb3InO1xuXHRcdE9iamVjdC5hc3NpZ24odGhpcywgZXJyb3IpO1xuXHR9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IENhY2hlYWJsZVJlcXVlc3Q7XG4iLCAiJ3VzZSBzdHJpY3QnO1xuXG4vLyBXZSBkZWZpbmUgdGhlc2UgbWFudWFsbHkgdG8gZW5zdXJlIHRoZXkncmUgYWx3YXlzIGNvcGllZFxuLy8gZXZlbiBpZiB0aGV5IHdvdWxkIG1vdmUgdXAgdGhlIHByb3RvdHlwZSBjaGFpblxuLy8gaHR0cHM6Ly9ub2RlanMub3JnL2FwaS9odHRwLmh0bWwjaHR0cF9jbGFzc19odHRwX2luY29taW5nbWVzc2FnZVxuY29uc3Qga25vd25Qcm9wZXJ0aWVzID0gW1xuXHQnYWJvcnRlZCcsXG5cdCdjb21wbGV0ZScsXG5cdCdoZWFkZXJzJyxcblx0J2h0dHBWZXJzaW9uJyxcblx0J2h0dHBWZXJzaW9uTWlub3InLFxuXHQnaHR0cFZlcnNpb25NYWpvcicsXG5cdCdtZXRob2QnLFxuXHQncmF3SGVhZGVycycsXG5cdCdyYXdUcmFpbGVycycsXG5cdCdzZXRUaW1lb3V0Jyxcblx0J3NvY2tldCcsXG5cdCdzdGF0dXNDb2RlJyxcblx0J3N0YXR1c01lc3NhZ2UnLFxuXHQndHJhaWxlcnMnLFxuXHQndXJsJ1xuXTtcblxubW9kdWxlLmV4cG9ydHMgPSAoZnJvbVN0cmVhbSwgdG9TdHJlYW0pID0+IHtcblx0aWYgKHRvU3RyZWFtLl9yZWFkYWJsZVN0YXRlLmF1dG9EZXN0cm95KSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKCdUaGUgc2Vjb25kIHN0cmVhbSBtdXN0IGhhdmUgdGhlIGBhdXRvRGVzdHJveWAgb3B0aW9uIHNldCB0byBgZmFsc2VgJyk7XG5cdH1cblxuXHRjb25zdCBmcm9tUHJvcGVydGllcyA9IG5ldyBTZXQoT2JqZWN0LmtleXMoZnJvbVN0cmVhbSkuY29uY2F0KGtub3duUHJvcGVydGllcykpO1xuXG5cdGNvbnN0IHByb3BlcnRpZXMgPSB7fTtcblxuXHRmb3IgKGNvbnN0IHByb3BlcnR5IG9mIGZyb21Qcm9wZXJ0aWVzKSB7XG5cdFx0Ly8gRG9uJ3Qgb3ZlcndyaXRlIGV4aXN0aW5nIHByb3BlcnRpZXMuXG5cdFx0aWYgKHByb3BlcnR5IGluIHRvU3RyZWFtKSB7XG5cdFx0XHRjb250aW51ZTtcblx0XHR9XG5cblx0XHRwcm9wZXJ0aWVzW3Byb3BlcnR5XSA9IHtcblx0XHRcdGdldCgpIHtcblx0XHRcdFx0Y29uc3QgdmFsdWUgPSBmcm9tU3RyZWFtW3Byb3BlcnR5XTtcblx0XHRcdFx0Y29uc3QgaXNGdW5jdGlvbiA9IHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJztcblxuXHRcdFx0XHRyZXR1cm4gaXNGdW5jdGlvbiA/IHZhbHVlLmJpbmQoZnJvbVN0cmVhbSkgOiB2YWx1ZTtcblx0XHRcdH0sXG5cdFx0XHRzZXQodmFsdWUpIHtcblx0XHRcdFx0ZnJvbVN0cmVhbVtwcm9wZXJ0eV0gPSB2YWx1ZTtcblx0XHRcdH0sXG5cdFx0XHRlbnVtZXJhYmxlOiB0cnVlLFxuXHRcdFx0Y29uZmlndXJhYmxlOiBmYWxzZVxuXHRcdH07XG5cdH1cblxuXHRPYmplY3QuZGVmaW5lUHJvcGVydGllcyh0b1N0cmVhbSwgcHJvcGVydGllcyk7XG5cblx0ZnJvbVN0cmVhbS5vbmNlKCdhYm9ydGVkJywgKCkgPT4ge1xuXHRcdHRvU3RyZWFtLmRlc3Ryb3koKTtcblxuXHRcdHRvU3RyZWFtLmVtaXQoJ2Fib3J0ZWQnKTtcblx0fSk7XG5cblx0ZnJvbVN0cmVhbS5vbmNlKCdjbG9zZScsICgpID0+IHtcblx0XHRpZiAoZnJvbVN0cmVhbS5jb21wbGV0ZSkge1xuXHRcdFx0aWYgKHRvU3RyZWFtLnJlYWRhYmxlKSB7XG5cdFx0XHRcdHRvU3RyZWFtLm9uY2UoJ2VuZCcsICgpID0+IHtcblx0XHRcdFx0XHR0b1N0cmVhbS5lbWl0KCdjbG9zZScpO1xuXHRcdFx0XHR9KTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHRvU3RyZWFtLmVtaXQoJ2Nsb3NlJyk7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRvU3RyZWFtLmVtaXQoJ2Nsb3NlJyk7XG5cdFx0fVxuXHR9KTtcblxuXHRyZXR1cm4gdG9TdHJlYW07XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbmNvbnN0IHtUcmFuc2Zvcm0sIFBhc3NUaHJvdWdofSA9IHJlcXVpcmUoJ3N0cmVhbScpO1xuY29uc3QgemxpYiA9IHJlcXVpcmUoJ3psaWInKTtcbmNvbnN0IG1pbWljUmVzcG9uc2UgPSByZXF1aXJlKCdtaW1pYy1yZXNwb25zZScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJlc3BvbnNlID0+IHtcblx0Y29uc3QgY29udGVudEVuY29kaW5nID0gKHJlc3BvbnNlLmhlYWRlcnNbJ2NvbnRlbnQtZW5jb2RpbmcnXSB8fCAnJykudG9Mb3dlckNhc2UoKTtcblxuXHRpZiAoIVsnZ3ppcCcsICdkZWZsYXRlJywgJ2JyJ10uaW5jbHVkZXMoY29udGVudEVuY29kaW5nKSkge1xuXHRcdHJldHVybiByZXNwb25zZTtcblx0fVxuXG5cdC8vIFRPRE86IFJlbW92ZSB0aGlzIHdoZW4gdGFyZ2V0aW5nIE5vZGUuanMgMTIuXG5cdGNvbnN0IGlzQnJvdGxpID0gY29udGVudEVuY29kaW5nID09PSAnYnInO1xuXHRpZiAoaXNCcm90bGkgJiYgdHlwZW9mIHpsaWIuY3JlYXRlQnJvdGxpRGVjb21wcmVzcyAhPT0gJ2Z1bmN0aW9uJykge1xuXHRcdHJlc3BvbnNlLmRlc3Ryb3kobmV3IEVycm9yKCdCcm90bGkgaXMgbm90IHN1cHBvcnRlZCBvbiBOb2RlLmpzIDwgMTInKSk7XG5cdFx0cmV0dXJuIHJlc3BvbnNlO1xuXHR9XG5cblx0bGV0IGlzRW1wdHkgPSB0cnVlO1xuXG5cdGNvbnN0IGNoZWNrZXIgPSBuZXcgVHJhbnNmb3JtKHtcblx0XHR0cmFuc2Zvcm0oZGF0YSwgX2VuY29kaW5nLCBjYWxsYmFjaykge1xuXHRcdFx0aXNFbXB0eSA9IGZhbHNlO1xuXG5cdFx0XHRjYWxsYmFjayhudWxsLCBkYXRhKTtcblx0XHR9LFxuXG5cdFx0Zmx1c2goY2FsbGJhY2spIHtcblx0XHRcdGNhbGxiYWNrKCk7XG5cdFx0fVxuXHR9KTtcblxuXHRjb25zdCBmaW5hbFN0cmVhbSA9IG5ldyBQYXNzVGhyb3VnaCh7XG5cdFx0YXV0b0Rlc3Ryb3k6IGZhbHNlLFxuXHRcdGRlc3Ryb3koZXJyb3IsIGNhbGxiYWNrKSB7XG5cdFx0XHRyZXNwb25zZS5kZXN0cm95KCk7XG5cblx0XHRcdGNhbGxiYWNrKGVycm9yKTtcblx0XHR9XG5cdH0pO1xuXG5cdGNvbnN0IGRlY29tcHJlc3NTdHJlYW0gPSBpc0Jyb3RsaSA/IHpsaWIuY3JlYXRlQnJvdGxpRGVjb21wcmVzcygpIDogemxpYi5jcmVhdGVVbnppcCgpO1xuXG5cdGRlY29tcHJlc3NTdHJlYW0ub25jZSgnZXJyb3InLCBlcnJvciA9PiB7XG5cdFx0aWYgKGlzRW1wdHkgJiYgIXJlc3BvbnNlLnJlYWRhYmxlKSB7XG5cdFx0XHRmaW5hbFN0cmVhbS5lbmQoKTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRmaW5hbFN0cmVhbS5kZXN0cm95KGVycm9yKTtcblx0fSk7XG5cblx0bWltaWNSZXNwb25zZShyZXNwb25zZSwgZmluYWxTdHJlYW0pO1xuXHRyZXNwb25zZS5waXBlKGNoZWNrZXIpLnBpcGUoZGVjb21wcmVzc1N0cmVhbSkucGlwZShmaW5hbFN0cmVhbSk7XG5cblx0cmV0dXJuIGZpbmFsU3RyZWFtO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG5cbmNsYXNzIFF1aWNrTFJVIHtcblx0Y29uc3RydWN0b3Iob3B0aW9ucyA9IHt9KSB7XG5cdFx0aWYgKCEob3B0aW9ucy5tYXhTaXplICYmIG9wdGlvbnMubWF4U2l6ZSA+IDApKSB7XG5cdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdgbWF4U2l6ZWAgbXVzdCBiZSBhIG51bWJlciBncmVhdGVyIHRoYW4gMCcpO1xuXHRcdH1cblxuXHRcdHRoaXMubWF4U2l6ZSA9IG9wdGlvbnMubWF4U2l6ZTtcblx0XHR0aGlzLm9uRXZpY3Rpb24gPSBvcHRpb25zLm9uRXZpY3Rpb247XG5cdFx0dGhpcy5jYWNoZSA9IG5ldyBNYXAoKTtcblx0XHR0aGlzLm9sZENhY2hlID0gbmV3IE1hcCgpO1xuXHRcdHRoaXMuX3NpemUgPSAwO1xuXHR9XG5cblx0X3NldChrZXksIHZhbHVlKSB7XG5cdFx0dGhpcy5jYWNoZS5zZXQoa2V5LCB2YWx1ZSk7XG5cdFx0dGhpcy5fc2l6ZSsrO1xuXG5cdFx0aWYgKHRoaXMuX3NpemUgPj0gdGhpcy5tYXhTaXplKSB7XG5cdFx0XHR0aGlzLl9zaXplID0gMDtcblxuXHRcdFx0aWYgKHR5cGVvZiB0aGlzLm9uRXZpY3Rpb24gPT09ICdmdW5jdGlvbicpIHtcblx0XHRcdFx0Zm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgdGhpcy5vbGRDYWNoZS5lbnRyaWVzKCkpIHtcblx0XHRcdFx0XHR0aGlzLm9uRXZpY3Rpb24oa2V5LCB2YWx1ZSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0dGhpcy5vbGRDYWNoZSA9IHRoaXMuY2FjaGU7XG5cdFx0XHR0aGlzLmNhY2hlID0gbmV3IE1hcCgpO1xuXHRcdH1cblx0fVxuXG5cdGdldChrZXkpIHtcblx0XHRpZiAodGhpcy5jYWNoZS5oYXMoa2V5KSkge1xuXHRcdFx0cmV0dXJuIHRoaXMuY2FjaGUuZ2V0KGtleSk7XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMub2xkQ2FjaGUuaGFzKGtleSkpIHtcblx0XHRcdGNvbnN0IHZhbHVlID0gdGhpcy5vbGRDYWNoZS5nZXQoa2V5KTtcblx0XHRcdHRoaXMub2xkQ2FjaGUuZGVsZXRlKGtleSk7XG5cdFx0XHR0aGlzLl9zZXQoa2V5LCB2YWx1ZSk7XG5cdFx0XHRyZXR1cm4gdmFsdWU7XG5cdFx0fVxuXHR9XG5cblx0c2V0KGtleSwgdmFsdWUpIHtcblx0XHRpZiAodGhpcy5jYWNoZS5oYXMoa2V5KSkge1xuXHRcdFx0dGhpcy5jYWNoZS5zZXQoa2V5LCB2YWx1ZSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuX3NldChrZXksIHZhbHVlKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdGhhcyhrZXkpIHtcblx0XHRyZXR1cm4gdGhpcy5jYWNoZS5oYXMoa2V5KSB8fCB0aGlzLm9sZENhY2hlLmhhcyhrZXkpO1xuXHR9XG5cblx0cGVlayhrZXkpIHtcblx0XHRpZiAodGhpcy5jYWNoZS5oYXMoa2V5KSkge1xuXHRcdFx0cmV0dXJuIHRoaXMuY2FjaGUuZ2V0KGtleSk7XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMub2xkQ2FjaGUuaGFzKGtleSkpIHtcblx0XHRcdHJldHVybiB0aGlzLm9sZENhY2hlLmdldChrZXkpO1xuXHRcdH1cblx0fVxuXG5cdGRlbGV0ZShrZXkpIHtcblx0XHRjb25zdCBkZWxldGVkID0gdGhpcy5jYWNoZS5kZWxldGUoa2V5KTtcblx0XHRpZiAoZGVsZXRlZCkge1xuXHRcdFx0dGhpcy5fc2l6ZS0tO1xuXHRcdH1cblxuXHRcdHJldHVybiB0aGlzLm9sZENhY2hlLmRlbGV0ZShrZXkpIHx8IGRlbGV0ZWQ7XG5cdH1cblxuXHRjbGVhcigpIHtcblx0XHR0aGlzLmNhY2hlLmNsZWFyKCk7XG5cdFx0dGhpcy5vbGRDYWNoZS5jbGVhcigpO1xuXHRcdHRoaXMuX3NpemUgPSAwO1xuXHR9XG5cblx0KiBrZXlzKCkge1xuXHRcdGZvciAoY29uc3QgW2tleV0gb2YgdGhpcykge1xuXHRcdFx0eWllbGQga2V5O1xuXHRcdH1cblx0fVxuXG5cdCogdmFsdWVzKCkge1xuXHRcdGZvciAoY29uc3QgWywgdmFsdWVdIG9mIHRoaXMpIHtcblx0XHRcdHlpZWxkIHZhbHVlO1xuXHRcdH1cblx0fVxuXG5cdCogW1N5bWJvbC5pdGVyYXRvcl0oKSB7XG5cdFx0Zm9yIChjb25zdCBpdGVtIG9mIHRoaXMuY2FjaGUpIHtcblx0XHRcdHlpZWxkIGl0ZW07XG5cdFx0fVxuXG5cdFx0Zm9yIChjb25zdCBpdGVtIG9mIHRoaXMub2xkQ2FjaGUpIHtcblx0XHRcdGNvbnN0IFtrZXldID0gaXRlbTtcblx0XHRcdGlmICghdGhpcy5jYWNoZS5oYXMoa2V5KSkge1xuXHRcdFx0XHR5aWVsZCBpdGVtO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdGdldCBzaXplKCkge1xuXHRcdGxldCBvbGRDYWNoZVNpemUgPSAwO1xuXHRcdGZvciAoY29uc3Qga2V5IG9mIHRoaXMub2xkQ2FjaGUua2V5cygpKSB7XG5cdFx0XHRpZiAoIXRoaXMuY2FjaGUuaGFzKGtleSkpIHtcblx0XHRcdFx0b2xkQ2FjaGVTaXplKys7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIE1hdGgubWluKHRoaXMuX3NpemUgKyBvbGRDYWNoZVNpemUsIHRoaXMubWF4U2l6ZSk7XG5cdH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBRdWlja0xSVTtcbiIsICIndXNlIHN0cmljdCc7XG5jb25zdCBFdmVudEVtaXR0ZXIgPSByZXF1aXJlKCdldmVudHMnKTtcbmNvbnN0IHRscyA9IHJlcXVpcmUoJ3RscycpO1xuY29uc3QgaHR0cDIgPSByZXF1aXJlKCdodHRwMicpO1xuY29uc3QgUXVpY2tMUlUgPSByZXF1aXJlKCdxdWljay1scnUnKTtcblxuY29uc3Qga0N1cnJlbnRTdHJlYW1zQ291bnQgPSBTeW1ib2woJ2N1cnJlbnRTdHJlYW1zQ291bnQnKTtcbmNvbnN0IGtSZXF1ZXN0ID0gU3ltYm9sKCdyZXF1ZXN0Jyk7XG5jb25zdCBrT3JpZ2luU2V0ID0gU3ltYm9sKCdjYWNoZWRPcmlnaW5TZXQnKTtcbmNvbnN0IGtHcmFjZWZ1bGx5Q2xvc2luZyA9IFN5bWJvbCgnZ3JhY2VmdWxseUNsb3NpbmcnKTtcblxuY29uc3QgbmFtZUtleXMgPSBbXG5cdC8vIGBodHRwMi5jb25uZWN0KClgIG9wdGlvbnNcblx0J21heERlZmxhdGVEeW5hbWljVGFibGVTaXplJyxcblx0J21heFNlc3Npb25NZW1vcnknLFxuXHQnbWF4SGVhZGVyTGlzdFBhaXJzJyxcblx0J21heE91dHN0YW5kaW5nUGluZ3MnLFxuXHQnbWF4UmVzZXJ2ZWRSZW1vdGVTdHJlYW1zJyxcblx0J21heFNlbmRIZWFkZXJCbG9ja0xlbmd0aCcsXG5cdCdwYWRkaW5nU3RyYXRlZ3knLFxuXG5cdC8vIGB0bHMuY29ubmVjdCgpYCBvcHRpb25zXG5cdCdsb2NhbEFkZHJlc3MnLFxuXHQncGF0aCcsXG5cdCdyZWplY3RVbmF1dGhvcml6ZWQnLFxuXHQnbWluREhTaXplJyxcblxuXHQvLyBgdGxzLmNyZWF0ZVNlY3VyZUNvbnRleHQoKWAgb3B0aW9uc1xuXHQnY2EnLFxuXHQnY2VydCcsXG5cdCdjbGllbnRDZXJ0RW5naW5lJyxcblx0J2NpcGhlcnMnLFxuXHQna2V5Jyxcblx0J3BmeCcsXG5cdCdzZXJ2ZXJuYW1lJyxcblx0J21pblZlcnNpb24nLFxuXHQnbWF4VmVyc2lvbicsXG5cdCdzZWN1cmVQcm90b2NvbCcsXG5cdCdjcmwnLFxuXHQnaG9ub3JDaXBoZXJPcmRlcicsXG5cdCdlY2RoQ3VydmUnLFxuXHQnZGhwYXJhbScsXG5cdCdzZWN1cmVPcHRpb25zJyxcblx0J3Nlc3Npb25JZENvbnRleHQnXG5dO1xuXG5jb25zdCBnZXRTb3J0ZWRJbmRleCA9IChhcnJheSwgdmFsdWUsIGNvbXBhcmUpID0+IHtcblx0bGV0IGxvdyA9IDA7XG5cdGxldCBoaWdoID0gYXJyYXkubGVuZ3RoO1xuXG5cdHdoaWxlIChsb3cgPCBoaWdoKSB7XG5cdFx0Y29uc3QgbWlkID0gKGxvdyArIGhpZ2gpID4+PiAxO1xuXG5cdFx0LyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cblx0XHRpZiAoY29tcGFyZShhcnJheVttaWRdLCB2YWx1ZSkpIHtcblx0XHRcdC8vIFRoaXMgbmV2ZXIgZ2V0cyBjYWxsZWQgYmVjYXVzZSB3ZSB1c2UgZGVzY2VuZGluZyBzb3J0LiBCZXR0ZXIgdG8gaGF2ZSB0aGlzIGFueXdheS5cblx0XHRcdGxvdyA9IG1pZCArIDE7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGhpZ2ggPSBtaWQ7XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIGxvdztcbn07XG5cbmNvbnN0IGNvbXBhcmVTZXNzaW9ucyA9IChhLCBiKSA9PiB7XG5cdHJldHVybiBhLnJlbW90ZVNldHRpbmdzLm1heENvbmN1cnJlbnRTdHJlYW1zID4gYi5yZW1vdGVTZXR0aW5ncy5tYXhDb25jdXJyZW50U3RyZWFtcztcbn07XG5cbi8vIFNlZSBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjODMzNlxuY29uc3QgY2xvc2VDb3ZlcmVkU2Vzc2lvbnMgPSAod2hlcmUsIHNlc3Npb24pID0+IHtcblx0Ly8gQ2xpZW50cyBTSE9VTEQgTk9UIGVtaXQgbmV3IHJlcXVlc3RzIG9uIGFueSBjb25uZWN0aW9uIHdob3NlIE9yaWdpblxuXHQvLyBTZXQgaXMgYSBwcm9wZXIgc3Vic2V0IG9mIGFub3RoZXIgY29ubmVjdGlvbidzIE9yaWdpbiBTZXQsIGFuZCB0aGV5XG5cdC8vIFNIT1VMRCBjbG9zZSBpdCBvbmNlIGFsbCBvdXRzdGFuZGluZyByZXF1ZXN0cyBhcmUgc2F0aXNmaWVkLlxuXHRmb3IgKGNvbnN0IGNvdmVyZWRTZXNzaW9uIG9mIHdoZXJlKSB7XG5cdFx0aWYgKFxuXHRcdFx0Ly8gVGhlIHNldCBpcyBhIHByb3BlciBzdWJzZXQgd2hlbiBpdHMgbGVuZ3RoIGlzIGxlc3MgdGhhbiB0aGUgb3RoZXIgc2V0LlxuXHRcdFx0Y292ZXJlZFNlc3Npb25ba09yaWdpblNldF0ubGVuZ3RoIDwgc2Vzc2lvbltrT3JpZ2luU2V0XS5sZW5ndGggJiZcblxuXHRcdFx0Ly8gQW5kIHRoZSBvdGhlciBzZXQgaW5jbHVkZXMgYWxsIGVsZW1lbnRzIG9mIHRoZSBzdWJzZXQuXG5cdFx0XHRjb3ZlcmVkU2Vzc2lvbltrT3JpZ2luU2V0XS5ldmVyeShvcmlnaW4gPT4gc2Vzc2lvbltrT3JpZ2luU2V0XS5pbmNsdWRlcyhvcmlnaW4pKSAmJlxuXG5cdFx0XHQvLyBNYWtlcyBzdXJlIHRoYXQgdGhlIHNlc3Npb24gY2FuIGhhbmRsZSBhbGwgcmVxdWVzdHMgZnJvbSB0aGUgY292ZXJlZCBzZXNzaW9uLlxuXHRcdFx0Y292ZXJlZFNlc3Npb25ba0N1cnJlbnRTdHJlYW1zQ291bnRdICsgc2Vzc2lvbltrQ3VycmVudFN0cmVhbXNDb3VudF0gPD0gc2Vzc2lvbi5yZW1vdGVTZXR0aW5ncy5tYXhDb25jdXJyZW50U3RyZWFtc1xuXHRcdCkge1xuXHRcdFx0Ly8gVGhpcyBhbGxvd3MgcGVuZGluZyByZXF1ZXN0cyB0byBmaW5pc2ggYW5kIHByZXZlbnRzIG1ha2luZyBuZXcgcmVxdWVzdHMuXG5cdFx0XHRncmFjZWZ1bGx5Q2xvc2UoY292ZXJlZFNlc3Npb24pO1xuXHRcdH1cblx0fVxufTtcblxuLy8gVGhpcyBpcyBiYXNpY2FsbHkgaW52ZXJ0ZWQgYGNsb3NlQ292ZXJlZFNlc3Npb25zKC4uLilgLlxuY29uc3QgY2xvc2VTZXNzaW9uSWZDb3ZlcmVkID0gKHdoZXJlLCBjb3ZlcmVkU2Vzc2lvbikgPT4ge1xuXHRmb3IgKGNvbnN0IHNlc3Npb24gb2Ygd2hlcmUpIHtcblx0XHRpZiAoXG5cdFx0XHRjb3ZlcmVkU2Vzc2lvbltrT3JpZ2luU2V0XS5sZW5ndGggPCBzZXNzaW9uW2tPcmlnaW5TZXRdLmxlbmd0aCAmJlxuXHRcdFx0Y292ZXJlZFNlc3Npb25ba09yaWdpblNldF0uZXZlcnkob3JpZ2luID0+IHNlc3Npb25ba09yaWdpblNldF0uaW5jbHVkZXMob3JpZ2luKSkgJiZcblx0XHRcdGNvdmVyZWRTZXNzaW9uW2tDdXJyZW50U3RyZWFtc0NvdW50XSArIHNlc3Npb25ba0N1cnJlbnRTdHJlYW1zQ291bnRdIDw9IHNlc3Npb24ucmVtb3RlU2V0dGluZ3MubWF4Q29uY3VycmVudFN0cmVhbXNcblx0XHQpIHtcblx0XHRcdGdyYWNlZnVsbHlDbG9zZShjb3ZlcmVkU2Vzc2lvbik7XG5cdFx0fVxuXHR9XG59O1xuXG5jb25zdCBnZXRTZXNzaW9ucyA9ICh7YWdlbnQsIGlzRnJlZX0pID0+IHtcblx0Y29uc3QgcmVzdWx0ID0ge307XG5cblx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGd1YXJkLWZvci1pblxuXHRmb3IgKGNvbnN0IG5vcm1hbGl6ZWRPcHRpb25zIGluIGFnZW50LnNlc3Npb25zKSB7XG5cdFx0Y29uc3Qgc2Vzc2lvbnMgPSBhZ2VudC5zZXNzaW9uc1tub3JtYWxpemVkT3B0aW9uc107XG5cblx0XHRjb25zdCBmaWx0ZXJlZCA9IHNlc3Npb25zLmZpbHRlcihzZXNzaW9uID0+IHtcblx0XHRcdGNvbnN0IHJlc3VsdCA9IHNlc3Npb25bQWdlbnQua0N1cnJlbnRTdHJlYW1zQ291bnRdIDwgc2Vzc2lvbi5yZW1vdGVTZXR0aW5ncy5tYXhDb25jdXJyZW50U3RyZWFtcztcblxuXHRcdFx0cmV0dXJuIGlzRnJlZSA/IHJlc3VsdCA6ICFyZXN1bHQ7XG5cdFx0fSk7XG5cblx0XHRpZiAoZmlsdGVyZWQubGVuZ3RoICE9PSAwKSB7XG5cdFx0XHRyZXN1bHRbbm9ybWFsaXplZE9wdGlvbnNdID0gZmlsdGVyZWQ7XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIHJlc3VsdDtcbn07XG5cbmNvbnN0IGdyYWNlZnVsbHlDbG9zZSA9IHNlc3Npb24gPT4ge1xuXHRzZXNzaW9uW2tHcmFjZWZ1bGx5Q2xvc2luZ10gPSB0cnVlO1xuXG5cdGlmIChzZXNzaW9uW2tDdXJyZW50U3RyZWFtc0NvdW50XSA9PT0gMCkge1xuXHRcdHNlc3Npb24uY2xvc2UoKTtcblx0fVxufTtcblxuY2xhc3MgQWdlbnQgZXh0ZW5kcyBFdmVudEVtaXR0ZXIge1xuXHRjb25zdHJ1Y3Rvcih7dGltZW91dCA9IDYwMDAwLCBtYXhTZXNzaW9ucyA9IEluZmluaXR5LCBtYXhGcmVlU2Vzc2lvbnMgPSAxMCwgbWF4Q2FjaGVkVGxzU2Vzc2lvbnMgPSAxMDB9ID0ge30pIHtcblx0XHRzdXBlcigpO1xuXG5cdFx0Ly8gQSBzZXNzaW9uIGlzIGNvbnNpZGVyZWQgYnVzeSB3aGVuIGl0cyBjdXJyZW50IHN0cmVhbXMgY291bnRcblx0XHQvLyBpcyBlcXVhbCB0byBvciBncmVhdGVyIHRoYW4gdGhlIGBtYXhDb25jdXJyZW50U3RyZWFtc2AgdmFsdWUuXG5cblx0XHQvLyBBIHNlc3Npb24gaXMgY29uc2lkZXJlZCBmcmVlIHdoZW4gaXRzIGN1cnJlbnQgc3RyZWFtcyBjb3VudFxuXHRcdC8vIGlzIGxlc3MgdGhhbiB0aGUgYG1heENvbmN1cnJlbnRTdHJlYW1zYCB2YWx1ZS5cblxuXHRcdC8vIFNFU1NJT05TW05PUk1BTElaRURfT1BUSU9OU10gPSBbXTtcblx0XHR0aGlzLnNlc3Npb25zID0ge307XG5cblx0XHQvLyBUaGUgcXVldWUgZm9yIGNyZWF0aW5nIG5ldyBzZXNzaW9ucy4gSXQgbG9va3MgbGlrZSB0aGlzOlxuXHRcdC8vIFFVRVVFW05PUk1BTElaRURfT1BUSU9OU11bTk9STUFMSVpFRF9PUklHSU5dID0gRU5UUllfRlVOQ1RJT05cblx0XHQvL1xuXHRcdC8vIFRoZSBlbnRyeSBmdW5jdGlvbiBoYXMgYGxpc3RlbmVyc2AsIGBjb21wbGV0ZWRgIGFuZCBgZGVzdHJveWVkYCBwcm9wZXJ0aWVzLlxuXHRcdC8vIGBsaXN0ZW5lcnNgIGlzIGFuIGFycmF5IG9mIG9iamVjdHMgY29udGFpbmluZyBgcmVzb2x2ZWAgYW5kIGByZWplY3RgIGZ1bmN0aW9ucy5cblx0XHQvLyBgY29tcGxldGVkYCBpcyBhIGJvb2xlYW4uIEl0J3Mgc2V0IHRvIHRydWUgYWZ0ZXIgRU5UUllfRlVOQ1RJT04gaXMgZXhlY3V0ZWQuXG5cdFx0Ly8gYGRlc3Ryb3llZGAgaXMgYSBib29sZWFuLiBJZiBpdCdzIHNldCB0byB0cnVlLCB0aGUgc2Vzc2lvbiB3aWxsIGJlIGRlc3Ryb3llZCBpZiBoYXNuJ3QgY29ubmVjdGVkIHlldC5cblx0XHR0aGlzLnF1ZXVlID0ge307XG5cblx0XHQvLyBFYWNoIHNlc3Npb24gd2lsbCB1c2UgdGhpcyB0aW1lb3V0IHZhbHVlLlxuXHRcdHRoaXMudGltZW91dCA9IHRpbWVvdXQ7XG5cblx0XHQvLyBNYXggc2Vzc2lvbnMgaW4gdG90YWxcblx0XHR0aGlzLm1heFNlc3Npb25zID0gbWF4U2Vzc2lvbnM7XG5cblx0XHQvLyBNYXggZnJlZSBzZXNzaW9ucyBpbiB0b3RhbFxuXHRcdC8vIFRPRE86IGRlY3JlYXNpbmcgYG1heEZyZWVTZXNzaW9uc2Agc2hvdWxkIGNsb3NlIHNvbWUgc2Vzc2lvbnNcblx0XHR0aGlzLm1heEZyZWVTZXNzaW9ucyA9IG1heEZyZWVTZXNzaW9ucztcblxuXHRcdHRoaXMuX2ZyZWVTZXNzaW9uc0NvdW50ID0gMDtcblx0XHR0aGlzLl9zZXNzaW9uc0NvdW50ID0gMDtcblxuXHRcdC8vIFdlIGRvbid0IHN1cHBvcnQgcHVzaCBzdHJlYW1zIGJ5IGRlZmF1bHQuXG5cdFx0dGhpcy5zZXR0aW5ncyA9IHtcblx0XHRcdGVuYWJsZVB1c2g6IGZhbHNlXG5cdFx0fTtcblxuXHRcdC8vIFJldXNpbmcgVExTIHNlc3Npb25zIGluY3JlYXNlcyBwZXJmb3JtYW5jZS5cblx0XHR0aGlzLnRsc1Nlc3Npb25DYWNoZSA9IG5ldyBRdWlja0xSVSh7bWF4U2l6ZTogbWF4Q2FjaGVkVGxzU2Vzc2lvbnN9KTtcblx0fVxuXG5cdHN0YXRpYyBub3JtYWxpemVPcmlnaW4odXJsLCBzZXJ2ZXJuYW1lKSB7XG5cdFx0aWYgKHR5cGVvZiB1cmwgPT09ICdzdHJpbmcnKSB7XG5cdFx0XHR1cmwgPSBuZXcgVVJMKHVybCk7XG5cdFx0fVxuXG5cdFx0aWYgKHNlcnZlcm5hbWUgJiYgdXJsLmhvc3RuYW1lICE9PSBzZXJ2ZXJuYW1lKSB7XG5cdFx0XHR1cmwuaG9zdG5hbWUgPSBzZXJ2ZXJuYW1lO1xuXHRcdH1cblxuXHRcdHJldHVybiB1cmwub3JpZ2luO1xuXHR9XG5cblx0bm9ybWFsaXplT3B0aW9ucyhvcHRpb25zKSB7XG5cdFx0bGV0IG5vcm1hbGl6ZWQgPSAnJztcblxuXHRcdGlmIChvcHRpb25zKSB7XG5cdFx0XHRmb3IgKGNvbnN0IGtleSBvZiBuYW1lS2V5cykge1xuXHRcdFx0XHRpZiAob3B0aW9uc1trZXldKSB7XG5cdFx0XHRcdFx0bm9ybWFsaXplZCArPSBgOiR7b3B0aW9uc1trZXldfWA7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gbm9ybWFsaXplZDtcblx0fVxuXG5cdF90cnlUb0NyZWF0ZU5ld1Nlc3Npb24obm9ybWFsaXplZE9wdGlvbnMsIG5vcm1hbGl6ZWRPcmlnaW4pIHtcblx0XHRpZiAoIShub3JtYWxpemVkT3B0aW9ucyBpbiB0aGlzLnF1ZXVlKSB8fCAhKG5vcm1hbGl6ZWRPcmlnaW4gaW4gdGhpcy5xdWV1ZVtub3JtYWxpemVkT3B0aW9uc10pKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Y29uc3QgaXRlbSA9IHRoaXMucXVldWVbbm9ybWFsaXplZE9wdGlvbnNdW25vcm1hbGl6ZWRPcmlnaW5dO1xuXG5cdFx0Ly8gVGhlIGVudHJ5IGZ1bmN0aW9uIGNhbiBiZSBydW4gb25seSBvbmNlLlxuXHRcdC8vIEJVRzogVGhlIHNlc3Npb24gbWF5IGJlIG5ldmVyIGNyZWF0ZWQgd2hlbjpcblx0XHQvLyAtIHRoZSBmaXJzdCBjb25kaXRpb24gaXMgZmFsc2UgQU5EXG5cdFx0Ly8gLSB0aGlzIGZ1bmN0aW9uIGlzIG5ldmVyIGNhbGxlZCB3aXRoIHRoZSBzYW1lIGFyZ3VtZW50cyBpbiB0aGUgZnV0dXJlLlxuXHRcdGlmICh0aGlzLl9zZXNzaW9uc0NvdW50IDwgdGhpcy5tYXhTZXNzaW9ucyAmJiAhaXRlbS5jb21wbGV0ZWQpIHtcblx0XHRcdGl0ZW0uY29tcGxldGVkID0gdHJ1ZTtcblxuXHRcdFx0aXRlbSgpO1xuXHRcdH1cblx0fVxuXG5cdGdldFNlc3Npb24ob3JpZ2luLCBvcHRpb25zLCBsaXN0ZW5lcnMpIHtcblx0XHRyZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuXHRcdFx0aWYgKEFycmF5LmlzQXJyYXkobGlzdGVuZXJzKSkge1xuXHRcdFx0XHRsaXN0ZW5lcnMgPSBbLi4ubGlzdGVuZXJzXTtcblxuXHRcdFx0XHQvLyBSZXNvbHZlIHRoZSBjdXJyZW50IHByb21pc2UgQVNBUCwgd2UncmUganVzdCBtb3ZpbmcgdGhlIGxpc3RlbmVycy5cblx0XHRcdFx0Ly8gVGhleSB3aWxsIGJlIGV4ZWN1dGVkIGF0IGEgZGlmZmVyZW50IHRpbWUuXG5cdFx0XHRcdHJlc29sdmUoKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGxpc3RlbmVycyA9IFt7cmVzb2x2ZSwgcmVqZWN0fV07XG5cdFx0XHR9XG5cblx0XHRcdGNvbnN0IG5vcm1hbGl6ZWRPcHRpb25zID0gdGhpcy5ub3JtYWxpemVPcHRpb25zKG9wdGlvbnMpO1xuXHRcdFx0Y29uc3Qgbm9ybWFsaXplZE9yaWdpbiA9IEFnZW50Lm5vcm1hbGl6ZU9yaWdpbihvcmlnaW4sIG9wdGlvbnMgJiYgb3B0aW9ucy5zZXJ2ZXJuYW1lKTtcblxuXHRcdFx0aWYgKG5vcm1hbGl6ZWRPcmlnaW4gPT09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHRmb3IgKGNvbnN0IHtyZWplY3R9IG9mIGxpc3RlbmVycykge1xuXHRcdFx0XHRcdHJlamVjdChuZXcgVHlwZUVycm9yKCdUaGUgYG9yaWdpbmAgYXJndW1lbnQgbmVlZHMgdG8gYmUgYSBzdHJpbmcgb3IgYW4gVVJMIG9iamVjdCcpKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblxuXHRcdFx0aWYgKG5vcm1hbGl6ZWRPcHRpb25zIGluIHRoaXMuc2Vzc2lvbnMpIHtcblx0XHRcdFx0Y29uc3Qgc2Vzc2lvbnMgPSB0aGlzLnNlc3Npb25zW25vcm1hbGl6ZWRPcHRpb25zXTtcblxuXHRcdFx0XHRsZXQgbWF4Q29uY3VycmVudFN0cmVhbXMgPSAtMTtcblx0XHRcdFx0bGV0IGN1cnJlbnRTdHJlYW1zQ291bnQgPSAtMTtcblx0XHRcdFx0bGV0IG9wdGltYWxTZXNzaW9uO1xuXG5cdFx0XHRcdC8vIFdlIGNvdWxkIGp1c3QgZG8gdGhpcy5zZXNzaW9uc1tub3JtYWxpemVkT3B0aW9uc10uZmluZCguLi4pIGJ1dCB0aGF0IGlzbid0IG9wdGltYWwuXG5cdFx0XHRcdC8vIEFkZGl0aW9uYWxseSwgd2UgYXJlIGxvb2tpbmcgZm9yIHNlc3Npb24gd2hpY2ggaGFzIGJpZ2dlc3QgY3VycmVudCBwZW5kaW5nIHN0cmVhbXMgY291bnQuXG5cdFx0XHRcdGZvciAoY29uc3Qgc2Vzc2lvbiBvZiBzZXNzaW9ucykge1xuXHRcdFx0XHRcdGNvbnN0IHNlc3Npb25NYXhDb25jdXJyZW50U3RyZWFtcyA9IHNlc3Npb24ucmVtb3RlU2V0dGluZ3MubWF4Q29uY3VycmVudFN0cmVhbXM7XG5cblx0XHRcdFx0XHRpZiAoc2Vzc2lvbk1heENvbmN1cnJlbnRTdHJlYW1zIDwgbWF4Q29uY3VycmVudFN0cmVhbXMpIHtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGlmIChzZXNzaW9uW2tPcmlnaW5TZXRdLmluY2x1ZGVzKG5vcm1hbGl6ZWRPcmlnaW4pKSB7XG5cdFx0XHRcdFx0XHRjb25zdCBzZXNzaW9uQ3VycmVudFN0cmVhbXNDb3VudCA9IHNlc3Npb25ba0N1cnJlbnRTdHJlYW1zQ291bnRdO1xuXG5cdFx0XHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0XHRcdHNlc3Npb25DdXJyZW50U3RyZWFtc0NvdW50ID49IHNlc3Npb25NYXhDb25jdXJyZW50U3RyZWFtcyB8fFxuXHRcdFx0XHRcdFx0XHRzZXNzaW9uW2tHcmFjZWZ1bGx5Q2xvc2luZ10gfHxcblx0XHRcdFx0XHRcdFx0Ly8gVW5mb3J0dW5hdGVseSB0aGUgYGNsb3NlYCBldmVudCBpc24ndCBjYWxsZWQgaW1tZWRpYXRlbHksXG5cdFx0XHRcdFx0XHRcdC8vIHNvIGBzZXNzaW9uLmRlc3Ryb3llZGAgaXMgYHRydWVgLCBidXQgYHNlc3Npb24uY2xvc2VkYCBpcyBgZmFsc2VgLlxuXHRcdFx0XHRcdFx0XHRzZXNzaW9uLmRlc3Ryb3llZFxuXHRcdFx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHQvLyBXZSBvbmx5IG5lZWQgc2V0IHRoaXMgb25jZS5cblx0XHRcdFx0XHRcdGlmICghb3B0aW1hbFNlc3Npb24pIHtcblx0XHRcdFx0XHRcdFx0bWF4Q29uY3VycmVudFN0cmVhbXMgPSBzZXNzaW9uTWF4Q29uY3VycmVudFN0cmVhbXM7XG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdC8vIFdlJ3JlIGxvb2tpbmcgZm9yIHRoZSBzZXNzaW9uIHdoaWNoIGhhcyBiaWdnZXN0IGN1cnJlbnQgcGVuZGluZyBzdHJlYW0gY291bnQsXG5cdFx0XHRcdFx0XHQvLyBpbiBvcmRlciB0byBtaW5pbWFsaXplIHRoZSBhbW91bnQgb2YgYWN0aXZlIHNlc3Npb25zLlxuXHRcdFx0XHRcdFx0aWYgKHNlc3Npb25DdXJyZW50U3RyZWFtc0NvdW50ID4gY3VycmVudFN0cmVhbXNDb3VudCkge1xuXHRcdFx0XHRcdFx0XHRvcHRpbWFsU2Vzc2lvbiA9IHNlc3Npb247XG5cdFx0XHRcdFx0XHRcdGN1cnJlbnRTdHJlYW1zQ291bnQgPSBzZXNzaW9uQ3VycmVudFN0cmVhbXNDb3VudDtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAob3B0aW1hbFNlc3Npb24pIHtcblx0XHRcdFx0XHQvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dDogc2FmZXR5IGNoZWNrICovXG5cdFx0XHRcdFx0aWYgKGxpc3RlbmVycy5sZW5ndGggIT09IDEpIHtcblx0XHRcdFx0XHRcdGZvciAoY29uc3Qge3JlamVjdH0gb2YgbGlzdGVuZXJzKSB7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IGVycm9yID0gbmV3IEVycm9yKFxuXHRcdFx0XHRcdFx0XHRcdGBFeHBlY3RlZCB0aGUgbGVuZ3RoIG9mIGxpc3RlbmVycyB0byBiZSAxLCBnb3QgJHtsaXN0ZW5lcnMubGVuZ3RofS5cXG5gICtcblx0XHRcdFx0XHRcdFx0XHQnUGxlYXNlIHJlcG9ydCB0aGlzIHRvIGh0dHBzOi8vZ2l0aHViLmNvbS9zem1hcmN6YWsvaHR0cDItd3JhcHBlci8nXG5cdFx0XHRcdFx0XHRcdCk7XG5cblx0XHRcdFx0XHRcdFx0cmVqZWN0KGVycm9yKTtcblx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGxpc3RlbmVyc1swXS5yZXNvbHZlKG9wdGltYWxTZXNzaW9uKTtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0aWYgKG5vcm1hbGl6ZWRPcHRpb25zIGluIHRoaXMucXVldWUpIHtcblx0XHRcdFx0aWYgKG5vcm1hbGl6ZWRPcmlnaW4gaW4gdGhpcy5xdWV1ZVtub3JtYWxpemVkT3B0aW9uc10pIHtcblx0XHRcdFx0XHQvLyBUaGVyZSdzIGFscmVhZHkgYW4gaXRlbSBpbiB0aGUgcXVldWUsIGp1c3QgYXR0YWNoIG91cnNlbHZlcyB0byBpdC5cblx0XHRcdFx0XHR0aGlzLnF1ZXVlW25vcm1hbGl6ZWRPcHRpb25zXVtub3JtYWxpemVkT3JpZ2luXS5saXN0ZW5lcnMucHVzaCguLi5saXN0ZW5lcnMpO1xuXG5cdFx0XHRcdFx0Ly8gVGhpcyBzaG91bGRuJ3QgYmUgZXhlY3V0ZWQgaGVyZS5cblx0XHRcdFx0XHQvLyBTZWUgdGhlIGNvbW1lbnQgaW5zaWRlIF90cnlUb0NyZWF0ZU5ld1Nlc3Npb24uXG5cdFx0XHRcdFx0dGhpcy5fdHJ5VG9DcmVhdGVOZXdTZXNzaW9uKG5vcm1hbGl6ZWRPcHRpb25zLCBub3JtYWxpemVkT3JpZ2luKTtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHRoaXMucXVldWVbbm9ybWFsaXplZE9wdGlvbnNdID0ge307XG5cdFx0XHR9XG5cblx0XHRcdC8vIFRoZSBlbnRyeSBtdXN0IGJlIHJlbW92ZWQgZnJvbSB0aGUgcXVldWUgSU1NRURJQVRFTFkgd2hlbjpcblx0XHRcdC8vIDEuIHRoZSBzZXNzaW9uIGNvbm5lY3RzIHN1Y2Nlc3NmdWxseSxcblx0XHRcdC8vIDIuIGFuIGVycm9yIG9jY3Vycy5cblx0XHRcdGNvbnN0IHJlbW92ZUZyb21RdWV1ZSA9ICgpID0+IHtcblx0XHRcdFx0Ly8gT3VyIGVudHJ5IGNhbiBiZSByZXBsYWNlZC4gV2UgY2Fubm90IHJlbW92ZSB0aGUgbmV3IG9uZS5cblx0XHRcdFx0aWYgKG5vcm1hbGl6ZWRPcHRpb25zIGluIHRoaXMucXVldWUgJiYgdGhpcy5xdWV1ZVtub3JtYWxpemVkT3B0aW9uc11bbm9ybWFsaXplZE9yaWdpbl0gPT09IGVudHJ5KSB7XG5cdFx0XHRcdFx0ZGVsZXRlIHRoaXMucXVldWVbbm9ybWFsaXplZE9wdGlvbnNdW25vcm1hbGl6ZWRPcmlnaW5dO1xuXG5cdFx0XHRcdFx0aWYgKE9iamVjdC5rZXlzKHRoaXMucXVldWVbbm9ybWFsaXplZE9wdGlvbnNdKS5sZW5ndGggPT09IDApIHtcblx0XHRcdFx0XHRcdGRlbGV0ZSB0aGlzLnF1ZXVlW25vcm1hbGl6ZWRPcHRpb25zXTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH07XG5cblx0XHRcdC8vIFRoZSBtYWluIGxvZ2ljIGlzIGhlcmVcblx0XHRcdGNvbnN0IGVudHJ5ID0gKCkgPT4ge1xuXHRcdFx0XHRjb25zdCBuYW1lID0gYCR7bm9ybWFsaXplZE9yaWdpbn06JHtub3JtYWxpemVkT3B0aW9uc31gO1xuXHRcdFx0XHRsZXQgcmVjZWl2ZWRTZXR0aW5ncyA9IGZhbHNlO1xuXG5cdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0Y29uc3Qgc2Vzc2lvbiA9IGh0dHAyLmNvbm5lY3Qob3JpZ2luLCB7XG5cdFx0XHRcdFx0XHRjcmVhdGVDb25uZWN0aW9uOiB0aGlzLmNyZWF0ZUNvbm5lY3Rpb24sXG5cdFx0XHRcdFx0XHRzZXR0aW5nczogdGhpcy5zZXR0aW5ncyxcblx0XHRcdFx0XHRcdHNlc3Npb246IHRoaXMudGxzU2Vzc2lvbkNhY2hlLmdldChuYW1lKSxcblx0XHRcdFx0XHRcdC4uLm9wdGlvbnNcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRzZXNzaW9uW2tDdXJyZW50U3RyZWFtc0NvdW50XSA9IDA7XG5cdFx0XHRcdFx0c2Vzc2lvbltrR3JhY2VmdWxseUNsb3NpbmddID0gZmFsc2U7XG5cblx0XHRcdFx0XHRjb25zdCBpc0ZyZWUgPSAoKSA9PiBzZXNzaW9uW2tDdXJyZW50U3RyZWFtc0NvdW50XSA8IHNlc3Npb24ucmVtb3RlU2V0dGluZ3MubWF4Q29uY3VycmVudFN0cmVhbXM7XG5cdFx0XHRcdFx0bGV0IHdhc0ZyZWUgPSB0cnVlO1xuXG5cdFx0XHRcdFx0c2Vzc2lvbi5zb2NrZXQub25jZSgnc2Vzc2lvbicsIHRsc1Nlc3Npb24gPT4ge1xuXHRcdFx0XHRcdFx0dGhpcy50bHNTZXNzaW9uQ2FjaGUuc2V0KG5hbWUsIHRsc1Nlc3Npb24pO1xuXHRcdFx0XHRcdH0pO1xuXG5cdFx0XHRcdFx0c2Vzc2lvbi5vbmNlKCdlcnJvcicsIGVycm9yID0+IHtcblx0XHRcdFx0XHRcdC8vIExpc3RlbmVycyBhcmUgZW1wdHkgd2hlbiB0aGUgc2Vzc2lvbiBzdWNjZXNzZnVsbHkgY29ubmVjdGVkLlxuXHRcdFx0XHRcdFx0Zm9yIChjb25zdCB7cmVqZWN0fSBvZiBsaXN0ZW5lcnMpIHtcblx0XHRcdFx0XHRcdFx0cmVqZWN0KGVycm9yKTtcblx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0Ly8gVGhlIGNvbm5lY3Rpb24gZ290IGJyb2tlbiwgcHVyZ2UgdGhlIGNhY2hlLlxuXHRcdFx0XHRcdFx0dGhpcy50bHNTZXNzaW9uQ2FjaGUuZGVsZXRlKG5hbWUpO1xuXHRcdFx0XHRcdH0pO1xuXG5cdFx0XHRcdFx0c2Vzc2lvbi5zZXRUaW1lb3V0KHRoaXMudGltZW91dCwgKCkgPT4ge1xuXHRcdFx0XHRcdFx0Ly8gVGVybWluYXRlcyBhbGwgc3RyZWFtcyBvd25lZCBieSB0aGlzIHNlc3Npb24uXG5cdFx0XHRcdFx0XHQvLyBUT0RPOiBNYXliZSB0aGUgc3RyZWFtcyBzaG91bGQgaGF2ZSBhIFwiU2Vzc2lvbiB0aW1lZCBvdXRcIiBlcnJvcj9cblx0XHRcdFx0XHRcdHNlc3Npb24uZGVzdHJveSgpO1xuXHRcdFx0XHRcdH0pO1xuXG5cdFx0XHRcdFx0c2Vzc2lvbi5vbmNlKCdjbG9zZScsICgpID0+IHtcblx0XHRcdFx0XHRcdGlmIChyZWNlaXZlZFNldHRpbmdzKSB7XG5cdFx0XHRcdFx0XHRcdC8vIDEuIElmIGl0IHdhc24ndCBmcmVlIHRoZW4gbm8gbmVlZCB0byBkZWNyZWFzZSBiZWNhdXNlXG5cdFx0XHRcdFx0XHRcdC8vICAgIGl0IGhhcyBiZWVuIGRlY3JlYXNlZCBhbHJlYWR5IGluIHNlc3Npb24ucmVxdWVzdCgpLlxuXHRcdFx0XHRcdFx0XHQvLyAyLiBgc3RyZWFtLm9uY2UoJ2Nsb3NlJylgIHdvbid0IGluY3JlbWVudCB0aGUgY291bnRcblx0XHRcdFx0XHRcdFx0Ly8gICAgYmVjYXVzZSB0aGUgc2Vzc2lvbiBpcyBhbHJlYWR5IGNsb3NlZC5cblx0XHRcdFx0XHRcdFx0aWYgKHdhc0ZyZWUpIHtcblx0XHRcdFx0XHRcdFx0XHR0aGlzLl9mcmVlU2Vzc2lvbnNDb3VudC0tO1xuXHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0dGhpcy5fc2Vzc2lvbnNDb3VudC0tO1xuXG5cdFx0XHRcdFx0XHRcdC8vIFRoaXMgY2Fubm90IGJlIG1vdmVkIHRvIHRoZSBzdHJlYW0gbG9naWMsXG5cdFx0XHRcdFx0XHRcdC8vIGJlY2F1c2UgdGhlcmUgbWF5IGJlIGEgc2Vzc2lvbiB0aGF0IGhhZG4ndCBtYWRlIGEgc2luZ2xlIHJlcXVlc3QuXG5cdFx0XHRcdFx0XHRcdGNvbnN0IHdoZXJlID0gdGhpcy5zZXNzaW9uc1tub3JtYWxpemVkT3B0aW9uc107XG5cdFx0XHRcdFx0XHRcdHdoZXJlLnNwbGljZSh3aGVyZS5pbmRleE9mKHNlc3Npb24pLCAxKTtcblxuXHRcdFx0XHRcdFx0XHRpZiAod2hlcmUubGVuZ3RoID09PSAwKSB7XG5cdFx0XHRcdFx0XHRcdFx0ZGVsZXRlIHRoaXMuc2Vzc2lvbnNbbm9ybWFsaXplZE9wdGlvbnNdO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHQvLyBCcm9rZW4gY29ubmVjdGlvblxuXHRcdFx0XHRcdFx0XHRjb25zdCBlcnJvciA9IG5ldyBFcnJvcignU2Vzc2lvbiBjbG9zZWQgd2l0aG91dCByZWNlaXZpbmcgYSBTRVRUSU5HUyBmcmFtZScpO1xuXHRcdFx0XHRcdFx0XHRlcnJvci5jb2RlID0gJ0hUVFAyV1JBUFBFUl9OT1NFVFRJTkdTJztcblxuXHRcdFx0XHRcdFx0XHRmb3IgKGNvbnN0IHtyZWplY3R9IG9mIGxpc3RlbmVycykge1xuXHRcdFx0XHRcdFx0XHRcdHJlamVjdChlcnJvcik7XG5cdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRyZW1vdmVGcm9tUXVldWUoKTtcblx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0Ly8gVGhlcmUgbWF5IGJlIGFub3RoZXIgc2Vzc2lvbiBhd2FpdGluZy5cblx0XHRcdFx0XHRcdHRoaXMuX3RyeVRvQ3JlYXRlTmV3U2Vzc2lvbihub3JtYWxpemVkT3B0aW9ucywgbm9ybWFsaXplZE9yaWdpbik7XG5cdFx0XHRcdFx0fSk7XG5cblx0XHRcdFx0XHQvLyBJdGVyYXRlcyBvdmVyIHRoZSBxdWV1ZSBhbmQgcHJvY2Vzc2VzIGxpc3RlbmVycy5cblx0XHRcdFx0XHRjb25zdCBwcm9jZXNzTGlzdGVuZXJzID0gKCkgPT4ge1xuXHRcdFx0XHRcdFx0aWYgKCEobm9ybWFsaXplZE9wdGlvbnMgaW4gdGhpcy5xdWV1ZSkgfHwgIWlzRnJlZSgpKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0Zm9yIChjb25zdCBvcmlnaW4gb2Ygc2Vzc2lvbltrT3JpZ2luU2V0XSkge1xuXHRcdFx0XHRcdFx0XHRpZiAob3JpZ2luIGluIHRoaXMucXVldWVbbm9ybWFsaXplZE9wdGlvbnNdKSB7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc3Qge2xpc3RlbmVyc30gPSB0aGlzLnF1ZXVlW25vcm1hbGl6ZWRPcHRpb25zXVtvcmlnaW5dO1xuXG5cdFx0XHRcdFx0XHRcdFx0Ly8gUHJldmVudHMgc2Vzc2lvbiBvdmVybG9hZGluZy5cblx0XHRcdFx0XHRcdFx0XHR3aGlsZSAobGlzdGVuZXJzLmxlbmd0aCAhPT0gMCAmJiBpc0ZyZWUoKSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0Ly8gV2UgYXNzdW1lIGByZXNvbHZlKC4uLilgIGNhbGxzIGByZXF1ZXN0KC4uLilgICpkaXJlY3RseSosXG5cdFx0XHRcdFx0XHRcdFx0XHQvLyBvdGhlcndpc2UgdGhlIHNlc3Npb24gd2lsbCBnZXQgb3ZlcmxvYWRlZC5cblx0XHRcdFx0XHRcdFx0XHRcdGxpc3RlbmVycy5zaGlmdCgpLnJlc29sdmUoc2Vzc2lvbik7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdFx0Y29uc3Qgd2hlcmUgPSB0aGlzLnF1ZXVlW25vcm1hbGl6ZWRPcHRpb25zXTtcblx0XHRcdFx0XHRcdFx0XHRpZiAod2hlcmVbb3JpZ2luXS5saXN0ZW5lcnMubGVuZ3RoID09PSAwKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRkZWxldGUgd2hlcmVbb3JpZ2luXTtcblxuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKE9iamVjdC5rZXlzKHdoZXJlKS5sZW5ndGggPT09IDApIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0ZGVsZXRlIHRoaXMucXVldWVbbm9ybWFsaXplZE9wdGlvbnNdO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0XHQvLyBXZSdyZSBubyBsb25nZXIgZnJlZSwgbm8gcG9pbnQgaW4gY29udGludWluZy5cblx0XHRcdFx0XHRcdFx0XHRpZiAoIWlzRnJlZSgpKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9O1xuXG5cdFx0XHRcdFx0Ly8gVGhlIE9yaWdpbiBTZXQgY2Fubm90IHNocmluay4gTm8gbmVlZCB0byBjaGVjayBpZiBpdCBzdWRkZW5seSBiZWNhbWUgY292ZXJlZCBieSBhbm90aGVyIG9uZS5cblx0XHRcdFx0XHRzZXNzaW9uLm9uKCdvcmlnaW4nLCAoKSA9PiB7XG5cdFx0XHRcdFx0XHRzZXNzaW9uW2tPcmlnaW5TZXRdID0gc2Vzc2lvbi5vcmlnaW5TZXQ7XG5cblx0XHRcdFx0XHRcdGlmICghaXNGcmVlKCkpIHtcblx0XHRcdFx0XHRcdFx0Ly8gVGhlIHNlc3Npb24gaXMgZnVsbC5cblx0XHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRwcm9jZXNzTGlzdGVuZXJzKCk7XG5cblx0XHRcdFx0XHRcdC8vIENsb3NlIGNvdmVyZWQgc2Vzc2lvbnMgKGlmIHBvc3NpYmxlKS5cblx0XHRcdFx0XHRcdGNsb3NlQ292ZXJlZFNlc3Npb25zKHRoaXMuc2Vzc2lvbnNbbm9ybWFsaXplZE9wdGlvbnNdLCBzZXNzaW9uKTtcblx0XHRcdFx0XHR9KTtcblxuXHRcdFx0XHRcdHNlc3Npb24ub25jZSgncmVtb3RlU2V0dGluZ3MnLCAoKSA9PiB7XG5cdFx0XHRcdFx0XHQvLyBGaXggTm9kZS5qcyBidWcgcHJldmVudGluZyB0aGUgcHJvY2VzcyBmcm9tIGV4aXRpbmdcblx0XHRcdFx0XHRcdHNlc3Npb24ucmVmKCk7XG5cdFx0XHRcdFx0XHRzZXNzaW9uLnVucmVmKCk7XG5cblx0XHRcdFx0XHRcdHRoaXMuX3Nlc3Npb25zQ291bnQrKztcblxuXHRcdFx0XHRcdFx0Ly8gVGhlIEFnZW50IGNvdWxkIGhhdmUgYmVlbiBkZXN0cm95ZWQgYWxyZWFkeS5cblx0XHRcdFx0XHRcdGlmIChlbnRyeS5kZXN0cm95ZWQpIHtcblx0XHRcdFx0XHRcdFx0Y29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoJ0FnZW50IGhhcyBiZWVuIGRlc3Ryb3llZCcpO1xuXG5cdFx0XHRcdFx0XHRcdGZvciAoY29uc3QgbGlzdGVuZXIgb2YgbGlzdGVuZXJzKSB7XG5cdFx0XHRcdFx0XHRcdFx0bGlzdGVuZXIucmVqZWN0KGVycm9yKTtcblx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdHNlc3Npb24uZGVzdHJveSgpO1xuXHRcdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdHNlc3Npb25ba09yaWdpblNldF0gPSBzZXNzaW9uLm9yaWdpblNldDtcblxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRjb25zdCB3aGVyZSA9IHRoaXMuc2Vzc2lvbnM7XG5cblx0XHRcdFx0XHRcdFx0aWYgKG5vcm1hbGl6ZWRPcHRpb25zIGluIHdoZXJlKSB7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc3Qgc2Vzc2lvbnMgPSB3aGVyZVtub3JtYWxpemVkT3B0aW9uc107XG5cdFx0XHRcdFx0XHRcdFx0c2Vzc2lvbnMuc3BsaWNlKGdldFNvcnRlZEluZGV4KHNlc3Npb25zLCBzZXNzaW9uLCBjb21wYXJlU2Vzc2lvbnMpLCAwLCBzZXNzaW9uKTtcblx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHR3aGVyZVtub3JtYWxpemVkT3B0aW9uc10gPSBbc2Vzc2lvbl07XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0dGhpcy5fZnJlZVNlc3Npb25zQ291bnQgKz0gMTtcblx0XHRcdFx0XHRcdHJlY2VpdmVkU2V0dGluZ3MgPSB0cnVlO1xuXG5cdFx0XHRcdFx0XHR0aGlzLmVtaXQoJ3Nlc3Npb24nLCBzZXNzaW9uKTtcblxuXHRcdFx0XHRcdFx0cHJvY2Vzc0xpc3RlbmVycygpO1xuXHRcdFx0XHRcdFx0cmVtb3ZlRnJvbVF1ZXVlKCk7XG5cblx0XHRcdFx0XHRcdC8vIFRPRE86IENsb3NlIGxhc3QgcmVjZW50bHkgdXNlZCAob3IgbGVhc3QgdXNlZD8pIHNlc3Npb25cblx0XHRcdFx0XHRcdGlmIChzZXNzaW9uW2tDdXJyZW50U3RyZWFtc0NvdW50XSA9PT0gMCAmJiB0aGlzLl9mcmVlU2Vzc2lvbnNDb3VudCA+IHRoaXMubWF4RnJlZVNlc3Npb25zKSB7XG5cdFx0XHRcdFx0XHRcdHNlc3Npb24uY2xvc2UoKTtcblx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0Ly8gQ2hlY2sgaWYgd2UgaGF2ZW4ndCBtYW5hZ2VkIHRvIGV4ZWN1dGUgYWxsIGxpc3RlbmVycy5cblx0XHRcdFx0XHRcdGlmIChsaXN0ZW5lcnMubGVuZ3RoICE9PSAwKSB7XG5cdFx0XHRcdFx0XHRcdC8vIFJlcXVlc3QgZm9yIGEgbmV3IHNlc3Npb24gd2l0aCBwcmVkZWZpbmVkIGxpc3RlbmVycy5cblx0XHRcdFx0XHRcdFx0dGhpcy5nZXRTZXNzaW9uKG5vcm1hbGl6ZWRPcmlnaW4sIG9wdGlvbnMsIGxpc3RlbmVycyk7XG5cdFx0XHRcdFx0XHRcdGxpc3RlbmVycy5sZW5ndGggPSAwO1xuXHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHQvLyBgc2Vzc2lvbi5yZW1vdGVTZXR0aW5ncy5tYXhDb25jdXJyZW50U3RyZWFtc2AgbWlnaHQgZ2V0IGluY3JlYXNlZFxuXHRcdFx0XHRcdFx0c2Vzc2lvbi5vbigncmVtb3RlU2V0dGluZ3MnLCAoKSA9PiB7XG5cdFx0XHRcdFx0XHRcdHByb2Nlc3NMaXN0ZW5lcnMoKTtcblxuXHRcdFx0XHRcdFx0XHQvLyBJbiBjYXNlIHRoZSBPcmlnaW4gU2V0IGNoYW5nZXNcblx0XHRcdFx0XHRcdFx0Y2xvc2VDb3ZlcmVkU2Vzc2lvbnModGhpcy5zZXNzaW9uc1tub3JtYWxpemVkT3B0aW9uc10sIHNlc3Npb24pO1xuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0fSk7XG5cblx0XHRcdFx0XHQvLyBTaGltIGBzZXNzaW9uLnJlcXVlc3QoKWAgaW4gb3JkZXIgdG8gY2F0Y2ggYWxsIHN0cmVhbXNcblx0XHRcdFx0XHRzZXNzaW9uW2tSZXF1ZXN0XSA9IHNlc3Npb24ucmVxdWVzdDtcblx0XHRcdFx0XHRzZXNzaW9uLnJlcXVlc3QgPSAoaGVhZGVycywgc3RyZWFtT3B0aW9ucykgPT4ge1xuXHRcdFx0XHRcdFx0aWYgKHNlc3Npb25ba0dyYWNlZnVsbHlDbG9zaW5nXSkge1xuXHRcdFx0XHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoJ1RoZSBzZXNzaW9uIGlzIGdyYWNlZnVsbHkgY2xvc2luZy4gTm8gbmV3IHN0cmVhbXMgYXJlIGFsbG93ZWQuJyk7XG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdGNvbnN0IHN0cmVhbSA9IHNlc3Npb25ba1JlcXVlc3RdKGhlYWRlcnMsIHN0cmVhbU9wdGlvbnMpO1xuXG5cdFx0XHRcdFx0XHQvLyBUaGUgcHJvY2VzcyB3b24ndCBleGl0IHVudGlsIHRoZSBzZXNzaW9uIGlzIGNsb3NlZCBvciBhbGwgcmVxdWVzdHMgYXJlIGdvbmUuXG5cdFx0XHRcdFx0XHRzZXNzaW9uLnJlZigpO1xuXG5cdFx0XHRcdFx0XHQrK3Nlc3Npb25ba0N1cnJlbnRTdHJlYW1zQ291bnRdO1xuXG5cdFx0XHRcdFx0XHRpZiAoc2Vzc2lvbltrQ3VycmVudFN0cmVhbXNDb3VudF0gPT09IHNlc3Npb24ucmVtb3RlU2V0dGluZ3MubWF4Q29uY3VycmVudFN0cmVhbXMpIHtcblx0XHRcdFx0XHRcdFx0dGhpcy5fZnJlZVNlc3Npb25zQ291bnQtLTtcblx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0c3RyZWFtLm9uY2UoJ2Nsb3NlJywgKCkgPT4ge1xuXHRcdFx0XHRcdFx0XHR3YXNGcmVlID0gaXNGcmVlKCk7XG5cblx0XHRcdFx0XHRcdFx0LS1zZXNzaW9uW2tDdXJyZW50U3RyZWFtc0NvdW50XTtcblxuXHRcdFx0XHRcdFx0XHRpZiAoIXNlc3Npb24uZGVzdHJveWVkICYmICFzZXNzaW9uLmNsb3NlZCkge1xuXHRcdFx0XHRcdFx0XHRcdGNsb3NlU2Vzc2lvbklmQ292ZXJlZCh0aGlzLnNlc3Npb25zW25vcm1hbGl6ZWRPcHRpb25zXSwgc2Vzc2lvbik7XG5cblx0XHRcdFx0XHRcdFx0XHRpZiAoaXNGcmVlKCkgJiYgIXNlc3Npb24uY2xvc2VkKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoIXdhc0ZyZWUpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5fZnJlZVNlc3Npb25zQ291bnQrKztcblxuXHRcdFx0XHRcdFx0XHRcdFx0XHR3YXNGcmVlID0gdHJ1ZTtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRcdFx0Y29uc3QgaXNFbXB0eSA9IHNlc3Npb25ba0N1cnJlbnRTdHJlYW1zQ291bnRdID09PSAwO1xuXG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoaXNFbXB0eSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRzZXNzaW9uLnVucmVmKCk7XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0XHRcdGlmIChcblx0XHRcdFx0XHRcdFx0XHRcdFx0aXNFbXB0eSAmJlxuXHRcdFx0XHRcdFx0XHRcdFx0XHQoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5fZnJlZVNlc3Npb25zQ291bnQgPiB0aGlzLm1heEZyZWVTZXNzaW9ucyB8fFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHNlc3Npb25ba0dyYWNlZnVsbHlDbG9zaW5nXVxuXHRcdFx0XHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHRcdFx0XHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0c2Vzc2lvbi5jbG9zZSgpO1xuXHRcdFx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y2xvc2VDb3ZlcmVkU2Vzc2lvbnModGhpcy5zZXNzaW9uc1tub3JtYWxpemVkT3B0aW9uc10sIHNlc3Npb24pO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRwcm9jZXNzTGlzdGVuZXJzKCk7XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9KTtcblxuXHRcdFx0XHRcdFx0cmV0dXJuIHN0cmVhbTtcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHR9IGNhdGNoIChlcnJvcikge1xuXHRcdFx0XHRcdGZvciAoY29uc3QgbGlzdGVuZXIgb2YgbGlzdGVuZXJzKSB7XG5cdFx0XHRcdFx0XHRsaXN0ZW5lci5yZWplY3QoZXJyb3IpO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdHJlbW92ZUZyb21RdWV1ZSgpO1xuXHRcdFx0XHR9XG5cdFx0XHR9O1xuXG5cdFx0XHRlbnRyeS5saXN0ZW5lcnMgPSBsaXN0ZW5lcnM7XG5cdFx0XHRlbnRyeS5jb21wbGV0ZWQgPSBmYWxzZTtcblx0XHRcdGVudHJ5LmRlc3Ryb3llZCA9IGZhbHNlO1xuXG5cdFx0XHR0aGlzLnF1ZXVlW25vcm1hbGl6ZWRPcHRpb25zXVtub3JtYWxpemVkT3JpZ2luXSA9IGVudHJ5O1xuXHRcdFx0dGhpcy5fdHJ5VG9DcmVhdGVOZXdTZXNzaW9uKG5vcm1hbGl6ZWRPcHRpb25zLCBub3JtYWxpemVkT3JpZ2luKTtcblx0XHR9KTtcblx0fVxuXG5cdHJlcXVlc3Qob3JpZ2luLCBvcHRpb25zLCBoZWFkZXJzLCBzdHJlYW1PcHRpb25zKSB7XG5cdFx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcblx0XHRcdHRoaXMuZ2V0U2Vzc2lvbihvcmlnaW4sIG9wdGlvbnMsIFt7XG5cdFx0XHRcdHJlamVjdCxcblx0XHRcdFx0cmVzb2x2ZTogc2Vzc2lvbiA9PiB7XG5cdFx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRcdHJlc29sdmUoc2Vzc2lvbi5yZXF1ZXN0KGhlYWRlcnMsIHN0cmVhbU9wdGlvbnMpKTtcblx0XHRcdFx0XHR9IGNhdGNoIChlcnJvcikge1xuXHRcdFx0XHRcdFx0cmVqZWN0KGVycm9yKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1dKTtcblx0XHR9KTtcblx0fVxuXG5cdGNyZWF0ZUNvbm5lY3Rpb24ob3JpZ2luLCBvcHRpb25zKSB7XG5cdFx0cmV0dXJuIEFnZW50LmNvbm5lY3Qob3JpZ2luLCBvcHRpb25zKTtcblx0fVxuXG5cdHN0YXRpYyBjb25uZWN0KG9yaWdpbiwgb3B0aW9ucykge1xuXHRcdG9wdGlvbnMuQUxQTlByb3RvY29scyA9IFsnaDInXTtcblxuXHRcdGNvbnN0IHBvcnQgPSBvcmlnaW4ucG9ydCB8fCA0NDM7XG5cdFx0Y29uc3QgaG9zdCA9IG9yaWdpbi5ob3N0bmFtZSB8fCBvcmlnaW4uaG9zdDtcblxuXHRcdGlmICh0eXBlb2Ygb3B0aW9ucy5zZXJ2ZXJuYW1lID09PSAndW5kZWZpbmVkJykge1xuXHRcdFx0b3B0aW9ucy5zZXJ2ZXJuYW1lID0gaG9zdDtcblx0XHR9XG5cblx0XHRyZXR1cm4gdGxzLmNvbm5lY3QocG9ydCwgaG9zdCwgb3B0aW9ucyk7XG5cdH1cblxuXHRjbG9zZUZyZWVTZXNzaW9ucygpIHtcblx0XHRmb3IgKGNvbnN0IHNlc3Npb25zIG9mIE9iamVjdC52YWx1ZXModGhpcy5zZXNzaW9ucykpIHtcblx0XHRcdGZvciAoY29uc3Qgc2Vzc2lvbiBvZiBzZXNzaW9ucykge1xuXHRcdFx0XHRpZiAoc2Vzc2lvbltrQ3VycmVudFN0cmVhbXNDb3VudF0gPT09IDApIHtcblx0XHRcdFx0XHRzZXNzaW9uLmNsb3NlKCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRkZXN0cm95KHJlYXNvbikge1xuXHRcdGZvciAoY29uc3Qgc2Vzc2lvbnMgb2YgT2JqZWN0LnZhbHVlcyh0aGlzLnNlc3Npb25zKSkge1xuXHRcdFx0Zm9yIChjb25zdCBzZXNzaW9uIG9mIHNlc3Npb25zKSB7XG5cdFx0XHRcdHNlc3Npb24uZGVzdHJveShyZWFzb24pO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGZvciAoY29uc3QgZW50cmllc09mQXV0aG9yaXR5IG9mIE9iamVjdC52YWx1ZXModGhpcy5xdWV1ZSkpIHtcblx0XHRcdGZvciAoY29uc3QgZW50cnkgb2YgT2JqZWN0LnZhbHVlcyhlbnRyaWVzT2ZBdXRob3JpdHkpKSB7XG5cdFx0XHRcdGVudHJ5LmRlc3Ryb3llZCA9IHRydWU7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gTmV3IHJlcXVlc3RzIHNob3VsZCBOT1QgYXR0YWNoIHRvIGRlc3Ryb3llZCBzZXNzaW9uc1xuXHRcdHRoaXMucXVldWUgPSB7fTtcblx0fVxuXG5cdGdldCBmcmVlU2Vzc2lvbnMoKSB7XG5cdFx0cmV0dXJuIGdldFNlc3Npb25zKHthZ2VudDogdGhpcywgaXNGcmVlOiB0cnVlfSk7XG5cdH1cblxuXHRnZXQgYnVzeVNlc3Npb25zKCkge1xuXHRcdHJldHVybiBnZXRTZXNzaW9ucyh7YWdlbnQ6IHRoaXMsIGlzRnJlZTogZmFsc2V9KTtcblx0fVxufVxuXG5BZ2VudC5rQ3VycmVudFN0cmVhbXNDb3VudCA9IGtDdXJyZW50U3RyZWFtc0NvdW50O1xuQWdlbnQua0dyYWNlZnVsbHlDbG9zaW5nID0ga0dyYWNlZnVsbHlDbG9zaW5nO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcblx0QWdlbnQsXG5cdGdsb2JhbEFnZW50OiBuZXcgQWdlbnQoKVxufTtcbiIsICIndXNlIHN0cmljdCc7XG5jb25zdCB7UmVhZGFibGV9ID0gcmVxdWlyZSgnc3RyZWFtJyk7XG5cbmNsYXNzIEluY29taW5nTWVzc2FnZSBleHRlbmRzIFJlYWRhYmxlIHtcblx0Y29uc3RydWN0b3Ioc29ja2V0LCBoaWdoV2F0ZXJNYXJrKSB7XG5cdFx0c3VwZXIoe1xuXHRcdFx0aGlnaFdhdGVyTWFyayxcblx0XHRcdGF1dG9EZXN0cm95OiBmYWxzZVxuXHRcdH0pO1xuXG5cdFx0dGhpcy5zdGF0dXNDb2RlID0gbnVsbDtcblx0XHR0aGlzLnN0YXR1c01lc3NhZ2UgPSAnJztcblx0XHR0aGlzLmh0dHBWZXJzaW9uID0gJzIuMCc7XG5cdFx0dGhpcy5odHRwVmVyc2lvbk1ham9yID0gMjtcblx0XHR0aGlzLmh0dHBWZXJzaW9uTWlub3IgPSAwO1xuXHRcdHRoaXMuaGVhZGVycyA9IHt9O1xuXHRcdHRoaXMudHJhaWxlcnMgPSB7fTtcblx0XHR0aGlzLnJlcSA9IG51bGw7XG5cblx0XHR0aGlzLmFib3J0ZWQgPSBmYWxzZTtcblx0XHR0aGlzLmNvbXBsZXRlID0gZmFsc2U7XG5cdFx0dGhpcy51cGdyYWRlID0gbnVsbDtcblxuXHRcdHRoaXMucmF3SGVhZGVycyA9IFtdO1xuXHRcdHRoaXMucmF3VHJhaWxlcnMgPSBbXTtcblxuXHRcdHRoaXMuc29ja2V0ID0gc29ja2V0O1xuXHRcdHRoaXMuY29ubmVjdGlvbiA9IHNvY2tldDtcblxuXHRcdHRoaXMuX2R1bXBlZCA9IGZhbHNlO1xuXHR9XG5cblx0X2Rlc3Ryb3koZXJyb3IpIHtcblx0XHR0aGlzLnJlcS5fcmVxdWVzdC5kZXN0cm95KGVycm9yKTtcblx0fVxuXG5cdHNldFRpbWVvdXQobXMsIGNhbGxiYWNrKSB7XG5cdFx0dGhpcy5yZXEuc2V0VGltZW91dChtcywgY2FsbGJhY2spO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0X2R1bXAoKSB7XG5cdFx0aWYgKCF0aGlzLl9kdW1wZWQpIHtcblx0XHRcdHRoaXMuX2R1bXBlZCA9IHRydWU7XG5cblx0XHRcdHRoaXMucmVtb3ZlQWxsTGlzdGVuZXJzKCdkYXRhJyk7XG5cdFx0XHR0aGlzLnJlc3VtZSgpO1xuXHRcdH1cblx0fVxuXG5cdF9yZWFkKCkge1xuXHRcdGlmICh0aGlzLnJlcSkge1xuXHRcdFx0dGhpcy5yZXEuX3JlcXVlc3QucmVzdW1lKCk7XG5cdFx0fVxuXHR9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gSW5jb21pbmdNZXNzYWdlO1xuIiwgIid1c2Ugc3RyaWN0Jztcbi8qIGlzdGFuYnVsIGlnbm9yZSBmaWxlOiBodHRwczovL2dpdGh1Yi5jb20vbm9kZWpzL25vZGUvYmxvYi9hOTEyOTNkNGQ5YWI0MDMwNDZhYjVlYjAyMjMzMmU0ZTNkMjQ5YmQzL2xpYi9pbnRlcm5hbC91cmwuanMjTDEyNTcgKi9cblxubW9kdWxlLmV4cG9ydHMgPSB1cmwgPT4ge1xuXHRjb25zdCBvcHRpb25zID0ge1xuXHRcdHByb3RvY29sOiB1cmwucHJvdG9jb2wsXG5cdFx0aG9zdG5hbWU6IHR5cGVvZiB1cmwuaG9zdG5hbWUgPT09ICdzdHJpbmcnICYmIHVybC5ob3N0bmFtZS5zdGFydHNXaXRoKCdbJykgPyB1cmwuaG9zdG5hbWUuc2xpY2UoMSwgLTEpIDogdXJsLmhvc3RuYW1lLFxuXHRcdGhvc3Q6IHVybC5ob3N0LFxuXHRcdGhhc2g6IHVybC5oYXNoLFxuXHRcdHNlYXJjaDogdXJsLnNlYXJjaCxcblx0XHRwYXRobmFtZTogdXJsLnBhdGhuYW1lLFxuXHRcdGhyZWY6IHVybC5ocmVmLFxuXHRcdHBhdGg6IGAke3VybC5wYXRobmFtZSB8fCAnJ30ke3VybC5zZWFyY2ggfHwgJyd9YFxuXHR9O1xuXG5cdGlmICh0eXBlb2YgdXJsLnBvcnQgPT09ICdzdHJpbmcnICYmIHVybC5wb3J0Lmxlbmd0aCAhPT0gMCkge1xuXHRcdG9wdGlvbnMucG9ydCA9IE51bWJlcih1cmwucG9ydCk7XG5cdH1cblxuXHRpZiAodXJsLnVzZXJuYW1lIHx8IHVybC5wYXNzd29yZCkge1xuXHRcdG9wdGlvbnMuYXV0aCA9IGAke3VybC51c2VybmFtZSB8fCAnJ306JHt1cmwucGFzc3dvcmQgfHwgJyd9YDtcblx0fVxuXG5cdHJldHVybiBvcHRpb25zO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gKGZyb20sIHRvLCBldmVudHMpID0+IHtcblx0Zm9yIChjb25zdCBldmVudCBvZiBldmVudHMpIHtcblx0XHRmcm9tLm9uKGV2ZW50LCAoLi4uYXJncykgPT4gdG8uZW1pdChldmVudCwgLi4uYXJncykpO1xuXHR9XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcblxubW9kdWxlLmV4cG9ydHMgPSBoZWFkZXIgPT4ge1xuXHRzd2l0Y2ggKGhlYWRlcikge1xuXHRcdGNhc2UgJzptZXRob2QnOlxuXHRcdGNhc2UgJzpzY2hlbWUnOlxuXHRcdGNhc2UgJzphdXRob3JpdHknOlxuXHRcdGNhc2UgJzpwYXRoJzpcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdGRlZmF1bHQ6XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xuLyogaXN0YW5idWwgaWdub3JlIGZpbGU6IGh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlanMvbm9kZS9ibG9iL21hc3Rlci9saWIvaW50ZXJuYWwvZXJyb3JzLmpzICovXG5cbmNvbnN0IG1ha2VFcnJvciA9IChCYXNlLCBrZXksIGdldE1lc3NhZ2UpID0+IHtcblx0bW9kdWxlLmV4cG9ydHNba2V5XSA9IGNsYXNzIE5vZGVFcnJvciBleHRlbmRzIEJhc2Uge1xuXHRcdGNvbnN0cnVjdG9yKC4uLmFyZ3MpIHtcblx0XHRcdHN1cGVyKHR5cGVvZiBnZXRNZXNzYWdlID09PSAnc3RyaW5nJyA/IGdldE1lc3NhZ2UgOiBnZXRNZXNzYWdlKGFyZ3MpKTtcblx0XHRcdHRoaXMubmFtZSA9IGAke3N1cGVyLm5hbWV9IFske2tleX1dYDtcblx0XHRcdHRoaXMuY29kZSA9IGtleTtcblx0XHR9XG5cdH07XG59O1xuXG5tYWtlRXJyb3IoVHlwZUVycm9yLCAnRVJSX0lOVkFMSURfQVJHX1RZUEUnLCBhcmdzID0+IHtcblx0Y29uc3QgdHlwZSA9IGFyZ3NbMF0uaW5jbHVkZXMoJy4nKSA/ICdwcm9wZXJ0eScgOiAnYXJndW1lbnQnO1xuXG5cdGxldCB2YWxpZCA9IGFyZ3NbMV07XG5cdGNvbnN0IGlzTWFueVR5cGVzID0gQXJyYXkuaXNBcnJheSh2YWxpZCk7XG5cblx0aWYgKGlzTWFueVR5cGVzKSB7XG5cdFx0dmFsaWQgPSBgJHt2YWxpZC5zbGljZSgwLCAtMSkuam9pbignLCAnKX0gb3IgJHt2YWxpZC5zbGljZSgtMSl9YDtcblx0fVxuXG5cdHJldHVybiBgVGhlIFwiJHthcmdzWzBdfVwiICR7dHlwZX0gbXVzdCBiZSAke2lzTWFueVR5cGVzID8gJ29uZSBvZicgOiAnb2YnfSB0eXBlICR7dmFsaWR9LiBSZWNlaXZlZCAke3R5cGVvZiBhcmdzWzJdfWA7XG59KTtcblxubWFrZUVycm9yKFR5cGVFcnJvciwgJ0VSUl9JTlZBTElEX1BST1RPQ09MJywgYXJncyA9PiB7XG5cdHJldHVybiBgUHJvdG9jb2wgXCIke2FyZ3NbMF19XCIgbm90IHN1cHBvcnRlZC4gRXhwZWN0ZWQgXCIke2FyZ3NbMV19XCJgO1xufSk7XG5cbm1ha2VFcnJvcihFcnJvciwgJ0VSUl9IVFRQX0hFQURFUlNfU0VOVCcsIGFyZ3MgPT4ge1xuXHRyZXR1cm4gYENhbm5vdCAke2FyZ3NbMF19IGhlYWRlcnMgYWZ0ZXIgdGhleSBhcmUgc2VudCB0byB0aGUgY2xpZW50YDtcbn0pO1xuXG5tYWtlRXJyb3IoVHlwZUVycm9yLCAnRVJSX0lOVkFMSURfSFRUUF9UT0tFTicsIGFyZ3MgPT4ge1xuXHRyZXR1cm4gYCR7YXJnc1swXX0gbXVzdCBiZSBhIHZhbGlkIEhUVFAgdG9rZW4gWyR7YXJnc1sxXX1dYDtcbn0pO1xuXG5tYWtlRXJyb3IoVHlwZUVycm9yLCAnRVJSX0hUVFBfSU5WQUxJRF9IRUFERVJfVkFMVUUnLCBhcmdzID0+IHtcblx0cmV0dXJuIGBJbnZhbGlkIHZhbHVlIFwiJHthcmdzWzBdfSBmb3IgaGVhZGVyIFwiJHthcmdzWzFdfVwiYDtcbn0pO1xuXG5tYWtlRXJyb3IoVHlwZUVycm9yLCAnRVJSX0lOVkFMSURfQ0hBUicsIGFyZ3MgPT4ge1xuXHRyZXR1cm4gYEludmFsaWQgY2hhcmFjdGVyIGluICR7YXJnc1swXX0gWyR7YXJnc1sxXX1dYDtcbn0pO1xuIiwgIid1c2Ugc3RyaWN0JztcbmNvbnN0IGh0dHAyID0gcmVxdWlyZSgnaHR0cDInKTtcbmNvbnN0IHtXcml0YWJsZX0gPSByZXF1aXJlKCdzdHJlYW0nKTtcbmNvbnN0IHtBZ2VudCwgZ2xvYmFsQWdlbnR9ID0gcmVxdWlyZSgnLi9hZ2VudCcpO1xuY29uc3QgSW5jb21pbmdNZXNzYWdlID0gcmVxdWlyZSgnLi9pbmNvbWluZy1tZXNzYWdlJyk7XG5jb25zdCB1cmxUb09wdGlvbnMgPSByZXF1aXJlKCcuL3V0aWxzL3VybC10by1vcHRpb25zJyk7XG5jb25zdCBwcm94eUV2ZW50cyA9IHJlcXVpcmUoJy4vdXRpbHMvcHJveHktZXZlbnRzJyk7XG5jb25zdCBpc1JlcXVlc3RQc2V1ZG9IZWFkZXIgPSByZXF1aXJlKCcuL3V0aWxzL2lzLXJlcXVlc3QtcHNldWRvLWhlYWRlcicpO1xuY29uc3Qge1xuXHRFUlJfSU5WQUxJRF9BUkdfVFlQRSxcblx0RVJSX0lOVkFMSURfUFJPVE9DT0wsXG5cdEVSUl9IVFRQX0hFQURFUlNfU0VOVCxcblx0RVJSX0lOVkFMSURfSFRUUF9UT0tFTixcblx0RVJSX0hUVFBfSU5WQUxJRF9IRUFERVJfVkFMVUUsXG5cdEVSUl9JTlZBTElEX0NIQVJcbn0gPSByZXF1aXJlKCcuL3V0aWxzL2Vycm9ycycpO1xuXG5jb25zdCB7XG5cdEhUVFAyX0hFQURFUl9TVEFUVVMsXG5cdEhUVFAyX0hFQURFUl9NRVRIT0QsXG5cdEhUVFAyX0hFQURFUl9QQVRILFxuXHRIVFRQMl9NRVRIT0RfQ09OTkVDVFxufSA9IGh0dHAyLmNvbnN0YW50cztcblxuY29uc3Qga0hlYWRlcnMgPSBTeW1ib2woJ2hlYWRlcnMnKTtcbmNvbnN0IGtPcmlnaW4gPSBTeW1ib2woJ29yaWdpbicpO1xuY29uc3Qga1Nlc3Npb24gPSBTeW1ib2woJ3Nlc3Npb24nKTtcbmNvbnN0IGtPcHRpb25zID0gU3ltYm9sKCdvcHRpb25zJyk7XG5jb25zdCBrRmx1c2hlZEhlYWRlcnMgPSBTeW1ib2woJ2ZsdXNoZWRIZWFkZXJzJyk7XG5jb25zdCBrSm9icyA9IFN5bWJvbCgnam9icycpO1xuXG5jb25zdCBpc1ZhbGlkSHR0cFRva2VuID0gL15bXFxeYFxcLVxcdyEjJCUmKisufH5dKyQvO1xuY29uc3QgaXNJbnZhbGlkSGVhZGVyVmFsdWUgPSAvW15cXHRcXHUwMDIwLVxcdTAwN0VcXHUwMDgwLVxcdTAwRkZdLztcblxuY2xhc3MgQ2xpZW50UmVxdWVzdCBleHRlbmRzIFdyaXRhYmxlIHtcblx0Y29uc3RydWN0b3IoaW5wdXQsIG9wdGlvbnMsIGNhbGxiYWNrKSB7XG5cdFx0c3VwZXIoe1xuXHRcdFx0YXV0b0Rlc3Ryb3k6IGZhbHNlXG5cdFx0fSk7XG5cblx0XHRjb25zdCBoYXNJbnB1dCA9IHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZycgfHwgaW5wdXQgaW5zdGFuY2VvZiBVUkw7XG5cdFx0aWYgKGhhc0lucHV0KSB7XG5cdFx0XHRpbnB1dCA9IHVybFRvT3B0aW9ucyhpbnB1dCBpbnN0YW5jZW9mIFVSTCA/IGlucHV0IDogbmV3IFVSTChpbnB1dCkpO1xuXHRcdH1cblxuXHRcdGlmICh0eXBlb2Ygb3B0aW9ucyA9PT0gJ2Z1bmN0aW9uJyB8fCBvcHRpb25zID09PSB1bmRlZmluZWQpIHtcblx0XHRcdC8vIChvcHRpb25zLCBjYWxsYmFjaylcblx0XHRcdGNhbGxiYWNrID0gb3B0aW9ucztcblx0XHRcdG9wdGlvbnMgPSBoYXNJbnB1dCA/IGlucHV0IDogey4uLmlucHV0fTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gKGlucHV0LCBvcHRpb25zLCBjYWxsYmFjaylcblx0XHRcdG9wdGlvbnMgPSB7Li4uaW5wdXQsIC4uLm9wdGlvbnN9O1xuXHRcdH1cblxuXHRcdGlmIChvcHRpb25zLmgyc2Vzc2lvbikge1xuXHRcdFx0dGhpc1trU2Vzc2lvbl0gPSBvcHRpb25zLmgyc2Vzc2lvbjtcblx0XHR9IGVsc2UgaWYgKG9wdGlvbnMuYWdlbnQgPT09IGZhbHNlKSB7XG5cdFx0XHR0aGlzLmFnZW50ID0gbmV3IEFnZW50KHttYXhGcmVlU2Vzc2lvbnM6IDB9KTtcblx0XHR9IGVsc2UgaWYgKHR5cGVvZiBvcHRpb25zLmFnZW50ID09PSAndW5kZWZpbmVkJyB8fCBvcHRpb25zLmFnZW50ID09PSBudWxsKSB7XG5cdFx0XHRpZiAodHlwZW9mIG9wdGlvbnMuY3JlYXRlQ29ubmVjdGlvbiA9PT0gJ2Z1bmN0aW9uJykge1xuXHRcdFx0XHQvLyBUaGlzIGlzIGEgd29ya2Fyb3VuZCAtIHdlIGRvbid0IGhhdmUgdG8gY3JlYXRlIHRoZSBzZXNzaW9uIG9uIG91ciBvd24uXG5cdFx0XHRcdHRoaXMuYWdlbnQgPSBuZXcgQWdlbnQoe21heEZyZWVTZXNzaW9uczogMH0pO1xuXHRcdFx0XHR0aGlzLmFnZW50LmNyZWF0ZUNvbm5lY3Rpb24gPSBvcHRpb25zLmNyZWF0ZUNvbm5lY3Rpb247XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR0aGlzLmFnZW50ID0gZ2xvYmFsQWdlbnQ7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIGlmICh0eXBlb2Ygb3B0aW9ucy5hZ2VudC5yZXF1ZXN0ID09PSAnZnVuY3Rpb24nKSB7XG5cdFx0XHR0aGlzLmFnZW50ID0gb3B0aW9ucy5hZ2VudDtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhyb3cgbmV3IEVSUl9JTlZBTElEX0FSR19UWVBFKCdvcHRpb25zLmFnZW50JywgWydBZ2VudC1saWtlIE9iamVjdCcsICd1bmRlZmluZWQnLCAnZmFsc2UnXSwgb3B0aW9ucy5hZ2VudCk7XG5cdFx0fVxuXG5cdFx0aWYgKG9wdGlvbnMucHJvdG9jb2wgJiYgb3B0aW9ucy5wcm90b2NvbCAhPT0gJ2h0dHBzOicpIHtcblx0XHRcdHRocm93IG5ldyBFUlJfSU5WQUxJRF9QUk9UT0NPTChvcHRpb25zLnByb3RvY29sLCAnaHR0cHM6Jyk7XG5cdFx0fVxuXG5cdFx0Y29uc3QgcG9ydCA9IG9wdGlvbnMucG9ydCB8fCBvcHRpb25zLmRlZmF1bHRQb3J0IHx8ICh0aGlzLmFnZW50ICYmIHRoaXMuYWdlbnQuZGVmYXVsdFBvcnQpIHx8IDQ0Mztcblx0XHRjb25zdCBob3N0ID0gb3B0aW9ucy5ob3N0bmFtZSB8fCBvcHRpb25zLmhvc3QgfHwgJ2xvY2FsaG9zdCc7XG5cblx0XHQvLyBEb24ndCBlbmZvcmNlIHRoZSBvcmlnaW4gdmlhIG9wdGlvbnMuIEl0IG1heSBiZSBjaGFuZ2VkIGluIGFuIEFnZW50LlxuXHRcdGRlbGV0ZSBvcHRpb25zLmhvc3RuYW1lO1xuXHRcdGRlbGV0ZSBvcHRpb25zLmhvc3Q7XG5cdFx0ZGVsZXRlIG9wdGlvbnMucG9ydDtcblxuXHRcdGNvbnN0IHt0aW1lb3V0fSA9IG9wdGlvbnM7XG5cdFx0b3B0aW9ucy50aW1lb3V0ID0gdW5kZWZpbmVkO1xuXG5cdFx0dGhpc1trSGVhZGVyc10gPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuXHRcdHRoaXNba0pvYnNdID0gW107XG5cblx0XHR0aGlzLnNvY2tldCA9IG51bGw7XG5cdFx0dGhpcy5jb25uZWN0aW9uID0gbnVsbDtcblxuXHRcdHRoaXMubWV0aG9kID0gb3B0aW9ucy5tZXRob2QgfHwgJ0dFVCc7XG5cdFx0dGhpcy5wYXRoID0gb3B0aW9ucy5wYXRoO1xuXG5cdFx0dGhpcy5yZXMgPSBudWxsO1xuXHRcdHRoaXMuYWJvcnRlZCA9IGZhbHNlO1xuXHRcdHRoaXMucmV1c2VkU29ja2V0ID0gZmFsc2U7XG5cblx0XHRpZiAob3B0aW9ucy5oZWFkZXJzKSB7XG5cdFx0XHRmb3IgKGNvbnN0IFtoZWFkZXIsIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhvcHRpb25zLmhlYWRlcnMpKSB7XG5cdFx0XHRcdHRoaXMuc2V0SGVhZGVyKGhlYWRlciwgdmFsdWUpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmIChvcHRpb25zLmF1dGggJiYgISgnYXV0aG9yaXphdGlvbicgaW4gdGhpc1trSGVhZGVyc10pKSB7XG5cdFx0XHR0aGlzW2tIZWFkZXJzXS5hdXRob3JpemF0aW9uID0gJ0Jhc2ljICcgKyBCdWZmZXIuZnJvbShvcHRpb25zLmF1dGgpLnRvU3RyaW5nKCdiYXNlNjQnKTtcblx0XHR9XG5cblx0XHRvcHRpb25zLnNlc3Npb24gPSBvcHRpb25zLnRsc1Nlc3Npb247XG5cdFx0b3B0aW9ucy5wYXRoID0gb3B0aW9ucy5zb2NrZXRQYXRoO1xuXG5cdFx0dGhpc1trT3B0aW9uc10gPSBvcHRpb25zO1xuXG5cdFx0Ly8gQ2xpZW50cyB0aGF0IGdlbmVyYXRlIEhUVFAvMiByZXF1ZXN0cyBkaXJlY3RseSBTSE9VTEQgdXNlIHRoZSA6YXV0aG9yaXR5IHBzZXVkby1oZWFkZXIgZmllbGQgaW5zdGVhZCBvZiB0aGUgSG9zdCBoZWFkZXIgZmllbGQuXG5cdFx0aWYgKHBvcnQgPT09IDQ0Mykge1xuXHRcdFx0dGhpc1trT3JpZ2luXSA9IGBodHRwczovLyR7aG9zdH1gO1xuXG5cdFx0XHRpZiAoISgnOmF1dGhvcml0eScgaW4gdGhpc1trSGVhZGVyc10pKSB7XG5cdFx0XHRcdHRoaXNba0hlYWRlcnNdWyc6YXV0aG9yaXR5J10gPSBob3N0O1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzW2tPcmlnaW5dID0gYGh0dHBzOi8vJHtob3N0fToke3BvcnR9YDtcblxuXHRcdFx0aWYgKCEoJzphdXRob3JpdHknIGluIHRoaXNba0hlYWRlcnNdKSkge1xuXHRcdFx0XHR0aGlzW2tIZWFkZXJzXVsnOmF1dGhvcml0eSddID0gYCR7aG9zdH06JHtwb3J0fWA7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKHRpbWVvdXQpIHtcblx0XHRcdHRoaXMuc2V0VGltZW91dCh0aW1lb3V0KTtcblx0XHR9XG5cblx0XHRpZiAoY2FsbGJhY2spIHtcblx0XHRcdHRoaXMub25jZSgncmVzcG9uc2UnLCBjYWxsYmFjayk7XG5cdFx0fVxuXG5cdFx0dGhpc1trRmx1c2hlZEhlYWRlcnNdID0gZmFsc2U7XG5cdH1cblxuXHRnZXQgbWV0aG9kKCkge1xuXHRcdHJldHVybiB0aGlzW2tIZWFkZXJzXVtIVFRQMl9IRUFERVJfTUVUSE9EXTtcblx0fVxuXG5cdHNldCBtZXRob2QodmFsdWUpIHtcblx0XHRpZiAodmFsdWUpIHtcblx0XHRcdHRoaXNba0hlYWRlcnNdW0hUVFAyX0hFQURFUl9NRVRIT0RdID0gdmFsdWUudG9VcHBlckNhc2UoKTtcblx0XHR9XG5cdH1cblxuXHRnZXQgcGF0aCgpIHtcblx0XHRyZXR1cm4gdGhpc1trSGVhZGVyc11bSFRUUDJfSEVBREVSX1BBVEhdO1xuXHR9XG5cblx0c2V0IHBhdGgodmFsdWUpIHtcblx0XHRpZiAodmFsdWUpIHtcblx0XHRcdHRoaXNba0hlYWRlcnNdW0hUVFAyX0hFQURFUl9QQVRIXSA9IHZhbHVlO1xuXHRcdH1cblx0fVxuXG5cdGdldCBfbXVzdE5vdEhhdmVBQm9keSgpIHtcblx0XHRyZXR1cm4gdGhpcy5tZXRob2QgPT09ICdHRVQnIHx8IHRoaXMubWV0aG9kID09PSAnSEVBRCcgfHwgdGhpcy5tZXRob2QgPT09ICdERUxFVEUnO1xuXHR9XG5cblx0X3dyaXRlKGNodW5rLCBlbmNvZGluZywgY2FsbGJhY2spIHtcblx0XHQvLyBodHRwczovL2dpdGh1Yi5jb20vbm9kZWpzL25vZGUvYmxvYi82NTRkZjA5YWUwYzVlMTdkMWI1MmE5MDBhNTQ1ZjA2NjRkOGM3NjI3L2xpYi9pbnRlcm5hbC9odHRwMi91dGlsLmpzI0wxNDgtTDE1NlxuXHRcdGlmICh0aGlzLl9tdXN0Tm90SGF2ZUFCb2R5KSB7XG5cdFx0XHRjYWxsYmFjayhuZXcgRXJyb3IoJ1RoZSBHRVQsIEhFQUQgYW5kIERFTEVURSBtZXRob2RzIG11c3QgTk9UIGhhdmUgYSBib2R5JykpO1xuXHRcdFx0LyogaXN0YW5idWwgaWdub3JlIG5leHQ6IE5vZGUuanMgMTIgdGhyb3dzIGRpcmVjdGx5ICovXG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0dGhpcy5mbHVzaEhlYWRlcnMoKTtcblxuXHRcdGNvbnN0IGNhbGxXcml0ZSA9ICgpID0+IHRoaXMuX3JlcXVlc3Qud3JpdGUoY2h1bmssIGVuY29kaW5nLCBjYWxsYmFjayk7XG5cdFx0aWYgKHRoaXMuX3JlcXVlc3QpIHtcblx0XHRcdGNhbGxXcml0ZSgpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzW2tKb2JzXS5wdXNoKGNhbGxXcml0ZSk7XG5cdFx0fVxuXHR9XG5cblx0X2ZpbmFsKGNhbGxiYWNrKSB7XG5cdFx0aWYgKHRoaXMuZGVzdHJveWVkKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0dGhpcy5mbHVzaEhlYWRlcnMoKTtcblxuXHRcdGNvbnN0IGNhbGxFbmQgPSAoKSA9PiB7XG5cdFx0XHQvLyBGb3IgR0VULCBIRUFEIGFuZCBERUxFVEVcblx0XHRcdGlmICh0aGlzLl9tdXN0Tm90SGF2ZUFCb2R5KSB7XG5cdFx0XHRcdGNhbGxiYWNrKCk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblxuXHRcdFx0dGhpcy5fcmVxdWVzdC5lbmQoY2FsbGJhY2spO1xuXHRcdH07XG5cblx0XHRpZiAodGhpcy5fcmVxdWVzdCkge1xuXHRcdFx0Y2FsbEVuZCgpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzW2tKb2JzXS5wdXNoKGNhbGxFbmQpO1xuXHRcdH1cblx0fVxuXG5cdGFib3J0KCkge1xuXHRcdGlmICh0aGlzLnJlcyAmJiB0aGlzLnJlcy5jb21wbGV0ZSkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGlmICghdGhpcy5hYm9ydGVkKSB7XG5cdFx0XHRwcm9jZXNzLm5leHRUaWNrKCgpID0+IHRoaXMuZW1pdCgnYWJvcnQnKSk7XG5cdFx0fVxuXG5cdFx0dGhpcy5hYm9ydGVkID0gdHJ1ZTtcblxuXHRcdHRoaXMuZGVzdHJveSgpO1xuXHR9XG5cblx0X2Rlc3Ryb3koZXJyb3IsIGNhbGxiYWNrKSB7XG5cdFx0aWYgKHRoaXMucmVzKSB7XG5cdFx0XHR0aGlzLnJlcy5fZHVtcCgpO1xuXHRcdH1cblxuXHRcdGlmICh0aGlzLl9yZXF1ZXN0KSB7XG5cdFx0XHR0aGlzLl9yZXF1ZXN0LmRlc3Ryb3koKTtcblx0XHR9XG5cblx0XHRjYWxsYmFjayhlcnJvcik7XG5cdH1cblxuXHRhc3luYyBmbHVzaEhlYWRlcnMoKSB7XG5cdFx0aWYgKHRoaXNba0ZsdXNoZWRIZWFkZXJzXSB8fCB0aGlzLmRlc3Ryb3llZCkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdHRoaXNba0ZsdXNoZWRIZWFkZXJzXSA9IHRydWU7XG5cblx0XHRjb25zdCBpc0Nvbm5lY3RNZXRob2QgPSB0aGlzLm1ldGhvZCA9PT0gSFRUUDJfTUVUSE9EX0NPTk5FQ1Q7XG5cblx0XHQvLyBUaGUgcmVhbCBtYWdpYyBpcyBoZXJlXG5cdFx0Y29uc3Qgb25TdHJlYW0gPSBzdHJlYW0gPT4ge1xuXHRcdFx0dGhpcy5fcmVxdWVzdCA9IHN0cmVhbTtcblxuXHRcdFx0aWYgKHRoaXMuZGVzdHJveWVkKSB7XG5cdFx0XHRcdHN0cmVhbS5kZXN0cm95KCk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblxuXHRcdFx0Ly8gRm9yd2FyZHMgYHRpbWVvdXRgLCBgY29udGludWVgLCBgY2xvc2VgIGFuZCBgZXJyb3JgIGV2ZW50cyB0byB0aGlzIGluc3RhbmNlLlxuXHRcdFx0aWYgKCFpc0Nvbm5lY3RNZXRob2QpIHtcblx0XHRcdFx0cHJveHlFdmVudHMoc3RyZWFtLCB0aGlzLCBbJ3RpbWVvdXQnLCAnY29udGludWUnLCAnY2xvc2UnLCAnZXJyb3InXSk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIFdhaXQgZm9yIHRoZSBgZmluaXNoYCBldmVudC4gV2UgZG9uJ3Qgd2FudCB0byBlbWl0IHRoZSBgcmVzcG9uc2VgIGV2ZW50XG5cdFx0XHQvLyBiZWZvcmUgYHJlcXVlc3QuZW5kKClgIGlzIGNhbGxlZC5cblx0XHRcdGNvbnN0IHdhaXRGb3JFbmQgPSBmbiA9PiB7XG5cdFx0XHRcdHJldHVybiAoLi4uYXJncykgPT4ge1xuXHRcdFx0XHRcdGlmICghdGhpcy53cml0YWJsZSAmJiAhdGhpcy5kZXN0cm95ZWQpIHtcblx0XHRcdFx0XHRcdGZuKC4uLmFyZ3MpO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHR0aGlzLm9uY2UoJ2ZpbmlzaCcsICgpID0+IHtcblx0XHRcdFx0XHRcdFx0Zm4oLi4uYXJncyk7XG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH07XG5cdFx0XHR9O1xuXG5cdFx0XHQvLyBUaGlzIGV2ZW50IHRlbGxzIHdlIGFyZSByZWFkeSB0byBsaXN0ZW4gZm9yIHRoZSBkYXRhLlxuXHRcdFx0c3RyZWFtLm9uY2UoJ3Jlc3BvbnNlJywgd2FpdEZvckVuZCgoaGVhZGVycywgZmxhZ3MsIHJhd0hlYWRlcnMpID0+IHtcblx0XHRcdFx0Ly8gSWYgd2Ugd2VyZSB0byBlbWl0IHJhdyByZXF1ZXN0IHN0cmVhbSwgaXQgd291bGQgYmUgYXMgZmFzdCBhcyB0aGUgbmF0aXZlIGFwcHJvYWNoLlxuXHRcdFx0XHQvLyBOb3RlIHRoYXQgd3JhcHBpbmcgdGhlIHJhdyBzdHJlYW0gaW4gYSBQcm94eSBpbnN0YW5jZSB3b24ndCBpbXByb3ZlIHRoZSBwZXJmb3JtYW5jZSAoYWxyZWFkeSB0ZXN0ZWQgaXQpLlxuXHRcdFx0XHRjb25zdCByZXNwb25zZSA9IG5ldyBJbmNvbWluZ01lc3NhZ2UodGhpcy5zb2NrZXQsIHN0cmVhbS5yZWFkYWJsZUhpZ2hXYXRlck1hcmspO1xuXHRcdFx0XHR0aGlzLnJlcyA9IHJlc3BvbnNlO1xuXG5cdFx0XHRcdHJlc3BvbnNlLnJlcSA9IHRoaXM7XG5cdFx0XHRcdHJlc3BvbnNlLnN0YXR1c0NvZGUgPSBoZWFkZXJzW0hUVFAyX0hFQURFUl9TVEFUVVNdO1xuXHRcdFx0XHRyZXNwb25zZS5oZWFkZXJzID0gaGVhZGVycztcblx0XHRcdFx0cmVzcG9uc2UucmF3SGVhZGVycyA9IHJhd0hlYWRlcnM7XG5cblx0XHRcdFx0cmVzcG9uc2Uub25jZSgnZW5kJywgKCkgPT4ge1xuXHRcdFx0XHRcdGlmICh0aGlzLmFib3J0ZWQpIHtcblx0XHRcdFx0XHRcdHJlc3BvbnNlLmFib3J0ZWQgPSB0cnVlO1xuXHRcdFx0XHRcdFx0cmVzcG9uc2UuZW1pdCgnYWJvcnRlZCcpO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRyZXNwb25zZS5jb21wbGV0ZSA9IHRydWU7XG5cblx0XHRcdFx0XHRcdC8vIEhhcyBubyBlZmZlY3QsIGp1c3QgYmUgY29uc2lzdGVudCB3aXRoIHRoZSBOb2RlLmpzIGJlaGF2aW9yXG5cdFx0XHRcdFx0XHRyZXNwb25zZS5zb2NrZXQgPSBudWxsO1xuXHRcdFx0XHRcdFx0cmVzcG9uc2UuY29ubmVjdGlvbiA9IG51bGw7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblxuXHRcdFx0XHRpZiAoaXNDb25uZWN0TWV0aG9kKSB7XG5cdFx0XHRcdFx0cmVzcG9uc2UudXBncmFkZSA9IHRydWU7XG5cblx0XHRcdFx0XHQvLyBUaGUgSFRUUDEgQVBJIHNheXMgdGhlIHNvY2tldCBpcyBkZXRhY2hlZCBoZXJlLFxuXHRcdFx0XHRcdC8vIGJ1dCB3ZSBjYW4ndCBkbyB0aGF0IHNvIHdlIHBhc3MgdGhlIG9yaWdpbmFsIEhUVFAyIHJlcXVlc3QuXG5cdFx0XHRcdFx0aWYgKHRoaXMuZW1pdCgnY29ubmVjdCcsIHJlc3BvbnNlLCBzdHJlYW0sIEJ1ZmZlci5hbGxvYygwKSkpIHtcblx0XHRcdFx0XHRcdHRoaXMuZW1pdCgnY2xvc2UnKTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0Ly8gTm8gbGlzdGVuZXJzIGF0dGFjaGVkLCBkZXN0cm95IHRoZSBvcmlnaW5hbCByZXF1ZXN0LlxuXHRcdFx0XHRcdFx0c3RyZWFtLmRlc3Ryb3koKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Ly8gRm9yd2FyZHMgZGF0YVxuXHRcdFx0XHRcdHN0cmVhbS5vbignZGF0YScsIGNodW5rID0+IHtcblx0XHRcdFx0XHRcdGlmICghcmVzcG9uc2UuX2R1bXBlZCAmJiAhcmVzcG9uc2UucHVzaChjaHVuaykpIHtcblx0XHRcdFx0XHRcdFx0c3RyZWFtLnBhdXNlKCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSk7XG5cblx0XHRcdFx0XHRzdHJlYW0ub25jZSgnZW5kJywgKCkgPT4ge1xuXHRcdFx0XHRcdFx0cmVzcG9uc2UucHVzaChudWxsKTtcblx0XHRcdFx0XHR9KTtcblxuXHRcdFx0XHRcdGlmICghdGhpcy5lbWl0KCdyZXNwb25zZScsIHJlc3BvbnNlKSkge1xuXHRcdFx0XHRcdFx0Ly8gTm8gbGlzdGVuZXJzIGF0dGFjaGVkLCBkdW1wIHRoZSByZXNwb25zZS5cblx0XHRcdFx0XHRcdHJlc3BvbnNlLl9kdW1wKCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9KSk7XG5cblx0XHRcdC8vIEVtaXRzIGBpbmZvcm1hdGlvbmAgZXZlbnRcblx0XHRcdHN0cmVhbS5vbmNlKCdoZWFkZXJzJywgd2FpdEZvckVuZChcblx0XHRcdFx0aGVhZGVycyA9PiB0aGlzLmVtaXQoJ2luZm9ybWF0aW9uJywge3N0YXR1c0NvZGU6IGhlYWRlcnNbSFRUUDJfSEVBREVSX1NUQVRVU119KVxuXHRcdFx0KSk7XG5cblx0XHRcdHN0cmVhbS5vbmNlKCd0cmFpbGVycycsIHdhaXRGb3JFbmQoKHRyYWlsZXJzLCBmbGFncywgcmF3VHJhaWxlcnMpID0+IHtcblx0XHRcdFx0Y29uc3Qge3Jlc30gPSB0aGlzO1xuXG5cdFx0XHRcdC8vIEFzc2lnbnMgdHJhaWxlcnMgdG8gdGhlIHJlc3BvbnNlIG9iamVjdC5cblx0XHRcdFx0cmVzLnRyYWlsZXJzID0gdHJhaWxlcnM7XG5cdFx0XHRcdHJlcy5yYXdUcmFpbGVycyA9IHJhd1RyYWlsZXJzO1xuXHRcdFx0fSkpO1xuXG5cdFx0XHRjb25zdCB7c29ja2V0fSA9IHN0cmVhbS5zZXNzaW9uO1xuXHRcdFx0dGhpcy5zb2NrZXQgPSBzb2NrZXQ7XG5cdFx0XHR0aGlzLmNvbm5lY3Rpb24gPSBzb2NrZXQ7XG5cblx0XHRcdGZvciAoY29uc3Qgam9iIG9mIHRoaXNba0pvYnNdKSB7XG5cdFx0XHRcdGpvYigpO1xuXHRcdFx0fVxuXG5cdFx0XHR0aGlzLmVtaXQoJ3NvY2tldCcsIHRoaXMuc29ja2V0KTtcblx0XHR9O1xuXG5cdFx0Ly8gTWFrZXMgYSBIVFRQMiByZXF1ZXN0XG5cdFx0aWYgKHRoaXNba1Nlc3Npb25dKSB7XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRvblN0cmVhbSh0aGlzW2tTZXNzaW9uXS5yZXF1ZXN0KHRoaXNba0hlYWRlcnNdKSk7XG5cdFx0XHR9IGNhdGNoIChlcnJvcikge1xuXHRcdFx0XHR0aGlzLmVtaXQoJ2Vycm9yJywgZXJyb3IpO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLnJldXNlZFNvY2tldCA9IHRydWU7XG5cblx0XHRcdHRyeSB7XG5cdFx0XHRcdG9uU3RyZWFtKGF3YWl0IHRoaXMuYWdlbnQucmVxdWVzdCh0aGlzW2tPcmlnaW5dLCB0aGlzW2tPcHRpb25zXSwgdGhpc1trSGVhZGVyc10pKTtcblx0XHRcdH0gY2F0Y2ggKGVycm9yKSB7XG5cdFx0XHRcdHRoaXMuZW1pdCgnZXJyb3InLCBlcnJvcik7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0Z2V0SGVhZGVyKG5hbWUpIHtcblx0XHRpZiAodHlwZW9mIG5hbWUgIT09ICdzdHJpbmcnKSB7XG5cdFx0XHR0aHJvdyBuZXcgRVJSX0lOVkFMSURfQVJHX1RZUEUoJ25hbWUnLCAnc3RyaW5nJywgbmFtZSk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXNba0hlYWRlcnNdW25hbWUudG9Mb3dlckNhc2UoKV07XG5cdH1cblxuXHRnZXQgaGVhZGVyc1NlbnQoKSB7XG5cdFx0cmV0dXJuIHRoaXNba0ZsdXNoZWRIZWFkZXJzXTtcblx0fVxuXG5cdHJlbW92ZUhlYWRlcihuYW1lKSB7XG5cdFx0aWYgKHR5cGVvZiBuYW1lICE9PSAnc3RyaW5nJykge1xuXHRcdFx0dGhyb3cgbmV3IEVSUl9JTlZBTElEX0FSR19UWVBFKCduYW1lJywgJ3N0cmluZycsIG5hbWUpO1xuXHRcdH1cblxuXHRcdGlmICh0aGlzLmhlYWRlcnNTZW50KSB7XG5cdFx0XHR0aHJvdyBuZXcgRVJSX0hUVFBfSEVBREVSU19TRU5UKCdyZW1vdmUnKTtcblx0XHR9XG5cblx0XHRkZWxldGUgdGhpc1trSGVhZGVyc11bbmFtZS50b0xvd2VyQ2FzZSgpXTtcblx0fVxuXG5cdHNldEhlYWRlcihuYW1lLCB2YWx1ZSkge1xuXHRcdGlmICh0aGlzLmhlYWRlcnNTZW50KSB7XG5cdFx0XHR0aHJvdyBuZXcgRVJSX0hUVFBfSEVBREVSU19TRU5UKCdzZXQnKTtcblx0XHR9XG5cblx0XHRpZiAodHlwZW9mIG5hbWUgIT09ICdzdHJpbmcnIHx8ICghaXNWYWxpZEh0dHBUb2tlbi50ZXN0KG5hbWUpICYmICFpc1JlcXVlc3RQc2V1ZG9IZWFkZXIobmFtZSkpKSB7XG5cdFx0XHR0aHJvdyBuZXcgRVJSX0lOVkFMSURfSFRUUF9UT0tFTignSGVhZGVyIG5hbWUnLCBuYW1lKTtcblx0XHR9XG5cblx0XHRpZiAodHlwZW9mIHZhbHVlID09PSAndW5kZWZpbmVkJykge1xuXHRcdFx0dGhyb3cgbmV3IEVSUl9IVFRQX0lOVkFMSURfSEVBREVSX1ZBTFVFKHZhbHVlLCBuYW1lKTtcblx0XHR9XG5cblx0XHRpZiAoaXNJbnZhbGlkSGVhZGVyVmFsdWUudGVzdCh2YWx1ZSkpIHtcblx0XHRcdHRocm93IG5ldyBFUlJfSU5WQUxJRF9DSEFSKCdoZWFkZXIgY29udGVudCcsIG5hbWUpO1xuXHRcdH1cblxuXHRcdHRoaXNba0hlYWRlcnNdW25hbWUudG9Mb3dlckNhc2UoKV0gPSB2YWx1ZTtcblx0fVxuXG5cdHNldE5vRGVsYXkoKSB7XG5cdFx0Ly8gSFRUUDIgc29ja2V0cyBjYW5ub3QgYmUgbWFsZm9ybWVkLCBkbyBub3RoaW5nLlxuXHR9XG5cblx0c2V0U29ja2V0S2VlcEFsaXZlKCkge1xuXHRcdC8vIEhUVFAyIHNvY2tldHMgY2Fubm90IGJlIG1hbGZvcm1lZCwgZG8gbm90aGluZy5cblx0fVxuXG5cdHNldFRpbWVvdXQobXMsIGNhbGxiYWNrKSB7XG5cdFx0Y29uc3QgYXBwbHlUaW1lb3V0ID0gKCkgPT4gdGhpcy5fcmVxdWVzdC5zZXRUaW1lb3V0KG1zLCBjYWxsYmFjayk7XG5cblx0XHRpZiAodGhpcy5fcmVxdWVzdCkge1xuXHRcdFx0YXBwbHlUaW1lb3V0KCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXNba0pvYnNdLnB1c2goYXBwbHlUaW1lb3V0KTtcblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdGdldCBtYXhIZWFkZXJzQ291bnQoKSB7XG5cdFx0aWYgKCF0aGlzLmRlc3Ryb3llZCAmJiB0aGlzLl9yZXF1ZXN0KSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5fcmVxdWVzdC5zZXNzaW9uLmxvY2FsU2V0dGluZ3MubWF4SGVhZGVyTGlzdFNpemU7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0fVxuXG5cdHNldCBtYXhIZWFkZXJzQ291bnQoX3ZhbHVlKSB7XG5cdFx0Ly8gVXBkYXRpbmcgSFRUUDIgc2V0dGluZ3Mgd291bGQgYWZmZWN0IGFsbCByZXF1ZXN0cywgZG8gbm90aGluZy5cblx0fVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IENsaWVudFJlcXVlc3Q7XG4iLCAiJ3VzZSBzdHJpY3QnO1xuY29uc3QgdGxzID0gcmVxdWlyZSgndGxzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gKG9wdGlvbnMgPSB7fSwgY29ubmVjdCA9IHRscy5jb25uZWN0KSA9PiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG5cdGxldCB0aW1lb3V0ID0gZmFsc2U7XG5cblx0bGV0IHNvY2tldDtcblxuXHRjb25zdCBjYWxsYmFjayA9IGFzeW5jICgpID0+IHtcblx0XHRhd2FpdCBzb2NrZXRQcm9taXNlO1xuXG5cdFx0c29ja2V0Lm9mZigndGltZW91dCcsIG9uVGltZW91dCk7XG5cdFx0c29ja2V0Lm9mZignZXJyb3InLCByZWplY3QpO1xuXG5cdFx0aWYgKG9wdGlvbnMucmVzb2x2ZVNvY2tldCkge1xuXHRcdFx0cmVzb2x2ZSh7YWxwblByb3RvY29sOiBzb2NrZXQuYWxwblByb3RvY29sLCBzb2NrZXQsIHRpbWVvdXR9KTtcblxuXHRcdFx0aWYgKHRpbWVvdXQpIHtcblx0XHRcdFx0YXdhaXQgUHJvbWlzZS5yZXNvbHZlKCk7XG5cdFx0XHRcdHNvY2tldC5lbWl0KCd0aW1lb3V0Jyk7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdHNvY2tldC5kZXN0cm95KCk7XG5cdFx0XHRyZXNvbHZlKHthbHBuUHJvdG9jb2w6IHNvY2tldC5hbHBuUHJvdG9jb2wsIHRpbWVvdXR9KTtcblx0XHR9XG5cdH07XG5cblx0Y29uc3Qgb25UaW1lb3V0ID0gYXN5bmMgKCkgPT4ge1xuXHRcdHRpbWVvdXQgPSB0cnVlO1xuXHRcdGNhbGxiYWNrKCk7XG5cdH07XG5cblx0Y29uc3Qgc29ja2V0UHJvbWlzZSA9IChhc3luYyAoKSA9PiB7XG5cdFx0dHJ5IHtcblx0XHRcdHNvY2tldCA9IGF3YWl0IGNvbm5lY3Qob3B0aW9ucywgY2FsbGJhY2spO1xuXG5cdFx0XHRzb2NrZXQub24oJ2Vycm9yJywgcmVqZWN0KTtcblx0XHRcdHNvY2tldC5vbmNlKCd0aW1lb3V0Jywgb25UaW1lb3V0KTtcblx0XHR9IGNhdGNoIChlcnJvcikge1xuXHRcdFx0cmVqZWN0KGVycm9yKTtcblx0XHR9XG5cdH0pKCk7XG59KTtcbiIsICIndXNlIHN0cmljdCc7XG5jb25zdCBuZXQgPSByZXF1aXJlKCduZXQnKTtcbi8qIGlzdGFuYnVsIGlnbm9yZSBmaWxlOiBodHRwczovL2dpdGh1Yi5jb20vbm9kZWpzL25vZGUvYmxvYi92MTMuMC4xL2xpYi9faHR0cF9hZ2VudC5qcyAqL1xuXG5tb2R1bGUuZXhwb3J0cyA9IG9wdGlvbnMgPT4ge1xuXHRsZXQgc2VydmVybmFtZSA9IG9wdGlvbnMuaG9zdDtcblx0Y29uc3QgaG9zdEhlYWRlciA9IG9wdGlvbnMuaGVhZGVycyAmJiBvcHRpb25zLmhlYWRlcnMuaG9zdDtcblxuXHRpZiAoaG9zdEhlYWRlcikge1xuXHRcdGlmIChob3N0SGVhZGVyLnN0YXJ0c1dpdGgoJ1snKSkge1xuXHRcdFx0Y29uc3QgaW5kZXggPSBob3N0SGVhZGVyLmluZGV4T2YoJ10nKTtcblx0XHRcdGlmIChpbmRleCA9PT0gLTEpIHtcblx0XHRcdFx0c2VydmVybmFtZSA9IGhvc3RIZWFkZXI7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRzZXJ2ZXJuYW1lID0gaG9zdEhlYWRlci5zbGljZSgxLCAtMSk7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdHNlcnZlcm5hbWUgPSBob3N0SGVhZGVyLnNwbGl0KCc6JywgMSlbMF07XG5cdFx0fVxuXHR9XG5cblx0aWYgKG5ldC5pc0lQKHNlcnZlcm5hbWUpKSB7XG5cdFx0cmV0dXJuICcnO1xuXHR9XG5cblx0cmV0dXJuIHNlcnZlcm5hbWU7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcbmNvbnN0IGh0dHAgPSByZXF1aXJlKCdodHRwJyk7XG5jb25zdCBodHRwcyA9IHJlcXVpcmUoJ2h0dHBzJyk7XG5jb25zdCByZXNvbHZlQUxQTiA9IHJlcXVpcmUoJ3Jlc29sdmUtYWxwbicpO1xuY29uc3QgUXVpY2tMUlUgPSByZXF1aXJlKCdxdWljay1scnUnKTtcbmNvbnN0IEh0dHAyQ2xpZW50UmVxdWVzdCA9IHJlcXVpcmUoJy4vY2xpZW50LXJlcXVlc3QnKTtcbmNvbnN0IGNhbGN1bGF0ZVNlcnZlck5hbWUgPSByZXF1aXJlKCcuL3V0aWxzL2NhbGN1bGF0ZS1zZXJ2ZXItbmFtZScpO1xuY29uc3QgdXJsVG9PcHRpb25zID0gcmVxdWlyZSgnLi91dGlscy91cmwtdG8tb3B0aW9ucycpO1xuXG5jb25zdCBjYWNoZSA9IG5ldyBRdWlja0xSVSh7bWF4U2l6ZTogMTAwfSk7XG5jb25zdCBxdWV1ZSA9IG5ldyBNYXAoKTtcblxuY29uc3QgaW5zdGFsbFNvY2tldCA9IChhZ2VudCwgc29ja2V0LCBvcHRpb25zKSA9PiB7XG5cdHNvY2tldC5faHR0cE1lc3NhZ2UgPSB7c2hvdWxkS2VlcEFsaXZlOiB0cnVlfTtcblxuXHRjb25zdCBvbkZyZWUgPSAoKSA9PiB7XG5cdFx0YWdlbnQuZW1pdCgnZnJlZScsIHNvY2tldCwgb3B0aW9ucyk7XG5cdH07XG5cblx0c29ja2V0Lm9uKCdmcmVlJywgb25GcmVlKTtcblxuXHRjb25zdCBvbkNsb3NlID0gKCkgPT4ge1xuXHRcdGFnZW50LnJlbW92ZVNvY2tldChzb2NrZXQsIG9wdGlvbnMpO1xuXHR9O1xuXG5cdHNvY2tldC5vbignY2xvc2UnLCBvbkNsb3NlKTtcblxuXHRjb25zdCBvblJlbW92ZSA9ICgpID0+IHtcblx0XHRhZ2VudC5yZW1vdmVTb2NrZXQoc29ja2V0LCBvcHRpb25zKTtcblx0XHRzb2NrZXQub2ZmKCdjbG9zZScsIG9uQ2xvc2UpO1xuXHRcdHNvY2tldC5vZmYoJ2ZyZWUnLCBvbkZyZWUpO1xuXHRcdHNvY2tldC5vZmYoJ2FnZW50UmVtb3ZlJywgb25SZW1vdmUpO1xuXHR9O1xuXG5cdHNvY2tldC5vbignYWdlbnRSZW1vdmUnLCBvblJlbW92ZSk7XG5cblx0YWdlbnQuZW1pdCgnZnJlZScsIHNvY2tldCwgb3B0aW9ucyk7XG59O1xuXG5jb25zdCByZXNvbHZlUHJvdG9jb2wgPSBhc3luYyBvcHRpb25zID0+IHtcblx0Y29uc3QgbmFtZSA9IGAke29wdGlvbnMuaG9zdH06JHtvcHRpb25zLnBvcnR9OiR7b3B0aW9ucy5BTFBOUHJvdG9jb2xzLnNvcnQoKX1gO1xuXG5cdGlmICghY2FjaGUuaGFzKG5hbWUpKSB7XG5cdFx0aWYgKHF1ZXVlLmhhcyhuYW1lKSkge1xuXHRcdFx0Y29uc3QgcmVzdWx0ID0gYXdhaXQgcXVldWUuZ2V0KG5hbWUpO1xuXHRcdFx0cmV0dXJuIHJlc3VsdC5hbHBuUHJvdG9jb2w7XG5cdFx0fVxuXG5cdFx0Y29uc3Qge3BhdGgsIGFnZW50fSA9IG9wdGlvbnM7XG5cdFx0b3B0aW9ucy5wYXRoID0gb3B0aW9ucy5zb2NrZXRQYXRoO1xuXG5cdFx0Y29uc3QgcmVzdWx0UHJvbWlzZSA9IHJlc29sdmVBTFBOKG9wdGlvbnMpO1xuXHRcdHF1ZXVlLnNldChuYW1lLCByZXN1bHRQcm9taXNlKTtcblxuXHRcdHRyeSB7XG5cdFx0XHRjb25zdCB7c29ja2V0LCBhbHBuUHJvdG9jb2x9ID0gYXdhaXQgcmVzdWx0UHJvbWlzZTtcblx0XHRcdGNhY2hlLnNldChuYW1lLCBhbHBuUHJvdG9jb2wpO1xuXG5cdFx0XHRvcHRpb25zLnBhdGggPSBwYXRoO1xuXG5cdFx0XHRpZiAoYWxwblByb3RvY29sID09PSAnaDInKSB7XG5cdFx0XHRcdC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlanMvbm9kZS9pc3N1ZXMvMzMzNDNcblx0XHRcdFx0c29ja2V0LmRlc3Ryb3koKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGNvbnN0IHtnbG9iYWxBZ2VudH0gPSBodHRwcztcblx0XHRcdFx0Y29uc3QgZGVmYXVsdENyZWF0ZUNvbm5lY3Rpb24gPSBodHRwcy5BZ2VudC5wcm90b3R5cGUuY3JlYXRlQ29ubmVjdGlvbjtcblxuXHRcdFx0XHRpZiAoYWdlbnQpIHtcblx0XHRcdFx0XHRpZiAoYWdlbnQuY3JlYXRlQ29ubmVjdGlvbiA9PT0gZGVmYXVsdENyZWF0ZUNvbm5lY3Rpb24pIHtcblx0XHRcdFx0XHRcdGluc3RhbGxTb2NrZXQoYWdlbnQsIHNvY2tldCwgb3B0aW9ucyk7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdHNvY2tldC5kZXN0cm95KCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9IGVsc2UgaWYgKGdsb2JhbEFnZW50LmNyZWF0ZUNvbm5lY3Rpb24gPT09IGRlZmF1bHRDcmVhdGVDb25uZWN0aW9uKSB7XG5cdFx0XHRcdFx0aW5zdGFsbFNvY2tldChnbG9iYWxBZ2VudCwgc29ja2V0LCBvcHRpb25zKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRzb2NrZXQuZGVzdHJveSgpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdHF1ZXVlLmRlbGV0ZShuYW1lKTtcblxuXHRcdFx0cmV0dXJuIGFscG5Qcm90b2NvbDtcblx0XHR9IGNhdGNoIChlcnJvcikge1xuXHRcdFx0cXVldWUuZGVsZXRlKG5hbWUpO1xuXG5cdFx0XHR0aHJvdyBlcnJvcjtcblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gY2FjaGUuZ2V0KG5hbWUpO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBhc3luYyAoaW5wdXQsIG9wdGlvbnMsIGNhbGxiYWNrKSA9PiB7XG5cdGlmICh0eXBlb2YgaW5wdXQgPT09ICdzdHJpbmcnIHx8IGlucHV0IGluc3RhbmNlb2YgVVJMKSB7XG5cdFx0aW5wdXQgPSB1cmxUb09wdGlvbnMobmV3IFVSTChpbnB1dCkpO1xuXHR9XG5cblx0aWYgKHR5cGVvZiBvcHRpb25zID09PSAnZnVuY3Rpb24nKSB7XG5cdFx0Y2FsbGJhY2sgPSBvcHRpb25zO1xuXHRcdG9wdGlvbnMgPSB1bmRlZmluZWQ7XG5cdH1cblxuXHRvcHRpb25zID0ge1xuXHRcdEFMUE5Qcm90b2NvbHM6IFsnaDInLCAnaHR0cC8xLjEnXSxcblx0XHQuLi5pbnB1dCxcblx0XHQuLi5vcHRpb25zLFxuXHRcdHJlc29sdmVTb2NrZXQ6IHRydWVcblx0fTtcblxuXHRpZiAoIUFycmF5LmlzQXJyYXkob3B0aW9ucy5BTFBOUHJvdG9jb2xzKSB8fCBvcHRpb25zLkFMUE5Qcm90b2NvbHMubGVuZ3RoID09PSAwKSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKCdUaGUgYEFMUE5Qcm90b2NvbHNgIG9wdGlvbiBtdXN0IGJlIGFuIEFycmF5IHdpdGggYXQgbGVhc3Qgb25lIGVudHJ5Jyk7XG5cdH1cblxuXHRvcHRpb25zLnByb3RvY29sID0gb3B0aW9ucy5wcm90b2NvbCB8fCAnaHR0cHM6Jztcblx0Y29uc3QgaXNIdHRwcyA9IG9wdGlvbnMucHJvdG9jb2wgPT09ICdodHRwczonO1xuXG5cdG9wdGlvbnMuaG9zdCA9IG9wdGlvbnMuaG9zdG5hbWUgfHwgb3B0aW9ucy5ob3N0IHx8ICdsb2NhbGhvc3QnO1xuXHRvcHRpb25zLnNlc3Npb24gPSBvcHRpb25zLnRsc1Nlc3Npb247XG5cdG9wdGlvbnMuc2VydmVybmFtZSA9IG9wdGlvbnMuc2VydmVybmFtZSB8fCBjYWxjdWxhdGVTZXJ2ZXJOYW1lKG9wdGlvbnMpO1xuXHRvcHRpb25zLnBvcnQgPSBvcHRpb25zLnBvcnQgfHwgKGlzSHR0cHMgPyA0NDMgOiA4MCk7XG5cdG9wdGlvbnMuX2RlZmF1bHRBZ2VudCA9IGlzSHR0cHMgPyBodHRwcy5nbG9iYWxBZ2VudCA6IGh0dHAuZ2xvYmFsQWdlbnQ7XG5cblx0Y29uc3QgYWdlbnRzID0gb3B0aW9ucy5hZ2VudDtcblxuXHRpZiAoYWdlbnRzKSB7XG5cdFx0aWYgKGFnZW50cy5hZGRSZXF1ZXN0KSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoJ1RoZSBgb3B0aW9ucy5hZ2VudGAgb2JqZWN0IGNhbiBjb250YWluIG9ubHkgYGh0dHBgLCBgaHR0cHNgIG9yIGBodHRwMmAgcHJvcGVydGllcycpO1xuXHRcdH1cblxuXHRcdG9wdGlvbnMuYWdlbnQgPSBhZ2VudHNbaXNIdHRwcyA/ICdodHRwcycgOiAnaHR0cCddO1xuXHR9XG5cblx0aWYgKGlzSHR0cHMpIHtcblx0XHRjb25zdCBwcm90b2NvbCA9IGF3YWl0IHJlc29sdmVQcm90b2NvbChvcHRpb25zKTtcblxuXHRcdGlmIChwcm90b2NvbCA9PT0gJ2gyJykge1xuXHRcdFx0aWYgKGFnZW50cykge1xuXHRcdFx0XHRvcHRpb25zLmFnZW50ID0gYWdlbnRzLmh0dHAyO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gbmV3IEh0dHAyQ2xpZW50UmVxdWVzdChvcHRpb25zLCBjYWxsYmFjayk7XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIGh0dHAucmVxdWVzdChvcHRpb25zLCBjYWxsYmFjayk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cy5wcm90b2NvbENhY2hlID0gY2FjaGU7XG4iLCAiJ3VzZSBzdHJpY3QnO1xuY29uc3QgaHR0cDIgPSByZXF1aXJlKCdodHRwMicpO1xuY29uc3QgYWdlbnQgPSByZXF1aXJlKCcuL2FnZW50Jyk7XG5jb25zdCBDbGllbnRSZXF1ZXN0ID0gcmVxdWlyZSgnLi9jbGllbnQtcmVxdWVzdCcpO1xuY29uc3QgSW5jb21pbmdNZXNzYWdlID0gcmVxdWlyZSgnLi9pbmNvbWluZy1tZXNzYWdlJyk7XG5jb25zdCBhdXRvID0gcmVxdWlyZSgnLi9hdXRvJyk7XG5cbmNvbnN0IHJlcXVlc3QgPSAodXJsLCBvcHRpb25zLCBjYWxsYmFjaykgPT4ge1xuXHRyZXR1cm4gbmV3IENsaWVudFJlcXVlc3QodXJsLCBvcHRpb25zLCBjYWxsYmFjayk7XG59O1xuXG5jb25zdCBnZXQgPSAodXJsLCBvcHRpb25zLCBjYWxsYmFjaykgPT4ge1xuXHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgdW5pY29ybi9wcmV2ZW50LWFiYnJldmlhdGlvbnNcblx0Y29uc3QgcmVxID0gbmV3IENsaWVudFJlcXVlc3QodXJsLCBvcHRpb25zLCBjYWxsYmFjayk7XG5cdHJlcS5lbmQoKTtcblxuXHRyZXR1cm4gcmVxO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG5cdC4uLmh0dHAyLFxuXHRDbGllbnRSZXF1ZXN0LFxuXHRJbmNvbWluZ01lc3NhZ2UsXG5cdC4uLmFnZW50LFxuXHRyZXF1ZXN0LFxuXHRnZXQsXG5cdGF1dG9cbn07XG4iLCAiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5jb25zdCBpc18xID0gcmVxdWlyZShcIkBzaW5kcmVzb3JodXMvaXNcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAoYm9keSkgPT4gaXNfMS5kZWZhdWx0Lm5vZGVTdHJlYW0oYm9keSkgJiYgaXNfMS5kZWZhdWx0LmZ1bmN0aW9uXyhib2R5LmdldEJvdW5kYXJ5KTtcbiIsICJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmNvbnN0IGZzXzEgPSByZXF1aXJlKFwiZnNcIik7XG5jb25zdCB1dGlsXzEgPSByZXF1aXJlKFwidXRpbFwiKTtcbmNvbnN0IGlzXzEgPSByZXF1aXJlKFwiQHNpbmRyZXNvcmh1cy9pc1wiKTtcbmNvbnN0IGlzX2Zvcm1fZGF0YV8xID0gcmVxdWlyZShcIi4vaXMtZm9ybS1kYXRhXCIpO1xuY29uc3Qgc3RhdEFzeW5jID0gdXRpbF8xLnByb21pc2lmeShmc18xLnN0YXQpO1xuZXhwb3J0cy5kZWZhdWx0ID0gYXN5bmMgKGJvZHksIGhlYWRlcnMpID0+IHtcbiAgICBpZiAoaGVhZGVycyAmJiAnY29udGVudC1sZW5ndGgnIGluIGhlYWRlcnMpIHtcbiAgICAgICAgcmV0dXJuIE51bWJlcihoZWFkZXJzWydjb250ZW50LWxlbmd0aCddKTtcbiAgICB9XG4gICAgaWYgKCFib2R5KSB7XG4gICAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICBpZiAoaXNfMS5kZWZhdWx0LnN0cmluZyhib2R5KSkge1xuICAgICAgICByZXR1cm4gQnVmZmVyLmJ5dGVMZW5ndGgoYm9keSk7XG4gICAgfVxuICAgIGlmIChpc18xLmRlZmF1bHQuYnVmZmVyKGJvZHkpKSB7XG4gICAgICAgIHJldHVybiBib2R5Lmxlbmd0aDtcbiAgICB9XG4gICAgaWYgKGlzX2Zvcm1fZGF0YV8xLmRlZmF1bHQoYm9keSkpIHtcbiAgICAgICAgcmV0dXJuIHV0aWxfMS5wcm9taXNpZnkoYm9keS5nZXRMZW5ndGguYmluZChib2R5KSkoKTtcbiAgICB9XG4gICAgaWYgKGJvZHkgaW5zdGFuY2VvZiBmc18xLlJlYWRTdHJlYW0pIHtcbiAgICAgICAgY29uc3QgeyBzaXplIH0gPSBhd2FpdCBzdGF0QXN5bmMoYm9keS5wYXRoKTtcbiAgICAgICAgaWYgKHNpemUgPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHNpemU7XG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWQ7XG59O1xuIiwgIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZnVuY3Rpb24gZGVmYXVsdF8xKGZyb20sIHRvLCBldmVudHMpIHtcbiAgICBjb25zdCBmbnMgPSB7fTtcbiAgICBmb3IgKGNvbnN0IGV2ZW50IG9mIGV2ZW50cykge1xuICAgICAgICBmbnNbZXZlbnRdID0gKC4uLmFyZ3MpID0+IHtcbiAgICAgICAgICAgIHRvLmVtaXQoZXZlbnQsIC4uLmFyZ3MpO1xuICAgICAgICB9O1xuICAgICAgICBmcm9tLm9uKGV2ZW50LCBmbnNbZXZlbnRdKTtcbiAgICB9XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgZm9yIChjb25zdCBldmVudCBvZiBldmVudHMpIHtcbiAgICAgICAgICAgIGZyb20ub2ZmKGV2ZW50LCBmbnNbZXZlbnRdKTtcbiAgICAgICAgfVxuICAgIH07XG59XG5leHBvcnRzLmRlZmF1bHQgPSBkZWZhdWx0XzE7XG4iLCAiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG4vLyBXaGVuIGF0dGFjaGluZyBsaXN0ZW5lcnMsIGl0J3MgdmVyeSBlYXN5IHRvIGZvcmdldCBhYm91dCB0aGVtLlxuLy8gRXNwZWNpYWxseSBpZiB5b3UgZG8gZXJyb3IgaGFuZGxpbmcgYW5kIHNldCB0aW1lb3V0cy5cbi8vIFNvIGluc3RlYWQgb2YgY2hlY2tpbmcgaWYgaXQncyBwcm9wZXIgdG8gdGhyb3cgYW4gZXJyb3Igb24gZXZlcnkgdGltZW91dCBldmVyLFxuLy8gdXNlIHRoaXMgc2ltcGxlIHRvb2wgd2hpY2ggd2lsbCByZW1vdmUgYWxsIGxpc3RlbmVycyB5b3UgaGF2ZSBhdHRhY2hlZC5cbmV4cG9ydHMuZGVmYXVsdCA9ICgpID0+IHtcbiAgICBjb25zdCBoYW5kbGVycyA9IFtdO1xuICAgIHJldHVybiB7XG4gICAgICAgIG9uY2Uob3JpZ2luLCBldmVudCwgZm4pIHtcbiAgICAgICAgICAgIG9yaWdpbi5vbmNlKGV2ZW50LCBmbik7XG4gICAgICAgICAgICBoYW5kbGVycy5wdXNoKHsgb3JpZ2luLCBldmVudCwgZm4gfSk7XG4gICAgICAgIH0sXG4gICAgICAgIHVuaGFuZGxlQWxsKCkge1xuICAgICAgICAgICAgZm9yIChjb25zdCBoYW5kbGVyIG9mIGhhbmRsZXJzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBvcmlnaW4sIGV2ZW50LCBmbiB9ID0gaGFuZGxlcjtcbiAgICAgICAgICAgICAgICBvcmlnaW4ucmVtb3ZlTGlzdGVuZXIoZXZlbnQsIGZuKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGhhbmRsZXJzLmxlbmd0aCA9IDA7XG4gICAgICAgIH1cbiAgICB9O1xufTtcbiIsICJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuVGltZW91dEVycm9yID0gdm9pZCAwO1xuY29uc3QgbmV0ID0gcmVxdWlyZShcIm5ldFwiKTtcbmNvbnN0IHVuaGFuZGxlXzEgPSByZXF1aXJlKFwiLi91bmhhbmRsZVwiKTtcbmNvbnN0IHJlZW50cnkgPSBTeW1ib2woJ3JlZW50cnknKTtcbmNvbnN0IG5vb3AgPSAoKSA9PiB7IH07XG5jbGFzcyBUaW1lb3V0RXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gICAgY29uc3RydWN0b3IodGhyZXNob2xkLCBldmVudCkge1xuICAgICAgICBzdXBlcihgVGltZW91dCBhd2FpdGluZyAnJHtldmVudH0nIGZvciAke3RocmVzaG9sZH1tc2ApO1xuICAgICAgICB0aGlzLmV2ZW50ID0gZXZlbnQ7XG4gICAgICAgIHRoaXMubmFtZSA9ICdUaW1lb3V0RXJyb3InO1xuICAgICAgICB0aGlzLmNvZGUgPSAnRVRJTUVET1VUJztcbiAgICB9XG59XG5leHBvcnRzLlRpbWVvdXRFcnJvciA9IFRpbWVvdXRFcnJvcjtcbmV4cG9ydHMuZGVmYXVsdCA9IChyZXF1ZXN0LCBkZWxheXMsIG9wdGlvbnMpID0+IHtcbiAgICBpZiAocmVlbnRyeSBpbiByZXF1ZXN0KSB7XG4gICAgICAgIHJldHVybiBub29wO1xuICAgIH1cbiAgICByZXF1ZXN0W3JlZW50cnldID0gdHJ1ZTtcbiAgICBjb25zdCBjYW5jZWxlcnMgPSBbXTtcbiAgICBjb25zdCB7IG9uY2UsIHVuaGFuZGxlQWxsIH0gPSB1bmhhbmRsZV8xLmRlZmF1bHQoKTtcbiAgICBjb25zdCBhZGRUaW1lb3V0ID0gKGRlbGF5LCBjYWxsYmFjaywgZXZlbnQpID0+IHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBjb25zdCB0aW1lb3V0ID0gc2V0VGltZW91dChjYWxsYmFjaywgZGVsYXksIGRlbGF5LCBldmVudCk7XG4gICAgICAgIChfYSA9IHRpbWVvdXQudW5yZWYpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jYWxsKHRpbWVvdXQpO1xuICAgICAgICBjb25zdCBjYW5jZWwgPSAoKSA9PiB7XG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dCk7XG4gICAgICAgIH07XG4gICAgICAgIGNhbmNlbGVycy5wdXNoKGNhbmNlbCk7XG4gICAgICAgIHJldHVybiBjYW5jZWw7XG4gICAgfTtcbiAgICBjb25zdCB7IGhvc3QsIGhvc3RuYW1lIH0gPSBvcHRpb25zO1xuICAgIGNvbnN0IHRpbWVvdXRIYW5kbGVyID0gKGRlbGF5LCBldmVudCkgPT4ge1xuICAgICAgICByZXF1ZXN0LmRlc3Ryb3kobmV3IFRpbWVvdXRFcnJvcihkZWxheSwgZXZlbnQpKTtcbiAgICB9O1xuICAgIGNvbnN0IGNhbmNlbFRpbWVvdXRzID0gKCkgPT4ge1xuICAgICAgICBmb3IgKGNvbnN0IGNhbmNlbCBvZiBjYW5jZWxlcnMpIHtcbiAgICAgICAgICAgIGNhbmNlbCgpO1xuICAgICAgICB9XG4gICAgICAgIHVuaGFuZGxlQWxsKCk7XG4gICAgfTtcbiAgICByZXF1ZXN0Lm9uY2UoJ2Vycm9yJywgZXJyb3IgPT4ge1xuICAgICAgICBjYW5jZWxUaW1lb3V0cygpO1xuICAgICAgICAvLyBTYXZlIG9yaWdpbmFsIGJlaGF2aW9yXG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICAgIGlmIChyZXF1ZXN0Lmxpc3RlbmVyQ291bnQoJ2Vycm9yJykgPT09IDApIHtcbiAgICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgcmVxdWVzdC5vbmNlKCdjbG9zZScsIGNhbmNlbFRpbWVvdXRzKTtcbiAgICBvbmNlKHJlcXVlc3QsICdyZXNwb25zZScsIChyZXNwb25zZSkgPT4ge1xuICAgICAgICBvbmNlKHJlc3BvbnNlLCAnZW5kJywgY2FuY2VsVGltZW91dHMpO1xuICAgIH0pO1xuICAgIGlmICh0eXBlb2YgZGVsYXlzLnJlcXVlc3QgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIGFkZFRpbWVvdXQoZGVsYXlzLnJlcXVlc3QsIHRpbWVvdXRIYW5kbGVyLCAncmVxdWVzdCcpO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIGRlbGF5cy5zb2NrZXQgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIGNvbnN0IHNvY2tldFRpbWVvdXRIYW5kbGVyID0gKCkgPT4ge1xuICAgICAgICAgICAgdGltZW91dEhhbmRsZXIoZGVsYXlzLnNvY2tldCwgJ3NvY2tldCcpO1xuICAgICAgICB9O1xuICAgICAgICByZXF1ZXN0LnNldFRpbWVvdXQoZGVsYXlzLnNvY2tldCwgc29ja2V0VGltZW91dEhhbmRsZXIpO1xuICAgICAgICAvLyBgcmVxdWVzdC5zZXRUaW1lb3V0KDApYCBjYXVzZXMgYSBtZW1vcnkgbGVhay5cbiAgICAgICAgLy8gV2UgY2FuIGp1c3QgcmVtb3ZlIHRoZSBsaXN0ZW5lciBhbmQgZm9yZ2V0IGFib3V0IHRoZSB0aW1lciAtIGl0J3MgdW5yZWZmZWQuXG4gICAgICAgIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vc2luZHJlc29yaHVzL2dvdC9pc3N1ZXMvNjkwXG4gICAgICAgIGNhbmNlbGVycy5wdXNoKCgpID0+IHtcbiAgICAgICAgICAgIHJlcXVlc3QucmVtb3ZlTGlzdGVuZXIoJ3RpbWVvdXQnLCBzb2NrZXRUaW1lb3V0SGFuZGxlcik7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBvbmNlKHJlcXVlc3QsICdzb2NrZXQnLCAoc29ja2V0KSA9PiB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgY29uc3QgeyBzb2NrZXRQYXRoIH0gPSByZXF1ZXN0O1xuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dDogaGFyZCB0byB0ZXN0ICovXG4gICAgICAgIGlmIChzb2NrZXQuY29ubmVjdGluZykge1xuICAgICAgICAgICAgY29uc3QgaGFzUGF0aCA9IEJvb2xlYW4oc29ja2V0UGF0aCAhPT0gbnVsbCAmJiBzb2NrZXRQYXRoICE9PSB2b2lkIDAgPyBzb2NrZXRQYXRoIDogbmV0LmlzSVAoKF9hID0gaG9zdG5hbWUgIT09IG51bGwgJiYgaG9zdG5hbWUgIT09IHZvaWQgMCA/IGhvc3RuYW1lIDogaG9zdCkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogJycpICE9PSAwKTtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgZGVsYXlzLmxvb2t1cCAhPT0gJ3VuZGVmaW5lZCcgJiYgIWhhc1BhdGggJiYgdHlwZW9mIHNvY2tldC5hZGRyZXNzKCkuYWRkcmVzcyA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjYW5jZWxUaW1lb3V0ID0gYWRkVGltZW91dChkZWxheXMubG9va3VwLCB0aW1lb3V0SGFuZGxlciwgJ2xvb2t1cCcpO1xuICAgICAgICAgICAgICAgIG9uY2Uoc29ja2V0LCAnbG9va3VwJywgY2FuY2VsVGltZW91dCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodHlwZW9mIGRlbGF5cy5jb25uZWN0ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRpbWVDb25uZWN0ID0gKCkgPT4gYWRkVGltZW91dChkZWxheXMuY29ubmVjdCwgdGltZW91dEhhbmRsZXIsICdjb25uZWN0Jyk7XG4gICAgICAgICAgICAgICAgaWYgKGhhc1BhdGgpIHtcbiAgICAgICAgICAgICAgICAgICAgb25jZShzb2NrZXQsICdjb25uZWN0JywgdGltZUNvbm5lY3QoKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBvbmNlKHNvY2tldCwgJ2xvb2t1cCcsIChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVycm9yID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25jZShzb2NrZXQsICdjb25uZWN0JywgdGltZUNvbm5lY3QoKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0eXBlb2YgZGVsYXlzLnNlY3VyZUNvbm5lY3QgIT09ICd1bmRlZmluZWQnICYmIG9wdGlvbnMucHJvdG9jb2wgPT09ICdodHRwczonKSB7XG4gICAgICAgICAgICAgICAgb25jZShzb2NrZXQsICdjb25uZWN0JywgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjYW5jZWxUaW1lb3V0ID0gYWRkVGltZW91dChkZWxheXMuc2VjdXJlQ29ubmVjdCwgdGltZW91dEhhbmRsZXIsICdzZWN1cmVDb25uZWN0Jyk7XG4gICAgICAgICAgICAgICAgICAgIG9uY2Uoc29ja2V0LCAnc2VjdXJlQ29ubmVjdCcsIGNhbmNlbFRpbWVvdXQpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgZGVsYXlzLnNlbmQgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICBjb25zdCB0aW1lUmVxdWVzdCA9ICgpID0+IGFkZFRpbWVvdXQoZGVsYXlzLnNlbmQsIHRpbWVvdXRIYW5kbGVyLCAnc2VuZCcpO1xuICAgICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQ6IGhhcmQgdG8gdGVzdCAqL1xuICAgICAgICAgICAgaWYgKHNvY2tldC5jb25uZWN0aW5nKSB7XG4gICAgICAgICAgICAgICAgb25jZShzb2NrZXQsICdjb25uZWN0JywgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBvbmNlKHJlcXVlc3QsICd1cGxvYWQtY29tcGxldGUnLCB0aW1lUmVxdWVzdCgpKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIG9uY2UocmVxdWVzdCwgJ3VwbG9hZC1jb21wbGV0ZScsIHRpbWVSZXF1ZXN0KCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSk7XG4gICAgaWYgKHR5cGVvZiBkZWxheXMucmVzcG9uc2UgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIG9uY2UocmVxdWVzdCwgJ3VwbG9hZC1jb21wbGV0ZScsICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNhbmNlbFRpbWVvdXQgPSBhZGRUaW1lb3V0KGRlbGF5cy5yZXNwb25zZSwgdGltZW91dEhhbmRsZXIsICdyZXNwb25zZScpO1xuICAgICAgICAgICAgb25jZShyZXF1ZXN0LCAncmVzcG9uc2UnLCBjYW5jZWxUaW1lb3V0KTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBjYW5jZWxUaW1lb3V0cztcbn07XG4iLCAiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5jb25zdCBpc18xID0gcmVxdWlyZShcIkBzaW5kcmVzb3JodXMvaXNcIik7XG5leHBvcnRzLmRlZmF1bHQgPSAodXJsKSA9PiB7XG4gICAgLy8gQ2FzdCB0byBVUkxcbiAgICB1cmwgPSB1cmw7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAgICAgcHJvdG9jb2w6IHVybC5wcm90b2NvbCxcbiAgICAgICAgaG9zdG5hbWU6IGlzXzEuZGVmYXVsdC5zdHJpbmcodXJsLmhvc3RuYW1lKSAmJiB1cmwuaG9zdG5hbWUuc3RhcnRzV2l0aCgnWycpID8gdXJsLmhvc3RuYW1lLnNsaWNlKDEsIC0xKSA6IHVybC5ob3N0bmFtZSxcbiAgICAgICAgaG9zdDogdXJsLmhvc3QsXG4gICAgICAgIGhhc2g6IHVybC5oYXNoLFxuICAgICAgICBzZWFyY2g6IHVybC5zZWFyY2gsXG4gICAgICAgIHBhdGhuYW1lOiB1cmwucGF0aG5hbWUsXG4gICAgICAgIGhyZWY6IHVybC5ocmVmLFxuICAgICAgICBwYXRoOiBgJHt1cmwucGF0aG5hbWUgfHwgJyd9JHt1cmwuc2VhcmNoIHx8ICcnfWBcbiAgICB9O1xuICAgIGlmIChpc18xLmRlZmF1bHQuc3RyaW5nKHVybC5wb3J0KSAmJiB1cmwucG9ydC5sZW5ndGggPiAwKSB7XG4gICAgICAgIG9wdGlvbnMucG9ydCA9IE51bWJlcih1cmwucG9ydCk7XG4gICAgfVxuICAgIGlmICh1cmwudXNlcm5hbWUgfHwgdXJsLnBhc3N3b3JkKSB7XG4gICAgICAgIG9wdGlvbnMuYXV0aCA9IGAke3VybC51c2VybmFtZSB8fCAnJ306JHt1cmwucGFzc3dvcmQgfHwgJyd9YDtcbiAgICB9XG4gICAgcmV0dXJuIG9wdGlvbnM7XG59O1xuIiwgIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuLyogaXN0YW5idWwgaWdub3JlIGZpbGU6IGRlcHJlY2F0ZWQgKi9cbmNvbnN0IHVybF8xID0gcmVxdWlyZShcInVybFwiKTtcbmNvbnN0IGtleXMgPSBbXG4gICAgJ3Byb3RvY29sJyxcbiAgICAnaG9zdCcsXG4gICAgJ2hvc3RuYW1lJyxcbiAgICAncG9ydCcsXG4gICAgJ3BhdGhuYW1lJyxcbiAgICAnc2VhcmNoJ1xuXTtcbmV4cG9ydHMuZGVmYXVsdCA9IChvcmlnaW4sIG9wdGlvbnMpID0+IHtcbiAgICB2YXIgX2EsIF9iO1xuICAgIGlmIChvcHRpb25zLnBhdGgpIHtcbiAgICAgICAgaWYgKG9wdGlvbnMucGF0aG5hbWUpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1BhcmFtZXRlcnMgYHBhdGhgIGFuZCBgcGF0aG5hbWVgIGFyZSBtdXR1YWxseSBleGNsdXNpdmUuJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9wdGlvbnMuc2VhcmNoKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdQYXJhbWV0ZXJzIGBwYXRoYCBhbmQgYHNlYXJjaGAgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZS4nKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob3B0aW9ucy5zZWFyY2hQYXJhbXMpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1BhcmFtZXRlcnMgYHBhdGhgIGFuZCBgc2VhcmNoUGFyYW1zYCBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlLicpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChvcHRpb25zLnNlYXJjaCAmJiBvcHRpb25zLnNlYXJjaFBhcmFtcykge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdQYXJhbWV0ZXJzIGBzZWFyY2hgIGFuZCBgc2VhcmNoUGFyYW1zYCBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlLicpO1xuICAgIH1cbiAgICBpZiAoIW9yaWdpbikge1xuICAgICAgICBpZiAoIW9wdGlvbnMucHJvdG9jb2wpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ05vIFVSTCBwcm90b2NvbCBzcGVjaWZpZWQnKTtcbiAgICAgICAgfVxuICAgICAgICBvcmlnaW4gPSBgJHtvcHRpb25zLnByb3RvY29sfS8vJHsoX2IgPSAoX2EgPSBvcHRpb25zLmhvc3RuYW1lKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBvcHRpb25zLmhvc3QpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6ICcnfWA7XG4gICAgfVxuICAgIGNvbnN0IHVybCA9IG5ldyB1cmxfMS5VUkwob3JpZ2luKTtcbiAgICBpZiAob3B0aW9ucy5wYXRoKSB7XG4gICAgICAgIGNvbnN0IHNlYXJjaEluZGV4ID0gb3B0aW9ucy5wYXRoLmluZGV4T2YoJz8nKTtcbiAgICAgICAgaWYgKHNlYXJjaEluZGV4ID09PSAtMSkge1xuICAgICAgICAgICAgb3B0aW9ucy5wYXRobmFtZSA9IG9wdGlvbnMucGF0aDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIG9wdGlvbnMucGF0aG5hbWUgPSBvcHRpb25zLnBhdGguc2xpY2UoMCwgc2VhcmNoSW5kZXgpO1xuICAgICAgICAgICAgb3B0aW9ucy5zZWFyY2ggPSBvcHRpb25zLnBhdGguc2xpY2Uoc2VhcmNoSW5kZXggKyAxKTtcbiAgICAgICAgfVxuICAgICAgICBkZWxldGUgb3B0aW9ucy5wYXRoO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzKSB7XG4gICAgICAgIGlmIChvcHRpb25zW2tleV0pIHtcbiAgICAgICAgICAgIHVybFtrZXldID0gb3B0aW9uc1trZXldLnRvU3RyaW5nKCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHVybDtcbn07XG4iLCAiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5jbGFzcyBXZWFrYWJsZU1hcCB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMud2Vha01hcCA9IG5ldyBXZWFrTWFwKCk7XG4gICAgICAgIHRoaXMubWFwID0gbmV3IE1hcCgpO1xuICAgIH1cbiAgICBzZXQoa2V5LCB2YWx1ZSkge1xuICAgICAgICBpZiAodHlwZW9mIGtleSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgIHRoaXMud2Vha01hcC5zZXQoa2V5LCB2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm1hcC5zZXQoa2V5LCB2YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZ2V0KGtleSkge1xuICAgICAgICBpZiAodHlwZW9mIGtleSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLndlYWtNYXAuZ2V0KGtleSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMubWFwLmdldChrZXkpO1xuICAgIH1cbiAgICBoYXMoa2V5KSB7XG4gICAgICAgIGlmICh0eXBlb2Yga2V5ID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMud2Vha01hcC5oYXMoa2V5KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5tYXAuaGFzKGtleSk7XG4gICAgfVxufVxuZXhwb3J0cy5kZWZhdWx0ID0gV2Vha2FibGVNYXA7XG4iLCAiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG4vLyBUT0RPOiBVcGRhdGUgaHR0cHM6Ly9naXRodWIuY29tL3NpbmRyZXNvcmh1cy9nZXQtc3RyZWFtXG5jb25zdCBnZXRCdWZmZXIgPSBhc3luYyAoc3RyZWFtKSA9PiB7XG4gICAgY29uc3QgY2h1bmtzID0gW107XG4gICAgbGV0IGxlbmd0aCA9IDA7XG4gICAgZm9yIGF3YWl0IChjb25zdCBjaHVuayBvZiBzdHJlYW0pIHtcbiAgICAgICAgY2h1bmtzLnB1c2goY2h1bmspO1xuICAgICAgICBsZW5ndGggKz0gQnVmZmVyLmJ5dGVMZW5ndGgoY2h1bmspO1xuICAgIH1cbiAgICBpZiAoQnVmZmVyLmlzQnVmZmVyKGNodW5rc1swXSkpIHtcbiAgICAgICAgcmV0dXJuIEJ1ZmZlci5jb25jYXQoY2h1bmtzLCBsZW5ndGgpO1xuICAgIH1cbiAgICByZXR1cm4gQnVmZmVyLmZyb20oY2h1bmtzLmpvaW4oJycpKTtcbn07XG5leHBvcnRzLmRlZmF1bHQgPSBnZXRCdWZmZXI7XG4iLCAiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLmRuc0xvb2t1cElwVmVyc2lvblRvRmFtaWx5ID0gZXhwb3J0cy5pc0Ruc0xvb2t1cElwVmVyc2lvbiA9IHZvaWQgMDtcbmNvbnN0IGNvbnZlcnNpb25UYWJsZSA9IHtcbiAgICBhdXRvOiAwLFxuICAgIGlwdjQ6IDQsXG4gICAgaXB2NjogNlxufTtcbmV4cG9ydHMuaXNEbnNMb29rdXBJcFZlcnNpb24gPSAodmFsdWUpID0+IHtcbiAgICByZXR1cm4gdmFsdWUgaW4gY29udmVyc2lvblRhYmxlO1xufTtcbmV4cG9ydHMuZG5zTG9va3VwSXBWZXJzaW9uVG9GYW1pbHkgPSAoZG5zTG9va3VwSXBWZXJzaW9uKSA9PiB7XG4gICAgaWYgKGV4cG9ydHMuaXNEbnNMb29rdXBJcFZlcnNpb24oZG5zTG9va3VwSXBWZXJzaW9uKSkge1xuICAgICAgICByZXR1cm4gY29udmVyc2lvblRhYmxlW2Ruc0xvb2t1cElwVmVyc2lvbl07XG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBETlMgbG9va3VwIElQIHZlcnNpb24nKTtcbn07XG4iLCAiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLmlzUmVzcG9uc2VPayA9IHZvaWQgMDtcbmV4cG9ydHMuaXNSZXNwb25zZU9rID0gKHJlc3BvbnNlKSA9PiB7XG4gICAgY29uc3QgeyBzdGF0dXNDb2RlIH0gPSByZXNwb25zZTtcbiAgICBjb25zdCBsaW1pdFN0YXR1c0NvZGUgPSByZXNwb25zZS5yZXF1ZXN0Lm9wdGlvbnMuZm9sbG93UmVkaXJlY3QgPyAyOTkgOiAzOTk7XG4gICAgcmV0dXJuIChzdGF0dXNDb2RlID49IDIwMCAmJiBzdGF0dXNDb2RlIDw9IGxpbWl0U3RhdHVzQ29kZSkgfHwgc3RhdHVzQ29kZSA9PT0gMzA0O1xufTtcbiIsICJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmNvbnN0IGFscmVhZHlXYXJuZWQgPSBuZXcgU2V0KCk7XG5leHBvcnRzLmRlZmF1bHQgPSAobWVzc2FnZSkgPT4ge1xuICAgIGlmIChhbHJlYWR5V2FybmVkLmhhcyhtZXNzYWdlKSkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGFscmVhZHlXYXJuZWQuYWRkKG1lc3NhZ2UpO1xuICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgTWlzc2luZyB0eXBlcy5cbiAgICBwcm9jZXNzLmVtaXRXYXJuaW5nKGBHb3Q6ICR7bWVzc2FnZX1gLCB7XG4gICAgICAgIHR5cGU6ICdEZXByZWNhdGlvbldhcm5pbmcnXG4gICAgfSk7XG59O1xuIiwgIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuY29uc3QgaXNfMSA9IHJlcXVpcmUoXCJAc2luZHJlc29yaHVzL2lzXCIpO1xuY29uc3Qgbm9ybWFsaXplQXJndW1lbnRzID0gKG9wdGlvbnMsIGRlZmF1bHRzKSA9PiB7XG4gICAgaWYgKGlzXzEuZGVmYXVsdC5udWxsXyhvcHRpb25zLmVuY29kaW5nKSkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdUbyBnZXQgYSBCdWZmZXIsIHNldCBgb3B0aW9ucy5yZXNwb25zZVR5cGVgIHRvIGBidWZmZXJgIGluc3RlYWQnKTtcbiAgICB9XG4gICAgaXNfMS5hc3NlcnQuYW55KFtpc18xLmRlZmF1bHQuc3RyaW5nLCBpc18xLmRlZmF1bHQudW5kZWZpbmVkXSwgb3B0aW9ucy5lbmNvZGluZyk7XG4gICAgaXNfMS5hc3NlcnQuYW55KFtpc18xLmRlZmF1bHQuYm9vbGVhbiwgaXNfMS5kZWZhdWx0LnVuZGVmaW5lZF0sIG9wdGlvbnMucmVzb2x2ZUJvZHlPbmx5KTtcbiAgICBpc18xLmFzc2VydC5hbnkoW2lzXzEuZGVmYXVsdC5ib29sZWFuLCBpc18xLmRlZmF1bHQudW5kZWZpbmVkXSwgb3B0aW9ucy5tZXRob2RSZXdyaXRpbmcpO1xuICAgIGlzXzEuYXNzZXJ0LmFueShbaXNfMS5kZWZhdWx0LmJvb2xlYW4sIGlzXzEuZGVmYXVsdC51bmRlZmluZWRdLCBvcHRpb25zLmlzU3RyZWFtKTtcbiAgICBpc18xLmFzc2VydC5hbnkoW2lzXzEuZGVmYXVsdC5zdHJpbmcsIGlzXzEuZGVmYXVsdC51bmRlZmluZWRdLCBvcHRpb25zLnJlc3BvbnNlVHlwZSk7XG4gICAgLy8gYG9wdGlvbnMucmVzcG9uc2VUeXBlYFxuICAgIGlmIChvcHRpb25zLnJlc3BvbnNlVHlwZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIG9wdGlvbnMucmVzcG9uc2VUeXBlID0gJ3RleHQnO1xuICAgIH1cbiAgICAvLyBgb3B0aW9ucy5yZXRyeWBcbiAgICBjb25zdCB7IHJldHJ5IH0gPSBvcHRpb25zO1xuICAgIGlmIChkZWZhdWx0cykge1xuICAgICAgICBvcHRpb25zLnJldHJ5ID0geyAuLi5kZWZhdWx0cy5yZXRyeSB9O1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgb3B0aW9ucy5yZXRyeSA9IHtcbiAgICAgICAgICAgIGNhbGN1bGF0ZURlbGF5OiByZXRyeU9iamVjdCA9PiByZXRyeU9iamVjdC5jb21wdXRlZFZhbHVlLFxuICAgICAgICAgICAgbGltaXQ6IDAsXG4gICAgICAgICAgICBtZXRob2RzOiBbXSxcbiAgICAgICAgICAgIHN0YXR1c0NvZGVzOiBbXSxcbiAgICAgICAgICAgIGVycm9yQ29kZXM6IFtdLFxuICAgICAgICAgICAgbWF4UmV0cnlBZnRlcjogdW5kZWZpbmVkXG4gICAgICAgIH07XG4gICAgfVxuICAgIGlmIChpc18xLmRlZmF1bHQub2JqZWN0KHJldHJ5KSkge1xuICAgICAgICBvcHRpb25zLnJldHJ5ID0ge1xuICAgICAgICAgICAgLi4ub3B0aW9ucy5yZXRyeSxcbiAgICAgICAgICAgIC4uLnJldHJ5XG4gICAgICAgIH07XG4gICAgICAgIG9wdGlvbnMucmV0cnkubWV0aG9kcyA9IFsuLi5uZXcgU2V0KG9wdGlvbnMucmV0cnkubWV0aG9kcy5tYXAobWV0aG9kID0+IG1ldGhvZC50b1VwcGVyQ2FzZSgpKSldO1xuICAgICAgICBvcHRpb25zLnJldHJ5LnN0YXR1c0NvZGVzID0gWy4uLm5ldyBTZXQob3B0aW9ucy5yZXRyeS5zdGF0dXNDb2RlcyldO1xuICAgICAgICBvcHRpb25zLnJldHJ5LmVycm9yQ29kZXMgPSBbLi4ubmV3IFNldChvcHRpb25zLnJldHJ5LmVycm9yQ29kZXMpXTtcbiAgICB9XG4gICAgZWxzZSBpZiAoaXNfMS5kZWZhdWx0Lm51bWJlcihyZXRyeSkpIHtcbiAgICAgICAgb3B0aW9ucy5yZXRyeS5saW1pdCA9IHJldHJ5O1xuICAgIH1cbiAgICBpZiAoaXNfMS5kZWZhdWx0LnVuZGVmaW5lZChvcHRpb25zLnJldHJ5Lm1heFJldHJ5QWZ0ZXIpKSB7XG4gICAgICAgIG9wdGlvbnMucmV0cnkubWF4UmV0cnlBZnRlciA9IE1hdGgubWluKFxuICAgICAgICAvLyBUeXBlU2NyaXB0IGlzIG5vdCBzbWFydCBlbm91Z2ggdG8gaGFuZGxlIGAuZmlsdGVyKHggPT4gaXMubnVtYmVyKHgpKWAuXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSB1bmljb3JuL25vLWZuLXJlZmVyZW5jZS1pbi1pdGVyYXRvclxuICAgICAgICAuLi5bb3B0aW9ucy50aW1lb3V0LnJlcXVlc3QsIG9wdGlvbnMudGltZW91dC5jb25uZWN0XS5maWx0ZXIoaXNfMS5kZWZhdWx0Lm51bWJlcikpO1xuICAgIH1cbiAgICAvLyBgb3B0aW9ucy5wYWdpbmF0aW9uYFxuICAgIGlmIChpc18xLmRlZmF1bHQub2JqZWN0KG9wdGlvbnMucGFnaW5hdGlvbikpIHtcbiAgICAgICAgaWYgKGRlZmF1bHRzKSB7XG4gICAgICAgICAgICBvcHRpb25zLnBhZ2luYXRpb24gPSB7XG4gICAgICAgICAgICAgICAgLi4uZGVmYXVsdHMucGFnaW5hdGlvbixcbiAgICAgICAgICAgICAgICAuLi5vcHRpb25zLnBhZ2luYXRpb25cbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgeyBwYWdpbmF0aW9uIH0gPSBvcHRpb25zO1xuICAgICAgICBpZiAoIWlzXzEuZGVmYXVsdC5mdW5jdGlvbl8ocGFnaW5hdGlvbi50cmFuc2Zvcm0pKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2BvcHRpb25zLnBhZ2luYXRpb24udHJhbnNmb3JtYCBtdXN0IGJlIGltcGxlbWVudGVkJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpc18xLmRlZmF1bHQuZnVuY3Rpb25fKHBhZ2luYXRpb24uc2hvdWxkQ29udGludWUpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2BvcHRpb25zLnBhZ2luYXRpb24uc2hvdWxkQ29udGludWVgIG11c3QgYmUgaW1wbGVtZW50ZWQnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWlzXzEuZGVmYXVsdC5mdW5jdGlvbl8ocGFnaW5hdGlvbi5maWx0ZXIpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdgb3B0aW9ucy5wYWdpbmF0aW9uLmZpbHRlcmAgbXVzdCBiZSBpbXBsZW1lbnRlZCcpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghaXNfMS5kZWZhdWx0LmZ1bmN0aW9uXyhwYWdpbmF0aW9uLnBhZ2luYXRlKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdgb3B0aW9ucy5wYWdpbmF0aW9uLnBhZ2luYXRlYCBtdXN0IGJlIGltcGxlbWVudGVkJyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gSlNPTiBtb2RlXG4gICAgaWYgKG9wdGlvbnMucmVzcG9uc2VUeXBlID09PSAnanNvbicgJiYgb3B0aW9ucy5oZWFkZXJzLmFjY2VwdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIG9wdGlvbnMuaGVhZGVycy5hY2NlcHQgPSAnYXBwbGljYXRpb24vanNvbic7XG4gICAgfVxuICAgIHJldHVybiBvcHRpb25zO1xufTtcbmV4cG9ydHMuZGVmYXVsdCA9IG5vcm1hbGl6ZUFyZ3VtZW50cztcbiIsICJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMucmV0cnlBZnRlclN0YXR1c0NvZGVzID0gdm9pZCAwO1xuZXhwb3J0cy5yZXRyeUFmdGVyU3RhdHVzQ29kZXMgPSBuZXcgU2V0KFs0MTMsIDQyOSwgNTAzXSk7XG5jb25zdCBjYWxjdWxhdGVSZXRyeURlbGF5ID0gKHsgYXR0ZW1wdENvdW50LCByZXRyeU9wdGlvbnMsIGVycm9yLCByZXRyeUFmdGVyIH0pID0+IHtcbiAgICBpZiAoYXR0ZW1wdENvdW50ID4gcmV0cnlPcHRpb25zLmxpbWl0KSB7XG4gICAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICBjb25zdCBoYXNNZXRob2QgPSByZXRyeU9wdGlvbnMubWV0aG9kcy5pbmNsdWRlcyhlcnJvci5vcHRpb25zLm1ldGhvZCk7XG4gICAgY29uc3QgaGFzRXJyb3JDb2RlID0gcmV0cnlPcHRpb25zLmVycm9yQ29kZXMuaW5jbHVkZXMoZXJyb3IuY29kZSk7XG4gICAgY29uc3QgaGFzU3RhdHVzQ29kZSA9IGVycm9yLnJlc3BvbnNlICYmIHJldHJ5T3B0aW9ucy5zdGF0dXNDb2Rlcy5pbmNsdWRlcyhlcnJvci5yZXNwb25zZS5zdGF0dXNDb2RlKTtcbiAgICBpZiAoIWhhc01ldGhvZCB8fCAoIWhhc0Vycm9yQ29kZSAmJiAhaGFzU3RhdHVzQ29kZSkpIHtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICAgIGlmIChlcnJvci5yZXNwb25zZSkge1xuICAgICAgICBpZiAocmV0cnlBZnRlcikge1xuICAgICAgICAgICAgaWYgKHJldHJ5T3B0aW9ucy5tYXhSZXRyeUFmdGVyID09PSB1bmRlZmluZWQgfHwgcmV0cnlBZnRlciA+IHJldHJ5T3B0aW9ucy5tYXhSZXRyeUFmdGVyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcmV0cnlBZnRlcjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXJyb3IucmVzcG9uc2Uuc3RhdHVzQ29kZSA9PT0gNDEzKSB7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBub2lzZSA9IE1hdGgucmFuZG9tKCkgKiAxMDA7XG4gICAgcmV0dXJuICgoMiAqKiAoYXR0ZW1wdENvdW50IC0gMSkpICogMTAwMCkgKyBub2lzZTtcbn07XG5leHBvcnRzLmRlZmF1bHQgPSBjYWxjdWxhdGVSZXRyeURlbGF5O1xuIiwgIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5VbnN1cHBvcnRlZFByb3RvY29sRXJyb3IgPSBleHBvcnRzLlJlYWRFcnJvciA9IGV4cG9ydHMuVGltZW91dEVycm9yID0gZXhwb3J0cy5VcGxvYWRFcnJvciA9IGV4cG9ydHMuQ2FjaGVFcnJvciA9IGV4cG9ydHMuSFRUUEVycm9yID0gZXhwb3J0cy5NYXhSZWRpcmVjdHNFcnJvciA9IGV4cG9ydHMuUmVxdWVzdEVycm9yID0gZXhwb3J0cy5zZXROb25FbnVtZXJhYmxlUHJvcGVydGllcyA9IGV4cG9ydHMua25vd25Ib29rRXZlbnRzID0gZXhwb3J0cy53aXRob3V0Qm9keSA9IGV4cG9ydHMua0lzTm9ybWFsaXplZEFscmVhZHkgPSB2b2lkIDA7XG5jb25zdCB1dGlsXzEgPSByZXF1aXJlKFwidXRpbFwiKTtcbmNvbnN0IHN0cmVhbV8xID0gcmVxdWlyZShcInN0cmVhbVwiKTtcbmNvbnN0IGZzXzEgPSByZXF1aXJlKFwiZnNcIik7XG5jb25zdCB1cmxfMSA9IHJlcXVpcmUoXCJ1cmxcIik7XG5jb25zdCBodHRwID0gcmVxdWlyZShcImh0dHBcIik7XG5jb25zdCBodHRwXzEgPSByZXF1aXJlKFwiaHR0cFwiKTtcbmNvbnN0IGh0dHBzID0gcmVxdWlyZShcImh0dHBzXCIpO1xuY29uc3QgaHR0cF90aW1lcl8xID0gcmVxdWlyZShcIkBzem1hcmN6YWsvaHR0cC10aW1lclwiKTtcbmNvbnN0IGNhY2hlYWJsZV9sb29rdXBfMSA9IHJlcXVpcmUoXCJjYWNoZWFibGUtbG9va3VwXCIpO1xuY29uc3QgQ2FjaGVhYmxlUmVxdWVzdCA9IHJlcXVpcmUoXCJjYWNoZWFibGUtcmVxdWVzdFwiKTtcbmNvbnN0IGRlY29tcHJlc3NSZXNwb25zZSA9IHJlcXVpcmUoXCJkZWNvbXByZXNzLXJlc3BvbnNlXCIpO1xuLy8gQHRzLWV4cGVjdC1lcnJvciBNaXNzaW5nIHR5cGVzXG5jb25zdCBodHRwMndyYXBwZXIgPSByZXF1aXJlKFwiaHR0cDItd3JhcHBlclwiKTtcbmNvbnN0IGxvd2VyY2FzZUtleXMgPSByZXF1aXJlKFwibG93ZXJjYXNlLWtleXNcIik7XG5jb25zdCBpc18xID0gcmVxdWlyZShcIkBzaW5kcmVzb3JodXMvaXNcIik7XG5jb25zdCBnZXRfYm9keV9zaXplXzEgPSByZXF1aXJlKFwiLi91dGlscy9nZXQtYm9keS1zaXplXCIpO1xuY29uc3QgaXNfZm9ybV9kYXRhXzEgPSByZXF1aXJlKFwiLi91dGlscy9pcy1mb3JtLWRhdGFcIik7XG5jb25zdCBwcm94eV9ldmVudHNfMSA9IHJlcXVpcmUoXCIuL3V0aWxzL3Byb3h5LWV2ZW50c1wiKTtcbmNvbnN0IHRpbWVkX291dF8xID0gcmVxdWlyZShcIi4vdXRpbHMvdGltZWQtb3V0XCIpO1xuY29uc3QgdXJsX3RvX29wdGlvbnNfMSA9IHJlcXVpcmUoXCIuL3V0aWxzL3VybC10by1vcHRpb25zXCIpO1xuY29uc3Qgb3B0aW9uc190b191cmxfMSA9IHJlcXVpcmUoXCIuL3V0aWxzL29wdGlvbnMtdG8tdXJsXCIpO1xuY29uc3Qgd2Vha2FibGVfbWFwXzEgPSByZXF1aXJlKFwiLi91dGlscy93ZWFrYWJsZS1tYXBcIik7XG5jb25zdCBnZXRfYnVmZmVyXzEgPSByZXF1aXJlKFwiLi91dGlscy9nZXQtYnVmZmVyXCIpO1xuY29uc3QgZG5zX2lwX3ZlcnNpb25fMSA9IHJlcXVpcmUoXCIuL3V0aWxzL2Rucy1pcC12ZXJzaW9uXCIpO1xuY29uc3QgaXNfcmVzcG9uc2Vfb2tfMSA9IHJlcXVpcmUoXCIuL3V0aWxzL2lzLXJlc3BvbnNlLW9rXCIpO1xuY29uc3QgZGVwcmVjYXRpb25fd2FybmluZ18xID0gcmVxdWlyZShcIi4uL3V0aWxzL2RlcHJlY2F0aW9uLXdhcm5pbmdcIik7XG5jb25zdCBub3JtYWxpemVfYXJndW1lbnRzXzEgPSByZXF1aXJlKFwiLi4vYXMtcHJvbWlzZS9ub3JtYWxpemUtYXJndW1lbnRzXCIpO1xuY29uc3QgY2FsY3VsYXRlX3JldHJ5X2RlbGF5XzEgPSByZXF1aXJlKFwiLi9jYWxjdWxhdGUtcmV0cnktZGVsYXlcIik7XG5sZXQgZ2xvYmFsRG5zQ2FjaGU7XG5jb25zdCBrUmVxdWVzdCA9IFN5bWJvbCgncmVxdWVzdCcpO1xuY29uc3Qga1Jlc3BvbnNlID0gU3ltYm9sKCdyZXNwb25zZScpO1xuY29uc3Qga1Jlc3BvbnNlU2l6ZSA9IFN5bWJvbCgncmVzcG9uc2VTaXplJyk7XG5jb25zdCBrRG93bmxvYWRlZFNpemUgPSBTeW1ib2woJ2Rvd25sb2FkZWRTaXplJyk7XG5jb25zdCBrQm9keVNpemUgPSBTeW1ib2woJ2JvZHlTaXplJyk7XG5jb25zdCBrVXBsb2FkZWRTaXplID0gU3ltYm9sKCd1cGxvYWRlZFNpemUnKTtcbmNvbnN0IGtTZXJ2ZXJSZXNwb25zZXNQaXBlZCA9IFN5bWJvbCgnc2VydmVyUmVzcG9uc2VzUGlwZWQnKTtcbmNvbnN0IGtVbnByb3h5RXZlbnRzID0gU3ltYm9sKCd1bnByb3h5RXZlbnRzJyk7XG5jb25zdCBrSXNGcm9tQ2FjaGUgPSBTeW1ib2woJ2lzRnJvbUNhY2hlJyk7XG5jb25zdCBrQ2FuY2VsVGltZW91dHMgPSBTeW1ib2woJ2NhbmNlbFRpbWVvdXRzJyk7XG5jb25zdCBrU3RhcnRlZFJlYWRpbmcgPSBTeW1ib2woJ3N0YXJ0ZWRSZWFkaW5nJyk7XG5jb25zdCBrU3RvcFJlYWRpbmcgPSBTeW1ib2woJ3N0b3BSZWFkaW5nJyk7XG5jb25zdCBrVHJpZ2dlclJlYWQgPSBTeW1ib2woJ3RyaWdnZXJSZWFkJyk7XG5jb25zdCBrQm9keSA9IFN5bWJvbCgnYm9keScpO1xuY29uc3Qga0pvYnMgPSBTeW1ib2woJ2pvYnMnKTtcbmNvbnN0IGtPcmlnaW5hbFJlc3BvbnNlID0gU3ltYm9sKCdvcmlnaW5hbFJlc3BvbnNlJyk7XG5jb25zdCBrUmV0cnlUaW1lb3V0ID0gU3ltYm9sKCdyZXRyeVRpbWVvdXQnKTtcbmV4cG9ydHMua0lzTm9ybWFsaXplZEFscmVhZHkgPSBTeW1ib2woJ2lzTm9ybWFsaXplZEFscmVhZHknKTtcbmNvbnN0IHN1cHBvcnRzQnJvdGxpID0gaXNfMS5kZWZhdWx0LnN0cmluZyhwcm9jZXNzLnZlcnNpb25zLmJyb3RsaSk7XG5leHBvcnRzLndpdGhvdXRCb2R5ID0gbmV3IFNldChbJ0dFVCcsICdIRUFEJ10pO1xuZXhwb3J0cy5rbm93bkhvb2tFdmVudHMgPSBbXG4gICAgJ2luaXQnLFxuICAgICdiZWZvcmVSZXF1ZXN0JyxcbiAgICAnYmVmb3JlUmVkaXJlY3QnLFxuICAgICdiZWZvcmVFcnJvcicsXG4gICAgJ2JlZm9yZVJldHJ5JyxcbiAgICAvLyBQcm9taXNlLU9ubHlcbiAgICAnYWZ0ZXJSZXNwb25zZSdcbl07XG5mdW5jdGlvbiB2YWxpZGF0ZVNlYXJjaFBhcmFtZXRlcnMoc2VhcmNoUGFyYW1ldGVycykge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBndWFyZC1mb3ItaW5cbiAgICBmb3IgKGNvbnN0IGtleSBpbiBzZWFyY2hQYXJhbWV0ZXJzKSB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gc2VhcmNoUGFyYW1ldGVyc1trZXldO1xuICAgICAgICBpZiAoIWlzXzEuZGVmYXVsdC5zdHJpbmcodmFsdWUpICYmICFpc18xLmRlZmF1bHQubnVtYmVyKHZhbHVlKSAmJiAhaXNfMS5kZWZhdWx0LmJvb2xlYW4odmFsdWUpICYmICFpc18xLmRlZmF1bHQubnVsbF8odmFsdWUpICYmICFpc18xLmRlZmF1bHQudW5kZWZpbmVkKHZhbHVlKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgVGhlIFxcYHNlYXJjaFBhcmFtc1xcYCB2YWx1ZSAnJHtTdHJpbmcodmFsdWUpfScgbXVzdCBiZSBhIHN0cmluZywgbnVtYmVyLCBib29sZWFuIG9yIG51bGxgKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbmZ1bmN0aW9uIGlzQ2xpZW50UmVxdWVzdChjbGllbnRSZXF1ZXN0KSB7XG4gICAgcmV0dXJuIGlzXzEuZGVmYXVsdC5vYmplY3QoY2xpZW50UmVxdWVzdCkgJiYgISgnc3RhdHVzQ29kZScgaW4gY2xpZW50UmVxdWVzdCk7XG59XG5jb25zdCBjYWNoZWFibGVTdG9yZSA9IG5ldyB3ZWFrYWJsZV9tYXBfMS5kZWZhdWx0KCk7XG5jb25zdCB3YWl0Rm9yT3BlbkZpbGUgPSBhc3luYyAoZmlsZSkgPT4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGNvbnN0IG9uRXJyb3IgPSAoZXJyb3IpID0+IHtcbiAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICB9O1xuICAgIC8vIE5vZGUuanMgMTIgaGFzIGluY29tcGxldGUgdHlwZXNcbiAgICBpZiAoIWZpbGUucGVuZGluZykge1xuICAgICAgICByZXNvbHZlKCk7XG4gICAgfVxuICAgIGZpbGUub25jZSgnZXJyb3InLCBvbkVycm9yKTtcbiAgICBmaWxlLm9uY2UoJ3JlYWR5JywgKCkgPT4ge1xuICAgICAgICBmaWxlLm9mZignZXJyb3InLCBvbkVycm9yKTtcbiAgICAgICAgcmVzb2x2ZSgpO1xuICAgIH0pO1xufSk7XG5jb25zdCByZWRpcmVjdENvZGVzID0gbmV3IFNldChbMzAwLCAzMDEsIDMwMiwgMzAzLCAzMDQsIDMwNywgMzA4XSk7XG5jb25zdCBub25FbnVtZXJhYmxlUHJvcGVydGllcyA9IFtcbiAgICAnY29udGV4dCcsXG4gICAgJ2JvZHknLFxuICAgICdqc29uJyxcbiAgICAnZm9ybSdcbl07XG5leHBvcnRzLnNldE5vbkVudW1lcmFibGVQcm9wZXJ0aWVzID0gKHNvdXJjZXMsIHRvKSA9PiB7XG4gICAgLy8gTm9uIGVudW1lcmFibGUgcHJvcGVydGllcyBzaGFsbCBub3QgYmUgbWVyZ2VkXG4gICAgY29uc3QgcHJvcGVydGllcyA9IHt9O1xuICAgIGZvciAoY29uc3Qgc291cmNlIG9mIHNvdXJjZXMpIHtcbiAgICAgICAgaWYgKCFzb3VyY2UpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGZvciAoY29uc3QgbmFtZSBvZiBub25FbnVtZXJhYmxlUHJvcGVydGllcykge1xuICAgICAgICAgICAgaWYgKCEobmFtZSBpbiBzb3VyY2UpKSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwcm9wZXJ0aWVzW25hbWVdID0ge1xuICAgICAgICAgICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIFRTIGRvZXNuJ3Qgc2VlIHRoZSBjaGVjayBhYm92ZVxuICAgICAgICAgICAgICAgIHZhbHVlOiBzb3VyY2VbbmFtZV1cbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnRpZXModG8sIHByb3BlcnRpZXMpO1xufTtcbi8qKlxuQW4gZXJyb3IgdG8gYmUgdGhyb3duIHdoZW4gYSByZXF1ZXN0IGZhaWxzLlxuQ29udGFpbnMgYSBgY29kZWAgcHJvcGVydHkgd2l0aCBlcnJvciBjbGFzcyBjb2RlLCBsaWtlIGBFQ09OTlJFRlVTRURgLlxuKi9cbmNsYXNzIFJlcXVlc3RFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgICBjb25zdHJ1Y3RvcihtZXNzYWdlLCBlcnJvciwgc2VsZikge1xuICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICBzdXBlcihtZXNzYWdlKTtcbiAgICAgICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UodGhpcywgdGhpcy5jb25zdHJ1Y3Rvcik7XG4gICAgICAgIHRoaXMubmFtZSA9ICdSZXF1ZXN0RXJyb3InO1xuICAgICAgICB0aGlzLmNvZGUgPSAoX2EgPSBlcnJvci5jb2RlKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAnRVJSX0dPVF9SRVFVRVNUX0VSUk9SJztcbiAgICAgICAgaWYgKHNlbGYgaW5zdGFuY2VvZiBSZXF1ZXN0KSB7XG4gICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgJ3JlcXVlc3QnLCB7XG4gICAgICAgICAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgdmFsdWU6IHNlbGZcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsICdyZXNwb25zZScsIHtcbiAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogc2VsZltrUmVzcG9uc2VdXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCAnb3B0aW9ucycsIHtcbiAgICAgICAgICAgICAgICAvLyBUaGlzIGZhaWxzIGJlY2F1c2Ugb2YgVFMgMy43LjIgdXNlRGVmaW5lRm9yQ2xhc3NGaWVsZHNcbiAgICAgICAgICAgICAgICAvLyBSZWY6IGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQvVHlwZVNjcmlwdC9pc3N1ZXMvMzQ5NzJcbiAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogc2VsZi5vcHRpb25zXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCAnb3B0aW9ucycsIHtcbiAgICAgICAgICAgICAgICAvLyBUaGlzIGZhaWxzIGJlY2F1c2Ugb2YgVFMgMy43LjIgdXNlRGVmaW5lRm9yQ2xhc3NGaWVsZHNcbiAgICAgICAgICAgICAgICAvLyBSZWY6IGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQvVHlwZVNjcmlwdC9pc3N1ZXMvMzQ5NzJcbiAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogc2VsZlxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy50aW1pbmdzID0gKF9iID0gdGhpcy5yZXF1ZXN0KSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IudGltaW5ncztcbiAgICAgICAgLy8gUmVjb3ZlciB0aGUgb3JpZ2luYWwgc3RhY2t0cmFjZVxuICAgICAgICBpZiAoaXNfMS5kZWZhdWx0LnN0cmluZyhlcnJvci5zdGFjaykgJiYgaXNfMS5kZWZhdWx0LnN0cmluZyh0aGlzLnN0YWNrKSkge1xuICAgICAgICAgICAgY29uc3QgaW5kZXhPZk1lc3NhZ2UgPSB0aGlzLnN0YWNrLmluZGV4T2YodGhpcy5tZXNzYWdlKSArIHRoaXMubWVzc2FnZS5sZW5ndGg7XG4gICAgICAgICAgICBjb25zdCB0aGlzU3RhY2tUcmFjZSA9IHRoaXMuc3RhY2suc2xpY2UoaW5kZXhPZk1lc3NhZ2UpLnNwbGl0KCdcXG4nKS5yZXZlcnNlKCk7XG4gICAgICAgICAgICBjb25zdCBlcnJvclN0YWNrVHJhY2UgPSBlcnJvci5zdGFjay5zbGljZShlcnJvci5zdGFjay5pbmRleE9mKGVycm9yLm1lc3NhZ2UpICsgZXJyb3IubWVzc2FnZS5sZW5ndGgpLnNwbGl0KCdcXG4nKS5yZXZlcnNlKCk7XG4gICAgICAgICAgICAvLyBSZW1vdmUgZHVwbGljYXRlZCB0cmFjZXNcbiAgICAgICAgICAgIHdoaWxlIChlcnJvclN0YWNrVHJhY2UubGVuZ3RoICE9PSAwICYmIGVycm9yU3RhY2tUcmFjZVswXSA9PT0gdGhpc1N0YWNrVHJhY2VbMF0pIHtcbiAgICAgICAgICAgICAgICB0aGlzU3RhY2tUcmFjZS5zaGlmdCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5zdGFjayA9IGAke3RoaXMuc3RhY2suc2xpY2UoMCwgaW5kZXhPZk1lc3NhZ2UpfSR7dGhpc1N0YWNrVHJhY2UucmV2ZXJzZSgpLmpvaW4oJ1xcbicpfSR7ZXJyb3JTdGFja1RyYWNlLnJldmVyc2UoKS5qb2luKCdcXG4nKX1gO1xuICAgICAgICB9XG4gICAgfVxufVxuZXhwb3J0cy5SZXF1ZXN0RXJyb3IgPSBSZXF1ZXN0RXJyb3I7XG4vKipcbkFuIGVycm9yIHRvIGJlIHRocm93biB3aGVuIHRoZSBzZXJ2ZXIgcmVkaXJlY3RzIHlvdSBtb3JlIHRoYW4gdGVuIHRpbWVzLlxuSW5jbHVkZXMgYSBgcmVzcG9uc2VgIHByb3BlcnR5LlxuKi9cbmNsYXNzIE1heFJlZGlyZWN0c0Vycm9yIGV4dGVuZHMgUmVxdWVzdEVycm9yIHtcbiAgICBjb25zdHJ1Y3RvcihyZXF1ZXN0KSB7XG4gICAgICAgIHN1cGVyKGBSZWRpcmVjdGVkICR7cmVxdWVzdC5vcHRpb25zLm1heFJlZGlyZWN0c30gdGltZXMuIEFib3J0aW5nLmAsIHt9LCByZXF1ZXN0KTtcbiAgICAgICAgdGhpcy5uYW1lID0gJ01heFJlZGlyZWN0c0Vycm9yJztcbiAgICAgICAgdGhpcy5jb2RlID0gJ0VSUl9UT09fTUFOWV9SRURJUkVDVFMnO1xuICAgIH1cbn1cbmV4cG9ydHMuTWF4UmVkaXJlY3RzRXJyb3IgPSBNYXhSZWRpcmVjdHNFcnJvcjtcbi8qKlxuQW4gZXJyb3IgdG8gYmUgdGhyb3duIHdoZW4gdGhlIHNlcnZlciByZXNwb25zZSBjb2RlIGlzIG5vdCAyeHggbm9yIDN4eCBpZiBgb3B0aW9ucy5mb2xsb3dSZWRpcmVjdGAgaXMgYHRydWVgLCBidXQgYWx3YXlzIGV4Y2VwdCBmb3IgMzA0LlxuSW5jbHVkZXMgYSBgcmVzcG9uc2VgIHByb3BlcnR5LlxuKi9cbmNsYXNzIEhUVFBFcnJvciBleHRlbmRzIFJlcXVlc3RFcnJvciB7XG4gICAgY29uc3RydWN0b3IocmVzcG9uc2UpIHtcbiAgICAgICAgc3VwZXIoYFJlc3BvbnNlIGNvZGUgJHtyZXNwb25zZS5zdGF0dXNDb2RlfSAoJHtyZXNwb25zZS5zdGF0dXNNZXNzYWdlfSlgLCB7fSwgcmVzcG9uc2UucmVxdWVzdCk7XG4gICAgICAgIHRoaXMubmFtZSA9ICdIVFRQRXJyb3InO1xuICAgICAgICB0aGlzLmNvZGUgPSAnRVJSX05PTl8yWFhfM1hYX1JFU1BPTlNFJztcbiAgICB9XG59XG5leHBvcnRzLkhUVFBFcnJvciA9IEhUVFBFcnJvcjtcbi8qKlxuQW4gZXJyb3IgdG8gYmUgdGhyb3duIHdoZW4gYSBjYWNoZSBtZXRob2QgZmFpbHMuXG5Gb3IgZXhhbXBsZSwgaWYgdGhlIGRhdGFiYXNlIGdvZXMgZG93biBvciB0aGVyZSdzIGEgZmlsZXN5c3RlbSBlcnJvci5cbiovXG5jbGFzcyBDYWNoZUVycm9yIGV4dGVuZHMgUmVxdWVzdEVycm9yIHtcbiAgICBjb25zdHJ1Y3RvcihlcnJvciwgcmVxdWVzdCkge1xuICAgICAgICBzdXBlcihlcnJvci5tZXNzYWdlLCBlcnJvciwgcmVxdWVzdCk7XG4gICAgICAgIHRoaXMubmFtZSA9ICdDYWNoZUVycm9yJztcbiAgICAgICAgdGhpcy5jb2RlID0gdGhpcy5jb2RlID09PSAnRVJSX0dPVF9SRVFVRVNUX0VSUk9SJyA/ICdFUlJfQ0FDSEVfQUNDRVNTJyA6IHRoaXMuY29kZTtcbiAgICB9XG59XG5leHBvcnRzLkNhY2hlRXJyb3IgPSBDYWNoZUVycm9yO1xuLyoqXG5BbiBlcnJvciB0byBiZSB0aHJvd24gd2hlbiB0aGUgcmVxdWVzdCBib2R5IGlzIGEgc3RyZWFtIGFuZCBhbiBlcnJvciBvY2N1cnMgd2hpbGUgcmVhZGluZyBmcm9tIHRoYXQgc3RyZWFtLlxuKi9cbmNsYXNzIFVwbG9hZEVycm9yIGV4dGVuZHMgUmVxdWVzdEVycm9yIHtcbiAgICBjb25zdHJ1Y3RvcihlcnJvciwgcmVxdWVzdCkge1xuICAgICAgICBzdXBlcihlcnJvci5tZXNzYWdlLCBlcnJvciwgcmVxdWVzdCk7XG4gICAgICAgIHRoaXMubmFtZSA9ICdVcGxvYWRFcnJvcic7XG4gICAgICAgIHRoaXMuY29kZSA9IHRoaXMuY29kZSA9PT0gJ0VSUl9HT1RfUkVRVUVTVF9FUlJPUicgPyAnRVJSX1VQTE9BRCcgOiB0aGlzLmNvZGU7XG4gICAgfVxufVxuZXhwb3J0cy5VcGxvYWRFcnJvciA9IFVwbG9hZEVycm9yO1xuLyoqXG5BbiBlcnJvciB0byBiZSB0aHJvd24gd2hlbiB0aGUgcmVxdWVzdCBpcyBhYm9ydGVkIGR1ZSB0byBhIHRpbWVvdXQuXG5JbmNsdWRlcyBhbiBgZXZlbnRgIGFuZCBgdGltaW5nc2AgcHJvcGVydHkuXG4qL1xuY2xhc3MgVGltZW91dEVycm9yIGV4dGVuZHMgUmVxdWVzdEVycm9yIHtcbiAgICBjb25zdHJ1Y3RvcihlcnJvciwgdGltaW5ncywgcmVxdWVzdCkge1xuICAgICAgICBzdXBlcihlcnJvci5tZXNzYWdlLCBlcnJvciwgcmVxdWVzdCk7XG4gICAgICAgIHRoaXMubmFtZSA9ICdUaW1lb3V0RXJyb3InO1xuICAgICAgICB0aGlzLmV2ZW50ID0gZXJyb3IuZXZlbnQ7XG4gICAgICAgIHRoaXMudGltaW5ncyA9IHRpbWluZ3M7XG4gICAgfVxufVxuZXhwb3J0cy5UaW1lb3V0RXJyb3IgPSBUaW1lb3V0RXJyb3I7XG4vKipcbkFuIGVycm9yIHRvIGJlIHRocm93biB3aGVuIHJlYWRpbmcgZnJvbSByZXNwb25zZSBzdHJlYW0gZmFpbHMuXG4qL1xuY2xhc3MgUmVhZEVycm9yIGV4dGVuZHMgUmVxdWVzdEVycm9yIHtcbiAgICBjb25zdHJ1Y3RvcihlcnJvciwgcmVxdWVzdCkge1xuICAgICAgICBzdXBlcihlcnJvci5tZXNzYWdlLCBlcnJvciwgcmVxdWVzdCk7XG4gICAgICAgIHRoaXMubmFtZSA9ICdSZWFkRXJyb3InO1xuICAgICAgICB0aGlzLmNvZGUgPSB0aGlzLmNvZGUgPT09ICdFUlJfR09UX1JFUVVFU1RfRVJST1InID8gJ0VSUl9SRUFESU5HX1JFU1BPTlNFX1NUUkVBTScgOiB0aGlzLmNvZGU7XG4gICAgfVxufVxuZXhwb3J0cy5SZWFkRXJyb3IgPSBSZWFkRXJyb3I7XG4vKipcbkFuIGVycm9yIHRvIGJlIHRocm93biB3aGVuIGdpdmVuIGFuIHVuc3VwcG9ydGVkIHByb3RvY29sLlxuKi9cbmNsYXNzIFVuc3VwcG9ydGVkUHJvdG9jb2xFcnJvciBleHRlbmRzIFJlcXVlc3RFcnJvciB7XG4gICAgY29uc3RydWN0b3Iob3B0aW9ucykge1xuICAgICAgICBzdXBlcihgVW5zdXBwb3J0ZWQgcHJvdG9jb2wgXCIke29wdGlvbnMudXJsLnByb3RvY29sfVwiYCwge30sIG9wdGlvbnMpO1xuICAgICAgICB0aGlzLm5hbWUgPSAnVW5zdXBwb3J0ZWRQcm90b2NvbEVycm9yJztcbiAgICAgICAgdGhpcy5jb2RlID0gJ0VSUl9VTlNVUFBPUlRFRF9QUk9UT0NPTCc7XG4gICAgfVxufVxuZXhwb3J0cy5VbnN1cHBvcnRlZFByb3RvY29sRXJyb3IgPSBVbnN1cHBvcnRlZFByb3RvY29sRXJyb3I7XG5jb25zdCBwcm94aWVkUmVxdWVzdEV2ZW50cyA9IFtcbiAgICAnc29ja2V0JyxcbiAgICAnY29ubmVjdCcsXG4gICAgJ2NvbnRpbnVlJyxcbiAgICAnaW5mb3JtYXRpb24nLFxuICAgICd1cGdyYWRlJyxcbiAgICAndGltZW91dCdcbl07XG5jbGFzcyBSZXF1ZXN0IGV4dGVuZHMgc3RyZWFtXzEuRHVwbGV4IHtcbiAgICBjb25zdHJ1Y3Rvcih1cmwsIG9wdGlvbnMgPSB7fSwgZGVmYXVsdHMpIHtcbiAgICAgICAgc3VwZXIoe1xuICAgICAgICAgICAgLy8gVGhpcyBtdXN0IGJlIGZhbHNlLCB0byBlbmFibGUgdGhyb3dpbmcgYWZ0ZXIgZGVzdHJveVxuICAgICAgICAgICAgLy8gSXQgaXMgdXNlZCBmb3IgcmV0cnkgbG9naWMgaW4gUHJvbWlzZSBBUElcbiAgICAgICAgICAgIGF1dG9EZXN0cm95OiBmYWxzZSxcbiAgICAgICAgICAgIC8vIEl0IG5lZWRzIHRvIGJlIHplcm8gYmVjYXVzZSB3ZSdyZSBqdXN0IHByb3h5aW5nIHRoZSBkYXRhIHRvIGFub3RoZXIgc3RyZWFtXG4gICAgICAgICAgICBoaWdoV2F0ZXJNYXJrOiAwXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzW2tEb3dubG9hZGVkU2l6ZV0gPSAwO1xuICAgICAgICB0aGlzW2tVcGxvYWRlZFNpemVdID0gMDtcbiAgICAgICAgdGhpcy5yZXF1ZXN0SW5pdGlhbGl6ZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpc1trU2VydmVyUmVzcG9uc2VzUGlwZWRdID0gbmV3IFNldCgpO1xuICAgICAgICB0aGlzLnJlZGlyZWN0cyA9IFtdO1xuICAgICAgICB0aGlzW2tTdG9wUmVhZGluZ10gPSBmYWxzZTtcbiAgICAgICAgdGhpc1trVHJpZ2dlclJlYWRdID0gZmFsc2U7XG4gICAgICAgIHRoaXNba0pvYnNdID0gW107XG4gICAgICAgIHRoaXMucmV0cnlDb3VudCA9IDA7XG4gICAgICAgIC8vIFRPRE86IFJlbW92ZSB0aGlzIHdoZW4gdGFyZ2V0aW5nIE5vZGUuanMgPj0gMTJcbiAgICAgICAgdGhpcy5fcHJvZ3Jlc3NDYWxsYmFja3MgPSBbXTtcbiAgICAgICAgY29uc3QgdW5sb2NrV3JpdGUgPSAoKSA9PiB0aGlzLl91bmxvY2tXcml0ZSgpO1xuICAgICAgICBjb25zdCBsb2NrV3JpdGUgPSAoKSA9PiB0aGlzLl9sb2NrV3JpdGUoKTtcbiAgICAgICAgdGhpcy5vbigncGlwZScsIChzb3VyY2UpID0+IHtcbiAgICAgICAgICAgIHNvdXJjZS5wcmVwZW5kTGlzdGVuZXIoJ2RhdGEnLCB1bmxvY2tXcml0ZSk7XG4gICAgICAgICAgICBzb3VyY2Uub24oJ2RhdGEnLCBsb2NrV3JpdGUpO1xuICAgICAgICAgICAgc291cmNlLnByZXBlbmRMaXN0ZW5lcignZW5kJywgdW5sb2NrV3JpdGUpO1xuICAgICAgICAgICAgc291cmNlLm9uKCdlbmQnLCBsb2NrV3JpdGUpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5vbigndW5waXBlJywgKHNvdXJjZSkgPT4ge1xuICAgICAgICAgICAgc291cmNlLm9mZignZGF0YScsIHVubG9ja1dyaXRlKTtcbiAgICAgICAgICAgIHNvdXJjZS5vZmYoJ2RhdGEnLCBsb2NrV3JpdGUpO1xuICAgICAgICAgICAgc291cmNlLm9mZignZW5kJywgdW5sb2NrV3JpdGUpO1xuICAgICAgICAgICAgc291cmNlLm9mZignZW5kJywgbG9ja1dyaXRlKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMub24oJ3BpcGUnLCBzb3VyY2UgPT4ge1xuICAgICAgICAgICAgaWYgKHNvdXJjZSBpbnN0YW5jZW9mIGh0dHBfMS5JbmNvbWluZ01lc3NhZ2UpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMuaGVhZGVycyA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uc291cmNlLmhlYWRlcnMsXG4gICAgICAgICAgICAgICAgICAgIC4uLnRoaXMub3B0aW9ucy5oZWFkZXJzXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IHsganNvbiwgYm9keSwgZm9ybSB9ID0gb3B0aW9ucztcbiAgICAgICAgaWYgKGpzb24gfHwgYm9keSB8fCBmb3JtKSB7XG4gICAgICAgICAgICB0aGlzLl9sb2NrV3JpdGUoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXhwb3J0cy5rSXNOb3JtYWxpemVkQWxyZWFkeSBpbiBvcHRpb25zKSB7XG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIENvbW1vbiBUeXBlU2NyaXB0IGJ1ZyBzYXlpbmcgdGhhdCBgdGhpcy5jb25zdHJ1Y3RvcmAgaXMgbm90IGFjY2Vzc2libGVcbiAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMgPSB0aGlzLmNvbnN0cnVjdG9yLm5vcm1hbGl6ZUFyZ3VtZW50cyh1cmwsIG9wdGlvbnMsIGRlZmF1bHRzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgIC8vIFRPRE86IE1vdmUgdGhpcyB0byBgX2Rlc3Ryb3koKWBcbiAgICAgICAgICAgICAgICBpZiAoaXNfMS5kZWZhdWx0Lm5vZGVTdHJlYW0ob3B0aW9ucy5ib2R5KSkge1xuICAgICAgICAgICAgICAgICAgICBvcHRpb25zLmJvZHkuZGVzdHJveSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLmRlc3Ryb3koZXJyb3IpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAoYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLmJvZHkgaW5zdGFuY2VvZiBmc18xLlJlYWRTdHJlYW0pIHtcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgd2FpdEZvck9wZW5GaWxlKHRoaXMub3B0aW9ucy5ib2R5KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgeyB1cmw6IG5vcm1hbGl6ZWRVUkwgfSA9IHRoaXMub3B0aW9ucztcbiAgICAgICAgICAgICAgICBpZiAoIW5vcm1hbGl6ZWRVUkwpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignTWlzc2luZyBgdXJsYCBwcm9wZXJ0eScpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVlc3RVcmwgPSBub3JtYWxpemVkVVJMLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICAgICAgZGVjb2RlVVJJKHRoaXMucmVxdWVzdFVybCk7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5fZmluYWxpemVCb2R5KCk7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5fbWFrZVJlcXVlc3QoKTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5kZXN0cm95ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgKF9hID0gdGhpc1trUmVxdWVzdF0pID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5kZXN0cm95KCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gUXVldWVkIHdyaXRlcyBldGMuXG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBqb2Igb2YgdGhpc1trSm9ic10pIHtcbiAgICAgICAgICAgICAgICAgICAgam9iKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIFByZXZlbnQgbWVtb3J5IGxlYWtcbiAgICAgICAgICAgICAgICB0aGlzW2tKb2JzXS5sZW5ndGggPSAwO1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWVzdEluaXRpYWxpemVkID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIFJlcXVlc3RFcnJvcikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9iZWZvcmVFcnJvcihlcnJvcik7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBhIHdvcmthcm91bmQgZm9yIGh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlanMvbm9kZS9pc3N1ZXMvMzMzMzVcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZGVzdHJveWVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGVzdHJveShlcnJvcik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KSgpO1xuICAgIH1cbiAgICBzdGF0aWMgbm9ybWFsaXplQXJndW1lbnRzKHVybCwgb3B0aW9ucywgZGVmYXVsdHMpIHtcbiAgICAgICAgdmFyIF9hLCBfYiwgX2MsIF9kLCBfZTtcbiAgICAgICAgY29uc3QgcmF3T3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgICAgIGlmIChpc18xLmRlZmF1bHQub2JqZWN0KHVybCkgJiYgIWlzXzEuZGVmYXVsdC51cmxJbnN0YW5jZSh1cmwpKSB7XG4gICAgICAgICAgICBvcHRpb25zID0geyAuLi5kZWZhdWx0cywgLi4udXJsLCAuLi5vcHRpb25zIH07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBpZiAodXJsICYmIG9wdGlvbnMgJiYgb3B0aW9ucy51cmwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBgdXJsYCBvcHRpb24gaXMgbXV0dWFsbHkgZXhjbHVzaXZlIHdpdGggdGhlIGBpbnB1dGAgYXJndW1lbnQnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9wdGlvbnMgPSB7IC4uLmRlZmF1bHRzLCAuLi5vcHRpb25zIH07XG4gICAgICAgICAgICBpZiAodXJsICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBvcHRpb25zLnVybCA9IHVybDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpc18xLmRlZmF1bHQudXJsSW5zdGFuY2Uob3B0aW9ucy51cmwpKSB7XG4gICAgICAgICAgICAgICAgb3B0aW9ucy51cmwgPSBuZXcgdXJsXzEuVVJMKG9wdGlvbnMudXJsLnRvU3RyaW5nKCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIFRPRE86IERlcHJlY2F0ZSBVUkwgb3B0aW9ucyBpbiBHb3QgMTIuXG4gICAgICAgIC8vIFN1cHBvcnQgZXh0ZW5kLXNwZWNpZmljIG9wdGlvbnNcbiAgICAgICAgaWYgKG9wdGlvbnMuY2FjaGUgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICBvcHRpb25zLmNhY2hlID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcHRpb25zLmRuc0NhY2hlID09PSBmYWxzZSkge1xuICAgICAgICAgICAgb3B0aW9ucy5kbnNDYWNoZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICAvLyBOaWNlIHR5cGUgYXNzZXJ0aW9uc1xuICAgICAgICBpc18xLmFzc2VydC5hbnkoW2lzXzEuZGVmYXVsdC5zdHJpbmcsIGlzXzEuZGVmYXVsdC51bmRlZmluZWRdLCBvcHRpb25zLm1ldGhvZCk7XG4gICAgICAgIGlzXzEuYXNzZXJ0LmFueShbaXNfMS5kZWZhdWx0Lm9iamVjdCwgaXNfMS5kZWZhdWx0LnVuZGVmaW5lZF0sIG9wdGlvbnMuaGVhZGVycyk7XG4gICAgICAgIGlzXzEuYXNzZXJ0LmFueShbaXNfMS5kZWZhdWx0LnN0cmluZywgaXNfMS5kZWZhdWx0LnVybEluc3RhbmNlLCBpc18xLmRlZmF1bHQudW5kZWZpbmVkXSwgb3B0aW9ucy5wcmVmaXhVcmwpO1xuICAgICAgICBpc18xLmFzc2VydC5hbnkoW2lzXzEuZGVmYXVsdC5vYmplY3QsIGlzXzEuZGVmYXVsdC51bmRlZmluZWRdLCBvcHRpb25zLmNvb2tpZUphcik7XG4gICAgICAgIGlzXzEuYXNzZXJ0LmFueShbaXNfMS5kZWZhdWx0Lm9iamVjdCwgaXNfMS5kZWZhdWx0LnN0cmluZywgaXNfMS5kZWZhdWx0LnVuZGVmaW5lZF0sIG9wdGlvbnMuc2VhcmNoUGFyYW1zKTtcbiAgICAgICAgaXNfMS5hc3NlcnQuYW55KFtpc18xLmRlZmF1bHQub2JqZWN0LCBpc18xLmRlZmF1bHQuc3RyaW5nLCBpc18xLmRlZmF1bHQudW5kZWZpbmVkXSwgb3B0aW9ucy5jYWNoZSk7XG4gICAgICAgIGlzXzEuYXNzZXJ0LmFueShbaXNfMS5kZWZhdWx0Lm9iamVjdCwgaXNfMS5kZWZhdWx0Lm51bWJlciwgaXNfMS5kZWZhdWx0LnVuZGVmaW5lZF0sIG9wdGlvbnMudGltZW91dCk7XG4gICAgICAgIGlzXzEuYXNzZXJ0LmFueShbaXNfMS5kZWZhdWx0Lm9iamVjdCwgaXNfMS5kZWZhdWx0LnVuZGVmaW5lZF0sIG9wdGlvbnMuY29udGV4dCk7XG4gICAgICAgIGlzXzEuYXNzZXJ0LmFueShbaXNfMS5kZWZhdWx0Lm9iamVjdCwgaXNfMS5kZWZhdWx0LnVuZGVmaW5lZF0sIG9wdGlvbnMuaG9va3MpO1xuICAgICAgICBpc18xLmFzc2VydC5hbnkoW2lzXzEuZGVmYXVsdC5ib29sZWFuLCBpc18xLmRlZmF1bHQudW5kZWZpbmVkXSwgb3B0aW9ucy5kZWNvbXByZXNzKTtcbiAgICAgICAgaXNfMS5hc3NlcnQuYW55KFtpc18xLmRlZmF1bHQuYm9vbGVhbiwgaXNfMS5kZWZhdWx0LnVuZGVmaW5lZF0sIG9wdGlvbnMuaWdub3JlSW52YWxpZENvb2tpZXMpO1xuICAgICAgICBpc18xLmFzc2VydC5hbnkoW2lzXzEuZGVmYXVsdC5ib29sZWFuLCBpc18xLmRlZmF1bHQudW5kZWZpbmVkXSwgb3B0aW9ucy5mb2xsb3dSZWRpcmVjdCk7XG4gICAgICAgIGlzXzEuYXNzZXJ0LmFueShbaXNfMS5kZWZhdWx0Lm51bWJlciwgaXNfMS5kZWZhdWx0LnVuZGVmaW5lZF0sIG9wdGlvbnMubWF4UmVkaXJlY3RzKTtcbiAgICAgICAgaXNfMS5hc3NlcnQuYW55KFtpc18xLmRlZmF1bHQuYm9vbGVhbiwgaXNfMS5kZWZhdWx0LnVuZGVmaW5lZF0sIG9wdGlvbnMudGhyb3dIdHRwRXJyb3JzKTtcbiAgICAgICAgaXNfMS5hc3NlcnQuYW55KFtpc18xLmRlZmF1bHQuYm9vbGVhbiwgaXNfMS5kZWZhdWx0LnVuZGVmaW5lZF0sIG9wdGlvbnMuaHR0cDIpO1xuICAgICAgICBpc18xLmFzc2VydC5hbnkoW2lzXzEuZGVmYXVsdC5ib29sZWFuLCBpc18xLmRlZmF1bHQudW5kZWZpbmVkXSwgb3B0aW9ucy5hbGxvd0dldEJvZHkpO1xuICAgICAgICBpc18xLmFzc2VydC5hbnkoW2lzXzEuZGVmYXVsdC5zdHJpbmcsIGlzXzEuZGVmYXVsdC51bmRlZmluZWRdLCBvcHRpb25zLmxvY2FsQWRkcmVzcyk7XG4gICAgICAgIGlzXzEuYXNzZXJ0LmFueShbZG5zX2lwX3ZlcnNpb25fMS5pc0Ruc0xvb2t1cElwVmVyc2lvbiwgaXNfMS5kZWZhdWx0LnVuZGVmaW5lZF0sIG9wdGlvbnMuZG5zTG9va3VwSXBWZXJzaW9uKTtcbiAgICAgICAgaXNfMS5hc3NlcnQuYW55KFtpc18xLmRlZmF1bHQub2JqZWN0LCBpc18xLmRlZmF1bHQudW5kZWZpbmVkXSwgb3B0aW9ucy5odHRwcyk7XG4gICAgICAgIGlzXzEuYXNzZXJ0LmFueShbaXNfMS5kZWZhdWx0LmJvb2xlYW4sIGlzXzEuZGVmYXVsdC51bmRlZmluZWRdLCBvcHRpb25zLnJlamVjdFVuYXV0aG9yaXplZCk7XG4gICAgICAgIGlmIChvcHRpb25zLmh0dHBzKSB7XG4gICAgICAgICAgICBpc18xLmFzc2VydC5hbnkoW2lzXzEuZGVmYXVsdC5ib29sZWFuLCBpc18xLmRlZmF1bHQudW5kZWZpbmVkXSwgb3B0aW9ucy5odHRwcy5yZWplY3RVbmF1dGhvcml6ZWQpO1xuICAgICAgICAgICAgaXNfMS5hc3NlcnQuYW55KFtpc18xLmRlZmF1bHQuZnVuY3Rpb25fLCBpc18xLmRlZmF1bHQudW5kZWZpbmVkXSwgb3B0aW9ucy5odHRwcy5jaGVja1NlcnZlcklkZW50aXR5KTtcbiAgICAgICAgICAgIGlzXzEuYXNzZXJ0LmFueShbaXNfMS5kZWZhdWx0LnN0cmluZywgaXNfMS5kZWZhdWx0Lm9iamVjdCwgaXNfMS5kZWZhdWx0LmFycmF5LCBpc18xLmRlZmF1bHQudW5kZWZpbmVkXSwgb3B0aW9ucy5odHRwcy5jZXJ0aWZpY2F0ZUF1dGhvcml0eSk7XG4gICAgICAgICAgICBpc18xLmFzc2VydC5hbnkoW2lzXzEuZGVmYXVsdC5zdHJpbmcsIGlzXzEuZGVmYXVsdC5vYmplY3QsIGlzXzEuZGVmYXVsdC5hcnJheSwgaXNfMS5kZWZhdWx0LnVuZGVmaW5lZF0sIG9wdGlvbnMuaHR0cHMua2V5KTtcbiAgICAgICAgICAgIGlzXzEuYXNzZXJ0LmFueShbaXNfMS5kZWZhdWx0LnN0cmluZywgaXNfMS5kZWZhdWx0Lm9iamVjdCwgaXNfMS5kZWZhdWx0LmFycmF5LCBpc18xLmRlZmF1bHQudW5kZWZpbmVkXSwgb3B0aW9ucy5odHRwcy5jZXJ0aWZpY2F0ZSk7XG4gICAgICAgICAgICBpc18xLmFzc2VydC5hbnkoW2lzXzEuZGVmYXVsdC5zdHJpbmcsIGlzXzEuZGVmYXVsdC51bmRlZmluZWRdLCBvcHRpb25zLmh0dHBzLnBhc3NwaHJhc2UpO1xuICAgICAgICAgICAgaXNfMS5hc3NlcnQuYW55KFtpc18xLmRlZmF1bHQuc3RyaW5nLCBpc18xLmRlZmF1bHQuYnVmZmVyLCBpc18xLmRlZmF1bHQuYXJyYXksIGlzXzEuZGVmYXVsdC51bmRlZmluZWRdLCBvcHRpb25zLmh0dHBzLnBmeCk7XG4gICAgICAgIH1cbiAgICAgICAgaXNfMS5hc3NlcnQuYW55KFtpc18xLmRlZmF1bHQub2JqZWN0LCBpc18xLmRlZmF1bHQudW5kZWZpbmVkXSwgb3B0aW9ucy5jYWNoZU9wdGlvbnMpO1xuICAgICAgICAvLyBgb3B0aW9ucy5tZXRob2RgXG4gICAgICAgIGlmIChpc18xLmRlZmF1bHQuc3RyaW5nKG9wdGlvbnMubWV0aG9kKSkge1xuICAgICAgICAgICAgb3B0aW9ucy5tZXRob2QgPSBvcHRpb25zLm1ldGhvZC50b1VwcGVyQ2FzZSgpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgb3B0aW9ucy5tZXRob2QgPSAnR0VUJztcbiAgICAgICAgfVxuICAgICAgICAvLyBgb3B0aW9ucy5oZWFkZXJzYFxuICAgICAgICBpZiAob3B0aW9ucy5oZWFkZXJzID09PSAoZGVmYXVsdHMgPT09IG51bGwgfHwgZGVmYXVsdHMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGRlZmF1bHRzLmhlYWRlcnMpKSB7XG4gICAgICAgICAgICBvcHRpb25zLmhlYWRlcnMgPSB7IC4uLm9wdGlvbnMuaGVhZGVycyB9O1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgb3B0aW9ucy5oZWFkZXJzID0gbG93ZXJjYXNlS2V5cyh7IC4uLihkZWZhdWx0cyA9PT0gbnVsbCB8fCBkZWZhdWx0cyA9PT0gdm9pZCAwID8gdm9pZCAwIDogZGVmYXVsdHMuaGVhZGVycyksIC4uLm9wdGlvbnMuaGVhZGVycyB9KTtcbiAgICAgICAgfVxuICAgICAgICAvLyBEaXNhbGxvdyBsZWdhY3kgYHVybC5VcmxgXG4gICAgICAgIGlmICgnc2xhc2hlcycgaW4gb3B0aW9ucykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIGxlZ2FjeSBgdXJsLlVybGAgaGFzIGJlZW4gZGVwcmVjYXRlZC4gVXNlIGBVUkxgIGluc3RlYWQuJyk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gYG9wdGlvbnMuYXV0aGBcbiAgICAgICAgaWYgKCdhdXRoJyBpbiBvcHRpb25zKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdQYXJhbWV0ZXIgYGF1dGhgIGlzIGRlcHJlY2F0ZWQuIFVzZSBgdXNlcm5hbWVgIC8gYHBhc3N3b3JkYCBpbnN0ZWFkLicpO1xuICAgICAgICB9XG4gICAgICAgIC8vIGBvcHRpb25zLnNlYXJjaFBhcmFtc2BcbiAgICAgICAgaWYgKCdzZWFyY2hQYXJhbXMnIGluIG9wdGlvbnMpIHtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLnNlYXJjaFBhcmFtcyAmJiBvcHRpb25zLnNlYXJjaFBhcmFtcyAhPT0gKGRlZmF1bHRzID09PSBudWxsIHx8IGRlZmF1bHRzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBkZWZhdWx0cy5zZWFyY2hQYXJhbXMpKSB7XG4gICAgICAgICAgICAgICAgbGV0IHNlYXJjaFBhcmFtZXRlcnM7XG4gICAgICAgICAgICAgICAgaWYgKGlzXzEuZGVmYXVsdC5zdHJpbmcob3B0aW9ucy5zZWFyY2hQYXJhbXMpIHx8IChvcHRpb25zLnNlYXJjaFBhcmFtcyBpbnN0YW5jZW9mIHVybF8xLlVSTFNlYXJjaFBhcmFtcykpIHtcbiAgICAgICAgICAgICAgICAgICAgc2VhcmNoUGFyYW1ldGVycyA9IG5ldyB1cmxfMS5VUkxTZWFyY2hQYXJhbXMob3B0aW9ucy5zZWFyY2hQYXJhbXMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGVTZWFyY2hQYXJhbWV0ZXJzKG9wdGlvbnMuc2VhcmNoUGFyYW1zKTtcbiAgICAgICAgICAgICAgICAgICAgc2VhcmNoUGFyYW1ldGVycyA9IG5ldyB1cmxfMS5VUkxTZWFyY2hQYXJhbXMoKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGd1YXJkLWZvci1pblxuICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBvcHRpb25zLnNlYXJjaFBhcmFtcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBvcHRpb25zLnNlYXJjaFBhcmFtc1trZXldO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoUGFyYW1ldGVycy5hcHBlbmQoa2V5LCAnJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoUGFyYW1ldGVycy5hcHBlbmQoa2V5LCB2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gYG5vcm1hbGl6ZUFyZ3VtZW50cygpYCBpcyBhbHNvIHVzZWQgdG8gbWVyZ2Ugb3B0aW9uc1xuICAgICAgICAgICAgICAgIChfYSA9IGRlZmF1bHRzID09PSBudWxsIHx8IGRlZmF1bHRzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBkZWZhdWx0cy5zZWFyY2hQYXJhbXMpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5mb3JFYWNoKCh2YWx1ZSwga2V5KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIC8vIE9ubHkgdXNlIGRlZmF1bHQgaWYgb25lIGlzbid0IGFscmVhZHkgZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICBpZiAoIXNlYXJjaFBhcmFtZXRlcnMuaGFzKGtleSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaFBhcmFtZXRlcnMuYXBwZW5kKGtleSwgdmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgb3B0aW9ucy5zZWFyY2hQYXJhbXMgPSBzZWFyY2hQYXJhbWV0ZXJzO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIGBvcHRpb25zLnVzZXJuYW1lYCAmIGBvcHRpb25zLnBhc3N3b3JkYFxuICAgICAgICBvcHRpb25zLnVzZXJuYW1lID0gKF9iID0gb3B0aW9ucy51c2VybmFtZSkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogJyc7XG4gICAgICAgIG9wdGlvbnMucGFzc3dvcmQgPSAoX2MgPSBvcHRpb25zLnBhc3N3b3JkKSAhPT0gbnVsbCAmJiBfYyAhPT0gdm9pZCAwID8gX2MgOiAnJztcbiAgICAgICAgLy8gYG9wdGlvbnMucHJlZml4VXJsYCAmIGBvcHRpb25zLnVybGBcbiAgICAgICAgaWYgKGlzXzEuZGVmYXVsdC51bmRlZmluZWQob3B0aW9ucy5wcmVmaXhVcmwpKSB7XG4gICAgICAgICAgICBvcHRpb25zLnByZWZpeFVybCA9IChfZCA9IGRlZmF1bHRzID09PSBudWxsIHx8IGRlZmF1bHRzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBkZWZhdWx0cy5wcmVmaXhVcmwpICE9PSBudWxsICYmIF9kICE9PSB2b2lkIDAgPyBfZCA6ICcnO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgb3B0aW9ucy5wcmVmaXhVcmwgPSBvcHRpb25zLnByZWZpeFVybC50b1N0cmluZygpO1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMucHJlZml4VXJsICE9PSAnJyAmJiAhb3B0aW9ucy5wcmVmaXhVcmwuZW5kc1dpdGgoJy8nKSkge1xuICAgICAgICAgICAgICAgIG9wdGlvbnMucHJlZml4VXJsICs9ICcvJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNfMS5kZWZhdWx0LnN0cmluZyhvcHRpb25zLnVybCkpIHtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLnVybC5zdGFydHNXaXRoKCcvJykpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2BpbnB1dGAgbXVzdCBub3Qgc3RhcnQgd2l0aCBhIHNsYXNoIHdoZW4gdXNpbmcgYHByZWZpeFVybGAnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9wdGlvbnMudXJsID0gb3B0aW9uc190b191cmxfMS5kZWZhdWx0KG9wdGlvbnMucHJlZml4VXJsICsgb3B0aW9ucy51cmwsIG9wdGlvbnMpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKChpc18xLmRlZmF1bHQudW5kZWZpbmVkKG9wdGlvbnMudXJsKSAmJiBvcHRpb25zLnByZWZpeFVybCAhPT0gJycpIHx8IG9wdGlvbnMucHJvdG9jb2wpIHtcbiAgICAgICAgICAgIG9wdGlvbnMudXJsID0gb3B0aW9uc190b191cmxfMS5kZWZhdWx0KG9wdGlvbnMucHJlZml4VXJsLCBvcHRpb25zKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob3B0aW9ucy51cmwpIHtcbiAgICAgICAgICAgIGlmICgncG9ydCcgaW4gb3B0aW9ucykge1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBvcHRpb25zLnBvcnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBNYWtlIGl0IHBvc3NpYmxlIHRvIGNoYW5nZSBgb3B0aW9ucy5wcmVmaXhVcmxgXG4gICAgICAgICAgICBsZXQgeyBwcmVmaXhVcmwgfSA9IG9wdGlvbnM7XG4gICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob3B0aW9ucywgJ3ByZWZpeFVybCcsIHtcbiAgICAgICAgICAgICAgICBzZXQ6ICh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB1cmwgPSBvcHRpb25zLnVybDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCF1cmwuaHJlZi5zdGFydHNXaXRoKHZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgY2hhbmdlIFxcYHByZWZpeFVybFxcYCBmcm9tICR7cHJlZml4VXJsfSB0byAke3ZhbHVlfTogJHt1cmwuaHJlZn1gKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBvcHRpb25zLnVybCA9IG5ldyB1cmxfMS5VUkwodmFsdWUgKyB1cmwuaHJlZi5zbGljZShwcmVmaXhVcmwubGVuZ3RoKSk7XG4gICAgICAgICAgICAgICAgICAgIHByZWZpeFVybCA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZ2V0OiAoKSA9PiBwcmVmaXhVcmxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgLy8gU3VwcG9ydCBVTklYIHNvY2tldHNcbiAgICAgICAgICAgIGxldCB7IHByb3RvY29sIH0gPSBvcHRpb25zLnVybDtcbiAgICAgICAgICAgIGlmIChwcm90b2NvbCA9PT0gJ3VuaXg6Jykge1xuICAgICAgICAgICAgICAgIHByb3RvY29sID0gJ2h0dHA6JztcbiAgICAgICAgICAgICAgICBvcHRpb25zLnVybCA9IG5ldyB1cmxfMS5VUkwoYGh0dHA6Ly91bml4JHtvcHRpb25zLnVybC5wYXRobmFtZX0ke29wdGlvbnMudXJsLnNlYXJjaH1gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIFNldCBzZWFyY2ggcGFyYW1zXG4gICAgICAgICAgICBpZiAob3B0aW9ucy5zZWFyY2hQYXJhbXMpIHtcbiAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWJhc2UtdG8tc3RyaW5nXG4gICAgICAgICAgICAgICAgb3B0aW9ucy51cmwuc2VhcmNoID0gb3B0aW9ucy5zZWFyY2hQYXJhbXMudG9TdHJpbmcoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIFByb3RvY29sIGNoZWNrXG4gICAgICAgICAgICBpZiAocHJvdG9jb2wgIT09ICdodHRwOicgJiYgcHJvdG9jb2wgIT09ICdodHRwczonKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFVuc3VwcG9ydGVkUHJvdG9jb2xFcnJvcihvcHRpb25zKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIFVwZGF0ZSBgdXNlcm5hbWVgXG4gICAgICAgICAgICBpZiAob3B0aW9ucy51c2VybmFtZSA9PT0gJycpIHtcbiAgICAgICAgICAgICAgICBvcHRpb25zLnVzZXJuYW1lID0gb3B0aW9ucy51cmwudXNlcm5hbWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBvcHRpb25zLnVybC51c2VybmFtZSA9IG9wdGlvbnMudXNlcm5hbWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBVcGRhdGUgYHBhc3N3b3JkYFxuICAgICAgICAgICAgaWYgKG9wdGlvbnMucGFzc3dvcmQgPT09ICcnKSB7XG4gICAgICAgICAgICAgICAgb3B0aW9ucy5wYXNzd29yZCA9IG9wdGlvbnMudXJsLnBhc3N3b3JkO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgb3B0aW9ucy51cmwucGFzc3dvcmQgPSBvcHRpb25zLnBhc3N3b3JkO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIGBvcHRpb25zLmNvb2tpZUphcmBcbiAgICAgICAgY29uc3QgeyBjb29raWVKYXIgfSA9IG9wdGlvbnM7XG4gICAgICAgIGlmIChjb29raWVKYXIpIHtcbiAgICAgICAgICAgIGxldCB7IHNldENvb2tpZSwgZ2V0Q29va2llU3RyaW5nIH0gPSBjb29raWVKYXI7XG4gICAgICAgICAgICBpc18xLmFzc2VydC5mdW5jdGlvbl8oc2V0Q29va2llKTtcbiAgICAgICAgICAgIGlzXzEuYXNzZXJ0LmZ1bmN0aW9uXyhnZXRDb29raWVTdHJpbmcpO1xuICAgICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQ6IEhvcnJpYmxlIGB0b3VnaC1jb29raWVgIHYzIGNoZWNrICovXG4gICAgICAgICAgICBpZiAoc2V0Q29va2llLmxlbmd0aCA9PT0gNCAmJiBnZXRDb29raWVTdHJpbmcubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgc2V0Q29va2llID0gdXRpbF8xLnByb21pc2lmeShzZXRDb29raWUuYmluZChvcHRpb25zLmNvb2tpZUphcikpO1xuICAgICAgICAgICAgICAgIGdldENvb2tpZVN0cmluZyA9IHV0aWxfMS5wcm9taXNpZnkoZ2V0Q29va2llU3RyaW5nLmJpbmQob3B0aW9ucy5jb29raWVKYXIpKTtcbiAgICAgICAgICAgICAgICBvcHRpb25zLmNvb2tpZUphciA9IHtcbiAgICAgICAgICAgICAgICAgICAgc2V0Q29va2llLFxuICAgICAgICAgICAgICAgICAgICBnZXRDb29raWVTdHJpbmc6IGdldENvb2tpZVN0cmluZ1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gYG9wdGlvbnMuY2FjaGVgXG4gICAgICAgIGNvbnN0IHsgY2FjaGUgfSA9IG9wdGlvbnM7XG4gICAgICAgIGlmIChjYWNoZSkge1xuICAgICAgICAgICAgaWYgKCFjYWNoZWFibGVTdG9yZS5oYXMoY2FjaGUpKSB7XG4gICAgICAgICAgICAgICAgY2FjaGVhYmxlU3RvcmUuc2V0KGNhY2hlLCBuZXcgQ2FjaGVhYmxlUmVxdWVzdCgoKHJlcXVlc3RPcHRpb25zLCBoYW5kbGVyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHJlcXVlc3RPcHRpb25zW2tSZXF1ZXN0XShyZXF1ZXN0T3B0aW9ucywgaGFuZGxlcik7XG4gICAgICAgICAgICAgICAgICAgIC8vIFRPRE86IHJlbW92ZSB0aGlzIHdoZW4gYGNhY2hlYWJsZS1yZXF1ZXN0YCBzdXBwb3J0cyBhc3luYyByZXF1ZXN0IGZ1bmN0aW9ucy5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzXzEuZGVmYXVsdC5wcm9taXNlKHJlc3VsdCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdlIG9ubHkgbmVlZCB0byBpbXBsZW1lbnQgdGhlIGVycm9yIGhhbmRsZXIgaW4gb3JkZXIgdG8gc3VwcG9ydCBIVFRQMiBjYWNoaW5nLlxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIHJlc3VsdCB3aWxsIGJlIGEgcHJvbWlzZSBhbnl3YXkuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQub25jZSA9IChldmVudCwgaGFuZGxlcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChldmVudCA9PT0gJ2Vycm9yJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuY2F0Y2goaGFuZGxlcik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGV2ZW50ID09PSAnYWJvcnQnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSBlbXB0eSBjYXRjaCBpcyBuZWVkZWQgaGVyZSBpbiBjYXNlIHdoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXQgcmVqZWN0cyBiZWZvcmUgaXQncyBgYXdhaXRgZWQgaW4gYF9tYWtlUmVxdWVzdGAuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlcXVlc3QgPSAoYXdhaXQgcmVzdWx0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0Lm9uY2UoJ2Fib3J0JywgaGFuZGxlcik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXRjaCAoX2EpIHsgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQ6IHNhZmV0eSBjaGVjayAqL1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gSFRUUDIgcHJvbWlzZSBldmVudDogJHtldmVudH1gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgICAgICB9KSwgY2FjaGUpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBgb3B0aW9ucy5jYWNoZU9wdGlvbnNgXG4gICAgICAgIG9wdGlvbnMuY2FjaGVPcHRpb25zID0geyAuLi5vcHRpb25zLmNhY2hlT3B0aW9ucyB9O1xuICAgICAgICAvLyBgb3B0aW9ucy5kbnNDYWNoZWBcbiAgICAgICAgaWYgKG9wdGlvbnMuZG5zQ2FjaGUgPT09IHRydWUpIHtcbiAgICAgICAgICAgIGlmICghZ2xvYmFsRG5zQ2FjaGUpIHtcbiAgICAgICAgICAgICAgICBnbG9iYWxEbnNDYWNoZSA9IG5ldyBjYWNoZWFibGVfbG9va3VwXzEuZGVmYXVsdCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb3B0aW9ucy5kbnNDYWNoZSA9IGdsb2JhbERuc0NhY2hlO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKCFpc18xLmRlZmF1bHQudW5kZWZpbmVkKG9wdGlvbnMuZG5zQ2FjaGUpICYmICFvcHRpb25zLmRuc0NhY2hlLmxvb2t1cCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgUGFyYW1ldGVyIFxcYGRuc0NhY2hlXFxgIG11c3QgYmUgYSBDYWNoZWFibGVMb29rdXAgaW5zdGFuY2Ugb3IgYSBib29sZWFuLCBnb3QgJHtpc18xLmRlZmF1bHQob3B0aW9ucy5kbnNDYWNoZSl9YCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gYG9wdGlvbnMudGltZW91dGBcbiAgICAgICAgaWYgKGlzXzEuZGVmYXVsdC5udW1iZXIob3B0aW9ucy50aW1lb3V0KSkge1xuICAgICAgICAgICAgb3B0aW9ucy50aW1lb3V0ID0geyByZXF1ZXN0OiBvcHRpb25zLnRpbWVvdXQgfTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChkZWZhdWx0cyAmJiBvcHRpb25zLnRpbWVvdXQgIT09IGRlZmF1bHRzLnRpbWVvdXQpIHtcbiAgICAgICAgICAgIG9wdGlvbnMudGltZW91dCA9IHtcbiAgICAgICAgICAgICAgICAuLi5kZWZhdWx0cy50aW1lb3V0LFxuICAgICAgICAgICAgICAgIC4uLm9wdGlvbnMudGltZW91dFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIG9wdGlvbnMudGltZW91dCA9IHsgLi4ub3B0aW9ucy50aW1lb3V0IH07XG4gICAgICAgIH1cbiAgICAgICAgLy8gYG9wdGlvbnMuY29udGV4dGBcbiAgICAgICAgaWYgKCFvcHRpb25zLmNvbnRleHQpIHtcbiAgICAgICAgICAgIG9wdGlvbnMuY29udGV4dCA9IHt9O1xuICAgICAgICB9XG4gICAgICAgIC8vIGBvcHRpb25zLmhvb2tzYFxuICAgICAgICBjb25zdCBhcmVIb29rc0RlZmF1bHQgPSBvcHRpb25zLmhvb2tzID09PSAoZGVmYXVsdHMgPT09IG51bGwgfHwgZGVmYXVsdHMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGRlZmF1bHRzLmhvb2tzKTtcbiAgICAgICAgb3B0aW9ucy5ob29rcyA9IHsgLi4ub3B0aW9ucy5ob29rcyB9O1xuICAgICAgICBmb3IgKGNvbnN0IGV2ZW50IG9mIGV4cG9ydHMua25vd25Ib29rRXZlbnRzKSB7XG4gICAgICAgICAgICBpZiAoZXZlbnQgaW4gb3B0aW9ucy5ob29rcykge1xuICAgICAgICAgICAgICAgIGlmIChpc18xLmRlZmF1bHQuYXJyYXkob3B0aW9ucy5ob29rc1tldmVudF0pKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L1R5cGVTY3JpcHQvaXNzdWVzLzMxNDQ1I2lzc3VlY29tbWVudC01NzY5MjkwNDRcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5ob29rc1tldmVudF0gPSBbLi4ub3B0aW9ucy5ob29rc1tldmVudF1dO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgUGFyYW1ldGVyIFxcYCR7ZXZlbnR9XFxgIG11c3QgYmUgYW4gQXJyYXksIGdvdCAke2lzXzEuZGVmYXVsdChvcHRpb25zLmhvb2tzW2V2ZW50XSl9YCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgb3B0aW9ucy5ob29rc1tldmVudF0gPSBbXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoZGVmYXVsdHMgJiYgIWFyZUhvb2tzRGVmYXVsdCkge1xuICAgICAgICAgICAgZm9yIChjb25zdCBldmVudCBvZiBleHBvcnRzLmtub3duSG9va0V2ZW50cykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGRlZmF1bHRIb29rcyA9IGRlZmF1bHRzLmhvb2tzW2V2ZW50XTtcbiAgICAgICAgICAgICAgICBpZiAoZGVmYXVsdEhvb2tzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQvVHlwZVNjcmlwdC9pc3N1ZXMvMzE0NDUjaXNzdWVjb21tZW50LTU3NjkyOTA0NFxuICAgICAgICAgICAgICAgICAgICBvcHRpb25zLmhvb2tzW2V2ZW50XSA9IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmRlZmF1bHRzLmhvb2tzW2V2ZW50XSxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLm9wdGlvbnMuaG9va3NbZXZlbnRdXG4gICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIEROUyBvcHRpb25zXG4gICAgICAgIGlmICgnZmFtaWx5JyBpbiBvcHRpb25zKSB7XG4gICAgICAgICAgICBkZXByZWNhdGlvbl93YXJuaW5nXzEuZGVmYXVsdCgnXCJvcHRpb25zLmZhbWlseVwiIHdhcyBuZXZlciBkb2N1bWVudGVkLCBwbGVhc2UgdXNlIFwib3B0aW9ucy5kbnNMb29rdXBJcFZlcnNpb25cIicpO1xuICAgICAgICB9XG4gICAgICAgIC8vIEhUVFBTIG9wdGlvbnNcbiAgICAgICAgaWYgKGRlZmF1bHRzID09PSBudWxsIHx8IGRlZmF1bHRzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBkZWZhdWx0cy5odHRwcykge1xuICAgICAgICAgICAgb3B0aW9ucy5odHRwcyA9IHsgLi4uZGVmYXVsdHMuaHR0cHMsIC4uLm9wdGlvbnMuaHR0cHMgfTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoJ3JlamVjdFVuYXV0aG9yaXplZCcgaW4gb3B0aW9ucykge1xuICAgICAgICAgICAgZGVwcmVjYXRpb25fd2FybmluZ18xLmRlZmF1bHQoJ1wib3B0aW9ucy5yZWplY3RVbmF1dGhvcml6ZWRcIiBpcyBub3cgZGVwcmVjYXRlZCwgcGxlYXNlIHVzZSBcIm9wdGlvbnMuaHR0cHMucmVqZWN0VW5hdXRob3JpemVkXCInKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoJ2NoZWNrU2VydmVySWRlbnRpdHknIGluIG9wdGlvbnMpIHtcbiAgICAgICAgICAgIGRlcHJlY2F0aW9uX3dhcm5pbmdfMS5kZWZhdWx0KCdcIm9wdGlvbnMuY2hlY2tTZXJ2ZXJJZGVudGl0eVwiIHdhcyBuZXZlciBkb2N1bWVudGVkLCBwbGVhc2UgdXNlIFwib3B0aW9ucy5odHRwcy5jaGVja1NlcnZlcklkZW50aXR5XCInKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoJ2NhJyBpbiBvcHRpb25zKSB7XG4gICAgICAgICAgICBkZXByZWNhdGlvbl93YXJuaW5nXzEuZGVmYXVsdCgnXCJvcHRpb25zLmNhXCIgd2FzIG5ldmVyIGRvY3VtZW50ZWQsIHBsZWFzZSB1c2UgXCJvcHRpb25zLmh0dHBzLmNlcnRpZmljYXRlQXV0aG9yaXR5XCInKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoJ2tleScgaW4gb3B0aW9ucykge1xuICAgICAgICAgICAgZGVwcmVjYXRpb25fd2FybmluZ18xLmRlZmF1bHQoJ1wib3B0aW9ucy5rZXlcIiB3YXMgbmV2ZXIgZG9jdW1lbnRlZCwgcGxlYXNlIHVzZSBcIm9wdGlvbnMuaHR0cHMua2V5XCInKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoJ2NlcnQnIGluIG9wdGlvbnMpIHtcbiAgICAgICAgICAgIGRlcHJlY2F0aW9uX3dhcm5pbmdfMS5kZWZhdWx0KCdcIm9wdGlvbnMuY2VydFwiIHdhcyBuZXZlciBkb2N1bWVudGVkLCBwbGVhc2UgdXNlIFwib3B0aW9ucy5odHRwcy5jZXJ0aWZpY2F0ZVwiJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCdwYXNzcGhyYXNlJyBpbiBvcHRpb25zKSB7XG4gICAgICAgICAgICBkZXByZWNhdGlvbl93YXJuaW5nXzEuZGVmYXVsdCgnXCJvcHRpb25zLnBhc3NwaHJhc2VcIiB3YXMgbmV2ZXIgZG9jdW1lbnRlZCwgcGxlYXNlIHVzZSBcIm9wdGlvbnMuaHR0cHMucGFzc3BocmFzZVwiJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCdwZngnIGluIG9wdGlvbnMpIHtcbiAgICAgICAgICAgIGRlcHJlY2F0aW9uX3dhcm5pbmdfMS5kZWZhdWx0KCdcIm9wdGlvbnMucGZ4XCIgd2FzIG5ldmVyIGRvY3VtZW50ZWQsIHBsZWFzZSB1c2UgXCJvcHRpb25zLmh0dHBzLnBmeFwiJyk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gT3RoZXIgb3B0aW9uc1xuICAgICAgICBpZiAoJ2ZvbGxvd1JlZGlyZWN0cycgaW4gb3B0aW9ucykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIGBmb2xsb3dSZWRpcmVjdHNgIG9wdGlvbiBkb2VzIG5vdCBleGlzdC4gVXNlIGBmb2xsb3dSZWRpcmVjdGAgaW5zdGVhZC4nKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob3B0aW9ucy5hZ2VudCkge1xuICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gb3B0aW9ucy5hZ2VudCkge1xuICAgICAgICAgICAgICAgIGlmIChrZXkgIT09ICdodHRwJyAmJiBrZXkgIT09ICdodHRwcycgJiYga2V5ICE9PSAnaHR0cDInKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYEV4cGVjdGVkIHRoZSBcXGBvcHRpb25zLmFnZW50XFxgIHByb3BlcnRpZXMgdG8gYmUgXFxgaHR0cFxcYCwgXFxgaHR0cHNcXGAgb3IgXFxgaHR0cDJcXGAsIGdvdCBcXGAke2tleX1cXGBgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgb3B0aW9ucy5tYXhSZWRpcmVjdHMgPSAoX2UgPSBvcHRpb25zLm1heFJlZGlyZWN0cykgIT09IG51bGwgJiYgX2UgIT09IHZvaWQgMCA/IF9lIDogMDtcbiAgICAgICAgLy8gU2V0IG5vbi1lbnVtZXJhYmxlIHByb3BlcnRpZXNcbiAgICAgICAgZXhwb3J0cy5zZXROb25FbnVtZXJhYmxlUHJvcGVydGllcyhbZGVmYXVsdHMsIHJhd09wdGlvbnNdLCBvcHRpb25zKTtcbiAgICAgICAgcmV0dXJuIG5vcm1hbGl6ZV9hcmd1bWVudHNfMS5kZWZhdWx0KG9wdGlvbnMsIGRlZmF1bHRzKTtcbiAgICB9XG4gICAgX2xvY2tXcml0ZSgpIHtcbiAgICAgICAgY29uc3Qgb25Mb2NrZWRXcml0ZSA9ICgpID0+IHtcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBwYXlsb2FkIGhhcyBiZWVuIGFscmVhZHkgcHJvdmlkZWQnKTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy53cml0ZSA9IG9uTG9ja2VkV3JpdGU7XG4gICAgICAgIHRoaXMuZW5kID0gb25Mb2NrZWRXcml0ZTtcbiAgICB9XG4gICAgX3VubG9ja1dyaXRlKCkge1xuICAgICAgICB0aGlzLndyaXRlID0gc3VwZXIud3JpdGU7XG4gICAgICAgIHRoaXMuZW5kID0gc3VwZXIuZW5kO1xuICAgIH1cbiAgICBhc3luYyBfZmluYWxpemVCb2R5KCkge1xuICAgICAgICBjb25zdCB7IG9wdGlvbnMgfSA9IHRoaXM7XG4gICAgICAgIGNvbnN0IHsgaGVhZGVycyB9ID0gb3B0aW9ucztcbiAgICAgICAgY29uc3QgaXNGb3JtID0gIWlzXzEuZGVmYXVsdC51bmRlZmluZWQob3B0aW9ucy5mb3JtKTtcbiAgICAgICAgY29uc3QgaXNKU09OID0gIWlzXzEuZGVmYXVsdC51bmRlZmluZWQob3B0aW9ucy5qc29uKTtcbiAgICAgICAgY29uc3QgaXNCb2R5ID0gIWlzXzEuZGVmYXVsdC51bmRlZmluZWQob3B0aW9ucy5ib2R5KTtcbiAgICAgICAgY29uc3QgaGFzUGF5bG9hZCA9IGlzRm9ybSB8fCBpc0pTT04gfHwgaXNCb2R5O1xuICAgICAgICBjb25zdCBjYW5ub3RIYXZlQm9keSA9IGV4cG9ydHMud2l0aG91dEJvZHkuaGFzKG9wdGlvbnMubWV0aG9kKSAmJiAhKG9wdGlvbnMubWV0aG9kID09PSAnR0VUJyAmJiBvcHRpb25zLmFsbG93R2V0Qm9keSk7XG4gICAgICAgIHRoaXMuX2Nhbm5vdEhhdmVCb2R5ID0gY2Fubm90SGF2ZUJvZHk7XG4gICAgICAgIGlmIChoYXNQYXlsb2FkKSB7XG4gICAgICAgICAgICBpZiAoY2Fubm90SGF2ZUJvZHkpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBUaGUgXFxgJHtvcHRpb25zLm1ldGhvZH1cXGAgbWV0aG9kIGNhbm5vdCBiZSB1c2VkIHdpdGggYSBib2R5YCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoW2lzQm9keSwgaXNGb3JtLCBpc0pTT05dLmZpbHRlcihpc1RydWUgPT4gaXNUcnVlKS5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIGBib2R5YCwgYGpzb25gIGFuZCBgZm9ybWAgb3B0aW9ucyBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXNCb2R5ICYmXG4gICAgICAgICAgICAgICAgIShvcHRpb25zLmJvZHkgaW5zdGFuY2VvZiBzdHJlYW1fMS5SZWFkYWJsZSkgJiZcbiAgICAgICAgICAgICAgICAhaXNfMS5kZWZhdWx0LnN0cmluZyhvcHRpb25zLmJvZHkpICYmXG4gICAgICAgICAgICAgICAgIWlzXzEuZGVmYXVsdC5idWZmZXIob3B0aW9ucy5ib2R5KSAmJlxuICAgICAgICAgICAgICAgICFpc19mb3JtX2RhdGFfMS5kZWZhdWx0KG9wdGlvbnMuYm9keSkpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgYGJvZHlgIG9wdGlvbiBtdXN0IGJlIGEgc3RyZWFtLlJlYWRhYmxlLCBzdHJpbmcgb3IgQnVmZmVyJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXNGb3JtICYmICFpc18xLmRlZmF1bHQub2JqZWN0KG9wdGlvbnMuZm9ybSkpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgYGZvcm1gIG9wdGlvbiBtdXN0IGJlIGFuIE9iamVjdCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIC8vIFNlcmlhbGl6ZSBib2R5XG4gICAgICAgICAgICAgICAgY29uc3Qgbm9Db250ZW50VHlwZSA9ICFpc18xLmRlZmF1bHQuc3RyaW5nKGhlYWRlcnNbJ2NvbnRlbnQtdHlwZSddKTtcbiAgICAgICAgICAgICAgICBpZiAoaXNCb2R5KSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFNwZWNpYWwgY2FzZSBmb3IgaHR0cHM6Ly9naXRodWIuY29tL2Zvcm0tZGF0YS9mb3JtLWRhdGFcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzX2Zvcm1fZGF0YV8xLmRlZmF1bHQob3B0aW9ucy5ib2R5KSAmJiBub0NvbnRlbnRUeXBlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzWydjb250ZW50LXR5cGUnXSA9IGBtdWx0aXBhcnQvZm9ybS1kYXRhOyBib3VuZGFyeT0ke29wdGlvbnMuYm9keS5nZXRCb3VuZGFyeSgpfWA7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdGhpc1trQm9keV0gPSBvcHRpb25zLmJvZHk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGlzRm9ybSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAobm9Db250ZW50VHlwZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyc1snY29udGVudC10eXBlJ10gPSAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aGlzW2tCb2R5XSA9IChuZXcgdXJsXzEuVVJMU2VhcmNoUGFyYW1zKG9wdGlvbnMuZm9ybSkpLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpZiAobm9Db250ZW50VHlwZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyc1snY29udGVudC10eXBlJ10gPSAnYXBwbGljYXRpb24vanNvbic7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdGhpc1trQm9keV0gPSBvcHRpb25zLnN0cmluZ2lmeUpzb24ob3B0aW9ucy5qc29uKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgdXBsb2FkQm9keVNpemUgPSBhd2FpdCBnZXRfYm9keV9zaXplXzEuZGVmYXVsdCh0aGlzW2tCb2R5XSwgb3B0aW9ucy5oZWFkZXJzKTtcbiAgICAgICAgICAgICAgICAvLyBTZWUgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzcyMzAjc2VjdGlvbi0zLjMuMlxuICAgICAgICAgICAgICAgIC8vIEEgdXNlciBhZ2VudCBTSE9VTEQgc2VuZCBhIENvbnRlbnQtTGVuZ3RoIGluIGEgcmVxdWVzdCBtZXNzYWdlIHdoZW5cbiAgICAgICAgICAgICAgICAvLyBubyBUcmFuc2Zlci1FbmNvZGluZyBpcyBzZW50IGFuZCB0aGUgcmVxdWVzdCBtZXRob2QgZGVmaW5lcyBhIG1lYW5pbmdcbiAgICAgICAgICAgICAgICAvLyBmb3IgYW4gZW5jbG9zZWQgcGF5bG9hZCBib2R5LiAgRm9yIGV4YW1wbGUsIGEgQ29udGVudC1MZW5ndGggaGVhZGVyXG4gICAgICAgICAgICAgICAgLy8gZmllbGQgaXMgbm9ybWFsbHkgc2VudCBpbiBhIFBPU1QgcmVxdWVzdCBldmVuIHdoZW4gdGhlIHZhbHVlIGlzIDBcbiAgICAgICAgICAgICAgICAvLyAoaW5kaWNhdGluZyBhbiBlbXB0eSBwYXlsb2FkIGJvZHkpLiAgQSB1c2VyIGFnZW50IFNIT1VMRCBOT1Qgc2VuZCBhXG4gICAgICAgICAgICAgICAgLy8gQ29udGVudC1MZW5ndGggaGVhZGVyIGZpZWxkIHdoZW4gdGhlIHJlcXVlc3QgbWVzc2FnZSBkb2VzIG5vdCBjb250YWluXG4gICAgICAgICAgICAgICAgLy8gYSBwYXlsb2FkIGJvZHkgYW5kIHRoZSBtZXRob2Qgc2VtYW50aWNzIGRvIG5vdCBhbnRpY2lwYXRlIHN1Y2ggYVxuICAgICAgICAgICAgICAgIC8vIGJvZHkuXG4gICAgICAgICAgICAgICAgaWYgKGlzXzEuZGVmYXVsdC51bmRlZmluZWQoaGVhZGVyc1snY29udGVudC1sZW5ndGgnXSkgJiYgaXNfMS5kZWZhdWx0LnVuZGVmaW5lZChoZWFkZXJzWyd0cmFuc2Zlci1lbmNvZGluZyddKSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWNhbm5vdEhhdmVCb2R5ICYmICFpc18xLmRlZmF1bHQudW5kZWZpbmVkKHVwbG9hZEJvZHlTaXplKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyc1snY29udGVudC1sZW5ndGgnXSA9IFN0cmluZyh1cGxvYWRCb2R5U2l6ZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoY2Fubm90SGF2ZUJvZHkpIHtcbiAgICAgICAgICAgIHRoaXMuX2xvY2tXcml0ZSgpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fdW5sb2NrV3JpdGUoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzW2tCb2R5U2l6ZV0gPSBOdW1iZXIoaGVhZGVyc1snY29udGVudC1sZW5ndGgnXSkgfHwgdW5kZWZpbmVkO1xuICAgIH1cbiAgICBhc3luYyBfb25SZXNwb25zZUJhc2UocmVzcG9uc2UpIHtcbiAgICAgICAgY29uc3QgeyBvcHRpb25zIH0gPSB0aGlzO1xuICAgICAgICBjb25zdCB7IHVybCB9ID0gb3B0aW9ucztcbiAgICAgICAgdGhpc1trT3JpZ2luYWxSZXNwb25zZV0gPSByZXNwb25zZTtcbiAgICAgICAgaWYgKG9wdGlvbnMuZGVjb21wcmVzcykge1xuICAgICAgICAgICAgcmVzcG9uc2UgPSBkZWNvbXByZXNzUmVzcG9uc2UocmVzcG9uc2UpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHN0YXR1c0NvZGUgPSByZXNwb25zZS5zdGF0dXNDb2RlO1xuICAgICAgICBjb25zdCB0eXBlZFJlc3BvbnNlID0gcmVzcG9uc2U7XG4gICAgICAgIHR5cGVkUmVzcG9uc2Uuc3RhdHVzTWVzc2FnZSA9IHR5cGVkUmVzcG9uc2Uuc3RhdHVzTWVzc2FnZSA/IHR5cGVkUmVzcG9uc2Uuc3RhdHVzTWVzc2FnZSA6IGh0dHAuU1RBVFVTX0NPREVTW3N0YXR1c0NvZGVdO1xuICAgICAgICB0eXBlZFJlc3BvbnNlLnVybCA9IG9wdGlvbnMudXJsLnRvU3RyaW5nKCk7XG4gICAgICAgIHR5cGVkUmVzcG9uc2UucmVxdWVzdFVybCA9IHRoaXMucmVxdWVzdFVybDtcbiAgICAgICAgdHlwZWRSZXNwb25zZS5yZWRpcmVjdFVybHMgPSB0aGlzLnJlZGlyZWN0cztcbiAgICAgICAgdHlwZWRSZXNwb25zZS5yZXF1ZXN0ID0gdGhpcztcbiAgICAgICAgdHlwZWRSZXNwb25zZS5pc0Zyb21DYWNoZSA9IHJlc3BvbnNlLmZyb21DYWNoZSB8fCBmYWxzZTtcbiAgICAgICAgdHlwZWRSZXNwb25zZS5pcCA9IHRoaXMuaXA7XG4gICAgICAgIHR5cGVkUmVzcG9uc2UucmV0cnlDb3VudCA9IHRoaXMucmV0cnlDb3VudDtcbiAgICAgICAgdGhpc1trSXNGcm9tQ2FjaGVdID0gdHlwZWRSZXNwb25zZS5pc0Zyb21DYWNoZTtcbiAgICAgICAgdGhpc1trUmVzcG9uc2VTaXplXSA9IE51bWJlcihyZXNwb25zZS5oZWFkZXJzWydjb250ZW50LWxlbmd0aCddKSB8fCB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXNba1Jlc3BvbnNlXSA9IHJlc3BvbnNlO1xuICAgICAgICByZXNwb25zZS5vbmNlKCdlbmQnLCAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzW2tSZXNwb25zZVNpemVdID0gdGhpc1trRG93bmxvYWRlZFNpemVdO1xuICAgICAgICAgICAgdGhpcy5lbWl0KCdkb3dubG9hZFByb2dyZXNzJywgdGhpcy5kb3dubG9hZFByb2dyZXNzKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJlc3BvbnNlLm9uY2UoJ2Vycm9yJywgKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAvLyBGb3JjZSBjbGVhbi11cCwgYmVjYXVzZSBzb21lIHBhY2thZ2VzIGRvbid0IGRvIHRoaXMuXG4gICAgICAgICAgICAvLyBUT0RPOiBGaXggZGVjb21wcmVzcy1yZXNwb25zZVxuICAgICAgICAgICAgcmVzcG9uc2UuZGVzdHJveSgpO1xuICAgICAgICAgICAgdGhpcy5fYmVmb3JlRXJyb3IobmV3IFJlYWRFcnJvcihlcnJvciwgdGhpcykpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmVzcG9uc2Uub25jZSgnYWJvcnRlZCcsICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2JlZm9yZUVycm9yKG5ldyBSZWFkRXJyb3Ioe1xuICAgICAgICAgICAgICAgIG5hbWU6ICdFcnJvcicsXG4gICAgICAgICAgICAgICAgbWVzc2FnZTogJ1RoZSBzZXJ2ZXIgYWJvcnRlZCBwZW5kaW5nIHJlcXVlc3QnLFxuICAgICAgICAgICAgICAgIGNvZGU6ICdFQ09OTlJFU0VUJ1xuICAgICAgICAgICAgfSwgdGhpcykpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5lbWl0KCdkb3dubG9hZFByb2dyZXNzJywgdGhpcy5kb3dubG9hZFByb2dyZXNzKTtcbiAgICAgICAgY29uc3QgcmF3Q29va2llcyA9IHJlc3BvbnNlLmhlYWRlcnNbJ3NldC1jb29raWUnXTtcbiAgICAgICAgaWYgKGlzXzEuZGVmYXVsdC5vYmplY3Qob3B0aW9ucy5jb29raWVKYXIpICYmIHJhd0Nvb2tpZXMpIHtcbiAgICAgICAgICAgIGxldCBwcm9taXNlcyA9IHJhd0Nvb2tpZXMubWFwKGFzeW5jIChyYXdDb29raWUpID0+IG9wdGlvbnMuY29va2llSmFyLnNldENvb2tpZShyYXdDb29raWUsIHVybC50b1N0cmluZygpKSk7XG4gICAgICAgICAgICBpZiAob3B0aW9ucy5pZ25vcmVJbnZhbGlkQ29va2llcykge1xuICAgICAgICAgICAgICAgIHByb21pc2VzID0gcHJvbWlzZXMubWFwKGFzeW5jIChwKSA9PiBwLmNhdGNoKCgpID0+IHsgfSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChwcm9taXNlcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9iZWZvcmVFcnJvcihlcnJvcik7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChvcHRpb25zLmZvbGxvd1JlZGlyZWN0ICYmIHJlc3BvbnNlLmhlYWRlcnMubG9jYXRpb24gJiYgcmVkaXJlY3RDb2Rlcy5oYXMoc3RhdHVzQ29kZSkpIHtcbiAgICAgICAgICAgIC8vIFdlJ3JlIGJlaW5nIHJlZGlyZWN0ZWQsIHdlIGRvbid0IGNhcmUgYWJvdXQgdGhlIHJlc3BvbnNlLlxuICAgICAgICAgICAgLy8gSXQnZCBiZSBiZXN0IHRvIGFib3J0IHRoZSByZXF1ZXN0LCBidXQgd2UgY2FuJ3QgYmVjYXVzZVxuICAgICAgICAgICAgLy8gd2Ugd291bGQgaGF2ZSB0byBzYWNyaWZpY2UgdGhlIFRDUCBjb25uZWN0aW9uLiBXZSBkb24ndCB3YW50IHRoYXQuXG4gICAgICAgICAgICByZXNwb25zZS5yZXN1bWUoKTtcbiAgICAgICAgICAgIGlmICh0aGlzW2tSZXF1ZXN0XSkge1xuICAgICAgICAgICAgICAgIHRoaXNba0NhbmNlbFRpbWVvdXRzXSgpO1xuICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZHluYW1pYy1kZWxldGVcbiAgICAgICAgICAgICAgICBkZWxldGUgdGhpc1trUmVxdWVzdF07XG4gICAgICAgICAgICAgICAgdGhpc1trVW5wcm94eUV2ZW50c10oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHNob3VsZEJlR2V0ID0gc3RhdHVzQ29kZSA9PT0gMzAzICYmIG9wdGlvbnMubWV0aG9kICE9PSAnR0VUJyAmJiBvcHRpb25zLm1ldGhvZCAhPT0gJ0hFQUQnO1xuICAgICAgICAgICAgaWYgKHNob3VsZEJlR2V0IHx8ICFvcHRpb25zLm1ldGhvZFJld3JpdGluZykge1xuICAgICAgICAgICAgICAgIC8vIFNlcnZlciByZXNwb25kZWQgd2l0aCBcInNlZSBvdGhlclwiLCBpbmRpY2F0aW5nIHRoYXQgdGhlIHJlc291cmNlIGV4aXN0cyBhdCBhbm90aGVyIGxvY2F0aW9uLFxuICAgICAgICAgICAgICAgIC8vIGFuZCB0aGUgY2xpZW50IHNob3VsZCByZXF1ZXN0IGl0IGZyb20gdGhhdCBsb2NhdGlvbiB2aWEgR0VUIG9yIEhFQUQuXG4gICAgICAgICAgICAgICAgb3B0aW9ucy5tZXRob2QgPSAnR0VUJztcbiAgICAgICAgICAgICAgICBpZiAoJ2JvZHknIGluIG9wdGlvbnMpIHtcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIG9wdGlvbnMuYm9keTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKCdqc29uJyBpbiBvcHRpb25zKSB7XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBvcHRpb25zLmpzb247XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICgnZm9ybScgaW4gb3B0aW9ucykge1xuICAgICAgICAgICAgICAgICAgICBkZWxldGUgb3B0aW9ucy5mb3JtO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzW2tCb2R5XSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICBkZWxldGUgb3B0aW9ucy5oZWFkZXJzWydjb250ZW50LWxlbmd0aCddO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMucmVkaXJlY3RzLmxlbmd0aCA+PSBvcHRpb25zLm1heFJlZGlyZWN0cykge1xuICAgICAgICAgICAgICAgIHRoaXMuX2JlZm9yZUVycm9yKG5ldyBNYXhSZWRpcmVjdHNFcnJvcih0aGlzKSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAvLyBEbyBub3QgcmVtb3ZlLiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3NpbmRyZXNvcmh1cy9nb3QvcHVsbC8yMTRcbiAgICAgICAgICAgICAgICBjb25zdCByZWRpcmVjdEJ1ZmZlciA9IEJ1ZmZlci5mcm9tKHJlc3BvbnNlLmhlYWRlcnMubG9jYXRpb24sICdiaW5hcnknKS50b1N0cmluZygpO1xuICAgICAgICAgICAgICAgIC8vIEhhbmRsZXMgaW52YWxpZCBVUkxzLiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3NpbmRyZXNvcmh1cy9nb3QvaXNzdWVzLzYwNFxuICAgICAgICAgICAgICAgIGNvbnN0IHJlZGlyZWN0VXJsID0gbmV3IHVybF8xLlVSTChyZWRpcmVjdEJ1ZmZlciwgdXJsKTtcbiAgICAgICAgICAgICAgICBjb25zdCByZWRpcmVjdFN0cmluZyA9IHJlZGlyZWN0VXJsLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICAgICAgZGVjb2RlVVJJKHJlZGlyZWN0U3RyaW5nKTtcbiAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8taW5uZXItZGVjbGFyYXRpb25zXG4gICAgICAgICAgICAgICAgZnVuY3Rpb24gaXNVbml4U29ja2V0VVJMKHVybCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdXJsLnByb3RvY29sID09PSAndW5peDonIHx8IHVybC5ob3N0bmFtZSA9PT0gJ3VuaXgnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoIWlzVW5peFNvY2tldFVSTCh1cmwpICYmIGlzVW5peFNvY2tldFVSTChyZWRpcmVjdFVybCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fYmVmb3JlRXJyb3IobmV3IFJlcXVlc3RFcnJvcignQ2Fubm90IHJlZGlyZWN0IHRvIFVOSVggc29ja2V0Jywge30sIHRoaXMpKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBSZWRpcmVjdGluZyB0byBhIGRpZmZlcmVudCBzaXRlLCBjbGVhciBzZW5zaXRpdmUgZGF0YS5cbiAgICAgICAgICAgICAgICBpZiAocmVkaXJlY3RVcmwuaG9zdG5hbWUgIT09IHVybC5ob3N0bmFtZSB8fCByZWRpcmVjdFVybC5wb3J0ICE9PSB1cmwucG9ydCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoJ2hvc3QnIGluIG9wdGlvbnMuaGVhZGVycykge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIG9wdGlvbnMuaGVhZGVycy5ob3N0O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmICgnY29va2llJyBpbiBvcHRpb25zLmhlYWRlcnMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBvcHRpb25zLmhlYWRlcnMuY29va2llO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmICgnYXV0aG9yaXphdGlvbicgaW4gb3B0aW9ucy5oZWFkZXJzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgb3B0aW9ucy5oZWFkZXJzLmF1dGhvcml6YXRpb247XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMudXNlcm5hbWUgfHwgb3B0aW9ucy5wYXNzd29yZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy51c2VybmFtZSA9ICcnO1xuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5wYXNzd29yZCA9ICcnO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZWRpcmVjdFVybC51c2VybmFtZSA9IG9wdGlvbnMudXNlcm5hbWU7XG4gICAgICAgICAgICAgICAgICAgIHJlZGlyZWN0VXJsLnBhc3N3b3JkID0gb3B0aW9ucy5wYXNzd29yZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5yZWRpcmVjdHMucHVzaChyZWRpcmVjdFN0cmluZyk7XG4gICAgICAgICAgICAgICAgb3B0aW9ucy51cmwgPSByZWRpcmVjdFVybDtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGhvb2sgb2Ygb3B0aW9ucy5ob29rcy5iZWZvcmVSZWRpcmVjdCkge1xuICAgICAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tYXdhaXQtaW4tbG9vcFxuICAgICAgICAgICAgICAgICAgICBhd2FpdCBob29rKG9wdGlvbnMsIHR5cGVkUmVzcG9uc2UpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLmVtaXQoJ3JlZGlyZWN0JywgdHlwZWRSZXNwb25zZSwgb3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5fbWFrZVJlcXVlc3QoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgIHRoaXMuX2JlZm9yZUVycm9yKGVycm9yKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9wdGlvbnMuaXNTdHJlYW0gJiYgb3B0aW9ucy50aHJvd0h0dHBFcnJvcnMgJiYgIWlzX3Jlc3BvbnNlX29rXzEuaXNSZXNwb25zZU9rKHR5cGVkUmVzcG9uc2UpKSB7XG4gICAgICAgICAgICB0aGlzLl9iZWZvcmVFcnJvcihuZXcgSFRUUEVycm9yKHR5cGVkUmVzcG9uc2UpKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICByZXNwb25zZS5vbigncmVhZGFibGUnLCAoKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpc1trVHJpZ2dlclJlYWRdKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fcmVhZCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5vbigncmVzdW1lJywgKCkgPT4ge1xuICAgICAgICAgICAgcmVzcG9uc2UucmVzdW1lKCk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLm9uKCdwYXVzZScsICgpID0+IHtcbiAgICAgICAgICAgIHJlc3BvbnNlLnBhdXNlKCk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXNwb25zZS5vbmNlKCdlbmQnLCAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnB1c2gobnVsbCk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmVtaXQoJ3Jlc3BvbnNlJywgcmVzcG9uc2UpO1xuICAgICAgICBmb3IgKGNvbnN0IGRlc3RpbmF0aW9uIG9mIHRoaXNba1NlcnZlclJlc3BvbnNlc1BpcGVkXSkge1xuICAgICAgICAgICAgaWYgKGRlc3RpbmF0aW9uLmhlYWRlcnNTZW50KSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZ3VhcmQtZm9yLWluXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiByZXNwb25zZS5oZWFkZXJzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaXNBbGxvd2VkID0gb3B0aW9ucy5kZWNvbXByZXNzID8ga2V5ICE9PSAnY29udGVudC1lbmNvZGluZycgOiB0cnVlO1xuICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gcmVzcG9uc2UuaGVhZGVyc1trZXldO1xuICAgICAgICAgICAgICAgIGlmIChpc0FsbG93ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgZGVzdGluYXRpb24uc2V0SGVhZGVyKGtleSwgdmFsdWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlc3RpbmF0aW9uLnN0YXR1c0NvZGUgPSBzdGF0dXNDb2RlO1xuICAgICAgICB9XG4gICAgfVxuICAgIGFzeW5jIF9vblJlc3BvbnNlKHJlc3BvbnNlKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLl9vblJlc3BvbnNlQmFzZShyZXNwb25zZSk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dDogYmV0dGVyIHNhZmUgdGhhbiBzb3JyeSAqL1xuICAgICAgICAgICAgdGhpcy5fYmVmb3JlRXJyb3IoZXJyb3IpO1xuICAgICAgICB9XG4gICAgfVxuICAgIF9vblJlcXVlc3QocmVxdWVzdCkge1xuICAgICAgICBjb25zdCB7IG9wdGlvbnMgfSA9IHRoaXM7XG4gICAgICAgIGNvbnN0IHsgdGltZW91dCwgdXJsIH0gPSBvcHRpb25zO1xuICAgICAgICBodHRwX3RpbWVyXzEuZGVmYXVsdChyZXF1ZXN0KTtcbiAgICAgICAgdGhpc1trQ2FuY2VsVGltZW91dHNdID0gdGltZWRfb3V0XzEuZGVmYXVsdChyZXF1ZXN0LCB0aW1lb3V0LCB1cmwpO1xuICAgICAgICBjb25zdCByZXNwb25zZUV2ZW50TmFtZSA9IG9wdGlvbnMuY2FjaGUgPyAnY2FjaGVhYmxlUmVzcG9uc2UnIDogJ3Jlc3BvbnNlJztcbiAgICAgICAgcmVxdWVzdC5vbmNlKHJlc3BvbnNlRXZlbnROYW1lLCAocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgIHZvaWQgdGhpcy5fb25SZXNwb25zZShyZXNwb25zZSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXF1ZXN0Lm9uY2UoJ2Vycm9yJywgKGVycm9yKSA9PiB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICAvLyBGb3JjZSBjbGVhbi11cCwgYmVjYXVzZSBzb21lIHBhY2thZ2VzIChlLmcuIG5vY2spIGRvbid0IGRvIHRoaXMuXG4gICAgICAgICAgICByZXF1ZXN0LmRlc3Ryb3koKTtcbiAgICAgICAgICAgIC8vIE5vZGUuanMgPD0gMTIuMTguMiBtaXN0YWtlbmx5IGVtaXRzIHRoZSByZXNwb25zZSBgZW5kYCBmaXJzdC5cbiAgICAgICAgICAgIChfYSA9IHJlcXVlc3QucmVzKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EucmVtb3ZlQWxsTGlzdGVuZXJzKCdlbmQnKTtcbiAgICAgICAgICAgIGVycm9yID0gZXJyb3IgaW5zdGFuY2VvZiB0aW1lZF9vdXRfMS5UaW1lb3V0RXJyb3IgPyBuZXcgVGltZW91dEVycm9yKGVycm9yLCB0aGlzLnRpbWluZ3MsIHRoaXMpIDogbmV3IFJlcXVlc3RFcnJvcihlcnJvci5tZXNzYWdlLCBlcnJvciwgdGhpcyk7XG4gICAgICAgICAgICB0aGlzLl9iZWZvcmVFcnJvcihlcnJvcik7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzW2tVbnByb3h5RXZlbnRzXSA9IHByb3h5X2V2ZW50c18xLmRlZmF1bHQocmVxdWVzdCwgdGhpcywgcHJveGllZFJlcXVlc3RFdmVudHMpO1xuICAgICAgICB0aGlzW2tSZXF1ZXN0XSA9IHJlcXVlc3Q7XG4gICAgICAgIHRoaXMuZW1pdCgndXBsb2FkUHJvZ3Jlc3MnLCB0aGlzLnVwbG9hZFByb2dyZXNzKTtcbiAgICAgICAgLy8gU2VuZCBib2R5XG4gICAgICAgIGNvbnN0IGJvZHkgPSB0aGlzW2tCb2R5XTtcbiAgICAgICAgY29uc3QgY3VycmVudFJlcXVlc3QgPSB0aGlzLnJlZGlyZWN0cy5sZW5ndGggPT09IDAgPyB0aGlzIDogcmVxdWVzdDtcbiAgICAgICAgaWYgKGlzXzEuZGVmYXVsdC5ub2RlU3RyZWFtKGJvZHkpKSB7XG4gICAgICAgICAgICBib2R5LnBpcGUoY3VycmVudFJlcXVlc3QpO1xuICAgICAgICAgICAgYm9keS5vbmNlKCdlcnJvcicsIChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX2JlZm9yZUVycm9yKG5ldyBVcGxvYWRFcnJvcihlcnJvciwgdGhpcykpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl91bmxvY2tXcml0ZSgpO1xuICAgICAgICAgICAgaWYgKCFpc18xLmRlZmF1bHQudW5kZWZpbmVkKGJvZHkpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fd3JpdGVSZXF1ZXN0KGJvZHksIHVuZGVmaW5lZCwgKCkgPT4geyB9KTtcbiAgICAgICAgICAgICAgICBjdXJyZW50UmVxdWVzdC5lbmQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9sb2NrV3JpdGUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMuX2Nhbm5vdEhhdmVCb2R5IHx8IHRoaXMuX25vUGlwZSkge1xuICAgICAgICAgICAgICAgIGN1cnJlbnRSZXF1ZXN0LmVuZCgpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2xvY2tXcml0ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuZW1pdCgncmVxdWVzdCcsIHJlcXVlc3QpO1xuICAgIH1cbiAgICBhc3luYyBfY3JlYXRlQ2FjaGVhYmxlUmVxdWVzdCh1cmwsIG9wdGlvbnMpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIC8vIFRPRE86IFJlbW92ZSBgdXRpbHMvdXJsLXRvLW9wdGlvbnMudHNgIHdoZW4gYGNhY2hlYWJsZS1yZXF1ZXN0YCBpcyBmaXhlZFxuICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihvcHRpb25zLCB1cmxfdG9fb3B0aW9uc18xLmRlZmF1bHQodXJsKSk7XG4gICAgICAgICAgICAvLyBgaHR0cC1jYWNoZS1zZW1hbnRpY3NgIGNoZWNrcyB0aGlzXG4gICAgICAgICAgICAvLyBUT0RPOiBGaXggdGhpcyBpZ25vcmUuXG4gICAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgICAgICAgICBkZWxldGUgb3B0aW9ucy51cmw7XG4gICAgICAgICAgICBsZXQgcmVxdWVzdDtcbiAgICAgICAgICAgIC8vIFRoaXMgaXMgdWdseVxuICAgICAgICAgICAgY29uc3QgY2FjaGVSZXF1ZXN0ID0gY2FjaGVhYmxlU3RvcmUuZ2V0KG9wdGlvbnMuY2FjaGUpKG9wdGlvbnMsIGFzeW5jIChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgIC8vIFRPRE86IEZpeCBgY2FjaGVhYmxlLXJlc3BvbnNlYFxuICAgICAgICAgICAgICAgIHJlc3BvbnNlLl9yZWFkYWJsZVN0YXRlLmF1dG9EZXN0cm95ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgaWYgKHJlcXVlc3QpIHtcbiAgICAgICAgICAgICAgICAgICAgKGF3YWl0IHJlcXVlc3QpLmVtaXQoJ2NhY2hlYWJsZVJlc3BvbnNlJywgcmVzcG9uc2UpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXNvbHZlKHJlc3BvbnNlKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgLy8gUmVzdG9yZSBvcHRpb25zXG4gICAgICAgICAgICBvcHRpb25zLnVybCA9IHVybDtcbiAgICAgICAgICAgIGNhY2hlUmVxdWVzdC5vbmNlKCdlcnJvcicsIHJlamVjdCk7XG4gICAgICAgICAgICBjYWNoZVJlcXVlc3Qub25jZSgncmVxdWVzdCcsIGFzeW5jIChyZXF1ZXN0T3JQcm9taXNlKSA9PiB7XG4gICAgICAgICAgICAgICAgcmVxdWVzdCA9IHJlcXVlc3RPclByb21pc2U7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZShyZXF1ZXN0KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgYXN5bmMgX21ha2VSZXF1ZXN0KCkge1xuICAgICAgICB2YXIgX2EsIF9iLCBfYywgX2QsIF9lO1xuICAgICAgICBjb25zdCB7IG9wdGlvbnMgfSA9IHRoaXM7XG4gICAgICAgIGNvbnN0IHsgaGVhZGVycyB9ID0gb3B0aW9ucztcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaGVhZGVycykge1xuICAgICAgICAgICAgaWYgKGlzXzEuZGVmYXVsdC51bmRlZmluZWQoaGVhZGVyc1trZXldKSkge1xuICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZHluYW1pYy1kZWxldGVcbiAgICAgICAgICAgICAgICBkZWxldGUgaGVhZGVyc1trZXldO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoaXNfMS5kZWZhdWx0Lm51bGxfKGhlYWRlcnNba2V5XSkpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBVc2UgXFxgdW5kZWZpbmVkXFxgIGluc3RlYWQgb2YgXFxgbnVsbFxcYCB0byBkZWxldGUgdGhlIFxcYCR7a2V5fVxcYCBoZWFkZXJgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAob3B0aW9ucy5kZWNvbXByZXNzICYmIGlzXzEuZGVmYXVsdC51bmRlZmluZWQoaGVhZGVyc1snYWNjZXB0LWVuY29kaW5nJ10pKSB7XG4gICAgICAgICAgICBoZWFkZXJzWydhY2NlcHQtZW5jb2RpbmcnXSA9IHN1cHBvcnRzQnJvdGxpID8gJ2d6aXAsIGRlZmxhdGUsIGJyJyA6ICdnemlwLCBkZWZsYXRlJztcbiAgICAgICAgfVxuICAgICAgICAvLyBTZXQgY29va2llc1xuICAgICAgICBpZiAob3B0aW9ucy5jb29raWVKYXIpIHtcbiAgICAgICAgICAgIGNvbnN0IGNvb2tpZVN0cmluZyA9IGF3YWl0IG9wdGlvbnMuY29va2llSmFyLmdldENvb2tpZVN0cmluZyhvcHRpb25zLnVybC50b1N0cmluZygpKTtcbiAgICAgICAgICAgIGlmIChpc18xLmRlZmF1bHQubm9uRW1wdHlTdHJpbmcoY29va2llU3RyaW5nKSkge1xuICAgICAgICAgICAgICAgIG9wdGlvbnMuaGVhZGVycy5jb29raWUgPSBjb29raWVTdHJpbmc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChjb25zdCBob29rIG9mIG9wdGlvbnMuaG9va3MuYmVmb3JlUmVxdWVzdCkge1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWF3YWl0LWluLWxvb3BcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGhvb2sob3B0aW9ucyk7XG4gICAgICAgICAgICBpZiAoIWlzXzEuZGVmYXVsdC51bmRlZmluZWQocmVzdWx0KSkge1xuICAgICAgICAgICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgU2tpcCB0aGUgdHlwZSBtaXNtYXRjaCB0byBzdXBwb3J0IGFic3RyYWN0IHJlc3BvbnNlc1xuICAgICAgICAgICAgICAgIG9wdGlvbnMucmVxdWVzdCA9ICgpID0+IHJlc3VsdDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAob3B0aW9ucy5ib2R5ICYmIHRoaXNba0JvZHldICE9PSBvcHRpb25zLmJvZHkpIHtcbiAgICAgICAgICAgIHRoaXNba0JvZHldID0gb3B0aW9ucy5ib2R5O1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHsgYWdlbnQsIHJlcXVlc3QsIHRpbWVvdXQsIHVybCB9ID0gb3B0aW9ucztcbiAgICAgICAgaWYgKG9wdGlvbnMuZG5zQ2FjaGUgJiYgISgnbG9va3VwJyBpbiBvcHRpb25zKSkge1xuICAgICAgICAgICAgb3B0aW9ucy5sb29rdXAgPSBvcHRpb25zLmRuc0NhY2hlLmxvb2t1cDtcbiAgICAgICAgfVxuICAgICAgICAvLyBVTklYIHNvY2tldHNcbiAgICAgICAgaWYgKHVybC5ob3N0bmFtZSA9PT0gJ3VuaXgnKSB7XG4gICAgICAgICAgICBjb25zdCBtYXRjaGVzID0gLyg/PHNvY2tldFBhdGg+Lis/KTooPzxwYXRoPi4rKS8uZXhlYyhgJHt1cmwucGF0aG5hbWV9JHt1cmwuc2VhcmNofWApO1xuICAgICAgICAgICAgaWYgKG1hdGNoZXMgPT09IG51bGwgfHwgbWF0Y2hlcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogbWF0Y2hlcy5ncm91cHMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB7IHNvY2tldFBhdGgsIHBhdGggfSA9IG1hdGNoZXMuZ3JvdXBzO1xuICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24ob3B0aW9ucywge1xuICAgICAgICAgICAgICAgICAgICBzb2NrZXRQYXRoLFxuICAgICAgICAgICAgICAgICAgICBwYXRoLFxuICAgICAgICAgICAgICAgICAgICBob3N0OiAnJ1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGlzSHR0cHMgPSB1cmwucHJvdG9jb2wgPT09ICdodHRwczonO1xuICAgICAgICAvLyBGYWxsYmFjayBmdW5jdGlvblxuICAgICAgICBsZXQgZmFsbGJhY2tGbjtcbiAgICAgICAgaWYgKG9wdGlvbnMuaHR0cDIpIHtcbiAgICAgICAgICAgIGZhbGxiYWNrRm4gPSBodHRwMndyYXBwZXIuYXV0bztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGZhbGxiYWNrRm4gPSBpc0h0dHBzID8gaHR0cHMucmVxdWVzdCA6IGh0dHAucmVxdWVzdDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZWFsRm4gPSAoX2EgPSBvcHRpb25zLnJlcXVlc3QpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IGZhbGxiYWNrRm47XG4gICAgICAgIC8vIENhY2hlIHN1cHBvcnRcbiAgICAgICAgY29uc3QgZm4gPSBvcHRpb25zLmNhY2hlID8gdGhpcy5fY3JlYXRlQ2FjaGVhYmxlUmVxdWVzdCA6IHJlYWxGbjtcbiAgICAgICAgLy8gUGFzcyBhbiBhZ2VudCBkaXJlY3RseSB3aGVuIEhUVFAyIGlzIGRpc2FibGVkXG4gICAgICAgIGlmIChhZ2VudCAmJiAhb3B0aW9ucy5odHRwMikge1xuICAgICAgICAgICAgb3B0aW9ucy5hZ2VudCA9IGFnZW50W2lzSHR0cHMgPyAnaHR0cHMnIDogJ2h0dHAnXTtcbiAgICAgICAgfVxuICAgICAgICAvLyBQcmVwYXJlIHBsYWluIEhUVFAgcmVxdWVzdCBvcHRpb25zXG4gICAgICAgIG9wdGlvbnNba1JlcXVlc3RdID0gcmVhbEZuO1xuICAgICAgICBkZWxldGUgb3B0aW9ucy5yZXF1ZXN0O1xuICAgICAgICAvLyBUT0RPOiBGaXggdGhpcyBpZ25vcmUuXG4gICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICAgICAgZGVsZXRlIG9wdGlvbnMudGltZW91dDtcbiAgICAgICAgY29uc3QgcmVxdWVzdE9wdGlvbnMgPSBvcHRpb25zO1xuICAgICAgICByZXF1ZXN0T3B0aW9ucy5zaGFyZWQgPSAoX2IgPSBvcHRpb25zLmNhY2hlT3B0aW9ucykgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLnNoYXJlZDtcbiAgICAgICAgcmVxdWVzdE9wdGlvbnMuY2FjaGVIZXVyaXN0aWMgPSAoX2MgPSBvcHRpb25zLmNhY2hlT3B0aW9ucykgPT09IG51bGwgfHwgX2MgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9jLmNhY2hlSGV1cmlzdGljO1xuICAgICAgICByZXF1ZXN0T3B0aW9ucy5pbW11dGFibGVNaW5UaW1lVG9MaXZlID0gKF9kID0gb3B0aW9ucy5jYWNoZU9wdGlvbnMpID09PSBudWxsIHx8IF9kID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZC5pbW11dGFibGVNaW5UaW1lVG9MaXZlO1xuICAgICAgICByZXF1ZXN0T3B0aW9ucy5pZ25vcmVDYXJnb0N1bHQgPSAoX2UgPSBvcHRpb25zLmNhY2hlT3B0aW9ucykgPT09IG51bGwgfHwgX2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9lLmlnbm9yZUNhcmdvQ3VsdDtcbiAgICAgICAgLy8gSWYgYGRuc0xvb2t1cElwVmVyc2lvbmAgaXMgbm90IHByZXNlbnQgZG8gbm90IG92ZXJyaWRlIGBmYW1pbHlgXG4gICAgICAgIGlmIChvcHRpb25zLmRuc0xvb2t1cElwVmVyc2lvbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHJlcXVlc3RPcHRpb25zLmZhbWlseSA9IGRuc19pcF92ZXJzaW9uXzEuZG5zTG9va3VwSXBWZXJzaW9uVG9GYW1pbHkob3B0aW9ucy5kbnNMb29rdXBJcFZlcnNpb24pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKF9mKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGBkbnNMb29rdXBJcFZlcnNpb25gIG9wdGlvbiB2YWx1ZScpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIEhUVFBTIG9wdGlvbnMgcmVtYXBwaW5nXG4gICAgICAgIGlmIChvcHRpb25zLmh0dHBzKSB7XG4gICAgICAgICAgICBpZiAoJ3JlamVjdFVuYXV0aG9yaXplZCcgaW4gb3B0aW9ucy5odHRwcykge1xuICAgICAgICAgICAgICAgIHJlcXVlc3RPcHRpb25zLnJlamVjdFVuYXV0aG9yaXplZCA9IG9wdGlvbnMuaHR0cHMucmVqZWN0VW5hdXRob3JpemVkO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG9wdGlvbnMuaHR0cHMuY2hlY2tTZXJ2ZXJJZGVudGl0eSkge1xuICAgICAgICAgICAgICAgIHJlcXVlc3RPcHRpb25zLmNoZWNrU2VydmVySWRlbnRpdHkgPSBvcHRpb25zLmh0dHBzLmNoZWNrU2VydmVySWRlbnRpdHk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAob3B0aW9ucy5odHRwcy5jZXJ0aWZpY2F0ZUF1dGhvcml0eSkge1xuICAgICAgICAgICAgICAgIHJlcXVlc3RPcHRpb25zLmNhID0gb3B0aW9ucy5odHRwcy5jZXJ0aWZpY2F0ZUF1dGhvcml0eTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChvcHRpb25zLmh0dHBzLmNlcnRpZmljYXRlKSB7XG4gICAgICAgICAgICAgICAgcmVxdWVzdE9wdGlvbnMuY2VydCA9IG9wdGlvbnMuaHR0cHMuY2VydGlmaWNhdGU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAob3B0aW9ucy5odHRwcy5rZXkpIHtcbiAgICAgICAgICAgICAgICByZXF1ZXN0T3B0aW9ucy5rZXkgPSBvcHRpb25zLmh0dHBzLmtleTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChvcHRpb25zLmh0dHBzLnBhc3NwaHJhc2UpIHtcbiAgICAgICAgICAgICAgICByZXF1ZXN0T3B0aW9ucy5wYXNzcGhyYXNlID0gb3B0aW9ucy5odHRwcy5wYXNzcGhyYXNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG9wdGlvbnMuaHR0cHMucGZ4KSB7XG4gICAgICAgICAgICAgICAgcmVxdWVzdE9wdGlvbnMucGZ4ID0gb3B0aW9ucy5odHRwcy5wZng7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGxldCByZXF1ZXN0T3JSZXNwb25zZSA9IGF3YWl0IGZuKHVybCwgcmVxdWVzdE9wdGlvbnMpO1xuICAgICAgICAgICAgaWYgKGlzXzEuZGVmYXVsdC51bmRlZmluZWQocmVxdWVzdE9yUmVzcG9uc2UpKSB7XG4gICAgICAgICAgICAgICAgcmVxdWVzdE9yUmVzcG9uc2UgPSBmYWxsYmFja0ZuKHVybCwgcmVxdWVzdE9wdGlvbnMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gUmVzdG9yZSBvcHRpb25zXG4gICAgICAgICAgICBvcHRpb25zLnJlcXVlc3QgPSByZXF1ZXN0O1xuICAgICAgICAgICAgb3B0aW9ucy50aW1lb3V0ID0gdGltZW91dDtcbiAgICAgICAgICAgIG9wdGlvbnMuYWdlbnQgPSBhZ2VudDtcbiAgICAgICAgICAgIC8vIEhUVFBTIG9wdGlvbnMgcmVzdG9yZVxuICAgICAgICAgICAgaWYgKG9wdGlvbnMuaHR0cHMpIHtcbiAgICAgICAgICAgICAgICBpZiAoJ3JlamVjdFVuYXV0aG9yaXplZCcgaW4gb3B0aW9ucy5odHRwcykge1xuICAgICAgICAgICAgICAgICAgICBkZWxldGUgcmVxdWVzdE9wdGlvbnMucmVqZWN0VW5hdXRob3JpemVkO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy5odHRwcy5jaGVja1NlcnZlcklkZW50aXR5KSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgLSBUaGlzIG9uZSB3aWxsIGJlIHJlbW92ZWQgd2hlbiB3ZSByZW1vdmUgdGhlIGFsaWFzLlxuICAgICAgICAgICAgICAgICAgICBkZWxldGUgcmVxdWVzdE9wdGlvbnMuY2hlY2tTZXJ2ZXJJZGVudGl0eTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMuaHR0cHMuY2VydGlmaWNhdGVBdXRob3JpdHkpIHtcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHJlcXVlc3RPcHRpb25zLmNhO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy5odHRwcy5jZXJ0aWZpY2F0ZSkge1xuICAgICAgICAgICAgICAgICAgICBkZWxldGUgcmVxdWVzdE9wdGlvbnMuY2VydDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMuaHR0cHMua2V5KSB7XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSByZXF1ZXN0T3B0aW9ucy5rZXk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLmh0dHBzLnBhc3NwaHJhc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHJlcXVlc3RPcHRpb25zLnBhc3NwaHJhc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLmh0dHBzLnBmeCkge1xuICAgICAgICAgICAgICAgICAgICBkZWxldGUgcmVxdWVzdE9wdGlvbnMucGZ4O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpc0NsaWVudFJlcXVlc3QocmVxdWVzdE9yUmVzcG9uc2UpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fb25SZXF1ZXN0KHJlcXVlc3RPclJlc3BvbnNlKTtcbiAgICAgICAgICAgICAgICAvLyBFbWl0IHRoZSByZXNwb25zZSBhZnRlciB0aGUgc3RyZWFtIGhhcyBiZWVuIGVuZGVkXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmICh0aGlzLndyaXRhYmxlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vbmNlKCdmaW5pc2gnLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHZvaWQgdGhpcy5fb25SZXNwb25zZShyZXF1ZXN0T3JSZXNwb25zZSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgdGhpcy5fdW5sb2NrV3JpdGUoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmVuZCgpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2xvY2tXcml0ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdm9pZCB0aGlzLl9vblJlc3BvbnNlKHJlcXVlc3RPclJlc3BvbnNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIENhY2hlYWJsZVJlcXVlc3QuQ2FjaGVFcnJvcikge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBDYWNoZUVycm9yKGVycm9yLCB0aGlzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRocm93IG5ldyBSZXF1ZXN0RXJyb3IoZXJyb3IubWVzc2FnZSwgZXJyb3IsIHRoaXMpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGFzeW5jIF9lcnJvcihlcnJvcikge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgZm9yIChjb25zdCBob29rIG9mIHRoaXMub3B0aW9ucy5ob29rcy5iZWZvcmVFcnJvcikge1xuICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1hd2FpdC1pbi1sb29wXG4gICAgICAgICAgICAgICAgZXJyb3IgPSBhd2FpdCBob29rKGVycm9yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyb3JfKSB7XG4gICAgICAgICAgICBlcnJvciA9IG5ldyBSZXF1ZXN0RXJyb3IoZXJyb3JfLm1lc3NhZ2UsIGVycm9yXywgdGhpcyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5kZXN0cm95KGVycm9yKTtcbiAgICB9XG4gICAgX2JlZm9yZUVycm9yKGVycm9yKSB7XG4gICAgICAgIGlmICh0aGlzW2tTdG9wUmVhZGluZ10pIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB7IG9wdGlvbnMgfSA9IHRoaXM7XG4gICAgICAgIGNvbnN0IHJldHJ5Q291bnQgPSB0aGlzLnJldHJ5Q291bnQgKyAxO1xuICAgICAgICB0aGlzW2tTdG9wUmVhZGluZ10gPSB0cnVlO1xuICAgICAgICBpZiAoIShlcnJvciBpbnN0YW5jZW9mIFJlcXVlc3RFcnJvcikpIHtcbiAgICAgICAgICAgIGVycm9yID0gbmV3IFJlcXVlc3RFcnJvcihlcnJvci5tZXNzYWdlLCBlcnJvciwgdGhpcyk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgdHlwZWRFcnJvciA9IGVycm9yO1xuICAgICAgICBjb25zdCB7IHJlc3BvbnNlIH0gPSB0eXBlZEVycm9yO1xuICAgICAgICB2b2lkIChhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBpZiAocmVzcG9uc2UgJiYgIXJlc3BvbnNlLmJvZHkpIHtcbiAgICAgICAgICAgICAgICByZXNwb25zZS5zZXRFbmNvZGluZyh0aGlzLl9yZWFkYWJsZVN0YXRlLmVuY29kaW5nKTtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5yYXdCb2R5ID0gYXdhaXQgZ2V0X2J1ZmZlcl8xLmRlZmF1bHQocmVzcG9uc2UpO1xuICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5ib2R5ID0gcmVzcG9uc2UucmF3Qm9keS50b1N0cmluZygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXRjaCAoX2EpIHsgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMubGlzdGVuZXJDb3VudCgncmV0cnknKSAhPT0gMCkge1xuICAgICAgICAgICAgICAgIGxldCBiYWNrb2ZmO1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCByZXRyeUFmdGVyO1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UgJiYgJ3JldHJ5LWFmdGVyJyBpbiByZXNwb25zZS5oZWFkZXJzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXRyeUFmdGVyID0gTnVtYmVyKHJlc3BvbnNlLmhlYWRlcnNbJ3JldHJ5LWFmdGVyJ10pO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKE51bWJlci5pc05hTihyZXRyeUFmdGVyKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHJ5QWZ0ZXIgPSBEYXRlLnBhcnNlKHJlc3BvbnNlLmhlYWRlcnNbJ3JldHJ5LWFmdGVyJ10pIC0gRGF0ZS5ub3coKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmV0cnlBZnRlciA8PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHJ5QWZ0ZXIgPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHJ5QWZ0ZXIgKj0gMTAwMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBiYWNrb2ZmID0gYXdhaXQgb3B0aW9ucy5yZXRyeS5jYWxjdWxhdGVEZWxheSh7XG4gICAgICAgICAgICAgICAgICAgICAgICBhdHRlbXB0Q291bnQ6IHJldHJ5Q291bnQsXG4gICAgICAgICAgICAgICAgICAgICAgICByZXRyeU9wdGlvbnM6IG9wdGlvbnMucmV0cnksXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvcjogdHlwZWRFcnJvcixcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHJ5QWZ0ZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wdXRlZFZhbHVlOiBjYWxjdWxhdGVfcmV0cnlfZGVsYXlfMS5kZWZhdWx0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRlbXB0Q291bnQ6IHJldHJ5Q291bnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0cnlPcHRpb25zOiBvcHRpb25zLnJldHJ5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yOiB0eXBlZEVycm9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHJ5QWZ0ZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcHV0ZWRWYWx1ZTogMFxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhdGNoIChlcnJvcl8pIHtcbiAgICAgICAgICAgICAgICAgICAgdm9pZCB0aGlzLl9lcnJvcihuZXcgUmVxdWVzdEVycm9yKGVycm9yXy5tZXNzYWdlLCBlcnJvcl8sIHRoaXMpKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoYmFja29mZikge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByZXRyeSA9IGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBob29rIG9mIHRoaXMub3B0aW9ucy5ob29rcy5iZWZvcmVSZXRyeSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tYXdhaXQtaW4tbG9vcFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCBob29rKHRoaXMub3B0aW9ucywgdHlwZWRFcnJvciwgcmV0cnlDb3VudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2ggKGVycm9yXykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgdGhpcy5fZXJyb3IobmV3IFJlcXVlc3RFcnJvcihlcnJvcl8ubWVzc2FnZSwgZXJyb3IsIHRoaXMpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBTb21ldGhpbmcgZm9yY2VkIHVzIHRvIGFib3J0IHRoZSByZXRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZGVzdHJveWVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kZXN0cm95KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmVtaXQoJ3JldHJ5JywgcmV0cnlDb3VudCwgZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICB0aGlzW2tSZXRyeVRpbWVvdXRdID0gc2V0VGltZW91dChyZXRyeSwgYmFja29mZik7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2b2lkIHRoaXMuX2Vycm9yKHR5cGVkRXJyb3IpO1xuICAgICAgICB9KSgpO1xuICAgIH1cbiAgICBfcmVhZCgpIHtcbiAgICAgICAgdGhpc1trVHJpZ2dlclJlYWRdID0gdHJ1ZTtcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSB0aGlzW2tSZXNwb25zZV07XG4gICAgICAgIGlmIChyZXNwb25zZSAmJiAhdGhpc1trU3RvcFJlYWRpbmddKSB7XG4gICAgICAgICAgICAvLyBXZSBjYW5ub3QgcHV0IHRoaXMgaW4gdGhlIGBpZmAgYWJvdmVcbiAgICAgICAgICAgIC8vIGJlY2F1c2UgYC5yZWFkKClgIGFsc28gdHJpZ2dlcnMgdGhlIGBlbmRgIGV2ZW50XG4gICAgICAgICAgICBpZiAocmVzcG9uc2UucmVhZGFibGVMZW5ndGgpIHtcbiAgICAgICAgICAgICAgICB0aGlzW2tUcmlnZ2VyUmVhZF0gPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCBkYXRhO1xuICAgICAgICAgICAgd2hpbGUgKChkYXRhID0gcmVzcG9uc2UucmVhZCgpKSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHRoaXNba0Rvd25sb2FkZWRTaXplXSArPSBkYXRhLmxlbmd0aDtcbiAgICAgICAgICAgICAgICB0aGlzW2tTdGFydGVkUmVhZGluZ10gPSB0cnVlO1xuICAgICAgICAgICAgICAgIGNvbnN0IHByb2dyZXNzID0gdGhpcy5kb3dubG9hZFByb2dyZXNzO1xuICAgICAgICAgICAgICAgIGlmIChwcm9ncmVzcy5wZXJjZW50IDwgMSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmVtaXQoJ2Rvd25sb2FkUHJvZ3Jlc3MnLCBwcm9ncmVzcyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMucHVzaChkYXRhKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBOb2RlLmpzIDEyIGhhcyBpbmNvcnJlY3QgdHlwZXMsIHNvIHRoZSBlbmNvZGluZyBtdXN0IGJlIGEgc3RyaW5nXG4gICAgX3dyaXRlKGNodW5rLCBlbmNvZGluZywgY2FsbGJhY2spIHtcbiAgICAgICAgY29uc3Qgd3JpdGUgPSAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl93cml0ZVJlcXVlc3QoY2h1bmssIGVuY29kaW5nLCBjYWxsYmFjayk7XG4gICAgICAgIH07XG4gICAgICAgIGlmICh0aGlzLnJlcXVlc3RJbml0aWFsaXplZCkge1xuICAgICAgICAgICAgd3JpdGUoKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXNba0pvYnNdLnB1c2god3JpdGUpO1xuICAgICAgICB9XG4gICAgfVxuICAgIF93cml0ZVJlcXVlc3QoY2h1bmssIGVuY29kaW5nLCBjYWxsYmFjaykge1xuICAgICAgICBpZiAodGhpc1trUmVxdWVzdF0uZGVzdHJveWVkKSB7XG4gICAgICAgICAgICAvLyBQcm9iYWJseSB0aGUgYENsaWVudFJlcXVlc3RgIGluc3RhbmNlIHdpbGwgdGhyb3dcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9wcm9ncmVzc0NhbGxiYWNrcy5wdXNoKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXNba1VwbG9hZGVkU2l6ZV0gKz0gQnVmZmVyLmJ5dGVMZW5ndGgoY2h1bmssIGVuY29kaW5nKTtcbiAgICAgICAgICAgIGNvbnN0IHByb2dyZXNzID0gdGhpcy51cGxvYWRQcm9ncmVzcztcbiAgICAgICAgICAgIGlmIChwcm9ncmVzcy5wZXJjZW50IDwgMSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZW1pdCgndXBsb2FkUHJvZ3Jlc3MnLCBwcm9ncmVzcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICAvLyBUT0RPOiBXaGF0IGhhcHBlbnMgaWYgaXQncyBmcm9tIGNhY2hlPyBUaGVuIHRoaXNba1JlcXVlc3RdIHdvbid0IGJlIGRlZmluZWQuXG4gICAgICAgIHRoaXNba1JlcXVlc3RdLndyaXRlKGNodW5rLCBlbmNvZGluZywgKGVycm9yKSA9PiB7XG4gICAgICAgICAgICBpZiAoIWVycm9yICYmIHRoaXMuX3Byb2dyZXNzQ2FsbGJhY2tzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9wcm9ncmVzc0NhbGxiYWNrcy5zaGlmdCgpKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYWxsYmFjayhlcnJvcik7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBfZmluYWwoY2FsbGJhY2spIHtcbiAgICAgICAgY29uc3QgZW5kUmVxdWVzdCA9ICgpID0+IHtcbiAgICAgICAgICAgIC8vIEZJWDogTm9kZS5qcyAxMCBjYWxscyB0aGUgd3JpdGUgY2FsbGJhY2sgQUZURVIgdGhlIGVuZCBjYWxsYmFjayFcbiAgICAgICAgICAgIHdoaWxlICh0aGlzLl9wcm9ncmVzc0NhbGxiYWNrcy5sZW5ndGggIT09IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9wcm9ncmVzc0NhbGxiYWNrcy5zaGlmdCgpKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBXZSBuZWVkIHRvIGNoZWNrIGlmIGB0aGlzW2tSZXF1ZXN0XWAgaXMgcHJlc2VudCxcbiAgICAgICAgICAgIC8vIGJlY2F1c2UgaXQgaXNuJ3Qgd2hlbiB3ZSB1c2UgY2FjaGUuXG4gICAgICAgICAgICBpZiAoIShrUmVxdWVzdCBpbiB0aGlzKSkge1xuICAgICAgICAgICAgICAgIGNhbGxiYWNrKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXNba1JlcXVlc3RdLmRlc3Ryb3llZCkge1xuICAgICAgICAgICAgICAgIGNhbGxiYWNrKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpc1trUmVxdWVzdF0uZW5kKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpc1trQm9keVNpemVdID0gdGhpc1trVXBsb2FkZWRTaXplXTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbWl0KCd1cGxvYWRQcm9ncmVzcycsIHRoaXMudXBsb2FkUHJvZ3Jlc3MpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzW2tSZXF1ZXN0XS5lbWl0KCd1cGxvYWQtY29tcGxldGUnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FsbGJhY2soZXJyb3IpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgIGlmICh0aGlzLnJlcXVlc3RJbml0aWFsaXplZCkge1xuICAgICAgICAgICAgZW5kUmVxdWVzdCgpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpc1trSm9ic10ucHVzaChlbmRSZXF1ZXN0KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBfZGVzdHJveShlcnJvciwgY2FsbGJhY2spIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICB0aGlzW2tTdG9wUmVhZGluZ10gPSB0cnVlO1xuICAgICAgICAvLyBQcmV2ZW50IGZ1cnRoZXIgcmV0cmllc1xuICAgICAgICBjbGVhclRpbWVvdXQodGhpc1trUmV0cnlUaW1lb3V0XSk7XG4gICAgICAgIGlmIChrUmVxdWVzdCBpbiB0aGlzKSB7XG4gICAgICAgICAgICB0aGlzW2tDYW5jZWxUaW1lb3V0c10oKTtcbiAgICAgICAgICAgIC8vIFRPRE86IFJlbW92ZSB0aGUgbmV4dCBgaWZgIHdoZW4gdGhlc2UgZ2V0IGZpeGVkOlxuICAgICAgICAgICAgLy8gLSBodHRwczovL2dpdGh1Yi5jb20vbm9kZWpzL25vZGUvaXNzdWVzLzMyODUxXG4gICAgICAgICAgICBpZiAoISgoX2EgPSB0aGlzW2tSZXNwb25zZV0pID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jb21wbGV0ZSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzW2tSZXF1ZXN0XS5kZXN0cm95KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVycm9yICE9PSBudWxsICYmICFpc18xLmRlZmF1bHQudW5kZWZpbmVkKGVycm9yKSAmJiAhKGVycm9yIGluc3RhbmNlb2YgUmVxdWVzdEVycm9yKSkge1xuICAgICAgICAgICAgZXJyb3IgPSBuZXcgUmVxdWVzdEVycm9yKGVycm9yLm1lc3NhZ2UsIGVycm9yLCB0aGlzKTtcbiAgICAgICAgfVxuICAgICAgICBjYWxsYmFjayhlcnJvcik7XG4gICAgfVxuICAgIGdldCBfaXNBYm91dFRvRXJyb3IoKSB7XG4gICAgICAgIHJldHVybiB0aGlzW2tTdG9wUmVhZGluZ107XG4gICAgfVxuICAgIC8qKlxuICAgIFRoZSByZW1vdGUgSVAgYWRkcmVzcy5cbiAgICAqL1xuICAgIGdldCBpcCgpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICByZXR1cm4gKF9hID0gdGhpcy5zb2NrZXQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5yZW1vdGVBZGRyZXNzO1xuICAgIH1cbiAgICAvKipcbiAgICBJbmRpY2F0ZXMgd2hldGhlciB0aGUgcmVxdWVzdCBoYXMgYmVlbiBhYm9ydGVkIG9yIG5vdC5cbiAgICAqL1xuICAgIGdldCBhYm9ydGVkKCkge1xuICAgICAgICB2YXIgX2EsIF9iLCBfYztcbiAgICAgICAgcmV0dXJuICgoX2IgPSAoX2EgPSB0aGlzW2tSZXF1ZXN0XSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmRlc3Ryb3llZCkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogdGhpcy5kZXN0cm95ZWQpICYmICEoKF9jID0gdGhpc1trT3JpZ2luYWxSZXNwb25zZV0pID09PSBudWxsIHx8IF9jID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYy5jb21wbGV0ZSk7XG4gICAgfVxuICAgIGdldCBzb2NrZXQoKSB7XG4gICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgIHJldHVybiAoX2IgPSAoX2EgPSB0aGlzW2tSZXF1ZXN0XSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnNvY2tldCkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogdW5kZWZpbmVkO1xuICAgIH1cbiAgICAvKipcbiAgICBQcm9ncmVzcyBldmVudCBmb3IgZG93bmxvYWRpbmcgKHJlY2VpdmluZyBhIHJlc3BvbnNlKS5cbiAgICAqL1xuICAgIGdldCBkb3dubG9hZFByb2dyZXNzKCkge1xuICAgICAgICBsZXQgcGVyY2VudDtcbiAgICAgICAgaWYgKHRoaXNba1Jlc3BvbnNlU2l6ZV0pIHtcbiAgICAgICAgICAgIHBlcmNlbnQgPSB0aGlzW2tEb3dubG9hZGVkU2l6ZV0gLyB0aGlzW2tSZXNwb25zZVNpemVdO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHRoaXNba1Jlc3BvbnNlU2l6ZV0gPT09IHRoaXNba0Rvd25sb2FkZWRTaXplXSkge1xuICAgICAgICAgICAgcGVyY2VudCA9IDE7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBwZXJjZW50ID0gMDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcGVyY2VudCxcbiAgICAgICAgICAgIHRyYW5zZmVycmVkOiB0aGlzW2tEb3dubG9hZGVkU2l6ZV0sXG4gICAgICAgICAgICB0b3RhbDogdGhpc1trUmVzcG9uc2VTaXplXVxuICAgICAgICB9O1xuICAgIH1cbiAgICAvKipcbiAgICBQcm9ncmVzcyBldmVudCBmb3IgdXBsb2FkaW5nIChzZW5kaW5nIGEgcmVxdWVzdCkuXG4gICAgKi9cbiAgICBnZXQgdXBsb2FkUHJvZ3Jlc3MoKSB7XG4gICAgICAgIGxldCBwZXJjZW50O1xuICAgICAgICBpZiAodGhpc1trQm9keVNpemVdKSB7XG4gICAgICAgICAgICBwZXJjZW50ID0gdGhpc1trVXBsb2FkZWRTaXplXSAvIHRoaXNba0JvZHlTaXplXTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0aGlzW2tCb2R5U2l6ZV0gPT09IHRoaXNba1VwbG9hZGVkU2l6ZV0pIHtcbiAgICAgICAgICAgIHBlcmNlbnQgPSAxO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcGVyY2VudCA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHBlcmNlbnQsXG4gICAgICAgICAgICB0cmFuc2ZlcnJlZDogdGhpc1trVXBsb2FkZWRTaXplXSxcbiAgICAgICAgICAgIHRvdGFsOiB0aGlzW2tCb2R5U2l6ZV1cbiAgICAgICAgfTtcbiAgICB9XG4gICAgLyoqXG4gICAgVGhlIG9iamVjdCBjb250YWlucyB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG5cbiAgICAtIGBzdGFydGAgLSBUaW1lIHdoZW4gdGhlIHJlcXVlc3Qgc3RhcnRlZC5cbiAgICAtIGBzb2NrZXRgIC0gVGltZSB3aGVuIGEgc29ja2V0IHdhcyBhc3NpZ25lZCB0byB0aGUgcmVxdWVzdC5cbiAgICAtIGBsb29rdXBgIC0gVGltZSB3aGVuIHRoZSBETlMgbG9va3VwIGZpbmlzaGVkLlxuICAgIC0gYGNvbm5lY3RgIC0gVGltZSB3aGVuIHRoZSBzb2NrZXQgc3VjY2Vzc2Z1bGx5IGNvbm5lY3RlZC5cbiAgICAtIGBzZWN1cmVDb25uZWN0YCAtIFRpbWUgd2hlbiB0aGUgc29ja2V0IHNlY3VyZWx5IGNvbm5lY3RlZC5cbiAgICAtIGB1cGxvYWRgIC0gVGltZSB3aGVuIHRoZSByZXF1ZXN0IGZpbmlzaGVkIHVwbG9hZGluZy5cbiAgICAtIGByZXNwb25zZWAgLSBUaW1lIHdoZW4gdGhlIHJlcXVlc3QgZmlyZWQgYHJlc3BvbnNlYCBldmVudC5cbiAgICAtIGBlbmRgIC0gVGltZSB3aGVuIHRoZSByZXNwb25zZSBmaXJlZCBgZW5kYCBldmVudC5cbiAgICAtIGBlcnJvcmAgLSBUaW1lIHdoZW4gdGhlIHJlcXVlc3QgZmlyZWQgYGVycm9yYCBldmVudC5cbiAgICAtIGBhYm9ydGAgLSBUaW1lIHdoZW4gdGhlIHJlcXVlc3QgZmlyZWQgYGFib3J0YCBldmVudC5cbiAgICAtIGBwaGFzZXNgXG4gICAgICAgIC0gYHdhaXRgIC0gYHRpbWluZ3Muc29ja2V0IC0gdGltaW5ncy5zdGFydGBcbiAgICAgICAgLSBgZG5zYCAtIGB0aW1pbmdzLmxvb2t1cCAtIHRpbWluZ3Muc29ja2V0YFxuICAgICAgICAtIGB0Y3BgIC0gYHRpbWluZ3MuY29ubmVjdCAtIHRpbWluZ3MubG9va3VwYFxuICAgICAgICAtIGB0bHNgIC0gYHRpbWluZ3Muc2VjdXJlQ29ubmVjdCAtIHRpbWluZ3MuY29ubmVjdGBcbiAgICAgICAgLSBgcmVxdWVzdGAgLSBgdGltaW5ncy51cGxvYWQgLSAodGltaW5ncy5zZWN1cmVDb25uZWN0IHx8IHRpbWluZ3MuY29ubmVjdClgXG4gICAgICAgIC0gYGZpcnN0Qnl0ZWAgLSBgdGltaW5ncy5yZXNwb25zZSAtIHRpbWluZ3MudXBsb2FkYFxuICAgICAgICAtIGBkb3dubG9hZGAgLSBgdGltaW5ncy5lbmQgLSB0aW1pbmdzLnJlc3BvbnNlYFxuICAgICAgICAtIGB0b3RhbGAgLSBgKHRpbWluZ3MuZW5kIHx8IHRpbWluZ3MuZXJyb3IgfHwgdGltaW5ncy5hYm9ydCkgLSB0aW1pbmdzLnN0YXJ0YFxuXG4gICAgSWYgc29tZXRoaW5nIGhhcyBub3QgYmVlbiBtZWFzdXJlZCB5ZXQsIGl0IHdpbGwgYmUgYHVuZGVmaW5lZGAuXG5cbiAgICBfX05vdGVfXzogVGhlIHRpbWUgaXMgYSBgbnVtYmVyYCByZXByZXNlbnRpbmcgdGhlIG1pbGxpc2Vjb25kcyBlbGFwc2VkIHNpbmNlIHRoZSBVTklYIGVwb2NoLlxuICAgICovXG4gICAgZ2V0IHRpbWluZ3MoKSB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgcmV0dXJuIChfYSA9IHRoaXNba1JlcXVlc3RdKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EudGltaW5ncztcbiAgICB9XG4gICAgLyoqXG4gICAgV2hldGhlciB0aGUgcmVzcG9uc2Ugd2FzIHJldHJpZXZlZCBmcm9tIHRoZSBjYWNoZS5cbiAgICAqL1xuICAgIGdldCBpc0Zyb21DYWNoZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXNba0lzRnJvbUNhY2hlXTtcbiAgICB9XG4gICAgcGlwZShkZXN0aW5hdGlvbiwgb3B0aW9ucykge1xuICAgICAgICBpZiAodGhpc1trU3RhcnRlZFJlYWRpbmddKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZhaWxlZCB0byBwaXBlLiBUaGUgcmVzcG9uc2UgaGFzIGJlZW4gZW1pdHRlZCBhbHJlYWR5LicpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChkZXN0aW5hdGlvbiBpbnN0YW5jZW9mIGh0dHBfMS5TZXJ2ZXJSZXNwb25zZSkge1xuICAgICAgICAgICAgdGhpc1trU2VydmVyUmVzcG9uc2VzUGlwZWRdLmFkZChkZXN0aW5hdGlvbik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN1cGVyLnBpcGUoZGVzdGluYXRpb24sIG9wdGlvbnMpO1xuICAgIH1cbiAgICB1bnBpcGUoZGVzdGluYXRpb24pIHtcbiAgICAgICAgaWYgKGRlc3RpbmF0aW9uIGluc3RhbmNlb2YgaHR0cF8xLlNlcnZlclJlc3BvbnNlKSB7XG4gICAgICAgICAgICB0aGlzW2tTZXJ2ZXJSZXNwb25zZXNQaXBlZF0uZGVsZXRlKGRlc3RpbmF0aW9uKTtcbiAgICAgICAgfVxuICAgICAgICBzdXBlci51bnBpcGUoZGVzdGluYXRpb24pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG59XG5leHBvcnRzLmRlZmF1bHQgPSBSZXF1ZXN0O1xuIiwgIlwidXNlIHN0cmljdFwiO1xudmFyIF9fY3JlYXRlQmluZGluZyA9ICh0aGlzICYmIHRoaXMuX19jcmVhdGVCaW5kaW5nKSB8fCAoT2JqZWN0LmNyZWF0ZSA/IChmdW5jdGlvbihvLCBtLCBrLCBrMikge1xuICAgIGlmIChrMiA9PT0gdW5kZWZpbmVkKSBrMiA9IGs7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIGsyLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24oKSB7IHJldHVybiBtW2tdOyB9IH0pO1xufSkgOiAoZnVuY3Rpb24obywgbSwgaywgazIpIHtcbiAgICBpZiAoazIgPT09IHVuZGVmaW5lZCkgazIgPSBrO1xuICAgIG9bazJdID0gbVtrXTtcbn0pKTtcbnZhciBfX2V4cG9ydFN0YXIgPSAodGhpcyAmJiB0aGlzLl9fZXhwb3J0U3RhcikgfHwgZnVuY3Rpb24obSwgZXhwb3J0cykge1xuICAgIGZvciAodmFyIHAgaW4gbSkgaWYgKHAgIT09IFwiZGVmYXVsdFwiICYmICFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZXhwb3J0cywgcCkpIF9fY3JlYXRlQmluZGluZyhleHBvcnRzLCBtLCBwKTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLkNhbmNlbEVycm9yID0gZXhwb3J0cy5QYXJzZUVycm9yID0gdm9pZCAwO1xuY29uc3QgY29yZV8xID0gcmVxdWlyZShcIi4uL2NvcmVcIik7XG4vKipcbkFuIGVycm9yIHRvIGJlIHRocm93biB3aGVuIHNlcnZlciByZXNwb25zZSBjb2RlIGlzIDJ4eCwgYW5kIHBhcnNpbmcgYm9keSBmYWlscy5cbkluY2x1ZGVzIGEgYHJlc3BvbnNlYCBwcm9wZXJ0eS5cbiovXG5jbGFzcyBQYXJzZUVycm9yIGV4dGVuZHMgY29yZV8xLlJlcXVlc3RFcnJvciB7XG4gICAgY29uc3RydWN0b3IoZXJyb3IsIHJlc3BvbnNlKSB7XG4gICAgICAgIGNvbnN0IHsgb3B0aW9ucyB9ID0gcmVzcG9uc2UucmVxdWVzdDtcbiAgICAgICAgc3VwZXIoYCR7ZXJyb3IubWVzc2FnZX0gaW4gXCIke29wdGlvbnMudXJsLnRvU3RyaW5nKCl9XCJgLCBlcnJvciwgcmVzcG9uc2UucmVxdWVzdCk7XG4gICAgICAgIHRoaXMubmFtZSA9ICdQYXJzZUVycm9yJztcbiAgICAgICAgdGhpcy5jb2RlID0gdGhpcy5jb2RlID09PSAnRVJSX0dPVF9SRVFVRVNUX0VSUk9SJyA/ICdFUlJfQk9EWV9QQVJTRV9GQUlMVVJFJyA6IHRoaXMuY29kZTtcbiAgICB9XG59XG5leHBvcnRzLlBhcnNlRXJyb3IgPSBQYXJzZUVycm9yO1xuLyoqXG5BbiBlcnJvciB0byBiZSB0aHJvd24gd2hlbiB0aGUgcmVxdWVzdCBpcyBhYm9ydGVkIHdpdGggYC5jYW5jZWwoKWAuXG4qL1xuY2xhc3MgQ2FuY2VsRXJyb3IgZXh0ZW5kcyBjb3JlXzEuUmVxdWVzdEVycm9yIHtcbiAgICBjb25zdHJ1Y3RvcihyZXF1ZXN0KSB7XG4gICAgICAgIHN1cGVyKCdQcm9taXNlIHdhcyBjYW5jZWxlZCcsIHt9LCByZXF1ZXN0KTtcbiAgICAgICAgdGhpcy5uYW1lID0gJ0NhbmNlbEVycm9yJztcbiAgICAgICAgdGhpcy5jb2RlID0gJ0VSUl9DQU5DRUxFRCc7XG4gICAgfVxuICAgIGdldCBpc0NhbmNlbGVkKCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG59XG5leHBvcnRzLkNhbmNlbEVycm9yID0gQ2FuY2VsRXJyb3I7XG5fX2V4cG9ydFN0YXIocmVxdWlyZShcIi4uL2NvcmVcIiksIGV4cG9ydHMpO1xuIiwgIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuY29uc3QgdHlwZXNfMSA9IHJlcXVpcmUoXCIuL3R5cGVzXCIpO1xuY29uc3QgcGFyc2VCb2R5ID0gKHJlc3BvbnNlLCByZXNwb25zZVR5cGUsIHBhcnNlSnNvbiwgZW5jb2RpbmcpID0+IHtcbiAgICBjb25zdCB7IHJhd0JvZHkgfSA9IHJlc3BvbnNlO1xuICAgIHRyeSB7XG4gICAgICAgIGlmIChyZXNwb25zZVR5cGUgPT09ICd0ZXh0Jykge1xuICAgICAgICAgICAgcmV0dXJuIHJhd0JvZHkudG9TdHJpbmcoZW5jb2RpbmcpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChyZXNwb25zZVR5cGUgPT09ICdqc29uJykge1xuICAgICAgICAgICAgcmV0dXJuIHJhd0JvZHkubGVuZ3RoID09PSAwID8gJycgOiBwYXJzZUpzb24ocmF3Qm9keS50b1N0cmluZygpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocmVzcG9uc2VUeXBlID09PSAnYnVmZmVyJykge1xuICAgICAgICAgICAgcmV0dXJuIHJhd0JvZHk7XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgbmV3IHR5cGVzXzEuUGFyc2VFcnJvcih7XG4gICAgICAgICAgICBtZXNzYWdlOiBgVW5rbm93biBib2R5IHR5cGUgJyR7cmVzcG9uc2VUeXBlfSdgLFxuICAgICAgICAgICAgbmFtZTogJ0Vycm9yJ1xuICAgICAgICB9LCByZXNwb25zZSk7XG4gICAgfVxuICAgIGNhdGNoIChlcnJvcikge1xuICAgICAgICB0aHJvdyBuZXcgdHlwZXNfMS5QYXJzZUVycm9yKGVycm9yLCByZXNwb25zZSk7XG4gICAgfVxufTtcbmV4cG9ydHMuZGVmYXVsdCA9IHBhcnNlQm9keTtcbiIsICJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2NyZWF0ZUJpbmRpbmcgPSAodGhpcyAmJiB0aGlzLl9fY3JlYXRlQmluZGluZykgfHwgKE9iamVjdC5jcmVhdGUgPyAoZnVuY3Rpb24obywgbSwgaywgazIpIHtcbiAgICBpZiAoazIgPT09IHVuZGVmaW5lZCkgazIgPSBrO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCBrMiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uKCkgeyByZXR1cm4gbVtrXTsgfSB9KTtcbn0pIDogKGZ1bmN0aW9uKG8sIG0sIGssIGsyKSB7XG4gICAgaWYgKGsyID09PSB1bmRlZmluZWQpIGsyID0gaztcbiAgICBvW2syXSA9IG1ba107XG59KSk7XG52YXIgX19leHBvcnRTdGFyID0gKHRoaXMgJiYgdGhpcy5fX2V4cG9ydFN0YXIpIHx8IGZ1bmN0aW9uKG0sIGV4cG9ydHMpIHtcbiAgICBmb3IgKHZhciBwIGluIG0pIGlmIChwICE9PSBcImRlZmF1bHRcIiAmJiAhT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGV4cG9ydHMsIHApKSBfX2NyZWF0ZUJpbmRpbmcoZXhwb3J0cywgbSwgcCk7XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuY29uc3QgZXZlbnRzXzEgPSByZXF1aXJlKFwiZXZlbnRzXCIpO1xuY29uc3QgaXNfMSA9IHJlcXVpcmUoXCJAc2luZHJlc29yaHVzL2lzXCIpO1xuY29uc3QgUENhbmNlbGFibGUgPSByZXF1aXJlKFwicC1jYW5jZWxhYmxlXCIpO1xuY29uc3QgdHlwZXNfMSA9IHJlcXVpcmUoXCIuL3R5cGVzXCIpO1xuY29uc3QgcGFyc2VfYm9keV8xID0gcmVxdWlyZShcIi4vcGFyc2UtYm9keVwiKTtcbmNvbnN0IGNvcmVfMSA9IHJlcXVpcmUoXCIuLi9jb3JlXCIpO1xuY29uc3QgcHJveHlfZXZlbnRzXzEgPSByZXF1aXJlKFwiLi4vY29yZS91dGlscy9wcm94eS1ldmVudHNcIik7XG5jb25zdCBnZXRfYnVmZmVyXzEgPSByZXF1aXJlKFwiLi4vY29yZS91dGlscy9nZXQtYnVmZmVyXCIpO1xuY29uc3QgaXNfcmVzcG9uc2Vfb2tfMSA9IHJlcXVpcmUoXCIuLi9jb3JlL3V0aWxzL2lzLXJlc3BvbnNlLW9rXCIpO1xuY29uc3QgcHJveGllZFJlcXVlc3RFdmVudHMgPSBbXG4gICAgJ3JlcXVlc3QnLFxuICAgICdyZXNwb25zZScsXG4gICAgJ3JlZGlyZWN0JyxcbiAgICAndXBsb2FkUHJvZ3Jlc3MnLFxuICAgICdkb3dubG9hZFByb2dyZXNzJ1xuXTtcbmZ1bmN0aW9uIGFzUHJvbWlzZShub3JtYWxpemVkT3B0aW9ucykge1xuICAgIGxldCBnbG9iYWxSZXF1ZXN0O1xuICAgIGxldCBnbG9iYWxSZXNwb25zZTtcbiAgICBjb25zdCBlbWl0dGVyID0gbmV3IGV2ZW50c18xLkV2ZW50RW1pdHRlcigpO1xuICAgIGNvbnN0IHByb21pc2UgPSBuZXcgUENhbmNlbGFibGUoKHJlc29sdmUsIHJlamVjdCwgb25DYW5jZWwpID0+IHtcbiAgICAgICAgY29uc3QgbWFrZVJlcXVlc3QgPSAocmV0cnlDb3VudCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcmVxdWVzdCA9IG5ldyBjb3JlXzEuZGVmYXVsdCh1bmRlZmluZWQsIG5vcm1hbGl6ZWRPcHRpb25zKTtcbiAgICAgICAgICAgIHJlcXVlc3QucmV0cnlDb3VudCA9IHJldHJ5Q291bnQ7XG4gICAgICAgICAgICByZXF1ZXN0Ll9ub1BpcGUgPSB0cnVlO1xuICAgICAgICAgICAgb25DYW5jZWwoKCkgPT4gcmVxdWVzdC5kZXN0cm95KCkpO1xuICAgICAgICAgICAgb25DYW5jZWwuc2hvdWxkUmVqZWN0ID0gZmFsc2U7XG4gICAgICAgICAgICBvbkNhbmNlbCgoKSA9PiByZWplY3QobmV3IHR5cGVzXzEuQ2FuY2VsRXJyb3IocmVxdWVzdCkpKTtcbiAgICAgICAgICAgIGdsb2JhbFJlcXVlc3QgPSByZXF1ZXN0O1xuICAgICAgICAgICAgcmVxdWVzdC5vbmNlKCdyZXNwb25zZScsIGFzeW5jIChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgICAgICByZXNwb25zZS5yZXRyeUNvdW50ID0gcmV0cnlDb3VudDtcbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UucmVxdWVzdC5hYm9ydGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIENhbmNlbGVkIHdoaWxlIGRvd25sb2FkaW5nIC0gd2lsbCB0aHJvdyBhIGBDYW5jZWxFcnJvcmAgb3IgYFRpbWVvdXRFcnJvcmAgZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBEb3dubG9hZCBib2R5XG4gICAgICAgICAgICAgICAgbGV0IHJhd0JvZHk7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgcmF3Qm9keSA9IGF3YWl0IGdldF9idWZmZXJfMS5kZWZhdWx0KHJlcXVlc3QpO1xuICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5yYXdCb2R5ID0gcmF3Qm9keTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2F0Y2ggKF9iKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFRoZSBzYW1lIGVycm9yIGlzIGNhdWdodCBiZWxvdy5cbiAgICAgICAgICAgICAgICAgICAgLy8gU2VlIHJlcXVlc3Qub25jZSgnZXJyb3InKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChyZXF1ZXN0Ll9pc0Fib3V0VG9FcnJvcikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIFBhcnNlIGJvZHlcbiAgICAgICAgICAgICAgICBjb25zdCBjb250ZW50RW5jb2RpbmcgPSAoKF9hID0gcmVzcG9uc2UuaGVhZGVyc1snY29udGVudC1lbmNvZGluZyddKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAnJykudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBpc0NvbXByZXNzZWQgPSBbJ2d6aXAnLCAnZGVmbGF0ZScsICdiciddLmluY2x1ZGVzKGNvbnRlbnRFbmNvZGluZyk7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBvcHRpb25zIH0gPSByZXF1ZXN0O1xuICAgICAgICAgICAgICAgIGlmIChpc0NvbXByZXNzZWQgJiYgIW9wdGlvbnMuZGVjb21wcmVzcykge1xuICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5ib2R5ID0gcmF3Qm9keTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5ib2R5ID0gcGFyc2VfYm9keV8xLmRlZmF1bHQocmVzcG9uc2UsIG9wdGlvbnMucmVzcG9uc2VUeXBlLCBvcHRpb25zLnBhcnNlSnNvbiwgb3B0aW9ucy5lbmNvZGluZyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBGYWxsYmFjayB0byBgdXRmOGBcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLmJvZHkgPSByYXdCb2R5LnRvU3RyaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNfcmVzcG9uc2Vfb2tfMS5pc1Jlc3BvbnNlT2socmVzcG9uc2UpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5fYmVmb3JlRXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IFtpbmRleCwgaG9va10gb2Ygb3B0aW9ucy5ob29rcy5hZnRlclJlc3BvbnNlLmVudHJpZXMoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBUUyBkb2Vzbid0IG5vdGljZSB0aGF0IENhbmNlbGFibGVSZXF1ZXN0IGlzIGEgUHJvbWlzZVxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWF3YWl0LWluLWxvb3BcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gYXdhaXQgaG9vayhyZXNwb25zZSwgYXN5bmMgKHVwZGF0ZWRPcHRpb25zKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdHlwZWRPcHRpb25zID0gY29yZV8xLmRlZmF1bHQubm9ybWFsaXplQXJndW1lbnRzKHVuZGVmaW5lZCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi51cGRhdGVkT3B0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0cnk6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGN1bGF0ZURlbGF5OiAoKSA9PiAwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93SHR0cEVycm9yczogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmVCb2R5T25seTogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBvcHRpb25zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSZW1vdmUgYW55IGZ1cnRoZXIgaG9va3MgZm9yIHRoYXQgcmVxdWVzdCwgYmVjYXVzZSB3ZSdsbCBjYWxsIHRoZW0gYW55d2F5LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSBsb29wIGNvbnRpbnVlcy4gV2UgZG9uJ3Qgd2FudCBkdXBsaWNhdGVzIChhc1Byb21pc2UgcmVjdXJzaW9uKS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlZE9wdGlvbnMuaG9va3MuYWZ0ZXJSZXNwb25zZSA9IHR5cGVkT3B0aW9ucy5ob29rcy5hZnRlclJlc3BvbnNlLnNsaWNlKDAsIGluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGhvb2sgb2YgdHlwZWRPcHRpb25zLmhvb2tzLmJlZm9yZVJldHJ5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1hd2FpdC1pbi1sb29wXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IGhvb2sodHlwZWRPcHRpb25zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJvbWlzZSA9IGFzUHJvbWlzZSh0eXBlZE9wdGlvbnMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2FuY2VsKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvbWlzZS5jYXRjaCgoKSA9PiB7IH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9taXNlLmNhbmNlbCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwcm9taXNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuX2JlZm9yZUVycm9yKG5ldyB0eXBlc18xLlJlcXVlc3RFcnJvcihlcnJvci5tZXNzYWdlLCBlcnJvciwgcmVxdWVzdCkpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGdsb2JhbFJlc3BvbnNlID0gcmVzcG9uc2U7XG4gICAgICAgICAgICAgICAgaWYgKCFpc19yZXNwb25zZV9va18xLmlzUmVzcG9uc2VPayhyZXNwb25zZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5fYmVmb3JlRXJyb3IobmV3IHR5cGVzXzEuSFRUUEVycm9yKHJlc3BvbnNlKSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmVzb2x2ZShyZXF1ZXN0Lm9wdGlvbnMucmVzb2x2ZUJvZHlPbmx5ID8gcmVzcG9uc2UuYm9keSA6IHJlc3BvbnNlKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29uc3Qgb25FcnJvciA9IChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChwcm9taXNlLmlzQ2FuY2VsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCB7IG9wdGlvbnMgfSA9IHJlcXVlc3Q7XG4gICAgICAgICAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgdHlwZXNfMS5IVFRQRXJyb3IgJiYgIW9wdGlvbnMudGhyb3dIdHRwRXJyb3JzKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgcmVzcG9uc2UgfSA9IGVycm9yO1xuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHJlcXVlc3Qub3B0aW9ucy5yZXNvbHZlQm9keU9ubHkgPyByZXNwb25zZS5ib2R5IDogcmVzcG9uc2UpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgcmVxdWVzdC5vbmNlKCdlcnJvcicsIG9uRXJyb3IpO1xuICAgICAgICAgICAgY29uc3QgcHJldmlvdXNCb2R5ID0gcmVxdWVzdC5vcHRpb25zLmJvZHk7XG4gICAgICAgICAgICByZXF1ZXN0Lm9uY2UoJ3JldHJ5JywgKG5ld1JldHJ5Q291bnQsIGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgICAgICAgICBpZiAocHJldmlvdXNCb2R5ID09PSAoKF9hID0gZXJyb3IucmVxdWVzdCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLm9wdGlvbnMuYm9keSkgJiYgaXNfMS5kZWZhdWx0Lm5vZGVTdHJlYW0oKF9iID0gZXJyb3IucmVxdWVzdCkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLm9wdGlvbnMuYm9keSkpIHtcbiAgICAgICAgICAgICAgICAgICAgb25FcnJvcihlcnJvcik7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbWFrZVJlcXVlc3QobmV3UmV0cnlDb3VudCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHByb3h5X2V2ZW50c18xLmRlZmF1bHQocmVxdWVzdCwgZW1pdHRlciwgcHJveGllZFJlcXVlc3RFdmVudHMpO1xuICAgICAgICB9O1xuICAgICAgICBtYWtlUmVxdWVzdCgwKTtcbiAgICB9KTtcbiAgICBwcm9taXNlLm9uID0gKGV2ZW50LCBmbikgPT4ge1xuICAgICAgICBlbWl0dGVyLm9uKGV2ZW50LCBmbik7XG4gICAgICAgIHJldHVybiBwcm9taXNlO1xuICAgIH07XG4gICAgY29uc3Qgc2hvcnRjdXQgPSAocmVzcG9uc2VUeXBlKSA9PiB7XG4gICAgICAgIGNvbnN0IG5ld1Byb21pc2UgPSAoYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgLy8gV2FpdCB1bnRpbCBkb3dubG9hZGluZyBoYXMgZW5kZWRcbiAgICAgICAgICAgIGF3YWl0IHByb21pc2U7XG4gICAgICAgICAgICBjb25zdCB7IG9wdGlvbnMgfSA9IGdsb2JhbFJlc3BvbnNlLnJlcXVlc3Q7XG4gICAgICAgICAgICByZXR1cm4gcGFyc2VfYm9keV8xLmRlZmF1bHQoZ2xvYmFsUmVzcG9uc2UsIHJlc3BvbnNlVHlwZSwgb3B0aW9ucy5wYXJzZUpzb24sIG9wdGlvbnMuZW5jb2RpbmcpO1xuICAgICAgICB9KSgpO1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhuZXdQcm9taXNlLCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhwcm9taXNlKSk7XG4gICAgICAgIHJldHVybiBuZXdQcm9taXNlO1xuICAgIH07XG4gICAgcHJvbWlzZS5qc29uID0gKCkgPT4ge1xuICAgICAgICBjb25zdCB7IGhlYWRlcnMgfSA9IGdsb2JhbFJlcXVlc3Qub3B0aW9ucztcbiAgICAgICAgaWYgKCFnbG9iYWxSZXF1ZXN0LndyaXRhYmxlRmluaXNoZWQgJiYgaGVhZGVycy5hY2NlcHQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgaGVhZGVycy5hY2NlcHQgPSAnYXBwbGljYXRpb24vanNvbic7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHNob3J0Y3V0KCdqc29uJyk7XG4gICAgfTtcbiAgICBwcm9taXNlLmJ1ZmZlciA9ICgpID0+IHNob3J0Y3V0KCdidWZmZXInKTtcbiAgICBwcm9taXNlLnRleHQgPSAoKSA9PiBzaG9ydGN1dCgndGV4dCcpO1xuICAgIHJldHVybiBwcm9taXNlO1xufVxuZXhwb3J0cy5kZWZhdWx0ID0gYXNQcm9taXNlO1xuX19leHBvcnRTdGFyKHJlcXVpcmUoXCIuL3R5cGVzXCIpLCBleHBvcnRzKTtcbiIsICJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmNvbnN0IHR5cGVzXzEgPSByZXF1aXJlKFwiLi90eXBlc1wiKTtcbmZ1bmN0aW9uIGNyZWF0ZVJlamVjdGlvbihlcnJvciwgLi4uYmVmb3JlRXJyb3JHcm91cHMpIHtcbiAgICBjb25zdCBwcm9taXNlID0gKGFzeW5jICgpID0+IHtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgdHlwZXNfMS5SZXF1ZXN0RXJyb3IpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBob29rcyBvZiBiZWZvcmVFcnJvckdyb3Vwcykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaG9va3MpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgaG9vayBvZiBob29rcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1hd2FpdC1pbi1sb29wXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IgPSBhd2FpdCBob29rKGVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlcnJvcl8pIHtcbiAgICAgICAgICAgICAgICBlcnJvciA9IGVycm9yXztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9KSgpO1xuICAgIGNvbnN0IHJldHVyblByb21pc2UgPSAoKSA9PiBwcm9taXNlO1xuICAgIHByb21pc2UuanNvbiA9IHJldHVyblByb21pc2U7XG4gICAgcHJvbWlzZS50ZXh0ID0gcmV0dXJuUHJvbWlzZTtcbiAgICBwcm9taXNlLmJ1ZmZlciA9IHJldHVyblByb21pc2U7XG4gICAgcHJvbWlzZS5vbiA9IHJldHVyblByb21pc2U7XG4gICAgcmV0dXJuIHByb21pc2U7XG59XG5leHBvcnRzLmRlZmF1bHQgPSBjcmVhdGVSZWplY3Rpb247XG4iLCAiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5jb25zdCBpc18xID0gcmVxdWlyZShcIkBzaW5kcmVzb3JodXMvaXNcIik7XG5mdW5jdGlvbiBkZWVwRnJlZXplKG9iamVjdCkge1xuICAgIGZvciAoY29uc3QgdmFsdWUgb2YgT2JqZWN0LnZhbHVlcyhvYmplY3QpKSB7XG4gICAgICAgIGlmIChpc18xLmRlZmF1bHQucGxhaW5PYmplY3QodmFsdWUpIHx8IGlzXzEuZGVmYXVsdC5hcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICAgIGRlZXBGcmVlemUodmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBPYmplY3QuZnJlZXplKG9iamVjdCk7XG59XG5leHBvcnRzLmRlZmF1bHQgPSBkZWVwRnJlZXplO1xuIiwgIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuIiwgIlwidXNlIHN0cmljdFwiO1xudmFyIF9fY3JlYXRlQmluZGluZyA9ICh0aGlzICYmIHRoaXMuX19jcmVhdGVCaW5kaW5nKSB8fCAoT2JqZWN0LmNyZWF0ZSA/IChmdW5jdGlvbihvLCBtLCBrLCBrMikge1xuICAgIGlmIChrMiA9PT0gdW5kZWZpbmVkKSBrMiA9IGs7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIGsyLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24oKSB7IHJldHVybiBtW2tdOyB9IH0pO1xufSkgOiAoZnVuY3Rpb24obywgbSwgaywgazIpIHtcbiAgICBpZiAoazIgPT09IHVuZGVmaW5lZCkgazIgPSBrO1xuICAgIG9bazJdID0gbVtrXTtcbn0pKTtcbnZhciBfX2V4cG9ydFN0YXIgPSAodGhpcyAmJiB0aGlzLl9fZXhwb3J0U3RhcikgfHwgZnVuY3Rpb24obSwgZXhwb3J0cykge1xuICAgIGZvciAodmFyIHAgaW4gbSkgaWYgKHAgIT09IFwiZGVmYXVsdFwiICYmICFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZXhwb3J0cywgcCkpIF9fY3JlYXRlQmluZGluZyhleHBvcnRzLCBtLCBwKTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLmRlZmF1bHRIYW5kbGVyID0gdm9pZCAwO1xuY29uc3QgaXNfMSA9IHJlcXVpcmUoXCJAc2luZHJlc29yaHVzL2lzXCIpO1xuY29uc3QgYXNfcHJvbWlzZV8xID0gcmVxdWlyZShcIi4vYXMtcHJvbWlzZVwiKTtcbmNvbnN0IGNyZWF0ZV9yZWplY3Rpb25fMSA9IHJlcXVpcmUoXCIuL2FzLXByb21pc2UvY3JlYXRlLXJlamVjdGlvblwiKTtcbmNvbnN0IGNvcmVfMSA9IHJlcXVpcmUoXCIuL2NvcmVcIik7XG5jb25zdCBkZWVwX2ZyZWV6ZV8xID0gcmVxdWlyZShcIi4vdXRpbHMvZGVlcC1mcmVlemVcIik7XG5jb25zdCBlcnJvcnMgPSB7XG4gICAgUmVxdWVzdEVycm9yOiBhc19wcm9taXNlXzEuUmVxdWVzdEVycm9yLFxuICAgIENhY2hlRXJyb3I6IGFzX3Byb21pc2VfMS5DYWNoZUVycm9yLFxuICAgIFJlYWRFcnJvcjogYXNfcHJvbWlzZV8xLlJlYWRFcnJvcixcbiAgICBIVFRQRXJyb3I6IGFzX3Byb21pc2VfMS5IVFRQRXJyb3IsXG4gICAgTWF4UmVkaXJlY3RzRXJyb3I6IGFzX3Byb21pc2VfMS5NYXhSZWRpcmVjdHNFcnJvcixcbiAgICBUaW1lb3V0RXJyb3I6IGFzX3Byb21pc2VfMS5UaW1lb3V0RXJyb3IsXG4gICAgUGFyc2VFcnJvcjogYXNfcHJvbWlzZV8xLlBhcnNlRXJyb3IsXG4gICAgQ2FuY2VsRXJyb3I6IGFzX3Byb21pc2VfMS5DYW5jZWxFcnJvcixcbiAgICBVbnN1cHBvcnRlZFByb3RvY29sRXJyb3I6IGFzX3Byb21pc2VfMS5VbnN1cHBvcnRlZFByb3RvY29sRXJyb3IsXG4gICAgVXBsb2FkRXJyb3I6IGFzX3Byb21pc2VfMS5VcGxvYWRFcnJvclxufTtcbi8vIFRoZSBgZGVsYXlgIHBhY2thZ2Ugd2VpZ2hzIDEwS0IgKCEpXG5jb25zdCBkZWxheSA9IGFzeW5jIChtcykgPT4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XG4gICAgc2V0VGltZW91dChyZXNvbHZlLCBtcyk7XG59KTtcbmNvbnN0IHsgbm9ybWFsaXplQXJndW1lbnRzIH0gPSBjb3JlXzEuZGVmYXVsdDtcbmNvbnN0IG1lcmdlT3B0aW9ucyA9ICguLi5zb3VyY2VzKSA9PiB7XG4gICAgbGV0IG1lcmdlZE9wdGlvbnM7XG4gICAgZm9yIChjb25zdCBzb3VyY2Ugb2Ygc291cmNlcykge1xuICAgICAgICBtZXJnZWRPcHRpb25zID0gbm9ybWFsaXplQXJndW1lbnRzKHVuZGVmaW5lZCwgc291cmNlLCBtZXJnZWRPcHRpb25zKTtcbiAgICB9XG4gICAgcmV0dXJuIG1lcmdlZE9wdGlvbnM7XG59O1xuY29uc3QgZ2V0UHJvbWlzZU9yU3RyZWFtID0gKG9wdGlvbnMpID0+IG9wdGlvbnMuaXNTdHJlYW0gPyBuZXcgY29yZV8xLmRlZmF1bHQodW5kZWZpbmVkLCBvcHRpb25zKSA6IGFzX3Byb21pc2VfMS5kZWZhdWx0KG9wdGlvbnMpO1xuY29uc3QgaXNHb3RJbnN0YW5jZSA9ICh2YWx1ZSkgPT4gKCdkZWZhdWx0cycgaW4gdmFsdWUgJiYgJ29wdGlvbnMnIGluIHZhbHVlLmRlZmF1bHRzKTtcbmNvbnN0IGFsaWFzZXMgPSBbXG4gICAgJ2dldCcsXG4gICAgJ3Bvc3QnLFxuICAgICdwdXQnLFxuICAgICdwYXRjaCcsXG4gICAgJ2hlYWQnLFxuICAgICdkZWxldGUnXG5dO1xuZXhwb3J0cy5kZWZhdWx0SGFuZGxlciA9IChvcHRpb25zLCBuZXh0KSA9PiBuZXh0KG9wdGlvbnMpO1xuY29uc3QgY2FsbEluaXRIb29rcyA9IChob29rcywgb3B0aW9ucykgPT4ge1xuICAgIGlmIChob29rcykge1xuICAgICAgICBmb3IgKGNvbnN0IGhvb2sgb2YgaG9va3MpIHtcbiAgICAgICAgICAgIGhvb2sob3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICB9XG59O1xuY29uc3QgY3JlYXRlID0gKGRlZmF1bHRzKSA9PiB7XG4gICAgLy8gUHJveHkgcHJvcGVydGllcyBmcm9tIG5leHQgaGFuZGxlcnNcbiAgICBkZWZhdWx0cy5fcmF3SGFuZGxlcnMgPSBkZWZhdWx0cy5oYW5kbGVycztcbiAgICBkZWZhdWx0cy5oYW5kbGVycyA9IGRlZmF1bHRzLmhhbmRsZXJzLm1hcChmbiA9PiAoKG9wdGlvbnMsIG5leHQpID0+IHtcbiAgICAgICAgLy8gVGhpcyB3aWxsIGJlIGFzc2lnbmVkIGJ5IGFzc2lnbmluZyByZXN1bHRcbiAgICAgICAgbGV0IHJvb3Q7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGZuKG9wdGlvbnMsIG5ld09wdGlvbnMgPT4ge1xuICAgICAgICAgICAgcm9vdCA9IG5leHQobmV3T3B0aW9ucyk7XG4gICAgICAgICAgICByZXR1cm4gcm9vdDtcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChyZXN1bHQgIT09IHJvb3QgJiYgIW9wdGlvbnMuaXNTdHJlYW0gJiYgcm9vdCkge1xuICAgICAgICAgICAgY29uc3QgdHlwZWRSZXN1bHQgPSByZXN1bHQ7XG4gICAgICAgICAgICBjb25zdCB7IHRoZW46IHByb21pc2VUaGVuLCBjYXRjaDogcHJvbWlzZUNhdGNoLCBmaW5hbGx5OiBwcm9taXNlRmlhbmxseSB9ID0gdHlwZWRSZXN1bHQ7XG4gICAgICAgICAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YodHlwZWRSZXN1bHQsIE9iamVjdC5nZXRQcm90b3R5cGVPZihyb290KSk7XG4gICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydGllcyh0eXBlZFJlc3VsdCwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMocm9vdCkpO1xuICAgICAgICAgICAgLy8gVGhlc2Ugc2hvdWxkIHBvaW50IHRvIHRoZSBuZXcgcHJvbWlzZVxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByb21pc2UvcHJlZmVyLWF3YWl0LXRvLXRoZW5cbiAgICAgICAgICAgIHR5cGVkUmVzdWx0LnRoZW4gPSBwcm9taXNlVGhlbjtcbiAgICAgICAgICAgIHR5cGVkUmVzdWx0LmNhdGNoID0gcHJvbWlzZUNhdGNoO1xuICAgICAgICAgICAgdHlwZWRSZXN1bHQuZmluYWxseSA9IHByb21pc2VGaWFubGx5O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSkpO1xuICAgIC8vIEdvdCBpbnRlcmZhY2VcbiAgICBjb25zdCBnb3QgPSAoKHVybCwgb3B0aW9ucyA9IHt9LCBfZGVmYXVsdHMpID0+IHtcbiAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgbGV0IGl0ZXJhdGlvbiA9IDA7XG4gICAgICAgIGNvbnN0IGl0ZXJhdGVIYW5kbGVycyA9IChuZXdPcHRpb25zKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gZGVmYXVsdHMuaGFuZGxlcnNbaXRlcmF0aW9uKytdKG5ld09wdGlvbnMsIGl0ZXJhdGlvbiA9PT0gZGVmYXVsdHMuaGFuZGxlcnMubGVuZ3RoID8gZ2V0UHJvbWlzZU9yU3RyZWFtIDogaXRlcmF0ZUhhbmRsZXJzKTtcbiAgICAgICAgfTtcbiAgICAgICAgLy8gVE9ETzogUmVtb3ZlIHRoaXMgaW4gR290IDEyLlxuICAgICAgICBpZiAoaXNfMS5kZWZhdWx0LnBsYWluT2JqZWN0KHVybCkpIHtcbiAgICAgICAgICAgIGNvbnN0IG1lcmdlZE9wdGlvbnMgPSB7XG4gICAgICAgICAgICAgICAgLi4udXJsLFxuICAgICAgICAgICAgICAgIC4uLm9wdGlvbnNcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBjb3JlXzEuc2V0Tm9uRW51bWVyYWJsZVByb3BlcnRpZXMoW3VybCwgb3B0aW9uc10sIG1lcmdlZE9wdGlvbnMpO1xuICAgICAgICAgICAgb3B0aW9ucyA9IG1lcmdlZE9wdGlvbnM7XG4gICAgICAgICAgICB1cmwgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIC8vIENhbGwgYGluaXRgIGhvb2tzXG4gICAgICAgICAgICBsZXQgaW5pdEhvb2tFcnJvcjtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgY2FsbEluaXRIb29rcyhkZWZhdWx0cy5vcHRpb25zLmhvb2tzLmluaXQsIG9wdGlvbnMpO1xuICAgICAgICAgICAgICAgIGNhbGxJbml0SG9va3MoKF9hID0gb3B0aW9ucy5ob29rcykgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmluaXQsIG9wdGlvbnMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgaW5pdEhvb2tFcnJvciA9IGVycm9yO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gTm9ybWFsaXplIG9wdGlvbnMgJiBjYWxsIGhhbmRsZXJzXG4gICAgICAgICAgICBjb25zdCBub3JtYWxpemVkT3B0aW9ucyA9IG5vcm1hbGl6ZUFyZ3VtZW50cyh1cmwsIG9wdGlvbnMsIF9kZWZhdWx0cyAhPT0gbnVsbCAmJiBfZGVmYXVsdHMgIT09IHZvaWQgMCA/IF9kZWZhdWx0cyA6IGRlZmF1bHRzLm9wdGlvbnMpO1xuICAgICAgICAgICAgbm9ybWFsaXplZE9wdGlvbnNbY29yZV8xLmtJc05vcm1hbGl6ZWRBbHJlYWR5XSA9IHRydWU7XG4gICAgICAgICAgICBpZiAoaW5pdEhvb2tFcnJvcikge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBhc19wcm9taXNlXzEuUmVxdWVzdEVycm9yKGluaXRIb29rRXJyb3IubWVzc2FnZSwgaW5pdEhvb2tFcnJvciwgbm9ybWFsaXplZE9wdGlvbnMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGl0ZXJhdGVIYW5kbGVycyhub3JtYWxpemVkT3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICBpZiAob3B0aW9ucy5pc1N0cmVhbSkge1xuICAgICAgICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZV9yZWplY3Rpb25fMS5kZWZhdWx0KGVycm9yLCBkZWZhdWx0cy5vcHRpb25zLmhvb2tzLmJlZm9yZUVycm9yLCAoX2IgPSBvcHRpb25zLmhvb2tzKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IuYmVmb3JlRXJyb3IpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSk7XG4gICAgZ290LmV4dGVuZCA9ICguLi5pbnN0YW5jZXNPck9wdGlvbnMpID0+IHtcbiAgICAgICAgY29uc3Qgb3B0aW9uc0FycmF5ID0gW2RlZmF1bHRzLm9wdGlvbnNdO1xuICAgICAgICBsZXQgaGFuZGxlcnMgPSBbLi4uZGVmYXVsdHMuX3Jhd0hhbmRsZXJzXTtcbiAgICAgICAgbGV0IGlzTXV0YWJsZURlZmF1bHRzO1xuICAgICAgICBmb3IgKGNvbnN0IHZhbHVlIG9mIGluc3RhbmNlc09yT3B0aW9ucykge1xuICAgICAgICAgICAgaWYgKGlzR290SW5zdGFuY2UodmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgb3B0aW9uc0FycmF5LnB1c2godmFsdWUuZGVmYXVsdHMub3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgaGFuZGxlcnMucHVzaCguLi52YWx1ZS5kZWZhdWx0cy5fcmF3SGFuZGxlcnMpO1xuICAgICAgICAgICAgICAgIGlzTXV0YWJsZURlZmF1bHRzID0gdmFsdWUuZGVmYXVsdHMubXV0YWJsZURlZmF1bHRzO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgb3B0aW9uc0FycmF5LnB1c2godmFsdWUpO1xuICAgICAgICAgICAgICAgIGlmICgnaGFuZGxlcnMnIGluIHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZXJzLnB1c2goLi4udmFsdWUuaGFuZGxlcnMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpc011dGFibGVEZWZhdWx0cyA9IHZhbHVlLm11dGFibGVEZWZhdWx0cztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBoYW5kbGVycyA9IGhhbmRsZXJzLmZpbHRlcihoYW5kbGVyID0+IGhhbmRsZXIgIT09IGV4cG9ydHMuZGVmYXVsdEhhbmRsZXIpO1xuICAgICAgICBpZiAoaGFuZGxlcnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICBoYW5kbGVycy5wdXNoKGV4cG9ydHMuZGVmYXVsdEhhbmRsZXIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjcmVhdGUoe1xuICAgICAgICAgICAgb3B0aW9uczogbWVyZ2VPcHRpb25zKC4uLm9wdGlvbnNBcnJheSksXG4gICAgICAgICAgICBoYW5kbGVycyxcbiAgICAgICAgICAgIG11dGFibGVEZWZhdWx0czogQm9vbGVhbihpc011dGFibGVEZWZhdWx0cylcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICAvLyBQYWdpbmF0aW9uXG4gICAgY29uc3QgcGFnaW5hdGVFYWNoID0gKGFzeW5jIGZ1bmN0aW9uKiAodXJsLCBvcHRpb25zKSB7XG4gICAgICAgIC8vIFRPRE86IFJlbW92ZSB0aGlzIGBAdHMtZXhwZWN0LWVycm9yYCB3aGVuIHVwZ3JhZGluZyB0byBUeXBlU2NyaXB0IDQuXG4gICAgICAgIC8vIEVycm9yOiBBcmd1bWVudCBvZiB0eXBlICdNZXJnZTxPcHRpb25zLCBQYWdpbmF0aW9uT3B0aW9uczxULCBSPj4gfCB1bmRlZmluZWQnIGlzIG5vdCBhc3NpZ25hYmxlIHRvIHBhcmFtZXRlciBvZiB0eXBlICdPcHRpb25zIHwgdW5kZWZpbmVkJy5cbiAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgICAgICBsZXQgbm9ybWFsaXplZE9wdGlvbnMgPSBub3JtYWxpemVBcmd1bWVudHModXJsLCBvcHRpb25zLCBkZWZhdWx0cy5vcHRpb25zKTtcbiAgICAgICAgbm9ybWFsaXplZE9wdGlvbnMucmVzb2x2ZUJvZHlPbmx5ID0gZmFsc2U7XG4gICAgICAgIGNvbnN0IHBhZ2luYXRpb24gPSBub3JtYWxpemVkT3B0aW9ucy5wYWdpbmF0aW9uO1xuICAgICAgICBpZiAoIWlzXzEuZGVmYXVsdC5vYmplY3QocGFnaW5hdGlvbikpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2BvcHRpb25zLnBhZ2luYXRpb25gIG11c3QgYmUgaW1wbGVtZW50ZWQnKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBhbGwgPSBbXTtcbiAgICAgICAgbGV0IHsgY291bnRMaW1pdCB9ID0gcGFnaW5hdGlvbjtcbiAgICAgICAgbGV0IG51bWJlck9mUmVxdWVzdHMgPSAwO1xuICAgICAgICB3aGlsZSAobnVtYmVyT2ZSZXF1ZXN0cyA8IHBhZ2luYXRpb24ucmVxdWVzdExpbWl0KSB7XG4gICAgICAgICAgICBpZiAobnVtYmVyT2ZSZXF1ZXN0cyAhPT0gMCkge1xuICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1hd2FpdC1pbi1sb29wXG4gICAgICAgICAgICAgICAgYXdhaXQgZGVsYXkocGFnaW5hdGlvbi5iYWNrb2ZmKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgRklYTUUhXG4gICAgICAgICAgICAvLyBUT0RPOiBUaHJvdyB3aGVuIHJlc3VsdCBpcyBub3QgYW4gaW5zdGFuY2Ugb2YgUmVzcG9uc2VcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1hd2FpdC1pbi1sb29wXG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSAoYXdhaXQgZ290KHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBub3JtYWxpemVkT3B0aW9ucykpO1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWF3YWl0LWluLWxvb3BcbiAgICAgICAgICAgIGNvbnN0IHBhcnNlZCA9IGF3YWl0IHBhZ2luYXRpb24udHJhbnNmb3JtKHJlc3VsdCk7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50ID0gW107XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgcGFyc2VkKSB7XG4gICAgICAgICAgICAgICAgaWYgKHBhZ2luYXRpb24uZmlsdGVyKGl0ZW0sIGFsbCwgY3VycmVudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFwYWdpbmF0aW9uLnNob3VsZENvbnRpbnVlKGl0ZW0sIGFsbCwgY3VycmVudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB5aWVsZCBpdGVtO1xuICAgICAgICAgICAgICAgICAgICBpZiAocGFnaW5hdGlvbi5zdGFja0FsbEl0ZW1zKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhbGwucHVzaChpdGVtKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50LnB1c2goaXRlbSk7XG4gICAgICAgICAgICAgICAgICAgIGlmICgtLWNvdW50TGltaXQgPD0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3Qgb3B0aW9uc1RvTWVyZ2UgPSBwYWdpbmF0aW9uLnBhZ2luYXRlKHJlc3VsdCwgYWxsLCBjdXJyZW50KTtcbiAgICAgICAgICAgIGlmIChvcHRpb25zVG9NZXJnZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAob3B0aW9uc1RvTWVyZ2UgPT09IHJlc3VsdC5yZXF1ZXN0Lm9wdGlvbnMpIHtcbiAgICAgICAgICAgICAgICBub3JtYWxpemVkT3B0aW9ucyA9IHJlc3VsdC5yZXF1ZXN0Lm9wdGlvbnM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChvcHRpb25zVG9NZXJnZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgbm9ybWFsaXplZE9wdGlvbnMgPSBub3JtYWxpemVBcmd1bWVudHModW5kZWZpbmVkLCBvcHRpb25zVG9NZXJnZSwgbm9ybWFsaXplZE9wdGlvbnMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbnVtYmVyT2ZSZXF1ZXN0cysrO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgZ290LnBhZ2luYXRlID0gcGFnaW5hdGVFYWNoO1xuICAgIGdvdC5wYWdpbmF0ZS5hbGwgPSAoYXN5bmMgKHVybCwgb3B0aW9ucykgPT4ge1xuICAgICAgICBjb25zdCByZXN1bHRzID0gW107XG4gICAgICAgIGZvciBhd2FpdCAoY29uc3QgaXRlbSBvZiBwYWdpbmF0ZUVhY2godXJsLCBvcHRpb25zKSkge1xuICAgICAgICAgICAgcmVzdWx0cy5wdXNoKGl0ZW0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHRzO1xuICAgIH0pO1xuICAgIC8vIEZvciB0aG9zZSB3aG8gbGlrZSB2ZXJ5IGRlc2NyaXB0aXZlIG5hbWVzXG4gICAgZ290LnBhZ2luYXRlLmVhY2ggPSBwYWdpbmF0ZUVhY2g7XG4gICAgLy8gU3RyZWFtIEFQSVxuICAgIGdvdC5zdHJlYW0gPSAoKHVybCwgb3B0aW9ucykgPT4gZ290KHVybCwgeyAuLi5vcHRpb25zLCBpc1N0cmVhbTogdHJ1ZSB9KSk7XG4gICAgLy8gU2hvcnRjdXRzXG4gICAgZm9yIChjb25zdCBtZXRob2Qgb2YgYWxpYXNlcykge1xuICAgICAgICBnb3RbbWV0aG9kXSA9ICgodXJsLCBvcHRpb25zKSA9PiBnb3QodXJsLCB7IC4uLm9wdGlvbnMsIG1ldGhvZCB9KSk7XG4gICAgICAgIGdvdC5zdHJlYW1bbWV0aG9kXSA9ICgodXJsLCBvcHRpb25zKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gZ290KHVybCwgeyAuLi5vcHRpb25zLCBtZXRob2QsIGlzU3RyZWFtOiB0cnVlIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgT2JqZWN0LmFzc2lnbihnb3QsIGVycm9ycyk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGdvdCwgJ2RlZmF1bHRzJywge1xuICAgICAgICB2YWx1ZTogZGVmYXVsdHMubXV0YWJsZURlZmF1bHRzID8gZGVmYXVsdHMgOiBkZWVwX2ZyZWV6ZV8xLmRlZmF1bHQoZGVmYXVsdHMpLFxuICAgICAgICB3cml0YWJsZTogZGVmYXVsdHMubXV0YWJsZURlZmF1bHRzLFxuICAgICAgICBjb25maWd1cmFibGU6IGRlZmF1bHRzLm11dGFibGVEZWZhdWx0cyxcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIGdvdC5tZXJnZU9wdGlvbnMgPSBtZXJnZU9wdGlvbnM7XG4gICAgcmV0dXJuIGdvdDtcbn07XG5leHBvcnRzLmRlZmF1bHQgPSBjcmVhdGU7XG5fX2V4cG9ydFN0YXIocmVxdWlyZShcIi4vdHlwZXNcIiksIGV4cG9ydHMpO1xuIiwgIlwidXNlIHN0cmljdFwiO1xudmFyIF9fY3JlYXRlQmluZGluZyA9ICh0aGlzICYmIHRoaXMuX19jcmVhdGVCaW5kaW5nKSB8fCAoT2JqZWN0LmNyZWF0ZSA/IChmdW5jdGlvbihvLCBtLCBrLCBrMikge1xuICAgIGlmIChrMiA9PT0gdW5kZWZpbmVkKSBrMiA9IGs7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIGsyLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24oKSB7IHJldHVybiBtW2tdOyB9IH0pO1xufSkgOiAoZnVuY3Rpb24obywgbSwgaywgazIpIHtcbiAgICBpZiAoazIgPT09IHVuZGVmaW5lZCkgazIgPSBrO1xuICAgIG9bazJdID0gbVtrXTtcbn0pKTtcbnZhciBfX2V4cG9ydFN0YXIgPSAodGhpcyAmJiB0aGlzLl9fZXhwb3J0U3RhcikgfHwgZnVuY3Rpb24obSwgZXhwb3J0cykge1xuICAgIGZvciAodmFyIHAgaW4gbSkgaWYgKHAgIT09IFwiZGVmYXVsdFwiICYmICFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZXhwb3J0cywgcCkpIF9fY3JlYXRlQmluZGluZyhleHBvcnRzLCBtLCBwKTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5jb25zdCB1cmxfMSA9IHJlcXVpcmUoXCJ1cmxcIik7XG5jb25zdCBjcmVhdGVfMSA9IHJlcXVpcmUoXCIuL2NyZWF0ZVwiKTtcbmNvbnN0IGRlZmF1bHRzID0ge1xuICAgIG9wdGlvbnM6IHtcbiAgICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgICAgcmV0cnk6IHtcbiAgICAgICAgICAgIGxpbWl0OiAyLFxuICAgICAgICAgICAgbWV0aG9kczogW1xuICAgICAgICAgICAgICAgICdHRVQnLFxuICAgICAgICAgICAgICAgICdQVVQnLFxuICAgICAgICAgICAgICAgICdIRUFEJyxcbiAgICAgICAgICAgICAgICAnREVMRVRFJyxcbiAgICAgICAgICAgICAgICAnT1BUSU9OUycsXG4gICAgICAgICAgICAgICAgJ1RSQUNFJ1xuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIHN0YXR1c0NvZGVzOiBbXG4gICAgICAgICAgICAgICAgNDA4LFxuICAgICAgICAgICAgICAgIDQxMyxcbiAgICAgICAgICAgICAgICA0MjksXG4gICAgICAgICAgICAgICAgNTAwLFxuICAgICAgICAgICAgICAgIDUwMixcbiAgICAgICAgICAgICAgICA1MDMsXG4gICAgICAgICAgICAgICAgNTA0LFxuICAgICAgICAgICAgICAgIDUyMSxcbiAgICAgICAgICAgICAgICA1MjIsXG4gICAgICAgICAgICAgICAgNTI0XG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgZXJyb3JDb2RlczogW1xuICAgICAgICAgICAgICAgICdFVElNRURPVVQnLFxuICAgICAgICAgICAgICAgICdFQ09OTlJFU0VUJyxcbiAgICAgICAgICAgICAgICAnRUFERFJJTlVTRScsXG4gICAgICAgICAgICAgICAgJ0VDT05OUkVGVVNFRCcsXG4gICAgICAgICAgICAgICAgJ0VQSVBFJyxcbiAgICAgICAgICAgICAgICAnRU5PVEZPVU5EJyxcbiAgICAgICAgICAgICAgICAnRU5FVFVOUkVBQ0gnLFxuICAgICAgICAgICAgICAgICdFQUlfQUdBSU4nXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgbWF4UmV0cnlBZnRlcjogdW5kZWZpbmVkLFxuICAgICAgICAgICAgY2FsY3VsYXRlRGVsYXk6ICh7IGNvbXB1dGVkVmFsdWUgfSkgPT4gY29tcHV0ZWRWYWx1ZVxuICAgICAgICB9LFxuICAgICAgICB0aW1lb3V0OiB7fSxcbiAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgJ3VzZXItYWdlbnQnOiAnZ290IChodHRwczovL2dpdGh1Yi5jb20vc2luZHJlc29yaHVzL2dvdCknXG4gICAgICAgIH0sXG4gICAgICAgIGhvb2tzOiB7XG4gICAgICAgICAgICBpbml0OiBbXSxcbiAgICAgICAgICAgIGJlZm9yZVJlcXVlc3Q6IFtdLFxuICAgICAgICAgICAgYmVmb3JlUmVkaXJlY3Q6IFtdLFxuICAgICAgICAgICAgYmVmb3JlUmV0cnk6IFtdLFxuICAgICAgICAgICAgYmVmb3JlRXJyb3I6IFtdLFxuICAgICAgICAgICAgYWZ0ZXJSZXNwb25zZTogW11cbiAgICAgICAgfSxcbiAgICAgICAgY2FjaGU6IHVuZGVmaW5lZCxcbiAgICAgICAgZG5zQ2FjaGU6IHVuZGVmaW5lZCxcbiAgICAgICAgZGVjb21wcmVzczogdHJ1ZSxcbiAgICAgICAgdGhyb3dIdHRwRXJyb3JzOiB0cnVlLFxuICAgICAgICBmb2xsb3dSZWRpcmVjdDogdHJ1ZSxcbiAgICAgICAgaXNTdHJlYW06IGZhbHNlLFxuICAgICAgICByZXNwb25zZVR5cGU6ICd0ZXh0JyxcbiAgICAgICAgcmVzb2x2ZUJvZHlPbmx5OiBmYWxzZSxcbiAgICAgICAgbWF4UmVkaXJlY3RzOiAxMCxcbiAgICAgICAgcHJlZml4VXJsOiAnJyxcbiAgICAgICAgbWV0aG9kUmV3cml0aW5nOiB0cnVlLFxuICAgICAgICBpZ25vcmVJbnZhbGlkQ29va2llczogZmFsc2UsXG4gICAgICAgIGNvbnRleHQ6IHt9LFxuICAgICAgICAvLyBUT0RPOiBTZXQgdGhpcyB0byBgdHJ1ZWAgd2hlbiBHb3QgMTIgZ2V0cyByZWxlYXNlZFxuICAgICAgICBodHRwMjogZmFsc2UsXG4gICAgICAgIGFsbG93R2V0Qm9keTogZmFsc2UsXG4gICAgICAgIGh0dHBzOiB1bmRlZmluZWQsXG4gICAgICAgIHBhZ2luYXRpb246IHtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnJlcXVlc3Qub3B0aW9ucy5yZXNwb25zZVR5cGUgPT09ICdqc29uJykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzcG9uc2UuYm9keTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIEpTT04ucGFyc2UocmVzcG9uc2UuYm9keSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcGFnaW5hdGU6IHJlc3BvbnNlID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIVJlZmxlY3QuaGFzKHJlc3BvbnNlLmhlYWRlcnMsICdsaW5rJykpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBpdGVtcyA9IHJlc3BvbnNlLmhlYWRlcnMubGluay5zcGxpdCgnLCcpO1xuICAgICAgICAgICAgICAgIGxldCBuZXh0O1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBpdGVtcykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXJzZWQgPSBpdGVtLnNwbGl0KCc7Jyk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwYXJzZWRbMV0uaW5jbHVkZXMoJ25leHQnKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCA9IHBhcnNlZFswXS50cmltU3RhcnQoKS50cmltKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBuZXh0ID0gbmV4dC5zbGljZSgxLCAtMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAobmV4dCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBvcHRpb25zID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBuZXcgdXJsXzEuVVJMKG5leHQpXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBvcHRpb25zO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZmlsdGVyOiAoKSA9PiB0cnVlLFxuICAgICAgICAgICAgc2hvdWxkQ29udGludWU6ICgpID0+IHRydWUsXG4gICAgICAgICAgICBjb3VudExpbWl0OiBJbmZpbml0eSxcbiAgICAgICAgICAgIGJhY2tvZmY6IDAsXG4gICAgICAgICAgICByZXF1ZXN0TGltaXQ6IDEwMDAwLFxuICAgICAgICAgICAgc3RhY2tBbGxJdGVtczogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBwYXJzZUpzb246ICh0ZXh0KSA9PiBKU09OLnBhcnNlKHRleHQpLFxuICAgICAgICBzdHJpbmdpZnlKc29uOiAob2JqZWN0KSA9PiBKU09OLnN0cmluZ2lmeShvYmplY3QpLFxuICAgICAgICBjYWNoZU9wdGlvbnM6IHt9XG4gICAgfSxcbiAgICBoYW5kbGVyczogW2NyZWF0ZV8xLmRlZmF1bHRIYW5kbGVyXSxcbiAgICBtdXRhYmxlRGVmYXVsdHM6IGZhbHNlXG59O1xuY29uc3QgZ290ID0gY3JlYXRlXzEuZGVmYXVsdChkZWZhdWx0cyk7XG5leHBvcnRzLmRlZmF1bHQgPSBnb3Q7XG4vLyBGb3IgQ29tbW9uSlMgZGVmYXVsdCBleHBvcnQgc3VwcG9ydFxubW9kdWxlLmV4cG9ydHMgPSBnb3Q7XG5tb2R1bGUuZXhwb3J0cy5kZWZhdWx0ID0gZ290O1xubW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7IC8vIFdvcmthcm91bmQgZm9yIFRTIGlzc3VlOiBodHRwczovL2dpdGh1Yi5jb20vc2luZHJlc29yaHVzL2dvdC9wdWxsLzEyNjdcbl9fZXhwb3J0U3RhcihyZXF1aXJlKFwiLi9jcmVhdGVcIiksIGV4cG9ydHMpO1xuX19leHBvcnRTdGFyKHJlcXVpcmUoXCIuL2FzLXByb21pc2VcIiksIGV4cG9ydHMpO1xuIiwgIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5kZWwgPSBleHBvcnRzLnBvc3QgPSBleHBvcnRzLnB1dCA9IGV4cG9ydHMuZ2V0ID0gZXhwb3J0cy5yZXF1ZXN0ID0gZXhwb3J0cy5NZXRob2QgPSBleHBvcnRzLmdldE5ldHdvcmtTZXR0aW5ncyA9IHZvaWQgMDtcbmNvbnN0IHRzbGliXzEgPSByZXF1aXJlKFwidHNsaWJcIik7XG5jb25zdCBmc2xpYl8xID0gcmVxdWlyZShcIkB5YXJucGtnL2ZzbGliXCIpO1xuY29uc3QgaHR0cHNfMSA9IHJlcXVpcmUoXCJodHRwc1wiKTtcbmNvbnN0IGh0dHBfMSA9IHJlcXVpcmUoXCJodHRwXCIpO1xuY29uc3QgbWljcm9tYXRjaF8xID0gdHNsaWJfMS5fX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIm1pY3JvbWF0Y2hcIikpO1xuY29uc3QgdHVubmVsXzEgPSB0c2xpYl8xLl9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwidHVubmVsXCIpKTtcbmNvbnN0IHVybF8xID0gcmVxdWlyZShcInVybFwiKTtcbmNvbnN0IE1lc3NhZ2VOYW1lXzEgPSByZXF1aXJlKFwiLi9NZXNzYWdlTmFtZVwiKTtcbmNvbnN0IFJlcG9ydF8xID0gcmVxdWlyZShcIi4vUmVwb3J0XCIpO1xuY29uc3QgZm9ybWF0VXRpbHMgPSB0c2xpYl8xLl9faW1wb3J0U3RhcihyZXF1aXJlKFwiLi9mb3JtYXRVdGlsc1wiKSk7XG5jb25zdCBtaXNjVXRpbHMgPSB0c2xpYl8xLl9faW1wb3J0U3RhcihyZXF1aXJlKFwiLi9taXNjVXRpbHNcIikpO1xuY29uc3QgY2FjaGUgPSBuZXcgTWFwKCk7XG5jb25zdCBmaWxlQ2FjaGUgPSBuZXcgTWFwKCk7XG5jb25zdCBnbG9iYWxIdHRwQWdlbnQgPSBuZXcgaHR0cF8xLkFnZW50KHsga2VlcEFsaXZlOiB0cnVlIH0pO1xuY29uc3QgZ2xvYmFsSHR0cHNBZ2VudCA9IG5ldyBodHRwc18xLkFnZW50KHsga2VlcEFsaXZlOiB0cnVlIH0pO1xuZnVuY3Rpb24gcGFyc2VQcm94eShzcGVjaWZpZXIpIHtcbiAgICBjb25zdCB1cmwgPSBuZXcgdXJsXzEuVVJMKHNwZWNpZmllcik7XG4gICAgY29uc3QgcHJveHkgPSB7IGhvc3Q6IHVybC5ob3N0bmFtZSwgaGVhZGVyczoge30gfTtcbiAgICBpZiAodXJsLnBvcnQpXG4gICAgICAgIHByb3h5LnBvcnQgPSBOdW1iZXIodXJsLnBvcnQpO1xuICAgIGlmICh1cmwudXNlcm5hbWUgJiYgdXJsLnBhc3N3b3JkKVxuICAgICAgICBwcm94eS5wcm94eUF1dGggPSBgJHt1cmwudXNlcm5hbWV9OiR7dXJsLnBhc3N3b3JkfWA7XG4gICAgcmV0dXJuIHsgcHJveHkgfTtcbn1cbmFzeW5jIGZ1bmN0aW9uIGdldENhY2hlZEZpbGUoZmlsZVBhdGgpIHtcbiAgICByZXR1cm4gbWlzY1V0aWxzLmdldEZhY3RvcnlXaXRoRGVmYXVsdChmaWxlQ2FjaGUsIGZpbGVQYXRoLCAoKSA9PiB7XG4gICAgICAgIHJldHVybiBmc2xpYl8xLnhmcy5yZWFkRmlsZVByb21pc2UoZmlsZVBhdGgpLnRoZW4oZmlsZSA9PiB7XG4gICAgICAgICAgICBmaWxlQ2FjaGUuc2V0KGZpbGVQYXRoLCBmaWxlKTtcbiAgICAgICAgICAgIHJldHVybiBmaWxlO1xuICAgICAgICB9KTtcbiAgICB9KTtcbn1cbmZ1bmN0aW9uIHByZXR0eVJlc3BvbnNlQ29kZSh7IHN0YXR1c0NvZGUsIHN0YXR1c01lc3NhZ2UgfSwgY29uZmlndXJhdGlvbikge1xuICAgIGNvbnN0IHByZXR0eVN0YXR1c0NvZGUgPSBmb3JtYXRVdGlscy5wcmV0dHkoY29uZmlndXJhdGlvbiwgc3RhdHVzQ29kZSwgZm9ybWF0VXRpbHMuVHlwZS5OVU1CRVIpO1xuICAgIGNvbnN0IGhyZWYgPSBgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRUUC9TdGF0dXMvJHtzdGF0dXNDb2RlfWA7XG4gICAgcmV0dXJuIGZvcm1hdFV0aWxzLmFwcGx5SHlwZXJsaW5rKGNvbmZpZ3VyYXRpb24sIGAke3ByZXR0eVN0YXR1c0NvZGV9JHtzdGF0dXNNZXNzYWdlID8gYCAoJHtzdGF0dXNNZXNzYWdlfSlgIDogYGB9YCwgaHJlZik7XG59XG5hc3luYyBmdW5jdGlvbiBwcmV0dHlOZXR3b3JrRXJyb3IocmVzcG9uc2UsIHsgY29uZmlndXJhdGlvbiwgY3VzdG9tRXJyb3JNZXNzYWdlIH0pIHtcbiAgICB2YXIgX2EsIF9iO1xuICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBhd2FpdCByZXNwb25zZTtcbiAgICB9XG4gICAgY2F0Y2ggKGVycikge1xuICAgICAgICBpZiAoZXJyLm5hbWUgIT09IGBIVFRQRXJyb3JgKVxuICAgICAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgICBsZXQgbWVzc2FnZSA9IChfYSA9IGN1c3RvbUVycm9yTWVzc2FnZSA9PT0gbnVsbCB8fCBjdXN0b21FcnJvck1lc3NhZ2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGN1c3RvbUVycm9yTWVzc2FnZShlcnIsIGNvbmZpZ3VyYXRpb24pKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAoX2IgPSBlcnIucmVzcG9uc2UuYm9keSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmVycm9yO1xuICAgICAgICBpZiAobWVzc2FnZSA9PSBudWxsKSB7XG4gICAgICAgICAgICBpZiAoZXJyLm1lc3NhZ2Uuc3RhcnRzV2l0aChgUmVzcG9uc2UgY29kZWApKSB7XG4gICAgICAgICAgICAgICAgbWVzc2FnZSA9IGBUaGUgcmVtb3RlIHNlcnZlciBmYWlsZWQgdG8gcHJvdmlkZSB0aGUgcmVxdWVzdGVkIHJlc291cmNlYDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBlcnIubWVzc2FnZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoZXJyLmNvZGUgPT09IGBFVElNRURPVVRgICYmIGVyci5ldmVudCA9PT0gYHNvY2tldGApXG4gICAgICAgICAgICBtZXNzYWdlICs9IGAoY2FuIGJlIGluY3JlYXNlZCB2aWEgJHtmb3JtYXRVdGlscy5wcmV0dHkoY29uZmlndXJhdGlvbiwgYGh0dHBUaW1lb3V0YCwgZm9ybWF0VXRpbHMuVHlwZS5TRVRUSU5HKX0pYDtcbiAgICAgICAgY29uc3QgbmV0d29ya0Vycm9yID0gbmV3IFJlcG9ydF8xLlJlcG9ydEVycm9yKE1lc3NhZ2VOYW1lXzEuTWVzc2FnZU5hbWUuTkVUV09SS19FUlJPUiwgbWVzc2FnZSwgcmVwb3J0ID0+IHtcbiAgICAgICAgICAgIGlmIChlcnIucmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgICByZXBvcnQucmVwb3J0RXJyb3IoTWVzc2FnZU5hbWVfMS5NZXNzYWdlTmFtZS5ORVRXT1JLX0VSUk9SLCBgICAke2Zvcm1hdFV0aWxzLnByZXR0eUZpZWxkKGNvbmZpZ3VyYXRpb24sIHtcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGBSZXNwb25zZSBDb2RlYCxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZvcm1hdFV0aWxzLnR1cGxlKGZvcm1hdFV0aWxzLlR5cGUuTk9fSElOVCwgcHJldHR5UmVzcG9uc2VDb2RlKGVyci5yZXNwb25zZSwgY29uZmlndXJhdGlvbikpLFxuICAgICAgICAgICAgICAgIH0pfWApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGVyci5yZXF1ZXN0KSB7XG4gICAgICAgICAgICAgICAgcmVwb3J0LnJlcG9ydEVycm9yKE1lc3NhZ2VOYW1lXzEuTWVzc2FnZU5hbWUuTkVUV09SS19FUlJPUiwgYCAgJHtmb3JtYXRVdGlscy5wcmV0dHlGaWVsZChjb25maWd1cmF0aW9uLCB7XG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiBgUmVxdWVzdCBNZXRob2RgLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZm9ybWF0VXRpbHMudHVwbGUoZm9ybWF0VXRpbHMuVHlwZS5OT19ISU5ULCBlcnIucmVxdWVzdC5vcHRpb25zLm1ldGhvZCksXG4gICAgICAgICAgICAgICAgfSl9YCk7XG4gICAgICAgICAgICAgICAgcmVwb3J0LnJlcG9ydEVycm9yKE1lc3NhZ2VOYW1lXzEuTWVzc2FnZU5hbWUuTkVUV09SS19FUlJPUiwgYCAgJHtmb3JtYXRVdGlscy5wcmV0dHlGaWVsZChjb25maWd1cmF0aW9uLCB7XG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiBgUmVxdWVzdCBVUkxgLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZm9ybWF0VXRpbHMudHVwbGUoZm9ybWF0VXRpbHMuVHlwZS5VUkwsIGVyci5yZXF1ZXN0LnJlcXVlc3RVcmwpLFxuICAgICAgICAgICAgICAgIH0pfWApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGVyci5yZXF1ZXN0LnJlZGlyZWN0cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgcmVwb3J0LnJlcG9ydEVycm9yKE1lc3NhZ2VOYW1lXzEuTWVzc2FnZU5hbWUuTkVUV09SS19FUlJPUiwgYCAgJHtmb3JtYXRVdGlscy5wcmV0dHlGaWVsZChjb25maWd1cmF0aW9uLCB7XG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiBgUmVxdWVzdCBSZWRpcmVjdHNgLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZm9ybWF0VXRpbHMudHVwbGUoZm9ybWF0VXRpbHMuVHlwZS5OT19ISU5ULCBmb3JtYXRVdGlscy5wcmV0dHlMaXN0KGNvbmZpZ3VyYXRpb24sIGVyci5yZXF1ZXN0LnJlZGlyZWN0cywgZm9ybWF0VXRpbHMuVHlwZS5VUkwpKSxcbiAgICAgICAgICAgICAgICB9KX1gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChlcnIucmVxdWVzdC5yZXRyeUNvdW50ID09PSBlcnIucmVxdWVzdC5vcHRpb25zLnJldHJ5LmxpbWl0KSB7XG4gICAgICAgICAgICAgICAgcmVwb3J0LnJlcG9ydEVycm9yKE1lc3NhZ2VOYW1lXzEuTWVzc2FnZU5hbWUuTkVUV09SS19FUlJPUiwgYCAgJHtmb3JtYXRVdGlscy5wcmV0dHlGaWVsZChjb25maWd1cmF0aW9uLCB7XG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiBgUmVxdWVzdCBSZXRyeSBDb3VudGAsXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmb3JtYXRVdGlscy50dXBsZShmb3JtYXRVdGlscy5UeXBlLk5PX0hJTlQsIGAke2Zvcm1hdFV0aWxzLnByZXR0eShjb25maWd1cmF0aW9uLCBlcnIucmVxdWVzdC5yZXRyeUNvdW50LCBmb3JtYXRVdGlscy5UeXBlLk5VTUJFUil9IChjYW4gYmUgaW5jcmVhc2VkIHZpYSAke2Zvcm1hdFV0aWxzLnByZXR0eShjb25maWd1cmF0aW9uLCBgaHR0cFJldHJ5YCwgZm9ybWF0VXRpbHMuVHlwZS5TRVRUSU5HKX0pYCksXG4gICAgICAgICAgICAgICAgfSl9YCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBuZXR3b3JrRXJyb3Iub3JpZ2luYWxFcnJvciA9IGVycjtcbiAgICAgICAgdGhyb3cgbmV0d29ya0Vycm9yO1xuICAgIH1cbn1cbi8qKlxuICogU2VhcmNoZXMgdGhyb3VnaCBuZXR3b3JrU2V0dGluZ3MgYW5kIHJldHVybnMgdGhlIG1vc3Qgc3BlY2lmaWMgbWF0Y2hcbiAqL1xuZnVuY3Rpb24gZ2V0TmV0d29ya1NldHRpbmdzKHRhcmdldCwgb3B0cykge1xuICAgIC8vIFNvcnQgdGhlIGNvbmZpZyBieSBrZXkgbGVuZ3RoIHRvIG1hdGNoIG9uIHRoZSBtb3N0IHNwZWNpZmljIHBhdHRlcm5cbiAgICBjb25zdCBuZXR3b3JrU2V0dGluZ3MgPSBbLi4ub3B0cy5jb25maWd1cmF0aW9uLmdldChgbmV0d29ya1NldHRpbmdzYCldLnNvcnQoKFtrZXlBXSwgW2tleUJdKSA9PiB7XG4gICAgICAgIHJldHVybiBrZXlCLmxlbmd0aCAtIGtleUEubGVuZ3RoO1xuICAgIH0pO1xuICAgIGNvbnN0IG1lcmdlZE5ldHdvcmtTZXR0aW5ncyA9IHtcbiAgICAgICAgZW5hYmxlTmV0d29yazogdW5kZWZpbmVkLFxuICAgICAgICBodHRwc0NhRmlsZVBhdGg6IHVuZGVmaW5lZCxcbiAgICAgICAgaHR0cFByb3h5OiB1bmRlZmluZWQsXG4gICAgICAgIGh0dHBzUHJveHk6IHVuZGVmaW5lZCxcbiAgICAgICAgaHR0cHNLZXlGaWxlUGF0aDogdW5kZWZpbmVkLFxuICAgICAgICBodHRwc0NlcnRGaWxlUGF0aDogdW5kZWZpbmVkLFxuICAgIH07XG4gICAgY29uc3QgbWVyZ2FibGVLZXlzID0gT2JqZWN0LmtleXMobWVyZ2VkTmV0d29ya1NldHRpbmdzKTtcbiAgICBjb25zdCB1cmwgPSB0eXBlb2YgdGFyZ2V0ID09PSBgc3RyaW5nYCA/IG5ldyB1cmxfMS5VUkwodGFyZ2V0KSA6IHRhcmdldDtcbiAgICBmb3IgKGNvbnN0IFtnbG9iLCBjb25maWddIG9mIG5ldHdvcmtTZXR0aW5ncykge1xuICAgICAgICBpZiAobWljcm9tYXRjaF8xLmRlZmF1bHQuaXNNYXRjaCh1cmwuaG9zdG5hbWUsIGdsb2IpKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBtZXJnYWJsZUtleXMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzZXR0aW5nID0gY29uZmlnLmdldChrZXkpO1xuICAgICAgICAgICAgICAgIGlmIChzZXR0aW5nICE9PSBudWxsICYmIHR5cGVvZiBtZXJnZWROZXR3b3JrU2V0dGluZ3Nba2V5XSA9PT0gYHVuZGVmaW5lZGApIHtcbiAgICAgICAgICAgICAgICAgICAgbWVyZ2VkTmV0d29ya1NldHRpbmdzW2tleV0gPSBzZXR0aW5nO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBBcHBseSBkZWZhdWx0c1xuICAgIGZvciAoY29uc3Qga2V5IG9mIG1lcmdhYmxlS2V5cylcbiAgICAgICAgaWYgKHR5cGVvZiBtZXJnZWROZXR3b3JrU2V0dGluZ3Nba2V5XSA9PT0gYHVuZGVmaW5lZGApXG4gICAgICAgICAgICBtZXJnZWROZXR3b3JrU2V0dGluZ3Nba2V5XSA9IG9wdHMuY29uZmlndXJhdGlvbi5nZXQoa2V5KTtcbiAgICByZXR1cm4gbWVyZ2VkTmV0d29ya1NldHRpbmdzO1xufVxuZXhwb3J0cy5nZXROZXR3b3JrU2V0dGluZ3MgPSBnZXROZXR3b3JrU2V0dGluZ3M7XG52YXIgTWV0aG9kO1xuKGZ1bmN0aW9uIChNZXRob2QpIHtcbiAgICBNZXRob2RbXCJHRVRcIl0gPSBcIkdFVFwiO1xuICAgIE1ldGhvZFtcIlBVVFwiXSA9IFwiUFVUXCI7XG4gICAgTWV0aG9kW1wiUE9TVFwiXSA9IFwiUE9TVFwiO1xuICAgIE1ldGhvZFtcIkRFTEVURVwiXSA9IFwiREVMRVRFXCI7XG59KShNZXRob2QgPSBleHBvcnRzLk1ldGhvZCB8fCAoZXhwb3J0cy5NZXRob2QgPSB7fSkpO1xuYXN5bmMgZnVuY3Rpb24gcmVxdWVzdCh0YXJnZXQsIGJvZHksIHsgY29uZmlndXJhdGlvbiwgaGVhZGVycywganNvblJlcXVlc3QsIGpzb25SZXNwb25zZSwgbWV0aG9kID0gTWV0aG9kLkdFVCB9KSB7XG4gICAgY29uc3QgcmVhbFJlcXVlc3QgPSBhc3luYyAoKSA9PiBhd2FpdCByZXF1ZXN0SW1wbCh0YXJnZXQsIGJvZHksIHsgY29uZmlndXJhdGlvbiwgaGVhZGVycywganNvblJlcXVlc3QsIGpzb25SZXNwb25zZSwgbWV0aG9kIH0pO1xuICAgIGNvbnN0IGV4ZWN1dG9yID0gYXdhaXQgY29uZmlndXJhdGlvbi5yZWR1Y2VIb29rKGhvb2tzID0+IHtcbiAgICAgICAgcmV0dXJuIGhvb2tzLndyYXBOZXR3b3JrUmVxdWVzdDtcbiAgICB9LCByZWFsUmVxdWVzdCwgeyB0YXJnZXQsIGJvZHksIGNvbmZpZ3VyYXRpb24sIGhlYWRlcnMsIGpzb25SZXF1ZXN0LCBqc29uUmVzcG9uc2UsIG1ldGhvZCB9KTtcbiAgICByZXR1cm4gYXdhaXQgZXhlY3V0b3IoKTtcbn1cbmV4cG9ydHMucmVxdWVzdCA9IHJlcXVlc3Q7XG5hc3luYyBmdW5jdGlvbiBnZXQodGFyZ2V0LCB7IGNvbmZpZ3VyYXRpb24sIGpzb25SZXNwb25zZSwgY3VzdG9tRXJyb3JNZXNzYWdlLCAuLi5yZXN0IH0pIHtcbiAgICBsZXQgZW50cnkgPSBtaXNjVXRpbHMuZ2V0RmFjdG9yeVdpdGhEZWZhdWx0KGNhY2hlLCB0YXJnZXQsICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHByZXR0eU5ldHdvcmtFcnJvcihyZXF1ZXN0KHRhcmdldCwgbnVsbCwgeyBjb25maWd1cmF0aW9uLCAuLi5yZXN0IH0pLCB7IGNvbmZpZ3VyYXRpb24sIGN1c3RvbUVycm9yTWVzc2FnZSB9KS50aGVuKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICAgIGNhY2hlLnNldCh0YXJnZXQsIHJlc3BvbnNlLmJvZHkpO1xuICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlLmJvZHk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICAgIGlmIChCdWZmZXIuaXNCdWZmZXIoZW50cnkpID09PSBmYWxzZSlcbiAgICAgICAgZW50cnkgPSBhd2FpdCBlbnRyeTtcbiAgICBpZiAoanNvblJlc3BvbnNlKSB7XG4gICAgICAgIHJldHVybiBKU09OLnBhcnNlKGVudHJ5LnRvU3RyaW5nKCkpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGVudHJ5O1xuICAgIH1cbn1cbmV4cG9ydHMuZ2V0ID0gZ2V0O1xuYXN5bmMgZnVuY3Rpb24gcHV0KHRhcmdldCwgYm9keSwgeyBjdXN0b21FcnJvck1lc3NhZ2UsIC4uLm9wdGlvbnMgfSkge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgcHJldHR5TmV0d29ya0Vycm9yKHJlcXVlc3QodGFyZ2V0LCBib2R5LCB7IC4uLm9wdGlvbnMsIG1ldGhvZDogTWV0aG9kLlBVVCB9KSwgeyBjdXN0b21FcnJvck1lc3NhZ2UsIGNvbmZpZ3VyYXRpb246IG9wdGlvbnMuY29uZmlndXJhdGlvbiB9KTtcbiAgICByZXR1cm4gcmVzcG9uc2UuYm9keTtcbn1cbmV4cG9ydHMucHV0ID0gcHV0O1xuYXN5bmMgZnVuY3Rpb24gcG9zdCh0YXJnZXQsIGJvZHksIHsgY3VzdG9tRXJyb3JNZXNzYWdlLCAuLi5vcHRpb25zIH0pIHtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHByZXR0eU5ldHdvcmtFcnJvcihyZXF1ZXN0KHRhcmdldCwgYm9keSwgeyAuLi5vcHRpb25zLCBtZXRob2Q6IE1ldGhvZC5QT1NUIH0pLCB7IGN1c3RvbUVycm9yTWVzc2FnZSwgY29uZmlndXJhdGlvbjogb3B0aW9ucy5jb25maWd1cmF0aW9uIH0pO1xuICAgIHJldHVybiByZXNwb25zZS5ib2R5O1xufVxuZXhwb3J0cy5wb3N0ID0gcG9zdDtcbmFzeW5jIGZ1bmN0aW9uIGRlbCh0YXJnZXQsIHsgY3VzdG9tRXJyb3JNZXNzYWdlLCAuLi5vcHRpb25zIH0pIHtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHByZXR0eU5ldHdvcmtFcnJvcihyZXF1ZXN0KHRhcmdldCwgbnVsbCwgeyAuLi5vcHRpb25zLCBtZXRob2Q6IE1ldGhvZC5ERUxFVEUgfSksIHsgY3VzdG9tRXJyb3JNZXNzYWdlLCBjb25maWd1cmF0aW9uOiBvcHRpb25zLmNvbmZpZ3VyYXRpb24gfSk7XG4gICAgcmV0dXJuIHJlc3BvbnNlLmJvZHk7XG59XG5leHBvcnRzLmRlbCA9IGRlbDtcbmFzeW5jIGZ1bmN0aW9uIHJlcXVlc3RJbXBsKHRhcmdldCwgYm9keSwgeyBjb25maWd1cmF0aW9uLCBoZWFkZXJzLCBqc29uUmVxdWVzdCwganNvblJlc3BvbnNlLCBtZXRob2QgPSBNZXRob2QuR0VUIH0pIHtcbiAgICBjb25zdCB1cmwgPSB0eXBlb2YgdGFyZ2V0ID09PSBgc3RyaW5nYCA/IG5ldyB1cmxfMS5VUkwodGFyZ2V0KSA6IHRhcmdldDtcbiAgICBjb25zdCBuZXR3b3JrQ29uZmlnID0gZ2V0TmV0d29ya1NldHRpbmdzKHVybCwgeyBjb25maWd1cmF0aW9uIH0pO1xuICAgIGlmIChuZXR3b3JrQ29uZmlnLmVuYWJsZU5ldHdvcmsgPT09IGZhbHNlKVxuICAgICAgICB0aHJvdyBuZXcgUmVwb3J0XzEuUmVwb3J0RXJyb3IoTWVzc2FnZU5hbWVfMS5NZXNzYWdlTmFtZS5ORVRXT1JLX0RJU0FCTEVELCBgUmVxdWVzdCB0byAnJHt1cmwuaHJlZn0nIGhhcyBiZWVuIGJsb2NrZWQgYmVjYXVzZSBvZiB5b3VyIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3NgKTtcbiAgICBpZiAodXJsLnByb3RvY29sID09PSBgaHR0cDpgICYmICFtaWNyb21hdGNoXzEuZGVmYXVsdC5pc01hdGNoKHVybC5ob3N0bmFtZSwgY29uZmlndXJhdGlvbi5nZXQoYHVuc2FmZUh0dHBXaGl0ZWxpc3RgKSkpXG4gICAgICAgIHRocm93IG5ldyBSZXBvcnRfMS5SZXBvcnRFcnJvcihNZXNzYWdlTmFtZV8xLk1lc3NhZ2VOYW1lLk5FVFdPUktfVU5TQUZFX0hUVFAsIGBVbnNhZmUgaHR0cCByZXF1ZXN0cyBtdXN0IGJlIGV4cGxpY2l0bHkgd2hpdGVsaXN0ZWQgaW4geW91ciBjb25maWd1cmF0aW9uICgke3VybC5ob3N0bmFtZX0pYCk7XG4gICAgY29uc3QgYWdlbnQgPSB7XG4gICAgICAgIGh0dHA6IG5ldHdvcmtDb25maWcuaHR0cFByb3h5XG4gICAgICAgICAgICA/IHR1bm5lbF8xLmRlZmF1bHQuaHR0cE92ZXJIdHRwKHBhcnNlUHJveHkobmV0d29ya0NvbmZpZy5odHRwUHJveHkpKVxuICAgICAgICAgICAgOiBnbG9iYWxIdHRwQWdlbnQsXG4gICAgICAgIGh0dHBzOiBuZXR3b3JrQ29uZmlnLmh0dHBzUHJveHlcbiAgICAgICAgICAgID8gdHVubmVsXzEuZGVmYXVsdC5odHRwc092ZXJIdHRwKHBhcnNlUHJveHkobmV0d29ya0NvbmZpZy5odHRwc1Byb3h5KSlcbiAgICAgICAgICAgIDogZ2xvYmFsSHR0cHNBZ2VudCxcbiAgICB9O1xuICAgIGNvbnN0IGdvdE9wdGlvbnMgPSB7IGFnZW50LCBoZWFkZXJzLCBtZXRob2QgfTtcbiAgICBnb3RPcHRpb25zLnJlc3BvbnNlVHlwZSA9IGpzb25SZXNwb25zZVxuICAgICAgICA/IGBqc29uYFxuICAgICAgICA6IGBidWZmZXJgO1xuICAgIGlmIChib2R5ICE9PSBudWxsKSB7XG4gICAgICAgIGlmIChCdWZmZXIuaXNCdWZmZXIoYm9keSkgfHwgKCFqc29uUmVxdWVzdCAmJiB0eXBlb2YgYm9keSA9PT0gYHN0cmluZ2ApKSB7XG4gICAgICAgICAgICBnb3RPcHRpb25zLmJvZHkgPSBib2R5O1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvcjogVGhlIGdvdCB0eXBlcyBvbmx5IGFsbG93IGFuIG9iamVjdCwgYnV0IGdvdCBjYW4gc3RyaW5naWZ5IGFueSB2YWxpZCBKU09OXG4gICAgICAgICAgICBnb3RPcHRpb25zLmpzb24gPSBib2R5O1xuICAgICAgICB9XG4gICAgfVxuICAgIGNvbnN0IHNvY2tldFRpbWVvdXQgPSBjb25maWd1cmF0aW9uLmdldChgaHR0cFRpbWVvdXRgKTtcbiAgICBjb25zdCByZXRyeSA9IGNvbmZpZ3VyYXRpb24uZ2V0KGBodHRwUmV0cnlgKTtcbiAgICBjb25zdCByZWplY3RVbmF1dGhvcml6ZWQgPSBjb25maWd1cmF0aW9uLmdldChgZW5hYmxlU3RyaWN0U3NsYCk7XG4gICAgY29uc3QgaHR0cHNDYUZpbGVQYXRoID0gbmV0d29ya0NvbmZpZy5odHRwc0NhRmlsZVBhdGg7XG4gICAgY29uc3QgaHR0cHNDZXJ0RmlsZVBhdGggPSBuZXR3b3JrQ29uZmlnLmh0dHBzQ2VydEZpbGVQYXRoO1xuICAgIGNvbnN0IGh0dHBzS2V5RmlsZVBhdGggPSBuZXR3b3JrQ29uZmlnLmh0dHBzS2V5RmlsZVBhdGg7XG4gICAgY29uc3QgeyBkZWZhdWx0OiBnb3QgfSA9IGF3YWl0IFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCkgPT4gdHNsaWJfMS5fX2ltcG9ydFN0YXIocmVxdWlyZShgZ290YCkpKTtcbiAgICBjb25zdCBjZXJ0aWZpY2F0ZUF1dGhvcml0eSA9IGh0dHBzQ2FGaWxlUGF0aFxuICAgICAgICA/IGF3YWl0IGdldENhY2hlZEZpbGUoaHR0cHNDYUZpbGVQYXRoKVxuICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCBjZXJ0aWZpY2F0ZSA9IGh0dHBzQ2VydEZpbGVQYXRoXG4gICAgICAgID8gYXdhaXQgZ2V0Q2FjaGVkRmlsZShodHRwc0NlcnRGaWxlUGF0aClcbiAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgY29uc3Qga2V5ID0gaHR0cHNLZXlGaWxlUGF0aFxuICAgICAgICA/IGF3YWl0IGdldENhY2hlZEZpbGUoaHR0cHNLZXlGaWxlUGF0aClcbiAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgY29uc3QgZ290Q2xpZW50ID0gZ290LmV4dGVuZCh7XG4gICAgICAgIHRpbWVvdXQ6IHtcbiAgICAgICAgICAgIHNvY2tldDogc29ja2V0VGltZW91dCxcbiAgICAgICAgfSxcbiAgICAgICAgcmV0cnksXG4gICAgICAgIGh0dHBzOiB7XG4gICAgICAgICAgICByZWplY3RVbmF1dGhvcml6ZWQsXG4gICAgICAgICAgICBjZXJ0aWZpY2F0ZUF1dGhvcml0eSxcbiAgICAgICAgICAgIGNlcnRpZmljYXRlLFxuICAgICAgICAgICAga2V5LFxuICAgICAgICB9LFxuICAgICAgICAuLi5nb3RPcHRpb25zLFxuICAgIH0pO1xuICAgIHJldHVybiBjb25maWd1cmF0aW9uLmdldExpbWl0KGBuZXR3b3JrQ29uY3VycmVuY3lgKSgoKSA9PiB7XG4gICAgICAgIHJldHVybiBnb3RDbGllbnQodXJsKTtcbiAgICB9KTtcbn1cbiIsICJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuZ2V0QXJjaGl0ZWN0dXJlU2V0ID0gZXhwb3J0cy5nZXRBcmNoaXRlY3R1cmVOYW1lID0gZXhwb3J0cy5nZXRBcmNoaXRlY3R1cmUgPSBleHBvcnRzLmJ1aWx0aW5Nb2R1bGVzID0gdm9pZCAwO1xuY29uc3QgdHNsaWJfMSA9IHJlcXVpcmUoXCJ0c2xpYlwiKTtcbmNvbnN0IG1vZHVsZV8xID0gdHNsaWJfMS5fX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIm1vZHVsZVwiKSk7XG5jb25zdCBtaXNjVXRpbHMgPSB0c2xpYl8xLl9faW1wb3J0U3RhcihyZXF1aXJlKFwiLi9taXNjVXRpbHNcIikpO1xuZnVuY3Rpb24gYnVpbHRpbk1vZHVsZXMoKSB7XG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgIHJldHVybiBuZXcgU2V0KG1vZHVsZV8xLmRlZmF1bHQuYnVpbHRpbk1vZHVsZXMgfHwgT2JqZWN0LmtleXMocHJvY2Vzcy5iaW5kaW5nKGBuYXRpdmVzYCkpKTtcbn1cbmV4cG9ydHMuYnVpbHRpbk1vZHVsZXMgPSBidWlsdGluTW9kdWxlcztcbmZ1bmN0aW9uIGdldExpYmMoKSB7XG4gICAgdmFyIF9hLCBfYiwgX2MsIF9kO1xuICAgIC8vIEl0IHNlZW1zIHRoYXQgTm9kZSByYW5kb21seSBjcmFzaGVzIHdpdGggbm8gb3V0cHV0IHVuZGVyIHNvbWUgY2lyY3Vtc3RhbmNlcyB3aGVuIHJ1bm5pbmcgYSBnZXRSZXBvcnQoKSBvbiBXaW5kb3dzLlxuICAgIC8vIFNpbmNlIFdpbmRvd3MgaGFzIG5vIGxpYmMgYW55d2F5LCBzaG9ydGN1dCB0aGlzIHBhdGguXG4gICAgaWYgKHByb2Nlc3MucGxhdGZvcm0gPT09IGB3aW4zMmApXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIGNvbnN0IHJlcG9ydCA9IChfYiA9IChfYSA9IHByb2Nlc3MucmVwb3J0KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZ2V0UmVwb3J0KCkpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IHt9O1xuICAgIGNvbnN0IHNoYXJlZE9iamVjdHMgPSAoX2MgPSByZXBvcnQuc2hhcmVkT2JqZWN0cykgIT09IG51bGwgJiYgX2MgIT09IHZvaWQgMCA/IF9jIDogW107XG4gICAgLy8gTWF0Y2hlcyB0aGUgZmlyc3QgZ3JvdXAgaWYgbGliYywgc2Vjb25kIGdyb3VwIGlmIG11c2xcbiAgICBjb25zdCBsaWJjUmVnRXhwID0gL1xcLyg/OihsZC1saW51eC18W14vXSstbGludXgtZ251XFwvKXwobGliYy5tdXNsLXxsZC1tdXNsLSkpLztcbiAgICByZXR1cm4gKF9kID0gbWlzY1V0aWxzLm1hcEFuZEZpbmQoc2hhcmVkT2JqZWN0cywgZW50cnkgPT4ge1xuICAgICAgICBjb25zdCBtYXRjaCA9IGVudHJ5Lm1hdGNoKGxpYmNSZWdFeHApO1xuICAgICAgICBpZiAoIW1hdGNoKVxuICAgICAgICAgICAgcmV0dXJuIG1pc2NVdGlscy5tYXBBbmRGaW5kLnNraXA7XG4gICAgICAgIGlmIChtYXRjaFsxXSlcbiAgICAgICAgICAgIHJldHVybiBgZ2xpYmNgO1xuICAgICAgICBpZiAobWF0Y2hbMl0pXG4gICAgICAgICAgICByZXR1cm4gYG11c2xgO1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEFzc2VydGlvbiBmYWlsZWQ6IEV4cGVjdGVkIHRoZSBsaWJjIHZhcmlhbnQgdG8gaGF2ZSBiZWVuIGRldGVjdGVkYCk7XG4gICAgfSkpICE9PSBudWxsICYmIF9kICE9PSB2b2lkIDAgPyBfZCA6IG51bGw7XG59XG5sZXQgYXJjaGl0ZWN0dXJlO1xubGV0IGFyY2hpdGVjdHVyZVNldDtcbmZ1bmN0aW9uIGdldEFyY2hpdGVjdHVyZSgpIHtcbiAgICByZXR1cm4gYXJjaGl0ZWN0dXJlID0gYXJjaGl0ZWN0dXJlICE9PSBudWxsICYmIGFyY2hpdGVjdHVyZSAhPT0gdm9pZCAwID8gYXJjaGl0ZWN0dXJlIDoge1xuICAgICAgICBvczogcHJvY2Vzcy5wbGF0Zm9ybSxcbiAgICAgICAgY3B1OiBwcm9jZXNzLmFyY2gsXG4gICAgICAgIGxpYmM6IGdldExpYmMoKSxcbiAgICB9O1xufVxuZXhwb3J0cy5nZXRBcmNoaXRlY3R1cmUgPSBnZXRBcmNoaXRlY3R1cmU7XG5mdW5jdGlvbiBnZXRBcmNoaXRlY3R1cmVOYW1lKGFyY2hpdGVjdHVyZSA9IGdldEFyY2hpdGVjdHVyZSgpKSB7XG4gICAgaWYgKGFyY2hpdGVjdHVyZS5saWJjKSB7XG4gICAgICAgIHJldHVybiBgJHthcmNoaXRlY3R1cmUub3N9LSR7YXJjaGl0ZWN0dXJlLmNwdX0tJHthcmNoaXRlY3R1cmUubGliY31gO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGAke2FyY2hpdGVjdHVyZS5vc30tJHthcmNoaXRlY3R1cmUuY3B1fWA7XG4gICAgfVxufVxuZXhwb3J0cy5nZXRBcmNoaXRlY3R1cmVOYW1lID0gZ2V0QXJjaGl0ZWN0dXJlTmFtZTtcbmZ1bmN0aW9uIGdldEFyY2hpdGVjdHVyZVNldCgpIHtcbiAgICBjb25zdCBhcmNoaXRlY3R1cmUgPSBnZXRBcmNoaXRlY3R1cmUoKTtcbiAgICByZXR1cm4gYXJjaGl0ZWN0dXJlU2V0ID0gYXJjaGl0ZWN0dXJlU2V0ICE9PSBudWxsICYmIGFyY2hpdGVjdHVyZVNldCAhPT0gdm9pZCAwID8gYXJjaGl0ZWN0dXJlU2V0IDoge1xuICAgICAgICBvczogW2FyY2hpdGVjdHVyZS5vc10sXG4gICAgICAgIGNwdTogW2FyY2hpdGVjdHVyZS5jcHVdLFxuICAgICAgICBsaWJjOiBhcmNoaXRlY3R1cmUubGliYyA/IFthcmNoaXRlY3R1cmUubGliY10gOiBbXSxcbiAgICB9O1xufVxuZXhwb3J0cy5nZXRBcmNoaXRlY3R1cmVTZXQgPSBnZXRBcmNoaXRlY3R1cmVTZXQ7XG4iLCAiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX2EsIF9iO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5Db25maWd1cmF0aW9uID0gZXhwb3J0cy5Qcm9qZWN0TG9va3VwID0gZXhwb3J0cy5jb3JlRGVmaW5pdGlvbnMgPSBleHBvcnRzLkZvcm1hdFR5cGUgPSBleHBvcnRzLlNldHRpbmdzVHlwZSA9IGV4cG9ydHMuU0VDUkVUID0gZXhwb3J0cy5ERUZBVUxUX0xPQ0tfRklMRU5BTUUgPSBleHBvcnRzLkRFRkFVTFRfUkNfRklMRU5BTUUgPSBleHBvcnRzLkVOVklST05NRU5UX1BSRUZJWCA9IGV4cG9ydHMuVEFHX1JFR0VYUCA9IHZvaWQgMDtcbmNvbnN0IHRzbGliXzEgPSByZXF1aXJlKFwidHNsaWJcIik7XG5jb25zdCBmc2xpYl8xID0gcmVxdWlyZShcIkB5YXJucGtnL2ZzbGliXCIpO1xuY29uc3QgbGliemlwXzEgPSByZXF1aXJlKFwiQHlhcm5wa2cvbGliemlwXCIpO1xuY29uc3QgcGFyc2Vyc18xID0gcmVxdWlyZShcIkB5YXJucGtnL3BhcnNlcnNcIik7XG5jb25zdCBjYW1lbGNhc2VfMSA9IHRzbGliXzEuX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJjYW1lbGNhc2VcIikpO1xuY29uc3QgY2lfaW5mb18xID0gcmVxdWlyZShcImNpLWluZm9cIik7XG5jb25zdCBjbGlwYW5pb25fMSA9IHJlcXVpcmUoXCJjbGlwYW5pb25cIik7XG5jb25zdCBwX2xpbWl0XzEgPSB0c2xpYl8xLl9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwicC1saW1pdFwiKSk7XG5jb25zdCBzdHJlYW1fMSA9IHJlcXVpcmUoXCJzdHJlYW1cIik7XG5jb25zdCBDb3JlUGx1Z2luXzEgPSByZXF1aXJlKFwiLi9Db3JlUGx1Z2luXCIpO1xuY29uc3QgTWFuaWZlc3RfMSA9IHJlcXVpcmUoXCIuL01hbmlmZXN0XCIpO1xuY29uc3QgTXVsdGlGZXRjaGVyXzEgPSByZXF1aXJlKFwiLi9NdWx0aUZldGNoZXJcIik7XG5jb25zdCBNdWx0aVJlc29sdmVyXzEgPSByZXF1aXJlKFwiLi9NdWx0aVJlc29sdmVyXCIpO1xuY29uc3QgVmlydHVhbEZldGNoZXJfMSA9IHJlcXVpcmUoXCIuL1ZpcnR1YWxGZXRjaGVyXCIpO1xuY29uc3QgVmlydHVhbFJlc29sdmVyXzEgPSByZXF1aXJlKFwiLi9WaXJ0dWFsUmVzb2x2ZXJcIik7XG5jb25zdCBXb3Jrc3BhY2VGZXRjaGVyXzEgPSByZXF1aXJlKFwiLi9Xb3Jrc3BhY2VGZXRjaGVyXCIpO1xuY29uc3QgV29ya3NwYWNlUmVzb2x2ZXJfMSA9IHJlcXVpcmUoXCIuL1dvcmtzcGFjZVJlc29sdmVyXCIpO1xuY29uc3QgZm9sZGVyVXRpbHMgPSB0c2xpYl8xLl9faW1wb3J0U3RhcihyZXF1aXJlKFwiLi9mb2xkZXJVdGlsc1wiKSk7XG5jb25zdCBmb3JtYXRVdGlscyA9IHRzbGliXzEuX19pbXBvcnRTdGFyKHJlcXVpcmUoXCIuL2Zvcm1hdFV0aWxzXCIpKTtcbmNvbnN0IGhhc2hVdGlscyA9IHRzbGliXzEuX19pbXBvcnRTdGFyKHJlcXVpcmUoXCIuL2hhc2hVdGlsc1wiKSk7XG5jb25zdCBodHRwVXRpbHMgPSB0c2xpYl8xLl9faW1wb3J0U3RhcihyZXF1aXJlKFwiLi9odHRwVXRpbHNcIikpO1xuY29uc3QgbWlzY1V0aWxzID0gdHNsaWJfMS5fX2ltcG9ydFN0YXIocmVxdWlyZShcIi4vbWlzY1V0aWxzXCIpKTtcbmNvbnN0IG5vZGVVdGlscyA9IHRzbGliXzEuX19pbXBvcnRTdGFyKHJlcXVpcmUoXCIuL25vZGVVdGlsc1wiKSk7XG5jb25zdCBzZW12ZXJVdGlscyA9IHRzbGliXzEuX19pbXBvcnRTdGFyKHJlcXVpcmUoXCIuL3NlbXZlclV0aWxzXCIpKTtcbmNvbnN0IHN0cnVjdFV0aWxzID0gdHNsaWJfMS5fX2ltcG9ydFN0YXIocmVxdWlyZShcIi4vc3RydWN0VXRpbHNcIikpO1xuY29uc3QgdHlwZXNfMSA9IHJlcXVpcmUoXCIuL3R5cGVzXCIpO1xuY29uc3QgaXNQdWJsaWNSZXBvc2l0b3J5ID0gY2lfaW5mb18xLkdJVEhVQl9BQ1RJT05TICYmIHByb2Nlc3MuZW52LkdJVEhVQl9FVkVOVF9QQVRIXG4gICAgPyAhKChfYiA9IChfYSA9IGZzbGliXzEueGZzLnJlYWRKc29uU3luYyhmc2xpYl8xLm5wYXRoLnRvUG9ydGFibGVQYXRoKHByb2Nlc3MuZW52LkdJVEhVQl9FVkVOVF9QQVRIKSkucmVwb3NpdG9yeSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnByaXZhdGUpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IHRydWUpXG4gICAgOiBmYWxzZTtcbmNvbnN0IElHTk9SRURfRU5WX1ZBUklBQkxFUyA9IG5ldyBTZXQoW1xuICAgIC8vIFwiYmluRm9sZGVyXCIgaXMgdGhlIG1hZ2ljIGxvY2F0aW9uIHdoZXJlIHRoZSBwYXJlbnQgcHJvY2VzcyBzdG9yZWQgdGhlXG4gICAgLy8gY3VycmVudCBiaW5hcmllczsgbm90IGFuIGFjdHVhbCBjb25maWd1cmF0aW9uIHNldHRpbmdzXG4gICAgYGJpbkZvbGRlcmAsXG4gICAgLy8gXCJ2ZXJzaW9uXCIgaXMgc2V0IGJ5IERvY2tlcjpcbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vbm9kZWpzL2RvY2tlci1ub2RlL2Jsb2IvNWE2YTVlOTE5OTkzNThjNWIwNGZkZGQ2YzIyYTlhNGViMGJmM2ZiZi8xMC9hbHBpbmUvRG9ja2VyZmlsZSNMNTFcbiAgICBgdmVyc2lvbmAsXG4gICAgLy8gXCJmbGFnc1wiIGlzIHNldCBieSBOZXRsaWZ5OyB0aGV5IHVzZSBpdCB0byBzcGVjaWZ5IHRoZSBmbGFncyB0byBzZW5kIHRvIHRoZVxuICAgIC8vIENMSSB3aGVuIHJ1bm5pbmcgdGhlIGF1dG9tYXRpYyBgeWFybiBpbnN0YWxsYFxuICAgIGBmbGFnc2AsXG4gICAgLy8gXCJncGdcIiBhbmQgXCJwcm9maWxlXCIgYXJlIHVzZWQgYnkgdGhlIGluc3RhbGwuc2ggc2NyaXB0OlxuICAgIC8vIGh0dHBzOi8vY2xhc3NpYy55YXJucGtnLmNvbS9pbnN0YWxsLnNoXG4gICAgYHByb2ZpbGVgLFxuICAgIGBncGdgLFxuICAgIC8vIFwiaWdub3JlTm9kZVwiIGlzIHVzZWQgdG8gZGlzYWJsZSB0aGUgTm9kZSB2ZXJzaW9uIGNoZWNrXG4gICAgYGlnbm9yZU5vZGVgLFxuICAgIC8vIFwid3JhcE91dHB1dFwiIHdhcyBhIHZhcmlhYmxlIHVzZWQgdG8gaW5kaWNhdGUgbmVzdGVkIFwieWFybiBydW5cIiBwcm9jZXNzZXNcbiAgICAvLyBiYWNrIGluIFlhcm4gMS5cbiAgICBgd3JhcE91dHB1dGAsXG4gICAgLy8gXCJZQVJOX0hPTUVcIiBhbmQgXCJZQVJOX0NPTkZfRElSXCIgbWF5IGJlIHByZXNlbnQgYXMgcGFydCBvZiB0aGUgdW5yZWxhdGVkIFwiQXBhY2hlIEhhZG9vcCBZQVJOXCIgc29mdHdhcmUgcHJvamVjdC5cbiAgICAvLyBodHRwczovL2hhZG9vcC5hcGFjaGUub3JnL2RvY3MvcjAuMjMuMTEvaGFkb29wLXByb2plY3QtZGlzdC9oYWRvb3AtY29tbW9uL1NpbmdsZUNsdXN0ZXIuaHRtbFxuICAgIGBob21lYCxcbiAgICBgY29uZkRpcmAsXG5dKTtcbmV4cG9ydHMuVEFHX1JFR0VYUCA9IC9eKD8hdilbYS16MC05Ll8tXSskL2k7XG5leHBvcnRzLkVOVklST05NRU5UX1BSRUZJWCA9IGB5YXJuX2A7XG5leHBvcnRzLkRFRkFVTFRfUkNfRklMRU5BTUUgPSBgLnlhcm5yYy55bWxgO1xuZXhwb3J0cy5ERUZBVUxUX0xPQ0tfRklMRU5BTUUgPSBgeWFybi5sb2NrYDtcbmV4cG9ydHMuU0VDUkVUID0gYCoqKioqKioqYDtcbnZhciBTZXR0aW5nc1R5cGU7XG4oZnVuY3Rpb24gKFNldHRpbmdzVHlwZSkge1xuICAgIFNldHRpbmdzVHlwZVtcIkFOWVwiXSA9IFwiQU5ZXCI7XG4gICAgU2V0dGluZ3NUeXBlW1wiQk9PTEVBTlwiXSA9IFwiQk9PTEVBTlwiO1xuICAgIFNldHRpbmdzVHlwZVtcIkFCU09MVVRFX1BBVEhcIl0gPSBcIkFCU09MVVRFX1BBVEhcIjtcbiAgICBTZXR0aW5nc1R5cGVbXCJMT0NBVE9SXCJdID0gXCJMT0NBVE9SXCI7XG4gICAgU2V0dGluZ3NUeXBlW1wiTE9DQVRPUl9MT09TRVwiXSA9IFwiTE9DQVRPUl9MT09TRVwiO1xuICAgIFNldHRpbmdzVHlwZVtcIk5VTUJFUlwiXSA9IFwiTlVNQkVSXCI7XG4gICAgU2V0dGluZ3NUeXBlW1wiU1RSSU5HXCJdID0gXCJTVFJJTkdcIjtcbiAgICBTZXR0aW5nc1R5cGVbXCJTRUNSRVRcIl0gPSBcIlNFQ1JFVFwiO1xuICAgIFNldHRpbmdzVHlwZVtcIlNIQVBFXCJdID0gXCJTSEFQRVwiO1xuICAgIFNldHRpbmdzVHlwZVtcIk1BUFwiXSA9IFwiTUFQXCI7XG59KShTZXR0aW5nc1R5cGUgPSBleHBvcnRzLlNldHRpbmdzVHlwZSB8fCAoZXhwb3J0cy5TZXR0aW5nc1R5cGUgPSB7fSkpO1xuLyoqXG4gKiBAZGVwcmVjYXRlZCBVc2Uge0BsaW5rIGZvcm1hdFV0aWxzLlR5cGV9XG4gKi9cbmV4cG9ydHMuRm9ybWF0VHlwZSA9IGZvcm1hdFV0aWxzLlR5cGU7XG4vLyBHZW5lcmFsIHJ1bGVzOlxuLy9cbi8vIC0gZmlsZW5hbWVzIHRoYXQgZG9uJ3QgYWNjZXB0IGFjdHVhbCBwYXRocyBtdXN0IGVuZCB3aXRoIHRoZSBcIkZpbGVuYW1lXCIgc3VmZml4XG4vLyAgIHByZWZlciB0byB1c2UgYWJzb2x1dGUgcGF0aHMgaW5zdGVhZCwgc2luY2UgdGhleSBhcmUgYXV0b21hdGljYWxseSByZXNvbHZlZFxuLy8gICBleDogbG9ja2ZpbGVGaWxlbmFtZVxuLy9cbi8vIC0gZm9sZGVycyBtdXN0IGVuZCB3aXRoIHRoZSBcIkZvbGRlclwiIHN1ZmZpeFxuLy8gICBleDogY2FjaGVGb2xkZXIsIHBucFZpcnR1YWxGb2xkZXJcbi8vXG4vLyAtIGFjdHVhbCBwYXRocyB0byBhIGZpbGUgbXVzdCBlbmQgd2l0aCB0aGUgXCJQYXRoXCIgc3VmZml4XG4vLyAgIGV4OiBwbnBQYXRoXG4vL1xuLy8gLSBvcHRpb25zIHRoYXQgdHdlYWtzIHRoZSBzdHJpY3RuZXNzIG11c3QgYmVnaW4gd2l0aCB0aGUgXCJhbGxvd1wiIHByZWZpeFxuLy8gICBleDogYWxsb3dJbnZhbGlkQ2hlY2tzdW1zXG4vL1xuLy8gLSBvcHRpb25zIHRoYXQgZW5hYmxlIGEgZmVhdHVyZSBtdXN0IGJlZ2luIHdpdGggdGhlIFwiZW5hYmxlXCIgcHJlZml4XG4vLyAgIGV4OiBlbmFibGVFbW9qaXMsIGVuYWJsZUNvbG9yc1xuZXhwb3J0cy5jb3JlRGVmaW5pdGlvbnMgPSB7XG4gICAgLy8gTm90IGltcGxlbWVudGVkIGZvciBub3csIGJ1dCBzaW5jZSBpdCdzIHBhcnQgb2YgYWxsIFlhcm4gaW5zdGFsbHMgd2Ugd2FudCB0byBkZWNsYXJlIGl0IGluIG9yZGVyIHRvIGltcHJvdmUgZHJvcC1pbiBjb21wYXRpYmlsaXR5XG4gICAgbGFzdFVwZGF0ZUNoZWNrOiB7XG4gICAgICAgIGRlc2NyaXB0aW9uOiBgTGFzdCB0aW1lc3RhbXAgd2UgY2hlY2tlZCB3aGV0aGVyIG5ldyBZYXJuIHZlcnNpb25zIHdlcmUgYXZhaWxhYmxlYCxcbiAgICAgICAgdHlwZTogU2V0dGluZ3NUeXBlLlNUUklORyxcbiAgICAgICAgZGVmYXVsdDogbnVsbCxcbiAgICB9LFxuICAgIC8vIFNldHRpbmdzIHJlbGF0ZWQgdG8gcHJveHlpbmcgYWxsIFlhcm4gY2FsbHMgdG8gYSBzcGVjaWZpYyBleGVjdXRhYmxlXG4gICAgeWFyblBhdGg6IHtcbiAgICAgICAgZGVzY3JpcHRpb246IGBQYXRoIHRvIHRoZSBsb2NhbCBleGVjdXRhYmxlIHRoYXQgbXVzdCBiZSB1c2VkIG92ZXIgdGhlIGdsb2JhbCBvbmVgLFxuICAgICAgICB0eXBlOiBTZXR0aW5nc1R5cGUuQUJTT0xVVEVfUEFUSCxcbiAgICAgICAgZGVmYXVsdDogbnVsbCxcbiAgICB9LFxuICAgIGlnbm9yZVBhdGg6IHtcbiAgICAgICAgZGVzY3JpcHRpb246IGBJZiB0cnVlLCB0aGUgbG9jYWwgZXhlY3V0YWJsZSB3aWxsIGJlIGlnbm9yZWQgd2hlbiB1c2luZyB0aGUgZ2xvYmFsIG9uZWAsXG4gICAgICAgIHR5cGU6IFNldHRpbmdzVHlwZS5CT09MRUFOLFxuICAgICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICB9LFxuICAgIGlnbm9yZUN3ZDoge1xuICAgICAgICBkZXNjcmlwdGlvbjogYElmIHRydWUsIHRoZSBcXGAtLWN3ZFxcYCBmbGFnIHdpbGwgYmUgaWdub3JlZGAsXG4gICAgICAgIHR5cGU6IFNldHRpbmdzVHlwZS5CT09MRUFOLFxuICAgICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICB9LFxuICAgIC8vIFNldHRpbmdzIHJlbGF0ZWQgdG8gdGhlIHBhY2thZ2UgbWFuYWdlciBpbnRlcm5hbCBuYW1lc1xuICAgIGNhY2hlS2V5T3ZlcnJpZGU6IHtcbiAgICAgICAgZGVzY3JpcHRpb246IGBBIGdsb2JhbCBjYWNoZSBrZXkgb3ZlcnJpZGU7IHVzZWQgb25seSBmb3IgdGVzdCBwdXJwb3Nlc2AsXG4gICAgICAgIHR5cGU6IFNldHRpbmdzVHlwZS5TVFJJTkcsXG4gICAgICAgIGRlZmF1bHQ6IG51bGwsXG4gICAgfSxcbiAgICBnbG9iYWxGb2xkZXI6IHtcbiAgICAgICAgZGVzY3JpcHRpb246IGBGb2xkZXIgd2hlcmUgYWxsIHN5c3RlbS1nbG9iYWwgZmlsZXMgYXJlIHN0b3JlZGAsXG4gICAgICAgIHR5cGU6IFNldHRpbmdzVHlwZS5BQlNPTFVURV9QQVRILFxuICAgICAgICBkZWZhdWx0OiBmb2xkZXJVdGlscy5nZXREZWZhdWx0R2xvYmFsRm9sZGVyKCksXG4gICAgfSxcbiAgICBjYWNoZUZvbGRlcjoge1xuICAgICAgICBkZXNjcmlwdGlvbjogYEZvbGRlciB3aGVyZSB0aGUgY2FjaGUgZmlsZXMgbXVzdCBiZSB3cml0dGVuYCxcbiAgICAgICAgdHlwZTogU2V0dGluZ3NUeXBlLkFCU09MVVRFX1BBVEgsXG4gICAgICAgIGRlZmF1bHQ6IGAuLy55YXJuL2NhY2hlYCxcbiAgICB9LFxuICAgIGNvbXByZXNzaW9uTGV2ZWw6IHtcbiAgICAgICAgZGVzY3JpcHRpb246IGBaaXAgZmlsZXMgY29tcHJlc3Npb24gbGV2ZWwsIGZyb20gMCB0byA5IG9yIG1peGVkIChhIHZhcmlhbnQgb2YgOSwgd2hpY2ggc3RvcmVzIHNvbWUgZmlsZXMgdW5jb21wcmVzc2VkLCB3aGVuIGNvbXByZXNzaW9uIGRvZXNuJ3QgeWllbGQgZ29vZCByZXN1bHRzKWAsXG4gICAgICAgIHR5cGU6IFNldHRpbmdzVHlwZS5OVU1CRVIsXG4gICAgICAgIHZhbHVlczogW2BtaXhlZGAsIDAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDldLFxuICAgICAgICBkZWZhdWx0OiBsaWJ6aXBfMS5ERUZBVUxUX0NPTVBSRVNTSU9OX0xFVkVMLFxuICAgIH0sXG4gICAgdmlydHVhbEZvbGRlcjoge1xuICAgICAgICBkZXNjcmlwdGlvbjogYEZvbGRlciB3aGVyZSB0aGUgdmlydHVhbCBwYWNrYWdlcyAoY2YgZG9jKSB3aWxsIGJlIG1hcHBlZCBvbiB0aGUgZGlzayAobXVzdCBiZSBuYW1lZCBfX3ZpcnR1YWxfXylgLFxuICAgICAgICB0eXBlOiBTZXR0aW5nc1R5cGUuQUJTT0xVVEVfUEFUSCxcbiAgICAgICAgZGVmYXVsdDogYC4vLnlhcm4vX192aXJ0dWFsX19gLFxuICAgIH0sXG4gICAgbG9ja2ZpbGVGaWxlbmFtZToge1xuICAgICAgICBkZXNjcmlwdGlvbjogYE5hbWUgb2YgdGhlIGZpbGVzIHdoZXJlIHRoZSBZYXJuIGRlcGVuZGVuY3kgdHJlZSBlbnRyaWVzIG11c3QgYmUgc3RvcmVkYCxcbiAgICAgICAgdHlwZTogU2V0dGluZ3NUeXBlLlNUUklORyxcbiAgICAgICAgZGVmYXVsdDogZXhwb3J0cy5ERUZBVUxUX0xPQ0tfRklMRU5BTUUsXG4gICAgfSxcbiAgICBpbnN0YWxsU3RhdGVQYXRoOiB7XG4gICAgICAgIGRlc2NyaXB0aW9uOiBgUGF0aCBvZiB0aGUgZmlsZSB3aGVyZSB0aGUgaW5zdGFsbCBzdGF0ZSB3aWxsIGJlIHBlcnNpc3RlZGAsXG4gICAgICAgIHR5cGU6IFNldHRpbmdzVHlwZS5BQlNPTFVURV9QQVRILFxuICAgICAgICBkZWZhdWx0OiBgLi8ueWFybi9pbnN0YWxsLXN0YXRlLmd6YCxcbiAgICB9LFxuICAgIGltbXV0YWJsZVBhdHRlcm5zOiB7XG4gICAgICAgIGRlc2NyaXB0aW9uOiBgQXJyYXkgb2YgZ2xvYiBwYXR0ZXJuczsgZmlsZXMgbWF0Y2hpbmcgdGhlbSB3b24ndCBiZSBhbGxvd2VkIHRvIGNoYW5nZSBkdXJpbmcgaW1tdXRhYmxlIGluc3RhbGxzYCxcbiAgICAgICAgdHlwZTogU2V0dGluZ3NUeXBlLlNUUklORyxcbiAgICAgICAgZGVmYXVsdDogW10sXG4gICAgICAgIGlzQXJyYXk6IHRydWUsXG4gICAgfSxcbiAgICByY0ZpbGVuYW1lOiB7XG4gICAgICAgIGRlc2NyaXB0aW9uOiBgTmFtZSBvZiB0aGUgZmlsZXMgd2hlcmUgdGhlIGNvbmZpZ3VyYXRpb24gY2FuIGJlIGZvdW5kYCxcbiAgICAgICAgdHlwZTogU2V0dGluZ3NUeXBlLlNUUklORyxcbiAgICAgICAgZGVmYXVsdDogZ2V0UmNGaWxlbmFtZSgpLFxuICAgIH0sXG4gICAgZW5hYmxlR2xvYmFsQ2FjaGU6IHtcbiAgICAgICAgZGVzY3JpcHRpb246IGBJZiB0cnVlLCB0aGUgc3lzdGVtLXdpZGUgY2FjaGUgZm9sZGVyIHdpbGwgYmUgdXNlZCByZWdhcmRsZXNzIG9mIFxcYGNhY2hlLWZvbGRlclxcYGAsXG4gICAgICAgIHR5cGU6IFNldHRpbmdzVHlwZS5CT09MRUFOLFxuICAgICAgICBkZWZhdWx0OiB0cnVlLFxuICAgIH0sXG4gICAgLy8gU2V0dGluZ3MgcmVsYXRlZCB0byB0aGUgb3V0cHV0IHN0eWxlXG4gICAgZW5hYmxlQ29sb3JzOiB7XG4gICAgICAgIGRlc2NyaXB0aW9uOiBgSWYgdHJ1ZSwgdGhlIENMSSBpcyBhbGxvd2VkIHRvIHVzZSBjb2xvcnMgaW4gaXRzIG91dHB1dGAsXG4gICAgICAgIHR5cGU6IFNldHRpbmdzVHlwZS5CT09MRUFOLFxuICAgICAgICBkZWZhdWx0OiBmb3JtYXRVdGlscy5zdXBwb3J0c0NvbG9yLFxuICAgICAgICBkZWZhdWx0VGV4dDogYDxkeW5hbWljPmAsXG4gICAgfSxcbiAgICBlbmFibGVIeXBlcmxpbmtzOiB7XG4gICAgICAgIGRlc2NyaXB0aW9uOiBgSWYgdHJ1ZSwgdGhlIENMSSBpcyBhbGxvd2VkIHRvIHVzZSBoeXBlcmxpbmtzIGluIGl0cyBvdXRwdXRgLFxuICAgICAgICB0eXBlOiBTZXR0aW5nc1R5cGUuQk9PTEVBTixcbiAgICAgICAgZGVmYXVsdDogZm9ybWF0VXRpbHMuc3VwcG9ydHNIeXBlcmxpbmtzLFxuICAgICAgICBkZWZhdWx0VGV4dDogYDxkeW5hbWljPmAsXG4gICAgfSxcbiAgICBlbmFibGVJbmxpbmVCdWlsZHM6IHtcbiAgICAgICAgZGVzY3JpcHRpb246IGBJZiB0cnVlLCB0aGUgQ0xJIHdpbGwgcHJpbnQgdGhlIGJ1aWxkIG91dHB1dCBvbiB0aGUgY29tbWFuZCBsaW5lYCxcbiAgICAgICAgdHlwZTogU2V0dGluZ3NUeXBlLkJPT0xFQU4sXG4gICAgICAgIGRlZmF1bHQ6IGNpX2luZm9fMS5pc0NJLFxuICAgICAgICBkZWZhdWx0VGV4dDogYDxkeW5hbWljPmAsXG4gICAgfSxcbiAgICBlbmFibGVNZXNzYWdlTmFtZXM6IHtcbiAgICAgICAgZGVzY3JpcHRpb246IGBJZiB0cnVlLCB0aGUgQ0xJIHdpbGwgcHJlZml4IG1vc3QgbWVzc2FnZXMgd2l0aCBjb2RlcyBzdWl0YWJsZSBmb3Igc2VhcmNoIGVuZ2luZXNgLFxuICAgICAgICB0eXBlOiBTZXR0aW5nc1R5cGUuQk9PTEVBTixcbiAgICAgICAgZGVmYXVsdDogdHJ1ZSxcbiAgICB9LFxuICAgIGVuYWJsZVByb2dyZXNzQmFyczoge1xuICAgICAgICBkZXNjcmlwdGlvbjogYElmIHRydWUsIHRoZSBDTEkgaXMgYWxsb3dlZCB0byBzaG93IGEgcHJvZ3Jlc3MgYmFyIGZvciBsb25nLXJ1bm5pbmcgZXZlbnRzYCxcbiAgICAgICAgdHlwZTogU2V0dGluZ3NUeXBlLkJPT0xFQU4sXG4gICAgICAgIGRlZmF1bHQ6ICFjaV9pbmZvXzEuaXNDSSxcbiAgICAgICAgZGVmYXVsdFRleHQ6IGA8ZHluYW1pYz5gLFxuICAgIH0sXG4gICAgZW5hYmxlVGltZXJzOiB7XG4gICAgICAgIGRlc2NyaXB0aW9uOiBgSWYgdHJ1ZSwgdGhlIENMSSBpcyBhbGxvd2VkIHRvIHByaW50IHRoZSB0aW1lIHNwZW50IGV4ZWN1dGluZyBjb21tYW5kc2AsXG4gICAgICAgIHR5cGU6IFNldHRpbmdzVHlwZS5CT09MRUFOLFxuICAgICAgICBkZWZhdWx0OiB0cnVlLFxuICAgIH0sXG4gICAgcHJlZmVyQWdncmVnYXRlQ2FjaGVJbmZvOiB7XG4gICAgICAgIGRlc2NyaXB0aW9uOiBgSWYgdHJ1ZSwgdGhlIENMSSB3aWxsIG9ubHkgcHJpbnQgYSBvbmUtbGluZSByZXBvcnQgb2YgYW55IGNhY2hlIGNoYW5nZXNgLFxuICAgICAgICB0eXBlOiBTZXR0aW5nc1R5cGUuQk9PTEVBTixcbiAgICAgICAgZGVmYXVsdDogY2lfaW5mb18xLmlzQ0ksXG4gICAgfSxcbiAgICBwcmVmZXJJbnRlcmFjdGl2ZToge1xuICAgICAgICBkZXNjcmlwdGlvbjogYElmIHRydWUsIHRoZSBDTEkgd2lsbCBhdXRvbWF0aWNhbGx5IHVzZSB0aGUgaW50ZXJhY3RpdmUgbW9kZSB3aGVuIGNhbGxlZCBmcm9tIGEgVFRZYCxcbiAgICAgICAgdHlwZTogU2V0dGluZ3NUeXBlLkJPT0xFQU4sXG4gICAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgIH0sXG4gICAgcHJlZmVyVHJ1bmNhdGVkTGluZXM6IHtcbiAgICAgICAgZGVzY3JpcHRpb246IGBJZiB0cnVlLCB0aGUgQ0xJIHdpbGwgdHJ1bmNhdGUgbGluZXMgdGhhdCB3b3VsZCBnbyBiZXlvbmQgdGhlIHNpemUgb2YgdGhlIHRlcm1pbmFsYCxcbiAgICAgICAgdHlwZTogU2V0dGluZ3NUeXBlLkJPT0xFQU4sXG4gICAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgIH0sXG4gICAgcHJvZ3Jlc3NCYXJTdHlsZToge1xuICAgICAgICBkZXNjcmlwdGlvbjogYFdoaWNoIHN0eWxlIG9mIHByb2dyZXNzIGJhciBzaG91bGQgYmUgdXNlZCAob25seSB3aGVuIHByb2dyZXNzIGJhcnMgYXJlIGVuYWJsZWQpYCxcbiAgICAgICAgdHlwZTogU2V0dGluZ3NUeXBlLlNUUklORyxcbiAgICAgICAgZGVmYXVsdDogdW5kZWZpbmVkLFxuICAgICAgICBkZWZhdWx0VGV4dDogYDxkeW5hbWljPmAsXG4gICAgfSxcbiAgICAvLyBTZXR0aW5ncyByZWxhdGVkIHRvIGhvdyBwYWNrYWdlcyBhcmUgaW50ZXJwcmV0ZWQgYnkgZGVmYXVsdFxuICAgIGRlZmF1bHRMYW5ndWFnZU5hbWU6IHtcbiAgICAgICAgZGVzY3JpcHRpb246IGBEZWZhdWx0IGxhbmd1YWdlIG1vZGUgdGhhdCBzaG91bGQgYmUgdXNlZCB3aGVuIGEgcGFja2FnZSBkb2Vzbid0IG9mZmVyIGFueSBpbnNpZ2h0YCxcbiAgICAgICAgdHlwZTogU2V0dGluZ3NUeXBlLlNUUklORyxcbiAgICAgICAgZGVmYXVsdDogYG5vZGVgLFxuICAgIH0sXG4gICAgZGVmYXVsdFByb3RvY29sOiB7XG4gICAgICAgIGRlc2NyaXB0aW9uOiBgRGVmYXVsdCByZXNvbHV0aW9uIHByb3RvY29sIHVzZWQgd2hlbiByZXNvbHZpbmcgcHVyZSBzZW12ZXIgYW5kIHRhZyByYW5nZXNgLFxuICAgICAgICB0eXBlOiBTZXR0aW5nc1R5cGUuU1RSSU5HLFxuICAgICAgICBkZWZhdWx0OiBgbnBtOmAsXG4gICAgfSxcbiAgICBlbmFibGVUcmFuc3BhcmVudFdvcmtzcGFjZXM6IHtcbiAgICAgICAgZGVzY3JpcHRpb246IGBJZiBmYWxzZSwgWWFybiB3b24ndCBhdXRvbWF0aWNhbGx5IHJlc29sdmUgd29ya3NwYWNlIGRlcGVuZGVuY2llcyB1bmxlc3MgdGhleSB1c2UgdGhlIFxcYHdvcmtzcGFjZTpcXGAgcHJvdG9jb2xgLFxuICAgICAgICB0eXBlOiBTZXR0aW5nc1R5cGUuQk9PTEVBTixcbiAgICAgICAgZGVmYXVsdDogdHJ1ZSxcbiAgICB9LFxuICAgIHN1cHBvcnRlZEFyY2hpdGVjdHVyZXM6IHtcbiAgICAgICAgZGVzY3JpcHRpb246IGBBcmNoaXRlY3R1cmVzIHRoYXQgWWFybiB3aWxsIGZldGNoIGFuZCBpbmplY3QgaW50byB0aGUgcmVzb2x2ZXJgLFxuICAgICAgICB0eXBlOiBTZXR0aW5nc1R5cGUuU0hBUEUsXG4gICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgIG9zOiB7XG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGBBcnJheSBvZiBzdXBwb3J0ZWQgcHJvY2Vzcy5wbGF0Zm9ybSBzdHJpbmdzLCBvciBudWxsIHRvIHRhcmdldCB0aGVtIGFsbGAsXG4gICAgICAgICAgICAgICAgdHlwZTogU2V0dGluZ3NUeXBlLlNUUklORyxcbiAgICAgICAgICAgICAgICBpc0FycmF5OiB0cnVlLFxuICAgICAgICAgICAgICAgIGlzTnVsbGFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgZGVmYXVsdDogW2BjdXJyZW50YF0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY3B1OiB7XG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGBBcnJheSBvZiBzdXBwb3J0ZWQgcHJvY2Vzcy5hcmNoIHN0cmluZ3MsIG9yIG51bGwgdG8gdGFyZ2V0IHRoZW0gYWxsYCxcbiAgICAgICAgICAgICAgICB0eXBlOiBTZXR0aW5nc1R5cGUuU1RSSU5HLFxuICAgICAgICAgICAgICAgIGlzQXJyYXk6IHRydWUsXG4gICAgICAgICAgICAgICAgaXNOdWxsYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBkZWZhdWx0OiBbYGN1cnJlbnRgXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsaWJjOiB7XG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGBBcnJheSBvZiBzdXBwb3J0ZWQgbGliYyBsaWJyYXJpZXMsIG9yIG51bGwgdG8gdGFyZ2V0IHRoZW0gYWxsYCxcbiAgICAgICAgICAgICAgICB0eXBlOiBTZXR0aW5nc1R5cGUuU1RSSU5HLFxuICAgICAgICAgICAgICAgIGlzQXJyYXk6IHRydWUsXG4gICAgICAgICAgICAgICAgaXNOdWxsYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBkZWZhdWx0OiBbYGN1cnJlbnRgXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICAvLyBTZXR0aW5ncyByZWxhdGVkIHRvIG5ldHdvcmsgYWNjZXNzXG4gICAgZW5hYmxlTWlycm9yOiB7XG4gICAgICAgIGRlc2NyaXB0aW9uOiBgSWYgdHJ1ZSwgdGhlIGRvd25sb2FkZWQgcGFja2FnZXMgd2lsbCBiZSByZXRyaWV2ZWQgYW5kIHN0b3JlZCBpbiBib3RoIHRoZSBsb2NhbCBhbmQgZ2xvYmFsIGZvbGRlcnNgLFxuICAgICAgICB0eXBlOiBTZXR0aW5nc1R5cGUuQk9PTEVBTixcbiAgICAgICAgZGVmYXVsdDogdHJ1ZSxcbiAgICB9LFxuICAgIGVuYWJsZU5ldHdvcms6IHtcbiAgICAgICAgZGVzY3JpcHRpb246IGBJZiBmYWxzZSwgdGhlIHBhY2thZ2UgbWFuYWdlciB3aWxsIHJlZnVzZSB0byB1c2UgdGhlIG5ldHdvcmsgaWYgcmVxdWlyZWQgdG9gLFxuICAgICAgICB0eXBlOiBTZXR0aW5nc1R5cGUuQk9PTEVBTixcbiAgICAgICAgZGVmYXVsdDogdHJ1ZSxcbiAgICB9LFxuICAgIGh0dHBQcm94eToge1xuICAgICAgICBkZXNjcmlwdGlvbjogYFVSTCBvZiB0aGUgaHR0cCBwcm94eSB0aGF0IG11c3QgYmUgdXNlZCBmb3Igb3V0Z29pbmcgaHR0cCByZXF1ZXN0c2AsXG4gICAgICAgIHR5cGU6IFNldHRpbmdzVHlwZS5TVFJJTkcsXG4gICAgICAgIGRlZmF1bHQ6IG51bGwsXG4gICAgfSxcbiAgICBodHRwc1Byb3h5OiB7XG4gICAgICAgIGRlc2NyaXB0aW9uOiBgVVJMIG9mIHRoZSBodHRwIHByb3h5IHRoYXQgbXVzdCBiZSB1c2VkIGZvciBvdXRnb2luZyBodHRwcyByZXF1ZXN0c2AsXG4gICAgICAgIHR5cGU6IFNldHRpbmdzVHlwZS5TVFJJTkcsXG4gICAgICAgIGRlZmF1bHQ6IG51bGwsXG4gICAgfSxcbiAgICB1bnNhZmVIdHRwV2hpdGVsaXN0OiB7XG4gICAgICAgIGRlc2NyaXB0aW9uOiBgTGlzdCBvZiB0aGUgaG9zdG5hbWVzIGZvciB3aGljaCBodHRwIHF1ZXJpZXMgYXJlIGFsbG93ZWQgKGdsb2IgcGF0dGVybnMgYXJlIHN1cHBvcnRlZClgLFxuICAgICAgICB0eXBlOiBTZXR0aW5nc1R5cGUuU1RSSU5HLFxuICAgICAgICBkZWZhdWx0OiBbXSxcbiAgICAgICAgaXNBcnJheTogdHJ1ZSxcbiAgICB9LFxuICAgIGh0dHBUaW1lb3V0OiB7XG4gICAgICAgIGRlc2NyaXB0aW9uOiBgVGltZW91dCBvZiBlYWNoIGh0dHAgcmVxdWVzdCBpbiBtaWxsaXNlY29uZHNgLFxuICAgICAgICB0eXBlOiBTZXR0aW5nc1R5cGUuTlVNQkVSLFxuICAgICAgICBkZWZhdWx0OiA2MDAwMCxcbiAgICB9LFxuICAgIGh0dHBSZXRyeToge1xuICAgICAgICBkZXNjcmlwdGlvbjogYFJldHJ5IHRpbWVzIG9uIGh0dHAgZmFpbHVyZWAsXG4gICAgICAgIHR5cGU6IFNldHRpbmdzVHlwZS5OVU1CRVIsXG4gICAgICAgIGRlZmF1bHQ6IDMsXG4gICAgfSxcbiAgICBuZXR3b3JrQ29uY3VycmVuY3k6IHtcbiAgICAgICAgZGVzY3JpcHRpb246IGBNYXhpbWFsIG51bWJlciBvZiBjb25jdXJyZW50IHJlcXVlc3RzYCxcbiAgICAgICAgdHlwZTogU2V0dGluZ3NUeXBlLk5VTUJFUixcbiAgICAgICAgZGVmYXVsdDogNTAsXG4gICAgfSxcbiAgICBuZXR3b3JrU2V0dGluZ3M6IHtcbiAgICAgICAgZGVzY3JpcHRpb246IGBOZXR3b3JrIHNldHRpbmdzIHBlciBob3N0bmFtZSAoZ2xvYiBwYXR0ZXJucyBhcmUgc3VwcG9ydGVkKWAsXG4gICAgICAgIHR5cGU6IFNldHRpbmdzVHlwZS5NQVAsXG4gICAgICAgIHZhbHVlRGVmaW5pdGlvbjoge1xuICAgICAgICAgICAgZGVzY3JpcHRpb246IGBgLFxuICAgICAgICAgICAgdHlwZTogU2V0dGluZ3NUeXBlLlNIQVBFLFxuICAgICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgICAgIGh0dHBzQ2FGaWxlUGF0aDoge1xuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogYFBhdGggdG8gZmlsZSBjb250YWluaW5nIG9uZSBvciBtdWx0aXBsZSBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgc2lnbmluZyBjZXJ0aWZpY2F0ZXNgLFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiBTZXR0aW5nc1R5cGUuQUJTT0xVVEVfUEFUSCxcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDogbnVsbCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGVuYWJsZU5ldHdvcms6IHtcbiAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGBJZiBmYWxzZSwgdGhlIHBhY2thZ2UgbWFuYWdlciB3aWxsIHJlZnVzZSB0byB1c2UgdGhlIG5ldHdvcmsgaWYgcmVxdWlyZWQgdG9gLFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiBTZXR0aW5nc1R5cGUuQk9PTEVBTixcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDogbnVsbCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGh0dHBQcm94eToge1xuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogYFVSTCBvZiB0aGUgaHR0cCBwcm94eSB0aGF0IG11c3QgYmUgdXNlZCBmb3Igb3V0Z29pbmcgaHR0cCByZXF1ZXN0c2AsXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IFNldHRpbmdzVHlwZS5TVFJJTkcsXG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6IG51bGwsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBodHRwc1Byb3h5OiB7XG4gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBgVVJMIG9mIHRoZSBodHRwIHByb3h5IHRoYXQgbXVzdCBiZSB1c2VkIGZvciBvdXRnb2luZyBodHRwcyByZXF1ZXN0c2AsXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IFNldHRpbmdzVHlwZS5TVFJJTkcsXG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6IG51bGwsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBodHRwc0tleUZpbGVQYXRoOiB7XG4gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBgUGF0aCB0byBmaWxlIGNvbnRhaW5pbmcgcHJpdmF0ZSBrZXkgaW4gUEVNIGZvcm1hdGAsXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IFNldHRpbmdzVHlwZS5BQlNPTFVURV9QQVRILFxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OiBudWxsLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgaHR0cHNDZXJ0RmlsZVBhdGg6IHtcbiAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGBQYXRoIHRvIGZpbGUgY29udGFpbmluZyBjZXJ0aWZpY2F0ZSBjaGFpbiBpbiBQRU0gZm9ybWF0YCxcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogU2V0dGluZ3NUeXBlLkFCU09MVVRFX1BBVEgsXG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6IG51bGwsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBodHRwc0NhRmlsZVBhdGg6IHtcbiAgICAgICAgZGVzY3JpcHRpb246IGBBIHBhdGggdG8gYSBmaWxlIGNvbnRhaW5pbmcgb25lIG9yIG11bHRpcGxlIENlcnRpZmljYXRlIEF1dGhvcml0eSBzaWduaW5nIGNlcnRpZmljYXRlc2AsXG4gICAgICAgIHR5cGU6IFNldHRpbmdzVHlwZS5BQlNPTFVURV9QQVRILFxuICAgICAgICBkZWZhdWx0OiBudWxsLFxuICAgIH0sXG4gICAgaHR0cHNLZXlGaWxlUGF0aDoge1xuICAgICAgICBkZXNjcmlwdGlvbjogYFBhdGggdG8gZmlsZSBjb250YWluaW5nIHByaXZhdGUga2V5IGluIFBFTSBmb3JtYXRgLFxuICAgICAgICB0eXBlOiBTZXR0aW5nc1R5cGUuQUJTT0xVVEVfUEFUSCxcbiAgICAgICAgZGVmYXVsdDogbnVsbCxcbiAgICB9LFxuICAgIGh0dHBzQ2VydEZpbGVQYXRoOiB7XG4gICAgICAgIGRlc2NyaXB0aW9uOiBgUGF0aCB0byBmaWxlIGNvbnRhaW5pbmcgY2VydGlmaWNhdGUgY2hhaW4gaW4gUEVNIGZvcm1hdGAsXG4gICAgICAgIHR5cGU6IFNldHRpbmdzVHlwZS5BQlNPTFVURV9QQVRILFxuICAgICAgICBkZWZhdWx0OiBudWxsLFxuICAgIH0sXG4gICAgZW5hYmxlU3RyaWN0U3NsOiB7XG4gICAgICAgIGRlc2NyaXB0aW9uOiBgSWYgZmFsc2UsIFNTTCBjZXJ0aWZpY2F0ZSBlcnJvcnMgd2lsbCBiZSBpZ25vcmVkYCxcbiAgICAgICAgdHlwZTogU2V0dGluZ3NUeXBlLkJPT0xFQU4sXG4gICAgICAgIGRlZmF1bHQ6IHRydWUsXG4gICAgfSxcbiAgICBsb2dGaWx0ZXJzOiB7XG4gICAgICAgIGRlc2NyaXB0aW9uOiBgT3ZlcnJpZGVzIGZvciBsb2cgbGV2ZWxzYCxcbiAgICAgICAgdHlwZTogU2V0dGluZ3NUeXBlLlNIQVBFLFxuICAgICAgICBpc0FycmF5OiB0cnVlLFxuICAgICAgICBjb25jYXRlbmF0ZVZhbHVlczogdHJ1ZSxcbiAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgY29kZToge1xuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBgQ29kZSBvZiB0aGUgbWVzc2FnZXMgY292ZXJlZCBieSB0aGlzIG92ZXJyaWRlYCxcbiAgICAgICAgICAgICAgICB0eXBlOiBTZXR0aW5nc1R5cGUuU1RSSU5HLFxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0OiB7XG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGBDb2RlIG9mIHRoZSB0ZXh0cyBjb3ZlcmVkIGJ5IHRoaXMgb3ZlcnJpZGVgLFxuICAgICAgICAgICAgICAgIHR5cGU6IFNldHRpbmdzVHlwZS5TVFJJTkcsXG4gICAgICAgICAgICAgICAgZGVmYXVsdDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHBhdHRlcm46IHtcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogYENvZGUgb2YgdGhlIHBhdHRlcm5zIGNvdmVyZWQgYnkgdGhpcyBvdmVycmlkZWAsXG4gICAgICAgICAgICAgICAgdHlwZTogU2V0dGluZ3NUeXBlLlNUUklORyxcbiAgICAgICAgICAgICAgICBkZWZhdWx0OiB1bmRlZmluZWQsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGV2ZWw6IHtcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogYExvZyBsZXZlbCBvdmVycmlkZSwgc2V0IHRvIG51bGwgdG8gcmVtb3ZlIG92ZXJyaWRlYCxcbiAgICAgICAgICAgICAgICB0eXBlOiBTZXR0aW5nc1R5cGUuU1RSSU5HLFxuICAgICAgICAgICAgICAgIHZhbHVlczogT2JqZWN0LnZhbHVlcyhmb3JtYXRVdGlscy5Mb2dMZXZlbCksXG4gICAgICAgICAgICAgICAgaXNOdWxsYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBkZWZhdWx0OiB1bmRlZmluZWQsXG4gICAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgLy8gU2V0dGluZ3MgcmVsYXRlZCB0byB0ZWxlbWV0cnlcbiAgICBlbmFibGVUZWxlbWV0cnk6IHtcbiAgICAgICAgZGVzY3JpcHRpb246IGBJZiB0cnVlLCB0ZWxlbWV0cnkgd2lsbCBiZSBwZXJpb2RpY2FsbHkgc2VudCwgZm9sbG93aW5nIHRoZSBydWxlcyBpbiBodHRwczovL3lhcm5wa2cuY29tL2FkdmFuY2VkL3RlbGVtZXRyeWAsXG4gICAgICAgIHR5cGU6IFNldHRpbmdzVHlwZS5CT09MRUFOLFxuICAgICAgICBkZWZhdWx0OiB0cnVlLFxuICAgIH0sXG4gICAgdGVsZW1ldHJ5SW50ZXJ2YWw6IHtcbiAgICAgICAgZGVzY3JpcHRpb246IGBNaW5pbWFsIGFtb3VudCBvZiB0aW1lIGJldHdlZW4gdHdvIHRlbGVtZXRyeSB1cGxvYWRzLCBpbiBkYXlzYCxcbiAgICAgICAgdHlwZTogU2V0dGluZ3NUeXBlLk5VTUJFUixcbiAgICAgICAgZGVmYXVsdDogNyxcbiAgICB9LFxuICAgIHRlbGVtZXRyeVVzZXJJZDoge1xuICAgICAgICBkZXNjcmlwdGlvbjogYElmIHlvdSBkZXNpcmUgdG8gdGVsbCB1cyB3aGljaCBwcm9qZWN0IHlvdSBhcmUsIHlvdSBjYW4gc2V0IHRoaXMgZmllbGQuIENvbXBsZXRlbHkgb3B0aW9uYWwgYW5kIG9wdC1pbi5gLFxuICAgICAgICB0eXBlOiBTZXR0aW5nc1R5cGUuU1RSSU5HLFxuICAgICAgICBkZWZhdWx0OiBudWxsLFxuICAgIH0sXG4gICAgLy8gU2V0dGluZ3MgcmVsYXRlZCB0byBzZWN1cml0eVxuICAgIGVuYWJsZUhhcmRlbmVkTW9kZToge1xuICAgICAgICBkZXNjcmlwdGlvbjogYElmIHRydWUsIGF1dG9tYXRpY2FsbHkgZW5hYmxlIC0tY2hlY2stcmVzb2x1dGlvbnMgLS1yZWZyZXNoLWxvY2tmaWxlIG9uIGluc3RhbGxzYCxcbiAgICAgICAgdHlwZTogU2V0dGluZ3NUeXBlLkJPT0xFQU4sXG4gICAgICAgIGRlZmF1bHQ6IGNpX2luZm9fMS5pc1BSICYmIGlzUHVibGljUmVwb3NpdG9yeSxcbiAgICAgICAgZGVmYXVsdFRleHQ6IGA8dHJ1ZSBvbiBwdWJsaWMgUFJzPmAsXG4gICAgfSxcbiAgICBlbmFibGVTY3JpcHRzOiB7XG4gICAgICAgIGRlc2NyaXB0aW9uOiBgSWYgdHJ1ZSwgcGFja2FnZXMgYXJlIGFsbG93ZWQgdG8gaGF2ZSBpbnN0YWxsIHNjcmlwdHMgYnkgZGVmYXVsdGAsXG4gICAgICAgIHR5cGU6IFNldHRpbmdzVHlwZS5CT09MRUFOLFxuICAgICAgICBkZWZhdWx0OiB0cnVlLFxuICAgIH0sXG4gICAgZW5hYmxlU3RyaWN0U2V0dGluZ3M6IHtcbiAgICAgICAgZGVzY3JpcHRpb246IGBJZiB0cnVlLCB1bmtub3duIHNldHRpbmdzIHdpbGwgY2F1c2UgWWFybiB0byBhYm9ydGAsXG4gICAgICAgIHR5cGU6IFNldHRpbmdzVHlwZS5CT09MRUFOLFxuICAgICAgICBkZWZhdWx0OiB0cnVlLFxuICAgIH0sXG4gICAgZW5hYmxlSW1tdXRhYmxlQ2FjaGU6IHtcbiAgICAgICAgZGVzY3JpcHRpb246IGBJZiB0cnVlLCB0aGUgY2FjaGUgaXMgcmVwdXRlZCBpbW11dGFibGUgYW5kIGFjdGlvbnMgdGhhdCB3b3VsZCBtb2RpZnkgaXQgd2lsbCB0aHJvd2AsXG4gICAgICAgIHR5cGU6IFNldHRpbmdzVHlwZS5CT09MRUFOLFxuICAgICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICB9LFxuICAgIGNoZWNrc3VtQmVoYXZpb3I6IHtcbiAgICAgICAgZGVzY3JpcHRpb246IGBFbnVtZXJhdGlvbiBkZWZpbmluZyB3aGF0IHRvIGRvIHdoZW4gYSBjaGVja3N1bSBkb2Vzbid0IG1hdGNoIGV4cGVjdGF0aW9uc2AsXG4gICAgICAgIHR5cGU6IFNldHRpbmdzVHlwZS5TVFJJTkcsXG4gICAgICAgIGRlZmF1bHQ6IGB0aHJvd2AsXG4gICAgfSxcbiAgICAvLyBQYWNrYWdlIHBhdGNoaW5nIC0gdG8gZml4IGluY29ycmVjdCBkZWZpbml0aW9uc1xuICAgIHBhY2thZ2VFeHRlbnNpb25zOiB7XG4gICAgICAgIGRlc2NyaXB0aW9uOiBgTWFwIG9mIHBhY2thZ2UgY29ycmVjdGlvbnMgdG8gYXBwbHkgb24gdGhlIGRlcGVuZGVuY3kgdHJlZWAsXG4gICAgICAgIHR5cGU6IFNldHRpbmdzVHlwZS5NQVAsXG4gICAgICAgIHZhbHVlRGVmaW5pdGlvbjoge1xuICAgICAgICAgICAgZGVzY3JpcHRpb246IGBUaGUgZXh0ZW5zaW9uIHRoYXQgd2lsbCBiZSBhcHBsaWVkIHRvIGFueSBwYWNrYWdlIHdob3NlIHZlcnNpb24gbWF0Y2hlcyB0aGUgc3BlY2lmaWVkIHJhbmdlYCxcbiAgICAgICAgICAgIHR5cGU6IFNldHRpbmdzVHlwZS5TSEFQRSxcbiAgICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgICBkZXBlbmRlbmNpZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGBUaGUgc2V0IG9mIGRlcGVuZGVuY2llcyB0aGF0IG11c3QgYmUgbWFkZSBhdmFpbGFibGUgdG8gdGhlIGN1cnJlbnQgcGFja2FnZSBpbiBvcmRlciBmb3IgaXQgdG8gd29yayBwcm9wZXJseWAsXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IFNldHRpbmdzVHlwZS5NQVAsXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlRGVmaW5pdGlvbjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGBBIHJhbmdlYCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFNldHRpbmdzVHlwZS5TVFJJTkcsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBwZWVyRGVwZW5kZW5jaWVzOiB7XG4gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBgSW5oZXJpdGVkIGRlcGVuZGVuY2llcyAtIHRoZSBjb25zdW1lciBvZiB0aGUgcGFja2FnZSB3aWxsIGJlIHRhc2tlZCB0byBwcm92aWRlIHRoZW1gLFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiBTZXR0aW5nc1R5cGUuTUFQLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZURlZmluaXRpb246IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBgQSBzZW12ZXIgcmFuZ2VgLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogU2V0dGluZ3NUeXBlLlNUUklORyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHBlZXJEZXBlbmRlbmNpZXNNZXRhOiB7XG4gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBgRXh0cmEgaW5mb3JtYXRpb24gcmVsYXRlZCB0byB0aGUgZGVwZW5kZW5jaWVzIGxpc3RlZCBpbiB0aGUgcGVlckRlcGVuZGVuY2llcyBmaWVsZGAsXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IFNldHRpbmdzVHlwZS5NQVAsXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlRGVmaW5pdGlvbjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGBUaGUgcGVlckRlcGVuZGVuY3kgbWV0YWAsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBTZXR0aW5nc1R5cGUuU0hBUEUsXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWw6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGBJZiB0cnVlLCB0aGUgc2VsZWN0ZWQgcGVlciBkZXBlbmRlbmN5IHdpbGwgYmUgbWFya2VkIGFzIG9wdGlvbmFsIGJ5IHRoZSBwYWNrYWdlIG1hbmFnZXIgYW5kIHRoZSBjb25zdW1lciBvbWl0dGluZyBpdCB3b24ndCBiZSByZXBvcnRlZCBhcyBhbiBlcnJvcmAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFNldHRpbmdzVHlwZS5CT09MRUFOLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICB9LFxufTtcbmZ1bmN0aW9uIHBhcnNlVmFsdWUoY29uZmlndXJhdGlvbiwgcGF0aCwgdmFsdWUsIGRlZmluaXRpb24sIGZvbGRlcikge1xuICAgIGlmIChkZWZpbml0aW9uLmlzQXJyYXkgfHwgKGRlZmluaXRpb24udHlwZSA9PT0gU2V0dGluZ3NUeXBlLkFOWSAmJiBBcnJheS5pc0FycmF5KHZhbHVlKSkpIHtcbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICAgICAgcmV0dXJuIFN0cmluZyh2YWx1ZSkuc3BsaXQoLywvKS5tYXAoc2VnbWVudCA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlU2luZ2xlVmFsdWUoY29uZmlndXJhdGlvbiwgcGF0aCwgc2VnbWVudCwgZGVmaW5pdGlvbiwgZm9sZGVyKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlLm1hcCgoc3ViLCBpKSA9PiBwYXJzZVNpbmdsZVZhbHVlKGNvbmZpZ3VyYXRpb24sIGAke3BhdGh9WyR7aX1dYCwgc3ViLCBkZWZpbml0aW9uLCBmb2xkZXIpKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE5vbi1hcnJheSBjb25maWd1cmF0aW9uIHNldHRpbmdzIFwiJHtwYXRofVwiIGNhbm5vdCBiZSBhbiBhcnJheWApO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHBhcnNlU2luZ2xlVmFsdWUoY29uZmlndXJhdGlvbiwgcGF0aCwgdmFsdWUsIGRlZmluaXRpb24sIGZvbGRlcik7XG4gICAgICAgIH1cbiAgICB9XG59XG5mdW5jdGlvbiBwYXJzZVNpbmdsZVZhbHVlKGNvbmZpZ3VyYXRpb24sIHBhdGgsIHZhbHVlLCBkZWZpbml0aW9uLCBmb2xkZXIpIHtcbiAgICB2YXIgX2E7XG4gICAgc3dpdGNoIChkZWZpbml0aW9uLnR5cGUpIHtcbiAgICAgICAgY2FzZSBTZXR0aW5nc1R5cGUuQU5ZOlxuICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICBjYXNlIFNldHRpbmdzVHlwZS5TSEFQRTpcbiAgICAgICAgICAgIHJldHVybiBwYXJzZVNoYXBlKGNvbmZpZ3VyYXRpb24sIHBhdGgsIHZhbHVlLCBkZWZpbml0aW9uLCBmb2xkZXIpO1xuICAgICAgICBjYXNlIFNldHRpbmdzVHlwZS5NQVA6XG4gICAgICAgICAgICByZXR1cm4gcGFyc2VNYXAoY29uZmlndXJhdGlvbiwgcGF0aCwgdmFsdWUsIGRlZmluaXRpb24sIGZvbGRlcik7XG4gICAgfVxuICAgIGlmICh2YWx1ZSA9PT0gbnVsbCAmJiAhZGVmaW5pdGlvbi5pc051bGxhYmxlICYmIGRlZmluaXRpb24uZGVmYXVsdCAhPT0gbnVsbClcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBOb24tbnVsbGFibGUgY29uZmlndXJhdGlvbiBzZXR0aW5ncyBcIiR7cGF0aH1cIiBjYW5ub3QgYmUgc2V0IHRvIG51bGxgKTtcbiAgICBpZiAoKF9hID0gZGVmaW5pdGlvbi52YWx1ZXMpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5pbmNsdWRlcyh2YWx1ZSkpXG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICBjb25zdCBpbnRlcnByZXRWYWx1ZSA9ICgpID0+IHtcbiAgICAgICAgaWYgKGRlZmluaXRpb24udHlwZSA9PT0gU2V0dGluZ3NUeXBlLkJPT0xFQU4gJiYgdHlwZW9mIHZhbHVlICE9PSBgc3RyaW5nYClcbiAgICAgICAgICAgIHJldHVybiBtaXNjVXRpbHMucGFyc2VCb29sZWFuKHZhbHVlKTtcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gYHN0cmluZ2ApXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkIHZhbHVlICgke3ZhbHVlfSkgdG8gYmUgYSBzdHJpbmdgKTtcbiAgICAgICAgY29uc3QgdmFsdWVXaXRoUmVwbGFjZWRWYXJpYWJsZXMgPSBtaXNjVXRpbHMucmVwbGFjZUVudlZhcmlhYmxlcyh2YWx1ZSwge1xuICAgICAgICAgICAgZW52OiBwcm9jZXNzLmVudixcbiAgICAgICAgfSk7XG4gICAgICAgIHN3aXRjaCAoZGVmaW5pdGlvbi50eXBlKSB7XG4gICAgICAgICAgICBjYXNlIFNldHRpbmdzVHlwZS5BQlNPTFVURV9QQVRIOlxuICAgICAgICAgICAgICAgIHJldHVybiBmc2xpYl8xLnBwYXRoLnJlc29sdmUoZm9sZGVyLCBmc2xpYl8xLm5wYXRoLnRvUG9ydGFibGVQYXRoKHZhbHVlV2l0aFJlcGxhY2VkVmFyaWFibGVzKSk7XG4gICAgICAgICAgICBjYXNlIFNldHRpbmdzVHlwZS5MT0NBVE9SX0xPT1NFOlxuICAgICAgICAgICAgICAgIHJldHVybiBzdHJ1Y3RVdGlscy5wYXJzZUxvY2F0b3IodmFsdWVXaXRoUmVwbGFjZWRWYXJpYWJsZXMsIGZhbHNlKTtcbiAgICAgICAgICAgIGNhc2UgU2V0dGluZ3NUeXBlLk5VTUJFUjpcbiAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VJbnQodmFsdWVXaXRoUmVwbGFjZWRWYXJpYWJsZXMpO1xuICAgICAgICAgICAgY2FzZSBTZXR0aW5nc1R5cGUuTE9DQVRPUjpcbiAgICAgICAgICAgICAgICByZXR1cm4gc3RydWN0VXRpbHMucGFyc2VMb2NhdG9yKHZhbHVlV2l0aFJlcGxhY2VkVmFyaWFibGVzKTtcbiAgICAgICAgICAgIGNhc2UgU2V0dGluZ3NUeXBlLkJPT0xFQU46XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1pc2NVdGlscy5wYXJzZUJvb2xlYW4odmFsdWVXaXRoUmVwbGFjZWRWYXJpYWJsZXMpO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWVXaXRoUmVwbGFjZWRWYXJpYWJsZXM7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIGNvbnN0IGludGVycHJldGVkID0gaW50ZXJwcmV0VmFsdWUoKTtcbiAgICBpZiAoZGVmaW5pdGlvbi52YWx1ZXMgJiYgIWRlZmluaXRpb24udmFsdWVzLmluY2x1ZGVzKGludGVycHJldGVkKSlcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHZhbHVlLCBleHBlY3RlZCBvbmUgb2YgJHtkZWZpbml0aW9uLnZhbHVlcy5qb2luKGAsIGApfWApO1xuICAgIHJldHVybiBpbnRlcnByZXRlZDtcbn1cbmZ1bmN0aW9uIHBhcnNlU2hhcGUoY29uZmlndXJhdGlvbiwgcGF0aCwgdmFsdWUsIGRlZmluaXRpb24sIGZvbGRlcikge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgIT09IGBvYmplY3RgIHx8IEFycmF5LmlzQXJyYXkodmFsdWUpKVxuICAgICAgICB0aHJvdyBuZXcgY2xpcGFuaW9uXzEuVXNhZ2VFcnJvcihgT2JqZWN0IGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MgXCIke3BhdGh9XCIgbXVzdCBiZSBhbiBvYmplY3RgKTtcbiAgICBjb25zdCByZXN1bHQgPSBnZXREZWZhdWx0VmFsdWUoY29uZmlndXJhdGlvbiwgZGVmaW5pdGlvbiwge1xuICAgICAgICBpZ25vcmVBcnJheXM6IHRydWUsXG4gICAgfSk7XG4gICAgaWYgKHZhbHVlID09PSBudWxsKVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIGZvciAoY29uc3QgW3Byb3BLZXksIHByb3BWYWx1ZV0gb2YgT2JqZWN0LmVudHJpZXModmFsdWUpKSB7XG4gICAgICAgIGNvbnN0IHN1YlBhdGggPSBgJHtwYXRofS4ke3Byb3BLZXl9YDtcbiAgICAgICAgY29uc3Qgc3ViRGVmaW5pdGlvbiA9IGRlZmluaXRpb24ucHJvcGVydGllc1twcm9wS2V5XTtcbiAgICAgICAgaWYgKCFzdWJEZWZpbml0aW9uKVxuICAgICAgICAgICAgdGhyb3cgbmV3IGNsaXBhbmlvbl8xLlVzYWdlRXJyb3IoYFVucmVjb2duaXplZCBjb25maWd1cmF0aW9uIHNldHRpbmdzIGZvdW5kOiAke3BhdGh9LiR7cHJvcEtleX0gLSBydW4gXCJ5YXJuIGNvbmZpZyAtdlwiIHRvIHNlZSB0aGUgbGlzdCBvZiBzZXR0aW5ncyBzdXBwb3J0ZWQgaW4gWWFybmApO1xuICAgICAgICByZXN1bHQuc2V0KHByb3BLZXksIHBhcnNlVmFsdWUoY29uZmlndXJhdGlvbiwgc3ViUGF0aCwgcHJvcFZhbHVlLCBkZWZpbml0aW9uLnByb3BlcnRpZXNbcHJvcEtleV0sIGZvbGRlcikpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xufVxuZnVuY3Rpb24gcGFyc2VNYXAoY29uZmlndXJhdGlvbiwgcGF0aCwgdmFsdWUsIGRlZmluaXRpb24sIGZvbGRlcikge1xuICAgIGNvbnN0IHJlc3VsdCA9IG5ldyBNYXAoKTtcbiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSBgb2JqZWN0YCB8fCBBcnJheS5pc0FycmF5KHZhbHVlKSlcbiAgICAgICAgdGhyb3cgbmV3IGNsaXBhbmlvbl8xLlVzYWdlRXJyb3IoYE1hcCBjb25maWd1cmF0aW9uIHNldHRpbmdzIFwiJHtwYXRofVwiIG11c3QgYmUgYW4gb2JqZWN0YCk7XG4gICAgaWYgKHZhbHVlID09PSBudWxsKVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIGZvciAoY29uc3QgW3Byb3BLZXksIHByb3BWYWx1ZV0gb2YgT2JqZWN0LmVudHJpZXModmFsdWUpKSB7XG4gICAgICAgIGNvbnN0IG5vcm1hbGl6ZWRLZXkgPSBkZWZpbml0aW9uLm5vcm1hbGl6ZUtleXMgPyBkZWZpbml0aW9uLm5vcm1hbGl6ZUtleXMocHJvcEtleSkgOiBwcm9wS2V5O1xuICAgICAgICBjb25zdCBzdWJQYXRoID0gYCR7cGF0aH1bJyR7bm9ybWFsaXplZEtleX0nXWA7XG4gICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3I6IFNldHRpbmdzRGVmaW5pdGlvbk5vRGVmYXVsdCBoYXMgLi4uIG5vIGRlZmF1bHQgLi4uIGJ1dFxuICAgICAgICAvLyB0aGF0J3MgZmluZSBiZWNhdXNlIHdlJ3JlIGd1YXJhbnRlZWQgaXQncyBub3QgdW5kZWZpbmVkLlxuICAgICAgICBjb25zdCB2YWx1ZURlZmluaXRpb24gPSBkZWZpbml0aW9uLnZhbHVlRGVmaW5pdGlvbjtcbiAgICAgICAgcmVzdWx0LnNldChub3JtYWxpemVkS2V5LCBwYXJzZVZhbHVlKGNvbmZpZ3VyYXRpb24sIHN1YlBhdGgsIHByb3BWYWx1ZSwgdmFsdWVEZWZpbml0aW9uLCBmb2xkZXIpKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cbmZ1bmN0aW9uIGdldERlZmF1bHRWYWx1ZShjb25maWd1cmF0aW9uLCBkZWZpbml0aW9uLCB7IGlnbm9yZUFycmF5cyA9IGZhbHNlIH0gPSB7fSkge1xuICAgIHN3aXRjaCAoZGVmaW5pdGlvbi50eXBlKSB7XG4gICAgICAgIGNhc2UgU2V0dGluZ3NUeXBlLlNIQVBFOlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlmIChkZWZpbml0aW9uLmlzQXJyYXkgJiYgIWlnbm9yZUFycmF5cylcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IG5ldyBNYXAoKTtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IFtwcm9wS2V5LCBwcm9wRGVmaW5pdGlvbl0gb2YgT2JqZWN0LmVudHJpZXMoZGVmaW5pdGlvbi5wcm9wZXJ0aWVzKSlcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnNldChwcm9wS2V5LCBnZXREZWZhdWx0VmFsdWUoY29uZmlndXJhdGlvbiwgcHJvcERlZmluaXRpb24pKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgU2V0dGluZ3NUeXBlLk1BUDpcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBpZiAoZGVmaW5pdGlvbi5pc0FycmF5ICYmICFpZ25vcmVBcnJheXMpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IE1hcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgU2V0dGluZ3NUeXBlLkFCU09MVVRFX1BBVEg6XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgaWYgKGRlZmluaXRpb24uZGVmYXVsdCA9PT0gbnVsbClcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgaWYgKGNvbmZpZ3VyYXRpb24ucHJvamVjdEN3ZCA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZnNsaWJfMS5wcGF0aC5pc0Fic29sdXRlKGRlZmluaXRpb24uZGVmYXVsdCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmc2xpYl8xLnBwYXRoLm5vcm1hbGl6ZShkZWZpbml0aW9uLmRlZmF1bHQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGRlZmluaXRpb24uaXNOdWxsYWJsZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBSZWFjaGVkIHdoZW4gYSByZWxhdGl2ZSBwYXRoIGlzIHRoZSBkZWZhdWx0IGJ1dCB0aGUgY3VycmVudFxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29udGV4dCBpcyBldmFsdWF0ZWQgb3V0c2lkZSBvZiBhIFlhcm4gcHJvamVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZGVmaW5pdGlvbi5kZWZhdWx0KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRlZmluaXRpb24uZGVmYXVsdC5tYXAoKGVudHJ5KSA9PiBmc2xpYl8xLnBwYXRoLnJlc29sdmUoY29uZmlndXJhdGlvbi5wcm9qZWN0Q3dkLCBlbnRyeSkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZzbGliXzEucHBhdGgucmVzb2x2ZShjb25maWd1cmF0aW9uLnByb2plY3RDd2QsIGRlZmluaXRpb24uZGVmYXVsdCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZGVmaW5pdGlvbi5kZWZhdWx0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgfVxufVxuZnVuY3Rpb24gdHJhbnNmb3JtQ29uZmlndXJhdGlvbihyYXdWYWx1ZSwgZGVmaW5pdGlvbiwgdHJhbnNmb3Jtcykge1xuICAgIGlmIChkZWZpbml0aW9uLnR5cGUgPT09IFNldHRpbmdzVHlwZS5TRUNSRVQgJiYgdHlwZW9mIHJhd1ZhbHVlID09PSBgc3RyaW5nYCAmJiB0cmFuc2Zvcm1zLmhpZGVTZWNyZXRzKVxuICAgICAgICByZXR1cm4gZXhwb3J0cy5TRUNSRVQ7XG4gICAgaWYgKGRlZmluaXRpb24udHlwZSA9PT0gU2V0dGluZ3NUeXBlLkFCU09MVVRFX1BBVEggJiYgdHlwZW9mIHJhd1ZhbHVlID09PSBgc3RyaW5nYCAmJiB0cmFuc2Zvcm1zLmdldE5hdGl2ZVBhdGhzKVxuICAgICAgICByZXR1cm4gZnNsaWJfMS5ucGF0aC5mcm9tUG9ydGFibGVQYXRoKHJhd1ZhbHVlKTtcbiAgICBpZiAoZGVmaW5pdGlvbi5pc0FycmF5ICYmIEFycmF5LmlzQXJyYXkocmF3VmFsdWUpKSB7XG4gICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gW107XG4gICAgICAgIGZvciAoY29uc3QgdmFsdWUgb2YgcmF3VmFsdWUpXG4gICAgICAgICAgICBuZXdWYWx1ZS5wdXNoKHRyYW5zZm9ybUNvbmZpZ3VyYXRpb24odmFsdWUsIGRlZmluaXRpb24sIHRyYW5zZm9ybXMpKTtcbiAgICAgICAgcmV0dXJuIG5ld1ZhbHVlO1xuICAgIH1cbiAgICBpZiAoZGVmaW5pdGlvbi50eXBlID09PSBTZXR0aW5nc1R5cGUuTUFQICYmIHJhd1ZhbHVlIGluc3RhbmNlb2YgTWFwKSB7XG4gICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gbmV3IE1hcCgpO1xuICAgICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiByYXdWYWx1ZS5lbnRyaWVzKCkpXG4gICAgICAgICAgICBuZXdWYWx1ZS5zZXQoa2V5LCB0cmFuc2Zvcm1Db25maWd1cmF0aW9uKHZhbHVlLCBkZWZpbml0aW9uLnZhbHVlRGVmaW5pdGlvbiwgdHJhbnNmb3JtcykpO1xuICAgICAgICByZXR1cm4gbmV3VmFsdWU7XG4gICAgfVxuICAgIGlmIChkZWZpbml0aW9uLnR5cGUgPT09IFNldHRpbmdzVHlwZS5TSEFQRSAmJiByYXdWYWx1ZSBpbnN0YW5jZW9mIE1hcCkge1xuICAgICAgICBjb25zdCBuZXdWYWx1ZSA9IG5ldyBNYXAoKTtcbiAgICAgICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgcmF3VmFsdWUuZW50cmllcygpKSB7XG4gICAgICAgICAgICBjb25zdCBwcm9wZXJ0eURlZmluaXRpb24gPSBkZWZpbml0aW9uLnByb3BlcnRpZXNba2V5XTtcbiAgICAgICAgICAgIG5ld1ZhbHVlLnNldChrZXksIHRyYW5zZm9ybUNvbmZpZ3VyYXRpb24odmFsdWUsIHByb3BlcnR5RGVmaW5pdGlvbiwgdHJhbnNmb3JtcykpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXdWYWx1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHJhd1ZhbHVlO1xufVxuZnVuY3Rpb24gZ2V0RW52aXJvbm1lbnRTZXR0aW5ncygpIHtcbiAgICBjb25zdCBlbnZpcm9ubWVudFNldHRpbmdzID0ge307XG4gICAgZm9yIChsZXQgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHByb2Nlc3MuZW52KSkge1xuICAgICAgICBrZXkgPSBrZXkudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgaWYgKCFrZXkuc3RhcnRzV2l0aChleHBvcnRzLkVOVklST05NRU5UX1BSRUZJWCkpXG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAga2V5ID0gKDAsIGNhbWVsY2FzZV8xLmRlZmF1bHQpKGtleS5zbGljZShleHBvcnRzLkVOVklST05NRU5UX1BSRUZJWC5sZW5ndGgpKTtcbiAgICAgICAgZW52aXJvbm1lbnRTZXR0aW5nc1trZXldID0gdmFsdWU7XG4gICAgfVxuICAgIHJldHVybiBlbnZpcm9ubWVudFNldHRpbmdzO1xufVxuZnVuY3Rpb24gZ2V0UmNGaWxlbmFtZSgpIHtcbiAgICBjb25zdCByY0tleSA9IGAke2V4cG9ydHMuRU5WSVJPTk1FTlRfUFJFRklYfXJjX2ZpbGVuYW1lYDtcbiAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhwcm9jZXNzLmVudikpXG4gICAgICAgIGlmIChrZXkudG9Mb3dlckNhc2UoKSA9PT0gcmNLZXkgJiYgdHlwZW9mIHZhbHVlID09PSBgc3RyaW5nYClcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICByZXR1cm4gZXhwb3J0cy5ERUZBVUxUX1JDX0ZJTEVOQU1FO1xufVxudmFyIFByb2plY3RMb29rdXA7XG4oZnVuY3Rpb24gKFByb2plY3RMb29rdXApIHtcbiAgICBQcm9qZWN0TG9va3VwW1Byb2plY3RMb29rdXBbXCJMT0NLRklMRVwiXSA9IDBdID0gXCJMT0NLRklMRVwiO1xuICAgIFByb2plY3RMb29rdXBbUHJvamVjdExvb2t1cFtcIk1BTklGRVNUXCJdID0gMV0gPSBcIk1BTklGRVNUXCI7XG4gICAgUHJvamVjdExvb2t1cFtQcm9qZWN0TG9va3VwW1wiTk9ORVwiXSA9IDJdID0gXCJOT05FXCI7XG59KShQcm9qZWN0TG9va3VwID0gZXhwb3J0cy5Qcm9qZWN0TG9va3VwIHx8IChleHBvcnRzLlByb2plY3RMb29rdXAgPSB7fSkpO1xuY2xhc3MgQ29uZmlndXJhdGlvbiB7XG4gICAgc3RhdGljIGNyZWF0ZShzdGFydGluZ0N3ZCwgcHJvamVjdEN3ZE9yUGx1Z2lucywgbWF5YmVQbHVnaW5zKSB7XG4gICAgICAgIGNvbnN0IGNvbmZpZ3VyYXRpb24gPSBuZXcgQ29uZmlndXJhdGlvbihzdGFydGluZ0N3ZCk7XG4gICAgICAgIGlmICh0eXBlb2YgcHJvamVjdEN3ZE9yUGx1Z2lucyAhPT0gYHVuZGVmaW5lZGAgJiYgIShwcm9qZWN0Q3dkT3JQbHVnaW5zIGluc3RhbmNlb2YgTWFwKSlcbiAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24ucHJvamVjdEN3ZCA9IHByb2plY3RDd2RPclBsdWdpbnM7XG4gICAgICAgIGNvbmZpZ3VyYXRpb24uaW1wb3J0U2V0dGluZ3MoZXhwb3J0cy5jb3JlRGVmaW5pdGlvbnMpO1xuICAgICAgICBjb25zdCBwbHVnaW5zID0gdHlwZW9mIG1heWJlUGx1Z2lucyAhPT0gYHVuZGVmaW5lZGBcbiAgICAgICAgICAgID8gbWF5YmVQbHVnaW5zXG4gICAgICAgICAgICA6IHByb2plY3RDd2RPclBsdWdpbnMgaW5zdGFuY2VvZiBNYXBcbiAgICAgICAgICAgICAgICA/IHByb2plY3RDd2RPclBsdWdpbnNcbiAgICAgICAgICAgICAgICA6IG5ldyBNYXAoKTtcbiAgICAgICAgZm9yIChjb25zdCBbbmFtZSwgcGx1Z2luXSBvZiBwbHVnaW5zKVxuICAgICAgICAgICAgY29uZmlndXJhdGlvbi5hY3RpdmF0ZVBsdWdpbihuYW1lLCBwbHVnaW4pO1xuICAgICAgICByZXR1cm4gY29uZmlndXJhdGlvbjtcbiAgICB9XG4gICAgLyoqXG4gICAgICogSW5zdGFudGlhdGUgYSBuZXcgY29uZmlndXJhdGlvbiBvYmplY3QgZXhwb3NpbmcgdGhlIGNvbmZpZ3VyYXRpb24gb2J0YWluZWRcbiAgICAgKiBmcm9tIHJlYWRpbmcgdGhlIHZhcmlvdXMgcmMgZmlsZXMgYW5kIHRoZSBlbnZpcm9ubWVudCBzZXR0aW5ncy5cbiAgICAgKlxuICAgICAqIFRoZSBgcGx1Z2luQ29uZmlndXJhdGlvbmAgcGFyYW1ldGVyIGlzIGV4cGVjdGVkIHRvIGluZGljYXRlOlxuICAgICAqXG4gICAgICogMS4gd2hpY2ggbW9kdWxlcyBzaG91bGQgYmUgbWFkZSBhdmFpbGFibGUgdG8gcGx1Z2lucyB3aGVuIHRoZXkgcmVxdWlyZSBhXG4gICAgICogICAgcGFja2FnZSAodGhpcyBpcyB0aGUgZHluYW1pYyBsaW5raW5nIHBhcnQgLSBmb3IgZXhhbXBsZSB3ZSB3YW50IGFsbCB0aGVcbiAgICAgKiAgICBwbHVnaW5zIHRvIHVzZSB0aGUgZXhhY3Qgc2FtZSB2ZXJzaW9uIG9mIEB5YXJucGtnL2NvcmUsIHdoaWNoIGFsc28gaXMgdGhlXG4gICAgICogICAgdmVyc2lvbiB1c2VkIGJ5IHRoZSBydW5uaW5nIFlhcm4gaW5zdGFuY2UpLlxuICAgICAqXG4gICAgICogMi4gd2hpY2ggb2YgdGhvc2UgbW9kdWxlcyBhcmUgYWN0dWFsbHkgcGx1Z2lucyB0aGF0IG5lZWQgdG8gYmUgaW5qZWN0ZWRcbiAgICAgKiAgICB3aXRoaW4gdGhlIGNvbmZpZ3VyYXRpb24uXG4gICAgICpcbiAgICAgKiBOb3RlIHRoYXQgc29tZSBleHRyYSBwbHVnaW5zIHdpbGwgYmUgYXV0b21hdGljYWxseSBhZGRlZCBiYXNlZCBvbiB0aGVcbiAgICAgKiBjb250ZW50IG9mIHRoZSByYyBmaWxlcyAtIHdpdGggdGhlIHJjIHBsdWdpbnMgdGFraW5nIHByZWNlZGVuY2Ugb3ZlclxuICAgICAqIHRoZSBvdGhlciBvbmVzLlxuICAgICAqXG4gICAgICogT25lIHBhcnRpY3VsYXJpdHk6IHRoZSBwbHVnaW4gaW5pdGlhbGl6YXRpb24gb3JkZXIgaXMgcXVpdGUgc3RyaWN0LCB3aXRoXG4gICAgICogcGx1Z2lucyBsaXN0ZWQgaW4gL2Zvby9iYXIvLnlhcm5yYy55bWwgdGFraW5nIHByZWNlZGVuY2Ugb3ZlciBwbHVnaW5zXG4gICAgICogbGlzdGVkIGluIC9mb28vLnlhcm5yYy55bWwgYW5kIC8ueWFybnJjLnltbC4gQWRkaXRpb25hbGx5LCB3aGlsZSBwbHVnaW5zXG4gICAgICogY2FuIGRlcGVuZCBvbiBvbmUgYW5vdGhlciwgdGhleSBjYW4gb25seSBkZXBlbmQgb24gcGx1Z2lucyB0aGF0IGhhdmUgYmVlblxuICAgICAqIGluc3RhbnRpYXRlZCBiZWZvcmUgdGhlbSAoc28gYSBwbHVnaW4gbGlzdGVkIGluIC9mb28vLnlhcm5yYy55bWwgY2FuXG4gICAgICogZGVwZW5kIG9uIGFub3RoZXIgb25lIGxpc3RlZCBvbiAvZm9vL2Jhci8ueWFybnJjLnltbCwgYnV0IG5vdCB0aGUgb3RoZXJcbiAgICAgKiB3YXkgYXJvdW5kKS5cbiAgICAgKi9cbiAgICBzdGF0aWMgYXN5bmMgZmluZChzdGFydGluZ0N3ZCwgcGx1Z2luQ29uZmlndXJhdGlvbiwgeyBsb29rdXAgPSBQcm9qZWN0TG9va3VwLkxPQ0tGSUxFLCBzdHJpY3QgPSB0cnVlLCB1c2VQYXRoID0gZmFsc2UsIHVzZVJjID0gdHJ1ZSB9ID0ge30pIHtcbiAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgY29uc3QgZW52aXJvbm1lbnRTZXR0aW5ncyA9IGdldEVudmlyb25tZW50U2V0dGluZ3MoKTtcbiAgICAgICAgZGVsZXRlIGVudmlyb25tZW50U2V0dGluZ3MucmNGaWxlbmFtZTtcbiAgICAgICAgY29uc3QgcmNGaWxlcyA9IGF3YWl0IENvbmZpZ3VyYXRpb24uZmluZFJjRmlsZXMoc3RhcnRpbmdDd2QpO1xuICAgICAgICBjb25zdCBob21lUmNGaWxlID0gYXdhaXQgQ29uZmlndXJhdGlvbi5maW5kSG9tZVJjRmlsZSgpO1xuICAgICAgICBpZiAoaG9tZVJjRmlsZSkge1xuICAgICAgICAgICAgY29uc3QgcmNGaWxlID0gcmNGaWxlcy5maW5kKHJjRmlsZSA9PiByY0ZpbGUucGF0aCA9PT0gaG9tZVJjRmlsZS5wYXRoKTtcbiAgICAgICAgICAgIC8vIFRoZSBob21lIGNvbmZpZ3VyYXRpb24gaXMgbmV2ZXIgc3RyaWN0IGJlY2F1c2UgaXQgaW1wcm92ZXMgc3VwcG9ydCBmb3JcbiAgICAgICAgICAgIC8vIG11bHRpcGxlIHByb2plY3RzIHVzaW5nIGRpZmZlcmVudCBZYXJuIHZlcnNpb25zIG9uIHRoZSBzYW1lIG1hY2hpbmVcbiAgICAgICAgICAgIGlmIChyY0ZpbGUpIHtcbiAgICAgICAgICAgICAgICByY0ZpbGUuc3RyaWN0ID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICByY0ZpbGVzLnB1c2goeyAuLi5ob21lUmNGaWxlLCBzdHJpY3Q6IGZhbHNlIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGFsbENvcmVGaWVsZEtleXMgPSBuZXcgU2V0KE9iamVjdC5rZXlzKGV4cG9ydHMuY29yZURlZmluaXRpb25zKSk7XG4gICAgICAgIGNvbnN0IHBpY2tQcmltYXJ5Q29yZUZpZWxkcyA9ICh7IGlnbm9yZUN3ZCwgeWFyblBhdGgsIGlnbm9yZVBhdGgsIGxvY2tmaWxlRmlsZW5hbWUgfSkgPT4gKHsgaWdub3JlQ3dkLCB5YXJuUGF0aCwgaWdub3JlUGF0aCwgbG9ja2ZpbGVGaWxlbmFtZSB9KTtcbiAgICAgICAgY29uc3QgcGlja1NlY29uZGFyeUNvcmVGaWVsZHMgPSAoeyBpZ25vcmVDd2QsIHlhcm5QYXRoLCBpZ25vcmVQYXRoLCBsb2NrZmlsZUZpbGVuYW1lLCAuLi5yZXN0IH0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHNlY29uZGFyeUNvcmVGaWVsZHMgPSB7fTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHJlc3QpKVxuICAgICAgICAgICAgICAgIGlmIChhbGxDb3JlRmllbGRLZXlzLmhhcyhrZXkpKVxuICAgICAgICAgICAgICAgICAgICBzZWNvbmRhcnlDb3JlRmllbGRzW2tleV0gPSB2YWx1ZTtcbiAgICAgICAgICAgIHJldHVybiBzZWNvbmRhcnlDb3JlRmllbGRzO1xuICAgICAgICB9O1xuICAgICAgICBjb25zdCBwaWNrUGx1Z2luRmllbGRzID0gKHsgaWdub3JlQ3dkLCB5YXJuUGF0aCwgaWdub3JlUGF0aCwgbG9ja2ZpbGVGaWxlbmFtZSwgLi4ucmVzdCB9KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBwbHVnaW5GaWVsZHMgPSB7fTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHJlc3QpKVxuICAgICAgICAgICAgICAgIGlmICghYWxsQ29yZUZpZWxkS2V5cy5oYXMoa2V5KSlcbiAgICAgICAgICAgICAgICAgICAgcGx1Z2luRmllbGRzW2tleV0gPSB2YWx1ZTtcbiAgICAgICAgICAgIHJldHVybiBwbHVnaW5GaWVsZHM7XG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IGNvbmZpZ3VyYXRpb24gPSBuZXcgQ29uZmlndXJhdGlvbihzdGFydGluZ0N3ZCk7XG4gICAgICAgIGNvbmZpZ3VyYXRpb24uaW1wb3J0U2V0dGluZ3MocGlja1ByaW1hcnlDb3JlRmllbGRzKGV4cG9ydHMuY29yZURlZmluaXRpb25zKSk7XG4gICAgICAgIGNvbmZpZ3VyYXRpb24udXNlV2l0aFNvdXJjZShgPGVudmlyb25tZW50PmAsIHBpY2tQcmltYXJ5Q29yZUZpZWxkcyhlbnZpcm9ubWVudFNldHRpbmdzKSwgc3RhcnRpbmdDd2QsIHsgc3RyaWN0OiBmYWxzZSB9KTtcbiAgICAgICAgZm9yIChjb25zdCB7IHBhdGgsIGN3ZCwgZGF0YSB9IG9mIHJjRmlsZXMpXG4gICAgICAgICAgICBjb25maWd1cmF0aW9uLnVzZVdpdGhTb3VyY2UocGF0aCwgcGlja1ByaW1hcnlDb3JlRmllbGRzKGRhdGEpLCBjd2QsIHsgc3RyaWN0OiBmYWxzZSB9KTtcbiAgICAgICAgaWYgKHVzZVBhdGgpIHtcbiAgICAgICAgICAgIGNvbnN0IHlhcm5QYXRoID0gY29uZmlndXJhdGlvbi5nZXQoYHlhcm5QYXRoYCk7XG4gICAgICAgICAgICBjb25zdCBpZ25vcmVQYXRoID0gY29uZmlndXJhdGlvbi5nZXQoYGlnbm9yZVBhdGhgKTtcbiAgICAgICAgICAgIGlmICh5YXJuUGF0aCAhPT0gbnVsbCAmJiAhaWdub3JlUGF0aCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBjb25maWd1cmF0aW9uO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIFdlIG5lZWQgdG8ga25vdyB0aGUgcHJvamVjdCByb290IGJlZm9yZSBiZWluZyBhYmxlIHRvIHRydWx5IGluc3RhbnRpYXRlXG4gICAgICAgIC8vIG91ciBjb25maWd1cmF0aW9uLCBhbmQgdG8ga25vdyB0aGF0IHdlIG5lZWQgdG8ga25vdyB0aGUgbG9ja2ZpbGUgbmFtZVxuICAgICAgICBjb25zdCBsb2NrZmlsZUZpbGVuYW1lID0gY29uZmlndXJhdGlvbi5nZXQoYGxvY2tmaWxlRmlsZW5hbWVgKTtcbiAgICAgICAgbGV0IHByb2plY3RDd2Q7XG4gICAgICAgIHN3aXRjaCAobG9va3VwKSB7XG4gICAgICAgICAgICBjYXNlIFByb2plY3RMb29rdXAuTE9DS0ZJTEU6XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBwcm9qZWN0Q3dkID0gYXdhaXQgQ29uZmlndXJhdGlvbi5maW5kUHJvamVjdEN3ZChzdGFydGluZ0N3ZCwgbG9ja2ZpbGVGaWxlbmFtZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBQcm9qZWN0TG9va3VwLk1BTklGRVNUOlxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcHJvamVjdEN3ZCA9IGF3YWl0IENvbmZpZ3VyYXRpb24uZmluZFByb2plY3RDd2Qoc3RhcnRpbmdDd2QsIG51bGwpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgUHJvamVjdExvb2t1cC5OT05FOlxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZzbGliXzEueGZzLmV4aXN0c1N5bmMoZnNsaWJfMS5wcGF0aC5qb2luKHN0YXJ0aW5nQ3dkLCBgcGFja2FnZS5qc29uYCkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0Q3dkID0gZnNsaWJfMS5wcGF0aC5yZXNvbHZlKHN0YXJ0aW5nQ3dkKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3RDd2QgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIC8vIEdyZWF0ISBXZSBub3cgaGF2ZSBlbm91Z2ggaW5mb3JtYXRpb24gdG8gcmVhbGx5IHN0YXJ0IHRvIHNldHVwIHRoZVxuICAgICAgICAvLyBjb3JlIGNvbmZpZ3VyYXRpb24gb2JqZWN0LlxuICAgICAgICBjb25maWd1cmF0aW9uLnN0YXJ0aW5nQ3dkID0gc3RhcnRpbmdDd2Q7XG4gICAgICAgIGNvbmZpZ3VyYXRpb24ucHJvamVjdEN3ZCA9IHByb2plY3RDd2Q7XG4gICAgICAgIC8vIGxvYWQgYWxsIGZpZWxkcyBvZiB0aGUgY29yZSBkZWZpbml0aW9uc1xuICAgICAgICBjb25maWd1cmF0aW9uLmltcG9ydFNldHRpbmdzKHBpY2tTZWNvbmRhcnlDb3JlRmllbGRzKGV4cG9ydHMuY29yZURlZmluaXRpb25zKSk7XG4gICAgICAgIGNvbmZpZ3VyYXRpb24udXNlV2l0aFNvdXJjZShgPGVudmlyb25tZW50PmAsIHBpY2tTZWNvbmRhcnlDb3JlRmllbGRzKGVudmlyb25tZW50U2V0dGluZ3MpLCBzdGFydGluZ0N3ZCwgeyBzdHJpY3QgfSk7XG4gICAgICAgIGZvciAoY29uc3QgeyBwYXRoLCBjd2QsIGRhdGEsIHN0cmljdDogaXNTdHJpY3QgfSBvZiByY0ZpbGVzKVxuICAgICAgICAgICAgY29uZmlndXJhdGlvbi51c2VXaXRoU291cmNlKHBhdGgsIHBpY2tTZWNvbmRhcnlDb3JlRmllbGRzKGRhdGEpLCBjd2QsIHsgc3RyaWN0OiBpc1N0cmljdCAhPT0gbnVsbCAmJiBpc1N0cmljdCAhPT0gdm9pZCAwID8gaXNTdHJpY3QgOiBzdHJpY3QgfSk7XG4gICAgICAgIC8vIE5vdyB0aGF0IHRoZSBjb25maWd1cmF0aW9uIG9iamVjdCBpcyBhbG1vc3QgcmVhZHksIHdlIG5lZWQgdG8gbG9hZCBhbGxcbiAgICAgICAgLy8gdGhlIGNvbmZpZ3VyZWQgcGx1Z2luc1xuICAgICAgICBjb25zdCBnZXREZWZhdWx0ID0gKG9iamVjdCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGBkZWZhdWx0YCBpbiBvYmplY3QgPyBvYmplY3QuZGVmYXVsdCA6IG9iamVjdDtcbiAgICAgICAgfTtcbiAgICAgICAgLy8gbG9hZCB0aGUgY29yZSBwbHVnaW5zXG4gICAgICAgIGNvbnN0IGNvcmVQbHVnaW5zID0gbmV3IE1hcChbXG4gICAgICAgICAgICBbYEBAY29yZWAsIENvcmVQbHVnaW5fMS5Db3JlUGx1Z2luXSxcbiAgICAgICAgXSk7XG4gICAgICAgIGlmIChwbHVnaW5Db25maWd1cmF0aW9uICE9PSBudWxsKVxuICAgICAgICAgICAgZm9yIChjb25zdCByZXF1ZXN0IG9mIHBsdWdpbkNvbmZpZ3VyYXRpb24ucGx1Z2lucy5rZXlzKCkpXG4gICAgICAgICAgICAgICAgY29yZVBsdWdpbnMuc2V0KHJlcXVlc3QsIGdldERlZmF1bHQocGx1Z2luQ29uZmlndXJhdGlvbi5tb2R1bGVzLmdldChyZXF1ZXN0KSkpO1xuICAgICAgICBmb3IgKGNvbnN0IFtuYW1lLCBjb3JlUGx1Z2luXSBvZiBjb3JlUGx1Z2lucylcbiAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24uYWN0aXZhdGVQbHVnaW4obmFtZSwgY29yZVBsdWdpbik7XG4gICAgICAgIC8vIGxvYWQgdGhpcmQtcGFydHkgcGx1Z2luc1xuICAgICAgICBjb25zdCB0aGlyZFBhcnR5UGx1Z2lucyA9IG5ldyBNYXAoW10pO1xuICAgICAgICBpZiAocGx1Z2luQ29uZmlndXJhdGlvbiAhPT0gbnVsbCkge1xuICAgICAgICAgICAgY29uc3QgcmVxdWlyZUVudHJpZXMgPSBuZXcgTWFwKCk7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHJlcXVlc3Qgb2Ygbm9kZVV0aWxzLmJ1aWx0aW5Nb2R1bGVzKCkpXG4gICAgICAgICAgICAgICAgcmVxdWlyZUVudHJpZXMuc2V0KHJlcXVlc3QsICgpID0+IG1pc2NVdGlscy5keW5hbWljUmVxdWlyZShyZXF1ZXN0KSk7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IFtyZXF1ZXN0LCBlbWJlZE1vZHVsZV0gb2YgcGx1Z2luQ29uZmlndXJhdGlvbi5tb2R1bGVzKVxuICAgICAgICAgICAgICAgIHJlcXVpcmVFbnRyaWVzLnNldChyZXF1ZXN0LCAoKSA9PiBlbWJlZE1vZHVsZSk7XG4gICAgICAgICAgICBjb25zdCBkeW5hbWljUGx1Z2lucyA9IG5ldyBTZXQoKTtcbiAgICAgICAgICAgIGNvbnN0IGltcG9ydFBsdWdpbiA9IGFzeW5jIChwbHVnaW5QYXRoLCBzb3VyY2UpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB7IGZhY3RvcnksIG5hbWUgfSA9IG1pc2NVdGlscy5keW5hbWljUmVxdWlyZShwbHVnaW5QYXRoKTtcbiAgICAgICAgICAgICAgICBpZiAoIWZhY3RvcnkpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAvLyBQcmV2ZW50IHBsdWdpbiByZWRlZmluaXRpb24gc28gdGhhdCB0aGUgb25lcyBkZWNsYXJlZCBkZWVwZXIgaW4gdGhlXG4gICAgICAgICAgICAgICAgLy8gZmlsZXN5c3RlbSBhbHdheXMgaGF2ZSBwcmVjZWRlbmNlIG92ZXIgdGhlIG9uZXMgYmVsb3cuXG4gICAgICAgICAgICAgICAgaWYgKGR5bmFtaWNQbHVnaW5zLmhhcyhuYW1lKSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIGNvbnN0IHBsdWdpblJlcXVpcmVFbnRyaWVzID0gbmV3IE1hcChyZXF1aXJlRW50cmllcyk7XG4gICAgICAgICAgICAgICAgY29uc3QgcGx1Z2luUmVxdWlyZSA9IChyZXF1ZXN0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwbHVnaW5SZXF1aXJlRW50cmllcy5oYXMocmVxdWVzdCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwbHVnaW5SZXF1aXJlRW50cmllcy5nZXQocmVxdWVzdCkoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBjbGlwYW5pb25fMS5Vc2FnZUVycm9yKGBUaGlzIHBsdWdpbiBjYW5ub3QgYWNjZXNzIHRoZSBwYWNrYWdlIHJlZmVyZW5jZWQgdmlhICR7cmVxdWVzdH0gd2hpY2ggaXMgbmVpdGhlciBhIGJ1aWx0aW4sIG5vciBhbiBleHBvc2VkIGVudHJ5YCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGNvbnN0IHBsdWdpbiA9IGF3YWl0IG1pc2NVdGlscy5wcmV0dGlmeUFzeW5jRXJyb3JzKGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdldERlZmF1bHQoYXdhaXQgZmFjdG9yeShwbHVnaW5SZXF1aXJlKSk7XG4gICAgICAgICAgICAgICAgfSwgbWVzc2FnZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBgJHttZXNzYWdlfSAod2hlbiBpbml0aWFsaXppbmcgJHtuYW1lfSwgZGVmaW5lZCBpbiAke3NvdXJjZX0pYDtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICByZXF1aXJlRW50cmllcy5zZXQobmFtZSwgKCkgPT4gcGx1Z2luKTtcbiAgICAgICAgICAgICAgICBkeW5hbWljUGx1Z2lucy5hZGQobmFtZSk7XG4gICAgICAgICAgICAgICAgdGhpcmRQYXJ0eVBsdWdpbnMuc2V0KG5hbWUsIHBsdWdpbik7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgaWYgKGVudmlyb25tZW50U2V0dGluZ3MucGx1Z2lucykge1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgdXNlclByb3ZpZGVkUGF0aCBvZiBlbnZpcm9ubWVudFNldHRpbmdzLnBsdWdpbnMuc3BsaXQoYDtgKSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwbHVnaW5QYXRoID0gZnNsaWJfMS5wcGF0aC5yZXNvbHZlKHN0YXJ0aW5nQ3dkLCBmc2xpYl8xLm5wYXRoLnRvUG9ydGFibGVQYXRoKHVzZXJQcm92aWRlZFBhdGgpKTtcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgaW1wb3J0UGx1Z2luKHBsdWdpblBhdGgsIGA8ZW52aXJvbm1lbnQ+YCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZm9yIChjb25zdCB7IHBhdGgsIGN3ZCwgZGF0YSB9IG9mIHJjRmlsZXMpIHtcbiAgICAgICAgICAgICAgICBpZiAoIXVzZVJjKVxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoZGF0YS5wbHVnaW5zKSlcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCB1c2VyUGx1Z2luRW50cnkgb2YgZGF0YS5wbHVnaW5zKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHVzZXJQcm92aWRlZFBhdGggPSB0eXBlb2YgdXNlclBsdWdpbkVudHJ5ICE9PSBgc3RyaW5nYFxuICAgICAgICAgICAgICAgICAgICAgICAgPyB1c2VyUGx1Z2luRW50cnkucGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgOiB1c2VyUGx1Z2luRW50cnk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHVzZXJQcm92aWRlZFNwZWMgPSAoX2EgPSB1c2VyUGx1Z2luRW50cnkgPT09IG51bGwgfHwgdXNlclBsdWdpbkVudHJ5ID09PSB2b2lkIDAgPyB2b2lkIDAgOiB1c2VyUGx1Z2luRW50cnkuc3BlYykgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogYGA7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHVzZXJQcm92aWRlZENoZWNrc3VtID0gKF9iID0gdXNlclBsdWdpbkVudHJ5ID09PSBudWxsIHx8IHVzZXJQbHVnaW5FbnRyeSA9PT0gdm9pZCAwID8gdm9pZCAwIDogdXNlclBsdWdpbkVudHJ5LmNoZWNrc3VtKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiBgYDtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcGx1Z2luUGF0aCA9IGZzbGliXzEucHBhdGgucmVzb2x2ZShjd2QsIGZzbGliXzEubnBhdGgudG9Qb3J0YWJsZVBhdGgodXNlclByb3ZpZGVkUGF0aCkpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWF3YWl0IGZzbGliXzEueGZzLmV4aXN0c1Byb21pc2UocGx1Z2luUGF0aCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdXNlclByb3ZpZGVkU3BlYykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHByZXR0eVBsdWdpbk5hbWUgPSBmb3JtYXRVdGlscy5wcmV0dHkoY29uZmlndXJhdGlvbiwgZnNsaWJfMS5wcGF0aC5iYXNlbmFtZShwbHVnaW5QYXRoLCBgLmNqc2ApLCBmb3JtYXRVdGlscy5UeXBlLk5BTUUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHByZXR0eUdpdElnbm9yZSA9IGZvcm1hdFV0aWxzLnByZXR0eShjb25maWd1cmF0aW9uLCBgLmdpdGlnbm9yZWAsIGZvcm1hdFV0aWxzLlR5cGUuTkFNRSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJldHR5WWFybnJjID0gZm9ybWF0VXRpbHMucHJldHR5KGNvbmZpZ3VyYXRpb24sIGNvbmZpZ3VyYXRpb24udmFsdWVzLmdldChgcmNGaWxlbmFtZWApLCBmb3JtYXRVdGlscy5UeXBlLk5BTUUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHByZXR0eVVybCA9IGZvcm1hdFV0aWxzLnByZXR0eShjb25maWd1cmF0aW9uLCBgaHR0cHM6Ly95YXJucGtnLmNvbS9nZXR0aW5nLXN0YXJ0ZWQvcWEjd2hpY2gtZmlsZXMtc2hvdWxkLWJlLWdpdGlnbm9yZWRgLCBmb3JtYXRVdGlscy5UeXBlLlVSTCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IGNsaXBhbmlvbl8xLlVzYWdlRXJyb3IoYE1pc3Npbmcgc291cmNlIGZvciB0aGUgJHtwcmV0dHlQbHVnaW5OYW1lfSBwbHVnaW4gLSBwbGVhc2UgdHJ5IHRvIHJlbW92ZSB0aGUgcGx1Z2luIGZyb20gJHtwcmV0dHlZYXJucmN9IHRoZW4gcmVpbnN0YWxsIGl0IG1hbnVhbGx5LiBUaGlzIGVycm9yIHVzdWFsbHkgb2NjdXJzIGJlY2F1c2UgJHtwcmV0dHlHaXRJZ25vcmV9IGlzIGluY29ycmVjdCwgY2hlY2sgJHtwcmV0dHlVcmx9IHRvIG1ha2Ugc3VyZSB5b3VyIHBsdWdpbiBmb2xkZXIgaXNuJ3QgZ2l0aWdub3JlZC5gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdXNlclByb3ZpZGVkU3BlYy5tYXRjaCgvXmh0dHBzPzovKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHByZXR0eVBsdWdpbk5hbWUgPSBmb3JtYXRVdGlscy5wcmV0dHkoY29uZmlndXJhdGlvbiwgZnNsaWJfMS5wcGF0aC5iYXNlbmFtZShwbHVnaW5QYXRoLCBgLmNqc2ApLCBmb3JtYXRVdGlscy5UeXBlLk5BTUUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHByZXR0eVlhcm5yYyA9IGZvcm1hdFV0aWxzLnByZXR0eShjb25maWd1cmF0aW9uLCBjb25maWd1cmF0aW9uLnZhbHVlcy5nZXQoYHJjRmlsZW5hbWVgKSwgZm9ybWF0VXRpbHMuVHlwZS5OQU1FKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgY2xpcGFuaW9uXzEuVXNhZ2VFcnJvcihgRmFpbGVkIHRvIHJlY29nbml6ZSB0aGUgc291cmNlIGZvciB0aGUgJHtwcmV0dHlQbHVnaW5OYW1lfSBwbHVnaW4gLSBwbGVhc2UgdHJ5IHRvIGRlbGV0ZSB0aGUgcGx1Z2luIGZyb20gJHtwcmV0dHlZYXJucmN9IHRoZW4gcmVpbnN0YWxsIGl0IG1hbnVhbGx5LmApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGx1Z2luQnVmZmVyID0gYXdhaXQgaHR0cFV0aWxzLmdldCh1c2VyUHJvdmlkZWRTcGVjLCB7IGNvbmZpZ3VyYXRpb24gfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwbHVnaW5DaGVja3N1bSA9IGhhc2hVdGlscy5tYWtlSGFzaChwbHVnaW5CdWZmZXIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgdGhlcmUgaXMgbm8gY2hlY2tzdW0sIHRoaXMgbWVhbnMgdGhhdCB0aGUgdXNlciB1c2VkIC0tbm8tY2hlY2tzdW0gYW5kIGRvZXMgbm90IG5lZWQgdG8gY2hlY2sgdGhpcyBwbHVnaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh1c2VyUHJvdmlkZWRDaGVja3N1bSAmJiB1c2VyUHJvdmlkZWRDaGVja3N1bSAhPT0gcGx1Z2luQ2hlY2tzdW0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwcmV0dHlQbHVnaW5OYW1lID0gZm9ybWF0VXRpbHMucHJldHR5KGNvbmZpZ3VyYXRpb24sIGZzbGliXzEucHBhdGguYmFzZW5hbWUocGx1Z2luUGF0aCwgYC5janNgKSwgZm9ybWF0VXRpbHMuVHlwZS5OQU1FKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwcmV0dHlZYXJucmMgPSBmb3JtYXRVdGlscy5wcmV0dHkoY29uZmlndXJhdGlvbiwgY29uZmlndXJhdGlvbi52YWx1ZXMuZ2V0KGByY0ZpbGVuYW1lYCksIGZvcm1hdFV0aWxzLlR5cGUuTkFNRSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJldHR5UGx1Z2luSW1wb3J0Q29tbWFuZCA9IGZvcm1hdFV0aWxzLnByZXR0eShjb25maWd1cmF0aW9uLCBgeWFybiBwbHVnaW4gaW1wb3J0ICR7dXNlclByb3ZpZGVkU3BlY31gLCBmb3JtYXRVdGlscy5UeXBlLkNPREUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBjbGlwYW5pb25fMS5Vc2FnZUVycm9yKGBGYWlsZWQgdG8gZmV0Y2ggdGhlICR7cHJldHR5UGx1Z2luTmFtZX0gcGx1Z2luIGZyb20gaXRzIHJlbW90ZSBsb2NhdGlvbjogaXRzIGNoZWNrc3VtIHNlZW1zIHRvIGhhdmUgY2hhbmdlZC4gSWYgdGhpcyBpcyBleHBlY3RlZCwgcGxlYXNlIHJlbW92ZSB0aGUgcGx1Z2luIGZyb20gJHtwcmV0dHlZYXJucmN9IHRoZW4gcnVuICR7cHJldHR5UGx1Z2luSW1wb3J0Q29tbWFuZH0gdG8gcmVpbXBvcnQgaXQuYCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCBmc2xpYl8xLnhmcy5ta2RpclByb21pc2UoZnNsaWJfMS5wcGF0aC5kaXJuYW1lKHBsdWdpblBhdGgpLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IGZzbGliXzEueGZzLndyaXRlRmlsZVByb21pc2UocGx1Z2luUGF0aCwgcGx1Z2luQnVmZmVyKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBhd2FpdCBpbXBvcnRQbHVnaW4ocGx1Z2luUGF0aCwgcGF0aCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGZvciAoY29uc3QgW25hbWUsIHRoaXJkUGFydHlQbHVnaW5dIG9mIHRoaXJkUGFydHlQbHVnaW5zKVxuICAgICAgICAgICAgY29uZmlndXJhdGlvbi5hY3RpdmF0ZVBsdWdpbihuYW1lLCB0aGlyZFBhcnR5UGx1Z2luKTtcbiAgICAgICAgLy8gbG9hZCB2YWx1ZXMgb2YgYWxsIHBsdWdpbiBkZWZpbml0aW9uc1xuICAgICAgICBjb25maWd1cmF0aW9uLnVzZVdpdGhTb3VyY2UoYDxlbnZpcm9ubWVudD5gLCBwaWNrUGx1Z2luRmllbGRzKGVudmlyb25tZW50U2V0dGluZ3MpLCBzdGFydGluZ0N3ZCwgeyBzdHJpY3QgfSk7XG4gICAgICAgIGZvciAoY29uc3QgeyBwYXRoLCBjd2QsIGRhdGEsIHN0cmljdDogaXNTdHJpY3QgfSBvZiByY0ZpbGVzKVxuICAgICAgICAgICAgY29uZmlndXJhdGlvbi51c2VXaXRoU291cmNlKHBhdGgsIHBpY2tQbHVnaW5GaWVsZHMoZGF0YSksIGN3ZCwgeyBzdHJpY3Q6IGlzU3RyaWN0ICE9PSBudWxsICYmIGlzU3RyaWN0ICE9PSB2b2lkIDAgPyBpc1N0cmljdCA6IHN0cmljdCB9KTtcbiAgICAgICAgaWYgKGNvbmZpZ3VyYXRpb24uZ2V0KGBlbmFibGVHbG9iYWxDYWNoZWApKSB7XG4gICAgICAgICAgICBjb25maWd1cmF0aW9uLnZhbHVlcy5zZXQoYGNhY2hlRm9sZGVyYCwgYCR7Y29uZmlndXJhdGlvbi5nZXQoYGdsb2JhbEZvbGRlcmApfS9jYWNoZWApO1xuICAgICAgICAgICAgY29uZmlndXJhdGlvbi5zb3VyY2VzLnNldChgY2FjaGVGb2xkZXJgLCBgPGludGVybmFsPmApO1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0IGNvbmZpZ3VyYXRpb24ucmVmcmVzaFBhY2thZ2VFeHRlbnNpb25zKCk7XG4gICAgICAgIHJldHVybiBjb25maWd1cmF0aW9uO1xuICAgIH1cbiAgICBzdGF0aWMgYXN5bmMgZmluZFJjRmlsZXMoc3RhcnRpbmdDd2QpIHtcbiAgICAgICAgY29uc3QgcmNGaWxlbmFtZSA9IGdldFJjRmlsZW5hbWUoKTtcbiAgICAgICAgY29uc3QgcmNGaWxlcyA9IFtdO1xuICAgICAgICBsZXQgbmV4dEN3ZCA9IHN0YXJ0aW5nQ3dkO1xuICAgICAgICBsZXQgY3VycmVudEN3ZCA9IG51bGw7XG4gICAgICAgIHdoaWxlIChuZXh0Q3dkICE9PSBjdXJyZW50Q3dkKSB7XG4gICAgICAgICAgICBjdXJyZW50Q3dkID0gbmV4dEN3ZDtcbiAgICAgICAgICAgIGNvbnN0IHJjUGF0aCA9IGZzbGliXzEucHBhdGguam9pbihjdXJyZW50Q3dkLCByY0ZpbGVuYW1lKTtcbiAgICAgICAgICAgIGlmIChmc2xpYl8xLnhmcy5leGlzdHNTeW5jKHJjUGF0aCkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjb250ZW50ID0gYXdhaXQgZnNsaWJfMS54ZnMucmVhZEZpbGVQcm9taXNlKHJjUGF0aCwgYHV0ZjhgKTtcbiAgICAgICAgICAgICAgICBsZXQgZGF0YTtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBkYXRhID0gKDAsIHBhcnNlcnNfMS5wYXJzZVN5bWwpKGNvbnRlbnQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHRpcCA9IGBgO1xuICAgICAgICAgICAgICAgICAgICBpZiAoY29udGVudC5tYXRjaCgvXlxccysoPyEtKVteOl0rXFxzK1xcUysvbSkpXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXAgPSBgIChpbiBwYXJ0aWN1bGFyLCBtYWtlIHN1cmUgeW91IGxpc3QgdGhlIGNvbG9ucyBhZnRlciBlYWNoIGtleSBuYW1lKWA7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBjbGlwYW5pb25fMS5Vc2FnZUVycm9yKGBQYXJzZSBlcnJvciB3aGVuIGxvYWRpbmcgJHtyY1BhdGh9OyBwbGVhc2UgY2hlY2sgaXQncyBwcm9wZXIgWWFtbCR7dGlwfWApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByY0ZpbGVzLnB1c2goeyBwYXRoOiByY1BhdGgsIGN3ZDogY3VycmVudEN3ZCwgZGF0YSB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG5leHRDd2QgPSBmc2xpYl8xLnBwYXRoLmRpcm5hbWUoY3VycmVudEN3ZCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJjRmlsZXM7XG4gICAgfVxuICAgIHN0YXRpYyBhc3luYyBmaW5kSG9tZVJjRmlsZSgpIHtcbiAgICAgICAgY29uc3QgcmNGaWxlbmFtZSA9IGdldFJjRmlsZW5hbWUoKTtcbiAgICAgICAgY29uc3QgaG9tZUZvbGRlciA9IGZvbGRlclV0aWxzLmdldEhvbWVGb2xkZXIoKTtcbiAgICAgICAgY29uc3QgaG9tZVJjRmlsZVBhdGggPSBmc2xpYl8xLnBwYXRoLmpvaW4oaG9tZUZvbGRlciwgcmNGaWxlbmFtZSk7XG4gICAgICAgIGlmIChmc2xpYl8xLnhmcy5leGlzdHNTeW5jKGhvbWVSY0ZpbGVQYXRoKSkge1xuICAgICAgICAgICAgY29uc3QgY29udGVudCA9IGF3YWl0IGZzbGliXzEueGZzLnJlYWRGaWxlUHJvbWlzZShob21lUmNGaWxlUGF0aCwgYHV0ZjhgKTtcbiAgICAgICAgICAgIGNvbnN0IGRhdGEgPSAoMCwgcGFyc2Vyc18xLnBhcnNlU3ltbCkoY29udGVudCk7XG4gICAgICAgICAgICByZXR1cm4geyBwYXRoOiBob21lUmNGaWxlUGF0aCwgY3dkOiBob21lRm9sZGVyLCBkYXRhIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHN0YXRpYyBhc3luYyBmaW5kUHJvamVjdEN3ZChzdGFydGluZ0N3ZCwgbG9ja2ZpbGVGaWxlbmFtZSkge1xuICAgICAgICBsZXQgcHJvamVjdEN3ZCA9IG51bGw7XG4gICAgICAgIGxldCBuZXh0Q3dkID0gc3RhcnRpbmdDd2Q7XG4gICAgICAgIGxldCBjdXJyZW50Q3dkID0gbnVsbDtcbiAgICAgICAgd2hpbGUgKG5leHRDd2QgIT09IGN1cnJlbnRDd2QpIHtcbiAgICAgICAgICAgIGN1cnJlbnRDd2QgPSBuZXh0Q3dkO1xuICAgICAgICAgICAgaWYgKGZzbGliXzEueGZzLmV4aXN0c1N5bmMoZnNsaWJfMS5wcGF0aC5qb2luKGN1cnJlbnRDd2QsIGBwYWNrYWdlLmpzb25gKSkpXG4gICAgICAgICAgICAgICAgcHJvamVjdEN3ZCA9IGN1cnJlbnRDd2Q7XG4gICAgICAgICAgICBpZiAobG9ja2ZpbGVGaWxlbmFtZSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGlmIChmc2xpYl8xLnhmcy5leGlzdHNTeW5jKGZzbGliXzEucHBhdGguam9pbihjdXJyZW50Q3dkLCBsb2NrZmlsZUZpbGVuYW1lKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcHJvamVjdEN3ZCA9IGN1cnJlbnRDd2Q7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmIChwcm9qZWN0Q3dkICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG5leHRDd2QgPSBmc2xpYl8xLnBwYXRoLmRpcm5hbWUoY3VycmVudEN3ZCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHByb2plY3RDd2Q7XG4gICAgfVxuICAgIHN0YXRpYyBhc3luYyB1cGRhdGVDb25maWd1cmF0aW9uKGN3ZCwgcGF0Y2gpIHtcbiAgICAgICAgY29uc3QgcmNGaWxlbmFtZSA9IGdldFJjRmlsZW5hbWUoKTtcbiAgICAgICAgY29uc3QgY29uZmlndXJhdGlvblBhdGggPSBmc2xpYl8xLnBwYXRoLmpvaW4oY3dkLCByY0ZpbGVuYW1lKTtcbiAgICAgICAgY29uc3QgY3VycmVudCA9IGZzbGliXzEueGZzLmV4aXN0c1N5bmMoY29uZmlndXJhdGlvblBhdGgpXG4gICAgICAgICAgICA/ICgwLCBwYXJzZXJzXzEucGFyc2VTeW1sKShhd2FpdCBmc2xpYl8xLnhmcy5yZWFkRmlsZVByb21pc2UoY29uZmlndXJhdGlvblBhdGgsIGB1dGY4YCkpXG4gICAgICAgICAgICA6IHt9O1xuICAgICAgICBsZXQgcGF0Y2hlZCA9IGZhbHNlO1xuICAgICAgICBsZXQgcmVwbGFjZW1lbnQ7XG4gICAgICAgIGlmICh0eXBlb2YgcGF0Y2ggPT09IGBmdW5jdGlvbmApIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgcmVwbGFjZW1lbnQgPSBwYXRjaChjdXJyZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIHtcbiAgICAgICAgICAgICAgICByZXBsYWNlbWVudCA9IHBhdGNoKHt9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChyZXBsYWNlbWVudCA9PT0gY3VycmVudCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJlcGxhY2VtZW50ID0gY3VycmVudDtcbiAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHBhdGNoKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRWYWx1ZSA9IGN1cnJlbnRba2V5XTtcbiAgICAgICAgICAgICAgICBjb25zdCBwYXRjaEZpZWxkID0gcGF0Y2hba2V5XTtcbiAgICAgICAgICAgICAgICBsZXQgbmV4dFZhbHVlO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgcGF0Y2hGaWVsZCA9PT0gYGZ1bmN0aW9uYCkge1xuICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmV4dFZhbHVlID0gcGF0Y2hGaWVsZChjdXJyZW50VmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNhdGNoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5leHRWYWx1ZSA9IHBhdGNoRmllbGQodW5kZWZpbmVkKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbmV4dFZhbHVlID0gcGF0Y2hGaWVsZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRWYWx1ZSA9PT0gbmV4dFZhbHVlKVxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBpZiAobmV4dFZhbHVlID09PSBDb25maWd1cmF0aW9uLmRlbGV0ZVByb3BlcnR5KVxuICAgICAgICAgICAgICAgICAgICBkZWxldGUgcmVwbGFjZW1lbnRba2V5XTtcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIHJlcGxhY2VtZW50W2tleV0gPSBuZXh0VmFsdWU7XG4gICAgICAgICAgICAgICAgcGF0Y2hlZCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIXBhdGNoZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgZnNsaWJfMS54ZnMuY2hhbmdlRmlsZVByb21pc2UoY29uZmlndXJhdGlvblBhdGgsICgwLCBwYXJzZXJzXzEuc3RyaW5naWZ5U3ltbCkocmVwbGFjZW1lbnQpLCB7XG4gICAgICAgICAgICBhdXRvbWF0aWNOZXdsaW5lczogdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHN0YXRpYyBhc3luYyBhZGRQbHVnaW4oY3dkLCBwbHVnaW5NZXRhTGlzdCkge1xuICAgICAgICBpZiAocGx1Z2luTWV0YUxpc3QubGVuZ3RoID09PSAwKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBhd2FpdCBDb25maWd1cmF0aW9uLnVwZGF0ZUNvbmZpZ3VyYXRpb24oY3dkLCAoY3VycmVudCkgPT4ge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgY29uc3QgY3VycmVudFBsdWdpbk1ldGFMaXN0ID0gKF9hID0gY3VycmVudC5wbHVnaW5zKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBbXTtcbiAgICAgICAgICAgIGlmIChjdXJyZW50UGx1Z2luTWV0YUxpc3QubGVuZ3RoID09PSAwKVxuICAgICAgICAgICAgICAgIHJldHVybiB7IC4uLmN1cnJlbnQsIHBsdWdpbnM6IHBsdWdpbk1ldGFMaXN0IH07XG4gICAgICAgICAgICBjb25zdCBuZXdQbHVnaW5NZXRhTGlzdCA9IFtdO1xuICAgICAgICAgICAgbGV0IG5vdFlldFByb2Nlc3NlZExpc3QgPSBbLi4ucGx1Z2luTWV0YUxpc3RdO1xuICAgICAgICAgICAgZm9yIChjb25zdCBjdXJyZW50UGx1Z2luTWV0YSBvZiBjdXJyZW50UGx1Z2luTWV0YUxpc3QpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50UGx1Z2luUGF0aCA9IHR5cGVvZiBjdXJyZW50UGx1Z2luTWV0YSAhPT0gYHN0cmluZ2BcbiAgICAgICAgICAgICAgICAgICAgPyBjdXJyZW50UGx1Z2luTWV0YS5wYXRoXG4gICAgICAgICAgICAgICAgICAgIDogY3VycmVudFBsdWdpbk1ldGE7XG4gICAgICAgICAgICAgICAgY29uc3QgdXBkYXRpbmdQbHVnaW4gPSBub3RZZXRQcm9jZXNzZWRMaXN0LmZpbmQocGx1Z2luTWV0YSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBwbHVnaW5NZXRhLnBhdGggPT09IGN1cnJlbnRQbHVnaW5QYXRoO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGlmICh1cGRhdGluZ1BsdWdpbikge1xuICAgICAgICAgICAgICAgICAgICBuZXdQbHVnaW5NZXRhTGlzdC5wdXNoKHVwZGF0aW5nUGx1Z2luKTtcbiAgICAgICAgICAgICAgICAgICAgbm90WWV0UHJvY2Vzc2VkTGlzdCA9IG5vdFlldFByb2Nlc3NlZExpc3QuZmlsdGVyKHAgPT4gcCAhPT0gdXBkYXRpbmdQbHVnaW4pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbmV3UGx1Z2luTWV0YUxpc3QucHVzaChjdXJyZW50UGx1Z2luTWV0YSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbmV3UGx1Z2luTWV0YUxpc3QucHVzaCguLi5ub3RZZXRQcm9jZXNzZWRMaXN0KTtcbiAgICAgICAgICAgIHJldHVybiB7IC4uLmN1cnJlbnQsIHBsdWdpbnM6IG5ld1BsdWdpbk1ldGFMaXN0IH07XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBzdGF0aWMgYXN5bmMgdXBkYXRlSG9tZUNvbmZpZ3VyYXRpb24ocGF0Y2gpIHtcbiAgICAgICAgY29uc3QgaG9tZUZvbGRlciA9IGZvbGRlclV0aWxzLmdldEhvbWVGb2xkZXIoKTtcbiAgICAgICAgcmV0dXJuIGF3YWl0IENvbmZpZ3VyYXRpb24udXBkYXRlQ29uZmlndXJhdGlvbihob21lRm9sZGVyLCBwYXRjaCk7XG4gICAgfVxuICAgIGNvbnN0cnVjdG9yKHN0YXJ0aW5nQ3dkKSB7XG4gICAgICAgIHRoaXMucHJvamVjdEN3ZCA9IG51bGw7XG4gICAgICAgIHRoaXMucGx1Z2lucyA9IG5ldyBNYXAoKTtcbiAgICAgICAgdGhpcy5zZXR0aW5ncyA9IG5ldyBNYXAoKTtcbiAgICAgICAgdGhpcy52YWx1ZXMgPSBuZXcgTWFwKCk7XG4gICAgICAgIHRoaXMuc291cmNlcyA9IG5ldyBNYXAoKTtcbiAgICAgICAgdGhpcy5pbnZhbGlkID0gbmV3IE1hcCgpO1xuICAgICAgICB0aGlzLnBhY2thZ2VFeHRlbnNpb25zID0gbmV3IE1hcCgpO1xuICAgICAgICB0aGlzLmxpbWl0cyA9IG5ldyBNYXAoKTtcbiAgICAgICAgdGhpcy5zdGFydGluZ0N3ZCA9IHN0YXJ0aW5nQ3dkO1xuICAgIH1cbiAgICBhY3RpdmF0ZVBsdWdpbihuYW1lLCBwbHVnaW4pIHtcbiAgICAgICAgdGhpcy5wbHVnaW5zLnNldChuYW1lLCBwbHVnaW4pO1xuICAgICAgICBpZiAodHlwZW9mIHBsdWdpbi5jb25maWd1cmF0aW9uICE9PSBgdW5kZWZpbmVkYCkge1xuICAgICAgICAgICAgdGhpcy5pbXBvcnRTZXR0aW5ncyhwbHVnaW4uY29uZmlndXJhdGlvbik7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaW1wb3J0U2V0dGluZ3MoZGVmaW5pdGlvbnMpIHtcbiAgICAgICAgZm9yIChjb25zdCBbbmFtZSwgZGVmaW5pdGlvbl0gb2YgT2JqZWN0LmVudHJpZXMoZGVmaW5pdGlvbnMpKSB7XG4gICAgICAgICAgICBpZiAoZGVmaW5pdGlvbiA9PSBudWxsKVxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgaWYgKHRoaXMuc2V0dGluZ3MuaGFzKG5hbWUpKVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IHJlZGVmaW5lIHNldHRpbmdzIFwiJHtuYW1lfVwiYCk7XG4gICAgICAgICAgICB0aGlzLnNldHRpbmdzLnNldChuYW1lLCBkZWZpbml0aW9uKTtcbiAgICAgICAgICAgIHRoaXMudmFsdWVzLnNldChuYW1lLCBnZXREZWZhdWx0VmFsdWUodGhpcywgZGVmaW5pdGlvbikpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHVzZVdpdGhTb3VyY2Uoc291cmNlLCBkYXRhLCBmb2xkZXIsIG9wdHMpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRoaXMudXNlKHNvdXJjZSwgZGF0YSwgZm9sZGVyLCBvcHRzKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIGVycm9yLm1lc3NhZ2UgKz0gYCAoaW4gJHtmb3JtYXRVdGlscy5wcmV0dHkodGhpcywgc291cmNlLCBmb3JtYXRVdGlscy5UeXBlLlBBVEgpfSlgO1xuICAgICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgIH1cbiAgICB9XG4gICAgdXNlKHNvdXJjZSwgZGF0YSwgZm9sZGVyLCB7IHN0cmljdCA9IHRydWUsIG92ZXJ3cml0ZSA9IGZhbHNlIH0gPSB7fSkge1xuICAgICAgICBzdHJpY3QgPSBzdHJpY3QgJiYgdGhpcy5nZXQoYGVuYWJsZVN0cmljdFNldHRpbmdzYCk7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IG9mIFtgZW5hYmxlU3RyaWN0U2V0dGluZ3NgLCAuLi5PYmplY3Qua2V5cyhkYXRhKV0pIHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gZGF0YVtrZXldO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gYHVuZGVmaW5lZGApXG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAvLyBUaGUgcGx1Z2lucyBoYXZlIGFscmVhZHkgYmVlbiBsb2FkZWQgYXQgdGhpcyBwb2ludFxuICAgICAgICAgICAgaWYgKGtleSA9PT0gYHBsdWdpbnNgKVxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgLy8gU29tZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgc2hvdWxkIGJlIGlnbm9yZWQgd2hlbiBhcHBseWluZyB0aGUgY29uZmlndXJhdGlvblxuICAgICAgICAgICAgaWYgKHNvdXJjZSA9PT0gYDxlbnZpcm9ubWVudD5gICYmIElHTk9SRURfRU5WX1ZBUklBQkxFUy5oYXMoa2V5KSlcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIC8vIEl0IHdvdWxkbid0IG1ha2UgbXVjaCBzZW5zZSwgd291bGQgaXQ/XG4gICAgICAgICAgICBpZiAoa2V5ID09PSBgcmNGaWxlbmFtZWApXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IGNsaXBhbmlvbl8xLlVzYWdlRXJyb3IoYFRoZSByY0ZpbGVuYW1lIHNldHRpbmdzIGNhbiBvbmx5IGJlIHNldCB2aWEgJHtgJHtleHBvcnRzLkVOVklST05NRU5UX1BSRUZJWH1SQ19GSUxFTkFNRWAudG9VcHBlckNhc2UoKX0sIG5vdCB2aWEgYSByYyBmaWxlYCk7XG4gICAgICAgICAgICBjb25zdCBkZWZpbml0aW9uID0gdGhpcy5zZXR0aW5ncy5nZXQoa2V5KTtcbiAgICAgICAgICAgIGlmICghZGVmaW5pdGlvbikge1xuICAgICAgICAgICAgICAgIGlmIChzdHJpY3QpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IGNsaXBhbmlvbl8xLlVzYWdlRXJyb3IoYFVucmVjb2duaXplZCBvciBsZWdhY3kgY29uZmlndXJhdGlvbiBzZXR0aW5ncyBmb3VuZDogJHtrZXl9IC0gcnVuIFwieWFybiBjb25maWcgLXZcIiB0byBzZWUgdGhlIGxpc3Qgb2Ygc2V0dGluZ3Mgc3VwcG9ydGVkIGluIFlhcm5gKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW52YWxpZC5zZXQoa2V5LCBzb3VyY2UpO1xuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5zb3VyY2VzLmhhcyhrZXkpICYmICEob3ZlcndyaXRlIHx8IGRlZmluaXRpb24udHlwZSA9PT0gU2V0dGluZ3NUeXBlLk1BUCB8fCBkZWZpbml0aW9uLmlzQXJyYXkgJiYgZGVmaW5pdGlvbi5jb25jYXRlbmF0ZVZhbHVlcykpXG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICBsZXQgcGFyc2VkO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBwYXJzZWQgPSBwYXJzZVZhbHVlKHRoaXMsIGtleSwgZGF0YVtrZXldLCBkZWZpbml0aW9uLCBmb2xkZXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgZXJyb3IubWVzc2FnZSArPSBgIGluICR7Zm9ybWF0VXRpbHMucHJldHR5KHRoaXMsIHNvdXJjZSwgZm9ybWF0VXRpbHMuVHlwZS5QQVRIKX1gO1xuICAgICAgICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGtleSA9PT0gYGVuYWJsZVN0cmljdFNldHRpbmdzYCAmJiBzb3VyY2UgIT09IGA8ZW52aXJvbm1lbnQ+YCkge1xuICAgICAgICAgICAgICAgIHN0cmljdCA9IHBhcnNlZDtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChkZWZpbml0aW9uLnR5cGUgPT09IFNldHRpbmdzVHlwZS5NQVApIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwcmV2aW91c1ZhbHVlID0gdGhpcy52YWx1ZXMuZ2V0KGtleSk7XG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZXMuc2V0KGtleSwgbmV3IE1hcChvdmVyd3JpdGVcbiAgICAgICAgICAgICAgICAgICAgPyBbLi4ucHJldmlvdXNWYWx1ZSwgLi4ucGFyc2VkXVxuICAgICAgICAgICAgICAgICAgICA6IFsuLi5wYXJzZWQsIC4uLnByZXZpb3VzVmFsdWVdKSk7XG4gICAgICAgICAgICAgICAgdGhpcy5zb3VyY2VzLnNldChrZXksIGAke3RoaXMuc291cmNlcy5nZXQoa2V5KX0sICR7c291cmNlfWApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoZGVmaW5pdGlvbi5pc0FycmF5ICYmIGRlZmluaXRpb24uY29uY2F0ZW5hdGVWYWx1ZXMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwcmV2aW91c1ZhbHVlID0gdGhpcy52YWx1ZXMuZ2V0KGtleSk7XG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZXMuc2V0KGtleSwgb3ZlcndyaXRlXG4gICAgICAgICAgICAgICAgICAgID8gWy4uLnByZXZpb3VzVmFsdWUsIC4uLnBhcnNlZF1cbiAgICAgICAgICAgICAgICAgICAgOiBbLi4ucGFyc2VkLCAuLi5wcmV2aW91c1ZhbHVlXSk7XG4gICAgICAgICAgICAgICAgdGhpcy5zb3VyY2VzLnNldChrZXksIGAke3RoaXMuc291cmNlcy5nZXQoa2V5KX0sICR7c291cmNlfWApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZXMuc2V0KGtleSwgcGFyc2VkKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNvdXJjZXMuc2V0KGtleSwgc291cmNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBnZXQoa2V5KSB7XG4gICAgICAgIGlmICghdGhpcy52YWx1ZXMuaGFzKGtleSkpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgY29uZmlndXJhdGlvbiBrZXkgXCIke2tleX1cImApO1xuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZXMuZ2V0KGtleSk7XG4gICAgfVxuICAgIGdldFNwZWNpYWwoa2V5LCB7IGhpZGVTZWNyZXRzID0gZmFsc2UsIGdldE5hdGl2ZVBhdGhzID0gZmFsc2UgfSkge1xuICAgICAgICBjb25zdCByYXdWYWx1ZSA9IHRoaXMuZ2V0KGtleSk7XG4gICAgICAgIGNvbnN0IGRlZmluaXRpb24gPSB0aGlzLnNldHRpbmdzLmdldChrZXkpO1xuICAgICAgICBpZiAodHlwZW9mIGRlZmluaXRpb24gPT09IGB1bmRlZmluZWRgKVxuICAgICAgICAgICAgdGhyb3cgbmV3IGNsaXBhbmlvbl8xLlVzYWdlRXJyb3IoYENvdWxkbid0IGZpbmQgYSBjb25maWd1cmF0aW9uIHNldHRpbmdzIG5hbWVkIFwiJHtrZXl9XCJgKTtcbiAgICAgICAgcmV0dXJuIHRyYW5zZm9ybUNvbmZpZ3VyYXRpb24ocmF3VmFsdWUsIGRlZmluaXRpb24sIHtcbiAgICAgICAgICAgIGhpZGVTZWNyZXRzLFxuICAgICAgICAgICAgZ2V0TmF0aXZlUGF0aHMsXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBnZXRTdWJwcm9jZXNzU3RyZWFtcyhsb2dGaWxlLCB7IGhlYWRlciwgcHJlZml4LCByZXBvcnQgfSkge1xuICAgICAgICBsZXQgc3Rkb3V0O1xuICAgICAgICBsZXQgc3RkZXJyO1xuICAgICAgICBjb25zdCBsb2dTdHJlYW0gPSBmc2xpYl8xLnhmcy5jcmVhdGVXcml0ZVN0cmVhbShsb2dGaWxlKTtcbiAgICAgICAgaWYgKHRoaXMuZ2V0KGBlbmFibGVJbmxpbmVCdWlsZHNgKSkge1xuICAgICAgICAgICAgY29uc3Qgc3Rkb3V0TGluZVJlcG9ydGVyID0gcmVwb3J0LmNyZWF0ZVN0cmVhbVJlcG9ydGVyKGAke3ByZWZpeH0gJHtmb3JtYXRVdGlscy5wcmV0dHkodGhpcywgYFNURE9VVGAsIGBncmVlbmApfWApO1xuICAgICAgICAgICAgY29uc3Qgc3RkZXJyTGluZVJlcG9ydGVyID0gcmVwb3J0LmNyZWF0ZVN0cmVhbVJlcG9ydGVyKGAke3ByZWZpeH0gJHtmb3JtYXRVdGlscy5wcmV0dHkodGhpcywgYFNUREVSUmAsIGByZWRgKX1gKTtcbiAgICAgICAgICAgIHN0ZG91dCA9IG5ldyBzdHJlYW1fMS5QYXNzVGhyb3VnaCgpO1xuICAgICAgICAgICAgc3Rkb3V0LnBpcGUoc3Rkb3V0TGluZVJlcG9ydGVyKTtcbiAgICAgICAgICAgIHN0ZG91dC5waXBlKGxvZ1N0cmVhbSk7XG4gICAgICAgICAgICBzdGRlcnIgPSBuZXcgc3RyZWFtXzEuUGFzc1Rocm91Z2goKTtcbiAgICAgICAgICAgIHN0ZGVyci5waXBlKHN0ZGVyckxpbmVSZXBvcnRlcik7XG4gICAgICAgICAgICBzdGRlcnIucGlwZShsb2dTdHJlYW0pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgc3Rkb3V0ID0gbG9nU3RyZWFtO1xuICAgICAgICAgICAgc3RkZXJyID0gbG9nU3RyZWFtO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBoZWFkZXIgIT09IGB1bmRlZmluZWRgKSB7XG4gICAgICAgICAgICAgICAgc3Rkb3V0LndyaXRlKGAke2hlYWRlcn1cXG5gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyBzdGRvdXQsIHN0ZGVyciB9O1xuICAgIH1cbiAgICBtYWtlUmVzb2x2ZXIoKSB7XG4gICAgICAgIGNvbnN0IHBsdWdpblJlc29sdmVycyA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IHBsdWdpbiBvZiB0aGlzLnBsdWdpbnMudmFsdWVzKCkpXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHJlc29sdmVyIG9mIHBsdWdpbi5yZXNvbHZlcnMgfHwgW10pXG4gICAgICAgICAgICAgICAgcGx1Z2luUmVzb2x2ZXJzLnB1c2gobmV3IHJlc29sdmVyKCkpO1xuICAgICAgICByZXR1cm4gKG5ldyBNdWx0aVJlc29sdmVyXzEuTXVsdGlSZXNvbHZlcihbXG4gICAgICAgICAgICBuZXcgVmlydHVhbFJlc29sdmVyXzEuVmlydHVhbFJlc29sdmVyKCksXG4gICAgICAgICAgICBuZXcgV29ya3NwYWNlUmVzb2x2ZXJfMS5Xb3Jrc3BhY2VSZXNvbHZlcigpLFxuICAgICAgICAgICAgLi4ucGx1Z2luUmVzb2x2ZXJzLFxuICAgICAgICBdKSk7XG4gICAgfVxuICAgIG1ha2VGZXRjaGVyKCkge1xuICAgICAgICBjb25zdCBwbHVnaW5GZXRjaGVycyA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IHBsdWdpbiBvZiB0aGlzLnBsdWdpbnMudmFsdWVzKCkpXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGZldGNoZXIgb2YgcGx1Z2luLmZldGNoZXJzIHx8IFtdKVxuICAgICAgICAgICAgICAgIHBsdWdpbkZldGNoZXJzLnB1c2gobmV3IGZldGNoZXIoKSk7XG4gICAgICAgIHJldHVybiBuZXcgTXVsdGlGZXRjaGVyXzEuTXVsdGlGZXRjaGVyKFtcbiAgICAgICAgICAgIG5ldyBWaXJ0dWFsRmV0Y2hlcl8xLlZpcnR1YWxGZXRjaGVyKCksXG4gICAgICAgICAgICBuZXcgV29ya3NwYWNlRmV0Y2hlcl8xLldvcmtzcGFjZUZldGNoZXIoKSxcbiAgICAgICAgICAgIC4uLnBsdWdpbkZldGNoZXJzLFxuICAgICAgICBdKTtcbiAgICB9XG4gICAgZ2V0TGlua2VycygpIHtcbiAgICAgICAgY29uc3QgbGlua2VycyA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IHBsdWdpbiBvZiB0aGlzLnBsdWdpbnMudmFsdWVzKCkpXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGxpbmtlciBvZiBwbHVnaW4ubGlua2VycyB8fCBbXSlcbiAgICAgICAgICAgICAgICBsaW5rZXJzLnB1c2gobmV3IGxpbmtlcigpKTtcbiAgICAgICAgcmV0dXJuIGxpbmtlcnM7XG4gICAgfVxuICAgIGdldFN1cHBvcnRlZEFyY2hpdGVjdHVyZXMoKSB7XG4gICAgICAgIGNvbnN0IGFyY2hpdGVjdHVyZSA9IG5vZGVVdGlscy5nZXRBcmNoaXRlY3R1cmUoKTtcbiAgICAgICAgY29uc3Qgc3VwcG9ydGVkQXJjaGl0ZWN0dXJlcyA9IHRoaXMuZ2V0KGBzdXBwb3J0ZWRBcmNoaXRlY3R1cmVzYCk7XG4gICAgICAgIGxldCBvcyA9IHN1cHBvcnRlZEFyY2hpdGVjdHVyZXMuZ2V0KGBvc2ApO1xuICAgICAgICBpZiAob3MgIT09IG51bGwpXG4gICAgICAgICAgICBvcyA9IG9zLm1hcCh2YWx1ZSA9PiB2YWx1ZSA9PT0gYGN1cnJlbnRgID8gYXJjaGl0ZWN0dXJlLm9zIDogdmFsdWUpO1xuICAgICAgICBsZXQgY3B1ID0gc3VwcG9ydGVkQXJjaGl0ZWN0dXJlcy5nZXQoYGNwdWApO1xuICAgICAgICBpZiAoY3B1ICE9PSBudWxsKVxuICAgICAgICAgICAgY3B1ID0gY3B1Lm1hcCh2YWx1ZSA9PiB2YWx1ZSA9PT0gYGN1cnJlbnRgID8gYXJjaGl0ZWN0dXJlLmNwdSA6IHZhbHVlKTtcbiAgICAgICAgbGV0IGxpYmMgPSBzdXBwb3J0ZWRBcmNoaXRlY3R1cmVzLmdldChgbGliY2ApO1xuICAgICAgICBpZiAobGliYyAhPT0gbnVsbClcbiAgICAgICAgICAgIGxpYmMgPSBtaXNjVXRpbHMubWFwQW5kRmlsdGVyKGxpYmMsIHZhbHVlID0+IHsgdmFyIF9hOyByZXR1cm4gdmFsdWUgPT09IGBjdXJyZW50YCA/IChfYSA9IGFyY2hpdGVjdHVyZS5saWJjKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBtaXNjVXRpbHMubWFwQW5kRmlsdGVyLnNraXAgOiB2YWx1ZTsgfSk7XG4gICAgICAgIHJldHVybiB7IG9zLCBjcHUsIGxpYmMgfTtcbiAgICB9XG4gICAgYXN5bmMgcmVmcmVzaFBhY2thZ2VFeHRlbnNpb25zKCkge1xuICAgICAgICB0aGlzLnBhY2thZ2VFeHRlbnNpb25zID0gbmV3IE1hcCgpO1xuICAgICAgICBjb25zdCBwYWNrYWdlRXh0ZW5zaW9ucyA9IHRoaXMucGFja2FnZUV4dGVuc2lvbnM7XG4gICAgICAgIGNvbnN0IHJlZ2lzdGVyUGFja2FnZUV4dGVuc2lvbiA9IChkZXNjcmlwdG9yLCBleHRlbnNpb25EYXRhLCB7IHVzZXJQcm92aWRlZCA9IGZhbHNlIH0gPSB7fSkgPT4ge1xuICAgICAgICAgICAgaWYgKCFzZW12ZXJVdGlscy52YWxpZFJhbmdlKGRlc2NyaXB0b3IucmFuZ2UpKVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgT25seSBzZW12ZXIgcmFuZ2VzIGFyZSBhbGxvd2VkIGFzIGtleXMgZm9yIHRoZSBwYWNrYWdlRXh0ZW5zaW9ucyBzZXR0aW5nYCk7XG4gICAgICAgICAgICBjb25zdCBleHRlbnNpb24gPSBuZXcgTWFuaWZlc3RfMS5NYW5pZmVzdCgpO1xuICAgICAgICAgICAgZXh0ZW5zaW9uLmxvYWQoZXh0ZW5zaW9uRGF0YSwgeyB5YW1sQ29tcGF0aWJpbGl0eU1vZGU6IHRydWUgfSk7XG4gICAgICAgICAgICBjb25zdCBleHRlbnNpb25zUGVySWRlbnQgPSBtaXNjVXRpbHMuZ2V0QXJyYXlXaXRoRGVmYXVsdChwYWNrYWdlRXh0ZW5zaW9ucywgZGVzY3JpcHRvci5pZGVudEhhc2gpO1xuICAgICAgICAgICAgY29uc3QgZXh0ZW5zaW9uc1BlclJhbmdlID0gW107XG4gICAgICAgICAgICBleHRlbnNpb25zUGVySWRlbnQucHVzaChbZGVzY3JpcHRvci5yYW5nZSwgZXh0ZW5zaW9uc1BlclJhbmdlXSk7XG4gICAgICAgICAgICBjb25zdCBiYXNlRXh0ZW5zaW9uID0ge1xuICAgICAgICAgICAgICAgIHN0YXR1czogdHlwZXNfMS5QYWNrYWdlRXh0ZW5zaW9uU3RhdHVzLkluYWN0aXZlLFxuICAgICAgICAgICAgICAgIHVzZXJQcm92aWRlZCxcbiAgICAgICAgICAgICAgICBwYXJlbnREZXNjcmlwdG9yOiBkZXNjcmlwdG9yLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZGVwZW5kZW5jeSBvZiBleHRlbnNpb24uZGVwZW5kZW5jaWVzLnZhbHVlcygpKVxuICAgICAgICAgICAgICAgIGV4dGVuc2lvbnNQZXJSYW5nZS5wdXNoKHsgLi4uYmFzZUV4dGVuc2lvbiwgdHlwZTogdHlwZXNfMS5QYWNrYWdlRXh0ZW5zaW9uVHlwZS5EZXBlbmRlbmN5LCBkZXNjcmlwdG9yOiBkZXBlbmRlbmN5IH0pO1xuICAgICAgICAgICAgZm9yIChjb25zdCBwZWVyRGVwZW5kZW5jeSBvZiBleHRlbnNpb24ucGVlckRlcGVuZGVuY2llcy52YWx1ZXMoKSlcbiAgICAgICAgICAgICAgICBleHRlbnNpb25zUGVyUmFuZ2UucHVzaCh7IC4uLmJhc2VFeHRlbnNpb24sIHR5cGU6IHR5cGVzXzEuUGFja2FnZUV4dGVuc2lvblR5cGUuUGVlckRlcGVuZGVuY3ksIGRlc2NyaXB0b3I6IHBlZXJEZXBlbmRlbmN5IH0pO1xuICAgICAgICAgICAgZm9yIChjb25zdCBbc2VsZWN0b3IsIG1ldGFdIG9mIGV4dGVuc2lvbi5wZWVyRGVwZW5kZW5jaWVzTWV0YSkge1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKG1ldGEpKSB7XG4gICAgICAgICAgICAgICAgICAgIGV4dGVuc2lvbnNQZXJSYW5nZS5wdXNoKHsgLi4uYmFzZUV4dGVuc2lvbiwgdHlwZTogdHlwZXNfMS5QYWNrYWdlRXh0ZW5zaW9uVHlwZS5QZWVyRGVwZW5kZW5jeU1ldGEsIHNlbGVjdG9yLCBrZXk6IGtleSwgdmFsdWUgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICBhd2FpdCB0aGlzLnRyaWdnZXJIb29rKGhvb2tzID0+IHtcbiAgICAgICAgICAgIHJldHVybiBob29rcy5yZWdpc3RlclBhY2thZ2VFeHRlbnNpb25zO1xuICAgICAgICB9LCB0aGlzLCByZWdpc3RlclBhY2thZ2VFeHRlbnNpb24pO1xuICAgICAgICBmb3IgKGNvbnN0IFtkZXNjcmlwdG9yU3RyaW5nLCBleHRlbnNpb25EYXRhXSBvZiB0aGlzLmdldChgcGFja2FnZUV4dGVuc2lvbnNgKSkge1xuICAgICAgICAgICAgcmVnaXN0ZXJQYWNrYWdlRXh0ZW5zaW9uKHN0cnVjdFV0aWxzLnBhcnNlRGVzY3JpcHRvcihkZXNjcmlwdG9yU3RyaW5nLCB0cnVlKSwgbWlzY1V0aWxzLmNvbnZlcnRNYXBzVG9JbmRleGFibGVPYmplY3RzKGV4dGVuc2lvbkRhdGEpLCB7IHVzZXJQcm92aWRlZDogdHJ1ZSB9KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBub3JtYWxpemVEZXBlbmRlbmN5KGRlcGVuZGVuY3kpIHtcbiAgICAgICAgaWYgKHNlbXZlclV0aWxzLnZhbGlkUmFuZ2UoZGVwZW5kZW5jeS5yYW5nZSkpXG4gICAgICAgICAgICByZXR1cm4gc3RydWN0VXRpbHMubWFrZURlc2NyaXB0b3IoZGVwZW5kZW5jeSwgYCR7dGhpcy5nZXQoYGRlZmF1bHRQcm90b2NvbGApfSR7ZGVwZW5kZW5jeS5yYW5nZX1gKTtcbiAgICAgICAgaWYgKGV4cG9ydHMuVEFHX1JFR0VYUC50ZXN0KGRlcGVuZGVuY3kucmFuZ2UpKVxuICAgICAgICAgICAgcmV0dXJuIHN0cnVjdFV0aWxzLm1ha2VEZXNjcmlwdG9yKGRlcGVuZGVuY3ksIGAke3RoaXMuZ2V0KGBkZWZhdWx0UHJvdG9jb2xgKX0ke2RlcGVuZGVuY3kucmFuZ2V9YCk7XG4gICAgICAgIHJldHVybiBkZXBlbmRlbmN5O1xuICAgIH1cbiAgICBub3JtYWxpemVEZXBlbmRlbmN5TWFwKGRlcGVuZGVuY3lNYXApIHtcbiAgICAgICAgcmV0dXJuIG5ldyBNYXAoWy4uLmRlcGVuZGVuY3lNYXBdLm1hcCgoW2tleSwgZGVwZW5kZW5jeV0pID0+IHtcbiAgICAgICAgICAgIHJldHVybiBba2V5LCB0aGlzLm5vcm1hbGl6ZURlcGVuZGVuY3koZGVwZW5kZW5jeSldO1xuICAgICAgICB9KSk7XG4gICAgfVxuICAgIG5vcm1hbGl6ZVBhY2thZ2Uob3JpZ2luYWwpIHtcbiAgICAgICAgY29uc3QgcGtnID0gc3RydWN0VXRpbHMuY29weVBhY2thZ2Uob3JpZ2luYWwpO1xuICAgICAgICAvLyBXZSB1c2UgdGhlIGV4dGVuc2lvbnMgdG8gZGVmaW5lIGFkZGl0aW9uYWwgZGVwZW5kZW5jaWVzIHRoYXQgd2VyZW4ndFxuICAgICAgICAvLyBwcm9wZXJseSBsaXN0ZWQgaW4gdGhlIG9yaWdpbmFsIHBhY2thZ2UgZGVmaW5pdGlvblxuICAgICAgICBpZiAodGhpcy5wYWNrYWdlRXh0ZW5zaW9ucyA9PSBudWxsKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGByZWZyZXNoUGFja2FnZUV4dGVuc2lvbnMgaGFzIHRvIGJlIGNhbGxlZCBiZWZvcmUgbm9ybWFsaXppbmcgcGFja2FnZXNgKTtcbiAgICAgICAgY29uc3QgZXh0ZW5zaW9uc1BlcklkZW50ID0gdGhpcy5wYWNrYWdlRXh0ZW5zaW9ucy5nZXQob3JpZ2luYWwuaWRlbnRIYXNoKTtcbiAgICAgICAgaWYgKHR5cGVvZiBleHRlbnNpb25zUGVySWRlbnQgIT09IGB1bmRlZmluZWRgKSB7XG4gICAgICAgICAgICBjb25zdCB2ZXJzaW9uID0gb3JpZ2luYWwudmVyc2lvbjtcbiAgICAgICAgICAgIGlmICh2ZXJzaW9uICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBbcmFuZ2UsIGV4dGVuc2lvbnNQZXJSYW5nZV0gb2YgZXh0ZW5zaW9uc1BlcklkZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghc2VtdmVyVXRpbHMuc2F0aXNmaWVzV2l0aFByZXJlbGVhc2VzKHZlcnNpb24sIHJhbmdlKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGV4dGVuc2lvbiBvZiBleHRlbnNpb25zUGVyUmFuZ2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIGFuIGV4dGVuc2lvbiBpcyBhY3RpdmUgZm9yIGEgcGFja2FnZSBidXQgcmVkdW5kYW50XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBmb3IgYW5vdGhlciBvbmUsIGl0IHNob3VsZCBiZSBjb25zaWRlcmVkIGFjdGl2ZVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV4dGVuc2lvbi5zdGF0dXMgPT09IHR5cGVzXzEuUGFja2FnZUV4dGVuc2lvblN0YXR1cy5JbmFjdGl2ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRlbnNpb24uc3RhdHVzID0gdHlwZXNfMS5QYWNrYWdlRXh0ZW5zaW9uU3RhdHVzLlJlZHVuZGFudDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoZXh0ZW5zaW9uLnR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIHR5cGVzXzEuUGFja2FnZUV4dGVuc2lvblR5cGUuRGVwZW5kZW5jeTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY3VycmVudERlcGVuZGVuY3kgPSBwa2cuZGVwZW5kZW5jaWVzLmdldChleHRlbnNpb24uZGVzY3JpcHRvci5pZGVudEhhc2gpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBjdXJyZW50RGVwZW5kZW5jeSA9PT0gYHVuZGVmaW5lZGApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRlbnNpb24uc3RhdHVzID0gdHlwZXNfMS5QYWNrYWdlRXh0ZW5zaW9uU3RhdHVzLkFjdGl2ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwa2cuZGVwZW5kZW5jaWVzLnNldChleHRlbnNpb24uZGVzY3JpcHRvci5pZGVudEhhc2gsIHRoaXMubm9ybWFsaXplRGVwZW5kZW5jeShleHRlbnNpb24uZGVzY3JpcHRvcikpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgdHlwZXNfMS5QYWNrYWdlRXh0ZW5zaW9uVHlwZS5QZWVyRGVwZW5kZW5jeTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY3VycmVudFBlZXJEZXBlbmRlbmN5ID0gcGtnLnBlZXJEZXBlbmRlbmNpZXMuZ2V0KGV4dGVuc2lvbi5kZXNjcmlwdG9yLmlkZW50SGFzaCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGN1cnJlbnRQZWVyRGVwZW5kZW5jeSA9PT0gYHVuZGVmaW5lZGApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRlbnNpb24uc3RhdHVzID0gdHlwZXNfMS5QYWNrYWdlRXh0ZW5zaW9uU3RhdHVzLkFjdGl2ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwa2cucGVlckRlcGVuZGVuY2llcy5zZXQoZXh0ZW5zaW9uLmRlc2NyaXB0b3IuaWRlbnRIYXNoLCBleHRlbnNpb24uZGVzY3JpcHRvcik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSB0eXBlc18xLlBhY2thZ2VFeHRlbnNpb25UeXBlLlBlZXJEZXBlbmRlbmN5TWV0YTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY3VycmVudFBlZXJEZXBlbmRlbmN5TWV0YSA9IHBrZy5wZWVyRGVwZW5kZW5jaWVzTWV0YS5nZXQoZXh0ZW5zaW9uLnNlbGVjdG9yKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgY3VycmVudFBlZXJEZXBlbmRlbmN5TWV0YSA9PT0gYHVuZGVmaW5lZGAgfHwgIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChjdXJyZW50UGVlckRlcGVuZGVuY3lNZXRhLCBleHRlbnNpb24ua2V5KSB8fCBjdXJyZW50UGVlckRlcGVuZGVuY3lNZXRhW2V4dGVuc2lvbi5rZXldICE9PSBleHRlbnNpb24udmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRlbnNpb24uc3RhdHVzID0gdHlwZXNfMS5QYWNrYWdlRXh0ZW5zaW9uU3RhdHVzLkFjdGl2ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaXNjVXRpbHMuZ2V0RmFjdG9yeVdpdGhEZWZhdWx0KHBrZy5wZWVyRGVwZW5kZW5jaWVzTWV0YSwgZXh0ZW5zaW9uLnNlbGVjdG9yLCAoKSA9PiAoe30pKVtleHRlbnNpb24ua2V5XSA9IGV4dGVuc2lvbi52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaXNjVXRpbHMuYXNzZXJ0TmV2ZXIoZXh0ZW5zaW9uKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBXZSBhbHNvIGFkZCBpbXBsaWNpdCBvcHRpb25hbCBAdHlwZXMgcGVlciBkZXBlbmRlbmNpZXMgZm9yIGVhY2ggcGVlclxuICAgICAgICAvLyBkZXBlbmRlbmN5LiBUaGlzIGlzIGZvciBjb21wYXRpYmlsaXR5IHJlYXNvbiwgYXMgbWFueSBleGlzdGluZyBwYWNrYWdlc1xuICAgICAgICAvLyBmb3JnZXQgdG8gZGVmaW5lIHRoZWlyIEB0eXBlcy9yZWFjdCBvcHRpb25hbCBwZWVyIGRlcGVuZGVuY3kgd2hlbiB0aGV5XG4gICAgICAgIC8vIHBlZXItZGVwZW5kIG9uIHJlYWN0LlxuICAgICAgICBjb25zdCBnZXRUeXBlc05hbWUgPSAoZGVzY3JpcHRvcikgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3Iuc2NvcGVcbiAgICAgICAgICAgICAgICA/IGAke2Rlc2NyaXB0b3Iuc2NvcGV9X18ke2Rlc2NyaXB0b3IubmFtZX1gXG4gICAgICAgICAgICAgICAgOiBgJHtkZXNjcmlwdG9yLm5hbWV9YDtcbiAgICAgICAgfTtcbiAgICAgICAgLy8gSSBkb24ndCBsaWtlIGltcGxpY2l0IGRlcGVuZGVuY2llcywgYnV0IHBhY2thZ2UgYXV0aG9ycyBhcmUgcmVsdWN0YW50IHRvXG4gICAgICAgIC8vIHVzZSBvcHRpb25hbCBwZWVyIGRlcGVuZGVuY2llcyBiZWNhdXNlIHRoZXkgd291bGQgcHJpbnQgd2FybmluZ3MgaW4gb2xkZXJcbiAgICAgICAgLy8gbnBtIHJlbGVhc2VzLlxuICAgICAgICBmb3IgKGNvbnN0IGlkZW50U3RyaW5nIG9mIHBrZy5wZWVyRGVwZW5kZW5jaWVzTWV0YS5rZXlzKCkpIHtcbiAgICAgICAgICAgIGNvbnN0IGlkZW50ID0gc3RydWN0VXRpbHMucGFyc2VJZGVudChpZGVudFN0cmluZyk7XG4gICAgICAgICAgICBpZiAoIXBrZy5wZWVyRGVwZW5kZW5jaWVzLmhhcyhpZGVudC5pZGVudEhhc2gpKSB7XG4gICAgICAgICAgICAgICAgcGtnLnBlZXJEZXBlbmRlbmNpZXMuc2V0KGlkZW50LmlkZW50SGFzaCwgc3RydWN0VXRpbHMubWFrZURlc2NyaXB0b3IoaWRlbnQsIGAqYCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIEF1dG9tYXRpY2FsbHkgYWRkIGNvcnJlc3BvbmRpbmcgYEB0eXBlc2Agb3B0aW9uYWwgcGVlciBkZXBlbmRlbmNpZXNcbiAgICAgICAgZm9yIChjb25zdCBkZXNjcmlwdG9yIG9mIHBrZy5wZWVyRGVwZW5kZW5jaWVzLnZhbHVlcygpKSB7XG4gICAgICAgICAgICBpZiAoZGVzY3JpcHRvci5zY29wZSA9PT0gYHR5cGVzYClcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIGNvbnN0IHR5cGVzTmFtZSA9IGdldFR5cGVzTmFtZShkZXNjcmlwdG9yKTtcbiAgICAgICAgICAgIGNvbnN0IHR5cGVzSWRlbnQgPSBzdHJ1Y3RVdGlscy5tYWtlSWRlbnQoYHR5cGVzYCwgdHlwZXNOYW1lKTtcbiAgICAgICAgICAgIGNvbnN0IHN0cmluZ2lmaWVkVHlwZXNJZGVudCA9IHN0cnVjdFV0aWxzLnN0cmluZ2lmeUlkZW50KHR5cGVzSWRlbnQpO1xuICAgICAgICAgICAgaWYgKHBrZy5wZWVyRGVwZW5kZW5jaWVzLmhhcyh0eXBlc0lkZW50LmlkZW50SGFzaCkgfHwgcGtnLnBlZXJEZXBlbmRlbmNpZXNNZXRhLmhhcyhzdHJpbmdpZmllZFR5cGVzSWRlbnQpKVxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgcGtnLnBlZXJEZXBlbmRlbmNpZXMuc2V0KHR5cGVzSWRlbnQuaWRlbnRIYXNoLCBzdHJ1Y3RVdGlscy5tYWtlRGVzY3JpcHRvcih0eXBlc0lkZW50LCBgKmApKTtcbiAgICAgICAgICAgIHBrZy5wZWVyRGVwZW5kZW5jaWVzTWV0YS5zZXQoc3RyaW5naWZpZWRUeXBlc0lkZW50LCB7XG4gICAgICAgICAgICAgICAgb3B0aW9uYWw6IHRydWUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICAvLyBXZSBzb3J0IHRoZSBkZXBlbmRlbmNpZXMgc28gdGhhdCBmdXJ0aGVyIGl0ZXJhdGlvbnMgYWx3YXlzIG9jY3VyIGluIHRoZVxuICAgICAgICAvLyBzYW1lIG9yZGVyLCByZWdhcmRsZXNzIGhvdyB0aGUgdmFyaW91cyByZWdpc3RyaWVzIGZvcm1hdHRlZCB0aGVpciBvdXRwdXRcbiAgICAgICAgcGtnLmRlcGVuZGVuY2llcyA9IG5ldyBNYXAobWlzY1V0aWxzLnNvcnRNYXAocGtnLmRlcGVuZGVuY2llcywgKFssIGRlc2NyaXB0b3JdKSA9PiBzdHJ1Y3RVdGlscy5zdHJpbmdpZnlEZXNjcmlwdG9yKGRlc2NyaXB0b3IpKSk7XG4gICAgICAgIHBrZy5wZWVyRGVwZW5kZW5jaWVzID0gbmV3IE1hcChtaXNjVXRpbHMuc29ydE1hcChwa2cucGVlckRlcGVuZGVuY2llcywgKFssIGRlc2NyaXB0b3JdKSA9PiBzdHJ1Y3RVdGlscy5zdHJpbmdpZnlEZXNjcmlwdG9yKGRlc2NyaXB0b3IpKSk7XG4gICAgICAgIHJldHVybiBwa2c7XG4gICAgfVxuICAgIGdldExpbWl0KGtleSkge1xuICAgICAgICByZXR1cm4gbWlzY1V0aWxzLmdldEZhY3RvcnlXaXRoRGVmYXVsdCh0aGlzLmxpbWl0cywga2V5LCAoKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gKDAsIHBfbGltaXRfMS5kZWZhdWx0KSh0aGlzLmdldChrZXkpKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGFzeW5jIHRyaWdnZXJIb29rKGdldCwgLi4uYXJncykge1xuICAgICAgICBmb3IgKGNvbnN0IHBsdWdpbiBvZiB0aGlzLnBsdWdpbnMudmFsdWVzKCkpIHtcbiAgICAgICAgICAgIGNvbnN0IGhvb2tzID0gcGx1Z2luLmhvb2tzO1xuICAgICAgICAgICAgaWYgKCFob29rcylcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIGNvbnN0IGhvb2sgPSBnZXQoaG9va3MpO1xuICAgICAgICAgICAgaWYgKCFob29rKVxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgYXdhaXQgaG9vayguLi5hcmdzKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBhc3luYyB0cmlnZ2VyTXVsdGlwbGVIb29rcyhnZXQsIGFyZ3NMaXN0KSB7XG4gICAgICAgIGZvciAoY29uc3QgYXJncyBvZiBhcmdzTGlzdCkge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy50cmlnZ2VySG9vayhnZXQsIC4uLmFyZ3MpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGFzeW5jIHJlZHVjZUhvb2soZ2V0LCBpbml0aWFsVmFsdWUsIC4uLmFyZ3MpIHtcbiAgICAgICAgbGV0IHZhbHVlID0gaW5pdGlhbFZhbHVlO1xuICAgICAgICBmb3IgKGNvbnN0IHBsdWdpbiBvZiB0aGlzLnBsdWdpbnMudmFsdWVzKCkpIHtcbiAgICAgICAgICAgIGNvbnN0IGhvb2tzID0gcGx1Z2luLmhvb2tzO1xuICAgICAgICAgICAgaWYgKCFob29rcylcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIGNvbnN0IGhvb2sgPSBnZXQoaG9va3MpO1xuICAgICAgICAgICAgaWYgKCFob29rKVxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgdmFsdWUgPSBhd2FpdCBob29rKHZhbHVlLCAuLi5hcmdzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICAgIGFzeW5jIGZpcnN0SG9vayhnZXQsIC4uLmFyZ3MpIHtcbiAgICAgICAgZm9yIChjb25zdCBwbHVnaW4gb2YgdGhpcy5wbHVnaW5zLnZhbHVlcygpKSB7XG4gICAgICAgICAgICBjb25zdCBob29rcyA9IHBsdWdpbi5ob29rcztcbiAgICAgICAgICAgIGlmICghaG9va3MpXG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICBjb25zdCBob29rID0gZ2V0KGhvb2tzKTtcbiAgICAgICAgICAgIGlmICghaG9vaylcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIGNvbnN0IHJldCA9IGF3YWl0IGhvb2soLi4uYXJncyk7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHJldCAhPT0gYHVuZGVmaW5lZGApIHtcbiAgICAgICAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgICAgICAgICAgICAgcmV0dXJuIHJldDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG59XG5leHBvcnRzLkNvbmZpZ3VyYXRpb24gPSBDb25maWd1cmF0aW9uO1xuQ29uZmlndXJhdGlvbi5kZWxldGVQcm9wZXJ0eSA9IFN5bWJvbCgpO1xuQ29uZmlndXJhdGlvbi50ZWxlbWV0cnkgPSBudWxsO1xuIiwgIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5leGVjdnAgPSBleHBvcnRzLnBpcGV2cCA9IGV4cG9ydHMuRXhlY0Vycm9yID0gZXhwb3J0cy5QaXBlRXJyb3IgPSBleHBvcnRzLkVuZFN0cmF0ZWd5ID0gdm9pZCAwO1xuY29uc3QgdHNsaWJfMSA9IHJlcXVpcmUoXCJ0c2xpYlwiKTtcbmNvbnN0IGZzbGliXzEgPSByZXF1aXJlKFwiQHlhcm5wa2cvZnNsaWJcIik7XG5jb25zdCBjcm9zc19zcGF3bl8xID0gdHNsaWJfMS5fX2ltcG9ydERlZmF1bHQocmVxdWlyZShcImNyb3NzLXNwYXduXCIpKTtcbmNvbnN0IENvbmZpZ3VyYXRpb25fMSA9IHJlcXVpcmUoXCIuL0NvbmZpZ3VyYXRpb25cIik7XG5jb25zdCBNZXNzYWdlTmFtZV8xID0gcmVxdWlyZShcIi4vTWVzc2FnZU5hbWVcIik7XG5jb25zdCBSZXBvcnRfMSA9IHJlcXVpcmUoXCIuL1JlcG9ydFwiKTtcbmNvbnN0IGZvcm1hdFV0aWxzID0gdHNsaWJfMS5fX2ltcG9ydFN0YXIocmVxdWlyZShcIi4vZm9ybWF0VXRpbHNcIikpO1xudmFyIEVuZFN0cmF0ZWd5O1xuKGZ1bmN0aW9uIChFbmRTdHJhdGVneSkge1xuICAgIEVuZFN0cmF0ZWd5W0VuZFN0cmF0ZWd5W1wiTmV2ZXJcIl0gPSAwXSA9IFwiTmV2ZXJcIjtcbiAgICBFbmRTdHJhdGVneVtFbmRTdHJhdGVneVtcIkVycm9yQ29kZVwiXSA9IDFdID0gXCJFcnJvckNvZGVcIjtcbiAgICBFbmRTdHJhdGVneVtFbmRTdHJhdGVneVtcIkFsd2F5c1wiXSA9IDJdID0gXCJBbHdheXNcIjtcbn0pKEVuZFN0cmF0ZWd5ID0gZXhwb3J0cy5FbmRTdHJhdGVneSB8fCAoZXhwb3J0cy5FbmRTdHJhdGVneSA9IHt9KSk7XG5jbGFzcyBQaXBlRXJyb3IgZXh0ZW5kcyBSZXBvcnRfMS5SZXBvcnRFcnJvciB7XG4gICAgY29uc3RydWN0b3IoeyBmaWxlTmFtZSwgY29kZSwgc2lnbmFsIH0pIHtcbiAgICAgICAgLy8gSXQgZG9lc24ndCBtYXR0ZXIgd2hldGhlciB3ZSBjcmVhdGUgYSBuZXcgQ29uZmlndXJhdGlvbiBmcm9tIHRoZSBjd2Qgb3IgZnJvbSBhXG4gICAgICAgIC8vIHRlbXAgZGlyZWN0b3J5IHNpbmNlIGluIG5vbmUgb2YgdGhlc2UgY2FzZXMgdGhlIHVzZXIncyByYyB2YWx1ZXMgd2lsbCBiZSByZXNwZWN0ZWQuXG4gICAgICAgIC8vIFRPRE86IGZpbmQgYSB3YXkgdG8gcmVzcGVjdCB0aGVtXG4gICAgICAgIGNvbnN0IGNvbmZpZ3VyYXRpb24gPSBDb25maWd1cmF0aW9uXzEuQ29uZmlndXJhdGlvbi5jcmVhdGUoZnNsaWJfMS5wcGF0aC5jd2QoKSk7XG4gICAgICAgIGNvbnN0IHByZXR0eUZpbGVOYW1lID0gZm9ybWF0VXRpbHMucHJldHR5KGNvbmZpZ3VyYXRpb24sIGZpbGVOYW1lLCBmb3JtYXRVdGlscy5UeXBlLlBBVEgpO1xuICAgICAgICBzdXBlcihNZXNzYWdlTmFtZV8xLk1lc3NhZ2VOYW1lLkVYQ0VQVElPTiwgYENoaWxkICR7cHJldHR5RmlsZU5hbWV9IHJlcG9ydGVkIGFuIGVycm9yYCwgcmVwb3J0ID0+IHtcbiAgICAgICAgICAgIHJlcG9ydEV4aXRTdGF0dXMoY29kZSwgc2lnbmFsLCB7IGNvbmZpZ3VyYXRpb24sIHJlcG9ydCB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuY29kZSA9IGdldEV4aXRDb2RlKGNvZGUsIHNpZ25hbCk7XG4gICAgfVxufVxuZXhwb3J0cy5QaXBlRXJyb3IgPSBQaXBlRXJyb3I7XG5jbGFzcyBFeGVjRXJyb3IgZXh0ZW5kcyBQaXBlRXJyb3Ige1xuICAgIGNvbnN0cnVjdG9yKHsgZmlsZU5hbWUsIGNvZGUsIHNpZ25hbCwgc3Rkb3V0LCBzdGRlcnIgfSkge1xuICAgICAgICBzdXBlcih7IGZpbGVOYW1lLCBjb2RlLCBzaWduYWwgfSk7XG4gICAgICAgIHRoaXMuc3Rkb3V0ID0gc3Rkb3V0O1xuICAgICAgICB0aGlzLnN0ZGVyciA9IHN0ZGVycjtcbiAgICB9XG59XG5leHBvcnRzLkV4ZWNFcnJvciA9IEV4ZWNFcnJvcjtcbmZ1bmN0aW9uIGhhc0ZkKHN0cmVhbSkge1xuICAgIC8vIEB0cy1leHBlY3QtZXJyb3I6IE5vdCBzdXJlIGhvdyB0byB0eXBlY2hlY2sgdGhpcyBmaWVsZFxuICAgIHJldHVybiBzdHJlYW0gIT09IG51bGwgJiYgdHlwZW9mIHN0cmVhbS5mZCA9PT0gYG51bWJlcmA7XG59XG5jb25zdCBhY3RpdmVDaGlsZHJlbiA9IG5ldyBTZXQoKTtcbmZ1bmN0aW9uIHNpZ2ludEhhbmRsZXIoKSB7XG4gICAgLy8gV2UgZG9uJ3Qgd2FudCBTSUdJTlQgdG8ga2lsbCBvdXIgcHJvY2Vzczsgd2Ugd2FudCBpdCB0byBraWxsIHRoZVxuICAgIC8vIGlubmVybW9zdCBwcm9jZXNzLCB3aG9zZSBlbmQgd2lsbCBjYXVzZSBvdXIgb3duIHRvIGV4aXQuXG59XG5mdW5jdGlvbiBzaWd0ZXJtSGFuZGxlcigpIHtcbiAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIGFjdGl2ZUNoaWxkcmVuKSB7XG4gICAgICAgIGNoaWxkLmtpbGwoKTtcbiAgICB9XG59XG5hc3luYyBmdW5jdGlvbiBwaXBldnAoZmlsZU5hbWUsIGFyZ3MsIHsgY3dkLCBlbnYgPSBwcm9jZXNzLmVudiwgc3RyaWN0ID0gZmFsc2UsIHN0ZGluID0gbnVsbCwgc3Rkb3V0LCBzdGRlcnIsIGVuZCA9IEVuZFN0cmF0ZWd5LkFsd2F5cyB9KSB7XG4gICAgY29uc3Qgc3RkaW8gPSBbYHBpcGVgLCBgcGlwZWAsIGBwaXBlYF07XG4gICAgaWYgKHN0ZGluID09PSBudWxsKVxuICAgICAgICBzdGRpb1swXSA9IGBpZ25vcmVgO1xuICAgIGVsc2UgaWYgKGhhc0ZkKHN0ZGluKSlcbiAgICAgICAgc3RkaW9bMF0gPSBzdGRpbjtcbiAgICBpZiAoaGFzRmQoc3Rkb3V0KSlcbiAgICAgICAgc3RkaW9bMV0gPSBzdGRvdXQ7XG4gICAgaWYgKGhhc0ZkKHN0ZGVycikpXG4gICAgICAgIHN0ZGlvWzJdID0gc3RkZXJyO1xuICAgIGNvbnN0IGNoaWxkID0gKDAsIGNyb3NzX3NwYXduXzEuZGVmYXVsdCkoZmlsZU5hbWUsIGFyZ3MsIHtcbiAgICAgICAgY3dkOiBmc2xpYl8xLm5wYXRoLmZyb21Qb3J0YWJsZVBhdGgoY3dkKSxcbiAgICAgICAgZW52OiB7XG4gICAgICAgICAgICAuLi5lbnYsXG4gICAgICAgICAgICBQV0Q6IGZzbGliXzEubnBhdGguZnJvbVBvcnRhYmxlUGF0aChjd2QpLFxuICAgICAgICB9LFxuICAgICAgICBzdGRpbyxcbiAgICB9KTtcbiAgICBhY3RpdmVDaGlsZHJlbi5hZGQoY2hpbGQpO1xuICAgIGlmIChhY3RpdmVDaGlsZHJlbi5zaXplID09PSAxKSB7XG4gICAgICAgIHByb2Nlc3Mub24oYFNJR0lOVGAsIHNpZ2ludEhhbmRsZXIpO1xuICAgICAgICBwcm9jZXNzLm9uKGBTSUdURVJNYCwgc2lndGVybUhhbmRsZXIpO1xuICAgIH1cbiAgICBpZiAoIWhhc0ZkKHN0ZGluKSAmJiBzdGRpbiAhPT0gbnVsbClcbiAgICAgICAgc3RkaW4ucGlwZShjaGlsZC5zdGRpbik7XG4gICAgaWYgKCFoYXNGZChzdGRvdXQpKVxuICAgICAgICBjaGlsZC5zdGRvdXQucGlwZShzdGRvdXQsIHsgZW5kOiBmYWxzZSB9KTtcbiAgICBpZiAoIWhhc0ZkKHN0ZGVycikpXG4gICAgICAgIGNoaWxkLnN0ZGVyci5waXBlKHN0ZGVyciwgeyBlbmQ6IGZhbHNlIH0pO1xuICAgIGNvbnN0IGNsb3NlU3RyZWFtcyA9ICgpID0+IHtcbiAgICAgICAgZm9yIChjb25zdCBzdHJlYW0gb2YgbmV3IFNldChbc3Rkb3V0LCBzdGRlcnJdKSkge1xuICAgICAgICAgICAgaWYgKCFoYXNGZChzdHJlYW0pKSB7XG4gICAgICAgICAgICAgICAgc3RyZWFtLmVuZCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICBjaGlsZC5vbihgZXJyb3JgLCBlcnJvciA9PiB7XG4gICAgICAgICAgICBhY3RpdmVDaGlsZHJlbi5kZWxldGUoY2hpbGQpO1xuICAgICAgICAgICAgaWYgKGFjdGl2ZUNoaWxkcmVuLnNpemUgPT09IDApIHtcbiAgICAgICAgICAgICAgICBwcm9jZXNzLm9mZihgU0lHSU5UYCwgc2lnaW50SGFuZGxlcik7XG4gICAgICAgICAgICAgICAgcHJvY2Vzcy5vZmYoYFNJR1RFUk1gLCBzaWd0ZXJtSGFuZGxlcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZW5kID09PSBFbmRTdHJhdGVneS5BbHdheXMgfHwgZW5kID09PSBFbmRTdHJhdGVneS5FcnJvckNvZGUpXG4gICAgICAgICAgICAgICAgY2xvc2VTdHJlYW1zKCk7XG4gICAgICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgICB9KTtcbiAgICAgICAgY2hpbGQub24oYGNsb3NlYCwgKGNvZGUsIHNpZ25hbCkgPT4ge1xuICAgICAgICAgICAgYWN0aXZlQ2hpbGRyZW4uZGVsZXRlKGNoaWxkKTtcbiAgICAgICAgICAgIGlmIChhY3RpdmVDaGlsZHJlbi5zaXplID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcHJvY2Vzcy5vZmYoYFNJR0lOVGAsIHNpZ2ludEhhbmRsZXIpO1xuICAgICAgICAgICAgICAgIHByb2Nlc3Mub2ZmKGBTSUdURVJNYCwgc2lndGVybUhhbmRsZXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGVuZCA9PT0gRW5kU3RyYXRlZ3kuQWx3YXlzIHx8IChlbmQgPT09IEVuZFN0cmF0ZWd5LkVycm9yQ29kZSAmJiBjb2RlICE9PSAwKSlcbiAgICAgICAgICAgICAgICBjbG9zZVN0cmVhbXMoKTtcbiAgICAgICAgICAgIGlmIChjb2RlID09PSAwIHx8ICFzdHJpY3QpIHtcbiAgICAgICAgICAgICAgICByZXNvbHZlKHsgY29kZTogZ2V0RXhpdENvZGUoY29kZSwgc2lnbmFsKSB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHJlamVjdChuZXcgUGlwZUVycm9yKHsgZmlsZU5hbWUsIGNvZGUsIHNpZ25hbCB9KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0pO1xufVxuZXhwb3J0cy5waXBldnAgPSBwaXBldnA7XG5hc3luYyBmdW5jdGlvbiBleGVjdnAoZmlsZU5hbWUsIGFyZ3MsIHsgY3dkLCBlbnYgPSBwcm9jZXNzLmVudiwgZW5jb2RpbmcgPSBgdXRmOGAsIHN0cmljdCA9IGZhbHNlIH0pIHtcbiAgICBjb25zdCBzdGRpbyA9IFtgaWdub3JlYCwgYHBpcGVgLCBgcGlwZWBdO1xuICAgIGNvbnN0IHN0ZG91dENodW5rcyA9IFtdO1xuICAgIGNvbnN0IHN0ZGVyckNodW5rcyA9IFtdO1xuICAgIGNvbnN0IG5hdGl2ZUN3ZCA9IGZzbGliXzEubnBhdGguZnJvbVBvcnRhYmxlUGF0aChjd2QpO1xuICAgIGlmICh0eXBlb2YgZW52LlBXRCAhPT0gYHVuZGVmaW5lZGApXG4gICAgICAgIGVudiA9IHsgLi4uZW52LCBQV0Q6IG5hdGl2ZUN3ZCB9O1xuICAgIGNvbnN0IHN1YnByb2Nlc3MgPSAoMCwgY3Jvc3Nfc3Bhd25fMS5kZWZhdWx0KShmaWxlTmFtZSwgYXJncywge1xuICAgICAgICBjd2Q6IG5hdGl2ZUN3ZCxcbiAgICAgICAgZW52LFxuICAgICAgICBzdGRpbyxcbiAgICB9KTtcbiAgICBzdWJwcm9jZXNzLnN0ZG91dC5vbihgZGF0YWAsIChjaHVuaykgPT4ge1xuICAgICAgICBzdGRvdXRDaHVua3MucHVzaChjaHVuayk7XG4gICAgfSk7XG4gICAgc3VicHJvY2Vzcy5zdGRlcnIub24oYGRhdGFgLCAoY2h1bmspID0+IHtcbiAgICAgICAgc3RkZXJyQ2h1bmtzLnB1c2goY2h1bmspO1xuICAgIH0pO1xuICAgIHJldHVybiBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIHN1YnByb2Nlc3Mub24oYGVycm9yYCwgZXJyID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNvbmZpZ3VyYXRpb24gPSBDb25maWd1cmF0aW9uXzEuQ29uZmlndXJhdGlvbi5jcmVhdGUoY3dkKTtcbiAgICAgICAgICAgIGNvbnN0IHByZXR0eUZpbGVOYW1lID0gZm9ybWF0VXRpbHMucHJldHR5KGNvbmZpZ3VyYXRpb24sIGZpbGVOYW1lLCBmb3JtYXRVdGlscy5UeXBlLlBBVEgpO1xuICAgICAgICAgICAgcmVqZWN0KG5ldyBSZXBvcnRfMS5SZXBvcnRFcnJvcihNZXNzYWdlTmFtZV8xLk1lc3NhZ2VOYW1lLkVYQ0VQVElPTiwgYFByb2Nlc3MgJHtwcmV0dHlGaWxlTmFtZX0gZmFpbGVkIHRvIHNwYXduYCwgcmVwb3J0ID0+IHtcbiAgICAgICAgICAgICAgICByZXBvcnQucmVwb3J0RXJyb3IoTWVzc2FnZU5hbWVfMS5NZXNzYWdlTmFtZS5FWENFUFRJT04sIGAgICR7Zm9ybWF0VXRpbHMucHJldHR5RmllbGQoY29uZmlndXJhdGlvbiwge1xuICAgICAgICAgICAgICAgICAgICBsYWJlbDogYFRocm93biBFcnJvcmAsXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmb3JtYXRVdGlscy50dXBsZShmb3JtYXRVdGlscy5UeXBlLk5PX0hJTlQsIGVyci5tZXNzYWdlKSxcbiAgICAgICAgICAgICAgICB9KX1gKTtcbiAgICAgICAgICAgIH0pKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHN1YnByb2Nlc3Mub24oYGNsb3NlYCwgKGNvZGUsIHNpZ25hbCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc3Rkb3V0ID0gZW5jb2RpbmcgPT09IGBidWZmZXJgXG4gICAgICAgICAgICAgICAgPyBCdWZmZXIuY29uY2F0KHN0ZG91dENodW5rcylcbiAgICAgICAgICAgICAgICA6IEJ1ZmZlci5jb25jYXQoc3Rkb3V0Q2h1bmtzKS50b1N0cmluZyhlbmNvZGluZyk7XG4gICAgICAgICAgICBjb25zdCBzdGRlcnIgPSBlbmNvZGluZyA9PT0gYGJ1ZmZlcmBcbiAgICAgICAgICAgICAgICA/IEJ1ZmZlci5jb25jYXQoc3RkZXJyQ2h1bmtzKVxuICAgICAgICAgICAgICAgIDogQnVmZmVyLmNvbmNhdChzdGRlcnJDaHVua3MpLnRvU3RyaW5nKGVuY29kaW5nKTtcbiAgICAgICAgICAgIGlmIChjb2RlID09PSAwIHx8ICFzdHJpY3QpIHtcbiAgICAgICAgICAgICAgICByZXNvbHZlKHtcbiAgICAgICAgICAgICAgICAgICAgY29kZTogZ2V0RXhpdENvZGUoY29kZSwgc2lnbmFsKSwgc3Rkb3V0LCBzdGRlcnIsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICByZWplY3QobmV3IEV4ZWNFcnJvcih7IGZpbGVOYW1lLCBjb2RlLCBzaWduYWwsIHN0ZG91dCwgc3RkZXJyIH0pKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSk7XG59XG5leHBvcnRzLmV4ZWN2cCA9IGV4ZWN2cDtcbmNvbnN0IHNpZ25hbFRvQ29kZU1hcCA9IG5ldyBNYXAoW1xuICAgIFtgU0lHSU5UYCwgMl0sXG4gICAgW2BTSUdRVUlUYCwgM10sXG4gICAgW2BTSUdLSUxMYCwgOV0sXG4gICAgW2BTSUdURVJNYCwgMTVdLCAvLyBkZWZhdWx0IHNpZ25hbCBmb3Iga2lsbFxuXSk7XG5mdW5jdGlvbiBnZXRFeGl0Q29kZShjb2RlLCBzaWduYWwpIHtcbiAgICBjb25zdCBzaWduYWxDb2RlID0gc2lnbmFsVG9Db2RlTWFwLmdldChzaWduYWwpO1xuICAgIGlmICh0eXBlb2Ygc2lnbmFsQ29kZSAhPT0gYHVuZGVmaW5lZGApIHtcbiAgICAgICAgcmV0dXJuIDEyOCArIHNpZ25hbENvZGU7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICByZXR1cm4gY29kZSAhPT0gbnVsbCAmJiBjb2RlICE9PSB2b2lkIDAgPyBjb2RlIDogMTtcbiAgICB9XG59XG5mdW5jdGlvbiByZXBvcnRFeGl0U3RhdHVzKGNvZGUsIHNpZ25hbCwgeyBjb25maWd1cmF0aW9uLCByZXBvcnQgfSkge1xuICAgIHJlcG9ydC5yZXBvcnRFcnJvcihNZXNzYWdlTmFtZV8xLk1lc3NhZ2VOYW1lLkVYQ0VQVElPTiwgYCAgJHtmb3JtYXRVdGlscy5wcmV0dHlGaWVsZChjb25maWd1cmF0aW9uLCBjb2RlICE9PSBudWxsID8ge1xuICAgICAgICBsYWJlbDogYEV4aXQgQ29kZWAsXG4gICAgICAgIHZhbHVlOiBmb3JtYXRVdGlscy50dXBsZShmb3JtYXRVdGlscy5UeXBlLk5VTUJFUiwgY29kZSksXG4gICAgfSA6IHtcbiAgICAgICAgbGFiZWw6IGBFeGl0IFNpZ25hbGAsXG4gICAgICAgIHZhbHVlOiBmb3JtYXRVdGlscy50dXBsZShmb3JtYXRVdGlscy5UeXBlLkNPREUsIHNpZ25hbCksXG4gICAgfSl9YCk7XG59XG4iLCAiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5jb25zdCBmc2xpYl8xID0gcmVxdWlyZShcIkB5YXJucGtnL2ZzbGliXCIpO1xuY29uc3QgY2xpcGFuaW9uXzEgPSByZXF1aXJlKFwiY2xpcGFuaW9uXCIpO1xuY29uc3QgaW5kZXhfMSA9IHJlcXVpcmUoXCIuLi9pbmRleFwiKTtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBhcmNhL25vLWRlZmF1bHQtZXhwb3J0XG5jbGFzcyBFbnRyeUNvbW1hbmQgZXh0ZW5kcyBjbGlwYW5pb25fMS5Db21tYW5kIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoLi4uYXJndW1lbnRzKTtcbiAgICAgICAgdGhpcy5jd2QgPSBjbGlwYW5pb25fMS5PcHRpb24uU3RyaW5nKGAtLWN3ZGAsIHByb2Nlc3MuY3dkKCksIHtcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBgVGhlIGRpcmVjdG9yeSB0byBydW4gdGhlIGNvbW1hbmQgaW5gLFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5jb21tYW5kTmFtZSA9IGNsaXBhbmlvbl8xLk9wdGlvbi5TdHJpbmcoKTtcbiAgICAgICAgdGhpcy5hcmdzID0gY2xpcGFuaW9uXzEuT3B0aW9uLlByb3h5KCk7XG4gICAgfVxuICAgIGFzeW5jIGV4ZWN1dGUoKSB7XG4gICAgICAgIC8vIFdlIGFzc3VtZSB0aGF0IGFsbCBhcmd1bWVudHMgaGF2ZSB0byBiZSBwcm9jZXNzZWQgYnkgb3VyIHNoZWxsLFxuICAgICAgICAvLyBub3QgYnkgdGhlIHVzZXIncyBzaGVsbFxuICAgICAgICBjb25zdCBjb21tYW5kID0gdGhpcy5hcmdzLmxlbmd0aCA+IDBcbiAgICAgICAgICAgID8gYCR7dGhpcy5jb21tYW5kTmFtZX0gJHt0aGlzLmFyZ3Muam9pbihgIGApfWBcbiAgICAgICAgICAgIDogdGhpcy5jb21tYW5kTmFtZTtcbiAgICAgICAgcmV0dXJuIGF3YWl0ICgwLCBpbmRleF8xLmV4ZWN1dGUpKGNvbW1hbmQsIFtdLCB7XG4gICAgICAgICAgICBjd2Q6IGZzbGliXzEubnBhdGgudG9Qb3J0YWJsZVBhdGgodGhpcy5jd2QpLFxuICAgICAgICAgICAgc3RkaW46IHRoaXMuY29udGV4dC5zdGRpbixcbiAgICAgICAgICAgIHN0ZG91dDogdGhpcy5jb250ZXh0LnN0ZG91dCxcbiAgICAgICAgICAgIHN0ZGVycjogdGhpcy5jb250ZXh0LnN0ZGVycixcbiAgICAgICAgfSk7XG4gICAgfVxufVxuZXhwb3J0cy5kZWZhdWx0ID0gRW50cnlDb21tYW5kO1xuRW50cnlDb21tYW5kLnVzYWdlID0ge1xuICAgIGRlc2NyaXB0aW9uOiBgcnVuIGEgY29tbWFuZCB1c2luZyB5YXJuJ3MgcG9ydGFibGUgc2hlbGxgLFxuICAgIGRldGFpbHM6IGBcbiAgICAgIFRoaXMgY29tbWFuZCB3aWxsIHJ1biBhIGNvbW1hbmQgdXNpbmcgWWFybidzIHBvcnRhYmxlIHNoZWxsLlxuXG4gICAgICBNYWtlIHN1cmUgdG8gZXNjYXBlIGdsb2IgcGF0dGVybnMsIHJlZGlyZWN0aW9ucywgYW5kIG90aGVyIGZlYXR1cmVzIHRoYXQgbWlnaHQgYmUgZXhwYW5kZWQgYnkgeW91ciBvd24gc2hlbGwuXG5cbiAgICAgIE5vdGU6IFRvIGVzY2FwZSBzb21ldGhpbmcgZnJvbSBZYXJuJ3Mgc2hlbGwsIHlvdSBtaWdodCBoYXZlIHRvIGVzY2FwZSBpdCB0d2ljZSwgdGhlIGZpcnN0IHRpbWUgZnJvbSB5b3VyIG93biBzaGVsbC5cblxuICAgICAgTm90ZTogRG9uJ3QgdXNlIHRoaXMgY29tbWFuZCBpbiBZYXJuIHNjcmlwdHMsIGFzIFlhcm4ncyBzaGVsbCBpcyBhdXRvbWF0aWNhbGx5IHVzZWQuXG5cbiAgICAgIEZvciBhIGxpc3Qgb2YgZmVhdHVyZXMsIHZpc2l0OiBodHRwczovL2dpdGh1Yi5jb20veWFybnBrZy9iZXJyeS9ibG9iL21hc3Rlci9wYWNrYWdlcy95YXJucGtnLXNoZWxsL1JFQURNRS5tZC5cbiAgICBgLFxuICAgIGV4YW1wbGVzOiBbW1xuICAgICAgICAgICAgYFJ1biBhIHNpbXBsZSBjb21tYW5kYCxcbiAgICAgICAgICAgIGAkMCBlY2hvIEhlbGxvYCxcbiAgICAgICAgXSwgW1xuICAgICAgICAgICAgYFJ1biBhIGNvbW1hbmQgd2l0aCBhIGdsb2IgcGF0dGVybmAsXG4gICAgICAgICAgICBgJDAgZWNobyAnKi5qcydgLFxuICAgICAgICBdLCBbXG4gICAgICAgICAgICBgUnVuIGEgY29tbWFuZCB3aXRoIGEgcmVkaXJlY3Rpb25gLFxuICAgICAgICAgICAgYCQwIGVjaG8gSGVsbG8gV29ybGQgJz4nIGhlbGxvLnR4dGAsXG4gICAgICAgIF0sIFtcbiAgICAgICAgICAgIGBSdW4gYSBjb21tYW5kIHdpdGggYW4gZXNjYXBlZCBnbG9iIHBhdHRlcm4gKFRoZSBkb3VibGUgZXNjYXBlIGlzIG5lZWRlZCBpbiBVbml4IHNoZWxscylgLFxuICAgICAgICAgICAgYCQwIGVjaG8gJ1wiKi5qc1wiJ2AsXG4gICAgICAgIF0sIFtcbiAgICAgICAgICAgIGBSdW4gYSBjb21tYW5kIHdpdGggYSB2YXJpYWJsZSAoRG91YmxlIHF1b3RlcyBhcmUgbmVlZGVkIGluIFVuaXggc2hlbGxzLCB0byBwcmV2ZW50IHRoZW0gZnJvbSBleHBhbmRpbmcgdGhlIHZhcmlhYmxlKWAsXG4gICAgICAgICAgICBgJDAgXCJHUkVFVElORz1IZWxsbyBlY2hvICRHUkVFVElORyBXb3JsZFwiYCxcbiAgICAgICAgXV0sXG59O1xuIiwgIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5TaGVsbEVycm9yID0gdm9pZCAwO1xuLyoqXG4gKiBBIHJlY292ZXJhYmxlIHNoZWxsIGVycm9yLlxuICovXG5jbGFzcyBTaGVsbEVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICAgIGNvbnN0cnVjdG9yKG1lc3NhZ2UpIHtcbiAgICAgICAgc3VwZXIobWVzc2FnZSk7XG4gICAgICAgIHRoaXMubmFtZSA9IGBTaGVsbEVycm9yYDtcbiAgICB9XG59XG5leHBvcnRzLlNoZWxsRXJyb3IgPSBTaGVsbEVycm9yO1xuIiwgIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5pc0JyYWNlRXhwYW5zaW9uID0gZXhwb3J0cy5tYXRjaCA9IGV4cG9ydHMuaXNHbG9iUGF0dGVybiA9IGV4cG9ydHMuZmFzdEdsb2JPcHRpb25zID0gZXhwb3J0cy5taWNyb21hdGNoT3B0aW9ucyA9IHZvaWQgMDtcbmNvbnN0IHRzbGliXzEgPSByZXF1aXJlKFwidHNsaWJcIik7XG5jb25zdCBmc2xpYl8xID0gcmVxdWlyZShcIkB5YXJucGtnL2ZzbGliXCIpO1xuY29uc3QgZmFzdF9nbG9iXzEgPSB0c2xpYl8xLl9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiZmFzdC1nbG9iXCIpKTtcbmNvbnN0IGZzXzEgPSB0c2xpYl8xLl9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiZnNcIikpO1xuY29uc3QgbWljcm9tYXRjaF8xID0gdHNsaWJfMS5fX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIm1pY3JvbWF0Y2hcIikpO1xuZXhwb3J0cy5taWNyb21hdGNoT3B0aW9ucyA9IHtcbiAgICAvLyBUaGlzIGlzIHJlcXVpcmVkIGJlY2F1c2Ugd2UgZG9uJ3Qgd2FudCBcIikvKlwiIHRvIGJlIGEgdmFsaWQgc2hlbGwgZ2xvYiBwYXR0ZXJuLlxuICAgIHN0cmljdEJyYWNrZXRzOiB0cnVlLFxufTtcbmV4cG9ydHMuZmFzdEdsb2JPcHRpb25zID0ge1xuICAgIG9ubHlEaXJlY3RvcmllczogZmFsc2UsXG4gICAgb25seUZpbGVzOiBmYWxzZSxcbn07XG4vKipcbiAqIERlY2lkZXMgd2hldGhlciBhIHN0cmluZyBpcyBhIGdsb2IgcGF0dGVybiwgdXNpbmcgbWljcm9tYXRjaC5cbiAqXG4gKiBSZXF1aXJlZCBiZWNhdXNlIGBmYXN0R2xvYi5pc0R5bmFtaWNQYXR0ZXJuYCBkb2Vzbid0IGhhdmUgdGhlIGBzdHJpY3RCcmFja2V0c2Agb3B0aW9uLlxuICovXG5mdW5jdGlvbiBpc0dsb2JQYXR0ZXJuKHBhdHRlcm4pIHtcbiAgICAvLyBUaGUgc2Nhbm5lciBleHRyYWN0cyBnbG9icyBmcm9tIGEgcGF0dGVybiwgYnV0IGRvZXNuJ3QgdGhyb3cgZXJyb3JzXG4gICAgaWYgKCFtaWNyb21hdGNoXzEuZGVmYXVsdC5zY2FuKHBhdHRlcm4sIGV4cG9ydHMubWljcm9tYXRjaE9wdGlvbnMpLmlzR2xvYilcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIC8vIFRoZSBwYXJzZXIgaXMgdGhlIG9uZSB0aGF0IHRocm93cyBlcnJvcnNcbiAgICB0cnkge1xuICAgICAgICBtaWNyb21hdGNoXzEuZGVmYXVsdC5wYXJzZShwYXR0ZXJuLCBleHBvcnRzLm1pY3JvbWF0Y2hPcHRpb25zKTtcbiAgICB9XG4gICAgY2F0Y2gge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xufVxuZXhwb3J0cy5pc0dsb2JQYXR0ZXJuID0gaXNHbG9iUGF0dGVybjtcbmZ1bmN0aW9uIG1hdGNoKHBhdHRlcm4sIHsgY3dkLCBiYXNlRnMgfSkge1xuICAgIHJldHVybiAoMCwgZmFzdF9nbG9iXzEuZGVmYXVsdCkocGF0dGVybiwge1xuICAgICAgICAuLi5leHBvcnRzLmZhc3RHbG9iT3B0aW9ucyxcbiAgICAgICAgY3dkOiBmc2xpYl8xLm5wYXRoLmZyb21Qb3J0YWJsZVBhdGgoY3dkKSxcbiAgICAgICAgZnM6ICgwLCBmc2xpYl8xLmV4dGVuZEZzKShmc18xLmRlZmF1bHQsIG5ldyBmc2xpYl8xLlBvc2l4RlMoYmFzZUZzKSksXG4gICAgfSk7XG59XG5leHBvcnRzLm1hdGNoID0gbWF0Y2g7XG5mdW5jdGlvbiBpc0JyYWNlRXhwYW5zaW9uKHBhdHRlcm4pIHtcbiAgICByZXR1cm4gbWljcm9tYXRjaF8xLmRlZmF1bHQuc2NhbihwYXR0ZXJuLCBleHBvcnRzLm1pY3JvbWF0Y2hPcHRpb25zKS5pc0JyYWNlO1xufVxuZXhwb3J0cy5pc0JyYWNlRXhwYW5zaW9uID0gaXNCcmFjZUV4cGFuc2lvbjtcbiIsICJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuY3JlYXRlT3V0cHV0U3RyZWFtc1dpdGhQcmVmaXggPSBleHBvcnRzLnN0YXJ0ID0gZXhwb3J0cy5IYW5kbGUgPSBleHBvcnRzLlByb3RlY3RlZFN0cmVhbSA9IGV4cG9ydHMubWFrZUJ1aWx0aW4gPSBleHBvcnRzLm1ha2VQcm9jZXNzID0gZXhwb3J0cy5QaXBlID0gdm9pZCAwO1xuY29uc3QgdHNsaWJfMSA9IHJlcXVpcmUoXCJ0c2xpYlwiKTtcbmNvbnN0IGNyb3NzX3NwYXduXzEgPSB0c2xpYl8xLl9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiY3Jvc3Mtc3Bhd25cIikpO1xuY29uc3Qgc3RyZWFtXzEgPSByZXF1aXJlKFwic3RyZWFtXCIpO1xuY29uc3Qgc3RyaW5nX2RlY29kZXJfMSA9IHJlcXVpcmUoXCJzdHJpbmdfZGVjb2RlclwiKTtcbnZhciBQaXBlO1xuKGZ1bmN0aW9uIChQaXBlKSB7XG4gICAgUGlwZVtQaXBlW1wiU1RESU5cIl0gPSAwXSA9IFwiU1RESU5cIjtcbiAgICBQaXBlW1BpcGVbXCJTVERPVVRcIl0gPSAxXSA9IFwiU1RET1VUXCI7XG4gICAgUGlwZVtQaXBlW1wiU1RERVJSXCJdID0gMl0gPSBcIlNUREVSUlwiO1xufSkoUGlwZSA9IGV4cG9ydHMuUGlwZSB8fCAoZXhwb3J0cy5QaXBlID0ge30pKTtcbmNvbnN0IGFjdGl2ZUNoaWxkcmVuID0gbmV3IFNldCgpO1xuZnVuY3Rpb24gc2lnaW50SGFuZGxlcigpIHtcbiAgICAvLyBXZSBkb24ndCB3YW50IFNJR0lOVCB0byBraWxsIG91ciBwcm9jZXNzOyB3ZSB3YW50IGl0IHRvIGtpbGwgdGhlXG4gICAgLy8gaW5uZXJtb3N0IHByb2Nlc3MsIHdob3NlIGVuZCB3aWxsIGNhdXNlIG91ciBvd24gdG8gZXhpdC5cbn1cbmZ1bmN0aW9uIHNpZ3Rlcm1IYW5kbGVyKCkge1xuICAgIGZvciAoY29uc3QgY2hpbGQgb2YgYWN0aXZlQ2hpbGRyZW4pIHtcbiAgICAgICAgY2hpbGQua2lsbCgpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIG1ha2VQcm9jZXNzKG5hbWUsIGFyZ3MsIG9wdHMsIHNwYXduT3B0cykge1xuICAgIHJldHVybiAoc3RkaW8pID0+IHtcbiAgICAgICAgY29uc3Qgc3RkaW4gPSBzdGRpb1swXSBpbnN0YW5jZW9mIHN0cmVhbV8xLlRyYW5zZm9ybVxuICAgICAgICAgICAgPyBgcGlwZWBcbiAgICAgICAgICAgIDogc3RkaW9bMF07XG4gICAgICAgIGNvbnN0IHN0ZG91dCA9IHN0ZGlvWzFdIGluc3RhbmNlb2Ygc3RyZWFtXzEuVHJhbnNmb3JtXG4gICAgICAgICAgICA/IGBwaXBlYFxuICAgICAgICAgICAgOiBzdGRpb1sxXTtcbiAgICAgICAgY29uc3Qgc3RkZXJyID0gc3RkaW9bMl0gaW5zdGFuY2VvZiBzdHJlYW1fMS5UcmFuc2Zvcm1cbiAgICAgICAgICAgID8gYHBpcGVgXG4gICAgICAgICAgICA6IHN0ZGlvWzJdO1xuICAgICAgICBjb25zdCBjaGlsZCA9ICgwLCBjcm9zc19zcGF3bl8xLmRlZmF1bHQpKG5hbWUsIGFyZ3MsIHsgLi4uc3Bhd25PcHRzLCBzdGRpbzogW1xuICAgICAgICAgICAgICAgIHN0ZGluLFxuICAgICAgICAgICAgICAgIHN0ZG91dCxcbiAgICAgICAgICAgICAgICBzdGRlcnIsXG4gICAgICAgICAgICBdIH0pO1xuICAgICAgICBhY3RpdmVDaGlsZHJlbi5hZGQoY2hpbGQpO1xuICAgICAgICBpZiAoYWN0aXZlQ2hpbGRyZW4uc2l6ZSA9PT0gMSkge1xuICAgICAgICAgICAgcHJvY2Vzcy5vbihgU0lHSU5UYCwgc2lnaW50SGFuZGxlcik7XG4gICAgICAgICAgICBwcm9jZXNzLm9uKGBTSUdURVJNYCwgc2lndGVybUhhbmRsZXIpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzdGRpb1swXSBpbnN0YW5jZW9mIHN0cmVhbV8xLlRyYW5zZm9ybSlcbiAgICAgICAgICAgIHN0ZGlvWzBdLnBpcGUoY2hpbGQuc3RkaW4pO1xuICAgICAgICBpZiAoc3RkaW9bMV0gaW5zdGFuY2VvZiBzdHJlYW1fMS5UcmFuc2Zvcm0pXG4gICAgICAgICAgICBjaGlsZC5zdGRvdXQucGlwZShzdGRpb1sxXSwgeyBlbmQ6IGZhbHNlIH0pO1xuICAgICAgICBpZiAoc3RkaW9bMl0gaW5zdGFuY2VvZiBzdHJlYW1fMS5UcmFuc2Zvcm0pXG4gICAgICAgICAgICBjaGlsZC5zdGRlcnIucGlwZShzdGRpb1syXSwgeyBlbmQ6IGZhbHNlIH0pO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgc3RkaW46IGNoaWxkLnN0ZGluLFxuICAgICAgICAgICAgcHJvbWlzZTogbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XG4gICAgICAgICAgICAgICAgY2hpbGQub24oYGVycm9yYCwgZXJyb3IgPT4ge1xuICAgICAgICAgICAgICAgICAgICBhY3RpdmVDaGlsZHJlbi5kZWxldGUoY2hpbGQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoYWN0aXZlQ2hpbGRyZW4uc2l6ZSA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzcy5vZmYoYFNJR0lOVGAsIHNpZ2ludEhhbmRsZXIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzcy5vZmYoYFNJR1RFUk1gLCBzaWd0ZXJtSGFuZGxlcik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGVycm9yLmNvZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgYEVOT0VOVGA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRpb1syXS53cml0ZShgY29tbWFuZCBub3QgZm91bmQ6ICR7bmFtZX1cXG5gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgxMjcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgYEVBQ0NFU2A6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRpb1syXS53cml0ZShgcGVybWlzc2lvbiBkZW5pZWQ6ICR7bmFtZX1cXG5gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgxMjgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRpb1syXS53cml0ZShgdW5jYXVnaHQgZXJyb3I6ICR7ZXJyb3IubWVzc2FnZX1cXG5gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBjaGlsZC5vbihgY2xvc2VgLCBjb2RlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgYWN0aXZlQ2hpbGRyZW4uZGVsZXRlKGNoaWxkKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGFjdGl2ZUNoaWxkcmVuLnNpemUgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3Mub2ZmKGBTSUdJTlRgLCBzaWdpbnRIYW5kbGVyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3Mub2ZmKGBTSUdURVJNYCwgc2lndGVybUhhbmRsZXIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChjb2RlICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKGNvZGUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgxMjkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgfTtcbiAgICB9O1xufVxuZXhwb3J0cy5tYWtlUHJvY2VzcyA9IG1ha2VQcm9jZXNzO1xuZnVuY3Rpb24gbWFrZUJ1aWx0aW4oYnVpbHRpbikge1xuICAgIHJldHVybiAoc3RkaW8pID0+IHtcbiAgICAgICAgY29uc3Qgc3RkaW4gPSBzdGRpb1swXSA9PT0gYHBpcGVgXG4gICAgICAgICAgICA/IG5ldyBzdHJlYW1fMS5QYXNzVGhyb3VnaCgpXG4gICAgICAgICAgICA6IHN0ZGlvWzBdO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgc3RkaW4sXG4gICAgICAgICAgICBwcm9taXNlOiBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IGJ1aWx0aW4oe1xuICAgICAgICAgICAgICAgIHN0ZGluLFxuICAgICAgICAgICAgICAgIHN0ZG91dDogc3RkaW9bMV0sXG4gICAgICAgICAgICAgICAgc3RkZXJyOiBzdGRpb1syXSxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgfTtcbiAgICB9O1xufVxuZXhwb3J0cy5tYWtlQnVpbHRpbiA9IG1ha2VCdWlsdGluO1xuY2xhc3MgUHJvdGVjdGVkU3RyZWFtIHtcbiAgICBjb25zdHJ1Y3RvcihzdHJlYW0pIHtcbiAgICAgICAgdGhpcy5zdHJlYW0gPSBzdHJlYW07XG4gICAgfVxuICAgIGNsb3NlKCkge1xuICAgICAgICAvLyBJZ25vcmUgY2xvc2UgcmVxdWVzdFxuICAgIH1cbiAgICBnZXQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0cmVhbTtcbiAgICB9XG59XG5leHBvcnRzLlByb3RlY3RlZFN0cmVhbSA9IFByb3RlY3RlZFN0cmVhbTtcbmNsYXNzIFBpcGVTdHJlYW0ge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLnN0cmVhbSA9IG51bGw7XG4gICAgfVxuICAgIGNsb3NlKCkge1xuICAgICAgICBpZiAodGhpcy5zdHJlYW0gPT09IG51bGwpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQXNzZXJ0aW9uIGZhaWxlZDogTm8gc3RyZWFtIGF0dGFjaGVkYCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnN0cmVhbS5lbmQoKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBhdHRhY2goc3RyZWFtKSB7XG4gICAgICAgIHRoaXMuc3RyZWFtID0gc3RyZWFtO1xuICAgIH1cbiAgICBnZXQoKSB7XG4gICAgICAgIGlmICh0aGlzLnN0cmVhbSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBBc3NlcnRpb24gZmFpbGVkOiBObyBzdHJlYW0gYXR0YWNoZWRgKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnN0cmVhbTtcbiAgICAgICAgfVxuICAgIH1cbn1cbmNsYXNzIEhhbmRsZSB7XG4gICAgc3RhdGljIHN0YXJ0KGltcGxlbWVudGF0aW9uLCB7IHN0ZGluLCBzdGRvdXQsIHN0ZGVyciB9KSB7XG4gICAgICAgIGNvbnN0IGNoYWluID0gbmV3IEhhbmRsZShudWxsLCBpbXBsZW1lbnRhdGlvbik7XG4gICAgICAgIGNoYWluLnN0ZGluID0gc3RkaW47XG4gICAgICAgIGNoYWluLnN0ZG91dCA9IHN0ZG91dDtcbiAgICAgICAgY2hhaW4uc3RkZXJyID0gc3RkZXJyO1xuICAgICAgICByZXR1cm4gY2hhaW47XG4gICAgfVxuICAgIGNvbnN0cnVjdG9yKGFuY2VzdG9yLCBpbXBsZW1lbnRhdGlvbikge1xuICAgICAgICB0aGlzLnN0ZGluID0gbnVsbDtcbiAgICAgICAgdGhpcy5zdGRvdXQgPSBudWxsO1xuICAgICAgICB0aGlzLnN0ZGVyciA9IG51bGw7XG4gICAgICAgIHRoaXMucGlwZSA9IG51bGw7XG4gICAgICAgIHRoaXMuYW5jZXN0b3IgPSBhbmNlc3RvcjtcbiAgICAgICAgdGhpcy5pbXBsZW1lbnRhdGlvbiA9IGltcGxlbWVudGF0aW9uO1xuICAgIH1cbiAgICBwaXBlVG8oaW1wbGVtZW50YXRpb24sIHNvdXJjZSA9IFBpcGUuU1RET1VUKSB7XG4gICAgICAgIGNvbnN0IG5leHQgPSBuZXcgSGFuZGxlKHRoaXMsIGltcGxlbWVudGF0aW9uKTtcbiAgICAgICAgY29uc3QgcGlwZSA9IG5ldyBQaXBlU3RyZWFtKCk7XG4gICAgICAgIG5leHQucGlwZSA9IHBpcGU7XG4gICAgICAgIG5leHQuc3Rkb3V0ID0gdGhpcy5zdGRvdXQ7XG4gICAgICAgIG5leHQuc3RkZXJyID0gdGhpcy5zdGRlcnI7XG4gICAgICAgIGlmICgoc291cmNlICYgUGlwZS5TVERPVVQpID09PSBQaXBlLlNURE9VVClcbiAgICAgICAgICAgIHRoaXMuc3Rkb3V0ID0gcGlwZTtcbiAgICAgICAgZWxzZSBpZiAodGhpcy5hbmNlc3RvciAhPT0gbnVsbClcbiAgICAgICAgICAgIHRoaXMuc3RkZXJyID0gdGhpcy5hbmNlc3Rvci5zdGRvdXQ7XG4gICAgICAgIGlmICgoc291cmNlICYgUGlwZS5TVERFUlIpID09PSBQaXBlLlNUREVSUilcbiAgICAgICAgICAgIHRoaXMuc3RkZXJyID0gcGlwZTtcbiAgICAgICAgZWxzZSBpZiAodGhpcy5hbmNlc3RvciAhPT0gbnVsbClcbiAgICAgICAgICAgIHRoaXMuc3RkZXJyID0gdGhpcy5hbmNlc3Rvci5zdGRlcnI7XG4gICAgICAgIHJldHVybiBuZXh0O1xuICAgIH1cbiAgICBhc3luYyBleGVjKCkge1xuICAgICAgICBjb25zdCBzdGRpbyA9IFtcbiAgICAgICAgICAgIGBpZ25vcmVgLFxuICAgICAgICAgICAgYGlnbm9yZWAsXG4gICAgICAgICAgICBgaWdub3JlYCxcbiAgICAgICAgXTtcbiAgICAgICAgaWYgKHRoaXMucGlwZSkge1xuICAgICAgICAgICAgc3RkaW9bMF0gPSBgcGlwZWA7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBpZiAodGhpcy5zdGRpbiA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQXNzZXJ0aW9uIGZhaWxlZDogTm8gaW5wdXQgc3RyZWFtIHJlZ2lzdGVyZWRgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHN0ZGlvWzBdID0gdGhpcy5zdGRpbi5nZXQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBsZXQgc3Rkb3V0TG9jaztcbiAgICAgICAgaWYgKHRoaXMuc3Rkb3V0ID09PSBudWxsKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEFzc2VydGlvbiBmYWlsZWQ6IE5vIG91dHB1dCBzdHJlYW0gcmVnaXN0ZXJlZGApO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgc3Rkb3V0TG9jayA9IHRoaXMuc3Rkb3V0O1xuICAgICAgICAgICAgc3RkaW9bMV0gPSBzdGRvdXRMb2NrLmdldCgpO1xuICAgICAgICB9XG4gICAgICAgIGxldCBzdGRlcnJMb2NrO1xuICAgICAgICBpZiAodGhpcy5zdGRlcnIgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQXNzZXJ0aW9uIGZhaWxlZDogTm8gZXJyb3Igc3RyZWFtIHJlZ2lzdGVyZWRgKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHN0ZGVyckxvY2sgPSB0aGlzLnN0ZGVycjtcbiAgICAgICAgICAgIHN0ZGlvWzJdID0gc3RkZXJyTG9jay5nZXQoKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjaGlsZCA9IHRoaXMuaW1wbGVtZW50YXRpb24oc3RkaW8pO1xuICAgICAgICBpZiAodGhpcy5waXBlKVxuICAgICAgICAgICAgdGhpcy5waXBlLmF0dGFjaChjaGlsZC5zdGRpbik7XG4gICAgICAgIHJldHVybiBhd2FpdCBjaGlsZC5wcm9taXNlLnRoZW4oY29kZSA9PiB7XG4gICAgICAgICAgICBzdGRvdXRMb2NrLmNsb3NlKCk7XG4gICAgICAgICAgICBzdGRlcnJMb2NrLmNsb3NlKCk7XG4gICAgICAgICAgICByZXR1cm4gY29kZTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGFzeW5jIHJ1bigpIHtcbiAgICAgICAgY29uc3QgcHJvbWlzZXMgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaGFuZGxlID0gdGhpczsgaGFuZGxlOyBoYW5kbGUgPSBoYW5kbGUuYW5jZXN0b3IpXG4gICAgICAgICAgICBwcm9taXNlcy5wdXNoKGhhbmRsZS5leGVjKCkpO1xuICAgICAgICBjb25zdCBleGl0Q29kZXMgPSBhd2FpdCBQcm9taXNlLmFsbChwcm9taXNlcyk7XG4gICAgICAgIHJldHVybiBleGl0Q29kZXNbMF07XG4gICAgfVxufVxuZXhwb3J0cy5IYW5kbGUgPSBIYW5kbGU7XG5mdW5jdGlvbiBzdGFydChwLCBvcHRzKSB7XG4gICAgcmV0dXJuIEhhbmRsZS5zdGFydChwLCBvcHRzKTtcbn1cbmV4cG9ydHMuc3RhcnQgPSBzdGFydDtcbmZ1bmN0aW9uIGNyZWF0ZVN0cmVhbVJlcG9ydGVyKHJlcG9ydEZuLCBwcmVmaXggPSBudWxsKSB7XG4gICAgY29uc3Qgc3RyZWFtID0gbmV3IHN0cmVhbV8xLlBhc3NUaHJvdWdoKCk7XG4gICAgY29uc3QgZGVjb2RlciA9IG5ldyBzdHJpbmdfZGVjb2Rlcl8xLlN0cmluZ0RlY29kZXIoKTtcbiAgICBsZXQgYnVmZmVyID0gYGA7XG4gICAgc3RyZWFtLm9uKGBkYXRhYCwgY2h1bmsgPT4ge1xuICAgICAgICBsZXQgY2h1bmtTdHIgPSBkZWNvZGVyLndyaXRlKGNodW5rKTtcbiAgICAgICAgbGV0IGxpbmVJbmRleDtcbiAgICAgICAgZG8ge1xuICAgICAgICAgICAgbGluZUluZGV4ID0gY2h1bmtTdHIuaW5kZXhPZihgXFxuYCk7XG4gICAgICAgICAgICBpZiAobGluZUluZGV4ICE9PSAtMSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGxpbmUgPSBidWZmZXIgKyBjaHVua1N0ci5zdWJzdHJpbmcoMCwgbGluZUluZGV4KTtcbiAgICAgICAgICAgICAgICBjaHVua1N0ciA9IGNodW5rU3RyLnN1YnN0cmluZyhsaW5lSW5kZXggKyAxKTtcbiAgICAgICAgICAgICAgICBidWZmZXIgPSBgYDtcbiAgICAgICAgICAgICAgICBpZiAocHJlZml4ICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlcG9ydEZuKGAke3ByZWZpeH0gJHtsaW5lfWApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVwb3J0Rm4obGluZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9IHdoaWxlIChsaW5lSW5kZXggIT09IC0xKTtcbiAgICAgICAgYnVmZmVyICs9IGNodW5rU3RyO1xuICAgIH0pO1xuICAgIHN0cmVhbS5vbihgZW5kYCwgKCkgPT4ge1xuICAgICAgICBjb25zdCBsYXN0ID0gZGVjb2Rlci5lbmQoKTtcbiAgICAgICAgaWYgKGxhc3QgIT09IGBgKSB7XG4gICAgICAgICAgICBpZiAocHJlZml4ICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcmVwb3J0Rm4oYCR7cHJlZml4fSAke2xhc3R9YCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXBvcnRGbihsYXN0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBzdHJlYW07XG59XG5mdW5jdGlvbiBjcmVhdGVPdXRwdXRTdHJlYW1zV2l0aFByZWZpeChzdGF0ZSwgeyBwcmVmaXggfSkge1xuICAgIHJldHVybiB7XG4gICAgICAgIHN0ZG91dDogY3JlYXRlU3RyZWFtUmVwb3J0ZXIodGV4dCA9PiBzdGF0ZS5zdGRvdXQud3JpdGUoYCR7dGV4dH1cXG5gKSwgc3RhdGUuc3Rkb3V0LmlzVFRZID8gcHJlZml4IDogbnVsbCksXG4gICAgICAgIHN0ZGVycjogY3JlYXRlU3RyZWFtUmVwb3J0ZXIodGV4dCA9PiBzdGF0ZS5zdGRlcnIud3JpdGUoYCR7dGV4dH1cXG5gKSwgc3RhdGUuc3RkZXJyLmlzVFRZID8gcHJlZml4IDogbnVsbCksXG4gICAgfTtcbn1cbmV4cG9ydHMuY3JlYXRlT3V0cHV0U3RyZWFtc1dpdGhQcmVmaXggPSBjcmVhdGVPdXRwdXRTdHJlYW1zV2l0aFByZWZpeDtcbiIsICJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuZXhlY3V0ZSA9IGV4cG9ydHMuZ2xvYlV0aWxzID0gZXhwb3J0cy5TaGVsbEVycm9yID0gZXhwb3J0cy5FbnRyeUNvbW1hbmQgPSB2b2lkIDA7XG5jb25zdCB0c2xpYl8xID0gcmVxdWlyZShcInRzbGliXCIpO1xuY29uc3QgZnNsaWJfMSA9IHJlcXVpcmUoXCJAeWFybnBrZy9mc2xpYlwiKTtcbmNvbnN0IHBhcnNlcnNfMSA9IHJlcXVpcmUoXCJAeWFybnBrZy9wYXJzZXJzXCIpO1xuY29uc3QgY2hhbGtfMSA9IHRzbGliXzEuX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJjaGFsa1wiKSk7XG5jb25zdCBvc18xID0gcmVxdWlyZShcIm9zXCIpO1xuY29uc3Qgc3RyZWFtXzEgPSByZXF1aXJlKFwic3RyZWFtXCIpO1xuY29uc3QgdXRpbF8xID0gcmVxdWlyZShcInV0aWxcIik7XG5jb25zdCBlbnRyeV8xID0gdHNsaWJfMS5fX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vY29tbWFuZHMvZW50cnlcIikpO1xuZXhwb3J0cy5FbnRyeUNvbW1hbmQgPSBlbnRyeV8xLmRlZmF1bHQ7XG5jb25zdCBlcnJvcnNfMSA9IHJlcXVpcmUoXCIuL2Vycm9yc1wiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlNoZWxsRXJyb3JcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGVycm9yc18xLlNoZWxsRXJyb3I7IH0gfSk7XG5jb25zdCBnbG9iVXRpbHMgPSB0c2xpYl8xLl9faW1wb3J0U3RhcihyZXF1aXJlKFwiLi9nbG9iVXRpbHNcIikpO1xuZXhwb3J0cy5nbG9iVXRpbHMgPSBnbG9iVXRpbHM7XG5jb25zdCBwaXBlXzEgPSByZXF1aXJlKFwiLi9waXBlXCIpO1xuY29uc3QgcGlwZV8yID0gcmVxdWlyZShcIi4vcGlwZVwiKTtcbmNvbnN0IHNldFRpbWVvdXRQcm9taXNlID0gKDAsIHV0aWxfMS5wcm9taXNpZnkpKHNldFRpbWVvdXQpO1xudmFyIFN0cmVhbVR5cGU7XG4oZnVuY3Rpb24gKFN0cmVhbVR5cGUpIHtcbiAgICBTdHJlYW1UeXBlW1N0cmVhbVR5cGVbXCJSZWFkYWJsZVwiXSA9IDFdID0gXCJSZWFkYWJsZVwiO1xuICAgIFN0cmVhbVR5cGVbU3RyZWFtVHlwZVtcIldyaXRhYmxlXCJdID0gMl0gPSBcIldyaXRhYmxlXCI7XG59KShTdHJlYW1UeXBlIHx8IChTdHJlYW1UeXBlID0ge30pKTtcbmZ1bmN0aW9uIGdldEZpbGVEZXNjcmlwdG9yU3RyZWFtKGZkLCB0eXBlLCBzdGF0ZSkge1xuICAgIGNvbnN0IHN0cmVhbSA9IG5ldyBzdHJlYW1fMS5QYXNzVGhyb3VnaCh7IGF1dG9EZXN0cm95OiB0cnVlIH0pO1xuICAgIHN3aXRjaCAoZmQpIHtcbiAgICAgICAgY2FzZSBwaXBlXzIuUGlwZS5TVERJTjpcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBpZiAoKHR5cGUgJiBTdHJlYW1UeXBlLlJlYWRhYmxlKSA9PT0gU3RyZWFtVHlwZS5SZWFkYWJsZSlcbiAgICAgICAgICAgICAgICAgICAgc3RhdGUuc3RkaW4ucGlwZShzdHJlYW0sIHsgZW5kOiBmYWxzZSB9KTtcbiAgICAgICAgICAgICAgICBpZiAoKHR5cGUgJiBTdHJlYW1UeXBlLldyaXRhYmxlKSA9PT0gU3RyZWFtVHlwZS5Xcml0YWJsZSAmJiBzdGF0ZS5zdGRpbiBpbnN0YW5jZW9mIHN0cmVhbV8xLldyaXRhYmxlKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0cmVhbS5waXBlKHN0YXRlLnN0ZGluLCB7IGVuZDogZmFsc2UgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgcGlwZV8yLlBpcGUuU1RET1VUOlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlmICgodHlwZSAmIFN0cmVhbVR5cGUuUmVhZGFibGUpID09PSBTdHJlYW1UeXBlLlJlYWRhYmxlKVxuICAgICAgICAgICAgICAgICAgICBzdGF0ZS5zdGRvdXQucGlwZShzdHJlYW0sIHsgZW5kOiBmYWxzZSB9KTtcbiAgICAgICAgICAgICAgICBpZiAoKHR5cGUgJiBTdHJlYW1UeXBlLldyaXRhYmxlKSA9PT0gU3RyZWFtVHlwZS5Xcml0YWJsZSkge1xuICAgICAgICAgICAgICAgICAgICBzdHJlYW0ucGlwZShzdGF0ZS5zdGRvdXQsIHsgZW5kOiBmYWxzZSB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBwaXBlXzIuUGlwZS5TVERFUlI6XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgaWYgKCh0eXBlICYgU3RyZWFtVHlwZS5SZWFkYWJsZSkgPT09IFN0cmVhbVR5cGUuUmVhZGFibGUpXG4gICAgICAgICAgICAgICAgICAgIHN0YXRlLnN0ZGVyci5waXBlKHN0cmVhbSwgeyBlbmQ6IGZhbHNlIH0pO1xuICAgICAgICAgICAgICAgIGlmICgodHlwZSAmIFN0cmVhbVR5cGUuV3JpdGFibGUpID09PSBTdHJlYW1UeXBlLldyaXRhYmxlKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0cmVhbS5waXBlKHN0YXRlLnN0ZGVyciwgeyBlbmQ6IGZhbHNlIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgZXJyb3JzXzEuU2hlbGxFcnJvcihgQmFkIGZpbGUgZGVzY3JpcHRvcjogXCIke2ZkfVwiYCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHN0cmVhbTtcbn1cbmZ1bmN0aW9uIGNsb25lU3RhdGUoc3RhdGUsIG1lcmdlV2l0aCA9IHt9KSB7XG4gICAgY29uc3QgbmV3U3RhdGUgPSB7IC4uLnN0YXRlLCAuLi5tZXJnZVdpdGggfTtcbiAgICBuZXdTdGF0ZS5lbnZpcm9ubWVudCA9IHsgLi4uc3RhdGUuZW52aXJvbm1lbnQsIC4uLm1lcmdlV2l0aC5lbnZpcm9ubWVudCB9O1xuICAgIG5ld1N0YXRlLnZhcmlhYmxlcyA9IHsgLi4uc3RhdGUudmFyaWFibGVzLCAuLi5tZXJnZVdpdGgudmFyaWFibGVzIH07XG4gICAgcmV0dXJuIG5ld1N0YXRlO1xufVxuY29uc3QgQlVJTFRJTlMgPSBuZXcgTWFwKFtcbiAgICBbYGNkYCwgYXN5bmMgKFt0YXJnZXQgPSAoMCwgb3NfMS5ob21lZGlyKSgpLCAuLi5yZXN0XSwgb3B0cywgc3RhdGUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJlc29sdmVkVGFyZ2V0ID0gZnNsaWJfMS5wcGF0aC5yZXNvbHZlKHN0YXRlLmN3ZCwgZnNsaWJfMS5ucGF0aC50b1BvcnRhYmxlUGF0aCh0YXJnZXQpKTtcbiAgICAgICAgICAgIGNvbnN0IHN0YXQgPSBhd2FpdCBvcHRzLmJhc2VGcy5zdGF0UHJvbWlzZShyZXNvbHZlZFRhcmdldCkuY2F0Y2goZXJyb3IgPT4ge1xuICAgICAgICAgICAgICAgIHRocm93IGVycm9yLmNvZGUgPT09IGBFTk9FTlRgXG4gICAgICAgICAgICAgICAgICAgID8gbmV3IGVycm9yc18xLlNoZWxsRXJyb3IoYGNkOiBubyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5OiAke3RhcmdldH1gKVxuICAgICAgICAgICAgICAgICAgICA6IGVycm9yO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAoIXN0YXQuaXNEaXJlY3RvcnkoKSlcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgZXJyb3JzXzEuU2hlbGxFcnJvcihgY2Q6IG5vdCBhIGRpcmVjdG9yeTogJHt0YXJnZXR9YCk7XG4gICAgICAgICAgICBzdGF0ZS5jd2QgPSByZXNvbHZlZFRhcmdldDtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XSxcbiAgICBbYHB3ZGAsIGFzeW5jIChhcmdzLCBvcHRzLCBzdGF0ZSkgPT4ge1xuICAgICAgICAgICAgc3RhdGUuc3Rkb3V0LndyaXRlKGAke2ZzbGliXzEubnBhdGguZnJvbVBvcnRhYmxlUGF0aChzdGF0ZS5jd2QpfVxcbmApO1xuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH1dLFxuICAgIFtgOmAsIGFzeW5jIChhcmdzLCBvcHRzLCBzdGF0ZSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH1dLFxuICAgIFtgdHJ1ZWAsIGFzeW5jIChhcmdzLCBvcHRzLCBzdGF0ZSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH1dLFxuICAgIFtgZmFsc2VgLCBhc3luYyAoYXJncywgb3B0cywgc3RhdGUpID0+IHtcbiAgICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICB9XSxcbiAgICBbYGV4aXRgLCBhc3luYyAoW2NvZGUsIC4uLnJlc3RdLCBvcHRzLCBzdGF0ZSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHN0YXRlLmV4aXRDb2RlID0gcGFyc2VJbnQoY29kZSAhPT0gbnVsbCAmJiBjb2RlICE9PSB2b2lkIDAgPyBjb2RlIDogc3RhdGUudmFyaWFibGVzW2A/YF0sIDEwKTtcbiAgICAgICAgfV0sXG4gICAgW2BlY2hvYCwgYXN5bmMgKGFyZ3MsIG9wdHMsIHN0YXRlKSA9PiB7XG4gICAgICAgICAgICBzdGF0ZS5zdGRvdXQud3JpdGUoYCR7YXJncy5qb2luKGAgYCl9XFxuYCk7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfV0sXG4gICAgW2BzbGVlcGAsIGFzeW5jIChbdGltZV0sIG9wdHMsIHN0YXRlKSA9PiB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHRpbWUgPT09IGB1bmRlZmluZWRgKVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBlcnJvcnNfMS5TaGVsbEVycm9yKGBzbGVlcDogbWlzc2luZyBvcGVyYW5kYCk7XG4gICAgICAgICAgICAvLyBUT0RPOiBtYWtlIGl0IHN1cHBvcnQgdW5pdCBzdWZmaXhlc1xuICAgICAgICAgICAgY29uc3Qgc2Vjb25kcyA9IE51bWJlcih0aW1lKTtcbiAgICAgICAgICAgIGlmIChOdW1iZXIuaXNOYU4oc2Vjb25kcykpXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IGVycm9yc18xLlNoZWxsRXJyb3IoYHNsZWVwOiBpbnZhbGlkIHRpbWUgaW50ZXJ2YWwgJyR7dGltZX0nYCk7XG4gICAgICAgICAgICByZXR1cm4gYXdhaXQgc2V0VGltZW91dFByb21pc2UoMTAwMCAqIHNlY29uZHMsIDApO1xuICAgICAgICB9XSxcbiAgICBbYF9feXNoX3J1bl9wcm9jZWR1cmVgLCBhc3luYyAoYXJncywgb3B0cywgc3RhdGUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHByb2NlZHVyZSA9IHN0YXRlLnByb2NlZHVyZXNbYXJnc1swXV07XG4gICAgICAgICAgICBjb25zdCBleGl0Q29kZSA9IGF3YWl0ICgwLCBwaXBlXzIuc3RhcnQpKHByb2NlZHVyZSwge1xuICAgICAgICAgICAgICAgIHN0ZGluOiBuZXcgcGlwZV8yLlByb3RlY3RlZFN0cmVhbShzdGF0ZS5zdGRpbiksXG4gICAgICAgICAgICAgICAgc3Rkb3V0OiBuZXcgcGlwZV8yLlByb3RlY3RlZFN0cmVhbShzdGF0ZS5zdGRvdXQpLFxuICAgICAgICAgICAgICAgIHN0ZGVycjogbmV3IHBpcGVfMi5Qcm90ZWN0ZWRTdHJlYW0oc3RhdGUuc3RkZXJyKSxcbiAgICAgICAgICAgIH0pLnJ1bigpO1xuICAgICAgICAgICAgcmV0dXJuIGV4aXRDb2RlO1xuICAgICAgICB9XSxcbiAgICBbYF9feXNoX3NldF9yZWRpcmVjdHNgLCBhc3luYyAoYXJncywgb3B0cywgc3RhdGUpID0+IHtcbiAgICAgICAgICAgIGxldCBzdGRpbiA9IHN0YXRlLnN0ZGluO1xuICAgICAgICAgICAgbGV0IHN0ZG91dCA9IHN0YXRlLnN0ZG91dDtcbiAgICAgICAgICAgIGxldCBzdGRlcnIgPSBzdGF0ZS5zdGRlcnI7XG4gICAgICAgICAgICBjb25zdCBpbnB1dHMgPSBbXTtcbiAgICAgICAgICAgIGNvbnN0IG91dHB1dHMgPSBbXTtcbiAgICAgICAgICAgIGNvbnN0IGVycm9ycyA9IFtdO1xuICAgICAgICAgICAgbGV0IHQgPSAwO1xuICAgICAgICAgICAgd2hpbGUgKGFyZ3NbdF0gIT09IGAtLWApIHtcbiAgICAgICAgICAgICAgICBjb25zdCBrZXkgPSBhcmdzW3QrK107XG4gICAgICAgICAgICAgICAgY29uc3QgeyB0eXBlLCBmZCB9ID0gSlNPTi5wYXJzZShrZXkpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHB1c2hJbnB1dCA9IChyZWFkYWJsZUZhY3RvcnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChmZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBudWxsOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRzLnB1c2gocmVhZGFibGVGYWN0b3J5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5zdXBwb3J0ZWQgZmlsZSBkZXNjcmlwdG9yOiBcIiR7ZmR9XCJgKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgY29uc3QgcHVzaE91dHB1dCA9ICh3cml0YWJsZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGZkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIG51bGw6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRzLnB1c2god3JpdGFibGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycy5wdXNoKHdyaXRhYmxlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5zdXBwb3J0ZWQgZmlsZSBkZXNjcmlwdG9yOiBcIiR7ZmR9XCJgKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgY29uc3QgY291bnQgPSBOdW1iZXIoYXJnc1t0KytdKTtcbiAgICAgICAgICAgICAgICBjb25zdCBsYXN0ID0gdCArIGNvdW50O1xuICAgICAgICAgICAgICAgIGZvciAobGV0IHUgPSB0OyB1IDwgbGFzdDsgKyt0LCArK3UpIHtcbiAgICAgICAgICAgICAgICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIGA8YDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2hJbnB1dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3B0cy5iYXNlRnMuY3JlYXRlUmVhZFN0cmVhbShmc2xpYl8xLnBwYXRoLnJlc29sdmUoc3RhdGUuY3dkLCBmc2xpYl8xLm5wYXRoLnRvUG9ydGFibGVQYXRoKGFyZ3NbdV0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgYDw8PGA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoSW5wdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW5wdXQgPSBuZXcgc3RyZWFtXzEuUGFzc1Rocm91Z2goKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3MubmV4dFRpY2soKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0LndyaXRlKGAke2FyZ3NbdV19XFxuYCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXQuZW5kKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpbnB1dDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBgPCZgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaElucHV0KCgpID0+IGdldEZpbGVEZXNjcmlwdG9yU3RyZWFtKE51bWJlcihhcmdzW3VdKSwgU3RyZWFtVHlwZS5SZWFkYWJsZSwgc3RhdGUpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIGA+YDpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgYD4+YDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG91dHB1dFBhdGggPSBmc2xpYl8xLnBwYXRoLnJlc29sdmUoc3RhdGUuY3dkLCBmc2xpYl8xLm5wYXRoLnRvUG9ydGFibGVQYXRoKGFyZ3NbdV0pKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG91dHB1dFBhdGggPT09IGAvZGV2L251bGxgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoT3V0cHV0KG5ldyBzdHJlYW1fMS5Xcml0YWJsZSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0b0Rlc3Ryb3k6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1pdENsb3NlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlKGNodW5rLCBlbmNvZGluZywgY2FsbGJhY2spIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SW1tZWRpYXRlKGNhbGxiYWNrKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaE91dHB1dChvcHRzLmJhc2VGcy5jcmVhdGVXcml0ZVN0cmVhbShvdXRwdXRQYXRoLCB0eXBlID09PSBgPj5gID8geyBmbGFnczogYGFgIH0gOiB1bmRlZmluZWQpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgYD4mYDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2hPdXRwdXQoZ2V0RmlsZURlc2NyaXB0b3JTdHJlYW0oTnVtYmVyKGFyZ3NbdV0pLCBTdHJlYW1UeXBlLldyaXRhYmxlLCBzdGF0ZSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEFzc2VydGlvbiBmYWlsZWQ6IFVuc3VwcG9ydGVkIHJlZGlyZWN0aW9uIHR5cGU6IFwiJHt0eXBlfVwiYCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaW5wdXRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwaXBlID0gbmV3IHN0cmVhbV8xLlBhc3NUaHJvdWdoKCk7XG4gICAgICAgICAgICAgICAgc3RkaW4gPSBwaXBlO1xuICAgICAgICAgICAgICAgIGNvbnN0IGJpbmRJbnB1dCA9IChuKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChuID09PSBpbnB1dHMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwaXBlLmVuZCgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW5wdXQgPSBpbnB1dHNbbl0oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0LnBpcGUocGlwZSwgeyBlbmQ6IGZhbHNlIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXQub24oYGVuZGAsICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaW5kSW5wdXQobiArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGJpbmRJbnB1dCgwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChvdXRwdXRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwaXBlID0gbmV3IHN0cmVhbV8xLlBhc3NUaHJvdWdoKCk7XG4gICAgICAgICAgICAgICAgc3Rkb3V0ID0gcGlwZTtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IG91dHB1dCBvZiBvdXRwdXRzKSB7XG4gICAgICAgICAgICAgICAgICAgIHBpcGUucGlwZShvdXRwdXQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChlcnJvcnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBpcGUgPSBuZXcgc3RyZWFtXzEuUGFzc1Rocm91Z2goKTtcbiAgICAgICAgICAgICAgICBzdGRlcnIgPSBwaXBlO1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgZXJyb3Igb2YgZXJyb3JzKSB7XG4gICAgICAgICAgICAgICAgICAgIHBpcGUucGlwZShlcnJvcik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgZXhpdENvZGUgPSBhd2FpdCAoMCwgcGlwZV8yLnN0YXJ0KShtYWtlQ29tbWFuZEFjdGlvbihhcmdzLnNsaWNlKHQgKyAxKSwgb3B0cywgc3RhdGUpLCB7XG4gICAgICAgICAgICAgICAgc3RkaW46IG5ldyBwaXBlXzIuUHJvdGVjdGVkU3RyZWFtKHN0ZGluKSxcbiAgICAgICAgICAgICAgICBzdGRvdXQ6IG5ldyBwaXBlXzIuUHJvdGVjdGVkU3RyZWFtKHN0ZG91dCksXG4gICAgICAgICAgICAgICAgc3RkZXJyOiBuZXcgcGlwZV8yLlByb3RlY3RlZFN0cmVhbShzdGRlcnIpLFxuICAgICAgICAgICAgfSkucnVuKCk7XG4gICAgICAgICAgICAvLyBDbG9zZSBhbGwgdGhlIG91dHB1dHMgKHNpbmNlIHRoZSBzaGVsbCBuZXZlciBjbG9zZXMgdGhlIG91dHB1dCBzdHJlYW0pXG4gICAgICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChvdXRwdXRzLm1hcChvdXRwdXQgPT4ge1xuICAgICAgICAgICAgICAgIC8vIFdhaXQgdW50aWwgdGhlIG91dHB1dCBnb3QgZmx1c2hlZCB0byB0aGUgZGlza1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIG91dHB1dC5vbihgZXJyb3JgLCBlcnJvciA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgb3V0cHV0Lm9uKGBjbG9zZWAsICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIG91dHB1dC5lbmQoKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgIC8vIENsb3NlIGFsbCB0aGUgZXJyb3JzIChzaW5jZSB0aGUgc2hlbGwgbmV2ZXIgY2xvc2VzIHRoZSBlcnJvciBzdHJlYW0pXG4gICAgICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChlcnJvcnMubWFwKGVyciA9PiB7XG4gICAgICAgICAgICAgICAgLy8gV2FpdCB1bnRpbCB0aGUgZXJyb3IgZ290IGZsdXNoZWQgdG8gdGhlIGRpc2tcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBlcnIub24oYGVycm9yYCwgZXJyb3IgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIGVyci5vbihgY2xvc2VgLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBlcnIuZW5kKCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICByZXR1cm4gZXhpdENvZGU7XG4gICAgICAgIH1dLFxuXSk7XG5hc3luYyBmdW5jdGlvbiBleGVjdXRlQnVmZmVyZWRTdWJzaGVsbChhc3QsIG9wdHMsIHN0YXRlKSB7XG4gICAgY29uc3QgY2h1bmtzID0gW107XG4gICAgY29uc3Qgc3Rkb3V0ID0gbmV3IHN0cmVhbV8xLlBhc3NUaHJvdWdoKCk7XG4gICAgc3Rkb3V0Lm9uKGBkYXRhYCwgY2h1bmsgPT4gY2h1bmtzLnB1c2goY2h1bmspKTtcbiAgICBhd2FpdCBleGVjdXRlU2hlbGxMaW5lKGFzdCwgb3B0cywgY2xvbmVTdGF0ZShzdGF0ZSwgeyBzdGRvdXQgfSkpO1xuICAgIHJldHVybiBCdWZmZXIuY29uY2F0KGNodW5rcykudG9TdHJpbmcoKS5yZXBsYWNlKC9bXFxyXFxuXSskLywgYGApO1xufVxuYXN5bmMgZnVuY3Rpb24gYXBwbHlFbnZWYXJpYWJsZXMoZW52aXJvbm1lbnRTZWdtZW50cywgb3B0cywgc3RhdGUpIHtcbiAgICBjb25zdCBlbnZQcm9taXNlcyA9IGVudmlyb25tZW50U2VnbWVudHMubWFwKGFzeW5jIChlbnZTZWdtZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IGludGVycG9sYXRlZEFyZ3MgPSBhd2FpdCBpbnRlcnBvbGF0ZUFyZ3VtZW50cyhlbnZTZWdtZW50LmFyZ3MsIG9wdHMsIHN0YXRlKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG5hbWU6IGVudlNlZ21lbnQubmFtZSxcbiAgICAgICAgICAgIHZhbHVlOiBpbnRlcnBvbGF0ZWRBcmdzLmpvaW4oYCBgKSxcbiAgICAgICAgfTtcbiAgICB9KTtcbiAgICBjb25zdCBpbnRlcnBvbGF0ZWRFbnZzID0gYXdhaXQgUHJvbWlzZS5hbGwoZW52UHJvbWlzZXMpO1xuICAgIHJldHVybiBpbnRlcnBvbGF0ZWRFbnZzLnJlZHVjZSgoZW52cywgZW52KSA9PiB7XG4gICAgICAgIGVudnNbZW52Lm5hbWVdID0gZW52LnZhbHVlO1xuICAgICAgICByZXR1cm4gZW52cztcbiAgICB9LCB7fSk7XG59XG5mdW5jdGlvbiBzcGxpdChyYXcpIHtcbiAgICByZXR1cm4gcmF3Lm1hdGNoKC9bXiBcXHJcXG5cXHRdKy9nKSB8fCBbXTtcbn1cbmFzeW5jIGZ1bmN0aW9uIGV2YWx1YXRlVmFyaWFibGUoc2VnbWVudCwgb3B0cywgc3RhdGUsIHB1c2gsIHB1c2hBbmRDbG9zZSA9IHB1c2gpIHtcbiAgICBzd2l0Y2ggKHNlZ21lbnQubmFtZSkge1xuICAgICAgICBjYXNlIGAkYDpcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwdXNoKFN0cmluZyhwcm9jZXNzLnBpZCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgYCNgOlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHB1c2goU3RyaW5nKG9wdHMuYXJncy5sZW5ndGgpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIGBAYDpcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBpZiAoc2VnbWVudC5xdW90ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCByYXcgb2Ygb3B0cy5hcmdzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwdXNoQW5kQ2xvc2UocmF3KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCByYXcgb2Ygb3B0cy5hcmdzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXJ0cyA9IHNwbGl0KHJhdyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCB0ID0gMDsgdCA8IHBhcnRzLmxlbmd0aCAtIDE7ICsrdClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoQW5kQ2xvc2UocGFydHNbdF0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChwYXJ0c1twYXJ0cy5sZW5ndGggLSAxXSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBgKmA6XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmF3ID0gb3B0cy5hcmdzLmpvaW4oYCBgKTtcbiAgICAgICAgICAgICAgICBpZiAoc2VnbWVudC5xdW90ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcHVzaChyYXcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBwYXJ0IG9mIHNwbGl0KHJhdykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHB1c2hBbmRDbG9zZShwYXJ0KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIGBQUElEYDpcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwdXNoKFN0cmluZyhwcm9jZXNzLnBwaWQpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIGBSQU5ET01gOlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHB1c2goU3RyaW5nKE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDMyNzY4KSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY29uc3QgYXJnSW5kZXggPSBwYXJzZUludChzZWdtZW50Lm5hbWUsIDEwKTtcbiAgICAgICAgICAgICAgICBsZXQgcmF3O1xuICAgICAgICAgICAgICAgIGNvbnN0IGlzQXJndW1lbnQgPSBOdW1iZXIuaXNGaW5pdGUoYXJnSW5kZXgpO1xuICAgICAgICAgICAgICAgIGlmIChpc0FyZ3VtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChhcmdJbmRleCA+PSAwICYmIGFyZ0luZGV4IDwgb3B0cy5hcmdzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmF3ID0gb3B0cy5hcmdzW2FyZ0luZGV4XTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzdGF0ZS52YXJpYWJsZXMsIHNlZ21lbnQubmFtZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJhdyA9IHN0YXRlLnZhcmlhYmxlc1tzZWdtZW50Lm5hbWVdO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzdGF0ZS5lbnZpcm9ubWVudCwgc2VnbWVudC5uYW1lKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmF3ID0gc3RhdGUuZW52aXJvbm1lbnRbc2VnbWVudC5uYW1lXTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHJhdyAhPT0gYHVuZGVmaW5lZGAgJiYgc2VnbWVudC5hbHRlcm5hdGl2ZVZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJhdyA9IChhd2FpdCBpbnRlcnBvbGF0ZUFyZ3VtZW50cyhzZWdtZW50LmFsdGVybmF0aXZlVmFsdWUsIG9wdHMsIHN0YXRlKSkuam9pbihgIGApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmICh0eXBlb2YgcmF3ID09PSBgdW5kZWZpbmVkYCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoc2VnbWVudC5kZWZhdWx0VmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJhdyA9IChhd2FpdCBpbnRlcnBvbGF0ZUFyZ3VtZW50cyhzZWdtZW50LmRlZmF1bHRWYWx1ZSwgb3B0cywgc3RhdGUpKS5qb2luKGAgYCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoc2VnbWVudC5hbHRlcm5hdGl2ZVZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByYXcgPSBgYDsgLy8gaWYgcmF3ID09PSBgdW5kZWZpbmVkYCwgYnV0IHRoZXJlIGlzIGFuIGFsdGVybmF0aXZlIHZhbHVlLCBpdCBzaG91bGQgbm90IGJlIHRocm93bi5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHJhdyA9PT0gYHVuZGVmaW5lZGApIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzQXJndW1lbnQpXG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgZXJyb3JzXzEuU2hlbGxFcnJvcihgVW5ib3VuZCBhcmd1bWVudCAjJHthcmdJbmRleH1gKTtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IGVycm9yc18xLlNoZWxsRXJyb3IoYFVuYm91bmQgdmFyaWFibGUgXCIke3NlZ21lbnQubmFtZX1cImApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoc2VnbWVudC5xdW90ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcHVzaChyYXcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFydHMgPSBzcGxpdChyYXcpO1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCB0ID0gMDsgdCA8IHBhcnRzLmxlbmd0aCAtIDE7ICsrdClcbiAgICAgICAgICAgICAgICAgICAgICAgIHB1c2hBbmRDbG9zZShwYXJ0c1t0XSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcnQgPSBwYXJ0c1twYXJ0cy5sZW5ndGggLSAxXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBwYXJ0ICE9PSBgdW5kZWZpbmVkYCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChwYXJ0KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgIH1cbn1cbmNvbnN0IG9wZXJhdG9ycyA9IHtcbiAgICBhZGRpdGlvbjogKGxlZnQsIHJpZ2h0KSA9PiBsZWZ0ICsgcmlnaHQsXG4gICAgc3VidHJhY3Rpb246IChsZWZ0LCByaWdodCkgPT4gbGVmdCAtIHJpZ2h0LFxuICAgIG11bHRpcGxpY2F0aW9uOiAobGVmdCwgcmlnaHQpID0+IGxlZnQgKiByaWdodCxcbiAgICBkaXZpc2lvbjogKGxlZnQsIHJpZ2h0KSA9PiBNYXRoLnRydW5jKGxlZnQgLyByaWdodCksXG59O1xuYXN5bmMgZnVuY3Rpb24gZXZhbHVhdGVBcml0aG1ldGljKGFyaXRobWV0aWMsIG9wdHMsIHN0YXRlKSB7XG4gICAgaWYgKGFyaXRobWV0aWMudHlwZSA9PT0gYG51bWJlcmApIHtcbiAgICAgICAgaWYgKCFOdW1iZXIuaXNJbnRlZ2VyKGFyaXRobWV0aWMudmFsdWUpKSB7XG4gICAgICAgICAgICAvLyBaU0ggYWxsb3dzIG5vbi1pbnRlZ2Vycywgd2hpbGUgYmFzaCB0aHJvd3MgYXQgdGhlIHBhcnNlciBsZXZlbCAodW5yZWNvdmVyYWJsZSlcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBudW1iZXI6IFwiJHthcml0aG1ldGljLnZhbHVlfVwiLCBvbmx5IGludGVnZXJzIGFyZSBhbGxvd2VkYCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gYXJpdGhtZXRpYy52YWx1ZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBlbHNlIGlmIChhcml0aG1ldGljLnR5cGUgPT09IGB2YXJpYWJsZWApIHtcbiAgICAgICAgY29uc3QgcGFydHMgPSBbXTtcbiAgICAgICAgYXdhaXQgZXZhbHVhdGVWYXJpYWJsZSh7IC4uLmFyaXRobWV0aWMsIHF1b3RlZDogdHJ1ZSB9LCBvcHRzLCBzdGF0ZSwgcmVzdWx0ID0+IHBhcnRzLnB1c2gocmVzdWx0KSk7XG4gICAgICAgIGNvbnN0IG51bWJlciA9IE51bWJlcihwYXJ0cy5qb2luKGAgYCkpO1xuICAgICAgICBpZiAoTnVtYmVyLmlzTmFOKG51bWJlcikpIHtcbiAgICAgICAgICAgIHJldHVybiBldmFsdWF0ZUFyaXRobWV0aWMoeyB0eXBlOiBgdmFyaWFibGVgLCBuYW1lOiBwYXJ0cy5qb2luKGAgYCkgfSwgb3B0cywgc3RhdGUpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGV2YWx1YXRlQXJpdGhtZXRpYyh7IHR5cGU6IGBudW1iZXJgLCB2YWx1ZTogbnVtYmVyIH0sIG9wdHMsIHN0YXRlKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG9wZXJhdG9yc1thcml0aG1ldGljLnR5cGVdKGF3YWl0IGV2YWx1YXRlQXJpdGhtZXRpYyhhcml0aG1ldGljLmxlZnQsIG9wdHMsIHN0YXRlKSwgYXdhaXQgZXZhbHVhdGVBcml0aG1ldGljKGFyaXRobWV0aWMucmlnaHQsIG9wdHMsIHN0YXRlKSk7XG4gICAgfVxufVxuYXN5bmMgZnVuY3Rpb24gaW50ZXJwb2xhdGVBcmd1bWVudHMoY29tbWFuZEFyZ3MsIG9wdHMsIHN0YXRlKSB7XG4gICAgY29uc3QgcmVkaXJlY3Rpb25zID0gbmV3IE1hcCgpO1xuICAgIGNvbnN0IGludGVycG9sYXRlZCA9IFtdO1xuICAgIGxldCBpbnRlcnBvbGF0ZWRTZWdtZW50cyA9IFtdO1xuICAgIGNvbnN0IHB1c2ggPSAoc2VnbWVudCkgPT4ge1xuICAgICAgICBpbnRlcnBvbGF0ZWRTZWdtZW50cy5wdXNoKHNlZ21lbnQpO1xuICAgIH07XG4gICAgY29uc3QgY2xvc2UgPSAoKSA9PiB7XG4gICAgICAgIGlmIChpbnRlcnBvbGF0ZWRTZWdtZW50cy5sZW5ndGggPiAwKVxuICAgICAgICAgICAgaW50ZXJwb2xhdGVkLnB1c2goaW50ZXJwb2xhdGVkU2VnbWVudHMuam9pbihgYCkpO1xuICAgICAgICBpbnRlcnBvbGF0ZWRTZWdtZW50cyA9IFtdO1xuICAgIH07XG4gICAgY29uc3QgcHVzaEFuZENsb3NlID0gKHNlZ21lbnQpID0+IHtcbiAgICAgICAgcHVzaChzZWdtZW50KTtcbiAgICAgICAgY2xvc2UoKTtcbiAgICB9O1xuICAgIGNvbnN0IHJlZGlyZWN0ID0gKHR5cGUsIGZkLCB0YXJnZXQpID0+IHtcbiAgICAgICAgY29uc3Qga2V5ID0gSlNPTi5zdHJpbmdpZnkoeyB0eXBlLCBmZCB9KTtcbiAgICAgICAgbGV0IHRhcmdldHMgPSByZWRpcmVjdGlvbnMuZ2V0KGtleSk7XG4gICAgICAgIGlmICh0eXBlb2YgdGFyZ2V0cyA9PT0gYHVuZGVmaW5lZGApXG4gICAgICAgICAgICByZWRpcmVjdGlvbnMuc2V0KGtleSwgdGFyZ2V0cyA9IFtdKTtcbiAgICAgICAgdGFyZ2V0cy5wdXNoKHRhcmdldCk7XG4gICAgfTtcbiAgICBmb3IgKGNvbnN0IGNvbW1hbmRBcmcgb2YgY29tbWFuZEFyZ3MpIHtcbiAgICAgICAgbGV0IGlzR2xvYiA9IGZhbHNlO1xuICAgICAgICBzd2l0Y2ggKGNvbW1hbmRBcmcudHlwZSkge1xuICAgICAgICAgICAgY2FzZSBgcmVkaXJlY3Rpb25gOlxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50ZXJwb2xhdGVkQXJncyA9IGF3YWl0IGludGVycG9sYXRlQXJndW1lbnRzKGNvbW1hbmRBcmcuYXJncywgb3B0cywgc3RhdGUpO1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGludGVycG9sYXRlZEFyZyBvZiBpbnRlcnBvbGF0ZWRBcmdzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWRpcmVjdChjb21tYW5kQXJnLnN1YnR5cGUsIGNvbW1hbmRBcmcuZmQsIGludGVycG9sYXRlZEFyZyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIGBhcmd1bWVudGA6XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHNlZ21lbnQgb2YgY29tbWFuZEFyZy5zZWdtZW50cykge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChzZWdtZW50LnR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIGB0ZXh0YDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChzZWdtZW50LnRleHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgYGdsb2JgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKHNlZ21lbnQucGF0dGVybik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0dsb2IgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgYHNoZWxsYDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmF3ID0gYXdhaXQgZXhlY3V0ZUJ1ZmZlcmVkU3Vic2hlbGwoc2VnbWVudC5zaGVsbCwgb3B0cywgc3RhdGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNlZ21lbnQucXVvdGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChyYXcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFydHMgPSBzcGxpdChyYXcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IHQgPSAwOyB0IDwgcGFydHMubGVuZ3RoIC0gMTsgKyt0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoQW5kQ2xvc2UocGFydHNbdF0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2gocGFydHNbcGFydHMubGVuZ3RoIC0gMV0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgYHZhcmlhYmxlYDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgZXZhbHVhdGVWYXJpYWJsZShzZWdtZW50LCBvcHRzLCBzdGF0ZSwgcHVzaCwgcHVzaEFuZENsb3NlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIGBhcml0aG1ldGljYDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChTdHJpbmcoYXdhaXQgZXZhbHVhdGVBcml0aG1ldGljKHNlZ21lbnQuYXJpdGhtZXRpYywgb3B0cywgc3RhdGUpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2xvc2UoKTtcbiAgICAgICAgaWYgKGlzR2xvYikge1xuICAgICAgICAgICAgY29uc3QgcGF0dGVybiA9IGludGVycG9sYXRlZC5wb3AoKTtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgcGF0dGVybiA9PT0gYHVuZGVmaW5lZGApXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBBc3NlcnRpb24gZmFpbGVkOiBFeHBlY3RlZCBhIGdsb2IgcGF0dGVybiB0byBoYXZlIGJlZW4gc2V0YCk7XG4gICAgICAgICAgICBjb25zdCBtYXRjaGVzID0gYXdhaXQgb3B0cy5nbG9iLm1hdGNoKHBhdHRlcm4sIHsgY3dkOiBzdGF0ZS5jd2QsIGJhc2VGczogb3B0cy5iYXNlRnMgfSk7XG4gICAgICAgICAgICBpZiAobWF0Y2hlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICBjb25zdCBicmFjZUV4cGFuc2lvbk5vdGljZSA9IGdsb2JVdGlscy5pc0JyYWNlRXhwYW5zaW9uKHBhdHRlcm4pXG4gICAgICAgICAgICAgICAgICAgID8gYC4gTm90ZTogQnJhY2UgZXhwYW5zaW9uIG9mIGFyYml0cmFyeSBzdHJpbmdzIGlzbid0IGN1cnJlbnRseSBzdXBwb3J0ZWQuIEZvciBtb3JlIGRldGFpbHMsIHBsZWFzZSByZWFkIHRoaXMgaXNzdWU6IGh0dHBzOi8vZ2l0aHViLmNvbS95YXJucGtnL2JlcnJ5L2lzc3Vlcy8yMmBcbiAgICAgICAgICAgICAgICAgICAgOiBgYDtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgZXJyb3JzXzEuU2hlbGxFcnJvcihgTm8gbWF0Y2hlcyBmb3VuZDogXCIke3BhdHRlcm59XCIke2JyYWNlRXhwYW5zaW9uTm90aWNlfWApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZm9yIChjb25zdCBtYXRjaCBvZiBtYXRjaGVzLnNvcnQoKSkge1xuICAgICAgICAgICAgICAgIHB1c2hBbmRDbG9zZShtYXRjaCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKHJlZGlyZWN0aW9ucy5zaXplID4gMCkge1xuICAgICAgICBjb25zdCByZWRpcmVjdGlvbkFyZ3MgPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBba2V5LCB0YXJnZXRzXSBvZiByZWRpcmVjdGlvbnMuZW50cmllcygpKVxuICAgICAgICAgICAgcmVkaXJlY3Rpb25BcmdzLnNwbGljZShyZWRpcmVjdGlvbkFyZ3MubGVuZ3RoLCAwLCBrZXksIFN0cmluZyh0YXJnZXRzLmxlbmd0aCksIC4uLnRhcmdldHMpO1xuICAgICAgICBpbnRlcnBvbGF0ZWQuc3BsaWNlKDAsIDAsIGBfX3lzaF9zZXRfcmVkaXJlY3RzYCwgLi4ucmVkaXJlY3Rpb25BcmdzLCBgLS1gKTtcbiAgICB9XG4gICAgcmV0dXJuIGludGVycG9sYXRlZDtcbn1cbi8qKlxuICogRXhlY3V0ZXMgYSBjb21tYW5kIGNoYWluLiBBIGNvbW1hbmQgY2hhaW4gaXMgYSBsaXN0IG9mIGNvbW1hbmRzIGxpbmtlZFxuICogdG9nZXRoZXIgdGhhbmtzIHRvIHRoZSB1c2Ugb2YgZWl0aGVyIG9mIHRoZSBgfGAgb3IgYHwmYCBvcGVyYXRvcnM6XG4gKlxuICogJCBjYXQgaGVsbG8gfCBncmVwIHdvcmxkIHwgZ3JlcCAtdiBmb29iYXJcbiAqL1xuZnVuY3Rpb24gbWFrZUNvbW1hbmRBY3Rpb24oYXJncywgb3B0cywgc3RhdGUpIHtcbiAgICBpZiAoIW9wdHMuYnVpbHRpbnMuaGFzKGFyZ3NbMF0pKVxuICAgICAgICBhcmdzID0gW2Bjb21tYW5kYCwgLi4uYXJnc107XG4gICAgY29uc3QgbmF0aXZlQ3dkID0gZnNsaWJfMS5ucGF0aC5mcm9tUG9ydGFibGVQYXRoKHN0YXRlLmN3ZCk7XG4gICAgbGV0IGVudiA9IHN0YXRlLmVudmlyb25tZW50O1xuICAgIGlmICh0eXBlb2YgZW52LlBXRCAhPT0gYHVuZGVmaW5lZGApXG4gICAgICAgIGVudiA9IHsgLi4uZW52LCBQV0Q6IG5hdGl2ZUN3ZCB9O1xuICAgIGNvbnN0IFtuYW1lLCAuLi5yZXN0XSA9IGFyZ3M7XG4gICAgaWYgKG5hbWUgPT09IGBjb21tYW5kYCkge1xuICAgICAgICByZXR1cm4gKDAsIHBpcGVfMS5tYWtlUHJvY2VzcykocmVzdFswXSwgcmVzdC5zbGljZSgxKSwgb3B0cywge1xuICAgICAgICAgICAgY3dkOiBuYXRpdmVDd2QsXG4gICAgICAgICAgICBlbnYsXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBjb25zdCBidWlsdGluID0gb3B0cy5idWlsdGlucy5nZXQobmFtZSk7XG4gICAgaWYgKHR5cGVvZiBidWlsdGluID09PSBgdW5kZWZpbmVkYClcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBBc3NlcnRpb24gZmFpbGVkOiBBIGJ1aWx0aW4gc2hvdWxkIGV4aXN0IGZvciBcIiR7bmFtZX1cImApO1xuICAgIHJldHVybiAoMCwgcGlwZV8xLm1ha2VCdWlsdGluKShhc3luYyAoeyBzdGRpbiwgc3Rkb3V0LCBzdGRlcnIgfSkgPT4ge1xuICAgICAgICBjb25zdCB7IHN0ZGluOiBpbml0aWFsU3RkaW4sIHN0ZG91dDogaW5pdGlhbFN0ZG91dCwgc3RkZXJyOiBpbml0aWFsU3RkZXJyLCB9ID0gc3RhdGU7XG4gICAgICAgIHN0YXRlLnN0ZGluID0gc3RkaW47XG4gICAgICAgIHN0YXRlLnN0ZG91dCA9IHN0ZG91dDtcbiAgICAgICAgc3RhdGUuc3RkZXJyID0gc3RkZXJyO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmV0dXJuIGF3YWl0IGJ1aWx0aW4ocmVzdCwgb3B0cywgc3RhdGUpO1xuICAgICAgICB9XG4gICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgc3RhdGUuc3RkaW4gPSBpbml0aWFsU3RkaW47XG4gICAgICAgICAgICBzdGF0ZS5zdGRvdXQgPSBpbml0aWFsU3Rkb3V0O1xuICAgICAgICAgICAgc3RhdGUuc3RkZXJyID0gaW5pdGlhbFN0ZGVycjtcbiAgICAgICAgfVxuICAgIH0pO1xufVxuZnVuY3Rpb24gbWFrZVN1YnNoZWxsQWN0aW9uKGFzdCwgb3B0cywgc3RhdGUpIHtcbiAgICByZXR1cm4gKHN0ZGlvKSA9PiB7XG4gICAgICAgIGNvbnN0IHN0ZGluID0gbmV3IHN0cmVhbV8xLlBhc3NUaHJvdWdoKCk7XG4gICAgICAgIGNvbnN0IHByb21pc2UgPSBleGVjdXRlU2hlbGxMaW5lKGFzdCwgb3B0cywgY2xvbmVTdGF0ZShzdGF0ZSwgeyBzdGRpbiB9KSk7XG4gICAgICAgIHJldHVybiB7IHN0ZGluLCBwcm9taXNlIH07XG4gICAgfTtcbn1cbmZ1bmN0aW9uIG1ha2VHcm91cEFjdGlvbihhc3QsIG9wdHMsIHN0YXRlKSB7XG4gICAgcmV0dXJuIChzdGRpbykgPT4ge1xuICAgICAgICBjb25zdCBzdGRpbiA9IG5ldyBzdHJlYW1fMS5QYXNzVGhyb3VnaCgpO1xuICAgICAgICBjb25zdCBwcm9taXNlID0gZXhlY3V0ZVNoZWxsTGluZShhc3QsIG9wdHMsIHN0YXRlKTtcbiAgICAgICAgcmV0dXJuIHsgc3RkaW4sIHByb21pc2UgfTtcbiAgICB9O1xufVxuZnVuY3Rpb24gbWFrZUFjdGlvbkZyb21Qcm9jZWR1cmUocHJvY2VkdXJlLCBhcmdzLCBvcHRzLCBhY3RpdmVTdGF0ZSkge1xuICAgIGlmIChhcmdzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gcHJvY2VkdXJlO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgbGV0IGtleTtcbiAgICAgICAgZG8ge1xuICAgICAgICAgICAga2V5ID0gU3RyaW5nKE1hdGgucmFuZG9tKCkpO1xuICAgICAgICB9IHdoaWxlIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYWN0aXZlU3RhdGUucHJvY2VkdXJlcywga2V5KSk7XG4gICAgICAgIGFjdGl2ZVN0YXRlLnByb2NlZHVyZXMgPSB7IC4uLmFjdGl2ZVN0YXRlLnByb2NlZHVyZXMgfTtcbiAgICAgICAgYWN0aXZlU3RhdGUucHJvY2VkdXJlc1trZXldID0gcHJvY2VkdXJlO1xuICAgICAgICByZXR1cm4gbWFrZUNvbW1hbmRBY3Rpb24oWy4uLmFyZ3MsIGBfX3lzaF9ydW5fcHJvY2VkdXJlYCwga2V5XSwgb3B0cywgYWN0aXZlU3RhdGUpO1xuICAgIH1cbn1cbmFzeW5jIGZ1bmN0aW9uIGV4ZWN1dGVDb21tYW5kQ2hhaW5JbXBsKG5vZGUsIG9wdHMsIHN0YXRlKSB7XG4gICAgbGV0IGN1cnJlbnQgPSBub2RlO1xuICAgIGxldCBwaXBlVHlwZSA9IG51bGw7XG4gICAgbGV0IGV4ZWN1dGlvbiA9IG51bGw7XG4gICAgd2hpbGUgKGN1cnJlbnQpIHtcbiAgICAgICAgLy8gT25seSB0aGUgZmluYWwgc2VnbWVudCBpcyBhbGxvd2VkIHRvIG1vZGlmeSB0aGUgc2hlbGwgc3RhdGU7IGFsbCB0aGVcbiAgICAgICAgLy8gb3RoZXIgb25lcyBhcmUgaXNvbGF0ZWRcbiAgICAgICAgY29uc3QgYWN0aXZlU3RhdGUgPSBjdXJyZW50LnRoZW5cbiAgICAgICAgICAgID8geyAuLi5zdGF0ZSB9XG4gICAgICAgICAgICA6IHN0YXRlO1xuICAgICAgICBsZXQgYWN0aW9uO1xuICAgICAgICBzd2l0Y2ggKGN1cnJlbnQudHlwZSkge1xuICAgICAgICAgICAgY2FzZSBgY29tbWFuZGA6XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBhcmdzID0gYXdhaXQgaW50ZXJwb2xhdGVBcmd1bWVudHMoY3VycmVudC5hcmdzLCBvcHRzLCBzdGF0ZSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGVudmlyb25tZW50ID0gYXdhaXQgYXBwbHlFbnZWYXJpYWJsZXMoY3VycmVudC5lbnZzLCBvcHRzLCBzdGF0ZSk7XG4gICAgICAgICAgICAgICAgICAgIGFjdGlvbiA9IGN1cnJlbnQuZW52cy5sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgID8gbWFrZUNvbW1hbmRBY3Rpb24oYXJncywgb3B0cywgY2xvbmVTdGF0ZShhY3RpdmVTdGF0ZSwgeyBlbnZpcm9ubWVudCB9KSlcbiAgICAgICAgICAgICAgICAgICAgICAgIDogbWFrZUNvbW1hbmRBY3Rpb24oYXJncywgb3B0cywgYWN0aXZlU3RhdGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgYHN1YnNoZWxsYDpcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGFyZ3MgPSBhd2FpdCBpbnRlcnBvbGF0ZUFyZ3VtZW50cyhjdXJyZW50LmFyZ3MsIG9wdHMsIHN0YXRlKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gV2UgZG9uJ3QgaW50ZXJwb2xhdGUgdGhlIHN1YnNoZWxsIGJlY2F1c2UgaXQgd2lsbCBiZSByZWN1cnNpdmVseVxuICAgICAgICAgICAgICAgICAgICAvLyBpbnRlcnBvbGF0ZWQgd2l0aGluIGl0cyBvd24gY29udGV4dFxuICAgICAgICAgICAgICAgICAgICBjb25zdCBwcm9jZWR1cmUgPSBtYWtlU3Vic2hlbGxBY3Rpb24oY3VycmVudC5zdWJzaGVsbCwgb3B0cywgYWN0aXZlU3RhdGUpO1xuICAgICAgICAgICAgICAgICAgICBhY3Rpb24gPSBtYWtlQWN0aW9uRnJvbVByb2NlZHVyZShwcm9jZWR1cmUsIGFyZ3MsIG9wdHMsIGFjdGl2ZVN0YXRlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIGBncm91cGA6XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBhcmdzID0gYXdhaXQgaW50ZXJwb2xhdGVBcmd1bWVudHMoY3VycmVudC5hcmdzLCBvcHRzLCBzdGF0ZSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHByb2NlZHVyZSA9IG1ha2VHcm91cEFjdGlvbihjdXJyZW50Lmdyb3VwLCBvcHRzLCBhY3RpdmVTdGF0ZSk7XG4gICAgICAgICAgICAgICAgICAgIGFjdGlvbiA9IG1ha2VBY3Rpb25Gcm9tUHJvY2VkdXJlKHByb2NlZHVyZSwgYXJncywgb3B0cywgYWN0aXZlU3RhdGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgYGVudnNgOlxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZW52aXJvbm1lbnQgPSBhd2FpdCBhcHBseUVudlZhcmlhYmxlcyhjdXJyZW50LmVudnMsIG9wdHMsIHN0YXRlKTtcbiAgICAgICAgICAgICAgICAgICAgYWN0aXZlU3RhdGUuZW52aXJvbm1lbnQgPSB7IC4uLmFjdGl2ZVN0YXRlLmVudmlyb25tZW50LCAuLi5lbnZpcm9ubWVudCB9O1xuICAgICAgICAgICAgICAgICAgICBhY3Rpb24gPSBtYWtlQ29tbWFuZEFjdGlvbihbYHRydWVgXSwgb3B0cywgYWN0aXZlU3RhdGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIGFjdGlvbiA9PT0gYHVuZGVmaW5lZGApXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEFzc2VydGlvbiBmYWlsZWQ6IEFuIGFjdGlvbiBzaG91bGQgaGF2ZSBiZWVuIGdlbmVyYXRlZGApO1xuICAgICAgICBpZiAocGlwZVR5cGUgPT09IG51bGwpIHtcbiAgICAgICAgICAgIC8vIElmIHdlJ3JlIHByb2Nlc3NpbmcgdGhlIGxlZnQtbW9zdCBzZWdtZW50IG9mIHRoZSBjb21tYW5kLCB3ZSBzdGFydCBhXG4gICAgICAgICAgICAvLyBuZXcgZXhlY3V0aW9uIHBpcGVsaW5lXG4gICAgICAgICAgICBleGVjdXRpb24gPSAoMCwgcGlwZV8yLnN0YXJ0KShhY3Rpb24sIHtcbiAgICAgICAgICAgICAgICBzdGRpbjogbmV3IHBpcGVfMi5Qcm90ZWN0ZWRTdHJlYW0oYWN0aXZlU3RhdGUuc3RkaW4pLFxuICAgICAgICAgICAgICAgIHN0ZG91dDogbmV3IHBpcGVfMi5Qcm90ZWN0ZWRTdHJlYW0oYWN0aXZlU3RhdGUuc3Rkb3V0KSxcbiAgICAgICAgICAgICAgICBzdGRlcnI6IG5ldyBwaXBlXzIuUHJvdGVjdGVkU3RyZWFtKGFjdGl2ZVN0YXRlLnN0ZGVyciksXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGlmIChleGVjdXRpb24gPT09IG51bGwpXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBBc3NlcnRpb24gZmFpbGVkOiBUaGUgZXhlY3V0aW9uIHBpcGVsaW5lIHNob3VsZCBoYXZlIGJlZW4gc2V0dXBgKTtcbiAgICAgICAgICAgIC8vIE90aGVyd2lzZSwgZGVwZW5kaW5nIG9uIHRoZSBleGF4Y3QgcGlwZSB0eXBlLCB3ZSBlaXRoZXIgcGlwZSBzdGRvdXRcbiAgICAgICAgICAgIC8vIG9ubHkgb3Igc3Rkb3V0IGFuZCBzdGRlcnJcbiAgICAgICAgICAgIHN3aXRjaCAocGlwZVR5cGUpIHtcbiAgICAgICAgICAgICAgICBjYXNlIGB8YDpcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgZXhlY3V0aW9uID0gZXhlY3V0aW9uLnBpcGVUbyhhY3Rpb24sIHBpcGVfMi5QaXBlLlNURE9VVCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBgfCZgOlxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBleGVjdXRpb24gPSBleGVjdXRpb24ucGlwZVRvKGFjdGlvbiwgcGlwZV8yLlBpcGUuU1RET1VUIHwgcGlwZV8yLlBpcGUuU1RERVJSKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoY3VycmVudC50aGVuKSB7XG4gICAgICAgICAgICBwaXBlVHlwZSA9IGN1cnJlbnQudGhlbi50eXBlO1xuICAgICAgICAgICAgY3VycmVudCA9IGN1cnJlbnQudGhlbi5jaGFpbjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGN1cnJlbnQgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChleGVjdXRpb24gPT09IG51bGwpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQXNzZXJ0aW9uIGZhaWxlZDogVGhlIGV4ZWN1dGlvbiBwaXBlbGluZSBzaG91bGQgaGF2ZSBiZWVuIHNldHVwYCk7XG4gICAgcmV0dXJuIGF3YWl0IGV4ZWN1dGlvbi5ydW4oKTtcbn1cbmFzeW5jIGZ1bmN0aW9uIGV4ZWN1dGVDb21tYW5kQ2hhaW4obm9kZSwgb3B0cywgc3RhdGUsIHsgYmFja2dyb3VuZCA9IGZhbHNlIH0gPSB7fSkge1xuICAgIGZ1bmN0aW9uIGdldENvbG9yaXplcihpbmRleCkge1xuICAgICAgICBjb25zdCBjb2xvcnMgPSBbYCMyRTg2QUJgLCBgI0EyM0I3MmAsIGAjRjE4RjAxYCwgYCNDNzNFMURgLCBgI0NDRTJBM2BdO1xuICAgICAgICBjb25zdCBjb2xvck5hbWUgPSBjb2xvcnNbaW5kZXggJSBjb2xvcnMubGVuZ3RoXTtcbiAgICAgICAgcmV0dXJuIGNoYWxrXzEuZGVmYXVsdC5oZXgoY29sb3JOYW1lKTtcbiAgICB9XG4gICAgaWYgKGJhY2tncm91bmQpIHtcbiAgICAgICAgY29uc3QgaW5kZXggPSBzdGF0ZS5uZXh0QmFja2dyb3VuZEpvYkluZGV4Kys7XG4gICAgICAgIGNvbnN0IGNvbG9yaXplciA9IGdldENvbG9yaXplcihpbmRleCk7XG4gICAgICAgIGNvbnN0IHJhd1ByZWZpeCA9IGBbJHtpbmRleH1dYDtcbiAgICAgICAgY29uc3QgcHJlZml4ID0gY29sb3JpemVyKHJhd1ByZWZpeCk7XG4gICAgICAgIGNvbnN0IHsgc3Rkb3V0LCBzdGRlcnIgfSA9ICgwLCBwaXBlXzEuY3JlYXRlT3V0cHV0U3RyZWFtc1dpdGhQcmVmaXgpKHN0YXRlLCB7IHByZWZpeCB9KTtcbiAgICAgICAgc3RhdGUuYmFja2dyb3VuZEpvYnMucHVzaChleGVjdXRlQ29tbWFuZENoYWluSW1wbChub2RlLCBvcHRzLCBjbG9uZVN0YXRlKHN0YXRlLCB7IHN0ZG91dCwgc3RkZXJyIH0pKVxuICAgICAgICAgICAgLmNhdGNoKGVycm9yID0+IHN0ZGVyci53cml0ZShgJHtlcnJvci5tZXNzYWdlfVxcbmApKVxuICAgICAgICAgICAgLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHN0YXRlLnN0ZG91dC5pc1RUWSkge1xuICAgICAgICAgICAgICAgIHN0YXRlLnN0ZG91dC53cml0ZShgSm9iICR7cHJlZml4fSwgJyR7Y29sb3JpemVyKCgwLCBwYXJzZXJzXzEuc3RyaW5naWZ5Q29tbWFuZENoYWluKShub2RlKSl9JyBoYXMgZW5kZWRcXG5gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSkpO1xuICAgICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgcmV0dXJuIGF3YWl0IGV4ZWN1dGVDb21tYW5kQ2hhaW5JbXBsKG5vZGUsIG9wdHMsIHN0YXRlKTtcbn1cbi8qKlxuICogRXhlY3V0ZSBhIGNvbW1hbmQgbGluZS4gQSBjb21tYW5kIGxpbmUgaXMgYSBsaXN0IG9mIGNvbW1hbmQgc2hlbGxzIGxpbmtlZFxuICogdG9nZXRoZXIgdGhhbmtzIHRvIHRoZSB1c2Ugb2YgZWl0aGVyIG9mIHRoZSBgfHxgIG9yIGAmJmAgb3BlcmF0b3JzLlxuICovXG5hc3luYyBmdW5jdGlvbiBleGVjdXRlQ29tbWFuZExpbmUobm9kZSwgb3B0cywgc3RhdGUsIHsgYmFja2dyb3VuZCA9IGZhbHNlIH0gPSB7fSkge1xuICAgIGxldCBjb2RlO1xuICAgIGNvbnN0IHNldENvZGUgPSAobmV3Q29kZSkgPT4ge1xuICAgICAgICBjb2RlID0gbmV3Q29kZTtcbiAgICAgICAgLy8gV2UgbXVzdCB1cGRhdGUgJD8sIHdoaWNoIGFsd2F5cyBjb250YWlucyB0aGUgZXhpdCBjb2RlIGZyb21cbiAgICAgICAgLy8gdGhlIHJpZ2h0LW1vc3QgY29tbWFuZFxuICAgICAgICBzdGF0ZS52YXJpYWJsZXNbYD9gXSA9IFN0cmluZyhuZXdDb2RlKTtcbiAgICB9O1xuICAgIGNvbnN0IGV4ZWN1dGVDaGFpbiA9IGFzeW5jIChsaW5lKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXR1cm4gYXdhaXQgZXhlY3V0ZUNvbW1hbmRDaGFpbihsaW5lLmNoYWluLCBvcHRzLCBzdGF0ZSwgeyBiYWNrZ3JvdW5kOiBiYWNrZ3JvdW5kICYmIHR5cGVvZiBsaW5lLnRoZW4gPT09IGB1bmRlZmluZWRgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgaWYgKCEoZXJyb3IgaW5zdGFuY2VvZiBlcnJvcnNfMS5TaGVsbEVycm9yKSlcbiAgICAgICAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgICAgIHN0YXRlLnN0ZGVyci53cml0ZShgJHtlcnJvci5tZXNzYWdlfVxcbmApO1xuICAgICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHNldENvZGUoYXdhaXQgZXhlY3V0ZUNoYWluKG5vZGUpKTtcbiAgICAvLyBXZSB1c2UgYSBsb29wIGJlY2F1c2Ugd2UgbXVzdCBtYWtlIHN1cmUgdGhhdCB3ZSByZXNwZWN0XG4gICAgLy8gdGhlIGxlZnQgYXNzb2NpYXRpdml0eSBvZiBsaXN0cywgYXMgcGVyIHRoZSBiYXNoIHNwZWMuXG4gICAgLy8gKGUuZy4gYGluZXhpc3RlbnQgJiYgZWNobyB5ZXMgfHwgZWNobyBub2AgbXVzdCBiZVxuICAgIC8vIHRoZSBzYW1lIGFzIGB7aW5leGlzdGVudCAmJiBlY2hvIHllc30gfHwgZWNobyBub2ApXG4gICAgd2hpbGUgKG5vZGUudGhlbikge1xuICAgICAgICAvLyBJZiB0aGUgZXhlY3V0aW9uIGFib3J0ZWQgKHVzdWFsbHkgdGhyb3VnaCBcImV4aXRcIiksIHdlIG11c3QgYmFpbG91dFxuICAgICAgICBpZiAoc3RhdGUuZXhpdENvZGUgIT09IG51bGwpXG4gICAgICAgICAgICByZXR1cm4gc3RhdGUuZXhpdENvZGU7XG4gICAgICAgIHN3aXRjaCAobm9kZS50aGVuLnR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgYCYmYDpcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjb2RlID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRDb2RlKGF3YWl0IGV4ZWN1dGVDaGFpbihub2RlLnRoZW4ubGluZSkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBgfHxgOlxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvZGUgIT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldENvZGUoYXdhaXQgZXhlY3V0ZUNoYWluKG5vZGUudGhlbi5saW5lKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBBc3NlcnRpb24gZmFpbGVkOiBVbnN1cHBvcnRlZCBjb21tYW5kIHR5cGU6IFwiJHtub2RlLnRoZW4udHlwZX1cImApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIG5vZGUgPSBub2RlLnRoZW4ubGluZTtcbiAgICB9XG4gICAgcmV0dXJuIGNvZGU7XG59XG5hc3luYyBmdW5jdGlvbiBleGVjdXRlU2hlbGxMaW5lKG5vZGUsIG9wdHMsIHN0YXRlKSB7XG4gICAgY29uc3Qgb3JpZ2luYWxCYWNrZ3JvdW5kSm9icyA9IHN0YXRlLmJhY2tncm91bmRKb2JzO1xuICAgIHN0YXRlLmJhY2tncm91bmRKb2JzID0gW107XG4gICAgbGV0IHJpZ2h0TW9zdEV4aXRDb2RlID0gMDtcbiAgICBmb3IgKGNvbnN0IHsgY29tbWFuZCwgdHlwZSB9IG9mIG5vZGUpIHtcbiAgICAgICAgcmlnaHRNb3N0RXhpdENvZGUgPSBhd2FpdCBleGVjdXRlQ29tbWFuZExpbmUoY29tbWFuZCwgb3B0cywgc3RhdGUsIHsgYmFja2dyb3VuZDogdHlwZSA9PT0gYCZgIH0pO1xuICAgICAgICAvLyBJZiB0aGUgZXhlY3V0aW9uIGFib3J0ZWQgKHVzdWFsbHkgdGhyb3VnaCBcImV4aXRcIiksIHdlIG11c3QgYmFpbG91dFxuICAgICAgICBpZiAoc3RhdGUuZXhpdENvZGUgIT09IG51bGwpXG4gICAgICAgICAgICByZXR1cm4gc3RhdGUuZXhpdENvZGU7XG4gICAgICAgIC8vIFdlIG11c3QgdXBkYXRlICQ/LCB3aGljaCBhbHdheXMgY29udGFpbnMgdGhlIGV4aXQgY29kZSBmcm9tXG4gICAgICAgIC8vIHRoZSByaWdodC1tb3N0IGNvbW1hbmRcbiAgICAgICAgc3RhdGUudmFyaWFibGVzW2A/YF0gPSBTdHJpbmcocmlnaHRNb3N0RXhpdENvZGUpO1xuICAgIH1cbiAgICBhd2FpdCBQcm9taXNlLmFsbChzdGF0ZS5iYWNrZ3JvdW5kSm9icyk7XG4gICAgc3RhdGUuYmFja2dyb3VuZEpvYnMgPSBvcmlnaW5hbEJhY2tncm91bmRKb2JzO1xuICAgIHJldHVybiByaWdodE1vc3RFeGl0Q29kZTtcbn1cbmZ1bmN0aW9uIGxvY2F0ZUFyZ3NWYXJpYWJsZUluU2VnbWVudChzZWdtZW50KSB7XG4gICAgc3dpdGNoIChzZWdtZW50LnR5cGUpIHtcbiAgICAgICAgY2FzZSBgdmFyaWFibGVgOiB7XG4gICAgICAgICAgICByZXR1cm4gc2VnbWVudC5uYW1lID09PSBgQGAgfHwgc2VnbWVudC5uYW1lID09PSBgI2AgfHwgc2VnbWVudC5uYW1lID09PSBgKmAgfHwgTnVtYmVyLmlzRmluaXRlKHBhcnNlSW50KHNlZ21lbnQubmFtZSwgMTApKSB8fCAoYGRlZmF1bHRWYWx1ZWAgaW4gc2VnbWVudCAmJiAhIXNlZ21lbnQuZGVmYXVsdFZhbHVlICYmIHNlZ21lbnQuZGVmYXVsdFZhbHVlLnNvbWUoYXJnID0+IGxvY2F0ZUFyZ3NWYXJpYWJsZUluQXJndW1lbnQoYXJnKSkpIHx8IChgYWx0ZXJuYXRpdmVWYWx1ZWAgaW4gc2VnbWVudCAmJiAhIXNlZ21lbnQuYWx0ZXJuYXRpdmVWYWx1ZSAmJiBzZWdtZW50LmFsdGVybmF0aXZlVmFsdWUuc29tZShhcmcgPT4gbG9jYXRlQXJnc1ZhcmlhYmxlSW5Bcmd1bWVudChhcmcpKSk7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBgYXJpdGhtZXRpY2A6IHtcbiAgICAgICAgICAgIHJldHVybiBsb2NhdGVBcmdzVmFyaWFibGVJbkFyaXRobWV0aWMoc2VnbWVudC5hcml0aG1ldGljKTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIGBzaGVsbGA6IHtcbiAgICAgICAgICAgIHJldHVybiBsb2NhdGVBcmdzVmFyaWFibGUoc2VnbWVudC5zaGVsbCk7XG4gICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxufVxuZnVuY3Rpb24gbG9jYXRlQXJnc1ZhcmlhYmxlSW5Bcmd1bWVudChhcmcpIHtcbiAgICBzd2l0Y2ggKGFyZy50eXBlKSB7XG4gICAgICAgIGNhc2UgYHJlZGlyZWN0aW9uYDoge1xuICAgICAgICAgICAgcmV0dXJuIGFyZy5hcmdzLnNvbWUoYXJnID0+IGxvY2F0ZUFyZ3NWYXJpYWJsZUluQXJndW1lbnQoYXJnKSk7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBgYXJndW1lbnRgOiB7XG4gICAgICAgICAgICByZXR1cm4gYXJnLnNlZ21lbnRzLnNvbWUoc2VnbWVudCA9PiBsb2NhdGVBcmdzVmFyaWFibGVJblNlZ21lbnQoc2VnbWVudCkpO1xuICAgICAgICB9XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEFzc2VydGlvbiBmYWlsZWQ6IFVuc3VwcG9ydGVkIGFyZ3VtZW50IHR5cGU6IFwiJHthcmcudHlwZX1cImApO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGxvY2F0ZUFyZ3NWYXJpYWJsZUluQXJpdGhtZXRpYyhhcmcpIHtcbiAgICBzd2l0Y2ggKGFyZy50eXBlKSB7XG4gICAgICAgIGNhc2UgYHZhcmlhYmxlYDoge1xuICAgICAgICAgICAgcmV0dXJuIGxvY2F0ZUFyZ3NWYXJpYWJsZUluU2VnbWVudChhcmcpO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgYG51bWJlcmA6IHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuIGxvY2F0ZUFyZ3NWYXJpYWJsZUluQXJpdGhtZXRpYyhhcmcubGVmdCkgfHwgbG9jYXRlQXJnc1ZhcmlhYmxlSW5Bcml0aG1ldGljKGFyZy5yaWdodCk7XG4gICAgfVxufVxuZnVuY3Rpb24gbG9jYXRlQXJnc1ZhcmlhYmxlKG5vZGUpIHtcbiAgICByZXR1cm4gbm9kZS5zb21lKCh7IGNvbW1hbmQgfSkgPT4ge1xuICAgICAgICB3aGlsZSAoY29tbWFuZCkge1xuICAgICAgICAgICAgbGV0IGNoYWluID0gY29tbWFuZC5jaGFpbjtcbiAgICAgICAgICAgIHdoaWxlIChjaGFpbikge1xuICAgICAgICAgICAgICAgIGxldCBoYXNBcmdzO1xuICAgICAgICAgICAgICAgIHN3aXRjaCAoY2hhaW4udHlwZSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIGBzdWJzaGVsbGA6XG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzQXJncyA9IGxvY2F0ZUFyZ3NWYXJpYWJsZShjaGFpbi5zdWJzaGVsbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBgY29tbWFuZGA6XG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzQXJncyA9IGNoYWluLmVudnMuc29tZShlbnYgPT4gZW52LmFyZ3Muc29tZShhcmcgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9jYXRlQXJnc1ZhcmlhYmxlSW5Bcmd1bWVudChhcmcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSB8fCBjaGFpbi5hcmdzLnNvbWUoYXJnID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvY2F0ZUFyZ3NWYXJpYWJsZUluQXJndW1lbnQoYXJnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoaGFzQXJncylcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgaWYgKCFjaGFpbi50aGVuKVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjaGFpbiA9IGNoYWluLnRoZW4uY2hhaW47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIWNvbW1hbmQudGhlbilcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNvbW1hbmQgPSBjb21tYW5kLnRoZW4ubGluZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSk7XG59XG5hc3luYyBmdW5jdGlvbiBleGVjdXRlKGNvbW1hbmQsIGFyZ3MgPSBbXSwgeyBiYXNlRnMgPSBuZXcgZnNsaWJfMS5Ob2RlRlMoKSwgYnVpbHRpbnMgPSB7fSwgY3dkID0gZnNsaWJfMS5ucGF0aC50b1BvcnRhYmxlUGF0aChwcm9jZXNzLmN3ZCgpKSwgZW52ID0gcHJvY2Vzcy5lbnYsIHN0ZGluID0gcHJvY2Vzcy5zdGRpbiwgc3Rkb3V0ID0gcHJvY2Vzcy5zdGRvdXQsIHN0ZGVyciA9IHByb2Nlc3Muc3RkZXJyLCB2YXJpYWJsZXMgPSB7fSwgZ2xvYiA9IGdsb2JVdGlscywgfSA9IHt9KSB7XG4gICAgY29uc3Qgbm9ybWFsaXplZEVudiA9IHt9O1xuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGVudikpXG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09IGB1bmRlZmluZWRgKVxuICAgICAgICAgICAgbm9ybWFsaXplZEVudltrZXldID0gdmFsdWU7XG4gICAgY29uc3Qgbm9ybWFsaXplZEJ1aWx0aW5zID0gbmV3IE1hcChCVUlMVElOUyk7XG4gICAgZm9yIChjb25zdCBba2V5LCBidWlsdGluXSBvZiBPYmplY3QuZW50cmllcyhidWlsdGlucykpXG4gICAgICAgIG5vcm1hbGl6ZWRCdWlsdGlucy5zZXQoa2V5LCBidWlsdGluKTtcbiAgICAvLyBUaGlzIGlzIG1lYW50IHRvIGJlIHRoZSBlcXVpdmFsZW50IG9mIC9kZXYvbnVsbFxuICAgIGlmIChzdGRpbiA9PT0gbnVsbCkge1xuICAgICAgICBzdGRpbiA9IG5ldyBzdHJlYW1fMS5QYXNzVGhyb3VnaCgpO1xuICAgICAgICBzdGRpbi5lbmQoKTtcbiAgICB9XG4gICAgY29uc3QgYXN0ID0gKDAsIHBhcnNlcnNfMS5wYXJzZVNoZWxsKShjb21tYW5kLCBnbG9iKTtcbiAgICAvLyBJZiB0aGUgc2hlbGwgbGluZSBkb2Vzbid0IHVzZSB0aGUgYXJncywgaW5qZWN0IGl0IGF0IHRoZSBlbmQgb2YgdGhlXG4gICAgLy8gcmlnaHQtbW9zdCBjb21tYW5kXG4gICAgaWYgKCFsb2NhdGVBcmdzVmFyaWFibGUoYXN0KSAmJiBhc3QubGVuZ3RoID4gMCAmJiBhcmdzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgbGV0IHsgY29tbWFuZCB9ID0gYXN0W2FzdC5sZW5ndGggLSAxXTtcbiAgICAgICAgd2hpbGUgKGNvbW1hbmQudGhlbilcbiAgICAgICAgICAgIGNvbW1hbmQgPSBjb21tYW5kLnRoZW4ubGluZTtcbiAgICAgICAgbGV0IGNoYWluID0gY29tbWFuZC5jaGFpbjtcbiAgICAgICAgd2hpbGUgKGNoYWluLnRoZW4pXG4gICAgICAgICAgICBjaGFpbiA9IGNoYWluLnRoZW4uY2hhaW47XG4gICAgICAgIGlmIChjaGFpbi50eXBlID09PSBgY29tbWFuZGApIHtcbiAgICAgICAgICAgIGNoYWluLmFyZ3MgPSBjaGFpbi5hcmdzLmNvbmNhdChhcmdzLm1hcChhcmcgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IGBhcmd1bWVudGAsXG4gICAgICAgICAgICAgICAgICAgIHNlZ21lbnRzOiBbe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IGB0ZXh0YCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiBhcmcsXG4gICAgICAgICAgICAgICAgICAgICAgICB9XSxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSkpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBhd2FpdCBleGVjdXRlU2hlbGxMaW5lKGFzdCwge1xuICAgICAgICBhcmdzLFxuICAgICAgICBiYXNlRnMsXG4gICAgICAgIGJ1aWx0aW5zOiBub3JtYWxpemVkQnVpbHRpbnMsXG4gICAgICAgIGluaXRpYWxTdGRpbjogc3RkaW4sXG4gICAgICAgIGluaXRpYWxTdGRvdXQ6IHN0ZG91dCxcbiAgICAgICAgaW5pdGlhbFN0ZGVycjogc3RkZXJyLFxuICAgICAgICBnbG9iLFxuICAgIH0sIHtcbiAgICAgICAgY3dkLFxuICAgICAgICBlbnZpcm9ubWVudDogbm9ybWFsaXplZEVudixcbiAgICAgICAgZXhpdENvZGU6IG51bGwsXG4gICAgICAgIHByb2NlZHVyZXM6IHt9LFxuICAgICAgICBzdGRpbixcbiAgICAgICAgc3Rkb3V0LFxuICAgICAgICBzdGRlcnIsXG4gICAgICAgIHZhcmlhYmxlczogT2JqZWN0LmFzc2lnbih7fSwgdmFyaWFibGVzLCB7XG4gICAgICAgICAgICBbYD9gXTogMCxcbiAgICAgICAgfSksXG4gICAgICAgIG5leHRCYWNrZ3JvdW5kSm9iSW5kZXg6IDEsXG4gICAgICAgIGJhY2tncm91bmRKb2JzOiBbXSxcbiAgICB9KTtcbn1cbmV4cG9ydHMuZXhlY3V0ZSA9IGV4ZWN1dGU7XG4iLCAiLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8ubWFwYCBmb3IgYXJyYXlzIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWVcbiAqIHNob3J0aGFuZHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IFthcnJheV0gVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBtYXBwZWQgYXJyYXkuXG4gKi9cbmZ1bmN0aW9uIGFycmF5TWFwKGFycmF5LCBpdGVyYXRlZSkge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoLFxuICAgICAgcmVzdWx0ID0gQXJyYXkobGVuZ3RoKTtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHJlc3VsdFtpbmRleF0gPSBpdGVyYXRlZShhcnJheVtpbmRleF0sIGluZGV4LCBhcnJheSk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBhcnJheU1hcDtcbiIsICJ2YXIgU3ltYm9sID0gcmVxdWlyZSgnLi9fU3ltYm9sJyksXG4gICAgYXJyYXlNYXAgPSByZXF1aXJlKCcuL19hcnJheU1hcCcpLFxuICAgIGlzQXJyYXkgPSByZXF1aXJlKCcuL2lzQXJyYXknKSxcbiAgICBpc1N5bWJvbCA9IHJlcXVpcmUoJy4vaXNTeW1ib2wnKTtcblxuLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdmFyaW91cyBgTnVtYmVyYCBjb25zdGFudHMuICovXG52YXIgSU5GSU5JVFkgPSAxIC8gMDtcblxuLyoqIFVzZWQgdG8gY29udmVydCBzeW1ib2xzIHRvIHByaW1pdGl2ZXMgYW5kIHN0cmluZ3MuICovXG52YXIgc3ltYm9sUHJvdG8gPSBTeW1ib2wgPyBTeW1ib2wucHJvdG90eXBlIDogdW5kZWZpbmVkLFxuICAgIHN5bWJvbFRvU3RyaW5nID0gc3ltYm9sUHJvdG8gPyBzeW1ib2xQcm90by50b1N0cmluZyA6IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy50b1N0cmluZ2Agd2hpY2ggZG9lc24ndCBjb252ZXJ0IG51bGxpc2hcbiAqIHZhbHVlcyB0byBlbXB0eSBzdHJpbmdzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBwcm9jZXNzLlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgc3RyaW5nLlxuICovXG5mdW5jdGlvbiBiYXNlVG9TdHJpbmcodmFsdWUpIHtcbiAgLy8gRXhpdCBlYXJseSBmb3Igc3RyaW5ncyB0byBhdm9pZCBhIHBlcmZvcm1hbmNlIGhpdCBpbiBzb21lIGVudmlyb25tZW50cy5cbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAnc3RyaW5nJykge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICBpZiAoaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAvLyBSZWN1cnNpdmVseSBjb252ZXJ0IHZhbHVlcyAoc3VzY2VwdGlibGUgdG8gY2FsbCBzdGFjayBsaW1pdHMpLlxuICAgIHJldHVybiBhcnJheU1hcCh2YWx1ZSwgYmFzZVRvU3RyaW5nKSArICcnO1xuICB9XG4gIGlmIChpc1N5bWJvbCh2YWx1ZSkpIHtcbiAgICByZXR1cm4gc3ltYm9sVG9TdHJpbmcgPyBzeW1ib2xUb1N0cmluZy5jYWxsKHZhbHVlKSA6ICcnO1xuICB9XG4gIHZhciByZXN1bHQgPSAodmFsdWUgKyAnJyk7XG4gIHJldHVybiAocmVzdWx0ID09ICcwJyAmJiAoMSAvIHZhbHVlKSA9PSAtSU5GSU5JVFkpID8gJy0wJyA6IHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlVG9TdHJpbmc7XG4iLCAidmFyIGJhc2VUb1N0cmluZyA9IHJlcXVpcmUoJy4vX2Jhc2VUb1N0cmluZycpO1xuXG4vKipcbiAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBzdHJpbmcuIEFuIGVtcHR5IHN0cmluZyBpcyByZXR1cm5lZCBmb3IgYG51bGxgXG4gKiBhbmQgYHVuZGVmaW5lZGAgdmFsdWVzLiBUaGUgc2lnbiBvZiBgLTBgIGlzIHByZXNlcnZlZC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBzdHJpbmcuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8udG9TdHJpbmcobnVsbCk7XG4gKiAvLyA9PiAnJ1xuICpcbiAqIF8udG9TdHJpbmcoLTApO1xuICogLy8gPT4gJy0wJ1xuICpcbiAqIF8udG9TdHJpbmcoWzEsIDIsIDNdKTtcbiAqIC8vID0+ICcxLDIsMydcbiAqL1xuZnVuY3Rpb24gdG9TdHJpbmcodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlID09IG51bGwgPyAnJyA6IGJhc2VUb1N0cmluZyh2YWx1ZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdG9TdHJpbmc7XG4iLCAiLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5zbGljZWAgd2l0aG91dCBhbiBpdGVyYXRlZSBjYWxsIGd1YXJkLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gc2xpY2UuXG4gKiBAcGFyYW0ge251bWJlcn0gW3N0YXJ0PTBdIFRoZSBzdGFydCBwb3NpdGlvbi5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbZW5kPWFycmF5Lmxlbmd0aF0gVGhlIGVuZCBwb3NpdGlvbi5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgc2xpY2Ugb2YgYGFycmF5YC5cbiAqL1xuZnVuY3Rpb24gYmFzZVNsaWNlKGFycmF5LCBzdGFydCwgZW5kKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gIGlmIChzdGFydCA8IDApIHtcbiAgICBzdGFydCA9IC1zdGFydCA+IGxlbmd0aCA/IDAgOiAobGVuZ3RoICsgc3RhcnQpO1xuICB9XG4gIGVuZCA9IGVuZCA+IGxlbmd0aCA/IGxlbmd0aCA6IGVuZDtcbiAgaWYgKGVuZCA8IDApIHtcbiAgICBlbmQgKz0gbGVuZ3RoO1xuICB9XG4gIGxlbmd0aCA9IHN0YXJ0ID4gZW5kID8gMCA6ICgoZW5kIC0gc3RhcnQpID4+PiAwKTtcbiAgc3RhcnQgPj4+PSAwO1xuXG4gIHZhciByZXN1bHQgPSBBcnJheShsZW5ndGgpO1xuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHJlc3VsdFtpbmRleF0gPSBhcnJheVtpbmRleCArIHN0YXJ0XTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VTbGljZTtcbiIsICJ2YXIgYmFzZVNsaWNlID0gcmVxdWlyZSgnLi9fYmFzZVNsaWNlJyk7XG5cbi8qKlxuICogQ2FzdHMgYGFycmF5YCB0byBhIHNsaWNlIGlmIGl0J3MgbmVlZGVkLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAqIEBwYXJhbSB7bnVtYmVyfSBzdGFydCBUaGUgc3RhcnQgcG9zaXRpb24uXG4gKiBAcGFyYW0ge251bWJlcn0gW2VuZD1hcnJheS5sZW5ndGhdIFRoZSBlbmQgcG9zaXRpb24uXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGNhc3Qgc2xpY2UuXG4gKi9cbmZ1bmN0aW9uIGNhc3RTbGljZShhcnJheSwgc3RhcnQsIGVuZCkge1xuICB2YXIgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuICBlbmQgPSBlbmQgPT09IHVuZGVmaW5lZCA/IGxlbmd0aCA6IGVuZDtcbiAgcmV0dXJuICghc3RhcnQgJiYgZW5kID49IGxlbmd0aCkgPyBhcnJheSA6IGJhc2VTbGljZShhcnJheSwgc3RhcnQsIGVuZCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2FzdFNsaWNlO1xuIiwgIi8qKiBVc2VkIHRvIGNvbXBvc2UgdW5pY29kZSBjaGFyYWN0ZXIgY2xhc3Nlcy4gKi9cbnZhciByc0FzdHJhbFJhbmdlID0gJ1xcXFx1ZDgwMC1cXFxcdWRmZmYnLFxuICAgIHJzQ29tYm9NYXJrc1JhbmdlID0gJ1xcXFx1MDMwMC1cXFxcdTAzNmYnLFxuICAgIHJlQ29tYm9IYWxmTWFya3NSYW5nZSA9ICdcXFxcdWZlMjAtXFxcXHVmZTJmJyxcbiAgICByc0NvbWJvU3ltYm9sc1JhbmdlID0gJ1xcXFx1MjBkMC1cXFxcdTIwZmYnLFxuICAgIHJzQ29tYm9SYW5nZSA9IHJzQ29tYm9NYXJrc1JhbmdlICsgcmVDb21ib0hhbGZNYXJrc1JhbmdlICsgcnNDb21ib1N5bWJvbHNSYW5nZSxcbiAgICByc1ZhclJhbmdlID0gJ1xcXFx1ZmUwZVxcXFx1ZmUwZic7XG5cbi8qKiBVc2VkIHRvIGNvbXBvc2UgdW5pY29kZSBjYXB0dXJlIGdyb3Vwcy4gKi9cbnZhciByc1pXSiA9ICdcXFxcdTIwMGQnO1xuXG4vKiogVXNlZCB0byBkZXRlY3Qgc3RyaW5ncyB3aXRoIFt6ZXJvLXdpZHRoIGpvaW5lcnMgb3IgY29kZSBwb2ludHMgZnJvbSB0aGUgYXN0cmFsIHBsYW5lc10oaHR0cDovL2Vldi5lZS9ibG9nLzIwMTUvMDkvMTIvZGFyay1jb3JuZXJzLW9mLXVuaWNvZGUvKS4gKi9cbnZhciByZUhhc1VuaWNvZGUgPSBSZWdFeHAoJ1snICsgcnNaV0ogKyByc0FzdHJhbFJhbmdlICArIHJzQ29tYm9SYW5nZSArIHJzVmFyUmFuZ2UgKyAnXScpO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgc3RyaW5nYCBjb250YWlucyBVbmljb2RlIHN5bWJvbHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyB0byBpbnNwZWN0LlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGEgc3ltYm9sIGlzIGZvdW5kLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGhhc1VuaWNvZGUoc3RyaW5nKSB7XG4gIHJldHVybiByZUhhc1VuaWNvZGUudGVzdChzdHJpbmcpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGhhc1VuaWNvZGU7XG4iLCAiLyoqXG4gKiBDb252ZXJ0cyBhbiBBU0NJSSBgc3RyaW5nYCB0byBhbiBhcnJheS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBUaGUgc3RyaW5nIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBhcnJheS5cbiAqL1xuZnVuY3Rpb24gYXNjaWlUb0FycmF5KHN0cmluZykge1xuICByZXR1cm4gc3RyaW5nLnNwbGl0KCcnKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBhc2NpaVRvQXJyYXk7XG4iLCAiLyoqIFVzZWQgdG8gY29tcG9zZSB1bmljb2RlIGNoYXJhY3RlciBjbGFzc2VzLiAqL1xudmFyIHJzQXN0cmFsUmFuZ2UgPSAnXFxcXHVkODAwLVxcXFx1ZGZmZicsXG4gICAgcnNDb21ib01hcmtzUmFuZ2UgPSAnXFxcXHUwMzAwLVxcXFx1MDM2ZicsXG4gICAgcmVDb21ib0hhbGZNYXJrc1JhbmdlID0gJ1xcXFx1ZmUyMC1cXFxcdWZlMmYnLFxuICAgIHJzQ29tYm9TeW1ib2xzUmFuZ2UgPSAnXFxcXHUyMGQwLVxcXFx1MjBmZicsXG4gICAgcnNDb21ib1JhbmdlID0gcnNDb21ib01hcmtzUmFuZ2UgKyByZUNvbWJvSGFsZk1hcmtzUmFuZ2UgKyByc0NvbWJvU3ltYm9sc1JhbmdlLFxuICAgIHJzVmFyUmFuZ2UgPSAnXFxcXHVmZTBlXFxcXHVmZTBmJztcblxuLyoqIFVzZWQgdG8gY29tcG9zZSB1bmljb2RlIGNhcHR1cmUgZ3JvdXBzLiAqL1xudmFyIHJzQXN0cmFsID0gJ1snICsgcnNBc3RyYWxSYW5nZSArICddJyxcbiAgICByc0NvbWJvID0gJ1snICsgcnNDb21ib1JhbmdlICsgJ10nLFxuICAgIHJzRml0eiA9ICdcXFxcdWQ4M2NbXFxcXHVkZmZiLVxcXFx1ZGZmZl0nLFxuICAgIHJzTW9kaWZpZXIgPSAnKD86JyArIHJzQ29tYm8gKyAnfCcgKyByc0ZpdHogKyAnKScsXG4gICAgcnNOb25Bc3RyYWwgPSAnW14nICsgcnNBc3RyYWxSYW5nZSArICddJyxcbiAgICByc1JlZ2lvbmFsID0gJyg/OlxcXFx1ZDgzY1tcXFxcdWRkZTYtXFxcXHVkZGZmXSl7Mn0nLFxuICAgIHJzU3VyclBhaXIgPSAnW1xcXFx1ZDgwMC1cXFxcdWRiZmZdW1xcXFx1ZGMwMC1cXFxcdWRmZmZdJyxcbiAgICByc1pXSiA9ICdcXFxcdTIwMGQnO1xuXG4vKiogVXNlZCB0byBjb21wb3NlIHVuaWNvZGUgcmVnZXhlcy4gKi9cbnZhciByZU9wdE1vZCA9IHJzTW9kaWZpZXIgKyAnPycsXG4gICAgcnNPcHRWYXIgPSAnWycgKyByc1ZhclJhbmdlICsgJ10/JyxcbiAgICByc09wdEpvaW4gPSAnKD86JyArIHJzWldKICsgJyg/OicgKyBbcnNOb25Bc3RyYWwsIHJzUmVnaW9uYWwsIHJzU3VyclBhaXJdLmpvaW4oJ3wnKSArICcpJyArIHJzT3B0VmFyICsgcmVPcHRNb2QgKyAnKSonLFxuICAgIHJzU2VxID0gcnNPcHRWYXIgKyByZU9wdE1vZCArIHJzT3B0Sm9pbixcbiAgICByc1N5bWJvbCA9ICcoPzonICsgW3JzTm9uQXN0cmFsICsgcnNDb21ibyArICc/JywgcnNDb21ibywgcnNSZWdpb25hbCwgcnNTdXJyUGFpciwgcnNBc3RyYWxdLmpvaW4oJ3wnKSArICcpJztcblxuLyoqIFVzZWQgdG8gbWF0Y2ggW3N0cmluZyBzeW1ib2xzXShodHRwczovL21hdGhpYXNieW5lbnMuYmUvbm90ZXMvamF2YXNjcmlwdC11bmljb2RlKS4gKi9cbnZhciByZVVuaWNvZGUgPSBSZWdFeHAocnNGaXR6ICsgJyg/PScgKyByc0ZpdHogKyAnKXwnICsgcnNTeW1ib2wgKyByc1NlcSwgJ2cnKTtcblxuLyoqXG4gKiBDb252ZXJ0cyBhIFVuaWNvZGUgYHN0cmluZ2AgdG8gYW4gYXJyYXkuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgYXJyYXkuXG4gKi9cbmZ1bmN0aW9uIHVuaWNvZGVUb0FycmF5KHN0cmluZykge1xuICByZXR1cm4gc3RyaW5nLm1hdGNoKHJlVW5pY29kZSkgfHwgW107XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdW5pY29kZVRvQXJyYXk7XG4iLCAidmFyIGFzY2lpVG9BcnJheSA9IHJlcXVpcmUoJy4vX2FzY2lpVG9BcnJheScpLFxuICAgIGhhc1VuaWNvZGUgPSByZXF1aXJlKCcuL19oYXNVbmljb2RlJyksXG4gICAgdW5pY29kZVRvQXJyYXkgPSByZXF1aXJlKCcuL191bmljb2RlVG9BcnJheScpO1xuXG4vKipcbiAqIENvbnZlcnRzIGBzdHJpbmdgIHRvIGFuIGFycmF5LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgY29udmVydGVkIGFycmF5LlxuICovXG5mdW5jdGlvbiBzdHJpbmdUb0FycmF5KHN0cmluZykge1xuICByZXR1cm4gaGFzVW5pY29kZShzdHJpbmcpXG4gICAgPyB1bmljb2RlVG9BcnJheShzdHJpbmcpXG4gICAgOiBhc2NpaVRvQXJyYXkoc3RyaW5nKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzdHJpbmdUb0FycmF5O1xuIiwgInZhciBjYXN0U2xpY2UgPSByZXF1aXJlKCcuL19jYXN0U2xpY2UnKSxcbiAgICBoYXNVbmljb2RlID0gcmVxdWlyZSgnLi9faGFzVW5pY29kZScpLFxuICAgIHN0cmluZ1RvQXJyYXkgPSByZXF1aXJlKCcuL19zdHJpbmdUb0FycmF5JyksXG4gICAgdG9TdHJpbmcgPSByZXF1aXJlKCcuL3RvU3RyaW5nJyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGZ1bmN0aW9uIGxpa2UgYF8ubG93ZXJGaXJzdGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBtZXRob2ROYW1lIFRoZSBuYW1lIG9mIHRoZSBgU3RyaW5nYCBjYXNlIG1ldGhvZCB0byB1c2UuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBjYXNlIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBjcmVhdGVDYXNlRmlyc3QobWV0aG9kTmFtZSkge1xuICByZXR1cm4gZnVuY3Rpb24oc3RyaW5nKSB7XG4gICAgc3RyaW5nID0gdG9TdHJpbmcoc3RyaW5nKTtcblxuICAgIHZhciBzdHJTeW1ib2xzID0gaGFzVW5pY29kZShzdHJpbmcpXG4gICAgICA/IHN0cmluZ1RvQXJyYXkoc3RyaW5nKVxuICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICB2YXIgY2hyID0gc3RyU3ltYm9sc1xuICAgICAgPyBzdHJTeW1ib2xzWzBdXG4gICAgICA6IHN0cmluZy5jaGFyQXQoMCk7XG5cbiAgICB2YXIgdHJhaWxpbmcgPSBzdHJTeW1ib2xzXG4gICAgICA/IGNhc3RTbGljZShzdHJTeW1ib2xzLCAxKS5qb2luKCcnKVxuICAgICAgOiBzdHJpbmcuc2xpY2UoMSk7XG5cbiAgICByZXR1cm4gY2hyW21ldGhvZE5hbWVdKCkgKyB0cmFpbGluZztcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjcmVhdGVDYXNlRmlyc3Q7XG4iLCAidmFyIGNyZWF0ZUNhc2VGaXJzdCA9IHJlcXVpcmUoJy4vX2NyZWF0ZUNhc2VGaXJzdCcpO1xuXG4vKipcbiAqIENvbnZlcnRzIHRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgYHN0cmluZ2AgdG8gdXBwZXIgY2FzZS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgU3RyaW5nXG4gKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgY29udmVydGVkIHN0cmluZy5cbiAqIEBleGFtcGxlXG4gKlxuICogXy51cHBlckZpcnN0KCdmcmVkJyk7XG4gKiAvLyA9PiAnRnJlZCdcbiAqXG4gKiBfLnVwcGVyRmlyc3QoJ0ZSRUQnKTtcbiAqIC8vID0+ICdGUkVEJ1xuICovXG52YXIgdXBwZXJGaXJzdCA9IGNyZWF0ZUNhc2VGaXJzdCgndG9VcHBlckNhc2UnKTtcblxubW9kdWxlLmV4cG9ydHMgPSB1cHBlckZpcnN0O1xuIiwgInZhciB0b1N0cmluZyA9IHJlcXVpcmUoJy4vdG9TdHJpbmcnKSxcbiAgICB1cHBlckZpcnN0ID0gcmVxdWlyZSgnLi91cHBlckZpcnN0Jyk7XG5cbi8qKlxuICogQ29udmVydHMgdGhlIGZpcnN0IGNoYXJhY3RlciBvZiBgc3RyaW5nYCB0byB1cHBlciBjYXNlIGFuZCB0aGUgcmVtYWluaW5nXG4gKiB0byBsb3dlciBjYXNlLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMy4wLjBcbiAqIEBjYXRlZ29yeSBTdHJpbmdcbiAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIGNhcGl0YWxpemUuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBjYXBpdGFsaXplZCBzdHJpbmcuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uY2FwaXRhbGl6ZSgnRlJFRCcpO1xuICogLy8gPT4gJ0ZyZWQnXG4gKi9cbmZ1bmN0aW9uIGNhcGl0YWxpemUoc3RyaW5nKSB7XG4gIHJldHVybiB1cHBlckZpcnN0KHRvU3RyaW5nKHN0cmluZykudG9Mb3dlckNhc2UoKSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2FwaXRhbGl6ZTtcbiIsICIvKlxyXG5CcmVha3MgYSBKYXZhc2NyaXB0IHN0cmluZyBpbnRvIGluZGl2aWR1YWwgdXNlci1wZXJjZWl2ZWQgXCJjaGFyYWN0ZXJzXCIgXHJcbmNhbGxlZCBleHRlbmRlZCBncmFwaGVtZSBjbHVzdGVycyBieSBpbXBsZW1lbnRpbmcgdGhlIFVuaWNvZGUgVUFYLTI5IHN0YW5kYXJkLCB2ZXJzaW9uIDEwLjAuMFxyXG5cclxuVXNhZ2U6XHJcbnZhciBzcGxpdHRlciA9IG5ldyBHcmFwaGVtZVNwbGl0dGVyKCk7XHJcbi8vcmV0dXJucyBhbiBhcnJheSBvZiBzdHJpbmdzLCBvbmUgc3RyaW5nIGZvciBlYWNoIGdyYXBoZW1lIGNsdXN0ZXJcclxudmFyIGdyYXBoZW1lcyA9IHNwbGl0dGVyLnNwbGl0R3JhcGhlbWVzKHN0cmluZyk7IFxyXG5cclxuKi9cclxuZnVuY3Rpb24gR3JhcGhlbWVTcGxpdHRlcigpe1xyXG5cdHZhciBDUiA9IDAsXHJcblx0XHRMRiA9IDEsXHJcblx0XHRDb250cm9sID0gMixcclxuXHRcdEV4dGVuZCA9IDMsXHJcblx0XHRSZWdpb25hbF9JbmRpY2F0b3IgPSA0LFxyXG5cdFx0U3BhY2luZ01hcmsgPSA1LFxyXG5cdFx0TCA9IDYsXHJcblx0XHRWID0gNyxcclxuXHRcdFQgPSA4LFxyXG5cdFx0TFYgPSA5LFxyXG5cdFx0TFZUID0gMTAsXHJcblx0XHRPdGhlciA9IDExLFxyXG5cdFx0UHJlcGVuZCA9IDEyLFxyXG5cdFx0RV9CYXNlID0gMTMsXHJcblx0XHRFX01vZGlmaWVyID0gMTQsXHJcblx0XHRaV0ogPSAxNSxcclxuXHRcdEdsdWVfQWZ0ZXJfWndqID0gMTYsXHJcblx0XHRFX0Jhc2VfR0FaID0gMTc7XHJcblx0XHRcclxuXHQvLyBCcmVha1R5cGVzXHJcblx0dmFyIE5vdEJyZWFrID0gMCxcclxuXHRcdEJyZWFrU3RhcnQgPSAxLFxyXG5cdFx0QnJlYWsgPSAyLFxyXG5cdFx0QnJlYWtMYXN0UmVnaW9uYWwgPSAzLFxyXG5cdFx0QnJlYWtQZW51bHRpbWF0ZVJlZ2lvbmFsID0gNDtcclxuXHRcdFxyXG5cdGZ1bmN0aW9uIGlzU3Vycm9nYXRlKHN0ciwgcG9zKSB7XHJcblx0XHRyZXR1cm4gIDB4ZDgwMCA8PSBzdHIuY2hhckNvZGVBdChwb3MpICYmIHN0ci5jaGFyQ29kZUF0KHBvcykgPD0gMHhkYmZmICYmIFxyXG5cdFx0XHRcdDB4ZGMwMCA8PSBzdHIuY2hhckNvZGVBdChwb3MgKyAxKSAmJiBzdHIuY2hhckNvZGVBdChwb3MgKyAxKSA8PSAweGRmZmY7XHJcblx0fVxyXG5cdFx0XHJcblx0Ly8gUHJpdmF0ZSBmdW5jdGlvbiwgZ2V0cyBhIFVuaWNvZGUgY29kZSBwb2ludCBmcm9tIGEgSmF2YVNjcmlwdCBVVEYtMTYgc3RyaW5nXHJcblx0Ly8gaGFuZGxpbmcgc3Vycm9nYXRlIHBhaXJzIGFwcHJvcHJpYXRlbHlcclxuXHRmdW5jdGlvbiBjb2RlUG9pbnRBdChzdHIsIGlkeCl7XHJcblx0XHRpZihpZHggPT09IHVuZGVmaW5lZCl7XHJcblx0XHRcdGlkeCA9IDA7XHJcblx0XHR9XHJcblx0XHR2YXIgY29kZSA9IHN0ci5jaGFyQ29kZUF0KGlkeCk7XHJcblxyXG5cdFx0Ly8gaWYgYSBoaWdoIHN1cnJvZ2F0ZVxyXG5cdFx0aWYgKDB4RDgwMCA8PSBjb2RlICYmIGNvZGUgPD0gMHhEQkZGICYmIFxyXG5cdFx0XHRpZHggPCBzdHIubGVuZ3RoIC0gMSl7XHJcblx0XHRcdHZhciBoaSA9IGNvZGU7XHJcblx0XHRcdHZhciBsb3cgPSBzdHIuY2hhckNvZGVBdChpZHggKyAxKTtcclxuXHRcdFx0aWYgKDB4REMwMCA8PSBsb3cgJiYgbG93IDw9IDB4REZGRil7XHJcblx0XHRcdFx0cmV0dXJuICgoaGkgLSAweEQ4MDApICogMHg0MDApICsgKGxvdyAtIDB4REMwMCkgKyAweDEwMDAwO1xyXG5cdFx0XHR9XHJcblx0XHRcdHJldHVybiBoaTtcclxuXHRcdH1cclxuXHRcdFxyXG5cdFx0Ly8gaWYgYSBsb3cgc3Vycm9nYXRlXHJcblx0XHRpZiAoMHhEQzAwIDw9IGNvZGUgJiYgY29kZSA8PSAweERGRkYgJiZcclxuXHRcdFx0aWR4ID49IDEpe1xyXG5cdFx0XHR2YXIgaGkgPSBzdHIuY2hhckNvZGVBdChpZHggLSAxKTtcclxuXHRcdFx0dmFyIGxvdyA9IGNvZGU7XHJcblx0XHRcdGlmICgweEQ4MDAgPD0gaGkgJiYgaGkgPD0gMHhEQkZGKXtcclxuXHRcdFx0XHRyZXR1cm4gKChoaSAtIDB4RDgwMCkgKiAweDQwMCkgKyAobG93IC0gMHhEQzAwKSArIDB4MTAwMDA7XHJcblx0XHRcdH1cclxuXHRcdFx0cmV0dXJuIGxvdztcclxuXHRcdH1cclxuXHRcdFxyXG5cdFx0Ly9qdXN0IHJldHVybiB0aGUgY2hhciBpZiBhbiB1bm1hdGNoZWQgc3Vycm9nYXRlIGhhbGYgb3IgYSBcclxuXHRcdC8vc2luZ2xlLWNoYXIgY29kZXBvaW50XHJcblx0XHRyZXR1cm4gY29kZTtcclxuXHR9XHJcblx0XHJcblx0Ly8gUHJpdmF0ZSBmdW5jdGlvbiwgcmV0dXJucyB3aGV0aGVyIGEgYnJlYWsgaXMgYWxsb3dlZCBiZXR3ZWVuIHRoZSBcclxuXHQvLyB0d28gZ2l2ZW4gZ3JhcGhlbWUgYnJlYWtpbmcgY2xhc3Nlc1xyXG5cdGZ1bmN0aW9uIHNob3VsZEJyZWFrKHN0YXJ0LCBtaWQsIGVuZCl7XHJcblx0XHR2YXIgYWxsID0gW3N0YXJ0XS5jb25jYXQobWlkKS5jb25jYXQoW2VuZF0pO1xyXG5cdFx0dmFyIHByZXZpb3VzID0gYWxsW2FsbC5sZW5ndGggLSAyXVxyXG5cdFx0dmFyIG5leHQgPSBlbmRcclxuXHRcdFxyXG5cdFx0Ly8gTG9va2FoZWFkIHRlcm1pbnRvciBmb3I6XHJcblx0XHQvLyBHQjEwLiAoRV9CYXNlIHwgRUJHKSBFeHRlbmQqID9cdEVfTW9kaWZpZXJcclxuXHRcdHZhciBlTW9kaWZpZXJJbmRleCA9IGFsbC5sYXN0SW5kZXhPZihFX01vZGlmaWVyKVxyXG5cdFx0aWYoZU1vZGlmaWVySW5kZXggPiAxICYmXHJcblx0XHRcdGFsbC5zbGljZSgxLCBlTW9kaWZpZXJJbmRleCkuZXZlcnkoZnVuY3Rpb24oYyl7cmV0dXJuIGMgPT0gRXh0ZW5kfSkgJiZcclxuXHRcdFx0W0V4dGVuZCwgRV9CYXNlLCBFX0Jhc2VfR0FaXS5pbmRleE9mKHN0YXJ0KSA9PSAtMSl7XHJcblx0XHRcdHJldHVybiBCcmVha1xyXG5cdFx0fVxyXG5cclxuXHRcdC8vIExvb2thaGVhZCB0ZXJtaW50b3IgZm9yOlxyXG5cdFx0Ly8gR0IxMi4gXiAoUkkgUkkpKiBSSVx0P1x0UklcclxuXHRcdC8vIEdCMTMuIFteUkldIChSSSBSSSkqIFJJXHQ/XHRSSVxyXG5cdFx0dmFyIHJJSW5kZXggPSBhbGwubGFzdEluZGV4T2YoUmVnaW9uYWxfSW5kaWNhdG9yKVxyXG5cdFx0aWYocklJbmRleCA+IDAgJiZcclxuXHRcdFx0YWxsLnNsaWNlKDEsIHJJSW5kZXgpLmV2ZXJ5KGZ1bmN0aW9uKGMpe3JldHVybiBjID09IFJlZ2lvbmFsX0luZGljYXRvcn0pICYmXHJcblx0XHRcdFtQcmVwZW5kLCBSZWdpb25hbF9JbmRpY2F0b3JdLmluZGV4T2YocHJldmlvdXMpID09IC0xKSB7IFxyXG5cdFx0XHRpZihhbGwuZmlsdGVyKGZ1bmN0aW9uKGMpe3JldHVybiBjID09IFJlZ2lvbmFsX0luZGljYXRvcn0pLmxlbmd0aCAlIDIgPT0gMSkge1xyXG5cdFx0XHRcdHJldHVybiBCcmVha0xhc3RSZWdpb25hbFxyXG5cdFx0XHR9XHJcblx0XHRcdGVsc2Uge1xyXG5cdFx0XHRcdHJldHVybiBCcmVha1BlbnVsdGltYXRlUmVnaW9uYWxcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0XHJcblx0XHQvLyBHQjMuIENSIFggTEZcclxuXHRcdGlmKHByZXZpb3VzID09IENSICYmIG5leHQgPT0gTEYpe1xyXG5cdFx0XHRyZXR1cm4gTm90QnJlYWs7XHJcblx0XHR9XHJcblx0XHQvLyBHQjQuIChDb250cm9sfENSfExGKSBcdTAwRjdcclxuXHRcdGVsc2UgaWYocHJldmlvdXMgPT0gQ29udHJvbCB8fCBwcmV2aW91cyA9PSBDUiB8fCBwcmV2aW91cyA9PSBMRil7XHJcblx0XHRcdGlmKG5leHQgPT0gRV9Nb2RpZmllciAmJiBtaWQuZXZlcnkoZnVuY3Rpb24oYyl7cmV0dXJuIGMgPT0gRXh0ZW5kfSkpe1xyXG5cdFx0XHRcdHJldHVybiBCcmVha1xyXG5cdFx0XHR9XHJcblx0XHRcdGVsc2Uge1xyXG5cdFx0XHRcdHJldHVybiBCcmVha1N0YXJ0XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdC8vIEdCNS4gXHUwMEY3IChDb250cm9sfENSfExGKVxyXG5cdFx0ZWxzZSBpZihuZXh0ID09IENvbnRyb2wgfHwgbmV4dCA9PSBDUiB8fCBuZXh0ID09IExGKXtcclxuXHRcdFx0cmV0dXJuIEJyZWFrU3RhcnQ7XHJcblx0XHR9XHJcblx0XHQvLyBHQjYuIEwgWCAoTHxWfExWfExWVClcclxuXHRcdGVsc2UgaWYocHJldmlvdXMgPT0gTCAmJiBcclxuXHRcdFx0KG5leHQgPT0gTCB8fCBuZXh0ID09IFYgfHwgbmV4dCA9PSBMViB8fCBuZXh0ID09IExWVCkpe1xyXG5cdFx0XHRyZXR1cm4gTm90QnJlYWs7XHJcblx0XHR9XHJcblx0XHQvLyBHQjcuIChMVnxWKSBYIChWfFQpXHJcblx0XHRlbHNlIGlmKChwcmV2aW91cyA9PSBMViB8fCBwcmV2aW91cyA9PSBWKSAmJiBcclxuXHRcdFx0KG5leHQgPT0gViB8fCBuZXh0ID09IFQpKXtcclxuXHRcdFx0cmV0dXJuIE5vdEJyZWFrO1xyXG5cdFx0fVxyXG5cdFx0Ly8gR0I4LiAoTFZUfFQpIFggKFQpXHJcblx0XHRlbHNlIGlmKChwcmV2aW91cyA9PSBMVlQgfHwgcHJldmlvdXMgPT0gVCkgJiYgXHJcblx0XHRcdG5leHQgPT0gVCl7XHJcblx0XHRcdHJldHVybiBOb3RCcmVhaztcclxuXHRcdH1cclxuXHRcdC8vIEdCOS4gWCAoRXh0ZW5kfFpXSilcclxuXHRcdGVsc2UgaWYgKG5leHQgPT0gRXh0ZW5kIHx8IG5leHQgPT0gWldKKXtcclxuXHRcdFx0cmV0dXJuIE5vdEJyZWFrO1xyXG5cdFx0fVxyXG5cdFx0Ly8gR0I5YS4gWCBTcGFjaW5nTWFya1xyXG5cdFx0ZWxzZSBpZihuZXh0ID09IFNwYWNpbmdNYXJrKXtcclxuXHRcdFx0cmV0dXJuIE5vdEJyZWFrO1xyXG5cdFx0fVxyXG5cdFx0Ly8gR0I5Yi4gUHJlcGVuZCBYXHJcblx0XHRlbHNlIGlmIChwcmV2aW91cyA9PSBQcmVwZW5kKXtcclxuXHRcdFx0cmV0dXJuIE5vdEJyZWFrO1xyXG5cdFx0fVxyXG5cdFx0XHJcblx0XHQvLyBHQjEwLiAoRV9CYXNlIHwgRUJHKSBFeHRlbmQqID9cdEVfTW9kaWZpZXJcclxuXHRcdHZhciBwcmV2aW91c05vbkV4dGVuZEluZGV4ID0gYWxsLmluZGV4T2YoRXh0ZW5kKSAhPSAtMSA/IGFsbC5sYXN0SW5kZXhPZihFeHRlbmQpIC0gMSA6IGFsbC5sZW5ndGggLSAyO1xyXG5cdFx0aWYoW0VfQmFzZSwgRV9CYXNlX0dBWl0uaW5kZXhPZihhbGxbcHJldmlvdXNOb25FeHRlbmRJbmRleF0pICE9IC0xICYmXHJcblx0XHRcdGFsbC5zbGljZShwcmV2aW91c05vbkV4dGVuZEluZGV4ICsgMSwgLTEpLmV2ZXJ5KGZ1bmN0aW9uKGMpe3JldHVybiBjID09IEV4dGVuZH0pICYmXHJcblx0XHRcdG5leHQgPT0gRV9Nb2RpZmllcil7XHJcblx0XHRcdHJldHVybiBOb3RCcmVhaztcclxuXHRcdH1cclxuXHRcdFxyXG5cdFx0Ly8gR0IxMS4gWldKID8gKEdsdWVfQWZ0ZXJfWndqIHwgRUJHKVxyXG5cdFx0aWYocHJldmlvdXMgPT0gWldKICYmIFtHbHVlX0FmdGVyX1p3aiwgRV9CYXNlX0dBWl0uaW5kZXhPZihuZXh0KSAhPSAtMSkge1xyXG5cdFx0XHRyZXR1cm4gTm90QnJlYWs7XHJcblx0XHR9XHJcblxyXG5cdFx0Ly8gR0IxMi4gXiAoUkkgUkkpKiBSSSA/IFJJXHJcblx0XHQvLyBHQjEzLiBbXlJJXSAoUkkgUkkpKiBSSSA/IFJJXHJcblx0XHRpZihtaWQuaW5kZXhPZihSZWdpb25hbF9JbmRpY2F0b3IpICE9IC0xKSB7IFxyXG5cdFx0XHRyZXR1cm4gQnJlYWs7XHJcblx0XHR9XHJcblx0XHRpZihwcmV2aW91cyA9PSBSZWdpb25hbF9JbmRpY2F0b3IgJiYgbmV4dCA9PSBSZWdpb25hbF9JbmRpY2F0b3IpIHtcclxuXHRcdFx0cmV0dXJuIE5vdEJyZWFrO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8vIEdCOTk5LiBBbnkgPyBBbnlcclxuXHRcdHJldHVybiBCcmVha1N0YXJ0O1xyXG5cdH1cclxuXHRcclxuXHQvLyBSZXR1cm5zIHRoZSBuZXh0IGdyYXBoZW1lIGJyZWFrIGluIHRoZSBzdHJpbmcgYWZ0ZXIgdGhlIGdpdmVuIGluZGV4XHJcblx0dGhpcy5uZXh0QnJlYWsgPSBmdW5jdGlvbihzdHJpbmcsIGluZGV4KXtcclxuXHRcdGlmKGluZGV4ID09PSB1bmRlZmluZWQpe1xyXG5cdFx0XHRpbmRleCA9IDA7XHJcblx0XHR9XHJcblx0XHRpZihpbmRleCA8IDApe1xyXG5cdFx0XHRyZXR1cm4gMDtcclxuXHRcdH1cclxuXHRcdGlmKGluZGV4ID49IHN0cmluZy5sZW5ndGggLSAxKXtcclxuXHRcdFx0cmV0dXJuIHN0cmluZy5sZW5ndGg7XHJcblx0XHR9XHJcblx0XHR2YXIgcHJldiA9IGdldEdyYXBoZW1lQnJlYWtQcm9wZXJ0eShjb2RlUG9pbnRBdChzdHJpbmcsIGluZGV4KSk7XHJcblx0XHR2YXIgbWlkID0gW11cclxuXHRcdGZvciAodmFyIGkgPSBpbmRleCArIDE7IGkgPCBzdHJpbmcubGVuZ3RoOyBpKyspIHtcclxuXHRcdFx0Ly8gY2hlY2sgZm9yIGFscmVhZHkgcHJvY2Vzc2VkIGxvdyBzdXJyb2dhdGVzXHJcblx0XHRcdGlmKGlzU3Vycm9nYXRlKHN0cmluZywgaSAtIDEpKXtcclxuXHRcdFx0XHRjb250aW51ZTtcclxuXHRcdFx0fVxyXG5cdFx0XHJcblx0XHRcdHZhciBuZXh0ID0gZ2V0R3JhcGhlbWVCcmVha1Byb3BlcnR5KGNvZGVQb2ludEF0KHN0cmluZywgaSkpO1xyXG5cdFx0XHRpZihzaG91bGRCcmVhayhwcmV2LCBtaWQsIG5leHQpKXtcclxuXHRcdFx0XHRyZXR1cm4gaTtcclxuXHRcdFx0fVxyXG5cdFx0XHRcclxuXHRcdFx0bWlkLnB1c2gobmV4dCk7XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gc3RyaW5nLmxlbmd0aDtcclxuXHR9O1xyXG5cdFxyXG5cdC8vIEJyZWFrcyB0aGUgZ2l2ZW4gc3RyaW5nIGludG8gYW4gYXJyYXkgb2YgZ3JhcGhlbWUgY2x1c3RlciBzdHJpbmdzXHJcblx0dGhpcy5zcGxpdEdyYXBoZW1lcyA9IGZ1bmN0aW9uKHN0cil7XHJcblx0XHR2YXIgcmVzID0gW107XHJcblx0XHR2YXIgaW5kZXggPSAwO1xyXG5cdFx0dmFyIGJyaztcclxuXHRcdHdoaWxlKChicmsgPSB0aGlzLm5leHRCcmVhayhzdHIsIGluZGV4KSkgPCBzdHIubGVuZ3RoKXtcclxuXHRcdFx0cmVzLnB1c2goc3RyLnNsaWNlKGluZGV4LCBicmspKTtcclxuXHRcdFx0aW5kZXggPSBicms7XHJcblx0XHR9XHJcblx0XHRpZihpbmRleCA8IHN0ci5sZW5ndGgpe1xyXG5cdFx0XHRyZXMucHVzaChzdHIuc2xpY2UoaW5kZXgpKTtcclxuXHRcdH1cclxuXHRcdHJldHVybiByZXM7XHJcblx0fTtcclxuXHJcblx0Ly8gUmV0dXJucyB0aGUgaXRlcmF0b3Igb2YgZ3JhcGhlbWUgY2x1c3RlcnMgdGhlcmUgYXJlIGluIHRoZSBnaXZlbiBzdHJpbmdcclxuXHR0aGlzLml0ZXJhdGVHcmFwaGVtZXMgPSBmdW5jdGlvbihzdHIpIHtcclxuXHRcdHZhciBpbmRleCA9IDA7XHJcblx0XHR2YXIgcmVzID0ge1xyXG5cdFx0XHRuZXh0OiAoZnVuY3Rpb24oKSB7XHJcblx0XHRcdFx0dmFyIHZhbHVlO1xyXG5cdFx0XHRcdHZhciBicms7XHJcblx0XHRcdFx0aWYgKChicmsgPSB0aGlzLm5leHRCcmVhayhzdHIsIGluZGV4KSkgPCBzdHIubGVuZ3RoKSB7XHJcblx0XHRcdFx0XHR2YWx1ZSA9IHN0ci5zbGljZShpbmRleCwgYnJrKTtcclxuXHRcdFx0XHRcdGluZGV4ID0gYnJrO1xyXG5cdFx0XHRcdFx0cmV0dXJuIHsgdmFsdWU6IHZhbHVlLCBkb25lOiBmYWxzZSB9O1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRpZiAoaW5kZXggPCBzdHIubGVuZ3RoKSB7XHJcblx0XHRcdFx0XHR2YWx1ZSA9IHN0ci5zbGljZShpbmRleCk7XHJcblx0XHRcdFx0XHRpbmRleCA9IHN0ci5sZW5ndGg7XHJcblx0XHRcdFx0XHRyZXR1cm4geyB2YWx1ZTogdmFsdWUsIGRvbmU6IGZhbHNlIH07XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdHJldHVybiB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfTtcclxuXHRcdFx0fSkuYmluZCh0aGlzKVxyXG5cdFx0fTtcclxuXHRcdC8vIEVTMjAxNSBAQGl0ZXJhdG9yIG1ldGhvZCAoaXRlcmFibGUpIGZvciBzcHJlYWQgc3ludGF4IGFuZCBmb3IuLi5vZiBzdGF0ZW1lbnRcclxuXHRcdGlmICh0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wuaXRlcmF0b3IpIHtcclxuXHRcdFx0cmVzW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHtyZXR1cm4gcmVzfTtcclxuXHRcdH1cclxuXHRcdHJldHVybiByZXM7XHJcblx0fTtcclxuXHJcblx0Ly8gUmV0dXJucyB0aGUgbnVtYmVyIG9mIGdyYXBoZW1lIGNsdXN0ZXJzIHRoZXJlIGFyZSBpbiB0aGUgZ2l2ZW4gc3RyaW5nXHJcblx0dGhpcy5jb3VudEdyYXBoZW1lcyA9IGZ1bmN0aW9uKHN0cil7XHJcblx0XHR2YXIgY291bnQgPSAwO1xyXG5cdFx0dmFyIGluZGV4ID0gMDtcclxuXHRcdHZhciBicms7XHJcblx0XHR3aGlsZSgoYnJrID0gdGhpcy5uZXh0QnJlYWsoc3RyLCBpbmRleCkpIDwgc3RyLmxlbmd0aCl7XHJcblx0XHRcdGluZGV4ID0gYnJrO1xyXG5cdFx0XHRjb3VudCsrO1xyXG5cdFx0fVxyXG5cdFx0aWYoaW5kZXggPCBzdHIubGVuZ3RoKXtcclxuXHRcdFx0Y291bnQrKztcclxuXHRcdH1cclxuXHRcdHJldHVybiBjb3VudDtcclxuXHR9O1xyXG5cdFxyXG5cdC8vZ2l2ZW4gYSBVbmljb2RlIGNvZGUgcG9pbnQsIGRldGVybWluZXMgdGhpcyBzeW1ib2wncyBncmFwaGVtZSBicmVhayBwcm9wZXJ0eVxyXG5cdGZ1bmN0aW9uIGdldEdyYXBoZW1lQnJlYWtQcm9wZXJ0eShjb2RlKXtcclxuXHRcdFxyXG5cdFx0Ly9ncmFwaGVtZSBicmVhayBwcm9wZXJ0eSBmb3IgVW5pY29kZSAxMC4wLjAsIFxyXG5cdFx0Ly90YWtlbiBmcm9tIGh0dHA6Ly93d3cudW5pY29kZS5vcmcvUHVibGljLzEwLjAuMC91Y2QvYXV4aWxpYXJ5L0dyYXBoZW1lQnJlYWtQcm9wZXJ0eS50eHRcclxuXHRcdC8vYW5kIGFkYXB0ZWQgdG8gSmF2YVNjcmlwdCBydWxlc1xyXG5cdFx0XHJcblx0XHRpZihcdFx0XHJcblx0XHQoMHgwNjAwIDw9IGNvZGUgJiYgY29kZSA8PSAweDA2MDUpIHx8IC8vIENmICAgWzZdIEFSQUJJQyBOVU1CRVIgU0lHTi4uQVJBQklDIE5VTUJFUiBNQVJLIEFCT1ZFXHJcblx0XHQweDA2REQgPT0gY29kZSB8fCAvLyBDZiAgICAgICBBUkFCSUMgRU5EIE9GIEFZQUhcclxuXHRcdDB4MDcwRiA9PSBjb2RlIHx8IC8vIENmICAgICAgIFNZUklBQyBBQkJSRVZJQVRJT04gTUFSS1xyXG5cdFx0MHgwOEUyID09IGNvZGUgfHwgLy8gQ2YgICAgICAgQVJBQklDIERJU1BVVEVEIEVORCBPRiBBWUFIXHJcblx0XHQweDBENEUgPT0gY29kZSB8fCAvLyBMbyAgICAgICBNQUxBWUFMQU0gTEVUVEVSIERPVCBSRVBIXHJcblx0XHQweDExMEJEID09IGNvZGUgfHwgLy8gQ2YgICAgICAgS0FJVEhJIE5VTUJFUiBTSUdOXHJcblx0XHQoMHgxMTFDMiA8PSBjb2RlICYmIGNvZGUgPD0gMHgxMTFDMykgfHwgLy8gTG8gICBbMl0gU0hBUkFEQSBTSUdOIEpJSFZBTVVMSVlBLi5TSEFSQURBIFNJR04gVVBBREhNQU5JWUFcclxuXHRcdDB4MTFBM0EgPT0gY29kZSB8fCAvLyBMbyAgICAgICBaQU5BQkFaQVIgU1FVQVJFIENMVVNURVItSU5JVElBTCBMRVRURVIgUkFcclxuXHRcdCgweDExQTg2IDw9IGNvZGUgJiYgY29kZSA8PSAweDExQTg5KSB8fCAvLyBMbyAgIFs0XSBTT1lPTUJPIENMVVNURVItSU5JVElBTCBMRVRURVIgUkEuLlNPWU9NQk8gQ0xVU1RFUi1JTklUSUFMIExFVFRFUiBTQVxyXG5cdFx0MHgxMUQ0NiA9PSBjb2RlIC8vIExvICAgICAgIE1BU0FSQU0gR09OREkgUkVQSEFcclxuXHRcdCl7XHJcblx0XHRcdHJldHVybiBQcmVwZW5kO1xyXG5cdFx0fVxyXG5cdFx0aWYoXHJcblx0XHQweDAwMEQgPT0gY29kZSAvLyBDYyAgICAgICA8Y29udHJvbC0wMDBEPlxyXG5cdFx0KXtcclxuXHRcdFx0cmV0dXJuIENSO1xyXG5cdFx0fVxyXG5cdFx0XHJcblx0XHRpZihcclxuXHRcdDB4MDAwQSA9PSBjb2RlIC8vIENjICAgICAgIDxjb250cm9sLTAwMEE+XHJcblx0XHQpe1xyXG5cdFx0XHRyZXR1cm4gTEY7XHJcblx0XHR9XHJcblx0XHRcclxuXHRcdFxyXG5cdFx0aWYoXHJcblx0XHQoMHgwMDAwIDw9IGNvZGUgJiYgY29kZSA8PSAweDAwMDkpIHx8IC8vIENjICBbMTBdIDxjb250cm9sLTAwMDA+Li48Y29udHJvbC0wMDA5PlxyXG5cdFx0KDB4MDAwQiA8PSBjb2RlICYmIGNvZGUgPD0gMHgwMDBDKSB8fCAvLyBDYyAgIFsyXSA8Y29udHJvbC0wMDBCPi4uPGNvbnRyb2wtMDAwQz5cclxuXHRcdCgweDAwMEUgPD0gY29kZSAmJiBjb2RlIDw9IDB4MDAxRikgfHwgLy8gQ2MgIFsxOF0gPGNvbnRyb2wtMDAwRT4uLjxjb250cm9sLTAwMUY+XHJcblx0XHQoMHgwMDdGIDw9IGNvZGUgJiYgY29kZSA8PSAweDAwOUYpIHx8IC8vIENjICBbMzNdIDxjb250cm9sLTAwN0Y+Li48Y29udHJvbC0wMDlGPlxyXG5cdFx0MHgwMEFEID09IGNvZGUgfHwgLy8gQ2YgICAgICAgU09GVCBIWVBIRU5cclxuXHRcdDB4MDYxQyA9PSBjb2RlIHx8IC8vIENmICAgICAgIEFSQUJJQyBMRVRURVIgTUFSS1xyXG5cdFxyXG5cdFx0MHgxODBFID09IGNvZGUgfHwgLy8gQ2YgICAgICAgTU9OR09MSUFOIFZPV0VMIFNFUEFSQVRPUlxyXG5cdFx0MHgyMDBCID09IGNvZGUgfHwgLy8gQ2YgICAgICAgWkVSTyBXSURUSCBTUEFDRVxyXG5cdFx0KDB4MjAwRSA8PSBjb2RlICYmIGNvZGUgPD0gMHgyMDBGKSB8fCAvLyBDZiAgIFsyXSBMRUZULVRPLVJJR0hUIE1BUksuLlJJR0hULVRPLUxFRlQgTUFSS1xyXG5cdFx0MHgyMDI4ID09IGNvZGUgfHwgLy8gWmwgICAgICAgTElORSBTRVBBUkFUT1JcclxuXHRcdDB4MjAyOSA9PSBjb2RlIHx8IC8vIFpwICAgICAgIFBBUkFHUkFQSCBTRVBBUkFUT1JcclxuXHRcdCgweDIwMkEgPD0gY29kZSAmJiBjb2RlIDw9IDB4MjAyRSkgfHwgLy8gQ2YgICBbNV0gTEVGVC1UTy1SSUdIVCBFTUJFRERJTkcuLlJJR0hULVRPLUxFRlQgT1ZFUlJJREVcclxuXHRcdCgweDIwNjAgPD0gY29kZSAmJiBjb2RlIDw9IDB4MjA2NCkgfHwgLy8gQ2YgICBbNV0gV09SRCBKT0lORVIuLklOVklTSUJMRSBQTFVTXHJcblx0XHQweDIwNjUgPT0gY29kZSB8fCAvLyBDbiAgICAgICA8cmVzZXJ2ZWQtMjA2NT5cclxuXHRcdCgweDIwNjYgPD0gY29kZSAmJiBjb2RlIDw9IDB4MjA2RikgfHwgLy8gQ2YgIFsxMF0gTEVGVC1UTy1SSUdIVCBJU09MQVRFLi5OT01JTkFMIERJR0lUIFNIQVBFU1xyXG5cdFx0KDB4RDgwMCA8PSBjb2RlICYmIGNvZGUgPD0gMHhERkZGKSB8fCAvLyBDcyBbMjA0OF0gPHN1cnJvZ2F0ZS1EODAwPi4uPHN1cnJvZ2F0ZS1ERkZGPlxyXG5cdFx0MHhGRUZGID09IGNvZGUgfHwgLy8gQ2YgICAgICAgWkVSTyBXSURUSCBOTy1CUkVBSyBTUEFDRVxyXG5cdFx0KDB4RkZGMCA8PSBjb2RlICYmIGNvZGUgPD0gMHhGRkY4KSB8fCAvLyBDbiAgIFs5XSA8cmVzZXJ2ZWQtRkZGMD4uLjxyZXNlcnZlZC1GRkY4PlxyXG5cdFx0KDB4RkZGOSA8PSBjb2RlICYmIGNvZGUgPD0gMHhGRkZCKSB8fCAvLyBDZiAgIFszXSBJTlRFUkxJTkVBUiBBTk5PVEFUSU9OIEFOQ0hPUi4uSU5URVJMSU5FQVIgQU5OT1RBVElPTiBURVJNSU5BVE9SXHJcblx0XHQoMHgxQkNBMCA8PSBjb2RlICYmIGNvZGUgPD0gMHgxQkNBMykgfHwgLy8gQ2YgICBbNF0gU0hPUlRIQU5EIEZPUk1BVCBMRVRURVIgT1ZFUkxBUC4uU0hPUlRIQU5EIEZPUk1BVCBVUCBTVEVQXHJcblx0XHQoMHgxRDE3MyA8PSBjb2RlICYmIGNvZGUgPD0gMHgxRDE3QSkgfHwgLy8gQ2YgICBbOF0gTVVTSUNBTCBTWU1CT0wgQkVHSU4gQkVBTS4uTVVTSUNBTCBTWU1CT0wgRU5EIFBIUkFTRVxyXG5cdFx0MHhFMDAwMCA9PSBjb2RlIHx8IC8vIENuICAgICAgIDxyZXNlcnZlZC1FMDAwMD5cclxuXHRcdDB4RTAwMDEgPT0gY29kZSB8fCAvLyBDZiAgICAgICBMQU5HVUFHRSBUQUdcclxuXHRcdCgweEUwMDAyIDw9IGNvZGUgJiYgY29kZSA8PSAweEUwMDFGKSB8fCAvLyBDbiAgWzMwXSA8cmVzZXJ2ZWQtRTAwMDI+Li48cmVzZXJ2ZWQtRTAwMUY+XHJcblx0XHQoMHhFMDA4MCA8PSBjb2RlICYmIGNvZGUgPD0gMHhFMDBGRikgfHwgLy8gQ24gWzEyOF0gPHJlc2VydmVkLUUwMDgwPi4uPHJlc2VydmVkLUUwMEZGPlxyXG5cdFx0KDB4RTAxRjAgPD0gY29kZSAmJiBjb2RlIDw9IDB4RTBGRkYpIC8vIENuIFszNjAwXSA8cmVzZXJ2ZWQtRTAxRjA+Li48cmVzZXJ2ZWQtRTBGRkY+XHJcblx0XHQpe1xyXG5cdFx0XHRyZXR1cm4gQ29udHJvbDtcclxuXHRcdH1cclxuXHRcdFxyXG5cdFx0XHJcblx0XHRpZihcclxuXHRcdCgweDAzMDAgPD0gY29kZSAmJiBjb2RlIDw9IDB4MDM2RikgfHwgLy8gTW4gWzExMl0gQ09NQklOSU5HIEdSQVZFIEFDQ0VOVC4uQ09NQklOSU5HIExBVElOIFNNQUxMIExFVFRFUiBYXHJcblx0XHQoMHgwNDgzIDw9IGNvZGUgJiYgY29kZSA8PSAweDA0ODcpIHx8IC8vIE1uICAgWzVdIENPTUJJTklORyBDWVJJTExJQyBUSVRMTy4uQ09NQklOSU5HIENZUklMTElDIFBPS1JZVElFXHJcblx0XHQoMHgwNDg4IDw9IGNvZGUgJiYgY29kZSA8PSAweDA0ODkpIHx8IC8vIE1lICAgWzJdIENPTUJJTklORyBDWVJJTExJQyBIVU5EUkVEIFRIT1VTQU5EUyBTSUdOLi5DT01CSU5JTkcgQ1lSSUxMSUMgTUlMTElPTlMgU0lHTlxyXG5cdFx0KDB4MDU5MSA8PSBjb2RlICYmIGNvZGUgPD0gMHgwNUJEKSB8fCAvLyBNbiAgWzQ1XSBIRUJSRVcgQUNDRU5UIEVUTkFIVEEuLkhFQlJFVyBQT0lOVCBNRVRFR1xyXG5cdFx0MHgwNUJGID09IGNvZGUgfHwgLy8gTW4gICAgICAgSEVCUkVXIFBPSU5UIFJBRkVcclxuXHRcdCgweDA1QzEgPD0gY29kZSAmJiBjb2RlIDw9IDB4MDVDMikgfHwgLy8gTW4gICBbMl0gSEVCUkVXIFBPSU5UIFNISU4gRE9ULi5IRUJSRVcgUE9JTlQgU0lOIERPVFxyXG5cdFx0KDB4MDVDNCA8PSBjb2RlICYmIGNvZGUgPD0gMHgwNUM1KSB8fCAvLyBNbiAgIFsyXSBIRUJSRVcgTUFSSyBVUFBFUiBET1QuLkhFQlJFVyBNQVJLIExPV0VSIERPVFxyXG5cdFx0MHgwNUM3ID09IGNvZGUgfHwgLy8gTW4gICAgICAgSEVCUkVXIFBPSU5UIFFBTUFUUyBRQVRBTlxyXG5cdFx0KDB4MDYxMCA8PSBjb2RlICYmIGNvZGUgPD0gMHgwNjFBKSB8fCAvLyBNbiAgWzExXSBBUkFCSUMgU0lHTiBTQUxMQUxMQUhPVSBBTEFZSEUgV0FTU0FMTEFNLi5BUkFCSUMgU01BTEwgS0FTUkFcclxuXHRcdCgweDA2NEIgPD0gY29kZSAmJiBjb2RlIDw9IDB4MDY1RikgfHwgLy8gTW4gIFsyMV0gQVJBQklDIEZBVEhBVEFOLi5BUkFCSUMgV0FWWSBIQU1aQSBCRUxPV1xyXG5cdFx0MHgwNjcwID09IGNvZGUgfHwgLy8gTW4gICAgICAgQVJBQklDIExFVFRFUiBTVVBFUlNDUklQVCBBTEVGXHJcblx0XHQoMHgwNkQ2IDw9IGNvZGUgJiYgY29kZSA8PSAweDA2REMpIHx8IC8vIE1uICAgWzddIEFSQUJJQyBTTUFMTCBISUdIIExJR0FUVVJFIFNBRCBXSVRIIExBTSBXSVRIIEFMRUYgTUFLU1VSQS4uQVJBQklDIFNNQUxMIEhJR0ggU0VFTlxyXG5cdFx0KDB4MDZERiA8PSBjb2RlICYmIGNvZGUgPD0gMHgwNkU0KSB8fCAvLyBNbiAgIFs2XSBBUkFCSUMgU01BTEwgSElHSCBST1VOREVEIFpFUk8uLkFSQUJJQyBTTUFMTCBISUdIIE1BRERBXHJcblx0XHQoMHgwNkU3IDw9IGNvZGUgJiYgY29kZSA8PSAweDA2RTgpIHx8IC8vIE1uICAgWzJdIEFSQUJJQyBTTUFMTCBISUdIIFlFSC4uQVJBQklDIFNNQUxMIEhJR0ggTk9PTlxyXG5cdFx0KDB4MDZFQSA8PSBjb2RlICYmIGNvZGUgPD0gMHgwNkVEKSB8fCAvLyBNbiAgIFs0XSBBUkFCSUMgRU1QVFkgQ0VOVFJFIExPVyBTVE9QLi5BUkFCSUMgU01BTEwgTE9XIE1FRU1cclxuXHRcdDB4MDcxMSA9PSBjb2RlIHx8IC8vIE1uICAgICAgIFNZUklBQyBMRVRURVIgU1VQRVJTQ1JJUFQgQUxBUEhcclxuXHRcdCgweDA3MzAgPD0gY29kZSAmJiBjb2RlIDw9IDB4MDc0QSkgfHwgLy8gTW4gIFsyN10gU1lSSUFDIFBUSEFIQSBBQk9WRS4uU1lSSUFDIEJBUlJFS0hcclxuXHRcdCgweDA3QTYgPD0gY29kZSAmJiBjb2RlIDw9IDB4MDdCMCkgfHwgLy8gTW4gIFsxMV0gVEhBQU5BIEFCQUZJTEkuLlRIQUFOQSBTVUtVTlxyXG5cdFx0KDB4MDdFQiA8PSBjb2RlICYmIGNvZGUgPD0gMHgwN0YzKSB8fCAvLyBNbiAgIFs5XSBOS08gQ09NQklOSU5HIFNIT1JUIEhJR0ggVE9ORS4uTktPIENPTUJJTklORyBET1VCTEUgRE9UIEFCT1ZFXHJcblx0XHQoMHgwODE2IDw9IGNvZGUgJiYgY29kZSA8PSAweDA4MTkpIHx8IC8vIE1uICAgWzRdIFNBTUFSSVRBTiBNQVJLIElOLi5TQU1BUklUQU4gTUFSSyBEQUdFU0hcclxuXHRcdCgweDA4MUIgPD0gY29kZSAmJiBjb2RlIDw9IDB4MDgyMykgfHwgLy8gTW4gICBbOV0gU0FNQVJJVEFOIE1BUksgRVBFTlRIRVRJQyBZVVQuLlNBTUFSSVRBTiBWT1dFTCBTSUdOIEFcclxuXHRcdCgweDA4MjUgPD0gY29kZSAmJiBjb2RlIDw9IDB4MDgyNykgfHwgLy8gTW4gICBbM10gU0FNQVJJVEFOIFZPV0VMIFNJR04gU0hPUlQgQS4uU0FNQVJJVEFOIFZPV0VMIFNJR04gVVxyXG5cdFx0KDB4MDgyOSA8PSBjb2RlICYmIGNvZGUgPD0gMHgwODJEKSB8fCAvLyBNbiAgIFs1XSBTQU1BUklUQU4gVk9XRUwgU0lHTiBMT05HIEkuLlNBTUFSSVRBTiBNQVJLIE5FUVVEQUFcclxuXHRcdCgweDA4NTkgPD0gY29kZSAmJiBjb2RlIDw9IDB4MDg1QikgfHwgLy8gTW4gICBbM10gTUFOREFJQyBBRkZSSUNBVElPTiBNQVJLLi5NQU5EQUlDIEdFTUlOQVRJT04gTUFSS1xyXG5cdFx0KDB4MDhENCA8PSBjb2RlICYmIGNvZGUgPD0gMHgwOEUxKSB8fCAvLyBNbiAgWzE0XSBBUkFCSUMgU01BTEwgSElHSCBXT1JEIEFSLVJVQi4uQVJBQklDIFNNQUxMIEhJR0ggU0lHTiBTQUZIQVxyXG5cdFx0KDB4MDhFMyA8PSBjb2RlICYmIGNvZGUgPD0gMHgwOTAyKSB8fCAvLyBNbiAgWzMyXSBBUkFCSUMgVFVSTkVEIERBTU1BIEJFTE9XLi5ERVZBTkFHQVJJIFNJR04gQU5VU1ZBUkFcclxuXHRcdDB4MDkzQSA9PSBjb2RlIHx8IC8vIE1uICAgICAgIERFVkFOQUdBUkkgVk9XRUwgU0lHTiBPRVxyXG5cdFx0MHgwOTNDID09IGNvZGUgfHwgLy8gTW4gICAgICAgREVWQU5BR0FSSSBTSUdOIE5VS1RBXHJcblx0XHQoMHgwOTQxIDw9IGNvZGUgJiYgY29kZSA8PSAweDA5NDgpIHx8IC8vIE1uICAgWzhdIERFVkFOQUdBUkkgVk9XRUwgU0lHTiBVLi5ERVZBTkFHQVJJIFZPV0VMIFNJR04gQUlcclxuXHRcdDB4MDk0RCA9PSBjb2RlIHx8IC8vIE1uICAgICAgIERFVkFOQUdBUkkgU0lHTiBWSVJBTUFcclxuXHRcdCgweDA5NTEgPD0gY29kZSAmJiBjb2RlIDw9IDB4MDk1NykgfHwgLy8gTW4gICBbN10gREVWQU5BR0FSSSBTVFJFU1MgU0lHTiBVREFUVEEuLkRFVkFOQUdBUkkgVk9XRUwgU0lHTiBVVUVcclxuXHRcdCgweDA5NjIgPD0gY29kZSAmJiBjb2RlIDw9IDB4MDk2MykgfHwgLy8gTW4gICBbMl0gREVWQU5BR0FSSSBWT1dFTCBTSUdOIFZPQ0FMSUMgTC4uREVWQU5BR0FSSSBWT1dFTCBTSUdOIFZPQ0FMSUMgTExcclxuXHRcdDB4MDk4MSA9PSBjb2RlIHx8IC8vIE1uICAgICAgIEJFTkdBTEkgU0lHTiBDQU5EUkFCSU5EVVxyXG5cdFx0MHgwOUJDID09IGNvZGUgfHwgLy8gTW4gICAgICAgQkVOR0FMSSBTSUdOIE5VS1RBXHJcblx0XHQweDA5QkUgPT0gY29kZSB8fCAvLyBNYyAgICAgICBCRU5HQUxJIFZPV0VMIFNJR04gQUFcclxuXHRcdCgweDA5QzEgPD0gY29kZSAmJiBjb2RlIDw9IDB4MDlDNCkgfHwgLy8gTW4gICBbNF0gQkVOR0FMSSBWT1dFTCBTSUdOIFUuLkJFTkdBTEkgVk9XRUwgU0lHTiBWT0NBTElDIFJSXHJcblx0XHQweDA5Q0QgPT0gY29kZSB8fCAvLyBNbiAgICAgICBCRU5HQUxJIFNJR04gVklSQU1BXHJcblx0XHQweDA5RDcgPT0gY29kZSB8fCAvLyBNYyAgICAgICBCRU5HQUxJIEFVIExFTkdUSCBNQVJLXHJcblx0XHQoMHgwOUUyIDw9IGNvZGUgJiYgY29kZSA8PSAweDA5RTMpIHx8IC8vIE1uICAgWzJdIEJFTkdBTEkgVk9XRUwgU0lHTiBWT0NBTElDIEwuLkJFTkdBTEkgVk9XRUwgU0lHTiBWT0NBTElDIExMXHJcblx0XHQoMHgwQTAxIDw9IGNvZGUgJiYgY29kZSA8PSAweDBBMDIpIHx8IC8vIE1uICAgWzJdIEdVUk1VS0hJIFNJR04gQURBSyBCSU5ESS4uR1VSTVVLSEkgU0lHTiBCSU5ESVxyXG5cdFx0MHgwQTNDID09IGNvZGUgfHwgLy8gTW4gICAgICAgR1VSTVVLSEkgU0lHTiBOVUtUQVxyXG5cdFx0KDB4MEE0MSA8PSBjb2RlICYmIGNvZGUgPD0gMHgwQTQyKSB8fCAvLyBNbiAgIFsyXSBHVVJNVUtISSBWT1dFTCBTSUdOIFUuLkdVUk1VS0hJIFZPV0VMIFNJR04gVVVcclxuXHRcdCgweDBBNDcgPD0gY29kZSAmJiBjb2RlIDw9IDB4MEE0OCkgfHwgLy8gTW4gICBbMl0gR1VSTVVLSEkgVk9XRUwgU0lHTiBFRS4uR1VSTVVLSEkgVk9XRUwgU0lHTiBBSVxyXG5cdFx0KDB4MEE0QiA8PSBjb2RlICYmIGNvZGUgPD0gMHgwQTREKSB8fCAvLyBNbiAgIFszXSBHVVJNVUtISSBWT1dFTCBTSUdOIE9PLi5HVVJNVUtISSBTSUdOIFZJUkFNQVxyXG5cdFx0MHgwQTUxID09IGNvZGUgfHwgLy8gTW4gICAgICAgR1VSTVVLSEkgU0lHTiBVREFBVFxyXG5cdFx0KDB4MEE3MCA8PSBjb2RlICYmIGNvZGUgPD0gMHgwQTcxKSB8fCAvLyBNbiAgIFsyXSBHVVJNVUtISSBUSVBQSS4uR1VSTVVLSEkgQUREQUtcclxuXHRcdDB4MEE3NSA9PSBjb2RlIHx8IC8vIE1uICAgICAgIEdVUk1VS0hJIFNJR04gWUFLQVNIXHJcblx0XHQoMHgwQTgxIDw9IGNvZGUgJiYgY29kZSA8PSAweDBBODIpIHx8IC8vIE1uICAgWzJdIEdVSkFSQVRJIFNJR04gQ0FORFJBQklORFUuLkdVSkFSQVRJIFNJR04gQU5VU1ZBUkFcclxuXHRcdDB4MEFCQyA9PSBjb2RlIHx8IC8vIE1uICAgICAgIEdVSkFSQVRJIFNJR04gTlVLVEFcclxuXHRcdCgweDBBQzEgPD0gY29kZSAmJiBjb2RlIDw9IDB4MEFDNSkgfHwgLy8gTW4gICBbNV0gR1VKQVJBVEkgVk9XRUwgU0lHTiBVLi5HVUpBUkFUSSBWT1dFTCBTSUdOIENBTkRSQSBFXHJcblx0XHQoMHgwQUM3IDw9IGNvZGUgJiYgY29kZSA8PSAweDBBQzgpIHx8IC8vIE1uICAgWzJdIEdVSkFSQVRJIFZPV0VMIFNJR04gRS4uR1VKQVJBVEkgVk9XRUwgU0lHTiBBSVxyXG5cdFx0MHgwQUNEID09IGNvZGUgfHwgLy8gTW4gICAgICAgR1VKQVJBVEkgU0lHTiBWSVJBTUFcclxuXHRcdCgweDBBRTIgPD0gY29kZSAmJiBjb2RlIDw9IDB4MEFFMykgfHwgLy8gTW4gICBbMl0gR1VKQVJBVEkgVk9XRUwgU0lHTiBWT0NBTElDIEwuLkdVSkFSQVRJIFZPV0VMIFNJR04gVk9DQUxJQyBMTFxyXG5cdFx0KDB4MEFGQSA8PSBjb2RlICYmIGNvZGUgPD0gMHgwQUZGKSB8fCAvLyBNbiAgIFs2XSBHVUpBUkFUSSBTSUdOIFNVS1VOLi5HVUpBUkFUSSBTSUdOIFRXTy1DSVJDTEUgTlVLVEEgQUJPVkVcclxuXHRcdDB4MEIwMSA9PSBjb2RlIHx8IC8vIE1uICAgICAgIE9SSVlBIFNJR04gQ0FORFJBQklORFVcclxuXHRcdDB4MEIzQyA9PSBjb2RlIHx8IC8vIE1uICAgICAgIE9SSVlBIFNJR04gTlVLVEFcclxuXHRcdDB4MEIzRSA9PSBjb2RlIHx8IC8vIE1jICAgICAgIE9SSVlBIFZPV0VMIFNJR04gQUFcclxuXHRcdDB4MEIzRiA9PSBjb2RlIHx8IC8vIE1uICAgICAgIE9SSVlBIFZPV0VMIFNJR04gSVxyXG5cdFx0KDB4MEI0MSA8PSBjb2RlICYmIGNvZGUgPD0gMHgwQjQ0KSB8fCAvLyBNbiAgIFs0XSBPUklZQSBWT1dFTCBTSUdOIFUuLk9SSVlBIFZPV0VMIFNJR04gVk9DQUxJQyBSUlxyXG5cdFx0MHgwQjREID09IGNvZGUgfHwgLy8gTW4gICAgICAgT1JJWUEgU0lHTiBWSVJBTUFcclxuXHRcdDB4MEI1NiA9PSBjb2RlIHx8IC8vIE1uICAgICAgIE9SSVlBIEFJIExFTkdUSCBNQVJLXHJcblx0XHQweDBCNTcgPT0gY29kZSB8fCAvLyBNYyAgICAgICBPUklZQSBBVSBMRU5HVEggTUFSS1xyXG5cdFx0KDB4MEI2MiA8PSBjb2RlICYmIGNvZGUgPD0gMHgwQjYzKSB8fCAvLyBNbiAgIFsyXSBPUklZQSBWT1dFTCBTSUdOIFZPQ0FMSUMgTC4uT1JJWUEgVk9XRUwgU0lHTiBWT0NBTElDIExMXHJcblx0XHQweDBCODIgPT0gY29kZSB8fCAvLyBNbiAgICAgICBUQU1JTCBTSUdOIEFOVVNWQVJBXHJcblx0XHQweDBCQkUgPT0gY29kZSB8fCAvLyBNYyAgICAgICBUQU1JTCBWT1dFTCBTSUdOIEFBXHJcblx0XHQweDBCQzAgPT0gY29kZSB8fCAvLyBNbiAgICAgICBUQU1JTCBWT1dFTCBTSUdOIElJXHJcblx0XHQweDBCQ0QgPT0gY29kZSB8fCAvLyBNbiAgICAgICBUQU1JTCBTSUdOIFZJUkFNQVxyXG5cdFx0MHgwQkQ3ID09IGNvZGUgfHwgLy8gTWMgICAgICAgVEFNSUwgQVUgTEVOR1RIIE1BUktcclxuXHRcdDB4MEMwMCA9PSBjb2RlIHx8IC8vIE1uICAgICAgIFRFTFVHVSBTSUdOIENPTUJJTklORyBDQU5EUkFCSU5EVSBBQk9WRVxyXG5cdFx0KDB4MEMzRSA8PSBjb2RlICYmIGNvZGUgPD0gMHgwQzQwKSB8fCAvLyBNbiAgIFszXSBURUxVR1UgVk9XRUwgU0lHTiBBQS4uVEVMVUdVIFZPV0VMIFNJR04gSUlcclxuXHRcdCgweDBDNDYgPD0gY29kZSAmJiBjb2RlIDw9IDB4MEM0OCkgfHwgLy8gTW4gICBbM10gVEVMVUdVIFZPV0VMIFNJR04gRS4uVEVMVUdVIFZPV0VMIFNJR04gQUlcclxuXHRcdCgweDBDNEEgPD0gY29kZSAmJiBjb2RlIDw9IDB4MEM0RCkgfHwgLy8gTW4gICBbNF0gVEVMVUdVIFZPV0VMIFNJR04gTy4uVEVMVUdVIFNJR04gVklSQU1BXHJcblx0XHQoMHgwQzU1IDw9IGNvZGUgJiYgY29kZSA8PSAweDBDNTYpIHx8IC8vIE1uICAgWzJdIFRFTFVHVSBMRU5HVEggTUFSSy4uVEVMVUdVIEFJIExFTkdUSCBNQVJLXHJcblx0XHQoMHgwQzYyIDw9IGNvZGUgJiYgY29kZSA8PSAweDBDNjMpIHx8IC8vIE1uICAgWzJdIFRFTFVHVSBWT1dFTCBTSUdOIFZPQ0FMSUMgTC4uVEVMVUdVIFZPV0VMIFNJR04gVk9DQUxJQyBMTFxyXG5cdFx0MHgwQzgxID09IGNvZGUgfHwgLy8gTW4gICAgICAgS0FOTkFEQSBTSUdOIENBTkRSQUJJTkRVXHJcblx0XHQweDBDQkMgPT0gY29kZSB8fCAvLyBNbiAgICAgICBLQU5OQURBIFNJR04gTlVLVEFcclxuXHRcdDB4MENCRiA9PSBjb2RlIHx8IC8vIE1uICAgICAgIEtBTk5BREEgVk9XRUwgU0lHTiBJXHJcblx0XHQweDBDQzIgPT0gY29kZSB8fCAvLyBNYyAgICAgICBLQU5OQURBIFZPV0VMIFNJR04gVVVcclxuXHRcdDB4MENDNiA9PSBjb2RlIHx8IC8vIE1uICAgICAgIEtBTk5BREEgVk9XRUwgU0lHTiBFXHJcblx0XHQoMHgwQ0NDIDw9IGNvZGUgJiYgY29kZSA8PSAweDBDQ0QpIHx8IC8vIE1uICAgWzJdIEtBTk5BREEgVk9XRUwgU0lHTiBBVS4uS0FOTkFEQSBTSUdOIFZJUkFNQVxyXG5cdFx0KDB4MENENSA8PSBjb2RlICYmIGNvZGUgPD0gMHgwQ0Q2KSB8fCAvLyBNYyAgIFsyXSBLQU5OQURBIExFTkdUSCBNQVJLLi5LQU5OQURBIEFJIExFTkdUSCBNQVJLXHJcblx0XHQoMHgwQ0UyIDw9IGNvZGUgJiYgY29kZSA8PSAweDBDRTMpIHx8IC8vIE1uICAgWzJdIEtBTk5BREEgVk9XRUwgU0lHTiBWT0NBTElDIEwuLktBTk5BREEgVk9XRUwgU0lHTiBWT0NBTElDIExMXHJcblx0XHQoMHgwRDAwIDw9IGNvZGUgJiYgY29kZSA8PSAweDBEMDEpIHx8IC8vIE1uICAgWzJdIE1BTEFZQUxBTSBTSUdOIENPTUJJTklORyBBTlVTVkFSQSBBQk9WRS4uTUFMQVlBTEFNIFNJR04gQ0FORFJBQklORFVcclxuXHRcdCgweDBEM0IgPD0gY29kZSAmJiBjb2RlIDw9IDB4MEQzQykgfHwgLy8gTW4gICBbMl0gTUFMQVlBTEFNIFNJR04gVkVSVElDQUwgQkFSIFZJUkFNQS4uTUFMQVlBTEFNIFNJR04gQ0lSQ1VMQVIgVklSQU1BXHJcblx0XHQweDBEM0UgPT0gY29kZSB8fCAvLyBNYyAgICAgICBNQUxBWUFMQU0gVk9XRUwgU0lHTiBBQVxyXG5cdFx0KDB4MEQ0MSA8PSBjb2RlICYmIGNvZGUgPD0gMHgwRDQ0KSB8fCAvLyBNbiAgIFs0XSBNQUxBWUFMQU0gVk9XRUwgU0lHTiBVLi5NQUxBWUFMQU0gVk9XRUwgU0lHTiBWT0NBTElDIFJSXHJcblx0XHQweDBENEQgPT0gY29kZSB8fCAvLyBNbiAgICAgICBNQUxBWUFMQU0gU0lHTiBWSVJBTUFcclxuXHRcdDB4MEQ1NyA9PSBjb2RlIHx8IC8vIE1jICAgICAgIE1BTEFZQUxBTSBBVSBMRU5HVEggTUFSS1xyXG5cdFx0KDB4MEQ2MiA8PSBjb2RlICYmIGNvZGUgPD0gMHgwRDYzKSB8fCAvLyBNbiAgIFsyXSBNQUxBWUFMQU0gVk9XRUwgU0lHTiBWT0NBTElDIEwuLk1BTEFZQUxBTSBWT1dFTCBTSUdOIFZPQ0FMSUMgTExcclxuXHRcdDB4MERDQSA9PSBjb2RlIHx8IC8vIE1uICAgICAgIFNJTkhBTEEgU0lHTiBBTC1MQUtVTkFcclxuXHRcdDB4MERDRiA9PSBjb2RlIHx8IC8vIE1jICAgICAgIFNJTkhBTEEgVk9XRUwgU0lHTiBBRUxBLVBJTExBXHJcblx0XHQoMHgwREQyIDw9IGNvZGUgJiYgY29kZSA8PSAweDBERDQpIHx8IC8vIE1uICAgWzNdIFNJTkhBTEEgVk9XRUwgU0lHTiBLRVRUSSBJUy1QSUxMQS4uU0lOSEFMQSBWT1dFTCBTSUdOIEtFVFRJIFBBQS1QSUxMQVxyXG5cdFx0MHgwREQ2ID09IGNvZGUgfHwgLy8gTW4gICAgICAgU0lOSEFMQSBWT1dFTCBTSUdOIERJR0EgUEFBLVBJTExBXHJcblx0XHQweDBEREYgPT0gY29kZSB8fCAvLyBNYyAgICAgICBTSU5IQUxBIFZPV0VMIFNJR04gR0FZQU5VS0lUVEFcclxuXHRcdDB4MEUzMSA9PSBjb2RlIHx8IC8vIE1uICAgICAgIFRIQUkgQ0hBUkFDVEVSIE1BSSBIQU4tQUtBVFxyXG5cdFx0KDB4MEUzNCA8PSBjb2RlICYmIGNvZGUgPD0gMHgwRTNBKSB8fCAvLyBNbiAgIFs3XSBUSEFJIENIQVJBQ1RFUiBTQVJBIEkuLlRIQUkgQ0hBUkFDVEVSIFBISU5USFVcclxuXHRcdCgweDBFNDcgPD0gY29kZSAmJiBjb2RlIDw9IDB4MEU0RSkgfHwgLy8gTW4gICBbOF0gVEhBSSBDSEFSQUNURVIgTUFJVEFJS0hVLi5USEFJIENIQVJBQ1RFUiBZQU1BS0tBTlxyXG5cdFx0MHgwRUIxID09IGNvZGUgfHwgLy8gTW4gICAgICAgTEFPIFZPV0VMIFNJR04gTUFJIEtBTlxyXG5cdFx0KDB4MEVCNCA8PSBjb2RlICYmIGNvZGUgPD0gMHgwRUI5KSB8fCAvLyBNbiAgIFs2XSBMQU8gVk9XRUwgU0lHTiBJLi5MQU8gVk9XRUwgU0lHTiBVVVxyXG5cdFx0KDB4MEVCQiA8PSBjb2RlICYmIGNvZGUgPD0gMHgwRUJDKSB8fCAvLyBNbiAgIFsyXSBMQU8gVk9XRUwgU0lHTiBNQUkgS09OLi5MQU8gU0VNSVZPV0VMIFNJR04gTE9cclxuXHRcdCgweDBFQzggPD0gY29kZSAmJiBjb2RlIDw9IDB4MEVDRCkgfHwgLy8gTW4gICBbNl0gTEFPIFRPTkUgTUFJIEVLLi5MQU8gTklHR0FISVRBXHJcblx0XHQoMHgwRjE4IDw9IGNvZGUgJiYgY29kZSA8PSAweDBGMTkpIHx8IC8vIE1uICAgWzJdIFRJQkVUQU4gQVNUUk9MT0dJQ0FMIFNJR04gLUtIWVVEIFBBLi5USUJFVEFOIEFTVFJPTE9HSUNBTCBTSUdOIFNET05HIFRTSFVHU1xyXG5cdFx0MHgwRjM1ID09IGNvZGUgfHwgLy8gTW4gICAgICAgVElCRVRBTiBNQVJLIE5HQVMgQlpVTkcgTllJIFpMQVxyXG5cdFx0MHgwRjM3ID09IGNvZGUgfHwgLy8gTW4gICAgICAgVElCRVRBTiBNQVJLIE5HQVMgQlpVTkcgU0dPUiBSVEFHU1xyXG5cdFx0MHgwRjM5ID09IGNvZGUgfHwgLy8gTW4gICAgICAgVElCRVRBTiBNQVJLIFRTQSAtUEhSVVxyXG5cdFx0KDB4MEY3MSA8PSBjb2RlICYmIGNvZGUgPD0gMHgwRjdFKSB8fCAvLyBNbiAgWzE0XSBUSUJFVEFOIFZPV0VMIFNJR04gQUEuLlRJQkVUQU4gU0lHTiBSSkVTIFNVIE5HQSBST1xyXG5cdFx0KDB4MEY4MCA8PSBjb2RlICYmIGNvZGUgPD0gMHgwRjg0KSB8fCAvLyBNbiAgIFs1XSBUSUJFVEFOIFZPV0VMIFNJR04gUkVWRVJTRUQgSS4uVElCRVRBTiBNQVJLIEhBTEFOVEFcclxuXHRcdCgweDBGODYgPD0gY29kZSAmJiBjb2RlIDw9IDB4MEY4NykgfHwgLy8gTW4gICBbMl0gVElCRVRBTiBTSUdOIExDSSBSVEFHUy4uVElCRVRBTiBTSUdOIFlBTkcgUlRBR1NcclxuXHRcdCgweDBGOEQgPD0gY29kZSAmJiBjb2RlIDw9IDB4MEY5NykgfHwgLy8gTW4gIFsxMV0gVElCRVRBTiBTVUJKT0lORUQgU0lHTiBMQ0UgVFNBIENBTi4uVElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIEpBXHJcblx0XHQoMHgwRjk5IDw9IGNvZGUgJiYgY29kZSA8PSAweDBGQkMpIHx8IC8vIE1uICBbMzZdIFRJQkVUQU4gU1VCSk9JTkVEIExFVFRFUiBOWUEuLlRJQkVUQU4gU1VCSk9JTkVEIExFVFRFUiBGSVhFRC1GT1JNIFJBXHJcblx0XHQweDBGQzYgPT0gY29kZSB8fCAvLyBNbiAgICAgICBUSUJFVEFOIFNZTUJPTCBQQURNQSBHREFOXHJcblx0XHQoMHgxMDJEIDw9IGNvZGUgJiYgY29kZSA8PSAweDEwMzApIHx8IC8vIE1uICAgWzRdIE1ZQU5NQVIgVk9XRUwgU0lHTiBJLi5NWUFOTUFSIFZPV0VMIFNJR04gVVVcclxuXHRcdCgweDEwMzIgPD0gY29kZSAmJiBjb2RlIDw9IDB4MTAzNykgfHwgLy8gTW4gICBbNl0gTVlBTk1BUiBWT1dFTCBTSUdOIEFJLi5NWUFOTUFSIFNJR04gRE9UIEJFTE9XXHJcblx0XHQoMHgxMDM5IDw9IGNvZGUgJiYgY29kZSA8PSAweDEwM0EpIHx8IC8vIE1uICAgWzJdIE1ZQU5NQVIgU0lHTiBWSVJBTUEuLk1ZQU5NQVIgU0lHTiBBU0FUXHJcblx0XHQoMHgxMDNEIDw9IGNvZGUgJiYgY29kZSA8PSAweDEwM0UpIHx8IC8vIE1uICAgWzJdIE1ZQU5NQVIgQ09OU09OQU5UIFNJR04gTUVESUFMIFdBLi5NWUFOTUFSIENPTlNPTkFOVCBTSUdOIE1FRElBTCBIQVxyXG5cdFx0KDB4MTA1OCA8PSBjb2RlICYmIGNvZGUgPD0gMHgxMDU5KSB8fCAvLyBNbiAgIFsyXSBNWUFOTUFSIFZPV0VMIFNJR04gVk9DQUxJQyBMLi5NWUFOTUFSIFZPV0VMIFNJR04gVk9DQUxJQyBMTFxyXG5cdFx0KDB4MTA1RSA8PSBjb2RlICYmIGNvZGUgPD0gMHgxMDYwKSB8fCAvLyBNbiAgIFszXSBNWUFOTUFSIENPTlNPTkFOVCBTSUdOIE1PTiBNRURJQUwgTkEuLk1ZQU5NQVIgQ09OU09OQU5UIFNJR04gTU9OIE1FRElBTCBMQVxyXG5cdFx0KDB4MTA3MSA8PSBjb2RlICYmIGNvZGUgPD0gMHgxMDc0KSB8fCAvLyBNbiAgIFs0XSBNWUFOTUFSIFZPV0VMIFNJR04gR0VCQSBLQVJFTiBJLi5NWUFOTUFSIFZPV0VMIFNJR04gS0FZQUggRUVcclxuXHRcdDB4MTA4MiA9PSBjb2RlIHx8IC8vIE1uICAgICAgIE1ZQU5NQVIgQ09OU09OQU5UIFNJR04gU0hBTiBNRURJQUwgV0FcclxuXHRcdCgweDEwODUgPD0gY29kZSAmJiBjb2RlIDw9IDB4MTA4NikgfHwgLy8gTW4gICBbMl0gTVlBTk1BUiBWT1dFTCBTSUdOIFNIQU4gRSBBQk9WRS4uTVlBTk1BUiBWT1dFTCBTSUdOIFNIQU4gRklOQUwgWVxyXG5cdFx0MHgxMDhEID09IGNvZGUgfHwgLy8gTW4gICAgICAgTVlBTk1BUiBTSUdOIFNIQU4gQ09VTkNJTCBFTVBIQVRJQyBUT05FXHJcblx0XHQweDEwOUQgPT0gY29kZSB8fCAvLyBNbiAgICAgICBNWUFOTUFSIFZPV0VMIFNJR04gQUlUT04gQUlcclxuXHRcdCgweDEzNUQgPD0gY29kZSAmJiBjb2RlIDw9IDB4MTM1RikgfHwgLy8gTW4gICBbM10gRVRISU9QSUMgQ09NQklOSU5HIEdFTUlOQVRJT04gQU5EIFZPV0VMIExFTkdUSCBNQVJLLi5FVEhJT1BJQyBDT01CSU5JTkcgR0VNSU5BVElPTiBNQVJLXHJcblx0XHQoMHgxNzEyIDw9IGNvZGUgJiYgY29kZSA8PSAweDE3MTQpIHx8IC8vIE1uICAgWzNdIFRBR0FMT0cgVk9XRUwgU0lHTiBJLi5UQUdBTE9HIFNJR04gVklSQU1BXHJcblx0XHQoMHgxNzMyIDw9IGNvZGUgJiYgY29kZSA8PSAweDE3MzQpIHx8IC8vIE1uICAgWzNdIEhBTlVOT08gVk9XRUwgU0lHTiBJLi5IQU5VTk9PIFNJR04gUEFNVURQT0RcclxuXHRcdCgweDE3NTIgPD0gY29kZSAmJiBjb2RlIDw9IDB4MTc1MykgfHwgLy8gTW4gICBbMl0gQlVISUQgVk9XRUwgU0lHTiBJLi5CVUhJRCBWT1dFTCBTSUdOIFVcclxuXHRcdCgweDE3NzIgPD0gY29kZSAmJiBjb2RlIDw9IDB4MTc3MykgfHwgLy8gTW4gICBbMl0gVEFHQkFOV0EgVk9XRUwgU0lHTiBJLi5UQUdCQU5XQSBWT1dFTCBTSUdOIFVcclxuXHRcdCgweDE3QjQgPD0gY29kZSAmJiBjb2RlIDw9IDB4MTdCNSkgfHwgLy8gTW4gICBbMl0gS0hNRVIgVk9XRUwgSU5IRVJFTlQgQVEuLktITUVSIFZPV0VMIElOSEVSRU5UIEFBXHJcblx0XHQoMHgxN0I3IDw9IGNvZGUgJiYgY29kZSA8PSAweDE3QkQpIHx8IC8vIE1uICAgWzddIEtITUVSIFZPV0VMIFNJR04gSS4uS0hNRVIgVk9XRUwgU0lHTiBVQVxyXG5cdFx0MHgxN0M2ID09IGNvZGUgfHwgLy8gTW4gICAgICAgS0hNRVIgU0lHTiBOSUtBSElUXHJcblx0XHQoMHgxN0M5IDw9IGNvZGUgJiYgY29kZSA8PSAweDE3RDMpIHx8IC8vIE1uICBbMTFdIEtITUVSIFNJR04gTVVVU0lLQVRPQU4uLktITUVSIFNJR04gQkFUSEFNQVNBVFxyXG5cdFx0MHgxN0REID09IGNvZGUgfHwgLy8gTW4gICAgICAgS0hNRVIgU0lHTiBBVFRIQUNBTlxyXG5cdFx0KDB4MTgwQiA8PSBjb2RlICYmIGNvZGUgPD0gMHgxODBEKSB8fCAvLyBNbiAgIFszXSBNT05HT0xJQU4gRlJFRSBWQVJJQVRJT04gU0VMRUNUT1IgT05FLi5NT05HT0xJQU4gRlJFRSBWQVJJQVRJT04gU0VMRUNUT1IgVEhSRUVcclxuXHRcdCgweDE4ODUgPD0gY29kZSAmJiBjb2RlIDw9IDB4MTg4NikgfHwgLy8gTW4gICBbMl0gTU9OR09MSUFOIExFVFRFUiBBTEkgR0FMSSBCQUxVREEuLk1PTkdPTElBTiBMRVRURVIgQUxJIEdBTEkgVEhSRUUgQkFMVURBXHJcblx0XHQweDE4QTkgPT0gY29kZSB8fCAvLyBNbiAgICAgICBNT05HT0xJQU4gTEVUVEVSIEFMSSBHQUxJIERBR0FMR0FcclxuXHRcdCgweDE5MjAgPD0gY29kZSAmJiBjb2RlIDw9IDB4MTkyMikgfHwgLy8gTW4gICBbM10gTElNQlUgVk9XRUwgU0lHTiBBLi5MSU1CVSBWT1dFTCBTSUdOIFVcclxuXHRcdCgweDE5MjcgPD0gY29kZSAmJiBjb2RlIDw9IDB4MTkyOCkgfHwgLy8gTW4gICBbMl0gTElNQlUgVk9XRUwgU0lHTiBFLi5MSU1CVSBWT1dFTCBTSUdOIE9cclxuXHRcdDB4MTkzMiA9PSBjb2RlIHx8IC8vIE1uICAgICAgIExJTUJVIFNNQUxMIExFVFRFUiBBTlVTVkFSQVxyXG5cdFx0KDB4MTkzOSA8PSBjb2RlICYmIGNvZGUgPD0gMHgxOTNCKSB8fCAvLyBNbiAgIFszXSBMSU1CVSBTSUdOIE1VS1BIUkVORy4uTElNQlUgU0lHTiBTQS1JXHJcblx0XHQoMHgxQTE3IDw9IGNvZGUgJiYgY29kZSA8PSAweDFBMTgpIHx8IC8vIE1uICAgWzJdIEJVR0lORVNFIFZPV0VMIFNJR04gSS4uQlVHSU5FU0UgVk9XRUwgU0lHTiBVXHJcblx0XHQweDFBMUIgPT0gY29kZSB8fCAvLyBNbiAgICAgICBCVUdJTkVTRSBWT1dFTCBTSUdOIEFFXHJcblx0XHQweDFBNTYgPT0gY29kZSB8fCAvLyBNbiAgICAgICBUQUkgVEhBTSBDT05TT05BTlQgU0lHTiBNRURJQUwgTEFcclxuXHRcdCgweDFBNTggPD0gY29kZSAmJiBjb2RlIDw9IDB4MUE1RSkgfHwgLy8gTW4gICBbN10gVEFJIFRIQU0gU0lHTiBNQUkgS0FORyBMQUkuLlRBSSBUSEFNIENPTlNPTkFOVCBTSUdOIFNBXHJcblx0XHQweDFBNjAgPT0gY29kZSB8fCAvLyBNbiAgICAgICBUQUkgVEhBTSBTSUdOIFNBS09UXHJcblx0XHQweDFBNjIgPT0gY29kZSB8fCAvLyBNbiAgICAgICBUQUkgVEhBTSBWT1dFTCBTSUdOIE1BSSBTQVRcclxuXHRcdCgweDFBNjUgPD0gY29kZSAmJiBjb2RlIDw9IDB4MUE2QykgfHwgLy8gTW4gICBbOF0gVEFJIFRIQU0gVk9XRUwgU0lHTiBJLi5UQUkgVEhBTSBWT1dFTCBTSUdOIE9BIEJFTE9XXHJcblx0XHQoMHgxQTczIDw9IGNvZGUgJiYgY29kZSA8PSAweDFBN0MpIHx8IC8vIE1uICBbMTBdIFRBSSBUSEFNIFZPV0VMIFNJR04gT0EgQUJPVkUuLlRBSSBUSEFNIFNJR04gS0hVRU4tTFVFIEtBUkFOXHJcblx0XHQweDFBN0YgPT0gY29kZSB8fCAvLyBNbiAgICAgICBUQUkgVEhBTSBDT01CSU5JTkcgQ1JZUFRPR1JBTU1JQyBET1RcclxuXHRcdCgweDFBQjAgPD0gY29kZSAmJiBjb2RlIDw9IDB4MUFCRCkgfHwgLy8gTW4gIFsxNF0gQ09NQklOSU5HIERPVUJMRUQgQ0lSQ1VNRkxFWCBBQ0NFTlQuLkNPTUJJTklORyBQQVJFTlRIRVNFUyBCRUxPV1xyXG5cdFx0MHgxQUJFID09IGNvZGUgfHwgLy8gTWUgICAgICAgQ09NQklOSU5HIFBBUkVOVEhFU0VTIE9WRVJMQVlcclxuXHRcdCgweDFCMDAgPD0gY29kZSAmJiBjb2RlIDw9IDB4MUIwMykgfHwgLy8gTW4gICBbNF0gQkFMSU5FU0UgU0lHTiBVTFUgUklDRU0uLkJBTElORVNFIFNJR04gU1VSQU5HXHJcblx0XHQweDFCMzQgPT0gY29kZSB8fCAvLyBNbiAgICAgICBCQUxJTkVTRSBTSUdOIFJFUkVLQU5cclxuXHRcdCgweDFCMzYgPD0gY29kZSAmJiBjb2RlIDw9IDB4MUIzQSkgfHwgLy8gTW4gICBbNV0gQkFMSU5FU0UgVk9XRUwgU0lHTiBVTFUuLkJBTElORVNFIFZPV0VMIFNJR04gUkEgUkVQQVxyXG5cdFx0MHgxQjNDID09IGNvZGUgfHwgLy8gTW4gICAgICAgQkFMSU5FU0UgVk9XRUwgU0lHTiBMQSBMRU5HQVxyXG5cdFx0MHgxQjQyID09IGNvZGUgfHwgLy8gTW4gICAgICAgQkFMSU5FU0UgVk9XRUwgU0lHTiBQRVBFVFxyXG5cdFx0KDB4MUI2QiA8PSBjb2RlICYmIGNvZGUgPD0gMHgxQjczKSB8fCAvLyBNbiAgIFs5XSBCQUxJTkVTRSBNVVNJQ0FMIFNZTUJPTCBDT01CSU5JTkcgVEVHRUguLkJBTElORVNFIE1VU0lDQUwgU1lNQk9MIENPTUJJTklORyBHT05HXHJcblx0XHQoMHgxQjgwIDw9IGNvZGUgJiYgY29kZSA8PSAweDFCODEpIHx8IC8vIE1uICAgWzJdIFNVTkRBTkVTRSBTSUdOIFBBTllFQ0VLLi5TVU5EQU5FU0UgU0lHTiBQQU5HTEFZQVJcclxuXHRcdCgweDFCQTIgPD0gY29kZSAmJiBjb2RlIDw9IDB4MUJBNSkgfHwgLy8gTW4gICBbNF0gU1VOREFORVNFIENPTlNPTkFOVCBTSUdOIFBBTllBS1JBLi5TVU5EQU5FU0UgVk9XRUwgU0lHTiBQQU5ZVUtVXHJcblx0XHQoMHgxQkE4IDw9IGNvZGUgJiYgY29kZSA8PSAweDFCQTkpIHx8IC8vIE1uICAgWzJdIFNVTkRBTkVTRSBWT1dFTCBTSUdOIFBBTUVQRVQuLlNVTkRBTkVTRSBWT1dFTCBTSUdOIFBBTkVVTEVVTkdcclxuXHRcdCgweDFCQUIgPD0gY29kZSAmJiBjb2RlIDw9IDB4MUJBRCkgfHwgLy8gTW4gICBbM10gU1VOREFORVNFIFNJR04gVklSQU1BLi5TVU5EQU5FU0UgQ09OU09OQU5UIFNJR04gUEFTQU5HQU4gV0FcclxuXHRcdDB4MUJFNiA9PSBjb2RlIHx8IC8vIE1uICAgICAgIEJBVEFLIFNJR04gVE9NUElcclxuXHRcdCgweDFCRTggPD0gY29kZSAmJiBjb2RlIDw9IDB4MUJFOSkgfHwgLy8gTW4gICBbMl0gQkFUQUsgVk9XRUwgU0lHTiBQQUtQQUsgRS4uQkFUQUsgVk9XRUwgU0lHTiBFRVxyXG5cdFx0MHgxQkVEID09IGNvZGUgfHwgLy8gTW4gICAgICAgQkFUQUsgVk9XRUwgU0lHTiBLQVJPIE9cclxuXHRcdCgweDFCRUYgPD0gY29kZSAmJiBjb2RlIDw9IDB4MUJGMSkgfHwgLy8gTW4gICBbM10gQkFUQUsgVk9XRUwgU0lHTiBVIEZPUiBTSU1BTFVOR1VOIFNBLi5CQVRBSyBDT05TT05BTlQgU0lHTiBIXHJcblx0XHQoMHgxQzJDIDw9IGNvZGUgJiYgY29kZSA8PSAweDFDMzMpIHx8IC8vIE1uICAgWzhdIExFUENIQSBWT1dFTCBTSUdOIEUuLkxFUENIQSBDT05TT05BTlQgU0lHTiBUXHJcblx0XHQoMHgxQzM2IDw9IGNvZGUgJiYgY29kZSA8PSAweDFDMzcpIHx8IC8vIE1uICAgWzJdIExFUENIQSBTSUdOIFJBTi4uTEVQQ0hBIFNJR04gTlVLVEFcclxuXHRcdCgweDFDRDAgPD0gY29kZSAmJiBjb2RlIDw9IDB4MUNEMikgfHwgLy8gTW4gICBbM10gVkVESUMgVE9ORSBLQVJTSEFOQS4uVkVESUMgVE9ORSBQUkVOS0hBXHJcblx0XHQoMHgxQ0Q0IDw9IGNvZGUgJiYgY29kZSA8PSAweDFDRTApIHx8IC8vIE1uICBbMTNdIFZFRElDIFNJR04gWUFKVVJWRURJQyBNSURMSU5FIFNWQVJJVEEuLlZFRElDIFRPTkUgUklHVkVESUMgS0FTSE1JUkkgSU5ERVBFTkRFTlQgU1ZBUklUQVxyXG5cdFx0KDB4MUNFMiA8PSBjb2RlICYmIGNvZGUgPD0gMHgxQ0U4KSB8fCAvLyBNbiAgIFs3XSBWRURJQyBTSUdOIFZJU0FSR0EgU1ZBUklUQS4uVkVESUMgU0lHTiBWSVNBUkdBIEFOVURBVFRBIFdJVEggVEFJTFxyXG5cdFx0MHgxQ0VEID09IGNvZGUgfHwgLy8gTW4gICAgICAgVkVESUMgU0lHTiBUSVJZQUtcclxuXHRcdDB4MUNGNCA9PSBjb2RlIHx8IC8vIE1uICAgICAgIFZFRElDIFRPTkUgQ0FORFJBIEFCT1ZFXHJcblx0XHQoMHgxQ0Y4IDw9IGNvZGUgJiYgY29kZSA8PSAweDFDRjkpIHx8IC8vIE1uICAgWzJdIFZFRElDIFRPTkUgUklORyBBQk9WRS4uVkVESUMgVE9ORSBET1VCTEUgUklORyBBQk9WRVxyXG5cdFx0KDB4MURDMCA8PSBjb2RlICYmIGNvZGUgPD0gMHgxREY5KSB8fCAvLyBNbiAgWzU4XSBDT01CSU5JTkcgRE9UVEVEIEdSQVZFIEFDQ0VOVC4uQ09NQklOSU5HIFdJREUgSU5WRVJURUQgQlJJREdFIEJFTE9XXHJcblx0XHQoMHgxREZCIDw9IGNvZGUgJiYgY29kZSA8PSAweDFERkYpIHx8IC8vIE1uICAgWzVdIENPTUJJTklORyBERUxFVElPTiBNQVJLLi5DT01CSU5JTkcgUklHSFQgQVJST1dIRUFEIEFORCBET1dOIEFSUk9XSEVBRCBCRUxPV1xyXG5cdFx0MHgyMDBDID09IGNvZGUgfHwgLy8gQ2YgICAgICAgWkVSTyBXSURUSCBOT04tSk9JTkVSXHJcblx0XHQoMHgyMEQwIDw9IGNvZGUgJiYgY29kZSA8PSAweDIwREMpIHx8IC8vIE1uICBbMTNdIENPTUJJTklORyBMRUZUIEhBUlBPT04gQUJPVkUuLkNPTUJJTklORyBGT1VSIERPVFMgQUJPVkVcclxuXHRcdCgweDIwREQgPD0gY29kZSAmJiBjb2RlIDw9IDB4MjBFMCkgfHwgLy8gTWUgICBbNF0gQ09NQklOSU5HIEVOQ0xPU0lORyBDSVJDTEUuLkNPTUJJTklORyBFTkNMT1NJTkcgQ0lSQ0xFIEJBQ0tTTEFTSFxyXG5cdFx0MHgyMEUxID09IGNvZGUgfHwgLy8gTW4gICAgICAgQ09NQklOSU5HIExFRlQgUklHSFQgQVJST1cgQUJPVkVcclxuXHRcdCgweDIwRTIgPD0gY29kZSAmJiBjb2RlIDw9IDB4MjBFNCkgfHwgLy8gTWUgICBbM10gQ09NQklOSU5HIEVOQ0xPU0lORyBTQ1JFRU4uLkNPTUJJTklORyBFTkNMT1NJTkcgVVBXQVJEIFBPSU5USU5HIFRSSUFOR0xFXHJcblx0XHQoMHgyMEU1IDw9IGNvZGUgJiYgY29kZSA8PSAweDIwRjApIHx8IC8vIE1uICBbMTJdIENPTUJJTklORyBSRVZFUlNFIFNPTElEVVMgT1ZFUkxBWS4uQ09NQklOSU5HIEFTVEVSSVNLIEFCT1ZFXHJcblx0XHQoMHgyQ0VGIDw9IGNvZGUgJiYgY29kZSA8PSAweDJDRjEpIHx8IC8vIE1uICAgWzNdIENPUFRJQyBDT01CSU5JTkcgTkkgQUJPVkUuLkNPUFRJQyBDT01CSU5JTkcgU1BJUklUVVMgTEVOSVNcclxuXHRcdDB4MkQ3RiA9PSBjb2RlIHx8IC8vIE1uICAgICAgIFRJRklOQUdIIENPTlNPTkFOVCBKT0lORVJcclxuXHRcdCgweDJERTAgPD0gY29kZSAmJiBjb2RlIDw9IDB4MkRGRikgfHwgLy8gTW4gIFszMl0gQ09NQklOSU5HIENZUklMTElDIExFVFRFUiBCRS4uQ09NQklOSU5HIENZUklMTElDIExFVFRFUiBJT1RJRklFRCBCSUcgWVVTXHJcblx0XHQoMHgzMDJBIDw9IGNvZGUgJiYgY29kZSA8PSAweDMwMkQpIHx8IC8vIE1uICAgWzRdIElERU9HUkFQSElDIExFVkVMIFRPTkUgTUFSSy4uSURFT0dSQVBISUMgRU5URVJJTkcgVE9ORSBNQVJLXHJcblx0XHQoMHgzMDJFIDw9IGNvZGUgJiYgY29kZSA8PSAweDMwMkYpIHx8IC8vIE1jICAgWzJdIEhBTkdVTCBTSU5HTEUgRE9UIFRPTkUgTUFSSy4uSEFOR1VMIERPVUJMRSBET1QgVE9ORSBNQVJLXHJcblx0XHQoMHgzMDk5IDw9IGNvZGUgJiYgY29kZSA8PSAweDMwOUEpIHx8IC8vIE1uICAgWzJdIENPTUJJTklORyBLQVRBS0FOQS1ISVJBR0FOQSBWT0lDRUQgU09VTkQgTUFSSy4uQ09NQklOSU5HIEtBVEFLQU5BLUhJUkFHQU5BIFNFTUktVk9JQ0VEIFNPVU5EIE1BUktcclxuXHRcdDB4QTY2RiA9PSBjb2RlIHx8IC8vIE1uICAgICAgIENPTUJJTklORyBDWVJJTExJQyBWWk1FVFxyXG5cdFx0KDB4QTY3MCA8PSBjb2RlICYmIGNvZGUgPD0gMHhBNjcyKSB8fCAvLyBNZSAgIFszXSBDT01CSU5JTkcgQ1lSSUxMSUMgVEVOIE1JTExJT05TIFNJR04uLkNPTUJJTklORyBDWVJJTExJQyBUSE9VU0FORCBNSUxMSU9OUyBTSUdOXHJcblx0XHQoMHhBNjc0IDw9IGNvZGUgJiYgY29kZSA8PSAweEE2N0QpIHx8IC8vIE1uICBbMTBdIENPTUJJTklORyBDWVJJTExJQyBMRVRURVIgVUtSQUlOSUFOIElFLi5DT01CSU5JTkcgQ1lSSUxMSUMgUEFZRVJPS1xyXG5cdFx0KDB4QTY5RSA8PSBjb2RlICYmIGNvZGUgPD0gMHhBNjlGKSB8fCAvLyBNbiAgIFsyXSBDT01CSU5JTkcgQ1lSSUxMSUMgTEVUVEVSIEVGLi5DT01CSU5JTkcgQ1lSSUxMSUMgTEVUVEVSIElPVElGSUVEIEVcclxuXHRcdCgweEE2RjAgPD0gY29kZSAmJiBjb2RlIDw9IDB4QTZGMSkgfHwgLy8gTW4gICBbMl0gQkFNVU0gQ09NQklOSU5HIE1BUksgS09RTkRPTi4uQkFNVU0gQ09NQklOSU5HIE1BUksgVFVLV0VOVElTXHJcblx0XHQweEE4MDIgPT0gY29kZSB8fCAvLyBNbiAgICAgICBTWUxPVEkgTkFHUkkgU0lHTiBEVklTVkFSQVxyXG5cdFx0MHhBODA2ID09IGNvZGUgfHwgLy8gTW4gICAgICAgU1lMT1RJIE5BR1JJIFNJR04gSEFTQU5UQVxyXG5cdFx0MHhBODBCID09IGNvZGUgfHwgLy8gTW4gICAgICAgU1lMT1RJIE5BR1JJIFNJR04gQU5VU1ZBUkFcclxuXHRcdCgweEE4MjUgPD0gY29kZSAmJiBjb2RlIDw9IDB4QTgyNikgfHwgLy8gTW4gICBbMl0gU1lMT1RJIE5BR1JJIFZPV0VMIFNJR04gVS4uU1lMT1RJIE5BR1JJIFZPV0VMIFNJR04gRVxyXG5cdFx0KDB4QThDNCA8PSBjb2RlICYmIGNvZGUgPD0gMHhBOEM1KSB8fCAvLyBNbiAgIFsyXSBTQVVSQVNIVFJBIFNJR04gVklSQU1BLi5TQVVSQVNIVFJBIFNJR04gQ0FORFJBQklORFVcclxuXHRcdCgweEE4RTAgPD0gY29kZSAmJiBjb2RlIDw9IDB4QThGMSkgfHwgLy8gTW4gIFsxOF0gQ09NQklOSU5HIERFVkFOQUdBUkkgRElHSVQgWkVSTy4uQ09NQklOSU5HIERFVkFOQUdBUkkgU0lHTiBBVkFHUkFIQVxyXG5cdFx0KDB4QTkyNiA8PSBjb2RlICYmIGNvZGUgPD0gMHhBOTJEKSB8fCAvLyBNbiAgIFs4XSBLQVlBSCBMSSBWT1dFTCBVRS4uS0FZQUggTEkgVE9ORSBDQUxZQSBQTE9QSFVcclxuXHRcdCgweEE5NDcgPD0gY29kZSAmJiBjb2RlIDw9IDB4QTk1MSkgfHwgLy8gTW4gIFsxMV0gUkVKQU5HIFZPV0VMIFNJR04gSS4uUkVKQU5HIENPTlNPTkFOVCBTSUdOIFJcclxuXHRcdCgweEE5ODAgPD0gY29kZSAmJiBjb2RlIDw9IDB4QTk4MikgfHwgLy8gTW4gICBbM10gSkFWQU5FU0UgU0lHTiBQQU5ZQU5HR0EuLkpBVkFORVNFIFNJR04gTEFZQVJcclxuXHRcdDB4QTlCMyA9PSBjb2RlIHx8IC8vIE1uICAgICAgIEpBVkFORVNFIFNJR04gQ0VDQUsgVEVMVVxyXG5cdFx0KDB4QTlCNiA8PSBjb2RlICYmIGNvZGUgPD0gMHhBOUI5KSB8fCAvLyBNbiAgIFs0XSBKQVZBTkVTRSBWT1dFTCBTSUdOIFdVTFUuLkpBVkFORVNFIFZPV0VMIFNJR04gU1VLVSBNRU5EVVRcclxuXHRcdDB4QTlCQyA9PSBjb2RlIHx8IC8vIE1uICAgICAgIEpBVkFORVNFIFZPV0VMIFNJR04gUEVQRVRcclxuXHRcdDB4QTlFNSA9PSBjb2RlIHx8IC8vIE1uICAgICAgIE1ZQU5NQVIgU0lHTiBTSEFOIFNBV1xyXG5cdFx0KDB4QUEyOSA8PSBjb2RlICYmIGNvZGUgPD0gMHhBQTJFKSB8fCAvLyBNbiAgIFs2XSBDSEFNIFZPV0VMIFNJR04gQUEuLkNIQU0gVk9XRUwgU0lHTiBPRVxyXG5cdFx0KDB4QUEzMSA8PSBjb2RlICYmIGNvZGUgPD0gMHhBQTMyKSB8fCAvLyBNbiAgIFsyXSBDSEFNIFZPV0VMIFNJR04gQVUuLkNIQU0gVk9XRUwgU0lHTiBVRVxyXG5cdFx0KDB4QUEzNSA8PSBjb2RlICYmIGNvZGUgPD0gMHhBQTM2KSB8fCAvLyBNbiAgIFsyXSBDSEFNIENPTlNPTkFOVCBTSUdOIExBLi5DSEFNIENPTlNPTkFOVCBTSUdOIFdBXHJcblx0XHQweEFBNDMgPT0gY29kZSB8fCAvLyBNbiAgICAgICBDSEFNIENPTlNPTkFOVCBTSUdOIEZJTkFMIE5HXHJcblx0XHQweEFBNEMgPT0gY29kZSB8fCAvLyBNbiAgICAgICBDSEFNIENPTlNPTkFOVCBTSUdOIEZJTkFMIE1cclxuXHRcdDB4QUE3QyA9PSBjb2RlIHx8IC8vIE1uICAgICAgIE1ZQU5NQVIgU0lHTiBUQUkgTEFJTkcgVE9ORS0yXHJcblx0XHQweEFBQjAgPT0gY29kZSB8fCAvLyBNbiAgICAgICBUQUkgVklFVCBNQUkgS0FOR1xyXG5cdFx0KDB4QUFCMiA8PSBjb2RlICYmIGNvZGUgPD0gMHhBQUI0KSB8fCAvLyBNbiAgIFszXSBUQUkgVklFVCBWT1dFTCBJLi5UQUkgVklFVCBWT1dFTCBVXHJcblx0XHQoMHhBQUI3IDw9IGNvZGUgJiYgY29kZSA8PSAweEFBQjgpIHx8IC8vIE1uICAgWzJdIFRBSSBWSUVUIE1BSSBLSElULi5UQUkgVklFVCBWT1dFTCBJQVxyXG5cdFx0KDB4QUFCRSA8PSBjb2RlICYmIGNvZGUgPD0gMHhBQUJGKSB8fCAvLyBNbiAgIFsyXSBUQUkgVklFVCBWT1dFTCBBTS4uVEFJIFZJRVQgVE9ORSBNQUkgRUtcclxuXHRcdDB4QUFDMSA9PSBjb2RlIHx8IC8vIE1uICAgICAgIFRBSSBWSUVUIFRPTkUgTUFJIFRIT1xyXG5cdFx0KDB4QUFFQyA8PSBjb2RlICYmIGNvZGUgPD0gMHhBQUVEKSB8fCAvLyBNbiAgIFsyXSBNRUVURUkgTUFZRUsgVk9XRUwgU0lHTiBVVS4uTUVFVEVJIE1BWUVLIFZPV0VMIFNJR04gQUFJXHJcblx0XHQweEFBRjYgPT0gY29kZSB8fCAvLyBNbiAgICAgICBNRUVURUkgTUFZRUsgVklSQU1BXHJcblx0XHQweEFCRTUgPT0gY29kZSB8fCAvLyBNbiAgICAgICBNRUVURUkgTUFZRUsgVk9XRUwgU0lHTiBBTkFQXHJcblx0XHQweEFCRTggPT0gY29kZSB8fCAvLyBNbiAgICAgICBNRUVURUkgTUFZRUsgVk9XRUwgU0lHTiBVTkFQXHJcblx0XHQweEFCRUQgPT0gY29kZSB8fCAvLyBNbiAgICAgICBNRUVURUkgTUFZRUsgQVBVTiBJWUVLXHJcblx0XHQweEZCMUUgPT0gY29kZSB8fCAvLyBNbiAgICAgICBIRUJSRVcgUE9JTlQgSlVERU8tU1BBTklTSCBWQVJJS0FcclxuXHRcdCgweEZFMDAgPD0gY29kZSAmJiBjb2RlIDw9IDB4RkUwRikgfHwgLy8gTW4gIFsxNl0gVkFSSUFUSU9OIFNFTEVDVE9SLTEuLlZBUklBVElPTiBTRUxFQ1RPUi0xNlxyXG5cdFx0KDB4RkUyMCA8PSBjb2RlICYmIGNvZGUgPD0gMHhGRTJGKSB8fCAvLyBNbiAgWzE2XSBDT01CSU5JTkcgTElHQVRVUkUgTEVGVCBIQUxGLi5DT01CSU5JTkcgQ1lSSUxMSUMgVElUTE8gUklHSFQgSEFMRlxyXG5cdFx0KDB4RkY5RSA8PSBjb2RlICYmIGNvZGUgPD0gMHhGRjlGKSB8fCAvLyBMbSAgIFsyXSBIQUxGV0lEVEggS0FUQUtBTkEgVk9JQ0VEIFNPVU5EIE1BUksuLkhBTEZXSURUSCBLQVRBS0FOQSBTRU1JLVZPSUNFRCBTT1VORCBNQVJLXHJcblx0XHQweDEwMUZEID09IGNvZGUgfHwgLy8gTW4gICAgICAgUEhBSVNUT1MgRElTQyBTSUdOIENPTUJJTklORyBPQkxJUVVFIFNUUk9LRVxyXG5cdFx0MHgxMDJFMCA9PSBjb2RlIHx8IC8vIE1uICAgICAgIENPUFRJQyBFUEFDVCBUSE9VU0FORFMgTUFSS1xyXG5cdFx0KDB4MTAzNzYgPD0gY29kZSAmJiBjb2RlIDw9IDB4MTAzN0EpIHx8IC8vIE1uICAgWzVdIENPTUJJTklORyBPTEQgUEVSTUlDIExFVFRFUiBBTi4uQ09NQklOSU5HIE9MRCBQRVJNSUMgTEVUVEVSIFNJSVxyXG5cdFx0KDB4MTBBMDEgPD0gY29kZSAmJiBjb2RlIDw9IDB4MTBBMDMpIHx8IC8vIE1uICAgWzNdIEtIQVJPU0hUSEkgVk9XRUwgU0lHTiBJLi5LSEFST1NIVEhJIFZPV0VMIFNJR04gVk9DQUxJQyBSXHJcblx0XHQoMHgxMEEwNSA8PSBjb2RlICYmIGNvZGUgPD0gMHgxMEEwNikgfHwgLy8gTW4gICBbMl0gS0hBUk9TSFRISSBWT1dFTCBTSUdOIEUuLktIQVJPU0hUSEkgVk9XRUwgU0lHTiBPXHJcblx0XHQoMHgxMEEwQyA8PSBjb2RlICYmIGNvZGUgPD0gMHgxMEEwRikgfHwgLy8gTW4gICBbNF0gS0hBUk9TSFRISSBWT1dFTCBMRU5HVEggTUFSSy4uS0hBUk9TSFRISSBTSUdOIFZJU0FSR0FcclxuXHRcdCgweDEwQTM4IDw9IGNvZGUgJiYgY29kZSA8PSAweDEwQTNBKSB8fCAvLyBNbiAgIFszXSBLSEFST1NIVEhJIFNJR04gQkFSIEFCT1ZFLi5LSEFST1NIVEhJIFNJR04gRE9UIEJFTE9XXHJcblx0XHQweDEwQTNGID09IGNvZGUgfHwgLy8gTW4gICAgICAgS0hBUk9TSFRISSBWSVJBTUFcclxuXHRcdCgweDEwQUU1IDw9IGNvZGUgJiYgY29kZSA8PSAweDEwQUU2KSB8fCAvLyBNbiAgIFsyXSBNQU5JQ0hBRUFOIEFCQlJFVklBVElPTiBNQVJLIEFCT1ZFLi5NQU5JQ0hBRUFOIEFCQlJFVklBVElPTiBNQVJLIEJFTE9XXHJcblx0XHQweDExMDAxID09IGNvZGUgfHwgLy8gTW4gICAgICAgQlJBSE1JIFNJR04gQU5VU1ZBUkFcclxuXHRcdCgweDExMDM4IDw9IGNvZGUgJiYgY29kZSA8PSAweDExMDQ2KSB8fCAvLyBNbiAgWzE1XSBCUkFITUkgVk9XRUwgU0lHTiBBQS4uQlJBSE1JIFZJUkFNQVxyXG5cdFx0KDB4MTEwN0YgPD0gY29kZSAmJiBjb2RlIDw9IDB4MTEwODEpIHx8IC8vIE1uICAgWzNdIEJSQUhNSSBOVU1CRVIgSk9JTkVSLi5LQUlUSEkgU0lHTiBBTlVTVkFSQVxyXG5cdFx0KDB4MTEwQjMgPD0gY29kZSAmJiBjb2RlIDw9IDB4MTEwQjYpIHx8IC8vIE1uICAgWzRdIEtBSVRISSBWT1dFTCBTSUdOIFUuLktBSVRISSBWT1dFTCBTSUdOIEFJXHJcblx0XHQoMHgxMTBCOSA8PSBjb2RlICYmIGNvZGUgPD0gMHgxMTBCQSkgfHwgLy8gTW4gICBbMl0gS0FJVEhJIFNJR04gVklSQU1BLi5LQUlUSEkgU0lHTiBOVUtUQVxyXG5cdFx0KDB4MTExMDAgPD0gY29kZSAmJiBjb2RlIDw9IDB4MTExMDIpIHx8IC8vIE1uICAgWzNdIENIQUtNQSBTSUdOIENBTkRSQUJJTkRVLi5DSEFLTUEgU0lHTiBWSVNBUkdBXHJcblx0XHQoMHgxMTEyNyA8PSBjb2RlICYmIGNvZGUgPD0gMHgxMTEyQikgfHwgLy8gTW4gICBbNV0gQ0hBS01BIFZPV0VMIFNJR04gQS4uQ0hBS01BIFZPV0VMIFNJR04gVVVcclxuXHRcdCgweDExMTJEIDw9IGNvZGUgJiYgY29kZSA8PSAweDExMTM0KSB8fCAvLyBNbiAgIFs4XSBDSEFLTUEgVk9XRUwgU0lHTiBBSS4uQ0hBS01BIE1BQVlZQUFcclxuXHRcdDB4MTExNzMgPT0gY29kZSB8fCAvLyBNbiAgICAgICBNQUhBSkFOSSBTSUdOIE5VS1RBXHJcblx0XHQoMHgxMTE4MCA8PSBjb2RlICYmIGNvZGUgPD0gMHgxMTE4MSkgfHwgLy8gTW4gICBbMl0gU0hBUkFEQSBTSUdOIENBTkRSQUJJTkRVLi5TSEFSQURBIFNJR04gQU5VU1ZBUkFcclxuXHRcdCgweDExMUI2IDw9IGNvZGUgJiYgY29kZSA8PSAweDExMUJFKSB8fCAvLyBNbiAgIFs5XSBTSEFSQURBIFZPV0VMIFNJR04gVS4uU0hBUkFEQSBWT1dFTCBTSUdOIE9cclxuXHRcdCgweDExMUNBIDw9IGNvZGUgJiYgY29kZSA8PSAweDExMUNDKSB8fCAvLyBNbiAgIFszXSBTSEFSQURBIFNJR04gTlVLVEEuLlNIQVJBREEgRVhUUkEgU0hPUlQgVk9XRUwgTUFSS1xyXG5cdFx0KDB4MTEyMkYgPD0gY29kZSAmJiBjb2RlIDw9IDB4MTEyMzEpIHx8IC8vIE1uICAgWzNdIEtIT0pLSSBWT1dFTCBTSUdOIFUuLktIT0pLSSBWT1dFTCBTSUdOIEFJXHJcblx0XHQweDExMjM0ID09IGNvZGUgfHwgLy8gTW4gICAgICAgS0hPSktJIFNJR04gQU5VU1ZBUkFcclxuXHRcdCgweDExMjM2IDw9IGNvZGUgJiYgY29kZSA8PSAweDExMjM3KSB8fCAvLyBNbiAgIFsyXSBLSE9KS0kgU0lHTiBOVUtUQS4uS0hPSktJIFNJR04gU0hBRERBXHJcblx0XHQweDExMjNFID09IGNvZGUgfHwgLy8gTW4gICAgICAgS0hPSktJIFNJR04gU1VLVU5cclxuXHRcdDB4MTEyREYgPT0gY29kZSB8fCAvLyBNbiAgICAgICBLSFVEQVdBREkgU0lHTiBBTlVTVkFSQVxyXG5cdFx0KDB4MTEyRTMgPD0gY29kZSAmJiBjb2RlIDw9IDB4MTEyRUEpIHx8IC8vIE1uICAgWzhdIEtIVURBV0FESSBWT1dFTCBTSUdOIFUuLktIVURBV0FESSBTSUdOIFZJUkFNQVxyXG5cdFx0KDB4MTEzMDAgPD0gY29kZSAmJiBjb2RlIDw9IDB4MTEzMDEpIHx8IC8vIE1uICAgWzJdIEdSQU5USEEgU0lHTiBDT01CSU5JTkcgQU5VU1ZBUkEgQUJPVkUuLkdSQU5USEEgU0lHTiBDQU5EUkFCSU5EVVxyXG5cdFx0MHgxMTMzQyA9PSBjb2RlIHx8IC8vIE1uICAgICAgIEdSQU5USEEgU0lHTiBOVUtUQVxyXG5cdFx0MHgxMTMzRSA9PSBjb2RlIHx8IC8vIE1jICAgICAgIEdSQU5USEEgVk9XRUwgU0lHTiBBQVxyXG5cdFx0MHgxMTM0MCA9PSBjb2RlIHx8IC8vIE1uICAgICAgIEdSQU5USEEgVk9XRUwgU0lHTiBJSVxyXG5cdFx0MHgxMTM1NyA9PSBjb2RlIHx8IC8vIE1jICAgICAgIEdSQU5USEEgQVUgTEVOR1RIIE1BUktcclxuXHRcdCgweDExMzY2IDw9IGNvZGUgJiYgY29kZSA8PSAweDExMzZDKSB8fCAvLyBNbiAgIFs3XSBDT01CSU5JTkcgR1JBTlRIQSBESUdJVCBaRVJPLi5DT01CSU5JTkcgR1JBTlRIQSBESUdJVCBTSVhcclxuXHRcdCgweDExMzcwIDw9IGNvZGUgJiYgY29kZSA8PSAweDExMzc0KSB8fCAvLyBNbiAgIFs1XSBDT01CSU5JTkcgR1JBTlRIQSBMRVRURVIgQS4uQ09NQklOSU5HIEdSQU5USEEgTEVUVEVSIFBBXHJcblx0XHQoMHgxMTQzOCA8PSBjb2RlICYmIGNvZGUgPD0gMHgxMTQzRikgfHwgLy8gTW4gICBbOF0gTkVXQSBWT1dFTCBTSUdOIFUuLk5FV0EgVk9XRUwgU0lHTiBBSVxyXG5cdFx0KDB4MTE0NDIgPD0gY29kZSAmJiBjb2RlIDw9IDB4MTE0NDQpIHx8IC8vIE1uICAgWzNdIE5FV0EgU0lHTiBWSVJBTUEuLk5FV0EgU0lHTiBBTlVTVkFSQVxyXG5cdFx0MHgxMTQ0NiA9PSBjb2RlIHx8IC8vIE1uICAgICAgIE5FV0EgU0lHTiBOVUtUQVxyXG5cdFx0MHgxMTRCMCA9PSBjb2RlIHx8IC8vIE1jICAgICAgIFRJUkhVVEEgVk9XRUwgU0lHTiBBQVxyXG5cdFx0KDB4MTE0QjMgPD0gY29kZSAmJiBjb2RlIDw9IDB4MTE0QjgpIHx8IC8vIE1uICAgWzZdIFRJUkhVVEEgVk9XRUwgU0lHTiBVLi5USVJIVVRBIFZPV0VMIFNJR04gVk9DQUxJQyBMTFxyXG5cdFx0MHgxMTRCQSA9PSBjb2RlIHx8IC8vIE1uICAgICAgIFRJUkhVVEEgVk9XRUwgU0lHTiBTSE9SVCBFXHJcblx0XHQweDExNEJEID09IGNvZGUgfHwgLy8gTWMgICAgICAgVElSSFVUQSBWT1dFTCBTSUdOIFNIT1JUIE9cclxuXHRcdCgweDExNEJGIDw9IGNvZGUgJiYgY29kZSA8PSAweDExNEMwKSB8fCAvLyBNbiAgIFsyXSBUSVJIVVRBIFNJR04gQ0FORFJBQklORFUuLlRJUkhVVEEgU0lHTiBBTlVTVkFSQVxyXG5cdFx0KDB4MTE0QzIgPD0gY29kZSAmJiBjb2RlIDw9IDB4MTE0QzMpIHx8IC8vIE1uICAgWzJdIFRJUkhVVEEgU0lHTiBWSVJBTUEuLlRJUkhVVEEgU0lHTiBOVUtUQVxyXG5cdFx0MHgxMTVBRiA9PSBjb2RlIHx8IC8vIE1jICAgICAgIFNJRERIQU0gVk9XRUwgU0lHTiBBQVxyXG5cdFx0KDB4MTE1QjIgPD0gY29kZSAmJiBjb2RlIDw9IDB4MTE1QjUpIHx8IC8vIE1uICAgWzRdIFNJRERIQU0gVk9XRUwgU0lHTiBVLi5TSURESEFNIFZPV0VMIFNJR04gVk9DQUxJQyBSUlxyXG5cdFx0KDB4MTE1QkMgPD0gY29kZSAmJiBjb2RlIDw9IDB4MTE1QkQpIHx8IC8vIE1uICAgWzJdIFNJRERIQU0gU0lHTiBDQU5EUkFCSU5EVS4uU0lEREhBTSBTSUdOIEFOVVNWQVJBXHJcblx0XHQoMHgxMTVCRiA8PSBjb2RlICYmIGNvZGUgPD0gMHgxMTVDMCkgfHwgLy8gTW4gICBbMl0gU0lEREhBTSBTSUdOIFZJUkFNQS4uU0lEREhBTSBTSUdOIE5VS1RBXHJcblx0XHQoMHgxMTVEQyA8PSBjb2RlICYmIGNvZGUgPD0gMHgxMTVERCkgfHwgLy8gTW4gICBbMl0gU0lEREhBTSBWT1dFTCBTSUdOIEFMVEVSTkFURSBVLi5TSURESEFNIFZPV0VMIFNJR04gQUxURVJOQVRFIFVVXHJcblx0XHQoMHgxMTYzMyA8PSBjb2RlICYmIGNvZGUgPD0gMHgxMTYzQSkgfHwgLy8gTW4gICBbOF0gTU9ESSBWT1dFTCBTSUdOIFUuLk1PREkgVk9XRUwgU0lHTiBBSVxyXG5cdFx0MHgxMTYzRCA9PSBjb2RlIHx8IC8vIE1uICAgICAgIE1PREkgU0lHTiBBTlVTVkFSQVxyXG5cdFx0KDB4MTE2M0YgPD0gY29kZSAmJiBjb2RlIDw9IDB4MTE2NDApIHx8IC8vIE1uICAgWzJdIE1PREkgU0lHTiBWSVJBTUEuLk1PREkgU0lHTiBBUkRIQUNBTkRSQVxyXG5cdFx0MHgxMTZBQiA9PSBjb2RlIHx8IC8vIE1uICAgICAgIFRBS1JJIFNJR04gQU5VU1ZBUkFcclxuXHRcdDB4MTE2QUQgPT0gY29kZSB8fCAvLyBNbiAgICAgICBUQUtSSSBWT1dFTCBTSUdOIEFBXHJcblx0XHQoMHgxMTZCMCA8PSBjb2RlICYmIGNvZGUgPD0gMHgxMTZCNSkgfHwgLy8gTW4gICBbNl0gVEFLUkkgVk9XRUwgU0lHTiBVLi5UQUtSSSBWT1dFTCBTSUdOIEFVXHJcblx0XHQweDExNkI3ID09IGNvZGUgfHwgLy8gTW4gICAgICAgVEFLUkkgU0lHTiBOVUtUQVxyXG5cdFx0KDB4MTE3MUQgPD0gY29kZSAmJiBjb2RlIDw9IDB4MTE3MUYpIHx8IC8vIE1uICAgWzNdIEFIT00gQ09OU09OQU5UIFNJR04gTUVESUFMIExBLi5BSE9NIENPTlNPTkFOVCBTSUdOIE1FRElBTCBMSUdBVElORyBSQVxyXG5cdFx0KDB4MTE3MjIgPD0gY29kZSAmJiBjb2RlIDw9IDB4MTE3MjUpIHx8IC8vIE1uICAgWzRdIEFIT00gVk9XRUwgU0lHTiBJLi5BSE9NIFZPV0VMIFNJR04gVVVcclxuXHRcdCgweDExNzI3IDw9IGNvZGUgJiYgY29kZSA8PSAweDExNzJCKSB8fCAvLyBNbiAgIFs1XSBBSE9NIFZPV0VMIFNJR04gQVcuLkFIT00gU0lHTiBLSUxMRVJcclxuXHRcdCgweDExQTAxIDw9IGNvZGUgJiYgY29kZSA8PSAweDExQTA2KSB8fCAvLyBNbiAgIFs2XSBaQU5BQkFaQVIgU1FVQVJFIFZPV0VMIFNJR04gSS4uWkFOQUJBWkFSIFNRVUFSRSBWT1dFTCBTSUdOIE9cclxuXHRcdCgweDExQTA5IDw9IGNvZGUgJiYgY29kZSA8PSAweDExQTBBKSB8fCAvLyBNbiAgIFsyXSBaQU5BQkFaQVIgU1FVQVJFIFZPV0VMIFNJR04gUkVWRVJTRUQgSS4uWkFOQUJBWkFSIFNRVUFSRSBWT1dFTCBMRU5HVEggTUFSS1xyXG5cdFx0KDB4MTFBMzMgPD0gY29kZSAmJiBjb2RlIDw9IDB4MTFBMzgpIHx8IC8vIE1uICAgWzZdIFpBTkFCQVpBUiBTUVVBUkUgRklOQUwgQ09OU09OQU5UIE1BUksuLlpBTkFCQVpBUiBTUVVBUkUgU0lHTiBBTlVTVkFSQVxyXG5cdFx0KDB4MTFBM0IgPD0gY29kZSAmJiBjb2RlIDw9IDB4MTFBM0UpIHx8IC8vIE1uICAgWzRdIFpBTkFCQVpBUiBTUVVBUkUgQ0xVU1RFUi1GSU5BTCBMRVRURVIgWUEuLlpBTkFCQVpBUiBTUVVBUkUgQ0xVU1RFUi1GSU5BTCBMRVRURVIgVkFcclxuXHRcdDB4MTFBNDcgPT0gY29kZSB8fCAvLyBNbiAgICAgICBaQU5BQkFaQVIgU1FVQVJFIFNVQkpPSU5FUlxyXG5cdFx0KDB4MTFBNTEgPD0gY29kZSAmJiBjb2RlIDw9IDB4MTFBNTYpIHx8IC8vIE1uICAgWzZdIFNPWU9NQk8gVk9XRUwgU0lHTiBJLi5TT1lPTUJPIFZPV0VMIFNJR04gT0VcclxuXHRcdCgweDExQTU5IDw9IGNvZGUgJiYgY29kZSA8PSAweDExQTVCKSB8fCAvLyBNbiAgIFszXSBTT1lPTUJPIFZPV0VMIFNJR04gVk9DQUxJQyBSLi5TT1lPTUJPIFZPV0VMIExFTkdUSCBNQVJLXHJcblx0XHQoMHgxMUE4QSA8PSBjb2RlICYmIGNvZGUgPD0gMHgxMUE5NikgfHwgLy8gTW4gIFsxM10gU09ZT01CTyBGSU5BTCBDT05TT05BTlQgU0lHTiBHLi5TT1lPTUJPIFNJR04gQU5VU1ZBUkFcclxuXHRcdCgweDExQTk4IDw9IGNvZGUgJiYgY29kZSA8PSAweDExQTk5KSB8fCAvLyBNbiAgIFsyXSBTT1lPTUJPIEdFTUlOQVRJT04gTUFSSy4uU09ZT01CTyBTVUJKT0lORVJcclxuXHRcdCgweDExQzMwIDw9IGNvZGUgJiYgY29kZSA8PSAweDExQzM2KSB8fCAvLyBNbiAgIFs3XSBCSEFJS1NVS0kgVk9XRUwgU0lHTiBJLi5CSEFJS1NVS0kgVk9XRUwgU0lHTiBWT0NBTElDIExcclxuXHRcdCgweDExQzM4IDw9IGNvZGUgJiYgY29kZSA8PSAweDExQzNEKSB8fCAvLyBNbiAgIFs2XSBCSEFJS1NVS0kgVk9XRUwgU0lHTiBFLi5CSEFJS1NVS0kgU0lHTiBBTlVTVkFSQVxyXG5cdFx0MHgxMUMzRiA9PSBjb2RlIHx8IC8vIE1uICAgICAgIEJIQUlLU1VLSSBTSUdOIFZJUkFNQVxyXG5cdFx0KDB4MTFDOTIgPD0gY29kZSAmJiBjb2RlIDw9IDB4MTFDQTcpIHx8IC8vIE1uICBbMjJdIE1BUkNIRU4gU1VCSk9JTkVEIExFVFRFUiBLQS4uTUFSQ0hFTiBTVUJKT0lORUQgTEVUVEVSIFpBXHJcblx0XHQoMHgxMUNBQSA8PSBjb2RlICYmIGNvZGUgPD0gMHgxMUNCMCkgfHwgLy8gTW4gICBbN10gTUFSQ0hFTiBTVUJKT0lORUQgTEVUVEVSIFJBLi5NQVJDSEVOIFZPV0VMIFNJR04gQUFcclxuXHRcdCgweDExQ0IyIDw9IGNvZGUgJiYgY29kZSA8PSAweDExQ0IzKSB8fCAvLyBNbiAgIFsyXSBNQVJDSEVOIFZPV0VMIFNJR04gVS4uTUFSQ0hFTiBWT1dFTCBTSUdOIEVcclxuXHRcdCgweDExQ0I1IDw9IGNvZGUgJiYgY29kZSA8PSAweDExQ0I2KSB8fCAvLyBNbiAgIFsyXSBNQVJDSEVOIFNJR04gQU5VU1ZBUkEuLk1BUkNIRU4gU0lHTiBDQU5EUkFCSU5EVVxyXG5cdFx0KDB4MTFEMzEgPD0gY29kZSAmJiBjb2RlIDw9IDB4MTFEMzYpIHx8IC8vIE1uICAgWzZdIE1BU0FSQU0gR09OREkgVk9XRUwgU0lHTiBBQS4uTUFTQVJBTSBHT05ESSBWT1dFTCBTSUdOIFZPQ0FMSUMgUlxyXG5cdFx0MHgxMUQzQSA9PSBjb2RlIHx8IC8vIE1uICAgICAgIE1BU0FSQU0gR09OREkgVk9XRUwgU0lHTiBFXHJcblx0XHQoMHgxMUQzQyA8PSBjb2RlICYmIGNvZGUgPD0gMHgxMUQzRCkgfHwgLy8gTW4gICBbMl0gTUFTQVJBTSBHT05ESSBWT1dFTCBTSUdOIEFJLi5NQVNBUkFNIEdPTkRJIFZPV0VMIFNJR04gT1xyXG5cdFx0KDB4MTFEM0YgPD0gY29kZSAmJiBjb2RlIDw9IDB4MTFENDUpIHx8IC8vIE1uICAgWzddIE1BU0FSQU0gR09OREkgVk9XRUwgU0lHTiBBVS4uTUFTQVJBTSBHT05ESSBWSVJBTUFcclxuXHRcdDB4MTFENDcgPT0gY29kZSB8fCAvLyBNbiAgICAgICBNQVNBUkFNIEdPTkRJIFJBLUtBUkFcclxuXHRcdCgweDE2QUYwIDw9IGNvZGUgJiYgY29kZSA8PSAweDE2QUY0KSB8fCAvLyBNbiAgIFs1XSBCQVNTQSBWQUggQ09NQklOSU5HIEhJR0ggVE9ORS4uQkFTU0EgVkFIIENPTUJJTklORyBISUdILUxPVyBUT05FXHJcblx0XHQoMHgxNkIzMCA8PSBjb2RlICYmIGNvZGUgPD0gMHgxNkIzNikgfHwgLy8gTW4gICBbN10gUEFIQVdIIEhNT05HIE1BUksgQ0lNIFRVQi4uUEFIQVdIIEhNT05HIE1BUksgQ0lNIFRBVU1cclxuXHRcdCgweDE2RjhGIDw9IGNvZGUgJiYgY29kZSA8PSAweDE2RjkyKSB8fCAvLyBNbiAgIFs0XSBNSUFPIFRPTkUgUklHSFQuLk1JQU8gVE9ORSBCRUxPV1xyXG5cdFx0KDB4MUJDOUQgPD0gY29kZSAmJiBjb2RlIDw9IDB4MUJDOUUpIHx8IC8vIE1uICAgWzJdIERVUExPWUFOIFRISUNLIExFVFRFUiBTRUxFQ1RPUi4uRFVQTE9ZQU4gRE9VQkxFIE1BUktcclxuXHRcdDB4MUQxNjUgPT0gY29kZSB8fCAvLyBNYyAgICAgICBNVVNJQ0FMIFNZTUJPTCBDT01CSU5JTkcgU1RFTVxyXG5cdFx0KDB4MUQxNjcgPD0gY29kZSAmJiBjb2RlIDw9IDB4MUQxNjkpIHx8IC8vIE1uICAgWzNdIE1VU0lDQUwgU1lNQk9MIENPTUJJTklORyBUUkVNT0xPLTEuLk1VU0lDQUwgU1lNQk9MIENPTUJJTklORyBUUkVNT0xPLTNcclxuXHRcdCgweDFEMTZFIDw9IGNvZGUgJiYgY29kZSA8PSAweDFEMTcyKSB8fCAvLyBNYyAgIFs1XSBNVVNJQ0FMIFNZTUJPTCBDT01CSU5JTkcgRkxBRy0xLi5NVVNJQ0FMIFNZTUJPTCBDT01CSU5JTkcgRkxBRy01XHJcblx0XHQoMHgxRDE3QiA8PSBjb2RlICYmIGNvZGUgPD0gMHgxRDE4MikgfHwgLy8gTW4gICBbOF0gTVVTSUNBTCBTWU1CT0wgQ09NQklOSU5HIEFDQ0VOVC4uTVVTSUNBTCBTWU1CT0wgQ09NQklOSU5HIExPVVJFXHJcblx0XHQoMHgxRDE4NSA8PSBjb2RlICYmIGNvZGUgPD0gMHgxRDE4QikgfHwgLy8gTW4gICBbN10gTVVTSUNBTCBTWU1CT0wgQ09NQklOSU5HIERPSVQuLk1VU0lDQUwgU1lNQk9MIENPTUJJTklORyBUUklQTEUgVE9OR1VFXHJcblx0XHQoMHgxRDFBQSA8PSBjb2RlICYmIGNvZGUgPD0gMHgxRDFBRCkgfHwgLy8gTW4gICBbNF0gTVVTSUNBTCBTWU1CT0wgQ09NQklOSU5HIERPV04gQk9XLi5NVVNJQ0FMIFNZTUJPTCBDT01CSU5JTkcgU05BUCBQSVpaSUNBVE9cclxuXHRcdCgweDFEMjQyIDw9IGNvZGUgJiYgY29kZSA8PSAweDFEMjQ0KSB8fCAvLyBNbiAgIFszXSBDT01CSU5JTkcgR1JFRUsgTVVTSUNBTCBUUklTRU1FLi5DT01CSU5JTkcgR1JFRUsgTVVTSUNBTCBQRU5UQVNFTUVcclxuXHRcdCgweDFEQTAwIDw9IGNvZGUgJiYgY29kZSA8PSAweDFEQTM2KSB8fCAvLyBNbiAgWzU1XSBTSUdOV1JJVElORyBIRUFEIFJJTS4uU0lHTldSSVRJTkcgQUlSIFNVQ0tJTkcgSU5cclxuXHRcdCgweDFEQTNCIDw9IGNvZGUgJiYgY29kZSA8PSAweDFEQTZDKSB8fCAvLyBNbiAgWzUwXSBTSUdOV1JJVElORyBNT1VUSCBDTE9TRUQgTkVVVFJBTC4uU0lHTldSSVRJTkcgRVhDSVRFTUVOVFxyXG5cdFx0MHgxREE3NSA9PSBjb2RlIHx8IC8vIE1uICAgICAgIFNJR05XUklUSU5HIFVQUEVSIEJPRFkgVElMVElORyBGUk9NIEhJUCBKT0lOVFNcclxuXHRcdDB4MURBODQgPT0gY29kZSB8fCAvLyBNbiAgICAgICBTSUdOV1JJVElORyBMT0NBVElPTiBIRUFEIE5FQ0tcclxuXHRcdCgweDFEQTlCIDw9IGNvZGUgJiYgY29kZSA8PSAweDFEQTlGKSB8fCAvLyBNbiAgIFs1XSBTSUdOV1JJVElORyBGSUxMIE1PRElGSUVSLTIuLlNJR05XUklUSU5HIEZJTEwgTU9ESUZJRVItNlxyXG5cdFx0KDB4MURBQTEgPD0gY29kZSAmJiBjb2RlIDw9IDB4MURBQUYpIHx8IC8vIE1uICBbMTVdIFNJR05XUklUSU5HIFJPVEFUSU9OIE1PRElGSUVSLTIuLlNJR05XUklUSU5HIFJPVEFUSU9OIE1PRElGSUVSLTE2XHJcblx0XHQoMHgxRTAwMCA8PSBjb2RlICYmIGNvZGUgPD0gMHgxRTAwNikgfHwgLy8gTW4gICBbN10gQ09NQklOSU5HIEdMQUdPTElUSUMgTEVUVEVSIEFaVS4uQ09NQklOSU5HIEdMQUdPTElUSUMgTEVUVEVSIFpISVZFVEVcclxuXHRcdCgweDFFMDA4IDw9IGNvZGUgJiYgY29kZSA8PSAweDFFMDE4KSB8fCAvLyBNbiAgWzE3XSBDT01CSU5JTkcgR0xBR09MSVRJQyBMRVRURVIgWkVNTEpBLi5DT01CSU5JTkcgR0xBR09MSVRJQyBMRVRURVIgSEVSVVxyXG5cdFx0KDB4MUUwMUIgPD0gY29kZSAmJiBjb2RlIDw9IDB4MUUwMjEpIHx8IC8vIE1uICAgWzddIENPTUJJTklORyBHTEFHT0xJVElDIExFVFRFUiBTSFRBLi5DT01CSU5JTkcgR0xBR09MSVRJQyBMRVRURVIgWUFUSVxyXG5cdFx0KDB4MUUwMjMgPD0gY29kZSAmJiBjb2RlIDw9IDB4MUUwMjQpIHx8IC8vIE1uICAgWzJdIENPTUJJTklORyBHTEFHT0xJVElDIExFVFRFUiBZVS4uQ09NQklOSU5HIEdMQUdPTElUSUMgTEVUVEVSIFNNQUxMIFlVU1xyXG5cdFx0KDB4MUUwMjYgPD0gY29kZSAmJiBjb2RlIDw9IDB4MUUwMkEpIHx8IC8vIE1uICAgWzVdIENPTUJJTklORyBHTEFHT0xJVElDIExFVFRFUiBZTy4uQ09NQklOSU5HIEdMQUdPTElUSUMgTEVUVEVSIEZJVEFcclxuXHRcdCgweDFFOEQwIDw9IGNvZGUgJiYgY29kZSA8PSAweDFFOEQ2KSB8fCAvLyBNbiAgIFs3XSBNRU5ERSBLSUtBS1VJIENPTUJJTklORyBOVU1CRVIgVEVFTlMuLk1FTkRFIEtJS0FLVUkgQ09NQklOSU5HIE5VTUJFUiBNSUxMSU9OU1xyXG5cdFx0KDB4MUU5NDQgPD0gY29kZSAmJiBjb2RlIDw9IDB4MUU5NEEpIHx8IC8vIE1uICAgWzddIEFETEFNIEFMSUYgTEVOR1RIRU5FUi4uQURMQU0gTlVLVEFcclxuXHRcdCgweEUwMDIwIDw9IGNvZGUgJiYgY29kZSA8PSAweEUwMDdGKSB8fCAvLyBDZiAgWzk2XSBUQUcgU1BBQ0UuLkNBTkNFTCBUQUdcclxuXHRcdCgweEUwMTAwIDw9IGNvZGUgJiYgY29kZSA8PSAweEUwMUVGKSAvLyBNbiBbMjQwXSBWQVJJQVRJT04gU0VMRUNUT1ItMTcuLlZBUklBVElPTiBTRUxFQ1RPUi0yNTZcclxuXHRcdCl7XHJcblx0XHRcdHJldHVybiBFeHRlbmQ7XHJcblx0XHR9XHJcblx0XHRcclxuXHRcdFxyXG5cdFx0aWYoXHJcblx0XHQoMHgxRjFFNiA8PSBjb2RlICYmIGNvZGUgPD0gMHgxRjFGRikgLy8gU28gIFsyNl0gUkVHSU9OQUwgSU5ESUNBVE9SIFNZTUJPTCBMRVRURVIgQS4uUkVHSU9OQUwgSU5ESUNBVE9SIFNZTUJPTCBMRVRURVIgWlxyXG5cdFx0KXtcclxuXHRcdFx0cmV0dXJuIFJlZ2lvbmFsX0luZGljYXRvcjtcclxuXHRcdH1cclxuXHRcdFxyXG5cdFx0aWYoXHJcblx0XHQweDA5MDMgPT0gY29kZSB8fCAvLyBNYyAgICAgICBERVZBTkFHQVJJIFNJR04gVklTQVJHQVxyXG5cdFx0MHgwOTNCID09IGNvZGUgfHwgLy8gTWMgICAgICAgREVWQU5BR0FSSSBWT1dFTCBTSUdOIE9PRVxyXG5cdFx0KDB4MDkzRSA8PSBjb2RlICYmIGNvZGUgPD0gMHgwOTQwKSB8fCAvLyBNYyAgIFszXSBERVZBTkFHQVJJIFZPV0VMIFNJR04gQUEuLkRFVkFOQUdBUkkgVk9XRUwgU0lHTiBJSVxyXG5cdFx0KDB4MDk0OSA8PSBjb2RlICYmIGNvZGUgPD0gMHgwOTRDKSB8fCAvLyBNYyAgIFs0XSBERVZBTkFHQVJJIFZPV0VMIFNJR04gQ0FORFJBIE8uLkRFVkFOQUdBUkkgVk9XRUwgU0lHTiBBVVxyXG5cdFx0KDB4MDk0RSA8PSBjb2RlICYmIGNvZGUgPD0gMHgwOTRGKSB8fCAvLyBNYyAgIFsyXSBERVZBTkFHQVJJIFZPV0VMIFNJR04gUFJJU0hUSEFNQVRSQSBFLi5ERVZBTkFHQVJJIFZPV0VMIFNJR04gQVdcclxuXHRcdCgweDA5ODIgPD0gY29kZSAmJiBjb2RlIDw9IDB4MDk4MykgfHwgLy8gTWMgICBbMl0gQkVOR0FMSSBTSUdOIEFOVVNWQVJBLi5CRU5HQUxJIFNJR04gVklTQVJHQVxyXG5cdFx0KDB4MDlCRiA8PSBjb2RlICYmIGNvZGUgPD0gMHgwOUMwKSB8fCAvLyBNYyAgIFsyXSBCRU5HQUxJIFZPV0VMIFNJR04gSS4uQkVOR0FMSSBWT1dFTCBTSUdOIElJXHJcblx0XHQoMHgwOUM3IDw9IGNvZGUgJiYgY29kZSA8PSAweDA5QzgpIHx8IC8vIE1jICAgWzJdIEJFTkdBTEkgVk9XRUwgU0lHTiBFLi5CRU5HQUxJIFZPV0VMIFNJR04gQUlcclxuXHRcdCgweDA5Q0IgPD0gY29kZSAmJiBjb2RlIDw9IDB4MDlDQykgfHwgLy8gTWMgICBbMl0gQkVOR0FMSSBWT1dFTCBTSUdOIE8uLkJFTkdBTEkgVk9XRUwgU0lHTiBBVVxyXG5cdFx0MHgwQTAzID09IGNvZGUgfHwgLy8gTWMgICAgICAgR1VSTVVLSEkgU0lHTiBWSVNBUkdBXHJcblx0XHQoMHgwQTNFIDw9IGNvZGUgJiYgY29kZSA8PSAweDBBNDApIHx8IC8vIE1jICAgWzNdIEdVUk1VS0hJIFZPV0VMIFNJR04gQUEuLkdVUk1VS0hJIFZPV0VMIFNJR04gSUlcclxuXHRcdDB4MEE4MyA9PSBjb2RlIHx8IC8vIE1jICAgICAgIEdVSkFSQVRJIFNJR04gVklTQVJHQVxyXG5cdFx0KDB4MEFCRSA8PSBjb2RlICYmIGNvZGUgPD0gMHgwQUMwKSB8fCAvLyBNYyAgIFszXSBHVUpBUkFUSSBWT1dFTCBTSUdOIEFBLi5HVUpBUkFUSSBWT1dFTCBTSUdOIElJXHJcblx0XHQweDBBQzkgPT0gY29kZSB8fCAvLyBNYyAgICAgICBHVUpBUkFUSSBWT1dFTCBTSUdOIENBTkRSQSBPXHJcblx0XHQoMHgwQUNCIDw9IGNvZGUgJiYgY29kZSA8PSAweDBBQ0MpIHx8IC8vIE1jICAgWzJdIEdVSkFSQVRJIFZPV0VMIFNJR04gTy4uR1VKQVJBVEkgVk9XRUwgU0lHTiBBVVxyXG5cdFx0KDB4MEIwMiA8PSBjb2RlICYmIGNvZGUgPD0gMHgwQjAzKSB8fCAvLyBNYyAgIFsyXSBPUklZQSBTSUdOIEFOVVNWQVJBLi5PUklZQSBTSUdOIFZJU0FSR0FcclxuXHRcdDB4MEI0MCA9PSBjb2RlIHx8IC8vIE1jICAgICAgIE9SSVlBIFZPV0VMIFNJR04gSUlcclxuXHRcdCgweDBCNDcgPD0gY29kZSAmJiBjb2RlIDw9IDB4MEI0OCkgfHwgLy8gTWMgICBbMl0gT1JJWUEgVk9XRUwgU0lHTiBFLi5PUklZQSBWT1dFTCBTSUdOIEFJXHJcblx0XHQoMHgwQjRCIDw9IGNvZGUgJiYgY29kZSA8PSAweDBCNEMpIHx8IC8vIE1jICAgWzJdIE9SSVlBIFZPV0VMIFNJR04gTy4uT1JJWUEgVk9XRUwgU0lHTiBBVVxyXG5cdFx0MHgwQkJGID09IGNvZGUgfHwgLy8gTWMgICAgICAgVEFNSUwgVk9XRUwgU0lHTiBJXHJcblx0XHQoMHgwQkMxIDw9IGNvZGUgJiYgY29kZSA8PSAweDBCQzIpIHx8IC8vIE1jICAgWzJdIFRBTUlMIFZPV0VMIFNJR04gVS4uVEFNSUwgVk9XRUwgU0lHTiBVVVxyXG5cdFx0KDB4MEJDNiA8PSBjb2RlICYmIGNvZGUgPD0gMHgwQkM4KSB8fCAvLyBNYyAgIFszXSBUQU1JTCBWT1dFTCBTSUdOIEUuLlRBTUlMIFZPV0VMIFNJR04gQUlcclxuXHRcdCgweDBCQ0EgPD0gY29kZSAmJiBjb2RlIDw9IDB4MEJDQykgfHwgLy8gTWMgICBbM10gVEFNSUwgVk9XRUwgU0lHTiBPLi5UQU1JTCBWT1dFTCBTSUdOIEFVXHJcblx0XHQoMHgwQzAxIDw9IGNvZGUgJiYgY29kZSA8PSAweDBDMDMpIHx8IC8vIE1jICAgWzNdIFRFTFVHVSBTSUdOIENBTkRSQUJJTkRVLi5URUxVR1UgU0lHTiBWSVNBUkdBXHJcblx0XHQoMHgwQzQxIDw9IGNvZGUgJiYgY29kZSA8PSAweDBDNDQpIHx8IC8vIE1jICAgWzRdIFRFTFVHVSBWT1dFTCBTSUdOIFUuLlRFTFVHVSBWT1dFTCBTSUdOIFZPQ0FMSUMgUlJcclxuXHRcdCgweDBDODIgPD0gY29kZSAmJiBjb2RlIDw9IDB4MEM4MykgfHwgLy8gTWMgICBbMl0gS0FOTkFEQSBTSUdOIEFOVVNWQVJBLi5LQU5OQURBIFNJR04gVklTQVJHQVxyXG5cdFx0MHgwQ0JFID09IGNvZGUgfHwgLy8gTWMgICAgICAgS0FOTkFEQSBWT1dFTCBTSUdOIEFBXHJcblx0XHQoMHgwQ0MwIDw9IGNvZGUgJiYgY29kZSA8PSAweDBDQzEpIHx8IC8vIE1jICAgWzJdIEtBTk5BREEgVk9XRUwgU0lHTiBJSS4uS0FOTkFEQSBWT1dFTCBTSUdOIFVcclxuXHRcdCgweDBDQzMgPD0gY29kZSAmJiBjb2RlIDw9IDB4MENDNCkgfHwgLy8gTWMgICBbMl0gS0FOTkFEQSBWT1dFTCBTSUdOIFZPQ0FMSUMgUi4uS0FOTkFEQSBWT1dFTCBTSUdOIFZPQ0FMSUMgUlJcclxuXHRcdCgweDBDQzcgPD0gY29kZSAmJiBjb2RlIDw9IDB4MENDOCkgfHwgLy8gTWMgICBbMl0gS0FOTkFEQSBWT1dFTCBTSUdOIEVFLi5LQU5OQURBIFZPV0VMIFNJR04gQUlcclxuXHRcdCgweDBDQ0EgPD0gY29kZSAmJiBjb2RlIDw9IDB4MENDQikgfHwgLy8gTWMgICBbMl0gS0FOTkFEQSBWT1dFTCBTSUdOIE8uLktBTk5BREEgVk9XRUwgU0lHTiBPT1xyXG5cdFx0KDB4MEQwMiA8PSBjb2RlICYmIGNvZGUgPD0gMHgwRDAzKSB8fCAvLyBNYyAgIFsyXSBNQUxBWUFMQU0gU0lHTiBBTlVTVkFSQS4uTUFMQVlBTEFNIFNJR04gVklTQVJHQVxyXG5cdFx0KDB4MEQzRiA8PSBjb2RlICYmIGNvZGUgPD0gMHgwRDQwKSB8fCAvLyBNYyAgIFsyXSBNQUxBWUFMQU0gVk9XRUwgU0lHTiBJLi5NQUxBWUFMQU0gVk9XRUwgU0lHTiBJSVxyXG5cdFx0KDB4MEQ0NiA8PSBjb2RlICYmIGNvZGUgPD0gMHgwRDQ4KSB8fCAvLyBNYyAgIFszXSBNQUxBWUFMQU0gVk9XRUwgU0lHTiBFLi5NQUxBWUFMQU0gVk9XRUwgU0lHTiBBSVxyXG5cdFx0KDB4MEQ0QSA8PSBjb2RlICYmIGNvZGUgPD0gMHgwRDRDKSB8fCAvLyBNYyAgIFszXSBNQUxBWUFMQU0gVk9XRUwgU0lHTiBPLi5NQUxBWUFMQU0gVk9XRUwgU0lHTiBBVVxyXG5cdFx0KDB4MEQ4MiA8PSBjb2RlICYmIGNvZGUgPD0gMHgwRDgzKSB8fCAvLyBNYyAgIFsyXSBTSU5IQUxBIFNJR04gQU5VU1ZBUkFZQS4uU0lOSEFMQSBTSUdOIFZJU0FSR0FZQVxyXG5cdFx0KDB4MEREMCA8PSBjb2RlICYmIGNvZGUgPD0gMHgwREQxKSB8fCAvLyBNYyAgIFsyXSBTSU5IQUxBIFZPV0VMIFNJR04gS0VUVEkgQUVEQS1QSUxMQS4uU0lOSEFMQSBWT1dFTCBTSUdOIERJR0EgQUVEQS1QSUxMQVxyXG5cdFx0KDB4MEREOCA8PSBjb2RlICYmIGNvZGUgPD0gMHgwRERFKSB8fCAvLyBNYyAgIFs3XSBTSU5IQUxBIFZPV0VMIFNJR04gR0FFVFRBLVBJTExBLi5TSU5IQUxBIFZPV0VMIFNJR04gS09NQlVWQSBIQUEgR0FZQU5VS0lUVEFcclxuXHRcdCgweDBERjIgPD0gY29kZSAmJiBjb2RlIDw9IDB4MERGMykgfHwgLy8gTWMgICBbMl0gU0lOSEFMQSBWT1dFTCBTSUdOIERJR0EgR0FFVFRBLVBJTExBLi5TSU5IQUxBIFZPV0VMIFNJR04gRElHQSBHQVlBTlVLSVRUQVxyXG5cdFx0MHgwRTMzID09IGNvZGUgfHwgLy8gTG8gICAgICAgVEhBSSBDSEFSQUNURVIgU0FSQSBBTVxyXG5cdFx0MHgwRUIzID09IGNvZGUgfHwgLy8gTG8gICAgICAgTEFPIFZPV0VMIFNJR04gQU1cclxuXHRcdCgweDBGM0UgPD0gY29kZSAmJiBjb2RlIDw9IDB4MEYzRikgfHwgLy8gTWMgICBbMl0gVElCRVRBTiBTSUdOIFlBUiBUU0hFUy4uVElCRVRBTiBTSUdOIE1BUiBUU0hFU1xyXG5cdFx0MHgwRjdGID09IGNvZGUgfHwgLy8gTWMgICAgICAgVElCRVRBTiBTSUdOIFJOQU0gQkNBRFxyXG5cdFx0MHgxMDMxID09IGNvZGUgfHwgLy8gTWMgICAgICAgTVlBTk1BUiBWT1dFTCBTSUdOIEVcclxuXHRcdCgweDEwM0IgPD0gY29kZSAmJiBjb2RlIDw9IDB4MTAzQykgfHwgLy8gTWMgICBbMl0gTVlBTk1BUiBDT05TT05BTlQgU0lHTiBNRURJQUwgWUEuLk1ZQU5NQVIgQ09OU09OQU5UIFNJR04gTUVESUFMIFJBXHJcblx0XHQoMHgxMDU2IDw9IGNvZGUgJiYgY29kZSA8PSAweDEwNTcpIHx8IC8vIE1jICAgWzJdIE1ZQU5NQVIgVk9XRUwgU0lHTiBWT0NBTElDIFIuLk1ZQU5NQVIgVk9XRUwgU0lHTiBWT0NBTElDIFJSXHJcblx0XHQweDEwODQgPT0gY29kZSB8fCAvLyBNYyAgICAgICBNWUFOTUFSIFZPV0VMIFNJR04gU0hBTiBFXHJcblx0XHQweDE3QjYgPT0gY29kZSB8fCAvLyBNYyAgICAgICBLSE1FUiBWT1dFTCBTSUdOIEFBXHJcblx0XHQoMHgxN0JFIDw9IGNvZGUgJiYgY29kZSA8PSAweDE3QzUpIHx8IC8vIE1jICAgWzhdIEtITUVSIFZPV0VMIFNJR04gT0UuLktITUVSIFZPV0VMIFNJR04gQVVcclxuXHRcdCgweDE3QzcgPD0gY29kZSAmJiBjb2RlIDw9IDB4MTdDOCkgfHwgLy8gTWMgICBbMl0gS0hNRVIgU0lHTiBSRUFITVVLLi5LSE1FUiBTSUdOIFlVVUtBTEVBUElOVFVcclxuXHRcdCgweDE5MjMgPD0gY29kZSAmJiBjb2RlIDw9IDB4MTkyNikgfHwgLy8gTWMgICBbNF0gTElNQlUgVk9XRUwgU0lHTiBFRS4uTElNQlUgVk9XRUwgU0lHTiBBVVxyXG5cdFx0KDB4MTkyOSA8PSBjb2RlICYmIGNvZGUgPD0gMHgxOTJCKSB8fCAvLyBNYyAgIFszXSBMSU1CVSBTVUJKT0lORUQgTEVUVEVSIFlBLi5MSU1CVSBTVUJKT0lORUQgTEVUVEVSIFdBXHJcblx0XHQoMHgxOTMwIDw9IGNvZGUgJiYgY29kZSA8PSAweDE5MzEpIHx8IC8vIE1jICAgWzJdIExJTUJVIFNNQUxMIExFVFRFUiBLQS4uTElNQlUgU01BTEwgTEVUVEVSIE5HQVxyXG5cdFx0KDB4MTkzMyA8PSBjb2RlICYmIGNvZGUgPD0gMHgxOTM4KSB8fCAvLyBNYyAgIFs2XSBMSU1CVSBTTUFMTCBMRVRURVIgVEEuLkxJTUJVIFNNQUxMIExFVFRFUiBMQVxyXG5cdFx0KDB4MUExOSA8PSBjb2RlICYmIGNvZGUgPD0gMHgxQTFBKSB8fCAvLyBNYyAgIFsyXSBCVUdJTkVTRSBWT1dFTCBTSUdOIEUuLkJVR0lORVNFIFZPV0VMIFNJR04gT1xyXG5cdFx0MHgxQTU1ID09IGNvZGUgfHwgLy8gTWMgICAgICAgVEFJIFRIQU0gQ09OU09OQU5UIFNJR04gTUVESUFMIFJBXHJcblx0XHQweDFBNTcgPT0gY29kZSB8fCAvLyBNYyAgICAgICBUQUkgVEhBTSBDT05TT05BTlQgU0lHTiBMQSBUQU5HIExBSVxyXG5cdFx0KDB4MUE2RCA8PSBjb2RlICYmIGNvZGUgPD0gMHgxQTcyKSB8fCAvLyBNYyAgIFs2XSBUQUkgVEhBTSBWT1dFTCBTSUdOIE9ZLi5UQUkgVEhBTSBWT1dFTCBTSUdOIFRIQU0gQUlcclxuXHRcdDB4MUIwNCA9PSBjb2RlIHx8IC8vIE1jICAgICAgIEJBTElORVNFIFNJR04gQklTQUhcclxuXHRcdDB4MUIzNSA9PSBjb2RlIHx8IC8vIE1jICAgICAgIEJBTElORVNFIFZPV0VMIFNJR04gVEVEVU5HXHJcblx0XHQweDFCM0IgPT0gY29kZSB8fCAvLyBNYyAgICAgICBCQUxJTkVTRSBWT1dFTCBTSUdOIFJBIFJFUEEgVEVEVU5HXHJcblx0XHQoMHgxQjNEIDw9IGNvZGUgJiYgY29kZSA8PSAweDFCNDEpIHx8IC8vIE1jICAgWzVdIEJBTElORVNFIFZPV0VMIFNJR04gTEEgTEVOR0EgVEVEVU5HLi5CQUxJTkVTRSBWT1dFTCBTSUdOIFRBTElORyBSRVBBIFRFRFVOR1xyXG5cdFx0KDB4MUI0MyA8PSBjb2RlICYmIGNvZGUgPD0gMHgxQjQ0KSB8fCAvLyBNYyAgIFsyXSBCQUxJTkVTRSBWT1dFTCBTSUdOIFBFUEVUIFRFRFVORy4uQkFMSU5FU0UgQURFRyBBREVHXHJcblx0XHQweDFCODIgPT0gY29kZSB8fCAvLyBNYyAgICAgICBTVU5EQU5FU0UgU0lHTiBQQU5HV0lTQURcclxuXHRcdDB4MUJBMSA9PSBjb2RlIHx8IC8vIE1jICAgICAgIFNVTkRBTkVTRSBDT05TT05BTlQgU0lHTiBQQU1JTkdLQUxcclxuXHRcdCgweDFCQTYgPD0gY29kZSAmJiBjb2RlIDw9IDB4MUJBNykgfHwgLy8gTWMgICBbMl0gU1VOREFORVNFIFZPV0VMIFNJR04gUEFOQUVMQUVORy4uU1VOREFORVNFIFZPV0VMIFNJR04gUEFOT0xPTkdcclxuXHRcdDB4MUJBQSA9PSBjb2RlIHx8IC8vIE1jICAgICAgIFNVTkRBTkVTRSBTSUdOIFBBTUFBRUhcclxuXHRcdDB4MUJFNyA9PSBjb2RlIHx8IC8vIE1jICAgICAgIEJBVEFLIFZPV0VMIFNJR04gRVxyXG5cdFx0KDB4MUJFQSA8PSBjb2RlICYmIGNvZGUgPD0gMHgxQkVDKSB8fCAvLyBNYyAgIFszXSBCQVRBSyBWT1dFTCBTSUdOIEkuLkJBVEFLIFZPV0VMIFNJR04gT1xyXG5cdFx0MHgxQkVFID09IGNvZGUgfHwgLy8gTWMgICAgICAgQkFUQUsgVk9XRUwgU0lHTiBVXHJcblx0XHQoMHgxQkYyIDw9IGNvZGUgJiYgY29kZSA8PSAweDFCRjMpIHx8IC8vIE1jICAgWzJdIEJBVEFLIFBBTkdPTEFULi5CQVRBSyBQQU5PTkdPTkFOXHJcblx0XHQoMHgxQzI0IDw9IGNvZGUgJiYgY29kZSA8PSAweDFDMkIpIHx8IC8vIE1jICAgWzhdIExFUENIQSBTVUJKT0lORUQgTEVUVEVSIFlBLi5MRVBDSEEgVk9XRUwgU0lHTiBVVVxyXG5cdFx0KDB4MUMzNCA8PSBjb2RlICYmIGNvZGUgPD0gMHgxQzM1KSB8fCAvLyBNYyAgIFsyXSBMRVBDSEEgQ09OU09OQU5UIFNJR04gTllJTi1ETy4uTEVQQ0hBIENPTlNPTkFOVCBTSUdOIEtBTkdcclxuXHRcdDB4MUNFMSA9PSBjb2RlIHx8IC8vIE1jICAgICAgIFZFRElDIFRPTkUgQVRIQVJWQVZFRElDIElOREVQRU5ERU5UIFNWQVJJVEFcclxuXHRcdCgweDFDRjIgPD0gY29kZSAmJiBjb2RlIDw9IDB4MUNGMykgfHwgLy8gTWMgICBbMl0gVkVESUMgU0lHTiBBUkRIQVZJU0FSR0EuLlZFRElDIFNJR04gUk9UQVRFRCBBUkRIQVZJU0FSR0FcclxuXHRcdDB4MUNGNyA9PSBjb2RlIHx8IC8vIE1jICAgICAgIFZFRElDIFNJR04gQVRJS1JBTUFcclxuXHRcdCgweEE4MjMgPD0gY29kZSAmJiBjb2RlIDw9IDB4QTgyNCkgfHwgLy8gTWMgICBbMl0gU1lMT1RJIE5BR1JJIFZPV0VMIFNJR04gQS4uU1lMT1RJIE5BR1JJIFZPV0VMIFNJR04gSVxyXG5cdFx0MHhBODI3ID09IGNvZGUgfHwgLy8gTWMgICAgICAgU1lMT1RJIE5BR1JJIFZPV0VMIFNJR04gT09cclxuXHRcdCgweEE4ODAgPD0gY29kZSAmJiBjb2RlIDw9IDB4QTg4MSkgfHwgLy8gTWMgICBbMl0gU0FVUkFTSFRSQSBTSUdOIEFOVVNWQVJBLi5TQVVSQVNIVFJBIFNJR04gVklTQVJHQVxyXG5cdFx0KDB4QThCNCA8PSBjb2RlICYmIGNvZGUgPD0gMHhBOEMzKSB8fCAvLyBNYyAgWzE2XSBTQVVSQVNIVFJBIENPTlNPTkFOVCBTSUdOIEhBQVJVLi5TQVVSQVNIVFJBIFZPV0VMIFNJR04gQVVcclxuXHRcdCgweEE5NTIgPD0gY29kZSAmJiBjb2RlIDw9IDB4QTk1MykgfHwgLy8gTWMgICBbMl0gUkVKQU5HIENPTlNPTkFOVCBTSUdOIEguLlJFSkFORyBWSVJBTUFcclxuXHRcdDB4QTk4MyA9PSBjb2RlIHx8IC8vIE1jICAgICAgIEpBVkFORVNFIFNJR04gV0lHTllBTlxyXG5cdFx0KDB4QTlCNCA8PSBjb2RlICYmIGNvZGUgPD0gMHhBOUI1KSB8fCAvLyBNYyAgIFsyXSBKQVZBTkVTRSBWT1dFTCBTSUdOIFRBUlVORy4uSkFWQU5FU0UgVk9XRUwgU0lHTiBUT0xPTkdcclxuXHRcdCgweEE5QkEgPD0gY29kZSAmJiBjb2RlIDw9IDB4QTlCQikgfHwgLy8gTWMgICBbMl0gSkFWQU5FU0UgVk9XRUwgU0lHTiBUQUxJTkcuLkpBVkFORVNFIFZPV0VMIFNJR04gRElSR0EgTVVSRVxyXG5cdFx0KDB4QTlCRCA8PSBjb2RlICYmIGNvZGUgPD0gMHhBOUMwKSB8fCAvLyBNYyAgIFs0XSBKQVZBTkVTRSBDT05TT05BTlQgU0lHTiBLRVJFVC4uSkFWQU5FU0UgUEFOR0tPTlxyXG5cdFx0KDB4QUEyRiA8PSBjb2RlICYmIGNvZGUgPD0gMHhBQTMwKSB8fCAvLyBNYyAgIFsyXSBDSEFNIFZPV0VMIFNJR04gTy4uQ0hBTSBWT1dFTCBTSUdOIEFJXHJcblx0XHQoMHhBQTMzIDw9IGNvZGUgJiYgY29kZSA8PSAweEFBMzQpIHx8IC8vIE1jICAgWzJdIENIQU0gQ09OU09OQU5UIFNJR04gWUEuLkNIQU0gQ09OU09OQU5UIFNJR04gUkFcclxuXHRcdDB4QUE0RCA9PSBjb2RlIHx8IC8vIE1jICAgICAgIENIQU0gQ09OU09OQU5UIFNJR04gRklOQUwgSFxyXG5cdFx0MHhBQUVCID09IGNvZGUgfHwgLy8gTWMgICAgICAgTUVFVEVJIE1BWUVLIFZPV0VMIFNJR04gSUlcclxuXHRcdCgweEFBRUUgPD0gY29kZSAmJiBjb2RlIDw9IDB4QUFFRikgfHwgLy8gTWMgICBbMl0gTUVFVEVJIE1BWUVLIFZPV0VMIFNJR04gQVUuLk1FRVRFSSBNQVlFSyBWT1dFTCBTSUdOIEFBVVxyXG5cdFx0MHhBQUY1ID09IGNvZGUgfHwgLy8gTWMgICAgICAgTUVFVEVJIE1BWUVLIFZPV0VMIFNJR04gVklTQVJHQVxyXG5cdFx0KDB4QUJFMyA8PSBjb2RlICYmIGNvZGUgPD0gMHhBQkU0KSB8fCAvLyBNYyAgIFsyXSBNRUVURUkgTUFZRUsgVk9XRUwgU0lHTiBPTkFQLi5NRUVURUkgTUFZRUsgVk9XRUwgU0lHTiBJTkFQXHJcblx0XHQoMHhBQkU2IDw9IGNvZGUgJiYgY29kZSA8PSAweEFCRTcpIHx8IC8vIE1jICAgWzJdIE1FRVRFSSBNQVlFSyBWT1dFTCBTSUdOIFlFTkFQLi5NRUVURUkgTUFZRUsgVk9XRUwgU0lHTiBTT1VOQVBcclxuXHRcdCgweEFCRTkgPD0gY29kZSAmJiBjb2RlIDw9IDB4QUJFQSkgfHwgLy8gTWMgICBbMl0gTUVFVEVJIE1BWUVLIFZPV0VMIFNJR04gQ0hFSU5BUC4uTUVFVEVJIE1BWUVLIFZPV0VMIFNJR04gTlVOR1xyXG5cdFx0MHhBQkVDID09IGNvZGUgfHwgLy8gTWMgICAgICAgTUVFVEVJIE1BWUVLIExVTSBJWUVLXHJcblx0XHQweDExMDAwID09IGNvZGUgfHwgLy8gTWMgICAgICAgQlJBSE1JIFNJR04gQ0FORFJBQklORFVcclxuXHRcdDB4MTEwMDIgPT0gY29kZSB8fCAvLyBNYyAgICAgICBCUkFITUkgU0lHTiBWSVNBUkdBXHJcblx0XHQweDExMDgyID09IGNvZGUgfHwgLy8gTWMgICAgICAgS0FJVEhJIFNJR04gVklTQVJHQVxyXG5cdFx0KDB4MTEwQjAgPD0gY29kZSAmJiBjb2RlIDw9IDB4MTEwQjIpIHx8IC8vIE1jICAgWzNdIEtBSVRISSBWT1dFTCBTSUdOIEFBLi5LQUlUSEkgVk9XRUwgU0lHTiBJSVxyXG5cdFx0KDB4MTEwQjcgPD0gY29kZSAmJiBjb2RlIDw9IDB4MTEwQjgpIHx8IC8vIE1jICAgWzJdIEtBSVRISSBWT1dFTCBTSUdOIE8uLktBSVRISSBWT1dFTCBTSUdOIEFVXHJcblx0XHQweDExMTJDID09IGNvZGUgfHwgLy8gTWMgICAgICAgQ0hBS01BIFZPV0VMIFNJR04gRVxyXG5cdFx0MHgxMTE4MiA9PSBjb2RlIHx8IC8vIE1jICAgICAgIFNIQVJBREEgU0lHTiBWSVNBUkdBXHJcblx0XHQoMHgxMTFCMyA8PSBjb2RlICYmIGNvZGUgPD0gMHgxMTFCNSkgfHwgLy8gTWMgICBbM10gU0hBUkFEQSBWT1dFTCBTSUdOIEFBLi5TSEFSQURBIFZPV0VMIFNJR04gSUlcclxuXHRcdCgweDExMUJGIDw9IGNvZGUgJiYgY29kZSA8PSAweDExMUMwKSB8fCAvLyBNYyAgIFsyXSBTSEFSQURBIFZPV0VMIFNJR04gQVUuLlNIQVJBREEgU0lHTiBWSVJBTUFcclxuXHRcdCgweDExMjJDIDw9IGNvZGUgJiYgY29kZSA8PSAweDExMjJFKSB8fCAvLyBNYyAgIFszXSBLSE9KS0kgVk9XRUwgU0lHTiBBQS4uS0hPSktJIFZPV0VMIFNJR04gSUlcclxuXHRcdCgweDExMjMyIDw9IGNvZGUgJiYgY29kZSA8PSAweDExMjMzKSB8fCAvLyBNYyAgIFsyXSBLSE9KS0kgVk9XRUwgU0lHTiBPLi5LSE9KS0kgVk9XRUwgU0lHTiBBVVxyXG5cdFx0MHgxMTIzNSA9PSBjb2RlIHx8IC8vIE1jICAgICAgIEtIT0pLSSBTSUdOIFZJUkFNQVxyXG5cdFx0KDB4MTEyRTAgPD0gY29kZSAmJiBjb2RlIDw9IDB4MTEyRTIpIHx8IC8vIE1jICAgWzNdIEtIVURBV0FESSBWT1dFTCBTSUdOIEFBLi5LSFVEQVdBREkgVk9XRUwgU0lHTiBJSVxyXG5cdFx0KDB4MTEzMDIgPD0gY29kZSAmJiBjb2RlIDw9IDB4MTEzMDMpIHx8IC8vIE1jICAgWzJdIEdSQU5USEEgU0lHTiBBTlVTVkFSQS4uR1JBTlRIQSBTSUdOIFZJU0FSR0FcclxuXHRcdDB4MTEzM0YgPT0gY29kZSB8fCAvLyBNYyAgICAgICBHUkFOVEhBIFZPV0VMIFNJR04gSVxyXG5cdFx0KDB4MTEzNDEgPD0gY29kZSAmJiBjb2RlIDw9IDB4MTEzNDQpIHx8IC8vIE1jICAgWzRdIEdSQU5USEEgVk9XRUwgU0lHTiBVLi5HUkFOVEhBIFZPV0VMIFNJR04gVk9DQUxJQyBSUlxyXG5cdFx0KDB4MTEzNDcgPD0gY29kZSAmJiBjb2RlIDw9IDB4MTEzNDgpIHx8IC8vIE1jICAgWzJdIEdSQU5USEEgVk9XRUwgU0lHTiBFRS4uR1JBTlRIQSBWT1dFTCBTSUdOIEFJXHJcblx0XHQoMHgxMTM0QiA8PSBjb2RlICYmIGNvZGUgPD0gMHgxMTM0RCkgfHwgLy8gTWMgICBbM10gR1JBTlRIQSBWT1dFTCBTSUdOIE9PLi5HUkFOVEhBIFNJR04gVklSQU1BXHJcblx0XHQoMHgxMTM2MiA8PSBjb2RlICYmIGNvZGUgPD0gMHgxMTM2MykgfHwgLy8gTWMgICBbMl0gR1JBTlRIQSBWT1dFTCBTSUdOIFZPQ0FMSUMgTC4uR1JBTlRIQSBWT1dFTCBTSUdOIFZPQ0FMSUMgTExcclxuXHRcdCgweDExNDM1IDw9IGNvZGUgJiYgY29kZSA8PSAweDExNDM3KSB8fCAvLyBNYyAgIFszXSBORVdBIFZPV0VMIFNJR04gQUEuLk5FV0EgVk9XRUwgU0lHTiBJSVxyXG5cdFx0KDB4MTE0NDAgPD0gY29kZSAmJiBjb2RlIDw9IDB4MTE0NDEpIHx8IC8vIE1jICAgWzJdIE5FV0EgVk9XRUwgU0lHTiBPLi5ORVdBIFZPV0VMIFNJR04gQVVcclxuXHRcdDB4MTE0NDUgPT0gY29kZSB8fCAvLyBNYyAgICAgICBORVdBIFNJR04gVklTQVJHQVxyXG5cdFx0KDB4MTE0QjEgPD0gY29kZSAmJiBjb2RlIDw9IDB4MTE0QjIpIHx8IC8vIE1jICAgWzJdIFRJUkhVVEEgVk9XRUwgU0lHTiBJLi5USVJIVVRBIFZPV0VMIFNJR04gSUlcclxuXHRcdDB4MTE0QjkgPT0gY29kZSB8fCAvLyBNYyAgICAgICBUSVJIVVRBIFZPV0VMIFNJR04gRVxyXG5cdFx0KDB4MTE0QkIgPD0gY29kZSAmJiBjb2RlIDw9IDB4MTE0QkMpIHx8IC8vIE1jICAgWzJdIFRJUkhVVEEgVk9XRUwgU0lHTiBBSS4uVElSSFVUQSBWT1dFTCBTSUdOIE9cclxuXHRcdDB4MTE0QkUgPT0gY29kZSB8fCAvLyBNYyAgICAgICBUSVJIVVRBIFZPV0VMIFNJR04gQVVcclxuXHRcdDB4MTE0QzEgPT0gY29kZSB8fCAvLyBNYyAgICAgICBUSVJIVVRBIFNJR04gVklTQVJHQVxyXG5cdFx0KDB4MTE1QjAgPD0gY29kZSAmJiBjb2RlIDw9IDB4MTE1QjEpIHx8IC8vIE1jICAgWzJdIFNJRERIQU0gVk9XRUwgU0lHTiBJLi5TSURESEFNIFZPV0VMIFNJR04gSUlcclxuXHRcdCgweDExNUI4IDw9IGNvZGUgJiYgY29kZSA8PSAweDExNUJCKSB8fCAvLyBNYyAgIFs0XSBTSURESEFNIFZPV0VMIFNJR04gRS4uU0lEREhBTSBWT1dFTCBTSUdOIEFVXHJcblx0XHQweDExNUJFID09IGNvZGUgfHwgLy8gTWMgICAgICAgU0lEREhBTSBTSUdOIFZJU0FSR0FcclxuXHRcdCgweDExNjMwIDw9IGNvZGUgJiYgY29kZSA8PSAweDExNjMyKSB8fCAvLyBNYyAgIFszXSBNT0RJIFZPV0VMIFNJR04gQUEuLk1PREkgVk9XRUwgU0lHTiBJSVxyXG5cdFx0KDB4MTE2M0IgPD0gY29kZSAmJiBjb2RlIDw9IDB4MTE2M0MpIHx8IC8vIE1jICAgWzJdIE1PREkgVk9XRUwgU0lHTiBPLi5NT0RJIFZPV0VMIFNJR04gQVVcclxuXHRcdDB4MTE2M0UgPT0gY29kZSB8fCAvLyBNYyAgICAgICBNT0RJIFNJR04gVklTQVJHQVxyXG5cdFx0MHgxMTZBQyA9PSBjb2RlIHx8IC8vIE1jICAgICAgIFRBS1JJIFNJR04gVklTQVJHQVxyXG5cdFx0KDB4MTE2QUUgPD0gY29kZSAmJiBjb2RlIDw9IDB4MTE2QUYpIHx8IC8vIE1jICAgWzJdIFRBS1JJIFZPV0VMIFNJR04gSS4uVEFLUkkgVk9XRUwgU0lHTiBJSVxyXG5cdFx0MHgxMTZCNiA9PSBjb2RlIHx8IC8vIE1jICAgICAgIFRBS1JJIFNJR04gVklSQU1BXHJcblx0XHQoMHgxMTcyMCA8PSBjb2RlICYmIGNvZGUgPD0gMHgxMTcyMSkgfHwgLy8gTWMgICBbMl0gQUhPTSBWT1dFTCBTSUdOIEEuLkFIT00gVk9XRUwgU0lHTiBBQVxyXG5cdFx0MHgxMTcyNiA9PSBjb2RlIHx8IC8vIE1jICAgICAgIEFIT00gVk9XRUwgU0lHTiBFXHJcblx0XHQoMHgxMUEwNyA8PSBjb2RlICYmIGNvZGUgPD0gMHgxMUEwOCkgfHwgLy8gTWMgICBbMl0gWkFOQUJBWkFSIFNRVUFSRSBWT1dFTCBTSUdOIEFJLi5aQU5BQkFaQVIgU1FVQVJFIFZPV0VMIFNJR04gQVVcclxuXHRcdDB4MTFBMzkgPT0gY29kZSB8fCAvLyBNYyAgICAgICBaQU5BQkFaQVIgU1FVQVJFIFNJR04gVklTQVJHQVxyXG5cdFx0KDB4MTFBNTcgPD0gY29kZSAmJiBjb2RlIDw9IDB4MTFBNTgpIHx8IC8vIE1jICAgWzJdIFNPWU9NQk8gVk9XRUwgU0lHTiBBSS4uU09ZT01CTyBWT1dFTCBTSUdOIEFVXHJcblx0XHQweDExQTk3ID09IGNvZGUgfHwgLy8gTWMgICAgICAgU09ZT01CTyBTSUdOIFZJU0FSR0FcclxuXHRcdDB4MTFDMkYgPT0gY29kZSB8fCAvLyBNYyAgICAgICBCSEFJS1NVS0kgVk9XRUwgU0lHTiBBQVxyXG5cdFx0MHgxMUMzRSA9PSBjb2RlIHx8IC8vIE1jICAgICAgIEJIQUlLU1VLSSBTSUdOIFZJU0FSR0FcclxuXHRcdDB4MTFDQTkgPT0gY29kZSB8fCAvLyBNYyAgICAgICBNQVJDSEVOIFNVQkpPSU5FRCBMRVRURVIgWUFcclxuXHRcdDB4MTFDQjEgPT0gY29kZSB8fCAvLyBNYyAgICAgICBNQVJDSEVOIFZPV0VMIFNJR04gSVxyXG5cdFx0MHgxMUNCNCA9PSBjb2RlIHx8IC8vIE1jICAgICAgIE1BUkNIRU4gVk9XRUwgU0lHTiBPXHJcblx0XHQoMHgxNkY1MSA8PSBjb2RlICYmIGNvZGUgPD0gMHgxNkY3RSkgfHwgLy8gTWMgIFs0Nl0gTUlBTyBTSUdOIEFTUElSQVRJT04uLk1JQU8gVk9XRUwgU0lHTiBOR1xyXG5cdFx0MHgxRDE2NiA9PSBjb2RlIHx8IC8vIE1jICAgICAgIE1VU0lDQUwgU1lNQk9MIENPTUJJTklORyBTUFJFQ0hHRVNBTkcgU1RFTVxyXG5cdFx0MHgxRDE2RCA9PSBjb2RlIC8vIE1jICAgICAgIE1VU0lDQUwgU1lNQk9MIENPTUJJTklORyBBVUdNRU5UQVRJT04gRE9UXHJcblx0XHQpe1xyXG5cdFx0XHRyZXR1cm4gU3BhY2luZ01hcms7XHJcblx0XHR9XHJcblx0XHRcclxuXHRcdFxyXG5cdFx0aWYoXHJcblx0XHQoMHgxMTAwIDw9IGNvZGUgJiYgY29kZSA8PSAweDExNUYpIHx8IC8vIExvICBbOTZdIEhBTkdVTCBDSE9TRU9ORyBLSVlFT0suLkhBTkdVTCBDSE9TRU9ORyBGSUxMRVJcclxuXHRcdCgweEE5NjAgPD0gY29kZSAmJiBjb2RlIDw9IDB4QTk3QykgLy8gTG8gIFsyOV0gSEFOR1VMIENIT1NFT05HIFRJS0VVVC1NSUVVTS4uSEFOR1VMIENIT1NFT05HIFNTQU5HWUVPUklOSElFVUhcclxuXHRcdCl7XHJcblx0XHRcdHJldHVybiBMO1xyXG5cdFx0fVxyXG5cdFx0XHJcblx0XHRpZihcclxuXHRcdCgweDExNjAgPD0gY29kZSAmJiBjb2RlIDw9IDB4MTFBNykgfHwgLy8gTG8gIFs3Ml0gSEFOR1VMIEpVTkdTRU9ORyBGSUxMRVIuLkhBTkdVTCBKVU5HU0VPTkcgTy1ZQUVcclxuXHRcdCgweEQ3QjAgPD0gY29kZSAmJiBjb2RlIDw9IDB4RDdDNikgLy8gTG8gIFsyM10gSEFOR1VMIEpVTkdTRU9ORyBPLVlFTy4uSEFOR1VMIEpVTkdTRU9ORyBBUkFFQS1FXHJcblx0XHQpe1xyXG5cdFx0XHRyZXR1cm4gVjtcclxuXHRcdH1cclxuXHRcdFxyXG5cdFx0XHJcblx0XHRpZihcclxuXHRcdCgweDExQTggPD0gY29kZSAmJiBjb2RlIDw9IDB4MTFGRikgfHwgLy8gTG8gIFs4OF0gSEFOR1VMIEpPTkdTRU9ORyBLSVlFT0suLkhBTkdVTCBKT05HU0VPTkcgU1NBTkdOSUVVTlxyXG5cdFx0KDB4RDdDQiA8PSBjb2RlICYmIGNvZGUgPD0gMHhEN0ZCKSAvLyBMbyAgWzQ5XSBIQU5HVUwgSk9OR1NFT05HIE5JRVVOLVJJRVVMLi5IQU5HVUwgSk9OR1NFT05HIFBISUVVUEgtVEhJRVVUSFxyXG5cdFx0KXtcclxuXHRcdFx0cmV0dXJuIFQ7XHJcblx0XHR9XHJcblx0XHRcclxuXHRcdGlmKFxyXG5cdFx0MHhBQzAwID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIEdBXHJcblx0XHQweEFDMUMgPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgR0FFXHJcblx0XHQweEFDMzggPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgR1lBXHJcblx0XHQweEFDNTQgPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgR1lBRVxyXG5cdFx0MHhBQzcwID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIEdFT1xyXG5cdFx0MHhBQzhDID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIEdFXHJcblx0XHQweEFDQTggPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgR1lFT1xyXG5cdFx0MHhBQ0M0ID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIEdZRVxyXG5cdFx0MHhBQ0UwID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIEdPXHJcblx0XHQweEFDRkMgPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgR1dBXHJcblx0XHQweEFEMTggPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgR1dBRVxyXG5cdFx0MHhBRDM0ID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIEdPRVxyXG5cdFx0MHhBRDUwID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIEdZT1xyXG5cdFx0MHhBRDZDID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIEdVXHJcblx0XHQweEFEODggPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgR1dFT1xyXG5cdFx0MHhBREE0ID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIEdXRVxyXG5cdFx0MHhBREMwID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIEdXSVxyXG5cdFx0MHhBRERDID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIEdZVVxyXG5cdFx0MHhBREY4ID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIEdFVVxyXG5cdFx0MHhBRTE0ID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIEdZSVxyXG5cdFx0MHhBRTMwID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIEdJXHJcblx0XHQweEFFNEMgPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgR0dBXHJcblx0XHQweEFFNjggPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgR0dBRVxyXG5cdFx0MHhBRTg0ID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIEdHWUFcclxuXHRcdDB4QUVBMCA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBHR1lBRVxyXG5cdFx0MHhBRUJDID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIEdHRU9cclxuXHRcdDB4QUVEOCA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBHR0VcclxuXHRcdDB4QUVGNCA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBHR1lFT1xyXG5cdFx0MHhBRjEwID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIEdHWUVcclxuXHRcdDB4QUYyQyA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBHR09cclxuXHRcdDB4QUY0OCA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBHR1dBXHJcblx0XHQweEFGNjQgPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgR0dXQUVcclxuXHRcdDB4QUY4MCA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBHR09FXHJcblx0XHQweEFGOUMgPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgR0dZT1xyXG5cdFx0MHhBRkI4ID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIEdHVVxyXG5cdFx0MHhBRkQ0ID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIEdHV0VPXHJcblx0XHQweEFGRjAgPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgR0dXRVxyXG5cdFx0MHhCMDBDID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIEdHV0lcclxuXHRcdDB4QjAyOCA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBHR1lVXHJcblx0XHQweEIwNDQgPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgR0dFVVxyXG5cdFx0MHhCMDYwID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIEdHWUlcclxuXHRcdDB4QjA3QyA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBHR0lcclxuXHRcdDB4QjA5OCA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBOQVxyXG5cdFx0MHhCMEI0ID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIE5BRVxyXG5cdFx0MHhCMEQwID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIE5ZQVxyXG5cdFx0MHhCMEVDID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIE5ZQUVcclxuXHRcdDB4QjEwOCA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBORU9cclxuXHRcdDB4QjEyNCA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBORVxyXG5cdFx0MHhCMTQwID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIE5ZRU9cclxuXHRcdDB4QjE1QyA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBOWUVcclxuXHRcdDB4QjE3OCA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBOT1xyXG5cdFx0MHhCMTk0ID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIE5XQVxyXG5cdFx0MHhCMUIwID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIE5XQUVcclxuXHRcdDB4QjFDQyA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBOT0VcclxuXHRcdDB4QjFFOCA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBOWU9cclxuXHRcdDB4QjIwNCA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBOVVxyXG5cdFx0MHhCMjIwID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIE5XRU9cclxuXHRcdDB4QjIzQyA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBOV0VcclxuXHRcdDB4QjI1OCA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBOV0lcclxuXHRcdDB4QjI3NCA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBOWVVcclxuXHRcdDB4QjI5MCA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBORVVcclxuXHRcdDB4QjJBQyA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBOWUlcclxuXHRcdDB4QjJDOCA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBOSVxyXG5cdFx0MHhCMkU0ID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIERBXHJcblx0XHQweEIzMDAgPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgREFFXHJcblx0XHQweEIzMUMgPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgRFlBXHJcblx0XHQweEIzMzggPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgRFlBRVxyXG5cdFx0MHhCMzU0ID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIERFT1xyXG5cdFx0MHhCMzcwID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIERFXHJcblx0XHQweEIzOEMgPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgRFlFT1xyXG5cdFx0MHhCM0E4ID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIERZRVxyXG5cdFx0MHhCM0M0ID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIERPXHJcblx0XHQweEIzRTAgPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgRFdBXHJcblx0XHQweEIzRkMgPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgRFdBRVxyXG5cdFx0MHhCNDE4ID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIERPRVxyXG5cdFx0MHhCNDM0ID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIERZT1xyXG5cdFx0MHhCNDUwID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIERVXHJcblx0XHQweEI0NkMgPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgRFdFT1xyXG5cdFx0MHhCNDg4ID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIERXRVxyXG5cdFx0MHhCNEE0ID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIERXSVxyXG5cdFx0MHhCNEMwID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIERZVVxyXG5cdFx0MHhCNERDID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIERFVVxyXG5cdFx0MHhCNEY4ID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIERZSVxyXG5cdFx0MHhCNTE0ID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIERJXHJcblx0XHQweEI1MzAgPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgRERBXHJcblx0XHQweEI1NEMgPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgRERBRVxyXG5cdFx0MHhCNTY4ID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIEREWUFcclxuXHRcdDB4QjU4NCA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBERFlBRVxyXG5cdFx0MHhCNUEwID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIERERU9cclxuXHRcdDB4QjVCQyA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBEREVcclxuXHRcdDB4QjVEOCA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBERFlFT1xyXG5cdFx0MHhCNUY0ID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIEREWUVcclxuXHRcdDB4QjYxMCA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBERE9cclxuXHRcdDB4QjYyQyA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBERFdBXHJcblx0XHQweEI2NDggPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgRERXQUVcclxuXHRcdDB4QjY2NCA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBERE9FXHJcblx0XHQweEI2ODAgPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgRERZT1xyXG5cdFx0MHhCNjlDID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIEREVVxyXG5cdFx0MHhCNkI4ID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIEREV0VPXHJcblx0XHQweEI2RDQgPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgRERXRVxyXG5cdFx0MHhCNkYwID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIEREV0lcclxuXHRcdDB4QjcwQyA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBERFlVXHJcblx0XHQweEI3MjggPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgRERFVVxyXG5cdFx0MHhCNzQ0ID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIEREWUlcclxuXHRcdDB4Qjc2MCA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBERElcclxuXHRcdDB4Qjc3QyA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBSQVxyXG5cdFx0MHhCNzk4ID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIFJBRVxyXG5cdFx0MHhCN0I0ID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIFJZQVxyXG5cdFx0MHhCN0QwID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIFJZQUVcclxuXHRcdDB4QjdFQyA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBSRU9cclxuXHRcdDB4QjgwOCA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBSRVxyXG5cdFx0MHhCODI0ID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIFJZRU9cclxuXHRcdDB4Qjg0MCA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBSWUVcclxuXHRcdDB4Qjg1QyA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBST1xyXG5cdFx0MHhCODc4ID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIFJXQVxyXG5cdFx0MHhCODk0ID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIFJXQUVcclxuXHRcdDB4QjhCMCA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBST0VcclxuXHRcdDB4QjhDQyA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBSWU9cclxuXHRcdDB4QjhFOCA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBSVVxyXG5cdFx0MHhCOTA0ID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIFJXRU9cclxuXHRcdDB4QjkyMCA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBSV0VcclxuXHRcdDB4QjkzQyA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBSV0lcclxuXHRcdDB4Qjk1OCA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBSWVVcclxuXHRcdDB4Qjk3NCA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBSRVVcclxuXHRcdDB4Qjk5MCA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBSWUlcclxuXHRcdDB4QjlBQyA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBSSVxyXG5cdFx0MHhCOUM4ID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIE1BXHJcblx0XHQweEI5RTQgPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgTUFFXHJcblx0XHQweEJBMDAgPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgTVlBXHJcblx0XHQweEJBMUMgPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgTVlBRVxyXG5cdFx0MHhCQTM4ID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIE1FT1xyXG5cdFx0MHhCQTU0ID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIE1FXHJcblx0XHQweEJBNzAgPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgTVlFT1xyXG5cdFx0MHhCQThDID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIE1ZRVxyXG5cdFx0MHhCQUE4ID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIE1PXHJcblx0XHQweEJBQzQgPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgTVdBXHJcblx0XHQweEJBRTAgPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgTVdBRVxyXG5cdFx0MHhCQUZDID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIE1PRVxyXG5cdFx0MHhCQjE4ID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIE1ZT1xyXG5cdFx0MHhCQjM0ID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIE1VXHJcblx0XHQweEJCNTAgPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgTVdFT1xyXG5cdFx0MHhCQjZDID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIE1XRVxyXG5cdFx0MHhCQjg4ID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIE1XSVxyXG5cdFx0MHhCQkE0ID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIE1ZVVxyXG5cdFx0MHhCQkMwID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIE1FVVxyXG5cdFx0MHhCQkRDID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIE1ZSVxyXG5cdFx0MHhCQkY4ID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIE1JXHJcblx0XHQweEJDMTQgPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgQkFcclxuXHRcdDB4QkMzMCA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBCQUVcclxuXHRcdDB4QkM0QyA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBCWUFcclxuXHRcdDB4QkM2OCA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBCWUFFXHJcblx0XHQweEJDODQgPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgQkVPXHJcblx0XHQweEJDQTAgPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgQkVcclxuXHRcdDB4QkNCQyA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBCWUVPXHJcblx0XHQweEJDRDggPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgQllFXHJcblx0XHQweEJDRjQgPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgQk9cclxuXHRcdDB4QkQxMCA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBCV0FcclxuXHRcdDB4QkQyQyA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBCV0FFXHJcblx0XHQweEJENDggPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgQk9FXHJcblx0XHQweEJENjQgPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgQllPXHJcblx0XHQweEJEODAgPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgQlVcclxuXHRcdDB4QkQ5QyA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBCV0VPXHJcblx0XHQweEJEQjggPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgQldFXHJcblx0XHQweEJERDQgPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgQldJXHJcblx0XHQweEJERjAgPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgQllVXHJcblx0XHQweEJFMEMgPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgQkVVXHJcblx0XHQweEJFMjggPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgQllJXHJcblx0XHQweEJFNDQgPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgQklcclxuXHRcdDB4QkU2MCA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBCQkFcclxuXHRcdDB4QkU3QyA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBCQkFFXHJcblx0XHQweEJFOTggPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgQkJZQVxyXG5cdFx0MHhCRUI0ID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIEJCWUFFXHJcblx0XHQweEJFRDAgPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgQkJFT1xyXG5cdFx0MHhCRUVDID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIEJCRVxyXG5cdFx0MHhCRjA4ID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIEJCWUVPXHJcblx0XHQweEJGMjQgPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgQkJZRVxyXG5cdFx0MHhCRjQwID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIEJCT1xyXG5cdFx0MHhCRjVDID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIEJCV0FcclxuXHRcdDB4QkY3OCA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBCQldBRVxyXG5cdFx0MHhCRjk0ID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIEJCT0VcclxuXHRcdDB4QkZCMCA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBCQllPXHJcblx0XHQweEJGQ0MgPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgQkJVXHJcblx0XHQweEJGRTggPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgQkJXRU9cclxuXHRcdDB4QzAwNCA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBCQldFXHJcblx0XHQweEMwMjAgPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgQkJXSVxyXG5cdFx0MHhDMDNDID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIEJCWVVcclxuXHRcdDB4QzA1OCA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBCQkVVXHJcblx0XHQweEMwNzQgPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgQkJZSVxyXG5cdFx0MHhDMDkwID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIEJCSVxyXG5cdFx0MHhDMEFDID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIFNBXHJcblx0XHQweEMwQzggPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgU0FFXHJcblx0XHQweEMwRTQgPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgU1lBXHJcblx0XHQweEMxMDAgPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgU1lBRVxyXG5cdFx0MHhDMTFDID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIFNFT1xyXG5cdFx0MHhDMTM4ID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIFNFXHJcblx0XHQweEMxNTQgPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgU1lFT1xyXG5cdFx0MHhDMTcwID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIFNZRVxyXG5cdFx0MHhDMThDID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIFNPXHJcblx0XHQweEMxQTggPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgU1dBXHJcblx0XHQweEMxQzQgPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgU1dBRVxyXG5cdFx0MHhDMUUwID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIFNPRVxyXG5cdFx0MHhDMUZDID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIFNZT1xyXG5cdFx0MHhDMjE4ID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIFNVXHJcblx0XHQweEMyMzQgPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgU1dFT1xyXG5cdFx0MHhDMjUwID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIFNXRVxyXG5cdFx0MHhDMjZDID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIFNXSVxyXG5cdFx0MHhDMjg4ID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIFNZVVxyXG5cdFx0MHhDMkE0ID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIFNFVVxyXG5cdFx0MHhDMkMwID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIFNZSVxyXG5cdFx0MHhDMkRDID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIFNJXHJcblx0XHQweEMyRjggPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgU1NBXHJcblx0XHQweEMzMTQgPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgU1NBRVxyXG5cdFx0MHhDMzMwID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIFNTWUFcclxuXHRcdDB4QzM0QyA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBTU1lBRVxyXG5cdFx0MHhDMzY4ID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIFNTRU9cclxuXHRcdDB4QzM4NCA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBTU0VcclxuXHRcdDB4QzNBMCA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBTU1lFT1xyXG5cdFx0MHhDM0JDID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIFNTWUVcclxuXHRcdDB4QzNEOCA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBTU09cclxuXHRcdDB4QzNGNCA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBTU1dBXHJcblx0XHQweEM0MTAgPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgU1NXQUVcclxuXHRcdDB4QzQyQyA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBTU09FXHJcblx0XHQweEM0NDggPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgU1NZT1xyXG5cdFx0MHhDNDY0ID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIFNTVVxyXG5cdFx0MHhDNDgwID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIFNTV0VPXHJcblx0XHQweEM0OUMgPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgU1NXRVxyXG5cdFx0MHhDNEI4ID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIFNTV0lcclxuXHRcdDB4QzRENCA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBTU1lVXHJcblx0XHQweEM0RjAgPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgU1NFVVxyXG5cdFx0MHhDNTBDID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIFNTWUlcclxuXHRcdDB4QzUyOCA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBTU0lcclxuXHRcdDB4QzU0NCA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBBXHJcblx0XHQweEM1NjAgPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgQUVcclxuXHRcdDB4QzU3QyA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBZQVxyXG5cdFx0MHhDNTk4ID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIFlBRVxyXG5cdFx0MHhDNUI0ID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIEVPXHJcblx0XHQweEM1RDAgPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgRVxyXG5cdFx0MHhDNUVDID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIFlFT1xyXG5cdFx0MHhDNjA4ID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIFlFXHJcblx0XHQweEM2MjQgPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgT1xyXG5cdFx0MHhDNjQwID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIFdBXHJcblx0XHQweEM2NUMgPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgV0FFXHJcblx0XHQweEM2NzggPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgT0VcclxuXHRcdDB4QzY5NCA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBZT1xyXG5cdFx0MHhDNkIwID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIFVcclxuXHRcdDB4QzZDQyA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBXRU9cclxuXHRcdDB4QzZFOCA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBXRVxyXG5cdFx0MHhDNzA0ID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIFdJXHJcblx0XHQweEM3MjAgPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgWVVcclxuXHRcdDB4QzczQyA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBFVVxyXG5cdFx0MHhDNzU4ID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIFlJXHJcblx0XHQweEM3NzQgPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgSVxyXG5cdFx0MHhDNzkwID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIEpBXHJcblx0XHQweEM3QUMgPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgSkFFXHJcblx0XHQweEM3QzggPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgSllBXHJcblx0XHQweEM3RTQgPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgSllBRVxyXG5cdFx0MHhDODAwID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIEpFT1xyXG5cdFx0MHhDODFDID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIEpFXHJcblx0XHQweEM4MzggPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgSllFT1xyXG5cdFx0MHhDODU0ID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIEpZRVxyXG5cdFx0MHhDODcwID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIEpPXHJcblx0XHQweEM4OEMgPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgSldBXHJcblx0XHQweEM4QTggPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgSldBRVxyXG5cdFx0MHhDOEM0ID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIEpPRVxyXG5cdFx0MHhDOEUwID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIEpZT1xyXG5cdFx0MHhDOEZDID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIEpVXHJcblx0XHQweEM5MTggPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgSldFT1xyXG5cdFx0MHhDOTM0ID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIEpXRVxyXG5cdFx0MHhDOTUwID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIEpXSVxyXG5cdFx0MHhDOTZDID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIEpZVVxyXG5cdFx0MHhDOTg4ID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIEpFVVxyXG5cdFx0MHhDOUE0ID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIEpZSVxyXG5cdFx0MHhDOUMwID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIEpJXHJcblx0XHQweEM5REMgPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgSkpBXHJcblx0XHQweEM5RjggPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgSkpBRVxyXG5cdFx0MHhDQTE0ID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIEpKWUFcclxuXHRcdDB4Q0EzMCA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBKSllBRVxyXG5cdFx0MHhDQTRDID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIEpKRU9cclxuXHRcdDB4Q0E2OCA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBKSkVcclxuXHRcdDB4Q0E4NCA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBKSllFT1xyXG5cdFx0MHhDQUEwID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIEpKWUVcclxuXHRcdDB4Q0FCQyA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBKSk9cclxuXHRcdDB4Q0FEOCA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBKSldBXHJcblx0XHQweENBRjQgPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgSkpXQUVcclxuXHRcdDB4Q0IxMCA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBKSk9FXHJcblx0XHQweENCMkMgPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgSkpZT1xyXG5cdFx0MHhDQjQ4ID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIEpKVVxyXG5cdFx0MHhDQjY0ID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIEpKV0VPXHJcblx0XHQweENCODAgPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgSkpXRVxyXG5cdFx0MHhDQjlDID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIEpKV0lcclxuXHRcdDB4Q0JCOCA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBKSllVXHJcblx0XHQweENCRDQgPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgSkpFVVxyXG5cdFx0MHhDQkYwID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIEpKWUlcclxuXHRcdDB4Q0MwQyA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBKSklcclxuXHRcdDB4Q0MyOCA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBDQVxyXG5cdFx0MHhDQzQ0ID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIENBRVxyXG5cdFx0MHhDQzYwID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIENZQVxyXG5cdFx0MHhDQzdDID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIENZQUVcclxuXHRcdDB4Q0M5OCA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBDRU9cclxuXHRcdDB4Q0NCNCA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBDRVxyXG5cdFx0MHhDQ0QwID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIENZRU9cclxuXHRcdDB4Q0NFQyA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBDWUVcclxuXHRcdDB4Q0QwOCA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBDT1xyXG5cdFx0MHhDRDI0ID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIENXQVxyXG5cdFx0MHhDRDQwID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIENXQUVcclxuXHRcdDB4Q0Q1QyA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBDT0VcclxuXHRcdDB4Q0Q3OCA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBDWU9cclxuXHRcdDB4Q0Q5NCA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBDVVxyXG5cdFx0MHhDREIwID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIENXRU9cclxuXHRcdDB4Q0RDQyA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBDV0VcclxuXHRcdDB4Q0RFOCA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBDV0lcclxuXHRcdDB4Q0UwNCA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBDWVVcclxuXHRcdDB4Q0UyMCA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBDRVVcclxuXHRcdDB4Q0UzQyA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBDWUlcclxuXHRcdDB4Q0U1OCA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBDSVxyXG5cdFx0MHhDRTc0ID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIEtBXHJcblx0XHQweENFOTAgPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgS0FFXHJcblx0XHQweENFQUMgPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgS1lBXHJcblx0XHQweENFQzggPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgS1lBRVxyXG5cdFx0MHhDRUU0ID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIEtFT1xyXG5cdFx0MHhDRjAwID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIEtFXHJcblx0XHQweENGMUMgPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgS1lFT1xyXG5cdFx0MHhDRjM4ID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIEtZRVxyXG5cdFx0MHhDRjU0ID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIEtPXHJcblx0XHQweENGNzAgPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgS1dBXHJcblx0XHQweENGOEMgPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgS1dBRVxyXG5cdFx0MHhDRkE4ID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIEtPRVxyXG5cdFx0MHhDRkM0ID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIEtZT1xyXG5cdFx0MHhDRkUwID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIEtVXHJcblx0XHQweENGRkMgPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgS1dFT1xyXG5cdFx0MHhEMDE4ID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIEtXRVxyXG5cdFx0MHhEMDM0ID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIEtXSVxyXG5cdFx0MHhEMDUwID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIEtZVVxyXG5cdFx0MHhEMDZDID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIEtFVVxyXG5cdFx0MHhEMDg4ID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIEtZSVxyXG5cdFx0MHhEMEE0ID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIEtJXHJcblx0XHQweEQwQzAgPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgVEFcclxuXHRcdDB4RDBEQyA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBUQUVcclxuXHRcdDB4RDBGOCA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBUWUFcclxuXHRcdDB4RDExNCA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBUWUFFXHJcblx0XHQweEQxMzAgPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgVEVPXHJcblx0XHQweEQxNEMgPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgVEVcclxuXHRcdDB4RDE2OCA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBUWUVPXHJcblx0XHQweEQxODQgPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgVFlFXHJcblx0XHQweEQxQTAgPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgVE9cclxuXHRcdDB4RDFCQyA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBUV0FcclxuXHRcdDB4RDFEOCA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBUV0FFXHJcblx0XHQweEQxRjQgPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgVE9FXHJcblx0XHQweEQyMTAgPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgVFlPXHJcblx0XHQweEQyMkMgPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgVFVcclxuXHRcdDB4RDI0OCA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBUV0VPXHJcblx0XHQweEQyNjQgPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgVFdFXHJcblx0XHQweEQyODAgPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgVFdJXHJcblx0XHQweEQyOUMgPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgVFlVXHJcblx0XHQweEQyQjggPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgVEVVXHJcblx0XHQweEQyRDQgPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgVFlJXHJcblx0XHQweEQyRjAgPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgVElcclxuXHRcdDB4RDMwQyA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBQQVxyXG5cdFx0MHhEMzI4ID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIFBBRVxyXG5cdFx0MHhEMzQ0ID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIFBZQVxyXG5cdFx0MHhEMzYwID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIFBZQUVcclxuXHRcdDB4RDM3QyA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBQRU9cclxuXHRcdDB4RDM5OCA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBQRVxyXG5cdFx0MHhEM0I0ID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIFBZRU9cclxuXHRcdDB4RDNEMCA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBQWUVcclxuXHRcdDB4RDNFQyA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBQT1xyXG5cdFx0MHhENDA4ID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIFBXQVxyXG5cdFx0MHhENDI0ID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIFBXQUVcclxuXHRcdDB4RDQ0MCA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBQT0VcclxuXHRcdDB4RDQ1QyA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBQWU9cclxuXHRcdDB4RDQ3OCA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBQVVxyXG5cdFx0MHhENDk0ID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIFBXRU9cclxuXHRcdDB4RDRCMCA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBQV0VcclxuXHRcdDB4RDRDQyA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBQV0lcclxuXHRcdDB4RDRFOCA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBQWVVcclxuXHRcdDB4RDUwNCA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBQRVVcclxuXHRcdDB4RDUyMCA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBQWUlcclxuXHRcdDB4RDUzQyA9PSBjb2RlIHx8IC8vIExvICAgICAgIEhBTkdVTCBTWUxMQUJMRSBQSVxyXG5cdFx0MHhENTU4ID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIEhBXHJcblx0XHQweEQ1NzQgPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgSEFFXHJcblx0XHQweEQ1OTAgPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgSFlBXHJcblx0XHQweEQ1QUMgPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgSFlBRVxyXG5cdFx0MHhENUM4ID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIEhFT1xyXG5cdFx0MHhENUU0ID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIEhFXHJcblx0XHQweEQ2MDAgPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgSFlFT1xyXG5cdFx0MHhENjFDID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIEhZRVxyXG5cdFx0MHhENjM4ID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIEhPXHJcblx0XHQweEQ2NTQgPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgSFdBXHJcblx0XHQweEQ2NzAgPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgSFdBRVxyXG5cdFx0MHhENjhDID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIEhPRVxyXG5cdFx0MHhENkE4ID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIEhZT1xyXG5cdFx0MHhENkM0ID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIEhVXHJcblx0XHQweEQ2RTAgPT0gY29kZSB8fCAvLyBMbyAgICAgICBIQU5HVUwgU1lMTEFCTEUgSFdFT1xyXG5cdFx0MHhENkZDID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIEhXRVxyXG5cdFx0MHhENzE4ID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIEhXSVxyXG5cdFx0MHhENzM0ID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIEhZVVxyXG5cdFx0MHhENzUwID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIEhFVVxyXG5cdFx0MHhENzZDID09IGNvZGUgfHwgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIEhZSVxyXG5cdFx0MHhENzg4ID09IGNvZGUgLy8gTG8gICAgICAgSEFOR1VMIFNZTExBQkxFIEhJXHJcblx0XHQpe1xyXG5cdFx0XHRyZXR1cm4gTFY7XHJcblx0XHR9XHJcblx0XHRcclxuXHRcdGlmKFxyXG5cdFx0KDB4QUMwMSA8PSBjb2RlICYmIGNvZGUgPD0gMHhBQzFCKSB8fCAvLyBMbyAgWzI3XSBIQU5HVUwgU1lMTEFCTEUgR0FHLi5IQU5HVUwgU1lMTEFCTEUgR0FIXHJcblx0XHQoMHhBQzFEIDw9IGNvZGUgJiYgY29kZSA8PSAweEFDMzcpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBHQUVHLi5IQU5HVUwgU1lMTEFCTEUgR0FFSFxyXG5cdFx0KDB4QUMzOSA8PSBjb2RlICYmIGNvZGUgPD0gMHhBQzUzKSB8fCAvLyBMbyAgWzI3XSBIQU5HVUwgU1lMTEFCTEUgR1lBRy4uSEFOR1VMIFNZTExBQkxFIEdZQUhcclxuXHRcdCgweEFDNTUgPD0gY29kZSAmJiBjb2RlIDw9IDB4QUM2RikgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIEdZQUVHLi5IQU5HVUwgU1lMTEFCTEUgR1lBRUhcclxuXHRcdCgweEFDNzEgPD0gY29kZSAmJiBjb2RlIDw9IDB4QUM4QikgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIEdFT0cuLkhBTkdVTCBTWUxMQUJMRSBHRU9IXHJcblx0XHQoMHhBQzhEIDw9IGNvZGUgJiYgY29kZSA8PSAweEFDQTcpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBHRUcuLkhBTkdVTCBTWUxMQUJMRSBHRUhcclxuXHRcdCgweEFDQTkgPD0gY29kZSAmJiBjb2RlIDw9IDB4QUNDMykgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIEdZRU9HLi5IQU5HVUwgU1lMTEFCTEUgR1lFT0hcclxuXHRcdCgweEFDQzUgPD0gY29kZSAmJiBjb2RlIDw9IDB4QUNERikgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIEdZRUcuLkhBTkdVTCBTWUxMQUJMRSBHWUVIXHJcblx0XHQoMHhBQ0UxIDw9IGNvZGUgJiYgY29kZSA8PSAweEFDRkIpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBHT0cuLkhBTkdVTCBTWUxMQUJMRSBHT0hcclxuXHRcdCgweEFDRkQgPD0gY29kZSAmJiBjb2RlIDw9IDB4QUQxNykgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIEdXQUcuLkhBTkdVTCBTWUxMQUJMRSBHV0FIXHJcblx0XHQoMHhBRDE5IDw9IGNvZGUgJiYgY29kZSA8PSAweEFEMzMpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBHV0FFRy4uSEFOR1VMIFNZTExBQkxFIEdXQUVIXHJcblx0XHQoMHhBRDM1IDw9IGNvZGUgJiYgY29kZSA8PSAweEFENEYpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBHT0VHLi5IQU5HVUwgU1lMTEFCTEUgR09FSFxyXG5cdFx0KDB4QUQ1MSA8PSBjb2RlICYmIGNvZGUgPD0gMHhBRDZCKSB8fCAvLyBMbyAgWzI3XSBIQU5HVUwgU1lMTEFCTEUgR1lPRy4uSEFOR1VMIFNZTExBQkxFIEdZT0hcclxuXHRcdCgweEFENkQgPD0gY29kZSAmJiBjb2RlIDw9IDB4QUQ4NykgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIEdVRy4uSEFOR1VMIFNZTExBQkxFIEdVSFxyXG5cdFx0KDB4QUQ4OSA8PSBjb2RlICYmIGNvZGUgPD0gMHhBREEzKSB8fCAvLyBMbyAgWzI3XSBIQU5HVUwgU1lMTEFCTEUgR1dFT0cuLkhBTkdVTCBTWUxMQUJMRSBHV0VPSFxyXG5cdFx0KDB4QURBNSA8PSBjb2RlICYmIGNvZGUgPD0gMHhBREJGKSB8fCAvLyBMbyAgWzI3XSBIQU5HVUwgU1lMTEFCTEUgR1dFRy4uSEFOR1VMIFNZTExBQkxFIEdXRUhcclxuXHRcdCgweEFEQzEgPD0gY29kZSAmJiBjb2RlIDw9IDB4QUREQikgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIEdXSUcuLkhBTkdVTCBTWUxMQUJMRSBHV0lIXHJcblx0XHQoMHhBREREIDw9IGNvZGUgJiYgY29kZSA8PSAweEFERjcpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBHWVVHLi5IQU5HVUwgU1lMTEFCTEUgR1lVSFxyXG5cdFx0KDB4QURGOSA8PSBjb2RlICYmIGNvZGUgPD0gMHhBRTEzKSB8fCAvLyBMbyAgWzI3XSBIQU5HVUwgU1lMTEFCTEUgR0VVRy4uSEFOR1VMIFNZTExBQkxFIEdFVUhcclxuXHRcdCgweEFFMTUgPD0gY29kZSAmJiBjb2RlIDw9IDB4QUUyRikgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIEdZSUcuLkhBTkdVTCBTWUxMQUJMRSBHWUlIXHJcblx0XHQoMHhBRTMxIDw9IGNvZGUgJiYgY29kZSA8PSAweEFFNEIpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBHSUcuLkhBTkdVTCBTWUxMQUJMRSBHSUhcclxuXHRcdCgweEFFNEQgPD0gY29kZSAmJiBjb2RlIDw9IDB4QUU2NykgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIEdHQUcuLkhBTkdVTCBTWUxMQUJMRSBHR0FIXHJcblx0XHQoMHhBRTY5IDw9IGNvZGUgJiYgY29kZSA8PSAweEFFODMpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBHR0FFRy4uSEFOR1VMIFNZTExBQkxFIEdHQUVIXHJcblx0XHQoMHhBRTg1IDw9IGNvZGUgJiYgY29kZSA8PSAweEFFOUYpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBHR1lBRy4uSEFOR1VMIFNZTExBQkxFIEdHWUFIXHJcblx0XHQoMHhBRUExIDw9IGNvZGUgJiYgY29kZSA8PSAweEFFQkIpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBHR1lBRUcuLkhBTkdVTCBTWUxMQUJMRSBHR1lBRUhcclxuXHRcdCgweEFFQkQgPD0gY29kZSAmJiBjb2RlIDw9IDB4QUVENykgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIEdHRU9HLi5IQU5HVUwgU1lMTEFCTEUgR0dFT0hcclxuXHRcdCgweEFFRDkgPD0gY29kZSAmJiBjb2RlIDw9IDB4QUVGMykgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIEdHRUcuLkhBTkdVTCBTWUxMQUJMRSBHR0VIXHJcblx0XHQoMHhBRUY1IDw9IGNvZGUgJiYgY29kZSA8PSAweEFGMEYpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBHR1lFT0cuLkhBTkdVTCBTWUxMQUJMRSBHR1lFT0hcclxuXHRcdCgweEFGMTEgPD0gY29kZSAmJiBjb2RlIDw9IDB4QUYyQikgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIEdHWUVHLi5IQU5HVUwgU1lMTEFCTEUgR0dZRUhcclxuXHRcdCgweEFGMkQgPD0gY29kZSAmJiBjb2RlIDw9IDB4QUY0NykgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIEdHT0cuLkhBTkdVTCBTWUxMQUJMRSBHR09IXHJcblx0XHQoMHhBRjQ5IDw9IGNvZGUgJiYgY29kZSA8PSAweEFGNjMpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBHR1dBRy4uSEFOR1VMIFNZTExBQkxFIEdHV0FIXHJcblx0XHQoMHhBRjY1IDw9IGNvZGUgJiYgY29kZSA8PSAweEFGN0YpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBHR1dBRUcuLkhBTkdVTCBTWUxMQUJMRSBHR1dBRUhcclxuXHRcdCgweEFGODEgPD0gY29kZSAmJiBjb2RlIDw9IDB4QUY5QikgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIEdHT0VHLi5IQU5HVUwgU1lMTEFCTEUgR0dPRUhcclxuXHRcdCgweEFGOUQgPD0gY29kZSAmJiBjb2RlIDw9IDB4QUZCNykgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIEdHWU9HLi5IQU5HVUwgU1lMTEFCTEUgR0dZT0hcclxuXHRcdCgweEFGQjkgPD0gY29kZSAmJiBjb2RlIDw9IDB4QUZEMykgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIEdHVUcuLkhBTkdVTCBTWUxMQUJMRSBHR1VIXHJcblx0XHQoMHhBRkQ1IDw9IGNvZGUgJiYgY29kZSA8PSAweEFGRUYpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBHR1dFT0cuLkhBTkdVTCBTWUxMQUJMRSBHR1dFT0hcclxuXHRcdCgweEFGRjEgPD0gY29kZSAmJiBjb2RlIDw9IDB4QjAwQikgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIEdHV0VHLi5IQU5HVUwgU1lMTEFCTEUgR0dXRUhcclxuXHRcdCgweEIwMEQgPD0gY29kZSAmJiBjb2RlIDw9IDB4QjAyNykgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIEdHV0lHLi5IQU5HVUwgU1lMTEFCTEUgR0dXSUhcclxuXHRcdCgweEIwMjkgPD0gY29kZSAmJiBjb2RlIDw9IDB4QjA0MykgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIEdHWVVHLi5IQU5HVUwgU1lMTEFCTEUgR0dZVUhcclxuXHRcdCgweEIwNDUgPD0gY29kZSAmJiBjb2RlIDw9IDB4QjA1RikgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIEdHRVVHLi5IQU5HVUwgU1lMTEFCTEUgR0dFVUhcclxuXHRcdCgweEIwNjEgPD0gY29kZSAmJiBjb2RlIDw9IDB4QjA3QikgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIEdHWUlHLi5IQU5HVUwgU1lMTEFCTEUgR0dZSUhcclxuXHRcdCgweEIwN0QgPD0gY29kZSAmJiBjb2RlIDw9IDB4QjA5NykgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIEdHSUcuLkhBTkdVTCBTWUxMQUJMRSBHR0lIXHJcblx0XHQoMHhCMDk5IDw9IGNvZGUgJiYgY29kZSA8PSAweEIwQjMpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBOQUcuLkhBTkdVTCBTWUxMQUJMRSBOQUhcclxuXHRcdCgweEIwQjUgPD0gY29kZSAmJiBjb2RlIDw9IDB4QjBDRikgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIE5BRUcuLkhBTkdVTCBTWUxMQUJMRSBOQUVIXHJcblx0XHQoMHhCMEQxIDw9IGNvZGUgJiYgY29kZSA8PSAweEIwRUIpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBOWUFHLi5IQU5HVUwgU1lMTEFCTEUgTllBSFxyXG5cdFx0KDB4QjBFRCA8PSBjb2RlICYmIGNvZGUgPD0gMHhCMTA3KSB8fCAvLyBMbyAgWzI3XSBIQU5HVUwgU1lMTEFCTEUgTllBRUcuLkhBTkdVTCBTWUxMQUJMRSBOWUFFSFxyXG5cdFx0KDB4QjEwOSA8PSBjb2RlICYmIGNvZGUgPD0gMHhCMTIzKSB8fCAvLyBMbyAgWzI3XSBIQU5HVUwgU1lMTEFCTEUgTkVPRy4uSEFOR1VMIFNZTExBQkxFIE5FT0hcclxuXHRcdCgweEIxMjUgPD0gY29kZSAmJiBjb2RlIDw9IDB4QjEzRikgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIE5FRy4uSEFOR1VMIFNZTExBQkxFIE5FSFxyXG5cdFx0KDB4QjE0MSA8PSBjb2RlICYmIGNvZGUgPD0gMHhCMTVCKSB8fCAvLyBMbyAgWzI3XSBIQU5HVUwgU1lMTEFCTEUgTllFT0cuLkhBTkdVTCBTWUxMQUJMRSBOWUVPSFxyXG5cdFx0KDB4QjE1RCA8PSBjb2RlICYmIGNvZGUgPD0gMHhCMTc3KSB8fCAvLyBMbyAgWzI3XSBIQU5HVUwgU1lMTEFCTEUgTllFRy4uSEFOR1VMIFNZTExBQkxFIE5ZRUhcclxuXHRcdCgweEIxNzkgPD0gY29kZSAmJiBjb2RlIDw9IDB4QjE5MykgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIE5PRy4uSEFOR1VMIFNZTExBQkxFIE5PSFxyXG5cdFx0KDB4QjE5NSA8PSBjb2RlICYmIGNvZGUgPD0gMHhCMUFGKSB8fCAvLyBMbyAgWzI3XSBIQU5HVUwgU1lMTEFCTEUgTldBRy4uSEFOR1VMIFNZTExBQkxFIE5XQUhcclxuXHRcdCgweEIxQjEgPD0gY29kZSAmJiBjb2RlIDw9IDB4QjFDQikgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIE5XQUVHLi5IQU5HVUwgU1lMTEFCTEUgTldBRUhcclxuXHRcdCgweEIxQ0QgPD0gY29kZSAmJiBjb2RlIDw9IDB4QjFFNykgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIE5PRUcuLkhBTkdVTCBTWUxMQUJMRSBOT0VIXHJcblx0XHQoMHhCMUU5IDw9IGNvZGUgJiYgY29kZSA8PSAweEIyMDMpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBOWU9HLi5IQU5HVUwgU1lMTEFCTEUgTllPSFxyXG5cdFx0KDB4QjIwNSA8PSBjb2RlICYmIGNvZGUgPD0gMHhCMjFGKSB8fCAvLyBMbyAgWzI3XSBIQU5HVUwgU1lMTEFCTEUgTlVHLi5IQU5HVUwgU1lMTEFCTEUgTlVIXHJcblx0XHQoMHhCMjIxIDw9IGNvZGUgJiYgY29kZSA8PSAweEIyM0IpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBOV0VPRy4uSEFOR1VMIFNZTExBQkxFIE5XRU9IXHJcblx0XHQoMHhCMjNEIDw9IGNvZGUgJiYgY29kZSA8PSAweEIyNTcpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBOV0VHLi5IQU5HVUwgU1lMTEFCTEUgTldFSFxyXG5cdFx0KDB4QjI1OSA8PSBjb2RlICYmIGNvZGUgPD0gMHhCMjczKSB8fCAvLyBMbyAgWzI3XSBIQU5HVUwgU1lMTEFCTEUgTldJRy4uSEFOR1VMIFNZTExBQkxFIE5XSUhcclxuXHRcdCgweEIyNzUgPD0gY29kZSAmJiBjb2RlIDw9IDB4QjI4RikgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIE5ZVUcuLkhBTkdVTCBTWUxMQUJMRSBOWVVIXHJcblx0XHQoMHhCMjkxIDw9IGNvZGUgJiYgY29kZSA8PSAweEIyQUIpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBORVVHLi5IQU5HVUwgU1lMTEFCTEUgTkVVSFxyXG5cdFx0KDB4QjJBRCA8PSBjb2RlICYmIGNvZGUgPD0gMHhCMkM3KSB8fCAvLyBMbyAgWzI3XSBIQU5HVUwgU1lMTEFCTEUgTllJRy4uSEFOR1VMIFNZTExBQkxFIE5ZSUhcclxuXHRcdCgweEIyQzkgPD0gY29kZSAmJiBjb2RlIDw9IDB4QjJFMykgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIE5JRy4uSEFOR1VMIFNZTExBQkxFIE5JSFxyXG5cdFx0KDB4QjJFNSA8PSBjb2RlICYmIGNvZGUgPD0gMHhCMkZGKSB8fCAvLyBMbyAgWzI3XSBIQU5HVUwgU1lMTEFCTEUgREFHLi5IQU5HVUwgU1lMTEFCTEUgREFIXHJcblx0XHQoMHhCMzAxIDw9IGNvZGUgJiYgY29kZSA8PSAweEIzMUIpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBEQUVHLi5IQU5HVUwgU1lMTEFCTEUgREFFSFxyXG5cdFx0KDB4QjMxRCA8PSBjb2RlICYmIGNvZGUgPD0gMHhCMzM3KSB8fCAvLyBMbyAgWzI3XSBIQU5HVUwgU1lMTEFCTEUgRFlBRy4uSEFOR1VMIFNZTExBQkxFIERZQUhcclxuXHRcdCgweEIzMzkgPD0gY29kZSAmJiBjb2RlIDw9IDB4QjM1MykgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIERZQUVHLi5IQU5HVUwgU1lMTEFCTEUgRFlBRUhcclxuXHRcdCgweEIzNTUgPD0gY29kZSAmJiBjb2RlIDw9IDB4QjM2RikgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIERFT0cuLkhBTkdVTCBTWUxMQUJMRSBERU9IXHJcblx0XHQoMHhCMzcxIDw9IGNvZGUgJiYgY29kZSA8PSAweEIzOEIpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBERUcuLkhBTkdVTCBTWUxMQUJMRSBERUhcclxuXHRcdCgweEIzOEQgPD0gY29kZSAmJiBjb2RlIDw9IDB4QjNBNykgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIERZRU9HLi5IQU5HVUwgU1lMTEFCTEUgRFlFT0hcclxuXHRcdCgweEIzQTkgPD0gY29kZSAmJiBjb2RlIDw9IDB4QjNDMykgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIERZRUcuLkhBTkdVTCBTWUxMQUJMRSBEWUVIXHJcblx0XHQoMHhCM0M1IDw9IGNvZGUgJiYgY29kZSA8PSAweEIzREYpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBET0cuLkhBTkdVTCBTWUxMQUJMRSBET0hcclxuXHRcdCgweEIzRTEgPD0gY29kZSAmJiBjb2RlIDw9IDB4QjNGQikgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIERXQUcuLkhBTkdVTCBTWUxMQUJMRSBEV0FIXHJcblx0XHQoMHhCM0ZEIDw9IGNvZGUgJiYgY29kZSA8PSAweEI0MTcpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBEV0FFRy4uSEFOR1VMIFNZTExBQkxFIERXQUVIXHJcblx0XHQoMHhCNDE5IDw9IGNvZGUgJiYgY29kZSA8PSAweEI0MzMpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBET0VHLi5IQU5HVUwgU1lMTEFCTEUgRE9FSFxyXG5cdFx0KDB4QjQzNSA8PSBjb2RlICYmIGNvZGUgPD0gMHhCNDRGKSB8fCAvLyBMbyAgWzI3XSBIQU5HVUwgU1lMTEFCTEUgRFlPRy4uSEFOR1VMIFNZTExBQkxFIERZT0hcclxuXHRcdCgweEI0NTEgPD0gY29kZSAmJiBjb2RlIDw9IDB4QjQ2QikgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIERVRy4uSEFOR1VMIFNZTExBQkxFIERVSFxyXG5cdFx0KDB4QjQ2RCA8PSBjb2RlICYmIGNvZGUgPD0gMHhCNDg3KSB8fCAvLyBMbyAgWzI3XSBIQU5HVUwgU1lMTEFCTEUgRFdFT0cuLkhBTkdVTCBTWUxMQUJMRSBEV0VPSFxyXG5cdFx0KDB4QjQ4OSA8PSBjb2RlICYmIGNvZGUgPD0gMHhCNEEzKSB8fCAvLyBMbyAgWzI3XSBIQU5HVUwgU1lMTEFCTEUgRFdFRy4uSEFOR1VMIFNZTExBQkxFIERXRUhcclxuXHRcdCgweEI0QTUgPD0gY29kZSAmJiBjb2RlIDw9IDB4QjRCRikgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIERXSUcuLkhBTkdVTCBTWUxMQUJMRSBEV0lIXHJcblx0XHQoMHhCNEMxIDw9IGNvZGUgJiYgY29kZSA8PSAweEI0REIpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBEWVVHLi5IQU5HVUwgU1lMTEFCTEUgRFlVSFxyXG5cdFx0KDB4QjRERCA8PSBjb2RlICYmIGNvZGUgPD0gMHhCNEY3KSB8fCAvLyBMbyAgWzI3XSBIQU5HVUwgU1lMTEFCTEUgREVVRy4uSEFOR1VMIFNZTExBQkxFIERFVUhcclxuXHRcdCgweEI0RjkgPD0gY29kZSAmJiBjb2RlIDw9IDB4QjUxMykgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIERZSUcuLkhBTkdVTCBTWUxMQUJMRSBEWUlIXHJcblx0XHQoMHhCNTE1IDw9IGNvZGUgJiYgY29kZSA8PSAweEI1MkYpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBESUcuLkhBTkdVTCBTWUxMQUJMRSBESUhcclxuXHRcdCgweEI1MzEgPD0gY29kZSAmJiBjb2RlIDw9IDB4QjU0QikgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIEREQUcuLkhBTkdVTCBTWUxMQUJMRSBEREFIXHJcblx0XHQoMHhCNTREIDw9IGNvZGUgJiYgY29kZSA8PSAweEI1NjcpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBEREFFRy4uSEFOR1VMIFNZTExBQkxFIEREQUVIXHJcblx0XHQoMHhCNTY5IDw9IGNvZGUgJiYgY29kZSA8PSAweEI1ODMpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBERFlBRy4uSEFOR1VMIFNZTExBQkxFIEREWUFIXHJcblx0XHQoMHhCNTg1IDw9IGNvZGUgJiYgY29kZSA8PSAweEI1OUYpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBERFlBRUcuLkhBTkdVTCBTWUxMQUJMRSBERFlBRUhcclxuXHRcdCgweEI1QTEgPD0gY29kZSAmJiBjb2RlIDw9IDB4QjVCQikgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIERERU9HLi5IQU5HVUwgU1lMTEFCTEUgRERFT0hcclxuXHRcdCgweEI1QkQgPD0gY29kZSAmJiBjb2RlIDw9IDB4QjVENykgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIERERUcuLkhBTkdVTCBTWUxMQUJMRSBEREVIXHJcblx0XHQoMHhCNUQ5IDw9IGNvZGUgJiYgY29kZSA8PSAweEI1RjMpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBERFlFT0cuLkhBTkdVTCBTWUxMQUJMRSBERFlFT0hcclxuXHRcdCgweEI1RjUgPD0gY29kZSAmJiBjb2RlIDw9IDB4QjYwRikgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIEREWUVHLi5IQU5HVUwgU1lMTEFCTEUgRERZRUhcclxuXHRcdCgweEI2MTEgPD0gY29kZSAmJiBjb2RlIDw9IDB4QjYyQikgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIERET0cuLkhBTkdVTCBTWUxMQUJMRSBERE9IXHJcblx0XHQoMHhCNjJEIDw9IGNvZGUgJiYgY29kZSA8PSAweEI2NDcpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBERFdBRy4uSEFOR1VMIFNZTExBQkxFIEREV0FIXHJcblx0XHQoMHhCNjQ5IDw9IGNvZGUgJiYgY29kZSA8PSAweEI2NjMpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBERFdBRUcuLkhBTkdVTCBTWUxMQUJMRSBERFdBRUhcclxuXHRcdCgweEI2NjUgPD0gY29kZSAmJiBjb2RlIDw9IDB4QjY3RikgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIERET0VHLi5IQU5HVUwgU1lMTEFCTEUgRERPRUhcclxuXHRcdCgweEI2ODEgPD0gY29kZSAmJiBjb2RlIDw9IDB4QjY5QikgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIEREWU9HLi5IQU5HVUwgU1lMTEFCTEUgRERZT0hcclxuXHRcdCgweEI2OUQgPD0gY29kZSAmJiBjb2RlIDw9IDB4QjZCNykgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIEREVUcuLkhBTkdVTCBTWUxMQUJMRSBERFVIXHJcblx0XHQoMHhCNkI5IDw9IGNvZGUgJiYgY29kZSA8PSAweEI2RDMpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBERFdFT0cuLkhBTkdVTCBTWUxMQUJMRSBERFdFT0hcclxuXHRcdCgweEI2RDUgPD0gY29kZSAmJiBjb2RlIDw9IDB4QjZFRikgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIEREV0VHLi5IQU5HVUwgU1lMTEFCTEUgRERXRUhcclxuXHRcdCgweEI2RjEgPD0gY29kZSAmJiBjb2RlIDw9IDB4QjcwQikgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIEREV0lHLi5IQU5HVUwgU1lMTEFCTEUgRERXSUhcclxuXHRcdCgweEI3MEQgPD0gY29kZSAmJiBjb2RlIDw9IDB4QjcyNykgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIEREWVVHLi5IQU5HVUwgU1lMTEFCTEUgRERZVUhcclxuXHRcdCgweEI3MjkgPD0gY29kZSAmJiBjb2RlIDw9IDB4Qjc0MykgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIERERVVHLi5IQU5HVUwgU1lMTEFCTEUgRERFVUhcclxuXHRcdCgweEI3NDUgPD0gY29kZSAmJiBjb2RlIDw9IDB4Qjc1RikgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIEREWUlHLi5IQU5HVUwgU1lMTEFCTEUgRERZSUhcclxuXHRcdCgweEI3NjEgPD0gY29kZSAmJiBjb2RlIDw9IDB4Qjc3QikgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIERESUcuLkhBTkdVTCBTWUxMQUJMRSBERElIXHJcblx0XHQoMHhCNzdEIDw9IGNvZGUgJiYgY29kZSA8PSAweEI3OTcpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBSQUcuLkhBTkdVTCBTWUxMQUJMRSBSQUhcclxuXHRcdCgweEI3OTkgPD0gY29kZSAmJiBjb2RlIDw9IDB4QjdCMykgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIFJBRUcuLkhBTkdVTCBTWUxMQUJMRSBSQUVIXHJcblx0XHQoMHhCN0I1IDw9IGNvZGUgJiYgY29kZSA8PSAweEI3Q0YpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBSWUFHLi5IQU5HVUwgU1lMTEFCTEUgUllBSFxyXG5cdFx0KDB4QjdEMSA8PSBjb2RlICYmIGNvZGUgPD0gMHhCN0VCKSB8fCAvLyBMbyAgWzI3XSBIQU5HVUwgU1lMTEFCTEUgUllBRUcuLkhBTkdVTCBTWUxMQUJMRSBSWUFFSFxyXG5cdFx0KDB4QjdFRCA8PSBjb2RlICYmIGNvZGUgPD0gMHhCODA3KSB8fCAvLyBMbyAgWzI3XSBIQU5HVUwgU1lMTEFCTEUgUkVPRy4uSEFOR1VMIFNZTExBQkxFIFJFT0hcclxuXHRcdCgweEI4MDkgPD0gY29kZSAmJiBjb2RlIDw9IDB4QjgyMykgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIFJFRy4uSEFOR1VMIFNZTExBQkxFIFJFSFxyXG5cdFx0KDB4QjgyNSA8PSBjb2RlICYmIGNvZGUgPD0gMHhCODNGKSB8fCAvLyBMbyAgWzI3XSBIQU5HVUwgU1lMTEFCTEUgUllFT0cuLkhBTkdVTCBTWUxMQUJMRSBSWUVPSFxyXG5cdFx0KDB4Qjg0MSA8PSBjb2RlICYmIGNvZGUgPD0gMHhCODVCKSB8fCAvLyBMbyAgWzI3XSBIQU5HVUwgU1lMTEFCTEUgUllFRy4uSEFOR1VMIFNZTExBQkxFIFJZRUhcclxuXHRcdCgweEI4NUQgPD0gY29kZSAmJiBjb2RlIDw9IDB4Qjg3NykgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIFJPRy4uSEFOR1VMIFNZTExBQkxFIFJPSFxyXG5cdFx0KDB4Qjg3OSA8PSBjb2RlICYmIGNvZGUgPD0gMHhCODkzKSB8fCAvLyBMbyAgWzI3XSBIQU5HVUwgU1lMTEFCTEUgUldBRy4uSEFOR1VMIFNZTExBQkxFIFJXQUhcclxuXHRcdCgweEI4OTUgPD0gY29kZSAmJiBjb2RlIDw9IDB4QjhBRikgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIFJXQUVHLi5IQU5HVUwgU1lMTEFCTEUgUldBRUhcclxuXHRcdCgweEI4QjEgPD0gY29kZSAmJiBjb2RlIDw9IDB4QjhDQikgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIFJPRUcuLkhBTkdVTCBTWUxMQUJMRSBST0VIXHJcblx0XHQoMHhCOENEIDw9IGNvZGUgJiYgY29kZSA8PSAweEI4RTcpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBSWU9HLi5IQU5HVUwgU1lMTEFCTEUgUllPSFxyXG5cdFx0KDB4QjhFOSA8PSBjb2RlICYmIGNvZGUgPD0gMHhCOTAzKSB8fCAvLyBMbyAgWzI3XSBIQU5HVUwgU1lMTEFCTEUgUlVHLi5IQU5HVUwgU1lMTEFCTEUgUlVIXHJcblx0XHQoMHhCOTA1IDw9IGNvZGUgJiYgY29kZSA8PSAweEI5MUYpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBSV0VPRy4uSEFOR1VMIFNZTExBQkxFIFJXRU9IXHJcblx0XHQoMHhCOTIxIDw9IGNvZGUgJiYgY29kZSA8PSAweEI5M0IpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBSV0VHLi5IQU5HVUwgU1lMTEFCTEUgUldFSFxyXG5cdFx0KDB4QjkzRCA8PSBjb2RlICYmIGNvZGUgPD0gMHhCOTU3KSB8fCAvLyBMbyAgWzI3XSBIQU5HVUwgU1lMTEFCTEUgUldJRy4uSEFOR1VMIFNZTExBQkxFIFJXSUhcclxuXHRcdCgweEI5NTkgPD0gY29kZSAmJiBjb2RlIDw9IDB4Qjk3MykgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIFJZVUcuLkhBTkdVTCBTWUxMQUJMRSBSWVVIXHJcblx0XHQoMHhCOTc1IDw9IGNvZGUgJiYgY29kZSA8PSAweEI5OEYpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBSRVVHLi5IQU5HVUwgU1lMTEFCTEUgUkVVSFxyXG5cdFx0KDB4Qjk5MSA8PSBjb2RlICYmIGNvZGUgPD0gMHhCOUFCKSB8fCAvLyBMbyAgWzI3XSBIQU5HVUwgU1lMTEFCTEUgUllJRy4uSEFOR1VMIFNZTExBQkxFIFJZSUhcclxuXHRcdCgweEI5QUQgPD0gY29kZSAmJiBjb2RlIDw9IDB4QjlDNykgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIFJJRy4uSEFOR1VMIFNZTExBQkxFIFJJSFxyXG5cdFx0KDB4QjlDOSA8PSBjb2RlICYmIGNvZGUgPD0gMHhCOUUzKSB8fCAvLyBMbyAgWzI3XSBIQU5HVUwgU1lMTEFCTEUgTUFHLi5IQU5HVUwgU1lMTEFCTEUgTUFIXHJcblx0XHQoMHhCOUU1IDw9IGNvZGUgJiYgY29kZSA8PSAweEI5RkYpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBNQUVHLi5IQU5HVUwgU1lMTEFCTEUgTUFFSFxyXG5cdFx0KDB4QkEwMSA8PSBjb2RlICYmIGNvZGUgPD0gMHhCQTFCKSB8fCAvLyBMbyAgWzI3XSBIQU5HVUwgU1lMTEFCTEUgTVlBRy4uSEFOR1VMIFNZTExBQkxFIE1ZQUhcclxuXHRcdCgweEJBMUQgPD0gY29kZSAmJiBjb2RlIDw9IDB4QkEzNykgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIE1ZQUVHLi5IQU5HVUwgU1lMTEFCTEUgTVlBRUhcclxuXHRcdCgweEJBMzkgPD0gY29kZSAmJiBjb2RlIDw9IDB4QkE1MykgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIE1FT0cuLkhBTkdVTCBTWUxMQUJMRSBNRU9IXHJcblx0XHQoMHhCQTU1IDw9IGNvZGUgJiYgY29kZSA8PSAweEJBNkYpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBNRUcuLkhBTkdVTCBTWUxMQUJMRSBNRUhcclxuXHRcdCgweEJBNzEgPD0gY29kZSAmJiBjb2RlIDw9IDB4QkE4QikgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIE1ZRU9HLi5IQU5HVUwgU1lMTEFCTEUgTVlFT0hcclxuXHRcdCgweEJBOEQgPD0gY29kZSAmJiBjb2RlIDw9IDB4QkFBNykgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIE1ZRUcuLkhBTkdVTCBTWUxMQUJMRSBNWUVIXHJcblx0XHQoMHhCQUE5IDw9IGNvZGUgJiYgY29kZSA8PSAweEJBQzMpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBNT0cuLkhBTkdVTCBTWUxMQUJMRSBNT0hcclxuXHRcdCgweEJBQzUgPD0gY29kZSAmJiBjb2RlIDw9IDB4QkFERikgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIE1XQUcuLkhBTkdVTCBTWUxMQUJMRSBNV0FIXHJcblx0XHQoMHhCQUUxIDw9IGNvZGUgJiYgY29kZSA8PSAweEJBRkIpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBNV0FFRy4uSEFOR1VMIFNZTExBQkxFIE1XQUVIXHJcblx0XHQoMHhCQUZEIDw9IGNvZGUgJiYgY29kZSA8PSAweEJCMTcpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBNT0VHLi5IQU5HVUwgU1lMTEFCTEUgTU9FSFxyXG5cdFx0KDB4QkIxOSA8PSBjb2RlICYmIGNvZGUgPD0gMHhCQjMzKSB8fCAvLyBMbyAgWzI3XSBIQU5HVUwgU1lMTEFCTEUgTVlPRy4uSEFOR1VMIFNZTExBQkxFIE1ZT0hcclxuXHRcdCgweEJCMzUgPD0gY29kZSAmJiBjb2RlIDw9IDB4QkI0RikgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIE1VRy4uSEFOR1VMIFNZTExBQkxFIE1VSFxyXG5cdFx0KDB4QkI1MSA8PSBjb2RlICYmIGNvZGUgPD0gMHhCQjZCKSB8fCAvLyBMbyAgWzI3XSBIQU5HVUwgU1lMTEFCTEUgTVdFT0cuLkhBTkdVTCBTWUxMQUJMRSBNV0VPSFxyXG5cdFx0KDB4QkI2RCA8PSBjb2RlICYmIGNvZGUgPD0gMHhCQjg3KSB8fCAvLyBMbyAgWzI3XSBIQU5HVUwgU1lMTEFCTEUgTVdFRy4uSEFOR1VMIFNZTExBQkxFIE1XRUhcclxuXHRcdCgweEJCODkgPD0gY29kZSAmJiBjb2RlIDw9IDB4QkJBMykgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIE1XSUcuLkhBTkdVTCBTWUxMQUJMRSBNV0lIXHJcblx0XHQoMHhCQkE1IDw9IGNvZGUgJiYgY29kZSA8PSAweEJCQkYpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBNWVVHLi5IQU5HVUwgU1lMTEFCTEUgTVlVSFxyXG5cdFx0KDB4QkJDMSA8PSBjb2RlICYmIGNvZGUgPD0gMHhCQkRCKSB8fCAvLyBMbyAgWzI3XSBIQU5HVUwgU1lMTEFCTEUgTUVVRy4uSEFOR1VMIFNZTExBQkxFIE1FVUhcclxuXHRcdCgweEJCREQgPD0gY29kZSAmJiBjb2RlIDw9IDB4QkJGNykgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIE1ZSUcuLkhBTkdVTCBTWUxMQUJMRSBNWUlIXHJcblx0XHQoMHhCQkY5IDw9IGNvZGUgJiYgY29kZSA8PSAweEJDMTMpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBNSUcuLkhBTkdVTCBTWUxMQUJMRSBNSUhcclxuXHRcdCgweEJDMTUgPD0gY29kZSAmJiBjb2RlIDw9IDB4QkMyRikgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIEJBRy4uSEFOR1VMIFNZTExBQkxFIEJBSFxyXG5cdFx0KDB4QkMzMSA8PSBjb2RlICYmIGNvZGUgPD0gMHhCQzRCKSB8fCAvLyBMbyAgWzI3XSBIQU5HVUwgU1lMTEFCTEUgQkFFRy4uSEFOR1VMIFNZTExBQkxFIEJBRUhcclxuXHRcdCgweEJDNEQgPD0gY29kZSAmJiBjb2RlIDw9IDB4QkM2NykgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIEJZQUcuLkhBTkdVTCBTWUxMQUJMRSBCWUFIXHJcblx0XHQoMHhCQzY5IDw9IGNvZGUgJiYgY29kZSA8PSAweEJDODMpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBCWUFFRy4uSEFOR1VMIFNZTExBQkxFIEJZQUVIXHJcblx0XHQoMHhCQzg1IDw9IGNvZGUgJiYgY29kZSA8PSAweEJDOUYpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBCRU9HLi5IQU5HVUwgU1lMTEFCTEUgQkVPSFxyXG5cdFx0KDB4QkNBMSA8PSBjb2RlICYmIGNvZGUgPD0gMHhCQ0JCKSB8fCAvLyBMbyAgWzI3XSBIQU5HVUwgU1lMTEFCTEUgQkVHLi5IQU5HVUwgU1lMTEFCTEUgQkVIXHJcblx0XHQoMHhCQ0JEIDw9IGNvZGUgJiYgY29kZSA8PSAweEJDRDcpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBCWUVPRy4uSEFOR1VMIFNZTExBQkxFIEJZRU9IXHJcblx0XHQoMHhCQ0Q5IDw9IGNvZGUgJiYgY29kZSA8PSAweEJDRjMpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBCWUVHLi5IQU5HVUwgU1lMTEFCTEUgQllFSFxyXG5cdFx0KDB4QkNGNSA8PSBjb2RlICYmIGNvZGUgPD0gMHhCRDBGKSB8fCAvLyBMbyAgWzI3XSBIQU5HVUwgU1lMTEFCTEUgQk9HLi5IQU5HVUwgU1lMTEFCTEUgQk9IXHJcblx0XHQoMHhCRDExIDw9IGNvZGUgJiYgY29kZSA8PSAweEJEMkIpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBCV0FHLi5IQU5HVUwgU1lMTEFCTEUgQldBSFxyXG5cdFx0KDB4QkQyRCA8PSBjb2RlICYmIGNvZGUgPD0gMHhCRDQ3KSB8fCAvLyBMbyAgWzI3XSBIQU5HVUwgU1lMTEFCTEUgQldBRUcuLkhBTkdVTCBTWUxMQUJMRSBCV0FFSFxyXG5cdFx0KDB4QkQ0OSA8PSBjb2RlICYmIGNvZGUgPD0gMHhCRDYzKSB8fCAvLyBMbyAgWzI3XSBIQU5HVUwgU1lMTEFCTEUgQk9FRy4uSEFOR1VMIFNZTExBQkxFIEJPRUhcclxuXHRcdCgweEJENjUgPD0gY29kZSAmJiBjb2RlIDw9IDB4QkQ3RikgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIEJZT0cuLkhBTkdVTCBTWUxMQUJMRSBCWU9IXHJcblx0XHQoMHhCRDgxIDw9IGNvZGUgJiYgY29kZSA8PSAweEJEOUIpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBCVUcuLkhBTkdVTCBTWUxMQUJMRSBCVUhcclxuXHRcdCgweEJEOUQgPD0gY29kZSAmJiBjb2RlIDw9IDB4QkRCNykgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIEJXRU9HLi5IQU5HVUwgU1lMTEFCTEUgQldFT0hcclxuXHRcdCgweEJEQjkgPD0gY29kZSAmJiBjb2RlIDw9IDB4QkREMykgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIEJXRUcuLkhBTkdVTCBTWUxMQUJMRSBCV0VIXHJcblx0XHQoMHhCREQ1IDw9IGNvZGUgJiYgY29kZSA8PSAweEJERUYpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBCV0lHLi5IQU5HVUwgU1lMTEFCTEUgQldJSFxyXG5cdFx0KDB4QkRGMSA8PSBjb2RlICYmIGNvZGUgPD0gMHhCRTBCKSB8fCAvLyBMbyAgWzI3XSBIQU5HVUwgU1lMTEFCTEUgQllVRy4uSEFOR1VMIFNZTExBQkxFIEJZVUhcclxuXHRcdCgweEJFMEQgPD0gY29kZSAmJiBjb2RlIDw9IDB4QkUyNykgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIEJFVUcuLkhBTkdVTCBTWUxMQUJMRSBCRVVIXHJcblx0XHQoMHhCRTI5IDw9IGNvZGUgJiYgY29kZSA8PSAweEJFNDMpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBCWUlHLi5IQU5HVUwgU1lMTEFCTEUgQllJSFxyXG5cdFx0KDB4QkU0NSA8PSBjb2RlICYmIGNvZGUgPD0gMHhCRTVGKSB8fCAvLyBMbyAgWzI3XSBIQU5HVUwgU1lMTEFCTEUgQklHLi5IQU5HVUwgU1lMTEFCTEUgQklIXHJcblx0XHQoMHhCRTYxIDw9IGNvZGUgJiYgY29kZSA8PSAweEJFN0IpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBCQkFHLi5IQU5HVUwgU1lMTEFCTEUgQkJBSFxyXG5cdFx0KDB4QkU3RCA8PSBjb2RlICYmIGNvZGUgPD0gMHhCRTk3KSB8fCAvLyBMbyAgWzI3XSBIQU5HVUwgU1lMTEFCTEUgQkJBRUcuLkhBTkdVTCBTWUxMQUJMRSBCQkFFSFxyXG5cdFx0KDB4QkU5OSA8PSBjb2RlICYmIGNvZGUgPD0gMHhCRUIzKSB8fCAvLyBMbyAgWzI3XSBIQU5HVUwgU1lMTEFCTEUgQkJZQUcuLkhBTkdVTCBTWUxMQUJMRSBCQllBSFxyXG5cdFx0KDB4QkVCNSA8PSBjb2RlICYmIGNvZGUgPD0gMHhCRUNGKSB8fCAvLyBMbyAgWzI3XSBIQU5HVUwgU1lMTEFCTEUgQkJZQUVHLi5IQU5HVUwgU1lMTEFCTEUgQkJZQUVIXHJcblx0XHQoMHhCRUQxIDw9IGNvZGUgJiYgY29kZSA8PSAweEJFRUIpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBCQkVPRy4uSEFOR1VMIFNZTExBQkxFIEJCRU9IXHJcblx0XHQoMHhCRUVEIDw9IGNvZGUgJiYgY29kZSA8PSAweEJGMDcpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBCQkVHLi5IQU5HVUwgU1lMTEFCTEUgQkJFSFxyXG5cdFx0KDB4QkYwOSA8PSBjb2RlICYmIGNvZGUgPD0gMHhCRjIzKSB8fCAvLyBMbyAgWzI3XSBIQU5HVUwgU1lMTEFCTEUgQkJZRU9HLi5IQU5HVUwgU1lMTEFCTEUgQkJZRU9IXHJcblx0XHQoMHhCRjI1IDw9IGNvZGUgJiYgY29kZSA8PSAweEJGM0YpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBCQllFRy4uSEFOR1VMIFNZTExBQkxFIEJCWUVIXHJcblx0XHQoMHhCRjQxIDw9IGNvZGUgJiYgY29kZSA8PSAweEJGNUIpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBCQk9HLi5IQU5HVUwgU1lMTEFCTEUgQkJPSFxyXG5cdFx0KDB4QkY1RCA8PSBjb2RlICYmIGNvZGUgPD0gMHhCRjc3KSB8fCAvLyBMbyAgWzI3XSBIQU5HVUwgU1lMTEFCTEUgQkJXQUcuLkhBTkdVTCBTWUxMQUJMRSBCQldBSFxyXG5cdFx0KDB4QkY3OSA8PSBjb2RlICYmIGNvZGUgPD0gMHhCRjkzKSB8fCAvLyBMbyAgWzI3XSBIQU5HVUwgU1lMTEFCTEUgQkJXQUVHLi5IQU5HVUwgU1lMTEFCTEUgQkJXQUVIXHJcblx0XHQoMHhCRjk1IDw9IGNvZGUgJiYgY29kZSA8PSAweEJGQUYpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBCQk9FRy4uSEFOR1VMIFNZTExBQkxFIEJCT0VIXHJcblx0XHQoMHhCRkIxIDw9IGNvZGUgJiYgY29kZSA8PSAweEJGQ0IpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBCQllPRy4uSEFOR1VMIFNZTExBQkxFIEJCWU9IXHJcblx0XHQoMHhCRkNEIDw9IGNvZGUgJiYgY29kZSA8PSAweEJGRTcpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBCQlVHLi5IQU5HVUwgU1lMTEFCTEUgQkJVSFxyXG5cdFx0KDB4QkZFOSA8PSBjb2RlICYmIGNvZGUgPD0gMHhDMDAzKSB8fCAvLyBMbyAgWzI3XSBIQU5HVUwgU1lMTEFCTEUgQkJXRU9HLi5IQU5HVUwgU1lMTEFCTEUgQkJXRU9IXHJcblx0XHQoMHhDMDA1IDw9IGNvZGUgJiYgY29kZSA8PSAweEMwMUYpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBCQldFRy4uSEFOR1VMIFNZTExBQkxFIEJCV0VIXHJcblx0XHQoMHhDMDIxIDw9IGNvZGUgJiYgY29kZSA8PSAweEMwM0IpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBCQldJRy4uSEFOR1VMIFNZTExBQkxFIEJCV0lIXHJcblx0XHQoMHhDMDNEIDw9IGNvZGUgJiYgY29kZSA8PSAweEMwNTcpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBCQllVRy4uSEFOR1VMIFNZTExBQkxFIEJCWVVIXHJcblx0XHQoMHhDMDU5IDw9IGNvZGUgJiYgY29kZSA8PSAweEMwNzMpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBCQkVVRy4uSEFOR1VMIFNZTExBQkxFIEJCRVVIXHJcblx0XHQoMHhDMDc1IDw9IGNvZGUgJiYgY29kZSA8PSAweEMwOEYpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBCQllJRy4uSEFOR1VMIFNZTExBQkxFIEJCWUlIXHJcblx0XHQoMHhDMDkxIDw9IGNvZGUgJiYgY29kZSA8PSAweEMwQUIpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBCQklHLi5IQU5HVUwgU1lMTEFCTEUgQkJJSFxyXG5cdFx0KDB4QzBBRCA8PSBjb2RlICYmIGNvZGUgPD0gMHhDMEM3KSB8fCAvLyBMbyAgWzI3XSBIQU5HVUwgU1lMTEFCTEUgU0FHLi5IQU5HVUwgU1lMTEFCTEUgU0FIXHJcblx0XHQoMHhDMEM5IDw9IGNvZGUgJiYgY29kZSA8PSAweEMwRTMpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBTQUVHLi5IQU5HVUwgU1lMTEFCTEUgU0FFSFxyXG5cdFx0KDB4QzBFNSA8PSBjb2RlICYmIGNvZGUgPD0gMHhDMEZGKSB8fCAvLyBMbyAgWzI3XSBIQU5HVUwgU1lMTEFCTEUgU1lBRy4uSEFOR1VMIFNZTExBQkxFIFNZQUhcclxuXHRcdCgweEMxMDEgPD0gY29kZSAmJiBjb2RlIDw9IDB4QzExQikgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIFNZQUVHLi5IQU5HVUwgU1lMTEFCTEUgU1lBRUhcclxuXHRcdCgweEMxMUQgPD0gY29kZSAmJiBjb2RlIDw9IDB4QzEzNykgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIFNFT0cuLkhBTkdVTCBTWUxMQUJMRSBTRU9IXHJcblx0XHQoMHhDMTM5IDw9IGNvZGUgJiYgY29kZSA8PSAweEMxNTMpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBTRUcuLkhBTkdVTCBTWUxMQUJMRSBTRUhcclxuXHRcdCgweEMxNTUgPD0gY29kZSAmJiBjb2RlIDw9IDB4QzE2RikgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIFNZRU9HLi5IQU5HVUwgU1lMTEFCTEUgU1lFT0hcclxuXHRcdCgweEMxNzEgPD0gY29kZSAmJiBjb2RlIDw9IDB4QzE4QikgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIFNZRUcuLkhBTkdVTCBTWUxMQUJMRSBTWUVIXHJcblx0XHQoMHhDMThEIDw9IGNvZGUgJiYgY29kZSA8PSAweEMxQTcpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBTT0cuLkhBTkdVTCBTWUxMQUJMRSBTT0hcclxuXHRcdCgweEMxQTkgPD0gY29kZSAmJiBjb2RlIDw9IDB4QzFDMykgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIFNXQUcuLkhBTkdVTCBTWUxMQUJMRSBTV0FIXHJcblx0XHQoMHhDMUM1IDw9IGNvZGUgJiYgY29kZSA8PSAweEMxREYpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBTV0FFRy4uSEFOR1VMIFNZTExBQkxFIFNXQUVIXHJcblx0XHQoMHhDMUUxIDw9IGNvZGUgJiYgY29kZSA8PSAweEMxRkIpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBTT0VHLi5IQU5HVUwgU1lMTEFCTEUgU09FSFxyXG5cdFx0KDB4QzFGRCA8PSBjb2RlICYmIGNvZGUgPD0gMHhDMjE3KSB8fCAvLyBMbyAgWzI3XSBIQU5HVUwgU1lMTEFCTEUgU1lPRy4uSEFOR1VMIFNZTExBQkxFIFNZT0hcclxuXHRcdCgweEMyMTkgPD0gY29kZSAmJiBjb2RlIDw9IDB4QzIzMykgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIFNVRy4uSEFOR1VMIFNZTExBQkxFIFNVSFxyXG5cdFx0KDB4QzIzNSA8PSBjb2RlICYmIGNvZGUgPD0gMHhDMjRGKSB8fCAvLyBMbyAgWzI3XSBIQU5HVUwgU1lMTEFCTEUgU1dFT0cuLkhBTkdVTCBTWUxMQUJMRSBTV0VPSFxyXG5cdFx0KDB4QzI1MSA8PSBjb2RlICYmIGNvZGUgPD0gMHhDMjZCKSB8fCAvLyBMbyAgWzI3XSBIQU5HVUwgU1lMTEFCTEUgU1dFRy4uSEFOR1VMIFNZTExBQkxFIFNXRUhcclxuXHRcdCgweEMyNkQgPD0gY29kZSAmJiBjb2RlIDw9IDB4QzI4NykgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIFNXSUcuLkhBTkdVTCBTWUxMQUJMRSBTV0lIXHJcblx0XHQoMHhDMjg5IDw9IGNvZGUgJiYgY29kZSA8PSAweEMyQTMpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBTWVVHLi5IQU5HVUwgU1lMTEFCTEUgU1lVSFxyXG5cdFx0KDB4QzJBNSA8PSBjb2RlICYmIGNvZGUgPD0gMHhDMkJGKSB8fCAvLyBMbyAgWzI3XSBIQU5HVUwgU1lMTEFCTEUgU0VVRy4uSEFOR1VMIFNZTExBQkxFIFNFVUhcclxuXHRcdCgweEMyQzEgPD0gY29kZSAmJiBjb2RlIDw9IDB4QzJEQikgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIFNZSUcuLkhBTkdVTCBTWUxMQUJMRSBTWUlIXHJcblx0XHQoMHhDMkREIDw9IGNvZGUgJiYgY29kZSA8PSAweEMyRjcpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBTSUcuLkhBTkdVTCBTWUxMQUJMRSBTSUhcclxuXHRcdCgweEMyRjkgPD0gY29kZSAmJiBjb2RlIDw9IDB4QzMxMykgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIFNTQUcuLkhBTkdVTCBTWUxMQUJMRSBTU0FIXHJcblx0XHQoMHhDMzE1IDw9IGNvZGUgJiYgY29kZSA8PSAweEMzMkYpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBTU0FFRy4uSEFOR1VMIFNZTExBQkxFIFNTQUVIXHJcblx0XHQoMHhDMzMxIDw9IGNvZGUgJiYgY29kZSA8PSAweEMzNEIpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBTU1lBRy4uSEFOR1VMIFNZTExBQkxFIFNTWUFIXHJcblx0XHQoMHhDMzREIDw9IGNvZGUgJiYgY29kZSA8PSAweEMzNjcpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBTU1lBRUcuLkhBTkdVTCBTWUxMQUJMRSBTU1lBRUhcclxuXHRcdCgweEMzNjkgPD0gY29kZSAmJiBjb2RlIDw9IDB4QzM4MykgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIFNTRU9HLi5IQU5HVUwgU1lMTEFCTEUgU1NFT0hcclxuXHRcdCgweEMzODUgPD0gY29kZSAmJiBjb2RlIDw9IDB4QzM5RikgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIFNTRUcuLkhBTkdVTCBTWUxMQUJMRSBTU0VIXHJcblx0XHQoMHhDM0ExIDw9IGNvZGUgJiYgY29kZSA8PSAweEMzQkIpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBTU1lFT0cuLkhBTkdVTCBTWUxMQUJMRSBTU1lFT0hcclxuXHRcdCgweEMzQkQgPD0gY29kZSAmJiBjb2RlIDw9IDB4QzNENykgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIFNTWUVHLi5IQU5HVUwgU1lMTEFCTEUgU1NZRUhcclxuXHRcdCgweEMzRDkgPD0gY29kZSAmJiBjb2RlIDw9IDB4QzNGMykgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIFNTT0cuLkhBTkdVTCBTWUxMQUJMRSBTU09IXHJcblx0XHQoMHhDM0Y1IDw9IGNvZGUgJiYgY29kZSA8PSAweEM0MEYpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBTU1dBRy4uSEFOR1VMIFNZTExBQkxFIFNTV0FIXHJcblx0XHQoMHhDNDExIDw9IGNvZGUgJiYgY29kZSA8PSAweEM0MkIpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBTU1dBRUcuLkhBTkdVTCBTWUxMQUJMRSBTU1dBRUhcclxuXHRcdCgweEM0MkQgPD0gY29kZSAmJiBjb2RlIDw9IDB4QzQ0NykgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIFNTT0VHLi5IQU5HVUwgU1lMTEFCTEUgU1NPRUhcclxuXHRcdCgweEM0NDkgPD0gY29kZSAmJiBjb2RlIDw9IDB4QzQ2MykgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIFNTWU9HLi5IQU5HVUwgU1lMTEFCTEUgU1NZT0hcclxuXHRcdCgweEM0NjUgPD0gY29kZSAmJiBjb2RlIDw9IDB4QzQ3RikgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIFNTVUcuLkhBTkdVTCBTWUxMQUJMRSBTU1VIXHJcblx0XHQoMHhDNDgxIDw9IGNvZGUgJiYgY29kZSA8PSAweEM0OUIpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBTU1dFT0cuLkhBTkdVTCBTWUxMQUJMRSBTU1dFT0hcclxuXHRcdCgweEM0OUQgPD0gY29kZSAmJiBjb2RlIDw9IDB4QzRCNykgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIFNTV0VHLi5IQU5HVUwgU1lMTEFCTEUgU1NXRUhcclxuXHRcdCgweEM0QjkgPD0gY29kZSAmJiBjb2RlIDw9IDB4QzREMykgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIFNTV0lHLi5IQU5HVUwgU1lMTEFCTEUgU1NXSUhcclxuXHRcdCgweEM0RDUgPD0gY29kZSAmJiBjb2RlIDw9IDB4QzRFRikgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIFNTWVVHLi5IQU5HVUwgU1lMTEFCTEUgU1NZVUhcclxuXHRcdCgweEM0RjEgPD0gY29kZSAmJiBjb2RlIDw9IDB4QzUwQikgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIFNTRVVHLi5IQU5HVUwgU1lMTEFCTEUgU1NFVUhcclxuXHRcdCgweEM1MEQgPD0gY29kZSAmJiBjb2RlIDw9IDB4QzUyNykgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIFNTWUlHLi5IQU5HVUwgU1lMTEFCTEUgU1NZSUhcclxuXHRcdCgweEM1MjkgPD0gY29kZSAmJiBjb2RlIDw9IDB4QzU0MykgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIFNTSUcuLkhBTkdVTCBTWUxMQUJMRSBTU0lIXHJcblx0XHQoMHhDNTQ1IDw9IGNvZGUgJiYgY29kZSA8PSAweEM1NUYpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBBRy4uSEFOR1VMIFNZTExBQkxFIEFIXHJcblx0XHQoMHhDNTYxIDw9IGNvZGUgJiYgY29kZSA8PSAweEM1N0IpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBBRUcuLkhBTkdVTCBTWUxMQUJMRSBBRUhcclxuXHRcdCgweEM1N0QgPD0gY29kZSAmJiBjb2RlIDw9IDB4QzU5NykgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIFlBRy4uSEFOR1VMIFNZTExBQkxFIFlBSFxyXG5cdFx0KDB4QzU5OSA8PSBjb2RlICYmIGNvZGUgPD0gMHhDNUIzKSB8fCAvLyBMbyAgWzI3XSBIQU5HVUwgU1lMTEFCTEUgWUFFRy4uSEFOR1VMIFNZTExBQkxFIFlBRUhcclxuXHRcdCgweEM1QjUgPD0gY29kZSAmJiBjb2RlIDw9IDB4QzVDRikgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIEVPRy4uSEFOR1VMIFNZTExBQkxFIEVPSFxyXG5cdFx0KDB4QzVEMSA8PSBjb2RlICYmIGNvZGUgPD0gMHhDNUVCKSB8fCAvLyBMbyAgWzI3XSBIQU5HVUwgU1lMTEFCTEUgRUcuLkhBTkdVTCBTWUxMQUJMRSBFSFxyXG5cdFx0KDB4QzVFRCA8PSBjb2RlICYmIGNvZGUgPD0gMHhDNjA3KSB8fCAvLyBMbyAgWzI3XSBIQU5HVUwgU1lMTEFCTEUgWUVPRy4uSEFOR1VMIFNZTExBQkxFIFlFT0hcclxuXHRcdCgweEM2MDkgPD0gY29kZSAmJiBjb2RlIDw9IDB4QzYyMykgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIFlFRy4uSEFOR1VMIFNZTExBQkxFIFlFSFxyXG5cdFx0KDB4QzYyNSA8PSBjb2RlICYmIGNvZGUgPD0gMHhDNjNGKSB8fCAvLyBMbyAgWzI3XSBIQU5HVUwgU1lMTEFCTEUgT0cuLkhBTkdVTCBTWUxMQUJMRSBPSFxyXG5cdFx0KDB4QzY0MSA8PSBjb2RlICYmIGNvZGUgPD0gMHhDNjVCKSB8fCAvLyBMbyAgWzI3XSBIQU5HVUwgU1lMTEFCTEUgV0FHLi5IQU5HVUwgU1lMTEFCTEUgV0FIXHJcblx0XHQoMHhDNjVEIDw9IGNvZGUgJiYgY29kZSA8PSAweEM2NzcpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBXQUVHLi5IQU5HVUwgU1lMTEFCTEUgV0FFSFxyXG5cdFx0KDB4QzY3OSA8PSBjb2RlICYmIGNvZGUgPD0gMHhDNjkzKSB8fCAvLyBMbyAgWzI3XSBIQU5HVUwgU1lMTEFCTEUgT0VHLi5IQU5HVUwgU1lMTEFCTEUgT0VIXHJcblx0XHQoMHhDNjk1IDw9IGNvZGUgJiYgY29kZSA8PSAweEM2QUYpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBZT0cuLkhBTkdVTCBTWUxMQUJMRSBZT0hcclxuXHRcdCgweEM2QjEgPD0gY29kZSAmJiBjb2RlIDw9IDB4QzZDQikgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIFVHLi5IQU5HVUwgU1lMTEFCTEUgVUhcclxuXHRcdCgweEM2Q0QgPD0gY29kZSAmJiBjb2RlIDw9IDB4QzZFNykgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIFdFT0cuLkhBTkdVTCBTWUxMQUJMRSBXRU9IXHJcblx0XHQoMHhDNkU5IDw9IGNvZGUgJiYgY29kZSA8PSAweEM3MDMpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBXRUcuLkhBTkdVTCBTWUxMQUJMRSBXRUhcclxuXHRcdCgweEM3MDUgPD0gY29kZSAmJiBjb2RlIDw9IDB4QzcxRikgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIFdJRy4uSEFOR1VMIFNZTExBQkxFIFdJSFxyXG5cdFx0KDB4QzcyMSA8PSBjb2RlICYmIGNvZGUgPD0gMHhDNzNCKSB8fCAvLyBMbyAgWzI3XSBIQU5HVUwgU1lMTEFCTEUgWVVHLi5IQU5HVUwgU1lMTEFCTEUgWVVIXHJcblx0XHQoMHhDNzNEIDw9IGNvZGUgJiYgY29kZSA8PSAweEM3NTcpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBFVUcuLkhBTkdVTCBTWUxMQUJMRSBFVUhcclxuXHRcdCgweEM3NTkgPD0gY29kZSAmJiBjb2RlIDw9IDB4Qzc3MykgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIFlJRy4uSEFOR1VMIFNZTExBQkxFIFlJSFxyXG5cdFx0KDB4Qzc3NSA8PSBjb2RlICYmIGNvZGUgPD0gMHhDNzhGKSB8fCAvLyBMbyAgWzI3XSBIQU5HVUwgU1lMTEFCTEUgSUcuLkhBTkdVTCBTWUxMQUJMRSBJSFxyXG5cdFx0KDB4Qzc5MSA8PSBjb2RlICYmIGNvZGUgPD0gMHhDN0FCKSB8fCAvLyBMbyAgWzI3XSBIQU5HVUwgU1lMTEFCTEUgSkFHLi5IQU5HVUwgU1lMTEFCTEUgSkFIXHJcblx0XHQoMHhDN0FEIDw9IGNvZGUgJiYgY29kZSA8PSAweEM3QzcpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBKQUVHLi5IQU5HVUwgU1lMTEFCTEUgSkFFSFxyXG5cdFx0KDB4QzdDOSA8PSBjb2RlICYmIGNvZGUgPD0gMHhDN0UzKSB8fCAvLyBMbyAgWzI3XSBIQU5HVUwgU1lMTEFCTEUgSllBRy4uSEFOR1VMIFNZTExBQkxFIEpZQUhcclxuXHRcdCgweEM3RTUgPD0gY29kZSAmJiBjb2RlIDw9IDB4QzdGRikgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIEpZQUVHLi5IQU5HVUwgU1lMTEFCTEUgSllBRUhcclxuXHRcdCgweEM4MDEgPD0gY29kZSAmJiBjb2RlIDw9IDB4QzgxQikgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIEpFT0cuLkhBTkdVTCBTWUxMQUJMRSBKRU9IXHJcblx0XHQoMHhDODFEIDw9IGNvZGUgJiYgY29kZSA8PSAweEM4MzcpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBKRUcuLkhBTkdVTCBTWUxMQUJMRSBKRUhcclxuXHRcdCgweEM4MzkgPD0gY29kZSAmJiBjb2RlIDw9IDB4Qzg1MykgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIEpZRU9HLi5IQU5HVUwgU1lMTEFCTEUgSllFT0hcclxuXHRcdCgweEM4NTUgPD0gY29kZSAmJiBjb2RlIDw9IDB4Qzg2RikgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIEpZRUcuLkhBTkdVTCBTWUxMQUJMRSBKWUVIXHJcblx0XHQoMHhDODcxIDw9IGNvZGUgJiYgY29kZSA8PSAweEM4OEIpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBKT0cuLkhBTkdVTCBTWUxMQUJMRSBKT0hcclxuXHRcdCgweEM4OEQgPD0gY29kZSAmJiBjb2RlIDw9IDB4QzhBNykgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIEpXQUcuLkhBTkdVTCBTWUxMQUJMRSBKV0FIXHJcblx0XHQoMHhDOEE5IDw9IGNvZGUgJiYgY29kZSA8PSAweEM4QzMpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBKV0FFRy4uSEFOR1VMIFNZTExBQkxFIEpXQUVIXHJcblx0XHQoMHhDOEM1IDw9IGNvZGUgJiYgY29kZSA8PSAweEM4REYpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBKT0VHLi5IQU5HVUwgU1lMTEFCTEUgSk9FSFxyXG5cdFx0KDB4QzhFMSA8PSBjb2RlICYmIGNvZGUgPD0gMHhDOEZCKSB8fCAvLyBMbyAgWzI3XSBIQU5HVUwgU1lMTEFCTEUgSllPRy4uSEFOR1VMIFNZTExBQkxFIEpZT0hcclxuXHRcdCgweEM4RkQgPD0gY29kZSAmJiBjb2RlIDw9IDB4QzkxNykgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIEpVRy4uSEFOR1VMIFNZTExBQkxFIEpVSFxyXG5cdFx0KDB4QzkxOSA8PSBjb2RlICYmIGNvZGUgPD0gMHhDOTMzKSB8fCAvLyBMbyAgWzI3XSBIQU5HVUwgU1lMTEFCTEUgSldFT0cuLkhBTkdVTCBTWUxMQUJMRSBKV0VPSFxyXG5cdFx0KDB4QzkzNSA8PSBjb2RlICYmIGNvZGUgPD0gMHhDOTRGKSB8fCAvLyBMbyAgWzI3XSBIQU5HVUwgU1lMTEFCTEUgSldFRy4uSEFOR1VMIFNZTExBQkxFIEpXRUhcclxuXHRcdCgweEM5NTEgPD0gY29kZSAmJiBjb2RlIDw9IDB4Qzk2QikgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIEpXSUcuLkhBTkdVTCBTWUxMQUJMRSBKV0lIXHJcblx0XHQoMHhDOTZEIDw9IGNvZGUgJiYgY29kZSA8PSAweEM5ODcpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBKWVVHLi5IQU5HVUwgU1lMTEFCTEUgSllVSFxyXG5cdFx0KDB4Qzk4OSA8PSBjb2RlICYmIGNvZGUgPD0gMHhDOUEzKSB8fCAvLyBMbyAgWzI3XSBIQU5HVUwgU1lMTEFCTEUgSkVVRy4uSEFOR1VMIFNZTExBQkxFIEpFVUhcclxuXHRcdCgweEM5QTUgPD0gY29kZSAmJiBjb2RlIDw9IDB4QzlCRikgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIEpZSUcuLkhBTkdVTCBTWUxMQUJMRSBKWUlIXHJcblx0XHQoMHhDOUMxIDw9IGNvZGUgJiYgY29kZSA8PSAweEM5REIpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBKSUcuLkhBTkdVTCBTWUxMQUJMRSBKSUhcclxuXHRcdCgweEM5REQgPD0gY29kZSAmJiBjb2RlIDw9IDB4QzlGNykgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIEpKQUcuLkhBTkdVTCBTWUxMQUJMRSBKSkFIXHJcblx0XHQoMHhDOUY5IDw9IGNvZGUgJiYgY29kZSA8PSAweENBMTMpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBKSkFFRy4uSEFOR1VMIFNZTExBQkxFIEpKQUVIXHJcblx0XHQoMHhDQTE1IDw9IGNvZGUgJiYgY29kZSA8PSAweENBMkYpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBKSllBRy4uSEFOR1VMIFNZTExBQkxFIEpKWUFIXHJcblx0XHQoMHhDQTMxIDw9IGNvZGUgJiYgY29kZSA8PSAweENBNEIpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBKSllBRUcuLkhBTkdVTCBTWUxMQUJMRSBKSllBRUhcclxuXHRcdCgweENBNEQgPD0gY29kZSAmJiBjb2RlIDw9IDB4Q0E2NykgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIEpKRU9HLi5IQU5HVUwgU1lMTEFCTEUgSkpFT0hcclxuXHRcdCgweENBNjkgPD0gY29kZSAmJiBjb2RlIDw9IDB4Q0E4MykgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIEpKRUcuLkhBTkdVTCBTWUxMQUJMRSBKSkVIXHJcblx0XHQoMHhDQTg1IDw9IGNvZGUgJiYgY29kZSA8PSAweENBOUYpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBKSllFT0cuLkhBTkdVTCBTWUxMQUJMRSBKSllFT0hcclxuXHRcdCgweENBQTEgPD0gY29kZSAmJiBjb2RlIDw9IDB4Q0FCQikgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIEpKWUVHLi5IQU5HVUwgU1lMTEFCTEUgSkpZRUhcclxuXHRcdCgweENBQkQgPD0gY29kZSAmJiBjb2RlIDw9IDB4Q0FENykgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIEpKT0cuLkhBTkdVTCBTWUxMQUJMRSBKSk9IXHJcblx0XHQoMHhDQUQ5IDw9IGNvZGUgJiYgY29kZSA8PSAweENBRjMpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBKSldBRy4uSEFOR1VMIFNZTExBQkxFIEpKV0FIXHJcblx0XHQoMHhDQUY1IDw9IGNvZGUgJiYgY29kZSA8PSAweENCMEYpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBKSldBRUcuLkhBTkdVTCBTWUxMQUJMRSBKSldBRUhcclxuXHRcdCgweENCMTEgPD0gY29kZSAmJiBjb2RlIDw9IDB4Q0IyQikgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIEpKT0VHLi5IQU5HVUwgU1lMTEFCTEUgSkpPRUhcclxuXHRcdCgweENCMkQgPD0gY29kZSAmJiBjb2RlIDw9IDB4Q0I0NykgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIEpKWU9HLi5IQU5HVUwgU1lMTEFCTEUgSkpZT0hcclxuXHRcdCgweENCNDkgPD0gY29kZSAmJiBjb2RlIDw9IDB4Q0I2MykgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIEpKVUcuLkhBTkdVTCBTWUxMQUJMRSBKSlVIXHJcblx0XHQoMHhDQjY1IDw9IGNvZGUgJiYgY29kZSA8PSAweENCN0YpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBKSldFT0cuLkhBTkdVTCBTWUxMQUJMRSBKSldFT0hcclxuXHRcdCgweENCODEgPD0gY29kZSAmJiBjb2RlIDw9IDB4Q0I5QikgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIEpKV0VHLi5IQU5HVUwgU1lMTEFCTEUgSkpXRUhcclxuXHRcdCgweENCOUQgPD0gY29kZSAmJiBjb2RlIDw9IDB4Q0JCNykgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIEpKV0lHLi5IQU5HVUwgU1lMTEFCTEUgSkpXSUhcclxuXHRcdCgweENCQjkgPD0gY29kZSAmJiBjb2RlIDw9IDB4Q0JEMykgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIEpKWVVHLi5IQU5HVUwgU1lMTEFCTEUgSkpZVUhcclxuXHRcdCgweENCRDUgPD0gY29kZSAmJiBjb2RlIDw9IDB4Q0JFRikgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIEpKRVVHLi5IQU5HVUwgU1lMTEFCTEUgSkpFVUhcclxuXHRcdCgweENCRjEgPD0gY29kZSAmJiBjb2RlIDw9IDB4Q0MwQikgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIEpKWUlHLi5IQU5HVUwgU1lMTEFCTEUgSkpZSUhcclxuXHRcdCgweENDMEQgPD0gY29kZSAmJiBjb2RlIDw9IDB4Q0MyNykgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIEpKSUcuLkhBTkdVTCBTWUxMQUJMRSBKSklIXHJcblx0XHQoMHhDQzI5IDw9IGNvZGUgJiYgY29kZSA8PSAweENDNDMpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBDQUcuLkhBTkdVTCBTWUxMQUJMRSBDQUhcclxuXHRcdCgweENDNDUgPD0gY29kZSAmJiBjb2RlIDw9IDB4Q0M1RikgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIENBRUcuLkhBTkdVTCBTWUxMQUJMRSBDQUVIXHJcblx0XHQoMHhDQzYxIDw9IGNvZGUgJiYgY29kZSA8PSAweENDN0IpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBDWUFHLi5IQU5HVUwgU1lMTEFCTEUgQ1lBSFxyXG5cdFx0KDB4Q0M3RCA8PSBjb2RlICYmIGNvZGUgPD0gMHhDQzk3KSB8fCAvLyBMbyAgWzI3XSBIQU5HVUwgU1lMTEFCTEUgQ1lBRUcuLkhBTkdVTCBTWUxMQUJMRSBDWUFFSFxyXG5cdFx0KDB4Q0M5OSA8PSBjb2RlICYmIGNvZGUgPD0gMHhDQ0IzKSB8fCAvLyBMbyAgWzI3XSBIQU5HVUwgU1lMTEFCTEUgQ0VPRy4uSEFOR1VMIFNZTExBQkxFIENFT0hcclxuXHRcdCgweENDQjUgPD0gY29kZSAmJiBjb2RlIDw9IDB4Q0NDRikgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIENFRy4uSEFOR1VMIFNZTExBQkxFIENFSFxyXG5cdFx0KDB4Q0NEMSA8PSBjb2RlICYmIGNvZGUgPD0gMHhDQ0VCKSB8fCAvLyBMbyAgWzI3XSBIQU5HVUwgU1lMTEFCTEUgQ1lFT0cuLkhBTkdVTCBTWUxMQUJMRSBDWUVPSFxyXG5cdFx0KDB4Q0NFRCA8PSBjb2RlICYmIGNvZGUgPD0gMHhDRDA3KSB8fCAvLyBMbyAgWzI3XSBIQU5HVUwgU1lMTEFCTEUgQ1lFRy4uSEFOR1VMIFNZTExBQkxFIENZRUhcclxuXHRcdCgweENEMDkgPD0gY29kZSAmJiBjb2RlIDw9IDB4Q0QyMykgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIENPRy4uSEFOR1VMIFNZTExBQkxFIENPSFxyXG5cdFx0KDB4Q0QyNSA8PSBjb2RlICYmIGNvZGUgPD0gMHhDRDNGKSB8fCAvLyBMbyAgWzI3XSBIQU5HVUwgU1lMTEFCTEUgQ1dBRy4uSEFOR1VMIFNZTExBQkxFIENXQUhcclxuXHRcdCgweENENDEgPD0gY29kZSAmJiBjb2RlIDw9IDB4Q0Q1QikgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIENXQUVHLi5IQU5HVUwgU1lMTEFCTEUgQ1dBRUhcclxuXHRcdCgweENENUQgPD0gY29kZSAmJiBjb2RlIDw9IDB4Q0Q3NykgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIENPRUcuLkhBTkdVTCBTWUxMQUJMRSBDT0VIXHJcblx0XHQoMHhDRDc5IDw9IGNvZGUgJiYgY29kZSA8PSAweENEOTMpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBDWU9HLi5IQU5HVUwgU1lMTEFCTEUgQ1lPSFxyXG5cdFx0KDB4Q0Q5NSA8PSBjb2RlICYmIGNvZGUgPD0gMHhDREFGKSB8fCAvLyBMbyAgWzI3XSBIQU5HVUwgU1lMTEFCTEUgQ1VHLi5IQU5HVUwgU1lMTEFCTEUgQ1VIXHJcblx0XHQoMHhDREIxIDw9IGNvZGUgJiYgY29kZSA8PSAweENEQ0IpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBDV0VPRy4uSEFOR1VMIFNZTExBQkxFIENXRU9IXHJcblx0XHQoMHhDRENEIDw9IGNvZGUgJiYgY29kZSA8PSAweENERTcpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBDV0VHLi5IQU5HVUwgU1lMTEFCTEUgQ1dFSFxyXG5cdFx0KDB4Q0RFOSA8PSBjb2RlICYmIGNvZGUgPD0gMHhDRTAzKSB8fCAvLyBMbyAgWzI3XSBIQU5HVUwgU1lMTEFCTEUgQ1dJRy4uSEFOR1VMIFNZTExBQkxFIENXSUhcclxuXHRcdCgweENFMDUgPD0gY29kZSAmJiBjb2RlIDw9IDB4Q0UxRikgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIENZVUcuLkhBTkdVTCBTWUxMQUJMRSBDWVVIXHJcblx0XHQoMHhDRTIxIDw9IGNvZGUgJiYgY29kZSA8PSAweENFM0IpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBDRVVHLi5IQU5HVUwgU1lMTEFCTEUgQ0VVSFxyXG5cdFx0KDB4Q0UzRCA8PSBjb2RlICYmIGNvZGUgPD0gMHhDRTU3KSB8fCAvLyBMbyAgWzI3XSBIQU5HVUwgU1lMTEFCTEUgQ1lJRy4uSEFOR1VMIFNZTExBQkxFIENZSUhcclxuXHRcdCgweENFNTkgPD0gY29kZSAmJiBjb2RlIDw9IDB4Q0U3MykgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIENJRy4uSEFOR1VMIFNZTExBQkxFIENJSFxyXG5cdFx0KDB4Q0U3NSA8PSBjb2RlICYmIGNvZGUgPD0gMHhDRThGKSB8fCAvLyBMbyAgWzI3XSBIQU5HVUwgU1lMTEFCTEUgS0FHLi5IQU5HVUwgU1lMTEFCTEUgS0FIXHJcblx0XHQoMHhDRTkxIDw9IGNvZGUgJiYgY29kZSA8PSAweENFQUIpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBLQUVHLi5IQU5HVUwgU1lMTEFCTEUgS0FFSFxyXG5cdFx0KDB4Q0VBRCA8PSBjb2RlICYmIGNvZGUgPD0gMHhDRUM3KSB8fCAvLyBMbyAgWzI3XSBIQU5HVUwgU1lMTEFCTEUgS1lBRy4uSEFOR1VMIFNZTExBQkxFIEtZQUhcclxuXHRcdCgweENFQzkgPD0gY29kZSAmJiBjb2RlIDw9IDB4Q0VFMykgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIEtZQUVHLi5IQU5HVUwgU1lMTEFCTEUgS1lBRUhcclxuXHRcdCgweENFRTUgPD0gY29kZSAmJiBjb2RlIDw9IDB4Q0VGRikgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIEtFT0cuLkhBTkdVTCBTWUxMQUJMRSBLRU9IXHJcblx0XHQoMHhDRjAxIDw9IGNvZGUgJiYgY29kZSA8PSAweENGMUIpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBLRUcuLkhBTkdVTCBTWUxMQUJMRSBLRUhcclxuXHRcdCgweENGMUQgPD0gY29kZSAmJiBjb2RlIDw9IDB4Q0YzNykgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIEtZRU9HLi5IQU5HVUwgU1lMTEFCTEUgS1lFT0hcclxuXHRcdCgweENGMzkgPD0gY29kZSAmJiBjb2RlIDw9IDB4Q0Y1MykgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIEtZRUcuLkhBTkdVTCBTWUxMQUJMRSBLWUVIXHJcblx0XHQoMHhDRjU1IDw9IGNvZGUgJiYgY29kZSA8PSAweENGNkYpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBLT0cuLkhBTkdVTCBTWUxMQUJMRSBLT0hcclxuXHRcdCgweENGNzEgPD0gY29kZSAmJiBjb2RlIDw9IDB4Q0Y4QikgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIEtXQUcuLkhBTkdVTCBTWUxMQUJMRSBLV0FIXHJcblx0XHQoMHhDRjhEIDw9IGNvZGUgJiYgY29kZSA8PSAweENGQTcpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBLV0FFRy4uSEFOR1VMIFNZTExBQkxFIEtXQUVIXHJcblx0XHQoMHhDRkE5IDw9IGNvZGUgJiYgY29kZSA8PSAweENGQzMpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBLT0VHLi5IQU5HVUwgU1lMTEFCTEUgS09FSFxyXG5cdFx0KDB4Q0ZDNSA8PSBjb2RlICYmIGNvZGUgPD0gMHhDRkRGKSB8fCAvLyBMbyAgWzI3XSBIQU5HVUwgU1lMTEFCTEUgS1lPRy4uSEFOR1VMIFNZTExBQkxFIEtZT0hcclxuXHRcdCgweENGRTEgPD0gY29kZSAmJiBjb2RlIDw9IDB4Q0ZGQikgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIEtVRy4uSEFOR1VMIFNZTExBQkxFIEtVSFxyXG5cdFx0KDB4Q0ZGRCA8PSBjb2RlICYmIGNvZGUgPD0gMHhEMDE3KSB8fCAvLyBMbyAgWzI3XSBIQU5HVUwgU1lMTEFCTEUgS1dFT0cuLkhBTkdVTCBTWUxMQUJMRSBLV0VPSFxyXG5cdFx0KDB4RDAxOSA8PSBjb2RlICYmIGNvZGUgPD0gMHhEMDMzKSB8fCAvLyBMbyAgWzI3XSBIQU5HVUwgU1lMTEFCTEUgS1dFRy4uSEFOR1VMIFNZTExBQkxFIEtXRUhcclxuXHRcdCgweEQwMzUgPD0gY29kZSAmJiBjb2RlIDw9IDB4RDA0RikgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIEtXSUcuLkhBTkdVTCBTWUxMQUJMRSBLV0lIXHJcblx0XHQoMHhEMDUxIDw9IGNvZGUgJiYgY29kZSA8PSAweEQwNkIpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBLWVVHLi5IQU5HVUwgU1lMTEFCTEUgS1lVSFxyXG5cdFx0KDB4RDA2RCA8PSBjb2RlICYmIGNvZGUgPD0gMHhEMDg3KSB8fCAvLyBMbyAgWzI3XSBIQU5HVUwgU1lMTEFCTEUgS0VVRy4uSEFOR1VMIFNZTExBQkxFIEtFVUhcclxuXHRcdCgweEQwODkgPD0gY29kZSAmJiBjb2RlIDw9IDB4RDBBMykgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIEtZSUcuLkhBTkdVTCBTWUxMQUJMRSBLWUlIXHJcblx0XHQoMHhEMEE1IDw9IGNvZGUgJiYgY29kZSA8PSAweEQwQkYpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBLSUcuLkhBTkdVTCBTWUxMQUJMRSBLSUhcclxuXHRcdCgweEQwQzEgPD0gY29kZSAmJiBjb2RlIDw9IDB4RDBEQikgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIFRBRy4uSEFOR1VMIFNZTExBQkxFIFRBSFxyXG5cdFx0KDB4RDBERCA8PSBjb2RlICYmIGNvZGUgPD0gMHhEMEY3KSB8fCAvLyBMbyAgWzI3XSBIQU5HVUwgU1lMTEFCTEUgVEFFRy4uSEFOR1VMIFNZTExBQkxFIFRBRUhcclxuXHRcdCgweEQwRjkgPD0gY29kZSAmJiBjb2RlIDw9IDB4RDExMykgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIFRZQUcuLkhBTkdVTCBTWUxMQUJMRSBUWUFIXHJcblx0XHQoMHhEMTE1IDw9IGNvZGUgJiYgY29kZSA8PSAweEQxMkYpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBUWUFFRy4uSEFOR1VMIFNZTExBQkxFIFRZQUVIXHJcblx0XHQoMHhEMTMxIDw9IGNvZGUgJiYgY29kZSA8PSAweEQxNEIpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBURU9HLi5IQU5HVUwgU1lMTEFCTEUgVEVPSFxyXG5cdFx0KDB4RDE0RCA8PSBjb2RlICYmIGNvZGUgPD0gMHhEMTY3KSB8fCAvLyBMbyAgWzI3XSBIQU5HVUwgU1lMTEFCTEUgVEVHLi5IQU5HVUwgU1lMTEFCTEUgVEVIXHJcblx0XHQoMHhEMTY5IDw9IGNvZGUgJiYgY29kZSA8PSAweEQxODMpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBUWUVPRy4uSEFOR1VMIFNZTExBQkxFIFRZRU9IXHJcblx0XHQoMHhEMTg1IDw9IGNvZGUgJiYgY29kZSA8PSAweEQxOUYpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBUWUVHLi5IQU5HVUwgU1lMTEFCTEUgVFlFSFxyXG5cdFx0KDB4RDFBMSA8PSBjb2RlICYmIGNvZGUgPD0gMHhEMUJCKSB8fCAvLyBMbyAgWzI3XSBIQU5HVUwgU1lMTEFCTEUgVE9HLi5IQU5HVUwgU1lMTEFCTEUgVE9IXHJcblx0XHQoMHhEMUJEIDw9IGNvZGUgJiYgY29kZSA8PSAweEQxRDcpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBUV0FHLi5IQU5HVUwgU1lMTEFCTEUgVFdBSFxyXG5cdFx0KDB4RDFEOSA8PSBjb2RlICYmIGNvZGUgPD0gMHhEMUYzKSB8fCAvLyBMbyAgWzI3XSBIQU5HVUwgU1lMTEFCTEUgVFdBRUcuLkhBTkdVTCBTWUxMQUJMRSBUV0FFSFxyXG5cdFx0KDB4RDFGNSA8PSBjb2RlICYmIGNvZGUgPD0gMHhEMjBGKSB8fCAvLyBMbyAgWzI3XSBIQU5HVUwgU1lMTEFCTEUgVE9FRy4uSEFOR1VMIFNZTExBQkxFIFRPRUhcclxuXHRcdCgweEQyMTEgPD0gY29kZSAmJiBjb2RlIDw9IDB4RDIyQikgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIFRZT0cuLkhBTkdVTCBTWUxMQUJMRSBUWU9IXHJcblx0XHQoMHhEMjJEIDw9IGNvZGUgJiYgY29kZSA8PSAweEQyNDcpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBUVUcuLkhBTkdVTCBTWUxMQUJMRSBUVUhcclxuXHRcdCgweEQyNDkgPD0gY29kZSAmJiBjb2RlIDw9IDB4RDI2MykgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIFRXRU9HLi5IQU5HVUwgU1lMTEFCTEUgVFdFT0hcclxuXHRcdCgweEQyNjUgPD0gY29kZSAmJiBjb2RlIDw9IDB4RDI3RikgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIFRXRUcuLkhBTkdVTCBTWUxMQUJMRSBUV0VIXHJcblx0XHQoMHhEMjgxIDw9IGNvZGUgJiYgY29kZSA8PSAweEQyOUIpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBUV0lHLi5IQU5HVUwgU1lMTEFCTEUgVFdJSFxyXG5cdFx0KDB4RDI5RCA8PSBjb2RlICYmIGNvZGUgPD0gMHhEMkI3KSB8fCAvLyBMbyAgWzI3XSBIQU5HVUwgU1lMTEFCTEUgVFlVRy4uSEFOR1VMIFNZTExBQkxFIFRZVUhcclxuXHRcdCgweEQyQjkgPD0gY29kZSAmJiBjb2RlIDw9IDB4RDJEMykgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIFRFVUcuLkhBTkdVTCBTWUxMQUJMRSBURVVIXHJcblx0XHQoMHhEMkQ1IDw9IGNvZGUgJiYgY29kZSA8PSAweEQyRUYpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBUWUlHLi5IQU5HVUwgU1lMTEFCTEUgVFlJSFxyXG5cdFx0KDB4RDJGMSA8PSBjb2RlICYmIGNvZGUgPD0gMHhEMzBCKSB8fCAvLyBMbyAgWzI3XSBIQU5HVUwgU1lMTEFCTEUgVElHLi5IQU5HVUwgU1lMTEFCTEUgVElIXHJcblx0XHQoMHhEMzBEIDw9IGNvZGUgJiYgY29kZSA8PSAweEQzMjcpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBQQUcuLkhBTkdVTCBTWUxMQUJMRSBQQUhcclxuXHRcdCgweEQzMjkgPD0gY29kZSAmJiBjb2RlIDw9IDB4RDM0MykgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIFBBRUcuLkhBTkdVTCBTWUxMQUJMRSBQQUVIXHJcblx0XHQoMHhEMzQ1IDw9IGNvZGUgJiYgY29kZSA8PSAweEQzNUYpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBQWUFHLi5IQU5HVUwgU1lMTEFCTEUgUFlBSFxyXG5cdFx0KDB4RDM2MSA8PSBjb2RlICYmIGNvZGUgPD0gMHhEMzdCKSB8fCAvLyBMbyAgWzI3XSBIQU5HVUwgU1lMTEFCTEUgUFlBRUcuLkhBTkdVTCBTWUxMQUJMRSBQWUFFSFxyXG5cdFx0KDB4RDM3RCA8PSBjb2RlICYmIGNvZGUgPD0gMHhEMzk3KSB8fCAvLyBMbyAgWzI3XSBIQU5HVUwgU1lMTEFCTEUgUEVPRy4uSEFOR1VMIFNZTExBQkxFIFBFT0hcclxuXHRcdCgweEQzOTkgPD0gY29kZSAmJiBjb2RlIDw9IDB4RDNCMykgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIFBFRy4uSEFOR1VMIFNZTExBQkxFIFBFSFxyXG5cdFx0KDB4RDNCNSA8PSBjb2RlICYmIGNvZGUgPD0gMHhEM0NGKSB8fCAvLyBMbyAgWzI3XSBIQU5HVUwgU1lMTEFCTEUgUFlFT0cuLkhBTkdVTCBTWUxMQUJMRSBQWUVPSFxyXG5cdFx0KDB4RDNEMSA8PSBjb2RlICYmIGNvZGUgPD0gMHhEM0VCKSB8fCAvLyBMbyAgWzI3XSBIQU5HVUwgU1lMTEFCTEUgUFlFRy4uSEFOR1VMIFNZTExBQkxFIFBZRUhcclxuXHRcdCgweEQzRUQgPD0gY29kZSAmJiBjb2RlIDw9IDB4RDQwNykgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIFBPRy4uSEFOR1VMIFNZTExBQkxFIFBPSFxyXG5cdFx0KDB4RDQwOSA8PSBjb2RlICYmIGNvZGUgPD0gMHhENDIzKSB8fCAvLyBMbyAgWzI3XSBIQU5HVUwgU1lMTEFCTEUgUFdBRy4uSEFOR1VMIFNZTExBQkxFIFBXQUhcclxuXHRcdCgweEQ0MjUgPD0gY29kZSAmJiBjb2RlIDw9IDB4RDQzRikgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIFBXQUVHLi5IQU5HVUwgU1lMTEFCTEUgUFdBRUhcclxuXHRcdCgweEQ0NDEgPD0gY29kZSAmJiBjb2RlIDw9IDB4RDQ1QikgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIFBPRUcuLkhBTkdVTCBTWUxMQUJMRSBQT0VIXHJcblx0XHQoMHhENDVEIDw9IGNvZGUgJiYgY29kZSA8PSAweEQ0NzcpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBQWU9HLi5IQU5HVUwgU1lMTEFCTEUgUFlPSFxyXG5cdFx0KDB4RDQ3OSA8PSBjb2RlICYmIGNvZGUgPD0gMHhENDkzKSB8fCAvLyBMbyAgWzI3XSBIQU5HVUwgU1lMTEFCTEUgUFVHLi5IQU5HVUwgU1lMTEFCTEUgUFVIXHJcblx0XHQoMHhENDk1IDw9IGNvZGUgJiYgY29kZSA8PSAweEQ0QUYpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBQV0VPRy4uSEFOR1VMIFNZTExBQkxFIFBXRU9IXHJcblx0XHQoMHhENEIxIDw9IGNvZGUgJiYgY29kZSA8PSAweEQ0Q0IpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBQV0VHLi5IQU5HVUwgU1lMTEFCTEUgUFdFSFxyXG5cdFx0KDB4RDRDRCA8PSBjb2RlICYmIGNvZGUgPD0gMHhENEU3KSB8fCAvLyBMbyAgWzI3XSBIQU5HVUwgU1lMTEFCTEUgUFdJRy4uSEFOR1VMIFNZTExBQkxFIFBXSUhcclxuXHRcdCgweEQ0RTkgPD0gY29kZSAmJiBjb2RlIDw9IDB4RDUwMykgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIFBZVUcuLkhBTkdVTCBTWUxMQUJMRSBQWVVIXHJcblx0XHQoMHhENTA1IDw9IGNvZGUgJiYgY29kZSA8PSAweEQ1MUYpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBQRVVHLi5IQU5HVUwgU1lMTEFCTEUgUEVVSFxyXG5cdFx0KDB4RDUyMSA8PSBjb2RlICYmIGNvZGUgPD0gMHhENTNCKSB8fCAvLyBMbyAgWzI3XSBIQU5HVUwgU1lMTEFCTEUgUFlJRy4uSEFOR1VMIFNZTExBQkxFIFBZSUhcclxuXHRcdCgweEQ1M0QgPD0gY29kZSAmJiBjb2RlIDw9IDB4RDU1NykgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIFBJRy4uSEFOR1VMIFNZTExBQkxFIFBJSFxyXG5cdFx0KDB4RDU1OSA8PSBjb2RlICYmIGNvZGUgPD0gMHhENTczKSB8fCAvLyBMbyAgWzI3XSBIQU5HVUwgU1lMTEFCTEUgSEFHLi5IQU5HVUwgU1lMTEFCTEUgSEFIXHJcblx0XHQoMHhENTc1IDw9IGNvZGUgJiYgY29kZSA8PSAweEQ1OEYpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBIQUVHLi5IQU5HVUwgU1lMTEFCTEUgSEFFSFxyXG5cdFx0KDB4RDU5MSA8PSBjb2RlICYmIGNvZGUgPD0gMHhENUFCKSB8fCAvLyBMbyAgWzI3XSBIQU5HVUwgU1lMTEFCTEUgSFlBRy4uSEFOR1VMIFNZTExBQkxFIEhZQUhcclxuXHRcdCgweEQ1QUQgPD0gY29kZSAmJiBjb2RlIDw9IDB4RDVDNykgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIEhZQUVHLi5IQU5HVUwgU1lMTEFCTEUgSFlBRUhcclxuXHRcdCgweEQ1QzkgPD0gY29kZSAmJiBjb2RlIDw9IDB4RDVFMykgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIEhFT0cuLkhBTkdVTCBTWUxMQUJMRSBIRU9IXHJcblx0XHQoMHhENUU1IDw9IGNvZGUgJiYgY29kZSA8PSAweEQ1RkYpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBIRUcuLkhBTkdVTCBTWUxMQUJMRSBIRUhcclxuXHRcdCgweEQ2MDEgPD0gY29kZSAmJiBjb2RlIDw9IDB4RDYxQikgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIEhZRU9HLi5IQU5HVUwgU1lMTEFCTEUgSFlFT0hcclxuXHRcdCgweEQ2MUQgPD0gY29kZSAmJiBjb2RlIDw9IDB4RDYzNykgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIEhZRUcuLkhBTkdVTCBTWUxMQUJMRSBIWUVIXHJcblx0XHQoMHhENjM5IDw9IGNvZGUgJiYgY29kZSA8PSAweEQ2NTMpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBIT0cuLkhBTkdVTCBTWUxMQUJMRSBIT0hcclxuXHRcdCgweEQ2NTUgPD0gY29kZSAmJiBjb2RlIDw9IDB4RDY2RikgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIEhXQUcuLkhBTkdVTCBTWUxMQUJMRSBIV0FIXHJcblx0XHQoMHhENjcxIDw9IGNvZGUgJiYgY29kZSA8PSAweEQ2OEIpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBIV0FFRy4uSEFOR1VMIFNZTExBQkxFIEhXQUVIXHJcblx0XHQoMHhENjhEIDw9IGNvZGUgJiYgY29kZSA8PSAweEQ2QTcpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBIT0VHLi5IQU5HVUwgU1lMTEFCTEUgSE9FSFxyXG5cdFx0KDB4RDZBOSA8PSBjb2RlICYmIGNvZGUgPD0gMHhENkMzKSB8fCAvLyBMbyAgWzI3XSBIQU5HVUwgU1lMTEFCTEUgSFlPRy4uSEFOR1VMIFNZTExBQkxFIEhZT0hcclxuXHRcdCgweEQ2QzUgPD0gY29kZSAmJiBjb2RlIDw9IDB4RDZERikgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIEhVRy4uSEFOR1VMIFNZTExBQkxFIEhVSFxyXG5cdFx0KDB4RDZFMSA8PSBjb2RlICYmIGNvZGUgPD0gMHhENkZCKSB8fCAvLyBMbyAgWzI3XSBIQU5HVUwgU1lMTEFCTEUgSFdFT0cuLkhBTkdVTCBTWUxMQUJMRSBIV0VPSFxyXG5cdFx0KDB4RDZGRCA8PSBjb2RlICYmIGNvZGUgPD0gMHhENzE3KSB8fCAvLyBMbyAgWzI3XSBIQU5HVUwgU1lMTEFCTEUgSFdFRy4uSEFOR1VMIFNZTExBQkxFIEhXRUhcclxuXHRcdCgweEQ3MTkgPD0gY29kZSAmJiBjb2RlIDw9IDB4RDczMykgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIEhXSUcuLkhBTkdVTCBTWUxMQUJMRSBIV0lIXHJcblx0XHQoMHhENzM1IDw9IGNvZGUgJiYgY29kZSA8PSAweEQ3NEYpIHx8IC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBIWVVHLi5IQU5HVUwgU1lMTEFCTEUgSFlVSFxyXG5cdFx0KDB4RDc1MSA8PSBjb2RlICYmIGNvZGUgPD0gMHhENzZCKSB8fCAvLyBMbyAgWzI3XSBIQU5HVUwgU1lMTEFCTEUgSEVVRy4uSEFOR1VMIFNZTExBQkxFIEhFVUhcclxuXHRcdCgweEQ3NkQgPD0gY29kZSAmJiBjb2RlIDw9IDB4RDc4NykgfHwgLy8gTG8gIFsyN10gSEFOR1VMIFNZTExBQkxFIEhZSUcuLkhBTkdVTCBTWUxMQUJMRSBIWUlIXHJcblx0XHQoMHhENzg5IDw9IGNvZGUgJiYgY29kZSA8PSAweEQ3QTMpIC8vIExvICBbMjddIEhBTkdVTCBTWUxMQUJMRSBISUcuLkhBTkdVTCBTWUxMQUJMRSBISUhcclxuXHRcdCl7XHJcblx0XHRcdHJldHVybiBMVlQ7XHJcblx0XHR9XHJcblx0XHRcclxuXHRcdGlmKFxyXG5cdFx0MHgyNjFEID09IGNvZGUgfHwgLy8gU28gICAgICAgV0hJVEUgVVAgUE9JTlRJTkcgSU5ERVhcclxuXHRcdDB4MjZGOSA9PSBjb2RlIHx8IC8vIFNvICAgICAgIFBFUlNPTiBXSVRIIEJBTExcclxuXHRcdCgweDI3MEEgPD0gY29kZSAmJiBjb2RlIDw9IDB4MjcwRCkgfHwgLy8gU28gICBbNF0gUkFJU0VEIEZJU1QuLldSSVRJTkcgSEFORFxyXG5cdFx0MHgxRjM4NSA9PSBjb2RlIHx8IC8vIFNvICAgICAgIEZBVEhFUiBDSFJJU1RNQVNcclxuXHRcdCgweDFGM0MyIDw9IGNvZGUgJiYgY29kZSA8PSAweDFGM0M0KSB8fCAvLyBTbyAgIFszXSBTTk9XQk9BUkRFUi4uU1VSRkVSXHJcblx0XHQweDFGM0M3ID09IGNvZGUgfHwgLy8gU28gICAgICAgSE9SU0UgUkFDSU5HXHJcblx0XHQoMHgxRjNDQSA8PSBjb2RlICYmIGNvZGUgPD0gMHgxRjNDQykgfHwgLy8gU28gICBbM10gU1dJTU1FUi4uR09MRkVSXHJcblx0XHQoMHgxRjQ0MiA8PSBjb2RlICYmIGNvZGUgPD0gMHgxRjQ0MykgfHwgLy8gU28gICBbMl0gRUFSLi5OT1NFXHJcblx0XHQoMHgxRjQ0NiA8PSBjb2RlICYmIGNvZGUgPD0gMHgxRjQ1MCkgfHwgLy8gU28gIFsxMV0gV0hJVEUgVVAgUE9JTlRJTkcgQkFDS0hBTkQgSU5ERVguLk9QRU4gSEFORFMgU0lHTlxyXG5cdFx0MHgxRjQ2RSA9PSBjb2RlIHx8IC8vIFNvICAgICAgIFBPTElDRSBPRkZJQ0VSXHJcblx0XHQoMHgxRjQ3MCA8PSBjb2RlICYmIGNvZGUgPD0gMHgxRjQ3OCkgfHwgLy8gU28gICBbOV0gQlJJREUgV0lUSCBWRUlMLi5QUklOQ0VTU1xyXG5cdFx0MHgxRjQ3QyA9PSBjb2RlIHx8IC8vIFNvICAgICAgIEJBQlkgQU5HRUxcclxuXHRcdCgweDFGNDgxIDw9IGNvZGUgJiYgY29kZSA8PSAweDFGNDgzKSB8fCAvLyBTbyAgIFszXSBJTkZPUk1BVElPTiBERVNLIFBFUlNPTi4uREFOQ0VSXHJcblx0XHQoMHgxRjQ4NSA8PSBjb2RlICYmIGNvZGUgPD0gMHgxRjQ4NykgfHwgLy8gU28gICBbM10gTkFJTCBQT0xJU0guLkhBSVJDVVRcclxuXHRcdDB4MUY0QUEgPT0gY29kZSB8fCAvLyBTbyAgICAgICBGTEVYRUQgQklDRVBTXHJcblx0XHQoMHgxRjU3NCA8PSBjb2RlICYmIGNvZGUgPD0gMHgxRjU3NSkgfHwgLy8gU28gICBbMl0gTUFOIElOIEJVU0lORVNTIFNVSVQgTEVWSVRBVElORy4uU0xFVVRIIE9SIFNQWVxyXG5cdFx0MHgxRjU3QSA9PSBjb2RlIHx8IC8vIFNvICAgICAgIE1BTiBEQU5DSU5HXHJcblx0XHQweDFGNTkwID09IGNvZGUgfHwgLy8gU28gICAgICAgUkFJU0VEIEhBTkQgV0lUSCBGSU5HRVJTIFNQTEFZRURcclxuXHRcdCgweDFGNTk1IDw9IGNvZGUgJiYgY29kZSA8PSAweDFGNTk2KSB8fCAvLyBTbyAgIFsyXSBSRVZFUlNFRCBIQU5EIFdJVEggTUlERExFIEZJTkdFUiBFWFRFTkRFRC4uUkFJU0VEIEhBTkQgV0lUSCBQQVJUIEJFVFdFRU4gTUlERExFIEFORCBSSU5HIEZJTkdFUlNcclxuXHRcdCgweDFGNjQ1IDw9IGNvZGUgJiYgY29kZSA8PSAweDFGNjQ3KSB8fCAvLyBTbyAgIFszXSBGQUNFIFdJVEggTk8gR09PRCBHRVNUVVJFLi5QRVJTT04gQk9XSU5HIERFRVBMWVxyXG5cdFx0KDB4MUY2NEIgPD0gY29kZSAmJiBjb2RlIDw9IDB4MUY2NEYpIHx8IC8vIFNvICAgWzVdIEhBUFBZIFBFUlNPTiBSQUlTSU5HIE9ORSBIQU5ELi5QRVJTT04gV0lUSCBGT0xERUQgSEFORFNcclxuXHRcdDB4MUY2QTMgPT0gY29kZSB8fCAvLyBTbyAgICAgICBST1dCT0FUXHJcblx0XHQoMHgxRjZCNCA8PSBjb2RlICYmIGNvZGUgPD0gMHgxRjZCNikgfHwgLy8gU28gICBbM10gQklDWUNMSVNULi5QRURFU1RSSUFOXHJcblx0XHQweDFGNkMwID09IGNvZGUgfHwgLy8gU28gICAgICAgQkFUSFxyXG5cdFx0MHgxRjZDQyA9PSBjb2RlIHx8IC8vIFNvICAgICAgIFNMRUVQSU5HIEFDQ09NTU9EQVRJT05cclxuXHRcdCgweDFGOTE4IDw9IGNvZGUgJiYgY29kZSA8PSAweDFGOTFDKSB8fCAvLyBTbyAgIFs1XSBTSUdOIE9GIFRIRSBIT1JOUy4uUklHSFQtRkFDSU5HIEZJU1RcclxuXHRcdCgweDFGOTFFIDw9IGNvZGUgJiYgY29kZSA8PSAweDFGOTFGKSB8fCAvLyBTbyAgIFsyXSBIQU5EIFdJVEggSU5ERVggQU5EIE1JRERMRSBGSU5HRVJTIENST1NTRUQuLkkgTE9WRSBZT1UgSEFORCBTSUdOXHJcblx0XHQweDFGOTI2ID09IGNvZGUgfHwgLy8gU28gICAgICAgRkFDRSBQQUxNXHJcblx0XHQoMHgxRjkzMCA8PSBjb2RlICYmIGNvZGUgPD0gMHgxRjkzOSkgfHwgLy8gU28gIFsxMF0gUFJFR05BTlQgV09NQU4uLkpVR0dMSU5HXHJcblx0XHQoMHgxRjkzRCA8PSBjb2RlICYmIGNvZGUgPD0gMHgxRjkzRSkgfHwgLy8gU28gICBbMl0gV0FURVIgUE9MTy4uSEFOREJBTExcclxuXHRcdCgweDFGOUQxIDw9IGNvZGUgJiYgY29kZSA8PSAweDFGOUREKSAvLyBTbyAgWzEzXSBBRFVMVC4uRUxGXHJcblx0XHQpe1xyXG5cdFx0XHRyZXR1cm4gRV9CYXNlO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmKFxyXG5cdFx0KDB4MUYzRkIgPD0gY29kZSAmJiBjb2RlIDw9IDB4MUYzRkYpIC8vIFNrICAgWzVdIEVNT0pJIE1PRElGSUVSIEZJVFpQQVRSSUNLIFRZUEUtMS0yLi5FTU9KSSBNT0RJRklFUiBGSVRaUEFUUklDSyBUWVBFLTZcclxuXHRcdCl7XHJcblx0XHRcdHJldHVybiBFX01vZGlmaWVyO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmKFxyXG5cdFx0MHgyMDBEID09IGNvZGUgLy8gQ2YgICAgICAgWkVSTyBXSURUSCBKT0lORVJcclxuXHRcdCl7XHJcblx0XHRcdHJldHVybiBaV0o7XHJcblx0XHR9XHJcblxyXG5cdFx0aWYoXHJcblx0XHQweDI2NDAgPT0gY29kZSB8fCAvLyBTbyAgICAgICBGRU1BTEUgU0lHTlxyXG5cdFx0MHgyNjQyID09IGNvZGUgfHwgLy8gU28gICAgICAgTUFMRSBTSUdOXHJcblx0XHQoMHgyNjk1IDw9IGNvZGUgJiYgY29kZSA8PSAweDI2OTYpIHx8IC8vIFNvICAgWzJdIFNUQUZGIE9GIEFFU0NVTEFQSVVTLi5TQ0FMRVNcclxuXHRcdDB4MjcwOCA9PSBjb2RlIHx8IC8vIFNvICAgICAgIEFJUlBMQU5FXHJcblx0XHQweDI3NjQgPT0gY29kZSB8fCAvLyBTbyAgICAgICBIRUFWWSBCTEFDSyBIRUFSVFxyXG5cdFx0MHgxRjMwOCA9PSBjb2RlIHx8IC8vIFNvICAgICAgIFJBSU5CT1dcclxuXHRcdDB4MUYzM0UgPT0gY29kZSB8fCAvLyBTbyAgICAgICBFQVIgT0YgUklDRVxyXG5cdFx0MHgxRjM3MyA9PSBjb2RlIHx8IC8vIFNvICAgICAgIENPT0tJTkdcclxuXHRcdDB4MUYzOTMgPT0gY29kZSB8fCAvLyBTbyAgICAgICBHUkFEVUFUSU9OIENBUFxyXG5cdFx0MHgxRjNBNCA9PSBjb2RlIHx8IC8vIFNvICAgICAgIE1JQ1JPUEhPTkVcclxuXHRcdDB4MUYzQTggPT0gY29kZSB8fCAvLyBTbyAgICAgICBBUlRJU1QgUEFMRVRURVxyXG5cdFx0MHgxRjNFQiA9PSBjb2RlIHx8IC8vIFNvICAgICAgIFNDSE9PTFxyXG5cdFx0MHgxRjNFRCA9PSBjb2RlIHx8IC8vIFNvICAgICAgIEZBQ1RPUllcclxuXHRcdDB4MUY0OEIgPT0gY29kZSB8fCAvLyBTbyAgICAgICBLSVNTIE1BUktcclxuXHRcdCgweDFGNEJCIDw9IGNvZGUgJiYgY29kZSA8PSAweDFGNEJDKSB8fCAvLyBTbyAgIFsyXSBQRVJTT05BTCBDT01QVVRFUi4uQlJJRUZDQVNFXHJcblx0XHQweDFGNTI3ID09IGNvZGUgfHwgLy8gU28gICAgICAgV1JFTkNIXHJcblx0XHQweDFGNTJDID09IGNvZGUgfHwgLy8gU28gICAgICAgTUlDUk9TQ09QRVxyXG5cdFx0MHgxRjVFOCA9PSBjb2RlIHx8IC8vIFNvICAgICAgIExFRlQgU1BFRUNIIEJVQkJMRVxyXG5cdFx0MHgxRjY4MCA9PSBjb2RlIHx8IC8vIFNvICAgICAgIFJPQ0tFVFxyXG5cdFx0MHgxRjY5MiA9PSBjb2RlIC8vIFNvICAgICAgIEZJUkUgRU5HSU5FXHJcblx0XHQpe1xyXG5cdFx0XHRyZXR1cm4gR2x1ZV9BZnRlcl9ad2o7XHJcblx0XHR9XHJcblxyXG5cdFx0aWYoXHJcblx0XHQoMHgxRjQ2NiA8PSBjb2RlICYmIGNvZGUgPD0gMHgxRjQ2OSkgLy8gU28gICBbNF0gQk9ZLi5XT01BTlxyXG5cdFx0KXtcclxuXHRcdFx0cmV0dXJuIEVfQmFzZV9HQVo7XHJcblx0XHR9XHJcblx0XHRcclxuXHRcdFxyXG5cdFx0Ly9hbGwgdW5saXN0ZWQgY2hhcmFjdGVycyBoYXZlIGEgZ3JhcGhlbWUgYnJlYWsgcHJvcGVydHkgb2YgXCJPdGhlclwiXHJcblx0XHRyZXR1cm4gT3RoZXI7XHJcblx0fVxyXG5cdHJldHVybiB0aGlzO1xyXG59XHJcblxyXG5pZiAodHlwZW9mIG1vZHVsZSAhPSAndW5kZWZpbmVkJyAmJiBtb2R1bGUuZXhwb3J0cykge1xyXG4gICAgbW9kdWxlLmV4cG9ydHMgPSBHcmFwaGVtZVNwbGl0dGVyO1xyXG59XHJcbiIsICJjb25zdCBBTlNJX1NFUVVFTkNFID0gL14oLio/KShcXHgxYlxcW1tebV0rbXxcXHgxYlxcXTg7Oy4qPyhcXHgxYlxcXFx8XFx1MDAwNykpLztcblxubGV0IHNwbGl0R3JhcGhlbWVzO1xuXG5mdW5jdGlvbiBnZXRTcGxpdHRlcigpIHtcbiAgaWYgKHNwbGl0R3JhcGhlbWVzKVxuICAgIHJldHVybiBzcGxpdEdyYXBoZW1lcztcblxuICAvLyBJbnRsLlNlZ21lbnRlciBpcyBwYXJ0IG9mIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLWludGwtc2VnbWVudGVyXG4gIC8vIEl0IGdvdCBpbnRyb2R1Y2VkIGluIHY4IDguOCAoTm9kZSAxNi4wLjApLlxuICAvLyBUT0RPOiBzdG9wIHVzaW5nIGdyYXBoZW1lLXNwbGl0dGVyIGFmdGVyIHN1cHBvcnQgZm9yIE5vZGUgMTQgaXMgZHJvcHBlZC5cbiAgaWYgKHR5cGVvZiBJbnRsLlNlZ21lbnRlciAhPT0gYHVuZGVmaW5lZGApIHtcbiAgICBjb25zdCBzZWdtZW50ZXIgPSBuZXcgSW50bC5TZWdtZW50ZXIoYGVuYCwge2dyYW51bGFyaXR5OiBgZ3JhcGhlbWVgfSk7XG4gICAgcmV0dXJuIHNwbGl0R3JhcGhlbWVzID0gdGV4dCA9PiBBcnJheS5mcm9tKHNlZ21lbnRlci5zZWdtZW50KHRleHQpLCAoe3NlZ21lbnR9KSA9PiBzZWdtZW50KTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBHcmFwaGVtZVNwbGl0dGVyID0gcmVxdWlyZShgZ3JhcGhlbWUtc3BsaXR0ZXJgKTtcbiAgICBjb25zdCBzcGxpdHRlciA9IG5ldyBHcmFwaGVtZVNwbGl0dGVyKCk7XG4gICAgcmV0dXJuIHNwbGl0R3JhcGhlbWVzID0gdGV4dCA9PiBzcGxpdHRlci5zcGxpdEdyYXBoZW1lcyh0ZXh0KTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IChvcmlnLCBhdCA9IDAsIHVudGlsID0gb3JpZy5sZW5ndGgpID0+IHtcbiAgLy8gQmVjYXVzZSB0byBkbyB0aGlzIHdlJ2QgbmVlZCB0byBrbm93IHRoZSBwcmludGFibGUgbGVuZ3RoIG9mIHRoZSBzdHJpbmcsXG4gIC8vIHdoaWNoIHdvdWxkIHJlcXVpcmUgdG8gZG8gdHdvIHBhc3NlcyAob3Igd291bGQgY29tcGxleGlmeSB0aGUgbWFpbiBvbmUpXG4gIGlmIChhdCA8IDAgfHwgdW50aWwgPCAwKVxuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKGBOZWdhdGl2ZSBpbmRpY2VzIGFyZW4ndCBzdXBwb3J0ZWQgYnkgdGhpcyBpbXBsZW1lbnRhdGlvbmApO1xuXG4gIGNvbnN0IGxlbmd0aCA9IHVudGlsIC0gYXQ7XG5cbiAgbGV0IG91dHB1dCA9IGBgO1xuXG4gIGxldCBza2lwcGVkID0gMDtcbiAgbGV0IHZpc2libGUgPSAwO1xuXG4gIHdoaWxlIChvcmlnLmxlbmd0aCA+IDApIHtcbiAgICBjb25zdCBsb29rdXAgPSBvcmlnLm1hdGNoKEFOU0lfU0VRVUVOQ0UpIHx8IFtvcmlnLCBvcmlnLCB1bmRlZmluZWRdO1xuICAgIGxldCBncmFwaGVtZXMgPSBnZXRTcGxpdHRlcigpKGxvb2t1cFsxXSk7XG5cbiAgICBjb25zdCBza2lwcGluZyA9IE1hdGgubWluKGF0IC0gc2tpcHBlZCwgZ3JhcGhlbWVzLmxlbmd0aCk7XG4gICAgZ3JhcGhlbWVzID0gZ3JhcGhlbWVzLnNsaWNlKHNraXBwaW5nKTtcblxuICAgIGNvbnN0IGRpc3BsYXlpbmcgPSBNYXRoLm1pbihsZW5ndGggLSB2aXNpYmxlLCBncmFwaGVtZXMubGVuZ3RoKTtcbiAgICBvdXRwdXQgKz0gZ3JhcGhlbWVzLnNsaWNlKDAsIGRpc3BsYXlpbmcpLmpvaW4oYGApO1xuXG4gICAgc2tpcHBlZCArPSBza2lwcGluZztcbiAgICB2aXNpYmxlICs9IGRpc3BsYXlpbmc7XG5cbiAgICBpZiAodHlwZW9mIGxvb2t1cFsyXSAhPT0gYHVuZGVmaW5lZGApXG4gICAgICBvdXRwdXQgKz0gbG9va3VwWzJdO1xuXG4gICAgb3JpZyA9IG9yaWcuc2xpY2UobG9va3VwWzBdLmxlbmd0aCk7XG4gIH1cblxuICByZXR1cm4gb3V0cHV0O1xufTtcbiIsICJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuU3RyZWFtUmVwb3J0ID0gZXhwb3J0cy5mb3JtYXROYW1lV2l0aEh5cGVybGluayA9IGV4cG9ydHMuZm9ybWF0TmFtZSA9IHZvaWQgMDtcbmNvbnN0IHRzbGliXzEgPSByZXF1aXJlKFwidHNsaWJcIik7XG5jb25zdCBzbGljZV9hbnNpXzEgPSB0c2xpYl8xLl9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiQGFyY2FuaXMvc2xpY2UtYW5zaVwiKSk7XG5jb25zdCBjaV9pbmZvXzEgPSB0c2xpYl8xLl9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiY2ktaW5mb1wiKSk7XG5jb25zdCBNZXNzYWdlTmFtZV8xID0gcmVxdWlyZShcIi4vTWVzc2FnZU5hbWVcIik7XG5jb25zdCBSZXBvcnRfMSA9IHJlcXVpcmUoXCIuL1JlcG9ydFwiKTtcbmNvbnN0IGZvcm1hdFV0aWxzID0gdHNsaWJfMS5fX2ltcG9ydFN0YXIocmVxdWlyZShcIi4vZm9ybWF0VXRpbHNcIikpO1xuY29uc3Qgc3RydWN0VXRpbHMgPSB0c2xpYl8xLl9faW1wb3J0U3RhcihyZXF1aXJlKFwiLi9zdHJ1Y3RVdGlsc1wiKSk7XG5jb25zdCBQUk9HUkVTU19GUkFNRVMgPSBbYFx1MjgwQmAsIGBcdTI4MTlgLCBgXHUyODM5YCwgYFx1MjgzOGAsIGBcdTI4M0NgLCBgXHUyODM0YCwgYFx1MjgyNmAsIGBcdTI4MjdgLCBgXHUyODA3YCwgYFx1MjgwRmBdO1xuY29uc3QgUFJPR1JFU1NfSU5URVJWQUwgPSA4MDtcbmNvbnN0IEJBU0VfRk9SR0VUVEFCTEVfTkFNRVMgPSBuZXcgU2V0KFtNZXNzYWdlTmFtZV8xLk1lc3NhZ2VOYW1lLkZFVENIX05PVF9DQUNIRUQsIE1lc3NhZ2VOYW1lXzEuTWVzc2FnZU5hbWUuVU5VU0VEX0NBQ0hFX0VOVFJZXSk7XG5jb25zdCBCQVNFX0ZPUkdFVFRBQkxFX0JVRkZFUl9TSVpFID0gNTtcbmNvbnN0IEdST1VQID0gY2lfaW5mb18xLmRlZmF1bHQuR0lUSFVCX0FDVElPTlNcbiAgICA/IHsgc3RhcnQ6ICh3aGF0KSA9PiBgOjpncm91cDo6JHt3aGF0fVxcbmAsIGVuZDogKHdoYXQpID0+IGA6OmVuZGdyb3VwOjpcXG5gIH1cbiAgICA6IGNpX2luZm9fMS5kZWZhdWx0LlRSQVZJU1xuICAgICAgICA/IHsgc3RhcnQ6ICh3aGF0KSA9PiBgdHJhdmlzX2ZvbGQ6c3RhcnQ6JHt3aGF0fVxcbmAsIGVuZDogKHdoYXQpID0+IGB0cmF2aXNfZm9sZDplbmQ6JHt3aGF0fVxcbmAgfVxuICAgICAgICA6IGNpX2luZm9fMS5kZWZhdWx0LkdJVExBQlxuICAgICAgICAgICAgPyB7IHN0YXJ0OiAod2hhdCkgPT4gYHNlY3Rpb25fc3RhcnQ6JHtNYXRoLmZsb29yKERhdGUubm93KCkgLyAxMDAwKX06JHt3aGF0LnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvXFxXKy9nLCBgX2ApfVtjb2xsYXBzZWQ9dHJ1ZV1cXHJcXHgxYlswSyR7d2hhdH1cXG5gLCBlbmQ6ICh3aGF0KSA9PiBgc2VjdGlvbl9lbmQ6JHtNYXRoLmZsb29yKERhdGUubm93KCkgLyAxMDAwKX06JHt3aGF0LnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvXFxXKy9nLCBgX2ApfVxcclxceDFiWzBLYCB9XG4gICAgICAgICAgICA6IG51bGw7XG5jb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuLy8gV2Ugb25seSB3YW50IHRvIHN1cHBvcnQgZW52aXJvbm1lbnRzIHRoYXQgd2lsbCBvdXQtb2YtdGhlLWJveCBhY2NlcHQgdGhlXG4vLyBjaGFyYWN0ZXJzIHdlIHdhbnQgdG8gdXNlLiBPdGhlcnMgY2FuIGVuZm9yY2UgdGhlIHN0eWxlIGZyb20gdGhlIHByb2plY3Rcbi8vIGNvbmZpZ3VyYXRpb24uXG5jb25zdCBzdXBwb3J0c0Vtb2ppcyA9IFtgaVRlcm0uYXBwYCwgYEFwcGxlX1Rlcm1pbmFsYF0uaW5jbHVkZXMocHJvY2Vzcy5lbnYuVEVSTV9QUk9HUkFNKSB8fCAhIXByb2Nlc3MuZW52LldUX1NFU1NJT047XG5jb25zdCBtYWtlUmVjb3JkID0gKG9iaikgPT4gb2JqO1xuY29uc3QgUFJPR1JFU1NfU1RZTEVTID0gbWFrZVJlY29yZCh7XG4gICAgcGF0cmljazoge1xuICAgICAgICBkYXRlOiBbMTcsIDNdLFxuICAgICAgICBjaGFyczogW2BcdUQ4M0NcdURGNDBgLCBgXHVEODNDXHVERjMxYF0sXG4gICAgICAgIHNpemU6IDQwLFxuICAgIH0sXG4gICAgc2ltYmE6IHtcbiAgICAgICAgZGF0ZTogWzE5LCA3XSxcbiAgICAgICAgY2hhcnM6IFtgXHVEODNFXHVERDgxYCwgYFx1RDgzQ1x1REYzNGBdLFxuICAgICAgICBzaXplOiA0MCxcbiAgICB9LFxuICAgIGphY2s6IHtcbiAgICAgICAgZGF0ZTogWzMxLCAxMF0sXG4gICAgICAgIGNoYXJzOiBbYFx1RDgzQ1x1REY4M2AsIGBcdUQ4M0VcdUREODdgXSxcbiAgICAgICAgc2l6ZTogNDAsXG4gICAgfSxcbiAgICBob2dzZmF0aGVyOiB7XG4gICAgICAgIGRhdGU6IFszMSwgMTJdLFxuICAgICAgICBjaGFyczogW2BcdUQ4M0NcdURGODlgLCBgXHVEODNDXHVERjg0YF0sXG4gICAgICAgIHNpemU6IDQwLFxuICAgIH0sXG4gICAgZGVmYXVsdDoge1xuICAgICAgICBjaGFyczogW2A9YCwgYC1gXSxcbiAgICAgICAgc2l6ZTogODAsXG4gICAgfSxcbn0pO1xuY29uc3QgZGVmYXVsdFN0eWxlID0gKHN1cHBvcnRzRW1vamlzICYmIE9iamVjdC5rZXlzKFBST0dSRVNTX1NUWUxFUykuZmluZChuYW1lID0+IHtcbiAgICBjb25zdCBzdHlsZSA9IFBST0dSRVNTX1NUWUxFU1tuYW1lXTtcbiAgICBpZiAoc3R5bGUuZGF0ZSAmJiAoc3R5bGUuZGF0ZVswXSAhPT0gbm93LmdldERhdGUoKSB8fCBzdHlsZS5kYXRlWzFdICE9PSBub3cuZ2V0TW9udGgoKSArIDEpKVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIHRydWU7XG59KSkgfHwgYGRlZmF1bHRgO1xuZnVuY3Rpb24gZm9ybWF0TmFtZShuYW1lLCB7IGNvbmZpZ3VyYXRpb24sIGpzb24gfSkge1xuICAgIGlmICghY29uZmlndXJhdGlvbi5nZXQoYGVuYWJsZU1lc3NhZ2VOYW1lc2ApKVxuICAgICAgICByZXR1cm4gYGA7XG4gICAgY29uc3QgbnVtID0gbmFtZSA9PT0gbnVsbCA/IDAgOiBuYW1lO1xuICAgIGNvbnN0IGxhYmVsID0gKDAsIE1lc3NhZ2VOYW1lXzEuc3RyaW5naWZ5TWVzc2FnZU5hbWUpKG51bSk7XG4gICAgaWYgKCFqc29uICYmIG5hbWUgPT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIGZvcm1hdFV0aWxzLnByZXR0eShjb25maWd1cmF0aW9uLCBsYWJlbCwgYGdyZXlgKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHJldHVybiBsYWJlbDtcbiAgICB9XG59XG5leHBvcnRzLmZvcm1hdE5hbWUgPSBmb3JtYXROYW1lO1xuZnVuY3Rpb24gZm9ybWF0TmFtZVdpdGhIeXBlcmxpbmsobmFtZSwgeyBjb25maWd1cmF0aW9uLCBqc29uIH0pIHtcbiAgICBjb25zdCBjb2RlID0gZm9ybWF0TmFtZShuYW1lLCB7IGNvbmZpZ3VyYXRpb24sIGpzb24gfSk7XG4gICAgaWYgKCFjb2RlKVxuICAgICAgICByZXR1cm4gY29kZTtcbiAgICAvLyBEb24ndCBwcmludCBoeXBlcmxpbmtzIGZvciB0aGUgZ2VuZXJpYyBtZXNzYWdlc1xuICAgIGlmIChuYW1lID09PSBudWxsIHx8IG5hbWUgPT09IE1lc3NhZ2VOYW1lXzEuTWVzc2FnZU5hbWUuVU5OQU1FRClcbiAgICAgICAgcmV0dXJuIGNvZGU7XG4gICAgY29uc3QgZGVzYyA9IE1lc3NhZ2VOYW1lXzEuTWVzc2FnZU5hbWVbbmFtZV07XG4gICAgY29uc3QgaHJlZiA9IGBodHRwczovL3lhcm5wa2cuY29tL2FkdmFuY2VkL2Vycm9yLWNvZGVzIyR7Y29kZX0tLS0ke2Rlc2N9YC50b0xvd2VyQ2FzZSgpO1xuICAgIHJldHVybiBmb3JtYXRVdGlscy5hcHBseUh5cGVybGluayhjb25maWd1cmF0aW9uLCBjb2RlLCBocmVmKTtcbn1cbmV4cG9ydHMuZm9ybWF0TmFtZVdpdGhIeXBlcmxpbmsgPSBmb3JtYXROYW1lV2l0aEh5cGVybGluaztcbmNsYXNzIFN0cmVhbVJlcG9ydCBleHRlbmRzIFJlcG9ydF8xLlJlcG9ydCB7XG4gICAgc3RhdGljIGFzeW5jIHN0YXJ0KG9wdHMsIGNiKSB7XG4gICAgICAgIGNvbnN0IHJlcG9ydCA9IG5ldyB0aGlzKG9wdHMpO1xuICAgICAgICBjb25zdCBlbWl0V2FybmluZyA9IHByb2Nlc3MuZW1pdFdhcm5pbmc7XG4gICAgICAgIHByb2Nlc3MuZW1pdFdhcm5pbmcgPSAobWVzc2FnZSwgbmFtZSkgPT4ge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBtZXNzYWdlICE9PSBgc3RyaW5nYCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGVycm9yID0gbWVzc2FnZTtcbiAgICAgICAgICAgICAgICBtZXNzYWdlID0gZXJyb3IubWVzc2FnZTtcbiAgICAgICAgICAgICAgICBuYW1lID0gbmFtZSAhPT0gbnVsbCAmJiBuYW1lICE9PSB2b2lkIDAgPyBuYW1lIDogZXJyb3IubmFtZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGZ1bGxNZXNzYWdlID0gdHlwZW9mIG5hbWUgIT09IGB1bmRlZmluZWRgXG4gICAgICAgICAgICAgICAgPyBgJHtuYW1lfTogJHttZXNzYWdlfWBcbiAgICAgICAgICAgICAgICA6IG1lc3NhZ2U7XG4gICAgICAgICAgICByZXBvcnQucmVwb3J0V2FybmluZyhNZXNzYWdlTmFtZV8xLk1lc3NhZ2VOYW1lLlVOTkFNRUQsIGZ1bGxNZXNzYWdlKTtcbiAgICAgICAgfTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGF3YWl0IGNiKHJlcG9ydCk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICByZXBvcnQucmVwb3J0RXhjZXB0aW9uT25jZShlcnJvcik7XG4gICAgICAgIH1cbiAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICBhd2FpdCByZXBvcnQuZmluYWxpemUoKTtcbiAgICAgICAgICAgIHByb2Nlc3MuZW1pdFdhcm5pbmcgPSBlbWl0V2FybmluZztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVwb3J0O1xuICAgIH1cbiAgICBjb25zdHJ1Y3Rvcih7IGNvbmZpZ3VyYXRpb24sIHN0ZG91dCwganNvbiA9IGZhbHNlLCBpbmNsdWRlRm9vdGVyID0gdHJ1ZSwgaW5jbHVkZUxvZ3MgPSAhanNvbiwgaW5jbHVkZUluZm9zID0gaW5jbHVkZUxvZ3MsIGluY2x1ZGVXYXJuaW5ncyA9IGluY2x1ZGVMb2dzLCBmb3JnZXR0YWJsZUJ1ZmZlclNpemUgPSBCQVNFX0ZPUkdFVFRBQkxFX0JVRkZFUl9TSVpFLCBmb3JnZXR0YWJsZU5hbWVzID0gbmV3IFNldCgpLCB9KSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMudW5jb21taXR0ZWQgPSBuZXcgU2V0KCk7XG4gICAgICAgIHRoaXMuY2FjaGVIaXRDb3VudCA9IDA7XG4gICAgICAgIHRoaXMuY2FjaGVNaXNzQ291bnQgPSAwO1xuICAgICAgICB0aGlzLmxhc3RDYWNoZU1pc3MgPSBudWxsO1xuICAgICAgICB0aGlzLndhcm5pbmdDb3VudCA9IDA7XG4gICAgICAgIHRoaXMuZXJyb3JDb3VudCA9IDA7XG4gICAgICAgIHRoaXMuc3RhcnRUaW1lID0gRGF0ZS5ub3coKTtcbiAgICAgICAgdGhpcy5pbmRlbnQgPSAwO1xuICAgICAgICB0aGlzLnByb2dyZXNzID0gbmV3IE1hcCgpO1xuICAgICAgICB0aGlzLnByb2dyZXNzVGltZSA9IDA7XG4gICAgICAgIHRoaXMucHJvZ3Jlc3NGcmFtZSA9IDA7XG4gICAgICAgIHRoaXMucHJvZ3Jlc3NUaW1lb3V0ID0gbnVsbDtcbiAgICAgICAgdGhpcy5wcm9ncmVzc1N0eWxlID0gbnVsbDtcbiAgICAgICAgdGhpcy5wcm9ncmVzc01heFNjYWxlZFNpemUgPSBudWxsO1xuICAgICAgICB0aGlzLmZvcmdldHRhYmxlTGluZXMgPSBbXTtcbiAgICAgICAgZm9ybWF0VXRpbHMuYWRkTG9nRmlsdGVyU3VwcG9ydCh0aGlzLCB7IGNvbmZpZ3VyYXRpb24gfSk7XG4gICAgICAgIHRoaXMuY29uZmlndXJhdGlvbiA9IGNvbmZpZ3VyYXRpb247XG4gICAgICAgIHRoaXMuZm9yZ2V0dGFibGVCdWZmZXJTaXplID0gZm9yZ2V0dGFibGVCdWZmZXJTaXplO1xuICAgICAgICB0aGlzLmZvcmdldHRhYmxlTmFtZXMgPSBuZXcgU2V0KFsuLi5mb3JnZXR0YWJsZU5hbWVzLCAuLi5CQVNFX0ZPUkdFVFRBQkxFX05BTUVTXSk7XG4gICAgICAgIHRoaXMuaW5jbHVkZUZvb3RlciA9IGluY2x1ZGVGb290ZXI7XG4gICAgICAgIHRoaXMuaW5jbHVkZUluZm9zID0gaW5jbHVkZUluZm9zO1xuICAgICAgICB0aGlzLmluY2x1ZGVXYXJuaW5ncyA9IGluY2x1ZGVXYXJuaW5ncztcbiAgICAgICAgdGhpcy5qc29uID0ganNvbjtcbiAgICAgICAgdGhpcy5zdGRvdXQgPSBzdGRvdXQ7XG4gICAgICAgIC8vIFNldHVwIHByb2dyZXNzXG4gICAgICAgIGlmIChjb25maWd1cmF0aW9uLmdldChgZW5hYmxlUHJvZ3Jlc3NCYXJzYCkgJiYgIWpzb24gJiYgc3Rkb3V0LmlzVFRZICYmIHN0ZG91dC5jb2x1bW5zID4gMjIpIHtcbiAgICAgICAgICAgIGNvbnN0IHN0eWxlTmFtZSA9IGNvbmZpZ3VyYXRpb24uZ2V0KGBwcm9ncmVzc0JhclN0eWxlYCkgfHwgZGVmYXVsdFN0eWxlO1xuICAgICAgICAgICAgaWYgKCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoUFJPR1JFU1NfU1RZTEVTLCBzdHlsZU5hbWUpKVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQXNzZXJ0aW9uIGZhaWxlZDogSW52YWxpZCBwcm9ncmVzcyBiYXIgc3R5bGVgKTtcbiAgICAgICAgICAgIHRoaXMucHJvZ3Jlc3NTdHlsZSA9IFBST0dSRVNTX1NUWUxFU1tzdHlsZU5hbWVdO1xuICAgICAgICAgICAgY29uc3QgUEFEX0xFRlQgPSBgXHUyN0E0IFlOMDAwMDogXHUyNTBDIGAubGVuZ3RoO1xuICAgICAgICAgICAgY29uc3QgbWF4V2lkdGggPSBNYXRoLm1heCgwLCBNYXRoLm1pbihzdGRvdXQuY29sdW1ucyAtIFBBRF9MRUZULCA4MCkpO1xuICAgICAgICAgICAgdGhpcy5wcm9ncmVzc01heFNjYWxlZFNpemUgPSBNYXRoLmZsb29yKHRoaXMucHJvZ3Jlc3NTdHlsZS5zaXplICogbWF4V2lkdGggLyA4MCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaGFzRXJyb3JzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5lcnJvckNvdW50ID4gMDtcbiAgICB9XG4gICAgZXhpdENvZGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmhhc0Vycm9ycygpID8gMSA6IDA7XG4gICAgfVxuICAgIHJlcG9ydENhY2hlSGl0KGxvY2F0b3IpIHtcbiAgICAgICAgdGhpcy5jYWNoZUhpdENvdW50ICs9IDE7XG4gICAgfVxuICAgIHJlcG9ydENhY2hlTWlzcyhsb2NhdG9yLCBtZXNzYWdlKSB7XG4gICAgICAgIHRoaXMubGFzdENhY2hlTWlzcyA9IGxvY2F0b3I7XG4gICAgICAgIHRoaXMuY2FjaGVNaXNzQ291bnQgKz0gMTtcbiAgICAgICAgaWYgKHR5cGVvZiBtZXNzYWdlICE9PSBgdW5kZWZpbmVkYCAmJiAhdGhpcy5jb25maWd1cmF0aW9uLmdldChgcHJlZmVyQWdncmVnYXRlQ2FjaGVJbmZvYCkpIHtcbiAgICAgICAgICAgIHRoaXMucmVwb3J0SW5mbyhNZXNzYWdlTmFtZV8xLk1lc3NhZ2VOYW1lLkZFVENIX05PVF9DQUNIRUQsIG1lc3NhZ2UpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHN0YXJ0U2VjdGlvblN5bmMoeyByZXBvcnRIZWFkZXIsIHJlcG9ydEZvb3Rlciwgc2tpcElmRW1wdHkgfSwgY2IpIHtcbiAgICAgICAgY29uc3QgbWFyayA9IHsgY29tbWl0dGVkOiBmYWxzZSwgYWN0aW9uOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgcmVwb3J0SGVhZGVyID09PSBudWxsIHx8IHJlcG9ydEhlYWRlciA9PT0gdm9pZCAwID8gdm9pZCAwIDogcmVwb3J0SGVhZGVyKCk7XG4gICAgICAgICAgICB9IH07XG4gICAgICAgIGlmIChza2lwSWZFbXB0eSkge1xuICAgICAgICAgICAgdGhpcy51bmNvbW1pdHRlZC5hZGQobWFyayk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBtYXJrLmFjdGlvbigpO1xuICAgICAgICAgICAgbWFyay5jb21taXR0ZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGJlZm9yZSA9IERhdGUubm93KCk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXR1cm4gY2IoKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIHRoaXMucmVwb3J0RXhjZXB0aW9uT25jZShlcnJvcik7XG4gICAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgfVxuICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgIGNvbnN0IGFmdGVyID0gRGF0ZS5ub3coKTtcbiAgICAgICAgICAgIHRoaXMudW5jb21taXR0ZWQuZGVsZXRlKG1hcmspO1xuICAgICAgICAgICAgaWYgKG1hcmsuY29tbWl0dGVkKSB7XG4gICAgICAgICAgICAgICAgcmVwb3J0Rm9vdGVyID09PSBudWxsIHx8IHJlcG9ydEZvb3RlciA9PT0gdm9pZCAwID8gdm9pZCAwIDogcmVwb3J0Rm9vdGVyKGFmdGVyIC0gYmVmb3JlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBhc3luYyBzdGFydFNlY3Rpb25Qcm9taXNlKHsgcmVwb3J0SGVhZGVyLCByZXBvcnRGb290ZXIsIHNraXBJZkVtcHR5IH0sIGNiKSB7XG4gICAgICAgIGNvbnN0IG1hcmsgPSB7IGNvbW1pdHRlZDogZmFsc2UsIGFjdGlvbjogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHJlcG9ydEhlYWRlciA9PT0gbnVsbCB8fCByZXBvcnRIZWFkZXIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHJlcG9ydEhlYWRlcigpO1xuICAgICAgICAgICAgfSB9O1xuICAgICAgICBpZiAoc2tpcElmRW1wdHkpIHtcbiAgICAgICAgICAgIHRoaXMudW5jb21taXR0ZWQuYWRkKG1hcmspO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgbWFyay5hY3Rpb24oKTtcbiAgICAgICAgICAgIG1hcmsuY29tbWl0dGVkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBiZWZvcmUgPSBEYXRlLm5vdygpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmV0dXJuIGF3YWl0IGNiKCk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICB0aGlzLnJlcG9ydEV4Y2VwdGlvbk9uY2UoZXJyb3IpO1xuICAgICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgIH1cbiAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICBjb25zdCBhZnRlciA9IERhdGUubm93KCk7XG4gICAgICAgICAgICB0aGlzLnVuY29tbWl0dGVkLmRlbGV0ZShtYXJrKTtcbiAgICAgICAgICAgIGlmIChtYXJrLmNvbW1pdHRlZCkge1xuICAgICAgICAgICAgICAgIHJlcG9ydEZvb3RlciA9PT0gbnVsbCB8fCByZXBvcnRGb290ZXIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHJlcG9ydEZvb3RlcihhZnRlciAtIGJlZm9yZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgc3RhcnRUaW1lckltcGwod2hhdCwgb3B0cywgY2IpIHtcbiAgICAgICAgY29uc3QgcmVhbE9wdHMgPSB0eXBlb2Ygb3B0cyA9PT0gYGZ1bmN0aW9uYCA/IHt9IDogb3B0cztcbiAgICAgICAgY29uc3QgcmVhbENiID0gdHlwZW9mIG9wdHMgPT09IGBmdW5jdGlvbmAgPyBvcHRzIDogY2I7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjYjogcmVhbENiLFxuICAgICAgICAgICAgcmVwb3J0SGVhZGVyOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXBvcnRJbmZvKG51bGwsIGBcdTI1MEMgJHt3aGF0fWApO1xuICAgICAgICAgICAgICAgIHRoaXMuaW5kZW50ICs9IDE7XG4gICAgICAgICAgICAgICAgaWYgKEdST1VQICE9PSBudWxsICYmICF0aGlzLmpzb24gJiYgdGhpcy5pbmNsdWRlSW5mb3MpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGRvdXQud3JpdGUoR1JPVVAuc3RhcnQod2hhdCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByZXBvcnRGb290ZXI6IGVsYXBzZWRUaW1lID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmluZGVudCAtPSAxO1xuICAgICAgICAgICAgICAgIGlmIChHUk9VUCAhPT0gbnVsbCAmJiAhdGhpcy5qc29uICYmIHRoaXMuaW5jbHVkZUluZm9zKVxuICAgICAgICAgICAgICAgICAgICB0aGlzLnN0ZG91dC53cml0ZShHUk9VUC5lbmQod2hhdCkpO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbmZpZ3VyYXRpb24uZ2V0KGBlbmFibGVUaW1lcnNgKSAmJiBlbGFwc2VkVGltZSA+IDIwMCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlcG9ydEluZm8obnVsbCwgYFx1MjUxNCBDb21wbGV0ZWQgaW4gJHtmb3JtYXRVdGlscy5wcmV0dHkodGhpcy5jb25maWd1cmF0aW9uLCBlbGFwc2VkVGltZSwgZm9ybWF0VXRpbHMuVHlwZS5EVVJBVElPTil9YCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlcG9ydEluZm8obnVsbCwgYFx1MjUxNCBDb21wbGV0ZWRgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2tpcElmRW1wdHk6IHJlYWxPcHRzLnNraXBJZkVtcHR5LFxuICAgICAgICB9O1xuICAgIH1cbiAgICBzdGFydFRpbWVyU3luYyh3aGF0LCBvcHRzLCBjYikge1xuICAgICAgICBjb25zdCB7IGNiOiByZWFsQ2IsIC4uLnNlY3Rpb25PcHMgfSA9IHRoaXMuc3RhcnRUaW1lckltcGwod2hhdCwgb3B0cywgY2IpO1xuICAgICAgICByZXR1cm4gdGhpcy5zdGFydFNlY3Rpb25TeW5jKHNlY3Rpb25PcHMsIHJlYWxDYik7XG4gICAgfVxuICAgIGFzeW5jIHN0YXJ0VGltZXJQcm9taXNlKHdoYXQsIG9wdHMsIGNiKSB7XG4gICAgICAgIGNvbnN0IHsgY2I6IHJlYWxDYiwgLi4uc2VjdGlvbk9wcyB9ID0gdGhpcy5zdGFydFRpbWVySW1wbCh3aGF0LCBvcHRzLCBjYik7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YXJ0U2VjdGlvblByb21pc2Uoc2VjdGlvbk9wcywgcmVhbENiKTtcbiAgICB9XG4gICAgYXN5bmMgc3RhcnRDYWNoZVJlcG9ydChjYikge1xuICAgICAgICBjb25zdCBjYWNoZUluZm8gPSB0aGlzLmNvbmZpZ3VyYXRpb24uZ2V0KGBwcmVmZXJBZ2dyZWdhdGVDYWNoZUluZm9gKVxuICAgICAgICAgICAgPyB7IGNhY2hlSGl0Q291bnQ6IHRoaXMuY2FjaGVIaXRDb3VudCwgY2FjaGVNaXNzQ291bnQ6IHRoaXMuY2FjaGVNaXNzQ291bnQgfVxuICAgICAgICAgICAgOiBudWxsO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmV0dXJuIGF3YWl0IGNiKCk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICB0aGlzLnJlcG9ydEV4Y2VwdGlvbk9uY2UoZXJyb3IpO1xuICAgICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgIH1cbiAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICBpZiAoY2FjaGVJbmZvICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXBvcnRDYWNoZUNoYW5nZXMoY2FjaGVJbmZvKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICByZXBvcnRTZXBhcmF0b3IoKSB7XG4gICAgICAgIGlmICh0aGlzLmluZGVudCA9PT0gMCkge1xuICAgICAgICAgICAgdGhpcy53cml0ZUxpbmVXaXRoRm9yZ2V0dGFibGVSZXNldChgYCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnJlcG9ydEluZm8obnVsbCwgYGApO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJlcG9ydEluZm8obmFtZSwgdGV4dCkge1xuICAgICAgICBpZiAoIXRoaXMuaW5jbHVkZUluZm9zKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB0aGlzLmNvbW1pdCgpO1xuICAgICAgICBjb25zdCBmb3JtYXR0ZWROYW1lID0gdGhpcy5mb3JtYXROYW1lV2l0aEh5cGVybGluayhuYW1lKTtcbiAgICAgICAgY29uc3QgcHJlZml4ID0gZm9ybWF0dGVkTmFtZSA/IGAke2Zvcm1hdHRlZE5hbWV9OiBgIDogYGA7XG4gICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBgJHtmb3JtYXRVdGlscy5wcmV0dHkodGhpcy5jb25maWd1cmF0aW9uLCBgXHUyN0E0YCwgYGJsdWVCcmlnaHRgKX0gJHtwcmVmaXh9JHt0aGlzLmZvcm1hdEluZGVudCgpfSR7dGV4dH1gO1xuICAgICAgICBpZiAoIXRoaXMuanNvbikge1xuICAgICAgICAgICAgaWYgKHRoaXMuZm9yZ2V0dGFibGVOYW1lcy5oYXMobmFtZSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcmdldHRhYmxlTGluZXMucHVzaChtZXNzYWdlKTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5mb3JnZXR0YWJsZUxpbmVzLmxlbmd0aCA+IHRoaXMuZm9yZ2V0dGFibGVCdWZmZXJTaXplKSB7XG4gICAgICAgICAgICAgICAgICAgIHdoaWxlICh0aGlzLmZvcmdldHRhYmxlTGluZXMubGVuZ3RoID4gdGhpcy5mb3JnZXR0YWJsZUJ1ZmZlclNpemUpXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcmdldHRhYmxlTGluZXMuc2hpZnQoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy53cml0ZUxpbmVzKHRoaXMuZm9yZ2V0dGFibGVMaW5lcywgeyB0cnVuY2F0ZTogdHJ1ZSB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMud3JpdGVMaW5lKG1lc3NhZ2UsIHsgdHJ1bmNhdGU6IHRydWUgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy53cml0ZUxpbmVXaXRoRm9yZ2V0dGFibGVSZXNldChtZXNzYWdlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucmVwb3J0SnNvbih7IHR5cGU6IGBpbmZvYCwgbmFtZSwgZGlzcGxheU5hbWU6IHRoaXMuZm9ybWF0TmFtZShuYW1lKSwgaW5kZW50OiB0aGlzLmZvcm1hdEluZGVudCgpLCBkYXRhOiB0ZXh0IH0pO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJlcG9ydFdhcm5pbmcobmFtZSwgdGV4dCkge1xuICAgICAgICB0aGlzLndhcm5pbmdDb3VudCArPSAxO1xuICAgICAgICBpZiAoIXRoaXMuaW5jbHVkZVdhcm5pbmdzKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB0aGlzLmNvbW1pdCgpO1xuICAgICAgICBjb25zdCBmb3JtYXR0ZWROYW1lID0gdGhpcy5mb3JtYXROYW1lV2l0aEh5cGVybGluayhuYW1lKTtcbiAgICAgICAgY29uc3QgcHJlZml4ID0gZm9ybWF0dGVkTmFtZSA/IGAke2Zvcm1hdHRlZE5hbWV9OiBgIDogYGA7XG4gICAgICAgIGlmICghdGhpcy5qc29uKSB7XG4gICAgICAgICAgICB0aGlzLndyaXRlTGluZVdpdGhGb3JnZXR0YWJsZVJlc2V0KGAke2Zvcm1hdFV0aWxzLnByZXR0eSh0aGlzLmNvbmZpZ3VyYXRpb24sIGBcdTI3QTRgLCBgeWVsbG93QnJpZ2h0YCl9ICR7cHJlZml4fSR7dGhpcy5mb3JtYXRJbmRlbnQoKX0ke3RleHR9YCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnJlcG9ydEpzb24oeyB0eXBlOiBgd2FybmluZ2AsIG5hbWUsIGRpc3BsYXlOYW1lOiB0aGlzLmZvcm1hdE5hbWUobmFtZSksIGluZGVudDogdGhpcy5mb3JtYXRJbmRlbnQoKSwgZGF0YTogdGV4dCB9KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXBvcnRFcnJvcihuYW1lLCB0ZXh0KSB7XG4gICAgICAgIHRoaXMuZXJyb3JDb3VudCArPSAxO1xuICAgICAgICB0aGlzLmNvbW1pdCgpO1xuICAgICAgICBjb25zdCBmb3JtYXR0ZWROYW1lID0gdGhpcy5mb3JtYXROYW1lV2l0aEh5cGVybGluayhuYW1lKTtcbiAgICAgICAgY29uc3QgcHJlZml4ID0gZm9ybWF0dGVkTmFtZSA/IGAke2Zvcm1hdHRlZE5hbWV9OiBgIDogYGA7XG4gICAgICAgIGlmICghdGhpcy5qc29uKSB7XG4gICAgICAgICAgICB0aGlzLndyaXRlTGluZVdpdGhGb3JnZXR0YWJsZVJlc2V0KGAke2Zvcm1hdFV0aWxzLnByZXR0eSh0aGlzLmNvbmZpZ3VyYXRpb24sIGBcdTI3QTRgLCBgcmVkQnJpZ2h0YCl9ICR7cHJlZml4fSR7dGhpcy5mb3JtYXRJbmRlbnQoKX0ke3RleHR9YCwgeyB0cnVuY2F0ZTogZmFsc2UgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnJlcG9ydEpzb24oeyB0eXBlOiBgZXJyb3JgLCBuYW1lLCBkaXNwbGF5TmFtZTogdGhpcy5mb3JtYXROYW1lKG5hbWUpLCBpbmRlbnQ6IHRoaXMuZm9ybWF0SW5kZW50KCksIGRhdGE6IHRleHQgfSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmVwb3J0UHJvZ3Jlc3MocHJvZ3Jlc3NJdCkge1xuICAgICAgICBpZiAodGhpcy5wcm9ncmVzc1N0eWxlID09PSBudWxsKVxuICAgICAgICAgICAgcmV0dXJuIHsgLi4uUHJvbWlzZS5yZXNvbHZlKCksIHN0b3A6ICgpID0+IHsgfSB9O1xuICAgICAgICBpZiAocHJvZ3Jlc3NJdC5oYXNQcm9ncmVzcyAmJiBwcm9ncmVzc0l0Lmhhc1RpdGxlKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmltcGxlbWVudGVkOiBQcm9ncmVzcyBiYXJzIGNhbid0IGhhdmUgYm90aCBwcm9ncmVzcyBhbmQgdGl0bGVzLmApO1xuICAgICAgICBsZXQgc3RvcHBlZCA9IGZhbHNlO1xuICAgICAgICBjb25zdCBwcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKCkudGhlbihhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBwcm9ncmVzc0RlZmluaXRpb24gPSB7XG4gICAgICAgICAgICAgICAgcHJvZ3Jlc3M6IHByb2dyZXNzSXQuaGFzUHJvZ3Jlc3MgPyAwIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9ncmVzc0l0Lmhhc1RpdGxlID8gYGAgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdGhpcy5wcm9ncmVzcy5zZXQocHJvZ3Jlc3NJdCwge1xuICAgICAgICAgICAgICAgIGRlZmluaXRpb246IHByb2dyZXNzRGVmaW5pdGlvbixcbiAgICAgICAgICAgICAgICBsYXN0U2NhbGVkU2l6ZTogcHJvZ3Jlc3NJdC5oYXNQcm9ncmVzcyA/IC0xIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIGxhc3RUaXRsZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLnJlZnJlc2hQcm9ncmVzcyh7IGRlbHRhOiAtMSB9KTtcbiAgICAgICAgICAgIGZvciBhd2FpdCAoY29uc3QgeyBwcm9ncmVzcywgdGl0bGUgfSBvZiBwcm9ncmVzc0l0KSB7XG4gICAgICAgICAgICAgICAgaWYgKHN0b3BwZWQpXG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGlmIChwcm9ncmVzc0RlZmluaXRpb24ucHJvZ3Jlc3MgPT09IHByb2dyZXNzICYmIHByb2dyZXNzRGVmaW5pdGlvbi50aXRsZSA9PT0gdGl0bGUpXG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIHByb2dyZXNzRGVmaW5pdGlvbi5wcm9ncmVzcyA9IHByb2dyZXNzO1xuICAgICAgICAgICAgICAgIHByb2dyZXNzRGVmaW5pdGlvbi50aXRsZSA9IHRpdGxlO1xuICAgICAgICAgICAgICAgIHRoaXMucmVmcmVzaFByb2dyZXNzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzdG9wKCk7XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBzdG9wID0gKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHN0b3BwZWQpXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgc3RvcHBlZCA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLnByb2dyZXNzLmRlbGV0ZShwcm9ncmVzc0l0KTtcbiAgICAgICAgICAgIHRoaXMucmVmcmVzaFByb2dyZXNzKHsgZGVsdGE6ICsxIH0pO1xuICAgICAgICB9O1xuICAgICAgICByZXR1cm4geyAuLi5wcm9taXNlLCBzdG9wIH07XG4gICAgfVxuICAgIHJlcG9ydEpzb24oZGF0YSkge1xuICAgICAgICBpZiAodGhpcy5qc29uKSB7XG4gICAgICAgICAgICB0aGlzLndyaXRlTGluZVdpdGhGb3JnZXR0YWJsZVJlc2V0KGAke0pTT04uc3RyaW5naWZ5KGRhdGEpfWApO1xuICAgICAgICB9XG4gICAgfVxuICAgIGFzeW5jIGZpbmFsaXplKCkge1xuICAgICAgICBpZiAoIXRoaXMuaW5jbHVkZUZvb3RlcilcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgbGV0IGluc3RhbGxTdGF0dXMgPSBgYDtcbiAgICAgICAgaWYgKHRoaXMuZXJyb3JDb3VudCA+IDApXG4gICAgICAgICAgICBpbnN0YWxsU3RhdHVzID0gYEZhaWxlZCB3aXRoIGVycm9yc2A7XG4gICAgICAgIGVsc2UgaWYgKHRoaXMud2FybmluZ0NvdW50ID4gMClcbiAgICAgICAgICAgIGluc3RhbGxTdGF0dXMgPSBgRG9uZSB3aXRoIHdhcm5pbmdzYDtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgaW5zdGFsbFN0YXR1cyA9IGBEb25lYDtcbiAgICAgICAgY29uc3QgdGltaW5nID0gZm9ybWF0VXRpbHMucHJldHR5KHRoaXMuY29uZmlndXJhdGlvbiwgRGF0ZS5ub3coKSAtIHRoaXMuc3RhcnRUaW1lLCBmb3JtYXRVdGlscy5UeXBlLkRVUkFUSU9OKTtcbiAgICAgICAgY29uc3QgbWVzc2FnZSA9IHRoaXMuY29uZmlndXJhdGlvbi5nZXQoYGVuYWJsZVRpbWVyc2ApXG4gICAgICAgICAgICA/IGAke2luc3RhbGxTdGF0dXN9IGluICR7dGltaW5nfWBcbiAgICAgICAgICAgIDogaW5zdGFsbFN0YXR1cztcbiAgICAgICAgaWYgKHRoaXMuZXJyb3JDb3VudCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMucmVwb3J0RXJyb3IoTWVzc2FnZU5hbWVfMS5NZXNzYWdlTmFtZS5VTk5BTUVELCBtZXNzYWdlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0aGlzLndhcm5pbmdDb3VudCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMucmVwb3J0V2FybmluZyhNZXNzYWdlTmFtZV8xLk1lc3NhZ2VOYW1lLlVOTkFNRUQsIG1lc3NhZ2UpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5yZXBvcnRJbmZvKE1lc3NhZ2VOYW1lXzEuTWVzc2FnZU5hbWUuVU5OQU1FRCwgbWVzc2FnZSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgd3JpdGVMaW5lKHN0ciwgeyB0cnVuY2F0ZSB9ID0ge30pIHtcbiAgICAgICAgdGhpcy5jbGVhclByb2dyZXNzKHsgY2xlYXI6IHRydWUgfSk7XG4gICAgICAgIHRoaXMuc3Rkb3V0LndyaXRlKGAke3RoaXMudHJ1bmNhdGUoc3RyLCB7IHRydW5jYXRlIH0pfVxcbmApO1xuICAgICAgICB0aGlzLndyaXRlUHJvZ3Jlc3MoKTtcbiAgICB9XG4gICAgd3JpdGVMaW5lV2l0aEZvcmdldHRhYmxlUmVzZXQoc3RyLCB7IHRydW5jYXRlIH0gPSB7fSkge1xuICAgICAgICB0aGlzLmZvcmdldHRhYmxlTGluZXMgPSBbXTtcbiAgICAgICAgdGhpcy53cml0ZUxpbmUoc3RyLCB7IHRydW5jYXRlIH0pO1xuICAgIH1cbiAgICB3cml0ZUxpbmVzKGxpbmVzLCB7IHRydW5jYXRlIH0gPSB7fSkge1xuICAgICAgICB0aGlzLmNsZWFyUHJvZ3Jlc3MoeyBkZWx0YTogbGluZXMubGVuZ3RoIH0pO1xuICAgICAgICBmb3IgKGNvbnN0IGxpbmUgb2YgbGluZXMpXG4gICAgICAgICAgICB0aGlzLnN0ZG91dC53cml0ZShgJHt0aGlzLnRydW5jYXRlKGxpbmUsIHsgdHJ1bmNhdGUgfSl9XFxuYCk7XG4gICAgICAgIHRoaXMud3JpdGVQcm9ncmVzcygpO1xuICAgIH1cbiAgICByZXBvcnRDYWNoZUNoYW5nZXMoeyBjYWNoZUhpdENvdW50LCBjYWNoZU1pc3NDb3VudCB9KSB7XG4gICAgICAgIGNvbnN0IGNhY2hlSGl0RGVsdGEgPSB0aGlzLmNhY2hlSGl0Q291bnQgLSBjYWNoZUhpdENvdW50O1xuICAgICAgICBjb25zdCBjYWNoZU1pc3NEZWx0YSA9IHRoaXMuY2FjaGVNaXNzQ291bnQgLSBjYWNoZU1pc3NDb3VudDtcbiAgICAgICAgaWYgKGNhY2hlSGl0RGVsdGEgPT09IDAgJiYgY2FjaGVNaXNzRGVsdGEgPT09IDApXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGxldCBmZXRjaFN0YXR1cyA9IGBgO1xuICAgICAgICBpZiAodGhpcy5jYWNoZUhpdENvdW50ID4gMSlcbiAgICAgICAgICAgIGZldGNoU3RhdHVzICs9IGAke3RoaXMuY2FjaGVIaXRDb3VudH0gcGFja2FnZXMgd2VyZSBhbHJlYWR5IGNhY2hlZGA7XG4gICAgICAgIGVsc2UgaWYgKHRoaXMuY2FjaGVIaXRDb3VudCA9PT0gMSlcbiAgICAgICAgICAgIGZldGNoU3RhdHVzICs9IGAgLSBvbmUgcGFja2FnZSB3YXMgYWxyZWFkeSBjYWNoZWRgO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICBmZXRjaFN0YXR1cyArPSBgTm8gcGFja2FnZXMgd2VyZSBjYWNoZWRgO1xuICAgICAgICBpZiAodGhpcy5jYWNoZUhpdENvdW50ID4gMCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuY2FjaGVNaXNzQ291bnQgPiAxKSB7XG4gICAgICAgICAgICAgICAgZmV0Y2hTdGF0dXMgKz0gYCwgJHt0aGlzLmNhY2hlTWlzc0NvdW50fSBoYWQgdG8gYmUgZmV0Y2hlZGA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmICh0aGlzLmNhY2hlTWlzc0NvdW50ID09PSAxKSB7XG4gICAgICAgICAgICAgICAgZmV0Y2hTdGF0dXMgKz0gYCwgb25lIGhhZCB0byBiZSBmZXRjaGVkICgke3N0cnVjdFV0aWxzLnByZXR0eUxvY2F0b3IodGhpcy5jb25maWd1cmF0aW9uLCB0aGlzLmxhc3RDYWNoZU1pc3MpfSlgO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaWYgKHRoaXMuY2FjaGVNaXNzQ291bnQgPiAxKSB7XG4gICAgICAgICAgICAgICAgZmV0Y2hTdGF0dXMgKz0gYCAtICR7dGhpcy5jYWNoZU1pc3NDb3VudH0gcGFja2FnZXMgaGFkIHRvIGJlIGZldGNoZWRgO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5jYWNoZU1pc3NDb3VudCA9PT0gMSkge1xuICAgICAgICAgICAgICAgIGZldGNoU3RhdHVzICs9IGAgLSBvbmUgcGFja2FnZSBoYWQgdG8gYmUgZmV0Y2hlZCAoJHtzdHJ1Y3RVdGlscy5wcmV0dHlMb2NhdG9yKHRoaXMuY29uZmlndXJhdGlvbiwgdGhpcy5sYXN0Q2FjaGVNaXNzKX0pYDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJlcG9ydEluZm8oTWVzc2FnZU5hbWVfMS5NZXNzYWdlTmFtZS5GRVRDSF9OT1RfQ0FDSEVELCBmZXRjaFN0YXR1cyk7XG4gICAgfVxuICAgIGNvbW1pdCgpIHtcbiAgICAgICAgY29uc3QgbWFya3MgPSB0aGlzLnVuY29tbWl0dGVkO1xuICAgICAgICB0aGlzLnVuY29tbWl0dGVkID0gbmV3IFNldCgpO1xuICAgICAgICBmb3IgKGNvbnN0IG1hcmsgb2YgbWFya3MpIHtcbiAgICAgICAgICAgIG1hcmsuY29tbWl0dGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIG1hcmsuYWN0aW9uKCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgY2xlYXJQcm9ncmVzcyh7IGRlbHRhID0gMCwgY2xlYXIgPSBmYWxzZSB9KSB7XG4gICAgICAgIGlmICh0aGlzLnByb2dyZXNzU3R5bGUgPT09IG51bGwpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGlmICh0aGlzLnByb2dyZXNzLnNpemUgKyBkZWx0YSA+IDApIHtcbiAgICAgICAgICAgIHRoaXMuc3Rkb3V0LndyaXRlKGBcXHgxYlske3RoaXMucHJvZ3Jlc3Muc2l6ZSArIGRlbHRhfUFgKTtcbiAgICAgICAgICAgIGlmIChkZWx0YSA+IDAgfHwgY2xlYXIpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0ZG91dC53cml0ZShgXFx4MWJbMEpgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICB3cml0ZVByb2dyZXNzKCkge1xuICAgICAgICBpZiAodGhpcy5wcm9ncmVzc1N0eWxlID09PSBudWxsKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBpZiAodGhpcy5wcm9ncmVzc1RpbWVvdXQgIT09IG51bGwpXG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5wcm9ncmVzc1RpbWVvdXQpO1xuICAgICAgICB0aGlzLnByb2dyZXNzVGltZW91dCA9IG51bGw7XG4gICAgICAgIGlmICh0aGlzLnByb2dyZXNzLnNpemUgPT09IDApXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgICAgIGlmIChub3cgLSB0aGlzLnByb2dyZXNzVGltZSA+IFBST0dSRVNTX0lOVEVSVkFMKSB7XG4gICAgICAgICAgICB0aGlzLnByb2dyZXNzRnJhbWUgPSAodGhpcy5wcm9ncmVzc0ZyYW1lICsgMSkgJSBQUk9HUkVTU19GUkFNRVMubGVuZ3RoO1xuICAgICAgICAgICAgdGhpcy5wcm9ncmVzc1RpbWUgPSBub3c7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc3Bpbm5lciA9IFBST0dSRVNTX0ZSQU1FU1t0aGlzLnByb2dyZXNzRnJhbWVdO1xuICAgICAgICBmb3IgKGNvbnN0IHByb2dyZXNzIG9mIHRoaXMucHJvZ3Jlc3MudmFsdWVzKCkpIHtcbiAgICAgICAgICAgIGxldCBwcm9ncmVzc0JhciA9IGBgO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBwcm9ncmVzcy5sYXN0U2NhbGVkU2l6ZSAhPT0gYHVuZGVmaW5lZGApIHtcbiAgICAgICAgICAgICAgICBjb25zdCBvayA9IHRoaXMucHJvZ3Jlc3NTdHlsZS5jaGFyc1swXS5yZXBlYXQocHJvZ3Jlc3MubGFzdFNjYWxlZFNpemUpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGtvID0gdGhpcy5wcm9ncmVzc1N0eWxlLmNoYXJzWzFdLnJlcGVhdCh0aGlzLnByb2dyZXNzTWF4U2NhbGVkU2l6ZSAtIHByb2dyZXNzLmxhc3RTY2FsZWRTaXplKTtcbiAgICAgICAgICAgICAgICBwcm9ncmVzc0JhciA9IGAgJHtva30ke2tvfWA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBmb3JtYXR0ZWROYW1lID0gdGhpcy5mb3JtYXROYW1lKG51bGwpO1xuICAgICAgICAgICAgY29uc3QgcHJlZml4ID0gZm9ybWF0dGVkTmFtZSA/IGAke2Zvcm1hdHRlZE5hbWV9OiBgIDogYGA7XG4gICAgICAgICAgICBjb25zdCB0aXRsZSA9IHByb2dyZXNzLmRlZmluaXRpb24udGl0bGUgPyBgICR7cHJvZ3Jlc3MuZGVmaW5pdGlvbi50aXRsZX1gIDogYGA7XG4gICAgICAgICAgICB0aGlzLnN0ZG91dC53cml0ZShgJHtmb3JtYXRVdGlscy5wcmV0dHkodGhpcy5jb25maWd1cmF0aW9uLCBgXHUyN0E0YCwgYGJsdWVCcmlnaHRgKX0gJHtwcmVmaXh9JHtzcGlubmVyfSR7cHJvZ3Jlc3NCYXJ9JHt0aXRsZX1cXG5gKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnByb2dyZXNzVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5yZWZyZXNoUHJvZ3Jlc3MoeyBmb3JjZTogdHJ1ZSB9KTtcbiAgICAgICAgfSwgUFJPR1JFU1NfSU5URVJWQUwpO1xuICAgIH1cbiAgICByZWZyZXNoUHJvZ3Jlc3MoeyBkZWx0YSA9IDAsIGZvcmNlID0gZmFsc2UgfSA9IHt9KSB7XG4gICAgICAgIGxldCBuZWVkc1VwZGF0ZSA9IGZhbHNlO1xuICAgICAgICBsZXQgbmVlZHNDbGVhciA9IGZhbHNlO1xuICAgICAgICBpZiAoZm9yY2UgfHwgdGhpcy5wcm9ncmVzcy5zaXplID09PSAwKSB7XG4gICAgICAgICAgICBuZWVkc1VwZGF0ZSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHByb2dyZXNzIG9mIHRoaXMucHJvZ3Jlc3MudmFsdWVzKCkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCByZWZyZXNoZWRTY2FsZWRTaXplID0gdHlwZW9mIHByb2dyZXNzLmRlZmluaXRpb24ucHJvZ3Jlc3MgIT09IGB1bmRlZmluZWRgXG4gICAgICAgICAgICAgICAgICAgID8gTWF0aC50cnVuYyh0aGlzLnByb2dyZXNzTWF4U2NhbGVkU2l6ZSAqIHByb2dyZXNzLmRlZmluaXRpb24ucHJvZ3Jlc3MpXG4gICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIGNvbnN0IHByZXZpb3VzU2NhbGVkU2l6ZSA9IHByb2dyZXNzLmxhc3RTY2FsZWRTaXplO1xuICAgICAgICAgICAgICAgIHByb2dyZXNzLmxhc3RTY2FsZWRTaXplID0gcmVmcmVzaGVkU2NhbGVkU2l6ZTtcbiAgICAgICAgICAgICAgICBjb25zdCBwcmV2aW91c1RpdGxlID0gcHJvZ3Jlc3MubGFzdFRpdGxlO1xuICAgICAgICAgICAgICAgIHByb2dyZXNzLmxhc3RUaXRsZSA9IHByb2dyZXNzLmRlZmluaXRpb24udGl0bGU7XG4gICAgICAgICAgICAgICAgaWYgKChyZWZyZXNoZWRTY2FsZWRTaXplICE9PSBwcmV2aW91c1NjYWxlZFNpemUpIHx8IChuZWVkc0NsZWFyID0gcHJldmlvdXNUaXRsZSAhPT0gcHJvZ3Jlc3MuZGVmaW5pdGlvbi50aXRsZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgbmVlZHNVcGRhdGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG5lZWRzVXBkYXRlKSB7XG4gICAgICAgICAgICB0aGlzLmNsZWFyUHJvZ3Jlc3MoeyBkZWx0YSwgY2xlYXI6IG5lZWRzQ2xlYXIgfSk7XG4gICAgICAgICAgICB0aGlzLndyaXRlUHJvZ3Jlc3MoKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICB0cnVuY2F0ZShzdHIsIHsgdHJ1bmNhdGUgfSA9IHt9KSB7XG4gICAgICAgIGlmICh0aGlzLnByb2dyZXNzU3R5bGUgPT09IG51bGwpXG4gICAgICAgICAgICB0cnVuY2F0ZSA9IGZhbHNlO1xuICAgICAgICBpZiAodHlwZW9mIHRydW5jYXRlID09PSBgdW5kZWZpbmVkYClcbiAgICAgICAgICAgIHRydW5jYXRlID0gdGhpcy5jb25maWd1cmF0aW9uLmdldChgcHJlZmVyVHJ1bmNhdGVkTGluZXNgKTtcbiAgICAgICAgLy8gVGhlIC0xIGlzIHRvIGFjY291bnQgZm9yIHRlcm1pbmFscyB0aGF0IHdvdWxkIHdyYXAgYWZ0ZXJcbiAgICAgICAgLy8gdGhlIGxhc3QgY29sdW1uIHJhdGhlciBiZWZvcmUgdGhlIGZpcnN0IG92ZXJ3cml0ZVxuICAgICAgICBpZiAodHJ1bmNhdGUpXG4gICAgICAgICAgICBzdHIgPSAoMCwgc2xpY2VfYW5zaV8xLmRlZmF1bHQpKHN0ciwgMCwgdGhpcy5zdGRvdXQuY29sdW1ucyAtIDEpO1xuICAgICAgICByZXR1cm4gc3RyO1xuICAgIH1cbiAgICBmb3JtYXROYW1lKG5hbWUpIHtcbiAgICAgICAgcmV0dXJuIGZvcm1hdE5hbWUobmFtZSwge1xuICAgICAgICAgICAgY29uZmlndXJhdGlvbjogdGhpcy5jb25maWd1cmF0aW9uLFxuICAgICAgICAgICAganNvbjogdGhpcy5qc29uLFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgZm9ybWF0TmFtZVdpdGhIeXBlcmxpbmsobmFtZSkge1xuICAgICAgICByZXR1cm4gZm9ybWF0TmFtZVdpdGhIeXBlcmxpbmsobmFtZSwge1xuICAgICAgICAgICAgY29uZmlndXJhdGlvbjogdGhpcy5jb25maWd1cmF0aW9uLFxuICAgICAgICAgICAganNvbjogdGhpcy5qc29uLFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgZm9ybWF0SW5kZW50KCkge1xuICAgICAgICByZXR1cm4gYFx1MjUwMiBgLnJlcGVhdCh0aGlzLmluZGVudCk7XG4gICAgfVxufVxuZXhwb3J0cy5TdHJlYW1SZXBvcnQgPSBTdHJlYW1SZXBvcnQ7XG4iLCAiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLllhcm5WZXJzaW9uID0gdm9pZCAwO1xuZXhwb3J0cy5ZYXJuVmVyc2lvbiA9IHR5cGVvZiBZQVJOX1ZFUlNJT04gIT09IGB1bmRlZmluZWRgXG4gICAgPyBZQVJOX1ZFUlNJT05cbiAgICA6IG51bGw7XG4iLCAiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLmV4ZWN1dGVXb3Jrc3BhY2VBY2Nlc3NpYmxlQmluYXJ5ID0gZXhwb3J0cy5leGVjdXRlUGFja2FnZUFjY2Vzc2libGVCaW5hcnkgPSBleHBvcnRzLmdldFdvcmtzcGFjZUFjY2Vzc2libGVCaW5hcmllcyA9IGV4cG9ydHMuZ2V0UGFja2FnZUFjY2Vzc2libGVCaW5hcmllcyA9IGV4cG9ydHMubWF5YmVFeGVjdXRlV29ya3NwYWNlTGlmZWN5Y2xlU2NyaXB0ID0gZXhwb3J0cy5leGVjdXRlV29ya3NwYWNlTGlmZWN5Y2xlU2NyaXB0ID0gZXhwb3J0cy5oYXNXb3Jrc3BhY2VTY3JpcHQgPSBleHBvcnRzLmV4ZWN1dGVXb3Jrc3BhY2VTY3JpcHQgPSBleHBvcnRzLmV4ZWN1dGVQYWNrYWdlU2hlbGxjb2RlID0gZXhwb3J0cy5leGVjdXRlUGFja2FnZVNjcmlwdCA9IGV4cG9ydHMuaGFzUGFja2FnZVNjcmlwdCA9IGV4cG9ydHMucHJlcGFyZUV4dGVybmFsUHJvamVjdCA9IGV4cG9ydHMubWFrZVNjcmlwdEVudiA9IGV4cG9ydHMuZGV0ZWN0UGFja2FnZU1hbmFnZXIgPSBleHBvcnRzLlBhY2thZ2VNYW5hZ2VyID0gdm9pZCAwO1xuY29uc3QgdHNsaWJfMSA9IHJlcXVpcmUoXCJ0c2xpYlwiKTtcbmNvbnN0IGZzbGliXzEgPSByZXF1aXJlKFwiQHlhcm5wa2cvZnNsaWJcIik7XG5jb25zdCBmc2xpYl8yID0gcmVxdWlyZShcIkB5YXJucGtnL2ZzbGliXCIpO1xuY29uc3QgbGliemlwXzEgPSByZXF1aXJlKFwiQHlhcm5wa2cvbGliemlwXCIpO1xuY29uc3Qgc2hlbGxfMSA9IHJlcXVpcmUoXCJAeWFybnBrZy9zaGVsbFwiKTtcbmNvbnN0IGNhcGl0YWxpemVfMSA9IHRzbGliXzEuX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJsb2Rhc2gvY2FwaXRhbGl6ZVwiKSk7XG5jb25zdCBwX2xpbWl0XzEgPSB0c2xpYl8xLl9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwicC1saW1pdFwiKSk7XG5jb25zdCBzdHJlYW1fMSA9IHJlcXVpcmUoXCJzdHJlYW1cIik7XG5jb25zdCBNYW5pZmVzdF8xID0gcmVxdWlyZShcIi4vTWFuaWZlc3RcIik7XG5jb25zdCBNZXNzYWdlTmFtZV8xID0gcmVxdWlyZShcIi4vTWVzc2FnZU5hbWVcIik7XG5jb25zdCBSZXBvcnRfMSA9IHJlcXVpcmUoXCIuL1JlcG9ydFwiKTtcbmNvbnN0IFN0cmVhbVJlcG9ydF8xID0gcmVxdWlyZShcIi4vU3RyZWFtUmVwb3J0XCIpO1xuY29uc3QgWWFyblZlcnNpb25fMSA9IHJlcXVpcmUoXCIuL1lhcm5WZXJzaW9uXCIpO1xuY29uc3QgZXhlY1V0aWxzID0gdHNsaWJfMS5fX2ltcG9ydFN0YXIocmVxdWlyZShcIi4vZXhlY1V0aWxzXCIpKTtcbmNvbnN0IGZvcm1hdFV0aWxzID0gdHNsaWJfMS5fX2ltcG9ydFN0YXIocmVxdWlyZShcIi4vZm9ybWF0VXRpbHNcIikpO1xuY29uc3QgbWlzY1V0aWxzID0gdHNsaWJfMS5fX2ltcG9ydFN0YXIocmVxdWlyZShcIi4vbWlzY1V0aWxzXCIpKTtcbmNvbnN0IHNlbXZlclV0aWxzID0gdHNsaWJfMS5fX2ltcG9ydFN0YXIocmVxdWlyZShcIi4vc2VtdmVyVXRpbHNcIikpO1xuY29uc3Qgc3RydWN0VXRpbHMgPSB0c2xpYl8xLl9faW1wb3J0U3RhcihyZXF1aXJlKFwiLi9zdHJ1Y3RVdGlsc1wiKSk7XG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG52YXIgUGFja2FnZU1hbmFnZXI7XG4oZnVuY3Rpb24gKFBhY2thZ2VNYW5hZ2VyKSB7XG4gICAgUGFja2FnZU1hbmFnZXJbXCJZYXJuMVwiXSA9IFwiWWFybiBDbGFzc2ljXCI7XG4gICAgUGFja2FnZU1hbmFnZXJbXCJZYXJuMlwiXSA9IFwiWWFyblwiO1xuICAgIFBhY2thZ2VNYW5hZ2VyW1wiTnBtXCJdID0gXCJucG1cIjtcbiAgICBQYWNrYWdlTWFuYWdlcltcIlBucG1cIl0gPSBcInBucG1cIjtcbn0pKFBhY2thZ2VNYW5hZ2VyID0gZXhwb3J0cy5QYWNrYWdlTWFuYWdlciB8fCAoZXhwb3J0cy5QYWNrYWdlTWFuYWdlciA9IHt9KSk7XG5hc3luYyBmdW5jdGlvbiBtYWtlUGF0aFdyYXBwZXIobG9jYXRpb24sIG5hbWUsIGFyZ3YwLCBhcmdzID0gW10pIHtcbiAgICBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gYHdpbjMyYCkge1xuICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L3Rlcm1pbmFsL2lzc3Vlcy8yMTcjaXNzdWVjb21tZW50LTczNzU5NDc4NVxuICAgICAgICBjb25zdCBjbWRTY3JpcHQgPSBgQGdvdG8gI191bmRlZmluZWRfIyAyPk5VTCB8fCBAdGl0bGUgJUNPTVNQRUMlICYgQHNldGxvY2FsICYgQFwiJHthcmd2MH1cIiAke2FyZ3MubWFwKGFyZyA9PiBgXCIke2FyZy5yZXBsYWNlKGBcImAsIGBcIlwiYCl9XCJgKS5qb2luKGAgYCl9ICUqYDtcbiAgICAgICAgYXdhaXQgZnNsaWJfMi54ZnMud3JpdGVGaWxlUHJvbWlzZShmc2xpYl8yLnBwYXRoLmZvcm1hdCh7IGRpcjogbG9jYXRpb24sIG5hbWUsIGV4dDogYC5jbWRgIH0pLCBjbWRTY3JpcHQpO1xuICAgIH1cbiAgICBhd2FpdCBmc2xpYl8yLnhmcy53cml0ZUZpbGVQcm9taXNlKGZzbGliXzIucHBhdGguam9pbihsb2NhdGlvbiwgbmFtZSksIGAjIS9iaW4vc2hcXG5leGVjIFwiJHthcmd2MH1cIiAke2FyZ3MubWFwKGFyZyA9PiBgJyR7YXJnLnJlcGxhY2UoLycvZywgYCdcIidcIidgKX0nYCkuam9pbihgIGApfSBcIiRAXCJcXG5gLCB7XG4gICAgICAgIG1vZGU6IDBvNzU1LFxuICAgIH0pO1xufVxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuYXN5bmMgZnVuY3Rpb24gZGV0ZWN0UGFja2FnZU1hbmFnZXIobG9jYXRpb24pIHtcbiAgICBjb25zdCBtYW5pZmVzdCA9IGF3YWl0IE1hbmlmZXN0XzEuTWFuaWZlc3QudHJ5RmluZChsb2NhdGlvbik7XG4gICAgaWYgKG1hbmlmZXN0ID09PSBudWxsIHx8IG1hbmlmZXN0ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBtYW5pZmVzdC5wYWNrYWdlTWFuYWdlcikge1xuICAgICAgICBjb25zdCBsb2NhdG9yID0gc3RydWN0VXRpbHMudHJ5UGFyc2VMb2NhdG9yKG1hbmlmZXN0LnBhY2thZ2VNYW5hZ2VyKTtcbiAgICAgICAgaWYgKGxvY2F0b3IgPT09IG51bGwgfHwgbG9jYXRvciA9PT0gdm9pZCAwID8gdm9pZCAwIDogbG9jYXRvci5uYW1lKSB7XG4gICAgICAgICAgICBjb25zdCByZWFzb24gPSBgZm91bmQgJHtKU09OLnN0cmluZ2lmeSh7IHBhY2thZ2VNYW5hZ2VyOiBtYW5pZmVzdC5wYWNrYWdlTWFuYWdlciB9KX0gaW4gbWFuaWZlc3RgO1xuICAgICAgICAgICAgY29uc3QgW21ham9yXSA9IGxvY2F0b3IucmVmZXJlbmNlLnNwbGl0KGAuYCk7XG4gICAgICAgICAgICBzd2l0Y2ggKGxvY2F0b3IubmFtZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgYHlhcm5gOlxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwYWNrYWdlTWFuYWdlciA9IE51bWJlcihtYWpvcikgPT09IDEgPyBQYWNrYWdlTWFuYWdlci5ZYXJuMSA6IFBhY2thZ2VNYW5hZ2VyLllhcm4yO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgcGFja2FnZU1hbmFnZXIsIHJlYXNvbiB9O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgYG5wbWA6XG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7IHBhY2thZ2VNYW5hZ2VyOiBQYWNrYWdlTWFuYWdlci5OcG0sIHJlYXNvbiB9O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgYHBucG1gOlxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBwYWNrYWdlTWFuYWdlcjogUGFja2FnZU1hbmFnZXIuUG5wbSwgcmVhc29uIH07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgbGV0IHlhcm5Mb2NrO1xuICAgIHRyeSB7XG4gICAgICAgIHlhcm5Mb2NrID0gYXdhaXQgZnNsaWJfMi54ZnMucmVhZEZpbGVQcm9taXNlKGZzbGliXzIucHBhdGguam9pbihsb2NhdGlvbiwgZnNsaWJfMS5GaWxlbmFtZS5sb2NrZmlsZSksIGB1dGY4YCk7XG4gICAgfVxuICAgIGNhdGNoIHsgfVxuICAgIGlmICh5YXJuTG9jayAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGlmICh5YXJuTG9jay5tYXRjaCgvXl9fbWV0YWRhdGE6JC9tKSkge1xuICAgICAgICAgICAgcmV0dXJuIHsgcGFja2FnZU1hbmFnZXI6IFBhY2thZ2VNYW5hZ2VyLllhcm4yLCByZWFzb246IGBcIl9fbWV0YWRhdGFcIiBrZXkgZm91bmQgaW4geWFybi5sb2NrYCB9O1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBwYWNrYWdlTWFuYWdlcjogUGFja2FnZU1hbmFnZXIuWWFybjEsXG4gICAgICAgICAgICAgICAgcmVhc29uOiBgXCJfX21ldGFkYXRhXCIga2V5IG5vdCBmb3VuZCBpbiB5YXJuLmxvY2ssIG11c3QgYmUgYSBZYXJuIGNsYXNzaWMgbG9ja2ZpbGVgLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAoZnNsaWJfMi54ZnMuZXhpc3RzU3luYyhmc2xpYl8yLnBwYXRoLmpvaW4obG9jYXRpb24sIGBwYWNrYWdlLWxvY2suanNvbmApKSlcbiAgICAgICAgcmV0dXJuIHsgcGFja2FnZU1hbmFnZXI6IFBhY2thZ2VNYW5hZ2VyLk5wbSwgcmVhc29uOiBgZm91bmQgbnBtJ3MgXCJwYWNrYWdlLWxvY2suanNvblwiIGxvY2tmaWxlYCB9O1xuICAgIGlmIChmc2xpYl8yLnhmcy5leGlzdHNTeW5jKGZzbGliXzIucHBhdGguam9pbihsb2NhdGlvbiwgYHBucG0tbG9jay55YW1sYCkpKVxuICAgICAgICByZXR1cm4geyBwYWNrYWdlTWFuYWdlcjogUGFja2FnZU1hbmFnZXIuUG5wbSwgcmVhc29uOiBgZm91bmQgcG5wbSdzIFwicG5wbS1sb2NrLnlhbWxcIiBsb2NrZmlsZWAgfTtcbiAgICByZXR1cm4gbnVsbDtcbn1cbmV4cG9ydHMuZGV0ZWN0UGFja2FnZU1hbmFnZXIgPSBkZXRlY3RQYWNrYWdlTWFuYWdlcjtcbmFzeW5jIGZ1bmN0aW9uIG1ha2VTY3JpcHRFbnYoeyBwcm9qZWN0LCBsb2NhdG9yLCBiaW5Gb2xkZXIsIGxpZmVjeWNsZVNjcmlwdCB9KSB7XG4gICAgdmFyIF9hLCBfYjtcbiAgICBjb25zdCBzY3JpcHRFbnYgPSB7fTtcbiAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhwcm9jZXNzLmVudikpXG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09IGB1bmRlZmluZWRgKVxuICAgICAgICAgICAgc2NyaXB0RW52W2tleS50b0xvd2VyQ2FzZSgpICE9PSBgcGF0aGAgPyBrZXkgOiBgUEFUSGBdID0gdmFsdWU7XG4gICAgY29uc3QgbkJpbkZvbGRlciA9IGZzbGliXzIubnBhdGguZnJvbVBvcnRhYmxlUGF0aChiaW5Gb2xkZXIpO1xuICAgIC8vIFdlIGV4cG9zZSB0aGUgYmFzZSBmb2xkZXIgaW4gdGhlIGVudmlyb25tZW50IHNvIHRoYXQgd2UgY2FuIGxhdGVyIGFkZCB0aGVcbiAgICAvLyBiaW5hcmllcyBmb3IgdGhlIGRlcGVuZGVuY2llcyBvZiB0aGUgYWN0aXZlIHBhY2thZ2VcbiAgICBzY3JpcHRFbnYuQkVSUllfQklOX0ZPTERFUiA9IGZzbGliXzIubnBhdGguZnJvbVBvcnRhYmxlUGF0aChuQmluRm9sZGVyKTtcbiAgICAvLyBPdGhlcndpc2Ugd2UnZCBvdmVycmlkZSB0aGUgQ29yZXBhY2sgYmluYXJpZXMsIGFuZCB0aHVzIGJyZWFrIHRoZSBkZXRlY3Rpb25cbiAgICAvLyBvZiB0aGUgYHBhY2thZ2VNYW5hZ2VyYCBmaWVsZCB3aGVuIHJ1bm5pbmcgWWFybiBpbiBvdGhlciBkaXJlY3Rvcmllcy5cbiAgICBjb25zdCB5YXJuQmluID0gcHJvY2Vzcy5lbnYuQ09SRVBBQ0tfUk9PVFxuICAgICAgICA/IGZzbGliXzIubnBhdGguam9pbihwcm9jZXNzLmVudi5DT1JFUEFDS19ST09ULCBgZGlzdC95YXJuLmpzYClcbiAgICAgICAgOiBwcm9jZXNzLmFyZ3ZbMV07XG4gICAgLy8gUmVnaXN0ZXIgc29tZSBiaW5hcmllcyB0aGF0IG11c3QgYmUgbWFkZSBhdmFpbGFibGUgaW4gYWxsIHN1YnByb2Nlc3Nlc1xuICAgIC8vIHNwYXduZWQgYnkgWWFybiAod2UgdGh1cyBlbnN1cmUgdGhhdCB0aGV5IGFsd2F5cyB1c2UgdGhlIHJpZ2h0IHZlcnNpb24pXG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoW1xuICAgICAgICBtYWtlUGF0aFdyYXBwZXIoYmluRm9sZGVyLCBgbm9kZWAsIHByb2Nlc3MuZXhlY1BhdGgpLFxuICAgICAgICAuLi5ZYXJuVmVyc2lvbl8xLllhcm5WZXJzaW9uICE9PSBudWxsID8gW1xuICAgICAgICAgICAgbWFrZVBhdGhXcmFwcGVyKGJpbkZvbGRlciwgYHJ1bmAsIHByb2Nlc3MuZXhlY1BhdGgsIFt5YXJuQmluLCBgcnVuYF0pLFxuICAgICAgICAgICAgbWFrZVBhdGhXcmFwcGVyKGJpbkZvbGRlciwgYHlhcm5gLCBwcm9jZXNzLmV4ZWNQYXRoLCBbeWFybkJpbl0pLFxuICAgICAgICAgICAgbWFrZVBhdGhXcmFwcGVyKGJpbkZvbGRlciwgYHlhcm5wa2dgLCBwcm9jZXNzLmV4ZWNQYXRoLCBbeWFybkJpbl0pLFxuICAgICAgICAgICAgbWFrZVBhdGhXcmFwcGVyKGJpbkZvbGRlciwgYG5vZGUtZ3lwYCwgcHJvY2Vzcy5leGVjUGF0aCwgW3lhcm5CaW4sIGBydW5gLCBgLS10b3AtbGV2ZWxgLCBgbm9kZS1neXBgXSksXG4gICAgICAgIF0gOiBbXSxcbiAgICBdKTtcbiAgICBpZiAocHJvamVjdCkge1xuICAgICAgICBzY3JpcHRFbnYuSU5JVF9DV0QgPSBmc2xpYl8yLm5wYXRoLmN3ZCgpO1xuICAgICAgICBzY3JpcHRFbnYuUFJPSkVDVF9DV0QgPSBmc2xpYl8yLm5wYXRoLmZyb21Qb3J0YWJsZVBhdGgocHJvamVjdC5jd2QpO1xuICAgIH1cbiAgICBzY3JpcHRFbnYuUEFUSCA9IHNjcmlwdEVudi5QQVRIXG4gICAgICAgID8gYCR7bkJpbkZvbGRlcn0ke2ZzbGliXzIubnBhdGguZGVsaW1pdGVyfSR7c2NyaXB0RW52LlBBVEh9YFxuICAgICAgICA6IGAke25CaW5Gb2xkZXJ9YDtcbiAgICBzY3JpcHRFbnYubnBtX2V4ZWNwYXRoID0gYCR7bkJpbkZvbGRlcn0ke2ZzbGliXzIubnBhdGguc2VwfXlhcm5gO1xuICAgIHNjcmlwdEVudi5ucG1fbm9kZV9leGVjcGF0aCA9IGAke25CaW5Gb2xkZXJ9JHtmc2xpYl8yLm5wYXRoLnNlcH1ub2RlYDtcbiAgICBpZiAobG9jYXRvcikge1xuICAgICAgICBpZiAoIXByb2plY3QpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEFzc2VydGlvbiBmYWlsZWQ6IE1pc3NpbmcgcHJvamVjdGApO1xuICAgICAgICAvLyBXb3Jrc3BhY2VzIGhhdmUgMC4wLjAtdXNlLmxvY2FsIGluIHRoZWlyIFwicGtnXCIgcmVnaXN0cmF0aW9ucywgc28gd2VcbiAgICAgICAgLy8gbmVlZCB0byBhY2Nlc3MgdGhlIGFjdHVhbCB3b3Jrc3BhY2UgdG8gZ2V0IGl0cyByZWFsIHZlcnNpb24uXG4gICAgICAgIGNvbnN0IHdvcmtzcGFjZSA9IHByb2plY3QudHJ5V29ya3NwYWNlQnlMb2NhdG9yKGxvY2F0b3IpO1xuICAgICAgICBjb25zdCB2ZXJzaW9uID0gd29ya3NwYWNlXG4gICAgICAgICAgICA/IChfYSA9IHdvcmtzcGFjZS5tYW5pZmVzdC52ZXJzaW9uKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBgYFxuICAgICAgICAgICAgOiAoX2IgPSBwcm9qZWN0LnN0b3JlZFBhY2thZ2VzLmdldChsb2NhdG9yLmxvY2F0b3JIYXNoKS52ZXJzaW9uKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiBgYDtcbiAgICAgICAgc2NyaXB0RW52Lm5wbV9wYWNrYWdlX25hbWUgPSBzdHJ1Y3RVdGlscy5zdHJpbmdpZnlJZGVudChsb2NhdG9yKTtcbiAgICAgICAgc2NyaXB0RW52Lm5wbV9wYWNrYWdlX3ZlcnNpb24gPSB2ZXJzaW9uO1xuICAgICAgICBsZXQgcGFja2FnZUxvY2F0aW9uO1xuICAgICAgICBpZiAod29ya3NwYWNlKSB7XG4gICAgICAgICAgICBwYWNrYWdlTG9jYXRpb24gPSB3b3Jrc3BhY2UuY3dkO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgcGtnID0gcHJvamVjdC5zdG9yZWRQYWNrYWdlcy5nZXQobG9jYXRvci5sb2NhdG9ySGFzaCk7XG4gICAgICAgICAgICBpZiAoIXBrZylcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFBhY2thZ2UgZm9yICR7c3RydWN0VXRpbHMucHJldHR5TG9jYXRvcihwcm9qZWN0LmNvbmZpZ3VyYXRpb24sIGxvY2F0b3IpfSBub3QgZm91bmQgaW4gdGhlIHByb2plY3RgKTtcbiAgICAgICAgICAgIGNvbnN0IGxpbmtlcnMgPSBwcm9qZWN0LmNvbmZpZ3VyYXRpb24uZ2V0TGlua2VycygpO1xuICAgICAgICAgICAgY29uc3QgbGlua2VyT3B0aW9ucyA9IHsgcHJvamVjdCwgcmVwb3J0OiBuZXcgU3RyZWFtUmVwb3J0XzEuU3RyZWFtUmVwb3J0KHsgc3Rkb3V0OiBuZXcgc3RyZWFtXzEuUGFzc1Rocm91Z2goKSwgY29uZmlndXJhdGlvbjogcHJvamVjdC5jb25maWd1cmF0aW9uIH0pIH07XG4gICAgICAgICAgICBjb25zdCBsaW5rZXIgPSBsaW5rZXJzLmZpbmQobGlua2VyID0+IGxpbmtlci5zdXBwb3J0c1BhY2thZ2UocGtnLCBsaW5rZXJPcHRpb25zKSk7XG4gICAgICAgICAgICBpZiAoIWxpbmtlcilcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSBwYWNrYWdlICR7c3RydWN0VXRpbHMucHJldHR5TG9jYXRvcihwcm9qZWN0LmNvbmZpZ3VyYXRpb24sIHBrZyl9IGlzbid0IHN1cHBvcnRlZCBieSBhbnkgb2YgdGhlIGF2YWlsYWJsZSBsaW5rZXJzYCk7XG4gICAgICAgICAgICBwYWNrYWdlTG9jYXRpb24gPSBhd2FpdCBsaW5rZXIuZmluZFBhY2thZ2VMb2NhdGlvbihwa2csIGxpbmtlck9wdGlvbnMpO1xuICAgICAgICB9XG4gICAgICAgIHNjcmlwdEVudi5ucG1fcGFja2FnZV9qc29uID0gZnNsaWJfMi5ucGF0aC5mcm9tUG9ydGFibGVQYXRoKGZzbGliXzIucHBhdGguam9pbihwYWNrYWdlTG9jYXRpb24sIGZzbGliXzEuRmlsZW5hbWUubWFuaWZlc3QpKTtcbiAgICB9XG4gICAgY29uc3QgdmVyc2lvbiA9IFlhcm5WZXJzaW9uXzEuWWFyblZlcnNpb24gIT09IG51bGxcbiAgICAgICAgPyBgeWFybi8ke1lhcm5WZXJzaW9uXzEuWWFyblZlcnNpb259YFxuICAgICAgICA6IGB5YXJuLyR7bWlzY1V0aWxzLmR5bmFtaWNSZXF1aXJlKGBAeWFybnBrZy9jb3JlYCkudmVyc2lvbn0tY29yZWA7XG4gICAgLy8gV2UgdXNlIHByb2Nlc3MudmVyc2lvbiBiZWNhdXNlIGl0IGluY2x1ZGVzIHRoZSBcInZcIiBwcmVmaXggYW5kIHRoZSBvdGhlciBwYWNrYWdlIG1hbmFnZXJzIGluY2x1ZGUgaXQgdG9vXG4gICAgc2NyaXB0RW52Lm5wbV9jb25maWdfdXNlcl9hZ2VudCA9IGAke3ZlcnNpb259IG5wbS8/IG5vZGUvJHtwcm9jZXNzLnZlcnNpb259ICR7cHJvY2Vzcy5wbGF0Zm9ybX0gJHtwcm9jZXNzLmFyY2h9YDtcbiAgICBpZiAobGlmZWN5Y2xlU2NyaXB0KVxuICAgICAgICBzY3JpcHRFbnYubnBtX2xpZmVjeWNsZV9ldmVudCA9IGxpZmVjeWNsZVNjcmlwdDtcbiAgICBpZiAocHJvamVjdCkge1xuICAgICAgICBhd2FpdCBwcm9qZWN0LmNvbmZpZ3VyYXRpb24udHJpZ2dlckhvb2soaG9vayA9PiBob29rLnNldHVwU2NyaXB0RW52aXJvbm1lbnQsIHByb2plY3QsIHNjcmlwdEVudiwgYXN5bmMgKG5hbWUsIGFyZ3YwLCBhcmdzKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gYXdhaXQgbWFrZVBhdGhXcmFwcGVyKGJpbkZvbGRlciwgKDAsIGZzbGliXzIudG9GaWxlbmFtZSkobmFtZSksIGFyZ3YwLCBhcmdzKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBzY3JpcHRFbnY7XG59XG5leHBvcnRzLm1ha2VTY3JpcHRFbnYgPSBtYWtlU2NyaXB0RW52O1xuLyoqXG4gKiBHaXZlbiBhIGZvbGRlciwgcHJlcGFyZXMgdGhpcyBwcm9qZWN0IGZvciB1c2UuIFJ1bnMgYHlhcm4gaW5zdGFsbGAgdGhlblxuICogYHlhcm4gYnVpbGRgIGlmIGEgYHBhY2thZ2UuanNvbmAgaXMgZm91bmQuXG4gKi9cbmNvbnN0IE1BWF9QUkVQQVJFX0NPTkNVUlJFTkNZID0gMjtcbmNvbnN0IHByZXBhcmVMaW1pdCA9ICgwLCBwX2xpbWl0XzEuZGVmYXVsdCkoTUFYX1BSRVBBUkVfQ09OQ1VSUkVOQ1kpO1xuYXN5bmMgZnVuY3Rpb24gcHJlcGFyZUV4dGVybmFsUHJvamVjdChjd2QsIG91dHB1dFBhdGgsIHsgY29uZmlndXJhdGlvbiwgcmVwb3J0LCB3b3Jrc3BhY2UgPSBudWxsLCBsb2NhdG9yID0gbnVsbCB9KSB7XG4gICAgYXdhaXQgcHJlcGFyZUxpbWl0KGFzeW5jICgpID0+IHtcbiAgICAgICAgYXdhaXQgZnNsaWJfMi54ZnMubWt0ZW1wUHJvbWlzZShhc3luYyAobG9nRGlyKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBsb2dGaWxlID0gZnNsaWJfMi5wcGF0aC5qb2luKGxvZ0RpciwgYHBhY2subG9nYCk7XG4gICAgICAgICAgICBjb25zdCBzdGRpbiA9IG51bGw7XG4gICAgICAgICAgICBjb25zdCB7IHN0ZG91dCwgc3RkZXJyIH0gPSBjb25maWd1cmF0aW9uLmdldFN1YnByb2Nlc3NTdHJlYW1zKGxvZ0ZpbGUsIHsgcHJlZml4OiBmc2xpYl8yLm5wYXRoLmZyb21Qb3J0YWJsZVBhdGgoY3dkKSwgcmVwb3J0IH0pO1xuICAgICAgICAgICAgY29uc3QgZGV2aXJ0dWFsaXplZExvY2F0b3IgPSBsb2NhdG9yICYmIHN0cnVjdFV0aWxzLmlzVmlydHVhbExvY2F0b3IobG9jYXRvcilcbiAgICAgICAgICAgICAgICA/IHN0cnVjdFV0aWxzLmRldmlydHVhbGl6ZUxvY2F0b3IobG9jYXRvcilcbiAgICAgICAgICAgICAgICA6IGxvY2F0b3I7XG4gICAgICAgICAgICBjb25zdCBuYW1lID0gZGV2aXJ0dWFsaXplZExvY2F0b3JcbiAgICAgICAgICAgICAgICA/IHN0cnVjdFV0aWxzLnN0cmluZ2lmeUxvY2F0b3IoZGV2aXJ0dWFsaXplZExvY2F0b3IpXG4gICAgICAgICAgICAgICAgOiBgYW4gZXh0ZXJuYWwgcHJvamVjdGA7XG4gICAgICAgICAgICBzdGRvdXQud3JpdGUoYFBhY2tpbmcgJHtuYW1lfSBmcm9tIHNvdXJjZXNcXG5gKTtcbiAgICAgICAgICAgIGNvbnN0IHBhY2thZ2VNYW5hZ2VyU2VsZWN0aW9uID0gYXdhaXQgZGV0ZWN0UGFja2FnZU1hbmFnZXIoY3dkKTtcbiAgICAgICAgICAgIGxldCBlZmZlY3RpdmVQYWNrYWdlTWFuYWdlcjtcbiAgICAgICAgICAgIGlmIChwYWNrYWdlTWFuYWdlclNlbGVjdGlvbiAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHN0ZG91dC53cml0ZShgVXNpbmcgJHtwYWNrYWdlTWFuYWdlclNlbGVjdGlvbi5wYWNrYWdlTWFuYWdlcn0gZm9yIGJvb3RzdHJhcC4gUmVhc29uOiAke3BhY2thZ2VNYW5hZ2VyU2VsZWN0aW9uLnJlYXNvbn1cXG5cXG5gKTtcbiAgICAgICAgICAgICAgICBlZmZlY3RpdmVQYWNrYWdlTWFuYWdlciA9IHBhY2thZ2VNYW5hZ2VyU2VsZWN0aW9uLnBhY2thZ2VNYW5hZ2VyO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgc3Rkb3V0LndyaXRlKGBObyBwYWNrYWdlIG1hbmFnZXIgY29uZmlndXJhdGlvbiBkZXRlY3RlZDsgZGVmYXVsdGluZyB0byBZYXJuXFxuXFxuYCk7XG4gICAgICAgICAgICAgICAgZWZmZWN0aXZlUGFja2FnZU1hbmFnZXIgPSBQYWNrYWdlTWFuYWdlci5ZYXJuMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGF3YWl0IGZzbGliXzIueGZzLm1rdGVtcFByb21pc2UoYXN5bmMgKGJpbkZvbGRlcikgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGVudiA9IGF3YWl0IG1ha2VTY3JpcHRFbnYoeyBiaW5Gb2xkZXIgfSk7XG4gICAgICAgICAgICAgICAgY29uc3Qgd29ya2Zsb3dzID0gbmV3IE1hcChbXG4gICAgICAgICAgICAgICAgICAgIFtQYWNrYWdlTWFuYWdlci5ZYXJuMSwgYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHdvcmtzcGFjZUNsaSA9IHdvcmtzcGFjZSAhPT0gbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IFtgd29ya3NwYWNlYCwgd29ya3NwYWNlXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGBzZXQgdmVyc2lvbmAgd2lsbCB1cGRhdGUgdGhlIE1hbmlmZXN0IHRvIGNvbnRhaW4gYSBgcGFja2FnZU1hbmFnZXJgIGZpZWxkIHdpdGggdGhlIGxhdGVzdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFlhcm4gdmVyc2lvbiB3aGljaCBjYXVzZXMgdGhlIHJlc3VsdHMgdG8gY2hhbmdlIGRlcGVuZGluZyBvbiB3aGVuIHRoaXMgY29tbWFuZCB3YXMgcnVuLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZXJlZm9yZSB3ZSByZXZlcnQgYW55IGNoYW5nZSBtYWRlIHRvIGl0LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1hbmlmZXN0UGF0aCA9IGZzbGliXzIucHBhdGguam9pbihjd2QsIGZzbGliXzEuRmlsZW5hbWUubWFuaWZlc3QpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1hbmlmZXN0QnVmZmVyID0gYXdhaXQgZnNsaWJfMi54ZnMucmVhZEZpbGVQcm9taXNlKG1hbmlmZXN0UGF0aCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTWFrZXMgc3VyZSB0aGF0IHdlJ2xsIGJlIHVzaW5nIFlhcm4gMS54XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdmVyc2lvbiA9IGF3YWl0IGV4ZWNVdGlscy5waXBldnAocHJvY2Vzcy5leGVjUGF0aCwgW3Byb2Nlc3MuYXJndlsxXSwgYHNldGAsIGB2ZXJzaW9uYCwgYGNsYXNzaWNgLCBgLS1vbmx5LWlmLW5lZWRlZGAsIGAtLXlhcm4tcGF0aGBdLCB7IGN3ZCwgZW52LCBzdGRpbiwgc3Rkb3V0LCBzdGRlcnIsIGVuZDogZXhlY1V0aWxzLkVuZFN0cmF0ZWd5LkVycm9yQ29kZSB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodmVyc2lvbi5jb2RlICE9PSAwKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmVyc2lvbi5jb2RlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJldmVydCBhbnkgY2hhbmdlcyBtYWRlIHRvIHRoZSBNYW5pZmVzdCBieSBgc2V0IHZlcnNpb25gLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IGZzbGliXzIueGZzLndyaXRlRmlsZVByb21pc2UobWFuaWZlc3RQYXRoLCBtYW5pZmVzdEJ1ZmZlcik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gT3RoZXJ3aXNlIFlhcm4gMSB3aWxsIHBhY2sgdGhlIC55YXJuIGRpcmVjdG9yeSA6KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IGZzbGliXzIueGZzLmFwcGVuZEZpbGVQcm9taXNlKGZzbGliXzIucHBhdGguam9pbihjd2QsIGAubnBtaWdub3JlYCksIGAvLnlhcm5cXG5gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQud3JpdGUoYFxcbmApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJlbW92ZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdGhhdCBsaW1pdCB0aGUgaW5zdGFsbCB0byBqdXN0IHByb2R1Y3Rpb24gZGVwZW5kZW5jaWVzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGVudi5OT0RFX0VOVjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSdW4gYW4gaW5zdGFsbDsgd2UgY2FuJ3QgYXZvaWQgaXQgdW5sZXNzIHdlIGluc3BlY3QgdGhlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGFja2FnZS5qc29uLCB3aGljaCBJIGRvbid0IHdhbnQgdG8gZG8gdG8ga2VlcCB0aGUgY29kZWJhc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjbGVhbiAoZXZlbiBpZiBpdCBoYXMgYSBzbGlnaHQgcGVyZiBjb3N0IHdoZW4gY2xvbmluZyB2MSByZXBvcylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnN0YWxsID0gYXdhaXQgZXhlY1V0aWxzLnBpcGV2cChgeWFybmAsIFtgaW5zdGFsbGBdLCB7IGN3ZCwgZW52LCBzdGRpbiwgc3Rkb3V0LCBzdGRlcnIsIGVuZDogZXhlY1V0aWxzLkVuZFN0cmF0ZWd5LkVycm9yQ29kZSB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5zdGFsbC5jb2RlICE9PSAwKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW5zdGFsbC5jb2RlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dC53cml0ZShgXFxuYCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFjayA9IGF3YWl0IGV4ZWNVdGlscy5waXBldnAoYHlhcm5gLCBbLi4ud29ya3NwYWNlQ2xpLCBgcGFja2AsIGAtLWZpbGVuYW1lYCwgZnNsaWJfMi5ucGF0aC5mcm9tUG9ydGFibGVQYXRoKG91dHB1dFBhdGgpXSwgeyBjd2QsIGVudiwgc3RkaW4sIHN0ZG91dCwgc3RkZXJyIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYWNrLmNvZGUgIT09IDApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwYWNrLmNvZGU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XSxcbiAgICAgICAgICAgICAgICAgICAgW1BhY2thZ2VNYW5hZ2VyLllhcm4yLCBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgd29ya3NwYWNlQ2xpID0gd29ya3NwYWNlICE9PSBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gW2B3b3Jrc3BhY2VgLCB3b3Jrc3BhY2VdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2UgZW5hYmxlIGlubGluZSBidWlsZHMsIGJlY2F1c2Ugbm9ib2R5IHdhbnRzIHRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVhZCBhIGxvZ2ZpbGUgdGVsbGluZyB0aGVtIHRvIG9wZW4gYW5vdGhlciBsb2dmaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52LllBUk5fRU5BQkxFX0lOTElORV9CVUlMRFMgPSBgMWA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgYSBsb2NrZmlsZSBkb2Vzbid0IGV4aXN0IHdlIGNyZWF0ZSBhIGVtcHR5IG9uZSB0b1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHByZXZlbnQgdGhlIHByb2plY3Qgcm9vdCBkZXRlY3Rpb24gZnJvbSB0aGlua2luZyBpdCdzIGluIGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdW5kZWNsYXJlZCB3b3Jrc3BhY2Ugd2hlbiB0aGUgdXNlciBoYXMgYSBsb2NrZmlsZSBpbiB0aGVpciBob21lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZGlyZWN0b3J5IG9uIFdpbmRvd3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsb2NrZmlsZVBhdGggPSBmc2xpYl8yLnBwYXRoLmpvaW4oY3dkLCBmc2xpYl8xLkZpbGVuYW1lLmxvY2tmaWxlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShhd2FpdCBmc2xpYl8yLnhmcy5leGlzdHNQcm9taXNlKGxvY2tmaWxlUGF0aCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCBmc2xpYl8yLnhmcy53cml0ZUZpbGVQcm9taXNlKGxvY2tmaWxlUGF0aCwgYGApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFlhcm4gMiBzdXBwb3J0cyBkb2luZyB0aGUgaW5zdGFsbCBhbmQgdGhlIHBhY2sgaW4gYSBzaW5nbGUgY29tbWFuZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzbyB3ZSBsZXZlcmFnZSB0aGF0LiBXZSBhbHNvIGRvbid0IG5lZWQgdGhlIFwic2V0IHZlcnNpb25cIiBjYWxsIHNpbmNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2UncmUgYWxyZWFkeSBvcGVyYXRpbmcgd2l0aGluIGEgWWFybiAyIGNvbnRleHQgKHBsdXMgcGVvcGxlIHNob3VsZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlYWxseSBjaGVjay1pbiB0aGVpciBZYXJuIHZlcnNpb25zIGFueXdheSkuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFjayA9IGF3YWl0IGV4ZWNVdGlscy5waXBldnAoYHlhcm5gLCBbLi4ud29ya3NwYWNlQ2xpLCBgcGFja2AsIGAtLWluc3RhbGwtaWYtbmVlZGVkYCwgYC0tZmlsZW5hbWVgLCBmc2xpYl8yLm5wYXRoLmZyb21Qb3J0YWJsZVBhdGgob3V0cHV0UGF0aCldLCB7IGN3ZCwgZW52LCBzdGRpbiwgc3Rkb3V0LCBzdGRlcnIgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhY2suY29kZSAhPT0gMClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBhY2suY29kZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1dLFxuICAgICAgICAgICAgICAgICAgICBbUGFja2FnZU1hbmFnZXIuTnBtLCBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUnVubmluZyBgbnBtIHBhY2sgLS13b3Jrc3BhY2Ugd2Agb24gbnBtQDw3LnggY2F1c2VzIG5wbSB0byBpZ25vcmUgdGhlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYC0td29ya3NwYWNlYCBmbGFnIGFuZCBpbnN0ZWFkIHBhY2sgdGhlIGB3YCBwYWNrYWdlIGZyb20gdGhlIHJlZ2lzdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdvcmtzcGFjZSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2ZXJzaW9uU3RyZWFtID0gbmV3IHN0cmVhbV8xLlBhc3NUaHJvdWdoKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZlcnNpb25Qcm9taXNlID0gbWlzY1V0aWxzLmJ1ZmZlclN0cmVhbSh2ZXJzaW9uU3RyZWFtKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvblN0cmVhbS5waXBlKHN0ZG91dCwgeyBlbmQ6IGZhbHNlIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2ZXJzaW9uID0gYXdhaXQgZXhlY1V0aWxzLnBpcGV2cChgbnBtYCwgW2AtLXZlcnNpb25gXSwgeyBjd2QsIGVudiwgc3RkaW4sIHN0ZG91dDogdmVyc2lvblN0cmVhbSwgc3RkZXJyLCBlbmQ6IGV4ZWNVdGlscy5FbmRTdHJhdGVneS5OZXZlciB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvblN0cmVhbS5lbmQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZlcnNpb24uY29kZSAhPT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0LmVuZCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkZXJyLmVuZCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZlcnNpb24uY29kZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBucG1WZXJzaW9uID0gKGF3YWl0IHZlcnNpb25Qcm9taXNlKS50b1N0cmluZygpLnRyaW0oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzZW12ZXJVdGlscy5zYXRpc2ZpZXNXaXRoUHJlcmVsZWFzZXMobnBtVmVyc2lvbiwgYD49Ny54YCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5wbUlkZW50ID0gc3RydWN0VXRpbHMubWFrZUlkZW50KG51bGwsIGBucG1gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnROcG1EZXNjcmlwdG9yID0gc3RydWN0VXRpbHMubWFrZURlc2NyaXB0b3IobnBtSWRlbnQsIG5wbVZlcnNpb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVxdWlyZWROcG1EZXNjcmlwdG9yID0gc3RydWN0VXRpbHMubWFrZURlc2NyaXB0b3IobnBtSWRlbnQsIGA+PTcueGApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBXb3Jrc3BhY2VzIGFyZW4ndCBzdXBwb3J0ZWQgYnkgJHtzdHJ1Y3RVdGlscy5wcmV0dHlEZXNjcmlwdG9yKGNvbmZpZ3VyYXRpb24sIGN1cnJlbnROcG1EZXNjcmlwdG9yKX07IHBsZWFzZSB1cGdyYWRlIHRvICR7c3RydWN0VXRpbHMucHJldHR5RGVzY3JpcHRvcihjb25maWd1cmF0aW9uLCByZXF1aXJlZE5wbURlc2NyaXB0b3IpfSAobnBtIGhhcyBiZWVuIGRldGVjdGVkIGFzIHRoZSBwcmltYXJ5IHBhY2thZ2UgbWFuYWdlciBmb3IgJHtmb3JtYXRVdGlscy5wcmV0dHkoY29uZmlndXJhdGlvbiwgY3dkLCBmb3JtYXRVdGlscy5UeXBlLlBBVEgpfSlgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB3b3Jrc3BhY2VDbGkgPSB3b3Jrc3BhY2UgIT09IG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBbYC0td29ya3NwYWNlYCwgd29ya3NwYWNlXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE90aGVyd2lzZSBucG0gd29uJ3QgcHJvcGVybHkgc2V0IHRoZSB1c2VyIGFnZW50LCB1c2luZyB0aGUgWWFyblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9uZSBpbnN0ZWFkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGVudi5ucG1fY29uZmlnX3VzZXJfYWdlbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVtb3ZlIGVudmlyb25tZW50IHZhcmlhYmxlcyB0aGF0IGxpbWl0IHRoZSBpbnN0YWxsIHRvIGp1c3QgcHJvZHVjdGlvbiBkZXBlbmRlbmNpZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgZW52Lm5wbV9jb25maWdfcHJvZHVjdGlvbjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgZW52Lk5QTV9DT05GSUdfUFJPRFVDVElPTjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgZW52Lk5PREVfRU5WO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdlIGNhbid0IHVzZSBgbnBtIGNpYCBiZWNhdXNlIHNvbWUgcHJvamVjdHMgZG9uJ3QgaGF2ZSBucG1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2NrZmlsZXMgdGhhdCBhcmUgdXAtdG8tZGF0ZS4gSG9wZWZ1bGx5IG5wbSB3b24ndCBkZWNpZGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0byBjaGFuZ2UgdGhlIHZlcnNpb25zIHJhbmRvbWx5LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGluc3RhbGwgPSBhd2FpdCBleGVjVXRpbHMucGlwZXZwKGBucG1gLCBbYGluc3RhbGxgXSwgeyBjd2QsIGVudiwgc3RkaW4sIHN0ZG91dCwgc3RkZXJyLCBlbmQ6IGV4ZWNVdGlscy5FbmRTdHJhdGVneS5FcnJvckNvZGUgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGluc3RhbGwuY29kZSAhPT0gMClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGluc3RhbGwuY29kZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwYWNrU3RyZWFtID0gbmV3IHN0cmVhbV8xLlBhc3NUaHJvdWdoKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFja1Byb21pc2UgPSBtaXNjVXRpbHMuYnVmZmVyU3RyZWFtKHBhY2tTdHJlYW0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhY2tTdHJlYW0ucGlwZShzdGRvdXQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEl0IHNlZW1zIHRoYXQgbnBtIGRvZXNuJ3Qgc3VwcG9ydCBzcGVjaWZ5aW5nIHRoZSBwYWNrIG91dHB1dCBwYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNvIHdlIGhhdmUgdG8gZXh0cmFjdCB0aGUgc3Rkb3V0IG9uIHRvcCBvZiBmb3JraW5nIGl0IHRvIHRoZSBsb2dzLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhY2sgPSBhd2FpdCBleGVjVXRpbHMucGlwZXZwKGBucG1gLCBbYHBhY2tgLCBgLS1zaWxlbnRgLCAuLi53b3Jrc3BhY2VDbGldLCB7IGN3ZCwgZW52LCBzdGRpbiwgc3Rkb3V0OiBwYWNrU3RyZWFtLCBzdGRlcnIgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhY2suY29kZSAhPT0gMClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBhY2suY29kZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwYWNrT3V0cHV0ID0gKGF3YWl0IHBhY2tQcm9taXNlKS50b1N0cmluZygpLnRyaW0oKS5yZXBsYWNlKC9eLipcXG4vcywgYGApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhY2tUYXJnZXQgPSBmc2xpYl8yLnBwYXRoLnJlc29sdmUoY3dkLCBmc2xpYl8yLm5wYXRoLnRvUG9ydGFibGVQYXRoKHBhY2tPdXRwdXQpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBPbmx5IHRoZW4gY2FuIHdlIG1vdmUgdGhlIHBhY2sgdG8gaXRzIHJpZ2h0ZnVsIGxvY2F0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgZnNsaWJfMi54ZnMucmVuYW1lUHJvbWlzZShwYWNrVGFyZ2V0LCBvdXRwdXRQYXRoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1dLFxuICAgICAgICAgICAgICAgIF0pO1xuICAgICAgICAgICAgICAgIGNvbnN0IHdvcmtmbG93ID0gd29ya2Zsb3dzLmdldChlZmZlY3RpdmVQYWNrYWdlTWFuYWdlcik7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB3b3JrZmxvdyA9PT0gYHVuZGVmaW5lZGApXG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQXNzZXJ0aW9uIGZhaWxlZDogVW5zdXBwb3J0ZWQgd29ya2Zsb3dgKTtcbiAgICAgICAgICAgICAgICBjb25zdCBjb2RlID0gYXdhaXQgd29ya2Zsb3coKTtcbiAgICAgICAgICAgICAgICBpZiAoY29kZSA9PT0gMCB8fCB0eXBlb2YgY29kZSA9PT0gYHVuZGVmaW5lZGApXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICBmc2xpYl8yLnhmcy5kZXRhY2hUZW1wKGxvZ0Rpcik7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFJlcG9ydF8xLlJlcG9ydEVycm9yKE1lc3NhZ2VOYW1lXzEuTWVzc2FnZU5hbWUuUEFDS0FHRV9QUkVQQVJBVElPTl9GQUlMRUQsIGBQYWNraW5nIHRoZSBwYWNrYWdlIGZhaWxlZCAoZXhpdCBjb2RlICR7Y29kZX0sIGxvZ3MgY2FuIGJlIGZvdW5kIGhlcmU6ICR7Zm9ybWF0VXRpbHMucHJldHR5KGNvbmZpZ3VyYXRpb24sIGxvZ0ZpbGUsIGZvcm1hdFV0aWxzLlR5cGUuUEFUSCl9KWApO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xufVxuZXhwb3J0cy5wcmVwYXJlRXh0ZXJuYWxQcm9qZWN0ID0gcHJlcGFyZUV4dGVybmFsUHJvamVjdDtcbmFzeW5jIGZ1bmN0aW9uIGhhc1BhY2thZ2VTY3JpcHQobG9jYXRvciwgc2NyaXB0TmFtZSwgeyBwcm9qZWN0IH0pIHtcbiAgICAvLyBXZSBjYW4gYXZvaWQgdXNpbmcgdGhlIGxpbmtlcnMgaWYgdGhlIGxvY2F0b3IgaXMgYSB3b3Jrc3BhY2VcbiAgICBjb25zdCB3b3Jrc3BhY2UgPSBwcm9qZWN0LnRyeVdvcmtzcGFjZUJ5TG9jYXRvcihsb2NhdG9yKTtcbiAgICBpZiAod29ya3NwYWNlICE9PSBudWxsKVxuICAgICAgICByZXR1cm4gaGFzV29ya3NwYWNlU2NyaXB0KHdvcmtzcGFjZSwgc2NyaXB0TmFtZSk7XG4gICAgY29uc3QgcGtnID0gcHJvamVjdC5zdG9yZWRQYWNrYWdlcy5nZXQobG9jYXRvci5sb2NhdG9ySGFzaCk7XG4gICAgaWYgKCFwa2cpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgUGFja2FnZSBmb3IgJHtzdHJ1Y3RVdGlscy5wcmV0dHlMb2NhdG9yKHByb2plY3QuY29uZmlndXJhdGlvbiwgbG9jYXRvcil9IG5vdCBmb3VuZCBpbiB0aGUgcHJvamVjdGApO1xuICAgIHJldHVybiBhd2FpdCBsaWJ6aXBfMS5aaXBPcGVuRlMub3BlblByb21pc2UoYXN5bmMgKHppcE9wZW5GcykgPT4ge1xuICAgICAgICBjb25zdCBjb25maWd1cmF0aW9uID0gcHJvamVjdC5jb25maWd1cmF0aW9uO1xuICAgICAgICBjb25zdCBsaW5rZXJzID0gcHJvamVjdC5jb25maWd1cmF0aW9uLmdldExpbmtlcnMoKTtcbiAgICAgICAgY29uc3QgbGlua2VyT3B0aW9ucyA9IHsgcHJvamVjdCwgcmVwb3J0OiBuZXcgU3RyZWFtUmVwb3J0XzEuU3RyZWFtUmVwb3J0KHsgc3Rkb3V0OiBuZXcgc3RyZWFtXzEuUGFzc1Rocm91Z2goKSwgY29uZmlndXJhdGlvbiB9KSB9O1xuICAgICAgICBjb25zdCBsaW5rZXIgPSBsaW5rZXJzLmZpbmQobGlua2VyID0+IGxpbmtlci5zdXBwb3J0c1BhY2thZ2UocGtnLCBsaW5rZXJPcHRpb25zKSk7XG4gICAgICAgIGlmICghbGlua2VyKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgcGFja2FnZSAke3N0cnVjdFV0aWxzLnByZXR0eUxvY2F0b3IocHJvamVjdC5jb25maWd1cmF0aW9uLCBwa2cpfSBpc24ndCBzdXBwb3J0ZWQgYnkgYW55IG9mIHRoZSBhdmFpbGFibGUgbGlua2Vyc2ApO1xuICAgICAgICBjb25zdCBwYWNrYWdlTG9jYXRpb24gPSBhd2FpdCBsaW5rZXIuZmluZFBhY2thZ2VMb2NhdGlvbihwa2csIGxpbmtlck9wdGlvbnMpO1xuICAgICAgICBjb25zdCBwYWNrYWdlRnMgPSBuZXcgZnNsaWJfMS5Dd2RGUyhwYWNrYWdlTG9jYXRpb24sIHsgYmFzZUZzOiB6aXBPcGVuRnMgfSk7XG4gICAgICAgIGNvbnN0IG1hbmlmZXN0ID0gYXdhaXQgTWFuaWZlc3RfMS5NYW5pZmVzdC5maW5kKGZzbGliXzEuUG9ydGFibGVQYXRoLmRvdCwgeyBiYXNlRnM6IHBhY2thZ2VGcyB9KTtcbiAgICAgICAgcmV0dXJuIG1hbmlmZXN0LnNjcmlwdHMuaGFzKHNjcmlwdE5hbWUpO1xuICAgIH0pO1xufVxuZXhwb3J0cy5oYXNQYWNrYWdlU2NyaXB0ID0gaGFzUGFja2FnZVNjcmlwdDtcbmFzeW5jIGZ1bmN0aW9uIGV4ZWN1dGVQYWNrYWdlU2NyaXB0KGxvY2F0b3IsIHNjcmlwdE5hbWUsIGFyZ3MsIHsgY3dkLCBwcm9qZWN0LCBzdGRpbiwgc3Rkb3V0LCBzdGRlcnIgfSkge1xuICAgIHJldHVybiBhd2FpdCBmc2xpYl8yLnhmcy5ta3RlbXBQcm9taXNlKGFzeW5jIChiaW5Gb2xkZXIpID0+IHtcbiAgICAgICAgY29uc3QgeyBtYW5pZmVzdCwgZW52LCBjd2Q6IHJlYWxDd2QgfSA9IGF3YWl0IGluaXRpYWxpemVQYWNrYWdlRW52aXJvbm1lbnQobG9jYXRvciwgeyBwcm9qZWN0LCBiaW5Gb2xkZXIsIGN3ZCwgbGlmZWN5Y2xlU2NyaXB0OiBzY3JpcHROYW1lIH0pO1xuICAgICAgICBjb25zdCBzY3JpcHQgPSBtYW5pZmVzdC5zY3JpcHRzLmdldChzY3JpcHROYW1lKTtcbiAgICAgICAgaWYgKHR5cGVvZiBzY3JpcHQgPT09IGB1bmRlZmluZWRgKVxuICAgICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgIGNvbnN0IHJlYWxFeGVjdXRvciA9IGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBhd2FpdCAoMCwgc2hlbGxfMS5leGVjdXRlKShzY3JpcHQsIGFyZ3MsIHsgY3dkOiByZWFsQ3dkLCBlbnYsIHN0ZGluLCBzdGRvdXQsIHN0ZGVyciB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgZXhlY3V0b3IgPSBhd2FpdCBwcm9qZWN0LmNvbmZpZ3VyYXRpb24ucmVkdWNlSG9vayhob29rcyA9PiB7XG4gICAgICAgICAgICByZXR1cm4gaG9va3Mud3JhcFNjcmlwdEV4ZWN1dGlvbjtcbiAgICAgICAgfSwgcmVhbEV4ZWN1dG9yLCBwcm9qZWN0LCBsb2NhdG9yLCBzY3JpcHROYW1lLCB7XG4gICAgICAgICAgICBzY3JpcHQsIGFyZ3MsIGN3ZDogcmVhbEN3ZCwgZW52LCBzdGRpbiwgc3Rkb3V0LCBzdGRlcnIsXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gYXdhaXQgZXhlY3V0b3IoKTtcbiAgICB9KTtcbn1cbmV4cG9ydHMuZXhlY3V0ZVBhY2thZ2VTY3JpcHQgPSBleGVjdXRlUGFja2FnZVNjcmlwdDtcbmFzeW5jIGZ1bmN0aW9uIGV4ZWN1dGVQYWNrYWdlU2hlbGxjb2RlKGxvY2F0b3IsIGNvbW1hbmQsIGFyZ3MsIHsgY3dkLCBwcm9qZWN0LCBzdGRpbiwgc3Rkb3V0LCBzdGRlcnIgfSkge1xuICAgIHJldHVybiBhd2FpdCBmc2xpYl8yLnhmcy5ta3RlbXBQcm9taXNlKGFzeW5jIChiaW5Gb2xkZXIpID0+IHtcbiAgICAgICAgY29uc3QgeyBlbnYsIGN3ZDogcmVhbEN3ZCB9ID0gYXdhaXQgaW5pdGlhbGl6ZVBhY2thZ2VFbnZpcm9ubWVudChsb2NhdG9yLCB7IHByb2plY3QsIGJpbkZvbGRlciwgY3dkIH0pO1xuICAgICAgICByZXR1cm4gYXdhaXQgKDAsIHNoZWxsXzEuZXhlY3V0ZSkoY29tbWFuZCwgYXJncywgeyBjd2Q6IHJlYWxDd2QsIGVudiwgc3RkaW4sIHN0ZG91dCwgc3RkZXJyIH0pO1xuICAgIH0pO1xufVxuZXhwb3J0cy5leGVjdXRlUGFja2FnZVNoZWxsY29kZSA9IGV4ZWN1dGVQYWNrYWdlU2hlbGxjb2RlO1xuYXN5bmMgZnVuY3Rpb24gaW5pdGlhbGl6ZVdvcmtzcGFjZUVudmlyb25tZW50KHdvcmtzcGFjZSwgeyBiaW5Gb2xkZXIsIGN3ZCwgbGlmZWN5Y2xlU2NyaXB0IH0pIHtcbiAgICBjb25zdCBlbnYgPSBhd2FpdCBtYWtlU2NyaXB0RW52KHsgcHJvamVjdDogd29ya3NwYWNlLnByb2plY3QsIGxvY2F0b3I6IHdvcmtzcGFjZS5hbmNob3JlZExvY2F0b3IsIGJpbkZvbGRlciwgbGlmZWN5Y2xlU2NyaXB0IH0pO1xuICAgIGF3YWl0IFByb21pc2UuYWxsKEFycmF5LmZyb20oYXdhaXQgZ2V0V29ya3NwYWNlQWNjZXNzaWJsZUJpbmFyaWVzKHdvcmtzcGFjZSksIChbYmluYXJ5TmFtZSwgWywgYmluYXJ5UGF0aF1dKSA9PiBtYWtlUGF0aFdyYXBwZXIoYmluRm9sZGVyLCAoMCwgZnNsaWJfMi50b0ZpbGVuYW1lKShiaW5hcnlOYW1lKSwgcHJvY2Vzcy5leGVjUGF0aCwgW2JpbmFyeVBhdGhdKSkpO1xuICAgIC8vIFdoZW4gb3BlcmF0aW5nIHVuZGVyIFBuUCwgYGluaXRpYWxpemVQYWNrYWdlRW52aXJvbm1lbnRgXG4gICAgLy8geWllbGRzIHBhY2thZ2UgbG9jYXRpb24gdG8gdGhlIGxpbmtlciwgd2hpY2ggZ29lcyBpbnRvXG4gICAgLy8gdGhlIFBuUCBob29rLCB3aGljaCByZXNvbHZlcyBwYXRocyByZWxhdGl2ZSB0byBkaXJuYW1lLFxuICAgIC8vIHdoaWNoIGlzIHJlYWxwYXRoJ2QgKGJlY2F1c2Ugb2YgTm9kZSkuIFRoZSByZWFscGF0aCB0aGF0XG4gICAgLy8gZm9sbG93cyBlbnN1cmVzIHRoYXQgd29ya3NwYWNlcyBhcmUgcmVhbHBhdGgnZCBpbiBhXG4gICAgLy8gc2ltaWxhciB3YXkuXG4gICAgLy9cbiAgICAvLyBJJ20gbm90IGVudGlyZWx5IGNvbWZvcnRhYmxlIHdpdGggdGhpcywgZXNwZWNpYWxseSBiZWNhdXNlXG4gICAgLy8gdGhlcmUgYXJlIG5vIHRlc3RzIHBlcnRhaW5pbmcgdG8gdGhpcyBiZWhhdmlvdXIgYW5kIHRoZSB1c2VcbiAgICAvLyBjYXNlIGlzIHN0aWxsIGEgYml0IGZ1enp5IHRvIG1lIChzb21ldGhpbmcgYWJvdXQgRmxvdyBub3RcbiAgICAvLyBoYW5kbGluZyB3ZWxsIHRoZSBjYXNlIHdoZXJlIGEgcHJvamVjdCB3YXMgMToxIHN5bWxpbmtlZFxuICAgIC8vIGludG8gYW5vdGhlciBwbGFjZSwgSSB0aGluaz8pLiBJIGFsc28gZG9uJ3QgbGlrZSB0aGUgaWRlYVxuICAgIC8vIG9mIHJlYWxwYXRoaW5nIHRoaW5nIGluIGdlbmVyYWwsIHNpbmNlIGl0IG1lYW5zIGxvc2luZ1xuICAgIC8vIGluZm9ybWF0aW9uLi4uXG4gICAgLy9cbiAgICAvLyBJdCdzIGZpbmUgZm9yIG5vdyBiZWNhdXNlIGl0IHByZXNlcnZlcyBhIGJlaGF2aW91ciBpbiAzLnhcbiAgICAvLyB0aGF0IHdhcyBhbHJlYWR5IHRoZXJlIGluIDIueCwgYnV0IGl0IHNob3VsZCBiZSBjb25zaWRlcmVkXG4gICAgLy8gZm9yIHJlbW92YWwgb3Igc3RhbmRhcmRpemF0aW9uIGlmIGl0IGV2ZXIgYmVjb21lcyBhIHByb2JsZW0uXG4gICAgLy9cbiAgICBpZiAodHlwZW9mIGN3ZCA9PT0gYHVuZGVmaW5lZGApXG4gICAgICAgIGN3ZCA9IGZzbGliXzIucHBhdGguZGlybmFtZShhd2FpdCBmc2xpYl8yLnhmcy5yZWFscGF0aFByb21pc2UoZnNsaWJfMi5wcGF0aC5qb2luKHdvcmtzcGFjZS5jd2QsIGBwYWNrYWdlLmpzb25gKSkpO1xuICAgIHJldHVybiB7IG1hbmlmZXN0OiB3b3Jrc3BhY2UubWFuaWZlc3QsIGJpbkZvbGRlciwgZW52LCBjd2QgfTtcbn1cbmFzeW5jIGZ1bmN0aW9uIGluaXRpYWxpemVQYWNrYWdlRW52aXJvbm1lbnQobG9jYXRvciwgeyBwcm9qZWN0LCBiaW5Gb2xkZXIsIGN3ZCwgbGlmZWN5Y2xlU2NyaXB0IH0pIHtcbiAgICAvLyBXZSBjYW4gYXZvaWQgdXNpbmcgdGhlIGxpbmtlcnMgaWYgdGhlIGxvY2F0b3IgaXMgYSB3b3Jrc3BhY2VcbiAgICBjb25zdCB3b3Jrc3BhY2UgPSBwcm9qZWN0LnRyeVdvcmtzcGFjZUJ5TG9jYXRvcihsb2NhdG9yKTtcbiAgICBpZiAod29ya3NwYWNlICE9PSBudWxsKVxuICAgICAgICByZXR1cm4gaW5pdGlhbGl6ZVdvcmtzcGFjZUVudmlyb25tZW50KHdvcmtzcGFjZSwgeyBiaW5Gb2xkZXIsIGN3ZCwgbGlmZWN5Y2xlU2NyaXB0IH0pO1xuICAgIGNvbnN0IHBrZyA9IHByb2plY3Quc3RvcmVkUGFja2FnZXMuZ2V0KGxvY2F0b3IubG9jYXRvckhhc2gpO1xuICAgIGlmICghcGtnKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFBhY2thZ2UgZm9yICR7c3RydWN0VXRpbHMucHJldHR5TG9jYXRvcihwcm9qZWN0LmNvbmZpZ3VyYXRpb24sIGxvY2F0b3IpfSBub3QgZm91bmQgaW4gdGhlIHByb2plY3RgKTtcbiAgICByZXR1cm4gYXdhaXQgbGliemlwXzEuWmlwT3BlbkZTLm9wZW5Qcm9taXNlKGFzeW5jICh6aXBPcGVuRnMpID0+IHtcbiAgICAgICAgY29uc3QgY29uZmlndXJhdGlvbiA9IHByb2plY3QuY29uZmlndXJhdGlvbjtcbiAgICAgICAgY29uc3QgbGlua2VycyA9IHByb2plY3QuY29uZmlndXJhdGlvbi5nZXRMaW5rZXJzKCk7XG4gICAgICAgIGNvbnN0IGxpbmtlck9wdGlvbnMgPSB7IHByb2plY3QsIHJlcG9ydDogbmV3IFN0cmVhbVJlcG9ydF8xLlN0cmVhbVJlcG9ydCh7IHN0ZG91dDogbmV3IHN0cmVhbV8xLlBhc3NUaHJvdWdoKCksIGNvbmZpZ3VyYXRpb24gfSkgfTtcbiAgICAgICAgY29uc3QgbGlua2VyID0gbGlua2Vycy5maW5kKGxpbmtlciA9PiBsaW5rZXIuc3VwcG9ydHNQYWNrYWdlKHBrZywgbGlua2VyT3B0aW9ucykpO1xuICAgICAgICBpZiAoIWxpbmtlcilcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVGhlIHBhY2thZ2UgJHtzdHJ1Y3RVdGlscy5wcmV0dHlMb2NhdG9yKHByb2plY3QuY29uZmlndXJhdGlvbiwgcGtnKX0gaXNuJ3Qgc3VwcG9ydGVkIGJ5IGFueSBvZiB0aGUgYXZhaWxhYmxlIGxpbmtlcnNgKTtcbiAgICAgICAgY29uc3QgZW52ID0gYXdhaXQgbWFrZVNjcmlwdEVudih7IHByb2plY3QsIGxvY2F0b3IsIGJpbkZvbGRlciwgbGlmZWN5Y2xlU2NyaXB0IH0pO1xuICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChBcnJheS5mcm9tKGF3YWl0IGdldFBhY2thZ2VBY2Nlc3NpYmxlQmluYXJpZXMobG9jYXRvciwgeyBwcm9qZWN0IH0pLCAoW2JpbmFyeU5hbWUsIFssIGJpbmFyeVBhdGhdXSkgPT4gbWFrZVBhdGhXcmFwcGVyKGJpbkZvbGRlciwgKDAsIGZzbGliXzIudG9GaWxlbmFtZSkoYmluYXJ5TmFtZSksIHByb2Nlc3MuZXhlY1BhdGgsIFtiaW5hcnlQYXRoXSkpKTtcbiAgICAgICAgY29uc3QgcGFja2FnZUxvY2F0aW9uID0gYXdhaXQgbGlua2VyLmZpbmRQYWNrYWdlTG9jYXRpb24ocGtnLCBsaW5rZXJPcHRpb25zKTtcbiAgICAgICAgY29uc3QgcGFja2FnZUZzID0gbmV3IGZzbGliXzEuQ3dkRlMocGFja2FnZUxvY2F0aW9uLCB7IGJhc2VGczogemlwT3BlbkZzIH0pO1xuICAgICAgICBjb25zdCBtYW5pZmVzdCA9IGF3YWl0IE1hbmlmZXN0XzEuTWFuaWZlc3QuZmluZChmc2xpYl8xLlBvcnRhYmxlUGF0aC5kb3QsIHsgYmFzZUZzOiBwYWNrYWdlRnMgfSk7XG4gICAgICAgIGlmICh0eXBlb2YgY3dkID09PSBgdW5kZWZpbmVkYClcbiAgICAgICAgICAgIGN3ZCA9IHBhY2thZ2VMb2NhdGlvbjtcbiAgICAgICAgcmV0dXJuIHsgbWFuaWZlc3QsIGJpbkZvbGRlciwgZW52LCBjd2QgfTtcbiAgICB9KTtcbn1cbmFzeW5jIGZ1bmN0aW9uIGV4ZWN1dGVXb3Jrc3BhY2VTY3JpcHQod29ya3NwYWNlLCBzY3JpcHROYW1lLCBhcmdzLCB7IGN3ZCwgc3RkaW4sIHN0ZG91dCwgc3RkZXJyIH0pIHtcbiAgICByZXR1cm4gYXdhaXQgZXhlY3V0ZVBhY2thZ2VTY3JpcHQod29ya3NwYWNlLmFuY2hvcmVkTG9jYXRvciwgc2NyaXB0TmFtZSwgYXJncywgeyBjd2QsIHByb2plY3Q6IHdvcmtzcGFjZS5wcm9qZWN0LCBzdGRpbiwgc3Rkb3V0LCBzdGRlcnIgfSk7XG59XG5leHBvcnRzLmV4ZWN1dGVXb3Jrc3BhY2VTY3JpcHQgPSBleGVjdXRlV29ya3NwYWNlU2NyaXB0O1xuZnVuY3Rpb24gaGFzV29ya3NwYWNlU2NyaXB0KHdvcmtzcGFjZSwgc2NyaXB0TmFtZSkge1xuICAgIHJldHVybiB3b3Jrc3BhY2UubWFuaWZlc3Quc2NyaXB0cy5oYXMoc2NyaXB0TmFtZSk7XG59XG5leHBvcnRzLmhhc1dvcmtzcGFjZVNjcmlwdCA9IGhhc1dvcmtzcGFjZVNjcmlwdDtcbmFzeW5jIGZ1bmN0aW9uIGV4ZWN1dGVXb3Jrc3BhY2VMaWZlY3ljbGVTY3JpcHQod29ya3NwYWNlLCBsaWZlY3ljbGVTY3JpcHROYW1lLCB7IGN3ZCwgcmVwb3J0IH0pIHtcbiAgICBjb25zdCB7IGNvbmZpZ3VyYXRpb24gfSA9IHdvcmtzcGFjZS5wcm9qZWN0O1xuICAgIGNvbnN0IHN0ZGluID0gbnVsbDtcbiAgICBhd2FpdCBmc2xpYl8yLnhmcy5ta3RlbXBQcm9taXNlKGFzeW5jIChsb2dEaXIpID0+IHtcbiAgICAgICAgY29uc3QgbG9nRmlsZSA9IGZzbGliXzIucHBhdGguam9pbihsb2dEaXIsIGAke2xpZmVjeWNsZVNjcmlwdE5hbWV9LmxvZ2ApO1xuICAgICAgICBjb25zdCBoZWFkZXIgPSBgIyBUaGlzIGZpbGUgY29udGFpbnMgdGhlIHJlc3VsdCBvZiBZYXJuIGNhbGxpbmcgdGhlIFwiJHtsaWZlY3ljbGVTY3JpcHROYW1lfVwiIGxpZmVjeWNsZSBzY3JpcHQgaW5zaWRlIGEgd29ya3NwYWNlIChcIiR7ZnNsaWJfMi5ucGF0aC5mcm9tUG9ydGFibGVQYXRoKHdvcmtzcGFjZS5jd2QpfVwiKVxcbmA7XG4gICAgICAgIGNvbnN0IHsgc3Rkb3V0LCBzdGRlcnIgfSA9IGNvbmZpZ3VyYXRpb24uZ2V0U3VicHJvY2Vzc1N0cmVhbXMobG9nRmlsZSwge1xuICAgICAgICAgICAgcmVwb3J0LFxuICAgICAgICAgICAgcHJlZml4OiBzdHJ1Y3RVdGlscy5wcmV0dHlMb2NhdG9yKGNvbmZpZ3VyYXRpb24sIHdvcmtzcGFjZS5hbmNob3JlZExvY2F0b3IpLFxuICAgICAgICAgICAgaGVhZGVyLFxuICAgICAgICB9KTtcbiAgICAgICAgcmVwb3J0LnJlcG9ydEluZm8oTWVzc2FnZU5hbWVfMS5NZXNzYWdlTmFtZS5MSUZFQ1lDTEVfU0NSSVBULCBgQ2FsbGluZyB0aGUgXCIke2xpZmVjeWNsZVNjcmlwdE5hbWV9XCIgbGlmZWN5Y2xlIHNjcmlwdGApO1xuICAgICAgICBjb25zdCBleGl0Q29kZSA9IGF3YWl0IGV4ZWN1dGVXb3Jrc3BhY2VTY3JpcHQod29ya3NwYWNlLCBsaWZlY3ljbGVTY3JpcHROYW1lLCBbXSwgeyBjd2QsIHN0ZGluLCBzdGRvdXQsIHN0ZGVyciB9KTtcbiAgICAgICAgc3Rkb3V0LmVuZCgpO1xuICAgICAgICBzdGRlcnIuZW5kKCk7XG4gICAgICAgIGlmIChleGl0Q29kZSAhPT0gMCkge1xuICAgICAgICAgICAgZnNsaWJfMi54ZnMuZGV0YWNoVGVtcChsb2dEaXIpO1xuICAgICAgICAgICAgdGhyb3cgbmV3IFJlcG9ydF8xLlJlcG9ydEVycm9yKE1lc3NhZ2VOYW1lXzEuTWVzc2FnZU5hbWUuTElGRUNZQ0xFX1NDUklQVCwgYCR7KDAsIGNhcGl0YWxpemVfMS5kZWZhdWx0KShsaWZlY3ljbGVTY3JpcHROYW1lKX0gc2NyaXB0IGZhaWxlZCAoZXhpdCBjb2RlICR7Zm9ybWF0VXRpbHMucHJldHR5KGNvbmZpZ3VyYXRpb24sIGV4aXRDb2RlLCBmb3JtYXRVdGlscy5UeXBlLk5VTUJFUil9LCBsb2dzIGNhbiBiZSBmb3VuZCBoZXJlOiAke2Zvcm1hdFV0aWxzLnByZXR0eShjb25maWd1cmF0aW9uLCBsb2dGaWxlLCBmb3JtYXRVdGlscy5UeXBlLlBBVEgpfSk7IHJ1biAke2Zvcm1hdFV0aWxzLnByZXR0eShjb25maWd1cmF0aW9uLCBgeWFybiAke2xpZmVjeWNsZVNjcmlwdE5hbWV9YCwgZm9ybWF0VXRpbHMuVHlwZS5DT0RFKX0gdG8gaW52ZXN0aWdhdGVgKTtcbiAgICAgICAgfVxuICAgIH0pO1xufVxuZXhwb3J0cy5leGVjdXRlV29ya3NwYWNlTGlmZWN5Y2xlU2NyaXB0ID0gZXhlY3V0ZVdvcmtzcGFjZUxpZmVjeWNsZVNjcmlwdDtcbmFzeW5jIGZ1bmN0aW9uIG1heWJlRXhlY3V0ZVdvcmtzcGFjZUxpZmVjeWNsZVNjcmlwdCh3b3Jrc3BhY2UsIGxpZmVjeWNsZVNjcmlwdE5hbWUsIG9wdHMpIHtcbiAgICBpZiAoaGFzV29ya3NwYWNlU2NyaXB0KHdvcmtzcGFjZSwgbGlmZWN5Y2xlU2NyaXB0TmFtZSkpIHtcbiAgICAgICAgYXdhaXQgZXhlY3V0ZVdvcmtzcGFjZUxpZmVjeWNsZVNjcmlwdCh3b3Jrc3BhY2UsIGxpZmVjeWNsZVNjcmlwdE5hbWUsIG9wdHMpO1xuICAgIH1cbn1cbmV4cG9ydHMubWF5YmVFeGVjdXRlV29ya3NwYWNlTGlmZWN5Y2xlU2NyaXB0ID0gbWF5YmVFeGVjdXRlV29ya3NwYWNlTGlmZWN5Y2xlU2NyaXB0O1xuLyoqXG4gKiBSZXR1cm4gdGhlIGJpbmFyaWVzIHRoYXQgY2FuIGJlIGFjY2Vzc2VkIGJ5IHRoZSBzcGVjaWZpZWQgcGFja2FnZVxuICpcbiAqIEBwYXJhbSBsb2NhdG9yIFRoZSBxdWVyaWVkIHBhY2thZ2VcbiAqIEBwYXJhbSBwcm9qZWN0IFRoZSBwcm9qZWN0IG93bmluZyB0aGUgcGFja2FnZVxuICovXG5hc3luYyBmdW5jdGlvbiBnZXRQYWNrYWdlQWNjZXNzaWJsZUJpbmFyaWVzKGxvY2F0b3IsIHsgcHJvamVjdCB9KSB7XG4gICAgY29uc3QgY29uZmlndXJhdGlvbiA9IHByb2plY3QuY29uZmlndXJhdGlvbjtcbiAgICBjb25zdCBiaW5hcmllcyA9IG5ldyBNYXAoKTtcbiAgICBjb25zdCBwa2cgPSBwcm9qZWN0LnN0b3JlZFBhY2thZ2VzLmdldChsb2NhdG9yLmxvY2F0b3JIYXNoKTtcbiAgICBpZiAoIXBrZylcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBQYWNrYWdlIGZvciAke3N0cnVjdFV0aWxzLnByZXR0eUxvY2F0b3IoY29uZmlndXJhdGlvbiwgbG9jYXRvcil9IG5vdCBmb3VuZCBpbiB0aGUgcHJvamVjdGApO1xuICAgIGNvbnN0IHN0ZG91dCA9IG5ldyBzdHJlYW1fMS5Xcml0YWJsZSgpO1xuICAgIGNvbnN0IGxpbmtlcnMgPSBjb25maWd1cmF0aW9uLmdldExpbmtlcnMoKTtcbiAgICBjb25zdCBsaW5rZXJPcHRpb25zID0geyBwcm9qZWN0LCByZXBvcnQ6IG5ldyBTdHJlYW1SZXBvcnRfMS5TdHJlYW1SZXBvcnQoeyBjb25maWd1cmF0aW9uLCBzdGRvdXQgfSkgfTtcbiAgICBjb25zdCB2aXNpYmxlTG9jYXRvcnMgPSBuZXcgU2V0KFtsb2NhdG9yLmxvY2F0b3JIYXNoXSk7XG4gICAgZm9yIChjb25zdCBkZXNjcmlwdG9yIG9mIHBrZy5kZXBlbmRlbmNpZXMudmFsdWVzKCkpIHtcbiAgICAgICAgY29uc3QgcmVzb2x1dGlvbiA9IHByb2plY3Quc3RvcmVkUmVzb2x1dGlvbnMuZ2V0KGRlc2NyaXB0b3IuZGVzY3JpcHRvckhhc2gpO1xuICAgICAgICBpZiAoIXJlc29sdXRpb24pXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEFzc2VydGlvbiBmYWlsZWQ6IFRoZSByZXNvbHV0aW9uICgke3N0cnVjdFV0aWxzLnByZXR0eURlc2NyaXB0b3IoY29uZmlndXJhdGlvbiwgZGVzY3JpcHRvcil9KSBzaG91bGQgaGF2ZSBiZWVuIHJlZ2lzdGVyZWRgKTtcbiAgICAgICAgdmlzaWJsZUxvY2F0b3JzLmFkZChyZXNvbHV0aW9uKTtcbiAgICB9XG4gICAgY29uc3QgZGVwZW5kZW5jaWVzV2l0aEJpbmFyaWVzID0gYXdhaXQgUHJvbWlzZS5hbGwoQXJyYXkuZnJvbSh2aXNpYmxlTG9jYXRvcnMsIGFzeW5jIChsb2NhdG9ySGFzaCkgPT4ge1xuICAgICAgICBjb25zdCBkZXBlbmRlbmN5ID0gcHJvamVjdC5zdG9yZWRQYWNrYWdlcy5nZXQobG9jYXRvckhhc2gpO1xuICAgICAgICBpZiAoIWRlcGVuZGVuY3kpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEFzc2VydGlvbiBmYWlsZWQ6IFRoZSBwYWNrYWdlICgke2xvY2F0b3JIYXNofSkgc2hvdWxkIGhhdmUgYmVlbiByZWdpc3RlcmVkYCk7XG4gICAgICAgIGlmIChkZXBlbmRlbmN5LmJpbi5zaXplID09PSAwKVxuICAgICAgICAgICAgcmV0dXJuIG1pc2NVdGlscy5tYXBBbmRGaWx0ZXIuc2tpcDtcbiAgICAgICAgY29uc3QgbGlua2VyID0gbGlua2Vycy5maW5kKGxpbmtlciA9PiBsaW5rZXIuc3VwcG9ydHNQYWNrYWdlKGRlcGVuZGVuY3ksIGxpbmtlck9wdGlvbnMpKTtcbiAgICAgICAgaWYgKCFsaW5rZXIpXG4gICAgICAgICAgICByZXR1cm4gbWlzY1V0aWxzLm1hcEFuZEZpbHRlci5za2lwO1xuICAgICAgICBsZXQgcGFja2FnZUxvY2F0aW9uID0gbnVsbDtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHBhY2thZ2VMb2NhdGlvbiA9IGF3YWl0IGxpbmtlci5maW5kUGFja2FnZUxvY2F0aW9uKGRlcGVuZGVuY3ksIGxpbmtlck9wdGlvbnMpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIC8vIFNvbWUgcGFja2FnZXMgbWF5IG5vdCBiZSBpbnN0YWxsZWQgd2hlbiB0aGV5IGFyZSBpbmNvbXBhdGlibGVcbiAgICAgICAgICAgIC8vIHdpdGggdGhlIGN1cnJlbnQgc3lzdGVtLlxuICAgICAgICAgICAgaWYgKGVyci5jb2RlID09PSBgTE9DQVRPUl9OT1RfSU5TVEFMTEVEYCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBtaXNjVXRpbHMubWFwQW5kRmlsdGVyLnNraXA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgZGVwZW5kZW5jeSwgcGFja2FnZUxvY2F0aW9uIH07XG4gICAgfSkpO1xuICAgIC8vIFRoZSBvcmRlciBpbiB3aGljaCBiaW5hcmllcyBvdmVyd3JpdGUgZWFjaCBvdGhlciBtdXN0IGJlIHN0YWJsZVxuICAgIGZvciAoY29uc3QgY2FuZGlkYXRlIG9mIGRlcGVuZGVuY2llc1dpdGhCaW5hcmllcykge1xuICAgICAgICBpZiAoY2FuZGlkYXRlID09PSBtaXNjVXRpbHMubWFwQW5kRmlsdGVyLnNraXApXG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgY29uc3QgeyBkZXBlbmRlbmN5LCBwYWNrYWdlTG9jYXRpb24gfSA9IGNhbmRpZGF0ZTtcbiAgICAgICAgZm9yIChjb25zdCBbbmFtZSwgdGFyZ2V0XSBvZiBkZXBlbmRlbmN5LmJpbikge1xuICAgICAgICAgICAgYmluYXJpZXMuc2V0KG5hbWUsIFtkZXBlbmRlbmN5LCBmc2xpYl8yLm5wYXRoLmZyb21Qb3J0YWJsZVBhdGgoZnNsaWJfMi5wcGF0aC5yZXNvbHZlKHBhY2thZ2VMb2NhdGlvbiwgdGFyZ2V0KSldKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gYmluYXJpZXM7XG59XG5leHBvcnRzLmdldFBhY2thZ2VBY2Nlc3NpYmxlQmluYXJpZXMgPSBnZXRQYWNrYWdlQWNjZXNzaWJsZUJpbmFyaWVzO1xuLyoqXG4gKiBSZXR1cm4gdGhlIGJpbmFyaWVzIHRoYXQgY2FuIGJlIGFjY2Vzc2VkIGJ5IHRoZSBzcGVjaWZpZWQgd29ya3NwYWNlXG4gKlxuICogQHBhcmFtIHdvcmtzcGFjZSBUaGUgcXVlcmllZCB3b3Jrc3BhY2VcbiAqL1xuYXN5bmMgZnVuY3Rpb24gZ2V0V29ya3NwYWNlQWNjZXNzaWJsZUJpbmFyaWVzKHdvcmtzcGFjZSkge1xuICAgIHJldHVybiBhd2FpdCBnZXRQYWNrYWdlQWNjZXNzaWJsZUJpbmFyaWVzKHdvcmtzcGFjZS5hbmNob3JlZExvY2F0b3IsIHsgcHJvamVjdDogd29ya3NwYWNlLnByb2plY3QgfSk7XG59XG5leHBvcnRzLmdldFdvcmtzcGFjZUFjY2Vzc2libGVCaW5hcmllcyA9IGdldFdvcmtzcGFjZUFjY2Vzc2libGVCaW5hcmllcztcbi8qKlxuICogRXhlY3V0ZSBhIGJpbmFyeSBmcm9tIHRoZSBzcGVjaWZpZWQgcGFja2FnZS5cbiAqXG4gKiBOb3RlIHRoYXQgXCJiaW5hcnlcIiBpbiB0aGlzIHNlbnNlIG1lYW5zIFwiYSBKYXZhc2NyaXB0IGZpbGVcIi4gQWN0dWFsIG5hdGl2ZVxuICogYmluYXJpZXMgY2Fubm90IGJlIGV4ZWN1dGVkIHRoaXMgd2F5LCBiZWNhdXNlIHdlIHVzZSBOb2RlIGluIG9yZGVyIHRvXG4gKiB0cmFuc3BhcmVudGx5IHJlYWQgZnJvbSB0aGUgYXJjaGl2ZXMuXG4gKlxuICogQHBhcmFtIGxvY2F0b3IgVGhlIHF1ZXJpZWQgcGFja2FnZVxuICogQHBhcmFtIGJpbmFyeU5hbWUgVGhlIG5hbWUgb2YgdGhlIGJpbmFyeSBmaWxlIHRvIGV4ZWN1dGVcbiAqIEBwYXJhbSBhcmdzIFRoZSBhcmd1bWVudHMgdG8gcGFzcyB0byB0aGUgZmlsZVxuICovXG5hc3luYyBmdW5jdGlvbiBleGVjdXRlUGFja2FnZUFjY2Vzc2libGVCaW5hcnkobG9jYXRvciwgYmluYXJ5TmFtZSwgYXJncywgeyBjd2QsIHByb2plY3QsIHN0ZGluLCBzdGRvdXQsIHN0ZGVyciwgbm9kZUFyZ3MgPSBbXSwgcGFja2FnZUFjY2Vzc2libGVCaW5hcmllcyB9KSB7XG4gICAgcGFja2FnZUFjY2Vzc2libGVCaW5hcmllcyAhPT0gbnVsbCAmJiBwYWNrYWdlQWNjZXNzaWJsZUJpbmFyaWVzICE9PSB2b2lkIDAgPyBwYWNrYWdlQWNjZXNzaWJsZUJpbmFyaWVzIDogKHBhY2thZ2VBY2Nlc3NpYmxlQmluYXJpZXMgPSBhd2FpdCBnZXRQYWNrYWdlQWNjZXNzaWJsZUJpbmFyaWVzKGxvY2F0b3IsIHsgcHJvamVjdCB9KSk7XG4gICAgY29uc3QgYmluYXJ5ID0gcGFja2FnZUFjY2Vzc2libGVCaW5hcmllcy5nZXQoYmluYXJ5TmFtZSk7XG4gICAgaWYgKCFiaW5hcnkpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQmluYXJ5IG5vdCBmb3VuZCAoJHtiaW5hcnlOYW1lfSkgZm9yICR7c3RydWN0VXRpbHMucHJldHR5TG9jYXRvcihwcm9qZWN0LmNvbmZpZ3VyYXRpb24sIGxvY2F0b3IpfWApO1xuICAgIHJldHVybiBhd2FpdCBmc2xpYl8yLnhmcy5ta3RlbXBQcm9taXNlKGFzeW5jIChiaW5Gb2xkZXIpID0+IHtcbiAgICAgICAgY29uc3QgWywgYmluYXJ5UGF0aF0gPSBiaW5hcnk7XG4gICAgICAgIGNvbnN0IGVudiA9IGF3YWl0IG1ha2VTY3JpcHRFbnYoeyBwcm9qZWN0LCBsb2NhdG9yLCBiaW5Gb2xkZXIgfSk7XG4gICAgICAgIGF3YWl0IFByb21pc2UuYWxsKEFycmF5LmZyb20ocGFja2FnZUFjY2Vzc2libGVCaW5hcmllcywgKFtiaW5hcnlOYW1lLCBbLCBiaW5hcnlQYXRoXV0pID0+IG1ha2VQYXRoV3JhcHBlcihlbnYuQkVSUllfQklOX0ZPTERFUiwgKDAsIGZzbGliXzIudG9GaWxlbmFtZSkoYmluYXJ5TmFtZSksIHByb2Nlc3MuZXhlY1BhdGgsIFtiaW5hcnlQYXRoXSkpKTtcbiAgICAgICAgbGV0IHJlc3VsdDtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJlc3VsdCA9IGF3YWl0IGV4ZWNVdGlscy5waXBldnAocHJvY2Vzcy5leGVjUGF0aCwgWy4uLm5vZGVBcmdzLCBiaW5hcnlQYXRoLCAuLi5hcmdzXSwgeyBjd2QsIGVudiwgc3RkaW4sIHN0ZG91dCwgc3RkZXJyIH0pO1xuICAgICAgICB9XG4gICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgYXdhaXQgZnNsaWJfMi54ZnMucmVtb3ZlUHJvbWlzZShlbnYuQkVSUllfQklOX0ZPTERFUik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdC5jb2RlO1xuICAgIH0pO1xufVxuZXhwb3J0cy5leGVjdXRlUGFja2FnZUFjY2Vzc2libGVCaW5hcnkgPSBleGVjdXRlUGFja2FnZUFjY2Vzc2libGVCaW5hcnk7XG4vKipcbiAqIEV4ZWN1dGUgYSBiaW5hcnkgZnJvbSB0aGUgc3BlY2lmaWVkIHdvcmtzcGFjZVxuICpcbiAqIEBwYXJhbSB3b3Jrc3BhY2UgVGhlIHF1ZXJpZWQgcGFja2FnZVxuICogQHBhcmFtIGJpbmFyeU5hbWUgVGhlIG5hbWUgb2YgdGhlIGJpbmFyeSBmaWxlIHRvIGV4ZWN1dGVcbiAqIEBwYXJhbSBhcmdzIFRoZSBhcmd1bWVudHMgdG8gcGFzcyB0byB0aGUgZmlsZVxuICovXG5hc3luYyBmdW5jdGlvbiBleGVjdXRlV29ya3NwYWNlQWNjZXNzaWJsZUJpbmFyeSh3b3Jrc3BhY2UsIGJpbmFyeU5hbWUsIGFyZ3MsIHsgY3dkLCBzdGRpbiwgc3Rkb3V0LCBzdGRlcnIsIHBhY2thZ2VBY2Nlc3NpYmxlQmluYXJpZXMgfSkge1xuICAgIHJldHVybiBhd2FpdCBleGVjdXRlUGFja2FnZUFjY2Vzc2libGVCaW5hcnkod29ya3NwYWNlLmFuY2hvcmVkTG9jYXRvciwgYmluYXJ5TmFtZSwgYXJncywgeyBwcm9qZWN0OiB3b3Jrc3BhY2UucHJvamVjdCwgY3dkLCBzdGRpbiwgc3Rkb3V0LCBzdGRlcnIsIHBhY2thZ2VBY2Nlc3NpYmxlQmluYXJpZXMgfSk7XG59XG5leHBvcnRzLmV4ZWN1dGVXb3Jrc3BhY2VBY2Nlc3NpYmxlQmluYXJ5ID0gZXhlY3V0ZVdvcmtzcGFjZUFjY2Vzc2libGVCaW5hcnk7XG4iLCAiJ3VzZSBzdHJpY3QnXG5cbi8vIHR1cm4gdGFyKDEpIHN0eWxlIGFyZ3MgbGlrZSBgQ2AgaW50byB0aGUgbW9yZSB2ZXJib3NlIHRoaW5ncyBsaWtlIGBjd2RgXG5cbmNvbnN0IGFyZ21hcCA9IG5ldyBNYXAoW1xuICBbJ0MnLCAnY3dkJ10sXG4gIFsnZicsICdmaWxlJ10sXG4gIFsneicsICdnemlwJ10sXG4gIFsnUCcsICdwcmVzZXJ2ZVBhdGhzJ10sXG4gIFsnVScsICd1bmxpbmsnXSxcbiAgWydzdHJpcC1jb21wb25lbnRzJywgJ3N0cmlwJ10sXG4gIFsnc3RyaXBDb21wb25lbnRzJywgJ3N0cmlwJ10sXG4gIFsna2VlcC1uZXdlcicsICduZXdlciddLFxuICBbJ2tlZXBOZXdlcicsICduZXdlciddLFxuICBbJ2tlZXAtbmV3ZXItZmlsZXMnLCAnbmV3ZXInXSxcbiAgWydrZWVwTmV3ZXJGaWxlcycsICduZXdlciddLFxuICBbJ2snLCAna2VlcCddLFxuICBbJ2tlZXAtZXhpc3RpbmcnLCAna2VlcCddLFxuICBbJ2tlZXBFeGlzdGluZycsICdrZWVwJ10sXG4gIFsnbScsICdub010aW1lJ10sXG4gIFsnbm8tbXRpbWUnLCAnbm9NdGltZSddLFxuICBbJ3AnLCAncHJlc2VydmVPd25lciddLFxuICBbJ0wnLCAnZm9sbG93J10sXG4gIFsnaCcsICdmb2xsb3cnXSxcbl0pXG5cbm1vZHVsZS5leHBvcnRzID0gb3B0ID0+IG9wdCA/IE9iamVjdC5rZXlzKG9wdCkubWFwKGsgPT4gW1xuICBhcmdtYXAuaGFzKGspID8gYXJnbWFwLmdldChrKSA6IGssIG9wdFtrXSxcbl0pLnJlZHVjZSgoc2V0LCBrdikgPT4gKHNldFtrdlswXV0gPSBrdlsxXSwgc2V0KSwgT2JqZWN0LmNyZWF0ZShudWxsKSkgOiB7fVxuIiwgIid1c2Ugc3RyaWN0J1xuY29uc3QgcHJvYyA9IHR5cGVvZiBwcm9jZXNzID09PSAnb2JqZWN0JyAmJiBwcm9jZXNzID8gcHJvY2VzcyA6IHtcbiAgc3Rkb3V0OiBudWxsLFxuICBzdGRlcnI6IG51bGwsXG59XG5jb25zdCBFRSA9IHJlcXVpcmUoJ2V2ZW50cycpXG5jb25zdCBTdHJlYW0gPSByZXF1aXJlKCdzdHJlYW0nKVxuY29uc3QgU0QgPSByZXF1aXJlKCdzdHJpbmdfZGVjb2RlcicpLlN0cmluZ0RlY29kZXJcblxuY29uc3QgRU9GID0gU3ltYm9sKCdFT0YnKVxuY29uc3QgTUFZQkVfRU1JVF9FTkQgPSBTeW1ib2woJ21heWJlRW1pdEVuZCcpXG5jb25zdCBFTUlUVEVEX0VORCA9IFN5bWJvbCgnZW1pdHRlZEVuZCcpXG5jb25zdCBFTUlUVElOR19FTkQgPSBTeW1ib2woJ2VtaXR0aW5nRW5kJylcbmNvbnN0IEVNSVRURURfRVJST1IgPSBTeW1ib2woJ2VtaXR0ZWRFcnJvcicpXG5jb25zdCBDTE9TRUQgPSBTeW1ib2woJ2Nsb3NlZCcpXG5jb25zdCBSRUFEID0gU3ltYm9sKCdyZWFkJylcbmNvbnN0IEZMVVNIID0gU3ltYm9sKCdmbHVzaCcpXG5jb25zdCBGTFVTSENIVU5LID0gU3ltYm9sKCdmbHVzaENodW5rJylcbmNvbnN0IEVOQ09ESU5HID0gU3ltYm9sKCdlbmNvZGluZycpXG5jb25zdCBERUNPREVSID0gU3ltYm9sKCdkZWNvZGVyJylcbmNvbnN0IEZMT1dJTkcgPSBTeW1ib2woJ2Zsb3dpbmcnKVxuY29uc3QgUEFVU0VEID0gU3ltYm9sKCdwYXVzZWQnKVxuY29uc3QgUkVTVU1FID0gU3ltYm9sKCdyZXN1bWUnKVxuY29uc3QgQlVGRkVSTEVOR1RIID0gU3ltYm9sKCdidWZmZXJMZW5ndGgnKVxuY29uc3QgQlVGRkVSUFVTSCA9IFN5bWJvbCgnYnVmZmVyUHVzaCcpXG5jb25zdCBCVUZGRVJTSElGVCA9IFN5bWJvbCgnYnVmZmVyU2hpZnQnKVxuY29uc3QgT0JKRUNUTU9ERSA9IFN5bWJvbCgnb2JqZWN0TW9kZScpXG5jb25zdCBERVNUUk9ZRUQgPSBTeW1ib2woJ2Rlc3Ryb3llZCcpXG5jb25zdCBFTUlUREFUQSA9IFN5bWJvbCgnZW1pdERhdGEnKVxuY29uc3QgRU1JVEVORCA9IFN5bWJvbCgnZW1pdEVuZCcpXG5jb25zdCBFTUlURU5EMiA9IFN5bWJvbCgnZW1pdEVuZDInKVxuY29uc3QgQVNZTkMgPSBTeW1ib2woJ2FzeW5jJylcblxuY29uc3QgZGVmZXIgPSBmbiA9PiBQcm9taXNlLnJlc29sdmUoKS50aGVuKGZuKVxuXG4vLyBUT0RPIHJlbW92ZSB3aGVuIE5vZGUgdjggc3VwcG9ydCBkcm9wc1xuY29uc3QgZG9JdGVyID0gZ2xvYmFsLl9NUF9OT19JVEVSQVRPUl9TWU1CT0xTXyAgIT09ICcxJ1xuY29uc3QgQVNZTkNJVEVSQVRPUiA9IGRvSXRlciAmJiBTeW1ib2wuYXN5bmNJdGVyYXRvclxuICB8fCBTeW1ib2woJ2FzeW5jSXRlcmF0b3Igbm90IGltcGxlbWVudGVkJylcbmNvbnN0IElURVJBVE9SID0gZG9JdGVyICYmIFN5bWJvbC5pdGVyYXRvclxuICB8fCBTeW1ib2woJ2l0ZXJhdG9yIG5vdCBpbXBsZW1lbnRlZCcpXG5cbi8vIGV2ZW50cyB0aGF0IG1lYW4gJ3RoZSBzdHJlYW0gaXMgb3Zlcidcbi8vIHRoZXNlIGFyZSB0cmVhdGVkIHNwZWNpYWxseSwgYW5kIHJlLWVtaXR0ZWRcbi8vIGlmIHRoZXkgYXJlIGxpc3RlbmVkIGZvciBhZnRlciBlbWl0dGluZy5cbmNvbnN0IGlzRW5kaXNoID0gZXYgPT5cbiAgZXYgPT09ICdlbmQnIHx8XG4gIGV2ID09PSAnZmluaXNoJyB8fFxuICBldiA9PT0gJ3ByZWZpbmlzaCdcblxuY29uc3QgaXNBcnJheUJ1ZmZlciA9IGIgPT4gYiBpbnN0YW5jZW9mIEFycmF5QnVmZmVyIHx8XG4gIHR5cGVvZiBiID09PSAnb2JqZWN0JyAmJlxuICBiLmNvbnN0cnVjdG9yICYmXG4gIGIuY29uc3RydWN0b3IubmFtZSA9PT0gJ0FycmF5QnVmZmVyJyAmJlxuICBiLmJ5dGVMZW5ndGggPj0gMFxuXG5jb25zdCBpc0FycmF5QnVmZmVyVmlldyA9IGIgPT4gIUJ1ZmZlci5pc0J1ZmZlcihiKSAmJiBBcnJheUJ1ZmZlci5pc1ZpZXcoYilcblxuY2xhc3MgUGlwZSB7XG4gIGNvbnN0cnVjdG9yIChzcmMsIGRlc3QsIG9wdHMpIHtcbiAgICB0aGlzLnNyYyA9IHNyY1xuICAgIHRoaXMuZGVzdCA9IGRlc3RcbiAgICB0aGlzLm9wdHMgPSBvcHRzXG4gICAgdGhpcy5vbmRyYWluID0gKCkgPT4gc3JjW1JFU1VNRV0oKVxuICAgIGRlc3Qub24oJ2RyYWluJywgdGhpcy5vbmRyYWluKVxuICB9XG4gIHVucGlwZSAoKSB7XG4gICAgdGhpcy5kZXN0LnJlbW92ZUxpc3RlbmVyKCdkcmFpbicsIHRoaXMub25kcmFpbilcbiAgfVxuICAvLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAtIG9ubHkgaGVyZSBmb3IgdGhlIHByb3RvdHlwZVxuICBwcm94eUVycm9ycyAoKSB7fVxuICBlbmQgKCkge1xuICAgIHRoaXMudW5waXBlKClcbiAgICBpZiAodGhpcy5vcHRzLmVuZClcbiAgICAgIHRoaXMuZGVzdC5lbmQoKVxuICB9XG59XG5cbmNsYXNzIFBpcGVQcm94eUVycm9ycyBleHRlbmRzIFBpcGUge1xuICB1bnBpcGUgKCkge1xuICAgIHRoaXMuc3JjLnJlbW92ZUxpc3RlbmVyKCdlcnJvcicsIHRoaXMucHJveHlFcnJvcnMpXG4gICAgc3VwZXIudW5waXBlKClcbiAgfVxuICBjb25zdHJ1Y3RvciAoc3JjLCBkZXN0LCBvcHRzKSB7XG4gICAgc3VwZXIoc3JjLCBkZXN0LCBvcHRzKVxuICAgIHRoaXMucHJveHlFcnJvcnMgPSBlciA9PiBkZXN0LmVtaXQoJ2Vycm9yJywgZXIpXG4gICAgc3JjLm9uKCdlcnJvcicsIHRoaXMucHJveHlFcnJvcnMpXG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjbGFzcyBNaW5pcGFzcyBleHRlbmRzIFN0cmVhbSB7XG4gIGNvbnN0cnVjdG9yIChvcHRpb25zKSB7XG4gICAgc3VwZXIoKVxuICAgIHRoaXNbRkxPV0lOR10gPSBmYWxzZVxuICAgIC8vIHdoZXRoZXIgd2UncmUgZXhwbGljaXRseSBwYXVzZWRcbiAgICB0aGlzW1BBVVNFRF0gPSBmYWxzZVxuICAgIHRoaXMucGlwZXMgPSBbXVxuICAgIHRoaXMuYnVmZmVyID0gW11cbiAgICB0aGlzW09CSkVDVE1PREVdID0gb3B0aW9ucyAmJiBvcHRpb25zLm9iamVjdE1vZGUgfHwgZmFsc2VcbiAgICBpZiAodGhpc1tPQkpFQ1RNT0RFXSlcbiAgICAgIHRoaXNbRU5DT0RJTkddID0gbnVsbFxuICAgIGVsc2VcbiAgICAgIHRoaXNbRU5DT0RJTkddID0gb3B0aW9ucyAmJiBvcHRpb25zLmVuY29kaW5nIHx8IG51bGxcbiAgICBpZiAodGhpc1tFTkNPRElOR10gPT09ICdidWZmZXInKVxuICAgICAgdGhpc1tFTkNPRElOR10gPSBudWxsXG4gICAgdGhpc1tBU1lOQ10gPSBvcHRpb25zICYmICEhb3B0aW9ucy5hc3luYyB8fCBmYWxzZVxuICAgIHRoaXNbREVDT0RFUl0gPSB0aGlzW0VOQ09ESU5HXSA/IG5ldyBTRCh0aGlzW0VOQ09ESU5HXSkgOiBudWxsXG4gICAgdGhpc1tFT0ZdID0gZmFsc2VcbiAgICB0aGlzW0VNSVRURURfRU5EXSA9IGZhbHNlXG4gICAgdGhpc1tFTUlUVElOR19FTkRdID0gZmFsc2VcbiAgICB0aGlzW0NMT1NFRF0gPSBmYWxzZVxuICAgIHRoaXNbRU1JVFRFRF9FUlJPUl0gPSBudWxsXG4gICAgdGhpcy53cml0YWJsZSA9IHRydWVcbiAgICB0aGlzLnJlYWRhYmxlID0gdHJ1ZVxuICAgIHRoaXNbQlVGRkVSTEVOR1RIXSA9IDBcbiAgICB0aGlzW0RFU1RST1lFRF0gPSBmYWxzZVxuICB9XG5cbiAgZ2V0IGJ1ZmZlckxlbmd0aCAoKSB7IHJldHVybiB0aGlzW0JVRkZFUkxFTkdUSF0gfVxuXG4gIGdldCBlbmNvZGluZyAoKSB7IHJldHVybiB0aGlzW0VOQ09ESU5HXSB9XG4gIHNldCBlbmNvZGluZyAoZW5jKSB7XG4gICAgaWYgKHRoaXNbT0JKRUNUTU9ERV0pXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2Nhbm5vdCBzZXQgZW5jb2RpbmcgaW4gb2JqZWN0TW9kZScpXG5cbiAgICBpZiAodGhpc1tFTkNPRElOR10gJiYgZW5jICE9PSB0aGlzW0VOQ09ESU5HXSAmJlxuICAgICAgICAodGhpc1tERUNPREVSXSAmJiB0aGlzW0RFQ09ERVJdLmxhc3ROZWVkIHx8IHRoaXNbQlVGRkVSTEVOR1RIXSkpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2Nhbm5vdCBjaGFuZ2UgZW5jb2RpbmcnKVxuXG4gICAgaWYgKHRoaXNbRU5DT0RJTkddICE9PSBlbmMpIHtcbiAgICAgIHRoaXNbREVDT0RFUl0gPSBlbmMgPyBuZXcgU0QoZW5jKSA6IG51bGxcbiAgICAgIGlmICh0aGlzLmJ1ZmZlci5sZW5ndGgpXG4gICAgICAgIHRoaXMuYnVmZmVyID0gdGhpcy5idWZmZXIubWFwKGNodW5rID0+IHRoaXNbREVDT0RFUl0ud3JpdGUoY2h1bmspKVxuICAgIH1cblxuICAgIHRoaXNbRU5DT0RJTkddID0gZW5jXG4gIH1cblxuICBzZXRFbmNvZGluZyAoZW5jKSB7XG4gICAgdGhpcy5lbmNvZGluZyA9IGVuY1xuICB9XG5cbiAgZ2V0IG9iamVjdE1vZGUgKCkgeyByZXR1cm4gdGhpc1tPQkpFQ1RNT0RFXSB9XG4gIHNldCBvYmplY3RNb2RlIChvbSkgeyB0aGlzW09CSkVDVE1PREVdID0gdGhpc1tPQkpFQ1RNT0RFXSB8fCAhIW9tIH1cblxuICBnZXQgWydhc3luYyddICgpIHsgcmV0dXJuIHRoaXNbQVNZTkNdIH1cbiAgc2V0IFsnYXN5bmMnXSAoYSkgeyB0aGlzW0FTWU5DXSA9IHRoaXNbQVNZTkNdIHx8ICEhYSB9XG5cbiAgd3JpdGUgKGNodW5rLCBlbmNvZGluZywgY2IpIHtcbiAgICBpZiAodGhpc1tFT0ZdKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKCd3cml0ZSBhZnRlciBlbmQnKVxuXG4gICAgaWYgKHRoaXNbREVTVFJPWUVEXSkge1xuICAgICAgdGhpcy5lbWl0KCdlcnJvcicsIE9iamVjdC5hc3NpZ24oXG4gICAgICAgIG5ldyBFcnJvcignQ2Fubm90IGNhbGwgd3JpdGUgYWZ0ZXIgYSBzdHJlYW0gd2FzIGRlc3Ryb3llZCcpLFxuICAgICAgICB7IGNvZGU6ICdFUlJfU1RSRUFNX0RFU1RST1lFRCcgfVxuICAgICAgKSlcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBlbmNvZGluZyA9PT0gJ2Z1bmN0aW9uJylcbiAgICAgIGNiID0gZW5jb2RpbmcsIGVuY29kaW5nID0gJ3V0ZjgnXG5cbiAgICBpZiAoIWVuY29kaW5nKVxuICAgICAgZW5jb2RpbmcgPSAndXRmOCdcblxuICAgIGNvbnN0IGZuID0gdGhpc1tBU1lOQ10gPyBkZWZlciA6IGYgPT4gZigpXG5cbiAgICAvLyBjb252ZXJ0IGFycmF5IGJ1ZmZlcnMgYW5kIHR5cGVkIGFycmF5IHZpZXdzIGludG8gYnVmZmVyc1xuICAgIC8vIGF0IHNvbWUgcG9pbnQgaW4gdGhlIGZ1dHVyZSwgd2UgbWF5IHdhbnQgdG8gZG8gdGhlIG9wcG9zaXRlIVxuICAgIC8vIGxlYXZlIHN0cmluZ3MgYW5kIGJ1ZmZlcnMgYXMtaXNcbiAgICAvLyBhbnl0aGluZyBlbHNlIHN3aXRjaGVzIHVzIGludG8gb2JqZWN0IG1vZGVcbiAgICBpZiAoIXRoaXNbT0JKRUNUTU9ERV0gJiYgIUJ1ZmZlci5pc0J1ZmZlcihjaHVuaykpIHtcbiAgICAgIGlmIChpc0FycmF5QnVmZmVyVmlldyhjaHVuaykpXG4gICAgICAgIGNodW5rID0gQnVmZmVyLmZyb20oY2h1bmsuYnVmZmVyLCBjaHVuay5ieXRlT2Zmc2V0LCBjaHVuay5ieXRlTGVuZ3RoKVxuICAgICAgZWxzZSBpZiAoaXNBcnJheUJ1ZmZlcihjaHVuaykpXG4gICAgICAgIGNodW5rID0gQnVmZmVyLmZyb20oY2h1bmspXG4gICAgICBlbHNlIGlmICh0eXBlb2YgY2h1bmsgIT09ICdzdHJpbmcnKVxuICAgICAgICAvLyB1c2UgdGhlIHNldHRlciBzbyB3ZSB0aHJvdyBpZiB3ZSBoYXZlIGVuY29kaW5nIHNldFxuICAgICAgICB0aGlzLm9iamVjdE1vZGUgPSB0cnVlXG4gICAgfVxuXG4gICAgLy8gaGFuZGxlIG9iamVjdCBtb2RlIHVwIGZyb250LCBzaW5jZSBpdCdzIHNpbXBsZXJcbiAgICAvLyB0aGlzIHlpZWxkcyBiZXR0ZXIgcGVyZm9ybWFuY2UsIGZld2VyIGNoZWNrcyBsYXRlci5cbiAgICBpZiAodGhpc1tPQkpFQ1RNT0RFXSkge1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmIC0gbWF5YmUgaW1wb3NzaWJsZT8gKi9cbiAgICAgIGlmICh0aGlzLmZsb3dpbmcgJiYgdGhpc1tCVUZGRVJMRU5HVEhdICE9PSAwKVxuICAgICAgICB0aGlzW0ZMVVNIXSh0cnVlKVxuXG4gICAgICBpZiAodGhpcy5mbG93aW5nKVxuICAgICAgICB0aGlzLmVtaXQoJ2RhdGEnLCBjaHVuaylcbiAgICAgIGVsc2VcbiAgICAgICAgdGhpc1tCVUZGRVJQVVNIXShjaHVuaylcblxuICAgICAgaWYgKHRoaXNbQlVGRkVSTEVOR1RIXSAhPT0gMClcbiAgICAgICAgdGhpcy5lbWl0KCdyZWFkYWJsZScpXG5cbiAgICAgIGlmIChjYilcbiAgICAgICAgZm4oY2IpXG5cbiAgICAgIHJldHVybiB0aGlzLmZsb3dpbmdcbiAgICB9XG5cbiAgICAvLyBhdCB0aGlzIHBvaW50IHRoZSBjaHVuayBpcyBhIGJ1ZmZlciBvciBzdHJpbmdcbiAgICAvLyBkb24ndCBidWZmZXIgaXQgdXAgb3Igc2VuZCBpdCB0byB0aGUgZGVjb2RlclxuICAgIGlmICghY2h1bmsubGVuZ3RoKSB7XG4gICAgICBpZiAodGhpc1tCVUZGRVJMRU5HVEhdICE9PSAwKVxuICAgICAgICB0aGlzLmVtaXQoJ3JlYWRhYmxlJylcbiAgICAgIGlmIChjYilcbiAgICAgICAgZm4oY2IpXG4gICAgICByZXR1cm4gdGhpcy5mbG93aW5nXG4gICAgfVxuXG4gICAgLy8gZmFzdC1wYXRoIHdyaXRpbmcgc3RyaW5ncyBvZiBzYW1lIGVuY29kaW5nIHRvIGEgc3RyZWFtIHdpdGhcbiAgICAvLyBhbiBlbXB0eSBidWZmZXIsIHNraXBwaW5nIHRoZSBidWZmZXIvZGVjb2RlciBkYW5jZVxuICAgIGlmICh0eXBlb2YgY2h1bmsgPT09ICdzdHJpbmcnICYmXG4gICAgICAgIC8vIHVubGVzcyBpdCBpcyBhIHN0cmluZyBhbHJlYWR5IHJlYWR5IGZvciB1cyB0byB1c2VcbiAgICAgICAgIShlbmNvZGluZyA9PT0gdGhpc1tFTkNPRElOR10gJiYgIXRoaXNbREVDT0RFUl0ubGFzdE5lZWQpKSB7XG4gICAgICBjaHVuayA9IEJ1ZmZlci5mcm9tKGNodW5rLCBlbmNvZGluZylcbiAgICB9XG5cbiAgICBpZiAoQnVmZmVyLmlzQnVmZmVyKGNodW5rKSAmJiB0aGlzW0VOQ09ESU5HXSlcbiAgICAgIGNodW5rID0gdGhpc1tERUNPREVSXS53cml0ZShjaHVuaylcblxuICAgIC8vIE5vdGU6IGZsdXNoaW5nIENBTiBwb3RlbnRpYWxseSBzd2l0Y2ggdXMgaW50byBub3QtZmxvd2luZyBtb2RlXG4gICAgaWYgKHRoaXMuZmxvd2luZyAmJiB0aGlzW0JVRkZFUkxFTkdUSF0gIT09IDApXG4gICAgICB0aGlzW0ZMVVNIXSh0cnVlKVxuXG4gICAgaWYgKHRoaXMuZmxvd2luZylcbiAgICAgIHRoaXMuZW1pdCgnZGF0YScsIGNodW5rKVxuICAgIGVsc2VcbiAgICAgIHRoaXNbQlVGRkVSUFVTSF0oY2h1bmspXG5cbiAgICBpZiAodGhpc1tCVUZGRVJMRU5HVEhdICE9PSAwKVxuICAgICAgdGhpcy5lbWl0KCdyZWFkYWJsZScpXG5cbiAgICBpZiAoY2IpXG4gICAgICBmbihjYilcblxuICAgIHJldHVybiB0aGlzLmZsb3dpbmdcbiAgfVxuXG4gIHJlYWQgKG4pIHtcbiAgICBpZiAodGhpc1tERVNUUk9ZRURdKVxuICAgICAgcmV0dXJuIG51bGxcblxuICAgIGlmICh0aGlzW0JVRkZFUkxFTkdUSF0gPT09IDAgfHwgbiA9PT0gMCB8fCBuID4gdGhpc1tCVUZGRVJMRU5HVEhdKSB7XG4gICAgICB0aGlzW01BWUJFX0VNSVRfRU5EXSgpXG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cblxuICAgIGlmICh0aGlzW09CSkVDVE1PREVdKVxuICAgICAgbiA9IG51bGxcblxuICAgIGlmICh0aGlzLmJ1ZmZlci5sZW5ndGggPiAxICYmICF0aGlzW09CSkVDVE1PREVdKSB7XG4gICAgICBpZiAodGhpcy5lbmNvZGluZylcbiAgICAgICAgdGhpcy5idWZmZXIgPSBbdGhpcy5idWZmZXIuam9pbignJyldXG4gICAgICBlbHNlXG4gICAgICAgIHRoaXMuYnVmZmVyID0gW0J1ZmZlci5jb25jYXQodGhpcy5idWZmZXIsIHRoaXNbQlVGRkVSTEVOR1RIXSldXG4gICAgfVxuXG4gICAgY29uc3QgcmV0ID0gdGhpc1tSRUFEXShuIHx8IG51bGwsIHRoaXMuYnVmZmVyWzBdKVxuICAgIHRoaXNbTUFZQkVfRU1JVF9FTkRdKClcbiAgICByZXR1cm4gcmV0XG4gIH1cblxuICBbUkVBRF0gKG4sIGNodW5rKSB7XG4gICAgaWYgKG4gPT09IGNodW5rLmxlbmd0aCB8fCBuID09PSBudWxsKVxuICAgICAgdGhpc1tCVUZGRVJTSElGVF0oKVxuICAgIGVsc2Uge1xuICAgICAgdGhpcy5idWZmZXJbMF0gPSBjaHVuay5zbGljZShuKVxuICAgICAgY2h1bmsgPSBjaHVuay5zbGljZSgwLCBuKVxuICAgICAgdGhpc1tCVUZGRVJMRU5HVEhdIC09IG5cbiAgICB9XG5cbiAgICB0aGlzLmVtaXQoJ2RhdGEnLCBjaHVuaylcblxuICAgIGlmICghdGhpcy5idWZmZXIubGVuZ3RoICYmICF0aGlzW0VPRl0pXG4gICAgICB0aGlzLmVtaXQoJ2RyYWluJylcblxuICAgIHJldHVybiBjaHVua1xuICB9XG5cbiAgZW5kIChjaHVuaywgZW5jb2RpbmcsIGNiKSB7XG4gICAgaWYgKHR5cGVvZiBjaHVuayA9PT0gJ2Z1bmN0aW9uJylcbiAgICAgIGNiID0gY2h1bmssIGNodW5rID0gbnVsbFxuICAgIGlmICh0eXBlb2YgZW5jb2RpbmcgPT09ICdmdW5jdGlvbicpXG4gICAgICBjYiA9IGVuY29kaW5nLCBlbmNvZGluZyA9ICd1dGY4J1xuICAgIGlmIChjaHVuaylcbiAgICAgIHRoaXMud3JpdGUoY2h1bmssIGVuY29kaW5nKVxuICAgIGlmIChjYilcbiAgICAgIHRoaXMub25jZSgnZW5kJywgY2IpXG4gICAgdGhpc1tFT0ZdID0gdHJ1ZVxuICAgIHRoaXMud3JpdGFibGUgPSBmYWxzZVxuXG4gICAgLy8gaWYgd2UgaGF2ZW4ndCB3cml0dGVuIGFueXRoaW5nLCB0aGVuIGdvIGFoZWFkIGFuZCBlbWl0LFxuICAgIC8vIGV2ZW4gaWYgd2UncmUgbm90IHJlYWRpbmcuXG4gICAgLy8gd2UnbGwgcmUtZW1pdCBpZiBhIG5ldyAnZW5kJyBsaXN0ZW5lciBpcyBhZGRlZCBhbnl3YXkuXG4gICAgLy8gVGhpcyBtYWtlcyBNUCBtb3JlIHN1aXRhYmxlIHRvIHdyaXRlLW9ubHkgdXNlIGNhc2VzLlxuICAgIGlmICh0aGlzLmZsb3dpbmcgfHwgIXRoaXNbUEFVU0VEXSlcbiAgICAgIHRoaXNbTUFZQkVfRU1JVF9FTkRdKClcbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgLy8gZG9uJ3QgbGV0IHRoZSBpbnRlcm5hbCByZXN1bWUgYmUgb3ZlcndyaXR0ZW5cbiAgW1JFU1VNRV0gKCkge1xuICAgIGlmICh0aGlzW0RFU1RST1lFRF0pXG4gICAgICByZXR1cm5cblxuICAgIHRoaXNbUEFVU0VEXSA9IGZhbHNlXG4gICAgdGhpc1tGTE9XSU5HXSA9IHRydWVcbiAgICB0aGlzLmVtaXQoJ3Jlc3VtZScpXG4gICAgaWYgKHRoaXMuYnVmZmVyLmxlbmd0aClcbiAgICAgIHRoaXNbRkxVU0hdKClcbiAgICBlbHNlIGlmICh0aGlzW0VPRl0pXG4gICAgICB0aGlzW01BWUJFX0VNSVRfRU5EXSgpXG4gICAgZWxzZVxuICAgICAgdGhpcy5lbWl0KCdkcmFpbicpXG4gIH1cblxuICByZXN1bWUgKCkge1xuICAgIHJldHVybiB0aGlzW1JFU1VNRV0oKVxuICB9XG5cbiAgcGF1c2UgKCkge1xuICAgIHRoaXNbRkxPV0lOR10gPSBmYWxzZVxuICAgIHRoaXNbUEFVU0VEXSA9IHRydWVcbiAgfVxuXG4gIGdldCBkZXN0cm95ZWQgKCkge1xuICAgIHJldHVybiB0aGlzW0RFU1RST1lFRF1cbiAgfVxuXG4gIGdldCBmbG93aW5nICgpIHtcbiAgICByZXR1cm4gdGhpc1tGTE9XSU5HXVxuICB9XG5cbiAgZ2V0IHBhdXNlZCAoKSB7XG4gICAgcmV0dXJuIHRoaXNbUEFVU0VEXVxuICB9XG5cbiAgW0JVRkZFUlBVU0hdIChjaHVuaykge1xuICAgIGlmICh0aGlzW09CSkVDVE1PREVdKVxuICAgICAgdGhpc1tCVUZGRVJMRU5HVEhdICs9IDFcbiAgICBlbHNlXG4gICAgICB0aGlzW0JVRkZFUkxFTkdUSF0gKz0gY2h1bmsubGVuZ3RoXG4gICAgdGhpcy5idWZmZXIucHVzaChjaHVuaylcbiAgfVxuXG4gIFtCVUZGRVJTSElGVF0gKCkge1xuICAgIGlmICh0aGlzLmJ1ZmZlci5sZW5ndGgpIHtcbiAgICAgIGlmICh0aGlzW09CSkVDVE1PREVdKVxuICAgICAgICB0aGlzW0JVRkZFUkxFTkdUSF0gLT0gMVxuICAgICAgZWxzZVxuICAgICAgICB0aGlzW0JVRkZFUkxFTkdUSF0gLT0gdGhpcy5idWZmZXJbMF0ubGVuZ3RoXG4gICAgfVxuICAgIHJldHVybiB0aGlzLmJ1ZmZlci5zaGlmdCgpXG4gIH1cblxuICBbRkxVU0hdIChub0RyYWluKSB7XG4gICAgZG8ge30gd2hpbGUgKHRoaXNbRkxVU0hDSFVOS10odGhpc1tCVUZGRVJTSElGVF0oKSkpXG5cbiAgICBpZiAoIW5vRHJhaW4gJiYgIXRoaXMuYnVmZmVyLmxlbmd0aCAmJiAhdGhpc1tFT0ZdKVxuICAgICAgdGhpcy5lbWl0KCdkcmFpbicpXG4gIH1cblxuICBbRkxVU0hDSFVOS10gKGNodW5rKSB7XG4gICAgcmV0dXJuIGNodW5rID8gKHRoaXMuZW1pdCgnZGF0YScsIGNodW5rKSwgdGhpcy5mbG93aW5nKSA6IGZhbHNlXG4gIH1cblxuICBwaXBlIChkZXN0LCBvcHRzKSB7XG4gICAgaWYgKHRoaXNbREVTVFJPWUVEXSlcbiAgICAgIHJldHVyblxuXG4gICAgY29uc3QgZW5kZWQgPSB0aGlzW0VNSVRURURfRU5EXVxuICAgIG9wdHMgPSBvcHRzIHx8IHt9XG4gICAgaWYgKGRlc3QgPT09IHByb2Muc3Rkb3V0IHx8IGRlc3QgPT09IHByb2Muc3RkZXJyKVxuICAgICAgb3B0cy5lbmQgPSBmYWxzZVxuICAgIGVsc2VcbiAgICAgIG9wdHMuZW5kID0gb3B0cy5lbmQgIT09IGZhbHNlXG4gICAgb3B0cy5wcm94eUVycm9ycyA9ICEhb3B0cy5wcm94eUVycm9yc1xuXG4gICAgLy8gcGlwaW5nIGFuIGVuZGVkIHN0cmVhbSBlbmRzIGltbWVkaWF0ZWx5XG4gICAgaWYgKGVuZGVkKSB7XG4gICAgICBpZiAob3B0cy5lbmQpXG4gICAgICAgIGRlc3QuZW5kKClcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5waXBlcy5wdXNoKCFvcHRzLnByb3h5RXJyb3JzID8gbmV3IFBpcGUodGhpcywgZGVzdCwgb3B0cylcbiAgICAgICAgOiBuZXcgUGlwZVByb3h5RXJyb3JzKHRoaXMsIGRlc3QsIG9wdHMpKVxuICAgICAgaWYgKHRoaXNbQVNZTkNdKVxuICAgICAgICBkZWZlcigoKSA9PiB0aGlzW1JFU1VNRV0oKSlcbiAgICAgIGVsc2VcbiAgICAgICAgdGhpc1tSRVNVTUVdKClcbiAgICB9XG5cbiAgICByZXR1cm4gZGVzdFxuICB9XG5cbiAgdW5waXBlIChkZXN0KSB7XG4gICAgY29uc3QgcCA9IHRoaXMucGlwZXMuZmluZChwID0+IHAuZGVzdCA9PT0gZGVzdClcbiAgICBpZiAocCkge1xuICAgICAgdGhpcy5waXBlcy5zcGxpY2UodGhpcy5waXBlcy5pbmRleE9mKHApLCAxKVxuICAgICAgcC51bnBpcGUoKVxuICAgIH1cbiAgfVxuXG4gIGFkZExpc3RlbmVyIChldiwgZm4pIHtcbiAgICByZXR1cm4gdGhpcy5vbihldiwgZm4pXG4gIH1cblxuICBvbiAoZXYsIGZuKSB7XG4gICAgY29uc3QgcmV0ID0gc3VwZXIub24oZXYsIGZuKVxuICAgIGlmIChldiA9PT0gJ2RhdGEnICYmICF0aGlzLnBpcGVzLmxlbmd0aCAmJiAhdGhpcy5mbG93aW5nKVxuICAgICAgdGhpc1tSRVNVTUVdKClcbiAgICBlbHNlIGlmIChldiA9PT0gJ3JlYWRhYmxlJyAmJiB0aGlzW0JVRkZFUkxFTkdUSF0gIT09IDApXG4gICAgICBzdXBlci5lbWl0KCdyZWFkYWJsZScpXG4gICAgZWxzZSBpZiAoaXNFbmRpc2goZXYpICYmIHRoaXNbRU1JVFRFRF9FTkRdKSB7XG4gICAgICBzdXBlci5lbWl0KGV2KVxuICAgICAgdGhpcy5yZW1vdmVBbGxMaXN0ZW5lcnMoZXYpXG4gICAgfSBlbHNlIGlmIChldiA9PT0gJ2Vycm9yJyAmJiB0aGlzW0VNSVRURURfRVJST1JdKSB7XG4gICAgICBpZiAodGhpc1tBU1lOQ10pXG4gICAgICAgIGRlZmVyKCgpID0+IGZuLmNhbGwodGhpcywgdGhpc1tFTUlUVEVEX0VSUk9SXSkpXG4gICAgICBlbHNlXG4gICAgICAgIGZuLmNhbGwodGhpcywgdGhpc1tFTUlUVEVEX0VSUk9SXSlcbiAgICB9XG4gICAgcmV0dXJuIHJldFxuICB9XG5cbiAgZ2V0IGVtaXR0ZWRFbmQgKCkge1xuICAgIHJldHVybiB0aGlzW0VNSVRURURfRU5EXVxuICB9XG5cbiAgW01BWUJFX0VNSVRfRU5EXSAoKSB7XG4gICAgaWYgKCF0aGlzW0VNSVRUSU5HX0VORF0gJiZcbiAgICAgICAgIXRoaXNbRU1JVFRFRF9FTkRdICYmXG4gICAgICAgICF0aGlzW0RFU1RST1lFRF0gJiZcbiAgICAgICAgdGhpcy5idWZmZXIubGVuZ3RoID09PSAwICYmXG4gICAgICAgIHRoaXNbRU9GXSkge1xuICAgICAgdGhpc1tFTUlUVElOR19FTkRdID0gdHJ1ZVxuICAgICAgdGhpcy5lbWl0KCdlbmQnKVxuICAgICAgdGhpcy5lbWl0KCdwcmVmaW5pc2gnKVxuICAgICAgdGhpcy5lbWl0KCdmaW5pc2gnKVxuICAgICAgaWYgKHRoaXNbQ0xPU0VEXSlcbiAgICAgICAgdGhpcy5lbWl0KCdjbG9zZScpXG4gICAgICB0aGlzW0VNSVRUSU5HX0VORF0gPSBmYWxzZVxuICAgIH1cbiAgfVxuXG4gIGVtaXQgKGV2LCBkYXRhLCAuLi5leHRyYSkge1xuICAgIC8vIGVycm9yIGFuZCBjbG9zZSBhcmUgb25seSBldmVudHMgYWxsb3dlZCBhZnRlciBjYWxsaW5nIGRlc3Ryb3koKVxuICAgIGlmIChldiAhPT0gJ2Vycm9yJyAmJiBldiAhPT0gJ2Nsb3NlJyAmJiBldiAhPT0gREVTVFJPWUVEICYmIHRoaXNbREVTVFJPWUVEXSlcbiAgICAgIHJldHVyblxuICAgIGVsc2UgaWYgKGV2ID09PSAnZGF0YScpIHtcbiAgICAgIHJldHVybiAhZGF0YSA/IGZhbHNlXG4gICAgICAgIDogdGhpc1tBU1lOQ10gPyBkZWZlcigoKSA9PiB0aGlzW0VNSVREQVRBXShkYXRhKSlcbiAgICAgICAgOiB0aGlzW0VNSVREQVRBXShkYXRhKVxuICAgIH0gZWxzZSBpZiAoZXYgPT09ICdlbmQnKSB7XG4gICAgICByZXR1cm4gdGhpc1tFTUlURU5EXSgpXG4gICAgfSBlbHNlIGlmIChldiA9PT0gJ2Nsb3NlJykge1xuICAgICAgdGhpc1tDTE9TRURdID0gdHJ1ZVxuICAgICAgLy8gZG9uJ3QgZW1pdCBjbG9zZSBiZWZvcmUgJ2VuZCcgYW5kICdmaW5pc2gnXG4gICAgICBpZiAoIXRoaXNbRU1JVFRFRF9FTkRdICYmICF0aGlzW0RFU1RST1lFRF0pXG4gICAgICAgIHJldHVyblxuICAgICAgY29uc3QgcmV0ID0gc3VwZXIuZW1pdCgnY2xvc2UnKVxuICAgICAgdGhpcy5yZW1vdmVBbGxMaXN0ZW5lcnMoJ2Nsb3NlJylcbiAgICAgIHJldHVybiByZXRcbiAgICB9IGVsc2UgaWYgKGV2ID09PSAnZXJyb3InKSB7XG4gICAgICB0aGlzW0VNSVRURURfRVJST1JdID0gZGF0YVxuICAgICAgY29uc3QgcmV0ID0gc3VwZXIuZW1pdCgnZXJyb3InLCBkYXRhKVxuICAgICAgdGhpc1tNQVlCRV9FTUlUX0VORF0oKVxuICAgICAgcmV0dXJuIHJldFxuICAgIH0gZWxzZSBpZiAoZXYgPT09ICdyZXN1bWUnKSB7XG4gICAgICBjb25zdCByZXQgPSBzdXBlci5lbWl0KCdyZXN1bWUnKVxuICAgICAgdGhpc1tNQVlCRV9FTUlUX0VORF0oKVxuICAgICAgcmV0dXJuIHJldFxuICAgIH0gZWxzZSBpZiAoZXYgPT09ICdmaW5pc2gnIHx8IGV2ID09PSAncHJlZmluaXNoJykge1xuICAgICAgY29uc3QgcmV0ID0gc3VwZXIuZW1pdChldilcbiAgICAgIHRoaXMucmVtb3ZlQWxsTGlzdGVuZXJzKGV2KVxuICAgICAgcmV0dXJuIHJldFxuICAgIH1cblxuICAgIC8vIFNvbWUgb3RoZXIgdW5rbm93biBldmVudFxuICAgIGNvbnN0IHJldCA9IHN1cGVyLmVtaXQoZXYsIGRhdGEsIC4uLmV4dHJhKVxuICAgIHRoaXNbTUFZQkVfRU1JVF9FTkRdKClcbiAgICByZXR1cm4gcmV0XG4gIH1cblxuICBbRU1JVERBVEFdIChkYXRhKSB7XG4gICAgZm9yIChjb25zdCBwIG9mIHRoaXMucGlwZXMpIHtcbiAgICAgIGlmIChwLmRlc3Qud3JpdGUoZGF0YSkgPT09IGZhbHNlKVxuICAgICAgICB0aGlzLnBhdXNlKClcbiAgICB9XG4gICAgY29uc3QgcmV0ID0gc3VwZXIuZW1pdCgnZGF0YScsIGRhdGEpXG4gICAgdGhpc1tNQVlCRV9FTUlUX0VORF0oKVxuICAgIHJldHVybiByZXRcbiAgfVxuXG4gIFtFTUlURU5EXSAoKSB7XG4gICAgaWYgKHRoaXNbRU1JVFRFRF9FTkRdKVxuICAgICAgcmV0dXJuXG5cbiAgICB0aGlzW0VNSVRURURfRU5EXSA9IHRydWVcbiAgICB0aGlzLnJlYWRhYmxlID0gZmFsc2VcbiAgICBpZiAodGhpc1tBU1lOQ10pXG4gICAgICBkZWZlcigoKSA9PiB0aGlzW0VNSVRFTkQyXSgpKVxuICAgIGVsc2VcbiAgICAgIHRoaXNbRU1JVEVORDJdKClcbiAgfVxuXG4gIFtFTUlURU5EMl0gKCkge1xuICAgIGlmICh0aGlzW0RFQ09ERVJdKSB7XG4gICAgICBjb25zdCBkYXRhID0gdGhpc1tERUNPREVSXS5lbmQoKVxuICAgICAgaWYgKGRhdGEpIHtcbiAgICAgICAgZm9yIChjb25zdCBwIG9mIHRoaXMucGlwZXMpIHtcbiAgICAgICAgICBwLmRlc3Qud3JpdGUoZGF0YSlcbiAgICAgICAgfVxuICAgICAgICBzdXBlci5lbWl0KCdkYXRhJywgZGF0YSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IHAgb2YgdGhpcy5waXBlcykge1xuICAgICAgcC5lbmQoKVxuICAgIH1cbiAgICBjb25zdCByZXQgPSBzdXBlci5lbWl0KCdlbmQnKVxuICAgIHRoaXMucmVtb3ZlQWxsTGlzdGVuZXJzKCdlbmQnKVxuICAgIHJldHVybiByZXRcbiAgfVxuXG4gIC8vIGNvbnN0IGFsbCA9IGF3YWl0IHN0cmVhbS5jb2xsZWN0KClcbiAgY29sbGVjdCAoKSB7XG4gICAgY29uc3QgYnVmID0gW11cbiAgICBpZiAoIXRoaXNbT0JKRUNUTU9ERV0pXG4gICAgICBidWYuZGF0YUxlbmd0aCA9IDBcbiAgICAvLyBzZXQgdGhlIHByb21pc2UgZmlyc3QsIGluIGNhc2UgYW4gZXJyb3IgaXMgcmFpc2VkXG4gICAgLy8gYnkgdHJpZ2dlcmluZyB0aGUgZmxvdyBoZXJlLlxuICAgIGNvbnN0IHAgPSB0aGlzLnByb21pc2UoKVxuICAgIHRoaXMub24oJ2RhdGEnLCBjID0+IHtcbiAgICAgIGJ1Zi5wdXNoKGMpXG4gICAgICBpZiAoIXRoaXNbT0JKRUNUTU9ERV0pXG4gICAgICAgIGJ1Zi5kYXRhTGVuZ3RoICs9IGMubGVuZ3RoXG4gICAgfSlcbiAgICByZXR1cm4gcC50aGVuKCgpID0+IGJ1ZilcbiAgfVxuXG4gIC8vIGNvbnN0IGRhdGEgPSBhd2FpdCBzdHJlYW0uY29uY2F0KClcbiAgY29uY2F0ICgpIHtcbiAgICByZXR1cm4gdGhpc1tPQkpFQ1RNT0RFXVxuICAgICAgPyBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoJ2Nhbm5vdCBjb25jYXQgaW4gb2JqZWN0TW9kZScpKVxuICAgICAgOiB0aGlzLmNvbGxlY3QoKS50aGVuKGJ1ZiA9PlxuICAgICAgICAgIHRoaXNbT0JKRUNUTU9ERV1cbiAgICAgICAgICAgID8gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCdjYW5ub3QgY29uY2F0IGluIG9iamVjdE1vZGUnKSlcbiAgICAgICAgICAgIDogdGhpc1tFTkNPRElOR10gPyBidWYuam9pbignJykgOiBCdWZmZXIuY29uY2F0KGJ1ZiwgYnVmLmRhdGFMZW5ndGgpKVxuICB9XG5cbiAgLy8gc3RyZWFtLnByb21pc2UoKS50aGVuKCgpID0+IGRvbmUsIGVyID0+IGVtaXR0ZWQgZXJyb3IpXG4gIHByb21pc2UgKCkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICB0aGlzLm9uKERFU1RST1lFRCwgKCkgPT4gcmVqZWN0KG5ldyBFcnJvcignc3RyZWFtIGRlc3Ryb3llZCcpKSlcbiAgICAgIHRoaXMub24oJ2Vycm9yJywgZXIgPT4gcmVqZWN0KGVyKSlcbiAgICAgIHRoaXMub24oJ2VuZCcsICgpID0+IHJlc29sdmUoKSlcbiAgICB9KVxuICB9XG5cbiAgLy8gZm9yIGF3YWl0IChsZXQgY2h1bmsgb2Ygc3RyZWFtKVxuICBbQVNZTkNJVEVSQVRPUl0gKCkge1xuICAgIGNvbnN0IG5leHQgPSAoKSA9PiB7XG4gICAgICBjb25zdCByZXMgPSB0aGlzLnJlYWQoKVxuICAgICAgaWYgKHJlcyAhPT0gbnVsbClcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7IGRvbmU6IGZhbHNlLCB2YWx1ZTogcmVzIH0pXG5cbiAgICAgIGlmICh0aGlzW0VPRl0pXG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoeyBkb25lOiB0cnVlIH0pXG5cbiAgICAgIGxldCByZXNvbHZlID0gbnVsbFxuICAgICAgbGV0IHJlamVjdCA9IG51bGxcbiAgICAgIGNvbnN0IG9uZXJyID0gZXIgPT4ge1xuICAgICAgICB0aGlzLnJlbW92ZUxpc3RlbmVyKCdkYXRhJywgb25kYXRhKVxuICAgICAgICB0aGlzLnJlbW92ZUxpc3RlbmVyKCdlbmQnLCBvbmVuZClcbiAgICAgICAgcmVqZWN0KGVyKVxuICAgICAgfVxuICAgICAgY29uc3Qgb25kYXRhID0gdmFsdWUgPT4ge1xuICAgICAgICB0aGlzLnJlbW92ZUxpc3RlbmVyKCdlcnJvcicsIG9uZXJyKVxuICAgICAgICB0aGlzLnJlbW92ZUxpc3RlbmVyKCdlbmQnLCBvbmVuZClcbiAgICAgICAgdGhpcy5wYXVzZSgpXG4gICAgICAgIHJlc29sdmUoeyB2YWx1ZTogdmFsdWUsIGRvbmU6ICEhdGhpc1tFT0ZdIH0pXG4gICAgICB9XG4gICAgICBjb25zdCBvbmVuZCA9ICgpID0+IHtcbiAgICAgICAgdGhpcy5yZW1vdmVMaXN0ZW5lcignZXJyb3InLCBvbmVycilcbiAgICAgICAgdGhpcy5yZW1vdmVMaXN0ZW5lcignZGF0YScsIG9uZGF0YSlcbiAgICAgICAgcmVzb2x2ZSh7IGRvbmU6IHRydWUgfSlcbiAgICAgIH1cbiAgICAgIGNvbnN0IG9uZGVzdHJveSA9ICgpID0+IG9uZXJyKG5ldyBFcnJvcignc3RyZWFtIGRlc3Ryb3llZCcpKVxuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXMsIHJlaikgPT4ge1xuICAgICAgICByZWplY3QgPSByZWpcbiAgICAgICAgcmVzb2x2ZSA9IHJlc1xuICAgICAgICB0aGlzLm9uY2UoREVTVFJPWUVELCBvbmRlc3Ryb3kpXG4gICAgICAgIHRoaXMub25jZSgnZXJyb3InLCBvbmVycilcbiAgICAgICAgdGhpcy5vbmNlKCdlbmQnLCBvbmVuZClcbiAgICAgICAgdGhpcy5vbmNlKCdkYXRhJywgb25kYXRhKVxuICAgICAgfSlcbiAgICB9XG5cbiAgICByZXR1cm4geyBuZXh0IH1cbiAgfVxuXG4gIC8vIGZvciAobGV0IGNodW5rIG9mIHN0cmVhbSlcbiAgW0lURVJBVE9SXSAoKSB7XG4gICAgY29uc3QgbmV4dCA9ICgpID0+IHtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5yZWFkKClcbiAgICAgIGNvbnN0IGRvbmUgPSB2YWx1ZSA9PT0gbnVsbFxuICAgICAgcmV0dXJuIHsgdmFsdWUsIGRvbmUgfVxuICAgIH1cbiAgICByZXR1cm4geyBuZXh0IH1cbiAgfVxuXG4gIGRlc3Ryb3kgKGVyKSB7XG4gICAgaWYgKHRoaXNbREVTVFJPWUVEXSkge1xuICAgICAgaWYgKGVyKVxuICAgICAgICB0aGlzLmVtaXQoJ2Vycm9yJywgZXIpXG4gICAgICBlbHNlXG4gICAgICAgIHRoaXMuZW1pdChERVNUUk9ZRUQpXG4gICAgICByZXR1cm4gdGhpc1xuICAgIH1cblxuICAgIHRoaXNbREVTVFJPWUVEXSA9IHRydWVcblxuICAgIC8vIHRocm93IGF3YXkgYWxsIGJ1ZmZlcmVkIGRhdGEsIGl0J3MgbmV2ZXIgY29taW5nIG91dFxuICAgIHRoaXMuYnVmZmVyLmxlbmd0aCA9IDBcbiAgICB0aGlzW0JVRkZFUkxFTkdUSF0gPSAwXG5cbiAgICBpZiAodHlwZW9mIHRoaXMuY2xvc2UgPT09ICdmdW5jdGlvbicgJiYgIXRoaXNbQ0xPU0VEXSlcbiAgICAgIHRoaXMuY2xvc2UoKVxuXG4gICAgaWYgKGVyKVxuICAgICAgdGhpcy5lbWl0KCdlcnJvcicsIGVyKVxuICAgIGVsc2UgLy8gaWYgbm8gZXJyb3IgdG8gZW1pdCwgc3RpbGwgcmVqZWN0IHBlbmRpbmcgcHJvbWlzZXNcbiAgICAgIHRoaXMuZW1pdChERVNUUk9ZRUQpXG5cbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgc3RhdGljIGlzU3RyZWFtIChzKSB7XG4gICAgcmV0dXJuICEhcyAmJiAocyBpbnN0YW5jZW9mIE1pbmlwYXNzIHx8IHMgaW5zdGFuY2VvZiBTdHJlYW0gfHxcbiAgICAgIHMgaW5zdGFuY2VvZiBFRSAmJiAoXG4gICAgICAgIHR5cGVvZiBzLnBpcGUgPT09ICdmdW5jdGlvbicgfHwgLy8gcmVhZGFibGVcbiAgICAgICAgKHR5cGVvZiBzLndyaXRlID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBzLmVuZCA9PT0gJ2Z1bmN0aW9uJykgLy8gd3JpdGFibGVcbiAgICAgICkpXG4gIH1cbn1cbiIsICIvLyBVcGRhdGUgd2l0aCBhbnkgemxpYiBjb25zdGFudHMgdGhhdCBhcmUgYWRkZWQgb3IgY2hhbmdlZCBpbiB0aGUgZnV0dXJlLlxuLy8gTm9kZSB2NiBkaWRuJ3QgZXhwb3J0IHRoaXMsIHNvIHdlIGp1c3QgaGFyZCBjb2RlIHRoZSB2ZXJzaW9uIGFuZCByZWx5XG4vLyBvbiBhbGwgdGhlIG90aGVyIGhhcmQtY29kZWQgdmFsdWVzIGZyb20gemxpYiB2NDczNi4gIFdoZW4gbm9kZSB2NlxuLy8gc3VwcG9ydCBkcm9wcywgd2UgY2FuIGp1c3QgZXhwb3J0IHRoZSByZWFsWmxpYkNvbnN0YW50cyBvYmplY3QuXG5jb25zdCByZWFsWmxpYkNvbnN0YW50cyA9IHJlcXVpcmUoJ3psaWInKS5jb25zdGFudHMgfHxcbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi8geyBaTElCX1ZFUk5VTTogNDczNiB9XG5cbm1vZHVsZS5leHBvcnRzID0gT2JqZWN0LmZyZWV6ZShPYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUobnVsbCksIHtcbiAgWl9OT19GTFVTSDogMCxcbiAgWl9QQVJUSUFMX0ZMVVNIOiAxLFxuICBaX1NZTkNfRkxVU0g6IDIsXG4gIFpfRlVMTF9GTFVTSDogMyxcbiAgWl9GSU5JU0g6IDQsXG4gIFpfQkxPQ0s6IDUsXG4gIFpfT0s6IDAsXG4gIFpfU1RSRUFNX0VORDogMSxcbiAgWl9ORUVEX0RJQ1Q6IDIsXG4gIFpfRVJSTk86IC0xLFxuICBaX1NUUkVBTV9FUlJPUjogLTIsXG4gIFpfREFUQV9FUlJPUjogLTMsXG4gIFpfTUVNX0VSUk9SOiAtNCxcbiAgWl9CVUZfRVJST1I6IC01LFxuICBaX1ZFUlNJT05fRVJST1I6IC02LFxuICBaX05PX0NPTVBSRVNTSU9OOiAwLFxuICBaX0JFU1RfU1BFRUQ6IDEsXG4gIFpfQkVTVF9DT01QUkVTU0lPTjogOSxcbiAgWl9ERUZBVUxUX0NPTVBSRVNTSU9OOiAtMSxcbiAgWl9GSUxURVJFRDogMSxcbiAgWl9IVUZGTUFOX09OTFk6IDIsXG4gIFpfUkxFOiAzLFxuICBaX0ZJWEVEOiA0LFxuICBaX0RFRkFVTFRfU1RSQVRFR1k6IDAsXG4gIERFRkxBVEU6IDEsXG4gIElORkxBVEU6IDIsXG4gIEdaSVA6IDMsXG4gIEdVTlpJUDogNCxcbiAgREVGTEFURVJBVzogNSxcbiAgSU5GTEFURVJBVzogNixcbiAgVU5aSVA6IDcsXG4gIEJST1RMSV9ERUNPREU6IDgsXG4gIEJST1RMSV9FTkNPREU6IDksXG4gIFpfTUlOX1dJTkRPV0JJVFM6IDgsXG4gIFpfTUFYX1dJTkRPV0JJVFM6IDE1LFxuICBaX0RFRkFVTFRfV0lORE9XQklUUzogMTUsXG4gIFpfTUlOX0NIVU5LOiA2NCxcbiAgWl9NQVhfQ0hVTks6IEluZmluaXR5LFxuICBaX0RFRkFVTFRfQ0hVTks6IDE2Mzg0LFxuICBaX01JTl9NRU1MRVZFTDogMSxcbiAgWl9NQVhfTUVNTEVWRUw6IDksXG4gIFpfREVGQVVMVF9NRU1MRVZFTDogOCxcbiAgWl9NSU5fTEVWRUw6IC0xLFxuICBaX01BWF9MRVZFTDogOSxcbiAgWl9ERUZBVUxUX0xFVkVMOiAtMSxcbiAgQlJPVExJX09QRVJBVElPTl9QUk9DRVNTOiAwLFxuICBCUk9UTElfT1BFUkFUSU9OX0ZMVVNIOiAxLFxuICBCUk9UTElfT1BFUkFUSU9OX0ZJTklTSDogMixcbiAgQlJPVExJX09QRVJBVElPTl9FTUlUX01FVEFEQVRBOiAzLFxuICBCUk9UTElfTU9ERV9HRU5FUklDOiAwLFxuICBCUk9UTElfTU9ERV9URVhUOiAxLFxuICBCUk9UTElfTU9ERV9GT05UOiAyLFxuICBCUk9UTElfREVGQVVMVF9NT0RFOiAwLFxuICBCUk9UTElfTUlOX1FVQUxJVFk6IDAsXG4gIEJST1RMSV9NQVhfUVVBTElUWTogMTEsXG4gIEJST1RMSV9ERUZBVUxUX1FVQUxJVFk6IDExLFxuICBCUk9UTElfTUlOX1dJTkRPV19CSVRTOiAxMCxcbiAgQlJPVExJX01BWF9XSU5ET1dfQklUUzogMjQsXG4gIEJST1RMSV9MQVJHRV9NQVhfV0lORE9XX0JJVFM6IDMwLFxuICBCUk9UTElfREVGQVVMVF9XSU5ET1c6IDIyLFxuICBCUk9UTElfTUlOX0lOUFVUX0JMT0NLX0JJVFM6IDE2LFxuICBCUk9UTElfTUFYX0lOUFVUX0JMT0NLX0JJVFM6IDI0LFxuICBCUk9UTElfUEFSQU1fTU9ERTogMCxcbiAgQlJPVExJX1BBUkFNX1FVQUxJVFk6IDEsXG4gIEJST1RMSV9QQVJBTV9MR1dJTjogMixcbiAgQlJPVExJX1BBUkFNX0xHQkxPQ0s6IDMsXG4gIEJST1RMSV9QQVJBTV9ESVNBQkxFX0xJVEVSQUxfQ09OVEVYVF9NT0RFTElORzogNCxcbiAgQlJPVExJX1BBUkFNX1NJWkVfSElOVDogNSxcbiAgQlJPVExJX1BBUkFNX0xBUkdFX1dJTkRPVzogNixcbiAgQlJPVExJX1BBUkFNX05QT1NURklYOiA3LFxuICBCUk9UTElfUEFSQU1fTkRJUkVDVDogOCxcbiAgQlJPVExJX0RFQ09ERVJfUkVTVUxUX0VSUk9SOiAwLFxuICBCUk9UTElfREVDT0RFUl9SRVNVTFRfU1VDQ0VTUzogMSxcbiAgQlJPVExJX0RFQ09ERVJfUkVTVUxUX05FRURTX01PUkVfSU5QVVQ6IDIsXG4gIEJST1RMSV9ERUNPREVSX1JFU1VMVF9ORUVEU19NT1JFX09VVFBVVDogMyxcbiAgQlJPVExJX0RFQ09ERVJfUEFSQU1fRElTQUJMRV9SSU5HX0JVRkZFUl9SRUFMTE9DQVRJT046IDAsXG4gIEJST1RMSV9ERUNPREVSX1BBUkFNX0xBUkdFX1dJTkRPVzogMSxcbiAgQlJPVExJX0RFQ09ERVJfTk9fRVJST1I6IDAsXG4gIEJST1RMSV9ERUNPREVSX1NVQ0NFU1M6IDEsXG4gIEJST1RMSV9ERUNPREVSX05FRURTX01PUkVfSU5QVVQ6IDIsXG4gIEJST1RMSV9ERUNPREVSX05FRURTX01PUkVfT1VUUFVUOiAzLFxuICBCUk9UTElfREVDT0RFUl9FUlJPUl9GT1JNQVRfRVhVQkVSQU5UX05JQkJMRTogLTEsXG4gIEJST1RMSV9ERUNPREVSX0VSUk9SX0ZPUk1BVF9SRVNFUlZFRDogLTIsXG4gIEJST1RMSV9ERUNPREVSX0VSUk9SX0ZPUk1BVF9FWFVCRVJBTlRfTUVUQV9OSUJCTEU6IC0zLFxuICBCUk9UTElfREVDT0RFUl9FUlJPUl9GT1JNQVRfU0lNUExFX0hVRkZNQU5fQUxQSEFCRVQ6IC00LFxuICBCUk9UTElfREVDT0RFUl9FUlJPUl9GT1JNQVRfU0lNUExFX0hVRkZNQU5fU0FNRTogLTUsXG4gIEJST1RMSV9ERUNPREVSX0VSUk9SX0ZPUk1BVF9DTF9TUEFDRTogLTYsXG4gIEJST1RMSV9ERUNPREVSX0VSUk9SX0ZPUk1BVF9IVUZGTUFOX1NQQUNFOiAtNyxcbiAgQlJPVExJX0RFQ09ERVJfRVJST1JfRk9STUFUX0NPTlRFWFRfTUFQX1JFUEVBVDogLTgsXG4gIEJST1RMSV9ERUNPREVSX0VSUk9SX0ZPUk1BVF9CTE9DS19MRU5HVEhfMTogLTksXG4gIEJST1RMSV9ERUNPREVSX0VSUk9SX0ZPUk1BVF9CTE9DS19MRU5HVEhfMjogLTEwLFxuICBCUk9UTElfREVDT0RFUl9FUlJPUl9GT1JNQVRfVFJBTlNGT1JNOiAtMTEsXG4gIEJST1RMSV9ERUNPREVSX0VSUk9SX0ZPUk1BVF9ESUNUSU9OQVJZOiAtMTIsXG4gIEJST1RMSV9ERUNPREVSX0VSUk9SX0ZPUk1BVF9XSU5ET1dfQklUUzogLTEzLFxuICBCUk9UTElfREVDT0RFUl9FUlJPUl9GT1JNQVRfUEFERElOR18xOiAtMTQsXG4gIEJST1RMSV9ERUNPREVSX0VSUk9SX0ZPUk1BVF9QQURESU5HXzI6IC0xNSxcbiAgQlJPVExJX0RFQ09ERVJfRVJST1JfRk9STUFUX0RJU1RBTkNFOiAtMTYsXG4gIEJST1RMSV9ERUNPREVSX0VSUk9SX0RJQ1RJT05BUllfTk9UX1NFVDogLTE5LFxuICBCUk9UTElfREVDT0RFUl9FUlJPUl9JTlZBTElEX0FSR1VNRU5UUzogLTIwLFxuICBCUk9UTElfREVDT0RFUl9FUlJPUl9BTExPQ19DT05URVhUX01PREVTOiAtMjEsXG4gIEJST1RMSV9ERUNPREVSX0VSUk9SX0FMTE9DX1RSRUVfR1JPVVBTOiAtMjIsXG4gIEJST1RMSV9ERUNPREVSX0VSUk9SX0FMTE9DX0NPTlRFWFRfTUFQOiAtMjUsXG4gIEJST1RMSV9ERUNPREVSX0VSUk9SX0FMTE9DX1JJTkdfQlVGRkVSXzE6IC0yNixcbiAgQlJPVExJX0RFQ09ERVJfRVJST1JfQUxMT0NfUklOR19CVUZGRVJfMjogLTI3LFxuICBCUk9UTElfREVDT0RFUl9FUlJPUl9BTExPQ19CTE9DS19UWVBFX1RSRUVTOiAtMzAsXG4gIEJST1RMSV9ERUNPREVSX0VSUk9SX1VOUkVBQ0hBQkxFOiAtMzEsXG59LCByZWFsWmxpYkNvbnN0YW50cykpXG4iLCAiJ3VzZSBzdHJpY3QnXG5cbmNvbnN0IGFzc2VydCA9IHJlcXVpcmUoJ2Fzc2VydCcpXG5jb25zdCBCdWZmZXIgPSByZXF1aXJlKCdidWZmZXInKS5CdWZmZXJcbmNvbnN0IHJlYWxabGliID0gcmVxdWlyZSgnemxpYicpXG5cbmNvbnN0IGNvbnN0YW50cyA9IGV4cG9ydHMuY29uc3RhbnRzID0gcmVxdWlyZSgnLi9jb25zdGFudHMuanMnKVxuY29uc3QgTWluaXBhc3MgPSByZXF1aXJlKCdtaW5pcGFzcycpXG5cbmNvbnN0IE9yaWdpbmFsQnVmZmVyQ29uY2F0ID0gQnVmZmVyLmNvbmNhdFxuXG5jb25zdCBfc3VwZXJXcml0ZSA9IFN5bWJvbCgnX3N1cGVyV3JpdGUnKVxuY2xhc3MgWmxpYkVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBjb25zdHJ1Y3RvciAoZXJyKSB7XG4gICAgc3VwZXIoJ3psaWI6ICcgKyBlcnIubWVzc2FnZSlcbiAgICB0aGlzLmNvZGUgPSBlcnIuY29kZVxuICAgIHRoaXMuZXJybm8gPSBlcnIuZXJybm9cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICBpZiAoIXRoaXMuY29kZSlcbiAgICAgIHRoaXMuY29kZSA9ICdaTElCX0VSUk9SJ1xuXG4gICAgdGhpcy5tZXNzYWdlID0gJ3psaWI6ICcgKyBlcnIubWVzc2FnZVxuICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsIHRoaXMuY29uc3RydWN0b3IpXG4gIH1cblxuICBnZXQgbmFtZSAoKSB7XG4gICAgcmV0dXJuICdabGliRXJyb3InXG4gIH1cbn1cblxuLy8gdGhlIFpsaWIgY2xhc3MgdGhleSBhbGwgaW5oZXJpdCBmcm9tXG4vLyBUaGlzIHRoaW5nIG1hbmFnZXMgdGhlIHF1ZXVlIG9mIHJlcXVlc3RzLCBhbmQgcmV0dXJuc1xuLy8gdHJ1ZSBvciBmYWxzZSBpZiB0aGVyZSBpcyBhbnl0aGluZyBpbiB0aGUgcXVldWUgd2hlblxuLy8geW91IGNhbGwgdGhlIC53cml0ZSgpIG1ldGhvZC5cbmNvbnN0IF9vcHRzID0gU3ltYm9sKCdvcHRzJylcbmNvbnN0IF9mbHVzaEZsYWcgPSBTeW1ib2woJ2ZsdXNoRmxhZycpXG5jb25zdCBfZmluaXNoRmx1c2hGbGFnID0gU3ltYm9sKCdmaW5pc2hGbHVzaEZsYWcnKVxuY29uc3QgX2Z1bGxGbHVzaEZsYWcgPSBTeW1ib2woJ2Z1bGxGbHVzaEZsYWcnKVxuY29uc3QgX2hhbmRsZSA9IFN5bWJvbCgnaGFuZGxlJylcbmNvbnN0IF9vbkVycm9yID0gU3ltYm9sKCdvbkVycm9yJylcbmNvbnN0IF9zYXdFcnJvciA9IFN5bWJvbCgnc2F3RXJyb3InKVxuY29uc3QgX2xldmVsID0gU3ltYm9sKCdsZXZlbCcpXG5jb25zdCBfc3RyYXRlZ3kgPSBTeW1ib2woJ3N0cmF0ZWd5JylcbmNvbnN0IF9lbmRlZCA9IFN5bWJvbCgnZW5kZWQnKVxuY29uc3QgX2RlZmF1bHRGdWxsRmx1c2ggPSBTeW1ib2woJ19kZWZhdWx0RnVsbEZsdXNoJylcblxuY2xhc3MgWmxpYkJhc2UgZXh0ZW5kcyBNaW5pcGFzcyB7XG4gIGNvbnN0cnVjdG9yIChvcHRzLCBtb2RlKSB7XG4gICAgaWYgKCFvcHRzIHx8IHR5cGVvZiBvcHRzICE9PSAnb2JqZWN0JylcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2ludmFsaWQgb3B0aW9ucyBmb3IgWmxpYkJhc2UgY29uc3RydWN0b3InKVxuXG4gICAgc3VwZXIob3B0cylcbiAgICB0aGlzW19zYXdFcnJvcl0gPSBmYWxzZVxuICAgIHRoaXNbX2VuZGVkXSA9IGZhbHNlXG4gICAgdGhpc1tfb3B0c10gPSBvcHRzXG5cbiAgICB0aGlzW19mbHVzaEZsYWddID0gb3B0cy5mbHVzaFxuICAgIHRoaXNbX2ZpbmlzaEZsdXNoRmxhZ10gPSBvcHRzLmZpbmlzaEZsdXNoXG4gICAgLy8gdGhpcyB3aWxsIHRocm93IGlmIGFueSBvcHRpb25zIGFyZSBpbnZhbGlkIGZvciB0aGUgY2xhc3Mgc2VsZWN0ZWRcbiAgICB0cnkge1xuICAgICAgdGhpc1tfaGFuZGxlXSA9IG5ldyByZWFsWmxpYlttb2RlXShvcHRzKVxuICAgIH0gY2F0Y2ggKGVyKSB7XG4gICAgICAvLyBtYWtlIHN1cmUgdGhhdCBhbGwgZXJyb3JzIGdldCBkZWNvcmF0ZWQgcHJvcGVybHlcbiAgICAgIHRocm93IG5ldyBabGliRXJyb3IoZXIpXG4gICAgfVxuXG4gICAgdGhpc1tfb25FcnJvcl0gPSAoZXJyKSA9PiB7XG4gICAgICAvLyBubyBzZW5zZSByYWlzaW5nIG11bHRpcGxlIGVycm9ycywgc2luY2Ugd2UgYWJvcnQgb24gdGhlIGZpcnN0IG9uZS5cbiAgICAgIGlmICh0aGlzW19zYXdFcnJvcl0pXG4gICAgICAgIHJldHVyblxuXG4gICAgICB0aGlzW19zYXdFcnJvcl0gPSB0cnVlXG5cbiAgICAgIC8vIHRoZXJlIGlzIG5vIHdheSB0byBjbGVhbmx5IHJlY292ZXIuXG4gICAgICAvLyBjb250aW51aW5nIG9ubHkgb2JzY3VyZXMgcHJvYmxlbXMuXG4gICAgICB0aGlzLmNsb3NlKClcbiAgICAgIHRoaXMuZW1pdCgnZXJyb3InLCBlcnIpXG4gICAgfVxuXG4gICAgdGhpc1tfaGFuZGxlXS5vbignZXJyb3InLCBlciA9PiB0aGlzW19vbkVycm9yXShuZXcgWmxpYkVycm9yKGVyKSkpXG4gICAgdGhpcy5vbmNlKCdlbmQnLCAoKSA9PiB0aGlzLmNsb3NlKVxuICB9XG5cbiAgY2xvc2UgKCkge1xuICAgIGlmICh0aGlzW19oYW5kbGVdKSB7XG4gICAgICB0aGlzW19oYW5kbGVdLmNsb3NlKClcbiAgICAgIHRoaXNbX2hhbmRsZV0gPSBudWxsXG4gICAgICB0aGlzLmVtaXQoJ2Nsb3NlJylcbiAgICB9XG4gIH1cblxuICByZXNldCAoKSB7XG4gICAgaWYgKCF0aGlzW19zYXdFcnJvcl0pIHtcbiAgICAgIGFzc2VydCh0aGlzW19oYW5kbGVdLCAnemxpYiBiaW5kaW5nIGNsb3NlZCcpXG4gICAgICByZXR1cm4gdGhpc1tfaGFuZGxlXS5yZXNldCgpXG4gICAgfVxuICB9XG5cbiAgZmx1c2ggKGZsdXNoRmxhZykge1xuICAgIGlmICh0aGlzLmVuZGVkKVxuICAgICAgcmV0dXJuXG5cbiAgICBpZiAodHlwZW9mIGZsdXNoRmxhZyAhPT0gJ251bWJlcicpXG4gICAgICBmbHVzaEZsYWcgPSB0aGlzW19mdWxsRmx1c2hGbGFnXVxuICAgIHRoaXMud3JpdGUoT2JqZWN0LmFzc2lnbihCdWZmZXIuYWxsb2MoMCksIHsgW19mbHVzaEZsYWddOiBmbHVzaEZsYWcgfSkpXG4gIH1cblxuICBlbmQgKGNodW5rLCBlbmNvZGluZywgY2IpIHtcbiAgICBpZiAoY2h1bmspXG4gICAgICB0aGlzLndyaXRlKGNodW5rLCBlbmNvZGluZylcbiAgICB0aGlzLmZsdXNoKHRoaXNbX2ZpbmlzaEZsdXNoRmxhZ10pXG4gICAgdGhpc1tfZW5kZWRdID0gdHJ1ZVxuICAgIHJldHVybiBzdXBlci5lbmQobnVsbCwgbnVsbCwgY2IpXG4gIH1cblxuICBnZXQgZW5kZWQgKCkge1xuICAgIHJldHVybiB0aGlzW19lbmRlZF1cbiAgfVxuXG4gIHdyaXRlIChjaHVuaywgZW5jb2RpbmcsIGNiKSB7XG4gICAgLy8gcHJvY2VzcyB0aGUgY2h1bmsgdXNpbmcgdGhlIHN5bmMgcHJvY2Vzc1xuICAgIC8vIHRoZW4gc3VwZXIud3JpdGUoKSBhbGwgdGhlIG91dHB1dHRlZCBjaHVua3NcbiAgICBpZiAodHlwZW9mIGVuY29kaW5nID09PSAnZnVuY3Rpb24nKVxuICAgICAgY2IgPSBlbmNvZGluZywgZW5jb2RpbmcgPSAndXRmOCdcblxuICAgIGlmICh0eXBlb2YgY2h1bmsgPT09ICdzdHJpbmcnKVxuICAgICAgY2h1bmsgPSBCdWZmZXIuZnJvbShjaHVuaywgZW5jb2RpbmcpXG5cbiAgICBpZiAodGhpc1tfc2F3RXJyb3JdKVxuICAgICAgcmV0dXJuXG4gICAgYXNzZXJ0KHRoaXNbX2hhbmRsZV0sICd6bGliIGJpbmRpbmcgY2xvc2VkJylcblxuICAgIC8vIF9wcm9jZXNzQ2h1bmsgdHJpZXMgdG8gLmNsb3NlKCkgdGhlIG5hdGl2ZSBoYW5kbGUgYWZ0ZXIgaXQncyBkb25lLCBzbyB3ZVxuICAgIC8vIGludGVyY2VwdCB0aGF0IGJ5IHRlbXBvcmFyaWx5IG1ha2luZyBpdCBhIG5vLW9wLlxuICAgIGNvbnN0IG5hdGl2ZUhhbmRsZSA9IHRoaXNbX2hhbmRsZV0uX2hhbmRsZVxuICAgIGNvbnN0IG9yaWdpbmFsTmF0aXZlQ2xvc2UgPSBuYXRpdmVIYW5kbGUuY2xvc2VcbiAgICBuYXRpdmVIYW5kbGUuY2xvc2UgPSAoKSA9PiB7fVxuICAgIGNvbnN0IG9yaWdpbmFsQ2xvc2UgPSB0aGlzW19oYW5kbGVdLmNsb3NlXG4gICAgdGhpc1tfaGFuZGxlXS5jbG9zZSA9ICgpID0+IHt9XG4gICAgLy8gSXQgYWxzbyBjYWxscyBgQnVmZmVyLmNvbmNhdCgpYCBhdCB0aGUgZW5kLCB3aGljaCBtYXkgYmUgY29udmVuaWVudFxuICAgIC8vIGZvciBzb21lLCBidXQgd2hpY2ggd2UgYXJlIG5vdCBpbnRlcmVzdGVkIGluIGFzIGl0IHNsb3dzIHVzIGRvd24uXG4gICAgQnVmZmVyLmNvbmNhdCA9IChhcmdzKSA9PiBhcmdzXG4gICAgbGV0IHJlc3VsdFxuICAgIHRyeSB7XG4gICAgICBjb25zdCBmbHVzaEZsYWcgPSB0eXBlb2YgY2h1bmtbX2ZsdXNoRmxhZ10gPT09ICdudW1iZXInXG4gICAgICAgID8gY2h1bmtbX2ZsdXNoRmxhZ10gOiB0aGlzW19mbHVzaEZsYWddXG4gICAgICByZXN1bHQgPSB0aGlzW19oYW5kbGVdLl9wcm9jZXNzQ2h1bmsoY2h1bmssIGZsdXNoRmxhZylcbiAgICAgIC8vIGlmIHdlIGRvbid0IHRocm93LCByZXNldCBpdCBiYWNrIGhvdyBpdCB3YXNcbiAgICAgIEJ1ZmZlci5jb25jYXQgPSBPcmlnaW5hbEJ1ZmZlckNvbmNhdFxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgLy8gb3IgaWYgd2UgZG8sIHB1dCBCdWZmZXIuY29uY2F0KCkgYmFjayBiZWZvcmUgd2UgZW1pdCBlcnJvclxuICAgICAgLy8gRXJyb3IgZXZlbnRzIGNhbGwgaW50byB1c2VyIGNvZGUsIHdoaWNoIG1heSBjYWxsIEJ1ZmZlci5jb25jYXQoKVxuICAgICAgQnVmZmVyLmNvbmNhdCA9IE9yaWdpbmFsQnVmZmVyQ29uY2F0XG4gICAgICB0aGlzW19vbkVycm9yXShuZXcgWmxpYkVycm9yKGVycikpXG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlmICh0aGlzW19oYW5kbGVdKSB7XG4gICAgICAgIC8vIENvcmUgemxpYiByZXNldHMgYF9oYW5kbGVgIHRvIG51bGwgYWZ0ZXIgYXR0ZW1wdGluZyB0byBjbG9zZSB0aGVcbiAgICAgICAgLy8gbmF0aXZlIGhhbmRsZS4gT3VyIG5vLW9wIGhhbmRsZXIgcHJldmVudGVkIGFjdHVhbCBjbG9zdXJlLCBidXQgd2VcbiAgICAgICAgLy8gbmVlZCB0byByZXN0b3JlIHRoZSBgLl9oYW5kbGVgIHByb3BlcnR5LlxuICAgICAgICB0aGlzW19oYW5kbGVdLl9oYW5kbGUgPSBuYXRpdmVIYW5kbGVcbiAgICAgICAgbmF0aXZlSGFuZGxlLmNsb3NlID0gb3JpZ2luYWxOYXRpdmVDbG9zZVxuICAgICAgICB0aGlzW19oYW5kbGVdLmNsb3NlID0gb3JpZ2luYWxDbG9zZVxuICAgICAgICAvLyBgX3Byb2Nlc3NDaHVuaygpYCBhZGRzIGFuICdlcnJvcicgbGlzdGVuZXIuIElmIHdlIGRvbid0IHJlbW92ZSBpdFxuICAgICAgICAvLyBhZnRlciBlYWNoIGNhbGwsIHRoZXNlIGhhbmRsZXJzIHN0YXJ0IHBpbGluZyB1cC5cbiAgICAgICAgdGhpc1tfaGFuZGxlXS5yZW1vdmVBbGxMaXN0ZW5lcnMoJ2Vycm9yJylcbiAgICAgICAgLy8gbWFrZSBzdXJlIE9VUiBlcnJvciBsaXN0ZW5lciBpcyBzdGlsbCBhdHRhY2hlZCB0aG9cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpc1tfaGFuZGxlXSlcbiAgICAgIHRoaXNbX2hhbmRsZV0ub24oJ2Vycm9yJywgZXIgPT4gdGhpc1tfb25FcnJvcl0obmV3IFpsaWJFcnJvcihlcikpKVxuXG4gICAgbGV0IHdyaXRlUmV0dXJuXG4gICAgaWYgKHJlc3VsdCkge1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkocmVzdWx0KSAmJiByZXN1bHQubGVuZ3RoID4gMCkge1xuICAgICAgICAvLyBUaGUgZmlyc3QgYnVmZmVyIGlzIGFsd2F5cyBgaGFuZGxlLl9vdXRCdWZmZXJgLCB3aGljaCB3b3VsZCBiZVxuICAgICAgICAvLyByZS11c2VkIGZvciBsYXRlciBpbnZvY2F0aW9uczsgc28sIHdlIGFsd2F5cyBoYXZlIHRvIGNvcHkgdGhhdCBvbmUuXG4gICAgICAgIHdyaXRlUmV0dXJuID0gdGhpc1tfc3VwZXJXcml0ZV0oQnVmZmVyLmZyb20ocmVzdWx0WzBdKSlcbiAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCByZXN1bHQubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICB3cml0ZVJldHVybiA9IHRoaXNbX3N1cGVyV3JpdGVdKHJlc3VsdFtpXSlcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgd3JpdGVSZXR1cm4gPSB0aGlzW19zdXBlcldyaXRlXShCdWZmZXIuZnJvbShyZXN1bHQpKVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChjYilcbiAgICAgIGNiKClcbiAgICByZXR1cm4gd3JpdGVSZXR1cm5cbiAgfVxuXG4gIFtfc3VwZXJXcml0ZV0gKGRhdGEpIHtcbiAgICByZXR1cm4gc3VwZXIud3JpdGUoZGF0YSlcbiAgfVxufVxuXG5jbGFzcyBabGliIGV4dGVuZHMgWmxpYkJhc2Uge1xuICBjb25zdHJ1Y3RvciAob3B0cywgbW9kZSkge1xuICAgIG9wdHMgPSBvcHRzIHx8IHt9XG5cbiAgICBvcHRzLmZsdXNoID0gb3B0cy5mbHVzaCB8fCBjb25zdGFudHMuWl9OT19GTFVTSFxuICAgIG9wdHMuZmluaXNoRmx1c2ggPSBvcHRzLmZpbmlzaEZsdXNoIHx8IGNvbnN0YW50cy5aX0ZJTklTSFxuICAgIHN1cGVyKG9wdHMsIG1vZGUpXG5cbiAgICB0aGlzW19mdWxsRmx1c2hGbGFnXSA9IGNvbnN0YW50cy5aX0ZVTExfRkxVU0hcbiAgICB0aGlzW19sZXZlbF0gPSBvcHRzLmxldmVsXG4gICAgdGhpc1tfc3RyYXRlZ3ldID0gb3B0cy5zdHJhdGVneVxuICB9XG5cbiAgcGFyYW1zIChsZXZlbCwgc3RyYXRlZ3kpIHtcbiAgICBpZiAodGhpc1tfc2F3RXJyb3JdKVxuICAgICAgcmV0dXJuXG5cbiAgICBpZiAoIXRoaXNbX2hhbmRsZV0pXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2Nhbm5vdCBzd2l0Y2ggcGFyYW1zIHdoZW4gYmluZGluZyBpcyBjbG9zZWQnKVxuXG4gICAgLy8gbm8gd2F5IHRvIHRlc3QgdGhpcyB3aXRob3V0IGFsc28gbm90IHN1cHBvcnRpbmcgcGFyYW1zIGF0IGFsbFxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgIGlmICghdGhpc1tfaGFuZGxlXS5wYXJhbXMpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCBzdXBwb3J0ZWQgaW4gdGhpcyBpbXBsZW1lbnRhdGlvbicpXG5cbiAgICBpZiAodGhpc1tfbGV2ZWxdICE9PSBsZXZlbCB8fCB0aGlzW19zdHJhdGVneV0gIT09IHN0cmF0ZWd5KSB7XG4gICAgICB0aGlzLmZsdXNoKGNvbnN0YW50cy5aX1NZTkNfRkxVU0gpXG4gICAgICBhc3NlcnQodGhpc1tfaGFuZGxlXSwgJ3psaWIgYmluZGluZyBjbG9zZWQnKVxuICAgICAgLy8gLnBhcmFtcygpIGNhbGxzIC5mbHVzaCgpLCBidXQgdGhlIGxhdHRlciBpcyBhbHdheXMgYXN5bmMgaW4gdGhlXG4gICAgICAvLyBjb3JlIHpsaWIuIFdlIG92ZXJyaWRlIC5mbHVzaCgpIHRlbXBvcmFyaWx5IHRvIGludGVyY2VwdCB0aGF0IGFuZFxuICAgICAgLy8gZmx1c2ggc3luY2hyb25vdXNseS5cbiAgICAgIGNvbnN0IG9yaWdGbHVzaCA9IHRoaXNbX2hhbmRsZV0uZmx1c2hcbiAgICAgIHRoaXNbX2hhbmRsZV0uZmx1c2ggPSAoZmx1c2hGbGFnLCBjYikgPT4ge1xuICAgICAgICB0aGlzLmZsdXNoKGZsdXNoRmxhZylcbiAgICAgICAgY2IoKVxuICAgICAgfVxuICAgICAgdHJ5IHtcbiAgICAgICAgdGhpc1tfaGFuZGxlXS5wYXJhbXMobGV2ZWwsIHN0cmF0ZWd5KVxuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgdGhpc1tfaGFuZGxlXS5mbHVzaCA9IG9yaWdGbHVzaFxuICAgICAgfVxuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgIGlmICh0aGlzW19oYW5kbGVdKSB7XG4gICAgICAgIHRoaXNbX2xldmVsXSA9IGxldmVsXG4gICAgICAgIHRoaXNbX3N0cmF0ZWd5XSA9IHN0cmF0ZWd5XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8vIG1pbmltYWwgMi1ieXRlIGhlYWRlclxuY2xhc3MgRGVmbGF0ZSBleHRlbmRzIFpsaWIge1xuICBjb25zdHJ1Y3RvciAob3B0cykge1xuICAgIHN1cGVyKG9wdHMsICdEZWZsYXRlJylcbiAgfVxufVxuXG5jbGFzcyBJbmZsYXRlIGV4dGVuZHMgWmxpYiB7XG4gIGNvbnN0cnVjdG9yIChvcHRzKSB7XG4gICAgc3VwZXIob3B0cywgJ0luZmxhdGUnKVxuICB9XG59XG5cbi8vIGd6aXAgLSBiaWdnZXIgaGVhZGVyLCBzYW1lIGRlZmxhdGUgY29tcHJlc3Npb25cbmNvbnN0IF9wb3J0YWJsZSA9IFN5bWJvbCgnX3BvcnRhYmxlJylcbmNsYXNzIEd6aXAgZXh0ZW5kcyBabGliIHtcbiAgY29uc3RydWN0b3IgKG9wdHMpIHtcbiAgICBzdXBlcihvcHRzLCAnR3ppcCcpXG4gICAgdGhpc1tfcG9ydGFibGVdID0gb3B0cyAmJiAhIW9wdHMucG9ydGFibGVcbiAgfVxuXG4gIFtfc3VwZXJXcml0ZV0gKGRhdGEpIHtcbiAgICBpZiAoIXRoaXNbX3BvcnRhYmxlXSlcbiAgICAgIHJldHVybiBzdXBlcltfc3VwZXJXcml0ZV0oZGF0YSlcblxuICAgIC8vIHdlJ2xsIGFsd2F5cyBnZXQgdGhlIGhlYWRlciBlbWl0dGVkIGluIG9uZSBmaXJzdCBjaHVua1xuICAgIC8vIG92ZXJ3cml0ZSB0aGUgT1MgaW5kaWNhdG9yIGJ5dGUgd2l0aCAweEZGXG4gICAgdGhpc1tfcG9ydGFibGVdID0gZmFsc2VcbiAgICBkYXRhWzldID0gMjU1XG4gICAgcmV0dXJuIHN1cGVyW19zdXBlcldyaXRlXShkYXRhKVxuICB9XG59XG5cbmNsYXNzIEd1bnppcCBleHRlbmRzIFpsaWIge1xuICBjb25zdHJ1Y3RvciAob3B0cykge1xuICAgIHN1cGVyKG9wdHMsICdHdW56aXAnKVxuICB9XG59XG5cbi8vIHJhdyAtIG5vIGhlYWRlclxuY2xhc3MgRGVmbGF0ZVJhdyBleHRlbmRzIFpsaWIge1xuICBjb25zdHJ1Y3RvciAob3B0cykge1xuICAgIHN1cGVyKG9wdHMsICdEZWZsYXRlUmF3JylcbiAgfVxufVxuXG5jbGFzcyBJbmZsYXRlUmF3IGV4dGVuZHMgWmxpYiB7XG4gIGNvbnN0cnVjdG9yIChvcHRzKSB7XG4gICAgc3VwZXIob3B0cywgJ0luZmxhdGVSYXcnKVxuICB9XG59XG5cbi8vIGF1dG8tZGV0ZWN0IGhlYWRlci5cbmNsYXNzIFVuemlwIGV4dGVuZHMgWmxpYiB7XG4gIGNvbnN0cnVjdG9yIChvcHRzKSB7XG4gICAgc3VwZXIob3B0cywgJ1VuemlwJylcbiAgfVxufVxuXG5jbGFzcyBCcm90bGkgZXh0ZW5kcyBabGliQmFzZSB7XG4gIGNvbnN0cnVjdG9yIChvcHRzLCBtb2RlKSB7XG4gICAgb3B0cyA9IG9wdHMgfHwge31cblxuICAgIG9wdHMuZmx1c2ggPSBvcHRzLmZsdXNoIHx8IGNvbnN0YW50cy5CUk9UTElfT1BFUkFUSU9OX1BST0NFU1NcbiAgICBvcHRzLmZpbmlzaEZsdXNoID0gb3B0cy5maW5pc2hGbHVzaCB8fCBjb25zdGFudHMuQlJPVExJX09QRVJBVElPTl9GSU5JU0hcblxuICAgIHN1cGVyKG9wdHMsIG1vZGUpXG5cbiAgICB0aGlzW19mdWxsRmx1c2hGbGFnXSA9IGNvbnN0YW50cy5CUk9UTElfT1BFUkFUSU9OX0ZMVVNIXG4gIH1cbn1cblxuY2xhc3MgQnJvdGxpQ29tcHJlc3MgZXh0ZW5kcyBCcm90bGkge1xuICBjb25zdHJ1Y3RvciAob3B0cykge1xuICAgIHN1cGVyKG9wdHMsICdCcm90bGlDb21wcmVzcycpXG4gIH1cbn1cblxuY2xhc3MgQnJvdGxpRGVjb21wcmVzcyBleHRlbmRzIEJyb3RsaSB7XG4gIGNvbnN0cnVjdG9yIChvcHRzKSB7XG4gICAgc3VwZXIob3B0cywgJ0Jyb3RsaURlY29tcHJlc3MnKVxuICB9XG59XG5cbmV4cG9ydHMuRGVmbGF0ZSA9IERlZmxhdGVcbmV4cG9ydHMuSW5mbGF0ZSA9IEluZmxhdGVcbmV4cG9ydHMuR3ppcCA9IEd6aXBcbmV4cG9ydHMuR3VuemlwID0gR3VuemlwXG5leHBvcnRzLkRlZmxhdGVSYXcgPSBEZWZsYXRlUmF3XG5leHBvcnRzLkluZmxhdGVSYXcgPSBJbmZsYXRlUmF3XG5leHBvcnRzLlVuemlwID0gVW56aXBcbi8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG5pZiAodHlwZW9mIHJlYWxabGliLkJyb3RsaUNvbXByZXNzID09PSAnZnVuY3Rpb24nKSB7XG4gIGV4cG9ydHMuQnJvdGxpQ29tcHJlc3MgPSBCcm90bGlDb21wcmVzc1xuICBleHBvcnRzLkJyb3RsaURlY29tcHJlc3MgPSBCcm90bGlEZWNvbXByZXNzXG59IGVsc2Uge1xuICBleHBvcnRzLkJyb3RsaUNvbXByZXNzID0gZXhwb3J0cy5Ccm90bGlEZWNvbXByZXNzID0gY2xhc3Mge1xuICAgIGNvbnN0cnVjdG9yICgpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQnJvdGxpIGlzIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIE5vZGUuanMnKVxuICAgIH1cbiAgfVxufVxuIiwgIi8vIG9uIHdpbmRvd3MsIGVpdGhlciBcXCBvciAvIGFyZSB2YWxpZCBkaXJlY3Rvcnkgc2VwYXJhdG9ycy5cbi8vIG9uIHVuaXgsIFxcIGlzIGEgdmFsaWQgY2hhcmFjdGVyIGluIGZpbGVuYW1lcy5cbi8vIHNvLCBvbiB3aW5kb3dzLCBhbmQgb25seSBvbiB3aW5kb3dzLCB3ZSByZXBsYWNlIGFsbCBcXCBjaGFycyB3aXRoIC8sXG4vLyBzbyB0aGF0IHdlIGNhbiB1c2UgLyBhcyBvdXIgb25lIGFuZCBvbmx5IGRpcmVjdG9yeSBzZXBhcmF0b3IgY2hhci5cblxuY29uc3QgcGxhdGZvcm0gPSBwcm9jZXNzLmVudi5URVNUSU5HX1RBUl9GQUtFX1BMQVRGT1JNIHx8IHByb2Nlc3MucGxhdGZvcm1cbm1vZHVsZS5leHBvcnRzID0gcGxhdGZvcm0gIT09ICd3aW4zMicgPyBwID0+IHBcbiAgOiBwID0+IHAgJiYgcC5yZXBsYWNlKC9cXFxcL2csICcvJylcbiIsICIndXNlIHN0cmljdCdcbmNvbnN0IE1pbmlQYXNzID0gcmVxdWlyZSgnbWluaXBhc3MnKVxuY29uc3Qgbm9ybVBhdGggPSByZXF1aXJlKCcuL25vcm1hbGl6ZS13aW5kb3dzLXBhdGguanMnKVxuXG5jb25zdCBTTFVSUCA9IFN5bWJvbCgnc2x1cnAnKVxubW9kdWxlLmV4cG9ydHMgPSBjbGFzcyBSZWFkRW50cnkgZXh0ZW5kcyBNaW5pUGFzcyB7XG4gIGNvbnN0cnVjdG9yIChoZWFkZXIsIGV4LCBnZXgpIHtcbiAgICBzdXBlcigpXG4gICAgLy8gcmVhZCBlbnRyaWVzIGFsd2F5cyBzdGFydCBsaWZlIHBhdXNlZC4gIHRoaXMgaXMgdG8gYXZvaWQgdGhlXG4gICAgLy8gc2l0dWF0aW9uIHdoZXJlIE1pbmlwYXNzJ3MgYXV0by1lbmRpbmcgZW1wdHkgc3RyZWFtcyByZXN1bHRzXG4gICAgLy8gaW4gYW4gZW50cnkgZW5kaW5nIGJlZm9yZSB3ZSdyZSByZWFkeSBmb3IgaXQuXG4gICAgdGhpcy5wYXVzZSgpXG4gICAgdGhpcy5leHRlbmRlZCA9IGV4XG4gICAgdGhpcy5nbG9iYWxFeHRlbmRlZCA9IGdleFxuICAgIHRoaXMuaGVhZGVyID0gaGVhZGVyXG4gICAgdGhpcy5zdGFydEJsb2NrU2l6ZSA9IDUxMiAqIE1hdGguY2VpbChoZWFkZXIuc2l6ZSAvIDUxMilcbiAgICB0aGlzLmJsb2NrUmVtYWluID0gdGhpcy5zdGFydEJsb2NrU2l6ZVxuICAgIHRoaXMucmVtYWluID0gaGVhZGVyLnNpemVcbiAgICB0aGlzLnR5cGUgPSBoZWFkZXIudHlwZVxuICAgIHRoaXMubWV0YSA9IGZhbHNlXG4gICAgdGhpcy5pZ25vcmUgPSBmYWxzZVxuICAgIHN3aXRjaCAodGhpcy50eXBlKSB7XG4gICAgICBjYXNlICdGaWxlJzpcbiAgICAgIGNhc2UgJ09sZEZpbGUnOlxuICAgICAgY2FzZSAnTGluayc6XG4gICAgICBjYXNlICdTeW1ib2xpY0xpbmsnOlxuICAgICAgY2FzZSAnQ2hhcmFjdGVyRGV2aWNlJzpcbiAgICAgIGNhc2UgJ0Jsb2NrRGV2aWNlJzpcbiAgICAgIGNhc2UgJ0RpcmVjdG9yeSc6XG4gICAgICBjYXNlICdGSUZPJzpcbiAgICAgIGNhc2UgJ0NvbnRpZ3VvdXNGaWxlJzpcbiAgICAgIGNhc2UgJ0dOVUR1bXBEaXInOlxuICAgICAgICBicmVha1xuXG4gICAgICBjYXNlICdOZXh0RmlsZUhhc0xvbmdMaW5rcGF0aCc6XG4gICAgICBjYXNlICdOZXh0RmlsZUhhc0xvbmdQYXRoJzpcbiAgICAgIGNhc2UgJ09sZEdudUxvbmdQYXRoJzpcbiAgICAgIGNhc2UgJ0dsb2JhbEV4dGVuZGVkSGVhZGVyJzpcbiAgICAgIGNhc2UgJ0V4dGVuZGVkSGVhZGVyJzpcbiAgICAgIGNhc2UgJ09sZEV4dGVuZGVkSGVhZGVyJzpcbiAgICAgICAgdGhpcy5tZXRhID0gdHJ1ZVxuICAgICAgICBicmVha1xuXG4gICAgICAvLyBOT1RFOiBnbnV0YXIgYW5kIGJzZHRhciB0cmVhdCB1bnJlY29nbml6ZWQgdHlwZXMgYXMgJ0ZpbGUnXG4gICAgICAvLyBpdCBtYXkgYmUgd29ydGggZG9pbmcgdGhlIHNhbWUsIGJ1dCB3aXRoIGEgd2FybmluZy5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRoaXMuaWdub3JlID0gdHJ1ZVxuICAgIH1cblxuICAgIHRoaXMucGF0aCA9IG5vcm1QYXRoKGhlYWRlci5wYXRoKVxuICAgIHRoaXMubW9kZSA9IGhlYWRlci5tb2RlXG4gICAgaWYgKHRoaXMubW9kZSkge1xuICAgICAgdGhpcy5tb2RlID0gdGhpcy5tb2RlICYgMG83Nzc3XG4gICAgfVxuICAgIHRoaXMudWlkID0gaGVhZGVyLnVpZFxuICAgIHRoaXMuZ2lkID0gaGVhZGVyLmdpZFxuICAgIHRoaXMudW5hbWUgPSBoZWFkZXIudW5hbWVcbiAgICB0aGlzLmduYW1lID0gaGVhZGVyLmduYW1lXG4gICAgdGhpcy5zaXplID0gaGVhZGVyLnNpemVcbiAgICB0aGlzLm10aW1lID0gaGVhZGVyLm10aW1lXG4gICAgdGhpcy5hdGltZSA9IGhlYWRlci5hdGltZVxuICAgIHRoaXMuY3RpbWUgPSBoZWFkZXIuY3RpbWVcbiAgICB0aGlzLmxpbmtwYXRoID0gbm9ybVBhdGgoaGVhZGVyLmxpbmtwYXRoKVxuICAgIHRoaXMudW5hbWUgPSBoZWFkZXIudW5hbWVcbiAgICB0aGlzLmduYW1lID0gaGVhZGVyLmduYW1lXG5cbiAgICBpZiAoZXgpIHtcbiAgICAgIHRoaXNbU0xVUlBdKGV4KVxuICAgIH1cbiAgICBpZiAoZ2V4KSB7XG4gICAgICB0aGlzW1NMVVJQXShnZXgsIHRydWUpXG4gICAgfVxuICB9XG5cbiAgd3JpdGUgKGRhdGEpIHtcbiAgICBjb25zdCB3cml0ZUxlbiA9IGRhdGEubGVuZ3RoXG4gICAgaWYgKHdyaXRlTGVuID4gdGhpcy5ibG9ja1JlbWFpbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCd3cml0aW5nIG1vcmUgdG8gZW50cnkgdGhhbiBpcyBhcHByb3ByaWF0ZScpXG4gICAgfVxuXG4gICAgY29uc3QgciA9IHRoaXMucmVtYWluXG4gICAgY29uc3QgYnIgPSB0aGlzLmJsb2NrUmVtYWluXG4gICAgdGhpcy5yZW1haW4gPSBNYXRoLm1heCgwLCByIC0gd3JpdGVMZW4pXG4gICAgdGhpcy5ibG9ja1JlbWFpbiA9IE1hdGgubWF4KDAsIGJyIC0gd3JpdGVMZW4pXG4gICAgaWYgKHRoaXMuaWdub3JlKSB7XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cblxuICAgIGlmIChyID49IHdyaXRlTGVuKSB7XG4gICAgICByZXR1cm4gc3VwZXIud3JpdGUoZGF0YSlcbiAgICB9XG5cbiAgICAvLyByIDwgd3JpdGVMZW5cbiAgICByZXR1cm4gc3VwZXIud3JpdGUoZGF0YS5zbGljZSgwLCByKSlcbiAgfVxuXG4gIFtTTFVSUF0gKGV4LCBnbG9iYWwpIHtcbiAgICBmb3IgKGNvbnN0IGsgaW4gZXgpIHtcbiAgICAgIC8vIHdlIHNsdXJwIGluIGV2ZXJ5dGhpbmcgZXhjZXB0IGZvciB0aGUgcGF0aCBhdHRyaWJ1dGUgaW5cbiAgICAgIC8vIGEgZ2xvYmFsIGV4dGVuZGVkIGhlYWRlciwgYmVjYXVzZSB0aGF0J3Mgd2VpcmQuXG4gICAgICBpZiAoZXhba10gIT09IG51bGwgJiYgZXhba10gIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgICEoZ2xvYmFsICYmIGsgPT09ICdwYXRoJykpIHtcbiAgICAgICAgdGhpc1trXSA9IGsgPT09ICdwYXRoJyB8fCBrID09PSAnbGlua3BhdGgnID8gbm9ybVBhdGgoZXhba10pIDogZXhba11cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsICIndXNlIHN0cmljdCdcbi8vIG1hcCB0eXBlcyBmcm9tIGtleSB0byBodW1hbi1mcmllbmRseSBuYW1lXG5leHBvcnRzLm5hbWUgPSBuZXcgTWFwKFtcbiAgWycwJywgJ0ZpbGUnXSxcbiAgLy8gc2FtZSBhcyBGaWxlXG4gIFsnJywgJ09sZEZpbGUnXSxcbiAgWycxJywgJ0xpbmsnXSxcbiAgWycyJywgJ1N5bWJvbGljTGluayddLFxuICAvLyBEZXZpY2VzIGFuZCBGSUZPcyBhcmVuJ3QgZnVsbHkgc3VwcG9ydGVkXG4gIC8vIHRoZXkgYXJlIHBhcnNlZCwgYnV0IHNraXBwZWQgd2hlbiB1bnBhY2tpbmdcbiAgWyczJywgJ0NoYXJhY3RlckRldmljZSddLFxuICBbJzQnLCAnQmxvY2tEZXZpY2UnXSxcbiAgWyc1JywgJ0RpcmVjdG9yeSddLFxuICBbJzYnLCAnRklGTyddLFxuICAvLyBzYW1lIGFzIEZpbGVcbiAgWyc3JywgJ0NvbnRpZ3VvdXNGaWxlJ10sXG4gIC8vIHBheCBoZWFkZXJzXG4gIFsnZycsICdHbG9iYWxFeHRlbmRlZEhlYWRlciddLFxuICBbJ3gnLCAnRXh0ZW5kZWRIZWFkZXInXSxcbiAgLy8gdmVuZG9yLXNwZWNpZmljIHN0dWZmXG4gIC8vIHNraXBcbiAgWydBJywgJ1NvbGFyaXNBQ0wnXSxcbiAgLy8gbGlrZSA1LCBidXQgd2l0aCBkYXRhLCB3aGljaCBzaG91bGQgYmUgc2tpcHBlZFxuICBbJ0QnLCAnR05VRHVtcERpciddLFxuICAvLyBtZXRhZGF0YSBvbmx5LCBza2lwXG4gIFsnSScsICdJbm9kZSddLFxuICAvLyBkYXRhID0gbGluayBwYXRoIG9mIG5leHQgZmlsZVxuICBbJ0snLCAnTmV4dEZpbGVIYXNMb25nTGlua3BhdGgnXSxcbiAgLy8gZGF0YSA9IHBhdGggb2YgbmV4dCBmaWxlXG4gIFsnTCcsICdOZXh0RmlsZUhhc0xvbmdQYXRoJ10sXG4gIC8vIHNraXBcbiAgWydNJywgJ0NvbnRpbnVhdGlvbkZpbGUnXSxcbiAgLy8gbGlrZSBMXG4gIFsnTicsICdPbGRHbnVMb25nUGF0aCddLFxuICAvLyBza2lwXG4gIFsnUycsICdTcGFyc2VGaWxlJ10sXG4gIC8vIHNraXBcbiAgWydWJywgJ1RhcGVWb2x1bWVIZWFkZXInXSxcbiAgLy8gbGlrZSB4XG4gIFsnWCcsICdPbGRFeHRlbmRlZEhlYWRlciddLFxuXSlcblxuLy8gbWFwIHRoZSBvdGhlciBkaXJlY3Rpb25cbmV4cG9ydHMuY29kZSA9IG5ldyBNYXAoQXJyYXkuZnJvbShleHBvcnRzLm5hbWUpLm1hcChrdiA9PiBba3ZbMV0sIGt2WzBdXSkpXG4iLCAiJ3VzZSBzdHJpY3QnXG4vLyBUYXIgY2FuIGVuY29kZSBsYXJnZSBhbmQgbmVnYXRpdmUgbnVtYmVycyB1c2luZyBhIGxlYWRpbmcgYnl0ZSBvZlxuLy8gMHhmZiBmb3IgbmVnYXRpdmUsIGFuZCAweDgwIGZvciBwb3NpdGl2ZS5cblxuY29uc3QgZW5jb2RlID0gKG51bSwgYnVmKSA9PiB7XG4gIGlmICghTnVtYmVyLmlzU2FmZUludGVnZXIobnVtKSkge1xuICAvLyBUaGUgbnVtYmVyIGlzIHNvIGxhcmdlIHRoYXQgamF2YXNjcmlwdCBjYW5ub3QgcmVwcmVzZW50IGl0IHdpdGggaW50ZWdlclxuICAvLyBwcmVjaXNpb24uXG4gICAgdGhyb3cgRXJyb3IoJ2Nhbm5vdCBlbmNvZGUgbnVtYmVyIG91dHNpZGUgb2YgamF2YXNjcmlwdCBzYWZlIGludGVnZXIgcmFuZ2UnKVxuICB9IGVsc2UgaWYgKG51bSA8IDApIHtcbiAgICBlbmNvZGVOZWdhdGl2ZShudW0sIGJ1ZilcbiAgfSBlbHNlIHtcbiAgICBlbmNvZGVQb3NpdGl2ZShudW0sIGJ1ZilcbiAgfVxuICByZXR1cm4gYnVmXG59XG5cbmNvbnN0IGVuY29kZVBvc2l0aXZlID0gKG51bSwgYnVmKSA9PiB7XG4gIGJ1ZlswXSA9IDB4ODBcblxuICBmb3IgKHZhciBpID0gYnVmLmxlbmd0aDsgaSA+IDE7IGktLSkge1xuICAgIGJ1ZltpIC0gMV0gPSBudW0gJiAweGZmXG4gICAgbnVtID0gTWF0aC5mbG9vcihudW0gLyAweDEwMClcbiAgfVxufVxuXG5jb25zdCBlbmNvZGVOZWdhdGl2ZSA9IChudW0sIGJ1ZikgPT4ge1xuICBidWZbMF0gPSAweGZmXG4gIHZhciBmbGlwcGVkID0gZmFsc2VcbiAgbnVtID0gbnVtICogLTFcbiAgZm9yICh2YXIgaSA9IGJ1Zi5sZW5ndGg7IGkgPiAxOyBpLS0pIHtcbiAgICB2YXIgYnl0ZSA9IG51bSAmIDB4ZmZcbiAgICBudW0gPSBNYXRoLmZsb29yKG51bSAvIDB4MTAwKVxuICAgIGlmIChmbGlwcGVkKSB7XG4gICAgICBidWZbaSAtIDFdID0gb25lc0NvbXAoYnl0ZSlcbiAgICB9IGVsc2UgaWYgKGJ5dGUgPT09IDApIHtcbiAgICAgIGJ1ZltpIC0gMV0gPSAwXG4gICAgfSBlbHNlIHtcbiAgICAgIGZsaXBwZWQgPSB0cnVlXG4gICAgICBidWZbaSAtIDFdID0gdHdvc0NvbXAoYnl0ZSlcbiAgICB9XG4gIH1cbn1cblxuY29uc3QgcGFyc2UgPSAoYnVmKSA9PiB7XG4gIGNvbnN0IHByZSA9IGJ1ZlswXVxuICBjb25zdCB2YWx1ZSA9IHByZSA9PT0gMHg4MCA/IHBvcyhidWYuc2xpY2UoMSwgYnVmLmxlbmd0aCkpXG4gICAgOiBwcmUgPT09IDB4ZmYgPyB0d29zKGJ1ZilcbiAgICA6IG51bGxcbiAgaWYgKHZhbHVlID09PSBudWxsKSB7XG4gICAgdGhyb3cgRXJyb3IoJ2ludmFsaWQgYmFzZTI1NiBlbmNvZGluZycpXG4gIH1cblxuICBpZiAoIU51bWJlci5pc1NhZmVJbnRlZ2VyKHZhbHVlKSkge1xuICAvLyBUaGUgbnVtYmVyIGlzIHNvIGxhcmdlIHRoYXQgamF2YXNjcmlwdCBjYW5ub3QgcmVwcmVzZW50IGl0IHdpdGggaW50ZWdlclxuICAvLyBwcmVjaXNpb24uXG4gICAgdGhyb3cgRXJyb3IoJ3BhcnNlZCBudW1iZXIgb3V0c2lkZSBvZiBqYXZhc2NyaXB0IHNhZmUgaW50ZWdlciByYW5nZScpXG4gIH1cblxuICByZXR1cm4gdmFsdWVcbn1cblxuY29uc3QgdHdvcyA9IChidWYpID0+IHtcbiAgdmFyIGxlbiA9IGJ1Zi5sZW5ndGhcbiAgdmFyIHN1bSA9IDBcbiAgdmFyIGZsaXBwZWQgPSBmYWxzZVxuICBmb3IgKHZhciBpID0gbGVuIC0gMTsgaSA+IC0xOyBpLS0pIHtcbiAgICB2YXIgYnl0ZSA9IGJ1ZltpXVxuICAgIHZhciBmXG4gICAgaWYgKGZsaXBwZWQpIHtcbiAgICAgIGYgPSBvbmVzQ29tcChieXRlKVxuICAgIH0gZWxzZSBpZiAoYnl0ZSA9PT0gMCkge1xuICAgICAgZiA9IGJ5dGVcbiAgICB9IGVsc2Uge1xuICAgICAgZmxpcHBlZCA9IHRydWVcbiAgICAgIGYgPSB0d29zQ29tcChieXRlKVxuICAgIH1cbiAgICBpZiAoZiAhPT0gMCkge1xuICAgICAgc3VtIC09IGYgKiBNYXRoLnBvdygyNTYsIGxlbiAtIGkgLSAxKVxuICAgIH1cbiAgfVxuICByZXR1cm4gc3VtXG59XG5cbmNvbnN0IHBvcyA9IChidWYpID0+IHtcbiAgdmFyIGxlbiA9IGJ1Zi5sZW5ndGhcbiAgdmFyIHN1bSA9IDBcbiAgZm9yICh2YXIgaSA9IGxlbiAtIDE7IGkgPiAtMTsgaS0tKSB7XG4gICAgdmFyIGJ5dGUgPSBidWZbaV1cbiAgICBpZiAoYnl0ZSAhPT0gMCkge1xuICAgICAgc3VtICs9IGJ5dGUgKiBNYXRoLnBvdygyNTYsIGxlbiAtIGkgLSAxKVxuICAgIH1cbiAgfVxuICByZXR1cm4gc3VtXG59XG5cbmNvbnN0IG9uZXNDb21wID0gYnl0ZSA9PiAoMHhmZiBeIGJ5dGUpICYgMHhmZlxuXG5jb25zdCB0d29zQ29tcCA9IGJ5dGUgPT4gKCgweGZmIF4gYnl0ZSkgKyAxKSAmIDB4ZmZcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGVuY29kZSxcbiAgcGFyc2UsXG59XG4iLCAiJ3VzZSBzdHJpY3QnXG4vLyBwYXJzZSBhIDUxMi1ieXRlIGhlYWRlciBibG9jayB0byBhIGRhdGEgb2JqZWN0LCBvciB2aWNlLXZlcnNhXG4vLyBlbmNvZGUgcmV0dXJucyBgdHJ1ZWAgaWYgYSBwYXggZXh0ZW5kZWQgaGVhZGVyIGlzIG5lZWRlZCwgYmVjYXVzZVxuLy8gdGhlIGRhdGEgY291bGQgbm90IGJlIGZhaXRoZnVsbHkgZW5jb2RlZCBpbiBhIHNpbXBsZSBoZWFkZXIuXG4vLyAoQWxzbywgY2hlY2sgaGVhZGVyLm5lZWRQYXggdG8gc2VlIGlmIGl0IG5lZWRzIGEgcGF4IGhlYWRlci4pXG5cbmNvbnN0IHR5cGVzID0gcmVxdWlyZSgnLi90eXBlcy5qcycpXG5jb25zdCBwYXRoTW9kdWxlID0gcmVxdWlyZSgncGF0aCcpLnBvc2l4XG5jb25zdCBsYXJnZSA9IHJlcXVpcmUoJy4vbGFyZ2UtbnVtYmVycy5qcycpXG5cbmNvbnN0IFNMVVJQID0gU3ltYm9sKCdzbHVycCcpXG5jb25zdCBUWVBFID0gU3ltYm9sKCd0eXBlJylcblxuY2xhc3MgSGVhZGVyIHtcbiAgY29uc3RydWN0b3IgKGRhdGEsIG9mZiwgZXgsIGdleCkge1xuICAgIHRoaXMuY2tzdW1WYWxpZCA9IGZhbHNlXG4gICAgdGhpcy5uZWVkUGF4ID0gZmFsc2VcbiAgICB0aGlzLm51bGxCbG9jayA9IGZhbHNlXG5cbiAgICB0aGlzLmJsb2NrID0gbnVsbFxuICAgIHRoaXMucGF0aCA9IG51bGxcbiAgICB0aGlzLm1vZGUgPSBudWxsXG4gICAgdGhpcy51aWQgPSBudWxsXG4gICAgdGhpcy5naWQgPSBudWxsXG4gICAgdGhpcy5zaXplID0gbnVsbFxuICAgIHRoaXMubXRpbWUgPSBudWxsXG4gICAgdGhpcy5ja3N1bSA9IG51bGxcbiAgICB0aGlzW1RZUEVdID0gJzAnXG4gICAgdGhpcy5saW5rcGF0aCA9IG51bGxcbiAgICB0aGlzLnVuYW1lID0gbnVsbFxuICAgIHRoaXMuZ25hbWUgPSBudWxsXG4gICAgdGhpcy5kZXZtYWogPSAwXG4gICAgdGhpcy5kZXZtaW4gPSAwXG4gICAgdGhpcy5hdGltZSA9IG51bGxcbiAgICB0aGlzLmN0aW1lID0gbnVsbFxuXG4gICAgaWYgKEJ1ZmZlci5pc0J1ZmZlcihkYXRhKSkge1xuICAgICAgdGhpcy5kZWNvZGUoZGF0YSwgb2ZmIHx8IDAsIGV4LCBnZXgpXG4gICAgfSBlbHNlIGlmIChkYXRhKSB7XG4gICAgICB0aGlzLnNldChkYXRhKVxuICAgIH1cbiAgfVxuXG4gIGRlY29kZSAoYnVmLCBvZmYsIGV4LCBnZXgpIHtcbiAgICBpZiAoIW9mZikge1xuICAgICAgb2ZmID0gMFxuICAgIH1cblxuICAgIGlmICghYnVmIHx8ICEoYnVmLmxlbmd0aCA+PSBvZmYgKyA1MTIpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ25lZWQgNTEyIGJ5dGVzIGZvciBoZWFkZXInKVxuICAgIH1cblxuICAgIHRoaXMucGF0aCA9IGRlY1N0cmluZyhidWYsIG9mZiwgMTAwKVxuICAgIHRoaXMubW9kZSA9IGRlY051bWJlcihidWYsIG9mZiArIDEwMCwgOClcbiAgICB0aGlzLnVpZCA9IGRlY051bWJlcihidWYsIG9mZiArIDEwOCwgOClcbiAgICB0aGlzLmdpZCA9IGRlY051bWJlcihidWYsIG9mZiArIDExNiwgOClcbiAgICB0aGlzLnNpemUgPSBkZWNOdW1iZXIoYnVmLCBvZmYgKyAxMjQsIDEyKVxuICAgIHRoaXMubXRpbWUgPSBkZWNEYXRlKGJ1Ziwgb2ZmICsgMTM2LCAxMilcbiAgICB0aGlzLmNrc3VtID0gZGVjTnVtYmVyKGJ1Ziwgb2ZmICsgMTQ4LCAxMilcblxuICAgIC8vIGlmIHdlIGhhdmUgZXh0ZW5kZWQgb3IgZ2xvYmFsIGV4dGVuZGVkIGhlYWRlcnMsIGFwcGx5IHRoZW0gbm93XG4gICAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9ucG0vbm9kZS10YXIvcHVsbC8xODdcbiAgICB0aGlzW1NMVVJQXShleClcbiAgICB0aGlzW1NMVVJQXShnZXgsIHRydWUpXG5cbiAgICAvLyBvbGQgdGFyIHZlcnNpb25zIG1hcmtlZCBkaXJzIGFzIGEgZmlsZSB3aXRoIGEgdHJhaWxpbmcgL1xuICAgIHRoaXNbVFlQRV0gPSBkZWNTdHJpbmcoYnVmLCBvZmYgKyAxNTYsIDEpXG4gICAgaWYgKHRoaXNbVFlQRV0gPT09ICcnKSB7XG4gICAgICB0aGlzW1RZUEVdID0gJzAnXG4gICAgfVxuICAgIGlmICh0aGlzW1RZUEVdID09PSAnMCcgJiYgdGhpcy5wYXRoLnNsaWNlKC0xKSA9PT0gJy8nKSB7XG4gICAgICB0aGlzW1RZUEVdID0gJzUnXG4gICAgfVxuXG4gICAgLy8gdGFyIGltcGxlbWVudGF0aW9ucyBzb21ldGltZXMgaW5jb3JyZWN0bHkgcHV0IHRoZSBzdGF0KGRpcikuc2l6ZVxuICAgIC8vIGFzIHRoZSBzaXplIGluIHRoZSB0YXJiYWxsLCBldmVuIHRob3VnaCBEaXJlY3RvcnkgZW50cmllcyBhcmVcbiAgICAvLyBub3QgYWJsZSB0byBoYXZlIGFueSBib2R5IGF0IGFsbC4gIEluIHRoZSB2ZXJ5IHJhcmUgY2hhbmNlIHRoYXRcbiAgICAvLyBpdCBhY3R1YWxseSBET0VTIGhhdmUgYSBib2R5LCB3ZSB3ZXJlbid0IGdvaW5nIHRvIGRvIGFueXRoaW5nIHdpdGhcbiAgICAvLyBpdCBhbnl3YXksIGFuZCBpdCdsbCBqdXN0IGJlIGEgd2FybmluZyBhYm91dCBhbiBpbnZhbGlkIGhlYWRlci5cbiAgICBpZiAodGhpc1tUWVBFXSA9PT0gJzUnKSB7XG4gICAgICB0aGlzLnNpemUgPSAwXG4gICAgfVxuXG4gICAgdGhpcy5saW5rcGF0aCA9IGRlY1N0cmluZyhidWYsIG9mZiArIDE1NywgMTAwKVxuICAgIGlmIChidWYuc2xpY2Uob2ZmICsgMjU3LCBvZmYgKyAyNjUpLnRvU3RyaW5nKCkgPT09ICd1c3RhclxcdTAwMDAwMCcpIHtcbiAgICAgIHRoaXMudW5hbWUgPSBkZWNTdHJpbmcoYnVmLCBvZmYgKyAyNjUsIDMyKVxuICAgICAgdGhpcy5nbmFtZSA9IGRlY1N0cmluZyhidWYsIG9mZiArIDI5NywgMzIpXG4gICAgICB0aGlzLmRldm1haiA9IGRlY051bWJlcihidWYsIG9mZiArIDMyOSwgOClcbiAgICAgIHRoaXMuZGV2bWluID0gZGVjTnVtYmVyKGJ1Ziwgb2ZmICsgMzM3LCA4KVxuICAgICAgaWYgKGJ1ZltvZmYgKyA0NzVdICE9PSAwKSB7XG4gICAgICAgIC8vIGRlZmluaXRlbHkgYSBwcmVmaXgsIGRlZmluaXRlbHkgPjEzMCBjaGFycy5cbiAgICAgICAgY29uc3QgcHJlZml4ID0gZGVjU3RyaW5nKGJ1Ziwgb2ZmICsgMzQ1LCAxNTUpXG4gICAgICAgIHRoaXMucGF0aCA9IHByZWZpeCArICcvJyArIHRoaXMucGF0aFxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgcHJlZml4ID0gZGVjU3RyaW5nKGJ1Ziwgb2ZmICsgMzQ1LCAxMzApXG4gICAgICAgIGlmIChwcmVmaXgpIHtcbiAgICAgICAgICB0aGlzLnBhdGggPSBwcmVmaXggKyAnLycgKyB0aGlzLnBhdGhcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmF0aW1lID0gZGVjRGF0ZShidWYsIG9mZiArIDQ3NiwgMTIpXG4gICAgICAgIHRoaXMuY3RpbWUgPSBkZWNEYXRlKGJ1Ziwgb2ZmICsgNDg4LCAxMilcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgc3VtID0gOCAqIDB4MjBcbiAgICBmb3IgKGxldCBpID0gb2ZmOyBpIDwgb2ZmICsgMTQ4OyBpKyspIHtcbiAgICAgIHN1bSArPSBidWZbaV1cbiAgICB9XG5cbiAgICBmb3IgKGxldCBpID0gb2ZmICsgMTU2OyBpIDwgb2ZmICsgNTEyOyBpKyspIHtcbiAgICAgIHN1bSArPSBidWZbaV1cbiAgICB9XG5cbiAgICB0aGlzLmNrc3VtVmFsaWQgPSBzdW0gPT09IHRoaXMuY2tzdW1cbiAgICBpZiAodGhpcy5ja3N1bSA9PT0gbnVsbCAmJiBzdW0gPT09IDggKiAweDIwKSB7XG4gICAgICB0aGlzLm51bGxCbG9jayA9IHRydWVcbiAgICB9XG4gIH1cblxuICBbU0xVUlBdIChleCwgZ2xvYmFsKSB7XG4gICAgZm9yIChjb25zdCBrIGluIGV4KSB7XG4gICAgICAvLyB3ZSBzbHVycCBpbiBldmVyeXRoaW5nIGV4Y2VwdCBmb3IgdGhlIHBhdGggYXR0cmlidXRlIGluXG4gICAgICAvLyBhIGdsb2JhbCBleHRlbmRlZCBoZWFkZXIsIGJlY2F1c2UgdGhhdCdzIHdlaXJkLlxuICAgICAgaWYgKGV4W2tdICE9PSBudWxsICYmIGV4W2tdICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgICAhKGdsb2JhbCAmJiBrID09PSAncGF0aCcpKSB7XG4gICAgICAgIHRoaXNba10gPSBleFtrXVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGVuY29kZSAoYnVmLCBvZmYpIHtcbiAgICBpZiAoIWJ1Zikge1xuICAgICAgYnVmID0gdGhpcy5ibG9jayA9IEJ1ZmZlci5hbGxvYyg1MTIpXG4gICAgICBvZmYgPSAwXG4gICAgfVxuXG4gICAgaWYgKCFvZmYpIHtcbiAgICAgIG9mZiA9IDBcbiAgICB9XG5cbiAgICBpZiAoIShidWYubGVuZ3RoID49IG9mZiArIDUxMikpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignbmVlZCA1MTIgYnl0ZXMgZm9yIGhlYWRlcicpXG4gICAgfVxuXG4gICAgY29uc3QgcHJlZml4U2l6ZSA9IHRoaXMuY3RpbWUgfHwgdGhpcy5hdGltZSA/IDEzMCA6IDE1NVxuICAgIGNvbnN0IHNwbGl0ID0gc3BsaXRQcmVmaXgodGhpcy5wYXRoIHx8ICcnLCBwcmVmaXhTaXplKVxuICAgIGNvbnN0IHBhdGggPSBzcGxpdFswXVxuICAgIGNvbnN0IHByZWZpeCA9IHNwbGl0WzFdXG4gICAgdGhpcy5uZWVkUGF4ID0gc3BsaXRbMl1cblxuICAgIHRoaXMubmVlZFBheCA9IGVuY1N0cmluZyhidWYsIG9mZiwgMTAwLCBwYXRoKSB8fCB0aGlzLm5lZWRQYXhcbiAgICB0aGlzLm5lZWRQYXggPSBlbmNOdW1iZXIoYnVmLCBvZmYgKyAxMDAsIDgsIHRoaXMubW9kZSkgfHwgdGhpcy5uZWVkUGF4XG4gICAgdGhpcy5uZWVkUGF4ID0gZW5jTnVtYmVyKGJ1Ziwgb2ZmICsgMTA4LCA4LCB0aGlzLnVpZCkgfHwgdGhpcy5uZWVkUGF4XG4gICAgdGhpcy5uZWVkUGF4ID0gZW5jTnVtYmVyKGJ1Ziwgb2ZmICsgMTE2LCA4LCB0aGlzLmdpZCkgfHwgdGhpcy5uZWVkUGF4XG4gICAgdGhpcy5uZWVkUGF4ID0gZW5jTnVtYmVyKGJ1Ziwgb2ZmICsgMTI0LCAxMiwgdGhpcy5zaXplKSB8fCB0aGlzLm5lZWRQYXhcbiAgICB0aGlzLm5lZWRQYXggPSBlbmNEYXRlKGJ1Ziwgb2ZmICsgMTM2LCAxMiwgdGhpcy5tdGltZSkgfHwgdGhpcy5uZWVkUGF4XG4gICAgYnVmW29mZiArIDE1Nl0gPSB0aGlzW1RZUEVdLmNoYXJDb2RlQXQoMClcbiAgICB0aGlzLm5lZWRQYXggPSBlbmNTdHJpbmcoYnVmLCBvZmYgKyAxNTcsIDEwMCwgdGhpcy5saW5rcGF0aCkgfHwgdGhpcy5uZWVkUGF4XG4gICAgYnVmLndyaXRlKCd1c3RhclxcdTAwMDAwMCcsIG9mZiArIDI1NywgOClcbiAgICB0aGlzLm5lZWRQYXggPSBlbmNTdHJpbmcoYnVmLCBvZmYgKyAyNjUsIDMyLCB0aGlzLnVuYW1lKSB8fCB0aGlzLm5lZWRQYXhcbiAgICB0aGlzLm5lZWRQYXggPSBlbmNTdHJpbmcoYnVmLCBvZmYgKyAyOTcsIDMyLCB0aGlzLmduYW1lKSB8fCB0aGlzLm5lZWRQYXhcbiAgICB0aGlzLm5lZWRQYXggPSBlbmNOdW1iZXIoYnVmLCBvZmYgKyAzMjksIDgsIHRoaXMuZGV2bWFqKSB8fCB0aGlzLm5lZWRQYXhcbiAgICB0aGlzLm5lZWRQYXggPSBlbmNOdW1iZXIoYnVmLCBvZmYgKyAzMzcsIDgsIHRoaXMuZGV2bWluKSB8fCB0aGlzLm5lZWRQYXhcbiAgICB0aGlzLm5lZWRQYXggPSBlbmNTdHJpbmcoYnVmLCBvZmYgKyAzNDUsIHByZWZpeFNpemUsIHByZWZpeCkgfHwgdGhpcy5uZWVkUGF4XG4gICAgaWYgKGJ1ZltvZmYgKyA0NzVdICE9PSAwKSB7XG4gICAgICB0aGlzLm5lZWRQYXggPSBlbmNTdHJpbmcoYnVmLCBvZmYgKyAzNDUsIDE1NSwgcHJlZml4KSB8fCB0aGlzLm5lZWRQYXhcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5uZWVkUGF4ID0gZW5jU3RyaW5nKGJ1Ziwgb2ZmICsgMzQ1LCAxMzAsIHByZWZpeCkgfHwgdGhpcy5uZWVkUGF4XG4gICAgICB0aGlzLm5lZWRQYXggPSBlbmNEYXRlKGJ1Ziwgb2ZmICsgNDc2LCAxMiwgdGhpcy5hdGltZSkgfHwgdGhpcy5uZWVkUGF4XG4gICAgICB0aGlzLm5lZWRQYXggPSBlbmNEYXRlKGJ1Ziwgb2ZmICsgNDg4LCAxMiwgdGhpcy5jdGltZSkgfHwgdGhpcy5uZWVkUGF4XG4gICAgfVxuXG4gICAgbGV0IHN1bSA9IDggKiAweDIwXG4gICAgZm9yIChsZXQgaSA9IG9mZjsgaSA8IG9mZiArIDE0ODsgaSsrKSB7XG4gICAgICBzdW0gKz0gYnVmW2ldXG4gICAgfVxuXG4gICAgZm9yIChsZXQgaSA9IG9mZiArIDE1NjsgaSA8IG9mZiArIDUxMjsgaSsrKSB7XG4gICAgICBzdW0gKz0gYnVmW2ldXG4gICAgfVxuXG4gICAgdGhpcy5ja3N1bSA9IHN1bVxuICAgIGVuY051bWJlcihidWYsIG9mZiArIDE0OCwgOCwgdGhpcy5ja3N1bSlcbiAgICB0aGlzLmNrc3VtVmFsaWQgPSB0cnVlXG5cbiAgICByZXR1cm4gdGhpcy5uZWVkUGF4XG4gIH1cblxuICBzZXQgKGRhdGEpIHtcbiAgICBmb3IgKGNvbnN0IGkgaW4gZGF0YSkge1xuICAgICAgaWYgKGRhdGFbaV0gIT09IG51bGwgJiYgZGF0YVtpXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXNbaV0gPSBkYXRhW2ldXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZ2V0IHR5cGUgKCkge1xuICAgIHJldHVybiB0eXBlcy5uYW1lLmdldCh0aGlzW1RZUEVdKSB8fCB0aGlzW1RZUEVdXG4gIH1cblxuICBnZXQgdHlwZUtleSAoKSB7XG4gICAgcmV0dXJuIHRoaXNbVFlQRV1cbiAgfVxuXG4gIHNldCB0eXBlICh0eXBlKSB7XG4gICAgaWYgKHR5cGVzLmNvZGUuaGFzKHR5cGUpKSB7XG4gICAgICB0aGlzW1RZUEVdID0gdHlwZXMuY29kZS5nZXQodHlwZSlcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpc1tUWVBFXSA9IHR5cGVcbiAgICB9XG4gIH1cbn1cblxuY29uc3Qgc3BsaXRQcmVmaXggPSAocCwgcHJlZml4U2l6ZSkgPT4ge1xuICBjb25zdCBwYXRoU2l6ZSA9IDEwMFxuICBsZXQgcHAgPSBwXG4gIGxldCBwcmVmaXggPSAnJ1xuICBsZXQgcmV0XG4gIGNvbnN0IHJvb3QgPSBwYXRoTW9kdWxlLnBhcnNlKHApLnJvb3QgfHwgJy4nXG5cbiAgaWYgKEJ1ZmZlci5ieXRlTGVuZ3RoKHBwKSA8IHBhdGhTaXplKSB7XG4gICAgcmV0ID0gW3BwLCBwcmVmaXgsIGZhbHNlXVxuICB9IGVsc2Uge1xuICAgIC8vIGZpcnN0IHNldCBwcmVmaXggdG8gdGhlIGRpciwgYW5kIHBhdGggdG8gdGhlIGJhc2VcbiAgICBwcmVmaXggPSBwYXRoTW9kdWxlLmRpcm5hbWUocHApXG4gICAgcHAgPSBwYXRoTW9kdWxlLmJhc2VuYW1lKHBwKVxuXG4gICAgZG8ge1xuICAgICAgaWYgKEJ1ZmZlci5ieXRlTGVuZ3RoKHBwKSA8PSBwYXRoU2l6ZSAmJlxuICAgICAgICAgIEJ1ZmZlci5ieXRlTGVuZ3RoKHByZWZpeCkgPD0gcHJlZml4U2l6ZSkge1xuICAgICAgICAvLyBib3RoIGZpdCFcbiAgICAgICAgcmV0ID0gW3BwLCBwcmVmaXgsIGZhbHNlXVxuICAgICAgfSBlbHNlIGlmIChCdWZmZXIuYnl0ZUxlbmd0aChwcCkgPiBwYXRoU2l6ZSAmJlxuICAgICAgICAgIEJ1ZmZlci5ieXRlTGVuZ3RoKHByZWZpeCkgPD0gcHJlZml4U2l6ZSkge1xuICAgICAgICAvLyBwcmVmaXggZml0cyBpbiBwcmVmaXgsIGJ1dCBwYXRoIGRvZXNuJ3QgZml0IGluIHBhdGhcbiAgICAgICAgcmV0ID0gW3BwLnNsaWNlKDAsIHBhdGhTaXplIC0gMSksIHByZWZpeCwgdHJ1ZV1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIG1ha2UgcGF0aCB0YWtlIGEgYml0IGZyb20gcHJlZml4XG4gICAgICAgIHBwID0gcGF0aE1vZHVsZS5qb2luKHBhdGhNb2R1bGUuYmFzZW5hbWUocHJlZml4KSwgcHApXG4gICAgICAgIHByZWZpeCA9IHBhdGhNb2R1bGUuZGlybmFtZShwcmVmaXgpXG4gICAgICB9XG4gICAgfSB3aGlsZSAocHJlZml4ICE9PSByb290ICYmICFyZXQpXG5cbiAgICAvLyBhdCB0aGlzIHBvaW50LCBmb3VuZCBubyByZXNvbHV0aW9uLCBqdXN0IHRydW5jYXRlXG4gICAgaWYgKCFyZXQpIHtcbiAgICAgIHJldCA9IFtwLnNsaWNlKDAsIHBhdGhTaXplIC0gMSksICcnLCB0cnVlXVxuICAgIH1cbiAgfVxuICByZXR1cm4gcmV0XG59XG5cbmNvbnN0IGRlY1N0cmluZyA9IChidWYsIG9mZiwgc2l6ZSkgPT5cbiAgYnVmLnNsaWNlKG9mZiwgb2ZmICsgc2l6ZSkudG9TdHJpbmcoJ3V0ZjgnKS5yZXBsYWNlKC9cXDAuKi8sICcnKVxuXG5jb25zdCBkZWNEYXRlID0gKGJ1Ziwgb2ZmLCBzaXplKSA9PlxuICBudW1Ub0RhdGUoZGVjTnVtYmVyKGJ1Ziwgb2ZmLCBzaXplKSlcblxuY29uc3QgbnVtVG9EYXRlID0gbnVtID0+IG51bSA9PT0gbnVsbCA/IG51bGwgOiBuZXcgRGF0ZShudW0gKiAxMDAwKVxuXG5jb25zdCBkZWNOdW1iZXIgPSAoYnVmLCBvZmYsIHNpemUpID0+XG4gIGJ1ZltvZmZdICYgMHg4MCA/IGxhcmdlLnBhcnNlKGJ1Zi5zbGljZShvZmYsIG9mZiArIHNpemUpKVxuICA6IGRlY1NtYWxsTnVtYmVyKGJ1Ziwgb2ZmLCBzaXplKVxuXG5jb25zdCBuYW5OdWxsID0gdmFsdWUgPT4gaXNOYU4odmFsdWUpID8gbnVsbCA6IHZhbHVlXG5cbmNvbnN0IGRlY1NtYWxsTnVtYmVyID0gKGJ1Ziwgb2ZmLCBzaXplKSA9PlxuICBuYW5OdWxsKHBhcnNlSW50KFxuICAgIGJ1Zi5zbGljZShvZmYsIG9mZiArIHNpemUpXG4gICAgICAudG9TdHJpbmcoJ3V0ZjgnKS5yZXBsYWNlKC9cXDAuKiQvLCAnJykudHJpbSgpLCA4KSlcblxuLy8gdGhlIG1heGltdW0gZW5jb2RhYmxlIGFzIGEgbnVsbC10ZXJtaW5hdGVkIG9jdGFsLCBieSBmaWVsZCBzaXplXG5jb25zdCBNQVhOVU0gPSB7XG4gIDEyOiAwbzc3Nzc3Nzc3Nzc3LFxuICA4OiAwbzc3Nzc3NzcsXG59XG5cbmNvbnN0IGVuY051bWJlciA9IChidWYsIG9mZiwgc2l6ZSwgbnVtYmVyKSA9PlxuICBudW1iZXIgPT09IG51bGwgPyBmYWxzZSA6XG4gIG51bWJlciA+IE1BWE5VTVtzaXplXSB8fCBudW1iZXIgPCAwXG4gICAgPyAobGFyZ2UuZW5jb2RlKG51bWJlciwgYnVmLnNsaWNlKG9mZiwgb2ZmICsgc2l6ZSkpLCB0cnVlKVxuICAgIDogKGVuY1NtYWxsTnVtYmVyKGJ1Ziwgb2ZmLCBzaXplLCBudW1iZXIpLCBmYWxzZSlcblxuY29uc3QgZW5jU21hbGxOdW1iZXIgPSAoYnVmLCBvZmYsIHNpemUsIG51bWJlcikgPT5cbiAgYnVmLndyaXRlKG9jdGFsU3RyaW5nKG51bWJlciwgc2l6ZSksIG9mZiwgc2l6ZSwgJ2FzY2lpJylcblxuY29uc3Qgb2N0YWxTdHJpbmcgPSAobnVtYmVyLCBzaXplKSA9PlxuICBwYWRPY3RhbChNYXRoLmZsb29yKG51bWJlcikudG9TdHJpbmcoOCksIHNpemUpXG5cbmNvbnN0IHBhZE9jdGFsID0gKHN0cmluZywgc2l6ZSkgPT5cbiAgKHN0cmluZy5sZW5ndGggPT09IHNpemUgLSAxID8gc3RyaW5nXG4gIDogbmV3IEFycmF5KHNpemUgLSBzdHJpbmcubGVuZ3RoIC0gMSkuam9pbignMCcpICsgc3RyaW5nICsgJyAnKSArICdcXDAnXG5cbmNvbnN0IGVuY0RhdGUgPSAoYnVmLCBvZmYsIHNpemUsIGRhdGUpID0+XG4gIGRhdGUgPT09IG51bGwgPyBmYWxzZSA6XG4gIGVuY051bWJlcihidWYsIG9mZiwgc2l6ZSwgZGF0ZS5nZXRUaW1lKCkgLyAxMDAwKVxuXG4vLyBlbm91Z2ggdG8gZmlsbCB0aGUgbG9uZ2VzdCBzdHJpbmcgd2UndmUgZ290XG5jb25zdCBOVUxMUyA9IG5ldyBBcnJheSgxNTYpLmpvaW4oJ1xcMCcpXG4vLyBwYWQgd2l0aCBudWxscywgcmV0dXJuIHRydWUgaWYgaXQncyBsb25nZXIgb3Igbm9uLWFzY2lpXG5jb25zdCBlbmNTdHJpbmcgPSAoYnVmLCBvZmYsIHNpemUsIHN0cmluZykgPT5cbiAgc3RyaW5nID09PSBudWxsID8gZmFsc2UgOlxuICAoYnVmLndyaXRlKHN0cmluZyArIE5VTExTLCBvZmYsIHNpemUsICd1dGY4JyksXG4gIHN0cmluZy5sZW5ndGggIT09IEJ1ZmZlci5ieXRlTGVuZ3RoKHN0cmluZykgfHwgc3RyaW5nLmxlbmd0aCA+IHNpemUpXG5cbm1vZHVsZS5leHBvcnRzID0gSGVhZGVyXG4iLCAiJ3VzZSBzdHJpY3QnXG5jb25zdCBIZWFkZXIgPSByZXF1aXJlKCcuL2hlYWRlci5qcycpXG5jb25zdCBwYXRoID0gcmVxdWlyZSgncGF0aCcpXG5cbmNsYXNzIFBheCB7XG4gIGNvbnN0cnVjdG9yIChvYmosIGdsb2JhbCkge1xuICAgIHRoaXMuYXRpbWUgPSBvYmouYXRpbWUgfHwgbnVsbFxuICAgIHRoaXMuY2hhcnNldCA9IG9iai5jaGFyc2V0IHx8IG51bGxcbiAgICB0aGlzLmNvbW1lbnQgPSBvYmouY29tbWVudCB8fCBudWxsXG4gICAgdGhpcy5jdGltZSA9IG9iai5jdGltZSB8fCBudWxsXG4gICAgdGhpcy5naWQgPSBvYmouZ2lkIHx8IG51bGxcbiAgICB0aGlzLmduYW1lID0gb2JqLmduYW1lIHx8IG51bGxcbiAgICB0aGlzLmxpbmtwYXRoID0gb2JqLmxpbmtwYXRoIHx8IG51bGxcbiAgICB0aGlzLm10aW1lID0gb2JqLm10aW1lIHx8IG51bGxcbiAgICB0aGlzLnBhdGggPSBvYmoucGF0aCB8fCBudWxsXG4gICAgdGhpcy5zaXplID0gb2JqLnNpemUgfHwgbnVsbFxuICAgIHRoaXMudWlkID0gb2JqLnVpZCB8fCBudWxsXG4gICAgdGhpcy51bmFtZSA9IG9iai51bmFtZSB8fCBudWxsXG4gICAgdGhpcy5kZXYgPSBvYmouZGV2IHx8IG51bGxcbiAgICB0aGlzLmlubyA9IG9iai5pbm8gfHwgbnVsbFxuICAgIHRoaXMubmxpbmsgPSBvYmoubmxpbmsgfHwgbnVsbFxuICAgIHRoaXMuZ2xvYmFsID0gZ2xvYmFsIHx8IGZhbHNlXG4gIH1cblxuICBlbmNvZGUgKCkge1xuICAgIGNvbnN0IGJvZHkgPSB0aGlzLmVuY29kZUJvZHkoKVxuICAgIGlmIChib2R5ID09PSAnJykge1xuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG5cbiAgICBjb25zdCBib2R5TGVuID0gQnVmZmVyLmJ5dGVMZW5ndGgoYm9keSlcbiAgICAvLyByb3VuZCB1cCB0byA1MTIgYnl0ZXNcbiAgICAvLyBhZGQgNTEyIGZvciBoZWFkZXJcbiAgICBjb25zdCBidWZMZW4gPSA1MTIgKiBNYXRoLmNlaWwoMSArIGJvZHlMZW4gLyA1MTIpXG4gICAgY29uc3QgYnVmID0gQnVmZmVyLmFsbG9jVW5zYWZlKGJ1ZkxlbilcblxuICAgIC8vIDAtZmlsbCB0aGUgaGVhZGVyIHNlY3Rpb24sIGl0IG1pZ2h0IG5vdCBoaXQgZXZlcnkgZmllbGRcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IDUxMjsgaSsrKSB7XG4gICAgICBidWZbaV0gPSAwXG4gICAgfVxuXG4gICAgbmV3IEhlYWRlcih7XG4gICAgICAvLyBYWFggc3BsaXQgdGhlIHBhdGhcbiAgICAgIC8vIHRoZW4gdGhlIHBhdGggc2hvdWxkIGJlIFBheEhlYWRlciArIGJhc2VuYW1lLCBidXQgbGVzcyB0aGFuIDk5LFxuICAgICAgLy8gcHJlcGVuZCB3aXRoIHRoZSBkaXJuYW1lXG4gICAgICBwYXRoOiAoJ1BheEhlYWRlci8nICsgcGF0aC5iYXNlbmFtZSh0aGlzLnBhdGgpKS5zbGljZSgwLCA5OSksXG4gICAgICBtb2RlOiB0aGlzLm1vZGUgfHwgMG82NDQsXG4gICAgICB1aWQ6IHRoaXMudWlkIHx8IG51bGwsXG4gICAgICBnaWQ6IHRoaXMuZ2lkIHx8IG51bGwsXG4gICAgICBzaXplOiBib2R5TGVuLFxuICAgICAgbXRpbWU6IHRoaXMubXRpbWUgfHwgbnVsbCxcbiAgICAgIHR5cGU6IHRoaXMuZ2xvYmFsID8gJ0dsb2JhbEV4dGVuZGVkSGVhZGVyJyA6ICdFeHRlbmRlZEhlYWRlcicsXG4gICAgICBsaW5rcGF0aDogJycsXG4gICAgICB1bmFtZTogdGhpcy51bmFtZSB8fCAnJyxcbiAgICAgIGduYW1lOiB0aGlzLmduYW1lIHx8ICcnLFxuICAgICAgZGV2bWFqOiAwLFxuICAgICAgZGV2bWluOiAwLFxuICAgICAgYXRpbWU6IHRoaXMuYXRpbWUgfHwgbnVsbCxcbiAgICAgIGN0aW1lOiB0aGlzLmN0aW1lIHx8IG51bGwsXG4gICAgfSkuZW5jb2RlKGJ1ZilcblxuICAgIGJ1Zi53cml0ZShib2R5LCA1MTIsIGJvZHlMZW4sICd1dGY4JylcblxuICAgIC8vIG51bGwgcGFkIGFmdGVyIHRoZSBib2R5XG4gICAgZm9yIChsZXQgaSA9IGJvZHlMZW4gKyA1MTI7IGkgPCBidWYubGVuZ3RoOyBpKyspIHtcbiAgICAgIGJ1ZltpXSA9IDBcbiAgICB9XG5cbiAgICByZXR1cm4gYnVmXG4gIH1cblxuICBlbmNvZGVCb2R5ICgpIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5lbmNvZGVGaWVsZCgncGF0aCcpICtcbiAgICAgIHRoaXMuZW5jb2RlRmllbGQoJ2N0aW1lJykgK1xuICAgICAgdGhpcy5lbmNvZGVGaWVsZCgnYXRpbWUnKSArXG4gICAgICB0aGlzLmVuY29kZUZpZWxkKCdkZXYnKSArXG4gICAgICB0aGlzLmVuY29kZUZpZWxkKCdpbm8nKSArXG4gICAgICB0aGlzLmVuY29kZUZpZWxkKCdubGluaycpICtcbiAgICAgIHRoaXMuZW5jb2RlRmllbGQoJ2NoYXJzZXQnKSArXG4gICAgICB0aGlzLmVuY29kZUZpZWxkKCdjb21tZW50JykgK1xuICAgICAgdGhpcy5lbmNvZGVGaWVsZCgnZ2lkJykgK1xuICAgICAgdGhpcy5lbmNvZGVGaWVsZCgnZ25hbWUnKSArXG4gICAgICB0aGlzLmVuY29kZUZpZWxkKCdsaW5rcGF0aCcpICtcbiAgICAgIHRoaXMuZW5jb2RlRmllbGQoJ210aW1lJykgK1xuICAgICAgdGhpcy5lbmNvZGVGaWVsZCgnc2l6ZScpICtcbiAgICAgIHRoaXMuZW5jb2RlRmllbGQoJ3VpZCcpICtcbiAgICAgIHRoaXMuZW5jb2RlRmllbGQoJ3VuYW1lJylcbiAgICApXG4gIH1cblxuICBlbmNvZGVGaWVsZCAoZmllbGQpIHtcbiAgICBpZiAodGhpc1tmaWVsZF0gPT09IG51bGwgfHwgdGhpc1tmaWVsZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuICcnXG4gICAgfVxuICAgIGNvbnN0IHYgPSB0aGlzW2ZpZWxkXSBpbnN0YW5jZW9mIERhdGUgPyB0aGlzW2ZpZWxkXS5nZXRUaW1lKCkgLyAxMDAwXG4gICAgICA6IHRoaXNbZmllbGRdXG4gICAgY29uc3QgcyA9ICcgJyArXG4gICAgICAoZmllbGQgPT09ICdkZXYnIHx8IGZpZWxkID09PSAnaW5vJyB8fCBmaWVsZCA9PT0gJ25saW5rJ1xuICAgICAgICA/ICdTQ0hJTFkuJyA6ICcnKSArXG4gICAgICBmaWVsZCArICc9JyArIHYgKyAnXFxuJ1xuICAgIGNvbnN0IGJ5dGVMZW4gPSBCdWZmZXIuYnl0ZUxlbmd0aChzKVxuICAgIC8vIHRoZSBkaWdpdHMgaW5jbHVkZXMgdGhlIGxlbmd0aCBvZiB0aGUgZGlnaXRzIGluIGFzY2lpIGJhc2UtMTBcbiAgICAvLyBzbyBpZiBpdCdzIDkgY2hhcmFjdGVycywgdGhlbiBhZGRpbmcgMSBmb3IgdGhlIDkgbWFrZXMgaXQgMTBcbiAgICAvLyB3aGljaCBtYWtlcyBpdCAxMSBjaGFycy5cbiAgICBsZXQgZGlnaXRzID0gTWF0aC5mbG9vcihNYXRoLmxvZyhieXRlTGVuKSAvIE1hdGgubG9nKDEwKSkgKyAxXG4gICAgaWYgKGJ5dGVMZW4gKyBkaWdpdHMgPj0gTWF0aC5wb3coMTAsIGRpZ2l0cykpIHtcbiAgICAgIGRpZ2l0cyArPSAxXG4gICAgfVxuICAgIGNvbnN0IGxlbiA9IGRpZ2l0cyArIGJ5dGVMZW5cbiAgICByZXR1cm4gbGVuICsgc1xuICB9XG59XG5cblBheC5wYXJzZSA9IChzdHJpbmcsIGV4LCBnKSA9PiBuZXcgUGF4KG1lcmdlKHBhcnNlS1Yoc3RyaW5nKSwgZXgpLCBnKVxuXG5jb25zdCBtZXJnZSA9IChhLCBiKSA9PlxuICBiID8gT2JqZWN0LmtleXMoYSkucmVkdWNlKChzLCBrKSA9PiAoc1trXSA9IGFba10sIHMpLCBiKSA6IGFcblxuY29uc3QgcGFyc2VLViA9IHN0cmluZyA9PlxuICBzdHJpbmdcbiAgICAucmVwbGFjZSgvXFxuJC8sICcnKVxuICAgIC5zcGxpdCgnXFxuJylcbiAgICAucmVkdWNlKHBhcnNlS1ZMaW5lLCBPYmplY3QuY3JlYXRlKG51bGwpKVxuXG5jb25zdCBwYXJzZUtWTGluZSA9IChzZXQsIGxpbmUpID0+IHtcbiAgY29uc3QgbiA9IHBhcnNlSW50KGxpbmUsIDEwKVxuXG4gIC8vIFhYWCBWYWx1ZXMgd2l0aCBcXG4gaW4gdGhlbSB3aWxsIGZhaWwgdGhpcy5cbiAgLy8gUmVmYWN0b3IgdG8gbm90IGJlIGEgbmFpdmUgbGluZS1ieS1saW5lIHBhcnNlLlxuICBpZiAobiAhPT0gQnVmZmVyLmJ5dGVMZW5ndGgobGluZSkgKyAxKSB7XG4gICAgcmV0dXJuIHNldFxuICB9XG5cbiAgbGluZSA9IGxpbmUuc2xpY2UoKG4gKyAnICcpLmxlbmd0aClcbiAgY29uc3Qga3YgPSBsaW5lLnNwbGl0KCc9JylcbiAgY29uc3QgayA9IGt2LnNoaWZ0KCkucmVwbGFjZSgvXlNDSElMWVxcLihkZXZ8aW5vfG5saW5rKS8sICckMScpXG4gIGlmICghaykge1xuICAgIHJldHVybiBzZXRcbiAgfVxuXG4gIGNvbnN0IHYgPSBrdi5qb2luKCc9JylcbiAgc2V0W2tdID0gL14oW0EtWl0rXFwuKT8oW21hY118YmlydGh8Y3JlYXRpb24pdGltZSQvLnRlc3QoaylcbiAgICA/IG5ldyBEYXRlKHYgKiAxMDAwKVxuICAgIDogL15bMC05XSskLy50ZXN0KHYpID8gK3ZcbiAgICA6IHZcbiAgcmV0dXJuIHNldFxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFBheFxuIiwgIi8vIHdhcm5pbmc6IGV4dHJlbWVseSBob3QgY29kZSBwYXRoLlxuLy8gVGhpcyBoYXMgYmVlbiBtZXRpY3Vsb3VzbHkgb3B0aW1pemVkIGZvciB1c2Vcbi8vIHdpdGhpbiBucG0gaW5zdGFsbCBvbiBsYXJnZSBwYWNrYWdlIHRyZWVzLlxuLy8gRG8gbm90IGVkaXQgd2l0aG91dCBjYXJlZnVsIGJlbmNobWFya2luZy5cbm1vZHVsZS5leHBvcnRzID0gc3RyID0+IHtcbiAgbGV0IGkgPSBzdHIubGVuZ3RoIC0gMVxuICBsZXQgc2xhc2hlc1N0YXJ0ID0gLTFcbiAgd2hpbGUgKGkgPiAtMSAmJiBzdHIuY2hhckF0KGkpID09PSAnLycpIHtcbiAgICBzbGFzaGVzU3RhcnQgPSBpXG4gICAgaS0tXG4gIH1cbiAgcmV0dXJuIHNsYXNoZXNTdGFydCA9PT0gLTEgPyBzdHIgOiBzdHIuc2xpY2UoMCwgc2xhc2hlc1N0YXJ0KVxufVxuIiwgIid1c2Ugc3RyaWN0J1xubW9kdWxlLmV4cG9ydHMgPSBCYXNlID0+IGNsYXNzIGV4dGVuZHMgQmFzZSB7XG4gIHdhcm4gKGNvZGUsIG1lc3NhZ2UsIGRhdGEgPSB7fSkge1xuICAgIGlmICh0aGlzLmZpbGUpIHtcbiAgICAgIGRhdGEuZmlsZSA9IHRoaXMuZmlsZVxuICAgIH1cbiAgICBpZiAodGhpcy5jd2QpIHtcbiAgICAgIGRhdGEuY3dkID0gdGhpcy5jd2RcbiAgICB9XG4gICAgZGF0YS5jb2RlID0gbWVzc2FnZSBpbnN0YW5jZW9mIEVycm9yICYmIG1lc3NhZ2UuY29kZSB8fCBjb2RlXG4gICAgZGF0YS50YXJDb2RlID0gY29kZVxuICAgIGlmICghdGhpcy5zdHJpY3QgJiYgZGF0YS5yZWNvdmVyYWJsZSAhPT0gZmFsc2UpIHtcbiAgICAgIGlmIChtZXNzYWdlIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgZGF0YSA9IE9iamVjdC5hc3NpZ24obWVzc2FnZSwgZGF0YSlcbiAgICAgICAgbWVzc2FnZSA9IG1lc3NhZ2UubWVzc2FnZVxuICAgICAgfVxuICAgICAgdGhpcy5lbWl0KCd3YXJuJywgZGF0YS50YXJDb2RlLCBtZXNzYWdlLCBkYXRhKVxuICAgIH0gZWxzZSBpZiAobWVzc2FnZSBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICB0aGlzLmVtaXQoJ2Vycm9yJywgT2JqZWN0LmFzc2lnbihtZXNzYWdlLCBkYXRhKSlcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5lbWl0KCdlcnJvcicsIE9iamVjdC5hc3NpZ24obmV3IEVycm9yKGAke2NvZGV9OiAke21lc3NhZ2V9YCksIGRhdGEpKVxuICAgIH1cbiAgfVxufVxuIiwgIid1c2Ugc3RyaWN0J1xuXG4vLyBXaGVuIHdyaXRpbmcgZmlsZXMgb24gV2luZG93cywgdHJhbnNsYXRlIHRoZSBjaGFyYWN0ZXJzIHRvIHRoZWlyXG4vLyAweGYwMDAgaGlnaGVyLWVuY29kZWQgdmVyc2lvbnMuXG5cbmNvbnN0IHJhdyA9IFtcbiAgJ3wnLFxuICAnPCcsXG4gICc+JyxcbiAgJz8nLFxuICAnOicsXG5dXG5cbmNvbnN0IHdpbiA9IHJhdy5tYXAoY2hhciA9PlxuICBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4ZjAwMCArIGNoYXIuY2hhckNvZGVBdCgwKSkpXG5cbmNvbnN0IHRvV2luID0gbmV3IE1hcChyYXcubWFwKChjaGFyLCBpKSA9PiBbY2hhciwgd2luW2ldXSkpXG5jb25zdCB0b1JhdyA9IG5ldyBNYXAod2luLm1hcCgoY2hhciwgaSkgPT4gW2NoYXIsIHJhd1tpXV0pKVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgZW5jb2RlOiBzID0+IHJhdy5yZWR1Y2UoKHMsIGMpID0+IHMuc3BsaXQoYykuam9pbih0b1dpbi5nZXQoYykpLCBzKSxcbiAgZGVjb2RlOiBzID0+IHdpbi5yZWR1Y2UoKHMsIGMpID0+IHMuc3BsaXQoYykuam9pbih0b1Jhdy5nZXQoYykpLCBzKSxcbn1cbiIsICIvLyB1bml4IGFic29sdXRlIHBhdGhzIGFyZSBhbHNvIGFic29sdXRlIG9uIHdpbjMyLCBzbyB3ZSB1c2UgdGhpcyBmb3IgYm90aFxuY29uc3QgeyBpc0Fic29sdXRlLCBwYXJzZSB9ID0gcmVxdWlyZSgncGF0aCcpLndpbjMyXG5cbi8vIHJldHVybnMgW3Jvb3QsIHN0cmlwcGVkXVxuLy8gTm90ZSB0aGF0IHdpbmRvd3Mgd2lsbCB0aGluayB0aGF0IC8veC95L3ovYSBoYXMgYSBcInJvb3RcIiBvZiAvL3gveSwgYW5kIGluXG4vLyB0aG9zZSBjYXNlcywgd2Ugd2FudCB0byBzYW5pdGl6ZSBpdCB0byB4L3kvei9hLCBub3Qgei9hLCBzbyB3ZSBzdHJpcCAvXG4vLyBleHBsaWNpdGx5IGlmIGl0J3MgdGhlIGZpcnN0IGNoYXJhY3Rlci5cbi8vIGRyaXZlLXNwZWNpZmljIHJlbGF0aXZlIHBhdGhzIG9uIFdpbmRvd3MgZ2V0IHRoZWlyIHJvb3Qgc3RyaXBwZWQgb2ZmIGV2ZW5cbi8vIHRob3VnaCB0aGV5IGFyZSBub3QgYWJzb2x1dGUsIHNvIGBjOi4uL2Zvb2AgYmVjb21lcyBbJ2M6JywgJy4uL2ZvbyddXG5tb2R1bGUuZXhwb3J0cyA9IHBhdGggPT4ge1xuICBsZXQgciA9ICcnXG5cbiAgbGV0IHBhcnNlZCA9IHBhcnNlKHBhdGgpXG4gIHdoaWxlIChpc0Fic29sdXRlKHBhdGgpIHx8IHBhcnNlZC5yb290KSB7XG4gICAgLy8gd2luZG93cyB3aWxsIHRoaW5rIHRoYXQgLy94L3kveiBoYXMgYSBcInJvb3RcIiBvZiAvL3gveS9cbiAgICAvLyBidXQgc3RyaXAgdGhlIC8vPy9DOi8gb2ZmIG9mIC8vPy9DOi9wYXRoXG4gICAgY29uc3Qgcm9vdCA9IHBhdGguY2hhckF0KDApID09PSAnLycgJiYgcGF0aC5zbGljZSgwLCA0KSAhPT0gJy8vPy8nID8gJy8nXG4gICAgICA6IHBhcnNlZC5yb290XG4gICAgcGF0aCA9IHBhdGguc2xpY2Uocm9vdC5sZW5ndGgpXG4gICAgciArPSByb290XG4gICAgcGFyc2VkID0gcGFyc2UocGF0aClcbiAgfVxuICByZXR1cm4gW3IsIHBhdGhdXG59XG4iLCAiJ3VzZSBzdHJpY3QnXG5tb2R1bGUuZXhwb3J0cyA9IChtb2RlLCBpc0RpciwgcG9ydGFibGUpID0+IHtcbiAgbW9kZSAmPSAwbzc3NzdcblxuICAvLyBpbiBwb3J0YWJsZSBtb2RlLCB1c2UgdGhlIG1pbmltdW0gcmVhc29uYWJsZSB1bWFza1xuICAvLyBpZiB0aGlzIHN5c3RlbSBjcmVhdGVzIGZpbGVzIHdpdGggMG82NjQgYnkgZGVmYXVsdFxuICAvLyAoYXMgc29tZSBsaW51eCBkaXN0cm9zIGRvKSwgdGhlbiB3ZSdsbCB3cml0ZSB0aGVcbiAgLy8gYXJjaGl2ZSB3aXRoIDBvNjQ0IGluc3RlYWQuICBBbHNvLCBkb24ndCBldmVyIGNyZWF0ZVxuICAvLyBhIGZpbGUgdGhhdCBpcyBub3QgcmVhZGFibGUvd3JpdGFibGUgYnkgdGhlIG93bmVyLlxuICBpZiAocG9ydGFibGUpIHtcbiAgICBtb2RlID0gKG1vZGUgfCAwbzYwMCkgJiB+MG8yMlxuICB9XG5cbiAgLy8gaWYgZGlycyBhcmUgcmVhZGFibGUsIHRoZW4gdGhleSBzaG91bGQgYmUgbGlzdGFibGVcbiAgaWYgKGlzRGlyKSB7XG4gICAgaWYgKG1vZGUgJiAwbzQwMCkge1xuICAgICAgbW9kZSB8PSAwbzEwMFxuICAgIH1cbiAgICBpZiAobW9kZSAmIDBvNDApIHtcbiAgICAgIG1vZGUgfD0gMG8xMFxuICAgIH1cbiAgICBpZiAobW9kZSAmIDBvNCkge1xuICAgICAgbW9kZSB8PSAwbzFcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG1vZGVcbn1cbiIsICIndXNlIHN0cmljdCdcbmNvbnN0IE1pbmlQYXNzID0gcmVxdWlyZSgnbWluaXBhc3MnKVxuY29uc3QgUGF4ID0gcmVxdWlyZSgnLi9wYXguanMnKVxuY29uc3QgSGVhZGVyID0gcmVxdWlyZSgnLi9oZWFkZXIuanMnKVxuY29uc3QgZnMgPSByZXF1aXJlKCdmcycpXG5jb25zdCBwYXRoID0gcmVxdWlyZSgncGF0aCcpXG5jb25zdCBub3JtUGF0aCA9IHJlcXVpcmUoJy4vbm9ybWFsaXplLXdpbmRvd3MtcGF0aC5qcycpXG5jb25zdCBzdHJpcFNsYXNoID0gcmVxdWlyZSgnLi9zdHJpcC10cmFpbGluZy1zbGFzaGVzLmpzJylcblxuY29uc3QgcHJlZml4UGF0aCA9IChwYXRoLCBwcmVmaXgpID0+IHtcbiAgaWYgKCFwcmVmaXgpIHtcbiAgICByZXR1cm4gbm9ybVBhdGgocGF0aClcbiAgfVxuICBwYXRoID0gbm9ybVBhdGgocGF0aCkucmVwbGFjZSgvXlxcLihcXC98JCkvLCAnJylcbiAgcmV0dXJuIHN0cmlwU2xhc2gocHJlZml4KSArICcvJyArIHBhdGhcbn1cblxuY29uc3QgbWF4UmVhZFNpemUgPSAxNiAqIDEwMjQgKiAxMDI0XG5jb25zdCBQUk9DRVNTID0gU3ltYm9sKCdwcm9jZXNzJylcbmNvbnN0IEZJTEUgPSBTeW1ib2woJ2ZpbGUnKVxuY29uc3QgRElSRUNUT1JZID0gU3ltYm9sKCdkaXJlY3RvcnknKVxuY29uc3QgU1lNTElOSyA9IFN5bWJvbCgnc3ltbGluaycpXG5jb25zdCBIQVJETElOSyA9IFN5bWJvbCgnaGFyZGxpbmsnKVxuY29uc3QgSEVBREVSID0gU3ltYm9sKCdoZWFkZXInKVxuY29uc3QgUkVBRCA9IFN5bWJvbCgncmVhZCcpXG5jb25zdCBMU1RBVCA9IFN5bWJvbCgnbHN0YXQnKVxuY29uc3QgT05MU1RBVCA9IFN5bWJvbCgnb25sc3RhdCcpXG5jb25zdCBPTlJFQUQgPSBTeW1ib2woJ29ucmVhZCcpXG5jb25zdCBPTlJFQURMSU5LID0gU3ltYm9sKCdvbnJlYWRsaW5rJylcbmNvbnN0IE9QRU5GSUxFID0gU3ltYm9sKCdvcGVuZmlsZScpXG5jb25zdCBPTk9QRU5GSUxFID0gU3ltYm9sKCdvbm9wZW5maWxlJylcbmNvbnN0IENMT1NFID0gU3ltYm9sKCdjbG9zZScpXG5jb25zdCBNT0RFID0gU3ltYm9sKCdtb2RlJylcbmNvbnN0IEFXQUlURFJBSU4gPSBTeW1ib2woJ2F3YWl0RHJhaW4nKVxuY29uc3QgT05EUkFJTiA9IFN5bWJvbCgnb25kcmFpbicpXG5jb25zdCBQUkVGSVggPSBTeW1ib2woJ3ByZWZpeCcpXG5jb25zdCBIQURfRVJST1IgPSBTeW1ib2woJ2hhZEVycm9yJylcbmNvbnN0IHdhcm5lciA9IHJlcXVpcmUoJy4vd2Fybi1taXhpbi5qcycpXG5jb25zdCB3aW5jaGFycyA9IHJlcXVpcmUoJy4vd2luY2hhcnMuanMnKVxuY29uc3Qgc3RyaXBBYnNvbHV0ZVBhdGggPSByZXF1aXJlKCcuL3N0cmlwLWFic29sdXRlLXBhdGguanMnKVxuXG5jb25zdCBtb2RlRml4ID0gcmVxdWlyZSgnLi9tb2RlLWZpeC5qcycpXG5cbmNvbnN0IFdyaXRlRW50cnkgPSB3YXJuZXIoY2xhc3MgV3JpdGVFbnRyeSBleHRlbmRzIE1pbmlQYXNzIHtcbiAgY29uc3RydWN0b3IgKHAsIG9wdCkge1xuICAgIG9wdCA9IG9wdCB8fCB7fVxuICAgIHN1cGVyKG9wdClcbiAgICBpZiAodHlwZW9mIHAgIT09ICdzdHJpbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdwYXRoIGlzIHJlcXVpcmVkJylcbiAgICB9XG4gICAgdGhpcy5wYXRoID0gbm9ybVBhdGgocClcbiAgICAvLyBzdXBwcmVzcyBhdGltZSwgY3RpbWUsIHVpZCwgZ2lkLCB1bmFtZSwgZ25hbWVcbiAgICB0aGlzLnBvcnRhYmxlID0gISFvcHQucG9ydGFibGVcbiAgICAvLyB1bnRpbCBub2RlIGhhcyBidWlsdGluIHB3bmFtIGZ1bmN0aW9ucywgdGhpcydsbCBoYXZlIHRvIGRvXG4gICAgdGhpcy5teXVpZCA9IHByb2Nlc3MuZ2V0dWlkICYmIHByb2Nlc3MuZ2V0dWlkKCkgfHwgMFxuICAgIHRoaXMubXl1c2VyID0gcHJvY2Vzcy5lbnYuVVNFUiB8fCAnJ1xuICAgIHRoaXMubWF4UmVhZFNpemUgPSBvcHQubWF4UmVhZFNpemUgfHwgbWF4UmVhZFNpemVcbiAgICB0aGlzLmxpbmtDYWNoZSA9IG9wdC5saW5rQ2FjaGUgfHwgbmV3IE1hcCgpXG4gICAgdGhpcy5zdGF0Q2FjaGUgPSBvcHQuc3RhdENhY2hlIHx8IG5ldyBNYXAoKVxuICAgIHRoaXMucHJlc2VydmVQYXRocyA9ICEhb3B0LnByZXNlcnZlUGF0aHNcbiAgICB0aGlzLmN3ZCA9IG5vcm1QYXRoKG9wdC5jd2QgfHwgcHJvY2Vzcy5jd2QoKSlcbiAgICB0aGlzLnN0cmljdCA9ICEhb3B0LnN0cmljdFxuICAgIHRoaXMubm9QYXggPSAhIW9wdC5ub1BheFxuICAgIHRoaXMubm9NdGltZSA9ICEhb3B0Lm5vTXRpbWVcbiAgICB0aGlzLm10aW1lID0gb3B0Lm10aW1lIHx8IG51bGxcbiAgICB0aGlzLnByZWZpeCA9IG9wdC5wcmVmaXggPyBub3JtUGF0aChvcHQucHJlZml4KSA6IG51bGxcblxuICAgIHRoaXMuZmQgPSBudWxsXG4gICAgdGhpcy5ibG9ja0xlbiA9IG51bGxcbiAgICB0aGlzLmJsb2NrUmVtYWluID0gbnVsbFxuICAgIHRoaXMuYnVmID0gbnVsbFxuICAgIHRoaXMub2Zmc2V0ID0gbnVsbFxuICAgIHRoaXMubGVuZ3RoID0gbnVsbFxuICAgIHRoaXMucG9zID0gbnVsbFxuICAgIHRoaXMucmVtYWluID0gbnVsbFxuXG4gICAgaWYgKHR5cGVvZiBvcHQub253YXJuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aGlzLm9uKCd3YXJuJywgb3B0Lm9ud2FybilcbiAgICB9XG5cbiAgICBsZXQgcGF0aFdhcm4gPSBmYWxzZVxuICAgIGlmICghdGhpcy5wcmVzZXJ2ZVBhdGhzKSB7XG4gICAgICBjb25zdCBbcm9vdCwgc3RyaXBwZWRdID0gc3RyaXBBYnNvbHV0ZVBhdGgodGhpcy5wYXRoKVxuICAgICAgaWYgKHJvb3QpIHtcbiAgICAgICAgdGhpcy5wYXRoID0gc3RyaXBwZWRcbiAgICAgICAgcGF0aFdhcm4gPSByb290XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy53aW4zMiA9ICEhb3B0LndpbjMyIHx8IHByb2Nlc3MucGxhdGZvcm0gPT09ICd3aW4zMidcbiAgICBpZiAodGhpcy53aW4zMikge1xuICAgICAgLy8gZm9yY2UgdGhlIFxcIHRvIC8gbm9ybWFsaXphdGlvbiwgc2luY2Ugd2UgbWlnaHQgbm90ICphY3R1YWxseSpcbiAgICAgIC8vIGJlIG9uIHdpbmRvd3MsIGJ1dCB3YW50IFxcIHRvIGJlIGNvbnNpZGVyZWQgYSBwYXRoIHNlcGFyYXRvci5cbiAgICAgIHRoaXMucGF0aCA9IHdpbmNoYXJzLmRlY29kZSh0aGlzLnBhdGgucmVwbGFjZSgvXFxcXC9nLCAnLycpKVxuICAgICAgcCA9IHAucmVwbGFjZSgvXFxcXC9nLCAnLycpXG4gICAgfVxuXG4gICAgdGhpcy5hYnNvbHV0ZSA9IG5vcm1QYXRoKG9wdC5hYnNvbHV0ZSB8fCBwYXRoLnJlc29sdmUodGhpcy5jd2QsIHApKVxuXG4gICAgaWYgKHRoaXMucGF0aCA9PT0gJycpIHtcbiAgICAgIHRoaXMucGF0aCA9ICcuLydcbiAgICB9XG5cbiAgICBpZiAocGF0aFdhcm4pIHtcbiAgICAgIHRoaXMud2FybignVEFSX0VOVFJZX0lORk8nLCBgc3RyaXBwaW5nICR7cGF0aFdhcm59IGZyb20gYWJzb2x1dGUgcGF0aGAsIHtcbiAgICAgICAgZW50cnk6IHRoaXMsXG4gICAgICAgIHBhdGg6IHBhdGhXYXJuICsgdGhpcy5wYXRoLFxuICAgICAgfSlcbiAgICB9XG5cbiAgICBpZiAodGhpcy5zdGF0Q2FjaGUuaGFzKHRoaXMuYWJzb2x1dGUpKSB7XG4gICAgICB0aGlzW09OTFNUQVRdKHRoaXMuc3RhdENhY2hlLmdldCh0aGlzLmFic29sdXRlKSlcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpc1tMU1RBVF0oKVxuICAgIH1cbiAgfVxuXG4gIGVtaXQgKGV2LCAuLi5kYXRhKSB7XG4gICAgaWYgKGV2ID09PSAnZXJyb3InKSB7XG4gICAgICB0aGlzW0hBRF9FUlJPUl0gPSB0cnVlXG4gICAgfVxuICAgIHJldHVybiBzdXBlci5lbWl0KGV2LCAuLi5kYXRhKVxuICB9XG5cbiAgW0xTVEFUXSAoKSB7XG4gICAgZnMubHN0YXQodGhpcy5hYnNvbHV0ZSwgKGVyLCBzdGF0KSA9PiB7XG4gICAgICBpZiAoZXIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZW1pdCgnZXJyb3InLCBlcilcbiAgICAgIH1cbiAgICAgIHRoaXNbT05MU1RBVF0oc3RhdClcbiAgICB9KVxuICB9XG5cbiAgW09OTFNUQVRdIChzdGF0KSB7XG4gICAgdGhpcy5zdGF0Q2FjaGUuc2V0KHRoaXMuYWJzb2x1dGUsIHN0YXQpXG4gICAgdGhpcy5zdGF0ID0gc3RhdFxuICAgIGlmICghc3RhdC5pc0ZpbGUoKSkge1xuICAgICAgc3RhdC5zaXplID0gMFxuICAgIH1cbiAgICB0aGlzLnR5cGUgPSBnZXRUeXBlKHN0YXQpXG4gICAgdGhpcy5lbWl0KCdzdGF0Jywgc3RhdClcbiAgICB0aGlzW1BST0NFU1NdKClcbiAgfVxuXG4gIFtQUk9DRVNTXSAoKSB7XG4gICAgc3dpdGNoICh0aGlzLnR5cGUpIHtcbiAgICAgIGNhc2UgJ0ZpbGUnOiByZXR1cm4gdGhpc1tGSUxFXSgpXG4gICAgICBjYXNlICdEaXJlY3RvcnknOiByZXR1cm4gdGhpc1tESVJFQ1RPUlldKClcbiAgICAgIGNhc2UgJ1N5bWJvbGljTGluayc6IHJldHVybiB0aGlzW1NZTUxJTktdKClcbiAgICAgIC8vIHVuc3VwcG9ydGVkIHR5cGVzIGFyZSBpZ25vcmVkLlxuICAgICAgZGVmYXVsdDogcmV0dXJuIHRoaXMuZW5kKClcbiAgICB9XG4gIH1cblxuICBbTU9ERV0gKG1vZGUpIHtcbiAgICByZXR1cm4gbW9kZUZpeChtb2RlLCB0aGlzLnR5cGUgPT09ICdEaXJlY3RvcnknLCB0aGlzLnBvcnRhYmxlKVxuICB9XG5cbiAgW1BSRUZJWF0gKHBhdGgpIHtcbiAgICByZXR1cm4gcHJlZml4UGF0aChwYXRoLCB0aGlzLnByZWZpeClcbiAgfVxuXG4gIFtIRUFERVJdICgpIHtcbiAgICBpZiAodGhpcy50eXBlID09PSAnRGlyZWN0b3J5JyAmJiB0aGlzLnBvcnRhYmxlKSB7XG4gICAgICB0aGlzLm5vTXRpbWUgPSB0cnVlXG4gICAgfVxuXG4gICAgdGhpcy5oZWFkZXIgPSBuZXcgSGVhZGVyKHtcbiAgICAgIHBhdGg6IHRoaXNbUFJFRklYXSh0aGlzLnBhdGgpLFxuICAgICAgLy8gb25seSBhcHBseSB0aGUgcHJlZml4IHRvIGhhcmQgbGlua3MuXG4gICAgICBsaW5rcGF0aDogdGhpcy50eXBlID09PSAnTGluaycgPyB0aGlzW1BSRUZJWF0odGhpcy5saW5rcGF0aClcbiAgICAgIDogdGhpcy5saW5rcGF0aCxcbiAgICAgIC8vIG9ubHkgdGhlIHBlcm1pc3Npb25zIGFuZCBzZXR1aWQvc2V0Z2lkL3N0aWNreSBiaXRmbGFnc1xuICAgICAgLy8gbm90IHRoZSBoaWdoZXItb3JkZXIgYml0cyB0aGF0IHNwZWNpZnkgZmlsZSB0eXBlXG4gICAgICBtb2RlOiB0aGlzW01PREVdKHRoaXMuc3RhdC5tb2RlKSxcbiAgICAgIHVpZDogdGhpcy5wb3J0YWJsZSA/IG51bGwgOiB0aGlzLnN0YXQudWlkLFxuICAgICAgZ2lkOiB0aGlzLnBvcnRhYmxlID8gbnVsbCA6IHRoaXMuc3RhdC5naWQsXG4gICAgICBzaXplOiB0aGlzLnN0YXQuc2l6ZSxcbiAgICAgIG10aW1lOiB0aGlzLm5vTXRpbWUgPyBudWxsIDogdGhpcy5tdGltZSB8fCB0aGlzLnN0YXQubXRpbWUsXG4gICAgICB0eXBlOiB0aGlzLnR5cGUsXG4gICAgICB1bmFtZTogdGhpcy5wb3J0YWJsZSA/IG51bGwgOlxuICAgICAgdGhpcy5zdGF0LnVpZCA9PT0gdGhpcy5teXVpZCA/IHRoaXMubXl1c2VyIDogJycsXG4gICAgICBhdGltZTogdGhpcy5wb3J0YWJsZSA/IG51bGwgOiB0aGlzLnN0YXQuYXRpbWUsXG4gICAgICBjdGltZTogdGhpcy5wb3J0YWJsZSA/IG51bGwgOiB0aGlzLnN0YXQuY3RpbWUsXG4gICAgfSlcblxuICAgIGlmICh0aGlzLmhlYWRlci5lbmNvZGUoKSAmJiAhdGhpcy5ub1BheCkge1xuICAgICAgc3VwZXIud3JpdGUobmV3IFBheCh7XG4gICAgICAgIGF0aW1lOiB0aGlzLnBvcnRhYmxlID8gbnVsbCA6IHRoaXMuaGVhZGVyLmF0aW1lLFxuICAgICAgICBjdGltZTogdGhpcy5wb3J0YWJsZSA/IG51bGwgOiB0aGlzLmhlYWRlci5jdGltZSxcbiAgICAgICAgZ2lkOiB0aGlzLnBvcnRhYmxlID8gbnVsbCA6IHRoaXMuaGVhZGVyLmdpZCxcbiAgICAgICAgbXRpbWU6IHRoaXMubm9NdGltZSA/IG51bGwgOiB0aGlzLm10aW1lIHx8IHRoaXMuaGVhZGVyLm10aW1lLFxuICAgICAgICBwYXRoOiB0aGlzW1BSRUZJWF0odGhpcy5wYXRoKSxcbiAgICAgICAgbGlua3BhdGg6IHRoaXMudHlwZSA9PT0gJ0xpbmsnID8gdGhpc1tQUkVGSVhdKHRoaXMubGlua3BhdGgpXG4gICAgICAgIDogdGhpcy5saW5rcGF0aCxcbiAgICAgICAgc2l6ZTogdGhpcy5oZWFkZXIuc2l6ZSxcbiAgICAgICAgdWlkOiB0aGlzLnBvcnRhYmxlID8gbnVsbCA6IHRoaXMuaGVhZGVyLnVpZCxcbiAgICAgICAgdW5hbWU6IHRoaXMucG9ydGFibGUgPyBudWxsIDogdGhpcy5oZWFkZXIudW5hbWUsXG4gICAgICAgIGRldjogdGhpcy5wb3J0YWJsZSA/IG51bGwgOiB0aGlzLnN0YXQuZGV2LFxuICAgICAgICBpbm86IHRoaXMucG9ydGFibGUgPyBudWxsIDogdGhpcy5zdGF0LmlubyxcbiAgICAgICAgbmxpbms6IHRoaXMucG9ydGFibGUgPyBudWxsIDogdGhpcy5zdGF0Lm5saW5rLFxuICAgICAgfSkuZW5jb2RlKCkpXG4gICAgfVxuICAgIHN1cGVyLndyaXRlKHRoaXMuaGVhZGVyLmJsb2NrKVxuICB9XG5cbiAgW0RJUkVDVE9SWV0gKCkge1xuICAgIGlmICh0aGlzLnBhdGguc2xpY2UoLTEpICE9PSAnLycpIHtcbiAgICAgIHRoaXMucGF0aCArPSAnLydcbiAgICB9XG4gICAgdGhpcy5zdGF0LnNpemUgPSAwXG4gICAgdGhpc1tIRUFERVJdKClcbiAgICB0aGlzLmVuZCgpXG4gIH1cblxuICBbU1lNTElOS10gKCkge1xuICAgIGZzLnJlYWRsaW5rKHRoaXMuYWJzb2x1dGUsIChlciwgbGlua3BhdGgpID0+IHtcbiAgICAgIGlmIChlcikge1xuICAgICAgICByZXR1cm4gdGhpcy5lbWl0KCdlcnJvcicsIGVyKVxuICAgICAgfVxuICAgICAgdGhpc1tPTlJFQURMSU5LXShsaW5rcGF0aClcbiAgICB9KVxuICB9XG5cbiAgW09OUkVBRExJTktdIChsaW5rcGF0aCkge1xuICAgIHRoaXMubGlua3BhdGggPSBub3JtUGF0aChsaW5rcGF0aClcbiAgICB0aGlzW0hFQURFUl0oKVxuICAgIHRoaXMuZW5kKClcbiAgfVxuXG4gIFtIQVJETElOS10gKGxpbmtwYXRoKSB7XG4gICAgdGhpcy50eXBlID0gJ0xpbmsnXG4gICAgdGhpcy5saW5rcGF0aCA9IG5vcm1QYXRoKHBhdGgucmVsYXRpdmUodGhpcy5jd2QsIGxpbmtwYXRoKSlcbiAgICB0aGlzLnN0YXQuc2l6ZSA9IDBcbiAgICB0aGlzW0hFQURFUl0oKVxuICAgIHRoaXMuZW5kKClcbiAgfVxuXG4gIFtGSUxFXSAoKSB7XG4gICAgaWYgKHRoaXMuc3RhdC5ubGluayA+IDEpIHtcbiAgICAgIGNvbnN0IGxpbmtLZXkgPSB0aGlzLnN0YXQuZGV2ICsgJzonICsgdGhpcy5zdGF0Lmlub1xuICAgICAgaWYgKHRoaXMubGlua0NhY2hlLmhhcyhsaW5rS2V5KSkge1xuICAgICAgICBjb25zdCBsaW5rcGF0aCA9IHRoaXMubGlua0NhY2hlLmdldChsaW5rS2V5KVxuICAgICAgICBpZiAobGlua3BhdGguaW5kZXhPZih0aGlzLmN3ZCkgPT09IDApIHtcbiAgICAgICAgICByZXR1cm4gdGhpc1tIQVJETElOS10obGlua3BhdGgpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRoaXMubGlua0NhY2hlLnNldChsaW5rS2V5LCB0aGlzLmFic29sdXRlKVxuICAgIH1cblxuICAgIHRoaXNbSEVBREVSXSgpXG4gICAgaWYgKHRoaXMuc3RhdC5zaXplID09PSAwKSB7XG4gICAgICByZXR1cm4gdGhpcy5lbmQoKVxuICAgIH1cblxuICAgIHRoaXNbT1BFTkZJTEVdKClcbiAgfVxuXG4gIFtPUEVORklMRV0gKCkge1xuICAgIGZzLm9wZW4odGhpcy5hYnNvbHV0ZSwgJ3InLCAoZXIsIGZkKSA9PiB7XG4gICAgICBpZiAoZXIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZW1pdCgnZXJyb3InLCBlcilcbiAgICAgIH1cbiAgICAgIHRoaXNbT05PUEVORklMRV0oZmQpXG4gICAgfSlcbiAgfVxuXG4gIFtPTk9QRU5GSUxFXSAoZmQpIHtcbiAgICB0aGlzLmZkID0gZmRcbiAgICBpZiAodGhpc1tIQURfRVJST1JdKSB7XG4gICAgICByZXR1cm4gdGhpc1tDTE9TRV0oKVxuICAgIH1cblxuICAgIHRoaXMuYmxvY2tMZW4gPSA1MTIgKiBNYXRoLmNlaWwodGhpcy5zdGF0LnNpemUgLyA1MTIpXG4gICAgdGhpcy5ibG9ja1JlbWFpbiA9IHRoaXMuYmxvY2tMZW5cbiAgICBjb25zdCBidWZMZW4gPSBNYXRoLm1pbih0aGlzLmJsb2NrTGVuLCB0aGlzLm1heFJlYWRTaXplKVxuICAgIHRoaXMuYnVmID0gQnVmZmVyLmFsbG9jVW5zYWZlKGJ1ZkxlbilcbiAgICB0aGlzLm9mZnNldCA9IDBcbiAgICB0aGlzLnBvcyA9IDBcbiAgICB0aGlzLnJlbWFpbiA9IHRoaXMuc3RhdC5zaXplXG4gICAgdGhpcy5sZW5ndGggPSB0aGlzLmJ1Zi5sZW5ndGhcbiAgICB0aGlzW1JFQURdKClcbiAgfVxuXG4gIFtSRUFEXSAoKSB7XG4gICAgY29uc3QgeyBmZCwgYnVmLCBvZmZzZXQsIGxlbmd0aCwgcG9zIH0gPSB0aGlzXG4gICAgZnMucmVhZChmZCwgYnVmLCBvZmZzZXQsIGxlbmd0aCwgcG9zLCAoZXIsIGJ5dGVzUmVhZCkgPT4ge1xuICAgICAgaWYgKGVyKSB7XG4gICAgICAgIC8vIGlnbm9yaW5nIHRoZSBlcnJvciBmcm9tIGNsb3NlKDIpIGlzIGEgYmFkIHByYWN0aWNlLCBidXQgYXRcbiAgICAgICAgLy8gdGhpcyBwb2ludCB3ZSBhbHJlYWR5IGhhdmUgYW4gZXJyb3IsIGRvbid0IG5lZWQgYW5vdGhlciBvbmVcbiAgICAgICAgcmV0dXJuIHRoaXNbQ0xPU0VdKCgpID0+IHRoaXMuZW1pdCgnZXJyb3InLCBlcikpXG4gICAgICB9XG4gICAgICB0aGlzW09OUkVBRF0oYnl0ZXNSZWFkKVxuICAgIH0pXG4gIH1cblxuICBbQ0xPU0VdIChjYikge1xuICAgIGZzLmNsb3NlKHRoaXMuZmQsIGNiKVxuICB9XG5cbiAgW09OUkVBRF0gKGJ5dGVzUmVhZCkge1xuICAgIGlmIChieXRlc1JlYWQgPD0gMCAmJiB0aGlzLnJlbWFpbiA+IDApIHtcbiAgICAgIGNvbnN0IGVyID0gbmV3IEVycm9yKCdlbmNvdW50ZXJlZCB1bmV4cGVjdGVkIEVPRicpXG4gICAgICBlci5wYXRoID0gdGhpcy5hYnNvbHV0ZVxuICAgICAgZXIuc3lzY2FsbCA9ICdyZWFkJ1xuICAgICAgZXIuY29kZSA9ICdFT0YnXG4gICAgICByZXR1cm4gdGhpc1tDTE9TRV0oKCkgPT4gdGhpcy5lbWl0KCdlcnJvcicsIGVyKSlcbiAgICB9XG5cbiAgICBpZiAoYnl0ZXNSZWFkID4gdGhpcy5yZW1haW4pIHtcbiAgICAgIGNvbnN0IGVyID0gbmV3IEVycm9yKCdkaWQgbm90IGVuY291bnRlciBleHBlY3RlZCBFT0YnKVxuICAgICAgZXIucGF0aCA9IHRoaXMuYWJzb2x1dGVcbiAgICAgIGVyLnN5c2NhbGwgPSAncmVhZCdcbiAgICAgIGVyLmNvZGUgPSAnRU9GJ1xuICAgICAgcmV0dXJuIHRoaXNbQ0xPU0VdKCgpID0+IHRoaXMuZW1pdCgnZXJyb3InLCBlcikpXG4gICAgfVxuXG4gICAgLy8gbnVsbCBvdXQgdGhlIHJlc3Qgb2YgdGhlIGJ1ZmZlciwgaWYgd2UgY291bGQgZml0IHRoZSBibG9jayBwYWRkaW5nXG4gICAgLy8gYXQgdGhlIGVuZCBvZiB0aGlzIGxvb3AsIHdlJ3ZlIGluY3JlbWVudGVkIGJ5dGVzUmVhZCBhbmQgdGhpcy5yZW1haW5cbiAgICAvLyB0byBiZSBpbmNyZW1lbnRlZCB1cCB0byB0aGUgYmxvY2tSZW1haW4gbGV2ZWwsIGFzIGlmIHdlIGhhZCBleHBlY3RlZFxuICAgIC8vIHRvIGdldCBhIG51bGwtcGFkZGVkIGZpbGUsIGFuZCByZWFkIGl0IHVudGlsIHRoZSBlbmQuICB0aGVuIHdlIHdpbGxcbiAgICAvLyBkZWNyZW1lbnQgYm90aCByZW1haW4gYW5kIGJsb2NrUmVtYWluIGJ5IGJ5dGVzUmVhZCwgYW5kIGtub3cgdGhhdCB3ZVxuICAgIC8vIHJlYWNoZWQgdGhlIGV4cGVjdGVkIEVPRiwgd2l0aG91dCBhbnkgbnVsbCBidWZmZXIgdG8gYXBwZW5kLlxuICAgIGlmIChieXRlc1JlYWQgPT09IHRoaXMucmVtYWluKSB7XG4gICAgICBmb3IgKGxldCBpID0gYnl0ZXNSZWFkOyBpIDwgdGhpcy5sZW5ndGggJiYgYnl0ZXNSZWFkIDwgdGhpcy5ibG9ja1JlbWFpbjsgaSsrKSB7XG4gICAgICAgIHRoaXMuYnVmW2kgKyB0aGlzLm9mZnNldF0gPSAwXG4gICAgICAgIGJ5dGVzUmVhZCsrXG4gICAgICAgIHRoaXMucmVtYWluKytcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCB3cml0ZUJ1ZiA9IHRoaXMub2Zmc2V0ID09PSAwICYmIGJ5dGVzUmVhZCA9PT0gdGhpcy5idWYubGVuZ3RoID9cbiAgICAgIHRoaXMuYnVmIDogdGhpcy5idWYuc2xpY2UodGhpcy5vZmZzZXQsIHRoaXMub2Zmc2V0ICsgYnl0ZXNSZWFkKVxuXG4gICAgY29uc3QgZmx1c2hlZCA9IHRoaXMud3JpdGUod3JpdGVCdWYpXG4gICAgaWYgKCFmbHVzaGVkKSB7XG4gICAgICB0aGlzW0FXQUlURFJBSU5dKCgpID0+IHRoaXNbT05EUkFJTl0oKSlcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpc1tPTkRSQUlOXSgpXG4gICAgfVxuICB9XG5cbiAgW0FXQUlURFJBSU5dIChjYikge1xuICAgIHRoaXMub25jZSgnZHJhaW4nLCBjYilcbiAgfVxuXG4gIHdyaXRlICh3cml0ZUJ1Zikge1xuICAgIGlmICh0aGlzLmJsb2NrUmVtYWluIDwgd3JpdGVCdWYubGVuZ3RoKSB7XG4gICAgICBjb25zdCBlciA9IG5ldyBFcnJvcignd3JpdGluZyBtb3JlIGRhdGEgdGhhbiBleHBlY3RlZCcpXG4gICAgICBlci5wYXRoID0gdGhpcy5hYnNvbHV0ZVxuICAgICAgcmV0dXJuIHRoaXMuZW1pdCgnZXJyb3InLCBlcilcbiAgICB9XG4gICAgdGhpcy5yZW1haW4gLT0gd3JpdGVCdWYubGVuZ3RoXG4gICAgdGhpcy5ibG9ja1JlbWFpbiAtPSB3cml0ZUJ1Zi5sZW5ndGhcbiAgICB0aGlzLnBvcyArPSB3cml0ZUJ1Zi5sZW5ndGhcbiAgICB0aGlzLm9mZnNldCArPSB3cml0ZUJ1Zi5sZW5ndGhcbiAgICByZXR1cm4gc3VwZXIud3JpdGUod3JpdGVCdWYpXG4gIH1cblxuICBbT05EUkFJTl0gKCkge1xuICAgIGlmICghdGhpcy5yZW1haW4pIHtcbiAgICAgIGlmICh0aGlzLmJsb2NrUmVtYWluKSB7XG4gICAgICAgIHN1cGVyLndyaXRlKEJ1ZmZlci5hbGxvYyh0aGlzLmJsb2NrUmVtYWluKSlcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzW0NMT1NFXShlciA9PiBlciA/IHRoaXMuZW1pdCgnZXJyb3InLCBlcikgOiB0aGlzLmVuZCgpKVxuICAgIH1cblxuICAgIGlmICh0aGlzLm9mZnNldCA+PSB0aGlzLmxlbmd0aCkge1xuICAgICAgLy8gaWYgd2Ugb25seSBoYXZlIGEgc21hbGxlciBiaXQgbGVmdCB0byByZWFkLCBhbGxvYyBhIHNtYWxsZXIgYnVmZmVyXG4gICAgICAvLyBvdGhlcndpc2UsIGtlZXAgaXQgdGhlIHNhbWUgbGVuZ3RoIGl0IHdhcyBiZWZvcmUuXG4gICAgICB0aGlzLmJ1ZiA9IEJ1ZmZlci5hbGxvY1Vuc2FmZShNYXRoLm1pbih0aGlzLmJsb2NrUmVtYWluLCB0aGlzLmJ1Zi5sZW5ndGgpKVxuICAgICAgdGhpcy5vZmZzZXQgPSAwXG4gICAgfVxuICAgIHRoaXMubGVuZ3RoID0gdGhpcy5idWYubGVuZ3RoIC0gdGhpcy5vZmZzZXRcbiAgICB0aGlzW1JFQURdKClcbiAgfVxufSlcblxuY2xhc3MgV3JpdGVFbnRyeVN5bmMgZXh0ZW5kcyBXcml0ZUVudHJ5IHtcbiAgW0xTVEFUXSAoKSB7XG4gICAgdGhpc1tPTkxTVEFUXShmcy5sc3RhdFN5bmModGhpcy5hYnNvbHV0ZSkpXG4gIH1cblxuICBbU1lNTElOS10gKCkge1xuICAgIHRoaXNbT05SRUFETElOS10oZnMucmVhZGxpbmtTeW5jKHRoaXMuYWJzb2x1dGUpKVxuICB9XG5cbiAgW09QRU5GSUxFXSAoKSB7XG4gICAgdGhpc1tPTk9QRU5GSUxFXShmcy5vcGVuU3luYyh0aGlzLmFic29sdXRlLCAncicpKVxuICB9XG5cbiAgW1JFQURdICgpIHtcbiAgICBsZXQgdGhyZXcgPSB0cnVlXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHsgZmQsIGJ1Ziwgb2Zmc2V0LCBsZW5ndGgsIHBvcyB9ID0gdGhpc1xuICAgICAgY29uc3QgYnl0ZXNSZWFkID0gZnMucmVhZFN5bmMoZmQsIGJ1Ziwgb2Zmc2V0LCBsZW5ndGgsIHBvcylcbiAgICAgIHRoaXNbT05SRUFEXShieXRlc1JlYWQpXG4gICAgICB0aHJldyA9IGZhbHNlXG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIC8vIGlnbm9yaW5nIHRoZSBlcnJvciBmcm9tIGNsb3NlKDIpIGlzIGEgYmFkIHByYWN0aWNlLCBidXQgYXRcbiAgICAgIC8vIHRoaXMgcG9pbnQgd2UgYWxyZWFkeSBoYXZlIGFuIGVycm9yLCBkb24ndCBuZWVkIGFub3RoZXIgb25lXG4gICAgICBpZiAodGhyZXcpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICB0aGlzW0NMT1NFXSgoKSA9PiB7fSlcbiAgICAgICAgfSBjYXRjaCAoZXIpIHt9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgW0FXQUlURFJBSU5dIChjYikge1xuICAgIGNiKClcbiAgfVxuXG4gIFtDTE9TRV0gKGNiKSB7XG4gICAgZnMuY2xvc2VTeW5jKHRoaXMuZmQpXG4gICAgY2IoKVxuICB9XG59XG5cbmNvbnN0IFdyaXRlRW50cnlUYXIgPSB3YXJuZXIoY2xhc3MgV3JpdGVFbnRyeVRhciBleHRlbmRzIE1pbmlQYXNzIHtcbiAgY29uc3RydWN0b3IgKHJlYWRFbnRyeSwgb3B0KSB7XG4gICAgb3B0ID0gb3B0IHx8IHt9XG4gICAgc3VwZXIob3B0KVxuICAgIHRoaXMucHJlc2VydmVQYXRocyA9ICEhb3B0LnByZXNlcnZlUGF0aHNcbiAgICB0aGlzLnBvcnRhYmxlID0gISFvcHQucG9ydGFibGVcbiAgICB0aGlzLnN0cmljdCA9ICEhb3B0LnN0cmljdFxuICAgIHRoaXMubm9QYXggPSAhIW9wdC5ub1BheFxuICAgIHRoaXMubm9NdGltZSA9ICEhb3B0Lm5vTXRpbWVcblxuICAgIHRoaXMucmVhZEVudHJ5ID0gcmVhZEVudHJ5XG4gICAgdGhpcy50eXBlID0gcmVhZEVudHJ5LnR5cGVcbiAgICBpZiAodGhpcy50eXBlID09PSAnRGlyZWN0b3J5JyAmJiB0aGlzLnBvcnRhYmxlKSB7XG4gICAgICB0aGlzLm5vTXRpbWUgPSB0cnVlXG4gICAgfVxuXG4gICAgdGhpcy5wcmVmaXggPSBvcHQucHJlZml4IHx8IG51bGxcblxuICAgIHRoaXMucGF0aCA9IG5vcm1QYXRoKHJlYWRFbnRyeS5wYXRoKVxuICAgIHRoaXMubW9kZSA9IHRoaXNbTU9ERV0ocmVhZEVudHJ5Lm1vZGUpXG4gICAgdGhpcy51aWQgPSB0aGlzLnBvcnRhYmxlID8gbnVsbCA6IHJlYWRFbnRyeS51aWRcbiAgICB0aGlzLmdpZCA9IHRoaXMucG9ydGFibGUgPyBudWxsIDogcmVhZEVudHJ5LmdpZFxuICAgIHRoaXMudW5hbWUgPSB0aGlzLnBvcnRhYmxlID8gbnVsbCA6IHJlYWRFbnRyeS51bmFtZVxuICAgIHRoaXMuZ25hbWUgPSB0aGlzLnBvcnRhYmxlID8gbnVsbCA6IHJlYWRFbnRyeS5nbmFtZVxuICAgIHRoaXMuc2l6ZSA9IHJlYWRFbnRyeS5zaXplXG4gICAgdGhpcy5tdGltZSA9IHRoaXMubm9NdGltZSA/IG51bGwgOiBvcHQubXRpbWUgfHwgcmVhZEVudHJ5Lm10aW1lXG4gICAgdGhpcy5hdGltZSA9IHRoaXMucG9ydGFibGUgPyBudWxsIDogcmVhZEVudHJ5LmF0aW1lXG4gICAgdGhpcy5jdGltZSA9IHRoaXMucG9ydGFibGUgPyBudWxsIDogcmVhZEVudHJ5LmN0aW1lXG4gICAgdGhpcy5saW5rcGF0aCA9IG5vcm1QYXRoKHJlYWRFbnRyeS5saW5rcGF0aClcblxuICAgIGlmICh0eXBlb2Ygb3B0Lm9ud2FybiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhpcy5vbignd2FybicsIG9wdC5vbndhcm4pXG4gICAgfVxuXG4gICAgbGV0IHBhdGhXYXJuID0gZmFsc2VcbiAgICBpZiAoIXRoaXMucHJlc2VydmVQYXRocykge1xuICAgICAgY29uc3QgW3Jvb3QsIHN0cmlwcGVkXSA9IHN0cmlwQWJzb2x1dGVQYXRoKHRoaXMucGF0aClcbiAgICAgIGlmIChyb290KSB7XG4gICAgICAgIHRoaXMucGF0aCA9IHN0cmlwcGVkXG4gICAgICAgIHBhdGhXYXJuID0gcm9vdFxuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMucmVtYWluID0gcmVhZEVudHJ5LnNpemVcbiAgICB0aGlzLmJsb2NrUmVtYWluID0gcmVhZEVudHJ5LnN0YXJ0QmxvY2tTaXplXG5cbiAgICB0aGlzLmhlYWRlciA9IG5ldyBIZWFkZXIoe1xuICAgICAgcGF0aDogdGhpc1tQUkVGSVhdKHRoaXMucGF0aCksXG4gICAgICBsaW5rcGF0aDogdGhpcy50eXBlID09PSAnTGluaycgPyB0aGlzW1BSRUZJWF0odGhpcy5saW5rcGF0aClcbiAgICAgIDogdGhpcy5saW5rcGF0aCxcbiAgICAgIC8vIG9ubHkgdGhlIHBlcm1pc3Npb25zIGFuZCBzZXR1aWQvc2V0Z2lkL3N0aWNreSBiaXRmbGFnc1xuICAgICAgLy8gbm90IHRoZSBoaWdoZXItb3JkZXIgYml0cyB0aGF0IHNwZWNpZnkgZmlsZSB0eXBlXG4gICAgICBtb2RlOiB0aGlzLm1vZGUsXG4gICAgICB1aWQ6IHRoaXMucG9ydGFibGUgPyBudWxsIDogdGhpcy51aWQsXG4gICAgICBnaWQ6IHRoaXMucG9ydGFibGUgPyBudWxsIDogdGhpcy5naWQsXG4gICAgICBzaXplOiB0aGlzLnNpemUsXG4gICAgICBtdGltZTogdGhpcy5ub010aW1lID8gbnVsbCA6IHRoaXMubXRpbWUsXG4gICAgICB0eXBlOiB0aGlzLnR5cGUsXG4gICAgICB1bmFtZTogdGhpcy5wb3J0YWJsZSA/IG51bGwgOiB0aGlzLnVuYW1lLFxuICAgICAgYXRpbWU6IHRoaXMucG9ydGFibGUgPyBudWxsIDogdGhpcy5hdGltZSxcbiAgICAgIGN0aW1lOiB0aGlzLnBvcnRhYmxlID8gbnVsbCA6IHRoaXMuY3RpbWUsXG4gICAgfSlcblxuICAgIGlmIChwYXRoV2Fybikge1xuICAgICAgdGhpcy53YXJuKCdUQVJfRU5UUllfSU5GTycsIGBzdHJpcHBpbmcgJHtwYXRoV2Fybn0gZnJvbSBhYnNvbHV0ZSBwYXRoYCwge1xuICAgICAgICBlbnRyeTogdGhpcyxcbiAgICAgICAgcGF0aDogcGF0aFdhcm4gKyB0aGlzLnBhdGgsXG4gICAgICB9KVxuICAgIH1cblxuICAgIGlmICh0aGlzLmhlYWRlci5lbmNvZGUoKSAmJiAhdGhpcy5ub1BheCkge1xuICAgICAgc3VwZXIud3JpdGUobmV3IFBheCh7XG4gICAgICAgIGF0aW1lOiB0aGlzLnBvcnRhYmxlID8gbnVsbCA6IHRoaXMuYXRpbWUsXG4gICAgICAgIGN0aW1lOiB0aGlzLnBvcnRhYmxlID8gbnVsbCA6IHRoaXMuY3RpbWUsXG4gICAgICAgIGdpZDogdGhpcy5wb3J0YWJsZSA/IG51bGwgOiB0aGlzLmdpZCxcbiAgICAgICAgbXRpbWU6IHRoaXMubm9NdGltZSA/IG51bGwgOiB0aGlzLm10aW1lLFxuICAgICAgICBwYXRoOiB0aGlzW1BSRUZJWF0odGhpcy5wYXRoKSxcbiAgICAgICAgbGlua3BhdGg6IHRoaXMudHlwZSA9PT0gJ0xpbmsnID8gdGhpc1tQUkVGSVhdKHRoaXMubGlua3BhdGgpXG4gICAgICAgIDogdGhpcy5saW5rcGF0aCxcbiAgICAgICAgc2l6ZTogdGhpcy5zaXplLFxuICAgICAgICB1aWQ6IHRoaXMucG9ydGFibGUgPyBudWxsIDogdGhpcy51aWQsXG4gICAgICAgIHVuYW1lOiB0aGlzLnBvcnRhYmxlID8gbnVsbCA6IHRoaXMudW5hbWUsXG4gICAgICAgIGRldjogdGhpcy5wb3J0YWJsZSA/IG51bGwgOiB0aGlzLnJlYWRFbnRyeS5kZXYsXG4gICAgICAgIGlubzogdGhpcy5wb3J0YWJsZSA/IG51bGwgOiB0aGlzLnJlYWRFbnRyeS5pbm8sXG4gICAgICAgIG5saW5rOiB0aGlzLnBvcnRhYmxlID8gbnVsbCA6IHRoaXMucmVhZEVudHJ5Lm5saW5rLFxuICAgICAgfSkuZW5jb2RlKCkpXG4gICAgfVxuXG4gICAgc3VwZXIud3JpdGUodGhpcy5oZWFkZXIuYmxvY2spXG4gICAgcmVhZEVudHJ5LnBpcGUodGhpcylcbiAgfVxuXG4gIFtQUkVGSVhdIChwYXRoKSB7XG4gICAgcmV0dXJuIHByZWZpeFBhdGgocGF0aCwgdGhpcy5wcmVmaXgpXG4gIH1cblxuICBbTU9ERV0gKG1vZGUpIHtcbiAgICByZXR1cm4gbW9kZUZpeChtb2RlLCB0aGlzLnR5cGUgPT09ICdEaXJlY3RvcnknLCB0aGlzLnBvcnRhYmxlKVxuICB9XG5cbiAgd3JpdGUgKGRhdGEpIHtcbiAgICBjb25zdCB3cml0ZUxlbiA9IGRhdGEubGVuZ3RoXG4gICAgaWYgKHdyaXRlTGVuID4gdGhpcy5ibG9ja1JlbWFpbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCd3cml0aW5nIG1vcmUgdG8gZW50cnkgdGhhbiBpcyBhcHByb3ByaWF0ZScpXG4gICAgfVxuICAgIHRoaXMuYmxvY2tSZW1haW4gLT0gd3JpdGVMZW5cbiAgICByZXR1cm4gc3VwZXIud3JpdGUoZGF0YSlcbiAgfVxuXG4gIGVuZCAoKSB7XG4gICAgaWYgKHRoaXMuYmxvY2tSZW1haW4pIHtcbiAgICAgIHN1cGVyLndyaXRlKEJ1ZmZlci5hbGxvYyh0aGlzLmJsb2NrUmVtYWluKSlcbiAgICB9XG4gICAgcmV0dXJuIHN1cGVyLmVuZCgpXG4gIH1cbn0pXG5cbldyaXRlRW50cnkuU3luYyA9IFdyaXRlRW50cnlTeW5jXG5Xcml0ZUVudHJ5LlRhciA9IFdyaXRlRW50cnlUYXJcblxuY29uc3QgZ2V0VHlwZSA9IHN0YXQgPT5cbiAgc3RhdC5pc0ZpbGUoKSA/ICdGaWxlJ1xuICA6IHN0YXQuaXNEaXJlY3RvcnkoKSA/ICdEaXJlY3RvcnknXG4gIDogc3RhdC5pc1N5bWJvbGljTGluaygpID8gJ1N5bWJvbGljTGluaydcbiAgOiAnVW5zdXBwb3J0ZWQnXG5cbm1vZHVsZS5leHBvcnRzID0gV3JpdGVFbnRyeVxuIiwgIid1c2Ugc3RyaWN0J1xuXG4vLyBBIHJlYWRhYmxlIHRhciBzdHJlYW0gY3JlYXRvclxuLy8gVGVjaG5pY2FsbHksIHRoaXMgaXMgYSB0cmFuc2Zvcm0gc3RyZWFtIHRoYXQgeW91IHdyaXRlIHBhdGhzIGludG8sXG4vLyBhbmQgdGFyIGZvcm1hdCBjb21lcyBvdXQgb2YuXG4vLyBUaGUgYGFkZCgpYCBtZXRob2QgaXMgbGlrZSBgd3JpdGUoKWAgYnV0IHJldHVybnMgdGhpcyxcbi8vIGFuZCBlbmQoKSByZXR1cm4gYHRoaXNgIGFzIHdlbGwsIHNvIHlvdSBjYW5cbi8vIGRvIGBuZXcgUGFjayhvcHQpLmFkZCgnZmlsZXMnKS5hZGQoJ2RpcicpLmVuZCgpLnBpcGUob3V0cHV0KVxuLy8gWW91IGNvdWxkIGFsc28gZG8gc29tZXRoaW5nIGxpa2U6XG4vLyBzdHJlYW1PZlBhdGhzKCkucGlwZShuZXcgUGFjaygpKS5waXBlKG5ldyBmcy5Xcml0ZVN0cmVhbSgnb3V0LnRhcicpKVxuXG5jbGFzcyBQYWNrSm9iIHtcbiAgY29uc3RydWN0b3IgKHBhdGgsIGFic29sdXRlKSB7XG4gICAgdGhpcy5wYXRoID0gcGF0aCB8fCAnLi8nXG4gICAgdGhpcy5hYnNvbHV0ZSA9IGFic29sdXRlXG4gICAgdGhpcy5lbnRyeSA9IG51bGxcbiAgICB0aGlzLnN0YXQgPSBudWxsXG4gICAgdGhpcy5yZWFkZGlyID0gbnVsbFxuICAgIHRoaXMucGVuZGluZyA9IGZhbHNlXG4gICAgdGhpcy5pZ25vcmUgPSBmYWxzZVxuICAgIHRoaXMucGlwZWQgPSBmYWxzZVxuICB9XG59XG5cbmNvbnN0IE1pbmlQYXNzID0gcmVxdWlyZSgnbWluaXBhc3MnKVxuY29uc3QgemxpYiA9IHJlcXVpcmUoJ21pbml6bGliJylcbmNvbnN0IFJlYWRFbnRyeSA9IHJlcXVpcmUoJy4vcmVhZC1lbnRyeS5qcycpXG5jb25zdCBXcml0ZUVudHJ5ID0gcmVxdWlyZSgnLi93cml0ZS1lbnRyeS5qcycpXG5jb25zdCBXcml0ZUVudHJ5U3luYyA9IFdyaXRlRW50cnkuU3luY1xuY29uc3QgV3JpdGVFbnRyeVRhciA9IFdyaXRlRW50cnkuVGFyXG5jb25zdCBZYWxsaXN0ID0gcmVxdWlyZSgneWFsbGlzdCcpXG5jb25zdCBFT0YgPSBCdWZmZXIuYWxsb2MoMTAyNClcbmNvbnN0IE9OU1RBVCA9IFN5bWJvbCgnb25TdGF0JylcbmNvbnN0IEVOREVEID0gU3ltYm9sKCdlbmRlZCcpXG5jb25zdCBRVUVVRSA9IFN5bWJvbCgncXVldWUnKVxuY29uc3QgQ1VSUkVOVCA9IFN5bWJvbCgnY3VycmVudCcpXG5jb25zdCBQUk9DRVNTID0gU3ltYm9sKCdwcm9jZXNzJylcbmNvbnN0IFBST0NFU1NJTkcgPSBTeW1ib2woJ3Byb2Nlc3NpbmcnKVxuY29uc3QgUFJPQ0VTU0pPQiA9IFN5bWJvbCgncHJvY2Vzc0pvYicpXG5jb25zdCBKT0JTID0gU3ltYm9sKCdqb2JzJylcbmNvbnN0IEpPQkRPTkUgPSBTeW1ib2woJ2pvYkRvbmUnKVxuY29uc3QgQURERlNFTlRSWSA9IFN5bWJvbCgnYWRkRlNFbnRyeScpXG5jb25zdCBBRERUQVJFTlRSWSA9IFN5bWJvbCgnYWRkVGFyRW50cnknKVxuY29uc3QgU1RBVCA9IFN5bWJvbCgnc3RhdCcpXG5jb25zdCBSRUFERElSID0gU3ltYm9sKCdyZWFkZGlyJylcbmNvbnN0IE9OUkVBRERJUiA9IFN5bWJvbCgnb25yZWFkZGlyJylcbmNvbnN0IFBJUEUgPSBTeW1ib2woJ3BpcGUnKVxuY29uc3QgRU5UUlkgPSBTeW1ib2woJ2VudHJ5JylcbmNvbnN0IEVOVFJZT1BUID0gU3ltYm9sKCdlbnRyeU9wdCcpXG5jb25zdCBXUklURUVOVFJZQ0xBU1MgPSBTeW1ib2woJ3dyaXRlRW50cnlDbGFzcycpXG5jb25zdCBXUklURSA9IFN5bWJvbCgnd3JpdGUnKVxuY29uc3QgT05EUkFJTiA9IFN5bWJvbCgnb25kcmFpbicpXG5cbmNvbnN0IGZzID0gcmVxdWlyZSgnZnMnKVxuY29uc3QgcGF0aCA9IHJlcXVpcmUoJ3BhdGgnKVxuY29uc3Qgd2FybmVyID0gcmVxdWlyZSgnLi93YXJuLW1peGluLmpzJylcbmNvbnN0IG5vcm1QYXRoID0gcmVxdWlyZSgnLi9ub3JtYWxpemUtd2luZG93cy1wYXRoLmpzJylcblxuY29uc3QgUGFjayA9IHdhcm5lcihjbGFzcyBQYWNrIGV4dGVuZHMgTWluaVBhc3Mge1xuICBjb25zdHJ1Y3RvciAob3B0KSB7XG4gICAgc3VwZXIob3B0KVxuICAgIG9wdCA9IG9wdCB8fCBPYmplY3QuY3JlYXRlKG51bGwpXG4gICAgdGhpcy5vcHQgPSBvcHRcbiAgICB0aGlzLmZpbGUgPSBvcHQuZmlsZSB8fCAnJ1xuICAgIHRoaXMuY3dkID0gb3B0LmN3ZCB8fCBwcm9jZXNzLmN3ZCgpXG4gICAgdGhpcy5tYXhSZWFkU2l6ZSA9IG9wdC5tYXhSZWFkU2l6ZVxuICAgIHRoaXMucHJlc2VydmVQYXRocyA9ICEhb3B0LnByZXNlcnZlUGF0aHNcbiAgICB0aGlzLnN0cmljdCA9ICEhb3B0LnN0cmljdFxuICAgIHRoaXMubm9QYXggPSAhIW9wdC5ub1BheFxuICAgIHRoaXMucHJlZml4ID0gbm9ybVBhdGgob3B0LnByZWZpeCB8fCAnJylcbiAgICB0aGlzLmxpbmtDYWNoZSA9IG9wdC5saW5rQ2FjaGUgfHwgbmV3IE1hcCgpXG4gICAgdGhpcy5zdGF0Q2FjaGUgPSBvcHQuc3RhdENhY2hlIHx8IG5ldyBNYXAoKVxuICAgIHRoaXMucmVhZGRpckNhY2hlID0gb3B0LnJlYWRkaXJDYWNoZSB8fCBuZXcgTWFwKClcblxuICAgIHRoaXNbV1JJVEVFTlRSWUNMQVNTXSA9IFdyaXRlRW50cnlcbiAgICBpZiAodHlwZW9mIG9wdC5vbndhcm4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHRoaXMub24oJ3dhcm4nLCBvcHQub253YXJuKVxuICAgIH1cblxuICAgIHRoaXMucG9ydGFibGUgPSAhIW9wdC5wb3J0YWJsZVxuICAgIHRoaXMuemlwID0gbnVsbFxuICAgIGlmIChvcHQuZ3ppcCkge1xuICAgICAgaWYgKHR5cGVvZiBvcHQuZ3ppcCAhPT0gJ29iamVjdCcpIHtcbiAgICAgICAgb3B0Lmd6aXAgPSB7fVxuICAgICAgfVxuICAgICAgaWYgKHRoaXMucG9ydGFibGUpIHtcbiAgICAgICAgb3B0Lmd6aXAucG9ydGFibGUgPSB0cnVlXG4gICAgICB9XG4gICAgICB0aGlzLnppcCA9IG5ldyB6bGliLkd6aXAob3B0Lmd6aXApXG4gICAgICB0aGlzLnppcC5vbignZGF0YScsIGNodW5rID0+IHN1cGVyLndyaXRlKGNodW5rKSlcbiAgICAgIHRoaXMuemlwLm9uKCdlbmQnLCBfID0+IHN1cGVyLmVuZCgpKVxuICAgICAgdGhpcy56aXAub24oJ2RyYWluJywgXyA9PiB0aGlzW09ORFJBSU5dKCkpXG4gICAgICB0aGlzLm9uKCdyZXN1bWUnLCBfID0+IHRoaXMuemlwLnJlc3VtZSgpKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm9uKCdkcmFpbicsIHRoaXNbT05EUkFJTl0pXG4gICAgfVxuXG4gICAgdGhpcy5ub0RpclJlY3Vyc2UgPSAhIW9wdC5ub0RpclJlY3Vyc2VcbiAgICB0aGlzLmZvbGxvdyA9ICEhb3B0LmZvbGxvd1xuICAgIHRoaXMubm9NdGltZSA9ICEhb3B0Lm5vTXRpbWVcbiAgICB0aGlzLm10aW1lID0gb3B0Lm10aW1lIHx8IG51bGxcblxuICAgIHRoaXMuZmlsdGVyID0gdHlwZW9mIG9wdC5maWx0ZXIgPT09ICdmdW5jdGlvbicgPyBvcHQuZmlsdGVyIDogXyA9PiB0cnVlXG5cbiAgICB0aGlzW1FVRVVFXSA9IG5ldyBZYWxsaXN0KClcbiAgICB0aGlzW0pPQlNdID0gMFxuICAgIHRoaXMuam9icyA9ICtvcHQuam9icyB8fCA0XG4gICAgdGhpc1tQUk9DRVNTSU5HXSA9IGZhbHNlXG4gICAgdGhpc1tFTkRFRF0gPSBmYWxzZVxuICB9XG5cbiAgW1dSSVRFXSAoY2h1bmspIHtcbiAgICByZXR1cm4gc3VwZXIud3JpdGUoY2h1bmspXG4gIH1cblxuICBhZGQgKHBhdGgpIHtcbiAgICB0aGlzLndyaXRlKHBhdGgpXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIGVuZCAocGF0aCkge1xuICAgIGlmIChwYXRoKSB7XG4gICAgICB0aGlzLndyaXRlKHBhdGgpXG4gICAgfVxuICAgIHRoaXNbRU5ERURdID0gdHJ1ZVxuICAgIHRoaXNbUFJPQ0VTU10oKVxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICB3cml0ZSAocGF0aCkge1xuICAgIGlmICh0aGlzW0VOREVEXSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCd3cml0ZSBhZnRlciBlbmQnKVxuICAgIH1cblxuICAgIGlmIChwYXRoIGluc3RhbmNlb2YgUmVhZEVudHJ5KSB7XG4gICAgICB0aGlzW0FERFRBUkVOVFJZXShwYXRoKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzW0FEREZTRU5UUlldKHBhdGgpXG4gICAgfVxuICAgIHJldHVybiB0aGlzLmZsb3dpbmdcbiAgfVxuXG4gIFtBRERUQVJFTlRSWV0gKHApIHtcbiAgICBjb25zdCBhYnNvbHV0ZSA9IG5vcm1QYXRoKHBhdGgucmVzb2x2ZSh0aGlzLmN3ZCwgcC5wYXRoKSlcbiAgICAvLyBpbiB0aGlzIGNhc2UsIHdlIGRvbid0IGhhdmUgdG8gd2FpdCBmb3IgdGhlIHN0YXRcbiAgICBpZiAoIXRoaXMuZmlsdGVyKHAucGF0aCwgcCkpIHtcbiAgICAgIHAucmVzdW1lKClcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qgam9iID0gbmV3IFBhY2tKb2IocC5wYXRoLCBhYnNvbHV0ZSwgZmFsc2UpXG4gICAgICBqb2IuZW50cnkgPSBuZXcgV3JpdGVFbnRyeVRhcihwLCB0aGlzW0VOVFJZT1BUXShqb2IpKVxuICAgICAgam9iLmVudHJ5Lm9uKCdlbmQnLCBfID0+IHRoaXNbSk9CRE9ORV0oam9iKSlcbiAgICAgIHRoaXNbSk9CU10gKz0gMVxuICAgICAgdGhpc1tRVUVVRV0ucHVzaChqb2IpXG4gICAgfVxuXG4gICAgdGhpc1tQUk9DRVNTXSgpXG4gIH1cblxuICBbQURERlNFTlRSWV0gKHApIHtcbiAgICBjb25zdCBhYnNvbHV0ZSA9IG5vcm1QYXRoKHBhdGgucmVzb2x2ZSh0aGlzLmN3ZCwgcCkpXG4gICAgdGhpc1tRVUVVRV0ucHVzaChuZXcgUGFja0pvYihwLCBhYnNvbHV0ZSkpXG4gICAgdGhpc1tQUk9DRVNTXSgpXG4gIH1cblxuICBbU1RBVF0gKGpvYikge1xuICAgIGpvYi5wZW5kaW5nID0gdHJ1ZVxuICAgIHRoaXNbSk9CU10gKz0gMVxuICAgIGNvbnN0IHN0YXQgPSB0aGlzLmZvbGxvdyA/ICdzdGF0JyA6ICdsc3RhdCdcbiAgICBmc1tzdGF0XShqb2IuYWJzb2x1dGUsIChlciwgc3RhdCkgPT4ge1xuICAgICAgam9iLnBlbmRpbmcgPSBmYWxzZVxuICAgICAgdGhpc1tKT0JTXSAtPSAxXG4gICAgICBpZiAoZXIpIHtcbiAgICAgICAgdGhpcy5lbWl0KCdlcnJvcicsIGVyKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpc1tPTlNUQVRdKGpvYiwgc3RhdClcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgW09OU1RBVF0gKGpvYiwgc3RhdCkge1xuICAgIHRoaXMuc3RhdENhY2hlLnNldChqb2IuYWJzb2x1dGUsIHN0YXQpXG4gICAgam9iLnN0YXQgPSBzdGF0XG5cbiAgICAvLyBub3cgd2UgaGF2ZSB0aGUgc3RhdCwgd2UgY2FuIGZpbHRlciBpdC5cbiAgICBpZiAoIXRoaXMuZmlsdGVyKGpvYi5wYXRoLCBzdGF0KSkge1xuICAgICAgam9iLmlnbm9yZSA9IHRydWVcbiAgICB9XG5cbiAgICB0aGlzW1BST0NFU1NdKClcbiAgfVxuXG4gIFtSRUFERElSXSAoam9iKSB7XG4gICAgam9iLnBlbmRpbmcgPSB0cnVlXG4gICAgdGhpc1tKT0JTXSArPSAxXG4gICAgZnMucmVhZGRpcihqb2IuYWJzb2x1dGUsIChlciwgZW50cmllcykgPT4ge1xuICAgICAgam9iLnBlbmRpbmcgPSBmYWxzZVxuICAgICAgdGhpc1tKT0JTXSAtPSAxXG4gICAgICBpZiAoZXIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZW1pdCgnZXJyb3InLCBlcilcbiAgICAgIH1cbiAgICAgIHRoaXNbT05SRUFERElSXShqb2IsIGVudHJpZXMpXG4gICAgfSlcbiAgfVxuXG4gIFtPTlJFQURESVJdIChqb2IsIGVudHJpZXMpIHtcbiAgICB0aGlzLnJlYWRkaXJDYWNoZS5zZXQoam9iLmFic29sdXRlLCBlbnRyaWVzKVxuICAgIGpvYi5yZWFkZGlyID0gZW50cmllc1xuICAgIHRoaXNbUFJPQ0VTU10oKVxuICB9XG5cbiAgW1BST0NFU1NdICgpIHtcbiAgICBpZiAodGhpc1tQUk9DRVNTSU5HXSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgdGhpc1tQUk9DRVNTSU5HXSA9IHRydWVcbiAgICBmb3IgKGxldCB3ID0gdGhpc1tRVUVVRV0uaGVhZDtcbiAgICAgIHcgIT09IG51bGwgJiYgdGhpc1tKT0JTXSA8IHRoaXMuam9icztcbiAgICAgIHcgPSB3Lm5leHQpIHtcbiAgICAgIHRoaXNbUFJPQ0VTU0pPQl0ody52YWx1ZSlcbiAgICAgIGlmICh3LnZhbHVlLmlnbm9yZSkge1xuICAgICAgICBjb25zdCBwID0gdy5uZXh0XG4gICAgICAgIHRoaXNbUVVFVUVdLnJlbW92ZU5vZGUodylcbiAgICAgICAgdy5uZXh0ID0gcFxuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXNbUFJPQ0VTU0lOR10gPSBmYWxzZVxuXG4gICAgaWYgKHRoaXNbRU5ERURdICYmICF0aGlzW1FVRVVFXS5sZW5ndGggJiYgdGhpc1tKT0JTXSA9PT0gMCkge1xuICAgICAgaWYgKHRoaXMuemlwKSB7XG4gICAgICAgIHRoaXMuemlwLmVuZChFT0YpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzdXBlci53cml0ZShFT0YpXG4gICAgICAgIHN1cGVyLmVuZCgpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZ2V0IFtDVVJSRU5UXSAoKSB7XG4gICAgcmV0dXJuIHRoaXNbUVVFVUVdICYmIHRoaXNbUVVFVUVdLmhlYWQgJiYgdGhpc1tRVUVVRV0uaGVhZC52YWx1ZVxuICB9XG5cbiAgW0pPQkRPTkVdIChqb2IpIHtcbiAgICB0aGlzW1FVRVVFXS5zaGlmdCgpXG4gICAgdGhpc1tKT0JTXSAtPSAxXG4gICAgdGhpc1tQUk9DRVNTXSgpXG4gIH1cblxuICBbUFJPQ0VTU0pPQl0gKGpvYikge1xuICAgIGlmIChqb2IucGVuZGluZykge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKGpvYi5lbnRyeSkge1xuICAgICAgaWYgKGpvYiA9PT0gdGhpc1tDVVJSRU5UXSAmJiAham9iLnBpcGVkKSB7XG4gICAgICAgIHRoaXNbUElQRV0oam9iKVxuICAgICAgfVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKCFqb2Iuc3RhdCkge1xuICAgICAgaWYgKHRoaXMuc3RhdENhY2hlLmhhcyhqb2IuYWJzb2x1dGUpKSB7XG4gICAgICAgIHRoaXNbT05TVEFUXShqb2IsIHRoaXMuc3RhdENhY2hlLmdldChqb2IuYWJzb2x1dGUpKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpc1tTVEFUXShqb2IpXG4gICAgICB9XG4gICAgfVxuICAgIGlmICgham9iLnN0YXQpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIC8vIGZpbHRlcmVkIG91dCFcbiAgICBpZiAoam9iLmlnbm9yZSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLm5vRGlyUmVjdXJzZSAmJiBqb2Iuc3RhdC5pc0RpcmVjdG9yeSgpICYmICFqb2IucmVhZGRpcikge1xuICAgICAgaWYgKHRoaXMucmVhZGRpckNhY2hlLmhhcyhqb2IuYWJzb2x1dGUpKSB7XG4gICAgICAgIHRoaXNbT05SRUFERElSXShqb2IsIHRoaXMucmVhZGRpckNhY2hlLmdldChqb2IuYWJzb2x1dGUpKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpc1tSRUFERElSXShqb2IpXG4gICAgICB9XG4gICAgICBpZiAoIWpvYi5yZWFkZGlyKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIHdlIGtub3cgaXQgZG9lc24ndCBoYXZlIGFuIGVudHJ5LCBiZWNhdXNlIHRoYXQgZ290IGNoZWNrZWQgYWJvdmVcbiAgICBqb2IuZW50cnkgPSB0aGlzW0VOVFJZXShqb2IpXG4gICAgaWYgKCFqb2IuZW50cnkpIHtcbiAgICAgIGpvYi5pZ25vcmUgPSB0cnVlXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAoam9iID09PSB0aGlzW0NVUlJFTlRdICYmICFqb2IucGlwZWQpIHtcbiAgICAgIHRoaXNbUElQRV0oam9iKVxuICAgIH1cbiAgfVxuXG4gIFtFTlRSWU9QVF0gKGpvYikge1xuICAgIHJldHVybiB7XG4gICAgICBvbndhcm46IChjb2RlLCBtc2csIGRhdGEpID0+IHRoaXMud2Fybihjb2RlLCBtc2csIGRhdGEpLFxuICAgICAgbm9QYXg6IHRoaXMubm9QYXgsXG4gICAgICBjd2Q6IHRoaXMuY3dkLFxuICAgICAgYWJzb2x1dGU6IGpvYi5hYnNvbHV0ZSxcbiAgICAgIHByZXNlcnZlUGF0aHM6IHRoaXMucHJlc2VydmVQYXRocyxcbiAgICAgIG1heFJlYWRTaXplOiB0aGlzLm1heFJlYWRTaXplLFxuICAgICAgc3RyaWN0OiB0aGlzLnN0cmljdCxcbiAgICAgIHBvcnRhYmxlOiB0aGlzLnBvcnRhYmxlLFxuICAgICAgbGlua0NhY2hlOiB0aGlzLmxpbmtDYWNoZSxcbiAgICAgIHN0YXRDYWNoZTogdGhpcy5zdGF0Q2FjaGUsXG4gICAgICBub010aW1lOiB0aGlzLm5vTXRpbWUsXG4gICAgICBtdGltZTogdGhpcy5tdGltZSxcbiAgICAgIHByZWZpeDogdGhpcy5wcmVmaXgsXG4gICAgfVxuICB9XG5cbiAgW0VOVFJZXSAoam9iKSB7XG4gICAgdGhpc1tKT0JTXSArPSAxXG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBuZXcgdGhpc1tXUklURUVOVFJZQ0xBU1NdKGpvYi5wYXRoLCB0aGlzW0VOVFJZT1BUXShqb2IpKVxuICAgICAgICAub24oJ2VuZCcsICgpID0+IHRoaXNbSk9CRE9ORV0oam9iKSlcbiAgICAgICAgLm9uKCdlcnJvcicsIGVyID0+IHRoaXMuZW1pdCgnZXJyb3InLCBlcikpXG4gICAgfSBjYXRjaCAoZXIpIHtcbiAgICAgIHRoaXMuZW1pdCgnZXJyb3InLCBlcilcbiAgICB9XG4gIH1cblxuICBbT05EUkFJTl0gKCkge1xuICAgIGlmICh0aGlzW0NVUlJFTlRdICYmIHRoaXNbQ1VSUkVOVF0uZW50cnkpIHtcbiAgICAgIHRoaXNbQ1VSUkVOVF0uZW50cnkucmVzdW1lKClcbiAgICB9XG4gIH1cblxuICAvLyBsaWtlIC5waXBlKCkgYnV0IHVzaW5nIHN1cGVyLCBiZWNhdXNlIG91ciB3cml0ZSgpIGlzIHNwZWNpYWxcbiAgW1BJUEVdIChqb2IpIHtcbiAgICBqb2IucGlwZWQgPSB0cnVlXG5cbiAgICBpZiAoam9iLnJlYWRkaXIpIHtcbiAgICAgIGpvYi5yZWFkZGlyLmZvckVhY2goZW50cnkgPT4ge1xuICAgICAgICBjb25zdCBwID0gam9iLnBhdGhcbiAgICAgICAgY29uc3QgYmFzZSA9IHAgPT09ICcuLycgPyAnJyA6IHAucmVwbGFjZSgvXFwvKiQvLCAnLycpXG4gICAgICAgIHRoaXNbQURERlNFTlRSWV0oYmFzZSArIGVudHJ5KVxuICAgICAgfSlcbiAgICB9XG5cbiAgICBjb25zdCBzb3VyY2UgPSBqb2IuZW50cnlcbiAgICBjb25zdCB6aXAgPSB0aGlzLnppcFxuXG4gICAgaWYgKHppcCkge1xuICAgICAgc291cmNlLm9uKCdkYXRhJywgY2h1bmsgPT4ge1xuICAgICAgICBpZiAoIXppcC53cml0ZShjaHVuaykpIHtcbiAgICAgICAgICBzb3VyY2UucGF1c2UoKVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH0gZWxzZSB7XG4gICAgICBzb3VyY2Uub24oJ2RhdGEnLCBjaHVuayA9PiB7XG4gICAgICAgIGlmICghc3VwZXIud3JpdGUoY2h1bmspKSB7XG4gICAgICAgICAgc291cmNlLnBhdXNlKClcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICBwYXVzZSAoKSB7XG4gICAgaWYgKHRoaXMuemlwKSB7XG4gICAgICB0aGlzLnppcC5wYXVzZSgpXG4gICAgfVxuICAgIHJldHVybiBzdXBlci5wYXVzZSgpXG4gIH1cbn0pXG5cbmNsYXNzIFBhY2tTeW5jIGV4dGVuZHMgUGFjayB7XG4gIGNvbnN0cnVjdG9yIChvcHQpIHtcbiAgICBzdXBlcihvcHQpXG4gICAgdGhpc1tXUklURUVOVFJZQ0xBU1NdID0gV3JpdGVFbnRyeVN5bmNcbiAgfVxuXG4gIC8vIHBhdXNlL3Jlc3VtZSBhcmUgbm8tb3BzIGluIHN5bmMgc3RyZWFtcy5cbiAgcGF1c2UgKCkge31cbiAgcmVzdW1lICgpIHt9XG5cbiAgW1NUQVRdIChqb2IpIHtcbiAgICBjb25zdCBzdGF0ID0gdGhpcy5mb2xsb3cgPyAnc3RhdFN5bmMnIDogJ2xzdGF0U3luYydcbiAgICB0aGlzW09OU1RBVF0oam9iLCBmc1tzdGF0XShqb2IuYWJzb2x1dGUpKVxuICB9XG5cbiAgW1JFQURESVJdIChqb2IsIHN0YXQpIHtcbiAgICB0aGlzW09OUkVBRERJUl0oam9iLCBmcy5yZWFkZGlyU3luYyhqb2IuYWJzb2x1dGUpKVxuICB9XG5cbiAgLy8gZ290dGEgZ2V0IGl0IGFsbCBpbiB0aGlzIHRpY2tcbiAgW1BJUEVdIChqb2IpIHtcbiAgICBjb25zdCBzb3VyY2UgPSBqb2IuZW50cnlcbiAgICBjb25zdCB6aXAgPSB0aGlzLnppcFxuXG4gICAgaWYgKGpvYi5yZWFkZGlyKSB7XG4gICAgICBqb2IucmVhZGRpci5mb3JFYWNoKGVudHJ5ID0+IHtcbiAgICAgICAgY29uc3QgcCA9IGpvYi5wYXRoXG4gICAgICAgIGNvbnN0IGJhc2UgPSBwID09PSAnLi8nID8gJycgOiBwLnJlcGxhY2UoL1xcLyokLywgJy8nKVxuICAgICAgICB0aGlzW0FEREZTRU5UUlldKGJhc2UgKyBlbnRyeSlcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgaWYgKHppcCkge1xuICAgICAgc291cmNlLm9uKCdkYXRhJywgY2h1bmsgPT4ge1xuICAgICAgICB6aXAud3JpdGUoY2h1bmspXG4gICAgICB9KVxuICAgIH0gZWxzZSB7XG4gICAgICBzb3VyY2Uub24oJ2RhdGEnLCBjaHVuayA9PiB7XG4gICAgICAgIHN1cGVyW1dSSVRFXShjaHVuaylcbiAgICAgIH0pXG4gICAgfVxuICB9XG59XG5cblBhY2suU3luYyA9IFBhY2tTeW5jXG5cbm1vZHVsZS5leHBvcnRzID0gUGFja1xuIiwgIid1c2Ugc3RyaWN0J1xuY29uc3QgTWluaVBhc3MgPSByZXF1aXJlKCdtaW5pcGFzcycpXG5jb25zdCBFRSA9IHJlcXVpcmUoJ2V2ZW50cycpLkV2ZW50RW1pdHRlclxuY29uc3QgZnMgPSByZXF1aXJlKCdmcycpXG5cbmxldCB3cml0ZXYgPSBmcy53cml0ZXZcbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5pZiAoIXdyaXRldikge1xuICAvLyBUaGlzIGVudGlyZSBibG9jayBjYW4gYmUgcmVtb3ZlZCBpZiBzdXBwb3J0IGZvciBlYXJsaWVyIHRoYW4gTm9kZS5qc1xuICAvLyAxMi45LjAgaXMgbm90IG5lZWRlZC5cbiAgY29uc3QgYmluZGluZyA9IHByb2Nlc3MuYmluZGluZygnZnMnKVxuICBjb25zdCBGU1JlcVdyYXAgPSBiaW5kaW5nLkZTUmVxV3JhcCB8fCBiaW5kaW5nLkZTUmVxQ2FsbGJhY2tcblxuICB3cml0ZXYgPSAoZmQsIGlvdmVjLCBwb3MsIGNiKSA9PiB7XG4gICAgY29uc3QgZG9uZSA9IChlciwgYncpID0+IGNiKGVyLCBidywgaW92ZWMpXG4gICAgY29uc3QgcmVxID0gbmV3IEZTUmVxV3JhcCgpXG4gICAgcmVxLm9uY29tcGxldGUgPSBkb25lXG4gICAgYmluZGluZy53cml0ZUJ1ZmZlcnMoZmQsIGlvdmVjLCBwb3MsIHJlcSlcbiAgfVxufVxuXG5jb25zdCBfYXV0b0Nsb3NlID0gU3ltYm9sKCdfYXV0b0Nsb3NlJylcbmNvbnN0IF9jbG9zZSA9IFN5bWJvbCgnX2Nsb3NlJylcbmNvbnN0IF9lbmRlZCA9IFN5bWJvbCgnX2VuZGVkJylcbmNvbnN0IF9mZCA9IFN5bWJvbCgnX2ZkJylcbmNvbnN0IF9maW5pc2hlZCA9IFN5bWJvbCgnX2ZpbmlzaGVkJylcbmNvbnN0IF9mbGFncyA9IFN5bWJvbCgnX2ZsYWdzJylcbmNvbnN0IF9mbHVzaCA9IFN5bWJvbCgnX2ZsdXNoJylcbmNvbnN0IF9oYW5kbGVDaHVuayA9IFN5bWJvbCgnX2hhbmRsZUNodW5rJylcbmNvbnN0IF9tYWtlQnVmID0gU3ltYm9sKCdfbWFrZUJ1ZicpXG5jb25zdCBfbW9kZSA9IFN5bWJvbCgnX21vZGUnKVxuY29uc3QgX25lZWREcmFpbiA9IFN5bWJvbCgnX25lZWREcmFpbicpXG5jb25zdCBfb25lcnJvciA9IFN5bWJvbCgnX29uZXJyb3InKVxuY29uc3QgX29ub3BlbiA9IFN5bWJvbCgnX29ub3BlbicpXG5jb25zdCBfb25yZWFkID0gU3ltYm9sKCdfb25yZWFkJylcbmNvbnN0IF9vbndyaXRlID0gU3ltYm9sKCdfb253cml0ZScpXG5jb25zdCBfb3BlbiA9IFN5bWJvbCgnX29wZW4nKVxuY29uc3QgX3BhdGggPSBTeW1ib2woJ19wYXRoJylcbmNvbnN0IF9wb3MgPSBTeW1ib2woJ19wb3MnKVxuY29uc3QgX3F1ZXVlID0gU3ltYm9sKCdfcXVldWUnKVxuY29uc3QgX3JlYWQgPSBTeW1ib2woJ19yZWFkJylcbmNvbnN0IF9yZWFkU2l6ZSA9IFN5bWJvbCgnX3JlYWRTaXplJylcbmNvbnN0IF9yZWFkaW5nID0gU3ltYm9sKCdfcmVhZGluZycpXG5jb25zdCBfcmVtYWluID0gU3ltYm9sKCdfcmVtYWluJylcbmNvbnN0IF9zaXplID0gU3ltYm9sKCdfc2l6ZScpXG5jb25zdCBfd3JpdGUgPSBTeW1ib2woJ193cml0ZScpXG5jb25zdCBfd3JpdGluZyA9IFN5bWJvbCgnX3dyaXRpbmcnKVxuY29uc3QgX2RlZmF1bHRGbGFnID0gU3ltYm9sKCdfZGVmYXVsdEZsYWcnKVxuY29uc3QgX2Vycm9yZWQgPSBTeW1ib2woJ19lcnJvcmVkJylcblxuY2xhc3MgUmVhZFN0cmVhbSBleHRlbmRzIE1pbmlQYXNzIHtcbiAgY29uc3RydWN0b3IgKHBhdGgsIG9wdCkge1xuICAgIG9wdCA9IG9wdCB8fCB7fVxuICAgIHN1cGVyKG9wdClcblxuICAgIHRoaXMucmVhZGFibGUgPSB0cnVlXG4gICAgdGhpcy53cml0YWJsZSA9IGZhbHNlXG5cbiAgICBpZiAodHlwZW9mIHBhdGggIT09ICdzdHJpbmcnKVxuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigncGF0aCBtdXN0IGJlIGEgc3RyaW5nJylcblxuICAgIHRoaXNbX2Vycm9yZWRdID0gZmFsc2VcbiAgICB0aGlzW19mZF0gPSB0eXBlb2Ygb3B0LmZkID09PSAnbnVtYmVyJyA/IG9wdC5mZCA6IG51bGxcbiAgICB0aGlzW19wYXRoXSA9IHBhdGhcbiAgICB0aGlzW19yZWFkU2l6ZV0gPSBvcHQucmVhZFNpemUgfHwgMTYqMTAyNCoxMDI0XG4gICAgdGhpc1tfcmVhZGluZ10gPSBmYWxzZVxuICAgIHRoaXNbX3NpemVdID0gdHlwZW9mIG9wdC5zaXplID09PSAnbnVtYmVyJyA/IG9wdC5zaXplIDogSW5maW5pdHlcbiAgICB0aGlzW19yZW1haW5dID0gdGhpc1tfc2l6ZV1cbiAgICB0aGlzW19hdXRvQ2xvc2VdID0gdHlwZW9mIG9wdC5hdXRvQ2xvc2UgPT09ICdib29sZWFuJyA/XG4gICAgICBvcHQuYXV0b0Nsb3NlIDogdHJ1ZVxuXG4gICAgaWYgKHR5cGVvZiB0aGlzW19mZF0gPT09ICdudW1iZXInKVxuICAgICAgdGhpc1tfcmVhZF0oKVxuICAgIGVsc2VcbiAgICAgIHRoaXNbX29wZW5dKClcbiAgfVxuXG4gIGdldCBmZCAoKSB7IHJldHVybiB0aGlzW19mZF0gfVxuICBnZXQgcGF0aCAoKSB7IHJldHVybiB0aGlzW19wYXRoXSB9XG5cbiAgd3JpdGUgKCkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3RoaXMgaXMgYSByZWFkYWJsZSBzdHJlYW0nKVxuICB9XG5cbiAgZW5kICgpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCd0aGlzIGlzIGEgcmVhZGFibGUgc3RyZWFtJylcbiAgfVxuXG4gIFtfb3Blbl0gKCkge1xuICAgIGZzLm9wZW4odGhpc1tfcGF0aF0sICdyJywgKGVyLCBmZCkgPT4gdGhpc1tfb25vcGVuXShlciwgZmQpKVxuICB9XG5cbiAgW19vbm9wZW5dIChlciwgZmQpIHtcbiAgICBpZiAoZXIpXG4gICAgICB0aGlzW19vbmVycm9yXShlcilcbiAgICBlbHNlIHtcbiAgICAgIHRoaXNbX2ZkXSA9IGZkXG4gICAgICB0aGlzLmVtaXQoJ29wZW4nLCBmZClcbiAgICAgIHRoaXNbX3JlYWRdKClcbiAgICB9XG4gIH1cblxuICBbX21ha2VCdWZdICgpIHtcbiAgICByZXR1cm4gQnVmZmVyLmFsbG9jVW5zYWZlKE1hdGgubWluKHRoaXNbX3JlYWRTaXplXSwgdGhpc1tfcmVtYWluXSkpXG4gIH1cblxuICBbX3JlYWRdICgpIHtcbiAgICBpZiAoIXRoaXNbX3JlYWRpbmddKSB7XG4gICAgICB0aGlzW19yZWFkaW5nXSA9IHRydWVcbiAgICAgIGNvbnN0IGJ1ZiA9IHRoaXNbX21ha2VCdWZdKClcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgICAgaWYgKGJ1Zi5sZW5ndGggPT09IDApXG4gICAgICAgIHJldHVybiBwcm9jZXNzLm5leHRUaWNrKCgpID0+IHRoaXNbX29ucmVhZF0obnVsbCwgMCwgYnVmKSlcbiAgICAgIGZzLnJlYWQodGhpc1tfZmRdLCBidWYsIDAsIGJ1Zi5sZW5ndGgsIG51bGwsIChlciwgYnIsIGJ1ZikgPT5cbiAgICAgICAgdGhpc1tfb25yZWFkXShlciwgYnIsIGJ1ZikpXG4gICAgfVxuICB9XG5cbiAgW19vbnJlYWRdIChlciwgYnIsIGJ1Zikge1xuICAgIHRoaXNbX3JlYWRpbmddID0gZmFsc2VcbiAgICBpZiAoZXIpXG4gICAgICB0aGlzW19vbmVycm9yXShlcilcbiAgICBlbHNlIGlmICh0aGlzW19oYW5kbGVDaHVua10oYnIsIGJ1ZikpXG4gICAgICB0aGlzW19yZWFkXSgpXG4gIH1cblxuICBbX2Nsb3NlXSAoKSB7XG4gICAgaWYgKHRoaXNbX2F1dG9DbG9zZV0gJiYgdHlwZW9mIHRoaXNbX2ZkXSA9PT0gJ251bWJlcicpIHtcbiAgICAgIGNvbnN0IGZkID0gdGhpc1tfZmRdXG4gICAgICB0aGlzW19mZF0gPSBudWxsXG4gICAgICBmcy5jbG9zZShmZCwgZXIgPT4gZXIgPyB0aGlzLmVtaXQoJ2Vycm9yJywgZXIpIDogdGhpcy5lbWl0KCdjbG9zZScpKVxuICAgIH1cbiAgfVxuXG4gIFtfb25lcnJvcl0gKGVyKSB7XG4gICAgdGhpc1tfcmVhZGluZ10gPSB0cnVlXG4gICAgdGhpc1tfY2xvc2VdKClcbiAgICB0aGlzLmVtaXQoJ2Vycm9yJywgZXIpXG4gIH1cblxuICBbX2hhbmRsZUNodW5rXSAoYnIsIGJ1Zikge1xuICAgIGxldCByZXQgPSBmYWxzZVxuICAgIC8vIG5vIGVmZmVjdCBpZiBpbmZpbml0ZVxuICAgIHRoaXNbX3JlbWFpbl0gLT0gYnJcbiAgICBpZiAoYnIgPiAwKVxuICAgICAgcmV0ID0gc3VwZXIud3JpdGUoYnIgPCBidWYubGVuZ3RoID8gYnVmLnNsaWNlKDAsIGJyKSA6IGJ1ZilcblxuICAgIGlmIChiciA9PT0gMCB8fCB0aGlzW19yZW1haW5dIDw9IDApIHtcbiAgICAgIHJldCA9IGZhbHNlXG4gICAgICB0aGlzW19jbG9zZV0oKVxuICAgICAgc3VwZXIuZW5kKClcbiAgICB9XG5cbiAgICByZXR1cm4gcmV0XG4gIH1cblxuICBlbWl0IChldiwgZGF0YSkge1xuICAgIHN3aXRjaCAoZXYpIHtcbiAgICAgIGNhc2UgJ3ByZWZpbmlzaCc6XG4gICAgICBjYXNlICdmaW5pc2gnOlxuICAgICAgICBicmVha1xuXG4gICAgICBjYXNlICdkcmFpbic6XG4gICAgICAgIGlmICh0eXBlb2YgdGhpc1tfZmRdID09PSAnbnVtYmVyJylcbiAgICAgICAgICB0aGlzW19yZWFkXSgpXG4gICAgICAgIGJyZWFrXG5cbiAgICAgIGNhc2UgJ2Vycm9yJzpcbiAgICAgICAgaWYgKHRoaXNbX2Vycm9yZWRdKVxuICAgICAgICAgIHJldHVyblxuICAgICAgICB0aGlzW19lcnJvcmVkXSA9IHRydWVcbiAgICAgICAgcmV0dXJuIHN1cGVyLmVtaXQoZXYsIGRhdGEpXG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBzdXBlci5lbWl0KGV2LCBkYXRhKVxuICAgIH1cbiAgfVxufVxuXG5jbGFzcyBSZWFkU3RyZWFtU3luYyBleHRlbmRzIFJlYWRTdHJlYW0ge1xuICBbX29wZW5dICgpIHtcbiAgICBsZXQgdGhyZXcgPSB0cnVlXG4gICAgdHJ5IHtcbiAgICAgIHRoaXNbX29ub3Blbl0obnVsbCwgZnMub3BlblN5bmModGhpc1tfcGF0aF0sICdyJykpXG4gICAgICB0aHJldyA9IGZhbHNlXG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlmICh0aHJldylcbiAgICAgICAgdGhpc1tfY2xvc2VdKClcbiAgICB9XG4gIH1cblxuICBbX3JlYWRdICgpIHtcbiAgICBsZXQgdGhyZXcgPSB0cnVlXG4gICAgdHJ5IHtcbiAgICAgIGlmICghdGhpc1tfcmVhZGluZ10pIHtcbiAgICAgICAgdGhpc1tfcmVhZGluZ10gPSB0cnVlXG4gICAgICAgIGRvIHtcbiAgICAgICAgICBjb25zdCBidWYgPSB0aGlzW19tYWtlQnVmXSgpXG4gICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgICBjb25zdCBiciA9IGJ1Zi5sZW5ndGggPT09IDAgPyAwXG4gICAgICAgICAgICA6IGZzLnJlYWRTeW5jKHRoaXNbX2ZkXSwgYnVmLCAwLCBidWYubGVuZ3RoLCBudWxsKVxuICAgICAgICAgIGlmICghdGhpc1tfaGFuZGxlQ2h1bmtdKGJyLCBidWYpKVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgfSB3aGlsZSAodHJ1ZSlcbiAgICAgICAgdGhpc1tfcmVhZGluZ10gPSBmYWxzZVxuICAgICAgfVxuICAgICAgdGhyZXcgPSBmYWxzZVxuICAgIH0gZmluYWxseSB7XG4gICAgICBpZiAodGhyZXcpXG4gICAgICAgIHRoaXNbX2Nsb3NlXSgpXG4gICAgfVxuICB9XG5cbiAgW19jbG9zZV0gKCkge1xuICAgIGlmICh0aGlzW19hdXRvQ2xvc2VdICYmIHR5cGVvZiB0aGlzW19mZF0gPT09ICdudW1iZXInKSB7XG4gICAgICBjb25zdCBmZCA9IHRoaXNbX2ZkXVxuICAgICAgdGhpc1tfZmRdID0gbnVsbFxuICAgICAgZnMuY2xvc2VTeW5jKGZkKVxuICAgICAgdGhpcy5lbWl0KCdjbG9zZScpXG4gICAgfVxuICB9XG59XG5cbmNsYXNzIFdyaXRlU3RyZWFtIGV4dGVuZHMgRUUge1xuICBjb25zdHJ1Y3RvciAocGF0aCwgb3B0KSB7XG4gICAgb3B0ID0gb3B0IHx8IHt9XG4gICAgc3VwZXIob3B0KVxuICAgIHRoaXMucmVhZGFibGUgPSBmYWxzZVxuICAgIHRoaXMud3JpdGFibGUgPSB0cnVlXG4gICAgdGhpc1tfZXJyb3JlZF0gPSBmYWxzZVxuICAgIHRoaXNbX3dyaXRpbmddID0gZmFsc2VcbiAgICB0aGlzW19lbmRlZF0gPSBmYWxzZVxuICAgIHRoaXNbX25lZWREcmFpbl0gPSBmYWxzZVxuICAgIHRoaXNbX3F1ZXVlXSA9IFtdXG4gICAgdGhpc1tfcGF0aF0gPSBwYXRoXG4gICAgdGhpc1tfZmRdID0gdHlwZW9mIG9wdC5mZCA9PT0gJ251bWJlcicgPyBvcHQuZmQgOiBudWxsXG4gICAgdGhpc1tfbW9kZV0gPSBvcHQubW9kZSA9PT0gdW5kZWZpbmVkID8gMG82NjYgOiBvcHQubW9kZVxuICAgIHRoaXNbX3Bvc10gPSB0eXBlb2Ygb3B0LnN0YXJ0ID09PSAnbnVtYmVyJyA/IG9wdC5zdGFydCA6IG51bGxcbiAgICB0aGlzW19hdXRvQ2xvc2VdID0gdHlwZW9mIG9wdC5hdXRvQ2xvc2UgPT09ICdib29sZWFuJyA/XG4gICAgICBvcHQuYXV0b0Nsb3NlIDogdHJ1ZVxuXG4gICAgLy8gdHJ1bmNhdGluZyBtYWtlcyBubyBzZW5zZSB3aGVuIHdyaXRpbmcgaW50byB0aGUgbWlkZGxlXG4gICAgY29uc3QgZGVmYXVsdEZsYWcgPSB0aGlzW19wb3NdICE9PSBudWxsID8gJ3IrJyA6ICd3J1xuICAgIHRoaXNbX2RlZmF1bHRGbGFnXSA9IG9wdC5mbGFncyA9PT0gdW5kZWZpbmVkXG4gICAgdGhpc1tfZmxhZ3NdID0gdGhpc1tfZGVmYXVsdEZsYWddID8gZGVmYXVsdEZsYWcgOiBvcHQuZmxhZ3NcblxuICAgIGlmICh0aGlzW19mZF0gPT09IG51bGwpXG4gICAgICB0aGlzW19vcGVuXSgpXG4gIH1cblxuICBlbWl0IChldiwgZGF0YSkge1xuICAgIGlmIChldiA9PT0gJ2Vycm9yJykge1xuICAgICAgaWYgKHRoaXNbX2Vycm9yZWRdKVxuICAgICAgICByZXR1cm5cbiAgICAgIHRoaXNbX2Vycm9yZWRdID0gdHJ1ZVxuICAgIH1cbiAgICByZXR1cm4gc3VwZXIuZW1pdChldiwgZGF0YSlcbiAgfVxuXG5cbiAgZ2V0IGZkICgpIHsgcmV0dXJuIHRoaXNbX2ZkXSB9XG4gIGdldCBwYXRoICgpIHsgcmV0dXJuIHRoaXNbX3BhdGhdIH1cblxuICBbX29uZXJyb3JdIChlcikge1xuICAgIHRoaXNbX2Nsb3NlXSgpXG4gICAgdGhpc1tfd3JpdGluZ10gPSB0cnVlXG4gICAgdGhpcy5lbWl0KCdlcnJvcicsIGVyKVxuICB9XG5cbiAgW19vcGVuXSAoKSB7XG4gICAgZnMub3Blbih0aGlzW19wYXRoXSwgdGhpc1tfZmxhZ3NdLCB0aGlzW19tb2RlXSxcbiAgICAgIChlciwgZmQpID0+IHRoaXNbX29ub3Blbl0oZXIsIGZkKSlcbiAgfVxuXG4gIFtfb25vcGVuXSAoZXIsIGZkKSB7XG4gICAgaWYgKHRoaXNbX2RlZmF1bHRGbGFnXSAmJlxuICAgICAgICB0aGlzW19mbGFnc10gPT09ICdyKycgJiZcbiAgICAgICAgZXIgJiYgZXIuY29kZSA9PT0gJ0VOT0VOVCcpIHtcbiAgICAgIHRoaXNbX2ZsYWdzXSA9ICd3J1xuICAgICAgdGhpc1tfb3Blbl0oKVxuICAgIH0gZWxzZSBpZiAoZXIpXG4gICAgICB0aGlzW19vbmVycm9yXShlcilcbiAgICBlbHNlIHtcbiAgICAgIHRoaXNbX2ZkXSA9IGZkXG4gICAgICB0aGlzLmVtaXQoJ29wZW4nLCBmZClcbiAgICAgIHRoaXNbX2ZsdXNoXSgpXG4gICAgfVxuICB9XG5cbiAgZW5kIChidWYsIGVuYykge1xuICAgIGlmIChidWYpXG4gICAgICB0aGlzLndyaXRlKGJ1ZiwgZW5jKVxuXG4gICAgdGhpc1tfZW5kZWRdID0gdHJ1ZVxuXG4gICAgLy8gc3ludGhldGljIGFmdGVyLXdyaXRlIGxvZ2ljLCB3aGVyZSBkcmFpbi9maW5pc2ggbGl2ZVxuICAgIGlmICghdGhpc1tfd3JpdGluZ10gJiYgIXRoaXNbX3F1ZXVlXS5sZW5ndGggJiZcbiAgICAgICAgdHlwZW9mIHRoaXNbX2ZkXSA9PT0gJ251bWJlcicpXG4gICAgICB0aGlzW19vbndyaXRlXShudWxsLCAwKVxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICB3cml0ZSAoYnVmLCBlbmMpIHtcbiAgICBpZiAodHlwZW9mIGJ1ZiA9PT0gJ3N0cmluZycpXG4gICAgICBidWYgPSBCdWZmZXIuZnJvbShidWYsIGVuYylcblxuICAgIGlmICh0aGlzW19lbmRlZF0pIHtcbiAgICAgIHRoaXMuZW1pdCgnZXJyb3InLCBuZXcgRXJyb3IoJ3dyaXRlKCkgYWZ0ZXIgZW5kKCknKSlcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cblxuICAgIGlmICh0aGlzW19mZF0gPT09IG51bGwgfHwgdGhpc1tfd3JpdGluZ10gfHwgdGhpc1tfcXVldWVdLmxlbmd0aCkge1xuICAgICAgdGhpc1tfcXVldWVdLnB1c2goYnVmKVxuICAgICAgdGhpc1tfbmVlZERyYWluXSA9IHRydWVcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cblxuICAgIHRoaXNbX3dyaXRpbmddID0gdHJ1ZVxuICAgIHRoaXNbX3dyaXRlXShidWYpXG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIFtfd3JpdGVdIChidWYpIHtcbiAgICBmcy53cml0ZSh0aGlzW19mZF0sIGJ1ZiwgMCwgYnVmLmxlbmd0aCwgdGhpc1tfcG9zXSwgKGVyLCBidykgPT5cbiAgICAgIHRoaXNbX29ud3JpdGVdKGVyLCBidykpXG4gIH1cblxuICBbX29ud3JpdGVdIChlciwgYncpIHtcbiAgICBpZiAoZXIpXG4gICAgICB0aGlzW19vbmVycm9yXShlcilcbiAgICBlbHNlIHtcbiAgICAgIGlmICh0aGlzW19wb3NdICE9PSBudWxsKVxuICAgICAgICB0aGlzW19wb3NdICs9IGJ3XG4gICAgICBpZiAodGhpc1tfcXVldWVdLmxlbmd0aClcbiAgICAgICAgdGhpc1tfZmx1c2hdKClcbiAgICAgIGVsc2Uge1xuICAgICAgICB0aGlzW193cml0aW5nXSA9IGZhbHNlXG5cbiAgICAgICAgaWYgKHRoaXNbX2VuZGVkXSAmJiAhdGhpc1tfZmluaXNoZWRdKSB7XG4gICAgICAgICAgdGhpc1tfZmluaXNoZWRdID0gdHJ1ZVxuICAgICAgICAgIHRoaXNbX2Nsb3NlXSgpXG4gICAgICAgICAgdGhpcy5lbWl0KCdmaW5pc2gnKVxuICAgICAgICB9IGVsc2UgaWYgKHRoaXNbX25lZWREcmFpbl0pIHtcbiAgICAgICAgICB0aGlzW19uZWVkRHJhaW5dID0gZmFsc2VcbiAgICAgICAgICB0aGlzLmVtaXQoJ2RyYWluJylcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIFtfZmx1c2hdICgpIHtcbiAgICBpZiAodGhpc1tfcXVldWVdLmxlbmd0aCA9PT0gMCkge1xuICAgICAgaWYgKHRoaXNbX2VuZGVkXSlcbiAgICAgICAgdGhpc1tfb253cml0ZV0obnVsbCwgMClcbiAgICB9IGVsc2UgaWYgKHRoaXNbX3F1ZXVlXS5sZW5ndGggPT09IDEpXG4gICAgICB0aGlzW193cml0ZV0odGhpc1tfcXVldWVdLnBvcCgpKVxuICAgIGVsc2Uge1xuICAgICAgY29uc3QgaW92ZWMgPSB0aGlzW19xdWV1ZV1cbiAgICAgIHRoaXNbX3F1ZXVlXSA9IFtdXG4gICAgICB3cml0ZXYodGhpc1tfZmRdLCBpb3ZlYywgdGhpc1tfcG9zXSxcbiAgICAgICAgKGVyLCBidykgPT4gdGhpc1tfb253cml0ZV0oZXIsIGJ3KSlcbiAgICB9XG4gIH1cblxuICBbX2Nsb3NlXSAoKSB7XG4gICAgaWYgKHRoaXNbX2F1dG9DbG9zZV0gJiYgdHlwZW9mIHRoaXNbX2ZkXSA9PT0gJ251bWJlcicpIHtcbiAgICAgIGNvbnN0IGZkID0gdGhpc1tfZmRdXG4gICAgICB0aGlzW19mZF0gPSBudWxsXG4gICAgICBmcy5jbG9zZShmZCwgZXIgPT4gZXIgPyB0aGlzLmVtaXQoJ2Vycm9yJywgZXIpIDogdGhpcy5lbWl0KCdjbG9zZScpKVxuICAgIH1cbiAgfVxufVxuXG5jbGFzcyBXcml0ZVN0cmVhbVN5bmMgZXh0ZW5kcyBXcml0ZVN0cmVhbSB7XG4gIFtfb3Blbl0gKCkge1xuICAgIGxldCBmZFxuICAgIC8vIG9ubHkgd3JhcCBpbiBhIHRyeXt9IGJsb2NrIGlmIHdlIGtub3cgd2UnbGwgcmV0cnksIHRvIGF2b2lkXG4gICAgLy8gdGhlIHJldGhyb3cgb2JzY3VyaW5nIHRoZSBlcnJvcidzIHNvdXJjZSBmcmFtZSBpbiBtb3N0IGNhc2VzLlxuICAgIGlmICh0aGlzW19kZWZhdWx0RmxhZ10gJiYgdGhpc1tfZmxhZ3NdID09PSAncisnKSB7XG4gICAgICB0cnkge1xuICAgICAgICBmZCA9IGZzLm9wZW5TeW5jKHRoaXNbX3BhdGhdLCB0aGlzW19mbGFnc10sIHRoaXNbX21vZGVdKVxuICAgICAgfSBjYXRjaCAoZXIpIHtcbiAgICAgICAgaWYgKGVyLmNvZGUgPT09ICdFTk9FTlQnKSB7XG4gICAgICAgICAgdGhpc1tfZmxhZ3NdID0gJ3cnXG4gICAgICAgICAgcmV0dXJuIHRoaXNbX29wZW5dKClcbiAgICAgICAgfSBlbHNlXG4gICAgICAgICAgdGhyb3cgZXJcbiAgICAgIH1cbiAgICB9IGVsc2VcbiAgICAgIGZkID0gZnMub3BlblN5bmModGhpc1tfcGF0aF0sIHRoaXNbX2ZsYWdzXSwgdGhpc1tfbW9kZV0pXG5cbiAgICB0aGlzW19vbm9wZW5dKG51bGwsIGZkKVxuICB9XG5cbiAgW19jbG9zZV0gKCkge1xuICAgIGlmICh0aGlzW19hdXRvQ2xvc2VdICYmIHR5cGVvZiB0aGlzW19mZF0gPT09ICdudW1iZXInKSB7XG4gICAgICBjb25zdCBmZCA9IHRoaXNbX2ZkXVxuICAgICAgdGhpc1tfZmRdID0gbnVsbFxuICAgICAgZnMuY2xvc2VTeW5jKGZkKVxuICAgICAgdGhpcy5lbWl0KCdjbG9zZScpXG4gICAgfVxuICB9XG5cbiAgW193cml0ZV0gKGJ1Zikge1xuICAgIC8vIHRocm93IHRoZSBvcmlnaW5hbCwgYnV0IHRyeSB0byBjbG9zZSBpZiBpdCBmYWlsc1xuICAgIGxldCB0aHJldyA9IHRydWVcbiAgICB0cnkge1xuICAgICAgdGhpc1tfb253cml0ZV0obnVsbCxcbiAgICAgICAgZnMud3JpdGVTeW5jKHRoaXNbX2ZkXSwgYnVmLCAwLCBidWYubGVuZ3RoLCB0aGlzW19wb3NdKSlcbiAgICAgIHRocmV3ID0gZmFsc2VcbiAgICB9IGZpbmFsbHkge1xuICAgICAgaWYgKHRocmV3KVxuICAgICAgICB0cnkgeyB0aGlzW19jbG9zZV0oKSB9IGNhdGNoIChfKSB7fVxuICAgIH1cbiAgfVxufVxuXG5leHBvcnRzLlJlYWRTdHJlYW0gPSBSZWFkU3RyZWFtXG5leHBvcnRzLlJlYWRTdHJlYW1TeW5jID0gUmVhZFN0cmVhbVN5bmNcblxuZXhwb3J0cy5Xcml0ZVN0cmVhbSA9IFdyaXRlU3RyZWFtXG5leHBvcnRzLldyaXRlU3RyZWFtU3luYyA9IFdyaXRlU3RyZWFtU3luY1xuIiwgIid1c2Ugc3RyaWN0J1xuXG4vLyB0aGlzW0JVRkZFUl0gaXMgdGhlIHJlbWFpbmRlciBvZiBhIGNodW5rIGlmIHdlJ3JlIHdhaXRpbmcgZm9yXG4vLyB0aGUgZnVsbCA1MTIgYnl0ZXMgb2YgYSBoZWFkZXIgdG8gY29tZSBpbi4gIFdlIHdpbGwgQnVmZmVyLmNvbmNhdCgpXG4vLyBpdCB0byB0aGUgbmV4dCB3cml0ZSgpLCB3aGljaCBpcyBhIG1lbSBjb3B5LCBidXQgYSBzbWFsbCBvbmUuXG4vL1xuLy8gdGhpc1tRVUVVRV0gaXMgYSBZYWxsaXN0IG9mIGVudHJpZXMgdGhhdCBoYXZlbid0IGJlZW4gZW1pdHRlZFxuLy8geWV0IHRoaXMgY2FuIG9ubHkgZ2V0IGZpbGxlZCB1cCBpZiB0aGUgdXNlciBrZWVwcyB3cml0ZSgpaW5nIGFmdGVyXG4vLyBhIHdyaXRlKCkgcmV0dXJucyBmYWxzZSwgb3IgZG9lcyBhIHdyaXRlKCkgd2l0aCBtb3JlIHRoYW4gb25lIGVudHJ5XG4vL1xuLy8gV2UgZG9uJ3QgYnVmZmVyIGNodW5rcywgd2UgYWx3YXlzIHBhcnNlIHRoZW0gYW5kIGVpdGhlciBjcmVhdGUgYW5cbi8vIGVudHJ5LCBvciBwdXNoIGl0IGludG8gdGhlIGFjdGl2ZSBlbnRyeS4gIFRoZSBSZWFkRW50cnkgY2xhc3Mga25vd3Ncbi8vIHRvIHRocm93IGRhdGEgYXdheSBpZiAuaWdub3JlPXRydWVcbi8vXG4vLyBTaGlmdCBlbnRyeSBvZmYgdGhlIGJ1ZmZlciB3aGVuIGl0IGVtaXRzICdlbmQnLCBhbmQgZW1pdCAnZW50cnknIGZvclxuLy8gdGhlIG5leHQgb25lIGluIHRoZSBsaXN0LlxuLy9cbi8vIEF0IGFueSB0aW1lLCB3ZSdyZSBwdXNoaW5nIGJvZHkgY2h1bmtzIGludG8gdGhlIGVudHJ5IGF0IFdSSVRFRU5UUlksXG4vLyBhbmQgd2FpdGluZyBmb3IgJ2VuZCcgb24gdGhlIGVudHJ5IGF0IFJFQURFTlRSWVxuLy9cbi8vIGlnbm9yZWQgZW50cmllcyBnZXQgLnJlc3VtZSgpIGNhbGxlZCBvbiB0aGVtIHN0cmFpZ2h0IGF3YXlcblxuY29uc3Qgd2FybmVyID0gcmVxdWlyZSgnLi93YXJuLW1peGluLmpzJylcbmNvbnN0IEhlYWRlciA9IHJlcXVpcmUoJy4vaGVhZGVyLmpzJylcbmNvbnN0IEVFID0gcmVxdWlyZSgnZXZlbnRzJylcbmNvbnN0IFlhbGxpc3QgPSByZXF1aXJlKCd5YWxsaXN0JylcbmNvbnN0IG1heE1ldGFFbnRyeVNpemUgPSAxMDI0ICogMTAyNFxuY29uc3QgRW50cnkgPSByZXF1aXJlKCcuL3JlYWQtZW50cnkuanMnKVxuY29uc3QgUGF4ID0gcmVxdWlyZSgnLi9wYXguanMnKVxuY29uc3QgemxpYiA9IHJlcXVpcmUoJ21pbml6bGliJylcbmNvbnN0IHsgbmV4dFRpY2sgfSA9IHJlcXVpcmUoJ3Byb2Nlc3MnKVxuXG5jb25zdCBnemlwSGVhZGVyID0gQnVmZmVyLmZyb20oWzB4MWYsIDB4OGJdKVxuY29uc3QgU1RBVEUgPSBTeW1ib2woJ3N0YXRlJylcbmNvbnN0IFdSSVRFRU5UUlkgPSBTeW1ib2woJ3dyaXRlRW50cnknKVxuY29uc3QgUkVBREVOVFJZID0gU3ltYm9sKCdyZWFkRW50cnknKVxuY29uc3QgTkVYVEVOVFJZID0gU3ltYm9sKCduZXh0RW50cnknKVxuY29uc3QgUFJPQ0VTU0VOVFJZID0gU3ltYm9sKCdwcm9jZXNzRW50cnknKVxuY29uc3QgRVggPSBTeW1ib2woJ2V4dGVuZGVkSGVhZGVyJylcbmNvbnN0IEdFWCA9IFN5bWJvbCgnZ2xvYmFsRXh0ZW5kZWRIZWFkZXInKVxuY29uc3QgTUVUQSA9IFN5bWJvbCgnbWV0YScpXG5jb25zdCBFTUlUTUVUQSA9IFN5bWJvbCgnZW1pdE1ldGEnKVxuY29uc3QgQlVGRkVSID0gU3ltYm9sKCdidWZmZXInKVxuY29uc3QgUVVFVUUgPSBTeW1ib2woJ3F1ZXVlJylcbmNvbnN0IEVOREVEID0gU3ltYm9sKCdlbmRlZCcpXG5jb25zdCBFTUlUVEVERU5EID0gU3ltYm9sKCdlbWl0dGVkRW5kJylcbmNvbnN0IEVNSVQgPSBTeW1ib2woJ2VtaXQnKVxuY29uc3QgVU5aSVAgPSBTeW1ib2woJ3VuemlwJylcbmNvbnN0IENPTlNVTUVDSFVOSyA9IFN5bWJvbCgnY29uc3VtZUNodW5rJylcbmNvbnN0IENPTlNVTUVDSFVOS1NVQiA9IFN5bWJvbCgnY29uc3VtZUNodW5rU3ViJylcbmNvbnN0IENPTlNVTUVCT0RZID0gU3ltYm9sKCdjb25zdW1lQm9keScpXG5jb25zdCBDT05TVU1FTUVUQSA9IFN5bWJvbCgnY29uc3VtZU1ldGEnKVxuY29uc3QgQ09OU1VNRUhFQURFUiA9IFN5bWJvbCgnY29uc3VtZUhlYWRlcicpXG5jb25zdCBDT05TVU1JTkcgPSBTeW1ib2woJ2NvbnN1bWluZycpXG5jb25zdCBCVUZGRVJDT05DQVQgPSBTeW1ib2woJ2J1ZmZlckNvbmNhdCcpXG5jb25zdCBNQVlCRUVORCA9IFN5bWJvbCgnbWF5YmVFbmQnKVxuY29uc3QgV1JJVElORyA9IFN5bWJvbCgnd3JpdGluZycpXG5jb25zdCBBQk9SVEVEID0gU3ltYm9sKCdhYm9ydGVkJylcbmNvbnN0IERPTkUgPSBTeW1ib2woJ29uRG9uZScpXG5jb25zdCBTQVdfVkFMSURfRU5UUlkgPSBTeW1ib2woJ3Nhd1ZhbGlkRW50cnknKVxuY29uc3QgU0FXX05VTExfQkxPQ0sgPSBTeW1ib2woJ3Nhd051bGxCbG9jaycpXG5jb25zdCBTQVdfRU9GID0gU3ltYm9sKCdzYXdFT0YnKVxuY29uc3QgQ0xPU0VTVFJFQU0gPSBTeW1ib2woJ2Nsb3NlU3RyZWFtJylcblxuY29uc3Qgbm9vcCA9IF8gPT4gdHJ1ZVxuXG5tb2R1bGUuZXhwb3J0cyA9IHdhcm5lcihjbGFzcyBQYXJzZXIgZXh0ZW5kcyBFRSB7XG4gIGNvbnN0cnVjdG9yIChvcHQpIHtcbiAgICBvcHQgPSBvcHQgfHwge31cbiAgICBzdXBlcihvcHQpXG5cbiAgICB0aGlzLmZpbGUgPSBvcHQuZmlsZSB8fCAnJ1xuXG4gICAgLy8gc2V0IHRvIGJvb2xlYW4gZmFsc2Ugd2hlbiBhbiBlbnRyeSBzdGFydHMuICAxMDI0IGJ5dGVzIG9mIFxcMFxuICAgIC8vIGlzIHRlY2huaWNhbGx5IGEgdmFsaWQgdGFyYmFsbCwgYWxiZWl0IGEgYm9yaW5nIG9uZS5cbiAgICB0aGlzW1NBV19WQUxJRF9FTlRSWV0gPSBudWxsXG5cbiAgICAvLyB0aGVzZSBCQURBUkNISVZFIGVycm9ycyBjYW4ndCBiZSBkZXRlY3RlZCBlYXJseS4gbGlzdGVuIG9uIERPTkUuXG4gICAgdGhpcy5vbihET05FLCBfID0+IHtcbiAgICAgIGlmICh0aGlzW1NUQVRFXSA9PT0gJ2JlZ2luJyB8fCB0aGlzW1NBV19WQUxJRF9FTlRSWV0gPT09IGZhbHNlKSB7XG4gICAgICAgIC8vIGVpdGhlciBsZXNzIHRoYW4gMSBibG9jayBvZiBkYXRhLCBvciBhbGwgZW50cmllcyB3ZXJlIGludmFsaWQuXG4gICAgICAgIC8vIEVpdGhlciB3YXksIHByb2JhYmx5IG5vdCBldmVuIGEgdGFyYmFsbC5cbiAgICAgICAgdGhpcy53YXJuKCdUQVJfQkFEX0FSQ0hJVkUnLCAnVW5yZWNvZ25pemVkIGFyY2hpdmUgZm9ybWF0JylcbiAgICAgIH1cbiAgICB9KVxuXG4gICAgaWYgKG9wdC5vbmRvbmUpIHtcbiAgICAgIHRoaXMub24oRE9ORSwgb3B0Lm9uZG9uZSlcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5vbihET05FLCBfID0+IHtcbiAgICAgICAgdGhpcy5lbWl0KCdwcmVmaW5pc2gnKVxuICAgICAgICB0aGlzLmVtaXQoJ2ZpbmlzaCcpXG4gICAgICAgIHRoaXMuZW1pdCgnZW5kJylcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgdGhpcy5zdHJpY3QgPSAhIW9wdC5zdHJpY3RcbiAgICB0aGlzLm1heE1ldGFFbnRyeVNpemUgPSBvcHQubWF4TWV0YUVudHJ5U2l6ZSB8fCBtYXhNZXRhRW50cnlTaXplXG4gICAgdGhpcy5maWx0ZXIgPSB0eXBlb2Ygb3B0LmZpbHRlciA9PT0gJ2Z1bmN0aW9uJyA/IG9wdC5maWx0ZXIgOiBub29wXG5cbiAgICAvLyBoYXZlIHRvIHNldCB0aGlzIHNvIHRoYXQgc3RyZWFtcyBhcmUgb2sgcGlwaW5nIGludG8gaXRcbiAgICB0aGlzLndyaXRhYmxlID0gdHJ1ZVxuICAgIHRoaXMucmVhZGFibGUgPSBmYWxzZVxuXG4gICAgdGhpc1tRVUVVRV0gPSBuZXcgWWFsbGlzdCgpXG4gICAgdGhpc1tCVUZGRVJdID0gbnVsbFxuICAgIHRoaXNbUkVBREVOVFJZXSA9IG51bGxcbiAgICB0aGlzW1dSSVRFRU5UUlldID0gbnVsbFxuICAgIHRoaXNbU1RBVEVdID0gJ2JlZ2luJ1xuICAgIHRoaXNbTUVUQV0gPSAnJ1xuICAgIHRoaXNbRVhdID0gbnVsbFxuICAgIHRoaXNbR0VYXSA9IG51bGxcbiAgICB0aGlzW0VOREVEXSA9IGZhbHNlXG4gICAgdGhpc1tVTlpJUF0gPSBudWxsXG4gICAgdGhpc1tBQk9SVEVEXSA9IGZhbHNlXG4gICAgdGhpc1tTQVdfTlVMTF9CTE9DS10gPSBmYWxzZVxuICAgIHRoaXNbU0FXX0VPRl0gPSBmYWxzZVxuXG4gICAgdGhpcy5vbignZW5kJywgKCkgPT4gdGhpc1tDTE9TRVNUUkVBTV0oKSlcblxuICAgIGlmICh0eXBlb2Ygb3B0Lm9ud2FybiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhpcy5vbignd2FybicsIG9wdC5vbndhcm4pXG4gICAgfVxuICAgIGlmICh0eXBlb2Ygb3B0Lm9uZW50cnkgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHRoaXMub24oJ2VudHJ5Jywgb3B0Lm9uZW50cnkpXG4gICAgfVxuICB9XG5cbiAgW0NPTlNVTUVIRUFERVJdIChjaHVuaywgcG9zaXRpb24pIHtcbiAgICBpZiAodGhpc1tTQVdfVkFMSURfRU5UUlldID09PSBudWxsKSB7XG4gICAgICB0aGlzW1NBV19WQUxJRF9FTlRSWV0gPSBmYWxzZVxuICAgIH1cbiAgICBsZXQgaGVhZGVyXG4gICAgdHJ5IHtcbiAgICAgIGhlYWRlciA9IG5ldyBIZWFkZXIoY2h1bmssIHBvc2l0aW9uLCB0aGlzW0VYXSwgdGhpc1tHRVhdKVxuICAgIH0gY2F0Y2ggKGVyKSB7XG4gICAgICByZXR1cm4gdGhpcy53YXJuKCdUQVJfRU5UUllfSU5WQUxJRCcsIGVyKVxuICAgIH1cblxuICAgIGlmIChoZWFkZXIubnVsbEJsb2NrKSB7XG4gICAgICBpZiAodGhpc1tTQVdfTlVMTF9CTE9DS10pIHtcbiAgICAgICAgdGhpc1tTQVdfRU9GXSA9IHRydWVcbiAgICAgICAgLy8gZW5kaW5nIGFuIGFyY2hpdmUgd2l0aCBubyBlbnRyaWVzLiAgcG9pbnRsZXNzLCBidXQgbGVnYWwuXG4gICAgICAgIGlmICh0aGlzW1NUQVRFXSA9PT0gJ2JlZ2luJykge1xuICAgICAgICAgIHRoaXNbU1RBVEVdID0gJ2hlYWRlcidcbiAgICAgICAgfVxuICAgICAgICB0aGlzW0VNSVRdKCdlb2YnKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpc1tTQVdfTlVMTF9CTE9DS10gPSB0cnVlXG4gICAgICAgIHRoaXNbRU1JVF0oJ251bGxCbG9jaycpXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXNbU0FXX05VTExfQkxPQ0tdID0gZmFsc2VcbiAgICAgIGlmICghaGVhZGVyLmNrc3VtVmFsaWQpIHtcbiAgICAgICAgdGhpcy53YXJuKCdUQVJfRU5UUllfSU5WQUxJRCcsICdjaGVja3N1bSBmYWlsdXJlJywgeyBoZWFkZXIgfSlcbiAgICAgIH0gZWxzZSBpZiAoIWhlYWRlci5wYXRoKSB7XG4gICAgICAgIHRoaXMud2FybignVEFSX0VOVFJZX0lOVkFMSUQnLCAncGF0aCBpcyByZXF1aXJlZCcsIHsgaGVhZGVyIH0pXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCB0eXBlID0gaGVhZGVyLnR5cGVcbiAgICAgICAgaWYgKC9eKFN5bWJvbGljKT9MaW5rJC8udGVzdCh0eXBlKSAmJiAhaGVhZGVyLmxpbmtwYXRoKSB7XG4gICAgICAgICAgdGhpcy53YXJuKCdUQVJfRU5UUllfSU5WQUxJRCcsICdsaW5rcGF0aCByZXF1aXJlZCcsIHsgaGVhZGVyIH0pXG4gICAgICAgIH0gZWxzZSBpZiAoIS9eKFN5bWJvbGljKT9MaW5rJC8udGVzdCh0eXBlKSAmJiBoZWFkZXIubGlua3BhdGgpIHtcbiAgICAgICAgICB0aGlzLndhcm4oJ1RBUl9FTlRSWV9JTlZBTElEJywgJ2xpbmtwYXRoIGZvcmJpZGRlbicsIHsgaGVhZGVyIH0pXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgZW50cnkgPSB0aGlzW1dSSVRFRU5UUlldID0gbmV3IEVudHJ5KGhlYWRlciwgdGhpc1tFWF0sIHRoaXNbR0VYXSlcblxuICAgICAgICAgIC8vIHdlIGRvIHRoaXMgZm9yIG1ldGEgJiBpZ25vcmVkIGVudHJpZXMgYXMgd2VsbCwgYmVjYXVzZSB0aGV5XG4gICAgICAgICAgLy8gYXJlIHN0aWxsIHZhbGlkIHRhciwgb3IgZWxzZSB3ZSB3b3VsZG4ndCBrbm93IHRvIGlnbm9yZSB0aGVtXG4gICAgICAgICAgaWYgKCF0aGlzW1NBV19WQUxJRF9FTlRSWV0pIHtcbiAgICAgICAgICAgIGlmIChlbnRyeS5yZW1haW4pIHtcbiAgICAgICAgICAgICAgLy8gdGhpcyBtaWdodCBiZSB0aGUgb25lIVxuICAgICAgICAgICAgICBjb25zdCBvbmVuZCA9ICgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIWVudHJ5LmludmFsaWQpIHtcbiAgICAgICAgICAgICAgICAgIHRoaXNbU0FXX1ZBTElEX0VOVFJZXSA9IHRydWVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgZW50cnkub24oJ2VuZCcsIG9uZW5kKVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdGhpc1tTQVdfVkFMSURfRU5UUlldID0gdHJ1ZVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChlbnRyeS5tZXRhKSB7XG4gICAgICAgICAgICBpZiAoZW50cnkuc2l6ZSA+IHRoaXMubWF4TWV0YUVudHJ5U2l6ZSkge1xuICAgICAgICAgICAgICBlbnRyeS5pZ25vcmUgPSB0cnVlXG4gICAgICAgICAgICAgIHRoaXNbRU1JVF0oJ2lnbm9yZWRFbnRyeScsIGVudHJ5KVxuICAgICAgICAgICAgICB0aGlzW1NUQVRFXSA9ICdpZ25vcmUnXG4gICAgICAgICAgICAgIGVudHJ5LnJlc3VtZSgpXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGVudHJ5LnNpemUgPiAwKSB7XG4gICAgICAgICAgICAgIHRoaXNbTUVUQV0gPSAnJ1xuICAgICAgICAgICAgICBlbnRyeS5vbignZGF0YScsIGMgPT4gdGhpc1tNRVRBXSArPSBjKVxuICAgICAgICAgICAgICB0aGlzW1NUQVRFXSA9ICdtZXRhJ1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzW0VYXSA9IG51bGxcbiAgICAgICAgICAgIGVudHJ5Lmlnbm9yZSA9IGVudHJ5Lmlnbm9yZSB8fCAhdGhpcy5maWx0ZXIoZW50cnkucGF0aCwgZW50cnkpXG5cbiAgICAgICAgICAgIGlmIChlbnRyeS5pZ25vcmUpIHtcbiAgICAgICAgICAgICAgLy8gcHJvYmFibHkgdmFsaWQsIGp1c3Qgbm90IHNvbWV0aGluZyB3ZSBjYXJlIGFib3V0XG4gICAgICAgICAgICAgIHRoaXNbRU1JVF0oJ2lnbm9yZWRFbnRyeScsIGVudHJ5KVxuICAgICAgICAgICAgICB0aGlzW1NUQVRFXSA9IGVudHJ5LnJlbWFpbiA/ICdpZ25vcmUnIDogJ2hlYWRlcidcbiAgICAgICAgICAgICAgZW50cnkucmVzdW1lKClcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGlmIChlbnRyeS5yZW1haW4pIHtcbiAgICAgICAgICAgICAgICB0aGlzW1NUQVRFXSA9ICdib2R5J1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXNbU1RBVEVdID0gJ2hlYWRlcidcbiAgICAgICAgICAgICAgICBlbnRyeS5lbmQoKVxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKCF0aGlzW1JFQURFTlRSWV0pIHtcbiAgICAgICAgICAgICAgICB0aGlzW1FVRVVFXS5wdXNoKGVudHJ5KVxuICAgICAgICAgICAgICAgIHRoaXNbTkVYVEVOVFJZXSgpXG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpc1tRVUVVRV0ucHVzaChlbnRyeSlcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIFtDTE9TRVNUUkVBTV0gKCkge1xuICAgIG5leHRUaWNrKCgpID0+IHRoaXMuZW1pdCgnY2xvc2UnKSlcbiAgfVxuXG4gIFtQUk9DRVNTRU5UUlldIChlbnRyeSkge1xuICAgIGxldCBnbyA9IHRydWVcblxuICAgIGlmICghZW50cnkpIHtcbiAgICAgIHRoaXNbUkVBREVOVFJZXSA9IG51bGxcbiAgICAgIGdvID0gZmFsc2VcbiAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoZW50cnkpKSB7XG4gICAgICB0aGlzLmVtaXQuYXBwbHkodGhpcywgZW50cnkpXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXNbUkVBREVOVFJZXSA9IGVudHJ5XG4gICAgICB0aGlzLmVtaXQoJ2VudHJ5JywgZW50cnkpXG4gICAgICBpZiAoIWVudHJ5LmVtaXR0ZWRFbmQpIHtcbiAgICAgICAgZW50cnkub24oJ2VuZCcsIF8gPT4gdGhpc1tORVhURU5UUlldKCkpXG4gICAgICAgIGdvID0gZmFsc2VcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZ29cbiAgfVxuXG4gIFtORVhURU5UUlldICgpIHtcbiAgICBkbyB7fSB3aGlsZSAodGhpc1tQUk9DRVNTRU5UUlldKHRoaXNbUVVFVUVdLnNoaWZ0KCkpKVxuXG4gICAgaWYgKCF0aGlzW1FVRVVFXS5sZW5ndGgpIHtcbiAgICAgIC8vIEF0IHRoaXMgcG9pbnQsIHRoZXJlJ3Mgbm90aGluZyBpbiB0aGUgcXVldWUsIGJ1dCB3ZSBtYXkgaGF2ZSBhblxuICAgICAgLy8gZW50cnkgd2hpY2ggaXMgYmVpbmcgY29uc3VtZWQgKHJlYWRFbnRyeSkuXG4gICAgICAvLyBJZiB3ZSBkb24ndCwgdGhlbiB3ZSBkZWZpbml0ZWx5IGNhbiBoYW5kbGUgbW9yZSBkYXRhLlxuICAgICAgLy8gSWYgd2UgZG8sIGFuZCBlaXRoZXIgaXQncyBmbG93aW5nLCBvciBpdCBoYXMgbmV2ZXIgaGFkIGFueSBkYXRhXG4gICAgICAvLyB3cml0dGVuIHRvIGl0LCB0aGVuIGl0IG5lZWRzIG1vcmUuXG4gICAgICAvLyBUaGUgb25seSBvdGhlciBwb3NzaWJpbGl0eSBpcyB0aGF0IGl0IGhhcyByZXR1cm5lZCBmYWxzZSBmcm9tIGFcbiAgICAgIC8vIHdyaXRlKCkgY2FsbCwgc28gd2Ugd2FpdCBmb3IgdGhlIG5leHQgZHJhaW4gdG8gY29udGludWUuXG4gICAgICBjb25zdCByZSA9IHRoaXNbUkVBREVOVFJZXVxuICAgICAgY29uc3QgZHJhaW5Ob3cgPSAhcmUgfHwgcmUuZmxvd2luZyB8fCByZS5zaXplID09PSByZS5yZW1haW5cbiAgICAgIGlmIChkcmFpbk5vdykge1xuICAgICAgICBpZiAoIXRoaXNbV1JJVElOR10pIHtcbiAgICAgICAgICB0aGlzLmVtaXQoJ2RyYWluJylcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmUub25jZSgnZHJhaW4nLCBfID0+IHRoaXMuZW1pdCgnZHJhaW4nKSlcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBbQ09OU1VNRUJPRFldIChjaHVuaywgcG9zaXRpb24pIHtcbiAgICAvLyB3cml0ZSB1cCB0byBidXQgbm8gIG1vcmUgdGhhbiB3cml0ZUVudHJ5LmJsb2NrUmVtYWluXG4gICAgY29uc3QgZW50cnkgPSB0aGlzW1dSSVRFRU5UUlldXG4gICAgY29uc3QgYnIgPSBlbnRyeS5ibG9ja1JlbWFpblxuICAgIGNvbnN0IGMgPSAoYnIgPj0gY2h1bmsubGVuZ3RoICYmIHBvc2l0aW9uID09PSAwKSA/IGNodW5rXG4gICAgICA6IGNodW5rLnNsaWNlKHBvc2l0aW9uLCBwb3NpdGlvbiArIGJyKVxuXG4gICAgZW50cnkud3JpdGUoYylcblxuICAgIGlmICghZW50cnkuYmxvY2tSZW1haW4pIHtcbiAgICAgIHRoaXNbU1RBVEVdID0gJ2hlYWRlcidcbiAgICAgIHRoaXNbV1JJVEVFTlRSWV0gPSBudWxsXG4gICAgICBlbnRyeS5lbmQoKVxuICAgIH1cblxuICAgIHJldHVybiBjLmxlbmd0aFxuICB9XG5cbiAgW0NPTlNVTUVNRVRBXSAoY2h1bmssIHBvc2l0aW9uKSB7XG4gICAgY29uc3QgZW50cnkgPSB0aGlzW1dSSVRFRU5UUlldXG4gICAgY29uc3QgcmV0ID0gdGhpc1tDT05TVU1FQk9EWV0oY2h1bmssIHBvc2l0aW9uKVxuXG4gICAgLy8gaWYgd2UgZmluaXNoZWQsIHRoZW4gdGhlIGVudHJ5IGlzIHJlc2V0XG4gICAgaWYgKCF0aGlzW1dSSVRFRU5UUlldKSB7XG4gICAgICB0aGlzW0VNSVRNRVRBXShlbnRyeSlcbiAgICB9XG5cbiAgICByZXR1cm4gcmV0XG4gIH1cblxuICBbRU1JVF0gKGV2LCBkYXRhLCBleHRyYSkge1xuICAgIGlmICghdGhpc1tRVUVVRV0ubGVuZ3RoICYmICF0aGlzW1JFQURFTlRSWV0pIHtcbiAgICAgIHRoaXMuZW1pdChldiwgZGF0YSwgZXh0cmEpXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXNbUVVFVUVdLnB1c2goW2V2LCBkYXRhLCBleHRyYV0pXG4gICAgfVxuICB9XG5cbiAgW0VNSVRNRVRBXSAoZW50cnkpIHtcbiAgICB0aGlzW0VNSVRdKCdtZXRhJywgdGhpc1tNRVRBXSlcbiAgICBzd2l0Y2ggKGVudHJ5LnR5cGUpIHtcbiAgICAgIGNhc2UgJ0V4dGVuZGVkSGVhZGVyJzpcbiAgICAgIGNhc2UgJ09sZEV4dGVuZGVkSGVhZGVyJzpcbiAgICAgICAgdGhpc1tFWF0gPSBQYXgucGFyc2UodGhpc1tNRVRBXSwgdGhpc1tFWF0sIGZhbHNlKVxuICAgICAgICBicmVha1xuXG4gICAgICBjYXNlICdHbG9iYWxFeHRlbmRlZEhlYWRlcic6XG4gICAgICAgIHRoaXNbR0VYXSA9IFBheC5wYXJzZSh0aGlzW01FVEFdLCB0aGlzW0dFWF0sIHRydWUpXG4gICAgICAgIGJyZWFrXG5cbiAgICAgIGNhc2UgJ05leHRGaWxlSGFzTG9uZ1BhdGgnOlxuICAgICAgY2FzZSAnT2xkR251TG9uZ1BhdGgnOlxuICAgICAgICB0aGlzW0VYXSA9IHRoaXNbRVhdIHx8IE9iamVjdC5jcmVhdGUobnVsbClcbiAgICAgICAgdGhpc1tFWF0ucGF0aCA9IHRoaXNbTUVUQV0ucmVwbGFjZSgvXFwwLiovLCAnJylcbiAgICAgICAgYnJlYWtcblxuICAgICAgY2FzZSAnTmV4dEZpbGVIYXNMb25nTGlua3BhdGgnOlxuICAgICAgICB0aGlzW0VYXSA9IHRoaXNbRVhdIHx8IE9iamVjdC5jcmVhdGUobnVsbClcbiAgICAgICAgdGhpc1tFWF0ubGlua3BhdGggPSB0aGlzW01FVEFdLnJlcGxhY2UoL1xcMC4qLywgJycpXG4gICAgICAgIGJyZWFrXG5cbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICBkZWZhdWx0OiB0aHJvdyBuZXcgRXJyb3IoJ3Vua25vd24gbWV0YTogJyArIGVudHJ5LnR5cGUpXG4gICAgfVxuICB9XG5cbiAgYWJvcnQgKGVycm9yKSB7XG4gICAgdGhpc1tBQk9SVEVEXSA9IHRydWVcbiAgICB0aGlzLmVtaXQoJ2Fib3J0JywgZXJyb3IpXG4gICAgLy8gYWx3YXlzIHRocm93cywgZXZlbiBpbiBub24tc3RyaWN0IG1vZGVcbiAgICB0aGlzLndhcm4oJ1RBUl9BQk9SVCcsIGVycm9yLCB7IHJlY292ZXJhYmxlOiBmYWxzZSB9KVxuICB9XG5cbiAgd3JpdGUgKGNodW5rKSB7XG4gICAgaWYgKHRoaXNbQUJPUlRFRF0pIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIC8vIGZpcnN0IHdyaXRlLCBtaWdodCBiZSBnemlwcGVkXG4gICAgaWYgKHRoaXNbVU5aSVBdID09PSBudWxsICYmIGNodW5rKSB7XG4gICAgICBpZiAodGhpc1tCVUZGRVJdKSB7XG4gICAgICAgIGNodW5rID0gQnVmZmVyLmNvbmNhdChbdGhpc1tCVUZGRVJdLCBjaHVua10pXG4gICAgICAgIHRoaXNbQlVGRkVSXSA9IG51bGxcbiAgICAgIH1cbiAgICAgIGlmIChjaHVuay5sZW5ndGggPCBnemlwSGVhZGVyLmxlbmd0aCkge1xuICAgICAgICB0aGlzW0JVRkZFUl0gPSBjaHVua1xuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfVxuICAgICAgZm9yIChsZXQgaSA9IDA7IHRoaXNbVU5aSVBdID09PSBudWxsICYmIGkgPCBnemlwSGVhZGVyLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmIChjaHVua1tpXSAhPT0gZ3ppcEhlYWRlcltpXSkge1xuICAgICAgICAgIHRoaXNbVU5aSVBdID0gZmFsc2VcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHRoaXNbVU5aSVBdID09PSBudWxsKSB7XG4gICAgICAgIGNvbnN0IGVuZGVkID0gdGhpc1tFTkRFRF1cbiAgICAgICAgdGhpc1tFTkRFRF0gPSBmYWxzZVxuICAgICAgICB0aGlzW1VOWklQXSA9IG5ldyB6bGliLlVuemlwKClcbiAgICAgICAgdGhpc1tVTlpJUF0ub24oJ2RhdGEnLCBjaHVuayA9PiB0aGlzW0NPTlNVTUVDSFVOS10oY2h1bmspKVxuICAgICAgICB0aGlzW1VOWklQXS5vbignZXJyb3InLCBlciA9PiB0aGlzLmFib3J0KGVyKSlcbiAgICAgICAgdGhpc1tVTlpJUF0ub24oJ2VuZCcsIF8gPT4ge1xuICAgICAgICAgIHRoaXNbRU5ERURdID0gdHJ1ZVxuICAgICAgICAgIHRoaXNbQ09OU1VNRUNIVU5LXSgpXG4gICAgICAgIH0pXG4gICAgICAgIHRoaXNbV1JJVElOR10gPSB0cnVlXG4gICAgICAgIGNvbnN0IHJldCA9IHRoaXNbVU5aSVBdW2VuZGVkID8gJ2VuZCcgOiAnd3JpdGUnXShjaHVuaylcbiAgICAgICAgdGhpc1tXUklUSU5HXSA9IGZhbHNlXG4gICAgICAgIHJldHVybiByZXRcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzW1dSSVRJTkddID0gdHJ1ZVxuICAgIGlmICh0aGlzW1VOWklQXSkge1xuICAgICAgdGhpc1tVTlpJUF0ud3JpdGUoY2h1bmspXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXNbQ09OU1VNRUNIVU5LXShjaHVuaylcbiAgICB9XG4gICAgdGhpc1tXUklUSU5HXSA9IGZhbHNlXG5cbiAgICAvLyByZXR1cm4gZmFsc2UgaWYgdGhlcmUncyBhIHF1ZXVlLCBvciBpZiB0aGUgY3VycmVudCBlbnRyeSBpc24ndCBmbG93aW5nXG4gICAgY29uc3QgcmV0ID1cbiAgICAgIHRoaXNbUVVFVUVdLmxlbmd0aCA/IGZhbHNlIDpcbiAgICAgIHRoaXNbUkVBREVOVFJZXSA/IHRoaXNbUkVBREVOVFJZXS5mbG93aW5nIDpcbiAgICAgIHRydWVcblxuICAgIC8vIGlmIHdlIGhhdmUgbm8gcXVldWUsIHRoZW4gdGhhdCBtZWFucyBhIGNsb2dnZWQgUkVBREVOVFJZXG4gICAgaWYgKCFyZXQgJiYgIXRoaXNbUVVFVUVdLmxlbmd0aCkge1xuICAgICAgdGhpc1tSRUFERU5UUlldLm9uY2UoJ2RyYWluJywgXyA9PiB0aGlzLmVtaXQoJ2RyYWluJykpXG4gICAgfVxuXG4gICAgcmV0dXJuIHJldFxuICB9XG5cbiAgW0JVRkZFUkNPTkNBVF0gKGMpIHtcbiAgICBpZiAoYyAmJiAhdGhpc1tBQk9SVEVEXSkge1xuICAgICAgdGhpc1tCVUZGRVJdID0gdGhpc1tCVUZGRVJdID8gQnVmZmVyLmNvbmNhdChbdGhpc1tCVUZGRVJdLCBjXSkgOiBjXG4gICAgfVxuICB9XG5cbiAgW01BWUJFRU5EXSAoKSB7XG4gICAgaWYgKHRoaXNbRU5ERURdICYmXG4gICAgICAgICF0aGlzW0VNSVRURURFTkRdICYmXG4gICAgICAgICF0aGlzW0FCT1JURURdICYmXG4gICAgICAgICF0aGlzW0NPTlNVTUlOR10pIHtcbiAgICAgIHRoaXNbRU1JVFRFREVORF0gPSB0cnVlXG4gICAgICBjb25zdCBlbnRyeSA9IHRoaXNbV1JJVEVFTlRSWV1cbiAgICAgIGlmIChlbnRyeSAmJiBlbnRyeS5ibG9ja1JlbWFpbikge1xuICAgICAgICAvLyB0cnVuY2F0ZWQsIGxpa2VseSBhIGRhbWFnZWQgZmlsZVxuICAgICAgICBjb25zdCBoYXZlID0gdGhpc1tCVUZGRVJdID8gdGhpc1tCVUZGRVJdLmxlbmd0aCA6IDBcbiAgICAgICAgdGhpcy53YXJuKCdUQVJfQkFEX0FSQ0hJVkUnLCBgVHJ1bmNhdGVkIGlucHV0IChuZWVkZWQgJHtcbiAgICAgICAgICBlbnRyeS5ibG9ja1JlbWFpbn0gbW9yZSBieXRlcywgb25seSAke2hhdmV9IGF2YWlsYWJsZSlgLCB7IGVudHJ5IH0pXG4gICAgICAgIGlmICh0aGlzW0JVRkZFUl0pIHtcbiAgICAgICAgICBlbnRyeS53cml0ZSh0aGlzW0JVRkZFUl0pXG4gICAgICAgIH1cbiAgICAgICAgZW50cnkuZW5kKClcbiAgICAgIH1cbiAgICAgIHRoaXNbRU1JVF0oRE9ORSlcbiAgICB9XG4gIH1cblxuICBbQ09OU1VNRUNIVU5LXSAoY2h1bmspIHtcbiAgICBpZiAodGhpc1tDT05TVU1JTkddKSB7XG4gICAgICB0aGlzW0JVRkZFUkNPTkNBVF0oY2h1bmspXG4gICAgfSBlbHNlIGlmICghY2h1bmsgJiYgIXRoaXNbQlVGRkVSXSkge1xuICAgICAgdGhpc1tNQVlCRUVORF0oKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzW0NPTlNVTUlOR10gPSB0cnVlXG4gICAgICBpZiAodGhpc1tCVUZGRVJdKSB7XG4gICAgICAgIHRoaXNbQlVGRkVSQ09OQ0FUXShjaHVuaylcbiAgICAgICAgY29uc3QgYyA9IHRoaXNbQlVGRkVSXVxuICAgICAgICB0aGlzW0JVRkZFUl0gPSBudWxsXG4gICAgICAgIHRoaXNbQ09OU1VNRUNIVU5LU1VCXShjKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpc1tDT05TVU1FQ0hVTktTVUJdKGNodW5rKVxuICAgICAgfVxuXG4gICAgICB3aGlsZSAodGhpc1tCVUZGRVJdICYmXG4gICAgICAgICAgdGhpc1tCVUZGRVJdLmxlbmd0aCA+PSA1MTIgJiZcbiAgICAgICAgICAhdGhpc1tBQk9SVEVEXSAmJlxuICAgICAgICAgICF0aGlzW1NBV19FT0ZdKSB7XG4gICAgICAgIGNvbnN0IGMgPSB0aGlzW0JVRkZFUl1cbiAgICAgICAgdGhpc1tCVUZGRVJdID0gbnVsbFxuICAgICAgICB0aGlzW0NPTlNVTUVDSFVOS1NVQl0oYylcbiAgICAgIH1cbiAgICAgIHRoaXNbQ09OU1VNSU5HXSA9IGZhbHNlXG4gICAgfVxuXG4gICAgaWYgKCF0aGlzW0JVRkZFUl0gfHwgdGhpc1tFTkRFRF0pIHtcbiAgICAgIHRoaXNbTUFZQkVFTkRdKClcbiAgICB9XG4gIH1cblxuICBbQ09OU1VNRUNIVU5LU1VCXSAoY2h1bmspIHtcbiAgICAvLyB3ZSBrbm93IHRoYXQgd2UgYXJlIGluIENPTlNVTUlORyBtb2RlLCBzbyBhbnl0aGluZyB3cml0dGVuIGdvZXMgaW50b1xuICAgIC8vIHRoZSBidWZmZXIuICBBZHZhbmNlIHRoZSBwb3NpdGlvbiBhbmQgcHV0IGFueSByZW1haW5kZXIgaW4gdGhlIGJ1ZmZlci5cbiAgICBsZXQgcG9zaXRpb24gPSAwXG4gICAgY29uc3QgbGVuZ3RoID0gY2h1bmsubGVuZ3RoXG4gICAgd2hpbGUgKHBvc2l0aW9uICsgNTEyIDw9IGxlbmd0aCAmJiAhdGhpc1tBQk9SVEVEXSAmJiAhdGhpc1tTQVdfRU9GXSkge1xuICAgICAgc3dpdGNoICh0aGlzW1NUQVRFXSkge1xuICAgICAgICBjYXNlICdiZWdpbic6XG4gICAgICAgIGNhc2UgJ2hlYWRlcic6XG4gICAgICAgICAgdGhpc1tDT05TVU1FSEVBREVSXShjaHVuaywgcG9zaXRpb24pXG4gICAgICAgICAgcG9zaXRpb24gKz0gNTEyXG4gICAgICAgICAgYnJlYWtcblxuICAgICAgICBjYXNlICdpZ25vcmUnOlxuICAgICAgICBjYXNlICdib2R5JzpcbiAgICAgICAgICBwb3NpdGlvbiArPSB0aGlzW0NPTlNVTUVCT0RZXShjaHVuaywgcG9zaXRpb24pXG4gICAgICAgICAgYnJlYWtcblxuICAgICAgICBjYXNlICdtZXRhJzpcbiAgICAgICAgICBwb3NpdGlvbiArPSB0aGlzW0NPTlNVTUVNRVRBXShjaHVuaywgcG9zaXRpb24pXG4gICAgICAgICAgYnJlYWtcblxuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignaW52YWxpZCBzdGF0ZTogJyArIHRoaXNbU1RBVEVdKVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChwb3NpdGlvbiA8IGxlbmd0aCkge1xuICAgICAgaWYgKHRoaXNbQlVGRkVSXSkge1xuICAgICAgICB0aGlzW0JVRkZFUl0gPSBCdWZmZXIuY29uY2F0KFtjaHVuay5zbGljZShwb3NpdGlvbiksIHRoaXNbQlVGRkVSXV0pXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzW0JVRkZFUl0gPSBjaHVuay5zbGljZShwb3NpdGlvbilcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBlbmQgKGNodW5rKSB7XG4gICAgaWYgKCF0aGlzW0FCT1JURURdKSB7XG4gICAgICBpZiAodGhpc1tVTlpJUF0pIHtcbiAgICAgICAgdGhpc1tVTlpJUF0uZW5kKGNodW5rKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpc1tFTkRFRF0gPSB0cnVlXG4gICAgICAgIHRoaXMud3JpdGUoY2h1bmspXG4gICAgICB9XG4gICAgfVxuICB9XG59KVxuIiwgIid1c2Ugc3RyaWN0J1xuXG4vLyBYWFg6IFRoaXMgc2hhcmVzIGEgbG90IGluIGNvbW1vbiB3aXRoIGV4dHJhY3QuanNcbi8vIG1heWJlIHNvbWUgRFJZIG9wcG9ydHVuaXR5IGhlcmU/XG5cbi8vIHRhciAtdFxuY29uc3QgaGxvID0gcmVxdWlyZSgnLi9oaWdoLWxldmVsLW9wdC5qcycpXG5jb25zdCBQYXJzZXIgPSByZXF1aXJlKCcuL3BhcnNlLmpzJylcbmNvbnN0IGZzID0gcmVxdWlyZSgnZnMnKVxuY29uc3QgZnNtID0gcmVxdWlyZSgnZnMtbWluaXBhc3MnKVxuY29uc3QgcGF0aCA9IHJlcXVpcmUoJ3BhdGgnKVxuY29uc3Qgc3RyaXBTbGFzaCA9IHJlcXVpcmUoJy4vc3RyaXAtdHJhaWxpbmctc2xhc2hlcy5qcycpXG5cbm1vZHVsZS5leHBvcnRzID0gKG9wdF8sIGZpbGVzLCBjYikgPT4ge1xuICBpZiAodHlwZW9mIG9wdF8gPT09ICdmdW5jdGlvbicpIHtcbiAgICBjYiA9IG9wdF8sIGZpbGVzID0gbnVsbCwgb3B0XyA9IHt9XG4gIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShvcHRfKSkge1xuICAgIGZpbGVzID0gb3B0Xywgb3B0XyA9IHt9XG4gIH1cblxuICBpZiAodHlwZW9mIGZpbGVzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgY2IgPSBmaWxlcywgZmlsZXMgPSBudWxsXG4gIH1cblxuICBpZiAoIWZpbGVzKSB7XG4gICAgZmlsZXMgPSBbXVxuICB9IGVsc2Uge1xuICAgIGZpbGVzID0gQXJyYXkuZnJvbShmaWxlcylcbiAgfVxuXG4gIGNvbnN0IG9wdCA9IGhsbyhvcHRfKVxuXG4gIGlmIChvcHQuc3luYyAmJiB0eXBlb2YgY2IgPT09ICdmdW5jdGlvbicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdjYWxsYmFjayBub3Qgc3VwcG9ydGVkIGZvciBzeW5jIHRhciBmdW5jdGlvbnMnKVxuICB9XG5cbiAgaWYgKCFvcHQuZmlsZSAmJiB0eXBlb2YgY2IgPT09ICdmdW5jdGlvbicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdjYWxsYmFjayBvbmx5IHN1cHBvcnRlZCB3aXRoIGZpbGUgb3B0aW9uJylcbiAgfVxuXG4gIGlmIChmaWxlcy5sZW5ndGgpIHtcbiAgICBmaWxlc0ZpbHRlcihvcHQsIGZpbGVzKVxuICB9XG5cbiAgaWYgKCFvcHQubm9SZXN1bWUpIHtcbiAgICBvbmVudHJ5RnVuY3Rpb24ob3B0KVxuICB9XG5cbiAgcmV0dXJuIG9wdC5maWxlICYmIG9wdC5zeW5jID8gbGlzdEZpbGVTeW5jKG9wdClcbiAgICA6IG9wdC5maWxlID8gbGlzdEZpbGUob3B0LCBjYilcbiAgICA6IGxpc3Qob3B0KVxufVxuXG5jb25zdCBvbmVudHJ5RnVuY3Rpb24gPSBvcHQgPT4ge1xuICBjb25zdCBvbmVudHJ5ID0gb3B0Lm9uZW50cnlcbiAgb3B0Lm9uZW50cnkgPSBvbmVudHJ5ID8gZSA9PiB7XG4gICAgb25lbnRyeShlKVxuICAgIGUucmVzdW1lKClcbiAgfSA6IGUgPT4gZS5yZXN1bWUoKVxufVxuXG4vLyBjb25zdHJ1Y3QgYSBmaWx0ZXIgdGhhdCBsaW1pdHMgdGhlIGZpbGUgZW50cmllcyBsaXN0ZWRcbi8vIGluY2x1ZGUgY2hpbGQgZW50cmllcyBpZiBhIGRpciBpcyBpbmNsdWRlZFxuY29uc3QgZmlsZXNGaWx0ZXIgPSAob3B0LCBmaWxlcykgPT4ge1xuICBjb25zdCBtYXAgPSBuZXcgTWFwKGZpbGVzLm1hcChmID0+IFtzdHJpcFNsYXNoKGYpLCB0cnVlXSkpXG4gIGNvbnN0IGZpbHRlciA9IG9wdC5maWx0ZXJcblxuICBjb25zdCBtYXBIYXMgPSAoZmlsZSwgcikgPT4ge1xuICAgIGNvbnN0IHJvb3QgPSByIHx8IHBhdGgucGFyc2UoZmlsZSkucm9vdCB8fCAnLidcbiAgICBjb25zdCByZXQgPSBmaWxlID09PSByb290ID8gZmFsc2VcbiAgICAgIDogbWFwLmhhcyhmaWxlKSA/IG1hcC5nZXQoZmlsZSlcbiAgICAgIDogbWFwSGFzKHBhdGguZGlybmFtZShmaWxlKSwgcm9vdClcblxuICAgIG1hcC5zZXQoZmlsZSwgcmV0KVxuICAgIHJldHVybiByZXRcbiAgfVxuXG4gIG9wdC5maWx0ZXIgPSBmaWx0ZXJcbiAgICA/IChmaWxlLCBlbnRyeSkgPT4gZmlsdGVyKGZpbGUsIGVudHJ5KSAmJiBtYXBIYXMoc3RyaXBTbGFzaChmaWxlKSlcbiAgICA6IGZpbGUgPT4gbWFwSGFzKHN0cmlwU2xhc2goZmlsZSkpXG59XG5cbmNvbnN0IGxpc3RGaWxlU3luYyA9IG9wdCA9PiB7XG4gIGNvbnN0IHAgPSBsaXN0KG9wdClcbiAgY29uc3QgZmlsZSA9IG9wdC5maWxlXG4gIGxldCB0aHJldyA9IHRydWVcbiAgbGV0IGZkXG4gIHRyeSB7XG4gICAgY29uc3Qgc3RhdCA9IGZzLnN0YXRTeW5jKGZpbGUpXG4gICAgY29uc3QgcmVhZFNpemUgPSBvcHQubWF4UmVhZFNpemUgfHwgMTYgKiAxMDI0ICogMTAyNFxuICAgIGlmIChzdGF0LnNpemUgPCByZWFkU2l6ZSkge1xuICAgICAgcC5lbmQoZnMucmVhZEZpbGVTeW5jKGZpbGUpKVxuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgcG9zID0gMFxuICAgICAgY29uc3QgYnVmID0gQnVmZmVyLmFsbG9jVW5zYWZlKHJlYWRTaXplKVxuICAgICAgZmQgPSBmcy5vcGVuU3luYyhmaWxlLCAncicpXG4gICAgICB3aGlsZSAocG9zIDwgc3RhdC5zaXplKSB7XG4gICAgICAgIGNvbnN0IGJ5dGVzUmVhZCA9IGZzLnJlYWRTeW5jKGZkLCBidWYsIDAsIHJlYWRTaXplLCBwb3MpXG4gICAgICAgIHBvcyArPSBieXRlc1JlYWRcbiAgICAgICAgcC53cml0ZShidWYuc2xpY2UoMCwgYnl0ZXNSZWFkKSlcbiAgICAgIH1cbiAgICAgIHAuZW5kKClcbiAgICB9XG4gICAgdGhyZXcgPSBmYWxzZVxuICB9IGZpbmFsbHkge1xuICAgIGlmICh0aHJldyAmJiBmZCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgZnMuY2xvc2VTeW5jKGZkKVxuICAgICAgfSBjYXRjaCAoZXIpIHt9XG4gICAgfVxuICB9XG59XG5cbmNvbnN0IGxpc3RGaWxlID0gKG9wdCwgY2IpID0+IHtcbiAgY29uc3QgcGFyc2UgPSBuZXcgUGFyc2VyKG9wdClcbiAgY29uc3QgcmVhZFNpemUgPSBvcHQubWF4UmVhZFNpemUgfHwgMTYgKiAxMDI0ICogMTAyNFxuXG4gIGNvbnN0IGZpbGUgPSBvcHQuZmlsZVxuICBjb25zdCBwID0gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIHBhcnNlLm9uKCdlcnJvcicsIHJlamVjdClcbiAgICBwYXJzZS5vbignZW5kJywgcmVzb2x2ZSlcblxuICAgIGZzLnN0YXQoZmlsZSwgKGVyLCBzdGF0KSA9PiB7XG4gICAgICBpZiAoZXIpIHtcbiAgICAgICAgcmVqZWN0KGVyKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3Qgc3RyZWFtID0gbmV3IGZzbS5SZWFkU3RyZWFtKGZpbGUsIHtcbiAgICAgICAgICByZWFkU2l6ZTogcmVhZFNpemUsXG4gICAgICAgICAgc2l6ZTogc3RhdC5zaXplLFxuICAgICAgICB9KVxuICAgICAgICBzdHJlYW0ub24oJ2Vycm9yJywgcmVqZWN0KVxuICAgICAgICBzdHJlYW0ucGlwZShwYXJzZSlcbiAgICAgIH1cbiAgICB9KVxuICB9KVxuICByZXR1cm4gY2IgPyBwLnRoZW4oY2IsIGNiKSA6IHBcbn1cblxuY29uc3QgbGlzdCA9IG9wdCA9PiBuZXcgUGFyc2VyKG9wdClcbiIsICIndXNlIHN0cmljdCdcblxuLy8gdGFyIC1jXG5jb25zdCBobG8gPSByZXF1aXJlKCcuL2hpZ2gtbGV2ZWwtb3B0LmpzJylcblxuY29uc3QgUGFjayA9IHJlcXVpcmUoJy4vcGFjay5qcycpXG5jb25zdCBmc20gPSByZXF1aXJlKCdmcy1taW5pcGFzcycpXG5jb25zdCB0ID0gcmVxdWlyZSgnLi9saXN0LmpzJylcbmNvbnN0IHBhdGggPSByZXF1aXJlKCdwYXRoJylcblxubW9kdWxlLmV4cG9ydHMgPSAob3B0XywgZmlsZXMsIGNiKSA9PiB7XG4gIGlmICh0eXBlb2YgZmlsZXMgPT09ICdmdW5jdGlvbicpIHtcbiAgICBjYiA9IGZpbGVzXG4gIH1cblxuICBpZiAoQXJyYXkuaXNBcnJheShvcHRfKSkge1xuICAgIGZpbGVzID0gb3B0Xywgb3B0XyA9IHt9XG4gIH1cblxuICBpZiAoIWZpbGVzIHx8ICFBcnJheS5pc0FycmF5KGZpbGVzKSB8fCAhZmlsZXMubGVuZ3RoKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignbm8gZmlsZXMgb3IgZGlyZWN0b3JpZXMgc3BlY2lmaWVkJylcbiAgfVxuXG4gIGZpbGVzID0gQXJyYXkuZnJvbShmaWxlcylcblxuICBjb25zdCBvcHQgPSBobG8ob3B0XylcblxuICBpZiAob3B0LnN5bmMgJiYgdHlwZW9mIGNiID09PSAnZnVuY3Rpb24nKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignY2FsbGJhY2sgbm90IHN1cHBvcnRlZCBmb3Igc3luYyB0YXIgZnVuY3Rpb25zJylcbiAgfVxuXG4gIGlmICghb3B0LmZpbGUgJiYgdHlwZW9mIGNiID09PSAnZnVuY3Rpb24nKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignY2FsbGJhY2sgb25seSBzdXBwb3J0ZWQgd2l0aCBmaWxlIG9wdGlvbicpXG4gIH1cblxuICByZXR1cm4gb3B0LmZpbGUgJiYgb3B0LnN5bmMgPyBjcmVhdGVGaWxlU3luYyhvcHQsIGZpbGVzKVxuICAgIDogb3B0LmZpbGUgPyBjcmVhdGVGaWxlKG9wdCwgZmlsZXMsIGNiKVxuICAgIDogb3B0LnN5bmMgPyBjcmVhdGVTeW5jKG9wdCwgZmlsZXMpXG4gICAgOiBjcmVhdGUob3B0LCBmaWxlcylcbn1cblxuY29uc3QgY3JlYXRlRmlsZVN5bmMgPSAob3B0LCBmaWxlcykgPT4ge1xuICBjb25zdCBwID0gbmV3IFBhY2suU3luYyhvcHQpXG4gIGNvbnN0IHN0cmVhbSA9IG5ldyBmc20uV3JpdGVTdHJlYW1TeW5jKG9wdC5maWxlLCB7XG4gICAgbW9kZTogb3B0Lm1vZGUgfHwgMG82NjYsXG4gIH0pXG4gIHAucGlwZShzdHJlYW0pXG4gIGFkZEZpbGVzU3luYyhwLCBmaWxlcylcbn1cblxuY29uc3QgY3JlYXRlRmlsZSA9IChvcHQsIGZpbGVzLCBjYikgPT4ge1xuICBjb25zdCBwID0gbmV3IFBhY2sob3B0KVxuICBjb25zdCBzdHJlYW0gPSBuZXcgZnNtLldyaXRlU3RyZWFtKG9wdC5maWxlLCB7XG4gICAgbW9kZTogb3B0Lm1vZGUgfHwgMG82NjYsXG4gIH0pXG4gIHAucGlwZShzdHJlYW0pXG5cbiAgY29uc3QgcHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXMsIHJlaikgPT4ge1xuICAgIHN0cmVhbS5vbignZXJyb3InLCByZWopXG4gICAgc3RyZWFtLm9uKCdjbG9zZScsIHJlcylcbiAgICBwLm9uKCdlcnJvcicsIHJlailcbiAgfSlcblxuICBhZGRGaWxlc0FzeW5jKHAsIGZpbGVzKVxuXG4gIHJldHVybiBjYiA/IHByb21pc2UudGhlbihjYiwgY2IpIDogcHJvbWlzZVxufVxuXG5jb25zdCBhZGRGaWxlc1N5bmMgPSAocCwgZmlsZXMpID0+IHtcbiAgZmlsZXMuZm9yRWFjaChmaWxlID0+IHtcbiAgICBpZiAoZmlsZS5jaGFyQXQoMCkgPT09ICdAJykge1xuICAgICAgdCh7XG4gICAgICAgIGZpbGU6IHBhdGgucmVzb2x2ZShwLmN3ZCwgZmlsZS5zbGljZSgxKSksXG4gICAgICAgIHN5bmM6IHRydWUsXG4gICAgICAgIG5vUmVzdW1lOiB0cnVlLFxuICAgICAgICBvbmVudHJ5OiBlbnRyeSA9PiBwLmFkZChlbnRyeSksXG4gICAgICB9KVxuICAgIH0gZWxzZSB7XG4gICAgICBwLmFkZChmaWxlKVxuICAgIH1cbiAgfSlcbiAgcC5lbmQoKVxufVxuXG5jb25zdCBhZGRGaWxlc0FzeW5jID0gKHAsIGZpbGVzKSA9PiB7XG4gIHdoaWxlIChmaWxlcy5sZW5ndGgpIHtcbiAgICBjb25zdCBmaWxlID0gZmlsZXMuc2hpZnQoKVxuICAgIGlmIChmaWxlLmNoYXJBdCgwKSA9PT0gJ0AnKSB7XG4gICAgICByZXR1cm4gdCh7XG4gICAgICAgIGZpbGU6IHBhdGgucmVzb2x2ZShwLmN3ZCwgZmlsZS5zbGljZSgxKSksXG4gICAgICAgIG5vUmVzdW1lOiB0cnVlLFxuICAgICAgICBvbmVudHJ5OiBlbnRyeSA9PiBwLmFkZChlbnRyeSksXG4gICAgICB9KS50aGVuKF8gPT4gYWRkRmlsZXNBc3luYyhwLCBmaWxlcykpXG4gICAgfSBlbHNlIHtcbiAgICAgIHAuYWRkKGZpbGUpXG4gICAgfVxuICB9XG4gIHAuZW5kKClcbn1cblxuY29uc3QgY3JlYXRlU3luYyA9IChvcHQsIGZpbGVzKSA9PiB7XG4gIGNvbnN0IHAgPSBuZXcgUGFjay5TeW5jKG9wdClcbiAgYWRkRmlsZXNTeW5jKHAsIGZpbGVzKVxuICByZXR1cm4gcFxufVxuXG5jb25zdCBjcmVhdGUgPSAob3B0LCBmaWxlcykgPT4ge1xuICBjb25zdCBwID0gbmV3IFBhY2sob3B0KVxuICBhZGRGaWxlc0FzeW5jKHAsIGZpbGVzKVxuICByZXR1cm4gcFxufVxuIiwgIid1c2Ugc3RyaWN0J1xuXG4vLyB0YXIgLXJcbmNvbnN0IGhsbyA9IHJlcXVpcmUoJy4vaGlnaC1sZXZlbC1vcHQuanMnKVxuY29uc3QgUGFjayA9IHJlcXVpcmUoJy4vcGFjay5qcycpXG5jb25zdCBmcyA9IHJlcXVpcmUoJ2ZzJylcbmNvbnN0IGZzbSA9IHJlcXVpcmUoJ2ZzLW1pbmlwYXNzJylcbmNvbnN0IHQgPSByZXF1aXJlKCcuL2xpc3QuanMnKVxuY29uc3QgcGF0aCA9IHJlcXVpcmUoJ3BhdGgnKVxuXG4vLyBzdGFydGluZyBhdCB0aGUgaGVhZCBvZiB0aGUgZmlsZSwgcmVhZCBhIEhlYWRlclxuLy8gSWYgdGhlIGNoZWNrc3VtIGlzIGludmFsaWQsIHRoYXQncyBvdXIgcG9zaXRpb24gdG8gc3RhcnQgd3JpdGluZ1xuLy8gSWYgaXQgaXMsIGp1bXAgZm9yd2FyZCBieSB0aGUgc3BlY2lmaWVkIHNpemUgKHJvdW5kIHVwIHRvIDUxMilcbi8vIGFuZCB0cnkgYWdhaW4uXG4vLyBXcml0ZSB0aGUgbmV3IFBhY2sgc3RyZWFtIHN0YXJ0aW5nIHRoZXJlLlxuXG5jb25zdCBIZWFkZXIgPSByZXF1aXJlKCcuL2hlYWRlci5qcycpXG5cbm1vZHVsZS5leHBvcnRzID0gKG9wdF8sIGZpbGVzLCBjYikgPT4ge1xuICBjb25zdCBvcHQgPSBobG8ob3B0XylcblxuICBpZiAoIW9wdC5maWxlKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignZmlsZSBpcyByZXF1aXJlZCcpXG4gIH1cblxuICBpZiAob3B0Lmd6aXApIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdjYW5ub3QgYXBwZW5kIHRvIGNvbXByZXNzZWQgYXJjaGl2ZXMnKVxuICB9XG5cbiAgaWYgKCFmaWxlcyB8fCAhQXJyYXkuaXNBcnJheShmaWxlcykgfHwgIWZpbGVzLmxlbmd0aCkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ25vIGZpbGVzIG9yIGRpcmVjdG9yaWVzIHNwZWNpZmllZCcpXG4gIH1cblxuICBmaWxlcyA9IEFycmF5LmZyb20oZmlsZXMpXG5cbiAgcmV0dXJuIG9wdC5zeW5jID8gcmVwbGFjZVN5bmMob3B0LCBmaWxlcylcbiAgICA6IHJlcGxhY2Uob3B0LCBmaWxlcywgY2IpXG59XG5cbmNvbnN0IHJlcGxhY2VTeW5jID0gKG9wdCwgZmlsZXMpID0+IHtcbiAgY29uc3QgcCA9IG5ldyBQYWNrLlN5bmMob3B0KVxuXG4gIGxldCB0aHJldyA9IHRydWVcbiAgbGV0IGZkXG4gIGxldCBwb3NpdGlvblxuXG4gIHRyeSB7XG4gICAgdHJ5IHtcbiAgICAgIGZkID0gZnMub3BlblN5bmMob3B0LmZpbGUsICdyKycpXG4gICAgfSBjYXRjaCAoZXIpIHtcbiAgICAgIGlmIChlci5jb2RlID09PSAnRU5PRU5UJykge1xuICAgICAgICBmZCA9IGZzLm9wZW5TeW5jKG9wdC5maWxlLCAndysnKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgZXJcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBzdCA9IGZzLmZzdGF0U3luYyhmZClcbiAgICBjb25zdCBoZWFkQnVmID0gQnVmZmVyLmFsbG9jKDUxMilcblxuICAgIFBPU0lUSU9OOiBmb3IgKHBvc2l0aW9uID0gMDsgcG9zaXRpb24gPCBzdC5zaXplOyBwb3NpdGlvbiArPSA1MTIpIHtcbiAgICAgIGZvciAobGV0IGJ1ZlBvcyA9IDAsIGJ5dGVzID0gMDsgYnVmUG9zIDwgNTEyOyBidWZQb3MgKz0gYnl0ZXMpIHtcbiAgICAgICAgYnl0ZXMgPSBmcy5yZWFkU3luYyhcbiAgICAgICAgICBmZCwgaGVhZEJ1ZiwgYnVmUG9zLCBoZWFkQnVmLmxlbmd0aCAtIGJ1ZlBvcywgcG9zaXRpb24gKyBidWZQb3NcbiAgICAgICAgKVxuXG4gICAgICAgIGlmIChwb3NpdGlvbiA9PT0gMCAmJiBoZWFkQnVmWzBdID09PSAweDFmICYmIGhlYWRCdWZbMV0gPT09IDB4OGIpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2Nhbm5vdCBhcHBlbmQgdG8gY29tcHJlc3NlZCBhcmNoaXZlcycpXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWJ5dGVzKSB7XG4gICAgICAgICAgYnJlYWsgUE9TSVRJT05cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb25zdCBoID0gbmV3IEhlYWRlcihoZWFkQnVmKVxuICAgICAgaWYgKCFoLmNrc3VtVmFsaWQpIHtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGVudHJ5QmxvY2tTaXplID0gNTEyICogTWF0aC5jZWlsKGguc2l6ZSAvIDUxMilcbiAgICAgIGlmIChwb3NpdGlvbiArIGVudHJ5QmxvY2tTaXplICsgNTEyID4gc3Quc2l6ZSkge1xuICAgICAgICBicmVha1xuICAgICAgfVxuICAgICAgLy8gdGhlIDUxMiBmb3IgdGhlIGhlYWRlciB3ZSBqdXN0IHBhcnNlZCB3aWxsIGJlIGFkZGVkIGFzIHdlbGxcbiAgICAgIC8vIGFsc28ganVtcCBhaGVhZCBhbGwgdGhlIGJsb2NrcyBmb3IgdGhlIGJvZHlcbiAgICAgIHBvc2l0aW9uICs9IGVudHJ5QmxvY2tTaXplXG4gICAgICBpZiAob3B0Lm10aW1lQ2FjaGUpIHtcbiAgICAgICAgb3B0Lm10aW1lQ2FjaGUuc2V0KGgucGF0aCwgaC5tdGltZSlcbiAgICAgIH1cbiAgICB9XG4gICAgdGhyZXcgPSBmYWxzZVxuXG4gICAgc3RyZWFtU3luYyhvcHQsIHAsIHBvc2l0aW9uLCBmZCwgZmlsZXMpXG4gIH0gZmluYWxseSB7XG4gICAgaWYgKHRocmV3KSB7XG4gICAgICB0cnkge1xuICAgICAgICBmcy5jbG9zZVN5bmMoZmQpXG4gICAgICB9IGNhdGNoIChlcikge31cbiAgICB9XG4gIH1cbn1cblxuY29uc3Qgc3RyZWFtU3luYyA9IChvcHQsIHAsIHBvc2l0aW9uLCBmZCwgZmlsZXMpID0+IHtcbiAgY29uc3Qgc3RyZWFtID0gbmV3IGZzbS5Xcml0ZVN0cmVhbVN5bmMob3B0LmZpbGUsIHtcbiAgICBmZDogZmQsXG4gICAgc3RhcnQ6IHBvc2l0aW9uLFxuICB9KVxuICBwLnBpcGUoc3RyZWFtKVxuICBhZGRGaWxlc1N5bmMocCwgZmlsZXMpXG59XG5cbmNvbnN0IHJlcGxhY2UgPSAob3B0LCBmaWxlcywgY2IpID0+IHtcbiAgZmlsZXMgPSBBcnJheS5mcm9tKGZpbGVzKVxuICBjb25zdCBwID0gbmV3IFBhY2sob3B0KVxuXG4gIGNvbnN0IGdldFBvcyA9IChmZCwgc2l6ZSwgY2JfKSA9PiB7XG4gICAgY29uc3QgY2IgPSAoZXIsIHBvcykgPT4ge1xuICAgICAgaWYgKGVyKSB7XG4gICAgICAgIGZzLmNsb3NlKGZkLCBfID0+IGNiXyhlcikpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjYl8obnVsbCwgcG9zKVxuICAgICAgfVxuICAgIH1cblxuICAgIGxldCBwb3NpdGlvbiA9IDBcbiAgICBpZiAoc2l6ZSA9PT0gMCkge1xuICAgICAgcmV0dXJuIGNiKG51bGwsIDApXG4gICAgfVxuXG4gICAgbGV0IGJ1ZlBvcyA9IDBcbiAgICBjb25zdCBoZWFkQnVmID0gQnVmZmVyLmFsbG9jKDUxMilcbiAgICBjb25zdCBvbnJlYWQgPSAoZXIsIGJ5dGVzKSA9PiB7XG4gICAgICBpZiAoZXIpIHtcbiAgICAgICAgcmV0dXJuIGNiKGVyKVxuICAgICAgfVxuICAgICAgYnVmUG9zICs9IGJ5dGVzXG4gICAgICBpZiAoYnVmUG9zIDwgNTEyICYmIGJ5dGVzKSB7XG4gICAgICAgIHJldHVybiBmcy5yZWFkKFxuICAgICAgICAgIGZkLCBoZWFkQnVmLCBidWZQb3MsIGhlYWRCdWYubGVuZ3RoIC0gYnVmUG9zLFxuICAgICAgICAgIHBvc2l0aW9uICsgYnVmUG9zLCBvbnJlYWRcbiAgICAgICAgKVxuICAgICAgfVxuXG4gICAgICBpZiAocG9zaXRpb24gPT09IDAgJiYgaGVhZEJ1ZlswXSA9PT0gMHgxZiAmJiBoZWFkQnVmWzFdID09PSAweDhiKSB7XG4gICAgICAgIHJldHVybiBjYihuZXcgRXJyb3IoJ2Nhbm5vdCBhcHBlbmQgdG8gY29tcHJlc3NlZCBhcmNoaXZlcycpKVxuICAgICAgfVxuXG4gICAgICAvLyB0cnVuY2F0ZWQgaGVhZGVyXG4gICAgICBpZiAoYnVmUG9zIDwgNTEyKSB7XG4gICAgICAgIHJldHVybiBjYihudWxsLCBwb3NpdGlvbilcbiAgICAgIH1cblxuICAgICAgY29uc3QgaCA9IG5ldyBIZWFkZXIoaGVhZEJ1ZilcbiAgICAgIGlmICghaC5ja3N1bVZhbGlkKSB7XG4gICAgICAgIHJldHVybiBjYihudWxsLCBwb3NpdGlvbilcbiAgICAgIH1cblxuICAgICAgY29uc3QgZW50cnlCbG9ja1NpemUgPSA1MTIgKiBNYXRoLmNlaWwoaC5zaXplIC8gNTEyKVxuICAgICAgaWYgKHBvc2l0aW9uICsgZW50cnlCbG9ja1NpemUgKyA1MTIgPiBzaXplKSB7XG4gICAgICAgIHJldHVybiBjYihudWxsLCBwb3NpdGlvbilcbiAgICAgIH1cblxuICAgICAgcG9zaXRpb24gKz0gZW50cnlCbG9ja1NpemUgKyA1MTJcbiAgICAgIGlmIChwb3NpdGlvbiA+PSBzaXplKSB7XG4gICAgICAgIHJldHVybiBjYihudWxsLCBwb3NpdGlvbilcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdC5tdGltZUNhY2hlKSB7XG4gICAgICAgIG9wdC5tdGltZUNhY2hlLnNldChoLnBhdGgsIGgubXRpbWUpXG4gICAgICB9XG4gICAgICBidWZQb3MgPSAwXG4gICAgICBmcy5yZWFkKGZkLCBoZWFkQnVmLCAwLCA1MTIsIHBvc2l0aW9uLCBvbnJlYWQpXG4gICAgfVxuICAgIGZzLnJlYWQoZmQsIGhlYWRCdWYsIDAsIDUxMiwgcG9zaXRpb24sIG9ucmVhZClcbiAgfVxuXG4gIGNvbnN0IHByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgcC5vbignZXJyb3InLCByZWplY3QpXG4gICAgbGV0IGZsYWcgPSAncisnXG4gICAgY29uc3Qgb25vcGVuID0gKGVyLCBmZCkgPT4ge1xuICAgICAgaWYgKGVyICYmIGVyLmNvZGUgPT09ICdFTk9FTlQnICYmIGZsYWcgPT09ICdyKycpIHtcbiAgICAgICAgZmxhZyA9ICd3KydcbiAgICAgICAgcmV0dXJuIGZzLm9wZW4ob3B0LmZpbGUsIGZsYWcsIG9ub3BlbilcbiAgICAgIH1cblxuICAgICAgaWYgKGVyKSB7XG4gICAgICAgIHJldHVybiByZWplY3QoZXIpXG4gICAgICB9XG5cbiAgICAgIGZzLmZzdGF0KGZkLCAoZXIsIHN0KSA9PiB7XG4gICAgICAgIGlmIChlcikge1xuICAgICAgICAgIHJldHVybiBmcy5jbG9zZShmZCwgKCkgPT4gcmVqZWN0KGVyKSlcbiAgICAgICAgfVxuXG4gICAgICAgIGdldFBvcyhmZCwgc3Quc2l6ZSwgKGVyLCBwb3NpdGlvbikgPT4ge1xuICAgICAgICAgIGlmIChlcikge1xuICAgICAgICAgICAgcmV0dXJuIHJlamVjdChlcilcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3Qgc3RyZWFtID0gbmV3IGZzbS5Xcml0ZVN0cmVhbShvcHQuZmlsZSwge1xuICAgICAgICAgICAgZmQ6IGZkLFxuICAgICAgICAgICAgc3RhcnQ6IHBvc2l0aW9uLFxuICAgICAgICAgIH0pXG4gICAgICAgICAgcC5waXBlKHN0cmVhbSlcbiAgICAgICAgICBzdHJlYW0ub24oJ2Vycm9yJywgcmVqZWN0KVxuICAgICAgICAgIHN0cmVhbS5vbignY2xvc2UnLCByZXNvbHZlKVxuICAgICAgICAgIGFkZEZpbGVzQXN5bmMocCwgZmlsZXMpXG4gICAgICAgIH0pXG4gICAgICB9KVxuICAgIH1cbiAgICBmcy5vcGVuKG9wdC5maWxlLCBmbGFnLCBvbm9wZW4pXG4gIH0pXG5cbiAgcmV0dXJuIGNiID8gcHJvbWlzZS50aGVuKGNiLCBjYikgOiBwcm9taXNlXG59XG5cbmNvbnN0IGFkZEZpbGVzU3luYyA9IChwLCBmaWxlcykgPT4ge1xuICBmaWxlcy5mb3JFYWNoKGZpbGUgPT4ge1xuICAgIGlmIChmaWxlLmNoYXJBdCgwKSA9PT0gJ0AnKSB7XG4gICAgICB0KHtcbiAgICAgICAgZmlsZTogcGF0aC5yZXNvbHZlKHAuY3dkLCBmaWxlLnNsaWNlKDEpKSxcbiAgICAgICAgc3luYzogdHJ1ZSxcbiAgICAgICAgbm9SZXN1bWU6IHRydWUsXG4gICAgICAgIG9uZW50cnk6IGVudHJ5ID0+IHAuYWRkKGVudHJ5KSxcbiAgICAgIH0pXG4gICAgfSBlbHNlIHtcbiAgICAgIHAuYWRkKGZpbGUpXG4gICAgfVxuICB9KVxuICBwLmVuZCgpXG59XG5cbmNvbnN0IGFkZEZpbGVzQXN5bmMgPSAocCwgZmlsZXMpID0+IHtcbiAgd2hpbGUgKGZpbGVzLmxlbmd0aCkge1xuICAgIGNvbnN0IGZpbGUgPSBmaWxlcy5zaGlmdCgpXG4gICAgaWYgKGZpbGUuY2hhckF0KDApID09PSAnQCcpIHtcbiAgICAgIHJldHVybiB0KHtcbiAgICAgICAgZmlsZTogcGF0aC5yZXNvbHZlKHAuY3dkLCBmaWxlLnNsaWNlKDEpKSxcbiAgICAgICAgbm9SZXN1bWU6IHRydWUsXG4gICAgICAgIG9uZW50cnk6IGVudHJ5ID0+IHAuYWRkKGVudHJ5KSxcbiAgICAgIH0pLnRoZW4oXyA9PiBhZGRGaWxlc0FzeW5jKHAsIGZpbGVzKSlcbiAgICB9IGVsc2Uge1xuICAgICAgcC5hZGQoZmlsZSlcbiAgICB9XG4gIH1cbiAgcC5lbmQoKVxufVxuIiwgIid1c2Ugc3RyaWN0J1xuXG4vLyB0YXIgLXVcblxuY29uc3QgaGxvID0gcmVxdWlyZSgnLi9oaWdoLWxldmVsLW9wdC5qcycpXG5jb25zdCByID0gcmVxdWlyZSgnLi9yZXBsYWNlLmpzJylcbi8vIGp1c3QgY2FsbCB0YXIuciB3aXRoIHRoZSBmaWx0ZXIgYW5kIG10aW1lQ2FjaGVcblxubW9kdWxlLmV4cG9ydHMgPSAob3B0XywgZmlsZXMsIGNiKSA9PiB7XG4gIGNvbnN0IG9wdCA9IGhsbyhvcHRfKVxuXG4gIGlmICghb3B0LmZpbGUpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdmaWxlIGlzIHJlcXVpcmVkJylcbiAgfVxuXG4gIGlmIChvcHQuZ3ppcCkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2Nhbm5vdCBhcHBlbmQgdG8gY29tcHJlc3NlZCBhcmNoaXZlcycpXG4gIH1cblxuICBpZiAoIWZpbGVzIHx8ICFBcnJheS5pc0FycmF5KGZpbGVzKSB8fCAhZmlsZXMubGVuZ3RoKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignbm8gZmlsZXMgb3IgZGlyZWN0b3JpZXMgc3BlY2lmaWVkJylcbiAgfVxuXG4gIGZpbGVzID0gQXJyYXkuZnJvbShmaWxlcylcblxuICBtdGltZUZpbHRlcihvcHQpXG4gIHJldHVybiByKG9wdCwgZmlsZXMsIGNiKVxufVxuXG5jb25zdCBtdGltZUZpbHRlciA9IG9wdCA9PiB7XG4gIGNvbnN0IGZpbHRlciA9IG9wdC5maWx0ZXJcblxuICBpZiAoIW9wdC5tdGltZUNhY2hlKSB7XG4gICAgb3B0Lm10aW1lQ2FjaGUgPSBuZXcgTWFwKClcbiAgfVxuXG4gIG9wdC5maWx0ZXIgPSBmaWx0ZXIgPyAocGF0aCwgc3RhdCkgPT5cbiAgICBmaWx0ZXIocGF0aCwgc3RhdCkgJiYgIShvcHQubXRpbWVDYWNoZS5nZXQocGF0aCkgPiBzdGF0Lm10aW1lKVxuICAgIDogKHBhdGgsIHN0YXQpID0+ICEob3B0Lm10aW1lQ2FjaGUuZ2V0KHBhdGgpID4gc3RhdC5tdGltZSlcbn1cbiIsICJjb25zdCB7IHByb21pc2lmeSB9ID0gcmVxdWlyZSgndXRpbCcpXG5jb25zdCBmcyA9IHJlcXVpcmUoJ2ZzJylcbmNvbnN0IG9wdHNBcmcgPSBvcHRzID0+IHtcbiAgaWYgKCFvcHRzKVxuICAgIG9wdHMgPSB7IG1vZGU6IDBvNzc3LCBmcyB9XG4gIGVsc2UgaWYgKHR5cGVvZiBvcHRzID09PSAnb2JqZWN0JylcbiAgICBvcHRzID0geyBtb2RlOiAwbzc3NywgZnMsIC4uLm9wdHMgfVxuICBlbHNlIGlmICh0eXBlb2Ygb3B0cyA9PT0gJ251bWJlcicpXG4gICAgb3B0cyA9IHsgbW9kZTogb3B0cywgZnMgfVxuICBlbHNlIGlmICh0eXBlb2Ygb3B0cyA9PT0gJ3N0cmluZycpXG4gICAgb3B0cyA9IHsgbW9kZTogcGFyc2VJbnQob3B0cywgOCksIGZzIH1cbiAgZWxzZVxuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2ludmFsaWQgb3B0aW9ucyBhcmd1bWVudCcpXG5cbiAgb3B0cy5ta2RpciA9IG9wdHMubWtkaXIgfHwgb3B0cy5mcy5ta2RpciB8fCBmcy5ta2RpclxuICBvcHRzLm1rZGlyQXN5bmMgPSBwcm9taXNpZnkob3B0cy5ta2RpcilcbiAgb3B0cy5zdGF0ID0gb3B0cy5zdGF0IHx8IG9wdHMuZnMuc3RhdCB8fCBmcy5zdGF0XG4gIG9wdHMuc3RhdEFzeW5jID0gcHJvbWlzaWZ5KG9wdHMuc3RhdClcbiAgb3B0cy5zdGF0U3luYyA9IG9wdHMuc3RhdFN5bmMgfHwgb3B0cy5mcy5zdGF0U3luYyB8fCBmcy5zdGF0U3luY1xuICBvcHRzLm1rZGlyU3luYyA9IG9wdHMubWtkaXJTeW5jIHx8IG9wdHMuZnMubWtkaXJTeW5jIHx8IGZzLm1rZGlyU3luY1xuICByZXR1cm4gb3B0c1xufVxubW9kdWxlLmV4cG9ydHMgPSBvcHRzQXJnXG4iLCAiY29uc3QgcGxhdGZvcm0gPSBwcm9jZXNzLmVudi5fX1RFU1RJTkdfTUtESVJQX1BMQVRGT1JNX18gfHwgcHJvY2Vzcy5wbGF0Zm9ybVxuY29uc3QgeyByZXNvbHZlLCBwYXJzZSB9ID0gcmVxdWlyZSgncGF0aCcpXG5jb25zdCBwYXRoQXJnID0gcGF0aCA9PiB7XG4gIGlmICgvXFwwLy50ZXN0KHBhdGgpKSB7XG4gICAgLy8gc2ltdWxhdGUgc2FtZSBmYWlsdXJlIHRoYXQgbm9kZSByYWlzZXNcbiAgICB0aHJvdyBPYmplY3QuYXNzaWduKFxuICAgICAgbmV3IFR5cGVFcnJvcigncGF0aCBtdXN0IGJlIGEgc3RyaW5nIHdpdGhvdXQgbnVsbCBieXRlcycpLFxuICAgICAge1xuICAgICAgICBwYXRoLFxuICAgICAgICBjb2RlOiAnRVJSX0lOVkFMSURfQVJHX1ZBTFVFJyxcbiAgICAgIH1cbiAgICApXG4gIH1cblxuICBwYXRoID0gcmVzb2x2ZShwYXRoKVxuICBpZiAocGxhdGZvcm0gPT09ICd3aW4zMicpIHtcbiAgICBjb25zdCBiYWRXaW5DaGFycyA9IC9bKnxcIjw+PzpdL1xuICAgIGNvbnN0IHtyb290fSA9IHBhcnNlKHBhdGgpXG4gICAgaWYgKGJhZFdpbkNoYXJzLnRlc3QocGF0aC5zdWJzdHIocm9vdC5sZW5ndGgpKSkge1xuICAgICAgdGhyb3cgT2JqZWN0LmFzc2lnbihuZXcgRXJyb3IoJ0lsbGVnYWwgY2hhcmFjdGVycyBpbiBwYXRoLicpLCB7XG4gICAgICAgIHBhdGgsXG4gICAgICAgIGNvZGU6ICdFSU5WQUwnLFxuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcGF0aFxufVxubW9kdWxlLmV4cG9ydHMgPSBwYXRoQXJnXG4iLCAiY29uc3Qge2Rpcm5hbWV9ID0gcmVxdWlyZSgncGF0aCcpXG5cbmNvbnN0IGZpbmRNYWRlID0gKG9wdHMsIHBhcmVudCwgcGF0aCA9IHVuZGVmaW5lZCkgPT4ge1xuICAvLyB3ZSBuZXZlciB3YW50IHRoZSAnbWFkZScgcmV0dXJuIHZhbHVlIHRvIGJlIGEgcm9vdCBkaXJlY3RvcnlcbiAgaWYgKHBhdGggPT09IHBhcmVudClcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKClcblxuICByZXR1cm4gb3B0cy5zdGF0QXN5bmMocGFyZW50KS50aGVuKFxuICAgIHN0ID0+IHN0LmlzRGlyZWN0b3J5KCkgPyBwYXRoIDogdW5kZWZpbmVkLCAvLyB3aWxsIGZhaWwgbGF0ZXJcbiAgICBlciA9PiBlci5jb2RlID09PSAnRU5PRU5UJ1xuICAgICAgPyBmaW5kTWFkZShvcHRzLCBkaXJuYW1lKHBhcmVudCksIHBhcmVudClcbiAgICAgIDogdW5kZWZpbmVkXG4gIClcbn1cblxuY29uc3QgZmluZE1hZGVTeW5jID0gKG9wdHMsIHBhcmVudCwgcGF0aCA9IHVuZGVmaW5lZCkgPT4ge1xuICBpZiAocGF0aCA9PT0gcGFyZW50KVxuICAgIHJldHVybiB1bmRlZmluZWRcblxuICB0cnkge1xuICAgIHJldHVybiBvcHRzLnN0YXRTeW5jKHBhcmVudCkuaXNEaXJlY3RvcnkoKSA/IHBhdGggOiB1bmRlZmluZWRcbiAgfSBjYXRjaCAoZXIpIHtcbiAgICByZXR1cm4gZXIuY29kZSA9PT0gJ0VOT0VOVCdcbiAgICAgID8gZmluZE1hZGVTeW5jKG9wdHMsIGRpcm5hbWUocGFyZW50KSwgcGFyZW50KVxuICAgICAgOiB1bmRlZmluZWRcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtmaW5kTWFkZSwgZmluZE1hZGVTeW5jfVxuIiwgImNvbnN0IHtkaXJuYW1lfSA9IHJlcXVpcmUoJ3BhdGgnKVxuXG5jb25zdCBta2RpcnBNYW51YWwgPSAocGF0aCwgb3B0cywgbWFkZSkgPT4ge1xuICBvcHRzLnJlY3Vyc2l2ZSA9IGZhbHNlXG4gIGNvbnN0IHBhcmVudCA9IGRpcm5hbWUocGF0aClcbiAgaWYgKHBhcmVudCA9PT0gcGF0aCkge1xuICAgIHJldHVybiBvcHRzLm1rZGlyQXN5bmMocGF0aCwgb3B0cykuY2F0Y2goZXIgPT4ge1xuICAgICAgLy8gc3dhbGxvd2VkIGJ5IHJlY3Vyc2l2ZSBpbXBsZW1lbnRhdGlvbiBvbiBwb3NpeCBzeXN0ZW1zXG4gICAgICAvLyBhbnkgb3RoZXIgZXJyb3IgaXMgYSBmYWlsdXJlXG4gICAgICBpZiAoZXIuY29kZSAhPT0gJ0VJU0RJUicpXG4gICAgICAgIHRocm93IGVyXG4gICAgfSlcbiAgfVxuXG4gIHJldHVybiBvcHRzLm1rZGlyQXN5bmMocGF0aCwgb3B0cykudGhlbigoKSA9PiBtYWRlIHx8IHBhdGgsIGVyID0+IHtcbiAgICBpZiAoZXIuY29kZSA9PT0gJ0VOT0VOVCcpXG4gICAgICByZXR1cm4gbWtkaXJwTWFudWFsKHBhcmVudCwgb3B0cylcbiAgICAgICAgLnRoZW4obWFkZSA9PiBta2RpcnBNYW51YWwocGF0aCwgb3B0cywgbWFkZSkpXG4gICAgaWYgKGVyLmNvZGUgIT09ICdFRVhJU1QnICYmIGVyLmNvZGUgIT09ICdFUk9GUycpXG4gICAgICB0aHJvdyBlclxuICAgIHJldHVybiBvcHRzLnN0YXRBc3luYyhwYXRoKS50aGVuKHN0ID0+IHtcbiAgICAgIGlmIChzdC5pc0RpcmVjdG9yeSgpKVxuICAgICAgICByZXR1cm4gbWFkZVxuICAgICAgZWxzZVxuICAgICAgICB0aHJvdyBlclxuICAgIH0sICgpID0+IHsgdGhyb3cgZXIgfSlcbiAgfSlcbn1cblxuY29uc3QgbWtkaXJwTWFudWFsU3luYyA9IChwYXRoLCBvcHRzLCBtYWRlKSA9PiB7XG4gIGNvbnN0IHBhcmVudCA9IGRpcm5hbWUocGF0aClcbiAgb3B0cy5yZWN1cnNpdmUgPSBmYWxzZVxuXG4gIGlmIChwYXJlbnQgPT09IHBhdGgpIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIG9wdHMubWtkaXJTeW5jKHBhdGgsIG9wdHMpXG4gICAgfSBjYXRjaCAoZXIpIHtcbiAgICAgIC8vIHN3YWxsb3dlZCBieSByZWN1cnNpdmUgaW1wbGVtZW50YXRpb24gb24gcG9zaXggc3lzdGVtc1xuICAgICAgLy8gYW55IG90aGVyIGVycm9yIGlzIGEgZmFpbHVyZVxuICAgICAgaWYgKGVyLmNvZGUgIT09ICdFSVNESVInKVxuICAgICAgICB0aHJvdyBlclxuICAgICAgZWxzZVxuICAgICAgICByZXR1cm5cbiAgICB9XG4gIH1cblxuICB0cnkge1xuICAgIG9wdHMubWtkaXJTeW5jKHBhdGgsIG9wdHMpXG4gICAgcmV0dXJuIG1hZGUgfHwgcGF0aFxuICB9IGNhdGNoIChlcikge1xuICAgIGlmIChlci5jb2RlID09PSAnRU5PRU5UJylcbiAgICAgIHJldHVybiBta2RpcnBNYW51YWxTeW5jKHBhdGgsIG9wdHMsIG1rZGlycE1hbnVhbFN5bmMocGFyZW50LCBvcHRzLCBtYWRlKSlcbiAgICBpZiAoZXIuY29kZSAhPT0gJ0VFWElTVCcgJiYgZXIuY29kZSAhPT0gJ0VST0ZTJylcbiAgICAgIHRocm93IGVyXG4gICAgdHJ5IHtcbiAgICAgIGlmICghb3B0cy5zdGF0U3luYyhwYXRoKS5pc0RpcmVjdG9yeSgpKVxuICAgICAgICB0aHJvdyBlclxuICAgIH0gY2F0Y2ggKF8pIHtcbiAgICAgIHRocm93IGVyXG4gICAgfVxuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge21rZGlycE1hbnVhbCwgbWtkaXJwTWFudWFsU3luY31cbiIsICJjb25zdCB7ZGlybmFtZX0gPSByZXF1aXJlKCdwYXRoJylcbmNvbnN0IHtmaW5kTWFkZSwgZmluZE1hZGVTeW5jfSA9IHJlcXVpcmUoJy4vZmluZC1tYWRlLmpzJylcbmNvbnN0IHtta2RpcnBNYW51YWwsIG1rZGlycE1hbnVhbFN5bmN9ID0gcmVxdWlyZSgnLi9ta2RpcnAtbWFudWFsLmpzJylcblxuY29uc3QgbWtkaXJwTmF0aXZlID0gKHBhdGgsIG9wdHMpID0+IHtcbiAgb3B0cy5yZWN1cnNpdmUgPSB0cnVlXG4gIGNvbnN0IHBhcmVudCA9IGRpcm5hbWUocGF0aClcbiAgaWYgKHBhcmVudCA9PT0gcGF0aClcbiAgICByZXR1cm4gb3B0cy5ta2RpckFzeW5jKHBhdGgsIG9wdHMpXG5cbiAgcmV0dXJuIGZpbmRNYWRlKG9wdHMsIHBhdGgpLnRoZW4obWFkZSA9PlxuICAgIG9wdHMubWtkaXJBc3luYyhwYXRoLCBvcHRzKS50aGVuKCgpID0+IG1hZGUpXG4gICAgLmNhdGNoKGVyID0+IHtcbiAgICAgIGlmIChlci5jb2RlID09PSAnRU5PRU5UJylcbiAgICAgICAgcmV0dXJuIG1rZGlycE1hbnVhbChwYXRoLCBvcHRzKVxuICAgICAgZWxzZVxuICAgICAgICB0aHJvdyBlclxuICAgIH0pKVxufVxuXG5jb25zdCBta2RpcnBOYXRpdmVTeW5jID0gKHBhdGgsIG9wdHMpID0+IHtcbiAgb3B0cy5yZWN1cnNpdmUgPSB0cnVlXG4gIGNvbnN0IHBhcmVudCA9IGRpcm5hbWUocGF0aClcbiAgaWYgKHBhcmVudCA9PT0gcGF0aClcbiAgICByZXR1cm4gb3B0cy5ta2RpclN5bmMocGF0aCwgb3B0cylcblxuICBjb25zdCBtYWRlID0gZmluZE1hZGVTeW5jKG9wdHMsIHBhdGgpXG4gIHRyeSB7XG4gICAgb3B0cy5ta2RpclN5bmMocGF0aCwgb3B0cylcbiAgICByZXR1cm4gbWFkZVxuICB9IGNhdGNoIChlcikge1xuICAgIGlmIChlci5jb2RlID09PSAnRU5PRU5UJylcbiAgICAgIHJldHVybiBta2RpcnBNYW51YWxTeW5jKHBhdGgsIG9wdHMpXG4gICAgZWxzZVxuICAgICAgdGhyb3cgZXJcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtta2RpcnBOYXRpdmUsIG1rZGlycE5hdGl2ZVN5bmN9XG4iLCAiY29uc3QgZnMgPSByZXF1aXJlKCdmcycpXG5cbmNvbnN0IHZlcnNpb24gPSBwcm9jZXNzLmVudi5fX1RFU1RJTkdfTUtESVJQX05PREVfVkVSU0lPTl9fIHx8IHByb2Nlc3MudmVyc2lvblxuY29uc3QgdmVyc0FyciA9IHZlcnNpb24ucmVwbGFjZSgvXnYvLCAnJykuc3BsaXQoJy4nKVxuY29uc3QgaGFzTmF0aXZlID0gK3ZlcnNBcnJbMF0gPiAxMCB8fCArdmVyc0FyclswXSA9PT0gMTAgJiYgK3ZlcnNBcnJbMV0gPj0gMTJcblxuY29uc3QgdXNlTmF0aXZlID0gIWhhc05hdGl2ZSA/ICgpID0+IGZhbHNlIDogb3B0cyA9PiBvcHRzLm1rZGlyID09PSBmcy5ta2RpclxuY29uc3QgdXNlTmF0aXZlU3luYyA9ICFoYXNOYXRpdmUgPyAoKSA9PiBmYWxzZSA6IG9wdHMgPT4gb3B0cy5ta2RpclN5bmMgPT09IGZzLm1rZGlyU3luY1xuXG5tb2R1bGUuZXhwb3J0cyA9IHt1c2VOYXRpdmUsIHVzZU5hdGl2ZVN5bmN9XG4iLCAiY29uc3Qgb3B0c0FyZyA9IHJlcXVpcmUoJy4vbGliL29wdHMtYXJnLmpzJylcbmNvbnN0IHBhdGhBcmcgPSByZXF1aXJlKCcuL2xpYi9wYXRoLWFyZy5qcycpXG5cbmNvbnN0IHtta2RpcnBOYXRpdmUsIG1rZGlycE5hdGl2ZVN5bmN9ID0gcmVxdWlyZSgnLi9saWIvbWtkaXJwLW5hdGl2ZS5qcycpXG5jb25zdCB7bWtkaXJwTWFudWFsLCBta2RpcnBNYW51YWxTeW5jfSA9IHJlcXVpcmUoJy4vbGliL21rZGlycC1tYW51YWwuanMnKVxuY29uc3Qge3VzZU5hdGl2ZSwgdXNlTmF0aXZlU3luY30gPSByZXF1aXJlKCcuL2xpYi91c2UtbmF0aXZlLmpzJylcblxuXG5jb25zdCBta2RpcnAgPSAocGF0aCwgb3B0cykgPT4ge1xuICBwYXRoID0gcGF0aEFyZyhwYXRoKVxuICBvcHRzID0gb3B0c0FyZyhvcHRzKVxuICByZXR1cm4gdXNlTmF0aXZlKG9wdHMpXG4gICAgPyBta2RpcnBOYXRpdmUocGF0aCwgb3B0cylcbiAgICA6IG1rZGlycE1hbnVhbChwYXRoLCBvcHRzKVxufVxuXG5jb25zdCBta2RpcnBTeW5jID0gKHBhdGgsIG9wdHMpID0+IHtcbiAgcGF0aCA9IHBhdGhBcmcocGF0aClcbiAgb3B0cyA9IG9wdHNBcmcob3B0cylcbiAgcmV0dXJuIHVzZU5hdGl2ZVN5bmMob3B0cylcbiAgICA/IG1rZGlycE5hdGl2ZVN5bmMocGF0aCwgb3B0cylcbiAgICA6IG1rZGlycE1hbnVhbFN5bmMocGF0aCwgb3B0cylcbn1cblxubWtkaXJwLnN5bmMgPSBta2RpcnBTeW5jXG5ta2RpcnAubmF0aXZlID0gKHBhdGgsIG9wdHMpID0+IG1rZGlycE5hdGl2ZShwYXRoQXJnKHBhdGgpLCBvcHRzQXJnKG9wdHMpKVxubWtkaXJwLm1hbnVhbCA9IChwYXRoLCBvcHRzKSA9PiBta2RpcnBNYW51YWwocGF0aEFyZyhwYXRoKSwgb3B0c0FyZyhvcHRzKSlcbm1rZGlycC5uYXRpdmVTeW5jID0gKHBhdGgsIG9wdHMpID0+IG1rZGlycE5hdGl2ZVN5bmMocGF0aEFyZyhwYXRoKSwgb3B0c0FyZyhvcHRzKSlcbm1rZGlycC5tYW51YWxTeW5jID0gKHBhdGgsIG9wdHMpID0+IG1rZGlycE1hbnVhbFN5bmMocGF0aEFyZyhwYXRoKSwgb3B0c0FyZyhvcHRzKSlcblxubW9kdWxlLmV4cG9ydHMgPSBta2RpcnBcbiIsICIndXNlIHN0cmljdCdcbmNvbnN0IGZzID0gcmVxdWlyZSgnZnMnKVxuY29uc3QgcGF0aCA9IHJlcXVpcmUoJ3BhdGgnKVxuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuY29uc3QgTENIT1dOID0gZnMubGNob3duID8gJ2xjaG93bicgOiAnY2hvd24nXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuY29uc3QgTENIT1dOU1lOQyA9IGZzLmxjaG93blN5bmMgPyAnbGNob3duU3luYycgOiAnY2hvd25TeW5jJ1xuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuY29uc3QgbmVlZEVJU0RJUkhhbmRsZWQgPSBmcy5sY2hvd24gJiZcbiAgIXByb2Nlc3MudmVyc2lvbi5tYXRjaCgvdjFbMS05XStcXC4vKSAmJlxuICAhcHJvY2Vzcy52ZXJzaW9uLm1hdGNoKC92MTBcXC5bNi05XS8pXG5cbmNvbnN0IGxjaG93blN5bmMgPSAocGF0aCwgdWlkLCBnaWQpID0+IHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gZnNbTENIT1dOU1lOQ10ocGF0aCwgdWlkLCBnaWQpXG4gIH0gY2F0Y2ggKGVyKSB7XG4gICAgaWYgKGVyLmNvZGUgIT09ICdFTk9FTlQnKVxuICAgICAgdGhyb3cgZXJcbiAgfVxufVxuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuY29uc3QgY2hvd25TeW5jID0gKHBhdGgsIHVpZCwgZ2lkKSA9PiB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGZzLmNob3duU3luYyhwYXRoLCB1aWQsIGdpZClcbiAgfSBjYXRjaCAoZXIpIHtcbiAgICBpZiAoZXIuY29kZSAhPT0gJ0VOT0VOVCcpXG4gICAgICB0aHJvdyBlclxuICB9XG59XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5jb25zdCBoYW5kbGVFSVNESVIgPVxuICBuZWVkRUlTRElSSGFuZGxlZCA/IChwYXRoLCB1aWQsIGdpZCwgY2IpID0+IGVyID0+IHtcbiAgICAvLyBOb2RlIHByaW9yIHRvIHYxMCBoYWQgYSB2ZXJ5IHF1ZXN0aW9uYWJsZSBpbXBsZW1lbnRhdGlvbiBvZlxuICAgIC8vIGZzLmxjaG93biwgd2hpY2ggd291bGQgYWx3YXlzIHRyeSB0byBjYWxsIGZzLm9wZW4gb24gYSBkaXJlY3RvcnlcbiAgICAvLyBGYWxsIGJhY2sgdG8gZnMuY2hvd24gaW4gdGhvc2UgY2FzZXMuXG4gICAgaWYgKCFlciB8fCBlci5jb2RlICE9PSAnRUlTRElSJylcbiAgICAgIGNiKGVyKVxuICAgIGVsc2VcbiAgICAgIGZzLmNob3duKHBhdGgsIHVpZCwgZ2lkLCBjYilcbiAgfVxuICA6IChfLCBfXywgX19fLCBjYikgPT4gY2JcblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbmNvbnN0IGhhbmRsZUVJU0RpclN5bmMgPVxuICBuZWVkRUlTRElSSGFuZGxlZCA/IChwYXRoLCB1aWQsIGdpZCkgPT4ge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gbGNob3duU3luYyhwYXRoLCB1aWQsIGdpZClcbiAgICB9IGNhdGNoIChlcikge1xuICAgICAgaWYgKGVyLmNvZGUgIT09ICdFSVNESVInKVxuICAgICAgICB0aHJvdyBlclxuICAgICAgY2hvd25TeW5jKHBhdGgsIHVpZCwgZ2lkKVxuICAgIH1cbiAgfVxuICA6IChwYXRoLCB1aWQsIGdpZCkgPT4gbGNob3duU3luYyhwYXRoLCB1aWQsIGdpZClcblxuLy8gZnMucmVhZGRpciBjb3VsZCBvbmx5IGFjY2VwdCBhbiBvcHRpb25zIG9iamVjdCBhcyBvZiBub2RlIHY2XG5jb25zdCBub2RlVmVyc2lvbiA9IHByb2Nlc3MudmVyc2lvblxubGV0IHJlYWRkaXIgPSAocGF0aCwgb3B0aW9ucywgY2IpID0+IGZzLnJlYWRkaXIocGF0aCwgb3B0aW9ucywgY2IpXG5sZXQgcmVhZGRpclN5bmMgPSAocGF0aCwgb3B0aW9ucykgPT4gZnMucmVhZGRpclN5bmMocGF0aCwgb3B0aW9ucylcbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5pZiAoL152NFxcLi8udGVzdChub2RlVmVyc2lvbikpXG4gIHJlYWRkaXIgPSAocGF0aCwgb3B0aW9ucywgY2IpID0+IGZzLnJlYWRkaXIocGF0aCwgY2IpXG5cbmNvbnN0IGNob3duID0gKGNwYXRoLCB1aWQsIGdpZCwgY2IpID0+IHtcbiAgZnNbTENIT1dOXShjcGF0aCwgdWlkLCBnaWQsIGhhbmRsZUVJU0RJUihjcGF0aCwgdWlkLCBnaWQsIGVyID0+IHtcbiAgICAvLyBTa2lwIEVOT0VOVCBlcnJvclxuICAgIGNiKGVyICYmIGVyLmNvZGUgIT09ICdFTk9FTlQnID8gZXIgOiBudWxsKVxuICB9KSlcbn1cblxuY29uc3QgY2hvd25yS2lkID0gKHAsIGNoaWxkLCB1aWQsIGdpZCwgY2IpID0+IHtcbiAgaWYgKHR5cGVvZiBjaGlsZCA9PT0gJ3N0cmluZycpXG4gICAgcmV0dXJuIGZzLmxzdGF0KHBhdGgucmVzb2x2ZShwLCBjaGlsZCksIChlciwgc3RhdHMpID0+IHtcbiAgICAgIC8vIFNraXAgRU5PRU5UIGVycm9yXG4gICAgICBpZiAoZXIpXG4gICAgICAgIHJldHVybiBjYihlci5jb2RlICE9PSAnRU5PRU5UJyA/IGVyIDogbnVsbClcbiAgICAgIHN0YXRzLm5hbWUgPSBjaGlsZFxuICAgICAgY2hvd25yS2lkKHAsIHN0YXRzLCB1aWQsIGdpZCwgY2IpXG4gICAgfSlcblxuICBpZiAoY2hpbGQuaXNEaXJlY3RvcnkoKSkge1xuICAgIGNob3ducihwYXRoLnJlc29sdmUocCwgY2hpbGQubmFtZSksIHVpZCwgZ2lkLCBlciA9PiB7XG4gICAgICBpZiAoZXIpXG4gICAgICAgIHJldHVybiBjYihlcilcbiAgICAgIGNvbnN0IGNwYXRoID0gcGF0aC5yZXNvbHZlKHAsIGNoaWxkLm5hbWUpXG4gICAgICBjaG93bihjcGF0aCwgdWlkLCBnaWQsIGNiKVxuICAgIH0pXG4gIH0gZWxzZSB7XG4gICAgY29uc3QgY3BhdGggPSBwYXRoLnJlc29sdmUocCwgY2hpbGQubmFtZSlcbiAgICBjaG93bihjcGF0aCwgdWlkLCBnaWQsIGNiKVxuICB9XG59XG5cblxuY29uc3QgY2hvd25yID0gKHAsIHVpZCwgZ2lkLCBjYikgPT4ge1xuICByZWFkZGlyKHAsIHsgd2l0aEZpbGVUeXBlczogdHJ1ZSB9LCAoZXIsIGNoaWxkcmVuKSA9PiB7XG4gICAgLy8gYW55IGVycm9yIG90aGVyIHRoYW4gRU5PVERJUiBvciBFTk9UU1VQIG1lYW5zIGl0J3Mgbm90IHJlYWRhYmxlLFxuICAgIC8vIG9yIGRvZXNuJ3QgZXhpc3QuICBnaXZlIHVwLlxuICAgIGlmIChlcikge1xuICAgICAgaWYgKGVyLmNvZGUgPT09ICdFTk9FTlQnKVxuICAgICAgICByZXR1cm4gY2IoKVxuICAgICAgZWxzZSBpZiAoZXIuY29kZSAhPT0gJ0VOT1RESVInICYmIGVyLmNvZGUgIT09ICdFTk9UU1VQJylcbiAgICAgICAgcmV0dXJuIGNiKGVyKVxuICAgIH1cbiAgICBpZiAoZXIgfHwgIWNoaWxkcmVuLmxlbmd0aClcbiAgICAgIHJldHVybiBjaG93bihwLCB1aWQsIGdpZCwgY2IpXG5cbiAgICBsZXQgbGVuID0gY2hpbGRyZW4ubGVuZ3RoXG4gICAgbGV0IGVyclN0YXRlID0gbnVsbFxuICAgIGNvbnN0IHRoZW4gPSBlciA9PiB7XG4gICAgICBpZiAoZXJyU3RhdGUpXG4gICAgICAgIHJldHVyblxuICAgICAgaWYgKGVyKVxuICAgICAgICByZXR1cm4gY2IoZXJyU3RhdGUgPSBlcilcbiAgICAgIGlmICgtLSBsZW4gPT09IDApXG4gICAgICAgIHJldHVybiBjaG93bihwLCB1aWQsIGdpZCwgY2IpXG4gICAgfVxuXG4gICAgY2hpbGRyZW4uZm9yRWFjaChjaGlsZCA9PiBjaG93bnJLaWQocCwgY2hpbGQsIHVpZCwgZ2lkLCB0aGVuKSlcbiAgfSlcbn1cblxuY29uc3QgY2hvd25yS2lkU3luYyA9IChwLCBjaGlsZCwgdWlkLCBnaWQpID0+IHtcbiAgaWYgKHR5cGVvZiBjaGlsZCA9PT0gJ3N0cmluZycpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3Qgc3RhdHMgPSBmcy5sc3RhdFN5bmMocGF0aC5yZXNvbHZlKHAsIGNoaWxkKSlcbiAgICAgIHN0YXRzLm5hbWUgPSBjaGlsZFxuICAgICAgY2hpbGQgPSBzdGF0c1xuICAgIH0gY2F0Y2ggKGVyKSB7XG4gICAgICBpZiAoZXIuY29kZSA9PT0gJ0VOT0VOVCcpXG4gICAgICAgIHJldHVyblxuICAgICAgZWxzZVxuICAgICAgICB0aHJvdyBlclxuICAgIH1cbiAgfVxuXG4gIGlmIChjaGlsZC5pc0RpcmVjdG9yeSgpKVxuICAgIGNob3duclN5bmMocGF0aC5yZXNvbHZlKHAsIGNoaWxkLm5hbWUpLCB1aWQsIGdpZClcblxuICBoYW5kbGVFSVNEaXJTeW5jKHBhdGgucmVzb2x2ZShwLCBjaGlsZC5uYW1lKSwgdWlkLCBnaWQpXG59XG5cbmNvbnN0IGNob3duclN5bmMgPSAocCwgdWlkLCBnaWQpID0+IHtcbiAgbGV0IGNoaWxkcmVuXG4gIHRyeSB7XG4gICAgY2hpbGRyZW4gPSByZWFkZGlyU3luYyhwLCB7IHdpdGhGaWxlVHlwZXM6IHRydWUgfSlcbiAgfSBjYXRjaCAoZXIpIHtcbiAgICBpZiAoZXIuY29kZSA9PT0gJ0VOT0VOVCcpXG4gICAgICByZXR1cm5cbiAgICBlbHNlIGlmIChlci5jb2RlID09PSAnRU5PVERJUicgfHwgZXIuY29kZSA9PT0gJ0VOT1RTVVAnKVxuICAgICAgcmV0dXJuIGhhbmRsZUVJU0RpclN5bmMocCwgdWlkLCBnaWQpXG4gICAgZWxzZVxuICAgICAgdGhyb3cgZXJcbiAgfVxuXG4gIGlmIChjaGlsZHJlbiAmJiBjaGlsZHJlbi5sZW5ndGgpXG4gICAgY2hpbGRyZW4uZm9yRWFjaChjaGlsZCA9PiBjaG93bnJLaWRTeW5jKHAsIGNoaWxkLCB1aWQsIGdpZCkpXG5cbiAgcmV0dXJuIGhhbmRsZUVJU0RpclN5bmMocCwgdWlkLCBnaWQpXG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2hvd25yXG5jaG93bnIuc3luYyA9IGNob3duclN5bmNcbiIsICIndXNlIHN0cmljdCdcbi8vIHdyYXBwZXIgYXJvdW5kIG1rZGlycCBmb3IgdGFyJ3MgbmVlZHMuXG5cbi8vIFRPRE86IFRoaXMgc2hvdWxkIHByb2JhYmx5IGJlIGEgY2xhc3MsIG5vdCBmdW5jdGlvbmFsbHlcbi8vIHBhc3NpbmcgYXJvdW5kIHN0YXRlIGluIGEgZ2F6aWxsaW9uIGFyZ3MuXG5cbmNvbnN0IG1rZGlycCA9IHJlcXVpcmUoJ21rZGlycCcpXG5jb25zdCBmcyA9IHJlcXVpcmUoJ2ZzJylcbmNvbnN0IHBhdGggPSByZXF1aXJlKCdwYXRoJylcbmNvbnN0IGNob3duciA9IHJlcXVpcmUoJ2Nob3ducicpXG5jb25zdCBub3JtUGF0aCA9IHJlcXVpcmUoJy4vbm9ybWFsaXplLXdpbmRvd3MtcGF0aC5qcycpXG5cbmNsYXNzIFN5bWxpbmtFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3IgKHN5bWxpbmssIHBhdGgpIHtcbiAgICBzdXBlcignQ2Fubm90IGV4dHJhY3QgdGhyb3VnaCBzeW1ib2xpYyBsaW5rJylcbiAgICB0aGlzLnBhdGggPSBwYXRoXG4gICAgdGhpcy5zeW1saW5rID0gc3ltbGlua1xuICB9XG5cbiAgZ2V0IG5hbWUgKCkge1xuICAgIHJldHVybiAnU3lsaW5rRXJyb3InXG4gIH1cbn1cblxuY2xhc3MgQ3dkRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIGNvbnN0cnVjdG9yIChwYXRoLCBjb2RlKSB7XG4gICAgc3VwZXIoY29kZSArICc6IENhbm5vdCBjZCBpbnRvIFxcJycgKyBwYXRoICsgJ1xcJycpXG4gICAgdGhpcy5wYXRoID0gcGF0aFxuICAgIHRoaXMuY29kZSA9IGNvZGVcbiAgfVxuXG4gIGdldCBuYW1lICgpIHtcbiAgICByZXR1cm4gJ0N3ZEVycm9yJ1xuICB9XG59XG5cbmNvbnN0IGNHZXQgPSAoY2FjaGUsIGtleSkgPT4gY2FjaGUuZ2V0KG5vcm1QYXRoKGtleSkpXG5jb25zdCBjU2V0ID0gKGNhY2hlLCBrZXksIHZhbCkgPT4gY2FjaGUuc2V0KG5vcm1QYXRoKGtleSksIHZhbClcblxuY29uc3QgY2hlY2tDd2QgPSAoZGlyLCBjYikgPT4ge1xuICBmcy5zdGF0KGRpciwgKGVyLCBzdCkgPT4ge1xuICAgIGlmIChlciB8fCAhc3QuaXNEaXJlY3RvcnkoKSkge1xuICAgICAgZXIgPSBuZXcgQ3dkRXJyb3IoZGlyLCBlciAmJiBlci5jb2RlIHx8ICdFTk9URElSJylcbiAgICB9XG4gICAgY2IoZXIpXG4gIH0pXG59XG5cbm1vZHVsZS5leHBvcnRzID0gKGRpciwgb3B0LCBjYikgPT4ge1xuICBkaXIgPSBub3JtUGF0aChkaXIpXG5cbiAgLy8gaWYgdGhlcmUncyBhbnkgb3ZlcmxhcCBiZXR3ZWVuIG1hc2sgYW5kIG1vZGUsXG4gIC8vIHRoZW4gd2UnbGwgbmVlZCBhbiBleHBsaWNpdCBjaG1vZFxuICBjb25zdCB1bWFzayA9IG9wdC51bWFza1xuICBjb25zdCBtb2RlID0gb3B0Lm1vZGUgfCAwbzA3MDBcbiAgY29uc3QgbmVlZENobW9kID0gKG1vZGUgJiB1bWFzaykgIT09IDBcblxuICBjb25zdCB1aWQgPSBvcHQudWlkXG4gIGNvbnN0IGdpZCA9IG9wdC5naWRcbiAgY29uc3QgZG9DaG93biA9IHR5cGVvZiB1aWQgPT09ICdudW1iZXInICYmXG4gICAgdHlwZW9mIGdpZCA9PT0gJ251bWJlcicgJiZcbiAgICAodWlkICE9PSBvcHQucHJvY2Vzc1VpZCB8fCBnaWQgIT09IG9wdC5wcm9jZXNzR2lkKVxuXG4gIGNvbnN0IHByZXNlcnZlID0gb3B0LnByZXNlcnZlXG4gIGNvbnN0IHVubGluayA9IG9wdC51bmxpbmtcbiAgY29uc3QgY2FjaGUgPSBvcHQuY2FjaGVcbiAgY29uc3QgY3dkID0gbm9ybVBhdGgob3B0LmN3ZClcblxuICBjb25zdCBkb25lID0gKGVyLCBjcmVhdGVkKSA9PiB7XG4gICAgaWYgKGVyKSB7XG4gICAgICBjYihlcilcbiAgICB9IGVsc2Uge1xuICAgICAgY1NldChjYWNoZSwgZGlyLCB0cnVlKVxuICAgICAgaWYgKGNyZWF0ZWQgJiYgZG9DaG93bikge1xuICAgICAgICBjaG93bnIoY3JlYXRlZCwgdWlkLCBnaWQsIGVyID0+IGRvbmUoZXIpKVxuICAgICAgfSBlbHNlIGlmIChuZWVkQ2htb2QpIHtcbiAgICAgICAgZnMuY2htb2QoZGlyLCBtb2RlLCBjYilcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNiKClcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAoY2FjaGUgJiYgY0dldChjYWNoZSwgZGlyKSA9PT0gdHJ1ZSkge1xuICAgIHJldHVybiBkb25lKClcbiAgfVxuXG4gIGlmIChkaXIgPT09IGN3ZCkge1xuICAgIHJldHVybiBjaGVja0N3ZChkaXIsIGRvbmUpXG4gIH1cblxuICBpZiAocHJlc2VydmUpIHtcbiAgICByZXR1cm4gbWtkaXJwKGRpciwgeyBtb2RlIH0pLnRoZW4obWFkZSA9PiBkb25lKG51bGwsIG1hZGUpLCBkb25lKVxuICB9XG5cbiAgY29uc3Qgc3ViID0gbm9ybVBhdGgocGF0aC5yZWxhdGl2ZShjd2QsIGRpcikpXG4gIGNvbnN0IHBhcnRzID0gc3ViLnNwbGl0KCcvJylcbiAgbWtkaXJfKGN3ZCwgcGFydHMsIG1vZGUsIGNhY2hlLCB1bmxpbmssIGN3ZCwgbnVsbCwgZG9uZSlcbn1cblxuY29uc3QgbWtkaXJfID0gKGJhc2UsIHBhcnRzLCBtb2RlLCBjYWNoZSwgdW5saW5rLCBjd2QsIGNyZWF0ZWQsIGNiKSA9PiB7XG4gIGlmICghcGFydHMubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGNiKG51bGwsIGNyZWF0ZWQpXG4gIH1cbiAgY29uc3QgcCA9IHBhcnRzLnNoaWZ0KClcbiAgY29uc3QgcGFydCA9IG5vcm1QYXRoKHBhdGgucmVzb2x2ZShiYXNlICsgJy8nICsgcCkpXG4gIGlmIChjR2V0KGNhY2hlLCBwYXJ0KSkge1xuICAgIHJldHVybiBta2Rpcl8ocGFydCwgcGFydHMsIG1vZGUsIGNhY2hlLCB1bmxpbmssIGN3ZCwgY3JlYXRlZCwgY2IpXG4gIH1cbiAgZnMubWtkaXIocGFydCwgbW9kZSwgb25ta2RpcihwYXJ0LCBwYXJ0cywgbW9kZSwgY2FjaGUsIHVubGluaywgY3dkLCBjcmVhdGVkLCBjYikpXG59XG5cbmNvbnN0IG9ubWtkaXIgPSAocGFydCwgcGFydHMsIG1vZGUsIGNhY2hlLCB1bmxpbmssIGN3ZCwgY3JlYXRlZCwgY2IpID0+IGVyID0+IHtcbiAgaWYgKGVyKSB7XG4gICAgZnMubHN0YXQocGFydCwgKHN0YXRFciwgc3QpID0+IHtcbiAgICAgIGlmIChzdGF0RXIpIHtcbiAgICAgICAgc3RhdEVyLnBhdGggPSBzdGF0RXIucGF0aCAmJiBub3JtUGF0aChzdGF0RXIucGF0aClcbiAgICAgICAgY2Ioc3RhdEVyKVxuICAgICAgfSBlbHNlIGlmIChzdC5pc0RpcmVjdG9yeSgpKSB7XG4gICAgICAgIG1rZGlyXyhwYXJ0LCBwYXJ0cywgbW9kZSwgY2FjaGUsIHVubGluaywgY3dkLCBjcmVhdGVkLCBjYilcbiAgICAgIH0gZWxzZSBpZiAodW5saW5rKSB7XG4gICAgICAgIGZzLnVubGluayhwYXJ0LCBlciA9PiB7XG4gICAgICAgICAgaWYgKGVyKSB7XG4gICAgICAgICAgICByZXR1cm4gY2IoZXIpXG4gICAgICAgICAgfVxuICAgICAgICAgIGZzLm1rZGlyKHBhcnQsIG1vZGUsIG9ubWtkaXIocGFydCwgcGFydHMsIG1vZGUsIGNhY2hlLCB1bmxpbmssIGN3ZCwgY3JlYXRlZCwgY2IpKVxuICAgICAgICB9KVxuICAgICAgfSBlbHNlIGlmIChzdC5pc1N5bWJvbGljTGluaygpKSB7XG4gICAgICAgIHJldHVybiBjYihuZXcgU3ltbGlua0Vycm9yKHBhcnQsIHBhcnQgKyAnLycgKyBwYXJ0cy5qb2luKCcvJykpKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2IoZXIpXG4gICAgICB9XG4gICAgfSlcbiAgfSBlbHNlIHtcbiAgICBjcmVhdGVkID0gY3JlYXRlZCB8fCBwYXJ0XG4gICAgbWtkaXJfKHBhcnQsIHBhcnRzLCBtb2RlLCBjYWNoZSwgdW5saW5rLCBjd2QsIGNyZWF0ZWQsIGNiKVxuICB9XG59XG5cbmNvbnN0IGNoZWNrQ3dkU3luYyA9IGRpciA9PiB7XG4gIGxldCBvayA9IGZhbHNlXG4gIGxldCBjb2RlID0gJ0VOT1RESVInXG4gIHRyeSB7XG4gICAgb2sgPSBmcy5zdGF0U3luYyhkaXIpLmlzRGlyZWN0b3J5KClcbiAgfSBjYXRjaCAoZXIpIHtcbiAgICBjb2RlID0gZXIuY29kZVxuICB9IGZpbmFsbHkge1xuICAgIGlmICghb2spIHtcbiAgICAgIHRocm93IG5ldyBDd2RFcnJvcihkaXIsIGNvZGUpXG4gICAgfVxuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzLnN5bmMgPSAoZGlyLCBvcHQpID0+IHtcbiAgZGlyID0gbm9ybVBhdGgoZGlyKVxuICAvLyBpZiB0aGVyZSdzIGFueSBvdmVybGFwIGJldHdlZW4gbWFzayBhbmQgbW9kZSxcbiAgLy8gdGhlbiB3ZSdsbCBuZWVkIGFuIGV4cGxpY2l0IGNobW9kXG4gIGNvbnN0IHVtYXNrID0gb3B0LnVtYXNrXG4gIGNvbnN0IG1vZGUgPSBvcHQubW9kZSB8IDBvMDcwMFxuICBjb25zdCBuZWVkQ2htb2QgPSAobW9kZSAmIHVtYXNrKSAhPT0gMFxuXG4gIGNvbnN0IHVpZCA9IG9wdC51aWRcbiAgY29uc3QgZ2lkID0gb3B0LmdpZFxuICBjb25zdCBkb0Nob3duID0gdHlwZW9mIHVpZCA9PT0gJ251bWJlcicgJiZcbiAgICB0eXBlb2YgZ2lkID09PSAnbnVtYmVyJyAmJlxuICAgICh1aWQgIT09IG9wdC5wcm9jZXNzVWlkIHx8IGdpZCAhPT0gb3B0LnByb2Nlc3NHaWQpXG5cbiAgY29uc3QgcHJlc2VydmUgPSBvcHQucHJlc2VydmVcbiAgY29uc3QgdW5saW5rID0gb3B0LnVubGlua1xuICBjb25zdCBjYWNoZSA9IG9wdC5jYWNoZVxuICBjb25zdCBjd2QgPSBub3JtUGF0aChvcHQuY3dkKVxuXG4gIGNvbnN0IGRvbmUgPSAoY3JlYXRlZCkgPT4ge1xuICAgIGNTZXQoY2FjaGUsIGRpciwgdHJ1ZSlcbiAgICBpZiAoY3JlYXRlZCAmJiBkb0Nob3duKSB7XG4gICAgICBjaG93bnIuc3luYyhjcmVhdGVkLCB1aWQsIGdpZClcbiAgICB9XG4gICAgaWYgKG5lZWRDaG1vZCkge1xuICAgICAgZnMuY2htb2RTeW5jKGRpciwgbW9kZSlcbiAgICB9XG4gIH1cblxuICBpZiAoY2FjaGUgJiYgY0dldChjYWNoZSwgZGlyKSA9PT0gdHJ1ZSkge1xuICAgIHJldHVybiBkb25lKClcbiAgfVxuXG4gIGlmIChkaXIgPT09IGN3ZCkge1xuICAgIGNoZWNrQ3dkU3luYyhjd2QpXG4gICAgcmV0dXJuIGRvbmUoKVxuICB9XG5cbiAgaWYgKHByZXNlcnZlKSB7XG4gICAgcmV0dXJuIGRvbmUobWtkaXJwLnN5bmMoZGlyLCBtb2RlKSlcbiAgfVxuXG4gIGNvbnN0IHN1YiA9IG5vcm1QYXRoKHBhdGgucmVsYXRpdmUoY3dkLCBkaXIpKVxuICBjb25zdCBwYXJ0cyA9IHN1Yi5zcGxpdCgnLycpXG4gIGxldCBjcmVhdGVkID0gbnVsbFxuICBmb3IgKGxldCBwID0gcGFydHMuc2hpZnQoKSwgcGFydCA9IGN3ZDtcbiAgICBwICYmIChwYXJ0ICs9ICcvJyArIHApO1xuICAgIHAgPSBwYXJ0cy5zaGlmdCgpKSB7XG4gICAgcGFydCA9IG5vcm1QYXRoKHBhdGgucmVzb2x2ZShwYXJ0KSlcbiAgICBpZiAoY0dldChjYWNoZSwgcGFydCkpIHtcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGZzLm1rZGlyU3luYyhwYXJ0LCBtb2RlKVxuICAgICAgY3JlYXRlZCA9IGNyZWF0ZWQgfHwgcGFydFxuICAgICAgY1NldChjYWNoZSwgcGFydCwgdHJ1ZSlcbiAgICB9IGNhdGNoIChlcikge1xuICAgICAgY29uc3Qgc3QgPSBmcy5sc3RhdFN5bmMocGFydClcbiAgICAgIGlmIChzdC5pc0RpcmVjdG9yeSgpKSB7XG4gICAgICAgIGNTZXQoY2FjaGUsIHBhcnQsIHRydWUpXG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9IGVsc2UgaWYgKHVubGluaykge1xuICAgICAgICBmcy51bmxpbmtTeW5jKHBhcnQpXG4gICAgICAgIGZzLm1rZGlyU3luYyhwYXJ0LCBtb2RlKVxuICAgICAgICBjcmVhdGVkID0gY3JlYXRlZCB8fCBwYXJ0XG4gICAgICAgIGNTZXQoY2FjaGUsIHBhcnQsIHRydWUpXG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9IGVsc2UgaWYgKHN0LmlzU3ltYm9saWNMaW5rKCkpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBTeW1saW5rRXJyb3IocGFydCwgcGFydCArICcvJyArIHBhcnRzLmpvaW4oJy8nKSlcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gZG9uZShjcmVhdGVkKVxufVxuIiwgIi8vIHdhcm5pbmc6IGV4dHJlbWVseSBob3QgY29kZSBwYXRoLlxuLy8gVGhpcyBoYXMgYmVlbiBtZXRpY3Vsb3VzbHkgb3B0aW1pemVkIGZvciB1c2Vcbi8vIHdpdGhpbiBucG0gaW5zdGFsbCBvbiBsYXJnZSBwYWNrYWdlIHRyZWVzLlxuLy8gRG8gbm90IGVkaXQgd2l0aG91dCBjYXJlZnVsIGJlbmNobWFya2luZy5cbmNvbnN0IG5vcm1hbGl6ZUNhY2hlID0gT2JqZWN0LmNyZWF0ZShudWxsKVxuY29uc3QgeyBoYXNPd25Qcm9wZXJ0eSB9ID0gT2JqZWN0LnByb3RvdHlwZVxubW9kdWxlLmV4cG9ydHMgPSBzID0+IHtcbiAgaWYgKCFoYXNPd25Qcm9wZXJ0eS5jYWxsKG5vcm1hbGl6ZUNhY2hlLCBzKSkge1xuICAgIG5vcm1hbGl6ZUNhY2hlW3NdID0gcy5ub3JtYWxpemUoJ05GS0QnKVxuICB9XG4gIHJldHVybiBub3JtYWxpemVDYWNoZVtzXVxufVxuIiwgIi8vIEEgcGF0aCBleGNsdXNpdmUgcmVzZXJ2YXRpb24gc3lzdGVtXG4vLyByZXNlcnZlKFtsaXN0LCBvZiwgcGF0aHNdLCBmbilcbi8vIFdoZW4gdGhlIGZuIGlzIGZpcnN0IGluIGxpbmUgZm9yIGFsbCBpdHMgcGF0aHMsIGl0XG4vLyBpcyBjYWxsZWQgd2l0aCBhIGNiIHRoYXQgY2xlYXJzIHRoZSByZXNlcnZhdGlvbi5cbi8vXG4vLyBVc2VkIGJ5IGFzeW5jIHVucGFjayB0byBhdm9pZCBjbG9iYmVyaW5nIHBhdGhzIGluIHVzZSxcbi8vIHdoaWxlIHN0aWxsIGFsbG93aW5nIG1heGltYWwgc2FmZSBwYXJhbGxlbGl6YXRpb24uXG5cbmNvbnN0IGFzc2VydCA9IHJlcXVpcmUoJ2Fzc2VydCcpXG5jb25zdCBub3JtYWxpemUgPSByZXF1aXJlKCcuL25vcm1hbGl6ZS11bmljb2RlLmpzJylcbmNvbnN0IHN0cmlwU2xhc2hlcyA9IHJlcXVpcmUoJy4vc3RyaXAtdHJhaWxpbmctc2xhc2hlcy5qcycpXG5jb25zdCB7IGpvaW4gfSA9IHJlcXVpcmUoJ3BhdGgnKVxuXG5jb25zdCBwbGF0Zm9ybSA9IHByb2Nlc3MuZW52LlRFU1RJTkdfVEFSX0ZBS0VfUExBVEZPUk0gfHwgcHJvY2Vzcy5wbGF0Zm9ybVxuY29uc3QgaXNXaW5kb3dzID0gcGxhdGZvcm0gPT09ICd3aW4zMidcblxubW9kdWxlLmV4cG9ydHMgPSAoKSA9PiB7XG4gIC8vIHBhdGggPT4gW2Z1bmN0aW9uIG9yIFNldF1cbiAgLy8gQSBTZXQgb2JqZWN0IG1lYW5zIGEgZGlyZWN0b3J5IHJlc2VydmF0aW9uXG4gIC8vIEEgZm4gaXMgYSBkaXJlY3QgcmVzZXJ2YXRpb24gb24gdGhhdCBwYXRoXG4gIGNvbnN0IHF1ZXVlcyA9IG5ldyBNYXAoKVxuXG4gIC8vIGZuID0+IHtwYXRoczpbcGF0aCwuLi5dLCBkaXJzOltwYXRoLCAuLi5dfVxuICBjb25zdCByZXNlcnZhdGlvbnMgPSBuZXcgTWFwKClcblxuICAvLyByZXR1cm4gYSBzZXQgb2YgcGFyZW50IGRpcnMgZm9yIGEgZ2l2ZW4gcGF0aFxuICAvLyAnL2EvYi9jL2QnIC0+IFsnLycsICcvYScsICcvYS9iJywgJy9hL2IvYycsICcvYS9iL2MvZCddXG4gIGNvbnN0IGdldERpcnMgPSBwYXRoID0+IHtcbiAgICBjb25zdCBkaXJzID0gcGF0aC5zcGxpdCgnLycpLnNsaWNlKDAsIC0xKS5yZWR1Y2UoKHNldCwgcGF0aCkgPT4ge1xuICAgICAgaWYgKHNldC5sZW5ndGgpIHtcbiAgICAgICAgcGF0aCA9IGpvaW4oc2V0W3NldC5sZW5ndGggLSAxXSwgcGF0aClcbiAgICAgIH1cbiAgICAgIHNldC5wdXNoKHBhdGggfHwgJy8nKVxuICAgICAgcmV0dXJuIHNldFxuICAgIH0sIFtdKVxuICAgIHJldHVybiBkaXJzXG4gIH1cblxuICAvLyBmdW5jdGlvbnMgY3VycmVudGx5IHJ1bm5pbmdcbiAgY29uc3QgcnVubmluZyA9IG5ldyBTZXQoKVxuXG4gIC8vIHJldHVybiB0aGUgcXVldWVzIGZvciBlYWNoIHBhdGggdGhlIGZ1bmN0aW9uIGNhcmVzIGFib3V0XG4gIC8vIGZuID0+IHtwYXRocywgZGlyc31cbiAgY29uc3QgZ2V0UXVldWVzID0gZm4gPT4ge1xuICAgIGNvbnN0IHJlcyA9IHJlc2VydmF0aW9ucy5nZXQoZm4pXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmIC0gdW5wb3NzaWJsZSAqL1xuICAgIGlmICghcmVzKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2Z1bmN0aW9uIGRvZXMgbm90IGhhdmUgYW55IHBhdGggcmVzZXJ2YXRpb25zJylcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIHBhdGhzOiByZXMucGF0aHMubWFwKHBhdGggPT4gcXVldWVzLmdldChwYXRoKSksXG4gICAgICBkaXJzOiBbLi4ucmVzLmRpcnNdLm1hcChwYXRoID0+IHF1ZXVlcy5nZXQocGF0aCkpLFxuICAgIH1cbiAgfVxuXG4gIC8vIGNoZWNrIGlmIGZuIGlzIGZpcnN0IGluIGxpbmUgZm9yIGFsbCBpdHMgcGF0aHMsIGFuZCBpc1xuICAvLyBpbmNsdWRlZCBpbiB0aGUgZmlyc3Qgc2V0IGZvciBhbGwgaXRzIGRpciBxdWV1ZXNcbiAgY29uc3QgY2hlY2sgPSBmbiA9PiB7XG4gICAgY29uc3QgeyBwYXRocywgZGlycyB9ID0gZ2V0UXVldWVzKGZuKVxuICAgIHJldHVybiBwYXRocy5ldmVyeShxID0+IHFbMF0gPT09IGZuKSAmJlxuICAgICAgZGlycy5ldmVyeShxID0+IHFbMF0gaW5zdGFuY2VvZiBTZXQgJiYgcVswXS5oYXMoZm4pKVxuICB9XG5cbiAgLy8gcnVuIHRoZSBmdW5jdGlvbiBpZiBpdCdzIGZpcnN0IGluIGxpbmUgYW5kIG5vdCBhbHJlYWR5IHJ1bm5pbmdcbiAgY29uc3QgcnVuID0gZm4gPT4ge1xuICAgIGlmIChydW5uaW5nLmhhcyhmbikgfHwgIWNoZWNrKGZuKSkge1xuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuICAgIHJ1bm5pbmcuYWRkKGZuKVxuICAgIGZuKCgpID0+IGNsZWFyKGZuKSlcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgY29uc3QgY2xlYXIgPSBmbiA9PiB7XG4gICAgaWYgKCFydW5uaW5nLmhhcyhmbikpIHtcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cblxuICAgIGNvbnN0IHsgcGF0aHMsIGRpcnMgfSA9IHJlc2VydmF0aW9ucy5nZXQoZm4pXG4gICAgY29uc3QgbmV4dCA9IG5ldyBTZXQoKVxuXG4gICAgcGF0aHMuZm9yRWFjaChwYXRoID0+IHtcbiAgICAgIGNvbnN0IHEgPSBxdWV1ZXMuZ2V0KHBhdGgpXG4gICAgICBhc3NlcnQuZXF1YWwocVswXSwgZm4pXG4gICAgICBpZiAocS5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgcXVldWVzLmRlbGV0ZShwYXRoKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcS5zaGlmdCgpXG4gICAgICAgIGlmICh0eXBlb2YgcVswXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIG5leHQuYWRkKHFbMF0pXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcVswXS5mb3JFYWNoKGZuID0+IG5leHQuYWRkKGZuKSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pXG5cbiAgICBkaXJzLmZvckVhY2goZGlyID0+IHtcbiAgICAgIGNvbnN0IHEgPSBxdWV1ZXMuZ2V0KGRpcilcbiAgICAgIGFzc2VydChxWzBdIGluc3RhbmNlb2YgU2V0KVxuICAgICAgaWYgKHFbMF0uc2l6ZSA9PT0gMSAmJiBxLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICBxdWV1ZXMuZGVsZXRlKGRpcilcbiAgICAgIH0gZWxzZSBpZiAocVswXS5zaXplID09PSAxKSB7XG4gICAgICAgIHEuc2hpZnQoKVxuXG4gICAgICAgIC8vIG11c3QgYmUgYSBmdW5jdGlvbiBvciBlbHNlIHRoZSBTZXQgd291bGQndmUgYmVlbiByZXVzZWRcbiAgICAgICAgbmV4dC5hZGQocVswXSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHFbMF0uZGVsZXRlKGZuKVxuICAgICAgfVxuICAgIH0pXG4gICAgcnVubmluZy5kZWxldGUoZm4pXG5cbiAgICBuZXh0LmZvckVhY2goZm4gPT4gcnVuKGZuKSlcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgY29uc3QgcmVzZXJ2ZSA9IChwYXRocywgZm4pID0+IHtcbiAgICAvLyBjb2xsaWRlIG9uIG1hdGNoZXMgYWNyb3NzIGNhc2UgYW5kIHVuaWNvZGUgbm9ybWFsaXphdGlvblxuICAgIC8vIE9uIHdpbmRvd3MsIHRoYW5rcyB0byB0aGUgbWFnaWMgb2YgOC4zIHNob3J0bmFtZXMsIGl0IGlzIGZ1bmRhbWVudGFsbHlcbiAgICAvLyBpbXBvc3NpYmxlIHRvIGRldGVybWluZSB3aGV0aGVyIHR3byBwYXRocyByZWZlciB0byB0aGUgc2FtZSB0aGluZyBvblxuICAgIC8vIGRpc2ssIHdpdGhvdXQgYXNraW5nIHRoZSBrZXJuZWwgZm9yIGEgc2hvcnRuYW1lLlxuICAgIC8vIFNvLCB3ZSBqdXN0IHByZXRlbmQgdGhhdCBldmVyeSBwYXRoIG1hdGNoZXMgZXZlcnkgb3RoZXIgcGF0aCBoZXJlLFxuICAgIC8vIGVmZmVjdGl2ZWx5IHJlbW92aW5nIGFsbCBwYXJhbGxlbGl6YXRpb24gb24gd2luZG93cy5cbiAgICBwYXRocyA9IGlzV2luZG93cyA/IFsnd2luMzIgcGFyYWxsZWxpemF0aW9uIGRpc2FibGVkJ10gOiBwYXRocy5tYXAocCA9PiB7XG4gICAgICAvLyBkb24ndCBuZWVkIG5vcm1QYXRoLCBiZWNhdXNlIHdlIHNraXAgdGhpcyBlbnRpcmVseSBmb3Igd2luZG93c1xuICAgICAgcmV0dXJuIG5vcm1hbGl6ZShzdHJpcFNsYXNoZXMoam9pbihwKSkpLnRvTG93ZXJDYXNlKClcbiAgICB9KVxuXG4gICAgY29uc3QgZGlycyA9IG5ldyBTZXQoXG4gICAgICBwYXRocy5tYXAocGF0aCA9PiBnZXREaXJzKHBhdGgpKS5yZWR1Y2UoKGEsIGIpID0+IGEuY29uY2F0KGIpKVxuICAgIClcbiAgICByZXNlcnZhdGlvbnMuc2V0KGZuLCB7IGRpcnMsIHBhdGhzIH0pXG4gICAgcGF0aHMuZm9yRWFjaChwYXRoID0+IHtcbiAgICAgIGNvbnN0IHEgPSBxdWV1ZXMuZ2V0KHBhdGgpXG4gICAgICBpZiAoIXEpIHtcbiAgICAgICAgcXVldWVzLnNldChwYXRoLCBbZm5dKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcS5wdXNoKGZuKVxuICAgICAgfVxuICAgIH0pXG4gICAgZGlycy5mb3JFYWNoKGRpciA9PiB7XG4gICAgICBjb25zdCBxID0gcXVldWVzLmdldChkaXIpXG4gICAgICBpZiAoIXEpIHtcbiAgICAgICAgcXVldWVzLnNldChkaXIsIFtuZXcgU2V0KFtmbl0pXSlcbiAgICAgIH0gZWxzZSBpZiAocVtxLmxlbmd0aCAtIDFdIGluc3RhbmNlb2YgU2V0KSB7XG4gICAgICAgIHFbcS5sZW5ndGggLSAxXS5hZGQoZm4pXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBxLnB1c2gobmV3IFNldChbZm5dKSlcbiAgICAgIH1cbiAgICB9KVxuXG4gICAgcmV0dXJuIHJ1bihmbilcbiAgfVxuXG4gIHJldHVybiB7IGNoZWNrLCByZXNlcnZlIH1cbn1cbiIsICIvLyBHZXQgdGhlIGFwcHJvcHJpYXRlIGZsYWcgdG8gdXNlIGZvciBjcmVhdGluZyBmaWxlc1xuLy8gV2UgdXNlIGZtYXAgb24gV2luZG93cyBwbGF0Zm9ybXMgZm9yIGZpbGVzIGxlc3MgdGhhblxuLy8gNTEya2IuICBUaGlzIGlzIGEgZmFpcmx5IGxvdyBsaW1pdCwgYnV0IGF2b2lkcyBtYWtpbmdcbi8vIHRoaW5ncyBzbG93ZXIgaW4gc29tZSBjYXNlcy4gIFNpbmNlIG1vc3Qgb2Ygd2hhdCB0aGlzXG4vLyBsaWJyYXJ5IGlzIHVzZWQgZm9yIGlzIGV4dHJhY3RpbmcgdGFyYmFsbHMgb2YgbWFueVxuLy8gcmVsYXRpdmVseSBzbWFsbCBmaWxlcyBpbiBucG0gcGFja2FnZXMgYW5kIHRoZSBsaWtlLFxuLy8gaXQgY2FuIGJlIGEgYmlnIGJvb3N0IG9uIFdpbmRvd3MgcGxhdGZvcm1zLlxuLy8gT25seSBzdXBwb3J0ZWQgaW4gTm9kZSB2MTIuOS4wIGFuZCBhYm92ZS5cbmNvbnN0IHBsYXRmb3JtID0gcHJvY2Vzcy5lbnYuX19GQUtFX1BMQVRGT1JNX18gfHwgcHJvY2Vzcy5wbGF0Zm9ybVxuY29uc3QgaXNXaW5kb3dzID0gcGxhdGZvcm0gPT09ICd3aW4zMidcbmNvbnN0IGZzID0gZ2xvYmFsLl9fRkFLRV9URVNUSU5HX0ZTX18gfHwgcmVxdWlyZSgnZnMnKVxuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuY29uc3QgeyBPX0NSRUFULCBPX1RSVU5DLCBPX1dST05MWSwgVVZfRlNfT19GSUxFTUFQID0gMCB9ID0gZnMuY29uc3RhbnRzXG5cbmNvbnN0IGZNYXBFbmFibGVkID0gaXNXaW5kb3dzICYmICEhVVZfRlNfT19GSUxFTUFQXG5jb25zdCBmTWFwTGltaXQgPSA1MTIgKiAxMDI0XG5jb25zdCBmTWFwRmxhZyA9IFVWX0ZTX09fRklMRU1BUCB8IE9fVFJVTkMgfCBPX0NSRUFUIHwgT19XUk9OTFlcbm1vZHVsZS5leHBvcnRzID0gIWZNYXBFbmFibGVkID8gKCkgPT4gJ3cnXG4gIDogc2l6ZSA9PiBzaXplIDwgZk1hcExpbWl0ID8gZk1hcEZsYWcgOiAndydcbiIsICIndXNlIHN0cmljdCdcblxuLy8gdGhlIFBFTkQvVU5QRU5EIHN0dWZmIHRyYWNrcyB3aGV0aGVyIHdlJ3JlIHJlYWR5IHRvIGVtaXQgZW5kL2Nsb3NlIHlldC5cbi8vIGJ1dCB0aGUgcGF0aCByZXNlcnZhdGlvbnMgYXJlIHJlcXVpcmVkIHRvIGF2b2lkIHJhY2UgY29uZGl0aW9ucyB3aGVyZVxuLy8gcGFyYWxsZWxpemVkIHVucGFjayBvcHMgbWF5IG1lc3Mgd2l0aCBvbmUgYW5vdGhlciwgZHVlIHRvIGRlcGVuZGVuY2llc1xuLy8gKGxpa2UgYSBMaW5rIGRlcGVuZGluZyBvbiBpdHMgdGFyZ2V0KSBvciBkZXN0cnVjdGl2ZSBvcGVyYXRpb25zIChsaWtlXG4vLyBjbG9iYmVyaW5nIGFuIGZzIG9iamVjdCB0byBjcmVhdGUgb25lIG9mIGEgZGlmZmVyZW50IHR5cGUuKVxuXG5jb25zdCBhc3NlcnQgPSByZXF1aXJlKCdhc3NlcnQnKVxuY29uc3QgUGFyc2VyID0gcmVxdWlyZSgnLi9wYXJzZS5qcycpXG5jb25zdCBmcyA9IHJlcXVpcmUoJ2ZzJylcbmNvbnN0IGZzbSA9IHJlcXVpcmUoJ2ZzLW1pbmlwYXNzJylcbmNvbnN0IHBhdGggPSByZXF1aXJlKCdwYXRoJylcbmNvbnN0IG1rZGlyID0gcmVxdWlyZSgnLi9ta2Rpci5qcycpXG5jb25zdCB3YyA9IHJlcXVpcmUoJy4vd2luY2hhcnMuanMnKVxuY29uc3QgcGF0aFJlc2VydmF0aW9ucyA9IHJlcXVpcmUoJy4vcGF0aC1yZXNlcnZhdGlvbnMuanMnKVxuY29uc3Qgc3RyaXBBYnNvbHV0ZVBhdGggPSByZXF1aXJlKCcuL3N0cmlwLWFic29sdXRlLXBhdGguanMnKVxuY29uc3Qgbm9ybVBhdGggPSByZXF1aXJlKCcuL25vcm1hbGl6ZS13aW5kb3dzLXBhdGguanMnKVxuY29uc3Qgc3RyaXBTbGFzaCA9IHJlcXVpcmUoJy4vc3RyaXAtdHJhaWxpbmctc2xhc2hlcy5qcycpXG5jb25zdCBub3JtYWxpemUgPSByZXF1aXJlKCcuL25vcm1hbGl6ZS11bmljb2RlLmpzJylcblxuY29uc3QgT05FTlRSWSA9IFN5bWJvbCgnb25FbnRyeScpXG5jb25zdCBDSEVDS0ZTID0gU3ltYm9sKCdjaGVja0ZzJylcbmNvbnN0IENIRUNLRlMyID0gU3ltYm9sKCdjaGVja0ZzMicpXG5jb25zdCBQUlVORUNBQ0hFID0gU3ltYm9sKCdwcnVuZUNhY2hlJylcbmNvbnN0IElTUkVVU0FCTEUgPSBTeW1ib2woJ2lzUmV1c2FibGUnKVxuY29uc3QgTUFLRUZTID0gU3ltYm9sKCdtYWtlRnMnKVxuY29uc3QgRklMRSA9IFN5bWJvbCgnZmlsZScpXG5jb25zdCBESVJFQ1RPUlkgPSBTeW1ib2woJ2RpcmVjdG9yeScpXG5jb25zdCBMSU5LID0gU3ltYm9sKCdsaW5rJylcbmNvbnN0IFNZTUxJTksgPSBTeW1ib2woJ3N5bWxpbmsnKVxuY29uc3QgSEFSRExJTksgPSBTeW1ib2woJ2hhcmRsaW5rJylcbmNvbnN0IFVOU1VQUE9SVEVEID0gU3ltYm9sKCd1bnN1cHBvcnRlZCcpXG5jb25zdCBDSEVDS1BBVEggPSBTeW1ib2woJ2NoZWNrUGF0aCcpXG5jb25zdCBNS0RJUiA9IFN5bWJvbCgnbWtkaXInKVxuY29uc3QgT05FUlJPUiA9IFN5bWJvbCgnb25FcnJvcicpXG5jb25zdCBQRU5ESU5HID0gU3ltYm9sKCdwZW5kaW5nJylcbmNvbnN0IFBFTkQgPSBTeW1ib2woJ3BlbmQnKVxuY29uc3QgVU5QRU5EID0gU3ltYm9sKCd1bnBlbmQnKVxuY29uc3QgRU5ERUQgPSBTeW1ib2woJ2VuZGVkJylcbmNvbnN0IE1BWUJFQ0xPU0UgPSBTeW1ib2woJ21heWJlQ2xvc2UnKVxuY29uc3QgU0tJUCA9IFN5bWJvbCgnc2tpcCcpXG5jb25zdCBET0NIT1dOID0gU3ltYm9sKCdkb0Nob3duJylcbmNvbnN0IFVJRCA9IFN5bWJvbCgndWlkJylcbmNvbnN0IEdJRCA9IFN5bWJvbCgnZ2lkJylcbmNvbnN0IENIRUNLRURfQ1dEID0gU3ltYm9sKCdjaGVja2VkQ3dkJylcbmNvbnN0IGNyeXB0byA9IHJlcXVpcmUoJ2NyeXB0bycpXG5jb25zdCBnZXRGbGFnID0gcmVxdWlyZSgnLi9nZXQtd3JpdGUtZmxhZy5qcycpXG5jb25zdCBwbGF0Zm9ybSA9IHByb2Nlc3MuZW52LlRFU1RJTkdfVEFSX0ZBS0VfUExBVEZPUk0gfHwgcHJvY2Vzcy5wbGF0Zm9ybVxuY29uc3QgaXNXaW5kb3dzID0gcGxhdGZvcm0gPT09ICd3aW4zMidcblxuLy8gVW5saW5rcyBvbiBXaW5kb3dzIGFyZSBub3QgYXRvbWljLlxuLy9cbi8vIFRoaXMgbWVhbnMgdGhhdCBpZiB5b3UgaGF2ZSBhIGZpbGUgZW50cnksIGZvbGxvd2VkIGJ5IGFub3RoZXJcbi8vIGZpbGUgZW50cnkgd2l0aCBhbiBpZGVudGljYWwgbmFtZSwgYW5kIHlvdSBjYW5ub3QgcmUtdXNlIHRoZSBmaWxlXG4vLyAoYmVjYXVzZSBpdCdzIGEgaGFyZGxpbmssIG9yIGJlY2F1c2UgdW5saW5rOnRydWUgaXMgc2V0LCBvciBpdCdzXG4vLyBXaW5kb3dzLCB3aGljaCBkb2VzIG5vdCBoYXZlIHVzZWZ1bCBubGluayB2YWx1ZXMpLCB0aGVuIHRoZSB1bmxpbmtcbi8vIHdpbGwgYmUgY29tbWl0dGVkIHRvIHRoZSBkaXNrIEFGVEVSIHRoZSBuZXcgZmlsZSBoYXMgYmVlbiB3cml0dGVuXG4vLyBvdmVyIHRoZSBvbGQgb25lLCBkZWxldGluZyB0aGUgbmV3IGZpbGUuXG4vL1xuLy8gVG8gd29yayBhcm91bmQgdGhpcywgb24gV2luZG93cyBzeXN0ZW1zLCB3ZSByZW5hbWUgdGhlIGZpbGUgYW5kIHRoZW5cbi8vIGRlbGV0ZSB0aGUgcmVuYW1lZCBmaWxlLiAgSXQncyBhIHNsb3BweSBrbHVkZ2UsIGJ1dCBmcmFua2x5LCBJIGRvIG5vdFxuLy8ga25vdyBvZiBhIGJldHRlciB3YXkgdG8gZG8gdGhpcywgZ2l2ZW4gd2luZG93cycgbm9uLWF0b21pYyB1bmxpbmtcbi8vIHNlbWFudGljcy5cbi8vXG4vLyBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9ucG0vbm9kZS10YXIvaXNzdWVzLzE4M1xuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbmNvbnN0IHVubGlua0ZpbGUgPSAocGF0aCwgY2IpID0+IHtcbiAgaWYgKCFpc1dpbmRvd3MpIHtcbiAgICByZXR1cm4gZnMudW5saW5rKHBhdGgsIGNiKVxuICB9XG5cbiAgY29uc3QgbmFtZSA9IHBhdGggKyAnLkRFTEVURS4nICsgY3J5cHRvLnJhbmRvbUJ5dGVzKDE2KS50b1N0cmluZygnaGV4JylcbiAgZnMucmVuYW1lKHBhdGgsIG5hbWUsIGVyID0+IHtcbiAgICBpZiAoZXIpIHtcbiAgICAgIHJldHVybiBjYihlcilcbiAgICB9XG4gICAgZnMudW5saW5rKG5hbWUsIGNiKVxuICB9KVxufVxuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuY29uc3QgdW5saW5rRmlsZVN5bmMgPSBwYXRoID0+IHtcbiAgaWYgKCFpc1dpbmRvd3MpIHtcbiAgICByZXR1cm4gZnMudW5saW5rU3luYyhwYXRoKVxuICB9XG5cbiAgY29uc3QgbmFtZSA9IHBhdGggKyAnLkRFTEVURS4nICsgY3J5cHRvLnJhbmRvbUJ5dGVzKDE2KS50b1N0cmluZygnaGV4JylcbiAgZnMucmVuYW1lU3luYyhwYXRoLCBuYW1lKVxuICBmcy51bmxpbmtTeW5jKG5hbWUpXG59XG5cbi8vIHRoaXMuZ2lkLCBlbnRyeS5naWQsIHRoaXMucHJvY2Vzc1VpZFxuY29uc3QgdWludDMyID0gKGEsIGIsIGMpID0+XG4gIGEgPT09IGEgPj4+IDAgPyBhXG4gIDogYiA9PT0gYiA+Pj4gMCA/IGJcbiAgOiBjXG5cbi8vIGNsZWFyIHRoZSBjYWNoZSBpZiBpdCdzIGEgY2FzZS1pbnNlbnNpdGl2ZSB1bmljb2RlLXNxdWFzaGluZyBtYXRjaC5cbi8vIHdlIGNhbid0IGtub3cgaWYgdGhlIGN1cnJlbnQgZmlsZSBzeXN0ZW0gaXMgY2FzZS1zZW5zaXRpdmUgb3Igc3VwcG9ydHNcbi8vIHVuaWNvZGUgZnVsbHksIHNvIHdlIGNoZWNrIGZvciBzaW1pbGFyaXR5IG9uIHRoZSBtYXhpbWFsbHkgY29tcGF0aWJsZVxuLy8gcmVwcmVzZW50YXRpb24uICBFcnIgb24gdGhlIHNpZGUgb2YgcHJ1bmluZywgc2luY2UgYWxsIGl0J3MgZG9pbmcgaXNcbi8vIHByZXZlbnRpbmcgbHN0YXRzLCBhbmQgaXQncyBub3QgdGhlIGVuZCBvZiB0aGUgd29ybGQgaWYgd2UgZ2V0IGEgZmFsc2Vcbi8vIHBvc2l0aXZlLlxuLy8gTm90ZSB0aGF0IG9uIHdpbmRvd3MsIHdlIGFsd2F5cyBkcm9wIHRoZSBlbnRpcmUgY2FjaGUgd2hlbmV2ZXIgYVxuLy8gc3ltYm9saWMgbGluayBpcyBlbmNvdW50ZXJlZCwgYmVjYXVzZSA4LjMgZmlsZW5hbWVzIGFyZSBpbXBvc3NpYmxlXG4vLyB0byByZWFzb24gYWJvdXQsIGFuZCBjb2xsaXNpb25zIGFyZSBoYXphcmRzIHJhdGhlciB0aGFuIGp1c3QgZmFpbHVyZXMuXG5jb25zdCBjYWNoZUtleU5vcm1hbGl6ZSA9IHBhdGggPT4gbm9ybWFsaXplKHN0cmlwU2xhc2gobm9ybVBhdGgocGF0aCkpKVxuICAudG9Mb3dlckNhc2UoKVxuXG5jb25zdCBwcnVuZUNhY2hlID0gKGNhY2hlLCBhYnMpID0+IHtcbiAgYWJzID0gY2FjaGVLZXlOb3JtYWxpemUoYWJzKVxuICBmb3IgKGNvbnN0IHBhdGggb2YgY2FjaGUua2V5cygpKSB7XG4gICAgY29uc3QgcG5vcm0gPSBjYWNoZUtleU5vcm1hbGl6ZShwYXRoKVxuICAgIGlmIChwbm9ybSA9PT0gYWJzIHx8IHBub3JtLmluZGV4T2YoYWJzICsgJy8nKSA9PT0gMCkge1xuICAgICAgY2FjaGUuZGVsZXRlKHBhdGgpXG4gICAgfVxuICB9XG59XG5cbmNvbnN0IGRyb3BDYWNoZSA9IGNhY2hlID0+IHtcbiAgZm9yIChjb25zdCBrZXkgb2YgY2FjaGUua2V5cygpKSB7XG4gICAgY2FjaGUuZGVsZXRlKGtleSlcbiAgfVxufVxuXG5jbGFzcyBVbnBhY2sgZXh0ZW5kcyBQYXJzZXIge1xuICBjb25zdHJ1Y3RvciAob3B0KSB7XG4gICAgaWYgKCFvcHQpIHtcbiAgICAgIG9wdCA9IHt9XG4gICAgfVxuXG4gICAgb3B0Lm9uZG9uZSA9IF8gPT4ge1xuICAgICAgdGhpc1tFTkRFRF0gPSB0cnVlXG4gICAgICB0aGlzW01BWUJFQ0xPU0VdKClcbiAgICB9XG5cbiAgICBzdXBlcihvcHQpXG5cbiAgICB0aGlzW0NIRUNLRURfQ1dEXSA9IGZhbHNlXG5cbiAgICB0aGlzLnJlc2VydmF0aW9ucyA9IHBhdGhSZXNlcnZhdGlvbnMoKVxuXG4gICAgdGhpcy50cmFuc2Zvcm0gPSB0eXBlb2Ygb3B0LnRyYW5zZm9ybSA9PT0gJ2Z1bmN0aW9uJyA/IG9wdC50cmFuc2Zvcm0gOiBudWxsXG5cbiAgICB0aGlzLndyaXRhYmxlID0gdHJ1ZVxuICAgIHRoaXMucmVhZGFibGUgPSBmYWxzZVxuXG4gICAgdGhpc1tQRU5ESU5HXSA9IDBcbiAgICB0aGlzW0VOREVEXSA9IGZhbHNlXG5cbiAgICB0aGlzLmRpckNhY2hlID0gb3B0LmRpckNhY2hlIHx8IG5ldyBNYXAoKVxuXG4gICAgaWYgKHR5cGVvZiBvcHQudWlkID09PSAnbnVtYmVyJyB8fCB0eXBlb2Ygb3B0LmdpZCA9PT0gJ251bWJlcicpIHtcbiAgICAgIC8vIG5lZWQgYm90aCBvciBuZWl0aGVyXG4gICAgICBpZiAodHlwZW9mIG9wdC51aWQgIT09ICdudW1iZXInIHx8IHR5cGVvZiBvcHQuZ2lkICE9PSAnbnVtYmVyJykge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdjYW5ub3Qgc2V0IG93bmVyIHdpdGhvdXQgbnVtYmVyIHVpZCBhbmQgZ2lkJylcbiAgICAgIH1cbiAgICAgIGlmIChvcHQucHJlc2VydmVPd25lcikge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFxuICAgICAgICAgICdjYW5ub3QgcHJlc2VydmUgb3duZXIgaW4gYXJjaGl2ZSBhbmQgYWxzbyBzZXQgb3duZXIgZXhwbGljaXRseScpXG4gICAgICB9XG4gICAgICB0aGlzLnVpZCA9IG9wdC51aWRcbiAgICAgIHRoaXMuZ2lkID0gb3B0LmdpZFxuICAgICAgdGhpcy5zZXRPd25lciA9IHRydWVcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy51aWQgPSBudWxsXG4gICAgICB0aGlzLmdpZCA9IG51bGxcbiAgICAgIHRoaXMuc2V0T3duZXIgPSBmYWxzZVxuICAgIH1cblxuICAgIC8vIGRlZmF1bHQgdHJ1ZSBmb3Igcm9vdFxuICAgIGlmIChvcHQucHJlc2VydmVPd25lciA9PT0gdW5kZWZpbmVkICYmIHR5cGVvZiBvcHQudWlkICE9PSAnbnVtYmVyJykge1xuICAgICAgdGhpcy5wcmVzZXJ2ZU93bmVyID0gcHJvY2Vzcy5nZXR1aWQgJiYgcHJvY2Vzcy5nZXR1aWQoKSA9PT0gMFxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnByZXNlcnZlT3duZXIgPSAhIW9wdC5wcmVzZXJ2ZU93bmVyXG4gICAgfVxuXG4gICAgdGhpcy5wcm9jZXNzVWlkID0gKHRoaXMucHJlc2VydmVPd25lciB8fCB0aGlzLnNldE93bmVyKSAmJiBwcm9jZXNzLmdldHVpZCA/XG4gICAgICBwcm9jZXNzLmdldHVpZCgpIDogbnVsbFxuICAgIHRoaXMucHJvY2Vzc0dpZCA9ICh0aGlzLnByZXNlcnZlT3duZXIgfHwgdGhpcy5zZXRPd25lcikgJiYgcHJvY2Vzcy5nZXRnaWQgP1xuICAgICAgcHJvY2Vzcy5nZXRnaWQoKSA6IG51bGxcblxuICAgIC8vIG1vc3RseSBqdXN0IGZvciB0ZXN0aW5nLCBidXQgdXNlZnVsIGluIHNvbWUgY2FzZXMuXG4gICAgLy8gRm9yY2libHkgdHJpZ2dlciBhIGNob3duIG9uIGV2ZXJ5IGVudHJ5LCBubyBtYXR0ZXIgd2hhdFxuICAgIHRoaXMuZm9yY2VDaG93biA9IG9wdC5mb3JjZUNob3duID09PSB0cnVlXG5cbiAgICAvLyB0dXJuID48P3wgaW4gZmlsZW5hbWVzIGludG8gMHhmMDAwLWhpZ2hlciBlbmNvZGVkIGZvcm1zXG4gICAgdGhpcy53aW4zMiA9ICEhb3B0LndpbjMyIHx8IGlzV2luZG93c1xuXG4gICAgLy8gZG8gbm90IHVucGFjayBvdmVyIGZpbGVzIHRoYXQgYXJlIG5ld2VyIHRoYW4gd2hhdCdzIGluIHRoZSBhcmNoaXZlXG4gICAgdGhpcy5uZXdlciA9ICEhb3B0Lm5ld2VyXG5cbiAgICAvLyBkbyBub3QgdW5wYWNrIG92ZXIgQU5ZIGZpbGVzXG4gICAgdGhpcy5rZWVwID0gISFvcHQua2VlcFxuXG4gICAgLy8gZG8gbm90IHNldCBtdGltZS9hdGltZSBvZiBleHRyYWN0ZWQgZW50cmllc1xuICAgIHRoaXMubm9NdGltZSA9ICEhb3B0Lm5vTXRpbWVcblxuICAgIC8vIGFsbG93IC4uLCBhYnNvbHV0ZSBwYXRoIGVudHJpZXMsIGFuZCB1bnBhY2tpbmcgdGhyb3VnaCBzeW1saW5rc1xuICAgIC8vIHdpdGhvdXQgdGhpcywgd2FybiBhbmQgc2tpcCAuLiwgcmVsYXRpdml6ZSBhYnNvbHV0ZXMsIGFuZCBlcnJvclxuICAgIC8vIG9uIHN5bWxpbmtzIGluIGV4dHJhY3Rpb24gcGF0aFxuICAgIHRoaXMucHJlc2VydmVQYXRocyA9ICEhb3B0LnByZXNlcnZlUGF0aHNcblxuICAgIC8vIHVubGluayBmaWxlcyBhbmQgbGlua3MgYmVmb3JlIHdyaXRpbmcuIFRoaXMgYnJlYWtzIGV4aXN0aW5nIGhhcmRcbiAgICAvLyBsaW5rcywgYW5kIHJlbW92ZXMgc3ltbGluayBkaXJlY3RvcmllcyByYXRoZXIgdGhhbiBlcnJvcmluZ1xuICAgIHRoaXMudW5saW5rID0gISFvcHQudW5saW5rXG5cbiAgICB0aGlzLmN3ZCA9IG5vcm1QYXRoKHBhdGgucmVzb2x2ZShvcHQuY3dkIHx8IHByb2Nlc3MuY3dkKCkpKVxuICAgIHRoaXMuc3RyaXAgPSArb3B0LnN0cmlwIHx8IDBcbiAgICAvLyBpZiB3ZSdyZSBub3QgY2htb2RkaW5nLCB0aGVuIHdlIGRvbid0IG5lZWQgdGhlIHByb2Nlc3MgdW1hc2tcbiAgICB0aGlzLnByb2Nlc3NVbWFzayA9IG9wdC5ub0NobW9kID8gMCA6IHByb2Nlc3MudW1hc2soKVxuICAgIHRoaXMudW1hc2sgPSB0eXBlb2Ygb3B0LnVtYXNrID09PSAnbnVtYmVyJyA/IG9wdC51bWFzayA6IHRoaXMucHJvY2Vzc1VtYXNrXG5cbiAgICAvLyBkZWZhdWx0IG1vZGUgZm9yIGRpcnMgY3JlYXRlZCBhcyBwYXJlbnRzXG4gICAgdGhpcy5kbW9kZSA9IG9wdC5kbW9kZSB8fCAoMG8wNzc3ICYgKH50aGlzLnVtYXNrKSlcbiAgICB0aGlzLmZtb2RlID0gb3B0LmZtb2RlIHx8ICgwbzA2NjYgJiAofnRoaXMudW1hc2spKVxuXG4gICAgdGhpcy5vbignZW50cnknLCBlbnRyeSA9PiB0aGlzW09ORU5UUlldKGVudHJ5KSlcbiAgfVxuXG4gIC8vIGEgYmFkIG9yIGRhbWFnZWQgYXJjaGl2ZSBpcyBhIHdhcm5pbmcgZm9yIFBhcnNlciwgYnV0IGFuIGVycm9yXG4gIC8vIHdoZW4gZXh0cmFjdGluZy4gIE1hcmsgdGhvc2UgZXJyb3JzIGFzIHVucmVjb3ZlcmFibGUsIGJlY2F1c2VcbiAgLy8gdGhlIFVucGFjayBjb250cmFjdCBjYW5ub3QgYmUgbWV0LlxuICB3YXJuIChjb2RlLCBtc2csIGRhdGEgPSB7fSkge1xuICAgIGlmIChjb2RlID09PSAnVEFSX0JBRF9BUkNISVZFJyB8fCBjb2RlID09PSAnVEFSX0FCT1JUJykge1xuICAgICAgZGF0YS5yZWNvdmVyYWJsZSA9IGZhbHNlXG4gICAgfVxuICAgIHJldHVybiBzdXBlci53YXJuKGNvZGUsIG1zZywgZGF0YSlcbiAgfVxuXG4gIFtNQVlCRUNMT1NFXSAoKSB7XG4gICAgaWYgKHRoaXNbRU5ERURdICYmIHRoaXNbUEVORElOR10gPT09IDApIHtcbiAgICAgIHRoaXMuZW1pdCgncHJlZmluaXNoJylcbiAgICAgIHRoaXMuZW1pdCgnZmluaXNoJylcbiAgICAgIHRoaXMuZW1pdCgnZW5kJylcbiAgICB9XG4gIH1cblxuICBbQ0hFQ0tQQVRIXSAoZW50cnkpIHtcbiAgICBpZiAodGhpcy5zdHJpcCkge1xuICAgICAgY29uc3QgcGFydHMgPSBub3JtUGF0aChlbnRyeS5wYXRoKS5zcGxpdCgnLycpXG4gICAgICBpZiAocGFydHMubGVuZ3RoIDwgdGhpcy5zdHJpcCkge1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICAgIGVudHJ5LnBhdGggPSBwYXJ0cy5zbGljZSh0aGlzLnN0cmlwKS5qb2luKCcvJylcblxuICAgICAgaWYgKGVudHJ5LnR5cGUgPT09ICdMaW5rJykge1xuICAgICAgICBjb25zdCBsaW5rcGFydHMgPSBub3JtUGF0aChlbnRyeS5saW5rcGF0aCkuc3BsaXQoJy8nKVxuICAgICAgICBpZiAobGlua3BhcnRzLmxlbmd0aCA+PSB0aGlzLnN0cmlwKSB7XG4gICAgICAgICAgZW50cnkubGlua3BhdGggPSBsaW5rcGFydHMuc2xpY2UodGhpcy5zdHJpcCkuam9pbignLycpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIXRoaXMucHJlc2VydmVQYXRocykge1xuICAgICAgY29uc3QgcCA9IG5vcm1QYXRoKGVudHJ5LnBhdGgpXG4gICAgICBjb25zdCBwYXJ0cyA9IHAuc3BsaXQoJy8nKVxuICAgICAgaWYgKHBhcnRzLmluY2x1ZGVzKCcuLicpIHx8IGlzV2luZG93cyAmJiAvXlthLXpdOlxcLlxcLiQvaS50ZXN0KHBhcnRzWzBdKSkge1xuICAgICAgICB0aGlzLndhcm4oJ1RBUl9FTlRSWV9FUlJPUicsIGBwYXRoIGNvbnRhaW5zICcuLidgLCB7XG4gICAgICAgICAgZW50cnksXG4gICAgICAgICAgcGF0aDogcCxcbiAgICAgICAgfSlcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG5cbiAgICAgIC8vIHN0cmlwIG9mZiB0aGUgcm9vdFxuICAgICAgY29uc3QgW3Jvb3QsIHN0cmlwcGVkXSA9IHN0cmlwQWJzb2x1dGVQYXRoKHApXG4gICAgICBpZiAocm9vdCkge1xuICAgICAgICBlbnRyeS5wYXRoID0gc3RyaXBwZWRcbiAgICAgICAgdGhpcy53YXJuKCdUQVJfRU5UUllfSU5GTycsIGBzdHJpcHBpbmcgJHtyb290fSBmcm9tIGFic29sdXRlIHBhdGhgLCB7XG4gICAgICAgICAgZW50cnksXG4gICAgICAgICAgcGF0aDogcCxcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocGF0aC5pc0Fic29sdXRlKGVudHJ5LnBhdGgpKSB7XG4gICAgICBlbnRyeS5hYnNvbHV0ZSA9IG5vcm1QYXRoKHBhdGgucmVzb2x2ZShlbnRyeS5wYXRoKSlcbiAgICB9IGVsc2Uge1xuICAgICAgZW50cnkuYWJzb2x1dGUgPSBub3JtUGF0aChwYXRoLnJlc29sdmUodGhpcy5jd2QsIGVudHJ5LnBhdGgpKVxuICAgIH1cblxuICAgIC8vIGlmIHdlIHNvbWVob3cgZW5kZWQgdXAgd2l0aCBhIHBhdGggdGhhdCBlc2NhcGVzIHRoZSBjd2QsIGFuZCB3ZSBhcmVcbiAgICAvLyBub3QgaW4gcHJlc2VydmVQYXRocyBtb2RlLCB0aGVuIHNvbWV0aGluZyBpcyBmaXNoeSEgIFRoaXMgc2hvdWxkIGhhdmVcbiAgICAvLyBiZWVuIHByZXZlbnRlZCBhYm92ZSwgc28gaWdub3JlIHRoaXMgZm9yIGNvdmVyYWdlLlxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAtIGRlZmVuc2UgaW4gZGVwdGggKi9cbiAgICBpZiAoIXRoaXMucHJlc2VydmVQYXRocyAmJlxuICAgICAgICBlbnRyeS5hYnNvbHV0ZS5pbmRleE9mKHRoaXMuY3dkICsgJy8nKSAhPT0gMCAmJlxuICAgICAgICBlbnRyeS5hYnNvbHV0ZSAhPT0gdGhpcy5jd2QpIHtcbiAgICAgIHRoaXMud2FybignVEFSX0VOVFJZX0VSUk9SJywgJ3BhdGggZXNjYXBlZCBleHRyYWN0aW9uIHRhcmdldCcsIHtcbiAgICAgICAgZW50cnksXG4gICAgICAgIHBhdGg6IG5vcm1QYXRoKGVudHJ5LnBhdGgpLFxuICAgICAgICByZXNvbHZlZFBhdGg6IGVudHJ5LmFic29sdXRlLFxuICAgICAgICBjd2Q6IHRoaXMuY3dkLFxuICAgICAgfSlcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cblxuICAgIC8vIGFuIGFyY2hpdmUgY2FuIHNldCBwcm9wZXJ0aWVzIG9uIHRoZSBleHRyYWN0aW9uIGRpcmVjdG9yeSwgYnV0IGl0XG4gICAgLy8gbWF5IG5vdCByZXBsYWNlIHRoZSBjd2Qgd2l0aCBhIGRpZmZlcmVudCBraW5kIG9mIHRoaW5nIGVudGlyZWx5LlxuICAgIGlmIChlbnRyeS5hYnNvbHV0ZSA9PT0gdGhpcy5jd2QgJiZcbiAgICAgICAgZW50cnkudHlwZSAhPT0gJ0RpcmVjdG9yeScgJiZcbiAgICAgICAgZW50cnkudHlwZSAhPT0gJ0dOVUR1bXBEaXInKSB7XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG5cbiAgICAvLyBvbmx5IGVuY29kZSA6IGNoYXJzIHRoYXQgYXJlbid0IGRyaXZlIGxldHRlciBpbmRpY2F0b3JzXG4gICAgaWYgKHRoaXMud2luMzIpIHtcbiAgICAgIGNvbnN0IHsgcm9vdDogYVJvb3QgfSA9IHBhdGgud2luMzIucGFyc2UoZW50cnkuYWJzb2x1dGUpXG4gICAgICBlbnRyeS5hYnNvbHV0ZSA9IGFSb290ICsgd2MuZW5jb2RlKGVudHJ5LmFic29sdXRlLnNsaWNlKGFSb290Lmxlbmd0aCkpXG4gICAgICBjb25zdCB7IHJvb3Q6IHBSb290IH0gPSBwYXRoLndpbjMyLnBhcnNlKGVudHJ5LnBhdGgpXG4gICAgICBlbnRyeS5wYXRoID0gcFJvb3QgKyB3Yy5lbmNvZGUoZW50cnkucGF0aC5zbGljZShwUm9vdC5sZW5ndGgpKVxuICAgIH1cblxuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICBbT05FTlRSWV0gKGVudHJ5KSB7XG4gICAgaWYgKCF0aGlzW0NIRUNLUEFUSF0oZW50cnkpKSB7XG4gICAgICByZXR1cm4gZW50cnkucmVzdW1lKClcbiAgICB9XG5cbiAgICBhc3NlcnQuZXF1YWwodHlwZW9mIGVudHJ5LmFic29sdXRlLCAnc3RyaW5nJylcblxuICAgIHN3aXRjaCAoZW50cnkudHlwZSkge1xuICAgICAgY2FzZSAnRGlyZWN0b3J5JzpcbiAgICAgIGNhc2UgJ0dOVUR1bXBEaXInOlxuICAgICAgICBpZiAoZW50cnkubW9kZSkge1xuICAgICAgICAgIGVudHJ5Lm1vZGUgPSBlbnRyeS5tb2RlIHwgMG83MDBcbiAgICAgICAgfVxuXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tZmFsbHRocm91Z2hcbiAgICAgIGNhc2UgJ0ZpbGUnOlxuICAgICAgY2FzZSAnT2xkRmlsZSc6XG4gICAgICBjYXNlICdDb250aWd1b3VzRmlsZSc6XG4gICAgICBjYXNlICdMaW5rJzpcbiAgICAgIGNhc2UgJ1N5bWJvbGljTGluayc6XG4gICAgICAgIHJldHVybiB0aGlzW0NIRUNLRlNdKGVudHJ5KVxuXG4gICAgICBjYXNlICdDaGFyYWN0ZXJEZXZpY2UnOlxuICAgICAgY2FzZSAnQmxvY2tEZXZpY2UnOlxuICAgICAgY2FzZSAnRklGTyc6XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gdGhpc1tVTlNVUFBPUlRFRF0oZW50cnkpXG4gICAgfVxuICB9XG5cbiAgW09ORVJST1JdIChlciwgZW50cnkpIHtcbiAgICAvLyBDd2QgaGFzIHRvIGV4aXN0LCBvciBlbHNlIG5vdGhpbmcgd29ya3MuIFRoYXQncyBzZXJpb3VzLlxuICAgIC8vIE90aGVyIGVycm9ycyBhcmUgd2FybmluZ3MsIHdoaWNoIHJhaXNlIHRoZSBlcnJvciBpbiBzdHJpY3RcbiAgICAvLyBtb2RlLCBidXQgb3RoZXJ3aXNlIGNvbnRpbnVlIG9uLlxuICAgIGlmIChlci5uYW1lID09PSAnQ3dkRXJyb3InKSB7XG4gICAgICB0aGlzLmVtaXQoJ2Vycm9yJywgZXIpXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMud2FybignVEFSX0VOVFJZX0VSUk9SJywgZXIsIHsgZW50cnkgfSlcbiAgICAgIHRoaXNbVU5QRU5EXSgpXG4gICAgICBlbnRyeS5yZXN1bWUoKVxuICAgIH1cbiAgfVxuXG4gIFtNS0RJUl0gKGRpciwgbW9kZSwgY2IpIHtcbiAgICBta2Rpcihub3JtUGF0aChkaXIpLCB7XG4gICAgICB1aWQ6IHRoaXMudWlkLFxuICAgICAgZ2lkOiB0aGlzLmdpZCxcbiAgICAgIHByb2Nlc3NVaWQ6IHRoaXMucHJvY2Vzc1VpZCxcbiAgICAgIHByb2Nlc3NHaWQ6IHRoaXMucHJvY2Vzc0dpZCxcbiAgICAgIHVtYXNrOiB0aGlzLnByb2Nlc3NVbWFzayxcbiAgICAgIHByZXNlcnZlOiB0aGlzLnByZXNlcnZlUGF0aHMsXG4gICAgICB1bmxpbms6IHRoaXMudW5saW5rLFxuICAgICAgY2FjaGU6IHRoaXMuZGlyQ2FjaGUsXG4gICAgICBjd2Q6IHRoaXMuY3dkLFxuICAgICAgbW9kZTogbW9kZSxcbiAgICAgIG5vQ2htb2Q6IHRoaXMubm9DaG1vZCxcbiAgICB9LCBjYilcbiAgfVxuXG4gIFtET0NIT1dOXSAoZW50cnkpIHtcbiAgICAvLyBpbiBwcmVzZXJ2ZSBvd25lciBtb2RlLCBjaG93biBpZiB0aGUgZW50cnkgZG9lc24ndCBtYXRjaCBwcm9jZXNzXG4gICAgLy8gaW4gc2V0IG93bmVyIG1vZGUsIGNob3duIGlmIHNldHRpbmcgZG9lc24ndCBtYXRjaCBwcm9jZXNzXG4gICAgcmV0dXJuIHRoaXMuZm9yY2VDaG93biB8fFxuICAgICAgdGhpcy5wcmVzZXJ2ZU93bmVyICYmXG4gICAgICAodHlwZW9mIGVudHJ5LnVpZCA9PT0gJ251bWJlcicgJiYgZW50cnkudWlkICE9PSB0aGlzLnByb2Nlc3NVaWQgfHxcbiAgICAgICAgdHlwZW9mIGVudHJ5LmdpZCA9PT0gJ251bWJlcicgJiYgZW50cnkuZ2lkICE9PSB0aGlzLnByb2Nlc3NHaWQpXG4gICAgICB8fFxuICAgICAgKHR5cGVvZiB0aGlzLnVpZCA9PT0gJ251bWJlcicgJiYgdGhpcy51aWQgIT09IHRoaXMucHJvY2Vzc1VpZCB8fFxuICAgICAgICB0eXBlb2YgdGhpcy5naWQgPT09ICdudW1iZXInICYmIHRoaXMuZ2lkICE9PSB0aGlzLnByb2Nlc3NHaWQpXG4gIH1cblxuICBbVUlEXSAoZW50cnkpIHtcbiAgICByZXR1cm4gdWludDMyKHRoaXMudWlkLCBlbnRyeS51aWQsIHRoaXMucHJvY2Vzc1VpZClcbiAgfVxuXG4gIFtHSURdIChlbnRyeSkge1xuICAgIHJldHVybiB1aW50MzIodGhpcy5naWQsIGVudHJ5LmdpZCwgdGhpcy5wcm9jZXNzR2lkKVxuICB9XG5cbiAgW0ZJTEVdIChlbnRyeSwgZnVsbHlEb25lKSB7XG4gICAgY29uc3QgbW9kZSA9IGVudHJ5Lm1vZGUgJiAwbzc3NzcgfHwgdGhpcy5mbW9kZVxuICAgIGNvbnN0IHN0cmVhbSA9IG5ldyBmc20uV3JpdGVTdHJlYW0oZW50cnkuYWJzb2x1dGUsIHtcbiAgICAgIGZsYWdzOiBnZXRGbGFnKGVudHJ5LnNpemUpLFxuICAgICAgbW9kZTogbW9kZSxcbiAgICAgIGF1dG9DbG9zZTogZmFsc2UsXG4gICAgfSlcbiAgICBzdHJlYW0ub24oJ2Vycm9yJywgZXIgPT4ge1xuICAgICAgaWYgKHN0cmVhbS5mZCkge1xuICAgICAgICBmcy5jbG9zZShzdHJlYW0uZmQsICgpID0+IHt9KVxuICAgICAgfVxuXG4gICAgICAvLyBmbHVzaCBhbGwgdGhlIGRhdGEgb3V0IHNvIHRoYXQgd2UgYXJlbid0IGxlZnQgaGFuZ2luZ1xuICAgICAgLy8gaWYgdGhlIGVycm9yIHdhc24ndCBhY3R1YWxseSBmYXRhbC4gIG90aGVyd2lzZSB0aGUgcGFyc2VcbiAgICAgIC8vIGlzIGJsb2NrZWQsIGFuZCB3ZSBuZXZlciBwcm9jZWVkLlxuICAgICAgc3RyZWFtLndyaXRlID0gKCkgPT4gdHJ1ZVxuICAgICAgdGhpc1tPTkVSUk9SXShlciwgZW50cnkpXG4gICAgICBmdWxseURvbmUoKVxuICAgIH0pXG5cbiAgICBsZXQgYWN0aW9ucyA9IDFcbiAgICBjb25zdCBkb25lID0gZXIgPT4ge1xuICAgICAgaWYgKGVyKSB7XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlIC0gd2Ugc2hvdWxkIGFsd2F5cyBoYXZlIGEgZmQgYnkgbm93ICovXG4gICAgICAgIGlmIChzdHJlYW0uZmQpIHtcbiAgICAgICAgICBmcy5jbG9zZShzdHJlYW0uZmQsICgpID0+IHt9KVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpc1tPTkVSUk9SXShlciwgZW50cnkpXG4gICAgICAgIGZ1bGx5RG9uZSgpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBpZiAoLS1hY3Rpb25zID09PSAwKSB7XG4gICAgICAgIGZzLmNsb3NlKHN0cmVhbS5mZCwgZXIgPT4ge1xuICAgICAgICAgIGlmIChlcikge1xuICAgICAgICAgICAgdGhpc1tPTkVSUk9SXShlciwgZW50cnkpXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXNbVU5QRU5EXSgpXG4gICAgICAgICAgfVxuICAgICAgICAgIGZ1bGx5RG9uZSgpXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfVxuXG4gICAgc3RyZWFtLm9uKCdmaW5pc2gnLCBfID0+IHtcbiAgICAgIC8vIGlmIGZ1dGltZXMgZmFpbHMsIHRyeSB1dGltZXNcbiAgICAgIC8vIGlmIHV0aW1lcyBmYWlscywgZmFpbCB3aXRoIHRoZSBvcmlnaW5hbCBlcnJvclxuICAgICAgLy8gc2FtZSBmb3IgZmNob3duL2Nob3duXG4gICAgICBjb25zdCBhYnMgPSBlbnRyeS5hYnNvbHV0ZVxuICAgICAgY29uc3QgZmQgPSBzdHJlYW0uZmRcblxuICAgICAgaWYgKGVudHJ5Lm10aW1lICYmICF0aGlzLm5vTXRpbWUpIHtcbiAgICAgICAgYWN0aW9ucysrXG4gICAgICAgIGNvbnN0IGF0aW1lID0gZW50cnkuYXRpbWUgfHwgbmV3IERhdGUoKVxuICAgICAgICBjb25zdCBtdGltZSA9IGVudHJ5Lm10aW1lXG4gICAgICAgIGZzLmZ1dGltZXMoZmQsIGF0aW1lLCBtdGltZSwgZXIgPT5cbiAgICAgICAgICBlciA/IGZzLnV0aW1lcyhhYnMsIGF0aW1lLCBtdGltZSwgZXIyID0+IGRvbmUoZXIyICYmIGVyKSlcbiAgICAgICAgICA6IGRvbmUoKSlcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXNbRE9DSE9XTl0oZW50cnkpKSB7XG4gICAgICAgIGFjdGlvbnMrK1xuICAgICAgICBjb25zdCB1aWQgPSB0aGlzW1VJRF0oZW50cnkpXG4gICAgICAgIGNvbnN0IGdpZCA9IHRoaXNbR0lEXShlbnRyeSlcbiAgICAgICAgZnMuZmNob3duKGZkLCB1aWQsIGdpZCwgZXIgPT5cbiAgICAgICAgICBlciA/IGZzLmNob3duKGFicywgdWlkLCBnaWQsIGVyMiA9PiBkb25lKGVyMiAmJiBlcikpXG4gICAgICAgICAgOiBkb25lKCkpXG4gICAgICB9XG5cbiAgICAgIGRvbmUoKVxuICAgIH0pXG5cbiAgICBjb25zdCB0eCA9IHRoaXMudHJhbnNmb3JtID8gdGhpcy50cmFuc2Zvcm0oZW50cnkpIHx8IGVudHJ5IDogZW50cnlcbiAgICBpZiAodHggIT09IGVudHJ5KSB7XG4gICAgICB0eC5vbignZXJyb3InLCBlciA9PiB7XG4gICAgICAgIHRoaXNbT05FUlJPUl0oZXIsIGVudHJ5KVxuICAgICAgICBmdWxseURvbmUoKVxuICAgICAgfSlcbiAgICAgIGVudHJ5LnBpcGUodHgpXG4gICAgfVxuICAgIHR4LnBpcGUoc3RyZWFtKVxuICB9XG5cbiAgW0RJUkVDVE9SWV0gKGVudHJ5LCBmdWxseURvbmUpIHtcbiAgICBjb25zdCBtb2RlID0gZW50cnkubW9kZSAmIDBvNzc3NyB8fCB0aGlzLmRtb2RlXG4gICAgdGhpc1tNS0RJUl0oZW50cnkuYWJzb2x1dGUsIG1vZGUsIGVyID0+IHtcbiAgICAgIGlmIChlcikge1xuICAgICAgICB0aGlzW09ORVJST1JdKGVyLCBlbnRyeSlcbiAgICAgICAgZnVsbHlEb25lKClcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGxldCBhY3Rpb25zID0gMVxuICAgICAgY29uc3QgZG9uZSA9IF8gPT4ge1xuICAgICAgICBpZiAoLS1hY3Rpb25zID09PSAwKSB7XG4gICAgICAgICAgZnVsbHlEb25lKClcbiAgICAgICAgICB0aGlzW1VOUEVORF0oKVxuICAgICAgICAgIGVudHJ5LnJlc3VtZSgpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGVudHJ5Lm10aW1lICYmICF0aGlzLm5vTXRpbWUpIHtcbiAgICAgICAgYWN0aW9ucysrXG4gICAgICAgIGZzLnV0aW1lcyhlbnRyeS5hYnNvbHV0ZSwgZW50cnkuYXRpbWUgfHwgbmV3IERhdGUoKSwgZW50cnkubXRpbWUsIGRvbmUpXG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzW0RPQ0hPV05dKGVudHJ5KSkge1xuICAgICAgICBhY3Rpb25zKytcbiAgICAgICAgZnMuY2hvd24oZW50cnkuYWJzb2x1dGUsIHRoaXNbVUlEXShlbnRyeSksIHRoaXNbR0lEXShlbnRyeSksIGRvbmUpXG4gICAgICB9XG5cbiAgICAgIGRvbmUoKVxuICAgIH0pXG4gIH1cblxuICBbVU5TVVBQT1JURURdIChlbnRyeSkge1xuICAgIGVudHJ5LnVuc3VwcG9ydGVkID0gdHJ1ZVxuICAgIHRoaXMud2FybignVEFSX0VOVFJZX1VOU1VQUE9SVEVEJyxcbiAgICAgIGB1bnN1cHBvcnRlZCBlbnRyeSB0eXBlOiAke2VudHJ5LnR5cGV9YCwgeyBlbnRyeSB9KVxuICAgIGVudHJ5LnJlc3VtZSgpXG4gIH1cblxuICBbU1lNTElOS10gKGVudHJ5LCBkb25lKSB7XG4gICAgdGhpc1tMSU5LXShlbnRyeSwgZW50cnkubGlua3BhdGgsICdzeW1saW5rJywgZG9uZSlcbiAgfVxuXG4gIFtIQVJETElOS10gKGVudHJ5LCBkb25lKSB7XG4gICAgY29uc3QgbGlua3BhdGggPSBub3JtUGF0aChwYXRoLnJlc29sdmUodGhpcy5jd2QsIGVudHJ5LmxpbmtwYXRoKSlcbiAgICB0aGlzW0xJTktdKGVudHJ5LCBsaW5rcGF0aCwgJ2xpbmsnLCBkb25lKVxuICB9XG5cbiAgW1BFTkRdICgpIHtcbiAgICB0aGlzW1BFTkRJTkddKytcbiAgfVxuXG4gIFtVTlBFTkRdICgpIHtcbiAgICB0aGlzW1BFTkRJTkddLS1cbiAgICB0aGlzW01BWUJFQ0xPU0VdKClcbiAgfVxuXG4gIFtTS0lQXSAoZW50cnkpIHtcbiAgICB0aGlzW1VOUEVORF0oKVxuICAgIGVudHJ5LnJlc3VtZSgpXG4gIH1cblxuICAvLyBDaGVjayBpZiB3ZSBjYW4gcmV1c2UgYW4gZXhpc3RpbmcgZmlsZXN5c3RlbSBlbnRyeSBzYWZlbHkgYW5kXG4gIC8vIG92ZXJ3cml0ZSBpdCwgcmF0aGVyIHRoYW4gdW5saW5raW5nIGFuZCByZWNyZWF0aW5nXG4gIC8vIFdpbmRvd3MgZG9lc24ndCByZXBvcnQgYSB1c2VmdWwgbmxpbmssIHNvIHdlIGp1c3QgbmV2ZXIgcmV1c2UgZW50cmllc1xuICBbSVNSRVVTQUJMRV0gKGVudHJ5LCBzdCkge1xuICAgIHJldHVybiBlbnRyeS50eXBlID09PSAnRmlsZScgJiZcbiAgICAgICF0aGlzLnVubGluayAmJlxuICAgICAgc3QuaXNGaWxlKCkgJiZcbiAgICAgIHN0Lm5saW5rIDw9IDEgJiZcbiAgICAgICFpc1dpbmRvd3NcbiAgfVxuXG4gIC8vIGNoZWNrIGlmIGEgdGhpbmcgaXMgdGhlcmUsIGFuZCBpZiBzbywgdHJ5IHRvIGNsb2JiZXIgaXRcbiAgW0NIRUNLRlNdIChlbnRyeSkge1xuICAgIHRoaXNbUEVORF0oKVxuICAgIGNvbnN0IHBhdGhzID0gW2VudHJ5LnBhdGhdXG4gICAgaWYgKGVudHJ5LmxpbmtwYXRoKSB7XG4gICAgICBwYXRocy5wdXNoKGVudHJ5LmxpbmtwYXRoKVxuICAgIH1cbiAgICB0aGlzLnJlc2VydmF0aW9ucy5yZXNlcnZlKHBhdGhzLCBkb25lID0+IHRoaXNbQ0hFQ0tGUzJdKGVudHJ5LCBkb25lKSlcbiAgfVxuXG4gIFtQUlVORUNBQ0hFXSAoZW50cnkpIHtcbiAgICAvLyBpZiB3ZSBhcmUgbm90IGNyZWF0aW5nIGEgZGlyZWN0b3J5LCBhbmQgdGhlIHBhdGggaXMgaW4gdGhlIGRpckNhY2hlLFxuICAgIC8vIHRoZW4gdGhhdCBtZWFucyB3ZSBhcmUgYWJvdXQgdG8gZGVsZXRlIHRoZSBkaXJlY3Rvcnkgd2UgY3JlYXRlZFxuICAgIC8vIHByZXZpb3VzbHksIGFuZCBpdCBpcyBubyBsb25nZXIgZ29pbmcgdG8gYmUgYSBkaXJlY3RvcnksIGFuZCBuZWl0aGVyXG4gICAgLy8gaXMgYW55IG9mIGl0cyBjaGlsZHJlbi5cbiAgICAvLyBJZiBhIHN5bWJvbGljIGxpbmsgaXMgZW5jb3VudGVyZWQsIGFsbCBiZXRzIGFyZSBvZmYuICBUaGVyZSBpcyBub1xuICAgIC8vIHJlYXNvbmFibGUgd2F5IHRvIHNhbml0aXplIHRoZSBjYWNoZSBpbiBzdWNoIGEgd2F5IHdlIHdpbGwgYmUgYWJsZSB0b1xuICAgIC8vIGF2b2lkIGhhdmluZyBmaWxlc3lzdGVtIGNvbGxpc2lvbnMuICBJZiB0aGlzIGhhcHBlbnMgd2l0aCBhIG5vbi1zeW1saW5rXG4gICAgLy8gZW50cnksIGl0J2xsIGp1c3QgZmFpbCB0byB1bnBhY2ssIGJ1dCBhIHN5bWxpbmsgdG8gYSBkaXJlY3RvcnksIHVzaW5nIGFuXG4gICAgLy8gOC4zIHNob3J0bmFtZSBvciBjZXJ0YWluIHVuaWNvZGUgYXR0YWNrcywgY2FuIGV2YWRlIGRldGVjdGlvbiBhbmQgbGVhZFxuICAgIC8vIHRvIGFyYml0cmFyeSB3cml0ZXMgdG8gYW55d2hlcmUgb24gdGhlIHN5c3RlbS5cbiAgICBpZiAoZW50cnkudHlwZSA9PT0gJ1N5bWJvbGljTGluaycpIHtcbiAgICAgIGRyb3BDYWNoZSh0aGlzLmRpckNhY2hlKVxuICAgIH0gZWxzZSBpZiAoZW50cnkudHlwZSAhPT0gJ0RpcmVjdG9yeScpIHtcbiAgICAgIHBydW5lQ2FjaGUodGhpcy5kaXJDYWNoZSwgZW50cnkuYWJzb2x1dGUpXG4gICAgfVxuICB9XG5cbiAgW0NIRUNLRlMyXSAoZW50cnksIGZ1bGx5RG9uZSkge1xuICAgIHRoaXNbUFJVTkVDQUNIRV0oZW50cnkpXG5cbiAgICBjb25zdCBkb25lID0gZXIgPT4ge1xuICAgICAgdGhpc1tQUlVORUNBQ0hFXShlbnRyeSlcbiAgICAgIGZ1bGx5RG9uZShlcilcbiAgICB9XG5cbiAgICBjb25zdCBjaGVja0N3ZCA9ICgpID0+IHtcbiAgICAgIHRoaXNbTUtESVJdKHRoaXMuY3dkLCB0aGlzLmRtb2RlLCBlciA9PiB7XG4gICAgICAgIGlmIChlcikge1xuICAgICAgICAgIHRoaXNbT05FUlJPUl0oZXIsIGVudHJ5KVxuICAgICAgICAgIGRvbmUoKVxuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG4gICAgICAgIHRoaXNbQ0hFQ0tFRF9DV0RdID0gdHJ1ZVxuICAgICAgICBzdGFydCgpXG4gICAgICB9KVxuICAgIH1cblxuICAgIGNvbnN0IHN0YXJ0ID0gKCkgPT4ge1xuICAgICAgaWYgKGVudHJ5LmFic29sdXRlICE9PSB0aGlzLmN3ZCkge1xuICAgICAgICBjb25zdCBwYXJlbnQgPSBub3JtUGF0aChwYXRoLmRpcm5hbWUoZW50cnkuYWJzb2x1dGUpKVxuICAgICAgICBpZiAocGFyZW50ICE9PSB0aGlzLmN3ZCkge1xuICAgICAgICAgIHJldHVybiB0aGlzW01LRElSXShwYXJlbnQsIHRoaXMuZG1vZGUsIGVyID0+IHtcbiAgICAgICAgICAgIGlmIChlcikge1xuICAgICAgICAgICAgICB0aGlzW09ORVJST1JdKGVyLCBlbnRyeSlcbiAgICAgICAgICAgICAgZG9uZSgpXG4gICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYWZ0ZXJNYWtlUGFyZW50KClcbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBhZnRlck1ha2VQYXJlbnQoKVxuICAgIH1cblxuICAgIGNvbnN0IGFmdGVyTWFrZVBhcmVudCA9ICgpID0+IHtcbiAgICAgIGZzLmxzdGF0KGVudHJ5LmFic29sdXRlLCAobHN0YXRFciwgc3QpID0+IHtcbiAgICAgICAgaWYgKHN0ICYmICh0aGlzLmtlZXAgfHwgdGhpcy5uZXdlciAmJiBzdC5tdGltZSA+IGVudHJ5Lm10aW1lKSkge1xuICAgICAgICAgIHRoaXNbU0tJUF0oZW50cnkpXG4gICAgICAgICAgZG9uZSgpXG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cbiAgICAgICAgaWYgKGxzdGF0RXIgfHwgdGhpc1tJU1JFVVNBQkxFXShlbnRyeSwgc3QpKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXNbTUFLRUZTXShudWxsLCBlbnRyeSwgZG9uZSlcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzdC5pc0RpcmVjdG9yeSgpKSB7XG4gICAgICAgICAgaWYgKGVudHJ5LnR5cGUgPT09ICdEaXJlY3RvcnknKSB7XG4gICAgICAgICAgICBjb25zdCBuZWVkQ2htb2QgPSAhdGhpcy5ub0NobW9kICYmXG4gICAgICAgICAgICAgIGVudHJ5Lm1vZGUgJiZcbiAgICAgICAgICAgICAgKHN0Lm1vZGUgJiAwbzc3NzcpICE9PSBlbnRyeS5tb2RlXG4gICAgICAgICAgICBjb25zdCBhZnRlckNobW9kID0gZXIgPT4gdGhpc1tNQUtFRlNdKGVyLCBlbnRyeSwgZG9uZSlcbiAgICAgICAgICAgIGlmICghbmVlZENobW9kKSB7XG4gICAgICAgICAgICAgIHJldHVybiBhZnRlckNobW9kKClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmcy5jaG1vZChlbnRyeS5hYnNvbHV0ZSwgZW50cnkubW9kZSwgYWZ0ZXJDaG1vZClcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gTm90IGEgZGlyIGVudHJ5LCBoYXZlIHRvIHJlbW92ZSBpdC5cbiAgICAgICAgICAvLyBOQjogdGhlIG9ubHkgd2F5IHRvIGVuZCB1cCB3aXRoIGFuIGVudHJ5IHRoYXQgaXMgdGhlIGN3ZFxuICAgICAgICAgIC8vIGl0c2VsZiwgaW4gc3VjaCBhIHdheSB0aGF0ID09IGRvZXMgbm90IGRldGVjdCwgaXMgYVxuICAgICAgICAgIC8vIHRyaWNreSB3aW5kb3dzIGFic29sdXRlIHBhdGggd2l0aCBVTkMgb3IgOC4zIHBhcnRzIChhbmRcbiAgICAgICAgICAvLyBwcmVzZXJ2ZVBhdGhzOnRydWUsIG9yIGVsc2UgaXQgd2lsbCBoYXZlIGJlZW4gc3RyaXBwZWQpLlxuICAgICAgICAgIC8vIEluIHRoYXQgY2FzZSwgdGhlIHVzZXIgaGFzIG9wdGVkIG91dCBvZiBwYXRoIHByb3RlY3Rpb25zXG4gICAgICAgICAgLy8gZXhwbGljaXRseSwgc28gaWYgdGhleSBibG93IGF3YXkgdGhlIGN3ZCwgYydlc3QgbGEgdmllLlxuICAgICAgICAgIGlmIChlbnRyeS5hYnNvbHV0ZSAhPT0gdGhpcy5jd2QpIHtcbiAgICAgICAgICAgIHJldHVybiBmcy5ybWRpcihlbnRyeS5hYnNvbHV0ZSwgZXIgPT5cbiAgICAgICAgICAgICAgdGhpc1tNQUtFRlNdKGVyLCBlbnRyeSwgZG9uZSkpXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gbm90IGEgZGlyLCBhbmQgbm90IHJldXNhYmxlXG4gICAgICAgIC8vIGRvbid0IHJlbW92ZSBpZiB0aGUgY3dkLCB3ZSB3YW50IHRoYXQgZXJyb3JcbiAgICAgICAgaWYgKGVudHJ5LmFic29sdXRlID09PSB0aGlzLmN3ZCkge1xuICAgICAgICAgIHJldHVybiB0aGlzW01BS0VGU10obnVsbCwgZW50cnksIGRvbmUpXG4gICAgICAgIH1cblxuICAgICAgICB1bmxpbmtGaWxlKGVudHJ5LmFic29sdXRlLCBlciA9PlxuICAgICAgICAgIHRoaXNbTUFLRUZTXShlciwgZW50cnksIGRvbmUpKVxuICAgICAgfSlcbiAgICB9XG5cbiAgICBpZiAodGhpc1tDSEVDS0VEX0NXRF0pIHtcbiAgICAgIHN0YXJ0KClcbiAgICB9IGVsc2Uge1xuICAgICAgY2hlY2tDd2QoKVxuICAgIH1cbiAgfVxuXG4gIFtNQUtFRlNdIChlciwgZW50cnksIGRvbmUpIHtcbiAgICBpZiAoZXIpIHtcbiAgICAgIHRoaXNbT05FUlJPUl0oZXIsIGVudHJ5KVxuICAgICAgZG9uZSgpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBzd2l0Y2ggKGVudHJ5LnR5cGUpIHtcbiAgICAgIGNhc2UgJ0ZpbGUnOlxuICAgICAgY2FzZSAnT2xkRmlsZSc6XG4gICAgICBjYXNlICdDb250aWd1b3VzRmlsZSc6XG4gICAgICAgIHJldHVybiB0aGlzW0ZJTEVdKGVudHJ5LCBkb25lKVxuXG4gICAgICBjYXNlICdMaW5rJzpcbiAgICAgICAgcmV0dXJuIHRoaXNbSEFSRExJTktdKGVudHJ5LCBkb25lKVxuXG4gICAgICBjYXNlICdTeW1ib2xpY0xpbmsnOlxuICAgICAgICByZXR1cm4gdGhpc1tTWU1MSU5LXShlbnRyeSwgZG9uZSlcblxuICAgICAgY2FzZSAnRGlyZWN0b3J5JzpcbiAgICAgIGNhc2UgJ0dOVUR1bXBEaXInOlxuICAgICAgICByZXR1cm4gdGhpc1tESVJFQ1RPUlldKGVudHJ5LCBkb25lKVxuICAgIH1cbiAgfVxuXG4gIFtMSU5LXSAoZW50cnksIGxpbmtwYXRoLCBsaW5rLCBkb25lKSB7XG4gICAgLy8gWFhYOiBnZXQgdGhlIHR5cGUgKCdzeW1saW5rJyBvciAnanVuY3Rpb24nKSBmb3Igd2luZG93c1xuICAgIGZzW2xpbmtdKGxpbmtwYXRoLCBlbnRyeS5hYnNvbHV0ZSwgZXIgPT4ge1xuICAgICAgaWYgKGVyKSB7XG4gICAgICAgIHRoaXNbT05FUlJPUl0oZXIsIGVudHJ5KVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpc1tVTlBFTkRdKClcbiAgICAgICAgZW50cnkucmVzdW1lKClcbiAgICAgIH1cbiAgICAgIGRvbmUoKVxuICAgIH0pXG4gIH1cbn1cblxuY29uc3QgY2FsbFN5bmMgPSBmbiA9PiB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIFtudWxsLCBmbigpXVxuICB9IGNhdGNoIChlcikge1xuICAgIHJldHVybiBbZXIsIG51bGxdXG4gIH1cbn1cbmNsYXNzIFVucGFja1N5bmMgZXh0ZW5kcyBVbnBhY2sge1xuICBbTUFLRUZTXSAoZXIsIGVudHJ5KSB7XG4gICAgcmV0dXJuIHN1cGVyW01BS0VGU10oZXIsIGVudHJ5LCAoKSA9PiB7fSlcbiAgfVxuXG4gIFtDSEVDS0ZTXSAoZW50cnkpIHtcbiAgICB0aGlzW1BSVU5FQ0FDSEVdKGVudHJ5KVxuXG4gICAgaWYgKCF0aGlzW0NIRUNLRURfQ1dEXSkge1xuICAgICAgY29uc3QgZXIgPSB0aGlzW01LRElSXSh0aGlzLmN3ZCwgdGhpcy5kbW9kZSlcbiAgICAgIGlmIChlcikge1xuICAgICAgICByZXR1cm4gdGhpc1tPTkVSUk9SXShlciwgZW50cnkpXG4gICAgICB9XG4gICAgICB0aGlzW0NIRUNLRURfQ1dEXSA9IHRydWVcbiAgICB9XG5cbiAgICAvLyBkb24ndCBib3RoZXIgdG8gbWFrZSB0aGUgcGFyZW50IGlmIHRoZSBjdXJyZW50IGVudHJ5IGlzIHRoZSBjd2QsXG4gICAgLy8gd2UndmUgYWxyZWFkeSBjaGVja2VkIGl0LlxuICAgIGlmIChlbnRyeS5hYnNvbHV0ZSAhPT0gdGhpcy5jd2QpIHtcbiAgICAgIGNvbnN0IHBhcmVudCA9IG5vcm1QYXRoKHBhdGguZGlybmFtZShlbnRyeS5hYnNvbHV0ZSkpXG4gICAgICBpZiAocGFyZW50ICE9PSB0aGlzLmN3ZCkge1xuICAgICAgICBjb25zdCBta1BhcmVudCA9IHRoaXNbTUtESVJdKHBhcmVudCwgdGhpcy5kbW9kZSlcbiAgICAgICAgaWYgKG1rUGFyZW50KSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXNbT05FUlJPUl0obWtQYXJlbnQsIGVudHJ5KVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgW2xzdGF0RXIsIHN0XSA9IGNhbGxTeW5jKCgpID0+IGZzLmxzdGF0U3luYyhlbnRyeS5hYnNvbHV0ZSkpXG4gICAgaWYgKHN0ICYmICh0aGlzLmtlZXAgfHwgdGhpcy5uZXdlciAmJiBzdC5tdGltZSA+IGVudHJ5Lm10aW1lKSkge1xuICAgICAgcmV0dXJuIHRoaXNbU0tJUF0oZW50cnkpXG4gICAgfVxuXG4gICAgaWYgKGxzdGF0RXIgfHwgdGhpc1tJU1JFVVNBQkxFXShlbnRyeSwgc3QpKSB7XG4gICAgICByZXR1cm4gdGhpc1tNQUtFRlNdKG51bGwsIGVudHJ5KVxuICAgIH1cblxuICAgIGlmIChzdC5pc0RpcmVjdG9yeSgpKSB7XG4gICAgICBpZiAoZW50cnkudHlwZSA9PT0gJ0RpcmVjdG9yeScpIHtcbiAgICAgICAgY29uc3QgbmVlZENobW9kID0gIXRoaXMubm9DaG1vZCAmJlxuICAgICAgICAgIGVudHJ5Lm1vZGUgJiZcbiAgICAgICAgICAoc3QubW9kZSAmIDBvNzc3NykgIT09IGVudHJ5Lm1vZGVcbiAgICAgICAgY29uc3QgW2VyXSA9IG5lZWRDaG1vZCA/IGNhbGxTeW5jKCgpID0+IHtcbiAgICAgICAgICBmcy5jaG1vZFN5bmMoZW50cnkuYWJzb2x1dGUsIGVudHJ5Lm1vZGUpXG4gICAgICAgIH0pIDogW11cbiAgICAgICAgcmV0dXJuIHRoaXNbTUFLRUZTXShlciwgZW50cnkpXG4gICAgICB9XG4gICAgICAvLyBub3QgYSBkaXIgZW50cnksIGhhdmUgdG8gcmVtb3ZlIGl0XG4gICAgICBjb25zdCBbZXJdID0gY2FsbFN5bmMoKCkgPT4gZnMucm1kaXJTeW5jKGVudHJ5LmFic29sdXRlKSlcbiAgICAgIHRoaXNbTUFLRUZTXShlciwgZW50cnkpXG4gICAgfVxuXG4gICAgLy8gbm90IGEgZGlyLCBhbmQgbm90IHJldXNhYmxlLlxuICAgIC8vIGRvbid0IHJlbW92ZSBpZiBpdCdzIHRoZSBjd2QsIHNpbmNlIHdlIHdhbnQgdGhhdCBlcnJvci5cbiAgICBjb25zdCBbZXJdID0gZW50cnkuYWJzb2x1dGUgPT09IHRoaXMuY3dkID8gW11cbiAgICAgIDogY2FsbFN5bmMoKCkgPT4gdW5saW5rRmlsZVN5bmMoZW50cnkuYWJzb2x1dGUpKVxuICAgIHRoaXNbTUFLRUZTXShlciwgZW50cnkpXG4gIH1cblxuICBbRklMRV0gKGVudHJ5LCBkb25lKSB7XG4gICAgY29uc3QgbW9kZSA9IGVudHJ5Lm1vZGUgJiAwbzc3NzcgfHwgdGhpcy5mbW9kZVxuXG4gICAgY29uc3Qgb25lciA9IGVyID0+IHtcbiAgICAgIGxldCBjbG9zZUVycm9yXG4gICAgICB0cnkge1xuICAgICAgICBmcy5jbG9zZVN5bmMoZmQpXG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNsb3NlRXJyb3IgPSBlXG4gICAgICB9XG4gICAgICBpZiAoZXIgfHwgY2xvc2VFcnJvcikge1xuICAgICAgICB0aGlzW09ORVJST1JdKGVyIHx8IGNsb3NlRXJyb3IsIGVudHJ5KVxuICAgICAgfVxuICAgICAgZG9uZSgpXG4gICAgfVxuXG4gICAgbGV0IGZkXG4gICAgdHJ5IHtcbiAgICAgIGZkID0gZnMub3BlblN5bmMoZW50cnkuYWJzb2x1dGUsIGdldEZsYWcoZW50cnkuc2l6ZSksIG1vZGUpXG4gICAgfSBjYXRjaCAoZXIpIHtcbiAgICAgIHJldHVybiBvbmVyKGVyKVxuICAgIH1cbiAgICBjb25zdCB0eCA9IHRoaXMudHJhbnNmb3JtID8gdGhpcy50cmFuc2Zvcm0oZW50cnkpIHx8IGVudHJ5IDogZW50cnlcbiAgICBpZiAodHggIT09IGVudHJ5KSB7XG4gICAgICB0eC5vbignZXJyb3InLCBlciA9PiB0aGlzW09ORVJST1JdKGVyLCBlbnRyeSkpXG4gICAgICBlbnRyeS5waXBlKHR4KVxuICAgIH1cblxuICAgIHR4Lm9uKCdkYXRhJywgY2h1bmsgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgZnMud3JpdGVTeW5jKGZkLCBjaHVuaywgMCwgY2h1bmsubGVuZ3RoKVxuICAgICAgfSBjYXRjaCAoZXIpIHtcbiAgICAgICAgb25lcihlcilcbiAgICAgIH1cbiAgICB9KVxuXG4gICAgdHgub24oJ2VuZCcsIF8gPT4ge1xuICAgICAgbGV0IGVyID0gbnVsbFxuICAgICAgLy8gdHJ5IGJvdGgsIGZhbGxpbmcgZnV0aW1lcyBiYWNrIHRvIHV0aW1lc1xuICAgICAgLy8gaWYgZWl0aGVyIGZhaWxzLCBoYW5kbGUgdGhlIGZpcnN0IGVycm9yXG4gICAgICBpZiAoZW50cnkubXRpbWUgJiYgIXRoaXMubm9NdGltZSkge1xuICAgICAgICBjb25zdCBhdGltZSA9IGVudHJ5LmF0aW1lIHx8IG5ldyBEYXRlKClcbiAgICAgICAgY29uc3QgbXRpbWUgPSBlbnRyeS5tdGltZVxuICAgICAgICB0cnkge1xuICAgICAgICAgIGZzLmZ1dGltZXNTeW5jKGZkLCBhdGltZSwgbXRpbWUpXG4gICAgICAgIH0gY2F0Y2ggKGZ1dGltZXNlcikge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBmcy51dGltZXNTeW5jKGVudHJ5LmFic29sdXRlLCBhdGltZSwgbXRpbWUpXG4gICAgICAgICAgfSBjYXRjaCAodXRpbWVzZXIpIHtcbiAgICAgICAgICAgIGVyID0gZnV0aW1lc2VyXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzW0RPQ0hPV05dKGVudHJ5KSkge1xuICAgICAgICBjb25zdCB1aWQgPSB0aGlzW1VJRF0oZW50cnkpXG4gICAgICAgIGNvbnN0IGdpZCA9IHRoaXNbR0lEXShlbnRyeSlcblxuICAgICAgICB0cnkge1xuICAgICAgICAgIGZzLmZjaG93blN5bmMoZmQsIHVpZCwgZ2lkKVxuICAgICAgICB9IGNhdGNoIChmY2hvd25lcikge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBmcy5jaG93blN5bmMoZW50cnkuYWJzb2x1dGUsIHVpZCwgZ2lkKVxuICAgICAgICAgIH0gY2F0Y2ggKGNob3duZXIpIHtcbiAgICAgICAgICAgIGVyID0gZXIgfHwgZmNob3duZXJcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgb25lcihlcilcbiAgICB9KVxuICB9XG5cbiAgW0RJUkVDVE9SWV0gKGVudHJ5LCBkb25lKSB7XG4gICAgY29uc3QgbW9kZSA9IGVudHJ5Lm1vZGUgJiAwbzc3NzcgfHwgdGhpcy5kbW9kZVxuICAgIGNvbnN0IGVyID0gdGhpc1tNS0RJUl0oZW50cnkuYWJzb2x1dGUsIG1vZGUpXG4gICAgaWYgKGVyKSB7XG4gICAgICB0aGlzW09ORVJST1JdKGVyLCBlbnRyeSlcbiAgICAgIGRvbmUoKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGlmIChlbnRyeS5tdGltZSAmJiAhdGhpcy5ub010aW1lKSB7XG4gICAgICB0cnkge1xuICAgICAgICBmcy51dGltZXNTeW5jKGVudHJ5LmFic29sdXRlLCBlbnRyeS5hdGltZSB8fCBuZXcgRGF0ZSgpLCBlbnRyeS5tdGltZSlcbiAgICAgIH0gY2F0Y2ggKGVyKSB7fVxuICAgIH1cbiAgICBpZiAodGhpc1tET0NIT1dOXShlbnRyeSkpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGZzLmNob3duU3luYyhlbnRyeS5hYnNvbHV0ZSwgdGhpc1tVSURdKGVudHJ5KSwgdGhpc1tHSURdKGVudHJ5KSlcbiAgICAgIH0gY2F0Y2ggKGVyKSB7fVxuICAgIH1cbiAgICBkb25lKClcbiAgICBlbnRyeS5yZXN1bWUoKVxuICB9XG5cbiAgW01LRElSXSAoZGlyLCBtb2RlKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBta2Rpci5zeW5jKG5vcm1QYXRoKGRpciksIHtcbiAgICAgICAgdWlkOiB0aGlzLnVpZCxcbiAgICAgICAgZ2lkOiB0aGlzLmdpZCxcbiAgICAgICAgcHJvY2Vzc1VpZDogdGhpcy5wcm9jZXNzVWlkLFxuICAgICAgICBwcm9jZXNzR2lkOiB0aGlzLnByb2Nlc3NHaWQsXG4gICAgICAgIHVtYXNrOiB0aGlzLnByb2Nlc3NVbWFzayxcbiAgICAgICAgcHJlc2VydmU6IHRoaXMucHJlc2VydmVQYXRocyxcbiAgICAgICAgdW5saW5rOiB0aGlzLnVubGluayxcbiAgICAgICAgY2FjaGU6IHRoaXMuZGlyQ2FjaGUsXG4gICAgICAgIGN3ZDogdGhpcy5jd2QsXG4gICAgICAgIG1vZGU6IG1vZGUsXG4gICAgICB9KVxuICAgIH0gY2F0Y2ggKGVyKSB7XG4gICAgICByZXR1cm4gZXJcbiAgICB9XG4gIH1cblxuICBbTElOS10gKGVudHJ5LCBsaW5rcGF0aCwgbGluaywgZG9uZSkge1xuICAgIHRyeSB7XG4gICAgICBmc1tsaW5rICsgJ1N5bmMnXShsaW5rcGF0aCwgZW50cnkuYWJzb2x1dGUpXG4gICAgICBkb25lKClcbiAgICAgIGVudHJ5LnJlc3VtZSgpXG4gICAgfSBjYXRjaCAoZXIpIHtcbiAgICAgIHJldHVybiB0aGlzW09ORVJST1JdKGVyLCBlbnRyeSlcbiAgICB9XG4gIH1cbn1cblxuVW5wYWNrLlN5bmMgPSBVbnBhY2tTeW5jXG5tb2R1bGUuZXhwb3J0cyA9IFVucGFja1xuIiwgIid1c2Ugc3RyaWN0J1xuXG4vLyB0YXIgLXhcbmNvbnN0IGhsbyA9IHJlcXVpcmUoJy4vaGlnaC1sZXZlbC1vcHQuanMnKVxuY29uc3QgVW5wYWNrID0gcmVxdWlyZSgnLi91bnBhY2suanMnKVxuY29uc3QgZnMgPSByZXF1aXJlKCdmcycpXG5jb25zdCBmc20gPSByZXF1aXJlKCdmcy1taW5pcGFzcycpXG5jb25zdCBwYXRoID0gcmVxdWlyZSgncGF0aCcpXG5jb25zdCBzdHJpcFNsYXNoID0gcmVxdWlyZSgnLi9zdHJpcC10cmFpbGluZy1zbGFzaGVzLmpzJylcblxubW9kdWxlLmV4cG9ydHMgPSAob3B0XywgZmlsZXMsIGNiKSA9PiB7XG4gIGlmICh0eXBlb2Ygb3B0XyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGNiID0gb3B0XywgZmlsZXMgPSBudWxsLCBvcHRfID0ge31cbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KG9wdF8pKSB7XG4gICAgZmlsZXMgPSBvcHRfLCBvcHRfID0ge31cbiAgfVxuXG4gIGlmICh0eXBlb2YgZmlsZXMgPT09ICdmdW5jdGlvbicpIHtcbiAgICBjYiA9IGZpbGVzLCBmaWxlcyA9IG51bGxcbiAgfVxuXG4gIGlmICghZmlsZXMpIHtcbiAgICBmaWxlcyA9IFtdXG4gIH0gZWxzZSB7XG4gICAgZmlsZXMgPSBBcnJheS5mcm9tKGZpbGVzKVxuICB9XG5cbiAgY29uc3Qgb3B0ID0gaGxvKG9wdF8pXG5cbiAgaWYgKG9wdC5zeW5jICYmIHR5cGVvZiBjYiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2NhbGxiYWNrIG5vdCBzdXBwb3J0ZWQgZm9yIHN5bmMgdGFyIGZ1bmN0aW9ucycpXG4gIH1cblxuICBpZiAoIW9wdC5maWxlICYmIHR5cGVvZiBjYiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2NhbGxiYWNrIG9ubHkgc3VwcG9ydGVkIHdpdGggZmlsZSBvcHRpb24nKVxuICB9XG5cbiAgaWYgKGZpbGVzLmxlbmd0aCkge1xuICAgIGZpbGVzRmlsdGVyKG9wdCwgZmlsZXMpXG4gIH1cblxuICByZXR1cm4gb3B0LmZpbGUgJiYgb3B0LnN5bmMgPyBleHRyYWN0RmlsZVN5bmMob3B0KVxuICAgIDogb3B0LmZpbGUgPyBleHRyYWN0RmlsZShvcHQsIGNiKVxuICAgIDogb3B0LnN5bmMgPyBleHRyYWN0U3luYyhvcHQpXG4gICAgOiBleHRyYWN0KG9wdClcbn1cblxuLy8gY29uc3RydWN0IGEgZmlsdGVyIHRoYXQgbGltaXRzIHRoZSBmaWxlIGVudHJpZXMgbGlzdGVkXG4vLyBpbmNsdWRlIGNoaWxkIGVudHJpZXMgaWYgYSBkaXIgaXMgaW5jbHVkZWRcbmNvbnN0IGZpbGVzRmlsdGVyID0gKG9wdCwgZmlsZXMpID0+IHtcbiAgY29uc3QgbWFwID0gbmV3IE1hcChmaWxlcy5tYXAoZiA9PiBbc3RyaXBTbGFzaChmKSwgdHJ1ZV0pKVxuICBjb25zdCBmaWx0ZXIgPSBvcHQuZmlsdGVyXG5cbiAgY29uc3QgbWFwSGFzID0gKGZpbGUsIHIpID0+IHtcbiAgICBjb25zdCByb290ID0gciB8fCBwYXRoLnBhcnNlKGZpbGUpLnJvb3QgfHwgJy4nXG4gICAgY29uc3QgcmV0ID0gZmlsZSA9PT0gcm9vdCA/IGZhbHNlXG4gICAgICA6IG1hcC5oYXMoZmlsZSkgPyBtYXAuZ2V0KGZpbGUpXG4gICAgICA6IG1hcEhhcyhwYXRoLmRpcm5hbWUoZmlsZSksIHJvb3QpXG5cbiAgICBtYXAuc2V0KGZpbGUsIHJldClcbiAgICByZXR1cm4gcmV0XG4gIH1cblxuICBvcHQuZmlsdGVyID0gZmlsdGVyXG4gICAgPyAoZmlsZSwgZW50cnkpID0+IGZpbHRlcihmaWxlLCBlbnRyeSkgJiYgbWFwSGFzKHN0cmlwU2xhc2goZmlsZSkpXG4gICAgOiBmaWxlID0+IG1hcEhhcyhzdHJpcFNsYXNoKGZpbGUpKVxufVxuXG5jb25zdCBleHRyYWN0RmlsZVN5bmMgPSBvcHQgPT4ge1xuICBjb25zdCB1ID0gbmV3IFVucGFjay5TeW5jKG9wdClcblxuICBjb25zdCBmaWxlID0gb3B0LmZpbGVcbiAgY29uc3Qgc3RhdCA9IGZzLnN0YXRTeW5jKGZpbGUpXG4gIC8vIFRoaXMgdHJhZGVzIGEgemVyby1ieXRlIHJlYWQoKSBzeXNjYWxsIGZvciBhIHN0YXRcbiAgLy8gSG93ZXZlciwgaXQgd2lsbCB1c3VhbGx5IHJlc3VsdCBpbiBsZXNzIG1lbW9yeSBhbGxvY2F0aW9uXG4gIGNvbnN0IHJlYWRTaXplID0gb3B0Lm1heFJlYWRTaXplIHx8IDE2ICogMTAyNCAqIDEwMjRcbiAgY29uc3Qgc3RyZWFtID0gbmV3IGZzbS5SZWFkU3RyZWFtU3luYyhmaWxlLCB7XG4gICAgcmVhZFNpemU6IHJlYWRTaXplLFxuICAgIHNpemU6IHN0YXQuc2l6ZSxcbiAgfSlcbiAgc3RyZWFtLnBpcGUodSlcbn1cblxuY29uc3QgZXh0cmFjdEZpbGUgPSAob3B0LCBjYikgPT4ge1xuICBjb25zdCB1ID0gbmV3IFVucGFjayhvcHQpXG4gIGNvbnN0IHJlYWRTaXplID0gb3B0Lm1heFJlYWRTaXplIHx8IDE2ICogMTAyNCAqIDEwMjRcblxuICBjb25zdCBmaWxlID0gb3B0LmZpbGVcbiAgY29uc3QgcCA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICB1Lm9uKCdlcnJvcicsIHJlamVjdClcbiAgICB1Lm9uKCdjbG9zZScsIHJlc29sdmUpXG5cbiAgICAvLyBUaGlzIHRyYWRlcyBhIHplcm8tYnl0ZSByZWFkKCkgc3lzY2FsbCBmb3IgYSBzdGF0XG4gICAgLy8gSG93ZXZlciwgaXQgd2lsbCB1c3VhbGx5IHJlc3VsdCBpbiBsZXNzIG1lbW9yeSBhbGxvY2F0aW9uXG4gICAgZnMuc3RhdChmaWxlLCAoZXIsIHN0YXQpID0+IHtcbiAgICAgIGlmIChlcikge1xuICAgICAgICByZWplY3QoZXIpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBzdHJlYW0gPSBuZXcgZnNtLlJlYWRTdHJlYW0oZmlsZSwge1xuICAgICAgICAgIHJlYWRTaXplOiByZWFkU2l6ZSxcbiAgICAgICAgICBzaXplOiBzdGF0LnNpemUsXG4gICAgICAgIH0pXG4gICAgICAgIHN0cmVhbS5vbignZXJyb3InLCByZWplY3QpXG4gICAgICAgIHN0cmVhbS5waXBlKHUpXG4gICAgICB9XG4gICAgfSlcbiAgfSlcbiAgcmV0dXJuIGNiID8gcC50aGVuKGNiLCBjYikgOiBwXG59XG5cbmNvbnN0IGV4dHJhY3RTeW5jID0gb3B0ID0+IG5ldyBVbnBhY2suU3luYyhvcHQpXG5cbmNvbnN0IGV4dHJhY3QgPSBvcHQgPT4gbmV3IFVucGFjayhvcHQpXG4iLCAiJ3VzZSBzdHJpY3QnXG5cbi8vIGhpZ2gtbGV2ZWwgY29tbWFuZHNcbmV4cG9ydHMuYyA9IGV4cG9ydHMuY3JlYXRlID0gcmVxdWlyZSgnLi9saWIvY3JlYXRlLmpzJylcbmV4cG9ydHMuciA9IGV4cG9ydHMucmVwbGFjZSA9IHJlcXVpcmUoJy4vbGliL3JlcGxhY2UuanMnKVxuZXhwb3J0cy50ID0gZXhwb3J0cy5saXN0ID0gcmVxdWlyZSgnLi9saWIvbGlzdC5qcycpXG5leHBvcnRzLnUgPSBleHBvcnRzLnVwZGF0ZSA9IHJlcXVpcmUoJy4vbGliL3VwZGF0ZS5qcycpXG5leHBvcnRzLnggPSBleHBvcnRzLmV4dHJhY3QgPSByZXF1aXJlKCcuL2xpYi9leHRyYWN0LmpzJylcblxuLy8gY2xhc3Nlc1xuZXhwb3J0cy5QYWNrID0gcmVxdWlyZSgnLi9saWIvcGFjay5qcycpXG5leHBvcnRzLlVucGFjayA9IHJlcXVpcmUoJy4vbGliL3VucGFjay5qcycpXG5leHBvcnRzLlBhcnNlID0gcmVxdWlyZSgnLi9saWIvcGFyc2UuanMnKVxuZXhwb3J0cy5SZWFkRW50cnkgPSByZXF1aXJlKCcuL2xpYi9yZWFkLWVudHJ5LmpzJylcbmV4cG9ydHMuV3JpdGVFbnRyeSA9IHJlcXVpcmUoJy4vbGliL3dyaXRlLWVudHJ5LmpzJylcbmV4cG9ydHMuSGVhZGVyID0gcmVxdWlyZSgnLi9saWIvaGVhZGVyLmpzJylcbmV4cG9ydHMuUGF4ID0gcmVxdWlyZSgnLi9saWIvcGF4LmpzJylcbmV4cG9ydHMudHlwZXMgPSByZXF1aXJlKCcuL2xpYi90eXBlcy5qcycpXG4iLCAiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLldvcmtlclBvb2wgPSB2b2lkIDA7XG5jb25zdCB0c2xpYl8xID0gcmVxdWlyZShcInRzbGliXCIpO1xuY29uc3Qgb3NfMSA9IHJlcXVpcmUoXCJvc1wiKTtcbmNvbnN0IHBfbGltaXRfMSA9IHRzbGliXzEuX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJwLWxpbWl0XCIpKTtcbmNvbnN0IHdvcmtlcl90aHJlYWRzXzEgPSByZXF1aXJlKFwid29ya2VyX3RocmVhZHNcIik7XG5jb25zdCBrVGFza0luZm8gPSBTeW1ib2woYGtUYXNrSW5mb2ApO1xuY2xhc3MgV29ya2VyUG9vbCB7XG4gICAgY29uc3RydWN0b3Ioc291cmNlKSB7XG4gICAgICAgIHRoaXMuc291cmNlID0gc291cmNlO1xuICAgICAgICB0aGlzLndvcmtlcnMgPSBbXTtcbiAgICAgICAgdGhpcy5saW1pdCA9ICgwLCBwX2xpbWl0XzEuZGVmYXVsdCkoTWF0aC5tYXgoMSwgKDAsIG9zXzEuY3B1cykoKS5sZW5ndGgpKTtcbiAgICAgICAgdGhpcy5jbGVhbnVwSW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5saW1pdC5wZW5kaW5nQ291bnQgPT09IDAgJiYgdGhpcy5saW1pdC5hY3RpdmVDb3VudCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIC8vIFN0YXJ0IHRlcm1pbmF0aW5nIG9uZSB3b3JrZXIgYXQgYSB0aW1lIHdoZW4gdGhlcmUgYXJlIG5vIHRhc2tzIGxlZnQuXG4gICAgICAgICAgICAgICAgLy8gVGhpcyBhbGxvd3MgdGhlIHBvb2wgdG8gc2NhbGUgZG93biB3aXRob3V0IGhhdmluZyB0byByZS1jcmVhdGUgdGhlXG4gICAgICAgICAgICAgICAgLy8gZW50aXJlIHBvb2wgd2hlbiB0aGVyZSBpcyBhIHNob3J0IGFtb3VudCBvZiB0aW1lIHdpdGhvdXQgdGFza3MuXG4gICAgICAgICAgICAgICAgY29uc3Qgd29ya2VyID0gdGhpcy53b3JrZXJzLnBvcCgpO1xuICAgICAgICAgICAgICAgIGlmICh3b3JrZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgd29ya2VyLnRlcm1pbmF0ZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLmNsZWFudXBJbnRlcnZhbCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9LCA1MDAwKS51bnJlZigpO1xuICAgIH1cbiAgICBjcmVhdGVXb3JrZXIoKSB7XG4gICAgICAgIHRoaXMuY2xlYW51cEludGVydmFsLnJlZnJlc2goKTtcbiAgICAgICAgY29uc3Qgd29ya2VyID0gbmV3IHdvcmtlcl90aHJlYWRzXzEuV29ya2VyKHRoaXMuc291cmNlLCB7XG4gICAgICAgICAgICBldmFsOiB0cnVlLFxuICAgICAgICAgICAgZXhlY0FyZ3Y6IFsuLi5wcm9jZXNzLmV4ZWNBcmd2LCBgLS11bmhhbmRsZWQtcmVqZWN0aW9ucz1zdHJpY3RgXSxcbiAgICAgICAgfSk7XG4gICAgICAgIHdvcmtlci5vbihgbWVzc2FnZWAsIChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgIGlmICghd29ya2VyW2tUYXNrSW5mb10pXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBBc3NlcnRpb24gZmFpbGVkOiBXb3JrZXIgc2VudCBhIHJlc3VsdCB3aXRob3V0IGhhdmluZyBhIHRhc2sgYXNzaWduZWRgKTtcbiAgICAgICAgICAgIHdvcmtlcltrVGFza0luZm9dLnJlc29sdmUocmVzdWx0KTtcbiAgICAgICAgICAgIHdvcmtlcltrVGFza0luZm9dID0gbnVsbDtcbiAgICAgICAgICAgIHdvcmtlci51bnJlZigpO1xuICAgICAgICAgICAgdGhpcy53b3JrZXJzLnB1c2god29ya2VyKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHdvcmtlci5vbihgZXJyb3JgLCBlcnIgPT4ge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgKF9hID0gd29ya2VyW2tUYXNrSW5mb10pID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5yZWplY3QoZXJyKTtcbiAgICAgICAgICAgIHdvcmtlcltrVGFza0luZm9dID0gbnVsbDtcbiAgICAgICAgfSk7XG4gICAgICAgIHdvcmtlci5vbihgZXhpdGAsIGNvZGUgPT4ge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgaWYgKGNvZGUgIT09IDApXG4gICAgICAgICAgICAgICAgKF9hID0gd29ya2VyW2tUYXNrSW5mb10pID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5yZWplY3QobmV3IEVycm9yKGBXb3JrZXIgZXhpdGVkIHdpdGggY29kZSAke2NvZGV9YCkpO1xuICAgICAgICAgICAgd29ya2VyW2tUYXNrSW5mb10gPSBudWxsO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHdvcmtlcjtcbiAgICB9XG4gICAgcnVuKGRhdGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubGltaXQoKCkgPT4ge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgY29uc3Qgd29ya2VyID0gKF9hID0gdGhpcy53b3JrZXJzLnBvcCgpKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiB0aGlzLmNyZWF0ZVdvcmtlcigpO1xuICAgICAgICAgICAgd29ya2VyLnJlZigpO1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgICAgICB3b3JrZXJba1Rhc2tJbmZvXSA9IHsgcmVzb2x2ZSwgcmVqZWN0IH07XG4gICAgICAgICAgICAgICAgd29ya2VyLnBvc3RNZXNzYWdlKGRhdGEpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbmV4cG9ydHMuV29ya2VyUG9vbCA9IFdvcmtlclBvb2w7XG4iLCAibGV0IGhvb2s7XG5cbm1vZHVsZS5leHBvcnRzLmdldENvbnRlbnQgPSAoKSA9PiB7XG4gIGlmICh0eXBlb2YgaG9vayA9PT0gYHVuZGVmaW5lZGApXG4gICAgaG9vayA9IHJlcXVpcmUoJ3psaWInKS5icm90bGlEZWNvbXByZXNzU3luYyhCdWZmZXIuZnJvbSgnV3o3VlZ5T2JPOVlLZFNlUW9pbHZTODk3WVhEQUF2enJPanArU3dXZ0p6dUIzcmFqQ3VvTnFMTktmVzFUekk2cWF1NHlHV1Bkc1dvYkExVEMrTkovZTRtYTUwQUpWSEt2b1JTTksxbFpLR2pGaHI0OXgzQnZnVURBbjdLdzFRYjZxS204SzV5MXZsQ21JdytGMHMvdW9SVFlCdGFlaC9TTno2MFBPL0ZybERXUk1jMmtmOFZ2L2lhTlFJU2hWdko2ZjU2NFNQbkxVMlh0RWZ4L0RrbWtKbVhPU1dXVlhyS0M2VXJubVZxeFkrRjVMTlRvaWkrV1RoMU5xUW9lQTB5NXRBTm9UQ2lrNkF4a0lxNlFuWG1RaXp6ay9QYjVsdHJYTjVHTHpOVFl3T2lJVWphazZrR3cyYmYzN0hHTnpyTGJMZmlpbG54MmttVzRxTlByVFZWMHBNQ0FQSlY1UkU0Wm5KRzlacjZlcmo5R0tuRENNYnZza3NZRXU1Nlc3ZVlLS0J1LzloT3grd0xaemlyNmZhK3EvLzkrdm94Tmcxd0JTa3JwRjZPMVBlNncwcFU4Q2laSGwyT1RoTElZdXVHYytObmJySzlmWTdVOFZVUGg3SEdXODJpUmN5N0NLTENuRjNtOHVFSTZseEh0ak1SZ242Wm1yKytSOEUyR2xpek55TnZpZ0hGbUJTM0E5TDNTSk50cDNJbFMxb0hOVkRHbmJ5cjYweG9MQVhPRzNNaDNSUm91Z2RJMS9scGNaS1VYd3Y5bjg5SFZHaWRoZEszejVheUJpMFp1RFpldVVVcXJQUGl2ZXZmbGF0c1FQVy9xZmc1OGtIeG1KeFZ2UER0cHFhRFJJSU1RWTV5UXJYZTF2NXJmNld3ckp2MWl4a3NoazhrV0NKdEFEWjVVODYxcUk4TVFPUFlMUDI5TEpDYXNDb05KOW5DOTZLUFpyV1dLcUhOZzUvV1dNeXAxMzZYakZPaUd6RlBabnFWcVdiV09Bc2NjMGYySm80VWNtb3FRNDBHZjl3TC9NM242OC9Yck4zSTZzTUtqWXp1NlJoZDg4RnpNa0czR1UzcTZqalZnODVkK1g3OFpoc25ZVTRXM3grbXVTby96U2pEUXc2aGVTUy9RRml4S25ENGZlVVFBYlozbnpONUtYbGtTckl4SXpNOXh5cDVLR3dGeWNxYStsRGlmam9mZDNib2xiZW54U2FPeE5mRVk1T0NBYzB1ZFg5a1lDSzFUREZWcFAxL2FBZGtiOTRQaXhqWHBHNU9KbXVpNDVIWDZYaWFJaENUVUpFZ0RvQzMzdzdCMDdSYi9zYkVkRHgwa283TGorOXNHQTZkK0ZXM2VGUE9qYUZSWTArRHhLMTBkcnoxbUNkY3Z0Y3lJTEh2eWphZ1NSZGhaODdZcFc1Zy8vZU9oaDdnMHJ5ODl6cTdXc3JBTnJJVkN5STNRWmkwVVFuNnQ0L2p5amVueHNJTzB0WnM5dm9RQVFjRUdwQ3ZlTE01bzJZYUsyNWRPKy8zcTh4Y3diczVQYU5PTjJkZ0RFNGkvekJ0SXNaeDh3c0IyY3pTRUNmZ0JKb3B1N1BmdHpVS1NCQnBZMjFRYjEwVDY1aEc0aXlEOW00VzFVWkl1dmxTclU5RHpjYWtsMlhKYzJGTUkzWjRkbS8rOVg2VlZpeDRSbVJtc0hheDk5dDZrbG1ZelBUSXkwY3V5bUQ2Q0ZuNlhkeEQrdjdzejNUMDhpRmd5eVF3azBFeUFaRmNDSUxvSUZIbnZmZDhqLy84ZXlmS0lTTEFqSXRtY1JJSmxCcUpLQUpmZXFtWWxXZVRzbXpTUzFGV3pWYmVOT0lJeWtvYmhLT3laWFd0eEJISEVFWFI5L3Y4eXRiN3RleEdSa1FtU29rQVZSVkVxbFhIZnREUHJTWUNVbWxLcDJ0a2F2ek4yMVlwM2I5eFd2UGNpcHBDUm1WM0l5TXdwWkNMeG0waUEwMFFDT0VjRXFZaElRQldacE9vbktLb25BYW5xZzJ4Vkg2cXF1NGZTZCt3YVh5U2xPUzNUUnRKM3RzMDR2MVo5V3pYRytlVmZMTWU2NVN6L3JMWnVzZDJQLzdVM2UrbFQrQ2tBK0JIY01KSmpRSGkzKzk1M1hOS010bXIxSFNNMFNyUnY2cDU1RTdReE9HUms1aktIR1RBei9yUkw5STNXZjVyVzdKdjUvODl3NUhvUkJpT21aYTgwUUlHeTJ5STJaQ2xWbmNQU1pTdFphdkVJMlkxdytGK3FhYnNJQy9CRW5hbHp6cVdMY3NId25MZDBDazBwRW52ZkZnQnk1a2dxMHNxUko0ZUlJeGVYMXlIR051VXFwYVp6MTdsMVYxaWRwVXB1N1g4dExRLzJYQXFCT1FCeVpjbk9FR2plNzFaTDNTT3QxS01OR3NVZFhkUmVsSFFoYTBaWHJuV01LQ1ZtdElZWGtoeENSTVRjMUR3eFUyVEVEYUVCSVllb2VmNy9Eei8xdm4zbXI2a1Z1L2hiUTROYVNrbGlWanBRQkFQK0xVd0Jod0FGa0FJYlk5L2hFQW9FdklHY1piUFpqeEhIbFNRY2VrYXB4aE4xVDZtL1h0TTAvYXF6cytnQzRNNUJhc2JtYk04V0U3QUFZVTVWRTVTUFZLRm8rV0ZWczFWUjM0YzF5RElGR2FCdC9mZkhRSmFRaTMycnE3UkRDUXlWQXozVUJEbERsS1NTQm1FaHhvc0wycnQ1Zms3L0Q0MGtlUTU0ZjIxdkdwTW9TMlU0QUJlSUMxRUJOU3JpREU1MFo2eXVORytPSWJiWkovKzlTcXpxZGFOVDBISFh5d0F0NzdJS0Rnb1BnY0svNzBWL3VpT3dzTEF3TUZBb0ZBS0JRT0JCSUZENGdoZis4VjNkZjgvbk96TmF0djN1NTRJQkIwUlZRSUJCZ0VHQVZRVllhb0NCS3hsRWxkVkdxa0ZBd0FFRDl2UGJ0djRKYXZ1Tk1MdjNtNm9iMGFJRkFvRkFJQkFSaU93VmRZVkFJQkFJUkFRaUlpSWlBaiszK0gvcTkzMFpvV1ptdjNqaVp0T2lSVzhXZ1VBZ1NCYUJRQ0FRaUJaazB3S0JRSlNvYkVxY1pFdmd2LzdQN2JTSStPYkZDK21XRzlLUmZseklUUkI3UTR0OHV2N0IwTHRaZjdCQTk2RHNQckVxVUVRc0NSckVBbTJFUW9RQ1FYVGx5Y2R2Q0RPVHZUZjg2OWIzaXhRZEVOejIzalNhMGlVazBBVkJGRUt4MEpva29ZWFFpZ1IwM1A1OWlzNmRoN2IxL0o5Um1mV0NMTys5SHh1U09rRU5OVVVPQWpPRURLRlNVbVVWSWExU04zNEl2TjJiOWliWGJReDMwcHVOQXE4MVlYaE54ZVV6ZEdkZk1vNDdxWFBRbjlGYkQ3dXVwUXRqdmRTMllyYW1FVTQ4aGpsT0wranFmTmV3WkZvWHZlWGpPY3pJa2tEWDBmczBsSldpVzM2OG40KzUwVVFoTXJOVFhabEx0WEFTMWl6MXNTMmVUM2NTcFMzdlh0MVI4SmUzYmkrM1VWUEFiYUkyQUw2Y1o3QlBqRloyYnBVZFFWZTVZOS80Y2Q1a21TOHNLQ0lMMUNYdGhCbngzUzkvRkRUYVJ0QWp4ZTFpM2YxSjJ5b1FZc3J5a0NwUzhOZEZ3NG54UWk5VW9HZFFCY1FaZTZmN0k3Q0luNTdKWjJKZytNcGtEWmt1Mm15REZ0L0YvdUYrQ1JnU0VhcUtpM2dhaVVaVnZPelhaZVloLzg2ajYzeTBJb3hiYWozVTVkeTVXdVplOCtjcXFBT2NPSWpNdm5ZVkxNZVZRSDBJUWJDMjRPY0lFbGtiRFlqeUlPVy9EdkVLSE9NbEwralJBaC9kRmpnQXlFRVowQkhoM2tJa3NaS0RWREVVZ3RSVnFGMWNFbEJSUjdvbUZLcXQ0WW5IbXIwdjh6ZU40bTYzQ1lMTjZJdlhXeGVBUTh2QWYycWdHbFF5NmgvdnV3YU1PdWczaGhWSmNpMkJlV1QxNSsvVmwvQTMvMFI3TnhIcXVLcHlwenQ0NHZWNEJlOHZmVEtiTU9Kb3VlZDF2enIrUDczUkN3aVo1cXRwRytNaEF6a1hSYUY4enlrd3dBZTByOGZJUFN3b0c1VER2b1FqOFV1UWJrSWZtL2gzNitQeGxUR2RtakNDdEE1K0NSdmF5c0crM1dIblZmVzU2dUVMM1pLRGZ3bmFVNWRBOGUvUzBhMW52Wm5pOW1lZGM1QS8rUktTZFFGVWhDN1Y3K2xZbmRGRFNuUk03a1dIM2hqQk03clBRSnYvaERDdkNmSHZJazZwV2h5a001STcrUktzcnlMQXZ0MlJWT2xOY2d1a3Jock1lYkh4ODVKWE9BRkdsK0ZOVDNJSEs4Znd4aGphTHlXT3crQUFUcmZCdTQyRVdaWk44VWVDV1BlVWY2dVJlZkllNjVaQ21aOHkxdVJmdVVTZTlqQzFQUG9yU3Zka05PZ2ZCeE5yR2xwNm9UanQ2K25Yb0dDNzcrRnhCUytsanVOaHRNOWYxcTQ4SXIrdEllNW5LSGh1ZUg3MDZnSEo5c01IdGs1YXg3UEphYnpCWUlBL3ZuY1N4ZWM2MHJVOEdPZDlid2FiUjNlVHZmMk5xT1FHU2twOGVqbXRQRUg2b3E3QjJaQzlOeUxabzU2ZHlmNll5TGZlU0JpMjdGa0VGQng4aHNST09kYm9kM1RsZk5vdFBlRnF1K3JwVUd2K0dTbDhNRkQ5VlN5bGVEUTlrZDAvUjZISW9NL0FTRnVOeWVaaWMwL1g2dmRVRWVmb0VSUmNpTCtGdktGSWNFR2hNakFVS3dTdUkxM1RlNFhMeDNBZGg5ZHhlSjJINng0aXhxL1lpQllLTHJ5aDZPd1NKWDVlZ3ozT0xGMGFWdnBRQWFDUFVCVTRDaTZPbmZwd3VXcXNwOEU0UmE0cW05UmduUEc3dm10SW16YXJwQ01uS21RMFBYa3E5REdJZUxrY1kxTmlZd1kvcTlSMkdmYllQOXRYNmZQUWxIellsRW9Eb3plWTBMVms2bXVqWDdmaExkdXZjOFdldkZZSDZxNUNDZWFIc1Y5a2p4QVljMVhNRjRrSk1LZ3RyZWd4MVpCTXRSeE5WdklCNmRXME1vMVE3OVFLWVF6VVVMT21OTVlyYXVwMVU1emZ0TFdDRm9CamZkWXdsYlNaUEw4dGZmNEM2R2poeEpQMVVjL1c2eCtjeStDYWpOOGJ6aWJSdmYvYlZFRzRiNTU0WEZqby9BNmVsUW51aG1zWVFNV0ZETHJXNW5Ja1p3R2ExaVdNSkw5Rk9IVWYwMXdmQ3hFK2trQW4wZFVmcGVZSmlJQWZaVzhKaUlDb0poUFU0R0ljQ0hWY0ZCQisxUUpEQXlJVXpzY0JSTjhKTXI3STRQMDRCd01RQWFqbjFBT3YwT1ByUGdSd2w4SlFYQ015THAyRy9qWTNyNW1rQVNLMmZJNDhBODN1T1FxaXFPVk9ONTgwV1FnMDBvYnJVV3U0dVdGbGRYbk9kcmI0TWRBVGs1aEU3L2trbGd0N0Ird3VESjZaNVduTktuV1pIR0Y1NnNPN3liRzBQcmxyMjMvMkZaalJVRmpPc3BDR25yNkl6RFhSSUgrMit0Mk9NNmE3dVgvZG9GeExoMkJKb0U5MDRYL3M2ZkZ1RW5ZQ2RlTGd3OWcvZTJ6S1ZYK2V1WHB1dXQ4QmJjcjFEWFQyVUpQeFlEMmVpYlE0UGtjUlFzS1YxSEJvemZ0a29YZFBxUEJKUU5yMWZVL0N1Mmdwd2dnZUplckhlMTdxOE41dWJTdHJqWFNMT3JzU0lyN1JJaThaRmZ2WkdIdTJMY0Y1UnJVaS91eEtmV1hNbU1PeTJYZE9VTG00VjR6d3kxSndnOXhvd0F0NFNPaEhlOEJidWxBUVJrK0V0TkNxb1Y5NVNzTFRkeVRmazVmOEtPWGR6LzhQQlR6ZjR2RmgvRlltLzQyNE8zZHY2L0xYeDZVQUh4cnF0emZnZFRYVXJxTW4vV2lUR0RsTHVockI3bWZma0QvenhwVzVzV1NGb3RSUjZIdUNidlNqbEJxbjBweW1JY3lROUkydGtSRU5tK3hMbUN6THh1V3UxbXhWMVZGZFRPLzd4ZkdISkVJQ1lrSVQyVWZoKytIeGw4OG1sclM2dFY5M3JVendML0RDYnZscU9wbHBtWjh4MUxVeVplMG93bC9KOE1TaUdwenI0ZGlXaDJjYzZDdFZ5R2FYcEh1NytMNmVUVzV4a2E4cklXUURFZFhVWmVTSmc1UGtrMWMyVHp5bk9BeEdTYUVkSXZ3UWhMaDB0L3M4djBnSXlXQlVYclZIYzlXcmVpRjlmajlhUnFjYVBPazUybk83R2RuSFhUUGt6TDFsZFNzZUhqQWk5Y3Z6Vk1MdzdBaU5sTzNMLzFBT1VkdThQUzc2ZHV5ZTdPTU41V2N4WDU4TzNNUWQvTEt4bHlkTEh4bXBuMlBZdUNxeVBiOHp4TkM4WU5kUzNIa3I4YnZYa0g2ZmdaUmVOSUYzb0dPNzJ4QVpUR1llejU5K3hPZnJMbWFPcXdVSkZzQmYvcjRwVDFRcHhFdnlqS2ZmOEt5cUV0Zk5QMmFFZHhGNHAxWmtNdVpmalhlK0pSbDhEQUpMNnVsbEdmaDdwNVJxcEw1ZTZrWWFIbTBXUG1JSDlCd0ZuMEFsTS9VbmZmYUVVUzI1U3g4bVQ2SDM5dFBIbS9RSnFhUDNwRGRDUzJUWXRLZ3dMbmVkNFhkeUsvb0tPTmxQZnhES3R6dVMwVmFpcFRjSno4UmVRaTZ1eG5xUjBtSTgyZXpiSXFkcnk0SU16RUFmbXIxbkRPeU12WWhLMTZWTVdrVlNhVEpRdng3V1lwdU1GVXovL01rQ3FwWnphdFp5VUx2cFlEYmVHSVRrTmJpcFZ3clNpWHFMNEYrVWlWSmk4cFR1dWxQZHByQ1g5c0lZY1c5OXM5UDBuRGVqd2ljRVFNbnlqZjdqck1Fbmt6NE54bURsYU5hQlRxMlViOHI0MWg2OERLbHJ6RmZET3RPYVBYY1g1US8ybVNpcnZWdUtxcFFVNjEvTDZCZ2dzVmRIZ25hYkk5eXR2blFXZWV6YjJPUEs1MWF1eVhnQjNSdiswVE51aTYyTTZWZFVnV3daa05xVnl2ZTBoazExZ3k4SFc4TGlvU0ZxWWpKeTI4QTRMTFpRelFObXluVktVOW54azB6cUNuRnIyanVNREpEdEdvd1ozMGVpT1V4SnV0Z05BQ1RIamtOOFVTUzdNZWxVOG83MGEwY3luR2pWajZJSGpSaDc4NVBVbGxsV2tYYm1VY2MyS0o3dFlkU0NwUzM1OTZKYlluSnkxRHdTUVUvR1NHaFB2b29HZWsrMUVvdWtsOUhuK29mYmJGSFNKdjFKNTFCdk9YWjh2QmZZdERmT29GYzVhTld3ZG5TTkRjM2VBaVZTVDBRUXYrWFc2d011SjBmYU9YUDYybmw1VklGK1h4TDNQK3FlTVQyTlNGRjAvMURzSktPb2JaSTUxSEs3bHp5dE9USktOK1hVR2lOYitHVVdUOGVMcjQxaW1UUDluSDlrYjJQYVBkYS9idUZaNFFuUjh3c3ZVZ2M4TlpyNWZtUWhkWlQ3akgzM3Bpb2hUVys2S1RINkVNTlVQMmgvWnR4N1dhWHpReHJ5cDQ2NEtwem1Vd2JWUGZuU1RpdVpEUDZia3pRVnI2ZkVSZzJXN20wa2hybmxyUFk0SUkwTWV6ay9ub0J2Tm5zTG9BOUVvNllmNjYzMHBuc09WckRqQStpTkd0RE9jSnhJSkgva1cweHF3bytLYktyWlA0S3B0TUlLQTIzZmxSNDM4NGJNeHl3MnNsN09wa1BzWnBPOTBTODlUVzBkS1IzSEJVTnB2UzJ5NXRSZzk2bjY5eTF4ekFYSnZjbFhhYW90V2hBbEtUeU9sSnI2MndFWU01ZXhEUStqNmFZWGo0N0ZBeUVrM2sxVWM1VXBHRmpLaEtXai9rcXVCMlNmME1iMnpPdlgvYU81OUtxZUdvMmJTNFB3dWVqcnNFK1p0dW9JSnNlYm4yeWd0L3E1T1J3a2FFWGJtYW1EUjZLNDFXc2NPdHJ1N0pXVzFRRHpvUUFhdFhqSmtkMVN4WnFBbXBOSTB6T0trcXVXcHZhbG96Tks1MFJrSkpIYXZiYzlUY2JVNXpGcjJwM1c3WFdxUm1XOXlBRWpOV2hibnVyQzBrN0tqdEo0U3FIZHdOTzJBQTNKVncyaHdMN1E3Tk9wVTdGNVBYZkJQR01xS2FhVVFHWk9lU1N2andtNXU5WjFGNXowVDZEejFPQjNBcDdKV1A4Qk9yWXFPM2xmL1EzUFpERlpOSzNRMFJ3RHpZZkoyNy8rQm9qeXVkRjdiYTd3WE12cjFnWWtWRm1nbDlaL1VRQ0R2aWlUTmd4dnBQOXh5cVAvdGpJMC9UNy9Vd1ZwV0Rrd2cwMWdaM1pBcFZobWZ0TEdJb05Fak1aVmN2Nk9FQ0ZhdmJuSHhpY0N3OE5rSTJtRXd0eWp3V3pWRUJTY0NzMTJ1TWdjS3lVR3BNeTlQY2pKSlZWTlJsVlFpTGQ1dDNkSmxIbnY2L2hVaS9LMlRoT0gxQ0IydXdrR3RIZER0blpKN0FKZ2pLdmdhOGFHbWR2UjBsclV3SjZyQjJxeTBGUzFvcDF6cjZnUzg3TjhIMmpJeWcwZVpaNnAzSy9UVENaUnlYczd1b0g5c1BDS0ZQRGhnQlBqUTc0SHV0S3A5MFdqcm5zK3BCc2oxL01Pam4rNXN1UW82S3BDdHh5Ulg4WDJJNWNOcTUrcGN1VTh3emxTQzBOYy9YZytkSktab09GdkhaZDRYREpjaEdYSjhPRFhtbkVjTW1vK3JaR296TjNXRjZGakFPN3A2cnR0V3BuRzhtMEo0dUNXNXloV21kNzBRZEZCVkZoeEJhUDVPRXBOK1V2Wm54QUhJRktPSzQzYkVnMW9mQjRjdVJWUGNFN2NpVWdNK24wc2NpbTFDN2RGOW1ZVWgvenNYQ3hueUpRZjR5Vy9BdStDVXZqK0Y1RmtJaTlDd000eE5YcXZuQ29rSWZMb1Z3eEozZXVRZmNvZnVsOFVKVVk2Q3VlOStHbHE2SUhja3BkTjZrODdzYURTd1kwaWFvdEw2ekRROXJZQkZubXVueTF2NnVLQ0hiYmJJYVJEVFoxV3RtOHZ4ZW1UQmhUekFxZ2NhUy9HazZsRXd1TkJEWUtzSnVua253TzhZakdVdDRabktQNzJmaCtabXUrdG9zR3JCcHJuS3NrUml4emVoSDF6eFVZMlh4WDU0N21aRW45ZU1IUk11bGFJVFk3VnZNakNXTWFlRDN1SnVqbGNhODVyd0d0S0hrVWN5eC92ZkFQeHUyQVc0dTgrRUNtNnFab2xTVys3Ynp6SXYycHFuK2kvVndrSFJURkhYdXk2ZHBmMmxtZXpjOE1iUHVob1BCZkNla2JBeVQxc2NoclVlN1JyV1p1MDV1MTROdHVJaWNWcG5Vb0Q4NTZaUTV3NTZyMlQ2TnJaaGRwRmFwcFN2bmdROEsyOXpMMTRxbU1rOS9STlhHZUJFck01Y2pJdzFadlJ6RHNDWUlMMFV3Tkl3SjI5V1BSZldIZDFZOHB5SHNoVFJ6dFRGbGRMK3FBMFhISXpnaWgvVW1XT09nakZiR1dKVzVoNjNob2hOUWRkbEhCMnhLbkU2eWlwTkQxVGF5N1o5blN6bnhwejRxU0RaendhdnNwU0lBOEIzTGQrZ1ZiRm15RkxMTlN1NHliRUw0RDJJVldxaDR4UWt3OFRSSEllMW9WbGFxaW1hQm51cWVvaVRQRHVMTVMzdFgwRnZ4UEluU3hUUFpadHdPb2RpSE5nN1NpaDU4d2k2RFcwL2JhQUhzSTl1OUZLb1JOY3pXYTBhclBWY2Fyc1JHRjUyZDRSbzljd3RObi93VUFad2l6bE4zeGord3ArZVBraVNEZUNVUlJNc01pS3FzS1owNW1keDBMRDlycVJUanN0YzZERHBlV3RTd2hwMkhhd3RGWjByVzBhN09nZ05qdDhlQlZHMU5GYi8yVFpoT1dTUXhTK0NiMlh0cnNSbkNTNDE1OVgxMEQxZnIwV2xiamVib3MvcU5NZ3pTMTREMWxidTRsSFZaVm1QcnhVbWQ4VHhhenBOWVc0ZFV1S25mTGVPdzNJMVpYUHY0UlBvK0xzMEsyd3FHVnpRYVJkYjZiUXZuWGkxNC9DMkxwVUEwQ0VNMERHcGQ0NWhKYWVVdk9wTURmQ2liZDJ0WHZOckpkRVRXZmlJOXNVS3A2SE01Y2ViOTNDRm91aEFhMGYwazM2Ym02ZVRUc01WUmxua0x1TUpmeVM5cVRMWUM2dFllblNQcVhBaEIzSW44aW0zNWlLZzNQbXhEZzZhenRXR3Bkam5YVHpDZGN0TmJEb0xZeXh6aUUzMG5lRGMwd0FDanRDWHl6dTF0Qi9HV2dESGVzd1VRWERWMlNWNjBDU0xvUEpNSDlOWWE3WUFwV1RFdWlRb1dzelVIVVBTSGhxQWxtT0syZlRJUE1BTkVRWU5oUFVUNVU4amFVRDRJbTVmU1Zuemd2TERMSnNzZzRnUnA1N3hFQm04bjBLaVFHMnJMclNQeUxhTW12dHB6RVZyOThNN1FhRzlvaTNNN2NLV1pwZ3F2a0Vxdmt5WkVYVHNwL3QwejJwU0tPaytobTBJNVJSNTFXblRjc3VhMS90K1E2NnlpUW9VY28yQ2ovT2ViTkExQTFrRVVYUzV1aXVsYmhvYVNKVFdkQ3lOcGlyVDZvVUFCSEFxbUdwSFcxM1cwcUU5UWJXbVdXWEM4NjAvOWtEbWVLZ1B2Y2ZNZ29nbEIxa2MwVVJLaFU2Y3B4eHEwSWgzZXE1ckpVL25BZlVtNitGMzl1MDcvWGRVSWF3UjA1VE8ydFNMWVZlb05keHNTeHVpSDJzZnJOQlNvc2JvL2V4Y2tRN3dQUzNZZnBUZnhxZGR2OTNJSWljNXRuU0lQRkpiZTQ2OWZtN0NZaUxpSnBxNFV5L1ZaYkJEaE4wdmU1dXFCMjNMR1hrUGJpdThPRVUwUVIwVHlKSW9FdGJQelM4OHN1R3RDNUkrRWg3NW5DVXBUaWlBWEY4WDFaU0tDNDl3Z1NQaXJldkRTb3pucE5zckE5bENRMmR5ZmJiSG4wK2I5RGZ3ZjB2L2U3SlRJYldMeHdyNTlUbTVuT1k2ZEttRG9DTWwraEZCekdDT2ZxRUNxZ3JQbkkxUzFsSmJZc3FmUk40SXlxOWZHdGNZOElFeXE5bThZVHJKMnBxS3d3UlhDNTdNaWNoOE9pK00vNFlYRlNrcFhZaGRUTlB2WkYrTVVVeFZ5RWJXYmkzcHRHVml2NjFZM2lyUWJSOGtLTXNOK0M4V3VLRzgrMU5kbSt3L1drK3hrWUtOVTNMUVNnQS85ZnZYNGwwdUwvN2JVdEdhajYyYVhNWTZkNCs4cFF3TzVHOFB1ZXZGYWQ0MG5OSjJtVlowb2FSSmxiS0prVUJGQnhRaWJIY3dldmx2QlFjMFlobnVha3RaQ0ViclB2eU55VWdYbGpuczNIVzJrbEFZVUpPbFM2Z3VkdHBRT296bmpvMGhTL3o5aHRMVTJIbUtqYk1OSE10WWsvbHdENEt4d1lSSm1nOWNHVGpva2VIQXZscmtzUWUxNnpvRHRzbEpYd0VDd0hmM21DMHU1RngrOHVSK3NNWjNNbmVraG5ISFlGQlVUaG1CcHRBQ2hUd2hVY01GYVlIdEdFd25wbFlNTEc4OXpac1o0SDJxWXUwZkh3OGFtdnBpbVo4RzJTd1liSndBdzFidS9GMGxKbVZoanc2L0dMb042bE5DamRXNHR5Vk1KRFBERUtSd0VHMkthMDg4OUo4bjlCSG5YLyt1TmJ5bytMdXZMejU0K0dkVHRHNFRHckQ0WlBVUDFtLy90VVZkajg5c2pXZHVTOTl2bjM5L1B0ZUZhcERqUWhqcnNlUnBzbGhQNThNMVlHT2MvbDNtbCtUcU9GY3pRVUdTd3lrbExQR0RMeFM1RFBRaWk3SmExU00zSWpsckUyRjU1YlR4Yi91RjhwV1I1SWRmZjc4azNjVyt2MHZQNmtFaFlkUDBiVmtOeCtxUm9DcWFiUDdIN1ZLZ0F2R3Vkd1doT29OR3JVRmpQS3lVTC9sczJVaGZuLzc5NkdaTSt5Z2pGYWRsYUZ5N2Q0Q0pKdjUyWHFtNmtqYVRkUWx5bHJPbCt3Y2JQS0R4VnlJb1c5OXBFdVdaUWxKQlJSWWdZU05DdEc3c0FVL2hyQmJ3YzBxdHZwRExOOVlNSkM3RWE2MkFMTDF5YTNjL2pTYVhsSllWQW1mbFQxc2NIbmQ4K0dRLzc3OWNPOU1xLzRiYUh2TmE4YWFyeDkrM1dHcDk1dkpkY016Ni9JRzhBQjRLdlhETmVpK3pmZnplNVBOY0c4c2FUYWNaUnRrTHo4RGJ1RUJtMjFNVHBvVk9Qdk12WFI4eHVVa1ZjT1FjM3V6RFM5YVRrRTkzWFd1YmlCK3JrOEdkdTRkMHlwN0VxWDdZVktoQVQ1K2d5UTlFODl3c0lZQXoyODZOQ052cVlXQk9RK2luSWJtSmNpNmdFRlpwdG1uemEvTEk0Skk2cHBwNDNRWFRHWkVMYjU2VmtOTHBvdmRoUU9zNm1HNU5Pbk5OSVdySC84b3FXYWNxSkdqVjVMVm5YRUNtZW5uVWNFb2Y4eVpSTThweEtQa2xRNWZreDM4eHN4dkErYzQrQ1lBMkllTmNLS2U5U3dPVlk3czJkQXRBVkdFQ2dHcHJrU0l5UkZINnZhUlplT3JkSU8vRWRIK2FCNWRXMWFHQnhhOGlDZk5TanZMV2IzeTgvc0RkYnhkRFlrZnFUaGpuaDBDMkVYYXdoUXRwcjRSTHNvMjcyNVlqSzByT1pnWk0xbGQxaklkWkI5Q2xHeTRRczEwTFhha094WXZHZGhpd3lFbE5zclFyaklGa3pUVWNwS1hNUnFwU1hJb0R6TVd0Nlo2YUhSRmFMb3czYktYWHZCTmNmTWlxVnREVmZpdkJFQVJqVTY1WXg5YnZqdnh1RURRaGd2VjV5QkFMRE9aNmRRUWQrLzIxaFczTnE4RkFZM1hnWTcwZGJxWG8zMHNsRFhnMGliUzRvZVEvamhpdFNUZGlJMExaRWpDb09CZU4ya1Aya20yZDloNm84RHlVMlMrQ2E1NURUU2lySDNkeTJrU3c5ZTJHMGhlb0Q5R0o3dVNXNmxwa2lxTld1ODRLYmRBa21JOWZ3MHVZNERPVTRVTVBOa3I4TEFEMTRld0VNQXRsblgvQmtvOEt4Smw3UGhrdHdrOStTZ3JKeFRCZGI4Qk54ekJUVVVRVThRdE5BZVJ3WkVuc1lUcTEzZ2F4SEZzNmlCSGkxb3R5RG9jN21oS2FkL0Z0dTExRVozYklneXVDRGZpMFNHT2EyTUhPZHIwRHNNSmdLUEM0QkEzeXBzVUp5TGpkWG11cmk0dFFKVDlwYXpBcXM0Q1N3Q2I0TFFlVXQzc1pWclYrWWtVT2xNSExEaTArR2dqbGtJcHhCdjUwMFVUUGNiaUQ3M0xFMmliTDVwK0wrSnd5NlpVaXhXRDBDMVdvTU1qbGdtMzVoNzBkMnlOUUpOZDNsTXFlUEJRdzRsUVlTZVF4K1VFZGVGMEk4R0pHWXNHZlR1aTRYUzdlOWNVMnRzdkFGSVV3QkI2bzZhSjZEUnlFU1JjUmdTVm1xV1QzaWJyUkNPNHhqZmd4aUtJeFp5dG10ck1vSW5KbGlFL0FMUXdnQ1hFYmJvWm1VcERBSlRxQXptNFh5eWZMTDFBbnpUSVlnQmpNYUtTcG40M2tGcTVlZkZXdStyS1RGeUF2R1hkMTRwWmplOE9pRFlWeHhicFJBdlVVWEFHOWNFWWR5VVl6ZnkrUm5tTW85c3dyakVZMTVoa3JjcUNKVjdKdktNUVRlVjZoU2RMajNUTGlRTStObW95SUwrS3ppTFhPZ3k3UnpvbGhWU0RFdEpGSUYvVGswZDA4eFNxRUx5bGw2b21FMHlxSlJVcHFrUkpGRnc3UTRySitEME5SOGM1bktvQVF2b0JuUDRrMWxkNjR5aXRHb0tlVHBPR3ZvZjhNQkNyM0p4cG5UZ3dpUTJKeFZOaG9CNTZvNkpYcXhOT3hGVERka2N2T2VDRlNHb3JVVzFBSFBuelE0aE1VQ3l4Sy9CSDAvWkFCSkl3aVhDVXVCUzNVK2hWNVVtTERaeW1MRzZpSXNRV1FiVHFjV3F6NGJaeGw1QUJodlllS24vTkRoVFZOQWhNeEVlZnphbzUwMm1TdjNNb09BbTUxQnVvT24wUmgycmtvc291bFBObVpyVnl3dXpaNS9kT0pTSmNncmhUWFozZ2xsaXRLaTdQZDRvODFLTGdFdS9IeTZPNnNYOXEyR3lRODJHSG1ITktDVXFjcGJ0dnFKdlhYNzN0N2s4QVBtRE9tbzhHUUdWeFloM3BEMlRiZXlwYWIxTnlKblM2Z0thNjc2RHl5ZTQwaDlpbkI5VEZQSGNWZnAySXhseGp5SlorNHR6ME5GZTl2a3F5TktPWGZFM0d5TktNZWd3cG9NR3ZFdzNrZGVLUGRVZmcyYnVhMmdwU3VZT3FoN1NlWU5LVW5FNXFSM3hSZGNBNm5LNnZBUFBMWFprdmhidU5SWVR3bndRN2o4ZHZBeU0yN2E5TmVpbWZ2Q052cW1kZ3l0MFZDaGZJa1Q1MnBQTm4xR1ZhYjlZcW0zWkc4ZStnRkdmNHk5NVZENnZ5b2dRWU90RFhvWEZya0xvZWxsWFdzR2hmUFpka0xuM0Y0QXdkN2Z5MUNjaG0zNzFUbmdTRXB1NFFwS3JzNG1JejNOWHpOOWJ4S2tDdXBYeFFvM3Rlakxtb3dhUkUxY3Q3Qi95WElDOEFGMkVMdUdRakJPVHlWbnpBQk44RzNabEM1Qlh0VisrendKZmFwL2ViZHBFMllyWUlLcnNXV093RkxnbUhkbWNTOFVKb1FLSDRYRUVvOE9GY0pOWmFjRHBUMjdWdHlDZ2wxQTVuODV6Qkw1MmRiZTNTOEtYNnZLMnEwcE1rVk5lMkxjeW9UbTZFTWF3dlZ1TE5tSE56ZzV4U3E2SlV2OFNHQUIwME1XZS9VQVB6QUl0cGFRRDVIb1I1ZDZaWkd2cnZsbzE1VkZuRFgvUW9YNm1ZeDFVNVdTSTlvTlFXWXRpVG9EbVBiQU4xTVZrOFNmYmlMU1BYakVodUVZSGFQbnN6U2RVVjRYdkErVGlxN05yK0VDU1dvRFdYSGlSaUxueXpFZHFLQzlUcWlHeitLUWNzS09rZHNjVnJVLzQxUnB6aXZmQUNTc2NwY0pTRU9QeUpKZkF1cVR0Q1hBYU1nMFd6QTZ4ZStVR2pUWElBVjB2U3ZJVy9raTFTWkh5ZWM3OEkyYlFEclJ2Tml4MGNMUXcvd0p4YW1VVTIxeGptV3dJcVc0WTJFTzBGYVBjWjdWdlBVQS83S25Ha0wzV01pd1BCNnJ2MDBIWnI2N0hEWEUwbmpUc29PbDA0MWZ4NmhkdkdtemFWWHB0ck42d3R1ejB6QjdEbUYyUzNqUXJQeXRsQnU5Sy82V045NndQTVVEWFdCQXg3RG1sRmp4S2FnVEdKMEJYamVBVzNpT2dnTFdNdWJQc2lxWkcxMjh2blVpUHFoS1dtdGJOU0JGWlZkSWNDcTVOdmNXMWpjWUJ1cGE2RERJYTZJMTlxMEVkQWFLK1RFZUcwRittMkZ3dkkxbkNEcUhRbi9nWnVCSGE2Z2JWRm43MXRkUk5DWjhKdGliM1lCWmhoR0gvdkdqSEgyOXpLc0RvWGRya3Q0ZzVQS3doTW5Pd2pvbm1makI2WEFtNDJnc3NpZUVMZmdPdEdjRmtFc1pDM3BRdWtXcm9JZHJvUUZWemszYzRGS20zWjl5c2pzS1FyWHhvUEFLcFZBQVFTUUw3WUFFQndMd0E4QUU1YjUvb2VuUlo3OXFJWE1JSUJ2T3VVbDIwb3d0c3VZaDUxcTJTQVNVTUlzRGNWaUd5TnNwaTdkZW5VbWRxZTgxU0cyakhZZXJld0RJT0UxelUvbys2YXNpUzh2ZHJxbUt0TGdrYms4d3JCaHl5NFhoL2pPT1FQVXprMEwxRTVuYnhvVkhwUG1mZ2VaLzNUWlREUmdib2ZnVk9UK0JNMGZoWnhmSTYyVmR3bllZd3NLQ05FUThpbEtlOVJnam43TmV0VWVYbFhSb2tRK25iMEpVR1hBenUrSXkvMFU1dm44NUErY2pxMlphS3Z4ZnZ5ZE1nUlVtSy9pL2YwSEc3NzBQOVVJUDk3WXI1NkRJZktlWktyZTZYdk81S3JJNVNrazdyMDN2RVhWdWVXRERpVU9HL2Q4WDFCdm1kWTB6ZjdnUi8zRW9EajlueGo5ZFh1alRoNFRCMkl4K0pPK3hOZG90WVRqSmp4VGIrbGl4Z2tadDZaT1I5TzArL0lmQVUyZHVZREZrUHN2WGV2bTlBYnI3VVNoWWhFUWw3aVpsNzNzWUZKMjhrSElac1R1NmhDMTM5czByVWE2TXhlQnJPYmgzMEtNSi9pNEFERXNKdzhiY3Zodk9lRUlQNE9LYk0wODBnZ3hFdmNlcllMb1hJK3g1Uk5iYWZRMDZtT2k1anJldHFxNGNCcDB3c3FYK3RXV1NvWXlwYXVVcjdLcEpRbGQ4U2VjdU5SbDdLaURJQlZsSkhJOXJiV3c1Y2dYM0VRWUJIdm1GeXYxcVJISUtuNCt3VXE5cTdKY2ZTeFpSd1kxM1RxSWVIRTFSWk8wSTg1TmZSZEMyOHhxNTlaSUZ0anJLQWtBa0RlMVFFRTlnSEFBaERmb2xiZkE5SzFsRVlqQkVRK1RTQlFDRURBMUtHenR4WFM1aU80U2dSUDhCdHdFeEZjSGtGN0MxMWpNWUZxbFp1SkloQ0FmTEVCZ09CT0FIZ0FzQTV2VENMNVpPcEZCQUx3U2Y3cEFqWmlBUEFBQk5mZzFSOUFhR1JEdlljaEVuWG0yWUlYTjdSRVlOdkVXcmhqZGVaZWs5ZFlJQ2Jsb0ZnUVVNTDZGcnlLNGpGbzJCa0VYTURSTlhqVnl3NW8xb05CS09IZXB6NE0waEZZMzRJbnhUT3FlZ1ZNYTRxb3dpSmdSbThrTWY4SE9Pc0JZekw2UUxlT1J3OEc1V3BpK2lHMDJ5TVJWOWZHdU1haUFlbGFpcVVSb3VLeFR3TUFwQ01BTUFIb0creGFUbE9EVVdNWVJ6NFlhQkxHbFdhd0pOVThJWUd4YXhuaEZWOVBXTDJUQzJKWEc1ZlJkazF1T0t3Zm9TVEJFeVR3NFFmNGNHejJtc1E2Z0VxQ0FmakFJNHAzVDFvYURxb094ZU4vZE0ybEpjM0Z2aktkQk94TmowZjZSSSszd21PQ2FEeWcvTWRJUFBRSmpYc2xoeG1zTTB6MlZpbjVNdlJVZFdUVmIzRkw4R0lwU3htMWpwa21xRlhJVVhzaVVaSGI1anR4M3I5a3YzL1NTemIxYVdRZUEwaHNsVUs2eG9vU1kvd29FRmtyRTBqRVFveElxTFNlaGRTV1dQZ0FFVkFJd3puVXYyT09aaW1nZ3NYU0kxQXJHTktTVXNDRkdzRnpFcGR5RUlNeGRiUmV5VjB5cmlvdGt5UUo2SGtKWFFDRzhjRmJDcXhDMjZORkFjRXBjTzBwMkRjV0xFSytlellyQ0JlY0pQSWhWVHJLNW1LWU8wYzFuNTRrQXh6MEdKMFFGQWk1eDRMdFl6N1hqUy9DdlEwUlF4NFhlZXptZVF0Y1V1T25VUGRRa0p6UFRKWlZIbkZOM1NyaysvcTZtWDZmV0t5NnQvSVBPdlpTSEQ4MlRoMmRjV0JJU0hSRWhacGlMcGRNUFJRbUVzcVFZRHpCaGVmOVVMT3M0NFhVSkt0NUtWNy85Tm9xZk95SnJWTktqNDFQak1aODBtVy9lQWJXVk4rdVliK3pRc1B5THNobHdNNGpKQnV2U25ueS9OTCt5bXFTbjFHU1NuYVArcmZ1RlZZc1dlK3J3L1ZYbDAyT3JYQUU2ZlQySGJra1FHeGpoWUg2Yno1THhXWHVWTGtFS1FSb3RpTGJEWVFUdTRneGtwT0I5bWNydXBlVlhmNVVyQm1waWt3TFMvdHZUVU9EcjFjdDJBNnltUlQzbWo1OXdqS2lpTnc5UTZSREJHeVRkVTIxbTBwaGUrUzRKN3lYalpBbXlBQy9HR2VkaVdMTXdYQWlzVXA2UGxSdENIRE9Ba0pkbk1CSXBZRllkYlV2SHh3cXJUaFZKWGdsVHM2aS9uL0FKNW1ieUxOQTNFUXVWUzhjQzJWaVJNd1plZUJEWGdOS3lPVlZ3Q1VXRytFRkdZbzA5UVpDSXBHUFpPbmIzR2o0YU50bTMwS2t2KzR1VlZVZkpvdmUrS1J3RlZVQUJKSnFzYnlCOXlmVE1NZ3VieGlwSnRCWlV2U05lZ0hzV1FReEpHNFBmbjQ3ZWs1MDVnSnJ2YUhDQ2cvbHlVUDh3TVpCd05tc0F4WTBwRXZocXZuWmVXcGU2WGFYZnZLSTZwMTZsVGRIYkp4N2Z2dzVuVmN5bmdkLzZDODBwcnZPVFdlVlZyYnBYVUQxU2V5TjhKR0JkQmtSRlVsU2RTN2gyYWp0M3JRZ2RVUzArR2d3RHlPZVdzTGgxbWY2NGFGUVN1bmpZWVQzUkNGNWQ4MFlPbjZBV2hvYms0NitVUUltQzNHOWZrbm9XbERIZWdXaTY2TEFrL3FqckNKL1JpdGxsTS9pa0hrZzNlYklma1AzVHUrN0hlWnJiNEdGMzJuWldYZE9QN1FXNkoyMjUyMEhyL2xwUTlUelpwd3hpamJIL2VGSDhmVTdDNDhVenpySUhBWVVtaWFLWS9YdU1rWFplVU0xVEt5Y2dQa2piSjZKRUJabjQ0dS9YbEgzMitQaXB1Mi82VGFZSXpLUUE3REU3c0I1KzNVemxBWmhjUWFQS3RQaUFlZnRLMDV3YjBlRllKSDlKYmVZOEFKQVk2L1hIeG55VG94dTk1YmNnZmJ4K2o5Zlh0NXg0RjUrLzlpMmV0K0wxNTNvOVJOSjFQazNMUnVUWnk1WnJlcDk3ZzYrbTJyeHgzWThsbjJsOVgzOUIzZWtyY3RwYWFzVXk3c1NYNEZuZC8wN21WUjVQbU9xK1pBQjl4NmlkSGg5OW8yTzliWVJJbFVpVG4xbDJ2L2RacmNEb2Z1Smw1NmxzUFNiSENHUDlJbzMvRjE1S3d1MkFyd0FJcVpLV09ncFg4dTN4Wm1mTFlyUEFpckpoTnBaaWZrTVA0WlBpeksrOTdaWU83WHMwendqMXY3S3dCOHVkRTlHMmQ3QUt6R1J4OE5Ha2NVTWhkRXh5cXk5NitrdC91NkpsamNhS2xONkIzRnZwamRhNzZXRndRQk43UVBwcVdYeW50T1hPOG1YWHQvV1gxdTJKaldjT3NlZHg2Q1FiV1Y2NmlDNWhEcWlDNDh4aHpYenN1N1JNSzVzVW9aMUVycXBpZVQ0NWlSdVR6TkU5dDRVUjcrKzZhalNXZWJsa3FQdDBYU211empwUTFtRGJHYnpvelVHV3pla2xTQ0JseWN2OXV6Y1hyUWlWN3BoanVJN2V1M3ArdW9qNlpodi9USWNGTW56ajJCVDBpenZ6aVBkZzU1bTgzLzB0TzJKRkowdjMrd0REN3ptT1d2ZVh3d1FUR2g1d1JHOFR5MktKVWVZOW1HbEpOOVdLYmJTUDBNVHVpLy8wbWlQNnhrN2UvNW9VNlNvN3Q1UHdjdkM3TVZ5WGd6OUxBRTRYUlNJRnFoRVM4SEdqZ0hGY0xlL2NkQWRQZEVERDFJZHZqR3lVbzIxUXR1TDE5dnRUMGNiSVZvL3JEN3htc0w2TkhoV090azM4bXk0UCtReGJId2tRamFmTG1aY0w0eFhoSVVNWFBSRUltOGtnTWErbnMvRjI0bytiVHNxLzVKMXI3TXFIUU82N2ZqcGw1cE9zTEoyK05jOXh6NEYwZEhwM2NzVVlCbnkzblMvVHVWRytyNmlLTDdFdVlwNDFIMFdqNHpqcGlvV2RWZG9jbjhYN1BEa3lLUFBUS2VzYmovK0NvR3ZrR3FkNWFFS1d5ejYxODZjWG5mc2tvMGUwcUdBK3ZUN1dWWWJWRHRHN0M5VWZJRDZ4TndDaDhLN002N1dxeUkyZnZEV3daZVZydUROOHBvM0pvczlqaUcyUjNVdVV4em1zVmFjUmhrRHBSZUZhZXg0QTQrbWJyd3BDaDBadTNuZS9FM1QxUnNXYnBiOXhKNHhrMmVlNGtuSEd0ZmVNS1pQUy9mcVdSdGdZKzl3ZDNkbjJDUlNiTHp4ZnVsTDdMVURsTFlJQjdHWVVDWkhNL3djM2FKWGZ5Q2lNa3BhN2Y3VmY5SEFSVlVTcjl5SXZZdDlIOERCVy9KZ1A4cmw0LzJyWDZSSGtnMmFpb3ZFcFAzYmIwazZXMWZBajFkOWtPbmhDWGZ0NEMvR2pIK3VIa3IrRGo1RWZPcU5xTjd6UDQyNmV3REM0YjEweVMwTk9YUTRPY0hSLzUrOGJYU0I3ZXNTSDA3cldaV1NRWFNVRGlGUVB5cDkvVTF3Mk8yZy9RYXVYMTBkWXY2ckVCRSttOHk3UXp6Y24xTDJ6Vk4vS0RXRkdiMU9YVHh6WE9uenZBbVlRWUhnZWQ5OVB6Um9wQklWS1h0SjdKN3UzWGxXaDM5S2QvYUFIaWtrMTNjUitPd1p2MHJaSWd5QnFveVRNVHFuZEhDYTZGcGpOeEFESXN5ODdxU2Fza2NhZ0VkQjhQQ2dySmlRZUI1SkxrS0wyUVRiTzc5SVBBTkF6K3ZMem5ReWpYNnZ5UHJ1K2N0dzBiY1NrKzhld05HV2xwSk9Ebjg2ZmxIbHk1Qi9TY0xFbFBaL3B3WUE2QXozR1RBWkhLNFdkQmlDRHJFZUJJcUI2UGRyMndGSzZNUFR5d1BNbTFEKzl2aUlRbUlxQmwvcGw1bUhCMmJVOHhmYytZTjhtQVF2VythRDRUUHp3VmlHZVJZODQ3ZllacCs0Z1Zmd1lpWm04dlBSbWJOUmhremw1WWtQbkpXaUJWc2xERE12TjdodVFZTFB0Mjhvb1phWStwR0FnTWIxZjA0ME1SOTZRVUx2encvVzdObDZCME4rVTdmVnAvZzNKbFVmYzZiQXRnSDh1NDVNbmJocVZYV0d1akRYbjdmcW1Qcmlyci9INEtkNnFDdFR2K1Q2YjFUazZnWjFad2IvbGZ3TFovUkYyZ0NwSFNJeXNDY3RRZXNZY2tTdmMvSmFJeVdMZEErdVNYT2ljMGtFMFN1STErQ09LSGJKY3RERWhqUjNKYVFpUkE5aWM3QVJnQVNZR0RLUzJqbUNSWlFCSXB3QkpTSUlYRHVRVU5ZNDVlYW1oUGdNeWhsaUE4QXBMTHpMSWxxSzhKYWh3S0pJekRTNzFXc2drRVpVa0tRRU82SjdwWUJ1QzBBck9BTDh4WEFzbFVSSHNYYUlOVU9jQlNvQUxnTjdwV0xyd0liQWhoUUxLWWdES2tWY1dVWE9FZ05HUUlodERjWU1EQmdZVU5NdUZiY0VOZ1drN3dCb2dpR3doNHJCNmRoNndDa3dXd0FXYUlIb2lHSkxFS2NVRzBOc0k1YjlLM0ZOQ0ZEaW9FaGFPc1NhMm5KR2tMNzVrekRDZTZVQU80UUQ0YjNHZHd6MEFmMER0czl3VHVHOXc1QU5NZXNBdGdxVG1sQjVQSXFoT1hRRnRoWVRUNmdDRWpZMGorb2JZaDNLb0ZDMTZHS2doYWdBc1dQTURLR0tlQkZEUzlaZllEdUZqclNNaWlHVzRhQ3dNaGhFb1VwMENyWkxPS093WXJ6QTBJcXh3aW9nWS91T3dpdXNCSTlzYU0zNkUyeTNtQWJDYW9Sbk5sUkE5K0NpQ2F4YmNIRU1yRS9nNGhSWUg4RkZHMWczNE9JY1dBdTR1QVRXQjNEeEdWamZ3VVVYV08zQnhWZGcvUUV1dmdQclBiajRDYXhyY05FSFJzVGw4UWpxMU80aVNNU28zVkN3UUJFREcrRFROc2hhVlY4RXcyaFVQUlNNWU5RK014aUtVZnUxd1dDMFMrTTJMSXg5Wk9PdnNhMmJ0TXM2bStJRHhYOHg0K2tWZE9heVF0L1RmL1JmK0JiK2lwMUM3ZWxmbWhMYlN0MDVkNmhyT294YUVzNHRhcVl2bEVkOFExMjRiUEJWODFuYUE3NVMvdVN5eGxmUEYya1g2RWJjY2psRmwvQUo1UmhkeDBjdUhicWFHMmt0T2xZU2wrRWhWaTg0dFBRVzh5RU9GYjBoL3dkL2I1K244eDR0Q08ralV6NFFCQUJFYkRmTUtmQUZYZ0l6cUhRTGl1dzRIWmdZWVFuTkpIRE1JZTVycURadVVPUUJLeS9YOWY5N0tHNlpzSFJmbUVoUEd6RUdXb3VnSU9KMG5Ka0JzK3E2ZzBLOXBsOWZaY0lQalpwREVRa1Awb0JCWnVWOTFJaUs3SmhEd0VxN1ljNCs1a2VpQzJRZXNBTVU4V0lLUjlVc2ZvWmVNRFlrY0tScWhxcFFNMlg2NWcxSnduNTJNU3NqMzhzZmR1ZkduMkNIMzdPWjFJdEpPYnhGVFpmMm1rc283SDBlYlBZWFZ4WitxVllLZFd4YmpobWswQy93Nk9GcllBN3hMQ1ZtR09aWUhmVzZDZGJMckt5UXVIZEVjQ3RBNmtsdnBkMnhuS1A4LzExZmdSR3Nvb3VaWFRCa1FRRXpqTkJBRGdNVU9uS0dxTmVVcEVPUlU4QXF3ZUJJWXJzeVZzaVpFVmxRZ0NjMFp2Z0NSNmM0SkxFSkd5TW84c0JZWm9yeVhwdDJvTDZZK1FXako0R1RRYVViRk5LZ0s4ZWZVZE0xekFQdy9Ia1BKQ0tkb2g4WXZRcUhEM2ZobFdJU205WUtjWjRPbkdiaFZoWUxLV1l3Q2ZjY2tIVmVhK3NHODFQOGo2VllhYndXRWY2K3dsVk5LRTREcEF3L1F3MnVaVENpSXRMaHB5N2dicGdCczJRYXpFUUJ4Mko1bk1SMWQ5M3NUTmNEZU5WN3NLNkJUU1BQQ3hYcWV3b0JmblRySTZ3VFhnR2hkSU45N1ArUXlramhMQXhwd0lTRjl4UGhRZU5TTjhSVzB0aGVNMCtUOVA4emc0MWozVDQrdEF1WmN1SEh2c0MxWHROb002UFFJcVpidVVSeGhoOEFXck9RckhMN1Vha1Q5RTBlVGlJUzl0clkzNmhmeDNGSlpHclZ6RXNxcEdLN0doOFZ2eW5hcDlQRDlkbFg0UW5hUDQraU96TkdwdTNMYnBlNVJhckNpUHRxaTVuU1hBZDZkc3YwUkRVUHpuUy94ZnNYQXl4K2szY00wK3VETWsyUit4S0w2bVBoQWhjZFk0eWd6UnZNV2NpcW5OTTZSNHJmRWc4bDBhY3p3cTZBOWN2eEJOaGh3NDFWVUpDa2d5VFI2Z0lmck1GRHhETklFU1B6dWpBUTFRTlNwT24xeTR3TUd3UHN3bGd5TWxEa1IzZ0VNcTUwNnhYWjRWcU9HVUhaS2VSL290eHpwTDlNMVZFWm1tQ3FJSnJOUUpDRktqVUd6STdYNW1wSUpUNTl2cno1UUk5dXg0dFpYWm1ib1RUWU1PRVZiNCs2VVE0NmVQNEd4c3J0NWRvZ2ptY3pOdmxWSG9MTUs1TlZiNWNmTDByZHR5Vmw2ZEJVSWJwaHh6ZWRDQzhqUGU1QXV6TENERFlrMks2TGs2eGlCajdOcy95b2s5SHhhNi9DbkQ5czdDaWZIWW9zeGw4Nm1CR2xOZGdzZVR3T3NGVXZUZnJrUjJSb0NZV2FCR01RdTJxVXdrbnBTMHo1MzllSGF6TnhGS1c5Q0N2TWtVU0dyNWVTU20wM0hFNnRXakVJU1FwOVpoOFpvODNNWSt4TDlHZ3dZc1hMSzBQaGdZV1poam8wVTkvc3c4QWNSMXNka0QzOWFsbHlOU01kUG9EeTY4REEwcWtySFQ1NldFVlhNeTFna01VNGdxbWh4YkRiVnM0d2pBa3hSMlpuTGFFaTFOU1plYTl0bE1FYkRQQzhGMWc1VXlSeURLOGtjSGlQR3QrWEhBYkR5dlBTTUxYNHRPNUtRbDhobURWZHFxT0ZFZFlQNHpCUldFbFlpaUlWZ25wdFI0eUFNQUFHbVNXWExoelJ4WXlJNmFycVpRQVdlN2h4dlRqdGcxZ0g3Q3dDdlNZbDRsaGUxNkVDQ25qMzljYXRDazB0WW5CN0ZhT0NMTTkyejhXV3d1Z0hSK2U5dmVlTm5SVXlCeWY0YkJmZTVwZDhzUmUrMmhOZjJXWGhGQWNmZzErem05Y1h5ZEl4STRLdG9hdVpHVk5CQmlpY3VoNWdaV01PSUd0WGhzd3AycHhuNkdPeElaSlpFblUxbGM4TWdyRitlbVpqMXgwZ2Y3MExJTjhBZWN6S3dHc0haL20vODMrZ0dPWGRQSUZaM2tRd0lJZFFGU2RHdjNTSmNEOFVHVmVGQ2h6V0FDNEpsc3cwa3FRY1ozSkFvWElFRVBaOFZZcER5dFlaYlBLczU3amxoUzRkTGtUTVVjWXcrZDMrQnZkU1oyYURzRGIxYzQ2QzZBV3h0QVZROVJ0L0pHSEE3UGJtZDhlTGdZaWpsKzltV1JmcVdSbXR6Z2ZZMjcrL2JnYkNnempPUzFGcDJFc2cyOCtQN0laM0RGbEU5RmdHekRDeXdjeEc3WHcwVGFwY0t6THExLzV4WGpINVUxMkFlVlhaU2xYT2l0TVlaT1RQRjRWZUs2RG9GS09GL2FQY1h3ZG40dEFLbUVtWTRMMEVtTUhoYng4R2NUeVBuMllrTUhBOHFBbjM0d3dEWnZkcnIraHUxaTdNYTZMM0xYRW1Fd3p1WmtoQlNRRXZCcjFLbzQ0SW5HWW5zMFJIaWpXeW9TaEpQWTE5QUdEdVdPNm1qNE1nSHdtQlptQWVNWFUxWFRVYTNzMFZlenJNdVAyTlRtSjNuSXdzM01HZ2xUeEJ6STVUYkE4WlN1OE9jeWxuNmt0cU03QmRLWFd6c2t1SzlxS0ZPWmhZOStkN05RZTV0MlBRMTZ6eDRYb3JKbzQ3TzNHWEpNaHRjZDdwc2NRSmQ3WlpBbkZHU1ZjRk9zYWNYQTN4aXZYU2VLZ3hMbFhBaEdTL2lMZXVqKzNHdDc3M1BkV1BabEVvRHRmVE1GOWpHQlJFY2JZbHFZVG5rM0gvb3FHTEhZclVFV2RicUdQMjhFSHhVcHk4eVBiaW1rZStuM01JUXVpL3J4TG5wejMwT05RcFpJUU53QXhEVGhGV3FPZ21lbWIwakhTTjNCTEZnckhNWnJWWTE4b3BTRmlHOC9GSlkwSTJUbUd5Zk5tT1pXeUNEVDNicW9MVlcyTEpWTW1pQTRWcjc5b0ZtRGtoY3pIUklnWVpmcVJhYTYxbGpVSUM4U2xnUUVzMmNuSjdzSlh3UktOOU0ydkhVVDFUOW9DVXMwTzBEcERTckJsdGFIa1VLVWRML2JrMGRRMUVvQmpmVFF2SmxRN1YvUStFaG1VZUc0NHhMRUtrbXMxQUtxOURoZkprbWd6VENtOFpwaFZlZi9zd1RLVUprMHltdzU2TDRJOTJDVVE1d3lUaWNQQi9tUXd1SXJDcUR5YWgvWDlyTU1tdmNUeFhaaElNQ1FvMVJCaHVyOHh3bTFETnFVbEdwWG82bnJHanpRVUFkNnlXbFNHdXlKQlZEdzBkSEVQa1VhM3pWVHFwOTVHbWNsUWdROWhPeUQzcXZMTlRCNmZSOVRTekhNM2RyVVhwdjRRaWpVOC93WjNnUzlKYzJ4VUZSc1dvMWVScVZZdEJvVDlwUlF6NU1BTk96eURLRmdGdGJqMDFsaG1vdlUzcG1vbG15UXFHSHFjTjY1T0tzV0NIZno2bEdMQ0RiS0c5V3VOa2lJTWkrNDc3czcxSEJ4Um80RFAwN0dzTXFzSWF3TVFoenpScVNlWU1HTXBMV0JkZ0phdXErYzJKRkRFTDFpWnRuTDFZZ3BWQ3c4Tm1oY3JXRnV6L05TdTRvb1J4VmkyTFhLczVIcjUxbllpY1pZUjJ5eEFrdlREbWpTa2ptTlhVQ3BCNjhxcUVJK2ppUjBod1oxRUg4YTFiaEQrQ1RGUzZhQWhZbXVRLzlqMHQrYTJtNkljRHlJVUt6WnBDZHN4TVBCRkRVUnpJR3AxSTVBeTN1UFBlQkx3U0wxL291d0IwYXZYcEl4cE90dE44Tk0zSzV3Zmg5VTIyT0R2RERYSm4vSVlpc3RuOXplL283ci9udjFmSDkvWFJNVTAwNXhtRTF6dXJmb25aRXNxbk13ZGxHdS9pMWV6SHBjMHRwQmk0MzlvUzRtQllXOWpQTUdkdkhoVHBZcWFHcWhvczRnK3lYY1UyZHZwck95SkdnSWdNWHRXWXdTWVZQTUhKYVlUOUFpbVpNL1VaOE1jd3kyUzh6Y2hSWGUxUUpjNW9aZTcxZFdxdzExckozbCthMkZwSHRwb0lvc0dzTE1PbW9lUldyeE53N000RUkrd082b3RwVXl1NmxtdnBSRzJIdjBUZmFleVhYbWNKQ2RIalRqcSt1emZ1L241bWhJMUZXd1djc2d3VTF1Q0FIK1l3cEdHQUJlTUp0ZUp3Tlp3dVpvODArejhiZ00rK2M5YmttUzZ4QzdodHFSK1VHS2xoQnE2UU9LdWFTa2xSbnc1VHFDT2xuaWx1akVpSy9mWFllOXR6MmdkcUFSTVZVYzRpQ1E4OFZDZlA1TzNiLzk0NFdDaUdkMnB3N2tiZlZNTWwyUmhnc256YkxRZ0xHTzJ4Z3NLWkpZZWNGNEViQi9pWi8rMkVPdC9uNG96SlFGUzIzeHpOeTZ3RGRtQUpVVVlTL0pRWi9mblNWSEhvUW5ySTRkZVlURVRPdDcwR3UvVVE0NitDS0lnZmJQdGpIanVyYnVpdmRnMHQrSnRXN0toNkljeXljaC9iTVhIbjlXMkR2Kzh5YWVCelpScE5Fc3ZQSlVqVllMOVFlTVRLRXVqekZidjVrUlJuL0tOY29sZGhxSTJYblRqanJqTUdMRnNQaGgvaVZvN1pvU0R0OGMzNHlHVU5ac1ovRnFrTUEzQ1IxaDE3V3M1VzlaeHUxM1YvY1U5NlV6MTJiYnJ4ZmNhUFVLQWxwa0JTd3ZsaTBDR1BQanZTM1J1L2JjdW5JUGppazZnTjJZeFdKb1ZqaGtFSm00K3FhcURuNlpnRWhJZGZBc1dKZnhUVmJ0S3Ftd1NLRXprOWs1NzBweGxmelF5ZTM0U2JqN0Z3aWhSMDllVlQ4cTh2enNVclcrZS80eDFaNjE2bzdtd2toYzR5YURod2c3NHFQQTNtYUU3ZmR4ZFhtOFk0NlROWXFWRE5ieUNZWlBqYUJlQUN2Sk16LzV2Zzd5Qm4xWXJQemc2K0k0dXdXTUZmSkRLd2dnTTZ6VE1vcE5wSlBpczNwSTRkRTk3ekVpSWEvRVhadXdmT1o5SlRUV0N3MmZHdCtNOTdzMWhLSWxUeDlHYjI5R2Fxem9ocUhUbDJtVDhYbHpNOTVLalRRb0pUMVB3ZjlKTXNia0laNW83MWVXRjR6K0ZpZ0FKVXhyRUtKOWR5VFZLQ3d0SkNxUVE2aGNWYXlCRTlTUWh3NloyRlVqZHpobVdNV2s5aVJNd1lYWGpJbUJpNjUwallrZ21ZWXdSaU54aGtUSTY4WkZ3K3ZNb2lGN3dmTXFiN0puRUNScEFOR1FhcUN5NWJ1N0phSkhKaHJ5NzVPYkgzWnpRcEhPV0x4WVkyRFlXUmQ3TlorYmhFd3RYb21xNDJ4c3NYejFXcWFWWXNTc0F3Q2Q4Y1NndzRCem9vZWZaTzB2N1RLZS9ESmRZZUZoZEtoWmxzNXh2bWxWV0xEQWJid1JEa1FQNjlSY05wdmdXUjMxOS8zdldxM3FFZTlwTGNlWWRmWFBKMHArR1c4NThwY1ZLNTNjK1FvcGtNTkIySHdTeUpET29RMmUvZW5nZ1B5ZVREL2MwVXRhSjN1Sll6Um1tT0h4aGhFRWIycXJITjZXdFRLU2xvOGNtTlhDT05nQWxtYWh4TWlESlZEMEFPUW1DZXRNRkNpcDdRb01RdnRsSWEyNURaU1ZURDFIVEd3RkNpYkxrRDlpMnRLWHErM3NHTWsvNE9YVmllcWRES0hLTFY4OFFiZEZSRVU2TDl4Z09ZWmNMNmk5S1hqUWk3cnBlU2RjTE1tTzZGQXRhTDFWM1FpL2o5WXZYK3ZmWEs3bkVHQ3gweTJkRDZ5ZGlxRWI2aGJLY2w1QlU5T2JmOFpiVm4zdXlFcG9iQWxUOWVzdnVZMzRlSmNRajI2dnRkbVZFa1VvMUkwVnlKSXVDNEdkb1JzaVBNV0oxNjJaSGg4YUVydUtyWkRSTWxNd1ZTREd1eUtuTHJTVUIxVXVRUmtNZ3ErUWdHSzRiQ0NXSm9EN0dxNXZFdGhBdWJ5VGIrSlFpZENFTmVPNk9zRTRkU2lwbWhEai80ZmNPMEtCS2oyY1RkaWppZXAyYzBHT3lYaU1EaU9JeGdUWEdOR0NBQnJGNWpEcEUxY1RvN1VZbjJoanZGNVhCaEhjVk0vVEptZUhOQTJjOEM3WGhxV2JiblM1VWhQRXhuR25OQ3hTcHpQN0tZdXpNTXZiTUlNcGlFb3E5alA3Qk95SCtqR0FPTm94aEVQS2ltNVNMZUNPdVozM0tJdGdGd05WZ1FvQVlRZGsyOGNUNExFVGc4MEo4UUkvOVIxNGl5OVZPRUVKbTlHQkwzRlVuTUtyT1B4d2hEMnVQNXJheVNMOGFKb3ZiVkRMQ3NDdmFVMUdGdkdmUE1wT3dpRjJ0cDFGQzh4cmRGa1YxSWpNU1BBMFhyWFpESEdjVmFCTklzTU1kb0xtYm5lV0YzRHhoQkdsd2IwRFFVcHVmUzlLWWNoUTAwQWNKL0g5endJY3lQdm9CbFpsQWVSUFpJYWNDYXJIMlNKRjNMazZ1T0psWVpzdFlUaEpWVVk5UmxrQ1N5VE9GeUlsMlNlb1VvdXBvUXArSWhzM05qUUlvZTRhNHlsbGdYdStaOVVhcmhwY2tvRXRrWThaSXkvcEVMTFF3V2FaZk01WXRKb3k0V0xPTFJCbkpHVndwN0YxNEdiMVlHS1ZVY1V6SGoyMU94UDg2eXp2Z2ZkSkx2enJIZ0lTUThlZUpXME1JRXY0Znhja0FRQVpiTWNRSklsNUVScU9lQ3N5TVNMa3J6Q01Ja3kvWkxLRkQvZ0JKZUF0Z201WmdSN1I0ekZpMlVHVVlqOVpXU2FDWldPTEZ3UDFZZUVaTTgzQU1vNVgxR2hEZHQyVDNlMC9DSzhvWTRndUtDbExiQzJNc3VIY3JjeW5CZUJpdEpNeVBDcXo1VnE0VlFBSHFIekZCM1p6NHhVcUErS3VOeXlrR2QzbVljT1ZTUDVSK3YwdFpIbFB3aTZjdDUzMXpLZ0xBbWlWbHloWUQ1UXVvS25nK0YzZjVVaGM1Ukd5WVhWNytrTlllVjBFdGZDRkdZTlpiZEZ5b0xRQXVDUFFaTmZVMjdoRDFQcStGdm9SYW9XNFJDUEFTeGsycHVHckw0TlBUSXhqb21YaVc0V1hVdEZQR2VKNDVBK21Xa05wRFpzVG8rcjNRSXl3dkdKMXRCbkxwbDhMZWVBbzNwMU1ydXZzSTd2a3hQd2tKRnlnZTFuN1dOTG9sYkFtSW4rNVVCUEVCbzNjWXJQdW5PZUliZEN0aGFZWWQ2WDZMd2NFbnRNUndqNzJTajZuNlVqcE9VTTRNV0JVbktJZ0lDZkN1b1JQSjhWSi9MaGxPQXdFSnhHTVJqaXNkWmxzMXdzbHJ2aGZZNGkxV1p1Ykx1emdsYmp1dTN4WGQvaDdYYjRCNU5jTFVvaTB2TjlQUGJ3VmwxUXZwY29IeFRLUFFOdWlYTzJvQm5wdWc3Nm5scTBFbFBNRk9GVTBTNDJyUmN3MHJDWFNkMVU0K242cXdoMk5MZncwd2NDVEJYVUhnSnorNG9Ha2dYVGQyQjZCN1R0WGxtZEg4R1JnVWxidnhxcXlIUk1OeEJRc0N6OU1pbHd6OE9USlFYKzRSTll6a1hFVytkUVFhWG9kK243TXRQckhOMWpoZDhabGtjeityK0hBNXpRdnY2V1RjVXAyYzJJaEF5cHl4UTFmN2lyMjdDTGt0MmdYUXFBMkRyZ2tXNk9qQmthNFZsQmw0NGwwaHVFYnJFRmtqRkdGVHg2am5yQmtRQUd2WExRK2NkVk1SR3JFSWZlS3JwcWptM29SNDA2VFdyMHRoUXZKYklUZXNWc0c4Q01jOGt3cThMazdja2tuZGRreGtzVWRaN1p0ZjdHeUcyaWRDSnpHbDFacDg0N2xLTDVhUGEvNzBhVWlHS284enp6UmFZQjJYVGRYLzU5MDJoK0oxbmJCUVpURDJ4ek12dkhGeWVFK24zZzJFZm9CSy9qTFo5ZENUWnJjVHlEUXhJYWFJbVZnbjRGd2lrS25ZNm5iMmhFVTFweEdoa2pyNlB4SDd2QWg2SzVVN1I1bGdOaWhpRnFJVHVFZWY4bitwQVNqa2ljQkVRRHJseG9RYjZvVisrekNSbERwZWplcCtRT3Z6dHVPK25DUFVOUVNHdm1PVFp0WXFPamI4TVV0b29Tb2QwVEVCNDB4LzFMejZuaHcvNzE0eGpHb1JUNFdSMVM5NURobGkwaHFwNFpOd0R5TSs3NDVQZWJHbUFDYllXWE5kSzZSMy9EREVKRXhrMjdNa1JUSGM1SnlCeVpwZXVnMFNBdHRUVXZQNHM4SXgxMDcrWHkyRHVFT2ZQYUdVNCt5VGYzK2lSNW5iV2FkdUU0czVPYzdka1RZSVZkRUszcmNVMTMxRGNiRGJYczc5UG15eG9wZ3VUZWplbDVlakZub2lYOGJXYm1vQ1FwMjNla3hFejlYTnR6cmhFV1Z3My9yZjhqNzF6TUplK1FyQXFUL25XbzVsbm5mVjlqOVdVaGFNczNlem5VTXFTWXVSVnU4VUZyeENVYmgyYUNWVy9UMjk0S0hSR3BDd0pCUnlNWkpaSDVqOVFsUzJjSTZ4d3hQcjVLb3pLN1BoeHJCT2VrRjlPbmVpeXZDaVFCYkJRWGJ4L3V5Zk12Ny9NWkJRc0lablF1TDNMRENpSVBubC8wV1llWU1DMi92WFErRTJCTit3SENlWUpBNFJFc3JHNUcvVHQxZXdwL2tjL3J6M0tHYXZYVFdzU0lvcWFKWGJRY3RLMVdVWDQrSFI3ZTEva2hmalJ3NndNVmV0ZnAyMTFKSUdlTEJicFZtTkVLay9wekZ4VmJpZy9iVlJMNVFNaGt0UEp2OTdEQU1hdFd0ZkRSbEZHdHNQbkFmT2tybWxSWldHRlB5SWRLMHo2dDlYZlVIaGFMTWN3Wk5nWW9oVVVjMGgxS3IyZENQZFJyZWc1R25sN2ozN2lsb2V2Y2VMVmpOTGRCQTRDcnVDV3RSeVQvTDh3SGdrZDdlVHhBd0tvTTRwamtuSUppN2FPQmpOYnlValZ5VHVxTDJ0Ym9nbGRHdGFjTWt1VjMxSVJLa01JUFVjME96SXlvdWh6dXJEWXNIeDV4ZjZ6YUwwcU9nMWVFUDRiZ2w2RkMxcmQxK2NsSG1jei9EUGxTem5qK1F0bEFyYjc1M0ZYSndRS2xMME9DcUtYUEw1Mmt5SVlqakhBSWVXbDNnMy9ROUdBem5RVFlJZmxlOUZZZjZ0emZwelE2SHRYM3hMSjQ4b3BiblNEZm5uRE5lWFhCTmZiMnZZeXd0US9SamRsT1VHbnFWdWpudnBwMkpRNlJPR1Y5SUxFYkJsV1JtdnVvOW0xZUsxbHovNlZTcnExbjhlKy9NcUdiTzhyUGx6UGI2dmZvMStDTTVaMU5Zb1VCWFhqUkpRT0tiSU1ZR2pEaldhN2ltdy9JK1F6c2JYMXBxdEZvT3c5TkExNjFqNnFTQnVweUNyZlIyZTU2dm50Yk5yc0Q1MEFMY3JjK01PYlIwVjV5ek15aWtTUnpFY0tXR0ZwZ25qMUNIZXVNQVpTajVGYkFBcEVoemkxSTFVZ09XMGVTMUdkNWdtWUhlQklIVXJ6d2lCSDlDZmpxNkZsVWQ4QTFUOFJkcHk5ZmdlQ09HUXA1Vk9jelRhUm9PWXpDUzYwWGs3MU1XV2dLM0FGNnBmeXVUY0dYZHIxRUljc3BYd0szL3pwWkp1SGQxTVBwZ3BnME83bzJ0U2FXZ0hudGt0L3RRb3d0UEVPZFEzWVJ6cEN5dkNIdy80WDljelBrZVBmYWpmZS9XVXBGZm1rWE5aOXhXSFZLSGFpMWhTcWRiU0s5TTJXQWVOS2lzOUdqR2xJaWprWk9kZERpam1mYzgxTTFCenZuNmQwSDQrQU8xZFNmRFppVEVOU3pNbkl1UjVSS0xxMTE1ZTgvaHl6TUtKMXQrN3IrOEV5ZFZhTmxFRW5PU0R2MTEwZzZua2ZvMytSLzlyNUJUN3NSUkx2YjhzMFF0djJzcEZEL0l6K1FMRE5lZGd0Zjd2K09leWRlenVTb1dadkY3MUF4c3ByU0lMc01UVWtRZmFZbXFlL0VnWmZSYUw1TkxKb0cwUHJjcXFmWitBazJ3WVF4aHlOOVBRZ0t1VlVSdFo2dm01UzlPTHFWNXFMeVBmanNtYk9IZXloT0hFOXg4YWJxK3RleXR1WDBzL2hJbGdmakNpMUhncnVZMnlzQTFvZlViT1FMWUt6NlFjaWtCWWpFUEhiWHlHdlY0S3JLbE0wcW0ySkxRTHVCMEFxT1lRLzk0RTFYZVA4eGkvUGkvWnBQaE9hSHI2ZGtXeHo2NXlKeTJIS3pQN29hMlRXb0REblJRdmhHQ0RMZldCUmZkeEV4S0lCb29IOTZ2VExGa2x5ZldUNU8xb0tnTXZ1Mzhlc0lwNU5lZXp2R0daU2hXdW5TNmVBMzd6TlhQdGhEOFhFWUxQMUl6Y3l2NzBwREpHYVg1YlhoWWdVcENxejhuOWNkTTVDVmZiUXU1b3U3WG9wSjRXY0lRWEpxNnNiS1JMR29ZT1NSRU95UWhaSUVEWnpwQUhweldnWGtJS3M5QzZlN0I4Tk9SNWgzZHFJYmJVSnVPZmMyQUNubStsYllhMXpWN04xOFgraDk2RkQyYlBHMC9uQ2hxajBlWHNMTG81cHhPZnZFcVRtV1NmdytncnZjekVHOExJSnNNc2sxVHpkUDI2ODR2ODRtNWw0TGdFMnZ3WlFUSTBrTzRDd0ZCUklFbmdaTWJwYytKMm5EaS9YYWxwUFBlVXpId25sRnBDQWtQVGsreklwRjkzUDRRc2NQeGp3RDFFRytLbC9wMjV2b3lEVkt2cC9aTm13NVBWRW5TYnBPTlBKWHdGWWZNQXV0Y0ptOU1rOXJzZDMrWUpmeGk5S2NjYytaak96SlE4TFYvakFDUldjRlQ0U3R5ZkNWb1NPVjFpeitQK0JWMWhpNGR4eFRjNkZ6Sm5pNGpCcXhPUWJqaGVpNjB2c05yam1hV3hTbDJTTFFRN0lYRUlWSkZqdmJ5VTc1cGNVUXBmNGlCQUlDNlFTd3M3TStmOHVndU92RWhDc2dWQ0pyY3hRbnBaRVJFUkhnbTBLYnhNR1lFWnRtTWw4WkRrcVErOTVXTjdvcGZzR1hJdkZFTG8vejRBNHEzZmJ1YThWUVpZYlcwd28yRkhxZ1UvREtzL2x3M0tlRUNMS2kzcG1qTU1wS2xPb3NaQ0p1MGhEYXg2akQ0aUN6bHBhWVdYb1EwR01PU1BYMmd2d2czZzRJYUtESDMwTW1XcURLYlp2RWVRVC94WEhIWjkvMkkxYkQ0V3IvQVBRekd5aHVoQzJPYXN1OFZ6bndERWloN1RyR2MxUGlXMmV1OUhTQWN6dU5jMlM4WjJuMU1aeWRaZHdzdURFUjJQMi8vTy9ybmhvRnh0NGJmZ0VyR2VjOCtrMkZEeGhaamsrNE41T3gxWUcrN3U1d2NlNmtCSGlpQUlCaVViY2FSU2hUT2kzSWFnSjgwa2FKR0tEMVg2SHN5Wnpwc2loVm5NaU9TUlZNeFkwYXN0Mi81WlRjWHV6MVFQUjRwZVovY0FhZ1dMbzFoRk5CWmZocW9admIwRFVVd1NBS1RRc3JTdTB5b2swenAxZDVSdUNKZVBYak9vRUxreTRrQmkwQkZJSE1SYzEyeDcxc05aaUdqR2Uzb2pnaHJPaEMzc2ZNUzRyTk94OUVRekJzRmFKME5xUlZRSEJWMXJzMU96K0x4aUdzOXhCQ0hDSXByWkZHTys2TEV3WWdtSXpWOFF3aWtidHhyM1cvbS9vL3hjSnFCeEx2Z3FaZFpTcmtMcFhnSDRCS1gySm9uYXlib1pRTEFDRk9jb2s0RFFmUlRxZEZKMm42VzcvbEFlaFU5R2FWYVZFY2F0Q3UyWkRnM1RxL0xTSkowdENWSlNjZmtFc05Sc0JnMVNUamNMQnE5VDFHekpWNWZNMG5VOGNYdS83eS8rR2h2elFDcWUzaSsrWmZObGNoMEM5V0FMVmRyWjdncTZpNDdLQnJjOFRzSk53cUxZcUNpdnkwczdrVVg3c2JxQ01BL3ZsYUtHSU9PZkJ1enFQcUVPKzJRSXlWRXAwMENlME5EVFBNR0pOL2NzYWtsZTRtSDdab2sxdEVSNlVVaU1iU3pxK09YM1MwTzJEb0xqeDFuVjluL0lSNDNvR2UwTld0RmUvdTEvTVdwb0NEaUgyRXB2OWJuZjNBYzZlVGVlUldaUU5vSGFTdk11SmhnZlNoaFFLcVo4QVRGUW9HNlhJR3BFU0JLZG1hbFUwU0YzNVhtbVlwTzltcDkwd3RwcHdYNkY5RUQ4d25QUk51ZGxPK3JVQkRSR2oxVWljSTJTa09xRkJLakFpTFlmalFGNS9PV3NwaTlabnhkOFBGUGNGckQ3SGhpcFNoNE9LSTFBejdtU1FXSGgwZHdLNXJLY2lxQ2NVZTcyMG1oRkRoSVVXeDZxcUlmTndyZ3NKUkJBdnJiKy8rVkFSQXRObkd3bEJwZHUrRHZLMDZGQ1JSMVNQZ1ZnVTZZZ2FVaUZyRWEyY2FlRHdhMEQxb1VOZld2Y1NnL3hSZmlaWXREQkg1dWdHTHJBTUR3aVpQNS8xMVhVS216emZlTmxhODgveTV0aEF1eSt5MU1PaTdpWHhBZXh1bnRVZnBNVERsTDZBMzFPRmxRV2JuUWg5WW8xM3l5dW0rRUNHckpxMDM2Y3RINDFTbEprSVBOWFpUbU1CYTZtVk9GUlpBVHJBbDI3dnozbkZ6RjBYc01lazdNZGN2azVCZWxoKy9JTlRWVUhwNHhlZFhwSjVIR3UvRzBwN001YlV6ajZqOThOKzYxQXYydS8rQWR2VnlSb25VVHBzZkRRT09JS2c4TEtNSWtjbGhhNnY5dkt4T2RvRXA3am1CWmZ3QzMwM1ByWmd6SjJoMDdvMHN6UFRZTERjVzRuQW5CUlgrQldXRzFSWDAyTUZIZ3RhbjMxanhOMTA1dXp2RHlKWXdnS1lGeHpKdzY0ZHBwRllaWFdBdXlBVE94aTA5Wm9YQmk0TWxEd0FFdHNpRCs4MHk4M3N0eDlwelUyeDlneU1nM3A3Y0FaZU1XWHluUURmYzVqdFlSSHZ6WTdUS1NHVzZqQmlZWVNzRDQ5dkRWVnNkOFlZd1lqQS9qU2F0enNma1ZkNVg4LzYrS3kwanBuR09QZ3M1SGRYUTJwby82MFhzazBqZVhxUjZ4M1JRMXFGb0F3bHorVUxvMzBDYlB0eWpLUTVXc0dkV0Z5N2NRWWY1ME0vWTlWa2tURVZtSGxOa1NZOGozSHlSU0toRlBCbWlxc1JBT3NsZkhVakhSWnFyVm13ZWtiSk53VmxyY0U0eW5OSFhvc0VvWmVPRTdqcE94cWNuN2J1ZkNwdTA4bFozbkJMMW16N0UwM0s4Q1lwQThPR0FTbHVHcnM1QXdFcUNQR0JOeGxRRExISnZmNDN0SHFOTFRGemFIa3BhRlF2SFMzdGlvOCsxZ1JJQ2RqUms5bVlscVE1NlNMVC9xY3loZFBoQXlEaS9yQkMxU0g3M2Jna3VYdGF4Vnc5VnpudVFrQ3JiaFNsMDZMTkZJeFFOTDh2Yk15TEZvYWorQjNvU3JVUUlpZ05aSEVEeDM2ZzRoeDdNREJIMUVoUTFGcTBGM2RXa1NKSUpNZFhZak1CdHFzaGJFSllicWdHNzFvVWpvNmNxaVk0OE9LRE1KNENZQ0dYaFpHNGpKdTlQMDdNRDZUVWFNVk9hSktyQURuRkJ4U2lJVmQ0Y1MrcXlxSE5BcFdxU09jOVpwYWs4U2dHYW85RTlYcWNubXpjZmtnQkpYY25ZRlMwTStXd2dyeE1kUzFaZEdWNGlWSDdsNnVBTU9DQlJSOTdibGFkeFBhbm1KRzkvN29pazJCRkR6Qjhka2pBY2J0NU9iczBHeGNPRlJkbTVTSTdtSGF2WmNQV2xWeEtZdE1xQlNja3NubmVHS0NNeHZFM1ZpbDd5YndEY0pDVE1NaG1kQjk3Y1FtYkxmOXIwMlFyWTBzUGpLR3labHhSZWR3cEdBeEprdUtJTkU3ckFZQXB1TVNBbFpVRGtaTGFYc2FPNjBCamdERzdITzhUNitjVG16WkpTcXZSNm9XSDRoVHIvNXBsLy9HSTlxWUs4QWREaE5GdWlpM0xwK1RDUVdYYjQzSzBRM0ZnQ1Zta3U5cFljeGhSRkVhem42V3pVdEFjVXRUeUpCa1BBUnVwRW1MVDY1cklFMmp3QmdvN0E4cEsxaVUxc2FMUG1EVmJSTVA4N01jM2RXNGVMOUc0OHFIYU5zOSs2T2doREtkcGo2b0t6YXd3M0ZTbnh0NHRMVjBkMTI4ZzVNb2lNb2htK0xENGJPUjVEdVhYQ2R5WEcyN0xRYkt5c1ltVVpjUEhYSGpmaWNZbXVJVU5LR3lTdGV5UTYrR3JiVWVybHEyelNuSGlXQklDa25xbWhXWGdsRm51ODIvT1NpRVU1Q2xUaFFBeWFrdTZ0Y1p3RlVsenE4YUNlOXAyVDhvcUhXZnl4bG9hVzZjNGt3YkFZK3kvVXhQa1lhamxJWVdCcFNqZHdON1N6cFhLcWJtOFk2NEFibUxWT0NKV0YvN2FadDE5YjZwYUVBNCtTUHNqTGw0MUkwRTA1RFZjQVNpNW5jeGNBUHRrY2huelJHUVQxRDJJZ3dUY2FWQlBvMDA3aUluSHpkYm5VUE1MUm5kdDlpdEcrVkFLenVJZVpZUnN0VmdaR1JSNEJ0M3llWW53a0o0V290ellITXR4SHZ6MDQyK2h6TlBSTXZCMkNycXNkVm9tbVh0UWV5WmVnU254bThSQU9pcmwxdmR3dVV5RTJuRVFPNXBtejBGeVVidnRPMDRIa3N1Sm5lVEh0d2RGRG1UcDhmTE0yeU9jMklKaHZwTVFrVFpvbnpQTVZ4TmxjOUdrckIzRnRlQk9XWUxISlV4bUcyWWJ3UlVnNTIwdHpQdXFEOUhBQmhzVWJqRE5OREh5L0JEUHdWbDhnd3BpSHNpU2RIdjRlZjNUdHpUZFdTS204RWw4eExkVDFVSTNncy9JbCtyemgvSHVWZEZaTUt4cWI4bnMvTXR0SVA1emVZZDFFM0d6SEM0dW1UcXhoOTFGeDgrNzdpbzRMdUZidFAvVVdZR2lTTFBoMkpPOXlURW1EQ1p1MnJNR2ExdmVEZlduSkY3NTlieFRrN01QbnFUbTJmMmNIRi9YaktLancwcGJxcXMzc3BKQ25rTXRmdUl1ZFJaRXlnKzRhd1QzMnQ0ZmVNZXpoUDZyWDhJVnNIc3ZUTzFPNlcyNXMxdFI4dCtXN3Zacm5QZEFRVUplRnZJM1FqUzJoUzBVWWdVVTZqaHRkQThXR01TaXFQSTV1cmlyNjZQaU53NVdtQ01qdTJxY3NmRktnVE1sc0c2VURzbmQwQmhCMmNwNWxhTlRxWVlqQUpYUEhCVTN6T3A5eDZWclo3akJNT0pPelo3ZXdGbkFKRlhCRmFEc0JkRk1kR2toK2xiVFFTd2RvS0pBUmJYVzR3Y2R1anRaQjNUMW5ka2ppOExtcDIySGk2aVVySE10ODloSUd5U3drZE01UDJ6dmNWYUNoRUZEZHMyR2hYa0NmUVRNMWVsdW1Peldma2ltcmNzVkdPaHBoYUc5RG5ZaGJhblRyM1AwNVFyRitVMjhFN1pLc1NwMzY5MGVXTG1QT2pMSHZocjhxczFiOVRIUlNMUGlNUVNkVnBmVWgzeWpxbUZNT0d1Vk82NS80aCt2dVBVcGxYd3VLK1BwZHNEKzI0dFg0c3lkWFpYeE96RE9PVnE5cmlhTUx3bUs1aUpmQnpZc1hSWGg3d3c1U0xiTkYyVVZ5SzZMbUNESE5ORHNTTTRsM0dkcFY0dnR2dDhLWFV6Sk1PQTBnZXloWWJrdWM5K1JNTnh1NUJIZU5tdXhleWRES3F0T1M3SUx4Wk4xQjNuS0ZhcHNST3E2b2d0NVNOOG1QVHRDR1I1c21NV0NZNG5MUEdOM3pQN3lxS2t3QlpBNVpJYUhyNWtWY1BaU3MrNncxZHpjUjJ6Q0VmZ1pMYzQzdlJJT2VSeFRlQThLUXBpeHAzVkNYTHFmQmVoWHVrbmtIOWlUSmhlZVZabUdPbzhiYktMMElHbDY3aGhrWjFreEQ5Y2lNMXVRWVdpRXFTMzZzYUF2RTg4c0ZGY0ppM1BhTWdjTDV2QUhxK2hEaHVHaGU2QWJGb25rSncxeHIzQ1VYYndCZEZkZDJxc1BtMXFLUWdiWW9TdDJYMmtXK2F6alQ0QWlsQU5hc3dyYng5NlhpeDlCM1NsUDBraG5OMDkxTjJwYVVWbjBId2tqNERPMkRCSU1tUi95UEJKdmE2N3c4bjI5SzVUN0RWZGQ0NEVIRFdZU1dFdWJsNHZ2a2RqVU1DczZTc25XcXZ6eFNGcy81dnRoSkJ0cy9qcE8zU1JQaGg0blUrZnJSWVIycTllREp6b25ZNnpDNVpsR1VGSWFaWXlyTEJ5T2dDc0xpWjd4SUNSdXFsZXlGVThDakVsS1d3MU5KVHlQZ2pOMGNROWNvSEVSb1JBeUpxcE5XL0NUZmIyc25sZGZDSmJIZ0NabGZpMXNnUzF4Ly9TYjhraU5nQ09senYvOWhzMHUxeVI4UFdjRFVUeEluS2xZWkhpUlhITE52WGlZTVB6L2lRWlNUSG5jTmczSmNzejB3aVp3M0dDQlQvdkFVbXc4NUxoWTVMd0FJbDBFOG5FcTJZbm41SXFkd1Jxd3FZcXJzVGEyUW9wMUFkOFF4bkUxYmh6ZlcxT3J2ZzZHcG1uQUh0UVhzTmFFQlJGYmNvMkZQYjRjajkxRlZqM3hxL1V3R1ptWmtUTldPL3graW4zVVpmRkRvSHYweHhQYjhPd3hZU2ZXOVpFdTlRZW41WnlMbzZVSkNCUUh5bHdWUktxUDVXR25XaTdWK3ZyY3kzWEVYTXlaL1lNc2t6dmR3T2pidEV6YjFnQU82RFZsV2ZtQUI3bGxtTkRDek4zWEFyNHRMSUFoeWJ4RWN4bDZudG5zbFNjNkFBT1VETnBoVlk4cjdGODhmSFlsMVc1RmJvSU9BRFRVRlZKVE43dE5vTUVad3J0NkJOdUZLSHlQOWhYbFIrQ0dwMGpRQTRsbE0yYUlhdU1SempzN0svdnN0aDRwcHI1c3VnSzd3Q0dKUkszdnVaWU94Uit2VXZ0ZlRORWpYaG5LOEVDblpnNXNVMjFGdzJqS0c5ZUF2Z09kY2tld0JMUmpYdCtzem02SFFDY0xESkZzV05nOEM5RGRuVmVJcFE5Q0JZQ0QwQWVYNE5BdzgwOHJjc2tRa05VYnBSeTJkTnoyZk90VmtnZDZWbnJuRmQ2UHVQVSswN0hHalBpanJ6aGc0WnRUK2lEdHNRd1JTbjExZGFPdUx3cWxQNVduY2FTNEpxaTVZUGpFZDk4cXBIWUJiYkhVaEFuRHBZbTN2azQxLytrMUZmSG5FWVN3eW1PbDlvNzQ4VlVnUEp1a1BrZFJGTit4ZHpuTjlKSW0wWVloYlVrU3BBaENuSWp5dkJrOWZ1RE1Ba2Nya1BkMVVPNG1pWkdqNkxPcU1qYXR6YmpWUXVnQ0FnOG4zOXFFRVFYS3MyQ3laUFVFOUxyYXM2bmJvK3hlbExtMUxMS0ROTXBNaHplckJnYjJyUkFoUmhKNytEdXFMYVFrd1UyOHp0czM3TVpTRFppb0ZVL0VnemlmVzhKTFVKc1JKYVVINlVneUlZVW5QbWdpbmVCTHNqbXNrYi83UVo0eVFiOTZocTh0RXQwQTZRbTVxS0pYZ1VnSlNSaTVDb2ZKTmVmMmZvR2Q4N3lVTUppWkxUanNBbFVmNjErWlJQUU5TU2pYQ2ZoeE4yYlVqQU9GSnY0K2hvWE5NSkxGVzJ5R0FsQ25Tc2kzSHBYZms0cWo0c1JEek1qYW1VTituNUhjVE9tdUgxUUNEbFgxT1lwYWQ1dWRCUzJqQ3VFaHBmS2U2eWFyZHF3M1AxUlB6Mmc0MC93Q2x1a3RxWXVEa25aNFpHVWx4bVBYcGs5bGlTdnVWSTZOQ0VmUWRuL2NMa0doazRyNFdHNnpGUmc2dlNmTXBTZitQc2dYNEVGT2RXOUlpcVlXK040ZHVXWlAvb0RKalZSSjFGRlIrbG93NG9lbHltVG1pbnhZWkZrWU5RL2E0SFFDaS9OQUJjbzZsUW1jb2drOXF6cUI4OVJYTGdWeWlwQ1h5ZVlyZjdTM0pQU2V3S3MybWliQnRLNnR2cFAwaU1Wc21Ya3lGcTIwanJucDJyRmVheFJxcXR1YXZEalJRZXU1Z1lqU1VXNS9BOWVONzRGU1g1K2dHbjJGVy8xWGtySitWK3FPRGxoU0kvSzhKS1c4OHp2YTF0YTdZeVJjNlQrRzdld2FrZnJwRkZ4bmk1VEltVXlzNEhVblBWVGJVRUtsTCtHMk5HYUdSMHdORVQ1aGRwVEN5U1JRVi9xS2h1bHVWdG4rQlhWRlZwV3F0dGtGay9PVStZWjd2Umc3Z0R3b3JFcDV1Zk1DMVFvd2VWeDhLRVZLOGpJdEFsU2NLM1hRM1hwVldTQWgxb0lpVGdQSUExbWxXWnFrV20vZlVOZXoxcFdQZUliaGdWQkRPS2ljTmptMm5FQjVZQm1HbWFQYTNDbjFOWmtYcFBpRStobjZyN1BKYWhlZTdVakJaMXVFdStjUGROL004M3JDWTl6MnRBb3NrS0xLVm9HcHdyS29UTFZHcVd4dDJyREVseTR5c3ZMTHB6N3BHakVyUE44dDRhL3hJazlCZ09CajlNbWoxOExiWlpOaER2QVVEMm0rbFVPYUF3UmVrbTlBLzE1ZnpxaGZ5WkMvd0hBTUcrNWN0UmVUZmtEcWJoOGRoQnlMZTZhR2djZ09UcjBrZ0lPUHI2S2JJeVAxQzJrWlgreno3ZUN0Vk5yeG1vYnYyS1BCdGpwZXkyOTQyd3YzdTN5QTF1SDUzWVc0VmpaK08zMUp4UnZlTTVWbUxOMlhCelRrajlqYTJHOWNrV2UyZmIxYU8vVDNyZkFhekdBTDluV2ZVQlBtZzloTnNXM1JDVlZla1FHcXVVR0k2cnhvN3lqZWh2Tk13TXl6T25ITDV2WUxaRHFDdllYMjFzSzZmMWI2UzhSelJNWHcwbnJuMVRkS2R3L3ZkRnh0OGZNMDlQSTMxQlErcFdBOEVvVnIwaEJGWm8xT0xLcXQvUzUwTlZGb1VXSjRuaGJjZWRXSVpjSzJPZytYVUhSNVpvRE42dldCUW0rY2lpNHczMVdjS2xEWmFER3Q4YzByNUZHUGpobDRSSWhkblZuaUdxOGdEc05GQ3UwRm14bVlUc1g0djBscUsvQ2czMkhydm9zdWZ0aGx4cmJ1N3RURGhURjQrRVU1VWduK1c1UGpaVXZaSWpCWG1aTzFtZFN2TCtIT3BNRU9BUzlmaUIyaTEzQUNwNUlwaWNYK2dQRFhmOE50VGw3aTg4VmNWRlZMdlFtRVZmdTBzelNFVnlYZ3JoWUVUOVNqTTUwekV0ZnpGSWpwMUcxRmE0NzVaZDZ4dkIrYlUxdU1WUkI1c1U5QjZ2L3J2Wk9IRDBtK1phRTlwRTVrSXNJRjB5OU5UNzFpaHA0MkoxSHdvU2RsY1duZjVYbjVtaHhIemxjWXFDUDdrUlZEd0I1U3M0QW9GWW5IZWNmcUt4OUYwSXFIRVpsdlFhUVFMSnZuV1AzZmhGS0ZvNDdEaG5PYXhrQmoxSkhwVXdOSjlDd2V3YzlJcWUwVnpIN1FuQzhQeGxESHkrMnEwNGdBLzBnZStCYm9ZVGNCL3I0ZElldWF0WnZTc0xmbThjQ2ZFT3dhNGI1ZGRGa29nbEhRSEhTeU1OUnpKN2lWY1lLdTdxV3pvOUw5cmxzajNHKzNkeFhwR3R2ci9wS3dYTXIyU1VlZmoxV0Z6SFZBa0JTRXMrWDdUR0svaTZaT0VZNmhkMWVLK3JtZjVUN1phdjl1Yk5hUk9LMEJIUmt2WUxJTlRVNHhVbCt5c3k1dXdhb20rYTlHdDRieUxOMFJMMlpZWUM2Qlh5eDdDMXVwbm5YZWZwUGorTDhBdk9pRHE1bnhQYWdsVTlweXY3bDBlV1plVkRPL2JoVTBjRVFXUmhpV0lqSXJydjVWNllVeWpOalBCOWlORWFjQ1NYRlJnemVtb2VVYlFrZW1odmlQK1FUaGxDQlZxWWozOWtob1haUk9STFpzKyt6NGxkdkFRNU8xbUh1Si9JMy91TUtXTm4xbGFJNFljRnJQd2JWZVRvUjN0THQzUFg0OXlvVWdPTnArZURnRDltb2x5Zzh6bjZUN3gzYXhqcVBMTDRzelVmaW9VNmdNWEV5RkpQZjk5WUt0TFQ3d2VJRUJSQ0w5b1RkY1ZTYnpXN1hIdXFqbXFlNHJRRmVWcjcxYmV4aTZpdmY2VXVkZ0tEU2E1MlNMampGYVpmWk9TSjAwdmFYbytQT0tXeHdWR1hWUENOLzJoZnBXRU11YmZQcFZMMmlFRS9ETGlxdUNXRnlNaDE3cThWUkRnOFQzcFdKY2dmVlJKOUV5R1IxdE83RUtoYkxKOGRkZklUSzV3cUNQc3dDTjdTNUkzMm85dVh3c25pemVXSnVqNHpzVzZ4K1dHNFI3aWRXRmRYZTFadmNPRGVSaFhLanRJZ041WldJSHBaNGs4NVBBRGkyQU1KRlJ1bWtRWXVZVEZhOHgwd2xoWkFYQ2NYNzlZcmdkU1VyTjA0SHAvQkVnczdHMVFlRlJDUExpNGhZT1FDRWZNNU1QWGFMaGxBdS9zOVVJMkQyT3VnUW9SL1RPa2Y1a3U1MmtmSVdEbHI3cCs2SXg2eFk4MTMxa1pNVlQyYU00TTFSNUFSd0szNnZXTTNVV1RCRXR0WDFFekd4bXMyanNDemp4QkhEb21aWHFDR2ZKOVZDRU1LYnBSdVVVQzQyTU5PUzRCMFBlRTBHTDd0d2IyQk5HQXhZWTJlU1RpN0xjbEg2S295VWRTTkdpSE1LdVRZUUp1Q1J4Wlc4aG9KbUdiUEwzRnVETEo1V3hEalAycmxqcHV3dmVadVVOWmZvd1E2ZkxSRDN1SE1ZV08vMm0xcUdEWklNRmYrdUoveUFLa1NpUnVIdUIwajRqeTRsMmFJbHl0SkF1V3pKNFZUM3paZlRwcFVtdW5wcXhyN1NqODRieXV4WEtoNWRZR1BRUFBpbjQxNUQ2QUZidGRyeGprZU1WWExKM1g2ZVhmMmI0QU4wYmVxMyt3OVlCTGNCZ3dYRTRQRUdoZk9NV244NXc1bmRUZjlsWXJYL0hMT05TeVhwYjVwS1liMUxoNVNtZW1QV015UytUejFZQ2dKdkt6SzQwQnMxcDE0ZkVVUWI4MlhCajIxbDZkdGFxNTk2Y1RRaUJEOXZFNkFlbU9PSm1kZ1lSWFpIbzlweUYrTXg0VkVoN2krU0RMa2hYWFdnZi9IVEs3WGZmS3I5ekl0UTlrMllqTHQwMk5LcmphM2RpWWNkYWtNcUNKMXI1MVAwajhEZ0szbldrV2RyTkRQaDdScmNLd1VUd3paS2pSNGNvK1hLTnMwTEJvNm53WmJ1R2VGcGg5dnV0d01lL0hIajVIUkdvd2lpcFRMSzRrem9CK1h6eG5veGtHY0JoWldqQlZpQXF1NnJkRmJZemNudDRLTnljbmVQQ0UwWkVWSzFYeEJMS25jaU1qQmhnTUlYQllnYnppOEhxeWtoeFpUNW8reDNuWWlvVUhyN3hxUlMxQ1BjSTNjZXY4WmdRZ3dKWkNmMkFJWmozZEFkSFlwaEkwbWZaajhDeEhVRkUxRktucllEdVl5RVZnV0tIazdDWUpiVy9YL1lsdWtPYlVyK2FialNUMitURFZTTzY0M2xSbld4OE9qbUlybkxBclRzYmpOWmFKODJaZU9wV1hQNmtTbjd4ZUl1UlQwM0huYS9QVzNuWE1DbzFmT1NJMnJyQW0rV0JKcFJVOWlRT09PSGU2YVJxSG1YVExJWGdiaHVuYjNoeFVJcXpmZytMY0RoU2RvZkd4ZWNQZVpJbHUyeWRJY2ZTTlpEb0EyeGFHVk9UajFkS2R6cUtjbk1PQnJzT3duQ1YzMTRXQmFwUWZVZ0l0N3BRVXhBakJYN0RoK2dVQWFuT3FDZWwrZWo5TzJKeVBXYmo5UGJ5blA5K2o2dGhHT29Xdmw4UG5JVWZ5M0Y2RWVIQmZOdEM5TzRWUml2MHNtQWMxZ1k0ZEU5Ulg4eE12b0VXUFdGNUQ4b0tqL0p4THVDUjV5TEtha2xRajI1bUJyL3F3UnhIMUxmMXRnMWI5MWIyeGM3MTFDZWRoR1h5YXcreTJuaGwvaDMzaWVDckpWS0Y2Q1NYUVpGc3pMbHNJRFFoRXR4a1ZTTDFFcS9XR3lDZUFWTDNBLzBqMlVhQ1puOVVGV1BYWlNmR1AvRTVremU4Si9kaHFnSGIyUjFrbkdraHJkak9pY0NlMlRaR1NsaVBHMTFyUkNiVjJTZVpUYWIxZUZvYms3RUQvaHNEb0NHMnAxYStnVGwrYVN6RDBtVllCZitCaDF3QWpMQVdDbHdBVEZSVEF3WXJtaXcyQkdQUXlrQnE2dUFJMkdtb0xLSWlFdTQxRGN4RXFJVGwvTVZuOEc3NWRlRWc1ZUZEc1RIVGRFaG9UckdJMW00bHd0VzI1c3I1Rkh1WVREQ0VrSnprejNqWUorM0EvV0FtWm5vZ1JUaVlZOEhaS3B3di85bUpKYVQ4eDYzbFppL1BDTjJBSEFsYU5aZGRkdFdna2NkT0FWTzM1eUZOUUVOSU9kQlZYeG9yWUNwRWpGT0NLWFpqdWFtK3pCTjhSZk5BVWpZRW84S1RHd3M3VUtDQys4WFlFcm9DS1I1MnkzV2p0NG9vWVpROWZJclM5SEVKYUZjV0pYd0wvV01Rd3BNbUNicklqZFRwVkpxcldSblhCVGFiTUQ2QWZlQ3FKUlk3TE9xRS9qSGtLbU1FYXo4a2RZMTBkS25OY1BKeloyV0VvZUIzK0drK0ErK04xZ2tsaFJRVmQ0S3V5dGFrRm8vblV3V0RCSjdicXFTQ2xGQkV1ckNncG5KTWNMS0lZVXJpa2JJcWx0OVRaVFJyQzVBT1l5REtJVVh0bW40NE9FeWZVUWZOTlNmZ0tSNm04QWdaOWR2b3hpZlVsV0Z4U25jL3hqR2tmU2FzT1dOaUNacVdVV1R5RGRnb09XbzE2TE04L3ljaXdiM0hYVENPTWNid3FoMGVCd2JCN1pFMTZoQkh0YVMyZVN5RDFFNXZCeFlOMGhxaFZLaXJCRWdQaW4yZXlUZ21FZWgwQkFyVlBJWFdzd1FHOTRJR0E3Z2k1WVJCVWxpaEJBNG1KZUJnT2hVK2ozeUU0VlNyRXpNa1dKUUNkQnBnRFliRG5PcFVmcXRHT0JKb25KNGh4SzRxaUErTkVIOHY1MnRENUtCNk1yTzkvbXpJb3NQSER4RW1GVnNZTVEyWmtaT29neTFTNVpXNGU5N2JJMmJrQUNwV0JaV3lHVzlpUU5MQXFXRFIxTWlxOWtFaEVFQUJnTHM2cmp0U3FURVR2NWJSR2pjWmdVQzh4dll4UzZkQjNhRndNTXZCSk0rUnVuTTdRMVlTcXUvQWtHV3laMWgxNk9YTXVSc3pwalV3L2Y1TVBFSFdyc0xOeGJUbFhZUGdqYVNKSlJ0RWJ6NnRvTmMvMVQyM3NjcFdUZ2gxem1EbldPMEVKNXNVYld0RngvdEhPMTdLU1NGblJKRjZpckVnNGttNmpDa2RyajllZExJZzVWdEJwS1RvL1pGeVVzZ1pVdEFmcDJGMFM3ZHhUQ2dkVThJRXJmS2VIcThkbTFBYjZPSCtzendmYjZMRFRYL2lhNEdRTkNKNUJ0S0VDR0ZhOGp4RThBSy9SaGdjc2daTDkwalFhY24wSHE1OEUrbTlFWmtkcnlFSUxPamhTVXdyZW1ta3RGbDFWZytGYzFNT1VUZkxMKzk3RVdsQVc0dEZhMXVOdWxaeHE5ZHlzUnhTS25aU1VFRWFpSk9DQ3RKQTNQbFFWYXhjTEZkeGtJSUswa0NjRkZTUUJ1SXVFQlhUZ0xqbU80ZDN0My92cWhxMGZnN0xVNEVyNkQ0UzZ4Sm9ieEJqM1FBdm1ocDBWeHViQTBBa2NwOXRseGlwaERsSnlEVFNQMnllb0YwQ0IrYkUvelNqNC9Kb3gwTlV5cWtnazdmdXpNcFAvNzJSS21QcUROZXZLZ2pDVVA0c2hLSlpQeDZpVWs0Rm1lanBsQnBxeWRGZVFwYW5qK09nbXRDSllnWk9oNlRTUjYwVy94L1EveDVFZThSUS9YZThoNnFhc21xcVQwRjlraHQ1cDZ1ZGlKc0tBMCs4Uzd3WnFWRXd5N25kNWhac2YyV05ENEQvUEtBYWhZUWFVZ0RKTndxY2xtUmFLNlFtM3BKMldoR1BDdFUwZGZ4THJBWnh2Rjd4K3NleVQrTG5TazBQNGpVbTJNMVRqK05ZNUllc0pHS2dkeTRZTmNFcEJNNVdsOGR2MWVQV09iSEcrcGthTkZBbllUVGxpdEZBZHhqSk9xYjBuUXN2SGxVWnluRldibW82cTZXZWtWbkJCWTc4MGg5V2NwMzdqbENrNzRtbDI3dllNV1Y0dkNFUW9vTkVRVmhGdnRORzNWb0poYjhHYitqVHVycC9kZVpxZFNqNGpXYnF2c3c5ZjRFelZkajJ6MmNhYVJDWkVnUmxtck9ZcWVZc3ZzcW5FQlFDUk1oSUl2VVRGZlBuWTc3VXpjaXJUelZqM205VUcvN2RHUTFTejhjdGl3ZlNpME4vbkhISGZUbnpQeEIzZ3NvWkJIdGlpbWNEOWNjMW5kV3hlRFUzNUdxMWNxVDVKT2RsblhSUTdPYTFEVmJCaFZBWVNsR1RMS2VvRE1PVUExVi9YdUdvSGFBTkkrbzNWSi9tQ20yR3FFMkhOK1R0REJvNjRnMUNCTmxram5welZ0T1MzcmQ0OHM4b2RWbml5WEcwVUlQQVVHemVESVZlTGpnWE5qbVUzVjhtL1hDblRUSUxxcXgzOEl4UTJnMXp5SlJJY0tSMm0zSUtTNkhOZllwWW9NdlM1NXN5UVRqVGpycCtpSE95VzJVUU9uVXVHUGFjVHFkbUc2dUp3d3crbDhnUnZtUFhybW1tTGZLQ2VVOWcvNDRTWlBnVE5BWkUvb3M0RDNDRU1pSnRYTzdiUCs5Nmp1SE1ob0hhOE5NMXVUYy9MMFNibkxFT2JwRjZRQ1JwRVJ4TUN5YlpObWJqMzUyQktQNnpCRVJFcEtvWFJlQ0VJMEV0cXFsNjJMNTNKeFFRUlRET0ZvR2pIelpsT3lwMG8zMFo5dXB3Zk9aKytlTXlrbldXOFd6NEFJb3hyakpPd0RKTVdLU2xndFptOXdGVWs4SVZQa2M3RnZhSndCQ0hhcGNmUXVCU3l2WFA4b1VyMHZKaEl3R0xJL2hoaUZWdFpJWHV4cnZzUDU0RlZzWEVpRmNmVjY1Y2Z6NUVwcU9hNkZIOU9ZenBaZytubC9wbUo5SGRrS0NvbFZEYlV2TVJMZ0FYU3p1R1RZR1AyNXJNSFUrZUp1LzhEREUyM2xScnh2YVVRYTNPVmpGMDQxanE5NzM1TzJqQlJlOHBHUjRuUGVrYXhnaFZ0RTFuOTF3MDNMZXkyZFgrZWdrUDJvL1VxZmhWeDB3d0ZKamNLc0hlVkhBUlR2aUg4ZEg3aUUxZkJDQXB5cUx2ZXd4anhvV2EwREN2UEtoZEJ5N20xZTZveXEveU4xZVgzdmUvb0dmRDlnK1d5aTExcVpDZEZJU1VqcDNLb0J4QnJWMWtkR2x1OVJLRHB4bUM5Rmk3TUlRQlFLTlM1NkVudXIzSzRhTTYxUnp4VHk3WUhVbXlOa0pvRmFaYjdZdVZpNzdBeDBxRlBtWHIvMVk3RlBaT09MNXpwRVFTYlhpSE9RZVlLOU1OYnlmajM1S2dKRjZuYStkMHo1RG1FZkdhZVRVanpScjdRYVdydDRSbXNzaGd0ODhTL0hTUzJSMXlFNndnMTRFNHk1bEhscmN4bjBHcXk1WENVOWppT0MxM3J5RjZZUEFMRWNiQ04rQmExS0Z2dHVuV3luQXJJQngyeGJzeG90M3hxTDVnM0FOZXJ4cXJWeHNwWDlqeER6RENBMnpoTW9xYWdGQUIvdDJNRjJSR1hBV05BNXAxKzhZUWYyWmNGdUR6ZS9qQ3A3NmcxQUhlMkMrbUE5SSs2cDN4cUd0OHJnU1dsM1FYUGtodUEwVXhYOXNPVGlmTGNSZUhUbG40bkIwV1NaV1A4YWI5anJkVEhMZS9vbkVONjFjK0ZweGdqS1hKWFpKOE5TdTdDRFNrL04wVUpJa0JsRWk0WTdKeTVoNStRVW4rajIwM3NhcXdMREowYTNTcUVGRmt2SXV0R3J0aXlNRmtyK2pyOVMzTjBEZ0hFV2gxaDR6QXRlMk5JVnREQkQ3TkJTSVp3eTBJaTlpbzQzdnkxS0Q0bjZ1czFDWU0zVjV2R0U1a0ZOTmJIVkVVUFYwNVNvVHp0TkkwaWhTRDlJUXlMT0lGVlhqVndVMHBhRnhlL0ljTTBPakF1eThlZDJlSWJUY3R2Q29IRDRvMWczeWkzbkthV29qMU5HYUtzK1ovQ2xzci9QbFp1SERDZWVvbTc5OCtwZmxiYnZBNXA5cDVsRGVzeW0rSEttYTZmL2RSeUpoMks4bXZXNm9aYkNtSG4yM1BKYUNpS1pjODJnUXJtczJPVlNTSWtMZnRKNitwMDFXTUlISXRhMTF4RjJBaG5iUTJYK0xGaFVRamJNc1ptaTd3dWN6aHNWUnd3WjJ2ZzdiTENOUnZZWVJoTFJBblFZMHE0OWdWbmVJM2JHWE9xbmR4NmE0YUJzN3JRV0pGam1EMkZQbG1YNFg0STYrWW5iNHkrdHhweGVCb3hoc3I0b3A1VXRnRm9SMGZTdWxIQUJmeC84a2pzVVZNdGduRWZFaHlIak5vRHd0M1JXQlVSNFJ5YjVkbjIweEZYM2hTRnN4Y0huNXJGSnBhVWtOTnROS2xQN29MdWxJYmM2SmlWU3FJUjhLZlhaRnNxRGExMzc1cUVYYjE0ZXQzbWYybno3Uk1aS1U3Wi9JWFlhVk1qeEFkb2xDMWt4a1orYXB2UWRUNVQrVHFBU1pVZUtZaGduT3Y3UU5DUGRKWUxoMnRIdFJ5VVgvRnlNZ1RBaWZsaWlTOVVMOVkzazFJU01nemd4dHg1Z01OQVIwdHVCQnpNU2FnTUVaNG9XRE1JcVptb2gzYXFlODBETTZEQXNOQnhFNWhEcGRsU2RsYzF6UFU0elBqNVZzM2JnQTJsbm9nb3Fha2djejVnQ21LN002QkZoaWNiaURUYnhQNmFZcWRPTWUyVm41VE5oTlBQZ3BBdGNERWxxZkpqbE5oY1VnWUFrM2JHelY4bzg2cXN4RjRNcm9RN0h1eHRFOHVCOUgwRit5RWYzOER2RXlzeGdZU1pzYTBZZ1p4SU9tNE1mN253cStybDhGeXhQRUUrelpSVm9TR29UeXFCM1pNVGRqcExyc3Ftc21IWVg4anJldUpnR3lGdUl1L1NoejFJVWx6SkxFWjRaY1dxYUxzVGM1K25ZdUVYNCtnbTJEQXFsdmpKd05sTDBLZ0E0b1hBL1lFTEVmOWdiYkptK2pPSUhMclFTVzd0NFNiY3ZkWGNPZDFhcjR5YmxiSm1rSjBlS0JQNk83ZW5VMzRYNzgyOFlkcGhCM21CeVNCZ3E2REdleDlrWUVsVUFrRUY0dWdkRWh5Rm93bUkvc3BxZXNTV2pYUzRqcitsVjQ1akZlQmRuekpXaUUxUDc0UUw1c1RLaDZNOUVCK2wySGQxbG1TUUtnd1c2TUE2UHVhK05JUVZ6RXIxNUtNMWJ3N3VoQzdoYTQyQURDd0hLUWlXWUlkUk5SeVBkNk9UT29uQXEwalRNLzE4ZytrZE95UWxpMGpac1BGQzNVTEltd0E4NkNVMkxBaWFGY0hGZzdVTDR0ZG9OcitYOGtLRU9TQjlVVDYzTnhHcDFpbVZLdFArbHd1WUh0R0UrTjlYUi9hVHRhd2JMVjdkNHI0Nkh1aHRBTXNoK2hreTEzb3FjOER4L0t1Ylp4ZFNRZEVkeXVDTzhNSGQzRTlDelZvYVVaSHZDOER0cmVYQ3g0b2UrNm1MbzlsNk5VbGxyZmFoSnBPcWtXZ3Y0OE1WZGRHbDgyWnltaXh3b2NMMXB6RWdZN253SmRGOTJ1czRIVGZVZHdQNTN0bnY4MTliUnhudURJVGlBclJJYTZ1aXJkakhyUWE4M2ZxQXVvNGNVNE1oZ1Yyemd4MUdjSFVUUnBkMXFBU25XczdqcU9Oa0t2YjZhNkg0ZUhLd25OZXNvVWhsaGV5bmxrcWUvZ1g3dldPeWpENzJaWnZUcmZOL3MyR29zUTJvYWx1T09nWDNpQWx3UTRGN05DWTc4NFZuOStYb3BLUVpNeUtHaCs2WXRjdHBkM1EwbHovTGJObHJkVEVLQ1hzbUVDVncrRmxqZGdJRkY5MTBGY3MyOU80Q0tXTWVPa0Q1YzB3WUFkU2EwOHhOYXZmZUYwaEk4bFZNd3YyaXFSdFRXaitZUE1hT3FaTVVCTlBSWjhPTXBLcTBrdEtDdXl1dHg0Q0EwYVpRYkZGV1U2Q3pFZnF6cFN5QXBHSzlFYnVOd00rRWpDMktxajBrd2Vnay9VNGRHTW1vMGFRV1hsSk1Pc2lJQmtQYXd0UE5WZEcvajR5c0lBbnJOVEdBQXBUU3BMWWNzSk9DQVdjREJJVTVoUmRpN3RWSGcwVWFoZXZDNm1hMnEwWFNiYkNQaWJHK1lJanBYQzcyZWJ1TGZUcFVKaDNGemdVcyt0d0Z1a0x1YzdvY1BWR0xRVzBBRkMvOVBKSExQcTRueXFZaWZQWnM1Um1HWGsxTmNSQk5CMWp0STRWQ2hoUER1WURKUEdIQXU1T0lNMG9vTDRCdzcxaGcyZEVsR3BDdW1zbmtkK2pqWGdOa2NKcWpMaHhiWEQ5QUJMbGt5MmlGVUQ4WEliMjRrZlFidEp0NlJaUXc1VkxaeUxEeW5Sc3hzNmtlVXZhT0srdEdwa1pSazBDdFNIUi8xQ1lwcjVrTUtRK2l0VWtLMkQvd0JoYmUzL1p4WllRR052ZDBGWXgwbnBnbVBXQzN0U2V2a0FYYlozQlh3bnhnVTdaYWlhMXlxSFUvT3d5VDdUcWMzSmJVNThiRWhUbnNhOWY2M3ErZDRiS09sa1ZrTGJ3Wm1ibHZVQ09mUXZjMzhpZkI0YkdtSmVzV2R3ajdNYTAxZ2wxTGdhSm8rNUxrRFEwQVpRdHhLMmdMeEFNWXh1R0NTZ3VRZDI2RitKNUFZUExQK0lEOWY0YXFTcFFEdkVxZkFUZzF6T010R0d1UDJyaFY0MVpQbzlVaFBMR2RiZmdFSXBGOHordW9OWjZZaUZGNzFyMDUvZm1oVmR6cGwxTkFHdHBsbHhkajYwejFJb0RTWEVvTWVFcml4ckZEMEkyYWd4Ui9EZ2ErdjFSU29ZM3U0SlRlVGlnRlNRTUYxYUNwWTdSbFZ1eXRKVTZMTnUrZGNLY0RpMXFnNGNzY3RZUVlmQXh4eE9Db0Z0VnBsUER1Y2o4OHpTK1p4YUYybzB2c0p4bXFKb2JyMlJMS3ovSnk2YWxaeG01TVZSOHNhYjNKNTFvWDl2czVlSmFwdW1ja3Y1TWIva0l1cVpzSXFQRi8zbkR0ZmltaWYzMlR2encvaGg4Y20valVseWp1T05vOUxORUNrN1haS2M3OFhWZndLUExtUnRJWDdLRmNYTzRxWlhRdHFJenJDZGc1eU5Ub2RDVUtmWXFOd3dRdkpjWUpwOHN1aTFsTk9ldmlOb1YyQWlXemtMOFVkVjc4L1cvck1QVUk1QzVKa1lXUFh5T3haOEFzbmh3a2FnREkrQ1hWTENFSkZIRkUxbVc3Nlo5c0dnWVp2TjJDQVNUV2dralo5RG9lZlY1TVBaSldidE9PakUwMnB6QzF1V1hPcjFXZXR0TjNrNVJYem9GRkY4LzdneFFxamgrT0J3VG96UGZCMjNORXpwT0JLNU8wT0FEZnZWQlpmclB1NlV6eGpmVEYySmlrR1ZKYUFId3pqaHFwWEVCUmp5THBGVC9GZU5VdHhUTmFSOW44KzRBcDlXSVVpa085Z3UzVUpjSVU1emVTYVdOaVloVTA1aVZ3U2cyNHNQVlllMVZ6V0YxRTgxcjF5VVZJWlJoRHEwdkRhUVMrWEIzZm1ZaTU4S2c1UXRvVjc3YWpLUUVzMGtibnVEclVuQjZ5MEdWMHNueWpzQzd5NWNXWlZTUnZHU2RUVXVQUkhRZFp3RzUyVWx4U2Q1dG8yZEQ0byt5a3YwaUt1U24yUStDa1dRYkdGeU5NNWE3Z3RKSmcyS1RtU0VvaTVnREF3eHUvbkxyTzB1eENrZUt5WDVUTjd3U2pGSzRPUUllVGdMVlpXakZjK0dlVlh0UnE1ekhtVjYrT2hmQmp2VUJ3a1kwc2YvRElFOUdGWS9YZ2NGZmkyYXBGRHZXbTJCSTNxT0kxLzFrSmNKSXFLbUNaWVZqRE9FeThKVzhjeVhybGpZRDJaajY3ZWRFckRoa0FYV1QzSHhhYTZQRzdaS3ZKZVFCUEd5WENNeGdsb0lpTGhWYXlkRUtPK1IvUnpVRXRHckxKaFBjMU5vWXFBckxhMndaeXpQWU1zamdFcHl2Nnc4cXVHU1dpdDZSNUo4T2ZWcWY5dEV6cmNRdGNPWFdPemU5VStzaVpmTXh0SHZGc1pUSW1Xb2RwNWhiUXRnMEM3YisvWjVESW01Mk5NNnpIMG9aVzRXSGxPWE9URTBZMW1tTVc4WFNyZ1hiSU51dmtPSkFicERoZ2ljRFVjSElpcThFNGNrQTU0eTFNQzRRUnRtVldXUjBld1NDeWVFOEtkU1E3dGRyWndwTDFNaHRXYStPUEdHblJYSnVNOTBaVzRXYUgyaFYzMWwwVk9xbnVickVtVUJlSEFOOUVtVFg4ekxQcnp6WE11NnJUaE50eVF4MXJJRFNFQ3pHUWJXNG14WmtuK2MzVGk0UVZweitBVjZCVmlQR21hQkZHNlFyNmtNdG9takJVYldYRnZrWmFsQmhhTkVjcWJ1SldXMENsamhNSVVrb1VVcG9yVkpQUGpJQ0J4bXR6eko0TVdnbVJyK2xDRThRamtMd3dBQXlLcVBmbXBVakxHeEcwRnVRSDJIZHJNYTRzRjlPWEc3SVNEcHdQamJ5Y1g4NXdBcUpWUjlac0QzVXo0Q05CYjBxZkJOcWQvVGhlYk0xZC8zL1U0SXpYV0JPVXZHUk1CY0cvN1RnNzFjeU11VHdLWGtCRVI5VE5RN2pqZHpxc2FxV0JDT0xsMUMwQ2hTOHk1Q1BOSkFZRmthSE5CclNJSFVwWVVXNFlCTDNBaUh5SW8wQmZobk1uRXg4dElZUTkxZnhvQ2JVK1dIZEF5em5oRWN1dEozRHpBY1NnMzdWSE44WlVNTTRsTW80c25ONHRJVWdsTTBaT1JWdGR2UzlJckxkdDUyVGlxZ25JSTdKdWZpOWlNRzFjM1N0R1RNcW9zYkZHTURGcEUxOHYyYWdDMFg4K0dzczRGazNEeWpZbDZSR0Q3SnJ3QSswSmdXamFBNGVKUkl1RENqUGFIS2dpQ2dJOUUrSjlhUC9hb20wLzVyaVAzdkNjUE96N1djbm9TSnBIYTV1eDdrVXRCbkE1Z0hLR0lPK2tXOEV0NEYxaGJqUW1SMUpIazZvZXBJTm9KeVFwWGFEZC93TVFnckllRXNsYjlZOXhJYkpYM0ZZMElpOC9FcjI1Wjk0OGZDOTJFY3NNYjZha0xUdnB2MjV0ek5wMkpBQzVhMU1xaVU3SjRialg2U1pxNDgzODVPR29wZEpaNlhpcHBOZms0UGVtWGZpcFhYTG9xeUN2MGVMaU9Rc3NFUFZVYWpWSjVaaGU4K3c2NDNFUThWODBkNmw2R21RdDFRZlpTenlSOVJza1dWR3N3cjZUUnRkd1hsdGQ0Q2FkMnB6eGVMdmFjVTViL2lLQW1hUjd4Zi9URVlVczlTSzRUZTJQa0NrVmh2ZEwxTHBEbFRuR2xVcllNZmYwYWtZakMxZDQzSjgwTXFsVXNnQm45RTg0VkZsb1BqQ3NGNHE0UEZBN0trNVE2WUgxMURvbFRwdzZRb3pHWk9HcEdKZG9LenpRdXkwcGdXNGYvNDZoWWN3NnZxKzVsUXBxVDBUTzlIaUFFWFVCNFlTaGJaMUdYWFB0enMxSDJZeVpqeVVmZXlkMXdHZFNKNFZkcktNQnNuWEJhdUVYUmc3aEErV3ZmZmsyOTB3djJoTG1SZWx2UVN5UysvNFp2WkVVRUR6U2hBRVA0dWgxcnMvSDg2SzlaNzlQWTRmSDg0VzArbUhVNXo4d0tyak9YOW4ydFA4NGF4Wit3L25wL25sQndpem5vZHF6TTBZYUd2Y0RIa2RCbTNQajA3YmhKWWplYUxOZmprdzBTamhPOHljTTFRcHY1Z2Qvb2UxemhsZXFYeXRuRHV2K01EZmVPQmJQbmYzZ3kzNGI2Nzh6STNmM0hZUW40Y1R1RWZlenNVN2I3dngrblkzNlo4aldESnBoU2lUMk5HbC90YlZVZzdYUmtKNkMrdVdKT0VVYmJzdHc2UUh3SGtyd2VLeHI4UkRNbXRzeHlKTWVwWm03OFA0dXVjVDhidzBLYnA2L0pRY1ZLb2E2U2pqa1QrWm12Z29iSEM0QVZQQWQvTXFLREp0Zy8vZ3N2aFhsZVY2VmZDRW9MZ09IY2Fja25UYUVvSGxYdEZObW0xdmhsRnRsVnFONE1aQVcveGVSRFJtdnp0bkpibUhVYVd5UldCc3BQenJOS3hvdXc5dEZLNU90ak9ETTFkNEVSdE9OODlJTUUwbmQ1SWU5Wm5jTEFQOHRnTE5Yc0xkSEZLREZHSU9MQjNzNWV1SVJtMUxZTGsxdzVoV1J4VldpMTRjSW11Rmw1eWJlYVRGbXV1cHZUSVFBM3Q0Z3E5UklyTFBXKzFRVjVubjhueE9jMmlOOTJaWWlhNGRiQktZWUNYMEV3ZHNSdGpOM0k5cmErZjQ3eVB1OWlLbGtveWlKWlRNbVZudXlwZEt0N2YxLzVmRzd4WDZIYWJlUkR5c0hhVFVCOXdBR0NrMjFHYlNnWlVEWDFmbFNTUXQ5cFZsZUhwV3JnODFNd3Jsc0VlamNRWTFDWWl2QjE4dkJycTR3a0ZqVHBsYkFQTkQ0eURYWUd4R0hyS3lDdmtmcXgyMklCUTZXL1NyZ0Z0THhaRC94blMrbU1HUzlDVlFua0RzVVNuaU5wMXNJN2YyWG9UREJSWDkwclhpeDd0cENHRkpabGM0ZURJU0s2OG95Njc5VEM2YjdremMxUS9US3JENVhCMkpwZVFJZzRvcHNqOXFwMURYL1BObTFiYWgvbnhKV25pZDJkb2VzbnZTcGxzak00eGVyMWdYeFRBYzRNbnBNOVRrZVBTYXdidEplVStaVFJVMVViUllwRmxuZmEwWVc1YWgyLzBKU0c4akFVN3hKU285TWFHelg1akxmSTZKSnl3NXVpV2RSUVBISHJCeHFIQXYyV0hxbTdZU0VhZXVOazdtaVQ3S0pPVXRtU2ZrZHdxczltSmREaDg0ZitjVDNzT1pJMEFiQVJsLzl5dW1pUHJrcVMxMzBvbDNqWmY3WlhYK3h0SE1LNXlJNHRHTFVvS2E2R2pWRWN0cW9wd2ZaWlo4ZlZmUkhwZzQ0TllGR0Z5d1RNOGtYeThjK3Y1NUJsaHRTMSt2bDBORGliN0tLTWlqR3l1ekVsdWtSS3NYMjB0cllGZzQxaVFsMnczVmd6a0JMaWNmMFJFY2dHdURpR09kRzZvcysrS3lZSmU5OVNXT3ZhbFA1eDFROG5VVHY1cFp4ZUtZYi9DeUNidVpTeTF4MWswS215V3Nxamp0NUdjcElxTXJSODJWN2tCQW5jVkhHb1dDVkFjZjViR0tLV3lhT1kvWHdlYWRWMWpqL3BDM256SEZGSHJvM2ZqSm5FdWY2bkNYSk0yT1Z0bURrbDdpR1VlRS81blVXYWlkRExRcUpQMWxzMWVTT25DS0p5bWxwMVVreFpYK1NpMk10K0J3NWJSQklORUpXT1Q2TXYwcE5iSFUwZWRRcHhDTmRVRzlwNnRIa0FMbjdhQVg4cm15K2lFWkVGbmh5bVdKNXkrSmk0U1IvVGY0aDF2OWpqdGRKZUt1OExRaVVIOTJleXY4Z1RpOVB4d1RrQlMxSEFjMHhpZXBJQW5JaFViUHZuQWt6RktsdlBRbjl4U0pZUVJFa0U0eTlmdlFSb0hEbDA4cWQ4OW1abUJROTlMQU1kaG9zcnRYUnNiWlNjUHJaZTJDbTZibWxBWldVenFlQWVKM012d3pTUVFLdFZWWUExaXV6OVBicGJTbUtMb2FkeTNWZFZhZW1VaGVOdTRGc0tpTmo4d3ZQeDRJS3B3MVRsN2EyYjNnQnhhL2hNSkdTT3dMSlI4Sk1EK1pQdFFaUEVnOHAvYllBZkcwV3JZaWxDeVYzc21XN2hFMkI1Ty9zWE9GdHd6cnpxLzhrbEVPV1VlMmJ1SE4zU1BoME5tTTlZa3ovcWFJQnYzK1pyb0lTTmwxdTZGcGpBYVdWTGlNV1RST3h2QlNtczBMMkRtMElZZmdJSXJhdW9aK3kzZXhRSzZ6K2xhVFAwdW1MTE5tK0p6Rk5XdVpUcGFCdWRqYmVmaXNTdXRWY3lHVXU3ZGRsL1JlZGIrbUZVYU9HS1l0aUVLaDMrTU1kbnR2citnL1RBVUtML0lwTm9zSTE5anJRbVRTOVpFMnVoMTVkVGl0RDRKS1BaejFOVVk1aE01K3NCTXpaT2ZtRGpCR3hKaCtkY1hUbXgvTGNsdTJVdlJIRWtWT0FiZ05mallvYmdVRlJZREFXY3lYckpBdXF2NDNjY0wyamNLckVITVVtK0xWcXFXZXlvNElEQ0h1d0N3VUlHOWcxcHNzbGc4Z2tkSnRRQy9FSjVOb1FqdGI2bTVpZFVhNFFXeHhDT3Y2U01kRzBnNEtYZlN4MnMzS1VLSzFZTjBlN0VMbG1aZ3dzTWZaY2cwZE9USkh2Uzh0czFvanhNc0JReUlvREFDM0Q0UjdlVGVnckdYSnBaY0tGb0xiMU84a1VESGhXbXppeWRyZk9DTmdEQmF0dDlxMi9NQXRZU2Rzdkw1THFJSENBMU04MlpucFdEV3YxZ1JXK0I2bmJJcGkxaFlHUUpTY2EzdnFRU2VwbU9VQ1d4ampHclREdURvY3hWYW5iUGFqenRjdENSdUhhMDgrSW9Oa2drZU1lM3FVWFJYTzFHbzlMd3k1dFVhS1JlOWVLU3J0N21FVWk4b2FPcUszSk1xUXB1bHhtU3VndlJBSy9vbDVZTmVrQ09LVnpyTmFZM0FkaHNCUUxQamxaY2MrTnRRY0thc1ZEdkUxU3VZbXJiSnN4cVBzTWdOSnNHTGI4aVQybnYzT2xvYmZZRmcyTEhtQVFVMjNnZ2F2V1VnNFRXV2l5OVlPVmczV2FpNGwwQXBROWVwWmFmNFBTcGRXb3lyS0Y0azU3SEhxcVFUcHBJRGVFamN2dlZXb1MxbS91eWFYb3l2TW5IZUxvditoMWRqcjNDN0ZYa250RGN2MHBtdWdRSm5tVnVJa2hLMGtSaXNML3RCQ3hUeXRQRFRPMW83bFdpYlMwbUx2Ykp2THJuVk9sRmhxQjhuRnBhdTN6TEhGTFBkTGZYOENXb1FOSW1CS01qMmhlSElnZE9kU0tqb1dVNjE5RnlUOFl4KytJK0tZb3o0UG1vRTU4cEw4S3R1Z0UxY1cyNkRETWJubm9OYXh6M1RWcXlCMFhKbFg3WGJkME9EVytpZjNsKzNqZElORHlqQ1NrT1FRbS9ka1JPWG5IKzFRVUVVaDV5V2srTHlXMHZ4UE9TOTVuK3ZGVklNeHFsWW0xbXo3eGJPaHpwclc4aHNLUVhRMGNxeEtTVXhPTytUcFpPdEswWTZkc3NsYXRrdy9pU25QSGlyK0FEU2Jkd294MFZYQVF6U3J0SC9WOHpuWGE2b1ZLeVZ4alM1ZzFGMjNHalBXeDljTG9TZy9qOGgzcHhtYkplRE1vc0N4Kzd3a3ZiUEZFK28xdHFyTnFKcTNqMHJYOTA1ZFdUUWlET0x2czZaR1M1ZlFHTW82OVErc2dxb1hGTTV6VlZGT3hEYmVxN3dhZjhFNmlkeTBNdGJOOG9hUkpyQlN3RkM1OXhsN3dydzA1SWFWMTlSVnEvalREanFtMGtHeVdaNWtKOEtpejN1dDZiemlhVWZJWk4xNGJiSGkwRHR0aldnaHp2YU9WbDdwaDF1K2dIK1ZGS2p3MUo4djcrY2EwWEpBK0VBRG83NlU4a24wRTZOL0ZDVUlCeFNObUNnUFFKdjBpTVhCeDkyM0luTnR6aWhEd3QyUi9QSXB0dUtxdUMzZUZudnhzWGdvUGhlSDRudnh2T2o1aEJZbkRsU3N4WG14RlZmRmJmRzIySXVQeFVQeDJRaGZEM1hRb3lFNmZyL2tFSDc1dXZTV21icVFjM2R5SXNtQ3l5Z0RSd2NUc3NERFJRcTRKS3RBcDdadVJERmk1c2dPLzNNNVAzSWFUUHpWazhhREZQTnNSaVhBSUM5RU5pZVYzM0NkbVUvakM3ZkJmRmtFMzRTSXN2WUlSbVhCN2xySXFENDlCYVQ0OXVNQkVkU0hwMk9PN2ZGK0hybWFxZ1pLVmhMWXJneS9GbEdONS9FVzRPQkUreTBYNzQ1bVkzNUNXb1gxRFR1bjNnMkQwV3Zya3FaMU5pY2wzODQ0WG1tNU5hekdnREpjV2RKUkJzN0RiK3dNWUZKUm44K1BtUXg5L1ZENlZpTGRCMUJTSUtTdm11UjQ5cEVONVFaVGFIRUkrTnUwUXhYV0dXZk11Y29laWVVYUhNTlo4d3NRT2tCM1dvd3lzczVqa0tpMG8zTTJDM1BpNDJHMExCYXFxOUVZOG1VVi9Vck5jTm9JTWQvREl6ZWFPU05uSnBJMkc0eHFVT1UrSHZHQkdONUJyV0RWemxEZDJKd3Zyem0wbWU4aGdnK2h2UEJXenQwSFNpQnFSRkhlMjNHT1REVG02ckEwb0FrS1pTeDlFbVFvcEhQbWJ1a3ZVR1N6dHlpRTRISm1MRkhzS2NJVnlNbDdlOCtESFFyc0I5bjVhazk4N2EzN090elFkVEhpT0RUMW5LVkRNVW9rWVZSVVNraVdaakZUbzhLS3lmVG5sSXFZaXVQc1BqYmZqdWYzVXhVcWRSK3FRUm9ZWXJGN0ZPVTZPZEFIQkE3L3dzNmlwRnVXbllVQndLbjJ1UFMwWm9vd1l6OUphZXNFcHpGdE5teUIyWlpvOFJpNmhtQUJISGx3czVYN3dCZkZZWU9mN1F2di9kNVpjRjRJTHF1eW1PTlVHVE9XS0pkQU5vRlErTnhJdmtUNGlmZVp5b1Bzd0t3RllRZVp2TDNDWVFxMkQ2SjZ0R0N1aURFN1RGNE8zVlJnZ2NBeWpvOEwyb3ZhQkZ3SFVEYkFGTCsyMmY0Z3dRNGNnSzdMSmEwNGp3UjNlSjJMR1Y2b0MrTFZ4SFdIRnI5cjdzQjZiSTVFc3VuZ2o4WmtsMU1ELzJkODJOVVVLVkM4ajloK214cjV4cWp0N2RTU2YwNmV3QnZidjhuVUEvYnZOMEhwRVBXVmdqWU9PSjhmc3RoQVJjWTl1clNnb0YxRG51eDJJeDhhczNwUlVuVDYyU016NmZXdjVVSE41SmpsaVlaVmN3cHVIaEdYQ1JBaXFOMGREcVh1Mi9yWXBwRlBvN29YUkp4dHY2b0hiUXdkOStMR2gzMElEUW9vMm5VV3d1NzdWQnlPejkybkR4SEFwQ3VzaUEybFZXbHgxSVFaVExrRnhWdW5aTUJkQ2J4V1U1elEyenBuZThPbm1rYUpBdGhDdUZINmdCWDh3ODY5Nk1hc3ZRSDMzR3I3NklleVBVN0YrTXpNUlZMOGJCYk5yZFVic1NYcUN2bS9abUwwcFZFMkQyMENjRis1a1lUQ1czaUl1c1p2RjZPbW1sancxdkdKTXJMbllXYnpIbStJOEU4RzlQdWVsN2xnM25MV1prUnRUTUMzcy9vZVNnWnZVbFB4aUZ2S1M3N1VSZlArOC9RaHFncTBTZm5sQVhYZHMvL2p1d25xak1iVVNwRDlOU0JiU0pHbzNxZHA4K2pQQlp5bmFyREVYMmE3N1FoaU4yN2ROOCtpbjVTRDNaak43aWhQNGUxTms3SWtHejZGN2U1M2toU1FlTFo1T0tkWVVmNXR2NEh6Nyt5dVduQWhya3RuOXNSVVRPRXBzSWlVdWc0S2JWblhzdjREdEVFOXJzcVdHY090dUJRM1NSRWx1eDV3YmdUdlZIaUNFWlYzWXc3eC9KWUp6NnlZam9maURHR3hSenNQUG5ZdUR0OG13Uk8zWW5BaFhpbkdxeEM3eW5OZHkySXA2QnQrd21neTduNUlwRHlteG5GeFljWURQM0FjQW5wOVE2YmdDOU1mWDZZdWV3STRabkJST1kvV091aDBOK2xFRml2NkVWZ0tYdTNzZk9SOTNJcDV3ZUp6WmUvcjYyK1dQa0cyd0RsSjRlUzNQZnBDbWVFWWxIbk9palQvSmY1RUdlcDNqbHBBK3NnTVU3MmdpaXhtZEovREM5SXk4dEpJd003RmFldVdqbkYrSDdIWWxPd0ZTbi80enJRNmU1b2hhMG5tdUJXay94TGNuZUhLZkl2cERRdE51bWRyUC91SjAvYVR1NXloNWM1TExSYlQrSzN3UWFXTm1OZUZCWnZDOW9LVkswWjBETTk4YnNtTUZXaWNhYm54dkJHbzQ1WU92TUhEWGVyZmZvV1BvQk9JL1dWWnBQbU1pRCtWUmFKeE1sMWhidE1NYk1ES0V2cVh5Yk9DNEpYSjlYOEhSTDBuenhibk1qWUpEZ0xyc21sRk9FNlVKcDRHWXJ6QXNUNjFSd3NGWWdWT0RqRWZxYkNMbUdvdE92RXljcS9rdnk4a0JTNGV2eGZoaXQvaDhKUHBtTXlieUlPUnFEckd3dm1FWDhFbXZMT2hhejZIMWZUVXdUSE1CTlFTY2xsdHlmU01ST2NsM0swM0RFb3FLVkZ6VXBFZ2tFM3ZGdk1vazd3Zmcxd21wTU9ad1lpb2JHR2phM3BkZzl3OGMzRnIyUnFoVnlyTWl1OTZoQS9LSTgyOVdSSm55bDdYckhuS1ZGcGlYZldEcUFoZHR1U292VVdTNVh4clRNa2hWenhkbzdkREFmUFI5YXBuT3dkQnR2c0hkSEpEcGYvZEZtNFY5T3g3bEdhdzNieG40VEhPajZ6ajFYbDkxbXRkVzZUNm9rVkI1YkxLS3dpQ1M4S0I5VC8valZvakIwYVA5WCtyaytSN0Y4U011UzZ2Z2VtNkJ1ZG5lMjVFMXV1Qy9JRE5YN0NJTDM0L0s0V0VONHY3QmlJQ2thTEIyTXdaTWpkUkhRTXNtaE5kbWlxMTZVc2g4RjM4d0swOUFkWFlZejROY2RteWNJejZLQ05RYVN0V2l0OHhlMmFlUy9yZXNIYStGZWpNYmFFNzZ3c0gvTjRvbUFxTTlsRk54eHR3NjlKbTNUU3FFeEt3c1h5WXNMbjhYdVN1TmZqVndIclFVcW1sWm5OOU1Cb1Y2ZUFWN0crSnBLS2dSRURkMSs3M0pRa1JCbE9pYjVWS3M2UCtSN2l3R1hjQUdWSm1ldjVqdDd1QUhzNXhtSGJkQTNIUFV4UTEzN1Yra3d3endrZW1sTHROWThhaklubzA3Z1VscG1jVWVITDdRM1Q3cHlsOCt3UzZoMXQycjdtU2NDRFhtZndQajJGL1gveTk5WVk0UDhGN3F3dVVKNmFzNEpWb3phQmpQWkhRUWw4NFVBY2xMSTBSa090YThFdHl4bjBUSHVwYXJyK3ZPVXJCczRpLzlZWjR2NzFDeGJkWTRBODljbUFtK1QyTC9rZFd2WGI3bldmeldiNktZMzMzeXIrcXBQNUdYTkdHeVljdVJiNUlRdk1UMUZaN012enpuN2xyV0ZDSkw1Skg5S21Tek1QSCtVUDkrYms4M1hjK0ZYdUZ2N0RUVjZtZGQrUEN5dWpLdkFZMUxtWHhxSU9JU0V5NGhSMSt5TU5ESnloTFlXc1RHcDJ2bFNFNWNlMVRzbDNRSzZaQmgzejJOeVNLN1o5NXZJak9SbHJES2FaOFV2bG5mRXAxL2UxdVlXVTRpZWd4WnJIMk5hZ2F1Vys0cm1CT1U3OWh6QmJHVEVLbktacEFJQVVrTkQwOXRkY01yeHlqbVRyQ1lwQWJJNU1EUlMySkFvcEtZSTFCWlpSVlNDcjEzTTcrdkw0cFNTS3JuVGZ4TEtvZkQzdm45MGR0bXNHM3NSUDhJVW5kVW9hMURmaFQzMzY0b3Ywd0hiVVFaSkpJMjlaWktkblZycWZVNHAyR0x1RFBZTkpMcCsySnllT1BPSXZ1a0s0djFOeVBZQUdSYk1QUmRwVlpTMTQvMHN1S0Z3cG0ydlVSUDVkVmluaGNrRUZsRlNnb3pzbXVQZ2pVNVRjTXo4eFdVcThiQVgvd3p4Wmp0QTRiRlZIWDdSdGdia0RWMWszT2ptK3FDL2lkdjczdUZ1YWYrTDV6TENmUGhMODFSUXpUYnlEZkFGdnhSRUdKM0NkRXVtZzR0MkRtdWdDVmszeDhpL3ltejFqclBRKzNFRXl2UkZ5ZzFhemlLMForK09heGUrRTc2RVoxemR2QkRJYVgwQXBxTkJhRkpqU3NxbU1ja05DdDBuWTJwemhaU01VLys1OVhva01Da1dPKzM4djk2TUFIRXlPekc2b21xR0Z1MCtldG83VVpFRmExZG9RV0ovT2dxendwbWxBMkRDZE83M1JxcE1yUDNuR2JiMjdPYnA4TzZ3cVNBbkpjK1EwdHpMNGYvSDBoZ2hhbThFNlBCczF0TENHTWt0SUI0Z2xjeVNSb2gxZlExUXpoVWNCOWpvVWlxQWJ5MHNIVnlvR21qNHpPSzVidVMwS1p0TDVBaC9QYU9pN2tHWER0TDhSZ1V3L0ZmcUtxSWJ6SnhxY3FYYXpLTE9sTUc4ZDBlM0xzUThaeWUrV1BSa1RuMXJSOHlCeUV4ZEpJbXBlN01rRDFmZUJSTEtROGIzc0dGdFhVOXVsVTFhaFhWSlBVbmlNbEdaMU13bWFqSWMyUjZVb1pJSlVSbDFrT3Z1ZjlYZm15VnNYZzdXQVoxTmVER2I2QkZwaFVOK3NOaGptV0x3aVFqc0NSUVBaVnJZOWp5c2l4dCtGUUVscEhETmxlbitKd2ZmKzVsWVhDYjRBb0hDNHloSkZsckZJUkNUakhDUGRaMHhjbWRKVzVKVldPSmtEa2VpSllSWGhjU1pvVEc2eFZYcThxZUc0azhtTC93eXdSZ0xGN3NBMVFiVDRzRHltb2tFajFBTFBldHpmbEpWUkdOWDluOEppVUE5cUpsVFJGMGxEVzVCTHROVVFTYVZJWUtRSVRXNEtvUlpWRU9qTjF4SzZhckkrR1ZYS2V1Zm40dHhvWExGN3N4d1N6M3pMVWgvVkdKc25IN20wRzhuSFNtVDNHSHo5K1lNRE9iQ2Mvd3dVVjNWcSt3ejZLSjJvQWlaZ3lQRVlpaU1kY0Z1Mk9CQXZIUndCTCtDSitOdytvUEUvR2ZYT3Q2MjRodTlVU0dmT2ZVck5iRmNCTTBtSGJmYTBpNGVIdGNxcjIzV25uNmIzMFhQa2YrR2JWQTYweHN1RVIveTA2Z1FoRTZRWWtURk1GUVFuc3BxVGVUS29uWTBERHVHc0ZEaVlXc1ptSmVkT1BTYjZCUkVoU3h4K0F2RzVOckdqaGI5bzZkaGVCU3R6eDAzWTFiYThKODlRa1loa2JPTXc4ZExzbVJ0UEQ0ckxBdmtoL044eStkSDlQNkxCWTVVaE5iZ0NwOE5kdkU2TlY4VDVOTU4zaDhUUHgzak9hcWRvd1h0c0M1SDdLbDNEMHFVazAwZzF4TUhXNG9xSUR1TTg2NVhIUzNqRTdXak5KM0dEeWoyTzJZVVNLRzlGd0ptUENQaW8ydXRVRnJnc2FzU0RHVkpOemFLVmxxY3B0aFpYaUh5a0JiMlFKTFdnTTBZTEI3SG8rZnVKN1FxNElIdXJkRkwvWjZ5Vjh3VURNcVlwZlcxUmoyeWlBY1RJRFM2N1JUQXpvUUtwYWhoVklYUnNjWDRQSk5pN0h3QWhLT25ON0VhcVhEOEFlREFaejhGc29YakRsd0xFcllVN0ZOTDcxVzNwWEJIOUEvMytGRDZ1UnpZMUgzSklXL1VZZVcrU0hKczl4ZkNDN21qcVpUaFJKTFgyR2RaTUgvVlVmUXJsTVZ6UzA4ZWZZMVVHRFVQVG1iWHFObndDM3pQQmVEMjZmQlNXdUVKU0pzSys2NWxyMjRvQk5lM1F0d3NKZG5ySm1YZUtMWEVjOU9KUEp3RUxYdWtMa2gxNkRnelo1dG1ScTlHU1BJVVd6aXdwNFhHRWt1VjJMMjNxSVlQZmllNVF6R3Y1NHJpSFEvOHpQVlpmak13UzJZUFRUeGhyeTVIem1QSU5JR0krdkxrM2lzdHBvT3gzREREWFZXdEF3cVVtZ1NPOXBEY1owMm5PMUpWbHNOeHNoWUhDUjdRM2FLNGdIcisvb0p5b2hEZGRocmt3dlhCUWpzc0k2RWMrclBDSWRHbTNFQ1FGTG9SNFRxdUptYlVmZWZibVJxeE4xNFJGbTlOODNFM3VwVGd1Ukx2cy9xUytPZkxWVXBoemJHSVQxbkhiR0srOVJZTTRkYStrOGpYQVpmbStoYUZUdS9aR0F4UWkvWWltK1dIMTY1VmtrTHlSTGxjbUdlUXhzZHJaell5MFBoQ1FSNGY0M0h4NG1McHdaM09YVTNBME84c2pMVnExVnlZbkNQM1RYYTRIbzl4TlZoWmV3TjNPSHRkTmdRRmZ5MGxoaU03cXBaanNHNE41WjVUUjc4YjNPeWY5QXlrc0VsZTNEN29SMkw0ZG5ScnJsTEtQaXYrWE15eVp0d3MzZFJ2ZnZ3ZlBNbjhnQnVSckN5bVkwcmloaGhkcnM5bUoxUnUrMElXQVZYeGw3dWF1aVQvZEdITWNuODZPWUhTRE1iSHpJWmd6SnA0RWo0UkY0VzZFQk5ZTEw4b3VZbWswVXNGVENBR3JobU1XZzczSFpYc1BNNWpITWFFdkdibitSNlZKazVmZFpCem9EVDRXYVc2clJrZ1RjNmVLY05PNlBZdWZ5eVFSWm1DRzNsT1lHRFc4eWhJcERvZVlMWXRNenNxcWdERlhDM1ZGanFqNXM4QzJ3alJOREZKNlJ6aUpRbXphbmZBcnZnVUlDTm95dkEwa1I1Z1Nkb2IvVXNRRDltLzBDREg4Q3VLSGlpYitaV3g2ZmZ2ODNqazAzRExoQU1WODBUSlJPb1RUbno1WC9yTlMrb3BIMzJERmU4Y1dEaUJWVm9NWjgvU3dZUzU1ZG12dWJyTS9lN2h0QlVhR3FZT1NvV1V5OXNadWhiay8wajlNSjRkalRHZUsyWCtHU3ZvbzhtbUZWcmJocUk5MSt3L29pMjlMRElnVExyQlg0K2M3dzFWak9zQmxBVXVKOUFMUGZTQVJacHJDWXBPNlRrTlljZUZJTjdsVlhQRitZY3VUY2JSazNESUxHUkRUcDBoQnhNaFVvMWVCRWlUTW1IU2RTVlN3QzhrMlBINU90RTFGMDYxMGRFRE1mcFFFYzRNVGt6aWF4VlU1SklwaU1tN1RDOFVVSThKNkZXWm5nRTNmRkk0MmdoVTk0YnlJc3MxaUtLUkZMd1FyU1NOdWhvQWdsdC9RbWtsRzZ6eVg2bVo1U1hYQlg0RE9SMEpXbVh3aGtpZ0d3d1d4d3hTd2dFYkVGRm13YURTeDV6V1V4dGsrUnl0NkJ3M3U3U3lRa2JUM3lmWkpoaFRnNFdOSjhOcXpqdXhiODVQT29FK3ZkRFdZU1JDRGhHYm1EVE1SblJrRWNERFBDcURMOEhvVDQwSGdoMENjd0l2WGg4clM0WmJETHpMcEFlMTBSUGNWOUMzUDh0UUFjdzh2R0ZXQ2pnS1h0elJmdllUZWF1ZmJ6bTNVck56R1RFY3o5VXJUOHozTjBrR2pkeVl5N0RUVkNDc21nZkE0ZnYrUlVWdjFrWkVkZkozMmxHVE1FWGRQa0hJR0V6Wk5DTVFBSlZIazhPRURha3pkeVZoMmFaWU9MWk9MWktwbmI3eTJJR1BNZDRKTWpBYlpDTEYxY0puM2NhRStTbS9veUZsdldNb3kwMVpsUllOd1BNNnUxWWJjZmJheU9qdFZKcjV0Y1JCSFdaKzk0WWhjTWVmbllreTlJc0owTlhRNFp3YVBXWTZySS9KMWZNR0VkZDdxc09vL1ppYWVSd3RUMW84MFg5YWtYeDBuWk1RNDlmeGxkZHhCMExxTWVDRVl2eWMvQmdjMU10NGhnRUxyTFFqUnVjb2YweTEwbE92bUxnQklUOVlqU29iYitJSWV6VnBvQmhQN0ZHdDhGdUU4MmlNWGVVVTd1WHJPQnNQZnZqQU1raUwxa2IrejBXWWdRalNoM3VvZUpIWlFYY3Y0RmFnNVNENHBhc1FadGkvMkFYc2hMU2hGTmxWWE9XVjFLczZ1aXMreG5sN3hsQWc3NFU0Z0Z4bU5pcDF0eXJYSjl3UmZzbE5SZUtsditoOXNIeXYwRkt2VkRybDJsWFVURjI0dXI1Zkp2ZnMwU0Q0Lzh4UmNUMGdxVDFOdHZrd1pKVFI2VktjbUc3T3E4cVdORFlnUHNqRGt5OVRTbnpIMXhrZXRIZFZuZ3NkOEpydmpXWE5ZbWN2N3dSMjBhUEplYlpMNkNBNVVRYVNWWDYwS3RlK3pXZ1VlMkhVTXBmMmJpbU84NDRLWWUvS3JsVXlmODVUcTQ0NElTemFrVWN6T21BelFHek5lZ0hYTWRTM1NQa3FHNzFOa1FrS3lHdU1KY2R2dlpVSXpEdE5CNzg3R1o1UFlYZ1VZcEZrRzAvVGUvT01SRmhFZFVvT2x6dkIvQ2JpNVo2aEYycEU5VXVta2ZXWTl3Y1l1aUFXSUY3eklLc2poeWV6T0xWM3NMWFhOMTBHUFIzNkRObGtNL0FxeGRRT3FMMlNiQWw0eHF5WnliLzZRc0x6aDZKTGJod1hXMUtROUJ3QVVBN2FOY2JRaDNDUG9oUktmdHN4WndLU0lHdGozRWNGclZLWnJnRXhKRkpIT0F4TXVwY2J0cmEvQ2NsZ2xjR0dHUjd0ekZmeWdySlJCZVcrSU14ZlcvTDVEQmpDS0xJU0ErYWhHMWJZUTZ5RWFuYnBNQUJpZDFWZ3JFTmJKdGI4Y2xSLzhTUmwyZzBIeHh3L2d5SUNNQjh2bDUrZXpZKzhObEVVaDRka0M2WUJyVmU1WWlnRXlCNU9kUXZmR0F3QWNoRWlZVVFWMmVMSHFINnVyVXVxWnFHblVrVWtLNEUxRFMxR0dQWkhUV2pNQmhBNDJ2c09OMEVCTm5Zb2VUVVY1dWlPSng3d0czaHZYS1FIc1V5VWozTVdPek95T2VIQ1dZTkYwdUxUWUhGcnFaOEtEZ01ickFLZ1VkdVRibHdIYllaSkxFSUtheFJVL3llUXA1bGFRY3YrbkNVUzhYTTIwQVczUkJTekx4MGVFa0MzSHVVY2UwZHpKQzNrWDk5M2ZZWm5reUp0eG5hYVlGYVJsVExlNHh6bkpqdk5RaUpkbDhicXNJcXZ1aGpkNFV5MkdUYzFNOXc0eFZGcFNHdWF0ai9mMkZDNkU2OHowK2VoWUpHaUxwajVGdDh3a292OTc1SVFUNis3bEZmV01yYVk3anMvMlViN09OOWNhcVd4SGNlZEhWcHhCMHN6UzRNOUd3bng2bWh0VElWbVBFTGhlckRXeVBsMTR5MXk3OXAwdVB4ZzlYeXRNVkZvczhMS21pcFF1ajdoR3oxa2s1RzFMQW5VUVFYSHExVm9JOVlZVkdpRmZsQ3ZHWExBSll0RzlhZURZdUJmNlUrWmYzRzRVdWJVVXo1dytmMjFBTm9RZEhTUUhUV1BLbXVBYlFaYVJNREJ6TmRwWHQ2Z0ZSODdocEpWNmhOazBEZ0pZS3EyaFNBc0kvN2VQRmgvTU9RaitPUTQvTGpvVlNLR2dFN0xJSDZMU0RiV2hYREpoU3VyM3BwSko2ZWVqYStJeTBpM0Qzd2dOMXV0RGZqK2QxSUVTMlIyZENmWjF4SmFpeTFicTdwTFhFVlV4KzhEU0lwQk1ITnRacWVtNTBzMERtUmdYbTR2WlgyTDNKYTU3TE9qUEFWQ21sODQ1VllPTXlSVVUrS0RkT1Vkc2Y4Q0h3bXU3MllVVWN6ZStsSGQ4V0RiSElqVlhaS2VRSXVYVmsyMGtkZk5OSml0YjFWczJiaWdjL0pFbXRnKzNGM3VwbkZkNUd3Lys3dmo3UUxYRWVOUXNxa1QrZGM3Z25odXpueDc2a0lDcCtCZmRmTTllS1RxbWFJT21oNXZTRHlwSGdVMzJFQk9ualVDRWFSVmFRN0hjd2pCYzlDZ0U3aEE5cStpSm85S25FcmdxNVk0SEIrK2VTSlJhd1gyQnpNdHYzeTdaTHFlY1YzOG1KK1Foam5XaUN3WklFeWIzWDhISzdjdmNrMlY0Q2xLUjRPUmt2dW9lNjBrNWdLcCtrVnlGamlUOHJQRS9Dd2tmWWNjS0JaWCszNFl3eitISkczUDgyZVUwajFWUEtXU0pPVUhFZERBUEplUks1dC9lZ3JPanMrc0JncEVsOUpaYnNOS0pjL1VXLzVaQ3BEQm5GOEk4N0w0b2VXQXdFZ05yUmkvakxvZG9NaElGWmpHTk5rVWFZSDlLRmN3a0IrTlpPMEtiZFRqZ2Nid2JJVW5tK09pUjJwcEhaTHh5c0Z4OWxpSC9DWlFrSnk4djFUOU9HQXRaVXUyN2J3V09QTWVKeG5GUjE2ZEpnWTlxNnB3d3d0WUVrSll3WFA3a1gvU2o0MzZkbXlhVXo0Z051L09vamdZdUlYT3Y5Mk9RZGNYWWRpQTBrVzJRdGw3bll6OGx4YTNSVFpObkFKZ00xQmd0SHhJRWJyYXdtZm9xdDhYa0dQS2ZKNTNpM095cmVFU3BWSWNhNWpOV1ltNXYxai9WNVNDNGwxdTZlTDNqMjk2VXlEUHRTVVV2QVlXOTlaTjFMMUhSb05NR1lUcnpGOU4zTzdQVHFraGJnQ0JxTWNBTEtENlRCL1hPNnVXYnNnRlQyKzNXYTZHYjJkSnNVZzlKbXRBNDRZWFUxV0ZVWk1SdzRleTZpKzgyOVhyK3lUc2NGRUVYdDdzOWFoZ0dKY1g2Mk9ja2l1SXpEZ3pMa01SVFkxZXVzYk5WNkI2dk5pajFWaGMxaVRMb3pJakxLOVZMYWN2WU1lZkhLU21DcjRwWVB4amFWYlgvdG5OUEQ5RHhHVjNxUDdKTXZxTHVFb2NsVWpWTlAxRFNRMHYwL1UzZ21xS1FjMnB6T1AxZldZbkd1b0NZWmlxSjRJbk1EOVBaKzVvMUJYdE5OOXVrY0xSNGRJNmMxRVJVb0FtMWVJWXVhOE9hL25MN0Z2OFcxNk9ZNTJXK1JkUS9MdjRIem82SjV5RThLY1FCSFNZZ2JvQjVLeDcwNmR5Y3NEaUJCWE9PTWNrdjV5MTRkdFJ0RTVoNzB2YVBtZGFPaGE5NlN5TTJWSW9YaVdwTG1sOUZDZUdjZDFpTGY4ZzZBN1dYMzU0RXk4RVQxTENOR2lBc0hGWHV4ZGdXMUVnQTBPK0JEcmE1aG5ucTZLODVQQU91KzlJVm5EUm0wM0wxTDdXRkhGYittb1R1SWNUSWVxcFJIUENsWVlJS1hTQ3BDNGVnUXQxNHFyMUFHeFRmeXhjMUxFdVFaenpsVlNuZ2JoK1FWVlp2SUdEaTdDR1lxRjNmQTR5VDlPQUIyU2J5TTJmanBiSVNFdU45bXlaSmNRSHZLaTByWmNjOFRFa3ppZ0x4aXo1VmFVZlZSbU5XR1BtWDYrTWROMjIvYjRNWXd2LzRpbHlQZE5JT1NmUE5WMWVhY0tqU0M4MHBySTJ2LzNENFo1Ty9sZlhZL0ZFQUhwbVJ4YVQ0VkdrZThRRCt3YisyU2FKZERtNWs1NkVGUVdtZ1J4UllNL211VlQyc3pXZlFreXYycEJzOUhhRTRkVmZVSDU3OFVKUW1wVHd1Y0Z3YnNFeExVa2hWaWU1ZnYzdkpsU1JxZ1Z6SW51SWdlZXNrdUl5ZXNzUk9PanN6VDJxM3ZPOW14VE9yWFkwZTduT0Q4N2V5QlNoczZ0YXpjcytYSDBxMFZ1NjcvT1pIdzd1TlRLbkZrTGEwVlZ6OU1RVnVWc1MvNkpZazM3ZjlKb3hISFRZRTN5TjI3ZG9ta3dnUDl1bmZqbGhSR2sxMVRKREVpd3ZlSHF2Zjk2UEFvc3hySzduTWQ2NjRSaUVrcWwvTnRDUWpGK3cyMFJGbEhtOUFlZVF6K2djU3ExdS85cXUwSTEvZzdrL3Q5MnluWGhiUWMzV0w4alhWWE1nV09oZjBWZmd0emRoK2RGVWZJbTk0OWhSZnYyVnJKTUdoTEJRNTdLcDRGV05TckxBNGhDRkdlVVFYZytNWlZ4UlJHbTl4Sm81dGRBNDBiQTB4NFFwOUdxNzdCSHo2QzlSSFdhOXdES0ZUeDVIa1pNZFk3Ly9oenZSL1Y1aHQ2UnpXUHhUNTZQK3BRcnhuQ2N4eTA4UHBGZUVkdTJOYlB2ajhRUzVQQlowWUw1b2owZ1hObFozTzVPbTRreHNFdDhkQU9ZTjZMTjZSdjUybGwzMkxTME5kZzMxTnFqNnBYbm1Wdzk2Yk9MVkc1eTFscHltVWhFZWFKQVpzejRJWXd3OEF0ay9rWmwvN2RmaGdoeElxb0VZYWR5eDYzbXM5WVlRSlN1WlhQT0pwT2VXZTM1ZzA4WXlZOGUxTDNNN1Z5Q2NsM0RKdUFJNVZDNDg2bkZYSkk0OEtUYTBSbUlLTlJjeDVQU1VSWkRKUVRCN2ljbVlVQ3dUYjRoZXpPRHJEeTRaMnB2QTFPSkxKcks4TnlPeHdUeVdPLysvY0hDaWJvSWJ0Qi9nMzRzWWN5NHRZKzV2VXBhWlZ3MnIzWWc5Q3NxS1FsV3VNS2pJU2VURnExam5oU0VraGFuWjdBV0dlVXRIVmNFTEpwM1cycUJ2SW9RenZzdm1RQUphRVpGaXVIOW5vc3BTVmFjRVhhLzQ0OTl4WngzNFlqZlBvMG51WnBBU0ozNm1hVnA3R3RnMVhSOEhQMjRVa2N5NHBjS0Vlc0s2TmtIVmU3K1JGVGprZ0F0MXhoSkRwcUZSWVhrenFCUzBoY3lIMnpwYlFQNk95Q0w0TW42b2hPeEVRZkIvQ3VBVkZlQnQ3aktUSmlnWHVzS2NlZ2FSMzdBOGdnVjhZclBwODMweDNkclBtT2s3Nk5RWmoyaTBGNmdPQmpsSk5pWmJ1anFmaktvNGR0amdtZlhTQXNtOXM1ZmNYY2tuZTBJSUlEZVkyUitvR2pRQ3RsQ040OURpVVNlZUJJNkJRR3k2TnFvWEdXUlhxVmZZN21JUWhJSVRoeXdQY3lZVnNSMVRMMmNqa2hGZmJURTVLa3FKSUk5MVkwWkZwWFRycmE0REJsSEozZGRQd2lTUTZ4WEllVVJmZGNYTjdmaWFVeE9oOFA5UVJ4c0ZpMVhVQ1pBUVF0cm9tc2ZCdStJMURmVWF4NzU2REx4akN3UDVDcS9iS3ZPaG9vc05TNEpkQ1RjZzJmTWNCcVAwbTR6alpMR3dUQ3dvK0hEajI3SVU2M1ZKYWFYTEo4d3gyUElMWk9DU2prdEtiNUhXSHZndzBGM1lJV0NMV1BBUTU5d0VTL0VXMWhaTXhvL0h6QStxVStTY1JDNGd2SlE0c3lEbGJ3SXFtMDdWL1haWmp2bjdGU1JGOWM2RU1MWUhNL200RUFUVnRRVll3eUpIV3VNU1ptM1JyOFRCSzFzVmNid0lIK2piYVhjbkdzNUJDaWF6YUt0UXczbWw5ZTZpbzZERFVPaWhiNzVVQ29tdGduODJockFPUXIzZC9ubXBHaXU2NUFiUzVoTzRVZDE3SElLSHJ3RXVLUzE2alhHcnQ2b1JFQlBjbUxTbEVRZmhObndZR2lIMkVRdVlQRWFEQm9vY25RMlRaVG1lNFdNR2NGTFRUalFvUko1N2JJc0JZTkVleGpnbitiTVBwUHNlVXFIdlFNSmJlNnRkam1tMTJPclc0Q25ZSmhLNnVUT0cwYXdWUm0rOEEyVVRrM2xjL2MyMGYrRjY0Qm5xVnlXSS9pVkcxZHJqZG1nUi9zSE1zeDVDcWlrUGRHRjhDZ2t0d0lUN3MybVhxWTBBM0tpM09wV1RsNHg4ZDNtNDkxTkt4N3dPMnovUVhzeWVMV08rWGZCbkZrMk5oM0F4VHFib0M4bjAvNjFBVUR1SXNDS3NKQkZ6cGMrdk4wNjBsSy8zQXBqdXYyeWNzV1RxdnFwTkYwN05XUnRPQ3dTU3pHMnBsV2t3YkxGeUFLcTlTeXI5dXJUSUNLREhHOXN1M0RqMVFqNlNmeTJTSUlXbmRucGJEMElDM2k4NUlmeE1JKzFjSnJsWHFuQVozQnFlckU2NzVrZnpoeHl5ZjVBdDJabUxoYllpMmwvM2JQZXhuRlpJOVVhZ1J3WDEwMk5BUHpvL01QekQxaUUwQkg0WG1tUFFxSWtpWGVKbk5Yd1hyL3o1Y3Z4UXkzSE5VekJrVEJjcWlrTjlXMmowTlUrbG9IRzVhNjFsaWJxQUtvSDJ3OG83aXZsV09Wck5oZG9hKzFCUWt2QWtuK2FGdlEwYS9ESXFMYU5iOEkraHVqdGFpcHJZWDlNclFCNlE1R0tEa2lwbDRrNm1hTkVLaXozYU92SnZSYTdFazZRVFNNSExRZnJlcGtCY0tLdythR09JR3RoVFlwVk5wOGJTWDZnNGFOM2xIa1FHeHdyUStEWHMranRGM2J1ZFVGRzhsVGV6aUNLRCtFNVNmL1lZVnR1bXRNNDR0ZHo1aWxoZlhkODhkU2prdnFYWUZJRUkyeEhTNkNiYStsQ2s2OEhCTkpvRnFKaStVWVhYUjZVVnVaL2ljTFZQaHJnSkJEcUY0MUpxWnJza0hNUS9ZOHZMQVA5MHFaOG1nWEErdjdhekpCemhPL29FQ1lNVVNPSWd4eS9oS0NWN2w1UG02dEoxWDFVVC9GdVdCUkVuMFlYMVZ6ak9UZUZYQ1YrWWg4bnloRmxBYjg5NXdtRC9YZlpxTHJpMWZEQ1FHcUNqQ0Z2SVJCNSt6QURuRG9Rak45UGRqcUJJNDVENTZNR25ZZ0pkQlpadTIwLzVEUGdKMWErRmhabG5kbDIxQnNrWGJ1YitndFlQVzNHd2RlcFdWaE14a3hBK2FCa1pTd1JCVGZCRDNRTSt3LzExcDUrQ3RhQVNibTh2YnFXeXQwMDM4N2c5ZmlsNUhqMGVYTE01SkR4KzV3d05XZ3BoTWFqV3RnSFc2NnY1RWQ5bGcxMGVJZm1yQmRoQ1BNeWlqQ0xrSkRZajBGWDB0QTNXeGs0T2JqTXB4U3JkbGZFU1RRQ1NtcGxXdjlWZGxUOTRDQjQxNTk2YVhJQXppY0gyRGxGWUl0Y0FBL1dFN0tkUnhrVlhSMEJjQXY1Skt1R3B5UXVPcitCdXVGRlVDS2JpQXBXdDUraUpCTXJnUDlkN3h3L0JheXFsckZkdUUwdXY0bGJyL2ZreTNBTkJDNmtrSzA3S3VTMnhnWVY5bGVZUGdaNVljUSttTllaTGEvakxwZ2RTTDJxVmtSK0VrV3JuL3VhL2dRQWN1Mm5wNkYyMjVNdE9VNVZwR2o0NmR6MlM4Q3ZPMURzTTk5ZUsyMnN4alZTZDZuWXVpa2p6cWo2OFFoaHYrVVpkMnVCdFhBWE9xTmg0Smt5eXJsRUR5T01OYzBNRHJFRGI5bFF0NlpTbjF6ZlR2bnpLT2Q3dVpyWEtkdjhsY21BNWJ1WEN5Tlo0aEFya1psUk5taWZXNWtpZ0dXdy9iN2grZ3NYNEJUYXVuMmdPNWJHWHhzQmlSOFFTeGFIQlp2RTJqQmtZUlNlSlhBbzRqZ1JYbUM5WEpBOVlVSU52Q2J1MktWcGRIMDVKaG55MXd6cE8zYng4c0Z1cDJFR09yYUo5MGd4OFZIL3pkNjdtU1FXMzFFdlY5ZW5taGhJZjNpQVl5YjltNkk1c1lvcDV1MldBaUVtSTBvSmJzalAzNHQybmR0VWJTVHVncG5WZTNBVVJ1MU9pcHZZZE5yc2N3QitSeUdKSG9QOXdOWEZNZGNmTW4wMGF0MFg0cTQrVFg5aXFDbUZuRnZya0R6WlRaMjV3ZWxCQ0t6ZE5EMlU1cHhVc1ZrSHBOT1JhQTJJNHludWVYSk9nZWw1MzlqZ21jOW03dW42MWlRSlhTZCtKOFc2d1hEdEhFUTVDeXlDaHFGYkFHY0RPYzlYc1d4bVJ0S1dLZ1JwWXBWaG0xblU1Mmx3KzltMUcwREorUUMvTEV0SjFONVNqNm1mbi9mUU1CWC9HQ2tuYWE3SlV4YzdnZkFBeWhEaDlzN1JHcWZmQ2tzWnl0WGlTd2ZKRGVuSkcwR1l6TGp4Sjh3TzM2YllKUmgzTTVIUmFiRDd0MHp3c2VZRkdJcHM4WjVJVmZkLzN1QkF1ejR4ZzNaYXpYZW5NUXQrcFhCckQ0SUJEL3Bkems0eWVNamFuTm4vbE1zTEphMy9TaW5ZRmlCV1RmMk03aTJ3UHpIcU1hWkVxLzlsckZtUWhDaGhRTXpBREpXbE13aXAzZ1ZLZjhCSUVwenE1bmF1c0NoOFgvRWs0RWZ0QllLR1BPVDg4WGxDeEVrRlR6Q0UzUkdQYUg5eDVFdEFtaXZkbTU4VG93UjB2RnUvaWtrMG9GWTg2Mk1xS0RlT3pBcTVhK1BVN09LdXNhcDMrRVhlQTlGNWhXMk51d1JKZ0tDUlJyNWdwUUlRcWZhUlM0L3VvR0JXVkI2ZGUzREpUWXZoRTZNOTB2Y1lUamZmZVhKUFE1bDBZZVpPZjZ6M25CM0pHU3dXeDZoY0E3SXpRR2hDbVhieHpKR2FLTjYxa1dvL3AxZzgrKzlMQnpLaS80aVYyNEY1NEpWc2NzbXk1bjJRRnltdXBWRDBRUlYvTC84YW9QOWVxNENJTis1UUU2YldqeWRycjY4bFlLR1d4aktKcUI0RkVxaE1NSy9qdFZIQnZxODNRclUwR0kxc3F4eGhvU0V6bHhVUjdlS2lVclgxQXQzcUhsQ3BDejk2NVNOb0hacitLYnJrZ1NXa2l3aUExTTJyTnJUQkxwd0RkQ1FlbUZMdUdvZGFxRVl1clVoOWgzMi9sMkFqYW4xUWM3Rm1veU00QXlYS0lHUGw4a1NNVnpPWXBMRFptUW9PdzgxR2owZkJoMlRtcTRjMGY0NlZyeVZKKzZZeitRLzl5SFJYYW1aWkcxeDZzVjFFL09JQSt2S2FVZVhNNlQwMlQ4R2Q3b09oazhHaDU3TFJoOFpXN1kyN1VlMEtpWkxoWE9HWFV6WWlwYUs5TnR5OTlObElIcXljTmNNRUZmdjNJWWczcEdna0Ywc1BaVUZGYURydWJBRjJEa2ltbU5sSTFITlkrN2o5WFlqM2ZhaEZnRGM2aGhZOFIwK2kwbWh3WGVlc1J0Smd1WVVFRDJvc1NHWE5pQjZWampvMmpnU0FKR0Z5U2Fyd3NhSDR5ZHp2eWhGQ1BCM3BhSVRrcTFOZVNEdlJvdGpXc0FtM3MyQlY5b1ROSFhxR214UU92RTR0VVlpQXFpaHRpVkovNDhGazVyeCtaQ3RlNThiN0duVi9MaGhIQXY0NG1sRG9mdWIxQjhoVEhmQVJtcTJ3NVROK1ZKd0ZoOHluaUZZOS9FRTdhSUFwVU5YNm44TjByRU9kUGI4bEgxelVSbjNtY21LU3loVjJKYUJhalEyRzFvckNOcUZlS29KdG5BL0dhNzQvUVE2RVpXdkpnU242SjR5R3hrdUhNTUh6dDZ1azJuOFVHYjZlZTFzNDZnVGZaNVlESmRxZnlsdEdmdTRhRVFTUzZCdVl4aEk1cXRQV0h1cGF2YnRIM3NWRnJSbHJPK25KMnl1OS85a25qM2hSNzN6QzZhd0xkOEVvVHJxRHZQc2toT2FHTmhiTThXNGJPUXZITGRJLzFFMDVsU3RUZ3VIU0FVRlpKZG5JVlF5a0IwbkhNeGRrQWcrMWlyMEc2anJRbHZQakJtd2p3VGdIT2psSUgyTWlWUE9Rb3dmVjExMVgva1lVMkpwek5lUW8yYjFxZDdlbnh0R2xmYmQvZXRIaXZacndaMEN2UVIzeCsrTUhVajYrVVl1bHlxbjZjZ1pXR01hUE9tdk51QnFvSUJyem9UV0tZelFmRTI5cHBjNHE1N2t3c1ovN0VabVUvaTkyVGk0TkFMWGdNUUFtdEhreXU0ZE5PYW8rdHAwNWZ6TjZlMEMyUzZackNrdWhvVGxROVZublNpWDVjMW1vcWJ0aE9ZVWZZRTE4UjBSU1JGendjYTBlcm92eUExVHhMSGtkNmpJSENnSzRnZVAybTVnR1djcmhsZzBQZXBGb2VXcG5XZkpiSHU2dlU0aTBQY1AyMzA5YkJJM3M0QU9XaTN1RDQ3a2VXVjQ5blRlTVdkWmIrYVBHWGRoblZ3ekpVZGRWd2FXam1uM3RMZ2NWVWt2d3d6ZWdTODNvL1cxSlMwcExma0x6SUUwVWpIdUZMTDR0M250RThUaXMraitnd2dZdm1QSFExUnR0UlhTaEF0b0RUdUtUaE4razZyMjB4aWEzVnorY0lINlRIbno0QnVQbkFJQ2hJRUpSMmJEN21kWjk1elZUTFpZNnQ5N1pGZEFqY1RXVzVWM1A2Vmw3cVV4b2FaanZzMjNucERQYXhZUXp5dStkWVNRMDdNU2FPNVgxakZPbmJBZXo5R0p0d3BHNkxXcUIwRi8zRndUaDZ3WENOQXdwSWtTOHZBd0Vmb2s5V0RpVTF3WG5sNjhheWhVeXZocDlpU21Ua2pTeHhnU2lTNVJmSWViMUlzTUlFYWNPam9SeEJ6UHUrRHYyL0tJNFpZUWg0QlZqcHlTUHpoNjQzeXVtQ2pWZk1WRFNVSC83ZWdwUk5ZM0FmV2JGR3RCRThJY3NkYVpzM2tyL0tOVUw1NmtpbEJWS2N0K2VTbVNwL1M5Tk5IRFhSTE1HMkhiSVlieEtCTUJZOHBqMXBNaU5wanYvZm5DUHJjRDBVcFp2ckJudVdPaTF5by9DT01ZQng1ZkVCN3VnczN4VFdXZDEyNHdWNmx5dnZsSFBUWS9jVWQyT09RalQ1c1hEaTU4eFJhRWJwcGRDbUpEZHNudTF5NjY1MW5oY2hvR3VHVDZ0amFsSFpBVXFIQ3RoNjUrTjQrbjFqWXVBaWtiN016alpHSzBvL0NoMzQ5QnE3QXBCMVgvWkxMSU5qZ1RQV2NkTWpyWFhlT09qNHVZM1Q1NmY1SHM1SVBoQmZyQUk0Ynh2Q2VXUm1vcnVGcmxJb1IvMTd0cFVqdUh6d1ZiK2dzWC96aEVDQzVVR3lUSmdOQ2JJM1Z4aDAvYzhRRTFxUGh6WmFrSEVmWkpMaVA1ZU5OSWFVMFhOelhZdE04THF5Z2hWamtTZXNXYTBrTVdFbldKQThDaFN4Vk51VTNpb3BFdzJBTkJSVEVwZWZaVzhQZW1kZXNPWmZnbVRlalBZUnhSQ2hXQmR2OXpKQklVOGdiVlNjYzFTNldWdFlNRW5POU0zK2p3b1I0RlhMSXRGZUtKdFRGTExtWVh0cWp0Tm9EN3ZwZ3c0c1lyS0daMnJLd0ErelpGSVh5bEU4dFN0N2FESlg3KzNqMHRXRjJNbkhMenVnZ0tiY0dIRHpoTzJyTXd5V0lwU1NLbnR4SDR0L0k4UkE5dFI4T1loSVJvUHJHd2ZuOHhiRFlZMlk1S2tKQ3pJNEtuakdaQ2FSVGxPV3FGRkozOWlNZ3BWZFlDZHc1VjM4azc5bFZTZFRjNGszY3FZTUd2STR2Q21aUXpzZk16b3hWV3ErTG1EMVJwclNmZE9CUlpVR0dWTXhaaHNSTDB1Q0hFdTZycEtveU96Vm01QVNydUl1OVQrRHBXMlVvM3hIUFN4RWl1M2NmQzFtTTdBUmJYeXJpVFdXYW51Y2xwV0dxTk54cCtVT3ZDRzdWY3FnRGRHYWFtMFFMNWpsWWZYODBlNVVWVEViZkVEci9SVDVlcFU4cUJEaFNEKzh6aEZMZzBON2taL0p4SmhsUGRpdVkvdlhReXlud0tYSkRDcE9SQkZLRzhuRG5QbXE3b3lNb05VSEVYYVo5Q1I1Tko3dks0V29ueVdOaDJweHlhcVk1eUt5bTlKK3JRekhXVUcvWGsyRFNqem1uSXA4bXJlN3NKSkxaL1NJUlFncEh0cnFLS2F1RFJpa2VvSGZXZFRLVGEwLy9CdWJ4VDRRbzZXQ0NLNnBqNURaYnNmTS80Wm5ncXQ4QlRaVDVRQWdkZFYzUms1RWJlU1lGTDNFUkhweVdULzQ1dnBZaWRmUzVOeS9qemdoWjdkTXBJL1FGZFgzRnhyZDRFVzR1MC8wYzlHQ1FEM1N0cGt3WVhsc3hvazdJQzFkRkIwVjVGL0JBV0Fzdk1uNUFxTTMwblZJNVp1QUVxN2l6dFU5U3hnUDZBRU13eDFhM09kSHlQeklnS3ZhWlVWTTFwazVkSEpFOEZwL0tJQ2lwcnhEYlB2R3JOVkpva0Y0VmExTlkwbHYrU2YzandXN1dGbU8wMzR3MFBoMXYxeDFlenNRV0t0MFZ2OWRObjVwUTgrdWdmZEdnN29TTWpOL0pPQ2x6aUpqcFlGMEFaalJQTDI1U081Y1F5WXJGT3p4VWRtZjBBRlhlUjl5bDBPSEk1VWZ5d2JzL1dYRFh3WWYyTm9nWEUzU0ptcFNIOHptUjhsQ2wrWDUxeW95V3kyTEorMG95TlNoL25nSTNCcklKd0l1OTROT2JkcE1XeG1XZWlXN0NwK0I2eG95bDlvT0JNZG84dGp1VVJ5Uk1qY0RRWFlqOGVkMHlkK1RvbmtaNHFMODNqYnIwVXM3WXU2TTZnemhZb3hiWEFLZkFaMXdLbndPZEdlM2hXdjdRcFB2cGtVTjd5NUdqUVZBa3VBSThHU3plWTJQK1BPRG54VWFsUHJ5bWRIOERoUDNQb2ZxREgvQ2w1RGpscWE4d2wwZGNrc3VzbzBsQVZtMEo5djEzaDhKVTU0ZGZjZHlJeHhvRjM2bTdHRG0xRG83L1BaQTZvWDllQzNJYzdwTitReGpta3VlS1ZvZ0EycS9HUWpKRFpCVjluZm9HbzRDK05obklPa2JsZ1gxVjF0c2ZNQzYzQUZSYXF1NVM5a2x3NldvMkFlajQzSlZiWlVPaWUrVllRYnRteHF2aFFoV3hBcFVPSUNwaGhlbm1jQU1lNHF6eE9nR1BjOVlJNEtTMVQ2YlNuNG52Q28vci85UFpqMjk1SDc4TmU5VDU2SDg2YURuMDM4bzRLV01KaXI4UDE3aVpCLzc5bXA3L0JGTjZGb3pKRzhYdEh0b2RaMDZENWZxWGZnYU9ReVRMRkVLNnd6cmMzUHpxZmdBbDBhZDdwSGxTdW0zNSs0ck95eG5HamVaVmIrdmU4QUp3a0RWek1SQ1VOOXR0ejV2M1FBdFQyaUp3RDFHSitwWDRhd05rZFcxMEJxNXZYSUJoUjhkQ09xSk1RMG5hMUljQnFNcTFaL2tOdTZ1OW9xSjhtMkI2TmtmMWVld25tUjR4UER4OU5SKytub0xmeW5tbU5QWEZzRlBxMmZwMzR5RkhiOFlMR3VDdVFnV1BjRmNqQU1iOVdXUXNaNGJVemxvN3ZFWk0rYXpobnNNazlNTU9Kd1dNWjR2dzkyOGk4aXI0Wk84Yk5Rakw2QkkyeTRKak9Ba1g5citQcmdsdkcza3RQQW1rNDBiZWp5cFJpb3EreGp3OW5rUFYyYWQzZDNvakJ1WjUxaEFjdzRsR3VwVGdEdVVHOEZHY2dOOEcvVE5lQVVlM1RjVHhzaVFmRVl4emtCdkVZQjdtSnZsYS94Mk9Cc1ROWFRYdkMrT09ZeDZ1M0hxV2JVQzhPbHNzemtyYStQVVFncFpTVHNsTUM2UDd2TWovL09VaW82czhBS3BDaTViM0g5TGppZ1c5TnhpTXc1UE43bU14aDNTbFJpNnNHcTVqNDd3RzYvT25jbHhleGpsT0psejZXUG1WNTdPZGp0RlR5YXhyemtUa0N2Sk5ib3craUs2MittZkhLNkgrdFRkL2diYnlXYjJrSitXVG9ocVdsYnhCcGlPVVEwL3hBbTAyZTJDeFlMcTgwbVRzejdBZEx5cnA3a1VkeTZ5aDNNUVQvbXFYZHNmVHN1eFg1b25RVDVTSVZJU2U2QnFaVVYySWhwaUJqaHdkZTJCUkNDNWlVWUQ1blZXUCtMY0ZtVmhrVzd1RUREV2Q2dTJCVVdUSjFiUjROTVhyUVVhQWgwUTVoVnZvNllYaVgvejhkN1BQT21ObStiUjRHOGZUWjh6ajFEUW1DNlVYVHlHb2JRYWwwZlViUktpT0xNOXNURXpWa1dZMndwT1VqZFFoTndvSk5sV2hKYzNwOCtjTm1QM28vOThwdlF6Njh6dWpBSDhwMjhGcmNtcDZmeXU5V0tNdHdMcnZxamFIdVVDcXRMT2FUd1hYN0UwY0lGTWpoVi9rUzFTSlYvRTVNWW9QQUZ0bmQ1QmRsUHNxWXF3aWsyc2tKV0t0M2srZFpPUDlnajZ3cUo0Nmg1QUVNV05jSVBWeU9xSHFuRDBER3hCSFJndHA4U090cVpTcUloLzVzY2l2d2Q4VHVjcHA5K2kwRlBaVFd4MW1aMUhqV1NXWW15aEIzd0xxNmpBMEJYc0tmVDIyZDVDeUVvZElnM3hXdXFCZTdIek94MHBubjJ1UXhXaEVnSDRPRSsxV1l6MERFcThQSC8rZXNwZ1lUdlJLY21hR1RtQW94Z1JZalBWRVczeTB4dzZ5NW9pYXJKY1h5QUJuNXVCbDVWdWRueTVTc0V5dVVjR01xcG1HWnpmSkpiQVJaeFplbE5nUTBvanF1VEZCRG1GdGl0OU9JMlIya1p1cmJmanJaNVFQcHIxWFpKN3R4UlpnUlNCc1YzcTNmWHFPYmM2MXc2RlhVYXhUZ3FBRW1ZM1F6REcrTlUyMFZWRCt4SFNQQVJBN1R0TVNuVkVSRkxHMzZJbzNSc3VIVkpwdEN4a3M1MkNNVzhibkZjcVAvendyRVA0WnZvejF1RnN4VzRlcTNCaDNVMmlZUjUzNUVGN3RPSVZKVDlzYUdJN3U0UkoySGlqU2tHaVR2KzM0R0lPd0VrVGlGR0NsQzJBa2ljUW94VW9UaU1pSmdzUUh6Umt4SWNlck5Mekw5bnFYNGxadGJMdUhxKzlyQkNKNStWQWpJOXp3S1duandtUFNDMzBqYmVId2hWejZqaWpkYXR6U0ZYSEFKTWFyVStwdUdvazhNOGdaeE1DbFhDa2k3M0JLZVYrRVQvK0lJV2x2OUIybGhjRDlUM0VTWlZodWlYL0tVT2h2Wmx0SThsVFlib3ovenZPbk9sdEUvZWJhNnQxWDBNYzllRDBwTFYwQjZaTFR6UkR2Vlh4aHk1My9PT2NKOFdmY2RzMWlPYVZpNlNwY2thU05EcVZhUHBZZ1EyUDRTc3FpQ0VpcnpWMU5McnJKOEYrNEhQOWV2aTNHdW9qakNNRE9ob0xqNGtoSE9BVi95Zi9ZSE45dDR0R3FTQ01DREQ5NkFadXQrVHBrTUhxYzNVSzh2Ym5iNFVQQUU4R01SWmlWWW96cEZLOG1iYWQyNHliTXpGRnpsckVCRUhXaTVtd3owbytpSmx2VldFUHVCNzFrNGlSbXM5bEtzeUJGRlBaOEc2REZXRWNsYUdETlQxQzZyMVU0eFluS0ZtL2pra3hjOThjbUxudmhrSTFPREpCWXBwVkVzVWdyVGxJOVhnZGhlaEQ3eisyZGNSTWJvc1FBTVFpakdrUVRFNXk4VVhsSjA4NlJvR2duQWFHSytvTGFhK3hEVTNaQTVsZ2NiZmVxTUpKK1VXNEFWV2Q2MWRXWkNVWEcxQXhkYk9PV0p1MjI4OWR2TGdzUEJBTDdKWG10ZU5JQ0ZGNFJsMTRrSmhaQ3dpZ0haTTFsNGNTS3AyaU5GU0EzaE0xalo0ZUIzVEtyNzUxaStHZUNRS255T1paZE9xSit2VUpOVWRxSTA4UFQ1MW11NFY0dkFFSnVWTDZmYTZjR1F3TmF6MTdEdFR0NzN1ZmtkS3MyMFc2d1pwZm5PV3FKQ1JzaXpLSGFETHhubEdnczBQcnFRejVHSGlVYmlCUU9NWFU5dEgwZy9weW10VTFsTkFJd2tQY3o0Zm0weTdHc3NuamVwRXhHLytXVmhLZElvSHltYmJmN3RwS2F3ekl1TngyODErR0ZqaTNDc1FDbjFEaUwza2k4TWZoZ0dMcndKZVAxQVNxZUoweHo0NCtDaW1WTlNvQmpMcU1WaG5KOTRjMnFWZDdOMnhHazBtTXdJaG1oQStLQ3E4anpmVDdiSEx6TWlnOHNKVU14N1ZhTHZqUGM4M3h1ekhQQ3lQNzhkWDMzWWxTR1V3NlhEOWdwUHp6LytLaFNzdFA5ejE4ZkVJOEhHZTRaNm9wd3pYMGtrS2tRcHhEQUNwSVNUNnQvRHBJZ3VvNSt5VFpWOHg0SEFrTWdWeHNWSjFUNTVVb2NML3VXVlpuaEY1MkRJOGZYMWJUeU5raGs2bHU3Vlppc2dpZUFQUEo4Y3JvSDV3OUtMSmV2M1UveitwQjNaaXYrNzY4WE1EVWJnNGFyNm1qNjg4R1JmN0t3ZGFOYUptdXA5YitvdGZXVjROVWw2TlVSb1JLSGtKZXBmci9VOVFjNzVnMEpDeGNOODFwRlJxUGpyL0dVVks3azltYWVUT1RuVXphVEh1UVZsaXRQSHFKR29NaFd2eEhWVnFJUW5Jb3FxTkpXK2tNUGRiSW5kbStqYmNidTlDUElwSTRNcDNUL09PWVBkYlRLK0xwTHpHekFUeWtrS1hzQzlRbmpSMHVoSDdEbFl1dkl1ZExJMWU0RXJsYUVpYkFIQjl1dTR4aGVUekFDeFpHTHBtMVhzc2Z4MGVGSmllMXNtUnRUSG1mZFNJemFzWkxqZ1lPd0szcHZFNGhxSFpPYTNrT1phZHNydW9Nb25TQms2dTZjRXpxcVlKM1U5K2JZbTRqUERPWklnNGM3NW1aM0IxcitISnpqUTdqS3lrQUlUbllVVnN1cEVUd3RDWHQrUUZzSFRjWnNuTTJKM1RFeTlqY08wbWFtZGo3bG5iQ2pHWVNPblE0TUh1QnZOamoydk9DU3JRVnRXeTNEZ29ob0RZL2xhdlBObUdDbHZPdVdQdnhGMWRNODlTK0JlY2hwTWFQQkxpWm1sMG5lbDQwVnhQeEVXSzN5MGYyTFpLaUFMbkdnYzVXMXJpNmsvc0Nxc3N2Yk5zQWR4Sm14bTVIcVFMdTlIbXNyVWFER3pCWUxJSExqQ3prYzRJenB4UlJuaXVmVXdWVGpreVZIUXBkSS9wdzlWOS9rak4yNFFva0tGZS9jNzA2TkNLeTR2MlkySGEvVjlUYUZUQ1IyQnp1Q2hVSGhLU1Uxdzh1WWVyaTZPc0xhbnFMaU1WWWdtVW5tLzRYbDc1UnNxRm9vVFNBVEl6dUtZa20rcHBHODFBOHpCVFVOOWlsT0pSQjRPV2pMRFk0c1JBazBOZDF6ZFNiRjJ3WFRQdlBxSGpKb3VQTUdRdzBsOHFSUkhZUlhWS0tZUHhWOHRReGJ2WlkyOURxc0ZRblVPWVdiMlhIaHFuTUNHNXNhV2xEdkZiUlZLb0NLUlU5YUg1RVhEa2dtRFQ1VUZJdWgvRVY5WDRyWmh1NUw4MU1BNmRZdUlnMTlzNU5obTh5eVNYOTF5RnU0eHNKZG1XZWFFQjNLQ2FRWXR0L3ppUnJ1QVhSaERxaHBPQzQzNlUzMzZmYm92WnFWNjVlTVRDalZxdDJqYjJlZHBKRHVydGNxaFNyM09SaGQyb0lxbzVQekc4N3NLK1ZSU0d0Q3lkcVlrZU5XaWVtdWJkeG5HYWFRSHh2cE9DaVl5cGZacXEyRXNiV3VIRllDSWIxZXA1cUd0YWxJaGlabzF2WXJ0M09RdUJRVlJEanNWcUpGK1dOaFA2amdtUmdRcmtJZGJQY1E0dmdNRkJHQitSeGdYWWxZbzdNTlVhNFdDYkcwZFJtdnJLRnZmTEJYZER5cmw4elgrSXhCbEwwVHB1a0FDelRnVEkwRnhZelF4M2dpR3k5Q0dpdFgxaTNhemdkYjM0OTNhaE9IMlQvRmxVTC9qd3VsQXFOdnVuM2owOFhQZCtqMU9GYU0zNk5nUjlrd0M0MFVVK1dxU2xNNWRYb1oxVDhqWWV1a0dlTjdsOVRkWEtmZEhJQnVrSHlsOW1YYUJ0aTN4eFltVUMzZEluNmlkUDRwQmhlTmJxejZTMzRlckxTRmlpWGdFQ290V0lqZGFtclZvT1BDYTdJa0VCZ254bGN6S2lHVnhSRjhyT3luUnpYUkpyTnpXMmFFbjQrdHFsSllqbTJPMllyemFkWU8wTkJKNktoWDdJSzkrd1pObE5VTEhRMVVpMnhHK0Q5ZTRscThrbWw0dkx2Qm96dFRGOVRuTTN1U0ROU3NyMEJzaDllaHJNOFIzUGc3QXBaajVlOXcxc21Hd3dIck9ScFZGenlYM2ZkOSswYlhkeXlqTVQwaGlwNnBVcmNQVGlGR0tsaU9SOU8rZVFob3pMNDk0TFRvL0UvWk9XUG5Zc3RpZ1U3RTNOVHUxYzIyd0RYOGRGTU0wYWtPaE9yWFZnVDd4YnQyQ1VVbU1BaUpyY1ZSN291bElRN1FBOTJFNjBmMmpaeEFXd2ZPSlhCL0xXcnhFRnpkeGpOTXpodmdPd24rdG9DRW8vREdxVjFuTXp0Y2hGRExaY080Y3NsdnVIN1ZYNUcrK1pmQ2JNVURES3VNd2ZHTmxwalExNW5VQWcySWpBcTc3RHRkUVlBMG83UmtlODhuZkJyZ0FkcEIzY1IxdGNIbnNxemFHbnNRa0p5aEs1bStralFLdlYxL01yd1Q3b2dTamNmVjFTY2RvMzk0Zms1YjJJK2VDZDhiVzZFMGwrUnZCUVhsaTVub3FDemNMTG12c2lhNS92NC9QcmJCeXBOdWQ0amc2aDRsMSsvWXJJRDhaQ3JPSVJ6ZktTK0s5cFZsNUhSL3Zwdkc1c1dWck1HaU1RemtjcnJNOGhSRnRMa3lIbCtwZVplaEEvbGpCa3U2L2ZQLzEzWlV6dEEwemx2YVJuckM0MVhTOEx0N1IvS2FjVkl2d2dFamZiZkNRVklhL0hIdHV4L0dvV3NzVDUvWElYMGNJVi82NDJRUlE3TmlVcVhOcC94Q1NyUXc5R1BJNG1mU0pUaW8rSWd2aGFIVXNMakFsVWYzaEdHU2N2OUozTXZIem9lOEc1L0pPaFN2b1lHS3I5cGcvRmQ4emM1cTNvLzdHNmtmL01QaDVQUU9YZ0N2Z1oxd1NWbEg2WEI2Wk5iUG5nSEV6Qm5aMDJNWHFEYU9jbGV3MXlsRzZuc1NpckJWQU9OMkpXRnVWV3RkcnBOSHFkbWt3WThYVG1kZC9kRWZJd0lhdktUVzRUelpadDcrTWladW5uK3JNRWcxa2cvYURtNEdLTzh2N0ZKcThITTdDbWl0azZmZ2VHYS9XeUI2NWxGYmFjQ3NaK0V4dWNDN3ZWTGlDamttWFBIbUJVdUhBYzNzU0p0UUxhK2s4T25aKzVPRVY0cDk3SnJ3QVZFYnhEaG1mWDc1RDF3ZEx4ekR1STRUOEdUNXgwbEJGTTJOZU15dUFuZW9rMUZaNmlFRDA2NEhxMjhxU2JSSmxuTHJGeWt4R1NvbnUxVHk3TUN3THpEOG1Xc3NWNWowZ3E5VG9rdEVvR2hkQ2ZxcjBwUmZ2RDJXNEI3UHFud3VONmFPVm9wNW8xajg4MDUyTHZ3aDNWRWRBQ2RQSU5weXovMlpON0Nnc0YxVEZxeGFLekJTbG5ybEwxVU5RQ1IyZDFhZEpZZlo1N1JMM2xBRktpN1grM2g4WkR0NVp5eHg2Z3U0a1BWM3U3K1Y5OG13M0Uzcy9lbTY0Mnhzak5KQ09TTGRFR2ZqRWI3ZFBaeVcySHJCMzRtdU83SzJRRXpyTXovWGd1RWRtRWFHZnhJZDVOTUgwSjFmWmh4QW1JTmRsQVdNVmV1cEUrTTlZSGpBUTlpMUVZY05lNDY3TFRNRlFHR2ozeitzNW1nZnhIdGo3K00yV0dVQjM2NXF0cHhmNU9xV0xDU1NwYlJWZHlIYy9taEFlWjR5L2F3QkNKY1BSZGJ1VDBBZHRoRWQ2bW1Ua0dwNnZzZytNUnNrYlBnbjMxZFY5eU9EZkpYdkVRb3A3Qm42Z2VIS01vZk9LR3pvVm9jZC9XLzc4dUE5M2N4Y3pEMGRPeVFoVFJBbXZVamdhRnpSYVB5aEFjcmNuaUlDZHIwOG0yUGZ0bHFZcTQ4Z1kraVBvNlAwQ0o1dU9nNUo2akdINklmZHVCUGJSSjZyTDhJbzVhU3h2T1VZUWRuRnQwSUhSYjhiNFV2Z3JoaEMvRW1rVVYxcmFLd0oweVJJb2o0OWhnQnVJS2U5d2xVZ05lZ2Y2YTgvOTNyRFd3VVBnTVNtMXdIM3ZYS1pEQUhGd05SU01JYU40R2dmTS85SUN6K09sa1dKSHVReW5hV1I3NGFHb0IzKzN3U2lPYWU2WVhnZERUQW82cWZMQ3d2SlBsMmsxaUpCWjhFZTh6eXYzL1JrOUlwbE9uNlc4ZEJTWXVwOFJsb01KOGlEU05mUCt0bm1RMlMwc3VzR0k1bTJrSEdPYzlQaGJIQlZQeGFINDMzUmpEOThkQ3NIVDIvRDZuek5rSjlFUHVmZUVoM21BS0ZldldYVjZVOEJ4dU85cWc0TkIxejM0T2dYUFN4aG1pTlNqNlVjaldITEJ1WDRLMytWN3BjaGVzdXdzSXMrcXVLVWZyaGQyUlNRbmg5enRtRU9rOHBqRzY0R2VndFpQV0M3bytZclJZSWcvaGtVdWRsNnpQRlFJMVRZdDQyNkEzaUhqbG11aG5DbWJMRXZHbktWZFFXYVVvWVRaU01Gb2NwbldNaDBGTUN0ODIwbWhQTkpzVVJ6NUtvRVkwZ0psaTJ0Q0FuQUlqWmFWUzl2bGFxdlFmNkRQUXllWFlJNStSMmNVNWdLejRjSzQvUUR6bk9pT0FrOTNpWnNrKy9jSE1ULzJ5STUySGlJNEluRnY0UFN6NjgxYXE4ZFBnU1dUcU42YTVSc3MrWllGTWJDVGxXeHh3ZEVONTdJK1g2Um5wYXZMeVFRejRGeEFzZnNyUDIvbE5MT2lkY2xWVzVIalNUWW1VaVJ5Vm1ZODQ3bzJYQkVhamp5TUVZRGJBcXRDZW9jS3VLeEJPWTNSNFFpRUJTUzg3RVJ2bXBLSnFNU1lIS0NweS9JbXU5dktaNFFpdTJKaFB6K1lyQnMvNVFiMnorSFFZcHZSMUdBblU3cmJtK0dtU0VqQUpXTm9EWEhkTTNDS2daZkgxVjhBZFdteitHb1pJbkVtVGQwMzkxVTFSNURHcWdWQ1h6Ym00Nkp3Z1RkRTNkRUdzT0F3Z1RwL0J2ZG9hMDQ0Uis2LzM5RTFCVXNmQXFtZ3JPYXV4aW4zcFM0bGFleitrcW9OM0FJL0ptdUNOSEVZWDBRa2lzNzQ5TzUrTzcrNW9yWVJrUmdlK09obWJjZnpkWFoycHlOZVBFbGNnQVJsZjI3Ni9ISDYwZTQzVnczdzNLVkFMMkR4a2VxUXFWSHBVUzkrZ0Z0T0Z0SzAwWXpXMVNjZ2JNb2NXMWVzck90b1ozYkpBbS9XTXNCK0k2T0J1QmhFWVdNTzRKWllrdUVyQzVHY1pDVk91KzRRbHM2VTROcWdsS2hrNDJ6SWxxY1VPemxKWTZNMzMrbWNZSnJtTVNkd2djYzRoelZRYUlIQWExTzB2NFQ3cWZIOGNXUkVTWVB3M1M1KzI3SWwvdDdBQ2lnTk55S2hzSUp3bFdNYVQ0WjBMV1dnTGU4Qm9XS2xRdnJYejBVTGxSdnlNMk1OalRDVmE0R0hhUFRFMi9GakVLMWVxcnZjamtsMmU1YUxjMzhkVkNKQmNBK0hGWk5xcUJJTVArSm9CY0xmRWlCOVU4alZ1bUcxN0FDaUZZMHpocEM3OEx5RXA5YW0yMDYvempwZ2RzUEtyTG5xajZFWnYxekxlMUpGVHk3OEtiQno0QUE4cHF6ZEZBTTRYTjR5TjAwMUdCcFpvditsY2ZEanhFWFRuRUJzTjZoM2RFZGxrWHVMQXBrMkkvdEdRdjFJbkhyWnpXOGVGMzdqc0dGT1l4ZFV6eW00S1NCbWdZRkNzTWY3bllTOWlpeTZyUWNmYk9rNkprcWwvYTlTUjdxa1BHWUtxWFM1M21PaVAxWHZKcDNaa0d2aEN3dldNajdwU0NVTkl2U2psNFRDNTVIVTA1OVNzams5VjhVQ0xXMm1yRWJINWJrakdIaGdYamg1Q3h1L25VU0MvelJoem9GWHNOdG44ZUFodmZxVlV4U1pPMDBTU1pKSk9uaVNzRjIySW1DTjc3OVpYUnJpRzdhc1M0VTdTaXRtVlpQSHJTaXVjMGtwL3RPeGdZTkRWM1F1OEp6UVlvcisrR1JnSUZJeTA5WENKQ0dlVFRCM3dUL0FPdXFSZHZ6ZHhhMmhPY0xCVkNPMWxhNTM0b2wyZmNMSVN1K2tkSERPSXp5L0hTTEFOWkVBbkFmUExXZndrUjFRTlQ1OGpKakhXcTk0cWlkR3p4TFlpQUc4UmJVNTBFMlRtZHVyeGxnNW1qSEFRaWVUSVRNblI4VXJoeVJnTUlUbFN5Nk1GL1RncFRydmYwTzZhZUJIbkluUXlqQTBnSG9JYXNMRllzYkFzT2x5b0R2bFBFNEEvS1NGNDVZWTc4cWNoWTVZUXZEY1E4eWJWYlRqaDNBVjg2V2JnWGp5aVZJd29LbzVGcGl3Rms4U2lJNnVpK2FRK2hNcHhpaSt6VUkzRXR3QWYzbW11T2pQbk9JeHdndmdNQUt6REJJSGNVcW5jYkV3TnlXTEIvaTUxVGJsd0M1R29Ubk50cWlzWjN5a0ZkK3MzTTBveVNTdVc2UFFIcG5wY0NsNDBnWWloN1JQQU5nWTdkVytZUkR6R2NTUERnV3ptMi9YZzVuVmhDeUpYQTJzakExY2VidklYNUxYS3ZMa3U0cXZ5a1dvVUQwNDZFQnl3RENDT1hUaGJqY3JqUzJmeW9iMEJBMThmMEF5UlpKMXNVbkwweVVuUGZoNG9YS2gzWW5Ua0ltYUdYdzNZMHQ0ZlU0NzVDVEc4UHRhRU9LZjZtUXdOdVdWZUYyMEdFaTlhRlRjNWZiVGFBbjdPQTFybmNucG1NY0Nyc0RLMVljRTVsQXVNME5BZ2d0RXp1T2ZJeHM3ZXpES3FENmlQV2VqSnNVN3V5WXRYdVlUY1g3M3kwc1NTUE1jTTZoZm9kYnBTaElrd0ducmN0ZHJldkRweWxWZFpDZnJ1NzNiYkpvK0xhQkZ0T2dBZzkrY0djRVBWdFljSW5ROW13L1YrMndXbU11YW1ycFk4Q3hWdkdKUWxnckFiYXRYK1EwOGFCUU81MnFmSU15WFM1M2txd2NLVDE3RUNSRExtSlFDMXo0S09Ydy9EV2p0Y3FxSDZsNUZKR0RDNVdMKzNCdU4za01Fa3ZoL0IwaHJXd1lvZ1dnb1hxVm9Cd0t6UTFTNEFTK1RyelN3aVY4cEZlbjAwVzdKTDhjZkQzUFhaV1RTK1lqYlBVN29YUnJpTWtBSGY0ZDFyb3NaRlcxUFpmTkNBSHROb3I5OEEzUmw1cENuci81ODE0T01rV21EdUUvam1uRXRzTXFtRmlrR3p2VWQvSTc4cGxjTk1sMTdvREdHbDAwOTFsbTQzTXFaOVpsTTQwR1BZV2dJQmhFb1lCL3BKYU4zTHpDVXZiQktNQnFMaUpxQmtnenNJZ0s0dm1KOWJpS0lGOG9SQ2V1bjd5Um9QQjh2VC9nYy9nL0cvV3l5TlZBdFVEc2ZFdzVWOUFtNTFTZVZZQXpUb1VTdy9XVGEvMHhha0pQc251dEk3b0hGdWR0WU1xdUdnQ3l5aVVvWkc2NVEwbjVUZ2lzaWEvV3ZLdXB6eDkveWNCNjY1T2dnYU5EeS9BY0hpMWZwYk4ydklwejNoUlFNendWd2FDN3AyZ3B2NU1DYjZjV2pnZXVFejhzbDJnb0tQcjFTQ1d6dG1hbWlWY0I3Z25SQysyZzY0b1lKMUFleWZnZGY1YnFWcUhPbXUxOGJBMmdvRVdiRjlKV1E2dGlSK25ycHoweXczUWpwNDQydWxGRWpZT1lqWjZiRTdtS3EycVFsYkQ0c01yNUdGWnhDR0YwSzB3YUw1cDFLQ1NRalR4aW5ZbkZMNWNCM1RMZkpUNzlSVEticjBoVGlXNFJ1aW85bWdKUzQrRGR4WHFvc21BSXdPZGprUG1zVy8vZkMya2hpVzFSM2RNRGg0bUQxTTB4bkNGWnQ1dkVPajgxNERTSFEyV05wT3R6ckJuNzZFRWJIMmdUSjZtSDZoUlUwVHBROXFzQWVrRDE1WmNPRGc5Qkl0WEt2Q1FHdjBQRDkyWDVmRWEzbnFLdXdZRjdNeGRpUUVUUGZLSy9OZEFCSDRXa1lERzlvQ28xcFFqb1djTDg4ekxXRTBCZEpKOGNlMmFGN0o4U0dRb0poSlBlcUcvNTVTaG5KSVYzUGlqK0Zqc2hucGdKREFFMnpBMFFrSlJYN2h6eE9tWDhBN0ZOMEZidndnU3lBNlNhRlUxcENURkc5VTVRbEpDTDloUzAxSmxLV2pkVlRDazJ6WE9nWlZlYzJsb1JDNXNLS2lnSlRRU3hCN2NZTVZZL2l5VEcyY2l3S0tOTWxzeVBCM2taZGE5SlNkZm9GNEw2ZVliOFpVMmdIZWFGQ0JlaUhPS1BOTGdOMUNUVmVnKzI2L2h1eXJ2NlZkZ3JMSWZyazdyb2NZdjN5d2hPd1lMbFhzY3d1N0k1UTZhbWx1WStBZEliTFl0eVZDU3lQRFN6a2poNFFXbEl2WmVyOEkveTdxWlRGa3liM0RIQmNCN3NKWkdsclBmalJVRit1QXBVMm9MT1lLNUg5T3RMR1ltdW5iSzVuTjFEQTNSUzZ0TXMyM2NsZlRiWDhUVGNzWklXKzdoYm9TeU14Nnd6UWtVdTZ4L0FkOTRQUUxqd3pWVGJiOGIxcnNsUmVDdmZteEJSQzFKaE5URENRU0lGbnEvd1Jkak9sNWVvb2NGTlNEVGx0dVBvVUR5WFVkSlljQ2cxRkRjNzA2d0hlTzZ6LzVOUnlRTzRwVC92ZGQvMm16RlVGVHRsYnlqYjJ2OUlzL2s5SnlzT1ZoblpaWUFtSUVadThTcUU4dmIxNUlPZnBndUFoWGhxVXhFUldCVmNWdGRGa1V1azZQYTNrM1FXYldyanoxMmR0SFdRRWZ5MzA1TkJtcHppMjBGNWp0Vk4vTFhRT2FRVzRrNVRnNGMyRjFvVHN1MFNPVk84cE9wZnR4L21LRUErckZiaUFjOFZEa0g1cU84ZzVVdzQ3Q2ZwdzUxY2ZOWXlTcDZGc2xIQlRFSkFZcGtDS2xRQTdZakxQRVJUTGZXL1pLemx0dzFxYy9KTlphOEZtY3RoNEhhZUR6U1U3a3Y4OWltR3pDR2xvdHgwYVhXS0FvS0pENGcxdW9uTm5PS1pIUFdramlNdVdZa1VnVDIzSmNjd3BMTHNETE9jZXdOR1NWRDdUajE2a3NrUWxSWnJ2T2JtbUZEOVRkTVRPS0VnR1FWUmRUOURPUVZrQlU1RW1QbEVkczVWOTlQL3F4YUJUQlM3eHhFcmhJNi85N2RzWDY5Q1NEajVDVlBZT3BTRVRodENwd2hDMjB0Vm9MZkFISHhMTVdyaFo2UWE3RmczTkxqWVhFSjN3U3FJZHhJVzVxbUlXWlFrMzIwYm1wc0VTRS9oQ1Y2Rld0VlpGSG5kR0h4QXl3dWljbFB2K1d1WjhVN0VZRVUvMk1TaUozOVNLN0RGL3h6RmNzcktnYTQwWFJ1WEp4Ym9TNmRtcHlpV29oNEhFZUlBejJKaVZrdnhOem1ubVNlN0dqL3VIWW45MUZ4QSttNTl1c0FFcFRpOFN2UEM3aDRHdXM3MU5JcXp5aUVTSFpyMmhkL1JIYkwxQzZJRzBpR0c5NHBrSUg1a3VmNTNTcXc3dmRtd2pWOGtrOHdDWlJHcEdQeFFoZHVlZkMwQzNZaHhHcnNnTTNxR0E1OUcrdytxRVlMeFJlOCt1akNnNGM2SVBITlhGQkhoSnRsTjFiRVNlZ0phb2prMGRDdVoxVlgrSnlRTVlzd25OeEFtVmxjZnZsSC9LZFgrN2lwK1hUeWFGNldqblZ1MlgwVE52R2ZBN09DcjJLL01VSGpBN2E4NmRDQW5QMGNJNWF5S1dUSWxuNmxWSmJicUZVbm90cHNaZk9IbTZ6S2lSTHhkRkE1bEJNQ05qZ3dLMkE5MFM1ekpIL1pUQXBrUVBRYjFzcjlpWW1icm5iY090ZmtCNkh3Q0tQUTZGNDh4S015RUFkazlVeTdBU3dtb1NOSmNCRUUrcXFvSEJtaGs3L2ZGTGxHWVZwZGtiUVR3MzI3UjRzT09GajVOOUREa3RVLzN6K1dOL0ZZMkxqSUQwMktOb3VVTzhqOWNIRy9YcWZ3R3Z1ajQyOGt1aHB6Y3phaTJrZER6ZXBtZk1HOW11SVhyRGtCbExXSlY5VHl3RjJ1SGlKL21JcE54ejk2UFE2ZEVJMmpJVnJmN1Jjd05lY1EzYU9XVENtUXAzTHBicTJRU2h1ZkZTaUVzR3ZkMm9GUTFhU09udG5za1pJTlgwNHpjT1BZSWdHeDdES3J2V2hadXZsU3dicXpPTG1OOGttN21yL2w1UDJtb1dWRk1EVFVwWkw4QzJVZGZrM2s1eklRZEh0QTJxTkwxdDNmQ3h1N3NVMnRzVHJkVjdqQ0ZzeTJNVVhFQ0h3cG1GY25LZE5nKzgrZDFmeDAzaFlHZHNYVEdsaTdWb1BCUlBXMmV0V3c5ZlVUMmtKNzZzWjdFQ2VzS0duSGxDdDVLVGRlVmNVNkFGR2VqaGx3QnhrMmtuU2djbFB5enMzaTh2SGJ2aEFQVFoxbDBDRTd2TGhLT1dXOStUU1pMZkZVazFuaUNkc2E3akhDY2xNSEx3UWQyR2VDZ0hwUStKdndkcnNUL1ZJc2RRdjZYM3BtVVp2TXFTL1czOGNwdW1uVTltSFlVMDFWUWhvQTR0d1JwTUhHSXczek9jR203d2xlK3hGVVg1KzUyOWg3U2oxOWJOa2c3SC9ZSjZ2dFZQeXA3RmU0RHFVdytXVDVBUzVUNEZ2aGpnTlJGZTkybFExdnNOUGFmc1hzZWF3QjNNRnhVa2xDL210czlwNFlLUm5EZy9GdzdYY0p4Rm5qcG5Ycktnd3RnZlRCNUx5L2E5NEtNSmpBRkx3bTVUSEx6Z1VndTZ0cEYxZlIwZnFQTEJJcHloOERvZWo0bDJ5eEx1bmlGR0N1UDVqb0h0QUw4YUN1MWxsN1dzdFpMMkhFWVE0dHhLWk5ZUktzOTFGbWxMWUR2ZWdWTEJ3MlNGSFRUSEFzaENCVklhZzFGdE9sS2hUaEh5WFB4Ui9DSEdBT1h2Y2VDYjRPSFh1Q0NDRy81ZHIxTDNhT1FuelhqK1Y5UU5DVndvL1dXQjN1QThrQjdEcFByODhNMkpPQ1N0RUZQbGp3OEpuVmNBRnhwNkVSNllGalhrdzhpdUtnL29mNnZVZWROK0ZJWUl5WnNLTDZWeG5QRG1KNzQ1UzBlZXUrdW1BbTkzZFdHVVpYdVZuNW8vUVFwMkdPRGJqTDNNWXd3SUIvTE9UTHllZTg5eUhkQ2xaLzZlVGVKTXpKUFMzY1FaQUxGeHJhLythMUdScnlWZGxLUGZIMWd1U2o4QWhBRmxzM1Jtd0tYM3hqUlV4RllBaEVmMkg5bkFYWkcveUNkLzVwYUlDRjk3UVhCRFNLQml3YXE0MjJVU1JuMTNpYjlvZ2duMTJETzJmdnI0TGV4S25OeU8xR2ROTnluZVpsS2R0QTdTUE4rWHFUNEMxY056TWN1OHh2WDZxQ3NnV3pnNVlTOExzZXVIOEJPMy80U2JpUjBmRUoyWmxGUzFMQkQ2T2l0Z3VjYXJrM2N0WFZ1MXdTTXV0T1Fvb2FwWFVmdEFqbnRUd0NXTzZOUGxseWdMOUtaS1NuOGtTd1N2RTNKTjJoM0kwK25tUGJ0b2wyRTk0M3czYlQ3K3dKaDNya2lzL3Z0UTBBbURpR1hJbHo2dmM4YndlL2tidEs0MDhvWkRTemRheUJ0MHpORmZCT09OK0V5aEZnWlF3QVBsMWNqVXlsUTZsN1pHVmNSZVRKYmV4ZURweFVGTkRzdDBCK29SYnloUFB5SVBVQXFpTkNZbFFNUGhyR3kxR0RUczRPRkI2dkNRbW1ZZ2xPVUZxbWsxWVg0eFgwY2crWjVPSVBQWWQ5QjZuK0dLWFpHc1huR2tOM3htYVlHWDh1VGhEU3ZEajJ1R2NQL0paS2RKbUQxdXM1MzZFVGcya1VrSm9aNEVnaEUyblloMDJvdmR3SDk4YStCeDBSVVM1K3J6bXJhUDI0Rm9CNWNrWUFFL1pJNmtUSEhrcUJoZ3N5U1lpY3ByeE53ekFVQThqSDd3Z0xzRExOMVBqSkxuajFyUGpETDBkcVNXaHNjN0VpSFVNaTBNYzg4T3JGZzZQN3p3RC9OWC8wV2tYbXBadUZqYzlUT2tKMk9KNWxWd1Q5M0ZOWEpQaGxybmFNbGhVK1lnR25NSjF5SDV4VExMOUJlTjFHTG90eFhicGRJRXRGeUc5Z3ZlMFpIcWxMQlIxTjdydTRJazlRbFNDS05NMlJkTXV6Y0FDckVrNE5GaUdEcWFZdlMzRnVieW1hdVFNL1c5Nk11UFFoYXpVTGgyUTJoZjRVczRkYUJkV3dOMzhOaHcrTVhPanlRNUdvOFN1UFlYeklCWHVaOG9LVjlwamhzVVVTaThNdUNTZTNzTmNxL3V3VFRzTDdha1hTNW1EWmdmNXJjWnJMZkdlTUFnVXVuNmRZNG5YTDVEOG9ZbjhScUdBRnhFVCtZVGU4a2FVeThhZjBxYkZ0bWx5TnM3WUdjdHpzMXpVUDJqbzhjUGFoNXJxazBNQnBoL1RWSjhnaVZVL0RyM28rU285Vmx1SHI1b2NwSEpoK2dUZjcxMGlKZFNleHRqRjEyUEhTbis2L2tMRnRrSGk3NU8vRUU1TmpabmVxRkdsb1IxWXpEVHhsUDNBWlhBTmtNQWVkWThGTHhUVzJDckVPWE9kajQ1MmZ1eGthamtycHZuVEZac2kwdVlad1dXY2oxQ2hUbEExbUhCUE1oOTZYS3Vwb3N1RkJNanhFTkZEVzBTSmVITnpYNUg4WExnaGVjdDYyQ1N4K3JXTUFDK1R3Y0pVVHpkQVpxNHE0akVsRVFWWjRlcWtWMHdaaTJMT0tSOFRBQ3kwVXF0MnIzcFFOL2tkTFZGa3pPSXdaaVFUcTAzK3Npb1YzYWdDN05qd21vKzF0VnNyVmpmdWZxSDBTQmpuOUpCWFdBK1lyS2ZieDg0ZEswSFQ5aTRDRlRsU3FLTlpmRXp0NlczSVllM2pRSThxNHUrangzelM0MmxlVXpjSFhORG91VDl5bmk4cEVQT3g1NXJMY2dIVkRrb2JjWnNpc1pXTDRxT2ppY3l1V3hDaTZMTXFJVTMrTnpoNjNLYVZ4bVQ4QmpaZFhMdHJIWXVxTTRPbGJScnBrVG1SWW5YZXFKMWZ1RytIVDZDMVZ4MzZ4bGI5V2NRTHFFZThFM3ozZzVSUU1qS2w4WUFtU2FSbHdSQ0ZadDF3RUdiMStXY2JhY1NhNDViZTBvb2xNRzJVbS95ZXhnMWNEUnNlOEx4MG9iOVFadUs4M21rOFo2d3hPbnBaaFZMTi81dUc3VG9YWDZCS1hpK3RScFJZM0JVV3BrcXFsdTBiQ21IZkJKZnBuSE80L01YeEdML0lDVWNlMC9CZWtLM2pWMGRWNmpqVUptMEFsbWFZSU5KcllHQ1ZMbFQ5STZLREMxT1BFN3puNk9YUTJ0NzNNVlJ6eUlyTHpHRzQvTzF2ZkF6T1oxamo3YVZHTUlnTlF4c3pnTUg1WWY4T1J5RFcvZnFKczlJUTdoZ0ZJRjFCL3Y2dlYzektPa0NhdlVtUlArYUdRYTZtMnZuYjM5dkdrMjc2VmJ6d3I0R2M0em9SRGRmUysrMjZHREhQYjFaTW41RU5hNyt5dER6dDJtOE9uY0ZpQjVCNmZnbU1jQzRYRVJJaWFReHN0RWFiOE5jbFU1Sm41RnRZcnpxRFhvQVIvZ3dRTlVsSmtnMDk5ZHMrSkx6cFF5dzd1ZXF0b05XQ2pQWXgrejFlZ1M5M29EUmxqc0NSSmNHMFdjNTVxdm5EZWxrUzB0YWR5ckkxb3lWczc1R21Yb2NqQ3Z6cXhxOCtxRldGOFI1a3NGWUFrL3FWeVpBRXorOFhNRHVKZnY2U3VIQjhiemxLZmc4OUdNUEhsS0VGb2h1UGx3cE1tdUdKWHUvZWZhd045azdCR2RGc2V1aVJzNkxkaXR2Z29RSUJGSnIyYVFzL2tLb0JUWnZvdTBMdklEQkw2cDVRVTBvTkppSm85S3FPcTQvL0pkb1lVM2Y5ZHZvcWZmdEJQam5OVG1VMHR0dy9ERE5DY3k0V21IRUpmeURoKzF5OCtuaDQxc2FuNitYRmVpYk5mV05lY3VxL2drQ2hFL1VwUk5iMGZOdGp5UUw2RGh5RGx2cXVMT2RUZ05SVWMrYmdGUzNuKzM1anRJNy96NkNZNGZWSGtkMVV2clhjYmF0RGREcHZBZkZPNlpiTlRndm9jV1VDd2thV3l3TVFvWGxmb1BPUmZxUHdRekdqU1FnZ2dOUlRoM2tnb0FTeng5eHJ6blFJZXpueklKOVVqaUNrcUdrOGdITWViYk9MSFBlL0QvWElmMGJzQUFYY3Q5OXpOVkFyUWVvRWppdisxNzRLak5yVVVIcVhLV1N1L0VGS0t6OGRwYnBmQ1FucTlqSnZLRkROWkN3ZWV4Q1hkQXJLTEViV2JjalpVREtlUXhRcFZWYUM2UW5HTUhEbk44ckNMZnFBeFk0SW9pTDBFTXNFdmxZb0hOTTYxRmR1RHk3OG53TmMrQ2xLbzBOT08rYkExZFlJRVZ1R2gxN2YybjZsQ3Y4TWNramR5M1BKODRvelJlMzVNOEsvbUJSdGdwWk5Dd3FKcmc3cXdtWlJlZEl1cG5xangxZFhQNmIyTmVRbWd6RVpYaU9Cd3RxQ1c1MGdydS9Jd253VUl0dTUrMGxjTjhWQlk4MVc0eHlhRTJMbExXMUxuWm5sMkU5WHM4bjRQcDZseUNKSlVFTTZQbkRZNVI2MW0yTnVvYUhrWWxyTzdMRjcwOU5lNEdMK2hDNk9Wb1ZJZGtRRHJwdzBzVWd2Y1dkY3FLV01aam1kMG9NNHdMVlBWYXFpSnJaaGxCRkZBU2pTczM1WFExYXJCbUxwL2NsTk9FZ01vZGhNWkozemNoNEdCbGlXLzVJdk14T2tSdGNBSTdZNEpObE1NSWRZaGh0QVdNZjNMVnlwMnk4S0pXUDVRaVdkY2VjVjdaVlFnakJ1UHR2RU1Nejl2ZmE3bVRQRDY5K1pvRXBkeVAxdjc4d2xUL0dTQlFVbFk1UlpiRS9GSTRxTmdidVRQckxCVkVUSGp1cmlLQko3TU1kWERWaXU4ckE2WUgwWjYvVGdxUVpOS3Irb0Uzc1d5UGVXcC8rQ0I0Q1I3WHVVNFhyYkdYbkpIbTh4N0tHTmxGcWJ2TERTd2Z1ZEl0MnBCZWkrTXpnZVdIWHFyTzViTmxsZUo2d1BpekhlaFFnekJaWk1RbVYzTks0R3hkU0I4c3RkTTRxRHNXVElTTnRDNGh0T3Q5SnRFUkdqTlJKVmIxekx5OHJLQ0EydkpnRHF5N2FUNHhPd21HNWtBK0JyekN4bzk4QXJldEE0M1pGQ0ZsWTJwTldxczAzc2VZRHI2RTFmVHFVbkFCNXpQNVdUUEx6aDhxdkgvN3hsQzJpVWNpeEZFaUFCZlNhYTBJclF3UkQxdE9PVmNSTmxtQjhIV0NaMThQRDFxYTZWQkExVm9pZDMvSCswbk5rTU1WYUJFY2FRUkRqYVg4bzFPVGg1NUdOK0NybG9UeWk4MGNoQnhSNDBmbEtZL2hEa1I1UHNvMjlCcWJPVFJMNG14MGh3a3NwK2tFcllWRnpqMGNwR3diaFhhdFBVZFRlM09LY01Lem9JMHkwYlRPRVM3Ylg3a1Ztc1BTU2ZHTGpXbCt2SDNkWXdiQmlxUWZYcVhmRG1uSS9ZTjR6alVMaE5zejAxQ1FhMTRXWlFIaEdFYnRkSk80UmRUY1VHd1l5VUxXRmZpYjFQb1ZydDZzWkhsNGNkS0dEVnhkRUxUU0JYWTZYbGhrWnY2NGM5UEhSQ3lXZUNwbzkrU2I4V0MxaFNiMTBxdE13UEs0RmtYTXdpQldtUGtnSUo2Tk9CcUQ5ak9hWWRFZDJLYkdRVFhaZUNmNm1qdjJoMGhLK1JIMVFBdS8zclpWTTE3RXROUjVEY04wVVA0WnZOamtEZ3pQV1FGVmN3VDd6ZERuUVkzV1IyeXM4Z2k1aTVBb2Z4c25uMjAzZmpuMUFya01VMHhNUGwxY0wzNUc4NTVxR3FjZmpLM1hlQms5MlB5QWNBUk9FS1RiZzZmUjU0bWN2Vk85Zmg4RTYzZXF6ZFJrVVR3YUVScG1uRWl1ZnNVeWVad3J6UXJLU3pBTHNBb3dIdFNoakw0SmdNeHVZZzhUWFAwZzRneTgxNFNmVWl4WFYvR2FHNlZLSzBVQXZBQ2ZKclBuSnIyV2dOOE1JVWhVcjlkckhocU5EYW5nN1NESlNsVC96bjBjUk15OEdWRkxzcmI2RXp1d04zUVJ5REVWMVBOdWNkbDFvR1lYRXJYK2ZoK3VRN1BzRWN1TVgwS3BhWnFQOS9IRWdSUDVtTEt3U0xtUmJVd0lsMFhiTktOdGxFc2toZnFPdnlqdVdHSVdVeGpwbFl3TzlEU0Q3bzY2TUVYU05JZWprTmNDLzJlMDdsTXhsUlJBc2cyVkRRSTJuMTdVTjNYMmdyMVZSTFkzbnNpeWxnczd3WmlSSlg2cGpvWllyZ2paNHdrbE5rMG5hRnFGWExxTzdBSUQ0U2ttcDlCTDZuRzMxQWlWNkVpakFkcGlaVVBNYkxNSmF6ek42T29Ucnp2NXF0a0Fnd1ZtelpLWWprWnFVaWYxeDRPc0xUc29CSW8vbVhjT0llMzlXN1B3SVNUM293Z1FDc2RleUtKWXM2d3JEa09sUjNVM213ZXdMdnZ3ZE5CY1JLUHFQNDdDZ21CZU1yMnJqVzdHSW5BK1hMNWRoNGtmUTkyVTVEcTJqeDNtQlJ3V0VQdmU4bzNTVDhMM3dZVExWM003SzJhZ21VakRXc2NyZ3NLMlpLSWxWcHlTa1M3TWkwWmhjcFJWZUt5ZHFiVVI2N2E1eVhMajNIM2paajh5ZTd2YmhQckM0R2dhZzNaMk91TEpWSGxPZ0o5UUNObFVReFdOcXhJZG96c1JQdVRrSTdNMXk2TmpCbDMrSEZEa1BIRURnVjZxc2gzNEZ1Smp0cVQ4cUJKbVZzMEpnWnlYeFkyLyttQTc0aWpiZGg1QjEwcVNUdnJuQ2J6MVdTWXViNFdXa25xdkxEbm9uTmJucDdnUU80OXQySkNrQVdJYWdBTGdhRWpraUxGS0hIRDdKYmVtY1FUVGFSUTUxWEZ0VnFuZXcxSnR6RzVHQjUrY05zSWJZaUhwN1p6RE5zTnR2UXU5VXhacEZWOGt2SzNpMTdUS0NHVTJ3V1hRT0R0RnpHV1lJeGllOGhuTGNEMDVuT0hFS2hkbElvR2c2YWFIazVEN3lKTHNlRnlQSDc3VWc0YmtjNU9VVEV2QXIrSmw0WHJ6TkFoZUJYZW1pMUNNSnRTSk43TWtUa3V1d1h0OUFtcG5GeGVtRjRlZXozSGRxSlQxZjJvOTdWajlIOGVpZXBQMWpHNjl4WHpLSC84ZUM0YUJ0QW01SERYN2xhTTdlUUFaMDV3ZElmUUtVSytzeXZRUm5hUVExSFJLYVRVODBBK05jclpLOW1aeFR3NSsrNFgxaGZRYk1YdDc4am9RRmJRbVI1TDhYSm94UWt1dTNSYy9EWjJCamxNT2dVK3pVUjFVT04xa04xODk3aUExZkc3eDNzeEQ0cStuZS9NQ2t2YU95NjltVmpRSE5jSml5ZktMYTBSRTZGdGhHS2QrbmV1Q1hzQnFSOVZFM2dxalorRTh2ZEp3Q092Q01jNXlpNURlRkRMYUxhOWdwbXcwazA1bjEvdGpsaXZKelZQY2pBd2RRWFR1VFNYT0xNa3ZXeUdqUzcwOVhLV0hGN2N2Y3N3SFB4TGFFS05UYzNYS2R6NDh6VWxZdmhjcituVkwrTUdaancrY3NzS2hQSTFXbXRmejVoSzZsMlFFZ1RuTXA0dmlFZE1IMkFyb2RNdWk4bFJsMDNRY1paM2lER0Rvckc0dVFrWkRxQjlFb0pyeWEzV091Q3dPcUdiS0VwSk5Ba25HZUxDNmdNdXh5QTBIV3dZYVQzTGVGVi91ekQzeHlQV0pHcmRqdWcrT29CNzQ2WUNoa2k1VEdMSndDRU9OSkgvaFZMNm5ua3ZEcE91MVJBN3JmbGRRaUxsU2MwMG9JTnB3aXVEb253K0N0V3QrUU91UGlpd3VPdk5iY3NiRVkrUWY0SUdGUUpZNWxmT3kveWd6ZmZvdmI3cVpiV3dIK1huM0RlM3VGejFzZXBJZDlRSTdEbGpuZ2tnVENwV2M5VlBPcHBOa2JKOGJYME5MOFZaYTdzOHFkVy9QTDJuYWJGZFQ4bzIxT1l5M3I5RjdyaVVUSy84TFk4d3AzRyszQmhzSzFUR05kcnRrK21Ydyt4SDJWYVNDMDNOd042bHJVN2NwWEpQNDIvWG9hOGVpWld2R1hzdXFsMm9wTTFGYlQzYXgvOFB2NVlGM3NBL0tIUVJ3Ny9lbGFtSmEzWERhNThnQ2tWWVRocnRYM04wbkpndXR6RG1TUzJLVG9QYUZaaFhuaDZSV1RWMkY3MDhuR2tlWk9XV3p5SE4wb2laOW1UL2JMMFBEZ2RpbExwYVhJYW9RZGRhSE9YMWozSWFzZTFFcnpJK3Vma1lNZmZFUzZPOW9GRzRRODBSeEwyeHRxZ1c0VmFUblplbHNTQWowNlpzVENMcnZDUGNsdFB1bzQ3Q3BLTGU5Q2dIWjFOL2pRRGYvT2E3bDVDKy9sMStSUGJyWDhsNWJvTkN2MlNSTXE5V3VsSmZlS0M5WjZVb0N3YXBPRlVjczR6Z1dyb2piOFZNNUorZ01wNmlxUW1IK1ZQODQyL0JhdzlDamd6UGpTRkVwL21rREhqWTBSald6eGRQZnZoR3RNdi9NLy92aHlENVBNS0tqcUlQaFJPVXJ1TUwyelhhREpDZlQwa3NpMUg3WTZFNklvRmRoU2tnK3pvRmxSbGlFMmxhWUkzcnVGaU9ocXpOYWc2NUJ6SzluNFN2L3pUUDRaUFEvWWc1WllqY3hlZmFWVTBYUFFhOXNFRTBudnZwT0JxbjZpczYrMmpiMkxMS3BTK3J6eGpOMSt0bzI5TDZKK2xwbEVoUXNyQ2hlV0tqRFJCYlBoUnd4NTVvRzZ0MithR0cyM3grMkhTQWlkRFhmTThGQ285WkdrYVdnSk5HYlJ6dVpnWURxczBtL3hpNlYrd1J0WlBjQjJSM01JWWxUamZsZHpHMitUTCszVEI4UC9yQnJCNlZZMmpXeHhqNlkrTXRFd1Z5RVZwdXlxZGFKTWFXY096dUFwRTI1T1RwSStoTFp5bjdNaTJ4WXQreFZJbVVpeGxaeWMwZGZoZGFvaC9sUEFjVkZOZ0YvRjhEclN4elZxcWY1Q2VwZWlhSi9hcFlNWnJHMlhWTkp1VWlyNXFEWldsRU5aVXR1SFROMW1lUGsrUFpNeWRVbFZnK2NsSmJlM3ZMMzVIbjRjdWpMYjY5V1hUdUpKSkgwMDcvTXNVdFh1d2N5OWRpRkxYdzZrdXVmVnRLQnJPb0FTQ3Y4L2kwVzBpdWFmV3drc2VPejVRdXpRTUdwZGJ3Mld3OE9vMFZKaTh3YWZmcWZjbHZ4ejJuYXBEaC9mdjByWGdVcHBQM3RYSGRlUUdadjZ2dWFtT0FFQVFMREk4WWttOUVCNk4xZkNES3VuQ2txRjJnZXpXVHkrem5hb0UvSDB2RWdSR25HN0c5WnhScTF1WG1IWUNkRmQ0RGRET1luZ1YzUHo3VXRKVzc0aG1hb0xjcjgvSmJXYVRzaXhWREtxdTF1dFFvTm5oQXdQSFQ0dFNmSnpVeWw3NkZvZFJ5Yy81eXpKNmhKcHV5cTFHZS9ZMWtGNWR5aFZZVkhKUUZYT2QvYnJYc2hZb09tN1hPRmU4M2pDa1VBa1JVVnJmbS90WUt5V1pGWC8yUC9Wek9jYVBDOU5TbjFsOFR5KzJFNlNpWXNmVjIwR1NIeUNoVzNrMkZ6RUVEWHJac2hsK1Z3MEFhc2NnTkYyZytJUUdxaDhwMWZJVkJDM25kZUhJOThMcWtSTFRuWWRySGhmbmZYK1ZOTTk2R20wN0JhNFptNjI2N3JjRFhObXFMM1djWjBwdGZicnprK1RjZ2V2bFdhMHdaNWNMTW16YUdmR3VZQWxERHgrRDVzakYwOHcycGxOSjVwcURHMWxzSk16ZEpxbFNpRUFTbDVUYmZHME9oQ2M5Nmg2dVdKZGV2WG02MzBQRThrbk9aK0pidTEwb2dNQkQxNU5xaGxLOEl1Uk9aaUZmdWladTljUkVXOVczTmcxOHFmcmFJaC92NTJwZDYrYm5GUFBTK3J1L0ZZR1Y2eUMxSHorZVpYVm9KNGl4Rm9HWllYbHBrT2kxQjBXZ1IweGNXRmNIdEYrMnE2L1AzUWdsQWo1bVMzcmQycy9KR2plZ2wvQllmeWswN09IK29sVk5sajFvQkZSREpuWXdJRXlYV1QyNCtYQWcwTExGTTdDWHBFMXM0bGgxOUo1OWJDckU4OXdWQVdodnNSU0tqRUpmUjZwZmxsUkVwWjNxZDVrVHIyeVpBNHoxek4rcUhzV3R1dHJQQUV1NEFEbmM2MVpQNmphc2laSGJPdDh0VnExRGNHbzd1WGVXWEgxV2lkeml2NG9HUmNiYWcyeVN2RG9HZlJ5YStCOEJ6R29vMkR2ZVdISGVIMHprVTNiV1l2RmRUSWY0ZWw5UE9BWm5iaGFrR0Y5Z2Z5dzZvbVpYK2V0b3NwN3hIU0hzc1RtdGdSdS9ETlJvYmorbmhTQnV3RTVIQXVXRFM2ZlQvRnEvbzdSY083dy9Wa3lqVHB0bVV6djFIQWdnYWRrbTNEOE9IMHI1UFZObFJwWHhuNzNpZkZwbHVka1FMSm5EOFQyMU5NSWhKdGx1WTlRMlowaGRXNzZQZXQzMDBIZjZPR3RBK21mUVdBeVdYc3Z4UVJ0aDFrWngyOFdGczVsaDhBQVYxbTFPaTkvcHg0YUVuaVRvVDh6aC9kYlBiZ0NXcnowOFYxeGZOOEs4UVI5Q0tLTUx3bitWSFFBaVRpVk11SmQ5N0h4ZGxmbWVVTGtETlR6eGxTUnFpUUtNenNlWkxORlFaWGc4NWs1VXowcFE5WEZTa2ZvVC92bjdtRFU2QkxQMmVsd1kvd0hKd2sxRjlibGhVR2NiMyszb0NTbERuV1FZSktYMzEyVGpJNUFOK3NCOUY2aENUY1lGWkJaemVvNTlZaVI4OU1Fbm01RldsZzlqOHhhNWxqVTBlK3p3a04yTjhyekdxaHVCekNDRWwwTTcrK3UrU1VoQ21uL1dOSHZWQ2lrMk81RGVYNTRrbG1ITmNwU3RHQUkxbm1FRjd1WnpFN1BhaDN3d25GU3BQbmFXQU9mR0QySWgvWExlQThNbCtVbnZtTjQwdVhLL2o4QzAvbE9wZ05zdDgzbzJFQktYMUk3Y3RLZlhTQyt4MTRlWEdtclQwS09TYkxsL0JRUHNSbUZlMnUwVUlWYUdMZzRuZzRuZ25xTGZ6ME1DN1JqTkJwcjJibit3S3BIUTBDdlIydWloWHgvb1h4MklVSldLVm5pUzhzRW9qRmlRc1IrdHpxbGgzVXRQa1dPb2tuRTgzWlZoc2lVMzZOMm1tWFM5WEdhRCtmV1IwWG9sVW0yZ2VoYjc4WUZrR3lXTjNaMVJPcEszRnlLS1VNUklXZmFINUE2U1N0MU1HQ2Q0ampwY1R2YzN1V3FWU01hT2tyLzN2N2I3ZUZPM3gyWG4vQVZCQkNuUGkvODJPdCtraWVFZnIvbXN0RDVScDc3YU1XWVBmc05hK1ZrcG5XRjNqZFNlUDBWUXB0UHlzQldPa2poenJTWVJUajU5SnNCQjVxRm9tVDFkMjU3REdTcWhaQytBT3h4aDRBaDlMc2pSREVNaUdyZHVDVC9JdlNRdi8rS0Eza2huTXJPU3JFOHhqcjdvanVjazVZSDA4b0R2d1NENU8vNktrdlF4b0FveVYzazBpY3Y1bmRuMTRaY1B2a3RHQlNDdnlyaTdjRGR1Slh1NGZLMnNjZ1p3VC9FUTJPeElPNkNPL0xyeXlIekhEUHhHK2F2NTgyRUcxWVJ1Z1U0NGhEclZmNmI3QzRpbDNBMk5YdFFJdHlnN0htRTU5ZDNFQmFRK1BldWtXWU85Nisyc1UvcmJaZVJ4SDM1cGR6TnlOOGxKd1kweTNTNlEzVlN6d0JKUUllYXdpd1VjdytYMnN4S1ZXZUozZ1E2QldycnBLU3pIYmtYOXdhejVoMGozT1pkSG02bklEdDRMZ28wVGx1dW5OeWhDNmtydmhMWGpUNXVVZWNHaWlTQUN3Y0NSR2FyQnlUUzhwMGFCWXBSTWY4RHBSQzFrTE5nVzVCV3IvSXFqVGd5ejRMQWRiTlBUOHpRN1E1TGFoTm1DU0RRT0pJTWptakFILzl3MktLUnlOYnk1U2t1NkNyMUM4cXFJNGN5Q1pXMFpyWjRkVEkrMGx5ajU3SEpiTmpuenBNQko3bVZoSW9QdDVQanV2ZkFzaXVVUEdscjIwM3RMZjk5QVc3bm55RTEvaGxwVDQ2Nzk5TGI5UVpYdXJBb3dISzU0bFY4WTAybFdSc29MOG1sRHhncWZJMG5PQjFsclBGZ2RIN2dSS0NZUEwwUytjY1RGL0thVHRZLy9BbzUvRE5JK0NvL3FjRFBwUmRkemVjMjF0RWx3TnVtSXhqVmhZWnBuSEQrQlRsc1JrQVk2K1QvTjBXSFlRcFZXemRIamhJU3BsTzY0b2lYMVRUTDA3VXNGbDR2K0MxbHRKSXhFOUFDL0QwQms3ZCtUYThKR1RITUwxbkl3QlZuWlFPM1o5SW5nUVl6UzErVittVGtnT2xvZktqbTA4SnNFdHdqeEhLa2dPdHlqUGlFaG5YMTJpbWFVVklINXJoeHh4UitRTDRjOTJGQS95QXgreGcxYVplWmFRYlg2Rk5ndm1BUERCcHVJVlJhQXdMMUJMUUc2MHF3dHNjeVFtWlFISGMzSWt6bU5vQktGRXRKYkRKMzdqVlpEN2c2QmpZZ0R0aEZkaVdxNmRxZE84aWtrQkxraHhuY2tZQTg0MDNuQS9ncWJZMGVZdDdyZTY4dTRWNDdKekU3U0dnQjdIZVdmbHcxQmFpenhMdmI3K0ZMWUJ5SUsxcHliS0J3NFJJZStVQ08zeUU4UWZubHVNaDVkWlk3cG9PTjkrU3lLbGxSa3E1Z0RWcC9GbCsxdzNiMFh6WE1QaG9TOEwxREMxOC9VMzNTQW1zb3lTanlQZVEwMkN6SjZONkp1TS9POXNrZ0hZcXB5WnIwZ2ZUUk12N3d3QzA5UGJTL0IvTHFyalZtVnVHNmdxRlo2R0JOT2tiN3FoSlpiSGlFWHNzb0RXNkdhRmhiemZoRnZyL2pxQlVIRm1VdW9RTVVOTXNMYzlwY0dERnFwUHJFSlR6endkOVR3YklOamlFQkUrTXVBRXdqNHgwUmdrejVpUG1KUmE3QU9UN2lmdFRFaFdRQ2NqZXNYc09uOHEyTXZwRDEzSHE5Nm1TRDJWREJXTXRFSHY0YlVoR3lFa3BQcVFWbGJuU0hET3lvUWFXYTVaQUlZVXFqNllTTnpOd0h0bDZnc1NCQ2Rzbnp5UC9mbWxtMllZa2hYMS9UNGd6OEtHQ3doT1RqTCthTzhWVUUvTjNKc1E1MGFNTnFJTiszb1BacHd4SVk3SlZheU40UVdIRUN0VW9iRloyVm9wK09GejV2cVNpcEV0WFM4TENqSjV5OUovOHFTS0Uvd00ycTY3MGpnV25SbjlGY2J5N3gvRFA4bFJ6QytrSWtOamIyN2NFMDI5ZnNWbDlqVFI4dWtmaXRzamhvT3VSLyt4MmgrcUxMWDdlaU55b2JLWjlINEhkblpaQmt5S1E4bzFrUnp2VFd1bjVyaGhHbC9xYUpDZHlBbmxmVjlWVnlvYTBEb2orcGYxSDFDRFdtOTlhNXgvbnZyTEFnWnNUQmJ3Y3BOY1VlOVRlSWg5QjV3UzVkeEFxUzN3WVlHYmFXTzBsRHg5dTJpdU43cnd0djdnVXFYUGEwOTNsUFdHNXRTWFlFOEtiS1M0YmdKS3VaRUd4RXNRb09Rc3V5TUlLMkNkbmRTYmptVElTT0YvRUZyYnlrbysybWVRbFE4MUxqTytaTG15SFIrVHZKNW9tR2NJZ0VPR0tLb1I0dmpjUXFpN3NTNFcwb1NudXRuL3kzSkR0ZDlZSXZmWjcybGZMSG5YTytPL2JsQ2h5a0tMeTBMaWRxYWNta2ZWSnNPNng3cXlzV1lxd3M2c0pETXhlTVV4Mnd0MUViZ1hnc1h6VE9Ldko3MEc0b2hiNzhxTUlidmRoblA4ZU1DRzJnNWtFMVEzc3gxc0pGbTVLMVg1SXV6dTRQRDRZNG1kTEw0Nkorb254TFNIN2JXcWxIZjNYcW05bTBlTEpzemtWZ3lNL3lGM0JGKzBVZlQ1TnNZUUxqYzVHQWFOVmV1WXFZT0tsSDNqOUVvSnl2aGViSkdpbTJFY1dEQllHZVZrUFo0dExWdXJnRlovVXpHemVZa3UyWnRRaVZ1VmVqL1VpZld6Q2I0UGd3RWxoeEkveTBEUFp1VTFkOEU5ekwwcWVVcXJIV2k1bERoR3NSM210TW03RmtOZjBraUNkajBodDZlSVlyNHRzWW9kSFZzWC9yQldqbUh2bkVINlRucHVRWUpLNGlLcEZmWUJhbUZRdHo5SXlvMWVybjdCb2lyQ2JXaTRXWTBkNVVSTzg1ZWZvd3ZQOElOUHpJY1BnMXJzeXhRRmtpRHRXQW1MSHV2MWloa2NXbjUxZ280V3FiSkZyUmFvNlFFZTFUTUluZ3FSWUpJNDVKc2hJejhyZFBJWjFZMEdiZGhLNW9WQkJDZ3pvck9qckd4NEQ2WXZsc29kb211U09oYXhhV2krYnlMdzFjK09sMFRma1NCQk9ZQ2VHZkY0Ti9OVmZ2c29HTXQvSHBpYytSd0hwL3FPbHJZOHl5V0djNXYrNFdqOHFJUjJrRGdSTHlDclRmejNuUkVKWDlVSXkwY2F3Tml2WTFOdmk2eEhXV2hSTkdsRjFad0tEZDcrWUpzMURjTC9MdlEyMkl1OGtzNGp3UTlQWWdiUU9EVm4zM0VzRU0zd0dEN29OK2QyVVkwZ1YzM05JWVBabmEyVjlLMWV3TFk2ajVCN0pkcndnYXFsUWE4a25uT1BLMmV3SDNpVVNSTTVScU4rSjVxZUpZTWNhd0JGOVFoTnlGS3IwN2NrTFVEV090b3FVRmhveUcwM1NPQUNzdUpWWXNUS21weU56VUlhbkh6U0dvNU1HQnFCOFVCMjBpTVEvNVVENG96eCtXT005cXlZQWFlWVY5WnpLRFNCK2NwNWM0YU1tUUNaMzRsZXNjWU5KaCtHV1owVEhwQU8rNHdBRUh0U0xUbVRpU1lSanJxV1N3UVhVZ21Mb29xRDBOQzJlQmlzdmNnMWdDYmVPTWlnOG45dzlqSVVBOHJsS3ZmbkZRZThUWm1iTVRGZDZ5ZmRHSm42REt6aVF2L3dGMk5sVjRzUFFwRWpTelh6ODdUS2EwV2hzM3JvcTFaR0VvbTJjaHc0QjBmNmZMalUxN1lIUThoLzlLTFJaUW8rVU96WkNsVTJLNlQwRmxveVhrQTZheEtvMFhVTllpVm9kVTBxNFdtZ1pJNG5GWEdxbkF2S1dXcXVXOE9aTGpTUXc1WHY3eG5QMjZUd3VWVEpDdG95U3N2REhaWXFVOEhFd2h3Wmlqb2FsMTgvZ0V0Y0dORjl6RVlReUpiTDc5VzdSNCtyendGMUxNRzk0Rm9rSy9kQ3JQQzIweHA1emx3WlNTT1k3T0h3MVlxbnFPaktuRHRxNm9iVlh5S3k0ZXdOY0VUY0dXTm9nbXRLcDg1ZlZIV2loSnZmL0V2eGh2WUkwbnFkTGlmRENFMnRaVzhpdnhOdDk0OFkrd3hLK0NmVlRrZTl1bVVEdmJwcTZMeS9tRWdNRjJmRFF6RkZURDNWMnBFTmZDeWt5NzA5ZExkZjZOVzMzUExBUDh5T0FLL3M3RVdUbnVaZXVXbFY1T2xXemh2MGE3WEJMbXNZRjJrMEs0dFNJZVFDUHJyT0pOODA2OFVDeFF5Z0F3bEJZaWs1a0FzZ2hCS1FzZ2JPeEJGaUVvNVJEQVJ0V0lReFVyakFFSllWaE1MZGxadlRLOEVrNWU1Qmx3UVhuMUpVdlZ0ZGRxTUF2UExoN1FiUEVjL0VMYzh0dXl5cURYN29kRVBwWjkrT1prTnhBNjhPNXhQL1lFTThVNDltbWxGOU1LRWcrUFl6ai9jNEQrUU5hSWZSRTM1eWRwQlFSQWRnWmMxNEtGNWdSeG1sbG1PMEdrNitYWTlhb244bWk3QWpMQXFjMHlyVmIveEJtQ1U5eURZN0NOcktJUWpEdVZWbGVQNWYyRVZVRzRyVGNpcnd6SVBKc3JIQ25jVjJtZ0pKWUNiK0JKU3NiejBqam5aOUpuNDNXTTlMdUFDek1BRUdMSnVaWDNtZG95eGNJaHBTclpzVnlneUNSM0hpNWR6eFM2OHJlWEU5ejR0U0YvTlZ2WUwrQWpwK2IwKzlrRlV2V0V6ak15VUJPSFZZd3hkRHlCSjBaaFQxaEJZa2NSMEhuUEpxSjIwVlRTcGJuZkQ3ZVdwaGlNT3V6T1VyUlgzeXVyeWlnNXg4eWxtdUxjWkNyMGYvaWFzRU1ZZ3E0UHlCMEdqQzh6SzY4OVJQUWkzMDJOMzVuSXk0dWR5cHBkYjNyKzZWZXFNWEFteTRaYk43NTdwTjF2OVBtU3JPWTNET0pmRFVKcG9aYTd4aFpMR09Mdm5yTjgzM2EzcGRSNGI4dEdmMzJKSmd0ei93TENZK2pxQ3N0UHhzZy9EeXoxS1kzNlB0bXhoTWw5c2U5clRtWnlmMXRtcVFRSnVsOEdPbkdBSVQ2VXdoTWFieFhUd1FZVW1nU0cvSDh0YUJiWFVDc0pVMFg0NlJzYmMvS3BHelVLNTcrZXRDNGw2ZW1ZU1YwNExja0F0dUs5RC85OGgzOUxHT0RvMUVtSG4vdGxjTllLOGZTVVprQjQwdllMWlh3aW1BV0tia1l2c0RvU3RLa1U3bWlHY0lueUJqNWwxanJiNVVaZzNtYVNtQVVyejVvOFNReURXSnUydVN5OFRvLzdkTG01ZnB6aXA0OW0vOXB1MDZGbkhiOGQydlpTc2tMT2lJS09yM0ViMjRoZ2JuSm5weldFZjRlWHhWNmtMKys0MlJhemN2eHovM2NLblk3THNoaXY3c0t1MlY0ZDAreUsrTGVDS3kybkJyWXVJV3htREFqU205RjRJQVZabmJXNDlHaGlzRHdaRGl1ODdyb2wvY1RreklJSmVGbTdEeWx5RHA0ZXg1Q2lUbWp3Y1pMVkpSem1YYXREVm5jTnhsOGRsR2ZpZDdzdE12Y3ZocHhDZ1FCMWdtckxiWjZ5R1FtL1h1clpaOUN1ZTQ3MG5YOG5zZGlCbGVlN3Z5QjE2RTBOUWp0aUhiNGdzWEZVdk90eWtjOGVkNWl4dEYxc0hPdEU5Y3cvSWNENi9mS0dnQVdET1Q2S3FOaHFzUFZXMXRGZzcvUGNXS3Z0Sm9qN1IxSU5QeGFQVkNIclFhZytuaGI0MWgwRXZXaHBIdy9ma04zWVJPdjlRdGF4TmczUVA2bEN3QUEwL0ZXdVp0eWNQYW5DSjhlbUIzOFI5OWRRYTFlS1BUMkJMaGFMek91TStITm9XMGEwZytOWTltalkwK01mQTRjQ1BJK0hQcnoxSDlUd2xaQWRuU3M2eFVoR1hLejEweWJmdEwya2VkR1crR0lhSEdsQSsxKzFmeDI2dlBvVmYwdmpaa3NlTForK245czU2bzZqczN5K0hBV3I5Sjg5bFlhclpQTzA3c1kyK3FvcmttMUYwb1ZLYzFiMlB4MG9uRDNNbHpIUEIxbExKZE11ZEw4WGZiNlA2ejRvWFdPMUFKZmZ5ajJSRkpRdlU2QW1VclRpKzZpaXZyYW8xNnZPVUxtb2QzUE1mZmQxRXFsY0QzbGRlQUNuM0NDVG1TaWlOalY0THl1NW56OVJLdlBnYXBBYVlFek1ob3VaVktMUFlrK01QaGdHRFRhSEJwRXgrZncycXpaSzdvUlIwRjF1NVptTVVrMXpFdG81ampWVkZtMnQ5dXZFUC8wNVgxQlgwQ1laUGNiMHRLK0pvM1dvWFV2aVJiUkRBdXZWa1ZhKzhTcUlVK1liZHVDZENMN2RkTi8ydHFDM1JlU2FPUWY5L3YzVHFLWnZLekhTb3dLOTRsWm5aRTNYZzY1bHhvVnF2Um5KbFQ5UW9lYTdmejRCSkFTaWpnclgyWmdhMHNlOVhQN3dyckwreTN1SXdId0dQL3Rwc204ZVhQZzRsemt4WmtNbktGQ0J6WHEvbExPN1ZDYk5RVTBVL1F2dnEzbU5rVmF5WlhydFo1NWJ3NUVkRkdORnczdmdrdGtzN1JWUWFTdUJuNExJeTVxNVJHSEZtcUhoVnB3N3d6TThIL2dYTXpPZTh2U0JwZzRqak8yRThBUjZRRTUzQ0J3eHd3WlBMQlRIbmsyUzRtSlZxT2FuNklPa3FXQ1VPVFM0djUzWnV1R2tGUFlnR2lyUjNDVk9rbzByNVd6bW5ScDh2cis5OUdNRXV6Kyswb2kyVDcvTWM5SDFNVm83Rm8yQmhXNmtnOHpUUGhXVng5MGVqOGNpZnBZZUxDbWRLTTE1dWM3WjgzNW1peWd4eFJ0ZTdpaFNCSDJoaDlUd3BrT0VMMUh3MG1xL3pVVElFWlgzZm5LVitoL200eUFMRW9hRG1pa09oSXNGNWZjc2ZLQlRjcDVDRVpKMWV4RUNEc3ZtZ1lPbHhkeGFSY2c4ajFmTGhpVVlWdTAwRnhqSmpBOHBFdXlUVW1remM1U1NCVXAwcHlQQnJ4N1dBNjVxRlUvdm1zOVl2MnRFZW92RzJGKzljdnJDMG5Zc0pXSHFXR2I2UWRRb3huMVlhOHVsV1hYWDVnbk8wRUVKQXozcGwreWtIbjQvYlk5N1ZGWWRxOU5NWTNhODlqYitoaWQxVnRydmY3YnowZmFIMFRRdDE2UG5XNzdXcGMrY01LM0FqbXBYOE9veWNERDJuRjF0anY1ckFSZFc1aE56eDdPNjNucldSV3I3OFdZbjJuNWJKZDNHZHRZT0g4aEMvWlppME4wVlRxL2tQS3BSMWVCVVdPWmljRGRmUFBOZVRkRThKSFdzNG5qSmdwU1YyWWxCZ2NGTlJXMUt2Q3FKNG5EZHk0ZFlpcEg2NE1oRHpkME5SdW51R2NWdHNVeFU2N2VRU25BRGpkeFIzbjRPZ1pSRFVUN05iaCtlZ1NnQUtkUW5KVGZsNDdhZFcxV3ZXMHJsSlMzZGs0dVpaU0IrdE1HS2ZqZmZyc3NXcDEyMFl3aE1CekxaUWdmNEZVNDBESGZaN2VEUnBMY09yeU9xOVlwZTBTWGZ5T1dlMFlvT3Byc241VkhQeEZqYWU3cjlUaHVNeUFzS3NYUis1U1N1dmFWK2NPYUw3VGZsdHg5MjM4SUJIdTNub255YTNiVHhmZ2lYZ3ZCbXE0aS9kMkJXdGhzZUxQKzkxYVg1U3JidlNNRDZNYXlzc2ZOb1haQkZldlVjZy90RURydzFxbzMzS25vanZLQmRaUUkyNW9hOVlyZ0dWcFVyVUZZUTEyUHBqZUowS05LSTY4cGtQbzZGU2hreVlqd2xONm1DVzhvOFQ5NWtqKzJmM283M0FSMi9zZGYwL0IyTCsyZUM5a2tJcXdlSVpBb2h2U00yd2lwT0lqQXYxNlBHK2JYQ01VSzNhbnhmN1hXU3JGak81R2xtcE9IVWEvdG8yeUpWbVcxd2FVOEZZVVh0elpFQjNLd0xsaGJEbGJleDZqekF1WkE3WnMwT0Q1Qm9INnhnK0hTSnNmbDBVSmdzMHB2ak1lQTBpRmZHOG1HQjJTUGg3UElPcVZROVNnV21QbFV0SklKamxjZmx3VXAySlhYZzMxUHNtVE16RUJTd1BoYjlZR1NabmZLc1lncm9BZHVDbXZzMmNLem9TOVNKbk9XeklrYmF3WU9uZDNkUlNMNk5DRUI4Qyt5cDhuL2NFcFJsTnVuYklCcFpHdkhKZjUvTEdGc1BHN3p0V1pCTEFkWFNwT3FLMTZoYWZTbHJwcTN2THFyWVlGc21kYzdrelMvYm5Hc1NqZFFjTm5iRVdxUldxZk5zRWtGQ043am9IbVhaZkN1Z3YwQk5pMk9GbkJhQXJuRUJDcU1JUnZWOXBSVkRPdGorL0htVkpVdU5wMEVNMlo2K3ZFNzVWTWlHUk95UWJ2azY5czlLdFlJbDVCRkw4SUovaERhZGZPaFlqMlArbjhqMjV6amN5bk1MYk1wT2U0ZC8zS29FOWkwSy9jajkrRXkxa240OEJkakQ4YzJvVGxFbmdnU2RJZWM5TnUvOTMwSzhUYUpZbS9pY1J3dWYzUUZBYlBlSi9MN2xSVlJUeXdvUkhvakRadWpiVmtPYVcwUlk3OXhtbmhyQnVxbzUvQnR0M3h5MEVHVnNFVTU1RzJPTm40MDZGZDVqL3dPcjJ3aGg3dG1uY0owaXBFUTB3dUxuVEc2c0Q1WVpMR2ZveVMxeVhJamF6bFlQVHErZS9udGw4OFFLbXhyeWcvMkpFa1dTdHIrWjdxa21sa2Zsd2Q1djJBK3g4c1llSDZsblFTZFJpV3k1ZGlSRlZ3U1l1N1FseFpLbk5TTnZKbmRXaUk0aDZYcXhYS1luK2FMSXRnZDhKU1hrWkNDd0NLU1BZV0VFazI2RTU3MlY5cHhHYnd0N09aZm8vK2NVaXBOaVdyZVZaU3R2L09UVnVYTTVxOGpOTGZnd2h0c1E3T2t2RFQ1NStmbGE0N1B0ZEpwSkYyWXhVN0RCRlA5bDdyRkd0YjBpM0YxOHRCc2xtYkdpM2gxeFpvNDBHMWRtUEVjYmI5eDBiS3o4emJkdlNCZ3BqTlprMkh2RWR1dGZWWEhBdW9sVTJTRkdWdVRKdFA5aWxaRDVWSStOUjJ6a0pzdWhzTytpWklLbmgyUjZUa2l6b3E1WEtjN3hzVXA1YVVnK0xUMjZsZmVsQjBaaEQyZld0b1kxZmQyeGphTmZSTU9JTnJ6Q3pCbENKenRPajdMZ2J1YU5pL1l6ZXZRZmZnd20wN1gvc0duekJPcCtSTHc3dzM1T2cvMDAyenhwRUNoSmZxMzg3TjdrMjBhRVFJYmNTWExCenN6RXNPM0wyTXMxbnFIV1lxT3RFOTNmRnVxY2ZPdGg2NXlmNWIvdGNLdWYxd2V0WGlaU0cwOVY4bEQ0WmRHcGo5YmJKaFFRUW1VbUhrcFdZUlVjajhSbGZjY05ySmUzSUNmMjRjZkphcXUzUkJKUlVzU05IV3BlOWRVKzl2czhIT1NwT1poOWc0VnpMQnF4YWxacGwxQkxJajBEU0c4R1NzS1JuTXllOG5iMFdta295RzFYNjBycjNOQ3M4bXZwblNnMkpodjM5QUs2bUJXengwb2cyM0tDZS9XU0pNZjkwY1M0eDdzODN2cllPOFVOdlk1NXEyak9QVllWajNpdXBRSjlzWjlIbzlJb24vTE5maGJhU1VGNTc3OEU2SVh5Z2QvRzhDM1JrM2twNUcrdjdWcjFMZlhXZDgybGVOYnpoV0RKcktnbHRGRjFqbmM0cTE1a2xIWFFXQ2kreTd0c1FSeXU1MDNiZmtzV2ZCQXRBdFFNMzR6NjRJeHR0dzhkT1hyakJPejBScEdrRVhFcUhLTG81OXB4alZRVzdCVkV0WDJxQ256QnlXMEtWNXVPa2lFTGJ4MmNybFFxN3phT0srSEF5cTcvMEJmc3o2ODU4UlRVbXdnM0FuOGl5NXU5NFNVb1ZXYlArQ1dvM0pDb0pmRjBYalh5eWE4Rk9DOHNKVEJkVERNd3dLTFNQS0dyK0Vyb205TWsxaXFhYXlXZDNvQzJGUkZ4dld2eTNEYVVsd1NuTzFIeTFLZEdQOUZ0K3RlaXlEMlV6T0ZJVUZTd3V1emNQY1Zoc1hYQ0xzcFZyczlkTTBOYXg0WENPTWFRdjJQZ2lZOWg4RldrU0RucmZQbnJleEdJR05uSndZQnFrV21Ubk4yd3kwTDdZKzIvS2Z2cDlybjlXZFVNZVVMOHFKRTN3cElmVFRadUlGckZWZUZpelVpT1lxcGNkNkJBYW9hMUpXU0d0bnFJZkd0dXllbHRyeVF5M3BRZXFzaGZoNXhXL3A0aHhma1lEK2FJcHV3YXp1eVB1NnBQSkFLM1JPNVU5SjNlVlpLejFMM2gwZGN4a3kzdisrT0xqekJxdUNUZUZOQy9KTVMzTTNaS1VSaGowS2FiWnhoL3g5OUxGT2lUdjZPYW5tKzR3Tk5JbUtqVldKTCtvM0JQS1ExV3h6bC94Lytpak53L04rVlNRaVZhQ21YUW9ZaHUxNnpra1JESHJuZ3dWT21hM1lHc1VWWkNha0ZLSi9IWXRnL1hlTVRTS3Q3bEdKSXc1MVF2RTQyZEFNOXFHUHJTbnlLekJLeWtyRWRWUFVTeVZtY2RiTFFMVDVmS0xMK3orTGFwM1l0QVNjK2NJb3NxbGJUdWpacFRPdGIvTm95V0RJdERTSnA3akJLcnNmL0xwa1Q4ZDl1clR0cytHaWtmc0paRmxFMU1EMkFtczBQemhZVXVBYjFaR2xxTDFpMUxhNzM0aExGbU56ZUhtcm1lSm41bGVYTEZYSnhuZEpYMi9rWlVXM1J0dWRrRjViNG9YbHgzdG1NK3VlTWY4Y3YrMml0TThBWmszaDd1bzM2dWl4em1DSkZNdk1iT2ZUTHdiVlo1NGg2bExhVFJhRWNOWDg1OHg2VjlXUGxUMUIwQUg5eWpXVTM1OEFIWUYrN1FGY2pVRlFQVnF5MjJvUUpaSFh1QUlTUFJQK2hqRzBGbTI0dk1Ta3BkdEljSFBuN0E3N1dlZFU4cW4rbkZ5UHR4Qko0bzNEdlFxRDEzMlBCRVl4QStRam9ScjY5WmREcm1HaHJ4OVBxQmJUY0RnRHFGQXBTOFYwRnBONjdDNTllcTZKNVVnekZLNndCcGtaTks0dENmbkkzU1BLUUZiKy9NRXNXK3U1TVVWZFk3Z0dEZHJ1V1ZvcHZYQ3lrbFhvSlVBS2Y5ZWpJNmhlb2gvSmp4ejcrdkZHZ1Y1ZUhPbUtDNHhpVXJjcTZOd0JPbWNxdk1ZRnJnRmF1VVB6SWk2b3RRM2hGVWtDNE1nRzgyaWU1dmZkRk50dy9sZnFpQUpncHhtTUpvT0JKYm9oekxHWXdINXdmNFRMdVhDajNpeG1qMjgxVThNbVVsbHB4bWVWRStTR0NzYjYvdkxNcjU3THYvR0hXcW56dWVQTkFHSUNIeHA4K3h6ZkJPZTc0eG5jalIxMUdKMEhhNkhxdWw0RFh1RWhaT2hDTGdOQ29qeTUxT2xxQTRMelJTU1E4QkhZWi9SOExmS3l5TWYxSndHMmNRSUg5TDJ3ZjErclM1dDA3RWtNVVNIbHBOaWZaOFV0bFp5RmFFSTltbW9rZTdCVHJ5OHlwc29OazZIaUNvVFpVYzN0RVAvTmdyS2tqMGhrYTdCV1lIRWRaMHdWU1FJSjV6ZXZmZmNud3FoSU41bzlvaW9ES3dQQ1ppR0cvb3l4dEVNRGtFaHpwUElVOWs5SktWS0pZcTVTUkhMKzJzRk1QRFh5T0YyTGk3QVZibkxrZjM5YjN3TUxYVktPc2tMNlRIQmRTeVpvbDF4Tms5cVprbmw5RVgwejQyOXZlVGJmNi9sVmZHQXpMeHZJdnlRMTg0RmFpbGVWR3oydG92YUk4WWNXNW5iYVY2UFhGbU1PT0N4ZGJ4TGpUTnM1Q2d6U1E0T1hQQmNLUGtFTFpIbjVCdFdQTm85SnpXejVybndoTEZWTmVJcDdXam94aW56L0loaVcyaFN1NXFQWW1rVFcvdzBxVXljSlZ0RzZ0bHR0VXBkMFNqcTNmZFB0dzhLbjRTVWEvcmpGUEpVU0hyV21NVFFWZzkyeGhtQjFEM25BZUNEQkwxUjc1RXUyeU1yZlpKcDFhVTd1SlNpUzdGKzZWTXR1djJTUHVaZEN6WFowa2RtWUgwZGdxb2s2aDg5djVCcjQ2cHk3V2hwVi9SbGRWU2FITGxWOUxDRjFFL3E4bGQ2N1VmeWlUWThuemVoR01GU3luV2pyUUE4dW9NMVdoRm9mcUpDMlYyU3NkMjNadGptYXp1QTkxaFh2RjByUTlhTGRzcHM5a2xib3BoTGU4czZON2wrYTRZdnZhb2xlNm1vK0V1RlpOeWlQUzBsRG9kcm9nYWVQNTlMU2hwaEVGdUVFVllJeERhdlpIS1FUcUxyaVJxL1ZzVlV5dzgxMlNVSTFLWHlCaE5RWGJveEt5VUgvZEpZbDZ4UHFIUENZclhsdkVFUXF1OHZtVUx4eHhpTk9KTVppR1U0bXpiQUlIZEFiZ1BEbXREYTU1Kyt4MDYxc24rMkZKdUpJKytKOTI1MlZOdlNOM1NVbUw4bkw3MWIrUDJqS2RHMGdJcmpRNlhJNW41b2JqMkFXZlBNNWxXcVFpeGZVNzFRWjVoNDlPbjRmVmF1ZS9veUY3aHkrUzNoMmxFa0lxSHQyd3dtVE5UazVKUUFMSWNiRjJrdG44eWJQTXZBTTVRVzJJTGFoTFRhcDZ3VmFLbXhyR01VUmxoNEZCSHBHU3AzWlZMWXRRNkVWTjczTGt2WnJJemgvZ01XcU5vYnVlUmZ1SHcxbDVwVUJKL3Zrek5UYzdRU3lxTjY1RXR3L3JzcTFDM05Oajh1R1RzZjREMlo5cndWbmNseXRJbHgxaC9Qb3pEMmx5aE83bGFIUDBzSjFVL2pPaWdCK0l6TEVzcFg3Y1ZybDVIczUvcGR6bTE0LzEyOXNrVnhIMTlNNTU3OGt4RVdkdTZ2QmxlMTQrRVNzdm0yekVYUE5WbXZEVnpmc01DcjJBZ1R0dkx5eGdNV3N2RmtrdUw0bVFENzdFZzArNVNXbFZueVJwRGhaZStvcWhpNDdHYVJwSWMrNTQ2UzM2dmUvMjlUcXpDN3lpSVFvdzJHUEpBdGRRcHJKTk8vTXAzUHIxVTY4Z1EwVVBqa1RVTTJPNEdJNEZReHJOVXpXeDRuTnNwL1pUdFF5Tmp1cW5lanZ4enBVRlYvQlFsamtaVXR5TTJFb2RaaFl2bWtOQXpsL3pHcnJMNzBzV0dWenAxL0gxR1pSK2F4RXdhWUhNNXpxZjk2TGtFQWpEaHl3REdibE5HWDhVdjhweHpla0ZQVy9LelJYeC9uakRndFlkakwybkFidml4bVdlekNlb1JlSkZrc3grU1FkTDE1amw1Q1pVRnFaWXVUNDh2Yk5GZXJQdFpNOEdYdW16QTFwU0NlTkR5dmhjMmRpT2ozeWoxS3pGRlM3ZGUxa0dXTDQwem1WVWRoZTNUU3JNTTJBSHZRbTNVRUl1QlRZL21KWFR6TTdaR2t0bHZuVVBsNjFYYnpFNHc4aEsxbFkrdm5NcDNYUlZnMlRhaXNjS2tNVlBpZG1XVk91L0MraHQwNUIrQmsxbVFmaUJiYU5ISWdrVmNadDNHc2t5NEhSeUw3ZFZnOCtrWTZLSmF6UjlHRmFXbmV1VWhlRHRURG02bXdMczJLK3lacnpOQUw3Y0VSSjlMSUFCSHprNkpRK0hDWDNjUElQUFJ5TXUxeG8xNkVybXJ1M0g1QWErNk0rWHc0TkxVZHMrS0JTcTFGbzd6ZlcwUnd4Sm1ReUVZRDQ4Y2Jsdk5TYzE2WXFSWmpMbzZPcUdoWkpDKzJkMVFSbFJQSUErOGVZNVA0bTU0ZjE4anU5QTg4c1lPOVFVajd3YjZvYmZ0T0lRSGZGeUZ0ZExGejhZMk9nNGo4SjMvZTliMjJ1eWJGeHFDUXlxZU9YbXpZMlVndW1kS3h6TWM4aUdEdkluNHd5QS9EZWFwMFo4MkRKZGphcnQrckwySDNOZ2FOVzVwK3pxYTA1b0NUNEdzaitQU2N5MXVtS1l6ZEtVdXNldXZhWm4wYzdpbUFPejFnbVFRYkRoVjJOcEpsWkpvR3R6NVJZRE9TZTNnRkVud3AyU1IvUmxNNkJRL3lDMkJEZzgxTEprZlFsQlBQamsxakdEMGllcWxNZ1hncHdWL2Y4SFVOU1gyVXFoaVhaNDBTc1gya3VTdXJZbFZDMWlPcHEvTEliSlRJRlZFQmgyMVFtOEhreVlyWEdnR3FnSHVrOGFtcERZcWZ2R0VSRWxQNm42NjhxVGsyNkczM05JS2Q3eGd6dUUzSzF5bGpaV0tWdUNhRHA2d0dtaWFqU2ZkVU0xSTdEOFFYVUhEWk1MS2VlL0d2SmNmSDhqeTVXeFdaZ3JEa3FTZ09WVFpRS0VXZ1hibkNsNUpMSWVFTzhiaUdteFdTUlUvbWNoa1pzZlVQUlFXTm9PNW5VNG9JYVlSNWlpbWlEUkVNc2tGbEZ1amd3VFhVdUxSV1ZBTUk4aG95bnFZaGV4OU83SnYwdHJGc0RMQU5ra1dHOUZoTmxiRVJieVdESmRsc21ETWw2Y0VHU2laOFg1b0xCblRGUytjUDV6My90WW4zbC9LVmhPckJhVm9ydllLUWdrZ29mRlNDUzBrQ3BJQWc3OFk0MU44ZTREdHhteWh3VlFkMThkWnFZbUszM0p1dXhzY1BUbVhwQmJuOHVIWEkzZ3hpRjJUTnBZMm0ybENVY0IvVDgwZ2VYWkJGZEVjUm1zQVlDMDN0ejR1VHRHZWVOUEtzdE1ncGlqSVZuS2oxeFg2RmJqMFo3RHhhcXVPdmxBcDRWZ1NNZEFLU09lVEF3QjViV0M5SXVtbVFMY1BVaTBYU1JXVmNoZHhiS21OL3NTVXBER3A1alAxbnlNQ0ZKZG96M3pFSkp3WGxaZUN4RSt5UnJJOWxHSWdkRi94WVpnd2hCK0syN0Q0UnlvNUZJR2hHY2pkeDQ1UDNGTHkvdjU1dlArUTM5L0dGRXhDNm00Ty9LRDJqOVZEYWM4T1ZCUExvMmNLYUhRVUNkdHU1YXdTbDJUN045dVRRSHNsL1pxUDZiUUVJOHpnQjVzUUNxL3pxVTMyUGhlb0NOSU9SM0lFUzFLbjgvN2l2OU5mZGswc1JscXdna200ZFowaDI3SGI5ZWJtcnk2ZFFkTDJIeDkrci9XSGUwY3FtL2pubGE5MzE2bzBuYnZVNGRhTG5KZXZBV0xCNjZHZVpzVlpIQU9EYnM3Q1ByR0s0ZGJKeklqY29NS0xJQ2ZhUk90S0dLNXhJLzZuaEFJR1UrQ0ppc3hnelA3TTVJOUk2VDBmRHcvd3hKSTJDOGNmcUp5VmFqZXhob3J3TytONXhWYlV3cjE4Rjk4YUhkNzNKNFN2aXRUQzlJVGhJZDhMc29Rakhkd3h3ZVYyU0tTUEtSWjVLa29HOGpGUEUrL0JHZndHSWR2N0QwTzUrR0p6S0NMNnh4R2J2NTY4U2UrQ2k2Skt1V2lXSGlQTVh2RGpQR0lmWU1ZaURGTDlIaXNlVDRyclNXbXVXWG5aV2F0djg4T1lMd1pTZ1NXSmJMV1pFWUFBTStsMXhyRXZkQnliZnpuanJEMHVTcGFOOW56clR3NmRobWJHY2tpeXJDQ2VmSGlPeWM0ditXZ3IwK0xPdDBGNW1UbFRsZEZGS3BRODMwQTZ3U3pPc2wyalNkYTVadmxIVnJ6RThpRjI4bEVWSG8xSGhzRUYrRFZlbWNJd2RkSk1ZRVdpRzE2VThjcVhIeVU1T2FUTzlRMHVCR04xR2ZVYVFaSVdTRXFVRVN0aldMcDVYbktqUWI2MFlvNEVWS2pwc0NubVVBeTdldExMYjF4VkFsSk42SW9pb1prTFNlRDNsYmZwY2hGWkdLS3FSb0dodUZIVlBsNVA3TEl0QlY2VmQvM2JhLzhHUHhaZXcvSS9mZjBLY05zZjREdHN2bE9FV05naTRvZGVKdE8wdk1iaXRnN3BZaEcwVlI2WS9ZaTNzRjdmK1lSL3NOODkvZkx0SnBrNVdhenFRcXRkWlcxRzRmVFBxamNLOGV4eVFNOFhyVnhqaC9tVHFmbDBON1pJa2pDS0cyNkZuTFlqWUpaUlpoQTM3M1haRWVJY3lTVE5sZDNyR0xEYnVGUWFuQVVCbUlXdXY2b3o5WS84MnJySkNwMFc2NFBzb05jdEVLbGxMcjdVWkEwRHJ3N3JnamRwV2FUZnY5Q01sMmlqd0dac0Y3WnBiQzZQL1RNUUZtWUxUUEtpaVMyZkNJa3M1bzBWTVNKcW1LU2o1bVcrVHoyUmdUTWZ3U2JRYU9Wd2tDbmJDcE1pU0UrUUlNMUJZRUNiMWJNMWQ1QzRVd0dVUm5WM29rZUFyaUpCVFMxdWNvNjlSSXJlVXJ5UHM3N2VrUThQQ1V0bUlLS0t4Rks3c2VVZy90bHFrd2xwWGdJRStDQjZEb250bUVKd2UvMGoxSVdXVTN3N1MwWUtoMEJZUFZBcWJibmcwdzQ4RHpUNVZQVCt4NVdKbUJZTEUvcTdNZzVUSG8xakxKQnhuVjZ4VHdKTC9sUDRiYTQySDVJdUladWtqc2JYQW5UWGRRbjlmQ0U2NGNHNFRHcys3amU0RjBSb2pJdkRIdlJ5UUdBS3dhN20zWXBKWU4yKzBNUGkrTEdqR0htWXgrdUtIZVpkOVNTNk5hNDMwdW4rMDJvS0V5aytTMHBiL1BodkpzbjRmQ2NJYytlbzhQZXpxMlRRUDQ4eDI3WEliRXpvdTFQQUtQODRkZVRJSFhPRDdaUC9Sek5lZHFzQ1dMajVWc1R0UDI5Qk56L0l0N08ydGRhUHcycVZNUGdINU1uWEVYMEdMMG8yM0FBNUZ4dmRlZXpSYWlOK0prUmhCaWU3SktLbC9wSmdiSmJraGQ4L1hHWXFDazlZR0VjR0R1MU1NZzZoVEozQ0FVV3g0dTZhamxqWlhuaFMyMlNyRVNvb0dwVU9RUXhsSlJYOXpDNGVWUjJyTmlTR0NsSHJ6STV2bjdKZ3dud2toVVpCSzh5VitXUlM3NjlwQ1d3V3RPdklrODBaUG55VEVVMWNyUFRxSzM0c1Foa0M3WDNBRlVMazd2bUF3YUFJWmtXYjdkdjBEemp6V3RFUGlzYW1aQWpISEpMRzVLeDg1Mmx4VVRsWHcwdERNYWJRc2RORnFqWktPdXRIZDZSa0todWtEUWlCUDJCWlJnYnpDODRZTk8ydkk2Ynh6OXNBVSt4aStxbThOZVdFTXdUbUZidCt4Qis4aCtjSDdYRC9VL3FTSGp4QitEb1VWeXljZ1JDYmx6bEJ5OHcxaWc5elFxdWRTRVlvdHNRcnlMN1V4ZGRNdEYxcXpvbGcvcWI4WlB3Q0hRbURBdzV1bExzcGFHZ3gyWk9aSTA0d3BQNFM4bHc2OE1wV2NnMVhldStvSnFKMldlZDJqeEQrSFhrZkUycCtUa1F4bEtVeHZaV3hNdVQxMC9HSXQ2bml3dXpBZXpLdHE0bjdxZ1FlUGRMSlpZREJGQ3lZUTVQQmVUN3FxcDhKV0ZJdlV4UUtkNTI1dWlwNGxRb21UVnV4bS9YelozKy93WWNJSGNKN1l3Q3hvanIvSUtDWTFOSjFHSTZKcE16M1U4UjFSUmRpaVFxUGY2SEN2dHJ1REdqRUl6NURtNWlZWDVEdDkvZDZ0bXhOTFpobE96eXFlTU5NcUY5dVVhT1daVGxQVkc3MXlWYmdNOVVaQyt5U2ptVjdad3JxNSt1RnpqM2ZlWDMvZmNMczFoQzhRTG1Qa2ZjUWVYUzlZODZSVWQ4bEtlTndCYTVjaFNsT1AzZ0dyNUJKTjJEVXkyVGlYY2dnWW5ESytUSzByV0FjSDBucmc1UFZlNGxZY2oxWnluVWlRK3pjTDVjMEs2WkxZNDdsR1g2MFp3WmRMZkljeHlYN0U0eDQzWXREblZrVTJRNk9kdTE4S3hLMmhlSWd0c2tVUFV4VWZsVUtCM2NWZkVYaGErZGEvVkJaYzJaamdXQkZxUDB0WGhDQkdVemdnVkk0Z3pKSU5kL1VzdnhnaEJRQldodXJwd0lrcFVKVXVDYUZjZFlUdkwwbCtUY2p0bFBpajAyUlJqR1RIZHREL2phMzBSV1B3QjBpaW1xYkRuSzZiM1FlRGZYSjBTVllvYjFKbkh2Z0pCUytzcFlLaDgxTmwrdjNmZVpyWldpS2dZeWZBdFpFTloxdkxhNU9DcHdPOS9yTFRiV1JVd3dnUGJha2x1T21relNJR2kwTEpYVDNFWFByekVUcFlnTU1YTnc2T05pcWpHZlcrYk13WGJuVVhvVzBmOVJpZHVkaWp5dEtZWkxMZmVMbjVOUzRwL1pUZkV0aUFsQWlkS0hYMXZwWFlaT0QzSVFGQmllb0tQVXNKcko0NDBjSkVpdHdsVy9WWjVndStnM3A5WWVTZG9WVnVkV1ZRM1ZZbnptUDF3dU12aTFNdEJDWFdzSzRYT3FlSW92Ynl5aWo0cko3b2hYNUl6dnhYcnVHV2xvTEJWaU1wR0tTbjdSQksxd0txU28vcnFFd05hUEErT1lGNHMyODdRYXBCZ3hxRENvdTlkenVJUUlncVYraVJwKytvVG5FdkhxVkxwSlJaT2NwZ2FjaW5oREg3Rm5yc2pIb1ZNUG1YRlZGMndiU3R5OElzYjZ1b2hCMmNZRmFNZ3E2MUdidG1SSUZEUVpTaTk0VktpMzkyWkJEMDdta05XeW9EYkJXdmZtREwyc3Rna1N1QkhTME5iZm1pQmNvNnV4Tkx6UkI3MTZnbEJTdnJmSVVPMXk1dW45RUs0VXpQU0ZCa1I3NnhLU09PVEorQWV6SHJpdkJveXJzb0hnU1hXUmJGRnBZT1V0bEtNMTl5UzJLRGlHNUpvbUl3MEcwNGxyMjd3bVQxdjI0QVVhbE5LNktuYkg5MVZIMndtSUFCVm9JNHRzLzBhdDhBbkRTblY4MnArZlAyLzZvK25wdFM1Tm03ekticGdIaTJTSGVTSUZDQTZRUTJCK2VrMTE4ODBUM2UrY3R0QjRLdDk0MW5xeWxrLzNXeklZeCtsNVdHdVN0SklLa01hQVNkQkRpTVkyemhaSnlkWHJCNDQ2L0IyMkRlcHdOUmI4MUlIY0Rkd3hIMWJINFBzSVFjVHIxeVhzTzc1Tm1wcWp1eG9YbmVtOWtsb0lvcnR3NWlpTWVGWU1UT29ScE4zZU1lTVA2cVROam80T3B1RXdlWjMvV2wveFRFSXVBR2xsbFdqT2l6S3l5SWZEUFJXbFk5NUJ5L3AvWGxHejRzSDlPdTBOcWNkS3RMZFRLRkNyTVMyNElCZUxYZmNNVzlSTDhCZmFLNDNCazdCOU5hd2M0YWtidzdmTHZ4bzVSQ0RaK2hWUjJMbjU4SXhrbnVTVys5N0R1NHdtZHRPRzdlQWtyRjEwQ29zbFZIcDlmb1hZdjJpVk91cjhmWUl2UDcvaE1BVFpPa0FxMVJreU9KdEtTNVZLNStQRE56YVdLZnJwY0FFcElQTUtMYlJHMW1mdVdGeXNlTmh0QU1ObndscjhZNFVQZ3J4NEY3Q3NpTU00bjJtQVhoODlrT1Z4OVFubzNuSmxXUlkyWXJmakVSZWxKUHAyWXJvbjNOUkRzR2cxS25JWDRIaG1sSHVwMldJQ2FFNnJGaHFwREtFcmpVdllRTlprT0t2WGNORnhQOWRGVk43YjFvcC94N0lhZlYxL00vOFd1T1ZaU1VNWExBUVRyRU5YcGxLS2hmNU5Ga09HZnBXYkI4cGtsdC9Tb0F5VGN1aU9hVld6WWsybWJGWTNIT2dPa3NHTEdib2RabEFHRnpCL2drbmc1OTRiYis4NVdYOFQ5RTBiRk1ST0JPQzhDNDFBQjhld0VTVlZHTzRCZlMzRGMxMS85dzVpWCtXQzdBK0RLV3hQaHhRMyt6Qk9lQ21WMFE3MzFMa3dXbjdNTWJqTTlhOWtaTWlOZ1ZrZ3hJaDdaQlhaNTJIdTZmcVM3U1ZBK0c2YWR2M0lXNkdNeGJxK1lCNmg0OWRyRlZndVJLZ0F0N3dsb3JOUU5QYUp5V1JML3lyVEtiRlRFcXZZdisvS3pjNlVoZFRiSUxZeGxseDVwd1Y1MHpMRWdSekxrMllBZ3lRWk1KQXRFS0l1ZjBSMll5c3ozaTN4V2lXUVVTMTUyNzRwVUZJdk5SUEpqeUtGNFpHYnhZVVBHL1JqUVhnR2l2Wk5HTjk4RTdKekIzN0JkMFJXM0ZCVDYzbHBZdEFjczlwRUd4NEl2N1NRWk1BTmFGNS9MWVJwWS9aaTFaa1JpYUZ1TEJ1cXBHNUxEQnFvZFkzWUhOeHNWQnVmUy9pN3hOVUFDdFd4NlU4UVg4eFRVcWtwRVBJRFlFckZEdGxBQjBmRDZnN3ZvbnNxYVowY0Q0RzUzcTVDdDZaSzlZL24rMkltQmRlTkc3QVd3dmppc04vUnluaVFZUzEvcFcwcEJvS0k2UjE5MWFoSWx3RU81eXRqbGtyWm54dGxncjh5NlVqd0p5TUtpaEU1VURiM2xPQ3lIV2dLNlArcVF4R1FSWTVKZlVRNit5T2Q5YU0zcmJXemlHdkVFWjQrdUh1OWlNQlYxUXFXNHZia0dIYXJQY0ppQmtqNFZsZjFZNnVaVGRvSVRsdmZEaGxlYVppdlA5Y3p5VXV4MFdlMzh5L1JtNzdMRUdBQXkxNUdpVUh1ZzhPakpDMGtXdERPZzF2Y1UxdEJqNGNCS1cyUW1jMFphQWRZLzlqK2k5NEJzUERpajljOWZLakpHd3FRSG1yRkFsRU11ZTJlejF6enpVdkhiT2dCeHJmeXRJaWZCL0RhK0QxZVdLc25WYTQwWlpVdGY2anpiaXJrQzNXWlVNWklsZWFxUk1MWUFqVXpZMHc3clEvcm41VEhKeGRDMUZOWVZvbjVqbnZZbDN2NytYbDNFangwOE9VbzBHV2NjMlpjMjQ3QlZFbVZQWmVJM1VmNk9aOWlaWUVtS1JNZlNMbU1yWERLMUtleWdFSG9Za1M3SDB0U0hHSjRvVFpkL01LV3BWVWVtbGMvMzdXaHdjZ2NNT2JTdzBIcDVXYWs4bUc3UWpCMDYvdE9YWHkwNWpnb24rNDNNTHdQR0pZV3hWVnlJKzNPWG9ycUhnUHc5Wmo5VmtwNElBRXJMak8xdUVnL1JGL1kvcmF1N1pjb01jSDBBcnBiTmJzL2dJNmlWYnhvMUdWK3VMZ3liV09UaHp0bVNObVlwM0M1VmR0alFtVnpPeDhXc3ZKYVBNTHpWTWt1bFhGc2tLWHVEQzBSSEsxeUhHUlhyNE14YS9yVTJ6dk5xVGdtM0YyWGIrTXBpb3hrOFltdHl3OVA2a005Mjh3M1Z1cTZEcHZseFJRaUFGdXVuTEdjb1hMLzlQc3lWaThTMzFBT2NrTXljMFQ2ZmpTRldCSDNIbEtJRG9qOFJ6czVXYStsYm1Oa25aQmQxZm41TnpMVmdSK2J0dUZVb0hyT0xpSFZiR2wzclEwQTNtRkd5VURHenB1UURTWnRKVUVVV3FOdTMxY0tUakhBNFNoWm9RZW12eTlFd0w2UTI0YllUbkJ5bVBoN0YxUVZYVGFaWThuekhrSEtpN1RqTS9XQkdlTm1ocFZRVmlFZDNpaERKUTJYNVVMbFBnUm9oNWxTVFpuWGxjOEVyY0wxcG5iUnV0ZDFTaVd0VW9BUDloUGdUWnNrM09lNUh0dHB2UGNQZEI4ZjZZOCt3ak1RZTBZZjQyejdMOTZiK0NTcXRpS00yaVdjQ1E2VzlUU2ZGdkYrb3dCTjhCdkYzWWpDQkRFbWgwL2R2WnRSSHJHWmxheHZlS3oxMERLZ3FKYUFGNEUxMUR1QnB2ckc4YjF4VytmM0NtUzFJL2tuckVxaFJiSzNOSjlScC9UWnlPSDJmK1hyT2FOdGZXM3dPeHdxbWxETk15OU1tRzB5bWtSaENvSU94a3A2ZXlMRjA5TWZjc2N6VHFBbC9CRjhwNXQ5bWhxUDh3NFJtU1AzODV3dHNJejJSSWIzYVdFN3lVdjJ3SFlxYWZUcFBha1BsRTN0bHV3QURnbUw4WDVRSGpVcDFhOC9oWFFYcnNuNG55eVJIOUNhTkUvWG1Sdm84dXdrandlTDJ4QzAvZkF2RGdBbUpoNWNsQXk1dG9lTWw2RWhjc1BvZ241a2g4LzNXc29yWGt5dWk1ZEVYSXZpc0lFdE5VZVJWM0pzTGVXNi9ya2JPaVV0eE14bFZ0Q3ZsaVNLZ0MxaTQ2V0pXemNOUWVGVGhWZ2dQR3gzZkEvcXJIamcwVnhuc0lML25GWEI2b2ZydkZLYXk4ZHZreUZGaHZRZSt5NGpyMnVYYkhRampSZzBMZzQ5MDRQL2tOSDlyVnM1cllydnRMTG1wd0FFMjFtNS9lalhkeDR6RHd6VW10NzlmeXVhMGlLWm1qcjVTZUFRbnFKeVBYeTNJSzU1OW4yTFhRVnNvejYwT2Q5NFpwMlE3QlBNUkdvTnpDUU01ajlValhVU3Izc2pSTXprU3NGZTdtTHVhNXVHUTdlK0xIc2dSYkgvSDZjNUhzdjBkd1ZhNTZiNXpaS3ZNM0ZNa3pnM3Jna0xEVm5Ta3JsZTI5U2lVZ2UyUlZCcWptOTRQY3FSZVdxZk5uMXFxbVpGTlBDbXNnLzFRU1VYWDJ5MlRXaVNUN3pMYUJDUEkzWGZQL1BmUUVXUXcreVpybmR6OXhRa1VJTjlxU1lEWGhJTUxVaDZsaXNaT3J0dFhLQTlPU2xLOW5xZXVnOE9lWjRyQ0VReUVNdHVZbEU4ejVSSDdKaWdtYWRQdzNjL0ZlS3VOVXFsY3VYZDJqVEhabVJ4ZGRiSjlSQTY4MzIrSGlxYUs0VFBEL2pMQ3RlcHNDaFpPS0ZkcDN4czJFZmpIMjNjbHpGeUN4ajRWRE5vQlFTY2IxT2FyRHZhM2VZNSsxcFNlQmRmQXdiQklQQk5WcW9uT01ESnJkazlCZXV2VFA5dlZhdlV4S2txN1dMWjlwaWhEMmlIc1NLb3RWZTI1RGErNFp3cEw4d2JwazA3UEVKQjk1Zi8xaE91QThsbFVnRHV6Q1JWRjFyQVVuQzhHOWp5WUg2VkNQNW1Lcm5GUEFLeXZlTUJzNENqa0k3VWNKTnZ5b2ZQaFF3Y21YRDUwbFBaZE92b1dYZlF3WitmSWJ3WTBXWTdjRVZtRTVvQlBheGVrdXZpVDlEM1U1c0V6NFZBVzRGYmxkeGJHTWQ1bWNCY3pqSTF0cm9XTWRiUWZCcUJQNG05em5aYlY4MmIvclBDZjBQeWx4aS9pQjR1ejc5NzJrUFZwemRHbWlPUEdMTStqeEV6QVUvVzhybVRXNzhQc3BZUFhkTlJieDBOeGVUVERrQ0NIRDdvUHdzR2Q5M01RcnFFcVFWQiswdzdQY0hFWXhpUGJpdEpkU25kU0pYNU1haUpOalJVRnpkTjJvcjk5VXUyUzFDektveHVHejNKMEp3SVZ5endUamtnRFQzWllQMEQ1VmF3YzNwQ2J5N0Q1RWtIRlk5dlBiaVI4YkYvNVRUU2hOakJ0STlxUTF5NkJtc1E4UURxYlBoQS9JVVpnUGZxcFVJWlhwV0laVU8wYzVUMEVoYzMyK3lkamV3MzR5a2dqREJkdjR3Q0dKTjlEMWgwaWUxQ0pzUjlhQmhuV0dVd2diS1p5L05Eb284RTAzK24xTHlpaUkzK28yaWZEcUd2S1NEY2lBMVlMY3Mwb3ZRT2NPeGdTa2cvZnFWMy9Lb1ZiUHRrWlJyNHpDRWZ0UUpDL2NZOHBYZFdlQWdqOWFocHdrL1pKWU81YU5MdW5XRDNUOTJBdXpvZGZScE42RkNzcHIwM3R5UWZqZFNyRXkvbGZ2NFFpR1Q0UnVYTitrcWY4M2J6RUkxN0tjLzh3UW1obE5mYmtjSlhZQjFaRGowZ2NYSUlES3pxNERtZlBEUGlYUXlLWE9ndlFoM1hWWDJTdFZ0aXVYWDV6dzFOQ0huR2ttN1JER1MyVGhzUGh0QXc5aXJuWS9ud1lPNm92WlUvVDg4ZGRQeWFjdHFuMWhRdnZ2VmZkeVFuVHErdXphKzlFMURYNXlXZ2tYRmFCbXZEc0JseU9VeU9NQmQzdStiYmZjWXZwRWFoTW4xRWtYc1NRd2RLWU9LQXl2U1lRTDZKUk1CbWIrRXRZT1F2b2ppTHdHdzBvNFFDbGlJRXZWSUJMTEtBdE1YQVFBNHpQQWYxRkFIeXNBWEk1b1A2SWdSRUNNT2tjUUprQ1VLRUdiR2NBN1VpQU9pYkFHQVBRaFNLd2lRS280QUExSkFGR0xBQkNBV0NxQUF3bEFKbFlRRE5Gd0lIb20zaHMyQUFBQVFBWUFBd0FFRXp1TGZvaTNWSld5dWcvL0lIb1F0VVliTUE3dDFLRFp6YzlodGZpVWwwMng4MnB1T0RpampvVWRmKzBxRmVxYUhIWjV2dWY0aFRQZi9PZEtUWlZNMU5xaUxMR2oxcDNibU9hZHZZTHQwR1QzOHZLN2R6NWp5dUJNbkNDRXhTallGeWdhcFRBRjFTSE1xS0hTakFXL0VFRG5uR0g5cGdBajlBQms0Z1V1c1ZVOEFvZE1XTTg0R3NFQmhHTUEwY3lNQlhtUWptTVlNRlV3dlJZZ2lZd0taYVJHTmFnRWxyQ01sWk1hOWdhYTlBR3RzTTZVZzJiNEYzb2dBd0lURWRrSGh2UUdWbkFKbEtIck1WVzZBZFp4STdwRjlrSU5laUczS0dPbENDdnNCZDZRaTc0WUhwQjN1TUFla09lQXNkWmpsbkVDK3NqcG93VStveHBqUmZSUDVnS1hxUCt4VFRpQm0zaFd6eUx6akJqdkltK1k5YmpnZWNCZU1BVDFCR2x4eGVyVDFjNFNsbGZNZk40a0hERHhPQmIrQVhqRVl5YTloZ24rSU5xVVBiNGpUd3ZOdTdjemtrVkN6Nkh4ZXBZck1KNXRWaWRpcFU1cis2cmZiR0s1OTI5NG1MTzU0bXErbUllejFEVnFGaWw1L2Y3YWx1cytMeU5xMHV4eHJsU3E3NVkxK2NEcjlwaVhaM1hpMVVvVnU1YzNWYy94Ym83ZTFYNUlzaDU1TFV2TmpnTHIyOTRHNkdORytERjZ4alhqL0NzdjJRZDhOTHFLL3lINjRPK3N2OXlGM1BzbGM3dXdrZW5mT01HTlJhcWpLRDIrREZoNno1SDNodExzUVVBQUVXSS96Z1RpeFpINHBEWE5RcnE1TTVDN2xRMkxhMlBtWVU5a1ZsaHFtSmZaeDdXcXZkRjVaSXJYSEVLVW1xeEJuMElsOFBVRVdPeW52Zno0Q0xnSURuTythS2Zvck9iSjBzNFJlUHN2YmcwYkM0WkFmaGxIa293YlB0eVcxcDh1TGFIUUhGTGhyZ0VFT2swYVl4ak45QUY0L3BwenFSOThrTTJjQWNtcDZDS0ltRmszTEtyYjdsc1lvWmZFVlVkVkRtOExkUUJLOXgwNjZCZVJnYmFXbS9MNllmSHBLc2NmRXdrQXZINHJmMTlialpmR2Y2MVcxQW1mTDZwWFVyN3p2T3AyaThNT2twTVVOYUtPTW5PVGNiUXlRbjlxNXZSbEViRS93RGpuWGZWeFNnTHB6UmlUT29wYnlRRDRWeHZpNzYzL29wR0puYTdITW1zN2NIVHViSXNLaWRTVVI3c3pmSGV4QzBPWEFGcW00dXZURVlJdThYRGpWTS9yUGZMY2d4eXhmczR3d0RXeGt5UnBEWVdsaDltTmxPbkhVSEtpTHpENEloRkF1UlFFSjE3TW9tSGJEWlBtb1FXSStrZm1RWlNMbDhqNDk0c3pYUmNTRGsyWGVUcElZVU9rUmNlc1hkQWgzN0tWZisxWE1LZDU2R1pXSnNVaEwyamIvcGtKRW1mWCtEdTZhOFFvMzg5MW5Na0xFZ2pDdTN4V0RaMFh2anVhdDhRZkpvYkVZMDhhSTZYS1dSS1NxRE9KZkZaOFVHQ2F3VWw4NXUxejJ6YkZ6OG02cjh2RzNLYjR5aXp3REw2dlNRTmJ3empHYlh4Z1lXM3dzeEJ1azgxTHNrV2Y4OVZ2UFlxNGczZFpITFBxZlh4K3hiMEFVOHNuenVYQlgvMFNjREhkVEJOUS9ibnVWdmcxUHpkMlZnWnRJdVFGZFFoc2RFb3RFS2hlaDVDOCtaRjhTcDZBbGlDaFhpQlBhMG5uN1ZaTmkvNi81RERYRlBxOEZVWHcyenYzSlMwcXhvMlpXbzlwNVFMMVFnVmVDaFNGc0p4Y3RkNmlrUk00YWVIVkJWU2h1Q0lSUHNBeHQxK0Y2NEUwdktHZDhKelRnTTRVTS8zdmVEOHZSY3huQkJQWW5VOWZLYkFRRXZ0YStpSkplb2ZDb0Z2U3Q1dUNsZlVla0xTNmRPNnVhc0swaDBtSWp3NXQ0R0kxeGhJSWkrQ1U5aDNZdEloaWxRTGllR1hFVTlBRm1UR2djaTZ0SmpUcmZGZS9nVUlOclhlR0JmR3o1Z3lSMTY0MkNpZC9pVmltR1BrZFFRTFJ5TGZNRzZROXJqYkFYOHpTTmVjVVlET21Wd1Y0ajNsZnVMNVlhakQ5T1ZmQW56Rmdxd3d0NW9uc3cwU2x6NmcyWkI3R3hWeTBab3h3MFNjdHdPaEtHOFl0bUg3RVIrWVJDYkdoSkhlMENBQVhFVW9TYitVVW9JNVIvc2VoS1VjZHZvdm9OdGxKaEU4MG9LbXVCTnM5R1U0Zllub0lkR29TeFlKUGk1S0o3TWJENEthOWFSVHpCeXNVQU5WbXREclB1a1lCTko3RXNSMnpxWVkxbXdOZVNvbURIczhLNURjOFJoNDRxWHpDaFpSWXJLbWk0d3FncGFYUGF3YmxKRkZkT1pwMnR5MVl6TWt3cGYrdm4vcm14SWtPb1AyTWRRclNBYVBiR3YwbmV6Y2RTelBRSnIrdWxtUXlnUUlwRzgrZTlhbUZ0WlZxTk16NGhsWE5XWC9KYXp0eXloNUppS0JobENiU1dMNnFVa1dieGc1K29SWlgxR2M3akFNdzdDczRSNXBNeW1JY1ppKzdoM0NHNzJEVzd0b25XUnpOT2J5T0lnMnArenBKMHprYzBvYVlZSEVSODhROXJ6Mm1iMW12UkZ3M3lIOGZGREZwSlN1Y0tpYXdObHBRSnNQTFhlZVU5RnRXRmFYM3ZyVDZkZnhtVGJGdUhnOEcwNkpoQ25KNW5BNUFpN25vZTY2dVkxbEhOZVRMTDBIU0ZPZ1Uzb1ZQKzdtMG5uQ1dCbmhqRDJOdTJ0ekVsZnJ2ZVV0WWNzelpOdUxxdGpWZzBUZlcyN2JQc0lsZ2RPU3kvVkdodEFyR0xQSVBoMnZWZEdaMWpFSDV4UjY3amVGY0J1SWV3SWZDNk5TRWJvUDZiTmpCdm9vOVcza2VTanZNa2V1ckF6UXdsUU9RSDYxU0c1bXkrQTR1ZzJqWlFHZmJkTTRoVnFBWjdWYjdkNmk0ejhiT2phaWo4NlBLK01ka1JTblQrbVNMUG81a3l6aEtIQWt2eUE4d1ZuVGN3N1kvYURpd3JjR3JSOXRUMVFSZHhCUjd4b3FZN3lGeDh1eG01d2RNSkZhQUlob0tDTGsxWWJIb3RtUmpTSEsrQkRSRUhJSlRHUHVWdnd5ZE84dHFkbzZjSWNGaktpZlhLVjRSaE53S0hCMUs5QnB4Q3FXMkE2OTZJQlp3VGZEQkFtOW5aVTdHTVZUZEtXVTZzeDZpRGdZSkJEOXZnb3N0Z0theE1uRytwc05tRC9iRGdqRFhwR09UVHBuODJwMXJpdHF1eDJEWjh5YkdOcU9GcVFBZ0xSb1d1bEk1VlAzQ1RXRE9UczU1MEt3MWlvQ3RiKytSMXFtSjZvUE9vVzRVZEZBWXBNL2ZsWGdjNk5BcmNvTzdDUE5SLzJFdVd6ODlWVHVOTGZCclF0NG1sV0xoM2U4OVd6cnhPa3FzQWRxWjF5WElOQWxDVk5XYnJ2Uzc0TnBuanpXTTd1OE1PNC8wNWtzY1loUGJraU1FOWVKU3hmSStPU1RucERpNlhCanF6ajV6VzZhRTR2NUJhL0xaTFdvUTg5cExpNlYvMEZoakdJSXJ6Nm45TldsekRDQTBIREpGUnB2UTNCT3NoRTZGRnJ3ME9ZaWJjSXhiWUhDcU5VY1NVY1JVdWZyelZUWHBrREZpZHlWa1Q0YitXMGlHWS83dDcxS1lacTNCS09ZM3EwU1Zna0lPbVVOUzRWZ0F2dEx5S2tqQmFFalJTcmNhbWlyaEZSdXl6UFRvbExycFpFaWJrODFla1BFYjl0UkJhTExUNzc3bHZCMHRHdXAzVXoxTVZOWXExMlB5ajRINVFheTZhdVMxdUovK1F2eWFZbVBaOGRPQmd0SUE2VkVTYXBsQXBFeGNCdzJmc25lcjhjR2tDQUNETENhc0dZMzkxbm1lYlRQb2lLcWsxK0NPMEk5ODVTSHhlNkMvUVp2NjJDV0ptaUpqeFQ4RnJyQVk2OTRtTWg2TWp6MTYzZHNmRHY5cENJenY5dkYyRWFiOUxBQkhpNnZEMzVwTXVreElwcjQzNVkyRm94UmZhL082S0Z4UlR2Rkx5bCt0MEJuc0YrUnFjckw5WUlPa2pFU2FadEF2S0ZjR3BUWEVMU0hUckIrV1RXSTBHOHIrd3g5TmpvRHg1MmovY3BEbFZYUkduUlVqeVQ1a0RtenRtdzBwdjg2dFVrbVpKMGRlcU9NQW9BVGtxUHR6Zm9VcEJXbWpWbWFPaFBmNEFPNGFySVB3TVo2NXA4U1BxaEVDY0w1R1owamFydFpmUVFvRjlwWDJiY0tUVW9YbC9mUC9HcXRRVDFnTit1MHFob013ekNNaWV3Y0U1RkJ5NWpwUFNRY3FqVXFDOXpjOTJSZnJVQkM2NlkybTdldThCQzJSUXMydkVReFg4bDM2THdENEM1cWdOc0p4eXpuM0N5MEN6OTZvUm1UTE5RcXprSlZTU2kxNXNLTnZEMjYvbDU1VWtIWmN3SzdaRWR3NXM0SzFRY2VpUGVvUUNUVDRVcXVMeHVPS0M2VTZCa1AyTHBFdnplUlg3bUVDTENTNy9leHJsQjR2K3FxUmM0WTl5OFVPVGdnaDNtU1BTckV3Nzlqd0NoMHhKYVZPZEgwekJmSVF5OHdrdzJKcVhoZytFcy9uQVlQTWQyK2NVS3M0RnNPSGgzRGlnR3JXbU12K2RWcTlFR1RMOENkZ2g3endpbmRWQ1dOV0J1RDRuVlF4UzAxdWkrN08vR1VGZ3VhM2ZXUUxBdm5nMmEvcnU0SzdSSG4waGYzb3lCWllkZHpKRXRYNU9MLzVOdEYwVDdqZ0JhN0Q0dEljUXR4S1VRNUhJY1lxb3lBVDZaNi9TWUtIME50Y3REVUtudE1sUnFWTS9mYXdyZ0VXT3hTUlRMWExYMnlLK01uZWk5WURrd09NT0ZIdTRkN0JMeG8xcWllRVRXd1pac3JKd04zMGxOaEhwblQ5cDF0VU1ocll2cnhPc1g5SGJuRDFSaGR1c0FySmhYTlI1ZUtTQWloRjJCMUFKMTRtWW9hS05tVlR4MnFMQkRlQ2EvR1dpS0puM2JaSzJRM3hhUXlQZUNNV3doRE03aUNjY0JzQVRlMncrMlRGeWhscjV4OElQVnZLQldjQVFmQUxZY3hWMlpvdVB3TUlGcmsxcThlMXJwVVlJYkFQY3FMVmFrWkNodE5oT1ZuT2s1dlM3aUpxY3A3N05pa0ZyNlpHOUZWN2dGbmpERzVXVWxvVWRjTmVRQXZkazVqQVpqRjhmOVRSczhBL3F2elpRVWlIKytESlN3VCtWQU5idUhSdk9sSFVyc05XZm1kRHZSK1o2RnIxMmM3UWNKRlZ1M1B4ZHIwUytzdXFPTEhDQklyTzhhZ3pqSVowSjRFWXAvY3E1SjRtZUVGSVBRclk1dGdRK21mMmlNQ3hZcXhlMHVCNDh6UTh0MDZYVzloWDljbUNJRklJc0lZRWhib2RUWldWLytaVlJrQVF2NXdVUkw2VE5vMTFNa3dXb1c2U2Y4Skw5MHhpV1Fydk9jSlNYdnMwYUVocTdrZHhOdldZb3BiWWVWKzdDNEQxUEpBZkFUenFQNUMzZTNaTzR5TVpOUkdPTlljOEgvaFEyZ2NSRWtod2NyTXB0SG1oNE5pVCsxU1JjMEs1UXI2Rnp1eWE3eDhudVNtZE5yTS95RTRjK0RNdUFGdUNiN253T0djaGl1cFprMyt6QlBUdUoxQnF0WWYwV25obS9ETmFQZnlyWUwySGhQVjJCcllySWs0c0VKRFRrYUo4SVRvRkd5a2taNDBWRnVad1VkcTc1UzFoNzBWNWlCV2x0eDJEM3hsbyt3NURXbDZNd3hDbHdmOXUzUktxbTc4L2VCSmMyV1B2UEF1Y241c2FIeCtLMWxUa0FTRXhGWXlIK3RodS9FT3RrM3gxWEhMMzdqVGRvL1hxcDFVWlYyWDl5cnIvbXBIVGtEanV5R0hwTWp2K29HN1FhUklHRWVENHdQb1dqZ3JvUEcvODIvdGRzUFVnaVB4dmVsT1FYa3cvZzdTcVJPem8yZnFuMmdvYjk3bTBWOHZUNW9kRDAxdkdFWDZJVFVkVEo2MXgwWUVlNmYreFV2RmtFOVFkeEpVQXpERlhhNVZ0SU9ucVhZQXd6QU1JNFh6clhmNngwd2J1UUd3TUZaeHNsQWZaV0lvS3RLN21nOFlqS08zcHZ0aU4xQktIZm5OSFZGcys4anhwWU9SZDZKSmRpdC9TWU5OMkxKOXBOS3hGUEtFb2NXTHFGSU9NTXZZTHVqS0k5LzFudFZ5Q2hsS01RZFRUcEZtSVFQbjZBYUo0S0hrU1RqZ2ZESkorOVhMLzY1Y2oxcmR6dkhTWVl4eTFUVEEvbXROUkhXV3BJZXo5ZXdPbzFSZjVyZU8vcncxcWRZZEpVNWlpOWVqWFVweU8wVVF4dTlsTkFEMi8xT0xnVmFTWVBrYmhwWkowS0FKR2JETERjdllVamM3WlhqMUNEV2J3YW1aRDFjVmRxZTNGd00rWjhkeW5aVU03UFlNS01FV3BGS3dSaFo5WHdUSnVBSk4vUzJ6Rk5UME5UK040MmhlRHpvT0RiVEt4c09KcUo2SlRUVDl1VEtsVWRyb2tvemJqeVlCVC9UYWJnbHlUUkpDWWhnU05ITk52QmV4YktYcHBjMlFiVktocjhUemM4cE5JK01yMzRGNmhaeEtTVmtkLzZENmkzUnY4YzB5SzRuR292Y3BuYmEzcS9JZ0JMNUFJT1dYOU5kWk9FRHo1V0NMdzBUSWV3SFBxbGtLeno3WllWNXNUWmV6bFlvWTFOMlFqQkErQXhhVGhXVE90RmlLL1FFdUdYYStGcnFOcXpzdkN6WUdTclNtdk84MmxlVUhpdXRBbHplWE94WHhCRHRjd2RYSEJmVlBVV0szYnd4UFk4OTVXSlZpZ24rTmpkejRpOW0raURUSUV5dDJOOCs2Q2FQRFB2SnRMUEJnS0dEalpQVklnWFg2M3VhMytlYVlveWpDN0JYQXpUazE0WWxzSlVicFR0ZE5SMjFQekJ2a09jNW5mTXBqbUxOQUlOU2hWUDFnemdsazBveFNTKzh6NGV0S3N4QldZWG9WNlhVdkVFcE9ET2REMHk5dnhHODhsd0F6UG1HLy9QUnMyOERuMm0vd2Fvbk1YVWdTeUFTM0ZneXhONUR3RHBxSTBtdVJrQkphcFdQN3hLTHArTEg2Vjd1WXZ1SEtZekFzV0dwak9vaWJMQklSalE2NE5nRHh1TklsZFFzOTdnUnBCc0ZOZmRad2Y0b2REbHdJT3RKZTM4eWNDVXh3ZFk0U0kzV1VrdjhPMGN0MXA5QlI4ck10VUNZZHErTGJ0Q1BUN2RUSjQwaWdPUkhRSGhvcXgwYVpQeXNsK00zVzZrcFNSWllRVmhUMlh3N09zSFhBenEyUzRBNllnbVpqSTRmVGV6WU9FNjhOdUpGMnNkNXFRUzBkbGJteGl5Y0pTUXo0WHFORzNJb2llK0ZtT1ZrcVZSQ21PdmdGSWNoWUtvcTREZzZRdkpvc3NndFRRSUxSZE4zcmUwOS9yNGtpaHlnV3hRNXlGbnp0UFVxNWJSNklpam53bEdwUllHT1h2azU0eU9VVWVuV1ZNSXRsTHhjUjV2dVczbWZyQmsyYUVNU1QvUmhOazFoa3Vjb045dHBJTE41MFZJM3F4T01oNVFsU003MUM0cFBCZGhENmV3Q3JpV0tZRTROUjdPVjh2bHRxT2Y4UmVleENUaWRsNUd6dlVzbUQzUHAvRTArTFI1ZnI5MW9mUDFkN3JNbmM1YzlTM1VnTXVFMEZuZzZoeWh6SXdxZFg0SDdXK3FaVGU2Z3YwbU1IT2xHSGw4LythSE1zeTB3aHZuZHZCUTNtOG1MWDRaNktmYXE4SG80WFFOa0lBa3pURUpXdVRFelBMKzhXTDN0QmtvOFQ1U1FpMmpBTXc3QW8rM01SMmVDdHJnNXFrQzl5WGpocEllMVFENHo5NmtkVnFrWTlmMTZLTWMvRnBma05YQTNWU090cHgweUl6NTNBRVg4MFRqWW5pM09nbkFybCtiSkR0ak1OZFZ0NEVYVENQY2lWZE81QkhhRWxidDBRcklkdVExdmkrNXJISktaRFJ2UU1HT2w0dGF6alZ6MEJFNzUyOHFRSFVpKzJIVmtteDZDd2hXRE5KN3lySUpKaElzakRNcFZ2MFQ4OGJvbzZhN295MUNBaW1BWGFHUjN3bWZXRXMydEpibDdrVjJiSGJZK01jYllIQnNWMUxNY0YzS0QyUmd0MDVPV3BvYjB1MmpERVo1WnVvNE5PNGlidGFYdHd1TnVDUWdIRW1FN1luUVcyeG1qWVBGSml4L1FTYjA3ZjRkeXJ5dEYzclpSSkpqenVFd25sUnFhVDdzTUlLa2dPVTU0dnUvYWVvdjgzN0RKYmtVdGk1MlRJNlFMMURYZ2pvZmVCZ1RieWx5azJZdy9RMkV4TGZ3bld4TFpnMWlBa0owRzBub3BEcnRaVEFqOXNocHd1emI1SEVtbGk2dk1KTlNtTVB6M1NXRUU1azRWazAvVFFVd2YySzVialljNlNzTmRyb0Z6QVplM1VsYlJVY2tJbCtzYVpIa3dHaFA0L1FMdEdHaUJmRWpiRUdjcldRajVNYVhxa1lha2FTb1NzWFhZaFRQanVLNkUrZlB1a2c4eHIxcnNYVW45bmlyVVNNbkVZSkRpQ0hocy84NkxqMXF4R1RFTm1iWXdPR3d1VStxanN0bU82d1BJcXozRlNpSFN3NnJGM20xdDRlanJxUDhuRERKTVY0R0FyVWt6SllYS0pjdFR4cHJ2cDhVT3h2anRtazFkMHpOL01OWDBubVhlOG9tN2dRU2I4ZVNsR3FjdmVkTzJoKzA4bE5GYzNheDZUR051RnVOaDk4aHplS0Rsa3k4Qm4xdU5FTm00THpwQTJoeHNxaUVNYW8yRno3VlRWVVRQMkFIa3lwOW1lM01oZkpnM1NjNU5vTXBabEk0WHo5NDZIT1l0WDl1UXplRHA1dWN5K0JqQU9NcTlaU3NQYWIwODRpZ0RXZllHNFNGYUFnM0JQZjhZUnZObkxVa3ArM2ZmSmM3ZzJDcW9lbEo4emxXVlVpQlRnNmVTbHB5dUlSemVtUm04MzE1NkcyWmdhUFFoQ05mRjFZb0g4SnRWMTZJdFhmOUZTbHVQNGgwaC9yNzlUOHk1alRtdE5NUFdkZVR4R2lVY2tCeFc4MGlqUkZRYWkyb0hpMVYvQXNVTzZ4bDFRdEtyRmdTekNjOWJnU3NiTy93c0hraEo2UkJPWG5KN0RzL05IQWlwVEdXMzl6S2puOEd3RjUyUXI4V0NJalNweWlnVWlJeGIrZ24ra1M4T3ExaVVQNzdwNFBja3RWZmY2OVI3aEhETnI4Ny9QNTg3UlQxcDlmNnlBS3YzT21mcnlBSnNhV2N5cnliSG9yek5jSGMvN2tPdFcwa3U1eE1yK0w1bURQTEkrYVpPUVh5dXdIUHpaYVVxQ2dLUmRXU1R1SUcxRXVVR0xDN04zbFZtWTBJVmJyR0lHbG1QOXoxYk82aVE3Q1p1alhqVEt2bzlmSlgxZFVMUnFTSmxtcU1EWEhKS2dDSDgvVy81ZEFVMlE4eEhLeDBHRGhoNkRSSTdRVlB0cjE2RnBBV241QnVkQkM1RVJFSitJZjFsSUEreFg0VGYwU0ZTQlZmZC8rejNjMXR2Yk1tTVBUcHVvZmRRZC9lNXJubGVJTm1yaVd2b2dqc1FnaG1FWVJuS1AxL0VWSkZtVVhROXRQcFYra1pWaGxCYkNLTm9xeVllazZLWDZ0R3Q2OTlsUEZiakFwYnRzQ0NtdTR3d280OHh3d0U4SlhrOEllV0ovMnpzVUx3anRWSGxaakpaNVA2bG9kdWlJQzRZRDlLeVNRRlk3R0g0aXZsVXpUc0xiZEhxNFZkS1pFeml2MVR5dURKL0xNcTdwSTJmL3dQSEIrZzhYYTE0alFkVTBZMzdqZmlWVlNkR0p0VVRrbDdDa2liQnRCNmZzcXZuODdNM1ZNUTZSYXh0Y2FRYk9PNk9lcFp4NU92T0hOeU93Umh2M20zc0tWV2VWd3BMUTJ1M3oveDBoK2JqZ0o1UmxLRU9DNS9yMm55YVU5OWt6VlZaRmVHQ3F4bVNyK3JZUHExVVFRczNtcXZLL2ovemJuMEpuTUx0YTVSNWtVVUxoQk8wV2lwSkhtNjNHcmg1OHp2OFFHWUdkNGwyZHNHc2trOTlQWnUzc3BTRXBEQ2tVYkRFQ1U4bHZ5R2UyYU1Vb3YwOXpLelllaGd2aTJBamFDNWcwdlFSRS85czNNZzY5ZnBHZXNGTWdFRjZsaUYvckNzWmI1NlcrVmFqK0ZqaDFHRGd1djVqME9KWk9IRzloSnRUaktnb0FZWDRUU3hnYlcvU01WT1hiQittaDNrblBFWXl1dWJiU0RCOXJuZk5DQytMYmdVbWxhM2s3YlFhVWY2V2VWdHQvT3RHZ0Fjc0F5S2I1YTM0MVhrOFM5WmgrMWVPOEhSS05rTGhQd08zbUxvM0xSZjlwbk82VHdkT0xrbk5QaUdXVnpReE8vN1pWejFPUXY0cmlxcEJZZ1B6bEdiOXRBTHhSN3Faalo0aC80eU1ZdXNFV0JGZzNseVd2OXhaZGJOUEswZkl2ZmhLT2J0SUdqY3RqNG5PNTY4UGFtb1JoMjczZGc1L1ExS1pnNkdrSWc0SVh6d0ZXVm5sME5wZDVGcEZMdGxFTEJJWXFTNjhTYVhVNCtNMmZ2RlhjMTBtV0xCTTNNb0pNbEZEYkxEZm5WUFJnVzI0ZXBCNnBXZnFRd202WUFzMm5oR0cxcHZsRnZ5UHdibEExT0tEbGtqYUM2TFZBS0FSQWJzVjlCRW56Y0c4cWlzaUxvcys2d2lqeHZmWDJXenZXdmFwUXZ4QzZBeENoUEFkRVNldndDZTN6dHFZQ2VSSDlKWlJNazBLQ2p0bjFIM2V2OWRtY3AxWEZXVXVCUnIxOGNkOTdHbDFCSEw1dHd6ckFCWXd2Wm9zdWFzclZETXkxbXZPSnZlVmJVR2VmNGVBRFdheUZTaHVTai8xRnRJRGFCOHRkTjZONXVCb3kzcHpNOHBockhUaExDN3JraVFkbjR5eitCc1k4YzhjVHo5c3pVM211Y3BGNXBkVlB0bk9NUGc2U3pKSWUyWEFEOE9VYWkxL0MyY2Ricmg2OWxZRkRIRGhZSXprdXR2RjdVY2FibmhhSm45K3FjbXVqQ0xYQ2dHRnZ5di9GREViVWJpcHdQS0JiRlF1b09MQlhJSnp2V0UvRDdtZi9RRThRVGZpOTZJS1YrZ0k2bDkzNEZCSnhnQUplT1MyME14YzZONTlEZitFb1F1anpSWGtHZVhPYUlaUVcxMGFDZmR4S0hGY0F5dE9pWVhEUDZVNldUUVYxL2JiNEhWS1E5ckhSS2pubmlmeU00TFlrbXM5cUIrUXlyZmtwY01oVm9EQ1o0WXBtWGF4YkRoOFNNZ0podERyZk1TTmpzUjUzaUJ3TjFRUkx4Wkl6ak11SWQzRzFtbElXOE9jdFg3WGhqMkVZaG1Ga0x1c0x2alhkaXhreUlISUtkVE1mNmFQMG5WVmc2bWhDVzF3Q1M0QWxqS2NGc24rUXVDMFRJNnpBbG5OM1BHWDZaSUFOYmU0Z2pZTmYyWGFmYVVHWkVqZEdXU1pVVkc3eFJ2YUdYSCt1UTdyZ2RucTdIYVdVTk10aldPamo3Mk50ZExJcDkvQ3lTWkJOWTNBREttcWRBT3laWHR3N3EycExBaGNnekEveXhrcW9BLzV2ZFZnd2dnTTczSWI4eStZSnFXVU82dUZYejNaVUovWFRTb1FiZEpiaDJ5eDMzdXlkWkhPRU55UUJ3VkRqOFBoMVB3T1dYM0RrVXBYdWNlQ2l0U2VLbWZ4bFFPM2cvUFBNemcrZWJ1RktVckd5Vk9tRWdYcURyZEtkUlNQM1N2NW1LaEdTeFc3V1Y0K0ZndWErdnp5TWl5NjZUUCtyYm8rNXJDL1lON0pxdEhqeGRKLzF3c0JIZFBpQ29oeEZXME9kbUlwVkdFNVBzVjdtb3BKcC9SeG9tbmVhcURib1Rva25wdFJjekdrSnYycTg1cHR2NmJ2aDQrYUlKNDl4b1VVb0REanhDMWo1TlNNaktaZFdsQlRQeFFnVkxxc056SXkwdTM3YVBuY0RNUEd1UFozNDlRbkZjVDNySUpVOEdrT1NqaUhYR1pNbTB6TnJYUkdHY0hGTFBYaHB5MXRGdUFyQUtnRmZTMlptM1JjM2RCaVFCTTFDNlZXM3hIM3laNGRDeHI5VG9lbDgxaW1nenhVWU81Sk56cXVTemNFdVF3NzlOeFBaMEhqVU9VUWp5aDR6Rkc1R0h6QTRJK2kzN1lKWlNyUlU5NTdKTUxvVW5CQ1BKcURwTkwwUUtkSTgrUWpSZmZEZFFxc1BQcDVvTVJxQlUwZlExblF2QnJQTDl3UzA5d2ZJdmlEaUZPKy9QN1pxQUludThaS0tENWNYazYyb3lldjdDK2NZbTlTMEtyemdocGJrUlFmMGdhZ1FCUUt1M1Z6MkxRcy9HblF0akxKL0Z6cHFZRVMrQ29RRGFhdVhUT0IrRXBHWEhFaEp3Ym5iWXAvam43RkdoVG8wdmdZNXdmYnkxeDBMbDJaR2RyUmpYU05zdEU5amdoNUE4QzlITEk3NDVPckxHTGsvbFQ4UEFQdm5xcWdqQ2lXdHVxTlJXQ24xd29UdUVVWU9Bekd6TmIzQWdLUTdCUGFRcnluWmJtVjhkekd3SHdMU0p6dVZRUnBSTWI0eDUxVy9RS1h5VEp0SldSSlk5Um5MNkRlczBMWnZGc0swN21IbFpTeE9jeWQ2cmFlaStqTkc4ajBHWGFobHcyVks2RS9TMDZGQUJucDNpOW1IYzhpQXlGSFpFNVFyVDRPVWF3Q0dSVXF6eVY2L09CVzlmZlQwalZyOXBqR2kralpxYko2Sjg4Y2ZUTUN6RXBpbmR0TERXMVZIbEhXdDNNaFBiYnB0dDA0UTFmUTV3NE1wdVcvUU5sNUF1ME1tclZIUm80TjBGTUVHd1VzMDVlMHN1TUhYb1ZQVWhOOEJSdDc1cVNuL0RFbzgveGM5TWNqU3ZuMkx4RnJ5c0dpUUZUdTVadU00WWlUV2lUV0lmWlZJZkw5T3JOYW9WUml1TXljZWI5ZFFTYzNxdDNHN3lRQ09lNVhEc053aTFJYWtCdUJtWWZGWG5pSk1Dc3kyN2w2cjhpemNIOUlkU2FvcXhORXE0TVIwczh0MUUzbStueWNGOGdnR085azVQUTBqRXY3VTVXcERKU1pibjI0eWZFaWY5ellKN2RTaEFsTXNNQnJKN0Y0YmlIUVlobUU0N0piS2NXdG1wWHMxZUFjSU8xbkwyS1RKeCtqQ1BhYS9FdjQ3L00yZGhVUWh4Y2ZXKzY3WUFYNGttUW4yNkNiN0x6djdFak5wMUlEYlhoQlRSd3FybXRDQ0I3Z1haMzVkYnJmYkYwVnY1cE5xZVNWZ3VHaGEvaS93VzEyanMwYVpVM0NiMENZOEZNQ0tCRkt4N0FlYWVaa3QyOWw1U2RFZXBScHFkZUcxMjI0NzZ4TVB6VUlxK0ZnS0J1Sm94NUttbUJRcG93M25CK3ZSY2NUS3NWMXFGL1gzNWpRQTI0ZFgxUGdha0xnY3B4M1ZwQVJNaGl3YkV4QWxNTE9aSGRCRVpjUkJJZXFVUjd1MEtvUm8wSXRBNUFVRFphQkRaa1hoRXpTWXhFeEJ4MStnL3Z5dWVteDdVZjFXY05GMzJuMEh6dkZZU3JBOWU5aGFoYkNyWEJRYldpRWFNT0tGY3RBemRhbHJYNVJ6Tzl0K2JXTUFvSDdxbGozTXBoV0pwakQxU1dZcmxOWW1MQXFlRVAxLzk3a3FNWXNKQnBOdlhYOUl2b1RhL1hzZ2U1bXROelBLbGpXS0ZjbTd4aGZjZTdKakNnSUJoNXhTcHg3enpId1A2L0pLODJ4Q1J0TzhoNlNTZ2xlNnZpbXZSK3JIR1VhcEhabzdkMEN3bXVhUGlYNHNmbHJaYWZBb3NPTW1QN0lReUpYWWdMY2IyWEJ4Y3pPQmlTb0FBbHoxbWhTUzYxTEdZSHJMbWVUS2g1bmx4OU52MWVmQUNnRW54cEJNRVlmRDNTYTRBc0pzR1NnRUpHTkx2R3ZvRHhjaDlJUC9OdEJ3SzdScGhyNjZSTTBJdlpPTnlBU29pRlZVQnRBZlFNV2hsbkNwWVFwRHpFbnVCaWFvUDlaNWpRd254SUxqRVFweE9aQ0pCd1NlRkk0VVVvbitySVVTOWVQMUZVYzVxMStVaFV6SllCQmwvRWowSVJ3cEl1SUZZc1VvdFhtcFA3OFNzejBFNWZTM0tjOWhCc3NjRVZSeVZvU0dWU2RBMkIrV1Q1bnp2MXN4ZDF5Yi9aNmJacVNIc3JKOTFhTllaZTlJRDNSa0podkVhYTJyS0c1ZlcrdEhQRTZCYUFTQ25xcFZNM3NIa1M1TElMSEtEa3J3R3Qzei9Xa21LNWczbVBETGhSSHlGTktmOWxiNjJxaVdKNEV6V3pselBFblhiVzRjK2M0eStuNWtGdEVRS08rVGtHTkdYNDVWYTlwaVM2c0J0TUlTbDZmcXRsUVZCeW1nYmRlSnhXSUgxMTI0c2V6czVKMVNPSkVYVnBCMWU3OUpyYUNtUENUOFY3bW9aQnhxZXZlbjFYWEY2cGRUazJ4eWkwckdIaFdjcVk5OHpLbDZYRWRIMTBtTnloU042U2ozZlRvejhBQm5pWEJPY1VtZWxHTHdiZ25lbGYyL1BNZ0pRZjN6ZkZ5MTFQU3dDeHlaS2RTbmRMNzZDbFRlc25BVkNITlRkUE9UNjI4bHpjc08zZ1pTOGNJc1ZySHNab2pUUExZVDM2dkdGS3pGMEY3Ym8ybVNGdWJ4MWpVeS9kOVd3Q1JtRzU1cDFwSklYaDFocWx5bS96WDJDeDZIRXA3QWRza0ZqWHFkQ2hldXBVb0UvMFBtZUVNTDY5aG5iZ2tmdGo0U2ZOWm1vT0djY0tvQ1pPRVR2VzlmTjEvU1Nkd0tBSmxsVHBmQVNsZDkvd29HbFZYazU4ajdhY3dNMDR1UC9QQ3d5cUVWd0xQUEsvTFFGUUZ6UG9ncWR6MitaM05waURkd0l0M0hkalF4cXRiU253SHY5UWE0VGk3TmxwZHFCOEZkcXJSUmlSWkgvZW1rNzg5S2RXblZDRi93QTExL3h2VmMrdFRoNDVidlcxd0VKQk4vVkpkVnE1aFFvalBHUFp5S1pTZmxKdmk4NXpLdVYwZE55bUVFMHNZSmZ4eGJHM2lmSUZLeVZLTkZhalFOY3hqdGJFaXBzaXZwTHpPTW5nMHg5RmVjWi9hVFdCL1VTYU1oRmYrS3FpZjQxLzhlcUtyZXpyU29mYkxSWnNhbGtjR0JzNkFHUzcxelhCMWswWXlpdEpCc0RYZDFaa3JIbW01Q3FTeDllMEZWVzJ1VDRzV3ZQQm9kRnlCenF3b3VOcDBHYStmYU1HR3l4ekQwVnFTbWx2V3BYei9OMGdtNW92VGhhV3Q0Y01nTURlRWFNOEVwUzQwVVZjMVZKc1ZOTDQrbWptdWhjSzlxZmRsMjJ0cTQxTFlUcG5zTXp4Nktpald2cjV4OU5hc21XRVZwNVhGcmVMVFB6TVNwSnBrd1ZwYXVYbEhWM3J0SjhlWlBIdjMvSnFJQWVWS3Nsa0NMTmtvQjY2R1lsdUFXaWNHaytPZU5xLzdWOG1pamdiNFlPdzdYbDhZV2ZMU1NxdnJ4TFN2OWVERXRkakpGMWM2YWpUYWtpMWUveHFWWEgyYlJhS0N1eWpYRDFLWGNqUzgrRmNxcVR4dFp0R2RVdkRzclN1OVdKdEVtZE5XVHE3ejA1TTJzbU5IRGphcG1sc09Nb3YxVHhaOGZaZW5QempSYWpxb09QdG5Td1pOSk1UQXpyaG80eUtNTlpoSkJ6NlpYamt3WHJOcGFpMVNONkd4TElwZ21aOHlyV012V3NzVCtHLzZGcm5NYkxQSTVpZnhUZnlWQjlMWHVya3dWcktKTGtScEdpczRXbFlLcHZERG1SN0ZCeTlheXhMNkl2SEd6cVBaZVhtK1lkL2tGK090SmpFSmtRMXhsSkNGN3JWM3NxYTNPTDFsaTd3OVFLdW0rZzloM2YxN0VYdU83ZzVQSm4yVlRMV25xLzJSeDlKcDZZNEFoc3pDTlgxcml5bEsxc3ZQcVprT0JlK3M3ZTRPcVQ4WDMzMjZ5K1o4WFc5OTBmeDcwRC81R1R6UDhMdzcrN0VyMitUeVYrTSsrS2doWjZqdUpUTVNZWm05ZmJPVFB1eDBtMnJYZjY1Zm1Cb3dTSUdZSkVNTlVJTXMwSUxZS1lweU8vK0lMc05zUk9Ld2ZGZy9qaDhsaGV5QUZqZWt3VTl2UDVIUExkTFgzQVRuR1NCNFRHR0tVcG43SkZFVFhhUUwxa2xDa1NVYU1UM3pJSUsrN09WQjhVUWFQbjU2TVk3bWoxalduajM2QUJ4NW54N2dQZTVOR29ZelVtQ2xVa3hncjVvbVI2UDg2dk5GL2tjNExsZjJ2RERpSHphUDlpY0RJRGZ3RFRaZ2JnYVBZZWlYVm1CQzFaamNGajhBZitnYjBseG9NK0NvSGxGSU1YTGdDYkc4QjlSSUxUeXNQVTJtVDljd1RLYUd6ZS9QdldhSUhlV1FCU2R5Z0pXZGpsVEJWOHlUNk83TVJPOUFJTHVJSDJtTWFTY042aEVqL2NCNWRkQnBURDRnQmNHUjZ0MlpRc2FVeVlBdm1SZ3Z6c3lLV2ZHYytodGdLU1IzcUFHREp1cHd6VTNGaU9oeFVFMHVXZFdtZ0RaaXBnVE9JaTFSaEU5akZFYUl4NEVBS3hsZUFaVW9VWTFybW9ZU0NUQklKRXJaV0lRajJybVFGWUp1alcyU0NMYWcvdkxDN0F5Snl4bjZXanNneHVXRm1ybDJwM01OSS9maWZRRjFOWDUrL0NMa1MyUkdSUndlT2RYeDl2QTNxTE0xNnJvbC9MZ3p5bno3OGdzclZrZFRpU3Q1enVoa0MzU3F4ZHc3THdmRVkwZUlnMVBMVDh6OHVqVmpTdlZjU2s4ZGFZTGllMkJ6RmFqcE14WjNHcU92bGt5bUtXdjY0RVZqc2x3N1Y4UXB2bDlzWWdLalByOGhiOWlCMEszbHdzSHc4eFhIdWJvMjk0M0RTTFZNVjRkS0t1clhGZFg1WGxIaDRHVk01ZTJab2U3WUNuYVJLZE1xOHFheHZLelMzZWFmK1F2Y2lYUDdENUZwd3lZOGdHM1BwUjFUa2ZhVUV6MXJ0ZHg2VTFNUDE5TEdnbTEvajdxSnBUdEo3aEt3QXMrWUNISWtXUm03SE01WWpVSjdBWUJ3TFpsQlRFV3lhOFhJQitMOGZyTFdvWWEydjlxSlZySVhLZ2JGNlV3WEQ5UGM4S1ZVZWV4ZUpjd3ZXc1cxWTVic0tFdnR4a1R4NjY0eDE3dlpPUzd4RVMwenl3RnMrbW9pVjh0NnBkZVJsVzRGMzZwZndkRGtLOHE2ajNqcXM5OXBINGYyMGpJSnhqMUcvaCtzQVZ2Kzh3eVN6bnlYOVl6OXRBMFJwWnFJNnY2SmEzbGZSNWlCS2N4S05mQ1F6OHRjL01jcE12Rk9FQUM2ODBQeGI3QndnbnNnRXVpMEFKZ0JJUTRod1dnNUF2MVBBTXRoekFNa05DTmNSNDFSL2daV2FDckRmQURnRnh0cCtNNDRCYlJ5SU5xbEVvdzVablI2MDhTQ3VaeFNSV3d2c0xnRk10ZStLckFwN0RNTGxURGlxejZ6T2xxd0tkRDlFWnhXajg5MHI2M1lKb29vbGR3RGZBTVVMaHYxbm8xeUlKQmtSY3NWU0grT1RNOHdEa2VTQlNQTkdwS1pQMDY4RFBnVEkvSnpSdHc2WTZUU1RSbVJDdVBOWTJ5MjFlUjZOK2NKOENxenQvbFcxT21CNlk1QkgzUFZZbFIrc2loMk4yZU91eDVKdUo4bFZsR1NDdTE1c2ZzOUo4L2tmalRtSjZtaVI3ejcxMlkzR3ZJcGRMZXJ6Sk9vekhvMTUzeTJLNm02bXpxZW9UaTUySTlHb094aGxNQnJ6SnhwbEpocjloeGxBWWNGNEp6WmtZalVIOVJaenpJa3JaRndSVVdXWnNTZTJNS2cwU0N6WVZiUXd5RkdSSTJjVlkwdHNuSlUxd2NBQ1lHSUhHOWVFdWJjWlkwZHNndUVxQjdVV0hGYTBOc2k1b2tDd0JBUmlveTJxR3loYUxMRWdUcEJKUlpxQ2pVd2dCZ3d3QnprQWNFQU54Y2lBRHNRWUF3d05hQ0FCQkZQQVFFZWk2Q3BTaVprREhjemN6QkVMVDZQYUhOQ2ZScTZER2MrNytEQ2psZFFBbzFBeURXMHpGUUVWa1JsdWV6YzMvTE9kdndxazdtYU1yZ08za2JKMU93NksrL1FQWEQ4NjgwOTYwaUI2VEFPcFcrVnhWTHQvVWZFMDdTeXlHTmI1aFRoZTFEQlpKaVNEdEtXVlR1NGV4Z3dtN3VsRStyb0VqRzdtZm91QlhnelZ1VGhVQTRmL2JGeWJHc21UaTBHTXRuTzhtenJyZ29xSC9sTGZWNVhnMVVZZVJ6NkdPdmtROHFIZjY5OGphTno4eVNlVFpYaWE2ak54T3pIektvRHJSV0ZWbVBEa1M5cVc0L3RjOG4rYThKc2wvemVrSHV1TmFma1ZwOUU0di9HYi8wZVp4VTIyU0tvbm5iVFRVM04wVE1sb3UraUhXZEpkR3hncEZtM0RpQ3Q3ZEw5R3k0UHUrWlpsODJUL0h2Nll6NE5yYVU3OFg2aGorQjRUODZWVTlhUnMwb2NUNm0wcy9QSmNWT0NOR29OL1M5MisyZHg4WlZJdjE5dDhlRzBtdGlLYWt3VzBYMUFIUVU5TkEvcmdBNUJjU3NsN2plRGRjbk1SYUU4RlJQZGtIeDdjY0Q4Si9qOVNNZnZuZ0gyYnlFQzlYczIvQndkVkJwT21EdmdPWUcvM2RFd3ZnWnpOVnVidkFDdzk0cGtERW45OFZ0TmtHQlJlcEhpMk9sSkpmOWpUcUFQcnRHdWl2dWs2UWJ4bTQ2OGpGUkZJZ2NvSmR0bVNQdHhGYkE2S2lzNWJKMmdMenFVeFM0UXcvMW9rMmd3M1IxYXpRWUExTm1EdzBld3BxZ0toaGpKU1lDRW9tT0ZPTlJzZXZjWExFcmtyUW96N2pQVDl2R0o4MGthUGlpZE8zS3hTQ1h4V1MzamNOWjQrdEJXWlBsY3cvcEJKUFFRb2xHUFV1dk9SbnU1UmdFbHo3UklhMndVdk1RODBlbnRIQnVCRzhOU3NjMzBEaFZUUUlaT2ZGQzVlejBkVVlGNFlNcEpCNzl3ME9XYzl2QUlKWFBjbFZabW5kS3pXYUdIamEvNGVnR2lUb05TV2tqUzJrOHY2OGJIdFBrelFGYVhaem43QVgzMGY0enIwbkZCMTRXZ1BZMGRITXBwY3kxNHFvSHBzSnJsTUdHSG43Y2x5N2xFc3VPUWE1ZTVPdXVBUTluMVFJVVBsQlVJY2ZOYklkVWdkckw2STJrNHVBRXZ0Q2JRRTBhMjlraUhOSFNZK3hoRmRwcDNNQS9KRnR2NlZ5aFlQUTh4N3RObHZHUW1SdTRRWkljZk4xMXROaTNrL0NjaEQyNFYzRHBiUmp1K29WRVVPckFidXdoekQ1NTBVVldienFFRjEyOFF3N291N0dFcVZQR09qdkNTMVlNQ3BNMnRVWGJyQkV1WkwrNVEwK0Z4WUFnTS85V29XNnJKRDhsczE5cWdPYUg1aENrUWxoWXFqSzJ2NG1wRjF0bUNzSXFtZk5VMjFieS9ESWIzMTJrblJxOXlTNmVqb0xpZDE4ZXB2VmtuOXQ4YUxRNUt1bUg2RXR5Y0cwS2lqb0dYcDlidUlGcVd3QURJTGJBeTJTZFlOTUFpNTd3aDZnRWdvN0t3NFV2QS8wbEFTMW9UWnY3TWRkd1ZEeFhiUFNhd1FOMHNvM1dKZUZqMXkzU0JPMFZKWk9nTTVHTW83S1lmdGdLNTR3dE5ud0dSdDBSYjkyWXVjYy9oRkdlMVR0RnBnc3RHK0FJUTVhVTNLTzhKV2xjZ3UzUjZKU0NsVXFKWmJwL0N6QmYzTmVGV2dzNkRMTzJXcFVtbzhycXpTRzIwOEZBcmxFY3FseEc2NjVidHFLb1J6MlIwZGFCcThpNDVtSUpSSFBjVFlWYWV0Z0llSUdSQVVXQkk2UEZSYmF5bWpXYTR1RnBHc00zb05KNnlCVlFCVURadDk5L2t4MERSbGlTcWFIRzZ4djJINC9FMXpOcms2eXFlU29rZkdSOFNMMDV2OVdpT3pwc2srWGZXdnd5L0FxWGNmQTF6VzRLVmJPRnl1dzFWZ3QydUpRL3IyVnZUTFBDaGZNbG5tckxib2ZiQWpqUkpVeTBNTWRxSmVvN3lMVlRLU1I0QUFxV3NtNFJLOEo3NmVnMk1VUUMzZEFMS1dhWEVyK25yckdHUzdBZEtOUHhHY3ZZc3NXTmlqRzY1aGM5RDJTQzNyVHUrSUdLaTJ0a2k1aytVRUIvb1JQSmN0dFZFcnZ6WitoZFBqaDVIa1Q4UlZzMFNWWExoeDIyY0cvS3FtQldXb04xK2FlRHgrQUxEaHA4RHQ4UE1PRTdkaXRkYUlyTmYybVpVSlJpVFprTkgrTmVmRnAyOE9zelNNNDFwckxRcytVMm92djIxRTBYVmlMT3JMemd2VzVRY2tHWGFHdEJqMDFLVHhPenBkY3ZvZktQcC9uN0hnaW9sT1JTUVYyMGNBS0V6NjlmOTM1ZTJpQnY5NmZGd1BoWUt3dDN0ZFp0dzdnNzl2ZUJtcUVDS1VlVTRScFJXNUJUdDhUeUp2ZERLaFV6ZWlqQmprQjA4S1VXemFSVS91R2hlVWY2L0xXMEJCNHNGeXZMRmtKZlFQaHNhbXFIbG5yQmcwT1FxN1pGYnZtM080WkRkdGhWQ0NUVkxHMUY3S29RS0N1T08zRWNSYzduT3ZrN2JuRzI3SWZvaVFZNjJ3aUlLK0J2OWsxVkt2dVYyMnc4bUlEa0xWNnYzbExWU0ZoZnc1Y1A0UzRGS1dTSFg2dHZhNmRIdGJQelNGYUJ6SWZZOVBya3hHOWZiSzlGSmF2c3AwY3g4SThRQkV0UWloSG9TcWZVUEthNlFSK2JqZkorRXFXYmh3OTQweUUwN2VETGl5MlhrNkNCeHAzR3QzbTAxZTNzSit5TTdhUjBnQ1JhRVNlSUFrMEFVa1JBSHBCODBsOHRpalAvVDZFcDF1L25uK1B2dGs5RHJ4U1ViZTNUZ3daMXp5eEJjTUlrSzlhSVExWE1SREpjWUx5U1lFN1F4aVFaYnprZ25VcUgvR0RjQlcxQVhXU01zQTFQTHkvNmJKT1MzWmc0Q3BpTGg5UXlwTjhEWUV6Nnh0UW42VDE5b2VnbVltQnFxYUZES2ZFc0NMQkFycTkrSlJ2VS9LZGVyalQ0RldzUm43QjFJYTd0NVhSSWhrRFZZS2pEdFRFRWFPa0szQjA2T1o3ZGNJSUxVUVd5VXVwR3JoV0Q0ZnB1bHdnRFZpd0tocGU3akhMUGw2cGQxWkFZSXMrVG9IRDkwcTZ1K3ZhUjhqR0FFckQ2Q29McUp4Vzc3dU9CdWhOZGJDbThIdlZ6cncyQXNnQzRHMGxTRnV2Vll1dURLbFRya2pKUmRaK0xzd2wxajRuZ1RucmIvSzdtdUlhRVBjcytOYk9TeDRWMlZONUUrcU52N3ZZSEE0ODdXUFBVTUVOQkwvR3QvQzZRT3hIMzhtVXI1K3RLd1JsdWorSCtmbEh5eXNqY2dsanNkOG8zOWNyMWFIcXlkRzRoaXJPODVrNUt4WS9kV05rVC9HNm45UEJZTHZHSUxyM2ZjWXRud1NlV3dyeWRRL0RaZWkxankrbElUaXFhTGpkNnR6c29RK1NrUDdaQk91eEdDS2VlV28xNmdzOFI5Z0cvUjYwZXp6ejBYQ3g3VDVLUFVVWjN2ams0L2lqeWxBWGVGWkNtcTkvU3lHL1hmcFMzZmUvSEl3eDFXMVZlU0wrckpORHBZLyt0WUc5SW8rUzdRdlhUNTNmOU9DemdHc0xwYVo2UDRUbi95TDEvVTZ1M2E4UHY3MTAzaFp1OVpmcmY2dXBzVENsdjQyTU5wc2JqYmtEYjVaNGFkZXN0dTVXbDJZZmpYM3RxN2lzeFVFcWR6aEMwbk1SV05zVzFHWnhBVjRSUXFYYktyKytxMG1ITHBYSEhwWmZPMEVYYjNETnlUYnhuUDJEREVDM0NkL3VKV3cxTmhNeGw4dUZrY1hOa0Qzd25qc0ROQURPeTlzZXZ6Y1hKcTNZd29UWlZ4SEFYS0twQ2lYSlZNVXNMQ1l3Wk5HYWJhNHFwZzNhY3Nodmd2Qi95d1kwZlRkVUNvT3hjV3N6NVRON3VoQWtKeWhWQ0FVNEFBN1dqSTU3Y0toQnh6UGtOOVI5czR2VWlzUE1FYnhrdGhJb0Y2TzJWeHMvN00waHhIaFMwOW9KZkNzV3ExVmRjbTlVUEV5RFErc1lMY2lXbHM5SVhablplQzRlUEtyS2hZalVVVWhqRElPWFVsWmpBdDZHRHZkaTRhdXg3WWFMSlNtVWpFMWc2TUorOEpiZVZud1BsSWt2WXZ0dWN1STVpckkrZDN6eVRLNE5aNEZSMk9vbGd5Z1owaXpsZ3NzaVl2YWFQc0RueE5iWHBKQTJ3L2tuL1c1bVM5K0xpcHMvdkNDZ08rd21qYnpIYUVBUkhXTUtUMm0rM1RzTTdhOGc5SEpXdEVObGJFZHA0OVhsRnhER2p4ZHpNM0x4Rm5YSzFDOStZdWFGRzh5aFVKdmFhY0E5MUNKYWdXbXVPRDZiYjRzdlhJTFd4R25RdXRaWS9yMnRrMzNmZFpodUlrbVFFc01LZ1N2eTQ2aHBGVUxHcVMrYVRlRGJjYTdYUXN3R2poVllmUmxNSXp1TzZScVNHVHlYanpjN0srYlVFakdzWTBrZTNiMnY1VzBNOVhueDVOQSt6V1N4TFZtUFc2ZUZTRmZyUjN4SDh2citkU0lXdTZXeEwvKzB6R3VRblljZVN0cnpvVjdiR1M5anBYUFRqNnUwVlRWVVpPU0pBU3c0QlJzMUpaYWlwTDlsejlwTHdUWGkvN3FOR2xLM21sVEszbmV6elNvWnFpNWQvNzZOZm50RVBYaUJ2ZWc5ZjZlbGVueFZSRTQwVHNrNEU0TUtuTDAzeExhaXlWR0xWcDloQ0s5T1Q3bzNSdVBVZG1SVmtRQWFOVFlBMy9CQytsbWxUdkQ1dEZJWnloUXpQU2ZLVEdDZ1RJR0JZMzJ0ZlpIZUZaSzBVOWUydTV6OXpSRHd1OXRpQUNYc3RmWHN5ZkRqZzJnVVhReHNldDdjem5HdkR0amxtMTIyWmhtZC85NHNhazMrSXYzWEhRdXovUTJJZHdtMDZwTlZpdkF3bmtndlgxUlZGUEhtN2I2cFlRczhtVHpsT3BvVTdZd2NhcVV6SGgzanM1Z2NIZnFEUDg0WWttWnZmTDgvWG9GSEo4Und0ZTVzZk4wcTBicjY4bmJVYW9MR3IvRVhvWE1sNFFFMEV0d1NIajdBeXgzSmdwdzEyMldaRW1paUlBcFR2L240OTRvTGMzajA5U0JRVTNpdWVyRDdWQy9Vd1haUXFmQ1VndENQNkgxbmpCOVhBeHNCaHIrMFhPMHE2RjZrZUxBTm5kUVIyMDBZRlI1R3BwYjQxL2ViazJndkR1SnNhSFN3MlJRZUpROHB0ZDJUUHpKL0ZFcFFYUEFuanFDYThCckpkdjNNMExIUVVjUkFWMC95YzBKTGlJdWZ5MUVOZC9QNFgweFl6OTFvVTVwZWpjMVpSWlJucVIwL3dlYk9iQWtyMHdmdzV1QVFuMCtJWTJJUnkvRDhVYlJBTWxCZWk0RDUzeTE4ZVROK0xHSXRqRkRYRUd0bDk4YkR5Y1gzL3VQdnoyTlI2dVVteWRnR1o3ek5CWFJ4UytUVWdOR3ZYODliNitCY0UzeG9yMEJGWW9jd3BXRy9MZkRwdW5vbjRWeHljV21Jc3RiOUZoZVdYQVpqN0ZTaG41dS9nd3ZqaVpwWTBvWEVKb2dnWmk5L3dhU1k2bHQxWTZOR0RmeEFNT21zZ0IveDNjWU5UWW5Zc2t0Mm5ZOEpOSEhkUEl0bGl5bFZIajc3RjVjWGpmV3VXZmd6djZLV3J1OXNxK2d4dERQYlUrVHlmbXlFZktlSEgrTkJubityT3hlZ0xkbjNWaktHTURyNVhrSjE3dldPNHErRU1XTTlmYjhsRWV4MEZGdG55elQyK2NJVlpkZTRTL1grZjA1V3VsTm5ySlZ2dTRPQnJRTzdpT1daaytNaTJJY1lkWmhKN0JuMndKNjFmYmFSWHJ4YnJDNzFORk16MGV5RThKRzlteTdPeGlDM2NjQ2MzNGM0V0VOTEhkWHMzcGtpOTRYQk42VFZvUmFxOHlUd1JLTmM2SFNCZEc2VXBmdUM5UjlsSVQyQnkvWWpoNWJBKzFtTXdOMm5FS1VZTmFUT2s4bE5IamFhN0NzQ2tHL2o5bVNvdnBYMlFKdnNQeGFXalYvTnFzbWlFblRZS1BXdjhCUFRJOVVWVlYxOEtZNmpiNDRKMzZ5UHRRRVJxMmxHYXh3cTliVENhNWxETGlhVkZqUzRpRm5uZkJzQTM0YUV4MmFWc0E5NjZEMWlveGJXNzNJQ1JUYlJGeno5MURnekt6dFl4UkJXY1FLcGdsL21aZjBDaERRVWFFMHFvWnpRc3FjYURadjBiZmxXSnZweGM5RnppVm9hRnozUDliYWtXaGZFbk1LVnA1eDAvVFd2MHNPeCtOeEx6U2I1d0FNUUl5WmlqdHRvbXVLak9wK3V1TFR5TzJ3OUNXWmtoR0szbjRUQTMwcmxYREFiMERyYzMvVXBhU3BGd2d6dWJ2b0o0anFrMHBGK1oxajdaYjlxNGgzNWFZS2NseUsvM2wxMHdIUXYrWEdpZHZMK3U3UEtKamhPdE1sYkhiMUcreTFoWW05eFVkam9XT0pycmFCRUdCU0VncE51dHRsb3RER2dIa29WTzR5QklsQ0dHUlJUUDhVdXJGNXN6MUo3SkxTa1pxaTJsRVdJa0FwcWFOTGRpUFhuNjdmM3hxZUgvTXdSV3A2RXNQVVNVcUdQMXlUZ0J5dkVsL0hMQW9SY042MnhpaWcyaXhhWENFYjdCWlBuS01QUW9sdnBEc2Fremtseng2bTFteVV6NWhPNjdha2FMVldOcjBpbHFmbHpjeFZobFBNMDV4dzB6ZjlGUVVGZytucWlQSUZkV0xXalVnbU9jcmpJdkllK01zSTJvdkxMRHJVTGxTTlBuM3VySUpoSUtZT2RBYzBsSHlFa3RIdEJ4enpRNEM0ZlF4SituOVByZ1VZSkJNSnd0NkhPc2NaWVI5WnM4TUxURUZLU25PbWVXcnRNY2YyaGk5SHVIcjY5am5MTklFaHp2UTNkNC9CdGlSNEc3Nm5aZG5Xd055SFY1RjBpUXFWR2pWS0tnZWR6bzdybFl3ZUdWSjg1MG0wWko1NG9aVGpreUExV01kWTJCRDNQZFVJdHIwN3dsOUJ5eUNvcXlid0V2NkxDa2p3cWhCVmZsVUg5SVhtV29hUzM1cUxUa1BYZHljZnFBcnBOVzMrelE3dFVETG0rOGl5cHJ6ZUdmRXBNTHl4QnFNYUVyN3JTaU9oejhid202dDBqeW1uUjNTSjFJaHlBMlU2dllPY1A5My9lbVhBNG82RktoUkdDOHVacnREcGhyUjhNZ04ySTdFV2VqK1lva3J2a21JeTdtcUlhRXo4TUxTQUUrNERNREtRbU1HK0VGN2ZYQTlUK1RrVnY3ekY0N29aTXlGeHBXUXlkaEJBUHdTZVhESU83YlpwREcrNS9GT0xBUzVtakNsZjljdG1RMkJyV1EwQlRjQVdGZ3ljL2NLcHBPNmw0ODhxSFpXSVJMTmtyNkd0MlFPbTRYb0wyMk1EMklPbERDYWYvVVF0NUJlTWJyR0xibXVmd3NZWnkrSmNrMzhGTUc3Z0lZdUIwSkdEbEo0TVYyc3BQRnBYVHprR29wZ1FsZm41MHJadVljL0xUQmxjRHRqdDdaa1BMYk0yNnZtWDdGeXN0MzEvNVpCam5zU3I3Z1N6SkhMeTBYYWZKeVArYUJIemtMbUozbjYxSXJzaktteEN5NGpVczBNZkdtdHBvc3VMMk5mbllWeFRHcjd0RERHcFJIa2Vjbnk2N2RWLzMrVTFoNFVNblh2Yk94K2JzdTY4M21KUG04VWhGSS9WR0dQdjlqRWFzN0VGbDg3RWFMSjFXQUhQRXo4dHF1SzZsUk9EdUtKaDRNU1ZBVzVjdldUQUdmZjJsZ01JTm5CeHdheVAyYWp1T0hFaEtuRW1RRUtKeEJvY0Y4d1RTVnNrR2xnMzBMa0RPOGRSS2V4Z2FDOFZGd3kxTWJaMkI5S1lYLzQrVW5GQm5Jdk1VRzFuTSswVm4wcWxRTW1XUm5URkZkZVZoTGpDelZtZXhEbDJhWXhDM0s1M0ZDZ1RiMkI3MXJoaTh6ZW00dTZGTXFSeHA4K0NiaGI2bEZtWURKQnF5Y0tENmdpWW1JV0FuQ2U2dXRYUmdSUFhTQStHazEwNHVoOXNHNlZhQndzM00wMlBMdW00N2ZicmJ5MUFQNnArKzI1Qkp1ZE0vblByT09xSDdWbVdVcFFUUUVhZEx5Nk5Ra2dVRklTR0ZsRUUwWWk0TTF1NWExZElraE5hZDVheFVoZE1KOXFZQ05oS09vQXNMOWxINGR5NzhvakhaMjZVRzMvYmh6cFJKZVU5RENoTGc1V0NNTE1YMG1QVjR3bzZLb21zOHVsazdNeDVQeXh5alN3K2lsYzVsZWpFbWp6VnA2NUlncW9uTjVFYUxLUDNBeml2Mm9pQldaTVdWbXc0eDRSYytsN1U0WVBYUXhDZVl0d1pTK1hSY255b3ZVbnFpWDlXT1E4UWVhZHNWQW9mc3pNM3FsT1VzN3pvR016cWRJMGhOWFlIOVdpbXY1MHhqc1lWTWNGcWp6ckR2Mko5NkFGVnFob1paWlF3NG1KL2dwM00zRnVCaU9LMnFMYW9ycXIyWEhSUVJodHZhM2NVaDVONzI1YlFxMWlBSjNubDVhVDdnWnl6WTJiZkx1UDZ1YUtPbHdLVkNRam9NTGRGRUh1d211aVlnMXlzcG0xWW9IZzFqcVZhYTlGRHBaNkhocXlqbGk5YXh3cU00cDdERTlGOElnT2k4dnBFNFdGUm9Td0VJSTFiOEN0N3BNSTNmcURCbU83L1JZUXlRMFZzeTdkdng3WGVKUWptVEJIT29TUG9TZEpRMmVRNFJHa2E4WnNDbEZpaUI2OFZOUVBOdC9qV3hyc0RoYmpMMlJ3Z0pmTllCck9SdVZwalRQbWkzR0RBQTlkaTQzYlpaZzNTbkI4Z080bmtpMmN4NGhiU3dnMlRmQ0FUMnRhOFRsdGp0SGVDSVVhMExBOW1iTnA2a1F0QnpXRkhHeXl0L3FJQ2NPQ2dlQzROeGZ0Ri9JcTF3dTNUb2pNZ2NCSUhzWWFCN2RjR2ZIZ2RBVnJlWExWcjEzVzZPaVNLaXZHNThyOThSaHQ2MFBueFNuZ1NVaitBaUVVemJwNFhoWDBremNsYVAvakpkWXN4eFFmdzBIV2ZCaStNSGwxUFI0bDRmMGhqOVEvK3hEZ1dYdlpCaEFJTGVyL2loOGJMZk5ocU5FeXhJSUlWN1pvMjg3WUh4SUh3ekFvZGN6T25wSDEwbS9oOEJ6SUlOa0U1ZTlTYStIVmJDa3NRbUxPaUZTbEg5QXpWZFdqWHVVMm04ODhGRU9HREZjUDN3WG5PYXRnSkZZaGJORU8vUHNPMHJ2cUVyaW9QSHlZcmFkNjI5Z0R4c3RyYko4b1Buai9ISHZNOW5pRHRtNVozY0EyVWVLWk9RdlNLUHUxT0dRODl1elF6WEp6MjJpR2lVbzZwR29LS3ZXV2dSV2FKZzhmSzdXRmRKaFk4YWVWTkVuQzhhdFF6MXFPeHU0aExucmZBSGhJT1llWG00Y3E2eno4YVFyc0R2NjNHY1ZkQ1ZoWnlUZmZ5cWZxV21QMjJDWjNzaWc5ajY4OEU3ekppK2RUVFpGSjlXa1BseFJLWmpydkw4eXlsUG1YcnpyMlNYN1Q3a1Nlai9zQ1lmanc0cGJNaldvd0o2MTBuMnppKzUxam1RWjBiR0RFbTQ4RkxQazhFUEtza2xNeDZINXlHTURTL3NEQ2h2Rm9kMldOdm5va1RFdWhGY1c4ZHZ4a2dlUUowQ25obGFGNlV3NVhYbTVMd2pwT2pQNkIwSWtZcHNBTE5nb0tTNERMc25wZ3B0ekk5WmlsdzZWTlFCRjl6by9RSWd3aFhLaXhyb25MSmlIZmI5c3BUcm1MZVdZVythY29Nb2JSelBwNmRBazdUaE9kaWxmbkI3WmVxbWl5Tzc1K0dCSWx5dHFTa001L3d3NkhFdXBtenFDbStvYkR0U24wZlVzV0hGb285Mzh6SGtZcTY1UEg4NjdITGhzWVlmVjUwSWxLRzZ6dUZCQnFiUXJ4OXp3MHQ4a2doT0ZlU2lFcHlmbUM1bzlMeTNOeXJQdmpmUDBaa3U5VjdzVGo0MjlYSUFLbWs0R09qY0JDWVYwOWJEancyczVkM2J2VXNvTmtHaXJiSEdGT20vUHoxWUdseEJHUjkwYWczSW8xeHk0T3B2UkkvL3duVXc2SWk4MTk1V0ZZeTJ4ekppUElTWHNNckMwVGNKUlhMSlJaTno2NysyK1EzaFVwNVZkOUZadWJaaThQS2xibEcySjNaYk1qRFVncEtYN0x0bUw3NEZsMVl6Ri9NUkZnZHJFaGJ3bVV4Z2NMQ3hwVERMTE5kTTVWdXVWNGxTOW5yeUMxMWVQWXNyb2JNSTNUOTZyejduZ3JWWmROOVUrMTRWRHl6SXZjbjdWK1V4MGI4Ly8vcEN1UlZBSTRVeFd2dXVtenZRR2RaWXVuMi82VXJNdjVPQ0VzaFhGNlZUWHFqNDVQVEdNalhDWmZreHZSTUFZVkpTL0RscE5wY3pFbGxCaVZGM3pTV2NkWHk1cVFOKzc4bjBxTjdpbTJTWUV6WTFUNDFiZ2V0aU8wTFN3N3ZlSC9iVUJyWVRnWnk0V0s0aEJWY0p4NTErc29ieWsvOTlTQUQzb1lIL3hoYWNpaHZlWGlFRjdMWDZhM1E3VU8yUWVXWjNScTQxaGF3ck93bXc2eXV3Wmc5VXBwYVprUTBUak5vQSttYkhmeFdzTEhTVEhZUjg1Skxaajh4dllDdGtqcDI4T3ZBdkVvZDJRV1QxUUpycjVSZ05LbG5kRVNSSEFQQlY5d2ExNHpHUERiVjhwNXRBK2FsVjBISkxwVGtaMjNibDJTTzZNeWc2M2JHZnVLcldmc1hrYmpabzdVeWNCMjllbElHSzhTVUovQlNqMG05L3hiY28vSStiRUIrQUNXV3RTd2ZoUTJ5NDJSbkpadjkyejRKd2s3UFBxNExtVXB1SVNoVThUS3JZWkVHWkFVdnYydklnVlBTRlZrLytqRFUyWWNPYVEyaXBjaWQ4c2hHcHl2ZENIVmFiKzV4aXRpeTF5N3JRaFcyaHF2UWhadVl3YjFOeVh3bFllK2hzVDlIQllzajdwWEx1RDd1Y2NsbVdrL1h5ZG5rUDJuMlRjWm9DVW8xRnJoeThTbVFjUzg0MkJhSmsyNzdWTFVzZkNwTFdtMXRjWkk0SFdSVkpocE5JZTBZUjVnL0hmY0dWaHJWTEVvT0ppeHAvbVUyeURvenFham9wOU93S0NySDF0NWlMazF4Y3NNZGl3K2dibGtUTjY2U1QrbDkzZVNDYlpxMms2Wk1MSWNuTXV0YTkzdzJ5WmYxT282YVpqMnhiVXhxdDZPU09INm5HMFQ5TDRqRzhFUFJQV0ZZMWpQUXBHZ2lEWDF1N0Q0cjNnNnN2eVlPZy9tZG5oMm9WeXplTTcrakZpYW5kcjVEUzdWN0VEUE85SkhMUUtSUXp5OU9LcHpMR1RpZzZrVnVNNkdEMEtkZFlMQzZWb3N6Mllyd2dIdnlrYzV6d2J1bUJkWTAzMkVXWmdva2FmRExlU2tpZ3dZK1pYUkgySjVlblFKQjFTTzFnZEhINjQ5MjQzM1p0RkxoN3ZDMGFmL0xnS1IzZ25FQ0k4ZFdEUFZvejdUQW0xQlJFWlZ5TENoWVV0cXYxOE1HamxhdDFuQ3V6RDFIR3hQZ1AyNFVpUndCMVV4UlBOejBOODM0MWttQ3lIOStZeDkvajRmR2NXbkNvbWZGZGFwYjFodSsrN3djKzlQZlVaMno3OGIvYWQ5bzZ1dkNtT3dRSnJ1MnNveDNYTmp0M2lHSjRQcnQ2VlRhNWR0bVVCaVNpL3Q4MEIwMlIrM3czRFZKTHp5dUxmT2Z5WFA2N05XNjJYd29wVURFZzRKcU54dTZWcS80Y3IwMWd1RS9OUVBKblFiRzBqSGs5QVJxbkdzNnFybkpvQ1YzWCtjcGp2ZC9FV3J4bUUxbXBSdkdFck9zRlJjcUY2YnYxcDJURmdHZlFxTGd4UDhiSm9LbUFZNFBmcUEzOTNaaEdlNnRIby9FR0kzMjE1ZjZYY3BTY0gwaGorekM1ODhhektiSy9ZMVYvYUNaVDhTaG0rclFrdjZhYnVxWlg1N0pOc2I5S2kyL1lGcm8vSlp4anZ0cVh2aWdiVVh2b3lGSjBtOC84K0ZtNFprcUthVnVZRkpNK3owa3ZJbk5mL2FlcUZzRENaQk1lR1F6S2NRbzRJUjJQMzZYR3ZJUlB6Rm55TlptTEpCbGJiVzBUdElxdmtaL0hHNTlQSFpmOUV5SnhadThZSDRMT2NzdHZUOUk5ZlBUNzNvcVhWVjZiNUZZbCsrSkludHRUZ0lZL3l3YkdWUElNNFVsNVBLY2txdzVUaW1YM2ZWY2hoWnVQYmFpVzlFMk9SK3pyS3VRL2xKejhsQWJ6M2N5V2xJYkc5LzRwa0JzRkRjRjlXRkloVmVYU0x2TWI0dGJVTzVJRGZxOStkby9wNzV1TWlBVXkwYkxhQyswZTVWN1JCZ3FSaFpJc3BJMXM1WVk4cDZGT21ZdHJEV0d2QzV0cmNwYW4vUjFiREg4OFp6RjBaY3ZpbWZvWkN0MnBZeDRRd0l5bnJ5UG5aUDlFLytUZFVRdms4U090aTk4czdFaGJlTWdGN3lUaEgwMDZUanNPNFdEYk9VenJYVVVtUyttblFsbWhUNEFjVnhRWW1oSGhBeXdPU2pzV1JISFFxQ25SREhSQ1lWMWthMlFLZWJDU2pnb3lVaCtTOHJTZGxNL1AzUDdPaDNuazExR1ZIZFBvd3hoTG03RUhwb0ltUTFIbTBXdDN6VC9tSVY3WjIvczlGQ0kzdmJFUkpMWkdjcEhHKzlsV2Y5eGNZbGxmM3FlRGEvcDFCY0d4YWxRMGxFT2RnaEVWTThEQ2VMTjh4UjFJY1lMenhVRkgzNWhJclBQNkN5THNEOExIck1aMmRTWTR5TG1OcDdnVmQ0RzlsT0E5dDJoaDROck9mUldGUk5sS2dscUtQMTBJRGRXR29HVHQvT241Y1F3bEhZRWdySVpYV1cvY21aOEVleG1HL1l4ZjZXSXA4ZXhMSW9HRjYwTFNZN0ozeHpiL25ocm1XYm9JQmtpczJKS1VaWE9jSmVFSlpQNTE2em95emd4VlQyTWZ6K0trN0x6dEMzeTdBbDFjblV6bW0yUXdndUtDc0FYbC90RmdoTFduRjkzTXRVclY4dFprNTNzVk8vNFFWT3VwZlZ3TnRHQ25md0JLSHlmYk8vbWhmMXBxRU9Bb05IeDYwMmN6L2JHSjAwYzcyVHR6YzZIQ1M2L0ZoV0xzL3JaQU00Zm1PQzhuTWluRnk5M0VmRWEvSUp3NmlONnJ0MTh2OFJ0N0NPb2ZOQmxIY09MUWlYTDlUYkY3R0xzVjdJdy84UUU2Z3hKS2lZMUFvdzBpNTJZUHdzNGRWOEs4NTJFamM5aWhJWk9scEw0ZFJlZ0lBajhDWUJjQmZ1cVphRmtPdFRoUWF1UDY5S0Y5WFF0ZTBiV09VNHMzMnpJNEJ4WlVIcHlodWZiQkpIanpJS0c0cnN0NkF4VVNubTI1OW41K0p2RTcwZWp1NHZxUXlJNC9tNE1nNmNlWDAxK2VYRnA1MGl4eklLU2lETmtSc3lXSUcwbUI3YXkyZkNCMlR0elprZUxjcUlsNlBjeXNERU9Udjk3ZFNvZWFVaTUwQU1UZHFmODd6MVM2YnA2VkhCdWxsaTAzZzNMT2NpSjRXR2RtaFJ0UDJSUzgveU9VOGFqN1hoNk9MOVlnV0dKdUkxTXdKOGVqTUlmbkkxYUF0SnE4bXV3US85NW13UnNaUVRhU3F3cHJ4aFJuZ2pJNGJhVkV3amdzVTk4QlNtNEhGVmxRTXpIVlVPWXRkdVQ0NUwxRVg2V2hWZW9wa0FNS0l0VDh4ZElmVmcvcFoxYS9GNzgycnhWaEwxNHRtQS9LVGo2M1Z2cW5MWFN1UkdLbEJwRlI1cEtYUEdDNUNSb00xMThHeEtCeU5MSzhEd0RzTVU0aXZFbFV0eE5jTFlHWUtmYTFHb3JCY1JsSVhsdkNhL054UkFkQnVLbk1WdXdQYW9oRE0ydXV2VU5zWURsNFUxSjUraUppcjZlT3l2Z1haZTlwWFIySElDcTJUUGtibnBUTTRualRWUDRGTnRVQjgreVBEMUFKUlBtMVpnWStWNTdLTVp6VWROMHFCdlVUMXNaUG12YmtyWjN0MHFVUlZDMnkxSk9qOHZyUVd1SHVVS2xPZU5xKzRuSi9mT2daclpQa09nWUEwT2pKUUh4R0RkRnJ0dkdtUitBL0ppNmc0STZUUnJ2LzdWZ3UvdHFnMXozN1B1c3lKQVZoQzhlcEpkSEluM1ZOWWxqbzlVRktRZVJveDc5dTFUeXkyZlIwV05XbmQxZ21VQzJBMldxVENiUUpJbFhLUnZ4UU5PSnVGc0dYV2V5K1NCai9wY1lxMWNmUm5kTUduaDFLYlBPMVh5WEpjYTJjRVJYOWZQRWxCaGhNSXFUQzU1WXZBcDRiRkRUbFh6YVBwN2tRZzd5N0hjY3VTRy8wa1JhcERLemdDVVRNMGY1bzZlUi84RVVSSmx2VUVYM0JhNFVKWUNPQi8yM2h6b0FoZUtJbVlyNVBVcWdWaThydm1qWWtjbzlmSlRXQjNJaUo1S3RXcnl6QzEvOFdNbkFidytuS3FJaFRxR3BpYnFvTHZxbmlkUnBMaWdpaVM0Q2M4ZXk4cU02UkxnalpDc3VTeHFXMTZGdnZOY1FrOUNEeGZBYVdzOVZxR2FiNm8rUldsRmZ1bTVOMUdMT2JNMzRwWGhQQlFlaStCL0ZxSW1YM2tGZG5uWFU0aTMzT0xtWU9wek4yUDBmVURIOTlZVXFOcHRnbERpbFQzdHUxTFBkVmZNMSthNVd6VVdGMDloK1JINHdXTkMvbCtYMk1TZjViTEJ0V3hzUFk2N2VJOEZYdlE5UkZhdDgxa2kyenVyYTRTaURGeG41NkptWDVpYzlUOVcyM2V1dGYya2UwVDBIajRQeXFPampjN1I5NHVYZXkzbFBPZkFIalZ5UGhpdHBtaUVxVDdiUzNLcWEyVjg0Y285bkxDS0ZMeDVzWW9JbU52VWFjL2VpbUNVKy9FNTVVRW9XZnZ3a2JRbzVtY3Qxc3Vlc1ZYY1h3VkhMdXorR1VIanU3OWpkTjhhRE42TjlvL3JoejBicHhyNms5NGczKzhlOS9YUUkwSnFMM2drR0VRbFhUckVXWnBkek1lSkt1TURNYkVxQ0NRTUtQSkVRL1F1YTRkSllGRGZweS9aUzh4YStXdHhhT3l6SXRDNEhveUhyMTh4em42NGpPbFcyZlFLc3FBOC9SM05LcTNZR1ArTWZxTGVVWmxpZDN0amE2eWNYQWtIdnJhaHpWTVVHNFZlamNWZTBmTjFjM0NUZDFieUZyNnEzV090WmFieFNORHExWVhCazN1a2FobmJENzFkSjhxT25xQVBzTDFOYW4rOHN3TWN6M2xLQjlBVHBSMWc2MldUNmVNSWJMQW8ydjF3Z3dlcVdaWVQ5WFJKV1BodjBzTE10bjZmcnhTSU54MU45NjlIdzhIc05jYm0xTFExTk92N2hMcXlxdHNibmRGeXFEUXdrdmtLL0ZPOTEwTmdpbXFkaERRQk5UWlNtdjkwNE9GN0VtUTZCMVJYUU5yemw4WDZwNEVxUklEek9ML0I5WkRmbHlxTVFjUGFyYzlkUjdYMzNRaklPcW94cmdjdkg3VFVLVkxMNzV4K1NjSkhvM0VkQU0vVnNMWUQ5aEsyV1o3SmVYQ2NPaUllYUFrL1ZHOG0xNTlva2JPOGZQeVFrWmxKRDI1cHVkQkkzYWNGZnFGaXI2WmdsaCtzczVjNldXR1BvU0ljSytGb1Y5Z2EwYnpGOGJpSG0rV2J4czcvb2M3SU5RblF6N0Vhd21tQ3NpbTJLSTdxR09CczZmN1czTWZES1pmcVpvcGlnUi8zU3BSNVdXL1g4VjVOelRhUHB2QXhVVTExbWRqdkVRUkI5WUJ6SEpoUjh4R3dBZHF2bjhCQU9lUGJmQW9Yakh5cmk2aDVNbVNsbjRaVmdWcXFnaXdFQ3kwMDN6a3VPbGxjeUliN1VsR3JJWlE4Q0ZOL1V4WmZiTXpZbjczSHplYUJ4cUhUblAxOXE5T0dNRGt6Wml3cmZUdkhZMEFGekhFK3pjZUpsMTN5V2l5NTNPS0JHdXFqWS91K1o0RjlHaWRlUmFxL2xqRksyQVFlY3JIV2dOaDNTbzExR1R2VXZmZk9KNVVaT2E5aUk0dmNVMnNYUGhzOEFmK09EYjF2dGpQVGlCc3Npelhnd3FaNlMwOEx3K3NmYk02aSsrYkJYTCs2VDVSWFNtM2VWTlJpcXJYL0dCL2VQd0lKaU5aY3liL3NRQ2U2eUdBSEhMQVdnTlZRcU96WFVLU1VWbU5nRTNBQnAyZSt4T05ZZTlKUTh6bzZ0QngvbXk5Rjd1ZUdMbzJtQzhMTDFONkZKelY5VEEwYVltNFkvSjhqZ3NwK1Jyb2EyUk1wdVFFSW5JY2N2MlJQVUkzT2pPMmlNdWpQQjhJZy9FZ254L2VvQmp2T1VNV3dmMW9CbmxOL3dSSC9YRlJFcHUxbHVWYjlSaC95bzZOa2pWUy9mMU5xeFpTYnhqcTN2R25FS2hrbVVRejhIY01oLzMycThieTl6MjVNVkwrdS9BMG9yM2tJUnpMdE5pdlpmUGM2VkUwZFVGVmZ6YWFpZVhCQ29sUGZxY2hVMlNOOWdIdExKSFZBNTZSdG9WSzIzSEhrVUV2dWsyR0J1ZEQ4NTd2eDZRU2xWOU1HTHYrWDgraTFpTzFwME85dVFWK2VIdW0xbkxkdmEvakd0S284cXRWdTFDRXl5N05yVmM2SGFVVTlURTJKVXRDSURrb1dDZzhjU2Zodk01WTE1Ylh2SkE5WGJSNDA1RzJ2WFJmK3BGSUpqcTNNcWhONUFHUS9PcjhjcEc2MUFYRnJSa3pmUzFyNURuTFYrK2RocTcxU3o0V0xEdXg1MjJTNi9LYTNoRXpOMG56SmY0WTJPeWl1ZmRFdjg4ekx3VGFMWjRMZ2NSa21xZWpHelI1L2xuYlBUOElzS1pSYlVraUNJeG1sdllLa3FtRUQvWkhuZ0JFYWZOWHc5NkcyOS8xRkJQMFdqbk1YSnUvbWhEUDVGWnAvQTRCdlFSRXJ1QlBaN3pxUW8rdnpRK0pZaWZhUXNmcXZjWnA5MGlwQmR4WGl5YmZ0RWtPL3BhZmM5ci85NFEyZ0lObEtFcS93eHYrbE5DRTBsaXVKdldiYWlWdmF1ODlwSEhmNUFZRmVtYitrcG1xOXc5L1NWaFhPbVMxWkt0MmVTejR5SFZYd1c1dmJGM3lkaHM3bHg1MDlKQlRRL3lEdk03YmVGMlc4Skp4UFF3ZS92b0VXYkdiQjlPRVJvbmg1R1Y0QjVRcTRUcDdGOS9xRjExYnFaeExmRWdzZkFGL3NaeWNSc01WbnBZQmJ5WlBiaGtrRHhjT2VRSElUbGlHVTJFVFQ2NGFldHdkazZtQnhmU3NPUmZSd3piRERiSUVHT3g5QVFxS3VrRXNSaUplMENkQzZVUWpESUV2MU5nNU11dTFROEpoUXlqSTEzZjN5MldhWEpERnVVaUM0aHJwUkFsNG91K3NsajBzbnk1cStLRXNmQ2Q2aTRnYThTcXdodis5cWRaWXFRaysyZFZPSkpLWEhkRW45bHhhVmo1NHptWmZRRHRaWDhySDllZm0rTU10RTFreGx4WlYwMnZ6Y3VuK3NwMUNpMmJNMFJ1eERCd2RCdlpURFlCeGc4OFRkV2pDbEJrRjdkZktsTTBMMC9wK0JQS29wK0hQdFdHMUlFSXc1YXNYMDhzMlpKcXVTcGNUQjYwdmp3eWZ0SEoydGlza1JkVTlnT203RXAwNWxMZ3hSN2tWUHZSR3NmbnFvMDdKMWNueklpeTIvYmx0V3hNRVRuam02bXF2N0E2bWxmNWZuamg4VnlWT3BGRzZXdy8rbFNLTGwrWUhZL0NWdWYxeFQzRXFvcU5aSlRpS3NlWGxUcW9GRXp2RjZrYjdENjlYVkdOK3htWHNIWnJBZDhsZjd0eWtmeVRZUGRiS1Y0dk1VaHgwMjVGaVQzNHIyVThRdHJmMnJJNGtGZ2JRbCtab2hlQTZubGo4OTRMeDZnazJjVmRJUHZqUnBzS3Q3YUxsY24wemhwRVpxdEJWR1JibUxRZTh5UVI5UWhqRjRraWNiRy8yQ3gyNWcwRmg5MnpkU0g5YXFtQWwrY2dOQURIQmIwVjJwdlVuak9senlmQnZIYmpWVGdDaXE1cTJmQXZkS0V0U2MvVDFkQkRqeitMcnVMTWFvVGRjUFhndWpDanhlUENHelBtcmgwZCtrajQzaTYxcTQ3VmI1ZG9GUENjamxPdzdaNVRvMXdYWEt3TmdhYmlVb0xreVpTNmRVdEVlWkdYVGptQjBwMVkwOEIrVVpZL25pcnJhSmhnUitCNlI2RjdraER2b0s1UzNJeUVFL0ttMGZ5ZVU0dG1iWUU2ajFhSUUwVzBnTmFEakc1U1UrUjVuc1VPbGZ2aEgvdkdNK25yYytEL29FbmQvUGozNzFpOHZXRUZDWC9FdzJEWWdIS2s5R3Q5c3JHQlo4bXNEMkEyK3dRWi9ybnFmbENITzk5M3dMWitrbHpnQSs3cVFUSC85eFZvMlpqUTZYRndBUWRrN1Z2YS9wU3lIMkRoSTNuL0pZa0ZKSCsyaUM1SGJ4Zk90emJFb3RTdmI5aEIvVE1GdDJodjFjeENmTWQ5eldqQnJLV2tZZUN5NTNOVmltangrQXlxTnB3T3EyWCtpSXZ6RU9hY1R2RHViUVVQZFZIZWFyMDc0cUpGZkgwTVNjdUp6eUVhN0NxYTV0RlVVblV3elB2eXp6eFFIUllTdm9TbFRoZ1JoRGJKY2RqRFRDbE9TVzFWcXE0cTVFQXhGejB4emRrOEt1QlJXL2NEaXpNZWdzblpFek0rekdSQzZ0VERMRUNqUWhvKzJrSDlhYjR4RHE3OVRCY2NiUnI4OXNnZ256MTY4R2k4WCtZcTNpV2NsSXpiUFdvNzd6MWNwVVFESG1GbnovbFVEd3hRRDQrUTVIbXNjYXNXZVl4VlFzc0N2V3BPQmhTL0kxUEdSWHBiZkIzVW96NXNONHE5dmpIY1Z5TDg4Rzhka1NhNWk0MDg4cUpiWW5WMVF5SEhXUGduUk5QWDltMi91QWVTejUwWDQ0aDBkbGJpc1BjS2RvcHJoNVVhVWpPWVNib1ZmTFZkeWF5TXFGOXdhQitLdldYak1rVTV5TUM2bW8xNWEwdmpzZjFRRFBQb0tjMFRoK2ViVmNjejlzTVlhdExmTWM0eWw0UWxzeDFPeWtkZ2g1dXV1SVNVbmJsS0IyYjhQbG0yS2ZHcGVucHQ4dlRpajlsdWJzeVBTMi9IdmRYS2FKNUxMc3NDbDJtL1hBYzRxNHlubFkwdmVVL2NSWUdETFpvSis4TEM1TVYxRkVqZEREcS9WTWdHWXNrVkkybnI5aXdWZ0tpUEJidEhWc3JvVVlEaTVHVlVDZU5Pd3lmTUx4Wm5hRXNXUkY0eUhqeGR3UHZpNmtKcFoyZm1JbzIrSTYzWHorRXVFdFo5eGV5RDErSGduaXczQWlxcUY5eE9EK3A5UnpYNU9Sc2QwVVdVcmFHWDMxYXc3bVJ5dFU4S1FPMkRkTjdiakpCaVdnV0RZSjJRaWtQSTY2Lzhod0xZY3hncFlKNmZ0RzVtejdxK0R5eUVyQUVuWG1hT3RyTGJZZzhnOUduTUJJNHFYUGpJcnQwSzQ4ZkxUSVRlUzRTSWtmdXlMbFJjTDljZDdDdGJpMXZFSnpNWVdQZ3NtelZpWG5mbHNySHkxelhzdUh2cFhlZGQxaFpLMnVOUmIvcUpoZVFBMmJ1aHIyQWl0ZGZFcTRwNUZPZ2daNnNPeHd4d0dtTjYvTWxYZi9qdlpUbm1rTk5oQlltcVdGNi9GTmRZS0R6dW5IQVBneVVwVWlDS29FTndFY200T0dsY2ZJb3pjenVEUzBJNExHQ2ZnSlI4L1JTUER3aEpwWCtpSTJXaHcwWnlsN252Y21lampyVjNLa3pkTzQ5S3dFbGZSczErL3VHdit3eWpZVytSWTBBa1JXbGovTkVCbVRqSFIyOEtMS0NWTUhVNDdjeGY3SHkwQ2k4RE1MYTFwcDFuNXo4Ni8yWHIyVmlzOGVnNyswTXI3S0RqYlByd0QrY2NmT1hsOTU2SkZmUHhTSllyWEhqbDJyRzdGdy9keHM3WmhGMEdFMkhoV0tSWURDRVBuVVpMekhWdWVFeFJVMGlocllwRHo3NTFWb3VNRkVYUFNVbThtV1dCK3NhUWxKZDZtWTBRdEpjTmlITUxEOVVHcG95dkZIOE5XNzN0VGZFWVhPNXhNMlBJU0RCMjNqOUQwZEpNSHhOVHlSdllnanhVOC9ORGRqUmhycGkvWnB6V2NJRGNnNkZDRStrbzBzbDQxZVZRdXJMQ0xuV3ltNzNxWXRzVTNhUFpPRm40ci9mWVJoUmM2MGFockF3ZU01RGUrVUFPYTNVbE8wckJNalBmZ2tDSmEvMnhVMHh4Z2NOR1c3N2swVnBLYm1INmx3dXlpUFNEUFdzWkZSQ3E3OTl1dlprcnQ3dmF2VDBPU0Fkd1BlT3pFNFRCQitUbVlCUXcxR0NvL1hwV1ZMTFVsNHExNW91amI4VHBxS1ZLUlV6UXB5SnREbk9IVEk2bzZlQUlzcnAvWVRxb0wzZlp3enVTVVYvZmJsd3EranlBZU9uanJaUGMwc1RMS3JrdXVSVnhoZGNzT09ObDk5TndISkdRRzlNMExIeE9uUEs0YTZXeDRVRURHQVp0cSt3MzdCWE1SYUZ6SWc4aUtrbEIxc09KRFE5UE0xTlp2YWlNVDhFeTY4N1VScGpOb1dLdlFHeGkyYWNmSU1lT1AyV3l1MGwrMXJNMnM4cVhLUGgrclJpYTZzQ1d3ZnhpL1FjNy9XWENTdWZ0VzNyVXB4Z01lSmJrMUp3ODhudGo2N2dTYUVBV1ZhaXE0ZklHemFuL2NuV1Q3RzNLaTZlcnZTQ2M1Y2IweVZVUDZSd3BsMTV4ZVZ5RlNYZkd1cXZreUxKeTB6MGJ2MWJIMDFnZ1JlQWZZNzZzM1RHY0tzRytHOFAveUo5eHJIUy9ITFlUNHhYbzdDK3daaWJoYzhmb2tUWE52Qnp4MEdFSCt2Ly9WOGNidU12OXAvM0k4cTlMK2NYUmZiRjlrNGpsKzVFRTlTVmN2WmhUNFlyaHpDOVZkSXZVYXJyTGtKOXBSeUhlMGdSZThjcmYzNWZNWEtwV3UxMGN4OGdPVjN2R0xTUUhOMUxmbSt0MWFZRTRaUUNKV2w5VjFCZU5mV2FlN0YzVUtXczJoN3NQeDF3NFFBZzh4Ym95Q1JxQWZaQ1hjaWxha3VsU0k2Vk9VRGR3aGtyS2V2YXlUaTQzVlVBaDFHV1VkR0E1eGUrRVhRUTAwVlArNG9SWWpLVmczN3djcXVzbEpWVVJVcTB5RkpaQmJWbG9uT1lQajJtT3A0YXdiSW5HcVQrNlNCcU5zOW12aitRUXMwQnN5RGx4WTJnaDd2azQyUVJmNDAvRmNVUDg1T1dMNkcxZzBibGlQSHRLb1R2eFVwWjZVOVo4V2ZaWHV5S21Wc3pUdVJCcnRuSkV1aHBnTURzbmV5NkJ3ZWExM1NiaGM2U1htMlgvR2VVNU1kV3ZVelZGMDJQdmIvYTlSWW51N20xczJ3WHpOQzZRM1V0Z0NVam9YWk5sSGxmdVpPR0VUNkppRHkyek1RRTd2OHNKdVRvMFI3ZkZGbDNNK0c5ZkNKZlRpamE4cUNUWlVyTGNFN3NrdnUvK0hpZldPYTluNlYweEFuSFBLcnZZMzl5bGIreWlrNnMzMzdPMjhvMWI2TU9yNnJBYmRuM0piTjVNTzZuK0c3MGkwa2VnMlU1c3lmbmRnSExkbElEL0pTck5TR3NmRzNsdWxWOUtIanlNTC9ZUWxydXdGN0wyU080R0lGVi9sbGN2dk9iRldNMG92Z08xOGZqb1FGdndzTzZIbzEyOWhZSWQ0cFVrU2FIQWpMeld6eCtVSi9rWmNvak9KNDl3T1dVT3M4anV0L1NDcWE3L09WTnRTb213cUU1K1l5c1VsNHlueVkxMmFjR00rMjRTUGlIM2hRejNQa3lITnRpWXZBYlEvazBYbjNDSnUvZ3F2K01NUWprdGNQZlhQVEgxSlltNHZVK21LMGlrU3V2YnhXZ3JZMnBKMDFRV0x6RzFDa21TaHZqdHZLajZsZVhkdHNHWUduNmpXRi94T1cvVHlmZkh2NUI5OTY5cmROREx4OFNzb2o5YThvRXUwZE5CUWZQZUorU0JtdDBkS0RRNDgxT21uOFArcGozVFpRajN0TXR0djhZTDR3WHBBZXdMbHhwNjlNRVE0SEtWUnRzTTZobEIwVjNMUmlYUWVNZDdGdWY4WkZPck5LRnVZeVNVSjQ1MzFtYWhXVzJYOEhyeFZiTzQ3SW83VGFxeGMwK1ZIUE9QdEczeXhZdnJwelJtNVVmbnRaaG5jTUh1V1RxZ00rZWVkRzVjSGxoSFNyM3Vwb0VNeDM5MlMyTHhlMTNjQzVhU2FnRFhNaXZkMWZBR0JibzBqaXRVS2VkZlM0M2hMNHZoRXF3alRsMFRuTG9XNlB1Y2JtenpMdVZld1NiQW0wYmRSa1lMbGF6RGY5MW90aVAyOFdyOGxBZmkvSHZOUldhbmEwdnFYczh6RjUvaDhRVzlSakVMRzMwOEhyUXNGSk5JUmtSSDNRdEh2dXRzeExXK2w5Z0Y2U1N1QVIrdHdvVEVsWlZvRk9qUThsVHhhcTNsTjlYTUxac1doVHVPTVdQUE41bWd6WEc0TzloRTNiSmwvS3U0TEpBZlAvam5JMUh2RjVOL1NiVVNyMEZRdmVyTEt4dVpTRUdoUFhLczNFQ2xBN3FLSTU0dlhyUFhCemNFU2c0elV4bFFSbStDQXBkZEZwVVVsTlpyUFhzVk1XZU52MmhWeWZmaGdhOWkzUFJITE4ycHNJUnBmS2tFMDFRUGEwb1NQVGJHcm44LzFhYjVkdGxEbVJJUFQ0WktDRTVOenJwL2pYdXQ2VFpPMzEzVXBpMlNXNGMvRWRBdkh1Z3g3TWZ4NFBnMnJHNzN0L2gremdVL0JTYXRvQzRldG8zblQ2NVBGdDZZc1VPNUJrOS80L2dEdHNkVkR6bmVGVG5UVWJpYW42Vk8yY2FiOEo1NlZNT3B3SXNmNThJUVdmZk8rT2ZYck9JVGoxL3JQcnZ4clNHVitWM28xaVRxL1c3aWRaTTlSM3E3ZURQK3AzVDgwUzQyUmEwdnVQU3ZYQUQ2SXUzLzNzSzhZUGhiRHlNY2pyZWtqTGpac20yQXlseDUza0thRXJIcHJlVDZXMnNXUXFlY1lCSGtvVDcreSsxWXI5Q0M4dFhvamxHSWZBK2ZQQkhFdFROZUg0Nno3Tk9SN0w5N0xqeTEzTkxvSERuT2RqT0RrNDNzNG9Wb3lBNE84Z0hOckdKRHJEdXg2UlNLVE1Xcm5pQ1RSZEJZazgyVlBHY3FzQmpSLy9wNUJ0TGFCY3RyVFNzbmtQcElOTHZjYXdveHllb2x1SHdwTituOUtuNWRNaFZ2M3RtZjhiSVMrbFpOVi9MbWRvRGUzMlRSbVFPRktHc3ZsdTVaUmZQT2V0ZDhiMFJPUFFCVWp2RW5CejNXOVI4SjQ3N0J3U0VOQ1JsWUg2NzBMaEtCb25nRE1VRTJDdjNPM3NZMmVmd2RZbDFnSnA1cG4zSnlTVXU5S1VvZURDOGVkNVBydUgvV3c1RmgrTitsU25tc0pNRzRiaU84QWV2THV5a205Vk9xWkpXcTM3ZlJQUGNmUWN1L0hvZGNoWVhNcVE5RjJPU1dJYi9NYksvRDVUY0xXNXAxQzExaU45UXp0dnV6T05jdFM3TzRxeW5uMU8xcWE5TitxRjNoQS9MYlBERUVEZTYzd1hZNHNjOHlvYXlXSWNPbTVQLzc5aEpXT2J5K1B1RFJoTHdlMktkeXBTMStMNVRyUjJvVDN6T3E5d1RRL0Iwc01RTmYrZVFyb0RGQlc5akViMSthUzNYZUxqeDR1Zkx0TzlzcE0wZXl2dG8rQVBjb0hkMWFsN0lyam9SUmJQcFZPdXJRMncrZG1aKy8vWmQvdlFRRHpCOTFXWStGTnpyOVR1WGg5Mjd3cjFzSVdDTm5GY0txTnl2aXZiOXNjOHczb1QrUVZxVnZJRnJtVnJyYnkwVjdFZGx6Q2NIQzNjb2xGUjdiSFEzYzRPbmtQMjZNRlc3eWcvbjBqemN6R2xzekZYY2hMQnYvZEJMNHFnWXlEOGhDdFJ0enBjcHFsRHhaaTh0NFgvaHl4SVBMZ1ZjRHp6cmc0dm5uSnNJeXBGVGJtckwyOXV2WHdiWitPWDUyczI1T0p6V2RVVlRiaElXV1JrL3dmU1hQWTZ3T2hqdEcrWVF4Zy9teDAzNWhDUGw2a3E0RUdHbVR1VVI1Z1NFZFRDTk5DRGVFYWdpcldBQUY5SklxK2pUSkdta05jK3JWOXpBT3QxWWFDSnRVQmp1YVZPbEhQc0lSakIzajF0dVZpU1Y0TjZyN1NPT2RYNDRIcmVqWFNNRHV1TjMrVjRUb1pxd044VHFJTmdmdnk4UW13anFjUWNpdE9BWFZDNFRVY0JoemlsZU9Wd2tqSVgyb3pTQWl5M0hydDZ5cXBMaGlVTUV2M2xLVFAyN2ZMYmJLVm9xenZPUDRwcCtsSkRNbFJQbnhZc1BjWUNabC9QWGdSc05SNlpibDkrcENzNzdtZUF0WDFsanFuUkoyYnoyeXhHTnB0dHZ6Q010RGQxRmVsNGozYXVYVFdyZEJqQW1KalBwcnc0WENETjhpei9iYjhtaFd3b2RuUlRnaWhLMVZTUktFajFNY3JWTGdXeVNiczl4QU5WRnNuQ2xwNnVWY0Z2VUFhVGpWZzZGUENWSmZZUi9GKzg0cnhpazFwRWxaSXEyZUI3cG9UVXAvOEVSWWxrdkk1eXRJdkhKMXZyZnd1MktNUjVkVVJSWVRkTTF0M1JjSVkwZWVQVEJmK0hFbXRaNUluWmFUVFRaRFREYjFJclVuWEc5ZGlTRFRhenVUSllubmhtNWV3cGpvODUwMVZSTUtLVXZuZG1xT3hqY0l3dHpxT1RlcXAyT01ZUG82enQ2eE1HYWNjUzFxclJmYmVlMmtkNm1OMmxSMWwvUjVxbjd4TnA3TmlDTXZpbHA1cXpUdkE0L01GSkxZUnFrdG1QN0lUS1lkT3UyY3BZdGQ1OTE2Y0k4bkRyMzhqR1lXOGhnWnhzWFAyNnRsWEpNd1ZxWWJhaTd1OTZtTHF2N09KWDk3LzczeTZ6UmJscnlIeDd1MTRyQmU5alZaR3BEbGVQVlpQSmRsS3B5U3RXSDhwcmo4bFNpdVBNam1TR1BXc05yN1pIcXFKN05YOXU5aFdBVkY1WXFGenlsQXhCV1gybVp2dTBxWHQ0VWpvVytSK3Z1STJHY2tpeW9zdHV6d0QwNCs1SjM4eW9VN3dZWUVwNFNDVGFsMFhwalgyT29Ob05HV3F2YmJnekFpQjkxUHdaVndhUGdLSmFSTXIyVk9YVmVzSk5wZTNsSjdmWG9HTjdZN3RWcUVyS0pEdE9EcEhGVGtMTmh0SXlYc1ovbWhtSGNjMXp3QWhVM1l6Rm5nUGRNSVhhSXVwTGNyaVkzaldtMUtxQXdDeXU1L2k3Mm9IZGxFYjlzSTZRaTBPYzh1L3lIZjdHVis1MmZPeTVwd2hjY1FvTGFGT1dLL1NiQ00ra3dyT1VXejFUUVhNYk5SL3N5Qi9oTXlJdjljcjBUR3N5ekFoVUtsYklYeklsS2ZwSktsYUlTcWYybEhqQ1VzWmVHSmN5QmVRRkRXZGQvREQ5Nnc3UVV3UFlkbDFQUzRLNmhsV1MzbFBUOC9DOTI5Wkt5Qi94V0xGbFl4cjcveDBhR3ZtN1lVZUFHb1dmU1B3QjZLNld6cURERE8wZjhzSFV4dDh5UmtiZGVoTDBjYm9Gb29HczFDcjV1RTFBbHRMMlNZSTk3RENhRFFlVGVBVnB3Qlk3OEthODZPb2FRUURzS3laMVFRaXBFejU5MlYvYmZHUXRsRmtiZU9vdUFPWUcyQ20xdlRUNDBORlBnR3cxOVo1RTMwSjBBUzZIdExlMmxkdml5TE40d0NNT0h2VHR2VmhUYVRxT3Z2YkxCbHMzcGU3VisrR2cyOExKN3cwQTE3VnR4TmJhQmI3dzNDZUxrUTBmVkxTY012SVpGSDltZ3kyVjFveHZmM2JlQVZaQjZTWUo5N2dXUVl4aEZsajlTOWwwa3krejAvYWw4a0dsKzA3STRpWmZJSDUrYVp5eGVWbThZeE1UTngyV0l1ZThYY3lheFJFVkVuSUxjRXVoSGNVTmcxdjNZYkVGdUI0eThoakc1TzlsWnp0Z2t5cUFJOEhMaFhPNlVkMHE1TVN5MzFmVktnaWJ2Q2VqZGdYYVlzZlREZ2NOVGhEWUt5NXczN1Y3dVNTMlg0MFhVOU1sSkU0VUIyNWM5elAySWY2Ukk4Ti9FTFpiRTJ0TWQwL2FtWGZMTmhlWHpLaVVlOVNpWWVybUR5akovL1BheURMaUh0WUlSV0lZSWI2S25NY3BBUHZ3MVkrQ0V4SUVVbTdLdlJ6cS9mRlM2QzFpNnM3Y1VpMUlPLzBGRFhmV2NqUXIxNG05M1RIOTcxdUZJZzd2VTVTQmZvYVo4NDBQUEhsMUx3czN2UlVqMjBXZlBBczcxWHdNRm1hUUhtdUE3UFc4dm4reDBLdmp2L2JpZkdQWGt6L3ljMlVna1ZSM1VYMXVtVnJRRWtua3pHbnZPSEVqQ2p6ekZZa3crbll2NUJWTVpwbW5pQmJpVzUrd1VnSXp3M1J0Y0x1NlBianprWW44dVFWcTVBeFBwSC80cGswMXpvZ3U0b25ycE9RdWtqZ2QwWVdMTktOS2NhbmY5M09Idnd4VjEzOVZQQTNaQ2paSVlmWWw4SDJPWEgyV2M1aGRMb0hNaDM0MnlKMDFXMHFPdlE2ZzNUVkhPWkw3K0VvM3FLWVVXdUtsS1RMbG9HTStobWxHSUJER3g1WGQ4cWdjR01mTlpYaERHZDFPUzI5OEt0YXl2RU1FbHpFUlMxR3pFcXplVmw2U1l5SSt6NGdTc0k5MHRPTXhpZnFqS2pJcXVtTnpwREI5Y3VpUXdCclVLYWpwclJRVEZkSTBZYkFvWk1ndzVUbHdENVRUcDJxZit4RStTUEY1VUl3aTJoRTMyTzNlcnF0NXFueTI1b3N1c0h3OGhpRmdoeXlaMVZDQ1pXV09LYTFtL0FrM0xJeXR0cjNFdC8zUFcrV0V2QnhmVkh5ZnZEKzBHeHlBQjltYmxKTWVqbzFNTVo2SHBaU2ZtVjhOTVpsT3lHWjZWNlVsbTFCcCtPSXZ2LzNUL3ZITEJvVE50YTNvQzRpWHFja3FOelNhdDdSYTkwZEN4emdNdXM2Vk1lR2IyeWFpbmNDMm5uNE9aVzVlR2JhUkZiaVE1bSt1UEhOeU1CdWJtbXk2eHFValZ3ayswdE5WMFprZ0xDcEpWSGJ0UFFESWZYV2Fwc3J2Ukh3UVJvelJDVlhwaGM2RHJwNEhrWGN3ZDIvWG9VMjk1U1RVWlcyVnFZbjNiVHBMVWtxQ0FWeVZXVGkrckJiWmRkd0dhdWxYc28yUmNyUkpJekhpYldKSjYvSUN5UTVXRWl4Qm9rTXBWbFR2UHhaUEh0dTlYeTdSTlBYK1hrRjV0SUdPOTdzQ05ncFdXdHBjczVXaFVXV2QyL2NwZkJRRUJmejJrRCtyTitjdHpETlk2bmVmYzEwMGhLOE9FQ0ROaXZjY1liUFdxOWVUVys1ZjlRYmxGOVNHNDhicHhiTk1uVGcxbGIyZTFwWHpwVXA2S2lSdmNjdTVpZDJkN2loMjNzTzRaRHMvVGRBWmJPQ1dEZko4Q2JzMFFvaHgwaEptZEVTams3S2tvazE5WnRZbmFJTEx0WHlmb05sWStnN0taUU1PYnpHeC96ODZScTR3OWFlLzVBdlgxZi9Ub2lkUFRERi9ramV2cWVNOGdSYkd6bmI5YVhDY0paOEJLcS81L01MM0xJUXlWaHlDeUJXdXBuSllKQUczK01BUUdJRkZGU3lWNG1EeXpzT2cyb2VZa05iOE5WWDFER2lJQ09kRDB5YWlxNlZwdjc2NjgrRExKUnNtKzNUY1VmdXZBL1RualpueHBtNzFEWXFQM0VTZ2tXaEhRK0RVRnJLMFVHY3cwWmloV2dKUnVVeEQ2c1ZvVzJvekVJbTdPaVJZT1hBRllqaHhFNVZVbG1VUERKcUtjOW9UbFFpYjBFd0hSMVpNMFpQUlR0UEI4WHNoSEpvelJ0ZFprazllRVh4QjNueVdXSTJCeHczME1NRm52N0ViMFptMmo4UkxYbWdYOUpRTEczd0J0SERNRzZBbkljWTR1SzZaTFppcVdBNXBEN3pnUXNHby9MZFdXdG83Z3AxK0xRQWlSY1VOVVU0cVJ1RWxIZitueEl1QlhGZC8rQkwra0dheXNXRHpwbitGQTRFRmtuUkNGOHhKVXBDMUNVd3JMUUVJY2xha3hqM3BaVU0vcU00TWZGcnpLNEh2ZUpMNWoxTmhKam9wMGtCRnlYeWtid2h2eG95d1VRdVBUVHhGS3NGYWlJcHZOcEdNZHpmQjBacEJCRGFDSXd3Z0lhZFk2S2ludCs2OUhVN3IrV25MVU5jSkpuRnQwcTQ4Q0l6MkdkZUpEMWx1MjRnUk9XTXRLMk1TbjZ5aEJPMFl5TEVEOURtZmhjV1JUL3RHSFBuYU1tQXNZRmJyV2tTWCtRSzhoZ3U3S2RLZTNpUXZsWUNxaHBab0I0VVJjVjBWclFrUzZIeHRBSFJ5SGYweXdOTWc3S0tVb0VjaHVlNWc0bmlqSno5U3YydHhJR2NaNTIzb0J5bHNhcHFrY0VYRFVRL3FiVDdUQlpydGxSMmdtU0ZRN0gxUndsVnNoTmtveXJVRitkTENaYU42N29DTjFiT1JHOU9pMmFsVklSMFJxK0lTOWtLVFlCekhIenlCN21TcktKbnlXZktQTUcySjh4eVBpY3JHUnQ5M1BHbUFPM09ROVk0eGNzUERIWlhOR1NzRm9SRmdLRXV6ekp1ZEt4Qk9TQTVBZWhSNnRsUG11RHM5Z0hkQzFuNVZHY0g5dUtUWWM3K2VhSktPc1hrTmdBcll5REdIODBFRnhEM0l6RDgxcnVUQ1V2S2V3TWkxL2NGN2VRVUlBNmlHdjRIeDhBdlA2bTdSY2NoaU1SUis1NG53OHUwK3k4ODlkenJiQkZZMlpWMWVNU1doaGtiOTFVUlNKRVlqcU5Xa2hmeUtaQy9tWUJ1MjVocjY4Q1dRbTR5VjJqbmw3VnVmRHlhUWptdE5kNm40cHN0NUMxTldkd2NDM0dGbHdESzdLQ3JrMHJQbG02R2d2UXRnZXJ2d2RXYnpZaWlIWkRpVXRJR2tQTmZJQVNuMG9RZTArVUFhQU1XclRxR1pnK0puSEdVUGtINkN1RmhvN1BDdGFsTm1RZU5UYWt2SHBDRlJtVVZ5cG1kdzlPYjM1QS81QUNkd3h5VFpCcTZqOHJxTnNEZTg0VTRndnVFNGVTMVhNSXNoV1N1OEtZSlY2NFRoVnpsZ2xWQXEvblZMS0lCQ1hPbXlYbThsSDZmT3c0WDFCOW9GdG5WU0Y3SENmSGlKT1dIZ1JCRWVLb1VBeXUyZHdSVkorcEtydUxYV09CUkt1N2pyTHFjdjdmUkFhbEV3WkNYSFlBb2tKL3QvemlBNGREZkMra2N4am5hb3F4dXNCc2VPMDVpRVk1eTBJS0M0bktGemkwSERoSFVYMERJblkrWjVnWEQrQ0dSRXcwUGJKSGFOaStWb3o0U09xV3NzMVBKVm53K0Z4VG8yN0NmUnR2SWMwMVVRNmdwbk05U0hyTzhrUnFJcmxyYUpKZE54Y3FHbGVDMHR5cE5CQjJRLzRzU2tvOXB4d01pc1ByRjBlUmJ6Q0F2eFliN0FRcXBKN0FpTTNHWGxZMDZ1V2FzLzZ3NXZQNGFzOHZYMTF2TUd6MS9oOGpDRmV5Qi9nOTRwZ0NvaDJqSzdLMDh5d0pwbjJSUlpaVE8rRjVDcENlWCtDQ3Y0NklvQzdoTkRNa1phbzdzN2lGa0xZRy9TK3JWRFFobjRVWmdBQkt1L25DeURUWjN6ZGM4ZmRkTUZRUjFDRzZUMFBZSEhWNjhxeklsb2NleE9CaVZlYkRjQng4OWpzRlFHeVZ4RVZGeGt6M05qdU5GemZya2VnZ2MxQ05SSkhVMTJRRkRNakdua2h5RzVuMzIzV0J2TVV1YlhlSkFvR053TDc5NDRTT0F6Mnk0ckJaV0N0RVo2ZndMU3A5SUptTEdFZXhCU2ovQlhPTHlUVE5ldjBYWUtxa2ZuMUNCMmZWVlVZaUpQckxKbXFnZUtDcEdIZVZxSS9Bd1RoMENHMmtEd2NDVWoxWmtFdUx4ZnRlWVNHODRaeU1GYzNINUJpUzF5RTFsd1BHaFcrY3BxNHNybEExeEI5MzgvM1NpcDdWRERqTnQwOXBSUmsvcFNCa0o4LzRmUzRraHlXbFFQY0crTU42dGdCbXFodGZwbXdvUHdmK1Z5TUFqRkE5ZGR0M0NkUWtNVnJadGlIQzdDdDY4SkFuSnNOZkxzUWgySDg1bU0wOTFKWkMrekFWVkNzeTlPQ1IzMDRwM1c0Zm9JdEViU3FnaUp4Zy9uakhEQWtZaG9wTGJ3cDZKckFUZ2dlbXhYRUdCWkVsS0I2bHYyUm94OEt3WmNXM2dYTlRxK3VpT0ZCVyt3RUpyMysrZ2Y2SmdpRkJmRVJ3Qm00SEZFMklYWWcrS3hGUWNxR3ZuMk1VWGNHazQxRXpFbnNEcHl6OTVpMkI4Z3JnR01pZUJJaHoySU9sdXZ5R0xWMEs3WDRoQTJVbmhVdDFML0RCUUlud2JiTjh4eTJjK1dUekZkWDlOYnhlMDFKbm1kT0RqOTUzK1o0Zzk3bUpmMDdLNkprOVVtT281dE9pZXBmc2VkN3lSRTFydHBwQTFsZm03ams5azBjdVRwSDcwVWxvZkhzSWN2THA1SDFYV0VST1A4RnlVVGo5QXJDTHA0WEVtcjBtMFdyd3RGMEcwZDFlOXo3WklmMlhyREVpWndOaUx0WWxheWtuSUtuWm9CUU9Dcmx2SCtnMk9rRXVxQ2tpN2d4NnhEQnVReXM2VnV3anIrTmNjSDd3ckdrOStXUmU0Z29pbFh0Y0VWVy9OeDB5YklmK3h2VHVRRmR0MENSOVZ1SVA2eGlRZWc4ZGM2TXZHUmhqZEJFd2FNck95UXJSVDFQTVZndVJLRDZ2VFkrZnZhZytrZVV4cUJVU2FMWlZnNm8zRnlIMEc1ZmlxZWlSczZESjEwejRTWmhmdHhmR2tlRWIwTzB6RGl1WUFjd2p5WjZ3ZkJUb1R3RGdCS1BENFMxbmdrZ2FxdlIwQTJZWEN0cmZnU3puUlZqbjV5a0dxRk9uT0ppb0VnY1dRRE0rVFhXbGVYVmJlL1Urcm1kbnlCT016dzVLdkZ3WU9uV0RUcHpJSkl0RkdsZDZ1SEdvMlpWSFRpNlZQL054NmRSNDgwd2J1R3lIVVVmaWV2d2RSMEU5VlNqL2svRXVsMmZYNjgxYjY3QTRXRFhJVDg2UjQveVJwUi9qM3dqYi9zZy83OTF4WnJ2bFEveUIvNGduL2RCRGdzR3FmM1Fxa2I0eTFMWm9tZzZ1ZzNROHQwN3d0TU9hd2hEbXA3TFFyblZQMy9nSktHWEZaMW0vSnBXRGRGZW9xTjVpR1Z0Q0Y0bzdMMnp6NkpnZWFYV2U5dlhCMkxTdndmQ1BDU0NrWTJxb28xVE8zUDN1ZFRWaHNXZUhodkJYcWR6V0xQcDdOZXNPdk9wVzFYdTgzdDVwMWlyS1k5U0JGR0JSelZuWDVydkdtUG1ua0IxZnVabVEyVmZ2L25aeWFuekpCRyswL3NOTWdJVmFwcG9xSmErbExaemRxUVBzVDg2MTBmK05BN1BGQUJFeFpITXI5NzFWSkFUbGRmc0d2cGJjdzN5MjNMdEZnNUgyd1BCL0hMWDdYbTY1VGF2NEZXdWJOMDVzTy9qc2VnVXZacSsvMFRIcnB4ZUJleTE3N2hhTi9xaDRWK01Tb1ZVc09XaFVmUDJKOFRoM3M3ZVJqdzhJYzJ1UjBFUFBjNk04bXZpclJVTjVxa3ZzOUUxeXpXbndXc2ozYUhWZWgxVXA4TTBPS1RQbjd6WDZha3JaZnpDZktQSUtsa0pUS3NtUk54UmV1bnM0THZOd1VMN2htM3d5aXluclhyYm1WR0FsTEF5ZVVGTytWb1h5ZVdEOHViUytiRkdwbEJjZ1hPbzR6QzlvVTYzdkcrNUp5cU03Q2laYkFob2FROSswclZzWVF2RzZ2N1ZuT25vS3NLZ0kzRjRpNHUyZlJTSmI5YkdyTjc0bjEwakw0Z2k3VDJ6QVp2OXRGTG9PYnNWbStGNnFPQU9Zc2Y1YlBHQ3FkbjVZeVRCNzU4Ly9JaEdkYTlHSEdIMFVlUDlGbUsxV1Q3SzRvQW8rZ1BlMFdZbGtnc1ZBb0NJcWlJYk1FampPa1FIM2hEK2JxT1o2MGR2d21aSHVlS05PUlZ4VTUvKzdTTGswakJwTXBISjExTFVWMmgrM3ZpQXRibEtxbzJ0ajNhRXpvZkU3UUFVaFNxd0NNNDhoQXMxUyt3NFByYXFkKzBhVWppRld4eHdtOHdiU3NYeGZtcUdCRHBlbElXWjh2RHFGaSthOGs4UEVPUkZtWGp6WVk3U2MrRk1RSXBWKzk1eWdNVW9oS0FxWmJpbUovNzV6K1F4aUxKc3laN0thTStoMFIzWVBEYURHVnNKOCsyNVlCZXk3YUNHcjVrMFRQQ1R4UHUxNDd4YjNqem5TN1ovMGpBMGMyWW5Bdkl5WEV2M3cvaVh5VmlnZVVqNmxSUUZOSHZITzFYTW9ZNlRTL2FyNjVzSkplMFp5SW1hUm8zZ2wyQU9oMmcvME9jWDZYZ1c3Q3pDS3JaSDdYNE5YYW13bVVkbTJBZTI5MmpTZlNuczk4UnNwYU5HMFZETER6ZFlZSGRXSHNhRjVWTnZycktKaHJNNGxrOGxlSEd5NDBjVmxoalB0SkFEcTdHWkdibFNSZWkyVzQ5dmVSVEdmQ3dkelNKd1hhcldUQ0Uvb29VQml1dTIrMVhUT3EvOUg0K0VaMExsQU5Kd1VVZWFKaitVK3RCVVIxVTBKRndVbFUwQlZtTmNMK1dhaVcyYUh3dGFDbGQ1Y2FQYjdxTkFvYzd3a1lwRnAxWVltajRXMWFUaEtmcGxTM29tM1Joem1LeDIyZ2hYSnFZclZmQnQ5Z0ZxRlU0VVlHcjlCdFhKallCZmZ0ZGwzcHNjK3ZvODhJS0FaMXRMSkFWeVRLMlFJZ2JvMjhhcFRlSVlXQ2d3bDlUZHNYTEQ3ZjZ3SDJ0aG5uN2xBaGM3eU94U0ZBQjZPdGttbFQySjE1SkFaMTFiSnR3T1B2UnFCd2l6a0duZFROdXNuR1djMUV1OTJGN1JoVVN4bklvV1BtRkxYNVVLdWY0Sk1RcEVzQzZncVdhZnhlOWVpUHJVMnVZYkhsTzR5OEtwWHd6Yi9BdTEvVGw1VHNJOVdhd1VVUnlSaEVZV0JRcTRya3pMVkRNdC9mZE9iZlN5a3hDZ2VwUi9CVnhzLzdLZFFrc1RjUTd2cWxYYXVwV28vVEdOdVhZWkx3ZXZaTVVTOGliM1BqekdoSXhneDFVNFV3Zzc5SEh5OFhZdGhvUi9XU2t0OEVEVmwxZXllUzVBTDgxRXN6VHBFaTRhR3FpSUZBVXNLb05uaTlZTDhhZGtPNFhxS29jT3hUVk9QVGx3QnNuTmhONktjN210MGJFengzZVBjQnBONkIxYjRKRnhBYnl4c3hvL0VsSFkvZGJ0YVJTVzl5MDNGMWY5RWZXaXhmSWViRWVkUmQvZlZCN3p5OVNlNW1HOEFNeDJZTU5NbDBDOU5CUFEwbXpYUEdrVHBreU9BeGlWU1IrSDdZL3dhRDAvVXFQWndMT29HTVE4OGdPK0dTc09qL012OEx4MXg0cE9HazcxYlEzZUp3ZGU3ODgvZjVjb0htaW15Z1N2dy9uV1pPM2tJY1pRZElUQkJXbm5ad3FPeklLYjFoVEJSeWhrakN3YlY0VE1xMmtWYXMwbm5FV2Vaa0NOc256R3ltMmRXT0ovR1FNcjZ6WGhJSm9nbzN3WjhMZDZDRCt3WmtqQzBYWitLdTBYTXJRZmxYejFBdmFTTTRDem1rRVppTXIzTHZNZnlqdGV4T2RMeks2WklNdHNjMnZzbDl6T294Yk92QXh5UUVJRmdzelllbVl1TS9wdGVJZkpzb3BDbmZxclV0QzZiWnVXMzR5TGQwL3FROFR3YUc5akNFL3BHZXRCcHBlT3ptVkF5MS9QdTFVVnV3QzN4MWFEMGpMd0ZueTN2Q3BYYXBpeUNCc2RJV3NCdXJGQ2Z1dzBlZWNMdFZSZ2xhMG1qcEFiNFY2dEZFRFlTaDI4TENOTmJhdElML2o4M2ZQTXdSVlJXVm5HZE9MblFDSzJZM3FUOUt0OTU2dU80bVgrQTZIYm94M0xrK3NwQVN0cit5TEFGQzNNaTVwWXcwTnJUK2J6OHg5djVMVkxwNEg4RVIySktBZHQxRDhTL3J0YXJGdWdHZCtuODhZcXp3QVVvK3FOUUV2QW5HL253UWczOXFoZGVtZEVmaEVjZzZTZGVIbXE2SjhZUWZYa0sxdTc1MmNDNVkvV2RKUGZ2RnJqWGU0NGh5bUpxVkI2WW1pZ3hKUEFvTG1TMW1aR2YxWkxadzFqNEprSmVKWkNKNVEzazIwMXhpOU9xRVBxQzhqbDBXbzJBZzJGdXF5SEdKUXlCZEVUL05paWdlVlpWcE01VVNTb3VxRW9KQ2VxWkJMRktTUmxVREtmM3B5RlliMnRmRW1VYi9RYitZbDhrS045N2prckRPZ3BZV1NTbTBMRDNWL0dYK3ZmTnZ0YURaWXFieFZLT3hlR2Z3U1B1MjNPZkg1NEh0OHliVEd5L05MYXhrMXdHNGpQb05GZXVYakJldndyaXhORFpRN3hITE96WGM1N3dSUFViS1M3Zkl5dVRDSFpZWVZUMkpHNWc1N0EyeWJTQTUrVERYSGRmUWRkUE1oRU1iV3U0ZW9nWGNIaTVlWUt2Yms1VGw5aDRFWjl4T0VDWVNVMGNBMjBtZlJYYWlBSzFZYVkvbW9HaVBmdE05dGJ4cjk0aEtybWdGbk53NGtwU2RsUDVuZEJXTm5hN3MxK1FHamNTeG50RGkya1owSkNjc2JRcHlWVW01Zzk3TVZPTkZCTVpvcFVCNTJDZ3lSUWJQYmczb2JSRkxYQUNjMzJqYVhGbWFZZG9tdSt4UEtIbjM2OTl1OUF5ZHFaMjNmN3FUTEEvQ01hK3FYYU1INFVFZ3RodmFBcVJtNENqZFNWVi8vaWlXcFc3M0IyR1QveXVDY0FSN05ydWVtTlV3dHhvcm5WZll1U2syUWhuR0UvSzVhaXM4eHRyWmRmRjhLZ0c2MlJ2K3pnaER5R2RXOHZic1YyVHZqNVpUeHpKeFFuN2NhYlNITHhCMWViYjZCNmo0MnNwaUc1VEFad0hPa0trUTVrY2E5cHg2Ymp2U2pQNi9rdFFMR1J4Q1FqSlJ0SnJDc0VMbm9xL1B2S2hLS2RNRTFMWVNEdko3Q250T1B2SkVWZ2RocktlTm1CTWp1MVdtVEwxWWpWTklIRTZFS0p4Mm1WZkxVOWxKUzF5NE9Ucm52L3lCWlN3NW5Yb0ZvL2UrKzd0aVVhZDBsU3YvMGViNHJadzB6WFpDaDZIaGtuTnFxaE42cEtIaHdmWkpZaHN6dXFOaHdEY0FPQ1dacjNpRTFhcGRWWEhxY0lmTlpVMEZmdEZFZURHZmw0V0QwZDllc0xoQnJteTZVNXU5dTZWNld6R0VvYUNndGVhb1RhZlIxaW5ocHpGcE9vTVZwdFNHdm9ZanRYbGlySFViWE1IMDBTR2tNUXdiaHJ2VWJ1VWJaQm5Zd04veE96N1IxSG42OUl4WWRWcllGdlV3NWJUSGRYc1Z1RWg0WWs0Nkd4bFA5ZDlhb2hyMW9FYUdvelRXU1lDZXNOWVhKb1JNL0FCcSt5Q0VSTjNUcTJtSmdRYk5KNG4yVURRUnZaN0tqTUNUeGpPRytmY2Nyd01uUThodXdWVXU5MWt3NjROVVFUZ1ZUV3o1TFJ1eEN0bGtCZFRQS3ZqdWVzZTBGSldKdWt4L1N3RUNjQVRWNmliOHdjNFZ4R0s0UStNM0UrMkJyelYwam0zTWhncHpjSjdSSGtzamxYRjhjN3JCaENDU2lBUStONWw3TGVnbHJoSERaV0h5eDk4bElydUZCZng5WCtVWnU5WDZySi91SDRxRDdXS3krM2lvRHNsOUVxK20rMWlCWHc1VnozNGJvTjFYdks4MTFNTTIxRlIwdXhYeTFJZEMwWGFRZkg3d01EeXBhYnpUczR4blg1SjhIN3hZQUVLUHB1SzlvTlF4UWFyWG83Y2pBNkh3dFkyc242L21TczgrUzBkUlRUd3RGUlZyOXR2bldwbVFyVzFQR29sS0dERE9ncUcxcHRVMVFwODk1cklsdEFrSzVPWXg5NUtZeWRsWkEwNnh5akZXeG5HWGVUdThSUXF3RGhoYy8xRzZ3M1hOY3BMR280NTRQcmp4S1hLenZMdWxqME9LUVFFMmpDMnhGR2VNVFVSSmZKQTVBaElhMnl1KytnWmFxVzE5ekphNGh0K1NuRUUvUk96SGNwNTlLNytNZFcrNVpIbWZSTnl3QXRGVHE3NC9jRnJyRVp6ZEwvcTl2NG5JVTZrWW15YzdlMExQMlRCZG8vNXF1ekxxZnkzZllWdFBhZGJYT0dnd1RwSGlIWFJrRFdjTm9SckROSHpXaTh3MlZFaDd6ckZVMDBPMFVjRFVvSlFFSXV0WFhyWnJDalplQUFpMXl3ZWhqZkY5ZjVGVTJKVXk5Nm4xWkVnV2pyN1hEelBlYU5Od1AwQ1ZnU2UvZUVIV3I0RHRmL1ZWMjhGamRKUFN2YmlyK0s4RTVOdjdST29QMmJ2M2I3TTNXa0JCdkZzTnc4NU1yVU1ZbVZIaE9nbkpwaEtXWTkxdHRTMk9kK25YMmJyeU1Cc1ozVk8rSkVwVS96ZWtraHlMMmpEOVlEYjBqL3ZUUGIxVmxZZVFoZldrNjNhQitIZ2hUNzhiZVlpOTB4dTRvRU4yVHM4MmN6V0hsc2dKTlM1Z3NObXJ0KzZZSnBSVlBRaTFpUVNlYXN1bkdkTnNGelcweWdoVldSVnRmL3pNcmNxdlNidG00T0tEaG1GK1RXTjRnMysvcVZzRFlFU3d4N2tkc0FoL1BpaTgxVU1xVkJhRk92VVVOSTlYaFZVYzByZmVtSHRlME90MlB1dnVQNTllYU5Ka2xkWThiTlBMS1FRUnVXczJBN3VuYXNvajVZUmQwamFRWTR4RWFzRCs3VllpMDFabTY3QWlQTk0yeFprbkxGcXBBZmp1NHBoc0tRQXdnNFp5VkRaU1I4Yjl3MUNyR1dDQWNPWVN1SnR3SS9EbTRQMHk5UjZYTmNIWE1MOFFTamw5dm9PY0h4aGlWWUxURnJKWFBNaGRpR05lbXRqZ2N0T25mQytmS3N6MDBWVkkzTUk2WElEUElNdmRnUktOQXF6Z2lxT283eERxdTZaNHdRR1dNeVRWbmFlTC9vSGRiYnZsTjdwRGdVZ0ZOdDQyWTJQbzZFdXVXQUtjbXBFZkFwc0pqZTVNOWtZdUwyZGpxT3UxRW1XbHRjUWhxUGlEN1VaYWFScEdMbVRnQVpkVmhPY3ZjSUhFNXh6UDhBUmFzSDc4bVpJZ250VjlvcHA1SHBJYkJvT1VYb3M2Zko1TnZPODdxYVArRDVXaHpkNE5oQU1nNDhraXdtNnk2elNYZTBwTTR5bUhLZys3UVFWT29JSE9FRTBSc1lidXc1Vm5OYnIybWEzbVZQLzlaS3RDRFhyMThlRUIyeFJKWWFUd3RYNTRuZWg0UnR3SWtkMGx1TCs3a2xHNk1MUnlLckJXS1phTXpIZ0twaDBKeXJhdXBRdEp5d3NTcmpVU3lIVjlSa1NwNkJMRGEwKzZ2d0hvZFdXcmYyL0FxZzV2UXBoL1crMmErbDRYN2g4ZHQ3Rm1SSHNCdUtCVXExM3NYT0d4UEhHUElsZStWeGNvZ3pOZktnWXRxNVU5RkpzQ1d0elFYbWpMZmtPMnZIbVlLdTA5YTdjS2RPMHcyTWlmQXFOQU5TRHNvcGltVkFMZ1Y1ZzF5eTJ0ckdLWUJJMWN5NnJJSnFtUWlya1p0ekRpTnV0MjV5Q212ZXM3WEgwTE5RcUZRTSsxOGdoQmJRSUJIV0lwbXJ0d3RDb241VGpoTGdVM3l5K3FOYTFoVHBDQVl6aFozcHRady9TN0hGdU85aFlIenh2NlRBOU9lN1ZnbHJxbXhGYkpCdXlYWnFWQjMzbGt4VS9XbXl4eGN1MmdXNWNTSnRXZjBvWUlzM2dmUUFyamVyUzlzOG84aGo4YWFucml5WHZyWEl0NEs0aExTZ1Jhc1ZueWYyR2x5d3pTVks3bjEvTmFTeExJUWJaU3pNNEFwVGRsWEN0V2dYdmZHaS8vTVNGSi9OSDc4THR5RnFiZkhhemFoSUVWeHZGNEdzdExYMVloNXBtNFEvVEdLVEYrRlN1WkxISVB0UXdjQ1hxbFo1MmZobHFqL1BqdTc3Q05WSThEaElhN1ptZDJNbXUza0JCckt5bFVqQUM1Z3FtanN5WGEyWjhTVVNxdzFac3NhSUtxeDBEbWIyZlg2Z1JxNk1rcElzMFBEWVpYRUl4eHlobTI5T2VNVlkxaVpNdThBR1BaZmdrSVJaOGl3RmtTbUl1eDFFRHdPV3FtN3FXZEJDV0t4M0FBazZ0aGxGdG8rVUxoTjgzM2JqVXhkSmlZeHpZUm5LdW9NZytzQXllWkp6Vmtzc2IzTWlRYmhVcU43VE1TT1JmQ3hXUDNqdDMrdnV5c01NVTlSM0dyZW8vOWUxbERoelZHMVlmVDhyRkdyMUlBRUxrd3pPa1graGdHelV0OGJadWtRTTA5c1JtY0FMaXE4KzVjeUdEcm8rVWhEZnorOTVkTnhQOVVuSHpqZkN3djd4emdoTXhCUkwvcmRvVUNXeTRCSWt2Qkl1Z0VRVkdXWk51eHVFQk1OL3NraHJTbTFORU9ZdWtvSjdDb3B0Zk8wOExFZFBPOE5sL3NXOXRFWFdkZEplb2tXQTRxWG9EYSs5Ky9ZbmFRV1duQ3pLaTlsczdsNHFmYitEU29zM0xwSHlGeFZSajVOQVVVekp2ZEVkUWMrbmhVekdnNnhSS1ROVmRyMUNTbVVRcFlqSXdQbFF0Tmp4MG1CVlJEMnpFdUxpR1hzSFV1UmV4Q2k1U2dKMTJaeGZ5b3BoSjU2ZWswL2VPNHUwMlAvSEdEckVsUVdIRWtPcnpqR3huek5LUXdUMmtBLytJSUZTRDRnSlJkTWN0cU1lWWZ6RjJVYkhqVXJjUUF4MFYxVGpxVks5ODFhRnlwMkoySHZIc0NNY0V4cjF5NVZKSUNqWHBxeXdzbWlWUTBzRWhSR1lZMVJDZTh0YU5TcW5Xb0lOTnRTaEZ5U05VYzdkS3Y4VW55TlpZbXBoazUyTTg0aFR0MWMrcVduZGFzUzFSRFQxYnVveW0vbElBYmZmUnJpckdpMWJnVFpYaHFuQ053RXBXekVFYVI1aFppQUNiSFpHNVZvRTZIRVZId3p1MGdQcEtvclhLaEJ3SnVNdGFDQkY5ZzZsUUpjRjk3RW5tQjI1VG8wWVNwYk5TVnNnS1o3SklwY0lmQkhqaG5ZRWNpV2lSK2VrTFZXQmdSM3cxODBEUkVkTzJ5Q0FGNU1rbXNKS2RTZU0zRzV1d21uQjFtQTlLQ21RRDlaZGU3YllJeEtKcGJ2NkxCeEVNM3VXS1ZYcWptUXhLUW82QVRIZnFMc0d0OWZiM2JObFNRUGNnK1ZCME1QY3QwWFhURjZxWGhTL3V6Tkx6dGxXSzhxczlhdVR2VGZiWllwMlJaMndyRmx6SUhBV3N4aG52bTkwOFZVS1E4bkd0MFMrL1Jod0ZocmpIRng1L2hqTVIrL1psTndlaExiTU13RE9uRnFKYVNvd1VhN3M2cE5HTlM2dFExeENqYWc2bXBPbEtKYjR1bHRUQ09rZHR6VWIzK0RIcm82N1dPdm9iRW9UMWlrZkxLK2RYa2hIVndYVTFGVUtxWHgxK2RMTXZiUEZUTEh5TDFTcTl1RmtZUTJlQnRwSEJaQ2djTmdUOFFwYmpoU1FBTXNIVWFiRG1iZGdXQUZSeFI0dVUvTXZDc3VJKzBGYjJHMUlOeUoxVi94QlRnaHlsRVM2NWZ4WlZJVUNSUmcyQUM0NnhHQk94d0k4d0lKbE9ZUjljZTB6WFVHOWU2WlNwODE0NEQ1Z2xTb0IzcVlqYW8xQkEyVVVrQ09tMTJ5WnIyV2JSNlVpUjBFZFhXYUdsdTFkNm83MVRtY0pqNGgrVWMyQWFiR003bTU1ZmRDWkZLS1FpV3lxdWNMeGxnWGtza2lJV2tkMXk5bmlMMDZ5VHUwdExuSGdxV013S1lHakFOQ2o5cHFHRDBQYlAzNWcxK2EvOHVEOFJwMHF3NHZoUmg3V1RiMm45b1FtaitKeW5LNk9Hdmw1WHFTa3A3bnIxL0lVSFZJOTFLbVJtY2RBVXhZcWZzQUV2bEs1c3hVS1hndkFqZUxZSXVhTVVBQ2psUmVWbDFYOGxSNG1lM0RIWFROK0ZRbGtEYWxtbEVlMTVra0pCcWpadlRyd2dFeWV3WTNKQUVIR0xTNWdxYit6Rk5LdGIrME0xdkVuazRuek04TlI3YU9vSUJQaHU3YXlLbjB5Qzc2Z0xHczdqY0NDbTVOdldvUGk4bVBPdGUrZE5LZXlCak9YckxHVE9OZUUxYVJxOFkxOHBZeU1hWkhWRUQvNjI2NFBmdjZVQ2Q1bjZXbTZaQTBadmRBL0JGZk9JZW40aWJlTmFKSVp0VDRjZ2NtczVJaFNGNTFzR25ZdUZvUERmeXU2dExhSU5xVy9vQkM0SEdvUHJzdVY3d3llWHk1VlFYbGJHQ3lYL0ltbnFqRUJMZ1czaHkrRSttZGY2SVBIWVlZT01MVXZ0aEtXZm00bmhDY2p4WUhBTVV0RGJEdVprbmEvM1Rrb0FFNGhNS0tVK3JsREZvcHVFS0Z2R1lzWWdtTitLNHJRd3QyaEdjclo1cnJGRWxxaEg2SHJSRUNWV05SNmRabis1OVR6K3ovTTRtMlpKWll4a09JSUtjNkIxSkozY2hhSjVhcnJXanNwb2Q2ZGVZeTZPMEFRZGdzNE45b3hBWllRRWdMVEl2WnVGVjk2a1lzV3gyNjEzSkVLV2M5M2E2SUh6RUp2RnZGRGVacC9aS0RWaWRUK0xiNjRnWDVadzJPWEMzTkJ2dm1GSmlwcUZxck1YYTVRMGRKUlVvSitBd3U3OXp5YkNlYkljL3RzRVJnRExsWEJueG1FZnF5bnlNbDZWckxEaVRkcE1xVzJvN2ZFNXMyNlQyem1oOUZoM1dxMm5ORitzenBLdEM1ejF6SDhqU2RmYTJNampWVFp0c1pvSTY4azdVQXVsT0xNckxIZ0IyakJMSHJ4RGROUXBoUzBNYndNYkJ6Vm02eXFUcDFyMGZmK3BhVlBLdG1vTFRVVmNxSWZHWXVLTkhNek9JeWRSWDFFek9jWndVeCtQYm1KbHQwZVBmSlFmbDllN0hqMGFOc2FYMndjTlFOWTBLYlJTM3lERXJQNTlYYmp5N3BGMy9HdDg4V0d5RzYza3A4Nllod09kajZLcFM1VUZhbTU1YjdFaGp2QXBBZ2Z4SldRRXpXd1c4UG8zTDVmc0I4dEE4aGpvMmc3aUlxU1g5bE5ZdXNXN1lnUWhyZGlDZlBEZ1hkQUtXYW8wcUZZTGRoZERFVjIwdWE0OFZwV291QXFuU2RXSlNVZ2k0N3M3QTBTSWhWNlZpRC9WK1dtazJZalRJR2dEc3AveXRQV3NmMFBwd05aRXJORnYrSzhUR1lBTTJvWnpWaVdGVzdjQnhjYXlWdkJRZEtDbW93NjI4U1BFcTBYTE1yVDRjYWppZHNSSHhYNDFZQVhjQldta2FWRm82S2tDRmtmOXJOVzlXS3VzWFlsTUhRZHpPNmRqZE40ZjZWUUs1ZTBnYmtMcnZ2aEd4alJOZ0sySGFTVGpPb3RHMXNEUnNSMWtJcGwxdzZhQ3dDSWdwZWtTREY0K3hVb0xsanBqN3FISnhwRWxDWFBaUWNad2tmQzQ3MWJHRXdWSU9ZRng5b2VDcmN3K1NFRk9HWWVPazVyanpiMkVqZHhlR1hSdGpmRXNJQVBLalJ5SnpCUzBBdzRXQmY2VExlQjFTay9POTRZSGE5dUt6N1EwV3FCTlVBME5heUJLNWptRk1rcWhwZTllWDlkNElGbmR0V2ljQ1ZoZUNDa1dINU1mYWhmK3BjOHIyMks1Yjk0cWFYaGFTR0JkQ1JEalZXNjBWRXhaNjJqRWNUYmI0VlFtWktsblpjeFlsaEpHbWpmMm94M2dsVGloVkpVczc5dlpXTjRsMENWTG5SWGlWZURsdUcrU2xMYnp1eVpVcWlKYksvbHA4RFFnWFlGYUVLWFczSjA2Z3BNcEhvVTltN2I4TGpYTkdqRVVJVFhtRnJLNkZ0ZmR6a095MThTNGNVNmtudU1PYVJSMGZBcFVsT3RlVWtMSzZhTFpTc0V6WFloZXA4NmJaQUJER3YrV1JvT1pLbGd0aVRLNDZiTXN6Y015MDZFQ2sxRGp6a2VWZkRUMzNrRktzTUR2OVhUNXlCa3dhNi95Q2l4TXpKNkdzNEZVQzUyZjdJenJ4Y0JvWVhVVkxxSjJ2czZuRUlOOE9MOHZkbDVXZ1AvbkpodUorM2N5ZDBKR1lheEtiTEp2a0U3TXl0NElNRUV1RFBCREpGY1QyK2k0ZTZuT2wyenJZamtxL2trM3VKcjB5T2Q3eXRhZThueDJHaTZTTm9rL0RYVU1NRTR2ZWs5R2RVbmJOcm9oSWNXbUh1dFFhbWJnTlZTU2xCNDNnWnp6TzVwQnpJNXNWbjFhV0NaK0NQOGVUeUhFbHNMd0NLb2xsMndrMmRObXBGU3p6RUFpL2FnWUptVUFpNzJKa2RydnR5NG1jZURRL0RrbEducG0yQWpRZUFzRVcwcnVTaHhGZ1dTZHFINGwwOUZDR1FMY2RKNU9hd0EzNnhiTnZHQUVBSlJ0VzQ5c29DWmk3b3lNaHpkd1RlQmkySlZ5NTJpak1aRXgvcnRUNWNHeXlLNXFPcHNqbFplOXBpRXpnb2pibkRPNkVyd1ArOGExTHFPaVNIekNzRW1ydDZtMUpTWHRMOU0rcWkrOHlCZ2xhektwN01UR2lCQ0hBaW9yNFlVNnNkbmRtY1d6Nm1RYTlrSFNjNHdpVFNmTDNVMWZxVDhrMllkMHBJRkRuSVp2Q0NaaXdjVDdacFpENUlNeWlWcGhPditFbmMxdkJBcFBhSGpIcWVIMzREKy9hcGQ5WEFhcW5lcVFnenU5Y1Y1Y0NmSGtHeGlXNi9TaCtjY0JnZEtIT2NRTmNHZUJUNUh2OXFqNWY3Zy95VzZWZlFwWU5oS05SMnpFOXU4T29lT2Z5dGNWUWxzblc2RkI5dUxXRFdYQ3hTR2J2akZYY2RDUXlnRkcyVWxpaWg5UEJtQzhBOXUvNlNBQVNpczlmRFQ4RXRvTGZITGlCa2tyT0hNNlFJcDJMTkFjYTRwLzVIclpvRUNZMHZ1WWhPZlZJbUZXOEJuREFwZHFCWGNEOFVCdGFJbTdHM2VXM0wzckJHRmxEcm00enU3dHJyVGR4NncrT2Q3bXVpa3Q1ZTc3ZktLVm4wSE55NlBYMi81a3Q4bWd5eDN1bk4rVTNTbVAzNUlUWXE1YWh6UDdhZ3ovY3FQVlc2WHkycm9STlB4bk14WUNzT3p5MksxbUkzTE01YU9GcFkvbExPUklhVHhJNWMvZ3A3ditkSnJ5MmFKeVcrMjJMU3dCYW1WQi9jTXF0ZTBLODBhNUdBZHZXU0JSQVBmOUVhNTBtSXZqcVZCbGZ1c0dLeUxYS0lzbE9PTHY3RFdMZk1xbUUzMzI2UFJBOVFmcy93dWM4TGROZHp5d0MzYjRjRzhYeEFFdEZRWm9vTHdFNEtQZitGWEtzbWJWaWlIMGJjUUJ6NlNxSU5iMGNCQjJwL1YyZjYvd0VNOXZPa3hobnd6L05FQ25hMGNOcXZuUlMvQ3lxSjVxVXRRYVBLRDc2UW16WFQrbWJXdStuOHExZjdpWTFjeVFHdGZ2WXlsNnE3dFNTYmo4R0t3TzlkSW9BQmk3SFhSWm01Q3pkcmppaTBQVS9Gb0h5cUZITUE1MCsrWGRYTTZ0aU8rQkVLUEtTWUhYdlYyOStyRXdTM2ttSUx3M01PQXRXMVpKcng3K0VQNFZ1Z0tGVzFTb0NWT1ZKTHlyeElqa0E5SzhqZ2hCVTZVL3pLc2djdCt4YVBYNU5pbUVQbGNzTkhTeldrYXVhbkIrWW1Zb015SWp1YkMwQUlhMTBGeHY5NnRoOWhVb1ZzNFpjcnArMmtnZDV1amJWcklMcVBrUHMyT01IaWhxQTFKaFVncjBZMjg2bUliOTFqdXdaWjFzVEtCYU56N3phbTM1S3huTS9od3ZTTXZlSkZ3S1dIRmF6MTNhdVAyVXVlNjVQNEN3VWV2Vm9NalZsZE9WUVZkczFGQ3BmVlZGYWlibDVNbVk4VWZ1elpUYi8wVVIxMVdua0pJVC9vUVQzUWVtc1lOMGRaeEJUTVJjd0xFVkhiblJOZ0VkRTdCaGxEbkxHUXpwM09lMkJCY3VnQ2JXWjFMWVJOWDV5cGlzMWhubE1jakRMTGs1L2FXMHQrayszT29PY2hzemZOM2NoYmpNYkJVNW1lRlpKNU90Ukxod3pCck1Wc3ZEdXJtSDlOcmpoZnNUZ09vMFNwWjZoYmQ1UjBZa3BjZWFHWE1sMjFOd1RxbWZJSVMyblQ3SW0vOXc3eDdPMTFJNSszYXk5c1NDZ3pTUm4yMjFkUVhjODlWUXM2WEN2K1lDaTR0K1BqNlRXN0FWTHQ4dVVLQ0lJdWh2MW1pNTgyYXFMNC8xV3ByaitGTm1HRlJPYjVjMFNSdHpJSjhVNXdJcGdVZ1AvVXEzd0lISnQvVk1hN0xpSFptOC9BS0YzZHRQbnhpaC9JKzBtT2V0N216d0MrM05jSzFPWTlYTFdBUkIvQ2w1VW4xeitwNDRLcmZzbUZydEtQMmsyUUljSzJWT2hDT2ptYW0yNk9ia0t3SDVJZ084RWw0Ti9hNkR4bmx1K212VzVrVThUa1luVXRuSFhzVmVlNEljd21lblBHdE55NUU2MVlDVDh0NEVJdnFZQVExOVlwaVI4aDFtZEZWSzVwdXdibmZQSHBmcVJaYTFpT2IrT2ZKQjVRZDZ6RFl4Z3A3bXhMSitPQ1k3QnBKTDlYYU8veE1YckVuOUZuUU82TzFoZm1sdHRuMDIyMVhtM1BYeEowN3JjOHRyRjVDanIyUWtyK2g0aTN0YWlEM0gvWVUyWWdQY24zQVpsdlc4R3Qxa0U3TC9rZU4zZGRia3hWSVB3cGVtemp2dkl0Y0J4ZTJEazlhZndxMDhtbE94S3YySWhZa0Z3VHF1NENVc2kyY1pDRHVJQXlvajdNeTIzTFdYWWhXRGRSUENnMGhyVWVEQmdpUmZpaEtFZ3gzaXNzNWhpMXF4U0N2WU0yOHRPeUR3bjV0dHRKL2hrNkFRakhIUWNxclpBRHE1ZHlFZ0VIcFdiN3VhQm1yQkNwTzlzRlNKa3hvZ0Y1cDN4RlhYT3NwTjZlbHhNdUdIUW44VFlMTm4rczNSTm9QQjJvRkUyQXZOMGhKdjZ2U0w2Ym1zcnVaWExZZk5YTTZDb2VhSmVGTlRrc3ZPQitMUW9VRmpIdDdweFJ6VTVrMEgzbktadUx5RWhncmRkeVNWUk9DWVh4aDc3VVZnMnV5bm1mYlFHbDFBcEdRUk1CU1hNQ3YwK1F4YzdXdVFkOGZBNTRZTXZlU1lhNVF2WlhCYUtJM3d2citITTZUSXcxK3NCVFN6MTNpK2VTUmZoeFN3UGFpVGxFZks1ZmZ0QkpBVVV5TWdOU050YnFIMHU4NVhOVytVNUlJd3ZMRnVoYzFkQm8xSmdKcXpDblRtMGJwa0ZWKzhiOHZIeEdaS0tVd0c2a2xkWmRqemZ1TXB5dFRKcmc3bFVYMkZJL2RkeTZCZmYrWkxqWkVYckFYcVQwWVVTUUUrLzZjaEdsZmk2NllYOTVSTU5UeHhTaU83Znl6QVVubFZYSkNnS3U2S3F2eGdVd29VR2JWVVdZN2hMVGZJNzh5VW9xRFJaTnM0NHhGUDZycVpGVFdZOHNoa1YvajR2Z1o4eGxXQmdjemtrWGgxZ01oVVMwOWhLZ2cxNjk3MW0vTjBOUlFlenFVTzZCczBmdUdKdmtjU2JaUUI1WmVGaGo0M1ErZ3ptVThUTEFjK3JwLzlPVHB4bjhXZXZ2a044dVphYmJWVWYxYUwrVC9neVRzV0U1TE8zRE1TRWFpYmNwYUpOZEg2dFdWLzhqZDRpUTZjZHpGZ05hdERXbXFFaDFuRmlnMXFsaXlRR2pqOHNIcWdYMGlFT0FDUjBjdVY3RnpRYmgxeGNmb3dYLytEZStKR2J0Z2h0RGNZQ2lvVWRlRml3ZmszaFI4dU9MWGVnRC9GV21CbU4xMXpNanVIVld1RTB4QlVLTjdFcDhLZkJ2WlV6SGtnNHlpU09MbTVSMkN4TTg2KzdhMGx2dDZKcjlGVlZSYzR1bW9ZaHdEdUppZmNrc2NQL2JlNHdPeVVBYUdqRW1oVjJ3MFB4cjVHckNMTTVub3FiVDc4QThiQVRXaGIyTjByNVlKaUErd3RTR3U4RzVaQ1dxSUpYaWdKQUpHVmtUUkVad0p1VWorMkI1Ky9zaVFhMlZjL2djWlU2QlNzcUMzeDZ4MThIcUJGT1NnZWdBRDFHdGJkSTJzZnNMMGV5blFnMjgvbXlFZ0RqQldWSk1yMHRVNWVRemRXb0ZmMlNHbGNUVXhNc016L2x1UTR4MXg4dEVwVkF1dmVMMm81OGI4VTQ4TGJuSkRiNTlyLzRaT016V1ZFVjRxQzhwYXp3M2xEM0k4TUUrRHYvUE5DUnAxcUZFYlU3cktaNDFObllkUEIxYmRMMUl2Vk9NeXZkem5yNHNKU2owem1vL1FkNVRnRUhuZ2ppTGRSZjRtbytVQUNmb2tNbTd2OHFRTHRpcHNsL3p6ajRUVGg3UXltcno0M2IxWlNXUUcrYWdYZjBSUS9ocUQ1TkZwVTcrUTBDMFJLaGoxNmEyQlVmam85WUl4UW8wMzkwaGhNNXJlaWRmOVkrd3IzZnlTanY5cGozb0RoMCtoUlNEUDY2anNJYTJGOElmblJNWHNrSGJ4dS8rQ0ExK0xlTnFXYm14aFNXbCtYYXRielp2eDYvNktsd291TWZPV0dGR1B6QU80SjdaRFlUTHZwYkRGaVc2aEZOMUpCb2Z5U20rSm1tNUhxRThQalRvdVFMekJLVFgrK1BpL3E0TjFEd3dEMk44OHFib0pyNG1ncC9CLys0ZnFGeUlOcXFTek1Dc3V4bGlWSkNhRklDdEh5SlU3WjZZc3o5NjlxUDByRkpDb1FnVzRqMjBrVzJQOXVIMmpHM0ZJQmZqQmVkTkI4QndOSStDN29yUVFRZGY5VkVNNzBrSmNDbGJOZVU5eXNyRmw5VmlhQmcyOHQ1OXVPaVlRZksvYUJOYWZ6czJ4MXNLbU1oekZtTW8zQ1pYQ0pVb1A3YzVMazlJUTkwK3NuZE9oMG53MW1Sc09NOTZtQXdiNDdVQjBZWkh2UUFFUEtOUjFQYTcwUVNpc1I0T3dLemdQY1FZcFlaV2ZFMVpsWG9tL1lnaVdyNDcwUW1xcGRadDgvSTB1MkgzNWpCejBCL2F3b0s2WE9JRXdxdDVIVUUvc3FTQVdUZUJQUkdoREpORCtxUHhnVmJhZmoza01VUmRDMU5UdnBhZlNzMHZKOVltR1R3aEFtYU1sZlBUVU1VU0tGUW41U2pjdnZTL1ZvZlZwSjdoM01tQkl0QWtzOHVlbE1KSWtRWG8zZWp3ai9SdDhrZ2dQVjU1aHZHRkEvbFhTZVlkajM1YUx6dXQ1cGptdCt4N0YxNU8zSmU0Q3hOS1pIQ2JmVnJYVTY3dkdHcTZTWlBUSDJweCtYNkRhWUxHMVVGdUpyZkhiZ3pEMkxhRU4rR2xjaG4xaURlY3BZMFVhdnZpUDh4Nms1QWcwRWJtbnV2R20raWhsQXFkb0k4d216RE92VHoyNmIzUGFIM3ZpTGNlRS9KN2ltRHhiR1huZzBhUG1MN0IzNWRuSnovT2NveTNzUzBFd3p6ekt3UlNYRGcwTDFURVZaaDN1SEVVM2h0ZDh0U04wRmRnekFHRXV2YWlSTSt1WnVDdXp2MlcxM1J0NzV3L0Zva3hKNDJhOHFpcmJua3dvbnV6bllrRWkySjhNaWxPWGJuUFlaYUF4TE5pa25jOWVHNzBtNHZYd082WUEydkN3dU81VkIzTW5CZFQzWExHZEJIbGZGbVBjdStNcFNkT1pOQmdSSGhhdXUrOXBtYVRGdHZZdTV0WUd5dzhzZ3lRcW92WCtJQzdjWGtzMG5UWlZnblVyK3JaelZHUHVwR0hUY2VVdFRkOHFEemtOMUZSRnRKWTY1Mi9QVlFjc3poS0JtdHdTWHk5bGgzbVluN2poeFpHKzBPZm5UR243Y2M4TUVLb2kwL1lpeU9WanFjOWE0Nmh5RzFCMkhsZVlpRkc4eGNIb1UvaTFUQ0Z1cHg0YXVpOHlTcWdXcjBLa0trQmVBdFNKL2swM1ErVTZIai9VWXIxTWxuTFFyMy8yeXp4SlR4ZWIwUE9PbnM3L2RxM2kzcmFQMysrdWpiUk9lVVhSTGdLR3J6bTRyaDJDUWNIRDUzaXpTM2hqb08weWd0emJGVUlaL3Nxa0VhZllsZVNkRnp4OGpxZmdmVkZSS0M2T3VpUWQyeDkveXFobDJ2WW8zOGk4cS93eTV5NlFYa0ZUdkJIZVFPeUlWRENhSjZwNjVOTWg4cWVpZ3RIckJvUk9CdURlWTZ6QmdSdHFTRXBROXpQb05hK2JFaXhyS1p0cGxYZDdINHFPZ2lEVDZ5NmRSdzIyNStUcVBaQy9Ld1Ruek9hRXhObFgrM2xXUHJkMndNVklHU1NEbTZQanJ6V1VuTFdXMmxieWkyajYrUzlYYW90aitMT1UrTG1VV0VyK0xKbmVlZGNJRVRUSkVES2QyMnowenlzbVplNDBqcDlMY2FYY3RQaUNYekUxOXdBa0RiZWpNM1NnQi9TSjdKODZoYlpyaGtEM0V3b3c4blpqWkNBM0pKS2tnSnFTa2lIUi9mNzZjOFJOSDAyS2pTYTNDU1NESlNlc0VFanZXUUMycUFQVUhXdkh4emZ4MWRVUFA5blZhRzRWeTliaVNKaWdjTU9wdXNJaFZjajNwZTZlZy9hTXZueC9qaktPRVJLandzMTh4UzJLc09ONi9WcWlUWmdjbjhqN3FWSTE3R3YxNkJ2dEt6S00zU3lRdmtqWlV5TEc3T0xpTTUxajZyTFY4SlpVS2RwK2Ezakw1OENUdzVab0pwdnU3bW9NRWYrTTA1OFg0RGp4UEg4aG5OQ0s1TXhoSytBMUdyMzRWT3M3VDdVVENucWcvTnRqVjFkM1FWdS9rY0xkZGMrbWtmRjFCSHNiRVV1U2xFV2pwU3d2K1NUSHBLQm5FcXc2czVHQXZHNm84THJPTTVjeWVqMTJuVkExZDE0VUtzaGl6ajJlK3RiRFB6ZTF6QlFPN0xaZzJ6L3J6ay8wbnVMK1BVL0NoRVc3ZDN4bm82dzROdVdQQTNIKzlsTjdXSTVPUktBNzB1NFdGUjNTa3BlZjlvL2R3Z2NyaWcvcDdSMUQybTkvOGp4aHdnUExueUNlUDc2d3NQSWpVUXNNWVF1RExSVmRWSUFlVlpQY3drallPUnF4V1hsbWIraEhlcnRLZjBBaS9wNkw1ZUoyaTk4QnI5RWxHOUIxaC96ZzUrS2kxM25TalVFV0x6R2ozekJrVjFJRlhVSVN1emNlcEFrR0hxSkpSSjVqQVpMWGdXREtHbkRtSE5ETmFWUVVsQ0wyRUJHODRPWWpiam5mclNVZGorS2EwYy9Wd0FQYWZsNTd1MGQzNWRuNklhQUlhNzlWQjQzMHFuY1FLZmdDdW9EZDZveHlpZmdvdlMyVjBIQkI2THlybkpEaDhKTTBMSmt1T1MvRzEwVFFsK3FnN0txQzJVallFTTlpN3dOVDZzTEx2ZkEyNnJ5YkRWYzg4cjdLd240SStMc1BpeU1kTHpKRnpuVjZBazdvdmJqQU80cUhOTkt6Tk9NY1ZHdEVJdnhiR0hxTFgySEx1U3N6dXBhazNxS3YwNGEzbEFxNkI1enBYQlRhdGxBWGZFTGlSeE5wZjNzWnl5UHI0Nzc5b1JXZjFtaUxMdnQxaFpqdlRYSWtqdkM0djBxaXFKS3dGTno2TmcrUGN6cC8wbFNabCtUZ2VSVU9iYm5POFVTRERDS0R0WGNLU1RNUS9PWDMxc28zMVhRYzNvaFRFM2tlb2hJQ3RLMkNhSFpKZW45N1lMQ2tORVp0NFFNYVJDYTlFMWtNcVp0QzViNUFqWWRndURmbGpXQVB1SmNOWndkNm9lTVI3NXhVUGRrNFZjZGN1aUxOakE2dkR0ajZoQ2lxZTI5MHNQdmxhUDdXaWhGTm5nbWdiZzFqV2hUYjVNcWN0NWxlcGRNNDZDUnVTdjVvWktwWDdwU1JCdXduR3ZwSFZVN2R0L3dEV3FmZUl2cHk2QzRmV3QzZW9HcGt3dVdCL2dPZ1Z2MHJPODcyUmRKTVIrbUNSRzBFTG9LR1hkZTFSWURydlFVQWE0RjdEVzJ6ME8ySUtrR2tLdFRsU1VnTk10WUtvRmpJN1J3UE9sMVY2SmprNmwwcDBlYkwydkw2SWk4UmxBNmtSeDJZUEVjelBzTFNqS0VEUzdkOTdaMUpBTmZwVjVQTk13U01RejRQdXdRSkZWbWQ0MzJuaWFFZWp4SFFhYmNnVkJXNVVCVTlqbzl4S0FFT3hKdVAzYzFvdGhqNnNrZ0tqR1pRbEMzVlpSZHpXcy9KbFNVRnh6bjRUSEcxd2cvQlN0ci9vT2dhdHBDNlJFaVY4WGZQeEZvaUNwU1duL2hRMGcyNE9NV2FoT0V5NGJibDRQUWJSZG96bUZOZ3BHUkgzWk1VVkNHT1N1MktVRmphbTRRVk9BUE53V05USmJpT1VFTVQ5R01acmhGS3hZQmZLTjFpSWtBRmUwYnB3b1l2VlFSbjlzeWVZcFVwKy8wZVVqVUlRWGRoUCtEQlpwMkdVRklkbkVHcHVxTzZKK05EbDFUZjc0YjAzWmRVbDhyU1RGVkpaM0Nod2hwUnlLMlQySml6SExNYVg2VVpMOFQwayszQllMZTA3UnNzVm9lUUdvS0xCQzlsM2U0bkJ3VkNjQ3cvT0tSZEpsdFIyZGdtL3l0cUllR1RvSGMwSUN0MWhLa3dPZWJodVJxU1BuS055SjlQbUI1cVBvRk1YejRlWk1LUVE2UXJqR3d5UmEwWUVUYWsyTkY2OFpTcmNiOHRWTDQ2bjdIT3hkNFFhYlpzUWRvU1F3NVpoNU4yZ2Z1MDJ6aFpQVjN6OFVSUmdBc0JpM0wwVWFENklxZnRiZytxQXpEOGZuVm9mZElKSU1NSEF6QW9QMUVadnRBVDFUUEQ5ak4xQ29jcXFPWENDLzE0S1hFZU5sbmcxSHQxSmZ1NFVMaXF4WUpVTTlJRGkvbzhXTkpEQllieW9GRHlLejNWUUNlZjE2S2IzMU5TMXowMVhqcFM3YnkwcTlFMUhCYUV3andKVU40M3ZXdGorTHg0cUQ2UE4rQzllbWtmd1lqTGZwSUhid3NJU3ZMNUViWW5PYld3V1pqdW82TnR4bTEzZHdIemJUM2djVnJnYXBEa2phS01lTC9NNUVxSnlyTXRNR0FuWGY0NXdMWWN6UmF4bXpSUFM5dnRBQ3o3OTE1aVVZbjlZSnZWM0h3Sk5xQTlNWU5zVVlQZnlsNEtnR2RMeFpDOHVjYm5rSXRnZk1GNHZEZVZhY2laWkRDTEQ4b0RMekRRVXkxZHQvSmQ1T21QMFlpbXVIMWxOMUVpaVB1Y21ncEV3Q2lRU1NrNHRtNHVndGdwRWkrNE1NQ0tlT2dsTHgzOEtSRDZJcEJmQzArM1ZlRjE4SkNEV1dRZ202ZHp2QmErTmxsOTZEbjB2cWh4R21OdmlOYkMwU0ZzVm16WXl4TFJvMzZJb01CVWRqb3hGdUlKTEVYbUoxYkp1b1p4clJKZGcvZ2ZuNVlDSHhsMU1XcnprSmMyS1psdFhHTWZXZlJ4ZllJZDZPYUIxenZpVnVyODViZVkzWFprK2pyR2NPMFB3eUpnTnhqdUJia1FzVS9DMmwvY2FQUDF3VHdSWDlUSFpUUktmamozcFg5ZFJaQ01DaXE3LzlrVmxFYVRJaG96U3NGeUlLN2pkc3J1OWVvaHFWU09HLzVaMmJIOFdpNnFrbys2NXY2eENpM0M5UWYrRnBDS0tMblRvZTh5K0JXOVpZSTloUlV3SjE4NWliT2xZNno1OWx6b1ltR2ZKVmo0cGgyM1JHZGxDeWEzVnNXM2xuQXB1UjJEbUt2RjBzaVZXMnhMNm5JdXBscWZUOFZXaCtkOU1Wcm5SenpSVjRPeDNiS1dpTEV0K2hlTk9TK2VXWng2dVFTVDBVZ2Z3cXBOcDUwYmg5VHE3dHlJTWQ1a2gxdVEyMWFkdlpZdEJMaG5jVlpWUGpyVFExOURTN1pjK3lzTjNUVi9JcDAyZGx1TXl4YnNYSXN5MWxCYWdMMFd0QXdPVzFCZHQ1UHRHR3h6bDg5WDdCRm8yd1Z4bWxiTFlyOGExZjBoVmQ5NS96M3RxK21ZaHoyZkpLUlc2K3F0UGE5cFJRMjNpYlVublgzS2FEanBjNkwyY0xGd0szckQrcjJQS3ZvakZORG9YVk9aejBCQVcrK09jazNrVjl4YXBxM2VZSTRHekhpYkR6Vk0vRzZDLzV6VTNVYURBSDdNdUE0akFudXVhMWNJbVZqaVlNSExkOC9kcjY5aGpWemxrSnZPY1VmSytiZ05JMTdkM1ZINERkNE5OUW1GYmVucHBUSHJKV1lvOE9CRGQ0UmdCNFZsdTlsVUlicVBRV3BmY0M1cEw5c1pTZlNSZ2c2VU14ekg3V2oxN2NLTFhhbndab1YyU1Q3dnBiMER0VFk5TCt3Q3RWOFR1TjB5SWZvUGxkWG1aQWdCS2F3OU5oNUx0UnhaUXpMYXFnbTBuNGk4WXJROUNHalQzcHFLRktlNm9lbU1xd2hIbFJoQW9BcWQ5a1E5QXNRU0lwcmZFM1g4Wi9UaWNHZ0RHRXVyMitjSDhNbzBOOHlCZU1IWTJCaGVnWUE1d1p0RExURGZPK1lRZ29zdC81eFpJaHZTUlhGQlFMZ1lHQTZCdStmTjBzT2ZOUkRVTnphRFl5dU91UkxUb2ZJWlFqd2JrQ1JIcjVCazBDWExKK2JtZnVJTklBUGZmUXkvMlpDd001SnEybWZwSG9WZ3QydUNUZDBiOFNybDhJSnBtZ21TTVJaR0VvSDRwbXZqM0hIWWp3V1FmZEpJckpMS0I4NGNsNERoZ3NEcFZhWVNnL2tkWGhyeThzejZaTUVKRHhVbkdVNnNLMDhObkFJS3l1S0F1Wk1KRjBVbjZRRDdLQXdLVXVNY29BalZlWHN3WHFsMERCVm5CNkRBQVFwWEFHUWxBVlNPQWluTTQvelE5dWJqZmJzK0lrSmkrbHV3YVFMVDJKZ0dwNjZCMWIyNjl4ODJvSXJ2RytkTThhZzllNW4xTGpFSHVBWG5KT2dRTTJEc1I4WlBodjQzb29hdDFYWHR6aENEcW5nUG5NbGFGS29sQU53UkFHM3hXL0FFK0dwZUdORjJxSlkvTkl0cThoMjk3bGV1QUNKVjdBQ0cwSmMvUFlSZXcxdndZN1RvR2xtOUo1cDFTa0Q1MUoxU2lGWjF3L1ZiUURPck9XRExMbkxIZFpycDkvK3lZRGVyQUN5U2VWcThEc2JDQldEWWl3TjBSZzFFc2l1VFg5SU1MSUdtNUZITlUwMTM3eFI1WThBSnNvQmE3MzRBMUNGalZoL3c1T01wcUt0TWJWME02dUVMbDFSbyswSXBxWVRzRlMwRVp6bDhzM25ubWgwUU42d09hQWVTN0VKbjYyR1NwWFRmY1pDYnRNc1JRRTZGVnRGRlJ6c2FrcEkzcWduYUphNjI5cjZUWkpBdGlOT3F1S0xWMEV0OW1FTSs0elJGQko0elNJU0o5YVNaNFFGTzNsbmdGek1Ea1BNK0FVRGdYUmlLOS9LRTVDbGJJKzlFTXlQS3VIcGZDUGtrMHZhVVlIVi9LQWJWY0JUbjc0R0NobU1RMVdTVTZ3ZDg2WkF0QXgrc0RzQlpLZ0pTYnhvRkZhbG5jQWIzMzczS01HOFp1YjFIU1NEcllGNFNBSmxYNnc3TzZCeWZ6cWNFQk82THJYNkFRdHI2QStBV2VkcS8yRTk2dnJyUkZvajd1aEh4QzdyTXkxaldsVElSbjlMZDdhZzJBTUc5NEhYZlBWM05pUjJYQ0VSd29zNU95VFFCRkhqZ2hKQ3hQRjhwRHhWb2V4bmNNSzZhTmppaUJlRi9LampZN24zK3gwdUlvRXNHOHNXQmlWb3lBZU1FOTdHZEZLckxWWFRjYnJZREZwYmRRdk5KemsvNVVOQ0R1MEg3b2I0bkREV2xscEJJUWZveFdqSEsreWlDN2lzVEVCaHBRVWluN0t6Qkd3bExhR1ZNSWhqeVM3RlpLY0RGc0VnSHQ2dXdKQSs5d210dG50cjExQ3o1WVNmRDVnaFh2NXA2Yy9sRmk4Y1BNanRDN3llak0zZFNpTHBCcUZHNDlOUDF3ZnRUdDFveGpXbkwxcWNVcm5JM0RpNGFMdndUdlVmWFFxNGgzUzlHQmVoc1cxNWVDUjFNREZ1bU9jVlArMDRrS2dydDVZZVdGdEEzYzR6QXNDZjk1VGVOTlRVWTJKTG1uSnc2dWtVMzhKWExBLzVPdG5VL0VkM1N0bUFIYzdQWHh2R094ck1sTnJsaUhHQ3pjeG1vdzJPT1puYkp0aERrVEtEdGp6OHEyeDlqKytDT0RMdW1nVXliY1lVSTByZTl6ZjNZV1pOc3loZFI2KzUxU09BOEN5R281SFFpNCtJZ083eDVCbnJvNFVXaFI2K1h2RlhGZm1nb1FrZEh1UWdHMlBST0V5Rk1JYW1yQjRaemdFMGlGNHdaUDBhSDBRVDg3R2dNZHJZMGNtY1RsSHFyNFNkSkRtU1lheDB6TkxwSjkybkNkUk9Oazk3MCtMczU0dHJkM3c4bml1UmRQeW11MVBKaEhkcFoxZURFTTljekJTWUdxcWhJQmlvb1FOY2JCbVh2Tk9CbXZFeDN3cXRRb2FIRk5RWE5LYTR0YXdRTkc0eTdiVGtJa3FsYnhiV0xUeGZYQjBWT2xRcStES2V0REhoMUpqN1p1di9yd21Wa3JnMWRLenJGK2xTcHVVbjhaSi91ankzQ1JBTHc2VVZZVnJVaGJnMWFJTkdEYkNuNG1oOTJwbklNV1BSczJrR1ZXRk15R1dVcUExZTM0bU1PYjhKMnpRZVoxZ2RlR0crVVNsVUlJa1RnV29adU5mU2FEUlRBRHRhWmIxKzJRV0RzdUVXYVRQR1lRZVFzYk0rektwWDdJTVBhKzUwTkNYcHg0RTlwVUljMG1WRk5XcHFMc2kxMWtYRDlnRnN5RTdDTGpaeWM3MzF5azVxZkZwN0dZOFJkR3RKV3ZSM3NSWC9hTi9lRnhFVldVKzVBWGVudTA2M1N0VWxtUzljR2hJMDlvV2oyYVc4bS9WM3REYWdKcWMyM2lkaVFoeXJWcEU4Ri9kVG8yZ1pGcUdWMmVFY0lmYTZycUE1eTFwS3JMSEZKRjg0TDlJWlpFdm1XcEJRY3RYdHBtVElHOHlUTmxPQ3FrdnBSTC9oYjRwSWdtckZNVGZpWlVWZlF1V0RqVXdqVEx3NnJ0eGdlSWpxMXBhZjE3WGFIRDU5SFNhbTFod1VlOE8wTlJWZlBHaktmTFdRbk5JQzJVYmYwYVpMK01peERiMDI5K2E3NnRsT085Z0xsMUYvTG5lMXBzRzFzaDRwVjFISmIyRFVWNEo3TGpxbk84R2Q0TDBFL1RRd3VKYnVuNHRack9iZlI5TlFzSEtaYVV2eVZkUUtLZVpVNUZXOHNXU1hNQTNoQTBISFVKQlU1Q3FZY2IyUGszRE1zaWZaNlRpSUo2cjA2N1p2blM1L3Y3M1pna2oxOFY2TnVGUmpISEhEZFpOcmZGSkMwdTZ1Zk5MdFFLVFIwSlBkK25BMWpnUS9XZGJiT3dRSTU5UGwxdWI4bUlNMktVcG9nZmVLbTlqM3JVZW1vZFR5ZmI5SVM4Ly9OdzJYWmJRbWZxaEhoYTJaNVNXWXU0Z1l0OUJBaHFVZE5CNUVGUlM2Yjg1QzZMK2xjUmdyVTlHbFdFL0VmTDNsK0VsNTRsN0lXclAvTHV0eDFyM09yNmR0eENuWE91VnB4Q2wyVnFqWjNydkRRdTlqbytFQnZ4ZzJXM0d4TUtBc2FNSGxWNWRhcm16dXRIR2NUekpZL2VqbXhKRndSckdrbEQxbmlyZ2FqWUdZYnJ3SGM1ZEhnSGVwT1RMQnYxUE1GbmY4VjVkLzRGNjlIMDVKU1ZuZTFpZTltQ0xiM2Ryc1FDWWI5c29SdWlQakpXVi9heU5FY3ZnRjBMOVFQWGlVb0N5N2pReDhNUnI5NE1kN0ZWUGRoa3ZOeTFoK2t4NmUraHRlUkk5aXE1QWNqMnJDRUJrUUgxbkE0c1IvQUpXUmVraUMvNWdsV3FTek8wRnRhaU9hVjUvZ0VYbExLOHBmUU5obTZtUFdING5VSFU0bzNDSDR6UzdqcU9teFJwVkhvemgyODE5OWJCcEQycHh6Zm14L1NnM3pqenVMWTh2WTZkRGhVTFc2S3FjNTlVbUcyOTR5MkIwLzNsNngzNENWSTdZR09Xam9Yb08vZnZFbk9mYnowV1FtU2RsY1lHMkxZMUtLaU1vd2VpR1doMHNqQmJBTmIwZ3ljbWRkVnRVWmJ0WTRaWGE2ZE16bHJXK3Zkak1GR2FDUmpWbmdONk0wZGdoK1FJd2dJUEZYOThIODZnZW5JQkptcVNJTDhtNHdXVHZ4U21vWW1qOWJoTXZlS1J6QnZjWFVkOTgxSnl6cEVIV2cwM2YrbndYNHpUU0M0SDNrdUZlTWJHTmhhb3psa2wvNmN1ek1JdzNUalMwVk1Pcm9FL1o1L2tGZnhlNTk2MVY4S3NUZFhXa0hSKzRYbWc3N2pFanlwOEd6VUp6aDVrdWNXeGRDci9ZOC9zR2k2dTR5VUEvZWpTaldmbGdHOVVZakgxcUlJRS93OG5wcm02NHZDaDdIUGdDWjdkS0YyUSs5eU0vRWJLMGQ1aGNNemZBcU84R0U2T2RpVFBUUHBHeDcxQnlRNElaSzE4N0crV3hzeUVqZGZYSEJ2SitZaEJ0MjloUHVCTStMZ2x5bmxYRzNDRXFiMFJnZVdDb2dvUlRFQXVpOEFldzJZaVp1WlhzMUVvOGdJRnZPd1NNM2RqN2lJeGVYekFJU1BnTUF5aWRZL1pBekFCSzlLb01BS1J1SVdScU54TmhhUTQrWlJ3LzVSczhqV29HbGI5VUJVRGRGWTVzY0NCQ0Zsc0djNEJGTnUzQlBTdkttTnVGUjU1ajd4L01RenMxTTFQc1FoODNTWGtWU0Zpa0tUMmUwa2ZEWnZoSGpVTEhlWnVwUC9hU2NtenlFQ2s3K0FOM2JSSUoxUGUvZEdxYURxblVaUDlxdzhtNFRML0JkTmVrNHVVVDlmWEpjS0tnbzBzakZoT1MrdVRSQWhaYkUzVnp0b0Q2ZW9kVk9qS3phSGo2NGtrenEyM1JLZ2tFWEplUndiVHFZbGN4dVE5eTdkZENpVDUrc1kwY3YwSm9qRHZoU21Ma1pDUVZ4MXNwRHY4VUp0V2ZxUnJsVFBBZmZXQUd3VUcwa0IwSVNjaHJwNjA2VVlMeldjazZBcWRyUjU0aGs2T0hzRUN3SURhNmpRVVlxQmtLWXNDRERMRFlWaUxZTmVUSEFqZlBBcE5ybHNnYll2NE1XK2g1a1l6aEdqYkhxT1lIaVRtSEdlRVFCUmpRdVIwNnp6WjFCUFJZZ0VDVmx6UmpUSytvZ2MyRGlxV0pkS0hadkFKK2lBRTFaMXVUQWFQZVFFNGNOa0xzQmZTeVJnSzVJcllQWFVuNlVqdkI5cEVxd1BCOFhIaWcxZ2h3cURDM2c0YUFER1RaL3F1VDR3dmJqMUFLOUg5VGhWWU1DSEZHejQ4WUwzb2xLMVgwL3QzS3RHODdyRng4QnpNSzBySGRyR3h2S0x3ZTFLREdwbnAyNWJMQUpLdHhOZDBLc3dSMXk4S3ZMeldpcFhXQTBXbjBjcW9JSGV1UkJBN0FpV1lQWndLTHhJeW9XMmswT1hWN0ppdFNPdTh0ZmVCMWdKd1F0ZCtFTjgxcVliNmxNbEpMeWhacFRoZGN0akR5cnB6R0FRREt1ZDRaeURPcmpsenpvK3NDYk80d1I5SUVBMittNUJiLzg1eGdFUGFGWisvOGZ5OUpXSk14RWFTR0JuUWdYSFZDaktrRU16ME5mbGh5SW9HVTNYaFJNT3N6U2t1YTBnYjV0WGVPWU1VRG1IU2gzUmJuQlZyejlqQitMbXo4b2paMG1QVTEzVWxZN2hmWDhDamU5TFJxZHRjZm5uTjRZWC9hc01iaVZkWE9BeXV0NEduRXRTYy9ENUtldVNkN1BIbldSdGx4WmhKRVIxaS8vQ3FUWlh3MHd4VHBwdnVPZitVR2ZacEFjeEtBNVZjMmx2Tm9yTHc5RUZsOE5MaTJYZ1A1ckFMOVhaMVlEdWRMSE04RjFYT0o0bnIzeHIwRHQ4NTYrUWdzcVRiRE16ZFJ4bDFXaytiTGFSS3g5YmNyakVwTHpqc2FEQmVDb3ZaVzBUVmVacXhKMnBxaytPTEtMQnJLZDA5UHF3T24zQkRFZDdOS3cvOE9Vd3dnVk1QS3VkUlU4STZYV3lPUXhXa0NIejZvQUtacy84a3FkRVlnUTBxREtqVWdJRllwRUpwYXdVVFBCV3ppOUVhSWoyYThqMWkyNjhnRnY0SU9hc204WHlxTnZUY2gvNG5lR2VoWlFVcVJoanMzVnRtRGxPUGNKSERlaTJNRFdlOHovbnVCWTJmVDRVbSt1aWo1NVVVcmtPVEY0SFoyWmJWc0JlYTZaOFV2cm5FT0tRUXNGM3JaeUZ5NHpFR1ZKY3lESzE2Y25NUkxmVTE3SHdHZFhaNDRGRDJJNGJIaUFoM3BpZGVFYVl3emZMdktTNi8rOE9aU1k5N3BJQi81UjZ6MFliRURhQk9odHhlNUlFaCtKYUl6aUI3NFdyNXZML1dsNllxZUZzdm9CeGpVTEE1OEJ0U0t6alBDY05La1lDK3RzaythUnBxMjBTcXc4VEd2REZPRzhpMzZxVXdJWGRWMGhYZVEvbXFIVlZGWmZnNnJ3Y0dPRFRRTkRVbkI3SVF6UnFsVjZiZ2RUV1VXanhKOXMzSEU4aXRybmZtajQzU2RDMDVzZTVoc2RhUHhvSUVDZmhuK1haclNWUmVZNEFxUDhOaVJNbnlYWitBN1FNWG14NVZqeUFRRXVmQWlRYXR5eEUyd3ZyUlZjNkJCRTVNWHIzRmIzYVY3b2dQZ0RSZ0g1OTF2Yk1WeCt3bVZlZHBHcmpNcFMwbFdnOTVwZnpnckdsQVpXbHpiRkl2M2kwalgzK3VlVE1zczMrb08zUUpSTHlrelVOSEJoa0FaVW80SjhxQkRIY1hzUm85Zzg0RVlwTGQzUG5Ta3p1alc0WXB2NnhaVjZOYllzQ2F6cmpUU1dDdnJkMXFFN1Z2Lzh2ai9iWERHeXRmT2U1OHpaTDEyRURUdHpkMWZabDl5SVNWTHJyc2JTdTFTRU9idG96b1VLNkRzTWl5RURmZHZmKzBjMFdIVVYyZVk1WHYxMEFINEduNTU4MTJHZzlXOFVMMjl0S0d3bXZSME5qZ29OVXV4YmgwMFdWVW9RYytydVVlN0dSMSsra0pkK202ODVscy9MdlRoR05DTTV2TURzNitTTHlPZFRqaXVGTkVKcThlU09uQnlxbjJLRHlFUHZ6a084TEJDUkNSK1VMOCtNSXRoM3lKL2JlT2VURzBJUUlzL1g4eWpWbkRlcExxNnJRb0Foa1BYaFlvbUluQk94dG1QRHZmZ1VERWFRSTN4MlU1MWg5bzZUbFI2WmlQWlArWjl6bEpHa2tORUFRZmN3RkRUUE1mZmhkQ2lvcDFGWTNZTElBTVZYOFBQdU15bHdsTlRyMTVTSUM4aUhSQmJLRmZqVSsxMzlnajVEaHFnYW1tYmxXcnRJREh1dkRsUnZ5K1ZzVHVwbkxMbnRTUjFxSHhKL2JITkdiR0JJa1UrSmVlT01lYm1Gd3FQSmhSNmo5c0VteVliWjYyb2RVSmMrdjIwUWlDcllacFkzZDdsbEJma25ITjU5dnNUK3VFZmVqZEF2Vkh2cnZxOFZCN0dad3drR1NhVzVkTm1GMjlCbTFidXlqZHdZZThnRmh3T0wvN1FVcjNvT053NmpLUVVncHVsTWRqMUZaSFlkQ2dta2IraEhmby9yMjREb2FwNGZxSFlMZlFlSkU2N24wbHo1U1NVR1hFRFUxeVpkbm9jN2owVWJlNE5zSEd4SFI1UFU4RUhwU0NWM1BkSUVwd3lDdUpRclFWaHNhRkJrSlQ5aDRTSDBsQVUrSUd0UEJwS2FCNjN4enZRTWtmMzd5WktQa0xRTnZ0OEVTN3J3RGg3WE1nRWdUVlRaL2liRlRVS1VWeFFPMUhvZWc3RXFoZUNHVmozUTZsUjlpNTZ1WUphREhEd0wwckpuVlNadktoVzdPU2g1QVEybFdHT1E4OFdGVmczR3JMa0FWRXU0dDNNUHhOcEZzSXQwQW4xdEFJZE81UWJidmdCSTdtZVpkeVFPenliQ0FuSU5kYnZ3c1JkNmgxcVBRcEh5Z1NBL1JlS2o0eUFTOW5GVHlRRHIvMEJrMzBUa2haeVRUVEhUK1VZeU9CNGF2aHh0NGlWTHBaTE1WN2Z3TXlKNjRQUUUxKzB0L3Ayd3ZOUDdIWDlvSXhuZFJXL3NTU0tXbHg0RmFwL2VPSUZYU1FVT0xOYW8zck1GNFl5WkErRU43dzVJaHd6NEdqK2d4NUZPNW9HMUJ4bk5WWWVWd1hSeFZxSzhsYmdxeGJpMmJ1SE9iNml4NDBLYjliZ25jMXUzUXhsZW9XSlR1WGE0akZER2FtcFJyV25FVmVOVkpIU0tPcTZwaThlUGhLaDNpbEJKaDRuU2F2M2tZWnRlSEtNQWN1Y21nUEVpT2ZmSFE5UWFaTVpQKzFUY2drMEZZNXJMSnUzdnVXUHg0Yk9lR0NURmNSajJzVVdOUUF0cEE0NnlrYXk0eVA0aWRuK0k3NnZBSXpmMWpEaUZqalZ6RDlnU0trS3RCVFZBd2d3dVE4V1F3bEEreXcyM1dUaXU1b3NaRVhtNFB6L0hudHFLTXJBbm5xSXJvVytmTXltY1FIZE1PbEV1T0lPOW9RNW41d3RUUk0zZEYvbXVtVGVyRXM5U1Bxd3lTTGc5T1ViNzdnd2FPckhRa2dXM0RuTXNVNm9pY05oSVkwKzZyWVc2eGUxYUczbDk2S1NEanhwZzBkUjI3MExvMWRSYXQ5M016QXNlY0NkdEJNOWRhNXVKWitvUy9FVGFPOFhOS2FOMUgrWjBWcTgrZXdETDFZQ3ZLOUxwUnJXWkRMRlBrUStoMlhBL1NvMU12cmpDa3NqYXdyVjhuTFUyWjVoeTJRTjI0TjdvdU9tVU1WTXIzOVBQemtMaTRIVkVsc0pIak1uKzdHcFVycHJZdS8zaWk2TUp2d2p0bC9UM2hPZjdwVWR0aUdEWmJSdkZGbTNJVVRmM0FMTzdlUTl2UC9Ba0lMRVRtbDZEblJBWWkwV3VPZzdseUMxU1RSVXk0dkhWSEJzSWdnQ3pyT1p4Wng2dzZpQ2lRVlFGcUZ0NUh5WkttcUtKNXlpMnZtSmVBS1JJRUx1WjRNTDJ5THNrRkxsK3M0UnFBSGJwbE80aGRxY1oyY0psWGhZanJwbEVMelh3YlpJN0RSSzhGTlNDTVhaRUt2L0RLWCtWbFp0TFJsb09ocSthYURQR0kwVlAveHB6S1dyZDJZSFJuMjNIQmdKUy9rTzdtd3pBYXVUYWtHSkhBRGp2UU0zVlE4RktRUE1WRUZJcEwzSk44bjZuVnJ1cnJGUVlMZ1ZxcWNZeUF3TlE1TXFFWnBGMkpiS01pUVU2UHVnbTB0d2FaMnRYcEsyek9iWnFWdXNlbmZsRmVmTXJ4Q3FDVy9WTXQ2WkduVGtiZEVFMysxOVE5U2w4ODE5M2NhQlhtYXlvTWZQV0JLcExyMVRnaDh1L2Q5MWxEUXA4VkpQd1hLQkxtdWVXci9BcEk5U2RsVkRMdGNVcDVwS0VmRitMaUJtNWoxWkUreUxLd2Q4MmI3ODMrQ0hhalJmcEdhMk5MYUNObzlMVGhnNFNOdnh3WXJqNDVkSjBraWNER0U2aGZONXBWTTJrQ1pDWklDdDJab09oS2hqdkdYeGhtN0tjVlFGdTl5NmJUMW5KOTA0UUZCU1k5NzNYcENkNjdpVXVCR2pWZ3hsSzlFSFVEcVRkYzVMWm4vSW5ENGNOaXB2c0hrYmxTM2FNaG43b1podFZva3BpUStBdklnOVRFSGRWVlRPa0l4V1JEcHVwakl5ZEplTlJUS1ZRcDlUbkNaSGRJREQ1U29ISm1hSnVWd2FsN2JEamJxbnhKT0tlZklrSWlRL0VUc0ZxY3B1aUpDVWRoNzhsdnhpVXlJc2VNNTNnNEU1dE1rT3JwTURvMGJUNGh3RWlFRCt3S3BYOFcrS0JUdmlPUGZ2bWpybjd3WDhNZE83RUt3YUs1cnBYdzBvUUdTZERjdUpYZG9BMUF5SkRDdVZ1Y1lOUFNybzduWUpOTS9ZUjB6enFSLzBUMkpDa2hOOTNkcWU5QTFNcUQrbHRrRHF2TURHRUdqVDNnekhsa1MraVZmYnFTMjIxaCtNS2pRZnlzWlEzbWpCNGpzUHpQTFFoUEt1bTJwcXN5dUpObC9yNk5qTC9yZnJZUU84N3VKcS9xak9rQzM3Y09TdWlQQjlBVWZLT0Y5c2NlODczSFdOdFVkQkxpTWhUaVFsZ1FObTJOQkdoVVBOSzZLNmNzVjhWejhiUnFzaURKekhWWGprZWs4c0t6cXo4WHc4T0Q1S05YalJJcmtIUkRVQk1LcllDU3gwdkh1dzM1anVoc0JnWGZNYkszS3FrVXg5UC8xMFg4SzRvM3hLc01ld3FQckhqNkhqVTRaVmFKQ05BNVVwVUFjajVXQ3NJTi9aL0FCTUpHYXpTZzZsUFUxRmVubWNiTU5jcFZqeURoNFVVVHd4N0Q5ZVNRcm95UmlXcFlKQ0VpV0d1VmpIRWRVZGtJbDNUZ29hWUs0VmpQVjRMeEdiT2JLc05GNmVTb3lVd09sMnlLeGZJZkpTMnlQWnk4UmQzM0p5SDFiZ0l4eHB4N2VucGEzV0xGMGtWcjlGOVZnRjdqbi9yTlNCaURYaWRqU3BQUXViSkh5c1JmVndUMUJjV1p5ZUsyWVIxWVVnbzVHbzF0SXRMUW56S1FtSDROVVdRM2d6WFcyb3pHMThmLzZ6QXlzamFlTFZONmg3QVp3c09zd1J6K0dvWlVaaVIyVlkxeVVJN1A1SkJSK3pXVWFHL090Y0pFaTRqKzFlVzZpN1plVkJvbkFsb3A3WmtPeFM0TGhLOEtsaU5SWDR1b0JKa3FWbk9LTUhKb25mOGZla0JQbXBLOWFYV2thUGQ5bWFyQXM2TGtwUThhVmVjeFRPRm01amJ0U0VXcUh5ZGFJaDJubENQNlR5TGJmc1MxUk15b1lUUStyMlQ0K29CRFpncnRmMG1jb0JnYVRLUmNHcjIyUTVnbnBQUkpzODRtbGlnUG43cFpOYXB4Tm1JWHo0NVIxNDNDa2RjcGIwWWxYZUprNVVJR3ZQSE9wWVdJeTZnRGFnT1dzNmwyUm85ckFzNTlubnlTOE1jYlVlQUd2M0lDYTJmWmhLZE1WVmFpMFVyaWxiQ2xqa0F2bzFFQndOY0Q4clp5SG5YdExLQllGQ0NYd2FZcXdnTW9MWTdCSXptVXZ2ck1rd3Q3MWg5dm1DSW03cnlMTVloZ2pxUWVGUHAxTnFzV1Juam90K2dJSkpaSFUzTDkwcHVUS2pmSGJWcHppUzBscWY0b2lVRTBwTnZqS21RWmdqNVNiTDlsTHl5SGoxTUhzZWF6VTdESE5Ecy8ybGRLdXZucHpWY3JGZGNOUEZzcW5uYjBrS0pBY3B4OFZ6TmVrV3NLVlcvQXhPemZvb21ialliN3gwUXh6czZTdXQzbWs3d29aZDI3c0tGeFZuZlpGbEVWZGxTbzROa2Rib2FtbDlKUk93N2pMSHNoZVVUSEZKSzA1S0pITG1hK21xTGVtTXg5eGRKYmFYcDVpMzJtNTlMWHdSRUVVZkk5U014NGRIeXZwNVE4c3N4ZlY2VVlDWjBPbDhPSGJLekl5aDNSVW8xY0RGMjdyNlMwclkrdWEwZTliRmZpZFpUZHZwa0tMMFpkc2hkNUs4cGVQMmFKeHBmR1M2TzhreThFS3VQQzR3Yk5SNVFLeENQbHhaZXNOaEdUVkFpRkZPd1FGUEtSMkVYZ3kyWEpMMm1uTm5NRUV3R1FzeDN6bVpNeEdZZC9aQ09TeSt5ZU5mdVF0bDBuRG8xMlZmbDdvdnpyL1VBTDdmQytBeXJSaElSY2g5dEZhVGttNjJRblRLbHkvTCt1K0MrT3VWTFVTV21mdHBLT3MxSmNwUjlLTlJzRlZ1RFdaT0JET2VrMlV3YlprU1FYeGYzay9BUkdrYjQ2a3NueEpMaG5vL2Fubk1TT0x0OTRmSUV5STBMSEhWZE45alR6bXB6SXZuMm9Ea05ucEN0QjhlWFJhemFESGgvc1UyZE1qb3J5c2U2YysvSzZrOWs1N3RGcEhNYTNwNnJ6ZDJ0bkdOV2I2TTZXa1RzQVRSVFlOOWQ5dUk5UGxyN25iRk9sRG1iOHM3ZjRXblNUR3NLYzJXczI2Z3AyNVQ1T3VQbmQ0SHBPa2dYb0MwdFFDMXkvVDJMb1BWbCtpVnB5Smd3Q1ZGWUlSVVFTZzNHck9SUDF3QWMxQlVnbVU3azRkemF4bDBJZ1RWMVJQYjlUQVFuQ0YxaTVPcVp1ZC9TYUp3K3NDd053aXV5QUxaa3hwUi9OMy9WWHp0YTYwRWlOcDlDV083L2s5czg4YUJlK0FoOWxBcVNsd00xVS9LTmM0STBodU9jUUxHU1RyNWNYM1YyRUY4aDVPMll3d01vMGUvaVd6L3R2cytYTHZ2cm50ZnpiWmRpM1h2WlhRdHlYZzFMQ01TQXVyR2hOdGFKdUFWbG05MEhqTVFSbEhJUWx1MStSWFQyZVFBV1Ezd0FHeHo4Rkp6MTVFNmw4aTlmdytYUGdiY3FDeGEwaGFQeEtPdXFCL0l1a2x6a09IKzQ5aUhQWDB5T0Z0SG1CRmRaeVE3c0FpeExlbnhLWEQyVTZXL3lHNHU0ZTg5UHVjN3I0TjROZXhVeDRyMDBxTjI4ODZGdlZpS1g1UTFMUXBZUGx2T1ljNTYzUm90Q1BZaDcyTkNpdnZFazIrTFpqVHZtNllYckZTMTJDWEIwZzJ6S3VRc2R4Mmxkc0NLcWwzRGxSMllkYmJNeEZtYzBtNTJJcFZMQlBGUDBadDJZUnRVT0NLemU5STNkZ0cwcmNiYVlxQUVHdllDMjViWmNNdkZESjgzdVVlR0hhWVpBV051aGVBdXdhQmQvd24yVmdHbjFMR1lBQWs5M2VNOWhibllma3ZJQXRIM2hVZ1dlNFVGd2pjUS9lQjAxMVQxRzdIblZRcllmSHFKckxQaXNIMXVPRG5GaHBYbk9ZQnhodXFxYmhkajBrMmNZTkVyZUdQMmNpQ29OT29FVURVR3o2T1dxZktFek9FQTBSMlgwVVh4Z0tKUndWQ3oxTkVoSHcxa3pLNURzRnA5Z3dEdnZvbG1IcTNTdUVkMkNqeDQySXNGYzliQTlCSU5vWnZxK1RCVmthcGpwRytXeHZJN0YyRlZzUmNnWDdSMUVnUjVHZzh4ZDI0TkV6YWloOVhWNC9RN3NoWUFKUUFBSXR6aHRqVi9BeWZDSkJSUlpITDVTL1BzWFVESms4ZWllaGVFUmxtOUZURlZpbE96TldDTmlKZURhL1RFMlgwaWw3bXlyRzNjTE5wYThvNHpvZXdqOFZreFhjbm9Ecm1SUjZiYVdFaDJwQkdaQ28wVXRLeDQ5eWRyQnc4U05wYjYxWUxwd25MNS9Fa3dyZ1ZsWFlpMVFsT1FaWHpSa3JNZ2lpZ1k5b21udEFOSzNDSVY1a3lwcjQvbHBRZkdIM1k1d1JFNGdZSlJnYkxJUFZHQnpnRFJPOXBnM0dwRFF3SEVDa0RTN3RDbzF1T2NFWmpzMjhmV2xCZTdPeXZWR2RQaENNOVFKN3FuUUkxKzdVb1AxUWhKdjVlVys4QTZ5NURLMm15NHVrSXdCbjNlb0FkSGF1RU52dEVFd1FRb0U3VkFRc3pybFpVVFUwQk9NQjg5MEVyei9mKytUR3ZwODdnRmI2cnk0KzhjUEpqNmRMVWxuMFVuOU9KcGs4eWRiQitNMTVqNWJmUXNyb2xsTG5McjhvZzhGTTZRTzEzZjd5OFV1YXV2R1hQRlMxay9neGVxMzY4LzdNcThNVWxqS3p5UUVaWEh2YlE2OEh5dzlDbENPRDM2elJZK2hsSFNwTEJzQVU1Mm9IZDZ2N2NjSDNubnBQQjFDSHlORFZjbU5Bd1h1SEpvZERqZnBKTjhXakdSM3pEanpLMW5HdFJxNWVaU2ZyZEdteVVKZkVtdkludG0xZUpuRHdlSzU3U2JkMkFoUzJ1WW9rbFpRUC91V2tlakxpVmZlMlh6NTdyVW9xclA3VVdHb20zY3diUldlcm9HNlBhQmJaRk5HOEp5cy9aMHNXTFExWnVEcjFsOTJiaUROUXJNMlQ5aC9aVnlGVytETEZOa1RxaURrRkIvZ3RaNlpTdFlZMXphVnk2ZDQwL2QzTXdVUmR1T3dUSzhjVHBlMUYrbW1PcG1BMUN3dmhJZXRTdC9KUXJzc2xjTlhJRkw1WjRBT0owaXRsYWt6cWZSR2VuZDMrTjI3VnZiKzBhSkE0U3dhcnIrVVVPblpWUVk1SlJza01ZcXUyOUM0QVhyalpmS1JPSDhwVG1XU0NQQ1o1akFhMmlyTGwyMTNIM0pmeW1xcDdMdlhXN1dJMGpDanRXRWlwR3VxWTgzVE9Ca3I1bWZlZnZuYTdvdGlOaGFiaFVsSWhGMGpJVnhQbmZSRXBydDAwVVdDY1RDQndsdVhGRFVXU00ycUJPd1FuQi85SnNiRXhUejVBSVRvTmJYZTFPYjhFaUdsdkFJb0FRdXNvaWNxa3VpNHlyVnA0NTZvVlBGOE4wSHlBMDRYaHFmWkROTjZzcUtHclA3NXJxczQ0bTdLcnBHa0dTT05zUXA5bVhIK0lTUVBRWTE2TWZHM3FZeXgwV1A4UGFab1pNTkkxdWlsUjZXYTExWi91YTlKUHV0M3NPc3ZsSmpMdE5LQXYwS1BuLzRwRHpOUjlzZVIxb096amlvTzhBWXhXcDAwRFM2ZjIzQlBVd050d3lIMFZzK1dyblBDMmY4UnJCMlRxMm96cmNvTDNyYXMvVUYvNUkwUUtBeWVaRm5laWFKNVBRbEdBNCt0UTU1c0RZeEhaTmExTmU3U2R3c284SUU1WS9lR29qa0dDZ2tsWGd1RUZranByNDdUZmlZZlVVWmk4REpyR2xKVGVMZVpxQ1oyV1dyZXd2cms0YnI3M1lSV3V4YlJUemdiNzNOUDZmUDZBeU1VOEFMWkdZWmkrOGY3b0gyYWdrMlhYZTVoSkhZanJ3Q2pOcWF4SCtwZFloZGtIT3VLVnV2dmVHZFJyUXcxeHNuY3pVZnRHaXc1Z01GTnRuZUVRNHp0WFZrUG5IYi9VbityQnpFajFCUHA0ZWxIUVBnalRoTE4ybUdHMGljTlhQeHBJcGFibElaUzFOSExlSzdxZSt6RElBV2JJWEtwQ3c3NFhSTGs2aDN2cnpZWVl2R0pnNzBqeFdVSzlhVFZvYnkvYnZwTmRPZEtibGZkTjlnejJqT3d3ZERpVUlRdGNhMThGZ3RJQTZ0bzB2aTB6VlFPbnFGYWFIWnpHUkIxT0VkeGE4ZktRTEdLbS9aUXhLYVZ0TXgxRmVnRkRkT0hBT1BwK2pEcVZEMllkMHZzcC9TS2VPWXpoNlVkbmp1d1pHdlJUMjVPdFZVVCtXU1pIVVRiY05xYnAxQXJyQVRyR0R2ekNzY1FzSjlOcms3czJKL3V1eGJwQXFrN0pDVHFNWmIzcW1MVXhONmtudmxEWFJXSTJVaHBPMTNqTURadDh0bHF6a09YSVNhcG45V1N1Uy9JTUVZd09tempicGxxcHRrbXpwTDZudXdzSE1XbTdJVTg3R1k2MGhubWptSXFTVmJ0S1YrSXBtK05sdWV6WHlOZVNKVisvckQ5ZVZkWk1xK08xK2xIbnRrZk1yeTZQSFE2NkZOc3duemJOMXppSUFSRVZraVh5OWFweDdiaW1XKzhnaHV3ZkJGcHQwaVhSMVRRM1BPaUxmZVZvYWQwREJSOXBXYmQ5aFBEd2daZmNvUTdyb2dtUnpzM1hFNmFuUEZYRmlJWlB0djNLeGgxU2lEUmhpNFg4VXJwWDcvVnhzOUtObHdtLzZSTGphK09SUW01Nk9zNFk4MmtUNEtpbFBvNTlOZVJCSVNuR2RqU0c5Qmo4TVpGclh3N3RnOE9QdkIvcFBia0lLRDhVRmNIQ3FXcFJ1U2U2MldyOWZ3cjYrYXFiNGhhaGpOYW1XN3JURXhBeUFtUmtBc1h6ZHhpclFOTXZQelJ1TjFaSklFYWpBdkIwQ0NPNlUwaTJ2WHo1OTIweWtobkdNMVNRNFdLS254ZjFtbllvTTZMb1VVNWFWMk9vSmhERmJSUWpTNGFEc3UxdS9EcFNPeHFHL0lHaGtYNWUxSVRuaXkxMm9tcGRQN2VrOWxqUEcyRDloT1hGRjdualJqSy9CbTd0RG42Z2NURXBBalIwUzVZVzVSdEc3Mnc0OTZSQjZPR2h6K3VWc3psck5FcSszRHY5VE8vZmF4TTNldHJKWDFiT2hDWkloOXlrYzlBVVhra3dqZWxlR24yUjRlcWEzdDBsbTNyUmZKV3Z0TnRnQXFvRWk0L1RpaHhENzRzdDFTUTY2N1pSUHprbVg1S09zOHZLcFF6UldGVWZSWjZKcW5ZZkpLZnpSZ1plY0JIRHllZnNhTUFYSmRTV1laZStGVFdqMk54TmZ3UmgzRHZiMGRsSThZY2hvNFArcDNhWEVvN1BCMDdoeVk3dUxZVFNCWjFKUnRYbzlxajEzQmFXWEJXbzJzSUlySm5jY2JKTkJzOGpOakF1NU5QZXZpcG42SUU3ejFxa3d0OWs5b0w2MlFidG1sYVRyclNhQXQ0YVlUZVkyOGlsNGZoSlFYeVpqT0hYWXEwVEJsM2FSNm1BMGJQWkduVGF1QlRYTlo5Mmg0ZXl6WFc1Unl4Mnc4bkg1VmRwekZ4R215SHllVWJqb20xOHBhaU5EQy9udTEzSThXYzBwUGVad093OUVRSTZkNlZ5Rm5iWk05dG9LYXhaRlFrZDhNS0dUejZZNkhZejZDWHlhOEZoQ2pTa2o1cVkzSnFPTFc1M1FLamdPeGhrQnNGOE5WdGNUTDZoVkJkZmsxeTgwNm9oVFZQOTAwbGpkUFdjWGJrSWFERFAvNmMwYjUvU25IM2F5WDk5QldGRG9hblAzdFBpQU5FeU9IWklHajh1Vno5QlhEOEE2eUNaWG1ZODBvT1JlY056SzdEMG1ZcVM1c2VrUnZEOWxaYitTdHRncFVsYVB6YzJ2UzZBTlZzS3VEWjd1SmswOEdiUTNhbTRKcnU3K1RpL09xaTNQR2t3K1BTNFBxOWZrdjJNc2lqbjVOM3pBVmFFOFhVYnBQT0RzTWlES1FVOFd4OUVyb1BRbWtuOW5NREYwanZQVHlVL2NKN2ZMdGYyN3FvY2ZTNXNHTkI2RXhUdkg2dndzYVZjS0dYM0ppMm4zTHJqaStyR2F3SThnUElpMndrMi9zb1AzVis4czhuMGdEMFdVakNyOXNvaWVaRG9BSFZYT3hoYzlSVkdzdUIycDZ0OExTUjJjbStUcTlDdUN4V0l5SWU2bE91akdIc05SbTMzd1d0ODZGNFNucjlsSGFNNjdhS0RxdnBkSmhGQ0lVN0YvTENnK01VUWZPY29ERjdFUE5rZ1BZR2JkblJiZ1BSOUo2UUhGMGpaT0Z4NkpLdFpVeks4THJzOXB0ZEwyV1VTOS9rcXVHWjUxUyszTWF4T3dHU3E2ZTE0WGVUQzZjU3lnL1pVWmhlTElObDluOEVjV0VwV0RsZjVweUl5NkxMbGpBTVc5L2g2V2M4aFcvdTNZdDVrRWEwYVRKbDlyZlhXVFZkM29TTDF4QWZHMU5wUjE0Snh2dStIczdUUDY2RXN6U2kybVFtSVZwNlEreW8yRGN4Q1BQdUMzeStZTFJTbldpdDZIZFFmbmJLUXIraEFSMk5CeVF0NytIa1RkYm1VVnNQRWVDaFV6eVcyYXZBZmVPTEprZ25CYXZlemJHMTRYeTd6VkdPSHBRNS9PbytyUHJvK3oxbnlXMkxKeVZzcXpucUo5ZHBHY29LcEpXclNRdWpxYUpBRDRpL0twZnFReUFrdUZLTi9vUXZMK3J5TEZyeDNwZ0VOTHlCV0N5MVVzR0hXUE9Qc3lIb21LMGt6VmlEUS9QTW9ERUxkNytNWmx6TS9sa0w1bzNUU0IzWURvYlpsU1psV0pjVWxlam9ZdWR5aER2a2hzRDNLcE8zcXFmcE5acnVUNlViWGhzczV4Smk5NUhEMTdrczR0cFFQTCtQSHlyQTY1Z1N2aG0rN1AvMEVjNVBRbUc1V2xzTTNxK3dmZXZlY3lkaENOeU5sWnV4bk1EVFZlTVU4aWh4MGVnYVgxYlpLZXVSNGNEWUVNVkI4RkEyaDg2VE9tQ3dVbXFMYlU5QnJQTjdiRWEzY0g1eDJiejZzanlMZ3c4YSt6bmFkcmJ6TGJ6N2hqdEc1cUpWdHltQmdya2ppKzJnRGE5a3lSWDZJRXMzZ0lndnBkSVpXT00zZTRpeU43UW5RbjVuKzUwamg3YXJtWWlBNlZ2QmN4RWErWDlDYlBKSEsrTG1vc0xkV0NyN3Z6N3F5NVA5cmxDUlNjeERHUmJudnY3VXJkdVVwTXVCNjJTNzZqeVBRLzk5Z29GM3VodDNEZXpJQW5nSGoyMkdGRnd0Y0pIbVFZM0txanU4bnEwTjhoYnRoNjNoekRiRnZZaHBab3AzSndId0N6UGZkYVVHQ2x1ZXhmeDlOZ0U4L3VpV2YwOGk0NHl3OE90UHFKWDNoaGExRzBMcFZlcDl0bzl0TmtybHF4S2l1V1ZoVFBENmtlOUlGZHJNRVFCd1NNZXkrTEU1TFlBVFFQb3ZvWWUyMmgrZVo4U1JNSXFuT3NTZW16NkJvZy8vdERQVjJjNzk2NHhKL1YwTTFxOGY2ZlpLUFZ2bXhQNXdwMFNkc3BEVVc3Wk5mMk5VZHVBUHhGdGZybXNRNUtsNDNJdUtjSzFGV04zVUduL204T0Z2WmZaM21pZURtWWNwYmJDL0lsR20xM2xHVkt0RVFrTitzUWhCM1NHc2VuaWdKUW9NeDdoRUhKeEFYSm9EclZ0TGh3L0VlM1R6KzlHSWJvclIwL1plTlhDb09TR3FqbmhleU52ZGRBQkx2NVZBRmx6R2tMbWJvd0RSYldkcFE3MTVWSHdkOE1EV25MR1YzdWNLMFEyRzJIRTYzM1FUK1JadTAzRkg4L0x4RjNSWkpiMFQ5RVZJOVRia08wdzY4cXgrdFUzK1J6MXppT3ZTSEwzS1JPRG9RRUVSMGFuL1gvaSs5bmJMa1pXbGhQdUltZUVkcU1CZzlIZ05PbnhzRmhSYk0vem11K1Y2Uk4yRnpCQmZ5UTZ3QWNlVkJFV2xlMEtPNVFWZ3Y4MDZJd1YwV1lsYldSNTJnVVpWRXlGU0FyUEJZM3lQWFlhSVB0bWUrcExnSHc2Ui93ZlVwRWFSS0dEejZoQUdYZTlTUEZCRzJjWjZUeEVnN3FpSVVjSEM5NjZYclNnbU1GR05rdTlFa3FTZFJsWDNKRFRkZEZzY0hXWjN2WUNYVFEzcElwWXJoN0s4Rk9LNWJjbEhxVWhPcFVWcjlDSGplTk0zd3llZnlqcXVVblJKMTYxUG5laDRMa2lmSW5kcG5OdzFhVnlsdjRaY041My9jc3k0aCtSTER3NUczMlNHejl3eFhyL1BIRlZxUFZxNnAxTkkvMWtlSDZTSGQ3ZEVrSSsxOUtxK2lqZVFtTU04K0R5MEowMTVXbFpZRHRvMVBaSmIzM09MdlY4VTF1d2RXdWxQRGtUN3YvVVRjQXhsY0JQcEkyc085VkZDQU1MdEZqaVBKUUZPWU1FelZXS1NGRzU3a1dVekxZdWZzNGdIRGtCZGp0eWNNWW90VGFGK2JFZW9UbllYZEFPblVOaXFVd05TUlN3ZXpkbnJwL2ZDUkhUcHJoL2NEQmE5dnEvMnJKSzlUblZJSzF1OVdWSnVQTjVMNmxISlcxcDFMN09pbGo1TUdORGxjU01Pb3VyalFHdUJuR09WZ2ZSUlU0a3pGcjVjQ2hFSTVVRkZZZk94c3VNa2dLTWpSSUFVRkxoL2ZsOVVuS2JLOXNWb2x6c0dkaFRmYjY1STNyRTlKc3gwcnk0SHpMc0RQalU5ZWFLdzVzU0tuQ1JldjZrb3c5M1hDeGFod0tsbUxJeVMzOEN1WExoYWxoenNhTTl5ajRMdENRSGcraklNWFdxRm5Cd2ZLbGh3RDRlbjM3RUNwc0VBQlczaFN0UnJQS2k0MWFVZitlWUFPOU9BU0J1ckRDMG1jTzZFZko2N0RFa25CWkpLR1V2MnlDQWZRNU5saDV2UTQ5RDNQU3N2T0dKTUY2cDNOa2RNZGJRcDQ1UStldWwyVWxQYk85U1BzckZXNGhHU1pHaTQvYkltU0RLczV4VnczY2YxQ2hyVWtqTTVaNmRuVG5LTEkxUTJIUkJlSVVCQVJSWGxNdTliWE9WRXNmVDNyWEpsOFhaVktEd04wS2J6YXpYWSttTW85cGlKSUhjSjJ3N3l3dTJrU0xnOWhJK3VBVXZwSVJ4MHlBVzBtU1JuZ3hhaDRBVC95S05vUS9nN3F2andubncxTC9tOTk0cEo4YU5YcnZYS1pPQmRUMVZTZzFFV1hkQjFhMVpKcGlLWmZFNEp5NWczYXFEbG9lZUpsSlNLR1FyNkYzb1dBV3hudTREVlptci81d2dENGIxREFqaE45b2tEZG9wcWwzRGExR0dHTWJXVTMreWNUQUxJbE1CcndZR0NwWFQzdmNrbmI3UXhaSG80dlZrSmhBeFd4OU9SSDBwMUxDY1FFdUg1ZlZHSURYMWEyUWNNT1BsWWd0VTFHWG9YVm1XVnE3V2EyU0JJNGNWbk5TejJrSVpKWmp2c1NGZmVIRFhNVlFudUVjdWFTUUtGZEVsdFpveGtLQUxMQ2ZYSEI0V1ZTNC83K2tkSDdKb296cWppekFIYkd2djVCeld6bjN2a0JCWW9lRXpzK3d1V0FmUHlPM3BRUUhlMlRoaEszeXpwaW5SQlJiOENOU0xxWlpod0hibFF1UzFhN01BMlhsMzN2bE9EaThiV3JHWDFMOWxEeDJQamp5MEduVnAwcTB2Z211a1orYndZNG1ZcTdURXpRSTBhNCtEWnNjckROdW1mUm9ueWtWUXd4U1BZblROa1hmNkVVYmEyalNSZWFGdEc5M3UwK3d1ems5M3VOM2hoK1lzdmcvdExQeHk4VVU2UEFCNVN5bTh5TmlCMGlHYm1uV0pIdTZtVFNmMkR1elRzNmlNamVBalFKTUhWbWk5TmZQNlppUVJISmg0QnRxMWh3c01qTGJJdXNjeGFKdVp6MkQ1c1JqYzFCRS9qRnJOUm4xaWlEbjQwN2RuMHBiOUVPaHF2RkVQT0dDemR1ZCtnTENlSVp5NWZrL05MSk9NNkxMT1ZXR1pUdUhNSTF5bGFneU5hZkNNYmsvRW5DaEplTmRxTFdHR3pMWFVRUUxoNWdpckRGNHBScEsrNU1Ca2pzU0Zkbk5iaVU2aEc4dTlRZ1hHSkErTEFWb0FsSWJ1SGx2MmJpVEUvWG10Yk4yak9SbHBoaTBBbHN3VEwyWG8reTNEZWVRUzh2U2JlZDNIQ25lR1pkR0x4d2o5OWxLVFY1UTNtOUpGOEc5cnhRYUwya1J4M0RTRG1CRzMvd1pod0tJZ3lrRzFFUHNHZzJBbjNDdDVId0hkc2JPRVR3a2tUNGQzajRjd1JyQmE2aUlwQ1ZROWhKS0NnaFFUL0hlQk5FVS9RSmZBTHcyVFAwSENUMGdzUys0cndwL2tCZ2ZmNERvVGZxN2JCR2lhVllCbG9SODdDcThLSGdXZUVuVXlBQldXZ001WXlnUnBscnRzQStQQUN3R1FseU9GbndxWmdTUUkrY2xTQjZ1L0dTMHNiSWdDSm81QlUranc0c01HLzE4YithWDhZc0lHMzZYTE9LeXJPR21ndk04TWJLM2NxNTE0U2lXQ1h3dng3YWhlb25tQmVkVXVQbEt0ZlhRK09xdDlJVWJFQW0yV2hsbWlLaVUrb01VRmNzOGkyL1dLRW1BM2tURXVldXZJQ040cXN2d0QrUGNjVmlaZERFaEdIMi9jVFdjTXd2MThwRUQ5WGY1ZnJQYmppbFBpT3prNEtOcEJKdHcxOUp0dGFIRkpiUVhtSTA3cVAvRUZ2aW9lbFQ2ZmY4NWNacGM3Tjc3c3VOdlQrd1hINVpGTWpxNEhQMmNFenpxdnMzZzYvclIza3RsTzN4TDgvS0xweFBQR1JDaTBDMWh4WkZRa2YxV0NIMFR3Z0hYNVVNUmJEaG5xSGpYTmt6a05iV1dUcHRzNDA5MlN0R3ZSL0xxRW0ySC9ubmhiZWZWczZCQVVFVllIdUc2MitDUUtYbFZiQlhtRGRndTNKdFFhV2sxYTF1ZXV0dkp5MVNUczR4SHN3L2Nja3RCV2hPVlBIbWpqaDFuRGpvRzI3WDNLeWYvbXUvb0E0WWRtRGNncnUraUhTckhFb3BEMFZoVG10Wm10Z0svSWEwdDdHVGEwTzB1N3RaMXA2TmpvN1Z3WHRPRmUrc0NqYVp4MVdsclZIWW9KaDFBYXhPbGpQV3pBSkVwUmtSdW52djZMR1JKajIzUjkxaGEzeUFOVWFjb0RDN09Nd3R2eXhwSW5jOEZGMVd2NDNlNTg3dTRVeFo3VVAvUVF4Y21jbm1QRXNXNTFHWCtvR1h3ZE11S0UyRUVKV0tvdS85eE55aHpGcitjTmVUcVIxN0t3TXZCakQwR3JiQ25ZVWY0UHNjNEdoYWV0cVJ2c0F0MWxIT1VWK2NMZFRkcTdTWkFFYXducnh2T3kwcVlYZ0RVaUdCVDQ4L3ZnMmlsZ1lHdERpQ2IwTEhnT0wwYVFGR3Z6VWJFZVdaQzZHSE81SDRhbDE4eXEwbFBZT2J3aHRyMXVZU3VmNjVaNjZtdDg4QzViQzRCWFMwRVlxalVOMHFBU05rbHlaNGpQZWxwcmlZZDcrbWtPVnBORTUyNWNsQ21nUFMzcFlwZFpFMWM4UjNXRUF5a0dUMk45S1F0d3FkT1drdGRibXlZaUtBZUtKcWlIWld0bGx1RnJEa29yUWpDUEw4RUd5cWlOdkkvMVpCYk92OVdCV2d4YnhVWTJXZzExR2p4YklRaWdRWGw2WEdVdW0wUVFtajFjZWZRUml2d2RDQWZwRUZNOFowbUtvcXcvWUdYMStBdFZRNTArN0hKb01md1VncjBseUt4VXFJREoyaGNZZzVzZ0I1SFlDa3BRYWQvRDU3NVVydURTRXpRZXpCamQ1dklvT0NiUEQ2ZThqNWU0aXlJRXN6R3pDOXppR0x0aXkwdFRSbWlOdWNySVVNL3l1MFhMWjZraVZjZEJPK2FXOWpOdzYwSEtBZVhPK2VWRzFncWJTRUhtTE11S2xpS2JWd2V5NnJ1UFFLRTFtS0IwQlFWRUpzaFJOcjhGbjM1UFQ4Z1RSdGNPK1o0NVBxYUVrSXBkek9XdlJLNjU3alNZNjYrbFdaL2o2MUV1Um9CVDhTZ1lQNVhkQUZSZThqNnQ4Tzd1NHR0SnBOT0FscGxqaTlIZmo0bkxhMXE4aTgzY3FKKzBXQThFbjNHY0hTQlk1V3dmWktBbzVScmhjMU4rT1ljcmUwT3pNUWV5TENDbXhkaCtPOUoxNWp6cExuUFdWMU51N2JITFg0WXpsclpIS29VQnJvMFFyalVpQmNsWEdZc1dlYllJb3djNlVyS1pxRVYyWGFYSE52cmRjME12d2VZdkNyU2pjV3VIRml2U3U2ZnUyOHFwSWNFYk5SbkVialduT3BYcU1TMDFlU1d4VC9DUmtVcG9sbmU2aFNDTXlnaXFGQUFtWWJpaG9nejlBODhhcnZ0bXZoQkVXWmlUUHhXUXV4ajNscjBhU3dGc0lKakdjcXF2NTF6Ri9NU3RWUUpBdFZOUmVNTmJqM29CNTRVOFMzczE2VDloSXBBTW5DbktNUkJsMjU3UmRiUnVQeFZ2WmkzdHV3bmVza0hWTVhseDRZb2hjZHJrVVN4am03Mm5COWk4bzA4Nmh5QzQzOFUrMHI0a1NYdUNaSVlMR2hScUwyeS9WYnI1eHQxOVpBNjVTcWV2c2RQbmYwNXliUHJ0VUc1cmVoUFdiZldTSTNVR09kUXhhdEI5VVIveEdXNmovaUovcFBWeDdQKzl0cXMxbU91d1o2WVl4OXZySTZsajdJdDIvSmpMYVUzdTNRelozYUxPUmZodVoxdzEreVgwU2pyeERPRTRyNUd2RG5vcGlGMFFGeEN4bjJLWHFVMkU1YWF6Q0N1VVlpdEtuVVBVMHN5QWpnUTR0U0RibllieEwrVGc0MkF1bzNOSXo0YXFRQUsySkFjMnF3Nkk4aldsQXR2ZHZ0MkU3Sndocmlyc01XeDZUK1pZZ1RnQkVtcEYxVmdIR2Jhc2tlRkZ2NVNQL0xPdStCOGJ5L0hyYXphbDZzY1RoZmI4YTZiRjZWeFhaa1M2UTdyOEliMVZ6YWZ1d3VydHVyNURjcWkyOXJwNzhXL1pucEdwTjN4VHA5WlpWaEV1VHF0dDdFMU9zalpjU3U3MExod3lJdThhelFhRE5lSE02VlBpUUpqczFnZkh3Q25lWUQ3Lytsdkp1djhjcFhEZ1ljbGhVbXRZL1NQMnVqVjJVS2NZeG1mT2Q4eUlvNEJWVDdvR0FqbzZVeVhmSVIxNGVvdVFCQ3lZV3hmY1A1WU1uWEtxb2ZFRXRzL0FFWEMyZ0JqWGhYOStrY1BCL245WHFlVWZST09tcW92b2xwM3VJaGFNRzJ0MXhwYXJUei95VDJMVFZ6ZWk4WVBxY1BoQ2tKMXRnYSt3dFZrWVFIWHk3ditmVFQ2TExDbHc3aEJzbithQ3FXckFEa0d1ckZRRTEveVNJUjg0Wk5pdlBpaWFSaWVGTFRxV2xCellGK3gwUFI0WFMwWXpoV096ZjFXRnFtbks0WWJLZk1hNFlWeHRaaFJtQnAvbnpWdk1NWVRkeDZpaTd1TWJLdGY3TkpWMlp2b09rcWRDWUZ6RmhIcjRHSExlNWxuZEdtZE1UclBuY2YzTmR5YjJTL1NwanhXZFB6cVFkcjJaK3I2M290Y0pYS0pYcDBsVFZ3QkZqY3VneTFnd3F0bElMZGxuWElrTXhVZUxrRGRjMzhzYUNVOWZFdGRNNzE2Qno3WU5WOXJpN1hYMUUwa0FYVWVvNGFPSHgzODlsbTBkNmFvcllWazRZdzBXOVZaNXZLWUdDVEdVb2w0OERkV0RndVh1elVXMjdQNnFoWkhHTXFwUVBLR3FhRVVra1lncFFheDZrSnNYVTVodXp4TkFDL2tBTEVRRndzTVc0Z09KSnB4dUZMRDRuKy9peGlGRlBpd2tWanRSaXFOZkNKakxoR3JKK0JxUFVCSlFQMFRUUHlERWxTQ2NTQ2ZaYTFCWVpyUlVrSTRXdS9QcXRkdkt1eHlnbDh0NFZJdTdjQTNFZGlOcXRiSjY2Q0RGNjhzc2tUNFRKbm9KY0R0M2dUMjJDNVM0bnZmTVRQNFM1RWxNOGxtc2V1REhYSnFFckpNeWtVd0taLzBvWGQ0WFBubnVPbi82NVJNYU84ekZzd3U0NDAxRkFCVkpBdzJKMUR6Tmswc3FnZHdROTY4QXFXTjY5TVZWR1NIeTNKcGRNRFNJVStnNnVCbHRhUldneUZ6Zmh3NXJUb2RLZXVUT1pMY1BOeFltQjBLMXJreUhzYUNndDU3ZDZxWEg2dlZWL0hmbUR5MHlCaS9ReXdTbGNvYk5YWHNlKzNad0JqUG0xRUNhUTJ2K3prWVFPYkRrM2tyV2k3bUczUDhHTnJYaE5tdHhEOGdyRFlKdDRaZVc4REdPN2N2eUZNY1c3VUVGcWc3UGwzLzZuUys1ZUh3NlFNSHcrY0lRODlON0IzQlhFTHNXTUZ5SmFlZlNvQWRjTUdYcC9nYTZqTlJ2THJja1ZEa2NDSUVrYVltRGU4Yng2ajR5ZkJMbEExeVN4SkNhcVhkNE9HczVRa0gybFNROUdSWllibXF2V1VqdTBkWDF0dUswT3RuOS9EVFNGZytVY1VwdG90dFNaZmRWdzErT2lPRFRiSjNnTjhkNjdyUUZ0T1Zyc1R5SUYwN0ZncFVlWmdrMzZJUEI4dmFXc2dadXUyRHlXOWM0YjdXckZhajZQc3NLYXRQK2dUKzM5cmh3eFNleWlYeTRuclZNdVdRNmozVldjNVlHQVlFTUFaclE5NHlmUmV6dWFORGU0NXFXck5LeTdJY3I4QjVKU3Z2MHBKRjBoemp3UlJ6aDFIWWlwZ3Qxb1d4NUNTMXpUYk82cCtGSm9tOHZ6RnRuMzV4a1dwQ2hjVXN2Q1VOTkd4YndKRGFMQlV3MFlFVFBkVXpQZ0twODYxZEU5ODhiOHdxZzZzbVlKMjJnRTI0NXFCemlpN0VTR3kvazQ5MjhJWjVmTFgxdytnbnBBVjA3c3huTGV4Q0IzenNIbURoa1ZRT09oUDBvRTVuSk4zSlBGenRJRUw3dVFNYkljRnJjQ0YyZ0tIclJjK1YvcjB5dFY1dmJJbDE5OXZ2WmYxVHlWaXBDbUx0QWh1cTkrYmRBN05PWWpCY1BqZGhqYW82MWpWS3E2L0VxSHRVdGttTjczZXN6SjVuRzJHNEJpMVlUdG9xSUdWdXI2TzBHeFQ5U0hkV1d2OE90dUlPV0hIWXVUN1VLWlFqUDM4Umc2amtjMmlXdHVJNlBsVmx6bGJjWDRwKzg5U2luMkFPR3ZsTnd1dU1teWI0TDBpWjg5Ym9sd2psRjhqMlgyenA0bnJOcjJ0c3UwVjZtL1dhRkRlOWdtUUZ5UFRMR0R6cXRxbnYwUStUcnkwWEl3ZkJSYzhFMGFrZWFVNnVGbzExek9HVDNqL1pqMzNLMzF1L2l3Nk1TUE1aWDFpZElEU2V3bkttSCsrRS9jUnFqSDN4VXMwTE5HQzluSHNUaUJqU2ZXVWZNRE51UFczRElVU05BUmg3WmpaM2pqVU9VYkcrb3FZS1NCa2JsZVVJV0ZPTm9zc0JDTXBSTUp3Ri90ZExhQ0pGdEVjUkI1SFVhU1lCNlZwWWdCRHZGMmJjclJlcUN2WlM1ZFJlMmNIOE5WTzNUdlg2L2FpWHVZMVpadFprTWo0Z0c5VFdxdnJpY3Q2amNVeitlNG9YNG16Um1Mejd2VFBXS3kyYmlmbEcxMTAwV1JxNWxQbnBscVE0QUdwT3VtaTh0Mm5aaTdTV2Y2dWtweFNnbExFVEJ4aWw1TVZ2U1V5cUg5MmdHQWxpNUlpa0lnaUc1YVFmaSsvbUd3bGdOSW8vdXVtaXZickNkK0hnSGlOQ0RRQXNIdnRCK09SR3NMMnV6NThnR2JYQ01FcVE0MmxCb2hPVkQ4SUFPVkUwM2hyWURmSS9XYUxUdkRETTZpS29oV1pzSVVub0ZESzBtSXNxWldoa1hXZWRER0tPWXFucnV2ZzcvTVhVNmVOdjZvelpVVlZURHJTSjhPYzUrUlJxdUdEUjhnRHZ3TUlqVjVpdFJxeFpKVVJLcklJR3V2RWgvenhrNFdaYXhvMVNzb29xekFXcHNnbzNvWW9GdG05V0l5OWVEdnR4VUtJNG0yM3g1MzlSY3JUQmZRNVlQOGdhRHpoZ29CRFJFS3cxenB1Z210UktuVFZnV0hFTW1QeUM3eFFEcHRYalc4K09FL1RPMytza0VrcXFKWUFramlJVjVPZUxqN2p1RVNiWGc2Sm4yYk5kNVFyWU5EWm9YSExLU29keko3OW1YUzRDeGNXMjVDSTZqUXd3VGhKa0lLS3ZTYytZalZ4WXVQV1E5bUxqZWFEM3RBRXQ1MEJ2Y0dtUUVweWo2RVJRMjkyS3gwOGlZTms2SWxNcHplK1JrWnhlQ2R3aWU2ckhTZGNSRHV5cjZ5SThmYk9KRTM3a21xai9MYis5SFN0NDZKYzA5UExWOGZSY2swZXgyS1VldEQyTXhvVVlzRlJjbU1lM1c3WldsME9yTVRJQkhHeHAzeGRsWkZKRjZNNGJJU25mYjlqT0hQYTNKTGRqTkU0YlJXU2JPRnJhTjlDVVMzWTVNeUtER1ZpYnhVTFE4ZWp1U2kxdVNCeVczUjNVV2Z1Slc0WnFoWUJDcnNzZFZpcVFFakM2NFVJZ2hrVE55dGRIT21qdXVDYkgzTXpDMjVsVnl3M25QTWdMbVh2NG0xd2YrL0o2NGRMdVE4K0s0bEU4cnZDTjlwVEw2NDdxdElKMEpwYWNMdzNCVnFBYnkxcm9zV0dKQnBpZlcvR0ZIZ3kvUGdxZHFVa1VhMURHT0NhUzYxTDhRR2JWVEEwcUY5RlJqdk90MGxxZllMSW1haTFGUTZibmxmRGFOczBwRDAzTkxrY0tRRjgxa20xbEE1dFNrS2daaUpwdndaZGEyZ1BTeTVMYjlMendrdlJrY0lRUTMvMmNkZGJzTDR1OC96NWwycjRKWFhZdFFreUZiMHk1QnBhYWFDQ21xM3crcTV3UzlKaFl1dlBJYlRBTFVuOXROOFQ4WktGOU9vbzR0T2ZaSHphMi83OVM0c0owSi91UFBRcW9ubWRCU1hsNUxOd1BwdDJMWmJYcEhpUmtnZVJCMzFXTEF2YWRHSTJnd1VVYWgrbVRhc1RVRE1NN0ltTnNranNSZ09oUFFzSGQrNkpBN0pielBTQk9DUzdCYy9ZRStnT1RsZ2Z4RTUyZ09JbkVwb0RMR2R6bnU5TlNhU1ZkNkp4YjFPOEVXSnBiMVVueEhDd0QyQWhpenRuRW1SMUVSYXlGVDFBdkFUODJHeUtiUStyS2d3UFQrWWlINEhNcktNNTNsMTBKcFl2S2dlNHh1VHRLQjU3UVUxemJ1cEhzb1FId3VodDVQcTJ5SE15QVNYZG44MDZaVkVndzc5WVdCSUNsTHBSQmxLVkFXM1pCdHNrQkNoMW5jeTJZWnFaajVTU0NFVTA0bmlPdjZLWXFNSjhXaG82MEZndjBHbjc5cjBibG5WV3Z6NWhGVWd6bjhCU2JTdndod1NkUk5VVVpGK0tsUTZnU2ZQS1Fkd3AwRjVvd1UvUUNnMXRuZEtzdm5YK2pMUDV6WUpTcDNXaXhkWjJObTd1T1NsK2lXaHFSeHBia1QxUnFwWTZMbCtqc1BEamMrU3RxVS8yTlc5L2xTaEZVcUhuek5WMU1TR0ZBaFI0TXdYbmhVYVdRayt4U1lodkRoSmdpSk9MTmI4ZXF5QzJLWHdlR1M4YXBCdGJ4dUtQNU1QNDl1elhyZXcySDAxdlhoYjNCTit1RmRSdXVWV2tKVCtRNzdkaUtIMWFLQlNKVENBWFczakMya0JsQ3pDQm1xbThRcnhhS2VUcXdTR1F1Q2V4RTdKb2RjWmNyNTdRNzk4NWIxeTQvMld1VXRzdVQ2dllaazA5TmY3Mm5LbmQ2Q2NNZVEzOEcwVGQ3R25nYUxUNHFOUFdCSmFZZnJPT3ZVWER6VDI4OHdRNVlCUU9jdkNHakEzYXJOMmVyVncxZEV4UjlJRis4Ky9hbDd2Q3dSWHk4YUdia0pvVWhSYlBBUzN0b01VYUk3dTRjelpmLzZZMXE4ZUhMSnB5L0lDTk1yNFFUSGNSVXVTd2pUTmZoQlZLZjhnVFF3cFJFMnd6aXpySnVWSTlQREVKT29ZSldFekFKY0xvT3N3eFYyYXNabVRKdFRHcTd6UUFCMG5VeWJXbkpiOFFWdHJYR0NlNmZPa25zMU41N01LQ05UY2REMDZ4ZTdHUXlOUXRvb2FxWWdEYk9pZ05qNldkNFF6cERiVEdnTXhhLzA1QTFKek5EUGIxUUovY3djSHNIVlV2VmM0eHl5OHRhRWdkeXkwbGdXbkhxZHZud2V0aHlQbk04bTBQZW81SVFvcUw2WFB2Z3NPejdNWmtzYkw2eC9xMEJvRnJqYjhtSThMYkNqcFFXb1FhTHNpRVpXRHJNWi9yRmFpSzFRSXI5SGh6T1Y1Y0VwakRick5RSHZTZTZvK1F0MHNFbXV4VUJzU05TQS9VZ2s5REJxd0dYcTExSlJEMjNBWVc0RkpaOWQvT1kzaERaeldlZ2xDTnIzd2RrSEhITHF1dDB2dmh0WXFPcVFTWW5vc0FlZVhzUkpNVlUyUDZldkxYMU1CZ251WVQ1WXFIT29ZbWE2cVFjWU1uRXBVWnBRRUxicUdCeWlxNG1KemkvOTVXaVFMTzhzMmU2TGJwQ2xZY3IwUXVudGNFRnlZamhXQ3VaRkljUStDS0U3UFg1dVhzL2QyRHNkVDFhbDRuSFJHYWpuVjFNME9EaGVGeVR6Z3k0VWVkWVMrYml0NXFUaXFmdU9TZGF4RnBaQVBiUU5XSlFxYkZZSEJxVGtjNlhCQTArMTJjTnN5aHhycVUzSG16OHhscURtNStvbWkzTmduL3RYVXNneUtySWJIVUFYNStTc1lJSlJsRmpCWHdoeVE5U1VRbTg0Wmg5Y2tGTWNpajRhTkpBMmpValorV2JmV0tGaTZ5M1g1UGlUeTVlNWU5d2hTTjAveVY0SE8wMExyRmJLZDM0NWVVUzMrc0RYZjI4MkFURFBQNk8vODhFK2pBYWlDNXMzTU9uMzc1eVhEdzdtWW1lc2VTem5rZjVJcko3WmIxUkNBMmVNYUFTdnlEblFTT1ZHRkVYSG5WYkNaWDl4emxMUlRKTis4RWRWRnI5ZkVuOEhWb25LaDhZMDVEY1RQZ05VWGh6WlJsVjFNTFhIcVdWbXczSGRYUU9xeHEyYll2S0FuYWtYUlMrSmtKaEJranRnbGZrSjVSbllqSkk2UHFaTElSb1lhS0RjaHRabk5ZclpMMmI3c1RzTFgxSUxaYUphWFZkaWR3RlhZVlFBZUdDWjkyeU5vYXZUeUlLb1d3OGtKZHJFVmgyRHBuRzA2WnZpb3dCUFZrUnZEV24wM3htRGI0V2hCbTJXdHVyMk1aT2JrMUNuSW9DK1F0VHRlTDlMTDYwMElTNjA5dGR3bzlYTlF2Y2xvYVlaM3gzN3EycVZKb2NRQUNwTWZndCtqOXBUZXFXeDZJR1hRK0lGUDB2dEJkVmpFUzc4citCUE95ZkpHTTloZEhUZXhRNStYME5odnkxVmYxdmVyaXFhSXNYQ1dvM3lJR1N3ZDN6SmdCVGVaUzlMeEFzWWV3cGl2VWw0MDYzc1FSSmJkYVhESUxkclV2NnppcXNxaFE0cjJPekdQWXB5djVHcXN1NHpXZUNHd1BmRHRTbUhKa3YrOWFya3U5KzV1TUlNTElRdlhwTGJ5NU9sMXlGTHl3TVY0d2dVRFRCaTRxYVlKZTNBbGl3M0tSUWNxUDZ0OEpXc1NDd0V3VGV0WlNZNmtVeXlGTUFNd0ZlQmZZOXpEUU5RR2w0Z3lKOVgwNUxFaTc2a3JzNmpyYnI4N1UwTUQ2bmxJMmZOTmJheUdiWm9KQmtaTXhTdU9JNEJFM0JROFBjeUk5czFRZlVWMjhxRXMrNk14OXVVWGJNNitxSXlsd2piUm1zdnBUVWcrWDR5Q2wxUUZyTkhOLzNaSWJvdGRpZVBRckZpcVZHcW9aanpIeTBMb3RiNFNCQ25IdFJYY2VKTGpyT3liZ1Nic2x6K3dyazlCbGhUNnNVTEluU3BwSXVuVUEzZERCQitYWnQyNVJFckNRYkZOYTYzUjFyMmxMekU5M3NzbU43NHlkaUt0UzhwR3RZUU16Z3NHK0YxWDF5c0ZUYVM1UFBZcVhObHZCR2pFMjZmMk12S2ZJTHgxZCtuVG94VnBGenVmZkN3M09vS00xTVpVY3ZwT05CL2p1L0UzcURFdUZ3bkhMU25RSURWMWsxQS80V1FOQ1ZFc1Nna01KaE1aUGxsVVJST2ZNM21VazBEcmZMd3lzQUszckR0THFqVHhEcGNsbFRwUmZSTUs2bUZjTFdrOWlTV0k3U0g2T2gwZjZ4Wmh5QUJlQlpGNzkreFBzSURXT3ZIVW83UUpmQXNCcmxPdlc0cWMzdUUyRUtQWVNGUU1qejFtdmhPdk9EdTN5eUoyWHlZakRQcGI3NUtiUVF4SFhxcTl5MkMvaituTXlNRGlQaEtWeXJHeVZpSzZCL0ZhY0tIU3hvYWlGQWNkbDh1NTBvSTAwbjJXVzBFMm9SVUJ5SUFJOHVMOGgramlNUVZ4aW9nV0FGbjFBR0FrTXBvK1kvb0pzRk0zbUc0eFUxSEFwZkJJMHlGSG9SV0tORGtTNlViNEhlWU15UlllRmJTSlBpTWo4K2RsSnhGdGlEYlZCRUc1ZXNGY25MRm9saXQvOXFJcHZrWGdxd0p1bzQ2YU5uQjlCa3NtZUk4ZDZ2VDZjSXlDeUZUUVBjUzR3clUyMFJZWkVOWHFhNjI4eFVUTE9qcXlZeVhjaG9qd04yWWV1WG4zMjRUQmo4VDFYZFZWWFgvclpZQWR5VER3czVRMm5UMy8raklYUGxveStQeTVGUnAwd3dBWTFpdGRLWDBEQ04zMCt1VHZJWndtaEpMRGNrYkQ5cmJCNUFRblBXOStEUElQMFN1QnhSVlJ0cnM0ZXVFd3JuTW9rWEd3Q3JBM1VSbnF0VTFpblJiNFBERXZ5ZUxlWTFCaFZSclhmVkRiS28xZ0pzZmFxMVoyMnoxeUhNcmFuc2diUlRYL2VXaGYyTmdVNjR0RW5UNkNWdUJtRHRQTitTQzFNbEVyTVFoUTdSSFJTbStKN1JuOGxQbStzOVBGZThGSTdmT0JFdENkWVIzditiSWVkZGFRbC9FNmFXK0NWeU5nbnRqL3VDSG9WM0RVZHkzV1VsZ3dNRHNkd2YxR3gxWmg5VVV1bGhmejBpYjBCZ1Y3T0Q1VGVwM2M1S3hHM1BBY0JJc3BSU01kY3hDeWErekNkbktjZWZzOHgreWcxQkNoK0RWRXlXZUdHYmEzcW5QNFpyYjNmN3VtdEpZN0g4OHRybVI3M1QxbVZ5K21jYnh3YVlHOUhTVlhPTmhVd1NCUXJZeDUzU0RhTTRFcG4yWGl0S1p0VjFlU3RLNnNucDRFVTIrUm9scWpOUlg1bndhdWdaQ0U0NjdxQTdGdXdJelZyalU3QmlGZHhvQXJicU5VTDJ3MHpCVFYxYk9xTVZwcndsU0xaeWNHVitMMUE3V2l6RmdmbzRYbFQwOGY2dDFrYmp4Y29vQUc5UHBHaFRib0t6R0k2ZWZuQmMzQSs2ZWd4NUZTRTVkTlRBQ3p2UWFtYnZCMnhMYmNRYjQ5L0RBY0hkMXlpK3FOK1B2MzNlNTM4L2hEalBsUnV0T1BheW00OVBmNzQ1SDEvTzV2UVBuVzdYTXV6STMxa0k3cHNwN0swSGZ3NytVN1I2emQrZnlmb3JCbUxBem8xdlVQdFg2Mjlpd0ZDN01vL2MrcS9KWVRYMjNxenB2ell5cS9rbGE4TTkzaTErblF5NUdYYk1uUFg4dE9GNm1CUC9ILytVb2p3UWJUVkJySDJLTFovdUlZTjFWajJNN1pyK2V5UUZLblpZdFFNZExnZkJZNkVZa05YaTR4UUZGU0hOLytQakxUV0FxL1dZMWJtQ2lyNVVHdGw1L0xpTkdSZFJ2OG0yOHY2UmZuaWlHNWg5ckVJcFBnakdIaGRjTlRnWFFKcGZjYzZzZG9oMmNTN1FtQS9ieGVtdVptNzU0QkZNcVJVbjMxV1ZmWUlxTHZBWFBhQlZFeG9HSFptMFVhWWQ2REVybVBvbW12OHh3WHRhbVVHYzU3UWZtVERKY3VHQTJSZ3hPZENKa1ZzZEQybXV2Wm1GTXh1TWJoTTdTbUFSUXVPdTJVVGI1ZFhQd0s0SEJQTG4vNVMxZ2pPdnZ4Q2FYbkQ4bkQ3OHRwbytpeDB2dmpoeGQwYmEybHFrajFqdTF0WU4rRlZ2YzBYZlBKaXFYMzVyUGk5Z0pCSlJqTmkyckg2djlzL1FmVisvQXk3Y3QzcW9LUjNmRjI5SnFIN0NXTmlUN1FTcHBKcGFHdGNETlNoaktYa2tUSG5UcHVmYzJFR0c1ejlDbmRpdy90aFhwUjM2OVYzMytmTC9xQy9IalovM0wyWWZ2MzVmMHZUeTdvdzBtSjk0dEFuYnZ2RWwxdkR6WTdEY2FjZDJRbGJZaXI5SFBoMDhvME8zZjFsNlQydEVHUlgxdlhkM043dkZxWHNTbjlzeTV0VDBtWkpmWFZ5VHllWDJuTFp5aVlRNU84TlEzdVcvdHRpdloxTmEvdTFGMVAwdHltZ00wK1BtL2oxME1MREdkN1ljLzcyZ1lsNnUvSlRoVFo0d3pMOHJ5bmgxTUpRSGRsK214eGVtZEZaUkZRTkJLcElBdkY1MTY3MTEzK3JYUzhmanA0T092aS9DQzAyaE9PUUVqRkxsUUkyeG45UkU0UDlzL202aThWanJWcGc0UHBuSnJYL0JnbW9CbjVETkhNd0h6OXNaZW9aaGZONm53VDB4OHcvUnVxMlZuNTUxZmx4Nysrdkh2R2JLbUJqSWVja3VCWHZhdU0xZkZIZjlTYzJDYWlERkxSNWovenZ0SmJWSnpzN1NzT1ZUSTVUMWNLdHlJTk4vSTZpZEtIUDFVNWFvU05vQlZ6YmdsSHpMN0lhUWVqVnRiR1FtZERCK2V1MHBRN28wTitwV0ZsOWIzd2xsY0lhWTY2Y1AybjRCdnJJZEhzbjFHSEJReXJsZlcrOWN5cnhtemVnREVHSjM4UUJkUmd5M2FzMDZtOFpSVVRnV2lTSUR1N0pmYnErQXNyR2JhQ0x3YWNPb3ljVGlhWjdwNlN5V3VxTGZNK1ROYnZvY2xRNytSZE5lalRPemFqY09lQTgrTDZ5ckwwbHp6ejVtQkIrRTdlUXh0c1dkVkdtMmNxUDZBaldtZTRmWGNvSERnY2hIQ09YTlFwZXN4aGFzdWV4MkozRU1IRkJHc1VaSGs0VlpWdVlMa0pqbmZYeURZK210YzRyQzRwNUdTaWhGYlJNbkEvYW9Pd011eWp0bDVOQUdZdlQvUlVoNERpSll4YXJmdmhQdGxIOGF5R3dJM1V3NVVYY25JMS9ucGdCUE01ZDJaeVgyWGQ2RnI0WmNvc0tYN1lsQkt4Y1pzQitXb0cwUTB1V1YxQTd4YTVXcDF1ZFBpcnU3S1hUSkNHY2xNcmJFcHRxU21yMk5sdVNkUDUvWWdmYVBwcEV0K0ZWcEIyT05iK3p2RmsxLzl5N1c4M0xMNnVwMDlVOTJGdFhOWGpyeXJsTnM2YUI2aWI5RTJYckphVi9kTzQrckdseWhsdm4rT0pJR3F2T2o2ai95TUs3ejNxditPdldRTWxmRzJKQzNhdXNPNnhSZjNka2tnbGZYdVVXYSt1Y2JBbkZ4L2Z2RUlnYTc5QjREaDQ3YU01UHpZeDBMNUFLQUZnbG1CRHdvajNJdXNOanNQN2MzWlRRdGMvVW8zYXNjSFpsR0pCb0cvdWRHN2NLZnpZMFpmM1pkL2NzeVB5UnRNcTUwcDlBczJ3aXJzM1lsZEt3NCsxcE9qTGNnQkJvR0ViTjgwQ1RqTjZ4WHNieDlJSUlINmp2UDNDaHhFWDhTK2t0S2V6TUhIcmRBRnB4VjBxSUpta0NOL1EvOXJTaW9oQzFXazloRjB6OVJmWkJPZ3orcXFrL01Rd0NjY0R6bnZjUkkrY1BOcnFJdDdwV1R6THFaaUpNUGh4d3pVaDN5ZmIxcDQvWVllcW5GbEY0cVRicTZ2cFB0eWhQOXJHc2JsUm10WnRLNCt5WlJnT1p0S0IvMENENTVFcW52VVVNUjA5elgwTnV0cUxrNVFmcHcvNW5ZaTlHNkhBbjFMZ3VJNHV4VWhRbkpVYVNyZVVVL0xlejBHNCtjMWVIWnZ3RmZMdGlhUm5jME11VDgrL2JpVUx3VElPUCtKdEJPUFZ2L2RzYnljalJwZWJkQ21RZWFMUEZtcmNYcXA2ODV0djZBQW0vWHdmVWhBc2d0U1RzQnNtUlprbHFHRWxNV0xzaHRTcCtaUVN2Uzd3UDcrSzkrYUx6aGw2cXlQdHV3Zi9XRUh6N0sxQVByNjdXZkRYKzc2SkZXeFdRcDdxWERLVjFpNnJFUjFlSzdjY0tHSDBUeGdRaklYTy9vcEliWFNHaVhaV3E1dEJGWTd4Mlg5UVllMFJDTTdQS0tKRHU3QTVXVHRXVENEdGFOMmRMdmxlMVBIbC9tRitJV1M5UGRFNnkveGxxTHU1cG1ramdCYU1tU3ArV0V1TVhYY25YcHdoMEw1KzNZYlM3bGRSL2RHY0pvZkd5cGVCS1o2bExybklVRk9uQlQxMzh5RUVBT2ZiOTNNa3EwOWloNjlhcFI2Y25xYVViQ2VtdHkrYWNnOXpnYXZ5ZGVuTWR4LzA2S3k3eHk2bjBsdlI3aXEyZm53cW05V3FaV2dNNDg5YUV3ZmNQQ1JUc3Q1N1J2M3d3enBrSWwxUWp2bHhVczh5dGJqRHNtRGNlNHNNMFJiSDI3OWpaSEhKcUtZLzMwRU1GZDdGZUhIWkw5TVBlV2VOZ1ZKZzBnOUNaeDcraUNReUsrbC9KNHBkN0xsWklNZ3JwMEM5RWtXYmd6MEk0YytuRE9OMGVQTHFnUGZtU0JaWU5UMlRiNEN5NzY5MlZqRkhQS1M2M2h4Tm0wa0JRMkw3SnRGOTIvMW5YdzNGNXNaQmhNM2oxUU41MFBteEVMQmVJL29NVVgvaWtTTEgrYXZYOXIvZlYvWlZ6enVMcDd5b2c0eWRuMmYwVmY5dCtQNGRoL3NLWWlnYmtOY2RNVVMrRndSQ1ZFdHcvbEl4dnRrbXc2ZDVpQ3RuNk05TEppSmFZKzcrWDh3K3owbTdaZ29MQURYWlRmd2FDUzZ3dU1YeDI5UXdQREhlekI0Vnlid2R2YzRuUlQ3OVoxRDd5NW4wQ1RkbnQ2K1VmU3YzTDRGTkRuUEYzUS9JS1M0Z2NEK0plQXY4OUhTWG5iU3JYdlo3K2Q1KzdXZWwyQ3E0MUdkbWpQQlJBSFZ0dkhQL1g3MWRqcWkwMGRxN2MvSlpXL2NkQy9MK0Z1emdqOGk0S0FpQ2NWVDIyNGFqZlhtS2d0RUg3VzRDVmNnRFVlWUMySi9yMWRPV25tZ0VBUmxRQm9BdEFUbjExZ0RKZEJVN1pZclZBTmlkRllVL1cyN3pWSjY4NzVyMTVvWGUvV1dtWXR6QmtJQWJiVC92NFNTMjc4OEc5dVMvL2tBSXpoRWlZRkdJbGorc2QvNndFVXo2empkT1hLYTJJbVJGeWh1ZVJnSVBLZkNqZ2FWeEJvbmYrSHViMkxQSjlkSjF4am03WEg3MnpnaEJqTUhDUCtoYm9qOEgzTHlPMzNGYVBuN2gwMmZaTmFBL0gwQ1pHS25qcTcyNkFGMGx6Ly9qMjB2YjJsSTVYZWRQUHdlM0U1VGVLblJuanU3Rk5HcWtwWEMrZ2E4c1ZwQzNpRDlNMWpkZ2IzYmdqOE02OEtySVhEdWNGRlpVQ3RRSmZsSGNtRkppZy83TDBJMlBiYVdyMWkxV2g1TmpYYWRXSllwZ1dsZlhyMlpXczY0K3YyZ2pVWnR4SEQ1VFArc09yUGxZWDNIVy9OeG83TnZHOVRXc1VPaEtZSlpHZmFMT2NkVmMzWjBHZXF4aXlaZ1k1eUtGeVZrZVl6MW5YWjVjMXV6dFA1c3E5cWI1U2pQRTBXN0ZTd0JyTk9GSmtZSTY2ZWxrMTlaamphN2ZtVDJTM1RlN1VDUkllTGdHemx4OENndzRmS3Z2QkVlYVpEWlo5S2tXTE9CeFE4U0czM3FrT1VIb2xGem9lMG9BRmYrZys2Ry9Vb0RTSFJZUklhUmJtZktBQ0ppVmhNZkVWMGZqWXAwZnRkUnNNM3Y2WHcvVDBpUXN1czVCeXIvNVNYRkdmZ2E1dUJWQ1VNbHY1TGZWalEydEtwYjBwVXVONk9jSnN2b253OWltSEFzY1hPZ2thbjl2SVBDWnpYMnY3eWlHNjdFQ0xUUU01a2Y3QlJwZDN2V0l5QXBaUGtyWTUwNkloQTNINmFhVHRTbURJTlAxWFpib0YvTld3LzRFMityMDNnbFd5QUNCbUFoalNBaTlaT1YzOWl6bmFKQlNWem1Ld2M5RUhVUEF0NXBsc1pJeHpxUVhYaVRwVEdzN3FLZWtKWG9UZlRsbjFwNytHQml4bnEvKzBGQTBDU1NZbHBVUHB1My9zdURxU3lqS050MDZIbmN5UE5GTG1YVFJjUzRMOEJFSUQ2ek5qWEM0RUZsazdwYnBrbjdzNnRBeUcrdVFWYU93UE1hTmVHaGtGM1g0TzAwd005VUY1TFBpNE5mbW9zTnFzb0tMRXkyRTFjOWFUdXpRQ0xNY0Q4TmtyS1ZSOVpKUnV6bU9KOG9NRGVLV2IySjFTY1d6bHBwSEFuTHhEcU9GZWRjcm02WFJmSTQrZkNMNTlZYnhrMU85dkpFQVZBTnd5RVd6QktzTmpIN3dmRHFqR2ZhY1lVZkZMRy9KSW5lYUtPK3NrczF1S0FKTEd3MkI3N2Ntb1FEKytpUHNDTldRYkdiaU42bkFVd1BVRG43aGJPbUYvYUJRUXBNeUJxOXNtM1dpUjc2RnpIa3M2NjBoKzNOb1U2cW05VlJ4RTdQdXhtM2NyeEd6S0pFaDlkM1NoTCtqaG05SFc0bEQyRU9uQ1djY1FUOFQxZUphR2xDd0dWS1EvMkMxcXlWQWt3S0kveUlGbXg4NXFLd013Z3VHSlBZdXhrSXlTeGZVckJidkQxVitZTGNiQ2x0b0ZaVENncXgxcHc2dDhHZTRPdmZMTzZFL1FqaGIxamNQRURVODVOTXNZZGxaR3NoaUdWOE00WG0zaXZpcUsybG1meGJpR1pDQ3JFUk1DOGN1K3M1Qzk0amk2UENIa2wwTzBFOW9ydlg1VGxQQzJrU3hYSHNCMlFKSTYxWjA0NzI3QU9LNk1xYnd6bWhEaWJGclNCdnQ5eldLekZBZG1tZ1NJSy9mcDg3OU9OM25oMmpCTnN5UGQ0Tk50UTVMeGNlSkdMaE9UaXNvKytLeG1OV3lXSjVjMVhZbjFRckZNcm9RMXlLcXVLK0xyZmdBRkJabHp6K3RTN1NyVFdDR0hhTzgyWENVTEdDSTF1cXpVVXF5R0tpaVFYUnZUb3NrWEJLVnN2d29ib2FzdGNLR3lGbkVQUGM4VG1hMnNNQVZlbnl0UlVkUmdlY3hPYmZObU8vZndHVXVuVW13ZTEycndaKzYzQ3RnSlBmZTBnNDE4c2MrZmw4MkFJMmNqZzQzdkl2Nm1lOHFvd1dXQWFmT2VxTVc3aFRWeW1KSjNTVHVLT1AvUzVSM0RidXkvVHFLb3NtZDA4OTJ4dXdUMFhiblFrL1pDZWw3WmJVMjlkS0dRVGFPNkpNbHZFZ1R5YzJCVWNWS1l6b3JHVnlQV1pDSVJVTUNxU2ovYktjUmdVMGQyUldvUXllZ2ViMW0zNmk3RWtTakxlZjhjK1h5aC9EcElkZlRJRUU4NXphQ0VLL2ZLZkJJNFNFQXVCVFFTZEovNVdMbENrZnFiMHJoWDMyVUxIVU9LdnpLd293blFPS1d0dW11UzNKSW96NmpWbzBzMjcxTDZGWWl1bkxPRjZqenV5QzZkZDhnSWJCai82RktSOWFMVitmZmQ2UEw4dzQxK3NCRURIcmd5c1oxendLV0pFUmpnSDEzRWU1NGRWbW1ZWCtFNFY1YXdwYkE1bjI1NFJYdU1HeEdaQkZLUkgxODc5Y3UyOGVlQWZkNkoyQjRXVFpjMTFIdHQwNTB6Ky9KaFU2RHFrcjBXb3kwOGFlN2tnaU55cGJrc1M3NFB1ZVlvTWI0bkdBaEZ2d3FyZ21lTUhHSEltZEZWeFdXZE9CRUtNbFRzdHhVTjJoNW5jbjd0TitMaFNvQWxDOVNUVURlcWtSVnh1bmY2bGJNb0JEOFhSZkFZa1FEN1pZdS9SYjY2dHI0TmJ5NVlwVjlseDhlOXVFZjFTSElrWEZzNjIydm9jcm4wYm5sTFFBU3N6Y1UrVmpYUjg1cnRxbHpzQmF3aHd0Z01CODQxMmdZaEdwU2dNRUc3VWRlVUtLL25RQ0lGVnJacjM0L3RGRmVRNDhqVTR2WjNwTHFSU2ZxclU1Sjh0WXpPT094dFFOUVB4MkJlV3hMZVR0MVB6VjY4VzhlUy81TVp1Q1g3U1lwU0pWUXlrL0c5TkdGZm5UWTZvVDU5QTY0WEV6c1JySnVvZ0dyYlhqRGNBWExSWU10b1pHZjI0dFd0czQyMkRiQjJpNXhENVh6K3ROcEIwK0dTTks1OGRuWFpBWHRrc05XczZYbWNUVFFyc0tMMTlNbVZsN3lKZ2lzVjE5VnFPcjdpb2cxQloyemVqRWpxdXhad3VpVzV2SCs0UFEwdGk1dzNkbTB5L3VhYkRIMmRpNExiNWFLdC83alR4ZVp1OEMrTXQ0OTlYaCtOdGVDcjh1ZzJRTkhXN0Iza05QTWRGaDhwZ0JzWE9OZGc0SlhVNVZkMkQxQmc2RzhuNWNWc3JMZVJqbFllODNFZC8zWDIxQzF6djZIZTluWW5yenhaUzdidVRlcnk2ZjYxWk53a1hrd0l3OTlWcEpOdGhZa1hPN3NSQmwyRHRhRVB3Qkl0SGdTeEd3N2RtNFZhV2EzdFFvVFVYNTBkcnR6VEhQbGJaK0svclJFZzhqODUwLzVwaGY3NGZObVZkREQreWFBZWVNOHhuNitSY3hEWXlpNWYveWdRdmV6V3RzMkJ0cGRsN2N2a2tKNjE4bDYxcld6aWNQZEViWHRzNGtFZmd2cSs5MER5ZTFXSFRFV2FyejJrTzM4M0JqVmEyYnp6QWp5Ky9UaGYxTjgvMU5UZTFtMFZOUU9nOG13bk9SZ0swM1p1dXg2MmRIWDdjbE9FSkZZZVkvTGUvL3VScDFHcXRkZ3A3U3UrUDc5M21xenB4Mm9rT2dhN3YzQkp6dkFYZFVVZHg0TzFLWWFxTGVhQ1U3bitXcHZxV2ZldWtqczJRSkQyUFFzS3ZJUUpKaWllbisyL2lSNnM0RmdST1ltM3BRWXcwbExnMDBBL3lqSVFzYW9HTHRtTEpTUXA0QzR6N3dxaUFDTnFBdjhDQU8rZ3RiczhJZG5WampYOG0vai9aMSsyNkxuc3NRVWxBU1N5ejc1YmptdzExREJwNXZna0kyWThEWE5uQUtnZW05Y2dXTVhwcTlsM0JsK2RmUTlIMlF0aHVaTkFpeElZOGkweWE4ak5DS21Xb3lYbFVTVThkQXRWVlAvd0Fuak5uTVNyZ2xka0c0eHdXQVVYeGpPMmdONzlOTm53NFNZVXYzV1E1RHc1dXpzbTVTMnpHdlBvQW5YZzk5WjBNekdVd0lGS1ZmOG5oMlpIMFZ2U0JvSE9hT2l2VThVNkp1OVpEWHg4V1RHdW1LZ0ZQakZ1bjFQand5alR4c0JmUUxhdW94NEZxem1CVG9CMmplb095TkVieTE1NWlPcFptNTB5V3grcEhaOEFTNnlBbW9HcWZ0RHJXelJ5aDJLeHNweTB1QnE5QVBRWS9haWVSWDcvbDJSL3ZUYzdPOE9xZTZ1eFJqTEM2RmRvZ3VuZFNNelcyL0hMRHRpT09KOXR4eW1LcDc2U2pOT2hlZDBTeGhMK0wrU1R0ajg0WnJBUC9KSVorT2dqajNrNlRSM3UyUW1jWlpjTjNaY1dEUkhrMHpJMnM4NlBOeWRDWW9NRG5TaGQyMXRiWUo3VDlxTnF1a0QxaWcwWmhIQUkyTDMvT2dyR2xlcFN4dDlNRVQ4elFxeDVCNFljcVNrUzRpUlV6SFhMOS9jS0pNRUhHVTBKTkR5TkI5M25lcnFIMlZYeU9JTmFlcFAwTSs1MFVrZWJoZlF2RWhOZUNBSUJSdjQyRFNYODhTSW5GLytVaTJFaXE0ekZuc2s3YzdxakhLNTN3QTlFYi9PaFJ5ZXNNV2h2aW9Zcnh2K2wvR0RsTzh3U0wzaWMwckI4ekl6eENoc2kxMjFEc1lXVU9uWnQwcWV5djd6cmIzenFRVjFxQ2JZMklRV1JkL3duQTBVajl3eldoR0dlT2l2Q0MzYldHYUdySnFNeW1rM3pjTHpTZHZmN05FbWJJYXEwN0poZkowQ2lYRGdBRWFkbW91R015elRkYU85NnVieklCaGpSVjNlazBYUk03eUpHSXVxcmJKSmVFQ1gzYkQ5UEpTa3Y5VE9hd3lUeUpaZFV4ZjNLMkdVdGd4OGh3TjY2NU9ETkEvZEYrLzVnU0VNZVFockxqS0dtNkxlTlJKNGhPOWNOOTJpckp6QkZEYmlaYi9QUG1qUHFzUW5pTENrY3BOQ3UyQlJpQmE3QjB6Y1NjbStJamttS2IyajhPeVNkSVM2ZTV0WC9Kb292RDdVNjFOdnFpR0Jxc2xzd0hpc04zTFpRVWRzK1BCSCtRbTR6TGRxY3ovZ0pLZDRXdWxrZmY4YU4zUU9idFN2dmVHY1pMZ3BPL0hhRndyUGxwMHFlOTgwVWtHMHl5QlVpNnIzUEJ1UmE3TjRKVEFCMkxOamgyMFJyN1NEM08xYWZpckp2UkR4ZlJ2SkRTelAydCt0cit6UTFvNjIyNTNYciswMm41ODJqMTZmcWtjNmM5N1dPdEw3dk9NVThDcWpOTHlWMGU0dUhjcFhHMUFWK1U0ZFhHWkNpb25mRDhZaFJ4NU5sQ1BMN3F2NXlEU2dCRVJnb1p1OTV4NHRuODVEWDJtbXlsQkhacmRuaEtJTStRVXFFbVNrakdWVFlrM3psa2xETml4U25kUTJlSTczOG02alJnOVJDeGNMakVHaVQ5Q1pObDdHM1RJNzROYVowVEdaQ0t1RWhmU3c2NUR3VjRVZndWeWlxTW0ybTJ6ZDhmS3d6bXBuYkhDYklzdzBmMEhWNjVVNk5JTmRrRTdUcGJjZUFkNmo4OWw4VzFEQWtYeWNYRU01N2IybWdXVHZpNmRvOTNGbjM2ZlRoemp5SEppcGVwQ1FjSGprcHJlOTc5Z3lZbThWSXpwakUxaU5aNjQ4bG5raC8vZEdwSEFmZndnay90T1BWbTdlN2U2TmJCWWNuZDkzRFJEUkY3RkIwbG9sKzBpMXFwejhzRDY3dk9wMjVLY3NhYlZCNkNZeXBZMElsNDBqWG92K3ZIRzVjWVhnaWMvWGdLVlphK0NZNUFYQnBIZ0FUOHMvRVV4ZW9jQTZCSStHb2hEQld2Y2w0Wk1KR0ljQ3lIekxSWXR4dzFPTDNWRUVmdFJ0MTlJcjFRQ3lVQ1VpOUhBTU1URjc4WGxHOG9wQXhtdENTaTY0ekpnenl4YVYrakdLNG0yTUJQNUFuSTVqb0JxbDdpdlJGVG5KcXpFOUErZW1ROEhVT1JaY1oyQWtnemlSaFFCdzh6SUZlWm5mWXJadTN1SDI5aEsxbCs0MnlnTklmM2hsSEs3cVBwVHdmVDRjVnNyU2xRZ2ttd0VYTlJFU25uL25mRGwvL3FFdlFJSGVoNVdFRm43eFZGNlIxc1lKQjdGbnZFdE4rQnlmZGtnUFNmNVJ1NUNVT3FrbENzK0xTQlBTTmxOY3J1Y1YyRm0zbXRMQ3ZtVEEzSXU1a0Z2TFpoRUN0bVNQRHpSUG5BSEN6UHVIbDZnSGlzMVNYTUlBMFR3RytTU1luc1NJck4zaTIvZnplQnVtYjhLSTl4NzQxaldKU3RJUHIzaEl6dEFJeDFSaXU4QWprWDNIc0VrY2dVVTBqMko5dkNkem5teTl2M1p5VFBIeEdaQmluNGxrRlNXOGRiMXZUem0velNGdEpqcGJXam1tcFNxeFozL3ZmV1J6ZFpBSHJHczhCR053WTcwZVJWQ0ttMmFKd3ZaNXNnTzZpOTlaY1JReTJNVDBKZGVNVzdKMjdad2dVZTZWQVZGeXpTaWdxZkRZS2dDZWVWV0N3dHhNVTRWM2g5Vy8zNXVrWkwzMW45LzNiN0RvclpoTkNrL1UxRlZBeFNvWTJCbDBrN3ZXTkd6aWhmcWM3by9rek81UVEyNWtUNFZteW5nNGJaWmVCb3didXl4NEdkSEtXVDM5SzlGRUI1UG15N2R6ZnJ3RUFLTUMrOGR2c3BrMk1OTzR0ZmtOZTVkU1RFM0ZZcWx0WURnd3VTR1VYNXdJSG8rczF4ZStNb1o5UGVkK2VWc0s0VTF5b3lhSkc3S1MvZ0NINEVVYjhTcWN1a0I2UzEwSmJIZ0FNZ05qdlU1WW83OXRJa0FCd1N0UTFKSnZsMmgwc3VqaXhFamZvNDdrVVdEK0RNcUJqNjByWDhhczZjdms4UnhSRkxmTzJCZHFSNmpoMGllaEthbHZCNXJFSExBUjNacURqeGxMNTFuRExhYjlYQXRTYVZqZ2RTeTNBckpycTlPSnJUUE9DaTUzUjBvMDZPd2hucWk0RSt1ekNtTDR3S2tiSTZPUTFHZncyRTlVSEtJbnZWenhtZ0I2TFdvUVBZbVN4cW9hVjlxc01EMVFxUll6UldBeVlPT1R5N3czZ2tNU1VNQkNwMDVnMGJUNW41ZkNvbWJWNjc5SENLSFZvbGMxSjlIWFRieDA4L25SRGJUT1Z2Q2trMU5iT2JQbDdUMDBjMEVON2xZUllxRGcvMmNPSms0d2t0S2xxeU5HSkNqVGw1QW9GU1ZJNHFFdlV4YUdIcExZb0VwUEhkeFVyNGp0T1Ird1ZDS0FYaHNHRXJ0aTBaWE9XT1FrL1ZSdk12VFd1THFhOFJRZmpmR3pkUEcwZEJ5QnNCaTdGQW9ubGJyQ2xQeG9RZGV5eUlWN1A3d0VHZStxSDR0d2UzemUxNUhWUzFHYWFzbm9Eb3JvdzY4VmtrTjV4WTJEMkZhODc3NVpCM05mRmVsalArZTZsWTBCZE5uWHFLejQyL0pqQnl6WUFTdzMrWTJDZ3NHdUhraFR4SUxMd0tCLzYrV1lTdGgvTzVpNk41TU50eDhpK1BCd3FaZys5c3IreDZzWitGdlRHbjcwRGtmelFQdXdsdUozcDVwckhrYnhucHRoR2k0SVpPWit3VlFZbysvRHJYeDcrTEQyb3lpUGRtc05uZ3Vicld0WjVzWVJqQmt2QUhXeWVuQ3NzTWxMblJqMW5PTjdURHg0ZnJnQktocGI2OUxQb2FLRzVFa1R2WExDWHMzN3NaUWhpa2YvQlJpd21RSDdrNWcwaVpCOEhqdzlUd0tBbGlsMERZNnB0N1REUWJLUGNvYWtzVXl6R21CN1FpcHBEMEp0UjZTRWMvdDRhV3MzQ2J1K0todzd6bGhWNDVSS1IwWnZIeGpsYnB6WXJBeWl6WTJWNE45VkJyWSsxNDRZMFM1eGNoejlsVzRZcUxFY280ckZUNzd5d3lLc3NNQmRHUHJodWgySGNDQkp2RHpNVEkzbDFZcWFmbEFqSmFjdkRheVUzRlBoTVJnMHU2OTBsWEFuQ0tEc0pYcUplV2c5TjR1elp2Rlk0dlN2SlVCYzJuTU1oblB3L2d5dnZ2VGV2TEQ5eGJCeEtvY2pUemZLZEdpT3JHamliSXlrd2FNWjhLSCtzVkNxSXNwQ1o4WmlhcDF0T1N3c20wbjJYTGpiS0NGRG1kbDk3WWdsbEhwVGxhQzMwTHVmcHpLTFVaUklKRzFUN3pqL3pXT2RoMXhxQXJUNWMxS1FJUngxbWZ0b0QvbmZEaW5lMmVpTzNZZGVUTmtJMXZUWmZrNi9CNi9KcElmN0JEZy9rSDA3RVdvcHJSbEZNRkZHTEZFUWRSeEwxbHdqZzBrWTJlMTRjUjZ6RWFsYTRnZDFsZG1aZkk2K2Z1RFpmQjE4anNWN0MvWjNSY2V1c1ByVTk4OWpjUFZzVWVWY3VqQ2xIdVZOWGZIK3FKMDRHY2MzQTdtV0hHeERrTkJDV0lsN0p5dGFGRmsrcHpPV3BuUEwxbmxTS2kyR2VrVzZlcUlhZUU2N0lnL284UnJTTUdIcWZyYWltcUYzRjBINGpZaUhjTlJyeHFqMUZGS0V2VjhzMHdJdXIyV3o1aGw0NjVYQ1J4YnhDY1AxR1N6amY1YnEzcTEwUmFQTXd0YlB0WS81SjNSTHh6YzMxNHBMclYxeGJrQ1F0YUh5S1crOVR0bWt5d3lJc3hBMXdTM2dDbW5IRjNNMXcxb1BBQ2Vvam52enpGVlVoY1B3NnVsTCtFRGI2WFZwbTNybVdmczlHMk1vQTYvQlNwaHU2THJGN3JmZjZNdmtFc0NldUtaZmt1eUdOc25LY21kYlhQdGNlT21PM1p5SjVkWndGemduMWlwMmdPcVNCM1Eyb2E2cGVxMEhjS3FmYlZQZEdTdEVURXNZUjZNK2hqZklHNDJZdHVhZCs1c3JYd1g3SGk5Tld2RVBFR05aeEdLcHlQZDFBaGh1OWVqRk9IM2xrL3poUVZ5VzQxMGgvUTEvYVpya1RoSjF6bGVLQTlNQTIySW12N2VKR0VUYzNSOU12Y1lGNk9tRFhoOWMwK2lXOWhrdTZ5RWg1L25jNU9NVWNGRGxGTitXckRva0VXUzJYQjFTK0pKLzFyc0Z3eitVSnRLZWZCbXVqN3M1NGZERHAxWE5zaGFiQm9sV25qYTZNZmI3a3NkdnhEa0NpeWJXUUNzb0g5U2JOd25wTHlIOEFwMW1PbENaMjdxVFVFZkhYakF2SkJDTVJYVytBVDg5S3RqV21VampsdVlha0w3OWYwWXBXZUpVcjN4VFkrK2E3Z2E2L2xsQnViMXBvNFU5WGx6K2NPS3lkODI1aUhlMHJwblV5dHJVYk9Zd2dwOStpWUh3bC90Z2tYV0k1UnJXWGV0SWx2R1RCWjBIMmVRZlhkSjVLNUl6R1NsU0oyQm52Q3IwUHYweENkeXFqdUtkVE9qaUR4USt1OW9TamR3OUdyRnNiYzJ0Zm5uTTlzMEp6S2hJNTIzZlhLYW5tdGZyWGFJSTJBVStUQVkvODl0T0FjUWRGRG5Kc3FOL2JmNkwrUUxvcktVQ1YvYXg5TWdPZ1dKYVFhc3R3YmZIS3ZtV1B6WUxYMmdxNHlpdmI1ZmMybHJoTWsxVXoralhhV1VmYk50R2svTExxS0ZQRmVDcGhpekpCa0VwZlRXQzFLVGZ6Y0FEd2pEU1ViK2EzOHNHOHd4Y2QrSlZQRjJEZ3dmWnk5MVdxSy9NWlBOZGtBelFCOFJVZGkwSDdGa1pRYWZOMGhxNURmOUFwRFVtY25HTS9VWWdmUTBzeXlKMDFNUjhDamY5aC9PVGh1Y01ISTlzclBaMGE1VGFuSG5jMEwvNnBVRnlBMk5IVWhiVE0yckdXUklXTFBPdllYZ3htSTVKQlRjM2UrT3Y3aTVsVVZNQ256Y0wvcjdHZUg3WVBBQjZVN2xVUDVuajRMZTlHOXNDbG9Ja1F3cE9BaS8xTmJKOWxDd01PK1c5bGhCb0d0cThYQVFldCs3SGNHNE1NYW8rTjZSSHJhMHNnV0E1T3lzVHJWbkpCRmFSaG1Ddkhka2JRQXZrQVphbG1JelVxM2lZWDJLZXVWc2E1aUtNR050aXR3aTZhRTdxWFFQbFllRXNQdEZXdHE4NmQ1ckV3ditXdlNGeEFUU1UrekNWZ2lQWUF4ZzhhY3lZYnVoNmFNaWU0azBlaHZ1aXJFc0wxQVhrQ1pKM2JsSi9nNWZmOEIyME01SlByc3lYcVRGZVFZbzNyOHZpZW56RDZ6S2ZoVWlsMUl2UFUxbTQ1WmJVZTdtWkZPWGFwSHpiVWZVWlU1MVRrKzFkcHdPZTlSQmNBTkVwUE12azBxNlhCZXJRTmJGMG9FWlR4UmJEYkp4RFdlNTd1Q1MwL1FrRmZ2eGp6bHZVR0FkbmRaVU80V0Iza3Q3dTl1clZ0T09kbmVPaVdLbFV6VUxLZVhMSFhhWEpkNmJyVDVUUXArdUZGbVhzb1d4Ry9jcm5vclFjOU1qK2VqVHUvRXA5dXBEU1VVMFhDcXRmQUttN0xwTm1iWStoMW1TODZmcHY5REdMSHJCSnNoTU1vajdtOHh4NXFaSmIzRHBDdkRPaTlEMGU0dC9xRFlqOTJpMFlOaDB1WWtPLzQxK3NDT2dJSmJqdXVtRmJkQjA0RUtXVzNxOEdCbVdEMXUveHdmWWZyTzZ3ZVZnNnorQ3lBMmhUcmlQQlNXVHBjbzZoZVJ5akEweXVMbldoK0JaWXpKenpRc3IzRlo0Uk9Oby85b0lYaTlnZDBwYzI5Y1ZYYXZKeDYxN1hjNmFnSGNkK0puY3l2djZIR2tsZXdocmhsRTAvNEJ2LzlWU0RXQi8wS3JNRkwrNGpBU2Q4WFJLems1WDE5dmlaTCtwWlAvbnNWOWJ2aVRldSsrZkZiTEl3TlY2dHNhVHVlRHJSeDFnMGcxcWVkV3pGcHd2M3hOanQrcjBCVHRJRHhiNlBrZ3FFd2dyVzZxc0RHR3p4MjhiYTQrY0p6NEEzaUc3MWUvSUxCTkdzc3pVeDFJVWJWQldUSnd6aUpVWkxJdnJHUFpTSVh3Skt2QkJ4ZWhWSnRDeVI2anlveTZjNktUR2NGZUwxNGdJdnVYYjl1eTNVRFlxNXpKQW5hekNoOURkTTBHMlFuNTlKZXlXaEpSejJ1cGpnRnZPZFZ2YlNsOW9Mcm5CUUQ1bWI4UlRIS29NNnBJd29TWUVxbkhrUURwKzI2VHZwVFhUUHFjK3ZmWVUyQnY2akdkRTV3WVdabndySll6NWUweDhtaHpFRFZTN0FqOVpQL1hNZ1doY0xzbnp1am8xcUxRVUZaYU9MUTZ4QTNPSkVUWmFaRFpQY016eXg4b3VnMFVaRlJNT0QweStYVnBMbi9MbysvUzZXZC9BNjV6RWR3MnJyeGhRQXk3QXAxTHJheWFLa0xkcXJPdnpMNjJ5MUxxN1UyTnJidFlmN2pEbHNZeFR2OU9nWlFSVGtrNmxXVXc0Qml6a3d2dWVYbis0Ukt6TllySlVsNGxZL0VQdjlGVm9qNzRQMStvZHd2a0xGYUdXaCtMMTk4c0VpbVdRMFhxWUJrSXZaT1ZnZVpjN1p1QkhaNWlNek5YNjVxbnhZekozOVF1VWVZcHdMNlB6aVhmdUMxVDBoRTlkbEsxNlhHVG1IdlFYbjFpTVRBUFkxVy9jclRnbjIwTklHaldQMmxzR0hYK1VwOVJLciswL0Y4ZXZ6M1RZMXgyU0hQZXp1TkF2T3lBT2JYNXgxcjlKdnpQYUpFMXd5ejNUUG1kcmRRRWxGdW9YV1oydWFXa3V4NWtjY1FmOERsU05TdzFsYzJyUVdhRW9qakdIdTM0dlc4bzdtR2UwU1k4ZHVMU3pmZk55ZzI1dTYvOVA0SCcsICdiYXNlNjQnKSkudG9TdHJpbmcoKTtcblxuICByZXR1cm4gaG9vaztcbn07XG4iLCAiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLmV4dHJhY3RBcmNoaXZlVG8gPSBleHBvcnRzLmNvbnZlcnRUb1ppcCA9IGV4cG9ydHMubWFrZUFyY2hpdmVGcm9tRGlyZWN0b3J5ID0gdm9pZCAwO1xuY29uc3QgdHNsaWJfMSA9IHJlcXVpcmUoXCJ0c2xpYlwiKTtcbmNvbnN0IGZzbGliXzEgPSByZXF1aXJlKFwiQHlhcm5wa2cvZnNsaWJcIik7XG5jb25zdCBsaWJ6aXBfMSA9IHJlcXVpcmUoXCJAeWFybnBrZy9saWJ6aXBcIik7XG5jb25zdCBzdHJlYW1fMSA9IHJlcXVpcmUoXCJzdHJlYW1cIik7XG5jb25zdCB0YXJfMSA9IHRzbGliXzEuX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJ0YXJcIikpO1xuY29uc3QgV29ya2VyUG9vbF8xID0gcmVxdWlyZShcIi4vV29ya2VyUG9vbFwiKTtcbmNvbnN0IG1pc2NVdGlscyA9IHRzbGliXzEuX19pbXBvcnRTdGFyKHJlcXVpcmUoXCIuL21pc2NVdGlsc1wiKSk7XG5jb25zdCB3b3JrZXJfemlwXzEgPSByZXF1aXJlKFwiLi93b3JrZXItemlwXCIpO1xuYXN5bmMgZnVuY3Rpb24gbWFrZUFyY2hpdmVGcm9tRGlyZWN0b3J5KHNvdXJjZSwgeyBiYXNlRnMgPSBuZXcgZnNsaWJfMS5Ob2RlRlMoKSwgcHJlZml4UGF0aCA9IGZzbGliXzEuUG9ydGFibGVQYXRoLnJvb3QsIGNvbXByZXNzaW9uTGV2ZWwsIGluTWVtb3J5ID0gZmFsc2UgfSA9IHt9KSB7XG4gICAgbGV0IHppcEZzO1xuICAgIGlmIChpbk1lbW9yeSkge1xuICAgICAgICB6aXBGcyA9IG5ldyBsaWJ6aXBfMS5aaXBGUyhudWxsLCB7IGxldmVsOiBjb21wcmVzc2lvbkxldmVsIH0pO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgY29uc3QgdG1wRm9sZGVyID0gYXdhaXQgZnNsaWJfMS54ZnMubWt0ZW1wUHJvbWlzZSgpO1xuICAgICAgICBjb25zdCB0bXBGaWxlID0gZnNsaWJfMS5wcGF0aC5qb2luKHRtcEZvbGRlciwgYGFyY2hpdmUuemlwYCk7XG4gICAgICAgIHppcEZzID0gbmV3IGxpYnppcF8xLlppcEZTKHRtcEZpbGUsIHsgY3JlYXRlOiB0cnVlLCBsZXZlbDogY29tcHJlc3Npb25MZXZlbCB9KTtcbiAgICB9XG4gICAgY29uc3QgdGFyZ2V0ID0gZnNsaWJfMS5wcGF0aC5yZXNvbHZlKGZzbGliXzEuUG9ydGFibGVQYXRoLnJvb3QsIHByZWZpeFBhdGgpO1xuICAgIGF3YWl0IHppcEZzLmNvcHlQcm9taXNlKHRhcmdldCwgc291cmNlLCB7IGJhc2VGcywgc3RhYmxlVGltZTogdHJ1ZSwgc3RhYmxlU29ydDogdHJ1ZSB9KTtcbiAgICByZXR1cm4gemlwRnM7XG59XG5leHBvcnRzLm1ha2VBcmNoaXZlRnJvbURpcmVjdG9yeSA9IG1ha2VBcmNoaXZlRnJvbURpcmVjdG9yeTtcbmxldCB3b3JrZXJQb29sO1xuYXN5bmMgZnVuY3Rpb24gY29udmVydFRvWmlwKHRneiwgb3B0cykge1xuICAgIGNvbnN0IHRtcEZvbGRlciA9IGF3YWl0IGZzbGliXzEueGZzLm1rdGVtcFByb21pc2UoKTtcbiAgICBjb25zdCB0bXBGaWxlID0gZnNsaWJfMS5wcGF0aC5qb2luKHRtcEZvbGRlciwgYGFyY2hpdmUuemlwYCk7XG4gICAgd29ya2VyUG9vbCB8fCAod29ya2VyUG9vbCA9IG5ldyBXb3JrZXJQb29sXzEuV29ya2VyUG9vbCgoMCwgd29ya2VyX3ppcF8xLmdldENvbnRlbnQpKCkpKTtcbiAgICBhd2FpdCB3b3JrZXJQb29sLnJ1bih7IHRtcEZpbGUsIHRneiwgb3B0cyB9KTtcbiAgICByZXR1cm4gbmV3IGxpYnppcF8xLlppcEZTKHRtcEZpbGUsIHsgbGV2ZWw6IG9wdHMuY29tcHJlc3Npb25MZXZlbCB9KTtcbn1cbmV4cG9ydHMuY29udmVydFRvWmlwID0gY29udmVydFRvWmlwO1xuYXN5bmMgZnVuY3Rpb24qIHBhcnNlVGFyKHRneikge1xuICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgLSBUeXBlcyBhcmUgd3JvbmcgYWJvdXQgd2hhdCB0aGlzIGZ1bmN0aW9uIHJldHVybnNcbiAgICBjb25zdCBwYXJzZXIgPSBuZXcgdGFyXzEuZGVmYXVsdC5QYXJzZSgpO1xuICAgIGNvbnN0IHBhc3N0aHJvdWdoID0gbmV3IHN0cmVhbV8xLlBhc3NUaHJvdWdoKHsgb2JqZWN0TW9kZTogdHJ1ZSwgYXV0b0Rlc3Ryb3k6IHRydWUsIGVtaXRDbG9zZTogdHJ1ZSB9KTtcbiAgICBwYXJzZXIub24oYGVudHJ5YCwgKGVudHJ5KSA9PiB7XG4gICAgICAgIHBhc3N0aHJvdWdoLndyaXRlKGVudHJ5KTtcbiAgICB9KTtcbiAgICBwYXJzZXIub24oYGVycm9yYCwgZXJyb3IgPT4ge1xuICAgICAgICBwYXNzdGhyb3VnaC5kZXN0cm95KGVycm9yKTtcbiAgICB9KTtcbiAgICBwYXJzZXIub24oYGNsb3NlYCwgKCkgPT4ge1xuICAgICAgICBpZiAoIXBhc3N0aHJvdWdoLmRlc3Ryb3llZCkge1xuICAgICAgICAgICAgcGFzc3Rocm91Z2guZW5kKCk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBwYXJzZXIuZW5kKHRneik7XG4gICAgZm9yIGF3YWl0IChjb25zdCBlbnRyeSBvZiBwYXNzdGhyb3VnaCkge1xuICAgICAgICBjb25zdCBpdCA9IGVudHJ5O1xuICAgICAgICB5aWVsZCBpdDtcbiAgICAgICAgaXQucmVzdW1lKCk7XG4gICAgfVxufVxuYXN5bmMgZnVuY3Rpb24gZXh0cmFjdEFyY2hpdmVUbyh0Z3osIHRhcmdldEZzLCB7IHN0cmlwQ29tcG9uZW50cyA9IDAsIHByZWZpeFBhdGggPSBmc2xpYl8xLlBvcnRhYmxlUGF0aC5kb3QgfSA9IHt9KSB7XG4gICAgdmFyIF9hO1xuICAgIGZ1bmN0aW9uIGlnbm9yZShlbnRyeSkge1xuICAgICAgICAvLyBEaXNhbGxvdyBhYnNvbHV0ZSBwYXRoczsgbWlnaHQgYmUgbWFsaWNpb3VzIChleDogL2V0Yy9wYXNzd2QpXG4gICAgICAgIGlmIChlbnRyeS5wYXRoWzBdID09PSBgL2ApXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgY29uc3QgcGFydHMgPSBlbnRyeS5wYXRoLnNwbGl0KC9cXC8vZyk7XG4gICAgICAgIC8vIFdlIGFsc28gaWdub3JlIHBhdGhzIHRoYXQgY291bGQgbGVhZCB0byBlc2NhcGluZyBvdXRzaWRlIHRoZSBhcmNoaXZlXG4gICAgICAgIGlmIChwYXJ0cy5zb21lKChwYXJ0KSA9PiBwYXJ0ID09PSBgLi5gKSlcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICBpZiAocGFydHMubGVuZ3RoIDw9IHN0cmlwQ29tcG9uZW50cylcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGZvciBhd2FpdCAoY29uc3QgZW50cnkgb2YgcGFyc2VUYXIodGd6KSkge1xuICAgICAgICBpZiAoaWdub3JlKGVudHJ5KSlcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICBjb25zdCBwYXJ0cyA9IGZzbGliXzEucHBhdGgubm9ybWFsaXplKGZzbGliXzEubnBhdGgudG9Qb3J0YWJsZVBhdGgoZW50cnkucGF0aCkpLnJlcGxhY2UoL1xcLyQvLCBgYCkuc3BsaXQoL1xcLy9nKTtcbiAgICAgICAgaWYgKHBhcnRzLmxlbmd0aCA8PSBzdHJpcENvbXBvbmVudHMpXG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgY29uc3Qgc2xpY2VQYXRoID0gcGFydHMuc2xpY2Uoc3RyaXBDb21wb25lbnRzKS5qb2luKGAvYCk7XG4gICAgICAgIGNvbnN0IG1hcHBlZFBhdGggPSBmc2xpYl8xLnBwYXRoLmpvaW4ocHJlZml4UGF0aCwgc2xpY2VQYXRoKTtcbiAgICAgICAgbGV0IG1vZGUgPSAwbzY0NDtcbiAgICAgICAgLy8gSWYgYSBzaW5nbGUgZXhlY3V0YWJsZSBiaXQgaXMgc2V0LCBub3JtYWxpemUgc28gdGhhdCBhbGwgYXJlXG4gICAgICAgIGlmIChlbnRyeS50eXBlID09PSBgRGlyZWN0b3J5YCB8fCAoKChfYSA9IGVudHJ5Lm1vZGUpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IDApICYgMG8xMTEpICE9PSAwKVxuICAgICAgICAgICAgbW9kZSB8PSAwbzExMTtcbiAgICAgICAgc3dpdGNoIChlbnRyeS50eXBlKSB7XG4gICAgICAgICAgICBjYXNlIGBEaXJlY3RvcnlgOlxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0RnMubWtkaXJwU3luYyhmc2xpYl8xLnBwYXRoLmRpcm5hbWUobWFwcGVkUGF0aCksIHsgY2htb2Q6IDBvNzU1LCB1dGltZXM6IFtmc2xpYl8xLmNvbnN0YW50cy5TQUZFX1RJTUUsIGZzbGliXzEuY29uc3RhbnRzLlNBRkVfVElNRV0gfSk7XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldEZzLm1rZGlyU3luYyhtYXBwZWRQYXRoLCB7IG1vZGUgfSk7XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldEZzLnV0aW1lc1N5bmMobWFwcGVkUGF0aCwgZnNsaWJfMS5jb25zdGFudHMuU0FGRV9USU1FLCBmc2xpYl8xLmNvbnN0YW50cy5TQUZFX1RJTUUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgYE9sZEZpbGVgOlxuICAgICAgICAgICAgY2FzZSBgRmlsZWA6XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXRGcy5ta2RpcnBTeW5jKGZzbGliXzEucHBhdGguZGlybmFtZShtYXBwZWRQYXRoKSwgeyBjaG1vZDogMG83NTUsIHV0aW1lczogW2ZzbGliXzEuY29uc3RhbnRzLlNBRkVfVElNRSwgZnNsaWJfMS5jb25zdGFudHMuU0FGRV9USU1FXSB9KTtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0RnMud3JpdGVGaWxlU3luYyhtYXBwZWRQYXRoLCBhd2FpdCBtaXNjVXRpbHMuYnVmZmVyU3RyZWFtKGVudHJ5KSwgeyBtb2RlIH0pO1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXRGcy51dGltZXNTeW5jKG1hcHBlZFBhdGgsIGZzbGliXzEuY29uc3RhbnRzLlNBRkVfVElNRSwgZnNsaWJfMS5jb25zdGFudHMuU0FGRV9USU1FKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIGBTeW1ib2xpY0xpbmtgOlxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0RnMubWtkaXJwU3luYyhmc2xpYl8xLnBwYXRoLmRpcm5hbWUobWFwcGVkUGF0aCksIHsgY2htb2Q6IDBvNzU1LCB1dGltZXM6IFtmc2xpYl8xLmNvbnN0YW50cy5TQUZFX1RJTUUsIGZzbGliXzEuY29uc3RhbnRzLlNBRkVfVElNRV0gfSk7XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldEZzLnN5bWxpbmtTeW5jKGVudHJ5LmxpbmtwYXRoLCBtYXBwZWRQYXRoKTtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0RnMubHV0aW1lc1N5bmMobWFwcGVkUGF0aCwgZnNsaWJfMS5jb25zdGFudHMuU0FGRV9USU1FLCBmc2xpYl8xLmNvbnN0YW50cy5TQUZFX1RJTUUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGFyZ2V0RnM7XG59XG5leHBvcnRzLmV4dHJhY3RBcmNoaXZlVG8gPSBleHRyYWN0QXJjaGl2ZVRvO1xuIiwgIi8vICAgICB0cmVlaWZ5LmpzXG4vLyAgICAgTHVrZSBQbGFzdGVyIDxub3RhdGVzdHVzZXJAZ21haWwuY29tPlxuLy8gICAgIGh0dHBzOi8vZ2l0aHViLmNvbS9ub3RhdGVzdHVzZXIvdHJlZWlmeS5qc1xuXG4vLyBkbyB0aGUgdW5pdmVyc2FsIG1vZHVsZSBkZWZpbml0aW9uIGRhbmNlXG4oZnVuY3Rpb24gKHJvb3QsIGZhY3RvcnkpIHtcblxuICBpZiAodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKSB7XG4gICAgbW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KCk7XG4gIH0gZWxzZSBpZiAodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKSB7XG4gICAgZGVmaW5lKGZhY3RvcnkpO1xuICB9IGVsc2Uge1xuICAgIHJvb3QudHJlZWlmeSA9IGZhY3RvcnkoKTtcbiAgfVxuXG59KHRoaXMsIGZ1bmN0aW9uKCkge1xuXG4gIGZ1bmN0aW9uIG1ha2VQcmVmaXgoa2V5LCBsYXN0KSB7XG4gICAgdmFyIHN0ciA9IChsYXN0ID8gJ1x1MjUxNCcgOiAnXHUyNTFDJyk7XG4gICAgaWYgKGtleSkge1xuICAgICAgc3RyICs9ICdcdTI1MDAgJztcbiAgICB9IGVsc2Uge1xuICAgICAgc3RyICs9ICdcdTI1MDBcdTI1MDBcdTI1MTAnO1xuICAgIH1cbiAgICByZXR1cm4gc3RyO1xuICB9XG5cbiAgZnVuY3Rpb24gZmlsdGVyS2V5cyhvYmosIGhpZGVGdW5jdGlvbnMpIHtcbiAgICB2YXIga2V5cyA9IFtdO1xuICAgIGZvciAodmFyIGJyYW5jaCBpbiBvYmopIHtcbiAgICAgIC8vIGFsd2F5cyBleGNsdWRlIGFueXRoaW5nIGluIHRoZSBvYmplY3QncyBwcm90b3R5cGVcbiAgICAgIGlmICghb2JqLmhhc093blByb3BlcnR5KGJyYW5jaCkpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICAvLyAuLi4gYW5kIGhpZGUgYW55IGtleXMgbWFwcGVkIHRvIGZ1bmN0aW9ucyBpZiB3ZSd2ZSBiZWVuIHRvbGQgdG9cbiAgICAgIGlmIChoaWRlRnVuY3Rpb25zICYmICgodHlwZW9mIG9ialticmFuY2hdKT09PVwiZnVuY3Rpb25cIikpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBrZXlzLnB1c2goYnJhbmNoKTtcbiAgICB9XG4gICAgcmV0dXJuIGtleXM7XG4gIH1cblxuICBmdW5jdGlvbiBncm93QnJhbmNoKGtleSwgcm9vdCwgbGFzdCwgbGFzdFN0YXRlcywgc2hvd1ZhbHVlcywgaGlkZUZ1bmN0aW9ucywgY2FsbGJhY2spIHtcbiAgICB2YXIgbGluZSA9ICcnLCBpbmRleCA9IDAsIGxhc3RLZXksIGNpcmN1bGFyLCBsYXN0U3RhdGVzQ29weSA9IGxhc3RTdGF0ZXMuc2xpY2UoMCk7XG5cbiAgICBpZiAobGFzdFN0YXRlc0NvcHkucHVzaChbIHJvb3QsIGxhc3QgXSkgJiYgbGFzdFN0YXRlcy5sZW5ndGggPiAwKSB7XG4gICAgICAvLyBiYXNlZCBvbiB0aGUgXCJ3YXMgbGFzdCBlbGVtZW50XCIgc3RhdGVzIG9mIHdoYXRldmVyIHdlJ3JlIG5lc3RlZCB3aXRoaW4sXG4gICAgICAvLyB3ZSBuZWVkIHRvIGFwcGVuZCBlaXRoZXIgYmxhbmtuZXNzIG9yIGEgYnJhbmNoIHRvIG91ciBsaW5lXG4gICAgICBsYXN0U3RhdGVzLmZvckVhY2goZnVuY3Rpb24obGFzdFN0YXRlLCBpZHgpIHtcbiAgICAgICAgaWYgKGlkeCA+IDApIHtcbiAgICAgICAgICBsaW5lICs9IChsYXN0U3RhdGVbMV0gPyAnICcgOiAnXHUyNTAyJykgKyAnICAnO1xuICAgICAgICB9XG4gICAgICAgIGlmICggISBjaXJjdWxhciAmJiBsYXN0U3RhdGVbMF0gPT09IHJvb3QpIHtcbiAgICAgICAgICBjaXJjdWxhciA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICAvLyB0aGUgcHJlZml4IHZhcmllcyBiYXNlZCBvbiB3aGV0aGVyIHRoZSBrZXkgY29udGFpbnMgc29tZXRoaW5nIHRvIHNob3cgYW5kXG4gICAgICAvLyB3aGV0aGVyIHdlJ3JlIGRlYWxpbmcgd2l0aCB0aGUgbGFzdCBlbGVtZW50IGluIHRoaXMgY29sbGVjdGlvblxuICAgICAgbGluZSArPSBtYWtlUHJlZml4KGtleSwgbGFzdCkgKyBrZXk7XG5cbiAgICAgIC8vIGFwcGVuZCB2YWx1ZXMgYW5kIHRoZSBjaXJjdWxhciByZWZlcmVuY2UgaW5kaWNhdG9yXG4gICAgICBzaG93VmFsdWVzICYmICh0eXBlb2Ygcm9vdCAhPT0gJ29iamVjdCcgfHwgcm9vdCBpbnN0YW5jZW9mIERhdGUpICYmIChsaW5lICs9ICc6ICcgKyByb290KTtcbiAgICAgIGNpcmN1bGFyICYmIChsaW5lICs9ICcgKGNpcmN1bGFyIHJlZi4pJyk7XG5cbiAgICAgIGNhbGxiYWNrKGxpbmUpO1xuICAgIH1cblxuICAgIC8vIGNhbiB3ZSBkZXNjZW5kIGludG8gdGhlIG5leHQgaXRlbT9cbiAgICBpZiAoICEgY2lyY3VsYXIgJiYgdHlwZW9mIHJvb3QgPT09ICdvYmplY3QnKSB7XG4gICAgICB2YXIga2V5cyA9IGZpbHRlcktleXMocm9vdCwgaGlkZUZ1bmN0aW9ucyk7XG4gICAgICBrZXlzLmZvckVhY2goZnVuY3Rpb24oYnJhbmNoKXtcbiAgICAgICAgLy8gdGhlIGxhc3Qga2V5IGlzIGFsd2F5cyBwcmludGVkIHdpdGggYSBkaWZmZXJlbnQgcHJlZml4LCBzbyB3ZSdsbCBuZWVkIHRvIGtub3cgaWYgd2UgaGF2ZSBpdFxuICAgICAgICBsYXN0S2V5ID0gKytpbmRleCA9PT0ga2V5cy5sZW5ndGg7XG5cbiAgICAgICAgLy8gaG9sZCB5b3VyIGJyZWF0aCBmb3IgcmVjdXJzaXZlIGFjdGlvblxuICAgICAgICBncm93QnJhbmNoKGJyYW5jaCwgcm9vdFticmFuY2hdLCBsYXN0S2V5LCBsYXN0U3RhdGVzQ29weSwgc2hvd1ZhbHVlcywgaGlkZUZ1bmN0aW9ucywgY2FsbGJhY2spO1xuICAgICAgfSk7XG4gICAgfVxuICB9O1xuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgdmFyIFRyZWVpZnkgPSB7fTtcblxuICAvLyBUcmVlaWZ5LmFzTGluZXNcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gT3V0cHV0cyB0aGUgdHJlZSBsaW5lLWJ5LWxpbmUsIGNhbGxpbmcgdGhlIGxpbmVDYWxsYmFjayB3aGVuIGVhY2ggb25lIGlzIGF2YWlsYWJsZS5cblxuICBUcmVlaWZ5LmFzTGluZXMgPSBmdW5jdGlvbihvYmosIHNob3dWYWx1ZXMsIGhpZGVGdW5jdGlvbnMsIGxpbmVDYWxsYmFjaykge1xuICAgIC8qIGhpZGVGdW5jdGlvbnMgYW5kIGxpbmVDYWxsYmFjayBhcmUgY3VycmllZCwgd2hpY2ggbWVhbnMgd2UgZG9uJ3QgYnJlYWsgYXBwcyB1c2luZyB0aGUgb2xkZXIgZm9ybSAqL1xuICAgIHZhciBoaWRlRnVuY3Rpb25zQXJnID0gdHlwZW9mIGhpZGVGdW5jdGlvbnMgIT09ICdmdW5jdGlvbicgPyBoaWRlRnVuY3Rpb25zIDogZmFsc2U7XG4gICAgZ3Jvd0JyYW5jaCgnLicsIG9iaiwgZmFsc2UsIFtdLCBzaG93VmFsdWVzLCBoaWRlRnVuY3Rpb25zQXJnLCBsaW5lQ2FsbGJhY2sgfHwgaGlkZUZ1bmN0aW9ucyk7XG4gIH07XG5cbiAgLy8gVHJlZWlmeS5hc1RyZWVcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gT3V0cHV0cyB0aGUgZW50aXJlIHRyZWUsIHJldHVybmluZyBpdCBhcyBhIHN0cmluZyB3aXRoIGxpbmUgYnJlYWtzLlxuXG4gIFRyZWVpZnkuYXNUcmVlID0gZnVuY3Rpb24ob2JqLCBzaG93VmFsdWVzLCBoaWRlRnVuY3Rpb25zKSB7XG4gICAgdmFyIHRyZWUgPSAnJztcbiAgICBncm93QnJhbmNoKCcuJywgb2JqLCBmYWxzZSwgW10sIHNob3dWYWx1ZXMsIGhpZGVGdW5jdGlvbnMsIGZ1bmN0aW9uKGxpbmUpIHtcbiAgICAgIHRyZWUgKz0gbGluZSArICdcXG4nO1xuICAgIH0pO1xuICAgIHJldHVybiB0cmVlO1xuICB9O1xuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgcmV0dXJuIFRyZWVpZnk7XG5cbn0pKTtcbiIsICJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuZW1pdFRyZWUgPSBleHBvcnRzLmVtaXRMaXN0ID0gZXhwb3J0cy50cmVlTm9kZVRvSnNvbiA9IGV4cG9ydHMudHJlZU5vZGVUb1RyZWVpZnkgPSB2b2lkIDA7XG5jb25zdCB0c2xpYl8xID0gcmVxdWlyZShcInRzbGliXCIpO1xuY29uc3QgdHJlZWlmeV8xID0gcmVxdWlyZShcInRyZWVpZnlcIik7XG5jb25zdCBmb3JtYXRVdGlscyA9IHRzbGliXzEuX19pbXBvcnRTdGFyKHJlcXVpcmUoXCIuL2Zvcm1hdFV0aWxzXCIpKTtcbmZ1bmN0aW9uIHRyZWVOb2RlVG9UcmVlaWZ5KHByaW50VHJlZSwgeyBjb25maWd1cmF0aW9uIH0pIHtcbiAgICBjb25zdCB0YXJnZXQgPSB7fTtcbiAgICBjb25zdCBjb3B5VHJlZSA9IChwcmludE5vZGUsIHRhcmdldE5vZGUpID0+IHtcbiAgICAgICAgY29uc3QgaXRlcmF0b3IgPSBBcnJheS5pc0FycmF5KHByaW50Tm9kZSlcbiAgICAgICAgICAgID8gcHJpbnROb2RlLmVudHJpZXMoKVxuICAgICAgICAgICAgOiBPYmplY3QuZW50cmllcyhwcmludE5vZGUpO1xuICAgICAgICBmb3IgKGNvbnN0IFtrZXksIHsgbGFiZWwsIHZhbHVlLCBjaGlsZHJlbiB9XSBvZiBpdGVyYXRvcikge1xuICAgICAgICAgICAgY29uc3QgZmluYWxQYXJ0cyA9IFtdO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBsYWJlbCAhPT0gYHVuZGVmaW5lZGApXG4gICAgICAgICAgICAgICAgZmluYWxQYXJ0cy5wdXNoKGZvcm1hdFV0aWxzLmFwcGx5U3R5bGUoY29uZmlndXJhdGlvbiwgbGFiZWwsIGZvcm1hdFV0aWxzLlN0eWxlLkJPTEQpKTtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09IGB1bmRlZmluZWRgKVxuICAgICAgICAgICAgICAgIGZpbmFsUGFydHMucHVzaChmb3JtYXRVdGlscy5wcmV0dHkoY29uZmlndXJhdGlvbiwgdmFsdWVbMF0sIHZhbHVlWzFdKSk7XG4gICAgICAgICAgICBpZiAoZmluYWxQYXJ0cy5sZW5ndGggPT09IDApXG4gICAgICAgICAgICAgICAgZmluYWxQYXJ0cy5wdXNoKGZvcm1hdFV0aWxzLmFwcGx5U3R5bGUoY29uZmlndXJhdGlvbiwgYCR7a2V5fWAsIGZvcm1hdFV0aWxzLlN0eWxlLkJPTEQpKTtcbiAgICAgICAgICAgIGNvbnN0IGZpbmFsTGFiZWwgPSBmaW5hbFBhcnRzLmpvaW4oYDogYCk7XG4gICAgICAgICAgICBjb25zdCBjcmVhdGVkTm9kZSA9IHRhcmdldE5vZGVbZmluYWxMYWJlbF0gPSB7fTtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgY2hpbGRyZW4gIT09IGB1bmRlZmluZWRgKSB7XG4gICAgICAgICAgICAgICAgY29weVRyZWUoY2hpbGRyZW4sIGNyZWF0ZWROb2RlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG4gICAgaWYgKHR5cGVvZiBwcmludFRyZWUuY2hpbGRyZW4gPT09IGB1bmRlZmluZWRgKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSByb290IG5vZGUgbXVzdCBvbmx5IGNvbnRhaW4gY2hpbGRyZW5gKTtcbiAgICBjb3B5VHJlZShwcmludFRyZWUuY2hpbGRyZW4sIHRhcmdldCk7XG4gICAgcmV0dXJuIHRhcmdldDtcbn1cbmV4cG9ydHMudHJlZU5vZGVUb1RyZWVpZnkgPSB0cmVlTm9kZVRvVHJlZWlmeTtcbmZ1bmN0aW9uIHRyZWVOb2RlVG9Kc29uKHByaW50VHJlZSkge1xuICAgIGNvbnN0IGNvcHlUcmVlID0gKHByaW50Tm9kZSkgPT4ge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGlmICh0eXBlb2YgcHJpbnROb2RlLmNoaWxkcmVuID09PSBgdW5kZWZpbmVkYCkge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBwcmludE5vZGUudmFsdWUgPT09IGB1bmRlZmluZWRgKVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQXNzZXJ0aW9uIGZhaWxlZDogRXhwZWN0ZWQgYSB2YWx1ZSB0byBiZSBzZXQgaWYgdGhlIGNoaWxkcmVuIGFyZSBtaXNzaW5nYCk7XG4gICAgICAgICAgICByZXR1cm4gZm9ybWF0VXRpbHMuanNvbihwcmludE5vZGUudmFsdWVbMF0sIHByaW50Tm9kZS52YWx1ZVsxXSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaXRlcmF0b3IgPSBBcnJheS5pc0FycmF5KHByaW50Tm9kZS5jaGlsZHJlbilcbiAgICAgICAgICAgID8gcHJpbnROb2RlLmNoaWxkcmVuLmVudHJpZXMoKVxuICAgICAgICAgICAgOiBPYmplY3QuZW50cmllcygoX2EgPSBwcmludE5vZGUuY2hpbGRyZW4pICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IHt9KTtcbiAgICAgICAgY29uc3QgdGFyZ2V0Q2hpbGRyZW4gPSBBcnJheS5pc0FycmF5KHByaW50Tm9kZS5jaGlsZHJlbilcbiAgICAgICAgICAgID8gW11cbiAgICAgICAgICAgIDoge307XG4gICAgICAgIGZvciAoY29uc3QgW2tleSwgY2hpbGRdIG9mIGl0ZXJhdG9yKVxuICAgICAgICAgICAgdGFyZ2V0Q2hpbGRyZW5ba2V5XSA9IGNvcHlUcmVlKGNoaWxkKTtcbiAgICAgICAgaWYgKHR5cGVvZiBwcmludE5vZGUudmFsdWUgPT09IGB1bmRlZmluZWRgKVxuICAgICAgICAgICAgcmV0dXJuIHRhcmdldENoaWxkcmVuO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdmFsdWU6IGZvcm1hdFV0aWxzLmpzb24ocHJpbnROb2RlLnZhbHVlWzBdLCBwcmludE5vZGUudmFsdWVbMV0pLFxuICAgICAgICAgICAgY2hpbGRyZW46IHRhcmdldENoaWxkcmVuLFxuICAgICAgICB9O1xuICAgIH07XG4gICAgcmV0dXJuIGNvcHlUcmVlKHByaW50VHJlZSk7XG59XG5leHBvcnRzLnRyZWVOb2RlVG9Kc29uID0gdHJlZU5vZGVUb0pzb247XG5mdW5jdGlvbiBlbWl0TGlzdCh2YWx1ZXMsIHsgY29uZmlndXJhdGlvbiwgc3Rkb3V0LCBqc29uIH0pIHtcbiAgICBjb25zdCBjaGlsZHJlbiA9IHZhbHVlcy5tYXAodmFsdWUgPT4gKHsgdmFsdWUgfSkpO1xuICAgIGVtaXRUcmVlKHsgY2hpbGRyZW4gfSwgeyBjb25maWd1cmF0aW9uLCBzdGRvdXQsIGpzb24gfSk7XG59XG5leHBvcnRzLmVtaXRMaXN0ID0gZW1pdExpc3Q7XG5mdW5jdGlvbiBlbWl0VHJlZSh0cmVlLCB7IGNvbmZpZ3VyYXRpb24sIHN0ZG91dCwganNvbiwgc2VwYXJhdG9ycyA9IDAgfSkge1xuICAgIHZhciBfYTtcbiAgICBpZiAoanNvbikge1xuICAgICAgICBjb25zdCBpdGVyYXRvciA9IEFycmF5LmlzQXJyYXkodHJlZS5jaGlsZHJlbilcbiAgICAgICAgICAgID8gdHJlZS5jaGlsZHJlbi52YWx1ZXMoKVxuICAgICAgICAgICAgOiBPYmplY3QudmFsdWVzKChfYSA9IHRyZWUuY2hpbGRyZW4pICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IHt9KTtcbiAgICAgICAgZm9yIChjb25zdCBjaGlsZCBvZiBpdGVyYXRvcilcbiAgICAgICAgICAgIHN0ZG91dC53cml0ZShgJHtKU09OLnN0cmluZ2lmeSh0cmVlTm9kZVRvSnNvbihjaGlsZCkpfVxcbmApO1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGxldCB0cmVlT3V0cHV0ID0gKDAsIHRyZWVpZnlfMS5hc1RyZWUpKHRyZWVOb2RlVG9UcmVlaWZ5KHRyZWUsIHsgY29uZmlndXJhdGlvbiB9KSwgZmFsc2UsIGZhbHNlKTtcbiAgICAvLyBBIHNsaWdodCBoYWNrIHRvIGFkZCBsaW5lIHJldHVybnMgYmV0d2VlbiB0d28gdG9wLWxldmVsIGVudHJpZXNcbiAgICBpZiAoc2VwYXJhdG9ycyA+PSAxKVxuICAgICAgICB0cmVlT3V0cHV0ID0gdHJlZU91dHB1dC5yZXBsYWNlKC9eKFtcdTI1MUNcdTI1MTRdXHUyNTAwKS9nbSwgYFx1MjUwMlxcbiQxYCkucmVwbGFjZSgvXlx1MjUwMlxcbi8sIGBgKTtcbiAgICAvLyBBbm90aGVyIG9uZSBmb3IgdGhlIHNlY29uZCBsZXZlbCBmaWVsZHMuIFdlIHJ1biBpdCB0d2ljZSBiZWNhdXNlIGluIHNvbWUgcGF0aG9sb2dpY2FsIGNhc2VzIHRoZSByZWdleCBtYXRjaGVzIHdvdWxkXG4gICAgaWYgKHNlcGFyYXRvcnMgPj0gMilcbiAgICAgICAgZm9yIChsZXQgdCA9IDA7IHQgPCAyOyArK3QpXG4gICAgICAgICAgICB0cmVlT3V0cHV0ID0gdHJlZU91dHB1dC5yZXBsYWNlKC9eKFtcdTI1MDIgXS57Mn1bXHUyNTFDXHUyNTAyIF0uezJ9W15cXG5dK1xcbikoKFtcdTI1MDIgXSkuezJ9W1x1MjUxQ1x1MjUxNF0uezJ9W15cXG5dKlxcbltcdTI1MDIgXS57Mn1bXHUyNTAyIF0uezJ9W1x1MjUxQ1x1MjUxNF1cdTI1MDApL2dtLCBgJDEkMyAgXHUyNTAyXFxuJDJgKS5yZXBsYWNlKC9eXHUyNTAyXFxuLywgYGApO1xuICAgIGlmIChzZXBhcmF0b3JzID49IDMpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgT25seSB0aGUgZmlyc3QgdHdvIGxldmVscyBhcmUgYWNjZXB0ZWQgYnkgdHJlZVV0aWxzLmVtaXRUcmVlYCk7XG4gICAgc3Rkb3V0LndyaXRlKHRyZWVPdXRwdXQpO1xufVxuZXhwb3J0cy5lbWl0VHJlZSA9IGVtaXRUcmVlO1xuIiwgIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5DYWNoZSA9IHZvaWQgMDtcbmNvbnN0IHRzbGliXzEgPSByZXF1aXJlKFwidHNsaWJcIik7XG5jb25zdCBmc2xpYl8xID0gcmVxdWlyZShcIkB5YXJucGtnL2ZzbGliXCIpO1xuY29uc3QgZnNsaWJfMiA9IHJlcXVpcmUoXCJAeWFybnBrZy9mc2xpYlwiKTtcbmNvbnN0IGxpYnppcF8xID0gcmVxdWlyZShcIkB5YXJucGtnL2xpYnppcFwiKTtcbmNvbnN0IGNyeXB0b18xID0gcmVxdWlyZShcImNyeXB0b1wiKTtcbmNvbnN0IGZzXzEgPSB0c2xpYl8xLl9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiZnNcIikpO1xuY29uc3QgTWVzc2FnZU5hbWVfMSA9IHJlcXVpcmUoXCIuL01lc3NhZ2VOYW1lXCIpO1xuY29uc3QgUmVwb3J0XzEgPSByZXF1aXJlKFwiLi9SZXBvcnRcIik7XG5jb25zdCBoYXNoVXRpbHMgPSB0c2xpYl8xLl9faW1wb3J0U3RhcihyZXF1aXJlKFwiLi9oYXNoVXRpbHNcIikpO1xuY29uc3QgbWlzY1V0aWxzID0gdHNsaWJfMS5fX2ltcG9ydFN0YXIocmVxdWlyZShcIi4vbWlzY1V0aWxzXCIpKTtcbmNvbnN0IHN0cnVjdFV0aWxzID0gdHNsaWJfMS5fX2ltcG9ydFN0YXIocmVxdWlyZShcIi4vc3RydWN0VXRpbHNcIikpO1xuY29uc3QgQ0FDSEVfVkVSU0lPTiA9IDk7XG5jbGFzcyBDYWNoZSB7XG4gICAgc3RhdGljIGFzeW5jIGZpbmQoY29uZmlndXJhdGlvbiwgeyBpbW11dGFibGUsIGNoZWNrIH0gPSB7fSkge1xuICAgICAgICBjb25zdCBjYWNoZSA9IG5ldyBDYWNoZShjb25maWd1cmF0aW9uLmdldChgY2FjaGVGb2xkZXJgKSwgeyBjb25maWd1cmF0aW9uLCBpbW11dGFibGUsIGNoZWNrIH0pO1xuICAgICAgICBhd2FpdCBjYWNoZS5zZXR1cCgpO1xuICAgICAgICByZXR1cm4gY2FjaGU7XG4gICAgfVxuICAgIGNvbnN0cnVjdG9yKGNhY2hlQ3dkLCB7IGNvbmZpZ3VyYXRpb24sIGltbXV0YWJsZSA9IGNvbmZpZ3VyYXRpb24uZ2V0KGBlbmFibGVJbW11dGFibGVDYWNoZWApLCBjaGVjayA9IGZhbHNlIH0pIHtcbiAgICAgICAgLy8gQ29udGFpbnMgdGhlIGxpc3Qgb2YgY2FjaGUgZmlsZXMgdGhhdCBnb3QgYWNjZXNzZWQgc2luY2UgdGhlIGxhc3QgdGltZVxuICAgICAgICAvLyB5b3UgY2xlYXJlZCB0aGUgdmFyaWFibGUuIFVzZWZ1bCB0byBrbm93IHdoaWNoIGZpbGVzIGFyZW4ndCBuZWVkZWRcbiAgICAgICAgLy8gYW55bW9yZSB3aGVuIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCBmZXRjaEV2ZXJ5dGhpbmcuXG4gICAgICAgIHRoaXMubWFya2VkRmlsZXMgPSBuZXcgU2V0KCk7XG4gICAgICAgIHRoaXMubXV0ZXhlcyA9IG5ldyBNYXAoKTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFRvIGVuc3VyZSBkaWZmZXJlbnQgaW5zdGFuY2VzIG9mIGBDYWNoZWAgZG9lc24ndCBlbmQgdXAgY29weWluZyB0byB0aGUgc2FtZVxuICAgICAgICAgKiB0ZW1wb3JhcnkgZmlsZSB0aGlzIHJhbmRvbSBJRCBpcyBhcHBlbmRlZCB0byB0aGUgZmlsZW5hbWUuXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLmNhY2hlSWQgPSBgLSR7KDAsIGNyeXB0b18xLnJhbmRvbUJ5dGVzKSg4KS50b1N0cmluZyhgaGV4YCl9LnRtcGA7XG4gICAgICAgIHRoaXMuY29uZmlndXJhdGlvbiA9IGNvbmZpZ3VyYXRpb247XG4gICAgICAgIHRoaXMuY3dkID0gY2FjaGVDd2Q7XG4gICAgICAgIHRoaXMuaW1tdXRhYmxlID0gaW1tdXRhYmxlO1xuICAgICAgICB0aGlzLmNoZWNrID0gY2hlY2s7XG4gICAgICAgIGNvbnN0IGNhY2hlS2V5T3ZlcnJpZGUgPSBjb25maWd1cmF0aW9uLmdldChgY2FjaGVLZXlPdmVycmlkZWApO1xuICAgICAgICBpZiAoY2FjaGVLZXlPdmVycmlkZSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy5jYWNoZUtleSA9IGAke2NhY2hlS2V5T3ZlcnJpZGV9YDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbXByZXNzaW9uTGV2ZWwgPSBjb25maWd1cmF0aW9uLmdldChgY29tcHJlc3Npb25MZXZlbGApO1xuICAgICAgICAgICAgY29uc3QgY29tcHJlc3Npb25LZXkgPSBjb21wcmVzc2lvbkxldmVsICE9PSBsaWJ6aXBfMS5ERUZBVUxUX0NPTVBSRVNTSU9OX0xFVkVMXG4gICAgICAgICAgICAgICAgPyBgYyR7Y29tcHJlc3Npb25MZXZlbH1gIDogYGA7XG4gICAgICAgICAgICB0aGlzLmNhY2hlS2V5ID0gW1xuICAgICAgICAgICAgICAgIENBQ0hFX1ZFUlNJT04sXG4gICAgICAgICAgICAgICAgY29tcHJlc3Npb25LZXksXG4gICAgICAgICAgICBdLmpvaW4oYGApO1xuICAgICAgICB9XG4gICAgfVxuICAgIGdldCBtaXJyb3JDd2QoKSB7XG4gICAgICAgIGlmICghdGhpcy5jb25maWd1cmF0aW9uLmdldChgZW5hYmxlTWlycm9yYCkpXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgY29uc3QgbWlycm9yQ3dkID0gYCR7dGhpcy5jb25maWd1cmF0aW9uLmdldChgZ2xvYmFsRm9sZGVyYCl9L2NhY2hlYDtcbiAgICAgICAgcmV0dXJuIG1pcnJvckN3ZCAhPT0gdGhpcy5jd2QgPyBtaXJyb3JDd2QgOiBudWxsO1xuICAgIH1cbiAgICBnZXRWZXJzaW9uRmlsZW5hbWUobG9jYXRvcikge1xuICAgICAgICByZXR1cm4gYCR7c3RydWN0VXRpbHMuc2x1Z2lmeUxvY2F0b3IobG9jYXRvcil9LSR7dGhpcy5jYWNoZUtleX0uemlwYDtcbiAgICB9XG4gICAgZ2V0Q2hlY2tzdW1GaWxlbmFtZShsb2NhdG9yLCBjaGVja3N1bSkge1xuICAgICAgICAvLyBXZSBvbmx5IHdhbnQgdGhlIGFjdHVhbCBjaGVja3N1bSAobm90IHRoZSBjYWNoZSB2ZXJzaW9uLCBzaW5jZSB0aGUgd2hvbGVcbiAgICAgICAgLy8gcG9pbnQgaXMgdG8gYXZvaWQgY2hhbmdpbmcgdGhlIGZpbGVuYW1lcyB3aGVuIHRoZSBjYWNoZSB2ZXJzaW9uIGNoYW5nZXMpXG4gICAgICAgIGNvbnN0IGNvbnRlbnRDaGVja3N1bSA9IGdldEhhc2hDb21wb25lbnQoY2hlY2tzdW0pO1xuICAgICAgICAvLyBXZSBvbmx5IGNhcmUgYWJvdXQgdGhlIGZpcnN0IGZldyBjaGFyYWN0ZXJzLiBJdCBkb2Vzbid0IG1hdHRlciBpZiB0aGF0XG4gICAgICAgIC8vIG1ha2VzIHRoZSBoYXNoIGVhc2llciB0byBjb2xsaWRlIHdpdGgsIGJlY2F1c2Ugd2UgY2hlY2sgdGhlIGZpbGUgaGFzaGVzXG4gICAgICAgIC8vIGR1cmluZyBlYWNoIGluc3RhbGwgYW55d2F5LlxuICAgICAgICBjb25zdCBzaWduaWZpY2FudENoZWNrc3VtID0gY29udGVudENoZWNrc3VtLnNsaWNlKDAsIDEwKTtcbiAgICAgICAgcmV0dXJuIGAke3N0cnVjdFV0aWxzLnNsdWdpZnlMb2NhdG9yKGxvY2F0b3IpfS0ke3NpZ25pZmljYW50Q2hlY2tzdW19LnppcGA7XG4gICAgfVxuICAgIGdldExvY2F0b3JQYXRoKGxvY2F0b3IsIGV4cGVjdGVkQ2hlY2tzdW0sIG9wdHMgPSB7fSkge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIC8vIElmIHRoZXJlIGlzIG5vIG1pcnJvciwgdGhlbiB0aGUgbG9jYWwgY2FjaGUgKmlzKiB0aGUgbWlycm9yLCBpbiB3aGljaFxuICAgICAgICAvLyBjYXNlIHdlIHVzZSB0aGUgdmVyc2lvbmVkIGZpbGVuYW1lIHBhdHRlcm4uIFNhbWUgaWYgdGhlIHBhY2thZ2UgaXNcbiAgICAgICAgLy8gdW5zdGFibGUsIG1lYW5pbmcgaXQgbWF5IGJlIHRoZXJlIG9yIG5vdCBkZXBlbmRpbmcgb24gdGhlIGVudmlyb25tZW50LFxuICAgICAgICAvLyBzbyB3ZSBjYW4ndCByZWx5IG9uIGl0cyBjaGVja3N1bSB0byBnZXQgYSBzdGFibGUgbG9jYXRpb24uXG4gICAgICAgIGlmICh0aGlzLm1pcnJvckN3ZCA9PT0gbnVsbCB8fCAoKF9hID0gb3B0cy51bnN0YWJsZVBhY2thZ2VzKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuaGFzKGxvY2F0b3IubG9jYXRvckhhc2gpKSlcbiAgICAgICAgICAgIHJldHVybiBmc2xpYl8yLnBwYXRoLnJlc29sdmUodGhpcy5jd2QsIHRoaXMuZ2V0VmVyc2lvbkZpbGVuYW1lKGxvY2F0b3IpKTtcbiAgICAgICAgLy8gSWYgd2UgZG9uJ3QgeWV0IGtub3cgdGhlIGNoZWNrc3VtLCBkaXNjYXJkIHRoZSBwYXRoIHJlc29sdXRpb24gZm9yIG5vd1xuICAgICAgICAvLyB1bnRpbCB0aGUgY2hlY2tzdW0gY2FuIGJlIG9idGFpbmVkIGZyb20gc29tZXdoZXJlIChtaXJyb3Igb3IgbmV0d29yaykuXG4gICAgICAgIGlmIChleHBlY3RlZENoZWNrc3VtID09PSBudWxsKVxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIC8vIElmIHRoZSBjYWNoZSBrZXkgY2hhbmdlZCB0aGVuIHdlIGFzc3VtZSB0aGF0IHRoZSBjb250ZW50IHByb2JhYmx5IGdvdFxuICAgICAgICAvLyBhbHRlcmVkIGFzIHdlbGwgYW5kIHRodXMgdGhlIGV4aXN0aW5nIHBhdGggd29uJ3QgYmUgZ29vZCBlbm91Z2ggYW55bW9yZS5cbiAgICAgICAgY29uc3QgY2FjaGVLZXkgPSBnZXRDYWNoZUtleUNvbXBvbmVudChleHBlY3RlZENoZWNrc3VtKTtcbiAgICAgICAgaWYgKGNhY2hlS2V5ICE9PSB0aGlzLmNhY2hlS2V5KVxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIHJldHVybiBmc2xpYl8yLnBwYXRoLnJlc29sdmUodGhpcy5jd2QsIHRoaXMuZ2V0Q2hlY2tzdW1GaWxlbmFtZShsb2NhdG9yLCBleHBlY3RlZENoZWNrc3VtKSk7XG4gICAgfVxuICAgIGdldExvY2F0b3JNaXJyb3JQYXRoKGxvY2F0b3IpIHtcbiAgICAgICAgY29uc3QgbWlycm9yQ3dkID0gdGhpcy5taXJyb3JDd2Q7XG4gICAgICAgIHJldHVybiBtaXJyb3JDd2QgIT09IG51bGwgPyBmc2xpYl8yLnBwYXRoLnJlc29sdmUobWlycm9yQ3dkLCB0aGlzLmdldFZlcnNpb25GaWxlbmFtZShsb2NhdG9yKSkgOiBudWxsO1xuICAgIH1cbiAgICBhc3luYyBzZXR1cCgpIHtcbiAgICAgICAgLy8gbWtkaXIgbWF5IGNhdXNlIHdyaXRlIG9wZXJhdGlvbnMgZXZlbiB3aGVuIGRpcmVjdG9yaWVzIGV4aXN0LiBUbyBlbnN1cmUgdGhhdCB0aGUgY2FjaGUgY2FuIGJlIHN1Y2Nlc3NmdWxseSB1c2VkXG4gICAgICAgIC8vIG9uIHJlYWQtb25seSBmaWxlc3lzdGVtcywgb25seSBydW4gbWtkaXIgd2hlbiBub3QgcnVubmluZyBpbiBpbW11dGFibGUgbW9kZS5cbiAgICAgICAgaWYgKCF0aGlzLmNvbmZpZ3VyYXRpb24uZ2V0KGBlbmFibGVHbG9iYWxDYWNoZWApKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5pbW11dGFibGUpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWF3YWl0IGZzbGliXzIueGZzLmV4aXN0c1Byb21pc2UodGhpcy5jd2QpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBSZXBvcnRfMS5SZXBvcnRFcnJvcihNZXNzYWdlTmFtZV8xLk1lc3NhZ2VOYW1lLklNTVVUQUJMRV9DQUNIRSwgYENhY2hlIHBhdGggZG9lcyBub3QgZXhpc3QuYCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgZnNsaWJfMi54ZnMubWtkaXJQcm9taXNlKHRoaXMuY3dkLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICAgICAgICAgICAgICBjb25zdCBnaXRpZ25vcmVQYXRoID0gZnNsaWJfMi5wcGF0aC5yZXNvbHZlKHRoaXMuY3dkLCBgLmdpdGlnbm9yZWApO1xuICAgICAgICAgICAgICAgIGF3YWl0IGZzbGliXzIueGZzLmNoYW5nZUZpbGVQcm9taXNlKGdpdGlnbm9yZVBhdGgsIGAvLmdpdGlnbm9yZVxcbiouZmxvY2tcXG4qLnRtcFxcbmApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLm1pcnJvckN3ZCB8fCAhdGhpcy5pbW11dGFibGUpIHtcbiAgICAgICAgICAgIGF3YWl0IGZzbGliXzIueGZzLm1rZGlyUHJvbWlzZSh0aGlzLm1pcnJvckN3ZCB8fCB0aGlzLmN3ZCwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgYXN5bmMgZmV0Y2hQYWNrYWdlRnJvbUNhY2hlKGxvY2F0b3IsIGV4cGVjdGVkQ2hlY2tzdW0sIHsgb25IaXQsIG9uTWlzcywgbG9hZGVyLCAuLi5vcHRzIH0pIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBjb25zdCBtaXJyb3JQYXRoID0gdGhpcy5nZXRMb2NhdG9yTWlycm9yUGF0aChsb2NhdG9yKTtcbiAgICAgICAgY29uc3QgYmFzZUZzID0gbmV3IGZzbGliXzEuTm9kZUZTKCk7XG4gICAgICAgIC8vIENvbmRpdGlvbmFsIHBhY2thZ2VzIG1heSBub3QgYmUgZmV0Y2hlZCBpZiB0aGV5J3JlIGludGVuZGVkIGZvciBhXG4gICAgICAgIC8vIGRpZmZlcmVudCBhcmNoaXRlY3R1cmUgdGhhbiB0aGUgY3VycmVudCBvbmUuIFRvIGF2b2lkIGhhdmluZyB0byBiZVxuICAgICAgICAvLyBjYXJlZnVsIGFib3V0IHRob3NlIHBhY2thZ2VzIGV2ZXJ5d2hlcmUsIHdlIGluc3RlYWQgY2hhbmdlIHRoZWlyXG4gICAgICAgIC8vIGNvbnRlbnQgdG8gdGhhdCBvZiBhbiBlbXB0eSBpbi1tZW1vcnkgcGFja2FnZS5cbiAgICAgICAgLy9cbiAgICAgICAgLy8gVGhpcyBtZW1vcnkgcmVwcmVzZW50YXRpb24gd2lsbCBiZSB3cmFwcGVkIGludG8gYW4gQWxpYXNGUyB0byBtYWtlXG4gICAgICAgIC8vIGl0IHNlZW0gbGlrZSBpdCBhY3R1YWxseSBleGlzdCBvbiB0aGUgZGlzaywgYXQgdGhlIGxvY2F0aW9uIG9mIHRoZVxuICAgICAgICAvLyBjYWNoZSB0aGUgcGFja2FnZSB3b3VsZCBmaWxsIGlmIGl0IHdhcyBub3JtYWxseSBmZXRjaGVkLlxuICAgICAgICBjb25zdCBtYWtlTW9ja1BhY2thZ2UgPSAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB6aXBGcyA9IG5ldyBsaWJ6aXBfMS5aaXBGUygpO1xuICAgICAgICAgICAgY29uc3Qgcm9vdFBhY2thZ2VEaXIgPSBmc2xpYl8yLnBwYXRoLmpvaW4oZnNsaWJfMS5Qb3J0YWJsZVBhdGgucm9vdCwgc3RydWN0VXRpbHMuZ2V0SWRlbnRWZW5kb3JQYXRoKGxvY2F0b3IpKTtcbiAgICAgICAgICAgIHppcEZzLm1rZGlyU3luYyhyb290UGFja2FnZURpciwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gICAgICAgICAgICB6aXBGcy53cml0ZUpzb25TeW5jKGZzbGliXzIucHBhdGguam9pbihyb290UGFja2FnZURpciwgZnNsaWJfMS5GaWxlbmFtZS5tYW5pZmVzdCksIHtcbiAgICAgICAgICAgICAgICBuYW1lOiBzdHJ1Y3RVdGlscy5zdHJpbmdpZnlJZGVudChsb2NhdG9yKSxcbiAgICAgICAgICAgICAgICBtb2NrZWQ6IHRydWUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiB6aXBGcztcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgdmFsaWRhdGVGaWxlID0gYXN5bmMgKHBhdGgsIHJlZmV0Y2hQYXRoID0gbnVsbCkgPT4ge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgLy8gV2UgaGlkZSB0aGUgY2hlY2tzdW0gaWYgdGhlIHBhY2thZ2UgcHJlc2VuY2UgaXMgY29uZGl0aW9uYWwsIGJlY2F1c2UgaXQgYmVjb21lcyB1bnJlbGlhYmxlXG4gICAgICAgICAgICAvLyBzbyB0aGVyZSBpcyBubyBwb2ludCBpbiBjb21wdXRpbmcgaXQgdW5sZXNzIHdlJ3JlIGNoZWNraW5nIHRoZSBjYWNoZVxuICAgICAgICAgICAgaWYgKHJlZmV0Y2hQYXRoID09PSBudWxsICYmICgoX2EgPSBvcHRzLnVuc3RhYmxlUGFja2FnZXMpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5oYXMobG9jYXRvci5sb2NhdG9ySGFzaCkpKVxuICAgICAgICAgICAgICAgIHJldHVybiB7IGlzVmFsaWQ6IHRydWUsIGhhc2g6IG51bGwgfTtcbiAgICAgICAgICAgIGNvbnN0IGFjdHVhbENoZWNrc3VtID0gKCFvcHRzLnNraXBJbnRlZ3JpdHlDaGVjayB8fCAhZXhwZWN0ZWRDaGVja3N1bSlcbiAgICAgICAgICAgICAgICA/IGAke3RoaXMuY2FjaGVLZXl9LyR7YXdhaXQgaGFzaFV0aWxzLmNoZWNrc3VtRmlsZShwYXRoKX1gXG4gICAgICAgICAgICAgICAgOiBleHBlY3RlZENoZWNrc3VtO1xuICAgICAgICAgICAgaWYgKHJlZmV0Y2hQYXRoICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcHJldmlvdXNDaGVja3N1bSA9ICghb3B0cy5za2lwSW50ZWdyaXR5Q2hlY2sgfHwgIWV4cGVjdGVkQ2hlY2tzdW0pXG4gICAgICAgICAgICAgICAgICAgID8gYCR7dGhpcy5jYWNoZUtleX0vJHthd2FpdCBoYXNoVXRpbHMuY2hlY2tzdW1GaWxlKHJlZmV0Y2hQYXRoKX1gXG4gICAgICAgICAgICAgICAgICAgIDogZXhwZWN0ZWRDaGVja3N1bTtcbiAgICAgICAgICAgICAgICBpZiAoYWN0dWFsQ2hlY2tzdW0gIT09IHByZXZpb3VzQ2hlY2tzdW0pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFJlcG9ydF8xLlJlcG9ydEVycm9yKE1lc3NhZ2VOYW1lXzEuTWVzc2FnZU5hbWUuQ0FDSEVfQ0hFQ0tTVU1fTUlTTUFUQ0gsIGBUaGUgcmVtb3RlIGFyY2hpdmUgZG9lc24ndCBtYXRjaCB0aGUgbG9jYWwgY2hlY2tzdW0gLSBoYXMgdGhlIGxvY2FsIGNhY2hlIGJlZW4gY29ycnVwdGVkP2ApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChleHBlY3RlZENoZWNrc3VtICE9PSBudWxsICYmIGFjdHVhbENoZWNrc3VtICE9PSBleHBlY3RlZENoZWNrc3VtKSB7XG4gICAgICAgICAgICAgICAgbGV0IGNoZWNrc3VtQmVoYXZpb3I7XG4gICAgICAgICAgICAgICAgLy8gVXNpbmcgLS1jaGVjay1jYWNoZSBvdmVycmlkZXMgYW55IHByZWNvbmZpZ3VyZWQgY2hlY2tzdW0gYmVoYXZpb3JcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jaGVjaylcbiAgICAgICAgICAgICAgICAgICAgY2hlY2tzdW1CZWhhdmlvciA9IGB0aHJvd2A7XG4gICAgICAgICAgICAgICAgLy8gSWYgdGhlIGxvY2tmaWxlIHJlZmVyZW5jZXMgYW4gb2xkIGNhY2hlIGZvcm1hdCwgd2UgdG9sZXJhdGUgZGlmZmVyZW50IGNoZWNrc3Vtc1xuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGdldENhY2hlS2V5Q29tcG9uZW50KGV4cGVjdGVkQ2hlY2tzdW0pICE9PSBnZXRDYWNoZUtleUNvbXBvbmVudChhY3R1YWxDaGVja3N1bSkpXG4gICAgICAgICAgICAgICAgICAgIGNoZWNrc3VtQmVoYXZpb3IgPSBgdXBkYXRlYDtcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIGNoZWNrc3VtQmVoYXZpb3IgPSB0aGlzLmNvbmZpZ3VyYXRpb24uZ2V0KGBjaGVja3N1bUJlaGF2aW9yYCk7XG4gICAgICAgICAgICAgICAgc3dpdGNoIChjaGVja3N1bUJlaGF2aW9yKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgYGlnbm9yZWA6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBpc1ZhbGlkOiB0cnVlLCBoYXNoOiBleHBlY3RlZENoZWNrc3VtIH07XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgYHVwZGF0ZWA6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBpc1ZhbGlkOiB0cnVlLCBoYXNoOiBhY3R1YWxDaGVja3N1bSB9O1xuICAgICAgICAgICAgICAgICAgICBjYXNlIGByZXNldGA6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBpc1ZhbGlkOiBmYWxzZSwgaGFzaDogZXhwZWN0ZWRDaGVja3N1bSB9O1xuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBjYXNlIGB0aHJvd2A6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBSZXBvcnRfMS5SZXBvcnRFcnJvcihNZXNzYWdlTmFtZV8xLk1lc3NhZ2VOYW1lLkNBQ0hFX0NIRUNLU1VNX01JU01BVENILCBgVGhlIHJlbW90ZSBhcmNoaXZlIGRvZXNuJ3QgbWF0Y2ggdGhlIGV4cGVjdGVkIGNoZWNrc3VtYCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4geyBpc1ZhbGlkOiB0cnVlLCBoYXNoOiBhY3R1YWxDaGVja3N1bSB9O1xuICAgICAgICB9O1xuICAgICAgICBjb25zdCB2YWxpZGF0ZUZpbGVBZ2FpbnN0UmVtb3RlID0gYXN5bmMgKGNhY2hlUGF0aCkgPT4ge1xuICAgICAgICAgICAgaWYgKCFsb2FkZXIpXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYWNoZSBjaGVjayByZXF1aXJlZCBidXQgbm8gbG9hZGVyIGNvbmZpZ3VyZWQgZm9yICR7c3RydWN0VXRpbHMucHJldHR5TG9jYXRvcih0aGlzLmNvbmZpZ3VyYXRpb24sIGxvY2F0b3IpfWApO1xuICAgICAgICAgICAgY29uc3QgemlwRnMgPSBhd2FpdCBsb2FkZXIoKTtcbiAgICAgICAgICAgIGNvbnN0IHJlZmV0Y2hQYXRoID0gemlwRnMuZ2V0UmVhbFBhdGgoKTtcbiAgICAgICAgICAgIHppcEZzLnNhdmVBbmRDbG9zZSgpO1xuICAgICAgICAgICAgYXdhaXQgZnNsaWJfMi54ZnMuY2htb2RQcm9taXNlKHJlZmV0Y2hQYXRoLCAwbzY0NCk7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB2YWxpZGF0ZUZpbGUoY2FjaGVQYXRoLCByZWZldGNoUGF0aCk7XG4gICAgICAgICAgICBpZiAoIXJlc3VsdC5pc1ZhbGlkKVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQXNzZXJ0aW9uIGZhaWxlZDogRXhwZWN0ZWQgYSB2YWxpZCBjaGVja3N1bWApO1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5oYXNoO1xuICAgICAgICB9O1xuICAgICAgICBjb25zdCBsb2FkUGFja2FnZVRocm91Z2hNaXJyb3IgPSBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBpZiAobWlycm9yUGF0aCA9PT0gbnVsbCB8fCAhKGF3YWl0IGZzbGliXzIueGZzLmV4aXN0c1Byb21pc2UobWlycm9yUGF0aCkpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgemlwRnMgPSBhd2FpdCBsb2FkZXIoKTtcbiAgICAgICAgICAgICAgICBjb25zdCByZWFsUGF0aCA9IHppcEZzLmdldFJlYWxQYXRoKCk7XG4gICAgICAgICAgICAgICAgemlwRnMuc2F2ZUFuZENsb3NlKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgc291cmNlOiBgbG9hZGVyYCwgcGF0aDogcmVhbFBhdGggfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB7IHNvdXJjZTogYG1pcnJvcmAsIHBhdGg6IG1pcnJvclBhdGggfTtcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgbG9hZFBhY2thZ2UgPSBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBpZiAoIWxvYWRlcilcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENhY2hlIGVudHJ5IHJlcXVpcmVkIGJ1dCBtaXNzaW5nIGZvciAke3N0cnVjdFV0aWxzLnByZXR0eUxvY2F0b3IodGhpcy5jb25maWd1cmF0aW9uLCBsb2NhdG9yKX1gKTtcbiAgICAgICAgICAgIGlmICh0aGlzLmltbXV0YWJsZSlcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUmVwb3J0XzEuUmVwb3J0RXJyb3IoTWVzc2FnZU5hbWVfMS5NZXNzYWdlTmFtZS5JTU1VVEFCTEVfQ0FDSEUsIGBDYWNoZSBlbnRyeSByZXF1aXJlZCBidXQgbWlzc2luZyBmb3IgJHtzdHJ1Y3RVdGlscy5wcmV0dHlMb2NhdG9yKHRoaXMuY29uZmlndXJhdGlvbiwgbG9jYXRvcil9YCk7XG4gICAgICAgICAgICBjb25zdCB7IHBhdGg6IHBhY2thZ2VQYXRoLCBzb3VyY2U6IHBhY2thZ2VTb3VyY2UgfSA9IGF3YWl0IGxvYWRQYWNrYWdlVGhyb3VnaE1pcnJvcigpO1xuICAgICAgICAgICAgLy8gRG8gdGhpcyBiZWZvcmUgbW92aW5nIHRoZSBmaWxlIHNvIHRoYXQgd2UgZG9uJ3QgcG9sbHV0ZSB0aGUgY2FjaGUgd2l0aCBjb3JydXB0ZWQgYXJjaGl2ZXNcbiAgICAgICAgICAgIGNvbnN0IGNoZWNrc3VtID0gKGF3YWl0IHZhbGlkYXRlRmlsZShwYWNrYWdlUGF0aCkpLmhhc2g7XG4gICAgICAgICAgICBjb25zdCBjYWNoZVBhdGggPSB0aGlzLmdldExvY2F0b3JQYXRoKGxvY2F0b3IsIGNoZWNrc3VtLCBvcHRzKTtcbiAgICAgICAgICAgIGlmICghY2FjaGVQYXRoKVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQXNzZXJ0aW9uIGZhaWxlZDogRXhwZWN0ZWQgdGhlIGNhY2hlIHBhdGggdG8gYmUgYXZhaWxhYmxlYCk7XG4gICAgICAgICAgICBjb25zdCBjb3B5UHJvY2VzcyA9IFtdO1xuICAgICAgICAgICAgLy8gQ29weSB0aGUgcGFja2FnZSBpbnRvIHRoZSBtaXJyb3JcbiAgICAgICAgICAgIGlmIChwYWNrYWdlU291cmNlICE9PSBgbWlycm9yYCAmJiBtaXJyb3JQYXRoICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgY29weVByb2Nlc3MucHVzaChhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1pcnJvclBhdGhUZW1wID0gYCR7bWlycm9yUGF0aH0ke3RoaXMuY2FjaGVJZH1gO1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCBmc2xpYl8yLnhmcy5jb3B5RmlsZVByb21pc2UocGFja2FnZVBhdGgsIG1pcnJvclBhdGhUZW1wLCBmc18xLmRlZmF1bHQuY29uc3RhbnRzLkNPUFlGSUxFX0ZJQ0xPTkUpO1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCBmc2xpYl8yLnhmcy5jaG1vZFByb21pc2UobWlycm9yUGF0aFRlbXAsIDBvNjQ0KTtcbiAgICAgICAgICAgICAgICAgICAgLy8gRG9pbmcgYSByZW5hbWUgaXMgaW1wb3J0YW50IHRvIGVuc3VyZSB0aGUgY2FjaGUgaXMgYXRvbWljXG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IGZzbGliXzIueGZzLnJlbmFtZVByb21pc2UobWlycm9yUGF0aFRlbXAsIG1pcnJvclBhdGgpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gQ29weSB0aGUgcGFja2FnZSBpbnRvIHRoZSBjYWNoZVxuICAgICAgICAgICAgaWYgKCFvcHRzLm1pcnJvcldyaXRlT25seSB8fCBtaXJyb3JQYXRoID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgY29weVByb2Nlc3MucHVzaChhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNhY2hlUGF0aFRlbXAgPSBgJHtjYWNoZVBhdGh9JHt0aGlzLmNhY2hlSWR9YDtcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgZnNsaWJfMi54ZnMuY29weUZpbGVQcm9taXNlKHBhY2thZ2VQYXRoLCBjYWNoZVBhdGhUZW1wLCBmc18xLmRlZmF1bHQuY29uc3RhbnRzLkNPUFlGSUxFX0ZJQ0xPTkUpO1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCBmc2xpYl8yLnhmcy5jaG1vZFByb21pc2UoY2FjaGVQYXRoVGVtcCwgMG82NDQpO1xuICAgICAgICAgICAgICAgICAgICAvLyBEb2luZyBhIHJlbmFtZSBpcyBpbXBvcnRhbnQgdG8gZW5zdXJlIHRoZSBjYWNoZSBpcyBhdG9taWNcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgZnNsaWJfMi54ZnMucmVuYW1lUHJvbWlzZShjYWNoZVBhdGhUZW1wLCBjYWNoZVBhdGgpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgZmluYWxQYXRoID0gb3B0cy5taXJyb3JXcml0ZU9ubHlcbiAgICAgICAgICAgICAgICA/IG1pcnJvclBhdGggIT09IG51bGwgJiYgbWlycm9yUGF0aCAhPT0gdm9pZCAwID8gbWlycm9yUGF0aCA6IGNhY2hlUGF0aFxuICAgICAgICAgICAgICAgIDogY2FjaGVQYXRoO1xuICAgICAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoY29weVByb2Nlc3MubWFwKGNvcHkgPT4gY29weSgpKSk7XG4gICAgICAgICAgICByZXR1cm4gW2ZhbHNlLCBmaW5hbFBhdGgsIGNoZWNrc3VtXTtcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgbG9hZFBhY2thZ2VUaHJvdWdoTXV0ZXggPSBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBtdXRleGVkTG9hZCA9IGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICAgICAgLy8gV2UgZG9uJ3QgeWV0IGtub3cgd2hldGhlciB0aGUgY2FjaGUgcGF0aCBjYW4gYmUgY29tcHV0ZWQgeWV0LCBzaW5jZSB0aGF0XG4gICAgICAgICAgICAgICAgLy8gZGVwZW5kcyBvbiB3aGV0aGVyIHRoZSBjYWNoZSBpcyBhY3R1YWxseSB0aGUgbWlycm9yIG9yIG5vdCwgYW5kIHdoZXRoZXJcbiAgICAgICAgICAgICAgICAvLyB0aGUgY2hlY2tzdW0gaXMga25vd24gb3Igbm90LlxuICAgICAgICAgICAgICAgIGNvbnN0IHRlbnRhdGl2ZUNhY2hlUGF0aCA9IHRoaXMuZ2V0TG9jYXRvclBhdGgobG9jYXRvciwgZXhwZWN0ZWRDaGVja3N1bSwgb3B0cyk7XG4gICAgICAgICAgICAgICAgY29uc3QgY2FjaGVGaWxlRXhpc3RzID0gdGVudGF0aXZlQ2FjaGVQYXRoICE9PSBudWxsXG4gICAgICAgICAgICAgICAgICAgID8gdGhpcy5tYXJrZWRGaWxlcy5oYXModGVudGF0aXZlQ2FjaGVQYXRoKSB8fCBhd2FpdCBiYXNlRnMuZXhpc3RzUHJvbWlzZSh0ZW50YXRpdmVDYWNoZVBhdGgpXG4gICAgICAgICAgICAgICAgICAgIDogZmFsc2U7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2hvdWxkTW9jayA9ICEhKChfYSA9IG9wdHMubW9ja2VkUGFja2FnZXMpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5oYXMobG9jYXRvci5sb2NhdG9ySGFzaCkpICYmICghdGhpcy5jaGVjayB8fCAhY2FjaGVGaWxlRXhpc3RzKTtcbiAgICAgICAgICAgICAgICBjb25zdCBpc0NhY2hlSGl0ID0gc2hvdWxkTW9jayB8fCBjYWNoZUZpbGVFeGlzdHM7XG4gICAgICAgICAgICAgICAgY29uc3QgYWN0aW9uID0gaXNDYWNoZUhpdFxuICAgICAgICAgICAgICAgICAgICA/IG9uSGl0XG4gICAgICAgICAgICAgICAgICAgIDogb25NaXNzO1xuICAgICAgICAgICAgICAgIGlmIChhY3Rpb24pXG4gICAgICAgICAgICAgICAgICAgIGFjdGlvbigpO1xuICAgICAgICAgICAgICAgIGlmICghaXNDYWNoZUhpdCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZFBhY2thZ2UoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBjaGVja3N1bSA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNhY2hlUGF0aCA9IHRlbnRhdGl2ZUNhY2hlUGF0aDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFzaG91bGRNb2NrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5jaGVjaykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrc3VtID0gYXdhaXQgdmFsaWRhdGVGaWxlQWdhaW5zdFJlbW90ZShjYWNoZVBhdGgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWF5YmVDaGVja3N1bSA9IGF3YWl0IHZhbGlkYXRlRmlsZShjYWNoZVBhdGgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtYXliZUNoZWNrc3VtLmlzVmFsaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tzdW0gPSBtYXliZUNoZWNrc3VtLmhhc2g7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZFBhY2thZ2UoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtzaG91bGRNb2NrLCBjYWNoZVBhdGgsIGNoZWNrc3VtXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgY29uc3QgbXV0ZXggPSBtdXRleGVkTG9hZCgpO1xuICAgICAgICAgICAgdGhpcy5tdXRleGVzLnNldChsb2NhdG9yLmxvY2F0b3JIYXNoLCBtdXRleCk7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHJldHVybiBhd2FpdCBtdXRleDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgICAgIHRoaXMubXV0ZXhlcy5kZWxldGUobG9jYXRvci5sb2NhdG9ySGFzaCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIGZvciAobGV0IG11dGV4OyAobXV0ZXggPSB0aGlzLm11dGV4ZXMuZ2V0KGxvY2F0b3IubG9jYXRvckhhc2gpKTspXG4gICAgICAgICAgICBhd2FpdCBtdXRleDtcbiAgICAgICAgY29uc3QgW3Nob3VsZE1vY2ssIGNhY2hlUGF0aCwgY2hlY2tzdW1dID0gYXdhaXQgbG9hZFBhY2thZ2VUaHJvdWdoTXV0ZXgoKTtcbiAgICAgICAgaWYgKCFzaG91bGRNb2NrKVxuICAgICAgICAgICAgdGhpcy5tYXJrZWRGaWxlcy5hZGQoY2FjaGVQYXRoKTtcbiAgICAgICAgbGV0IHppcEZzO1xuICAgICAgICBjb25zdCB6aXBGc0J1aWxkZXIgPSBzaG91bGRNb2NrXG4gICAgICAgICAgICA/ICgpID0+IG1ha2VNb2NrUGFja2FnZSgpXG4gICAgICAgICAgICA6ICgpID0+IG5ldyBsaWJ6aXBfMS5aaXBGUyhjYWNoZVBhdGgsIHsgYmFzZUZzLCByZWFkT25seTogdHJ1ZSB9KTtcbiAgICAgICAgY29uc3QgbGF6eUZzID0gbmV3IGZzbGliXzEuTGF6eUZTKCgpID0+IG1pc2NVdGlscy5wcmV0dGlmeVN5bmNFcnJvcnMoKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHppcEZzID0gemlwRnNCdWlsZGVyKCk7XG4gICAgICAgIH0sIG1lc3NhZ2UgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGBGYWlsZWQgdG8gb3BlbiB0aGUgY2FjaGUgZW50cnkgZm9yICR7c3RydWN0VXRpbHMucHJldHR5TG9jYXRvcih0aGlzLmNvbmZpZ3VyYXRpb24sIGxvY2F0b3IpfTogJHttZXNzYWdlfWA7XG4gICAgICAgIH0pLCBmc2xpYl8yLnBwYXRoKTtcbiAgICAgICAgLy8gV2UgdXNlIGFuIEFsaWFzRlMgdG8gc3BlZWQgdXAgZ2V0UmVhbFBhdGggY2FsbHMgKGUuZy4gVmlydHVhbEZldGNoZXIuZW5zdXJlVmlydHVhbExpbmspXG4gICAgICAgIC8vICh0aGVyZSdzIG5vIG5lZWQgdG8gY3JlYXRlIHRoZSBsYXp5IGJhc2VGcyBpbnN0YW5jZSB0byBnYXRoZXIgdGhlIGFscmVhZHkta25vd24gY2FjaGVQYXRoKVxuICAgICAgICBjb25zdCBhbGlhc0ZzID0gbmV3IGZzbGliXzEuQWxpYXNGUyhjYWNoZVBhdGgsIHsgYmFzZUZzOiBsYXp5RnMsIHBhdGhVdGlsczogZnNsaWJfMi5wcGF0aCB9KTtcbiAgICAgICAgY29uc3QgcmVsZWFzZUZzID0gKCkgPT4ge1xuICAgICAgICAgICAgemlwRnMgPT09IG51bGwgfHwgemlwRnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHppcEZzLmRpc2NhcmRBbmRDbG9zZSgpO1xuICAgICAgICB9O1xuICAgICAgICAvLyBXZSBoaWRlIHRoZSBjaGVja3N1bSBpZiB0aGUgcGFja2FnZSBwcmVzZW5jZSBpcyBjb25kaXRpb25hbCwgYmVjYXVzZSBpdCBiZWNvbWVzIHVucmVsaWFibGVcbiAgICAgICAgY29uc3QgZXhwb3NlZENoZWNrc3VtID0gISgoX2EgPSBvcHRzLnVuc3RhYmxlUGFja2FnZXMpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5oYXMobG9jYXRvci5sb2NhdG9ySGFzaCkpXG4gICAgICAgICAgICA/IGNoZWNrc3VtXG4gICAgICAgICAgICA6IG51bGw7XG4gICAgICAgIHJldHVybiBbYWxpYXNGcywgcmVsZWFzZUZzLCBleHBvc2VkQ2hlY2tzdW1dO1xuICAgIH1cbn1cbmV4cG9ydHMuQ2FjaGUgPSBDYWNoZTtcbmZ1bmN0aW9uIGdldENhY2hlS2V5Q29tcG9uZW50KGNoZWNrc3VtKSB7XG4gICAgY29uc3Qgc3BsaXQgPSBjaGVja3N1bS5pbmRleE9mKGAvYCk7XG4gICAgcmV0dXJuIHNwbGl0ICE9PSAtMSA/IGNoZWNrc3VtLnNsaWNlKDAsIHNwbGl0KSA6IG51bGw7XG59XG5mdW5jdGlvbiBnZXRIYXNoQ29tcG9uZW50KGNoZWNrc3VtKSB7XG4gICAgY29uc3Qgc3BsaXQgPSBjaGVja3N1bS5pbmRleE9mKGAvYCk7XG4gICAgcmV0dXJuIHNwbGl0ICE9PSAtMSA/IGNoZWNrc3VtLnNsaWNlKHNwbGl0ICsgMSkgOiBjaGVja3N1bTtcbn1cbiIsICJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuQnVpbGRUeXBlID0gdm9pZCAwO1xudmFyIEJ1aWxkVHlwZTtcbihmdW5jdGlvbiAoQnVpbGRUeXBlKSB7XG4gICAgQnVpbGRUeXBlW0J1aWxkVHlwZVtcIlNDUklQVFwiXSA9IDBdID0gXCJTQ1JJUFRcIjtcbiAgICBCdWlsZFR5cGVbQnVpbGRUeXBlW1wiU0hFTExDT0RFXCJdID0gMV0gPSBcIlNIRUxMQ09ERVwiO1xufSkoQnVpbGRUeXBlID0gZXhwb3J0cy5CdWlsZFR5cGUgfHwgKGV4cG9ydHMuQnVpbGRUeXBlID0ge30pKTtcbiIsICJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuTGVnYWN5TWlncmF0aW9uUmVzb2x2ZXIgPSBleHBvcnRzLklNUE9SVEVEX1BBVFRFUk5TID0gdm9pZCAwO1xuY29uc3QgdHNsaWJfMSA9IHJlcXVpcmUoXCJ0c2xpYlwiKTtcbmNvbnN0IGZzbGliXzEgPSByZXF1aXJlKFwiQHlhcm5wa2cvZnNsaWJcIik7XG5jb25zdCBwYXJzZXJzXzEgPSByZXF1aXJlKFwiQHlhcm5wa2cvcGFyc2Vyc1wiKTtcbmNvbnN0IE1lc3NhZ2VOYW1lXzEgPSByZXF1aXJlKFwiLi9NZXNzYWdlTmFtZVwiKTtcbmNvbnN0IHNlbXZlclV0aWxzID0gdHNsaWJfMS5fX2ltcG9ydFN0YXIocmVxdWlyZShcIi4vc2VtdmVyVXRpbHNcIikpO1xuY29uc3Qgc3RydWN0VXRpbHMgPSB0c2xpYl8xLl9faW1wb3J0U3RhcihyZXF1aXJlKFwiLi9zdHJ1Y3RVdGlsc1wiKSk7XG5leHBvcnRzLklNUE9SVEVEX1BBVFRFUk5TID0gW1xuICAgIC8vIFRoZXNlIG9uZXMgY29tZSBmcm9tIEdpdCB1cmxzXG4gICAgWy9eKGdpdCg/OlxcKyg/Omh0dHBzfHNzaCkpPzpcXC9cXC8uKig/OlxcLmdpdCk/KSMoLiopJC8sICh2ZXJzaW9uLCAkMCwgJDEsICQyKSA9PiBgJHskMX0jY29tbWl0PSR7JDJ9YF0sXG4gICAgLy8gVGhlc2Ugb25lcyBjb21lIGZyb20gdGhlIEdpdEh1YiBIVFRQIGVuZHBvaW50c1xuICAgIFsvXmh0dHBzOlxcL1xcLygoPzpbXi9dKz8pQCk/Y29kZWxvYWRcXC5naXRodWJcXC5jb21cXC8oW14vXStcXC9bXi9dKylcXC90YXJcXC5nelxcLyhbMC05YS1mXSspJC8sICh2ZXJzaW9uLCAkMCwgJDEgPSBgYCwgJDIsICQzKSA9PiBgaHR0cHM6Ly8keyQxfWdpdGh1Yi5jb20vJHskMn0uZ2l0I2NvbW1pdD0keyQzfWBdLFxuICAgIFsvXmh0dHBzOlxcL1xcLygoPzpbXi9dKz8pQCk/Z2l0aHViXFwuY29tXFwvKFteL10rXFwvW14vXSs/KSg/OlxcLmdpdCk/IyhbMC05YS1mXSspJC8sICh2ZXJzaW9uLCAkMCwgJDEgPSBgYCwgJDIsICQzKSA9PiBgaHR0cHM6Ly8keyQxfWdpdGh1Yi5jb20vJHskMn0uZ2l0I2NvbW1pdD0keyQzfWBdLFxuICAgIC8vIFRoZXNlIG9uZXMgY29tZSBmcm9tIHRoZSBucG0gcmVnaXN0cnlcbiAgICAvLyBOb3RlOiAvZG93bmxvYWQvIGlzIHVzZWQgYnkgY3VzdG9tIHJlZ2lzdHJpZXMgbGlrZSBUYW9iYW9cbiAgICBbL15odHRwcz86XFwvXFwvW14vXStcXC8oPzpbXi9dK1xcLykqKD86QC4rKD86XFwvfCg/OiUyZikpKT8oW14vXSspXFwvKD86LXxkb3dubG9hZClcXC9cXDEtW14vXStcXC50Z3ooPzojfCQpLywgdmVyc2lvbiA9PiBgbnBtOiR7dmVyc2lvbn1gXSxcbiAgICAvLyBUaGUgR2l0SHViIHBhY2thZ2UgcmVnaXN0cnkgdXNlcyBhIGRpZmZlcmVudCBzdHlsZSBvZiBVUkxzXG4gICAgWy9eaHR0cHM6XFwvXFwvbnBtXFwucGtnXFwuZ2l0aHViXFwuY29tXFwvZG93bmxvYWRcXC8oPzpAW14vXSspXFwvKD86W14vXSspXFwvKD86W14vXSspXFwvKD86WzAtOWEtZl0rKSg/OiN8JCkvLCB2ZXJzaW9uID0+IGBucG06JHt2ZXJzaW9ufWBdLFxuICAgIC8vIEZvbnRBd2Vzb21lIHRvbzsgd2hhdCBpcyBpdCB3aXRoIHRoZXNlIHJlZ2lzdHJpZXMgdGhhdCBtYWRlIHRoZW0gdGhpbmsgdXNpbmcgYSBkaWZmZXJlbnQgdXJsIHBhdHRlcm4gd2FzIGEgZ29vZCBpZGVhP1xuICAgIFsvXmh0dHBzOlxcL1xcL25wbVxcLmZvbnRhd2Vzb21lXFwuY29tXFwvKD86QFteL10rKVxcLyhbXi9dKylcXC8tXFwvKFteL10rKVxcL1xcMS1cXDIudGd6KD86I3wkKS8sIHZlcnNpb24gPT4gYG5wbToke3ZlcnNpb259YF0sXG4gICAgLy8gSkZyb2csIG9yIEFydGlmYWN0b3J5IGRlcGxveW1lbnRzIGF0IGFyYml0cmFyeSBkb21haW4gbmFtZXNcbiAgICBbL15odHRwcz86XFwvXFwvW14vXStcXC8uKlxcLyhAW14vXSspXFwvKFteL10rKVxcLy1cXC9cXDFcXC9cXDItKD86Wy5cXGRcXHctXSspXFwudGd6KD86I3wkKS8sICh2ZXJzaW9uLCAkMCkgPT4gc3RydWN0VXRpbHMubWFrZVJhbmdlKHsgcHJvdG9jb2w6IGBucG06YCwgc291cmNlOiBudWxsLCBzZWxlY3RvcjogdmVyc2lvbiwgcGFyYW1zOiB7IF9fYXJjaGl2ZVVybDogJDAgfSB9KV0sXG4gICAgLy8gVGhlc2Ugb25lcyBjb21lIGZyb20gdGhlIG9sZCBZYXJuIG9mZmxpbmUgbWlycm9yIC0gd2UgYXNzdW1lIHRoZXkgY2FtZSBmcm9tIG5wbVxuICAgIFsvXlteL10rXFwudGd6I1swLTlhLWZdKyQvLCB2ZXJzaW9uID0+IGBucG06JHt2ZXJzaW9ufWBdLFxuXTtcbmNsYXNzIExlZ2FjeU1pZ3JhdGlvblJlc29sdmVyIHtcbiAgICBjb25zdHJ1Y3RvcihyZXNvbHZlcikge1xuICAgICAgICB0aGlzLnJlc29sdmVyID0gcmVzb2x2ZXI7XG4gICAgICAgIHRoaXMucmVzb2x1dGlvbnMgPSBudWxsO1xuICAgIH1cbiAgICBhc3luYyBzZXR1cChwcm9qZWN0LCB7IHJlcG9ydCB9KSB7XG4gICAgICAgIGNvbnN0IGxvY2tmaWxlUGF0aCA9IGZzbGliXzEucHBhdGguam9pbihwcm9qZWN0LmN3ZCwgcHJvamVjdC5jb25maWd1cmF0aW9uLmdldChgbG9ja2ZpbGVGaWxlbmFtZWApKTtcbiAgICAgICAgLy8gTm8gbmVlZCB0byBlbmFibGUgaXQgaWYgdGhlIGxvY2tmaWxlIGRvZXNuJ3QgZXhpc3RcbiAgICAgICAgaWYgKCFmc2xpYl8xLnhmcy5leGlzdHNTeW5jKGxvY2tmaWxlUGF0aCkpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNvbnN0IGNvbnRlbnQgPSBhd2FpdCBmc2xpYl8xLnhmcy5yZWFkRmlsZVByb21pc2UobG9ja2ZpbGVQYXRoLCBgdXRmOGApO1xuICAgICAgICBjb25zdCBwYXJzZWQgPSAoMCwgcGFyc2Vyc18xLnBhcnNlU3ltbCkoY29udGVudCk7XG4gICAgICAgIC8vIE5vIG5lZWQgdG8gZW5hYmxlIGl0IGVpdGhlciBpZiB0aGUgbG9ja2ZpbGUgaXMgbW9kZXJuXG4gICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocGFyc2VkLCBgX19tZXRhZGF0YWApKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjb25zdCByZXNvbHV0aW9ucyA9IHRoaXMucmVzb2x1dGlvbnMgPSBuZXcgTWFwKCk7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHBhcnNlZCkpIHtcbiAgICAgICAgICAgIGNvbnN0IHBhcnNlZERlc2NyaXB0b3IgPSBzdHJ1Y3RVdGlscy50cnlQYXJzZURlc2NyaXB0b3Ioa2V5KTtcbiAgICAgICAgICAgIGlmICghcGFyc2VkRGVzY3JpcHRvcikge1xuICAgICAgICAgICAgICAgIHJlcG9ydC5yZXBvcnRXYXJuaW5nKE1lc3NhZ2VOYW1lXzEuTWVzc2FnZU5hbWUuWUFSTl9JTVBPUlRfRkFJTEVELCBgRmFpbGVkIHRvIHBhcnNlIHRoZSBzdHJpbmcgXCIke2tleX1cIiBpbnRvIGEgcHJvcGVyIGRlc2NyaXB0b3JgKTtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBzZW12ZXJVdGlscy52YWxpZFJhbmdlKHBhcnNlZERlc2NyaXB0b3IucmFuZ2UpXG4gICAgICAgICAgICAgICAgPyBzdHJ1Y3RVdGlscy5tYWtlRGVzY3JpcHRvcihwYXJzZWREZXNjcmlwdG9yLCBgbnBtOiR7cGFyc2VkRGVzY3JpcHRvci5yYW5nZX1gKVxuICAgICAgICAgICAgICAgIDogcGFyc2VkRGVzY3JpcHRvcjtcbiAgICAgICAgICAgIGNvbnN0IHsgdmVyc2lvbiwgcmVzb2x2ZWQgfSA9IHBhcnNlZFtrZXldO1xuICAgICAgICAgICAgLy8gV29ya3NwYWNlcyBkb24ndCBoYXZlIHRoZSBcInJlc29sdmVkXCIga2V5OyB3ZSBjYW4gc2tpcCB0aGVtLCBhcyB0aGVpclxuICAgICAgICAgICAgLy8gcmVzb2x1dGlvbiB3aWxsIGJlIHJlY29tcHV0ZWQgd2hlbiBuZWVkZWQgYW55d2F5XG4gICAgICAgICAgICBpZiAoIXJlc29sdmVkKVxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgbGV0IHJlZmVyZW5jZTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgW3BhdHRlcm4sIG1hdGNoZXJdIG9mIGV4cG9ydHMuSU1QT1JURURfUEFUVEVSTlMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBtYXRjaCA9IHJlc29sdmVkLm1hdGNoKHBhdHRlcm4pO1xuICAgICAgICAgICAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2UgPSBtYXRjaGVyKHZlcnNpb24sIC4uLm1hdGNoKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFyZWZlcmVuY2UpIHtcbiAgICAgICAgICAgICAgICByZXBvcnQucmVwb3J0V2FybmluZyhNZXNzYWdlTmFtZV8xLk1lc3NhZ2VOYW1lLllBUk5fSU1QT1JUX0ZBSUxFRCwgYCR7c3RydWN0VXRpbHMucHJldHR5RGVzY3JpcHRvcihwcm9qZWN0LmNvbmZpZ3VyYXRpb24sIGRlc2NyaXB0b3IpfTogT25seSBzb21lIHBhdHRlcm5zIGNhbiBiZSBpbXBvcnRlZCBmcm9tIGxlZ2FjeSBsb2NrZmlsZXMgKG5vdCBcIiR7cmVzb2x2ZWR9XCIpYCk7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBJZiB0aGUgcmFuZ2UgaXMgYSB2YWxpZCBkZXNjcmlwdG9yIHdlJ3JlIGRlYWxpbmcgd2l0aCBhbiBhbGlhcyAoXCJmb29cIjogXCJucG06bG9kYXNoQCpcIilcbiAgICAgICAgICAgIC8vIGFuZCBuZWVkIHRvIG1ha2UgdGhlIGxvY2F0b3IgZnJvbSB0aGF0IGluc3RlYWQgb2YgdGhlIG9yaWdpbmFsIGRlc2NyaXB0b3JcbiAgICAgICAgICAgIGxldCBhY3R1YWxEZXNjcmlwdG9yID0gZGVzY3JpcHRvcjtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcGFyc2VkUmFuZ2UgPSBzdHJ1Y3RVdGlscy5wYXJzZVJhbmdlKGRlc2NyaXB0b3IucmFuZ2UpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHBvdGVudGlhbERlc2NyaXB0b3IgPSBzdHJ1Y3RVdGlscy50cnlQYXJzZURlc2NyaXB0b3IocGFyc2VkUmFuZ2Uuc2VsZWN0b3IsIHRydWUpO1xuICAgICAgICAgICAgICAgIGlmIChwb3RlbnRpYWxEZXNjcmlwdG9yKSB7XG4gICAgICAgICAgICAgICAgICAgIGFjdHVhbERlc2NyaXB0b3IgPSBwb3RlbnRpYWxEZXNjcmlwdG9yO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIHsgfVxuICAgICAgICAgICAgcmVzb2x1dGlvbnMuc2V0KGRlc2NyaXB0b3IuZGVzY3JpcHRvckhhc2gsIHN0cnVjdFV0aWxzLm1ha2VMb2NhdG9yKGFjdHVhbERlc2NyaXB0b3IsIHJlZmVyZW5jZSkpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHN1cHBvcnRzRGVzY3JpcHRvcihkZXNjcmlwdG9yLCBvcHRzKSB7XG4gICAgICAgIGlmICghdGhpcy5yZXNvbHV0aW9ucylcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVzb2x1dGlvbnMuaGFzKGRlc2NyaXB0b3IuZGVzY3JpcHRvckhhc2gpO1xuICAgIH1cbiAgICBzdXBwb3J0c0xvY2F0b3IobG9jYXRvciwgb3B0cykge1xuICAgICAgICAvLyBUaGlzIHJlc29sdmVyIG9ubHkgc3VwcG9ydHMgdGhlIGRlc2NyaXB0b3IgLT4gbG9jYXRvciBwYXJ0IG9mIHRoZVxuICAgICAgICAvLyByZXNvbHV0aW9uLCBub3QgdGhlIGxvY2F0b3IgLT4gcGFja2FnZSBvbmUuXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgc2hvdWxkUGVyc2lzdFJlc29sdXRpb24obG9jYXRvciwgb3B0cykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEFzc2VydGlvbiBmYWlsZWQ6IFRoaXMgcmVzb2x2ZXIgZG9lc24ndCBzdXBwb3J0IHJlc29sdmluZyBsb2NhdG9ycyB0byBwYWNrYWdlc2ApO1xuICAgIH1cbiAgICBiaW5kRGVzY3JpcHRvcihkZXNjcmlwdG9yLCBmcm9tTG9jYXRvciwgb3B0cykge1xuICAgICAgICByZXR1cm4gZGVzY3JpcHRvcjtcbiAgICB9XG4gICAgZ2V0UmVzb2x1dGlvbkRlcGVuZGVuY2llcyhkZXNjcmlwdG9yLCBvcHRzKSB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICB9XG4gICAgYXN5bmMgZ2V0Q2FuZGlkYXRlcyhkZXNjcmlwdG9yLCBkZXBlbmRlbmNpZXMsIG9wdHMpIHtcbiAgICAgICAgaWYgKCF0aGlzLnJlc29sdXRpb25zKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBBc3NlcnRpb24gZmFpbGVkOiBUaGUgcmVzb2x1dGlvbiBzdG9yZSBzaG91bGQgaGF2ZSBiZWVuIHNldHVwYCk7XG4gICAgICAgIGNvbnN0IHJlc29sdXRpb24gPSB0aGlzLnJlc29sdXRpb25zLmdldChkZXNjcmlwdG9yLmRlc2NyaXB0b3JIYXNoKTtcbiAgICAgICAgaWYgKCFyZXNvbHV0aW9uKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBBc3NlcnRpb24gZmFpbGVkOiBUaGUgcmVzb2x1dGlvbiBzaG91bGQgaGF2ZSBiZWVuIHJlZ2lzdGVyZWRgKTtcbiAgICAgICAgY29uc3QgaW1wb3J0ZWREZXNjcmlwdG9yID0gc3RydWN0VXRpbHMuY29udmVydExvY2F0b3JUb0Rlc2NyaXB0b3IocmVzb2x1dGlvbik7XG4gICAgICAgIGNvbnN0IG5vcm1hbGl6ZWREZXNjcmlwdG9yID0gb3B0cy5wcm9qZWN0LmNvbmZpZ3VyYXRpb24ubm9ybWFsaXplRGVwZW5kZW5jeShpbXBvcnRlZERlc2NyaXB0b3IpO1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5yZXNvbHZlci5nZXRDYW5kaWRhdGVzKG5vcm1hbGl6ZWREZXNjcmlwdG9yLCBkZXBlbmRlbmNpZXMsIG9wdHMpO1xuICAgIH1cbiAgICBhc3luYyBnZXRTYXRpc2Z5aW5nKGRlc2NyaXB0b3IsIGRlcGVuZGVuY2llcywgbG9jYXRvcnMsIG9wdHMpIHtcbiAgICAgICAgY29uc3QgW2xvY2F0b3JdID0gYXdhaXQgdGhpcy5nZXRDYW5kaWRhdGVzKGRlc2NyaXB0b3IsIGRlcGVuZGVuY2llcywgb3B0cyk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBsb2NhdG9yczogbG9jYXRvcnMuZmlsdGVyKGNhbmRpZGF0ZSA9PiBjYW5kaWRhdGUubG9jYXRvckhhc2ggPT09IGxvY2F0b3IubG9jYXRvckhhc2gpLFxuICAgICAgICAgICAgc29ydGVkOiBmYWxzZSxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgYXN5bmMgcmVzb2x2ZShsb2NhdG9yLCBvcHRzKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQXNzZXJ0aW9uIGZhaWxlZDogVGhpcyByZXNvbHZlciBkb2Vzbid0IHN1cHBvcnQgcmVzb2x2aW5nIGxvY2F0b3JzIHRvIHBhY2thZ2VzYCk7XG4gICAgfVxufVxuZXhwb3J0cy5MZWdhY3lNaWdyYXRpb25SZXNvbHZlciA9IExlZ2FjeU1pZ3JhdGlvblJlc29sdmVyO1xuIiwgIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5MaWdodFJlcG9ydCA9IHZvaWQgMDtcbmNvbnN0IHRzbGliXzEgPSByZXF1aXJlKFwidHNsaWJcIik7XG5jb25zdCBSZXBvcnRfMSA9IHJlcXVpcmUoXCIuL1JlcG9ydFwiKTtcbmNvbnN0IFN0cmVhbVJlcG9ydF8xID0gcmVxdWlyZShcIi4vU3RyZWFtUmVwb3J0XCIpO1xuY29uc3QgZm9ybWF0VXRpbHMgPSB0c2xpYl8xLl9faW1wb3J0U3RhcihyZXF1aXJlKFwiLi9mb3JtYXRVdGlsc1wiKSk7XG5jbGFzcyBMaWdodFJlcG9ydCBleHRlbmRzIFJlcG9ydF8xLlJlcG9ydCB7XG4gICAgc3RhdGljIGFzeW5jIHN0YXJ0KG9wdHMsIGNiKSB7XG4gICAgICAgIGNvbnN0IHJlcG9ydCA9IG5ldyB0aGlzKG9wdHMpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgYXdhaXQgY2IocmVwb3J0KTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIHJlcG9ydC5yZXBvcnRFeGNlcHRpb25PbmNlKGVycm9yKTtcbiAgICAgICAgfVxuICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgIGF3YWl0IHJlcG9ydC5maW5hbGl6ZSgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXBvcnQ7XG4gICAgfVxuICAgIGNvbnN0cnVjdG9yKHsgY29uZmlndXJhdGlvbiwgc3Rkb3V0LCBzdWdnZXN0SW5zdGFsbCA9IHRydWUgfSkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLmVycm9yQ291bnQgPSAwO1xuICAgICAgICBmb3JtYXRVdGlscy5hZGRMb2dGaWx0ZXJTdXBwb3J0KHRoaXMsIHsgY29uZmlndXJhdGlvbiB9KTtcbiAgICAgICAgdGhpcy5jb25maWd1cmF0aW9uID0gY29uZmlndXJhdGlvbjtcbiAgICAgICAgdGhpcy5zdGRvdXQgPSBzdGRvdXQ7XG4gICAgICAgIHRoaXMuc3VnZ2VzdEluc3RhbGwgPSBzdWdnZXN0SW5zdGFsbDtcbiAgICB9XG4gICAgaGFzRXJyb3JzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5lcnJvckNvdW50ID4gMDtcbiAgICB9XG4gICAgZXhpdENvZGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmhhc0Vycm9ycygpID8gMSA6IDA7XG4gICAgfVxuICAgIHJlcG9ydENhY2hlSGl0KGxvY2F0b3IpIHtcbiAgICB9XG4gICAgcmVwb3J0Q2FjaGVNaXNzKGxvY2F0b3IpIHtcbiAgICB9XG4gICAgc3RhcnRTZWN0aW9uU3luYyhvcHRzLCBjYikge1xuICAgICAgICByZXR1cm4gY2IoKTtcbiAgICB9XG4gICAgYXN5bmMgc3RhcnRTZWN0aW9uUHJvbWlzZShvcHRzLCBjYikge1xuICAgICAgICByZXR1cm4gYXdhaXQgY2IoKTtcbiAgICB9XG4gICAgc3RhcnRUaW1lclN5bmMod2hhdCwgb3B0cywgY2IpIHtcbiAgICAgICAgY29uc3QgcmVhbENiID0gdHlwZW9mIG9wdHMgPT09IGBmdW5jdGlvbmAgPyBvcHRzIDogY2I7XG4gICAgICAgIHJldHVybiByZWFsQ2IoKTtcbiAgICB9XG4gICAgYXN5bmMgc3RhcnRUaW1lclByb21pc2Uod2hhdCwgb3B0cywgY2IpIHtcbiAgICAgICAgY29uc3QgcmVhbENiID0gdHlwZW9mIG9wdHMgPT09IGBmdW5jdGlvbmAgPyBvcHRzIDogY2I7XG4gICAgICAgIHJldHVybiBhd2FpdCByZWFsQ2IoKTtcbiAgICB9XG4gICAgYXN5bmMgc3RhcnRDYWNoZVJlcG9ydChjYikge1xuICAgICAgICByZXR1cm4gYXdhaXQgY2IoKTtcbiAgICB9XG4gICAgcmVwb3J0U2VwYXJhdG9yKCkge1xuICAgIH1cbiAgICByZXBvcnRJbmZvKG5hbWUsIHRleHQpIHtcbiAgICB9XG4gICAgcmVwb3J0V2FybmluZyhuYW1lLCB0ZXh0KSB7XG4gICAgfVxuICAgIHJlcG9ydEVycm9yKG5hbWUsIHRleHQpIHtcbiAgICAgICAgdGhpcy5lcnJvckNvdW50ICs9IDE7XG4gICAgICAgIHRoaXMuc3Rkb3V0LndyaXRlKGAke2Zvcm1hdFV0aWxzLnByZXR0eSh0aGlzLmNvbmZpZ3VyYXRpb24sIGBcdTI3QTRgLCBgcmVkQnJpZ2h0YCl9ICR7dGhpcy5mb3JtYXROYW1lV2l0aEh5cGVybGluayhuYW1lKX06ICR7dGV4dH1cXG5gKTtcbiAgICB9XG4gICAgcmVwb3J0UHJvZ3Jlc3MocHJvZ3Jlc3MpIHtcbiAgICAgICAgY29uc3QgcHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZSgpLnRoZW4oYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWVtcHR5LXBhdHRlcm5cbiAgICAgICAgICAgIGZvciBhd2FpdCAoY29uc3Qge30gb2YgcHJvZ3Jlc3MpIHtcbiAgICAgICAgICAgICAgICAvLyBObyBuZWVkIHRvIGRvIGFueXRoaW5nOyB3ZSBqdXN0IHdhbnQgdG8gY29uc3VtZSB0aGUgcHJvZ3Jlc3MgZXZlbnRzXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBzdG9wID0gKCkgPT4ge1xuICAgICAgICAgICAgLy8gTm90aGluZyB0byBzdG9wXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiB7IC4uLnByb21pc2UsIHN0b3AgfTtcbiAgICB9XG4gICAgcmVwb3J0SnNvbihkYXRhKSB7XG4gICAgICAgIC8vIEp1c3QgaWdub3JlIHRoZSBqc29uIG91dHB1dFxuICAgIH1cbiAgICBhc3luYyBmaW5hbGl6ZSgpIHtcbiAgICAgICAgaWYgKHRoaXMuZXJyb3JDb3VudCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMuc3Rkb3V0LndyaXRlKGBcXG5gKTtcbiAgICAgICAgICAgIHRoaXMuc3Rkb3V0LndyaXRlKGAke2Zvcm1hdFV0aWxzLnByZXR0eSh0aGlzLmNvbmZpZ3VyYXRpb24sIGBcdTI3QTRgLCBgcmVkQnJpZ2h0YCl9IEVycm9ycyBoYXBwZW5lZCB3aGVuIHByZXBhcmluZyB0aGUgZW52aXJvbm1lbnQgcmVxdWlyZWQgdG8gcnVuIHRoaXMgY29tbWFuZC5cXG5gKTtcbiAgICAgICAgICAgIGlmICh0aGlzLnN1Z2dlc3RJbnN0YWxsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGRvdXQud3JpdGUoYCR7Zm9ybWF0VXRpbHMucHJldHR5KHRoaXMuY29uZmlndXJhdGlvbiwgYFx1MjdBNGAsIGByZWRCcmlnaHRgKX0gVGhpcyBtaWdodCBiZSBjYXVzZWQgYnkgcGFja2FnZXMgYmVpbmcgbWlzc2luZyBmcm9tIHRoZSBsb2NrZmlsZSwgaW4gd2hpY2ggY2FzZSBydW5uaW5nIFwieWFybiBpbnN0YWxsXCIgbWlnaHQgaGVscC5cXG5gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBmb3JtYXROYW1lV2l0aEh5cGVybGluayhuYW1lKSB7XG4gICAgICAgIHJldHVybiAoMCwgU3RyZWFtUmVwb3J0XzEuZm9ybWF0TmFtZVdpdGhIeXBlcmxpbmspKG5hbWUsIHtcbiAgICAgICAgICAgIGNvbmZpZ3VyYXRpb246IHRoaXMuY29uZmlndXJhdGlvbixcbiAgICAgICAgICAgIGpzb246IGZhbHNlLFxuICAgICAgICB9KTtcbiAgICB9XG59XG5leHBvcnRzLkxpZ2h0UmVwb3J0ID0gTGlnaHRSZXBvcnQ7XG4iLCAiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLkxvY2tmaWxlUmVzb2x2ZXIgPSB2b2lkIDA7XG5jb25zdCB0c2xpYl8xID0gcmVxdWlyZShcInRzbGliXCIpO1xuY29uc3Qgc3RydWN0VXRpbHMgPSB0c2xpYl8xLl9faW1wb3J0U3RhcihyZXF1aXJlKFwiLi9zdHJ1Y3RVdGlsc1wiKSk7XG5jbGFzcyBMb2NrZmlsZVJlc29sdmVyIHtcbiAgICBjb25zdHJ1Y3RvcihyZXNvbHZlcikge1xuICAgICAgICB0aGlzLnJlc29sdmVyID0gcmVzb2x2ZXI7XG4gICAgfVxuICAgIHN1cHBvcnRzRGVzY3JpcHRvcihkZXNjcmlwdG9yLCBvcHRzKSB7XG4gICAgICAgIGNvbnN0IHJlc29sdXRpb24gPSBvcHRzLnByb2plY3Quc3RvcmVkUmVzb2x1dGlvbnMuZ2V0KGRlc2NyaXB0b3IuZGVzY3JpcHRvckhhc2gpO1xuICAgICAgICBpZiAocmVzb2x1dGlvbilcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAvLyBJZiB0aGUgZGVzY3JpcHRvciBtYXRjaGVzIGEgcGFja2FnZSB0aGF0J3MgYWxyZWFkeSBiZWVuIHVzZWQsIHdlIGNhbiBqdXN0IHVzZSBpdCBldmVuIGlmIHdlIG5ldmVyIHJlc29sdmVkIHRoZSByYW5nZSBiZWZvcmVcbiAgICAgICAgLy8gRXg6IGZvbyBkZXBlbmRzIG9uIGJhckBeMS4wLjAgdGhhdCB3ZSByZXNvbHZlZCB0byBmb29AMS4xLjAsIHRoZW4gd2UgYWRkIGEgcGFja2FnZSBxdXggdGhhdCBkZXBlbmRzIG9uIGZvb0AxLjEuMCAod2l0aG91dCB0aGUgY2FyZXQpXG4gICAgICAgIGlmIChvcHRzLnByb2plY3Qub3JpZ2luYWxQYWNrYWdlcy5oYXMoc3RydWN0VXRpbHMuY29udmVydERlc2NyaXB0b3JUb0xvY2F0b3IoZGVzY3JpcHRvcikubG9jYXRvckhhc2gpKVxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgc3VwcG9ydHNMb2NhdG9yKGxvY2F0b3IsIG9wdHMpIHtcbiAgICAgICAgaWYgKG9wdHMucHJvamVjdC5vcmlnaW5hbFBhY2thZ2VzLmhhcyhsb2NhdG9yLmxvY2F0b3JIYXNoKSAmJiAhb3B0cy5wcm9qZWN0LmxvY2tmaWxlTmVlZHNSZWZyZXNoKVxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgc2hvdWxkUGVyc2lzdFJlc29sdXRpb24obG9jYXRvciwgb3B0cykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSBzaG91bGRQZXJzaXN0UmVzb2x1dGlvbiBtZXRob2Qgc2hvdWxkbid0IGJlIGNhbGxlZCBvbiB0aGUgbG9ja2ZpbGUgcmVzb2x2ZXIsIHdoaWNoIHdvdWxkIGFsd2F5cyBhbnN3ZXIgeWVzYCk7XG4gICAgfVxuICAgIGJpbmREZXNjcmlwdG9yKGRlc2NyaXB0b3IsIGZyb21Mb2NhdG9yLCBvcHRzKSB7XG4gICAgICAgIHJldHVybiBkZXNjcmlwdG9yO1xuICAgIH1cbiAgICBnZXRSZXNvbHV0aW9uRGVwZW5kZW5jaWVzKGRlc2NyaXB0b3IsIG9wdHMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVzb2x2ZXIuZ2V0UmVzb2x1dGlvbkRlcGVuZGVuY2llcyhkZXNjcmlwdG9yLCBvcHRzKTtcbiAgICB9XG4gICAgYXN5bmMgZ2V0Q2FuZGlkYXRlcyhkZXNjcmlwdG9yLCBkZXBlbmRlbmNpZXMsIG9wdHMpIHtcbiAgICAgICAgY29uc3QgcmVzb2x1dGlvbiA9IG9wdHMucHJvamVjdC5zdG9yZWRSZXNvbHV0aW9ucy5nZXQoZGVzY3JpcHRvci5kZXNjcmlwdG9ySGFzaCk7XG4gICAgICAgIGlmIChyZXNvbHV0aW9uKSB7XG4gICAgICAgICAgICBjb25zdCByZXNvbHZlZFBrZyA9IG9wdHMucHJvamVjdC5vcmlnaW5hbFBhY2thZ2VzLmdldChyZXNvbHV0aW9uKTtcbiAgICAgICAgICAgIGlmIChyZXNvbHZlZFBrZykge1xuICAgICAgICAgICAgICAgIHJldHVybiBbcmVzb2x2ZWRQa2ddO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG9yaWdpbmFsUGtnID0gb3B0cy5wcm9qZWN0Lm9yaWdpbmFsUGFja2FnZXMuZ2V0KHN0cnVjdFV0aWxzLmNvbnZlcnREZXNjcmlwdG9yVG9Mb2NhdG9yKGRlc2NyaXB0b3IpLmxvY2F0b3JIYXNoKTtcbiAgICAgICAgaWYgKG9yaWdpbmFsUGtnKVxuICAgICAgICAgICAgcmV0dXJuIFtvcmlnaW5hbFBrZ107XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgUmVzb2x1dGlvbiBleHBlY3RlZCBmcm9tIHRoZSBsb2NrZmlsZSBkYXRhYCk7XG4gICAgfVxuICAgIGFzeW5jIGdldFNhdGlzZnlpbmcoZGVzY3JpcHRvciwgZGVwZW5kZW5jaWVzLCBsb2NhdG9ycywgb3B0cykge1xuICAgICAgICBjb25zdCBbbG9jYXRvcl0gPSBhd2FpdCB0aGlzLmdldENhbmRpZGF0ZXMoZGVzY3JpcHRvciwgZGVwZW5kZW5jaWVzLCBvcHRzKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGxvY2F0b3JzOiBsb2NhdG9ycy5maWx0ZXIoY2FuZGlkYXRlID0+IGNhbmRpZGF0ZS5sb2NhdG9ySGFzaCA9PT0gbG9jYXRvci5sb2NhdG9ySGFzaCksXG4gICAgICAgICAgICBzb3J0ZWQ6IGZhbHNlLFxuICAgICAgICB9O1xuICAgIH1cbiAgICBhc3luYyByZXNvbHZlKGxvY2F0b3IsIG9wdHMpIHtcbiAgICAgICAgY29uc3QgcGtnID0gb3B0cy5wcm9qZWN0Lm9yaWdpbmFsUGFja2FnZXMuZ2V0KGxvY2F0b3IubG9jYXRvckhhc2gpO1xuICAgICAgICBpZiAoIXBrZylcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVGhlIGxvY2tmaWxlIHJlc29sdmVyIGlzbid0IG1lYW50IHRvIHJlc29sdmUgcGFja2FnZXMgLSB0aGV5IHNob3VsZCBhbHJlYWR5IGhhdmUgYmVlbiBzdG9yZWQgaW50byBhIGNhY2hlYCk7XG4gICAgICAgIHJldHVybiBwa2c7XG4gICAgfVxufVxuZXhwb3J0cy5Mb2NrZmlsZVJlc29sdmVyID0gTG9ja2ZpbGVSZXNvbHZlcjtcbiIsICJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBEaWZmKCkge31cblxuRGlmZi5wcm90b3R5cGUgPSB7XG4gIGRpZmYob2xkU3RyaW5nLCBuZXdTdHJpbmcsIG9wdGlvbnMgPSB7fSkge1xuICAgIGxldCBjYWxsYmFjayA9IG9wdGlvbnMuY2FsbGJhY2s7XG4gICAgaWYgKHR5cGVvZiBvcHRpb25zID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBjYWxsYmFjayA9IG9wdGlvbnM7XG4gICAgICBvcHRpb25zID0ge307XG4gICAgfVxuICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG5cbiAgICBsZXQgc2VsZiA9IHRoaXM7XG5cbiAgICBmdW5jdGlvbiBkb25lKHZhbHVlKSB7XG4gICAgICBpZiAoY2FsbGJhY2spIHtcbiAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgY2FsbGJhY2sodW5kZWZpbmVkLCB2YWx1ZSk7IH0sIDApO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBBbGxvdyBzdWJjbGFzc2VzIHRvIG1hc3NhZ2UgdGhlIGlucHV0IHByaW9yIHRvIHJ1bm5pbmdcbiAgICBvbGRTdHJpbmcgPSB0aGlzLmNhc3RJbnB1dChvbGRTdHJpbmcpO1xuICAgIG5ld1N0cmluZyA9IHRoaXMuY2FzdElucHV0KG5ld1N0cmluZyk7XG5cbiAgICBvbGRTdHJpbmcgPSB0aGlzLnJlbW92ZUVtcHR5KHRoaXMudG9rZW5pemUob2xkU3RyaW5nKSk7XG4gICAgbmV3U3RyaW5nID0gdGhpcy5yZW1vdmVFbXB0eSh0aGlzLnRva2VuaXplKG5ld1N0cmluZykpO1xuXG4gICAgbGV0IG5ld0xlbiA9IG5ld1N0cmluZy5sZW5ndGgsIG9sZExlbiA9IG9sZFN0cmluZy5sZW5ndGg7XG4gICAgbGV0IGVkaXRMZW5ndGggPSAxO1xuICAgIGxldCBtYXhFZGl0TGVuZ3RoID0gbmV3TGVuICsgb2xkTGVuO1xuICAgIGlmKG9wdGlvbnMubWF4RWRpdExlbmd0aCkge1xuICAgICAgbWF4RWRpdExlbmd0aCA9IE1hdGgubWluKG1heEVkaXRMZW5ndGgsIG9wdGlvbnMubWF4RWRpdExlbmd0aCk7XG4gICAgfVxuXG4gICAgbGV0IGJlc3RQYXRoID0gW3sgbmV3UG9zOiAtMSwgY29tcG9uZW50czogW10gfV07XG5cbiAgICAvLyBTZWVkIGVkaXRMZW5ndGggPSAwLCBpLmUuIHRoZSBjb250ZW50IHN0YXJ0cyB3aXRoIHRoZSBzYW1lIHZhbHVlc1xuICAgIGxldCBvbGRQb3MgPSB0aGlzLmV4dHJhY3RDb21tb24oYmVzdFBhdGhbMF0sIG5ld1N0cmluZywgb2xkU3RyaW5nLCAwKTtcbiAgICBpZiAoYmVzdFBhdGhbMF0ubmV3UG9zICsgMSA+PSBuZXdMZW4gJiYgb2xkUG9zICsgMSA+PSBvbGRMZW4pIHtcbiAgICAgIC8vIElkZW50aXR5IHBlciB0aGUgZXF1YWxpdHkgYW5kIHRva2VuaXplclxuICAgICAgcmV0dXJuIGRvbmUoW3t2YWx1ZTogdGhpcy5qb2luKG5ld1N0cmluZyksIGNvdW50OiBuZXdTdHJpbmcubGVuZ3RofV0pO1xuICAgIH1cblxuICAgIC8vIE1haW4gd29ya2VyIG1ldGhvZC4gY2hlY2tzIGFsbCBwZXJtdXRhdGlvbnMgb2YgYSBnaXZlbiBlZGl0IGxlbmd0aCBmb3IgYWNjZXB0YW5jZS5cbiAgICBmdW5jdGlvbiBleGVjRWRpdExlbmd0aCgpIHtcbiAgICAgIGZvciAobGV0IGRpYWdvbmFsUGF0aCA9IC0xICogZWRpdExlbmd0aDsgZGlhZ29uYWxQYXRoIDw9IGVkaXRMZW5ndGg7IGRpYWdvbmFsUGF0aCArPSAyKSB7XG4gICAgICAgIGxldCBiYXNlUGF0aDtcbiAgICAgICAgbGV0IGFkZFBhdGggPSBiZXN0UGF0aFtkaWFnb25hbFBhdGggLSAxXSxcbiAgICAgICAgICAgIHJlbW92ZVBhdGggPSBiZXN0UGF0aFtkaWFnb25hbFBhdGggKyAxXSxcbiAgICAgICAgICAgIG9sZFBvcyA9IChyZW1vdmVQYXRoID8gcmVtb3ZlUGF0aC5uZXdQb3MgOiAwKSAtIGRpYWdvbmFsUGF0aDtcbiAgICAgICAgaWYgKGFkZFBhdGgpIHtcbiAgICAgICAgICAvLyBObyBvbmUgZWxzZSBpcyBnb2luZyB0byBhdHRlbXB0IHRvIHVzZSB0aGlzIHZhbHVlLCBjbGVhciBpdFxuICAgICAgICAgIGJlc3RQYXRoW2RpYWdvbmFsUGF0aCAtIDFdID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGNhbkFkZCA9IGFkZFBhdGggJiYgYWRkUGF0aC5uZXdQb3MgKyAxIDwgbmV3TGVuLFxuICAgICAgICAgICAgY2FuUmVtb3ZlID0gcmVtb3ZlUGF0aCAmJiAwIDw9IG9sZFBvcyAmJiBvbGRQb3MgPCBvbGRMZW47XG4gICAgICAgIGlmICghY2FuQWRkICYmICFjYW5SZW1vdmUpIHtcbiAgICAgICAgICAvLyBJZiB0aGlzIHBhdGggaXMgYSB0ZXJtaW5hbCB0aGVuIHBydW5lXG4gICAgICAgICAgYmVzdFBhdGhbZGlhZ29uYWxQYXRoXSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFNlbGVjdCB0aGUgZGlhZ29uYWwgdGhhdCB3ZSB3YW50IHRvIGJyYW5jaCBmcm9tLiBXZSBzZWxlY3QgdGhlIHByaW9yXG4gICAgICAgIC8vIHBhdGggd2hvc2UgcG9zaXRpb24gaW4gdGhlIG5ldyBzdHJpbmcgaXMgdGhlIGZhcnRoZXN0IGZyb20gdGhlIG9yaWdpblxuICAgICAgICAvLyBhbmQgZG9lcyBub3QgcGFzcyB0aGUgYm91bmRzIG9mIHRoZSBkaWZmIGdyYXBoXG4gICAgICAgIGlmICghY2FuQWRkIHx8IChjYW5SZW1vdmUgJiYgYWRkUGF0aC5uZXdQb3MgPCByZW1vdmVQYXRoLm5ld1BvcykpIHtcbiAgICAgICAgICBiYXNlUGF0aCA9IGNsb25lUGF0aChyZW1vdmVQYXRoKTtcbiAgICAgICAgICBzZWxmLnB1c2hDb21wb25lbnQoYmFzZVBhdGguY29tcG9uZW50cywgdW5kZWZpbmVkLCB0cnVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBiYXNlUGF0aCA9IGFkZFBhdGg7IC8vIE5vIG5lZWQgdG8gY2xvbmUsIHdlJ3ZlIHB1bGxlZCBpdCBmcm9tIHRoZSBsaXN0XG4gICAgICAgICAgYmFzZVBhdGgubmV3UG9zKys7XG4gICAgICAgICAgc2VsZi5wdXNoQ29tcG9uZW50KGJhc2VQYXRoLmNvbXBvbmVudHMsIHRydWUsIHVuZGVmaW5lZCk7XG4gICAgICAgIH1cblxuICAgICAgICBvbGRQb3MgPSBzZWxmLmV4dHJhY3RDb21tb24oYmFzZVBhdGgsIG5ld1N0cmluZywgb2xkU3RyaW5nLCBkaWFnb25hbFBhdGgpO1xuXG4gICAgICAgIC8vIElmIHdlIGhhdmUgaGl0IHRoZSBlbmQgb2YgYm90aCBzdHJpbmdzLCB0aGVuIHdlIGFyZSBkb25lXG4gICAgICAgIGlmIChiYXNlUGF0aC5uZXdQb3MgKyAxID49IG5ld0xlbiAmJiBvbGRQb3MgKyAxID49IG9sZExlbikge1xuICAgICAgICAgIHJldHVybiBkb25lKGJ1aWxkVmFsdWVzKHNlbGYsIGJhc2VQYXRoLmNvbXBvbmVudHMsIG5ld1N0cmluZywgb2xkU3RyaW5nLCBzZWxmLnVzZUxvbmdlc3RUb2tlbikpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIE90aGVyd2lzZSB0cmFjayB0aGlzIHBhdGggYXMgYSBwb3RlbnRpYWwgY2FuZGlkYXRlIGFuZCBjb250aW51ZS5cbiAgICAgICAgICBiZXN0UGF0aFtkaWFnb25hbFBhdGhdID0gYmFzZVBhdGg7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZWRpdExlbmd0aCsrO1xuICAgIH1cblxuICAgIC8vIFBlcmZvcm1zIHRoZSBsZW5ndGggb2YgZWRpdCBpdGVyYXRpb24uIElzIGEgYml0IGZ1Z2x5IGFzIHRoaXMgaGFzIHRvIHN1cHBvcnQgdGhlXG4gICAgLy8gc3luYyBhbmQgYXN5bmMgbW9kZSB3aGljaCBpcyBuZXZlciBmdW4uIExvb3BzIG92ZXIgZXhlY0VkaXRMZW5ndGggdW50aWwgYSB2YWx1ZVxuICAgIC8vIGlzIHByb2R1Y2VkLCBvciB1bnRpbCB0aGUgZWRpdCBsZW5ndGggZXhjZWVkcyBvcHRpb25zLm1heEVkaXRMZW5ndGggKGlmIGdpdmVuKSxcbiAgICAvLyBpbiB3aGljaCBjYXNlIGl0IHdpbGwgcmV0dXJuIHVuZGVmaW5lZC5cbiAgICBpZiAoY2FsbGJhY2spIHtcbiAgICAgIChmdW5jdGlvbiBleGVjKCkge1xuICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgICAgIGlmIChlZGl0TGVuZ3RoID4gbWF4RWRpdExlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKCFleGVjRWRpdExlbmd0aCgpKSB7XG4gICAgICAgICAgICBleGVjKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9LCAwKTtcbiAgICAgIH0oKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHdoaWxlIChlZGl0TGVuZ3RoIDw9IG1heEVkaXRMZW5ndGgpIHtcbiAgICAgICAgbGV0IHJldCA9IGV4ZWNFZGl0TGVuZ3RoKCk7XG4gICAgICAgIGlmIChyZXQpIHtcbiAgICAgICAgICByZXR1cm4gcmV0O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9LFxuXG4gIHB1c2hDb21wb25lbnQoY29tcG9uZW50cywgYWRkZWQsIHJlbW92ZWQpIHtcbiAgICBsZXQgbGFzdCA9IGNvbXBvbmVudHNbY29tcG9uZW50cy5sZW5ndGggLSAxXTtcbiAgICBpZiAobGFzdCAmJiBsYXN0LmFkZGVkID09PSBhZGRlZCAmJiBsYXN0LnJlbW92ZWQgPT09IHJlbW92ZWQpIHtcbiAgICAgIC8vIFdlIG5lZWQgdG8gY2xvbmUgaGVyZSBhcyB0aGUgY29tcG9uZW50IGNsb25lIG9wZXJhdGlvbiBpcyBqdXN0XG4gICAgICAvLyBhcyBzaGFsbG93IGFycmF5IGNsb25lXG4gICAgICBjb21wb25lbnRzW2NvbXBvbmVudHMubGVuZ3RoIC0gMV0gPSB7Y291bnQ6IGxhc3QuY291bnQgKyAxLCBhZGRlZDogYWRkZWQsIHJlbW92ZWQ6IHJlbW92ZWQgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29tcG9uZW50cy5wdXNoKHtjb3VudDogMSwgYWRkZWQ6IGFkZGVkLCByZW1vdmVkOiByZW1vdmVkIH0pO1xuICAgIH1cbiAgfSxcbiAgZXh0cmFjdENvbW1vbihiYXNlUGF0aCwgbmV3U3RyaW5nLCBvbGRTdHJpbmcsIGRpYWdvbmFsUGF0aCkge1xuICAgIGxldCBuZXdMZW4gPSBuZXdTdHJpbmcubGVuZ3RoLFxuICAgICAgICBvbGRMZW4gPSBvbGRTdHJpbmcubGVuZ3RoLFxuICAgICAgICBuZXdQb3MgPSBiYXNlUGF0aC5uZXdQb3MsXG4gICAgICAgIG9sZFBvcyA9IG5ld1BvcyAtIGRpYWdvbmFsUGF0aCxcblxuICAgICAgICBjb21tb25Db3VudCA9IDA7XG4gICAgd2hpbGUgKG5ld1BvcyArIDEgPCBuZXdMZW4gJiYgb2xkUG9zICsgMSA8IG9sZExlbiAmJiB0aGlzLmVxdWFscyhuZXdTdHJpbmdbbmV3UG9zICsgMV0sIG9sZFN0cmluZ1tvbGRQb3MgKyAxXSkpIHtcbiAgICAgIG5ld1BvcysrO1xuICAgICAgb2xkUG9zKys7XG4gICAgICBjb21tb25Db3VudCsrO1xuICAgIH1cblxuICAgIGlmIChjb21tb25Db3VudCkge1xuICAgICAgYmFzZVBhdGguY29tcG9uZW50cy5wdXNoKHtjb3VudDogY29tbW9uQ291bnR9KTtcbiAgICB9XG5cbiAgICBiYXNlUGF0aC5uZXdQb3MgPSBuZXdQb3M7XG4gICAgcmV0dXJuIG9sZFBvcztcbiAgfSxcblxuICBlcXVhbHMobGVmdCwgcmlnaHQpIHtcbiAgICBpZiAodGhpcy5vcHRpb25zLmNvbXBhcmF0b3IpIHtcbiAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMuY29tcGFyYXRvcihsZWZ0LCByaWdodCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBsZWZ0ID09PSByaWdodFxuICAgICAgICB8fCAodGhpcy5vcHRpb25zLmlnbm9yZUNhc2UgJiYgbGVmdC50b0xvd2VyQ2FzZSgpID09PSByaWdodC50b0xvd2VyQ2FzZSgpKTtcbiAgICB9XG4gIH0sXG4gIHJlbW92ZUVtcHR5KGFycmF5KSB7XG4gICAgbGV0IHJldCA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmIChhcnJheVtpXSkge1xuICAgICAgICByZXQucHVzaChhcnJheVtpXSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXQ7XG4gIH0sXG4gIGNhc3RJbnB1dCh2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfSxcbiAgdG9rZW5pemUodmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUuc3BsaXQoJycpO1xuICB9LFxuICBqb2luKGNoYXJzKSB7XG4gICAgcmV0dXJuIGNoYXJzLmpvaW4oJycpO1xuICB9XG59O1xuXG5mdW5jdGlvbiBidWlsZFZhbHVlcyhkaWZmLCBjb21wb25lbnRzLCBuZXdTdHJpbmcsIG9sZFN0cmluZywgdXNlTG9uZ2VzdFRva2VuKSB7XG4gIGxldCBjb21wb25lbnRQb3MgPSAwLFxuICAgICAgY29tcG9uZW50TGVuID0gY29tcG9uZW50cy5sZW5ndGgsXG4gICAgICBuZXdQb3MgPSAwLFxuICAgICAgb2xkUG9zID0gMDtcblxuICBmb3IgKDsgY29tcG9uZW50UG9zIDwgY29tcG9uZW50TGVuOyBjb21wb25lbnRQb3MrKykge1xuICAgIGxldCBjb21wb25lbnQgPSBjb21wb25lbnRzW2NvbXBvbmVudFBvc107XG4gICAgaWYgKCFjb21wb25lbnQucmVtb3ZlZCkge1xuICAgICAgaWYgKCFjb21wb25lbnQuYWRkZWQgJiYgdXNlTG9uZ2VzdFRva2VuKSB7XG4gICAgICAgIGxldCB2YWx1ZSA9IG5ld1N0cmluZy5zbGljZShuZXdQb3MsIG5ld1BvcyArIGNvbXBvbmVudC5jb3VudCk7XG4gICAgICAgIHZhbHVlID0gdmFsdWUubWFwKGZ1bmN0aW9uKHZhbHVlLCBpKSB7XG4gICAgICAgICAgbGV0IG9sZFZhbHVlID0gb2xkU3RyaW5nW29sZFBvcyArIGldO1xuICAgICAgICAgIHJldHVybiBvbGRWYWx1ZS5sZW5ndGggPiB2YWx1ZS5sZW5ndGggPyBvbGRWYWx1ZSA6IHZhbHVlO1xuICAgICAgICB9KTtcblxuICAgICAgICBjb21wb25lbnQudmFsdWUgPSBkaWZmLmpvaW4odmFsdWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29tcG9uZW50LnZhbHVlID0gZGlmZi5qb2luKG5ld1N0cmluZy5zbGljZShuZXdQb3MsIG5ld1BvcyArIGNvbXBvbmVudC5jb3VudCkpO1xuICAgICAgfVxuICAgICAgbmV3UG9zICs9IGNvbXBvbmVudC5jb3VudDtcblxuICAgICAgLy8gQ29tbW9uIGNhc2VcbiAgICAgIGlmICghY29tcG9uZW50LmFkZGVkKSB7XG4gICAgICAgIG9sZFBvcyArPSBjb21wb25lbnQuY291bnQ7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbXBvbmVudC52YWx1ZSA9IGRpZmYuam9pbihvbGRTdHJpbmcuc2xpY2Uob2xkUG9zLCBvbGRQb3MgKyBjb21wb25lbnQuY291bnQpKTtcbiAgICAgIG9sZFBvcyArPSBjb21wb25lbnQuY291bnQ7XG5cbiAgICAgIC8vIFJldmVyc2UgYWRkIGFuZCByZW1vdmUgc28gcmVtb3ZlcyBhcmUgb3V0cHV0IGZpcnN0IHRvIG1hdGNoIGNvbW1vbiBjb252ZW50aW9uXG4gICAgICAvLyBUaGUgZGlmZmluZyBhbGdvcml0aG0gaXMgdGllZCB0byBhZGQgdGhlbiByZW1vdmUgb3V0cHV0IGFuZCB0aGlzIGlzIHRoZSBzaW1wbGVzdFxuICAgICAgLy8gcm91dGUgdG8gZ2V0IHRoZSBkZXNpcmVkIG91dHB1dCB3aXRoIG1pbmltYWwgb3ZlcmhlYWQuXG4gICAgICBpZiAoY29tcG9uZW50UG9zICYmIGNvbXBvbmVudHNbY29tcG9uZW50UG9zIC0gMV0uYWRkZWQpIHtcbiAgICAgICAgbGV0IHRtcCA9IGNvbXBvbmVudHNbY29tcG9uZW50UG9zIC0gMV07XG4gICAgICAgIGNvbXBvbmVudHNbY29tcG9uZW50UG9zIC0gMV0gPSBjb21wb25lbnRzW2NvbXBvbmVudFBvc107XG4gICAgICAgIGNvbXBvbmVudHNbY29tcG9uZW50UG9zXSA9IHRtcDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBTcGVjaWFsIGNhc2UgaGFuZGxlIGZvciB3aGVuIG9uZSB0ZXJtaW5hbCBpcyBpZ25vcmVkIChpLmUuIHdoaXRlc3BhY2UpLlxuICAvLyBGb3IgdGhpcyBjYXNlIHdlIG1lcmdlIHRoZSB0ZXJtaW5hbCBpbnRvIHRoZSBwcmlvciBzdHJpbmcgYW5kIGRyb3AgdGhlIGNoYW5nZS5cbiAgLy8gVGhpcyBpcyBvbmx5IGF2YWlsYWJsZSBmb3Igc3RyaW5nIG1vZGUuXG4gIGxldCBsYXN0Q29tcG9uZW50ID0gY29tcG9uZW50c1tjb21wb25lbnRMZW4gLSAxXTtcbiAgaWYgKGNvbXBvbmVudExlbiA+IDFcbiAgICAgICYmIHR5cGVvZiBsYXN0Q29tcG9uZW50LnZhbHVlID09PSAnc3RyaW5nJ1xuICAgICAgJiYgKGxhc3RDb21wb25lbnQuYWRkZWQgfHwgbGFzdENvbXBvbmVudC5yZW1vdmVkKVxuICAgICAgJiYgZGlmZi5lcXVhbHMoJycsIGxhc3RDb21wb25lbnQudmFsdWUpKSB7XG4gICAgY29tcG9uZW50c1tjb21wb25lbnRMZW4gLSAyXS52YWx1ZSArPSBsYXN0Q29tcG9uZW50LnZhbHVlO1xuICAgIGNvbXBvbmVudHMucG9wKCk7XG4gIH1cblxuICByZXR1cm4gY29tcG9uZW50cztcbn1cblxuZnVuY3Rpb24gY2xvbmVQYXRoKHBhdGgpIHtcbiAgcmV0dXJuIHsgbmV3UG9zOiBwYXRoLm5ld1BvcywgY29tcG9uZW50czogcGF0aC5jb21wb25lbnRzLnNsaWNlKDApIH07XG59XG4iLCAiaW1wb3J0IERpZmYgZnJvbSAnLi9iYXNlJztcblxuZXhwb3J0IGNvbnN0IGNoYXJhY3RlckRpZmYgPSBuZXcgRGlmZigpO1xuZXhwb3J0IGZ1bmN0aW9uIGRpZmZDaGFycyhvbGRTdHIsIG5ld1N0ciwgb3B0aW9ucykgeyByZXR1cm4gY2hhcmFjdGVyRGlmZi5kaWZmKG9sZFN0ciwgbmV3U3RyLCBvcHRpb25zKTsgfVxuIiwgImV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZU9wdGlvbnMob3B0aW9ucywgZGVmYXVsdHMpIHtcbiAgaWYgKHR5cGVvZiBvcHRpb25zID09PSAnZnVuY3Rpb24nKSB7XG4gICAgZGVmYXVsdHMuY2FsbGJhY2sgPSBvcHRpb25zO1xuICB9IGVsc2UgaWYgKG9wdGlvbnMpIHtcbiAgICBmb3IgKGxldCBuYW1lIGluIG9wdGlvbnMpIHtcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICBpZiAob3B0aW9ucy5oYXNPd25Qcm9wZXJ0eShuYW1lKSkge1xuICAgICAgICBkZWZhdWx0c1tuYW1lXSA9IG9wdGlvbnNbbmFtZV07XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBkZWZhdWx0cztcbn1cbiIsICJpbXBvcnQgRGlmZiBmcm9tICcuL2Jhc2UnO1xuaW1wb3J0IHtnZW5lcmF0ZU9wdGlvbnN9IGZyb20gJy4uL3V0aWwvcGFyYW1zJztcblxuLy8gQmFzZWQgb24gaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTGF0aW5fc2NyaXB0X2luX1VuaWNvZGVcbi8vXG4vLyBSYW5nZXMgYW5kIGV4Y2VwdGlvbnM6XG4vLyBMYXRpbi0xIFN1cHBsZW1lbnQsIDAwODBcdTIwMTMwMEZGXG4vLyAgLSBVKzAwRDcgIFx1MDBENyBNdWx0aXBsaWNhdGlvbiBzaWduXG4vLyAgLSBVKzAwRjcgIFx1MDBGNyBEaXZpc2lvbiBzaWduXG4vLyBMYXRpbiBFeHRlbmRlZC1BLCAwMTAwXHUyMDEzMDE3RlxuLy8gTGF0aW4gRXh0ZW5kZWQtQiwgMDE4MFx1MjAxMzAyNEZcbi8vIElQQSBFeHRlbnNpb25zLCAwMjUwXHUyMDEzMDJBRlxuLy8gU3BhY2luZyBNb2RpZmllciBMZXR0ZXJzLCAwMkIwXHUyMDEzMDJGRlxuLy8gIC0gVSswMkM3ICBcdTAyQzcgJiM3MTE7ICBDYXJvblxuLy8gIC0gVSswMkQ4ICBcdTAyRDggJiM3Mjg7ICBCcmV2ZVxuLy8gIC0gVSswMkQ5ICBcdTAyRDkgJiM3Mjk7ICBEb3QgQWJvdmVcbi8vICAtIFUrMDJEQSAgXHUwMkRBICYjNzMwOyAgUmluZyBBYm92ZVxuLy8gIC0gVSswMkRCICBcdTAyREIgJiM3MzE7ICBPZ29uZWtcbi8vICAtIFUrMDJEQyAgXHUwMkRDICYjNzMyOyAgU21hbGwgVGlsZGVcbi8vICAtIFUrMDJERCAgXHUwMkREICYjNzMzOyAgRG91YmxlIEFjdXRlIEFjY2VudFxuLy8gTGF0aW4gRXh0ZW5kZWQgQWRkaXRpb25hbCwgMUUwMFx1MjAxMzFFRkZcbmNvbnN0IGV4dGVuZGVkV29yZENoYXJzID0gL15bYS16QS1aXFx1e0MwfS1cXHV7RkZ9XFx1e0Q4fS1cXHV7RjZ9XFx1e0Y4fS1cXHV7MkM2fVxcdXsyQzh9LVxcdXsyRDd9XFx1ezJERX0tXFx1ezJGRn1cXHV7MUUwMH0tXFx1ezFFRkZ9XSskL3U7XG5cbmNvbnN0IHJlV2hpdGVzcGFjZSA9IC9cXFMvO1xuXG5leHBvcnQgY29uc3Qgd29yZERpZmYgPSBuZXcgRGlmZigpO1xud29yZERpZmYuZXF1YWxzID0gZnVuY3Rpb24obGVmdCwgcmlnaHQpIHtcbiAgaWYgKHRoaXMub3B0aW9ucy5pZ25vcmVDYXNlKSB7XG4gICAgbGVmdCA9IGxlZnQudG9Mb3dlckNhc2UoKTtcbiAgICByaWdodCA9IHJpZ2h0LnRvTG93ZXJDYXNlKCk7XG4gIH1cbiAgcmV0dXJuIGxlZnQgPT09IHJpZ2h0IHx8ICh0aGlzLm9wdGlvbnMuaWdub3JlV2hpdGVzcGFjZSAmJiAhcmVXaGl0ZXNwYWNlLnRlc3QobGVmdCkgJiYgIXJlV2hpdGVzcGFjZS50ZXN0KHJpZ2h0KSk7XG59O1xud29yZERpZmYudG9rZW5pemUgPSBmdW5jdGlvbih2YWx1ZSkge1xuICAvLyBBbGwgd2hpdGVzcGFjZSBzeW1ib2xzIGV4Y2VwdCBuZXdsaW5lIGdyb3VwIGludG8gb25lIHRva2VuLCBlYWNoIG5ld2xpbmUgLSBpbiBzZXBhcmF0ZSB0b2tlblxuICBsZXQgdG9rZW5zID0gdmFsdWUuc3BsaXQoLyhbXlxcU1xcclxcbl0rfFsoKVtcXF17fSdcIlxcclxcbl18XFxiKS8pO1xuXG4gIC8vIEpvaW4gdGhlIGJvdW5kYXJ5IHNwbGl0cyB0aGF0IHdlIGRvIG5vdCBjb25zaWRlciB0byBiZSBib3VuZGFyaWVzLiBUaGlzIGlzIHByaW1hcmlseSB0aGUgZXh0ZW5kZWQgTGF0aW4gY2hhcmFjdGVyIHNldC5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCB0b2tlbnMubGVuZ3RoIC0gMTsgaSsrKSB7XG4gICAgLy8gSWYgd2UgaGF2ZSBhbiBlbXB0eSBzdHJpbmcgaW4gdGhlIG5leHQgZmllbGQgYW5kIHdlIGhhdmUgb25seSB3b3JkIGNoYXJzIGJlZm9yZSBhbmQgYWZ0ZXIsIG1lcmdlXG4gICAgaWYgKCF0b2tlbnNbaSArIDFdICYmIHRva2Vuc1tpICsgMl1cbiAgICAgICAgICAmJiBleHRlbmRlZFdvcmRDaGFycy50ZXN0KHRva2Vuc1tpXSlcbiAgICAgICAgICAmJiBleHRlbmRlZFdvcmRDaGFycy50ZXN0KHRva2Vuc1tpICsgMl0pKSB7XG4gICAgICB0b2tlbnNbaV0gKz0gdG9rZW5zW2kgKyAyXTtcbiAgICAgIHRva2Vucy5zcGxpY2UoaSArIDEsIDIpO1xuICAgICAgaS0tO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0b2tlbnM7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZGlmZldvcmRzKG9sZFN0ciwgbmV3U3RyLCBvcHRpb25zKSB7XG4gIG9wdGlvbnMgPSBnZW5lcmF0ZU9wdGlvbnMob3B0aW9ucywge2lnbm9yZVdoaXRlc3BhY2U6IHRydWV9KTtcbiAgcmV0dXJuIHdvcmREaWZmLmRpZmYob2xkU3RyLCBuZXdTdHIsIG9wdGlvbnMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGlmZldvcmRzV2l0aFNwYWNlKG9sZFN0ciwgbmV3U3RyLCBvcHRpb25zKSB7XG4gIHJldHVybiB3b3JkRGlmZi5kaWZmKG9sZFN0ciwgbmV3U3RyLCBvcHRpb25zKTtcbn1cbiIsICJpbXBvcnQgRGlmZiBmcm9tICcuL2Jhc2UnO1xuaW1wb3J0IHtnZW5lcmF0ZU9wdGlvbnN9IGZyb20gJy4uL3V0aWwvcGFyYW1zJztcblxuZXhwb3J0IGNvbnN0IGxpbmVEaWZmID0gbmV3IERpZmYoKTtcbmxpbmVEaWZmLnRva2VuaXplID0gZnVuY3Rpb24odmFsdWUpIHtcbiAgbGV0IHJldExpbmVzID0gW10sXG4gICAgICBsaW5lc0FuZE5ld2xpbmVzID0gdmFsdWUuc3BsaXQoLyhcXG58XFxyXFxuKS8pO1xuXG4gIC8vIElnbm9yZSB0aGUgZmluYWwgZW1wdHkgdG9rZW4gdGhhdCBvY2N1cnMgaWYgdGhlIHN0cmluZyBlbmRzIHdpdGggYSBuZXcgbGluZVxuICBpZiAoIWxpbmVzQW5kTmV3bGluZXNbbGluZXNBbmROZXdsaW5lcy5sZW5ndGggLSAxXSkge1xuICAgIGxpbmVzQW5kTmV3bGluZXMucG9wKCk7XG4gIH1cblxuICAvLyBNZXJnZSB0aGUgY29udGVudCBhbmQgbGluZSBzZXBhcmF0b3JzIGludG8gc2luZ2xlIHRva2Vuc1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGxpbmVzQW5kTmV3bGluZXMubGVuZ3RoOyBpKyspIHtcbiAgICBsZXQgbGluZSA9IGxpbmVzQW5kTmV3bGluZXNbaV07XG5cbiAgICBpZiAoaSAlIDIgJiYgIXRoaXMub3B0aW9ucy5uZXdsaW5lSXNUb2tlbikge1xuICAgICAgcmV0TGluZXNbcmV0TGluZXMubGVuZ3RoIC0gMV0gKz0gbGluZTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMub3B0aW9ucy5pZ25vcmVXaGl0ZXNwYWNlKSB7XG4gICAgICAgIGxpbmUgPSBsaW5lLnRyaW0oKTtcbiAgICAgIH1cbiAgICAgIHJldExpbmVzLnB1c2gobGluZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJldExpbmVzO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGRpZmZMaW5lcyhvbGRTdHIsIG5ld1N0ciwgY2FsbGJhY2spIHsgcmV0dXJuIGxpbmVEaWZmLmRpZmYob2xkU3RyLCBuZXdTdHIsIGNhbGxiYWNrKTsgfVxuZXhwb3J0IGZ1bmN0aW9uIGRpZmZUcmltbWVkTGluZXMob2xkU3RyLCBuZXdTdHIsIGNhbGxiYWNrKSB7XG4gIGxldCBvcHRpb25zID0gZ2VuZXJhdGVPcHRpb25zKGNhbGxiYWNrLCB7aWdub3JlV2hpdGVzcGFjZTogdHJ1ZX0pO1xuICByZXR1cm4gbGluZURpZmYuZGlmZihvbGRTdHIsIG5ld1N0ciwgb3B0aW9ucyk7XG59XG4iLCAiaW1wb3J0IERpZmYgZnJvbSAnLi9iYXNlJztcblxuXG5leHBvcnQgY29uc3Qgc2VudGVuY2VEaWZmID0gbmV3IERpZmYoKTtcbnNlbnRlbmNlRGlmZi50b2tlbml6ZSA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZS5zcGxpdCgvKFxcUy4rP1suIT9dKSg/PVxccyt8JCkvKTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBkaWZmU2VudGVuY2VzKG9sZFN0ciwgbmV3U3RyLCBjYWxsYmFjaykgeyByZXR1cm4gc2VudGVuY2VEaWZmLmRpZmYob2xkU3RyLCBuZXdTdHIsIGNhbGxiYWNrKTsgfVxuIiwgImltcG9ydCBEaWZmIGZyb20gJy4vYmFzZSc7XG5cbmV4cG9ydCBjb25zdCBjc3NEaWZmID0gbmV3IERpZmYoKTtcbmNzc0RpZmYudG9rZW5pemUgPSBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUuc3BsaXQoLyhbe306OyxdfFxccyspLyk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZGlmZkNzcyhvbGRTdHIsIG5ld1N0ciwgY2FsbGJhY2spIHsgcmV0dXJuIGNzc0RpZmYuZGlmZihvbGRTdHIsIG5ld1N0ciwgY2FsbGJhY2spOyB9XG4iLCAiaW1wb3J0IERpZmYgZnJvbSAnLi9iYXNlJztcbmltcG9ydCB7bGluZURpZmZ9IGZyb20gJy4vbGluZSc7XG5cbmNvbnN0IG9iamVjdFByb3RvdHlwZVRvU3RyaW5nID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztcblxuXG5leHBvcnQgY29uc3QganNvbkRpZmYgPSBuZXcgRGlmZigpO1xuLy8gRGlzY3JpbWluYXRlIGJldHdlZW4gdHdvIGxpbmVzIG9mIHByZXR0eS1wcmludGVkLCBzZXJpYWxpemVkIEpTT04gd2hlcmUgb25lIG9mIHRoZW0gaGFzIGFcbi8vIGRhbmdsaW5nIGNvbW1hIGFuZCB0aGUgb3RoZXIgZG9lc24ndC4gVHVybnMgb3V0IGluY2x1ZGluZyB0aGUgZGFuZ2xpbmcgY29tbWEgeWllbGRzIHRoZSBuaWNlc3Qgb3V0cHV0OlxuanNvbkRpZmYudXNlTG9uZ2VzdFRva2VuID0gdHJ1ZTtcblxuanNvbkRpZmYudG9rZW5pemUgPSBsaW5lRGlmZi50b2tlbml6ZTtcbmpzb25EaWZmLmNhc3RJbnB1dCA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIGNvbnN0IHt1bmRlZmluZWRSZXBsYWNlbWVudCwgc3RyaW5naWZ5UmVwbGFjZXIgPSAoaywgdikgPT4gdHlwZW9mIHYgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkUmVwbGFjZW1lbnQgOiB2fSA9IHRoaXMub3B0aW9ucztcblxuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyA/IHZhbHVlIDogSlNPTi5zdHJpbmdpZnkoY2Fub25pY2FsaXplKHZhbHVlLCBudWxsLCBudWxsLCBzdHJpbmdpZnlSZXBsYWNlciksIHN0cmluZ2lmeVJlcGxhY2VyLCAnICAnKTtcbn07XG5qc29uRGlmZi5lcXVhbHMgPSBmdW5jdGlvbihsZWZ0LCByaWdodCkge1xuICByZXR1cm4gRGlmZi5wcm90b3R5cGUuZXF1YWxzLmNhbGwoanNvbkRpZmYsIGxlZnQucmVwbGFjZSgvLChbXFxyXFxuXSkvZywgJyQxJyksIHJpZ2h0LnJlcGxhY2UoLywoW1xcclxcbl0pL2csICckMScpKTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBkaWZmSnNvbihvbGRPYmosIG5ld09iaiwgb3B0aW9ucykgeyByZXR1cm4ganNvbkRpZmYuZGlmZihvbGRPYmosIG5ld09iaiwgb3B0aW9ucyk7IH1cblxuLy8gVGhpcyBmdW5jdGlvbiBoYW5kbGVzIHRoZSBwcmVzZW5jZSBvZiBjaXJjdWxhciByZWZlcmVuY2VzIGJ5IGJhaWxpbmcgb3V0IHdoZW4gZW5jb3VudGVyaW5nIGFuXG4vLyBvYmplY3QgdGhhdCBpcyBhbHJlYWR5IG9uIHRoZSBcInN0YWNrXCIgb2YgaXRlbXMgYmVpbmcgcHJvY2Vzc2VkLiBBY2NlcHRzIGFuIG9wdGlvbmFsIHJlcGxhY2VyXG5leHBvcnQgZnVuY3Rpb24gY2Fub25pY2FsaXplKG9iaiwgc3RhY2ssIHJlcGxhY2VtZW50U3RhY2ssIHJlcGxhY2VyLCBrZXkpIHtcbiAgc3RhY2sgPSBzdGFjayB8fCBbXTtcbiAgcmVwbGFjZW1lbnRTdGFjayA9IHJlcGxhY2VtZW50U3RhY2sgfHwgW107XG5cbiAgaWYgKHJlcGxhY2VyKSB7XG4gICAgb2JqID0gcmVwbGFjZXIoa2V5LCBvYmopO1xuICB9XG5cbiAgbGV0IGk7XG5cbiAgZm9yIChpID0gMDsgaSA8IHN0YWNrLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgaWYgKHN0YWNrW2ldID09PSBvYmopIHtcbiAgICAgIHJldHVybiByZXBsYWNlbWVudFN0YWNrW2ldO1xuICAgIH1cbiAgfVxuXG4gIGxldCBjYW5vbmljYWxpemVkT2JqO1xuXG4gIGlmICgnW29iamVjdCBBcnJheV0nID09PSBvYmplY3RQcm90b3R5cGVUb1N0cmluZy5jYWxsKG9iaikpIHtcbiAgICBzdGFjay5wdXNoKG9iaik7XG4gICAgY2Fub25pY2FsaXplZE9iaiA9IG5ldyBBcnJheShvYmoubGVuZ3RoKTtcbiAgICByZXBsYWNlbWVudFN0YWNrLnB1c2goY2Fub25pY2FsaXplZE9iaik7XG4gICAgZm9yIChpID0gMDsgaSA8IG9iai5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgY2Fub25pY2FsaXplZE9ialtpXSA9IGNhbm9uaWNhbGl6ZShvYmpbaV0sIHN0YWNrLCByZXBsYWNlbWVudFN0YWNrLCByZXBsYWNlciwga2V5KTtcbiAgICB9XG4gICAgc3RhY2sucG9wKCk7XG4gICAgcmVwbGFjZW1lbnRTdGFjay5wb3AoKTtcbiAgICByZXR1cm4gY2Fub25pY2FsaXplZE9iajtcbiAgfVxuXG4gIGlmIChvYmogJiYgb2JqLnRvSlNPTikge1xuICAgIG9iaiA9IG9iai50b0pTT04oKTtcbiAgfVxuXG4gIGlmICh0eXBlb2Ygb2JqID09PSAnb2JqZWN0JyAmJiBvYmogIT09IG51bGwpIHtcbiAgICBzdGFjay5wdXNoKG9iaik7XG4gICAgY2Fub25pY2FsaXplZE9iaiA9IHt9O1xuICAgIHJlcGxhY2VtZW50U3RhY2sucHVzaChjYW5vbmljYWxpemVkT2JqKTtcbiAgICBsZXQgc29ydGVkS2V5cyA9IFtdLFxuICAgICAgICBrZXk7XG4gICAgZm9yIChrZXkgaW4gb2JqKSB7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgaWYgKG9iai5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgIHNvcnRlZEtleXMucHVzaChrZXkpO1xuICAgICAgfVxuICAgIH1cbiAgICBzb3J0ZWRLZXlzLnNvcnQoKTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgc29ydGVkS2V5cy5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAga2V5ID0gc29ydGVkS2V5c1tpXTtcbiAgICAgIGNhbm9uaWNhbGl6ZWRPYmpba2V5XSA9IGNhbm9uaWNhbGl6ZShvYmpba2V5XSwgc3RhY2ssIHJlcGxhY2VtZW50U3RhY2ssIHJlcGxhY2VyLCBrZXkpO1xuICAgIH1cbiAgICBzdGFjay5wb3AoKTtcbiAgICByZXBsYWNlbWVudFN0YWNrLnBvcCgpO1xuICB9IGVsc2Uge1xuICAgIGNhbm9uaWNhbGl6ZWRPYmogPSBvYmo7XG4gIH1cbiAgcmV0dXJuIGNhbm9uaWNhbGl6ZWRPYmo7XG59XG4iLCAiaW1wb3J0IERpZmYgZnJvbSAnLi9iYXNlJztcblxuZXhwb3J0IGNvbnN0IGFycmF5RGlmZiA9IG5ldyBEaWZmKCk7XG5hcnJheURpZmYudG9rZW5pemUgPSBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUuc2xpY2UoKTtcbn07XG5hcnJheURpZmYuam9pbiA9IGFycmF5RGlmZi5yZW1vdmVFbXB0eSA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBkaWZmQXJyYXlzKG9sZEFyciwgbmV3QXJyLCBjYWxsYmFjaykgeyByZXR1cm4gYXJyYXlEaWZmLmRpZmYob2xkQXJyLCBuZXdBcnIsIGNhbGxiYWNrKTsgfVxuIiwgImV4cG9ydCBmdW5jdGlvbiBwYXJzZVBhdGNoKHVuaURpZmYsIG9wdGlvbnMgPSB7fSkge1xuICBsZXQgZGlmZnN0ciA9IHVuaURpZmYuc3BsaXQoL1xcclxcbnxbXFxuXFx2XFxmXFxyXFx4ODVdLyksXG4gICAgICBkZWxpbWl0ZXJzID0gdW5pRGlmZi5tYXRjaCgvXFxyXFxufFtcXG5cXHZcXGZcXHJcXHg4NV0vZykgfHwgW10sXG4gICAgICBsaXN0ID0gW10sXG4gICAgICBpID0gMDtcblxuICBmdW5jdGlvbiBwYXJzZUluZGV4KCkge1xuICAgIGxldCBpbmRleCA9IHt9O1xuICAgIGxpc3QucHVzaChpbmRleCk7XG5cbiAgICAvLyBQYXJzZSBkaWZmIG1ldGFkYXRhXG4gICAgd2hpbGUgKGkgPCBkaWZmc3RyLmxlbmd0aCkge1xuICAgICAgbGV0IGxpbmUgPSBkaWZmc3RyW2ldO1xuXG4gICAgICAvLyBGaWxlIGhlYWRlciBmb3VuZCwgZW5kIHBhcnNpbmcgZGlmZiBtZXRhZGF0YVxuICAgICAgaWYgKCgvXihcXC1cXC1cXC18XFwrXFwrXFwrfEBAKVxccy8pLnRlc3QobGluZSkpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIC8vIERpZmYgaW5kZXhcbiAgICAgIGxldCBoZWFkZXIgPSAoL14oPzpJbmRleDp8ZGlmZig/OiAtciBcXHcrKSspXFxzKyguKz8pXFxzKiQvKS5leGVjKGxpbmUpO1xuICAgICAgaWYgKGhlYWRlcikge1xuICAgICAgICBpbmRleC5pbmRleCA9IGhlYWRlclsxXTtcbiAgICAgIH1cblxuICAgICAgaSsrO1xuICAgIH1cblxuICAgIC8vIFBhcnNlIGZpbGUgaGVhZGVycyBpZiB0aGV5IGFyZSBkZWZpbmVkLiBVbmlmaWVkIGRpZmYgcmVxdWlyZXMgdGhlbSwgYnV0XG4gICAgLy8gdGhlcmUncyBubyB0ZWNobmljYWwgaXNzdWVzIHRvIGhhdmUgYW4gaXNvbGF0ZWQgaHVuayB3aXRob3V0IGZpbGUgaGVhZGVyXG4gICAgcGFyc2VGaWxlSGVhZGVyKGluZGV4KTtcbiAgICBwYXJzZUZpbGVIZWFkZXIoaW5kZXgpO1xuXG4gICAgLy8gUGFyc2UgaHVua3NcbiAgICBpbmRleC5odW5rcyA9IFtdO1xuXG4gICAgd2hpbGUgKGkgPCBkaWZmc3RyLmxlbmd0aCkge1xuICAgICAgbGV0IGxpbmUgPSBkaWZmc3RyW2ldO1xuXG4gICAgICBpZiAoKC9eKEluZGV4OnxkaWZmfFxcLVxcLVxcLXxcXCtcXCtcXCspXFxzLykudGVzdChsaW5lKSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH0gZWxzZSBpZiAoKC9eQEAvKS50ZXN0KGxpbmUpKSB7XG4gICAgICAgIGluZGV4Lmh1bmtzLnB1c2gocGFyc2VIdW5rKCkpO1xuICAgICAgfSBlbHNlIGlmIChsaW5lICYmIG9wdGlvbnMuc3RyaWN0KSB7XG4gICAgICAgIC8vIElnbm9yZSB1bmV4cGVjdGVkIGNvbnRlbnQgdW5sZXNzIGluIHN0cmljdCBtb2RlXG4gICAgICAgIHRocm93IG5ldyBFcnJvcignVW5rbm93biBsaW5lICcgKyAoaSArIDEpICsgJyAnICsgSlNPTi5zdHJpbmdpZnkobGluZSkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaSsrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFBhcnNlcyB0aGUgLS0tIGFuZCArKysgaGVhZGVycywgaWYgbm9uZSBhcmUgZm91bmQsIG5vIGxpbmVzXG4gIC8vIGFyZSBjb25zdW1lZC5cbiAgZnVuY3Rpb24gcGFyc2VGaWxlSGVhZGVyKGluZGV4KSB7XG4gICAgY29uc3QgZmlsZUhlYWRlciA9ICgvXigtLS18XFwrXFwrXFwrKVxccysoLiopJC8pLmV4ZWMoZGlmZnN0cltpXSk7XG4gICAgaWYgKGZpbGVIZWFkZXIpIHtcbiAgICAgIGxldCBrZXlQcmVmaXggPSBmaWxlSGVhZGVyWzFdID09PSAnLS0tJyA/ICdvbGQnIDogJ25ldyc7XG4gICAgICBjb25zdCBkYXRhID0gZmlsZUhlYWRlclsyXS5zcGxpdCgnXFx0JywgMik7XG4gICAgICBsZXQgZmlsZU5hbWUgPSBkYXRhWzBdLnJlcGxhY2UoL1xcXFxcXFxcL2csICdcXFxcJyk7XG4gICAgICBpZiAoKC9eXCIuKlwiJC8pLnRlc3QoZmlsZU5hbWUpKSB7XG4gICAgICAgIGZpbGVOYW1lID0gZmlsZU5hbWUuc3Vic3RyKDEsIGZpbGVOYW1lLmxlbmd0aCAtIDIpO1xuICAgICAgfVxuICAgICAgaW5kZXhba2V5UHJlZml4ICsgJ0ZpbGVOYW1lJ10gPSBmaWxlTmFtZTtcbiAgICAgIGluZGV4W2tleVByZWZpeCArICdIZWFkZXInXSA9IChkYXRhWzFdIHx8ICcnKS50cmltKCk7XG5cbiAgICAgIGkrKztcbiAgICB9XG4gIH1cblxuICAvLyBQYXJzZXMgYSBodW5rXG4gIC8vIFRoaXMgYXNzdW1lcyB0aGF0IHdlIGFyZSBhdCB0aGUgc3RhcnQgb2YgYSBodW5rLlxuICBmdW5jdGlvbiBwYXJzZUh1bmsoKSB7XG4gICAgbGV0IGNodW5rSGVhZGVySW5kZXggPSBpLFxuICAgICAgICBjaHVua0hlYWRlckxpbmUgPSBkaWZmc3RyW2krK10sXG4gICAgICAgIGNodW5rSGVhZGVyID0gY2h1bmtIZWFkZXJMaW5lLnNwbGl0KC9AQCAtKFxcZCspKD86LChcXGQrKSk/IFxcKyhcXGQrKSg/OiwoXFxkKykpPyBAQC8pO1xuXG4gICAgbGV0IGh1bmsgPSB7XG4gICAgICBvbGRTdGFydDogK2NodW5rSGVhZGVyWzFdLFxuICAgICAgb2xkTGluZXM6IHR5cGVvZiBjaHVua0hlYWRlclsyXSA9PT0gJ3VuZGVmaW5lZCcgPyAxIDogK2NodW5rSGVhZGVyWzJdLFxuICAgICAgbmV3U3RhcnQ6ICtjaHVua0hlYWRlclszXSxcbiAgICAgIG5ld0xpbmVzOiB0eXBlb2YgY2h1bmtIZWFkZXJbNF0gPT09ICd1bmRlZmluZWQnID8gMSA6ICtjaHVua0hlYWRlcls0XSxcbiAgICAgIGxpbmVzOiBbXSxcbiAgICAgIGxpbmVkZWxpbWl0ZXJzOiBbXVxuICAgIH07XG5cbiAgICAvLyBVbmlmaWVkIERpZmYgRm9ybWF0IHF1aXJrOiBJZiB0aGUgY2h1bmsgc2l6ZSBpcyAwLFxuICAgIC8vIHRoZSBmaXJzdCBudW1iZXIgaXMgb25lIGxvd2VyIHRoYW4gb25lIHdvdWxkIGV4cGVjdC5cbiAgICAvLyBodHRwczovL3d3dy5hcnRpbWEuY29tL3dlYmxvZ3Mvdmlld3Bvc3QuanNwP3RocmVhZD0xNjQyOTNcbiAgICBpZiAoaHVuay5vbGRMaW5lcyA9PT0gMCkge1xuICAgICAgaHVuay5vbGRTdGFydCArPSAxO1xuICAgIH1cbiAgICBpZiAoaHVuay5uZXdMaW5lcyA9PT0gMCkge1xuICAgICAgaHVuay5uZXdTdGFydCArPSAxO1xuICAgIH1cblxuICAgIGxldCBhZGRDb3VudCA9IDAsXG4gICAgICAgIHJlbW92ZUNvdW50ID0gMDtcbiAgICBmb3IgKDsgaSA8IGRpZmZzdHIubGVuZ3RoOyBpKyspIHtcbiAgICAgIC8vIExpbmVzIHN0YXJ0aW5nIHdpdGggJy0tLScgY291bGQgYmUgbWlzdGFrZW4gZm9yIHRoZSBcInJlbW92ZSBsaW5lXCIgb3BlcmF0aW9uXG4gICAgICAvLyBCdXQgdGhleSBjb3VsZCBiZSB0aGUgaGVhZGVyIGZvciB0aGUgbmV4dCBmaWxlLiBUaGVyZWZvcmUgcHJ1bmUgc3VjaCBjYXNlcyBvdXQuXG4gICAgICBpZiAoZGlmZnN0cltpXS5pbmRleE9mKCctLS0gJykgPT09IDBcbiAgICAgICAgICAgICYmIChpICsgMiA8IGRpZmZzdHIubGVuZ3RoKVxuICAgICAgICAgICAgJiYgZGlmZnN0cltpICsgMV0uaW5kZXhPZignKysrICcpID09PSAwXG4gICAgICAgICAgICAmJiBkaWZmc3RyW2kgKyAyXS5pbmRleE9mKCdAQCcpID09PSAwKSB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBsZXQgb3BlcmF0aW9uID0gKGRpZmZzdHJbaV0ubGVuZ3RoID09IDAgJiYgaSAhPSAoZGlmZnN0ci5sZW5ndGggLSAxKSkgPyAnICcgOiBkaWZmc3RyW2ldWzBdO1xuXG4gICAgICBpZiAob3BlcmF0aW9uID09PSAnKycgfHwgb3BlcmF0aW9uID09PSAnLScgfHwgb3BlcmF0aW9uID09PSAnICcgfHwgb3BlcmF0aW9uID09PSAnXFxcXCcpIHtcbiAgICAgICAgaHVuay5saW5lcy5wdXNoKGRpZmZzdHJbaV0pO1xuICAgICAgICBodW5rLmxpbmVkZWxpbWl0ZXJzLnB1c2goZGVsaW1pdGVyc1tpXSB8fCAnXFxuJyk7XG5cbiAgICAgICAgaWYgKG9wZXJhdGlvbiA9PT0gJysnKSB7XG4gICAgICAgICAgYWRkQ291bnQrKztcbiAgICAgICAgfSBlbHNlIGlmIChvcGVyYXRpb24gPT09ICctJykge1xuICAgICAgICAgIHJlbW92ZUNvdW50Kys7XG4gICAgICAgIH0gZWxzZSBpZiAob3BlcmF0aW9uID09PSAnICcpIHtcbiAgICAgICAgICBhZGRDb3VudCsrO1xuICAgICAgICAgIHJlbW92ZUNvdW50Kys7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEhhbmRsZSB0aGUgZW1wdHkgYmxvY2sgY291bnQgY2FzZVxuICAgIGlmICghYWRkQ291bnQgJiYgaHVuay5uZXdMaW5lcyA9PT0gMSkge1xuICAgICAgaHVuay5uZXdMaW5lcyA9IDA7XG4gICAgfVxuICAgIGlmICghcmVtb3ZlQ291bnQgJiYgaHVuay5vbGRMaW5lcyA9PT0gMSkge1xuICAgICAgaHVuay5vbGRMaW5lcyA9IDA7XG4gICAgfVxuXG4gICAgLy8gUGVyZm9ybSBvcHRpb25hbCBzYW5pdHkgY2hlY2tpbmdcbiAgICBpZiAob3B0aW9ucy5zdHJpY3QpIHtcbiAgICAgIGlmIChhZGRDb3VudCAhPT0gaHVuay5uZXdMaW5lcykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0FkZGVkIGxpbmUgY291bnQgZGlkIG5vdCBtYXRjaCBmb3IgaHVuayBhdCBsaW5lICcgKyAoY2h1bmtIZWFkZXJJbmRleCArIDEpKTtcbiAgICAgIH1cbiAgICAgIGlmIChyZW1vdmVDb3VudCAhPT0gaHVuay5vbGRMaW5lcykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1JlbW92ZWQgbGluZSBjb3VudCBkaWQgbm90IG1hdGNoIGZvciBodW5rIGF0IGxpbmUgJyArIChjaHVua0hlYWRlckluZGV4ICsgMSkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBodW5rO1xuICB9XG5cbiAgd2hpbGUgKGkgPCBkaWZmc3RyLmxlbmd0aCkge1xuICAgIHBhcnNlSW5kZXgoKTtcbiAgfVxuXG4gIHJldHVybiBsaXN0O1xufVxuIiwgIi8vIEl0ZXJhdG9yIHRoYXQgdHJhdmVyc2VzIGluIHRoZSByYW5nZSBvZiBbbWluLCBtYXhdLCBzdGVwcGluZ1xuLy8gYnkgZGlzdGFuY2UgZnJvbSBhIGdpdmVuIHN0YXJ0IHBvc2l0aW9uLiBJLmUuIGZvciBbMCwgNF0sIHdpdGhcbi8vIHN0YXJ0IG9mIDIsIHRoaXMgd2lsbCBpdGVyYXRlIDIsIDMsIDEsIDQsIDAuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihzdGFydCwgbWluTGluZSwgbWF4TGluZSkge1xuICBsZXQgd2FudEZvcndhcmQgPSB0cnVlLFxuICAgICAgYmFja3dhcmRFeGhhdXN0ZWQgPSBmYWxzZSxcbiAgICAgIGZvcndhcmRFeGhhdXN0ZWQgPSBmYWxzZSxcbiAgICAgIGxvY2FsT2Zmc2V0ID0gMTtcblxuICByZXR1cm4gZnVuY3Rpb24gaXRlcmF0b3IoKSB7XG4gICAgaWYgKHdhbnRGb3J3YXJkICYmICFmb3J3YXJkRXhoYXVzdGVkKSB7XG4gICAgICBpZiAoYmFja3dhcmRFeGhhdXN0ZWQpIHtcbiAgICAgICAgbG9jYWxPZmZzZXQrKztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHdhbnRGb3J3YXJkID0gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIC8vIENoZWNrIGlmIHRyeWluZyB0byBmaXQgYmV5b25kIHRleHQgbGVuZ3RoLCBhbmQgaWYgbm90LCBjaGVjayBpdCBmaXRzXG4gICAgICAvLyBhZnRlciBvZmZzZXQgbG9jYXRpb24gKG9yIGRlc2lyZWQgbG9jYXRpb24gb24gZmlyc3QgaXRlcmF0aW9uKVxuICAgICAgaWYgKHN0YXJ0ICsgbG9jYWxPZmZzZXQgPD0gbWF4TGluZSkge1xuICAgICAgICByZXR1cm4gbG9jYWxPZmZzZXQ7XG4gICAgICB9XG5cbiAgICAgIGZvcndhcmRFeGhhdXN0ZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmICghYmFja3dhcmRFeGhhdXN0ZWQpIHtcbiAgICAgIGlmICghZm9yd2FyZEV4aGF1c3RlZCkge1xuICAgICAgICB3YW50Rm9yd2FyZCA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIC8vIENoZWNrIGlmIHRyeWluZyB0byBmaXQgYmVmb3JlIHRleHQgYmVnaW5uaW5nLCBhbmQgaWYgbm90LCBjaGVjayBpdCBmaXRzXG4gICAgICAvLyBiZWZvcmUgb2Zmc2V0IGxvY2F0aW9uXG4gICAgICBpZiAobWluTGluZSA8PSBzdGFydCAtIGxvY2FsT2Zmc2V0KSB7XG4gICAgICAgIHJldHVybiAtbG9jYWxPZmZzZXQrKztcbiAgICAgIH1cblxuICAgICAgYmFja3dhcmRFeGhhdXN0ZWQgPSB0cnVlO1xuICAgICAgcmV0dXJuIGl0ZXJhdG9yKCk7XG4gICAgfVxuXG4gICAgLy8gV2UgdHJpZWQgdG8gZml0IGh1bmsgYmVmb3JlIHRleHQgYmVnaW5uaW5nIGFuZCBiZXlvbmQgdGV4dCBsZW5ndGgsIHRoZW5cbiAgICAvLyBodW5rIGNhbid0IGZpdCBvbiB0aGUgdGV4dC4gUmV0dXJuIHVuZGVmaW5lZFxuICB9O1xufVxuIiwgImltcG9ydCB7cGFyc2VQYXRjaH0gZnJvbSAnLi9wYXJzZSc7XG5pbXBvcnQgZGlzdGFuY2VJdGVyYXRvciBmcm9tICcuLi91dGlsL2Rpc3RhbmNlLWl0ZXJhdG9yJztcblxuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5UGF0Y2goc291cmNlLCB1bmlEaWZmLCBvcHRpb25zID0ge30pIHtcbiAgaWYgKHR5cGVvZiB1bmlEaWZmID09PSAnc3RyaW5nJykge1xuICAgIHVuaURpZmYgPSBwYXJzZVBhdGNoKHVuaURpZmYpO1xuICB9XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkodW5pRGlmZikpIHtcbiAgICBpZiAodW5pRGlmZi5sZW5ndGggPiAxKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2FwcGx5UGF0Y2ggb25seSB3b3JrcyB3aXRoIGEgc2luZ2xlIGlucHV0LicpO1xuICAgIH1cblxuICAgIHVuaURpZmYgPSB1bmlEaWZmWzBdO1xuICB9XG5cbiAgLy8gQXBwbHkgdGhlIGRpZmYgdG8gdGhlIGlucHV0XG4gIGxldCBsaW5lcyA9IHNvdXJjZS5zcGxpdCgvXFxyXFxufFtcXG5cXHZcXGZcXHJcXHg4NV0vKSxcbiAgICAgIGRlbGltaXRlcnMgPSBzb3VyY2UubWF0Y2goL1xcclxcbnxbXFxuXFx2XFxmXFxyXFx4ODVdL2cpIHx8IFtdLFxuICAgICAgaHVua3MgPSB1bmlEaWZmLmh1bmtzLFxuXG4gICAgICBjb21wYXJlTGluZSA9IG9wdGlvbnMuY29tcGFyZUxpbmUgfHwgKChsaW5lTnVtYmVyLCBsaW5lLCBvcGVyYXRpb24sIHBhdGNoQ29udGVudCkgPT4gbGluZSA9PT0gcGF0Y2hDb250ZW50KSxcbiAgICAgIGVycm9yQ291bnQgPSAwLFxuICAgICAgZnV6ekZhY3RvciA9IG9wdGlvbnMuZnV6ekZhY3RvciB8fCAwLFxuICAgICAgbWluTGluZSA9IDAsXG4gICAgICBvZmZzZXQgPSAwLFxuXG4gICAgICByZW1vdmVFT0ZOTCxcbiAgICAgIGFkZEVPRk5MO1xuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgdGhlIGh1bmsgZXhhY3RseSBmaXRzIG9uIHRoZSBwcm92aWRlZCBsb2NhdGlvblxuICAgKi9cbiAgZnVuY3Rpb24gaHVua0ZpdHMoaHVuaywgdG9Qb3MpIHtcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IGh1bmsubGluZXMubGVuZ3RoOyBqKyspIHtcbiAgICAgIGxldCBsaW5lID0gaHVuay5saW5lc1tqXSxcbiAgICAgICAgICBvcGVyYXRpb24gPSAobGluZS5sZW5ndGggPiAwID8gbGluZVswXSA6ICcgJyksXG4gICAgICAgICAgY29udGVudCA9IChsaW5lLmxlbmd0aCA+IDAgPyBsaW5lLnN1YnN0cigxKSA6IGxpbmUpO1xuXG4gICAgICBpZiAob3BlcmF0aW9uID09PSAnICcgfHwgb3BlcmF0aW9uID09PSAnLScpIHtcbiAgICAgICAgLy8gQ29udGV4dCBzYW5pdHkgY2hlY2tcbiAgICAgICAgaWYgKCFjb21wYXJlTGluZSh0b1BvcyArIDEsIGxpbmVzW3RvUG9zXSwgb3BlcmF0aW9uLCBjb250ZW50KSkge1xuICAgICAgICAgIGVycm9yQ291bnQrKztcblxuICAgICAgICAgIGlmIChlcnJvckNvdW50ID4gZnV6ekZhY3Rvcikge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0b1BvcysrO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLy8gU2VhcmNoIGJlc3QgZml0IG9mZnNldHMgZm9yIGVhY2ggaHVuayBiYXNlZCBvbiB0aGUgcHJldmlvdXMgb25lc1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGh1bmtzLmxlbmd0aDsgaSsrKSB7XG4gICAgbGV0IGh1bmsgPSBodW5rc1tpXSxcbiAgICAgICAgbWF4TGluZSA9IGxpbmVzLmxlbmd0aCAtIGh1bmsub2xkTGluZXMsXG4gICAgICAgIGxvY2FsT2Zmc2V0ID0gMCxcbiAgICAgICAgdG9Qb3MgPSBvZmZzZXQgKyBodW5rLm9sZFN0YXJ0IC0gMTtcblxuICAgIGxldCBpdGVyYXRvciA9IGRpc3RhbmNlSXRlcmF0b3IodG9Qb3MsIG1pbkxpbmUsIG1heExpbmUpO1xuXG4gICAgZm9yICg7IGxvY2FsT2Zmc2V0ICE9PSB1bmRlZmluZWQ7IGxvY2FsT2Zmc2V0ID0gaXRlcmF0b3IoKSkge1xuICAgICAgaWYgKGh1bmtGaXRzKGh1bmssIHRvUG9zICsgbG9jYWxPZmZzZXQpKSB7XG4gICAgICAgIGh1bmsub2Zmc2V0ID0gb2Zmc2V0ICs9IGxvY2FsT2Zmc2V0O1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobG9jYWxPZmZzZXQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIFNldCBsb3dlciB0ZXh0IGxpbWl0IHRvIGVuZCBvZiB0aGUgY3VycmVudCBodW5rLCBzbyBuZXh0IG9uZXMgZG9uJ3QgdHJ5XG4gICAgLy8gdG8gZml0IG92ZXIgYWxyZWFkeSBwYXRjaGVkIHRleHRcbiAgICBtaW5MaW5lID0gaHVuay5vZmZzZXQgKyBodW5rLm9sZFN0YXJ0ICsgaHVuay5vbGRMaW5lcztcbiAgfVxuXG4gIC8vIEFwcGx5IHBhdGNoIGh1bmtzXG4gIGxldCBkaWZmT2Zmc2V0ID0gMDtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBodW5rcy5sZW5ndGg7IGkrKykge1xuICAgIGxldCBodW5rID0gaHVua3NbaV0sXG4gICAgICAgIHRvUG9zID0gaHVuay5vbGRTdGFydCArIGh1bmsub2Zmc2V0ICsgZGlmZk9mZnNldCAtIDE7XG4gICAgZGlmZk9mZnNldCArPSBodW5rLm5ld0xpbmVzIC0gaHVuay5vbGRMaW5lcztcblxuICAgIGZvciAobGV0IGogPSAwOyBqIDwgaHVuay5saW5lcy5sZW5ndGg7IGorKykge1xuICAgICAgbGV0IGxpbmUgPSBodW5rLmxpbmVzW2pdLFxuICAgICAgICAgIG9wZXJhdGlvbiA9IChsaW5lLmxlbmd0aCA+IDAgPyBsaW5lWzBdIDogJyAnKSxcbiAgICAgICAgICBjb250ZW50ID0gKGxpbmUubGVuZ3RoID4gMCA/IGxpbmUuc3Vic3RyKDEpIDogbGluZSksXG4gICAgICAgICAgZGVsaW1pdGVyID0gaHVuay5saW5lZGVsaW1pdGVyc1tqXTtcblxuICAgICAgaWYgKG9wZXJhdGlvbiA9PT0gJyAnKSB7XG4gICAgICAgIHRvUG9zKys7XG4gICAgICB9IGVsc2UgaWYgKG9wZXJhdGlvbiA9PT0gJy0nKSB7XG4gICAgICAgIGxpbmVzLnNwbGljZSh0b1BvcywgMSk7XG4gICAgICAgIGRlbGltaXRlcnMuc3BsaWNlKHRvUG9zLCAxKTtcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICB9IGVsc2UgaWYgKG9wZXJhdGlvbiA9PT0gJysnKSB7XG4gICAgICAgIGxpbmVzLnNwbGljZSh0b1BvcywgMCwgY29udGVudCk7XG4gICAgICAgIGRlbGltaXRlcnMuc3BsaWNlKHRvUG9zLCAwLCBkZWxpbWl0ZXIpO1xuICAgICAgICB0b1BvcysrO1xuICAgICAgfSBlbHNlIGlmIChvcGVyYXRpb24gPT09ICdcXFxcJykge1xuICAgICAgICBsZXQgcHJldmlvdXNPcGVyYXRpb24gPSBodW5rLmxpbmVzW2ogLSAxXSA/IGh1bmsubGluZXNbaiAtIDFdWzBdIDogbnVsbDtcbiAgICAgICAgaWYgKHByZXZpb3VzT3BlcmF0aW9uID09PSAnKycpIHtcbiAgICAgICAgICByZW1vdmVFT0ZOTCA9IHRydWU7XG4gICAgICAgIH0gZWxzZSBpZiAocHJldmlvdXNPcGVyYXRpb24gPT09ICctJykge1xuICAgICAgICAgIGFkZEVPRk5MID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIEhhbmRsZSBFT0ZOTCBpbnNlcnRpb24vcmVtb3ZhbFxuICBpZiAocmVtb3ZlRU9GTkwpIHtcbiAgICB3aGlsZSAoIWxpbmVzW2xpbmVzLmxlbmd0aCAtIDFdKSB7XG4gICAgICBsaW5lcy5wb3AoKTtcbiAgICAgIGRlbGltaXRlcnMucG9wKCk7XG4gICAgfVxuICB9IGVsc2UgaWYgKGFkZEVPRk5MKSB7XG4gICAgbGluZXMucHVzaCgnJyk7XG4gICAgZGVsaW1pdGVycy5wdXNoKCdcXG4nKTtcbiAgfVxuICBmb3IgKGxldCBfayA9IDA7IF9rIDwgbGluZXMubGVuZ3RoIC0gMTsgX2srKykge1xuICAgIGxpbmVzW19rXSA9IGxpbmVzW19rXSArIGRlbGltaXRlcnNbX2tdO1xuICB9XG4gIHJldHVybiBsaW5lcy5qb2luKCcnKTtcbn1cblxuLy8gV3JhcHBlciB0aGF0IHN1cHBvcnRzIG11bHRpcGxlIGZpbGUgcGF0Y2hlcyB2aWEgY2FsbGJhY2tzLlxuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5UGF0Y2hlcyh1bmlEaWZmLCBvcHRpb25zKSB7XG4gIGlmICh0eXBlb2YgdW5pRGlmZiA9PT0gJ3N0cmluZycpIHtcbiAgICB1bmlEaWZmID0gcGFyc2VQYXRjaCh1bmlEaWZmKTtcbiAgfVxuXG4gIGxldCBjdXJyZW50SW5kZXggPSAwO1xuICBmdW5jdGlvbiBwcm9jZXNzSW5kZXgoKSB7XG4gICAgbGV0IGluZGV4ID0gdW5pRGlmZltjdXJyZW50SW5kZXgrK107XG4gICAgaWYgKCFpbmRleCkge1xuICAgICAgcmV0dXJuIG9wdGlvbnMuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICBvcHRpb25zLmxvYWRGaWxlKGluZGV4LCBmdW5jdGlvbihlcnIsIGRhdGEpIHtcbiAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgcmV0dXJuIG9wdGlvbnMuY29tcGxldGUoZXJyKTtcbiAgICAgIH1cblxuICAgICAgbGV0IHVwZGF0ZWRDb250ZW50ID0gYXBwbHlQYXRjaChkYXRhLCBpbmRleCwgb3B0aW9ucyk7XG4gICAgICBvcHRpb25zLnBhdGNoZWQoaW5kZXgsIHVwZGF0ZWRDb250ZW50LCBmdW5jdGlvbihlcnIpIHtcbiAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgIHJldHVybiBvcHRpb25zLmNvbXBsZXRlKGVycik7XG4gICAgICAgIH1cblxuICAgICAgICBwcm9jZXNzSW5kZXgoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG4gIHByb2Nlc3NJbmRleCgpO1xufVxuIiwgImltcG9ydCB7ZGlmZkxpbmVzfSBmcm9tICcuLi9kaWZmL2xpbmUnO1xuXG5leHBvcnQgZnVuY3Rpb24gc3RydWN0dXJlZFBhdGNoKG9sZEZpbGVOYW1lLCBuZXdGaWxlTmFtZSwgb2xkU3RyLCBuZXdTdHIsIG9sZEhlYWRlciwgbmV3SGVhZGVyLCBvcHRpb25zKSB7XG4gIGlmICghb3B0aW9ucykge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuICBpZiAodHlwZW9mIG9wdGlvbnMuY29udGV4dCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBvcHRpb25zLmNvbnRleHQgPSA0O1xuICB9XG5cbiAgY29uc3QgZGlmZiA9IGRpZmZMaW5lcyhvbGRTdHIsIG5ld1N0ciwgb3B0aW9ucyk7XG4gIGlmKCFkaWZmKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgZGlmZi5wdXNoKHt2YWx1ZTogJycsIGxpbmVzOiBbXX0pOyAvLyBBcHBlbmQgYW4gZW1wdHkgdmFsdWUgdG8gbWFrZSBjbGVhbnVwIGVhc2llclxuXG4gIGZ1bmN0aW9uIGNvbnRleHRMaW5lcyhsaW5lcykge1xuICAgIHJldHVybiBsaW5lcy5tYXAoZnVuY3Rpb24oZW50cnkpIHsgcmV0dXJuICcgJyArIGVudHJ5OyB9KTtcbiAgfVxuXG4gIGxldCBodW5rcyA9IFtdO1xuICBsZXQgb2xkUmFuZ2VTdGFydCA9IDAsIG5ld1JhbmdlU3RhcnQgPSAwLCBjdXJSYW5nZSA9IFtdLFxuICAgICAgb2xkTGluZSA9IDEsIG5ld0xpbmUgPSAxO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGRpZmYubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBjdXJyZW50ID0gZGlmZltpXSxcbiAgICAgICAgICBsaW5lcyA9IGN1cnJlbnQubGluZXMgfHwgY3VycmVudC52YWx1ZS5yZXBsYWNlKC9cXG4kLywgJycpLnNwbGl0KCdcXG4nKTtcbiAgICBjdXJyZW50LmxpbmVzID0gbGluZXM7XG5cbiAgICBpZiAoY3VycmVudC5hZGRlZCB8fCBjdXJyZW50LnJlbW92ZWQpIHtcbiAgICAgIC8vIElmIHdlIGhhdmUgcHJldmlvdXMgY29udGV4dCwgc3RhcnQgd2l0aCB0aGF0XG4gICAgICBpZiAoIW9sZFJhbmdlU3RhcnQpIHtcbiAgICAgICAgY29uc3QgcHJldiA9IGRpZmZbaSAtIDFdO1xuICAgICAgICBvbGRSYW5nZVN0YXJ0ID0gb2xkTGluZTtcbiAgICAgICAgbmV3UmFuZ2VTdGFydCA9IG5ld0xpbmU7XG5cbiAgICAgICAgaWYgKHByZXYpIHtcbiAgICAgICAgICBjdXJSYW5nZSA9IG9wdGlvbnMuY29udGV4dCA+IDAgPyBjb250ZXh0TGluZXMocHJldi5saW5lcy5zbGljZSgtb3B0aW9ucy5jb250ZXh0KSkgOiBbXTtcbiAgICAgICAgICBvbGRSYW5nZVN0YXJ0IC09IGN1clJhbmdlLmxlbmd0aDtcbiAgICAgICAgICBuZXdSYW5nZVN0YXJ0IC09IGN1clJhbmdlLmxlbmd0aDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBPdXRwdXQgb3VyIGNoYW5nZXNcbiAgICAgIGN1clJhbmdlLnB1c2goLi4uIGxpbmVzLm1hcChmdW5jdGlvbihlbnRyeSkge1xuICAgICAgICByZXR1cm4gKGN1cnJlbnQuYWRkZWQgPyAnKycgOiAnLScpICsgZW50cnk7XG4gICAgICB9KSk7XG5cbiAgICAgIC8vIFRyYWNrIHRoZSB1cGRhdGVkIGZpbGUgcG9zaXRpb25cbiAgICAgIGlmIChjdXJyZW50LmFkZGVkKSB7XG4gICAgICAgIG5ld0xpbmUgKz0gbGluZXMubGVuZ3RoO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb2xkTGluZSArPSBsaW5lcy5sZW5ndGg7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIElkZW50aWNhbCBjb250ZXh0IGxpbmVzLiBUcmFjayBsaW5lIGNoYW5nZXNcbiAgICAgIGlmIChvbGRSYW5nZVN0YXJ0KSB7XG4gICAgICAgIC8vIENsb3NlIG91dCBhbnkgY2hhbmdlcyB0aGF0IGhhdmUgYmVlbiBvdXRwdXQgKG9yIGpvaW4gb3ZlcmxhcHBpbmcpXG4gICAgICAgIGlmIChsaW5lcy5sZW5ndGggPD0gb3B0aW9ucy5jb250ZXh0ICogMiAmJiBpIDwgZGlmZi5sZW5ndGggLSAyKSB7XG4gICAgICAgICAgLy8gT3ZlcmxhcHBpbmdcbiAgICAgICAgICBjdXJSYW5nZS5wdXNoKC4uLiBjb250ZXh0TGluZXMobGluZXMpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBlbmQgdGhlIHJhbmdlIGFuZCBvdXRwdXRcbiAgICAgICAgICBsZXQgY29udGV4dFNpemUgPSBNYXRoLm1pbihsaW5lcy5sZW5ndGgsIG9wdGlvbnMuY29udGV4dCk7XG4gICAgICAgICAgY3VyUmFuZ2UucHVzaCguLi4gY29udGV4dExpbmVzKGxpbmVzLnNsaWNlKDAsIGNvbnRleHRTaXplKSkpO1xuXG4gICAgICAgICAgbGV0IGh1bmsgPSB7XG4gICAgICAgICAgICBvbGRTdGFydDogb2xkUmFuZ2VTdGFydCxcbiAgICAgICAgICAgIG9sZExpbmVzOiAob2xkTGluZSAtIG9sZFJhbmdlU3RhcnQgKyBjb250ZXh0U2l6ZSksXG4gICAgICAgICAgICBuZXdTdGFydDogbmV3UmFuZ2VTdGFydCxcbiAgICAgICAgICAgIG5ld0xpbmVzOiAobmV3TGluZSAtIG5ld1JhbmdlU3RhcnQgKyBjb250ZXh0U2l6ZSksXG4gICAgICAgICAgICBsaW5lczogY3VyUmFuZ2VcbiAgICAgICAgICB9O1xuICAgICAgICAgIGlmIChpID49IGRpZmYubGVuZ3RoIC0gMiAmJiBsaW5lcy5sZW5ndGggPD0gb3B0aW9ucy5jb250ZXh0KSB7XG4gICAgICAgICAgICAvLyBFT0YgaXMgaW5zaWRlIHRoaXMgaHVua1xuICAgICAgICAgICAgbGV0IG9sZEVPRk5ld2xpbmUgPSAoKC9cXG4kLykudGVzdChvbGRTdHIpKTtcbiAgICAgICAgICAgIGxldCBuZXdFT0ZOZXdsaW5lID0gKCgvXFxuJC8pLnRlc3QobmV3U3RyKSk7XG4gICAgICAgICAgICBsZXQgbm9ObEJlZm9yZUFkZHMgPSBsaW5lcy5sZW5ndGggPT0gMCAmJiBjdXJSYW5nZS5sZW5ndGggPiBodW5rLm9sZExpbmVzO1xuICAgICAgICAgICAgaWYgKCFvbGRFT0ZOZXdsaW5lICYmIG5vTmxCZWZvcmVBZGRzICYmIG9sZFN0ci5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgIC8vIHNwZWNpYWwgY2FzZTogb2xkIGhhcyBubyBlb2wgYW5kIG5vIHRyYWlsaW5nIGNvbnRleHQ7IG5vLW5sIGNhbiBlbmQgdXAgYmVmb3JlIGFkZHNcbiAgICAgICAgICAgICAgLy8gaG93ZXZlciwgaWYgdGhlIG9sZCBmaWxlIGlzIGVtcHR5LCBkbyBub3Qgb3V0cHV0IHRoZSBuby1ubCBsaW5lXG4gICAgICAgICAgICAgIGN1clJhbmdlLnNwbGljZShodW5rLm9sZExpbmVzLCAwLCAnXFxcXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoKCFvbGRFT0ZOZXdsaW5lICYmICFub05sQmVmb3JlQWRkcykgfHwgIW5ld0VPRk5ld2xpbmUpIHtcbiAgICAgICAgICAgICAgY3VyUmFuZ2UucHVzaCgnXFxcXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGh1bmtzLnB1c2goaHVuayk7XG5cbiAgICAgICAgICBvbGRSYW5nZVN0YXJ0ID0gMDtcbiAgICAgICAgICBuZXdSYW5nZVN0YXJ0ID0gMDtcbiAgICAgICAgICBjdXJSYW5nZSA9IFtdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBvbGRMaW5lICs9IGxpbmVzLmxlbmd0aDtcbiAgICAgIG5ld0xpbmUgKz0gbGluZXMubGVuZ3RoO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgb2xkRmlsZU5hbWU6IG9sZEZpbGVOYW1lLCBuZXdGaWxlTmFtZTogbmV3RmlsZU5hbWUsXG4gICAgb2xkSGVhZGVyOiBvbGRIZWFkZXIsIG5ld0hlYWRlcjogbmV3SGVhZGVyLFxuICAgIGh1bmtzOiBodW5rc1xuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0UGF0Y2goZGlmZikge1xuICBjb25zdCByZXQgPSBbXTtcbiAgaWYgKGRpZmYub2xkRmlsZU5hbWUgPT0gZGlmZi5uZXdGaWxlTmFtZSkge1xuICAgIHJldC5wdXNoKCdJbmRleDogJyArIGRpZmYub2xkRmlsZU5hbWUpO1xuICB9XG4gIHJldC5wdXNoKCc9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Jyk7XG4gIHJldC5wdXNoKCctLS0gJyArIGRpZmYub2xkRmlsZU5hbWUgKyAodHlwZW9mIGRpZmYub2xkSGVhZGVyID09PSAndW5kZWZpbmVkJyA/ICcnIDogJ1xcdCcgKyBkaWZmLm9sZEhlYWRlcikpO1xuICByZXQucHVzaCgnKysrICcgKyBkaWZmLm5ld0ZpbGVOYW1lICsgKHR5cGVvZiBkaWZmLm5ld0hlYWRlciA9PT0gJ3VuZGVmaW5lZCcgPyAnJyA6ICdcXHQnICsgZGlmZi5uZXdIZWFkZXIpKTtcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IGRpZmYuaHVua3MubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBodW5rID0gZGlmZi5odW5rc1tpXTtcbiAgICAvLyBVbmlmaWVkIERpZmYgRm9ybWF0IHF1aXJrOiBJZiB0aGUgY2h1bmsgc2l6ZSBpcyAwLFxuICAgIC8vIHRoZSBmaXJzdCBudW1iZXIgaXMgb25lIGxvd2VyIHRoYW4gb25lIHdvdWxkIGV4cGVjdC5cbiAgICAvLyBodHRwczovL3d3dy5hcnRpbWEuY29tL3dlYmxvZ3Mvdmlld3Bvc3QuanNwP3RocmVhZD0xNjQyOTNcbiAgICBpZiAoaHVuay5vbGRMaW5lcyA9PT0gMCkge1xuICAgICAgaHVuay5vbGRTdGFydCAtPSAxO1xuICAgIH1cbiAgICBpZiAoaHVuay5uZXdMaW5lcyA9PT0gMCkge1xuICAgICAgaHVuay5uZXdTdGFydCAtPSAxO1xuICAgIH1cbiAgICByZXQucHVzaChcbiAgICAgICdAQCAtJyArIGh1bmsub2xkU3RhcnQgKyAnLCcgKyBodW5rLm9sZExpbmVzXG4gICAgICArICcgKycgKyBodW5rLm5ld1N0YXJ0ICsgJywnICsgaHVuay5uZXdMaW5lc1xuICAgICAgKyAnIEBAJ1xuICAgICk7XG4gICAgcmV0LnB1c2guYXBwbHkocmV0LCBodW5rLmxpbmVzKTtcbiAgfVxuXG4gIHJldHVybiByZXQuam9pbignXFxuJykgKyAnXFxuJztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVR3b0ZpbGVzUGF0Y2gob2xkRmlsZU5hbWUsIG5ld0ZpbGVOYW1lLCBvbGRTdHIsIG5ld1N0ciwgb2xkSGVhZGVyLCBuZXdIZWFkZXIsIG9wdGlvbnMpIHtcbiAgcmV0dXJuIGZvcm1hdFBhdGNoKHN0cnVjdHVyZWRQYXRjaChvbGRGaWxlTmFtZSwgbmV3RmlsZU5hbWUsIG9sZFN0ciwgbmV3U3RyLCBvbGRIZWFkZXIsIG5ld0hlYWRlciwgb3B0aW9ucykpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUGF0Y2goZmlsZU5hbWUsIG9sZFN0ciwgbmV3U3RyLCBvbGRIZWFkZXIsIG5ld0hlYWRlciwgb3B0aW9ucykge1xuICByZXR1cm4gY3JlYXRlVHdvRmlsZXNQYXRjaChmaWxlTmFtZSwgZmlsZU5hbWUsIG9sZFN0ciwgbmV3U3RyLCBvbGRIZWFkZXIsIG5ld0hlYWRlciwgb3B0aW9ucyk7XG59XG4iLCAiZXhwb3J0IGZ1bmN0aW9uIGFycmF5RXF1YWwoYSwgYikge1xuICBpZiAoYS5sZW5ndGggIT09IGIubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIGFycmF5U3RhcnRzV2l0aChhLCBiKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFycmF5U3RhcnRzV2l0aChhcnJheSwgc3RhcnQpIHtcbiAgaWYgKHN0YXJ0Lmxlbmd0aCA+IGFycmF5Lmxlbmd0aCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc3RhcnQubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoc3RhcnRbaV0gIT09IGFycmF5W2ldKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG4iLCAiaW1wb3J0IHtzdHJ1Y3R1cmVkUGF0Y2h9IGZyb20gJy4vY3JlYXRlJztcbmltcG9ydCB7cGFyc2VQYXRjaH0gZnJvbSAnLi9wYXJzZSc7XG5cbmltcG9ydCB7YXJyYXlFcXVhbCwgYXJyYXlTdGFydHNXaXRofSBmcm9tICcuLi91dGlsL2FycmF5JztcblxuZXhwb3J0IGZ1bmN0aW9uIGNhbGNMaW5lQ291bnQoaHVuaykge1xuICBjb25zdCB7b2xkTGluZXMsIG5ld0xpbmVzfSA9IGNhbGNPbGROZXdMaW5lQ291bnQoaHVuay5saW5lcyk7XG5cbiAgaWYgKG9sZExpbmVzICE9PSB1bmRlZmluZWQpIHtcbiAgICBodW5rLm9sZExpbmVzID0gb2xkTGluZXM7XG4gIH0gZWxzZSB7XG4gICAgZGVsZXRlIGh1bmsub2xkTGluZXM7XG4gIH1cblxuICBpZiAobmV3TGluZXMgIT09IHVuZGVmaW5lZCkge1xuICAgIGh1bmsubmV3TGluZXMgPSBuZXdMaW5lcztcbiAgfSBlbHNlIHtcbiAgICBkZWxldGUgaHVuay5uZXdMaW5lcztcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbWVyZ2UobWluZSwgdGhlaXJzLCBiYXNlKSB7XG4gIG1pbmUgPSBsb2FkUGF0Y2gobWluZSwgYmFzZSk7XG4gIHRoZWlycyA9IGxvYWRQYXRjaCh0aGVpcnMsIGJhc2UpO1xuXG4gIGxldCByZXQgPSB7fTtcblxuICAvLyBGb3IgaW5kZXggd2UganVzdCBsZXQgaXQgcGFzcyB0aHJvdWdoIGFzIGl0IGRvZXNuJ3QgaGF2ZSBhbnkgbmVjZXNzYXJ5IG1lYW5pbmcuXG4gIC8vIExlYXZpbmcgc2FuaXR5IGNoZWNrcyBvbiB0aGlzIHRvIHRoZSBBUEkgY29uc3VtZXIgdGhhdCBtYXkga25vdyBtb3JlIGFib3V0IHRoZVxuICAvLyBtZWFuaW5nIGluIHRoZWlyIG93biBjb250ZXh0LlxuICBpZiAobWluZS5pbmRleCB8fCB0aGVpcnMuaW5kZXgpIHtcbiAgICByZXQuaW5kZXggPSBtaW5lLmluZGV4IHx8IHRoZWlycy5pbmRleDtcbiAgfVxuXG4gIGlmIChtaW5lLm5ld0ZpbGVOYW1lIHx8IHRoZWlycy5uZXdGaWxlTmFtZSkge1xuICAgIGlmICghZmlsZU5hbWVDaGFuZ2VkKG1pbmUpKSB7XG4gICAgICAvLyBObyBoZWFkZXIgb3Igbm8gY2hhbmdlIGluIG91cnMsIHVzZSB0aGVpcnMgKGFuZCBvdXJzIGlmIHRoZWlycyBkb2VzIG5vdCBleGlzdClcbiAgICAgIHJldC5vbGRGaWxlTmFtZSA9IHRoZWlycy5vbGRGaWxlTmFtZSB8fCBtaW5lLm9sZEZpbGVOYW1lO1xuICAgICAgcmV0Lm5ld0ZpbGVOYW1lID0gdGhlaXJzLm5ld0ZpbGVOYW1lIHx8IG1pbmUubmV3RmlsZU5hbWU7XG4gICAgICByZXQub2xkSGVhZGVyID0gdGhlaXJzLm9sZEhlYWRlciB8fCBtaW5lLm9sZEhlYWRlcjtcbiAgICAgIHJldC5uZXdIZWFkZXIgPSB0aGVpcnMubmV3SGVhZGVyIHx8IG1pbmUubmV3SGVhZGVyO1xuICAgIH0gZWxzZSBpZiAoIWZpbGVOYW1lQ2hhbmdlZCh0aGVpcnMpKSB7XG4gICAgICAvLyBObyBoZWFkZXIgb3Igbm8gY2hhbmdlIGluIHRoZWlycywgdXNlIG91cnNcbiAgICAgIHJldC5vbGRGaWxlTmFtZSA9IG1pbmUub2xkRmlsZU5hbWU7XG4gICAgICByZXQubmV3RmlsZU5hbWUgPSBtaW5lLm5ld0ZpbGVOYW1lO1xuICAgICAgcmV0Lm9sZEhlYWRlciA9IG1pbmUub2xkSGVhZGVyO1xuICAgICAgcmV0Lm5ld0hlYWRlciA9IG1pbmUubmV3SGVhZGVyO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBCb3RoIGNoYW5nZWQuLi4gZmlndXJlIGl0IG91dFxuICAgICAgcmV0Lm9sZEZpbGVOYW1lID0gc2VsZWN0RmllbGQocmV0LCBtaW5lLm9sZEZpbGVOYW1lLCB0aGVpcnMub2xkRmlsZU5hbWUpO1xuICAgICAgcmV0Lm5ld0ZpbGVOYW1lID0gc2VsZWN0RmllbGQocmV0LCBtaW5lLm5ld0ZpbGVOYW1lLCB0aGVpcnMubmV3RmlsZU5hbWUpO1xuICAgICAgcmV0Lm9sZEhlYWRlciA9IHNlbGVjdEZpZWxkKHJldCwgbWluZS5vbGRIZWFkZXIsIHRoZWlycy5vbGRIZWFkZXIpO1xuICAgICAgcmV0Lm5ld0hlYWRlciA9IHNlbGVjdEZpZWxkKHJldCwgbWluZS5uZXdIZWFkZXIsIHRoZWlycy5uZXdIZWFkZXIpO1xuICAgIH1cbiAgfVxuXG4gIHJldC5odW5rcyA9IFtdO1xuXG4gIGxldCBtaW5lSW5kZXggPSAwLFxuICAgICAgdGhlaXJzSW5kZXggPSAwLFxuICAgICAgbWluZU9mZnNldCA9IDAsXG4gICAgICB0aGVpcnNPZmZzZXQgPSAwO1xuXG4gIHdoaWxlIChtaW5lSW5kZXggPCBtaW5lLmh1bmtzLmxlbmd0aCB8fCB0aGVpcnNJbmRleCA8IHRoZWlycy5odW5rcy5sZW5ndGgpIHtcbiAgICBsZXQgbWluZUN1cnJlbnQgPSBtaW5lLmh1bmtzW21pbmVJbmRleF0gfHwge29sZFN0YXJ0OiBJbmZpbml0eX0sXG4gICAgICAgIHRoZWlyc0N1cnJlbnQgPSB0aGVpcnMuaHVua3NbdGhlaXJzSW5kZXhdIHx8IHtvbGRTdGFydDogSW5maW5pdHl9O1xuXG4gICAgaWYgKGh1bmtCZWZvcmUobWluZUN1cnJlbnQsIHRoZWlyc0N1cnJlbnQpKSB7XG4gICAgICAvLyBUaGlzIHBhdGNoIGRvZXMgbm90IG92ZXJsYXAgd2l0aCBhbnkgb2YgdGhlIG90aGVycywgeWF5LlxuICAgICAgcmV0Lmh1bmtzLnB1c2goY2xvbmVIdW5rKG1pbmVDdXJyZW50LCBtaW5lT2Zmc2V0KSk7XG4gICAgICBtaW5lSW5kZXgrKztcbiAgICAgIHRoZWlyc09mZnNldCArPSBtaW5lQ3VycmVudC5uZXdMaW5lcyAtIG1pbmVDdXJyZW50Lm9sZExpbmVzO1xuICAgIH0gZWxzZSBpZiAoaHVua0JlZm9yZSh0aGVpcnNDdXJyZW50LCBtaW5lQ3VycmVudCkpIHtcbiAgICAgIC8vIFRoaXMgcGF0Y2ggZG9lcyBub3Qgb3ZlcmxhcCB3aXRoIGFueSBvZiB0aGUgb3RoZXJzLCB5YXkuXG4gICAgICByZXQuaHVua3MucHVzaChjbG9uZUh1bmsodGhlaXJzQ3VycmVudCwgdGhlaXJzT2Zmc2V0KSk7XG4gICAgICB0aGVpcnNJbmRleCsrO1xuICAgICAgbWluZU9mZnNldCArPSB0aGVpcnNDdXJyZW50Lm5ld0xpbmVzIC0gdGhlaXJzQ3VycmVudC5vbGRMaW5lcztcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gT3ZlcmxhcCwgbWVyZ2UgYXMgYmVzdCB3ZSBjYW5cbiAgICAgIGxldCBtZXJnZWRIdW5rID0ge1xuICAgICAgICBvbGRTdGFydDogTWF0aC5taW4obWluZUN1cnJlbnQub2xkU3RhcnQsIHRoZWlyc0N1cnJlbnQub2xkU3RhcnQpLFxuICAgICAgICBvbGRMaW5lczogMCxcbiAgICAgICAgbmV3U3RhcnQ6IE1hdGgubWluKG1pbmVDdXJyZW50Lm5ld1N0YXJ0ICsgbWluZU9mZnNldCwgdGhlaXJzQ3VycmVudC5vbGRTdGFydCArIHRoZWlyc09mZnNldCksXG4gICAgICAgIG5ld0xpbmVzOiAwLFxuICAgICAgICBsaW5lczogW11cbiAgICAgIH07XG4gICAgICBtZXJnZUxpbmVzKG1lcmdlZEh1bmssIG1pbmVDdXJyZW50Lm9sZFN0YXJ0LCBtaW5lQ3VycmVudC5saW5lcywgdGhlaXJzQ3VycmVudC5vbGRTdGFydCwgdGhlaXJzQ3VycmVudC5saW5lcyk7XG4gICAgICB0aGVpcnNJbmRleCsrO1xuICAgICAgbWluZUluZGV4Kys7XG5cbiAgICAgIHJldC5odW5rcy5wdXNoKG1lcmdlZEh1bmspO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXQ7XG59XG5cbmZ1bmN0aW9uIGxvYWRQYXRjaChwYXJhbSwgYmFzZSkge1xuICBpZiAodHlwZW9mIHBhcmFtID09PSAnc3RyaW5nJykge1xuICAgIGlmICgoL15AQC9tKS50ZXN0KHBhcmFtKSB8fCAoKC9eSW5kZXg6L20pLnRlc3QocGFyYW0pKSkge1xuICAgICAgcmV0dXJuIHBhcnNlUGF0Y2gocGFyYW0pWzBdO1xuICAgIH1cblxuICAgIGlmICghYmFzZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdNdXN0IHByb3ZpZGUgYSBiYXNlIHJlZmVyZW5jZSBvciBwYXNzIGluIGEgcGF0Y2gnKTtcbiAgICB9XG4gICAgcmV0dXJuIHN0cnVjdHVyZWRQYXRjaCh1bmRlZmluZWQsIHVuZGVmaW5lZCwgYmFzZSwgcGFyYW0pO1xuICB9XG5cbiAgcmV0dXJuIHBhcmFtO1xufVxuXG5mdW5jdGlvbiBmaWxlTmFtZUNoYW5nZWQocGF0Y2gpIHtcbiAgcmV0dXJuIHBhdGNoLm5ld0ZpbGVOYW1lICYmIHBhdGNoLm5ld0ZpbGVOYW1lICE9PSBwYXRjaC5vbGRGaWxlTmFtZTtcbn1cblxuZnVuY3Rpb24gc2VsZWN0RmllbGQoaW5kZXgsIG1pbmUsIHRoZWlycykge1xuICBpZiAobWluZSA9PT0gdGhlaXJzKSB7XG4gICAgcmV0dXJuIG1pbmU7XG4gIH0gZWxzZSB7XG4gICAgaW5kZXguY29uZmxpY3QgPSB0cnVlO1xuICAgIHJldHVybiB7bWluZSwgdGhlaXJzfTtcbiAgfVxufVxuXG5mdW5jdGlvbiBodW5rQmVmb3JlKHRlc3QsIGNoZWNrKSB7XG4gIHJldHVybiB0ZXN0Lm9sZFN0YXJ0IDwgY2hlY2sub2xkU3RhcnRcbiAgICAmJiAodGVzdC5vbGRTdGFydCArIHRlc3Qub2xkTGluZXMpIDwgY2hlY2sub2xkU3RhcnQ7XG59XG5cbmZ1bmN0aW9uIGNsb25lSHVuayhodW5rLCBvZmZzZXQpIHtcbiAgcmV0dXJuIHtcbiAgICBvbGRTdGFydDogaHVuay5vbGRTdGFydCwgb2xkTGluZXM6IGh1bmsub2xkTGluZXMsXG4gICAgbmV3U3RhcnQ6IGh1bmsubmV3U3RhcnQgKyBvZmZzZXQsIG5ld0xpbmVzOiBodW5rLm5ld0xpbmVzLFxuICAgIGxpbmVzOiBodW5rLmxpbmVzXG4gIH07XG59XG5cbmZ1bmN0aW9uIG1lcmdlTGluZXMoaHVuaywgbWluZU9mZnNldCwgbWluZUxpbmVzLCB0aGVpck9mZnNldCwgdGhlaXJMaW5lcykge1xuICAvLyBUaGlzIHdpbGwgZ2VuZXJhbGx5IHJlc3VsdCBpbiBhIGNvbmZsaWN0ZWQgaHVuaywgYnV0IHRoZXJlIGFyZSBjYXNlcyB3aGVyZSB0aGUgY29udGV4dFxuICAvLyBpcyB0aGUgb25seSBvdmVybGFwIHdoZXJlIHdlIGNhbiBzdWNjZXNzZnVsbHkgbWVyZ2UgdGhlIGNvbnRlbnQgaGVyZS5cbiAgbGV0IG1pbmUgPSB7b2Zmc2V0OiBtaW5lT2Zmc2V0LCBsaW5lczogbWluZUxpbmVzLCBpbmRleDogMH0sXG4gICAgICB0aGVpciA9IHtvZmZzZXQ6IHRoZWlyT2Zmc2V0LCBsaW5lczogdGhlaXJMaW5lcywgaW5kZXg6IDB9O1xuXG4gIC8vIEhhbmRsZSBhbnkgbGVhZGluZyBjb250ZW50XG4gIGluc2VydExlYWRpbmcoaHVuaywgbWluZSwgdGhlaXIpO1xuICBpbnNlcnRMZWFkaW5nKGh1bmssIHRoZWlyLCBtaW5lKTtcblxuICAvLyBOb3cgaW4gdGhlIG92ZXJsYXAgY29udGVudC4gU2NhbiB0aHJvdWdoIGFuZCBzZWxlY3QgdGhlIGJlc3QgY2hhbmdlcyBmcm9tIGVhY2guXG4gIHdoaWxlIChtaW5lLmluZGV4IDwgbWluZS5saW5lcy5sZW5ndGggJiYgdGhlaXIuaW5kZXggPCB0aGVpci5saW5lcy5sZW5ndGgpIHtcbiAgICBsZXQgbWluZUN1cnJlbnQgPSBtaW5lLmxpbmVzW21pbmUuaW5kZXhdLFxuICAgICAgICB0aGVpckN1cnJlbnQgPSB0aGVpci5saW5lc1t0aGVpci5pbmRleF07XG5cbiAgICBpZiAoKG1pbmVDdXJyZW50WzBdID09PSAnLScgfHwgbWluZUN1cnJlbnRbMF0gPT09ICcrJylcbiAgICAgICAgJiYgKHRoZWlyQ3VycmVudFswXSA9PT0gJy0nIHx8IHRoZWlyQ3VycmVudFswXSA9PT0gJysnKSkge1xuICAgICAgLy8gQm90aCBtb2RpZmllZCAuLi5cbiAgICAgIG11dHVhbENoYW5nZShodW5rLCBtaW5lLCB0aGVpcik7XG4gICAgfSBlbHNlIGlmIChtaW5lQ3VycmVudFswXSA9PT0gJysnICYmIHRoZWlyQ3VycmVudFswXSA9PT0gJyAnKSB7XG4gICAgICAvLyBNaW5lIGluc2VydGVkXG4gICAgICBodW5rLmxpbmVzLnB1c2goLi4uIGNvbGxlY3RDaGFuZ2UobWluZSkpO1xuICAgIH0gZWxzZSBpZiAodGhlaXJDdXJyZW50WzBdID09PSAnKycgJiYgbWluZUN1cnJlbnRbMF0gPT09ICcgJykge1xuICAgICAgLy8gVGhlaXJzIGluc2VydGVkXG4gICAgICBodW5rLmxpbmVzLnB1c2goLi4uIGNvbGxlY3RDaGFuZ2UodGhlaXIpKTtcbiAgICB9IGVsc2UgaWYgKG1pbmVDdXJyZW50WzBdID09PSAnLScgJiYgdGhlaXJDdXJyZW50WzBdID09PSAnICcpIHtcbiAgICAgIC8vIE1pbmUgcmVtb3ZlZCBvciBlZGl0ZWRcbiAgICAgIHJlbW92YWwoaHVuaywgbWluZSwgdGhlaXIpO1xuICAgIH0gZWxzZSBpZiAodGhlaXJDdXJyZW50WzBdID09PSAnLScgJiYgbWluZUN1cnJlbnRbMF0gPT09ICcgJykge1xuICAgICAgLy8gVGhlaXIgcmVtb3ZlZCBvciBlZGl0ZWRcbiAgICAgIHJlbW92YWwoaHVuaywgdGhlaXIsIG1pbmUsIHRydWUpO1xuICAgIH0gZWxzZSBpZiAobWluZUN1cnJlbnQgPT09IHRoZWlyQ3VycmVudCkge1xuICAgICAgLy8gQ29udGV4dCBpZGVudGl0eVxuICAgICAgaHVuay5saW5lcy5wdXNoKG1pbmVDdXJyZW50KTtcbiAgICAgIG1pbmUuaW5kZXgrKztcbiAgICAgIHRoZWlyLmluZGV4Kys7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIENvbnRleHQgbWlzbWF0Y2hcbiAgICAgIGNvbmZsaWN0KGh1bmssIGNvbGxlY3RDaGFuZ2UobWluZSksIGNvbGxlY3RDaGFuZ2UodGhlaXIpKTtcbiAgICB9XG4gIH1cblxuICAvLyBOb3cgcHVzaCBhbnl0aGluZyB0aGF0IG1heSBiZSByZW1haW5pbmdcbiAgaW5zZXJ0VHJhaWxpbmcoaHVuaywgbWluZSk7XG4gIGluc2VydFRyYWlsaW5nKGh1bmssIHRoZWlyKTtcblxuICBjYWxjTGluZUNvdW50KGh1bmspO1xufVxuXG5mdW5jdGlvbiBtdXR1YWxDaGFuZ2UoaHVuaywgbWluZSwgdGhlaXIpIHtcbiAgbGV0IG15Q2hhbmdlcyA9IGNvbGxlY3RDaGFuZ2UobWluZSksXG4gICAgICB0aGVpckNoYW5nZXMgPSBjb2xsZWN0Q2hhbmdlKHRoZWlyKTtcblxuICBpZiAoYWxsUmVtb3ZlcyhteUNoYW5nZXMpICYmIGFsbFJlbW92ZXModGhlaXJDaGFuZ2VzKSkge1xuICAgIC8vIFNwZWNpYWwgY2FzZSBmb3IgcmVtb3ZlIGNoYW5nZXMgdGhhdCBhcmUgc3VwZXJzZXRzIG9mIG9uZSBhbm90aGVyXG4gICAgaWYgKGFycmF5U3RhcnRzV2l0aChteUNoYW5nZXMsIHRoZWlyQ2hhbmdlcylcbiAgICAgICAgJiYgc2tpcFJlbW92ZVN1cGVyc2V0KHRoZWlyLCBteUNoYW5nZXMsIG15Q2hhbmdlcy5sZW5ndGggLSB0aGVpckNoYW5nZXMubGVuZ3RoKSkge1xuICAgICAgaHVuay5saW5lcy5wdXNoKC4uLiBteUNoYW5nZXMpO1xuICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSBpZiAoYXJyYXlTdGFydHNXaXRoKHRoZWlyQ2hhbmdlcywgbXlDaGFuZ2VzKVxuICAgICAgICAmJiBza2lwUmVtb3ZlU3VwZXJzZXQobWluZSwgdGhlaXJDaGFuZ2VzLCB0aGVpckNoYW5nZXMubGVuZ3RoIC0gbXlDaGFuZ2VzLmxlbmd0aCkpIHtcbiAgICAgIGh1bmsubGluZXMucHVzaCguLi4gdGhlaXJDaGFuZ2VzKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH0gZWxzZSBpZiAoYXJyYXlFcXVhbChteUNoYW5nZXMsIHRoZWlyQ2hhbmdlcykpIHtcbiAgICBodW5rLmxpbmVzLnB1c2goLi4uIG15Q2hhbmdlcyk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uZmxpY3QoaHVuaywgbXlDaGFuZ2VzLCB0aGVpckNoYW5nZXMpO1xufVxuXG5mdW5jdGlvbiByZW1vdmFsKGh1bmssIG1pbmUsIHRoZWlyLCBzd2FwKSB7XG4gIGxldCBteUNoYW5nZXMgPSBjb2xsZWN0Q2hhbmdlKG1pbmUpLFxuICAgICAgdGhlaXJDaGFuZ2VzID0gY29sbGVjdENvbnRleHQodGhlaXIsIG15Q2hhbmdlcyk7XG4gIGlmICh0aGVpckNoYW5nZXMubWVyZ2VkKSB7XG4gICAgaHVuay5saW5lcy5wdXNoKC4uLiB0aGVpckNoYW5nZXMubWVyZ2VkKTtcbiAgfSBlbHNlIHtcbiAgICBjb25mbGljdChodW5rLCBzd2FwID8gdGhlaXJDaGFuZ2VzIDogbXlDaGFuZ2VzLCBzd2FwID8gbXlDaGFuZ2VzIDogdGhlaXJDaGFuZ2VzKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBjb25mbGljdChodW5rLCBtaW5lLCB0aGVpcikge1xuICBodW5rLmNvbmZsaWN0ID0gdHJ1ZTtcbiAgaHVuay5saW5lcy5wdXNoKHtcbiAgICBjb25mbGljdDogdHJ1ZSxcbiAgICBtaW5lOiBtaW5lLFxuICAgIHRoZWlyczogdGhlaXJcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGluc2VydExlYWRpbmcoaHVuaywgaW5zZXJ0LCB0aGVpcikge1xuICB3aGlsZSAoaW5zZXJ0Lm9mZnNldCA8IHRoZWlyLm9mZnNldCAmJiBpbnNlcnQuaW5kZXggPCBpbnNlcnQubGluZXMubGVuZ3RoKSB7XG4gICAgbGV0IGxpbmUgPSBpbnNlcnQubGluZXNbaW5zZXJ0LmluZGV4KytdO1xuICAgIGh1bmsubGluZXMucHVzaChsaW5lKTtcbiAgICBpbnNlcnQub2Zmc2V0Kys7XG4gIH1cbn1cbmZ1bmN0aW9uIGluc2VydFRyYWlsaW5nKGh1bmssIGluc2VydCkge1xuICB3aGlsZSAoaW5zZXJ0LmluZGV4IDwgaW5zZXJ0LmxpbmVzLmxlbmd0aCkge1xuICAgIGxldCBsaW5lID0gaW5zZXJ0LmxpbmVzW2luc2VydC5pbmRleCsrXTtcbiAgICBodW5rLmxpbmVzLnB1c2gobGluZSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gY29sbGVjdENoYW5nZShzdGF0ZSkge1xuICBsZXQgcmV0ID0gW10sXG4gICAgICBvcGVyYXRpb24gPSBzdGF0ZS5saW5lc1tzdGF0ZS5pbmRleF1bMF07XG4gIHdoaWxlIChzdGF0ZS5pbmRleCA8IHN0YXRlLmxpbmVzLmxlbmd0aCkge1xuICAgIGxldCBsaW5lID0gc3RhdGUubGluZXNbc3RhdGUuaW5kZXhdO1xuXG4gICAgLy8gR3JvdXAgYWRkaXRpb25zIHRoYXQgYXJlIGltbWVkaWF0ZWx5IGFmdGVyIHN1YnRyYWN0aW9ucyBhbmQgdHJlYXQgdGhlbSBhcyBvbmUgXCJhdG9taWNcIiBtb2RpZnkgY2hhbmdlLlxuICAgIGlmIChvcGVyYXRpb24gPT09ICctJyAmJiBsaW5lWzBdID09PSAnKycpIHtcbiAgICAgIG9wZXJhdGlvbiA9ICcrJztcbiAgICB9XG5cbiAgICBpZiAob3BlcmF0aW9uID09PSBsaW5lWzBdKSB7XG4gICAgICByZXQucHVzaChsaW5lKTtcbiAgICAgIHN0YXRlLmluZGV4Kys7XG4gICAgfSBlbHNlIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXQ7XG59XG5mdW5jdGlvbiBjb2xsZWN0Q29udGV4dChzdGF0ZSwgbWF0Y2hDaGFuZ2VzKSB7XG4gIGxldCBjaGFuZ2VzID0gW10sXG4gICAgICBtZXJnZWQgPSBbXSxcbiAgICAgIG1hdGNoSW5kZXggPSAwLFxuICAgICAgY29udGV4dENoYW5nZXMgPSBmYWxzZSxcbiAgICAgIGNvbmZsaWN0ZWQgPSBmYWxzZTtcbiAgd2hpbGUgKG1hdGNoSW5kZXggPCBtYXRjaENoYW5nZXMubGVuZ3RoXG4gICAgICAgICYmIHN0YXRlLmluZGV4IDwgc3RhdGUubGluZXMubGVuZ3RoKSB7XG4gICAgbGV0IGNoYW5nZSA9IHN0YXRlLmxpbmVzW3N0YXRlLmluZGV4XSxcbiAgICAgICAgbWF0Y2ggPSBtYXRjaENoYW5nZXNbbWF0Y2hJbmRleF07XG5cbiAgICAvLyBPbmNlIHdlJ3ZlIGhpdCBvdXIgYWRkLCB0aGVuIHdlIGFyZSBkb25lXG4gICAgaWYgKG1hdGNoWzBdID09PSAnKycpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGNvbnRleHRDaGFuZ2VzID0gY29udGV4dENoYW5nZXMgfHwgY2hhbmdlWzBdICE9PSAnICc7XG5cbiAgICBtZXJnZWQucHVzaChtYXRjaCk7XG4gICAgbWF0Y2hJbmRleCsrO1xuXG4gICAgLy8gQ29uc3VtZSBhbnkgYWRkaXRpb25zIGluIHRoZSBvdGhlciBibG9jayBhcyBhIGNvbmZsaWN0IHRvIGF0dGVtcHRcbiAgICAvLyB0byBwdWxsIGluIHRoZSByZW1haW5pbmcgY29udGV4dCBhZnRlciB0aGlzXG4gICAgaWYgKGNoYW5nZVswXSA9PT0gJysnKSB7XG4gICAgICBjb25mbGljdGVkID0gdHJ1ZTtcblxuICAgICAgd2hpbGUgKGNoYW5nZVswXSA9PT0gJysnKSB7XG4gICAgICAgIGNoYW5nZXMucHVzaChjaGFuZ2UpO1xuICAgICAgICBjaGFuZ2UgPSBzdGF0ZS5saW5lc1srK3N0YXRlLmluZGV4XTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobWF0Y2guc3Vic3RyKDEpID09PSBjaGFuZ2Uuc3Vic3RyKDEpKSB7XG4gICAgICBjaGFuZ2VzLnB1c2goY2hhbmdlKTtcbiAgICAgIHN0YXRlLmluZGV4Kys7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbmZsaWN0ZWQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIGlmICgobWF0Y2hDaGFuZ2VzW21hdGNoSW5kZXhdIHx8ICcnKVswXSA9PT0gJysnXG4gICAgICAmJiBjb250ZXh0Q2hhbmdlcykge1xuICAgIGNvbmZsaWN0ZWQgPSB0cnVlO1xuICB9XG5cbiAgaWYgKGNvbmZsaWN0ZWQpIHtcbiAgICByZXR1cm4gY2hhbmdlcztcbiAgfVxuXG4gIHdoaWxlIChtYXRjaEluZGV4IDwgbWF0Y2hDaGFuZ2VzLmxlbmd0aCkge1xuICAgIG1lcmdlZC5wdXNoKG1hdGNoQ2hhbmdlc1ttYXRjaEluZGV4KytdKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgbWVyZ2VkLFxuICAgIGNoYW5nZXNcbiAgfTtcbn1cblxuZnVuY3Rpb24gYWxsUmVtb3ZlcyhjaGFuZ2VzKSB7XG4gIHJldHVybiBjaGFuZ2VzLnJlZHVjZShmdW5jdGlvbihwcmV2LCBjaGFuZ2UpIHtcbiAgICByZXR1cm4gcHJldiAmJiBjaGFuZ2VbMF0gPT09ICctJztcbiAgfSwgdHJ1ZSk7XG59XG5mdW5jdGlvbiBza2lwUmVtb3ZlU3VwZXJzZXQoc3RhdGUsIHJlbW92ZUNoYW5nZXMsIGRlbHRhKSB7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgZGVsdGE7IGkrKykge1xuICAgIGxldCBjaGFuZ2VDb250ZW50ID0gcmVtb3ZlQ2hhbmdlc1tyZW1vdmVDaGFuZ2VzLmxlbmd0aCAtIGRlbHRhICsgaV0uc3Vic3RyKDEpO1xuICAgIGlmIChzdGF0ZS5saW5lc1tzdGF0ZS5pbmRleCArIGldICE9PSAnICcgKyBjaGFuZ2VDb250ZW50KSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgc3RhdGUuaW5kZXggKz0gZGVsdGE7XG4gIHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiBjYWxjT2xkTmV3TGluZUNvdW50KGxpbmVzKSB7XG4gIGxldCBvbGRMaW5lcyA9IDA7XG4gIGxldCBuZXdMaW5lcyA9IDA7XG5cbiAgbGluZXMuZm9yRWFjaChmdW5jdGlvbihsaW5lKSB7XG4gICAgaWYgKHR5cGVvZiBsaW5lICE9PSAnc3RyaW5nJykge1xuICAgICAgbGV0IG15Q291bnQgPSBjYWxjT2xkTmV3TGluZUNvdW50KGxpbmUubWluZSk7XG4gICAgICBsZXQgdGhlaXJDb3VudCA9IGNhbGNPbGROZXdMaW5lQ291bnQobGluZS50aGVpcnMpO1xuXG4gICAgICBpZiAob2xkTGluZXMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAobXlDb3VudC5vbGRMaW5lcyA9PT0gdGhlaXJDb3VudC5vbGRMaW5lcykge1xuICAgICAgICAgIG9sZExpbmVzICs9IG15Q291bnQub2xkTGluZXM7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb2xkTGluZXMgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKG5ld0xpbmVzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgaWYgKG15Q291bnQubmV3TGluZXMgPT09IHRoZWlyQ291bnQubmV3TGluZXMpIHtcbiAgICAgICAgICBuZXdMaW5lcyArPSBteUNvdW50Lm5ld0xpbmVzO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG5ld0xpbmVzID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChuZXdMaW5lcyAhPT0gdW5kZWZpbmVkICYmIChsaW5lWzBdID09PSAnKycgfHwgbGluZVswXSA9PT0gJyAnKSkge1xuICAgICAgICBuZXdMaW5lcysrO1xuICAgICAgfVxuICAgICAgaWYgKG9sZExpbmVzICE9PSB1bmRlZmluZWQgJiYgKGxpbmVbMF0gPT09ICctJyB8fCBsaW5lWzBdID09PSAnICcpKSB7XG4gICAgICAgIG9sZExpbmVzKys7XG4gICAgICB9XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4ge29sZExpbmVzLCBuZXdMaW5lc307XG59XG4iLCAiLy8gU2VlOiBodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xlLWRpZmYtbWF0Y2gtcGF0Y2gvd2lraS9BUElcbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0Q2hhbmdlc1RvRE1QKGNoYW5nZXMpIHtcbiAgbGV0IHJldCA9IFtdLFxuICAgICAgY2hhbmdlLFxuICAgICAgb3BlcmF0aW9uO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGNoYW5nZXMubGVuZ3RoOyBpKyspIHtcbiAgICBjaGFuZ2UgPSBjaGFuZ2VzW2ldO1xuICAgIGlmIChjaGFuZ2UuYWRkZWQpIHtcbiAgICAgIG9wZXJhdGlvbiA9IDE7XG4gICAgfSBlbHNlIGlmIChjaGFuZ2UucmVtb3ZlZCkge1xuICAgICAgb3BlcmF0aW9uID0gLTE7XG4gICAgfSBlbHNlIHtcbiAgICAgIG9wZXJhdGlvbiA9IDA7XG4gICAgfVxuXG4gICAgcmV0LnB1c2goW29wZXJhdGlvbiwgY2hhbmdlLnZhbHVlXSk7XG4gIH1cbiAgcmV0dXJuIHJldDtcbn1cbiIsICJleHBvcnQgZnVuY3Rpb24gY29udmVydENoYW5nZXNUb1hNTChjaGFuZ2VzKSB7XG4gIGxldCByZXQgPSBbXTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBjaGFuZ2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgbGV0IGNoYW5nZSA9IGNoYW5nZXNbaV07XG4gICAgaWYgKGNoYW5nZS5hZGRlZCkge1xuICAgICAgcmV0LnB1c2goJzxpbnM+Jyk7XG4gICAgfSBlbHNlIGlmIChjaGFuZ2UucmVtb3ZlZCkge1xuICAgICAgcmV0LnB1c2goJzxkZWw+Jyk7XG4gICAgfVxuXG4gICAgcmV0LnB1c2goZXNjYXBlSFRNTChjaGFuZ2UudmFsdWUpKTtcblxuICAgIGlmIChjaGFuZ2UuYWRkZWQpIHtcbiAgICAgIHJldC5wdXNoKCc8L2lucz4nKTtcbiAgICB9IGVsc2UgaWYgKGNoYW5nZS5yZW1vdmVkKSB7XG4gICAgICByZXQucHVzaCgnPC9kZWw+Jyk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXQuam9pbignJyk7XG59XG5cbmZ1bmN0aW9uIGVzY2FwZUhUTUwocykge1xuICBsZXQgbiA9IHM7XG4gIG4gPSBuLnJlcGxhY2UoLyYvZywgJyZhbXA7Jyk7XG4gIG4gPSBuLnJlcGxhY2UoLzwvZywgJyZsdDsnKTtcbiAgbiA9IG4ucmVwbGFjZSgvPi9nLCAnJmd0OycpO1xuICBuID0gbi5yZXBsYWNlKC9cIi9nLCAnJnF1b3Q7Jyk7XG5cbiAgcmV0dXJuIG47XG59XG4iLCAiLyogU2VlIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMgb2YgdXNlICovXG5cbi8qXG4gKiBUZXh0IGRpZmYgaW1wbGVtZW50YXRpb24uXG4gKlxuICogVGhpcyBsaWJyYXJ5IHN1cHBvcnRzIHRoZSBmb2xsb3dpbmcgQVBJUzpcbiAqIEpzRGlmZi5kaWZmQ2hhcnM6IENoYXJhY3RlciBieSBjaGFyYWN0ZXIgZGlmZlxuICogSnNEaWZmLmRpZmZXb3JkczogV29yZCAoYXMgZGVmaW5lZCBieSBcXGIgcmVnZXgpIGRpZmYgd2hpY2ggaWdub3JlcyB3aGl0ZXNwYWNlXG4gKiBKc0RpZmYuZGlmZkxpbmVzOiBMaW5lIGJhc2VkIGRpZmZcbiAqXG4gKiBKc0RpZmYuZGlmZkNzczogRGlmZiB0YXJnZXRlZCBhdCBDU1MgY29udGVudFxuICpcbiAqIFRoZXNlIG1ldGhvZHMgYXJlIGJhc2VkIG9uIHRoZSBpbXBsZW1lbnRhdGlvbiBwcm9wb3NlZCBpblxuICogXCJBbiBPKE5EKSBEaWZmZXJlbmNlIEFsZ29yaXRobSBhbmQgaXRzIFZhcmlhdGlvbnNcIiAoTXllcnMsIDE5ODYpLlxuICogaHR0cDovL2NpdGVzZWVyeC5pc3QucHN1LmVkdS92aWV3ZG9jL3N1bW1hcnk/ZG9pPTEwLjEuMS40LjY5MjdcbiAqL1xuaW1wb3J0IERpZmYgZnJvbSAnLi9kaWZmL2Jhc2UnO1xuaW1wb3J0IHtkaWZmQ2hhcnN9IGZyb20gJy4vZGlmZi9jaGFyYWN0ZXInO1xuaW1wb3J0IHtkaWZmV29yZHMsIGRpZmZXb3Jkc1dpdGhTcGFjZX0gZnJvbSAnLi9kaWZmL3dvcmQnO1xuaW1wb3J0IHtkaWZmTGluZXMsIGRpZmZUcmltbWVkTGluZXN9IGZyb20gJy4vZGlmZi9saW5lJztcbmltcG9ydCB7ZGlmZlNlbnRlbmNlc30gZnJvbSAnLi9kaWZmL3NlbnRlbmNlJztcblxuaW1wb3J0IHtkaWZmQ3NzfSBmcm9tICcuL2RpZmYvY3NzJztcbmltcG9ydCB7ZGlmZkpzb24sIGNhbm9uaWNhbGl6ZX0gZnJvbSAnLi9kaWZmL2pzb24nO1xuXG5pbXBvcnQge2RpZmZBcnJheXN9IGZyb20gJy4vZGlmZi9hcnJheSc7XG5cbmltcG9ydCB7YXBwbHlQYXRjaCwgYXBwbHlQYXRjaGVzfSBmcm9tICcuL3BhdGNoL2FwcGx5JztcbmltcG9ydCB7cGFyc2VQYXRjaH0gZnJvbSAnLi9wYXRjaC9wYXJzZSc7XG5pbXBvcnQge21lcmdlfSBmcm9tICcuL3BhdGNoL21lcmdlJztcbmltcG9ydCB7c3RydWN0dXJlZFBhdGNoLCBjcmVhdGVUd29GaWxlc1BhdGNoLCBjcmVhdGVQYXRjaH0gZnJvbSAnLi9wYXRjaC9jcmVhdGUnO1xuXG5pbXBvcnQge2NvbnZlcnRDaGFuZ2VzVG9ETVB9IGZyb20gJy4vY29udmVydC9kbXAnO1xuaW1wb3J0IHtjb252ZXJ0Q2hhbmdlc1RvWE1MfSBmcm9tICcuL2NvbnZlcnQveG1sJztcblxuZXhwb3J0IHtcbiAgRGlmZixcblxuICBkaWZmQ2hhcnMsXG4gIGRpZmZXb3JkcyxcbiAgZGlmZldvcmRzV2l0aFNwYWNlLFxuICBkaWZmTGluZXMsXG4gIGRpZmZUcmltbWVkTGluZXMsXG4gIGRpZmZTZW50ZW5jZXMsXG5cbiAgZGlmZkNzcyxcbiAgZGlmZkpzb24sXG5cbiAgZGlmZkFycmF5cyxcblxuICBzdHJ1Y3R1cmVkUGF0Y2gsXG4gIGNyZWF0ZVR3b0ZpbGVzUGF0Y2gsXG4gIGNyZWF0ZVBhdGNoLFxuICBhcHBseVBhdGNoLFxuICBhcHBseVBhdGNoZXMsXG4gIHBhcnNlUGF0Y2gsXG4gIG1lcmdlLFxuICBjb252ZXJ0Q2hhbmdlc1RvRE1QLFxuICBjb252ZXJ0Q2hhbmdlc1RvWE1MLFxuICBjYW5vbmljYWxpemVcbn07XG4iLCAidmFyIGlzQXJyYXkgPSByZXF1aXJlKCcuL2lzQXJyYXknKSxcbiAgICBpc1N5bWJvbCA9IHJlcXVpcmUoJy4vaXNTeW1ib2wnKTtcblxuLyoqIFVzZWQgdG8gbWF0Y2ggcHJvcGVydHkgbmFtZXMgd2l0aGluIHByb3BlcnR5IHBhdGhzLiAqL1xudmFyIHJlSXNEZWVwUHJvcCA9IC9cXC58XFxbKD86W15bXFxdXSp8KFtcIiddKSg/Oig/IVxcMSlbXlxcXFxdfFxcXFwuKSo/XFwxKVxcXS8sXG4gICAgcmVJc1BsYWluUHJvcCA9IC9eXFx3KiQvO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgcHJvcGVydHkgbmFtZSBhbmQgbm90IGEgcHJvcGVydHkgcGF0aC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcGFyYW0ge09iamVjdH0gW29iamVjdF0gVGhlIG9iamVjdCB0byBxdWVyeSBrZXlzIG9uLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBwcm9wZXJ0eSBuYW1lLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGlzS2V5KHZhbHVlLCBvYmplY3QpIHtcbiAgaWYgKGlzQXJyYXkodmFsdWUpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHZhciB0eXBlID0gdHlwZW9mIHZhbHVlO1xuICBpZiAodHlwZSA9PSAnbnVtYmVyJyB8fCB0eXBlID09ICdzeW1ib2wnIHx8IHR5cGUgPT0gJ2Jvb2xlYW4nIHx8XG4gICAgICB2YWx1ZSA9PSBudWxsIHx8IGlzU3ltYm9sKHZhbHVlKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHJldHVybiByZUlzUGxhaW5Qcm9wLnRlc3QodmFsdWUpIHx8ICFyZUlzRGVlcFByb3AudGVzdCh2YWx1ZSkgfHxcbiAgICAob2JqZWN0ICE9IG51bGwgJiYgdmFsdWUgaW4gT2JqZWN0KG9iamVjdCkpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzS2V5O1xuIiwgInZhciBNYXBDYWNoZSA9IHJlcXVpcmUoJy4vX01hcENhY2hlJyk7XG5cbi8qKiBFcnJvciBtZXNzYWdlIGNvbnN0YW50cy4gKi9cbnZhciBGVU5DX0VSUk9SX1RFWFQgPSAnRXhwZWN0ZWQgYSBmdW5jdGlvbic7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgbWVtb2l6ZXMgdGhlIHJlc3VsdCBvZiBgZnVuY2AuIElmIGByZXNvbHZlcmAgaXNcbiAqIHByb3ZpZGVkLCBpdCBkZXRlcm1pbmVzIHRoZSBjYWNoZSBrZXkgZm9yIHN0b3JpbmcgdGhlIHJlc3VsdCBiYXNlZCBvbiB0aGVcbiAqIGFyZ3VtZW50cyBwcm92aWRlZCB0byB0aGUgbWVtb2l6ZWQgZnVuY3Rpb24uIEJ5IGRlZmF1bHQsIHRoZSBmaXJzdCBhcmd1bWVudFxuICogcHJvdmlkZWQgdG8gdGhlIG1lbW9pemVkIGZ1bmN0aW9uIGlzIHVzZWQgYXMgdGhlIG1hcCBjYWNoZSBrZXkuIFRoZSBgZnVuY2BcbiAqIGlzIGludm9rZWQgd2l0aCB0aGUgYHRoaXNgIGJpbmRpbmcgb2YgdGhlIG1lbW9pemVkIGZ1bmN0aW9uLlxuICpcbiAqICoqTm90ZToqKiBUaGUgY2FjaGUgaXMgZXhwb3NlZCBhcyB0aGUgYGNhY2hlYCBwcm9wZXJ0eSBvbiB0aGUgbWVtb2l6ZWRcbiAqIGZ1bmN0aW9uLiBJdHMgY3JlYXRpb24gbWF5IGJlIGN1c3RvbWl6ZWQgYnkgcmVwbGFjaW5nIHRoZSBgXy5tZW1vaXplLkNhY2hlYFxuICogY29uc3RydWN0b3Igd2l0aCBvbmUgd2hvc2UgaW5zdGFuY2VzIGltcGxlbWVudCB0aGVcbiAqIFtgTWFwYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtcHJvcGVydGllcy1vZi10aGUtbWFwLXByb3RvdHlwZS1vYmplY3QpXG4gKiBtZXRob2QgaW50ZXJmYWNlIG9mIGBjbGVhcmAsIGBkZWxldGVgLCBgZ2V0YCwgYGhhc2AsIGFuZCBgc2V0YC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGhhdmUgaXRzIG91dHB1dCBtZW1vaXplZC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtyZXNvbHZlcl0gVGhlIGZ1bmN0aW9uIHRvIHJlc29sdmUgdGhlIGNhY2hlIGtleS5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IG1lbW9pemVkIGZ1bmN0aW9uLlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgb2JqZWN0ID0geyAnYSc6IDEsICdiJzogMiB9O1xuICogdmFyIG90aGVyID0geyAnYyc6IDMsICdkJzogNCB9O1xuICpcbiAqIHZhciB2YWx1ZXMgPSBfLm1lbW9pemUoXy52YWx1ZXMpO1xuICogdmFsdWVzKG9iamVjdCk7XG4gKiAvLyA9PiBbMSwgMl1cbiAqXG4gKiB2YWx1ZXMob3RoZXIpO1xuICogLy8gPT4gWzMsIDRdXG4gKlxuICogb2JqZWN0LmEgPSAyO1xuICogdmFsdWVzKG9iamVjdCk7XG4gKiAvLyA9PiBbMSwgMl1cbiAqXG4gKiAvLyBNb2RpZnkgdGhlIHJlc3VsdCBjYWNoZS5cbiAqIHZhbHVlcy5jYWNoZS5zZXQob2JqZWN0LCBbJ2EnLCAnYiddKTtcbiAqIHZhbHVlcyhvYmplY3QpO1xuICogLy8gPT4gWydhJywgJ2InXVxuICpcbiAqIC8vIFJlcGxhY2UgYF8ubWVtb2l6ZS5DYWNoZWAuXG4gKiBfLm1lbW9pemUuQ2FjaGUgPSBXZWFrTWFwO1xuICovXG5mdW5jdGlvbiBtZW1vaXplKGZ1bmMsIHJlc29sdmVyKSB7XG4gIGlmICh0eXBlb2YgZnVuYyAhPSAnZnVuY3Rpb24nIHx8IChyZXNvbHZlciAhPSBudWxsICYmIHR5cGVvZiByZXNvbHZlciAhPSAnZnVuY3Rpb24nKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoRlVOQ19FUlJPUl9URVhUKTtcbiAgfVxuICB2YXIgbWVtb2l6ZWQgPSBmdW5jdGlvbigpIHtcbiAgICB2YXIgYXJncyA9IGFyZ3VtZW50cyxcbiAgICAgICAga2V5ID0gcmVzb2x2ZXIgPyByZXNvbHZlci5hcHBseSh0aGlzLCBhcmdzKSA6IGFyZ3NbMF0sXG4gICAgICAgIGNhY2hlID0gbWVtb2l6ZWQuY2FjaGU7XG5cbiAgICBpZiAoY2FjaGUuaGFzKGtleSkpIHtcbiAgICAgIHJldHVybiBjYWNoZS5nZXQoa2V5KTtcbiAgICB9XG4gICAgdmFyIHJlc3VsdCA9IGZ1bmMuYXBwbHkodGhpcywgYXJncyk7XG4gICAgbWVtb2l6ZWQuY2FjaGUgPSBjYWNoZS5zZXQoa2V5LCByZXN1bHQpIHx8IGNhY2hlO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG4gIG1lbW9pemVkLmNhY2hlID0gbmV3IChtZW1vaXplLkNhY2hlIHx8IE1hcENhY2hlKTtcbiAgcmV0dXJuIG1lbW9pemVkO1xufVxuXG4vLyBFeHBvc2UgYE1hcENhY2hlYC5cbm1lbW9pemUuQ2FjaGUgPSBNYXBDYWNoZTtcblxubW9kdWxlLmV4cG9ydHMgPSBtZW1vaXplO1xuIiwgInZhciBtZW1vaXplID0gcmVxdWlyZSgnLi9tZW1vaXplJyk7XG5cbi8qKiBVc2VkIGFzIHRoZSBtYXhpbXVtIG1lbW9pemUgY2FjaGUgc2l6ZS4gKi9cbnZhciBNQVhfTUVNT0laRV9TSVpFID0gNTAwO1xuXG4vKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5tZW1vaXplYCB3aGljaCBjbGVhcnMgdGhlIG1lbW9pemVkIGZ1bmN0aW9uJ3NcbiAqIGNhY2hlIHdoZW4gaXQgZXhjZWVkcyBgTUFYX01FTU9JWkVfU0laRWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGhhdmUgaXRzIG91dHB1dCBtZW1vaXplZC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IG1lbW9pemVkIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBtZW1vaXplQ2FwcGVkKGZ1bmMpIHtcbiAgdmFyIHJlc3VsdCA9IG1lbW9pemUoZnVuYywgZnVuY3Rpb24oa2V5KSB7XG4gICAgaWYgKGNhY2hlLnNpemUgPT09IE1BWF9NRU1PSVpFX1NJWkUpIHtcbiAgICAgIGNhY2hlLmNsZWFyKCk7XG4gICAgfVxuICAgIHJldHVybiBrZXk7XG4gIH0pO1xuXG4gIHZhciBjYWNoZSA9IHJlc3VsdC5jYWNoZTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBtZW1vaXplQ2FwcGVkO1xuIiwgInZhciBtZW1vaXplQ2FwcGVkID0gcmVxdWlyZSgnLi9fbWVtb2l6ZUNhcHBlZCcpO1xuXG4vKiogVXNlZCB0byBtYXRjaCBwcm9wZXJ0eSBuYW1lcyB3aXRoaW4gcHJvcGVydHkgcGF0aHMuICovXG52YXIgcmVQcm9wTmFtZSA9IC9bXi5bXFxdXSt8XFxbKD86KC0/XFxkKyg/OlxcLlxcZCspPyl8KFtcIiddKSgoPzooPyFcXDIpW15cXFxcXXxcXFxcLikqPylcXDIpXFxdfCg/PSg/OlxcLnxcXFtcXF0pKD86XFwufFxcW1xcXXwkKSkvZztcblxuLyoqIFVzZWQgdG8gbWF0Y2ggYmFja3NsYXNoZXMgaW4gcHJvcGVydHkgcGF0aHMuICovXG52YXIgcmVFc2NhcGVDaGFyID0gL1xcXFwoXFxcXCk/L2c7XG5cbi8qKlxuICogQ29udmVydHMgYHN0cmluZ2AgdG8gYSBwcm9wZXJ0eSBwYXRoIGFycmF5LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgcHJvcGVydHkgcGF0aCBhcnJheS5cbiAqL1xudmFyIHN0cmluZ1RvUGF0aCA9IG1lbW9pemVDYXBwZWQoZnVuY3Rpb24oc3RyaW5nKSB7XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgaWYgKHN0cmluZy5jaGFyQ29kZUF0KDApID09PSA0NiAvKiAuICovKSB7XG4gICAgcmVzdWx0LnB1c2goJycpO1xuICB9XG4gIHN0cmluZy5yZXBsYWNlKHJlUHJvcE5hbWUsIGZ1bmN0aW9uKG1hdGNoLCBudW1iZXIsIHF1b3RlLCBzdWJTdHJpbmcpIHtcbiAgICByZXN1bHQucHVzaChxdW90ZSA/IHN1YlN0cmluZy5yZXBsYWNlKHJlRXNjYXBlQ2hhciwgJyQxJykgOiAobnVtYmVyIHx8IG1hdGNoKSk7XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gc3RyaW5nVG9QYXRoO1xuIiwgInZhciBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5JyksXG4gICAgaXNLZXkgPSByZXF1aXJlKCcuL19pc0tleScpLFxuICAgIHN0cmluZ1RvUGF0aCA9IHJlcXVpcmUoJy4vX3N0cmluZ1RvUGF0aCcpLFxuICAgIHRvU3RyaW5nID0gcmVxdWlyZSgnLi90b1N0cmluZycpO1xuXG4vKipcbiAqIENhc3RzIGB2YWx1ZWAgdG8gYSBwYXRoIGFycmF5IGlmIGl0J3Mgbm90IG9uZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gaW5zcGVjdC5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0XSBUaGUgb2JqZWN0IHRvIHF1ZXJ5IGtleXMgb24uXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGNhc3QgcHJvcGVydHkgcGF0aCBhcnJheS5cbiAqL1xuZnVuY3Rpb24gY2FzdFBhdGgodmFsdWUsIG9iamVjdCkge1xuICBpZiAoaXNBcnJheSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgcmV0dXJuIGlzS2V5KHZhbHVlLCBvYmplY3QpID8gW3ZhbHVlXSA6IHN0cmluZ1RvUGF0aCh0b1N0cmluZyh2YWx1ZSkpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNhc3RQYXRoO1xuIiwgInZhciBpc1N5bWJvbCA9IHJlcXVpcmUoJy4vaXNTeW1ib2wnKTtcblxuLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdmFyaW91cyBgTnVtYmVyYCBjb25zdGFudHMuICovXG52YXIgSU5GSU5JVFkgPSAxIC8gMDtcblxuLyoqXG4gKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGEgc3RyaW5nIGtleSBpZiBpdCdzIG5vdCBhIHN0cmluZyBvciBzeW1ib2wuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGluc3BlY3QuXG4gKiBAcmV0dXJucyB7c3RyaW5nfHN5bWJvbH0gUmV0dXJucyB0aGUga2V5LlxuICovXG5mdW5jdGlvbiB0b0tleSh2YWx1ZSkge1xuICBpZiAodHlwZW9mIHZhbHVlID09ICdzdHJpbmcnIHx8IGlzU3ltYm9sKHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICB2YXIgcmVzdWx0ID0gKHZhbHVlICsgJycpO1xuICByZXR1cm4gKHJlc3VsdCA9PSAnMCcgJiYgKDEgLyB2YWx1ZSkgPT0gLUlORklOSVRZKSA/ICctMCcgOiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdG9LZXk7XG4iLCAidmFyIGNhc3RQYXRoID0gcmVxdWlyZSgnLi9fY2FzdFBhdGgnKSxcbiAgICB0b0tleSA9IHJlcXVpcmUoJy4vX3RvS2V5Jyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uZ2V0YCB3aXRob3V0IHN1cHBvcnQgZm9yIGRlZmF1bHQgdmFsdWVzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHJlc29sdmVkIHZhbHVlLlxuICovXG5mdW5jdGlvbiBiYXNlR2V0KG9iamVjdCwgcGF0aCkge1xuICBwYXRoID0gY2FzdFBhdGgocGF0aCwgb2JqZWN0KTtcblxuICB2YXIgaW5kZXggPSAwLFxuICAgICAgbGVuZ3RoID0gcGF0aC5sZW5ndGg7XG5cbiAgd2hpbGUgKG9iamVjdCAhPSBudWxsICYmIGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgb2JqZWN0ID0gb2JqZWN0W3RvS2V5KHBhdGhbaW5kZXgrK10pXTtcbiAgfVxuICByZXR1cm4gKGluZGV4ICYmIGluZGV4ID09IGxlbmd0aCkgPyBvYmplY3QgOiB1bmRlZmluZWQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUdldDtcbiIsICJ2YXIgYXNzaWduVmFsdWUgPSByZXF1aXJlKCcuL19hc3NpZ25WYWx1ZScpLFxuICAgIGNhc3RQYXRoID0gcmVxdWlyZSgnLi9fY2FzdFBhdGgnKSxcbiAgICBpc0luZGV4ID0gcmVxdWlyZSgnLi9faXNJbmRleCcpLFxuICAgIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9pc09iamVjdCcpLFxuICAgIHRvS2V5ID0gcmVxdWlyZSgnLi9fdG9LZXknKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5zZXRgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gbW9kaWZ5LlxuICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIHNldC5cbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNldC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIHBhdGggY3JlYXRpb24uXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICovXG5mdW5jdGlvbiBiYXNlU2V0KG9iamVjdCwgcGF0aCwgdmFsdWUsIGN1c3RvbWl6ZXIpIHtcbiAgaWYgKCFpc09iamVjdChvYmplY3QpKSB7XG4gICAgcmV0dXJuIG9iamVjdDtcbiAgfVxuICBwYXRoID0gY2FzdFBhdGgocGF0aCwgb2JqZWN0KTtcblxuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IHBhdGgubGVuZ3RoLFxuICAgICAgbGFzdEluZGV4ID0gbGVuZ3RoIC0gMSxcbiAgICAgIG5lc3RlZCA9IG9iamVjdDtcblxuICB3aGlsZSAobmVzdGVkICE9IG51bGwgJiYgKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhciBrZXkgPSB0b0tleShwYXRoW2luZGV4XSksXG4gICAgICAgIG5ld1ZhbHVlID0gdmFsdWU7XG5cbiAgICBpZiAoa2V5ID09PSAnX19wcm90b19fJyB8fCBrZXkgPT09ICdjb25zdHJ1Y3RvcicgfHwga2V5ID09PSAncHJvdG90eXBlJykge1xuICAgICAgcmV0dXJuIG9iamVjdDtcbiAgICB9XG5cbiAgICBpZiAoaW5kZXggIT0gbGFzdEluZGV4KSB7XG4gICAgICB2YXIgb2JqVmFsdWUgPSBuZXN0ZWRba2V5XTtcbiAgICAgIG5ld1ZhbHVlID0gY3VzdG9taXplciA/IGN1c3RvbWl6ZXIob2JqVmFsdWUsIGtleSwgbmVzdGVkKSA6IHVuZGVmaW5lZDtcbiAgICAgIGlmIChuZXdWYWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIG5ld1ZhbHVlID0gaXNPYmplY3Qob2JqVmFsdWUpXG4gICAgICAgICAgPyBvYmpWYWx1ZVxuICAgICAgICAgIDogKGlzSW5kZXgocGF0aFtpbmRleCArIDFdKSA/IFtdIDoge30pO1xuICAgICAgfVxuICAgIH1cbiAgICBhc3NpZ25WYWx1ZShuZXN0ZWQsIGtleSwgbmV3VmFsdWUpO1xuICAgIG5lc3RlZCA9IG5lc3RlZFtrZXldO1xuICB9XG4gIHJldHVybiBvYmplY3Q7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZVNldDtcbiIsICJ2YXIgYmFzZUdldCA9IHJlcXVpcmUoJy4vX2Jhc2VHZXQnKSxcbiAgICBiYXNlU2V0ID0gcmVxdWlyZSgnLi9fYmFzZVNldCcpLFxuICAgIGNhc3RQYXRoID0gcmVxdWlyZSgnLi9fY2FzdFBhdGgnKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiAgYF8ucGlja0J5YCB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIHNvdXJjZSBvYmplY3QuXG4gKiBAcGFyYW0ge3N0cmluZ1tdfSBwYXRocyBUaGUgcHJvcGVydHkgcGF0aHMgdG8gcGljay5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHByZWRpY2F0ZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgcHJvcGVydHkuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgb2JqZWN0LlxuICovXG5mdW5jdGlvbiBiYXNlUGlja0J5KG9iamVjdCwgcGF0aHMsIHByZWRpY2F0ZSkge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IHBhdGhzLmxlbmd0aCxcbiAgICAgIHJlc3VsdCA9IHt9O1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdmFyIHBhdGggPSBwYXRoc1tpbmRleF0sXG4gICAgICAgIHZhbHVlID0gYmFzZUdldChvYmplY3QsIHBhdGgpO1xuXG4gICAgaWYgKHByZWRpY2F0ZSh2YWx1ZSwgcGF0aCkpIHtcbiAgICAgIGJhc2VTZXQocmVzdWx0LCBjYXN0UGF0aChwYXRoLCBvYmplY3QpLCB2YWx1ZSk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZVBpY2tCeTtcbiIsICIvKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmhhc0luYCB3aXRob3V0IHN1cHBvcnQgZm9yIGRlZXAgcGF0aHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0XSBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IGtleSBUaGUga2V5IHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBrZXlgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBiYXNlSGFzSW4ob2JqZWN0LCBrZXkpIHtcbiAgcmV0dXJuIG9iamVjdCAhPSBudWxsICYmIGtleSBpbiBPYmplY3Qob2JqZWN0KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlSGFzSW47XG4iLCAidmFyIGNhc3RQYXRoID0gcmVxdWlyZSgnLi9fY2FzdFBhdGgnKSxcbiAgICBpc0FyZ3VtZW50cyA9IHJlcXVpcmUoJy4vaXNBcmd1bWVudHMnKSxcbiAgICBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5JyksXG4gICAgaXNJbmRleCA9IHJlcXVpcmUoJy4vX2lzSW5kZXgnKSxcbiAgICBpc0xlbmd0aCA9IHJlcXVpcmUoJy4vaXNMZW5ndGgnKSxcbiAgICB0b0tleSA9IHJlcXVpcmUoJy4vX3RvS2V5Jyk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGBwYXRoYCBleGlzdHMgb24gYG9iamVjdGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIHRvIGNoZWNrLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gaGFzRnVuYyBUaGUgZnVuY3Rpb24gdG8gY2hlY2sgcHJvcGVydGllcy5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgcGF0aGAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGhhc1BhdGgob2JqZWN0LCBwYXRoLCBoYXNGdW5jKSB7XG4gIHBhdGggPSBjYXN0UGF0aChwYXRoLCBvYmplY3QpO1xuXG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gcGF0aC5sZW5ndGgsXG4gICAgICByZXN1bHQgPSBmYWxzZTtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhciBrZXkgPSB0b0tleShwYXRoW2luZGV4XSk7XG4gICAgaWYgKCEocmVzdWx0ID0gb2JqZWN0ICE9IG51bGwgJiYgaGFzRnVuYyhvYmplY3QsIGtleSkpKSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgb2JqZWN0ID0gb2JqZWN0W2tleV07XG4gIH1cbiAgaWYgKHJlc3VsdCB8fCArK2luZGV4ICE9IGxlbmd0aCkge1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbiAgbGVuZ3RoID0gb2JqZWN0ID09IG51bGwgPyAwIDogb2JqZWN0Lmxlbmd0aDtcbiAgcmV0dXJuICEhbGVuZ3RoICYmIGlzTGVuZ3RoKGxlbmd0aCkgJiYgaXNJbmRleChrZXksIGxlbmd0aCkgJiZcbiAgICAoaXNBcnJheShvYmplY3QpIHx8IGlzQXJndW1lbnRzKG9iamVjdCkpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGhhc1BhdGg7XG4iLCAidmFyIGJhc2VIYXNJbiA9IHJlcXVpcmUoJy4vX2Jhc2VIYXNJbicpLFxuICAgIGhhc1BhdGggPSByZXF1aXJlKCcuL19oYXNQYXRoJyk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGBwYXRoYCBpcyBhIGRpcmVjdCBvciBpbmhlcml0ZWQgcHJvcGVydHkgb2YgYG9iamVjdGAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IE9iamVjdFxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHBhdGhgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgb2JqZWN0ID0gXy5jcmVhdGUoeyAnYSc6IF8uY3JlYXRlKHsgJ2InOiAyIH0pIH0pO1xuICpcbiAqIF8uaGFzSW4ob2JqZWN0LCAnYScpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaGFzSW4ob2JqZWN0LCAnYS5iJyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5oYXNJbihvYmplY3QsIFsnYScsICdiJ10pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaGFzSW4ob2JqZWN0LCAnYicpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaGFzSW4ob2JqZWN0LCBwYXRoKSB7XG4gIHJldHVybiBvYmplY3QgIT0gbnVsbCAmJiBoYXNQYXRoKG9iamVjdCwgcGF0aCwgYmFzZUhhc0luKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBoYXNJbjtcbiIsICJ2YXIgYmFzZVBpY2tCeSA9IHJlcXVpcmUoJy4vX2Jhc2VQaWNrQnknKSxcbiAgICBoYXNJbiA9IHJlcXVpcmUoJy4vaGFzSW4nKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5waWNrYCB3aXRob3V0IHN1cHBvcnQgZm9yIGluZGl2aWR1YWxcbiAqIHByb3BlcnR5IGlkZW50aWZpZXJzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBzb3VyY2Ugb2JqZWN0LlxuICogQHBhcmFtIHtzdHJpbmdbXX0gcGF0aHMgVGhlIHByb3BlcnR5IHBhdGhzIHRvIHBpY2suXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgb2JqZWN0LlxuICovXG5mdW5jdGlvbiBiYXNlUGljayhvYmplY3QsIHBhdGhzKSB7XG4gIHJldHVybiBiYXNlUGlja0J5KG9iamVjdCwgcGF0aHMsIGZ1bmN0aW9uKHZhbHVlLCBwYXRoKSB7XG4gICAgcmV0dXJuIGhhc0luKG9iamVjdCwgcGF0aCk7XG4gIH0pO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VQaWNrO1xuIiwgInZhciBTeW1ib2wgPSByZXF1aXJlKCcuL19TeW1ib2wnKSxcbiAgICBpc0FyZ3VtZW50cyA9IHJlcXVpcmUoJy4vaXNBcmd1bWVudHMnKSxcbiAgICBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5Jyk7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIHNwcmVhZGFibGVTeW1ib2wgPSBTeW1ib2wgPyBTeW1ib2wuaXNDb25jYXRTcHJlYWRhYmxlIDogdW5kZWZpbmVkO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgZmxhdHRlbmFibGUgYGFyZ3VtZW50c2Agb2JqZWN0IG9yIGFycmF5LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGZsYXR0ZW5hYmxlLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGlzRmxhdHRlbmFibGUodmFsdWUpIHtcbiAgcmV0dXJuIGlzQXJyYXkodmFsdWUpIHx8IGlzQXJndW1lbnRzKHZhbHVlKSB8fFxuICAgICEhKHNwcmVhZGFibGVTeW1ib2wgJiYgdmFsdWUgJiYgdmFsdWVbc3ByZWFkYWJsZVN5bWJvbF0pO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzRmxhdHRlbmFibGU7XG4iLCAidmFyIGFycmF5UHVzaCA9IHJlcXVpcmUoJy4vX2FycmF5UHVzaCcpLFxuICAgIGlzRmxhdHRlbmFibGUgPSByZXF1aXJlKCcuL19pc0ZsYXR0ZW5hYmxlJyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uZmxhdHRlbmAgd2l0aCBzdXBwb3J0IGZvciByZXN0cmljdGluZyBmbGF0dGVuaW5nLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gZmxhdHRlbi5cbiAqIEBwYXJhbSB7bnVtYmVyfSBkZXB0aCBUaGUgbWF4aW11bSByZWN1cnNpb24gZGVwdGguXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtwcmVkaWNhdGU9aXNGbGF0dGVuYWJsZV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2lzU3RyaWN0XSBSZXN0cmljdCB0byB2YWx1ZXMgdGhhdCBwYXNzIGBwcmVkaWNhdGVgIGNoZWNrcy5cbiAqIEBwYXJhbSB7QXJyYXl9IFtyZXN1bHQ9W11dIFRoZSBpbml0aWFsIHJlc3VsdCB2YWx1ZS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGZsYXR0ZW5lZCBhcnJheS5cbiAqL1xuZnVuY3Rpb24gYmFzZUZsYXR0ZW4oYXJyYXksIGRlcHRoLCBwcmVkaWNhdGUsIGlzU3RyaWN0LCByZXN1bHQpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgcHJlZGljYXRlIHx8IChwcmVkaWNhdGUgPSBpc0ZsYXR0ZW5hYmxlKTtcbiAgcmVzdWx0IHx8IChyZXN1bHQgPSBbXSk7XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICB2YXIgdmFsdWUgPSBhcnJheVtpbmRleF07XG4gICAgaWYgKGRlcHRoID4gMCAmJiBwcmVkaWNhdGUodmFsdWUpKSB7XG4gICAgICBpZiAoZGVwdGggPiAxKSB7XG4gICAgICAgIC8vIFJlY3Vyc2l2ZWx5IGZsYXR0ZW4gYXJyYXlzIChzdXNjZXB0aWJsZSB0byBjYWxsIHN0YWNrIGxpbWl0cykuXG4gICAgICAgIGJhc2VGbGF0dGVuKHZhbHVlLCBkZXB0aCAtIDEsIHByZWRpY2F0ZSwgaXNTdHJpY3QsIHJlc3VsdCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhcnJheVB1c2gocmVzdWx0LCB2YWx1ZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICghaXNTdHJpY3QpIHtcbiAgICAgIHJlc3VsdFtyZXN1bHQubGVuZ3RoXSA9IHZhbHVlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VGbGF0dGVuO1xuIiwgInZhciBiYXNlRmxhdHRlbiA9IHJlcXVpcmUoJy4vX2Jhc2VGbGF0dGVuJyk7XG5cbi8qKlxuICogRmxhdHRlbnMgYGFycmF5YCBhIHNpbmdsZSBsZXZlbCBkZWVwLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBBcnJheVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGZsYXR0ZW4uXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBmbGF0dGVuZWQgYXJyYXkuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uZmxhdHRlbihbMSwgWzIsIFszLCBbNF1dLCA1XV0pO1xuICogLy8gPT4gWzEsIDIsIFszLCBbNF1dLCA1XVxuICovXG5mdW5jdGlvbiBmbGF0dGVuKGFycmF5KSB7XG4gIHZhciBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcbiAgcmV0dXJuIGxlbmd0aCA/IGJhc2VGbGF0dGVuKGFycmF5LCAxKSA6IFtdO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZsYXR0ZW47XG4iLCAidmFyIGZsYXR0ZW4gPSByZXF1aXJlKCcuL2ZsYXR0ZW4nKSxcbiAgICBvdmVyUmVzdCA9IHJlcXVpcmUoJy4vX292ZXJSZXN0JyksXG4gICAgc2V0VG9TdHJpbmcgPSByZXF1aXJlKCcuL19zZXRUb1N0cmluZycpO1xuXG4vKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZVJlc3RgIHdoaWNoIGZsYXR0ZW5zIHRoZSByZXN0IGFycmF5LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBhcHBseSBhIHJlc3QgcGFyYW1ldGVyIHRvLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGZsYXRSZXN0KGZ1bmMpIHtcbiAgcmV0dXJuIHNldFRvU3RyaW5nKG92ZXJSZXN0KGZ1bmMsIHVuZGVmaW5lZCwgZmxhdHRlbiksIGZ1bmMgKyAnJyk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZmxhdFJlc3Q7XG4iLCAidmFyIGJhc2VQaWNrID0gcmVxdWlyZSgnLi9fYmFzZVBpY2snKSxcbiAgICBmbGF0UmVzdCA9IHJlcXVpcmUoJy4vX2ZsYXRSZXN0Jyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBvYmplY3QgY29tcG9zZWQgb2YgdGhlIHBpY2tlZCBgb2JqZWN0YCBwcm9wZXJ0aWVzLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBzaW5jZSAwLjEuMFxuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBPYmplY3RcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIHNvdXJjZSBvYmplY3QuXG4gKiBAcGFyYW0gey4uLihzdHJpbmd8c3RyaW5nW10pfSBbcGF0aHNdIFRoZSBwcm9wZXJ0eSBwYXRocyB0byBwaWNrLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IG9iamVjdC5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxLCAnYic6ICcyJywgJ2MnOiAzIH07XG4gKlxuICogXy5waWNrKG9iamVjdCwgWydhJywgJ2MnXSk7XG4gKiAvLyA9PiB7ICdhJzogMSwgJ2MnOiAzIH1cbiAqL1xudmFyIHBpY2sgPSBmbGF0UmVzdChmdW5jdGlvbihvYmplY3QsIHBhdGhzKSB7XG4gIHJldHVybiBvYmplY3QgPT0gbnVsbCA/IHt9IDogYmFzZVBpY2sob2JqZWN0LCBwYXRocyk7XG59KTtcblxubW9kdWxlLmV4cG9ydHMgPSBwaWNrO1xuIiwgIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5SdW5JbnN0YWxsUGxlYXNlUmVzb2x2ZXIgPSB2b2lkIDA7XG5jb25zdCBNZXNzYWdlTmFtZV8xID0gcmVxdWlyZShcIi4vTWVzc2FnZU5hbWVcIik7XG5jb25zdCBSZXBvcnRfMSA9IHJlcXVpcmUoXCIuL1JlcG9ydFwiKTtcbmNsYXNzIFJ1bkluc3RhbGxQbGVhc2VSZXNvbHZlciB7XG4gICAgY29uc3RydWN0b3IocmVzb2x2ZXIpIHtcbiAgICAgICAgdGhpcy5yZXNvbHZlciA9IHJlc29sdmVyO1xuICAgIH1cbiAgICBzdXBwb3J0c0Rlc2NyaXB0b3IoZGVzY3JpcHRvciwgb3B0cykge1xuICAgICAgICByZXR1cm4gdGhpcy5yZXNvbHZlci5zdXBwb3J0c0Rlc2NyaXB0b3IoZGVzY3JpcHRvciwgb3B0cyk7XG4gICAgfVxuICAgIHN1cHBvcnRzTG9jYXRvcihsb2NhdG9yLCBvcHRzKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlc29sdmVyLnN1cHBvcnRzTG9jYXRvcihsb2NhdG9yLCBvcHRzKTtcbiAgICB9XG4gICAgc2hvdWxkUGVyc2lzdFJlc29sdXRpb24obG9jYXRvciwgb3B0cykge1xuICAgICAgICByZXR1cm4gdGhpcy5yZXNvbHZlci5zaG91bGRQZXJzaXN0UmVzb2x1dGlvbihsb2NhdG9yLCBvcHRzKTtcbiAgICB9XG4gICAgYmluZERlc2NyaXB0b3IoZGVzY3JpcHRvciwgZnJvbUxvY2F0b3IsIG9wdHMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVzb2x2ZXIuYmluZERlc2NyaXB0b3IoZGVzY3JpcHRvciwgZnJvbUxvY2F0b3IsIG9wdHMpO1xuICAgIH1cbiAgICBnZXRSZXNvbHV0aW9uRGVwZW5kZW5jaWVzKGRlc2NyaXB0b3IsIG9wdHMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVzb2x2ZXIuZ2V0UmVzb2x1dGlvbkRlcGVuZGVuY2llcyhkZXNjcmlwdG9yLCBvcHRzKTtcbiAgICB9XG4gICAgYXN5bmMgZ2V0Q2FuZGlkYXRlcyhkZXNjcmlwdG9yLCBkZXBlbmRlbmNpZXMsIG9wdHMpIHtcbiAgICAgICAgdGhyb3cgbmV3IFJlcG9ydF8xLlJlcG9ydEVycm9yKE1lc3NhZ2VOYW1lXzEuTWVzc2FnZU5hbWUuTUlTU0lOR19MT0NLRklMRV9FTlRSWSwgYFRoaXMgcGFja2FnZSBkb2Vzbid0IHNlZW0gdG8gYmUgcHJlc2VudCBpbiB5b3VyIGxvY2tmaWxlOyBydW4gXCJ5YXJuIGluc3RhbGxcIiB0byB1cGRhdGUgdGhlIGxvY2tmaWxlYCk7XG4gICAgfVxuICAgIGFzeW5jIGdldFNhdGlzZnlpbmcoZGVzY3JpcHRvciwgZGVwZW5kZW5jaWVzLCBsb2NhdG9ycywgb3B0cykge1xuICAgICAgICB0aHJvdyBuZXcgUmVwb3J0XzEuUmVwb3J0RXJyb3IoTWVzc2FnZU5hbWVfMS5NZXNzYWdlTmFtZS5NSVNTSU5HX0xPQ0tGSUxFX0VOVFJZLCBgVGhpcyBwYWNrYWdlIGRvZXNuJ3Qgc2VlbSB0byBiZSBwcmVzZW50IGluIHlvdXIgbG9ja2ZpbGU7IHJ1biBcInlhcm4gaW5zdGFsbFwiIHRvIHVwZGF0ZSB0aGUgbG9ja2ZpbGVgKTtcbiAgICB9XG4gICAgYXN5bmMgcmVzb2x2ZShsb2NhdG9yLCBvcHRzKSB7XG4gICAgICAgIHRocm93IG5ldyBSZXBvcnRfMS5SZXBvcnRFcnJvcihNZXNzYWdlTmFtZV8xLk1lc3NhZ2VOYW1lLk1JU1NJTkdfTE9DS0ZJTEVfRU5UUlksIGBUaGlzIHBhY2thZ2UgZG9lc24ndCBzZWVtIHRvIGJlIHByZXNlbnQgaW4geW91ciBsb2NrZmlsZTsgcnVuIFwieWFybiBpbnN0YWxsXCIgdG8gdXBkYXRlIHRoZSBsb2NrZmlsZWApO1xuICAgIH1cbn1cbmV4cG9ydHMuUnVuSW5zdGFsbFBsZWFzZVJlc29sdmVyID0gUnVuSW5zdGFsbFBsZWFzZVJlc29sdmVyO1xuIiwgIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5UaHJvd1JlcG9ydCA9IHZvaWQgMDtcbmNvbnN0IFJlcG9ydF8xID0gcmVxdWlyZShcIi4vUmVwb3J0XCIpO1xuY2xhc3MgVGhyb3dSZXBvcnQgZXh0ZW5kcyBSZXBvcnRfMS5SZXBvcnQge1xuICAgIHJlcG9ydENhY2hlSGl0KGxvY2F0b3IpIHtcbiAgICB9XG4gICAgcmVwb3J0Q2FjaGVNaXNzKGxvY2F0b3IpIHtcbiAgICB9XG4gICAgc3RhcnRTZWN0aW9uU3luYyhvcHRzLCBjYikge1xuICAgICAgICByZXR1cm4gY2IoKTtcbiAgICB9XG4gICAgYXN5bmMgc3RhcnRTZWN0aW9uUHJvbWlzZShvcHRzLCBjYikge1xuICAgICAgICByZXR1cm4gYXdhaXQgY2IoKTtcbiAgICB9XG4gICAgc3RhcnRUaW1lclN5bmMod2hhdCwgb3B0cywgY2IpIHtcbiAgICAgICAgY29uc3QgcmVhbENiID0gdHlwZW9mIG9wdHMgPT09IGBmdW5jdGlvbmAgPyBvcHRzIDogY2I7XG4gICAgICAgIHJldHVybiByZWFsQ2IoKTtcbiAgICB9XG4gICAgYXN5bmMgc3RhcnRUaW1lclByb21pc2Uod2hhdCwgb3B0cywgY2IpIHtcbiAgICAgICAgY29uc3QgcmVhbENiID0gdHlwZW9mIG9wdHMgPT09IGBmdW5jdGlvbmAgPyBvcHRzIDogY2I7XG4gICAgICAgIHJldHVybiBhd2FpdCByZWFsQ2IoKTtcbiAgICB9XG4gICAgYXN5bmMgc3RhcnRDYWNoZVJlcG9ydChjYikge1xuICAgICAgICByZXR1cm4gYXdhaXQgY2IoKTtcbiAgICB9XG4gICAgcmVwb3J0U2VwYXJhdG9yKCkge1xuICAgIH1cbiAgICByZXBvcnRJbmZvKG5hbWUsIHRleHQpIHtcbiAgICB9XG4gICAgcmVwb3J0V2FybmluZyhuYW1lLCB0ZXh0KSB7XG4gICAgfVxuICAgIHJlcG9ydEVycm9yKG5hbWUsIHRleHQpIHtcbiAgICB9XG4gICAgcmVwb3J0UHJvZ3Jlc3MocHJvZ3Jlc3MpIHtcbiAgICAgICAgY29uc3QgcHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZSgpLnRoZW4oYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWVtcHR5LXBhdHRlcm5cbiAgICAgICAgICAgIGZvciBhd2FpdCAoY29uc3Qge30gb2YgcHJvZ3Jlc3MpIHtcbiAgICAgICAgICAgICAgICAvLyBObyBuZWVkIHRvIGRvIGFueXRoaW5nOyB3ZSBqdXN0IHdhbnQgdG8gY29uc3VtZSB0aGUgcHJvZ3Jlc3MgZXZlbnRzXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBzdG9wID0gKCkgPT4ge1xuICAgICAgICAgICAgLy8gTm90aGluZyB0byBzdG9wXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiB7IC4uLnByb21pc2UsIHN0b3AgfTtcbiAgICB9XG4gICAgcmVwb3J0SnNvbihkYXRhKSB7XG4gICAgICAgIC8vIEp1c3QgaWdub3JlIHRoZSBqc29uIG91dHB1dFxuICAgIH1cbiAgICBhc3luYyBmaW5hbGl6ZSgpIHtcbiAgICB9XG59XG5leHBvcnRzLlRocm93UmVwb3J0ID0gVGhyb3dSZXBvcnQ7XG4iLCAiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLldvcmtzcGFjZSA9IHZvaWQgMDtcbmNvbnN0IHRzbGliXzEgPSByZXF1aXJlKFwidHNsaWJcIik7XG5jb25zdCBmc2xpYl8xID0gcmVxdWlyZShcIkB5YXJucGtnL2ZzbGliXCIpO1xuY29uc3QgZ2xvYmJ5XzEgPSB0c2xpYl8xLl9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiZ2xvYmJ5XCIpKTtcbmNvbnN0IE1hbmlmZXN0XzEgPSByZXF1aXJlKFwiLi9NYW5pZmVzdFwiKTtcbmNvbnN0IFdvcmtzcGFjZVJlc29sdmVyXzEgPSByZXF1aXJlKFwiLi9Xb3Jrc3BhY2VSZXNvbHZlclwiKTtcbmNvbnN0IGZvcm1hdFV0aWxzID0gdHNsaWJfMS5fX2ltcG9ydFN0YXIocmVxdWlyZShcIi4vZm9ybWF0VXRpbHNcIikpO1xuY29uc3QgaGFzaFV0aWxzID0gdHNsaWJfMS5fX2ltcG9ydFN0YXIocmVxdWlyZShcIi4vaGFzaFV0aWxzXCIpKTtcbmNvbnN0IHNlbXZlclV0aWxzID0gdHNsaWJfMS5fX2ltcG9ydFN0YXIocmVxdWlyZShcIi4vc2VtdmVyVXRpbHNcIikpO1xuY29uc3Qgc3RydWN0VXRpbHMgPSB0c2xpYl8xLl9faW1wb3J0U3RhcihyZXF1aXJlKFwiLi9zdHJ1Y3RVdGlsc1wiKSk7XG5jbGFzcyBXb3Jrc3BhY2Uge1xuICAgIGNvbnN0cnVjdG9yKHdvcmtzcGFjZUN3ZCwgeyBwcm9qZWN0IH0pIHtcbiAgICAgICAgdGhpcy53b3Jrc3BhY2VzQ3dkcyA9IG5ldyBTZXQoKTtcbiAgICAgICAgdGhpcy5wcm9qZWN0ID0gcHJvamVjdDtcbiAgICAgICAgdGhpcy5jd2QgPSB3b3Jrc3BhY2VDd2Q7XG4gICAgfVxuICAgIGFzeW5jIHNldHVwKCkge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3I6IEl0J3Mgb2sgdG8gaW5pdGlhbGl6ZSBpdCBub3dcbiAgICAgICAgdGhpcy5tYW5pZmVzdCA9IChfYSA9IGF3YWl0IE1hbmlmZXN0XzEuTWFuaWZlc3QudHJ5RmluZCh0aGlzLmN3ZCkpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IG5ldyBNYW5pZmVzdF8xLk1hbmlmZXN0KCk7XG4gICAgICAgIC8vIFdlIHVzZSBwcGF0aC5yZWxhdGl2ZSB0byBndWFyYW50ZWUgdGhhdCB0aGUgZGVmYXVsdCBoYXNoIHdpbGwgYmUgY29uc2lzdGVudCBldmVuIGlmIHRoZSBwcm9qZWN0IGlzIGluc3RhbGxlZCBvbiBkaWZmZXJlbnQgT1MgLyBwYXRoXG4gICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3I6IEl0J3Mgb2sgdG8gaW5pdGlhbGl6ZSBpdCBub3csIGV2ZW4gaWYgaXQncyByZWFkb25seSAoc2V0dXAgaXMgY2FsbGVkIHJpZ2h0IGFmdGVyIGNvbnN0cnVjdGlvbilcbiAgICAgICAgdGhpcy5yZWxhdGl2ZUN3ZCA9IGZzbGliXzEucHBhdGgucmVsYXRpdmUodGhpcy5wcm9qZWN0LmN3ZCwgdGhpcy5jd2QpIHx8IGZzbGliXzEuUG9ydGFibGVQYXRoLmRvdDtcbiAgICAgICAgY29uc3QgaWRlbnQgPSB0aGlzLm1hbmlmZXN0Lm5hbWUgPyB0aGlzLm1hbmlmZXN0Lm5hbWUgOiBzdHJ1Y3RVdGlscy5tYWtlSWRlbnQobnVsbCwgYCR7dGhpcy5jb21wdXRlQ2FuZGlkYXRlTmFtZSgpfS0ke2hhc2hVdGlscy5tYWtlSGFzaCh0aGlzLnJlbGF0aXZlQ3dkKS5zdWJzdHJpbmcoMCwgNil9YCk7XG4gICAgICAgIGNvbnN0IHJlZmVyZW5jZSA9IHRoaXMubWFuaWZlc3QudmVyc2lvbiA/IHRoaXMubWFuaWZlc3QudmVyc2lvbiA6IGAwLjAuMGA7XG4gICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3I6IEl0J3Mgb2sgdG8gaW5pdGlhbGl6ZSBpdCBub3csIGV2ZW4gaWYgaXQncyByZWFkb25seSAoc2V0dXAgaXMgY2FsbGVkIHJpZ2h0IGFmdGVyIGNvbnN0cnVjdGlvbilcbiAgICAgICAgdGhpcy5sb2NhdG9yID0gc3RydWN0VXRpbHMubWFrZUxvY2F0b3IoaWRlbnQsIHJlZmVyZW5jZSk7XG4gICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3I6IEl0J3Mgb2sgdG8gaW5pdGlhbGl6ZSBpdCBub3csIGV2ZW4gaWYgaXQncyByZWFkb25seSAoc2V0dXAgaXMgY2FsbGVkIHJpZ2h0IGFmdGVyIGNvbnN0cnVjdGlvbilcbiAgICAgICAgdGhpcy5hbmNob3JlZERlc2NyaXB0b3IgPSBzdHJ1Y3RVdGlscy5tYWtlRGVzY3JpcHRvcih0aGlzLmxvY2F0b3IsIGAke1dvcmtzcGFjZVJlc29sdmVyXzEuV29ya3NwYWNlUmVzb2x2ZXIucHJvdG9jb2x9JHt0aGlzLnJlbGF0aXZlQ3dkfWApO1xuICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yOiBJdCdzIG9rIHRvIGluaXRpYWxpemUgaXQgbm93LCBldmVuIGlmIGl0J3MgcmVhZG9ubHkgKHNldHVwIGlzIGNhbGxlZCByaWdodCBhZnRlciBjb25zdHJ1Y3Rpb24pXG4gICAgICAgIHRoaXMuYW5jaG9yZWRMb2NhdG9yID0gc3RydWN0VXRpbHMubWFrZUxvY2F0b3IodGhpcy5sb2NhdG9yLCBgJHtXb3Jrc3BhY2VSZXNvbHZlcl8xLldvcmtzcGFjZVJlc29sdmVyLnByb3RvY29sfSR7dGhpcy5yZWxhdGl2ZUN3ZH1gKTtcbiAgICAgICAgY29uc3QgcGF0dGVybnMgPSB0aGlzLm1hbmlmZXN0LndvcmtzcGFjZURlZmluaXRpb25zLm1hcCgoeyBwYXR0ZXJuIH0pID0+IHBhdHRlcm4pO1xuICAgICAgICBjb25zdCByZWxhdGl2ZUN3ZHMgPSBhd2FpdCAoMCwgZ2xvYmJ5XzEuZGVmYXVsdCkocGF0dGVybnMsIHtcbiAgICAgICAgICAgIGN3ZDogZnNsaWJfMS5ucGF0aC5mcm9tUG9ydGFibGVQYXRoKHRoaXMuY3dkKSxcbiAgICAgICAgICAgIGV4cGFuZERpcmVjdG9yaWVzOiBmYWxzZSxcbiAgICAgICAgICAgIG9ubHlEaXJlY3RvcmllczogdHJ1ZSxcbiAgICAgICAgICAgIG9ubHlGaWxlczogZmFsc2UsXG4gICAgICAgICAgICBpZ25vcmU6IFtgKiovbm9kZV9tb2R1bGVzYCwgYCoqLy5naXRgLCBgKiovLnlhcm5gXSxcbiAgICAgICAgfSk7XG4gICAgICAgIC8vIEl0IHNlZW1zIHRoYXQgdGhlIHJldHVybiB2YWx1ZSBvZiBnbG9iYnkgaXNuJ3QgaW4gYW55IGd1YXJhbnRlZWQgb3JkZXIgLSBub3QgZXZlbiB0aGUgZGlyZWN0b3J5IGxpc3Rpbmcgb3JkZXJcbiAgICAgICAgcmVsYXRpdmVDd2RzLnNvcnQoKTtcbiAgICAgICAgZm9yIChjb25zdCByZWxhdGl2ZUN3ZCBvZiByZWxhdGl2ZUN3ZHMpIHtcbiAgICAgICAgICAgIGNvbnN0IGNhbmRpZGF0ZUN3ZCA9IGZzbGliXzEucHBhdGgucmVzb2x2ZSh0aGlzLmN3ZCwgZnNsaWJfMS5ucGF0aC50b1BvcnRhYmxlUGF0aChyZWxhdGl2ZUN3ZCkpO1xuICAgICAgICAgICAgaWYgKGZzbGliXzEueGZzLmV4aXN0c1N5bmMoZnNsaWJfMS5wcGF0aC5qb2luKGNhbmRpZGF0ZUN3ZCwgYHBhY2thZ2UuanNvbmApKSkge1xuICAgICAgICAgICAgICAgIHRoaXMud29ya3NwYWNlc0N3ZHMuYWRkKGNhbmRpZGF0ZUN3ZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgZ2V0IGFuY2hvcmVkUGFja2FnZSgpIHtcbiAgICAgICAgY29uc3QgcGtnID0gdGhpcy5wcm9qZWN0LnN0b3JlZFBhY2thZ2VzLmdldCh0aGlzLmFuY2hvcmVkTG9jYXRvci5sb2NhdG9ySGFzaCk7XG4gICAgICAgIGlmICghcGtnKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBBc3NlcnRpb24gZmFpbGVkOiBFeHBlY3RlZCB3b3Jrc3BhY2UgJHtzdHJ1Y3RVdGlscy5wcmV0dHlXb3Jrc3BhY2UodGhpcy5wcm9qZWN0LmNvbmZpZ3VyYXRpb24sIHRoaXMpfSAoJHtmb3JtYXRVdGlscy5wcmV0dHkodGhpcy5wcm9qZWN0LmNvbmZpZ3VyYXRpb24sIGZzbGliXzEucHBhdGguam9pbih0aGlzLmN3ZCwgZnNsaWJfMS5GaWxlbmFtZS5tYW5pZmVzdCksIGZvcm1hdFV0aWxzLlR5cGUuUEFUSCl9KSB0byBoYXZlIGJlZW4gcmVzb2x2ZWQuIFJ1biBcInlhcm4gaW5zdGFsbFwiIHRvIHVwZGF0ZSB0aGUgbG9ja2ZpbGVgKTtcbiAgICAgICAgcmV0dXJuIHBrZztcbiAgICB9XG4gICAgYWNjZXB0cyhyYW5nZSkge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGNvbnN0IHByb3RvY29sSW5kZXggPSByYW5nZS5pbmRleE9mKGA6YCk7XG4gICAgICAgIGNvbnN0IHByb3RvY29sID0gcHJvdG9jb2xJbmRleCAhPT0gLTFcbiAgICAgICAgICAgID8gcmFuZ2Uuc2xpY2UoMCwgcHJvdG9jb2xJbmRleCArIDEpXG4gICAgICAgICAgICA6IG51bGw7XG4gICAgICAgIGNvbnN0IHBhdGhuYW1lID0gcHJvdG9jb2xJbmRleCAhPT0gLTFcbiAgICAgICAgICAgID8gcmFuZ2Uuc2xpY2UocHJvdG9jb2xJbmRleCArIDEpXG4gICAgICAgICAgICA6IHJhbmdlO1xuICAgICAgICBpZiAocHJvdG9jb2wgPT09IFdvcmtzcGFjZVJlc29sdmVyXzEuV29ya3NwYWNlUmVzb2x2ZXIucHJvdG9jb2wgJiYgZnNsaWJfMS5wcGF0aC5ub3JtYWxpemUocGF0aG5hbWUpID09PSB0aGlzLnJlbGF0aXZlQ3dkKVxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIGlmIChwcm90b2NvbCA9PT0gV29ya3NwYWNlUmVzb2x2ZXJfMS5Xb3Jrc3BhY2VSZXNvbHZlci5wcm90b2NvbCAmJiAocGF0aG5hbWUgPT09IGAqYCB8fCBwYXRobmFtZSA9PT0gYF5gIHx8IHBhdGhuYW1lID09PSBgfmApKVxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIGNvbnN0IHNlbXZlclJhbmdlID0gc2VtdmVyVXRpbHMudmFsaWRSYW5nZShwYXRobmFtZSk7XG4gICAgICAgIGlmICghc2VtdmVyUmFuZ2UpXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIGlmIChwcm90b2NvbCA9PT0gV29ya3NwYWNlUmVzb2x2ZXJfMS5Xb3Jrc3BhY2VSZXNvbHZlci5wcm90b2NvbClcbiAgICAgICAgICAgIHJldHVybiBzZW12ZXJSYW5nZS50ZXN0KChfYSA9IHRoaXMubWFuaWZlc3QudmVyc2lvbikgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogYDAuMC4wYCk7XG4gICAgICAgIGlmICghdGhpcy5wcm9qZWN0LmNvbmZpZ3VyYXRpb24uZ2V0KGBlbmFibGVUcmFuc3BhcmVudFdvcmtzcGFjZXNgKSlcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgaWYgKHRoaXMubWFuaWZlc3QudmVyc2lvbiAhPT0gbnVsbClcbiAgICAgICAgICAgIHJldHVybiBzZW12ZXJSYW5nZS50ZXN0KHRoaXMubWFuaWZlc3QudmVyc2lvbik7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgY29tcHV0ZUNhbmRpZGF0ZU5hbWUoKSB7XG4gICAgICAgIGlmICh0aGlzLmN3ZCA9PT0gdGhpcy5wcm9qZWN0LmN3ZCkge1xuICAgICAgICAgICAgcmV0dXJuIGByb290LXdvcmtzcGFjZWA7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gYCR7ZnNsaWJfMS5wcGF0aC5iYXNlbmFtZSh0aGlzLmN3ZCl9YCB8fCBgdW5uYW1lZC13b3Jrc3BhY2VgO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEZpbmQgd29ya3NwYWNlcyBtYXJrZWQgYXMgZGVwZW5kZW5jaWVzL2RldkRlcGVuZGVuY2llcyBvZiB0aGUgY3VycmVudCB3b3Jrc3BhY2UgcmVjdXJzaXZlbHkuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcm9vdFdvcmtzcGFjZSByb290IHdvcmtzcGFjZVxuICAgICAqIEBwYXJhbSBwcm9qZWN0IHByb2plY3RcbiAgICAgKlxuICAgICAqIEByZXR1cm5zIGFsbCB0aGUgd29ya3NwYWNlcyBtYXJrZWQgYXMgZGVwZW5kZW5jaWVzXG4gICAgICovXG4gICAgZ2V0UmVjdXJzaXZlV29ya3NwYWNlRGVwZW5kZW5jaWVzKHsgZGVwZW5kZW5jaWVzID0gTWFuaWZlc3RfMS5NYW5pZmVzdC5oYXJkRGVwZW5kZW5jaWVzIH0gPSB7fSkge1xuICAgICAgICBjb25zdCB3b3Jrc3BhY2VMaXN0ID0gbmV3IFNldCgpO1xuICAgICAgICBjb25zdCB2aXNpdFdvcmtzcGFjZSA9ICh3b3Jrc3BhY2UpID0+IHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZGVwZW5kZW5jeVR5cGUgb2YgZGVwZW5kZW5jaWVzKSB7XG4gICAgICAgICAgICAgICAgLy8gUXVpY2sgbm90ZTogaXQgbWVhbnMgdGhhdCBpZiB3ZSBoYXZlLCBzYXksIGEgd29ya3NwYWNlIGluXG4gICAgICAgICAgICAgICAgLy8gZGV2IGRlcGVuZGVuY2llcyBidXQgbm90IGluIGRlcGVuZGVuY2llcywgdGhpcyB3b3Jrc3BhY2Ugd2lsbCBiZVxuICAgICAgICAgICAgICAgIC8vIHRyYXZlcnNlZCAoZXZlbiBpZiBkZXBlbmRlbmNpZXMgdHJhZGl0aW9uYWxseSBvdmVycmlkZSBkZXZcbiAgICAgICAgICAgICAgICAvLyBkZXBlbmRlbmNpZXMpLiBJdCdzIG5vdCBjbGVhciB3aGljaCBiZWhhdmlvdXIgaXMgYmV0dGVyLCBidXRcbiAgICAgICAgICAgICAgICAvLyBhdCBsZWFzdCBpdCdzIGNvbnNpc3RlbnQuXG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBkZXNjcmlwdG9yIG9mIHdvcmtzcGFjZS5tYW5pZmVzdFtkZXBlbmRlbmN5VHlwZV0udmFsdWVzKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZm91bmRXb3Jrc3BhY2UgPSB0aGlzLnByb2plY3QudHJ5V29ya3NwYWNlQnlEZXNjcmlwdG9yKGRlc2NyaXB0b3IpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZm91bmRXb3Jrc3BhY2UgPT09IG51bGwgfHwgd29ya3NwYWNlTGlzdC5oYXMoZm91bmRXb3Jrc3BhY2UpKVxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgIHdvcmtzcGFjZUxpc3QuYWRkKGZvdW5kV29ya3NwYWNlKTtcbiAgICAgICAgICAgICAgICAgICAgdmlzaXRXb3Jrc3BhY2UoZm91bmRXb3Jrc3BhY2UpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgdmlzaXRXb3Jrc3BhY2UodGhpcyk7XG4gICAgICAgIHJldHVybiB3b3Jrc3BhY2VMaXN0O1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBGaW5kIHdvcmtzcGFjZXMgd2hpY2ggaW5jbHVkZSB0aGUgY3VycmVudCB3b3Jrc3BhY2UgYXMgYSBkZXBlbmRlbmN5L2RldkRlcGVuZGVuY3kgcmVjdXJzaXZlbHkuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcm9vdFdvcmtzcGFjZSByb290IHdvcmtzcGFjZVxuICAgICAqIEBwYXJhbSBwcm9qZWN0IHByb2plY3RcbiAgICAgKlxuICAgICAqIEByZXR1cm5zIGFsbCB0aGUgd29ya3NwYWNlcyBtYXJrZWQgYXMgZGVwZW5kZW50c1xuICAgICAqL1xuICAgIGdldFJlY3Vyc2l2ZVdvcmtzcGFjZURlcGVuZGVudHMoeyBkZXBlbmRlbmNpZXMgPSBNYW5pZmVzdF8xLk1hbmlmZXN0LmhhcmREZXBlbmRlbmNpZXMgfSA9IHt9KSB7XG4gICAgICAgIGNvbnN0IHdvcmtzcGFjZUxpc3QgPSBuZXcgU2V0KCk7XG4gICAgICAgIGNvbnN0IHZpc2l0V29ya3NwYWNlID0gKHdvcmtzcGFjZSkgPT4ge1xuICAgICAgICAgICAgZm9yIChjb25zdCBwcm9qZWN0V29ya3NwYWNlIG9mIHRoaXMucHJvamVjdC53b3Jrc3BhY2VzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaXNEZXBlbmRlbnQgPSBkZXBlbmRlbmNpZXMuc29tZShkZXBlbmRlbmN5VHlwZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbLi4ucHJvamVjdFdvcmtzcGFjZS5tYW5pZmVzdFtkZXBlbmRlbmN5VHlwZV0udmFsdWVzKCldLnNvbWUoZGVzY3JpcHRvciA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmb3VuZFdvcmtzcGFjZSA9IHRoaXMucHJvamVjdC50cnlXb3Jrc3BhY2VCeURlc2NyaXB0b3IoZGVzY3JpcHRvcik7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZm91bmRXb3Jrc3BhY2UgIT09IG51bGwgJiYgc3RydWN0VXRpbHMuYXJlTG9jYXRvcnNFcXVhbChmb3VuZFdvcmtzcGFjZS5hbmNob3JlZExvY2F0b3IsIHdvcmtzcGFjZS5hbmNob3JlZExvY2F0b3IpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBpZiAoaXNEZXBlbmRlbnQgJiYgIXdvcmtzcGFjZUxpc3QuaGFzKHByb2plY3RXb3Jrc3BhY2UpKSB7XG4gICAgICAgICAgICAgICAgICAgIHdvcmtzcGFjZUxpc3QuYWRkKHByb2plY3RXb3Jrc3BhY2UpO1xuICAgICAgICAgICAgICAgICAgICB2aXNpdFdvcmtzcGFjZShwcm9qZWN0V29ya3NwYWNlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHZpc2l0V29ya3NwYWNlKHRoaXMpO1xuICAgICAgICByZXR1cm4gd29ya3NwYWNlTGlzdDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmV0cmlldmVzIGFsbCB0aGUgY2hpbGQgd29ya3NwYWNlcyBvZiBhIGdpdmVuIHJvb3Qgd29ya3NwYWNlIHJlY3Vyc2l2ZWx5XG4gICAgICpcbiAgICAgKiBAcGFyYW0gcm9vdFdvcmtzcGFjZSByb290IHdvcmtzcGFjZVxuICAgICAqIEBwYXJhbSBwcm9qZWN0IHByb2plY3RcbiAgICAgKlxuICAgICAqIEByZXR1cm5zIGFsbCB0aGUgY2hpbGQgd29ya3NwYWNlc1xuICAgICAqL1xuICAgIGdldFJlY3Vyc2l2ZVdvcmtzcGFjZUNoaWxkcmVuKCkge1xuICAgICAgICBjb25zdCB3b3Jrc3BhY2VMaXN0ID0gW107XG4gICAgICAgIGZvciAoY29uc3QgY2hpbGRXb3Jrc3BhY2VDd2Qgb2YgdGhpcy53b3Jrc3BhY2VzQ3dkcykge1xuICAgICAgICAgICAgY29uc3QgY2hpbGRXb3Jrc3BhY2UgPSB0aGlzLnByb2plY3Qud29ya3NwYWNlc0J5Q3dkLmdldChjaGlsZFdvcmtzcGFjZUN3ZCk7XG4gICAgICAgICAgICBpZiAoY2hpbGRXb3Jrc3BhY2UpIHtcbiAgICAgICAgICAgICAgICB3b3Jrc3BhY2VMaXN0LnB1c2goY2hpbGRXb3Jrc3BhY2UsIC4uLmNoaWxkV29ya3NwYWNlLmdldFJlY3Vyc2l2ZVdvcmtzcGFjZUNoaWxkcmVuKCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB3b3Jrc3BhY2VMaXN0O1xuICAgIH1cbiAgICBhc3luYyBwZXJzaXN0TWFuaWZlc3QoKSB7XG4gICAgICAgIGNvbnN0IGRhdGEgPSB7fTtcbiAgICAgICAgdGhpcy5tYW5pZmVzdC5leHBvcnRUbyhkYXRhKTtcbiAgICAgICAgY29uc3QgcGF0aCA9IGZzbGliXzEucHBhdGguam9pbih0aGlzLmN3ZCwgTWFuaWZlc3RfMS5NYW5pZmVzdC5maWxlTmFtZSk7XG4gICAgICAgIGNvbnN0IGNvbnRlbnQgPSBgJHtKU09OLnN0cmluZ2lmeShkYXRhLCBudWxsLCB0aGlzLm1hbmlmZXN0LmluZGVudCl9XFxuYDtcbiAgICAgICAgYXdhaXQgZnNsaWJfMS54ZnMuY2hhbmdlRmlsZVByb21pc2UocGF0aCwgY29udGVudCwge1xuICAgICAgICAgICAgYXV0b21hdGljTmV3bGluZXM6IHRydWUsXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLm1hbmlmZXN0LnJhdyA9IGRhdGE7XG4gICAgfVxufVxuZXhwb3J0cy5Xb3Jrc3BhY2UgPSBXb3Jrc3BhY2U7XG4iLCAiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLlByb2plY3QgPSBleHBvcnRzLkluc3RhbGxNb2RlID0gdm9pZCAwO1xuY29uc3QgdHNsaWJfMSA9IHJlcXVpcmUoXCJ0c2xpYlwiKTtcbmNvbnN0IGZzbGliXzEgPSByZXF1aXJlKFwiQHlhcm5wa2cvZnNsaWJcIik7XG5jb25zdCBmc2xpYl8yID0gcmVxdWlyZShcIkB5YXJucGtnL2ZzbGliXCIpO1xuY29uc3QgcGFyc2Vyc18xID0gcmVxdWlyZShcIkB5YXJucGtnL3BhcnNlcnNcIik7XG5jb25zdCBjbGlwYW5pb25fMSA9IHJlcXVpcmUoXCJjbGlwYW5pb25cIik7XG5jb25zdCBjcnlwdG9fMSA9IHJlcXVpcmUoXCJjcnlwdG9cIik7XG5jb25zdCBkaWZmXzEgPSByZXF1aXJlKFwiZGlmZlwiKTtcbmNvbnN0IHBpY2tfMSA9IHRzbGliXzEuX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJsb2Rhc2gvcGlja1wiKSk7XG5jb25zdCBwX2xpbWl0XzEgPSB0c2xpYl8xLl9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwicC1saW1pdFwiKSk7XG5jb25zdCBzZW12ZXJfMSA9IHRzbGliXzEuX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJzZW12ZXJcIikpO1xuY29uc3QgdXRpbF8xID0gcmVxdWlyZShcInV0aWxcIik7XG5jb25zdCB2OF8xID0gdHNsaWJfMS5fX2ltcG9ydERlZmF1bHQocmVxdWlyZShcInY4XCIpKTtcbmNvbnN0IHpsaWJfMSA9IHRzbGliXzEuX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJ6bGliXCIpKTtcbmNvbnN0IENvbmZpZ3VyYXRpb25fMSA9IHJlcXVpcmUoXCIuL0NvbmZpZ3VyYXRpb25cIik7XG5jb25zdCBJbnN0YWxsZXJfMSA9IHJlcXVpcmUoXCIuL0luc3RhbGxlclwiKTtcbmNvbnN0IExlZ2FjeU1pZ3JhdGlvblJlc29sdmVyXzEgPSByZXF1aXJlKFwiLi9MZWdhY3lNaWdyYXRpb25SZXNvbHZlclwiKTtcbmNvbnN0IExvY2tmaWxlUmVzb2x2ZXJfMSA9IHJlcXVpcmUoXCIuL0xvY2tmaWxlUmVzb2x2ZXJcIik7XG5jb25zdCBNYW5pZmVzdF8xID0gcmVxdWlyZShcIi4vTWFuaWZlc3RcIik7XG5jb25zdCBNZXNzYWdlTmFtZV8xID0gcmVxdWlyZShcIi4vTWVzc2FnZU5hbWVcIik7XG5jb25zdCBNdWx0aVJlc29sdmVyXzEgPSByZXF1aXJlKFwiLi9NdWx0aVJlc29sdmVyXCIpO1xuY29uc3QgUmVwb3J0XzEgPSByZXF1aXJlKFwiLi9SZXBvcnRcIik7XG5jb25zdCBSdW5JbnN0YWxsUGxlYXNlUmVzb2x2ZXJfMSA9IHJlcXVpcmUoXCIuL1J1bkluc3RhbGxQbGVhc2VSZXNvbHZlclwiKTtcbmNvbnN0IFRocm93UmVwb3J0XzEgPSByZXF1aXJlKFwiLi9UaHJvd1JlcG9ydFwiKTtcbmNvbnN0IFdvcmtzcGFjZVJlc29sdmVyXzEgPSByZXF1aXJlKFwiLi9Xb3Jrc3BhY2VSZXNvbHZlclwiKTtcbmNvbnN0IFdvcmtzcGFjZV8xID0gcmVxdWlyZShcIi4vV29ya3NwYWNlXCIpO1xuY29uc3QgZm9sZGVyVXRpbHNfMSA9IHJlcXVpcmUoXCIuL2ZvbGRlclV0aWxzXCIpO1xuY29uc3QgZm9ybWF0VXRpbHMgPSB0c2xpYl8xLl9faW1wb3J0U3RhcihyZXF1aXJlKFwiLi9mb3JtYXRVdGlsc1wiKSk7XG5jb25zdCBoYXNoVXRpbHMgPSB0c2xpYl8xLl9faW1wb3J0U3RhcihyZXF1aXJlKFwiLi9oYXNoVXRpbHNcIikpO1xuY29uc3QgbWlzY1V0aWxzID0gdHNsaWJfMS5fX2ltcG9ydFN0YXIocmVxdWlyZShcIi4vbWlzY1V0aWxzXCIpKTtcbmNvbnN0IG5vZGVVdGlscyA9IHRzbGliXzEuX19pbXBvcnRTdGFyKHJlcXVpcmUoXCIuL25vZGVVdGlsc1wiKSk7XG5jb25zdCBzY3JpcHRVdGlscyA9IHRzbGliXzEuX19pbXBvcnRTdGFyKHJlcXVpcmUoXCIuL3NjcmlwdFV0aWxzXCIpKTtcbmNvbnN0IHNlbXZlclV0aWxzID0gdHNsaWJfMS5fX2ltcG9ydFN0YXIocmVxdWlyZShcIi4vc2VtdmVyVXRpbHNcIikpO1xuY29uc3Qgc3RydWN0VXRpbHMgPSB0c2xpYl8xLl9faW1wb3J0U3RhcihyZXF1aXJlKFwiLi9zdHJ1Y3RVdGlsc1wiKSk7XG5jb25zdCB0eXBlc18xID0gcmVxdWlyZShcIi4vdHlwZXNcIik7XG5jb25zdCB0eXBlc18yID0gcmVxdWlyZShcIi4vdHlwZXNcIik7XG4vLyBXaGVuIHVwZ3JhZGVkLCB0aGUgbG9ja2ZpbGUgZW50cmllcyBoYXZlIHRvIGJlIHJlc29sdmVkIGFnYWluIChidXQgdGhlIHNwZWNpZmljXG4vLyB2ZXJzaW9ucyBhcmUgc3RpbGwgcGlubmVkLCBubyB3b3JyeSkuIEJ1bXAgaXQgd2hlbiB5b3UgY2hhbmdlIHRoZSBmaWVsZHMgd2l0aGluXG4vLyB0aGUgUGFja2FnZSB0eXBlOyBubyBtb3JlIG5vIGxlc3MuXG5jb25zdCBMT0NLRklMRV9WRVJTSU9OID0gNztcbi8vIFNhbWUgdGhpbmcgYnV0IG11c3QgYmUgYnVtcGVkIHdoZW4gdGhlIG1lbWJlcnMgb2YgdGhlIFByb2plY3QgY2xhc3MgY2hhbmdlcyAod2Vcbi8vIGRvbid0IHJlY29tbWVuZCBvdXIgdXNlcnMgdG8gY2hlY2staW4gdGhpcyBmaWxlLCBzbyBpdCdzIGZpbmUgdG8gYnVtcCBpdCBldmVuXG4vLyBiZXR3ZWVuIHBhdGNoIG9yIG1pbm9yIHJlbGVhc2VzKS5cbmNvbnN0IElOU1RBTExfU1RBVEVfVkVSU0lPTiA9IDI7XG5jb25zdCBNVUxUSVBMRV9LRVlTX1JFR0VYUCA9IC8gKiwgKi9nO1xuY29uc3QgVFJBSUxJTkdfU0xBU0hfUkVHRVhQID0gL1xcLyQvO1xuY29uc3QgRkVUQ0hFUl9DT05DVVJSRU5DWSA9IDMyO1xuY29uc3QgZ3ppcCA9ICgwLCB1dGlsXzEucHJvbWlzaWZ5KSh6bGliXzEuZGVmYXVsdC5nemlwKTtcbmNvbnN0IGd1bnppcCA9ICgwLCB1dGlsXzEucHJvbWlzaWZ5KSh6bGliXzEuZGVmYXVsdC5ndW56aXApO1xudmFyIEluc3RhbGxNb2RlO1xuKGZ1bmN0aW9uIChJbnN0YWxsTW9kZSkge1xuICAgIC8qKlxuICAgICAqIERvZXNuJ3QgcnVuIHRoZSBsaW5rIHN0ZXAsIGFuZCBvbmx5IGZldGNoZXMgd2hhdCdzIG5lY2Vzc2FyeSB0byBjb21wdXRlXG4gICAgICogYW4gdXBkYXRlZCBsb2NrZmlsZS5cbiAgICAgKi9cbiAgICBJbnN0YWxsTW9kZVtcIlVwZGF0ZUxvY2tmaWxlXCJdID0gXCJ1cGRhdGUtbG9ja2ZpbGVcIjtcbiAgICAvKipcbiAgICAgKiBEb24ndCBydW4gdGhlIGJ1aWxkIHNjcmlwdHMuXG4gICAgICovXG4gICAgSW5zdGFsbE1vZGVbXCJTa2lwQnVpbGRcIl0gPSBcInNraXAtYnVpbGRcIjtcbn0pKEluc3RhbGxNb2RlID0gZXhwb3J0cy5JbnN0YWxsTW9kZSB8fCAoZXhwb3J0cy5JbnN0YWxsTW9kZSA9IHt9KSk7XG5jb25zdCBJTlNUQUxMX1NUQVRFX0ZJRUxEUyA9IHtcbiAgICByZXN0b3JlTGlua2Vyc0N1c3RvbURhdGE6IFtcbiAgICAgICAgYGxpbmtlcnNDdXN0b21EYXRhYCxcbiAgICBdLFxuICAgIHJlc3RvcmVSZXNvbHV0aW9uczogW1xuICAgICAgICBgYWNjZXNzaWJsZUxvY2F0b3JzYCxcbiAgICAgICAgYGNvbmRpdGlvbmFsTG9jYXRvcnNgLFxuICAgICAgICBgZGlzYWJsZWRMb2NhdG9yc2AsXG4gICAgICAgIGBvcHRpb25hbEJ1aWxkc2AsXG4gICAgICAgIGBzdG9yZWREZXNjcmlwdG9yc2AsXG4gICAgICAgIGBzdG9yZWRSZXNvbHV0aW9uc2AsXG4gICAgICAgIGBzdG9yZWRQYWNrYWdlc2AsXG4gICAgICAgIGBsb2NrRmlsZUNoZWNrc3VtYCxcbiAgICBdLFxuICAgIHJlc3RvcmVCdWlsZFN0YXRlOiBbXG4gICAgICAgIGBzdG9yZWRCdWlsZFN0YXRlYCxcbiAgICBdLFxufTtcbmNvbnN0IG1ha2VMb2NrZmlsZUNoZWNrc3VtID0gKG5vcm1hbGl6ZWRDb250ZW50KSA9PiBoYXNoVXRpbHMubWFrZUhhc2goYCR7SU5TVEFMTF9TVEFURV9WRVJTSU9OfWAsIG5vcm1hbGl6ZWRDb250ZW50KTtcbmNsYXNzIFByb2plY3Qge1xuICAgIHN0YXRpYyBhc3luYyBmaW5kKGNvbmZpZ3VyYXRpb24sIHN0YXJ0aW5nQ3dkKSB7XG4gICAgICAgIHZhciBfYSwgX2IsIF9jO1xuICAgICAgICBpZiAoIWNvbmZpZ3VyYXRpb24ucHJvamVjdEN3ZClcbiAgICAgICAgICAgIHRocm93IG5ldyBjbGlwYW5pb25fMS5Vc2FnZUVycm9yKGBObyBwcm9qZWN0IGZvdW5kIGluICR7c3RhcnRpbmdDd2R9YCk7XG4gICAgICAgIGxldCBwYWNrYWdlQ3dkID0gY29uZmlndXJhdGlvbi5wcm9qZWN0Q3dkO1xuICAgICAgICBsZXQgbmV4dEN3ZCA9IHN0YXJ0aW5nQ3dkO1xuICAgICAgICBsZXQgY3VycmVudEN3ZCA9IG51bGw7XG4gICAgICAgIHdoaWxlIChjdXJyZW50Q3dkICE9PSBjb25maWd1cmF0aW9uLnByb2plY3RDd2QpIHtcbiAgICAgICAgICAgIGN1cnJlbnRDd2QgPSBuZXh0Q3dkO1xuICAgICAgICAgICAgaWYgKGZzbGliXzIueGZzLmV4aXN0c1N5bmMoZnNsaWJfMi5wcGF0aC5qb2luKGN1cnJlbnRDd2QsIGZzbGliXzIuRmlsZW5hbWUubWFuaWZlc3QpKSkge1xuICAgICAgICAgICAgICAgIHBhY2thZ2VDd2QgPSBjdXJyZW50Q3dkO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbmV4dEN3ZCA9IGZzbGliXzIucHBhdGguZGlybmFtZShjdXJyZW50Q3dkKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwcm9qZWN0ID0gbmV3IFByb2plY3QoY29uZmlndXJhdGlvbi5wcm9qZWN0Q3dkLCB7IGNvbmZpZ3VyYXRpb24gfSk7XG4gICAgICAgIChfYSA9IENvbmZpZ3VyYXRpb25fMS5Db25maWd1cmF0aW9uLnRlbGVtZXRyeSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnJlcG9ydFByb2plY3QocHJvamVjdC5jd2QpO1xuICAgICAgICBhd2FpdCBwcm9qZWN0LnNldHVwUmVzb2x1dGlvbnMoKTtcbiAgICAgICAgYXdhaXQgcHJvamVjdC5zZXR1cFdvcmtzcGFjZXMoKTtcbiAgICAgICAgKF9iID0gQ29uZmlndXJhdGlvbl8xLkNvbmZpZ3VyYXRpb24udGVsZW1ldHJ5KSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IucmVwb3J0V29ya3NwYWNlQ291bnQocHJvamVjdC53b3Jrc3BhY2VzLmxlbmd0aCk7XG4gICAgICAgIChfYyA9IENvbmZpZ3VyYXRpb25fMS5Db25maWd1cmF0aW9uLnRlbGVtZXRyeSkgPT09IG51bGwgfHwgX2MgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9jLnJlcG9ydERlcGVuZGVuY3lDb3VudChwcm9qZWN0LndvcmtzcGFjZXMucmVkdWNlKChzdW0sIHdvcmtzcGFjZSkgPT4gc3VtICsgd29ya3NwYWNlLm1hbmlmZXN0LmRlcGVuZGVuY2llcy5zaXplICsgd29ya3NwYWNlLm1hbmlmZXN0LmRldkRlcGVuZGVuY2llcy5zaXplLCAwKSk7XG4gICAgICAgIC8vIElmIHdlJ3JlIGluIGEgd29ya3NwYWNlLCBubyBuZWVkIHRvIGdvIGFueSBmdXJ0aGVyIHRvIGZpbmQgd2hpY2ggcGFja2FnZSB3ZSdyZSBpblxuICAgICAgICBjb25zdCB3b3Jrc3BhY2UgPSBwcm9qZWN0LnRyeVdvcmtzcGFjZUJ5Q3dkKHBhY2thZ2VDd2QpO1xuICAgICAgICBpZiAod29ya3NwYWNlKVxuICAgICAgICAgICAgcmV0dXJuIHsgcHJvamVjdCwgd29ya3NwYWNlLCBsb2NhdG9yOiB3b3Jrc3BhY2UuYW5jaG9yZWRMb2NhdG9yIH07XG4gICAgICAgIC8vIE90aGVyd2lzZSwgd2UgbmVlZCB0byBhc2sgdGhlIHByb2plY3QgKHdoaWNoIHdpbGwgaW4gdHVybiBhc2sgdGhlIGxpbmtlcnMgZm9yIGhlbHApXG4gICAgICAgIC8vIE5vdGU6IHRoZSB0cmFpbGluZyBzbGFzaCBpcyBjYXVzZWQgYnkgYSBxdWlyayBpbiB0aGUgUG5QIGltcGxlbWVudGF0aW9uIHRoYXQgcmVxdWlyZXMgZm9sZGVycyB0byBlbmQgd2l0aCBhIHRyYWlsaW5nIHNsYXNoIHRvIGRpc2FtYmlndWF0ZSB0aGVtIGZyb20gcmVndWxhciBmaWxlc1xuICAgICAgICBjb25zdCBsb2NhdG9yID0gYXdhaXQgcHJvamVjdC5maW5kTG9jYXRvckZvckxvY2F0aW9uKGAke3BhY2thZ2VDd2R9L2AsIHsgc3RyaWN0OiB0cnVlIH0pO1xuICAgICAgICBpZiAobG9jYXRvcilcbiAgICAgICAgICAgIHJldHVybiB7IHByb2plY3QsIGxvY2F0b3IsIHdvcmtzcGFjZTogbnVsbCB9O1xuICAgICAgICBjb25zdCBwcm9qZWN0Q3dkTG9nID0gZm9ybWF0VXRpbHMucHJldHR5KGNvbmZpZ3VyYXRpb24sIHByb2plY3QuY3dkLCBmb3JtYXRVdGlscy5UeXBlLlBBVEgpO1xuICAgICAgICBjb25zdCBwYWNrYWdlQ3dkTG9nID0gZm9ybWF0VXRpbHMucHJldHR5KGNvbmZpZ3VyYXRpb24sIGZzbGliXzIucHBhdGgucmVsYXRpdmUocHJvamVjdC5jd2QsIHBhY2thZ2VDd2QpLCBmb3JtYXRVdGlscy5UeXBlLlBBVEgpO1xuICAgICAgICBjb25zdCB1bmludGVuZGVkUHJvamVjdExvZyA9IGAtIElmICR7cHJvamVjdEN3ZExvZ30gaXNuJ3QgaW50ZW5kZWQgdG8gYmUgYSBwcm9qZWN0LCByZW1vdmUgYW55IHlhcm4ubG9jayBhbmQvb3IgcGFja2FnZS5qc29uIGZpbGUgdGhlcmUuYDtcbiAgICAgICAgY29uc3QgbWlzc2luZ1dvcmtzcGFjZUxvZyA9IGAtIElmICR7cHJvamVjdEN3ZExvZ30gaXMgaW50ZW5kZWQgdG8gYmUgYSBwcm9qZWN0LCBpdCBtaWdodCBiZSB0aGF0IHlvdSBmb3Jnb3QgdG8gbGlzdCAke3BhY2thZ2VDd2RMb2d9IGluIGl0cyB3b3Jrc3BhY2UgY29uZmlndXJhdGlvbi5gO1xuICAgICAgICBjb25zdCBkZWNvcnJlbGF0ZWRQcm9qZWN0TG9nID0gYC0gRmluYWxseSwgaWYgJHtwcm9qZWN0Q3dkTG9nfSBpcyBmaW5lIGFuZCB5b3UgaW50ZW5kICR7cGFja2FnZUN3ZExvZ30gdG8gYmUgdHJlYXRlZCBhcyBhIGNvbXBsZXRlbHkgc2VwYXJhdGUgcHJvamVjdCAobm90IGV2ZW4gYSB3b3Jrc3BhY2UpLCBjcmVhdGUgYW4gZW1wdHkgeWFybi5sb2NrIGZpbGUgaW4gaXQuYDtcbiAgICAgICAgdGhyb3cgbmV3IGNsaXBhbmlvbl8xLlVzYWdlRXJyb3IoYFRoZSBuZWFyZXN0IHBhY2thZ2UgZGlyZWN0b3J5ICgke2Zvcm1hdFV0aWxzLnByZXR0eShjb25maWd1cmF0aW9uLCBwYWNrYWdlQ3dkLCBmb3JtYXRVdGlscy5UeXBlLlBBVEgpfSkgZG9lc24ndCBzZWVtIHRvIGJlIHBhcnQgb2YgdGhlIHByb2plY3QgZGVjbGFyZWQgaW4gJHtmb3JtYXRVdGlscy5wcmV0dHkoY29uZmlndXJhdGlvbiwgcHJvamVjdC5jd2QsIGZvcm1hdFV0aWxzLlR5cGUuUEFUSCl9LlxcblxcbiR7W1xuICAgICAgICAgICAgdW5pbnRlbmRlZFByb2plY3RMb2csXG4gICAgICAgICAgICBtaXNzaW5nV29ya3NwYWNlTG9nLFxuICAgICAgICAgICAgZGVjb3JyZWxhdGVkUHJvamVjdExvZyxcbiAgICAgICAgXS5qb2luKGBcXG5gKX1gKTtcbiAgICB9XG4gICAgY29uc3RydWN0b3IocHJvamVjdEN3ZCwgeyBjb25maWd1cmF0aW9uIH0pIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIElzIG1lYW50IHRvIGJlIHBvcHVsYXRlZCBieSB0aGUgY29uc3VtZXIuIFNob3VsZCB0aGUgZGVzY3JpcHRvciByZWZlcmVuY2VkXG4gICAgICAgICAqIGJ5IHRoZSBrZXkgYmUgcmVxdWVzdGVkLCB0aGUgZGVzY3JpcHRvciByZWZlcmVuY2VkIGluIHRoZSB2YWx1ZSB3aWxsIGJlXG4gICAgICAgICAqIHJlc29sdmVkIGluc3RlYWQuIFRoZSByZXNvbHZlZCBkYXRhIHdpbGwgdGhlbiBiZSB1c2VkIGFzIGZpbmFsIHJlc29sdXRpb25cbiAgICAgICAgICogZm9yIHRoZSBpbml0aWFsIGRlc2NyaXB0b3IuXG4gICAgICAgICAqXG4gICAgICAgICAqIE5vdGUgdGhhdCB0aGUgbG9ja2ZpbGUgd2lsbCBjb250YWluIHRoZSBzZWNvbmQgZGVzY3JpcHRvciBidXQgbm90IHRoZVxuICAgICAgICAgKiBmaXJzdCBvbmUgKG1lYW5pbmcgdGhhdCBpZiB5b3UgcmVtb3ZlIHRoZSBhbGlhcyBkdXJpbmcgYSBzdWJzZXF1ZW50XG4gICAgICAgICAqIGluc3RhbGwsIGl0J2xsIGJlIGxvc3QgYW5kIHRoZSByZWFsIHBhY2thZ2Ugd2lsbCBiZSByZXNvbHZlZCAvIGluc3RhbGxlZCkuXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLnJlc29sdXRpb25BbGlhc2VzID0gbmV3IE1hcCgpO1xuICAgICAgICB0aGlzLndvcmtzcGFjZXMgPSBbXTtcbiAgICAgICAgdGhpcy53b3Jrc3BhY2VzQnlDd2QgPSBuZXcgTWFwKCk7XG4gICAgICAgIHRoaXMud29ya3NwYWNlc0J5SWRlbnQgPSBuZXcgTWFwKCk7XG4gICAgICAgIHRoaXMuc3RvcmVkUmVzb2x1dGlvbnMgPSBuZXcgTWFwKCk7XG4gICAgICAgIHRoaXMuc3RvcmVkRGVzY3JpcHRvcnMgPSBuZXcgTWFwKCk7XG4gICAgICAgIHRoaXMuc3RvcmVkUGFja2FnZXMgPSBuZXcgTWFwKCk7XG4gICAgICAgIHRoaXMuc3RvcmVkQ2hlY2tzdW1zID0gbmV3IE1hcCgpO1xuICAgICAgICB0aGlzLnN0b3JlZEJ1aWxkU3RhdGUgPSBuZXcgTWFwKCk7XG4gICAgICAgIHRoaXMuYWNjZXNzaWJsZUxvY2F0b3JzID0gbmV3IFNldCgpO1xuICAgICAgICB0aGlzLmNvbmRpdGlvbmFsTG9jYXRvcnMgPSBuZXcgU2V0KCk7XG4gICAgICAgIHRoaXMuZGlzYWJsZWRMb2NhdG9ycyA9IG5ldyBTZXQoKTtcbiAgICAgICAgdGhpcy5vcmlnaW5hbFBhY2thZ2VzID0gbmV3IE1hcCgpO1xuICAgICAgICB0aGlzLm9wdGlvbmFsQnVpbGRzID0gbmV3IFNldCgpO1xuICAgICAgICAvKipcbiAgICAgICAgICogSWYgdHJ1ZSwgdGhlIGRhdGEgY29udGFpbmVkIHdpdGhpbiBgb3JpZ2luYWxQYWNrYWdlc2AgYXJlIGZyb20gYSBkaWZmZXJlbnRcbiAgICAgICAgICogbG9ja2ZpbGUgdmVyc2lvbiBhbmQgbmVlZCB0byBiZSByZWZyZXNoZWQuXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLmxvY2tmaWxlTmVlZHNSZWZyZXNoID0gZmFsc2U7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBQb3B1bGF0ZWQgYnkgdGhlIGByZXNvbHZlRXZlcnl0aGluZ2AgbWV0aG9kLlxuICAgICAgICAgKiAqTm90KiBzdG9yZWQgaW5zaWRlIHRoZSBpbnN0YWxsIHN0YXRlLlxuICAgICAgICAgKlxuICAgICAgICAgKiBUaGUgbWFwIGtleXMgYXJlIDYgaGV4YWRlY2ltYWwgY2hhcmFjdGVycyBleGNlcHQgdGhlIGZpcnN0IG9uZSwgYWx3YXlzIGBwYC5cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMucGVlclJlcXVpcmVtZW50cyA9IG5ldyBNYXAoKTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIENvbnRhaW5zIHdoYXRldmVyIGRhdGEgdGhlIGxpbmtlcnMgKGNmIGBMaW5rZXIudHNgKSB3YW50IHRvIHBlcnNpc3RcbiAgICAgICAgICogZnJvbSBhbiBpbnN0YWxsIHRvIGFub3RoZXIuXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLmxpbmtlcnNDdXN0b21EYXRhID0gbmV3IE1hcCgpO1xuICAgICAgICAvKipcbiAgICAgICAgICogVGhvc2UgY2hlY2tzdW1zIGFyZSB1c2VkIHRvIGRldGVjdCB3aGV0aGVyIHRoZSByZWxldmFudCBmaWxlcyBhY3R1YWxseVxuICAgICAgICAgKiBjaGFuZ2VkIHNpbmNlIHdlIGxhc3QgcmVhZCB0aGVtICh0byBza2lwIHBhcnQgb2YgdGhlaXIgZ2VuZXJhdGlvbikuXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLmxvY2tGaWxlQ2hlY2tzdW0gPSBudWxsO1xuICAgICAgICB0aGlzLmluc3RhbGxTdGF0ZUNoZWNrc3VtID0gbnVsbDtcbiAgICAgICAgdGhpcy5jb25maWd1cmF0aW9uID0gY29uZmlndXJhdGlvbjtcbiAgICAgICAgdGhpcy5jd2QgPSBwcm9qZWN0Q3dkO1xuICAgIH1cbiAgICBhc3luYyBzZXR1cFJlc29sdXRpb25zKCkge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIHRoaXMuc3RvcmVkUmVzb2x1dGlvbnMgPSBuZXcgTWFwKCk7XG4gICAgICAgIHRoaXMuc3RvcmVkRGVzY3JpcHRvcnMgPSBuZXcgTWFwKCk7XG4gICAgICAgIHRoaXMuc3RvcmVkUGFja2FnZXMgPSBuZXcgTWFwKCk7XG4gICAgICAgIHRoaXMubG9ja0ZpbGVDaGVja3N1bSA9IG51bGw7XG4gICAgICAgIGNvbnN0IGxvY2tmaWxlUGF0aCA9IGZzbGliXzIucHBhdGguam9pbih0aGlzLmN3ZCwgdGhpcy5jb25maWd1cmF0aW9uLmdldChgbG9ja2ZpbGVGaWxlbmFtZWApKTtcbiAgICAgICAgY29uc3QgZGVmYXVsdExhbmd1YWdlTmFtZSA9IHRoaXMuY29uZmlndXJhdGlvbi5nZXQoYGRlZmF1bHRMYW5ndWFnZU5hbWVgKTtcbiAgICAgICAgaWYgKGZzbGliXzIueGZzLmV4aXN0c1N5bmMobG9ja2ZpbGVQYXRoKSkge1xuICAgICAgICAgICAgY29uc3QgY29udGVudCA9IGF3YWl0IGZzbGliXzIueGZzLnJlYWRGaWxlUHJvbWlzZShsb2NrZmlsZVBhdGgsIGB1dGY4YCk7XG4gICAgICAgICAgICAvLyBXZSBzdG9yZSB0aGUgc2FsdGVkIGNoZWNrc3VtIG9mIHRoZSBsb2NrZmlsZSBpbiBvcmRlciB0byBpbnZhbGlkYXRlIHRoZSBpbnN0YWxsIHN0YXRlIHdoZW4gbmVlZGVkXG4gICAgICAgICAgICB0aGlzLmxvY2tGaWxlQ2hlY2tzdW0gPSBtYWtlTG9ja2ZpbGVDaGVja3N1bShjb250ZW50KTtcbiAgICAgICAgICAgIGNvbnN0IHBhcnNlZCA9ICgwLCBwYXJzZXJzXzEucGFyc2VTeW1sKShjb250ZW50KTtcbiAgICAgICAgICAgIC8vIFByb3RlY3RzIGFnYWluc3QgdjEgbG9ja2ZpbGVzXG4gICAgICAgICAgICBpZiAocGFyc2VkLl9fbWV0YWRhdGEpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBsb2NrZmlsZVZlcnNpb24gPSBwYXJzZWQuX19tZXRhZGF0YS52ZXJzaW9uO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNhY2hlS2V5ID0gcGFyc2VkLl9fbWV0YWRhdGEuY2FjaGVLZXk7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2NrZmlsZU5lZWRzUmVmcmVzaCA9IGxvY2tmaWxlVmVyc2lvbiA8IExPQ0tGSUxFX1ZFUlNJT047XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMocGFyc2VkKSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoa2V5ID09PSBgX19tZXRhZGF0YWApXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGF0YSA9IHBhcnNlZFtrZXldO1xuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGRhdGEucmVzb2x1dGlvbiA9PT0gYHVuZGVmaW5lZGApXG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEFzc2VydGlvbiBmYWlsZWQ6IEV4cGVjdGVkIHRoZSBsb2NrZmlsZSBlbnRyeSB0byBoYXZlIGEgcmVzb2x1dGlvbiBmaWVsZCAoJHtrZXl9KWApO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBsb2NhdG9yID0gc3RydWN0VXRpbHMucGFyc2VMb2NhdG9yKGRhdGEucmVzb2x1dGlvbiwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1hbmlmZXN0ID0gbmV3IE1hbmlmZXN0XzEuTWFuaWZlc3QoKTtcbiAgICAgICAgICAgICAgICAgICAgbWFuaWZlc3QubG9hZChkYXRhLCB7IHlhbWxDb21wYXRpYmlsaXR5TW9kZTogdHJ1ZSB9KTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdmVyc2lvbiA9IG1hbmlmZXN0LnZlcnNpb247XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGxhbmd1YWdlTmFtZSA9IG1hbmlmZXN0Lmxhbmd1YWdlTmFtZSB8fCBkZWZhdWx0TGFuZ3VhZ2VOYW1lO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBsaW5rVHlwZSA9IGRhdGEubGlua1R5cGUudG9VcHBlckNhc2UoKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY29uZGl0aW9ucyA9IChfYSA9IGRhdGEuY29uZGl0aW9ucykgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGVwZW5kZW5jaWVzID0gbWFuaWZlc3QuZGVwZW5kZW5jaWVzO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwZWVyRGVwZW5kZW5jaWVzID0gbWFuaWZlc3QucGVlckRlcGVuZGVuY2llcztcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGVwZW5kZW5jaWVzTWV0YSA9IG1hbmlmZXN0LmRlcGVuZGVuY2llc01ldGE7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBlZXJEZXBlbmRlbmNpZXNNZXRhID0gbWFuaWZlc3QucGVlckRlcGVuZGVuY2llc01ldGE7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJpbiA9IG1hbmlmZXN0LmJpbjtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEuY2hlY2tzdW0gIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hlY2tzdW0gPSB0eXBlb2YgY2FjaGVLZXkgIT09IGB1bmRlZmluZWRgICYmICFkYXRhLmNoZWNrc3VtLmluY2x1ZGVzKGAvYClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGAke2NhY2hlS2V5fS8ke2RhdGEuY2hlY2tzdW19YFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogZGF0YS5jaGVja3N1bTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3RvcmVkQ2hlY2tzdW1zLnNldChsb2NhdG9yLmxvY2F0b3JIYXNoLCBjaGVja3N1bSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcGtnID0geyAuLi5sb2NhdG9yLCB2ZXJzaW9uLCBsYW5ndWFnZU5hbWUsIGxpbmtUeXBlLCBjb25kaXRpb25zLCBkZXBlbmRlbmNpZXMsIHBlZXJEZXBlbmRlbmNpZXMsIGRlcGVuZGVuY2llc01ldGEsIHBlZXJEZXBlbmRlbmNpZXNNZXRhLCBiaW4gfTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vcmlnaW5hbFBhY2thZ2VzLnNldChwa2cubG9jYXRvckhhc2gsIHBrZyk7XG4gICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgZW50cnkgb2Yga2V5LnNwbGl0KE1VTFRJUExFX0tFWVNfUkVHRVhQKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGRlc2NyaXB0b3IgPSBzdHJ1Y3RVdGlscy5wYXJzZURlc2NyaXB0b3IoZW50cnkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gWWFybiBwcmUtdjQgdXNlZCB0byBnZW5lcmF0ZSBkZXNjcmlwdG9ycyB0aGF0IHdlcmUgc29tZXRpbWVzXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBtaXNzaW5nIHRoZSBgbnBtOmAgcHJvdG9jb2xcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsb2NrZmlsZVZlcnNpb24gPD0gNikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0b3IgPSB0aGlzLmNvbmZpZ3VyYXRpb24ubm9ybWFsaXplRGVwZW5kZW5jeShkZXNjcmlwdG9yKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdG9yID0gc3RydWN0VXRpbHMubWFrZURlc2NyaXB0b3IoZGVzY3JpcHRvciwgZGVzY3JpcHRvci5yYW5nZS5yZXBsYWNlKC9ecGF0Y2g6W15AXStAKD8hbnBtKDp8JTNBKSkvLCBgJDFucG0lM0FgKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN0b3JlZERlc2NyaXB0b3JzLnNldChkZXNjcmlwdG9yLmRlc2NyaXB0b3JIYXNoLCBkZXNjcmlwdG9yKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3RvcmVkUmVzb2x1dGlvbnMuc2V0KGRlc2NyaXB0b3IuZGVzY3JpcHRvckhhc2gsIGxvY2F0b3IubG9jYXRvckhhc2gpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIGFzeW5jIHNldHVwV29ya3NwYWNlcygpIHtcbiAgICAgICAgdGhpcy53b3Jrc3BhY2VzID0gW107XG4gICAgICAgIHRoaXMud29ya3NwYWNlc0J5Q3dkID0gbmV3IE1hcCgpO1xuICAgICAgICB0aGlzLndvcmtzcGFjZXNCeUlkZW50ID0gbmV3IE1hcCgpO1xuICAgICAgICBsZXQgd29ya3NwYWNlQ3dkcyA9IFt0aGlzLmN3ZF07XG4gICAgICAgIHdoaWxlICh3b3Jrc3BhY2VDd2RzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IHBhc3NDd2RzID0gd29ya3NwYWNlQ3dkcztcbiAgICAgICAgICAgIHdvcmtzcGFjZUN3ZHMgPSBbXTtcbiAgICAgICAgICAgIGZvciAoY29uc3Qgd29ya3NwYWNlQ3dkIG9mIHBhc3NDd2RzKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMud29ya3NwYWNlc0J5Q3dkLmhhcyh3b3Jrc3BhY2VDd2QpKVxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBjb25zdCB3b3Jrc3BhY2UgPSBhd2FpdCB0aGlzLmFkZFdvcmtzcGFjZSh3b3Jrc3BhY2VDd2QpO1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3Qgd29ya3NwYWNlQ3dkIG9mIHdvcmtzcGFjZS53b3Jrc3BhY2VzQ3dkcykge1xuICAgICAgICAgICAgICAgICAgICB3b3Jrc3BhY2VDd2RzLnB1c2god29ya3NwYWNlQ3dkKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgYXN5bmMgYWRkV29ya3NwYWNlKHdvcmtzcGFjZUN3ZCkge1xuICAgICAgICBjb25zdCB3b3Jrc3BhY2UgPSBuZXcgV29ya3NwYWNlXzEuV29ya3NwYWNlKHdvcmtzcGFjZUN3ZCwgeyBwcm9qZWN0OiB0aGlzIH0pO1xuICAgICAgICBhd2FpdCB3b3Jrc3BhY2Uuc2V0dXAoKTtcbiAgICAgICAgY29uc3QgZHVwID0gdGhpcy53b3Jrc3BhY2VzQnlJZGVudC5nZXQod29ya3NwYWNlLmxvY2F0b3IuaWRlbnRIYXNoKTtcbiAgICAgICAgaWYgKHR5cGVvZiBkdXAgIT09IGB1bmRlZmluZWRgKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBEdXBsaWNhdGUgd29ya3NwYWNlIG5hbWUgJHtzdHJ1Y3RVdGlscy5wcmV0dHlJZGVudCh0aGlzLmNvbmZpZ3VyYXRpb24sIHdvcmtzcGFjZS5sb2NhdG9yKX06ICR7ZnNsaWJfMS5ucGF0aC5mcm9tUG9ydGFibGVQYXRoKHdvcmtzcGFjZUN3ZCl9IGNvbmZsaWN0cyB3aXRoICR7ZnNsaWJfMS5ucGF0aC5mcm9tUG9ydGFibGVQYXRoKGR1cC5jd2QpfWApO1xuICAgICAgICB0aGlzLndvcmtzcGFjZXMucHVzaCh3b3Jrc3BhY2UpO1xuICAgICAgICB0aGlzLndvcmtzcGFjZXNCeUN3ZC5zZXQod29ya3NwYWNlQ3dkLCB3b3Jrc3BhY2UpO1xuICAgICAgICB0aGlzLndvcmtzcGFjZXNCeUlkZW50LnNldCh3b3Jrc3BhY2UubG9jYXRvci5pZGVudEhhc2gsIHdvcmtzcGFjZSk7XG4gICAgICAgIHJldHVybiB3b3Jrc3BhY2U7XG4gICAgfVxuICAgIGdldCB0b3BMZXZlbFdvcmtzcGFjZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0V29ya3NwYWNlQnlDd2QodGhpcy5jd2QpO1xuICAgIH1cbiAgICB0cnlXb3Jrc3BhY2VCeUN3ZCh3b3Jrc3BhY2VDd2QpIHtcbiAgICAgICAgaWYgKCFmc2xpYl8yLnBwYXRoLmlzQWJzb2x1dGUod29ya3NwYWNlQ3dkKSlcbiAgICAgICAgICAgIHdvcmtzcGFjZUN3ZCA9IGZzbGliXzIucHBhdGgucmVzb2x2ZSh0aGlzLmN3ZCwgd29ya3NwYWNlQ3dkKTtcbiAgICAgICAgd29ya3NwYWNlQ3dkID0gZnNsaWJfMi5wcGF0aC5ub3JtYWxpemUod29ya3NwYWNlQ3dkKVxuICAgICAgICAgICAgLnJlcGxhY2UoL1xcLyskLywgYGApO1xuICAgICAgICBjb25zdCB3b3Jrc3BhY2UgPSB0aGlzLndvcmtzcGFjZXNCeUN3ZC5nZXQod29ya3NwYWNlQ3dkKTtcbiAgICAgICAgaWYgKCF3b3Jrc3BhY2UpXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgcmV0dXJuIHdvcmtzcGFjZTtcbiAgICB9XG4gICAgZ2V0V29ya3NwYWNlQnlDd2Qod29ya3NwYWNlQ3dkKSB7XG4gICAgICAgIGNvbnN0IHdvcmtzcGFjZSA9IHRoaXMudHJ5V29ya3NwYWNlQnlDd2Qod29ya3NwYWNlQ3dkKTtcbiAgICAgICAgaWYgKCF3b3Jrc3BhY2UpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFdvcmtzcGFjZSBub3QgZm91bmQgKCR7d29ya3NwYWNlQ3dkfSlgKTtcbiAgICAgICAgcmV0dXJuIHdvcmtzcGFjZTtcbiAgICB9XG4gICAgdHJ5V29ya3NwYWNlQnlGaWxlUGF0aChmaWxlUGF0aCkge1xuICAgICAgICBsZXQgYmVzdFdvcmtzcGFjZSA9IG51bGw7XG4gICAgICAgIGZvciAoY29uc3Qgd29ya3NwYWNlIG9mIHRoaXMud29ya3NwYWNlcykge1xuICAgICAgICAgICAgY29uc3QgcmVsID0gZnNsaWJfMi5wcGF0aC5yZWxhdGl2ZSh3b3Jrc3BhY2UuY3dkLCBmaWxlUGF0aCk7XG4gICAgICAgICAgICBpZiAocmVsLnN0YXJ0c1dpdGgoYC4uL2ApKVxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgaWYgKGJlc3RXb3Jrc3BhY2UgJiYgYmVzdFdvcmtzcGFjZS5jd2QubGVuZ3RoID49IHdvcmtzcGFjZS5jd2QubGVuZ3RoKVxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgYmVzdFdvcmtzcGFjZSA9IHdvcmtzcGFjZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWJlc3RXb3Jrc3BhY2UpXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgcmV0dXJuIGJlc3RXb3Jrc3BhY2U7XG4gICAgfVxuICAgIGdldFdvcmtzcGFjZUJ5RmlsZVBhdGgoZmlsZVBhdGgpIHtcbiAgICAgICAgY29uc3Qgd29ya3NwYWNlID0gdGhpcy50cnlXb3Jrc3BhY2VCeUZpbGVQYXRoKGZpbGVQYXRoKTtcbiAgICAgICAgaWYgKCF3b3Jrc3BhY2UpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFdvcmtzcGFjZSBub3QgZm91bmQgKCR7ZmlsZVBhdGh9KWApO1xuICAgICAgICByZXR1cm4gd29ya3NwYWNlO1xuICAgIH1cbiAgICB0cnlXb3Jrc3BhY2VCeUlkZW50KGlkZW50KSB7XG4gICAgICAgIGNvbnN0IHdvcmtzcGFjZSA9IHRoaXMud29ya3NwYWNlc0J5SWRlbnQuZ2V0KGlkZW50LmlkZW50SGFzaCk7XG4gICAgICAgIGlmICh0eXBlb2Ygd29ya3NwYWNlID09PSBgdW5kZWZpbmVkYClcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICByZXR1cm4gd29ya3NwYWNlO1xuICAgIH1cbiAgICBnZXRXb3Jrc3BhY2VCeUlkZW50KGlkZW50KSB7XG4gICAgICAgIGNvbnN0IHdvcmtzcGFjZSA9IHRoaXMudHJ5V29ya3NwYWNlQnlJZGVudChpZGVudCk7XG4gICAgICAgIGlmICghd29ya3NwYWNlKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBXb3Jrc3BhY2Ugbm90IGZvdW5kICgke3N0cnVjdFV0aWxzLnByZXR0eUlkZW50KHRoaXMuY29uZmlndXJhdGlvbiwgaWRlbnQpfSlgKTtcbiAgICAgICAgcmV0dXJuIHdvcmtzcGFjZTtcbiAgICB9XG4gICAgdHJ5V29ya3NwYWNlQnlEZXNjcmlwdG9yKGRlc2NyaXB0b3IpIHtcbiAgICAgICAgY29uc3Qgd29ya3NwYWNlID0gdGhpcy50cnlXb3Jrc3BhY2VCeUlkZW50KGRlc2NyaXB0b3IpO1xuICAgICAgICBpZiAod29ya3NwYWNlID09PSBudWxsKVxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIGlmIChzdHJ1Y3RVdGlscy5pc1ZpcnR1YWxEZXNjcmlwdG9yKGRlc2NyaXB0b3IpKVxuICAgICAgICAgICAgZGVzY3JpcHRvciA9IHN0cnVjdFV0aWxzLmRldmlydHVhbGl6ZURlc2NyaXB0b3IoZGVzY3JpcHRvcik7XG4gICAgICAgIGlmICghd29ya3NwYWNlLmFjY2VwdHMoZGVzY3JpcHRvci5yYW5nZSkpXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgcmV0dXJuIHdvcmtzcGFjZTtcbiAgICB9XG4gICAgZ2V0V29ya3NwYWNlQnlEZXNjcmlwdG9yKGRlc2NyaXB0b3IpIHtcbiAgICAgICAgY29uc3Qgd29ya3NwYWNlID0gdGhpcy50cnlXb3Jrc3BhY2VCeURlc2NyaXB0b3IoZGVzY3JpcHRvcik7XG4gICAgICAgIGlmICh3b3Jrc3BhY2UgPT09IG51bGwpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFdvcmtzcGFjZSBub3QgZm91bmQgKCR7c3RydWN0VXRpbHMucHJldHR5RGVzY3JpcHRvcih0aGlzLmNvbmZpZ3VyYXRpb24sIGRlc2NyaXB0b3IpfSlgKTtcbiAgICAgICAgcmV0dXJuIHdvcmtzcGFjZTtcbiAgICB9XG4gICAgdHJ5V29ya3NwYWNlQnlMb2NhdG9yKGxvY2F0b3IpIHtcbiAgICAgICAgY29uc3Qgd29ya3NwYWNlID0gdGhpcy50cnlXb3Jrc3BhY2VCeUlkZW50KGxvY2F0b3IpO1xuICAgICAgICBpZiAod29ya3NwYWNlID09PSBudWxsKVxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIGlmIChzdHJ1Y3RVdGlscy5pc1ZpcnR1YWxMb2NhdG9yKGxvY2F0b3IpKVxuICAgICAgICAgICAgbG9jYXRvciA9IHN0cnVjdFV0aWxzLmRldmlydHVhbGl6ZUxvY2F0b3IobG9jYXRvcik7XG4gICAgICAgIGlmICh3b3Jrc3BhY2UubG9jYXRvci5sb2NhdG9ySGFzaCAhPT0gbG9jYXRvci5sb2NhdG9ySGFzaCAmJiB3b3Jrc3BhY2UuYW5jaG9yZWRMb2NhdG9yLmxvY2F0b3JIYXNoICE9PSBsb2NhdG9yLmxvY2F0b3JIYXNoKVxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIHJldHVybiB3b3Jrc3BhY2U7XG4gICAgfVxuICAgIGdldFdvcmtzcGFjZUJ5TG9jYXRvcihsb2NhdG9yKSB7XG4gICAgICAgIGNvbnN0IHdvcmtzcGFjZSA9IHRoaXMudHJ5V29ya3NwYWNlQnlMb2NhdG9yKGxvY2F0b3IpO1xuICAgICAgICBpZiAoIXdvcmtzcGFjZSlcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgV29ya3NwYWNlIG5vdCBmb3VuZCAoJHtzdHJ1Y3RVdGlscy5wcmV0dHlMb2NhdG9yKHRoaXMuY29uZmlndXJhdGlvbiwgbG9jYXRvcil9KWApO1xuICAgICAgICByZXR1cm4gd29ya3NwYWNlO1xuICAgIH1cbiAgICBmb3JnZXRSZXNvbHV0aW9uKGRhdGFTdHJ1Y3R1cmUpIHtcbiAgICAgICAgY29uc3QgZGVsZXRlRGVzY3JpcHRvciA9IChkZXNjcmlwdG9ySGFzaCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zdG9yZWRSZXNvbHV0aW9ucy5kZWxldGUoZGVzY3JpcHRvckhhc2gpO1xuICAgICAgICAgICAgdGhpcy5zdG9yZWREZXNjcmlwdG9ycy5kZWxldGUoZGVzY3JpcHRvckhhc2gpO1xuICAgICAgICB9O1xuICAgICAgICBjb25zdCBkZWxldGVMb2NhdG9yID0gKGxvY2F0b3JIYXNoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLm9yaWdpbmFsUGFja2FnZXMuZGVsZXRlKGxvY2F0b3JIYXNoKTtcbiAgICAgICAgICAgIHRoaXMuc3RvcmVkUGFja2FnZXMuZGVsZXRlKGxvY2F0b3JIYXNoKTtcbiAgICAgICAgICAgIHRoaXMuYWNjZXNzaWJsZUxvY2F0b3JzLmRlbGV0ZShsb2NhdG9ySGFzaCk7XG4gICAgICAgIH07XG4gICAgICAgIGlmIChgZGVzY3JpcHRvckhhc2hgIGluIGRhdGFTdHJ1Y3R1cmUpIHtcbiAgICAgICAgICAgIGNvbnN0IGxvY2F0b3JIYXNoID0gdGhpcy5zdG9yZWRSZXNvbHV0aW9ucy5nZXQoZGF0YVN0cnVjdHVyZS5kZXNjcmlwdG9ySGFzaCk7XG4gICAgICAgICAgICBkZWxldGVEZXNjcmlwdG9yKGRhdGFTdHJ1Y3R1cmUuZGVzY3JpcHRvckhhc2gpO1xuICAgICAgICAgICAgLy8gV2UgZGVsZXRlIHVudXNlZCBsb2NhdG9yc1xuICAgICAgICAgICAgY29uc3QgcmVtYWluaW5nUmVzb2x1dGlvbnMgPSBuZXcgU2V0KHRoaXMuc3RvcmVkUmVzb2x1dGlvbnMudmFsdWVzKCkpO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBsb2NhdG9ySGFzaCAhPT0gYHVuZGVmaW5lZGAgJiYgIXJlbWFpbmluZ1Jlc29sdXRpb25zLmhhcyhsb2NhdG9ySGFzaCkpIHtcbiAgICAgICAgICAgICAgICBkZWxldGVMb2NhdG9yKGxvY2F0b3JIYXNoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoYGxvY2F0b3JIYXNoYCBpbiBkYXRhU3RydWN0dXJlKSB7XG4gICAgICAgICAgICBkZWxldGVMb2NhdG9yKGRhdGFTdHJ1Y3R1cmUubG9jYXRvckhhc2gpO1xuICAgICAgICAgICAgLy8gV2UgZGVsZXRlIGFsbCBvZiB0aGUgZGVzY3JpcHRvcnMgdGhhdCBoYXZlIGJlZW4gcmVzb2x2ZWQgdG8gdGhlIGxvY2F0b3JcbiAgICAgICAgICAgIGZvciAoY29uc3QgW2Rlc2NyaXB0b3JIYXNoLCBsb2NhdG9ySGFzaF0gb2YgdGhpcy5zdG9yZWRSZXNvbHV0aW9ucykge1xuICAgICAgICAgICAgICAgIGlmIChsb2NhdG9ySGFzaCA9PT0gZGF0YVN0cnVjdHVyZS5sb2NhdG9ySGFzaCkge1xuICAgICAgICAgICAgICAgICAgICBkZWxldGVEZXNjcmlwdG9yKGRlc2NyaXB0b3JIYXNoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgZm9yZ2V0VHJhbnNpZW50UmVzb2x1dGlvbnMoKSB7XG4gICAgICAgIGNvbnN0IHJlc29sdmVyID0gdGhpcy5jb25maWd1cmF0aW9uLm1ha2VSZXNvbHZlcigpO1xuICAgICAgICBmb3IgKGNvbnN0IHBrZyBvZiB0aGlzLm9yaWdpbmFsUGFja2FnZXMudmFsdWVzKCkpIHtcbiAgICAgICAgICAgIGxldCBzaG91bGRQZXJzaXN0UmVzb2x1dGlvbjtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgc2hvdWxkUGVyc2lzdFJlc29sdXRpb24gPSByZXNvbHZlci5zaG91bGRQZXJzaXN0UmVzb2x1dGlvbihwa2csIHsgcHJvamVjdDogdGhpcywgcmVzb2x2ZXIgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCB7XG4gICAgICAgICAgICAgICAgc2hvdWxkUGVyc2lzdFJlc29sdXRpb24gPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghc2hvdWxkUGVyc2lzdFJlc29sdXRpb24pIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcmdldFJlc29sdXRpb24ocGtnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBmb3JnZXRWaXJ0dWFsUmVzb2x1dGlvbnMoKSB7XG4gICAgICAgIGZvciAoY29uc3QgcGtnIG9mIHRoaXMuc3RvcmVkUGFja2FnZXMudmFsdWVzKCkpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgW2RlcGVuZGVuY3lIYXNoLCBkZXBlbmRlbmN5XSBvZiBwa2cuZGVwZW5kZW5jaWVzKSB7XG4gICAgICAgICAgICAgICAgaWYgKHN0cnVjdFV0aWxzLmlzVmlydHVhbERlc2NyaXB0b3IoZGVwZW5kZW5jeSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcGtnLmRlcGVuZGVuY2llcy5zZXQoZGVwZW5kZW5jeUhhc2gsIHN0cnVjdFV0aWxzLmRldmlydHVhbGl6ZURlc2NyaXB0b3IoZGVwZW5kZW5jeSkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBnZXREZXBlbmRlbmN5TWV0YShpZGVudCwgdmVyc2lvbikge1xuICAgICAgICBjb25zdCBkZXBlbmRlbmN5TWV0YSA9IHt9O1xuICAgICAgICBjb25zdCBkZXBlbmRlbmNpZXNNZXRhID0gdGhpcy50b3BMZXZlbFdvcmtzcGFjZS5tYW5pZmVzdC5kZXBlbmRlbmNpZXNNZXRhO1xuICAgICAgICBjb25zdCBkZXBlbmRlbmN5TWV0YVNldCA9IGRlcGVuZGVuY2llc01ldGEuZ2V0KHN0cnVjdFV0aWxzLnN0cmluZ2lmeUlkZW50KGlkZW50KSk7XG4gICAgICAgIGlmICghZGVwZW5kZW5jeU1ldGFTZXQpXG4gICAgICAgICAgICByZXR1cm4gZGVwZW5kZW5jeU1ldGE7XG4gICAgICAgIGNvbnN0IGRlZmF1bHRNZXRhID0gZGVwZW5kZW5jeU1ldGFTZXQuZ2V0KG51bGwpO1xuICAgICAgICBpZiAoZGVmYXVsdE1ldGEpXG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKGRlcGVuZGVuY3lNZXRhLCBkZWZhdWx0TWV0YSk7XG4gICAgICAgIGlmICh2ZXJzaW9uID09PSBudWxsIHx8ICFzZW12ZXJfMS5kZWZhdWx0LnZhbGlkKHZlcnNpb24pKVxuICAgICAgICAgICAgcmV0dXJuIGRlcGVuZGVuY3lNZXRhO1xuICAgICAgICBmb3IgKGNvbnN0IFtyYW5nZSwgbWV0YV0gb2YgZGVwZW5kZW5jeU1ldGFTZXQpXG4gICAgICAgICAgICBpZiAocmFuZ2UgIT09IG51bGwgJiYgcmFuZ2UgPT09IHZlcnNpb24pXG4gICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihkZXBlbmRlbmN5TWV0YSwgbWV0YSk7XG4gICAgICAgIHJldHVybiBkZXBlbmRlbmN5TWV0YTtcbiAgICB9XG4gICAgYXN5bmMgZmluZExvY2F0b3JGb3JMb2NhdGlvbihjd2QsIHsgc3RyaWN0ID0gZmFsc2UgfSA9IHt9KSB7XG4gICAgICAgIGNvbnN0IHJlcG9ydCA9IG5ldyBUaHJvd1JlcG9ydF8xLlRocm93UmVwb3J0KCk7XG4gICAgICAgIGNvbnN0IGxpbmtlcnMgPSB0aGlzLmNvbmZpZ3VyYXRpb24uZ2V0TGlua2VycygpO1xuICAgICAgICBjb25zdCBsaW5rZXJPcHRpb25zID0geyBwcm9qZWN0OiB0aGlzLCByZXBvcnQgfTtcbiAgICAgICAgZm9yIChjb25zdCBsaW5rZXIgb2YgbGlua2Vycykge1xuICAgICAgICAgICAgY29uc3QgbG9jYXRvciA9IGF3YWl0IGxpbmtlci5maW5kUGFja2FnZUxvY2F0b3IoY3dkLCBsaW5rZXJPcHRpb25zKTtcbiAgICAgICAgICAgIGlmIChsb2NhdG9yKSB7XG4gICAgICAgICAgICAgICAgLy8gSWYgc3RyaWN0IG1vZGUsIHRoZSBzcGVjaWZpZWQgY3dkIG11c3QgYmUgYSBwYWNrYWdlLFxuICAgICAgICAgICAgICAgIC8vIG5vdCBtZXJlbHkgY29udGFpbmVkIGluIGEgcGFja2FnZS5cbiAgICAgICAgICAgICAgICBpZiAoc3RyaWN0KSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGxvY2F0aW9uID0gYXdhaXQgbGlua2VyLmZpbmRQYWNrYWdlTG9jYXRpb24obG9jYXRvciwgbGlua2VyT3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChsb2NhdGlvbi5yZXBsYWNlKFRSQUlMSU5HX1NMQVNIX1JFR0VYUCwgYGApICE9PSBjd2QucmVwbGFjZShUUkFJTElOR19TTEFTSF9SRUdFWFAsIGBgKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGxvY2F0b3I7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGFzeW5jIHByZXBhcmVQYWNrYWdlKG9yaWdpbmFsUGtnLCB7IHJlc29sdmVyLCByZXNvbHZlT3B0aW9ucyB9KSB7XG4gICAgICAgIGNvbnN0IHBrZyA9IHRoaXMuY29uZmlndXJhdGlvbi5ub3JtYWxpemVQYWNrYWdlKG9yaWdpbmFsUGtnKTtcbiAgICAgICAgZm9yIChjb25zdCBbaWRlbnRIYXNoLCBkZXNjcmlwdG9yXSBvZiBwa2cuZGVwZW5kZW5jaWVzKSB7XG4gICAgICAgICAgICBjb25zdCBkZXBlbmRlbmN5ID0gYXdhaXQgdGhpcy5jb25maWd1cmF0aW9uLnJlZHVjZUhvb2soaG9va3MgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBob29rcy5yZWR1Y2VEZXBlbmRlbmN5O1xuICAgICAgICAgICAgfSwgZGVzY3JpcHRvciwgdGhpcywgcGtnLCBkZXNjcmlwdG9yLCB7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZXIsXG4gICAgICAgICAgICAgICAgcmVzb2x2ZU9wdGlvbnMsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmICghc3RydWN0VXRpbHMuYXJlSWRlbnRzRXF1YWwoZGVzY3JpcHRvciwgZGVwZW5kZW5jeSkpXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBBc3NlcnRpb24gZmFpbGVkOiBUaGUgZGVzY3JpcHRvciBpZGVudCBjYW5ub3QgYmUgY2hhbmdlZCB0aHJvdWdoIGFsaWFzZXNgKTtcbiAgICAgICAgICAgIGNvbnN0IGJvdW5kID0gcmVzb2x2ZXIuYmluZERlc2NyaXB0b3IoZGVwZW5kZW5jeSwgcGtnLCByZXNvbHZlT3B0aW9ucyk7XG4gICAgICAgICAgICBwa2cuZGVwZW5kZW5jaWVzLnNldChpZGVudEhhc2gsIGJvdW5kKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcGtnO1xuICAgIH1cbiAgICBhc3luYyByZXNvbHZlRXZlcnl0aGluZyhvcHRzKSB7XG4gICAgICAgIGlmICghdGhpcy53b3Jrc3BhY2VzQnlDd2QgfHwgIXRoaXMud29ya3NwYWNlc0J5SWRlbnQpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFdvcmtzcGFjZXMgbXVzdCBoYXZlIGJlZW4gc2V0dXAgYmVmb3JlIGNhbGxpbmcgdGhpcyBmdW5jdGlvbmApO1xuICAgICAgICAvLyBSZXZlcnRzIHRoZSBjaGFuZ2VzIHRoYXQgaGF2ZSBiZWVuIGFwcGxpZWQgdG8gdGhlIHRyZWUgYmVjYXVzZSBvZiBhbnkgcHJldmlvdXMgdmlydHVhbCByZXNvbHV0aW9uIHBhc3NcbiAgICAgICAgdGhpcy5mb3JnZXRWaXJ0dWFsUmVzb2x1dGlvbnMoKTtcbiAgICAgICAgLy8gRW5zdXJlcyB0aGF0IHdlIG5vdGljZSBpdCB3aGVuIGRlcGVuZGVuY2llcyBhcmUgYWRkZWQgLyByZW1vdmVkIGZyb20gYWxsIHNvdXJjZXMgY29taW5nIGZyb20gdGhlIGZpbGVzeXN0ZW1cbiAgICAgICAgaWYgKCFvcHRzLmxvY2tmaWxlT25seSlcbiAgICAgICAgICAgIHRoaXMuZm9yZ2V0VHJhbnNpZW50UmVzb2x1dGlvbnMoKTtcbiAgICAgICAgLy8gTm90ZSB0aGF0IHRoZSByZXNvbHV0aW9uIHByb2Nlc3MgaXMgXCJvZmZsaW5lXCIgdW50aWwgZXZlcnl0aGluZyBoYXMgYmVlblxuICAgICAgICAvLyBzdWNjZXNzZnVsbHkgcmVzb2x2ZWQ7IGFsbCB0aGUgcHJvY2Vzc2luZyBpcyBleHBlY3RlZCB0byBoYXZlIHplcm8gc2lkZVxuICAgICAgICAvLyBlZmZlY3RzIHVudGlsIHdlJ3JlIHJlYWR5IHRvIHNldCBhbGwgdGhlIHZhcmlhYmxlcyBhdCBvbmNlICh0aGUgb25lXG4gICAgICAgIC8vIGV4Y2VwdGlvbiBiZWluZyB3aGVuIGEgcmVzb2x2ZXIgbmVlZHMgdG8gZmV0Y2ggYSBwYWNrYWdlLCBpbiB3aGljaCBjYXNlXG4gICAgICAgIC8vIHdlIG1pZ2h0IG5lZWQgdG8gcG9wdWxhdGUgdGhlIGNhY2hlKS5cbiAgICAgICAgLy9cbiAgICAgICAgLy8gVGhpcyBtYWtlcyBpdCBwb3NzaWJsZSB0byB1c2UgdGhlIHNhbWUgUHJvamVjdCBpbnN0YW5jZSBmb3IgbXVsdGlwbGVcbiAgICAgICAgLy8gcHVycG9zZXMgYXQgdGhlIHNhbWUgdGltZSAoc2luY2UgYHJlc29sdmVFdmVyeXRoaW5nYCBpcyBhc3luYywgaXQgbWlnaHRcbiAgICAgICAgLy8gaGFwcGVuIHRoYXQgd2Ugd2FudCB0byBkbyBzb21ldGhpbmcgd2hpbGUgd2FpdGluZyBmb3IgaXQgdG8gZW5kOyBpZiB3ZVxuICAgICAgICAvLyB3ZXJlIHRvIG11dGF0ZSB0aGUgcHJvamVjdCB0aGVuIGl0IHdvdWxkIGVuZCB1cCBpbiBhIHBhcnRpYWwgc3RhdGUgdGhhdFxuICAgICAgICAvLyBjb3VsZCBsZWFkIHRvIGhhcmQtdG8tZGVidWcgaXNzdWVzKS5cbiAgICAgICAgY29uc3QgcmVhbFJlc29sdmVyID0gb3B0cy5yZXNvbHZlciB8fCB0aGlzLmNvbmZpZ3VyYXRpb24ubWFrZVJlc29sdmVyKCk7XG4gICAgICAgIGNvbnN0IGxlZ2FjeU1pZ3JhdGlvblJlc29sdmVyID0gbmV3IExlZ2FjeU1pZ3JhdGlvblJlc29sdmVyXzEuTGVnYWN5TWlncmF0aW9uUmVzb2x2ZXIocmVhbFJlc29sdmVyKTtcbiAgICAgICAgYXdhaXQgbGVnYWN5TWlncmF0aW9uUmVzb2x2ZXIuc2V0dXAodGhpcywgeyByZXBvcnQ6IG9wdHMucmVwb3J0IH0pO1xuICAgICAgICBjb25zdCByZXNvbHZlckNoYWluID0gb3B0cy5sb2NrZmlsZU9ubHlcbiAgICAgICAgICAgID8gW25ldyBSdW5JbnN0YWxsUGxlYXNlUmVzb2x2ZXJfMS5SdW5JbnN0YWxsUGxlYXNlUmVzb2x2ZXIocmVhbFJlc29sdmVyKV1cbiAgICAgICAgICAgIDogW2xlZ2FjeU1pZ3JhdGlvblJlc29sdmVyLCByZWFsUmVzb2x2ZXJdO1xuICAgICAgICBjb25zdCByZXNvbHZlciA9IG5ldyBNdWx0aVJlc29sdmVyXzEuTXVsdGlSZXNvbHZlcihbXG4gICAgICAgICAgICBuZXcgTG9ja2ZpbGVSZXNvbHZlcl8xLkxvY2tmaWxlUmVzb2x2ZXIocmVhbFJlc29sdmVyKSxcbiAgICAgICAgICAgIC4uLnJlc29sdmVyQ2hhaW4sXG4gICAgICAgIF0pO1xuICAgICAgICBjb25zdCBub0xvY2tmaWxlUmVzb2x2ZXIgPSBuZXcgTXVsdGlSZXNvbHZlcl8xLk11bHRpUmVzb2x2ZXIoW1xuICAgICAgICAgICAgLi4ucmVzb2x2ZXJDaGFpbixcbiAgICAgICAgXSk7XG4gICAgICAgIGNvbnN0IGZldGNoZXIgPSB0aGlzLmNvbmZpZ3VyYXRpb24ubWFrZUZldGNoZXIoKTtcbiAgICAgICAgY29uc3QgcmVzb2x2ZU9wdGlvbnMgPSBvcHRzLmxvY2tmaWxlT25seVxuICAgICAgICAgICAgPyB7IHByb2plY3Q6IHRoaXMsIHJlcG9ydDogb3B0cy5yZXBvcnQsIHJlc29sdmVyIH1cbiAgICAgICAgICAgIDogeyBwcm9qZWN0OiB0aGlzLCByZXBvcnQ6IG9wdHMucmVwb3J0LCByZXNvbHZlciwgZmV0Y2hPcHRpb25zOiB7IHByb2plY3Q6IHRoaXMsIGNhY2hlOiBvcHRzLmNhY2hlLCBjaGVja3N1bXM6IHRoaXMuc3RvcmVkQ2hlY2tzdW1zLCByZXBvcnQ6IG9wdHMucmVwb3J0LCBmZXRjaGVyLCBjYWNoZU9wdGlvbnM6IHsgbWlycm9yV3JpdGVPbmx5OiB0cnVlIH0gfSB9O1xuICAgICAgICBjb25zdCBhbGxEZXNjcmlwdG9ycyA9IG5ldyBNYXAoKTtcbiAgICAgICAgY29uc3QgYWxsUGFja2FnZXMgPSBuZXcgTWFwKCk7XG4gICAgICAgIGNvbnN0IGFsbFJlc29sdXRpb25zID0gbmV3IE1hcCgpO1xuICAgICAgICBjb25zdCBvcmlnaW5hbFBhY2thZ2VzID0gbmV3IE1hcCgpO1xuICAgICAgICBjb25zdCBwYWNrYWdlUmVzb2x1dGlvblByb21pc2VzID0gbmV3IE1hcCgpO1xuICAgICAgICBjb25zdCBkZXNjcmlwdG9yUmVzb2x1dGlvblByb21pc2VzID0gbmV3IE1hcCgpO1xuICAgICAgICBjb25zdCBkZXBlbmRlbmN5UmVzb2x1dGlvbkxvY2F0b3IgPSB0aGlzLnRvcExldmVsV29ya3NwYWNlLmFuY2hvcmVkTG9jYXRvcjtcbiAgICAgICAgY29uc3QgcmVzb2x1dGlvbkRlcGVuZGVuY2llcyA9IG5ldyBTZXQoKTtcbiAgICAgICAgY29uc3QgcmVzb2x1dGlvblF1ZXVlID0gW107XG4gICAgICAgIC8vIERvaW5nIHRoZXNlIGNhbGxzIGVhcmx5IGlzIGltcG9ydGFudDogaXQgc2VlbXMgY2FsbGluZyBpdCBhZnRlciB3ZSd2ZSBzdGFydGVkIHRoZSByZXNvbHV0aW9uIGluY3VycyB2ZXJ5IGhpZ2hcbiAgICAgICAgLy8gcGVyZm9ybWFuY2UgcGVuYWx0eSBvbiBXU0wsIHdpdGggdGhlIEdhdHNieSBiZW5jaG1hcmsganVtcGluZyBmcm9tIH4yOHMgdG8gfjEzMHMuIEl0J3MgcG9zc2libGUgdGhpcyBpcyBkdWUgdG9cbiAgICAgICAgLy8gdGhlIG51bWJlciBvZiBhc3luYyB0YXNrcyBiZWluZyBsaXN0ZWQgaW4gdGhlIHJlcG9ydCwgYWx0aG91Z2ggaXQncyBzdHJhbmdlIHRoaXMgZG9lc24ndCBvY2N1ciBvbiBvdGhlciBzeXN0ZW1zLlxuICAgICAgICBjb25zdCBjdXJyZW50QXJjaGl0ZWN0dXJlID0gbm9kZVV0aWxzLmdldEFyY2hpdGVjdHVyZVNldCgpO1xuICAgICAgICBjb25zdCBzdXBwb3J0ZWRBcmNoaXRlY3R1cmVzID0gdGhpcy5jb25maWd1cmF0aW9uLmdldFN1cHBvcnRlZEFyY2hpdGVjdHVyZXMoKTtcbiAgICAgICAgYXdhaXQgb3B0cy5yZXBvcnQuc3RhcnRQcm9ncmVzc1Byb21pc2UoUmVwb3J0XzEuUmVwb3J0LnByb2dyZXNzVmlhVGl0bGUoKSwgYXN5bmMgKHByb2dyZXNzKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzdGFydFBhY2thZ2VSZXNvbHV0aW9uID0gYXN5bmMgKGxvY2F0b3IpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBvcmlnaW5hbFBrZyA9IGF3YWl0IG1pc2NVdGlscy5wcmV0dGlmeUFzeW5jRXJyb3JzKGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGF3YWl0IHJlc29sdmVyLnJlc29sdmUobG9jYXRvciwgcmVzb2x2ZU9wdGlvbnMpO1xuICAgICAgICAgICAgICAgIH0sIG1lc3NhZ2UgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYCR7c3RydWN0VXRpbHMucHJldHR5TG9jYXRvcih0aGlzLmNvbmZpZ3VyYXRpb24sIGxvY2F0b3IpfTogJHttZXNzYWdlfWA7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaWYgKCFzdHJ1Y3RVdGlscy5hcmVMb2NhdG9yc0VxdWFsKGxvY2F0b3IsIG9yaWdpbmFsUGtnKSlcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBBc3NlcnRpb24gZmFpbGVkOiBUaGUgbG9jYXRvciBjYW5ub3QgYmUgY2hhbmdlZCBieSB0aGUgcmVzb2x2ZXIgKHdlbnQgZnJvbSAke3N0cnVjdFV0aWxzLnByZXR0eUxvY2F0b3IodGhpcy5jb25maWd1cmF0aW9uLCBsb2NhdG9yKX0gdG8gJHtzdHJ1Y3RVdGlscy5wcmV0dHlMb2NhdG9yKHRoaXMuY29uZmlndXJhdGlvbiwgb3JpZ2luYWxQa2cpfSlgKTtcbiAgICAgICAgICAgICAgICBvcmlnaW5hbFBhY2thZ2VzLnNldChvcmlnaW5hbFBrZy5sb2NhdG9ySGFzaCwgb3JpZ2luYWxQa2cpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHBrZyA9IGF3YWl0IHRoaXMucHJlcGFyZVBhY2thZ2Uob3JpZ2luYWxQa2csIHsgcmVzb2x2ZXIsIHJlc29sdmVPcHRpb25zIH0pO1xuICAgICAgICAgICAgICAgIGNvbnN0IGRlcGVuZGVuY3lSZXNvbHV0aW9ucyA9IG1pc2NVdGlscy5hbGxTZXR0bGVkU2FmZShbLi4ucGtnLmRlcGVuZGVuY2llcy52YWx1ZXMoKV0ubWFwKGRlc2NyaXB0b3IgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2NoZWR1bGVEZXNjcmlwdG9yUmVzb2x1dGlvbihkZXNjcmlwdG9yKTtcbiAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgcmVzb2x1dGlvblF1ZXVlLnB1c2goZGVwZW5kZW5jeVJlc29sdXRpb25zKTtcbiAgICAgICAgICAgICAgICAvLyBXaGlsZSB0aGUgcHJvbWlzZSBpcyBub3cgcGFydCBvZiBgcmVzb2x1dGlvblF1ZXVlYCwgbm90aGluZyBpc1xuICAgICAgICAgICAgICAgIC8vIHRlY2huaWNhbGx5IGBhd2FpdGluZ2AgaXQganVzdCB5ZXQgKGFuZCBub3RoaW5nIHdpbGwgdW50aWwgdGhlXG4gICAgICAgICAgICAgICAgLy8gY3VycmVudCByZXNvbHV0aW9uIHBhc3MgZnVsbHkgZW5kcywgYW5kIHRoZSBuZXh0IG9uZSBzdGFydHMpLlxuICAgICAgICAgICAgICAgIC8vXG4gICAgICAgICAgICAgICAgLy8gVG8gYXZvaWQgVjggcHJpbnRpbmcgYW4gVW5oYW5kbGVkUHJvbWlzZVJlamVjdGlvbldhcm5pbmcsIHdlXG4gICAgICAgICAgICAgICAgLy8gYmluZCBhIGVtcHR5IGBjYXRjaGAuXG4gICAgICAgICAgICAgICAgLy9cbiAgICAgICAgICAgICAgICBkZXBlbmRlbmN5UmVzb2x1dGlvbnMuY2F0Y2goKCkgPT4geyB9KTtcbiAgICAgICAgICAgICAgICBhbGxQYWNrYWdlcy5zZXQocGtnLmxvY2F0b3JIYXNoLCBwa2cpO1xuICAgICAgICAgICAgICAgIHJldHVybiBwa2c7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgY29uc3Qgc2NoZWR1bGVQYWNrYWdlUmVzb2x1dGlvbiA9IGFzeW5jIChsb2NhdG9yKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgcHJvbWlzZSA9IHBhY2thZ2VSZXNvbHV0aW9uUHJvbWlzZXMuZ2V0KGxvY2F0b3IubG9jYXRvckhhc2gpO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgcHJvbWlzZSAhPT0gYHVuZGVmaW5lZGApXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBwcm9taXNlO1xuICAgICAgICAgICAgICAgIGNvbnN0IG5ld1Byb21pc2UgPSBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHN0YXJ0UGFja2FnZVJlc29sdXRpb24obG9jYXRvcikpO1xuICAgICAgICAgICAgICAgIHBhY2thZ2VSZXNvbHV0aW9uUHJvbWlzZXMuc2V0KGxvY2F0b3IubG9jYXRvckhhc2gsIG5ld1Byb21pc2UpO1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXdQcm9taXNlO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGNvbnN0IHN0YXJ0RGVzY3JpcHRvckFsaWFzaW5nID0gYXN5bmMgKGRlc2NyaXB0b3IsIGFsaWFzKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzb2x1dGlvbiA9IGF3YWl0IHNjaGVkdWxlRGVzY3JpcHRvclJlc29sdXRpb24oYWxpYXMpO1xuICAgICAgICAgICAgICAgIGFsbERlc2NyaXB0b3JzLnNldChkZXNjcmlwdG9yLmRlc2NyaXB0b3JIYXNoLCBkZXNjcmlwdG9yKTtcbiAgICAgICAgICAgICAgICBhbGxSZXNvbHV0aW9ucy5zZXQoZGVzY3JpcHRvci5kZXNjcmlwdG9ySGFzaCwgcmVzb2x1dGlvbi5sb2NhdG9ySGFzaCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdXRpb247XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgY29uc3Qgc3RhcnREZXNjcmlwdG9yUmVzb2x1dGlvbiA9IGFzeW5jIChkZXNjcmlwdG9yKSA9PiB7XG4gICAgICAgICAgICAgICAgcHJvZ3Jlc3Muc2V0VGl0bGUoc3RydWN0VXRpbHMucHJldHR5RGVzY3JpcHRvcih0aGlzLmNvbmZpZ3VyYXRpb24sIGRlc2NyaXB0b3IpKTtcbiAgICAgICAgICAgICAgICBjb25zdCBhbGlhcyA9IHRoaXMucmVzb2x1dGlvbkFsaWFzZXMuZ2V0KGRlc2NyaXB0b3IuZGVzY3JpcHRvckhhc2gpO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgYWxpYXMgIT09IGB1bmRlZmluZWRgKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3RhcnREZXNjcmlwdG9yQWxpYXNpbmcoZGVzY3JpcHRvciwgdGhpcy5zdG9yZWREZXNjcmlwdG9ycy5nZXQoYWxpYXMpKTtcbiAgICAgICAgICAgICAgICBjb25zdCByZXNvbHV0aW9uRGVwZW5kZW5jaWVzTGlzdCA9IHJlc29sdmVyLmdldFJlc29sdXRpb25EZXBlbmRlbmNpZXMoZGVzY3JpcHRvciwgcmVzb2x2ZU9wdGlvbnMpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlc29sdmVkRGVwZW5kZW5jaWVzID0gT2JqZWN0LmZyb21FbnRyaWVzKGF3YWl0IG1pc2NVdGlscy5hbGxTZXR0bGVkU2FmZShPYmplY3QuZW50cmllcyhyZXNvbHV0aW9uRGVwZW5kZW5jaWVzTGlzdCkubWFwKGFzeW5jIChbZGVwZW5kZW5jeU5hbWUsIGRlcGVuZGVuY3ldKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJvdW5kID0gcmVzb2x2ZXIuYmluZERlc2NyaXB0b3IoZGVwZW5kZW5jeSwgZGVwZW5kZW5jeVJlc29sdXRpb25Mb2NhdG9yLCByZXNvbHZlT3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc29sdmVkUGFja2FnZSA9IGF3YWl0IHNjaGVkdWxlRGVzY3JpcHRvclJlc29sdXRpb24oYm91bmQpO1xuICAgICAgICAgICAgICAgICAgICByZXNvbHV0aW9uRGVwZW5kZW5jaWVzLmFkZChyZXNvbHZlZFBhY2thZ2UubG9jYXRvckhhc2gpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gW2RlcGVuZGVuY3lOYW1lLCByZXNvbHZlZFBhY2thZ2VdO1xuICAgICAgICAgICAgICAgIH0pKSk7XG4gICAgICAgICAgICAgICAgY29uc3QgY2FuZGlkYXRlUmVzb2x1dGlvbnMgPSBhd2FpdCBtaXNjVXRpbHMucHJldHRpZnlBc3luY0Vycm9ycyhhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhd2FpdCByZXNvbHZlci5nZXRDYW5kaWRhdGVzKGRlc2NyaXB0b3IsIHJlc29sdmVkRGVwZW5kZW5jaWVzLCByZXNvbHZlT3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgfSwgbWVzc2FnZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBgJHtzdHJ1Y3RVdGlscy5wcmV0dHlEZXNjcmlwdG9yKHRoaXMuY29uZmlndXJhdGlvbiwgZGVzY3JpcHRvcil9OiAke21lc3NhZ2V9YDtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBjb25zdCBmaW5hbFJlc29sdXRpb24gPSBjYW5kaWRhdGVSZXNvbHV0aW9uc1swXTtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGZpbmFsUmVzb2x1dGlvbiA9PT0gYHVuZGVmaW5lZGApXG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBSZXBvcnRfMS5SZXBvcnRFcnJvcihNZXNzYWdlTmFtZV8xLk1lc3NhZ2VOYW1lLlJFU09MVVRJT05fRkFJTEVELCBgJHtzdHJ1Y3RVdGlscy5wcmV0dHlEZXNjcmlwdG9yKHRoaXMuY29uZmlndXJhdGlvbiwgZGVzY3JpcHRvcil9OiBObyBjYW5kaWRhdGVzIGZvdW5kYCk7XG4gICAgICAgICAgICAgICAgaWYgKG9wdHMuY2hlY2tSZXNvbHV0aW9ucykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IGxvY2F0b3JzIH0gPSBhd2FpdCBub0xvY2tmaWxlUmVzb2x2ZXIuZ2V0U2F0aXNmeWluZyhkZXNjcmlwdG9yLCByZXNvbHZlZERlcGVuZGVuY2llcywgW2ZpbmFsUmVzb2x1dGlvbl0sIHsgLi4ucmVzb2x2ZU9wdGlvbnMsIHJlc29sdmVyOiBub0xvY2tmaWxlUmVzb2x2ZXIgfSk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghbG9jYXRvcnMuZmluZChsb2NhdG9yID0+IGxvY2F0b3IubG9jYXRvckhhc2ggPT09IGZpbmFsUmVzb2x1dGlvbi5sb2NhdG9ySGFzaCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBSZXBvcnRfMS5SZXBvcnRFcnJvcihNZXNzYWdlTmFtZV8xLk1lc3NhZ2VOYW1lLlJFU09MVVRJT05fTUlTTUFUQ0gsIGBJbnZhbGlkIHJlc29sdXRpb24gJHtzdHJ1Y3RVdGlscy5wcmV0dHlSZXNvbHV0aW9uKHRoaXMuY29uZmlndXJhdGlvbiwgZGVzY3JpcHRvciwgZmluYWxSZXNvbHV0aW9uKX1gKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBhbGxEZXNjcmlwdG9ycy5zZXQoZGVzY3JpcHRvci5kZXNjcmlwdG9ySGFzaCwgZGVzY3JpcHRvcik7XG4gICAgICAgICAgICAgICAgYWxsUmVzb2x1dGlvbnMuc2V0KGRlc2NyaXB0b3IuZGVzY3JpcHRvckhhc2gsIGZpbmFsUmVzb2x1dGlvbi5sb2NhdG9ySGFzaCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHNjaGVkdWxlUGFja2FnZVJlc29sdXRpb24oZmluYWxSZXNvbHV0aW9uKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBjb25zdCBzY2hlZHVsZURlc2NyaXB0b3JSZXNvbHV0aW9uID0gKGRlc2NyaXB0b3IpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBwcm9taXNlID0gZGVzY3JpcHRvclJlc29sdXRpb25Qcm9taXNlcy5nZXQoZGVzY3JpcHRvci5kZXNjcmlwdG9ySGFzaCk7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBwcm9taXNlICE9PSBgdW5kZWZpbmVkYClcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHByb21pc2U7XG4gICAgICAgICAgICAgICAgYWxsRGVzY3JpcHRvcnMuc2V0KGRlc2NyaXB0b3IuZGVzY3JpcHRvckhhc2gsIGRlc2NyaXB0b3IpO1xuICAgICAgICAgICAgICAgIGNvbnN0IG5ld1Byb21pc2UgPSBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHN0YXJ0RGVzY3JpcHRvclJlc29sdXRpb24oZGVzY3JpcHRvcikpO1xuICAgICAgICAgICAgICAgIGRlc2NyaXB0b3JSZXNvbHV0aW9uUHJvbWlzZXMuc2V0KGRlc2NyaXB0b3IuZGVzY3JpcHRvckhhc2gsIG5ld1Byb21pc2UpO1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXdQcm9taXNlO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGZvciAoY29uc3Qgd29ya3NwYWNlIG9mIHRoaXMud29ya3NwYWNlcykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHdvcmtzcGFjZURlc2NyaXB0b3IgPSB3b3Jrc3BhY2UuYW5jaG9yZWREZXNjcmlwdG9yO1xuICAgICAgICAgICAgICAgIHJlc29sdXRpb25RdWV1ZS5wdXNoKHNjaGVkdWxlRGVzY3JpcHRvclJlc29sdXRpb24od29ya3NwYWNlRGVzY3JpcHRvcikpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgd2hpbGUgKHJlc29sdXRpb25RdWV1ZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY29weSA9IFsuLi5yZXNvbHV0aW9uUXVldWVdO1xuICAgICAgICAgICAgICAgIHJlc29sdXRpb25RdWV1ZS5sZW5ndGggPSAwO1xuICAgICAgICAgICAgICAgIGF3YWl0IG1pc2NVdGlscy5hbGxTZXR0bGVkU2FmZShjb3B5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIC8vIEluIHRoaXMgc3RlcCB3ZSBub3cgY3JlYXRlIHZpcnR1YWwgcGFja2FnZXMgZm9yIGVhY2ggcGFja2FnZSB3aXRoIGF0XG4gICAgICAgIC8vIGxlYXN0IG9uZSBwZWVyIGRlcGVuZGVuY3kuIFdlIGFsc28gdXNlIGl0IHRvIHNlYXJjaCBmb3IgdGhlIGFsaWFzXG4gICAgICAgIC8vIGRlc2NyaXB0b3JzIHRoYXQgYXJlbid0IGRlcGVuZGVkIHVwb24gYnkgYW55dGhpbmcgYW5kIGNhbiBiZSBzYWZlbHlcbiAgICAgICAgLy8gcHJ1bmVkLlxuICAgICAgICBjb25zdCB2b2xhdGlsZURlc2NyaXB0b3JzID0gbmV3IFNldCh0aGlzLnJlc29sdXRpb25BbGlhc2VzLnZhbHVlcygpKTtcbiAgICAgICAgY29uc3Qgb3B0aW9uYWxCdWlsZHMgPSBuZXcgU2V0KGFsbFBhY2thZ2VzLmtleXMoKSk7XG4gICAgICAgIGNvbnN0IGFjY2Vzc2libGVMb2NhdG9ycyA9IG5ldyBTZXQoKTtcbiAgICAgICAgY29uc3QgcGVlclJlcXVpcmVtZW50cyA9IG5ldyBNYXAoKTtcbiAgICAgICAgYXBwbHlWaXJ0dWFsUmVzb2x1dGlvbk11dGF0aW9ucyh7XG4gICAgICAgICAgICBwcm9qZWN0OiB0aGlzLFxuICAgICAgICAgICAgcmVwb3J0OiBvcHRzLnJlcG9ydCxcbiAgICAgICAgICAgIGFjY2Vzc2libGVMb2NhdG9ycyxcbiAgICAgICAgICAgIHZvbGF0aWxlRGVzY3JpcHRvcnMsXG4gICAgICAgICAgICBvcHRpb25hbEJ1aWxkcyxcbiAgICAgICAgICAgIHBlZXJSZXF1aXJlbWVudHMsXG4gICAgICAgICAgICBhbGxEZXNjcmlwdG9ycyxcbiAgICAgICAgICAgIGFsbFJlc29sdXRpb25zLFxuICAgICAgICAgICAgYWxsUGFja2FnZXMsXG4gICAgICAgIH0pO1xuICAgICAgICBmb3IgKGNvbnN0IGxvY2F0b3JIYXNoIG9mIHJlc29sdXRpb25EZXBlbmRlbmNpZXMpXG4gICAgICAgICAgICBvcHRpb25hbEJ1aWxkcy5kZWxldGUobG9jYXRvckhhc2gpO1xuICAgICAgICAvLyBBbGwgZGVzY3JpcHRvcnMgc3RpbGwgcmVmZXJlbmNlZCB3aXRoaW4gdGhlIHZvbGF0aWxlRGVzY3JpcHRvcnMgc2V0IGFyZVxuICAgICAgICAvLyBkZXNjcmlwdG9ycyB0aGF0IGFyZW4ndCBkZXBlbmRlZCB1cG9uIGJ5IGFueXRoaW5nIGluIHRoZSBkZXBlbmRlbmN5IHRyZWUuXG4gICAgICAgIGZvciAoY29uc3QgZGVzY3JpcHRvckhhc2ggb2Ygdm9sYXRpbGVEZXNjcmlwdG9ycykge1xuICAgICAgICAgICAgYWxsRGVzY3JpcHRvcnMuZGVsZXRlKGRlc2NyaXB0b3JIYXNoKTtcbiAgICAgICAgICAgIGFsbFJlc29sdXRpb25zLmRlbGV0ZShkZXNjcmlwdG9ySGFzaCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY29uZGl0aW9uYWxMb2NhdG9ycyA9IG5ldyBTZXQoKTtcbiAgICAgICAgY29uc3QgZGlzYWJsZWRMb2NhdG9ycyA9IG5ldyBTZXQoKTtcbiAgICAgICAgZm9yIChjb25zdCBwa2cgb2YgYWxsUGFja2FnZXMudmFsdWVzKCkpIHtcbiAgICAgICAgICAgIGlmIChwa2cuY29uZGl0aW9ucyA9PSBudWxsKVxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgaWYgKCFvcHRpb25hbEJ1aWxkcy5oYXMocGtnLmxvY2F0b3JIYXNoKSlcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIGlmICghc3RydWN0VXRpbHMuaXNQYWNrYWdlQ29tcGF0aWJsZShwa2csIHN1cHBvcnRlZEFyY2hpdGVjdHVyZXMpKSB7XG4gICAgICAgICAgICAgICAgaWYgKHN0cnVjdFV0aWxzLmlzUGFja2FnZUNvbXBhdGlibGUocGtnLCBjdXJyZW50QXJjaGl0ZWN0dXJlKSkge1xuICAgICAgICAgICAgICAgICAgICBvcHRzLnJlcG9ydC5yZXBvcnRXYXJuaW5nT25jZShNZXNzYWdlTmFtZV8xLk1lc3NhZ2VOYW1lLkdIT1NUX0FSQ0hJVEVDVFVSRSwgYCR7c3RydWN0VXRpbHMucHJldHR5TG9jYXRvcih0aGlzLmNvbmZpZ3VyYXRpb24sIHBrZyl9OiBZb3VyIGN1cnJlbnQgYXJjaGl0ZWN0dXJlICgke3Byb2Nlc3MucGxhdGZvcm19LSR7cHJvY2Vzcy5hcmNofSkgaXMgc3VwcG9ydGVkIGJ5IHRoaXMgcGFja2FnZSwgYnV0IGlzIG1pc3NpbmcgZnJvbSB0aGUgJHtmb3JtYXRVdGlscy5wcmV0dHkodGhpcy5jb25maWd1cmF0aW9uLCBgc3VwcG9ydGVkQXJjaGl0ZWN0dXJlc2AsIGZvcm1hdFV0aWxzLlR5cGUuU0VUVElORyl9IHNldHRpbmdgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZGlzYWJsZWRMb2NhdG9ycy5hZGQocGtnLmxvY2F0b3JIYXNoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbmRpdGlvbmFsTG9jYXRvcnMuYWRkKHBrZy5sb2NhdG9ySGFzaCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gRXZlcnl0aGluZyBpcyBkb25lLCB3ZSBjYW4gbm93IHVwZGF0ZSBvdXIgaW50ZXJuYWwgcmVzb2x1dGlvbnMgdG9cbiAgICAgICAgLy8gcmVmZXJlbmNlIHRoZSBuZXcgb25lc1xuICAgICAgICB0aGlzLnN0b3JlZFJlc29sdXRpb25zID0gYWxsUmVzb2x1dGlvbnM7XG4gICAgICAgIHRoaXMuc3RvcmVkRGVzY3JpcHRvcnMgPSBhbGxEZXNjcmlwdG9ycztcbiAgICAgICAgdGhpcy5zdG9yZWRQYWNrYWdlcyA9IGFsbFBhY2thZ2VzO1xuICAgICAgICB0aGlzLmFjY2Vzc2libGVMb2NhdG9ycyA9IGFjY2Vzc2libGVMb2NhdG9ycztcbiAgICAgICAgdGhpcy5jb25kaXRpb25hbExvY2F0b3JzID0gY29uZGl0aW9uYWxMb2NhdG9ycztcbiAgICAgICAgdGhpcy5kaXNhYmxlZExvY2F0b3JzID0gZGlzYWJsZWRMb2NhdG9ycztcbiAgICAgICAgdGhpcy5vcmlnaW5hbFBhY2thZ2VzID0gb3JpZ2luYWxQYWNrYWdlcztcbiAgICAgICAgdGhpcy5vcHRpb25hbEJ1aWxkcyA9IG9wdGlvbmFsQnVpbGRzO1xuICAgICAgICB0aGlzLnBlZXJSZXF1aXJlbWVudHMgPSBwZWVyUmVxdWlyZW1lbnRzO1xuICAgIH1cbiAgICBhc3luYyBmZXRjaEV2ZXJ5dGhpbmcoeyBjYWNoZSwgcmVwb3J0LCBmZXRjaGVyOiB1c2VyRmV0Y2hlciwgbW9kZSB9KSB7XG4gICAgICAgIGNvbnN0IGNhY2hlT3B0aW9ucyA9IHtcbiAgICAgICAgICAgIG1vY2tlZFBhY2thZ2VzOiB0aGlzLmRpc2FibGVkTG9jYXRvcnMsXG4gICAgICAgICAgICB1bnN0YWJsZVBhY2thZ2VzOiB0aGlzLmNvbmRpdGlvbmFsTG9jYXRvcnMsXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IGZldGNoZXIgPSB1c2VyRmV0Y2hlciB8fCB0aGlzLmNvbmZpZ3VyYXRpb24ubWFrZUZldGNoZXIoKTtcbiAgICAgICAgY29uc3QgZmV0Y2hlck9wdGlvbnMgPSB7IGNoZWNrc3VtczogdGhpcy5zdG9yZWRDaGVja3N1bXMsIHByb2plY3Q6IHRoaXMsIGNhY2hlLCBmZXRjaGVyLCByZXBvcnQsIGNhY2hlT3B0aW9ucyB9O1xuICAgICAgICBsZXQgbG9jYXRvckhhc2hlcyA9IEFycmF5LmZyb20obmV3IFNldChtaXNjVXRpbHMuc29ydE1hcCh0aGlzLnN0b3JlZFJlc29sdXRpb25zLnZhbHVlcygpLCBbXG4gICAgICAgICAgICAobG9jYXRvckhhc2gpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBwa2cgPSB0aGlzLnN0b3JlZFBhY2thZ2VzLmdldChsb2NhdG9ySGFzaCk7XG4gICAgICAgICAgICAgICAgaWYgKCFwa2cpXG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQXNzZXJ0aW9uIGZhaWxlZDogVGhlIGxvY2F0b3Igc2hvdWxkIGhhdmUgYmVlbiByZWdpc3RlcmVkYCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN0cnVjdFV0aWxzLnN0cmluZ2lmeUxvY2F0b3IocGtnKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgIF0pKSk7XG4gICAgICAgIC8vIEluIFwiZGVwZW5kZW5jeSB1cGRhdGVcIiBtb2RlLCB3ZSB3b24ndCB0cmlnZ2VyIHRoZSBsaW5rIHN0ZXAuIEFzIGFcbiAgICAgICAgLy8gcmVzdWx0LCB3ZSBvbmx5IG5lZWQgdG8gZmV0Y2ggdGhlIHBhY2thZ2VzIHRoYXQgYXJlIG1pc3NpbmcgdGhlaXJcbiAgICAgICAgLy8gaGFzaGVzICh0byBhZGQgdGhlbSB0byB0aGUgbG9ja2ZpbGUpLlxuICAgICAgICBpZiAobW9kZSA9PT0gSW5zdGFsbE1vZGUuVXBkYXRlTG9ja2ZpbGUpXG4gICAgICAgICAgICBsb2NhdG9ySGFzaGVzID0gbG9jYXRvckhhc2hlcy5maWx0ZXIobG9jYXRvckhhc2ggPT4gIXRoaXMuc3RvcmVkQ2hlY2tzdW1zLmhhcyhsb2NhdG9ySGFzaCkpO1xuICAgICAgICBsZXQgZmlyc3RFcnJvciA9IGZhbHNlO1xuICAgICAgICBjb25zdCBwcm9ncmVzcyA9IFJlcG9ydF8xLlJlcG9ydC5wcm9ncmVzc1ZpYUNvdW50ZXIobG9jYXRvckhhc2hlcy5sZW5ndGgpO1xuICAgICAgICBhd2FpdCByZXBvcnQucmVwb3J0UHJvZ3Jlc3MocHJvZ3Jlc3MpO1xuICAgICAgICBjb25zdCBsaW1pdCA9ICgwLCBwX2xpbWl0XzEuZGVmYXVsdCkoRkVUQ0hFUl9DT05DVVJSRU5DWSk7XG4gICAgICAgIGF3YWl0IHJlcG9ydC5zdGFydENhY2hlUmVwb3J0KGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIGF3YWl0IG1pc2NVdGlscy5hbGxTZXR0bGVkU2FmZShsb2NhdG9ySGFzaGVzLm1hcChsb2NhdG9ySGFzaCA9PiBsaW1pdChhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgcGtnID0gdGhpcy5zdG9yZWRQYWNrYWdlcy5nZXQobG9jYXRvckhhc2gpO1xuICAgICAgICAgICAgICAgIGlmICghcGtnKVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEFzc2VydGlvbiBmYWlsZWQ6IFRoZSBsb2NhdG9yIHNob3VsZCBoYXZlIGJlZW4gcmVnaXN0ZXJlZGApO1xuICAgICAgICAgICAgICAgIGlmIChzdHJ1Y3RVdGlscy5pc1ZpcnR1YWxMb2NhdG9yKHBrZykpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICBsZXQgZmV0Y2hSZXN1bHQ7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgZmV0Y2hSZXN1bHQgPSBhd2FpdCBmZXRjaGVyLmZldGNoKHBrZywgZmV0Y2hlck9wdGlvbnMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgZXJyb3IubWVzc2FnZSA9IGAke3N0cnVjdFV0aWxzLnByZXR0eUxvY2F0b3IodGhpcy5jb25maWd1cmF0aW9uLCBwa2cpfTogJHtlcnJvci5tZXNzYWdlfWA7XG4gICAgICAgICAgICAgICAgICAgIHJlcG9ydC5yZXBvcnRFeGNlcHRpb25PbmNlKGVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgZmlyc3RFcnJvciA9IGVycm9yO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChmZXRjaFJlc3VsdC5jaGVja3N1bSAhPSBudWxsKVxuICAgICAgICAgICAgICAgICAgICB0aGlzLnN0b3JlZENoZWNrc3Vtcy5zZXQocGtnLmxvY2F0b3JIYXNoLCBmZXRjaFJlc3VsdC5jaGVja3N1bSk7XG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICB0aGlzLnN0b3JlZENoZWNrc3Vtcy5kZWxldGUocGtnLmxvY2F0b3JIYXNoKTtcbiAgICAgICAgICAgICAgICBpZiAoZmV0Y2hSZXN1bHQucmVsZWFzZUZzKSB7XG4gICAgICAgICAgICAgICAgICAgIGZldGNoUmVzdWx0LnJlbGVhc2VGcygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHByb2dyZXNzLnRpY2soKTtcbiAgICAgICAgICAgIH0pKSk7XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoZmlyc3RFcnJvcikge1xuICAgICAgICAgICAgdGhyb3cgZmlyc3RFcnJvcjtcbiAgICAgICAgfVxuICAgIH1cbiAgICBhc3luYyBsaW5rRXZlcnl0aGluZyh7IGNhY2hlLCByZXBvcnQsIGZldGNoZXI6IG9wdEZldGNoZXIsIG1vZGUgfSkge1xuICAgICAgICB2YXIgX2EsIF9iLCBfYztcbiAgICAgICAgY29uc3QgY2FjaGVPcHRpb25zID0ge1xuICAgICAgICAgICAgbW9ja2VkUGFja2FnZXM6IHRoaXMuZGlzYWJsZWRMb2NhdG9ycyxcbiAgICAgICAgICAgIHVuc3RhYmxlUGFja2FnZXM6IHRoaXMuY29uZGl0aW9uYWxMb2NhdG9ycyxcbiAgICAgICAgICAgIHNraXBJbnRlZ3JpdHlDaGVjazogdHJ1ZSxcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgZmV0Y2hlciA9IG9wdEZldGNoZXIgfHwgdGhpcy5jb25maWd1cmF0aW9uLm1ha2VGZXRjaGVyKCk7XG4gICAgICAgIGNvbnN0IGZldGNoZXJPcHRpb25zID0geyBjaGVja3N1bXM6IHRoaXMuc3RvcmVkQ2hlY2tzdW1zLCBwcm9qZWN0OiB0aGlzLCBjYWNoZSwgZmV0Y2hlciwgcmVwb3J0LCBjYWNoZU9wdGlvbnMgfTtcbiAgICAgICAgY29uc3QgbGlua2VycyA9IHRoaXMuY29uZmlndXJhdGlvbi5nZXRMaW5rZXJzKCk7XG4gICAgICAgIGNvbnN0IGxpbmtlck9wdGlvbnMgPSB7IHByb2plY3Q6IHRoaXMsIHJlcG9ydCB9O1xuICAgICAgICBjb25zdCBpbnN0YWxsZXJzID0gbmV3IE1hcChsaW5rZXJzLm1hcChsaW5rZXIgPT4ge1xuICAgICAgICAgICAgY29uc3QgaW5zdGFsbGVyID0gbGlua2VyLm1ha2VJbnN0YWxsZXIobGlua2VyT3B0aW9ucyk7XG4gICAgICAgICAgICBjb25zdCBjdXN0b21EYXRhS2V5ID0gbGlua2VyLmdldEN1c3RvbURhdGFLZXkoKTtcbiAgICAgICAgICAgIGNvbnN0IGN1c3RvbURhdGEgPSB0aGlzLmxpbmtlcnNDdXN0b21EYXRhLmdldChjdXN0b21EYXRhS2V5KTtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgY3VzdG9tRGF0YSAhPT0gYHVuZGVmaW5lZGApXG4gICAgICAgICAgICAgICAgaW5zdGFsbGVyLmF0dGFjaEN1c3RvbURhdGEoY3VzdG9tRGF0YSk7XG4gICAgICAgICAgICByZXR1cm4gW2xpbmtlciwgaW5zdGFsbGVyXTtcbiAgICAgICAgfSkpO1xuICAgICAgICBjb25zdCBwYWNrYWdlTGlua2VycyA9IG5ldyBNYXAoKTtcbiAgICAgICAgY29uc3QgcGFja2FnZUxvY2F0aW9ucyA9IG5ldyBNYXAoKTtcbiAgICAgICAgY29uc3QgcGFja2FnZUJ1aWxkRGlyZWN0aXZlcyA9IG5ldyBNYXAoKTtcbiAgICAgICAgY29uc3QgZmV0Y2hSZXN1bHRzUGVyUGFja2FnZSA9IG5ldyBNYXAoYXdhaXQgbWlzY1V0aWxzLmFsbFNldHRsZWRTYWZlKFsuLi50aGlzLmFjY2Vzc2libGVMb2NhdG9yc10ubWFwKGFzeW5jIChsb2NhdG9ySGFzaCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcGtnID0gdGhpcy5zdG9yZWRQYWNrYWdlcy5nZXQobG9jYXRvckhhc2gpO1xuICAgICAgICAgICAgaWYgKCFwa2cpXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBBc3NlcnRpb24gZmFpbGVkOiBUaGUgbG9jYXRvciBzaG91bGQgaGF2ZSBiZWVuIHJlZ2lzdGVyZWRgKTtcbiAgICAgICAgICAgIHJldHVybiBbbG9jYXRvckhhc2gsIGF3YWl0IGZldGNoZXIuZmV0Y2gocGtnLCBmZXRjaGVyT3B0aW9ucyldO1xuICAgICAgICB9KSkpO1xuICAgICAgICBjb25zdCBwZW5kaW5nUHJvbWlzZXMgPSBbXTtcbiAgICAgICAgLy8gU3RlcCAxOiBJbnN0YWxsaW5nIHRoZSBwYWNrYWdlcyBvbiB0aGUgZGlza1xuICAgICAgICBmb3IgKGNvbnN0IGxvY2F0b3JIYXNoIG9mIHRoaXMuYWNjZXNzaWJsZUxvY2F0b3JzKSB7XG4gICAgICAgICAgICBjb25zdCBwa2cgPSB0aGlzLnN0b3JlZFBhY2thZ2VzLmdldChsb2NhdG9ySGFzaCk7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHBrZyA9PT0gYHVuZGVmaW5lZGApXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBBc3NlcnRpb24gZmFpbGVkOiBUaGUgbG9jYXRvciBzaG91bGQgaGF2ZSBiZWVuIHJlZ2lzdGVyZWRgKTtcbiAgICAgICAgICAgIGNvbnN0IGZldGNoUmVzdWx0ID0gZmV0Y2hSZXN1bHRzUGVyUGFja2FnZS5nZXQocGtnLmxvY2F0b3JIYXNoKTtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgZmV0Y2hSZXN1bHQgPT09IGB1bmRlZmluZWRgKVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQXNzZXJ0aW9uIGZhaWxlZDogVGhlIGZldGNoIHJlc3VsdCBzaG91bGQgaGF2ZSBiZWVuIHJlZ2lzdGVyZWRgKTtcbiAgICAgICAgICAgIGNvbnN0IGhvbGRQcm9taXNlcyA9IFtdO1xuICAgICAgICAgICAgY29uc3QgaG9sZEZldGNoUmVzdWx0ID0gKHByb21pc2UpID0+IHtcbiAgICAgICAgICAgICAgICBob2xkUHJvbWlzZXMucHVzaChwcm9taXNlKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBjb25zdCB3b3Jrc3BhY2UgPSB0aGlzLnRyeVdvcmtzcGFjZUJ5TG9jYXRvcihwa2cpO1xuICAgICAgICAgICAgaWYgKHdvcmtzcGFjZSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGJ1aWxkU2NyaXB0cyA9IFtdO1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgc2NyaXB0cyB9ID0gd29ya3NwYWNlLm1hbmlmZXN0O1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3Qgc2NyaXB0TmFtZSBvZiBbYHByZWluc3RhbGxgLCBgaW5zdGFsbGAsIGBwb3N0aW5zdGFsbGBdKVxuICAgICAgICAgICAgICAgICAgICBpZiAoc2NyaXB0cy5oYXMoc2NyaXB0TmFtZSkpXG4gICAgICAgICAgICAgICAgICAgICAgICBidWlsZFNjcmlwdHMucHVzaChbSW5zdGFsbGVyXzEuQnVpbGRUeXBlLlNDUklQVCwgc2NyaXB0TmFtZV0pO1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgW2xpbmtlciwgaW5zdGFsbGVyXSBvZiBpbnN0YWxsZXJzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobGlua2VyLnN1cHBvcnRzUGFja2FnZShwa2csIGxpbmtlck9wdGlvbnMpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgaW5zdGFsbGVyLmluc3RhbGxQYWNrYWdlKHBrZywgZmV0Y2hSZXN1bHQsIHsgaG9sZEZldGNoUmVzdWx0IH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQuYnVpbGREaXJlY3RpdmUgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBBc3NlcnRpb24gZmFpbGVkOiBMaW5rZXJzIGNhbid0IHJldHVybiBidWlsZCBkaXJlY3RpdmVzIGZvciB3b3Jrc3BhY2VzOyB0aGlzIHJlc3BvbnNpYmlsaXR5IGJlZmFsbHMgdG8gdGhlIFlhcm4gY29yZWApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGhvbGRQcm9taXNlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIChfYSA9IGZldGNoUmVzdWx0LnJlbGVhc2VGcykgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmNhbGwoZmV0Y2hSZXN1bHQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGVuZGluZ1Byb21pc2VzLnB1c2gobWlzY1V0aWxzLmFsbFNldHRsZWRTYWZlKGhvbGRQcm9taXNlcykuY2F0Y2goKCkgPT4geyB9KS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9hID0gZmV0Y2hSZXN1bHQucmVsZWFzZUZzKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuY2FsbChmZXRjaFJlc3VsdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgbG9jYXRpb24gPSBmc2xpYl8yLnBwYXRoLmpvaW4oZmV0Y2hSZXN1bHQucGFja2FnZUZzLmdldFJlYWxQYXRoKCksIGZldGNoUmVzdWx0LnByZWZpeFBhdGgpO1xuICAgICAgICAgICAgICAgIHBhY2thZ2VMb2NhdGlvbnMuc2V0KHBrZy5sb2NhdG9ySGFzaCwgbG9jYXRpb24pO1xuICAgICAgICAgICAgICAgIC8vIFZpcnR1YWwgd29ya3NwYWNlcyBzaG91bGRuJ3QgYmUgYnVpbHQgYXMgdGhleSBkb24ndCByZWFsbHkgZXhpc3RcbiAgICAgICAgICAgICAgICBpZiAoIXN0cnVjdFV0aWxzLmlzVmlydHVhbExvY2F0b3IocGtnKSAmJiBidWlsZFNjcmlwdHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICBwYWNrYWdlQnVpbGREaXJlY3RpdmVzLnNldChwa2cubG9jYXRvckhhc2gsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdGl2ZXM6IGJ1aWxkU2NyaXB0cyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkTG9jYXRpb25zOiBbbG9jYXRpb25dLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBsaW5rZXIgPSBsaW5rZXJzLmZpbmQobGlua2VyID0+IGxpbmtlci5zdXBwb3J0c1BhY2thZ2UocGtnLCBsaW5rZXJPcHRpb25zKSk7XG4gICAgICAgICAgICAgICAgaWYgKCFsaW5rZXIpXG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBSZXBvcnRfMS5SZXBvcnRFcnJvcihNZXNzYWdlTmFtZV8xLk1lc3NhZ2VOYW1lLkxJTktFUl9OT1RfRk9VTkQsIGAke3N0cnVjdFV0aWxzLnByZXR0eUxvY2F0b3IodGhpcy5jb25maWd1cmF0aW9uLCBwa2cpfSBpc24ndCBzdXBwb3J0ZWQgYnkgYW55IGF2YWlsYWJsZSBsaW5rZXJgKTtcbiAgICAgICAgICAgICAgICBjb25zdCBpbnN0YWxsZXIgPSBpbnN0YWxsZXJzLmdldChsaW5rZXIpO1xuICAgICAgICAgICAgICAgIGlmICghaW5zdGFsbGVyKVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEFzc2VydGlvbiBmYWlsZWQ6IFRoZSBpbnN0YWxsZXIgc2hvdWxkIGhhdmUgYmVlbiByZWdpc3RlcmVkYCk7XG4gICAgICAgICAgICAgICAgbGV0IGluc3RhbGxTdGF0dXM7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgaW5zdGFsbFN0YXR1cyA9IGF3YWl0IGluc3RhbGxlci5pbnN0YWxsUGFja2FnZShwa2csIGZldGNoUmVzdWx0LCB7IGhvbGRGZXRjaFJlc3VsdCB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChob2xkUHJvbWlzZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAoX2IgPSBmZXRjaFJlc3VsdC5yZWxlYXNlRnMpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5jYWxsKGZldGNoUmVzdWx0KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlbmRpbmdQcm9taXNlcy5wdXNoKG1pc2NVdGlscy5hbGxTZXR0bGVkU2FmZShob2xkUHJvbWlzZXMpLnRoZW4oKCkgPT4geyB9KS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9hID0gZmV0Y2hSZXN1bHQucmVsZWFzZUZzKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuY2FsbChmZXRjaFJlc3VsdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcGFja2FnZUxpbmtlcnMuc2V0KHBrZy5sb2NhdG9ySGFzaCwgbGlua2VyKTtcbiAgICAgICAgICAgICAgICBwYWNrYWdlTG9jYXRpb25zLnNldChwa2cubG9jYXRvckhhc2gsIGluc3RhbGxTdGF0dXMucGFja2FnZUxvY2F0aW9uKTtcbiAgICAgICAgICAgICAgICBpZiAoaW5zdGFsbFN0YXR1cy5idWlsZERpcmVjdGl2ZSAmJiBpbnN0YWxsU3RhdHVzLmJ1aWxkRGlyZWN0aXZlLmxlbmd0aCA+IDAgJiYgaW5zdGFsbFN0YXR1cy5wYWNrYWdlTG9jYXRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgcGFja2FnZUJ1aWxkRGlyZWN0aXZlcy5zZXQocGtnLmxvY2F0b3JIYXNoLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RpdmVzOiBpbnN0YWxsU3RhdHVzLmJ1aWxkRGlyZWN0aXZlLFxuICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRMb2NhdGlvbnM6IFtpbnN0YWxsU3RhdHVzLnBhY2thZ2VMb2NhdGlvbl0sXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBTdGVwIDI6IExpbmsgcGFja2FnZXMgdG9nZXRoZXJcbiAgICAgICAgY29uc3QgZXh0ZXJuYWxEZXBlbmRlbnRzID0gbmV3IE1hcCgpO1xuICAgICAgICBmb3IgKGNvbnN0IGxvY2F0b3JIYXNoIG9mIHRoaXMuYWNjZXNzaWJsZUxvY2F0b3JzKSB7XG4gICAgICAgICAgICBjb25zdCBwa2cgPSB0aGlzLnN0b3JlZFBhY2thZ2VzLmdldChsb2NhdG9ySGFzaCk7XG4gICAgICAgICAgICBpZiAoIXBrZylcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEFzc2VydGlvbiBmYWlsZWQ6IFRoZSBsb2NhdG9yIHNob3VsZCBoYXZlIGJlZW4gcmVnaXN0ZXJlZGApO1xuICAgICAgICAgICAgY29uc3QgaXNXb3Jrc3BhY2UgPSB0aGlzLnRyeVdvcmtzcGFjZUJ5TG9jYXRvcihwa2cpICE9PSBudWxsO1xuICAgICAgICAgICAgY29uc3QgbGlua1BhY2thZ2UgPSBhc3luYyAocGFja2FnZUxpbmtlciwgaW5zdGFsbGVyKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgcGFja2FnZUxvY2F0aW9uID0gcGFja2FnZUxvY2F0aW9ucy5nZXQocGtnLmxvY2F0b3JIYXNoKTtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHBhY2thZ2VMb2NhdGlvbiA9PT0gYHVuZGVmaW5lZGApXG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQXNzZXJ0aW9uIGZhaWxlZDogVGhlIHBhY2thZ2UgKCR7c3RydWN0VXRpbHMucHJldHR5TG9jYXRvcih0aGlzLmNvbmZpZ3VyYXRpb24sIHBrZyl9KSBzaG91bGQgaGF2ZSBiZWVuIHJlZ2lzdGVyZWRgKTtcbiAgICAgICAgICAgICAgICBjb25zdCBpbnRlcm5hbERlcGVuZGVuY2llcyA9IFtdO1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgZGVzY3JpcHRvciBvZiBwa2cuZGVwZW5kZW5jaWVzLnZhbHVlcygpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc29sdXRpb24gPSB0aGlzLnN0b3JlZFJlc29sdXRpb25zLmdldChkZXNjcmlwdG9yLmRlc2NyaXB0b3JIYXNoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiByZXNvbHV0aW9uID09PSBgdW5kZWZpbmVkYClcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQXNzZXJ0aW9uIGZhaWxlZDogVGhlIHJlc29sdXRpb24gKCR7c3RydWN0VXRpbHMucHJldHR5RGVzY3JpcHRvcih0aGlzLmNvbmZpZ3VyYXRpb24sIGRlc2NyaXB0b3IpfSwgZnJvbSAke3N0cnVjdFV0aWxzLnByZXR0eUxvY2F0b3IodGhpcy5jb25maWd1cmF0aW9uLCBwa2cpfSlzaG91bGQgaGF2ZSBiZWVuIHJlZ2lzdGVyZWRgKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGVwZW5kZW5jeSA9IHRoaXMuc3RvcmVkUGFja2FnZXMuZ2V0KHJlc29sdXRpb24pO1xuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGRlcGVuZGVuY3kgPT09IGB1bmRlZmluZWRgKVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBBc3NlcnRpb24gZmFpbGVkOiBUaGUgcGFja2FnZSAoJHtyZXNvbHV0aW9ufSwgcmVzb2x2ZWQgZnJvbSAke3N0cnVjdFV0aWxzLnByZXR0eURlc2NyaXB0b3IodGhpcy5jb25maWd1cmF0aW9uLCBkZXNjcmlwdG9yKX0pIHNob3VsZCBoYXZlIGJlZW4gcmVnaXN0ZXJlZGApO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBkZXBlbmRlbmN5TGlua2VyID0gdGhpcy50cnlXb3Jrc3BhY2VCeUxvY2F0b3IoZGVwZW5kZW5jeSkgPT09IG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgID8gcGFja2FnZUxpbmtlcnMuZ2V0KHJlc29sdXRpb24pXG4gICAgICAgICAgICAgICAgICAgICAgICA6IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgZGVwZW5kZW5jeUxpbmtlciA9PT0gYHVuZGVmaW5lZGApXG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEFzc2VydGlvbiBmYWlsZWQ6IFRoZSBwYWNrYWdlICgke3Jlc29sdXRpb259LCByZXNvbHZlZCBmcm9tICR7c3RydWN0VXRpbHMucHJldHR5RGVzY3JpcHRvcih0aGlzLmNvbmZpZ3VyYXRpb24sIGRlc2NyaXB0b3IpfSkgc2hvdWxkIGhhdmUgYmVlbiByZWdpc3RlcmVkYCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGlzV29ya3NwYWNlRGVwZW5kZW5jeSA9IGRlcGVuZGVuY3lMaW5rZXIgPT09IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIGlmIChkZXBlbmRlbmN5TGlua2VyID09PSBwYWNrYWdlTGlua2VyIHx8IGlzV29ya3NwYWNlRGVwZW5kZW5jeSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhY2thZ2VMb2NhdGlvbnMuZ2V0KGRlcGVuZGVuY3kubG9jYXRvckhhc2gpICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJuYWxEZXBlbmRlbmNpZXMucHVzaChbZGVzY3JpcHRvciwgZGVwZW5kZW5jeV0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCFpc1dvcmtzcGFjZSAmJiBwYWNrYWdlTG9jYXRpb24gIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGV4dGVybmFsRW50cnkgPSBtaXNjVXRpbHMuZ2V0QXJyYXlXaXRoRGVmYXVsdChleHRlcm5hbERlcGVuZGVudHMsIHJlc29sdXRpb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgZXh0ZXJuYWxFbnRyeS5wdXNoKHBhY2thZ2VMb2NhdGlvbik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHBhY2thZ2VMb2NhdGlvbiAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCBpbnN0YWxsZXIuYXR0YWNoSW50ZXJuYWxEZXBlbmRlbmNpZXMocGtnLCBpbnRlcm5hbERlcGVuZGVuY2llcyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGlmIChpc1dvcmtzcGFjZSkge1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgW3BhY2thZ2VMaW5rZXIsIGluc3RhbGxlcl0gb2YgaW5zdGFsbGVycykge1xuICAgICAgICAgICAgICAgICAgICBpZiAocGFja2FnZUxpbmtlci5zdXBwb3J0c1BhY2thZ2UocGtnLCBsaW5rZXJPcHRpb25zKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgbGlua1BhY2thZ2UocGFja2FnZUxpbmtlciwgaW5zdGFsbGVyKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhY2thZ2VMaW5rZXIgPSBwYWNrYWdlTGlua2Vycy5nZXQocGtnLmxvY2F0b3JIYXNoKTtcbiAgICAgICAgICAgICAgICBpZiAoIXBhY2thZ2VMaW5rZXIpXG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQXNzZXJ0aW9uIGZhaWxlZDogVGhlIGxpbmtlciBzaG91bGQgaGF2ZSBiZWVuIGZvdW5kYCk7XG4gICAgICAgICAgICAgICAgY29uc3QgaW5zdGFsbGVyID0gaW5zdGFsbGVycy5nZXQocGFja2FnZUxpbmtlcik7XG4gICAgICAgICAgICAgICAgaWYgKCFpbnN0YWxsZXIpXG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQXNzZXJ0aW9uIGZhaWxlZDogVGhlIGluc3RhbGxlciBzaG91bGQgaGF2ZSBiZWVuIHJlZ2lzdGVyZWRgKTtcbiAgICAgICAgICAgICAgICBhd2FpdCBsaW5rUGFja2FnZShwYWNrYWdlTGlua2VyLCBpbnN0YWxsZXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGZvciAoY29uc3QgW2xvY2F0b3JIYXNoLCBkZXBlbmRlbnRQYXRoc10gb2YgZXh0ZXJuYWxEZXBlbmRlbnRzKSB7XG4gICAgICAgICAgICBjb25zdCBwa2cgPSB0aGlzLnN0b3JlZFBhY2thZ2VzLmdldChsb2NhdG9ySGFzaCk7XG4gICAgICAgICAgICBpZiAoIXBrZylcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEFzc2VydGlvbiBmYWlsZWQ6IFRoZSBwYWNrYWdlIHNob3VsZCBoYXZlIGJlZW4gcmVnaXN0ZXJlZGApO1xuICAgICAgICAgICAgY29uc3QgcGFja2FnZUxpbmtlciA9IHBhY2thZ2VMaW5rZXJzLmdldChwa2cubG9jYXRvckhhc2gpO1xuICAgICAgICAgICAgaWYgKCFwYWNrYWdlTGlua2VyKVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQXNzZXJ0aW9uIGZhaWxlZDogVGhlIGxpbmtlciBzaG91bGQgaGF2ZSBiZWVuIGZvdW5kYCk7XG4gICAgICAgICAgICBjb25zdCBpbnN0YWxsZXIgPSBpbnN0YWxsZXJzLmdldChwYWNrYWdlTGlua2VyKTtcbiAgICAgICAgICAgIGlmICghaW5zdGFsbGVyKVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQXNzZXJ0aW9uIGZhaWxlZDogVGhlIGluc3RhbGxlciBzaG91bGQgaGF2ZSBiZWVuIHJlZ2lzdGVyZWRgKTtcbiAgICAgICAgICAgIGF3YWl0IGluc3RhbGxlci5hdHRhY2hFeHRlcm5hbERlcGVuZGVudHMocGtnLCBkZXBlbmRlbnRQYXRocyk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gU3RlcCAzOiBJbmZvcm0gb3VyIGxpbmtlcnMgdGhhdCB0aGV5IHNob3VsZCBoYXZlIGFsbCB0aGUgaW5mbyBuZWVkZWRcbiAgICAgICAgY29uc3QgbGlua2Vyc0N1c3RvbURhdGEgPSBuZXcgTWFwKCk7XG4gICAgICAgIGZvciAoY29uc3QgW2xpbmtlciwgaW5zdGFsbGVyXSBvZiBpbnN0YWxsZXJzKSB7XG4gICAgICAgICAgICBjb25zdCBmaW5hbGl6ZUluc3RhbGxEYXRhID0gYXdhaXQgaW5zdGFsbGVyLmZpbmFsaXplSW5zdGFsbCgpO1xuICAgICAgICAgICAgZm9yIChjb25zdCBpbnN0YWxsU3RhdHVzIG9mIChfYyA9IGZpbmFsaXplSW5zdGFsbERhdGEgPT09IG51bGwgfHwgZmluYWxpemVJbnN0YWxsRGF0YSA9PT0gdm9pZCAwID8gdm9pZCAwIDogZmluYWxpemVJbnN0YWxsRGF0YS5yZWNvcmRzKSAhPT0gbnVsbCAmJiBfYyAhPT0gdm9pZCAwID8gX2MgOiBbXSkge1xuICAgICAgICAgICAgICAgIHBhY2thZ2VCdWlsZERpcmVjdGl2ZXMuc2V0KGluc3RhbGxTdGF0dXMubG9jYXRvckhhc2gsIHtcbiAgICAgICAgICAgICAgICAgICAgZGlyZWN0aXZlczogaW5zdGFsbFN0YXR1cy5idWlsZERpcmVjdGl2ZSxcbiAgICAgICAgICAgICAgICAgICAgYnVpbGRMb2NhdGlvbnM6IGluc3RhbGxTdGF0dXMuYnVpbGRMb2NhdGlvbnMsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodHlwZW9mIChmaW5hbGl6ZUluc3RhbGxEYXRhID09PSBudWxsIHx8IGZpbmFsaXplSW5zdGFsbERhdGEgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGZpbmFsaXplSW5zdGFsbERhdGEuY3VzdG9tRGF0YSkgIT09IGB1bmRlZmluZWRgKSB7XG4gICAgICAgICAgICAgICAgbGlua2Vyc0N1c3RvbURhdGEuc2V0KGxpbmtlci5nZXRDdXN0b21EYXRhS2V5KCksIGZpbmFsaXplSW5zdGFsbERhdGEuY3VzdG9tRGF0YSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5saW5rZXJzQ3VzdG9tRGF0YSA9IGxpbmtlcnNDdXN0b21EYXRhO1xuICAgICAgICBhd2FpdCBtaXNjVXRpbHMuYWxsU2V0dGxlZFNhZmUocGVuZGluZ1Byb21pc2VzKTtcbiAgICAgICAgLy8gU3RlcCA0OiBCdWlsZCB0aGUgcGFja2FnZXMgaW4gbXVsdGlwbGUgc3RlcHNcbiAgICAgICAgaWYgKG1vZGUgPT09IEluc3RhbGxNb2RlLlNraXBCdWlsZClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY29uc3QgcmVhZHlQYWNrYWdlcyA9IG5ldyBTZXQodGhpcy5zdG9yZWRQYWNrYWdlcy5rZXlzKCkpO1xuICAgICAgICBjb25zdCBidWlsZGFibGVQYWNrYWdlcyA9IG5ldyBTZXQocGFja2FnZUJ1aWxkRGlyZWN0aXZlcy5rZXlzKCkpO1xuICAgICAgICBmb3IgKGNvbnN0IGxvY2F0b3JIYXNoIG9mIGJ1aWxkYWJsZVBhY2thZ2VzKVxuICAgICAgICAgICAgcmVhZHlQYWNrYWdlcy5kZWxldGUobG9jYXRvckhhc2gpO1xuICAgICAgICBjb25zdCBnbG9iYWxIYXNoR2VuZXJhdG9yID0gKDAsIGNyeXB0b18xLmNyZWF0ZUhhc2gpKGBzaGE1MTJgKTtcbiAgICAgICAgZ2xvYmFsSGFzaEdlbmVyYXRvci51cGRhdGUocHJvY2Vzcy52ZXJzaW9ucy5ub2RlKTtcbiAgICAgICAgYXdhaXQgdGhpcy5jb25maWd1cmF0aW9uLnRyaWdnZXJIb29rKGhvb2tzID0+IHtcbiAgICAgICAgICAgIHJldHVybiBob29rcy5nbG9iYWxIYXNoR2VuZXJhdGlvbjtcbiAgICAgICAgfSwgdGhpcywgKGRhdGEpID0+IHtcbiAgICAgICAgICAgIGdsb2JhbEhhc2hHZW5lcmF0b3IudXBkYXRlKGBcXDBgKTtcbiAgICAgICAgICAgIGdsb2JhbEhhc2hHZW5lcmF0b3IudXBkYXRlKGRhdGEpO1xuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgZ2xvYmFsSGFzaCA9IGdsb2JhbEhhc2hHZW5lcmF0b3IuZGlnZXN0KGBoZXhgKTtcbiAgICAgICAgY29uc3QgcGFja2FnZUhhc2hNYXAgPSBuZXcgTWFwKCk7XG4gICAgICAgIC8vIFdlJ2xsIHVzZSB0aGlzIGZ1bmN0aW9uIGlzIG9yZGVyIHRvIGNvbXB1dGUgYSBoYXNoIGZvciBlYWNoIHBhY2thZ2VcbiAgICAgICAgLy8gdGhhdCBleHBvc2VzIGEgYnVpbGQgZGlyZWN0aXZlLiBJZiB0aGUgaGFzaCBjaGFuZ2VzIGNvbXBhcmVkIHRvIHRoZVxuICAgICAgICAvLyBwcmV2aW91cyBydW4sIHRoZSBwYWNrYWdlIGlzIHJlYnVpbHQuIFRoaXMgaGFzIHRoZSBhZHZhbnRhZ2Ugb2YgbWFraW5nXG4gICAgICAgIC8vIHRoZSByZWJ1aWxkcyBtdWNoIG1vcmUgcHJlZGljdGFibGUgdGhhbiBiZWZvcmUsIGFuZCB0byBnaXZlIHVzIHRoZSB0b29sc1xuICAgICAgICAvLyBsYXRlciB0byBpbXByb3ZlIHRoaXMgZnVydGhlciBieSBleHBsYWluaW5nICp3aHkqIGEgcmVidWlsZCBoYXBwZW5lZC5cbiAgICAgICAgY29uc3QgZ2V0QmFzZUhhc2ggPSAobG9jYXRvcikgPT4ge1xuICAgICAgICAgICAgbGV0IGhhc2ggPSBwYWNrYWdlSGFzaE1hcC5nZXQobG9jYXRvci5sb2NhdG9ySGFzaCk7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGhhc2ggIT09IGB1bmRlZmluZWRgKVxuICAgICAgICAgICAgICAgIHJldHVybiBoYXNoO1xuICAgICAgICAgICAgY29uc3QgcGtnID0gdGhpcy5zdG9yZWRQYWNrYWdlcy5nZXQobG9jYXRvci5sb2NhdG9ySGFzaCk7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHBrZyA9PT0gYHVuZGVmaW5lZGApXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBBc3NlcnRpb24gZmFpbGVkOiBUaGUgcGFja2FnZSBzaG91bGQgaGF2ZSBiZWVuIHJlZ2lzdGVyZWRgKTtcbiAgICAgICAgICAgIGNvbnN0IGJ1aWxkZXIgPSAoMCwgY3J5cHRvXzEuY3JlYXRlSGFzaCkoYHNoYTUxMmApO1xuICAgICAgICAgICAgYnVpbGRlci51cGRhdGUobG9jYXRvci5sb2NhdG9ySGFzaCk7XG4gICAgICAgICAgICAvLyBUbyBhdm9pZCB0aGUgY2FzZSB3aGVyZSBvbmUgZGVwZW5kZW5jeSBkZXBlbmRzIG9uIGl0c2VsZiBzb21laG93XG4gICAgICAgICAgICBwYWNrYWdlSGFzaE1hcC5zZXQobG9jYXRvci5sb2NhdG9ySGFzaCwgYDxyZWN1cnNpdmU+YCk7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGRlc2NyaXB0b3Igb2YgcGtnLmRlcGVuZGVuY2llcy52YWx1ZXMoKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlc29sdXRpb24gPSB0aGlzLnN0b3JlZFJlc29sdXRpb25zLmdldChkZXNjcmlwdG9yLmRlc2NyaXB0b3JIYXNoKTtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHJlc29sdXRpb24gPT09IGB1bmRlZmluZWRgKVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEFzc2VydGlvbiBmYWlsZWQ6IFRoZSByZXNvbHV0aW9uICgke3N0cnVjdFV0aWxzLnByZXR0eURlc2NyaXB0b3IodGhpcy5jb25maWd1cmF0aW9uLCBkZXNjcmlwdG9yKX0pIHNob3VsZCBoYXZlIGJlZW4gcmVnaXN0ZXJlZGApO1xuICAgICAgICAgICAgICAgIGNvbnN0IGRlcGVuZGVuY3kgPSB0aGlzLnN0b3JlZFBhY2thZ2VzLmdldChyZXNvbHV0aW9uKTtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGRlcGVuZGVuY3kgPT09IGB1bmRlZmluZWRgKVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEFzc2VydGlvbiBmYWlsZWQ6IFRoZSBwYWNrYWdlIHNob3VsZCBoYXZlIGJlZW4gcmVnaXN0ZXJlZGApO1xuICAgICAgICAgICAgICAgIGJ1aWxkZXIudXBkYXRlKGdldEJhc2VIYXNoKGRlcGVuZGVuY3kpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGhhc2ggPSBidWlsZGVyLmRpZ2VzdChgaGV4YCk7XG4gICAgICAgICAgICBwYWNrYWdlSGFzaE1hcC5zZXQobG9jYXRvci5sb2NhdG9ySGFzaCwgaGFzaCk7XG4gICAgICAgICAgICByZXR1cm4gaGFzaDtcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgZ2V0QnVpbGRIYXNoID0gKGxvY2F0b3IsIGJ1aWxkTG9jYXRpb25zKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBidWlsZGVyID0gKDAsIGNyeXB0b18xLmNyZWF0ZUhhc2gpKGBzaGE1MTJgKTtcbiAgICAgICAgICAgIGJ1aWxkZXIudXBkYXRlKGdsb2JhbEhhc2gpO1xuICAgICAgICAgICAgYnVpbGRlci51cGRhdGUoZ2V0QmFzZUhhc2gobG9jYXRvcikpO1xuICAgICAgICAgICAgZm9yIChjb25zdCBsb2NhdGlvbiBvZiBidWlsZExvY2F0aW9ucylcbiAgICAgICAgICAgICAgICBidWlsZGVyLnVwZGF0ZShsb2NhdGlvbik7XG4gICAgICAgICAgICByZXR1cm4gYnVpbGRlci5kaWdlc3QoYGhleGApO1xuICAgICAgICB9O1xuICAgICAgICAvLyBXZSByZWNvbnN0cnVjdCB0aGUgYnVpbGQgc3RhdGUgZnJvbSBhbiBlbXB0eSBvYmplY3QgYmVjYXVzZSB3ZSB3YW50IHRvXG4gICAgICAgIC8vIHJlbW92ZSB0aGUgc3RhdGUgZnJvbSBwYWNrYWdlcyB0aGF0IGdvdCByZW1vdmVkXG4gICAgICAgIGNvbnN0IG5leHRCU3RhdGUgPSBuZXcgTWFwKCk7XG4gICAgICAgIGxldCBpc0luc3RhbGxTdGF0ZVBlcnNpc3RlZCA9IGZhbHNlO1xuICAgICAgICB3aGlsZSAoYnVpbGRhYmxlUGFja2FnZXMuc2l6ZSA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IHNhdmVkU2l6ZSA9IGJ1aWxkYWJsZVBhY2thZ2VzLnNpemU7XG4gICAgICAgICAgICBjb25zdCBidWlsZFByb21pc2VzID0gW107XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGxvY2F0b3JIYXNoIG9mIGJ1aWxkYWJsZVBhY2thZ2VzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcGtnID0gdGhpcy5zdG9yZWRQYWNrYWdlcy5nZXQobG9jYXRvckhhc2gpO1xuICAgICAgICAgICAgICAgIGlmICghcGtnKVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEFzc2VydGlvbiBmYWlsZWQ6IFRoZSBwYWNrYWdlIHNob3VsZCBoYXZlIGJlZW4gcmVnaXN0ZXJlZGApO1xuICAgICAgICAgICAgICAgIGxldCBpc0J1aWxkYWJsZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBkZXBlbmRlbmN5IG9mIHBrZy5kZXBlbmRlbmNpZXMudmFsdWVzKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzb2x1dGlvbiA9IHRoaXMuc3RvcmVkUmVzb2x1dGlvbnMuZ2V0KGRlcGVuZGVuY3kuZGVzY3JpcHRvckhhc2gpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXJlc29sdXRpb24pXG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEFzc2VydGlvbiBmYWlsZWQ6IFRoZSByZXNvbHV0aW9uICgke3N0cnVjdFV0aWxzLnByZXR0eURlc2NyaXB0b3IodGhpcy5jb25maWd1cmF0aW9uLCBkZXBlbmRlbmN5KX0pIHNob3VsZCBoYXZlIGJlZW4gcmVnaXN0ZXJlZGApO1xuICAgICAgICAgICAgICAgICAgICBpZiAoYnVpbGRhYmxlUGFja2FnZXMuaGFzKHJlc29sdXRpb24pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpc0J1aWxkYWJsZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gV2FpdCB1bnRpbCBhbGwgZGVwZW5kZW5jaWVzIG9mIHRoZSBjdXJyZW50IHBhY2thZ2UgaGF2ZSBiZWVuIGJ1aWx0XG4gICAgICAgICAgICAgICAgLy8gYmVmb3JlIHRyeWluZyB0byBidWlsZCBpdCAoc2luY2UgaXQgbWlnaHQgbmVlZCB0aGVtIHRvIGJ1aWxkIGl0c2VsZilcbiAgICAgICAgICAgICAgICBpZiAoIWlzQnVpbGRhYmxlKVxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBidWlsZGFibGVQYWNrYWdlcy5kZWxldGUobG9jYXRvckhhc2gpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGJ1aWxkSW5mbyA9IHBhY2thZ2VCdWlsZERpcmVjdGl2ZXMuZ2V0KHBrZy5sb2NhdG9ySGFzaCk7XG4gICAgICAgICAgICAgICAgaWYgKCFidWlsZEluZm8pXG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQXNzZXJ0aW9uIGZhaWxlZDogVGhlIGJ1aWxkIGRpcmVjdGl2ZSBzaG91bGQgaGF2ZSBiZWVuIHJlZ2lzdGVyZWRgKTtcbiAgICAgICAgICAgICAgICBjb25zdCBidWlsZEhhc2ggPSBnZXRCdWlsZEhhc2gocGtnLCBidWlsZEluZm8uYnVpbGRMb2NhdGlvbnMpO1xuICAgICAgICAgICAgICAgIC8vIE5vIG5lZWQgdG8gcmVidWlsZCB0aGUgcGFja2FnZSBpZiBpdHMgaGFzaCBkaWRuJ3QgY2hhbmdlXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuc3RvcmVkQnVpbGRTdGF0ZS5nZXQocGtnLmxvY2F0b3JIYXNoKSA9PT0gYnVpbGRIYXNoKSB7XG4gICAgICAgICAgICAgICAgICAgIG5leHRCU3RhdGUuc2V0KHBrZy5sb2NhdG9ySGFzaCwgYnVpbGRIYXNoKTtcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIFRoZSBpbnN0YWxsIHN0YXRlIGlzIHBlcnNpc3RlZCBhZnRlciB0aGUgYnVpbGRzIGZpbmlzaCAoYmVjYXVzZSBpdFxuICAgICAgICAgICAgICAgIC8vIGNvbnRhaW5zIHRoZSBidWlsZCBzdGF0ZSksIGJ1dCBpZiB3ZSBuZWVkIHRvIHJ1biBidWlsZHMgdGhlbiB3ZVxuICAgICAgICAgICAgICAgIC8vIGFsc28gbmVlZCBpdCB0byBiZSB3cml0dGVuIGJlZm9yZSB0aGUgYnVpbGRzIChzaW5jZSB0aGUgYnVpbGRcbiAgICAgICAgICAgICAgICAvLyBzY3JpcHRzIHdpbGwgbmVlZCBpdCB0byBydW4pLlxuICAgICAgICAgICAgICAgIGlmICghaXNJbnN0YWxsU3RhdGVQZXJzaXN0ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5wZXJzaXN0SW5zdGFsbFN0YXRlRmlsZSgpO1xuICAgICAgICAgICAgICAgICAgICBpc0luc3RhbGxTdGF0ZVBlcnNpc3RlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnN0b3JlZEJ1aWxkU3RhdGUuaGFzKHBrZy5sb2NhdG9ySGFzaCkpXG4gICAgICAgICAgICAgICAgICAgIHJlcG9ydC5yZXBvcnRJbmZvKE1lc3NhZ2VOYW1lXzEuTWVzc2FnZU5hbWUuTVVTVF9SRUJVSUxELCBgJHtzdHJ1Y3RVdGlscy5wcmV0dHlMb2NhdG9yKHRoaXMuY29uZmlndXJhdGlvbiwgcGtnKX0gbXVzdCBiZSByZWJ1aWx0IGJlY2F1c2UgaXRzIGRlcGVuZGVuY3kgdHJlZSBjaGFuZ2VkYCk7XG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICByZXBvcnQucmVwb3J0SW5mbyhNZXNzYWdlTmFtZV8xLk1lc3NhZ2VOYW1lLk1VU1RfQlVJTEQsIGAke3N0cnVjdFV0aWxzLnByZXR0eUxvY2F0b3IodGhpcy5jb25maWd1cmF0aW9uLCBwa2cpfSBtdXN0IGJlIGJ1aWx0IGJlY2F1c2UgaXQgbmV2ZXIgaGFzIGJlZW4gYmVmb3JlIG9yIHRoZSBsYXN0IG9uZSBmYWlsZWRgKTtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGxvY2F0aW9uIG9mIGJ1aWxkSW5mby5idWlsZExvY2F0aW9ucykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWZzbGliXzIucHBhdGguaXNBYnNvbHV0ZShsb2NhdGlvbikpXG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEFzc2VydGlvbiBmYWlsZWQ6IEV4cGVjdGVkIHRoZSBidWlsZCBsb2NhdGlvbiB0byBiZSBhYnNvbHV0ZSAobm90ICR7bG9jYXRpb259KWApO1xuICAgICAgICAgICAgICAgICAgICBidWlsZFByb21pc2VzLnB1c2goKGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgW2J1aWxkVHlwZSwgc2NyaXB0TmFtZV0gb2YgYnVpbGRJbmZvLmRpcmVjdGl2ZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaGVhZGVyID0gYCMgVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSByZXN1bHQgb2YgWWFybiBidWlsZGluZyBhIHBhY2thZ2UgKCR7c3RydWN0VXRpbHMuc3RyaW5naWZ5TG9jYXRvcihwa2cpfSlcXG5gO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoYnVpbGRUeXBlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSW5zdGFsbGVyXzEuQnVpbGRUeXBlLlNDUklQVDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXIgKz0gYCMgU2NyaXB0IG5hbWU6ICR7c2NyaXB0TmFtZX1cXG5gO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSW5zdGFsbGVyXzEuQnVpbGRUeXBlLlNIRUxMQ09ERTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXIgKz0gYCMgU2NyaXB0IGNvZGU6ICR7c2NyaXB0TmFtZX1cXG5gO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZGluID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB3YXNCdWlsZFN1Y2Nlc3NmdWwgPSBhd2FpdCBmc2xpYl8yLnhmcy5ta3RlbXBQcm9taXNlKGFzeW5jIChsb2dEaXIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbG9nRmlsZSA9IGZzbGliXzIucHBhdGguam9pbihsb2dEaXIsIGBidWlsZC5sb2dgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBzdGRvdXQsIHN0ZGVyciB9ID0gdGhpcy5jb25maWd1cmF0aW9uLmdldFN1YnByb2Nlc3NTdHJlYW1zKGxvZ0ZpbGUsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeDogc3RydWN0VXRpbHMucHJldHR5TG9jYXRvcih0aGlzLmNvbmZpZ3VyYXRpb24sIHBrZyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBvcnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZXhpdENvZGU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGJ1aWxkVHlwZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSW5zdGFsbGVyXzEuQnVpbGRUeXBlLlNDUklQVDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhpdENvZGUgPSBhd2FpdCBzY3JpcHRVdGlscy5leGVjdXRlUGFja2FnZVNjcmlwdChwa2csIHNjcmlwdE5hbWUsIFtdLCB7IGN3ZDogbG9jYXRpb24sIHByb2plY3Q6IHRoaXMsIHN0ZGluLCBzdGRvdXQsIHN0ZGVyciB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEluc3RhbGxlcl8xLkJ1aWxkVHlwZS5TSEVMTENPREU6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4aXRDb2RlID0gYXdhaXQgc2NyaXB0VXRpbHMuZXhlY3V0ZVBhY2thZ2VTaGVsbGNvZGUocGtnLCBzY3JpcHROYW1lLCBbXSwgeyBjd2Q6IGxvY2F0aW9uLCBwcm9qZWN0OiB0aGlzLCBzdGRpbiwgc3Rkb3V0LCBzdGRlcnIgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnIud3JpdGUoZXJyb3Iuc3RhY2spO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhpdENvZGUgPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dC5lbmQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkZXJyLmVuZCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXhpdENvZGUgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHRCU3RhdGUuc2V0KHBrZy5sb2NhdG9ySGFzaCwgYnVpbGRIYXNoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZzbGliXzIueGZzLmRldGFjaFRlbXAobG9nRGlyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYnVpbGRNZXNzYWdlID0gYCR7c3RydWN0VXRpbHMucHJldHR5TG9jYXRvcih0aGlzLmNvbmZpZ3VyYXRpb24sIHBrZyl9IGNvdWxkbid0IGJlIGJ1aWx0IHN1Y2Nlc3NmdWxseSAoZXhpdCBjb2RlICR7Zm9ybWF0VXRpbHMucHJldHR5KHRoaXMuY29uZmlndXJhdGlvbiwgZXhpdENvZGUsIGZvcm1hdFV0aWxzLlR5cGUuTlVNQkVSKX0sIGxvZ3MgY2FuIGJlIGZvdW5kIGhlcmU6ICR7Zm9ybWF0VXRpbHMucHJldHR5KHRoaXMuY29uZmlndXJhdGlvbiwgbG9nRmlsZSwgZm9ybWF0VXRpbHMuVHlwZS5QQVRIKX0pYDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9uYWxCdWlsZHMuaGFzKHBrZy5sb2NhdG9ySGFzaCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcG9ydC5yZXBvcnRJbmZvKE1lc3NhZ2VOYW1lXzEuTWVzc2FnZU5hbWUuQlVJTERfRkFJTEVELCBidWlsZE1lc3NhZ2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dEJTdGF0ZS5zZXQocGtnLmxvY2F0b3JIYXNoLCBidWlsZEhhc2gpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBvcnQucmVwb3J0RXJyb3IoTWVzc2FnZU5hbWVfMS5NZXNzYWdlTmFtZS5CVUlMRF9GQUlMRUQsIGJ1aWxkTWVzc2FnZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXdhc0J1aWxkU3VjY2Vzc2Z1bCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KSgpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhd2FpdCBtaXNjVXRpbHMuYWxsU2V0dGxlZFNhZmUoYnVpbGRQcm9taXNlcyk7XG4gICAgICAgICAgICAvLyBJZiB3ZSByZWFjaCB0aGlzIGNvZGUsIGl0IG1lYW5zIHRoYXQgd2UgaGF2ZSBjaXJjdWxhciBkZXBlbmRlbmNpZXNcbiAgICAgICAgICAgIC8vIHNvbWV3aGVyZS4gV29yc3QsIGl0IG1lYW5zIHRoYXQgdGhlIGNpcmN1bGFyIGRlcGVuZGVuY2llcyBib3RoIGhhdmVcbiAgICAgICAgICAgIC8vIGJ1aWxkIHNjcmlwdHMsIG1ha2luZyB0aGVtIHVuc2F0aXNmaWFibGUuXG4gICAgICAgICAgICBpZiAoc2F2ZWRTaXplID09PSBidWlsZGFibGVQYWNrYWdlcy5zaXplKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcHJldHR5TG9jYXRvcnMgPSBBcnJheS5mcm9tKGJ1aWxkYWJsZVBhY2thZ2VzKS5tYXAobG9jYXRvckhhc2ggPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwa2cgPSB0aGlzLnN0b3JlZFBhY2thZ2VzLmdldChsb2NhdG9ySGFzaCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghcGtnKVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBBc3NlcnRpb24gZmFpbGVkOiBUaGUgcGFja2FnZSBzaG91bGQgaGF2ZSBiZWVuIHJlZ2lzdGVyZWRgKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0cnVjdFV0aWxzLnByZXR0eUxvY2F0b3IodGhpcy5jb25maWd1cmF0aW9uLCBwa2cpO1xuICAgICAgICAgICAgICAgIH0pLmpvaW4oYCwgYCk7XG4gICAgICAgICAgICAgICAgcmVwb3J0LnJlcG9ydEVycm9yKE1lc3NhZ2VOYW1lXzEuTWVzc2FnZU5hbWUuQ1lDTElDX0RFUEVOREVOQ0lFUywgYFNvbWUgcGFja2FnZXMgaGF2ZSBjaXJjdWxhciBkZXBlbmRlbmNpZXMgdGhhdCBtYWtlIHRoZWlyIGJ1aWxkIG9yZGVyIHVuc2F0aXNmaWFibGUgLSBhcyBhIHJlc3VsdCB0aGV5IHdvbid0IGJlIGJ1aWx0IChhZmZlY3RlZCBwYWNrYWdlcyBhcmU6ICR7cHJldHR5TG9jYXRvcnN9KWApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIFdlIGNhbiBub3cgdXBkYXRlIHRoZSBzdG9yZWRCdWlsZFN0YXRlLCB3aGljaCB3aWxsIGFsbG93IHVzIHRvIFwicmVtZW1iZXJcIlxuICAgICAgICAvLyB3aGF0J3MgdGhlIGRlcGVuZGVuY3kgdHJlZSBzdWJzZXQgdGhhdCB3ZSB1c2VkIHRvIGJ1aWxkIGEgc3BlY2lmaWNcbiAgICAgICAgLy8gcGFja2FnZSAoYW5kIGF2b2lkIHJlYnVpbGRpbmcgaXQgbGF0ZXIgaWYgaXQgZGlkbid0IGNoYW5nZSkuXG4gICAgICAgIHRoaXMuc3RvcmVkQnVpbGRTdGF0ZSA9IG5leHRCU3RhdGU7XG4gICAgfVxuICAgIGFzeW5jIGluc3RhbGwob3B0cykge1xuICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICBjb25zdCBub2RlTGlua2VyID0gdGhpcy5jb25maWd1cmF0aW9uLmdldChgbm9kZUxpbmtlcmApO1xuICAgICAgICAoX2EgPSBDb25maWd1cmF0aW9uXzEuQ29uZmlndXJhdGlvbi50ZWxlbWV0cnkpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5yZXBvcnRJbnN0YWxsKG5vZGVMaW5rZXIpO1xuICAgICAgICBhd2FpdCBvcHRzLnJlcG9ydC5zdGFydFRpbWVyUHJvbWlzZShgUHJvamVjdCB2YWxpZGF0aW9uYCwge1xuICAgICAgICAgICAgc2tpcElmRW1wdHk6IHRydWUsXG4gICAgICAgIH0sIGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuY29uZmlndXJhdGlvbi50cmlnZ2VySG9vayhob29rcyA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhvb2tzLnZhbGlkYXRlUHJvamVjdDtcbiAgICAgICAgICAgIH0sIHRoaXMsIHtcbiAgICAgICAgICAgICAgICByZXBvcnRXYXJuaW5nOiBvcHRzLnJlcG9ydC5yZXBvcnRXYXJuaW5nLmJpbmQob3B0cy5yZXBvcnQpLFxuICAgICAgICAgICAgICAgIHJlcG9ydEVycm9yOiBvcHRzLnJlcG9ydC5yZXBvcnRFcnJvci5iaW5kKG9wdHMucmVwb3J0KSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgZm9yIChjb25zdCBleHRlbnNpb25zQnlJZGVudCBvZiB0aGlzLmNvbmZpZ3VyYXRpb24ucGFja2FnZUV4dGVuc2lvbnMudmFsdWVzKCkpXG4gICAgICAgICAgICBmb3IgKGNvbnN0IFssIGV4dGVuc2lvbnNCeVJhbmdlXSBvZiBleHRlbnNpb25zQnlJZGVudClcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGV4dGVuc2lvbiBvZiBleHRlbnNpb25zQnlSYW5nZSlcbiAgICAgICAgICAgICAgICAgICAgZXh0ZW5zaW9uLnN0YXR1cyA9IHR5cGVzXzIuUGFja2FnZUV4dGVuc2lvblN0YXR1cy5JbmFjdGl2ZTtcbiAgICAgICAgY29uc3QgbG9ja2ZpbGVQYXRoID0gZnNsaWJfMi5wcGF0aC5qb2luKHRoaXMuY3dkLCB0aGlzLmNvbmZpZ3VyYXRpb24uZ2V0KGBsb2NrZmlsZUZpbGVuYW1lYCkpO1xuICAgICAgICAvLyBJZiB3ZSBvcGVyYXRlIHdpdGggYSBmcm96ZW4gbG9ja2ZpbGUsIHdlIHRha2UgYSBzbmFwc2hvdCBvZiBpdCB0byBsYXRlciBtYWtlIHN1cmUgaXQgZGlkbid0IGNoYW5nZVxuICAgICAgICBsZXQgaW5pdGlhbExvY2tmaWxlID0gbnVsbDtcbiAgICAgICAgaWYgKG9wdHMuaW1tdXRhYmxlKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGluaXRpYWxMb2NrZmlsZSA9IGF3YWl0IGZzbGliXzIueGZzLnJlYWRGaWxlUHJvbWlzZShsb2NrZmlsZVBhdGgsIGB1dGY4YCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICBpZiAoZXJyb3IuY29kZSA9PT0gYEVOT0VOVGApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFJlcG9ydF8xLlJlcG9ydEVycm9yKE1lc3NhZ2VOYW1lXzEuTWVzc2FnZU5hbWUuRlJPWkVOX0xPQ0tGSUxFX0VYQ0VQVElPTiwgYFRoZSBsb2NrZmlsZSB3b3VsZCBoYXZlIGJlZW4gY3JlYXRlZCBieSB0aGlzIGluc3RhbGwsIHdoaWNoIGlzIGV4cGxpY2l0bHkgZm9yYmlkZGVuLmApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGF3YWl0IG9wdHMucmVwb3J0LnN0YXJ0VGltZXJQcm9taXNlKGBSZXNvbHV0aW9uIHN0ZXBgLCBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnJlc29sdmVFdmVyeXRoaW5nKG9wdHMpO1xuICAgICAgICB9KTtcbiAgICAgICAgYXdhaXQgb3B0cy5yZXBvcnQuc3RhcnRUaW1lclByb21pc2UoYFBvc3QtcmVzb2x1dGlvbiB2YWxpZGF0aW9uYCwge1xuICAgICAgICAgICAgc2tpcElmRW1wdHk6IHRydWUsXG4gICAgICAgIH0sIGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgWywgZXh0ZW5zaW9uc1BlclJhbmdlXSBvZiB0aGlzLmNvbmZpZ3VyYXRpb24ucGFja2FnZUV4dGVuc2lvbnMpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IFssIGV4dGVuc2lvbnNdIG9mIGV4dGVuc2lvbnNQZXJSYW5nZSkge1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGV4dGVuc2lvbiBvZiBleHRlbnNpb25zKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXh0ZW5zaW9uLnVzZXJQcm92aWRlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHByZXR0eVBhY2thZ2VFeHRlbnNpb24gPSBmb3JtYXRVdGlscy5wcmV0dHkodGhpcy5jb25maWd1cmF0aW9uLCBleHRlbnNpb24sIGZvcm1hdFV0aWxzLlR5cGUuUEFDS0FHRV9FWFRFTlNJT04pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoZXh0ZW5zaW9uLnN0YXR1cykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIHR5cGVzXzIuUGFja2FnZUV4dGVuc2lvblN0YXR1cy5JbmFjdGl2ZTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRzLnJlcG9ydC5yZXBvcnRXYXJuaW5nKE1lc3NhZ2VOYW1lXzEuTWVzc2FnZU5hbWUuVU5VU0VEX1BBQ0tBR0VfRVhURU5TSU9OLCBgJHtwcmV0dHlQYWNrYWdlRXh0ZW5zaW9ufTogTm8gbWF0Y2hpbmcgcGFja2FnZSBpbiB0aGUgZGVwZW5kZW5jeSB0cmVlOyB5b3UgbWF5IG5vdCBuZWVkIHRoaXMgcnVsZSBhbnltb3JlLmApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgdHlwZXNfMi5QYWNrYWdlRXh0ZW5zaW9uU3RhdHVzLlJlZHVuZGFudDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRzLnJlcG9ydC5yZXBvcnRXYXJuaW5nKE1lc3NhZ2VOYW1lXzEuTWVzc2FnZU5hbWUuUkVEVU5EQU5UX1BBQ0tBR0VfRVhURU5TSU9OLCBgJHtwcmV0dHlQYWNrYWdlRXh0ZW5zaW9ufTogVGhpcyBydWxlIHNlZW1zIHJlZHVuZGFudCB3aGVuIGFwcGxpZWQgb24gdGhlIG9yaWdpbmFsIHBhY2thZ2U7IHRoZSBleHRlbnNpb24gbWF5IGhhdmUgYmVlbiBhcHBsaWVkIHVwc3RyZWFtLmApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGluaXRpYWxMb2NrZmlsZSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5ld0xvY2tmaWxlID0gKDAsIGZzbGliXzIubm9ybWFsaXplTGluZUVuZGluZ3MpKGluaXRpYWxMb2NrZmlsZSwgdGhpcy5nZW5lcmF0ZUxvY2tmaWxlKCkpO1xuICAgICAgICAgICAgICAgIGlmIChuZXdMb2NrZmlsZSAhPT0gaW5pdGlhbExvY2tmaWxlKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgMjM0NSBuZWVkIHRvIHVwZ3JhZGUgdG8gZGlmZiA1LjAuMSBvciBhcHBseSBwYXRjaCBpbiB5YXJuJ3MgbW9ub3JlcG9cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGlmZiA9ICgwLCBkaWZmXzEuc3RydWN0dXJlZFBhdGNoKShsb2NrZmlsZVBhdGgsIGxvY2tmaWxlUGF0aCwgaW5pdGlhbExvY2tmaWxlLCBuZXdMb2NrZmlsZSwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHsgbWF4RWRpdExlbmd0aDogMTAwIH0pO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZGlmZikge1xuICAgICAgICAgICAgICAgICAgICAgICAgb3B0cy5yZXBvcnQucmVwb3J0U2VwYXJhdG9yKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGh1bmsgb2YgZGlmZi5odW5rcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdHMucmVwb3J0LnJlcG9ydEluZm8obnVsbCwgYEBAIC0ke2h1bmsub2xkU3RhcnR9LCR7aHVuay5vbGRMaW5lc30gKyR7aHVuay5uZXdTdGFydH0sJHtodW5rLm5ld0xpbmVzfSBAQGApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgbGluZSBvZiBodW5rLmxpbmVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsaW5lLnN0YXJ0c1dpdGgoYCtgKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0cy5yZXBvcnQucmVwb3J0RXJyb3IoTWVzc2FnZU5hbWVfMS5NZXNzYWdlTmFtZS5GUk9aRU5fTE9DS0ZJTEVfRVhDRVBUSU9OLCBmb3JtYXRVdGlscy5wcmV0dHkodGhpcy5jb25maWd1cmF0aW9uLCBsaW5lLCBmb3JtYXRVdGlscy5UeXBlLkFEREVEKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAobGluZS5zdGFydHNXaXRoKGAtYCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdHMucmVwb3J0LnJlcG9ydEVycm9yKE1lc3NhZ2VOYW1lXzEuTWVzc2FnZU5hbWUuRlJPWkVOX0xPQ0tGSUxFX0VYQ0VQVElPTiwgZm9ybWF0VXRpbHMucHJldHR5KHRoaXMuY29uZmlndXJhdGlvbiwgbGluZSwgZm9ybWF0VXRpbHMuVHlwZS5SRU1PVkVEKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRzLnJlcG9ydC5yZXBvcnRJbmZvKG51bGwsIGZvcm1hdFV0aWxzLnByZXR0eSh0aGlzLmNvbmZpZ3VyYXRpb24sIGxpbmUsIGBncmV5YCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0cy5yZXBvcnQucmVwb3J0U2VwYXJhdG9yKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFJlcG9ydF8xLlJlcG9ydEVycm9yKE1lc3NhZ2VOYW1lXzEuTWVzc2FnZU5hbWUuRlJPWkVOX0xPQ0tGSUxFX0VYQ0VQVElPTiwgYFRoZSBsb2NrZmlsZSB3b3VsZCBoYXZlIGJlZW4gbW9kaWZpZWQgYnkgdGhpcyBpbnN0YWxsLCB3aGljaCBpcyBleHBsaWNpdGx5IGZvcmJpZGRlbi5gKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBmb3IgKGNvbnN0IGV4dGVuc2lvbnNCeUlkZW50IG9mIHRoaXMuY29uZmlndXJhdGlvbi5wYWNrYWdlRXh0ZW5zaW9ucy52YWx1ZXMoKSlcbiAgICAgICAgICAgIGZvciAoY29uc3QgWywgZXh0ZW5zaW9uc0J5UmFuZ2VdIG9mIGV4dGVuc2lvbnNCeUlkZW50KVxuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbnNCeVJhbmdlKVxuICAgICAgICAgICAgICAgICAgICBpZiAoZXh0ZW5zaW9uLnVzZXJQcm92aWRlZCAmJiBleHRlbnNpb24uc3RhdHVzID09PSB0eXBlc18yLlBhY2thZ2VFeHRlbnNpb25TdGF0dXMuQWN0aXZlKVxuICAgICAgICAgICAgICAgICAgICAgICAgKF9iID0gQ29uZmlndXJhdGlvbl8xLkNvbmZpZ3VyYXRpb24udGVsZW1ldHJ5KSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IucmVwb3J0UGFja2FnZUV4dGVuc2lvbihmb3JtYXRVdGlscy5qc29uKGV4dGVuc2lvbiwgZm9ybWF0VXRpbHMuVHlwZS5QQUNLQUdFX0VYVEVOU0lPTikpO1xuICAgICAgICBhd2FpdCBvcHRzLnJlcG9ydC5zdGFydFRpbWVyUHJvbWlzZShgRmV0Y2ggc3RlcGAsIGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuZmV0Y2hFdmVyeXRoaW5nKG9wdHMpO1xuICAgICAgICAgICAgaWYgKCh0eXBlb2Ygb3B0cy5wZXJzaXN0UHJvamVjdCA9PT0gYHVuZGVmaW5lZGAgfHwgb3B0cy5wZXJzaXN0UHJvamVjdCkgJiYgb3B0cy5tb2RlICE9PSBJbnN0YWxsTW9kZS5VcGRhdGVMb2NrZmlsZSkge1xuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuY2FjaGVDbGVhbnVwKG9wdHMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgaW1tdXRhYmxlUGF0dGVybnMgPSBvcHRzLmltbXV0YWJsZVxuICAgICAgICAgICAgPyBbLi4ubmV3IFNldCh0aGlzLmNvbmZpZ3VyYXRpb24uZ2V0KGBpbW11dGFibGVQYXR0ZXJuc2ApKV0uc29ydCgpXG4gICAgICAgICAgICA6IFtdO1xuICAgICAgICBjb25zdCBiZWZvcmUgPSBhd2FpdCBQcm9taXNlLmFsbChpbW11dGFibGVQYXR0ZXJucy5tYXAoYXN5bmMgKHBhdHRlcm4pID0+IHtcbiAgICAgICAgICAgIHJldHVybiBoYXNoVXRpbHMuY2hlY2tzdW1QYXR0ZXJuKHBhdHRlcm4sIHsgY3dkOiB0aGlzLmN3ZCB9KTtcbiAgICAgICAgfSkpO1xuICAgICAgICBpZiAodHlwZW9mIG9wdHMucGVyc2lzdFByb2plY3QgPT09IGB1bmRlZmluZWRgIHx8IG9wdHMucGVyc2lzdFByb2plY3QpXG4gICAgICAgICAgICBhd2FpdCB0aGlzLnBlcnNpc3QoKTtcbiAgICAgICAgYXdhaXQgb3B0cy5yZXBvcnQuc3RhcnRUaW1lclByb21pc2UoYExpbmsgc3RlcGAsIGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIGlmIChvcHRzLm1vZGUgPT09IEluc3RhbGxNb2RlLlVwZGF0ZUxvY2tmaWxlKSB7XG4gICAgICAgICAgICAgICAgb3B0cy5yZXBvcnQucmVwb3J0V2FybmluZyhNZXNzYWdlTmFtZV8xLk1lc3NhZ2VOYW1lLlVQREFURV9MT0NLRklMRV9PTkxZX1NLSVBfTElOSywgYFNraXBwZWQgZHVlIHRvICR7Zm9ybWF0VXRpbHMucHJldHR5KHRoaXMuY29uZmlndXJhdGlvbiwgYG1vZGU9dXBkYXRlLWxvY2tmaWxlYCwgZm9ybWF0VXRpbHMuVHlwZS5DT0RFKX1gKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhd2FpdCB0aGlzLmxpbmtFdmVyeXRoaW5nKG9wdHMpO1xuICAgICAgICAgICAgY29uc3QgYWZ0ZXIgPSBhd2FpdCBQcm9taXNlLmFsbChpbW11dGFibGVQYXR0ZXJucy5tYXAoYXN5bmMgKHBhdHRlcm4pID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaGFzaFV0aWxzLmNoZWNrc3VtUGF0dGVybihwYXR0ZXJuLCB7IGN3ZDogdGhpcy5jd2QgfSk7XG4gICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICBmb3IgKGxldCB0ID0gMDsgdCA8IGltbXV0YWJsZVBhdHRlcm5zLmxlbmd0aDsgKyt0KSB7XG4gICAgICAgICAgICAgICAgaWYgKGJlZm9yZVt0XSAhPT0gYWZ0ZXJbdF0pIHtcbiAgICAgICAgICAgICAgICAgICAgb3B0cy5yZXBvcnQucmVwb3J0RXJyb3IoTWVzc2FnZU5hbWVfMS5NZXNzYWdlTmFtZS5GUk9aRU5fQVJUSUZBQ1RfRVhDRVBUSU9OLCBgVGhlIGNoZWNrc3VtIGZvciAke2ltbXV0YWJsZVBhdHRlcm5zW3RdfSBoYXMgYmVlbiBtb2RpZmllZCBieSB0aGlzIGluc3RhbGwsIHdoaWNoIGlzIGV4cGxpY2l0bHkgZm9yYmlkZGVuLmApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGF3YWl0IHRoaXMucGVyc2lzdEluc3RhbGxTdGF0ZUZpbGUoKTtcbiAgICAgICAgYXdhaXQgdGhpcy5jb25maWd1cmF0aW9uLnRyaWdnZXJIb29rKGhvb2tzID0+IHtcbiAgICAgICAgICAgIHJldHVybiBob29rcy5hZnRlckFsbEluc3RhbGxlZDtcbiAgICAgICAgfSwgdGhpcywgb3B0cyk7XG4gICAgfVxuICAgIGdlbmVyYXRlTG9ja2ZpbGUoKSB7XG4gICAgICAgIC8vIFdlIGdlbmVyYXRlIHRoZSBkYXRhIHN0cnVjdHVyZSB0aGF0IHdpbGwgcmVwcmVzZW50IG91ciBsb2NrZmlsZS4gVG8gZG8gdGhpcywgd2UgY3JlYXRlIGFcbiAgICAgICAgLy8gcmV2ZXJzZSBsb29rdXAgdGFibGUsIHdoZXJlIHRoZSBrZXkgd2lsbCBiZSB0aGUgcmVzb2x2ZWQgbG9jYXRvciBhbmQgdGhlIHZhbHVlIHdpbGwgYmUgYSBzZXRcbiAgICAgICAgLy8gb2YgYWxsIHRoZSBkZXNjcmlwdG9ycyB0aGF0IHJlc29sdmVkIHRvIGl0LiBUaGVuIHdlIHVzZSBpdCB0byBjb25zdHJ1Y3QgYW4gb3B0aW1pemVkIHZlcnNpb25cbiAgICAgICAgLy8gaWYgdGhlIGZpbmFsIG9iamVjdC5cbiAgICAgICAgY29uc3QgcmV2ZXJzZUxvb2t1cCA9IG5ldyBNYXAoKTtcbiAgICAgICAgZm9yIChjb25zdCBbZGVzY3JpcHRvckhhc2gsIGxvY2F0b3JIYXNoXSBvZiB0aGlzLnN0b3JlZFJlc29sdXRpb25zLmVudHJpZXMoKSkge1xuICAgICAgICAgICAgbGV0IGRlc2NyaXB0b3JIYXNoZXMgPSByZXZlcnNlTG9va3VwLmdldChsb2NhdG9ySGFzaCk7XG4gICAgICAgICAgICBpZiAoIWRlc2NyaXB0b3JIYXNoZXMpXG4gICAgICAgICAgICAgICAgcmV2ZXJzZUxvb2t1cC5zZXQobG9jYXRvckhhc2gsIGRlc2NyaXB0b3JIYXNoZXMgPSBuZXcgU2V0KCkpO1xuICAgICAgICAgICAgZGVzY3JpcHRvckhhc2hlcy5hZGQoZGVzY3JpcHRvckhhc2gpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG9wdGltaXplZExvY2tmaWxlID0ge307XG4gICAgICAgIG9wdGltaXplZExvY2tmaWxlLl9fbWV0YWRhdGEgPSB7XG4gICAgICAgICAgICB2ZXJzaW9uOiBMT0NLRklMRV9WRVJTSU9OLFxuICAgICAgICAgICAgY2FjaGVLZXk6IHVuZGVmaW5lZCxcbiAgICAgICAgfTtcbiAgICAgICAgZm9yIChjb25zdCBbbG9jYXRvckhhc2gsIGRlc2NyaXB0b3JIYXNoZXNdIG9mIHJldmVyc2VMb29rdXAuZW50cmllcygpKSB7XG4gICAgICAgICAgICBjb25zdCBwa2cgPSB0aGlzLm9yaWdpbmFsUGFja2FnZXMuZ2V0KGxvY2F0b3JIYXNoKTtcbiAgICAgICAgICAgIC8vIEEgcmVzb2x1dGlvbiB0aGF0IGlzbid0IGluIGBvcmlnaW5hbFBhY2thZ2VzYCBpcyBhIHZpcnR1YWwgcGFja2FnZXMuXG4gICAgICAgICAgICAvLyBTaW5jZSB2aXJ0dWFsIHBhY2thZ2VzIGNhbiBiZSBkZXJpdmVkIGZyb20gdGhlIGluZm9ybWF0aW9uIHN0b3JlZCBpblxuICAgICAgICAgICAgLy8gdGhlIHJlc3Qgb2YgdGhlIGxvY2tmaWxlIHdlIGRvbid0IHdhbnQgdG8gYm90aGVyIHN0b3JpbmcgdGhlbS5cbiAgICAgICAgICAgIGlmICghcGtnKVxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgY29uc3QgZGVzY3JpcHRvcnMgPSBbXTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZGVzY3JpcHRvckhhc2ggb2YgZGVzY3JpcHRvckhhc2hlcykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGRlc2NyaXB0b3IgPSB0aGlzLnN0b3JlZERlc2NyaXB0b3JzLmdldChkZXNjcmlwdG9ySGFzaCk7XG4gICAgICAgICAgICAgICAgaWYgKCFkZXNjcmlwdG9yKVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEFzc2VydGlvbiBmYWlsZWQ6IFRoZSBkZXNjcmlwdG9yIHNob3VsZCBoYXZlIGJlZW4gcmVnaXN0ZXJlZGApO1xuICAgICAgICAgICAgICAgIGRlc2NyaXB0b3JzLnB1c2goZGVzY3JpcHRvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBrZXkgPSBkZXNjcmlwdG9ycy5tYXAoZGVzY3JpcHRvciA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN0cnVjdFV0aWxzLnN0cmluZ2lmeURlc2NyaXB0b3IoZGVzY3JpcHRvcik7XG4gICAgICAgICAgICB9KS5zb3J0KCkuam9pbihgLCBgKTtcbiAgICAgICAgICAgIGNvbnN0IG1hbmlmZXN0ID0gbmV3IE1hbmlmZXN0XzEuTWFuaWZlc3QoKTtcbiAgICAgICAgICAgIG1hbmlmZXN0LnZlcnNpb24gPSBwa2cubGlua1R5cGUgPT09IHR5cGVzXzEuTGlua1R5cGUuSEFSRFxuICAgICAgICAgICAgICAgID8gcGtnLnZlcnNpb25cbiAgICAgICAgICAgICAgICA6IGAwLjAuMC11c2UubG9jYWxgO1xuICAgICAgICAgICAgbWFuaWZlc3QubGFuZ3VhZ2VOYW1lID0gcGtnLmxhbmd1YWdlTmFtZTtcbiAgICAgICAgICAgIG1hbmlmZXN0LmRlcGVuZGVuY2llcyA9IG5ldyBNYXAocGtnLmRlcGVuZGVuY2llcyk7XG4gICAgICAgICAgICBtYW5pZmVzdC5wZWVyRGVwZW5kZW5jaWVzID0gbmV3IE1hcChwa2cucGVlckRlcGVuZGVuY2llcyk7XG4gICAgICAgICAgICBtYW5pZmVzdC5kZXBlbmRlbmNpZXNNZXRhID0gbmV3IE1hcChwa2cuZGVwZW5kZW5jaWVzTWV0YSk7XG4gICAgICAgICAgICBtYW5pZmVzdC5wZWVyRGVwZW5kZW5jaWVzTWV0YSA9IG5ldyBNYXAocGtnLnBlZXJEZXBlbmRlbmNpZXNNZXRhKTtcbiAgICAgICAgICAgIG1hbmlmZXN0LmJpbiA9IG5ldyBNYXAocGtnLmJpbik7XG4gICAgICAgICAgICBsZXQgZW50cnlDaGVja3N1bTtcbiAgICAgICAgICAgIGNvbnN0IGNoZWNrc3VtID0gdGhpcy5zdG9yZWRDaGVja3N1bXMuZ2V0KHBrZy5sb2NhdG9ySGFzaCk7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGNoZWNrc3VtICE9PSBgdW5kZWZpbmVkYCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNhY2hlS2V5SW5kZXggPSBjaGVja3N1bS5pbmRleE9mKGAvYCk7XG4gICAgICAgICAgICAgICAgaWYgKGNhY2hlS2V5SW5kZXggPT09IC0xKVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEFzc2VydGlvbiBmYWlsZWQ6IEV4cGVjdGVkIHRoZSBjaGVja3N1bSB0byByZWZlcmVuY2UgaXRzIGNhY2hlIGtleWApO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNhY2hlS2V5ID0gY2hlY2tzdW0uc2xpY2UoMCwgY2FjaGVLZXlJbmRleCk7XG4gICAgICAgICAgICAgICAgY29uc3QgaGFzaCA9IGNoZWNrc3VtLnNsaWNlKGNhY2hlS2V5SW5kZXggKyAxKTtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIG9wdGltaXplZExvY2tmaWxlLl9fbWV0YWRhdGEuY2FjaGVLZXkgPT09IGB1bmRlZmluZWRgKVxuICAgICAgICAgICAgICAgICAgICBvcHRpbWl6ZWRMb2NrZmlsZS5fX21ldGFkYXRhLmNhY2hlS2V5ID0gY2FjaGVLZXk7XG4gICAgICAgICAgICAgICAgaWYgKGNhY2hlS2V5ID09PSBvcHRpbWl6ZWRMb2NrZmlsZS5fX21ldGFkYXRhLmNhY2hlS2V5KSB7XG4gICAgICAgICAgICAgICAgICAgIGVudHJ5Q2hlY2tzdW0gPSBoYXNoO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZW50cnlDaGVja3N1bSA9IGNoZWNrc3VtO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9wdGltaXplZExvY2tmaWxlW2tleV0gPSB7XG4gICAgICAgICAgICAgICAgLi4ubWFuaWZlc3QuZXhwb3J0VG8oe30sIHtcbiAgICAgICAgICAgICAgICAgICAgY29tcGF0aWJpbGl0eU1vZGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIGxpbmtUeXBlOiBwa2cubGlua1R5cGUudG9Mb3dlckNhc2UoKSxcbiAgICAgICAgICAgICAgICByZXNvbHV0aW9uOiBzdHJ1Y3RVdGlscy5zdHJpbmdpZnlMb2NhdG9yKHBrZyksXG4gICAgICAgICAgICAgICAgY2hlY2tzdW06IGVudHJ5Q2hlY2tzdW0sXG4gICAgICAgICAgICAgICAgY29uZGl0aW9uczogcGtnLmNvbmRpdGlvbnMgfHwgdW5kZWZpbmVkLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBoZWFkZXIgPSBgJHtbXG4gICAgICAgICAgICBgIyBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGJ5IHJ1bm5pbmcgXCJ5YXJuIGluc3RhbGxcIiBpbnNpZGUgeW91ciBwcm9qZWN0LlxcbmAsXG4gICAgICAgICAgICBgIyBNYW51YWwgY2hhbmdlcyBtaWdodCBiZSBsb3N0IC0gcHJvY2VlZCB3aXRoIGNhdXRpb24hXFxuYCxcbiAgICAgICAgXS5qb2luKGBgKX1cXG5gO1xuICAgICAgICByZXR1cm4gaGVhZGVyICsgKDAsIHBhcnNlcnNfMS5zdHJpbmdpZnlTeW1sKShvcHRpbWl6ZWRMb2NrZmlsZSk7XG4gICAgfVxuICAgIGFzeW5jIHBlcnNpc3RMb2NrZmlsZSgpIHtcbiAgICAgICAgY29uc3QgbG9ja2ZpbGVQYXRoID0gZnNsaWJfMi5wcGF0aC5qb2luKHRoaXMuY3dkLCB0aGlzLmNvbmZpZ3VyYXRpb24uZ2V0KGBsb2NrZmlsZUZpbGVuYW1lYCkpO1xuICAgICAgICBsZXQgY3VycmVudENvbnRlbnQgPSBgYDtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGN1cnJlbnRDb250ZW50ID0gYXdhaXQgZnNsaWJfMi54ZnMucmVhZEZpbGVQcm9taXNlKGxvY2tmaWxlUGF0aCwgYHV0ZjhgKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIC8vIGlnbm9yZSBlcnJvcnMsIG5vIGJpZyBkZWFsXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbmV3Q29udGVudCA9IHRoaXMuZ2VuZXJhdGVMb2NrZmlsZSgpO1xuICAgICAgICBjb25zdCBub3JtYWxpemVkQ29udGVudCA9ICgwLCBmc2xpYl8yLm5vcm1hbGl6ZUxpbmVFbmRpbmdzKShjdXJyZW50Q29udGVudCwgbmV3Q29udGVudCk7XG4gICAgICAgIGlmIChub3JtYWxpemVkQ29udGVudCA9PT0gY3VycmVudENvbnRlbnQpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGF3YWl0IGZzbGliXzIueGZzLndyaXRlRmlsZVByb21pc2UobG9ja2ZpbGVQYXRoLCBub3JtYWxpemVkQ29udGVudCk7XG4gICAgICAgIHRoaXMubG9ja0ZpbGVDaGVja3N1bSA9IG1ha2VMb2NrZmlsZUNoZWNrc3VtKG5vcm1hbGl6ZWRDb250ZW50KTtcbiAgICAgICAgdGhpcy5sb2NrZmlsZU5lZWRzUmVmcmVzaCA9IGZhbHNlO1xuICAgIH1cbiAgICBhc3luYyBwZXJzaXN0SW5zdGFsbFN0YXRlRmlsZSgpIHtcbiAgICAgICAgY29uc3QgZmllbGRzID0gW107XG4gICAgICAgIGZvciAoY29uc3QgY2F0ZWdvcnkgb2YgT2JqZWN0LnZhbHVlcyhJTlNUQUxMX1NUQVRFX0ZJRUxEUykpXG4gICAgICAgICAgICBmaWVsZHMucHVzaCguLi5jYXRlZ29yeSk7XG4gICAgICAgIGNvbnN0IGluc3RhbGxTdGF0ZSA9ICgwLCBwaWNrXzEuZGVmYXVsdCkodGhpcywgZmllbGRzKTtcbiAgICAgICAgY29uc3Qgc2VyaWFsaXplZFN0YXRlID0gdjhfMS5kZWZhdWx0LnNlcmlhbGl6ZShpbnN0YWxsU3RhdGUpO1xuICAgICAgICBjb25zdCBuZXdJbnN0YWxsU3RhdGVDaGVja3N1bSA9IGhhc2hVdGlscy5tYWtlSGFzaChzZXJpYWxpemVkU3RhdGUpO1xuICAgICAgICBpZiAodGhpcy5pbnN0YWxsU3RhdGVDaGVja3N1bSA9PT0gbmV3SW5zdGFsbFN0YXRlQ2hlY2tzdW0pXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNvbnN0IGluc3RhbGxTdGF0ZVBhdGggPSB0aGlzLmNvbmZpZ3VyYXRpb24uZ2V0KGBpbnN0YWxsU3RhdGVQYXRoYCk7XG4gICAgICAgIGF3YWl0IGZzbGliXzIueGZzLm1rZGlyUHJvbWlzZShmc2xpYl8yLnBwYXRoLmRpcm5hbWUoaW5zdGFsbFN0YXRlUGF0aCksIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICAgICAgICBhd2FpdCBmc2xpYl8yLnhmcy53cml0ZUZpbGVQcm9taXNlKGluc3RhbGxTdGF0ZVBhdGgsIGF3YWl0IGd6aXAoc2VyaWFsaXplZFN0YXRlKSk7XG4gICAgICAgIHRoaXMuaW5zdGFsbFN0YXRlQ2hlY2tzdW0gPSBuZXdJbnN0YWxsU3RhdGVDaGVja3N1bTtcbiAgICB9XG4gICAgYXN5bmMgcmVzdG9yZUluc3RhbGxTdGF0ZSh7IHJlc3RvcmVMaW5rZXJzQ3VzdG9tRGF0YSA9IHRydWUsIHJlc3RvcmVSZXNvbHV0aW9ucyA9IHRydWUsIHJlc3RvcmVCdWlsZFN0YXRlID0gdHJ1ZSB9ID0ge30pIHtcbiAgICAgICAgY29uc3QgaW5zdGFsbFN0YXRlUGF0aCA9IHRoaXMuY29uZmlndXJhdGlvbi5nZXQoYGluc3RhbGxTdGF0ZVBhdGhgKTtcbiAgICAgICAgbGV0IGluc3RhbGxTdGF0ZTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IGluc3RhbGxTdGF0ZUJ1ZmZlciA9IGF3YWl0IGd1bnppcChhd2FpdCBmc2xpYl8yLnhmcy5yZWFkRmlsZVByb21pc2UoaW5zdGFsbFN0YXRlUGF0aCkpO1xuICAgICAgICAgICAgaW5zdGFsbFN0YXRlID0gdjhfMS5kZWZhdWx0LmRlc2VyaWFsaXplKGluc3RhbGxTdGF0ZUJ1ZmZlcik7XG4gICAgICAgICAgICB0aGlzLmluc3RhbGxTdGF0ZUNoZWNrc3VtID0gaGFzaFV0aWxzLm1ha2VIYXNoKGluc3RhbGxTdGF0ZUJ1ZmZlcik7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2gge1xuICAgICAgICAgICAgLy8gSWYgZm9yIHdoYXRldmVyIHJlYXNvbiB0aGUgaW5zdGFsbCBzdGF0ZSBjYW4ndCBiZSByZXN0b3JlZFxuICAgICAgICAgICAgLy8gY2Fycnkgb24gYXMgaWYgaXQgZG9lc24ndCBleGlzdC5cbiAgICAgICAgICAgIGlmIChyZXN0b3JlUmVzb2x1dGlvbnMpXG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5hcHBseUxpZ2h0UmVzb2x1dGlvbigpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChyZXN0b3JlTGlua2Vyc0N1c3RvbURhdGEpXG4gICAgICAgICAgICBpZiAodHlwZW9mIGluc3RhbGxTdGF0ZS5saW5rZXJzQ3VzdG9tRGF0YSAhPT0gYHVuZGVmaW5lZGApXG4gICAgICAgICAgICAgICAgdGhpcy5saW5rZXJzQ3VzdG9tRGF0YSA9IGluc3RhbGxTdGF0ZS5saW5rZXJzQ3VzdG9tRGF0YTtcbiAgICAgICAgaWYgKHJlc3RvcmVCdWlsZFN0YXRlKVxuICAgICAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCAoMCwgcGlja18xLmRlZmF1bHQpKGluc3RhbGxTdGF0ZSwgSU5TVEFMTF9TVEFURV9GSUVMRFMucmVzdG9yZUJ1aWxkU3RhdGUpKTtcbiAgICAgICAgLy8gUmVzb2x1dGlvbnMgbmVlZHMgdG8gYmUgcmVzdG9yZWQgbGFzdCBvdGhlcndpc2UgYXBwbHlMaWdodFJlc29sdXRpb24gd2lsbCBwZXJzaXN0IGEgbmV3IHN0YXRlXG4gICAgICAgIC8vIGJlZm9yZSB0aGUgcmVzdCBpcyByZXN0b3JlZFxuICAgICAgICBpZiAocmVzdG9yZVJlc29sdXRpb25zKSB7XG4gICAgICAgICAgICBpZiAoaW5zdGFsbFN0YXRlLmxvY2tGaWxlQ2hlY2tzdW0gPT09IHRoaXMubG9ja0ZpbGVDaGVja3N1bSkge1xuICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywgKDAsIHBpY2tfMS5kZWZhdWx0KShpbnN0YWxsU3RhdGUsIElOU1RBTExfU1RBVEVfRklFTERTLnJlc3RvcmVSZXNvbHV0aW9ucykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5hcHBseUxpZ2h0UmVzb2x1dGlvbigpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIGFzeW5jIGFwcGx5TGlnaHRSZXNvbHV0aW9uKCkge1xuICAgICAgICBhd2FpdCB0aGlzLnJlc29sdmVFdmVyeXRoaW5nKHtcbiAgICAgICAgICAgIGxvY2tmaWxlT25seTogdHJ1ZSxcbiAgICAgICAgICAgIHJlcG9ydDogbmV3IFRocm93UmVwb3J0XzEuVGhyb3dSZXBvcnQoKSxcbiAgICAgICAgfSk7XG4gICAgICAgIGF3YWl0IHRoaXMucGVyc2lzdEluc3RhbGxTdGF0ZUZpbGUoKTtcbiAgICB9XG4gICAgYXN5bmMgcGVyc2lzdCgpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5wZXJzaXN0TG9ja2ZpbGUoKTtcbiAgICAgICAgZm9yIChjb25zdCB3b3Jrc3BhY2Ugb2YgdGhpcy53b3Jrc3BhY2VzQnlDd2QudmFsdWVzKCkpIHtcbiAgICAgICAgICAgIGF3YWl0IHdvcmtzcGFjZS5wZXJzaXN0TWFuaWZlc3QoKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBhc3luYyBjYWNoZUNsZWFudXAoeyBjYWNoZSwgcmVwb3J0IH0pIHtcbiAgICAgICAgaWYgKHRoaXMuY29uZmlndXJhdGlvbi5nZXQoYGVuYWJsZUdsb2JhbENhY2hlYCkpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNvbnN0IFBSRVNFUlZFRF9GSUxFUyA9IG5ldyBTZXQoW1xuICAgICAgICAgICAgYC5naXRpZ25vcmVgLFxuICAgICAgICBdKTtcbiAgICAgICAgaWYgKCEoMCwgZm9sZGVyVXRpbHNfMS5pc0ZvbGRlckluc2lkZSkoY2FjaGUuY3dkLCB0aGlzLmN3ZCkpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGlmICghKGF3YWl0IGZzbGliXzIueGZzLmV4aXN0c1Byb21pc2UoY2FjaGUuY3dkKSkpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNvbnN0IHByZWZlckFnZ3JlZ2F0ZUNhY2hlSW5mbyA9IHRoaXMuY29uZmlndXJhdGlvbi5nZXQoYHByZWZlckFnZ3JlZ2F0ZUNhY2hlSW5mb2ApO1xuICAgICAgICBsZXQgZW50cmllc1JlbW92ZWQgPSAwO1xuICAgICAgICBsZXQgbGFzdEVudHJ5UmVtb3ZlZCA9IG51bGw7XG4gICAgICAgIGZvciAoY29uc3QgZW50cnkgb2YgYXdhaXQgZnNsaWJfMi54ZnMucmVhZGRpclByb21pc2UoY2FjaGUuY3dkKSkge1xuICAgICAgICAgICAgaWYgKFBSRVNFUlZFRF9GSUxFUy5oYXMoZW50cnkpKVxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgY29uc3QgZW50cnlQYXRoID0gZnNsaWJfMi5wcGF0aC5yZXNvbHZlKGNhY2hlLmN3ZCwgZW50cnkpO1xuICAgICAgICAgICAgaWYgKGNhY2hlLm1hcmtlZEZpbGVzLmhhcyhlbnRyeVBhdGgpKVxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgbGFzdEVudHJ5UmVtb3ZlZCA9IGVudHJ5O1xuICAgICAgICAgICAgaWYgKGNhY2hlLmltbXV0YWJsZSkge1xuICAgICAgICAgICAgICAgIHJlcG9ydC5yZXBvcnRFcnJvcihNZXNzYWdlTmFtZV8xLk1lc3NhZ2VOYW1lLklNTVVUQUJMRV9DQUNIRSwgYCR7Zm9ybWF0VXRpbHMucHJldHR5KHRoaXMuY29uZmlndXJhdGlvbiwgZnNsaWJfMi5wcGF0aC5iYXNlbmFtZShlbnRyeVBhdGgpLCBgbWFnZW50YWApfSBhcHBlYXJzIHRvIGJlIHVudXNlZCBhbmQgd291bGQgYmUgbWFya2VkIGZvciBkZWxldGlvbiwgYnV0IHRoZSBjYWNoZSBpcyBpbW11dGFibGVgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmIChwcmVmZXJBZ2dyZWdhdGVDYWNoZUluZm8pXG4gICAgICAgICAgICAgICAgICAgIGVudHJpZXNSZW1vdmVkICs9IDE7XG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICByZXBvcnQucmVwb3J0SW5mbyhNZXNzYWdlTmFtZV8xLk1lc3NhZ2VOYW1lLlVOVVNFRF9DQUNIRV9FTlRSWSwgYCR7Zm9ybWF0VXRpbHMucHJldHR5KHRoaXMuY29uZmlndXJhdGlvbiwgZnNsaWJfMi5wcGF0aC5iYXNlbmFtZShlbnRyeVBhdGgpLCBgbWFnZW50YWApfSBhcHBlYXJzIHRvIGJlIHVudXNlZCAtIHJlbW92aW5nYCk7XG4gICAgICAgICAgICAgICAgYXdhaXQgZnNsaWJfMi54ZnMucmVtb3ZlUHJvbWlzZShlbnRyeVBhdGgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChwcmVmZXJBZ2dyZWdhdGVDYWNoZUluZm8gJiYgZW50cmllc1JlbW92ZWQgIT09IDApIHtcbiAgICAgICAgICAgIHJlcG9ydC5yZXBvcnRJbmZvKE1lc3NhZ2VOYW1lXzEuTWVzc2FnZU5hbWUuVU5VU0VEX0NBQ0hFX0VOVFJZLCBlbnRyaWVzUmVtb3ZlZCA+IDFcbiAgICAgICAgICAgICAgICA/IGAke2VudHJpZXNSZW1vdmVkfSBwYWNrYWdlcyBhcHBlYXJlZCB0byBiZSB1bnVzZWQgYW5kIHdlcmUgcmVtb3ZlZGBcbiAgICAgICAgICAgICAgICA6IGAke2xhc3RFbnRyeVJlbW92ZWR9IGFwcGVhcmVkIHRvIGJlIHVudXNlZCBhbmQgd2FzIHJlbW92ZWRgKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbmV4cG9ydHMuUHJvamVjdCA9IFByb2plY3Q7XG4vKipcbiAqIFRoaXMgZnVuY3Rpb24gaXMgd29ydGggc29tZSBkb2N1bWVudGF0aW9uLiBJdCB0YWtlcyBhIHNldCBvZiBwYWNrYWdlcyxcbiAqIHRyYXZlcnNlcyB0aGVtIGFsbCwgYW5kIGdlbmVyYXRlcyB2aXJ0dWFsIHBhY2thZ2VzIGZvciBlYWNoIHBhY2thZ2UgdGhhdFxuICogbGlzdHMgcGVlciBkZXBlbmRlbmNpZXMuXG4gKlxuICogV2UgYWxzbyB0YWtlIGFkdmFudGFnZSBvZiB0aGUgdHJlZSB0cmF2ZXJzYWwgdG8gZGV0ZWN0IHdoaWNoIHBhY2thZ2VzIGFyZVxuICogYWN0dWFsbHkgdXNlZCBhbmQgd2hpY2ggaGF2ZSBkaXNhcHBlYXJlZCwgYW5kIHRvIGtub3cgd2hpY2ggcGFja2FnZXMgdHJ1bHlcbiAqIGhhdmUgYW4gb3B0aW9uYWwgYnVpbGQgKHNpbmNlIGEgcGFja2FnZSBtYXkgYmUgb3B0aW9uYWwgaW4gb25lIHBhcnQgb2YgdGhlXG4gKiB0cmVlIGJ1dCBub3QgYW5vdGhlcikuXG4gKi9cbmZ1bmN0aW9uIGFwcGx5VmlydHVhbFJlc29sdXRpb25NdXRhdGlvbnMoeyBwcm9qZWN0LCBhbGxEZXNjcmlwdG9ycywgYWxsUmVzb2x1dGlvbnMsIGFsbFBhY2thZ2VzLCBhY2Nlc3NpYmxlTG9jYXRvcnMgPSBuZXcgU2V0KCksIG9wdGlvbmFsQnVpbGRzID0gbmV3IFNldCgpLCBwZWVyUmVxdWlyZW1lbnRzID0gbmV3IE1hcCgpLCB2b2xhdGlsZURlc2NyaXB0b3JzID0gbmV3IFNldCgpLCByZXBvcnQsIH0pIHtcbiAgICB2YXIgX2E7XG4gICAgY29uc3QgdmlydHVhbFN0YWNrID0gbmV3IE1hcCgpO1xuICAgIGNvbnN0IHJlc29sdXRpb25TdGFjayA9IFtdO1xuICAgIGNvbnN0IGFsbElkZW50cyA9IG5ldyBNYXAoKTtcbiAgICAvLyBXZSdsbCBiZSBrZWVwaW5nIHRyYWNrIG9mIGFsbCB2aXJ0dWFsIGRlc2NyaXB0b3JzOyBvbmNlIHRoZXkgaGF2ZSBhbGxcbiAgICAvLyBiZWVuIGdlbmVyYXRlZCB3ZSdsbCBjaGVjayB3aGV0aGVyIHRoZXkgY2FuIGJlIGNvbnNvbGlkYXRlZCBpbnRvIG9uZS5cbiAgICBjb25zdCBhbGxWaXJ0dWFsSW5zdGFuY2VzID0gbmV3IE1hcCgpO1xuICAgIGNvbnN0IGFsbFZpcnR1YWxEZXBlbmRlbnRzID0gbmV3IE1hcCgpO1xuICAgIC8vIEZpcnN0IGtleSBpcyB0aGUgZmlyc3QgcGFja2FnZSB0aGF0IHJlcXVlc3RzIHRoZSBwZWVyIGRlcGVuZGVuY3kuIFNlY29uZFxuICAgIC8vIGtleSBpcyB0aGUgbmFtZSBvZiB0aGUgcGFja2FnZSBpbiB0aGUgcGVlciBkZXBlbmRlbmN5LiBWYWx1ZSBpcyB0aGUgbGlzdFxuICAgIC8vIG9mIGFsbCBwYWNrYWdlcyB0aGF0IGV4dGVuZCB0aGUgb3JpZ2luYWwgcGVlciByZXF1aXJlbWVudC5cbiAgICBjb25zdCBwZWVyRGVwZW5kZW5jeUxpbmtzID0gbmV3IE1hcCgpO1xuICAgIC8vIFdlIGtlZXAgdHJhY2sgb24gd2hpY2ggcGFja2FnZSBkZXBlbmQgb24gd2hpY2ggb3RoZXIgcGFja2FnZSB3aXRoIHBlZXJcbiAgICAvLyBkZXBlbmRlbmNpZXM7IHRoaXMgd2F5IHdlIGNhbiBlbWl0IHdhcm5pbmdzIGZvciB0aGVtIGxhdGVyIG9uLlxuICAgIGNvbnN0IHBlZXJEZXBlbmRlbmN5RGVwZW5kZW50cyA9IG5ldyBNYXAoKTtcbiAgICAvLyBXZSBtdXN0IGtlZXAgYSBjb3B5IG9mIHRoZSB3b3Jrc3BhY2VzIG9yaWdpbmFsIGRlcGVuZGVuY2llcywgYmVjYXVzZSB0aGV5XG4gICAgLy8gbWF5IGJlIG92ZXJyaWRlbiBkdXJpbmcgdGhlIHZpcnR1YWwgcGFja2FnZSByZXNvbHV0aW9uIC0gY2YgRHJhZ29uIFRlc3QgIzVcbiAgICBjb25zdCBvcmlnaW5hbFdvcmtzcGFjZURlZmluaXRpb25zID0gbmV3IE1hcChwcm9qZWN0LndvcmtzcGFjZXMubWFwKHdvcmtzcGFjZSA9PiB7XG4gICAgICAgIGNvbnN0IGxvY2F0b3JIYXNoID0gd29ya3NwYWNlLmFuY2hvcmVkTG9jYXRvci5sb2NhdG9ySGFzaDtcbiAgICAgICAgY29uc3QgcGtnID0gYWxsUGFja2FnZXMuZ2V0KGxvY2F0b3JIYXNoKTtcbiAgICAgICAgaWYgKHR5cGVvZiBwa2cgPT09IGB1bmRlZmluZWRgKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBBc3NlcnRpb24gZmFpbGVkOiBUaGUgd29ya3NwYWNlIHNob3VsZCBoYXZlIGFuIGFzc29jaWF0ZWQgcGFja2FnZWApO1xuICAgICAgICByZXR1cm4gW2xvY2F0b3JIYXNoLCBzdHJ1Y3RVdGlscy5jb3B5UGFja2FnZShwa2cpXTtcbiAgICB9KSk7XG4gICAgY29uc3QgcmVwb3J0U3RhY2tPdmVyZmxvdyA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgbG9nRGlyID0gZnNsaWJfMi54ZnMubWt0ZW1wU3luYygpO1xuICAgICAgICBjb25zdCBsb2dGaWxlID0gZnNsaWJfMi5wcGF0aC5qb2luKGxvZ0RpciwgYHN0YWNrdHJhY2UubG9nYCk7XG4gICAgICAgIGNvbnN0IG1heFNpemUgPSBTdHJpbmcocmVzb2x1dGlvblN0YWNrLmxlbmd0aCArIDEpLmxlbmd0aDtcbiAgICAgICAgY29uc3QgY29udGVudCA9IHJlc29sdXRpb25TdGFjay5tYXAoKGxvY2F0b3IsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBwcmVmaXggPSBgJHtpbmRleCArIDF9LmAucGFkU3RhcnQobWF4U2l6ZSwgYCBgKTtcbiAgICAgICAgICAgIHJldHVybiBgJHtwcmVmaXh9ICR7c3RydWN0VXRpbHMuc3RyaW5naWZ5TG9jYXRvcihsb2NhdG9yKX1cXG5gO1xuICAgICAgICB9KS5qb2luKGBgKTtcbiAgICAgICAgZnNsaWJfMi54ZnMud3JpdGVGaWxlU3luYyhsb2dGaWxlLCBjb250ZW50KTtcbiAgICAgICAgZnNsaWJfMi54ZnMuZGV0YWNoVGVtcChsb2dEaXIpO1xuICAgICAgICB0aHJvdyBuZXcgUmVwb3J0XzEuUmVwb3J0RXJyb3IoTWVzc2FnZU5hbWVfMS5NZXNzYWdlTmFtZS5TVEFDS19PVkVSRkxPV19SRVNPTFVUSU9OLCBgRW5jb3VudGVyZWQgYSBzdGFjayBvdmVyZmxvdyB3aGVuIHJlc29sdmluZyBwZWVyIGRlcGVuZGVuY2llczsgY2YgJHtmc2xpYl8xLm5wYXRoLmZyb21Qb3J0YWJsZVBhdGgobG9nRmlsZSl9YCk7XG4gICAgfTtcbiAgICBjb25zdCBnZXRQYWNrYWdlRnJvbURlc2NyaXB0b3IgPSAoZGVzY3JpcHRvcikgPT4ge1xuICAgICAgICBjb25zdCByZXNvbHV0aW9uID0gYWxsUmVzb2x1dGlvbnMuZ2V0KGRlc2NyaXB0b3IuZGVzY3JpcHRvckhhc2gpO1xuICAgICAgICBpZiAodHlwZW9mIHJlc29sdXRpb24gPT09IGB1bmRlZmluZWRgKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBBc3NlcnRpb24gZmFpbGVkOiBUaGUgcmVzb2x1dGlvbiBzaG91bGQgaGF2ZSBiZWVuIHJlZ2lzdGVyZWRgKTtcbiAgICAgICAgY29uc3QgcGtnID0gYWxsUGFja2FnZXMuZ2V0KHJlc29sdXRpb24pO1xuICAgICAgICBpZiAoIXBrZylcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQXNzZXJ0aW9uIGZhaWxlZDogVGhlIHBhY2thZ2UgY291bGQgbm90IGJlIGZvdW5kYCk7XG4gICAgICAgIHJldHVybiBwa2c7XG4gICAgfTtcbiAgICBjb25zdCByZXNvbHZlUGVlckRlcGVuZGVuY2llcyA9IChwYXJlbnREZXNjcmlwdG9yLCBwYXJlbnRMb2NhdG9yLCBwZWVyU2xvdHMsIHsgdG9wLCBvcHRpb25hbCB9KSA9PiB7XG4gICAgICAgIGlmIChyZXNvbHV0aW9uU3RhY2subGVuZ3RoID4gMTAwMClcbiAgICAgICAgICAgIHJlcG9ydFN0YWNrT3ZlcmZsb3coKTtcbiAgICAgICAgcmVzb2x1dGlvblN0YWNrLnB1c2gocGFyZW50TG9jYXRvcik7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHJlc29sdmVQZWVyRGVwZW5kZW5jaWVzSW1wbChwYXJlbnREZXNjcmlwdG9yLCBwYXJlbnRMb2NhdG9yLCBwZWVyU2xvdHMsIHsgdG9wLCBvcHRpb25hbCB9KTtcbiAgICAgICAgcmVzb2x1dGlvblN0YWNrLnBvcCgpO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH07XG4gICAgY29uc3QgcmVzb2x2ZVBlZXJEZXBlbmRlbmNpZXNJbXBsID0gKHBhcmVudERlc2NyaXB0b3IsIHBhcmVudExvY2F0b3IsIHBlZXJTbG90cywgeyB0b3AsIG9wdGlvbmFsIH0pID0+IHtcbiAgICAgICAgaWYgKGFjY2Vzc2libGVMb2NhdG9ycy5oYXMocGFyZW50TG9jYXRvci5sb2NhdG9ySGFzaCkpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGFjY2Vzc2libGVMb2NhdG9ycy5hZGQocGFyZW50TG9jYXRvci5sb2NhdG9ySGFzaCk7XG4gICAgICAgIGlmICghb3B0aW9uYWwpXG4gICAgICAgICAgICBvcHRpb25hbEJ1aWxkcy5kZWxldGUocGFyZW50TG9jYXRvci5sb2NhdG9ySGFzaCk7XG4gICAgICAgIGNvbnN0IHBhcmVudFBhY2thZ2UgPSBhbGxQYWNrYWdlcy5nZXQocGFyZW50TG9jYXRvci5sb2NhdG9ySGFzaCk7XG4gICAgICAgIGlmICghcGFyZW50UGFja2FnZSlcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQXNzZXJ0aW9uIGZhaWxlZDogVGhlIHBhY2thZ2UgKCR7c3RydWN0VXRpbHMucHJldHR5TG9jYXRvcihwcm9qZWN0LmNvbmZpZ3VyYXRpb24sIHBhcmVudExvY2F0b3IpfSkgc2hvdWxkIGhhdmUgYmVlbiByZWdpc3RlcmVkYCk7XG4gICAgICAgIGNvbnN0IG5ld1ZpcnR1YWxJbnN0YW5jZXMgPSBbXTtcbiAgICAgICAgY29uc3QgZmlyc3RQYXNzID0gW107XG4gICAgICAgIGNvbnN0IHNlY29uZFBhc3MgPSBbXTtcbiAgICAgICAgY29uc3QgdGhpcmRQYXNzID0gW107XG4gICAgICAgIGNvbnN0IGZvdXJ0aFBhc3MgPSBbXTtcbiAgICAgICAgLy8gRHVyaW5nIHRoaXMgZmlyc3QgcGFzcyB3ZSB2aXJ0dWFsaXplIHRoZSBkZXNjcmlwdG9ycy4gVGhpcyBhbGxvd3MgdXNcbiAgICAgICAgLy8gdG8gcmVmZXJlbmNlIHRoZW0gZnJvbSB0aGVpciBzaWJsaW5nIHdpdGhvdXQgYmVpbmcgb3JkZXItZGVwZW5kZW50LFxuICAgICAgICAvLyB3aGljaCBpcyByZXF1aXJlZCB0byBzb2x2ZSBjYXNlcyB3aGVyZSBwYWNrYWdlcyB3aXRoIHBlZXIgZGVwZW5kZW5jaWVzXG4gICAgICAgIC8vIGhhdmUgcGVlciBkZXBlbmRlbmNpZXMgdGhlbXNlbHZlcy5cbiAgICAgICAgZm9yIChjb25zdCBkZXNjcmlwdG9yIG9mIEFycmF5LmZyb20ocGFyZW50UGFja2FnZS5kZXBlbmRlbmNpZXMudmFsdWVzKCkpKSB7XG4gICAgICAgICAgICAvLyBXZSBzaG91bGRuJ3QgdmlydHVhbGl6ZSB0aGUgcGFja2FnZSBpZiBpdCB3YXMgb2J0YWluZWQgdGhyb3VnaCBhIHBlZXJcbiAgICAgICAgICAgIC8vIGRlcGVuZGVuY3kgKHdoaWNoIGNhbid0IGJlIHRoZSBjYXNlIGZvciB3b3Jrc3BhY2VzIHdoZW4gcmVzb2x2ZWRcbiAgICAgICAgICAgIC8vIHRocm91Z2ggdGhlaXIgdG9wLWxldmVsKVxuICAgICAgICAgICAgaWYgKHBhcmVudFBhY2thZ2UucGVlckRlcGVuZGVuY2llcy5oYXMoZGVzY3JpcHRvci5pZGVudEhhc2gpICYmIHBhcmVudFBhY2thZ2UubG9jYXRvckhhc2ggIT09IHRvcClcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIC8vIFdlIGhhZCBzb21lIGlzc3VlcyB3aGVyZSB2aXJ0dWFsIHBhY2thZ2VzIHdlcmUgaW5jb3JyZWN0bHkgc2V0IGluc2lkZVxuICAgICAgICAgICAgLy8gd29ya3NwYWNlcywgY2F1c2luZyBsZWFrcy4gQ2hlY2sgdGhlIERyYWdvbiBUZXN0ICM1IGZvciBtb3JlIGRldGFpbHMuXG4gICAgICAgICAgICBpZiAoc3RydWN0VXRpbHMuaXNWaXJ0dWFsRGVzY3JpcHRvcihkZXNjcmlwdG9yKSlcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEFzc2VydGlvbiBmYWlsZWQ6IFZpcnR1YWwgcGFja2FnZXMgc2hvdWxkbid0IGJlIGVuY291bnRlcmVkIHdoZW4gdmlydHVhbGl6aW5nIGEgYnJhbmNoYCk7XG4gICAgICAgICAgICAvLyBNYXJrIHRoaXMgcGFja2FnZSBhcyBiZWluZyB1c2VkICh3b24ndCBiZSByZW1vdmVkIGZyb20gdGhlIGxvY2tmaWxlKVxuICAgICAgICAgICAgdm9sYXRpbGVEZXNjcmlwdG9ycy5kZWxldGUoZGVzY3JpcHRvci5kZXNjcmlwdG9ySGFzaCk7XG4gICAgICAgICAgICAvLyBEZXRlY3Qgd2hldGhlciB0aGlzIHBhY2thZ2UgaXMgYmVpbmcgcmVxdWlyZWRcbiAgICAgICAgICAgIGxldCBpc09wdGlvbmFsID0gb3B0aW9uYWw7XG4gICAgICAgICAgICBpZiAoIWlzT3B0aW9uYWwpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBkZXBlbmRlbmN5TWV0YVNldCA9IHBhcmVudFBhY2thZ2UuZGVwZW5kZW5jaWVzTWV0YS5nZXQoc3RydWN0VXRpbHMuc3RyaW5naWZ5SWRlbnQoZGVzY3JpcHRvcikpO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgZGVwZW5kZW5jeU1ldGFTZXQgIT09IGB1bmRlZmluZWRgKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRlcGVuZGVuY3lNZXRhID0gZGVwZW5kZW5jeU1ldGFTZXQuZ2V0KG51bGwpO1xuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGRlcGVuZGVuY3lNZXRhICE9PSBgdW5kZWZpbmVkYCAmJiBkZXBlbmRlbmN5TWV0YS5vcHRpb25hbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaXNPcHRpb25hbCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCByZXNvbHV0aW9uID0gYWxsUmVzb2x1dGlvbnMuZ2V0KGRlc2NyaXB0b3IuZGVzY3JpcHRvckhhc2gpO1xuICAgICAgICAgICAgaWYgKCFyZXNvbHV0aW9uKVxuICAgICAgICAgICAgICAgIC8vIE5vdGUgdGhhdCB3ZSBjYW4ndCB1c2UgYGdldFBhY2thZ2VGcm9tRGVzY3JpcHRvcmAgKGRlZmluZWQgYmVsb3csXG4gICAgICAgICAgICAgICAgLy8gYmVjYXVzZSB3aGVuIGRvaW5nIHRoZSBpbml0aWFsIHRyZWUgYnVpbGRpbmcgcmlnaHQgYWZ0ZXIgbG9hZGluZyB0aGVcbiAgICAgICAgICAgICAgICAvLyBwcm9qZWN0IGl0J3MgcG9zc2libGUgdGhhdCB3ZSBnZXQgc29tZSBlbnRyaWVzIHRoYXQgaGF2ZW4ndCBiZWVuXG4gICAgICAgICAgICAgICAgLy8gcmVnaXN0ZXJlZCBpbnRvIHRoZSBsb2NrZmlsZSB5ZXQgLSBmb3IgZXhhbXBsZSB3aGVuIHRoZSB1c2VyIGhhc1xuICAgICAgICAgICAgICAgIC8vIG1hbnVhbGx5IGNoYW5nZWQgdGhlIHBhY2thZ2UuanNvbiBkZXBlbmRlbmNpZXMpXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBBc3NlcnRpb24gZmFpbGVkOiBUaGUgcmVzb2x1dGlvbiAoJHtzdHJ1Y3RVdGlscy5wcmV0dHlEZXNjcmlwdG9yKHByb2plY3QuY29uZmlndXJhdGlvbiwgZGVzY3JpcHRvcil9KSBzaG91bGQgaGF2ZSBiZWVuIHJlZ2lzdGVyZWRgKTtcbiAgICAgICAgICAgIGNvbnN0IHBrZyA9IG9yaWdpbmFsV29ya3NwYWNlRGVmaW5pdGlvbnMuZ2V0KHJlc29sdXRpb24pIHx8IGFsbFBhY2thZ2VzLmdldChyZXNvbHV0aW9uKTtcbiAgICAgICAgICAgIGlmICghcGtnKVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQXNzZXJ0aW9uIGZhaWxlZDogVGhlIHBhY2thZ2UgKCR7cmVzb2x1dGlvbn0sIHJlc29sdmVkIGZyb20gJHtzdHJ1Y3RVdGlscy5wcmV0dHlEZXNjcmlwdG9yKHByb2plY3QuY29uZmlndXJhdGlvbiwgZGVzY3JpcHRvcil9KSBzaG91bGQgaGF2ZSBiZWVuIHJlZ2lzdGVyZWRgKTtcbiAgICAgICAgICAgIGlmIChwa2cucGVlckRlcGVuZGVuY2llcy5zaXplID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZVBlZXJEZXBlbmRlbmNpZXMoZGVzY3JpcHRvciwgcGtnLCBuZXcgTWFwKCksIHsgdG9wLCBvcHRpb25hbDogaXNPcHRpb25hbCB9KTtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCB2aXJ0dWFsaXplZERlc2NyaXB0b3I7XG4gICAgICAgICAgICBsZXQgdmlydHVhbGl6ZWRQYWNrYWdlO1xuICAgICAgICAgICAgY29uc3QgbWlzc2luZ1BlZXJEZXBlbmRlbmNpZXMgPSBuZXcgU2V0KCk7XG4gICAgICAgICAgICBsZXQgbmV4dFBlZXJTbG90cztcbiAgICAgICAgICAgIGZpcnN0UGFzcy5wdXNoKCgpID0+IHtcbiAgICAgICAgICAgICAgICB2aXJ0dWFsaXplZERlc2NyaXB0b3IgPSBzdHJ1Y3RVdGlscy52aXJ0dWFsaXplRGVzY3JpcHRvcihkZXNjcmlwdG9yLCBwYXJlbnRMb2NhdG9yLmxvY2F0b3JIYXNoKTtcbiAgICAgICAgICAgICAgICB2aXJ0dWFsaXplZFBhY2thZ2UgPSBzdHJ1Y3RVdGlscy52aXJ0dWFsaXplUGFja2FnZShwa2csIHBhcmVudExvY2F0b3IubG9jYXRvckhhc2gpO1xuICAgICAgICAgICAgICAgIHBhcmVudFBhY2thZ2UuZGVwZW5kZW5jaWVzLmRlbGV0ZShkZXNjcmlwdG9yLmlkZW50SGFzaCk7XG4gICAgICAgICAgICAgICAgcGFyZW50UGFja2FnZS5kZXBlbmRlbmNpZXMuc2V0KHZpcnR1YWxpemVkRGVzY3JpcHRvci5pZGVudEhhc2gsIHZpcnR1YWxpemVkRGVzY3JpcHRvcik7XG4gICAgICAgICAgICAgICAgYWxsUmVzb2x1dGlvbnMuc2V0KHZpcnR1YWxpemVkRGVzY3JpcHRvci5kZXNjcmlwdG9ySGFzaCwgdmlydHVhbGl6ZWRQYWNrYWdlLmxvY2F0b3JIYXNoKTtcbiAgICAgICAgICAgICAgICBhbGxEZXNjcmlwdG9ycy5zZXQodmlydHVhbGl6ZWREZXNjcmlwdG9yLmRlc2NyaXB0b3JIYXNoLCB2aXJ0dWFsaXplZERlc2NyaXB0b3IpO1xuICAgICAgICAgICAgICAgIGFsbFBhY2thZ2VzLnNldCh2aXJ0dWFsaXplZFBhY2thZ2UubG9jYXRvckhhc2gsIHZpcnR1YWxpemVkUGFja2FnZSk7XG4gICAgICAgICAgICAgICAgLy8gS2VlcCB0cmFjayBvZiBhbGwgbmV3IHZpcnR1YWwgcGFja2FnZXMgc2luY2Ugd2UnbGwgd2FudCB0byBkZWR1cGUgdGhlbVxuICAgICAgICAgICAgICAgIG5ld1ZpcnR1YWxJbnN0YW5jZXMucHVzaChbcGtnLCB2aXJ0dWFsaXplZERlc2NyaXB0b3IsIHZpcnR1YWxpemVkUGFja2FnZV0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBzZWNvbmRQYXNzLnB1c2goKCkgPT4ge1xuICAgICAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgICAgICBuZXh0UGVlclNsb3RzID0gbmV3IE1hcCgpO1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgcGVlclJlcXVlc3Qgb2YgdmlydHVhbGl6ZWRQYWNrYWdlLnBlZXJEZXBlbmRlbmNpZXMudmFsdWVzKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHBlZXJEZXNjcmlwdG9yID0gcGFyZW50UGFja2FnZS5kZXBlbmRlbmNpZXMuZ2V0KHBlZXJSZXF1ZXN0LmlkZW50SGFzaCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghcGVlckRlc2NyaXB0b3IgJiYgc3RydWN0VXRpbHMuYXJlSWRlbnRzRXF1YWwocGFyZW50TG9jYXRvciwgcGVlclJlcXVlc3QpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgcGFyZW50IGlzbid0IGluc3RhbGxlZCB1bmRlciBhbiBhbGlhcyB3ZSBjYW4gc2tpcCB1bm5lY2Vzc2FyeSBzdGVwc1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmVudERlc2NyaXB0b3IuaWRlbnRIYXNoID09PSBwYXJlbnRMb2NhdG9yLmlkZW50SGFzaCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZXJEZXNjcmlwdG9yID0gcGFyZW50RGVzY3JpcHRvcjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZXJEZXNjcmlwdG9yID0gc3RydWN0VXRpbHMubWFrZURlc2NyaXB0b3IocGFyZW50TG9jYXRvciwgcGFyZW50RGVzY3JpcHRvci5yYW5nZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsRGVzY3JpcHRvcnMuc2V0KHBlZXJEZXNjcmlwdG9yLmRlc2NyaXB0b3JIYXNoLCBwZWVyRGVzY3JpcHRvcik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsUmVzb2x1dGlvbnMuc2V0KHBlZXJEZXNjcmlwdG9yLmRlc2NyaXB0b3JIYXNoLCBwYXJlbnRMb2NhdG9yLmxvY2F0b3JIYXNoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2xhdGlsZURlc2NyaXB0b3JzLmRlbGV0ZShwZWVyRGVzY3JpcHRvci5kZXNjcmlwdG9ySGFzaCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIHBlZXJSZXF1ZXN0IGlzbid0IHByb3ZpZGVkIGJ5IHRoZSBwYXJlbnQgdGhlbiBmYWxsIGJhY2sgdG8gZGVwZW5kZW5jaWVzXG4gICAgICAgICAgICAgICAgICAgIGlmICgoIXBlZXJEZXNjcmlwdG9yIHx8IHBlZXJEZXNjcmlwdG9yLnJhbmdlID09PSBgbWlzc2luZzpgKSAmJiB2aXJ0dWFsaXplZFBhY2thZ2UuZGVwZW5kZW5jaWVzLmhhcyhwZWVyUmVxdWVzdC5pZGVudEhhc2gpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2aXJ0dWFsaXplZFBhY2thZ2UucGVlckRlcGVuZGVuY2llcy5kZWxldGUocGVlclJlcXVlc3QuaWRlbnRIYXNoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmICghcGVlckRlc2NyaXB0b3IpXG4gICAgICAgICAgICAgICAgICAgICAgICBwZWVyRGVzY3JpcHRvciA9IHN0cnVjdFV0aWxzLm1ha2VEZXNjcmlwdG9yKHBlZXJSZXF1ZXN0LCBgbWlzc2luZzpgKTtcbiAgICAgICAgICAgICAgICAgICAgdmlydHVhbGl6ZWRQYWNrYWdlLmRlcGVuZGVuY2llcy5zZXQocGVlckRlc2NyaXB0b3IuaWRlbnRIYXNoLCBwZWVyRGVzY3JpcHRvcik7XG4gICAgICAgICAgICAgICAgICAgIC8vIE5lZWQgdG8gdHJhY2sgd2hlbiBhIHZpcnR1YWwgZGVzY3JpcHRvciBpcyBzZXQgYXMgYSBkZXBlbmRlbmN5IGluIGNhc2VcbiAgICAgICAgICAgICAgICAgICAgLy8gdGhlIGRlc2NyaXB0b3Igd2lsbCBiZSBjb25zb2xpZGF0ZWQuXG4gICAgICAgICAgICAgICAgICAgIGlmIChzdHJ1Y3RVdGlscy5pc1ZpcnR1YWxEZXNjcmlwdG9yKHBlZXJEZXNjcmlwdG9yKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZGVwZW5kZW50cyA9IG1pc2NVdGlscy5nZXRTZXRXaXRoRGVmYXVsdChhbGxWaXJ0dWFsRGVwZW5kZW50cywgcGVlckRlc2NyaXB0b3IuZGVzY3JpcHRvckhhc2gpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVwZW5kZW50cy5hZGQodmlydHVhbGl6ZWRQYWNrYWdlLmxvY2F0b3JIYXNoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBhbGxJZGVudHMuc2V0KHBlZXJEZXNjcmlwdG9yLmlkZW50SGFzaCwgcGVlckRlc2NyaXB0b3IpO1xuICAgICAgICAgICAgICAgICAgICBpZiAocGVlckRlc2NyaXB0b3IucmFuZ2UgPT09IGBtaXNzaW5nOmApXG4gICAgICAgICAgICAgICAgICAgICAgICBtaXNzaW5nUGVlckRlcGVuZGVuY2llcy5hZGQocGVlckRlc2NyaXB0b3IuaWRlbnRIYXNoKTtcbiAgICAgICAgICAgICAgICAgICAgbmV4dFBlZXJTbG90cy5zZXQocGVlclJlcXVlc3QuaWRlbnRIYXNoLCAoX2EgPSBwZWVyU2xvdHMuZ2V0KHBlZXJSZXF1ZXN0LmlkZW50SGFzaCkpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IHZpcnR1YWxpemVkUGFja2FnZS5sb2NhdG9ySGFzaCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIFNpbmNlIHdlJ3ZlIGhhZCB0byBhZGQgbmV3IGRlcGVuZGVuY2llcyB3ZSBuZWVkIHRvIHNvcnQgdGhlbSBhbGwgb3ZlciBhZ2FpblxuICAgICAgICAgICAgICAgIHZpcnR1YWxpemVkUGFja2FnZS5kZXBlbmRlbmNpZXMgPSBuZXcgTWFwKG1pc2NVdGlscy5zb3J0TWFwKHZpcnR1YWxpemVkUGFja2FnZS5kZXBlbmRlbmNpZXMsIChbaWRlbnRIYXNoLCBkZXNjcmlwdG9yXSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3RydWN0VXRpbHMuc3RyaW5naWZ5SWRlbnQoZGVzY3JpcHRvcik7XG4gICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlyZFBhc3MucHVzaCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFhbGxQYWNrYWdlcy5oYXModmlydHVhbGl6ZWRQYWNrYWdlLmxvY2F0b3JIYXNoKSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIC8vIFRoZSBzdGFjayBvdmVyZmxvdyBpcyBjaGVja2VkIGFnYWluc3QgdHdvIGxldmVsIGJlY2F1c2UgYSB3b3Jrc3BhY2VcbiAgICAgICAgICAgICAgICAvLyBtYXkgaGF2ZSBhIGRldiBkZXBlbmRlbmN5IG9uIGFub3RoZXIgd29ya3NwYWNlIHRoYXQgbGlzdHMgdGhlIGZpcnN0XG4gICAgICAgICAgICAgICAgLy8gb25lIGFzIGEgcmVndWxhciBkZXBlbmRlbmN5LiBJbiB0aGlzIGNhc2UgdGhlIGxvb3Agd2lsbCBicmVhayBzbyB3ZVxuICAgICAgICAgICAgICAgIC8vIGRvbid0IG5lZWQgdG8gdGhyb3cgYW4gZXhjZXB0aW9uLlxuICAgICAgICAgICAgICAgIGNvbnN0IHN0YWNrRGVwdGggPSB2aXJ0dWFsU3RhY2suZ2V0KHBrZy5sb2NhdG9ySGFzaCk7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBzdGFja0RlcHRoID09PSBgbnVtYmVyYCAmJiBzdGFja0RlcHRoID49IDIpXG4gICAgICAgICAgICAgICAgICAgIHJlcG9ydFN0YWNrT3ZlcmZsb3coKTtcbiAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50ID0gdmlydHVhbFN0YWNrLmdldChwa2cubG9jYXRvckhhc2gpO1xuICAgICAgICAgICAgICAgIGNvbnN0IG5leHQgPSB0eXBlb2YgY3VycmVudCAhPT0gYHVuZGVmaW5lZGAgPyBjdXJyZW50ICsgMSA6IDE7XG4gICAgICAgICAgICAgICAgdmlydHVhbFN0YWNrLnNldChwa2cubG9jYXRvckhhc2gsIG5leHQpO1xuICAgICAgICAgICAgICAgIHJlc29sdmVQZWVyRGVwZW5kZW5jaWVzKHZpcnR1YWxpemVkRGVzY3JpcHRvciwgdmlydHVhbGl6ZWRQYWNrYWdlLCBuZXh0UGVlclNsb3RzLCB7IHRvcCwgb3B0aW9uYWw6IGlzT3B0aW9uYWwgfSk7XG4gICAgICAgICAgICAgICAgdmlydHVhbFN0YWNrLnNldChwa2cubG9jYXRvckhhc2gsIG5leHQgLSAxKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgZm91cnRoUGFzcy5wdXNoKCgpID0+IHtcbiAgICAgICAgICAgICAgICAvLyBSZWdhcmRsZXNzIG9mIHdoZXRoZXIgdGhlIGluaXRpYWwgdmlydHVhbGl6ZWQgcGFja2FnZSBnb3QgZGVkdXBlZFxuICAgICAgICAgICAgICAgIC8vIG9yIG5vdCwgd2Ugbm93IHJlZ2lzdGVyIHRoYXQgKnRoaXMqIHBhY2thZ2UgaXMgbm93IGEgZGVwZW5kZW50IG9uXG4gICAgICAgICAgICAgICAgLy8gd2hhdGV2ZXIgaXRzIHBlZXIgZGVwZW5kZW5jaWVzIGhhdmUgYmVlbiByZXNvbHZlZCB0by4gV2UnbGwgbGF0ZXJcbiAgICAgICAgICAgICAgICAvLyB1c2UgdGhpcyBpbmZvcm1hdGlvbiB0byBnZW5lcmF0ZSB3YXJuaW5ncy5cbiAgICAgICAgICAgICAgICBjb25zdCBmaW5hbERlc2NyaXB0b3IgPSBwYXJlbnRQYWNrYWdlLmRlcGVuZGVuY2llcy5nZXQoZGVzY3JpcHRvci5pZGVudEhhc2gpO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgZmluYWxEZXNjcmlwdG9yID09PSBgdW5kZWZpbmVkYClcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBBc3NlcnRpb24gZmFpbGVkOiBFeHBlY3RlZCB0aGUgcGVlciBkZXBlbmRlbmN5IHRvIGhhdmUgYmVlbiB0dXJuZWQgaW50byBhIGRlcGVuZGVuY3lgKTtcbiAgICAgICAgICAgICAgICBjb25zdCBmaW5hbFJlc29sdXRpb24gPSBhbGxSZXNvbHV0aW9ucy5nZXQoZmluYWxEZXNjcmlwdG9yLmRlc2NyaXB0b3JIYXNoKTtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGZpbmFsUmVzb2x1dGlvbiA9PT0gYHVuZGVmaW5lZGApXG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQXNzZXJ0aW9uIGZhaWxlZDogRXhwZWN0ZWQgdGhlIGRlc2NyaXB0b3IgdG8gYmUgcmVnaXN0ZXJlZGApO1xuICAgICAgICAgICAgICAgIG1pc2NVdGlscy5nZXRTZXRXaXRoRGVmYXVsdChwZWVyRGVwZW5kZW5jeURlcGVuZGVudHMsIGZpbmFsUmVzb2x1dGlvbikuYWRkKHBhcmVudExvY2F0b3IubG9jYXRvckhhc2gpO1xuICAgICAgICAgICAgICAgIGlmICghYWxsUGFja2FnZXMuaGFzKHZpcnR1YWxpemVkUGFja2FnZS5sb2NhdG9ySGFzaCkpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGRlc2NyaXB0b3Igb2YgdmlydHVhbGl6ZWRQYWNrYWdlLnBlZXJEZXBlbmRlbmNpZXMudmFsdWVzKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgcm9vdCA9IG5leHRQZWVyU2xvdHMuZ2V0KGRlc2NyaXB0b3IuaWRlbnRIYXNoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiByb290ID09PSBgdW5kZWZpbmVkYClcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQXNzZXJ0aW9uIGZhaWxlZDogRXhwZWN0ZWQgdGhlIHBlZXIgZGVwZW5kZW5jeSBpZGVudCB0byBiZSByZWdpc3RlcmVkYCk7XG4gICAgICAgICAgICAgICAgICAgIG1pc2NVdGlscy5nZXRBcnJheVdpdGhEZWZhdWx0KG1pc2NVdGlscy5nZXRNYXBXaXRoRGVmYXVsdChwZWVyRGVwZW5kZW5jeUxpbmtzLCByb290KSwgc3RydWN0VXRpbHMuc3RyaW5naWZ5SWRlbnQoZGVzY3JpcHRvcikpLnB1c2godmlydHVhbGl6ZWRQYWNrYWdlLmxvY2F0b3JIYXNoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBtaXNzaW5nUGVlckRlcGVuZGVuY3kgb2YgbWlzc2luZ1BlZXJEZXBlbmRlbmNpZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgdmlydHVhbGl6ZWRQYWNrYWdlLmRlcGVuZGVuY2llcy5kZWxldGUobWlzc2luZ1BlZXJEZXBlbmRlbmN5KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGNvbnN0IGZuIG9mIFsuLi5maXJzdFBhc3MsIC4uLnNlY29uZFBhc3NdKVxuICAgICAgICAgICAgZm4oKTtcbiAgICAgICAgbGV0IHN0YWJsZTtcbiAgICAgICAgZG8ge1xuICAgICAgICAgICAgc3RhYmxlID0gdHJ1ZTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgW3BoeXNpY2FsTG9jYXRvciwgdmlydHVhbERlc2NyaXB0b3IsIHZpcnR1YWxQYWNrYWdlXSBvZiBuZXdWaXJ0dWFsSW5zdGFuY2VzKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgb3RoZXJWaXJ0dWFsSW5zdGFuY2VzID0gbWlzY1V0aWxzLmdldE1hcFdpdGhEZWZhdWx0KGFsbFZpcnR1YWxJbnN0YW5jZXMsIHBoeXNpY2FsTG9jYXRvci5sb2NhdG9ySGFzaCk7XG4gICAgICAgICAgICAgICAgLy8gV2UgdGFrZSBhbGwgdGhlIGRlcGVuZGVuY2llcyBmcm9tIHRoZSBuZXcgdmlydHVhbCBpbnN0YW5jZSBhbmRcbiAgICAgICAgICAgICAgICAvLyBnZW5lcmF0ZSBhIGhhc2ggZnJvbSBpdC4gQnkgY2hlY2tpbmcgaWYgdGhpcyBoYXNoIGlzIGFscmVhZHlcbiAgICAgICAgICAgICAgICAvLyByZWdpc3RlcmVkLCB3ZSBrbm93IHdoZXRoZXIgd2UgY2FuIHRyaW0gdGhlIG5ldyB2ZXJzaW9uLlxuICAgICAgICAgICAgICAgIGNvbnN0IGRlcGVuZGVuY3lIYXNoID0gaGFzaFV0aWxzLm1ha2VIYXNoKC4uLlsuLi52aXJ0dWFsUGFja2FnZS5kZXBlbmRlbmNpZXMudmFsdWVzKCldLm1hcChkZXNjcmlwdG9yID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzb2x1dGlvbiA9IGRlc2NyaXB0b3IucmFuZ2UgIT09IGBtaXNzaW5nOmBcbiAgICAgICAgICAgICAgICAgICAgICAgID8gYWxsUmVzb2x1dGlvbnMuZ2V0KGRlc2NyaXB0b3IuZGVzY3JpcHRvckhhc2gpXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGBtaXNzaW5nOmA7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgcmVzb2x1dGlvbiA9PT0gYHVuZGVmaW5lZGApXG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEFzc2VydGlvbiBmYWlsZWQ6IEV4cGVjdGVkIHRoZSByZXNvbHV0aW9uIGZvciAke3N0cnVjdFV0aWxzLnByZXR0eURlc2NyaXB0b3IocHJvamVjdC5jb25maWd1cmF0aW9uLCBkZXNjcmlwdG9yKX0gdG8gaGF2ZSBiZWVuIHJlZ2lzdGVyZWRgKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdXRpb24gPT09IHRvcCA/IGAke3Jlc29sdXRpb259ICh0b3ApYCA6IHJlc29sdXRpb247XG4gICAgICAgICAgICAgICAgfSksIFxuICAgICAgICAgICAgICAgIC8vIFdlIHVzZSB0aGUgaWRlbnRIYXNoIHRvIGRpc2FtYmlndWF0ZSBiZXR3ZWVuIHZpcnR1YWwgZGVzY3JpcHRvcnNcbiAgICAgICAgICAgICAgICAvLyB3aXRoIGRpZmZlcmVudCBiYXNlIGlkZW50cyBiZWluZyByZXNvbHZlZCB0byB0aGUgc2FtZSB2aXJ0dWFsIHBhY2thZ2UuXG4gICAgICAgICAgICAgICAgLy8gTm90ZTogV2UgZG9uJ3QgdXNlIHRoZSBkZXNjcmlwdG9ySGFzaCBiZWNhdXNlIHRoZSB3aG9sZSBwb2ludCBvZiBkdXBsaWNhdGVcbiAgICAgICAgICAgICAgICAvLyB2aXJ0dWFsIGRlc2NyaXB0b3JzIGlzIHRoYXQgdGhleSBoYXZlIGRpZmZlcmVudCBgdmlydHVhbDpgIHJhbmdlcy5cbiAgICAgICAgICAgICAgICAvLyBUaGlzIGNhdXNlcyB0aGUgdmlydHVhbCBkZXNjcmlwdG9ycyB3aXRoIGRpZmZlcmVudCBiYXNlIGlkZW50c1xuICAgICAgICAgICAgICAgIC8vIHRvIGJlIHByZXNlcnZlZCwgd2hpbGUgdGhlIHZpcnR1YWwgcGFja2FnZSB0aGV5IHJlc29sdmUgdG8gZ2V0cyBkZWR1cGVkLlxuICAgICAgICAgICAgICAgIHZpcnR1YWxEZXNjcmlwdG9yLmlkZW50SGFzaCk7XG4gICAgICAgICAgICAgICAgY29uc3QgbWFzdGVyRGVzY3JpcHRvciA9IG90aGVyVmlydHVhbEluc3RhbmNlcy5nZXQoZGVwZW5kZW5jeUhhc2gpO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgbWFzdGVyRGVzY3JpcHRvciA9PT0gYHVuZGVmaW5lZGApIHtcbiAgICAgICAgICAgICAgICAgICAgb3RoZXJWaXJ0dWFsSW5zdGFuY2VzLnNldChkZXBlbmRlbmN5SGFzaCwgdmlydHVhbERlc2NyaXB0b3IpO1xuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gU2luY2Ugd2UncmUgYXBwbHlpbmcgbXVsdGlwbGUgcGFzcywgd2UgbWlnaHQgaGF2ZSBhbHJlYWR5IHJlZ2lzdGVyZWRcbiAgICAgICAgICAgICAgICAvLyBvdXJzZWx2ZXMgYXMgdGhlIFwibWFzdGVyXCIgZGVzY3JpcHRvciBpbiB0aGUgcHJldmlvdXMgcGFzcy5cbiAgICAgICAgICAgICAgICBpZiAobWFzdGVyRGVzY3JpcHRvciA9PT0gdmlydHVhbERlc2NyaXB0b3IpXG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGFsbFBhY2thZ2VzLmRlbGV0ZSh2aXJ0dWFsUGFja2FnZS5sb2NhdG9ySGFzaCk7XG4gICAgICAgICAgICAgICAgYWxsRGVzY3JpcHRvcnMuZGVsZXRlKHZpcnR1YWxEZXNjcmlwdG9yLmRlc2NyaXB0b3JIYXNoKTtcbiAgICAgICAgICAgICAgICBhbGxSZXNvbHV0aW9ucy5kZWxldGUodmlydHVhbERlc2NyaXB0b3IuZGVzY3JpcHRvckhhc2gpO1xuICAgICAgICAgICAgICAgIGFjY2Vzc2libGVMb2NhdG9ycy5kZWxldGUodmlydHVhbFBhY2thZ2UubG9jYXRvckhhc2gpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGRlcGVuZGVudHMgPSBhbGxWaXJ0dWFsRGVwZW5kZW50cy5nZXQodmlydHVhbERlc2NyaXB0b3IuZGVzY3JpcHRvckhhc2gpIHx8IFtdO1xuICAgICAgICAgICAgICAgIGNvbnN0IGFsbERlcGVuZGVudHMgPSBbcGFyZW50UGFja2FnZS5sb2NhdG9ySGFzaCwgLi4uZGVwZW5kZW50c107XG4gICAgICAgICAgICAgICAgYWxsVmlydHVhbERlcGVuZGVudHMuZGVsZXRlKHZpcnR1YWxEZXNjcmlwdG9yLmRlc2NyaXB0b3JIYXNoKTtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGRlcGVuZGVudCBvZiBhbGxEZXBlbmRlbnRzKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBrZyA9IGFsbFBhY2thZ2VzLmdldChkZXBlbmRlbnQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHBrZyA9PT0gYHVuZGVmaW5lZGApXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBrZy5kZXBlbmRlbmNpZXMuZ2V0KHZpcnR1YWxEZXNjcmlwdG9yLmlkZW50SGFzaCkuZGVzY3JpcHRvckhhc2ggIT09IG1hc3RlckRlc2NyaXB0b3IuZGVzY3JpcHRvckhhc2gpXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFibGUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgcGtnLmRlcGVuZGVuY2llcy5zZXQodmlydHVhbERlc2NyaXB0b3IuaWRlbnRIYXNoLCBtYXN0ZXJEZXNjcmlwdG9yKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gd2hpbGUgKCFzdGFibGUpO1xuICAgICAgICBmb3IgKGNvbnN0IGZuIG9mIFsuLi50aGlyZFBhc3MsIC4uLmZvdXJ0aFBhc3NdKSB7XG4gICAgICAgICAgICBmbigpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBmb3IgKGNvbnN0IHdvcmtzcGFjZSBvZiBwcm9qZWN0LndvcmtzcGFjZXMpIHtcbiAgICAgICAgY29uc3QgbG9jYXRvciA9IHdvcmtzcGFjZS5hbmNob3JlZExvY2F0b3I7XG4gICAgICAgIHZvbGF0aWxlRGVzY3JpcHRvcnMuZGVsZXRlKHdvcmtzcGFjZS5hbmNob3JlZERlc2NyaXB0b3IuZGVzY3JpcHRvckhhc2gpO1xuICAgICAgICByZXNvbHZlUGVlckRlcGVuZGVuY2llcyh3b3Jrc3BhY2UuYW5jaG9yZWREZXNjcmlwdG9yLCBsb2NhdG9yLCBuZXcgTWFwKCksIHsgdG9wOiBsb2NhdG9yLmxvY2F0b3JIYXNoLCBvcHRpb25hbDogZmFsc2UgfSk7XG4gICAgfVxuICAgIGxldCBXYXJuaW5nVHlwZTtcbiAgICAoZnVuY3Rpb24gKFdhcm5pbmdUeXBlKSB7XG4gICAgICAgIFdhcm5pbmdUeXBlW1dhcm5pbmdUeXBlW1wiTm90UHJvdmlkZWRcIl0gPSAwXSA9IFwiTm90UHJvdmlkZWRcIjtcbiAgICAgICAgV2FybmluZ1R5cGVbV2FybmluZ1R5cGVbXCJOb3RDb21wYXRpYmxlXCJdID0gMV0gPSBcIk5vdENvbXBhdGlibGVcIjtcbiAgICB9KShXYXJuaW5nVHlwZSB8fCAoV2FybmluZ1R5cGUgPSB7fSkpO1xuICAgIGNvbnN0IHdhcm5pbmdzID0gW107XG4gICAgZm9yIChjb25zdCBbcm9vdEhhc2gsIGRlcGVuZGVudHNdIG9mIHBlZXJEZXBlbmRlbmN5RGVwZW5kZW50cykge1xuICAgICAgICBjb25zdCByb290ID0gYWxsUGFja2FnZXMuZ2V0KHJvb3RIYXNoKTtcbiAgICAgICAgaWYgKHR5cGVvZiByb290ID09PSBgdW5kZWZpbmVkYClcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQXNzZXJ0aW9uIGZhaWxlZDogRXhwZWN0ZWQgdGhlIHJvb3QgdG8gYmUgcmVnaXN0ZXJlZGApO1xuICAgICAgICAvLyBXZSByZXRyaWV2ZSB0aGUgc2V0IG9mIHBhY2thZ2VzIHRoYXQgcHJvdmlkZSBjb21wbGVtZW50YXJ5IHBlZXJcbiAgICAgICAgLy8gZGVwZW5kZW5jaWVzIHRvIHRoZSBvbmUgYWxyZWFkeSBvZmZlcmVkIGJ5IG91ciByb290IHBhY2thZ2UsIGFuZCB0b1xuICAgICAgICAvLyB3aG9tIG90aGVyIHBhY2thZ2UuXG4gICAgICAgIC8vXG4gICAgICAgIC8vIFdlIHNpbXBseSBza2lwIGlmIHRoZSByZWNvcmQgZG9lc24ndCBleGlzdCBiZWNhdXNlIGEgcGFja2FnZSBtYXkgbm90XG4gICAgICAgIC8vIGhhdmUgYW55IHJlY29yZHMgaWYgaXQgZGlkbid0IGNvbnRyaWJ1dGUgYW55IG5ldyBwZWVyIChpdCBvbmx5IGV4aXN0c1xuICAgICAgICAvLyBpZiB0aGUgcGFja2FnZSBoYXMgYXQgbGVhc3Qgb25lIHBlZXIgdGhhdCBpc24ndCBsaXN0ZWQgYnkgaXRzIHBhcmVudFxuICAgICAgICAvLyBwYWNrYWdlcykuXG4gICAgICAgIC8vXG4gICAgICAgIGNvbnN0IHJvb3RMaW5rcyA9IHBlZXJEZXBlbmRlbmN5TGlua3MuZ2V0KHJvb3RIYXNoKTtcbiAgICAgICAgaWYgKHR5cGVvZiByb290TGlua3MgPT09IGB1bmRlZmluZWRgKVxuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIGZvciAoY29uc3QgZGVwZW5kZW50SGFzaCBvZiBkZXBlbmRlbnRzKSB7XG4gICAgICAgICAgICBjb25zdCBkZXBlbmRlbnQgPSBhbGxQYWNrYWdlcy5nZXQoZGVwZW5kZW50SGFzaCk7XG4gICAgICAgICAgICAvLyBUaGUgcGFja2FnZSBtYXkgaGF2ZSBiZWVuIHBydW5lZCBkdXJpbmcgYSBkZWR1cGxpY2F0aW9uXG4gICAgICAgICAgICBpZiAodHlwZW9mIGRlcGVuZGVudCA9PT0gYHVuZGVmaW5lZGApXG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IFtpZGVudFN0ciwgbGlua0hhc2hlc10gb2Ygcm9vdExpbmtzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaWRlbnQgPSBzdHJ1Y3RVdGlscy5wYXJzZUlkZW50KGlkZW50U3RyKTtcbiAgICAgICAgICAgICAgICAvLyBUaGlzIGRlcGVuZGVudCBtYXkgaGF2ZSBhIHBlZXIgZGVwIGl0c2VsZiwgaW4gd2hpY2ggY2FzZSBpdCdzIG5vdFxuICAgICAgICAgICAgICAgIC8vIHRoZSB0cnVlIHJvb3QsIGFuZCB3ZSBjYW4gaWdub3JlIGl0XG4gICAgICAgICAgICAgICAgaWYgKGRlcGVuZGVudC5wZWVyRGVwZW5kZW5jaWVzLmhhcyhpZGVudC5pZGVudEhhc2gpKVxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBjb25zdCBoYXNoID0gYHAke2hhc2hVdGlscy5tYWtlSGFzaChkZXBlbmRlbnRIYXNoLCBpZGVudFN0ciwgcm9vdEhhc2gpLnNsaWNlKDAsIDUpfWA7XG4gICAgICAgICAgICAgICAgcGVlclJlcXVpcmVtZW50cy5zZXQoaGFzaCwge1xuICAgICAgICAgICAgICAgICAgICBzdWJqZWN0OiBkZXBlbmRlbnRIYXNoLFxuICAgICAgICAgICAgICAgICAgICByZXF1ZXN0ZWQ6IGlkZW50LFxuICAgICAgICAgICAgICAgICAgICByb290UmVxdWVzdGVyOiByb290SGFzaCxcbiAgICAgICAgICAgICAgICAgICAgYWxsUmVxdWVzdGVyczogbGlua0hhc2hlcyxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAvLyBOb3RlOiB0aGlzIGNhbiBiZSB1bmRlZmluZWQgd2hlbiB0aGUgcGVlciBkZXBlbmRlbmN5IGlzbid0IHByb3ZpZGVkIGF0IGFsbFxuICAgICAgICAgICAgICAgIGNvbnN0IHJlc29sdmVkRGVzY3JpcHRvciA9IHJvb3QuZGVwZW5kZW5jaWVzLmdldChpZGVudC5pZGVudEhhc2gpO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgcmVzb2x2ZWREZXNjcmlwdG9yICE9PSBgdW5kZWZpbmVkYCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwZWVyUmVzb2x1dGlvbiA9IGdldFBhY2thZ2VGcm9tRGVzY3JpcHRvcihyZXNvbHZlZERlc2NyaXB0b3IpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwZWVyVmVyc2lvbiA9IChfYSA9IHBlZXJSZXNvbHV0aW9uLnZlcnNpb24pICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IGAwLjAuMGA7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJhbmdlcyA9IG5ldyBTZXQoKTtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBsaW5rSGFzaCBvZiBsaW5rSGFzaGVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsaW5rID0gYWxsUGFja2FnZXMuZ2V0KGxpbmtIYXNoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgbGluayA9PT0gYHVuZGVmaW5lZGApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBBc3NlcnRpb24gZmFpbGVkOiBFeHBlY3RlZCB0aGUgbGluayB0byBiZSByZWdpc3RlcmVkYCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwZWVyRGVwZW5kZW5jeSA9IGxpbmsucGVlckRlcGVuZGVuY2llcy5nZXQoaWRlbnQuaWRlbnRIYXNoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgcGVlckRlcGVuZGVuY3kgPT09IGB1bmRlZmluZWRgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQXNzZXJ0aW9uIGZhaWxlZDogRXhwZWN0ZWQgdGhlIGlkZW50IHRvIGJlIHJlZ2lzdGVyZWRgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJhbmdlcy5hZGQocGVlckRlcGVuZGVuY3kucmFuZ2UpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNhdGlzZmllc0FsbCA9IFsuLi5yYW5nZXNdLmV2ZXJ5KHJhbmdlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyYW5nZS5zdGFydHNXaXRoKFdvcmtzcGFjZVJlc29sdmVyXzEuV29ya3NwYWNlUmVzb2x2ZXIucHJvdG9jb2wpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwcm9qZWN0LnRyeVdvcmtzcGFjZUJ5TG9jYXRvcihwZWVyUmVzb2x1dGlvbikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByYW5nZSA9IHJhbmdlLnNsaWNlKFdvcmtzcGFjZVJlc29sdmVyXzEuV29ya3NwYWNlUmVzb2x2ZXIucHJvdG9jb2wubGVuZ3RoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmFuZ2UgPT09IGBeYCB8fCByYW5nZSA9PT0gYH5gKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhbmdlID0gYCpgO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZW12ZXJVdGlscy5zYXRpc2ZpZXNXaXRoUHJlcmVsZWFzZXMocGVlclZlcnNpb24sIHJhbmdlKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghc2F0aXNmaWVzQWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB3YXJuaW5ncy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBXYXJuaW5nVHlwZS5Ob3RDb21wYXRpYmxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YmplY3Q6IGRlcGVuZGVudCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0ZWQ6IGlkZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Rlcjogcm9vdCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uOiBwZWVyVmVyc2lvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVtZW50Q291bnQ6IGxpbmtIYXNoZXMubGVuZ3RoLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBlZXJEZXBlbmRlbmN5TWV0YSA9IHJvb3QucGVlckRlcGVuZGVuY2llc01ldGEuZ2V0KGlkZW50U3RyKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEocGVlckRlcGVuZGVuY3lNZXRhID09PSBudWxsIHx8IHBlZXJEZXBlbmRlbmN5TWV0YSA9PT0gdm9pZCAwID8gdm9pZCAwIDogcGVlckRlcGVuZGVuY3lNZXRhLm9wdGlvbmFsKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgd2FybmluZ3MucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogV2FybmluZ1R5cGUuTm90UHJvdmlkZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViamVjdDogZGVwZW5kZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RlZDogaWRlbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdGVyOiByb290LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc2gsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBjb25zdCB3YXJuaW5nU29ydENyaXRlcmlhcyA9IFtcbiAgICAgICAgd2FybmluZyA9PiBzdHJ1Y3RVdGlscy5wcmV0dHlMb2NhdG9yTm9Db2xvcnMod2FybmluZy5zdWJqZWN0KSxcbiAgICAgICAgd2FybmluZyA9PiBzdHJ1Y3RVdGlscy5zdHJpbmdpZnlJZGVudCh3YXJuaW5nLnJlcXVlc3RlZCksXG4gICAgICAgIHdhcm5pbmcgPT4gYCR7d2FybmluZy50eXBlfWAsXG4gICAgXTtcbiAgICByZXBvcnQgPT09IG51bGwgfHwgcmVwb3J0ID09PSB2b2lkIDAgPyB2b2lkIDAgOiByZXBvcnQuc3RhcnRTZWN0aW9uU3luYyh7XG4gICAgICAgIHJlcG9ydEZvb3RlcjogKCkgPT4ge1xuICAgICAgICAgICAgcmVwb3J0LnJlcG9ydFdhcm5pbmcoTWVzc2FnZU5hbWVfMS5NZXNzYWdlTmFtZS5VTk5BTUVELCBgU29tZSBwZWVyIGRlcGVuZGVuY2llcyBhcmUgaW5jb3JyZWN0bHkgbWV0OyBydW4gJHtmb3JtYXRVdGlscy5wcmV0dHkocHJvamVjdC5jb25maWd1cmF0aW9uLCBgeWFybiBleHBsYWluIHBlZXItcmVxdWlyZW1lbnRzIDxoYXNoPmAsIGZvcm1hdFV0aWxzLlR5cGUuQ09ERSl9IGZvciBkZXRhaWxzLCB3aGVyZSAke2Zvcm1hdFV0aWxzLnByZXR0eShwcm9qZWN0LmNvbmZpZ3VyYXRpb24sIGA8aGFzaD5gLCBmb3JtYXRVdGlscy5UeXBlLkNPREUpfSBpcyB0aGUgc2l4LWxldHRlciBwLXByZWZpeGVkIGNvZGVgKTtcbiAgICAgICAgfSxcbiAgICAgICAgc2tpcElmRW1wdHk6IHRydWUsXG4gICAgfSwgKCkgPT4ge1xuICAgICAgICBmb3IgKGNvbnN0IHdhcm5pbmcgb2YgbWlzY1V0aWxzLnNvcnRNYXAod2FybmluZ3MsIHdhcm5pbmdTb3J0Q3JpdGVyaWFzKSkge1xuICAgICAgICAgICAgc3dpdGNoICh3YXJuaW5nLnR5cGUpIHtcbiAgICAgICAgICAgICAgICBjYXNlIFdhcm5pbmdUeXBlLk5vdFByb3ZpZGVkOlxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXBvcnQucmVwb3J0V2FybmluZyhNZXNzYWdlTmFtZV8xLk1lc3NhZ2VOYW1lLk1JU1NJTkdfUEVFUl9ERVBFTkRFTkNZLCBgJHtzdHJ1Y3RVdGlscy5wcmV0dHlMb2NhdG9yKHByb2plY3QuY29uZmlndXJhdGlvbiwgd2FybmluZy5zdWJqZWN0KX0gZG9lc24ndCBwcm92aWRlICR7c3RydWN0VXRpbHMucHJldHR5SWRlbnQocHJvamVjdC5jb25maWd1cmF0aW9uLCB3YXJuaW5nLnJlcXVlc3RlZCl9ICgke2Zvcm1hdFV0aWxzLnByZXR0eShwcm9qZWN0LmNvbmZpZ3VyYXRpb24sIHdhcm5pbmcuaGFzaCwgZm9ybWF0VXRpbHMuVHlwZS5DT0RFKX0pLCByZXF1ZXN0ZWQgYnkgJHtzdHJ1Y3RVdGlscy5wcmV0dHlJZGVudChwcm9qZWN0LmNvbmZpZ3VyYXRpb24sIHdhcm5pbmcucmVxdWVzdGVyKX1gKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIFdhcm5pbmdUeXBlLk5vdENvbXBhdGlibGU6XG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGFuZERlc2NlbmRhbnRzID0gd2FybmluZy5yZXF1aXJlbWVudENvdW50ID4gMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gYGFuZCBzb21lIG9mIGl0cyBkZXNjZW5kYW50cyByZXF1ZXN0YFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogYHJlcXVlc3RzYDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcG9ydC5yZXBvcnRXYXJuaW5nKE1lc3NhZ2VOYW1lXzEuTWVzc2FnZU5hbWUuSU5DT01QQVRJQkxFX1BFRVJfREVQRU5ERU5DWSwgYCR7c3RydWN0VXRpbHMucHJldHR5TG9jYXRvcihwcm9qZWN0LmNvbmZpZ3VyYXRpb24sIHdhcm5pbmcuc3ViamVjdCl9IHByb3ZpZGVzICR7c3RydWN0VXRpbHMucHJldHR5SWRlbnQocHJvamVjdC5jb25maWd1cmF0aW9uLCB3YXJuaW5nLnJlcXVlc3RlZCl9ICgke2Zvcm1hdFV0aWxzLnByZXR0eShwcm9qZWN0LmNvbmZpZ3VyYXRpb24sIHdhcm5pbmcuaGFzaCwgZm9ybWF0VXRpbHMuVHlwZS5DT0RFKX0pIHdpdGggdmVyc2lvbiAke3N0cnVjdFV0aWxzLnByZXR0eVJlZmVyZW5jZShwcm9qZWN0LmNvbmZpZ3VyYXRpb24sIHdhcm5pbmcudmVyc2lvbil9LCB3aGljaCBkb2Vzbid0IHNhdGlzZnkgd2hhdCAke3N0cnVjdFV0aWxzLnByZXR0eUlkZW50KHByb2plY3QuY29uZmlndXJhdGlvbiwgd2FybmluZy5yZXF1ZXN0ZXIpfSAke2FuZERlc2NlbmRhbnRzfWApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSk7XG59XG4iLCAiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLlRlbGVtZXRyeU1hbmFnZXIgPSBleHBvcnRzLk1ldHJpY05hbWUgPSB2b2lkIDA7XG5jb25zdCB0c2xpYl8xID0gcmVxdWlyZShcInRzbGliXCIpO1xuY29uc3QgZnNsaWJfMSA9IHJlcXVpcmUoXCJAeWFybnBrZy9mc2xpYlwiKTtcbmNvbnN0IGhhc2hVdGlscyA9IHRzbGliXzEuX19pbXBvcnRTdGFyKHJlcXVpcmUoXCIuL2hhc2hVdGlsc1wiKSk7XG5jb25zdCBodHRwVXRpbHMgPSB0c2xpYl8xLl9faW1wb3J0U3RhcihyZXF1aXJlKFwiLi9odHRwVXRpbHNcIikpO1xuY29uc3QgbWlzY1V0aWxzID0gdHNsaWJfMS5fX2ltcG9ydFN0YXIocmVxdWlyZShcIi4vbWlzY1V0aWxzXCIpKTtcbnZhciBNZXRyaWNOYW1lO1xuKGZ1bmN0aW9uIChNZXRyaWNOYW1lKSB7XG4gICAgTWV0cmljTmFtZVtcIlZFUlNJT05cIl0gPSBcInZlcnNpb25cIjtcbiAgICBNZXRyaWNOYW1lW1wiQ09NTUFORF9OQU1FXCJdID0gXCJjb21tYW5kTmFtZVwiO1xuICAgIE1ldHJpY05hbWVbXCJQTFVHSU5fTkFNRVwiXSA9IFwicGx1Z2luTmFtZVwiO1xuICAgIE1ldHJpY05hbWVbXCJJTlNUQUxMX0NPVU5UXCJdID0gXCJpbnN0YWxsQ291bnRcIjtcbiAgICBNZXRyaWNOYW1lW1wiUFJPSkVDVF9DT1VOVFwiXSA9IFwicHJvamVjdENvdW50XCI7XG4gICAgTWV0cmljTmFtZVtcIldPUktTUEFDRV9DT1VOVFwiXSA9IFwid29ya3NwYWNlQ291bnRcIjtcbiAgICBNZXRyaWNOYW1lW1wiREVQRU5ERU5DWV9DT1VOVFwiXSA9IFwiZGVwZW5kZW5jeUNvdW50XCI7XG4gICAgTWV0cmljTmFtZVtcIkVYVEVOU0lPTlwiXSA9IFwicGFja2FnZUV4dGVuc2lvblwiO1xufSkoTWV0cmljTmFtZSA9IGV4cG9ydHMuTWV0cmljTmFtZSB8fCAoZXhwb3J0cy5NZXRyaWNOYW1lID0ge30pKTtcbmNsYXNzIFRlbGVtZXRyeU1hbmFnZXIge1xuICAgIGNvbnN0cnVjdG9yKGNvbmZpZ3VyYXRpb24sIGFjY291bnRJZCkge1xuICAgICAgICB0aGlzLnZhbHVlcyA9IG5ldyBNYXAoKTtcbiAgICAgICAgdGhpcy5oaXRzID0gbmV3IE1hcCgpO1xuICAgICAgICB0aGlzLmVudW1lcmF0b3JzID0gbmV3IE1hcCgpO1xuICAgICAgICB0aGlzLmNvbmZpZ3VyYXRpb24gPSBjb25maWd1cmF0aW9uO1xuICAgICAgICBjb25zdCByZWdpc3RyeUZpbGUgPSB0aGlzLmdldFJlZ2lzdHJ5UGF0aCgpO1xuICAgICAgICB0aGlzLmlzTmV3ID0gIWZzbGliXzEueGZzLmV4aXN0c1N5bmMocmVnaXN0cnlGaWxlKTtcbiAgICAgICAgdGhpcy5zZW5kUmVwb3J0KGFjY291bnRJZCk7XG4gICAgICAgIHRoaXMuc3RhcnRCdWZmZXIoKTtcbiAgICB9XG4gICAgcmVwb3J0VmVyc2lvbih2YWx1ZSkge1xuICAgICAgICAvLyBXZSBkb24ndCByZWFsbHkgY2FyZSBhYm91dCB0aGUgZXhhY3QgY29tbWl0IHRoZXkncmUgdXNpbmdcbiAgICAgICAgdGhpcy5yZXBvcnRWYWx1ZShNZXRyaWNOYW1lLlZFUlNJT04sIHZhbHVlLnJlcGxhY2UoLy1naXRcXC4uKi8sIGAtZ2l0YCkpO1xuICAgIH1cbiAgICByZXBvcnRDb21tYW5kTmFtZSh2YWx1ZSkge1xuICAgICAgICB0aGlzLnJlcG9ydFZhbHVlKE1ldHJpY05hbWUuQ09NTUFORF9OQU1FLCB2YWx1ZSB8fCBgPG5vbmU+YCk7XG4gICAgfVxuICAgIHJlcG9ydFBsdWdpbk5hbWUodmFsdWUpIHtcbiAgICAgICAgdGhpcy5yZXBvcnRWYWx1ZShNZXRyaWNOYW1lLlBMVUdJTl9OQU1FLCB2YWx1ZSk7XG4gICAgfVxuICAgIHJlcG9ydFByb2plY3QoY3dkKSB7XG4gICAgICAgIHRoaXMucmVwb3J0RW51bWVyYXRvcihNZXRyaWNOYW1lLlBST0pFQ1RfQ09VTlQsIGN3ZCk7XG4gICAgfVxuICAgIHJlcG9ydEluc3RhbGwobm9kZUxpbmtlcikge1xuICAgICAgICB0aGlzLnJlcG9ydEhpdChNZXRyaWNOYW1lLklOU1RBTExfQ09VTlQsIG5vZGVMaW5rZXIpO1xuICAgIH1cbiAgICByZXBvcnRQYWNrYWdlRXh0ZW5zaW9uKHZhbHVlKSB7XG4gICAgICAgIHRoaXMucmVwb3J0VmFsdWUoTWV0cmljTmFtZS5FWFRFTlNJT04sIHZhbHVlKTtcbiAgICB9XG4gICAgcmVwb3J0V29ya3NwYWNlQ291bnQoY291bnQpIHtcbiAgICAgICAgdGhpcy5yZXBvcnRWYWx1ZShNZXRyaWNOYW1lLldPUktTUEFDRV9DT1VOVCwgU3RyaW5nKGNvdW50KSk7XG4gICAgfVxuICAgIHJlcG9ydERlcGVuZGVuY3lDb3VudChjb3VudCkge1xuICAgICAgICB0aGlzLnJlcG9ydFZhbHVlKE1ldHJpY05hbWUuREVQRU5ERU5DWV9DT1VOVCwgU3RyaW5nKGNvdW50KSk7XG4gICAgfVxuICAgIHJlcG9ydFZhbHVlKG1ldHJpYywgdmFsdWUpIHtcbiAgICAgICAgbWlzY1V0aWxzLmdldFNldFdpdGhEZWZhdWx0KHRoaXMudmFsdWVzLCBtZXRyaWMpLmFkZCh2YWx1ZSk7XG4gICAgfVxuICAgIHJlcG9ydEVudW1lcmF0b3IobWV0cmljLCB2YWx1ZSkge1xuICAgICAgICBtaXNjVXRpbHMuZ2V0U2V0V2l0aERlZmF1bHQodGhpcy5lbnVtZXJhdG9ycywgbWV0cmljKS5hZGQoaGFzaFV0aWxzLm1ha2VIYXNoKHZhbHVlKSk7XG4gICAgfVxuICAgIHJlcG9ydEhpdChtZXRyaWMsIGV4dHJhID0gYCpgKSB7XG4gICAgICAgIGNvbnN0IG5zID0gbWlzY1V0aWxzLmdldE1hcFdpdGhEZWZhdWx0KHRoaXMuaGl0cywgbWV0cmljKTtcbiAgICAgICAgY29uc3QgY3VycmVudCA9IG1pc2NVdGlscy5nZXRGYWN0b3J5V2l0aERlZmF1bHQobnMsIGV4dHJhLCAoKSA9PiAwKTtcbiAgICAgICAgbnMuc2V0KGV4dHJhLCBjdXJyZW50ICsgMSk7XG4gICAgfVxuICAgIGdldFJlZ2lzdHJ5UGF0aCgpIHtcbiAgICAgICAgY29uc3QgcmVnaXN0cnlGaWxlID0gdGhpcy5jb25maWd1cmF0aW9uLmdldChgZ2xvYmFsRm9sZGVyYCk7XG4gICAgICAgIHJldHVybiBmc2xpYl8xLnBwYXRoLmpvaW4ocmVnaXN0cnlGaWxlLCBgdGVsZW1ldHJ5Lmpzb25gKTtcbiAgICB9XG4gICAgc2VuZFJlcG9ydChhY2NvdW50SWQpIHtcbiAgICAgICAgdmFyIF9hLCBfYiwgX2M7XG4gICAgICAgIGNvbnN0IHJlZ2lzdHJ5RmlsZSA9IHRoaXMuZ2V0UmVnaXN0cnlQYXRoKCk7XG4gICAgICAgIGxldCBjb250ZW50O1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29udGVudCA9IGZzbGliXzEueGZzLnJlYWRKc29uU3luYyhyZWdpc3RyeUZpbGUpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIHtcbiAgICAgICAgICAgIGNvbnRlbnQgPSB7fTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgICAgICBjb25zdCBpbnRlcnZhbCA9IHRoaXMuY29uZmlndXJhdGlvbi5nZXQoYHRlbGVtZXRyeUludGVydmFsYCkgKiAyNCAqIDYwICogNjAgKiAxMDAwO1xuICAgICAgICBjb25zdCBsYXN0VXBkYXRlID0gKF9hID0gY29udGVudC5sYXN0VXBkYXRlKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBub3cgKyBpbnRlcnZhbCArIE1hdGguZmxvb3IoaW50ZXJ2YWwgKiBNYXRoLnJhbmRvbSgpKTtcbiAgICAgICAgY29uc3QgbmV4dFVwZGF0ZSA9IGxhc3RVcGRhdGUgKyBpbnRlcnZhbDtcbiAgICAgICAgaWYgKG5leHRVcGRhdGUgPiBub3cgJiYgY29udGVudC5sYXN0VXBkYXRlICE9IG51bGwpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBmc2xpYl8xLnhmcy5ta2RpclN5bmMoZnNsaWJfMS5wcGF0aC5kaXJuYW1lKHJlZ2lzdHJ5RmlsZSksIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICAgICAgICAgICAgZnNsaWJfMS54ZnMud3JpdGVKc29uU3luYyhyZWdpc3RyeUZpbGUsIHsgbGFzdFVwZGF0ZTogbm93IH0pO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIHtcbiAgICAgICAgICAgIC8vIEluIHNvbWUgY2FzZXMgdGhpcyBsb2NhdGlvbiBpcyByZWFkLW9ubHkuIFRvbyBiYWQgXHVEODNFXHVERDM3XHUyMDBEXHUyNjQwXHVGRTBGXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG5leHRVcGRhdGUgPiBub3cpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGlmICghY29udGVudC5ibG9ja3MpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNvbnN0IHJhd1VybCA9IGBodHRwczovL2Jyb3dzZXItaHR0cC1pbnRha2UubG9ncy5kYXRhZG9naHEuZXUvdjEvaW5wdXQvJHthY2NvdW50SWR9P2Rkc291cmNlPXlhcm5gO1xuICAgICAgICBjb25zdCBzZW5kUGF5bG9hZCA9IChwYXlsb2FkKSA9PiBodHRwVXRpbHMucG9zdChyYXdVcmwsIHBheWxvYWQsIHtcbiAgICAgICAgICAgIGNvbmZpZ3VyYXRpb246IHRoaXMuY29uZmlndXJhdGlvbixcbiAgICAgICAgfSkuY2F0Y2goKCkgPT4ge1xuICAgICAgICAgICAgLy8gTm90aGluZyB3ZSBjYW4gZG9cbiAgICAgICAgfSk7XG4gICAgICAgIGZvciAoY29uc3QgW3VzZXJJZCwgYmxvY2tdIG9mIE9iamVjdC5lbnRyaWVzKChfYiA9IGNvbnRlbnQuYmxvY2tzKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiB7fSkpIHtcbiAgICAgICAgICAgIGlmIChPYmplY3Qua2V5cyhibG9jaykubGVuZ3RoID09PSAwKVxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgY29uc3QgdXBsb2FkID0gYmxvY2s7XG4gICAgICAgICAgICB1cGxvYWQudXNlcklkID0gdXNlcklkO1xuICAgICAgICAgICAgdXBsb2FkLnJlcG9ydFR5cGUgPSBgcHJpbWFyeWA7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cygoX2MgPSB1cGxvYWQuZW51bWVyYXRvcnMpICE9PSBudWxsICYmIF9jICE9PSB2b2lkIDAgPyBfYyA6IHt9KSlcbiAgICAgICAgICAgICAgICB1cGxvYWQuZW51bWVyYXRvcnNba2V5XSA9IHVwbG9hZC5lbnVtZXJhdG9yc1trZXldLmxlbmd0aDtcbiAgICAgICAgICAgIHNlbmRQYXlsb2FkKHVwbG9hZCk7XG4gICAgICAgICAgICAvLyBEYXRhZG9nIGRvZXNuJ3Qgc3VwcG9ydCB3ZWxsIHNlbmRpbmcgbXVsdGlwbGUgdGFncyBpbiBhIHNpbmdsZVxuICAgICAgICAgICAgLy8gcGF5bG9hZCwgc28gd2UgaW5zdGVhZCBzZW5kIHRoZW0gc2VwYXJhdGVseSwgYXQgbW9zdCBvbmUgdmFsdWVcbiAgICAgICAgICAgIC8vIHBlciBxdWVyeSAod2Ugc3RpbGwgYWdncmVnYXRlIGRpZmZlcmVudCB0YWdzIHRvZ2V0aGVyKS5cbiAgICAgICAgICAgIGNvbnN0IHRvU2VuZCA9IG5ldyBNYXAoKTtcbiAgICAgICAgICAgIC8vIEFsc28gdGhlIG1heCBhbW91bnQgb2YgcXVlcmllcyAoYXQgd29yc3Qgb25jZSBhIHdlZWssIHJlbWVtYmVyKVxuICAgICAgICAgICAgY29uc3QgbWF4VmFsdWVzID0gMjA7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IFttZXRyaWNOYW1lLCB2YWx1ZXNdIG9mIE9iamVjdC5lbnRyaWVzKHVwbG9hZC52YWx1ZXMpKVxuICAgICAgICAgICAgICAgIGlmICh2YWx1ZXMubGVuZ3RoID4gMClcbiAgICAgICAgICAgICAgICAgICAgdG9TZW5kLnNldChtZXRyaWNOYW1lLCB2YWx1ZXMuc2xpY2UoMCwgbWF4VmFsdWVzKSk7XG4gICAgICAgICAgICB3aGlsZSAodG9TZW5kLnNpemUgPiAwKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdXBsb2FkID0ge307XG4gICAgICAgICAgICAgICAgdXBsb2FkLnVzZXJJZCA9IHVzZXJJZDtcbiAgICAgICAgICAgICAgICB1cGxvYWQucmVwb3J0VHlwZSA9IGBzZWNvbmRhcnlgO1xuICAgICAgICAgICAgICAgIHVwbG9hZC5tZXRyaWNzID0ge307XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBbbWV0cmljTmFtZSwgdmFsdWVzXSBvZiB0b1NlbmQpIHtcbiAgICAgICAgICAgICAgICAgICAgdXBsb2FkLm1ldHJpY3NbbWV0cmljTmFtZV0gPSB2YWx1ZXMuc2hpZnQoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvU2VuZC5kZWxldGUobWV0cmljTmFtZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgc2VuZFBheWxvYWQodXBsb2FkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBhcHBseUNoYW5nZXMoKSB7XG4gICAgICAgIHZhciBfYSwgX2IsIF9jLCBfZCwgX2UsIF9mLCBfZywgX2gsIF9qO1xuICAgICAgICBjb25zdCByZWdpc3RyeUZpbGUgPSB0aGlzLmdldFJlZ2lzdHJ5UGF0aCgpO1xuICAgICAgICBsZXQgY29udGVudDtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnRlbnQgPSBmc2xpYl8xLnhmcy5yZWFkSnNvblN5bmMocmVnaXN0cnlGaWxlKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCB7XG4gICAgICAgICAgICBjb250ZW50ID0ge307XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgdXNlcklkID0gKF9hID0gdGhpcy5jb25maWd1cmF0aW9uLmdldChgdGVsZW1ldHJ5VXNlcklkYCkpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IGAqYDtcbiAgICAgICAgY29uc3QgYmxvY2tzID0gY29udGVudC5ibG9ja3MgPSAoX2IgPSBjb250ZW50LmJsb2NrcykgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDoge307XG4gICAgICAgIGNvbnN0IGJsb2NrID0gYmxvY2tzW3VzZXJJZF0gPSAoX2MgPSBibG9ja3NbdXNlcklkXSkgIT09IG51bGwgJiYgX2MgIT09IHZvaWQgMCA/IF9jIDoge307XG4gICAgICAgIGZvciAoY29uc3Qga2V5IG9mIHRoaXMuaGl0cy5rZXlzKCkpIHtcbiAgICAgICAgICAgIGNvbnN0IHN0b3JlID0gYmxvY2suaGl0cyA9IChfZCA9IGJsb2NrLmhpdHMpICE9PSBudWxsICYmIF9kICE9PSB2b2lkIDAgPyBfZCA6IHt9O1xuICAgICAgICAgICAgY29uc3QgbnMgPSBzdG9yZVtrZXldID0gKF9lID0gc3RvcmVba2V5XSkgIT09IG51bGwgJiYgX2UgIT09IHZvaWQgMCA/IF9lIDoge307XG4gICAgICAgICAgICBmb3IgKGNvbnN0IFtleHRyYSwgdmFsdWVdIG9mIHRoaXMuaGl0cy5nZXQoa2V5KSkge1xuICAgICAgICAgICAgICAgIG5zW2V4dHJhXSA9ICgoX2YgPSBuc1tleHRyYV0pICE9PSBudWxsICYmIF9mICE9PSB2b2lkIDAgPyBfZiA6IDApICsgdmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChjb25zdCBmaWVsZCBvZiBbYHZhbHVlc2AsIGBlbnVtZXJhdG9yc2BdKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiB0aGlzW2ZpZWxkXS5rZXlzKCkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzdG9yZSA9IGJsb2NrW2ZpZWxkXSA9IChfZyA9IGJsb2NrW2ZpZWxkXSkgIT09IG51bGwgJiYgX2cgIT09IHZvaWQgMCA/IF9nIDoge307XG4gICAgICAgICAgICAgICAgc3RvcmVba2V5XSA9IFsuLi5uZXcgU2V0KFtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLihfaCA9IHN0b3JlW2tleV0pICE9PSBudWxsICYmIF9oICE9PSB2b2lkIDAgPyBfaCA6IFtdLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uKF9qID0gdGhpc1tmaWVsZF0uZ2V0KGtleSkpICE9PSBudWxsICYmIF9qICE9PSB2b2lkIDAgPyBfaiA6IFtdLFxuICAgICAgICAgICAgICAgICAgICBdKV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZnNsaWJfMS54ZnMubWtkaXJTeW5jKGZzbGliXzEucHBhdGguZGlybmFtZShyZWdpc3RyeUZpbGUpLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICAgICAgZnNsaWJfMS54ZnMud3JpdGVKc29uU3luYyhyZWdpc3RyeUZpbGUsIGNvbnRlbnQpO1xuICAgIH1cbiAgICBzdGFydEJ1ZmZlcigpIHtcbiAgICAgICAgcHJvY2Vzcy5vbihgZXhpdGAsICgpID0+IHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hcHBseUNoYW5nZXMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIHtcbiAgICAgICAgICAgICAgICAvLyBFeHBsaWNpdGx5IGlnbm9yZSBlcnJvcnNcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxufVxuZXhwb3J0cy5UZWxlbWV0cnlNYW5hZ2VyID0gVGVsZW1ldHJ5TWFuYWdlcjtcbiIsICJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMudHJlZVV0aWxzID0gZXhwb3J0cy50Z3pVdGlscyA9IGV4cG9ydHMuc3RydWN0VXRpbHMgPSBleHBvcnRzLnNlbXZlclV0aWxzID0gZXhwb3J0cy5zY3JpcHRVdGlscyA9IGV4cG9ydHMubm9kZVV0aWxzID0gZXhwb3J0cy5taXNjVXRpbHMgPSBleHBvcnRzLmZvcm1hdFV0aWxzID0gZXhwb3J0cy5mb2xkZXJVdGlscyA9IGV4cG9ydHMuZXhlY1V0aWxzID0gZXhwb3J0cy5odHRwVXRpbHMgPSBleHBvcnRzLmhhc2hVdGlscyA9IGV4cG9ydHMuUGFja2FnZUV4dGVuc2lvblN0YXR1cyA9IGV4cG9ydHMuUGFja2FnZUV4dGVuc2lvblR5cGUgPSBleHBvcnRzLkxpbmtUeXBlID0gZXhwb3J0cy5ZYXJuVmVyc2lvbiA9IGV4cG9ydHMuV29ya3NwYWNlID0gZXhwb3J0cy5Xb3Jrc3BhY2VSZXNvbHZlciA9IGV4cG9ydHMuV29ya3NwYWNlRmV0Y2hlciA9IGV4cG9ydHMuVmlydHVhbEZldGNoZXIgPSBleHBvcnRzLlRocm93UmVwb3J0ID0gZXhwb3J0cy5UZWxlbWV0cnlNYW5hZ2VyID0gZXhwb3J0cy5TdHJlYW1SZXBvcnQgPSBleHBvcnRzLlJlcG9ydCA9IGV4cG9ydHMuUmVwb3J0RXJyb3IgPSBleHBvcnRzLkluc3RhbGxNb2RlID0gZXhwb3J0cy5Qcm9qZWN0ID0gZXhwb3J0cy5NdWx0aUZldGNoZXIgPSBleHBvcnRzLnN0cmluZ2lmeU1lc3NhZ2VOYW1lID0gZXhwb3J0cy5wYXJzZU1lc3NhZ2VOYW1lID0gZXhwb3J0cy5NZXNzYWdlTmFtZSA9IGV4cG9ydHMuTWFuaWZlc3QgPSBleHBvcnRzLkxvY2tmaWxlUmVzb2x2ZXIgPSBleHBvcnRzLkxpZ2h0UmVwb3J0ID0gZXhwb3J0cy5MZWdhY3lNaWdyYXRpb25SZXNvbHZlciA9IGV4cG9ydHMuQnVpbGRUeXBlID0gZXhwb3J0cy5TZXR0aW5nc1R5cGUgPSBleHBvcnRzLlByb2plY3RMb29rdXAgPSBleHBvcnRzLkZvcm1hdFR5cGUgPSBleHBvcnRzLkNvbmZpZ3VyYXRpb24gPSBleHBvcnRzLlRBR19SRUdFWFAgPSBleHBvcnRzLkRFRkFVTFRfTE9DS19GSUxFTkFNRSA9IGV4cG9ydHMuREVGQVVMVF9SQ19GSUxFTkFNRSA9IGV4cG9ydHMuQ2FjaGUgPSB2b2lkIDA7XG5jb25zdCB0c2xpYl8xID0gcmVxdWlyZShcInRzbGliXCIpO1xuY29uc3QgZXhlY1V0aWxzID0gdHNsaWJfMS5fX2ltcG9ydFN0YXIocmVxdWlyZShcIi4vZXhlY1V0aWxzXCIpKTtcbmV4cG9ydHMuZXhlY1V0aWxzID0gZXhlY1V0aWxzO1xuY29uc3QgZm9sZGVyVXRpbHMgPSB0c2xpYl8xLl9faW1wb3J0U3RhcihyZXF1aXJlKFwiLi9mb2xkZXJVdGlsc1wiKSk7XG5leHBvcnRzLmZvbGRlclV0aWxzID0gZm9sZGVyVXRpbHM7XG5jb25zdCBmb3JtYXRVdGlscyA9IHRzbGliXzEuX19pbXBvcnRTdGFyKHJlcXVpcmUoXCIuL2Zvcm1hdFV0aWxzXCIpKTtcbmV4cG9ydHMuZm9ybWF0VXRpbHMgPSBmb3JtYXRVdGlscztcbmNvbnN0IGhhc2hVdGlscyA9IHRzbGliXzEuX19pbXBvcnRTdGFyKHJlcXVpcmUoXCIuL2hhc2hVdGlsc1wiKSk7XG5leHBvcnRzLmhhc2hVdGlscyA9IGhhc2hVdGlscztcbmNvbnN0IGh0dHBVdGlscyA9IHRzbGliXzEuX19pbXBvcnRTdGFyKHJlcXVpcmUoXCIuL2h0dHBVdGlsc1wiKSk7XG5leHBvcnRzLmh0dHBVdGlscyA9IGh0dHBVdGlscztcbmNvbnN0IG1pc2NVdGlscyA9IHRzbGliXzEuX19pbXBvcnRTdGFyKHJlcXVpcmUoXCIuL21pc2NVdGlsc1wiKSk7XG5leHBvcnRzLm1pc2NVdGlscyA9IG1pc2NVdGlscztcbmNvbnN0IG5vZGVVdGlscyA9IHRzbGliXzEuX19pbXBvcnRTdGFyKHJlcXVpcmUoXCIuL25vZGVVdGlsc1wiKSk7XG5leHBvcnRzLm5vZGVVdGlscyA9IG5vZGVVdGlscztcbmNvbnN0IHNjcmlwdFV0aWxzID0gdHNsaWJfMS5fX2ltcG9ydFN0YXIocmVxdWlyZShcIi4vc2NyaXB0VXRpbHNcIikpO1xuZXhwb3J0cy5zY3JpcHRVdGlscyA9IHNjcmlwdFV0aWxzO1xuY29uc3Qgc2VtdmVyVXRpbHMgPSB0c2xpYl8xLl9faW1wb3J0U3RhcihyZXF1aXJlKFwiLi9zZW12ZXJVdGlsc1wiKSk7XG5leHBvcnRzLnNlbXZlclV0aWxzID0gc2VtdmVyVXRpbHM7XG5jb25zdCBzdHJ1Y3RVdGlscyA9IHRzbGliXzEuX19pbXBvcnRTdGFyKHJlcXVpcmUoXCIuL3N0cnVjdFV0aWxzXCIpKTtcbmV4cG9ydHMuc3RydWN0VXRpbHMgPSBzdHJ1Y3RVdGlscztcbmNvbnN0IHRnelV0aWxzID0gdHNsaWJfMS5fX2ltcG9ydFN0YXIocmVxdWlyZShcIi4vdGd6VXRpbHNcIikpO1xuZXhwb3J0cy50Z3pVdGlscyA9IHRnelV0aWxzO1xuY29uc3QgdHJlZVV0aWxzID0gdHNsaWJfMS5fX2ltcG9ydFN0YXIocmVxdWlyZShcIi4vdHJlZVV0aWxzXCIpKTtcbmV4cG9ydHMudHJlZVV0aWxzID0gdHJlZVV0aWxzO1xudmFyIENhY2hlXzEgPSByZXF1aXJlKFwiLi9DYWNoZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkNhY2hlXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBDYWNoZV8xLkNhY2hlOyB9IH0pO1xudmFyIENvbmZpZ3VyYXRpb25fMSA9IHJlcXVpcmUoXCIuL0NvbmZpZ3VyYXRpb25cIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJERUZBVUxUX1JDX0ZJTEVOQU1FXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBDb25maWd1cmF0aW9uXzEuREVGQVVMVF9SQ19GSUxFTkFNRTsgfSB9KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkRFRkFVTFRfTE9DS19GSUxFTkFNRVwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gQ29uZmlndXJhdGlvbl8xLkRFRkFVTFRfTE9DS19GSUxFTkFNRTsgfSB9KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlRBR19SRUdFWFBcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIENvbmZpZ3VyYXRpb25fMS5UQUdfUkVHRVhQOyB9IH0pO1xudmFyIENvbmZpZ3VyYXRpb25fMiA9IHJlcXVpcmUoXCIuL0NvbmZpZ3VyYXRpb25cIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJDb25maWd1cmF0aW9uXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBDb25maWd1cmF0aW9uXzIuQ29uZmlndXJhdGlvbjsgfSB9KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkZvcm1hdFR5cGVcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIENvbmZpZ3VyYXRpb25fMi5Gb3JtYXRUeXBlOyB9IH0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiUHJvamVjdExvb2t1cFwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gQ29uZmlndXJhdGlvbl8yLlByb2plY3RMb29rdXA7IH0gfSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJTZXR0aW5nc1R5cGVcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIENvbmZpZ3VyYXRpb25fMi5TZXR0aW5nc1R5cGU7IH0gfSk7XG52YXIgSW5zdGFsbGVyXzEgPSByZXF1aXJlKFwiLi9JbnN0YWxsZXJcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJCdWlsZFR5cGVcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIEluc3RhbGxlcl8xLkJ1aWxkVHlwZTsgfSB9KTtcbnZhciBMZWdhY3lNaWdyYXRpb25SZXNvbHZlcl8xID0gcmVxdWlyZShcIi4vTGVnYWN5TWlncmF0aW9uUmVzb2x2ZXJcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJMZWdhY3lNaWdyYXRpb25SZXNvbHZlclwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gTGVnYWN5TWlncmF0aW9uUmVzb2x2ZXJfMS5MZWdhY3lNaWdyYXRpb25SZXNvbHZlcjsgfSB9KTtcbnZhciBMaWdodFJlcG9ydF8xID0gcmVxdWlyZShcIi4vTGlnaHRSZXBvcnRcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJMaWdodFJlcG9ydFwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gTGlnaHRSZXBvcnRfMS5MaWdodFJlcG9ydDsgfSB9KTtcbnZhciBMb2NrZmlsZVJlc29sdmVyXzEgPSByZXF1aXJlKFwiLi9Mb2NrZmlsZVJlc29sdmVyXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiTG9ja2ZpbGVSZXNvbHZlclwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gTG9ja2ZpbGVSZXNvbHZlcl8xLkxvY2tmaWxlUmVzb2x2ZXI7IH0gfSk7XG52YXIgTWFuaWZlc3RfMSA9IHJlcXVpcmUoXCIuL01hbmlmZXN0XCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiTWFuaWZlc3RcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIE1hbmlmZXN0XzEuTWFuaWZlc3Q7IH0gfSk7XG52YXIgTWVzc2FnZU5hbWVfMSA9IHJlcXVpcmUoXCIuL01lc3NhZ2VOYW1lXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiTWVzc2FnZU5hbWVcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIE1lc3NhZ2VOYW1lXzEuTWVzc2FnZU5hbWU7IH0gfSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJwYXJzZU1lc3NhZ2VOYW1lXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBNZXNzYWdlTmFtZV8xLnBhcnNlTWVzc2FnZU5hbWU7IH0gfSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJzdHJpbmdpZnlNZXNzYWdlTmFtZVwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gTWVzc2FnZU5hbWVfMS5zdHJpbmdpZnlNZXNzYWdlTmFtZTsgfSB9KTtcbnZhciBNdWx0aUZldGNoZXJfMSA9IHJlcXVpcmUoXCIuL011bHRpRmV0Y2hlclwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIk11bHRpRmV0Y2hlclwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gTXVsdGlGZXRjaGVyXzEuTXVsdGlGZXRjaGVyOyB9IH0pO1xudmFyIFByb2plY3RfMSA9IHJlcXVpcmUoXCIuL1Byb2plY3RcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJQcm9qZWN0XCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBQcm9qZWN0XzEuUHJvamVjdDsgfSB9KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkluc3RhbGxNb2RlXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBQcm9qZWN0XzEuSW5zdGFsbE1vZGU7IH0gfSk7XG52YXIgUmVwb3J0XzEgPSByZXF1aXJlKFwiLi9SZXBvcnRcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJSZXBvcnRFcnJvclwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gUmVwb3J0XzEuUmVwb3J0RXJyb3I7IH0gfSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJSZXBvcnRcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIFJlcG9ydF8xLlJlcG9ydDsgfSB9KTtcbnZhciBTdHJlYW1SZXBvcnRfMSA9IHJlcXVpcmUoXCIuL1N0cmVhbVJlcG9ydFwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlN0cmVhbVJlcG9ydFwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gU3RyZWFtUmVwb3J0XzEuU3RyZWFtUmVwb3J0OyB9IH0pO1xudmFyIFRlbGVtZXRyeU1hbmFnZXJfMSA9IHJlcXVpcmUoXCIuL1RlbGVtZXRyeU1hbmFnZXJcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJUZWxlbWV0cnlNYW5hZ2VyXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBUZWxlbWV0cnlNYW5hZ2VyXzEuVGVsZW1ldHJ5TWFuYWdlcjsgfSB9KTtcbnZhciBUaHJvd1JlcG9ydF8xID0gcmVxdWlyZShcIi4vVGhyb3dSZXBvcnRcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJUaHJvd1JlcG9ydFwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gVGhyb3dSZXBvcnRfMS5UaHJvd1JlcG9ydDsgfSB9KTtcbnZhciBWaXJ0dWFsRmV0Y2hlcl8xID0gcmVxdWlyZShcIi4vVmlydHVhbEZldGNoZXJcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJWaXJ0dWFsRmV0Y2hlclwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gVmlydHVhbEZldGNoZXJfMS5WaXJ0dWFsRmV0Y2hlcjsgfSB9KTtcbnZhciBXb3Jrc3BhY2VGZXRjaGVyXzEgPSByZXF1aXJlKFwiLi9Xb3Jrc3BhY2VGZXRjaGVyXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiV29ya3NwYWNlRmV0Y2hlclwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gV29ya3NwYWNlRmV0Y2hlcl8xLldvcmtzcGFjZUZldGNoZXI7IH0gfSk7XG52YXIgV29ya3NwYWNlUmVzb2x2ZXJfMSA9IHJlcXVpcmUoXCIuL1dvcmtzcGFjZVJlc29sdmVyXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiV29ya3NwYWNlUmVzb2x2ZXJcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIFdvcmtzcGFjZVJlc29sdmVyXzEuV29ya3NwYWNlUmVzb2x2ZXI7IH0gfSk7XG52YXIgV29ya3NwYWNlXzEgPSByZXF1aXJlKFwiLi9Xb3Jrc3BhY2VcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJXb3Jrc3BhY2VcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIFdvcmtzcGFjZV8xLldvcmtzcGFjZTsgfSB9KTtcbnZhciBZYXJuVmVyc2lvbl8xID0gcmVxdWlyZShcIi4vWWFyblZlcnNpb25cIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJZYXJuVmVyc2lvblwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gWWFyblZlcnNpb25fMS5ZYXJuVmVyc2lvbjsgfSB9KTtcbnZhciB0eXBlc18xID0gcmVxdWlyZShcIi4vdHlwZXNcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJMaW5rVHlwZVwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gdHlwZXNfMS5MaW5rVHlwZTsgfSB9KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlBhY2thZ2VFeHRlbnNpb25UeXBlXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiB0eXBlc18xLlBhY2thZ2VFeHRlbnNpb25UeXBlOyB9IH0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiUGFja2FnZUV4dGVuc2lvblN0YXR1c1wiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gdHlwZXNfMS5QYWNrYWdlRXh0ZW5zaW9uU3RhdHVzOyB9IH0pO1xuIiwgImltcG9ydCB7IHN0cnVjdFV0aWxzLCBNYW5pZmVzdH0gZnJvbSAnQHlhcm5wa2cvY29yZSdcbmltcG9ydCB0eXBlICogYXMgUG5wQXBpIGZyb20gJ3BucGFwaSdcbmltcG9ydCB7IFppcE9wZW5GUyB9IGZyb20gJ0B5YXJucGtnL2xpYnppcCdcbmltcG9ydCB7IFBvc2l4RlMgfSBmcm9tICdAeWFybnBrZy9mc2xpYidcblxuY29uc3QgbGliemlwID0gcmVxdWlyZShgQHlhcm5wa2cvbGliemlwYCkuZ2V0TGliemlwU3luYygpXG5cbmNvbnN0IHppcE9wZW5GcyA9IG5ldyBaaXBPcGVuRlMoe2xpYnppcH0pO1xuY29uc3QgY3Jvc3NGcyA9IG5ldyBQb3NpeEZTKHppcE9wZW5Gcyk7XG5cbmV4cG9ydCBmdW5jdGlvbiBjbGVhbkxvY2F0b3JTdHJpbmcobG9jYXRvclN0cmluZzogc3RyaW5nKSB7XG4gIGNvbnN0IGxvY2F0b3IgPSBzdHJ1Y3RVdGlscy5wYXJzZUxvY2F0b3IobG9jYXRvclN0cmluZylcbiAgY29uc3QgcmFuZ2UgPSBzdHJ1Y3RVdGlscy5wYXJzZVJhbmdlKGxvY2F0b3IucmVmZXJlbmNlKVxuXG4gIGlmIChyYW5nZS5wcm90b2NvbCA9PT0gJ3BhdGNoOicpIHtcbiAgICByZXR1cm4gc3RydWN0VXRpbHMuc3RyaW5naWZ5TG9jYXRvcih7XG4gICAgICAuLi5sb2NhdG9yLFxuICAgICAgcmVmZXJlbmNlOiBzdHJ1Y3RVdGlscy5tYWtlUmFuZ2Uoey4uLnJhbmdlLCBwYXJhbXM6IG51bGx9KSxcbiAgICB9KVxuICB9XG5cbiAgcmV0dXJuIGxvY2F0b3JTdHJpbmdcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlYWRQYWNrYWdlSlNPTihwYWNrYWdlSW5mb3JtYXRpb246IFBucEFwaS5QYWNrYWdlSW5mb3JtYXRpb24pIHtcbiAgcmV0dXJuIE1hbmlmZXN0LmZyb21UZXh0KGNyb3NzRnMucmVhZEZpbGVTeW5jKHBhY2thZ2VJbmZvcm1hdGlvbi5wYWNrYWdlTG9jYXRpb24gKyAncGFja2FnZS5qc29uJywgJ3V0ZjgnKSlcbn1cbiIsICJpbXBvcnQgKiBhcyBmcyBmcm9tICdub2RlOmZzJ1xuaW1wb3J0IHsgQ29uZmlndXJhdGlvbiwgTG9jYXRvciwgUGFja2FnZSwgUHJvamVjdCwgc3RydWN0VXRpbHMgfSBmcm9tICdAeWFybnBrZy9jb3JlJ1xuaW1wb3J0IHsgcHBhdGggfSBmcm9tICdAeWFybnBrZy9mc2xpYidcbmltcG9ydCB7IGNsZWFuTG9jYXRvclN0cmluZyB9IGZyb20gJy4uL2xpYidcblxuY29uc3QgcGFja2FnZVJlZ2lzdHJ5RGF0YVBhdGggPSBwcm9jZXNzLmFyZ3ZbM11cbmNvbnN0IHRvcExldmVsUGFja2FnZUxvY2F0b3JTdHJpbmcgPSBwcm9jZXNzLmFyZ3ZbNF1cblxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlTG9ja0ZpbGUoKSB7XG4gIGNvbnN0IGNvbmZpZ3VyYXRpb24gPSBhd2FpdCBDb25maWd1cmF0aW9uLmZpbmQocHBhdGguY3dkKCksIG51bGwpO1xuICBjb25zdCBwcm9qZWN0ID0gbmV3IFByb2plY3QocHBhdGguY3dkKCksIHsgY29uZmlndXJhdGlvbiB9KVxuXG4gIGF3YWl0IChwcm9qZWN0IGFzIGFueSkuc2V0dXBSZXNvbHV0aW9ucygpIC8vIEhBQ0sgc2V0dXBSZXNvbHV0aW9ucyBpcyBwcml2YXRlXG5cbiAgY29uc3QgdG9wTGV2ZWxQYWNrYWdlTG9jYXRvciA9IHN0cnVjdFV0aWxzLnBhcnNlTG9jYXRvcih0b3BMZXZlbFBhY2thZ2VMb2NhdG9yU3RyaW5nKVxuXG4gIGNvbnN0IHBhY2thZ2VSZWdpc3RyeURhdGEgPSBKU09OLnBhcnNlKGZzLnJlYWRGaWxlU3luYyhwYWNrYWdlUmVnaXN0cnlEYXRhUGF0aCwgJ3V0ZjgnKSlcblxuICBwYWNrYWdlUmVnaXN0cnlUb1Byb2plY3RPcmlnaW5hbFBhY2thZ2VzKHByb2plY3QsIHRvcExldmVsUGFja2FnZUxvY2F0b3IsIHBhY2thZ2VSZWdpc3RyeURhdGEpXG5cbiAgcHJvamVjdC5zdG9yZWRQYWNrYWdlcyA9IHByb2plY3Qub3JpZ2luYWxQYWNrYWdlc1xuXG4gIGF3YWl0IHByb2plY3QucGVyc2lzdExvY2tmaWxlKClcbn1cblxuZnVuY3Rpb24gcGFja2FnZVJlZ2lzdHJ5VG9Qcm9qZWN0T3JpZ2luYWxQYWNrYWdlcyhwcm9qZWN0OiBQcm9qZWN0LCB0b3BMZXZlbFBhY2thZ2VMb2NhdG9yOiBMb2NhdG9yLCBwYWNrYWdlUmVnaXN0cnlEYXRhOiBhbnkpIHtcbiAgcGFja2FnZVJlZ2lzdHJ5RGF0YVtcInJvb3Qtd29ya3NwYWNlLTBiNjEyNEB3b3Jrc3BhY2U6LlwiXSA9IHtcbiAgICBsaW5rVHlwZTogJ3NvZnQnLFxuICAgIGxhbmd1YWdlTmFtZTogJ3Vua25vd24nLFxuICAgIHBhY2thZ2VEZXBlbmRlbmNpZXM6IHtcbiAgICAgIFtzdHJ1Y3RVdGlscy5zdHJpbmdpZnlJZGVudCh0b3BMZXZlbFBhY2thZ2VMb2NhdG9yKV06IHN0cnVjdFV0aWxzLnN0cmluZ2lmeUxvY2F0b3IodG9wTGV2ZWxQYWNrYWdlTG9jYXRvciksXG4gICAgfSxcbiAgfVxuXG4gIGNvbnN0IHBhY2thZ2VSZWdpc3RyeURhdGFFbnRyaWVzID0gT2JqZWN0LmVudHJpZXMocGFja2FnZVJlZ2lzdHJ5RGF0YSkgYXMgYW55XG5cbiAgZm9yIChsZXQgW2xvY2F0b3JTdHJpbmcsIHBrZ10gb2YgcGFja2FnZVJlZ2lzdHJ5RGF0YUVudHJpZXMpIHtcbiAgICBpZiAoIXBrZykgY29udGludWVcblxuICAgIGNvbnN0IGlzVG9wTGV2ZWxQYWNrYWdlID0gbG9jYXRvclN0cmluZyA9PT0gdG9wTGV2ZWxQYWNrYWdlTG9jYXRvclN0cmluZyB8fCBsb2NhdG9yU3RyaW5nID09PSAncm9vdC13b3Jrc3BhY2UtMGI2MTI0QHdvcmtzcGFjZTouJ1xuXG4gICAgY29uc3QgZGVwZW5kZW5jaWVzID0gbmV3IE1hcCgpXG4gICAgY29uc3QgZGVwZW5kZW5jaWVzTWV0YSA9IG5ldyBNYXAoT2JqZWN0LmVudHJpZXMocGtnLmRlcGVuZGVuY2llc01ldGEgPz8ge30pKVxuICAgIGNvbnN0IHBlZXJEZXBlbmRlbmNpZXMgPSBuZXcgTWFwKClcbiAgICBjb25zdCBwZWVyRGVwZW5kZW5jaWVzTWV0YSA9IGlzVG9wTGV2ZWxQYWNrYWdlID8gbmV3IE1hcCgpIDogbmV3IE1hcChPYmplY3QuZW50cmllcyhwa2cucGVlckRlcGVuZGVuY2llc01ldGEgPz8ge30pKVxuICAgIGNvbnN0IGJpbiA9IG5ldyBNYXAoT2JqZWN0LmVudHJpZXMocGtnLmJpbiA/PyB7fSkpXG5cbiAgICBsb2NhdG9yU3RyaW5nID0gY2xlYW5Mb2NhdG9yU3RyaW5nKGxvY2F0b3JTdHJpbmcpXG4gICAgY29uc3QgbG9jYXRvciA9IHN0cnVjdFV0aWxzLnBhcnNlTG9jYXRvcihsb2NhdG9yU3RyaW5nKVxuXG4gICAgY29uc3QgaWRlbnQgPSBzdHJ1Y3RVdGlscy5tYWtlSWRlbnQobG9jYXRvci5zY29wZSwgbG9jYXRvci5uYW1lKVxuICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBzdHJ1Y3RVdGlscy5tYWtlRGVzY3JpcHRvcihpZGVudCwgbG9jYXRvci5yZWZlcmVuY2UpIC8vIGxvY2F0b3JzIGFyZSBhbHNvIHZhbGlkIGRlc2NyaXB0b3JzXG5cbiAgICBwa2cubG9jYXRvckhhc2ggPSBsb2NhdG9yLmxvY2F0b3JIYXNoXG4gICAgcGtnLmRlc2NyaXB0b3JIYXNoID0gZGVzY3JpcHRvci5kZXNjcmlwdG9ySGFzaFxuXG4gICAgaWYgKCFpc1RvcExldmVsUGFja2FnZSkge1xuICAgICAgZm9yIChjb25zdCBkZXBlbmRlbmN5TmFtZSBvZiBPYmplY3Qua2V5cyhwa2c/LnBlZXJEZXBlbmRlbmNpZXMgPz8ge30pKSB7XG4gICAgICAgIGNvbnN0IGlkZW50ID0gc3RydWN0VXRpbHMucGFyc2VJZGVudChkZXBlbmRlbmN5TmFtZSlcbiAgICAgICAgY29uc3QgZGVzY3JpcHRvciA9IHN0cnVjdFV0aWxzLm1ha2VEZXNjcmlwdG9yKGlkZW50LCBwa2cucGVlckRlcGVuZGVuY2llc1tkZXBlbmRlbmN5TmFtZV0pXG4gICAgICAgIHBlZXJEZXBlbmRlbmNpZXMuc2V0KGlkZW50LmlkZW50SGFzaCwgZGVzY3JpcHRvcilcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBvcmlnUGFja2FnZTogUGFja2FnZSA9IHtcbiAgICAgIC4uLmxvY2F0b3IsXG4gICAgICBsYW5ndWFnZU5hbWU6IHBrZy5sYW5ndWFnZU5hbWUsXG4gICAgICBsaW5rVHlwZTogcGtnLmxpbmtUeXBlLnRvVXBwZXJDYXNlKCksXG4gICAgICBjb25kaXRpb25zOiBudWxsLFxuICAgICAgZGVwZW5kZW5jaWVzLFxuICAgICAgLy8gVE9ET1xuICAgICAgLy8gZGVwZW5kZW5jaWVzTWV0YTogZGVwZW5kZW5jaWVzTWV0YSBhcyBhbnksXG4gICAgICBkZXBlbmRlbmNpZXNNZXRhOiBudWxsIGFzIGFueSxcbiAgICAgIGJpbjogYmluIGFzIGFueSxcbiAgICAgIHBlZXJEZXBlbmRlbmNpZXMsXG4gICAgICBwZWVyRGVwZW5kZW5jaWVzTWV0YTogcGVlckRlcGVuZGVuY2llc01ldGEgYXMgYW55LFxuICAgICAgdmVyc2lvbjogbnVsbCxcbiAgICB9XG4gICAgcHJvamVjdC5vcmlnaW5hbFBhY2thZ2VzLnNldChvcmlnUGFja2FnZS5sb2NhdG9ySGFzaCwgb3JpZ1BhY2thZ2UpXG5cbiAgICAvLyBzdG9yZWRSZXNvbHV0aW9ucyBpcyBhIG1hcCBvZiBkZXNjcmlwdG9ySGFzaCAtPiBsb2NhdG9ySGFzaFxuICAgIHByb2plY3Quc3RvcmVkUmVzb2x1dGlvbnMuc2V0KGRlc2NyaXB0b3IuZGVzY3JpcHRvckhhc2gsIG9yaWdQYWNrYWdlLmxvY2F0b3JIYXNoKVxuXG4gICAgLy8gc3RvcmVkQ2hlY2tzdW1zIGlzIGEgbWFwIG9mIGxvY2F0b3JIYXNoIC0+IGNoZWNrc3VtXG4gICAgaWYgKHBrZy5jaGVja3N1bSAhPSBudWxsKSBwcm9qZWN0LnN0b3JlZENoZWNrc3Vtcy5zZXQob3JpZ1BhY2thZ2UubG9jYXRvckhhc2gsICc5LycgKyBwa2cuY2hlY2tzdW0pXG5cbiAgICBwcm9qZWN0LnN0b3JlZERlc2NyaXB0b3JzLnNldChkZXNjcmlwdG9yLmRlc2NyaXB0b3JIYXNoLCBkZXNjcmlwdG9yKVxuICB9XG5cbiAgZm9yIChjb25zdCBbbG9jYXRvclN0cmluZywgX3BhY2thZ2VdIG9mIHBhY2thZ2VSZWdpc3RyeURhdGFFbnRyaWVzKSB7XG4gICAgaWYgKCFfcGFja2FnZSkgY29udGludWVcblxuICAgIGNvbnN0IHBrZyA9IHByb2plY3Qub3JpZ2luYWxQYWNrYWdlcy5nZXQoX3BhY2thZ2UubG9jYXRvckhhc2gpXG4gICAgaWYgKCFwa2cpIGNvbnRpbnVlXG5cbiAgICBjb25zdCBwa2dEZXBlbmRlbmNpZXMgPSBfcGFja2FnZS5wYWNrYWdlRGVwZW5kZW5jaWVzID8/IHt9XG5cbiAgICBmb3IgKGNvbnN0IGRlcGVuZGVuY3lOYW1lIG9mIE9iamVjdC5rZXlzKHBrZ0RlcGVuZGVuY2llcykpIHtcbiAgICAgIGNvbnN0IGRlcExvY2F0b3JTdHJpbmcgPSBwa2dEZXBlbmRlbmNpZXNbZGVwZW5kZW5jeU5hbWVdXG4gICAgICBjb25zdCBkZXBQa2cgPSBwYWNrYWdlUmVnaXN0cnlEYXRhW2RlcExvY2F0b3JTdHJpbmddXG4gICAgICBpZiAoZGVwUGtnPy5kZXNjcmlwdG9ySGFzaCAhPSBudWxsKSB7XG4gICAgICAgIGNvbnN0IGRlcFBrZ0Rlc2NyaXB0b3IgPSBwcm9qZWN0LnN0b3JlZERlc2NyaXB0b3JzLmdldChkZXBQa2cuZGVzY3JpcHRvckhhc2gpXG4gICAgICAgIGlmIChkZXBQa2dEZXNjcmlwdG9yICE9IG51bGwpIHtcbiAgICAgICAgICBsZXQgZGVzY3JpcHRvciA9IHN0cnVjdFV0aWxzLm1ha2VEZXNjcmlwdG9yKHN0cnVjdFV0aWxzLnBhcnNlSWRlbnQoZGVwZW5kZW5jeU5hbWUpLCBkZXBQa2dEZXNjcmlwdG9yLnJhbmdlKVxuICAgICAgICAgIGNvbnN0IHJhbmdlID0gc3RydWN0VXRpbHMucGFyc2VSYW5nZShkZXNjcmlwdG9yLnJhbmdlKVxuXG4gICAgICAgICAgaWYgKHJhbmdlLnByb3RvY29sID09PSAncGF0Y2g6Jykge1xuICAgICAgICAgICAgZGVzY3JpcHRvciA9IHN0cnVjdFV0aWxzLnBhcnNlRGVzY3JpcHRvcihyYW5nZS5zb3VyY2UhKVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHByb2plY3Quc3RvcmVkUmVzb2x1dGlvbnMuc2V0KGRlc2NyaXB0b3IuZGVzY3JpcHRvckhhc2gsIGRlcFBrZy5sb2NhdG9ySGFzaClcbiAgICAgICAgICBwcm9qZWN0LnN0b3JlZERlc2NyaXB0b3JzLnNldChkZXNjcmlwdG9yLmRlc2NyaXB0b3JIYXNoLCBkZXNjcmlwdG9yKVxuICAgICAgICAgIHBrZy5kZXBlbmRlbmNpZXMuc2V0KGRlc2NyaXB0b3IuaWRlbnRIYXNoLCBkZXNjcmlwdG9yKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCAiaW1wb3J0ICogYXMgZnMgZnJvbSAnbm9kZTpmcydcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAnbm9kZTpwYXRoJ1xuaW1wb3J0IHsgc3RydWN0VXRpbHMgfSBmcm9tICdAeWFybnBrZy9jb3JlJ1xuaW1wb3J0IHsgeGZzIH0gZnJvbSAnQHlhcm5wa2cvZnNsaWInXG5pbXBvcnQgdHlwZSAqIGFzIFBucEFwaSBmcm9tICdwbnBhcGknXG5pbXBvcnQgeyByZWFkUGFja2FnZUpTT04gfSBmcm9tICcuLi9saWInXG5cbmNvbnN0IGJpbldyYXBwZXJzT3V0RGlyZWN0b3J5ID0gcHJvY2Vzcy5hcmd2WzNdXG5jb25zdCBwbnBPdXREaXJlY3RvcnkgPSBwcm9jZXNzLmFyZ3ZbNF1cblxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gbWFrZVBhdGhXcmFwcGVycygpIHtcbiAgY29uc3Qgb3V0RGlyZWN0b3J5UmVhbCA9IGZzLnJlYWxwYXRoU3luYyhwbnBPdXREaXJlY3RvcnkpXG5cbiAgY29uc3QgcG5wQXBpOiB0eXBlb2YgUG5wQXBpID0gcmVxdWlyZShwYXRoLmpvaW4ob3V0RGlyZWN0b3J5UmVhbCwgJy5wbnAuY2pzJykpXG4gIGlmICghcG5wQXBpKSB0aHJvdyBuZXcgRXJyb3IoJ0NvdWxkIG5vdCBmaW5kIHBucCBhcGknKVxuXG4gIGNvbnN0IHRvcExldmVsUGFja2FnZSA9IHBucEFwaS5nZXRQYWNrYWdlSW5mb3JtYXRpb24ocG5wQXBpLnRvcExldmVsKVxuXG4gIGZvciAoY29uc3QgW19fLCBkZXBdIG9mIE9iamVjdC5lbnRyaWVzKEFycmF5LmZyb20odG9wTGV2ZWxQYWNrYWdlLnBhY2thZ2VEZXBlbmRlbmNpZXMpKSkge1xuICAgIGNvbnN0IGRlcExvY2F0b3IgPSAocG5wQXBpIGFzIGFueSkuZ2V0TG9jYXRvcihkZXBbMF0sIGRlcFsxXSlcbiAgICBpZiAoZGVwTG9jYXRvci5yZWZlcmVuY2UgPT0gbnVsbCkgY29udGludWVcblxuICAgIGNvbnN0IGRldmlydHVhbGlzZWRMb2NhdG9yID0gc3RydWN0VXRpbHMuZW5zdXJlRGV2aXJ0dWFsaXplZExvY2F0b3IoZGVwTG9jYXRvcilcbiAgICBjb25zdCBkZXBQa2cgPSBwbnBBcGkuZ2V0UGFja2FnZUluZm9ybWF0aW9uKGRlcExvY2F0b3IpXG4gICAgY29uc3QgZGV2aXJ0dWFsaXNlZFBrZyA9IHBucEFwaS5nZXRQYWNrYWdlSW5mb3JtYXRpb24oZGV2aXJ0dWFsaXNlZExvY2F0b3IpXG5cbiAgICBjb25zdCBwYWNrYWdlTWFuaWZlc3QgPSByZWFkUGFja2FnZUpTT04oZGV2aXJ0dWFsaXNlZFBrZylcblxuICAgIGZvciAoY29uc3QgW2JpbiwgYmluU2NyaXB0XSBvZiBBcnJheS5mcm9tKHBhY2thZ2VNYW5pZmVzdC5iaW4pKSB7XG4gICAgICBjb25zdCByZXNvbHZlZEJpblBhdGggPSBwYXRoLmpvaW4oZGVwUGtnLnBhY2thZ2VMb2NhdGlvbiwgYmluU2NyaXB0KVxuICAgICAgYXdhaXQgeGZzLndyaXRlRmlsZVByb21pc2UocGF0aC5qb2luKGJpbldyYXBwZXJzT3V0RGlyZWN0b3J5LCBiaW4pIGFzIGFueSwgYG5vZGUgJHtyZXNvbHZlZEJpblBhdGh9IFwiJEBcImAsIHtcbiAgICAgICAgbW9kZTogMG83NTUsXG4gICAgICB9KVxuICAgIH1cbiAgfVxufVxuIiwgImNvbnN0IGNvbW1hbmRNYXAgPSB7XG4gIGNyZWF0ZUxvY2tGaWxlOiByZXF1aXJlKCcuL2NyZWF0ZUxvY2tGaWxlJykuZGVmYXVsdCxcbiAgbWFrZVBhdGhXcmFwcGVyczogcmVxdWlyZSgnLi9tYWtlUGF0aFdyYXBwZXJzJykuZGVmYXVsdCxcbn1cblxuY29tbWFuZE1hcFtwcm9jZXNzLmFyZ3ZbMl1dKClcbiJdLAogICJtYXBwaW5ncyI6ICJncUJBQUEsSUFBQUEsR0FBQUMsRUFBQSxDQUFBQyxJQUFBQyxLQUFBLENBZUEsSUFBSUMsR0FDQUMsR0FDQUMsR0FDQUMsR0FDQUMsR0FDQUMsR0FDQUMsR0FDQUMsR0FDQUMsR0FDQUMsR0FDQUMsR0FDQUMsR0FDQUMsR0FDQUMsR0FDQUMsR0FDQUMsR0FDQUMsR0FDQUMsR0FDQUMsR0FDQUMsR0FDQUMsR0FDQUMsR0FDQUMsR0FDQUMsR0FDQUMsSUFDSCxTQUFVQyxFQUFTLENBQ2hCLElBQUlDLEVBQU8sT0FBTyxRQUFXLFNBQVcsT0FBUyxPQUFPLE1BQVMsU0FBVyxLQUFPLE9BQU8sTUFBUyxTQUFXLEtBQU8sQ0FBQyxFQUNsSCxPQUFPLFFBQVcsWUFBYyxPQUFPLElBQ3ZDLE9BQU8sUUFBUyxDQUFDLFNBQVMsRUFBRyxTQUFVNUIsRUFBUyxDQUFFMkIsRUFBUUUsRUFBZUQsRUFBTUMsRUFBZTdCLENBQU8sQ0FBQyxDQUFDLENBQUcsQ0FBQyxFQUV0RyxPQUFPQyxJQUFXLFVBQVksT0FBT0EsR0FBTyxTQUFZLFNBQzdEMEIsRUFBUUUsRUFBZUQsRUFBTUMsRUFBZTVCLEdBQU8sT0FBTyxDQUFDLENBQUMsRUFHNUQwQixFQUFRRSxFQUFlRCxDQUFJLENBQUMsRUFFaEMsU0FBU0MsRUFBZTdCLEVBQVM4QixFQUFVLENBQ3ZDLE9BQUk5QixJQUFZNEIsSUFDUixPQUFPLE9BQU8sUUFBVyxXQUN6QixPQUFPLGVBQWU1QixFQUFTLGFBQWMsQ0FBRSxNQUFPLEVBQUssQ0FBQyxFQUc1REEsRUFBUSxXQUFhLElB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QixHQUM1QkMsR0FBNEIsR0FDNUJDLEdBQTRCLEdBQzVCQyxHQUE0QixHQUM1QkMsR0FBNEIsR0FDNUJDLEdBQTRCLEdBQzVCQyxHQUE0QixHQUM1QkMsR0FBNEIsR0FDNUJDLEdBQTRCLEdBQzVCQyxHQUE0QixHQUM1QkMsR0FBNEIsR0FDNUJDLEdBQTRCLEdBQzVCQyxHQUE0QixHQUM1QkMsR0FBNEIsR0FDNUJDLEdBQTRCLEdBQzVCQyxHQUE0QixHQUM1QkMsR0FBNEIsR0FDNUJDLEdBQTRCLEdBQzVCQyxHQUE0QixHQUM1QkMsR0FBNEIsR0FDNUJDLEdBQTRCLElBQzVCQyxHQUE0QixJQUM1QkMsR0FBNEIsSUFFNUJDLEdBQW1CLENBQUMsRUFFeEJBLEdBQWlCLEdBQVUsTUFDM0JBLEdBQWlCLEdBQVUsTUFDM0JBLEdBQWlCLEdBQVUsTUFDM0JBLEdBQWlCLEdBQVUsTUFDM0JBLEdBQWlCLElBQVUsTUFDM0JBLEdBQWlCLElBQVUsTUFDM0JBLEdBQWlCLElBQVUsTUFDM0JBLEdBQWlCLElBQVUsTUFDM0JBLEdBQWlCLElBQVUsTUFDM0JBLEdBQWlCLElBQVUsTUFDM0JBLEdBQWlCLElBQVUsT0FDM0JBLEdBQWlCLEtBQVUsTUFDM0JBLEdBQWlCLEtBQVUsTUFDM0JBLEdBQWlCLE1BQVUsTUFDM0JBLEdBQWlCLE1BQVUsTUFFM0IsSUFBSUMsR0FBNkIsQ0FDL0IsSUFBSyxJQUFLLE1BQU8sTUFBTyxNQUFPLEtBQU0sS0FBTSxLQUMzQyxJQUFLLElBQUssS0FBTSxLQUFNLEtBQU0sTUFBTyxNQUFPLEtBQzVDLEVBRUEsU0FBU0MsR0FBZ0JDLEVBQVFDLEVBQUssQ0FDcEMsSUFBSUMsRUFBUUMsRUFBTUMsRUFBT0MsRUFBUUMsRUFBS0MsRUFBT0MsRUFFN0MsR0FBSVAsSUFBUSxLQUFNLE1BQU8sQ0FBQyxFQUsxQixJQUhBQyxFQUFTLENBQUMsRUFDVkMsRUFBTyxPQUFPLEtBQUtGLENBQUcsRUFFakJHLEVBQVEsRUFBR0MsRUFBU0YsRUFBSyxPQUFRQyxFQUFRQyxFQUFRRCxHQUFTLEVBQzdERSxF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QSxHQUFRLElBQzFCLElBQVVBLEdBQVFBLEdBQVEsSUFDMUIsS0FBVUEsR0FBUUEsR0FBUSxLQUNqQkEsR0FBVixLQUNVQSxHQUFWLE1BRVVBLEdBQVYsTUFDVUEsR0FBVixNQUNDLE1BQVVBLEdBQVFBLEdBQVEsTUFDakJBLEdBQVYsTUFDVUEsR0FBVixNQUNDLE1BQVVBLEdBQVFBLEdBQVEsTUFDMUIsTUFBVUEsR0FBUUEsR0FBUSxNQUNqQkEsR0FBVixNQUNDLE1BQVVBLEdBQVFBLEdBQVEsTUFDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUNqQkEsR0FBVixPQUNDLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixRQUFXQSxHQUFRQSxHQUFRLFFBQzNCLFFBQVdBLEdBQVFBLEdBQVEsUUFDakJBLEdBQVgsUUFDV0EsR0FBWCxRQUNDLFFBQVdBLEdBQVFBLEdBQVEsUUFDM0IsUUFBV0EsR0FBUUEsR0FBUSxRQUMzQixPQUFXQSxHQUFRQSxHQUFRLE9BRXBCMUIsRUFLUCxLQUFVMEIsR0FBUUEsR0FBUSxLQUMxQixNQUFVQSxHQUFRQSxHQUFRLE1BQzFCLE1BQVVBLEdBQVFBLEdBQVEsTUFDMUIsTUFBVUEsR0FBUUEsR0FBUSxNQUNqQkEsR0FBVixNQUNDLE1BQVVBLEdBQVFBLEdBQVEsTUFDMUIsTUFBVUEsR0FBUUEsR0FBUSxNQUNqQkEsR0FBVixNQUNDLE1BQVVBLEdBQVFBLEdBQVEsTUFDMUIsTUFBVUEsR0FBUUEsR0FBUSxNQUNqQkEsR0FBVixNQUNDLE1BQVVBLEdBQVFBLEdBQVEsTUFDMUIsTUFBVUEsR0FBUUEsR0FBUSxNQUMxQixNQUFVQSxHQUFRQSxHQUFRLE1BQzFCLE1BQVVBLEdBQVFBLEdBQVEsTUFDakJBLEdBQVYsTUFDQyxNQUFVQSxHQUFRQSxHQUFRLE1BQzFCLE1BQVVBLEdBQVFBLEdBQVEsTUFDMUIsTUFBVUEsR0FBUUEsR0FBUSxNQUMxQixNQUFVQSxHQUFRQSxHQUFRLE1BQzFCLE1BQVVBLEdBQVFBLEdBQVEsTUFDMUIsTUFBVUEsR0FBUUEsR0FBUSxNQUMxQixNQUFVQSxHQUFRQSxHQUFRLE1BQzFCLE1BQVVBLEdBQVFBLEdBQVEsTUFDMUIsTUFBVUEsR0FBUUEsR0FBUSxNQUMxQixNQUFVQSxHQUFRQSxHQUFRLE1BQ2pCQSxHQUFWLE1BQ1VBLEdBQVYsTUFDQyxNQUFVQSxHQUFRQSxHQUFRLE1BQ2pCQSxHQUFWLE1BQ0MsTUFBVUEsR0FBUUEsR0FBUSxNQUMxQixNQUFVQSxHQUFRQSxHQUFRLE1BQ2pCQSxHQUFWLE1BQ1VBLEdBQVYsTUFDVUEsR0FBVixNQUNDLE1BQVVBLEdBQVFBLEdBQVEsTUFDakJBLEdBQVYsTUFDVUEsR0FBVixNQUNDLE1BQVVBLEdBQVFBLEdBQVEsTUFDMUIsTUFBVUEsR0FBUUEsR0FBUSxNQUNqQkEsR0FBVixNQUNDLE1BQVVBLEdBQVFBLEdBQVEsTUFDMUIsTUFBVUEsR0FBUUEsR0FBUSxNQUMxQixNQUFVQSxHQUFRQSxHQUFRLE1BQ2pCQSxHQUFWLE1BQ0MsTUFBVUEsR0FBUUEsR0FBUSxNQUNqQkEsR0FBVixNQUNDLE1BQVVBLEdBQVFBLEdBQVEsTUFDakJBLEdBQVYsTUFDQyxNQUFVQSxHQUFRQSxHQUFRLE1BQzFCLE1BQVVBLEdBQVFBLEdBQVEsTUFDakJBLEdBQVYsTUFDQyxNQUFVQSxHQUFRQSxHQUFRLE1BQzFCLE1BQVVBLEdBQVFBLEdBQVEsTUFDakJBLEdBQVYsTUFDVUEsR0FBVixNQUNVQSxHQUFWLE1BQ1VBLEdBQVYsTUFDQyxNQUFVQSxHQUFRQSxHQUFRLE1BQ2pCQSxHQUFWLE1BQ1VBLEdBQVYsTUFDVUEsR0FBVixNQUNDLE1BQVVBLEdBQVFBLEdBQVEsTUFDakJBLEdBQVYsTUFDVUEsR0FBVixNQUNVQSxHQUFWLE1BQ1VBLEdBQVYsTUFDVUEsR0FBVixNQUNVQSxHQUFWLE1BQ0MsTUFBVUEsR0FBUUEsR0FBUSxNQUMxQixNQUFVQSxHQUFRQSxHQUFRLE1BQzFCLE1BQVVBLEdBQVFBLEdBQVEsTUFDMUIsTUFBVUEsR0FBUUEsR0FBUSxNQUMxQixNQUFVQSxHQUFRQSxHQUFRLE1BQ2pCQSxHQUFWLE1BQ1VBLEdBQVYsTUFDVUEsR0FBVixNQUNVQSxHQUFWLE1BQ1VBLEdBQVYsTUFDQyxNQUFVQSxHQUFRQSxHQUFRLE1BQzFCLE1BQVVBLEdBQVFBLEdBQVEsTUFDMUIsTUFBVUEsR0FBUUEsR0FBUSxNQUMxQixNQUFVQSxHQUFRQSxHQUFRLE1BQzFCLE1BQVVBLEdBQVFBLEdBQVEsTUFDakJBLEdBQVYsTUFDQyxNQUFVQSxHQUFRQSxHQUFRLE1BQ2pCQSxHQUFWLE1BQ1VBLEdBQVYsTUFDQyxNQUFVQSxHQUFRQSxHQUFRLE1BQ2pCQSxHQUFWLE1BQ1VBLEdBQVYsTUFDQyxNQUFVQSxHQUFRQSxHQUFRLE1BQ2pCQSxHQUFWLE1BQ1VBLEdBQVYsTUFDVUEsR0FBVixNQUNDLE1BQVVBLEdBQVFBLEdBQVEsTUFDMUIsTUFBVUEsR0FBUUEsR0FBUSxNQUNqQkEsR0FBVixNQUNDLE1BQVVBLEdBQVFBLEdBQVEsTUFDMUIsTUFBVUEsR0FBUUEsR0FBUSxNQUMxQixNQUFVQSxHQUFRQSxHQUFRLE1BQzFCLE1BQVVBLEdBQVFBLEdBQVEsTUFDakJBLEdBQVYsTUFDVUEsR0FBVixNQUNVQSxHQUFWLE1BQ0MsTUFBVUEsR0FBUUEsR0FBUSxNQUMxQixNQUFVQSxHQUFRQSxHQUFRLE1BQzFCLE1BQVVBLEdBQVFBLEdBQVEsTUFDMUIsTUFBVUEsR0FBUUEsR0FBUSxNQUMxQixNQUFVQSxHQUFRQSxHQUFRLE1BQ2pCQSxHQUFWLE1BQ0MsTUFBVUEsR0FBUUEsR0FBUSxNQUMxQixNQUFVQSxHQUFRQSxHQUFRLE1BQzFCLE1BQVVBLEdBQVFBLEdBQVEsTUFDMUIsTUFBVUEsR0FBUUEsR0FBUSxNQUMxQixNQUFVQSxHQUFRQSxHQUFRLE1BQzFCLE1BQVVBLEdBQVFBLEdBQVEsTUFDMUIsTUFBVUEsR0FBUUEsR0FBUSxNQUNqQkEsR0FBVixNQUNDLE1BQVVBLEdBQVFBLEdBQVEsTUFDakJBLEdBQVYsTUFDVUEsR0FBVixNQUNDLE1BQVVBLEdBQVFBLEdBQVEsTUFDMUIsTUFBVUEsR0FBUUEsR0FBUSxNQUMxQixNQUFVQSxHQUFRQSxHQUFRLE1BQzFCLE1BQVVBLEdBQVFBLEdBQVEsTUFDMUIsTUFBVUEsR0FBUUEsR0FBUSxNQUMxQixNQUFVQSxHQUFRQSxHQUFRLE1BQzFCLE1BQVVBLEdBQVFBLEdBQVEsTUFDakJBLEdBQVYsTUFDQyxNQUFVQSxHQUFRQSxHQUFRLE1BQ2pCQSxHQUFWLE1BQ0MsTUFBVUEsR0FBUUEsR0FBUSxNQUMxQixNQUFVQSxHQUFRQSxHQUFRLE1BQ2pCQSxHQUFWLE1BQ0MsTUFBVUEsR0FBUUEsR0FBUSxNQUMxQixNQUFVQSxHQUFRQSxHQUFRLE1BQ2pCQSxHQUFWLE1BQ0MsTUFBVUEsR0FBUUEsR0FBUSxNQUMxQixNQUFVQSxHQUFRQSxHQUFRLE1BQ2pCQSxHQUFWLE1BQ1VBLEdBQVYsTUFDQyxNQUFVQSxHQUFRQSxHQUFRLE1BQ2pCQSxHQUFWLE1BQ1VBLEdBQVYsTUFDQyxNQUFVQSxHQUFRQSxHQUFRLE1BQzFCLE1BQVVBLEdBQVFBLEdBQVEsTUFDakJBLEdBQVYsTUFDQyxNQUFVQSxHQUFRQSxHQUFRLE1BQ2pCQSxHQUFWLE1BQ0MsTUFBVUEsR0FBUUEsR0FBUSxNQUNqQkEsR0FBVixNQUNDLE1BQVVBLEdBQVFBLEdBQVEsTUFDakJBLEdBQVYsTUFDVUEsR0FBVixNQUNDLE1BQVVBLEdBQVFBLEdBQVEsTUFDMUIsTUFBVUEsR0FBUUEsR0FBUSxNQUMxQixNQUFVQSxHQUFRQSxHQUFRLE1BQzFCLE1BQVVBLEdBQVFBLEdBQVEsTUFDMUIsTUFBVUEsR0FBUUEsR0FBUSxNQUNqQkEsR0FBVixNQUNDLE1BQVVBLEdBQVFBLEdBQVEsTUFDakJBLEdBQVYsTUFDQyxNQUFVQSxHQUFRQSxHQUFRLE1BQzFCLE1BQVVBLEdBQVFBLEdBQVEsTUFDMUIsTUFBVUEsR0FBUUEsR0FBUSxNQUMxQixNQUFVQSxHQUFRQSxHQUFRLE1BQzFCLE1BQVVBLEdBQVFBLEdBQVEsTUFDMUIsTUFBVUEsR0FBUUEsR0FBUSxNQUNqQkEsR0FBVixNQUNVQSxHQUFWLE1BQ0MsTUFBVUEsR0FBUUEsR0FBUSxNQUMxQixNQUFVQSxHQUFRQSxHQUFRLE1BQzFCLE1BQVVBLEdBQVFBLEdBQVEsTUFDakJBLEdBQVYsTUFDQyxNQUFVQSxHQUFRQSxHQUFRLE1BQzFCLE1BQVVBLEdBQVFBLEdBQVEsTUFDakJBLEdBQVYsTUFDQyxNQUFVQSxHQUFRQSxHQUFRLE1BQzFCLE1BQVVBLEdBQVFBLEdBQVEsTUFDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUNqQkEsR0FBVixPQUNDLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDakJBLEdBQVYsT0FDQyxPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQ2pCQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNDLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQ2pCQSxHQUFWLE9BQ0MsT0FBVUEsR0FBUUEsR0FBUSxPQUNqQkEsR0FBVixPQUNVQSxHQUFWLE9BQ0MsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDakJBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDQyxPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUNqQkEsR0FBVixPQUNDLE9BQVVBLEdBQVFBLEdBQVEsT0FDakJBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNDLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQ2hCQSxHQUFYLE9BQ1dBLEdBQVgsT0FDQyxPQUFXQSxHQUFRQSxHQUFRLE9BQzNCLE9BQVdBLEdBQVFBLEdBQVEsT0FDM0IsT0FBV0EsR0FBUUEsR0FBUSxPQUMzQixPQUFXQSxHQUFRQSxHQUFRLE9BQzNCLE9BQVdBLEdBQVFBLEdBQVEsT0FDakJBLEdBQVgsT0FDQyxPQUFXQSxHQUFRQSxHQUFRLE9BQ2pCQSxHQUFYLE9BQ0MsT0FBV0EsR0FBUUEsR0FBUSxPQUMzQixPQUFXQSxHQUFRQSxHQUFRLE9BQzNCLE9BQVdBLEdBQVFBLEdBQVEsT0FDM0IsT0FBV0EsR0FBUUEsR0FBUSxPQUMzQixPQUFXQSxHQUFRQSxHQUFRLE9BQzNCLE9BQVdBLEdBQVFBLEdBQVEsT0FDM0IsT0FBV0EsR0FBUUEsR0FBUSxPQUNqQkEsR0FBWCxPQUNDLE9BQVdBLEdBQVFBLEdBQVEsT0FDM0IsT0FBV0EsR0FBUUEsR0FBUSxPQUMzQixPQUFXQSxHQUFRQSxHQUFRLE9BQzNCLE9BQVdBLEdBQVFBLEdBQVEsT0FDakJBLEdBQVgsT0FDQyxPQUFXQSxHQUFRQSxHQUFRLE9BQ2pCQSxHQUFYLE9BQ1dBLEdBQVgsT0FDQyxPQUFXQSxHQUFRQSxHQUFRLE9BQzNCLE9BQVdBLEdBQVFBLEdBQVEsT0FDakJBLEdBQVgsT0FDV0EsR0FBWCxPQUNXQSxHQUFYLE9BQ1dBLEdBQVgsT0FDQyxPQUFXQSxHQUFRQSxHQUFRLE9BQzNCLE9BQVdBLEdBQVFBLEdBQVEsT0FDM0IsT0FBV0EsR0FBUUEsR0FBUSxPQUMzQixPQUFXQSxHQUFRQSxHQUFRLE9BQ2pCQSxHQUFYLE9BQ1dBLEdBQVgsT0FDQyxPQUFXQSxHQUFRQSxHQUFRLE9BQ2pCQSxHQUFYLE9BQ1dBLEdBQVgsT0FDQyxPQUFXQSxHQUFRQSxHQUFRLE9BQzNCLE9BQVdBLEdBQVFBLEdBQVEsT0FDakJBLEdBQVgsT0FDQyxPQUFXQSxHQUFRQSxHQUFRLE9BQzNCLE9BQVdBLEdBQVFBLEdBQVEsT0FDM0IsT0FBV0EsR0FBUUEsR0FBUSxPQUMzQixPQUFXQSxHQUFRQSxHQUFRLE9BQzNCLE9BQVdBLEdBQVFBLEdBQVEsT0FDakJBLEdBQVgsT0FDQyxPQUFXQSxHQUFRQSxHQUFRLE9BQ2pCQSxHQUFYLE9BQ1dBLEdBQVgsT0FDQyxPQUFXQSxHQUFRQSxHQUFRLE9BQ2pCQSxHQUFYLE9BQ0MsT0FBV0EsR0FBUUEsR0FBUSxPQUMzQixPQUFXQSxHQUFRQSxHQUFRLE9BQzNCLE9BQVdBLEdBQVFBLEdBQVEsT0FDM0IsT0FBV0EsR0FBUUEsR0FBUSxPQUMzQixPQUFXQSxHQUFRQSxHQUFRLE9BQzNCLE9BQVdBLEdBQVFBLEdBQVEsT0FDM0IsT0FBV0EsR0FBUUEsR0FBUSxPQUNqQkEsR0FBWCxPQUNDLE9BQVdBLEdBQVFBLEdBQVEsT0FDM0IsT0FBV0EsR0FBUUEsR0FBUSxPQUMzQixPQUFXQSxHQUFRQSxHQUFRLE9BQzNCLE9BQVdBLEdBQVFBLEdBQVEsT0FDM0IsT0FBV0EsR0FBUUEsR0FBUSxPQUMzQixPQUFXQSxHQUFRQSxHQUFRLE9BQ2pCQSxHQUFYLE9BQ0MsT0FBV0EsR0FBUUEsR0FBUSxPQUMzQixPQUFXQSxHQUFRQSxHQUFRLE9BQzNCLE9BQVdBLEdBQVFBLEdBQVEsT0FDM0IsT0FBV0EsR0FBUUEsR0FBUSxPQUMzQixPQUFXQSxHQUFRQSxHQUFRLE9BQ2pCQSxHQUFYLE9BQ0MsT0FBV0EsR0FBUUEsR0FBUSxPQUMzQixPQUFXQSxHQUFRQSxHQUFRLE9BQ2pCQSxHQUFYLE9BQ0MsT0FBV0EsR0FBUUEsR0FBUSxPQUMzQixPQUFXQSxHQUFRQSxHQUFRLE9BQzNCLE9BQVdBLEdBQVFBLEdBQVEsT0FDM0IsUUFBV0EsR0FBUUEsR0FBUSxRQUNqQkEsR0FBWCxRQUNDLFFBQVdBLEdBQVFBLEdBQVEsUUFDM0IsUUFBV0EsR0FBUUEsR0FBUSxRQUMzQixRQUFXQSxHQUFRQSxHQUFRLFFBQzNCLFFBQVdBLEdBQVFBLEdBQVEsUUFDM0IsUUFBV0EsR0FBUUEsR0FBUSxRQUMzQixRQUFXQSxHQUFRQSxHQUFRLFFBQzNCLFFBQVdBLEdBQVFBLEdBQVEsUUFDM0IsUUFBV0EsR0FBUUEsR0FBUSxRQUNqQkEsR0FBWCxRQUNXQSxHQUFYLFFBQ0MsUUFBV0EsR0FBUUEsR0FBUSxRQUMzQixRQUFXQSxHQUFRQSxHQUFRLFFBQzNCLFFBQVdBLEdBQVFBLEdBQVEsUUFDM0IsUUFBV0EsR0FBUUEsR0FBUSxRQUMzQixRQUFXQSxHQUFRQSxHQUFRLFFBQzNCLFFBQVdBLEdBQVFBLEdBQVEsUUFDM0IsUUFBV0EsR0FBUUEsR0FBUSxRQUMzQixRQUFXQSxHQUFRQSxHQUFRLFFBQzNCLFFBQVdBLEdBQVFBLEdBQVEsUUFDM0IsUUFBV0EsR0FBUUEsR0FBUSxRQUMzQixRQUFXQSxHQUFRQSxHQUFRLE9BRXBCekIsRUFLUCxRQUFXeUIsR0FBUUEsR0FBUSxPQUVwQnhCLEVBSUV3QixHQUFWLE1BQ1VBLEdBQVYsTUFDQyxNQUFVQSxHQUFRQSxHQUFRLE1BQzFCLE1BQVVBLEdBQVFBLEdBQVEsTUFDMUIsTUFBVUEsR0FBUUEsR0FBUSxNQUMxQixNQUFVQSxHQUFRQSxHQUFRLE1BQzFCLE1BQVVBLEdBQVFBLEdBQVEsTUFDMUIsTUFBVUEsR0FBUUEsR0FBUSxNQUMxQixNQUFVQSxHQUFRQSxHQUFRLE1BQ2pCQSxHQUFWLE1BQ0MsTUFBVUEsR0FBUUEsR0FBUSxNQUNqQkEsR0FBVixNQUNDLE1BQVVBLEdBQVFBLEdBQVEsTUFDakJBLEdBQVYsTUFDQyxNQUFVQSxHQUFRQSxHQUFRLE1BQzFCLE1BQVVBLEdBQVFBLEdBQVEsTUFDakJBLEdBQVYsTUFDQyxNQUFVQSxHQUFRQSxHQUFRLE1BQzFCLE1BQVVBLEdBQVFBLEdBQVEsTUFDakJBLEdBQVYsTUFDQyxNQUFVQSxHQUFRQSxHQUFRLE1BQzFCLE1BQVVBLEdBQVFBLEdBQVEsTUFDMUIsTUFBVUEsR0FBUUEsR0FBUSxNQUMxQixNQUFVQSxHQUFRQSxHQUFRLE1BQzFCLE1BQVVBLEdBQVFBLEdBQVEsTUFDMUIsTUFBVUEsR0FBUUEsR0FBUSxNQUNqQkEsR0FBVixNQUNDLE1BQVVBLEdBQVFBLEdBQVEsTUFDMUIsTUFBVUEsR0FBUUEsR0FBUSxNQUMxQixNQUFVQSxHQUFRQSxHQUFRLE1BQzFCLE1BQVVBLEdBQVFBLEdBQVEsTUFDMUIsTUFBVUEsR0FBUUEsR0FBUSxNQUMxQixNQUFVQSxHQUFRQSxHQUFRLE1BQzFCLE1BQVVBLEdBQVFBLEdBQVEsTUFDMUIsTUFBVUEsR0FBUUEsR0FBUSxNQUMxQixNQUFVQSxHQUFRQSxHQUFRLE1BQzFCLE1BQVVBLEdBQVFBLEdBQVEsTUFDMUIsTUFBVUEsR0FBUUEsR0FBUSxNQUMxQixNQUFVQSxHQUFRQSxHQUFRLE1BQ2pCQSxHQUFWLE1BQ1VBLEdBQVYsTUFDQyxNQUFVQSxHQUFRQSxHQUFRLE1BQ2pCQSxHQUFWLE1BQ1VBLEdBQVYsTUFDQyxNQUFVQSxHQUFRQSxHQUFRLE1BQzFCLE1BQVVBLEdBQVFBLEdBQVEsTUFDakJBLEdBQVYsTUFDVUEsR0FBVixNQUNDLE1BQVVBLEdBQVFBLEdBQVEsTUFDMUIsTUFBVUEsR0FBUUEsR0FBUSxNQUMxQixNQUFVQSxHQUFRQSxHQUFRLE1BQzFCLE1BQVVBLEdBQVFBLEdBQVEsTUFDMUIsTUFBVUEsR0FBUUEsR0FBUSxNQUMxQixNQUFVQSxHQUFRQSxHQUFRLE1BQzFCLE1BQVVBLEdBQVFBLEdBQVEsTUFDakJBLEdBQVYsTUFDVUEsR0FBVixNQUNDLE1BQVVBLEdBQVFBLEdBQVEsTUFDakJBLEdBQVYsTUFDVUEsR0FBVixNQUNVQSxHQUFWLE1BQ0MsTUFBVUEsR0FBUUEsR0FBUSxNQUMxQixNQUFVQSxHQUFRQSxHQUFRLE1BQ2pCQSxHQUFWLE1BQ1VBLEdBQVYsTUFDQyxNQUFVQSxHQUFRQSxHQUFRLE1BQ2pCQSxHQUFWLE1BQ1VBLEdBQVYsTUFDQyxNQUFVQSxHQUFRQSxHQUFRLE1BQ2pCQSxHQUFWLE1BQ0MsTUFBVUEsR0FBUUEsR0FBUSxNQUMxQixNQUFVQSxHQUFRQSxHQUFRLE1BQzFCLE1BQVVBLEdBQVFBLEdBQVEsTUFDakJBLEdBQVYsTUFDQyxNQUFVQSxHQUFRQSxHQUFRLE1BQ2pCQSxHQUFWLE1BQ0MsT0FBVUEsR0FBUUEsR0FBUSxPQUNqQkEsR0FBVixPQUNDLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQ2pCQSxHQUFWLE9BQ0MsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQ2pCQSxHQUFWLE9BQ1VBLEdBQVYsT0FDQyxPQUFVQSxHQUFRQSxHQUFRLE9BQ2pCQSxHQUFWLE9BQ0MsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDakJBLEdBQVYsT0FDV0EsR0FBWCxPQUNXQSxHQUFYLE9BQ1dBLEdBQVgsT0FDQyxPQUFXQSxHQUFRQSxHQUFRLE9BQzNCLE9BQVdBLEdBQVFBLEdBQVEsT0FDakJBLEdBQVgsT0FDV0EsR0FBWCxPQUNDLE9BQVdBLEdBQVFBLEdBQVEsT0FDM0IsT0FBV0EsR0FBUUEsR0FBUSxPQUMzQixPQUFXQSxHQUFRQSxHQUFRLE9BQzNCLE9BQVdBLEdBQVFBLEdBQVEsT0FDakJBLEdBQVgsT0FDQyxPQUFXQSxHQUFRQSxHQUFRLE9BQzNCLE9BQVdBLEdBQVFBLEdBQVEsT0FDakJBLEdBQVgsT0FDQyxPQUFXQSxHQUFRQSxHQUFRLE9BQzNCLE9BQVdBLEdBQVFBLEdBQVEsT0FDM0IsT0FBV0EsR0FBUUEsR0FBUSxPQUMzQixPQUFXQSxHQUFRQSxHQUFRLE9BQzNCLE9BQVdBLEdBQVFBLEdBQVEsT0FDM0IsT0FBV0EsR0FBUUEsR0FBUSxPQUNqQkEsR0FBWCxPQUNDLE9BQVdBLEdBQVFBLEdBQVEsT0FDakJBLEdBQVgsT0FDQyxPQUFXQSxHQUFRQSxHQUFRLE9BQ2pCQSxHQUFYLE9BQ1dBLEdBQVgsT0FDQyxPQUFXQSxHQUFRQSxHQUFRLE9BQzNCLE9BQVdBLEdBQVFBLEdBQVEsT0FDakJBLEdBQVgsT0FDQyxPQUFXQSxHQUFRQSxHQUFRLE9BQzNCLE9BQVdBLEdBQVFBLEdBQVEsT0FDakJBLEdBQVgsT0FDV0EsR0FBWCxPQUNDLE9BQVdBLEdBQVFBLEdBQVEsT0FDakJBLEdBQVgsT0FDQyxPQUFXQSxHQUFRQSxHQUFRLE9BQ2pCQSxHQUFYLE9BQ0MsT0FBV0EsR0FBUUEsR0FBUSxPQUNqQkEsR0FBWCxPQUNDLE9BQVdBLEdBQVFBLEdBQVEsT0FDakJBLEdBQVgsT0FDV0EsR0FBWCxPQUNXQSxHQUFYLE9BQ1dBLEdBQVgsT0FDV0EsR0FBWCxPQUNXQSxHQUFYLE9BQ0MsT0FBV0EsR0FBUUEsR0FBUSxPQUNqQkEsR0FBWCxRQUNXQSxHQUFYLE9BRVF2QixFQUtQLE1BQVV1QixHQUFRQSxHQUFRLE1BQzFCLE9BQVVBLEdBQVFBLEdBQVEsTUFFbkJ0QixFQUlQLE1BQVVzQixHQUFRQSxHQUFRLE1BQzFCLE9BQVVBLEdBQVFBLEdBQVEsTUFFbkJyQixFQUtQLE1BQVVxQixHQUFRQSxHQUFRLE1BQzFCLE9BQVVBLEdBQVFBLEdBQVEsTUFFbkJwQixFQUlFb0IsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE1BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsTUFDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsT0FDVUEsR0FBVixPQUNVQSxHQUFWLE9BQ1VBLEdBQVYsTUFFUW5CLEVBSVAsT0FBVW1CLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE9BQzFCLE9BQVVBLEdBQVFBLEdBQVEsT0FDMUIsT0FBVUEsR0FBUUEsR0FBUSxPQUMxQixPQUFVQSxHQUFRQSxHQUFRLE1BRW5CbEIsRUFJRWtCLEdBQVYsTUFDVUEsR0FBVixNQUNDLE1BQVVBLEdBQVFBLEdBQVEsTUFDaEJBLEdBQVgsUUFDQyxRQUFXQSxHQUFRQSxHQUFRLFFBQ2pCQSxHQUFYLFFBQ0MsUUFBV0EsR0FBUUEsR0FBUSxRQUMzQixRQUFXQSxHQUFRQSxHQUFRLFFBQzNCLFFBQVdBLEdBQVFBLEdBQVEsUUFDakJBLEdBQVgsUUFDQyxRQUFXQSxHQUFRQSxHQUFRLFFBQ2pCQSxHQUFYLFFBQ0MsUUFBV0EsR0FBUUEsR0FBUSxRQUMzQixRQUFXQSxHQUFRQSxHQUFRLFFBQ2pCQSxHQUFYLFFBQ0MsUUFBV0EsR0FBUUEsR0FBUSxRQUNqQkEsR0FBWCxRQUNXQSxHQUFYLFFBQ0MsUUFBV0EsR0FBUUEsR0FBUSxRQUMzQixR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QzVCQyxHQUFvQixTQUVwQkcsS0FFTVAsSUFBMEIsUUFBUSxLQUFLLEdBQ3ZDZCxJQUFrQixRQUFRLEtBQUssS0NSckMsSUFBTXNCLElBQWEsQ0FDakIsZUFBZ0IsY0FBNEIsUUFDNUMsaUJBQWtCLGNBQThCLE9BQ2xELEVBRUFBLElBQVcsUUFBUSxLQUFLLElBQUkiLAogICJuYW1lcyI6IFsicmVxdWlyZV90c2xpYiIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgIl9fZXh0ZW5kcyIsICJfX2Fzc2lnbiIsICJfX3Jlc3QiLCAiX19kZWNvcmF0ZSIsICJfX3BhcmFtIiwgIl9fbWV0YWRhdGEiLCAiX19hd2FpdGVyIiwgIl9fZ2VuZXJhdG9yIiwgIl9fZXhwb3J0U3RhciIsICJfX3ZhbHVlcyIsICJfX3JlYWQiLCAiX19zcHJlYWQiLCAiX19zcHJlYWRBcnJheXMiLCAiX19zcHJlYWRBcnJheSIsICJfX2F3YWl0IiwgIl9fYXN5bmNHZW5lcmF0b3IiLCAiX19hc3luY0RlbGVnYXRvciIsICJfX2FzeW5jVmFsdWVzIiwgIl9fbWFrZVRlbXBsYXRlT2JqZWN0IiwgIl9faW1wb3J0U3RhciIsICJfX2ltcG9ydERlZmF1bHQiLCAiX19jbGFzc1ByaXZhdGVGaWVsZEdldCIsICJfX2NsYXNzUHJpdmF0ZUZpZWxkU2V0IiwgIl9fY2xhc3NQcml2YXRlRmllbGRJbiIsICJfX2NyZWF0ZUJpbmRpbmciLCAiZmFjdG9yeSIsICJyb290IiwgImNyZWF0ZUV4cG9ydGVyIiwgInByZXZpb3VzIiwgImlkIiwgInYiLCAiZXhwb3J0ZXIiLCAiZXh0ZW5kU3RhdGljcyIsICJkIiwgImIiLCAicCIsICJfXyIsICJ0IiwgInMiLCAiaSIsICJuIiwgImUiLCAiZGVjb3JhdG9ycyIsICJ0YXJnZXQiLCAia2V5IiwgImRlc2MiLCAiYyIsICJyIiwgInBhcmFtSW5kZXgiLCAiZGVjb3JhdG9yIiwgIm1ldGFkYXRhS2V5IiwgIm1ldGFkYXRhVmFsdWUiLCAidGhpc0FyZyIsICJfYXJndW1lbnRzIiwgIlAiLCAiZ2VuZXJhdG9yIiwgImFkb3B0IiwgInZhbHVlIiwgInJlc29sdmUiLCAicmVqZWN0IiwgImZ1bGZpbGxlZCIsICJzdGVwIiwgInJlamVjdGVkIiwgInJlc3VsdCIsICJib2R5IiwgIl8iLCAiZiIsICJ5IiwgImciLCAidmVyYiIsICJvcCIsICJtIiwgIm8iLCAiayIsICJrMiIsICJhciIsICJlcnJvciIsICJpbCIsICJhIiwgImoiLCAiamwiLCAidG8iLCAiZnJvbSIsICJwYWNrIiwgImwiLCAicSIsICJyZXN1bWUiLCAic2V0dGxlIiwgImZ1bGZpbGwiLCAiY29va2VkIiwgInJhdyIsICJfX3NldE1vZHVsZURlZmF1bHQiLCAibW9kIiwgInJlY2VpdmVyIiwgInN0YXRlIiwgImtpbmQiLCAicmVxdWlyZV9jb25zdGFudHMiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgInJlcXVpcmVfZXJyb3JzIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtYWtlRXJyb3IiLCAiY29kZSIsICJtZXNzYWdlIiwgIkVCVVNZIiwgIkVOT1NZUyIsICJyZWFzb24iLCAiRUlOVkFMIiwgIkVCQURGIiwgIkVOT0VOVCIsICJFTk9URElSIiwgIkVJU0RJUiIsICJFRVhJU1QiLCAiRVJPRlMiLCAiRU5PVEVNUFRZIiwgIkVPUE5PVFNVUFAiLCAiRVJSX0RJUl9DTE9TRUQiLCAicmVxdWlyZV9zdGF0VXRpbHMiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgInRzbGliXzEiLCAibm9kZVV0aWxzIiwgImNvbnN0YW50c18xIiwgIkRpckVudHJ5IiwgIlN0YXRFbnRyeSIsICJCaWdJbnRTdGF0c0VudHJ5IiwgIm1ha2VEZWZhdWx0U3RhdHMiLCAibWFrZUVtcHR5U3RhdHMiLCAiY2xlYXJTdGF0cyIsICJzdGF0cyIsICJrZXkiLCAiZWxlbWVudCIsICJjb252ZXJ0VG9CaWdJbnRTdGF0cyIsICJiaWdpbnRTdGF0cyIsICJhcmVTdGF0c0VxdWFsIiwgImEiLCAiYiIsICJhTiIsICJiTiIsICJyZXF1aXJlX3BhdGgiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgInRzbGliXzEiLCAicGF0aF8xIiwgIlBhdGhUeXBlIiwgInRvUG9ydGFibGVQYXRoIiwgInNlZ21lbnRzIiwgImNvbnRhaW5zIiwgInBhdGhVdGlscyIsICJmcm9tIiwgInRvIiwgImZyb21Qb3J0YWJsZVBhdGgiLCAiV0lORE9XU19QQVRIX1JFR0VYUCIsICJVTkNfV0lORE9XU19QQVRIX1JFR0VYUCIsICJQT1JUQUJMRV9QQVRIX1JFR0VYUCIsICJVTkNfUE9SVEFCTEVfUEFUSF9SRUdFWFAiLCAicCIsICJwb3J0YWJsZVBhdGhNYXRjaCIsICJ1bmNQb3J0YWJsZVBhdGhNYXRjaCIsICJ3aW5kb3dzUGF0aE1hdGNoIiwgInVuY1dpbmRvd3NQYXRoTWF0Y2giLCAiY29udmVydFBhdGgiLCAidGFyZ2V0UGF0aFV0aWxzIiwgInNvdXJjZVBhdGgiLCAidG9GaWxlbmFtZSIsICJmaWxlbmFtZSIsICJyZXF1aXJlX2NvcHlQcm9taXNlIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJ0c2xpYl8xIiwgImNvbnN0YW50cyIsICJwYXRoXzEiLCAiZGVmYXVsdFRpbWUiLCAiZGVmYXVsdFRpbWVNcyIsICJzZXR1cENvcHlJbmRleCIsICJkZXN0aW5hdGlvbkZzIiwgImxpbmtTdHJhdGVneSIsICJoZXhDaGFyYWN0ZXJzIiwgInByb21pc2VzIiwgImwxIiwgImwyIiwgImNvcHlQcm9taXNlIiwgImRlc3RpbmF0aW9uIiwgInNvdXJjZUZzIiwgInNvdXJjZSIsICJvcHRzIiwgIm5vcm1hbGl6ZWREZXN0aW5hdGlvbiIsICJub3JtYWxpemVkU291cmNlIiwgInByZWxheW91dCIsICJwb3N0bGF5b3V0IiwgImF0aW1lIiwgIm10aW1lIiwgImNvcHlJbXBsIiwgIm9wZXJhdGlvbiIsICJfYSIsICJfYiIsICJfYyIsICJkZXN0aW5hdGlvblN0YXQiLCAibWF5YmVMU3RhdCIsICJzb3VyY2VTdGF0IiwgInVwZGF0ZWQiLCAiY29weUZvbGRlciIsICJjb3B5RmlsZSIsICJjb3B5U3ltbGluayIsICJiYXNlRnMiLCAicCIsICJlcnIiLCAiZW50cmllcyIsICJuZXh0T3B0cyIsICJlbnRyeSIsICJzdGF0dXMiLCAiY29weUZpbGVWaWFJbmRleCIsICJzb3VyY2VIYXNoIiwgImluZGV4UGF0aCIsICJBdG9taWNCZWhhdmlvciIsICJhdG9taWNCZWhhdmlvciIsICJpbmRleFN0YXQiLCAiaXNEZXN0aW5hdGlvbkhhcmRsaW5rZWRGcm9tSW5kZXgiLCAiaXNJbmRleE1vZGlmaWVkIiwgInRlbXBQYXRoIiwgInRlbXBQYXRoQ2xlYW5lZCIsICJjb250ZW50IiwgImNvcHlGaWxlRGlyZWN0IiwgInJlcXVpcmVfb3BlbmRpciIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAidHNsaWJfMSIsICJlcnJvcnMiLCAiQ3VzdG9tRGlyIiwgInBhdGgiLCAibmV4dERpcmVudCIsICJvcHRzIiwgImRpcmVudCIsICJjYiIsICJfYSIsICJfYiIsICJvcGVuZGlyIiwgImZha2VGcyIsICJlbnRyaWVzIiwgImZpbGVuYW1lIiwgInJlcXVpcmVfQ3VzdG9tU3RhdFdhdGNoZXIiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgInRzbGliXzEiLCAiZXZlbnRzXzEiLCAic3RhdFV0aWxzIiwgIkV2ZW50IiwgIlN0YXR1cyIsICJhc3NlcnRTdGF0dXMiLCAiY3VycmVudCIsICJleHBlY3RlZCIsICJDdXN0b21TdGF0V2F0Y2hlciIsICJmYWtlRnMiLCAicGF0aCIsICJvcHRzIiwgInN0YXRXYXRjaGVyIiwgImJpZ2ludCIsICJzdGF0SW5zdGFuY2UiLCAiaW50ZXJ2YWwiLCAiY3VycmVudFN0YXRzIiwgInByZXZpb3VzU3RhdHMiLCAibGlzdGVuZXIiLCAicmVxdWlyZV93YXRjaEZpbGUiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIkN1c3RvbVN0YXRXYXRjaGVyXzEiLCAic3RhdFdhdGNoZXJzQnlGYWtlRlMiLCAid2F0Y2hGaWxlIiwgImZha2VGcyIsICJwYXRoIiwgImEiLCAiYiIsICJiaWdpbnQiLCAicGVyc2lzdGVudCIsICJpbnRlcnZhbCIsICJsaXN0ZW5lciIsICJzdGF0V2F0Y2hlcnMiLCAic3RhdFdhdGNoZXIiLCAidW53YXRjaEZpbGUiLCAiY2IiLCAidW53YXRjaEFsbEZpbGVzIiwgInJlcXVpcmVfRmFrZUZTIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJjcnlwdG9fMSIsICJvc18xIiwgImNvcHlQcm9taXNlXzEiLCAicGF0aF8xIiwgIkZha2VGUyIsICJwYXRoVXRpbHMiLCAiaW5pdCIsICJzdGFibGVTb3J0IiwgInN0YWNrIiwgInAiLCAiZW50cmllcyIsICJlbnRyeSIsICJwYXRoIiwgImFsZ29yaXRobSIsICJmZCIsICJjaHVuayIsICJoYXNoIiwgImJ5dGVzUmVhZCIsICJyZWN1cnNpdmUiLCAibWF4UmV0cmllcyIsICJzdGF0IiwgImVycm9yIiwgInQiLCAicmVzb2x2ZSIsICJjaG1vZCIsICJ1dGltZXMiLCAicGFydHMiLCAiY3JlYXRlZERpcmVjdG9yeSIsICJ1IiwgInN1YlBhdGgiLCAicGFyZW50U3RhdCIsICJkZXN0aW5hdGlvbiIsICJzb3VyY2UiLCAiYmFzZUZzIiwgIm92ZXJ3cml0ZSIsICJzdGFibGVUaW1lIiwgImxpbmtTdHJhdGVneSIsICJleGlzdHMiLCAiZGlyZWN0b3J5TGlzdGluZyIsICJjb250ZW50IiwgInRhcmdldCIsICJtb2RlIiwgIm9wdHMiLCAiY3VycmVudCIsICJhdXRvbWF0aWNOZXdsaW5lcyIsICJub3JtYWxpemVkQ29udGVudCIsICJub3JtYWxpemVMaW5lRW5kaW5ncyIsICJmcm9tUCIsICJ0b1AiLCAiYWZmZWN0ZWRQYXRoIiwgImNhbGxiYWNrIiwgImxvY2tQYXRoIiwgImludGVydmFsIiwgInN0YXJ0VGltZSIsICJpc0FsaXZlIiwgInBpZCIsICJkYXRhIiwgImNiIiwgInJlc3VsdCIsICJCYXNlUG9ydGFibGVGYWtlRlMiLCAiZ2V0RW5kT2ZMaW5lIiwgIm1hdGNoZXMiLCAiY3JsZiIsICJubCIsICJsZiIsICJvcmlnaW5hbENvbnRlbnQiLCAibmV3Q29udGVudCIsICJyZXF1aXJlX1Byb3hpZWRGUyIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAiRmFrZUZTXzEiLCAiUHJveGllZEZTIiwgImhpbnRzIiwgInBhdGgiLCAicCIsICJmbGFncyIsICJtb2RlIiwgIm9wdHMiLCAiZmQiLCAiYnVmZmVyIiwgIm9mZnNldCIsICJsZW5ndGgiLCAicG9zaXRpb24iLCAibWFzayIsICJ1aWQiLCAiZ2lkIiwgIm9sZFAiLCAibmV3UCIsICJzb3VyY2VQIiwgImRlc3RQIiwgImNvbnRlbnQiLCAiYXRpbWUiLCAibXRpbWUiLCAiZXhpc3RpbmdQIiwgInRhcmdldCIsICJ0eXBlIiwgIm1hcHBlZFAiLCAibWFwcGVkQWJzb2x1dGVUYXJnZXQiLCAibWFwcGVkVGFyZ2V0IiwgImVuY29kaW5nIiwgImxlbiIsICJhIiwgImIiLCAiY2IiLCAicmVxdWlyZV9BbGlhc0ZTIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJQcm94aWVkRlNfMSIsICJBbGlhc0ZTIiwgInRhcmdldCIsICJiYXNlRnMiLCAicGF0aFV0aWxzIiwgInAiLCAicmVxdWlyZV9Ob2RlRlMiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgInRzbGliXzEiLCAiZnNfMSIsICJGYWtlRlNfMSIsICJwYXRoXzEiLCAiTm9kZUZTIiwgInJlYWxGcyIsICJwIiwgImZsYWdzIiwgIm1vZGUiLCAicmVzb2x2ZSIsICJyZWplY3QiLCAib3B0cyIsICJkaXIiLCAiZmQiLCAiYnVmZmVyIiwgIm9mZnNldCIsICJsZW5ndGgiLCAicG9zaXRpb24iLCAiZXJyb3IiLCAiYnl0ZXNSZWFkIiwgInJlYWxQYXRoIiwgInBhdGgiLCAibWFzayIsICJ1aWQiLCAiZ2lkIiwgIm9sZFAiLCAibmV3UCIsICJzb3VyY2VQIiwgImRlc3RQIiwgImNvbnRlbnQiLCAiZnNOYXRpdmVQYXRoIiwgImF0aW1lIiwgIm10aW1lIiwgImV4aXN0aW5nUCIsICJ0YXJnZXQiLCAidHlwZSIsICJlbmNvZGluZyIsICJ2YWx1ZSIsICJsZW4iLCAiYSIsICJiIiwgImNiIiwgImVyciIsICJyZXN1bHQiLCAicmVxdWlyZV9Dd2RGUyIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAiTm9kZUZTXzEiLCAiUHJveGllZEZTXzEiLCAicGF0aF8xIiwgIkN3ZEZTIiwgInRhcmdldCIsICJiYXNlRnMiLCAicCIsICJwYXRoIiwgInJlcXVpcmVfSmFpbEZTIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJOb2RlRlNfMSIsICJQcm94aWVkRlNfMSIsICJwYXRoXzEiLCAiSkFJTF9ST09UIiwgIkphaWxGUyIsICJ0YXJnZXQiLCAiYmFzZUZzIiwgInAiLCAibm9ybWFsaXplZCIsICJyZXF1aXJlX0xhenlGUyIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAiUHJveGllZEZTXzEiLCAiTGF6eUZTIiwgImZhY3RvcnkiLCAicGF0aFV0aWxzIiwgInZhbHVlIiwgInAiLCAicmVxdWlyZV9Nb3VudEZTIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJ0c2xpYl8xIiwgImZzXzEiLCAiRmFrZUZTXzEiLCAiTm9kZUZTXzEiLCAid2F0Y2hGaWxlXzEiLCAiZXJyb3JzIiwgInBhdGhfMSIsICJNT1VOVF9NQVNLIiwgIk1vdW50RlMiLCAiYmFzZUZzIiwgImZpbHRlciIsICJtYWdpY0J5dGUiLCAibWF4T3BlbkZpbGVzIiwgInVzZUNhY2hlIiwgIm1heEFnZSIsICJnZXRNb3VudFBvaW50IiwgImZhY3RvcnlQcm9taXNlIiwgImZhY3RvcnlTeW5jIiwgImhpbnRzIiwgIl9hIiwgInBhdGgiLCAiY2hpbGRGcyIsICJwIiwgIm1vdW50RnMiLCAiZmQiLCAicmVtYXBwZWRGZCIsICJmbGFncyIsICJtb2RlIiwgInN1YlBhdGgiLCAib3B0cyIsICJidWZmZXIiLCAib2Zmc2V0IiwgImxlbmd0aCIsICJwb3NpdGlvbiIsICJlbnRyeSIsICJyZWFsRmQiLCAiYXJjaGl2ZVBhdGgiLCAic3RyZWFtIiwgInJlYWxBcmNoaXZlUGF0aCIsICJtYXNrIiwgInVpZCIsICJnaWQiLCAiemlwRnMiLCAib2xkUCIsICJuZXdQIiwgIm1vdW50RnNPIiwgInN1YlBhdGhPIiwgIm1vdW50RnNOIiwgInN1YlBhdGhOIiwgInNvdXJjZVAiLCAiZGVzdFAiLCAiZmFsbGJhY2siLCAic291cmNlRnMiLCAiZGVzdEZzIiwgImNvbnRlbnQiLCAibW91bnRGc0QiLCAic3ViUGF0aEQiLCAibW91bnRGc1MiLCAic3ViUGF0aFMiLCAiYXRpbWUiLCAibXRpbWUiLCAiZXhpc3RpbmdQIiwgInRhcmdldCIsICJ0eXBlIiwgImVuY29kaW5nIiwgImxlbiIsICJhIiwgImIiLCAiY2IiLCAiZGlzY2FyZCIsICJhY2NlcHQiLCAicmVxdWlyZVN1YnBhdGgiLCAibm9ybWFsaXplZFAiLCAibW91bnRJbmZvIiwgImZpbGVQYXRoIiwgInBhdGhQYXJ0V2l0aEFyY2hpdmUiLCAibW91bnRQb2ludCIsICJtYXgiLCAiX2IiLCAiX2MiLCAibm93IiwgIm5leHRFeHBpcmVzQXQiLCAiY2xvc2VDb3VudCIsICJleHBpcmVzQXQiLCAicmVmQ291bnQiLCAiY2FjaGVkTW91bnRGcyIsICJjcmVhdGVGc0luc3RhbmNlIiwgInJlcXVpcmVfTm9GUyIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAiRmFrZUZTXzEiLCAicGF0aF8xIiwgIm1ha2VFcnJvciIsICJOb0ZTIiwgInAiLCAiZmQiLCAibGVuIiwgInJlcXVpcmVfUG9zaXhGUyIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAiUHJveGllZEZTXzEiLCAicGF0aF8xIiwgIlBvc2l4RlMiLCAiYmFzZUZzIiwgInBhdGgiLCAicmVxdWlyZV9WaXJ0dWFsRlMiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIk5vZGVGU18xIiwgIlByb3hpZWRGU18xIiwgInBhdGhfMSIsICJOVU1CRVJfUkVHRVhQIiwgIlZJUlRVQUxfUkVHRVhQIiwgIlZBTElEX0NPTVBPTkVOVCIsICJWaXJ0dWFsRlMiLCAiYmFzZSIsICJjb21wb25lbnQiLCAidG8iLCAic2VnbWVudHMiLCAiZGVwdGgiLCAiZmluYWxTZWdtZW50cyIsICJwIiwgIm1hdGNoIiwgInRhcmdldCIsICJiYWNrc3RlcCIsICJzdWJwYXRoIiwgImJhc2VGcyIsICJoaW50cyIsICJyZWFscGF0aCIsICJyZXNvbHZlZFJvb3QiLCAicmVzb2x2ZWRQIiwgInJlcXVpcmVfTm9kZVBhdGhGUyIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAidXJsXzEiLCAidXRpbF8xIiwgIlByb3hpZWRGU18xIiwgInBhdGhfMSIsICJOb2RlUGF0aEZTIiwgImJhc2VGcyIsICJwYXRoIiwgInN0ciIsICJyZXF1aXJlX0ZpbGVIYW5kbGUiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIl9hIiwgIl9iIiwgIl9jIiwgIl9kIiwgImtCYXNlRnMiLCAia0ZkIiwgImtDbG9zZVByb21pc2UiLCAia0Nsb3NlUmVzb2x2ZSIsICJrQ2xvc2VSZWplY3QiLCAia1JlZnMiLCAia1JlZiIsICJrVW5yZWYiLCAiRmlsZUhhbmRsZSIsICJmZCIsICJiYXNlRnMiLCAiZGF0YSIsICJvcHRpb25zIiwgIl9lIiwgImVuY29kaW5nIiwgInVpZCIsICJnaWQiLCAibW9kZSIsICJidWZmZXJPck9wdGlvbnMiLCAib2Zmc2V0IiwgImxlbmd0aCIsICJwb3NpdGlvbiIsICJfZiIsICJfZyIsICJidWZmZXIiLCAib3B0cyIsICJsZW4iLCAiYXRpbWUiLCAibXRpbWUiLCAiYXJncyIsICJidWZmZXJzIiwgImJ5dGVzV3JpdHRlbiIsICJ3cml0ZVJlc3VsdCIsICJyZXNvbHZlIiwgInJlamVjdCIsICJjYWxsZXIiLCAiZXJyIiwgInJlcXVpcmVfcGF0Y2hGcyIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAidXRpbF8xIiwgIk5vZGVQYXRoRlNfMSIsICJGaWxlSGFuZGxlXzEiLCAiU1lOQ19JTVBMRU1FTlRBVElPTlMiLCAiQVNZTkNfSU1QTEVNRU5UQVRJT05TIiwgInBhdGNoRnMiLCAicGF0Y2hlZEZzIiwgImZha2VGcyIsICJzZXR1cEZuIiwgInRhcmdldCIsICJuYW1lIiwgInJlcGxhY2VtZW50IiwgIm9yaWciLCAicCIsICJhcmdzIiwgImNhbGxiYWNrIiwgImV4aXN0cyIsICJmZCIsICJidWZmZXIiLCAib2Zmc2V0IiwgImxlbmd0aCIsICJwb3NpdGlvbiIsICJvcHRpb25zIiwgImJ5dGVzUmVhZCIsICJlcnJvciIsICJmbk5hbWUiLCAib3JpZ05hbWUiLCAiZmFrZUltcGwiLCAicmVzdWx0IiwgInBhdGNoZWRGc1Byb21pc2VzIiwgInBhdGhMaWtlIiwgImV4dGVuZEZzIiwgInJlYWxGcyIsICJyZXF1aXJlX3hmcyIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAidHNsaWJfMSIsICJvc18xIiwgIk5vZGVGU18xIiwgInBhdGhfMSIsICJnZXRUZW1wTmFtZSIsICJwcmVmaXgiLCAiaGFzaCIsICJ0bXBkaXJzIiwgInRtcEVudiIsICJpbml0VG1wRW52IiwgInRtcGRpciIsICJyZWFsVG1wZGlyIiwgInAiLCAiY2IiLCAibmFtZSIsICJlcnJvciIsICJyZWFsUCIsICJyZXF1aXJlX2xpYiIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAidHNsaWJfMSIsICJjb25zdGFudHMiLCAiZXJyb3JzIiwgInN0YXRVdGlscyIsICJjb3B5UHJvbWlzZV8xIiwgIm9wZW5kaXJfMSIsICJ3YXRjaEZpbGVfMSIsICJGYWtlRlNfMSIsICJwYXRoXzEiLCAicGF0aF8yIiwgIkFsaWFzRlNfMSIsICJGYWtlRlNfMiIsICJDd2RGU18xIiwgIkphaWxGU18xIiwgIkxhenlGU18xIiwgIk1vdW50RlNfMSIsICJOb0ZTXzEiLCAiTm9kZUZTXzEiLCAiUG9zaXhGU18xIiwgIlByb3hpZWRGU18xIiwgIlZpcnR1YWxGU18xIiwgInBhdGNoRnNfMSIsICJ4ZnNfMSIsICJyZXF1aXJlX3dpbmRvd3MiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJpc2V4ZSIsICJzeW5jIiwgImZzIiwgImNoZWNrUGF0aEV4dCIsICJwYXRoIiwgIm9wdGlvbnMiLCAicGF0aGV4dCIsICJpIiwgInAiLCAiY2hlY2tTdGF0IiwgInN0YXQiLCAiY2IiLCAiZXIiLCAicmVxdWlyZV9tb2RlIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiaXNleGUiLCAic3luYyIsICJmcyIsICJwYXRoIiwgIm9wdGlvbnMiLCAiY2IiLCAiZXIiLCAic3RhdCIsICJjaGVja1N0YXQiLCAiY2hlY2tNb2RlIiwgIm1vZCIsICJ1aWQiLCAiZ2lkIiwgIm15VWlkIiwgIm15R2lkIiwgInUiLCAibyIsICJ1ZyIsICJyZXQiLCAicmVxdWlyZV9pc2V4ZSIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImZzIiwgImNvcmUiLCAiaXNleGUiLCAic3luYyIsICJwYXRoIiwgIm9wdGlvbnMiLCAiY2IiLCAicmVzb2x2ZSIsICJyZWplY3QiLCAiZXIiLCAiaXMiLCAicmVxdWlyZV93aGljaCIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImlzV2luZG93cyIsICJwYXRoIiwgIkNPTE9OIiwgImlzZXhlIiwgImdldE5vdEZvdW5kRXJyb3IiLCAiY21kIiwgImdldFBhdGhJbmZvIiwgIm9wdCIsICJjb2xvbiIsICJwYXRoRW52IiwgInBhdGhFeHRFeGUiLCAicGF0aEV4dCIsICJ3aGljaCIsICJjYiIsICJmb3VuZCIsICJzdGVwIiwgImkiLCAicmVzb2x2ZSIsICJyZWplY3QiLCAicHBSYXciLCAicGF0aFBhcnQiLCAicENtZCIsICJwIiwgInN1YlN0ZXAiLCAiaWkiLCAiZXh0IiwgImVyIiwgImlzIiwgInJlcyIsICJ3aGljaFN5bmMiLCAiaiIsICJjdXIiLCAicmVxdWlyZV9wYXRoX2tleSIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgInBhdGhLZXkiLCAib3B0aW9ucyIsICJlbnZpcm9ubWVudCIsICJrZXkiLCAicmVxdWlyZV9yZXNvbHZlQ29tbWFuZCIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgInBhdGgiLCAid2hpY2giLCAiZ2V0UGF0aEtleSIsICJyZXNvbHZlQ29tbWFuZEF0dGVtcHQiLCAicGFyc2VkIiwgIndpdGhvdXRQYXRoRXh0IiwgImVudiIsICJjd2QiLCAiaGFzQ3VzdG9tQ3dkIiwgInNob3VsZFN3aXRjaEN3ZCIsICJyZXNvbHZlZCIsICJyZXNvbHZlQ29tbWFuZCIsICJyZXF1aXJlX2VzY2FwZSIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgIm1ldGFDaGFyc1JlZ0V4cCIsICJlc2NhcGVDb21tYW5kIiwgImFyZyIsICJlc2NhcGVBcmd1bWVudCIsICJkb3VibGVFc2NhcGVNZXRhQ2hhcnMiLCAicmVxdWlyZV9zaGViYW5nX3JlZ2V4IiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAicmVxdWlyZV9zaGViYW5nX2NvbW1hbmQiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJzaGViYW5nUmVnZXgiLCAic3RyaW5nIiwgIm1hdGNoIiwgInBhdGgiLCAiYXJndW1lbnQiLCAiYmluYXJ5IiwgInJlcXVpcmVfcmVhZFNoZWJhbmciLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJmcyIsICJzaGViYW5nQ29tbWFuZCIsICJyZWFkU2hlYmFuZyIsICJjb21tYW5kIiwgImJ1ZmZlciIsICJmZCIsICJyZXF1aXJlX3BhcnNlIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAicGF0aCIsICJyZXNvbHZlQ29tbWFuZCIsICJlc2NhcGUiLCAicmVhZFNoZWJhbmciLCAiaXNXaW4iLCAiaXNFeGVjdXRhYmxlUmVnRXhwIiwgImlzQ21kU2hpbVJlZ0V4cCIsICJkZXRlY3RTaGViYW5nIiwgInBhcnNlZCIsICJzaGViYW5nIiwgInBhcnNlTm9uU2hlbGwiLCAiY29tbWFuZEZpbGUiLCAibmVlZHNTaGVsbCIsICJuZWVkc0RvdWJsZUVzY2FwZU1ldGFDaGFycyIsICJhcmciLCAic2hlbGxDb21tYW5kIiwgInBhcnNlIiwgImNvbW1hbmQiLCAiYXJncyIsICJvcHRpb25zIiwgInJlcXVpcmVfZW5vZW50IiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiaXNXaW4iLCAibm90Rm91bmRFcnJvciIsICJvcmlnaW5hbCIsICJzeXNjYWxsIiwgImhvb2tDaGlsZFByb2Nlc3MiLCAiY3AiLCAicGFyc2VkIiwgIm9yaWdpbmFsRW1pdCIsICJuYW1lIiwgImFyZzEiLCAiZXJyIiwgInZlcmlmeUVOT0VOVCIsICJzdGF0dXMiLCAidmVyaWZ5RU5PRU5UU3luYyIsICJyZXF1aXJlX2Nyb3NzX3NwYXduIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiY3AiLCAicGFyc2UiLCAiZW5vZW50IiwgInNwYXduIiwgImNvbW1hbmQiLCAiYXJncyIsICJvcHRpb25zIiwgInBhcnNlZCIsICJzcGF3bmVkIiwgInNwYXduU3luYyIsICJyZXN1bHQiLCAicmVxdWlyZV9pbnN0YW5jZSIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAicmVnaXN0ZXJlZEZhY3RvcnkiLCAic2V0RmFjdG9yeSIsICJmYWN0b3J5IiwgImdldEluc3RhbmNlIiwgInRyeUluc3RhbmNlIiwgInJlcXVpcmVfbGliemlwU3luYyIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImZyb3plbkZzIiwgImNyZWF0ZU1vZHVsZSIsICJfc2NyaXB0RGlyIiwgIk1vZHVsZSIsICJyZWFkeVByb21pc2VSZXNvbHZlIiwgInJlYWR5UHJvbWlzZVJlamVjdCIsICJyZXNvbHZlIiwgInJlamVjdCIsICJtb2R1bGVPdmVycmlkZXMiLCAia2V5IiwgImFyZ3VtZW50c18iLCAidGhpc1Byb2dyYW0iLCAicXVpdF8iLCAic3RhdHVzIiwgInRvVGhyb3ciLCAiRU5WSVJPTk1FTlRfSVNfV09SS0VSIiwgIkVOVklST05NRU5UX0lTX05PREUiLCAic2NyaXB0RGlyZWN0b3J5IiwgImxvY2F0ZUZpbGUiLCAicGF0aCIsICJyZWFkXyIsICJyZWFkQmluYXJ5IiwgIm5vZGVGUyIsICJub2RlUGF0aCIsICJmaWxlbmFtZSIsICJiaW5hcnkiLCAicmV0IiwgInRyeVBhcnNlQXNEYXRhVVJJIiwgImFzc2VydCIsICJvdXQiLCAiZXJyIiwgIlNUQUNLX0FMSUdOIiwgImFsaWduTWVtb3J5IiwgInNpemUiLCAiZmFjdG9yIiwgInRlbXBSZXQwIiwgInNldFRlbXBSZXQwIiwgInZhbHVlIiwgIndhc21CaW5hcnkiLCAibm9FeGl0UnVudGltZSIsICJhYm9ydCIsICJnZXRWYWx1ZSIsICJwdHIiLCAidHlwZSIsICJub1NhZmUiLCAiSEVBUDgiLCAiTEVfSEVBUF9MT0FEX0kxNiIsICJMRV9IRUFQX0xPQURfSTMyIiwgIkxFX0hFQVBfTE9BRF9GMzIiLCAiTEVfSEVBUF9MT0FEX0Y2NCIsICJ3YXNtTWVtb3J5IiwgIkFCT1JUIiwgIkVYSVRTVEFUVVMiLCAiY29uZGl0aW9uIiwgInRleHQiLCAiZ2V0Q0Z1bmMiLCAiaWRlbnQiLCAiZnVuYyIsICJjY2FsbCIsICJyZXR1cm5UeXBlIiwgImFyZ1R5cGVzIiwgImFyZ3MiLCAib3B0cyIsICJ0b0MiLCAic3RyIiwgImxlbiIsICJzdGFja0FsbG9jIiwgInN0cmluZ1RvVVRGOCIsICJhcnIiLCAid3JpdGVBcnJheVRvTWVtb3J5IiwgImNvbnZlcnRSZXR1cm5WYWx1ZSIsICJVVEY4VG9TdHJpbmciLCAiY0FyZ3MiLCAic3RhY2siLCAiaSIsICJjb252ZXJ0ZXIiLCAic3RhY2tTYXZlIiwgInN0YWNrUmVzdG9yZSIsICJjd3JhcCIsICJudW1lcmljQXJncyIsICJudW1lcmljUmV0IiwgIlVURjhEZWNvZGVyIiwgIlVURjhBcnJheVRvU3RyaW5nIiwgImhlYXAiLCAiaWR4IiwgIm1heEJ5dGVzVG9SZWFkIiwgImVuZElkeCIsICJlbmRQdHIiLCAibWF4UHRyIiwgImVuZCIsICJIRUFQVTgiLCAic3RyaW5nVG9VVEY4QXJyYXkiLCAib3V0SWR4IiwgIm1heEJ5dGVzVG9Xcml0ZSIsICJzdGFydElkeCIsICJ1IiwgInUxIiwgIm91dFB0ciIsICJsZW5ndGhCeXRlc1VURjgiLCAiYWxsb2NhdGVVVEY4IiwgIl9tYWxsb2MiLCAiYXJyYXkiLCAiYnVmZmVyIiwgImFsaWduVXAiLCAieCIsICJtdWx0aXBsZSIsICJIRUFQMTYiLCAiSEVBUFUxNiIsICJIRUFQMzIiLCAiSEVBUFUzMiIsICJIRUFQRjMyIiwgIkhFQVBGNjQiLCAiSEVBUF9EQVRBX1ZJRVciLCAidXBkYXRlR2xvYmFsQnVmZmVyQW5kVmlld3MiLCAiYnVmIiwgIklOSVRJQUxfTUVNT1JZIiwgIndhc21UYWJsZSIsICJfX0FUUFJFUlVOX18iLCAiX19BVElOSVRfXyIsICJfX0FUUE9TVFJVTl9fIiwgInJ1bnRpbWVJbml0aWFsaXplZCIsICJwcmVSdW4iLCAiYWRkT25QcmVSdW4iLCAiY2FsbFJ1bnRpbWVDYWxsYmFja3MiLCAiaW5pdFJ1bnRpbWUiLCAiRlMiLCAiVFRZIiwgInBvc3RSdW4iLCAiYWRkT25Qb3N0UnVuIiwgImNiIiwgImFkZE9uSW5pdCIsICJydW5EZXBlbmRlbmNpZXMiLCAicnVuRGVwZW5kZW5jeVdhdGNoZXIiLCAiZGVwZW5kZW5jaWVzRnVsZmlsbGVkIiwgImdldFVuaXF1ZVJ1bkRlcGVuZGVuY3kiLCAiaWQiLCAiYWRkUnVuRGVwZW5kZW5jeSIsICJyZW1vdmVSdW5EZXBlbmRlbmN5IiwgImNhbGxiYWNrIiwgIndoYXQiLCAiZSIsICJkYXRhVVJJUHJlZml4IiwgImlzRGF0YVVSSSIsICJ3YXNtQmluYXJ5RmlsZSIsICJnZXRCaW5hcnkiLCAiZmlsZSIsICJpbnN0YW50aWF0ZVN5bmMiLCAiaW5mbyIsICJpbnN0YW5jZSIsICJjcmVhdGVXYXNtIiwgImFzbUxpYnJhcnlBcmciLCAicmVjZWl2ZUluc3RhbmNlIiwgInJlc3VsdCIsICJ0ZW1wRG91YmxlIiwgInRlbXBJNjQiLCAiYnl0ZU9mZnNldCIsICJMRV9IRUFQX1NUT1JFX0kxNiIsICJMRV9IRUFQX1NUT1JFX0kzMiIsICJjYWxsYmFja3MiLCAiX2dtdGltZV9yIiwgInRpbWUiLCAidG1QdHIiLCAiZGF0ZSIsICJzdGFydCIsICJ5ZGF5IiwgIl9fX2dtdGltZV9yIiwgImEwIiwgImExIiwgIlBBVEgiLCAic3BsaXRQYXRoUmUiLCAicGFydHMiLCAiYWxsb3dBYm92ZVJvb3QiLCAidXAiLCAibGFzdCIsICJpc0Fic29sdXRlIiwgInRyYWlsaW5nU2xhc2giLCAicCIsICJyb290IiwgImRpciIsICJsYXN0U2xhc2giLCAicGF0aHMiLCAibCIsICJyIiwgImdldFJhbmRvbURldmljZSIsICJyYW5kb21CdWZmZXIiLCAiY3J5cHRvX21vZHVsZSIsICJQQVRIX0ZTIiwgInJlc29sdmVkUGF0aCIsICJyZXNvbHZlZEFic29sdXRlIiwgImZyb20iLCAidG8iLCAidHJpbSIsICJmcm9tUGFydHMiLCAidG9QYXJ0cyIsICJsZW5ndGgiLCAic2FtZVBhcnRzTGVuZ3RoIiwgIm91dHB1dFBhcnRzIiwgImRldiIsICJvcHMiLCAic3RyZWFtIiwgInR0eSIsICJvZmZzZXQiLCAicG9zIiwgImJ5dGVzUmVhZCIsICJCVUZTSVpFIiwgImludEFycmF5RnJvbVN0cmluZyIsICJ2YWwiLCAibW1hcEFsbG9jIiwgImFsaWduZWRTaXplIiwgIk1FTUZTIiwgIm1vdW50IiwgInBhcmVudCIsICJuYW1lIiwgIm1vZGUiLCAibm9kZSIsICJuZXdDYXBhY2l0eSIsICJwcmV2Q2FwYWNpdHkiLCAiQ0FQQUNJVFlfRE9VQkxJTkdfTUFYIiwgIm9sZENvbnRlbnRzIiwgIm5ld1NpemUiLCAiYXR0ciIsICJvbGRfbm9kZSIsICJuZXdfZGlyIiwgIm5ld19uYW1lIiwgIm5ld19ub2RlIiwgImVudHJpZXMiLCAibmV3bmFtZSIsICJvbGRwYXRoIiwgInBvc2l0aW9uIiwgImNvbnRlbnRzIiwgImNhbk93biIsICJ3aGVuY2UiLCAiYWRkcmVzcyIsICJwcm90IiwgImZsYWdzIiwgImFsbG9jYXRlZCIsICJtbWFwRmxhZ3MiLCAiYnl0ZXNXcml0dGVuIiwgIkVSUk5PX0NPREVTIiwgIk5PREVGUyIsICJmcyIsICJhcnJheUJ1ZmZlciIsICJjb2RlIiwgInN0YXQiLCAibmV3RmxhZ3MiLCAiayIsICJvbGROb2RlIiwgIm5ld0RpciIsICJuZXdOYW1lIiwgIm9sZFBhdGgiLCAibmV3UGF0aCIsICJOT0RFSlNfUEFUSCIsICJOT0RFUkFXRlMiLCAiZmQiLCAic3VnZ2VzdEZEIiwgIlZGUyIsICJuZmQiLCAic2Vla2luZyIsICJkZWZhdWx0cyIsICJjdXJyZW50IiwgImN1cnJlbnRfcGF0aCIsICJpc2xhc3QiLCAiY291bnQiLCAibGluayIsICJsb29rdXAiLCAicGFyZW50aWQiLCAiaGFzaCIsICJlcnJDb2RlIiwgIm5vZGVOYW1lIiwgInJkZXYiLCAiZmxhZyIsICJwZXJtcyIsICJpc2RpciIsICJmZF9zdGFydCIsICJmZF9lbmQiLCAibmV3U3RyZWFtIiwgImRldmljZSIsICJtYSIsICJtaSIsICJtb3VudHMiLCAiY2hlY2siLCAibSIsICJwb3B1bGF0ZSIsICJjb21wbGV0ZWQiLCAiZG9DYWxsYmFjayIsICJkb25lIiwgIm1vdW50cG9pbnQiLCAicHNldWRvIiwgIm1vdW50Um9vdCIsICJuZXh0IiwgImRpcnMiLCAiZCIsICJuZXdwYXRoIiwgIm9sZF9wYXRoIiwgIm5ld19wYXRoIiwgIm9sZF9kaXJuYW1lIiwgIm5ld19kaXJuYW1lIiwgIm9sZF9uYW1lIiwgIm9sZF9kaXIiLCAicmVsYXRpdmUiLCAiZG9udEZvbGxvdyIsICJ1aWQiLCAiZ2lkIiwgImF0aW1lIiwgIm10aW1lIiwgImNyZWF0ZWQiLCAidHJhY2tpbmdGbGFncyIsICJjbWQiLCAiYXJnIiwgImRhdGEiLCAiYWN0dWFsTnVtQnl0ZXMiLCAicmFuZG9tX2RldmljZSIsICJwcm9jX3NlbGYiLCAic3RkaW4iLCAic3Rkb3V0IiwgInN0ZGVyciIsICJlcnJubyIsICJpbnB1dCIsICJvdXRwdXQiLCAiZXJyb3IiLCAiZmZsdXNoIiwgImNhblJlYWQiLCAiY2FuV3JpdGUiLCAiZG9udFJlc29sdmVMYXN0TGluayIsICJwYXJ0IiwgInByb3BlcnRpZXMiLCAib2JqIiwgInVybCIsICJMYXp5VWludDhBcnJheSIsICJjaHVua09mZnNldCIsICJjaHVua051bSIsICJnZXR0ZXIiLCAieGhyIiwgImRhdGFsZW5ndGgiLCAiaGVhZGVyIiwgImhhc0J5dGVTZXJ2aW5nIiwgInVzZXNHemlwIiwgImNodW5rU2l6ZSIsICJkb1hIUiIsICJsYXp5QXJyYXkiLCAic3RyZWFtX29wcyIsICJrZXlzIiwgImZuIiwgIm9ubG9hZCIsICJvbmVycm9yIiwgImRvbnRDcmVhdGVGaWxlIiwgInByZUZpbmlzaCIsICJmdWxsbmFtZSIsICJkZXAiLCAicHJvY2Vzc0RhdGEiLCAiYnl0ZUFycmF5IiwgImZpbmlzaCIsICJoYW5kbGVkIiwgInBsdWdpbiIsICJpbmRleGVkREIiLCAib3BlblJlcXVlc3QiLCAiZGIiLCAidHJhbnNhY3Rpb24iLCAiZmlsZXMiLCAib2siLCAiZmFpbCIsICJ0b3RhbCIsICJwdXRSZXF1ZXN0IiwgImdldFJlcXVlc3QiLCAiU1lTQ0FMTFMiLCAiZGlyZmQiLCAiYWxsb3dFbXB0eSIsICJkaXJzdHJlYW0iLCAiYWRkciIsICJidWZzaXplIiwgImVuZENoYXIiLCAiYW1vZGUiLCAic3VnZ2VzdCIsICJpb3YiLCAiaW92Y250IiwgImN1cnIiLCAibG93IiwgImhpZ2giLCAiX19fc3lzX2NobW9kIiwgInNldEVyck5vIiwgIl9fX2Vycm5vX2xvY2F0aW9uIiwgIl9fX3N5c19mY250bDY0IiwgInZhcmFyZ3MiLCAiX19fc3lzX2ZzdGF0NjQiLCAiX19fc3lzX2lvY3RsIiwgIm9wIiwgImFyZ3AiLCAiX19fc3lzX29wZW4iLCAicGF0aG5hbWUiLCAiX19fc3lzX3JlbmFtZSIsICJfX19zeXNfcm1kaXIiLCAiX19fc3lzX3N0YXQ2NCIsICJfX19zeXNfdW5saW5rIiwgIl9lbXNjcmlwdGVuX21lbWNweV9iaWciLCAiZGVzdCIsICJzcmMiLCAibnVtIiwgImVtc2NyaXB0ZW5fcmVhbGxvY19idWZmZXIiLCAiX2Vtc2NyaXB0ZW5fcmVzaXplX2hlYXAiLCAicmVxdWVzdGVkU2l6ZSIsICJvbGRTaXplIiwgIm1heEhlYXBTaXplIiwgImN1dERvd24iLCAib3Zlckdyb3duSGVhcFNpemUiLCAicmVwbGFjZW1lbnQiLCAiX2ZkX2Nsb3NlIiwgIl9mZF9mZHN0YXRfZ2V0IiwgInBidWYiLCAiX2ZkX3JlYWQiLCAicG51bSIsICJfZmRfc2VlayIsICJvZmZzZXRfbG93IiwgIm9mZnNldF9oaWdoIiwgIm5ld09mZnNldCIsICJISUdIX09GRlNFVCIsICJET1VCTEVfTElNSVQiLCAiX2ZkX3dyaXRlIiwgIl9zZXRUZW1wUmV0MCIsICJfdGltZSIsICJfdHpzZXQiLCAiY3VycmVudFllYXIiLCAid2ludGVyIiwgInN1bW1lciIsICJ3aW50ZXJPZmZzZXQiLCAic3VtbWVyT2Zmc2V0IiwgInN0ZFRpbWV6b25lT2Zmc2V0IiwgIl9fZ2V0X3RpbWV6b25lIiwgIl9fZ2V0X2RheWxpZ2h0IiwgImV4dHJhY3Rab25lIiwgIm1hdGNoIiwgIndpbnRlck5hbWUiLCAic3VtbWVyTmFtZSIsICJ3aW50ZXJOYW1lUHRyIiwgInN1bW1lck5hbWVQdHIiLCAiX19nZXRfdHpuYW1lIiwgIl90aW1lZ20iLCAiRlNOb2RlIiwgInJlYWRNb2RlIiwgIndyaXRlTW9kZSIsICJfd3JhcE5vZGVFcnJvciIsICJfa2V5IiwgInN0cmluZ3kiLCAiZG9udEFkZE51bGwiLCAidThhcnJheSIsICJudW1CeXRlc1dyaXR0ZW4iLCAiZGVjb2RlQmFzZTY0IiwgImtleVN0ciIsICJjaHIxIiwgImNocjIiLCAiY2hyMyIsICJlbmMxIiwgImVuYzIiLCAiZW5jMyIsICJlbmM0IiwgImludEFycmF5RnJvbUJhc2U2NCIsICJzIiwgImRlY29kZWQiLCAiYnl0ZXMiLCAiYXNtIiwgIl9fX3dhc21fY2FsbF9jdG9ycyIsICJfemlwX2V4dF9jb3VudF9zeW1saW5rcyIsICJfemlwX2ZpbGVfZ2V0X2V4dGVybmFsX2F0dHJpYnV0ZXMiLCAiX3ppcHN0cnVjdF9zdGF0IiwgIl96aXBzdHJ1Y3Rfc3RhdFMiLCAiX3ppcHN0cnVjdF9zdGF0X25hbWUiLCAiX3ppcHN0cnVjdF9zdGF0X2luZGV4IiwgIl96aXBzdHJ1Y3Rfc3RhdF9zaXplIiwgIl96aXBzdHJ1Y3Rfc3RhdF9tdGltZSIsICJfemlwc3RydWN0X3N0YXRfY3JjIiwgIl96aXBzdHJ1Y3RfZXJyb3IiLCAiX3ppcHN0cnVjdF9lcnJvclMiLCAiX3ppcHN0cnVjdF9lcnJvcl9jb2RlX3ppcCIsICJfemlwc3RydWN0X3N0YXRfY29tcF9zaXplIiwgIl96aXBzdHJ1Y3Rfc3RhdF9jb21wX21ldGhvZCIsICJfemlwX2Nsb3NlIiwgIl96aXBfZGVsZXRlIiwgIl96aXBfZGlyX2FkZCIsICJfemlwX2Rpc2NhcmQiLCAiX3ppcF9lcnJvcl9pbml0X3dpdGhfY29kZSIsICJfemlwX2dldF9lcnJvciIsICJfemlwX2ZpbGVfZ2V0X2Vycm9yIiwgIl96aXBfZXJyb3Jfc3RyZXJyb3IiLCAiX3ppcF9mY2xvc2UiLCAiX3ppcF9maWxlX2FkZCIsICJfZnJlZSIsICJfemlwX3NvdXJjZV9lcnJvciIsICJfemlwX3NvdXJjZV9zZWVrIiwgIl96aXBfZmlsZV9zZXRfZXh0ZXJuYWxfYXR0cmlidXRlcyIsICJfemlwX2ZpbGVfc2V0X210aW1lIiwgIl96aXBfZm9wZW4iLCAiX3ppcF9mb3Blbl9pbmRleCIsICJfemlwX2ZyZWFkIiwgIl96aXBfZ2V0X25hbWUiLCAiX3ppcF9nZXRfbnVtX2VudHJpZXMiLCAiX3ppcF9zb3VyY2VfcmVhZCIsICJfemlwX25hbWVfbG9jYXRlIiwgIl96aXBfb3BlbiIsICJfemlwX29wZW5fZnJvbV9zb3VyY2UiLCAiX3ppcF9zZXRfZmlsZV9jb21wcmVzc2lvbiIsICJfemlwX3NvdXJjZV9idWZmZXIiLCAiX3ppcF9zb3VyY2VfYnVmZmVyX2NyZWF0ZSIsICJfemlwX3NvdXJjZV9jbG9zZSIsICJfemlwX3NvdXJjZV9mcmVlIiwgIl96aXBfc291cmNlX2tlZXAiLCAiX3ppcF9zb3VyY2Vfb3BlbiIsICJfemlwX3NvdXJjZV9zZXRfbXRpbWUiLCAiX3ppcF9zb3VyY2VfdGVsbCIsICJfemlwX3N0YXQiLCAiX3ppcF9zdGF0X2luZGV4IiwgImNhbGxlZFJ1biIsICJydW5DYWxsZXIiLCAicnVuIiwgImRvUnVuIiwgInJlcXVpcmVfbWFrZUludGVyZmFjZSIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibnVtYmVyNjQiLCAiRXJyb3JzIiwgIm1ha2VJbnRlcmZhY2UiLCAiZW1aaXAiLCAicmVxdWlyZV9aaXBPcGVuRlMiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgImZzbGliXzEiLCAiZnNsaWJfMiIsICJsaWJ6aXBfMSIsICJnZXRBcmNoaXZlUGFydCIsICJwYXRoIiwgImV4dGVuc2lvbiIsICJpZHgiLCAibmV4dENoYXJJZHgiLCAiWmlwT3BlbkZTIiwgImZuIiwgIm9wdHMiLCAiemlwT3BlbkZzIiwgImZpbGVFeHRlbnNpb25zIiwgInJlYWRPbmx5QXJjaGl2ZXMiLCAiZ2V0TW91bnRQb2ludCIsICJyZXN1bHQiLCAiZmFjdG9yeVN5bmMiLCAiYmFzZUZzIiwgInAiLCAiZmFjdG9yeVByb21pc2UiLCAiemlwT3B0aW9ucyIsICJyZXF1aXJlX1ppcEZTIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJ0c2xpYl8xIiwgImZzbGliXzEiLCAiZnNsaWJfMiIsICJmc2xpYl8zIiwgImZzbGliXzQiLCAiZnNsaWJfNSIsICJmc2xpYl82IiwgImZzXzEiLCAic3RyZWFtXzEiLCAidXRpbF8xIiwgInpsaWJfMSIsICJpbnN0YW5jZV8xIiwgInRvVW5peFRpbWVzdGFtcCIsICJ0aW1lIiwgIm1ha2VFbXB0eUFyY2hpdmUiLCAiTGliemlwRXJyb3IiLCAibWVzc2FnZSIsICJjb2RlIiwgIlppcEZTIiwgInNvdXJjZSIsICJvcHRzIiwgInBhdGhPcHRpb25zIiwgImJhc2VGcyIsICJlcnJvciIsICJlcnJQdHIiLCAiZmxhZ3MiLCAibHpTb3VyY2UiLCAiZW50cnlDb3VudCIsICJ0IiwgInJhdyIsICJwIiwgImVycm9yQ29kZSIsICJzdHJlcnJvciIsICJsaWJ6aXBFcnJvciIsICJoaW50cyIsICJmaWxlTmFtZSIsICJleHQiLCAic2l6ZSIsICJidWZmZXIiLCAicmMiLCAibWVtb3J5IiwgIm5ld01vZGUiLCAibW9kZSIsICJmZCIsICJyZXNvbHZlZFAiLCAiZGlyZWN0b3J5TGlzdGluZyIsICJlbnRyaWVzIiwgIm9uQ2xvc2UiLCAib2Zmc2V0IiwgImxlbmd0aCIsICJwb3NpdGlvbiIsICJlbnRyeSIsICJyZWFsUG9zaXRpb24iLCAiYnl0ZXNSZWFkIiwgImVuY29kaW5nIiwgInN0cmVhbSIsICJjYWxsYmFjayIsICJpbW1lZGlhdGUiLCAiZGF0YSIsICJjaHVua3MiLCAiZXJyIiwgImNodW5rIiwgImNodW5rQnVmZmVyIiwgInJlYXNvbiIsICJzdGF0IiwgInVpZCIsICJnaWQiLCAiYmxrc2l6ZSIsICJibG9ja3MiLCAibXRpbWVNcyIsICJhdGltZU1zIiwgImJpcnRodGltZU1zIiwgImN0aW1lTXMiLCAiYXRpbWUiLCAiYmlydGh0aW1lIiwgImN0aW1lIiwgIm10aW1lIiwgInR5cGUiLCAiZGVmYXVsdE1vZGUiLCAiY3JjIiwgInN0YXRJbnN0YW5jZSIsICJpbmRleCIsICJleGlzdGluZ0xpc3RpbmciLCAibmV3TGlzdGluZyIsICJwYXJlbnRMaXN0aW5nIiwgInJlc29sdmVMYXN0Q29tcG9uZW50IiwgInRocm93SWZOb0VudHJ5IiwgImZpbGVJbmRleCIsICJ0YXJnZXQiLCAicGFyZW50UCIsICJpc0RpciIsICJkb2VzRXhpc3QiLCAiY29udGVudCIsICJieXRlTGVuZ3RoIiwgIm5ld0luZGV4IiwgIm1ldGhvZCIsICJjYWNoZWRGaWxlU291cmNlIiwgImNvbXByZXNzaW9uTWV0aG9kIiwgImZpbGUiLCAicmVzb2x2ZSIsICJyZWplY3QiLCAicmVzdWx0IiwgImRlY29tcHJlc3NlZERhdGEiLCAibWFzayIsICJuZXdNb2QiLCAib2xkUCIsICJuZXdQIiwgInNvdXJjZVAiLCAiZGVzdFAiLCAiaW5kZXhTb3VyY2UiLCAiaW5kZXhEZXN0IiwgInJlc29sdmVkRGVzdFAiLCAicmVzb2x2ZWRTb3VyY2VQIiwgIl9hIiwgInBhdGgiLCAicmVjdXJzaXZlIiwgImV4aXN0aW5nUCIsICJuYW1lIiwgImxlbiIsICJ0cnVuY2F0ZWQiLCAiYSIsICJiIiwgInBlcnNpc3RlbnQiLCAiaW50ZXJ2YWwiLCAiY2IiLCAicmVxdWlyZV9tb3VudE1lbW9yeURyaXZlIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJ0c2xpYl8xIiwgImZzbGliXzEiLCAiZnNfMSIsICJaaXBGU18xIiwgIm1vdW50TWVtb3J5RHJpdmUiLCAib3JpZ0ZzIiwgIm1vdW50UG9pbnQiLCAic291cmNlIiwgImFyY2hpdmUiLCAiZ2V0TW91bnRQb2ludCIsICJwIiwgImZhY3RvcnlQcm9taXNlIiwgImJhc2VGcyIsICJmYWN0b3J5U3luYyIsICJsb2NhbEZzIiwgIm5vZGVGcyIsICJtb3VudEZzIiwgInJlcXVpcmVfY29tbW9uIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJ0c2xpYl8xIiwgIm1vdW50TWVtb3J5RHJpdmVfMSIsICJyZXF1aXJlX3N5bmMiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgInRzbGliXzEiLCAiaW5zdGFuY2VfMSIsICJsaWJ6aXBTeW5jXzEiLCAibWFrZUludGVyZmFjZV8xIiwgImVtWmlwIiwgImdldExpYnppcFN5bmMiLCAiZ2V0TGliemlwUHJvbWlzZSIsICJyZXF1aXJlX3NoZWxsIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAicGVnJHN1YmNsYXNzIiwgImNoaWxkIiwgInBhcmVudCIsICJjdG9yIiwgInBlZyRTeW50YXhFcnJvciIsICJtZXNzYWdlIiwgImV4cGVjdGVkIiwgImZvdW5kIiwgImxvY2F0aW9uIiwgIkRFU0NSSUJFX0VYUEVDVEFUSU9OX0ZOUyIsICJleHBlY3RhdGlvbiIsICJsaXRlcmFsRXNjYXBlIiwgImVzY2FwZWRQYXJ0cyIsICJpIiwgImNsYXNzRXNjYXBlIiwgImhleCIsICJjaCIsICJzIiwgImRlc2NyaWJlRXhwZWN0YXRpb24iLCAiZGVzY3JpYmVFeHBlY3RlZCIsICJkZXNjcmlwdGlvbnMiLCAiaiIsICJkZXNjcmliZUZvdW5kIiwgInBlZyRwYXJzZSIsICJpbnB1dCIsICJvcHRpb25zIiwgInBlZyRGQUlMRUQiLCAicGVnJHN0YXJ0UnVsZUZ1bmN0aW9ucyIsICJwZWckcGFyc2VTdGFydCIsICJwZWckc3RhcnRSdWxlRnVuY3Rpb24iLCAicGVnJGMwIiwgImxpbmUiLCAicGVnJGMxIiwgImNvbW1hbmQiLCAidHlwZSIsICJ0aGVuIiwgInBlZyRjMiIsICJwZWckYzMiLCAicGVnJGM0IiwgInBlZyRjNSIsICJwZWckbGl0ZXJhbEV4cGVjdGF0aW9uIiwgInBlZyRjNiIsICJwZWckYzciLCAicGVnJGM4IiwgImNoYWluIiwgInBlZyRjOSIsICJwZWckYzEwIiwgInBlZyRjMTEiLCAicGVnJGMxMiIsICJwZWckYzEzIiwgInBlZyRjMTQiLCAibWFpbiIsICJwZWckYzE1IiwgInBlZyRjMTYiLCAicGVnJGMxNyIsICJwZWckYzE4IiwgInBlZyRjMTkiLCAicGVnJGMyMCIsICJwZWckYzIxIiwgInBlZyRjMjIiLCAibmFtZSIsICJhcmciLCAicGVnJGMyMyIsICJwZWckYzI0IiwgInBlZyRjMjUiLCAicGVnJGMyNiIsICJwZWckYzI3IiwgInBlZyRjMjgiLCAic3Vic2hlbGwiLCAiYXJncyIsICJwZWckYzI5IiwgInBlZyRjMzAiLCAicGVnJGMzMSIsICJwZWckYzMyIiwgInBlZyRjMzMiLCAiZ3JvdXAiLCAicGVnJGMzNCIsICJlbnZzIiwgInBlZyRjMzUiLCAicGVnJGMzNiIsICJwZWckYzM3IiwgInBlZyRjMzgiLCAicGVnJGMzOSIsICJwZWckY2xhc3NFeHBlY3RhdGlvbiIsICJwZWckYzQwIiwgImZkIiwgInJlZGlyZWN0IiwgInBlZyRjNDEiLCAicGVnJGM0MiIsICJwZWckYzQzIiwgInBlZyRjNDQiLCAicGVnJGM0NSIsICJwZWckYzQ2IiwgInBlZyRjNDciLCAicGVnJGM0OCIsICJwZWckYzQ5IiwgInBlZyRjNTAiLCAicGVnJGM1MSIsICJwZWckYzUyIiwgInBlZyRjNTMiLCAic2VnbWVudHMiLCAicGVnJGM1NCIsICJzdHJpbmciLCAicGVnJGM1NSIsICJwZWckYzU2IiwgInBlZyRjNTciLCAicGVnJGM1OCIsICJwZWckYzU5IiwgInRleHQiLCAicGVnJGM2MCIsICJwZWckYzYxIiwgInBlZyRjNjIiLCAicGVnJGM2MyIsICJwZWckYzY0IiwgInBlZyRjNjUiLCAicGVnJGM2NiIsICJhcml0aG1ldGljIiwgInBlZyRjNjciLCAic2hlbGwiLCAicGVnJGM2OCIsICJ2YXJpYWJsZSIsICJwZWckYzY5IiwgInBlZyRjNzAiLCAicGVnJGM3MSIsICJwZWckYzcyIiwgInBlZyRjNzMiLCAicGF0dGVybiIsICJwZWckYzc0IiwgInBlZyRjNzUiLCAicGVnJGM3NiIsICJjaGFycyIsICJwZWckYzc3IiwgInBlZyRjNzgiLCAicGVnJGM3OSIsICJwZWckYzgwIiwgInBlZyRjODEiLCAicGVnJGM4MiIsICJwZWckYzgzIiwgInBlZyRjODQiLCAicGVnJGM4NSIsICJwZWckYzg2IiwgImMiLCAicGVnJGM4NyIsICJwZWckYzg4IiwgInBlZyRjODkiLCAicGVnJGM5MCIsICJwZWckYzkxIiwgInBlZyRjOTIiLCAicGVnJGM5MyIsICJwZWckYzk0IiwgInBlZyRjOTUiLCAicGVnJGM5NiIsICJwZWckYzk3IiwgInBlZyRjOTgiLCAicGVnJGM5OSIsICJwZWckYzEwMCIsICJwZWckYzEwMSIsICJwZWckYzEwMiIsICJwZWckYzEwMyIsICJwZWckYzEwNCIsICJwZWckYzEwNSIsICJwZWckYzEwNiIsICJwZWckYzEwNyIsICJwZWckYzEwOCIsICJwZWckYzEwOSIsICJwZWckYzExMCIsICJwZWckYzExMSIsICJwZWckYzExMiIsICJwZWckYzExMyIsICJwZWckYzExNCIsICJwZWckYzExNSIsICJwZWckYzExNiIsICJwZWckYzExNyIsICJwZWckYzExOCIsICJwZWckYzExOSIsICJwZWckYzEyMCIsICJwZWckYzEyMSIsICJwZWckYzEyMiIsICJwZWckYzEyMyIsICJwZWckYzEyNCIsICJwZWckYzEyNSIsICJwZWckYW55RXhwZWN0YXRpb24iLCAicGVnJGMxMjYiLCAicGVnJGMxMjciLCAicGVnJGMxMjgiLCAicGVnJGMxMjkiLCAicGVnJGMxMzAiLCAicGVnJGMxMzEiLCAicGVnJGMxMzIiLCAicGVnJGMxMzMiLCAicGVnJGMxMzQiLCAicGVnJGMxMzUiLCAic2lnbiIsICJsZWZ0IiwgInJpZ2h0IiwgInBlZyRjMTM2IiwgInZhbHVlIiwgInBlZyRjMTM3IiwgInBlZyRjMTM4IiwgInBlZyRjMTM5IiwgInBlZyRjMTQwIiwgInBlZyRjMTQxIiwgInBlZyRjMTQyIiwgInBlZyRjMTQzIiwgInBlZyRjMTQ0IiwgIm9wIiwgInBlZyRjMTQ1IiwgInJlc3QiLCAicGVnJGMxNDYiLCAicGVnJGMxNDciLCAicGVnJGMxNDgiLCAicGVnJGMxNDkiLCAicGVnJGMxNTAiLCAicGVnJGMxNTEiLCAicGVnJGMxNTIiLCAicGVnJGMxNTMiLCAicGVnJGMxNTQiLCAicGVnJGMxNTUiLCAicGVnJGMxNTYiLCAicGVnJGMxNTciLCAicGVnJGMxNTgiLCAicGVnJGMxNTkiLCAicGVnJGMxNjAiLCAicGVnJGMxNjEiLCAicGVnJGMxNjIiLCAicGVnJGMxNjMiLCAicGVnJGMxNjQiLCAicGVnJGMxNjUiLCAicGVnJGMxNjYiLCAicGVnJGMxNjciLCAicGVnJGMxNjgiLCAicGVnJGMxNjkiLCAicGVnJGMxNzAiLCAicGVnJGMxNzEiLCAicGVnJGMxNzIiLCAicGVnJGMxNzMiLCAicGVnJGMxNzQiLCAicGVnJGMxNzUiLCAicGVnJGMxNzYiLCAicGVnJGMxNzciLCAicGVnJGMxNzgiLCAicGVnJGMxNzkiLCAicGVnJGMxODAiLCAicGVnJGMxODEiLCAicGVnJGMxODIiLCAicGVnJGMxODMiLCAicGVnJGMxODQiLCAicGVnJGN1cnJQb3MiLCAicGVnJHNhdmVkUG9zIiwgInBlZyRwb3NEZXRhaWxzQ2FjaGUiLCAicGVnJG1heEZhaWxQb3MiLCAicGVnJG1heEZhaWxFeHBlY3RlZCIsICJwZWckc2lsZW50RmFpbHMiLCAicGVnJHJlc3VsdCIsICJwZWckY29tcHV0ZUxvY2F0aW9uIiwgImRlc2NyaXB0aW9uIiwgInBlZyRidWlsZFN0cnVjdHVyZWRFcnJvciIsICJwZWckb3RoZXJFeHBlY3RhdGlvbiIsICJlcnJvciIsICJwZWckYnVpbGRTaW1wbGVFcnJvciIsICJpZ25vcmVDYXNlIiwgInBhcnRzIiwgImludmVydGVkIiwgInBlZyRlbmRFeHBlY3RhdGlvbiIsICJwZWckY29tcHV0ZVBvc0RldGFpbHMiLCAicG9zIiwgImRldGFpbHMiLCAicCIsICJzdGFydFBvcyIsICJlbmRQb3MiLCAic3RhcnRQb3NEZXRhaWxzIiwgImVuZFBvc0RldGFpbHMiLCAicGVnJGZhaWwiLCAiczAiLCAiczEiLCAiczIiLCAicGVnJHBhcnNlUyIsICJwZWckcGFyc2VTaGVsbExpbmUiLCAiczMiLCAiczQiLCAicGVnJHBhcnNlQ29tbWFuZExpbmUiLCAicGVnJHBhcnNlU2hlbGxMaW5lVHlwZSIsICJwZWckcGFyc2VTaGVsbExpbmVUaGVuIiwgInBlZyRwYXJzZUNvbW1hbmRDaGFpbiIsICJwZWckcGFyc2VDb21tYW5kTGluZVRoZW4iLCAiczUiLCAiczYiLCAicGVnJHBhcnNlQ29tbWFuZExpbmVUeXBlIiwgInBlZyRwYXJzZUNvbW1hbmQiLCAicGVnJHBhcnNlQ29tbWFuZENoYWluVGhlbiIsICJwZWckcGFyc2VDb21tYW5kQ2hhaW5UeXBlIiwgInBlZyRwYXJzZVZhcmlhYmxlQXNzaWdubWVudCIsICJwZWckcGFyc2VFbnZWYXJpYWJsZSIsICJwZWckcGFyc2VTdHJpY3RWYWx1ZUFyZ3VtZW50IiwgInM3IiwgInM4IiwgInM5IiwgInMxMCIsICJwZWckcGFyc2VSZWRpcmVjdEFyZ3VtZW50IiwgInBlZyRwYXJzZUFyZ3VtZW50IiwgInBlZyRwYXJzZUNvbW1hbmRTdHJpbmciLCAicGVnJHBhcnNlVmFsdWVBcmd1bWVudCIsICJwZWckcGFyc2VSZWRpcmVjdFR5cGUiLCAicGVnJHBhcnNlQXJndW1lbnRTZWdtZW50IiwgInBlZyRwYXJzZUNRdW90ZVN0cmluZyIsICJwZWckcGFyc2VTZ2xRdW90ZVN0cmluZyIsICJwZWckcGFyc2VEYmxRdW90ZVN0cmluZyIsICJwZWckcGFyc2VQbGFpblN0cmluZyIsICJwZWckcGFyc2VDUXVvdGVTdHJpbmdUZXh0IiwgInBlZyRwYXJzZVNnbFF1b3RlU3RyaW5nVGV4dCIsICJwZWckcGFyc2VEYmxRdW90ZVN0cmluZ1NlZ21lbnQiLCAicGVnJHBhcnNlUGxhaW5TdHJpbmdTZWdtZW50IiwgInBlZyRwYXJzZUFyaXRobWV0aWMiLCAicGVnJHBhcnNlU3Vic2hlbGwiLCAicGVnJHBhcnNlVmFyaWFibGUiLCAicGVnJHBhcnNlRGJsUXVvdGVTdHJpbmdUZXh0IiwgInBlZyRwYXJzZUdsb2IiLCAicGVnJHBhcnNlUGxhaW5TdHJpbmdUZXh0IiwgInBlZyRwYXJzZURibFF1b3RlRXNjYXBlZENoYXIiLCAicGVnJHBhcnNlQ1F1b3RlRXNjYXBlZENoYXIiLCAicGVnJHBhcnNlSGV4Q29kZVN0cmluZyIsICJzMTEiLCAicGVnJHBhcnNlSGV4Q29kZUNoYXIwIiwgInBlZyRwYXJzZUhleENvZGVDaGFyIiwgInBlZyRwYXJzZVNwZWNpYWxTaGVsbENoYXJzIiwgInBlZyRwYXJzZUFyaXRobWV0aWNQcmltYXJ5IiwgInBlZyRwYXJzZUlkZW50aWZpZXIiLCAicGVnJHBhcnNlQXJpdGhtZXRpY0V4cHJlc3Npb24iLCAicGVnJHBhcnNlQXJpdGhtZXRpY1RpbWVzRXhwcmVzc2lvbiIsICJwZWckcGFyc2VHbG9iVGV4dCIsICJwZWckcGFyc2VHbG9iU3BlY2lhbFNoZWxsQ2hhcnMiLCAicmVxdWlyZV9zaGVsbCIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAic2hlbGxfMSIsICJwYXJzZVNoZWxsIiwgInNvdXJjZSIsICJvcHRpb25zIiwgImVycm9yIiwgInN0cmluZ2lmeVNoZWxsTGluZSIsICJzaGVsbExpbmUiLCAiZW5kU2VtaWNvbG9uIiwgImNvbW1hbmQiLCAidHlwZSIsICJpbmRleCIsICJzdHJpbmdpZnlDb21tYW5kTGluZSIsICJjb21tYW5kTGluZSIsICJzdHJpbmdpZnlDb21tYW5kQ2hhaW4iLCAic3RyaW5naWZ5Q29tbWFuZExpbmVUaGVuIiwgImNvbW1hbmRMaW5lVGhlbiIsICJjb21tYW5kQ2hhaW4iLCAic3RyaW5naWZ5Q29tbWFuZCIsICJzdHJpbmdpZnlDb21tYW5kQ2hhaW5UaGVuIiwgImNvbW1hbmRDaGFpblRoZW4iLCAiZW52IiwgInN0cmluZ2lmeUVudlNlZ21lbnQiLCAiYXJndW1lbnQiLCAic3RyaW5naWZ5QXJndW1lbnQiLCAic3RyaW5naWZ5UmVkaXJlY3RBcmd1bWVudCIsICJlbnZTZWdtZW50IiwgInN0cmluZ2lmeVZhbHVlQXJndW1lbnQiLCAic2VnbWVudCIsICJzdHJpbmdpZnlBcmd1bWVudFNlZ21lbnQiLCAiYXJndW1lbnRTZWdtZW50IiwgImRvdWJsZVF1b3RlSWZSZXF1ZXN0ZWQiLCAic3RyaW5nIiwgInF1b3RlIiwgInF1b3RlSWZOZWVkZWQiLCAidGV4dCIsICJzdHJpbmdpZnlBcml0aG1ldGljRXhwcmVzc2lvbiIsICJnZXRPcGVyYXRvciIsICJwYXJlbnRoZXNpemVJZlJlcXVlc3RlZCIsICJwYXJlbnRoZXNpemUiLCAic3RyaW5naWZ5QW5kUGFyZW50aGVzaXplSWZOZWVkZWQiLCAiZXhwcmVzc2lvbiIsICJyZXF1aXJlX3Jlc29sdXRpb24iLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJwZWckc3ViY2xhc3MiLCAiY2hpbGQiLCAicGFyZW50IiwgImN0b3IiLCAicGVnJFN5bnRheEVycm9yIiwgIm1lc3NhZ2UiLCAiZXhwZWN0ZWQiLCAiZm91bmQiLCAibG9jYXRpb24iLCAiREVTQ1JJQkVfRVhQRUNUQVRJT05fRk5TIiwgImV4cGVjdGF0aW9uIiwgImxpdGVyYWxFc2NhcGUiLCAiZXNjYXBlZFBhcnRzIiwgImkiLCAiY2xhc3NFc2NhcGUiLCAiaGV4IiwgImNoIiwgInMiLCAiZGVzY3JpYmVFeHBlY3RhdGlvbiIsICJkZXNjcmliZUV4cGVjdGVkIiwgImRlc2NyaXB0aW9ucyIsICJqIiwgImRlc2NyaWJlRm91bmQiLCAicGVnJHBhcnNlIiwgImlucHV0IiwgIm9wdGlvbnMiLCAicGVnJEZBSUxFRCIsICJwZWckc3RhcnRSdWxlRnVuY3Rpb25zIiwgInBlZyRwYXJzZXJlc29sdXRpb24iLCAicGVnJHN0YXJ0UnVsZUZ1bmN0aW9uIiwgInBlZyRjMCIsICJwZWckYzEiLCAicGVnJGxpdGVyYWxFeHBlY3RhdGlvbiIsICJwZWckYzIiLCAiZnJvbSIsICJkZXNjcmlwdG9yIiwgInBlZyRjMyIsICJwZWckYzQiLCAicGVnJGM1IiwgInBlZyRjNiIsICJmdWxsTmFtZSIsICJkZXNjcmlwdGlvbiIsICJwZWckYzciLCAicGVnJGM4IiwgInRleHQiLCAicGVnJGM5IiwgInBlZyRjMTAiLCAicGVnJGNsYXNzRXhwZWN0YXRpb24iLCAicGVnJGMxMSIsICJwZWckYzEyIiwgInBlZyRjdXJyUG9zIiwgInBlZyRzYXZlZFBvcyIsICJwZWckcG9zRGV0YWlsc0NhY2hlIiwgInBlZyRtYXhGYWlsUG9zIiwgInBlZyRtYXhGYWlsRXhwZWN0ZWQiLCAicGVnJHNpbGVudEZhaWxzIiwgInBlZyRyZXN1bHQiLCAicGVnJGNvbXB1dGVMb2NhdGlvbiIsICJwZWckYnVpbGRTdHJ1Y3R1cmVkRXJyb3IiLCAicGVnJG90aGVyRXhwZWN0YXRpb24iLCAiZXJyb3IiLCAicGVnJGJ1aWxkU2ltcGxlRXJyb3IiLCAiaWdub3JlQ2FzZSIsICJwYXJ0cyIsICJpbnZlcnRlZCIsICJwZWckYW55RXhwZWN0YXRpb24iLCAicGVnJGVuZEV4cGVjdGF0aW9uIiwgInBlZyRjb21wdXRlUG9zRGV0YWlscyIsICJwb3MiLCAiZGV0YWlscyIsICJwIiwgInN0YXJ0UG9zIiwgImVuZFBvcyIsICJzdGFydFBvc0RldGFpbHMiLCAiZW5kUG9zRGV0YWlscyIsICJwZWckZmFpbCIsICJzMCIsICJzMSIsICJzMiIsICJzMyIsICJwZWckcGFyc2VzcGVjaWZpZXIiLCAicGVnJHBhcnNlZnVsbE5hbWUiLCAicGVnJHBhcnNlZGVzY3JpcHRpb24iLCAiczQiLCAicGVnJHBhcnNlaWRlbnQiLCAicmVxdWlyZV9yZXNvbHV0aW9uIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJyZXNvbHV0aW9uXzEiLCAicGFyc2VSZXNvbHV0aW9uIiwgInNvdXJjZSIsICJsZWdhY3lSZXNvbHV0aW9uIiwgImVycm9yIiwgInN0cmluZ2lmeVJlc29sdXRpb24iLCAicmVzb2x1dGlvbiIsICJzdHIiLCAicmVxdWlyZV9jb21tb24iLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJpc05vdGhpbmciLCAic3ViamVjdCIsICJpc09iamVjdCIsICJ0b0FycmF5IiwgInNlcXVlbmNlIiwgImV4dGVuZCIsICJ0YXJnZXQiLCAic291cmNlIiwgImluZGV4IiwgImxlbmd0aCIsICJrZXkiLCAic291cmNlS2V5cyIsICJyZXBlYXQiLCAic3RyaW5nIiwgImNvdW50IiwgInJlc3VsdCIsICJjeWNsZSIsICJpc05lZ2F0aXZlWmVybyIsICJudW1iZXIiLCAicmVxdWlyZV9leGNlcHRpb24iLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJZQU1MRXhjZXB0aW9uIiwgInJlYXNvbiIsICJtYXJrIiwgImNvbXBhY3QiLCAicmVzdWx0IiwgInJlcXVpcmVfbWFyayIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImNvbW1vbiIsICJNYXJrIiwgIm5hbWUiLCAiYnVmZmVyIiwgInBvc2l0aW9uIiwgImxpbmUiLCAiY29sdW1uIiwgImluZGVudCIsICJtYXhMZW5ndGgiLCAiaGVhZCIsICJzdGFydCIsICJ0YWlsIiwgImVuZCIsICJzbmlwcGV0IiwgImNvbXBhY3QiLCAid2hlcmUiLCAicmVxdWlyZV90eXBlIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiWUFNTEV4Y2VwdGlvbiIsICJUWVBFX0NPTlNUUlVDVE9SX09QVElPTlMiLCAiWUFNTF9OT0RFX0tJTkRTIiwgImNvbXBpbGVTdHlsZUFsaWFzZXMiLCAibWFwIiwgInJlc3VsdCIsICJzdHlsZSIsICJhbGlhcyIsICJUeXBlIiwgInRhZyIsICJvcHRpb25zIiwgIm5hbWUiLCAiZGF0YSIsICJyZXF1aXJlX3NjaGVtYSIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImNvbW1vbiIsICJZQU1MRXhjZXB0aW9uIiwgIlR5cGUiLCAiY29tcGlsZUxpc3QiLCAic2NoZW1hIiwgIm5hbWUiLCAicmVzdWx0IiwgImV4Y2x1ZGUiLCAiaW5jbHVkZWRTY2hlbWEiLCAiY3VycmVudFR5cGUiLCAicHJldmlvdXNUeXBlIiwgInByZXZpb3VzSW5kZXgiLCAidHlwZSIsICJpbmRleCIsICJjb21waWxlTWFwIiwgImxlbmd0aCIsICJjb2xsZWN0VHlwZSIsICJTY2hlbWEiLCAiZGVmaW5pdGlvbiIsICJzY2hlbWFzIiwgInR5cGVzIiwgInJlcXVpcmVfc3RyIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiVHlwZSIsICJkYXRhIiwgInJlcXVpcmVfc2VxIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiVHlwZSIsICJkYXRhIiwgInJlcXVpcmVfbWFwIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiVHlwZSIsICJkYXRhIiwgInJlcXVpcmVfZmFpbHNhZmUiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJTY2hlbWEiLCAicmVxdWlyZV9udWxsIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiVHlwZSIsICJyZXNvbHZlWWFtbE51bGwiLCAiZGF0YSIsICJtYXgiLCAiY29uc3RydWN0WWFtbE51bGwiLCAiaXNOdWxsIiwgIm9iamVjdCIsICJyZXF1aXJlX2Jvb2wiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJUeXBlIiwgInJlc29sdmVZYW1sQm9vbGVhbiIsICJkYXRhIiwgIm1heCIsICJjb25zdHJ1Y3RZYW1sQm9vbGVhbiIsICJpc0Jvb2xlYW4iLCAib2JqZWN0IiwgInJlcXVpcmVfaW50IiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiY29tbW9uIiwgIlR5cGUiLCAiaXNIZXhDb2RlIiwgImMiLCAiaXNPY3RDb2RlIiwgImlzRGVjQ29kZSIsICJyZXNvbHZlWWFtbEludGVnZXIiLCAiZGF0YSIsICJtYXgiLCAiaW5kZXgiLCAiaGFzRGlnaXRzIiwgImNoIiwgImNvbnN0cnVjdFlhbWxJbnRlZ2VyIiwgInZhbHVlIiwgInNpZ24iLCAiYmFzZSIsICJkaWdpdHMiLCAidiIsICJkIiwgImlzSW50ZWdlciIsICJvYmplY3QiLCAib2JqIiwgInJlcXVpcmVfZmxvYXQiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJjb21tb24iLCAiVHlwZSIsICJZQU1MX0ZMT0FUX1BBVFRFUk4iLCAicmVzb2x2ZVlhbWxGbG9hdCIsICJkYXRhIiwgImNvbnN0cnVjdFlhbWxGbG9hdCIsICJ2YWx1ZSIsICJzaWduIiwgImJhc2UiLCAiZGlnaXRzIiwgInYiLCAiZCIsICJTQ0lFTlRJRklDX1dJVEhPVVRfRE9UIiwgInJlcHJlc2VudFlhbWxGbG9hdCIsICJvYmplY3QiLCAic3R5bGUiLCAicmVzIiwgImlzRmxvYXQiLCAicmVxdWlyZV9qc29uIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiU2NoZW1hIiwgInJlcXVpcmVfY29yZSIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgIlNjaGVtYSIsICJyZXF1aXJlX3RpbWVzdGFtcCIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgIlR5cGUiLCAiWUFNTF9EQVRFX1JFR0VYUCIsICJZQU1MX1RJTUVTVEFNUF9SRUdFWFAiLCAicmVzb2x2ZVlhbWxUaW1lc3RhbXAiLCAiZGF0YSIsICJjb25zdHJ1Y3RZYW1sVGltZXN0YW1wIiwgIm1hdGNoIiwgInllYXIiLCAibW9udGgiLCAiZGF5IiwgImhvdXIiLCAibWludXRlIiwgInNlY29uZCIsICJmcmFjdGlvbiIsICJkZWx0YSIsICJ0el9ob3VyIiwgInR6X21pbnV0ZSIsICJkYXRlIiwgInJlcHJlc2VudFlhbWxUaW1lc3RhbXAiLCAib2JqZWN0IiwgInJlcXVpcmVfbWVyZ2UiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJUeXBlIiwgInJlc29sdmVZYW1sTWVyZ2UiLCAiZGF0YSIsICJyZXF1aXJlX2JpbmFyeSIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgIk5vZGVCdWZmZXIiLCAiX3JlcXVpcmUiLCAiVHlwZSIsICJCQVNFNjRfTUFQIiwgInJlc29sdmVZYW1sQmluYXJ5IiwgImRhdGEiLCAiY29kZSIsICJpZHgiLCAiYml0bGVuIiwgIm1heCIsICJtYXAiLCAiY29uc3RydWN0WWFtbEJpbmFyeSIsICJ0YWlsYml0cyIsICJpbnB1dCIsICJiaXRzIiwgInJlc3VsdCIsICJyZXByZXNlbnRZYW1sQmluYXJ5IiwgIm9iamVjdCIsICJ0YWlsIiwgImlzQmluYXJ5IiwgInJlcXVpcmVfb21hcCIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgIlR5cGUiLCAiX2hhc093blByb3BlcnR5IiwgIl90b1N0cmluZyIsICJyZXNvbHZlWWFtbE9tYXAiLCAiZGF0YSIsICJvYmplY3RLZXlzIiwgImluZGV4IiwgImxlbmd0aCIsICJwYWlyIiwgInBhaXJLZXkiLCAicGFpckhhc0tleSIsICJvYmplY3QiLCAiY29uc3RydWN0WWFtbE9tYXAiLCAicmVxdWlyZV9wYWlycyIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgIlR5cGUiLCAiX3RvU3RyaW5nIiwgInJlc29sdmVZYW1sUGFpcnMiLCAiZGF0YSIsICJpbmRleCIsICJsZW5ndGgiLCAicGFpciIsICJrZXlzIiwgInJlc3VsdCIsICJvYmplY3QiLCAiY29uc3RydWN0WWFtbFBhaXJzIiwgInJlcXVpcmVfc2V0IiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiVHlwZSIsICJfaGFzT3duUHJvcGVydHkiLCAicmVzb2x2ZVlhbWxTZXQiLCAiZGF0YSIsICJrZXkiLCAib2JqZWN0IiwgImNvbnN0cnVjdFlhbWxTZXQiLCAicmVxdWlyZV9kZWZhdWx0X3NhZmUiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJTY2hlbWEiLCAicmVxdWlyZV91bmRlZmluZWQiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJUeXBlIiwgInJlc29sdmVKYXZhc2NyaXB0VW5kZWZpbmVkIiwgImNvbnN0cnVjdEphdmFzY3JpcHRVbmRlZmluZWQiLCAicmVwcmVzZW50SmF2YXNjcmlwdFVuZGVmaW5lZCIsICJpc1VuZGVmaW5lZCIsICJvYmplY3QiLCAicmVxdWlyZV9yZWdleHAiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJUeXBlIiwgInJlc29sdmVKYXZhc2NyaXB0UmVnRXhwIiwgImRhdGEiLCAicmVnZXhwIiwgInRhaWwiLCAibW9kaWZpZXJzIiwgImNvbnN0cnVjdEphdmFzY3JpcHRSZWdFeHAiLCAicmVwcmVzZW50SmF2YXNjcmlwdFJlZ0V4cCIsICJvYmplY3QiLCAicmVzdWx0IiwgImlzUmVnRXhwIiwgInJlcXVpcmVfZnVuY3Rpb24iLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJlc3ByaW1hIiwgIl9yZXF1aXJlIiwgIlR5cGUiLCAicmVzb2x2ZUphdmFzY3JpcHRGdW5jdGlvbiIsICJkYXRhIiwgInNvdXJjZSIsICJhc3QiLCAiY29uc3RydWN0SmF2YXNjcmlwdEZ1bmN0aW9uIiwgInBhcmFtcyIsICJib2R5IiwgInBhcmFtIiwgInJlcHJlc2VudEphdmFzY3JpcHRGdW5jdGlvbiIsICJvYmplY3QiLCAiaXNGdW5jdGlvbiIsICJyZXF1aXJlX2RlZmF1bHRfZnVsbCIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgIlNjaGVtYSIsICJyZXF1aXJlX2xvYWRlciIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImNvbW1vbiIsICJZQU1MRXhjZXB0aW9uIiwgIk1hcmsiLCAiREVGQVVMVF9TQUZFX1NDSEVNQSIsICJERUZBVUxUX0ZVTExfU0NIRU1BIiwgIl9oYXNPd25Qcm9wZXJ0eSIsICJDT05URVhUX0ZMT1dfSU4iLCAiQ09OVEVYVF9GTE9XX09VVCIsICJDT05URVhUX0JMT0NLX0lOIiwgIkNPTlRFWFRfQkxPQ0tfT1VUIiwgIkNIT01QSU5HX0NMSVAiLCAiQ0hPTVBJTkdfU1RSSVAiLCAiQ0hPTVBJTkdfS0VFUCIsICJQQVRURVJOX05PTl9QUklOVEFCTEUiLCAiUEFUVEVSTl9OT05fQVNDSUlfTElORV9CUkVBS1MiLCAiUEFUVEVSTl9GTE9XX0lORElDQVRPUlMiLCAiUEFUVEVSTl9UQUdfSEFORExFIiwgIlBBVFRFUk5fVEFHX1VSSSIsICJfY2xhc3MiLCAib2JqIiwgImlzX0VPTCIsICJjIiwgImlzX1dISVRFX1NQQUNFIiwgImlzX1dTX09SX0VPTCIsICJpc19GTE9XX0lORElDQVRPUiIsICJmcm9tSGV4Q29kZSIsICJsYyIsICJlc2NhcGVkSGV4TGVuIiwgImZyb21EZWNpbWFsQ29kZSIsICJzaW1wbGVFc2NhcGVTZXF1ZW5jZSIsICJjaGFyRnJvbUNvZGVwb2ludCIsICJzaW1wbGVFc2NhcGVDaGVjayIsICJzaW1wbGVFc2NhcGVNYXAiLCAiaSIsICJTdGF0ZSIsICJpbnB1dCIsICJvcHRpb25zIiwgImdlbmVyYXRlRXJyb3IiLCAic3RhdGUiLCAibWVzc2FnZSIsICJ0aHJvd0Vycm9yIiwgInRocm93V2FybmluZyIsICJkaXJlY3RpdmVIYW5kbGVycyIsICJuYW1lIiwgImFyZ3MiLCAibWF0Y2giLCAibWFqb3IiLCAibWlub3IiLCAiaGFuZGxlIiwgInByZWZpeCIsICJjYXB0dXJlU2VnbWVudCIsICJzdGFydCIsICJlbmQiLCAiY2hlY2tKc29uIiwgIl9wb3NpdGlvbiIsICJfbGVuZ3RoIiwgIl9jaGFyYWN0ZXIiLCAiX3Jlc3VsdCIsICJtZXJnZU1hcHBpbmdzIiwgImRlc3RpbmF0aW9uIiwgInNvdXJjZSIsICJvdmVycmlkYWJsZUtleXMiLCAic291cmNlS2V5cyIsICJrZXkiLCAiaW5kZXgiLCAicXVhbnRpdHkiLCAic3RvcmVNYXBwaW5nUGFpciIsICJrZXlUYWciLCAia2V5Tm9kZSIsICJ2YWx1ZU5vZGUiLCAic3RhcnRMaW5lIiwgInN0YXJ0UG9zIiwgInJlYWRMaW5lQnJlYWsiLCAiY2giLCAic2tpcFNlcGFyYXRpb25TcGFjZSIsICJhbGxvd0NvbW1lbnRzIiwgImNoZWNrSW5kZW50IiwgImxpbmVCcmVha3MiLCAidGVzdERvY3VtZW50U2VwYXJhdG9yIiwgIndyaXRlRm9sZGVkTGluZXMiLCAiY291bnQiLCAicmVhZFBsYWluU2NhbGFyIiwgIm5vZGVJbmRlbnQiLCAid2l0aGluRmxvd0NvbGxlY3Rpb24iLCAicHJlY2VkaW5nIiwgImZvbGxvd2luZyIsICJjYXB0dXJlU3RhcnQiLCAiY2FwdHVyZUVuZCIsICJoYXNQZW5kaW5nQ29udGVudCIsICJfbGluZSIsICJfbGluZVN0YXJ0IiwgIl9saW5lSW5kZW50IiwgIl9raW5kIiwgInJlYWRTaW5nbGVRdW90ZWRTY2FsYXIiLCAicmVhZERvdWJsZVF1b3RlZFNjYWxhciIsICJoZXhMZW5ndGgiLCAiaGV4UmVzdWx0IiwgInRtcCIsICJyZWFkRmxvd0NvbGxlY3Rpb24iLCAicmVhZE5leHQiLCAiX3RhZyIsICJfYW5jaG9yIiwgInRlcm1pbmF0b3IiLCAiaXNQYWlyIiwgImlzRXhwbGljaXRQYWlyIiwgImlzTWFwcGluZyIsICJjb21wb3NlTm9kZSIsICJyZWFkQmxvY2tTY2FsYXIiLCAiZm9sZGluZyIsICJjaG9tcGluZyIsICJkaWRSZWFkQ29udGVudCIsICJkZXRlY3RlZEluZGVudCIsICJ0ZXh0SW5kZW50IiwgImVtcHR5TGluZXMiLCAiYXRNb3JlSW5kZW50ZWQiLCAicmVhZEJsb2NrU2VxdWVuY2UiLCAiZGV0ZWN0ZWQiLCAicmVhZEJsb2NrTWFwcGluZyIsICJmbG93SW5kZW50IiwgImFsbG93Q29tcGFjdCIsICJfcG9zIiwgImF0RXhwbGljaXRLZXkiLCAicmVhZFRhZ1Byb3BlcnR5IiwgImlzVmVyYmF0aW0iLCAiaXNOYW1lZCIsICJ0YWdIYW5kbGUiLCAidGFnTmFtZSIsICJyZWFkQW5jaG9yUHJvcGVydHkiLCAicmVhZEFsaWFzIiwgImFsaWFzIiwgInBhcmVudEluZGVudCIsICJub2RlQ29udGV4dCIsICJhbGxvd1RvU2VlayIsICJhbGxvd0Jsb2NrU3R5bGVzIiwgImFsbG93QmxvY2tTY2FsYXJzIiwgImFsbG93QmxvY2tDb2xsZWN0aW9ucyIsICJpbmRlbnRTdGF0dXMiLCAiYXROZXdMaW5lIiwgImhhc0NvbnRlbnQiLCAidHlwZUluZGV4IiwgInR5cGVRdWFudGl0eSIsICJ0eXBlIiwgImJsb2NrSW5kZW50IiwgInJlYWREb2N1bWVudCIsICJkb2N1bWVudFN0YXJ0IiwgImRpcmVjdGl2ZU5hbWUiLCAiZGlyZWN0aXZlQXJncyIsICJoYXNEaXJlY3RpdmVzIiwgImxvYWREb2N1bWVudHMiLCAibnVsbHBvcyIsICJsb2FkQWxsIiwgIml0ZXJhdG9yIiwgImRvY3VtZW50cyIsICJsZW5ndGgiLCAibG9hZCIsICJzYWZlTG9hZEFsbCIsICJzYWZlTG9hZCIsICJyZXF1aXJlX2R1bXBlciIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImNvbW1vbiIsICJZQU1MRXhjZXB0aW9uIiwgIkRFRkFVTFRfRlVMTF9TQ0hFTUEiLCAiREVGQVVMVF9TQUZFX1NDSEVNQSIsICJfdG9TdHJpbmciLCAiX2hhc093blByb3BlcnR5IiwgIkNIQVJfVEFCIiwgIkNIQVJfTElORV9GRUVEIiwgIkNIQVJfQ0FSUklBR0VfUkVUVVJOIiwgIkNIQVJfU1BBQ0UiLCAiQ0hBUl9FWENMQU1BVElPTiIsICJDSEFSX0RPVUJMRV9RVU9URSIsICJDSEFSX1NIQVJQIiwgIkNIQVJfUEVSQ0VOVCIsICJDSEFSX0FNUEVSU0FORCIsICJDSEFSX1NJTkdMRV9RVU9URSIsICJDSEFSX0FTVEVSSVNLIiwgIkNIQVJfQ09NTUEiLCAiQ0hBUl9NSU5VUyIsICJDSEFSX0NPTE9OIiwgIkNIQVJfRVFVQUxTIiwgIkNIQVJfR1JFQVRFUl9USEFOIiwgIkNIQVJfUVVFU1RJT04iLCAiQ0hBUl9DT01NRVJDSUFMX0FUIiwgIkNIQVJfTEVGVF9TUVVBUkVfQlJBQ0tFVCIsICJDSEFSX1JJR0hUX1NRVUFSRV9CUkFDS0VUIiwgIkNIQVJfR1JBVkVfQUNDRU5UIiwgIkNIQVJfTEVGVF9DVVJMWV9CUkFDS0VUIiwgIkNIQVJfVkVSVElDQUxfTElORSIsICJDSEFSX1JJR0hUX0NVUkxZX0JSQUNLRVQiLCAiRVNDQVBFX1NFUVVFTkNFUyIsICJERVBSRUNBVEVEX0JPT0xFQU5TX1NZTlRBWCIsICJjb21waWxlU3R5bGVNYXAiLCAic2NoZW1hIiwgIm1hcCIsICJyZXN1bHQiLCAia2V5cyIsICJpbmRleCIsICJsZW5ndGgiLCAidGFnIiwgInN0eWxlIiwgInR5cGUiLCAiZW5jb2RlSGV4IiwgImNoYXJhY3RlciIsICJzdHJpbmciLCAiaGFuZGxlIiwgIlN0YXRlIiwgIm9wdGlvbnMiLCAiaW5kZW50U3RyaW5nIiwgInNwYWNlcyIsICJpbmQiLCAicG9zaXRpb24iLCAibmV4dCIsICJsaW5lIiwgImdlbmVyYXRlTmV4dExpbmUiLCAic3RhdGUiLCAibGV2ZWwiLCAidGVzdEltcGxpY2l0UmVzb2x2aW5nIiwgInN0ciIsICJpc1doaXRlc3BhY2UiLCAiYyIsICJpc1ByaW50YWJsZSIsICJpc05zQ2hhciIsICJpc1BsYWluU2FmZSIsICJwcmV2IiwgImlzUGxhaW5TYWZlRmlyc3QiLCAibmVlZEluZGVudEluZGljYXRvciIsICJsZWFkaW5nU3BhY2VSZSIsICJTVFlMRV9QTEFJTiIsICJTVFlMRV9TSU5HTEUiLCAiU1RZTEVfTElURVJBTCIsICJTVFlMRV9GT0xERUQiLCAiU1RZTEVfRE9VQkxFIiwgImNob29zZVNjYWxhclN0eWxlIiwgInNpbmdsZUxpbmVPbmx5IiwgImluZGVudFBlckxldmVsIiwgImxpbmVXaWR0aCIsICJ0ZXN0QW1iaWd1b3VzVHlwZSIsICJpIiwgImNoYXIiLCAicHJldl9jaGFyIiwgImhhc0xpbmVCcmVhayIsICJoYXNGb2xkYWJsZUxpbmUiLCAic2hvdWxkVHJhY2tXaWR0aCIsICJwcmV2aW91c0xpbmVCcmVhayIsICJwbGFpbiIsICJ3cml0ZVNjYWxhciIsICJpc2tleSIsICJpbmRlbnQiLCAidGVzdEFtYmlndWl0eSIsICJibG9ja0hlYWRlciIsICJkcm9wRW5kaW5nTmV3bGluZSIsICJmb2xkU3RyaW5nIiwgImVzY2FwZVN0cmluZyIsICJpbmRlbnRJbmRpY2F0b3IiLCAiY2xpcCIsICJrZWVwIiwgImNob21wIiwgIndpZHRoIiwgImxpbmVSZSIsICJuZXh0TEYiLCAiZm9sZExpbmUiLCAicHJldk1vcmVJbmRlbnRlZCIsICJtb3JlSW5kZW50ZWQiLCAibWF0Y2giLCAicHJlZml4IiwgImJyZWFrUmUiLCAic3RhcnQiLCAiZW5kIiwgImN1cnIiLCAibmV4dENoYXIiLCAiZXNjYXBlU2VxIiwgIndyaXRlRmxvd1NlcXVlbmNlIiwgIm9iamVjdCIsICJfcmVzdWx0IiwgIl90YWciLCAid3JpdGVOb2RlIiwgIndyaXRlQmxvY2tTZXF1ZW5jZSIsICJjb21wYWN0IiwgIndyaXRlRmxvd01hcHBpbmciLCAib2JqZWN0S2V5TGlzdCIsICJvYmplY3RLZXkiLCAib2JqZWN0VmFsdWUiLCAicGFpckJ1ZmZlciIsICJ3cml0ZUJsb2NrTWFwcGluZyIsICJleHBsaWNpdFBhaXIiLCAiZGV0ZWN0VHlwZSIsICJleHBsaWNpdCIsICJ0eXBlTGlzdCIsICJibG9jayIsICJvYmplY3RPckFycmF5IiwgImR1cGxpY2F0ZUluZGV4IiwgImR1cGxpY2F0ZSIsICJhcnJheUxldmVsIiwgImdldER1cGxpY2F0ZVJlZmVyZW5jZXMiLCAib2JqZWN0cyIsICJkdXBsaWNhdGVzSW5kZXhlcyIsICJpbnNwZWN0Tm9kZSIsICJkdW1wIiwgImlucHV0IiwgInNhZmVEdW1wIiwgInJlcXVpcmVfanNfeWFtbCIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImxvYWRlciIsICJkdW1wZXIiLCAiZGVwcmVjYXRlZCIsICJuYW1lIiwgInJlcXVpcmVfanNfeWFtbCIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgInlhbWwiLCAicmVxdWlyZV9zeW1sIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAicGVnJHN1YmNsYXNzIiwgImNoaWxkIiwgInBhcmVudCIsICJjdG9yIiwgInBlZyRTeW50YXhFcnJvciIsICJtZXNzYWdlIiwgImV4cGVjdGVkIiwgImZvdW5kIiwgImxvY2F0aW9uIiwgIkRFU0NSSUJFX0VYUEVDVEFUSU9OX0ZOUyIsICJleHBlY3RhdGlvbiIsICJsaXRlcmFsRXNjYXBlIiwgImVzY2FwZWRQYXJ0cyIsICJpIiwgImNsYXNzRXNjYXBlIiwgImhleCIsICJjaCIsICJzIiwgImRlc2NyaWJlRXhwZWN0YXRpb24iLCAiZGVzY3JpYmVFeHBlY3RlZCIsICJkZXNjcmlwdGlvbnMiLCAiaiIsICJkZXNjcmliZUZvdW5kIiwgInBlZyRwYXJzZSIsICJpbnB1dCIsICJvcHRpb25zIiwgInBlZyRGQUlMRUQiLCAicGVnJHN0YXJ0UnVsZUZ1bmN0aW9ucyIsICJwZWckcGFyc2VTdGFydCIsICJwZWckc3RhcnRSdWxlRnVuY3Rpb24iLCAicGVnJGMwIiwgInN0YXRlbWVudHMiLCAicGVnJGMxIiwgInBlZyRjMiIsICJwZWckbGl0ZXJhbEV4cGVjdGF0aW9uIiwgInBlZyRjMyIsICJ2YWx1ZSIsICJwZWckYzQiLCAicGVnJGM1IiwgInBlZyRjNiIsICJwZWckYzciLCAicGVnJGFueUV4cGVjdGF0aW9uIiwgInBlZyRjOCIsICJwZWckYzkiLCAicGVnJGMxMCIsICJwZWckYzExIiwgInByb3BlcnR5IiwgInBlZyRjMTIiLCAicGVnJGMxMyIsICJwZWckYzE0IiwgIm90aGVyIiwgInBlZyRjMTUiLCAib3RoZXJzIiwgInBlZyRjMTYiLCAicGVnJGMxNyIsICJleHByZXNzaW9uIiwgInBlZyRjMTgiLCAicGVnJG90aGVyRXhwZWN0YXRpb24iLCAicGVnJGMxOSIsICJwZWckYzIwIiwgInBlZyRjMjEiLCAic3BhY2VzIiwgImluZGVudExldmVsIiwgIklOREVOVF9TVEVQIiwgInBlZyRjMjIiLCAicGVnJGMyMyIsICJwZWckYzI0IiwgInBlZyRjMjUiLCAidGV4dCIsICJwZWckYzI2IiwgInBlZyRjMjciLCAicGVnJGMyOCIsICJwZWckY2xhc3NFeHBlY3RhdGlvbiIsICJwZWckYzI5IiwgInBlZyRjMzAiLCAicGVnJGMzMSIsICJwZWckYzMyIiwgInBlZyRjMzMiLCAicGVnJGMzNCIsICJwZWckYzM1IiwgInBlZyRjMzYiLCAicGVnJGMzNyIsICJwZWckYzM4IiwgInBlZyRjMzkiLCAicGVnJGM0MCIsICJwZWckYzQxIiwgInBlZyRjNDIiLCAicGVnJGM0MyIsICJwZWckYzQ0IiwgInBlZyRjNDUiLCAicGVnJGM0NiIsICJwZWckYzQ3IiwgInBlZyRjNDgiLCAicGVnJGM0OSIsICJwZWckYzUwIiwgInBlZyRjNTEiLCAiY2hhcnMiLCAicGVnJGM1MiIsICJwZWckYzUzIiwgInBlZyRjNTQiLCAicGVnJGM1NSIsICJwZWckYzU2IiwgInBlZyRjNTciLCAicGVnJGM1OCIsICJwZWckYzU5IiwgInBlZyRjNjAiLCAicGVnJGM2MSIsICJwZWckYzYyIiwgInBlZyRjNjMiLCAicGVnJGM2NCIsICJwZWckYzY1IiwgInBlZyRjNjYiLCAicGVnJGM2NyIsICJwZWckYzY4IiwgInBlZyRjNjkiLCAicGVnJGM3MCIsICJwZWckYzcxIiwgInBlZyRjNzIiLCAicGVnJGM3MyIsICJwZWckYzc0IiwgInBlZyRjNzUiLCAicGVnJGM3NiIsICJwZWckYzc3IiwgInBlZyRjNzgiLCAicGVnJGM3OSIsICJwZWckYzgwIiwgInBlZyRjODEiLCAiaDEiLCAiaDIiLCAiaDMiLCAiaDQiLCAicGVnJGM4MiIsICJwZWckYzgzIiwgInBlZyRjODQiLCAicGVnJGM4NSIsICJwZWckYzg2IiwgInBlZyRjODciLCAicGVnJGM4OCIsICJwZWckYzg5IiwgInBlZyRjOTAiLCAicGVnJGM5MSIsICJwZWckYzkyIiwgInBlZyRjOTMiLCAicGVnJGM5NCIsICJwZWckYzk1IiwgInBlZyRjdXJyUG9zIiwgInBlZyRzYXZlZFBvcyIsICJwZWckcG9zRGV0YWlsc0NhY2hlIiwgInBlZyRtYXhGYWlsUG9zIiwgInBlZyRtYXhGYWlsRXhwZWN0ZWQiLCAicGVnJHNpbGVudEZhaWxzIiwgInBlZyRyZXN1bHQiLCAicGVnJGNvbXB1dGVMb2NhdGlvbiIsICJkZXNjcmlwdGlvbiIsICJwZWckYnVpbGRTdHJ1Y3R1cmVkRXJyb3IiLCAiZXJyb3IiLCAicGVnJGJ1aWxkU2ltcGxlRXJyb3IiLCAiaWdub3JlQ2FzZSIsICJwYXJ0cyIsICJpbnZlcnRlZCIsICJwZWckZW5kRXhwZWN0YXRpb24iLCAicGVnJGNvbXB1dGVQb3NEZXRhaWxzIiwgInBvcyIsICJkZXRhaWxzIiwgInAiLCAic3RhcnRQb3MiLCAiZW5kUG9zIiwgInN0YXJ0UG9zRGV0YWlscyIsICJlbmRQb3NEZXRhaWxzIiwgInBlZyRmYWlsIiwgInMwIiwgInBlZyRwYXJzZVByb3BlcnR5U3RhdGVtZW50cyIsICJwZWckcGFyc2VJdGVtU3RhdGVtZW50cyIsICJzMSIsICJzMiIsICJwZWckcGFyc2VJdGVtU3RhdGVtZW50IiwgInMzIiwgInM0IiwgInBlZyRwYXJzZVNhbWVkZW50IiwgInBlZyRwYXJzZUIiLCAicGVnJHBhcnNlRXhwcmVzc2lvbiIsICJwZWckcGFyc2VQcm9wZXJ0eVN0YXRlbWVudCIsICJzNSIsICJzNiIsICJzNyIsICJzOCIsICJwZWckcGFyc2VFT0wiLCAicGVnJHBhcnNlRU9MX0FOWSIsICJwZWckcGFyc2VOYW1lIiwgInBlZyRwYXJzZUxlZ2FjeU5hbWUiLCAicGVnJHBhcnNlTGVnYWN5TGl0ZXJhbCIsICJwZWckcGFyc2VFeHRyYWRlbnQiLCAicGVnJHBhcnNlSW5kZW50IiwgInBlZyRwYXJzZURlZGVudCIsICJwZWckcGFyc2VMaXRlcmFsIiwgInBlZyRwYXJzZXN0cmluZyIsICJwZWckcGFyc2Vwc2V1ZG9zdHJpbmciLCAicGVnJHBhcnNlcHNldWRvc3RyaW5nTGVnYWN5IiwgInBlZyRwYXJzZW51bGwiLCAicGVnJHBhcnNlYm9vbGVhbiIsICJwZWckcGFyc2VjaGFycyIsICJwZWckcGFyc2VjaGFyIiwgInBlZyRwYXJzZWhleERpZ2l0IiwgInBlZyRwYXJzZVMiLCAicmVxdWlyZV9zeW1sIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJqc195YW1sXzEiLCAic3ltbF8xIiwgInNpbXBsZVN0cmluZ1BhdHRlcm4iLCAic3BlY2lhbE9iamVjdEtleXMiLCAiUHJlc2VydmVPcmRlcmluZyIsICJkYXRhIiwgInN0cmluZ2lmeVN0cmluZyIsICJ2YWx1ZSIsICJpc1JlbW92YWJsZUZpZWxkIiwgImtleSIsICJzdHJpbmdpZnlWYWx1ZSIsICJpbmRlbnRMZXZlbCIsICJuZXdMaW5lSWZPYmplY3QiLCAiaW5kZW50IiwgInN1YiIsICJzb3J0IiwgImtleXMiLCAiYSIsICJiIiwgImFJbmRleCIsICJiSW5kZXgiLCAiZmllbGRzIiwgImluZGV4IiwgInN0cmluZ2lmaWVkS2V5IiwgInN0cmluZ2lmaWVkVmFsdWUiLCAicmVjb3JkSW5kZW50YXRpb24iLCAia2V5UGFydCIsICJ2YWx1ZVBhcnQiLCAic3RyaW5naWZ5U3ltbCIsICJzdHJpbmdpZmllZCIsICJlcnJvciIsICJwYXJzZVZpYVBlZyIsICJzb3VyY2UiLCAiTEVHQUNZX1JFR0VYUCIsICJwYXJzZVZpYUpzWWFtbCIsICJwYXJzZVN5bWwiLCAicmVxdWlyZV9saWIiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgInNoZWxsXzEiLCAicmVzb2x1dGlvbl8xIiwgInN5bWxfMSIsICJyZXF1aXJlX2NhbWVsY2FzZSIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgInByZXNlcnZlQ2FtZWxDYXNlIiwgInN0cmluZyIsICJpc0xhc3RDaGFyTG93ZXIiLCAiaXNMYXN0Q2hhclVwcGVyIiwgImlzTGFzdExhc3RDaGFyVXBwZXIiLCAiY2hhcmFjdGVyIiwgImNhbWVsQ2FzZSIsICJpbnB1dCIsICJvcHRpb25zIiwgInBvc3RQcm9jZXNzIiwgIngiLCAiXyIsICJwMSIsICJtIiwgInJlcXVpcmVfY2lfaW5mbyIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAidmVuZG9ycyIsICJlbnYiLCAidiIsICJ2ZW5kb3IiLCAiaXNDSSIsICJvYmoiLCAiY2hlY2tFbnYiLCAia2V5IiwgImsiLCAicmVxdWlyZV9jb25zdGFudHMiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIk5PREVfSU5JVElBTCIsICJOT0RFX1NVQ0NFU1MiLCAiTk9ERV9FUlJPUkVEIiwgIlNUQVJUX09GX0lOUFVUIiwgIkVORF9PRl9JTlBVVCIsICJIRUxQX0NPTU1BTkRfSU5ERVgiLCAiSEVMUF9SRUdFWCIsICJPUFRJT05fUkVHRVgiLCAiQkFUQ0hfUkVHRVgiLCAiQklORElOR19SRUdFWCIsICJERUJVRyIsICJyZXF1aXJlX2Vycm9ycyIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAiY29uc3RhbnRzIiwgIlVzYWdlRXJyb3IiLCAibWVzc2FnZSIsICJVbmtub3duU3ludGF4RXJyb3IiLCAiaW5wdXQiLCAiY2FuZGlkYXRlcyIsICJjYW5kaWRhdGUiLCAicmVhc29uIiwgInVzYWdlIiwgIndoaWxlUnVubmluZyIsICJpbmRleCIsICJBbWJpZ3VvdXNTeW50YXhFcnJvciIsICJ1c2FnZXMiLCAidG9rZW4iLCAianNvbiIsICJyZXF1aXJlX2Zvcm1hdCIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAiTUFYX0xJTkVfTEVOR1RIIiwgInJpY2hMaW5lIiwgInQiLCAicmljaEZvcm1hdCIsICJzdHIiLCAidGV4dEZvcm1hdCIsICJkZWRlbnQiLCAidGV4dCIsICJsaW5lcyIsICJub25FbXB0eUxpbmVzIiwgImxpbmUiLCAiaW5kZW50IiwgIm1pbkxlbmd0aCIsICJmb3JtYXRNYXJrZG93bmlzaCIsICJmb3JtYXQiLCAicGFyYWdyYXBocyIsICIkMCIsICIkMSIsICJwYXJhZ3JhcGgiLCAiYnVsbGV0TWF0Y2giLCAiaW5kZXgiLCAiJDIiLCAicmVxdWlyZV91dGlscyIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAiZXJyb3JzIiwgImlzT3B0aW9uU3ltYm9sIiwgIm1ha2VDb21tYW5kT3B0aW9uIiwgInNwZWMiLCAicmVyb3V0ZUFyZ3VtZW50cyIsICJhIiwgImIiLCAiY2xlYW5WYWxpZGF0aW9uRXJyb3IiLCAibWVzc2FnZSIsICJtZXJnZU5hbWUiLCAibWF0Y2giLCAicGF0aCIsICJsaW5lIiwgImZvcm1hdEVycm9yIiwgImVycm9ycyQxIiwgImVycm9yIiwgImFwcGx5VmFsaWRhdG9yIiwgIm5hbWUiLCAidmFsdWUiLCAidmFsaWRhdG9yIiwgImNvZXJjaW9ucyIsICJjb2VyY2lvbiIsICJ2IiwgIm9yaWciLCAib3AiLCAicmVxdWlyZV9saWIiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgInNpbXBsZUtleVJlZ0V4cCIsICJnZXRQcmludGFibGUiLCAidmFsdWUiLCAiZ2V0UHJpbnRhYmxlQXJyYXkiLCAiY29uanVuY3Rpb24iLCAicmVzdCIsICJ0cmFpbGluZyIsICJzZXBhcmF0b3IiLCAiY29tcHV0ZUtleSIsICJzdGF0ZSIsICJrZXkiLCAiX2EiLCAiX2IiLCAiX2MiLCAicGx1cmFsIiwgIm4iLCAic2luZ3VsYXIiLCAiY29sb3JTdHJpbmdSZWdFeHAiLCAiY29sb3JTdHJpbmdBbHBoYVJlZ0V4cCIsICJiYXNlNjRSZWdFeHAiLCAidXVpZDRSZWdFeHAiLCAiaXNvODYwMVJlZ0V4cCIsICJwdXNoRXJyb3IiLCAiZXJyb3JzIiwgInAiLCAibWVzc2FnZSIsICJtYWtlU2V0dGVyIiwgInRhcmdldCIsICJ2IiwgIm1ha2VDb2VyY2lvbkZuIiwgInByZXZpb3VzIiwgIm1ha2VMYXp5Q29lcmNpb25GbiIsICJmbiIsICJvcmlnIiwgImdlbmVyYXRvciIsICJjb21taXQiLCAicmV2ZXJ0IiwgImlzVW5rbm93biIsICJtYWtlVmFsaWRhdG9yIiwgImlzTGl0ZXJhbCIsICJleHBlY3RlZCIsICJpc1N0cmluZyIsICJpc0VudW0iLCAiZW51bVNwZWMiLCAidmFsdWVzQXJyYXkiLCAiaXNBbHBoYU51bSIsICJpdGVtIiwgInZhbHVlcyIsICJCT09MRUFOX0NPRVJDSU9OUyIsICJpc0Jvb2xlYW4iLCAiY29lcmNpb24iLCAiaXNOdW1iZXIiLCAidmFsIiwgImlzRGF0ZSIsICJ0aW1lc3RhbXAiLCAiaXNBcnJheSIsICJzcGVjIiwgImRlbGltaXRlciIsICJvcmlnaW5hbFZhbHVlIiwgInZhbGlkIiwgInQiLCAiVCIsICJpc1NldCIsICJpc0FycmF5VmFsaWRhdG9yIiwgIm9yaWdpbmFsVmFsdWVzIiwgImNvZXJjZWRWYWx1ZXMiLCAidXBkYXRlVmFsdWUiLCAic3ViVmFsdWUiLCAic3RvcmUiLCAiaXNNYXAiLCAia2V5U3BlYyIsICJ2YWx1ZVNwZWMiLCAiaXNUdXBsZSIsICJpc1JlY29yZFZhbGlkYXRvciIsICJpc1JlY29yZCIsICJsZW5ndGhWYWxpZGF0b3IiLCAiaGFzRXhhY3RMZW5ndGgiLCAia2V5cyIsICJzdWIiLCAiaXNEaWN0IiwgIm9wdHMiLCAiaXNPYmplY3QiLCAicHJvcHMiLCAiZXh0cmFTcGVjIiwgInNwZWNLZXlzIiwgInZhbGlkYXRvciIsICJleHRyYSIsICJpc1BhcnRpYWwiLCAiaXNJbnN0YW5jZU9mIiwgImNvbnN0cnVjdG9yIiwgImlzT25lT2YiLCAic3BlY3MiLCAiZXhjbHVzaXZlIiwgIm1hdGNoZXMiLCAiZXJyb3JCdWZmZXIiLCAic3ViRXJyb3JzIiwgInN1YkNvZXJjaW9ucyIsICJtYWtlVHJhaXQiLCAidGVzdCIsICJUeXBlQXNzZXJ0aW9uRXJyb3IiLCAiZXJyb3JNZXNzYWdlIiwgImVycm9yIiwgImFzc2VydCIsICJhc3NlcnRXaXRoRXJyb3JzIiwgInNvZnRBc3NlcnQiLCAiYXMiLCAiY29lcmNlIiwgInN0b3JlRXJyb3JzIiwgInRocm93cyIsICJjb2VyY2lvbnMiLCAiYXBwbHkiLCAidmFsaWRhdG9ycyIsICJpc1ZhbGlkQXJnTGlzdCIsICJhcmdzIiwgImhhc01pbkxlbmd0aCIsICJsZW5ndGgiLCAiaGFzTWF4TGVuZ3RoIiwgImhhc1VuaXF1ZUl0ZW1zIiwgIm1hcCIsICJzZXQiLCAiZHVwIiwgImlzTmVnYXRpdmUiLCAiaXNQb3NpdGl2ZSIsICJpc0F0TGVhc3QiLCAiaXNBdE1vc3QiLCAiaXNJbkluY2x1c2l2ZVJhbmdlIiwgImEiLCAiYiIsICJpc0luRXhjbHVzaXZlUmFuZ2UiLCAiaXNJbnRlZ2VyIiwgInVuc2FmZSIsICJtYXRjaGVzUmVnRXhwIiwgInJlZ0V4cCIsICJpc0xvd2VyQ2FzZSIsICJpc1VwcGVyQ2FzZSIsICJpc1VVSUQ0IiwgImlzSVNPODYwMSIsICJpc0hleENvbG9yIiwgImFscGhhIiwgImlzQmFzZTY0IiwgImlzSlNPTiIsICJkYXRhIiwgImNhc2NhZGUiLCAiZm9sbG93dXBzIiwgInJlc29sdmVkRm9sbG93dXBzIiwgImNvbnRleHQiLCAic3ViQ29lcmNpb24iLCAicmV2ZXJ0cyIsICJhcHBseUNhc2NhZGUiLCAiaXNPcHRpb25hbCIsICJpc051bGxhYmxlIiwgImNoZWNrcyIsICJoYXNSZXF1aXJlZEtleXMiLCAicmVxdWlyZWRLZXlzIiwgIm9wdGlvbnMiLCAicmVxdWlyZWRTZXQiLCAiY2hlY2siLCAicHJvYmxlbXMiLCAiaGFzQXRMZWFzdE9uZUtleSIsICJoYXNGb3JiaWRkZW5LZXlzIiwgImZvcmJpZGRlbktleXMiLCAiZm9yYmlkZGVuU2V0IiwgImhhc011dHVhbGx5RXhjbHVzaXZlS2V5cyIsICJleGNsdXNpdmVLZXlzIiwgImV4Y2x1c2l2ZVNldCIsICJ1c2VkIiwgIktleVJlbGF0aW9uc2hpcCIsICJrZXlSZWxhdGlvbnNoaXBzIiwgImhhc0tleVJlbGF0aW9uc2hpcCIsICJzdWJqZWN0IiwgInJlbGF0aW9uc2hpcCIsICJvdGhlcnMiLCAiaWdub3JlIiwgInNraXBwZWQiLCAib3RoZXJTZXQiLCAicmVxdWlyZV9Db21tYW5kIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJhZHZhbmNlZF9vcHRpb25zX3V0aWxzIiwgIl9pbnRlcm9wTmFtZXNwYWNlIiwgImUiLCAibiIsICJrIiwgImQiLCAiQ29tbWFuZCIsICJ1c2FnZSIsICJlcnJvciIsICJjYXNjYWRlIiwgImlzRGljdCIsICJpc1Vua25vd24iLCAiYXBwbHlDYXNjYWRlIiwgInNjaGVtYSIsICJlcnJvcnMiLCAiY29lcmNpb25zIiwgIm9wIiwgImV4aXRDb2RlIiwgInJlcXVpcmVfY29yZSIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAiY29uc3RhbnRzIiwgImVycm9ycyIsICJkZWJ1ZyIsICJzdHIiLCAiYmFzaWNIZWxwU3RhdGUiLCAibWFrZVN0YXRlTWFjaGluZSIsICJtYWtlTm9kZSIsICJtYWtlQW55T2ZNYWNoaW5lIiwgImlucHV0cyIsICJvdXRwdXQiLCAiaGVhZHMiLCAib2Zmc2V0IiwgImlucHV0IiwgInQiLCAiaXNUZXJtaW5hbE5vZGUiLCAiY2xvbmVOb2RlIiwgImhlYWQiLCAicmVnaXN0ZXJTaG9ydGN1dCIsICJpbmplY3ROb2RlIiwgIm1hY2hpbmUiLCAibm9kZSIsICJzaW1wbGlmeU1hY2hpbmUiLCAidmlzaXRlZCIsICJwcm9jZXNzIiwgIm5vZGVEZWYiLCAidHJhbnNpdGlvbnMiLCAidG8iLCAic2hvcnRjdXRzIiwgInRvRGVmIiwgInNlZ21lbnQiLCAic3RvcmUiLCAidHJhbnNpdGlvbiIsICJ0ZXN0IiwgIm90aGVyVGVzdCIsICJkZWJ1Z01hY2hpbmUiLCAicHJlZml4IiwgInJ1bk1hY2hpbmVJbnRlcm5hbCIsICJwYXJ0aWFsIiwgImJyYW5jaGVzIiwgInRva2VucyIsICJuZXh0QnJhbmNoZXMiLCAic3RhdGUiLCAiaGFzRXhhY3RNYXRjaCIsICJyZWR1Y2VyIiwgImV4ZWN1dGUiLCAicmVkdWNlcnMiLCAiaGFzTWF0Y2hlcyIsICJjYW5kaWRhdGUiLCAidGVzdHMiLCAidHJpbVNtYWxsZXJCcmFuY2hlcyIsICJicmFuY2giLCAiY2hlY2tJZk5vZGVJc0ZpbmlzaGVkIiwgInN1Z2dlc3RNYWNoaW5lIiwgInN1Z2dlc3Rpb25zIiwgInN1Z2dlc3Rpb25zSnNvbiIsICJ0cmF2ZXJzZVN1Z2dlc3Rpb24iLCAic3VnZ2VzdGlvbiIsICJza2lwRmlyc3QiLCAibmV4dE5vZGVzIiwgImN1cnJlbnROb2RlcyIsICJrZXlzIiwgImtleSIsICJqc29uIiwgImlzRmluaXNoZWQiLCAic3VnZ2VzdCIsICJ0b2tlbiIsICJydW5NYWNoaW5lIiwgInNlbGVjdEJlc3RTdGF0ZSIsICJtYXhQYXRoU2l6ZSIsICJzdGF0ZXMiLCAidGVybWluYWxTdGF0ZXMiLCAicmVxdWlyZWRPcHRpb25zU2V0U3RhdGVzIiwgIm5hbWVzIiwgIm5hbWUiLCAib3B0IiwgImJlc3RQYXRoQnJhbmNoZXMiLCAiZ2V0UG9zaXRpb25hbENvdW50IiwgImV4dHJhIiwgInN0YXRlc1dpdGhQb3NpdGlvbmFsQ291bnQiLCAibWF4UG9zaXRpb25hbENvdW50IiwgInBvc2l0aW9uYWxDb3VudCIsICJiZXN0UG9zaXRpb25hbFN0YXRlcyIsICJmaXhlZFN0YXRlcyIsICJhZ2dyZWdhdGVIZWxwU3RhdGVzIiwgIm5vdEhlbHBzIiwgImhlbHBzIiwgImZpbmRDb21tb25QcmVmaXgiLCAib3B0aW9ucyIsICJmaXJzdFBhdGgiLCAic2Vjb25kUGF0aCIsICJyZXN0IiwgImNsb25lVHJhbnNpdGlvbiIsICJyZWdpc3RlckR5bmFtaWMiLCAiZnJvbSIsICJyZWdpc3RlclN0YXRpYyIsICJjYWxsYmFjayIsICJhcmdzIiwgImZuIiwgImhpZGRlbiIsICJvcHRpb25QYXJzaW5nIiwgImNhbmRpZGF0ZVN0YXRlIiwgImluZGV4IiwgInZhbHVlIiwgIk5vTGltaXRzIiwgIl9hIiwgImNvcHkiLCAibGFzdE9wdGlvbiIsICJjb21tYW5kIiwgImVycm9yTWVzc2FnZSIsICJDb21tYW5kQnVpbGRlciIsICJjbGlJbmRleCIsICJjbGlPcHRzIiwgInBhdGgiLCAibGVhZGluZyIsICJ0cmFpbGluZyIsICJwcm94eSIsICJyZXF1aXJlZCIsICJkZXNjcmlwdGlvbiIsICJhcml0eSIsICJhbGxvd0JpbmRpbmciLCAiY29udGV4dCIsICJkZXRhaWxlZCIsICJpbmxpbmVPcHRpb25zIiwgInNlZ21lbnRzIiwgImRldGFpbGVkT3B0aW9uTGlzdCIsICJkZWZpbml0aW9uIiwgImZpcnN0Tm9kZSIsICJjYW5kaWRhdGVVc2FnZSIsICJyZXF1aXJlZE9wdGlvbnMiLCAicG9zaXRpb25hbEFyZ3VtZW50IiwgInBhdGhzIiwgImxhc3RQYXRoTm9kZSIsICJvcHRpb25QYXRoTm9kZSIsICJuZXh0UGF0aE5vZGUiLCAiaGVscE5vZGUiLCAibGFzdExlYWRpbmdOb2RlIiwgIm5leHRMZWFkaW5nTm9kZSIsICJsYXN0RXh0cmFOb2RlIiwgImV4dHJhU2hvcnRjdXROb2RlIiwgImV4dHJhTm9kZSIsICJuZXh0RXh0cmFOb2RlIiwgImxhc3RUcmFpbGluZ05vZGUiLCAibmV4dFRyYWlsaW5nTm9kZSIsICJvcHRpb24iLCAibG9uZ2VzdE5hbWUiLCAibGFzdE5vZGUiLCAibmV4dE5vZGUiLCAiYWN0aW9uIiwgIkNsaUJ1aWxkZXIiLCAiYmluYXJ5TmFtZSIsICJjYnMiLCAib3B0cyIsICJuIiwgImNiIiwgImJ1aWxkZXIiLCAibWFjaGluZXMiLCAiY29udGV4dHMiLCAicmVxdWlyZV9ub2RlIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJ0dHkiLCAiX2ludGVyb3BEZWZhdWx0TGVnYWN5IiwgImUiLCAidHR5X19kZWZhdWx0IiwgImdldERlZmF1bHRDb2xvckRlcHRoIiwgImdDb250ZXh0U3RvcmFnZSIsICJnZXRDYXB0dXJlQWN0aXZhdG9yIiwgImNvbnRleHQiLCAiY29udGV4dFN0b3JhZ2UiLCAiTGF6eUFzeW5jTG9jYWxTdG9yYWdlIiwgIm9yaWdTdGRvdXRXcml0ZSIsICJjaHVuayIsICJlbmNvZGluZyIsICJjYiIsICJvcmlnU3RkZXJyV3JpdGUiLCAiZm4iLCAicmVxdWlyZV9IZWxwQ29tbWFuZCIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAiYWR2YW5jZWRfQ29tbWFuZCIsICJIZWxwQ29tbWFuZCIsICJjb250ZXh0cyIsICJzdGF0ZSIsICJjb21tYW5kIiwgIm9wdCIsICJjb21tYW5kcyIsICJpbmRleCIsICJyZXF1aXJlX0NsaSIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAiY29uc3RhbnRzIiwgImNvcmUiLCAiZm9ybWF0IiwgInBsYXRmb3JtIiwgImFkdmFuY2VkX0NvbW1hbmQiLCAiYWR2YW5jZWRfSGVscENvbW1hbmQiLCAiZXJyb3JDb21tYW5kU3ltYm9sIiwgInJ1bkV4aXQiLCAiYXJncyIsICJyZXNvbHZlZE9wdGlvbnMiLCAicmVzb2x2ZWRDb21tYW5kQ2xhc3NlcyIsICJyZXNvbHZlZEFyZ3YiLCAicmVzb2x2ZWRDb250ZXh0IiwgInJlc29sdmVSdW5QYXJhbWV0ZXJzIiwgIkNsaSIsICJydW4iLCAiYmluYXJ5TGFiZWwiLCAiYmluYXJ5TmFtZU9wdCIsICJiaW5hcnlWZXJzaW9uIiwgImVuYWJsZUNhcHR1cmUiLCAiZW5hYmxlQ29sb3JzIiwgImNvbW1hbmRDbGFzc2VzIiwgIm9wdGlvbnMiLCAiY2xpIiwgImNvbW1hbmRDbGFzcyIsICJfYSIsICJzcGVjcyIsICJjb21tYW5kIiwgImtleSIsICJ2YWx1ZSIsICJidWlsZGVyIiwgImluZGV4IiwgInBhdGhzIiwgInBhdGgiLCAiZGVmaW5pdGlvbiIsICJpbnB1dCIsICJ1c2VyQ29udGV4dCIsICJjb250ZXh0cyIsICJwcm9jZXNzIiwgInN0YXRlIiwgImNvbnRleHQiLCAicmVjb3JkIiwgInRyYW5zZm9ybWVyIiwgImVycm9yIiwgIl9iIiwgImNvbG9yZWQiLCAib3B0cyIsICJzdWJDb250ZXh0IiwgImFjdGl2YXRlIiwgIm5vb3BDYXB0dXJlQWN0aXZhdG9yIiwgImV4aXRDb2RlIiwgInBhcnRpYWwiLCAic3VnZ2VzdCIsICJkYXRhIiwgInVzYWdlIiwgImNhdGVnb3J5IiwgImRlc2NyaXB0aW9uIiwgImRldGFpbHMiLCAiZXhhbXBsZXMiLCAibGFiZWwiLCAiZGV0YWlsZWQiLCAicHJlZml4IiwgImlzRG9jdW1lbnRlZCIsICJyZXN1bHQiLCAiJDAiLCAibWF4RGVmaW5pdGlvbkxlbmd0aCIsICJsZW5ndGgiLCAib3B0aW9uIiwgImV4YW1wbGUiLCAiY29tbWFuZHNCeUNhdGVnb3JpZXMiLCAiY2F0ZWdvcnlDb21tYW5kcyIsICJjYXRlZ29yeU5hbWVzIiwgImEiLCAiYiIsICJoYXNMYWJlbCIsICJoYXNWZXJzaW9uIiwgImNhdGVnb3J5TmFtZSIsICJjb21tYW5kcyIsICJoZWFkZXIiLCAiZG9jIiwgIm5hbWUiLCAibWV0YSIsICJrbGFzcyIsICJuIiwgImZuIiwgInJlcXVpcmVfZGVmaW5pdGlvbnMiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgImFkdmFuY2VkX0NvbW1hbmQiLCAiRGVmaW5pdGlvbnNDb21tYW5kIiwgInJlcXVpcmVfaGVscCIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAiYWR2YW5jZWRfQ29tbWFuZCIsICJIZWxwQ29tbWFuZCIsICJyZXF1aXJlX3ZlcnNpb24iLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgImFkdmFuY2VkX0NvbW1hbmQiLCAiVmVyc2lvbkNvbW1hbmQiLCAiX2EiLCAicmVxdWlyZV9idWlsdGlucyIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAiYWR2YW5jZWRfYnVpbHRpbnNfZGVmaW5pdGlvbnMiLCAiYWR2YW5jZWRfYnVpbHRpbnNfaGVscCIsICJhZHZhbmNlZF9idWlsdGluc192ZXJzaW9uIiwgInJlcXVpcmVfQXJyYXkiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgImFkdmFuY2VkX29wdGlvbnNfdXRpbHMiLCAiQXJyYXkiLCAiZGVzY3JpcHRvciIsICJpbml0aWFsVmFsdWVCYXNlIiwgIm9wdHNCYXNlIiwgImluaXRpYWxWYWx1ZSIsICJvcHRzIiwgImFyaXR5IiwgIm9wdE5hbWVzIiwgIm5hbWVTZXQiLCAiYnVpbGRlciIsICJrZXkiLCAic3RhdGUiLCAidXNlZE5hbWUiLCAiY3VycmVudFZhbHVlIiwgIm5hbWUiLCAidmFsdWUiLCAicmVxdWlyZV9Cb29sZWFuIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJhZHZhbmNlZF9vcHRpb25zX3V0aWxzIiwgIkJvb2xlYW4iLCAiZGVzY3JpcHRvciIsICJpbml0aWFsVmFsdWVCYXNlIiwgIm9wdHNCYXNlIiwgImluaXRpYWxWYWx1ZSIsICJvcHRzIiwgIm9wdE5hbWVzIiwgIm5hbWVTZXQiLCAiYnVpbGRlciIsICJidWlsZXIiLCAia2V5IiwgInN0YXRlIiwgImN1cnJlbnRWYWx1ZSIsICJuYW1lIiwgInZhbHVlIiwgInJlcXVpcmVfQ291bnRlciIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAiYWR2YW5jZWRfb3B0aW9uc191dGlscyIsICJDb3VudGVyIiwgImRlc2NyaXB0b3IiLCAiaW5pdGlhbFZhbHVlQmFzZSIsICJvcHRzQmFzZSIsICJpbml0aWFsVmFsdWUiLCAib3B0cyIsICJvcHROYW1lcyIsICJuYW1lU2V0IiwgImJ1aWxkZXIiLCAia2V5IiwgInN0YXRlIiwgImN1cnJlbnRWYWx1ZSIsICJuYW1lIiwgInZhbHVlIiwgInJlcXVpcmVfUHJveHkiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgImFkdmFuY2VkX29wdGlvbnNfdXRpbHMiLCAiUHJveHkiLCAib3B0cyIsICJidWlsZGVyIiwgImtleSIsICJfYSIsICJzdGF0ZSIsICJ2YWx1ZSIsICJyZXF1aXJlX1Jlc3QiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgImNvcmUiLCAiYWR2YW5jZWRfb3B0aW9uc191dGlscyIsICJSZXN0IiwgIm9wdHMiLCAiYnVpbGRlciIsICJrZXkiLCAiX2EiLCAic3RhdGUiLCAiaXNSZXN0UG9zaXRpb25hbCIsICJpbmRleCIsICJwb3NpdGlvbmFsIiwgImNvdW50IiwgInZhbHVlIiwgInJlcXVpcmVfU3RyaW5nIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJjb3JlIiwgImFkdmFuY2VkX29wdGlvbnNfdXRpbHMiLCAiU3RyaW5nT3B0aW9uIiwgImRlc2NyaXB0b3IiLCAiaW5pdGlhbFZhbHVlQmFzZSIsICJvcHRzQmFzZSIsICJpbml0aWFsVmFsdWUiLCAib3B0cyIsICJhcml0eSIsICJvcHROYW1lcyIsICJuYW1lU2V0IiwgImJ1aWxkZXIiLCAia2V5IiwgInN0YXRlIiwgImNvbnRleHQiLCAidXNlZE5hbWUiLCAiY3VycmVudFZhbHVlIiwgIm5hbWUiLCAidmFsdWUiLCAiU3RyaW5nUG9zaXRpb25hbCIsICJyZXF1aXJlZCIsICJfYSIsICJpIiwgInBvc2l0aW9uYWwiLCAiU3RyaW5nIiwgImFyZ3MiLCAicmVxdWlyZV9vcHRpb25zIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJhZHZhbmNlZF9vcHRpb25zX3V0aWxzIiwgImFkdmFuY2VkX29wdGlvbnNfQXJyYXkiLCAiYWR2YW5jZWRfb3B0aW9uc19Cb29sZWFuIiwgImFkdmFuY2VkX29wdGlvbnNfQ291bnRlciIsICJhZHZhbmNlZF9vcHRpb25zX1Byb3h5IiwgImFkdmFuY2VkX29wdGlvbnNfUmVzdCIsICJhZHZhbmNlZF9vcHRpb25zX1N0cmluZyIsICJyZXF1aXJlX2FkdmFuY2VkIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJlcnJvcnMiLCAiZm9ybWF0IiwgImFkdmFuY2VkX0NvbW1hbmQiLCAiYWR2YW5jZWRfQ2xpIiwgImFkdmFuY2VkX2J1aWx0aW5zX2luZGV4IiwgImFkdmFuY2VkX29wdGlvbnNfaW5kZXgiLCAicmVxdWlyZV9wX3RyeSIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgInBUcnkiLCAiZm4iLCAiYXJndW1lbnRzXyIsICJyZXNvbHZlIiwgInJlcXVpcmVfcF9saW1pdCIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgInBUcnkiLCAicExpbWl0IiwgImNvbmN1cnJlbmN5IiwgInF1ZXVlIiwgImFjdGl2ZUNvdW50IiwgIm5leHQiLCAicnVuIiwgImZuIiwgInJlc29sdmUiLCAiYXJncyIsICJyZXN1bHQiLCAiZW5xdWV1ZSIsICJnZW5lcmF0b3IiLCAicmVxdWlyZV9NZXNzYWdlTmFtZSIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAiTWVzc2FnZU5hbWUiLCAic3RyaW5naWZ5TWVzc2FnZU5hbWUiLCAibmFtZSIsICJwYXJzZU1lc3NhZ2VOYW1lIiwgIm1lc3NhZ2VOYW1lIiwgInBhcnNlZCIsICJyZXF1aXJlX2NvbnN0YW50cyIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgIlNFTVZFUl9TUEVDX1ZFUlNJT04iLCAiTUFYX1NBRkVfSU5URUdFUiIsICJNQVhfU0FGRV9DT01QT05FTlRfTEVOR1RIIiwgInJlcXVpcmVfZGVidWciLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJkZWJ1ZyIsICJhcmdzIiwgInJlcXVpcmVfcmUiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJNQVhfU0FGRV9DT01QT05FTlRfTEVOR1RIIiwgImRlYnVnIiwgInJlIiwgInNyYyIsICJ0IiwgIlIiLCAiY3JlYXRlVG9rZW4iLCAibmFtZSIsICJ2YWx1ZSIsICJpc0dsb2JhbCIsICJpbmRleCIsICJyZXF1aXJlX3BhcnNlX29wdGlvbnMiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJvcHRzIiwgInBhcnNlT3B0aW9ucyIsICJvcHRpb25zIiwgImsiLCAibyIsICJyZXF1aXJlX2lkZW50aWZpZXJzIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAibnVtZXJpYyIsICJjb21wYXJlSWRlbnRpZmllcnMiLCAiYSIsICJiIiwgImFudW0iLCAiYm51bSIsICJyY29tcGFyZUlkZW50aWZpZXJzIiwgInJlcXVpcmVfc2VtdmVyIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZGVidWciLCAiTUFYX0xFTkdUSCIsICJNQVhfU0FGRV9JTlRFR0VSIiwgInJlIiwgInQiLCAicGFyc2VPcHRpb25zIiwgImNvbXBhcmVJZGVudGlmaWVycyIsICJTZW1WZXIiLCAidmVyc2lvbiIsICJvcHRpb25zIiwgIm0iLCAiaWQiLCAibnVtIiwgIm90aGVyIiwgImkiLCAiYSIsICJiIiwgInJlbGVhc2UiLCAiaWRlbnRpZmllciIsICJyZXF1aXJlX3BhcnNlIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiTUFYX0xFTkdUSCIsICJyZSIsICJ0IiwgIlNlbVZlciIsICJwYXJzZU9wdGlvbnMiLCAicGFyc2UiLCAidmVyc2lvbiIsICJvcHRpb25zIiwgInJlcXVpcmVfdmFsaWQiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJwYXJzZSIsICJ2YWxpZCIsICJ2ZXJzaW9uIiwgIm9wdGlvbnMiLCAidiIsICJyZXF1aXJlX2NsZWFuIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAicGFyc2UiLCAiY2xlYW4iLCAidmVyc2lvbiIsICJvcHRpb25zIiwgInMiLCAicmVxdWlyZV9pbmMiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJTZW1WZXIiLCAiaW5jIiwgInZlcnNpb24iLCAicmVsZWFzZSIsICJvcHRpb25zIiwgImlkZW50aWZpZXIiLCAicmVxdWlyZV9jb21wYXJlIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiU2VtVmVyIiwgImNvbXBhcmUiLCAiYSIsICJiIiwgImxvb3NlIiwgInJlcXVpcmVfZXEiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJjb21wYXJlIiwgImVxIiwgImEiLCAiYiIsICJsb29zZSIsICJyZXF1aXJlX2RpZmYiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJwYXJzZSIsICJlcSIsICJkaWZmIiwgInZlcnNpb24xIiwgInZlcnNpb24yIiwgInYxIiwgInYyIiwgImhhc1ByZSIsICJwcmVmaXgiLCAiZGVmYXVsdFJlc3VsdCIsICJrZXkiLCAicmVxdWlyZV9tYWpvciIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgIlNlbVZlciIsICJtYWpvciIsICJhIiwgImxvb3NlIiwgInJlcXVpcmVfbWlub3IiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJTZW1WZXIiLCAibWlub3IiLCAiYSIsICJsb29zZSIsICJyZXF1aXJlX3BhdGNoIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiU2VtVmVyIiwgInBhdGNoIiwgImEiLCAibG9vc2UiLCAicmVxdWlyZV9wcmVyZWxlYXNlIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAicGFyc2UiLCAicHJlcmVsZWFzZSIsICJ2ZXJzaW9uIiwgIm9wdGlvbnMiLCAicGFyc2VkIiwgInJlcXVpcmVfcmNvbXBhcmUiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJjb21wYXJlIiwgInJjb21wYXJlIiwgImEiLCAiYiIsICJsb29zZSIsICJyZXF1aXJlX2NvbXBhcmVfbG9vc2UiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJjb21wYXJlIiwgImNvbXBhcmVMb29zZSIsICJhIiwgImIiLCAicmVxdWlyZV9jb21wYXJlX2J1aWxkIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiU2VtVmVyIiwgImNvbXBhcmVCdWlsZCIsICJhIiwgImIiLCAibG9vc2UiLCAidmVyc2lvbkEiLCAidmVyc2lvbkIiLCAicmVxdWlyZV9zb3J0IiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiY29tcGFyZUJ1aWxkIiwgInNvcnQiLCAibGlzdCIsICJsb29zZSIsICJhIiwgImIiLCAicmVxdWlyZV9yc29ydCIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImNvbXBhcmVCdWlsZCIsICJyc29ydCIsICJsaXN0IiwgImxvb3NlIiwgImEiLCAiYiIsICJyZXF1aXJlX2d0IiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiY29tcGFyZSIsICJndCIsICJhIiwgImIiLCAibG9vc2UiLCAicmVxdWlyZV9sdCIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImNvbXBhcmUiLCAibHQiLCAiYSIsICJiIiwgImxvb3NlIiwgInJlcXVpcmVfbmVxIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiY29tcGFyZSIsICJuZXEiLCAiYSIsICJiIiwgImxvb3NlIiwgInJlcXVpcmVfZ3RlIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiY29tcGFyZSIsICJndGUiLCAiYSIsICJiIiwgImxvb3NlIiwgInJlcXVpcmVfbHRlIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiY29tcGFyZSIsICJsdGUiLCAiYSIsICJiIiwgImxvb3NlIiwgInJlcXVpcmVfY21wIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZXEiLCAibmVxIiwgImd0IiwgImd0ZSIsICJsdCIsICJsdGUiLCAiY21wIiwgImEiLCAib3AiLCAiYiIsICJsb29zZSIsICJyZXF1aXJlX2NvZXJjZSIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgIlNlbVZlciIsICJwYXJzZSIsICJyZSIsICJ0IiwgImNvZXJjZSIsICJ2ZXJzaW9uIiwgIm9wdGlvbnMiLCAibWF0Y2giLCAibmV4dCIsICJyZXF1aXJlX2l0ZXJhdG9yIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiWWFsbGlzdCIsICJ3YWxrZXIiLCAicmVxdWlyZV95YWxsaXN0IiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiWWFsbGlzdCIsICJOb2RlIiwgImxpc3QiLCAic2VsZiIsICJpdGVtIiwgImkiLCAibCIsICJub2RlIiwgIm5leHQiLCAicHJldiIsICJoZWFkIiwgInRhaWwiLCAicHVzaCIsICJ1bnNoaWZ0IiwgInJlcyIsICJmbiIsICJ0aGlzcCIsICJ3YWxrZXIiLCAibiIsICJpbml0aWFsIiwgImFjYyIsICJhcnIiLCAiZnJvbSIsICJ0byIsICJyZXQiLCAic3RhcnQiLCAiZGVsZXRlQ291bnQiLCAibm9kZXMiLCAiaW5zZXJ0IiwgInAiLCAidmFsdWUiLCAiaW5zZXJ0ZWQiLCAicmVxdWlyZV9scnVfY2FjaGUiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJZYWxsaXN0IiwgIk1BWCIsICJMRU5HVEgiLCAiTEVOR1RIX0NBTENVTEFUT1IiLCAiQUxMT1dfU1RBTEUiLCAiTUFYX0FHRSIsICJESVNQT1NFIiwgIk5PX0RJU1BPU0VfT05fU0VUIiwgIkxSVV9MSVNUIiwgIkNBQ0hFIiwgIlVQREFURV9BR0VfT05fR0VUIiwgIm5haXZlTGVuZ3RoIiwgIkxSVUNhY2hlIiwgIm9wdGlvbnMiLCAibWF4IiwgImxjIiwgIm1MIiwgInRyaW0iLCAiYWxsb3dTdGFsZSIsICJtQSIsICJsQyIsICJoaXQiLCAiZm4iLCAidGhpc3AiLCAid2Fsa2VyIiwgInByZXYiLCAiZm9yRWFjaFN0ZXAiLCAibmV4dCIsICJrIiwgImlzU3RhbGUiLCAiaCIsICJrZXkiLCAidmFsdWUiLCAibWF4QWdlIiwgIm5vdyIsICJsZW4iLCAiZGVsIiwgIml0ZW0iLCAiRW50cnkiLCAiZ2V0IiwgIm5vZGUiLCAiYXJyIiwgImwiLCAiZXhwaXJlc0F0IiwgInNlbGYiLCAiZG9Vc2UiLCAiZGlmZiIsICJsZW5ndGgiLCAicmVxdWlyZV9yYW5nZSIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgIlJhbmdlIiwgInJhbmdlIiwgIm9wdGlvbnMiLCAicGFyc2VPcHRpb25zIiwgIkNvbXBhcmF0b3IiLCAiYyIsICJmaXJzdCIsICJpc051bGxTZXQiLCAiaXNBbnkiLCAiY29tcHMiLCAibWVtb0tleSIsICJjYWNoZWQiLCAiY2FjaGUiLCAibG9vc2UiLCAiaHIiLCAicmUiLCAidCIsICJoeXBoZW5SZXBsYWNlIiwgImRlYnVnIiwgImNvbXBhcmF0b3JUcmltUmVwbGFjZSIsICJ0aWxkZVRyaW1SZXBsYWNlIiwgImNhcmV0VHJpbVJlcGxhY2UiLCAicmFuZ2VMaXN0IiwgImNvbXAiLCAicGFyc2VDb21wYXJhdG9yIiwgInJlcGxhY2VHVEUwIiwgInJhbmdlTWFwIiwgImNvbXBhcmF0b3JzIiwgInJlc3VsdCIsICJ0aGlzQ29tcGFyYXRvcnMiLCAiaXNTYXRpc2ZpYWJsZSIsICJyYW5nZUNvbXBhcmF0b3JzIiwgInRoaXNDb21wYXJhdG9yIiwgInJhbmdlQ29tcGFyYXRvciIsICJ2ZXJzaW9uIiwgIlNlbVZlciIsICJpIiwgInRlc3RTZXQiLCAiTFJVIiwgInJlbWFpbmluZ0NvbXBhcmF0b3JzIiwgInRlc3RDb21wYXJhdG9yIiwgIm90aGVyQ29tcGFyYXRvciIsICJyZXBsYWNlQ2FyZXRzIiwgInJlcGxhY2VUaWxkZXMiLCAicmVwbGFjZVhSYW5nZXMiLCAicmVwbGFjZVN0YXJzIiwgImlzWCIsICJpZCIsICJyZXBsYWNlVGlsZGUiLCAiciIsICJfIiwgIk0iLCAibSIsICJwIiwgInByIiwgInJldCIsICJyZXBsYWNlQ2FyZXQiLCAieiIsICJyZXBsYWNlWFJhbmdlIiwgImd0bHQiLCAieE0iLCAieG0iLCAieHAiLCAiYW55WCIsICJpbmNQciIsICIkMCIsICJmcm9tIiwgImZNIiwgImZtIiwgImZwIiwgImZwciIsICJmYiIsICJ0byIsICJ0TSIsICJ0bSIsICJ0cCIsICJ0cHIiLCAidGIiLCAic2V0IiwgImFsbG93ZWQiLCAicmVxdWlyZV9jb21wYXJhdG9yIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiQU5ZIiwgIkNvbXBhcmF0b3IiLCAiY29tcCIsICJvcHRpb25zIiwgInBhcnNlT3B0aW9ucyIsICJkZWJ1ZyIsICJyIiwgInJlIiwgInQiLCAibSIsICJTZW1WZXIiLCAidmVyc2lvbiIsICJjbXAiLCAiUmFuZ2UiLCAic2FtZURpcmVjdGlvbkluY3JlYXNpbmciLCAic2FtZURpcmVjdGlvbkRlY3JlYXNpbmciLCAic2FtZVNlbVZlciIsICJkaWZmZXJlbnREaXJlY3Rpb25zSW5jbHVzaXZlIiwgIm9wcG9zaXRlRGlyZWN0aW9uc0xlc3NUaGFuIiwgIm9wcG9zaXRlRGlyZWN0aW9uc0dyZWF0ZXJUaGFuIiwgInJlcXVpcmVfc2F0aXNmaWVzIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiUmFuZ2UiLCAic2F0aXNmaWVzIiwgInZlcnNpb24iLCAicmFuZ2UiLCAib3B0aW9ucyIsICJyZXF1aXJlX3RvX2NvbXBhcmF0b3JzIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiUmFuZ2UiLCAidG9Db21wYXJhdG9ycyIsICJyYW5nZSIsICJvcHRpb25zIiwgImNvbXAiLCAiYyIsICJyZXF1aXJlX21heF9zYXRpc2Z5aW5nIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiU2VtVmVyIiwgIlJhbmdlIiwgIm1heFNhdGlzZnlpbmciLCAidmVyc2lvbnMiLCAicmFuZ2UiLCAib3B0aW9ucyIsICJtYXgiLCAibWF4U1YiLCAicmFuZ2VPYmoiLCAidiIsICJyZXF1aXJlX21pbl9zYXRpc2Z5aW5nIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiU2VtVmVyIiwgIlJhbmdlIiwgIm1pblNhdGlzZnlpbmciLCAidmVyc2lvbnMiLCAicmFuZ2UiLCAib3B0aW9ucyIsICJtaW4iLCAibWluU1YiLCAicmFuZ2VPYmoiLCAidiIsICJyZXF1aXJlX21pbl92ZXJzaW9uIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiU2VtVmVyIiwgIlJhbmdlIiwgImd0IiwgIm1pblZlcnNpb24iLCAicmFuZ2UiLCAibG9vc2UiLCAibWludmVyIiwgImkiLCAiY29tcGFyYXRvcnMiLCAic2V0TWluIiwgImNvbXBhcmF0b3IiLCAiY29tcHZlciIsICJyZXF1aXJlX3ZhbGlkIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiUmFuZ2UiLCAidmFsaWRSYW5nZSIsICJyYW5nZSIsICJvcHRpb25zIiwgInJlcXVpcmVfb3V0c2lkZSIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgIlNlbVZlciIsICJDb21wYXJhdG9yIiwgIkFOWSIsICJSYW5nZSIsICJzYXRpc2ZpZXMiLCAiZ3QiLCAibHQiLCAibHRlIiwgImd0ZSIsICJvdXRzaWRlIiwgInZlcnNpb24iLCAicmFuZ2UiLCAiaGlsbyIsICJvcHRpb25zIiwgImd0Zm4iLCAibHRlZm4iLCAibHRmbiIsICJjb21wIiwgImVjb21wIiwgImkiLCAiY29tcGFyYXRvcnMiLCAiaGlnaCIsICJsb3ciLCAiY29tcGFyYXRvciIsICJyZXF1aXJlX2d0ciIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgIm91dHNpZGUiLCAiZ3RyIiwgInZlcnNpb24iLCAicmFuZ2UiLCAib3B0aW9ucyIsICJyZXF1aXJlX2x0ciIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgIm91dHNpZGUiLCAibHRyIiwgInZlcnNpb24iLCAicmFuZ2UiLCAib3B0aW9ucyIsICJyZXF1aXJlX2ludGVyc2VjdHMiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJSYW5nZSIsICJpbnRlcnNlY3RzIiwgInIxIiwgInIyIiwgIm9wdGlvbnMiLCAicmVxdWlyZV9zaW1wbGlmeSIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgInNhdGlzZmllcyIsICJjb21wYXJlIiwgInZlcnNpb25zIiwgInJhbmdlIiwgIm9wdGlvbnMiLCAic2V0IiwgImZpcnN0IiwgInByZXYiLCAidiIsICJhIiwgImIiLCAidmVyc2lvbiIsICJyYW5nZXMiLCAibWluIiwgIm1heCIsICJzaW1wbGlmaWVkIiwgIm9yaWdpbmFsIiwgInJlcXVpcmVfc3Vic2V0IiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiUmFuZ2UiLCAiQ29tcGFyYXRvciIsICJBTlkiLCAic2F0aXNmaWVzIiwgImNvbXBhcmUiLCAic3Vic2V0IiwgInN1YiIsICJkb20iLCAib3B0aW9ucyIsICJzYXdOb25OdWxsIiwgIk9VVEVSIiwgInNpbXBsZVN1YiIsICJzaW1wbGVEb20iLCAiaXNTdWIiLCAic2ltcGxlU3Vic2V0IiwgImVxU2V0IiwgImd0IiwgImx0IiwgImMiLCAiaGlnaGVyR1QiLCAibG93ZXJMVCIsICJndGx0Q29tcCIsICJlcSIsICJoaWdoZXIiLCAibG93ZXIiLCAiaGFzRG9tTFQiLCAiaGFzRG9tR1QiLCAibmVlZERvbUxUUHJlIiwgIm5lZWREb21HVFByZSIsICJhIiwgImIiLCAiY29tcCIsICJyZXF1aXJlX3NlbXZlciIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImludGVybmFsUmUiLCAiY29uc3RhbnRzIiwgIlNlbVZlciIsICJpZGVudGlmaWVycyIsICJwYXJzZSIsICJ2YWxpZCIsICJjbGVhbiIsICJpbmMiLCAiZGlmZiIsICJtYWpvciIsICJtaW5vciIsICJwYXRjaCIsICJwcmVyZWxlYXNlIiwgImNvbXBhcmUiLCAicmNvbXBhcmUiLCAiY29tcGFyZUxvb3NlIiwgImNvbXBhcmVCdWlsZCIsICJzb3J0IiwgInJzb3J0IiwgImd0IiwgImx0IiwgImVxIiwgIm5lcSIsICJndGUiLCAibHRlIiwgImNtcCIsICJjb2VyY2UiLCAiQ29tcGFyYXRvciIsICJSYW5nZSIsICJzYXRpc2ZpZXMiLCAidG9Db21wYXJhdG9ycyIsICJtYXhTYXRpc2Z5aW5nIiwgIm1pblNhdGlzZnlpbmciLCAibWluVmVyc2lvbiIsICJ2YWxpZFJhbmdlIiwgIm91dHNpZGUiLCAiZ3RyIiwgImx0ciIsICJpbnRlcnNlY3RzIiwgInNpbXBsaWZ5UmFuZ2UiLCAic3Vic2V0IiwgInJlcXVpcmVfZ3JhbW1hciIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgInBlZyRzdWJjbGFzcyIsICJjaGlsZCIsICJwYXJlbnQiLCAiY3RvciIsICJwZWckU3ludGF4RXJyb3IiLCAibWVzc2FnZSIsICJleHBlY3RlZCIsICJmb3VuZCIsICJsb2NhdGlvbiIsICJERVNDUklCRV9FWFBFQ1RBVElPTl9GTlMiLCAiZXhwZWN0YXRpb24iLCAibGl0ZXJhbEVzY2FwZSIsICJlc2NhcGVkUGFydHMiLCAiaSIsICJjbGFzc0VzY2FwZSIsICJoZXgiLCAiY2giLCAicyIsICJkZXNjcmliZUV4cGVjdGF0aW9uIiwgImRlc2NyaWJlRXhwZWN0ZWQiLCAiZGVzY3JpcHRpb25zIiwgImoiLCAiZGVzY3JpYmVGb3VuZCIsICJwZWckcGFyc2UiLCAiaW5wdXQiLCAib3B0aW9ucyIsICJwZWckRkFJTEVEIiwgInBlZyRzdGFydFJ1bGVGdW5jdGlvbnMiLCAicGVnJHBhcnNlRXhwcmVzc2lvbiIsICJwZWckc3RhcnRSdWxlRnVuY3Rpb24iLCAicGVnJGMwIiwgInBlZyRjMSIsICJwZWckbGl0ZXJhbEV4cGVjdGF0aW9uIiwgInBlZyRjMiIsICJwZWckYzMiLCAicGVnJGM0IiwgInBlZyRjNSIsICJwZWckYzYiLCAiaGVhZCIsICJ0YWlsIiwgInJlc3VsdCIsICJlbGVtZW50IiwgInBlZyRjNyIsICJwZWckYzgiLCAicGVnJGM5IiwgInRlcm0iLCAicGVnJGMxMCIsICJwZWckYzExIiwgInBlZyRjMTIiLCAicGVnJGMxMyIsICJwZWckYzE0IiwgImV4cHIiLCAicGVnJGMxNSIsICJwZWckYzE2IiwgInBlZyRjbGFzc0V4cGVjdGF0aW9uIiwgInBlZyRjMTciLCAidG9rZW4iLCAicGVnJGMxOCIsICJwZWckYzE5IiwgInBlZyRvdGhlckV4cGVjdGF0aW9uIiwgInBlZyRjMjAiLCAicGVnJGMyMSIsICJwZWckY3VyclBvcyIsICJwZWckc2F2ZWRQb3MiLCAicGVnJHBvc0RldGFpbHNDYWNoZSIsICJwZWckbWF4RmFpbFBvcyIsICJwZWckbWF4RmFpbEV4cGVjdGVkIiwgInBlZyRzaWxlbnRGYWlscyIsICJwZWckcmVzdWx0IiwgInRleHQiLCAicGVnJGNvbXB1dGVMb2NhdGlvbiIsICJkZXNjcmlwdGlvbiIsICJwZWckYnVpbGRTdHJ1Y3R1cmVkRXJyb3IiLCAiZXJyb3IiLCAicGVnJGJ1aWxkU2ltcGxlRXJyb3IiLCAiaWdub3JlQ2FzZSIsICJwYXJ0cyIsICJpbnZlcnRlZCIsICJwZWckYW55RXhwZWN0YXRpb24iLCAicGVnJGVuZEV4cGVjdGF0aW9uIiwgInBlZyRjb21wdXRlUG9zRGV0YWlscyIsICJwb3MiLCAiZGV0YWlscyIsICJwIiwgInN0YXJ0UG9zIiwgImVuZFBvcyIsICJzdGFydFBvc0RldGFpbHMiLCAiZW5kUG9zRGV0YWlscyIsICJwZWckZmFpbCIsICJzMCIsICJzMSIsICJzMiIsICJzMyIsICJzNCIsICJzNSIsICJzNiIsICJzNyIsICJwZWckcGFyc2VUZXJtIiwgInBlZyRwYXJzZV8iLCAicGVnJHBhcnNlVG9rZW4iLCAicmVxdWlyZV90aW55bG9naWMiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgInBhcnNlIiwgInF1ZXJ5UGF0dGVybiIsICJzdHIiLCAiY2hlY2tGbiIsICJyZXF1aXJlX2NvbG9yX25hbWUiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJyZXF1aXJlX2NvbnZlcnNpb25zIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiY3NzS2V5d29yZHMiLCAicmV2ZXJzZUtleXdvcmRzIiwgImtleSIsICJjb252ZXJ0IiwgIm1vZGVsIiwgImNoYW5uZWxzIiwgImxhYmVscyIsICJyZ2IiLCAiciIsICJnIiwgImIiLCAibWluIiwgIm1heCIsICJkZWx0YSIsICJoIiwgInMiLCAibCIsICJyZGlmIiwgImdkaWYiLCAiYmRpZiIsICJ2IiwgImRpZmYiLCAiZGlmZmMiLCAiYyIsICJ3IiwgImsiLCAibSIsICJ5IiwgImNvbXBhcmF0aXZlRGlzdGFuY2UiLCAieCIsICJyZXZlcnNlZCIsICJjdXJyZW50Q2xvc2VzdERpc3RhbmNlIiwgImN1cnJlbnRDbG9zZXN0S2V5d29yZCIsICJrZXl3b3JkIiwgInZhbHVlIiwgImRpc3RhbmNlIiwgInoiLCAieHl6IiwgImEiLCAiaHNsIiwgInQyIiwgInQzIiwgInZhbCIsICJ0MSIsICJpIiwgInNtaW4iLCAibG1pbiIsICJzdiIsICJoc3YiLCAiaGkiLCAiZiIsICJwIiwgInEiLCAidCIsICJ2bWluIiwgInNsIiwgImh3YiIsICJ3aCIsICJibCIsICJyYXRpbyIsICJuIiwgImNteWsiLCAibGFiIiwgInkyIiwgIngyIiwgInoyIiwgImxjaCIsICJociIsICJhcmdzIiwgInNhdHVyYXRpb24iLCAiYW5zaSIsICJjb2xvciIsICJtdWx0IiwgInJlbSIsICJzdHJpbmciLCAibWF0Y2giLCAiY29sb3JTdHJpbmciLCAiY2hhciIsICJpbnRlZ2VyIiwgImNocm9tYSIsICJncmF5c2NhbGUiLCAiaHVlIiwgImhjZyIsICJwdXJlIiwgIm1nIiwgImFwcGxlIiwgImdyYXkiLCAicmVxdWlyZV9yb3V0ZSIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImNvbnZlcnNpb25zIiwgImJ1aWxkR3JhcGgiLCAiZ3JhcGgiLCAibW9kZWxzIiwgImxlbiIsICJpIiwgImRlcml2ZUJGUyIsICJmcm9tTW9kZWwiLCAicXVldWUiLCAiY3VycmVudCIsICJhZGphY2VudHMiLCAiYWRqYWNlbnQiLCAibm9kZSIsICJsaW5rIiwgImZyb20iLCAidG8iLCAiYXJncyIsICJ3cmFwQ29udmVyc2lvbiIsICJ0b01vZGVsIiwgInBhdGgiLCAiZm4iLCAiY3VyIiwgImNvbnZlcnNpb24iLCAicmVxdWlyZV9jb2xvcl9jb252ZXJ0IiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiY29udmVyc2lvbnMiLCAicm91dGUiLCAiY29udmVydCIsICJtb2RlbHMiLCAid3JhcFJhdyIsICJmbiIsICJ3cmFwcGVkRm4iLCAiYXJncyIsICJhcmcwIiwgIndyYXBSb3VuZGVkIiwgInJlc3VsdCIsICJsZW4iLCAiaSIsICJmcm9tTW9kZWwiLCAicm91dGVzIiwgInRvTW9kZWwiLCAicmVxdWlyZV9hbnNpX3N0eWxlcyIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgIndyYXBBbnNpMTYiLCAiZm4iLCAib2Zmc2V0IiwgImFyZ3MiLCAid3JhcEFuc2kyNTYiLCAiY29kZSIsICJ3cmFwQW5zaTE2bSIsICJyZ2IiLCAiYW5zaTJhbnNpIiwgIm4iLCAicmdiMnJnYiIsICJyIiwgImciLCAiYiIsICJzZXRMYXp5UHJvcGVydHkiLCAib2JqZWN0IiwgInByb3BlcnR5IiwgImdldCIsICJ2YWx1ZSIsICJjb2xvckNvbnZlcnQiLCAibWFrZUR5bmFtaWNTdHlsZXMiLCAid3JhcCIsICJ0YXJnZXRTcGFjZSIsICJpZGVudGl0eSIsICJpc0JhY2tncm91bmQiLCAic3R5bGVzIiwgInNvdXJjZVNwYWNlIiwgInN1aXRlIiwgIm5hbWUiLCAiYXNzZW1ibGVTdHlsZXMiLCAiY29kZXMiLCAiZ3JvdXBOYW1lIiwgImdyb3VwIiwgInN0eWxlTmFtZSIsICJzdHlsZSIsICJyZXF1aXJlX2hhc19mbGFnIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZmxhZyIsICJhcmd2IiwgInByZWZpeCIsICJwb3NpdGlvbiIsICJ0ZXJtaW5hdG9yUG9zaXRpb24iLCAicmVxdWlyZV9zdXBwb3J0c19jb2xvciIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgIm9zIiwgInR0eSIsICJoYXNGbGFnIiwgImVudiIsICJmb3JjZUNvbG9yIiwgInRyYW5zbGF0ZUxldmVsIiwgImxldmVsIiwgInN1cHBvcnRzQ29sb3IiLCAiaGF2ZVN0cmVhbSIsICJzdHJlYW1Jc1RUWSIsICJtaW4iLCAib3NSZWxlYXNlIiwgInNpZ24iLCAidmVyc2lvbiIsICJnZXRTdXBwb3J0TGV2ZWwiLCAic3RyZWFtIiwgInJlcXVpcmVfdXRpbCIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgInN0cmluZ1JlcGxhY2VBbGwiLCAic3RyaW5nIiwgInN1YnN0cmluZyIsICJyZXBsYWNlciIsICJpbmRleCIsICJzdWJzdHJpbmdMZW5ndGgiLCAiZW5kSW5kZXgiLCAicmV0dXJuVmFsdWUiLCAic3RyaW5nRW5jYXNlQ1JMRldpdGhGaXJzdEluZGV4IiwgInByZWZpeCIsICJwb3N0Zml4IiwgImdvdENSIiwgInJlcXVpcmVfdGVtcGxhdGVzIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiVEVNUExBVEVfUkVHRVgiLCAiU1RZTEVfUkVHRVgiLCAiU1RSSU5HX1JFR0VYIiwgIkVTQ0FQRV9SRUdFWCIsICJFU0NBUEVTIiwgInVuZXNjYXBlIiwgImMiLCAidSIsICJicmFja2V0IiwgInBhcnNlQXJndW1lbnRzIiwgIm5hbWUiLCAiYXJndW1lbnRzXyIsICJyZXN1bHRzIiwgImNodW5rcyIsICJtYXRjaGVzIiwgImNodW5rIiwgIm51bWJlciIsICJtIiwgImVzY2FwZSIsICJjaGFyYWN0ZXIiLCAicGFyc2VTdHlsZSIsICJzdHlsZSIsICJhcmdzIiwgImJ1aWxkU3R5bGUiLCAiY2hhbGsiLCAic3R5bGVzIiwgImVuYWJsZWQiLCAibGF5ZXIiLCAiY3VycmVudCIsICJzdHlsZU5hbWUiLCAidGVtcG9yYXJ5IiwgImVzY2FwZUNoYXJhY3RlciIsICJpbnZlcnNlIiwgImNsb3NlIiwgInN0cmluZyIsICJlcnJNc2ciLCAicmVxdWlyZV9zb3VyY2UiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJhbnNpU3R5bGVzIiwgInN0ZG91dENvbG9yIiwgInN0ZGVyckNvbG9yIiwgInN0cmluZ1JlcGxhY2VBbGwiLCAic3RyaW5nRW5jYXNlQ1JMRldpdGhGaXJzdEluZGV4IiwgImxldmVsTWFwcGluZyIsICJzdHlsZXMiLCAiYXBwbHlPcHRpb25zIiwgIm9iamVjdCIsICJvcHRpb25zIiwgImNvbG9yTGV2ZWwiLCAiQ2hhbGtDbGFzcyIsICJjaGFsa0ZhY3RvcnkiLCAiY2hhbGsiLCAiYXJndW1lbnRzXyIsICJjaGFsa1RhZyIsICJDaGFsayIsICJzdHlsZU5hbWUiLCAic3R5bGUiLCAiYnVpbGRlciIsICJjcmVhdGVCdWlsZGVyIiwgImNyZWF0ZVN0eWxlciIsICJ1c2VkTW9kZWxzIiwgIm1vZGVsIiwgImxldmVsIiwgInN0eWxlciIsICJiZ01vZGVsIiwgInByb3RvIiwgIm9wZW4iLCAiY2xvc2UiLCAicGFyZW50IiwgIm9wZW5BbGwiLCAiY2xvc2VBbGwiLCAic2VsZiIsICJfc3R5bGVyIiwgIl9pc0VtcHR5IiwgImFwcGx5U3R5bGUiLCAic3RyaW5nIiwgImxmSW5kZXgiLCAidGVtcGxhdGUiLCAic3RyaW5ncyIsICJmaXJzdFN0cmluZyIsICJwYXJ0cyIsICJpIiwgInJlcXVpcmVfdXRpbHMiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm51bSIsICJub2RlIiwgInR5cGUiLCAibWluIiwgIm1heCIsICJzdGVwIiwgImxpbWl0IiwgImJsb2NrIiwgIm4iLCAibm9kZXMiLCAiYWNjIiwgImFyZ3MiLCAicmVzdWx0IiwgImZsYXQiLCAiYXJyIiwgImVsZSIsICJyZXF1aXJlX3N0cmluZ2lmeSIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgInV0aWxzIiwgImFzdCIsICJvcHRpb25zIiwgInN0cmluZ2lmeSIsICJub2RlIiwgInBhcmVudCIsICJpbnZhbGlkQmxvY2siLCAiaW52YWxpZE5vZGUiLCAib3V0cHV0IiwgImNoaWxkIiwgInJlcXVpcmVfaXNfbnVtYmVyIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAibnVtIiwgInJlcXVpcmVfdG9fcmVnZXhfcmFuZ2UiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJpc051bWJlciIsICJ0b1JlZ2V4UmFuZ2UiLCAibWluIiwgIm1heCIsICJvcHRpb25zIiwgIm9wdHMiLCAicmVsYXgiLCAic2hvcnRoYW5kIiwgImNhcHR1cmUiLCAid3JhcCIsICJjYWNoZUtleSIsICJhIiwgImIiLCAicmVzdWx0IiwgImlzUGFkZGVkIiwgImhhc1BhZGRpbmciLCAic3RhdGUiLCAicG9zaXRpdmVzIiwgIm5lZ2F0aXZlcyIsICJuZXdNaW4iLCAic3BsaXRUb1BhdHRlcm5zIiwgImNvbGxhdGVQYXR0ZXJucyIsICJuZWciLCAicG9zIiwgIm9ubHlOZWdhdGl2ZSIsICJmaWx0ZXJQYXR0ZXJucyIsICJvbmx5UG9zaXRpdmUiLCAiaW50ZXJzZWN0ZWQiLCAic3BsaXRUb1JhbmdlcyIsICJuaW5lcyIsICJ6ZXJvcyIsICJzdG9wIiwgImNvdW50TmluZXMiLCAic3RvcHMiLCAiY291bnRaZXJvcyIsICJjb21wYXJlIiwgInJhbmdlVG9QYXR0ZXJuIiwgInN0YXJ0IiwgInppcHBlZCIsICJ6aXAiLCAiZGlnaXRzIiwgInBhdHRlcm4iLCAiY291bnQiLCAiaSIsICJzdGFydERpZ2l0IiwgInN0b3BEaWdpdCIsICJ0b0NoYXJhY3RlckNsYXNzIiwgInRvayIsICJyYW5nZXMiLCAidG9rZW5zIiwgInByZXYiLCAib2JqIiwgInRvUXVhbnRpZmllciIsICJwYWRaZXJvcyIsICJhcnIiLCAiY29tcGFyaXNvbiIsICJwcmVmaXgiLCAiaW50ZXJzZWN0aW9uIiwgImVsZSIsICJzdHJpbmciLCAiY29udGFpbnMiLCAia2V5IiwgInZhbCIsICJsZW4iLCAiaW50ZWdlciIsICJzdHIiLCAidmFsdWUiLCAiZGlmZiIsICJyZXF1aXJlX2ZpbGxfcmFuZ2UiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJ1dGlsIiwgInRvUmVnZXhSYW5nZSIsICJpc09iamVjdCIsICJ2YWwiLCAidHJhbnNmb3JtIiwgInRvTnVtYmVyIiwgInZhbHVlIiwgImlzVmFsaWRWYWx1ZSIsICJpc051bWJlciIsICJudW0iLCAiemVyb3MiLCAiaW5wdXQiLCAiaW5kZXgiLCAic3RyaW5naWZ5IiwgInN0YXJ0IiwgImVuZCIsICJvcHRpb25zIiwgInBhZCIsICJtYXhMZW5ndGgiLCAiZGFzaCIsICJ0b01heExlbiIsICJuZWdhdGl2ZSIsICJ0b1NlcXVlbmNlIiwgInBhcnRzIiwgImEiLCAiYiIsICJwcmVmaXgiLCAicG9zaXRpdmVzIiwgIm5lZ2F0aXZlcyIsICJyZXN1bHQiLCAidG9SYW5nZSIsICJpc051bWJlcnMiLCAic3RvcCIsICJ0b1JlZ2V4IiwgIndyYXAiLCAicmFuZ2VFcnJvciIsICJhcmdzIiwgImludmFsaWRSYW5nZSIsICJpbnZhbGlkU3RlcCIsICJzdGVwIiwgImZpbGxOdW1iZXJzIiwgImRlc2NlbmRpbmciLCAic3RhcnRTdHJpbmciLCAiZW5kU3RyaW5nIiwgInN0ZXBTdHJpbmciLCAicGFkZGVkIiwgIm1heExlbiIsICJmb3JtYXQiLCAicHVzaCIsICJyYW5nZSIsICJmaWxsTGV0dGVycyIsICJtaW4iLCAibWF4IiwgImZpbGwiLCAib3B0cyIsICJyZXF1aXJlX2NvbXBpbGUiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJmaWxsIiwgInV0aWxzIiwgImNvbXBpbGUiLCAiYXN0IiwgIm9wdGlvbnMiLCAid2FsayIsICJub2RlIiwgInBhcmVudCIsICJpbnZhbGlkQmxvY2siLCAiaW52YWxpZE5vZGUiLCAiaW52YWxpZCIsICJwcmVmaXgiLCAib3V0cHV0IiwgImFyZ3MiLCAicmFuZ2UiLCAiY2hpbGQiLCAicmVxdWlyZV9leHBhbmQiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJmaWxsIiwgInN0cmluZ2lmeSIsICJ1dGlscyIsICJhcHBlbmQiLCAicXVldWUiLCAic3Rhc2giLCAiZW5jbG9zZSIsICJyZXN1bHQiLCAiZWxlIiwgIml0ZW0iLCAidmFsdWUiLCAiZXhwYW5kIiwgImFzdCIsICJvcHRpb25zIiwgInJhbmdlTGltaXQiLCAid2FsayIsICJub2RlIiwgInBhcmVudCIsICJwIiwgInEiLCAiYXJncyIsICJyYW5nZSIsICJibG9jayIsICJpIiwgImNoaWxkIiwgInJlcXVpcmVfY29uc3RhbnRzIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAicmVxdWlyZV9wYXJzZSIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgInN0cmluZ2lmeSIsICJNQVhfTEVOR1RIIiwgIkNIQVJfQkFDS1NMQVNIIiwgIkNIQVJfQkFDS1RJQ0siLCAiQ0hBUl9DT01NQSIsICJDSEFSX0RPVCIsICJDSEFSX0xFRlRfUEFSRU5USEVTRVMiLCAiQ0hBUl9SSUdIVF9QQVJFTlRIRVNFUyIsICJDSEFSX0xFRlRfQ1VSTFlfQlJBQ0UiLCAiQ0hBUl9SSUdIVF9DVVJMWV9CUkFDRSIsICJDSEFSX0xFRlRfU1FVQVJFX0JSQUNLRVQiLCAiQ0hBUl9SSUdIVF9TUVVBUkVfQlJBQ0tFVCIsICJDSEFSX0RPVUJMRV9RVU9URSIsICJDSEFSX1NJTkdMRV9RVU9URSIsICJDSEFSX05PX0JSRUFLX1NQQUNFIiwgIkNIQVJfWkVST19XSURUSF9OT0JSRUFLX1NQQUNFIiwgInBhcnNlIiwgImlucHV0IiwgIm9wdGlvbnMiLCAib3B0cyIsICJtYXgiLCAiYXN0IiwgInN0YWNrIiwgImJsb2NrIiwgInByZXYiLCAiYnJhY2tldHMiLCAibGVuZ3RoIiwgImluZGV4IiwgImRlcHRoIiwgInZhbHVlIiwgIm1lbW8iLCAiYWR2YW5jZSIsICJwdXNoIiwgIm5vZGUiLCAiY2xvc2VkIiwgIm5leHQiLCAib3BlbiIsICJicmFjZSIsICJ0eXBlIiwgInNpYmxpbmdzIiwgImJlZm9yZSIsICJwYXJlbnQiLCAicmVxdWlyZV9icmFjZXMiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJzdHJpbmdpZnkiLCAiY29tcGlsZSIsICJleHBhbmQiLCAicGFyc2UiLCAiYnJhY2VzIiwgImlucHV0IiwgIm9wdGlvbnMiLCAib3V0cHV0IiwgInBhdHRlcm4iLCAicmVzdWx0IiwgInJlcXVpcmVfY29uc3RhbnRzIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAicGF0aCIsICJXSU5fU0xBU0giLCAiV0lOX05PX1NMQVNIIiwgIkRPVF9MSVRFUkFMIiwgIlBMVVNfTElURVJBTCIsICJRTUFSS19MSVRFUkFMIiwgIlNMQVNIX0xJVEVSQUwiLCAiT05FX0NIQVIiLCAiUU1BUksiLCAiRU5EX0FOQ0hPUiIsICJTVEFSVF9BTkNIT1IiLCAiRE9UU19TTEFTSCIsICJOT19ET1QiLCAiTk9fRE9UUyIsICJOT19ET1RfU0xBU0giLCAiTk9fRE9UU19TTEFTSCIsICJRTUFSS19OT19ET1QiLCAiU1RBUiIsICJQT1NJWF9DSEFSUyIsICJXSU5ET1dTX0NIQVJTIiwgIlBPU0lYX1JFR0VYX1NPVVJDRSIsICJjaGFycyIsICJ3aW4zMiIsICJyZXF1aXJlX3V0aWxzIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJwYXRoIiwgIndpbjMyIiwgIlJFR0VYX0JBQ0tTTEFTSCIsICJSRUdFWF9SRU1PVkVfQkFDS1NMQVNIIiwgIlJFR0VYX1NQRUNJQUxfQ0hBUlMiLCAiUkVHRVhfU1BFQ0lBTF9DSEFSU19HTE9CQUwiLCAidmFsIiwgInN0ciIsICJtYXRjaCIsICJzZWdzIiwgIm9wdGlvbnMiLCAiaW5wdXQiLCAiY2hhciIsICJsYXN0SWR4IiwgImlkeCIsICJzdGF0ZSIsICJvdXRwdXQiLCAicHJlcGVuZCIsICJhcHBlbmQiLCAicmVxdWlyZV9zY2FuIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAidXRpbHMiLCAiQ0hBUl9BU1RFUklTSyIsICJDSEFSX0FUIiwgIkNIQVJfQkFDS1dBUkRfU0xBU0giLCAiQ0hBUl9DT01NQSIsICJDSEFSX0RPVCIsICJDSEFSX0VYQ0xBTUFUSU9OX01BUksiLCAiQ0hBUl9GT1JXQVJEX1NMQVNIIiwgIkNIQVJfTEVGVF9DVVJMWV9CUkFDRSIsICJDSEFSX0xFRlRfUEFSRU5USEVTRVMiLCAiQ0hBUl9MRUZUX1NRVUFSRV9CUkFDS0VUIiwgIkNIQVJfUExVUyIsICJDSEFSX1FVRVNUSU9OX01BUksiLCAiQ0hBUl9SSUdIVF9DVVJMWV9CUkFDRSIsICJDSEFSX1JJR0hUX1BBUkVOVEhFU0VTIiwgIkNIQVJfUklHSFRfU1FVQVJFX0JSQUNLRVQiLCAiaXNQYXRoU2VwYXJhdG9yIiwgImNvZGUiLCAiZGVwdGgiLCAidG9rZW4iLCAic2NhbiIsICJpbnB1dCIsICJvcHRpb25zIiwgIm9wdHMiLCAibGVuZ3RoIiwgInNjYW5Ub0VuZCIsICJzbGFzaGVzIiwgInRva2VucyIsICJwYXJ0cyIsICJzdHIiLCAiaW5kZXgiLCAic3RhcnQiLCAibGFzdEluZGV4IiwgImlzQnJhY2UiLCAiaXNCcmFja2V0IiwgImlzR2xvYiIsICJpc0V4dGdsb2IiLCAiaXNHbG9ic3RhciIsICJicmFjZUVzY2FwZWQiLCAiYmFja3NsYXNoZXMiLCAibmVnYXRlZCIsICJuZWdhdGVkRXh0Z2xvYiIsICJmaW5pc2hlZCIsICJicmFjZXMiLCAicHJldiIsICJlb3MiLCAicGVlayIsICJhZHZhbmNlIiwgIm5leHQiLCAiYmFzZSIsICJwcmVmaXgiLCAiZ2xvYiIsICJzdGF0ZSIsICJwcmV2SW5kZXgiLCAiaWR4IiwgIm4iLCAiaSIsICJ2YWx1ZSIsICJyZXF1aXJlX3BhcnNlIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiY29uc3RhbnRzIiwgInV0aWxzIiwgIk1BWF9MRU5HVEgiLCAiUE9TSVhfUkVHRVhfU09VUkNFIiwgIlJFR0VYX05PTl9TUEVDSUFMX0NIQVJTIiwgIlJFR0VYX1NQRUNJQUxfQ0hBUlNfQkFDS1JFRiIsICJSRVBMQUNFTUVOVFMiLCAiZXhwYW5kUmFuZ2UiLCAiYXJncyIsICJvcHRpb25zIiwgInZhbHVlIiwgInYiLCAic3ludGF4RXJyb3IiLCAidHlwZSIsICJjaGFyIiwgInBhcnNlIiwgImlucHV0IiwgIm9wdHMiLCAibWF4IiwgImxlbiIsICJib3MiLCAidG9rZW5zIiwgImNhcHR1cmUiLCAid2luMzIiLCAiUExBVEZPUk1fQ0hBUlMiLCAiRVhUR0xPQl9DSEFSUyIsICJET1RfTElURVJBTCIsICJQTFVTX0xJVEVSQUwiLCAiU0xBU0hfTElURVJBTCIsICJPTkVfQ0hBUiIsICJET1RTX1NMQVNIIiwgIk5PX0RPVCIsICJOT19ET1RfU0xBU0giLCAiTk9fRE9UU19TTEFTSCIsICJRTUFSSyIsICJRTUFSS19OT19ET1QiLCAiU1RBUiIsICJTVEFSVF9BTkNIT1IiLCAiZ2xvYnN0YXIiLCAibm9kb3QiLCAicW1hcmtOb0RvdCIsICJzdGFyIiwgInN0YXRlIiwgImV4dGdsb2JzIiwgImJyYWNlcyIsICJzdGFjayIsICJwcmV2IiwgImVvcyIsICJwZWVrIiwgIm4iLCAiYWR2YW5jZSIsICJyZW1haW5pbmciLCAiY29uc3VtZSIsICJudW0iLCAiYXBwZW5kIiwgInRva2VuIiwgIm5lZ2F0ZSIsICJjb3VudCIsICJpbmNyZW1lbnQiLCAiZGVjcmVtZW50IiwgInB1c2giLCAidG9rIiwgImlzQnJhY2UiLCAiaXNFeHRnbG9iIiwgImV4dGdsb2JPcGVuIiwgIm91dHB1dCIsICJleHRnbG9iQ2xvc2UiLCAicmVzdCIsICJleHRnbG9iU3RhciIsICJleHByZXNzaW9uIiwgImJhY2tzbGFzaGVzIiwgIm0iLCAiZXNjIiwgImNoYXJzIiwgImZpcnN0IiwgImluZGV4IiwgIm5leHQiLCAibWF0Y2giLCAic2xhc2hlcyIsICJpbm5lciIsICJpZHgiLCAicHJlIiwgInBvc2l4IiwgImV4dGdsb2IiLCAicHJldlZhbHVlIiwgImVzY2FwZWQiLCAib3BlbiIsICJicmFjZSIsICJhcnIiLCAicmFuZ2UiLCAiaSIsICJvdXQiLCAidG9rcyIsICJ0IiwgInByaW9yIiwgImJlZm9yZSIsICJpc1N0YXJ0IiwgImFmdGVyU3RhciIsICJhZnRlciIsICJlbmQiLCAiTk9fRE9UUyIsICJzbGFzaERvdCIsICJjcmVhdGUiLCAic3RyIiwgInNvdXJjZSIsICJyZXF1aXJlX3BpY29tYXRjaCIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgInBhdGgiLCAic2NhbiIsICJwYXJzZSIsICJ1dGlscyIsICJjb25zdGFudHMiLCAiaXNPYmplY3QiLCAidmFsIiwgInBpY29tYXRjaCIsICJnbG9iIiwgIm9wdGlvbnMiLCAicmV0dXJuU3RhdGUiLCAiZm5zIiwgImlucHV0IiwgInN0ciIsICJpc01hdGNoIiwgInN0YXRlIiwgImlzU3RhdGUiLCAib3B0cyIsICJwb3NpeCIsICJyZWdleCIsICJpc0lnbm9yZWQiLCAiaWdub3JlT3B0cyIsICJtYXRjaGVyIiwgInJldHVybk9iamVjdCIsICJtYXRjaCIsICJvdXRwdXQiLCAicmVzdWx0IiwgImZvcm1hdCIsICJwYXR0ZXJucyIsICJwYXR0ZXJuIiwgInAiLCAicmV0dXJuT3V0cHV0IiwgInByZXBlbmQiLCAiYXBwZW5kIiwgInNvdXJjZSIsICJwYXJzZWQiLCAiZXJyIiwgInJlcXVpcmVfcGljb21hdGNoIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAicmVxdWlyZV9taWNyb21hdGNoIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAidXRpbCIsICJicmFjZXMiLCAicGljb21hdGNoIiwgInV0aWxzIiwgImlzRW1wdHlTdHJpbmciLCAidmFsIiwgIm1pY3JvbWF0Y2giLCAibGlzdCIsICJwYXR0ZXJucyIsICJvcHRpb25zIiwgIm9taXQiLCAia2VlcCIsICJpdGVtcyIsICJuZWdhdGl2ZXMiLCAib25SZXN1bHQiLCAic3RhdGUiLCAiaSIsICJpc01hdGNoIiwgIm5lZ2F0ZWQiLCAiaXRlbSIsICJtYXRjaGVkIiwgIm1hdGNoZXMiLCAicCIsICJwYXR0ZXJuIiwgInN0ciIsICJyZXN1bHQiLCAib2JqIiwgImtleXMiLCAicmVzIiwgImtleSIsICJnbG9iIiwgImlucHV0IiwgInBvc2l4IiwgIm1hdGNoIiwgInYiLCAiYXJncyIsICJyZXF1aXJlX2Fuc2lfcmVnZXgiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJvbmx5Rmlyc3QiLCAicGF0dGVybiIsICJyZXF1aXJlX3N0cmlwX2Fuc2kiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJhbnNpUmVnZXgiLCAic3RyaW5nIiwgInJlcXVpcmVfbGlzdENhY2hlQ2xlYXIiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJsaXN0Q2FjaGVDbGVhciIsICJyZXF1aXJlX2VxIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZXEiLCAidmFsdWUiLCAib3RoZXIiLCAicmVxdWlyZV9hc3NvY0luZGV4T2YiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJlcSIsICJhc3NvY0luZGV4T2YiLCAiYXJyYXkiLCAia2V5IiwgImxlbmd0aCIsICJyZXF1aXJlX2xpc3RDYWNoZURlbGV0ZSIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImFzc29jSW5kZXhPZiIsICJhcnJheVByb3RvIiwgInNwbGljZSIsICJsaXN0Q2FjaGVEZWxldGUiLCAia2V5IiwgImRhdGEiLCAiaW5kZXgiLCAibGFzdEluZGV4IiwgInJlcXVpcmVfbGlzdENhY2hlR2V0IiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiYXNzb2NJbmRleE9mIiwgImxpc3RDYWNoZUdldCIsICJrZXkiLCAiZGF0YSIsICJpbmRleCIsICJyZXF1aXJlX2xpc3RDYWNoZUhhcyIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImFzc29jSW5kZXhPZiIsICJsaXN0Q2FjaGVIYXMiLCAia2V5IiwgInJlcXVpcmVfbGlzdENhY2hlU2V0IiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiYXNzb2NJbmRleE9mIiwgImxpc3RDYWNoZVNldCIsICJrZXkiLCAidmFsdWUiLCAiZGF0YSIsICJpbmRleCIsICJyZXF1aXJlX0xpc3RDYWNoZSIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImxpc3RDYWNoZUNsZWFyIiwgImxpc3RDYWNoZURlbGV0ZSIsICJsaXN0Q2FjaGVHZXQiLCAibGlzdENhY2hlSGFzIiwgImxpc3RDYWNoZVNldCIsICJMaXN0Q2FjaGUiLCAiZW50cmllcyIsICJpbmRleCIsICJsZW5ndGgiLCAiZW50cnkiLCAicmVxdWlyZV9zdGFja0NsZWFyIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiTGlzdENhY2hlIiwgInN0YWNrQ2xlYXIiLCAicmVxdWlyZV9zdGFja0RlbGV0ZSIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgInN0YWNrRGVsZXRlIiwgImtleSIsICJkYXRhIiwgInJlc3VsdCIsICJyZXF1aXJlX3N0YWNrR2V0IiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAic3RhY2tHZXQiLCAia2V5IiwgInJlcXVpcmVfc3RhY2tIYXMiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJzdGFja0hhcyIsICJrZXkiLCAicmVxdWlyZV9mcmVlR2xvYmFsIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZnJlZUdsb2JhbCIsICJyZXF1aXJlX3Jvb3QiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJmcmVlR2xvYmFsIiwgImZyZWVTZWxmIiwgInJvb3QiLCAicmVxdWlyZV9TeW1ib2wiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJyb290IiwgIlN5bWJvbCIsICJyZXF1aXJlX2dldFJhd1RhZyIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgIlN5bWJvbCIsICJvYmplY3RQcm90byIsICJoYXNPd25Qcm9wZXJ0eSIsICJuYXRpdmVPYmplY3RUb1N0cmluZyIsICJzeW1Ub1N0cmluZ1RhZyIsICJnZXRSYXdUYWciLCAidmFsdWUiLCAiaXNPd24iLCAidGFnIiwgInVubWFza2VkIiwgInJlc3VsdCIsICJyZXF1aXJlX29iamVjdFRvU3RyaW5nIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAib2JqZWN0UHJvdG8iLCAibmF0aXZlT2JqZWN0VG9TdHJpbmciLCAib2JqZWN0VG9TdHJpbmciLCAidmFsdWUiLCAicmVxdWlyZV9iYXNlR2V0VGFnIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiU3ltYm9sIiwgImdldFJhd1RhZyIsICJvYmplY3RUb1N0cmluZyIsICJudWxsVGFnIiwgInVuZGVmaW5lZFRhZyIsICJzeW1Ub1N0cmluZ1RhZyIsICJiYXNlR2V0VGFnIiwgInZhbHVlIiwgInJlcXVpcmVfaXNPYmplY3QiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJpc09iamVjdCIsICJ2YWx1ZSIsICJ0eXBlIiwgInJlcXVpcmVfaXNGdW5jdGlvbiIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImJhc2VHZXRUYWciLCAiaXNPYmplY3QiLCAiYXN5bmNUYWciLCAiZnVuY1RhZyIsICJnZW5UYWciLCAicHJveHlUYWciLCAiaXNGdW5jdGlvbiIsICJ2YWx1ZSIsICJ0YWciLCAicmVxdWlyZV9jb3JlSnNEYXRhIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAicm9vdCIsICJjb3JlSnNEYXRhIiwgInJlcXVpcmVfaXNNYXNrZWQiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJjb3JlSnNEYXRhIiwgIm1hc2tTcmNLZXkiLCAidWlkIiwgImlzTWFza2VkIiwgImZ1bmMiLCAicmVxdWlyZV90b1NvdXJjZSIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImZ1bmNQcm90byIsICJmdW5jVG9TdHJpbmciLCAidG9Tb3VyY2UiLCAiZnVuYyIsICJyZXF1aXJlX2Jhc2VJc05hdGl2ZSIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImlzRnVuY3Rpb24iLCAiaXNNYXNrZWQiLCAiaXNPYmplY3QiLCAidG9Tb3VyY2UiLCAicmVSZWdFeHBDaGFyIiwgInJlSXNIb3N0Q3RvciIsICJmdW5jUHJvdG8iLCAib2JqZWN0UHJvdG8iLCAiZnVuY1RvU3RyaW5nIiwgImhhc093blByb3BlcnR5IiwgInJlSXNOYXRpdmUiLCAiYmFzZUlzTmF0aXZlIiwgInZhbHVlIiwgInBhdHRlcm4iLCAicmVxdWlyZV9nZXRWYWx1ZSIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImdldFZhbHVlIiwgIm9iamVjdCIsICJrZXkiLCAicmVxdWlyZV9nZXROYXRpdmUiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJiYXNlSXNOYXRpdmUiLCAiZ2V0VmFsdWUiLCAiZ2V0TmF0aXZlIiwgIm9iamVjdCIsICJrZXkiLCAidmFsdWUiLCAicmVxdWlyZV9NYXAiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJnZXROYXRpdmUiLCAicm9vdCIsICJNYXAiLCAicmVxdWlyZV9uYXRpdmVDcmVhdGUiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJnZXROYXRpdmUiLCAibmF0aXZlQ3JlYXRlIiwgInJlcXVpcmVfaGFzaENsZWFyIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAibmF0aXZlQ3JlYXRlIiwgImhhc2hDbGVhciIsICJyZXF1aXJlX2hhc2hEZWxldGUiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJoYXNoRGVsZXRlIiwgImtleSIsICJyZXN1bHQiLCAicmVxdWlyZV9oYXNoR2V0IiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAibmF0aXZlQ3JlYXRlIiwgIkhBU0hfVU5ERUZJTkVEIiwgIm9iamVjdFByb3RvIiwgImhhc093blByb3BlcnR5IiwgImhhc2hHZXQiLCAia2V5IiwgImRhdGEiLCAicmVzdWx0IiwgInJlcXVpcmVfaGFzaEhhcyIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgIm5hdGl2ZUNyZWF0ZSIsICJvYmplY3RQcm90byIsICJoYXNPd25Qcm9wZXJ0eSIsICJoYXNoSGFzIiwgImtleSIsICJkYXRhIiwgInJlcXVpcmVfaGFzaFNldCIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgIm5hdGl2ZUNyZWF0ZSIsICJIQVNIX1VOREVGSU5FRCIsICJoYXNoU2V0IiwgImtleSIsICJ2YWx1ZSIsICJkYXRhIiwgInJlcXVpcmVfSGFzaCIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImhhc2hDbGVhciIsICJoYXNoRGVsZXRlIiwgImhhc2hHZXQiLCAiaGFzaEhhcyIsICJoYXNoU2V0IiwgIkhhc2giLCAiZW50cmllcyIsICJpbmRleCIsICJsZW5ndGgiLCAiZW50cnkiLCAicmVxdWlyZV9tYXBDYWNoZUNsZWFyIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiSGFzaCIsICJMaXN0Q2FjaGUiLCAiTWFwIiwgIm1hcENhY2hlQ2xlYXIiLCAicmVxdWlyZV9pc0tleWFibGUiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJpc0tleWFibGUiLCAidmFsdWUiLCAidHlwZSIsICJyZXF1aXJlX2dldE1hcERhdGEiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJpc0tleWFibGUiLCAiZ2V0TWFwRGF0YSIsICJtYXAiLCAia2V5IiwgImRhdGEiLCAicmVxdWlyZV9tYXBDYWNoZURlbGV0ZSIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImdldE1hcERhdGEiLCAibWFwQ2FjaGVEZWxldGUiLCAia2V5IiwgInJlc3VsdCIsICJyZXF1aXJlX21hcENhY2hlR2V0IiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZ2V0TWFwRGF0YSIsICJtYXBDYWNoZUdldCIsICJrZXkiLCAicmVxdWlyZV9tYXBDYWNoZUhhcyIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImdldE1hcERhdGEiLCAibWFwQ2FjaGVIYXMiLCAia2V5IiwgInJlcXVpcmVfbWFwQ2FjaGVTZXQiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJnZXRNYXBEYXRhIiwgIm1hcENhY2hlU2V0IiwgImtleSIsICJ2YWx1ZSIsICJkYXRhIiwgInNpemUiLCAicmVxdWlyZV9NYXBDYWNoZSIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgIm1hcENhY2hlQ2xlYXIiLCAibWFwQ2FjaGVEZWxldGUiLCAibWFwQ2FjaGVHZXQiLCAibWFwQ2FjaGVIYXMiLCAibWFwQ2FjaGVTZXQiLCAiTWFwQ2FjaGUiLCAiZW50cmllcyIsICJpbmRleCIsICJsZW5ndGgiLCAiZW50cnkiLCAicmVxdWlyZV9zdGFja1NldCIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgIkxpc3RDYWNoZSIsICJNYXAiLCAiTWFwQ2FjaGUiLCAiTEFSR0VfQVJSQVlfU0laRSIsICJzdGFja1NldCIsICJrZXkiLCAidmFsdWUiLCAiZGF0YSIsICJwYWlycyIsICJyZXF1aXJlX1N0YWNrIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiTGlzdENhY2hlIiwgInN0YWNrQ2xlYXIiLCAic3RhY2tEZWxldGUiLCAic3RhY2tHZXQiLCAic3RhY2tIYXMiLCAic3RhY2tTZXQiLCAiU3RhY2siLCAiZW50cmllcyIsICJkYXRhIiwgInJlcXVpcmVfc2V0Q2FjaGVBZGQiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJIQVNIX1VOREVGSU5FRCIsICJzZXRDYWNoZUFkZCIsICJ2YWx1ZSIsICJyZXF1aXJlX3NldENhY2hlSGFzIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAic2V0Q2FjaGVIYXMiLCAidmFsdWUiLCAicmVxdWlyZV9TZXRDYWNoZSIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgIk1hcENhY2hlIiwgInNldENhY2hlQWRkIiwgInNldENhY2hlSGFzIiwgIlNldENhY2hlIiwgInZhbHVlcyIsICJpbmRleCIsICJsZW5ndGgiLCAicmVxdWlyZV9hcnJheVNvbWUiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJhcnJheVNvbWUiLCAiYXJyYXkiLCAicHJlZGljYXRlIiwgImluZGV4IiwgImxlbmd0aCIsICJyZXF1aXJlX2NhY2hlSGFzIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiY2FjaGVIYXMiLCAiY2FjaGUiLCAia2V5IiwgInJlcXVpcmVfZXF1YWxBcnJheXMiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJTZXRDYWNoZSIsICJhcnJheVNvbWUiLCAiY2FjaGVIYXMiLCAiQ09NUEFSRV9QQVJUSUFMX0ZMQUciLCAiQ09NUEFSRV9VTk9SREVSRURfRkxBRyIsICJlcXVhbEFycmF5cyIsICJhcnJheSIsICJvdGhlciIsICJiaXRtYXNrIiwgImN1c3RvbWl6ZXIiLCAiZXF1YWxGdW5jIiwgInN0YWNrIiwgImlzUGFydGlhbCIsICJhcnJMZW5ndGgiLCAib3RoTGVuZ3RoIiwgImFyclN0YWNrZWQiLCAib3RoU3RhY2tlZCIsICJpbmRleCIsICJyZXN1bHQiLCAic2VlbiIsICJhcnJWYWx1ZSIsICJvdGhWYWx1ZSIsICJjb21wYXJlZCIsICJvdGhJbmRleCIsICJyZXF1aXJlX1VpbnQ4QXJyYXkiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJyb290IiwgIlVpbnQ4QXJyYXkiLCAicmVxdWlyZV9tYXBUb0FycmF5IiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAibWFwVG9BcnJheSIsICJtYXAiLCAiaW5kZXgiLCAicmVzdWx0IiwgInZhbHVlIiwgImtleSIsICJyZXF1aXJlX3NldFRvQXJyYXkiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJzZXRUb0FycmF5IiwgInNldCIsICJpbmRleCIsICJyZXN1bHQiLCAidmFsdWUiLCAicmVxdWlyZV9lcXVhbEJ5VGFnIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiU3ltYm9sIiwgIlVpbnQ4QXJyYXkiLCAiZXEiLCAiZXF1YWxBcnJheXMiLCAibWFwVG9BcnJheSIsICJzZXRUb0FycmF5IiwgIkNPTVBBUkVfUEFSVElBTF9GTEFHIiwgIkNPTVBBUkVfVU5PUkRFUkVEX0ZMQUciLCAiYm9vbFRhZyIsICJkYXRlVGFnIiwgImVycm9yVGFnIiwgIm1hcFRhZyIsICJudW1iZXJUYWciLCAicmVnZXhwVGFnIiwgInNldFRhZyIsICJzdHJpbmdUYWciLCAic3ltYm9sVGFnIiwgImFycmF5QnVmZmVyVGFnIiwgImRhdGFWaWV3VGFnIiwgInN5bWJvbFByb3RvIiwgInN5bWJvbFZhbHVlT2YiLCAiZXF1YWxCeVRhZyIsICJvYmplY3QiLCAib3RoZXIiLCAidGFnIiwgImJpdG1hc2siLCAiY3VzdG9taXplciIsICJlcXVhbEZ1bmMiLCAic3RhY2siLCAiY29udmVydCIsICJpc1BhcnRpYWwiLCAic3RhY2tlZCIsICJyZXN1bHQiLCAicmVxdWlyZV9hcnJheVB1c2giLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJhcnJheVB1c2giLCAiYXJyYXkiLCAidmFsdWVzIiwgImluZGV4IiwgImxlbmd0aCIsICJvZmZzZXQiLCAicmVxdWlyZV9pc0FycmF5IiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiaXNBcnJheSIsICJyZXF1aXJlX2Jhc2VHZXRBbGxLZXlzIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiYXJyYXlQdXNoIiwgImlzQXJyYXkiLCAiYmFzZUdldEFsbEtleXMiLCAib2JqZWN0IiwgImtleXNGdW5jIiwgInN5bWJvbHNGdW5jIiwgInJlc3VsdCIsICJyZXF1aXJlX2FycmF5RmlsdGVyIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiYXJyYXlGaWx0ZXIiLCAiYXJyYXkiLCAicHJlZGljYXRlIiwgImluZGV4IiwgImxlbmd0aCIsICJyZXNJbmRleCIsICJyZXN1bHQiLCAidmFsdWUiLCAicmVxdWlyZV9zdHViQXJyYXkiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJzdHViQXJyYXkiLCAicmVxdWlyZV9nZXRTeW1ib2xzIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiYXJyYXlGaWx0ZXIiLCAic3R1YkFycmF5IiwgIm9iamVjdFByb3RvIiwgInByb3BlcnR5SXNFbnVtZXJhYmxlIiwgIm5hdGl2ZUdldFN5bWJvbHMiLCAiZ2V0U3ltYm9scyIsICJvYmplY3QiLCAic3ltYm9sIiwgInJlcXVpcmVfYmFzZVRpbWVzIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiYmFzZVRpbWVzIiwgIm4iLCAiaXRlcmF0ZWUiLCAiaW5kZXgiLCAicmVzdWx0IiwgInJlcXVpcmVfaXNPYmplY3RMaWtlIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiaXNPYmplY3RMaWtlIiwgInZhbHVlIiwgInJlcXVpcmVfYmFzZUlzQXJndW1lbnRzIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiYmFzZUdldFRhZyIsICJpc09iamVjdExpa2UiLCAiYXJnc1RhZyIsICJiYXNlSXNBcmd1bWVudHMiLCAidmFsdWUiLCAicmVxdWlyZV9pc0FyZ3VtZW50cyIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImJhc2VJc0FyZ3VtZW50cyIsICJpc09iamVjdExpa2UiLCAib2JqZWN0UHJvdG8iLCAiaGFzT3duUHJvcGVydHkiLCAicHJvcGVydHlJc0VudW1lcmFibGUiLCAiaXNBcmd1bWVudHMiLCAidmFsdWUiLCAicmVxdWlyZV9zdHViRmFsc2UiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJzdHViRmFsc2UiLCAicmVxdWlyZV9pc0J1ZmZlciIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgInJvb3QiLCAic3R1YkZhbHNlIiwgImZyZWVFeHBvcnRzIiwgImZyZWVNb2R1bGUiLCAibW9kdWxlRXhwb3J0cyIsICJCdWZmZXIiLCAibmF0aXZlSXNCdWZmZXIiLCAiaXNCdWZmZXIiLCAicmVxdWlyZV9pc0luZGV4IiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiTUFYX1NBRkVfSU5URUdFUiIsICJyZUlzVWludCIsICJpc0luZGV4IiwgInZhbHVlIiwgImxlbmd0aCIsICJ0eXBlIiwgInJlcXVpcmVfaXNMZW5ndGgiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJNQVhfU0FGRV9JTlRFR0VSIiwgImlzTGVuZ3RoIiwgInZhbHVlIiwgInJlcXVpcmVfYmFzZUlzVHlwZWRBcnJheSIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImJhc2VHZXRUYWciLCAiaXNMZW5ndGgiLCAiaXNPYmplY3RMaWtlIiwgImFyZ3NUYWciLCAiYXJyYXlUYWciLCAiYm9vbFRhZyIsICJkYXRlVGFnIiwgImVycm9yVGFnIiwgImZ1bmNUYWciLCAibWFwVGFnIiwgIm51bWJlclRhZyIsICJvYmplY3RUYWciLCAicmVnZXhwVGFnIiwgInNldFRhZyIsICJzdHJpbmdUYWciLCAid2Vha01hcFRhZyIsICJhcnJheUJ1ZmZlclRhZyIsICJkYXRhVmlld1RhZyIsICJmbG9hdDMyVGFnIiwgImZsb2F0NjRUYWciLCAiaW50OFRhZyIsICJpbnQxNlRhZyIsICJpbnQzMlRhZyIsICJ1aW50OFRhZyIsICJ1aW50OENsYW1wZWRUYWciLCAidWludDE2VGFnIiwgInVpbnQzMlRhZyIsICJ0eXBlZEFycmF5VGFncyIsICJiYXNlSXNUeXBlZEFycmF5IiwgInZhbHVlIiwgInJlcXVpcmVfYmFzZVVuYXJ5IiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiYmFzZVVuYXJ5IiwgImZ1bmMiLCAidmFsdWUiLCAicmVxdWlyZV9ub2RlVXRpbCIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImZyZWVHbG9iYWwiLCAiZnJlZUV4cG9ydHMiLCAiZnJlZU1vZHVsZSIsICJtb2R1bGVFeHBvcnRzIiwgImZyZWVQcm9jZXNzIiwgIm5vZGVVdGlsIiwgInR5cGVzIiwgInJlcXVpcmVfaXNUeXBlZEFycmF5IiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiYmFzZUlzVHlwZWRBcnJheSIsICJiYXNlVW5hcnkiLCAibm9kZVV0aWwiLCAibm9kZUlzVHlwZWRBcnJheSIsICJpc1R5cGVkQXJyYXkiLCAicmVxdWlyZV9hcnJheUxpa2VLZXlzIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiYmFzZVRpbWVzIiwgImlzQXJndW1lbnRzIiwgImlzQXJyYXkiLCAiaXNCdWZmZXIiLCAiaXNJbmRleCIsICJpc1R5cGVkQXJyYXkiLCAib2JqZWN0UHJvdG8iLCAiaGFzT3duUHJvcGVydHkiLCAiYXJyYXlMaWtlS2V5cyIsICJ2YWx1ZSIsICJpbmhlcml0ZWQiLCAiaXNBcnIiLCAiaXNBcmciLCAiaXNCdWZmIiwgImlzVHlwZSIsICJza2lwSW5kZXhlcyIsICJyZXN1bHQiLCAibGVuZ3RoIiwgImtleSIsICJyZXF1aXJlX2lzUHJvdG90eXBlIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAib2JqZWN0UHJvdG8iLCAiaXNQcm90b3R5cGUiLCAidmFsdWUiLCAiQ3RvciIsICJwcm90byIsICJyZXF1aXJlX292ZXJBcmciLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJvdmVyQXJnIiwgImZ1bmMiLCAidHJhbnNmb3JtIiwgImFyZyIsICJyZXF1aXJlX25hdGl2ZUtleXMiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJvdmVyQXJnIiwgIm5hdGl2ZUtleXMiLCAicmVxdWlyZV9iYXNlS2V5cyIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImlzUHJvdG90eXBlIiwgIm5hdGl2ZUtleXMiLCAib2JqZWN0UHJvdG8iLCAiaGFzT3duUHJvcGVydHkiLCAiYmFzZUtleXMiLCAib2JqZWN0IiwgInJlc3VsdCIsICJrZXkiLCAicmVxdWlyZV9pc0FycmF5TGlrZSIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImlzRnVuY3Rpb24iLCAiaXNMZW5ndGgiLCAiaXNBcnJheUxpa2UiLCAidmFsdWUiLCAicmVxdWlyZV9rZXlzIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiYXJyYXlMaWtlS2V5cyIsICJiYXNlS2V5cyIsICJpc0FycmF5TGlrZSIsICJrZXlzIiwgIm9iamVjdCIsICJyZXF1aXJlX2dldEFsbEtleXMiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJiYXNlR2V0QWxsS2V5cyIsICJnZXRTeW1ib2xzIiwgImtleXMiLCAiZ2V0QWxsS2V5cyIsICJvYmplY3QiLCAicmVxdWlyZV9lcXVhbE9iamVjdHMiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJnZXRBbGxLZXlzIiwgIkNPTVBBUkVfUEFSVElBTF9GTEFHIiwgIm9iamVjdFByb3RvIiwgImhhc093blByb3BlcnR5IiwgImVxdWFsT2JqZWN0cyIsICJvYmplY3QiLCAib3RoZXIiLCAiYml0bWFzayIsICJjdXN0b21pemVyIiwgImVxdWFsRnVuYyIsICJzdGFjayIsICJpc1BhcnRpYWwiLCAib2JqUHJvcHMiLCAib2JqTGVuZ3RoIiwgIm90aFByb3BzIiwgIm90aExlbmd0aCIsICJpbmRleCIsICJrZXkiLCAib2JqU3RhY2tlZCIsICJvdGhTdGFja2VkIiwgInJlc3VsdCIsICJza2lwQ3RvciIsICJvYmpWYWx1ZSIsICJvdGhWYWx1ZSIsICJjb21wYXJlZCIsICJvYmpDdG9yIiwgIm90aEN0b3IiLCAicmVxdWlyZV9EYXRhVmlldyIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImdldE5hdGl2ZSIsICJyb290IiwgIkRhdGFWaWV3IiwgInJlcXVpcmVfUHJvbWlzZSIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImdldE5hdGl2ZSIsICJyb290IiwgIlByb21pc2UiLCAicmVxdWlyZV9TZXQiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJnZXROYXRpdmUiLCAicm9vdCIsICJTZXQiLCAicmVxdWlyZV9XZWFrTWFwIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZ2V0TmF0aXZlIiwgInJvb3QiLCAiV2Vha01hcCIsICJyZXF1aXJlX2dldFRhZyIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgIkRhdGFWaWV3IiwgIk1hcCIsICJQcm9taXNlIiwgIlNldCIsICJXZWFrTWFwIiwgImJhc2VHZXRUYWciLCAidG9Tb3VyY2UiLCAibWFwVGFnIiwgIm9iamVjdFRhZyIsICJwcm9taXNlVGFnIiwgInNldFRhZyIsICJ3ZWFrTWFwVGFnIiwgImRhdGFWaWV3VGFnIiwgImRhdGFWaWV3Q3RvclN0cmluZyIsICJtYXBDdG9yU3RyaW5nIiwgInByb21pc2VDdG9yU3RyaW5nIiwgInNldEN0b3JTdHJpbmciLCAid2Vha01hcEN0b3JTdHJpbmciLCAiZ2V0VGFnIiwgInZhbHVlIiwgInJlc3VsdCIsICJDdG9yIiwgImN0b3JTdHJpbmciLCAicmVxdWlyZV9iYXNlSXNFcXVhbERlZXAiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJTdGFjayIsICJlcXVhbEFycmF5cyIsICJlcXVhbEJ5VGFnIiwgImVxdWFsT2JqZWN0cyIsICJnZXRUYWciLCAiaXNBcnJheSIsICJpc0J1ZmZlciIsICJpc1R5cGVkQXJyYXkiLCAiQ09NUEFSRV9QQVJUSUFMX0ZMQUciLCAiYXJnc1RhZyIsICJhcnJheVRhZyIsICJvYmplY3RUYWciLCAib2JqZWN0UHJvdG8iLCAiaGFzT3duUHJvcGVydHkiLCAiYmFzZUlzRXF1YWxEZWVwIiwgIm9iamVjdCIsICJvdGhlciIsICJiaXRtYXNrIiwgImN1c3RvbWl6ZXIiLCAiZXF1YWxGdW5jIiwgInN0YWNrIiwgIm9iaklzQXJyIiwgIm90aElzQXJyIiwgIm9ialRhZyIsICJvdGhUYWciLCAib2JqSXNPYmoiLCAib3RoSXNPYmoiLCAiaXNTYW1lVGFnIiwgIm9iaklzV3JhcHBlZCIsICJvdGhJc1dyYXBwZWQiLCAib2JqVW53cmFwcGVkIiwgIm90aFVud3JhcHBlZCIsICJyZXF1aXJlX2Jhc2VJc0VxdWFsIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiYmFzZUlzRXF1YWxEZWVwIiwgImlzT2JqZWN0TGlrZSIsICJiYXNlSXNFcXVhbCIsICJ2YWx1ZSIsICJvdGhlciIsICJiaXRtYXNrIiwgImN1c3RvbWl6ZXIiLCAic3RhY2siLCAicmVxdWlyZV9pc0VxdWFsIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiYmFzZUlzRXF1YWwiLCAiaXNFcXVhbCIsICJ2YWx1ZSIsICJvdGhlciIsICJyZXF1aXJlX2RlZmluZVByb3BlcnR5IiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZ2V0TmF0aXZlIiwgImRlZmluZVByb3BlcnR5IiwgImZ1bmMiLCAicmVxdWlyZV9iYXNlQXNzaWduVmFsdWUiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJkZWZpbmVQcm9wZXJ0eSIsICJiYXNlQXNzaWduVmFsdWUiLCAib2JqZWN0IiwgImtleSIsICJ2YWx1ZSIsICJyZXF1aXJlX2Fzc2lnbk1lcmdlVmFsdWUiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJiYXNlQXNzaWduVmFsdWUiLCAiZXEiLCAiYXNzaWduTWVyZ2VWYWx1ZSIsICJvYmplY3QiLCAia2V5IiwgInZhbHVlIiwgInJlcXVpcmVfY3JlYXRlQmFzZUZvciIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImNyZWF0ZUJhc2VGb3IiLCAiZnJvbVJpZ2h0IiwgIm9iamVjdCIsICJpdGVyYXRlZSIsICJrZXlzRnVuYyIsICJpbmRleCIsICJpdGVyYWJsZSIsICJwcm9wcyIsICJsZW5ndGgiLCAia2V5IiwgInJlcXVpcmVfYmFzZUZvciIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImNyZWF0ZUJhc2VGb3IiLCAiYmFzZUZvciIsICJyZXF1aXJlX2Nsb25lQnVmZmVyIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAicm9vdCIsICJmcmVlRXhwb3J0cyIsICJmcmVlTW9kdWxlIiwgIm1vZHVsZUV4cG9ydHMiLCAiQnVmZmVyIiwgImFsbG9jVW5zYWZlIiwgImNsb25lQnVmZmVyIiwgImJ1ZmZlciIsICJpc0RlZXAiLCAibGVuZ3RoIiwgInJlc3VsdCIsICJyZXF1aXJlX2Nsb25lQXJyYXlCdWZmZXIiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJVaW50OEFycmF5IiwgImNsb25lQXJyYXlCdWZmZXIiLCAiYXJyYXlCdWZmZXIiLCAicmVzdWx0IiwgInJlcXVpcmVfY2xvbmVUeXBlZEFycmF5IiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiY2xvbmVBcnJheUJ1ZmZlciIsICJjbG9uZVR5cGVkQXJyYXkiLCAidHlwZWRBcnJheSIsICJpc0RlZXAiLCAiYnVmZmVyIiwgInJlcXVpcmVfY29weUFycmF5IiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiY29weUFycmF5IiwgInNvdXJjZSIsICJhcnJheSIsICJpbmRleCIsICJsZW5ndGgiLCAicmVxdWlyZV9iYXNlQ3JlYXRlIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiaXNPYmplY3QiLCAib2JqZWN0Q3JlYXRlIiwgImJhc2VDcmVhdGUiLCAib2JqZWN0IiwgInByb3RvIiwgInJlc3VsdCIsICJyZXF1aXJlX2dldFByb3RvdHlwZSIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgIm92ZXJBcmciLCAiZ2V0UHJvdG90eXBlIiwgInJlcXVpcmVfaW5pdENsb25lT2JqZWN0IiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiYmFzZUNyZWF0ZSIsICJnZXRQcm90b3R5cGUiLCAiaXNQcm90b3R5cGUiLCAiaW5pdENsb25lT2JqZWN0IiwgIm9iamVjdCIsICJyZXF1aXJlX2lzQXJyYXlMaWtlT2JqZWN0IiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiaXNBcnJheUxpa2UiLCAiaXNPYmplY3RMaWtlIiwgImlzQXJyYXlMaWtlT2JqZWN0IiwgInZhbHVlIiwgInJlcXVpcmVfaXNQbGFpbk9iamVjdCIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImJhc2VHZXRUYWciLCAiZ2V0UHJvdG90eXBlIiwgImlzT2JqZWN0TGlrZSIsICJvYmplY3RUYWciLCAiZnVuY1Byb3RvIiwgIm9iamVjdFByb3RvIiwgImZ1bmNUb1N0cmluZyIsICJoYXNPd25Qcm9wZXJ0eSIsICJvYmplY3RDdG9yU3RyaW5nIiwgImlzUGxhaW5PYmplY3QiLCAidmFsdWUiLCAicHJvdG8iLCAiQ3RvciIsICJyZXF1aXJlX3NhZmVHZXQiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJzYWZlR2V0IiwgIm9iamVjdCIsICJrZXkiLCAicmVxdWlyZV9hc3NpZ25WYWx1ZSIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImJhc2VBc3NpZ25WYWx1ZSIsICJlcSIsICJvYmplY3RQcm90byIsICJoYXNPd25Qcm9wZXJ0eSIsICJhc3NpZ25WYWx1ZSIsICJvYmplY3QiLCAia2V5IiwgInZhbHVlIiwgIm9ialZhbHVlIiwgInJlcXVpcmVfY29weU9iamVjdCIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImFzc2lnblZhbHVlIiwgImJhc2VBc3NpZ25WYWx1ZSIsICJjb3B5T2JqZWN0IiwgInNvdXJjZSIsICJwcm9wcyIsICJvYmplY3QiLCAiY3VzdG9taXplciIsICJpc05ldyIsICJpbmRleCIsICJsZW5ndGgiLCAia2V5IiwgIm5ld1ZhbHVlIiwgInJlcXVpcmVfbmF0aXZlS2V5c0luIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAibmF0aXZlS2V5c0luIiwgIm9iamVjdCIsICJyZXN1bHQiLCAia2V5IiwgInJlcXVpcmVfYmFzZUtleXNJbiIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImlzT2JqZWN0IiwgImlzUHJvdG90eXBlIiwgIm5hdGl2ZUtleXNJbiIsICJvYmplY3RQcm90byIsICJoYXNPd25Qcm9wZXJ0eSIsICJiYXNlS2V5c0luIiwgIm9iamVjdCIsICJpc1Byb3RvIiwgInJlc3VsdCIsICJrZXkiLCAicmVxdWlyZV9rZXlzSW4iLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJhcnJheUxpa2VLZXlzIiwgImJhc2VLZXlzSW4iLCAiaXNBcnJheUxpa2UiLCAia2V5c0luIiwgIm9iamVjdCIsICJyZXF1aXJlX3RvUGxhaW5PYmplY3QiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJjb3B5T2JqZWN0IiwgImtleXNJbiIsICJ0b1BsYWluT2JqZWN0IiwgInZhbHVlIiwgInJlcXVpcmVfYmFzZU1lcmdlRGVlcCIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImFzc2lnbk1lcmdlVmFsdWUiLCAiY2xvbmVCdWZmZXIiLCAiY2xvbmVUeXBlZEFycmF5IiwgImNvcHlBcnJheSIsICJpbml0Q2xvbmVPYmplY3QiLCAiaXNBcmd1bWVudHMiLCAiaXNBcnJheSIsICJpc0FycmF5TGlrZU9iamVjdCIsICJpc0J1ZmZlciIsICJpc0Z1bmN0aW9uIiwgImlzT2JqZWN0IiwgImlzUGxhaW5PYmplY3QiLCAiaXNUeXBlZEFycmF5IiwgInNhZmVHZXQiLCAidG9QbGFpbk9iamVjdCIsICJiYXNlTWVyZ2VEZWVwIiwgIm9iamVjdCIsICJzb3VyY2UiLCAia2V5IiwgInNyY0luZGV4IiwgIm1lcmdlRnVuYyIsICJjdXN0b21pemVyIiwgInN0YWNrIiwgIm9ialZhbHVlIiwgInNyY1ZhbHVlIiwgInN0YWNrZWQiLCAibmV3VmFsdWUiLCAiaXNDb21tb24iLCAiaXNBcnIiLCAiaXNCdWZmIiwgImlzVHlwZWQiLCAicmVxdWlyZV9iYXNlTWVyZ2UiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJTdGFjayIsICJhc3NpZ25NZXJnZVZhbHVlIiwgImJhc2VGb3IiLCAiYmFzZU1lcmdlRGVlcCIsICJpc09iamVjdCIsICJrZXlzSW4iLCAic2FmZUdldCIsICJiYXNlTWVyZ2UiLCAib2JqZWN0IiwgInNvdXJjZSIsICJzcmNJbmRleCIsICJjdXN0b21pemVyIiwgInN0YWNrIiwgInNyY1ZhbHVlIiwgImtleSIsICJuZXdWYWx1ZSIsICJyZXF1aXJlX2lkZW50aXR5IiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiaWRlbnRpdHkiLCAidmFsdWUiLCAicmVxdWlyZV9hcHBseSIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImFwcGx5IiwgImZ1bmMiLCAidGhpc0FyZyIsICJhcmdzIiwgInJlcXVpcmVfb3ZlclJlc3QiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJhcHBseSIsICJuYXRpdmVNYXgiLCAib3ZlclJlc3QiLCAiZnVuYyIsICJzdGFydCIsICJ0cmFuc2Zvcm0iLCAiYXJncyIsICJpbmRleCIsICJsZW5ndGgiLCAiYXJyYXkiLCAib3RoZXJBcmdzIiwgInJlcXVpcmVfY29uc3RhbnQiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJjb25zdGFudCIsICJ2YWx1ZSIsICJyZXF1aXJlX2Jhc2VTZXRUb1N0cmluZyIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImNvbnN0YW50IiwgImRlZmluZVByb3BlcnR5IiwgImlkZW50aXR5IiwgImJhc2VTZXRUb1N0cmluZyIsICJmdW5jIiwgInN0cmluZyIsICJyZXF1aXJlX3Nob3J0T3V0IiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiSE9UX0NPVU5UIiwgIkhPVF9TUEFOIiwgIm5hdGl2ZU5vdyIsICJzaG9ydE91dCIsICJmdW5jIiwgImNvdW50IiwgImxhc3RDYWxsZWQiLCAic3RhbXAiLCAicmVtYWluaW5nIiwgInJlcXVpcmVfc2V0VG9TdHJpbmciLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJiYXNlU2V0VG9TdHJpbmciLCAic2hvcnRPdXQiLCAic2V0VG9TdHJpbmciLCAicmVxdWlyZV9iYXNlUmVzdCIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImlkZW50aXR5IiwgIm92ZXJSZXN0IiwgInNldFRvU3RyaW5nIiwgImJhc2VSZXN0IiwgImZ1bmMiLCAic3RhcnQiLCAicmVxdWlyZV9pc0l0ZXJhdGVlQ2FsbCIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImVxIiwgImlzQXJyYXlMaWtlIiwgImlzSW5kZXgiLCAiaXNPYmplY3QiLCAiaXNJdGVyYXRlZUNhbGwiLCAidmFsdWUiLCAiaW5kZXgiLCAib2JqZWN0IiwgInR5cGUiLCAicmVxdWlyZV9jcmVhdGVBc3NpZ25lciIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImJhc2VSZXN0IiwgImlzSXRlcmF0ZWVDYWxsIiwgImNyZWF0ZUFzc2lnbmVyIiwgImFzc2lnbmVyIiwgIm9iamVjdCIsICJzb3VyY2VzIiwgImluZGV4IiwgImxlbmd0aCIsICJjdXN0b21pemVyIiwgImd1YXJkIiwgInNvdXJjZSIsICJyZXF1aXJlX21lcmdlV2l0aCIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImJhc2VNZXJnZSIsICJjcmVhdGVBc3NpZ25lciIsICJtZXJnZVdpdGgiLCAib2JqZWN0IiwgInNvdXJjZSIsICJzcmNJbmRleCIsICJjdXN0b21pemVyIiwgInJlcXVpcmVfbWlzY1V0aWxzIiwgIl9fY29tbW9uSlNNaW4iLCAidmVyc2lvbiIsICJzdHIiLCAidmFsIiwgImFyZyIsICJkZWYiLCAidmFsdWUiLCAidmFsdWVzIiwgIml0ZXJhYmxlIiwgImNiIiwgIm91dHB1dCIsICJvdXQiLCAicHJvbWlzZXMiLCAicmVzdWx0cyIsICJyZXN1bHQiLCAia2V5IiwgIm1hcCIsICJmYWN0b3J5IiwgImZuIiwgImNsZWFudXAiLCAidXBkYXRlIiwgImVycm9yIiwgInN0cmVhbSIsICJyZXNvbHZlIiwgInJlamVjdCIsICJjaHVua3MiLCAiY2h1bmsiLCAiZW5jb2RpbmciLCAicmVzb2x2ZUZuIiwgInJlamVjdEZuIiwgImxpbWl0IiwgImRlZmVycmVkIiwgInByb21pc2UiLCAiZXJyIiwgIl9hIiwgImlmRW1wdHkiLCAicGF0aCIsICJjYWNoZWRJbnN0YW5jZSIsICJzdGF0IiwgImluc3RhbmNlIiwgIkNhY2hpbmdTdHJhdGVneSIsICJjYWNoaW5nU3RyYXRlZ3kiLCAibWFwcGVycyIsICJhc0FycmF5IiwgInN0cmluZ2lmaWVkIiwgIm1hcHBlciIsICJpbmRpY2VzIiwgIl8iLCAiaW5kZXgiLCAiYSIsICJiIiwgImxheWVyIiwgImNvbXBhcmlzb24iLCAiaWdub3JlUGF0dGVybnMiLCAicGF0dGVybiIsICJlbnYiLCAicmVnZXgiLCAiYXJncyIsICJ2YXJpYWJsZU5hbWUiLCAiY29sb24iLCAiZmFsbGJhY2siLCAidmFyaWFibGVFeGlzdCIsICJ2YXJpYWJsZVZhbHVlIiwgInRhcmdldCIsICJzb3VyY2VzIiwgIndyYXAiLCAid3JhcHBlZFRhcmdldCIsICJ3cmFwcGVkU291cmNlcyIsICJzb3VyY2UiLCAidGFyZ2V0VmFsdWUiLCAic291cmNlVmFsdWUiLCAic291cmNlSXRlbSIsICJ0YXJnZXRJdGVtIiwgInJlcXVpcmVfdHlwZXMiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIkxpbmtUeXBlIiwgIlBhY2thZ2VFeHRlbnNpb25UeXBlIiwgIlBhY2thZ2VFeHRlbnNpb25TdGF0dXMiLCAicmVxdWlyZV9mb3JtYXRVdGlscyIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAidHNsaWJfMSIsICJmc2xpYl8xIiwgImNoYWxrXzEiLCAiY2lfaW5mb18xIiwgImNsaXBhbmlvbl8xIiwgIm1pY3JvbWF0Y2hfMSIsICJzdHJpcF9hbnNpXzEiLCAiTWVzc2FnZU5hbWVfMSIsICJtaXNjVXRpbHMiLCAic3RydWN0VXRpbHMiLCAidHlwZXNfMSIsICJTdHlsZSIsICJjaGFsa09wdGlvbnMiLCAiY2hhbGtJbnN0YW5jZSIsICJjb2xvcnMiLCAidmFsaWRhdGVUcmFuc2Zvcm0iLCAic3BlYyIsICJ0cmFuc2Zvcm1zIiwgImNvbmZpZ3VyYXRpb24iLCAidmFsdWUiLCAiYXBwbHlDb2xvciIsICJpZGVudCIsICJsb2NhdG9yIiwgImRlc2NyaXB0b3IiLCAicGFja2FnZUV4dGVuc2lvbiIsICJzZXR0aW5nTmFtZSIsICJhcHBseUh5cGVybGluayIsICJkdXJhdGlvbiIsICJtaW51dGVzIiwgInNlY29uZHMiLCAibWlsbGlzZWNvbmRzIiwgInNpemUiLCAidGhyZXNob2xkcyIsICJwb3dlciIsICJmYWN0b3IiLCAiZmlsZVBhdGgiLCAidGV4dCIsICJmb3JtYXQiLCAicGFyYWdyYXBocyIsICJ0dXBsZSIsICJmb3JtYXRUeXBlIiwgImFwcGx5U3R5bGUiLCAiZmxhZ3MiLCAiY29sb3JTcGVjIiwgImNvbG9yIiwgImZuIiwgImlzS29uc29sZSIsICJocmVmIiwgInByZXR0eSIsICJwcmV0dHlMaXN0IiwgInZhbHVlcyIsICJzZXBhcmF0b3IiLCAianNvbiIsICJqc29uT3JQcmV0dHkiLCAib3V0cHV0SnNvbiIsICJtYXJrIiwgInByZXR0eUZpZWxkIiwgImxhYmVsIiwgIkxvZ0xldmVsIiwgImFkZExvZ0ZpbHRlclN1cHBvcnQiLCAicmVwb3J0IiwgImxvZ0ZpbHRlcnMiLCAibG9nRmlsdGVyc0J5Q29kZSIsICJsb2dGaWx0ZXJzQnlUZXh0IiwgImxvZ0ZpbHRlcnNCeVBhdHRlcm5NYXRjaGVyIiwgImZpbHRlciIsICJsZXZlbCIsICJjb2RlIiwgInBhdHRlcm4iLCAiZmluZExvZ0xldmVsIiwgIm5hbWUiLCAiZGVmYXVsdExldmVsIiwgInN0cmlwcGVkVGV4dCIsICJmaWx0ZXJNYXRjaGVyIiwgImZpbHRlckxldmVsIiwgInJlcG9ydEluZm8iLCAicmVwb3J0V2FybmluZyIsICJyZXBvcnRFcnJvciIsICJyb3V0ZU1lc3NhZ2UiLCAiYXJncyIsICJyZXF1aXJlX2FycmF5X3VuaW9uIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiYXJndW1lbnRzXyIsICJyZXF1aXJlX21lcmdlMiIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgIlN0cmVhbSIsICJQYXNzVGhyb3VnaCIsICJzbGljZSIsICJtZXJnZTIiLCAic3RyZWFtc1F1ZXVlIiwgImFyZ3MiLCAibWVyZ2luZyIsICJvcHRpb25zIiwgImRvRW5kIiwgImRvUGlwZUVycm9yIiwgIm1lcmdlZFN0cmVhbSIsICJhZGRTdHJlYW0iLCAiaSIsICJsZW4iLCAicGF1c2VTdHJlYW1zIiwgIm1lcmdlU3RyZWFtIiwgInN0cmVhbXMiLCAiZW5kU3RyZWFtIiwgInBpcGVzQ291bnQiLCAibmV4dCIsICJwaXBlIiwgInN0cmVhbSIsICJvbmVuZCIsICJvbmVycm9yIiwgImVyciIsICJyZXF1aXJlX2FycmF5IiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJmbGF0dGVuIiwgIml0ZW1zIiwgImNvbGxlY3Rpb24iLCAiaXRlbSIsICJzcGxpdFdoZW4iLCAicHJlZGljYXRlIiwgInJlc3VsdCIsICJncm91cEluZGV4IiwgInJlcXVpcmVfZXJybm8iLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgImlzRW5vZW50Q29kZUVycm9yIiwgImVycm9yIiwgInJlcXVpcmVfZnMiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIkRpcmVudEZyb21TdGF0cyIsICJuYW1lIiwgInN0YXRzIiwgImNyZWF0ZURpcmVudEZyb21TdGF0cyIsICJyZXF1aXJlX3BhdGgiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgInBhdGgiLCAiTEVBRElOR19ET1RfU0VHTUVOVF9DSEFSQUNURVJTX0NPVU5UIiwgIlVORVNDQVBFRF9HTE9CX1NZTUJPTFNfUkUiLCAidW5peGlmeSIsICJmaWxlcGF0aCIsICJtYWtlQWJzb2x1dGUiLCAiY3dkIiwgImVzY2FwZSIsICJwYXR0ZXJuIiwgInJlbW92ZUxlYWRpbmdEb3RTZWdtZW50IiwgImVudHJ5IiwgInNlY29uZENoYXJhY3RlcnkiLCAicmVxdWlyZV9pc19leHRnbG9iIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAic3RyIiwgIm1hdGNoIiwgInJlcXVpcmVfaXNfZ2xvYiIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImlzRXh0Z2xvYiIsICJjaGFycyIsICJzdHJpY3RDaGVjayIsICJzdHIiLCAiaW5kZXgiLCAicGlwZUluZGV4IiwgImNsb3NlU3F1YXJlSW5kZXgiLCAiY2xvc2VDdXJseUluZGV4IiwgImNsb3NlUGFyZW5JbmRleCIsICJiYWNrU2xhc2hJbmRleCIsICJvcGVuIiwgImNsb3NlIiwgIm4iLCAicmVsYXhlZENoZWNrIiwgIm9wdGlvbnMiLCAiY2hlY2siLCAicmVxdWlyZV9nbG9iX3BhcmVudCIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImlzR2xvYiIsICJwYXRoUG9zaXhEaXJuYW1lIiwgImlzV2luMzIiLCAic2xhc2giLCAiYmFja3NsYXNoIiwgImVuY2xvc3VyZSIsICJnbG9iYnkiLCAiZXNjYXBlZCIsICJzdHIiLCAib3B0cyIsICJvcHRpb25zIiwgInJlcXVpcmVfcGF0dGVybiIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAicGF0aCIsICJnbG9iUGFyZW50IiwgIm1pY3JvbWF0Y2giLCAiR0xPQlNUQVIiLCAiRVNDQVBFX1NZTUJPTCIsICJDT01NT05fR0xPQl9TWU1CT0xTX1JFIiwgIlJFR0VYX0NIQVJBQ1RFUl9DTEFTU19TWU1CT0xTX1JFIiwgIlJFR0VYX0dST1VQX1NZTUJPTFNfUkUiLCAiR0xPQl9FWFRFTlNJT05fU1lNQk9MU19SRSIsICJCUkFDRV9FWFBBTlNJT05fU0VQQVJBVE9SU19SRSIsICJpc1N0YXRpY1BhdHRlcm4iLCAicGF0dGVybiIsICJvcHRpb25zIiwgImlzRHluYW1pY1BhdHRlcm4iLCAiaGFzQnJhY2VFeHBhbnNpb24iLCAib3BlbmluZ0JyYWNlSW5kZXgiLCAiY2xvc2luZ0JyYWNlSW5kZXgiLCAiYnJhY2VDb250ZW50IiwgImNvbnZlcnRUb1Bvc2l0aXZlUGF0dGVybiIsICJpc05lZ2F0aXZlUGF0dGVybiIsICJjb252ZXJ0VG9OZWdhdGl2ZVBhdHRlcm4iLCAiaXNQb3NpdGl2ZVBhdHRlcm4iLCAiZ2V0TmVnYXRpdmVQYXR0ZXJucyIsICJwYXR0ZXJucyIsICJnZXRQb3NpdGl2ZVBhdHRlcm5zIiwgImdldFBhdHRlcm5zSW5zaWRlQ3VycmVudERpcmVjdG9yeSIsICJpc1BhdHRlcm5SZWxhdGVkVG9QYXJlbnREaXJlY3RvcnkiLCAiZ2V0UGF0dGVybnNPdXRzaWRlQ3VycmVudERpcmVjdG9yeSIsICJnZXRCYXNlRGlyZWN0b3J5IiwgImhhc0dsb2JTdGFyIiwgImVuZHNXaXRoU2xhc2hHbG9iU3RhciIsICJpc0FmZmVjdERlcHRoT2ZSZWFkaW5nUGF0dGVybiIsICJiYXNlbmFtZSIsICJleHBhbmRQYXR0ZXJuc1dpdGhCcmFjZUV4cGFuc2lvbiIsICJjb2xsZWN0aW9uIiwgImV4cGFuZEJyYWNlRXhwYW5zaW9uIiwgImdldFBhdHRlcm5QYXJ0cyIsICJwYXJ0cyIsICJtYWtlUmUiLCAiY29udmVydFBhdHRlcm5zVG9SZSIsICJtYXRjaEFueSIsICJlbnRyeSIsICJwYXR0ZXJuc1JlIiwgInBhdHRlcm5SZSIsICJyZXF1aXJlX3N0cmVhbSIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibWVyZ2UyIiwgIm1lcmdlIiwgInN0cmVhbXMiLCAibWVyZ2VkU3RyZWFtIiwgInN0cmVhbSIsICJlcnJvciIsICJwcm9wYWdhdGVDbG9zZUV2ZW50VG9Tb3VyY2VzIiwgInJlcXVpcmVfc3RyaW5nIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJpc1N0cmluZyIsICJpbnB1dCIsICJpc0VtcHR5IiwgInJlcXVpcmVfdXRpbHMiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgImFycmF5IiwgImVycm5vIiwgImZzIiwgInBhdGgiLCAicGF0dGVybiIsICJzdHJlYW0iLCAic3RyaW5nIiwgInJlcXVpcmVfdGFza3MiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgInV0aWxzIiwgImdlbmVyYXRlIiwgInBhdHRlcm5zIiwgInNldHRpbmdzIiwgInBvc2l0aXZlUGF0dGVybnMiLCAiZ2V0UG9zaXRpdmVQYXR0ZXJucyIsICJuZWdhdGl2ZVBhdHRlcm5zIiwgImdldE5lZ2F0aXZlUGF0dGVybnNBc1Bvc2l0aXZlIiwgInN0YXRpY1BhdHRlcm5zIiwgInBhdHRlcm4iLCAiZHluYW1pY1BhdHRlcm5zIiwgInN0YXRpY1Rhc2tzIiwgImNvbnZlcnRQYXR0ZXJuc1RvVGFza3MiLCAiZHluYW1pY1Rhc2tzIiwgInBvc2l0aXZlIiwgIm5lZ2F0aXZlIiwgImR5bmFtaWMiLCAidGFza3MiLCAicGF0dGVybnNPdXRzaWRlQ3VycmVudERpcmVjdG9yeSIsICJwYXR0ZXJuc0luc2lkZUN1cnJlbnREaXJlY3RvcnkiLCAib3V0c2lkZUN1cnJlbnREaXJlY3RvcnlHcm91cCIsICJncm91cFBhdHRlcm5zQnlCYXNlRGlyZWN0b3J5IiwgImluc2lkZUN1cnJlbnREaXJlY3RvcnlHcm91cCIsICJjb252ZXJ0UGF0dGVybkdyb3Vwc1RvVGFza3MiLCAiY29udmVydFBhdHRlcm5Hcm91cFRvVGFzayIsICJpZ25vcmUiLCAiZ3JvdXAiLCAiY29sbGVjdGlvbiIsICJiYXNlIiwgInJlcXVpcmVfcGF0dGVybnMiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIkRPVUJMRV9TTEFTSF9SRSIsICJ0cmFuc2Zvcm0iLCAicGF0dGVybnMiLCAicGF0dGVybiIsICJyZW1vdmVEdXBsaWNhdGVTbGFzaGVzIiwgInJlcXVpcmVfYXN5bmMiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgInJlYWQiLCAicGF0aCIsICJzZXR0aW5ncyIsICJjYWxsYmFjayIsICJsc3RhdEVycm9yIiwgImxzdGF0IiwgImNhbGxGYWlsdXJlQ2FsbGJhY2siLCAiY2FsbFN1Y2Nlc3NDYWxsYmFjayIsICJzdGF0RXJyb3IiLCAic3RhdCIsICJlcnJvciIsICJyZXN1bHQiLCAicmVxdWlyZV9zeW5jIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJyZWFkIiwgInBhdGgiLCAic2V0dGluZ3MiLCAibHN0YXQiLCAic3RhdCIsICJlcnJvciIsICJyZXF1aXJlX2ZzIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJmcyIsICJjcmVhdGVGaWxlU3lzdGVtQWRhcHRlciIsICJmc01ldGhvZHMiLCAicmVxdWlyZV9zZXR0aW5ncyIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAiZnMiLCAiU2V0dGluZ3MiLCAiX29wdGlvbnMiLCAib3B0aW9uIiwgInZhbHVlIiwgInJlcXVpcmVfb3V0IiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJhc3luYyIsICJzeW5jIiwgInNldHRpbmdzXzEiLCAic3RhdCIsICJwYXRoIiwgIm9wdGlvbnNPclNldHRpbmdzT3JDYWxsYmFjayIsICJjYWxsYmFjayIsICJnZXRTZXR0aW5ncyIsICJzdGF0U3luYyIsICJvcHRpb25zT3JTZXR0aW5ncyIsICJzZXR0aW5ncyIsICJzZXR0aW5nc09yT3B0aW9ucyIsICJyZXF1aXJlX3F1ZXVlX21pY3JvdGFzayIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgInByb21pc2UiLCAiY2IiLCAiZXJyIiwgInJlcXVpcmVfcnVuX3BhcmFsbGVsIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAicnVuUGFyYWxsZWwiLCAicXVldWVNaWNyb3Rhc2siLCAidGFza3MiLCAiY2IiLCAicmVzdWx0cyIsICJwZW5kaW5nIiwgImtleXMiLCAiaXNTeW5jIiwgImRvbmUiLCAiZXJyIiwgImVuZCIsICJlYWNoIiwgImkiLCAicmVzdWx0IiwgImtleSIsICJ0YXNrIiwgInJlcXVpcmVfY29uc3RhbnRzIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJOT0RFX1BST0NFU1NfVkVSU0lPTl9QQVJUUyIsICJNQUpPUl9WRVJTSU9OIiwgIk1JTk9SX1ZFUlNJT04iLCAiU1VQUE9SVEVEX01BSk9SX1ZFUlNJT04iLCAiU1VQUE9SVEVEX01JTk9SX1ZFUlNJT04iLCAiSVNfTUFUQ0hFRF9CWV9NQUpPUiIsICJJU19NQVRDSEVEX0JZX01BSk9SX0FORF9NSU5PUiIsICJyZXF1aXJlX2ZzIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJEaXJlbnRGcm9tU3RhdHMiLCAibmFtZSIsICJzdGF0cyIsICJjcmVhdGVEaXJlbnRGcm9tU3RhdHMiLCAicmVxdWlyZV91dGlscyIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAiZnMiLCAicmVxdWlyZV9jb21tb24iLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgImpvaW5QYXRoU2VnbWVudHMiLCAiYSIsICJiIiwgInNlcGFyYXRvciIsICJyZXF1aXJlX2FzeW5jIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJmc1N0YXQiLCAicnBsIiwgImNvbnN0YW50c18xIiwgInV0aWxzIiwgImNvbW1vbiIsICJyZWFkIiwgImRpcmVjdG9yeSIsICJzZXR0aW5ncyIsICJjYWxsYmFjayIsICJyZWFkZGlyV2l0aEZpbGVUeXBlcyIsICJyZWFkZGlyIiwgInJlYWRkaXJFcnJvciIsICJkaXJlbnRzIiwgImNhbGxGYWlsdXJlQ2FsbGJhY2siLCAiZW50cmllcyIsICJkaXJlbnQiLCAiY2FsbFN1Y2Nlc3NDYWxsYmFjayIsICJ0YXNrcyIsICJlbnRyeSIsICJtYWtlUnBsVGFza0VudHJ5IiwgInJwbEVycm9yIiwgInJwbEVudHJpZXMiLCAiZG9uZSIsICJzdGF0RXJyb3IiLCAic3RhdHMiLCAibmFtZXMiLCAibmFtZSIsICJwYXRoIiwgImVycm9yIiwgInJlc3VsdCIsICJyZXF1aXJlX3N5bmMiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgImZzU3RhdCIsICJjb25zdGFudHNfMSIsICJ1dGlscyIsICJjb21tb24iLCAicmVhZCIsICJkaXJlY3RvcnkiLCAic2V0dGluZ3MiLCAicmVhZGRpcldpdGhGaWxlVHlwZXMiLCAicmVhZGRpciIsICJkaXJlbnQiLCAiZW50cnkiLCAic3RhdHMiLCAiZXJyb3IiLCAibmFtZSIsICJlbnRyeVBhdGgiLCAicmVxdWlyZV9mcyIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAiZnMiLCAiY3JlYXRlRmlsZVN5c3RlbUFkYXB0ZXIiLCAiZnNNZXRob2RzIiwgInJlcXVpcmVfc2V0dGluZ3MiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgInBhdGgiLCAiZnNTdGF0IiwgImZzIiwgIlNldHRpbmdzIiwgIl9vcHRpb25zIiwgIm9wdGlvbiIsICJ2YWx1ZSIsICJyZXF1aXJlX291dCIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAiYXN5bmMiLCAic3luYyIsICJzZXR0aW5nc18xIiwgInNjYW5kaXIiLCAicGF0aCIsICJvcHRpb25zT3JTZXR0aW5nc09yQ2FsbGJhY2siLCAiY2FsbGJhY2siLCAiZ2V0U2V0dGluZ3MiLCAic2NhbmRpclN5bmMiLCAib3B0aW9uc09yU2V0dGluZ3MiLCAic2V0dGluZ3MiLCAic2V0dGluZ3NPck9wdGlvbnMiLCAicmVxdWlyZV9yZXVzaWZ5IiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAicmV1c2lmeSIsICJDb25zdHJ1Y3RvciIsICJoZWFkIiwgInRhaWwiLCAiZ2V0IiwgImN1cnJlbnQiLCAicmVsZWFzZSIsICJvYmoiLCAicmVxdWlyZV9xdWV1ZSIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgInJldXNpZnkiLCAiZmFzdHF1ZXVlIiwgImNvbnRleHQiLCAid29ya2VyIiwgImNvbmN1cnJlbmN5IiwgImNhY2hlIiwgIlRhc2siLCAicXVldWVIZWFkIiwgInF1ZXVlVGFpbCIsICJfcnVubmluZyIsICJlcnJvckhhbmRsZXIiLCAic2VsZiIsICJwdXNoIiwgIm5vb3AiLCAicGF1c2UiLCAicnVubmluZyIsICJyZXN1bWUiLCAiaWRsZSIsICJsZW5ndGgiLCAiZ2V0UXVldWUiLCAidW5zaGlmdCIsICJraWxsIiwgImtpbGxBbmREcmFpbiIsICJlcnJvciIsICJjdXJyZW50IiwgImNvdW50ZXIiLCAidGFza3MiLCAiaSIsICJyZWxlYXNlIiwgInZhbHVlIiwgImRvbmUiLCAiaG9sZGVyIiwgIm5leHQiLCAiaGFuZGxlciIsICJlcnIiLCAicmVzdWx0IiwgImNhbGxiYWNrIiwgInZhbCIsICJxdWV1ZUFzUHJvbWlzZWQiLCAiYXN5bmNXcmFwcGVyIiwgImFyZyIsICJjYiIsICJyZXMiLCAicXVldWUiLCAicHVzaENiIiwgInVuc2hpZnRDYiIsICJkcmFpbmVkIiwgInAiLCAicmVzb2x2ZSIsICJyZWplY3QiLCAicHJldmlvdXNEcmFpbiIsICJyZXF1aXJlX2NvbW1vbiIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAiaXNGYXRhbEVycm9yIiwgInNldHRpbmdzIiwgImVycm9yIiwgImlzQXBwbGllZEZpbHRlciIsICJmaWx0ZXIiLCAidmFsdWUiLCAicmVwbGFjZVBhdGhTZWdtZW50U2VwYXJhdG9yIiwgImZpbGVwYXRoIiwgInNlcGFyYXRvciIsICJqb2luUGF0aFNlZ21lbnRzIiwgImEiLCAiYiIsICJyZXF1aXJlX3JlYWRlciIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAiY29tbW9uIiwgIlJlYWRlciIsICJfcm9vdCIsICJfc2V0dGluZ3MiLCAicmVxdWlyZV9hc3luYyIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAiZXZlbnRzXzEiLCAiZnNTY2FuZGlyIiwgImZhc3RxIiwgImNvbW1vbiIsICJyZWFkZXJfMSIsICJBc3luY1JlYWRlciIsICJfcm9vdCIsICJfc2V0dGluZ3MiLCAiY2FsbGJhY2siLCAiZGlyZWN0b3J5IiwgImJhc2UiLCAicXVldWVJdGVtIiwgImVycm9yIiwgIml0ZW0iLCAiZG9uZSIsICJlbnRyaWVzIiwgImVudHJ5IiwgImZ1bGxwYXRoIiwgInJlcXVpcmVfYXN5bmMiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgImFzeW5jXzEiLCAiQXN5bmNQcm92aWRlciIsICJfcm9vdCIsICJfc2V0dGluZ3MiLCAiY2FsbGJhY2siLCAiZXJyb3IiLCAiY2FsbEZhaWx1cmVDYWxsYmFjayIsICJlbnRyeSIsICJjYWxsU3VjY2Vzc0NhbGxiYWNrIiwgImVudHJpZXMiLCAicmVxdWlyZV9zdHJlYW0iLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgInN0cmVhbV8xIiwgImFzeW5jXzEiLCAiU3RyZWFtUHJvdmlkZXIiLCAiX3Jvb3QiLCAiX3NldHRpbmdzIiwgImVycm9yIiwgImVudHJ5IiwgInJlcXVpcmVfc3luYyIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAiZnNTY2FuZGlyIiwgImNvbW1vbiIsICJyZWFkZXJfMSIsICJTeW5jUmVhZGVyIiwgImRpcmVjdG9yeSIsICJiYXNlIiwgIml0ZW0iLCAiZW50cmllcyIsICJlbnRyeSIsICJlcnJvciIsICJmdWxscGF0aCIsICJyZXF1aXJlX3N5bmMiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgInN5bmNfMSIsICJTeW5jUHJvdmlkZXIiLCAiX3Jvb3QiLCAiX3NldHRpbmdzIiwgInJlcXVpcmVfc2V0dGluZ3MiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgInBhdGgiLCAiZnNTY2FuZGlyIiwgIlNldHRpbmdzIiwgIl9vcHRpb25zIiwgIm9wdGlvbiIsICJ2YWx1ZSIsICJyZXF1aXJlX291dCIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAiYXN5bmNfMSIsICJzdHJlYW1fMSIsICJzeW5jXzEiLCAic2V0dGluZ3NfMSIsICJ3YWxrIiwgImRpcmVjdG9yeSIsICJvcHRpb25zT3JTZXR0aW5nc09yQ2FsbGJhY2siLCAiY2FsbGJhY2siLCAiZ2V0U2V0dGluZ3MiLCAid2Fsa1N5bmMiLCAib3B0aW9uc09yU2V0dGluZ3MiLCAic2V0dGluZ3MiLCAid2Fsa1N0cmVhbSIsICJzZXR0aW5nc09yT3B0aW9ucyIsICJyZXF1aXJlX3JlYWRlciIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAicGF0aCIsICJmc1N0YXQiLCAidXRpbHMiLCAiUmVhZGVyIiwgIl9zZXR0aW5ncyIsICJmaWxlcGF0aCIsICJzdGF0cyIsICJwYXR0ZXJuIiwgImVudHJ5IiwgImVycm9yIiwgInJlcXVpcmVfc3RyZWFtIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJzdHJlYW1fMSIsICJmc1N0YXQiLCAiZnNXYWxrIiwgInJlYWRlcl8xIiwgIlJlYWRlclN0cmVhbSIsICJyb290IiwgIm9wdGlvbnMiLCAicGF0dGVybnMiLCAiZmlsZXBhdGhzIiwgInN0cmVhbSIsICJpbmRleCIsICJfZW5jIiwgImRvbmUiLCAiZW50cnkiLCAiaSIsICJmaWxlcGF0aCIsICJwYXR0ZXJuIiwgInN0YXRzIiwgImVycm9yIiwgInJlc29sdmUiLCAicmVqZWN0IiwgInJlcXVpcmVfYXN5bmMiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgImZzV2FsayIsICJyZWFkZXJfMSIsICJzdHJlYW1fMSIsICJSZWFkZXJBc3luYyIsICJyb290IiwgIm9wdGlvbnMiLCAicmVzb2x2ZSIsICJyZWplY3QiLCAiZXJyb3IiLCAiZW50cmllcyIsICJwYXR0ZXJucyIsICJzdHJlYW0iLCAiZW50cnkiLCAicmVxdWlyZV9tYXRjaGVyIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJ1dGlscyIsICJNYXRjaGVyIiwgIl9wYXR0ZXJucyIsICJfc2V0dGluZ3MiLCAiX21pY3JvbWF0Y2hPcHRpb25zIiwgInBhdHRlcm5zIiwgInBhdHRlcm4iLCAic2VnbWVudHMiLCAic2VjdGlvbnMiLCAicGFydCIsICJzZWdtZW50IiwgInJlcXVpcmVfcGFydGlhbCIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibWF0Y2hlcl8xIiwgIlBhcnRpYWxNYXRjaGVyIiwgImZpbGVwYXRoIiwgInBhcnRzIiwgImxldmVscyIsICJwYXR0ZXJucyIsICJpbmZvIiwgInBhdHRlcm4iLCAic2VjdGlvbiIsICJwYXJ0IiwgImluZGV4IiwgInNlZ21lbnQiLCAicmVxdWlyZV9kZWVwIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJ1dGlscyIsICJwYXJ0aWFsXzEiLCAiRGVlcEZpbHRlciIsICJfc2V0dGluZ3MiLCAiX21pY3JvbWF0Y2hPcHRpb25zIiwgImJhc2VQYXRoIiwgInBvc2l0aXZlIiwgIm5lZ2F0aXZlIiwgIm1hdGNoZXIiLCAibmVnYXRpdmVSZSIsICJlbnRyeSIsICJwYXR0ZXJucyIsICJhZmZlY3REZXB0aE9mUmVhZGluZ1BhdHRlcm5zIiwgImZpbGVwYXRoIiwgImVudHJ5UGF0aCIsICJlbnRyeVBhdGhEZXB0aCIsICJiYXNlUGF0aERlcHRoIiwgInBhdHRlcm5zUmUiLCAicmVxdWlyZV9lbnRyeSIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAidXRpbHMiLCAiRW50cnlGaWx0ZXIiLCAiX3NldHRpbmdzIiwgIl9taWNyb21hdGNoT3B0aW9ucyIsICJwb3NpdGl2ZSIsICJuZWdhdGl2ZSIsICJwb3NpdGl2ZVJlIiwgIm5lZ2F0aXZlUmUiLCAiZW50cnkiLCAiZmlsZXBhdGgiLCAiaXNEaXJlY3RvcnkiLCAiaXNNYXRjaGVkIiwgImVudHJ5UGF0aCIsICJwYXR0ZXJuc1JlIiwgImZ1bGxwYXRoIiwgInJlcXVpcmVfZXJyb3IiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgInV0aWxzIiwgIkVycm9yRmlsdGVyIiwgIl9zZXR0aW5ncyIsICJlcnJvciIsICJyZXF1aXJlX2VudHJ5IiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJ1dGlscyIsICJFbnRyeVRyYW5zZm9ybWVyIiwgIl9zZXR0aW5ncyIsICJlbnRyeSIsICJmaWxlcGF0aCIsICJyZXF1aXJlX3Byb3ZpZGVyIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJwYXRoIiwgImRlZXBfMSIsICJlbnRyeV8xIiwgImVycm9yXzEiLCAiZW50cnlfMiIsICJQcm92aWRlciIsICJfc2V0dGluZ3MiLCAidGFzayIsICJiYXNlUGF0aCIsICJyZXF1aXJlX2FzeW5jIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJhc3luY18xIiwgInByb3ZpZGVyXzEiLCAiUHJvdmlkZXJBc3luYyIsICJ0YXNrIiwgInJvb3QiLCAib3B0aW9ucyIsICJlbnRyeSIsICJyZXF1aXJlX3N0cmVhbSIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAic3RyZWFtXzEiLCAic3RyZWFtXzIiLCAicHJvdmlkZXJfMSIsICJQcm92aWRlclN0cmVhbSIsICJ0YXNrIiwgInJvb3QiLCAib3B0aW9ucyIsICJzb3VyY2UiLCAiZGVzdGluYXRpb24iLCAiZXJyb3IiLCAiZW50cnkiLCAicmVxdWlyZV9zeW5jIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJmc1N0YXQiLCAiZnNXYWxrIiwgInJlYWRlcl8xIiwgIlJlYWRlclN5bmMiLCAicm9vdCIsICJvcHRpb25zIiwgInBhdHRlcm5zIiwgImVudHJpZXMiLCAicGF0dGVybiIsICJmaWxlcGF0aCIsICJlbnRyeSIsICJzdGF0cyIsICJlcnJvciIsICJyZXF1aXJlX3N5bmMiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgInN5bmNfMSIsICJwcm92aWRlcl8xIiwgIlByb3ZpZGVyU3luYyIsICJ0YXNrIiwgInJvb3QiLCAib3B0aW9ucyIsICJyZXF1aXJlX3NldHRpbmdzIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJmcyIsICJvcyIsICJDUFVfQ09VTlQiLCAiU2V0dGluZ3MiLCAiX29wdGlvbnMiLCAib3B0aW9uIiwgInZhbHVlIiwgIm1ldGhvZHMiLCAicmVxdWlyZV9vdXQiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJ0YXNrTWFuYWdlciIsICJwYXR0ZXJuTWFuYWdlciIsICJhc3luY18xIiwgInN0cmVhbV8xIiwgInN5bmNfMSIsICJzZXR0aW5nc18xIiwgInV0aWxzIiwgIkZhc3RHbG9iIiwgInNvdXJjZSIsICJvcHRpb25zIiwgImFzc2VydFBhdHRlcm5zSW5wdXQiLCAid29ya3MiLCAiZ2V0V29ya3MiLCAicmVzdWx0IiwgInN5bmMiLCAic3RyZWFtIiwgImdlbmVyYXRlVGFza3MiLCAicGF0dGVybnMiLCAic2V0dGluZ3MiLCAiaXNEeW5hbWljUGF0dGVybiIsICJlc2NhcGVQYXRoIiwgIl9Qcm92aWRlciIsICJ0YXNrcyIsICJwcm92aWRlciIsICJpbnB1dCIsICJpdGVtIiwgInJlcXVpcmVfcGF0aF90eXBlIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJwcm9taXNpZnkiLCAiZnMiLCAiaXNUeXBlIiwgImZzU3RhdFR5cGUiLCAic3RhdHNNZXRob2ROYW1lIiwgImZpbGVQYXRoIiwgImVycm9yIiwgImlzVHlwZVN5bmMiLCAicmVxdWlyZV9kaXJfZ2xvYiIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgInBhdGgiLCAicGF0aFR5cGUiLCAiZ2V0RXh0ZW5zaW9ucyIsICJleHRlbnNpb25zIiwgImdldFBhdGgiLCAiZmlsZXBhdGgiLCAiY3dkIiwgInB0aCIsICJhZGRFeHRlbnNpb25zIiwgImZpbGUiLCAiZ2V0R2xvYiIsICJkaXJlY3RvcnkiLCAib3B0aW9ucyIsICJ4IiwgImlucHV0IiwgImdsb2JzIiwgInJlcXVpcmVfaWdub3JlIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAibWFrZUFycmF5IiwgInN1YmplY3QiLCAiRU1QVFkiLCAiU1BBQ0UiLCAiRVNDQVBFIiwgIlJFR0VYX1RFU1RfQkxBTktfTElORSIsICJSRUdFWF9SRVBMQUNFX0xFQURJTkdfRVhDQVBFRF9FWENMQU1BVElPTiIsICJSRUdFWF9SRVBMQUNFX0xFQURJTkdfRVhDQVBFRF9IQVNIIiwgIlJFR0VYX1NQTElUQUxMX0NSTEYiLCAiUkVHRVhfVEVTVF9JTlZBTElEX1BBVEgiLCAiU0xBU0giLCAiS0VZX0lHTk9SRSIsICJkZWZpbmUiLCAib2JqZWN0IiwgImtleSIsICJ2YWx1ZSIsICJSRUdFWF9SRUdFWFBfUkFOR0UiLCAiUkVUVVJOX0ZBTFNFIiwgInNhbml0aXplUmFuZ2UiLCAicmFuZ2UiLCAibWF0Y2giLCAiZnJvbSIsICJ0byIsICJjbGVhblJhbmdlQmFja1NsYXNoIiwgInNsYXNoZXMiLCAibGVuZ3RoIiwgIlJFUExBQ0VSUyIsICJfIiwgImluZGV4IiwgInN0ciIsICJwMSIsICJsZWFkRXNjYXBlIiwgImVuZEVzY2FwZSIsICJjbG9zZSIsICJyZWdleENhY2hlIiwgIm1ha2VSZWdleCIsICJwYXR0ZXJuIiwgImlnbm9yZUNhc2UiLCAic291cmNlIiwgInByZXYiLCAiY3VycmVudCIsICJpc1N0cmluZyIsICJjaGVja1BhdHRlcm4iLCAic3BsaXRQYXR0ZXJuIiwgIklnbm9yZVJ1bGUiLCAib3JpZ2luIiwgIm5lZ2F0aXZlIiwgInJlZ2V4IiwgImNyZWF0ZVJ1bGUiLCAidGhyb3dFcnJvciIsICJtZXNzYWdlIiwgIkN0b3IiLCAiY2hlY2tQYXRoIiwgInBhdGgiLCAib3JpZ2luYWxQYXRoIiwgImRvVGhyb3ciLCAiaXNOb3RSZWxhdGl2ZSIsICJwIiwgIklnbm9yZSIsICJpZ25vcmVjYXNlIiwgImFsbG93UmVsYXRpdmVQYXRocyIsICJydWxlIiwgImNoZWNrVW5pZ25vcmVkIiwgImlnbm9yZWQiLCAidW5pZ25vcmVkIiwgImNhY2hlIiwgInNsaWNlcyIsICJwYXJlbnQiLCAicGF0aHMiLCAiZmFjdG9yeSIsICJvcHRpb25zIiwgImlzUGF0aFZhbGlkIiwgIm1ha2VQb3NpeCIsICJSRUdJWF9JU19XSU5ET1dTX1BBVEhfQUJTT0xVVEUiLCAicmVxdWlyZV9zbGFzaCIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgInBhdGgiLCAiaXNFeHRlbmRlZExlbmd0aFBhdGgiLCAiaGFzTm9uQXNjaWkiLCAicmVxdWlyZV9naXRpZ25vcmUiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJwcm9taXNpZnkiLCAiZnMiLCAicGF0aCIsICJmYXN0R2xvYiIsICJnaXRJZ25vcmUiLCAic2xhc2giLCAiREVGQVVMVF9JR05PUkUiLCAicmVhZEZpbGVQIiwgIm1hcEdpdElnbm9yZVBhdHRlcm5UbyIsICJiYXNlIiwgImlnbm9yZSIsICJwYXJzZUdpdElnbm9yZSIsICJjb250ZW50IiwgIm9wdGlvbnMiLCAibGluZSIsICJyZWR1Y2VJZ25vcmUiLCAiZmlsZXMiLCAiaWdub3JlcyIsICJmaWxlIiwgImVuc3VyZUFic29sdXRlUGF0aEZvckN3ZCIsICJjd2QiLCAicCIsICJnZXRJc0lnbm9yZWRQcmVkZWNhdGUiLCAiZ2V0RmlsZSIsICJmaWxlUGF0aCIsICJnZXRGaWxlU3luYyIsICJub3JtYWxpemVPcHRpb25zIiwgInBhdGhzIiwgInJlcXVpcmVfc3RyZWFtX3V0aWxzIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiVHJhbnNmb3JtIiwgIk9iamVjdFRyYW5zZm9ybSIsICJGaWx0ZXJTdHJlYW0iLCAiZmlsdGVyIiwgImRhdGEiLCAiZW5jb2RpbmciLCAiY2FsbGJhY2siLCAiVW5pcXVlU3RyZWFtIiwgInJlcXVpcmVfZ2xvYmJ5IiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZnMiLCAiYXJyYXlVbmlvbiIsICJtZXJnZTIiLCAiZmFzdEdsb2IiLCAiZGlyR2xvYiIsICJnaXRpZ25vcmUiLCAiRmlsdGVyU3RyZWFtIiwgIlVuaXF1ZVN0cmVhbSIsICJERUZBVUxUX0ZJTFRFUiIsICJpc05lZ2F0aXZlIiwgInBhdHRlcm4iLCAiYXNzZXJ0UGF0dGVybnNJbnB1dCIsICJwYXR0ZXJucyIsICJjaGVja0N3ZE9wdGlvbiIsICJvcHRpb25zIiwgInN0YXQiLCAiZ2V0UGF0aFN0cmluZyIsICJwIiwgImdlbmVyYXRlR2xvYlRhc2tzIiwgInRhc2tPcHRpb25zIiwgImdsb2JUYXNrcyIsICJpbmRleCIsICJpZ25vcmUiLCAiZ2xvYkRpcnMiLCAidGFzayIsICJmbiIsICJnZXRQYXR0ZXJuIiwgImdldEZpbHRlclN5bmMiLCAiZ2xvYlRvVGFzayIsICJnbG9iIiwgImdldEZpbHRlciIsICJnZXRUYXNrcyIsICJ0YXNrcyIsICJnbG9icyIsICJmaWx0ZXIiLCAicGF0aHMiLCAicGF0aF8iLCAibmV3VGFzayIsICJtYXRjaGVzIiwgImZpbHRlclN0cmVhbSIsICJ1bmlxdWVTdHJlYW0iLCAicmVxdWlyZV9oYXNoVXRpbHMiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgInRzbGliXzEiLCAiZnNsaWJfMSIsICJjcnlwdG9fMSIsICJnbG9iYnlfMSIsICJtYWtlSGFzaCIsICJhcmdzIiwgImhhc2giLCAiYWNjIiwgImFyZyIsICJjaGVja3N1bUZpbGUiLCAicGF0aCIsICJiYXNlRnMiLCAiYWxnb3JpdGhtIiwgImZkIiwgImNodW5rIiwgImJ5dGVzUmVhZCIsICJjaGVja3N1bVBhdHRlcm4iLCAicGF0dGVybiIsICJjd2QiLCAiZGlyUGF0dGVybnMiLCAiZW50cnkiLCAibGlzdGluZyIsICJoYXNoZXMiLCAicGFydHMiLCAicCIsICJzdGF0IiwgInN1YiIsICJyZXF1aXJlX3N0cnVjdFV0aWxzIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJ0c2xpYl8xIiwgImZzbGliXzEiLCAicXVlcnlzdHJpbmdfMSIsICJzZW12ZXJfMSIsICJ0aW55bG9naWNfMSIsICJmb3JtYXRVdGlscyIsICJoYXNoVXRpbHMiLCAibWlzY1V0aWxzIiwgInN0cnVjdFV0aWxzIiwgIlZJUlRVQUxfUFJPVE9DT0wiLCAiVklSVFVBTF9BQkJSRVZJQVRFIiwgImNvbmRpdGlvblJlZ2V4IiwgImNvbmRpdGlvblBhcnNlciIsICJtYWtlSWRlbnQiLCAic2NvcGUiLCAibmFtZSIsICJtYWtlRGVzY3JpcHRvciIsICJpZGVudCIsICJyYW5nZSIsICJtYWtlTG9jYXRvciIsICJyZWZlcmVuY2UiLCAiY29udmVydFRvSWRlbnQiLCAic291cmNlIiwgImNvbnZlcnREZXNjcmlwdG9yVG9Mb2NhdG9yIiwgImRlc2NyaXB0b3IiLCAiY29udmVydExvY2F0b3JUb0Rlc2NyaXB0b3IiLCAibG9jYXRvciIsICJjb252ZXJ0UGFja2FnZVRvTG9jYXRvciIsICJwa2ciLCAicmVuYW1lUGFja2FnZSIsICJjb3B5UGFja2FnZSIsICJ2aXJ0dWFsaXplRGVzY3JpcHRvciIsICJlbnRyb3B5IiwgInZpcnR1YWxpemVQYWNrYWdlIiwgImlzVmlydHVhbERlc2NyaXB0b3IiLCAiaXNWaXJ0dWFsTG9jYXRvciIsICJkZXZpcnR1YWxpemVEZXNjcmlwdG9yIiwgImRldmlydHVhbGl6ZUxvY2F0b3IiLCAiZW5zdXJlRGV2aXJ0dWFsaXplZERlc2NyaXB0b3IiLCAiZW5zdXJlRGV2aXJ0dWFsaXplZExvY2F0b3IiLCAiYmluZERlc2NyaXB0b3IiLCAicGFyYW1zIiwgImJpbmRMb2NhdG9yIiwgImFyZUlkZW50c0VxdWFsIiwgImEiLCAiYiIsICJhcmVEZXNjcmlwdG9yc0VxdWFsIiwgImFyZUxvY2F0b3JzRXF1YWwiLCAiYXJlVmlydHVhbFBhY2thZ2VzRXF1aXZhbGVudCIsICJkZXBlbmRlbmN5RGVzY3JpcHRvckEiLCAiZGVwZW5kZW5jeURlc2NyaXB0b3JCIiwgInBhcnNlSWRlbnQiLCAic3RyaW5nIiwgInRyeVBhcnNlSWRlbnQiLCAibWF0Y2giLCAicGFyc2VEZXNjcmlwdG9yIiwgInN0cmljdCIsICJ0cnlQYXJzZURlc2NyaXB0b3IiLCAicmVhbFNjb3BlIiwgInJlYWxSYW5nZSIsICJwYXJzZUxvY2F0b3IiLCAidHJ5UGFyc2VMb2NhdG9yIiwgInJlYWxSZWZlcmVuY2UiLCAicGFyc2VSYW5nZSIsICJvcHRzIiwgInByb3RvY29sIiwgInJhd1NlbGVjdG9yIiwgInNlbGVjdG9yIiwgInRyeVBhcnNlUmFuZ2UiLCAicGFyc2VGaWxlU3R5bGVSYW5nZSIsICJlbmNvZGVVbnNhZmVDaGFyYWN0ZXJzIiwgInN0ciIsICJoYXNQYXJhbXMiLCAibWFrZVJhbmdlIiwgImNvbnZlcnRUb01hbmlmZXN0UmFuZ2UiLCAic3RyaW5naWZ5SWRlbnQiLCAic3RyaW5naWZ5RGVzY3JpcHRvciIsICJzdHJpbmdpZnlMb2NhdG9yIiwgInNsdWdpZnlJZGVudCIsICJzbHVnaWZ5TG9jYXRvciIsICJodW1hblByb3RvY29sIiwgImh1bWFuVmVyc2lvbiIsICJodW1hblJlZmVyZW5jZSIsICJoYXNoVHJ1bmNhdGUiLCAic2x1ZyIsICJwcmV0dHlJZGVudCIsICJjb25maWd1cmF0aW9uIiwgInByZXR0eVJhbmdlTm9Db2xvcnMiLCAibmVzdGVkIiwgImFiYnJldiIsICJwcmV0dHlSYW5nZSIsICJwcmV0dHlEZXNjcmlwdG9yIiwgInByZXR0eVJlZmVyZW5jZSIsICJwcmV0dHlMb2NhdG9yIiwgInByZXR0eUxvY2F0b3JOb0NvbG9ycyIsICJzb3J0RGVzY3JpcHRvcnMiLCAiZGVzY3JpcHRvcnMiLCAicHJldHR5V29ya3NwYWNlIiwgIndvcmtzcGFjZSIsICJwcmV0dHlSZXNvbHV0aW9uIiwgImRldmlydHVhbGl6ZWREZXNjcmlwdG9yIiwgInByZXR0eURlcGVuZGVudCIsICJnZXRJZGVudFZlbmRvclBhdGgiLCAiaXNQYWNrYWdlQ29tcGF0aWJsZSIsICJhcmNoaXRlY3R1cmVzIiwgInNwZWNpZmllciIsICJ2YWx1ZSIsICJzdXBwb3J0ZWQiLCAicmVxdWlyZV9Db3JlUGx1Z2luIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJ0c2xpYl8xIiwgIk1lc3NhZ2VOYW1lXzEiLCAic3RydWN0VXRpbHMiLCAiZGVwZW5kZW5jeSIsICJwcm9qZWN0IiwgImxvY2F0b3IiLCAiaW5pdGlhbERlcGVuZGVuY3kiLCAicmVzb2x2ZXIiLCAicmVzb2x2ZU9wdGlvbnMiLCAicGF0dGVybiIsICJyZWZlcmVuY2UiLCAicmVwb3J0IiwgIndvcmtzcGFjZSIsICJ3b3Jrc3BhY2VOYW1lIiwgImhvb2tzIiwgIm5hbWUiLCAidGV4dCIsICJtYW5pZmVzdCIsICJtYW5pZmVzdEVycm9yIiwgInJlcXVpcmVfV29ya3NwYWNlUmVzb2x2ZXIiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgInR5cGVzXzEiLCAiV29ya3NwYWNlUmVzb2x2ZXIiLCAiZGVzY3JpcHRvciIsICJvcHRzIiwgImxvY2F0b3IiLCAiZnJvbUxvY2F0b3IiLCAiZGVwZW5kZW5jaWVzIiwgImxvY2F0b3JzIiwgImNhbmRpZGF0ZSIsICJ3b3Jrc3BhY2UiLCAicmVxdWlyZV9zZW12ZXJVdGlscyIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAidHNsaWJfMSIsICJzZW12ZXJfMSIsICJzZW12ZXJfMiIsICJzYXRpc2ZpZXNXaXRoUHJlcmVsZWFzZXNDYWNoZSIsICJzYXRpc2ZpZXNXaXRoUHJlcmVsZWFzZXMiLCAidmVyc2lvbiIsICJyYW5nZSIsICJsb29zZSIsICJrZXkiLCAic2VtdmVyUmFuZ2UiLCAic2VtdmVyVmVyc2lvbiIsICJjb21wYXJhdG9yU2V0IiwgImNvbXBhcmF0b3IiLCAicmFuZ2VzQ2FjaGUiLCAidmFsaWRSYW5nZSIsICJwb3RlbnRpYWxSYW5nZSIsICJDTEVBTl9TRU1WRVJfUkVHRVhQIiwgImNsZWFuIiwgInBvdGVudGlhbFZlcnNpb24iLCAicmVxdWlyZV9NYW5pZmVzdCIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAidHNsaWJfMSIsICJmc2xpYl8xIiwgInBhcnNlcnNfMSIsICJzZW12ZXJfMSIsICJXb3Jrc3BhY2VSZXNvbHZlcl8xIiwgIm1pc2NVdGlscyIsICJzZW12ZXJVdGlscyIsICJzdHJ1Y3RVdGlscyIsICJNYW5pZmVzdCIsICJwYXRoIiwgImJhc2VGcyIsICJtYW5pZmVzdFBhdGgiLCAiZXJyIiwgIm1hbmlmZXN0IiwgInRleHQiLCAiZGF0YSIsICJzdHJpcEJPTSIsICJlcnJvciIsICJnZXRJbmRlbnQiLCAiY29udGVudCIsICJ5YW1sQ29tcGF0aWJpbGl0eU1vZGUiLCAiZXJyb3JzIiwgIm9zIiwgIml0ZW0iLCAiY3B1IiwgImxpYmMiLCAibm9ybWFsaXplU2xhc2hlcyIsICJrZXkiLCAidmFsdWUiLCAiYmluYXJ5SWRlbnQiLCAibmFtZSIsICJyYW5nZSIsICJpZGVudCIsICJkZXNjcmlwdG9yIiwgIndvcmtzcGFjZXMiLCAiZW50cnkiLCAicGF0dGVybiIsICJtZXRhIiwgImRlcGVuZGVuY3lNZXRhIiwgImJ1aWx0IiwgInRyeVBhcnNlT3B0aW9uYWxCb29sZWFuIiwgIm9wdGlvbmFsIiwgInVucGx1Z2dlZCIsICJwZWVyRGVwZW5kZW5jeU1ldGEiLCAicmVmZXJlbmNlIiwgImZpbGVuYW1lIiwgInJlYWxEZXNjcmlwdG9yIiwgImlkZW50RGVzY3JpcHRvciIsICJ0eXBlIiwgImZpZWxkcyIsICJ0b0NvbmRpdGlvbkxpbmUiLCAiaWRlbnRTdHJpbmciLCAiZGVwZW5kZW5jeU1ldGFTZXQiLCAiYWZ0ZXIiLCAiYWZ0ZXJTZXQiLCAib2xkUmF3IiwgIm5ld1JhdyIsICJpbnNlcnRlZCIsICJjb21wYXRpYmlsaXR5TW9kZSIsICJfYSIsICJicm93c2VyIiwgInJlZ3VsYXJEZXBlbmRlbmNpZXMiLCAib3B0aW9uYWxEZXBlbmRlbmNpZXMiLCAiZGVwZW5kZW5jeSIsICJpc09wdGlvbmFsbHlCdWlsdCIsICJtZXRhQ29weSIsICJleGlzdGluZ1NjcmlwdE5hbWUiLCAiaW5kZW50TWF0Y2giLCAic3RyIiwgInRvQ29uZGl0aW9uVG9rZW4iLCAicmF3IiwgImluZGV4IiwgInByZWZpeCIsICJyYXdUb2tlbnMiLCAicmVxdWlyZV9ub3ciLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJyb290IiwgIm5vdyIsICJyZXF1aXJlX3RyaW1tZWRFbmRJbmRleCIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgInJlV2hpdGVzcGFjZSIsICJ0cmltbWVkRW5kSW5kZXgiLCAic3RyaW5nIiwgImluZGV4IiwgInJlcXVpcmVfYmFzZVRyaW0iLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJ0cmltbWVkRW5kSW5kZXgiLCAicmVUcmltU3RhcnQiLCAiYmFzZVRyaW0iLCAic3RyaW5nIiwgInJlcXVpcmVfaXNTeW1ib2wiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJiYXNlR2V0VGFnIiwgImlzT2JqZWN0TGlrZSIsICJzeW1ib2xUYWciLCAiaXNTeW1ib2wiLCAidmFsdWUiLCAicmVxdWlyZV90b051bWJlciIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImJhc2VUcmltIiwgImlzT2JqZWN0IiwgImlzU3ltYm9sIiwgIk5BTiIsICJyZUlzQmFkSGV4IiwgInJlSXNCaW5hcnkiLCAicmVJc09jdGFsIiwgImZyZWVQYXJzZUludCIsICJ0b051bWJlciIsICJ2YWx1ZSIsICJvdGhlciIsICJpc0JpbmFyeSIsICJyZXF1aXJlX2RlYm91bmNlIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiaXNPYmplY3QiLCAibm93IiwgInRvTnVtYmVyIiwgIkZVTkNfRVJST1JfVEVYVCIsICJuYXRpdmVNYXgiLCAibmF0aXZlTWluIiwgImRlYm91bmNlIiwgImZ1bmMiLCAid2FpdCIsICJvcHRpb25zIiwgImxhc3RBcmdzIiwgImxhc3RUaGlzIiwgIm1heFdhaXQiLCAicmVzdWx0IiwgInRpbWVySWQiLCAibGFzdENhbGxUaW1lIiwgImxhc3RJbnZva2VUaW1lIiwgImxlYWRpbmciLCAibWF4aW5nIiwgInRyYWlsaW5nIiwgImludm9rZUZ1bmMiLCAidGltZSIsICJhcmdzIiwgInRoaXNBcmciLCAibGVhZGluZ0VkZ2UiLCAidGltZXJFeHBpcmVkIiwgInJlbWFpbmluZ1dhaXQiLCAidGltZVNpbmNlTGFzdENhbGwiLCAidGltZVNpbmNlTGFzdEludm9rZSIsICJ0aW1lV2FpdGluZyIsICJzaG91bGRJbnZva2UiLCAidHJhaWxpbmdFZGdlIiwgImNhbmNlbCIsICJmbHVzaCIsICJkZWJvdW5jZWQiLCAiaXNJbnZva2luZyIsICJyZXF1aXJlX3Rocm90dGxlIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZGVib3VuY2UiLCAiaXNPYmplY3QiLCAiRlVOQ19FUlJPUl9URVhUIiwgInRocm90dGxlIiwgImZ1bmMiLCAid2FpdCIsICJvcHRpb25zIiwgImxlYWRpbmciLCAidHJhaWxpbmciLCAicmVxdWlyZV9SZXBvcnQiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgInRzbGliXzEiLCAidGhyb3R0bGVfMSIsICJzdHJlYW1fMSIsICJzdHJpbmdfZGVjb2Rlcl8xIiwgIk1lc3NhZ2VOYW1lXzEiLCAiVElUTEVfUFJPR1JFU1NfRlBTIiwgIlJlcG9ydEVycm9yIiwgImNvZGUiLCAibWVzc2FnZSIsICJyZXBvcnRFeHRyYSIsICJpc1JlcG9ydEVycm9yIiwgImVycm9yIiwgIlJlcG9ydCIsICJtYXgiLCAiY3VycmVudCIsICJ1bmxvY2siLCAibG9jayIsICJyZXNvbHZlIiwgInNldCIsICJuIiwgInRoaXNVbmxvY2siLCAidGljayIsICJnZW4iLCAiY3VycmVudFRpdGxlIiwgInNldFRpdGxlIiwgInRpdGxlIiwgInByb2dyZXNzSXQiLCAiY2IiLCAicmVwb3J0ZWRQcm9ncmVzcyIsICJuYW1lIiwgInRleHQiLCAib3B0cyIsICJfYSIsICJrZXkiLCAicHJlZml4IiwgInN0cmVhbSIsICJkZWNvZGVyIiwgImJ1ZmZlciIsICJjaHVuayIsICJjaHVua1N0ciIsICJsaW5lSW5kZXgiLCAibGluZSIsICJsYXN0IiwgInJlcXVpcmVfTXVsdGlGZXRjaGVyIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJ0c2xpYl8xIiwgIk1lc3NhZ2VOYW1lXzEiLCAiUmVwb3J0XzEiLCAic3RydWN0VXRpbHMiLCAiTXVsdGlGZXRjaGVyIiwgImZldGNoZXJzIiwgImxvY2F0b3IiLCAib3B0cyIsICJmZXRjaGVyIiwgInJlcXVpcmVfTXVsdGlSZXNvbHZlciIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAidHNsaWJfMSIsICJzdHJ1Y3RVdGlscyIsICJNdWx0aVJlc29sdmVyIiwgInJlc29sdmVycyIsICJyZXNvbHZlciIsICJkZXNjcmlwdG9yIiwgIm9wdHMiLCAibG9jYXRvciIsICJmcm9tTG9jYXRvciIsICJkZXBlbmRlbmNpZXMiLCAibG9jYXRvcnMiLCAicmVxdWlyZV9WaXJ0dWFsRmV0Y2hlciIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAidHNsaWJfMSIsICJmc2xpYl8xIiwgInN0cnVjdFV0aWxzIiwgIlZpcnR1YWxGZXRjaGVyIiwgImxvY2F0b3IiLCAib3B0cyIsICJzcGxpdFBvaW50IiwgIm5leHRSZWZlcmVuY2UiLCAibmV4dExvY2F0b3IiLCAicGFyZW50RmV0Y2giLCAic291cmNlRmV0Y2giLCAidG8iLCAidmlydHVhbEZvbGRlciIsICJ2aXJ0dWFsTmFtZSIsICJ2aXJ0dWFsUGF0aCIsICJhbGlhc0ZzIiwgInJlcXVpcmVfVmlydHVhbFJlc29sdmVyIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJWaXJ0dWFsUmVzb2x2ZXIiLCAiZGVzY3JpcHRvciIsICJsb2NhdG9yIiwgIm9wdHMiLCAiZGVwZW5kZW5jaWVzIiwgImNhbmRpZGF0ZXMiLCAicmVxdWlyZV9Xb3Jrc3BhY2VGZXRjaGVyIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJmc2xpYl8xIiwgIldvcmtzcGFjZVJlc29sdmVyXzEiLCAiV29ya3NwYWNlRmV0Y2hlciIsICJsb2NhdG9yIiwgIm9wdHMiLCAic291cmNlUGF0aCIsICJyZXF1aXJlX2ZvbGRlclV0aWxzIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJmc2xpYl8xIiwgIm9zXzEiLCAiZ2V0RGVmYXVsdEdsb2JhbEZvbGRlciIsICJiYXNlIiwgImdldEhvbWVGb2xkZXIiLCAiaXNGb2xkZXJJbnNpZGUiLCAidGFyZ2V0IiwgInBhcmVudCIsICJyZWxhdGl2ZSIsICJyZXF1aXJlX3R1bm5lbCIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibmV0IiwgInRscyIsICJodHRwIiwgImh0dHBzIiwgImV2ZW50cyIsICJhc3NlcnQiLCAidXRpbCIsICJodHRwT3Zlckh0dHAiLCAiaHR0cHNPdmVySHR0cCIsICJodHRwT3Zlckh0dHBzIiwgImh0dHBzT3Zlckh0dHBzIiwgIm9wdGlvbnMiLCAiYWdlbnQiLCAiVHVubmVsaW5nQWdlbnQiLCAiY3JlYXRlU2VjdXJlU29ja2V0IiwgInNlbGYiLCAic29ja2V0IiwgImhvc3QiLCAicG9ydCIsICJsb2NhbEFkZHJlc3MiLCAidG9PcHRpb25zIiwgImkiLCAibGVuIiwgInBlbmRpbmciLCAicmVxIiwgIm1lcmdlT3B0aW9ucyIsICJvbkZyZWUiLCAib25DbG9zZU9yUmVtb3ZlIiwgImVyciIsICJjYiIsICJwbGFjZWhvbGRlciIsICJjb25uZWN0T3B0aW9ucyIsICJkZWJ1ZyIsICJjb25uZWN0UmVxIiwgIm9uUmVzcG9uc2UiLCAib25VcGdyYWRlIiwgIm9uQ29ubmVjdCIsICJvbkVycm9yIiwgInJlcyIsICJoZWFkIiwgImVycm9yIiwgImNhdXNlIiwgInBvcyIsICJob3N0SGVhZGVyIiwgInRsc09wdGlvbnMiLCAic2VjdXJlU29ja2V0IiwgInRhcmdldCIsICJvdmVycmlkZXMiLCAia2V5cyIsICJqIiwgImtleUxlbiIsICJrIiwgImFyZ3MiLCAicmVxdWlyZV90dW5uZWwiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJyZXF1aXJlX2Rpc3QiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJ0eXBlZEFycmF5VHlwZU5hbWVzIiwgImlzVHlwZWRBcnJheU5hbWUiLCAibmFtZSIsICJvYmplY3RUeXBlTmFtZXMiLCAiaXNPYmplY3RUeXBlTmFtZSIsICJwcmltaXRpdmVUeXBlTmFtZXMiLCAiaXNQcmltaXRpdmVUeXBlTmFtZSIsICJpc09mVHlwZSIsICJ0eXBlIiwgInZhbHVlIiwgInRvU3RyaW5nIiwgImdldE9iamVjdFR5cGUiLCAib2JqZWN0VHlwZU5hbWUiLCAiaXMiLCAiaXNPYmplY3RPZlR5cGUiLCAidGFnVHlwZSIsICJpc051bWJlclR5cGUiLCAiYXNzZXJ0aW9uIiwgIl9hIiwgIl9iIiwgIl9jIiwgIl9kIiwgImhhc1Byb21pc2VBUEkiLCAidGFyZ2V0RW51bSIsICJpbnN0YW5jZSIsICJjbGFzc18iLCAicHJvdG90eXBlIiwgImlzVmFsaWRMZW5ndGgiLCAicmFuZ2UiLCAiTk9ERV9UWVBFX0VMRU1FTlQiLCAiRE9NX1BST1BFUlRJRVNfVE9fQ0hFQ0siLCAicHJvcGVydHkiLCAiaXNBYnNvbHV0ZU1vZDIiLCAicmVtYWluZGVyIiwgImlzV2hpdGVTcGFjZVN0cmluZyIsICJwcmVkaWNhdGVPbkFycmF5IiwgIm1ldGhvZCIsICJwcmVkaWNhdGUiLCAidmFsdWVzIiwgInNpbmdsZVByZWRpY2F0ZSIsICJhc3NlcnRUeXBlIiwgImNvbmRpdGlvbiIsICJkZXNjcmlwdGlvbiIsICJvcHRpb25zIiwgIm11bHRpcGxlVmFsdWVzIiwgInZhbHVlc01lc3NhZ2UiLCAic2luZ2xlVmFsdWUiLCAicmVxdWlyZV9wX2NhbmNlbGFibGUiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJDYW5jZWxFcnJvciIsICJyZWFzb24iLCAiUENhbmNlbGFibGUiLCAidXNlckZuIiwgImFyZ3VtZW50c18iLCAicmVzb2x2ZSIsICJyZWplY3QiLCAib25DYW5jZWwiLCAiZXhlY3V0b3IiLCAib25SZXNvbHZlIiwgInZhbHVlIiwgIm9uUmVqZWN0IiwgImVycm9yIiwgImhhbmRsZXIiLCAiYm9vbGVhbiIsICJvbkZ1bGZpbGxlZCIsICJvblJlamVjdGVkIiwgIm9uRmluYWxseSIsICJyZXF1aXJlX3NvdXJjZSIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImlzVExTU29ja2V0IiwgInNvY2tldCIsICJkZWZlclRvQ29ubmVjdCIsICJmbiIsICJsaXN0ZW5lcnMiLCAiaGFzQ29ubmVjdExpc3RlbmVyIiwgImhhc1NlY3VyZUNvbm5lY3RMaXN0ZW5lciIsICJoYXNDbG9zZUxpc3RlbmVyIiwgIm9uQ29ubmVjdCIsICJyZXF1aXJlX3NvdXJjZSIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImRlZmVyX3RvX2Nvbm5lY3RfMSIsICJ1dGlsXzEiLCAibm9kZWpzTWFqb3JWZXJzaW9uIiwgInRpbWVyIiwgInJlcXVlc3QiLCAidGltaW5ncyIsICJoYW5kbGVFcnJvciIsICJvcmlnaW4iLCAiZW1pdCIsICJldmVudCIsICJhcmdzIiwgIm9uQWJvcnQiLCAib25Tb2NrZXQiLCAic29ja2V0IiwgImxvb2t1cExpc3RlbmVyIiwgIm9uVXBsb2FkIiwgIl9hIiwgInJlc3BvbnNlIiwgInJlcXVpcmVfc291cmNlIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiVjRNQVBQRUQiLCAiQUREUkNPTkZJRyIsICJBTEwiLCAiQXN5bmNSZXNvbHZlciIsICJkbnNMb29rdXAiLCAicHJvbWlzaWZ5IiwgIm9zIiwgImtDYWNoZWFibGVMb29rdXBDcmVhdGVDb25uZWN0aW9uIiwgImtDYWNoZWFibGVMb29rdXBJbnN0YW5jZSIsICJrRXhwaXJlcyIsICJzdXBwb3J0c0FMTCIsICJ2ZXJpZnlBZ2VudCIsICJhZ2VudCIsICJtYXA0dG82IiwgImVudHJpZXMiLCAiZW50cnkiLCAiZ2V0SWZhY2VJbmZvIiwgImhhczQiLCAiaGFzNiIsICJkZXZpY2UiLCAiaWZhY2UiLCAiaXNJdGVyYWJsZSIsICJtYXAiLCAidHRsIiwgImFsbCIsICJDYWNoZWFibGVMb29rdXAiLCAiY2FjaGUiLCAibWF4VHRsIiwgImZhbGxiYWNrRHVyYXRpb24iLCAiZXJyb3JUdGwiLCAicmVzb2x2ZXIiLCAibG9va3VwIiwgImludGVydmFsIiwgInNlcnZlcnMiLCAiaG9zdG5hbWUiLCAib3B0aW9ucyIsICJjYWxsYmFjayIsICJyZXN1bHQiLCAiY2FjaGVkIiwgImZpbHRlcmVkIiwgIl9pZmFjZSIsICJlcnJvciIsICJwZW5kaW5nIiwgIm5ld1Byb21pc2UiLCAid3JhcCIsICJwcm9taXNlIiwgIkEiLCAiQUFBQSIsICJhVHRsIiwgImFhYWFUdGwiLCAiY2FjaGVUdGwiLCAibm93IiwgImRhdGEiLCAiY2FjaGVFcnJvciIsICJxdWVyeSIsICJtcyIsICJuZXh0UmVtb3ZhbFRpbWUiLCAibmV4dEV4cGlyeSIsICJleHBpcmVzIiwgInJlcXVpcmVfbm9ybWFsaXplX3VybCIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgIkRBVEFfVVJMX0RFRkFVTFRfTUlNRV9UWVBFIiwgIkRBVEFfVVJMX0RFRkFVTFRfQ0hBUlNFVCIsICJ0ZXN0UGFyYW1ldGVyIiwgIm5hbWUiLCAiZmlsdGVycyIsICJmaWx0ZXIiLCAibm9ybWFsaXplRGF0YVVSTCIsICJ1cmxTdHJpbmciLCAic3RyaXBIYXNoIiwgIm1hdGNoIiwgInR5cGUiLCAiZGF0YSIsICJoYXNoIiwgIm1lZGlhVHlwZSIsICJpc0Jhc2U2NCIsICJtaW1lVHlwZSIsICJub3JtYWxpemVkTWVkaWFUeXBlIiwgImF0dHJpYnV0ZSIsICJrZXkiLCAidmFsdWUiLCAic3RyaW5nIiwgIm5vcm1hbGl6ZVVybCIsICJvcHRpb25zIiwgImhhc1JlbGF0aXZlUHJvdG9jb2wiLCAidXJsT2JqIiwgInBhdGhDb21wb25lbnRzIiwgImxhc3RDb21wb25lbnQiLCAib2xkVXJsU3RyaW5nIiwgInJlcXVpcmVfd3JhcHB5IiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAid3JhcHB5IiwgImZuIiwgImNiIiwgImsiLCAid3JhcHBlciIsICJhcmdzIiwgInJldCIsICJyZXF1aXJlX29uY2UiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJ3cmFwcHkiLCAib25jZSIsICJvbmNlU3RyaWN0IiwgImZuIiwgImYiLCAibmFtZSIsICJyZXF1aXJlX2VuZF9vZl9zdHJlYW0iLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJvbmNlIiwgIm5vb3AiLCAiaXNSZXF1ZXN0IiwgInN0cmVhbSIsICJpc0NoaWxkUHJvY2VzcyIsICJlb3MiLCAib3B0cyIsICJjYWxsYmFjayIsICJ3cyIsICJycyIsICJyZWFkYWJsZSIsICJ3cml0YWJsZSIsICJjYW5jZWxsZWQiLCAib25sZWdhY3lmaW5pc2giLCAib25maW5pc2giLCAib25lbmQiLCAib25leGl0IiwgImV4aXRDb2RlIiwgIm9uZXJyb3IiLCAiZXJyIiwgIm9uY2xvc2UiLCAib25jbG9zZW5leHR0aWNrIiwgIm9ucmVxdWVzdCIsICJyZXF1aXJlX3B1bXAiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJvbmNlIiwgImVvcyIsICJmcyIsICJub29wIiwgImFuY2llbnQiLCAiaXNGbiIsICJmbiIsICJpc0ZTIiwgInN0cmVhbSIsICJpc1JlcXVlc3QiLCAiZGVzdHJveWVyIiwgInJlYWRpbmciLCAid3JpdGluZyIsICJjYWxsYmFjayIsICJjbG9zZWQiLCAiZXJyIiwgImRlc3Ryb3llZCIsICJjYWxsIiwgInBpcGUiLCAiZnJvbSIsICJ0byIsICJwdW1wIiwgInN0cmVhbXMiLCAiZXJyb3IiLCAiZGVzdHJveXMiLCAiaSIsICJyZXF1aXJlX2J1ZmZlcl9zdHJlYW0iLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJQYXNzVGhyb3VnaFN0cmVhbSIsICJvcHRpb25zIiwgImFycmF5IiwgImVuY29kaW5nIiwgImlzQnVmZmVyIiwgIm9iamVjdE1vZGUiLCAic3RyZWFtIiwgImxlbmd0aCIsICJjaHVua3MiLCAiY2h1bmsiLCAicmVxdWlyZV9nZXRfc3RyZWFtIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiQnVmZmVyQ29uc3RhbnRzIiwgInB1bXAiLCAiYnVmZmVyU3RyZWFtIiwgIk1heEJ1ZmZlckVycm9yIiwgImdldFN0cmVhbSIsICJpbnB1dFN0cmVhbSIsICJvcHRpb25zIiwgIm1heEJ1ZmZlciIsICJzdHJlYW0iLCAicmVzb2x2ZSIsICJyZWplY3QiLCAicmVqZWN0UHJvbWlzZSIsICJlcnJvciIsICJyZXF1aXJlX2h0dHBfY2FjaGVfc2VtYW50aWNzIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAic3RhdHVzQ29kZUNhY2hlYWJsZUJ5RGVmYXVsdCIsICJ1bmRlcnN0b29kU3RhdHVzZXMiLCAiZXJyb3JTdGF0dXNDb2RlcyIsICJob3BCeUhvcEhlYWRlcnMiLCAiZXhjbHVkZWRGcm9tUmV2YWxpZGF0aW9uVXBkYXRlIiwgInRvTnVtYmVyT3JaZXJvIiwgInMiLCAibiIsICJpc0Vycm9yUmVzcG9uc2UiLCAicmVzcG9uc2UiLCAicGFyc2VDYWNoZUNvbnRyb2wiLCAiaGVhZGVyIiwgImNjIiwgInBhcnRzIiwgInBhcnQiLCAiayIsICJ2IiwgImZvcm1hdENhY2hlQ29udHJvbCIsICJyZXEiLCAicmVzIiwgInNoYXJlZCIsICJjYWNoZUhldXJpc3RpYyIsICJpbW11dGFibGVNaW5UaW1lVG9MaXZlIiwgImlnbm9yZUNhcmdvQ3VsdCIsICJfZnJvbU9iamVjdCIsICJyZXF1ZXN0Q0MiLCAiYWxsb3dIZWFkTWV0aG9kIiwgImZpZWxkcyIsICJuYW1lIiwgImluSGVhZGVycyIsICJoZWFkZXJzIiwgInRva2VucyIsICJ3YXJuaW5ncyIsICJ3YXJuaW5nIiwgImFnZSIsICJzZXJ2ZXJEYXRlIiwgInJlc2lkZW50VGltZSIsICJkZWZhdWx0TWluVHRsIiwgImV4cGlyZXMiLCAibGFzdE1vZGlmaWVkIiwgInN0YWxlSWZFcnJvckFnZSIsICJzdGFsZVdoaWxlUmV2YWxpZGF0ZUFnZSIsICJvYmoiLCAiaW5jb21pbmdSZXEiLCAiZXRhZ3MiLCAiZXRhZyIsICJyZXF1ZXN0IiwgIm1hdGNoZXMiLCAibmV3UmVzcG9uc2UiLCAicmVxdWlyZV9sb3dlcmNhc2Vfa2V5cyIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgIm9iamVjdCIsICJyZXN1bHQiLCAia2V5IiwgInZhbHVlIiwgInJlcXVpcmVfc3JjIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiUmVhZGFibGUiLCAibG93ZXJjYXNlS2V5cyIsICJSZXNwb25zZSIsICJzdGF0dXNDb2RlIiwgImhlYWRlcnMiLCAiYm9keSIsICJ1cmwiLCAicmVxdWlyZV9taW1pY19yZXNwb25zZSIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImtub3duUHJvcHMiLCAiZnJvbVN0cmVhbSIsICJ0b1N0cmVhbSIsICJmcm9tUHJvcHMiLCAicHJvcCIsICJyZXF1aXJlX3NyYyIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgIlBhc3NUaHJvdWdoIiwgIm1pbWljUmVzcG9uc2UiLCAiY2xvbmVSZXNwb25zZSIsICJyZXNwb25zZSIsICJjbG9uZSIsICJyZXF1aXJlX2pzb25fYnVmZmVyIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJzdHJpbmdpZnkiLCAibyIsICJzIiwgImFycmF5IiwgImZpcnN0IiwgImsiLCAiaWdub3JlIiwgImtleSIsICJ2YWx1ZSIsICJyZXF1aXJlX3NyYyIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgIkV2ZW50RW1pdHRlciIsICJKU09OQiIsICJsb2FkU3RvcmUiLCAib3B0aW9ucyIsICJhZGFwdGVycyIsICJhZGFwdGVyIiwgIml0ZXJhYmxlQWRhcHRlcnMiLCAiS2V5diIsICJ1cmkiLCAiZW1pdEVycm9ycyIsICJhZGFwdGVyT3B0aW9ucyIsICJjb21wcmVzc2lvbiIsICJzZXJpYWxpemUiLCAiZGVzZXJpYWxpemUiLCAiZXJyb3IiLCAiZ2VuZXJhdGVJdGVyYXRvciIsICJpdGVyYXRvciIsICJrZXkiLCAicmF3IiwgImRhdGEiLCAiZWxlbWVudCIsICJrZXlzIiwgInN0b3JlIiwgImlzQXJyYXkiLCAia2V5UHJlZml4ZWQiLCAicHJvbWlzZXMiLCAidmFsdWVzIiwgInZhbHVlIiwgInJlc3VsdCIsICJyb3ciLCAidHRsIiwgImV4cGlyZXMiLCAieCIsICJyZXF1aXJlX3NyYyIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgIkV2ZW50RW1pdHRlciIsICJ1cmxMaWIiLCAibm9ybWFsaXplVXJsIiwgImdldFN0cmVhbSIsICJDYWNoZVBvbGljeSIsICJSZXNwb25zZSIsICJsb3dlcmNhc2VLZXlzIiwgImNsb25lUmVzcG9uc2UiLCAiS2V5diIsICJDYWNoZWFibGVSZXF1ZXN0IiwgInJlcXVlc3QiLCAiY2FjaGVBZGFwdGVyIiwgIm9wdHMiLCAiY2IiLCAidXJsIiwgIm5vcm1hbGl6ZVVybE9iamVjdCIsICJwYXRobmFtZSIsICJzZWFyY2hQYXJ0cyIsICJzZWFyY2giLCAidXJsT2JqZWN0VG9SZXF1ZXN0T3B0aW9ucyIsICJlZSIsICJub3JtYWxpemVkVXJsU3RyaW5nIiwgImtleSIsICJyZXZhbGlkYXRlIiwgIm1hZGVSZXF1ZXN0IiwgIm1ha2VSZXF1ZXN0IiwgInJlcXVlc3RFcnJvcmVkIiwgInJlcXVlc3RFcnJvckNhbGxiYWNrIiwgInJlcXVlc3RFcnJvclByb21pc2UiLCAicmVzb2x2ZSIsICJoYW5kbGVyIiwgInJlc3BvbnNlIiwgInJldmFsaWRhdGVkUG9saWN5IiwgImhlYWRlcnMiLCAiY2xvbmVkUmVzcG9uc2UiLCAiYm9keVByb21pc2UiLCAiYm9keSIsICJ2YWx1ZSIsICJ0dGwiLCAiZXJyb3IiLCAicmVxIiwgImdldCIsICJjYWNoZUVudHJ5IiwgInBvbGljeSIsICJlcnJvckhhbmRsZXIiLCAib3B0aW9ucyIsICJyZXF1aXJlX21pbWljX3Jlc3BvbnNlIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAia25vd25Qcm9wZXJ0aWVzIiwgImZyb21TdHJlYW0iLCAidG9TdHJlYW0iLCAiZnJvbVByb3BlcnRpZXMiLCAicHJvcGVydGllcyIsICJwcm9wZXJ0eSIsICJ2YWx1ZSIsICJyZXF1aXJlX2RlY29tcHJlc3NfcmVzcG9uc2UiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJUcmFuc2Zvcm0iLCAiUGFzc1Rocm91Z2giLCAiemxpYiIsICJtaW1pY1Jlc3BvbnNlIiwgInJlc3BvbnNlIiwgImNvbnRlbnRFbmNvZGluZyIsICJpc0Jyb3RsaSIsICJpc0VtcHR5IiwgImNoZWNrZXIiLCAiZGF0YSIsICJfZW5jb2RpbmciLCAiY2FsbGJhY2siLCAiZmluYWxTdHJlYW0iLCAiZXJyb3IiLCAiZGVjb21wcmVzc1N0cmVhbSIsICJyZXF1aXJlX3F1aWNrX2xydSIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgIlF1aWNrTFJVIiwgIm9wdGlvbnMiLCAia2V5IiwgInZhbHVlIiwgImRlbGV0ZWQiLCAiaXRlbSIsICJvbGRDYWNoZVNpemUiLCAicmVxdWlyZV9hZ2VudCIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgIkV2ZW50RW1pdHRlciIsICJ0bHMiLCAiaHR0cDIiLCAiUXVpY2tMUlUiLCAia0N1cnJlbnRTdHJlYW1zQ291bnQiLCAia1JlcXVlc3QiLCAia09yaWdpblNldCIsICJrR3JhY2VmdWxseUNsb3NpbmciLCAibmFtZUtleXMiLCAiZ2V0U29ydGVkSW5kZXgiLCAiYXJyYXkiLCAidmFsdWUiLCAiY29tcGFyZSIsICJsb3ciLCAiaGlnaCIsICJtaWQiLCAiY29tcGFyZVNlc3Npb25zIiwgImEiLCAiYiIsICJjbG9zZUNvdmVyZWRTZXNzaW9ucyIsICJ3aGVyZSIsICJzZXNzaW9uIiwgImNvdmVyZWRTZXNzaW9uIiwgIm9yaWdpbiIsICJncmFjZWZ1bGx5Q2xvc2UiLCAiY2xvc2VTZXNzaW9uSWZDb3ZlcmVkIiwgImdldFNlc3Npb25zIiwgImFnZW50IiwgImlzRnJlZSIsICJyZXN1bHQiLCAibm9ybWFsaXplZE9wdGlvbnMiLCAiZmlsdGVyZWQiLCAiQWdlbnQiLCAidGltZW91dCIsICJtYXhTZXNzaW9ucyIsICJtYXhGcmVlU2Vzc2lvbnMiLCAibWF4Q2FjaGVkVGxzU2Vzc2lvbnMiLCAidXJsIiwgInNlcnZlcm5hbWUiLCAib3B0aW9ucyIsICJub3JtYWxpemVkIiwgImtleSIsICJub3JtYWxpemVkT3JpZ2luIiwgIml0ZW0iLCAibGlzdGVuZXJzIiwgInJlc29sdmUiLCAicmVqZWN0IiwgInNlc3Npb25zIiwgIm1heENvbmN1cnJlbnRTdHJlYW1zIiwgImN1cnJlbnRTdHJlYW1zQ291bnQiLCAib3B0aW1hbFNlc3Npb24iLCAic2Vzc2lvbk1heENvbmN1cnJlbnRTdHJlYW1zIiwgInNlc3Npb25DdXJyZW50U3RyZWFtc0NvdW50IiwgImVycm9yIiwgInJlbW92ZUZyb21RdWV1ZSIsICJlbnRyeSIsICJuYW1lIiwgInJlY2VpdmVkU2V0dGluZ3MiLCAid2FzRnJlZSIsICJ0bHNTZXNzaW9uIiwgInByb2Nlc3NMaXN0ZW5lcnMiLCAibGlzdGVuZXIiLCAiaGVhZGVycyIsICJzdHJlYW1PcHRpb25zIiwgInN0cmVhbSIsICJpc0VtcHR5IiwgInBvcnQiLCAiaG9zdCIsICJyZWFzb24iLCAiZW50cmllc09mQXV0aG9yaXR5IiwgInJlcXVpcmVfaW5jb21pbmdfbWVzc2FnZSIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgIlJlYWRhYmxlIiwgIkluY29taW5nTWVzc2FnZSIsICJzb2NrZXQiLCAiaGlnaFdhdGVyTWFyayIsICJlcnJvciIsICJtcyIsICJjYWxsYmFjayIsICJyZXF1aXJlX3VybF90b19vcHRpb25zIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAidXJsIiwgIm9wdGlvbnMiLCAicmVxdWlyZV9wcm94eV9ldmVudHMiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJmcm9tIiwgInRvIiwgImV2ZW50cyIsICJldmVudCIsICJhcmdzIiwgInJlcXVpcmVfaXNfcmVxdWVzdF9wc2V1ZG9faGVhZGVyIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiaGVhZGVyIiwgInJlcXVpcmVfZXJyb3JzIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAibWFrZUVycm9yIiwgIkJhc2UiLCAia2V5IiwgImdldE1lc3NhZ2UiLCAiYXJncyIsICJ0eXBlIiwgInZhbGlkIiwgImlzTWFueVR5cGVzIiwgInJlcXVpcmVfY2xpZW50X3JlcXVlc3QiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJodHRwMiIsICJXcml0YWJsZSIsICJBZ2VudCIsICJnbG9iYWxBZ2VudCIsICJJbmNvbWluZ01lc3NhZ2UiLCAidXJsVG9PcHRpb25zIiwgInByb3h5RXZlbnRzIiwgImlzUmVxdWVzdFBzZXVkb0hlYWRlciIsICJFUlJfSU5WQUxJRF9BUkdfVFlQRSIsICJFUlJfSU5WQUxJRF9QUk9UT0NPTCIsICJFUlJfSFRUUF9IRUFERVJTX1NFTlQiLCAiRVJSX0lOVkFMSURfSFRUUF9UT0tFTiIsICJFUlJfSFRUUF9JTlZBTElEX0hFQURFUl9WQUxVRSIsICJFUlJfSU5WQUxJRF9DSEFSIiwgIkhUVFAyX0hFQURFUl9TVEFUVVMiLCAiSFRUUDJfSEVBREVSX01FVEhPRCIsICJIVFRQMl9IRUFERVJfUEFUSCIsICJIVFRQMl9NRVRIT0RfQ09OTkVDVCIsICJrSGVhZGVycyIsICJrT3JpZ2luIiwgImtTZXNzaW9uIiwgImtPcHRpb25zIiwgImtGbHVzaGVkSGVhZGVycyIsICJrSm9icyIsICJpc1ZhbGlkSHR0cFRva2VuIiwgImlzSW52YWxpZEhlYWRlclZhbHVlIiwgIkNsaWVudFJlcXVlc3QiLCAiaW5wdXQiLCAib3B0aW9ucyIsICJjYWxsYmFjayIsICJoYXNJbnB1dCIsICJwb3J0IiwgImhvc3QiLCAidGltZW91dCIsICJoZWFkZXIiLCAidmFsdWUiLCAiY2h1bmsiLCAiZW5jb2RpbmciLCAiY2FsbFdyaXRlIiwgImNhbGxFbmQiLCAiZXJyb3IiLCAiaXNDb25uZWN0TWV0aG9kIiwgIm9uU3RyZWFtIiwgInN0cmVhbSIsICJ3YWl0Rm9yRW5kIiwgImZuIiwgImFyZ3MiLCAiaGVhZGVycyIsICJmbGFncyIsICJyYXdIZWFkZXJzIiwgInJlc3BvbnNlIiwgInRyYWlsZXJzIiwgInJhd1RyYWlsZXJzIiwgInJlcyIsICJzb2NrZXQiLCAiam9iIiwgIm5hbWUiLCAibXMiLCAiYXBwbHlUaW1lb3V0IiwgIl92YWx1ZSIsICJyZXF1aXJlX3Jlc29sdmVfYWxwbiIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgInRscyIsICJvcHRpb25zIiwgImNvbm5lY3QiLCAicmVzb2x2ZSIsICJyZWplY3QiLCAidGltZW91dCIsICJzb2NrZXQiLCAiY2FsbGJhY2siLCAic29ja2V0UHJvbWlzZSIsICJvblRpbWVvdXQiLCAiZXJyb3IiLCAicmVxdWlyZV9jYWxjdWxhdGVfc2VydmVyX25hbWUiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJuZXQiLCAib3B0aW9ucyIsICJzZXJ2ZXJuYW1lIiwgImhvc3RIZWFkZXIiLCAicmVxdWlyZV9hdXRvIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiaHR0cCIsICJodHRwcyIsICJyZXNvbHZlQUxQTiIsICJRdWlja0xSVSIsICJIdHRwMkNsaWVudFJlcXVlc3QiLCAiY2FsY3VsYXRlU2VydmVyTmFtZSIsICJ1cmxUb09wdGlvbnMiLCAiY2FjaGUiLCAicXVldWUiLCAiaW5zdGFsbFNvY2tldCIsICJhZ2VudCIsICJzb2NrZXQiLCAib3B0aW9ucyIsICJvbkZyZWUiLCAib25DbG9zZSIsICJvblJlbW92ZSIsICJyZXNvbHZlUHJvdG9jb2wiLCAibmFtZSIsICJwYXRoIiwgInJlc3VsdFByb21pc2UiLCAiYWxwblByb3RvY29sIiwgImdsb2JhbEFnZW50IiwgImRlZmF1bHRDcmVhdGVDb25uZWN0aW9uIiwgImVycm9yIiwgImlucHV0IiwgImNhbGxiYWNrIiwgImlzSHR0cHMiLCAiYWdlbnRzIiwgInJlcXVpcmVfc291cmNlIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiaHR0cDIiLCAiYWdlbnQiLCAiQ2xpZW50UmVxdWVzdCIsICJJbmNvbWluZ01lc3NhZ2UiLCAiYXV0byIsICJyZXF1ZXN0IiwgInVybCIsICJvcHRpb25zIiwgImNhbGxiYWNrIiwgImdldCIsICJyZXEiLCAicmVxdWlyZV9pc19mb3JtX2RhdGEiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgImlzXzEiLCAiYm9keSIsICJyZXF1aXJlX2dldF9ib2R5X3NpemUiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgImZzXzEiLCAidXRpbF8xIiwgImlzXzEiLCAiaXNfZm9ybV9kYXRhXzEiLCAic3RhdEFzeW5jIiwgImJvZHkiLCAiaGVhZGVycyIsICJzaXplIiwgInJlcXVpcmVfcHJveHlfZXZlbnRzIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJkZWZhdWx0XzEiLCAiZnJvbSIsICJ0byIsICJldmVudHMiLCAiZm5zIiwgImV2ZW50IiwgImFyZ3MiLCAicmVxdWlyZV91bmhhbmRsZSIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAiaGFuZGxlcnMiLCAib3JpZ2luIiwgImV2ZW50IiwgImZuIiwgImhhbmRsZXIiLCAicmVxdWlyZV90aW1lZF9vdXQiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm5ldCIsICJ1bmhhbmRsZV8xIiwgInJlZW50cnkiLCAibm9vcCIsICJUaW1lb3V0RXJyb3IiLCAidGhyZXNob2xkIiwgImV2ZW50IiwgInJlcXVlc3QiLCAiZGVsYXlzIiwgIm9wdGlvbnMiLCAiY2FuY2VsZXJzIiwgIm9uY2UiLCAidW5oYW5kbGVBbGwiLCAiYWRkVGltZW91dCIsICJkZWxheSIsICJjYWxsYmFjayIsICJfYSIsICJ0aW1lb3V0IiwgImNhbmNlbCIsICJob3N0IiwgImhvc3RuYW1lIiwgInRpbWVvdXRIYW5kbGVyIiwgImNhbmNlbFRpbWVvdXRzIiwgImVycm9yIiwgInJlc3BvbnNlIiwgInNvY2tldFRpbWVvdXRIYW5kbGVyIiwgInNvY2tldCIsICJzb2NrZXRQYXRoIiwgImhhc1BhdGgiLCAiY2FuY2VsVGltZW91dCIsICJ0aW1lQ29ubmVjdCIsICJ0aW1lUmVxdWVzdCIsICJyZXF1aXJlX3VybF90b19vcHRpb25zIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJpc18xIiwgInVybCIsICJvcHRpb25zIiwgInJlcXVpcmVfb3B0aW9uc190b191cmwiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgInVybF8xIiwgImtleXMiLCAib3JpZ2luIiwgIm9wdGlvbnMiLCAiX2EiLCAiX2IiLCAidXJsIiwgInNlYXJjaEluZGV4IiwgImtleSIsICJyZXF1aXJlX3dlYWthYmxlX21hcCIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAiV2Vha2FibGVNYXAiLCAia2V5IiwgInZhbHVlIiwgInJlcXVpcmVfZ2V0X2J1ZmZlciIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAiZ2V0QnVmZmVyIiwgInN0cmVhbSIsICJjaHVua3MiLCAibGVuZ3RoIiwgImNodW5rIiwgInJlcXVpcmVfZG5zX2lwX3ZlcnNpb24iLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgImNvbnZlcnNpb25UYWJsZSIsICJ2YWx1ZSIsICJkbnNMb29rdXBJcFZlcnNpb24iLCAicmVxdWlyZV9pc19yZXNwb25zZV9vayIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAicmVzcG9uc2UiLCAic3RhdHVzQ29kZSIsICJsaW1pdFN0YXR1c0NvZGUiLCAicmVxdWlyZV9kZXByZWNhdGlvbl93YXJuaW5nIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJhbHJlYWR5V2FybmVkIiwgIm1lc3NhZ2UiLCAicmVxdWlyZV9ub3JtYWxpemVfYXJndW1lbnRzIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJpc18xIiwgIm5vcm1hbGl6ZUFyZ3VtZW50cyIsICJvcHRpb25zIiwgImRlZmF1bHRzIiwgInJldHJ5IiwgInJldHJ5T2JqZWN0IiwgIm1ldGhvZCIsICJwYWdpbmF0aW9uIiwgInJlcXVpcmVfY2FsY3VsYXRlX3JldHJ5X2RlbGF5IiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJjYWxjdWxhdGVSZXRyeURlbGF5IiwgImF0dGVtcHRDb3VudCIsICJyZXRyeU9wdGlvbnMiLCAiZXJyb3IiLCAicmV0cnlBZnRlciIsICJoYXNNZXRob2QiLCAiaGFzRXJyb3JDb2RlIiwgImhhc1N0YXR1c0NvZGUiLCAibm9pc2UiLCAicmVxdWlyZV9jb3JlIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJ1dGlsXzEiLCAic3RyZWFtXzEiLCAiZnNfMSIsICJ1cmxfMSIsICJodHRwIiwgImh0dHBfMSIsICJodHRwcyIsICJodHRwX3RpbWVyXzEiLCAiY2FjaGVhYmxlX2xvb2t1cF8xIiwgIkNhY2hlYWJsZVJlcXVlc3QiLCAiZGVjb21wcmVzc1Jlc3BvbnNlIiwgImh0dHAyd3JhcHBlciIsICJsb3dlcmNhc2VLZXlzIiwgImlzXzEiLCAiZ2V0X2JvZHlfc2l6ZV8xIiwgImlzX2Zvcm1fZGF0YV8xIiwgInByb3h5X2V2ZW50c18xIiwgInRpbWVkX291dF8xIiwgInVybF90b19vcHRpb25zXzEiLCAib3B0aW9uc190b191cmxfMSIsICJ3ZWFrYWJsZV9tYXBfMSIsICJnZXRfYnVmZmVyXzEiLCAiZG5zX2lwX3ZlcnNpb25fMSIsICJpc19yZXNwb25zZV9va18xIiwgImRlcHJlY2F0aW9uX3dhcm5pbmdfMSIsICJub3JtYWxpemVfYXJndW1lbnRzXzEiLCAiY2FsY3VsYXRlX3JldHJ5X2RlbGF5XzEiLCAiZ2xvYmFsRG5zQ2FjaGUiLCAia1JlcXVlc3QiLCAia1Jlc3BvbnNlIiwgImtSZXNwb25zZVNpemUiLCAia0Rvd25sb2FkZWRTaXplIiwgImtCb2R5U2l6ZSIsICJrVXBsb2FkZWRTaXplIiwgImtTZXJ2ZXJSZXNwb25zZXNQaXBlZCIsICJrVW5wcm94eUV2ZW50cyIsICJrSXNGcm9tQ2FjaGUiLCAia0NhbmNlbFRpbWVvdXRzIiwgImtTdGFydGVkUmVhZGluZyIsICJrU3RvcFJlYWRpbmciLCAia1RyaWdnZXJSZWFkIiwgImtCb2R5IiwgImtKb2JzIiwgImtPcmlnaW5hbFJlc3BvbnNlIiwgImtSZXRyeVRpbWVvdXQiLCAic3VwcG9ydHNCcm90bGkiLCAidmFsaWRhdGVTZWFyY2hQYXJhbWV0ZXJzIiwgInNlYXJjaFBhcmFtZXRlcnMiLCAia2V5IiwgInZhbHVlIiwgImlzQ2xpZW50UmVxdWVzdCIsICJjbGllbnRSZXF1ZXN0IiwgImNhY2hlYWJsZVN0b3JlIiwgIndhaXRGb3JPcGVuRmlsZSIsICJmaWxlIiwgInJlc29sdmUiLCAicmVqZWN0IiwgIm9uRXJyb3IiLCAiZXJyb3IiLCAicmVkaXJlY3RDb2RlcyIsICJub25FbnVtZXJhYmxlUHJvcGVydGllcyIsICJzb3VyY2VzIiwgInRvIiwgInByb3BlcnRpZXMiLCAic291cmNlIiwgIm5hbWUiLCAiUmVxdWVzdEVycm9yIiwgIm1lc3NhZ2UiLCAic2VsZiIsICJfYSIsICJfYiIsICJSZXF1ZXN0IiwgImluZGV4T2ZNZXNzYWdlIiwgInRoaXNTdGFja1RyYWNlIiwgImVycm9yU3RhY2tUcmFjZSIsICJNYXhSZWRpcmVjdHNFcnJvciIsICJyZXF1ZXN0IiwgIkhUVFBFcnJvciIsICJyZXNwb25zZSIsICJDYWNoZUVycm9yIiwgIlVwbG9hZEVycm9yIiwgIlRpbWVvdXRFcnJvciIsICJ0aW1pbmdzIiwgIlJlYWRFcnJvciIsICJVbnN1cHBvcnRlZFByb3RvY29sRXJyb3IiLCAib3B0aW9ucyIsICJwcm94aWVkUmVxdWVzdEV2ZW50cyIsICJ1cmwiLCAiZGVmYXVsdHMiLCAidW5sb2NrV3JpdGUiLCAibG9ja1dyaXRlIiwgImpzb24iLCAiYm9keSIsICJmb3JtIiwgIm5vcm1hbGl6ZWRVUkwiLCAiam9iIiwgIl9jIiwgIl9kIiwgIl9lIiwgInJhd09wdGlvbnMiLCAicHJlZml4VXJsIiwgInByb3RvY29sIiwgImNvb2tpZUphciIsICJzZXRDb29raWUiLCAiZ2V0Q29va2llU3RyaW5nIiwgImNhY2hlIiwgInJlcXVlc3RPcHRpb25zIiwgImhhbmRsZXIiLCAicmVzdWx0IiwgImV2ZW50IiwgImFyZUhvb2tzRGVmYXVsdCIsICJvbkxvY2tlZFdyaXRlIiwgImhlYWRlcnMiLCAiaXNGb3JtIiwgImlzSlNPTiIsICJpc0JvZHkiLCAiaGFzUGF5bG9hZCIsICJjYW5ub3RIYXZlQm9keSIsICJpc1RydWUiLCAibm9Db250ZW50VHlwZSIsICJ1cGxvYWRCb2R5U2l6ZSIsICJzdGF0dXNDb2RlIiwgInR5cGVkUmVzcG9uc2UiLCAicmF3Q29va2llcyIsICJwcm9taXNlcyIsICJyYXdDb29raWUiLCAicCIsICJpc1VuaXhTb2NrZXRVUkwiLCAicmVkaXJlY3RCdWZmZXIiLCAicmVkaXJlY3RVcmwiLCAicmVkaXJlY3RTdHJpbmciLCAiaG9vayIsICJkZXN0aW5hdGlvbiIsICJpc0FsbG93ZWQiLCAidGltZW91dCIsICJyZXNwb25zZUV2ZW50TmFtZSIsICJjdXJyZW50UmVxdWVzdCIsICJjYWNoZVJlcXVlc3QiLCAicmVxdWVzdE9yUHJvbWlzZSIsICJjb29raWVTdHJpbmciLCAiYWdlbnQiLCAibWF0Y2hlcyIsICJzb2NrZXRQYXRoIiwgInBhdGgiLCAiaXNIdHRwcyIsICJmYWxsYmFja0ZuIiwgInJlYWxGbiIsICJmbiIsICJyZXF1ZXN0T3JSZXNwb25zZSIsICJlcnJvcl8iLCAicmV0cnlDb3VudCIsICJ0eXBlZEVycm9yIiwgImJhY2tvZmYiLCAicmV0cnlBZnRlciIsICJyZXRyeSIsICJkYXRhIiwgInByb2dyZXNzIiwgImNodW5rIiwgImVuY29kaW5nIiwgImNhbGxiYWNrIiwgIndyaXRlIiwgImVuZFJlcXVlc3QiLCAicGVyY2VudCIsICJyZXF1aXJlX3R5cGVzIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJfX2NyZWF0ZUJpbmRpbmciLCAibyIsICJtIiwgImsiLCAiazIiLCAiX19leHBvcnRTdGFyIiwgInAiLCAiY29yZV8xIiwgIlBhcnNlRXJyb3IiLCAiZXJyb3IiLCAicmVzcG9uc2UiLCAib3B0aW9ucyIsICJDYW5jZWxFcnJvciIsICJyZXF1ZXN0IiwgInJlcXVpcmVfcGFyc2VfYm9keSIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAidHlwZXNfMSIsICJwYXJzZUJvZHkiLCAicmVzcG9uc2UiLCAicmVzcG9uc2VUeXBlIiwgInBhcnNlSnNvbiIsICJlbmNvZGluZyIsICJyYXdCb2R5IiwgImVycm9yIiwgInJlcXVpcmVfYXNfcHJvbWlzZSIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAiX19jcmVhdGVCaW5kaW5nIiwgIm8iLCAibSIsICJrIiwgImsyIiwgIl9fZXhwb3J0U3RhciIsICJwIiwgImV2ZW50c18xIiwgImlzXzEiLCAiUENhbmNlbGFibGUiLCAidHlwZXNfMSIsICJwYXJzZV9ib2R5XzEiLCAiY29yZV8xIiwgInByb3h5X2V2ZW50c18xIiwgImdldF9idWZmZXJfMSIsICJpc19yZXNwb25zZV9va18xIiwgInByb3hpZWRSZXF1ZXN0RXZlbnRzIiwgImFzUHJvbWlzZSIsICJub3JtYWxpemVkT3B0aW9ucyIsICJnbG9iYWxSZXF1ZXN0IiwgImdsb2JhbFJlc3BvbnNlIiwgImVtaXR0ZXIiLCAicHJvbWlzZSIsICJyZXNvbHZlIiwgInJlamVjdCIsICJvbkNhbmNlbCIsICJtYWtlUmVxdWVzdCIsICJyZXRyeUNvdW50IiwgInJlcXVlc3QiLCAicmVzcG9uc2UiLCAiX2EiLCAicmF3Qm9keSIsICJjb250ZW50RW5jb2RpbmciLCAiaXNDb21wcmVzc2VkIiwgIm9wdGlvbnMiLCAiZXJyb3IiLCAiaW5kZXgiLCAiaG9vayIsICJ1cGRhdGVkT3B0aW9ucyIsICJ0eXBlZE9wdGlvbnMiLCAib25FcnJvciIsICJwcmV2aW91c0JvZHkiLCAibmV3UmV0cnlDb3VudCIsICJfYiIsICJldmVudCIsICJmbiIsICJzaG9ydGN1dCIsICJyZXNwb25zZVR5cGUiLCAibmV3UHJvbWlzZSIsICJoZWFkZXJzIiwgInJlcXVpcmVfY3JlYXRlX3JlamVjdGlvbiIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAidHlwZXNfMSIsICJjcmVhdGVSZWplY3Rpb24iLCAiZXJyb3IiLCAiYmVmb3JlRXJyb3JHcm91cHMiLCAicHJvbWlzZSIsICJob29rcyIsICJob29rIiwgImVycm9yXyIsICJyZXR1cm5Qcm9taXNlIiwgInJlcXVpcmVfZGVlcF9mcmVlemUiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgImlzXzEiLCAiZGVlcEZyZWV6ZSIsICJvYmplY3QiLCAidmFsdWUiLCAicmVxdWlyZV90eXBlcyIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAicmVxdWlyZV9jcmVhdGUiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIl9fY3JlYXRlQmluZGluZyIsICJvIiwgIm0iLCAiayIsICJrMiIsICJfX2V4cG9ydFN0YXIiLCAicCIsICJpc18xIiwgImFzX3Byb21pc2VfMSIsICJjcmVhdGVfcmVqZWN0aW9uXzEiLCAiY29yZV8xIiwgImRlZXBfZnJlZXplXzEiLCAiZXJyb3JzIiwgImRlbGF5IiwgIm1zIiwgInJlc29sdmUiLCAibm9ybWFsaXplQXJndW1lbnRzIiwgIm1lcmdlT3B0aW9ucyIsICJzb3VyY2VzIiwgIm1lcmdlZE9wdGlvbnMiLCAic291cmNlIiwgImdldFByb21pc2VPclN0cmVhbSIsICJvcHRpb25zIiwgImlzR290SW5zdGFuY2UiLCAidmFsdWUiLCAiYWxpYXNlcyIsICJuZXh0IiwgImNhbGxJbml0SG9va3MiLCAiaG9va3MiLCAiaG9vayIsICJjcmVhdGUiLCAiZGVmYXVsdHMiLCAiZm4iLCAicm9vdCIsICJyZXN1bHQiLCAibmV3T3B0aW9ucyIsICJ0eXBlZFJlc3VsdCIsICJwcm9taXNlVGhlbiIsICJwcm9taXNlQ2F0Y2giLCAicHJvbWlzZUZpYW5sbHkiLCAiZ290IiwgInVybCIsICJfZGVmYXVsdHMiLCAiX2EiLCAiX2IiLCAiaXRlcmF0aW9uIiwgIml0ZXJhdGVIYW5kbGVycyIsICJpbml0SG9va0Vycm9yIiwgImVycm9yIiwgIm5vcm1hbGl6ZWRPcHRpb25zIiwgImluc3RhbmNlc09yT3B0aW9ucyIsICJvcHRpb25zQXJyYXkiLCAiaGFuZGxlcnMiLCAiaXNNdXRhYmxlRGVmYXVsdHMiLCAiaGFuZGxlciIsICJwYWdpbmF0ZUVhY2giLCAicGFnaW5hdGlvbiIsICJhbGwiLCAiY291bnRMaW1pdCIsICJudW1iZXJPZlJlcXVlc3RzIiwgInBhcnNlZCIsICJjdXJyZW50IiwgIml0ZW0iLCAib3B0aW9uc1RvTWVyZ2UiLCAicmVzdWx0cyIsICJtZXRob2QiLCAicmVxdWlyZV9zb3VyY2UiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJfX2NyZWF0ZUJpbmRpbmciLCAibyIsICJtIiwgImsiLCAiazIiLCAiX19leHBvcnRTdGFyIiwgInAiLCAidXJsXzEiLCAiY3JlYXRlXzEiLCAiZGVmYXVsdHMiLCAiY29tcHV0ZWRWYWx1ZSIsICJyZXNwb25zZSIsICJpdGVtcyIsICJuZXh0IiwgIml0ZW0iLCAicGFyc2VkIiwgInRleHQiLCAib2JqZWN0IiwgImdvdCIsICJyZXF1aXJlX2h0dHBVdGlscyIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAidHNsaWJfMSIsICJmc2xpYl8xIiwgImh0dHBzXzEiLCAiaHR0cF8xIiwgIm1pY3JvbWF0Y2hfMSIsICJ0dW5uZWxfMSIsICJ1cmxfMSIsICJNZXNzYWdlTmFtZV8xIiwgIlJlcG9ydF8xIiwgImZvcm1hdFV0aWxzIiwgIm1pc2NVdGlscyIsICJjYWNoZSIsICJmaWxlQ2FjaGUiLCAiZ2xvYmFsSHR0cEFnZW50IiwgImdsb2JhbEh0dHBzQWdlbnQiLCAicGFyc2VQcm94eSIsICJzcGVjaWZpZXIiLCAidXJsIiwgInByb3h5IiwgImdldENhY2hlZEZpbGUiLCAiZmlsZVBhdGgiLCAiZmlsZSIsICJwcmV0dHlSZXNwb25zZUNvZGUiLCAic3RhdHVzQ29kZSIsICJzdGF0dXNNZXNzYWdlIiwgImNvbmZpZ3VyYXRpb24iLCAicHJldHR5U3RhdHVzQ29kZSIsICJocmVmIiwgInByZXR0eU5ldHdvcmtFcnJvciIsICJyZXNwb25zZSIsICJjdXN0b21FcnJvck1lc3NhZ2UiLCAiX2EiLCAiX2IiLCAiZXJyIiwgIm1lc3NhZ2UiLCAibmV0d29ya0Vycm9yIiwgInJlcG9ydCIsICJnZXROZXR3b3JrU2V0dGluZ3MiLCAidGFyZ2V0IiwgIm9wdHMiLCAibmV0d29ya1NldHRpbmdzIiwgImtleUEiLCAia2V5QiIsICJtZXJnZWROZXR3b3JrU2V0dGluZ3MiLCAibWVyZ2FibGVLZXlzIiwgImdsb2IiLCAiY29uZmlnIiwgImtleSIsICJzZXR0aW5nIiwgIk1ldGhvZCIsICJyZXF1ZXN0IiwgImJvZHkiLCAiaGVhZGVycyIsICJqc29uUmVxdWVzdCIsICJqc29uUmVzcG9uc2UiLCAibWV0aG9kIiwgInJlYWxSZXF1ZXN0IiwgInJlcXVlc3RJbXBsIiwgImhvb2tzIiwgImdldCIsICJyZXN0IiwgImVudHJ5IiwgInB1dCIsICJvcHRpb25zIiwgInBvc3QiLCAiZGVsIiwgIm5ldHdvcmtDb25maWciLCAiZ290T3B0aW9ucyIsICJzb2NrZXRUaW1lb3V0IiwgInJldHJ5IiwgInJlamVjdFVuYXV0aG9yaXplZCIsICJodHRwc0NhRmlsZVBhdGgiLCAiaHR0cHNDZXJ0RmlsZVBhdGgiLCAiaHR0cHNLZXlGaWxlUGF0aCIsICJnb3QiLCAiY2VydGlmaWNhdGVBdXRob3JpdHkiLCAiY2VydGlmaWNhdGUiLCAiZ290Q2xpZW50IiwgInJlcXVpcmVfbm9kZVV0aWxzIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJ0c2xpYl8xIiwgIm1vZHVsZV8xIiwgIm1pc2NVdGlscyIsICJidWlsdGluTW9kdWxlcyIsICJnZXRMaWJjIiwgIl9hIiwgIl9iIiwgIl9jIiwgIl9kIiwgInNoYXJlZE9iamVjdHMiLCAibGliY1JlZ0V4cCIsICJlbnRyeSIsICJtYXRjaCIsICJhcmNoaXRlY3R1cmUiLCAiYXJjaGl0ZWN0dXJlU2V0IiwgImdldEFyY2hpdGVjdHVyZSIsICJnZXRBcmNoaXRlY3R1cmVOYW1lIiwgImdldEFyY2hpdGVjdHVyZVNldCIsICJyZXF1aXJlX0NvbmZpZ3VyYXRpb24iLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIl9hIiwgIl9iIiwgInRzbGliXzEiLCAiZnNsaWJfMSIsICJsaWJ6aXBfMSIsICJwYXJzZXJzXzEiLCAiY2FtZWxjYXNlXzEiLCAiY2lfaW5mb18xIiwgImNsaXBhbmlvbl8xIiwgInBfbGltaXRfMSIsICJzdHJlYW1fMSIsICJDb3JlUGx1Z2luXzEiLCAiTWFuaWZlc3RfMSIsICJNdWx0aUZldGNoZXJfMSIsICJNdWx0aVJlc29sdmVyXzEiLCAiVmlydHVhbEZldGNoZXJfMSIsICJWaXJ0dWFsUmVzb2x2ZXJfMSIsICJXb3Jrc3BhY2VGZXRjaGVyXzEiLCAiV29ya3NwYWNlUmVzb2x2ZXJfMSIsICJmb2xkZXJVdGlscyIsICJmb3JtYXRVdGlscyIsICJoYXNoVXRpbHMiLCAiaHR0cFV0aWxzIiwgIm1pc2NVdGlscyIsICJub2RlVXRpbHMiLCAic2VtdmVyVXRpbHMiLCAic3RydWN0VXRpbHMiLCAidHlwZXNfMSIsICJpc1B1YmxpY1JlcG9zaXRvcnkiLCAiSUdOT1JFRF9FTlZfVkFSSUFCTEVTIiwgIlNldHRpbmdzVHlwZSIsICJnZXRSY0ZpbGVuYW1lIiwgInBhcnNlVmFsdWUiLCAiY29uZmlndXJhdGlvbiIsICJwYXRoIiwgInZhbHVlIiwgImRlZmluaXRpb24iLCAiZm9sZGVyIiwgInN1YiIsICJpIiwgInBhcnNlU2luZ2xlVmFsdWUiLCAic2VnbWVudCIsICJwYXJzZVNoYXBlIiwgInBhcnNlTWFwIiwgImludGVycHJldGVkIiwgInZhbHVlV2l0aFJlcGxhY2VkVmFyaWFibGVzIiwgInJlc3VsdCIsICJnZXREZWZhdWx0VmFsdWUiLCAicHJvcEtleSIsICJwcm9wVmFsdWUiLCAic3ViUGF0aCIsICJub3JtYWxpemVkS2V5IiwgInZhbHVlRGVmaW5pdGlvbiIsICJpZ25vcmVBcnJheXMiLCAicHJvcERlZmluaXRpb24iLCAiZW50cnkiLCAidHJhbnNmb3JtQ29uZmlndXJhdGlvbiIsICJyYXdWYWx1ZSIsICJ0cmFuc2Zvcm1zIiwgIm5ld1ZhbHVlIiwgImtleSIsICJwcm9wZXJ0eURlZmluaXRpb24iLCAiZ2V0RW52aXJvbm1lbnRTZXR0aW5ncyIsICJlbnZpcm9ubWVudFNldHRpbmdzIiwgInJjS2V5IiwgIlByb2plY3RMb29rdXAiLCAiQ29uZmlndXJhdGlvbiIsICJzdGFydGluZ0N3ZCIsICJwcm9qZWN0Q3dkT3JQbHVnaW5zIiwgIm1heWJlUGx1Z2lucyIsICJwbHVnaW5zIiwgIm5hbWUiLCAicGx1Z2luIiwgInBsdWdpbkNvbmZpZ3VyYXRpb24iLCAibG9va3VwIiwgInN0cmljdCIsICJ1c2VQYXRoIiwgInVzZVJjIiwgInJjRmlsZXMiLCAiaG9tZVJjRmlsZSIsICJyY0ZpbGUiLCAiYWxsQ29yZUZpZWxkS2V5cyIsICJwaWNrUHJpbWFyeUNvcmVGaWVsZHMiLCAiaWdub3JlQ3dkIiwgInlhcm5QYXRoIiwgImlnbm9yZVBhdGgiLCAibG9ja2ZpbGVGaWxlbmFtZSIsICJwaWNrU2Vjb25kYXJ5Q29yZUZpZWxkcyIsICJyZXN0IiwgInNlY29uZGFyeUNvcmVGaWVsZHMiLCAicGlja1BsdWdpbkZpZWxkcyIsICJwbHVnaW5GaWVsZHMiLCAiY3dkIiwgImRhdGEiLCAicHJvamVjdEN3ZCIsICJpc1N0cmljdCIsICJnZXREZWZhdWx0IiwgIm9iamVjdCIsICJjb3JlUGx1Z2lucyIsICJyZXF1ZXN0IiwgImNvcmVQbHVnaW4iLCAidGhpcmRQYXJ0eVBsdWdpbnMiLCAicmVxdWlyZUVudHJpZXMiLCAiZW1iZWRNb2R1bGUiLCAiZHluYW1pY1BsdWdpbnMiLCAiaW1wb3J0UGx1Z2luIiwgInBsdWdpblBhdGgiLCAic291cmNlIiwgImZhY3RvcnkiLCAicGx1Z2luUmVxdWlyZUVudHJpZXMiLCAicGx1Z2luUmVxdWlyZSIsICJtZXNzYWdlIiwgInVzZXJQcm92aWRlZFBhdGgiLCAidXNlclBsdWdpbkVudHJ5IiwgInVzZXJQcm92aWRlZFNwZWMiLCAidXNlclByb3ZpZGVkQ2hlY2tzdW0iLCAicHJldHR5UGx1Z2luTmFtZSIsICJwcmV0dHlHaXRJZ25vcmUiLCAicHJldHR5WWFybnJjIiwgInByZXR0eVVybCIsICJwbHVnaW5CdWZmZXIiLCAicGx1Z2luQ2hlY2tzdW0iLCAicHJldHR5UGx1Z2luSW1wb3J0Q29tbWFuZCIsICJ0aGlyZFBhcnR5UGx1Z2luIiwgInJjRmlsZW5hbWUiLCAibmV4dEN3ZCIsICJjdXJyZW50Q3dkIiwgInJjUGF0aCIsICJjb250ZW50IiwgInRpcCIsICJob21lRm9sZGVyIiwgImhvbWVSY0ZpbGVQYXRoIiwgInBhdGNoIiwgImNvbmZpZ3VyYXRpb25QYXRoIiwgImN1cnJlbnQiLCAicGF0Y2hlZCIsICJyZXBsYWNlbWVudCIsICJjdXJyZW50VmFsdWUiLCAicGF0Y2hGaWVsZCIsICJuZXh0VmFsdWUiLCAicGx1Z2luTWV0YUxpc3QiLCAiY3VycmVudFBsdWdpbk1ldGFMaXN0IiwgIm5ld1BsdWdpbk1ldGFMaXN0IiwgIm5vdFlldFByb2Nlc3NlZExpc3QiLCAiY3VycmVudFBsdWdpbk1ldGEiLCAiY3VycmVudFBsdWdpblBhdGgiLCAidXBkYXRpbmdQbHVnaW4iLCAicGx1Z2luTWV0YSIsICJwIiwgImRlZmluaXRpb25zIiwgIm9wdHMiLCAiZXJyb3IiLCAib3ZlcndyaXRlIiwgInBhcnNlZCIsICJwcmV2aW91c1ZhbHVlIiwgImhpZGVTZWNyZXRzIiwgImdldE5hdGl2ZVBhdGhzIiwgImxvZ0ZpbGUiLCAiaGVhZGVyIiwgInByZWZpeCIsICJyZXBvcnQiLCAic3Rkb3V0IiwgInN0ZGVyciIsICJsb2dTdHJlYW0iLCAic3Rkb3V0TGluZVJlcG9ydGVyIiwgInN0ZGVyckxpbmVSZXBvcnRlciIsICJwbHVnaW5SZXNvbHZlcnMiLCAicmVzb2x2ZXIiLCAicGx1Z2luRmV0Y2hlcnMiLCAiZmV0Y2hlciIsICJsaW5rZXJzIiwgImxpbmtlciIsICJhcmNoaXRlY3R1cmUiLCAic3VwcG9ydGVkQXJjaGl0ZWN0dXJlcyIsICJvcyIsICJjcHUiLCAibGliYyIsICJwYWNrYWdlRXh0ZW5zaW9ucyIsICJyZWdpc3RlclBhY2thZ2VFeHRlbnNpb24iLCAiZGVzY3JpcHRvciIsICJleHRlbnNpb25EYXRhIiwgInVzZXJQcm92aWRlZCIsICJleHRlbnNpb24iLCAiZXh0ZW5zaW9uc1BlcklkZW50IiwgImV4dGVuc2lvbnNQZXJSYW5nZSIsICJiYXNlRXh0ZW5zaW9uIiwgImRlcGVuZGVuY3kiLCAicGVlckRlcGVuZGVuY3kiLCAic2VsZWN0b3IiLCAibWV0YSIsICJob29rcyIsICJkZXNjcmlwdG9yU3RyaW5nIiwgImRlcGVuZGVuY3lNYXAiLCAib3JpZ2luYWwiLCAicGtnIiwgInZlcnNpb24iLCAicmFuZ2UiLCAiY3VycmVudFBlZXJEZXBlbmRlbmN5TWV0YSIsICJnZXRUeXBlc05hbWUiLCAiaWRlbnRTdHJpbmciLCAiaWRlbnQiLCAidHlwZXNOYW1lIiwgInR5cGVzSWRlbnQiLCAic3RyaW5naWZpZWRUeXBlc0lkZW50IiwgImdldCIsICJhcmdzIiwgImhvb2siLCAiYXJnc0xpc3QiLCAiaW5pdGlhbFZhbHVlIiwgInJldCIsICJyZXF1aXJlX2V4ZWNVdGlscyIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAidHNsaWJfMSIsICJmc2xpYl8xIiwgImNyb3NzX3NwYXduXzEiLCAiQ29uZmlndXJhdGlvbl8xIiwgIk1lc3NhZ2VOYW1lXzEiLCAiUmVwb3J0XzEiLCAiZm9ybWF0VXRpbHMiLCAiRW5kU3RyYXRlZ3kiLCAiUGlwZUVycm9yIiwgImZpbGVOYW1lIiwgImNvZGUiLCAic2lnbmFsIiwgImNvbmZpZ3VyYXRpb24iLCAicHJldHR5RmlsZU5hbWUiLCAicmVwb3J0IiwgInJlcG9ydEV4aXRTdGF0dXMiLCAiZ2V0RXhpdENvZGUiLCAiRXhlY0Vycm9yIiwgInN0ZG91dCIsICJzdGRlcnIiLCAiaGFzRmQiLCAic3RyZWFtIiwgImFjdGl2ZUNoaWxkcmVuIiwgInNpZ2ludEhhbmRsZXIiLCAic2lndGVybUhhbmRsZXIiLCAiY2hpbGQiLCAicGlwZXZwIiwgImFyZ3MiLCAiY3dkIiwgImVudiIsICJzdHJpY3QiLCAic3RkaW4iLCAiZW5kIiwgInN0ZGlvIiwgImNsb3NlU3RyZWFtcyIsICJyZXNvbHZlIiwgInJlamVjdCIsICJlcnJvciIsICJleGVjdnAiLCAiZW5jb2RpbmciLCAic3Rkb3V0Q2h1bmtzIiwgInN0ZGVyckNodW5rcyIsICJuYXRpdmVDd2QiLCAic3VicHJvY2VzcyIsICJjaHVuayIsICJlcnIiLCAic2lnbmFsVG9Db2RlTWFwIiwgInNpZ25hbENvZGUiLCAicmVxdWlyZV9lbnRyeSIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAiZnNsaWJfMSIsICJjbGlwYW5pb25fMSIsICJpbmRleF8xIiwgIkVudHJ5Q29tbWFuZCIsICJjb21tYW5kIiwgInJlcXVpcmVfZXJyb3JzIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJTaGVsbEVycm9yIiwgIm1lc3NhZ2UiLCAicmVxdWlyZV9nbG9iVXRpbHMiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgInRzbGliXzEiLCAiZnNsaWJfMSIsICJmYXN0X2dsb2JfMSIsICJmc18xIiwgIm1pY3JvbWF0Y2hfMSIsICJpc0dsb2JQYXR0ZXJuIiwgInBhdHRlcm4iLCAibWF0Y2giLCAiY3dkIiwgImJhc2VGcyIsICJpc0JyYWNlRXhwYW5zaW9uIiwgInJlcXVpcmVfcGlwZSIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAidHNsaWJfMSIsICJjcm9zc19zcGF3bl8xIiwgInN0cmVhbV8xIiwgInN0cmluZ19kZWNvZGVyXzEiLCAiUGlwZSIsICJhY3RpdmVDaGlsZHJlbiIsICJzaWdpbnRIYW5kbGVyIiwgInNpZ3Rlcm1IYW5kbGVyIiwgImNoaWxkIiwgIm1ha2VQcm9jZXNzIiwgIm5hbWUiLCAiYXJncyIsICJvcHRzIiwgInNwYXduT3B0cyIsICJzdGRpbyIsICJzdGRpbiIsICJzdGRvdXQiLCAic3RkZXJyIiwgInJlc29sdmUiLCAiZXJyb3IiLCAiY29kZSIsICJtYWtlQnVpbHRpbiIsICJidWlsdGluIiwgIlByb3RlY3RlZFN0cmVhbSIsICJzdHJlYW0iLCAiUGlwZVN0cmVhbSIsICJIYW5kbGUiLCAiaW1wbGVtZW50YXRpb24iLCAiY2hhaW4iLCAiYW5jZXN0b3IiLCAic291cmNlIiwgIm5leHQiLCAicGlwZSIsICJzdGRvdXRMb2NrIiwgInN0ZGVyckxvY2siLCAicHJvbWlzZXMiLCAiaGFuZGxlIiwgInN0YXJ0IiwgInAiLCAiY3JlYXRlU3RyZWFtUmVwb3J0ZXIiLCAicmVwb3J0Rm4iLCAicHJlZml4IiwgImRlY29kZXIiLCAiYnVmZmVyIiwgImNodW5rIiwgImNodW5rU3RyIiwgImxpbmVJbmRleCIsICJsaW5lIiwgImxhc3QiLCAiY3JlYXRlT3V0cHV0U3RyZWFtc1dpdGhQcmVmaXgiLCAic3RhdGUiLCAidGV4dCIsICJyZXF1aXJlX2xpYiIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAidHNsaWJfMSIsICJmc2xpYl8xIiwgInBhcnNlcnNfMSIsICJjaGFsa18xIiwgIm9zXzEiLCAic3RyZWFtXzEiLCAidXRpbF8xIiwgImVudHJ5XzEiLCAiZXJyb3JzXzEiLCAiZ2xvYlV0aWxzIiwgInBpcGVfMSIsICJwaXBlXzIiLCAic2V0VGltZW91dFByb21pc2UiLCAiU3RyZWFtVHlwZSIsICJnZXRGaWxlRGVzY3JpcHRvclN0cmVhbSIsICJmZCIsICJ0eXBlIiwgInN0YXRlIiwgInN0cmVhbSIsICJjbG9uZVN0YXRlIiwgIm1lcmdlV2l0aCIsICJuZXdTdGF0ZSIsICJCVUlMVElOUyIsICJ0YXJnZXQiLCAicmVzdCIsICJvcHRzIiwgInJlc29sdmVkVGFyZ2V0IiwgImVycm9yIiwgImFyZ3MiLCAiY29kZSIsICJ0aW1lIiwgInNlY29uZHMiLCAicHJvY2VkdXJlIiwgInN0ZGluIiwgInN0ZG91dCIsICJzdGRlcnIiLCAiaW5wdXRzIiwgIm91dHB1dHMiLCAiZXJyb3JzIiwgInQiLCAia2V5IiwgInB1c2hJbnB1dCIsICJyZWFkYWJsZUZhY3RvcnkiLCAicHVzaE91dHB1dCIsICJ3cml0YWJsZSIsICJjb3VudCIsICJsYXN0IiwgInUiLCAiaW5wdXQiLCAib3V0cHV0UGF0aCIsICJjaHVuayIsICJlbmNvZGluZyIsICJjYWxsYmFjayIsICJwaXBlIiwgImJpbmRJbnB1dCIsICJuIiwgIm91dHB1dCIsICJleGl0Q29kZSIsICJtYWtlQ29tbWFuZEFjdGlvbiIsICJyZXNvbHZlIiwgInJlamVjdCIsICJlcnIiLCAiZXhlY3V0ZUJ1ZmZlcmVkU3Vic2hlbGwiLCAiYXN0IiwgImNodW5rcyIsICJleGVjdXRlU2hlbGxMaW5lIiwgImFwcGx5RW52VmFyaWFibGVzIiwgImVudmlyb25tZW50U2VnbWVudHMiLCAiZW52UHJvbWlzZXMiLCAiZW52U2VnbWVudCIsICJpbnRlcnBvbGF0ZWRBcmdzIiwgImludGVycG9sYXRlQXJndW1lbnRzIiwgImVudnMiLCAiZW52IiwgInNwbGl0IiwgInJhdyIsICJldmFsdWF0ZVZhcmlhYmxlIiwgInNlZ21lbnQiLCAicHVzaCIsICJwdXNoQW5kQ2xvc2UiLCAicGFydHMiLCAicGFydCIsICJhcmdJbmRleCIsICJpc0FyZ3VtZW50IiwgIm9wZXJhdG9ycyIsICJsZWZ0IiwgInJpZ2h0IiwgImV2YWx1YXRlQXJpdGhtZXRpYyIsICJhcml0aG1ldGljIiwgInJlc3VsdCIsICJudW1iZXIiLCAiY29tbWFuZEFyZ3MiLCAicmVkaXJlY3Rpb25zIiwgImludGVycG9sYXRlZCIsICJpbnRlcnBvbGF0ZWRTZWdtZW50cyIsICJjbG9zZSIsICJyZWRpcmVjdCIsICJ0YXJnZXRzIiwgImNvbW1hbmRBcmciLCAiaXNHbG9iIiwgImludGVycG9sYXRlZEFyZyIsICJwYXR0ZXJuIiwgIm1hdGNoZXMiLCAiYnJhY2VFeHBhbnNpb25Ob3RpY2UiLCAibWF0Y2giLCAicmVkaXJlY3Rpb25BcmdzIiwgIm5hdGl2ZUN3ZCIsICJuYW1lIiwgImJ1aWx0aW4iLCAiaW5pdGlhbFN0ZGluIiwgImluaXRpYWxTdGRvdXQiLCAiaW5pdGlhbFN0ZGVyciIsICJtYWtlU3Vic2hlbGxBY3Rpb24iLCAic3RkaW8iLCAicHJvbWlzZSIsICJtYWtlR3JvdXBBY3Rpb24iLCAibWFrZUFjdGlvbkZyb21Qcm9jZWR1cmUiLCAiYWN0aXZlU3RhdGUiLCAiZXhlY3V0ZUNvbW1hbmRDaGFpbkltcGwiLCAibm9kZSIsICJjdXJyZW50IiwgInBpcGVUeXBlIiwgImV4ZWN1dGlvbiIsICJhY3Rpb24iLCAiZW52aXJvbm1lbnQiLCAiZXhlY3V0ZUNvbW1hbmRDaGFpbiIsICJiYWNrZ3JvdW5kIiwgImdldENvbG9yaXplciIsICJpbmRleCIsICJjb2xvcnMiLCAiY29sb3JOYW1lIiwgImNvbG9yaXplciIsICJyYXdQcmVmaXgiLCAicHJlZml4IiwgImV4ZWN1dGVDb21tYW5kTGluZSIsICJzZXRDb2RlIiwgIm5ld0NvZGUiLCAiZXhlY3V0ZUNoYWluIiwgImxpbmUiLCAib3JpZ2luYWxCYWNrZ3JvdW5kSm9icyIsICJyaWdodE1vc3RFeGl0Q29kZSIsICJjb21tYW5kIiwgImxvY2F0ZUFyZ3NWYXJpYWJsZUluU2VnbWVudCIsICJhcmciLCAibG9jYXRlQXJnc1ZhcmlhYmxlSW5Bcmd1bWVudCIsICJsb2NhdGVBcmdzVmFyaWFibGVJbkFyaXRobWV0aWMiLCAibG9jYXRlQXJnc1ZhcmlhYmxlIiwgImNoYWluIiwgImhhc0FyZ3MiLCAiZXhlY3V0ZSIsICJiYXNlRnMiLCAiYnVpbHRpbnMiLCAiY3dkIiwgInZhcmlhYmxlcyIsICJnbG9iIiwgIm5vcm1hbGl6ZWRFbnYiLCAidmFsdWUiLCAibm9ybWFsaXplZEJ1aWx0aW5zIiwgInJlcXVpcmVfYXJyYXlNYXAiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJhcnJheU1hcCIsICJhcnJheSIsICJpdGVyYXRlZSIsICJpbmRleCIsICJsZW5ndGgiLCAicmVzdWx0IiwgInJlcXVpcmVfYmFzZVRvU3RyaW5nIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiU3ltYm9sIiwgImFycmF5TWFwIiwgImlzQXJyYXkiLCAiaXNTeW1ib2wiLCAiSU5GSU5JVFkiLCAic3ltYm9sUHJvdG8iLCAic3ltYm9sVG9TdHJpbmciLCAiYmFzZVRvU3RyaW5nIiwgInZhbHVlIiwgInJlc3VsdCIsICJyZXF1aXJlX3RvU3RyaW5nIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiYmFzZVRvU3RyaW5nIiwgInRvU3RyaW5nIiwgInZhbHVlIiwgInJlcXVpcmVfYmFzZVNsaWNlIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiYmFzZVNsaWNlIiwgImFycmF5IiwgInN0YXJ0IiwgImVuZCIsICJpbmRleCIsICJsZW5ndGgiLCAicmVzdWx0IiwgInJlcXVpcmVfY2FzdFNsaWNlIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiYmFzZVNsaWNlIiwgImNhc3RTbGljZSIsICJhcnJheSIsICJzdGFydCIsICJlbmQiLCAibGVuZ3RoIiwgInJlcXVpcmVfaGFzVW5pY29kZSIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgInJzQXN0cmFsUmFuZ2UiLCAicnNDb21ib01hcmtzUmFuZ2UiLCAicmVDb21ib0hhbGZNYXJrc1JhbmdlIiwgInJzQ29tYm9TeW1ib2xzUmFuZ2UiLCAicnNDb21ib1JhbmdlIiwgInJzVmFyUmFuZ2UiLCAicnNaV0oiLCAicmVIYXNVbmljb2RlIiwgImhhc1VuaWNvZGUiLCAic3RyaW5nIiwgInJlcXVpcmVfYXNjaWlUb0FycmF5IiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiYXNjaWlUb0FycmF5IiwgInN0cmluZyIsICJyZXF1aXJlX3VuaWNvZGVUb0FycmF5IiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAicnNBc3RyYWxSYW5nZSIsICJyc0NvbWJvTWFya3NSYW5nZSIsICJyZUNvbWJvSGFsZk1hcmtzUmFuZ2UiLCAicnNDb21ib1N5bWJvbHNSYW5nZSIsICJyc0NvbWJvUmFuZ2UiLCAicnNWYXJSYW5nZSIsICJyc0FzdHJhbCIsICJyc0NvbWJvIiwgInJzRml0eiIsICJyc01vZGlmaWVyIiwgInJzTm9uQXN0cmFsIiwgInJzUmVnaW9uYWwiLCAicnNTdXJyUGFpciIsICJyc1pXSiIsICJyZU9wdE1vZCIsICJyc09wdFZhciIsICJyc09wdEpvaW4iLCAicnNTZXEiLCAicnNTeW1ib2wiLCAicmVVbmljb2RlIiwgInVuaWNvZGVUb0FycmF5IiwgInN0cmluZyIsICJyZXF1aXJlX3N0cmluZ1RvQXJyYXkiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJhc2NpaVRvQXJyYXkiLCAiaGFzVW5pY29kZSIsICJ1bmljb2RlVG9BcnJheSIsICJzdHJpbmdUb0FycmF5IiwgInN0cmluZyIsICJyZXF1aXJlX2NyZWF0ZUNhc2VGaXJzdCIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImNhc3RTbGljZSIsICJoYXNVbmljb2RlIiwgInN0cmluZ1RvQXJyYXkiLCAidG9TdHJpbmciLCAiY3JlYXRlQ2FzZUZpcnN0IiwgIm1ldGhvZE5hbWUiLCAic3RyaW5nIiwgInN0clN5bWJvbHMiLCAiY2hyIiwgInRyYWlsaW5nIiwgInJlcXVpcmVfdXBwZXJGaXJzdCIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImNyZWF0ZUNhc2VGaXJzdCIsICJ1cHBlckZpcnN0IiwgInJlcXVpcmVfY2FwaXRhbGl6ZSIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgInRvU3RyaW5nIiwgInVwcGVyRmlyc3QiLCAiY2FwaXRhbGl6ZSIsICJzdHJpbmciLCAicmVxdWlyZV9ncmFwaGVtZV9zcGxpdHRlciIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgIkdyYXBoZW1lU3BsaXR0ZXIiLCAiQ1IiLCAiTEYiLCAiQ29udHJvbCIsICJFeHRlbmQiLCAiUmVnaW9uYWxfSW5kaWNhdG9yIiwgIlNwYWNpbmdNYXJrIiwgIkwiLCAiViIsICJUIiwgIkxWIiwgIkxWVCIsICJPdGhlciIsICJQcmVwZW5kIiwgIkVfQmFzZSIsICJFX01vZGlmaWVyIiwgIlpXSiIsICJHbHVlX0FmdGVyX1p3aiIsICJFX0Jhc2VfR0FaIiwgIk5vdEJyZWFrIiwgIkJyZWFrU3RhcnQiLCAiQnJlYWsiLCAiQnJlYWtMYXN0UmVnaW9uYWwiLCAiQnJlYWtQZW51bHRpbWF0ZVJlZ2lvbmFsIiwgImlzU3Vycm9nYXRlIiwgInN0ciIsICJwb3MiLCAiY29kZVBvaW50QXQiLCAiaWR4IiwgImNvZGUiLCAiaGkiLCAibG93IiwgInNob3VsZEJyZWFrIiwgInN0YXJ0IiwgIm1pZCIsICJlbmQiLCAiYWxsIiwgInByZXZpb3VzIiwgIm5leHQiLCAiZU1vZGlmaWVySW5kZXgiLCAiYyIsICJySUluZGV4IiwgInByZXZpb3VzTm9uRXh0ZW5kSW5kZXgiLCAic3RyaW5nIiwgImluZGV4IiwgInByZXYiLCAiZ2V0R3JhcGhlbWVCcmVha1Byb3BlcnR5IiwgImkiLCAicmVzIiwgImJyayIsICJ2YWx1ZSIsICJjb3VudCIsICJyZXF1aXJlX3NsaWNlX2Fuc2kiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJBTlNJX1NFUVVFTkNFIiwgInNwbGl0R3JhcGhlbWVzIiwgImdldFNwbGl0dGVyIiwgInNlZ21lbnRlciIsICJ0ZXh0IiwgInNlZ21lbnQiLCAiR3JhcGhlbWVTcGxpdHRlciIsICJzcGxpdHRlciIsICJvcmlnIiwgImF0IiwgInVudGlsIiwgImxlbmd0aCIsICJvdXRwdXQiLCAic2tpcHBlZCIsICJ2aXNpYmxlIiwgImxvb2t1cCIsICJncmFwaGVtZXMiLCAic2tpcHBpbmciLCAiZGlzcGxheWluZyIsICJyZXF1aXJlX1N0cmVhbVJlcG9ydCIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAidHNsaWJfMSIsICJzbGljZV9hbnNpXzEiLCAiY2lfaW5mb18xIiwgIk1lc3NhZ2VOYW1lXzEiLCAiUmVwb3J0XzEiLCAiZm9ybWF0VXRpbHMiLCAic3RydWN0VXRpbHMiLCAiUFJPR1JFU1NfRlJBTUVTIiwgIlBST0dSRVNTX0lOVEVSVkFMIiwgIkJBU0VfRk9SR0VUVEFCTEVfTkFNRVMiLCAiQkFTRV9GT1JHRVRUQUJMRV9CVUZGRVJfU0laRSIsICJHUk9VUCIsICJ3aGF0IiwgIm5vdyIsICJzdXBwb3J0c0Vtb2ppcyIsICJtYWtlUmVjb3JkIiwgIm9iaiIsICJQUk9HUkVTU19TVFlMRVMiLCAiZGVmYXVsdFN0eWxlIiwgIm5hbWUiLCAic3R5bGUiLCAiZm9ybWF0TmFtZSIsICJjb25maWd1cmF0aW9uIiwgImpzb24iLCAibnVtIiwgImxhYmVsIiwgImZvcm1hdE5hbWVXaXRoSHlwZXJsaW5rIiwgImNvZGUiLCAiZGVzYyIsICJocmVmIiwgIlN0cmVhbVJlcG9ydCIsICJvcHRzIiwgImNiIiwgInJlcG9ydCIsICJlbWl0V2FybmluZyIsICJtZXNzYWdlIiwgImVycm9yIiwgImZ1bGxNZXNzYWdlIiwgInN0ZG91dCIsICJpbmNsdWRlRm9vdGVyIiwgImluY2x1ZGVMb2dzIiwgImluY2x1ZGVJbmZvcyIsICJpbmNsdWRlV2FybmluZ3MiLCAiZm9yZ2V0dGFibGVCdWZmZXJTaXplIiwgImZvcmdldHRhYmxlTmFtZXMiLCAic3R5bGVOYW1lIiwgIlBBRF9MRUZUIiwgIm1heFdpZHRoIiwgImxvY2F0b3IiLCAicmVwb3J0SGVhZGVyIiwgInJlcG9ydEZvb3RlciIsICJza2lwSWZFbXB0eSIsICJtYXJrIiwgImJlZm9yZSIsICJhZnRlciIsICJlbGFwc2VkVGltZSIsICJyZWFsQ2IiLCAic2VjdGlvbk9wcyIsICJjYWNoZUluZm8iLCAidGV4dCIsICJmb3JtYXR0ZWROYW1lIiwgInByZWZpeCIsICJwcm9ncmVzc0l0IiwgInN0b3BwZWQiLCAicHJvbWlzZSIsICJwcm9ncmVzc0RlZmluaXRpb24iLCAicHJvZ3Jlc3MiLCAidGl0bGUiLCAic3RvcCIsICJkYXRhIiwgImluc3RhbGxTdGF0dXMiLCAidGltaW5nIiwgInN0ciIsICJ0cnVuY2F0ZSIsICJsaW5lcyIsICJsaW5lIiwgImNhY2hlSGl0Q291bnQiLCAiY2FjaGVNaXNzQ291bnQiLCAiY2FjaGVIaXREZWx0YSIsICJjYWNoZU1pc3NEZWx0YSIsICJmZXRjaFN0YXR1cyIsICJtYXJrcyIsICJkZWx0YSIsICJjbGVhciIsICJzcGlubmVyIiwgInByb2dyZXNzQmFyIiwgIm9rIiwgImtvIiwgImZvcmNlIiwgIm5lZWRzVXBkYXRlIiwgIm5lZWRzQ2xlYXIiLCAicmVmcmVzaGVkU2NhbGVkU2l6ZSIsICJwcmV2aW91c1NjYWxlZFNpemUiLCAicHJldmlvdXNUaXRsZSIsICJyZXF1aXJlX1lhcm5WZXJzaW9uIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJyZXF1aXJlX3NjcmlwdFV0aWxzIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJ0c2xpYl8xIiwgImZzbGliXzEiLCAiZnNsaWJfMiIsICJsaWJ6aXBfMSIsICJzaGVsbF8xIiwgImNhcGl0YWxpemVfMSIsICJwX2xpbWl0XzEiLCAic3RyZWFtXzEiLCAiTWFuaWZlc3RfMSIsICJNZXNzYWdlTmFtZV8xIiwgIlJlcG9ydF8xIiwgIlN0cmVhbVJlcG9ydF8xIiwgIllhcm5WZXJzaW9uXzEiLCAiZXhlY1V0aWxzIiwgImZvcm1hdFV0aWxzIiwgIm1pc2NVdGlscyIsICJzZW12ZXJVdGlscyIsICJzdHJ1Y3RVdGlscyIsICJQYWNrYWdlTWFuYWdlciIsICJtYWtlUGF0aFdyYXBwZXIiLCAibG9jYXRpb24iLCAibmFtZSIsICJhcmd2MCIsICJhcmdzIiwgImNtZFNjcmlwdCIsICJhcmciLCAiZGV0ZWN0UGFja2FnZU1hbmFnZXIiLCAibWFuaWZlc3QiLCAibG9jYXRvciIsICJyZWFzb24iLCAibWFqb3IiLCAieWFybkxvY2siLCAibWFrZVNjcmlwdEVudiIsICJwcm9qZWN0IiwgImJpbkZvbGRlciIsICJsaWZlY3ljbGVTY3JpcHQiLCAiX2EiLCAiX2IiLCAic2NyaXB0RW52IiwgImtleSIsICJ2YWx1ZSIsICJuQmluRm9sZGVyIiwgInlhcm5CaW4iLCAid29ya3NwYWNlIiwgInZlcnNpb24iLCAicGFja2FnZUxvY2F0aW9uIiwgInBrZyIsICJsaW5rZXJzIiwgImxpbmtlck9wdGlvbnMiLCAibGlua2VyIiwgImhvb2siLCAiTUFYX1BSRVBBUkVfQ09OQ1VSUkVOQ1kiLCAicHJlcGFyZUxpbWl0IiwgInByZXBhcmVFeHRlcm5hbFByb2plY3QiLCAiY3dkIiwgIm91dHB1dFBhdGgiLCAiY29uZmlndXJhdGlvbiIsICJyZXBvcnQiLCAibG9nRGlyIiwgImxvZ0ZpbGUiLCAic3RkaW4iLCAic3Rkb3V0IiwgInN0ZGVyciIsICJkZXZpcnR1YWxpemVkTG9jYXRvciIsICJwYWNrYWdlTWFuYWdlclNlbGVjdGlvbiIsICJlZmZlY3RpdmVQYWNrYWdlTWFuYWdlciIsICJlbnYiLCAid29ya2Zsb3ciLCAid29ya3NwYWNlQ2xpIiwgIm1hbmlmZXN0UGF0aCIsICJtYW5pZmVzdEJ1ZmZlciIsICJpbnN0YWxsIiwgInBhY2siLCAibG9ja2ZpbGVQYXRoIiwgInZlcnNpb25TdHJlYW0iLCAidmVyc2lvblByb21pc2UiLCAibnBtVmVyc2lvbiIsICJucG1JZGVudCIsICJjdXJyZW50TnBtRGVzY3JpcHRvciIsICJyZXF1aXJlZE5wbURlc2NyaXB0b3IiLCAicGFja1N0cmVhbSIsICJwYWNrUHJvbWlzZSIsICJwYWNrT3V0cHV0IiwgInBhY2tUYXJnZXQiLCAiY29kZSIsICJoYXNQYWNrYWdlU2NyaXB0IiwgInNjcmlwdE5hbWUiLCAiaGFzV29ya3NwYWNlU2NyaXB0IiwgInppcE9wZW5GcyIsICJwYWNrYWdlRnMiLCAiZXhlY3V0ZVBhY2thZ2VTY3JpcHQiLCAicmVhbEN3ZCIsICJpbml0aWFsaXplUGFja2FnZUVudmlyb25tZW50IiwgInNjcmlwdCIsICJyZWFsRXhlY3V0b3IiLCAiaG9va3MiLCAiZXhlY3V0ZVBhY2thZ2VTaGVsbGNvZGUiLCAiY29tbWFuZCIsICJpbml0aWFsaXplV29ya3NwYWNlRW52aXJvbm1lbnQiLCAiZ2V0V29ya3NwYWNlQWNjZXNzaWJsZUJpbmFyaWVzIiwgImJpbmFyeU5hbWUiLCAiYmluYXJ5UGF0aCIsICJnZXRQYWNrYWdlQWNjZXNzaWJsZUJpbmFyaWVzIiwgImV4ZWN1dGVXb3Jrc3BhY2VTY3JpcHQiLCAiZXhlY3V0ZVdvcmtzcGFjZUxpZmVjeWNsZVNjcmlwdCIsICJsaWZlY3ljbGVTY3JpcHROYW1lIiwgImhlYWRlciIsICJleGl0Q29kZSIsICJtYXliZUV4ZWN1dGVXb3Jrc3BhY2VMaWZlY3ljbGVTY3JpcHQiLCAib3B0cyIsICJiaW5hcmllcyIsICJ2aXNpYmxlTG9jYXRvcnMiLCAiZGVzY3JpcHRvciIsICJyZXNvbHV0aW9uIiwgImRlcGVuZGVuY2llc1dpdGhCaW5hcmllcyIsICJsb2NhdG9ySGFzaCIsICJkZXBlbmRlbmN5IiwgImVyciIsICJjYW5kaWRhdGUiLCAidGFyZ2V0IiwgImV4ZWN1dGVQYWNrYWdlQWNjZXNzaWJsZUJpbmFyeSIsICJub2RlQXJncyIsICJwYWNrYWdlQWNjZXNzaWJsZUJpbmFyaWVzIiwgImJpbmFyeSIsICJyZXN1bHQiLCAiZXhlY3V0ZVdvcmtzcGFjZUFjY2Vzc2libGVCaW5hcnkiLCAicmVxdWlyZV9oaWdoX2xldmVsX29wdCIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImFyZ21hcCIsICJvcHQiLCAiayIsICJzZXQiLCAia3YiLCAicmVxdWlyZV9taW5pcGFzcyIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgInByb2MiLCAiRUUiLCAiU3RyZWFtIiwgIlNEIiwgIkVPRiIsICJNQVlCRV9FTUlUX0VORCIsICJFTUlUVEVEX0VORCIsICJFTUlUVElOR19FTkQiLCAiRU1JVFRFRF9FUlJPUiIsICJDTE9TRUQiLCAiUkVBRCIsICJGTFVTSCIsICJGTFVTSENIVU5LIiwgIkVOQ09ESU5HIiwgIkRFQ09ERVIiLCAiRkxPV0lORyIsICJQQVVTRUQiLCAiUkVTVU1FIiwgIkJVRkZFUkxFTkdUSCIsICJCVUZGRVJQVVNIIiwgIkJVRkZFUlNISUZUIiwgIk9CSkVDVE1PREUiLCAiREVTVFJPWUVEIiwgIkVNSVREQVRBIiwgIkVNSVRFTkQiLCAiRU1JVEVORDIiLCAiQVNZTkMiLCAiZGVmZXIiLCAiZm4iLCAiZG9JdGVyIiwgIkFTWU5DSVRFUkFUT1IiLCAiSVRFUkFUT1IiLCAiaXNFbmRpc2giLCAiZXYiLCAiaXNBcnJheUJ1ZmZlciIsICJiIiwgImlzQXJyYXlCdWZmZXJWaWV3IiwgIlBpcGUiLCAic3JjIiwgImRlc3QiLCAib3B0cyIsICJQaXBlUHJveHlFcnJvcnMiLCAiZXIiLCAiTWluaXBhc3MiLCAib3B0aW9ucyIsICJlbmMiLCAiY2h1bmsiLCAib20iLCAiYSIsICJlbmNvZGluZyIsICJjYiIsICJmIiwgIm4iLCAicmV0IiwgIm5vRHJhaW4iLCAiZW5kZWQiLCAicCIsICJkYXRhIiwgImV4dHJhIiwgImJ1ZiIsICJjIiwgInJlc29sdmUiLCAicmVqZWN0IiwgInJlcyIsICJvbmVyciIsICJvbmRhdGEiLCAib25lbmQiLCAidmFsdWUiLCAib25kZXN0cm95IiwgInJlaiIsICJzIiwgInJlcXVpcmVfY29uc3RhbnRzIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAicmVhbFpsaWJDb25zdGFudHMiLCAicmVxdWlyZV9taW5pemxpYiIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAiYXNzZXJ0IiwgIkJ1ZmZlciIsICJyZWFsWmxpYiIsICJjb25zdGFudHMiLCAiTWluaXBhc3MiLCAiT3JpZ2luYWxCdWZmZXJDb25jYXQiLCAiX3N1cGVyV3JpdGUiLCAiWmxpYkVycm9yIiwgImVyciIsICJfb3B0cyIsICJfZmx1c2hGbGFnIiwgIl9maW5pc2hGbHVzaEZsYWciLCAiX2Z1bGxGbHVzaEZsYWciLCAiX2hhbmRsZSIsICJfb25FcnJvciIsICJfc2F3RXJyb3IiLCAiX2xldmVsIiwgIl9zdHJhdGVneSIsICJfZW5kZWQiLCAiX2RlZmF1bHRGdWxsRmx1c2giLCAiWmxpYkJhc2UiLCAib3B0cyIsICJtb2RlIiwgImVyIiwgImZsdXNoRmxhZyIsICJjaHVuayIsICJlbmNvZGluZyIsICJjYiIsICJuYXRpdmVIYW5kbGUiLCAib3JpZ2luYWxOYXRpdmVDbG9zZSIsICJvcmlnaW5hbENsb3NlIiwgImFyZ3MiLCAicmVzdWx0IiwgIndyaXRlUmV0dXJuIiwgImkiLCAiZGF0YSIsICJabGliIiwgImxldmVsIiwgInN0cmF0ZWd5IiwgIm9yaWdGbHVzaCIsICJEZWZsYXRlIiwgIkluZmxhdGUiLCAiX3BvcnRhYmxlIiwgIkd6aXAiLCAiR3VuemlwIiwgIkRlZmxhdGVSYXciLCAiSW5mbGF0ZVJhdyIsICJVbnppcCIsICJCcm90bGkiLCAiQnJvdGxpQ29tcHJlc3MiLCAiQnJvdGxpRGVjb21wcmVzcyIsICJyZXF1aXJlX25vcm1hbGl6ZV93aW5kb3dzX3BhdGgiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJwbGF0Zm9ybSIsICJwIiwgInJlcXVpcmVfcmVhZF9lbnRyeSIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgIk1pbmlQYXNzIiwgIm5vcm1QYXRoIiwgIlNMVVJQIiwgImhlYWRlciIsICJleCIsICJnZXgiLCAiZGF0YSIsICJ3cml0ZUxlbiIsICJiciIsICJnbG9iYWwiLCAiayIsICJyZXF1aXJlX3R5cGVzIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJrdiIsICJyZXF1aXJlX2xhcmdlX251bWJlcnMiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJlbmNvZGUiLCAibnVtIiwgImJ1ZiIsICJlbmNvZGVOZWdhdGl2ZSIsICJlbmNvZGVQb3NpdGl2ZSIsICJpIiwgImZsaXBwZWQiLCAiYnl0ZSIsICJvbmVzQ29tcCIsICJ0d29zQ29tcCIsICJwYXJzZSIsICJwcmUiLCAidmFsdWUiLCAicG9zIiwgInR3b3MiLCAibGVuIiwgInN1bSIsICJmIiwgInJlcXVpcmVfaGVhZGVyIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAidHlwZXMiLCAicGF0aE1vZHVsZSIsICJsYXJnZSIsICJTTFVSUCIsICJUWVBFIiwgIkhlYWRlciIsICJkYXRhIiwgIm9mZiIsICJleCIsICJnZXgiLCAiYnVmIiwgImRlY1N0cmluZyIsICJkZWNOdW1iZXIiLCAiZGVjRGF0ZSIsICJwcmVmaXgiLCAic3VtIiwgImkiLCAiZ2xvYmFsIiwgImsiLCAicHJlZml4U2l6ZSIsICJzcGxpdCIsICJzcGxpdFByZWZpeCIsICJwYXRoIiwgImVuY1N0cmluZyIsICJlbmNOdW1iZXIiLCAiZW5jRGF0ZSIsICJ0eXBlIiwgInAiLCAicHAiLCAicmV0IiwgInJvb3QiLCAic2l6ZSIsICJudW1Ub0RhdGUiLCAibnVtIiwgImRlY1NtYWxsTnVtYmVyIiwgIm5hbk51bGwiLCAidmFsdWUiLCAiTUFYTlVNIiwgIm51bWJlciIsICJlbmNTbWFsbE51bWJlciIsICJvY3RhbFN0cmluZyIsICJwYWRPY3RhbCIsICJzdHJpbmciLCAiZGF0ZSIsICJOVUxMUyIsICJyZXF1aXJlX3BheCIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgIkhlYWRlciIsICJwYXRoIiwgIlBheCIsICJvYmoiLCAiZ2xvYmFsIiwgImJvZHkiLCAiYm9keUxlbiIsICJidWZMZW4iLCAiYnVmIiwgImkiLCAiZmllbGQiLCAidiIsICJzIiwgImJ5dGVMZW4iLCAiZGlnaXRzIiwgInN0cmluZyIsICJleCIsICJnIiwgIm1lcmdlIiwgInBhcnNlS1YiLCAiYSIsICJiIiwgImsiLCAicGFyc2VLVkxpbmUiLCAic2V0IiwgImxpbmUiLCAibiIsICJrdiIsICJyZXF1aXJlX3N0cmlwX3RyYWlsaW5nX3NsYXNoZXMiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJzdHIiLCAiaSIsICJzbGFzaGVzU3RhcnQiLCAicmVxdWlyZV93YXJuX21peGluIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiQmFzZSIsICJjb2RlIiwgIm1lc3NhZ2UiLCAiZGF0YSIsICJyZXF1aXJlX3dpbmNoYXJzIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAicmF3IiwgIndpbiIsICJjaGFyIiwgInRvV2luIiwgImkiLCAidG9SYXciLCAicyIsICJjIiwgInJlcXVpcmVfc3RyaXBfYWJzb2x1dGVfcGF0aCIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImlzQWJzb2x1dGUiLCAicGFyc2UiLCAicGF0aCIsICJyIiwgInBhcnNlZCIsICJyb290IiwgInJlcXVpcmVfbW9kZV9maXgiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJtb2RlIiwgImlzRGlyIiwgInBvcnRhYmxlIiwgInJlcXVpcmVfd3JpdGVfZW50cnkiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJNaW5pUGFzcyIsICJQYXgiLCAiSGVhZGVyIiwgImZzIiwgInBhdGgiLCAibm9ybVBhdGgiLCAic3RyaXBTbGFzaCIsICJwcmVmaXhQYXRoIiwgInByZWZpeCIsICJtYXhSZWFkU2l6ZSIsICJQUk9DRVNTIiwgIkZJTEUiLCAiRElSRUNUT1JZIiwgIlNZTUxJTksiLCAiSEFSRExJTksiLCAiSEVBREVSIiwgIlJFQUQiLCAiTFNUQVQiLCAiT05MU1RBVCIsICJPTlJFQUQiLCAiT05SRUFETElOSyIsICJPUEVORklMRSIsICJPTk9QRU5GSUxFIiwgIkNMT1NFIiwgIk1PREUiLCAiQVdBSVREUkFJTiIsICJPTkRSQUlOIiwgIlBSRUZJWCIsICJIQURfRVJST1IiLCAid2FybmVyIiwgIndpbmNoYXJzIiwgInN0cmlwQWJzb2x1dGVQYXRoIiwgIm1vZGVGaXgiLCAiV3JpdGVFbnRyeSIsICJwIiwgIm9wdCIsICJwYXRoV2FybiIsICJyb290IiwgInN0cmlwcGVkIiwgImV2IiwgImRhdGEiLCAiZXIiLCAic3RhdCIsICJnZXRUeXBlIiwgIm1vZGUiLCAibGlua3BhdGgiLCAibGlua0tleSIsICJmZCIsICJidWZMZW4iLCAiYnVmIiwgIm9mZnNldCIsICJsZW5ndGgiLCAicG9zIiwgImJ5dGVzUmVhZCIsICJjYiIsICJ3cml0ZUJ1ZiIsICJXcml0ZUVudHJ5U3luYyIsICJ0aHJldyIsICJXcml0ZUVudHJ5VGFyIiwgInJlYWRFbnRyeSIsICJ3cml0ZUxlbiIsICJyZXF1aXJlX3BhY2siLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJQYWNrSm9iIiwgInBhdGgiLCAiYWJzb2x1dGUiLCAiTWluaVBhc3MiLCAiemxpYiIsICJSZWFkRW50cnkiLCAiV3JpdGVFbnRyeSIsICJXcml0ZUVudHJ5U3luYyIsICJXcml0ZUVudHJ5VGFyIiwgIllhbGxpc3QiLCAiRU9GIiwgIk9OU1RBVCIsICJFTkRFRCIsICJRVUVVRSIsICJDVVJSRU5UIiwgIlBST0NFU1MiLCAiUFJPQ0VTU0lORyIsICJQUk9DRVNTSk9CIiwgIkpPQlMiLCAiSk9CRE9ORSIsICJBRERGU0VOVFJZIiwgIkFERFRBUkVOVFJZIiwgIlNUQVQiLCAiUkVBRERJUiIsICJPTlJFQURESVIiLCAiUElQRSIsICJFTlRSWSIsICJFTlRSWU9QVCIsICJXUklURUVOVFJZQ0xBU1MiLCAiV1JJVEUiLCAiT05EUkFJTiIsICJmcyIsICJ3YXJuZXIiLCAibm9ybVBhdGgiLCAiUGFjayIsICJvcHQiLCAiY2h1bmsiLCAiXyIsICJwIiwgImpvYiIsICJzdGF0IiwgImVyIiwgImVudHJpZXMiLCAidyIsICJjb2RlIiwgIm1zZyIsICJkYXRhIiwgImVudHJ5IiwgImJhc2UiLCAic291cmNlIiwgInppcCIsICJQYWNrU3luYyIsICJyZXF1aXJlX2ZzX21pbmlwYXNzIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJNaW5pUGFzcyIsICJFRSIsICJmcyIsICJ3cml0ZXYiLCAiYmluZGluZyIsICJGU1JlcVdyYXAiLCAiZmQiLCAiaW92ZWMiLCAicG9zIiwgImNiIiwgImRvbmUiLCAiZXIiLCAiYnciLCAicmVxIiwgIl9hdXRvQ2xvc2UiLCAiX2Nsb3NlIiwgIl9lbmRlZCIsICJfZmQiLCAiX2ZpbmlzaGVkIiwgIl9mbGFncyIsICJfZmx1c2giLCAiX2hhbmRsZUNodW5rIiwgIl9tYWtlQnVmIiwgIl9tb2RlIiwgIl9uZWVkRHJhaW4iLCAiX29uZXJyb3IiLCAiX29ub3BlbiIsICJfb25yZWFkIiwgIl9vbndyaXRlIiwgIl9vcGVuIiwgIl9wYXRoIiwgIl9wb3MiLCAiX3F1ZXVlIiwgIl9yZWFkIiwgIl9yZWFkU2l6ZSIsICJfcmVhZGluZyIsICJfcmVtYWluIiwgIl9zaXplIiwgIl93cml0ZSIsICJfd3JpdGluZyIsICJfZGVmYXVsdEZsYWciLCAiX2Vycm9yZWQiLCAiUmVhZFN0cmVhbSIsICJwYXRoIiwgIm9wdCIsICJidWYiLCAiYnIiLCAicmV0IiwgImV2IiwgImRhdGEiLCAiUmVhZFN0cmVhbVN5bmMiLCAidGhyZXciLCAiV3JpdGVTdHJlYW0iLCAiZGVmYXVsdEZsYWciLCAiZW5jIiwgIldyaXRlU3RyZWFtU3luYyIsICJyZXF1aXJlX3BhcnNlIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAid2FybmVyIiwgIkhlYWRlciIsICJFRSIsICJZYWxsaXN0IiwgIm1heE1ldGFFbnRyeVNpemUiLCAiRW50cnkiLCAiUGF4IiwgInpsaWIiLCAibmV4dFRpY2siLCAiZ3ppcEhlYWRlciIsICJTVEFURSIsICJXUklURUVOVFJZIiwgIlJFQURFTlRSWSIsICJORVhURU5UUlkiLCAiUFJPQ0VTU0VOVFJZIiwgIkVYIiwgIkdFWCIsICJNRVRBIiwgIkVNSVRNRVRBIiwgIkJVRkZFUiIsICJRVUVVRSIsICJFTkRFRCIsICJFTUlUVEVERU5EIiwgIkVNSVQiLCAiVU5aSVAiLCAiQ09OU1VNRUNIVU5LIiwgIkNPTlNVTUVDSFVOS1NVQiIsICJDT05TVU1FQk9EWSIsICJDT05TVU1FTUVUQSIsICJDT05TVU1FSEVBREVSIiwgIkNPTlNVTUlORyIsICJCVUZGRVJDT05DQVQiLCAiTUFZQkVFTkQiLCAiV1JJVElORyIsICJBQk9SVEVEIiwgIkRPTkUiLCAiU0FXX1ZBTElEX0VOVFJZIiwgIlNBV19OVUxMX0JMT0NLIiwgIlNBV19FT0YiLCAiQ0xPU0VTVFJFQU0iLCAibm9vcCIsICJfIiwgIm9wdCIsICJjaHVuayIsICJwb3NpdGlvbiIsICJoZWFkZXIiLCAiZXIiLCAidHlwZSIsICJlbnRyeSIsICJvbmVuZCIsICJjIiwgImdvIiwgInJlIiwgImJyIiwgInJldCIsICJldiIsICJkYXRhIiwgImV4dHJhIiwgImVycm9yIiwgImkiLCAiZW5kZWQiLCAiaGF2ZSIsICJsZW5ndGgiLCAicmVxdWlyZV9saXN0IiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiaGxvIiwgIlBhcnNlciIsICJmcyIsICJmc20iLCAicGF0aCIsICJzdHJpcFNsYXNoIiwgIm9wdF8iLCAiZmlsZXMiLCAiY2IiLCAib3B0IiwgImZpbGVzRmlsdGVyIiwgIm9uZW50cnlGdW5jdGlvbiIsICJsaXN0RmlsZVN5bmMiLCAibGlzdEZpbGUiLCAibGlzdCIsICJvbmVudHJ5IiwgImUiLCAibWFwIiwgImYiLCAiZmlsdGVyIiwgIm1hcEhhcyIsICJmaWxlIiwgInIiLCAicm9vdCIsICJyZXQiLCAiZW50cnkiLCAicCIsICJ0aHJldyIsICJmZCIsICJzdGF0IiwgInJlYWRTaXplIiwgInBvcyIsICJidWYiLCAiYnl0ZXNSZWFkIiwgInBhcnNlIiwgInJlc29sdmUiLCAicmVqZWN0IiwgImVyIiwgInN0cmVhbSIsICJyZXF1aXJlX2NyZWF0ZSIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImhsbyIsICJQYWNrIiwgImZzbSIsICJ0IiwgInBhdGgiLCAib3B0XyIsICJmaWxlcyIsICJjYiIsICJvcHQiLCAiY3JlYXRlRmlsZVN5bmMiLCAiY3JlYXRlRmlsZSIsICJjcmVhdGVTeW5jIiwgImNyZWF0ZSIsICJwIiwgInN0cmVhbSIsICJhZGRGaWxlc1N5bmMiLCAicHJvbWlzZSIsICJyZXMiLCAicmVqIiwgImFkZEZpbGVzQXN5bmMiLCAiZmlsZSIsICJlbnRyeSIsICJfIiwgInJlcXVpcmVfcmVwbGFjZSIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImhsbyIsICJQYWNrIiwgImZzIiwgImZzbSIsICJ0IiwgInBhdGgiLCAiSGVhZGVyIiwgIm9wdF8iLCAiZmlsZXMiLCAiY2IiLCAib3B0IiwgInJlcGxhY2VTeW5jIiwgInJlcGxhY2UiLCAicCIsICJ0aHJldyIsICJmZCIsICJwb3NpdGlvbiIsICJlciIsICJzdCIsICJoZWFkQnVmIiwgIlBPU0lUSU9OIiwgImJ1ZlBvcyIsICJieXRlcyIsICJoIiwgImVudHJ5QmxvY2tTaXplIiwgInN0cmVhbVN5bmMiLCAic3RyZWFtIiwgImFkZEZpbGVzU3luYyIsICJnZXRQb3MiLCAic2l6ZSIsICJjYl8iLCAicG9zIiwgIl8iLCAib25yZWFkIiwgInByb21pc2UiLCAicmVzb2x2ZSIsICJyZWplY3QiLCAiZmxhZyIsICJvbm9wZW4iLCAiYWRkRmlsZXNBc3luYyIsICJmaWxlIiwgImVudHJ5IiwgInJlcXVpcmVfdXBkYXRlIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiaGxvIiwgInIiLCAib3B0XyIsICJmaWxlcyIsICJjYiIsICJvcHQiLCAibXRpbWVGaWx0ZXIiLCAiZmlsdGVyIiwgInBhdGgiLCAic3RhdCIsICJyZXF1aXJlX29wdHNfYXJnIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAicHJvbWlzaWZ5IiwgImZzIiwgIm9wdHNBcmciLCAib3B0cyIsICJyZXF1aXJlX3BhdGhfYXJnIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAicGxhdGZvcm0iLCAicmVzb2x2ZSIsICJwYXJzZSIsICJwYXRoQXJnIiwgInBhdGgiLCAiYmFkV2luQ2hhcnMiLCAicm9vdCIsICJyZXF1aXJlX2ZpbmRfbWFkZSIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImRpcm5hbWUiLCAiZmluZE1hZGUiLCAib3B0cyIsICJwYXJlbnQiLCAicGF0aCIsICJzdCIsICJlciIsICJmaW5kTWFkZVN5bmMiLCAicmVxdWlyZV9ta2RpcnBfbWFudWFsIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZGlybmFtZSIsICJta2RpcnBNYW51YWwiLCAicGF0aCIsICJvcHRzIiwgIm1hZGUiLCAicGFyZW50IiwgImVyIiwgInN0IiwgIm1rZGlycE1hbnVhbFN5bmMiLCAicmVxdWlyZV9ta2RpcnBfbmF0aXZlIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZGlybmFtZSIsICJmaW5kTWFkZSIsICJmaW5kTWFkZVN5bmMiLCAibWtkaXJwTWFudWFsIiwgIm1rZGlycE1hbnVhbFN5bmMiLCAibWtkaXJwTmF0aXZlIiwgInBhdGgiLCAib3B0cyIsICJtYWRlIiwgImVyIiwgIm1rZGlycE5hdGl2ZVN5bmMiLCAicmVxdWlyZV91c2VfbmF0aXZlIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZnMiLCAidmVyc2lvbiIsICJ2ZXJzQXJyIiwgImhhc05hdGl2ZSIsICJ1c2VOYXRpdmUiLCAib3B0cyIsICJ1c2VOYXRpdmVTeW5jIiwgInJlcXVpcmVfbWtkaXJwIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAib3B0c0FyZyIsICJwYXRoQXJnIiwgIm1rZGlycE5hdGl2ZSIsICJta2RpcnBOYXRpdmVTeW5jIiwgIm1rZGlycE1hbnVhbCIsICJta2RpcnBNYW51YWxTeW5jIiwgInVzZU5hdGl2ZSIsICJ1c2VOYXRpdmVTeW5jIiwgIm1rZGlycCIsICJwYXRoIiwgIm9wdHMiLCAibWtkaXJwU3luYyIsICJyZXF1aXJlX2Nob3duciIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImZzIiwgInBhdGgiLCAiTENIT1dOIiwgIkxDSE9XTlNZTkMiLCAibmVlZEVJU0RJUkhhbmRsZWQiLCAibGNob3duU3luYyIsICJ1aWQiLCAiZ2lkIiwgImVyIiwgImNob3duU3luYyIsICJoYW5kbGVFSVNESVIiLCAiY2IiLCAiXyIsICJfXyIsICJfX18iLCAiaGFuZGxlRUlTRGlyU3luYyIsICJub2RlVmVyc2lvbiIsICJyZWFkZGlyIiwgIm9wdGlvbnMiLCAicmVhZGRpclN5bmMiLCAiY2hvd24iLCAiY3BhdGgiLCAiY2hvd25yS2lkIiwgInAiLCAiY2hpbGQiLCAic3RhdHMiLCAiY2hvd25yIiwgImNoaWxkcmVuIiwgImxlbiIsICJlcnJTdGF0ZSIsICJ0aGVuIiwgImNob3ducktpZFN5bmMiLCAiY2hvd25yU3luYyIsICJyZXF1aXJlX21rZGlyIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAibWtkaXJwIiwgImZzIiwgInBhdGgiLCAiY2hvd25yIiwgIm5vcm1QYXRoIiwgIlN5bWxpbmtFcnJvciIsICJzeW1saW5rIiwgIkN3ZEVycm9yIiwgImNvZGUiLCAiY0dldCIsICJjYWNoZSIsICJrZXkiLCAiY1NldCIsICJ2YWwiLCAiY2hlY2tDd2QiLCAiZGlyIiwgImNiIiwgImVyIiwgInN0IiwgIm9wdCIsICJ1bWFzayIsICJtb2RlIiwgIm5lZWRDaG1vZCIsICJ1aWQiLCAiZ2lkIiwgImRvQ2hvd24iLCAicHJlc2VydmUiLCAidW5saW5rIiwgImN3ZCIsICJkb25lIiwgImNyZWF0ZWQiLCAibWFkZSIsICJwYXJ0cyIsICJta2Rpcl8iLCAiYmFzZSIsICJwIiwgInBhcnQiLCAib25ta2RpciIsICJzdGF0RXIiLCAiY2hlY2tDd2RTeW5jIiwgIm9rIiwgInJlcXVpcmVfbm9ybWFsaXplX3VuaWNvZGUiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJub3JtYWxpemVDYWNoZSIsICJoYXNPd25Qcm9wZXJ0eSIsICJzIiwgInJlcXVpcmVfcGF0aF9yZXNlcnZhdGlvbnMiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJhc3NlcnQiLCAibm9ybWFsaXplIiwgInN0cmlwU2xhc2hlcyIsICJqb2luIiwgInBsYXRmb3JtIiwgImlzV2luZG93cyIsICJxdWV1ZXMiLCAicmVzZXJ2YXRpb25zIiwgImdldERpcnMiLCAicGF0aCIsICJzZXQiLCAicnVubmluZyIsICJnZXRRdWV1ZXMiLCAiZm4iLCAicmVzIiwgImNoZWNrIiwgInBhdGhzIiwgImRpcnMiLCAicSIsICJydW4iLCAiY2xlYXIiLCAibmV4dCIsICJkaXIiLCAicCIsICJhIiwgImIiLCAicmVxdWlyZV9nZXRfd3JpdGVfZmxhZyIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgInBsYXRmb3JtIiwgImlzV2luZG93cyIsICJmcyIsICJPX0NSRUFUIiwgIk9fVFJVTkMiLCAiT19XUk9OTFkiLCAiVVZfRlNfT19GSUxFTUFQIiwgImZNYXBFbmFibGVkIiwgImZNYXBMaW1pdCIsICJmTWFwRmxhZyIsICJzaXplIiwgInJlcXVpcmVfdW5wYWNrIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiYXNzZXJ0IiwgIlBhcnNlciIsICJmcyIsICJmc20iLCAicGF0aCIsICJta2RpciIsICJ3YyIsICJwYXRoUmVzZXJ2YXRpb25zIiwgInN0cmlwQWJzb2x1dGVQYXRoIiwgIm5vcm1QYXRoIiwgInN0cmlwU2xhc2giLCAibm9ybWFsaXplIiwgIk9ORU5UUlkiLCAiQ0hFQ0tGUyIsICJDSEVDS0ZTMiIsICJQUlVORUNBQ0hFIiwgIklTUkVVU0FCTEUiLCAiTUFLRUZTIiwgIkZJTEUiLCAiRElSRUNUT1JZIiwgIkxJTksiLCAiU1lNTElOSyIsICJIQVJETElOSyIsICJVTlNVUFBPUlRFRCIsICJDSEVDS1BBVEgiLCAiTUtESVIiLCAiT05FUlJPUiIsICJQRU5ESU5HIiwgIlBFTkQiLCAiVU5QRU5EIiwgIkVOREVEIiwgIk1BWUJFQ0xPU0UiLCAiU0tJUCIsICJET0NIT1dOIiwgIlVJRCIsICJHSUQiLCAiQ0hFQ0tFRF9DV0QiLCAiY3J5cHRvIiwgImdldEZsYWciLCAicGxhdGZvcm0iLCAiaXNXaW5kb3dzIiwgInVubGlua0ZpbGUiLCAiY2IiLCAibmFtZSIsICJlciIsICJ1bmxpbmtGaWxlU3luYyIsICJ1aW50MzIiLCAiYSIsICJiIiwgImMiLCAiY2FjaGVLZXlOb3JtYWxpemUiLCAicHJ1bmVDYWNoZSIsICJjYWNoZSIsICJhYnMiLCAicG5vcm0iLCAiZHJvcENhY2hlIiwgImtleSIsICJVbnBhY2siLCAib3B0IiwgIl8iLCAiZW50cnkiLCAiY29kZSIsICJtc2ciLCAiZGF0YSIsICJwYXJ0cyIsICJsaW5rcGFydHMiLCAicCIsICJyb290IiwgInN0cmlwcGVkIiwgImFSb290IiwgInBSb290IiwgImRpciIsICJtb2RlIiwgImZ1bGx5RG9uZSIsICJzdHJlYW0iLCAiYWN0aW9ucyIsICJkb25lIiwgImZkIiwgImF0aW1lIiwgIm10aW1lIiwgImVyMiIsICJ1aWQiLCAiZ2lkIiwgInR4IiwgImxpbmtwYXRoIiwgInN0IiwgInBhdGhzIiwgImNoZWNrQ3dkIiwgInN0YXJ0IiwgInBhcmVudCIsICJhZnRlck1ha2VQYXJlbnQiLCAibHN0YXRFciIsICJuZWVkQ2htb2QiLCAiYWZ0ZXJDaG1vZCIsICJsaW5rIiwgImNhbGxTeW5jIiwgImZuIiwgIlVucGFja1N5bmMiLCAibWtQYXJlbnQiLCAib25lciIsICJjbG9zZUVycm9yIiwgImUiLCAiY2h1bmsiLCAiZnV0aW1lc2VyIiwgImZjaG93bmVyIiwgInJlcXVpcmVfZXh0cmFjdCIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImhsbyIsICJVbnBhY2siLCAiZnMiLCAiZnNtIiwgInBhdGgiLCAic3RyaXBTbGFzaCIsICJvcHRfIiwgImZpbGVzIiwgImNiIiwgIm9wdCIsICJmaWxlc0ZpbHRlciIsICJleHRyYWN0RmlsZVN5bmMiLCAiZXh0cmFjdEZpbGUiLCAiZXh0cmFjdFN5bmMiLCAiZXh0cmFjdCIsICJtYXAiLCAiZiIsICJmaWx0ZXIiLCAibWFwSGFzIiwgImZpbGUiLCAiciIsICJyb290IiwgInJldCIsICJlbnRyeSIsICJ1IiwgInN0YXQiLCAicmVhZFNpemUiLCAicCIsICJyZXNvbHZlIiwgInJlamVjdCIsICJlciIsICJzdHJlYW0iLCAicmVxdWlyZV90YXIiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgInJlcXVpcmVfV29ya2VyUG9vbCIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAidHNsaWJfMSIsICJvc18xIiwgInBfbGltaXRfMSIsICJ3b3JrZXJfdGhyZWFkc18xIiwgImtUYXNrSW5mbyIsICJXb3JrZXJQb29sIiwgInNvdXJjZSIsICJ3b3JrZXIiLCAicmVzdWx0IiwgImVyciIsICJfYSIsICJjb2RlIiwgImRhdGEiLCAicmVzb2x2ZSIsICJyZWplY3QiLCAicmVxdWlyZV93b3JrZXJfemlwIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiaG9vayIsICJyZXF1aXJlX3RnelV0aWxzIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJ0c2xpYl8xIiwgImZzbGliXzEiLCAibGliemlwXzEiLCAic3RyZWFtXzEiLCAidGFyXzEiLCAiV29ya2VyUG9vbF8xIiwgIm1pc2NVdGlscyIsICJ3b3JrZXJfemlwXzEiLCAibWFrZUFyY2hpdmVGcm9tRGlyZWN0b3J5IiwgInNvdXJjZSIsICJiYXNlRnMiLCAicHJlZml4UGF0aCIsICJjb21wcmVzc2lvbkxldmVsIiwgImluTWVtb3J5IiwgInppcEZzIiwgInRtcEZvbGRlciIsICJ0bXBGaWxlIiwgInRhcmdldCIsICJ3b3JrZXJQb29sIiwgImNvbnZlcnRUb1ppcCIsICJ0Z3oiLCAib3B0cyIsICJwYXJzZVRhciIsICJwYXJzZXIiLCAicGFzc3Rocm91Z2giLCAiZW50cnkiLCAiZXJyb3IiLCAiaXQiLCAiZXh0cmFjdEFyY2hpdmVUbyIsICJ0YXJnZXRGcyIsICJzdHJpcENvbXBvbmVudHMiLCAiX2EiLCAiaWdub3JlIiwgInBhcnRzIiwgInBhcnQiLCAic2xpY2VQYXRoIiwgIm1hcHBlZFBhdGgiLCAibW9kZSIsICJyZXF1aXJlX3RyZWVpZnkiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJyb290IiwgImZhY3RvcnkiLCAibWFrZVByZWZpeCIsICJrZXkiLCAibGFzdCIsICJzdHIiLCAiZmlsdGVyS2V5cyIsICJvYmoiLCAiaGlkZUZ1bmN0aW9ucyIsICJrZXlzIiwgImJyYW5jaCIsICJncm93QnJhbmNoIiwgImxhc3RTdGF0ZXMiLCAic2hvd1ZhbHVlcyIsICJjYWxsYmFjayIsICJsaW5lIiwgImluZGV4IiwgImxhc3RLZXkiLCAiY2lyY3VsYXIiLCAibGFzdFN0YXRlc0NvcHkiLCAibGFzdFN0YXRlIiwgImlkeCIsICJUcmVlaWZ5IiwgImxpbmVDYWxsYmFjayIsICJoaWRlRnVuY3Rpb25zQXJnIiwgInRyZWUiLCAicmVxdWlyZV90cmVlVXRpbHMiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgInRzbGliXzEiLCAidHJlZWlmeV8xIiwgImZvcm1hdFV0aWxzIiwgInRyZWVOb2RlVG9UcmVlaWZ5IiwgInByaW50VHJlZSIsICJjb25maWd1cmF0aW9uIiwgInRhcmdldCIsICJjb3B5VHJlZSIsICJwcmludE5vZGUiLCAidGFyZ2V0Tm9kZSIsICJpdGVyYXRvciIsICJrZXkiLCAibGFiZWwiLCAidmFsdWUiLCAiY2hpbGRyZW4iLCAiZmluYWxQYXJ0cyIsICJmaW5hbExhYmVsIiwgImNyZWF0ZWROb2RlIiwgInRyZWVOb2RlVG9Kc29uIiwgIl9hIiwgInRhcmdldENoaWxkcmVuIiwgImNoaWxkIiwgImVtaXRMaXN0IiwgInZhbHVlcyIsICJzdGRvdXQiLCAianNvbiIsICJlbWl0VHJlZSIsICJ0cmVlIiwgInNlcGFyYXRvcnMiLCAidHJlZU91dHB1dCIsICJ0IiwgInJlcXVpcmVfQ2FjaGUiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgInRzbGliXzEiLCAiZnNsaWJfMSIsICJmc2xpYl8yIiwgImxpYnppcF8xIiwgImNyeXB0b18xIiwgImZzXzEiLCAiTWVzc2FnZU5hbWVfMSIsICJSZXBvcnRfMSIsICJoYXNoVXRpbHMiLCAibWlzY1V0aWxzIiwgInN0cnVjdFV0aWxzIiwgIkNBQ0hFX1ZFUlNJT04iLCAiQ2FjaGUiLCAiY29uZmlndXJhdGlvbiIsICJpbW11dGFibGUiLCAiY2hlY2siLCAiY2FjaGUiLCAiY2FjaGVDd2QiLCAiY2FjaGVLZXlPdmVycmlkZSIsICJjb21wcmVzc2lvbkxldmVsIiwgImNvbXByZXNzaW9uS2V5IiwgIm1pcnJvckN3ZCIsICJsb2NhdG9yIiwgImNoZWNrc3VtIiwgInNpZ25pZmljYW50Q2hlY2tzdW0iLCAiZ2V0SGFzaENvbXBvbmVudCIsICJleHBlY3RlZENoZWNrc3VtIiwgIm9wdHMiLCAiX2EiLCAiZ2V0Q2FjaGVLZXlDb21wb25lbnQiLCAiZ2l0aWdub3JlUGF0aCIsICJvbkhpdCIsICJvbk1pc3MiLCAibG9hZGVyIiwgIm1pcnJvclBhdGgiLCAiYmFzZUZzIiwgIm1ha2VNb2NrUGFja2FnZSIsICJ6aXBGcyIsICJyb290UGFja2FnZURpciIsICJ2YWxpZGF0ZUZpbGUiLCAicGF0aCIsICJyZWZldGNoUGF0aCIsICJhY3R1YWxDaGVja3N1bSIsICJwcmV2aW91c0NoZWNrc3VtIiwgImNoZWNrc3VtQmVoYXZpb3IiLCAidmFsaWRhdGVGaWxlQWdhaW5zdFJlbW90ZSIsICJjYWNoZVBhdGgiLCAicmVzdWx0IiwgImxvYWRQYWNrYWdlVGhyb3VnaE1pcnJvciIsICJyZWFsUGF0aCIsICJsb2FkUGFja2FnZSIsICJwYWNrYWdlUGF0aCIsICJwYWNrYWdlU291cmNlIiwgImNvcHlQcm9jZXNzIiwgIm1pcnJvclBhdGhUZW1wIiwgImNhY2hlUGF0aFRlbXAiLCAiZmluYWxQYXRoIiwgImNvcHkiLCAibG9hZFBhY2thZ2VUaHJvdWdoTXV0ZXgiLCAibXV0ZXgiLCAidGVudGF0aXZlQ2FjaGVQYXRoIiwgImNhY2hlRmlsZUV4aXN0cyIsICJzaG91bGRNb2NrIiwgImlzQ2FjaGVIaXQiLCAiYWN0aW9uIiwgIm1heWJlQ2hlY2tzdW0iLCAiemlwRnNCdWlsZGVyIiwgImxhenlGcyIsICJtZXNzYWdlIiwgImFsaWFzRnMiLCAicmVsZWFzZUZzIiwgImV4cG9zZWRDaGVja3N1bSIsICJzcGxpdCIsICJyZXF1aXJlX0luc3RhbGxlciIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAiQnVpbGRUeXBlIiwgInJlcXVpcmVfTGVnYWN5TWlncmF0aW9uUmVzb2x2ZXIiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgInRzbGliXzEiLCAiZnNsaWJfMSIsICJwYXJzZXJzXzEiLCAiTWVzc2FnZU5hbWVfMSIsICJzZW12ZXJVdGlscyIsICJzdHJ1Y3RVdGlscyIsICJ2ZXJzaW9uIiwgIiQwIiwgIiQxIiwgIiQyIiwgIiQzIiwgIkxlZ2FjeU1pZ3JhdGlvblJlc29sdmVyIiwgInJlc29sdmVyIiwgInByb2plY3QiLCAicmVwb3J0IiwgImxvY2tmaWxlUGF0aCIsICJjb250ZW50IiwgInBhcnNlZCIsICJyZXNvbHV0aW9ucyIsICJrZXkiLCAicGFyc2VkRGVzY3JpcHRvciIsICJkZXNjcmlwdG9yIiwgInJlc29sdmVkIiwgInJlZmVyZW5jZSIsICJwYXR0ZXJuIiwgIm1hdGNoZXIiLCAibWF0Y2giLCAiYWN0dWFsRGVzY3JpcHRvciIsICJwYXJzZWRSYW5nZSIsICJwb3RlbnRpYWxEZXNjcmlwdG9yIiwgIm9wdHMiLCAibG9jYXRvciIsICJmcm9tTG9jYXRvciIsICJkZXBlbmRlbmNpZXMiLCAicmVzb2x1dGlvbiIsICJpbXBvcnRlZERlc2NyaXB0b3IiLCAibm9ybWFsaXplZERlc2NyaXB0b3IiLCAibG9jYXRvcnMiLCAiY2FuZGlkYXRlIiwgInJlcXVpcmVfTGlnaHRSZXBvcnQiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgInRzbGliXzEiLCAiUmVwb3J0XzEiLCAiU3RyZWFtUmVwb3J0XzEiLCAiZm9ybWF0VXRpbHMiLCAiTGlnaHRSZXBvcnQiLCAib3B0cyIsICJjYiIsICJyZXBvcnQiLCAiZXJyb3IiLCAiY29uZmlndXJhdGlvbiIsICJzdGRvdXQiLCAic3VnZ2VzdEluc3RhbGwiLCAibG9jYXRvciIsICJ3aGF0IiwgIm5hbWUiLCAidGV4dCIsICJwcm9ncmVzcyIsICJkYXRhIiwgInJlcXVpcmVfTG9ja2ZpbGVSZXNvbHZlciIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAidHNsaWJfMSIsICJzdHJ1Y3RVdGlscyIsICJMb2NrZmlsZVJlc29sdmVyIiwgInJlc29sdmVyIiwgImRlc2NyaXB0b3IiLCAib3B0cyIsICJsb2NhdG9yIiwgImZyb21Mb2NhdG9yIiwgImRlcGVuZGVuY2llcyIsICJyZXNvbHV0aW9uIiwgInJlc29sdmVkUGtnIiwgIm9yaWdpbmFsUGtnIiwgImxvY2F0b3JzIiwgImNhbmRpZGF0ZSIsICJwa2ciLCAiRGlmZiIsICJwcm90b3R5cGUiLCAiZGlmZiIsICJvbGRTdHJpbmciLCAibmV3U3RyaW5nIiwgIm9wdGlvbnMiLCAiY2FsbGJhY2siLCAic2VsZiIsICJkb25lIiwgInZhbHVlIiwgInNldFRpbWVvdXQiLCAidW5kZWZpbmVkIiwgImNhc3RJbnB1dCIsICJyZW1vdmVFbXB0eSIsICJ0b2tlbml6ZSIsICJuZXdMZW4iLCAibGVuZ3RoIiwgIm9sZExlbiIsICJlZGl0TGVuZ3RoIiwgIm1heEVkaXRMZW5ndGgiLCAiTWF0aCIsICJtaW4iLCAiYmVzdFBhdGgiLCAibmV3UG9zIiwgImNvbXBvbmVudHMiLCAib2xkUG9zIiwgImV4dHJhY3RDb21tb24iLCAiam9pbiIsICJjb3VudCIsICJleGVjRWRpdExlbmd0aCIsICJkaWFnb25hbFBhdGgiLCAiYmFzZVBhdGgiLCAiYWRkUGF0aCIsICJyZW1vdmVQYXRoIiwgImNhbkFkZCIsICJjYW5SZW1vdmUiLCAiY2xvbmVQYXRoIiwgInB1c2hDb21wb25lbnQiLCAiYnVpbGRWYWx1ZXMiLCAidXNlTG9uZ2VzdFRva2VuIiwgImV4ZWMiLCAicmV0IiwgImFkZGVkIiwgInJlbW92ZWQiLCAibGFzdCIsICJwdXNoIiwgImNvbW1vbkNvdW50IiwgImVxdWFscyIsICJsZWZ0IiwgInJpZ2h0IiwgImNvbXBhcmF0b3IiLCAiaWdub3JlQ2FzZSIsICJ0b0xvd2VyQ2FzZSIsICJhcnJheSIsICJpIiwgInNwbGl0IiwgImNoYXJzIiwgImNvbXBvbmVudFBvcyIsICJjb21wb25lbnRMZW4iLCAiY29tcG9uZW50IiwgInNsaWNlIiwgInRtcCIsICJtYXAiLCAib2xkVmFsdWUiLCAibGFzdENvbXBvbmVudCIsICJwb3AiLCAicGF0aCIsICJfYmFzZSIsICJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwgImNoYXJhY3RlckRpZmYiLCAiRGlmZiIsICJkaWZmQ2hhcnMiLCAib2xkU3RyIiwgIm5ld1N0ciIsICJvcHRpb25zIiwgImRpZmYiLCAiZ2VuZXJhdGVPcHRpb25zIiwgIm9wdGlvbnMiLCAiZGVmYXVsdHMiLCAiY2FsbGJhY2siLCAibmFtZSIsICJoYXNPd25Qcm9wZXJ0eSIsICJfYmFzZSIsICJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwgIl9wYXJhbXMiLCAiZXh0ZW5kZWRXb3JkQ2hhcnMiLCAicmVXaGl0ZXNwYWNlIiwgIndvcmREaWZmIiwgIkRpZmYiLCAiZXF1YWxzIiwgImxlZnQiLCAicmlnaHQiLCAib3B0aW9ucyIsICJpZ25vcmVDYXNlIiwgInRvTG93ZXJDYXNlIiwgImlnbm9yZVdoaXRlc3BhY2UiLCAidGVzdCIsICJ0b2tlbml6ZSIsICJ2YWx1ZSIsICJ0b2tlbnMiLCAic3BsaXQiLCAiaSIsICJsZW5ndGgiLCAic3BsaWNlIiwgImRpZmZXb3JkcyIsICJvbGRTdHIiLCAibmV3U3RyIiwgImdlbmVyYXRlT3B0aW9ucyIsICJkaWZmIiwgImRpZmZXb3Jkc1dpdGhTcGFjZSIsICJfYmFzZSIsICJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwgIl9wYXJhbXMiLCAibGluZURpZmYiLCAiRGlmZiIsICJ0b2tlbml6ZSIsICJ2YWx1ZSIsICJyZXRMaW5lcyIsICJsaW5lc0FuZE5ld2xpbmVzIiwgInNwbGl0IiwgImxlbmd0aCIsICJwb3AiLCAiaSIsICJsaW5lIiwgIm9wdGlvbnMiLCAibmV3bGluZUlzVG9rZW4iLCAiaWdub3JlV2hpdGVzcGFjZSIsICJ0cmltIiwgInB1c2giLCAiZGlmZkxpbmVzIiwgIm9sZFN0ciIsICJuZXdTdHIiLCAiY2FsbGJhY2siLCAiZGlmZiIsICJkaWZmVHJpbW1lZExpbmVzIiwgImdlbmVyYXRlT3B0aW9ucyIsICJfYmFzZSIsICJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwgInNlbnRlbmNlRGlmZiIsICJEaWZmIiwgInRva2VuaXplIiwgInZhbHVlIiwgInNwbGl0IiwgImRpZmZTZW50ZW5jZXMiLCAib2xkU3RyIiwgIm5ld1N0ciIsICJjYWxsYmFjayIsICJkaWZmIiwgIl9iYXNlIiwgIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCAiY3NzRGlmZiIsICJEaWZmIiwgInRva2VuaXplIiwgInZhbHVlIiwgInNwbGl0IiwgImRpZmZDc3MiLCAib2xkU3RyIiwgIm5ld1N0ciIsICJjYWxsYmFjayIsICJkaWZmIiwgIl9iYXNlIiwgIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCAiX2xpbmUiLCAib2JqZWN0UHJvdG90eXBlVG9TdHJpbmciLCAiT2JqZWN0IiwgInByb3RvdHlwZSIsICJ0b1N0cmluZyIsICJqc29uRGlmZiIsICJEaWZmIiwgInVzZUxvbmdlc3RUb2tlbiIsICJ0b2tlbml6ZSIsICJsaW5lRGlmZiIsICJjYXN0SW5wdXQiLCAidmFsdWUiLCAiX3RoaXMkb3B0aW9ucyIsICJvcHRpb25zIiwgInVuZGVmaW5lZFJlcGxhY2VtZW50IiwgIl90aGlzJG9wdGlvbnMkc3RyaW5naSIsICJzdHJpbmdpZnlSZXBsYWNlciIsICJrIiwgInYiLCAiSlNPTiIsICJzdHJpbmdpZnkiLCAiY2Fub25pY2FsaXplIiwgImVxdWFscyIsICJsZWZ0IiwgInJpZ2h0IiwgImNhbGwiLCAicmVwbGFjZSIsICJkaWZmSnNvbiIsICJvbGRPYmoiLCAibmV3T2JqIiwgImRpZmYiLCAib2JqIiwgInN0YWNrIiwgInJlcGxhY2VtZW50U3RhY2siLCAicmVwbGFjZXIiLCAia2V5IiwgImkiLCAibGVuZ3RoIiwgImNhbm9uaWNhbGl6ZWRPYmoiLCAicHVzaCIsICJBcnJheSIsICJwb3AiLCAidG9KU09OIiwgIl90eXBlb2YiLCAic29ydGVkS2V5cyIsICJoYXNPd25Qcm9wZXJ0eSIsICJzb3J0IiwgIl9iYXNlIiwgIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCAiYXJyYXlEaWZmIiwgIkRpZmYiLCAidG9rZW5pemUiLCAidmFsdWUiLCAic2xpY2UiLCAiam9pbiIsICJyZW1vdmVFbXB0eSIsICJkaWZmQXJyYXlzIiwgIm9sZEFyciIsICJuZXdBcnIiLCAiY2FsbGJhY2siLCAiZGlmZiIsICJwYXJzZVBhdGNoIiwgInVuaURpZmYiLCAib3B0aW9ucyIsICJkaWZmc3RyIiwgInNwbGl0IiwgImRlbGltaXRlcnMiLCAibWF0Y2giLCAibGlzdCIsICJpIiwgInBhcnNlSW5kZXgiLCAiaW5kZXgiLCAicHVzaCIsICJsZW5ndGgiLCAibGluZSIsICJ0ZXN0IiwgImhlYWRlciIsICJleGVjIiwgInBhcnNlRmlsZUhlYWRlciIsICJodW5rcyIsICJwYXJzZUh1bmsiLCAic3RyaWN0IiwgIkVycm9yIiwgIkpTT04iLCAic3RyaW5naWZ5IiwgImZpbGVIZWFkZXIiLCAia2V5UHJlZml4IiwgImRhdGEiLCAiZmlsZU5hbWUiLCAicmVwbGFjZSIsICJzdWJzdHIiLCAidHJpbSIsICJjaHVua0hlYWRlckluZGV4IiwgImNodW5rSGVhZGVyTGluZSIsICJjaHVua0hlYWRlciIsICJodW5rIiwgIm9sZFN0YXJ0IiwgIm9sZExpbmVzIiwgIm5ld1N0YXJ0IiwgIm5ld0xpbmVzIiwgImxpbmVzIiwgImxpbmVkZWxpbWl0ZXJzIiwgImFkZENvdW50IiwgInJlbW92ZUNvdW50IiwgImluZGV4T2YiLCAib3BlcmF0aW9uIiwgIl9kZWZhdWx0IiwgInN0YXJ0IiwgIm1pbkxpbmUiLCAibWF4TGluZSIsICJ3YW50Rm9yd2FyZCIsICJiYWNrd2FyZEV4aGF1c3RlZCIsICJmb3J3YXJkRXhoYXVzdGVkIiwgImxvY2FsT2Zmc2V0IiwgIml0ZXJhdG9yIiwgIl9wYXJzZSIsICJfZGlzdGFuY2VJdGVyYXRvciIsICJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwgImFwcGx5UGF0Y2giLCAic291cmNlIiwgInVuaURpZmYiLCAib3B0aW9ucyIsICJwYXJzZVBhdGNoIiwgIkFycmF5IiwgImlzQXJyYXkiLCAibGVuZ3RoIiwgIkVycm9yIiwgImxpbmVzIiwgInNwbGl0IiwgImRlbGltaXRlcnMiLCAibWF0Y2giLCAiaHVua3MiLCAiY29tcGFyZUxpbmUiLCAibGluZU51bWJlciIsICJsaW5lIiwgIm9wZXJhdGlvbiIsICJwYXRjaENvbnRlbnQiLCAiZXJyb3JDb3VudCIsICJmdXp6RmFjdG9yIiwgIm1pbkxpbmUiLCAib2Zmc2V0IiwgInJlbW92ZUVPRk5MIiwgImFkZEVPRk5MIiwgImh1bmtGaXRzIiwgImh1bmsiLCAidG9Qb3MiLCAiaiIsICJjb250ZW50IiwgInN1YnN0ciIsICJpIiwgIm1heExpbmUiLCAib2xkTGluZXMiLCAibG9jYWxPZmZzZXQiLCAib2xkU3RhcnQiLCAiaXRlcmF0b3IiLCAiZGlzdGFuY2VJdGVyYXRvciIsICJ1bmRlZmluZWQiLCAiZGlmZk9mZnNldCIsICJuZXdMaW5lcyIsICJkZWxpbWl0ZXIiLCAibGluZWRlbGltaXRlcnMiLCAic3BsaWNlIiwgInByZXZpb3VzT3BlcmF0aW9uIiwgInBvcCIsICJwdXNoIiwgIl9rIiwgImpvaW4iLCAiYXBwbHlQYXRjaGVzIiwgImN1cnJlbnRJbmRleCIsICJwcm9jZXNzSW5kZXgiLCAiaW5kZXgiLCAiY29tcGxldGUiLCAibG9hZEZpbGUiLCAiZXJyIiwgImRhdGEiLCAidXBkYXRlZENvbnRlbnQiLCAicGF0Y2hlZCIsICJfbGluZSIsICJzdHJ1Y3R1cmVkUGF0Y2giLCAib2xkRmlsZU5hbWUiLCAibmV3RmlsZU5hbWUiLCAib2xkU3RyIiwgIm5ld1N0ciIsICJvbGRIZWFkZXIiLCAibmV3SGVhZGVyIiwgIm9wdGlvbnMiLCAiY29udGV4dCIsICJkaWZmIiwgImRpZmZMaW5lcyIsICJwdXNoIiwgInZhbHVlIiwgImxpbmVzIiwgImNvbnRleHRMaW5lcyIsICJtYXAiLCAiZW50cnkiLCAiaHVua3MiLCAib2xkUmFuZ2VTdGFydCIsICJuZXdSYW5nZVN0YXJ0IiwgImN1clJhbmdlIiwgIm9sZExpbmUiLCAibmV3TGluZSIsICJfbG9vcCIsICJpIiwgImN1cnJlbnQiLCAicmVwbGFjZSIsICJzcGxpdCIsICJhZGRlZCIsICJyZW1vdmVkIiwgIl9jdXJSYW5nZSIsICJwcmV2IiwgInNsaWNlIiwgImxlbmd0aCIsICJfdG9Db25zdW1hYmxlQXJyYXkiLCAiX2N1clJhbmdlMiIsICJfY3VyUmFuZ2UzIiwgImNvbnRleHRTaXplIiwgIk1hdGgiLCAibWluIiwgImh1bmsiLCAib2xkU3RhcnQiLCAib2xkTGluZXMiLCAibmV3U3RhcnQiLCAibmV3TGluZXMiLCAib2xkRU9GTmV3bGluZSIsICJ0ZXN0IiwgIm5ld0VPRk5ld2xpbmUiLCAibm9ObEJlZm9yZUFkZHMiLCAic3BsaWNlIiwgImZvcm1hdFBhdGNoIiwgInJldCIsICJhcHBseSIsICJqb2luIiwgImNyZWF0ZVR3b0ZpbGVzUGF0Y2giLCAiY3JlYXRlUGF0Y2giLCAiZmlsZU5hbWUiLCAiYXJyYXlFcXVhbCIsICJhIiwgImIiLCAibGVuZ3RoIiwgImFycmF5U3RhcnRzV2l0aCIsICJhcnJheSIsICJzdGFydCIsICJpIiwgIl9jcmVhdGUiLCAiX3BhcnNlIiwgIl9hcnJheSIsICJjYWxjTGluZUNvdW50IiwgImh1bmsiLCAiX2NhbGNPbGROZXdMaW5lQ291bnQiLCAiY2FsY09sZE5ld0xpbmVDb3VudCIsICJsaW5lcyIsICJvbGRMaW5lcyIsICJuZXdMaW5lcyIsICJ1bmRlZmluZWQiLCAibWVyZ2UiLCAibWluZSIsICJ0aGVpcnMiLCAiYmFzZSIsICJsb2FkUGF0Y2giLCAicmV0IiwgImluZGV4IiwgIm5ld0ZpbGVOYW1lIiwgImZpbGVOYW1lQ2hhbmdlZCIsICJvbGRGaWxlTmFtZSIsICJzZWxlY3RGaWVsZCIsICJvbGRIZWFkZXIiLCAibmV3SGVhZGVyIiwgImh1bmtzIiwgIm1pbmVJbmRleCIsICJ0aGVpcnNJbmRleCIsICJtaW5lT2Zmc2V0IiwgInRoZWlyc09mZnNldCIsICJsZW5ndGgiLCAibWluZUN1cnJlbnQiLCAib2xkU3RhcnQiLCAiSW5maW5pdHkiLCAidGhlaXJzQ3VycmVudCIsICJodW5rQmVmb3JlIiwgInB1c2giLCAiY2xvbmVIdW5rIiwgIm1lcmdlZEh1bmsiLCAiTWF0aCIsICJtaW4iLCAibmV3U3RhcnQiLCAibWVyZ2VMaW5lcyIsICJwYXJhbSIsICJ0ZXN0IiwgInBhcnNlUGF0Y2giLCAiRXJyb3IiLCAic3RydWN0dXJlZFBhdGNoIiwgInBhdGNoIiwgImNvbmZsaWN0IiwgImNoZWNrIiwgIm9mZnNldCIsICJtaW5lTGluZXMiLCAidGhlaXJPZmZzZXQiLCAidGhlaXJMaW5lcyIsICJ0aGVpciIsICJpbnNlcnRMZWFkaW5nIiwgInRoZWlyQ3VycmVudCIsICJtdXR1YWxDaGFuZ2UiLCAiX2h1bmskbGluZXMiLCAiX3RvQ29uc3VtYWJsZUFycmF5IiwgImNvbGxlY3RDaGFuZ2UiLCAiX2h1bmskbGluZXMyIiwgInJlbW92YWwiLCAiaW5zZXJ0VHJhaWxpbmciLCAibXlDaGFuZ2VzIiwgInRoZWlyQ2hhbmdlcyIsICJhbGxSZW1vdmVzIiwgImFycmF5U3RhcnRzV2l0aCIsICJza2lwUmVtb3ZlU3VwZXJzZXQiLCAiX2h1bmskbGluZXMzIiwgIl9odW5rJGxpbmVzNCIsICJhcnJheUVxdWFsIiwgIl9odW5rJGxpbmVzNSIsICJzd2FwIiwgImNvbGxlY3RDb250ZXh0IiwgIm1lcmdlZCIsICJfaHVuayRsaW5lczYiLCAiaW5zZXJ0IiwgImxpbmUiLCAic3RhdGUiLCAib3BlcmF0aW9uIiwgIm1hdGNoQ2hhbmdlcyIsICJjaGFuZ2VzIiwgIm1hdGNoSW5kZXgiLCAiY29udGV4dENoYW5nZXMiLCAiY29uZmxpY3RlZCIsICJjaGFuZ2UiLCAibWF0Y2giLCAic3Vic3RyIiwgInJlZHVjZSIsICJwcmV2IiwgInJlbW92ZUNoYW5nZXMiLCAiZGVsdGEiLCAiaSIsICJjaGFuZ2VDb250ZW50IiwgImZvckVhY2giLCAibXlDb3VudCIsICJ0aGVpckNvdW50IiwgImNvbnZlcnRDaGFuZ2VzVG9ETVAiLCAiY2hhbmdlcyIsICJyZXQiLCAiY2hhbmdlIiwgIm9wZXJhdGlvbiIsICJpIiwgImxlbmd0aCIsICJhZGRlZCIsICJyZW1vdmVkIiwgInB1c2giLCAidmFsdWUiLCAiY29udmVydENoYW5nZXNUb1hNTCIsICJjaGFuZ2VzIiwgInJldCIsICJpIiwgImxlbmd0aCIsICJjaGFuZ2UiLCAiYWRkZWQiLCAicHVzaCIsICJyZW1vdmVkIiwgImVzY2FwZUhUTUwiLCAidmFsdWUiLCAiam9pbiIsICJzIiwgIm4iLCAicmVwbGFjZSIsICJfYmFzZSIsICJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwgIl9jaGFyYWN0ZXIiLCAiX3dvcmQiLCAiX2xpbmUiLCAiX3NlbnRlbmNlIiwgIl9jc3MiLCAiX2pzb24iLCAiX2FycmF5IiwgIl9hcHBseSIsICJfcGFyc2UiLCAiX21lcmdlIiwgIl9jcmVhdGUiLCAiX2RtcCIsICJfeG1sIiwgInJlcXVpcmVfaXNLZXkiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJpc0FycmF5IiwgImlzU3ltYm9sIiwgInJlSXNEZWVwUHJvcCIsICJyZUlzUGxhaW5Qcm9wIiwgImlzS2V5IiwgInZhbHVlIiwgIm9iamVjdCIsICJ0eXBlIiwgInJlcXVpcmVfbWVtb2l6ZSIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgIk1hcENhY2hlIiwgIkZVTkNfRVJST1JfVEVYVCIsICJtZW1vaXplIiwgImZ1bmMiLCAicmVzb2x2ZXIiLCAibWVtb2l6ZWQiLCAiYXJncyIsICJrZXkiLCAiY2FjaGUiLCAicmVzdWx0IiwgInJlcXVpcmVfbWVtb2l6ZUNhcHBlZCIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgIm1lbW9pemUiLCAiTUFYX01FTU9JWkVfU0laRSIsICJtZW1vaXplQ2FwcGVkIiwgImZ1bmMiLCAicmVzdWx0IiwgImtleSIsICJjYWNoZSIsICJyZXF1aXJlX3N0cmluZ1RvUGF0aCIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgIm1lbW9pemVDYXBwZWQiLCAicmVQcm9wTmFtZSIsICJyZUVzY2FwZUNoYXIiLCAic3RyaW5nVG9QYXRoIiwgInN0cmluZyIsICJyZXN1bHQiLCAibWF0Y2giLCAibnVtYmVyIiwgInF1b3RlIiwgInN1YlN0cmluZyIsICJyZXF1aXJlX2Nhc3RQYXRoIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiaXNBcnJheSIsICJpc0tleSIsICJzdHJpbmdUb1BhdGgiLCAidG9TdHJpbmciLCAiY2FzdFBhdGgiLCAidmFsdWUiLCAib2JqZWN0IiwgInJlcXVpcmVfdG9LZXkiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJpc1N5bWJvbCIsICJJTkZJTklUWSIsICJ0b0tleSIsICJ2YWx1ZSIsICJyZXN1bHQiLCAicmVxdWlyZV9iYXNlR2V0IiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiY2FzdFBhdGgiLCAidG9LZXkiLCAiYmFzZUdldCIsICJvYmplY3QiLCAicGF0aCIsICJpbmRleCIsICJsZW5ndGgiLCAicmVxdWlyZV9iYXNlU2V0IiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiYXNzaWduVmFsdWUiLCAiY2FzdFBhdGgiLCAiaXNJbmRleCIsICJpc09iamVjdCIsICJ0b0tleSIsICJiYXNlU2V0IiwgIm9iamVjdCIsICJwYXRoIiwgInZhbHVlIiwgImN1c3RvbWl6ZXIiLCAiaW5kZXgiLCAibGVuZ3RoIiwgImxhc3RJbmRleCIsICJuZXN0ZWQiLCAia2V5IiwgIm5ld1ZhbHVlIiwgIm9ialZhbHVlIiwgInJlcXVpcmVfYmFzZVBpY2tCeSIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImJhc2VHZXQiLCAiYmFzZVNldCIsICJjYXN0UGF0aCIsICJiYXNlUGlja0J5IiwgIm9iamVjdCIsICJwYXRocyIsICJwcmVkaWNhdGUiLCAiaW5kZXgiLCAibGVuZ3RoIiwgInJlc3VsdCIsICJwYXRoIiwgInZhbHVlIiwgInJlcXVpcmVfYmFzZUhhc0luIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiYmFzZUhhc0luIiwgIm9iamVjdCIsICJrZXkiLCAicmVxdWlyZV9oYXNQYXRoIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiY2FzdFBhdGgiLCAiaXNBcmd1bWVudHMiLCAiaXNBcnJheSIsICJpc0luZGV4IiwgImlzTGVuZ3RoIiwgInRvS2V5IiwgImhhc1BhdGgiLCAib2JqZWN0IiwgInBhdGgiLCAiaGFzRnVuYyIsICJpbmRleCIsICJsZW5ndGgiLCAicmVzdWx0IiwgImtleSIsICJyZXF1aXJlX2hhc0luIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiYmFzZUhhc0luIiwgImhhc1BhdGgiLCAiaGFzSW4iLCAib2JqZWN0IiwgInBhdGgiLCAicmVxdWlyZV9iYXNlUGljayIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImJhc2VQaWNrQnkiLCAiaGFzSW4iLCAiYmFzZVBpY2siLCAib2JqZWN0IiwgInBhdGhzIiwgInZhbHVlIiwgInBhdGgiLCAicmVxdWlyZV9pc0ZsYXR0ZW5hYmxlIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiU3ltYm9sIiwgImlzQXJndW1lbnRzIiwgImlzQXJyYXkiLCAic3ByZWFkYWJsZVN5bWJvbCIsICJpc0ZsYXR0ZW5hYmxlIiwgInZhbHVlIiwgInJlcXVpcmVfYmFzZUZsYXR0ZW4iLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJhcnJheVB1c2giLCAiaXNGbGF0dGVuYWJsZSIsICJiYXNlRmxhdHRlbiIsICJhcnJheSIsICJkZXB0aCIsICJwcmVkaWNhdGUiLCAiaXNTdHJpY3QiLCAicmVzdWx0IiwgImluZGV4IiwgImxlbmd0aCIsICJ2YWx1ZSIsICJyZXF1aXJlX2ZsYXR0ZW4iLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJiYXNlRmxhdHRlbiIsICJmbGF0dGVuIiwgImFycmF5IiwgImxlbmd0aCIsICJyZXF1aXJlX2ZsYXRSZXN0IiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZmxhdHRlbiIsICJvdmVyUmVzdCIsICJzZXRUb1N0cmluZyIsICJmbGF0UmVzdCIsICJmdW5jIiwgInJlcXVpcmVfcGljayIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImJhc2VQaWNrIiwgImZsYXRSZXN0IiwgInBpY2siLCAib2JqZWN0IiwgInBhdGhzIiwgInJlcXVpcmVfUnVuSW5zdGFsbFBsZWFzZVJlc29sdmVyIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJNZXNzYWdlTmFtZV8xIiwgIlJlcG9ydF8xIiwgIlJ1bkluc3RhbGxQbGVhc2VSZXNvbHZlciIsICJyZXNvbHZlciIsICJkZXNjcmlwdG9yIiwgIm9wdHMiLCAibG9jYXRvciIsICJmcm9tTG9jYXRvciIsICJkZXBlbmRlbmNpZXMiLCAibG9jYXRvcnMiLCAicmVxdWlyZV9UaHJvd1JlcG9ydCIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAiUmVwb3J0XzEiLCAiVGhyb3dSZXBvcnQiLCAibG9jYXRvciIsICJvcHRzIiwgImNiIiwgIndoYXQiLCAibmFtZSIsICJ0ZXh0IiwgInByb2dyZXNzIiwgImRhdGEiLCAicmVxdWlyZV9Xb3Jrc3BhY2UiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgInRzbGliXzEiLCAiZnNsaWJfMSIsICJnbG9iYnlfMSIsICJNYW5pZmVzdF8xIiwgIldvcmtzcGFjZVJlc29sdmVyXzEiLCAiZm9ybWF0VXRpbHMiLCAiaGFzaFV0aWxzIiwgInNlbXZlclV0aWxzIiwgInN0cnVjdFV0aWxzIiwgIldvcmtzcGFjZSIsICJ3b3Jrc3BhY2VDd2QiLCAicHJvamVjdCIsICJfYSIsICJpZGVudCIsICJyZWZlcmVuY2UiLCAicGF0dGVybnMiLCAicGF0dGVybiIsICJyZWxhdGl2ZUN3ZHMiLCAicmVsYXRpdmVDd2QiLCAiY2FuZGlkYXRlQ3dkIiwgInBrZyIsICJyYW5nZSIsICJwcm90b2NvbEluZGV4IiwgInByb3RvY29sIiwgInBhdGhuYW1lIiwgInNlbXZlclJhbmdlIiwgImRlcGVuZGVuY2llcyIsICJ3b3Jrc3BhY2VMaXN0IiwgInZpc2l0V29ya3NwYWNlIiwgIndvcmtzcGFjZSIsICJkZXBlbmRlbmN5VHlwZSIsICJkZXNjcmlwdG9yIiwgImZvdW5kV29ya3NwYWNlIiwgInByb2plY3RXb3Jrc3BhY2UiLCAiY2hpbGRXb3Jrc3BhY2VDd2QiLCAiY2hpbGRXb3Jrc3BhY2UiLCAiZGF0YSIsICJwYXRoIiwgImNvbnRlbnQiLCAicmVxdWlyZV9Qcm9qZWN0IiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJ0c2xpYl8xIiwgImZzbGliXzEiLCAiZnNsaWJfMiIsICJwYXJzZXJzXzEiLCAiY2xpcGFuaW9uXzEiLCAiY3J5cHRvXzEiLCAiZGlmZl8xIiwgInBpY2tfMSIsICJwX2xpbWl0XzEiLCAic2VtdmVyXzEiLCAidXRpbF8xIiwgInY4XzEiLCAiemxpYl8xIiwgIkNvbmZpZ3VyYXRpb25fMSIsICJJbnN0YWxsZXJfMSIsICJMZWdhY3lNaWdyYXRpb25SZXNvbHZlcl8xIiwgIkxvY2tmaWxlUmVzb2x2ZXJfMSIsICJNYW5pZmVzdF8xIiwgIk1lc3NhZ2VOYW1lXzEiLCAiTXVsdGlSZXNvbHZlcl8xIiwgIlJlcG9ydF8xIiwgIlJ1bkluc3RhbGxQbGVhc2VSZXNvbHZlcl8xIiwgIlRocm93UmVwb3J0XzEiLCAiV29ya3NwYWNlUmVzb2x2ZXJfMSIsICJXb3Jrc3BhY2VfMSIsICJmb2xkZXJVdGlsc18xIiwgImZvcm1hdFV0aWxzIiwgImhhc2hVdGlscyIsICJtaXNjVXRpbHMiLCAibm9kZVV0aWxzIiwgInNjcmlwdFV0aWxzIiwgInNlbXZlclV0aWxzIiwgInN0cnVjdFV0aWxzIiwgInR5cGVzXzEiLCAidHlwZXNfMiIsICJMT0NLRklMRV9WRVJTSU9OIiwgIklOU1RBTExfU1RBVEVfVkVSU0lPTiIsICJNVUxUSVBMRV9LRVlTX1JFR0VYUCIsICJUUkFJTElOR19TTEFTSF9SRUdFWFAiLCAiRkVUQ0hFUl9DT05DVVJSRU5DWSIsICJnemlwIiwgImd1bnppcCIsICJJbnN0YWxsTW9kZSIsICJJTlNUQUxMX1NUQVRFX0ZJRUxEUyIsICJtYWtlTG9ja2ZpbGVDaGVja3N1bSIsICJub3JtYWxpemVkQ29udGVudCIsICJQcm9qZWN0IiwgImNvbmZpZ3VyYXRpb24iLCAic3RhcnRpbmdDd2QiLCAiX2EiLCAiX2IiLCAiX2MiLCAicGFja2FnZUN3ZCIsICJuZXh0Q3dkIiwgImN1cnJlbnRDd2QiLCAicHJvamVjdCIsICJzdW0iLCAid29ya3NwYWNlIiwgImxvY2F0b3IiLCAicHJvamVjdEN3ZExvZyIsICJwYWNrYWdlQ3dkTG9nIiwgInVuaW50ZW5kZWRQcm9qZWN0TG9nIiwgIm1pc3NpbmdXb3Jrc3BhY2VMb2ciLCAiZGVjb3JyZWxhdGVkUHJvamVjdExvZyIsICJwcm9qZWN0Q3dkIiwgImxvY2tmaWxlUGF0aCIsICJkZWZhdWx0TGFuZ3VhZ2VOYW1lIiwgImNvbnRlbnQiLCAicGFyc2VkIiwgImxvY2tmaWxlVmVyc2lvbiIsICJjYWNoZUtleSIsICJrZXkiLCAiZGF0YSIsICJtYW5pZmVzdCIsICJ2ZXJzaW9uIiwgImxhbmd1YWdlTmFtZSIsICJsaW5rVHlwZSIsICJjb25kaXRpb25zIiwgImRlcGVuZGVuY2llcyIsICJwZWVyRGVwZW5kZW5jaWVzIiwgImRlcGVuZGVuY2llc01ldGEiLCAicGVlckRlcGVuZGVuY2llc01ldGEiLCAiYmluIiwgImNoZWNrc3VtIiwgInBrZyIsICJlbnRyeSIsICJkZXNjcmlwdG9yIiwgIndvcmtzcGFjZUN3ZHMiLCAicGFzc0N3ZHMiLCAid29ya3NwYWNlQ3dkIiwgImR1cCIsICJmaWxlUGF0aCIsICJiZXN0V29ya3NwYWNlIiwgImlkZW50IiwgImRhdGFTdHJ1Y3R1cmUiLCAiZGVsZXRlRGVzY3JpcHRvciIsICJkZXNjcmlwdG9ySGFzaCIsICJkZWxldGVMb2NhdG9yIiwgImxvY2F0b3JIYXNoIiwgInJlbWFpbmluZ1Jlc29sdXRpb25zIiwgInJlc29sdmVyIiwgInNob3VsZFBlcnNpc3RSZXNvbHV0aW9uIiwgImRlcGVuZGVuY3lIYXNoIiwgImRlcGVuZGVuY3kiLCAiZGVwZW5kZW5jeU1ldGEiLCAiZGVwZW5kZW5jeU1ldGFTZXQiLCAiZGVmYXVsdE1ldGEiLCAicmFuZ2UiLCAibWV0YSIsICJjd2QiLCAic3RyaWN0IiwgInJlcG9ydCIsICJsaW5rZXJzIiwgImxpbmtlck9wdGlvbnMiLCAibGlua2VyIiwgIm9yaWdpbmFsUGtnIiwgInJlc29sdmVPcHRpb25zIiwgImlkZW50SGFzaCIsICJob29rcyIsICJib3VuZCIsICJvcHRzIiwgInJlYWxSZXNvbHZlciIsICJsZWdhY3lNaWdyYXRpb25SZXNvbHZlciIsICJyZXNvbHZlckNoYWluIiwgIm5vTG9ja2ZpbGVSZXNvbHZlciIsICJmZXRjaGVyIiwgImFsbERlc2NyaXB0b3JzIiwgImFsbFBhY2thZ2VzIiwgImFsbFJlc29sdXRpb25zIiwgIm9yaWdpbmFsUGFja2FnZXMiLCAicGFja2FnZVJlc29sdXRpb25Qcm9taXNlcyIsICJkZXNjcmlwdG9yUmVzb2x1dGlvblByb21pc2VzIiwgImRlcGVuZGVuY3lSZXNvbHV0aW9uTG9jYXRvciIsICJyZXNvbHV0aW9uRGVwZW5kZW5jaWVzIiwgInJlc29sdXRpb25RdWV1ZSIsICJjdXJyZW50QXJjaGl0ZWN0dXJlIiwgInN1cHBvcnRlZEFyY2hpdGVjdHVyZXMiLCAicHJvZ3Jlc3MiLCAic3RhcnRQYWNrYWdlUmVzb2x1dGlvbiIsICJtZXNzYWdlIiwgImRlcGVuZGVuY3lSZXNvbHV0aW9ucyIsICJzY2hlZHVsZURlc2NyaXB0b3JSZXNvbHV0aW9uIiwgInNjaGVkdWxlUGFja2FnZVJlc29sdXRpb24iLCAicHJvbWlzZSIsICJuZXdQcm9taXNlIiwgInN0YXJ0RGVzY3JpcHRvckFsaWFzaW5nIiwgImFsaWFzIiwgInJlc29sdXRpb24iLCAic3RhcnREZXNjcmlwdG9yUmVzb2x1dGlvbiIsICJyZXNvbHV0aW9uRGVwZW5kZW5jaWVzTGlzdCIsICJyZXNvbHZlZERlcGVuZGVuY2llcyIsICJkZXBlbmRlbmN5TmFtZSIsICJyZXNvbHZlZFBhY2thZ2UiLCAiZmluYWxSZXNvbHV0aW9uIiwgImxvY2F0b3JzIiwgIndvcmtzcGFjZURlc2NyaXB0b3IiLCAiY29weSIsICJ2b2xhdGlsZURlc2NyaXB0b3JzIiwgIm9wdGlvbmFsQnVpbGRzIiwgImFjY2Vzc2libGVMb2NhdG9ycyIsICJwZWVyUmVxdWlyZW1lbnRzIiwgImFwcGx5VmlydHVhbFJlc29sdXRpb25NdXRhdGlvbnMiLCAiY29uZGl0aW9uYWxMb2NhdG9ycyIsICJkaXNhYmxlZExvY2F0b3JzIiwgImNhY2hlIiwgInVzZXJGZXRjaGVyIiwgIm1vZGUiLCAiY2FjaGVPcHRpb25zIiwgImZldGNoZXJPcHRpb25zIiwgImxvY2F0b3JIYXNoZXMiLCAiZmlyc3RFcnJvciIsICJsaW1pdCIsICJmZXRjaFJlc3VsdCIsICJlcnJvciIsICJvcHRGZXRjaGVyIiwgImluc3RhbGxlcnMiLCAiaW5zdGFsbGVyIiwgImN1c3RvbURhdGFLZXkiLCAiY3VzdG9tRGF0YSIsICJwYWNrYWdlTGlua2VycyIsICJwYWNrYWdlTG9jYXRpb25zIiwgInBhY2thZ2VCdWlsZERpcmVjdGl2ZXMiLCAiZmV0Y2hSZXN1bHRzUGVyUGFja2FnZSIsICJwZW5kaW5nUHJvbWlzZXMiLCAiaG9sZFByb21pc2VzIiwgImhvbGRGZXRjaFJlc3VsdCIsICJidWlsZFNjcmlwdHMiLCAic2NyaXB0cyIsICJzY3JpcHROYW1lIiwgImxvY2F0aW9uIiwgImluc3RhbGxTdGF0dXMiLCAiZXh0ZXJuYWxEZXBlbmRlbnRzIiwgImlzV29ya3NwYWNlIiwgImxpbmtQYWNrYWdlIiwgInBhY2thZ2VMaW5rZXIiLCAicGFja2FnZUxvY2F0aW9uIiwgImludGVybmFsRGVwZW5kZW5jaWVzIiwgImRlcGVuZGVuY3lMaW5rZXIiLCAiZGVwZW5kZW50UGF0aHMiLCAibGlua2Vyc0N1c3RvbURhdGEiLCAiZmluYWxpemVJbnN0YWxsRGF0YSIsICJyZWFkeVBhY2thZ2VzIiwgImJ1aWxkYWJsZVBhY2thZ2VzIiwgImdsb2JhbEhhc2hHZW5lcmF0b3IiLCAiZ2xvYmFsSGFzaCIsICJwYWNrYWdlSGFzaE1hcCIsICJnZXRCYXNlSGFzaCIsICJoYXNoIiwgImJ1aWxkZXIiLCAiZ2V0QnVpbGRIYXNoIiwgImJ1aWxkTG9jYXRpb25zIiwgIm5leHRCU3RhdGUiLCAiaXNJbnN0YWxsU3RhdGVQZXJzaXN0ZWQiLCAic2F2ZWRTaXplIiwgImJ1aWxkUHJvbWlzZXMiLCAiaXNCdWlsZGFibGUiLCAiYnVpbGRJbmZvIiwgImJ1aWxkSGFzaCIsICJidWlsZFR5cGUiLCAiaGVhZGVyIiwgInN0ZGluIiwgImxvZ0RpciIsICJsb2dGaWxlIiwgInN0ZG91dCIsICJzdGRlcnIiLCAiZXhpdENvZGUiLCAiYnVpbGRNZXNzYWdlIiwgInByZXR0eUxvY2F0b3JzIiwgIm5vZGVMaW5rZXIiLCAiZXh0ZW5zaW9uc0J5SWRlbnQiLCAiZXh0ZW5zaW9uc0J5UmFuZ2UiLCAiZXh0ZW5zaW9uIiwgImluaXRpYWxMb2NrZmlsZSIsICJleHRlbnNpb25zUGVyUmFuZ2UiLCAiZXh0ZW5zaW9ucyIsICJwcmV0dHlQYWNrYWdlRXh0ZW5zaW9uIiwgIm5ld0xvY2tmaWxlIiwgImRpZmYiLCAiaHVuayIsICJsaW5lIiwgImltbXV0YWJsZVBhdHRlcm5zIiwgImJlZm9yZSIsICJwYXR0ZXJuIiwgImFmdGVyIiwgInQiLCAicmV2ZXJzZUxvb2t1cCIsICJkZXNjcmlwdG9ySGFzaGVzIiwgIm9wdGltaXplZExvY2tmaWxlIiwgImRlc2NyaXB0b3JzIiwgImVudHJ5Q2hlY2tzdW0iLCAiY2FjaGVLZXlJbmRleCIsICJjdXJyZW50Q29udGVudCIsICJuZXdDb250ZW50IiwgImZpZWxkcyIsICJjYXRlZ29yeSIsICJpbnN0YWxsU3RhdGUiLCAic2VyaWFsaXplZFN0YXRlIiwgIm5ld0luc3RhbGxTdGF0ZUNoZWNrc3VtIiwgImluc3RhbGxTdGF0ZVBhdGgiLCAicmVzdG9yZUxpbmtlcnNDdXN0b21EYXRhIiwgInJlc3RvcmVSZXNvbHV0aW9ucyIsICJyZXN0b3JlQnVpbGRTdGF0ZSIsICJpbnN0YWxsU3RhdGVCdWZmZXIiLCAiUFJFU0VSVkVEX0ZJTEVTIiwgInByZWZlckFnZ3JlZ2F0ZUNhY2hlSW5mbyIsICJlbnRyaWVzUmVtb3ZlZCIsICJsYXN0RW50cnlSZW1vdmVkIiwgImVudHJ5UGF0aCIsICJ2aXJ0dWFsU3RhY2siLCAicmVzb2x1dGlvblN0YWNrIiwgImFsbElkZW50cyIsICJhbGxWaXJ0dWFsSW5zdGFuY2VzIiwgImFsbFZpcnR1YWxEZXBlbmRlbnRzIiwgInBlZXJEZXBlbmRlbmN5TGlua3MiLCAicGVlckRlcGVuZGVuY3lEZXBlbmRlbnRzIiwgIm9yaWdpbmFsV29ya3NwYWNlRGVmaW5pdGlvbnMiLCAicmVwb3J0U3RhY2tPdmVyZmxvdyIsICJtYXhTaXplIiwgImluZGV4IiwgImdldFBhY2thZ2VGcm9tRGVzY3JpcHRvciIsICJyZXNvbHZlUGVlckRlcGVuZGVuY2llcyIsICJwYXJlbnREZXNjcmlwdG9yIiwgInBhcmVudExvY2F0b3IiLCAicGVlclNsb3RzIiwgInRvcCIsICJvcHRpb25hbCIsICJyZXN1bHQiLCAicmVzb2x2ZVBlZXJEZXBlbmRlbmNpZXNJbXBsIiwgInBhcmVudFBhY2thZ2UiLCAibmV3VmlydHVhbEluc3RhbmNlcyIsICJmaXJzdFBhc3MiLCAic2Vjb25kUGFzcyIsICJ0aGlyZFBhc3MiLCAiZm91cnRoUGFzcyIsICJpc09wdGlvbmFsIiwgInZpcnR1YWxpemVkRGVzY3JpcHRvciIsICJ2aXJ0dWFsaXplZFBhY2thZ2UiLCAibWlzc2luZ1BlZXJEZXBlbmRlbmNpZXMiLCAibmV4dFBlZXJTbG90cyIsICJwZWVyUmVxdWVzdCIsICJwZWVyRGVzY3JpcHRvciIsICJzdGFja0RlcHRoIiwgImN1cnJlbnQiLCAibmV4dCIsICJmaW5hbERlc2NyaXB0b3IiLCAicm9vdCIsICJtaXNzaW5nUGVlckRlcGVuZGVuY3kiLCAiZm4iLCAic3RhYmxlIiwgInBoeXNpY2FsTG9jYXRvciIsICJ2aXJ0dWFsRGVzY3JpcHRvciIsICJ2aXJ0dWFsUGFja2FnZSIsICJvdGhlclZpcnR1YWxJbnN0YW5jZXMiLCAibWFzdGVyRGVzY3JpcHRvciIsICJkZXBlbmRlbnRzIiwgImFsbERlcGVuZGVudHMiLCAiZGVwZW5kZW50IiwgIldhcm5pbmdUeXBlIiwgIndhcm5pbmdzIiwgInJvb3RIYXNoIiwgInJvb3RMaW5rcyIsICJkZXBlbmRlbnRIYXNoIiwgImlkZW50U3RyIiwgImxpbmtIYXNoZXMiLCAicmVzb2x2ZWREZXNjcmlwdG9yIiwgInBlZXJSZXNvbHV0aW9uIiwgInBlZXJWZXJzaW9uIiwgInJhbmdlcyIsICJsaW5rSGFzaCIsICJsaW5rIiwgInBlZXJEZXBlbmRlbmN5IiwgInBlZXJEZXBlbmRlbmN5TWV0YSIsICJ3YXJuaW5nU29ydENyaXRlcmlhcyIsICJ3YXJuaW5nIiwgImFuZERlc2NlbmRhbnRzIiwgInJlcXVpcmVfVGVsZW1ldHJ5TWFuYWdlciIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAidHNsaWJfMSIsICJmc2xpYl8xIiwgImhhc2hVdGlscyIsICJodHRwVXRpbHMiLCAibWlzY1V0aWxzIiwgIk1ldHJpY05hbWUiLCAiVGVsZW1ldHJ5TWFuYWdlciIsICJjb25maWd1cmF0aW9uIiwgImFjY291bnRJZCIsICJyZWdpc3RyeUZpbGUiLCAidmFsdWUiLCAiY3dkIiwgIm5vZGVMaW5rZXIiLCAiY291bnQiLCAibWV0cmljIiwgImV4dHJhIiwgIm5zIiwgImN1cnJlbnQiLCAiX2EiLCAiX2IiLCAiX2MiLCAiY29udGVudCIsICJub3ciLCAiaW50ZXJ2YWwiLCAibmV4dFVwZGF0ZSIsICJyYXdVcmwiLCAic2VuZFBheWxvYWQiLCAicGF5bG9hZCIsICJ1c2VySWQiLCAiYmxvY2siLCAidXBsb2FkIiwgImtleSIsICJ0b1NlbmQiLCAibWF4VmFsdWVzIiwgIm1ldHJpY05hbWUiLCAidmFsdWVzIiwgIl9kIiwgIl9lIiwgIl9mIiwgIl9nIiwgIl9oIiwgIl9qIiwgImJsb2NrcyIsICJzdG9yZSIsICJmaWVsZCIsICJyZXF1aXJlX2xpYiIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAidHNsaWJfMSIsICJleGVjVXRpbHMiLCAiZm9sZGVyVXRpbHMiLCAiZm9ybWF0VXRpbHMiLCAiaGFzaFV0aWxzIiwgImh0dHBVdGlscyIsICJtaXNjVXRpbHMiLCAibm9kZVV0aWxzIiwgInNjcmlwdFV0aWxzIiwgInNlbXZlclV0aWxzIiwgInN0cnVjdFV0aWxzIiwgInRnelV0aWxzIiwgInRyZWVVdGlscyIsICJDYWNoZV8xIiwgIkNvbmZpZ3VyYXRpb25fMSIsICJDb25maWd1cmF0aW9uXzIiLCAiSW5zdGFsbGVyXzEiLCAiTGVnYWN5TWlncmF0aW9uUmVzb2x2ZXJfMSIsICJMaWdodFJlcG9ydF8xIiwgIkxvY2tmaWxlUmVzb2x2ZXJfMSIsICJNYW5pZmVzdF8xIiwgIk1lc3NhZ2VOYW1lXzEiLCAiTXVsdGlGZXRjaGVyXzEiLCAiUHJvamVjdF8xIiwgIlJlcG9ydF8xIiwgIlN0cmVhbVJlcG9ydF8xIiwgIlRlbGVtZXRyeU1hbmFnZXJfMSIsICJUaHJvd1JlcG9ydF8xIiwgIlZpcnR1YWxGZXRjaGVyXzEiLCAiV29ya3NwYWNlRmV0Y2hlcl8xIiwgIldvcmtzcGFjZVJlc29sdmVyXzEiLCAiV29ya3NwYWNlXzEiLCAiWWFyblZlcnNpb25fMSIsICJ0eXBlc18xIiwgImNsZWFuTG9jYXRvclN0cmluZyIsICJsb2NhdG9yU3RyaW5nIiwgImxvY2F0b3IiLCAicmFuZ2UiLCAicmVhZFBhY2thZ2VKU09OIiwgInBhY2thZ2VJbmZvcm1hdGlvbiIsICJjcm9zc0ZzIiwgImltcG9ydF9jb3JlIiwgImltcG9ydF9saWJ6aXAiLCAiaW1wb3J0X2ZzbGliIiwgImxpYnppcCIsICJ6aXBPcGVuRnMiLCAiaW5pdF9saWIiLCAiX19lc21NaW4iLCAiY3JlYXRlTG9ja0ZpbGVfZXhwb3J0cyIsICJfX2V4cG9ydCIsICJjcmVhdGVMb2NrRmlsZSIsICJjb25maWd1cmF0aW9uIiwgInByb2plY3QiLCAidG9wTGV2ZWxQYWNrYWdlTG9jYXRvciIsICJ0b3BMZXZlbFBhY2thZ2VMb2NhdG9yU3RyaW5nIiwgInBhY2thZ2VSZWdpc3RyeURhdGEiLCAicGFja2FnZVJlZ2lzdHJ5RGF0YVBhdGgiLCAicGFja2FnZVJlZ2lzdHJ5VG9Qcm9qZWN0T3JpZ2luYWxQYWNrYWdlcyIsICJwYWNrYWdlUmVnaXN0cnlEYXRhRW50cmllcyIsICJsb2NhdG9yU3RyaW5nIiwgInBrZyIsICJpc1RvcExldmVsUGFja2FnZSIsICJkZXBlbmRlbmNpZXMiLCAiZGVwZW5kZW5jaWVzTWV0YSIsICJwZWVyRGVwZW5kZW5jaWVzIiwgInBlZXJEZXBlbmRlbmNpZXNNZXRhIiwgImJpbiIsICJjbGVhbkxvY2F0b3JTdHJpbmciLCAibG9jYXRvciIsICJpZGVudCIsICJkZXNjcmlwdG9yIiwgImRlcGVuZGVuY3lOYW1lIiwgIm9yaWdQYWNrYWdlIiwgIl9wYWNrYWdlIiwgInBrZ0RlcGVuZGVuY2llcyIsICJkZXBMb2NhdG9yU3RyaW5nIiwgImRlcFBrZyIsICJkZXBQa2dEZXNjcmlwdG9yIiwgInJhbmdlIiwgImZzIiwgImltcG9ydF9jb3JlIiwgImltcG9ydF9mc2xpYiIsICJpbml0X2NyZWF0ZUxvY2tGaWxlIiwgIl9fZXNtTWluIiwgImluaXRfbGliIiwgIm1ha2VQYXRoV3JhcHBlcnNfZXhwb3J0cyIsICJfX2V4cG9ydCIsICJtYWtlUGF0aFdyYXBwZXJzIiwgIm91dERpcmVjdG9yeVJlYWwiLCAicG5wT3V0RGlyZWN0b3J5IiwgInBucEFwaSIsICJ0b3BMZXZlbFBhY2thZ2UiLCAiX18iLCAiZGVwIiwgImRlcExvY2F0b3IiLCAiZGV2aXJ0dWFsaXNlZExvY2F0b3IiLCAiZGVwUGtnIiwgImRldmlydHVhbGlzZWRQa2ciLCAicGFja2FnZU1hbmlmZXN0IiwgInJlYWRQYWNrYWdlSlNPTiIsICJiaW4iLCAiYmluU2NyaXB0IiwgInJlc29sdmVkQmluUGF0aCIsICJiaW5XcmFwcGVyc091dERpcmVjdG9yeSIsICJmcyIsICJwYXRoIiwgImltcG9ydF9jb3JlIiwgImltcG9ydF9mc2xpYiIsICJpbml0X21ha2VQYXRoV3JhcHBlcnMiLCAiX19lc21NaW4iLCAiaW5pdF9saWIiLCAiY29tbWFuZE1hcCJdCn0K diff --git a/internal/lib/index.ts b/internal/lib/index.ts new file mode 100644 index 0000000..d770dff --- /dev/null +++ b/internal/lib/index.ts @@ -0,0 +1,27 @@ +import { structUtils, Manifest} from '@yarnpkg/core' +import type * as PnpApi from 'pnpapi' +import { ZipOpenFS } from '@yarnpkg/libzip' +import { PosixFS } from '@yarnpkg/fslib' + +const libzip = require(`@yarnpkg/libzip`).getLibzipSync() + +const zipOpenFs = new ZipOpenFS({libzip}); +const crossFs = new PosixFS(zipOpenFs); + +export function cleanLocatorString(locatorString: string) { + const locator = structUtils.parseLocator(locatorString) + const range = structUtils.parseRange(locator.reference) + + if (range.protocol === 'patch:') { + return structUtils.stringifyLocator({ + ...locator, + reference: structUtils.makeRange({...range, params: null}), + }) + } + + return locatorString +} + +export function readPackageJSON(packageInformation: PnpApi.PackageInformation) { + return Manifest.fromText(crossFs.readFileSync(packageInformation.packageLocation + 'package.json', 'utf8')) +} diff --git a/internal/package.json b/internal/package.json new file mode 100644 index 0000000..d08459a --- /dev/null +++ b/internal/package.json @@ -0,0 +1,21 @@ +{ + "private": true, + "scripts": { + "dev": "yarn nodemon -e ts build.js" + }, + "devDependencies": { + "@types/node": "^18.11.9", + "@types/pnpapi": "^0.0.2", + "@yarnpkg/cli": "^4.0.0-rc.27", + "@yarnpkg/core": "^4.0.0-rc.27", + "@yarnpkg/fslib": "^3.0.0-rc.27", + "@yarnpkg/plugin-pnp": "^4.0.0-rc.27", + "@yarnpkg/pnp": "^4.0.0-rc.27", + "esbuild": "^0.15.13", + "nodemon": "^2.0.20", + "typescript": "^4.8.4" + }, + "dependencies": { + "@yarnpkg/libzip": "^3.0.0-rc.27" + } +} diff --git a/internal/yarn.lock b/internal/yarn.lock new file mode 100644 index 0000000..97a217b --- /dev/null +++ b/internal/yarn.lock @@ -0,0 +1,3463 @@ +# This file is generated by running "yarn install" inside your project. +# Manual changes might be lost - proceed with caution! + +__metadata: + version: 7 + cacheKey: 9 + +"@algolia/cache-browser-local-storage@npm:4.14.2": + version: 4.14.2 + resolution: "@algolia/cache-browser-local-storage@npm:4.14.2" + dependencies: + "@algolia/cache-common": "npm:4.14.2" + checksum: 17d699e287fa635461409aedd6026756cff27ff5b337807a057a2ed5b4929d10590b36c24d485b91a9039587a40ce301c8d6e891ed78d8b1ede98e14f5e38a9e + languageName: node + linkType: hard + +"@algolia/cache-common@npm:4.14.2": + version: 4.14.2 + resolution: "@algolia/cache-common@npm:4.14.2" + checksum: c9392abded2643c7e5fda953d8ec89837765938ff041c202c355a454e218f8d849e9f478acd6ee15c2f202bf329c03ac351beebd402e5af883bfaa1c83154377 + languageName: node + linkType: hard + +"@algolia/cache-in-memory@npm:4.14.2": + version: 4.14.2 + resolution: "@algolia/cache-in-memory@npm:4.14.2" + dependencies: + "@algolia/cache-common": "npm:4.14.2" + checksum: 2cf1026be84c67c38b679d5df0b7ff56e8cddce986a5f179ffc9da6908acad36831a2661c4e7362f4017acd01c3b3ae0783b7fb8ca27ac9e6ddd793dd0ac3336 + languageName: node + linkType: hard + +"@algolia/client-account@npm:4.14.2": + version: 4.14.2 + resolution: "@algolia/client-account@npm:4.14.2" + dependencies: + "@algolia/client-common": "npm:4.14.2" + "@algolia/client-search": "npm:4.14.2" + "@algolia/transporter": "npm:4.14.2" + checksum: 5e6ec4bb42bd51cf9de5738cc683509379a563ed384a677ea7eed77d3353e47ee8ed13b9a48454720e31a0948f0b55f3b4efe6ea438424acdbf096e04ba6e572 + languageName: node + linkType: hard + +"@algolia/client-analytics@npm:4.14.2": + version: 4.14.2 + resolution: "@algolia/client-analytics@npm:4.14.2" + dependencies: + "@algolia/client-common": "npm:4.14.2" + "@algolia/client-search": "npm:4.14.2" + "@algolia/requester-common": "npm:4.14.2" + "@algolia/transporter": "npm:4.14.2" + checksum: 38e13444f7b9ba0aa42e858ba674ff09690a76c4bcd02f83ee30e1ef6a04e671d46a374b836bd8ba6478217110fb93552174e724d7506625ac44040bfb6f8935 + languageName: node + linkType: hard + +"@algolia/client-common@npm:4.14.2": + version: 4.14.2 + resolution: "@algolia/client-common@npm:4.14.2" + dependencies: + "@algolia/requester-common": "npm:4.14.2" + "@algolia/transporter": "npm:4.14.2" + checksum: a4e1a43646caee77df481085fa8f34467b192ea8542b8b560d6fc7ddb93468c75f2f0da098f350fe1ebcc9b766f148f2066739111c5f39203c68f1cb8eae5f56 + languageName: node + linkType: hard + +"@algolia/client-personalization@npm:4.14.2": + version: 4.14.2 + resolution: "@algolia/client-personalization@npm:4.14.2" + dependencies: + "@algolia/client-common": "npm:4.14.2" + "@algolia/requester-common": "npm:4.14.2" + "@algolia/transporter": "npm:4.14.2" + checksum: 9f3f11ce68ecb108f7156d7d30f1ec1acbede34f2914ae396d1024ec625512a105f517777bd755f680a865209e3c1ca7f371b301cbfb3d099221451351a8a1b3 + languageName: node + linkType: hard + +"@algolia/client-search@npm:4.14.2": + version: 4.14.2 + resolution: "@algolia/client-search@npm:4.14.2" + dependencies: + "@algolia/client-common": "npm:4.14.2" + "@algolia/requester-common": "npm:4.14.2" + "@algolia/transporter": "npm:4.14.2" + checksum: 2ed8bbf3bc3f9f3cdc2754da4361046df70e673c0999e19c4c3c3d336eeaaa939f3b03e3fea2d86f996dfd72d3513dc8d0c54a01938455fc3b202ca84326f060 + languageName: node + linkType: hard + +"@algolia/logger-common@npm:4.14.2": + version: 4.14.2 + resolution: "@algolia/logger-common@npm:4.14.2" + checksum: 8e3c2e0c28992508c6f33ac10532a2ee9fc52b63f246fda3304790c3a9bbab3fb652781dfffda7ce093d17ecdbfa7f34fbe0416658da954d8c13dc5e65a1dc47 + languageName: node + linkType: hard + +"@algolia/logger-console@npm:4.14.2": + version: 4.14.2 + resolution: "@algolia/logger-console@npm:4.14.2" + dependencies: + "@algolia/logger-common": "npm:4.14.2" + checksum: 4f740f8ea94c12157cd013e1b049066b6789c682cfae47a2f9e618ae88fb4ccfc0752492de4fc9d4c144e0a7bbb66f34bbe5222c000781e8775ea3832ef95677 + languageName: node + linkType: hard + +"@algolia/requester-browser-xhr@npm:4.14.2": + version: 4.14.2 + resolution: "@algolia/requester-browser-xhr@npm:4.14.2" + dependencies: + "@algolia/requester-common": "npm:4.14.2" + checksum: 2048d74e48933c97bff0638a62c52c46b0cde2c9dbb3ed998b45cc3af49b3be97ca295fe1578207af6e82b4506d434671620b1450dc28024eede1e756cd87198 + languageName: node + linkType: hard + +"@algolia/requester-common@npm:4.14.2": + version: 4.14.2 + resolution: "@algolia/requester-common@npm:4.14.2" + checksum: 17aaf2022a0c99d7967b46c263bf924b7458015f276e73b45779597b0cc75a94695d5a8b6076d017e757ee8c109f0ad8b027b79619266f2bc8dea3a8c2e2b582 + languageName: node + linkType: hard + +"@algolia/requester-node-http@npm:4.14.2": + version: 4.14.2 + resolution: "@algolia/requester-node-http@npm:4.14.2" + dependencies: + "@algolia/requester-common": "npm:4.14.2" + checksum: 50c874491edde4b9c1c38c9ddb0ad9af015a654d452008af7fd6573420913006760afd634ae296585bf5fa727bea4fc1f3ebd34d1d8c389457d5a6f40cbf1261 + languageName: node + linkType: hard + +"@algolia/transporter@npm:4.14.2": + version: 4.14.2 + resolution: "@algolia/transporter@npm:4.14.2" + dependencies: + "@algolia/cache-common": "npm:4.14.2" + "@algolia/logger-common": "npm:4.14.2" + "@algolia/requester-common": "npm:4.14.2" + checksum: 82d3dba51c48e3b0aa8364bd5fd92d86ec23f0d310bfdb47f5c1ca990ae7a19a895c35eb3e4137919de6aa94a4b3f720e17fb149b4b3c54d175061ed211c0bf7 + languageName: node + linkType: hard + +"@arcanis/slice-ansi@npm:^1.1.1": + version: 1.1.1 + resolution: "@arcanis/slice-ansi@npm:1.1.1" + dependencies: + grapheme-splitter: "npm:^1.0.4" + checksum: f79b471726685624aa941384c7ea98f3a415f19772ef7c9339fd16b51d11cb2dce8bfea9da4b092fec03e7ee8859c058a85e318aa90678d8d2fa9c27a59581ce + languageName: node + linkType: hard + +"@esbuild/android-arm@npm:0.15.13": + version: 0.15.13 + resolution: "@esbuild/android-arm@npm:0.15.13" + conditions: os=android & cpu=arm + languageName: node + linkType: hard + +"@esbuild/linux-loong64@npm:0.15.13": + version: 0.15.13 + resolution: "@esbuild/linux-loong64@npm:0.15.13" + conditions: os=linux & cpu=loong64 + languageName: node + linkType: hard + +"@gar/promisify@npm:^1.1.3": + version: 1.1.3 + resolution: "@gar/promisify@npm:1.1.3" + checksum: 3fadc40481a783ddb90397f5759f92650b57465f7a4a778056bd24b47060595012e9181a55ae547d57a893d37d9776abe9e368f1f6918e37225eb6a83f9a75f8 + languageName: node + linkType: hard + +"@nodelib/fs.scandir@npm:2.1.5": + version: 2.1.5 + resolution: "@nodelib/fs.scandir@npm:2.1.5" + dependencies: + "@nodelib/fs.stat": "npm:2.0.5" + run-parallel: "npm:^1.1.9" + checksum: 5f309a3b375738e97d4f3cf73ace218690d5a1cfdf98202c6b46bfda61f4317e0e0036c81b040b147e7d1632c7da2e2462e47660de428917cacaebfa2a0a20c7 + languageName: node + linkType: hard + +"@nodelib/fs.stat@npm:2.0.5, @nodelib/fs.stat@npm:^2.0.2": + version: 2.0.5 + resolution: "@nodelib/fs.stat@npm:2.0.5" + checksum: 594d04bcf578d15af65b510dbd9c0dc2458d2a7ef1b403924f22f64d397e965efa8c6854b3fee3395244ae642e28d896ab9d04c5ee5c46ef4fda1d48eaaef19c + languageName: node + linkType: hard + +"@nodelib/fs.walk@npm:^1.2.3": + version: 1.2.8 + resolution: "@nodelib/fs.walk@npm:1.2.8" + dependencies: + "@nodelib/fs.scandir": "npm:2.1.5" + fastq: "npm:^1.6.0" + checksum: 3542284aa2d6e313cfd4ae40a2502b53e1f35da6f4f9890422aad018c04866f6bfb96c4105e23dbd9fb93cfc630cc607777df658a3a525d63a3bfb9bcb2b0f21 + languageName: node + linkType: hard + +"@npmcli/fs@npm:^2.1.0": + version: 2.1.2 + resolution: "@npmcli/fs@npm:2.1.2" + dependencies: + "@gar/promisify": "npm:^1.1.3" + semver: "npm:^7.3.5" + checksum: 82bc61f832f45e2033ea3522f66a94de50e5561577b1f3af226576ad5467c240375eba948d4ea1ca146e7871740fb3005e7c4f3f1ab616e79a5a5cedd9fdb789 + languageName: node + linkType: hard + +"@npmcli/move-file@npm:^2.0.0": + version: 2.0.1 + resolution: "@npmcli/move-file@npm:2.0.1" + dependencies: + mkdirp: "npm:^1.0.4" + rimraf: "npm:^3.0.2" + checksum: 3557a12cd18dfb5bcd5d5cf910b783832af50ffba28fd5bb510c3c56b2df0481558b9ec6d3008e8eeefb9f2944bdc1d34832b1a8bbf6ad1cd2f256bf12c84ff0 + languageName: node + linkType: hard + +"@sindresorhus/is@npm:^4.0.0": + version: 4.6.0 + resolution: "@sindresorhus/is@npm:4.6.0" + checksum: c4326c4f01370580cf5b1b799d5aabab6cb3b0f7f06aec316bec403796064f3b7c68ebd22361313557bf153346266e133f8dd16b3a95e07650f70843321548f3 + languageName: node + linkType: hard + +"@szmarczak/http-timer@npm:^4.0.5": + version: 4.0.6 + resolution: "@szmarczak/http-timer@npm:4.0.6" + dependencies: + defer-to-connect: "npm:^2.0.0" + checksum: d927951bccbbad4cb713af7378ad4d17b34e48725ea4641ad01f79b310564e3db2b173c4f81cb3b945dbf8b3dbcb4da7b8d0f2e754e79dc1b92c69a18ba0ac41 + languageName: node + linkType: hard + +"@tootallnate/once@npm:2": + version: 2.0.0 + resolution: "@tootallnate/once@npm:2.0.0" + checksum: d9f7f2130a0a2e1ea50f3bc90b83a8b99c913bbb80d7a1706f7f4730292ef299d18443c3b57a42dfb17c6559c9085e13f751b1b6c969bcff7bee3eeaf9da4dec + languageName: node + linkType: hard + +"@types/cacheable-request@npm:^6.0.1": + version: 6.0.2 + resolution: "@types/cacheable-request@npm:6.0.2" + dependencies: + "@types/http-cache-semantics": "npm:*" + "@types/keyv": "npm:*" + "@types/node": "npm:*" + "@types/responselike": "npm:*" + checksum: 94eef4e9dac771e06cdaa8216087048f521681d430c7cbb005a7a4cba37e4113051ea56ebae19cbdc92571d223cd79b4752d38b32cc401aa34a7c3e71c14f253 + languageName: node + linkType: hard + +"@types/emscripten@npm:^1.39.6": + version: 1.39.6 + resolution: "@types/emscripten@npm:1.39.6" + checksum: 0b2219f4c4a5126433135c331047be50bdfabac1cc39b37a8a2d8aec9cdfa62148bc80a485956924751d5007254f82ad8fc56f001999d79bdeea298a4ec4c712 + languageName: node + linkType: hard + +"@types/http-cache-semantics@npm:*": + version: 4.0.1 + resolution: "@types/http-cache-semantics@npm:4.0.1" + checksum: 04aacd353b3823dea511927aa0b0a519a16a876aab4f6cc545828cafcadebddc631dcb1e1a949a09f1c30d37c5512e60e69469e22a75213ff1abf349deaad433 + languageName: node + linkType: hard + +"@types/keyv@npm:*": + version: 3.1.4 + resolution: "@types/keyv@npm:3.1.4" + dependencies: + "@types/node": "npm:*" + checksum: c1fbfe6e2a8c82656c8fc5782d937c82ed336cdca451c4d7a8d08d245531ad21572024d621b38071d34cfb7461702eea79fcf222a03264f00564d75e78bd348d + languageName: node + linkType: hard + +"@types/node@npm:*, @types/node@npm:^18.11.9, @types/node@npm:^18.7.6": + version: 18.11.9 + resolution: "@types/node@npm:18.11.9" + checksum: 7b7d90894dd1ae9b6836e49ace5bdea55cc08806a508e38851e333f1ad77ec81ea6dca58e6a2444ad0471fee965b9908cc1ef06028eebca9c20d54729df98bab + languageName: node + linkType: hard + +"@types/pnpapi@npm:^0.0.2": + version: 0.0.2 + resolution: "@types/pnpapi@npm:0.0.2" + checksum: 057a52d6894464a021c07d5294d34e16e8dd660689a5d3e3863bf87e1647c7ddabcc11d64d57a9cfd5f48fce6c81cc36d21aebd49be46919e7a17c2b8203afb9 + languageName: node + linkType: hard + +"@types/responselike@npm:*, @types/responselike@npm:^1.0.0": + version: 1.0.0 + resolution: "@types/responselike@npm:1.0.0" + dependencies: + "@types/node": "npm:*" + checksum: f6e2bc61d2fbeabfd6c5df826e87832aa89f7b190dc993503ff1bbc19608ba75223f4c41c22bfb9500b66e36bf00e7a2c2c0af9e6abba6c2e5bad808eb324d2c + languageName: node + linkType: hard + +"@types/semver@npm:^7.1.0": + version: 7.3.13 + resolution: "@types/semver@npm:7.3.13" + checksum: a76156ff60ddbd17bf2120c09dca3cd8ac7db4f8d8c69614a9ebc5202f05d1044def7fd8cf77415f7284ea8edfa1092b6e04dac07dc17c94762904c69dd2c85b + languageName: node + linkType: hard + +"@types/treeify@npm:^1.0.0": + version: 1.0.0 + resolution: "@types/treeify@npm:1.0.0" + checksum: 9a51bd33d129a578009e355039829a7d80a2100a881a5cda96befa0e7d59bdf0541728f07c3a2ddb26124c750792f6a9e8c1e12b202481c5196bed7b311a0a2d + languageName: node + linkType: hard + +"@types/yoga-layout@npm:1.9.2": + version: 1.9.2 + resolution: "@types/yoga-layout@npm:1.9.2" + checksum: f6c8a0c3cc28b9604cc2e3a747944577f562be8dd5be46fbb522237fe52e0266c51571764322032f6d7e96d6b8f27cf51ba8e4be3024c6e68f5f173e1bd38761 + languageName: node + linkType: hard + +"@yarnpkg/cli@npm:^4.0.0-rc.27": + version: 4.0.0-rc.27 + resolution: "@yarnpkg/cli@npm:4.0.0-rc.27" + dependencies: + "@yarnpkg/core": "npm:^4.0.0-rc.27" + "@yarnpkg/fslib": "npm:^3.0.0-rc.27" + "@yarnpkg/libzip": "npm:^3.0.0-rc.27" + "@yarnpkg/parsers": "npm:^3.0.0-rc.27" + "@yarnpkg/plugin-compat": "npm:^4.0.0-rc.27" + "@yarnpkg/plugin-constraints": "npm:^4.0.0-rc.27" + "@yarnpkg/plugin-dlx": "npm:^4.0.0-rc.27" + "@yarnpkg/plugin-essentials": "npm:^4.0.0-rc.27" + "@yarnpkg/plugin-exec": "npm:^3.0.0-rc.27" + "@yarnpkg/plugin-file": "npm:^3.0.0-rc.27" + "@yarnpkg/plugin-git": "npm:^3.0.0-rc.27" + "@yarnpkg/plugin-github": "npm:^3.0.0-rc.27" + "@yarnpkg/plugin-http": "npm:^3.0.0-rc.27" + "@yarnpkg/plugin-init": "npm:^4.0.0-rc.27" + "@yarnpkg/plugin-interactive-tools": "npm:^4.0.0-rc.27" + "@yarnpkg/plugin-link": "npm:^3.0.0-rc.27" + "@yarnpkg/plugin-nm": "npm:^4.0.0-rc.27" + "@yarnpkg/plugin-npm": "npm:^3.0.0-rc.27" + "@yarnpkg/plugin-npm-cli": "npm:^4.0.0-rc.27" + "@yarnpkg/plugin-pack": "npm:^4.0.0-rc.27" + "@yarnpkg/plugin-patch": "npm:^4.0.0-rc.27" + "@yarnpkg/plugin-pnp": "npm:^4.0.0-rc.27" + "@yarnpkg/plugin-pnpm": "npm:^2.0.0-rc.27" + "@yarnpkg/plugin-stage": "npm:^4.0.0-rc.27" + "@yarnpkg/plugin-typescript": "npm:^4.0.0-rc.27" + "@yarnpkg/plugin-version": "npm:^4.0.0-rc.27" + "@yarnpkg/plugin-workspace-tools": "npm:^4.0.0-rc.27" + "@yarnpkg/shell": "npm:^4.0.0-rc.27" + ci-info: "npm:^3.2.0" + clipanion: "npm:^3.2.0-rc.10" + semver: "npm:^7.1.2" + tslib: "npm:^2.4.0" + typanion: "npm:^3.3.0" + peerDependencies: + "@yarnpkg/core": ^4.0.0-rc.27 + checksum: 8d9a863b7337774092b3dd55a4f915f9adf2336a638d7b33a6f2a4bea004683e9c3d82610755af02f305ff076fa30b11294e4e8d02629d5d71b23076978ee2db + languageName: node + linkType: hard + +"@yarnpkg/core@npm:^4.0.0-rc.27": + version: 4.0.0-rc.27 + resolution: "@yarnpkg/core@npm:4.0.0-rc.27" + dependencies: + "@arcanis/slice-ansi": "npm:^1.1.1" + "@types/semver": "npm:^7.1.0" + "@types/treeify": "npm:^1.0.0" + "@yarnpkg/fslib": "npm:^3.0.0-rc.27" + "@yarnpkg/libzip": "npm:^3.0.0-rc.27" + "@yarnpkg/parsers": "npm:^3.0.0-rc.27" + "@yarnpkg/shell": "npm:^4.0.0-rc.27" + camelcase: "npm:^5.3.1" + chalk: "npm:^3.0.0" + ci-info: "npm:^3.2.0" + clipanion: "npm:^3.2.0-rc.10" + cross-spawn: "npm:7.0.3" + diff: "npm:^5.1.0" + globby: "npm:^11.0.1" + got: "npm:^11.7.0" + lodash: "npm:^4.17.15" + micromatch: "npm:^4.0.2" + p-limit: "npm:^2.2.0" + semver: "npm:^7.1.2" + strip-ansi: "npm:^6.0.0" + tar: "npm:^6.0.5" + tinylogic: "npm:^2.0.0" + treeify: "npm:^1.1.0" + tslib: "npm:^2.4.0" + tunnel: "npm:^0.0.6" + checksum: 18202bd311f66d3c45f2b335185b6bc4e9b462e0b36a9e993371867eb44a48d7a45d1c2c7d19ff0bded7d6e22b51a8c06d873cd2be827a9fa55fbd7ff28da866 + languageName: node + linkType: hard + +"@yarnpkg/extensions@npm:^2.0.0-rc.9": + version: 2.0.0-rc.9 + resolution: "@yarnpkg/extensions@npm:2.0.0-rc.9" + peerDependencies: + "@yarnpkg/core": ^4.0.0-rc.27 + checksum: f309ac3d0b0978fa09c026f8902c61e99a0dd464b49cce341205e3614a5725cb70686117a1f5d3a88a248dc832902b3e65a1bcbb87f38ced2dbf7f2905292429 + languageName: node + linkType: hard + +"@yarnpkg/fslib@npm:^3.0.0-rc.27": + version: 3.0.0-rc.27 + resolution: "@yarnpkg/fslib@npm:3.0.0-rc.27" + dependencies: + tslib: "npm:^2.4.0" + checksum: 50d3fd98feebb06f9cf609f1b185e303afe03ccb01b17aecbf7cc469893c2051382b78d780e692a43764caaa3c4bda3cd84f7da0e132e8c9ad8d19e3b21b5d91 + languageName: node + linkType: hard + +"@yarnpkg/libui@npm:^3.0.0-rc.27": + version: 3.0.0-rc.27 + resolution: "@yarnpkg/libui@npm:3.0.0-rc.27" + dependencies: + tslib: "npm:^2.4.0" + peerDependencies: + ink: ^3.0.8 + react: ^16.8.4 + checksum: d634f76d5bf47489b3331c8aea2c67ca8484eba29d207ad00e7f71eb7e857082f926226c8ea7ce8909c8e4a0a73b4b2c1db51ecec3b4648d8c34f83925336c31 + languageName: node + linkType: hard + +"@yarnpkg/libzip@npm:^3.0.0-rc.27": + version: 3.0.0-rc.27 + resolution: "@yarnpkg/libzip@npm:3.0.0-rc.27" + dependencies: + "@types/emscripten": "npm:^1.39.6" + "@yarnpkg/fslib": "npm:^3.0.0-rc.27" + tslib: "npm:^2.4.0" + peerDependencies: + "@yarnpkg/fslib": ^3.0.0-rc.27 + checksum: f53ecee34c256fa6f9f4e7d5fee2ee89eeccddc0a6586ce1d662b4be9a617f094eacfb6b346cdcdf6891871ab5a945fa06746f02a78dea27a687210db09f8fee + languageName: node + linkType: hard + +"@yarnpkg/nm@npm:^4.0.0-rc.27": + version: 4.0.0-rc.27 + resolution: "@yarnpkg/nm@npm:4.0.0-rc.27" + dependencies: + "@yarnpkg/core": "npm:^4.0.0-rc.27" + "@yarnpkg/fslib": "npm:^3.0.0-rc.27" + "@yarnpkg/pnp": "npm:^4.0.0-rc.27" + checksum: 39bd7512f2318bedad7c426198691416aa75bdab1cd996d705af9e824d3f3a3199bb307623679a841e43e54755bfeee46b5717977a68fd17b04196bce651d98f + languageName: node + linkType: hard + +"@yarnpkg/parsers@npm:^3.0.0-rc.27": + version: 3.0.0-rc.27 + resolution: "@yarnpkg/parsers@npm:3.0.0-rc.27" + dependencies: + js-yaml: "npm:^3.10.0" + tslib: "npm:^2.4.0" + checksum: d0ad72d0362e065e3e13fa981ef78c93b0c2f5d8687d9267ea7cd1090f5569963117d747bea5185f9d48441d07458466b6ce5738c446baed0397c03043cf7d5a + languageName: node + linkType: hard + +"@yarnpkg/plugin-compat@npm:^4.0.0-rc.27": + version: 4.0.0-rc.27 + resolution: "@yarnpkg/plugin-compat@npm:4.0.0-rc.27" + dependencies: + "@yarnpkg/extensions": "npm:^2.0.0-rc.9" + peerDependencies: + "@yarnpkg/core": ^4.0.0-rc.27 + "@yarnpkg/plugin-patch": ^4.0.0-rc.27 + checksum: be58b9c087539d4ff33839c1990360bc9cc520bce905653496af77d95a6552f9038f5e2fafe2b36d9aa6c9b120c067d57b0f1d05833f16ca085b08560cd32487 + languageName: node + linkType: hard + +"@yarnpkg/plugin-constraints@npm:^4.0.0-rc.27": + version: 4.0.0-rc.27 + resolution: "@yarnpkg/plugin-constraints@npm:4.0.0-rc.27" + dependencies: + "@yarnpkg/fslib": "npm:^3.0.0-rc.27" + clipanion: "npm:^3.2.0-rc.10" + lodash: "npm:^4.17.15" + tau-prolog: "npm:^0.2.66" + tslib: "npm:^2.4.0" + peerDependencies: + "@yarnpkg/cli": ^4.0.0-rc.27 + "@yarnpkg/core": ^4.0.0-rc.27 + checksum: dda250fa136ccb990cd48667fabd36ae95d46da1afa02de86ec06e8258a6b69f48708b02c70201bec75fbff72717edc6f2ab95fd5c631acc96a1525c0b227ff6 + languageName: node + linkType: hard + +"@yarnpkg/plugin-dlx@npm:^4.0.0-rc.27": + version: 4.0.0-rc.27 + resolution: "@yarnpkg/plugin-dlx@npm:4.0.0-rc.27" + dependencies: + "@yarnpkg/fslib": "npm:^3.0.0-rc.27" + clipanion: "npm:^3.2.0-rc.10" + tslib: "npm:^2.4.0" + peerDependencies: + "@yarnpkg/cli": ^4.0.0-rc.27 + "@yarnpkg/core": ^4.0.0-rc.27 + checksum: 969ba0957533260718c62fb5e22b3f1fe62abf0f13c3d31799e9d9f6196773c0e7907601713bdb9813c0825ba189e788b2f240bb2dad5e56eb96aa78ad129c05 + languageName: node + linkType: hard + +"@yarnpkg/plugin-essentials@npm:^4.0.0-rc.27": + version: 4.0.0-rc.27 + resolution: "@yarnpkg/plugin-essentials@npm:4.0.0-rc.27" + dependencies: + "@yarnpkg/fslib": "npm:^3.0.0-rc.27" + "@yarnpkg/parsers": "npm:^3.0.0-rc.27" + ci-info: "npm:^3.2.0" + clipanion: "npm:^3.2.0-rc.10" + enquirer: "npm:^2.3.6" + lodash: "npm:^4.17.15" + micromatch: "npm:^4.0.2" + semver: "npm:^7.1.2" + tslib: "npm:^2.4.0" + typanion: "npm:^3.3.0" + peerDependencies: + "@yarnpkg/cli": ^4.0.0-rc.27 + "@yarnpkg/core": ^4.0.0-rc.27 + "@yarnpkg/plugin-git": ^3.0.0-rc.27 + checksum: 9849a2fdbfc7e9b8157499e6a6f99a6c9fbd1bb6225b77bfc73ab9257edc08c395e2588b397684d3af134f1108e3a2369bdaa73c007e8ed5e8832baff5cced47 + languageName: node + linkType: hard + +"@yarnpkg/plugin-exec@npm:^3.0.0-rc.27": + version: 3.0.0-rc.27 + resolution: "@yarnpkg/plugin-exec@npm:3.0.0-rc.27" + dependencies: + "@yarnpkg/fslib": "npm:^3.0.0-rc.27" + tslib: "npm:^2.4.0" + peerDependencies: + "@yarnpkg/core": ^4.0.0-rc.27 + checksum: 97aa1c49ec502e2490341de23d46f4a8dc71f2e7cc313b24ad1d0bc7f5cc7936bc9d33be5194fd9f627d07b98706fc8c403588ab14cf3a2c200f58bc777aaa82 + languageName: node + linkType: hard + +"@yarnpkg/plugin-file@npm:^3.0.0-rc.27": + version: 3.0.0-rc.27 + resolution: "@yarnpkg/plugin-file@npm:3.0.0-rc.27" + dependencies: + "@yarnpkg/fslib": "npm:^3.0.0-rc.27" + "@yarnpkg/libzip": "npm:^3.0.0-rc.27" + tslib: "npm:^2.4.0" + peerDependencies: + "@yarnpkg/core": ^4.0.0-rc.27 + checksum: 19b0b21525f403b146ee27dc6f5d40ef8ba6fd1145ba20129db4131e5eb22d9c3241226f1cacbe6d2cd38ee1637e35e35bb644fe248becee3f7b1aafd4e5188f + languageName: node + linkType: hard + +"@yarnpkg/plugin-git@npm:^3.0.0-rc.27": + version: 3.0.0-rc.27 + resolution: "@yarnpkg/plugin-git@npm:3.0.0-rc.27" + dependencies: + "@types/semver": "npm:^7.1.0" + "@yarnpkg/fslib": "npm:^3.0.0-rc.27" + clipanion: "npm:^3.2.0-rc.10" + git-url-parse: "npm:11.1.2" + lodash: "npm:^4.17.15" + semver: "npm:^7.1.2" + tslib: "npm:^2.4.0" + peerDependencies: + "@yarnpkg/core": ^4.0.0-rc.27 + checksum: 1bee19fb071019ae6c5e89acbcfaaaa9827e71b8d7db392b88e28b85f58d367c8ccbcec8b062ed3e9a45e427720befe3468e1ad01ef33011caf439a3cd23d1c0 + languageName: node + linkType: hard + +"@yarnpkg/plugin-github@npm:^3.0.0-rc.27": + version: 3.0.0-rc.27 + resolution: "@yarnpkg/plugin-github@npm:3.0.0-rc.27" + dependencies: + "@yarnpkg/fslib": "npm:^3.0.0-rc.27" + tslib: "npm:^2.4.0" + peerDependencies: + "@yarnpkg/core": ^4.0.0-rc.27 + "@yarnpkg/plugin-git": ^3.0.0-rc.27 + checksum: 4fe8b2f3a9a503836a8823c2cc97279e9ef43c902d9aaa0682e4c06b1b49218259b19874ba93cda466639d4eec1bc85ea147f6eef6924fa0a1b53e7bc135214e + languageName: node + linkType: hard + +"@yarnpkg/plugin-http@npm:^3.0.0-rc.27": + version: 3.0.0-rc.27 + resolution: "@yarnpkg/plugin-http@npm:3.0.0-rc.27" + dependencies: + tslib: "npm:^2.4.0" + peerDependencies: + "@yarnpkg/core": ^4.0.0-rc.27 + checksum: ab6ad1e1adede4ce4d7d3526a1d500ee3c3eec3530cf1e6a18689ab4b66645fc4d22b7a92fcdf6dba7900e45c1e60790325837f6082ace7625129a4bdde53d93 + languageName: node + linkType: hard + +"@yarnpkg/plugin-init@npm:^4.0.0-rc.27": + version: 4.0.0-rc.27 + resolution: "@yarnpkg/plugin-init@npm:4.0.0-rc.27" + dependencies: + "@yarnpkg/fslib": "npm:^3.0.0-rc.27" + clipanion: "npm:^3.2.0-rc.10" + tslib: "npm:^2.4.0" + peerDependencies: + "@yarnpkg/cli": ^4.0.0-rc.27 + "@yarnpkg/core": ^4.0.0-rc.27 + checksum: ccce21ca3c6cd80a4af7288c8c8768a8c7a5b595dd27b66ba0b1d9484ff914bf2b62540122c222429ef9dd7bb05b2b3d45e00156d934a5d90b17bc983cc8bd53 + languageName: node + linkType: hard + +"@yarnpkg/plugin-interactive-tools@npm:^4.0.0-rc.27": + version: 4.0.0-rc.27 + resolution: "@yarnpkg/plugin-interactive-tools@npm:4.0.0-rc.27" + dependencies: + "@yarnpkg/libui": "npm:^3.0.0-rc.27" + algoliasearch: "npm:^4.2.0" + clipanion: "npm:^3.2.0-rc.10" + diff: "npm:^5.1.0" + ink: "npm:^3.0.8" + ink-text-input: "npm:^4.0.1" + react: "npm:^16.13.1" + semver: "npm:^7.1.2" + tslib: "npm:^2.4.0" + peerDependencies: + "@yarnpkg/cli": ^4.0.0-rc.27 + "@yarnpkg/core": ^4.0.0-rc.27 + "@yarnpkg/plugin-essentials": ^4.0.0-rc.27 + checksum: 4c009bceee9dfe426e2b323cec08a5957c51e8e27e0ec03b24d96b13465aa6f0f5375d658e33e4d5f9255824f4dbc904bd762529177817256ed066c50435a504 + languageName: node + linkType: hard + +"@yarnpkg/plugin-link@npm:^3.0.0-rc.27": + version: 3.0.0-rc.27 + resolution: "@yarnpkg/plugin-link@npm:3.0.0-rc.27" + dependencies: + "@yarnpkg/fslib": "npm:^3.0.0-rc.27" + tslib: "npm:^2.4.0" + peerDependencies: + "@yarnpkg/core": ^4.0.0-rc.27 + checksum: 6232fae695bd250cef895351094448d17a9726964a0bb4d1430c98b8b3d42395d46bcf64d2d7a3838c977a41b5b116b8d6097600b5f66a352405c4224e4fc588 + languageName: node + linkType: hard + +"@yarnpkg/plugin-nm@npm:^4.0.0-rc.27": + version: 4.0.0-rc.27 + resolution: "@yarnpkg/plugin-nm@npm:4.0.0-rc.27" + dependencies: + "@yarnpkg/fslib": "npm:^3.0.0-rc.27" + "@yarnpkg/libzip": "npm:^3.0.0-rc.27" + "@yarnpkg/nm": "npm:^4.0.0-rc.27" + "@yarnpkg/parsers": "npm:^3.0.0-rc.27" + "@yarnpkg/plugin-pnp": "npm:^4.0.0-rc.27" + "@yarnpkg/pnp": "npm:^4.0.0-rc.27" + "@zkochan/cmd-shim": "npm:^5.1.0" + clipanion: "npm:^3.2.0-rc.10" + tslib: "npm:^2.4.0" + peerDependencies: + "@yarnpkg/cli": ^4.0.0-rc.27 + "@yarnpkg/core": ^4.0.0-rc.27 + checksum: ac86d4c613ba32d791ed78a0a1c03f3e3709e3f6f7db9bc2c78406e1002cd2b91b4f169cc100a5104be5b3caee201514eef0393d907632dbd8990592a72fe6a9 + languageName: node + linkType: hard + +"@yarnpkg/plugin-npm-cli@npm:^4.0.0-rc.27": + version: 4.0.0-rc.27 + resolution: "@yarnpkg/plugin-npm-cli@npm:4.0.0-rc.27" + dependencies: + "@yarnpkg/fslib": "npm:^3.0.0-rc.27" + clipanion: "npm:^3.2.0-rc.10" + enquirer: "npm:^2.3.6" + micromatch: "npm:^4.0.2" + semver: "npm:^7.1.2" + tslib: "npm:^2.4.0" + typanion: "npm:^3.3.0" + peerDependencies: + "@yarnpkg/cli": ^4.0.0-rc.27 + "@yarnpkg/core": ^4.0.0-rc.27 + "@yarnpkg/plugin-npm": ^3.0.0-rc.27 + "@yarnpkg/plugin-pack": ^4.0.0-rc.27 + checksum: 8a46ad89462c84061564ac0896516df7e8999704291ef375c1e0bc9b29163438bc6b4c167dcd362c7aab51331e962817be2d8e2ec8482d007f3ac27721623377 + languageName: node + linkType: hard + +"@yarnpkg/plugin-npm@npm:^3.0.0-rc.27": + version: 3.0.0-rc.27 + resolution: "@yarnpkg/plugin-npm@npm:3.0.0-rc.27" + dependencies: + "@yarnpkg/fslib": "npm:^3.0.0-rc.27" + enquirer: "npm:^2.3.6" + semver: "npm:^7.1.2" + ssri: "npm:^6.0.1" + tslib: "npm:^2.4.0" + peerDependencies: + "@yarnpkg/core": ^4.0.0-rc.27 + "@yarnpkg/plugin-pack": ^4.0.0-rc.27 + checksum: 4921b660c37293ac5bbd4bc31b2f9758e0d0b2bb511f2f3530dff6215b24224b8c2c5715a0fb7eae27c8c861c468404955e54455ed71232fe1921880655bb46c + languageName: node + linkType: hard + +"@yarnpkg/plugin-pack@npm:^4.0.0-rc.27": + version: 4.0.0-rc.27 + resolution: "@yarnpkg/plugin-pack@npm:4.0.0-rc.27" + dependencies: + "@yarnpkg/fslib": "npm:^3.0.0-rc.27" + clipanion: "npm:^3.2.0-rc.10" + micromatch: "npm:^4.0.2" + tar-stream: "npm:^2.0.1" + tslib: "npm:^2.4.0" + peerDependencies: + "@yarnpkg/cli": ^4.0.0-rc.27 + "@yarnpkg/core": ^4.0.0-rc.27 + checksum: 58bd53dcfde40b4b69dd805743d1e678c1104623d03de953f4bbd014e606be566de16c557baa0de9625cf7630b3e4eb96c221ca7cdd6b04f8394d97b963ee16b + languageName: node + linkType: hard + +"@yarnpkg/plugin-patch@npm:^4.0.0-rc.27": + version: 4.0.0-rc.27 + resolution: "@yarnpkg/plugin-patch@npm:4.0.0-rc.27" + dependencies: + "@yarnpkg/fslib": "npm:^3.0.0-rc.27" + "@yarnpkg/libzip": "npm:^3.0.0-rc.27" + clipanion: "npm:^3.2.0-rc.10" + tslib: "npm:^2.4.0" + peerDependencies: + "@yarnpkg/cli": ^4.0.0-rc.27 + "@yarnpkg/core": ^4.0.0-rc.27 + checksum: f2436083d96a334ecfed20417c24a491604056ccbca15563ca4e35d5b615b32f5d8bed1d5c8fd7622928feca82a66ebd820b931a3c9ebb274ea6779881a054c0 + languageName: node + linkType: hard + +"@yarnpkg/plugin-pnp@npm:^4.0.0-rc.27": + version: 4.0.0-rc.27 + resolution: "@yarnpkg/plugin-pnp@npm:4.0.0-rc.27" + dependencies: + "@types/semver": "npm:^7.1.0" + "@yarnpkg/fslib": "npm:^3.0.0-rc.27" + "@yarnpkg/plugin-stage": "npm:^4.0.0-rc.27" + "@yarnpkg/pnp": "npm:^4.0.0-rc.27" + clipanion: "npm:^3.2.0-rc.10" + micromatch: "npm:^4.0.2" + semver: "npm:^7.1.2" + tslib: "npm:^2.4.0" + peerDependencies: + "@yarnpkg/cli": ^4.0.0-rc.27 + "@yarnpkg/core": ^4.0.0-rc.27 + checksum: d8629aeb769c277a763def9732b883f3c7e113f50ae0158a5d7ea662e74d1b5a74611594964656682569ec9f1e244b9e8a25da91c4cfad162a8544b8564e588c + languageName: node + linkType: hard + +"@yarnpkg/plugin-pnpm@npm:^2.0.0-rc.27": + version: 2.0.0-rc.27 + resolution: "@yarnpkg/plugin-pnpm@npm:2.0.0-rc.27" + dependencies: + "@yarnpkg/fslib": "npm:^3.0.0-rc.27" + "@yarnpkg/plugin-pnp": "npm:^4.0.0-rc.27" + "@yarnpkg/plugin-stage": "npm:^4.0.0-rc.27" + clipanion: "npm:^3.2.0-rc.10" + p-limit: "npm:^2.2.0" + tslib: "npm:^2.4.0" + peerDependencies: + "@yarnpkg/cli": ^4.0.0-rc.27 + "@yarnpkg/core": ^4.0.0-rc.27 + checksum: d7a2eb1367dc84876c41b09448daf62820c68162df0de6de9cba57e2152473f209a493fe12c9685e5374c0832a3b7dbc2cc9037cb8fa994ff22e3a700ad8fdc2 + languageName: node + linkType: hard + +"@yarnpkg/plugin-stage@npm:^4.0.0-rc.27": + version: 4.0.0-rc.27 + resolution: "@yarnpkg/plugin-stage@npm:4.0.0-rc.27" + dependencies: + "@yarnpkg/fslib": "npm:^3.0.0-rc.27" + clipanion: "npm:^3.2.0-rc.10" + tslib: "npm:^2.4.0" + peerDependencies: + "@yarnpkg/cli": ^4.0.0-rc.27 + "@yarnpkg/core": ^4.0.0-rc.27 + checksum: 2960b5ed00eac739f5c06df23faac1f443e2f8f8c4239b32b8c6e48966b8fb34af8953aec36bd2c0b546e6c208b4d7038542131ab0979a50941bbfc8bc0b9ce1 + languageName: node + linkType: hard + +"@yarnpkg/plugin-typescript@npm:^4.0.0-rc.27": + version: 4.0.0-rc.27 + resolution: "@yarnpkg/plugin-typescript@npm:4.0.0-rc.27" + dependencies: + "@yarnpkg/fslib": "npm:^3.0.0-rc.27" + "@yarnpkg/plugin-pack": "npm:^4.0.0-rc.27" + algoliasearch: "npm:^4.2.0" + semver: "npm:^7.1.2" + tslib: "npm:^2.4.0" + peerDependencies: + "@yarnpkg/cli": ^4.0.0-rc.27 + "@yarnpkg/core": ^4.0.0-rc.27 + "@yarnpkg/plugin-essentials": ^4.0.0-rc.27 + checksum: ef38d4a2f9120bdc374e6fa5487c74f5f5ba96bed32785cb9dc0945a2319461fc5faa49f8cebd5f29af5796f4af44c665734cd42a13210c2cc3d545eaa950168 + languageName: node + linkType: hard + +"@yarnpkg/plugin-version@npm:^4.0.0-rc.27": + version: 4.0.0-rc.27 + resolution: "@yarnpkg/plugin-version@npm:4.0.0-rc.27" + dependencies: + "@yarnpkg/fslib": "npm:^3.0.0-rc.27" + "@yarnpkg/libui": "npm:^3.0.0-rc.27" + "@yarnpkg/parsers": "npm:^3.0.0-rc.27" + clipanion: "npm:^3.2.0-rc.10" + ink: "npm:^3.0.8" + lodash: "npm:^4.17.15" + react: "npm:^16.13.1" + semver: "npm:^7.1.2" + tslib: "npm:^2.4.0" + peerDependencies: + "@yarnpkg/cli": ^4.0.0-rc.27 + "@yarnpkg/core": ^4.0.0-rc.27 + "@yarnpkg/plugin-git": ^3.0.0-rc.27 + checksum: 592067364f1876e32732928c04eeae941548572fd38463b544aec8e5f49f2120ad82d2201d241d44661dee6ecadc525c4f191eef200f5a40ed293888a75e5c08 + languageName: node + linkType: hard + +"@yarnpkg/plugin-workspace-tools@npm:^4.0.0-rc.27": + version: 4.0.0-rc.27 + resolution: "@yarnpkg/plugin-workspace-tools@npm:4.0.0-rc.27" + dependencies: + "@yarnpkg/fslib": "npm:^3.0.0-rc.27" + clipanion: "npm:^3.2.0-rc.10" + micromatch: "npm:^4.0.2" + p-limit: "npm:^2.2.0" + tslib: "npm:^2.4.0" + typanion: "npm:^3.3.0" + peerDependencies: + "@yarnpkg/cli": ^4.0.0-rc.27 + "@yarnpkg/core": ^4.0.0-rc.27 + "@yarnpkg/plugin-git": ^3.0.0-rc.27 + checksum: 3af0e135faf27f79f438c488a9c30531ec70c6cd34e7016b042f15dbe12718616158b3460f682f8ad306eb7d2318dfbb94e96619473941c000394e630d8612ba + languageName: node + linkType: hard + +"@yarnpkg/pnp@npm:^4.0.0-rc.27": + version: 4.0.0-rc.27 + resolution: "@yarnpkg/pnp@npm:4.0.0-rc.27" + dependencies: + "@types/node": "npm:^18.7.6" + "@yarnpkg/fslib": "npm:^3.0.0-rc.27" + checksum: ab97c00c95a37ff6f143f58806650ef00a87a6c46d3754b295319ef9244766c4e5f0e3499cf0e6a26fe1c4b1ab907e3a260ddcccca1d0d96bb4cb311f44c20ef + languageName: node + linkType: hard + +"@yarnpkg/shell@npm:^4.0.0-rc.27": + version: 4.0.0-rc.27 + resolution: "@yarnpkg/shell@npm:4.0.0-rc.27" + dependencies: + "@yarnpkg/fslib": "npm:^3.0.0-rc.27" + "@yarnpkg/parsers": "npm:^3.0.0-rc.27" + chalk: "npm:^3.0.0" + clipanion: "npm:^3.2.0-rc.10" + cross-spawn: "npm:7.0.3" + fast-glob: "npm:^3.2.2" + micromatch: "npm:^4.0.2" + tslib: "npm:^2.4.0" + bin: + shell: ./lib/cli.js + checksum: 546766898958626d1c913ddb8220cb879fa60ba474a615799b8a295c354a318429a75949b4d9ac92e082d3f59679f56952a9d9c1f64a6ebebeff941bb52f2e08 + languageName: node + linkType: hard + +"@zkochan/cmd-shim@npm:^5.1.0": + version: 5.3.1 + resolution: "@zkochan/cmd-shim@npm:5.3.1" + dependencies: + cmd-extension: "npm:^1.0.2" + is-windows: "npm:^1.0.2" + checksum: a28f651f146101a3b96443d18e02253791cbc15f40a48bc146ad78f908e5e3b50473fb145fa8ad12b24fe5df22d23e54bff9c763280b7d43a752bfaeb3840046 + languageName: node + linkType: hard + +"abbrev@npm:1, abbrev@npm:^1.0.0": + version: 1.1.1 + resolution: "abbrev@npm:1.1.1" + checksum: 76e7fb9283b13208d5cf55df46669f9cf5e72007cb66595849be2d5e96c0a43704132d030c5705f9447266183986e1e8a4fc3e9578cb60a1f19cf0157664f957 + languageName: node + linkType: hard + +"agent-base@npm:6, agent-base@npm:^6.0.2": + version: 6.0.2 + resolution: "agent-base@npm:6.0.2" + dependencies: + debug: "npm:4" + checksum: 2d0cdeccfe3058cb18661db3bcbb6cc092144eaecd7da3ee4321be0490d5654e53dbd08c28690d83f55f791b0369819f5872ee5122a2aad0a39edbc51798f01b + languageName: node + linkType: hard + +"agentkeepalive@npm:^4.2.1": + version: 4.2.1 + resolution: "agentkeepalive@npm:4.2.1" + dependencies: + debug: "npm:^4.1.0" + depd: "npm:^1.1.2" + humanize-ms: "npm:^1.2.1" + checksum: c0a7067d1bec147b40bc046ed3ad32bfff35014e7d20e21219f90a21df661d85124e5ffa5bd89118d7ceac9105e2e9b0525ea317a2958b39a357535394b483b0 + languageName: node + linkType: hard + +"aggregate-error@npm:^3.0.0": + version: 3.1.0 + resolution: "aggregate-error@npm:3.1.0" + dependencies: + clean-stack: "npm:^2.0.0" + indent-string: "npm:^4.0.0" + checksum: 676b1da86a0ff06a29d9a318109752990c28aae4600f6d094845a679f388a2a246402d993d223165d208122d81823235969132dc09439de2eee50a9f48fa9db9 + languageName: node + linkType: hard + +"algoliasearch@npm:^4.2.0": + version: 4.14.2 + resolution: "algoliasearch@npm:4.14.2" + dependencies: + "@algolia/cache-browser-local-storage": "npm:4.14.2" + "@algolia/cache-common": "npm:4.14.2" + "@algolia/cache-in-memory": "npm:4.14.2" + "@algolia/client-account": "npm:4.14.2" + "@algolia/client-analytics": "npm:4.14.2" + "@algolia/client-common": "npm:4.14.2" + "@algolia/client-personalization": "npm:4.14.2" + "@algolia/client-search": "npm:4.14.2" + "@algolia/logger-common": "npm:4.14.2" + "@algolia/logger-console": "npm:4.14.2" + "@algolia/requester-browser-xhr": "npm:4.14.2" + "@algolia/requester-common": "npm:4.14.2" + "@algolia/requester-node-http": "npm:4.14.2" + "@algolia/transporter": "npm:4.14.2" + checksum: 82bc1824c708ae19441c09ee9befe355209e52ebd6dd255eb5c046410ca9a549ad228e07616af67a2648a4ee93c8a922f4db4f1bb9e8a72916821cf7572f95de + languageName: node + linkType: hard + +"ansi-colors@npm:^4.1.1": + version: 4.1.3 + resolution: "ansi-colors@npm:4.1.3" + checksum: a185f33883845ae5e37481749adad1cf1abf86c41c3ad3ad4c5b951f911ecb4df6a802da9acd4329726fbed0a29a43ae5ae38d179b453bc33f59bfbbb69a5c38 + languageName: node + linkType: hard + +"ansi-escapes@npm:^4.2.1": + version: 4.3.2 + resolution: "ansi-escapes@npm:4.3.2" + dependencies: + type-fest: "npm:^0.21.3" + checksum: da33f33b3b792e7273cefc1ec150afbc332cab602757d2ab70fb90e5c5cfa173b10bc4a0d9d0c60479ed60e25cdf35897a82f1e498987358a6087b99300872cc + languageName: node + linkType: hard + +"ansi-regex@npm:^5.0.1": + version: 5.0.1 + resolution: "ansi-regex@npm:5.0.1" + checksum: 627f94ee7fcc5e03186646ebd11ca2ccd954f3cb48fc6a3f42883db6bbf3df5dfba06d62647b2f72c975349fc072c5c44808b7da26d08a9313a7f304acda2efb + languageName: node + linkType: hard + +"ansi-styles@npm:^4.0.0, ansi-styles@npm:^4.1.0": + version: 4.3.0 + resolution: "ansi-styles@npm:4.3.0" + dependencies: + color-convert: "npm:^2.0.1" + checksum: d15dab617b78cbc96f10016e929e921ad73695753de4e45a911ecee6e29aa45c71d58f1ffaf8e49889dbe726dbdb2bbe5b4e3a7bf1c517f8740ae83a29b7df25 + languageName: node + linkType: hard + +"anymatch@npm:~3.1.2": + version: 3.1.2 + resolution: "anymatch@npm:3.1.2" + dependencies: + normalize-path: "npm:^3.0.0" + picomatch: "npm:^2.0.4" + checksum: b9266228a3e1406086ece57c20f9cbfc9755375218697c79a71fba9245ad23a672687314422e97753fbb3bccd245d7c76974d7c15ba513386b499de6ba002300 + languageName: node + linkType: hard + +"aproba@npm:^1.0.3 || ^2.0.0": + version: 2.0.0 + resolution: "aproba@npm:2.0.0" + checksum: 02a080748877ae9a7d8973c37c688669a59971c5ec38a4c44f4a7176a52313da0b0c1e1518f80d3b80d75d0d4a16f25a4151a2316bad3db06bb34cb0245cc4fa + languageName: node + linkType: hard + +"are-we-there-yet@npm:^3.0.0": + version: 3.0.1 + resolution: "are-we-there-yet@npm:3.0.1" + dependencies: + delegates: "npm:^1.0.0" + readable-stream: "npm:^3.6.0" + checksum: 7137e25713c611cf38054434ba377e2f7ad3a4bbdb7ac3565ed5caac786080d1c86ed0b280edd917b4c1001ee0d6ed7bdd53effd69b5af4251e5a4fd18d09fbe + languageName: node + linkType: hard + +"argparse@npm:^1.0.7": + version: 1.0.10 + resolution: "argparse@npm:1.0.10" + dependencies: + sprintf-js: "npm:~1.0.2" + checksum: 6112e287a501a4badb8451c3b84420daa75dc4e1ac55d7ce086a492b2cf7d55f2fc0473acb62fc6af2d8013cf255d5d24734c10b4c2c6e440731644f8845c96b + languageName: node + linkType: hard + +"array-union@npm:^2.1.0": + version: 2.1.0 + resolution: "array-union@npm:2.1.0" + checksum: 0644809ce6ada3bcf5d25379f3c96f0335dd45516da5303fcb9eb2477dc8ad222fe39be2d0b58a7bbc3207e68d714e5f592316b881e2b13a11cd705d11cc5d45 + languageName: node + linkType: hard + +"astral-regex@npm:^2.0.0": + version: 2.0.0 + resolution: "astral-regex@npm:2.0.0" + checksum: e24f6eb6f33ba55ffe8d89c60ab490791cd29772a896339388db11efcbfcd6da0d6ed59b655933f7c26ca4c2ae926f86d21bdedb142b69829d9d4a1074faa1d2 + languageName: node + linkType: hard + +"auto-bind@npm:4.0.0": + version: 4.0.0 + resolution: "auto-bind@npm:4.0.0" + checksum: a518f7663db0f76bbe80c8a863dbe6c9362a4594517a51827f410e8d30a6b20a92d580cdddba733196ab42760ddf2fd5f08e1619d0faeea6b33d95c4df5b71a8 + languageName: node + linkType: hard + +"balanced-match@npm:^1.0.0": + version: 1.0.2 + resolution: "balanced-match@npm:1.0.2" + checksum: 9ca7fca1845f06edbd8478e209a2e8eed5bb148a021719e77affeaf0c61e45af20279e4540a9f11942acc27c078fc132ff0ebc9c16a403033cff5af3d8199f40 + languageName: node + linkType: hard + +"base64-js@npm:^1.3.1": + version: 1.5.1 + resolution: "base64-js@npm:1.5.1" + checksum: fbd7996978cfe0dd378103fa8999e4acee99b8840d49f452457fa8cb418bad4c20ec9ef6b196a0dc63591f0416a4b8c8d220607292cdaf3998b88685bc0f6c14 + languageName: node + linkType: hard + +"binary-extensions@npm:^2.0.0": + version: 2.2.0 + resolution: "binary-extensions@npm:2.2.0" + checksum: 16cf7c0cfd2d04c0d7a115473b14054d6b01c077d8894f5eadc53e0cc1a0bea512a6187b314b26c99efd0c5f02b2871ab413017916d9ecaa47fa23d0f519adc6 + languageName: node + linkType: hard + +"bl@npm:^4.0.3": + version: 4.1.0 + resolution: "bl@npm:4.1.0" + dependencies: + buffer: "npm:^5.5.0" + inherits: "npm:^2.0.4" + readable-stream: "npm:^3.4.0" + checksum: f6a0c17835e457f148ccc8703be5752de9cd79ef7343710fda7aac905a7187a31321005999b3b1b7ab3e8c2362a27222e7df110f7556fa3077e4fbc226ef5d5a + languageName: node + linkType: hard + +"brace-expansion@npm:^1.1.7": + version: 1.1.11 + resolution: "brace-expansion@npm:1.1.11" + dependencies: + balanced-match: "npm:^1.0.0" + concat-map: "npm:0.0.1" + checksum: 5ecc6da29cd3b4d49a832fd8e48f3a8b6ac058f82fe778eb6751ed30a206c5ec5171f6f632aa1946ffb4f8151136740803f620b15edca8437a9348cbb21a8ba8 + languageName: node + linkType: hard + +"brace-expansion@npm:^2.0.1": + version: 2.0.1 + resolution: "brace-expansion@npm:2.0.1" + dependencies: + balanced-match: "npm:^1.0.0" + checksum: 0f8d0d6a165d636fed93a7dd9321a5ae122cac9a672d8a9e01997e4ae09743cb3cbfb0a6e6b32303cda0f1f40617e2c0953f28f59a6f01d6d12c9698a3f0e41b + languageName: node + linkType: hard + +"braces@npm:^3.0.2, braces@npm:~3.0.2": + version: 3.0.2 + resolution: "braces@npm:3.0.2" + dependencies: + fill-range: "npm:^7.0.1" + checksum: 1aa7f7f39e1dff23894196303515503dd945f36adcb78073ee067b421ecc595265556911183b24d1bc4e51011d3536d63d117cb4493e5123fcc7456596a93637 + languageName: node + linkType: hard + +"buffer@npm:^5.5.0": + version: 5.7.1 + resolution: "buffer@npm:5.7.1" + dependencies: + base64-js: "npm:^1.3.1" + ieee754: "npm:^1.1.13" + checksum: 8e611bed4d0309f68565f233d604882560f1c5aece713c7cd4c3111dbfad1ed82bb0e7610685e434f175ee4f39d98bf3a47c5b9b3a3370df0ec85a977dfe837e + languageName: node + linkType: hard + +"cacache@npm:^16.1.0": + version: 16.1.3 + resolution: "cacache@npm:16.1.3" + dependencies: + "@npmcli/fs": "npm:^2.1.0" + "@npmcli/move-file": "npm:^2.0.0" + chownr: "npm:^2.0.0" + fs-minipass: "npm:^2.1.0" + glob: "npm:^8.0.1" + infer-owner: "npm:^1.0.4" + lru-cache: "npm:^7.7.1" + minipass: "npm:^3.1.6" + minipass-collect: "npm:^1.0.2" + minipass-flush: "npm:^1.0.5" + minipass-pipeline: "npm:^1.2.4" + mkdirp: "npm:^1.0.4" + p-map: "npm:^4.0.0" + promise-inflight: "npm:^1.0.1" + rimraf: "npm:^3.0.2" + ssri: "npm:^9.0.0" + tar: "npm:^6.1.11" + unique-filename: "npm:^2.0.0" + checksum: 54f39565219c47ac624e0efeae123551b5391844f18ae69d0c344f51ce2b9ae4adec62316e5eae7e11cf83c3c21f726a0117d55400182779dce687887ce3f50e + languageName: node + linkType: hard + +"cacheable-lookup@npm:^5.0.3": + version: 5.0.4 + resolution: "cacheable-lookup@npm:5.0.4" + checksum: 08f9009465fbbc867446e41af57c31e1d9f37723d9eab8efe340b71745eded3467b2d707840ec6939d466a961e385493af50bd14c3b4c6854dc2c2e0ec7626b3 + languageName: node + linkType: hard + +"cacheable-request@npm:^7.0.2": + version: 7.0.2 + resolution: "cacheable-request@npm:7.0.2" + dependencies: + clone-response: "npm:^1.0.2" + get-stream: "npm:^5.1.0" + http-cache-semantics: "npm:^4.0.0" + keyv: "npm:^4.0.0" + lowercase-keys: "npm:^2.0.0" + normalize-url: "npm:^6.0.1" + responselike: "npm:^2.0.0" + checksum: d48bf325895ea31b1f8a556060676239af59433e7626c37cced3af45f9165e3e62f22eab72e027cd92d86e822a55de682d80a8c31c74af69923fa4fe08dbe3d5 + languageName: node + linkType: hard + +"call-bind@npm:^1.0.0": + version: 1.0.2 + resolution: "call-bind@npm:1.0.2" + dependencies: + function-bind: "npm:^1.1.1" + get-intrinsic: "npm:^1.0.2" + checksum: 6fccea8a00310bf2e2b2a07aca0eddbdcd5de2eec9dfe880c1c8b0b7fd3c6809bf28aab0209aa530a35a2fba48587733521df7f83f8d5354047afed78b69a36b + languageName: node + linkType: hard + +"camelcase@npm:^5.3.1": + version: 5.3.1 + resolution: "camelcase@npm:5.3.1" + checksum: 3875260be8f9761ab3870045b7c5c826f584070fe92f5c13a2800a84572d6edf16e6da01db01e135c6d080569fcd690bd2376bdabc3bc80a91da81d1b1c5e773 + languageName: node + linkType: hard + +"chalk@npm:^3.0.0": + version: 3.0.0 + resolution: "chalk@npm:3.0.0" + dependencies: + ansi-styles: "npm:^4.1.0" + supports-color: "npm:^7.1.0" + checksum: b72cc49b5655487fe118f9074f1d18b2782bdea5b75e0c185e687c8d1218ec51fb2ac4d3480a8473e879383256cfa11059f0ef48b8b2ec137e0b3d80205cc9ef + languageName: node + linkType: hard + +"chalk@npm:^4.1.0": + version: 4.1.2 + resolution: "chalk@npm:4.1.2" + dependencies: + ansi-styles: "npm:^4.1.0" + supports-color: "npm:^7.1.0" + checksum: cb96ab47eb1b55525e72caac9eed1513bff28e686df7eee6b04379c80922df21c8283d9938af16a645826c94c9e19fb52ad63cbead6b5073d08ae5f8fa2661a2 + languageName: node + linkType: hard + +"chokidar@npm:^3.5.2": + version: 3.5.3 + resolution: "chokidar@npm:3.5.3" + dependencies: + anymatch: "npm:~3.1.2" + braces: "npm:~3.0.2" + fsevents: "npm:~2.3.2" + glob-parent: "npm:~5.1.2" + is-binary-path: "npm:~2.1.0" + is-glob: "npm:~4.0.1" + normalize-path: "npm:~3.0.0" + readdirp: "npm:~3.6.0" + dependenciesMeta: + fsevents: + optional: true + checksum: eb45bf6464f6c871e2b46926eaaf35abc06624d4ca8b894bc7c927d8ac808e680d977c37283276992159360767d51c64b4c9bb91ece91beceaf3cb4abe555f99 + languageName: node + linkType: hard + +"chownr@npm:^2.0.0": + version: 2.0.0 + resolution: "chownr@npm:2.0.0" + checksum: 7b240ff920db951fd3841116c5e0e2ec4750e20c85cd044ea78f636202e1fa47ce0a20d48c3c912edc52ea0f1615aba37bdd6297d3a731b517647ed33c3dee09 + languageName: node + linkType: hard + +"ci-info@npm:^2.0.0": + version: 2.0.0 + resolution: "ci-info@npm:2.0.0" + checksum: 3419c7c2e86345d5b9c6d4ee8d43b9b557e45bddcf491e6d0b14f1ea815fc2147a62e328b6da30cf2a748f9592c3ceafc702e68b34b9e2e58fd562c359cae17d + languageName: node + linkType: hard + +"ci-info@npm:^3.2.0": + version: 3.5.0 + resolution: "ci-info@npm:3.5.0" + checksum: d80d63d9c549c277a9feebb83cb300df5b8dbc2a799d35a413af4aaa31f6c1635216cdc52b3232846501d31eff0684c583cf24db3c770cdf2f0fcfcac4835d86 + languageName: node + linkType: hard + +"clean-stack@npm:^2.0.0": + version: 2.2.0 + resolution: "clean-stack@npm:2.2.0" + checksum: 0a476c914f0a5e9e12b215729e1a633fcbdd47b8c3d508ebe6441f2ef8d5047fdd0800926349dd18253db4bfcab3e48aa0aca1f2e7f5d614f7194778d7851be4 + languageName: node + linkType: hard + +"cli-boxes@npm:^2.2.0": + version: 2.2.1 + resolution: "cli-boxes@npm:2.2.1" + checksum: a1e6dc8c4c3cacc1f9a265099fc00dc4a4f77485d3f7bcdeecb440d2e632d0e678756ebdfee7e5500f2104deccfa0ea9585d76a84cc92ab4ed96939ef12c0c65 + languageName: node + linkType: hard + +"cli-cursor@npm:^3.1.0": + version: 3.1.0 + resolution: "cli-cursor@npm:3.1.0" + dependencies: + restore-cursor: "npm:^3.1.0" + checksum: 953cdb0291450958e4745da72c078865555c4cce31d48681a51266d14c44ab0641d819762044fd25d6220eebbc878a38acfad913d633eafd3403f9637b1ba4b0 + languageName: node + linkType: hard + +"cli-truncate@npm:^2.1.0": + version: 2.1.0 + resolution: "cli-truncate@npm:2.1.0" + dependencies: + slice-ansi: "npm:^3.0.0" + string-width: "npm:^4.2.0" + checksum: 883f07a00218d9e78d2370fb94a0afd4c9898ed76b99613db0b6ac54fb5ce597d26857cae09fa0bc700eb6f43e1e60437bd17d1b909965d603ef203cd7a09a17 + languageName: node + linkType: hard + +"clipanion@npm:^3.2.0-rc.10": + version: 3.2.0-rc.13 + resolution: "clipanion@npm:3.2.0-rc.13" + dependencies: + typanion: "npm:^3.8.0" + peerDependencies: + typanion: "*" + checksum: 46660d2fc75b5b2ecc642fb4ca5371c95984c6e0730b6df9a42cf9a5f0066653cde33014a488296c106aa66c7387e18d1c578d61daa6ca29646aacd41965d219 + languageName: node + linkType: hard + +"clone-response@npm:^1.0.2": + version: 1.0.3 + resolution: "clone-response@npm:1.0.3" + dependencies: + mimic-response: "npm:^1.0.0" + checksum: c62b009bcb5ad7fb11ba8781e04ee702e9e37226d84578ecd3c4f2aa4607313eb49f3e0d9a8435fe9d93d72962dcfff0f3a659a92e40e2917588b27eece4d744 + languageName: node + linkType: hard + +"cmd-extension@npm:^1.0.2": + version: 1.0.2 + resolution: "cmd-extension@npm:1.0.2" + checksum: c0f4db69b59c2eac02b9683e78bab11a9053ca945b8c185ee712e6cb25160350f7485abb068b7a23405b1ef8d0157af790d5fa07a0d9d5551ff7968804a62ad0 + languageName: node + linkType: hard + +"code-excerpt@npm:^3.0.0": + version: 3.0.0 + resolution: "code-excerpt@npm:3.0.0" + dependencies: + convert-to-spaces: "npm:^1.0.1" + checksum: 390950601f7e849c3f26ea2a5ff81c18b2412970c2b44e10fc0ec6712124ab1e4e3cbd331bf1a7900c7ea67ca9739f8c2b6c9300c266bd0e01cfe1ed0a733c8b + languageName: node + linkType: hard + +"color-convert@npm:^2.0.1": + version: 2.0.1 + resolution: "color-convert@npm:2.0.1" + dependencies: + color-name: "npm:~1.1.4" + checksum: bf4d19d12621eae71a531e5b977f46717b15e0d3253f25790f5779b7577124e4d9c4597df05cee79e8f8e8fc14add04e738a659ee4336ee0cc5587ebc3c602e7 + languageName: node + linkType: hard + +"color-name@npm:~1.1.4": + version: 1.1.4 + resolution: "color-name@npm:1.1.4" + checksum: 80acf64638343898f5b36825f4c9715ced380e738400b308f3f90ca2327f2f98f0c2cfb1f1a6447f267a2e1d1ea2214f26e948d8acab547e5478e2b0816c7c30 + languageName: node + linkType: hard + +"color-support@npm:^1.1.3": + version: 1.1.3 + resolution: "color-support@npm:1.1.3" + bin: + color-support: bin.js + checksum: 8dc879a976be92306773276728e0bbb0925478b2373f133a98e563c497ccd58f220b9c30cea37c72678fe071627d7391b3751a1b92aaa5e872cd278b00b96b74 + languageName: node + linkType: hard + +"commander@npm:7.2.0": + version: 7.2.0 + resolution: "commander@npm:7.2.0" + checksum: 1270a98c752348d62803dd6214bba584a13e5c80e0d32d590740f26c534209882a93daf471697326ad80b3f4f0417df31aca7b127e01efee58fe883b47c1a492 + languageName: node + linkType: hard + +"concat-map@npm:0.0.1": + version: 0.0.1 + resolution: "concat-map@npm:0.0.1" + checksum: 88222f18b3a68b71fe4473a146c8ed3315ec0488703104319c53543ad4668af3e79418ab79e2fa8032ee04c3eb45cc478815b89877a048cc5ba34e201bc15c35 + languageName: node + linkType: hard + +"console-control-strings@npm:^1.1.0": + version: 1.1.0 + resolution: "console-control-strings@npm:1.1.0" + checksum: d286ffd439aac97472557325e6aa4cc3a2eefe495a70a9640b89508880db4bba1bd1b29bb011608c23033d884c84cac8da95c8f12ca0ec69ccc70d6d5f39c618 + languageName: node + linkType: hard + +"convert-to-spaces@npm:^1.0.1": + version: 1.0.2 + resolution: "convert-to-spaces@npm:1.0.2" + checksum: c5df4ebe4a13dab0dfead657f83b36fea553b088ad5fc3240eb2c5193f569e28d980c9542bf2d105e9222d5c69d0ac9152f77522373d71472b79b51491574f72 + languageName: node + linkType: hard + +"cross-spawn@npm:7.0.3": + version: 7.0.3 + resolution: "cross-spawn@npm:7.0.3" + dependencies: + path-key: "npm:^3.1.0" + shebang-command: "npm:^2.0.0" + which: "npm:^2.0.1" + checksum: 37ec685f91f04d4719892f305fa6f632aae256df7f2f3f98d5c36f2197651ad7b77851aaa2d397d19a9555f0fb89fa18f9bb3ff4b440535cc0fb4fe0a72004b9 + languageName: node + linkType: hard + +"debug@npm:4, debug@npm:^4.1.0, debug@npm:^4.3.3": + version: 4.3.4 + resolution: "debug@npm:4.3.4" + dependencies: + ms: "npm:2.1.2" + peerDependenciesMeta: + supports-color: + optional: true + checksum: ab50d98b6f2a0e803379e8f789017f4215efd0e085774623e462c691e9f99bfd359a35f7424ff401da3ea58b31f89ceebc9ea35779b4a94f78b0ee3e235b6640 + languageName: node + linkType: hard + +"debug@npm:^3.2.7": + version: 3.2.7 + resolution: "debug@npm:3.2.7" + dependencies: + ms: "npm:^2.1.1" + checksum: b98f479c1004d349128ba45f38fb1af53fa3ab1a3614f27c56e2cfbee34b58cbf7dc060fead0882a5b64924e49d1dd59fb796a5d90ba7b1987d72d426e199253 + languageName: node + linkType: hard + +"decode-uri-component@npm:^0.2.0": + version: 0.2.0 + resolution: "decode-uri-component@npm:0.2.0" + checksum: 6944873192e84e58c4fd6483ce8846f2907b4ab1f0170a44bcc259fd976b7f6eecaad2016c9ada00a75155692b443f7970036c60a4d78853d0a0e2bec6f55ec8 + languageName: node + linkType: hard + +"decompress-response@npm:^6.0.0": + version: 6.0.0 + resolution: "decompress-response@npm:6.0.0" + dependencies: + mimic-response: "npm:^3.1.0" + checksum: b4575b109e38fe4bc10a8dc1a9167490da2efc07449bdc2ac9e3444592ee892e84fa89974448639388ad1f56f3a16e95606f3ab9d0c3dbdb84f1cbe432252b9f + languageName: node + linkType: hard + +"defer-to-connect@npm:^2.0.0": + version: 2.0.1 + resolution: "defer-to-connect@npm:2.0.1" + checksum: b027a4a33d1e6f42d5287ec33a914190ba9b6a949fd4d5b36020be813871009ab93ead8084950ebd59075d464e99fbea96000c59a89c2aa5ec0eae96fb1cbf68 + languageName: node + linkType: hard + +"delegates@npm:^1.0.0": + version: 1.0.0 + resolution: "delegates@npm:1.0.0" + checksum: 2ef8c043c6caea7f00f23236e0606b00f10d2b497657d63d230e50efdef307936b070734187b03960b9c4afe64ce9e09a77c01da60e661d42dcefec11ce41c30 + languageName: node + linkType: hard + +"depd@npm:^1.1.2": + version: 1.1.2 + resolution: "depd@npm:1.1.2" + checksum: e9fb93771e7cf3d88c4e38ca95742f7c58cae31928eb5e67a1a14d970325a02755451bb7fafc2db72333a5cf7fc14e07e4f8d709c0df70143355e77e8d090bac + languageName: node + linkType: hard + +"diff@npm:^5.1.0": + version: 5.1.0 + resolution: "diff@npm:5.1.0" + checksum: c241ce992c1b59de63637d5ea2c4ac36e5686a0c660830a2dea1c9963abbb83907bef6aebe2898a3e581483bf8b1073e806ad884bf8cafe2af4023fb8ecf0f58 + languageName: node + linkType: hard + +"dir-glob@npm:^3.0.1": + version: 3.0.1 + resolution: "dir-glob@npm:3.0.1" + dependencies: + path-type: "npm:^4.0.0" + checksum: 713590b89f9d09b80da82094419260ee15f4e67da692659876ac747ee38788dbb8b2bd5d2749bbcf298ce934888e378569f01895a136a09b54d1b28753e337c7 + languageName: node + linkType: hard + +"emoji-regex@npm:^8.0.0": + version: 8.0.0 + resolution: "emoji-regex@npm:8.0.0" + checksum: 0b84c9059a3f051e3da79112ee450f22bc8466dde2a7e09a0b1fc4eff3b98183596e6e2704d5356266851e2a013d95467421eb81c36408fbab1aeb3fc5e4764f + languageName: node + linkType: hard + +"encoding@npm:^0.1.13": + version: 0.1.13 + resolution: "encoding@npm:0.1.13" + dependencies: + iconv-lite: "npm:^0.6.2" + checksum: 954eb7d006c8d466207dcda57ddd15b1d6667607b8da15c7ce400d377504aafcc5e2f5507027cfb045cad7aefd15d18aa3f6e14f3a73ed2b26ad5ff08004536b + languageName: node + linkType: hard + +"end-of-stream@npm:^1.1.0, end-of-stream@npm:^1.4.1": + version: 1.4.4 + resolution: "end-of-stream@npm:1.4.4" + dependencies: + once: "npm:^1.4.0" + checksum: fa73674a01c2e7a3e17c801cb916c1e0c77f2cc719a42cee1bb3ce3550b9425369e4d0a2b2ce6670cb8eff07d34e67333949c83a30e7ec94625cec68aa07664e + languageName: node + linkType: hard + +"enquirer@npm:^2.3.6": + version: 2.3.6 + resolution: "enquirer@npm:2.3.6" + dependencies: + ansi-colors: "npm:^4.1.1" + checksum: 41e3807cd4114ab988860b99038e9724adba119e23e1e99cdb55e96e39113ec1262c1d6b4367cc061396725d94dc843867fc1adfb17eaf9fe0d19eb741a424c8 + languageName: node + linkType: hard + +"env-paths@npm:^2.2.0": + version: 2.2.1 + resolution: "env-paths@npm:2.2.1" + checksum: 528af3898854262b86b3adb5de09e6c81b8c0e3f4f675750282281b86782ddc3c33ffc13598d903d9eb23652f339ded86c994b61fe06e5f9cbb69a191f62244b + languageName: node + linkType: hard + +"err-code@npm:^2.0.2": + version: 2.0.3 + resolution: "err-code@npm:2.0.3" + checksum: 12244d58c3eeb73a5ebf633ff615b2366cedaccfea3c2b4d6a3295f6440661052e9574c71f89d6dc8a5466e3d84be0b1994e2a4017ab10e1f037f8be1ca89a37 + languageName: node + linkType: hard + +"esbuild-android-64@npm:0.15.13": + version: 0.15.13 + resolution: "esbuild-android-64@npm:0.15.13" + conditions: os=android & cpu=x64 + languageName: node + linkType: hard + +"esbuild-android-arm64@npm:0.15.13": + version: 0.15.13 + resolution: "esbuild-android-arm64@npm:0.15.13" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + +"esbuild-darwin-64@npm:0.15.13": + version: 0.15.13 + resolution: "esbuild-darwin-64@npm:0.15.13" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"esbuild-darwin-arm64@npm:0.15.13": + version: 0.15.13 + resolution: "esbuild-darwin-arm64@npm:0.15.13" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"esbuild-freebsd-64@npm:0.15.13": + version: 0.15.13 + resolution: "esbuild-freebsd-64@npm:0.15.13" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + +"esbuild-freebsd-arm64@npm:0.15.13": + version: 0.15.13 + resolution: "esbuild-freebsd-arm64@npm:0.15.13" + conditions: os=freebsd & cpu=arm64 + languageName: node + linkType: hard + +"esbuild-linux-32@npm:0.15.13": + version: 0.15.13 + resolution: "esbuild-linux-32@npm:0.15.13" + conditions: os=linux & cpu=ia32 + languageName: node + linkType: hard + +"esbuild-linux-64@npm:0.15.13": + version: 0.15.13 + resolution: "esbuild-linux-64@npm:0.15.13" + conditions: os=linux & cpu=x64 + languageName: node + linkType: hard + +"esbuild-linux-arm64@npm:0.15.13": + version: 0.15.13 + resolution: "esbuild-linux-arm64@npm:0.15.13" + conditions: os=linux & cpu=arm64 + languageName: node + linkType: hard + +"esbuild-linux-arm@npm:0.15.13": + version: 0.15.13 + resolution: "esbuild-linux-arm@npm:0.15.13" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + +"esbuild-linux-mips64le@npm:0.15.13": + version: 0.15.13 + resolution: "esbuild-linux-mips64le@npm:0.15.13" + conditions: os=linux & cpu=mips64el + languageName: node + linkType: hard + +"esbuild-linux-ppc64le@npm:0.15.13": + version: 0.15.13 + resolution: "esbuild-linux-ppc64le@npm:0.15.13" + conditions: os=linux & cpu=ppc64 + languageName: node + linkType: hard + +"esbuild-linux-riscv64@npm:0.15.13": + version: 0.15.13 + resolution: "esbuild-linux-riscv64@npm:0.15.13" + conditions: os=linux & cpu=riscv64 + languageName: node + linkType: hard + +"esbuild-linux-s390x@npm:0.15.13": + version: 0.15.13 + resolution: "esbuild-linux-s390x@npm:0.15.13" + conditions: os=linux & cpu=s390x + languageName: node + linkType: hard + +"esbuild-netbsd-64@npm:0.15.13": + version: 0.15.13 + resolution: "esbuild-netbsd-64@npm:0.15.13" + conditions: os=netbsd & cpu=x64 + languageName: node + linkType: hard + +"esbuild-openbsd-64@npm:0.15.13": + version: 0.15.13 + resolution: "esbuild-openbsd-64@npm:0.15.13" + conditions: os=openbsd & cpu=x64 + languageName: node + linkType: hard + +"esbuild-sunos-64@npm:0.15.13": + version: 0.15.13 + resolution: "esbuild-sunos-64@npm:0.15.13" + conditions: os=sunos & cpu=x64 + languageName: node + linkType: hard + +"esbuild-windows-32@npm:0.15.13": + version: 0.15.13 + resolution: "esbuild-windows-32@npm:0.15.13" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + +"esbuild-windows-64@npm:0.15.13": + version: 0.15.13 + resolution: "esbuild-windows-64@npm:0.15.13" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"esbuild-windows-arm64@npm:0.15.13": + version: 0.15.13 + resolution: "esbuild-windows-arm64@npm:0.15.13" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"esbuild@npm:^0.15.13": + version: 0.15.13 + resolution: "esbuild@npm:0.15.13" + dependencies: + "@esbuild/android-arm": "npm:0.15.13" + "@esbuild/linux-loong64": "npm:0.15.13" + esbuild-android-64: "npm:0.15.13" + esbuild-android-arm64: "npm:0.15.13" + esbuild-darwin-64: "npm:0.15.13" + esbuild-darwin-arm64: "npm:0.15.13" + esbuild-freebsd-64: "npm:0.15.13" + esbuild-freebsd-arm64: "npm:0.15.13" + esbuild-linux-32: "npm:0.15.13" + esbuild-linux-64: "npm:0.15.13" + esbuild-linux-arm: "npm:0.15.13" + esbuild-linux-arm64: "npm:0.15.13" + esbuild-linux-mips64le: "npm:0.15.13" + esbuild-linux-ppc64le: "npm:0.15.13" + esbuild-linux-riscv64: "npm:0.15.13" + esbuild-linux-s390x: "npm:0.15.13" + esbuild-netbsd-64: "npm:0.15.13" + esbuild-openbsd-64: "npm:0.15.13" + esbuild-sunos-64: "npm:0.15.13" + esbuild-windows-32: "npm:0.15.13" + esbuild-windows-64: "npm:0.15.13" + esbuild-windows-arm64: "npm:0.15.13" + dependenciesMeta: + "@esbuild/android-arm": + optional: true + "@esbuild/linux-loong64": + optional: true + esbuild-android-64: + optional: true + esbuild-android-arm64: + optional: true + esbuild-darwin-64: + optional: true + esbuild-darwin-arm64: + optional: true + esbuild-freebsd-64: + optional: true + esbuild-freebsd-arm64: + optional: true + esbuild-linux-32: + optional: true + esbuild-linux-64: + optional: true + esbuild-linux-arm: + optional: true + esbuild-linux-arm64: + optional: true + esbuild-linux-mips64le: + optional: true + esbuild-linux-ppc64le: + optional: true + esbuild-linux-riscv64: + optional: true + esbuild-linux-s390x: + optional: true + esbuild-netbsd-64: + optional: true + esbuild-openbsd-64: + optional: true + esbuild-sunos-64: + optional: true + esbuild-windows-32: + optional: true + esbuild-windows-64: + optional: true + esbuild-windows-arm64: + optional: true + bin: + esbuild: bin/esbuild + checksum: 19989177bc8ea3fb7ec77d65e331e52206f3bb16978608c37d81af40ab696caed2f1ed23813b4d00540206b450cd86cbfea4422a0e53872b82ece25224e7472c + languageName: node + linkType: hard + +"escape-string-regexp@npm:^2.0.0": + version: 2.0.0 + resolution: "escape-string-regexp@npm:2.0.0" + checksum: eba6c3fb9b6d1fbad353258ce4aaf3875ee39506cbf525f95a4cd78435668b73c56b5a60b960225ab95ecb7274248ad0e05705468b850ba98e289bfa7021a68e + languageName: node + linkType: hard + +"esprima@npm:^4.0.0": + version: 4.0.1 + resolution: "esprima@npm:4.0.1" + bin: + esparse: ./bin/esparse.js + esvalidate: ./bin/esvalidate.js + checksum: 08b3015538b1f7f087a4ea49b5a3d8ff9590ecf7eb43511182c9198cfe168a5cc1736c2ae33263c79cfbe9e984c1880ee971b64ad96e7c84db74488e6ee93c1b + languageName: node + linkType: hard + +"fast-glob@npm:^3.2.2, fast-glob@npm:^3.2.9": + version: 3.2.12 + resolution: "fast-glob@npm:3.2.12" + dependencies: + "@nodelib/fs.stat": "npm:^2.0.2" + "@nodelib/fs.walk": "npm:^1.2.3" + glob-parent: "npm:^5.1.2" + merge2: "npm:^1.3.0" + micromatch: "npm:^4.0.4" + checksum: 3b98e0cadbf2aea3fa2be76e28b0c895bb18d920ccb7b3d3f603a464e3dc2c6a89a8afb9f9765226bd4d4d74b70e880721ff7a57a267c2eaa11353f35d42d11b + languageName: node + linkType: hard + +"fastq@npm:^1.6.0": + version: 1.13.0 + resolution: "fastq@npm:1.13.0" + dependencies: + reusify: "npm:^1.0.4" + checksum: 150b77dcf0d1e023aaed9bb5f9789f9c8828497fa44b050ba79b039798aeee6c4bcab7e533b5bacb6476811ca9c0eb7f1d021fd7ff8da54f67e3db9b35efd84c + languageName: node + linkType: hard + +"figgy-pudding@npm:^3.5.1": + version: 3.5.2 + resolution: "figgy-pudding@npm:3.5.2" + checksum: f4b8a84c3ef60a351fd7874b21e379ffbfe8be2f5da290b9db59c8a939e633e515e01ff999b57049924acfb251ea1c5c4554cc52271969e628047a576a19f056 + languageName: node + linkType: hard + +"fill-range@npm:^7.0.1": + version: 7.0.1 + resolution: "fill-range@npm:7.0.1" + dependencies: + to-regex-range: "npm:^5.0.1" + checksum: e5ccb299de8a12ea5dcef663f658933e2fbdf40aeab3e7e5af9132e82d7f6bdd0984ac2e122dc1825707f33917c308bc40b632b852331c900c317c5d64bb7bf0 + languageName: node + linkType: hard + +"filter-obj@npm:^1.1.0": + version: 1.1.0 + resolution: "filter-obj@npm:1.1.0" + checksum: ae94072c11c7bf14d8baa6e9b99770dc2324088ae47081b2961e461d35b4cfa3dbe34a2e747ae98a8e789255480d0e28b2cf970dd8ce3cfba301e76cda03344c + languageName: node + linkType: hard + +"fs-constants@npm:^1.0.0": + version: 1.0.0 + resolution: "fs-constants@npm:1.0.0" + checksum: fc080f48eec0d9cef6750e804f31c6ceac3f4222dfd7003c7ac350f6be91979b084d27e4249e8e66f54caf5ea0465721078934ce44302d9d725209830c8fd730 + languageName: node + linkType: hard + +"fs-minipass@npm:^2.0.0, fs-minipass@npm:^2.1.0": + version: 2.1.0 + resolution: "fs-minipass@npm:2.1.0" + dependencies: + minipass: "npm:^3.0.0" + checksum: 56d19f9a034cbef50b7fe846a71ab1a6a7ee7906205f9f18b7c9696e1f6d83c4d708a0196c65536f34e569205664840dd4f97f1286a26148a4c5bf74a67fe8db + languageName: node + linkType: hard + +"fs.realpath@npm:^1.0.0": + version: 1.0.0 + resolution: "fs.realpath@npm:1.0.0" + checksum: 477fb3547134ce67d71531a19b2597028d2efaeced56a2fcb125ba9994a4204685d256795e4a5b68e5d866d11d8d0dd9050937cb44037beb4caeb3acb75602e2 + languageName: node + linkType: hard + +"fsevents@npm:~2.3.2": + version: 2.3.2 + resolution: "fsevents@npm:2.3.2" + dependencies: + node-gyp: "npm:latest" + checksum: c85eed7a3e0bbe6908f9feae8a823ee63a796ea2b32e20616ee33f0dda9417976f5a087a8cd2ccf228aae1c5b8b6125c9800f05dd69aaf016c34352a0567dcfb + conditions: os=darwin + languageName: node + linkType: hard + +"fsevents@patch:fsevents@npm%3A~2.3.2#optional!builtin": + version: 2.3.2 + resolution: "fsevents@patch:fsevents@npm%3A2.3.2#optional!builtin::version=2.3.2&hash=18f3a7" + dependencies: + node-gyp: "npm:latest" + conditions: os=darwin + languageName: node + linkType: hard + +"function-bind@npm:^1.1.1": + version: 1.1.1 + resolution: "function-bind@npm:1.1.1" + checksum: 8a644b8118679030cb3aeb783b024a9ee358b15c5780bdb49fe5d482f6df54672bda860e19bce87d756a5e165740caaa96f5e8487fa98933c327f631e23a5490 + languageName: node + linkType: hard + +"gauge@npm:^4.0.3": + version: 4.0.4 + resolution: "gauge@npm:4.0.4" + dependencies: + aproba: "npm:^1.0.3 || ^2.0.0" + color-support: "npm:^1.1.3" + console-control-strings: "npm:^1.1.0" + has-unicode: "npm:^2.0.1" + signal-exit: "npm:^3.0.7" + string-width: "npm:^4.2.3" + strip-ansi: "npm:^6.0.1" + wide-align: "npm:^1.1.5" + checksum: 4fc68f770dba9962a326918f33f58f2458eddea08442c2d716238357e4291dee4223a812ce11084b54f928d607e4dfb6f380ba28d435b2721de94a22d5600669 + languageName: node + linkType: hard + +"get-intrinsic@npm:^1.0.2": + version: 1.1.3 + resolution: "get-intrinsic@npm:1.1.3" + dependencies: + function-bind: "npm:^1.1.1" + has: "npm:^1.0.3" + has-symbols: "npm:^1.0.3" + checksum: 885245c0964b0acf38383792a1174022f00db91624239fa0338b6101f865601df0f17dbef15083dc875374d9b50c64bb4177e411a5a40edb0e5cd0e60829caad + languageName: node + linkType: hard + +"get-stream@npm:^5.1.0": + version: 5.2.0 + resolution: "get-stream@npm:5.2.0" + dependencies: + pump: "npm:^3.0.0" + checksum: ec44aec324d4143ca4784ecc294d575246d2d4d141065c5d137438ab56226d3a7c83e0c840a0a2192c0262babb96045687c662fe867041cc67ee42ad4296074d + languageName: node + linkType: hard + +"git-up@npm:^4.0.0": + version: 4.0.5 + resolution: "git-up@npm:4.0.5" + dependencies: + is-ssh: "npm:^1.3.0" + parse-url: "npm:^6.0.0" + checksum: 727625a142b45b1fafc860aecb8d7e952d2089accce462480000e0a0291a162201db67b8627dc92dea1be62ad3bbdaf00e8cfca1a95e427ce9e79eb50bf11d11 + languageName: node + linkType: hard + +"git-url-parse@npm:11.1.2": + version: 11.1.2 + resolution: "git-url-parse@npm:11.1.2" + dependencies: + git-up: "npm:^4.0.0" + checksum: ecb433727d399c0195106cee0b0f51543a09a828a819377f50f8d0351f92c1d813eb53efc337c5bbab15ef0cbcf60cfed045c76040e35e27ab9ec31cd7ca8292 + languageName: node + linkType: hard + +"glob-parent@npm:^5.1.2, glob-parent@npm:~5.1.2": + version: 5.1.2 + resolution: "glob-parent@npm:5.1.2" + dependencies: + is-glob: "npm:^4.0.1" + checksum: 2a8fd4de469543f6160dbfff5c59950e39494fc8b692ca7e1d0a5564450dee53228370b43bcfdeda82c2f96b26de618ef8aa5ece28090fcd568c411b6148241d + languageName: node + linkType: hard + +"glob@npm:^7.1.3, glob@npm:^7.1.4": + version: 7.2.3 + resolution: "glob@npm:7.2.3" + dependencies: + fs.realpath: "npm:^1.0.0" + inflight: "npm:^1.0.4" + inherits: "npm:2" + minimatch: "npm:^3.1.1" + once: "npm:^1.3.0" + path-is-absolute: "npm:^1.0.0" + checksum: c55966a5db7ed2f30976a1490f3165f9d4e20ac7cabf01b55da4cc4f8f53a4c506e6f427e469c2fbf68636200871f3acf07e159ba6d9b65e7386216b98474a34 + languageName: node + linkType: hard + +"glob@npm:^8.0.1": + version: 8.0.3 + resolution: "glob@npm:8.0.3" + dependencies: + fs.realpath: "npm:^1.0.0" + inflight: "npm:^1.0.4" + inherits: "npm:2" + minimatch: "npm:^5.0.1" + once: "npm:^1.3.0" + checksum: e629823aabf11611bfe7b3a2f4582a5e0898daaecba3263081d5d4a8fcc595d07aefb85c178e816f7bf1c07a09fd164dc80558b83e9e825555796929164404b1 + languageName: node + linkType: hard + +"globalyzer@npm:0.1.0": + version: 0.1.0 + resolution: "globalyzer@npm:0.1.0" + checksum: e52e064b89ef5a42ce76b92a4919e518c80615c80839f7d214f51c96ce5945308147a422a11c853760fc7a9a41cf8cc8fb7813c5816f2808d8fd4c066d0805a9 + languageName: node + linkType: hard + +"globby@npm:^11.0.1": + version: 11.1.0 + resolution: "globby@npm:11.1.0" + dependencies: + array-union: "npm:^2.1.0" + dir-glob: "npm:^3.0.1" + fast-glob: "npm:^3.2.9" + ignore: "npm:^5.2.0" + merge2: "npm:^1.4.1" + slash: "npm:^3.0.0" + checksum: 3047df770874d103dafe26084f998f562e8a8e2930896940e0bdbdc27c1f7574570f231dc2aa981d941dc84c93db05ce7cd81667488b040412e88740186fc22e + languageName: node + linkType: hard + +"globrex@npm:^0.1.2": + version: 0.1.2 + resolution: "globrex@npm:0.1.2" + checksum: e1f161f0e15cdfc29df57c8d3d8380063e7f0f8ea0322ae5fbec9fe14ebc62fd337d65a2d80a479faade7c7ef079e062eb11586e43016d0b6b5989bd2e7b1d1b + languageName: node + linkType: hard + +"got@npm:^11.7.0": + version: 11.8.5 + resolution: "got@npm:11.8.5" + dependencies: + "@sindresorhus/is": "npm:^4.0.0" + "@szmarczak/http-timer": "npm:^4.0.5" + "@types/cacheable-request": "npm:^6.0.1" + "@types/responselike": "npm:^1.0.0" + cacheable-lookup: "npm:^5.0.3" + cacheable-request: "npm:^7.0.2" + decompress-response: "npm:^6.0.0" + http2-wrapper: "npm:^1.0.0-beta.5.2" + lowercase-keys: "npm:^2.0.0" + p-cancelable: "npm:^2.0.0" + responselike: "npm:^2.0.0" + checksum: eb7d9477285de6ee81ed838dd2369925f2cbb6c2cb883ee25cad1fd2759ba52a1ee1944d83acd13cf0bd24fcc0a2b551665d088db712347d63df88dca31328d0 + languageName: node + linkType: hard + +"graceful-fs@npm:^4.2.6": + version: 4.2.10 + resolution: "graceful-fs@npm:4.2.10" + checksum: 6b5f9b5aeaee0459b9c37bdbf9624f788703ce291d6bf2d7751f5003942e853f232ca613aec818d1ff7622379bc8b434c635bfda99db93e0b9b8da80ec3d844d + languageName: node + linkType: hard + +"grapheme-splitter@npm:^1.0.4": + version: 1.0.4 + resolution: "grapheme-splitter@npm:1.0.4" + checksum: c67a8e522758dd907770a78ad750e6dfdcce327b0696fdd82f4b7acb8bb22b0574c88f806afb3c6597a536fa9016e6e3486071535fd0e9226b8505c67cf2fb01 + languageName: node + linkType: hard + +"has-flag@npm:^3.0.0": + version: 3.0.0 + resolution: "has-flag@npm:3.0.0" + checksum: b1cb757b71bca736b4f7a060d52a7914b1438d7bd7ba3cb783f71728c7a72d51520955d477d54fce75e19a859d93fadc9b707de019c141c45f2e560c48beb1f9 + languageName: node + linkType: hard + +"has-flag@npm:^4.0.0": + version: 4.0.0 + resolution: "has-flag@npm:4.0.0" + checksum: 71f182c441adda71ea3014dec578691a9d74356dd57c238fb2fc88247a94ca10892fe307cda0eb608b91f982d7da34aa2e46f763c4449351dedac26a0493e591 + languageName: node + linkType: hard + +"has-symbols@npm:^1.0.3": + version: 1.0.3 + resolution: "has-symbols@npm:1.0.3" + checksum: 2d0abb3382da2945b1b8d9a4afebc8a0770fe07198e727b4fbd7f616c70796f040bf2bd8d6db47e0c590507812a2680594fc77f871238289f6c7870318cf62c9 + languageName: node + linkType: hard + +"has-unicode@npm:^2.0.1": + version: 2.0.1 + resolution: "has-unicode@npm:2.0.1" + checksum: d7f38422bc8e339b52014ed5aea2fdcb6545e583ac252081bc7d0970ae8eaa6efa3d056aa3119ac5825bc51fc289b53fa7b3588a40b8bf71a0dabc346513c485 + languageName: node + linkType: hard + +"has@npm:^1.0.3": + version: 1.0.3 + resolution: "has@npm:1.0.3" + dependencies: + function-bind: "npm:^1.1.1" + checksum: 3e8c4d87ccd9c160d61a5db829b5fb647acac79e482476c857d5d1dc580517c6a77cf84337808f28361f6263008ce1ce5aff44407bd9241af93c623ef8d8d4f1 + languageName: node + linkType: hard + +"http-cache-semantics@npm:^4.0.0, http-cache-semantics@npm:^4.1.0": + version: 4.1.0 + resolution: "http-cache-semantics@npm:4.1.0" + checksum: ccfe23dd2729bc564ab419330e0c4646a1247e8dd728a4a6b3ab427b5243d2e0afea0c6fe690ff9ead43d02bd84cc5240e996543c4c87866f272e26e40540acd + languageName: node + linkType: hard + +"http-proxy-agent@npm:^5.0.0": + version: 5.0.0 + resolution: "http-proxy-agent@npm:5.0.0" + dependencies: + "@tootallnate/once": "npm:2" + agent-base: "npm:6" + debug: "npm:4" + checksum: b59a9b4bdd7c1d3450956a2974cb7b685517c758853a873064a536f5a831879ac92a28c717f69eb60ff3c924b262cb5aaf80cf62f5c2c24d1129d2b8dadf1e7c + languageName: node + linkType: hard + +"http2-wrapper@npm:^1.0.0-beta.5.2": + version: 1.0.3 + resolution: "http2-wrapper@npm:1.0.3" + dependencies: + quick-lru: "npm:^5.1.1" + resolve-alpn: "npm:^1.0.0" + checksum: 3be15184af083b5e075b82a02f00643e99a5b040b676d7819d1d3330e09fc1399523ef17b47d50f9e783749036c8a0d2dedbd9a23a0e8c60cc66644cb35d9e1a + languageName: node + linkType: hard + +"https-proxy-agent@npm:^5.0.0": + version: 5.0.1 + resolution: "https-proxy-agent@npm:5.0.1" + dependencies: + agent-base: "npm:6" + debug: "npm:4" + checksum: 8e767faec977400c31bca2ef0f5338b843b781b63fd985c00d199adac2d6c8a5ecc6e553588a6821a058198960f167a3c83f014bd64bef9a15b176d992d29dfe + languageName: node + linkType: hard + +"humanize-ms@npm:^1.2.1": + version: 1.2.1 + resolution: "humanize-ms@npm:1.2.1" + dependencies: + ms: "npm:^2.0.0" + checksum: fded981fd3b507fe78f7ce505c3f060e3b53cb2155d279d794a6bddb451bb1c7f865f4ca495dc0bae695ad0c182fd5be3a581b51ba30770e6adfda960bca0e68 + languageName: node + linkType: hard + +"iconv-lite@npm:^0.6.2": + version: 0.6.3 + resolution: "iconv-lite@npm:0.6.3" + dependencies: + safer-buffer: "npm:>= 2.1.2 < 3.0.0" + checksum: 14633c984e398011b4cce3d453e6566e4cc1b58f257e6fc48ae39c25a158b926e6cd7ee6023cd84aff12952a7581bd10bd4e7954af802dd5678e83b4cb8fdbba + languageName: node + linkType: hard + +"ieee754@npm:^1.1.13": + version: 1.2.1 + resolution: "ieee754@npm:1.2.1" + checksum: b39fbc42879544ab1989f8ff439a3f3545d7c244a07f24607c4223291ba82ce95964a7b7fde24010ba899937046c4dfe01398c8f8bbddb53f9e562c29f18f615 + languageName: node + linkType: hard + +"ignore-by-default@npm:^1.0.1": + version: 1.0.1 + resolution: "ignore-by-default@npm:1.0.1" + checksum: a243c7acff1f7233ac437acc67a13e1757dd1ea7092c1b8e30585844d8fac4d672a0c257dcffd8ef8fe100cfe030580f8c3ec72ddb8064753fcfa3633da8a80a + languageName: node + linkType: hard + +"ignore@npm:^5.2.0": + version: 5.2.0 + resolution: "ignore@npm:5.2.0" + checksum: 0086b6992b2e2c9ec23f009e5939022323f1b4ad291607507045cc67b0a3b5d9724fc425f5300b3ba6d10ef74311bdf71cd26040227c30a182cf1b2a5971226b + languageName: node + linkType: hard + +"imurmurhash@npm:^0.1.4": + version: 0.1.4 + resolution: "imurmurhash@npm:0.1.4" + checksum: 6e2473e6083063b9f5f21a9586794b3af5b3f87995bcf60cb64f3824a7323c2ae41b4eaf3d7446e20fb66b5f3410094246aa3c52db7585270c8b10f762b8ffa1 + languageName: node + linkType: hard + +"indent-string@npm:^4.0.0": + version: 4.0.0 + resolution: "indent-string@npm:4.0.0" + checksum: f4ab9e229c120377a63fce905062e5fdf1c300ca01b72401dda5aa991e8f614fdb2f99fe7cc37ef3234413da4ab43d5a4f905356fdffb9d078e83806d274719c + languageName: node + linkType: hard + +"infer-owner@npm:^1.0.4": + version: 1.0.4 + resolution: "infer-owner@npm:1.0.4" + checksum: 2020f6d0322e7910ce841134a303c69857e456531d8cd01e336f6eea18122d1085b93ebde961745e5f278233f7f8a3d8b60b9276c8dbd3f49c4c352582ec9504 + languageName: node + linkType: hard + +"inflight@npm:^1.0.4": + version: 1.0.6 + resolution: "inflight@npm:1.0.6" + dependencies: + once: "npm:^1.3.0" + wrappy: "npm:1" + checksum: 40d0e5db34e05d49b9ad9ac678334269745644f73206862a8dee6e50ada1c8b3e70774ce28d5e6e3b03b7b868c9d9ae1edaf6eff253fc50209e4c69decad1811 + languageName: node + linkType: hard + +"inherits@npm:2, inherits@npm:^2.0.3, inherits@npm:^2.0.4": + version: 2.0.4 + resolution: "inherits@npm:2.0.4" + checksum: ca76c7e45ec715bfe6c1dd67b780b9a15068f37b37ab56cf8b773537b2654238469a42950f5f4d301212755e7512be888f627752e778e1863d95cfedefc8b8bd + languageName: node + linkType: hard + +"ink-text-input@npm:^4.0.1": + version: 4.0.3 + resolution: "ink-text-input@npm:4.0.3" + dependencies: + chalk: "npm:^4.1.0" + type-fest: "npm:^0.15.1" + peerDependencies: + ink: ^3.0.0-3 + react: ^16.5.2 || ^17.0.0 + checksum: 1c907e2bb574fddc7947d21cbe6743d88574df86aaa6c25f30a38f92d87fc60e491c712e500195dfa2a513ff5d56784ae13fedd6d00ddf2187bfde2df89826f1 + languageName: node + linkType: hard + +"ink@npm:^3.0.8": + version: 3.2.0 + resolution: "ink@npm:3.2.0" + dependencies: + ansi-escapes: "npm:^4.2.1" + auto-bind: "npm:4.0.0" + chalk: "npm:^4.1.0" + cli-boxes: "npm:^2.2.0" + cli-cursor: "npm:^3.1.0" + cli-truncate: "npm:^2.1.0" + code-excerpt: "npm:^3.0.0" + indent-string: "npm:^4.0.0" + is-ci: "npm:^2.0.0" + lodash: "npm:^4.17.20" + patch-console: "npm:^1.0.0" + react-devtools-core: "npm:^4.19.1" + react-reconciler: "npm:^0.26.2" + scheduler: "npm:^0.20.2" + signal-exit: "npm:^3.0.2" + slice-ansi: "npm:^3.0.0" + stack-utils: "npm:^2.0.2" + string-width: "npm:^4.2.2" + type-fest: "npm:^0.12.0" + widest-line: "npm:^3.1.0" + wrap-ansi: "npm:^6.2.0" + ws: "npm:^7.5.5" + yoga-layout-prebuilt: "npm:^1.9.6" + peerDependencies: + "@types/react": ">=16.8.0" + react: ">=16.8.0" + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 8d9edfa7029046481aa4ef10f0550a3f9825c5d88fe874f4465246b4b6f21a0f5f03b0090d14b64b8323344e843c4dd57a8e84e564b9647888c43688537357a7 + languageName: node + linkType: hard + +"ip@npm:^2.0.0": + version: 2.0.0 + resolution: "ip@npm:2.0.0" + checksum: 42a7cf251b844d98a4c3373d06997b991cd1a7f8a5d43bcf2b4f610517d39c5504f6eb3e73e77f5c1453ac766690e82dab28a8a05a49a6fd7d4a40fad93640e9 + languageName: node + linkType: hard + +"is-binary-path@npm:~2.1.0": + version: 2.1.0 + resolution: "is-binary-path@npm:2.1.0" + dependencies: + binary-extensions: "npm:^2.0.0" + checksum: f6ed933392b85facdc081bbe3539602ac70cf35fe5d3d7e02da0b9c4bc65fa673d815142f16bf6253de84a561332a680382be1ade1406c89c9102832a571620f + languageName: node + linkType: hard + +"is-ci@npm:^2.0.0": + version: 2.0.0 + resolution: "is-ci@npm:2.0.0" + dependencies: + ci-info: "npm:^2.0.0" + bin: + is-ci: bin.js + checksum: 84f3a32ef8376c75eac3d451c51884ea58b6024ac18ff5717c86a504977d800980fa89a4c02ab46b4f539087215466cbf47ed306d9ffb5dc99c7d5a207be8e0d + languageName: node + linkType: hard + +"is-extglob@npm:^2.1.1": + version: 2.1.1 + resolution: "is-extglob@npm:2.1.1" + checksum: 226b9f6eee1e7da52f72c98ed4ea7fc71ee3a087b6d1c62655c9a81c601caa2fd98b9f9be42fb8163eef2720cdbf046bc7c5548a76755651e540f4b08ff3b120 + languageName: node + linkType: hard + +"is-fullwidth-code-point@npm:^3.0.0": + version: 3.0.0 + resolution: "is-fullwidth-code-point@npm:3.0.0" + checksum: c06b5792b82dcdedb41858cdb07ca4ae5b9a853ad65c91529533221f384d751bedd8ad8db5a527cb219fd989c32a0faa0833312b6a190fe597acdd23165ef724 + languageName: node + linkType: hard + +"is-glob@npm:^4.0.1, is-glob@npm:~4.0.1": + version: 4.0.3 + resolution: "is-glob@npm:4.0.3" + dependencies: + is-extglob: "npm:^2.1.1" + checksum: 0b2f6c06162a1d6c764b2f1cf0f2617b6e0cb1e8125c0e3b7e838a3e06caac81268ab3c0a4699052df59229c99e8a1dd0217b30476d7643a37fa17a49f1b50af + languageName: node + linkType: hard + +"is-lambda@npm:^1.0.1": + version: 1.0.1 + resolution: "is-lambda@npm:1.0.1" + checksum: 8e761e558bf60bd3682648e6ecb6333e9ad9c5a6fef2a9ca879deef1a40478e5f7e18999fc3630ef8b879cf00bc0248ffa5616aa4251917a7f87f066841310aa + languageName: node + linkType: hard + +"is-number@npm:^7.0.0": + version: 7.0.0 + resolution: "is-number@npm:7.0.0" + checksum: 748df55ae14cc960b090a7611932940df9fa703b7e0fb4f73943b4eb94c4b5391f27ba3881fab8f5bf7a2f097490e812db0d58d05c92154e70fdf14f93d6fa95 + languageName: node + linkType: hard + +"is-ssh@npm:^1.3.0": + version: 1.4.0 + resolution: "is-ssh@npm:1.4.0" + dependencies: + protocols: "npm:^2.0.1" + checksum: 96e063b7a18e21313574dcedb9e79f5630d5d48a597f894ff8be9b590aa04c43d59d5c624674bf68c11813f4a0215b2f993c0bec1438193a084827ce66db1c8a + languageName: node + linkType: hard + +"is-windows@npm:^1.0.2": + version: 1.0.2 + resolution: "is-windows@npm:1.0.2" + checksum: ba7ae056a6a1ab995164ff9212cb7ddc764669144dae7c9d6e34431fc36ec2d3a6a831855a0ac21fb80d4a44e8dc2223437aa68999920fc113b662306bbc776c + languageName: node + linkType: hard + +"isexe@npm:^2.0.0": + version: 2.0.0 + resolution: "isexe@npm:2.0.0" + checksum: b37fe0a7983c0c151c7b31ca716405aaea190ac9cd6ef3f79355f4afb043ed4d3182a6addd73b20df7a0b229269737ad0daf64116821a048bfbe6b8fb7eb842c + languageName: node + linkType: hard + +"js-tokens@npm:^3.0.0 || ^4.0.0": + version: 4.0.0 + resolution: "js-tokens@npm:4.0.0" + checksum: 47d1c18dc6b9eed4baf1db3d81b36feb95b463201c82ffce0d7a4d65ede596ba97d6ac2468974199705db9ef8a3433606af41fc7bbe7cb25c1dd601785413d9b + languageName: node + linkType: hard + +"js-yaml@npm:^3.10.0": + version: 3.14.1 + resolution: "js-yaml@npm:3.14.1" + dependencies: + argparse: "npm:^1.0.7" + esprima: "npm:^4.0.0" + bin: + js-yaml: bin/js-yaml.js + checksum: 1e0e655c5f9917215112c31302061f425cfd33af0d617e30bb043951226b25f582bcf460b197491966ba1452a98f38bc38accc910b416b9783aa1df99af38df2 + languageName: node + linkType: hard + +"json-buffer@npm:3.0.1": + version: 3.0.1 + resolution: "json-buffer@npm:3.0.1" + checksum: 33bf05e0790ed025751047b51bb8bc0f15942be22d22acaa071c44a4e3277bdf23132f49549a7d8dd89ee67679923f21efa21de2aaa448472372e92a837cea15 + languageName: node + linkType: hard + +"keyv@npm:^4.0.0": + version: 4.5.0 + resolution: "keyv@npm:4.5.0" + dependencies: + json-buffer: "npm:3.0.1" + checksum: da87023748eb7eb2bbc93589367b54b985fd678fb14d1d5c4437417804ef6f54ce23a6a094038edc439f125c037034acff6e099153b73c03abd7e2006787c30a + languageName: node + linkType: hard + +"lodash@npm:^4.17.15, lodash@npm:^4.17.20": + version: 4.17.21 + resolution: "lodash@npm:4.17.21" + checksum: 3ac18e92108d68f88429fcddee609e42cf2b653583d9bac22308815a4cd6b185b89a0ad0d9b0c670c371d9d6b61571a98fee6b36e1db14e52766ca253ed9cba0 + languageName: node + linkType: hard + +"loose-envify@npm:^1.1.0, loose-envify@npm:^1.4.0": + version: 1.4.0 + resolution: "loose-envify@npm:1.4.0" + dependencies: + js-tokens: "npm:^3.0.0 || ^4.0.0" + bin: + loose-envify: cli.js + checksum: 39c5fc44c6a8f7f8a92cccf174554fbb307477ef493760407920fdd4ed5f6cc1aec5b6a5ab3c3767ef79547b3e1aea09d8ca08d773232c662d910cfe473a0590 + languageName: node + linkType: hard + +"lowercase-keys@npm:^2.0.0": + version: 2.0.0 + resolution: "lowercase-keys@npm:2.0.0" + checksum: c305ecdea6e53ab142b74095be2a19174a6265345b043e28e88cfef1845a9a143888898c643707d7ca733bf89ce12577732bdb402106dc34d8dd2b294519726e + languageName: node + linkType: hard + +"lru-cache@npm:^6.0.0": + version: 6.0.0 + resolution: "lru-cache@npm:6.0.0" + dependencies: + yallist: "npm:^4.0.0" + checksum: b2d72088dd27df27189607554990b0fd31d3fbd4037df909ef66f48a14122baf8ffce7f33edc17e6543ea7cd71fa561136518355dde2ad57676fa0b2ea53b85f + languageName: node + linkType: hard + +"lru-cache@npm:^7.7.1": + version: 7.14.1 + resolution: "lru-cache@npm:7.14.1" + checksum: e4c8c073d9632585dde73bb2c857c22866f61f3ee75fea6e1dcc5412b59eca4107bc511c4b4ae4e038c7f59a15488b67448b24a3a1154def46c8ab1d07935d85 + languageName: node + linkType: hard + +"make-fetch-happen@npm:^10.0.3": + version: 10.2.1 + resolution: "make-fetch-happen@npm:10.2.1" + dependencies: + agentkeepalive: "npm:^4.2.1" + cacache: "npm:^16.1.0" + http-cache-semantics: "npm:^4.1.0" + http-proxy-agent: "npm:^5.0.0" + https-proxy-agent: "npm:^5.0.0" + is-lambda: "npm:^1.0.1" + lru-cache: "npm:^7.7.1" + minipass: "npm:^3.1.6" + minipass-collect: "npm:^1.0.2" + minipass-fetch: "npm:^2.0.3" + minipass-flush: "npm:^1.0.5" + minipass-pipeline: "npm:^1.2.4" + negotiator: "npm:^0.6.3" + promise-retry: "npm:^2.0.1" + socks-proxy-agent: "npm:^7.0.0" + ssri: "npm:^9.0.0" + checksum: cf0d4b94fb0b022d41373fe7ce0f2a170a7c2668c7404f985c4fa6fe465c24cc3d1a6a84e0a6d4b2cd60cf7d41ec26cc5205d258e15f06c33179c14a31a5e4bd + languageName: node + linkType: hard + +"merge2@npm:^1.3.0, merge2@npm:^1.4.1": + version: 1.4.1 + resolution: "merge2@npm:1.4.1" + checksum: d58d7c31e24ccb93509def2af306eca9a55ad8b8862a26ea7deda3c9338e5d33365f57197ad37af68c319e5e2a1faf089e5d05894d0dc29ff07025b30b8ff8b0 + languageName: node + linkType: hard + +"micromatch@npm:^4.0.2, micromatch@npm:^4.0.4": + version: 4.0.5 + resolution: "micromatch@npm:4.0.5" + dependencies: + braces: "npm:^3.0.2" + picomatch: "npm:^2.3.1" + checksum: 260305ba8cb1f073a39bbaa31edc93f7587399a094417541dc771402f83c78819ed76743c810c9fcf1c449f09bfb4de263dad8507d532e4e86063a87158a2ad6 + languageName: node + linkType: hard + +"mimic-fn@npm:^2.1.0": + version: 2.1.0 + resolution: "mimic-fn@npm:2.1.0" + checksum: 416cdf3021e8d7fc741a12ec084f4c33af4ea3a4bb3d840fab0f3a786a2d9458aa1fd284fab707f3dc1e356cb6b7c9af84b17273a6433955e11494cae4ea856e + languageName: node + linkType: hard + +"mimic-response@npm:^1.0.0": + version: 1.0.1 + resolution: "mimic-response@npm:1.0.1" + checksum: 33f59926ca219581d72d6138f731c0ab09459c83dc01cce629b045cf0f0fc86d2080c0d776f2112dab7c4ef585c1104a3df0b2b8ed31fc6f4d261656f3543d4e + languageName: node + linkType: hard + +"mimic-response@npm:^3.1.0": + version: 3.1.0 + resolution: "mimic-response@npm:3.1.0" + checksum: 1d485ca418ab93d27d5a90b0ad701eee79fdf6a7dfd0342f7c83e1f2b421703eadadf9d1c968bff4749dcb42bb2148dc4b6bce795b7b357b46d47731353b7077 + languageName: node + linkType: hard + +"minimatch@npm:^3.1.1, minimatch@npm:^3.1.2": + version: 3.1.2 + resolution: "minimatch@npm:3.1.2" + dependencies: + brace-expansion: "npm:^1.1.7" + checksum: 97f5615ee8f7c0019277dadef7b2b81e5c60d369cb3155cbfb9da72688aef2edb652b105353ff08a6575ae95a6189d1c09a0829b9c254f60849148457c4d8a66 + languageName: node + linkType: hard + +"minimatch@npm:^5.0.1": + version: 5.1.0 + resolution: "minimatch@npm:5.1.0" + dependencies: + brace-expansion: "npm:^2.0.1" + checksum: cf8124b47d19be2d6a4b2cab80114999239ab6a01062e2f0abe666b779de120b6f85ed9a73e3a27b61fa088fb45957929a8fcc727bd20de829d3e4e659ad01ff + languageName: node + linkType: hard + +"minipass-collect@npm:^1.0.2": + version: 1.0.2 + resolution: "minipass-collect@npm:1.0.2" + dependencies: + minipass: "npm:^3.0.0" + checksum: 4d608e8a292ec87dd1a7d881c314effe341a7d7f52eb416270a243f8ea7f4e23b40b2785f5ce9c6c7841e1453841019efd5db05b427288b897c96f62afbc1f17 + languageName: node + linkType: hard + +"minipass-fetch@npm:^2.0.3": + version: 2.1.2 + resolution: "minipass-fetch@npm:2.1.2" + dependencies: + encoding: "npm:^0.1.13" + minipass: "npm:^3.1.6" + minipass-sized: "npm:^1.0.3" + minizlib: "npm:^2.1.2" + dependenciesMeta: + encoding: + optional: true + checksum: 8ec17c0895d8890b863bbdf860e25bc2f81580c0bbc2cfc05d220f8b5bc255203ee1931f54821e299fd1d5a53d63bfaca20a813a2f45e881423d096c24940366 + languageName: node + linkType: hard + +"minipass-flush@npm:^1.0.5": + version: 1.0.5 + resolution: "minipass-flush@npm:1.0.5" + dependencies: + minipass: "npm:^3.0.0" + checksum: 6e851bd0640e5406633b0aa77e889d4175eb3d12b55173e999e6dd1fc06ed13982277e012d6f41dc28a2167278d9480697893f6cd286c46c10fdfd735e05d45d + languageName: node + linkType: hard + +"minipass-pipeline@npm:^1.2.4": + version: 1.2.4 + resolution: "minipass-pipeline@npm:1.2.4" + dependencies: + minipass: "npm:^3.0.0" + checksum: 07dd09bf3c6f546ef407e7a36bca4cd2235d54695c083dc5815052e36cbdd46e55a7c0dae2801983c73257adc7aa613e375c8350587bc50a6a10e1a6b55f9965 + languageName: node + linkType: hard + +"minipass-sized@npm:^1.0.3": + version: 1.0.3 + resolution: "minipass-sized@npm:1.0.3" + dependencies: + minipass: "npm:^3.0.0" + checksum: 54591ac7e54571e91df602e3c1018f4048ee12a3407dfab8140e0b03cb149c16ae67e94d36682c0869a683b8443470e354dba123ea83914c87ff22d8d8628fea + languageName: node + linkType: hard + +"minipass@npm:^3.0.0, minipass@npm:^3.1.1, minipass@npm:^3.1.6": + version: 3.3.5 + resolution: "minipass@npm:3.3.5" + dependencies: + yallist: "npm:^4.0.0" + checksum: 54b7be3d5d111832afcb7cc2bcb9e1bd21c3701731d1cd6dd91d673b7658f0c01bd52887764cf08f5dafe9a94abd7ce8fc800a2afe2bc19207bd83daac5ee052 + languageName: node + linkType: hard + +"minizlib@npm:^2.1.1, minizlib@npm:^2.1.2": + version: 2.1.2 + resolution: "minizlib@npm:2.1.2" + dependencies: + minipass: "npm:^3.0.0" + yallist: "npm:^4.0.0" + checksum: c0071edb242d6808652840614193316e82d012b79ff1997352de3df1c19b7580d3d4790c462c8506b1f4225f08162ebba88ebceb1529d168304b06b23757e88d + languageName: node + linkType: hard + +"mkdirp@npm:^1.0.3, mkdirp@npm:^1.0.4": + version: 1.0.4 + resolution: "mkdirp@npm:1.0.4" + bin: + mkdirp: bin/cmd.js + checksum: 123361119829ab8115234f36ed8ef8f697b0f6f83ec9f9bc8f76da587487976d74bc874ffa892e7a66df607fa8f2cc758eed8db225e9cd3a84846350209e53db + languageName: node + linkType: hard + +"ms@npm:2.1.2": + version: 2.1.2 + resolution: "ms@npm:2.1.2" + checksum: 3f46af60a08158f1c77746c06c2f6c7aba7feddafd41335f9baa2d7e0741d7539774aa7d5d1661a7f2b7eed55a7063771297eea016051924dbb04d4c2bf40bcb + languageName: node + linkType: hard + +"ms@npm:^2.0.0, ms@npm:^2.1.1": + version: 2.1.3 + resolution: "ms@npm:2.1.3" + checksum: 78c12f6b473a022ebacc393fc14b76fe40b8feda7218124b86c4684e440e10377a063bec1d3902df1f74714f02b74b36ad7d3a6de9e2fbffa26fc29e5ce018fc + languageName: node + linkType: hard + +"negotiator@npm:^0.6.3": + version: 0.6.3 + resolution: "negotiator@npm:0.6.3" + checksum: d8e3b42d99638b1f363ce114c98e6906ade395c230058e50644417bd398b01381133dbca4bc49f30f6b1c93254e4b5a2d50cc47adcdabf2a8476b6f16311ad5d + languageName: node + linkType: hard + +"node-gyp@npm:latest": + version: 9.3.0 + resolution: "node-gyp@npm:9.3.0" + dependencies: + env-paths: "npm:^2.2.0" + glob: "npm:^7.1.4" + graceful-fs: "npm:^4.2.6" + make-fetch-happen: "npm:^10.0.3" + nopt: "npm:^6.0.0" + npmlog: "npm:^6.0.0" + rimraf: "npm:^3.0.2" + semver: "npm:^7.3.5" + tar: "npm:^6.1.2" + which: "npm:^2.0.2" + bin: + node-gyp: bin/node-gyp.js + checksum: 986e171f91cedd913800b4f272f9c22258a15bc8f44d2426630dc68d98281614004d4da1a8aec7a70a6171056425a95828cd68d8433b89d0e16ed973507ecccf + languageName: node + linkType: hard + +"node-watch@npm:0.7.3": + version: 0.7.3 + resolution: "node-watch@npm:0.7.3" + checksum: f1c93b9527a1bd7ab56edca1fefa4088a48fce3dfc6b1c03afc0f7e58ea84dc3c1b3529b3a475129678a9889bbfabac509f4c72186a2ad5712adda4b26fbd486 + languageName: node + linkType: hard + +"nodemon@npm:^2.0.20": + version: 2.0.20 + resolution: "nodemon@npm:2.0.20" + dependencies: + chokidar: "npm:^3.5.2" + debug: "npm:^3.2.7" + ignore-by-default: "npm:^1.0.1" + minimatch: "npm:^3.1.2" + pstree.remy: "npm:^1.1.8" + semver: "npm:^5.7.1" + simple-update-notifier: "npm:^1.0.7" + supports-color: "npm:^5.5.0" + touch: "npm:^3.1.0" + undefsafe: "npm:^2.0.5" + bin: + nodemon: bin/nodemon.js + checksum: 49aaba39d908a24b7b31c6b8ba81c86763ae2606f21b368af7f79bef5211759d7102a527bb34f2c94196f325d91e6327d3dfc045b470f851ac0053a3901c5382 + languageName: node + linkType: hard + +"nopt@npm:^6.0.0": + version: 6.0.0 + resolution: "nopt@npm:6.0.0" + dependencies: + abbrev: "npm:^1.0.0" + bin: + nopt: bin/nopt.js + checksum: 6ae5c083c5b205d0850f3b00c093cb0b1d4fb28fb69c68c3f933048e666695b1f218db6a4a7f61a4bae2f127268f526a7f2764223208e4dd527c51c56c49a5c7 + languageName: node + linkType: hard + +"nopt@npm:~1.0.10": + version: 1.0.10 + resolution: "nopt@npm:1.0.10" + dependencies: + abbrev: "npm:1" + bin: + nopt: ./bin/nopt.js + checksum: efa5a9c2c167b6c4e399fcefab89d573a580e33a604a04800093e4e0a7c477828c0d8d2f07f6af48c81e270f09d67bb530307239b2b10824fabf2f535b4dee75 + languageName: node + linkType: hard + +"normalize-path@npm:^3.0.0, normalize-path@npm:~3.0.0": + version: 3.0.0 + resolution: "normalize-path@npm:3.0.0" + checksum: 66de83885051c8a7266566cb175281ec583e3d66b5054c744b46a0eebc4eaac1e1d74c640aaf72144086a9661aa60e89ac0b5c92eb76608e5b8a5056dbcf9e27 + languageName: node + linkType: hard + +"normalize-url@npm:^6.0.1, normalize-url@npm:^6.1.0": + version: 6.1.0 + resolution: "normalize-url@npm:6.1.0" + checksum: 571335f6aca25545549a75e9f1ef848cbb1b4db08c19e2a1e042a216d14128fc77e039b08de2dbfa4b8341202dc7fff888ab9ba8aa6940568563d1de60867104 + languageName: node + linkType: hard + +"npmlog@npm:^6.0.0": + version: 6.0.2 + resolution: "npmlog@npm:6.0.2" + dependencies: + are-we-there-yet: "npm:^3.0.0" + console-control-strings: "npm:^1.1.0" + gauge: "npm:^4.0.3" + set-blocking: "npm:^2.0.0" + checksum: c04307b2991f128df6f3bb71c36fa56a65397f56f02a565ed269786ecd5609818e6cae36de3371555e52fdf049a5649a3591ac3bb432a2a0146d67093c4be93c + languageName: node + linkType: hard + +"object-assign@npm:^4.1.1": + version: 4.1.1 + resolution: "object-assign@npm:4.1.1" + checksum: f5cd1f2f1e82e12207e4f2377d9d7d90fbc0d9822a6afa717a6dcab6930d8925e1ebbbb25df770c31ff11335ee423459ba65ffa2e53999926c328b806b4d73d6 + languageName: node + linkType: hard + +"object-inspect@npm:^1.9.0": + version: 1.12.2 + resolution: "object-inspect@npm:1.12.2" + checksum: 46e3fc4cb6a51a37c21c68bdf682befc2e50a0d1643d1f7cbdce9a5fd13e9d44ae8cbbf1b05f0c8daf739c02eb9044d825544e25c3aef2a7d315980c8c7ccb71 + languageName: node + linkType: hard + +"once@npm:^1.3.0, once@npm:^1.3.1, once@npm:^1.4.0": + version: 1.4.0 + resolution: "once@npm:1.4.0" + dependencies: + wrappy: "npm:1" + checksum: 12d5c6ece331855387577e71c96ab5b60269390b131cf9403494206274fa520221c88f8b8d431d7227d080127730460da8907c402ab4142e592c34aacb5c9817 + languageName: node + linkType: hard + +"onetime@npm:^5.1.0": + version: 5.1.2 + resolution: "onetime@npm:5.1.2" + dependencies: + mimic-fn: "npm:^2.1.0" + checksum: 69704199051db0cf44c6c7196bada91387e2a9d171b4585a55c5ce518e64522007e2bcd35833ce5663078bb72042af4cd69289586fef4f74655f604b5e02a617 + languageName: node + linkType: hard + +"p-cancelable@npm:^2.0.0": + version: 2.1.1 + resolution: "p-cancelable@npm:2.1.1" + checksum: 72b765c431614e7a7c5a22d6d32cee904f14df001a11491913b65cdc5143245dbd932487418b9d673c39381d940c22b1cdd08b2d768666fa3c4a5e199801824f + languageName: node + linkType: hard + +"p-limit@npm:^2.2.0": + version: 2.3.0 + resolution: "p-limit@npm:2.3.0" + dependencies: + p-try: "npm:^2.0.0" + checksum: c317600da8c93ba548091ddee29772a00fab9eca806af5167ed0e756c086702f0e25b51c4d29e75bb09869c0c005dc25eb03fad9958066923f6eb34d90df0465 + languageName: node + linkType: hard + +"p-map@npm:^4.0.0": + version: 4.0.0 + resolution: "p-map@npm:4.0.0" + dependencies: + aggregate-error: "npm:^3.0.0" + checksum: 619df8954fe81933903bc760e9884d85540ef7e8f6c24c4e28e2c8f0ad14d480bb7d4541787eee2e2d61aa0fae8b54abc42f7afc35db457884e589386e78a922 + languageName: node + linkType: hard + +"p-try@npm:^2.0.0": + version: 2.2.0 + resolution: "p-try@npm:2.2.0" + checksum: 1b9a6b5d6f42a46e36f053ee737a72cbe8f7990ee65e0d7bc3f8f8324e233d5b5e790f9f660bcc44d93738a2b12108dec1f7a39c9650d276fd1f9d73d54d4f55 + languageName: node + linkType: hard + +"parse-path@npm:^4.0.0": + version: 4.0.4 + resolution: "parse-path@npm:4.0.4" + dependencies: + is-ssh: "npm:^1.3.0" + protocols: "npm:^1.4.0" + qs: "npm:^6.9.4" + query-string: "npm:^6.13.8" + checksum: b2419dfe11428f160116d5db086dd0e0756b71b1415ff1787ea96ea758a9da1dfbc3256ff298eed1782afe792b619713e476619b3fc7cde8ceaab12bf5539240 + languageName: node + linkType: hard + +"parse-url@npm:^6.0.0": + version: 6.0.5 + resolution: "parse-url@npm:6.0.5" + dependencies: + is-ssh: "npm:^1.3.0" + normalize-url: "npm:^6.1.0" + parse-path: "npm:^4.0.0" + protocols: "npm:^1.4.0" + checksum: 5e5504f7ba0075dedf31a2a54408c4912ef907c39766834816f6f52a127ff0d3bb0926bc7e4227f055abca93dac76117c62943971272fd931973cb8f788cc0d3 + languageName: node + linkType: hard + +"patch-console@npm:^1.0.0": + version: 1.0.0 + resolution: "patch-console@npm:1.0.0" + checksum: 0474c87268fba0a933470d7265e7e91f3a4455a66a071c3c22596c7ae890c7815b582f47e5e273587712edea5eccfc23d621f34b53b67e78243295f3d26f5d2e + languageName: node + linkType: hard + +"path-is-absolute@npm:^1.0.0": + version: 1.0.1 + resolution: "path-is-absolute@npm:1.0.1" + checksum: 6bb8fef4324c3f744e5d216980aa053095e1fc533d40fa47f9c1adc16be7fa52d3c4858370c7685406c32ab143a4dca0798f2e2c0f57d7937af66d8dd79267f6 + languageName: node + linkType: hard + +"path-key@npm:^3.1.0": + version: 3.1.1 + resolution: "path-key@npm:3.1.1" + checksum: 93ee8a32e3be43548ece14eba2620bf5164884d0cc1aa3615d136567a39e02066c9b5aeb5b6747d766af55936151c95d9371ba46d4fcf361db9691505650c001 + languageName: node + linkType: hard + +"path-type@npm:^4.0.0": + version: 4.0.0 + resolution: "path-type@npm:4.0.0" + checksum: 6a9330ad8d96f31e929feb414cde2959078379ba5a48c9e3eab34f280d7850eec6a0fa3ed5be9150e9e4d7df5139c1ae92f891b18167528553a11382d8f54183 + languageName: node + linkType: hard + +"picomatch@npm:^2.0.4, picomatch@npm:^2.2.1, picomatch@npm:^2.3.1": + version: 2.3.1 + resolution: "picomatch@npm:2.3.1" + checksum: 6ba5938c24af2c5918e94b39aa0ad48d71f2c30634de69d46e0bd32feb666de4e909406db6ffb78f98d39ef450d6a41b6fa3954dc3659d7b2b750766c1261e5e + languageName: node + linkType: hard + +"promise-inflight@npm:^1.0.1": + version: 1.0.1 + resolution: "promise-inflight@npm:1.0.1" + checksum: 7671022d3ea7e40e29ee941d30df819ed2a81a3d22b1175ed8c1bd83af542ea94ca47b50bea54634b12f7b1837fcd7dd5bcc7720910befa0076d12582ee56c93 + languageName: node + linkType: hard + +"promise-retry@npm:^2.0.1": + version: 2.0.1 + resolution: "promise-retry@npm:2.0.1" + dependencies: + err-code: "npm:^2.0.2" + retry: "npm:^0.12.0" + checksum: cbff149b3327554f3613196ca300a77aefac289624148c37e5c9236242931691a4ba0a76fd1c6171e6a3e6a2b1edfa2acdf122004857e6f3e3efd1be29df6cd2 + languageName: node + linkType: hard + +"prop-types@npm:^15.6.2": + version: 15.8.1 + resolution: "prop-types@npm:15.8.1" + dependencies: + loose-envify: "npm:^1.4.0" + object-assign: "npm:^4.1.1" + react-is: "npm:^16.13.1" + checksum: 196295f119e0f38ec64b43c1121a7e3bdbfcf66b86a01d50df22a247eb22b644033097b53a3b0961ce64d540c7a2c505c844ff245cb548b4f6eda59bbac6fbf0 + languageName: node + linkType: hard + +"protocols@npm:^1.4.0": + version: 1.4.8 + resolution: "protocols@npm:1.4.8" + checksum: 94c8c52162191a0139c5e8ad7b26cc03c074f8d8cbacaab0f1c860880fef19831f79dba344f69f176dc69049ceb08d919980e19f8f0b91ca0dbaa7b7e237ca8a + languageName: node + linkType: hard + +"protocols@npm:^2.0.1": + version: 2.0.1 + resolution: "protocols@npm:2.0.1" + checksum: 351d1ff30f7ef2d6fdebab86c497c2d650d4bc79cad132368e5d0d80ac85b2f9dc99d9514759e4e85fd7b1b4a43bbe9a64e8e5d18a31d15985e3988f8bc9e210 + languageName: node + linkType: hard + +"pstree.remy@npm:^1.1.8": + version: 1.1.8 + resolution: "pstree.remy@npm:1.1.8" + checksum: f144e436fd0b93837fffe2ca0f8638788188a5aca8973996e2f9bb76c70ac0218796e4f5da00a7a64d0715d1df837416d6766ec93f5b24147e71738858a4afd7 + languageName: node + linkType: hard + +"pump@npm:^3.0.0": + version: 3.0.0 + resolution: "pump@npm:3.0.0" + dependencies: + end-of-stream: "npm:^1.1.0" + once: "npm:^1.3.1" + checksum: b2e6702ce154c091b2895cf6f09b35d4db783a3b9658c177387ff6ad00c0e9f6dd9fc5c70f64a3b360bc3624340fca69ff565fad586a206d6818f5e87d836420 + languageName: node + linkType: hard + +"qs@npm:^6.9.4": + version: 6.11.0 + resolution: "qs@npm:6.11.0" + dependencies: + side-channel: "npm:^1.0.4" + checksum: 337966e2e957a7d2a69821c528f3d18a8b346ddb0f16cc08d11c6206aed3b6624927781ff437aa3909e54ad32ebdee2c5396ad4094b1c722760774f7082f6124 + languageName: node + linkType: hard + +"query-string@npm:^6.13.8": + version: 6.14.1 + resolution: "query-string@npm:6.14.1" + dependencies: + decode-uri-component: "npm:^0.2.0" + filter-obj: "npm:^1.1.0" + split-on-first: "npm:^1.0.0" + strict-uri-encode: "npm:^2.0.0" + checksum: 5e2b08906ff1778272f05cddb568eec6547f0b466f541e0acafb388f11cf0975527bac0d36be0021e6ff70f695cb61e634cdd3a8b5db4a11fd2f799e87d11808 + languageName: node + linkType: hard + +"queue-microtask@npm:^1.2.2": + version: 1.2.3 + resolution: "queue-microtask@npm:1.2.3" + checksum: 84624bee6c25c9d9776242ce0dcc3e15f703d897f4b7d982f32ef4d88c51048507a0999d9ff038ec46f65901655460b69240e414da1cebc2d723987ec81cbae8 + languageName: node + linkType: hard + +"quick-lru@npm:^5.1.1": + version: 5.1.1 + resolution: "quick-lru@npm:5.1.1" + checksum: fefb921f96c5cdf650d25d80b709072122e7a24c374aa08b35c4347f319b7614f331002c1107d337651107fadea4a2b8a66774070645a179f6fc6b21edc2085a + languageName: node + linkType: hard + +"qunit@npm:^2.8.0": + version: 2.19.3 + resolution: "qunit@npm:2.19.3" + dependencies: + commander: "npm:7.2.0" + node-watch: "npm:0.7.3" + tiny-glob: "npm:0.2.9" + bin: + qunit: bin/qunit.js + checksum: 46c70b0dbfe3620d4e321869633d70d8b01a6c0b033ecd891e5205320f0297982769def36fa739ff1ac6d3dcb89dd58d7077e07803de4e500df8423f42aef2eb + languageName: node + linkType: hard + +"react-devtools-core@npm:^4.19.1": + version: 4.26.1 + resolution: "react-devtools-core@npm:4.26.1" + dependencies: + shell-quote: "npm:^1.6.1" + ws: "npm:^7" + checksum: d182ca00bd6f98f800ba673ce969e46c9a2c8875505b2ceebeea1f69856e47206a3a22c05b34bb346810260da94239c37804ebb2c5ee2315dee5ede8fddd8acd + languageName: node + linkType: hard + +"react-is@npm:^16.13.1": + version: 16.13.1 + resolution: "react-is@npm:16.13.1" + checksum: 0c9adc5d984db733fb1dd298f3e94cdec66bc328d27fb11df65971d2cc9a299008bc64baab8fe8e79943df85b445a1008b2cc9e270825d0fd056e5a0d2df8de6 + languageName: node + linkType: hard + +"react-reconciler@npm:^0.26.2": + version: 0.26.2 + resolution: "react-reconciler@npm:0.26.2" + dependencies: + loose-envify: "npm:^1.1.0" + object-assign: "npm:^4.1.1" + scheduler: "npm:^0.20.2" + peerDependencies: + react: ^17.0.2 + checksum: 6afc7bc37899ff5cfec336b6b9dd70e5e76840e903c6e95e49257b6e335df9459e0a952338a09ed10035d4ad403200839dd58e42ff152be30bfe92ce6104a574 + languageName: node + linkType: hard + +"react@npm:^16.13.1": + version: 16.14.0 + resolution: "react@npm:16.14.0" + dependencies: + loose-envify: "npm:^1.1.0" + object-assign: "npm:^4.1.1" + prop-types: "npm:^15.6.2" + checksum: 788a39b1997501aa7d6501a3bd4a85ddd704b9e9555199974853542564a663c03bbf58351cbf7fa11034c9cd65d578f77ef32c67d7e4a140a0181ab51a770187 + languageName: node + linkType: hard + +"readable-stream@npm:^3.1.1, readable-stream@npm:^3.4.0, readable-stream@npm:^3.6.0": + version: 3.6.0 + resolution: "readable-stream@npm:3.6.0" + dependencies: + inherits: "npm:^2.0.3" + string_decoder: "npm:^1.1.1" + util-deprecate: "npm:^1.0.1" + checksum: bda7b24d3910bf0ec4a1df3c540e1b97b1ed3ca49ea0ddc0d2c6bf29d3997251a7244608de1d842555641d1c115d9b3566167fef9225ee6ef147c9e6a539395b + languageName: node + linkType: hard + +"readdirp@npm:~3.6.0": + version: 3.6.0 + resolution: "readdirp@npm:3.6.0" + dependencies: + picomatch: "npm:^2.2.1" + checksum: 9dea77bef6b47b7c7553da4b5f30606449b49cf2aa043de23e22bee909c2d26c97630b8f8fa43775e318731c5a208d2063a10d3c788a3b0e1a9e32c5ab5fe790 + languageName: node + linkType: hard + +"readline-sync@npm:1.4.9": + version: 1.4.9 + resolution: "readline-sync@npm:1.4.9" + checksum: 420d7cd52cef845f2f17ab77c3f41de0335db44ead0b6b8580e05b3d32e3660533067c7f5bf698593b6159853cb7ff2a2ae3205ea187f4697f366b6cb271ec3f + languageName: node + linkType: hard + +"resolve-alpn@npm:^1.0.0": + version: 1.2.1 + resolution: "resolve-alpn@npm:1.2.1" + checksum: e3dfc6bc87269e25615e15afb7c96d8f0c35f64ef9f03ddc7524b05d09c3b6ed5377679aa6fc4fb7e057d8799e2a9b82f12a691212a8bfcd7c26e353bfecb14c + languageName: node + linkType: hard + +"responselike@npm:^2.0.0": + version: 2.0.1 + resolution: "responselike@npm:2.0.1" + dependencies: + lowercase-keys: "npm:^2.0.0" + checksum: 630d53fc31717a5a8cd634d4844feb41e70be4c3d01ffc79a9964b289a978ffefed09c70bd71d7006e74e27ed274e7f8f5bf09b0cf333e562e6ef2505ac3f4e5 + languageName: node + linkType: hard + +"restore-cursor@npm:^3.1.0": + version: 3.1.0 + resolution: "restore-cursor@npm:3.1.0" + dependencies: + onetime: "npm:^5.1.0" + signal-exit: "npm:^3.0.2" + checksum: c0480003dbdebd1a4cfc75287b073a2ce66fb7eaa611282a5dc27593a9edaa39a030fa8ad765f1cb8689f71dbe57988baa8300f60e26a2a8240e41aae25f4de9 + languageName: node + linkType: hard + +"retry@npm:^0.12.0": + version: 0.12.0 + resolution: "retry@npm:0.12.0" + checksum: 1c3616bdf89aa6f887bcca2b86603c255f4b497577f6a54f33262f4f314b8516d65e251f717b45e2a5ec234359999015a9e2263b38467544188210327e638ac3 + languageName: node + linkType: hard + +"reusify@npm:^1.0.4": + version: 1.0.4 + resolution: "reusify@npm:1.0.4" + checksum: 3d0f10293851d5a50453257bb837ad973b046fc51fa489c46f3a480e0e3a9cf249babb30a493ad5f802a71510b2ee4e65a4609a644f98b3413575ab707f841d7 + languageName: node + linkType: hard + +"rimraf@npm:^3.0.2": + version: 3.0.2 + resolution: "rimraf@npm:3.0.2" + dependencies: + glob: "npm:^7.1.3" + bin: + rimraf: bin.js + checksum: b786c9ad52df9fbcd9c7120e105f3150b83b39dd87d9235a93b0c7e806575e1e68936504ff64563dbe67b3f8bbbc00bdfff586157d402ee8990e7143456511c0 + languageName: node + linkType: hard + +"root-workspace-0b6124@workspace:.": + version: 0.0.0-use.local + resolution: "root-workspace-0b6124@workspace:." + dependencies: + "@types/node": "npm:^18.11.9" + "@types/pnpapi": "npm:^0.0.2" + "@yarnpkg/cli": "npm:^4.0.0-rc.27" + "@yarnpkg/core": "npm:^4.0.0-rc.27" + "@yarnpkg/fslib": "npm:^3.0.0-rc.27" + "@yarnpkg/libzip": "npm:^3.0.0-rc.27" + "@yarnpkg/plugin-pnp": "npm:^4.0.0-rc.27" + "@yarnpkg/pnp": "npm:^4.0.0-rc.27" + esbuild: "npm:^0.15.13" + nodemon: "npm:^2.0.20" + typescript: "npm:^4.8.4" + languageName: unknown + linkType: soft + +"run-parallel@npm:^1.1.9": + version: 1.2.0 + resolution: "run-parallel@npm:1.2.0" + dependencies: + queue-microtask: "npm:^1.2.2" + checksum: 45bff4f6664ae79b8653ebd32c6e9e9e37139683f7bd1d54d5a05c409c9d167ece16c9b7e36a99ac4bb7a08b5f72b4084a1e08eba443bc6e2ca9044ef972752c + languageName: node + linkType: hard + +"safe-buffer@npm:~5.2.0": + version: 5.2.1 + resolution: "safe-buffer@npm:5.2.1" + checksum: da8a21b3336a21c152eb3ba8ab41acde5772644f026d4b6e5f9fd8afa4f0cf407c113b19a362580fab9aea8beea295465432fc7684f9ff38aac559bb1b5528cd + languageName: node + linkType: hard + +"safer-buffer@npm:>= 2.1.2 < 3.0.0": + version: 2.1.2 + resolution: "safer-buffer@npm:2.1.2" + checksum: d4199666e9e792968c0b88c2c35dd400f56d3eecb9affbcf5207922822eadf30cc06995bae3c5d0a653851bbd40fc0af578bf046bbf734199ce22433ba4da659 + languageName: node + linkType: hard + +"scheduler@npm:^0.20.2": + version: 0.20.2 + resolution: "scheduler@npm:0.20.2" + dependencies: + loose-envify: "npm:^1.1.0" + object-assign: "npm:^4.1.1" + checksum: b3ec1f4367776c1e8632d9b6d594fdf0d4fe0aefd738a7f6902f60e9b910142e4997c4ad931f07a553de7bae7bfc2144e9966a9a35e8ef084fe6e48f5dcf94c6 + languageName: node + linkType: hard + +"semver@npm:^5.7.1": + version: 5.7.1 + resolution: "semver@npm:5.7.1" + bin: + semver: ./bin/semver + checksum: e1d12140b695aeb8917978d134ff3f8fee33489a5eaf6b217111ab0b14cbf45f36753d510db4dfbdc5a6f304e053ff1a4995c5498e9734ad9bf98182e4f39704 + languageName: node + linkType: hard + +"semver@npm:^7.1.2, semver@npm:^7.3.5": + version: 7.3.8 + resolution: "semver@npm:7.3.8" + dependencies: + lru-cache: "npm:^6.0.0" + bin: + semver: bin/semver.js + checksum: 94ad80ee14889020cb4a14d809fb99d16cbf4ff3dc7f4c564fc72efe2c5763a60090a1c16a9fd18ceeb1e993a1303a4d870c0a22f26adaf435b368b46a7d8462 + languageName: node + linkType: hard + +"semver@npm:~7.0.0": + version: 7.0.0 + resolution: "semver@npm:7.0.0" + bin: + semver: bin/semver.js + checksum: c0b7fdd720c6ee955cd71172ef8d63f41976d70049f02aa7569edff0ab89846ee035e39c82f3733fd2af3285f6ca6e14c3778e8de84cd8ea6ec1a33c68bf072a + languageName: node + linkType: hard + +"set-blocking@npm:^2.0.0": + version: 2.0.0 + resolution: "set-blocking@npm:2.0.0" + checksum: 9e8f5aeb7cd850a60b5dbf47d42051137c14f58f375d9a70ca227b797d6ffed3dabf659587d2f183231085f1da2dc3067e2af9f5fcd66fb65c98da5fb54a22fb + languageName: node + linkType: hard + +"shebang-command@npm:^2.0.0": + version: 2.0.0 + resolution: "shebang-command@npm:2.0.0" + dependencies: + shebang-regex: "npm:^3.0.0" + checksum: 5907a8d5facbefbd4dc8d21778d2136d5d22d61b5526452d92d46662614f0ed57090e7adf7184fe9d2d5ef75af9f05d7573437e10b37f2e6fdeeeb5f59fd9ada + languageName: node + linkType: hard + +"shebang-regex@npm:^3.0.0": + version: 3.0.0 + resolution: "shebang-regex@npm:3.0.0" + checksum: 6be1588a86ed74d05481d09a6ef6a8db44550fda9785ae08c3df06717abc2e5e9a11804b1d0ac9b0641870c5ebf545e18c8d348bc105ba09227e6a32415ea1d6 + languageName: node + linkType: hard + +"shell-quote@npm:^1.6.1": + version: 1.7.4 + resolution: "shell-quote@npm:1.7.4" + checksum: 80993497110197ab6d9685c5e3458656b6e2cf94055be52bd2d83926784bd3214c3f6d251a76b4e72afa945f8c3da3444eac5fd978cededc367ed0fc30e0d108 + languageName: node + linkType: hard + +"side-channel@npm:^1.0.4": + version: 1.0.4 + resolution: "side-channel@npm:1.0.4" + dependencies: + call-bind: "npm:^1.0.0" + get-intrinsic: "npm:^1.0.2" + object-inspect: "npm:^1.9.0" + checksum: d712a4e682471c1a1c7bf9294a8bb0f066566e016de11fdb01ae0c0ebf8102c97cc2b2d3b0264ca377eb2d3444bf4c06909392c518a162f047b7444608e0e9a2 + languageName: node + linkType: hard + +"signal-exit@npm:^3.0.2, signal-exit@npm:^3.0.7": + version: 3.0.7 + resolution: "signal-exit@npm:3.0.7" + checksum: 5cf7525c55a72d8d104d914acf2e470f74b2c156197277ad7b331bc5de3d8790170fed3c82ff98c7c31adaa8ff941bfd5ba44f55171cbe8ed0e939fa82a8322a + languageName: node + linkType: hard + +"simple-update-notifier@npm:^1.0.7": + version: 1.0.7 + resolution: "simple-update-notifier@npm:1.0.7" + dependencies: + semver: "npm:~7.0.0" + checksum: 7c7053ecefbe2f8ba88af5522e59266de309edf0861320f889ae38676353b52b3e9d15f6e99867fa696eb6e2734d563ae0a910e0e8577c68411a34e969338b16 + languageName: node + linkType: hard + +"slash@npm:^3.0.0": + version: 3.0.0 + resolution: "slash@npm:3.0.0" + checksum: b88a0f1086e3cd20c8b61f50d8afff5fba83f95167a86432f54387565c9424e5d1970612371f768c128ed4b5b1c427120382bafc8c9edf0b3737eb226b733687 + languageName: node + linkType: hard + +"slice-ansi@npm:^3.0.0": + version: 3.0.0 + resolution: "slice-ansi@npm:3.0.0" + dependencies: + ansi-styles: "npm:^4.0.0" + astral-regex: "npm:^2.0.0" + is-fullwidth-code-point: "npm:^3.0.0" + checksum: e7788a1baa89dabce835b099e72d1d30cf48332faa9431327ec3b6aefe4de3f84802e63d706374927eb80e30102f3b3a3c5239b5c63e3f671459003e00148677 + languageName: node + linkType: hard + +"smart-buffer@npm:^4.2.0": + version: 4.2.0 + resolution: "smart-buffer@npm:4.2.0" + checksum: 898a5ce4651108164625916aa54b6f7c13e86279a31dd321737d27c4b795cfaaeb1c30417f8809029d80d20710d8a5045998afd35e0f1080b32648f5670aa99b + languageName: node + linkType: hard + +"socks-proxy-agent@npm:^7.0.0": + version: 7.0.0 + resolution: "socks-proxy-agent@npm:7.0.0" + dependencies: + agent-base: "npm:^6.0.2" + debug: "npm:^4.3.3" + socks: "npm:^2.6.2" + checksum: d57c2c68a2c16a2ac0af30971e1c4899e80cab3bbe405fe2fa3fce26ccd007fe855110b97c0e6d96ddc56926e1e5927a868070cb09185a768d1ad8cbe1a68aa5 + languageName: node + linkType: hard + +"socks@npm:^2.6.2": + version: 2.7.1 + resolution: "socks@npm:2.7.1" + dependencies: + ip: "npm:^2.0.0" + smart-buffer: "npm:^4.2.0" + checksum: a8026d6abfcd168a661240848f6989fbba66276e8fa97ff1cb1079c2f3c6907dcc8284fcbc4f6d3fee8d071afb4fc8313da7e5fbf6d8768f206347a671f1542b + languageName: node + linkType: hard + +"split-on-first@npm:^1.0.0": + version: 1.1.0 + resolution: "split-on-first@npm:1.1.0" + checksum: ae2bc24abc415ee7b2259ae4572857a84650b610b2ee6436b50bc8563840a74ee38b0a32c0e1d9ac4986e16408c934f01018dc6c33fdaaadd45356efa78c7e1b + languageName: node + linkType: hard + +"sprintf-js@npm:~1.0.2": + version: 1.0.3 + resolution: "sprintf-js@npm:1.0.3" + checksum: 3e0738f581ab5582868689318a4987ea532cdf220266c1af6fdc5a5091f5c4e758fe3fed9125ac82ed91119ec2cbe0762c0e069b59b929bf70e8bbbf879e56e5 + languageName: node + linkType: hard + +"ssri@npm:^6.0.1": + version: 6.0.2 + resolution: "ssri@npm:6.0.2" + dependencies: + figgy-pudding: "npm:^3.5.1" + checksum: 8cce511e0cd0da1988bd97fae9b2f17c19515a3e5b6556203d6766ba414446092a2246013fafb41c46354e31ff7bad5af6be8aeb3fb666a929ab9a6f5b1f6b40 + languageName: node + linkType: hard + +"ssri@npm:^9.0.0": + version: 9.0.1 + resolution: "ssri@npm:9.0.1" + dependencies: + minipass: "npm:^3.1.1" + checksum: ec9e6fbb74ccb030391fc33aa1a8373014f1cdde570e389cf25f201604d6889035fc8b4409a6e8e787d75ddad892839c0e5a4ea6b67e7ab91f3c619e5e6e087a + languageName: node + linkType: hard + +"stack-utils@npm:^2.0.2": + version: 2.0.5 + resolution: "stack-utils@npm:2.0.5" + dependencies: + escape-string-regexp: "npm:^2.0.0" + checksum: 1a2a1450abc302addf8c3f60b38439786b1410fef30a30f162875d03abb38ff5b2c8da97d04552cd018dd5565338b9bc6aeeaade3f779eb910e76cad46be7b30 + languageName: node + linkType: hard + +"strict-uri-encode@npm:^2.0.0": + version: 2.0.0 + resolution: "strict-uri-encode@npm:2.0.0" + checksum: 3dccd623de057e3b9646be72dd6d5b2dc18ab7abccfcc8276a2b7d3fde7f4159e24e3324b475e87cce6b0d0c8e58e1a632714f85fa9c76f756ea5e456dc520a0 + languageName: node + linkType: hard + +"string-width@npm:^1.0.2 || 2 || 3 || 4, string-width@npm:^4.0.0, string-width@npm:^4.1.0, string-width@npm:^4.2.0, string-width@npm:^4.2.2, string-width@npm:^4.2.3": + version: 4.2.3 + resolution: "string-width@npm:4.2.3" + dependencies: + emoji-regex: "npm:^8.0.0" + is-fullwidth-code-point: "npm:^3.0.0" + strip-ansi: "npm:^6.0.1" + checksum: aa0f3e082b461e0dc8c54334ef2c748b777e7529c34d348ee16e69690da45e24f223804d94060633126462e2aa4906d6fbfab882f34036a9f4ccd3dbcd2d6931 + languageName: node + linkType: hard + +"string_decoder@npm:^1.1.1": + version: 1.3.0 + resolution: "string_decoder@npm:1.3.0" + dependencies: + safe-buffer: "npm:~5.2.0" + checksum: c6b892bdb15861a68c4f9599bdff3909c70b1a2cee73d226a235b8fbadfc0aa060bdd265cb3fd86e856cee6d98cd0d657f84098cb51241f4fae19d0cacf9e13e + languageName: node + linkType: hard + +"strip-ansi@npm:^6.0.0, strip-ansi@npm:^6.0.1": + version: 6.0.1 + resolution: "strip-ansi@npm:6.0.1" + dependencies: + ansi-regex: "npm:^5.0.1" + checksum: 056ca08f8097351060572eee207ec66247937d7248780a3d643b5eed7d6b5ca6a0990a4f921ffd329e8e9b66427a384237892ac3cb47463adf7d040b154084ec + languageName: node + linkType: hard + +"supports-color@npm:^5.5.0": + version: 5.5.0 + resolution: "supports-color@npm:5.5.0" + dependencies: + has-flag: "npm:^3.0.0" + checksum: 2eca8c4c8fccd2bd0027af240f85e99b1c9cb221186288dd478ce0fc61bdc07394e47f1bba2c91fe3ae432764772e3639e9c48bef19817267f151ae4a9b9ebef + languageName: node + linkType: hard + +"supports-color@npm:^7.1.0": + version: 7.2.0 + resolution: "supports-color@npm:7.2.0" + dependencies: + has-flag: "npm:^4.0.0" + checksum: 9218cc0d12c57f4ae213e6ace98e0cda2d8f47617300f21501a0078e17d9e3b4aa3effdc1006e369dfd5389ff4f99682b9617d4a8fb7566e2964955dd14d4cc3 + languageName: node + linkType: hard + +"tar-stream@npm:^2.0.1": + version: 2.2.0 + resolution: "tar-stream@npm:2.2.0" + dependencies: + bl: "npm:^4.0.3" + end-of-stream: "npm:^1.4.1" + fs-constants: "npm:^1.0.0" + inherits: "npm:^2.0.3" + readable-stream: "npm:^3.1.1" + checksum: c0c8df70dbca1da9fc5dc89046b972ee9703ee0d07e096749e5c60f4847dd912e99da1dbb9cb9bd87be0deba550e60dbec2477a1c44c000435ceb5a909f5db5f + languageName: node + linkType: hard + +"tar@npm:^6.0.5, tar@npm:^6.1.11, tar@npm:^6.1.2": + version: 6.1.12 + resolution: "tar@npm:6.1.12" + dependencies: + chownr: "npm:^2.0.0" + fs-minipass: "npm:^2.0.0" + minipass: "npm:^3.0.0" + minizlib: "npm:^2.1.1" + mkdirp: "npm:^1.0.3" + yallist: "npm:^4.0.0" + checksum: 661e622cf4ae2cf9ffcef086a2bca16fadcf585415985377a1a54a8b92a475cc9c34501f59e87d16168586160d559d80186f1e5b18daf71d9678c6852d5137a2 + languageName: node + linkType: hard + +"tau-prolog@npm:^0.2.66": + version: 0.2.81 + resolution: "tau-prolog@npm:0.2.81" + dependencies: + qunit: "npm:^2.8.0" + readline-sync: "npm:1.4.9" + checksum: 28a72c2fa6d2f5f6f8dee14a505235a431ebd14c6994ff87851fe8fce7b14d64c2b49d1b5eaeea0f02727dc06ea20696416995bca876857441e667366d6b72b7 + languageName: node + linkType: hard + +"tiny-glob@npm:0.2.9": + version: 0.2.9 + resolution: "tiny-glob@npm:0.2.9" + dependencies: + globalyzer: "npm:0.1.0" + globrex: "npm:^0.1.2" + checksum: 41f9a38124164bda6a2149f951e046c555a508ce22cbad2d08b7d4066622faa6933feae503c647815342b9e461ffc93cf7e41b28e835030480b081e000b1caf7 + languageName: node + linkType: hard + +"tinylogic@npm:^2.0.0": + version: 2.0.0 + resolution: "tinylogic@npm:2.0.0" + checksum: 8c97825b2916ace0cee7dbd9f39762c063ca7cf27f5f0c3f0c16bab2de8580b07a8bb123ebcd52767ff5923919eb70f241ccc4f7d1889ad0c07aa77d88dcb409 + languageName: node + linkType: hard + +"to-regex-range@npm:^5.0.1": + version: 5.0.1 + resolution: "to-regex-range@npm:5.0.1" + dependencies: + is-number: "npm:^7.0.0" + checksum: 16564897c76bbd25bd3c375ee8d4b1fd3ac965fc4ab550ff034a1dddb53816ec06dc27095468394ad4de5978d5e831a9d1ae4cb31080dc4ebd9ba80a47dc1a4f + languageName: node + linkType: hard + +"touch@npm:^3.1.0": + version: 3.1.0 + resolution: "touch@npm:3.1.0" + dependencies: + nopt: "npm:~1.0.10" + bin: + nodetouch: ./bin/nodetouch.js + checksum: 21657a0e9ed8de9263090dfcc261e652cf36fa9dda56e257897eb9d4afc973a13b9df6a62fb797a9afde3f47adb0a1c2174c02e0a54245fe9cff0a1ef5631dad + languageName: node + linkType: hard + +"treeify@npm:^1.1.0": + version: 1.1.0 + resolution: "treeify@npm:1.1.0" + checksum: d995a3ef5940b00b39e6e6db6b11bfe0c39259d9c97b02ad7aef6e7322744e237f9567599417105bcc0cc6c1549270d81288c0d614f8d05b3adaf17a624ab9c0 + languageName: node + linkType: hard + +"tslib@npm:^2.4.0": + version: 2.4.1 + resolution: "tslib@npm:2.4.1" + checksum: a739a21e3ff059e62c7c3c0845333fbc9c081bcc91e015f2d246a31eeaf1fb0e29b10c0913c7d22f692b3203bb469fd60ca5288aa4f27d351a969df2d0714899 + languageName: node + linkType: hard + +"tunnel@npm:^0.0.6": + version: 0.0.6 + resolution: "tunnel@npm:0.0.6" + checksum: 4b6009e1ed9c1857d58462867cd731f4af255c0406fc982dd0a17735c5c991293bc57a8c0957c5f51dfc3778baa280e399d3e05f1ca4aaf7442349c529b7c89d + languageName: node + linkType: hard + +"typanion@npm:^3.3.0, typanion@npm:^3.8.0": + version: 3.12.1 + resolution: "typanion@npm:3.12.1" + checksum: 492540c6ac09c20b1693dd4ca4278f95d3771892c551aad26844faec0bbbdafc28c72b0c0df60ac68252b1fade7e0e664df517d6f0be702c32929368814373c2 + languageName: node + linkType: hard + +"type-fest@npm:^0.12.0": + version: 0.12.0 + resolution: "type-fest@npm:0.12.0" + checksum: 352e5bd119a773b257d4376121a3cc99b9d95be656f14254a68150abfe643c2d5abd9b8a37e31d41e3919e63d64652362f6835d29f0b6e9da553b2b389ef1e92 + languageName: node + linkType: hard + +"type-fest@npm:^0.15.1": + version: 0.15.1 + resolution: "type-fest@npm:0.15.1" + checksum: eba8aa1aa89f97d8a0e0cdf952c50dcd53fff66f5d19f5a21cf1a8d14cb096e4f31375271e55dcf4a67a1ca2a8fcf05ef1aa335ddbe6b8adc1f0188568955d39 + languageName: node + linkType: hard + +"type-fest@npm:^0.21.3": + version: 0.21.3 + resolution: "type-fest@npm:0.21.3" + checksum: b64cd677e7d579f929d8d14bccdad0ca5da9013124f11457ce9cc255e3141dd453128a46fed2e03f38c0c2319853118edcfb118d1f4e4f09091f6bbdb91ce467 + languageName: node + linkType: hard + +"typescript@npm:^4.8.4": + version: 4.8.4 + resolution: "typescript@npm:4.8.4" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: 008c336ed785130b6e13254adbfc4084f5dbbe62851df9bac3eaf62fc29e0a396839c00ce47e0d92db44fa9a08b9f7ba4d31304f2b10cf7d42a0817728e822a1 + languageName: node + linkType: hard + +"typescript@patch:typescript@npm%3A^4.8.4#optional!builtin": + version: 4.8.4 + resolution: "typescript@patch:typescript@npm%3A4.8.4#optional!builtin::version=4.8.4&hash=701156" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: 72574875bac1c13aec22010780d4841a10a88342d73744dbbad538bb0ed601f2024187f197239f2dcbf2442f83ecc4de04a80941d49730c403969fbba035ed81 + languageName: node + linkType: hard + +"undefsafe@npm:^2.0.5": + version: 2.0.5 + resolution: "undefsafe@npm:2.0.5" + checksum: ae6c8e9192b85698bbdc7f1e2127c13b9fc6344b6d51ccd13ea98b349e8f36d9fef3f13125a50fa135d3dc14d6bd190b566f0cc515f89a76e36a6d05d5d724b6 + languageName: node + linkType: hard + +"unique-filename@npm:^2.0.0": + version: 2.0.1 + resolution: "unique-filename@npm:2.0.1" + dependencies: + unique-slug: "npm:^3.0.0" + checksum: 1efaebd1b9df4770537f73b040adc8ef2b7da29b837388d97d6d78a4a739dc67bc491e45d381a377bc80ee838e7e1dc904193b3e73cd6c117d96f92b3a09ed46 + languageName: node + linkType: hard + +"unique-slug@npm:^3.0.0": + version: 3.0.0 + resolution: "unique-slug@npm:3.0.0" + dependencies: + imurmurhash: "npm:^0.1.4" + checksum: ae31bb1d8126400e512385ec239b3ca40f6a8790af9d6dedb0842b340b3ecc0a7de413ff270f3ea3dae1565c6f745ab6e28363387cd32ecddbe0fc72ee247303 + languageName: node + linkType: hard + +"util-deprecate@npm:^1.0.1": + version: 1.0.2 + resolution: "util-deprecate@npm:1.0.2" + checksum: 6a88ed8344d07f2324b304ee36def365d967953b5a9c15baa3213eb3909e86a7da1ee70a4c2133e80c23d6c1987590e9c3c57d874e20a124f9e41620b462fa57 + languageName: node + linkType: hard + +"which@npm:^2.0.1, which@npm:^2.0.2": + version: 2.0.2 + resolution: "which@npm:2.0.2" + dependencies: + isexe: "npm:^2.0.0" + bin: + node-which: ./bin/node-which + checksum: 3728616c789b289c36ba2572887145e0736f06fe3435b8fef17e27eb5ec0696f61a21e356dd7fa58486346e57186863afa1b6c27c7665f7e674c8124f7f61157 + languageName: node + linkType: hard + +"wide-align@npm:^1.1.5": + version: 1.1.5 + resolution: "wide-align@npm:1.1.5" + dependencies: + string-width: "npm:^1.0.2 || 2 || 3 || 4" + checksum: 39915f81cdc6cee1f54bfd7672619cc6d0bd558089f968ea7831324cd4b5ed00e78e710a64f05e5d75ed7880e45eef97295907f68d5aabb9d2899436c917b275 + languageName: node + linkType: hard + +"widest-line@npm:^3.1.0": + version: 3.1.0 + resolution: "widest-line@npm:3.1.0" + dependencies: + string-width: "npm:^4.0.0" + checksum: a82a38cdd25daa8f242e4731b72824c12d1eebcaaaae7611787d383004013893969a6cfbe68fc27cb46d486210d35948174daa11c0430115266b94aead6b0160 + languageName: node + linkType: hard + +"wrap-ansi@npm:^6.2.0": + version: 6.2.0 + resolution: "wrap-ansi@npm:6.2.0" + dependencies: + ansi-styles: "npm:^4.0.0" + string-width: "npm:^4.1.0" + strip-ansi: "npm:^6.0.0" + checksum: 85e47f89dce667073472ee5721b1cd238ee88b438e4ee61ab4cfc966740942330462326942dc7d44ee7a1b2001914b8cfb8823ec7d3ed1fec15cf0fdb0410f83 + languageName: node + linkType: hard + +"wrappy@npm:1": + version: 1.0.2 + resolution: "wrappy@npm:1.0.2" + checksum: 37d243a577dfeee20586eae1e3208dfb4e4cea1211a2a4116a19b50d91e619ff3dbc5ec934e28ca9baaa11a65df826c8d65c5fd1bb81f0ce0dadb469d47061c2 + languageName: node + linkType: hard + +"ws@npm:^7, ws@npm:^7.5.5": + version: 7.5.9 + resolution: "ws@npm:7.5.9" + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + checksum: 5a4f52060e2a65194c324e5506021c998444ef5740365f7f04a59da38d2da5229221f5ab6e7ceee0d5999d03c2c1c73164a5ebdafa481043edeae4c5c42f988c + languageName: node + linkType: hard + +"yallist@npm:^4.0.0": + version: 4.0.0 + resolution: "yallist@npm:4.0.0" + checksum: cd7fe32508c6942d8b979278fbe13846fe88cd6840d78043d08c6b2c74d67ce38b58bd21618dca8a4e132dcc025fc0e66a7d87ca10cf6ed338465607ebff4378 + languageName: node + linkType: hard + +"yoga-layout-prebuilt@npm:^1.9.6": + version: 1.10.0 + resolution: "yoga-layout-prebuilt@npm:1.10.0" + dependencies: + "@types/yoga-layout": "npm:1.9.2" + checksum: 12d24d35f8f6db885b0e10132df54c57001972c67cf923784801c7da145025bea07334b7cf1988e0560c3596dfd2d7ce908fb967463ce1a2792fa840187042ef + languageName: node + linkType: hard diff --git a/lib/fromYAML.nix b/lib/fromYAML.nix new file mode 100644 index 0000000..1b2e5fa --- /dev/null +++ b/lib/fromYAML.nix @@ -0,0 +1,153 @@ +# Many thanks to https://github.com/nix-community/dream2nix/blob/5252794e58eedb02d607fa3187ffead7becc81b0/src/subsystems/nodejs/translators/yarn-lock/parser.nix +# who have solved the problem of parsing the Yarn lock file YAML in absence of a Nix builtin for parsing YAML + +# MIT License + +# Copyright (c) 2021 DavHau + +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: + +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. + +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. + +/* +This is a yarn.lock v1 & v2 to attrs parser. +It regexes the yarn file line by line and replaces characters in order to +make it a valid json, then parses the json. +*/ +{lib, ...}: let + l = lib // builtins; + + parse = text: let + lines = l.splitString "\n" text; + + # Find the line number at which the actual data begins. + # Jump comments and meta fields at the beginning of the file. + findStartLineNum = num: let + line = l.elemAt lines num; + in + if + ! l.hasPrefix "#" line + && ! l.hasPrefix " " line + && ! l.hasPrefix "_" line + then num + else findStartLineNum (num + 1); + + # all relevant lines which contain the actual data + contentLines = + l.sublist + (findStartLineNum 0) + ((l.length lines) - 1) + lines; + + # Match each line to get: indent, key, value. + # If a key value expression spans multiple lines, + # the value of the current line will be defined null + matchLine = line: let + # yarn v2 single line + m1 = l.match ''( *)(.*): (.*)'' line; + # multi line v1 & v2 + m2 = l.match ''( *)(.*):$'' line; + + # yarn v1 single line with quoted key + m3 = l.match ''( *)(.*) "(.*)"'' line; + # yarn v1 single line with unquoted key + m4 = l.match ''( *)(.*) (.*)'' line; + in + if m1 != null + then { + indent = (l.stringLength (l.elemAt m1 0)) / 2; + key = l.elemAt m1 1; + value = l.elemAt m1 2; + } + else if m2 != null + then { + indent = (l.stringLength (l.elemAt m2 0)) / 2; + # transform yarn 1 to yarn 2 style + key = + l.replaceStrings ['', "''] ['', ''] + (l.replaceStrings [''", ''] ['', ''] (l.elemAt m2 1)); + value = null; + } + else if m3 != null + then { + indent = (l.stringLength (l.elemAt m3 0)) / 2; + key = l.elemAt m3 1; + value = l.elemAt m3 2; + } + else if m4 != null + then { + indent = (l.stringLength (l.elemAt m4 0)) / 2; + key = l.elemAt m4 1; + value = l.elemAt m4 2; + } + else null; + + # generate string with `num` closing braces + closingBraces = num: + if num == 1 + then "}" + else "}" + (closingBraces (num - 1)); + + # convert yarn lock lines to json lines + jsonLines = lines: let + filtered = l.filter (line: l.match ''[[:space:]]*'' line == null) lines; + matched = l.map (line: matchLine line) filtered; + in + l.imap0 + (i: line: let + mNext = l.elemAt matched (i + 1); + m = l.elemAt matched i; + # ensure key is quoted + keyInQuotes = let + beginOK = l.hasPrefix ''"'' m.key; + endOK = l.hasSuffix ''"'' m.key; + begin = l.optionalString (! beginOK) ''"''; + end = l.optionalString (! endOK) ''"''; + in ''${begin}${m.key}${end}''; + # ensure value is quoted + valInQuotes = + if l.hasPrefix ''"'' m.value + then m.value + else ''"${m.value}"''; + in + # reached the end, put closing braces + if l.length filtered == i + 1 + then let + end = closingBraces m.indent; + in ''${keyInQuotes}: ${valInQuotes}${end}}'' + # handle lines with only a key (beginning of multi line statement) + else if m.value == null + then ''${keyInQuotes}: {'' + # if indent of next line is smaller, close the object + else if mNext.indent < m.indent + then let + end = closingBraces (m.indent - mNext.indent); + in ''${keyInQuotes}: ${valInQuotes}${end},'' + # line with key value statement + else ''${keyInQuotes}: ${valInQuotes},'') + filtered; + + # concatenate json lines to json string + json = "{${l.concatStringsSep "\n" (jsonLines contentLines)}"; + + # parse the json to an attrset + dataRaw = l.fromJSON json; + in + dataRaw; +in { + inherit parse; +} diff --git a/lib/mkYarnPackage.nix b/lib/mkYarnPackage.nix index f57680b..539327c 100644 --- a/lib/mkYarnPackage.nix +++ b/lib/mkYarnPackage.nix @@ -3,60 +3,73 @@ with lib; let + structUtils = import ./structUtils.nix { inherit lib; }; + parseYarnLock = import ./parseYarnLock.nix { inherit lib; }; + fromYAML = import ./fromYAML.nix { inherit lib; }; + + inherit (structUtils) + encodeUri + stringifyIdent + stringifyIdentForNixStore + parseDescriptor + stringifyDescriptor + parseLocator + stringifyLocator + removeBindingFromReference; + nixPlugin = "${defaultPkgs.callPackage ../yarnPlugin.nix {}}/plugin.js"; setupYarnBinScript = '' export YARN_PLUGINS=${nixPlugin} ''; - resolvePkg = pkg: if hasAttr "canonicalPackage" pkg then ( - pkg.canonicalPackage // - (if hasAttr "dependencies" pkg then { inherit (pkg) dependencies; } else {}) // - (if hasAttr "devDependencies" pkg then { inherit (pkg) devDependencies; } else {}) - ) else pkg; - - mkYarnPackagesFromManifest = + mkYarnPackagesFromLockFile = { pkgs ? defaultPkgs, - yarnManifest, + yarnLock, + yarnManifest ? {}, packageOverrides ? {}, }: let - mergedManifest = applyPackageOverrides { inherit yarnManifest; inherit packageOverrides; }; - allPackageData = buildPackageDataFromYarnManifest { inherit pkgs; yarnManifest = mergedManifest; }; - in - mapAttrs (key: value: - mkYarnPackageFromManifest_internal { - package = key; - inherit pkgs; - yarnManifest = mergedManifest; - inherit allPackageData; - } - ) yarnManifest; - - rewritePackageRef = pkg: allPackages: - let - ref = "${pkg.name}@${pkg.reference}"; + yarnLockJSON = (fromYAML.parse (builtins.readFile yarnLock)); + lockFile = parseYarnLock { + inherit yarnLockJSON; + yarnLockPath = yarnLock; + getManifestDataForPackage = locatorString: yarnManifest."${locatorString}" or null; + }; + mergedPackagesByLocator = applyPackageOverrides { packagesByLocator = lockFile.packagesByLocator; inherit yarnManifest; inherit packageOverrides; }; + mergedLockFile = lockFile // { + packagesByLocator = mergedPackagesByLocator; + }; + builtPackages = mapAttrs (key: value: + mkYarnPackageFromLocator_internal { + locatorString = key; + inherit pkgs; + lockFile = mergedLockFile; + inherit builtPackages; + } + ) lockFile.packagesByLocator; in - allPackages.${ref}; + builtPackages; applyPackageOverrides = { + packagesByLocator, yarnManifest, packageOverrides, }: let - merged = mapAttrs (key: packageManifest: + merged = mapAttrs (locatorString: package: let - mergedPackage = if hasAttr key packageOverrides - then recursiveUpdate packageManifest packageOverrides."${key}" - else packageManifest; + mergedPackage = if hasAttr locatorString yarnManifest + then recursiveUpdate package yarnManifest."${locatorString}" + else package; + mergedPackage' = if hasAttr locatorString packageOverrides + then recursiveUpdate mergedPackage packageOverrides."${locatorString}" + else mergedPackage; in - mergedPackage // - (if hasAttr "canonicalPackage" mergedPackage then { canonicalPackage = rewritePackageRef mergedPackage.canonicalPackage merged; } else {}) // - (if hasAttr "dependencies" mergedPackage then { dependencies = mapAttrs (__: pkg: rewritePackageRef pkg merged) mergedPackage.dependencies; } else {}) // - (if hasAttr "devDependencies" mergedPackage then { devDependencies = mapAttrs (__: pkg: rewritePackageRef pkg merged) mergedPackage.devDependencies; } else {}) - ) yarnManifest; + mergedPackage' + ) packagesByLocator; in merged; @@ -88,7 +101,7 @@ let --arg locatorString ${builtins.toJSON locatorString} \ '.[$locatorString].packageLocation = $packageLocation' > $tmpDir/packageRegistryData.json - yarn nix create-lockfile $tmpDir/packageRegistryData.json + node --enable-source-maps ${../internal/dist/index.js} createLockFile $tmpDir/packageRegistryData.json "${locatorString}" '' packageRegistryContext; in createLockFileScript; @@ -96,53 +109,66 @@ let mkYarnPackage_internal = { pkgs, + package, + locatorString, + lockFile, name, - outputName ? name, src ? null, - packageManifest, - allPackageData, + builtPackages, nodejsPackage, build ? "", buildInputs ? [], preInstallScript ? "", postInstallScript ? "", + shouldBeUnplugged ? false, __noChroot ? null, }: let - shouldBeUnplugged = if builtins.hasAttr "shouldBeUnplugged" packageManifest then packageManifest.shouldBeUnplugged else false; - locatorString = "${name}@${reference}"; - reference = packageManifest.reference; - bin = if builtins.hasAttr "bin" packageManifest && packageManifest.bin != null then packageManifest.bin else null; - - _outputHash = if builtins.hasAttr "outputHash" packageManifest && packageManifest.outputHash != null then packageManifest.outputHash else null; - _platformOutputHash = if builtins.hasAttr "outputHashByPlatform" packageManifest && packageManifest.outputHashByPlatform != null then ( - if builtins.hasAttr pkgs.stdenv.system packageManifest.outputHashByPlatform then packageManifest.outputHashByPlatform."${pkgs.stdenv.system}" else "" + locator = package.locator; + identString = stringifyIdent package.locator; + bin = package.bin or null; + + _outputHash = if builtins.hasAttr "outputHash" package && package.outputHash != null then package.outputHash else null; + _platformOutputHash = if builtins.hasAttr "outputHashByPlatform" package && package.outputHashByPlatform != null then ( + if builtins.hasAttr pkgs.stdenv.system package.outputHashByPlatform then package.outputHashByPlatform."${pkgs.stdenv.system}" else "" ) else null; outputHash = if _platformOutputHash != null then _platformOutputHash else _outputHash; isSourceTgz = src != null && (last (splitString "." src)) == "tgz"; - isSourcePatch = src != null && (substring 0 6 reference) == "patch:"; + isSourcePatch = (package.patch or null) != null; - willFetch = if src == null || isSourceTgz || isSourcePatch then true else false; - willBuild = !willFetch; + willFetch = src == null || isSourceTgz; willOutputBeZip = src == null && shouldBeUnplugged == false; locatorJSON = builtins.toJSON (builtins.toJSON { - name = packageManifest.flatName; - scope = packageManifest.scope; - reference = packageManifest.reference; + inherit (locator) name scope reference; }); locatorToFetchJSON = builtins.toJSON (builtins.toJSON { - name = packageManifest.flatName; - scope = packageManifest.scope; - reference = if isSourcePatch then (head (splitString "#" reference)) + "#${src}" else packageManifest.reference; + inherit (locator) name scope; + reference = + if !isSourcePatch then locator.reference + # :# + else ( + let + # use source from previously fetched package rather than fetching again in the patch: package, + # that way we can avoid having a fixed output derivation here (unless this is an unplugged package anyway) + parentPackage = (builtPackages."${package.patch.parentPackage}".unzippedPackage) + "/node_modules/${identString}"; + parentPackageSource = encodeUri "${identString}@file:${parentPackage}::locator=${package.range.source}"; + bindings = if package.range.bindingsRaw != null then "::${package.range.bindingsRaw}" else ""; + in + if package.patch.source == null + then "patch:${parentPackageSource}#${package.range.selector}${bindings}" + else "patch:${parentPackageSource}#${package.patch.source}${bindings}" + ); }); - packageRegistry = buildPackageRegistry { + packageRegistry = buildPackageRegistry_internal { inherit pkgs; - topLevel = packageManifest; - inherit allPackageData; + topLevelPackage = package; + topLevelPackageLocatorString = locatorString; + inherit builtPackages; + inherit lockFile; }; createLockFileScript = mkCreateLockFileScript_internal { @@ -150,10 +176,12 @@ let inherit locatorString; }; - packageRegistryRuntimeOnly = buildPackageRegistry { + packageRegistryRuntimeOnly = buildPackageRegistry_internal { inherit pkgs; - topLevel = packageManifest; - inherit allPackageData; + topLevelPackage = package; + topLevelPackageLocatorString = locatorString; + inherit builtPackages; + inherit lockFile; excludeDevDependencies = true; }; @@ -163,13 +191,13 @@ let }; fetchDerivation = pkgs.stdenv.mkDerivation { - name = outputName + (if willOutputBeZip then ".zip" else ""); + name = name + (if willOutputBeZip then ".zip" else ""); phases = (if willFetch then [ "fetchPhase" ] else [ "buildPhase" "packPhase" ]) ++ - (if shouldBeUnplugged then [ "unplugPhase" ] else [ "movePhase" ]); + (if !willOutputBeZip then [ "unplugPhase" ] else [ "movePhase" ]); inherit __noChroot; - outputHashMode = if __noChroot != true && outputHash != null then (if shouldBeUnplugged then "recursive" else "flat") else null; + outputHashMode = if __noChroot != true && outputHash != null then (if !willOutputBeZip then "recursive" else "flat") else null; outputHashAlgo = if __noChroot != true && outputHash != null then "sha512" else null; outputHash = if __noChroot != true && outputHash != null then outputHash else null; @@ -188,7 +216,7 @@ let tmpDir=$PWD ${setupYarnBinScript} - packageLocation=$out/node_modules/${name} + packageLocation=$out/node_modules/${identString} touch yarn.lock ${if src == null || isSourcePatch then "yarn nix fetch-by-locator ${locatorToFetchJSON} $tmpDir" @@ -201,7 +229,7 @@ let tmpDir=$PWD ${setupYarnBinScript} - packageLocation="$out/node_modules/${name}" + packageLocation="$out/node_modules/${identString}" packageDrvLocation="$out" mkdir -p $packageLocation ${createLockFileScript} @@ -212,7 +240,7 @@ let chmod -R +w $packageLocation mkdir -p $tmpDir/wrappedbins - yarn nix make-path-wrappers $tmpDir/wrappedbins $out $tmpDir/packageRegistryData.json "${locatorString}" + node --enable-source-maps ${../internal/dist/index.js} makePathWrappers $tmpDir/wrappedbins $out cd $packageLocation nodeOptions="--require $out/.pnp.cjs" @@ -240,7 +268,7 @@ let export YARNNIX_PACK_DIRECTORY="${src}" ''} - packageLocation="$out/node_modules/${name}" + packageLocation="$out/node_modules/${identString}" packageDrvLocation="$out" if [ -f "$tmpDir/packageRegistryData.json" ]; then @@ -256,11 +284,11 @@ let # for debugging: # cp ${./pnptemp.cjs} $out/.pnp.cjs # sed -i "s!__PACKAGE_PATH_HERE__!$packageLocation/!" $out/.pnp.cjs - if shouldBeUnplugged then '' + if !willOutputBeZip then '' mkdir -p $out unzip -qq -d $out $tmpDir/output.zip - packageLocation="$out/node_modules/${name}" + packageLocation="$out/node_modules/${identString}" packageDrvLocation="$out" ${if build == "" then createLockFileScript else ""} @@ -271,13 +299,14 @@ let mkdir -p $HOME ${preInstallScript} - yarn nix run-build-scripts ${locatorJSON} $out $packageLocation + yarn nix run-build-scripts "${locatorString}" $out $packageLocation cd $packageLocation ${postInstallScript} # create a .ready file so the output matches what yarn unplugs itself # (useful if we want to be able to generate hash for unplugged output automatically) + chmod +w . touch .ready # if a node_modules folder was created INSIDE an unplugged package, it was probably used for caching @@ -291,12 +320,12 @@ let # set executable bit with chmod for all bin scripts ${concatStringsSep "\n" (mapAttrsToList (binKey: binScript: '' - chmod +x $out/node_modules/${name}/${binScript} + chmod +x $out/node_modules/${identString}/${binScript} '') (if bin != null then bin else {}))} '' else " "; movePhase = - if !shouldBeUnplugged then '' + if willOutputBeZip then '' # won't be unplugged, so move zip file to output mv $tmpDir/output.zip $out '' else " "; @@ -310,7 +339,7 @@ let # https://github.com/NixOS/nix/issues/7148 (maybe) # without this workaround we get error: unexpected end-of-file errors finalDerivation = pkgs.stdenv.mkDerivation { - name = outputName; + name = name; phases = [ "generateRuntimePhase" ] ++ (if bin != null then [ "wrapBinPhase" ] else []); @@ -324,7 +353,7 @@ let tmpDir=$PWD ${setupYarnBinScript} - packageLocation=${fetchDerivation}/node_modules/${name} + packageLocation=${fetchDerivation}/node_modules/${identString} packageDrvLocation=${fetchDerivation} ${createLockFileScriptForRuntime} @@ -345,8 +374,8 @@ let nodeOptions="--require $out/.pnp.cjs" export NODE_OPTIONS="\''$NODE_OPTIONS \''$nodeOptions" - ${if shouldBeUnplugged then ''${fetchDerivation}/node_modules/${name}/${binScript} "\$@"'' - else ''node ${fetchDerivation}/node_modules/${name}/${binScript} "\$@"''} + ${if !willOutputBeZip then ''${fetchDerivation}/node_modules/${identString}/${binScript} "\$@"'' + else ''node ${fetchDerivation}/node_modules/${identString}/${binScript} "\$@"''} EOF chmod +x $out/bin/${binKey} '') bin)} @@ -365,21 +394,20 @@ let export NODE_OPTIONS="$NODE_OPTIONS $nodeOptions" mkdir -p $tmpDir/wrappedbins - yarn nix make-path-wrappers $tmpDir/wrappedbins $tmpDir $tmpDir/packageRegistryData.json "${locatorString}" + node --enable-source-maps ${../internal/dist/index.js} makePathWrappers $tmpDir/wrappedbins $tmpDir export PATH="$PATH:$tmpDir/wrappedbins" ''; }; - dependencyBins = listToAttrs (concatMap (pkg: + dependencyBins = listToAttrs (concatMap (depLocatorString: let - pkgRef = "${pkg.name}@${pkg.reference}"; - packageDrv = allPackageData."${pkgRef}".drv.package; + pkg = lockFile.packagesByLocator."${depLocatorString}"; in - mapAttrsToList (binKey: binScript: { name = binKey; value = { inherit pkg; inherit binScript; }; }) ((resolvePkg pkg).bin or {}) - ) (mapAttrsToList (__: dep: dep) packageManifest.dependencies)); + mapAttrsToList (binKey: binScript: { name = binKey; value = { inherit pkg; inherit binScript; }; }) (pkg.bin or {}) + ) (mapAttrsToList (__: dep: dep) package.dependencies)); shellRuntimeEnvironment = pkgs.stdenv.mkDerivation { - name = outputName + "-shell-environment"; + name = name + "-shell-environment"; phases = [ "generateRuntimePhase" ]; buildInputs = with pkgs; [ @@ -405,7 +433,7 @@ let pnpDir="\$(mktemp -d)" (cd $out && YARN_PLUGINS=${nixPlugin} ${defaultPkgs.yarnBerry}/bin/yarn nix generate-pnp-file \$pnpDir $out/packageRegistryData.json "${locatorString}") - binPackageLocation="\$(${nodejsPackage}/bin/node -r \$pnpDir/.pnp.cjs -e 'console.log(require("pnpapi").getPackageInformation({ name: process.argv[1], reference: process.argv[2] })?.packageLocation)' "${pkg.name}" "${pkg.reference}")" + binPackageLocation="\$(${nodejsPackage}/bin/node -r \$pnpDir/.pnp.cjs -e 'console.log(require("pnpapi").getPackageInformation({ name: process.argv[1], reference: process.argv[2] })?.packageLocation)' "${pkg.identString}" "${pkg.locator.reference}")" export PATH="${nodejsPackage}/bin:\''$PATH" @@ -418,198 +446,163 @@ let '') dependencyBins)} ''; }; + + unzippedDerivation = pkgs.stdenv.mkDerivation { + name = name; + phases = [ "unzipPhase" ]; + + buildInputs = with pkgs; [ + unzip + ]; + + unzipPhase = '' + mkdir -p $out + unzip -qq -d $out ${fetchDerivation} + ''; + }; in finalDerivation // { package = fetchDerivation; - manifest = packageManifest; - transitiveRuntimePackages = filter (pkg: pkg != null) (mapAttrsToList (key: pkg: if pkg != null && !isString pkg.drvPath then pkg.drvPath.binDrvPath else null) packageRegistryRuntimeOnly); + unzippedPackage = if willOutputBeZip then unzippedDerivation else fetchDerivation; + transitiveRuntimePackages = filter (pkg: pkg != null) (mapAttrsToList (pkgLocatorString: pkg: if pkg != null then builtPackages."${pkgLocatorString}" else null) packageRegistryRuntimeOnly); inherit shellRuntimeEnvironment; # for debugging with nix eval inherit packageRegistry; }; - mkYarnPackageFromManifest_internal = + mkYarnPackageFromLocator_internal = { - package, + locatorString, pkgs, - yarnManifest, - allPackageData, + lockFile, + builtPackages, }: let - packageManifest = yarnManifest."${package}"; + package = lockFile.packagesByLocator."${locatorString}"; in - mkYarnPackageFromPackageManifest_internal { - inherit packageManifest; + mkYarnPackageFromPackage_internal { + inherit package; + inherit locatorString; inherit pkgs; - inherit yarnManifest; - inherit allPackageData; + inherit lockFile; + inherit builtPackages; }; - mkYarnPackageFromPackageManifest_internal = + mkYarnPackageFromPackage_internal = { - packageManifest, + package, + locatorString, pkgs, - yarnManifest, - allPackageData, + lockFile, + builtPackages, }: + let + name = "${stringifyIdentForNixStore package.locator}-${package.version}"; + in (makeOverridable mkYarnPackage_internal { inherit pkgs; - nodejsPackage = if hasAttr "nodejsPackage" packageManifest then packageManifest.nodejsPackage else pkgs.nodejs; - inherit (packageManifest) name outputName; - inherit packageManifest; - inherit allPackageData; - src = if hasAttr "src" packageManifest then packageManifest.src else null; - build = if hasAttr "build" packageManifest then packageManifest.build else ""; - buildInputs = if hasAttr "buildInputs" packageManifest then packageManifest.buildInputs else []; - preInstallScript = if hasAttr "preInstallScript" packageManifest then packageManifest.preInstallScript else ""; - postInstallScript = if hasAttr "postInstallScript" packageManifest then packageManifest.postInstallScript else ""; - __noChroot = if hasAttr "__noChroot" packageManifest then packageManifest.__noChroot else null; + nodejsPackage = if hasAttr "nodejsPackage" package then package.nodejsPackage else pkgs.nodejs; + inherit package; + inherit locatorString; + inherit lockFile; + inherit name; + inherit builtPackages; + src = if hasAttr "src" package then package.src else null; + build = if hasAttr "build" package then package.build else ""; + buildInputs = if hasAttr "buildInputs" package then package.buildInputs else []; + preInstallScript = if hasAttr "preInstallScript" package then package.preInstallScript else ""; + postInstallScript = if hasAttr "postInstallScript" package then package.postInstallScript else ""; + shouldBeUnplugged = if hasAttr "shouldBeUnplugged" package then package.shouldBeUnplugged else false; + __noChroot = if hasAttr "__noChroot" package then package.__noChroot else null; }); - buildPackageDataFromYarnManifest = - { - pkgs, - yarnManifest, - }: - let - getPackageDataForPackage = pkg: - let - resolvedPkg = resolvePkg pkg; - in - if hasAttr "installCondition" resolvedPkg && resolvedPkg.installCondition != null && (resolvedPkg.installCondition pkgs.stdenv) == false then null - else - let - drv = mkYarnPackageFromPackageManifest_internal { - inherit pkgs; - inherit yarnManifest; - packageManifest = resolvedPkg; - inherit allPackageData; - }; - drvForVirtual = mkYarnPackageFromPackageManifest_internal { - inherit pkgs; - inherit yarnManifest; - packageManifest = resolvedPkg // { - dependencies = pkg.dependencies or {}; - devDependencies = pkg.devDependencies or {}; - }; - inherit allPackageData; - }; - in - { - inherit pkg; - inherit (pkg) name reference; - canonicalReference = resolvedPkg.reference; - inherit (resolvedPkg) linkType; - filterDependencies = resolvedPkg.filterDependencies or (name: true); - manifest = filterAttrs (key: b: !(builtins.elem key [ - "src" "installCondition" "dependencies" "devDependencies" "filterDependencies" "name" "reference" - ])) resolvedPkg; - inherit drv; - inherit drvForVirtual; - packageDependencies = - (if (hasAttr "dependencies" pkg && pkg.dependencies != null) then mapAttrs (name: depPkg: - [ depPkg.name depPkg.reference ] - ) pkg.dependencies else {}) // - (if (hasAttr "devDependencies" pkg && pkg.devDependencies != null) then mapAttrs (name: depPkg: - [ depPkg.name depPkg.reference ] - ) pkg.devDependencies else {}); - }; - - allPackageData = - mapAttrs (__: pkg: getPackageDataForPackage pkg) yarnManifest; - in - allPackageData; - - buildPackageRegistry = + buildPackageRegistry_internal = { pkgs, - topLevel, - allPackageData, + topLevelPackage, + topLevelPackageLocatorString, + builtPackages, + lockFile, excludeDevDependencies ? false, }: let - topLevelRef = "${topLevel.name}@${topLevel.reference}"; - getPackageDataForPackage = pkgRef: - let - data = allPackageData.${pkgRef}; - filterDependencies = if excludeDevDependencies then data.filterDependencies else (name: true); - in - if data == null then null - else - { - inherit (data) name reference canonicalReference linkType manifest; - drvPath = data.drv.package // { binDrvPath = data.drv; }; - packageDependencies = if !excludeDevDependencies then data.packageDependencies else ( - (if (hasAttr "dependencies" data.pkg && data.pkg.dependencies != null) then mapAttrs (name: depPkg: - [ depPkg.name depPkg.reference ] - ) (filterAttrs (name: v: filterDependencies name) data.pkg.dependencies) else {}) - ); - }; - topLevelPackageData = - if hasAttr "installCondition" topLevel && topLevel.installCondition != null && (topLevel.installCondition pkgs.stdenv) == false then null - else + getDataForPackageRegistry = locatorString: package: let - filterDependencies = if excludeDevDependencies then (topLevel.filterDependencies or (name: true)) else (name: true); + shouldInstall = !(hasAttr "installCondition" package && package.installCondition != null && (package.installCondition pkgs.stdenv) == false); + filterDependencies = if excludeDevDependencies then (package.filterDependencies or (name: true)) else (name: true); + outDrv = builtPackages."${locatorString}"; in - { - inherit (topLevel) name reference linkType; - canonicalReference = topLevel.reference; - manifest = filterAttrs (key: b: !(builtins.elem key [ - "src" "installCondition" "dependencies" "devDependencies" "filterDependencies" - ])) topLevel; - drvPath = "/dev/null"; # if package is toplevel package then the location is determined in the buildPhase as it will be $out + if !shouldInstall then null + else { + packageOut = if locatorString == topLevelPackageLocatorString then "/dev/null" else outDrv.package; packageDependencies = - (if (hasAttr "dependencies" topLevel && topLevel.dependencies != null) then mapAttrs (name: depPkg: - [ depPkg.name depPkg.reference ] - ) (filterAttrs (name: v: filterDependencies name) topLevel.dependencies) else {}) // - (if (!excludeDevDependencies && hasAttr "devDependencies" topLevel && topLevel.devDependencies != null) then mapAttrs (name: depPkg: - [ depPkg.name depPkg.reference ] - ) (filterAttrs (name: v: filterDependencies name) topLevel.devDependencies) else {}); - }; + (if ((package.dependencies or null) != null) then mapAttrs (name: depLocatorString: + depLocatorString + ) (filterAttrs (name: v: filterDependencies name) package.dependencies) else {}) // + (if (!excludeDevDependencies && (package.devDependencies or null) != null) then mapAttrs (name: depLocatorString: + depLocatorString + ) (filterAttrs (name: v: filterDependencies name) package.devDependencies) else {}); + } // filterAttrs (key: b: (builtins.elem key [ + "bin" "languageName" "linkType" "checksum" "identString" "dependenciesMeta" "peerDependencies" "peerDependenciesMeta" + ])) package; + # thanks to https://github.com/NixOS/nix/issues/552#issuecomment-971212372 # for documentation and a good example on how builtins.genericClosure works - allTransitiveDependencies = builtins.genericClosure { - startSet = [ { key = topLevelRef; pkg = topLevel; } ]; - operator = { key, pkg }: + allTransitiveAndRelatedDependencies = builtins.genericClosure { + startSet = [ { key = topLevelPackageLocatorString; package = topLevelPackage; } ]; + operator = { key, package }: let - filterDependencies = if excludeDevDependencies then ((resolvePkg pkg).filterDependencies or (name: true)) else (name: true); + filterDependencies = if excludeDevDependencies then (package.filterDependencies or (name: true)) else (name: true); + relatedPackages = + package.relatedPackages ++ + (if package.patch.parentPackage or null != null then [ package.patch.parentPackage ] else []); in - (if hasAttr "dependencies" pkg && pkg.dependencies != null then ( + (if (package.dependencies or null) != null then ( map (depName: let - dep = pkg.dependencies.${depName}; - depPkgRef = "${dep.name}@${dep.reference}"; + depLocatorString = package.dependencies.${depName}; + depPackage = lockFile.packagesByLocator."${depLocatorString}"; in - { key = depPkgRef; pkg = dep; } + { key = depLocatorString; package = depPackage; } ) - (filter filterDependencies (attrNames pkg.dependencies)) + (filter filterDependencies (attrNames package.dependencies)) ) else []) ++ - (if !excludeDevDependencies && hasAttr "devDependencies" pkg && pkg.devDependencies != null then ( + ( + map + (depLocatorString: + let + depPackage = lockFile.packagesByLocator."${depLocatorString}"; + in + { key = depLocatorString; package = depPackage; } + ) + relatedPackages + ) ++ + (if !excludeDevDependencies && (package.devDependencies or null) != null then ( map (depName: let - dep = pkg.devDependencies.${depName}; - depPkgRef = "${dep.name}@${dep.reference}"; + depLocatorString = package.devDependencies.${depName}; + depPackage = lockFile.packagesByLocator."${depLocatorString}"; in - { key = depPkgRef; pkg = dep; } + { key = depLocatorString; package = depPackage; } ) - (filter filterDependencies (attrNames pkg.devDependencies)) + (filter filterDependencies (attrNames package.devDependencies)) ) else []); }; packageRegistryData = listToAttrs ( - map ({ key, pkg }: + map ({ key, package }: let - package = if key == topLevelRef then topLevelPackageData else getPackageDataForPackage key; + registryData = getDataForPackageRegistry key package; in { name = key; - value = package; - }) allTransitiveDependencies + value = registryData; + }) allTransitiveAndRelatedDependencies ); in packageRegistryData; in { - inherit mkYarnPackagesFromManifest; + inherit mkYarnPackagesFromLockFile; } diff --git a/lib/parseYarnLock.nix b/lib/parseYarnLock.nix new file mode 100644 index 0000000..b9d25c8 --- /dev/null +++ b/lib/parseYarnLock.nix @@ -0,0 +1,209 @@ +{ lib }: + +with lib; + +let + structUtils = import ./structUtils.nix { inherit lib; }; + + inherit (structUtils) + notNull + startsWith + encodeUri + parseQueryString + stringifyIdent + parseDescriptor + stringifyDescriptor + parseLocator + stringifyLocator + parseRange + removeBindingFromRange + removeBindingFromReference + extractPatchSource + isPatchSourceBuiltIn; + + # Yarn has a reduceDependency hook that can replace package descriptors with a new one. + # When this happens, both the original package and the augmented package are stored in the lock file. + # The findRelatedPackages function here is used to find the augmented packages from the original. + # + # In Yarn, the reduceDependency hook is pluggable so it's possible that the implementation here will + # need to differ on a per-project basis (this is the downside of implementing this logic in Nix instead + # of using codegen), but in reality most people will just be using Yarn out of the box which uses + # plugin-compat, so we can hopefully use this naive implementation. + # (e.g https://github.com/yarnpkg/berry/blob/599df9dc2c00fb5c39113b24e99a611d2a532ab4/packages/plugin-compat/sources/index.ts#L34) + findRelatedPackagesDefault = package: allPackages: + pipe (mapAttrsToList (n: v: v) allPackages) [ + (filter (_package: + _package.range.protocol == "patch:" && + _package.range.source == package.locatorString + )) + (map (_package: _package.locatorString)) + ]; + + # transform conditions string into a lambda function that returns whether the package should be installed + # on the given platform + # e.g os=android & cpu=arm + mkInstallCondition = conditions: + let + cond = parseQueryString conditions; + in + if conditions == null then null + else (stdenv: + let + osMatches = + if !(hasAttr "os" cond) then true + else if cond.os == "linux" then stdenv.isLinux + else if cond.os == "darwin" then stdenv.isDarwin + else false; + + cpuMatches = + if !(hasAttr "cpu" cond) then true + else if cond.cpu == "ia32" then stdenv.isi686 + else if cond.cpu == "x64" then stdenv.isx86_64 + else if cond.cpu == "arm" then stdenv.isAarch32 + else if cond.cpu == "arm64" then stdenv.isAarch64 + else false; + + libcMatches = + if !(hasAttr "libc" cond) then true + else if cond.libc == "glibc" then true # only glibc is supported on Nix, other implementations like musl are not supported + else false; + in + osMatches && cpuMatches && libcMatches + ); + + # get relative source from workspace root for given portal spec + mkSourceForLocalPackage = range: + let + path = range.selector; + parentLocator = range.bindings.locator; + parentLocatorPath = (parseRange (parseLocator parentLocator).reference).selector; + in + parentLocatorPath + "/" + path; +in + +{ + yarnLockJSON, + yarnLockPath, + findRelatedPackages ? findRelatedPackagesDefault, + getManifestDataForPackage ? (locatorString: {}), +}: +let + yarnLockRootDirectory = + let + parts = splitString "/" (toString yarnLockPath); + dirParts = sublist 0 ((length parts) - 1) parts; + in + concatStringsSep "/" dirParts; + + byDescriptorList = + mapAttrsToList (descriptorsString: package: + package // { + # yarn.lock file is keyed by package descriptors e.g + # @babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.18.6 + # so we should split them into an array + descriptors = pipe descriptorsString [ + (splitString ", ") + (map parseDescriptor) + (filter notNull) + ]; + } + ) yarnLockJSON; + + byDescriptorAttrs = + pipe byDescriptorList [ + (concatMap (package: + map (descriptor': + let + descriptor = descriptor' // { + range = removeBindingFromRange descriptor'.range; + }; + in + { + name = stringifyDescriptor descriptor; + value = filterAttrs (key: value: key != "descriptors") package; + }) package.descriptors + )) + listToAttrs + ]; + + rewriteDependenciesToResolvedLocators = locatorString: dependencies: + pipe dependencies [ + (mapAttrs (dependencyName: dependencyRangeOrLocatorString: + let + locatorBinding = "::locator=${encodeUri locatorString}"; + descriptorRaw = null; + in + byDescriptorAttrs."${dependencyName}@${dependencyRangeOrLocatorString}".resolution or + byDescriptorAttrs."${dependencyName}@${dependencyRangeOrLocatorString}${locatorBinding}".resolution or + dependencyRangeOrLocatorString + )) + (filterAttrs (key: value: value != null)) + ]; + + packagesByLocatorWithoutRelatedPackages = + mapAttrs' (descriptorString: package: + let + locatorString = package.resolution; + locator = parseLocator locatorString; + range = parseRange locator.reference; + src = + if range.protocol == "workspace:" then /. + (yarnLockRootDirectory + "/" + range.selector) + else if range.protocol == "portal:" || range.protocol == "file:" then /. + (yarnLockRootDirectory + "/" + (mkSourceForLocalPackage range)) + else null; + isSourceArchive = src != null && (last (splitString "." (builtins.toString src))) == "tgz"; + + # read package.json if the package has a local source so we can determine devDependencies + # (this is fine, as remote packages published to NPM have their devDependencies stripped already) + packageJSON = if src != null && !isSourceArchive then builtins.fromJSON (builtins.readFile "${src}/package.json") else null; + + packageInManifest = getManifestDataForPackage locatorString; + + devDependenciesKeys = attrNames (packageJSON.devDependencies or {}); + + _packageDependencies = (package.dependencies or {}) // (packageInManifest.dependencies or {}); + + packageDependencies = filterAttrs (key: __: !(elem key devDependenciesKeys)) _packageDependencies; + packageDevDependencies = filterAttrs (key: __: (elem key devDependenciesKeys)) _packageDependencies; + + packageByLocator = (filterAttrs (key: value: key != "resolution" && key != "checksum" && key != "conditions") package) // { + inherit locator; + inherit locatorString; + outputHash = if range.protocol == "patch:" || range.protocol == "file:" then null else (package.checksum or (if src != null then null else ( + warn "Missing required outputHash for package \"${locatorString}\", add it to your packageOverrides to mkYarnPackagesFromLockFile" "" + ))); + inherit range; + inherit src; + installCondition = mkInstallCondition (package.conditions or null); + identString = stringifyIdent locator; + dependencies = rewriteDependenciesToResolvedLocators locatorString (packageDependencies); + devDependencies = rewriteDependenciesToResolvedLocators locatorString (packageDevDependencies); + # Yarn uses 0.0.0-use.local as a hardcoded version in the lockfile for local dependencies, + # we just replace it with 0.0.0 so it's a bit cleaner in nix store paths + version = if package.version == "0.0.0-use.local" then "0.0.0" else package.version; + } // + (if range.protocol == "patch:" then { + patch = { + parentPackage = range.source; + source = + let + source = extractPatchSource range.selector; + in + if isPatchSourceBuiltIn source then null + else /. + (yarnLockRootDirectory + "/" + source); + }; + } else {}); + in + nameValuePair (locatorString) (packageByLocator) + ) byDescriptorAttrs; + + packagesByLocator = + mapAttrs (descriptorString: package: + let + relatedPackages = findRelatedPackages package packagesByLocatorWithoutRelatedPackages; + in + package // { inherit relatedPackages; } + ) packagesByLocatorWithoutRelatedPackages; +in +{ + inherit packagesByLocator; +} diff --git a/lib/structUtils.nix b/lib/structUtils.nix new file mode 100644 index 0000000..0ffc859 --- /dev/null +++ b/lib/structUtils.nix @@ -0,0 +1,154 @@ +{ lib }: + +with lib; + +rec { + notNull = v: v != null; + + trim = string: pipe string [ + (removePrefix " ") + (removeSuffix " ") + ]; + + startsWith = sub: string: (substring 0 (stringLength sub) string) == sub; + + decodeUri = string: + replaceStrings + [ "%21" "%23" "%24" "%26" "%27" "%28" "%29" "%2A" "%2B" "%2C" "%2F" "%3A" "%3B" "%3D" "%3F" "%40" "%5B" "%5D" "%20" "%25" "%2E" "%3C" "%3E" "%5C" "%5E" "%5F" "%60" "%7B" "%7C" "%7D" "%7E" ] + [ "!" "#" "$" "&" "'" "(" ")" "*" "+" "," "/" ":" ";" "=" "?" "@" "[" "]" " " "%" "." "<" ">" "\\" "^" "_" "`" "{" "|" "}" "~" ] + string; + + encodeUri = string: + replaceStrings + [ "!" "#" "$" "&" "'" "(" ")" "*" "+" "," "/" ":" ";" "=" "?" "@" "[" "]" " " "%" "." "<" ">" "\\" "^" "_" "`" "{" "|" "}" "~" ] + [ "%21" "%23" "%24" "%26" "%27" "%28" "%29" "%2A" "%2B" "%2C" "%2F" "%3A" "%3B" "%3D" "%3F" "%40" "%5B" "%5D" "%20" "%25" "%2E" "%3C" "%3E" "%5C" "%5E" "%5F" "%60" "%7B" "%7C" "%7D" "%7E" ] + string; + + parseQueryString = string: + let + parts = splitString "&" string; + in + pipe parts [ + (map (part: + let + split = splitString "=" part; + name = trim (decodeUri (elemAt split 0)); + value = trim (decodeUri (elemAt split 1)); + in { inherit name; inherit value; } + )) + listToAttrs + ]; + + # https://github.com/yarnpkg/berry/blob/599df9dc2c00fb5c39113b24e99a611d2a532ab4/packages/yarnpkg-core/sources/structUtils.ts#L618 + # stringifyIdent(ident: { scope = string | null; name = string | null; }) -> "@scope/name" | "name" + stringifyIdent = ident: + if ident.scope != null then "@${ident.scope}/${ident.name}" + else "${ident.name}"; + + # adapted for /nix/store + stringifyIdentForNixStore = ident: + let + original = stringifyIdent ident; + in + builtins.replaceStrings [ "@" "/" ] [ "" "-" ] original; + + # https://yarnpkg.com/advanced/lexicon#descriptor + # https://github.com/yarnpkg/berry/blob/599df9dc2c00fb5c39113b24e99a611d2a532ab4/packages/yarnpkg-core/sources/structUtils.ts#L361 + parseDescriptor = string: + let + split = splitString "/" string; + scope = if substring 0 1 (elemAt split 0) == "@" + then substring 1 999 (elemAt split 0) + else null; + split' = if scope != null then (sublist 1 999 split) else split; + matches = builtins.match "^([^@]+)@(.+)$" (concatStringsSep "/" split'); + name = if matches != null then elemAt matches 0 else null; + range = if matches != null then elemAt matches 1 else null; + in + if name == null + then null + else { inherit scope; inherit name; inherit range; }; + + # https://yarnpkg.com/advanced/lexicon#descriptor + # https://github.com/yarnpkg/berry/blob/599df9dc2c00fb5c39113b24e99a611d2a532ab4/packages/yarnpkg-core/sources/structUtils.ts#L629 + stringifyDescriptor = descriptor: + if descriptor.scope != null then "@${descriptor.scope}/${descriptor.name}@${descriptor.range}" + else "${descriptor.name}@${descriptor.range}"; + + # https://yarnpkg.com/advanced/lexicon#locator + # locators are valid descriptors, so just change the name of the attributes + parseLocator = string: + let + dummyDescriptor = parseDescriptor string; + in + if dummyDescriptor == null + then null + else { scope = dummyDescriptor.scope; name = dummyDescriptor.name; reference = dummyDescriptor.range; }; + + # https://yarnpkg.com/advanced/lexicon#locator + # https://github.com/yarnpkg/berry/blob/599df9dc2c00fb5c39113b24e99a611d2a532ab4/packages/yarnpkg-core/sources/structUtils.ts#L640 + stringifyLocator = locator: + if locator.scope != null then "@${locator.scope}/${locator.name}@${locator.reference}" + else "${locator.name}@${locator.reference}"; + + # https://yarnpkg.com/advanced/lexicon#range + # https://github.com/yarnpkg/berry/blob/345b687be77696d696d6e6a4fd4ea7cf718ba31e/packages/yarnpkg-core/sources/structUtils.ts#L472 + # + # ::: + # :#:: + parseRange = string: + let + matchProtocolSourceSelectorBindings = builtins.match "^([^#:]*:)(.+)#(.+)::(.+)$" string; + matchProtocolSelectorBindings = builtins.match "^([^#:]*:)(.+)::(.+)$" string; + matchProtocolSourceSelector = builtins.match "^([^#:]*:)(.+)#(.+)$" string; + matchProtocolSelector = builtins.match "^([^#:]*:)(.+)$" string; + matches = findFirst notNull (builtins.throw "yarnpnp2nix parseRange(): not implemented: ${string}" null) [ + matchProtocolSourceSelectorBindings + matchProtocolSelectorBindings + matchProtocolSourceSelector + matchProtocolSelector + ]; + protocol = (elemAt matches 0); + source = + if length matches == 4 then decodeUri (elemAt matches 1) + else if length matches == 3 && matchProtocolSourceSelector != null then decodeUri (elemAt matches 1) + else null; + selector = + if length matches == 4 then decodeUri (elemAt matches 2) + else if length matches == 3 && matchProtocolSourceSelector != null then decodeUri (elemAt matches 2) + else elemAt matches 1; + bindingsRaw = + if length matches == 4 then elemAt matches 3 + else if length matches == 3 && matchProtocolSelectorBindings != null then elemAt matches 2 + else null; + bindings = if bindingsRaw != null then parseQueryString bindingsRaw else null; + in { inherit protocol; inherit source; inherit selector; inherit bindings; inherit bindingsRaw; }; + + # ranges and references can be "bound" with some internal state. + # we typically don't need or want this state when nixifying the lockfile, so this function discards it + # if it is present. + # see https://github.com/yarnpkg/berry/blob/599df9dc2c00fb5c39113b24e99a611d2a532ab4/packages/yarnpkg-core/sources/structUtils.ts#L252 + # for more info on what binding is + removeBindingFromReference = range: + let + split = splitString "::" range; + in + if length split == 0 then split + else elemAt split 0; + removeBindingFromRange = removeBindingFromReference; + + # e.g optional!./source + # e.g ./source + extractPatchSource = string: + let + matchFlagsSource = builtins.match "^([^!]*)!(.+)$" string; + matchSource = [ null string ]; + matches = findFirst notNull (builtins.throw "yarnpnp2nix extractPatchSource(): not implemented: ${string}" null) [ + matchFlagsSource + matchSource + ]; + in elemAt matches 1; + + isPatchSourceBuiltIn = patchSource: + startsWith "builtin<" patchSource; +} diff --git a/plugin/.yarn/releases/yarn-dev.cjs b/plugin/.yarn/releases/yarn-dev.cjs deleted file mode 100644 index 789e613..0000000 --- a/plugin/.yarn/releases/yarn-dev.cjs +++ /dev/null @@ -1,805 +0,0 @@ -#!/usr/bin/env node -/* eslint-disable */ -//prettier-ignore -(()=>{var Y8e=Object.create;var sT=Object.defineProperty;var W8e=Object.getOwnPropertyDescriptor;var J8e=Object.getOwnPropertyNames;var V8e=Object.getPrototypeOf,z8e=Object.prototype.hasOwnProperty;var Ie=(t=>typeof require!="undefined"?require:typeof Proxy!="undefined"?new Proxy(t,{get:(e,r)=>(typeof require!="undefined"?require:e)[r]}):t)(function(t){if(typeof require!="undefined")return require.apply(this,arguments);throw new Error('Dynamic require of "'+t+'" is not supported')});var Lt=(t,e)=>()=>(t&&(e=t(t=0)),e);var _=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),tr=(t,e)=>{for(var r in e)sT(t,r,{get:e[r],enumerable:!0})},X8e=(t,e,r,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of J8e(e))!z8e.call(t,a)&&a!==r&&sT(t,a,{get:()=>e[a],enumerable:!(o=W8e(e,a))||o.enumerable});return t};var be=(t,e,r)=>(r=t!=null?Y8e(V8e(t)):{},X8e(e||!t||!t.__esModule?sT(r,"default",{value:t,enumerable:!0}):r,t));var Li={};tr(Li,{SAFE_TIME:()=>AY,S_IFDIR:()=>Sv,S_IFLNK:()=>kv,S_IFMT:()=>su,S_IFREG:()=>XI});var su,Sv,XI,kv,AY,lY=Lt(()=>{su=61440,Sv=16384,XI=32768,kv=40960,AY=456789e3});var hr={};tr(hr,{EBADF:()=>Ko,EBUSY:()=>Z8e,EEXIST:()=>iKe,EINVAL:()=>eKe,EISDIR:()=>nKe,ENOENT:()=>tKe,ENOSYS:()=>$8e,ENOTDIR:()=>rKe,ENOTEMPTY:()=>oKe,EOPNOTSUPP:()=>aKe,EROFS:()=>sKe,ERR_DIR_CLOSED:()=>oT});function al(t,e){return Object.assign(new Error(`${t}: ${e}`),{code:t})}function Z8e(t){return al("EBUSY",t)}function $8e(t,e){return al("ENOSYS",`${t}, ${e}`)}function eKe(t){return al("EINVAL",`invalid argument, ${t}`)}function Ko(t){return al("EBADF",`bad file descriptor, ${t}`)}function tKe(t){return al("ENOENT",`no such file or directory, ${t}`)}function rKe(t){return al("ENOTDIR",`not a directory, ${t}`)}function nKe(t){return al("EISDIR",`illegal operation on a directory, ${t}`)}function iKe(t){return al("EEXIST",`file already exists, ${t}`)}function sKe(t){return al("EROFS",`read-only filesystem, ${t}`)}function oKe(t){return al("ENOTEMPTY",`directory not empty, ${t}`)}function aKe(t){return al("EOPNOTSUPP",`operation not supported, ${t}`)}function oT(){return al("ERR_DIR_CLOSED","Directory handle was closed")}var xv=Lt(()=>{});var Al={};tr(Al,{BigIntStatsEntry:()=>ky,DEFAULT_MODE:()=>lT,DirEntry:()=>aT,StatEntry:()=>Sy,areStatsEqual:()=>cT,clearStats:()=>Pv,convertToBigIntStats:()=>lKe,makeDefaultStats:()=>cY,makeEmptyStats:()=>AKe});function cY(){return new Sy}function AKe(){return Pv(cY())}function Pv(t){for(let e in t)if(Object.prototype.hasOwnProperty.call(t,e)){let r=t[e];typeof r=="number"?t[e]=0:typeof r=="bigint"?t[e]=BigInt(0):AT.types.isDate(r)&&(t[e]=new Date(0))}return t}function lKe(t){let e=new ky;for(let r in t)if(Object.prototype.hasOwnProperty.call(t,r)){let o=t[r];typeof o=="number"?e[r]=BigInt(o):AT.types.isDate(o)&&(e[r]=new Date(o))}return e.atimeNs=e.atimeMs*BigInt(1e6),e.mtimeNs=e.mtimeMs*BigInt(1e6),e.ctimeNs=e.ctimeMs*BigInt(1e6),e.birthtimeNs=e.birthtimeMs*BigInt(1e6),e}function cT(t,e){if(t.atimeMs!==e.atimeMs||t.birthtimeMs!==e.birthtimeMs||t.blksize!==e.blksize||t.blocks!==e.blocks||t.ctimeMs!==e.ctimeMs||t.dev!==e.dev||t.gid!==e.gid||t.ino!==e.ino||t.isBlockDevice()!==e.isBlockDevice()||t.isCharacterDevice()!==e.isCharacterDevice()||t.isDirectory()!==e.isDirectory()||t.isFIFO()!==e.isFIFO()||t.isFile()!==e.isFile()||t.isSocket()!==e.isSocket()||t.isSymbolicLink()!==e.isSymbolicLink()||t.mode!==e.mode||t.mtimeMs!==e.mtimeMs||t.nlink!==e.nlink||t.rdev!==e.rdev||t.size!==e.size||t.uid!==e.uid)return!1;let r=t,o=e;return!(r.atimeNs!==o.atimeNs||r.mtimeNs!==o.mtimeNs||r.ctimeNs!==o.ctimeNs||r.birthtimeNs!==o.birthtimeNs)}var AT,lT,aT,Sy,ky,uT=Lt(()=>{AT=be(Ie("util")),lT=33188,aT=class{constructor(){this.name="";this.mode=0}isBlockDevice(){return!1}isCharacterDevice(){return!1}isDirectory(){return(this.mode&61440)===16384}isFIFO(){return!1}isFile(){return(this.mode&61440)===32768}isSocket(){return!1}isSymbolicLink(){return(this.mode&61440)===40960}},Sy=class{constructor(){this.uid=0;this.gid=0;this.size=0;this.blksize=0;this.atimeMs=0;this.mtimeMs=0;this.ctimeMs=0;this.birthtimeMs=0;this.atime=new Date(0);this.mtime=new Date(0);this.ctime=new Date(0);this.birthtime=new Date(0);this.dev=0;this.ino=0;this.mode=lT;this.nlink=1;this.rdev=0;this.blocks=1}isBlockDevice(){return!1}isCharacterDevice(){return!1}isDirectory(){return(this.mode&61440)===16384}isFIFO(){return!1}isFile(){return(this.mode&61440)===32768}isSocket(){return!1}isSymbolicLink(){return(this.mode&61440)===40960}},ky=class{constructor(){this.uid=BigInt(0);this.gid=BigInt(0);this.size=BigInt(0);this.blksize=BigInt(0);this.atimeMs=BigInt(0);this.mtimeMs=BigInt(0);this.ctimeMs=BigInt(0);this.birthtimeMs=BigInt(0);this.atimeNs=BigInt(0);this.mtimeNs=BigInt(0);this.ctimeNs=BigInt(0);this.birthtimeNs=BigInt(0);this.atime=new Date(0);this.mtime=new Date(0);this.ctime=new Date(0);this.birthtime=new Date(0);this.dev=BigInt(0);this.ino=BigInt(0);this.mode=BigInt(lT);this.nlink=BigInt(1);this.rdev=BigInt(0);this.blocks=BigInt(1)}isBlockDevice(){return!1}isCharacterDevice(){return!1}isDirectory(){return(this.mode&BigInt(61440))===BigInt(16384)}isFIFO(){return!1}isFile(){return(this.mode&BigInt(61440))===BigInt(32768)}isSocket(){return!1}isSymbolicLink(){return(this.mode&BigInt(61440))===BigInt(40960)}}});function fY(t){if(process.platform!=="win32")return t;let e,r;if(e=t.match(fKe))t=e[1];else if(r=t.match(gKe))t=`\\\\${r[1]?".\\":""}${r[2]}`;else return t;return t.replace(/\//g,"\\")}function fT(t){if(process.platform!=="win32")return t;t=t.replace(/\\/g,"/");let e,r;return(e=t.match(cKe))?t=`/${e[1]}`:(r=t.match(uKe))&&(t=`/unc/${r[1]?".dot/":""}${r[2]}`),t}function bv(t,e){return t===me?fY(e):fT(e)}function ss(t){if(me.parse(t).dir!==""||ee.parse(t).dir!=="")throw new Error(`Invalid filename: "${t}"`);return t}var ZI,Bt,Xr,me,ee,uY,cKe,uKe,fKe,gKe,Ha=Lt(()=>{ZI=be(Ie("path")),Bt={root:"/",dot:"."},Xr={home:"~",nodeModules:"node_modules",manifest:"package.json",lockfile:"yarn.lock",virtual:"__virtual__",pnpJs:".pnp.js",pnpCjs:".pnp.cjs",pnpData:".pnp.data.json",pnpEsmLoader:".pnp.loader.mjs",rc:".yarnrc.yml"},me=Object.create(ZI.default),ee=Object.create(ZI.default.posix);me.cwd=()=>process.cwd();ee.cwd=()=>fT(process.cwd());ee.resolve=(...t)=>t.length>0&&ee.isAbsolute(t[0])?ZI.default.posix.resolve(...t):ZI.default.posix.resolve(ee.cwd(),...t);uY=function(t,e,r){return e=t.normalize(e),r=t.normalize(r),e===r?".":(e.endsWith(t.sep)||(e=e+t.sep),r.startsWith(e)?r.slice(e.length):null)};me.fromPortablePath=fY;me.toPortablePath=fT;me.contains=(t,e)=>uY(me,t,e);ee.contains=(t,e)=>uY(ee,t,e);cKe=/^([a-zA-Z]:.*)$/,uKe=/^\/\/(\.\/)?(.*)$/,fKe=/^\/([a-zA-Z]:.*)$/,gKe=/^\/unc\/(\.dot\/)?(.*)$/});async function Fv(t,e){let r="0123456789abcdef";await t.mkdirPromise(e.indexPath,{recursive:!0});let o=[];for(let a of r)for(let n of r)o.push(t.mkdirPromise(t.pathUtils.join(e.indexPath,`${a}${n}`),{recursive:!0}));return await Promise.all(o),e.indexPath}async function gY(t,e,r,o,a){let n=t.pathUtils.normalize(e),c=r.pathUtils.normalize(o),f=[],g=[],{atime:p,mtime:E}=a.stableTime?{atime:ad,mtime:ad}:await r.lstatPromise(c);await t.mkdirpPromise(t.pathUtils.dirname(e),{utimes:[p,E]}),await gT(f,g,t,n,r,c,{...a,didParentExist:!0});for(let B of f)await B();await Promise.all(g.map(B=>B()))}async function gT(t,e,r,o,a,n,c){var Q,x,C;let f=c.didParentExist?await pY(r,o):null,g=await a.lstatPromise(n),{atime:p,mtime:E}=c.stableTime?{atime:ad,mtime:ad}:g,B;switch(!0){case g.isDirectory():B=await hKe(t,e,r,o,f,a,n,g,c);break;case g.isFile():B=await yKe(t,e,r,o,f,a,n,g,c);break;case g.isSymbolicLink():B=await CKe(t,e,r,o,f,a,n,g,c);break;default:throw new Error(`Unsupported file type (${g.mode})`)}return(((Q=c.linkStrategy)==null?void 0:Q.type)!=="HardlinkFromIndex"||!g.isFile())&&((B||((x=f==null?void 0:f.mtime)==null?void 0:x.getTime())!==E.getTime()||((C=f==null?void 0:f.atime)==null?void 0:C.getTime())!==p.getTime())&&(e.push(()=>r.lutimesPromise(o,p,E)),B=!0),(f===null||(f.mode&511)!==(g.mode&511))&&(e.push(()=>r.chmodPromise(o,g.mode&511)),B=!0)),B}async function pY(t,e){try{return await t.lstatPromise(e)}catch{return null}}async function hKe(t,e,r,o,a,n,c,f,g){if(a!==null&&!a.isDirectory())if(g.overwrite)t.push(async()=>r.removePromise(o)),a=null;else return!1;let p=!1;a===null&&(t.push(async()=>{try{await r.mkdirPromise(o,{mode:f.mode})}catch(Q){if(Q.code!=="EEXIST")throw Q}}),p=!0);let E=await n.readdirPromise(c),B=g.didParentExist&&!a?{...g,didParentExist:!1}:g;if(g.stableSort)for(let Q of E.sort())await gT(t,e,r,r.pathUtils.join(o,Q),n,n.pathUtils.join(c,Q),B)&&(p=!0);else(await Promise.all(E.map(async x=>{await gT(t,e,r,r.pathUtils.join(o,x),n,n.pathUtils.join(c,x),B)}))).some(x=>x)&&(p=!0);return p}async function dKe(t,e,r,o,a,n,c,f,g,p){let E=await n.checksumFilePromise(c,{algorithm:"sha1"}),B=r.pathUtils.join(p.indexPath,E.slice(0,2),`${E}.dat`),Q;(ie=>(ie[ie.Lock=0]="Lock",ie[ie.Rename=1]="Rename"))(Q||(Q={}));let x=1,C=await pY(r,B);if(a){let H=C&&a.dev===C.dev&&a.ino===C.ino,X=(C==null?void 0:C.mtimeMs)!==pKe;if(H&&X&&p.autoRepair&&(x=0,C=null),!H)if(g.overwrite)t.push(async()=>r.removePromise(o)),a=null;else return!1}let N=!C&&x===1?`${B}.${Math.floor(Math.random()*4294967296).toString(16).padStart(8,"0")}`:null,U=!1;return t.push(async()=>{if(!C&&(x===0&&await r.lockPromise(B,async()=>{let H=await n.readFilePromise(c);await r.writeFilePromise(B,H)}),x===1&&N)){let H=await n.readFilePromise(c);await r.writeFilePromise(N,H);try{await r.linkPromise(N,B)}catch(X){if(X.code==="EEXIST")U=!0,await r.unlinkPromise(N);else throw X}}a||await r.linkPromise(B,o)}),e.push(async()=>{C||await r.lutimesPromise(B,ad,ad),N&&!U&&await r.unlinkPromise(N)}),!1}async function mKe(t,e,r,o,a,n,c,f,g){if(a!==null)if(g.overwrite)t.push(async()=>r.removePromise(o)),a=null;else return!1;return t.push(async()=>{let p=await n.readFilePromise(c);await r.writeFilePromise(o,p)}),!0}async function yKe(t,e,r,o,a,n,c,f,g){var p;return((p=g.linkStrategy)==null?void 0:p.type)==="HardlinkFromIndex"?dKe(t,e,r,o,a,n,c,f,g,g.linkStrategy):mKe(t,e,r,o,a,n,c,f,g)}async function CKe(t,e,r,o,a,n,c,f,g){if(a!==null)if(g.overwrite)t.push(async()=>r.removePromise(o)),a=null;else return!1;return t.push(async()=>{await r.symlinkPromise(bv(r.pathUtils,await n.readlinkPromise(c)),o)}),!0}var ad,pKe,pT=Lt(()=>{Ha();ad=new Date(456789e3*1e3),pKe=ad.getTime()});function Rv(t,e,r,o){let a=()=>{let n=r.shift();return typeof n>"u"?null:Object.assign(t.statSync(t.pathUtils.join(e,n)),{name:n})};return new hT(e,a,o)}var hT,hY=Lt(()=>{xv();hT=class{constructor(e,r,o={}){this.path=e;this.nextDirent=r;this.opts=o;this.closed=!1}throwIfClosed(){if(this.closed)throw oT()}async*[Symbol.asyncIterator](){try{let e;for(;(e=await this.read())!==null;)yield e}finally{await this.close()}}read(e){let r=this.readSync();return typeof e<"u"?e(null,r):Promise.resolve(r)}readSync(){return this.throwIfClosed(),this.nextDirent()}close(e){return this.closeSync(),typeof e<"u"?e(null):Promise.resolve()}closeSync(){var e,r;this.throwIfClosed(),(r=(e=this.opts).onClose)==null||r.call(e),this.closed=!0}}});function dY(t,e){if(t!==e)throw new Error(`Invalid StatWatcher status: expected '${e}', got '${t}'`)}var mY,xy,yY=Lt(()=>{mY=Ie("events");uT();xy=class extends mY.EventEmitter{constructor(r,o,{bigint:a=!1}={}){super();this.status="ready";this.changeListeners=new Map;this.startTimeout=null;this.fakeFs=r,this.path=o,this.bigint=a,this.lastStats=this.stat()}static create(r,o,a){let n=new xy(r,o,a);return n.start(),n}start(){dY(this.status,"ready"),this.status="running",this.startTimeout=setTimeout(()=>{this.startTimeout=null,this.fakeFs.existsSync(this.path)||this.emit("change",this.lastStats,this.lastStats)},3)}stop(){dY(this.status,"running"),this.status="stopped",this.startTimeout!==null&&(clearTimeout(this.startTimeout),this.startTimeout=null),this.emit("stop")}stat(){try{return this.fakeFs.statSync(this.path,{bigint:this.bigint})}catch{let o=this.bigint?new ky:new Sy;return Pv(o)}}makeInterval(r){let o=setInterval(()=>{let a=this.stat(),n=this.lastStats;cT(a,n)||(this.lastStats=a,this.emit("change",a,n))},r.interval);return r.persistent?o:o.unref()}registerChangeListener(r,o){this.addListener("change",r),this.changeListeners.set(r,this.makeInterval(o))}unregisterChangeListener(r){this.removeListener("change",r);let o=this.changeListeners.get(r);typeof o<"u"&&clearInterval(o),this.changeListeners.delete(r)}unregisterAllChangeListeners(){for(let r of this.changeListeners.keys())this.unregisterChangeListener(r)}hasChangeListeners(){return this.changeListeners.size>0}ref(){for(let r of this.changeListeners.values())r.ref();return this}unref(){for(let r of this.changeListeners.values())r.unref();return this}}});function Py(t,e,r,o){let a,n,c,f;switch(typeof r){case"function":a=!1,n=!0,c=5007,f=r;break;default:({bigint:a=!1,persistent:n=!0,interval:c=5007}=r),f=o;break}let g=Tv.get(t);typeof g>"u"&&Tv.set(t,g=new Map);let p=g.get(e);return typeof p>"u"&&(p=xy.create(t,e,{bigint:a}),g.set(e,p)),p.registerChangeListener(f,{persistent:n,interval:c}),p}function Ad(t,e,r){let o=Tv.get(t);if(typeof o>"u")return;let a=o.get(e);typeof a>"u"||(typeof r>"u"?a.unregisterAllChangeListeners():a.unregisterChangeListener(r),a.hasChangeListeners()||(a.stop(),o.delete(e)))}function ld(t){let e=Tv.get(t);if(!(typeof e>"u"))for(let r of e.keys())Ad(t,r)}var Tv,dT=Lt(()=>{yY();Tv=new WeakMap});function EKe(t){let e=t.match(/\r?\n/g);if(e===null)return EY.EOL;let r=e.filter(a=>a===`\r -`).length,o=e.length-r;return r>o?`\r -`:` -`}function cd(t,e){return e.replace(/\r?\n/g,EKe(t))}var CY,EY,Mf,ou,ud=Lt(()=>{CY=Ie("crypto"),EY=Ie("os");pT();Ha();Mf=class{constructor(e){this.pathUtils=e}async*genTraversePromise(e,{stableSort:r=!1}={}){let o=[e];for(;o.length>0;){let a=o.shift();if((await this.lstatPromise(a)).isDirectory()){let c=await this.readdirPromise(a);if(r)for(let f of c.sort())o.push(this.pathUtils.join(a,f));else throw new Error("Not supported")}else yield a}}async checksumFilePromise(e,{algorithm:r="sha512"}={}){let o=await this.openPromise(e,"r");try{let n=Buffer.allocUnsafeSlow(65536),c=(0,CY.createHash)(r),f=0;for(;(f=await this.readPromise(o,n,0,65536))!==0;)c.update(f===65536?n:n.slice(0,f));return c.digest("hex")}finally{await this.closePromise(o)}}async removePromise(e,{recursive:r=!0,maxRetries:o=5}={}){let a;try{a=await this.lstatPromise(e)}catch(n){if(n.code==="ENOENT")return;throw n}if(a.isDirectory()){if(r){let n=await this.readdirPromise(e);await Promise.all(n.map(c=>this.removePromise(this.pathUtils.resolve(e,c))))}for(let n=0;n<=o;n++)try{await this.rmdirPromise(e);break}catch(c){if(c.code!=="EBUSY"&&c.code!=="ENOTEMPTY")throw c;nsetTimeout(f,n*100))}}else await this.unlinkPromise(e)}removeSync(e,{recursive:r=!0}={}){let o;try{o=this.lstatSync(e)}catch(a){if(a.code==="ENOENT")return;throw a}if(o.isDirectory()){if(r)for(let a of this.readdirSync(e))this.removeSync(this.pathUtils.resolve(e,a));this.rmdirSync(e)}else this.unlinkSync(e)}async mkdirpPromise(e,{chmod:r,utimes:o}={}){if(e=this.resolve(e),e===this.pathUtils.dirname(e))return;let a=e.split(this.pathUtils.sep),n;for(let c=2;c<=a.length;++c){let f=a.slice(0,c).join(this.pathUtils.sep);if(!this.existsSync(f)){try{await this.mkdirPromise(f)}catch(g){if(g.code==="EEXIST")continue;throw g}if(n??(n=f),r!=null&&await this.chmodPromise(f,r),o!=null)await this.utimesPromise(f,o[0],o[1]);else{let g=await this.statPromise(this.pathUtils.dirname(f));await this.utimesPromise(f,g.atime,g.mtime)}}}return n}mkdirpSync(e,{chmod:r,utimes:o}={}){if(e=this.resolve(e),e===this.pathUtils.dirname(e))return;let a=e.split(this.pathUtils.sep),n;for(let c=2;c<=a.length;++c){let f=a.slice(0,c).join(this.pathUtils.sep);if(!this.existsSync(f)){try{this.mkdirSync(f)}catch(g){if(g.code==="EEXIST")continue;throw g}if(n??(n=f),r!=null&&this.chmodSync(f,r),o!=null)this.utimesSync(f,o[0],o[1]);else{let g=this.statSync(this.pathUtils.dirname(f));this.utimesSync(f,g.atime,g.mtime)}}}return n}async copyPromise(e,r,{baseFs:o=this,overwrite:a=!0,stableSort:n=!1,stableTime:c=!1,linkStrategy:f=null}={}){return await gY(this,e,o,r,{overwrite:a,stableSort:n,stableTime:c,linkStrategy:f})}copySync(e,r,{baseFs:o=this,overwrite:a=!0}={}){let n=o.lstatSync(r),c=this.existsSync(e);if(n.isDirectory()){this.mkdirpSync(e);let g=o.readdirSync(r);for(let p of g)this.copySync(this.pathUtils.join(e,p),o.pathUtils.join(r,p),{baseFs:o,overwrite:a})}else if(n.isFile()){if(!c||a){c&&this.removeSync(e);let g=o.readFileSync(r);this.writeFileSync(e,g)}}else if(n.isSymbolicLink()){if(!c||a){c&&this.removeSync(e);let g=o.readlinkSync(r);this.symlinkSync(bv(this.pathUtils,g),e)}}else throw new Error(`Unsupported file type (file: ${r}, mode: 0o${n.mode.toString(8).padStart(6,"0")})`);let f=n.mode&511;this.chmodSync(e,f)}async changeFilePromise(e,r,o={}){return Buffer.isBuffer(r)?this.changeFileBufferPromise(e,r,o):this.changeFileTextPromise(e,r,o)}async changeFileBufferPromise(e,r,{mode:o}={}){let a=Buffer.alloc(0);try{a=await this.readFilePromise(e)}catch{}Buffer.compare(a,r)!==0&&await this.writeFilePromise(e,r,{mode:o})}async changeFileTextPromise(e,r,{automaticNewlines:o,mode:a}={}){let n="";try{n=await this.readFilePromise(e,"utf8")}catch{}let c=o?cd(n,r):r;n!==c&&await this.writeFilePromise(e,c,{mode:a})}changeFileSync(e,r,o={}){return Buffer.isBuffer(r)?this.changeFileBufferSync(e,r,o):this.changeFileTextSync(e,r,o)}changeFileBufferSync(e,r,{mode:o}={}){let a=Buffer.alloc(0);try{a=this.readFileSync(e)}catch{}Buffer.compare(a,r)!==0&&this.writeFileSync(e,r,{mode:o})}changeFileTextSync(e,r,{automaticNewlines:o=!1,mode:a}={}){let n="";try{n=this.readFileSync(e,"utf8")}catch{}let c=o?cd(n,r):r;n!==c&&this.writeFileSync(e,c,{mode:a})}async movePromise(e,r){try{await this.renamePromise(e,r)}catch(o){if(o.code==="EXDEV")await this.copyPromise(r,e),await this.removePromise(e);else throw o}}moveSync(e,r){try{this.renameSync(e,r)}catch(o){if(o.code==="EXDEV")this.copySync(r,e),this.removeSync(e);else throw o}}async lockPromise(e,r){let o=`${e}.flock`,a=1e3/60,n=Date.now(),c=null,f=async()=>{let g;try{[g]=await this.readJsonPromise(o)}catch{return Date.now()-n<500}try{return process.kill(g,0),!0}catch{return!1}};for(;c===null;)try{c=await this.openPromise(o,"wx")}catch(g){if(g.code==="EEXIST"){if(!await f())try{await this.unlinkPromise(o);continue}catch{}if(Date.now()-n<60*1e3)await new Promise(p=>setTimeout(p,a));else throw new Error(`Couldn't acquire a lock in a reasonable time (via ${o})`)}else throw g}await this.writePromise(c,JSON.stringify([process.pid]));try{return await r()}finally{try{await this.closePromise(c),await this.unlinkPromise(o)}catch{}}}async readJsonPromise(e){let r=await this.readFilePromise(e,"utf8");try{return JSON.parse(r)}catch(o){throw o.message+=` (in ${e})`,o}}readJsonSync(e){let r=this.readFileSync(e,"utf8");try{return JSON.parse(r)}catch(o){throw o.message+=` (in ${e})`,o}}async writeJsonPromise(e,r){return await this.writeFilePromise(e,`${JSON.stringify(r,null,2)} -`)}writeJsonSync(e,r){return this.writeFileSync(e,`${JSON.stringify(r,null,2)} -`)}async preserveTimePromise(e,r){let o=await this.lstatPromise(e),a=await r();typeof a<"u"&&(e=a),await this.lutimesPromise(e,o.atime,o.mtime)}async preserveTimeSync(e,r){let o=this.lstatSync(e),a=r();typeof a<"u"&&(e=a),this.lutimesSync(e,o.atime,o.mtime)}},ou=class extends Mf{constructor(){super(ee)}}});var Ws,Lf=Lt(()=>{ud();Ws=class extends Mf{getExtractHint(e){return this.baseFs.getExtractHint(e)}resolve(e){return this.mapFromBase(this.baseFs.resolve(this.mapToBase(e)))}getRealPath(){return this.mapFromBase(this.baseFs.getRealPath())}async openPromise(e,r,o){return this.baseFs.openPromise(this.mapToBase(e),r,o)}openSync(e,r,o){return this.baseFs.openSync(this.mapToBase(e),r,o)}async opendirPromise(e,r){return Object.assign(await this.baseFs.opendirPromise(this.mapToBase(e),r),{path:e})}opendirSync(e,r){return Object.assign(this.baseFs.opendirSync(this.mapToBase(e),r),{path:e})}async readPromise(e,r,o,a,n){return await this.baseFs.readPromise(e,r,o,a,n)}readSync(e,r,o,a,n){return this.baseFs.readSync(e,r,o,a,n)}async writePromise(e,r,o,a,n){return typeof r=="string"?await this.baseFs.writePromise(e,r,o):await this.baseFs.writePromise(e,r,o,a,n)}writeSync(e,r,o,a,n){return typeof r=="string"?this.baseFs.writeSync(e,r,o):this.baseFs.writeSync(e,r,o,a,n)}async closePromise(e){return this.baseFs.closePromise(e)}closeSync(e){this.baseFs.closeSync(e)}createReadStream(e,r){return this.baseFs.createReadStream(e!==null?this.mapToBase(e):e,r)}createWriteStream(e,r){return this.baseFs.createWriteStream(e!==null?this.mapToBase(e):e,r)}async realpathPromise(e){return this.mapFromBase(await this.baseFs.realpathPromise(this.mapToBase(e)))}realpathSync(e){return this.mapFromBase(this.baseFs.realpathSync(this.mapToBase(e)))}async existsPromise(e){return this.baseFs.existsPromise(this.mapToBase(e))}existsSync(e){return this.baseFs.existsSync(this.mapToBase(e))}accessSync(e,r){return this.baseFs.accessSync(this.mapToBase(e),r)}async accessPromise(e,r){return this.baseFs.accessPromise(this.mapToBase(e),r)}async statPromise(e,r){return this.baseFs.statPromise(this.mapToBase(e),r)}statSync(e,r){return this.baseFs.statSync(this.mapToBase(e),r)}async fstatPromise(e,r){return this.baseFs.fstatPromise(e,r)}fstatSync(e,r){return this.baseFs.fstatSync(e,r)}lstatPromise(e,r){return this.baseFs.lstatPromise(this.mapToBase(e),r)}lstatSync(e,r){return this.baseFs.lstatSync(this.mapToBase(e),r)}async fchmodPromise(e,r){return this.baseFs.fchmodPromise(e,r)}fchmodSync(e,r){return this.baseFs.fchmodSync(e,r)}async chmodPromise(e,r){return this.baseFs.chmodPromise(this.mapToBase(e),r)}chmodSync(e,r){return this.baseFs.chmodSync(this.mapToBase(e),r)}async fchownPromise(e,r,o){return this.baseFs.fchownPromise(e,r,o)}fchownSync(e,r,o){return this.baseFs.fchownSync(e,r,o)}async chownPromise(e,r,o){return this.baseFs.chownPromise(this.mapToBase(e),r,o)}chownSync(e,r,o){return this.baseFs.chownSync(this.mapToBase(e),r,o)}async renamePromise(e,r){return this.baseFs.renamePromise(this.mapToBase(e),this.mapToBase(r))}renameSync(e,r){return this.baseFs.renameSync(this.mapToBase(e),this.mapToBase(r))}async copyFilePromise(e,r,o=0){return this.baseFs.copyFilePromise(this.mapToBase(e),this.mapToBase(r),o)}copyFileSync(e,r,o=0){return this.baseFs.copyFileSync(this.mapToBase(e),this.mapToBase(r),o)}async appendFilePromise(e,r,o){return this.baseFs.appendFilePromise(this.fsMapToBase(e),r,o)}appendFileSync(e,r,o){return this.baseFs.appendFileSync(this.fsMapToBase(e),r,o)}async writeFilePromise(e,r,o){return this.baseFs.writeFilePromise(this.fsMapToBase(e),r,o)}writeFileSync(e,r,o){return this.baseFs.writeFileSync(this.fsMapToBase(e),r,o)}async unlinkPromise(e){return this.baseFs.unlinkPromise(this.mapToBase(e))}unlinkSync(e){return this.baseFs.unlinkSync(this.mapToBase(e))}async utimesPromise(e,r,o){return this.baseFs.utimesPromise(this.mapToBase(e),r,o)}utimesSync(e,r,o){return this.baseFs.utimesSync(this.mapToBase(e),r,o)}async lutimesPromise(e,r,o){return this.baseFs.lutimesPromise(this.mapToBase(e),r,o)}lutimesSync(e,r,o){return this.baseFs.lutimesSync(this.mapToBase(e),r,o)}async mkdirPromise(e,r){return this.baseFs.mkdirPromise(this.mapToBase(e),r)}mkdirSync(e,r){return this.baseFs.mkdirSync(this.mapToBase(e),r)}async rmdirPromise(e,r){return this.baseFs.rmdirPromise(this.mapToBase(e),r)}rmdirSync(e,r){return this.baseFs.rmdirSync(this.mapToBase(e),r)}async linkPromise(e,r){return this.baseFs.linkPromise(this.mapToBase(e),this.mapToBase(r))}linkSync(e,r){return this.baseFs.linkSync(this.mapToBase(e),this.mapToBase(r))}async symlinkPromise(e,r,o){let a=this.mapToBase(r);if(this.pathUtils.isAbsolute(e))return this.baseFs.symlinkPromise(this.mapToBase(e),a,o);let n=this.mapToBase(this.pathUtils.join(this.pathUtils.dirname(r),e)),c=this.baseFs.pathUtils.relative(this.baseFs.pathUtils.dirname(a),n);return this.baseFs.symlinkPromise(c,a,o)}symlinkSync(e,r,o){let a=this.mapToBase(r);if(this.pathUtils.isAbsolute(e))return this.baseFs.symlinkSync(this.mapToBase(e),a,o);let n=this.mapToBase(this.pathUtils.join(this.pathUtils.dirname(r),e)),c=this.baseFs.pathUtils.relative(this.baseFs.pathUtils.dirname(a),n);return this.baseFs.symlinkSync(c,a,o)}async readFilePromise(e,r){return this.baseFs.readFilePromise(this.fsMapToBase(e),r)}readFileSync(e,r){return this.baseFs.readFileSync(this.fsMapToBase(e),r)}async readdirPromise(e,r){return this.baseFs.readdirPromise(this.mapToBase(e),r)}readdirSync(e,r){return this.baseFs.readdirSync(this.mapToBase(e),r)}async readlinkPromise(e){return this.mapFromBase(await this.baseFs.readlinkPromise(this.mapToBase(e)))}readlinkSync(e){return this.mapFromBase(this.baseFs.readlinkSync(this.mapToBase(e)))}async truncatePromise(e,r){return this.baseFs.truncatePromise(this.mapToBase(e),r)}truncateSync(e,r){return this.baseFs.truncateSync(this.mapToBase(e),r)}async ftruncatePromise(e,r){return this.baseFs.ftruncatePromise(e,r)}ftruncateSync(e,r){return this.baseFs.ftruncateSync(e,r)}watch(e,r,o){return this.baseFs.watch(this.mapToBase(e),r,o)}watchFile(e,r,o){return this.baseFs.watchFile(this.mapToBase(e),r,o)}unwatchFile(e,r){return this.baseFs.unwatchFile(this.mapToBase(e),r)}fsMapToBase(e){return typeof e=="number"?e:this.mapToBase(e)}}});var au,IY=Lt(()=>{Lf();au=class extends Ws{constructor(r,{baseFs:o,pathUtils:a}){super(a);this.target=r,this.baseFs=o}getRealPath(){return this.target}getBaseFs(){return this.baseFs}mapFromBase(r){return r}mapToBase(r){return r}}});var wY,jn,fd=Lt(()=>{wY=be(Ie("fs"));ud();Ha();jn=class extends ou{constructor(r=wY.default){super();this.realFs=r}getExtractHint(){return!1}getRealPath(){return Bt.root}resolve(r){return ee.resolve(r)}async openPromise(r,o,a){return await new Promise((n,c)=>{this.realFs.open(me.fromPortablePath(r),o,a,this.makeCallback(n,c))})}openSync(r,o,a){return this.realFs.openSync(me.fromPortablePath(r),o,a)}async opendirPromise(r,o){return await new Promise((a,n)=>{typeof o<"u"?this.realFs.opendir(me.fromPortablePath(r),o,this.makeCallback(a,n)):this.realFs.opendir(me.fromPortablePath(r),this.makeCallback(a,n))}).then(a=>Object.defineProperty(a,"path",{value:r,configurable:!0,writable:!0}))}opendirSync(r,o){let a=typeof o<"u"?this.realFs.opendirSync(me.fromPortablePath(r),o):this.realFs.opendirSync(me.fromPortablePath(r));return Object.defineProperty(a,"path",{value:r,configurable:!0,writable:!0})}async readPromise(r,o,a=0,n=0,c=-1){return await new Promise((f,g)=>{this.realFs.read(r,o,a,n,c,(p,E)=>{p?g(p):f(E)})})}readSync(r,o,a,n,c){return this.realFs.readSync(r,o,a,n,c)}async writePromise(r,o,a,n,c){return await new Promise((f,g)=>typeof o=="string"?this.realFs.write(r,o,a,this.makeCallback(f,g)):this.realFs.write(r,o,a,n,c,this.makeCallback(f,g)))}writeSync(r,o,a,n,c){return typeof o=="string"?this.realFs.writeSync(r,o,a):this.realFs.writeSync(r,o,a,n,c)}async closePromise(r){await new Promise((o,a)=>{this.realFs.close(r,this.makeCallback(o,a))})}closeSync(r){this.realFs.closeSync(r)}createReadStream(r,o){let a=r!==null?me.fromPortablePath(r):r;return this.realFs.createReadStream(a,o)}createWriteStream(r,o){let a=r!==null?me.fromPortablePath(r):r;return this.realFs.createWriteStream(a,o)}async realpathPromise(r){return await new Promise((o,a)=>{this.realFs.realpath(me.fromPortablePath(r),{},this.makeCallback(o,a))}).then(o=>me.toPortablePath(o))}realpathSync(r){return me.toPortablePath(this.realFs.realpathSync(me.fromPortablePath(r),{}))}async existsPromise(r){return await new Promise(o=>{this.realFs.exists(me.fromPortablePath(r),o)})}accessSync(r,o){return this.realFs.accessSync(me.fromPortablePath(r),o)}async accessPromise(r,o){return await new Promise((a,n)=>{this.realFs.access(me.fromPortablePath(r),o,this.makeCallback(a,n))})}existsSync(r){return this.realFs.existsSync(me.fromPortablePath(r))}async statPromise(r,o){return await new Promise((a,n)=>{o?this.realFs.stat(me.fromPortablePath(r),o,this.makeCallback(a,n)):this.realFs.stat(me.fromPortablePath(r),this.makeCallback(a,n))})}statSync(r,o){return o?this.realFs.statSync(me.fromPortablePath(r),o):this.realFs.statSync(me.fromPortablePath(r))}async fstatPromise(r,o){return await new Promise((a,n)=>{o?this.realFs.fstat(r,o,this.makeCallback(a,n)):this.realFs.fstat(r,this.makeCallback(a,n))})}fstatSync(r,o){return o?this.realFs.fstatSync(r,o):this.realFs.fstatSync(r)}async lstatPromise(r,o){return await new Promise((a,n)=>{o?this.realFs.lstat(me.fromPortablePath(r),o,this.makeCallback(a,n)):this.realFs.lstat(me.fromPortablePath(r),this.makeCallback(a,n))})}lstatSync(r,o){return o?this.realFs.lstatSync(me.fromPortablePath(r),o):this.realFs.lstatSync(me.fromPortablePath(r))}async fchmodPromise(r,o){return await new Promise((a,n)=>{this.realFs.fchmod(r,o,this.makeCallback(a,n))})}fchmodSync(r,o){return this.realFs.fchmodSync(r,o)}async chmodPromise(r,o){return await new Promise((a,n)=>{this.realFs.chmod(me.fromPortablePath(r),o,this.makeCallback(a,n))})}chmodSync(r,o){return this.realFs.chmodSync(me.fromPortablePath(r),o)}async fchownPromise(r,o,a){return await new Promise((n,c)=>{this.realFs.fchown(r,o,a,this.makeCallback(n,c))})}fchownSync(r,o,a){return this.realFs.fchownSync(r,o,a)}async chownPromise(r,o,a){return await new Promise((n,c)=>{this.realFs.chown(me.fromPortablePath(r),o,a,this.makeCallback(n,c))})}chownSync(r,o,a){return this.realFs.chownSync(me.fromPortablePath(r),o,a)}async renamePromise(r,o){return await new Promise((a,n)=>{this.realFs.rename(me.fromPortablePath(r),me.fromPortablePath(o),this.makeCallback(a,n))})}renameSync(r,o){return this.realFs.renameSync(me.fromPortablePath(r),me.fromPortablePath(o))}async copyFilePromise(r,o,a=0){return await new Promise((n,c)=>{this.realFs.copyFile(me.fromPortablePath(r),me.fromPortablePath(o),a,this.makeCallback(n,c))})}copyFileSync(r,o,a=0){return this.realFs.copyFileSync(me.fromPortablePath(r),me.fromPortablePath(o),a)}async appendFilePromise(r,o,a){return await new Promise((n,c)=>{let f=typeof r=="string"?me.fromPortablePath(r):r;a?this.realFs.appendFile(f,o,a,this.makeCallback(n,c)):this.realFs.appendFile(f,o,this.makeCallback(n,c))})}appendFileSync(r,o,a){let n=typeof r=="string"?me.fromPortablePath(r):r;a?this.realFs.appendFileSync(n,o,a):this.realFs.appendFileSync(n,o)}async writeFilePromise(r,o,a){return await new Promise((n,c)=>{let f=typeof r=="string"?me.fromPortablePath(r):r;a?this.realFs.writeFile(f,o,a,this.makeCallback(n,c)):this.realFs.writeFile(f,o,this.makeCallback(n,c))})}writeFileSync(r,o,a){let n=typeof r=="string"?me.fromPortablePath(r):r;a?this.realFs.writeFileSync(n,o,a):this.realFs.writeFileSync(n,o)}async unlinkPromise(r){return await new Promise((o,a)=>{this.realFs.unlink(me.fromPortablePath(r),this.makeCallback(o,a))})}unlinkSync(r){return this.realFs.unlinkSync(me.fromPortablePath(r))}async utimesPromise(r,o,a){return await new Promise((n,c)=>{this.realFs.utimes(me.fromPortablePath(r),o,a,this.makeCallback(n,c))})}utimesSync(r,o,a){this.realFs.utimesSync(me.fromPortablePath(r),o,a)}async lutimesPromise(r,o,a){return await new Promise((n,c)=>{this.realFs.lutimes(me.fromPortablePath(r),o,a,this.makeCallback(n,c))})}lutimesSync(r,o,a){this.realFs.lutimesSync(me.fromPortablePath(r),o,a)}async mkdirPromise(r,o){return await new Promise((a,n)=>{this.realFs.mkdir(me.fromPortablePath(r),o,this.makeCallback(a,n))})}mkdirSync(r,o){return this.realFs.mkdirSync(me.fromPortablePath(r),o)}async rmdirPromise(r,o){return await new Promise((a,n)=>{o?this.realFs.rmdir(me.fromPortablePath(r),o,this.makeCallback(a,n)):this.realFs.rmdir(me.fromPortablePath(r),this.makeCallback(a,n))})}rmdirSync(r,o){return this.realFs.rmdirSync(me.fromPortablePath(r),o)}async linkPromise(r,o){return await new Promise((a,n)=>{this.realFs.link(me.fromPortablePath(r),me.fromPortablePath(o),this.makeCallback(a,n))})}linkSync(r,o){return this.realFs.linkSync(me.fromPortablePath(r),me.fromPortablePath(o))}async symlinkPromise(r,o,a){return await new Promise((n,c)=>{this.realFs.symlink(me.fromPortablePath(r.replace(/\/+$/,"")),me.fromPortablePath(o),a,this.makeCallback(n,c))})}symlinkSync(r,o,a){return this.realFs.symlinkSync(me.fromPortablePath(r.replace(/\/+$/,"")),me.fromPortablePath(o),a)}async readFilePromise(r,o){return await new Promise((a,n)=>{let c=typeof r=="string"?me.fromPortablePath(r):r;this.realFs.readFile(c,o,this.makeCallback(a,n))})}readFileSync(r,o){let a=typeof r=="string"?me.fromPortablePath(r):r;return this.realFs.readFileSync(a,o)}async readdirPromise(r,o){return await new Promise((a,n)=>{o!=null&&o.withFileTypes?this.realFs.readdir(me.fromPortablePath(r),{withFileTypes:!0},this.makeCallback(a,n)):this.realFs.readdir(me.fromPortablePath(r),this.makeCallback(c=>a(c),n))})}readdirSync(r,o){return o!=null&&o.withFileTypes?this.realFs.readdirSync(me.fromPortablePath(r),{withFileTypes:!0}):this.realFs.readdirSync(me.fromPortablePath(r))}async readlinkPromise(r){return await new Promise((o,a)=>{this.realFs.readlink(me.fromPortablePath(r),this.makeCallback(o,a))}).then(o=>me.toPortablePath(o))}readlinkSync(r){return me.toPortablePath(this.realFs.readlinkSync(me.fromPortablePath(r)))}async truncatePromise(r,o){return await new Promise((a,n)=>{this.realFs.truncate(me.fromPortablePath(r),o,this.makeCallback(a,n))})}truncateSync(r,o){return this.realFs.truncateSync(me.fromPortablePath(r),o)}async ftruncatePromise(r,o){return await new Promise((a,n)=>{this.realFs.ftruncate(r,o,this.makeCallback(a,n))})}ftruncateSync(r,o){return this.realFs.ftruncateSync(r,o)}watch(r,o,a){return this.realFs.watch(me.fromPortablePath(r),o,a)}watchFile(r,o,a){return this.realFs.watchFile(me.fromPortablePath(r),o,a)}unwatchFile(r,o){return this.realFs.unwatchFile(me.fromPortablePath(r),o)}makeCallback(r,o){return(a,n)=>{a?o(a):r(n)}}}});var Qn,BY=Lt(()=>{fd();Lf();Ha();Qn=class extends Ws{constructor(r,{baseFs:o=new jn}={}){super(ee);this.target=this.pathUtils.normalize(r),this.baseFs=o}getRealPath(){return this.pathUtils.resolve(this.baseFs.getRealPath(),this.target)}resolve(r){return this.pathUtils.isAbsolute(r)?ee.normalize(r):this.baseFs.resolve(ee.join(this.target,r))}mapFromBase(r){return r}mapToBase(r){return this.pathUtils.isAbsolute(r)?r:this.pathUtils.join(this.target,r)}}});var QY,Au,vY=Lt(()=>{fd();Lf();Ha();QY=Bt.root,Au=class extends Ws{constructor(r,{baseFs:o=new jn}={}){super(ee);this.target=this.pathUtils.resolve(Bt.root,r),this.baseFs=o}getRealPath(){return this.pathUtils.resolve(this.baseFs.getRealPath(),this.pathUtils.relative(Bt.root,this.target))}getTarget(){return this.target}getBaseFs(){return this.baseFs}mapToBase(r){let o=this.pathUtils.normalize(r);if(this.pathUtils.isAbsolute(r))return this.pathUtils.resolve(this.target,this.pathUtils.relative(QY,r));if(o.match(/^\.\.\/?/))throw new Error(`Resolving this path (${r}) would escape the jail`);return this.pathUtils.resolve(this.target,r)}mapFromBase(r){return this.pathUtils.resolve(QY,this.pathUtils.relative(this.target,r))}}});var by,DY=Lt(()=>{Lf();by=class extends Ws{constructor(r,o){super(o);this.instance=null;this.factory=r}get baseFs(){return this.instance||(this.instance=this.factory()),this.instance}set baseFs(r){this.instance=r}mapFromBase(r){return r}mapToBase(r){return r}}});var $I,qa,up,SY=Lt(()=>{$I=Ie("fs");ud();fd();dT();xv();Ha();qa=4278190080,up=class extends ou{constructor({baseFs:r=new jn,filter:o=null,magicByte:a=42,maxOpenFiles:n=1/0,useCache:c=!0,maxAge:f=5e3,getMountPoint:g,factoryPromise:p,factorySync:E}){if(Math.floor(a)!==a||!(a>1&&a<=127))throw new Error("The magic byte must be set to a round value between 1 and 127 included");super();this.fdMap=new Map;this.nextFd=3;this.isMount=new Set;this.notMount=new Set;this.realPaths=new Map;this.limitOpenFilesTimeout=null;this.baseFs=r,this.mountInstances=c?new Map:null,this.factoryPromise=p,this.factorySync=E,this.filter=o,this.getMountPoint=g,this.magic=a<<24,this.maxAge=f,this.maxOpenFiles=n}getExtractHint(r){return this.baseFs.getExtractHint(r)}getRealPath(){return this.baseFs.getRealPath()}saveAndClose(){var r;if(ld(this),this.mountInstances)for(let[o,{childFs:a}]of this.mountInstances.entries())(r=a.saveAndClose)==null||r.call(a),this.mountInstances.delete(o)}discardAndClose(){var r;if(ld(this),this.mountInstances)for(let[o,{childFs:a}]of this.mountInstances.entries())(r=a.discardAndClose)==null||r.call(a),this.mountInstances.delete(o)}resolve(r){return this.baseFs.resolve(r)}remapFd(r,o){let a=this.nextFd++|this.magic;return this.fdMap.set(a,[r,o]),a}async openPromise(r,o,a){return await this.makeCallPromise(r,async()=>await this.baseFs.openPromise(r,o,a),async(n,{subPath:c})=>this.remapFd(n,await n.openPromise(c,o,a)))}openSync(r,o,a){return this.makeCallSync(r,()=>this.baseFs.openSync(r,o,a),(n,{subPath:c})=>this.remapFd(n,n.openSync(c,o,a)))}async opendirPromise(r,o){return await this.makeCallPromise(r,async()=>await this.baseFs.opendirPromise(r,o),async(a,{subPath:n})=>await a.opendirPromise(n,o),{requireSubpath:!1})}opendirSync(r,o){return this.makeCallSync(r,()=>this.baseFs.opendirSync(r,o),(a,{subPath:n})=>a.opendirSync(n,o),{requireSubpath:!1})}async readPromise(r,o,a,n,c){if((r&qa)!==this.magic)return await this.baseFs.readPromise(r,o,a,n,c);let f=this.fdMap.get(r);if(typeof f>"u")throw Ko("read");let[g,p]=f;return await g.readPromise(p,o,a,n,c)}readSync(r,o,a,n,c){if((r&qa)!==this.magic)return this.baseFs.readSync(r,o,a,n,c);let f=this.fdMap.get(r);if(typeof f>"u")throw Ko("readSync");let[g,p]=f;return g.readSync(p,o,a,n,c)}async writePromise(r,o,a,n,c){if((r&qa)!==this.magic)return typeof o=="string"?await this.baseFs.writePromise(r,o,a):await this.baseFs.writePromise(r,o,a,n,c);let f=this.fdMap.get(r);if(typeof f>"u")throw Ko("write");let[g,p]=f;return typeof o=="string"?await g.writePromise(p,o,a):await g.writePromise(p,o,a,n,c)}writeSync(r,o,a,n,c){if((r&qa)!==this.magic)return typeof o=="string"?this.baseFs.writeSync(r,o,a):this.baseFs.writeSync(r,o,a,n,c);let f=this.fdMap.get(r);if(typeof f>"u")throw Ko("writeSync");let[g,p]=f;return typeof o=="string"?g.writeSync(p,o,a):g.writeSync(p,o,a,n,c)}async closePromise(r){if((r&qa)!==this.magic)return await this.baseFs.closePromise(r);let o=this.fdMap.get(r);if(typeof o>"u")throw Ko("close");this.fdMap.delete(r);let[a,n]=o;return await a.closePromise(n)}closeSync(r){if((r&qa)!==this.magic)return this.baseFs.closeSync(r);let o=this.fdMap.get(r);if(typeof o>"u")throw Ko("closeSync");this.fdMap.delete(r);let[a,n]=o;return a.closeSync(n)}createReadStream(r,o){return r===null?this.baseFs.createReadStream(r,o):this.makeCallSync(r,()=>this.baseFs.createReadStream(r,o),(a,{archivePath:n,subPath:c})=>{let f=a.createReadStream(c,o);return f.path=me.fromPortablePath(this.pathUtils.join(n,c)),f})}createWriteStream(r,o){return r===null?this.baseFs.createWriteStream(r,o):this.makeCallSync(r,()=>this.baseFs.createWriteStream(r,o),(a,{subPath:n})=>a.createWriteStream(n,o))}async realpathPromise(r){return await this.makeCallPromise(r,async()=>await this.baseFs.realpathPromise(r),async(o,{archivePath:a,subPath:n})=>{let c=this.realPaths.get(a);return typeof c>"u"&&(c=await this.baseFs.realpathPromise(a),this.realPaths.set(a,c)),this.pathUtils.join(c,this.pathUtils.relative(Bt.root,await o.realpathPromise(n)))})}realpathSync(r){return this.makeCallSync(r,()=>this.baseFs.realpathSync(r),(o,{archivePath:a,subPath:n})=>{let c=this.realPaths.get(a);return typeof c>"u"&&(c=this.baseFs.realpathSync(a),this.realPaths.set(a,c)),this.pathUtils.join(c,this.pathUtils.relative(Bt.root,o.realpathSync(n)))})}async existsPromise(r){return await this.makeCallPromise(r,async()=>await this.baseFs.existsPromise(r),async(o,{subPath:a})=>await o.existsPromise(a))}existsSync(r){return this.makeCallSync(r,()=>this.baseFs.existsSync(r),(o,{subPath:a})=>o.existsSync(a))}async accessPromise(r,o){return await this.makeCallPromise(r,async()=>await this.baseFs.accessPromise(r,o),async(a,{subPath:n})=>await a.accessPromise(n,o))}accessSync(r,o){return this.makeCallSync(r,()=>this.baseFs.accessSync(r,o),(a,{subPath:n})=>a.accessSync(n,o))}async statPromise(r,o){return await this.makeCallPromise(r,async()=>await this.baseFs.statPromise(r,o),async(a,{subPath:n})=>await a.statPromise(n,o))}statSync(r,o){return this.makeCallSync(r,()=>this.baseFs.statSync(r,o),(a,{subPath:n})=>a.statSync(n,o))}async fstatPromise(r,o){if((r&qa)!==this.magic)return this.baseFs.fstatPromise(r,o);let a=this.fdMap.get(r);if(typeof a>"u")throw Ko("fstat");let[n,c]=a;return n.fstatPromise(c,o)}fstatSync(r,o){if((r&qa)!==this.magic)return this.baseFs.fstatSync(r,o);let a=this.fdMap.get(r);if(typeof a>"u")throw Ko("fstatSync");let[n,c]=a;return n.fstatSync(c,o)}async lstatPromise(r,o){return await this.makeCallPromise(r,async()=>await this.baseFs.lstatPromise(r,o),async(a,{subPath:n})=>await a.lstatPromise(n,o))}lstatSync(r,o){return this.makeCallSync(r,()=>this.baseFs.lstatSync(r,o),(a,{subPath:n})=>a.lstatSync(n,o))}async fchmodPromise(r,o){if((r&qa)!==this.magic)return this.baseFs.fchmodPromise(r,o);let a=this.fdMap.get(r);if(typeof a>"u")throw Ko("fchmod");let[n,c]=a;return n.fchmodPromise(c,o)}fchmodSync(r,o){if((r&qa)!==this.magic)return this.baseFs.fchmodSync(r,o);let a=this.fdMap.get(r);if(typeof a>"u")throw Ko("fchmodSync");let[n,c]=a;return n.fchmodSync(c,o)}async chmodPromise(r,o){return await this.makeCallPromise(r,async()=>await this.baseFs.chmodPromise(r,o),async(a,{subPath:n})=>await a.chmodPromise(n,o))}chmodSync(r,o){return this.makeCallSync(r,()=>this.baseFs.chmodSync(r,o),(a,{subPath:n})=>a.chmodSync(n,o))}async fchownPromise(r,o,a){if((r&qa)!==this.magic)return this.baseFs.fchownPromise(r,o,a);let n=this.fdMap.get(r);if(typeof n>"u")throw Ko("fchown");let[c,f]=n;return c.fchownPromise(f,o,a)}fchownSync(r,o,a){if((r&qa)!==this.magic)return this.baseFs.fchownSync(r,o,a);let n=this.fdMap.get(r);if(typeof n>"u")throw Ko("fchownSync");let[c,f]=n;return c.fchownSync(f,o,a)}async chownPromise(r,o,a){return await this.makeCallPromise(r,async()=>await this.baseFs.chownPromise(r,o,a),async(n,{subPath:c})=>await n.chownPromise(c,o,a))}chownSync(r,o,a){return this.makeCallSync(r,()=>this.baseFs.chownSync(r,o,a),(n,{subPath:c})=>n.chownSync(c,o,a))}async renamePromise(r,o){return await this.makeCallPromise(r,async()=>await this.makeCallPromise(o,async()=>await this.baseFs.renamePromise(r,o),async()=>{throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"})}),async(a,{subPath:n})=>await this.makeCallPromise(o,async()=>{throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"})},async(c,{subPath:f})=>{if(a!==c)throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"});return await a.renamePromise(n,f)}))}renameSync(r,o){return this.makeCallSync(r,()=>this.makeCallSync(o,()=>this.baseFs.renameSync(r,o),()=>{throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"})}),(a,{subPath:n})=>this.makeCallSync(o,()=>{throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"})},(c,{subPath:f})=>{if(a!==c)throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"});return a.renameSync(n,f)}))}async copyFilePromise(r,o,a=0){let n=async(c,f,g,p)=>{if((a&$I.constants.COPYFILE_FICLONE_FORCE)!==0)throw Object.assign(new Error(`EXDEV: cross-device clone not permitted, copyfile '${f}' -> ${p}'`),{code:"EXDEV"});if(a&$I.constants.COPYFILE_EXCL&&await this.existsPromise(f))throw Object.assign(new Error(`EEXIST: file already exists, copyfile '${f}' -> '${p}'`),{code:"EEXIST"});let E;try{E=await c.readFilePromise(f)}catch{throw Object.assign(new Error(`EINVAL: invalid argument, copyfile '${f}' -> '${p}'`),{code:"EINVAL"})}await g.writeFilePromise(p,E)};return await this.makeCallPromise(r,async()=>await this.makeCallPromise(o,async()=>await this.baseFs.copyFilePromise(r,o,a),async(c,{subPath:f})=>await n(this.baseFs,r,c,f)),async(c,{subPath:f})=>await this.makeCallPromise(o,async()=>await n(c,f,this.baseFs,o),async(g,{subPath:p})=>c!==g?await n(c,f,g,p):await c.copyFilePromise(f,p,a)))}copyFileSync(r,o,a=0){let n=(c,f,g,p)=>{if((a&$I.constants.COPYFILE_FICLONE_FORCE)!==0)throw Object.assign(new Error(`EXDEV: cross-device clone not permitted, copyfile '${f}' -> ${p}'`),{code:"EXDEV"});if(a&$I.constants.COPYFILE_EXCL&&this.existsSync(f))throw Object.assign(new Error(`EEXIST: file already exists, copyfile '${f}' -> '${p}'`),{code:"EEXIST"});let E;try{E=c.readFileSync(f)}catch{throw Object.assign(new Error(`EINVAL: invalid argument, copyfile '${f}' -> '${p}'`),{code:"EINVAL"})}g.writeFileSync(p,E)};return this.makeCallSync(r,()=>this.makeCallSync(o,()=>this.baseFs.copyFileSync(r,o,a),(c,{subPath:f})=>n(this.baseFs,r,c,f)),(c,{subPath:f})=>this.makeCallSync(o,()=>n(c,f,this.baseFs,o),(g,{subPath:p})=>c!==g?n(c,f,g,p):c.copyFileSync(f,p,a)))}async appendFilePromise(r,o,a){return await this.makeCallPromise(r,async()=>await this.baseFs.appendFilePromise(r,o,a),async(n,{subPath:c})=>await n.appendFilePromise(c,o,a))}appendFileSync(r,o,a){return this.makeCallSync(r,()=>this.baseFs.appendFileSync(r,o,a),(n,{subPath:c})=>n.appendFileSync(c,o,a))}async writeFilePromise(r,o,a){return await this.makeCallPromise(r,async()=>await this.baseFs.writeFilePromise(r,o,a),async(n,{subPath:c})=>await n.writeFilePromise(c,o,a))}writeFileSync(r,o,a){return this.makeCallSync(r,()=>this.baseFs.writeFileSync(r,o,a),(n,{subPath:c})=>n.writeFileSync(c,o,a))}async unlinkPromise(r){return await this.makeCallPromise(r,async()=>await this.baseFs.unlinkPromise(r),async(o,{subPath:a})=>await o.unlinkPromise(a))}unlinkSync(r){return this.makeCallSync(r,()=>this.baseFs.unlinkSync(r),(o,{subPath:a})=>o.unlinkSync(a))}async utimesPromise(r,o,a){return await this.makeCallPromise(r,async()=>await this.baseFs.utimesPromise(r,o,a),async(n,{subPath:c})=>await n.utimesPromise(c,o,a))}utimesSync(r,o,a){return this.makeCallSync(r,()=>this.baseFs.utimesSync(r,o,a),(n,{subPath:c})=>n.utimesSync(c,o,a))}async lutimesPromise(r,o,a){return await this.makeCallPromise(r,async()=>await this.baseFs.lutimesPromise(r,o,a),async(n,{subPath:c})=>await n.lutimesPromise(c,o,a))}lutimesSync(r,o,a){return this.makeCallSync(r,()=>this.baseFs.lutimesSync(r,o,a),(n,{subPath:c})=>n.lutimesSync(c,o,a))}async mkdirPromise(r,o){return await this.makeCallPromise(r,async()=>await this.baseFs.mkdirPromise(r,o),async(a,{subPath:n})=>await a.mkdirPromise(n,o))}mkdirSync(r,o){return this.makeCallSync(r,()=>this.baseFs.mkdirSync(r,o),(a,{subPath:n})=>a.mkdirSync(n,o))}async rmdirPromise(r,o){return await this.makeCallPromise(r,async()=>await this.baseFs.rmdirPromise(r,o),async(a,{subPath:n})=>await a.rmdirPromise(n,o))}rmdirSync(r,o){return this.makeCallSync(r,()=>this.baseFs.rmdirSync(r,o),(a,{subPath:n})=>a.rmdirSync(n,o))}async linkPromise(r,o){return await this.makeCallPromise(o,async()=>await this.baseFs.linkPromise(r,o),async(a,{subPath:n})=>await a.linkPromise(r,n))}linkSync(r,o){return this.makeCallSync(o,()=>this.baseFs.linkSync(r,o),(a,{subPath:n})=>a.linkSync(r,n))}async symlinkPromise(r,o,a){return await this.makeCallPromise(o,async()=>await this.baseFs.symlinkPromise(r,o,a),async(n,{subPath:c})=>await n.symlinkPromise(r,c))}symlinkSync(r,o,a){return this.makeCallSync(o,()=>this.baseFs.symlinkSync(r,o,a),(n,{subPath:c})=>n.symlinkSync(r,c))}async readFilePromise(r,o){return this.makeCallPromise(r,async()=>await this.baseFs.readFilePromise(r,o),async(a,{subPath:n})=>await a.readFilePromise(n,o))}readFileSync(r,o){return this.makeCallSync(r,()=>this.baseFs.readFileSync(r,o),(a,{subPath:n})=>a.readFileSync(n,o))}async readdirPromise(r,o){return await this.makeCallPromise(r,async()=>await this.baseFs.readdirPromise(r,o),async(a,{subPath:n})=>await a.readdirPromise(n,o),{requireSubpath:!1})}readdirSync(r,o){return this.makeCallSync(r,()=>this.baseFs.readdirSync(r,o),(a,{subPath:n})=>a.readdirSync(n,o),{requireSubpath:!1})}async readlinkPromise(r){return await this.makeCallPromise(r,async()=>await this.baseFs.readlinkPromise(r),async(o,{subPath:a})=>await o.readlinkPromise(a))}readlinkSync(r){return this.makeCallSync(r,()=>this.baseFs.readlinkSync(r),(o,{subPath:a})=>o.readlinkSync(a))}async truncatePromise(r,o){return await this.makeCallPromise(r,async()=>await this.baseFs.truncatePromise(r,o),async(a,{subPath:n})=>await a.truncatePromise(n,o))}truncateSync(r,o){return this.makeCallSync(r,()=>this.baseFs.truncateSync(r,o),(a,{subPath:n})=>a.truncateSync(n,o))}async ftruncatePromise(r,o){if((r&qa)!==this.magic)return this.baseFs.ftruncatePromise(r,o);let a=this.fdMap.get(r);if(typeof a>"u")throw Ko("ftruncate");let[n,c]=a;return n.ftruncatePromise(c,o)}ftruncateSync(r,o){if((r&qa)!==this.magic)return this.baseFs.ftruncateSync(r,o);let a=this.fdMap.get(r);if(typeof a>"u")throw Ko("ftruncateSync");let[n,c]=a;return n.ftruncateSync(c,o)}watch(r,o,a){return this.makeCallSync(r,()=>this.baseFs.watch(r,o,a),(n,{subPath:c})=>n.watch(c,o,a))}watchFile(r,o,a){return this.makeCallSync(r,()=>this.baseFs.watchFile(r,o,a),()=>Py(this,r,o,a))}unwatchFile(r,o){return this.makeCallSync(r,()=>this.baseFs.unwatchFile(r,o),()=>Ad(this,r,o))}async makeCallPromise(r,o,a,{requireSubpath:n=!0}={}){if(typeof r!="string")return await o();let c=this.resolve(r),f=this.findMount(c);return f?n&&f.subPath==="/"?await o():await this.getMountPromise(f.archivePath,async g=>await a(g,f)):await o()}makeCallSync(r,o,a,{requireSubpath:n=!0}={}){if(typeof r!="string")return o();let c=this.resolve(r),f=this.findMount(c);return!f||n&&f.subPath==="/"?o():this.getMountSync(f.archivePath,g=>a(g,f))}findMount(r){if(this.filter&&!this.filter.test(r))return null;let o="";for(;;){let a=r.substring(o.length),n=this.getMountPoint(a,o);if(!n)return null;if(o=this.pathUtils.join(o,n),!this.isMount.has(o)){if(this.notMount.has(o))continue;try{if(!this.baseFs.lstatSync(o).isFile()){this.notMount.add(o);continue}}catch{return null}this.isMount.add(o)}return{archivePath:o,subPath:this.pathUtils.join(Bt.root,r.substring(o.length))}}}limitOpenFiles(r){var c,f,g;if(this.mountInstances===null)return;let o=Date.now(),a=o+this.maxAge,n=r===null?0:this.mountInstances.size-r;for(let[p,{childFs:E,expiresAt:B,refCount:Q}]of this.mountInstances.entries())if(!(Q!==0||((c=E.hasOpenFileHandles)==null?void 0:c.call(E)))){if(o>=B){(f=E.saveAndClose)==null||f.call(E),this.mountInstances.delete(p),n-=1;continue}else if(r===null||n<=0){a=B;break}(g=E.saveAndClose)==null||g.call(E),this.mountInstances.delete(p),n-=1}this.limitOpenFilesTimeout===null&&(r===null&&this.mountInstances.size>0||r!==null)&&isFinite(a)&&(this.limitOpenFilesTimeout=setTimeout(()=>{this.limitOpenFilesTimeout=null,this.limitOpenFiles(null)},a-o).unref())}async getMountPromise(r,o){var a;if(this.mountInstances){let n=this.mountInstances.get(r);if(!n){let c=await this.factoryPromise(this.baseFs,r);n=this.mountInstances.get(r),n||(n={childFs:c(),expiresAt:0,refCount:0})}this.mountInstances.delete(r),this.limitOpenFiles(this.maxOpenFiles-1),this.mountInstances.set(r,n),n.expiresAt=Date.now()+this.maxAge,n.refCount+=1;try{return await o(n.childFs)}finally{n.refCount-=1}}else{let n=(await this.factoryPromise(this.baseFs,r))();try{return await o(n)}finally{(a=n.saveAndClose)==null||a.call(n)}}}getMountSync(r,o){var a;if(this.mountInstances){let n=this.mountInstances.get(r);return n||(n={childFs:this.factorySync(this.baseFs,r),expiresAt:0,refCount:0}),this.mountInstances.delete(r),this.limitOpenFiles(this.maxOpenFiles-1),this.mountInstances.set(r,n),n.expiresAt=Date.now()+this.maxAge,o(n.childFs)}else{let n=this.factorySync(this.baseFs,r);try{return o(n)}finally{(a=n.saveAndClose)==null||a.call(n)}}}}});var nr,mT,ew,kY=Lt(()=>{ud();Ha();nr=()=>Object.assign(new Error("ENOSYS: unsupported filesystem access"),{code:"ENOSYS"}),mT=class extends Mf{constructor(){super(ee)}getExtractHint(){throw nr()}getRealPath(){throw nr()}resolve(){throw nr()}async openPromise(){throw nr()}openSync(){throw nr()}async opendirPromise(){throw nr()}opendirSync(){throw nr()}async readPromise(){throw nr()}readSync(){throw nr()}async writePromise(){throw nr()}writeSync(){throw nr()}async closePromise(){throw nr()}closeSync(){throw nr()}createWriteStream(){throw nr()}createReadStream(){throw nr()}async realpathPromise(){throw nr()}realpathSync(){throw nr()}async readdirPromise(){throw nr()}readdirSync(){throw nr()}async existsPromise(e){throw nr()}existsSync(e){throw nr()}async accessPromise(){throw nr()}accessSync(){throw nr()}async statPromise(){throw nr()}statSync(){throw nr()}async fstatPromise(e){throw nr()}fstatSync(e){throw nr()}async lstatPromise(e){throw nr()}lstatSync(e){throw nr()}async fchmodPromise(){throw nr()}fchmodSync(){throw nr()}async chmodPromise(){throw nr()}chmodSync(){throw nr()}async fchownPromise(){throw nr()}fchownSync(){throw nr()}async chownPromise(){throw nr()}chownSync(){throw nr()}async mkdirPromise(){throw nr()}mkdirSync(){throw nr()}async rmdirPromise(){throw nr()}rmdirSync(){throw nr()}async linkPromise(){throw nr()}linkSync(){throw nr()}async symlinkPromise(){throw nr()}symlinkSync(){throw nr()}async renamePromise(){throw nr()}renameSync(){throw nr()}async copyFilePromise(){throw nr()}copyFileSync(){throw nr()}async appendFilePromise(){throw nr()}appendFileSync(){throw nr()}async writeFilePromise(){throw nr()}writeFileSync(){throw nr()}async unlinkPromise(){throw nr()}unlinkSync(){throw nr()}async utimesPromise(){throw nr()}utimesSync(){throw nr()}async lutimesPromise(){throw nr()}lutimesSync(){throw nr()}async readFilePromise(){throw nr()}readFileSync(){throw nr()}async readlinkPromise(){throw nr()}readlinkSync(){throw nr()}async truncatePromise(){throw nr()}truncateSync(){throw nr()}async ftruncatePromise(e,r){throw nr()}ftruncateSync(e,r){throw nr()}watch(){throw nr()}watchFile(){throw nr()}unwatchFile(){throw nr()}},ew=mT;ew.instance=new mT});var fp,xY=Lt(()=>{Lf();Ha();fp=class extends Ws{constructor(r){super(me);this.baseFs=r}mapFromBase(r){return me.fromPortablePath(r)}mapToBase(r){return me.toPortablePath(r)}}});var IKe,yT,wKe,ji,PY=Lt(()=>{fd();Lf();Ha();IKe=/^[0-9]+$/,yT=/^(\/(?:[^/]+\/)*?(?:\$\$virtual|__virtual__))((?:\/((?:[^/]+-)?[a-f0-9]+)(?:\/([^/]+))?)?((?:\/.*)?))$/,wKe=/^([^/]+-)?[a-f0-9]+$/,ji=class extends Ws{constructor({baseFs:r=new jn}={}){super(ee);this.baseFs=r}static makeVirtualPath(r,o,a){if(ee.basename(r)!=="__virtual__")throw new Error('Assertion failed: Virtual folders must be named "__virtual__"');if(!ee.basename(o).match(wKe))throw new Error("Assertion failed: Virtual components must be ended by an hexadecimal hash");let c=ee.relative(ee.dirname(r),a).split("/"),f=0;for(;f{Mv=Ie("url"),bY=Ie("util");Lf();Ha();Nv=class extends Ws{constructor(r){super(me);this.baseFs=r}mapFromBase(r){return r}mapToBase(r){if(typeof r=="string")return r;if(r instanceof Mv.URL)return(0,Mv.fileURLToPath)(r);if(Buffer.isBuffer(r)){let o=r.toString();if(Buffer.byteLength(o)!==r.byteLength)throw new Error("Non-utf8 buffers are not supported at the moment. Please upvote the following issue if you encounter this error: https://github.com/yarnpkg/berry/issues/4942");return o}throw new Error(`Unsupported path type: ${(0,bY.inspect)(r)}`)}}});var _o,Of,gp,Lv,Ov,Fy,nc,ic,BKe,QKe,vKe,DKe,tw,RY=Lt(()=>{_o=Symbol("kBaseFs"),Of=Symbol("kFd"),gp=Symbol("kClosePromise"),Lv=Symbol("kCloseResolve"),Ov=Symbol("kCloseReject"),Fy=Symbol("kRefs"),nc=Symbol("kRef"),ic=Symbol("kUnref"),tw=class{constructor(e,r){this[BKe]=1;this[QKe]=void 0;this[vKe]=void 0;this[DKe]=void 0;this[_o]=r,this[Of]=e}get fd(){return this[Of]}async appendFile(e,r){try{this[nc](this.appendFile);let o=(typeof r=="string"?r:r==null?void 0:r.encoding)??void 0;return await this[_o].appendFilePromise(this.fd,e,o?{encoding:o}:void 0)}finally{this[ic]()}}async chown(e,r){try{return this[nc](this.chown),await this[_o].fchownPromise(this.fd,e,r)}finally{this[ic]()}}async chmod(e){try{return this[nc](this.chmod),await this[_o].fchmodPromise(this.fd,e)}finally{this[ic]()}}createReadStream(e){return this[_o].createReadStream(null,{...e,fd:this.fd})}createWriteStream(e){return this[_o].createWriteStream(null,{...e,fd:this.fd})}datasync(){throw new Error("Method not implemented.")}sync(){throw new Error("Method not implemented.")}async read(e,r,o,a){try{this[nc](this.read);let n;return Buffer.isBuffer(e)?n=e:(e??(e={}),n=e.buffer??Buffer.alloc(16384),r=e.offset||0,o=e.length??n.byteLength,a=e.position??null),r??(r=0),o??(o=0),o===0?{bytesRead:o,buffer:n}:{bytesRead:await this[_o].readPromise(this.fd,n,r,o,a),buffer:n}}finally{this[ic]()}}async readFile(e){try{this[nc](this.readFile);let r=(typeof e=="string"?e:e==null?void 0:e.encoding)??void 0;return await this[_o].readFilePromise(this.fd,r)}finally{this[ic]()}}async stat(e){try{return this[nc](this.stat),await this[_o].fstatPromise(this.fd,e)}finally{this[ic]()}}async truncate(e){try{return this[nc](this.truncate),await this[_o].ftruncatePromise(this.fd,e)}finally{this[ic]()}}utimes(e,r){throw new Error("Method not implemented.")}async writeFile(e,r){try{this[nc](this.writeFile);let o=(typeof r=="string"?r:r==null?void 0:r.encoding)??void 0;await this[_o].writeFilePromise(this.fd,e,o)}finally{this[ic]()}}async write(...e){try{if(this[nc](this.write),ArrayBuffer.isView(e[0])){let[r,o,a,n]=e;return{bytesWritten:await this[_o].writePromise(this.fd,r,o??void 0,a??void 0,n??void 0),buffer:r}}else{let[r,o,a]=e;return{bytesWritten:await this[_o].writePromise(this.fd,r,o,a),buffer:r}}}finally{this[ic]()}}async writev(e,r){try{this[nc](this.writev);let o=0;if(typeof r<"u")for(let a of e){let n=await this.write(a,void 0,void 0,r);o+=n.bytesWritten,r+=n.bytesWritten}else for(let a of e)o+=(await this.write(a)).bytesWritten;return{buffers:e,bytesWritten:o}}finally{this[ic]()}}readv(e,r){throw new Error("Method not implemented.")}close(){if(this[Of]===-1)return Promise.resolve();if(this[gp])return this[gp];if(this[Fy]--,this[Fy]===0){let e=this[Of];this[Of]=-1,this[gp]=this[_o].closePromise(e).finally(()=>{this[gp]=void 0})}else this[gp]=new Promise((e,r)=>{this[Lv]=e,this[Ov]=r}).finally(()=>{this[gp]=void 0,this[Ov]=void 0,this[Lv]=void 0});return this[gp]}[(_o,Of,BKe=Fy,QKe=gp,vKe=Lv,DKe=Ov,nc)](e){if(this[Of]===-1){let r=new Error("file closed");throw r.code="EBADF",r.syscall=e.name,r}this[Fy]++}[ic](){if(this[Fy]--,this[Fy]===0){let e=this[Of];this[Of]=-1,this[_o].closePromise(e).then(this[Lv],this[Ov])}}}});function rw(t,e){e=new Nv(e);let r=(o,a,n)=>{let c=o[a];o[a]=n,typeof(c==null?void 0:c[Ry.promisify.custom])<"u"&&(n[Ry.promisify.custom]=c[Ry.promisify.custom])};{r(t,"exists",(o,...a)=>{let c=typeof a[a.length-1]=="function"?a.pop():()=>{};process.nextTick(()=>{e.existsPromise(o).then(f=>{c(f)},()=>{c(!1)})})}),r(t,"read",(...o)=>{let[a,n,c,f,g,p]=o;if(o.length<=3){let E={};o.length<3?p=o[1]:(E=o[1],p=o[2]),{buffer:n=Buffer.alloc(16384),offset:c=0,length:f=n.byteLength,position:g}=E}if(c==null&&(c=0),f|=0,f===0){process.nextTick(()=>{p(null,0,n)});return}g==null&&(g=-1),process.nextTick(()=>{e.readPromise(a,n,c,f,g).then(E=>{p(null,E,n)},E=>{p(E,0,n)})})});for(let o of TY){let a=o.replace(/Promise$/,"");if(typeof t[a]>"u")continue;let n=e[o];if(typeof n>"u")continue;r(t,a,(...f)=>{let p=typeof f[f.length-1]=="function"?f.pop():()=>{};process.nextTick(()=>{n.apply(e,f).then(E=>{p(null,E)},E=>{p(E)})})})}t.realpath.native=t.realpath}{r(t,"existsSync",o=>{try{return e.existsSync(o)}catch{return!1}}),r(t,"readSync",(...o)=>{let[a,n,c,f,g]=o;return o.length<=3&&({offset:c=0,length:f=n.byteLength,position:g}=o[2]||{}),c==null&&(c=0),f|=0,f===0?0:(g==null&&(g=-1),e.readSync(a,n,c,f,g))});for(let o of SKe){let a=o;if(typeof t[a]>"u")continue;let n=e[o];typeof n>"u"||r(t,a,n.bind(e))}t.realpathSync.native=t.realpathSync}{let o=t.promises;for(let a of TY){let n=a.replace(/Promise$/,"");if(typeof o[n]>"u")continue;let c=e[a];typeof c>"u"||a!=="open"&&r(o,n,(f,...g)=>f instanceof tw?f[n].apply(f,g):c.call(e,f,...g))}r(o,"open",async(...a)=>{let n=await e.openPromise(...a);return new tw(n,e)})}t.read[Ry.promisify.custom]=async(o,a,...n)=>({bytesRead:await e.readPromise(o,a,...n),buffer:a}),t.write[Ry.promisify.custom]=async(o,a,...n)=>({bytesWritten:await e.writePromise(o,a,...n),buffer:a})}function Uv(t,e){let r=Object.create(t);return rw(r,e),r}var Ry,SKe,TY,NY=Lt(()=>{Ry=Ie("util");FY();RY();SKe=new Set(["accessSync","appendFileSync","createReadStream","createWriteStream","chmodSync","fchmodSync","chownSync","fchownSync","closeSync","copyFileSync","linkSync","lstatSync","fstatSync","lutimesSync","mkdirSync","openSync","opendirSync","readlinkSync","readFileSync","readdirSync","readlinkSync","realpathSync","renameSync","rmdirSync","statSync","symlinkSync","truncateSync","ftruncateSync","unlinkSync","unwatchFile","utimesSync","watch","watchFile","writeFileSync","writeSync"]),TY=new Set(["accessPromise","appendFilePromise","fchmodPromise","chmodPromise","fchownPromise","chownPromise","closePromise","copyFilePromise","linkPromise","fstatPromise","lstatPromise","lutimesPromise","mkdirPromise","openPromise","opendirPromise","readdirPromise","realpathPromise","readFilePromise","readdirPromise","readlinkPromise","renamePromise","rmdirPromise","statPromise","symlinkPromise","truncatePromise","ftruncatePromise","unlinkPromise","utimesPromise","writeFilePromise","writeSync"])});function MY(t){let e=Math.ceil(Math.random()*4294967296).toString(16).padStart(8,"0");return`${t}${e}`}function LY(){if(CT)return CT;let t=me.toPortablePath(OY.default.tmpdir()),e=ge.realpathSync(t);return process.once("exit",()=>{ge.rmtempSync()}),CT={tmpdir:t,realTmpdir:e}}var OY,sc,CT,ge,UY=Lt(()=>{OY=be(Ie("os"));fd();Ha();sc=new Set,CT=null;ge=Object.assign(new jn,{detachTemp(t){sc.delete(t)},mktempSync(t){let{tmpdir:e,realTmpdir:r}=LY();for(;;){let o=MY("xfs-");try{this.mkdirSync(ee.join(e,o))}catch(n){if(n.code==="EEXIST")continue;throw n}let a=ee.join(r,o);if(sc.add(a),typeof t>"u")return a;try{return t(a)}finally{if(sc.has(a)){sc.delete(a);try{this.removeSync(a)}catch{}}}}},async mktempPromise(t){let{tmpdir:e,realTmpdir:r}=LY();for(;;){let o=MY("xfs-");try{await this.mkdirPromise(ee.join(e,o))}catch(n){if(n.code==="EEXIST")continue;throw n}let a=ee.join(r,o);if(sc.add(a),typeof t>"u")return a;try{return await t(a)}finally{if(sc.has(a)){sc.delete(a);try{await this.removePromise(a)}catch{}}}}},async rmtempPromise(){await Promise.all(Array.from(sc.values()).map(async t=>{try{await ge.removePromise(t,{maxRetries:0}),sc.delete(t)}catch{}}))},rmtempSync(){for(let t of sc)try{ge.removeSync(t),sc.delete(t)}catch{}}})});var nw={};tr(nw,{AliasFS:()=>au,BasePortableFakeFS:()=>ou,CwdFS:()=>Qn,FakeFS:()=>Mf,Filename:()=>Xr,JailFS:()=>Au,LazyFS:()=>by,MountFS:()=>up,NoFS:()=>ew,NodeFS:()=>jn,PortablePath:()=>Bt,PosixFS:()=>fp,ProxiedFS:()=>Ws,VirtualFS:()=>ji,constants:()=>Li,errors:()=>hr,extendFs:()=>Uv,normalizeLineEndings:()=>cd,npath:()=>me,opendir:()=>Rv,patchFs:()=>rw,ppath:()=>ee,setupCopyIndex:()=>Fv,statUtils:()=>Al,toFilename:()=>ss,unwatchAllFiles:()=>ld,unwatchFile:()=>Ad,watchFile:()=>Py,xfs:()=>ge});var Ft=Lt(()=>{lY();xv();uT();pT();hY();dT();ud();Ha();Ha();IY();ud();BY();vY();DY();SY();kY();fd();xY();Lf();PY();NY();UY()});var GY=_((Akt,qY)=>{qY.exports=HY;HY.sync=xKe;var KY=Ie("fs");function kKe(t,e){var r=e.pathExt!==void 0?e.pathExt:process.env.PATHEXT;if(!r||(r=r.split(";"),r.indexOf("")!==-1))return!0;for(var o=0;o{JY.exports=YY;YY.sync=PKe;var jY=Ie("fs");function YY(t,e,r){jY.stat(t,function(o,a){r(o,o?!1:WY(a,e))})}function PKe(t,e){return WY(jY.statSync(t),e)}function WY(t,e){return t.isFile()&&bKe(t,e)}function bKe(t,e){var r=t.mode,o=t.uid,a=t.gid,n=e.uid!==void 0?e.uid:process.getuid&&process.getuid(),c=e.gid!==void 0?e.gid:process.getgid&&process.getgid(),f=parseInt("100",8),g=parseInt("010",8),p=parseInt("001",8),E=f|g,B=r&p||r&g&&a===c||r&f&&o===n||r&E&&n===0;return B}});var XY=_((ukt,zY)=>{var ckt=Ie("fs"),Kv;process.platform==="win32"||global.TESTING_WINDOWS?Kv=GY():Kv=VY();zY.exports=ET;ET.sync=FKe;function ET(t,e,r){if(typeof e=="function"&&(r=e,e={}),!r){if(typeof Promise!="function")throw new TypeError("callback not provided");return new Promise(function(o,a){ET(t,e||{},function(n,c){n?a(n):o(c)})})}Kv(t,e||{},function(o,a){o&&(o.code==="EACCES"||e&&e.ignoreErrors)&&(o=null,a=!1),r(o,a)})}function FKe(t,e){try{return Kv.sync(t,e||{})}catch(r){if(e&&e.ignoreErrors||r.code==="EACCES")return!1;throw r}}});var iW=_((fkt,nW)=>{var Ty=process.platform==="win32"||process.env.OSTYPE==="cygwin"||process.env.OSTYPE==="msys",ZY=Ie("path"),RKe=Ty?";":":",$Y=XY(),eW=t=>Object.assign(new Error(`not found: ${t}`),{code:"ENOENT"}),tW=(t,e)=>{let r=e.colon||RKe,o=t.match(/\//)||Ty&&t.match(/\\/)?[""]:[...Ty?[process.cwd()]:[],...(e.path||process.env.PATH||"").split(r)],a=Ty?e.pathExt||process.env.PATHEXT||".EXE;.CMD;.BAT;.COM":"",n=Ty?a.split(r):[""];return Ty&&t.indexOf(".")!==-1&&n[0]!==""&&n.unshift(""),{pathEnv:o,pathExt:n,pathExtExe:a}},rW=(t,e,r)=>{typeof e=="function"&&(r=e,e={}),e||(e={});let{pathEnv:o,pathExt:a,pathExtExe:n}=tW(t,e),c=[],f=p=>new Promise((E,B)=>{if(p===o.length)return e.all&&c.length?E(c):B(eW(t));let Q=o[p],x=/^".*"$/.test(Q)?Q.slice(1,-1):Q,C=ZY.join(x,t),N=!x&&/^\.[\\\/]/.test(t)?t.slice(0,2)+C:C;E(g(N,p,0))}),g=(p,E,B)=>new Promise((Q,x)=>{if(B===a.length)return Q(f(E+1));let C=a[B];$Y(p+C,{pathExt:n},(N,U)=>{if(!N&&U)if(e.all)c.push(p+C);else return Q(p+C);return Q(g(p,E,B+1))})});return r?f(0).then(p=>r(null,p),r):f(0)},TKe=(t,e)=>{e=e||{};let{pathEnv:r,pathExt:o,pathExtExe:a}=tW(t,e),n=[];for(let c=0;c{"use strict";var sW=(t={})=>{let e=t.env||process.env;return(t.platform||process.platform)!=="win32"?"PATH":Object.keys(e).reverse().find(o=>o.toUpperCase()==="PATH")||"Path"};IT.exports=sW;IT.exports.default=sW});var cW=_((pkt,lW)=>{"use strict";var aW=Ie("path"),NKe=iW(),MKe=oW();function AW(t,e){let r=t.options.env||process.env,o=process.cwd(),a=t.options.cwd!=null,n=a&&process.chdir!==void 0&&!process.chdir.disabled;if(n)try{process.chdir(t.options.cwd)}catch{}let c;try{c=NKe.sync(t.command,{path:r[MKe({env:r})],pathExt:e?aW.delimiter:void 0})}catch{}finally{n&&process.chdir(o)}return c&&(c=aW.resolve(a?t.options.cwd:"",c)),c}function LKe(t){return AW(t)||AW(t,!0)}lW.exports=LKe});var uW=_((hkt,BT)=>{"use strict";var wT=/([()\][%!^"`<>&|;, *?])/g;function OKe(t){return t=t.replace(wT,"^$1"),t}function UKe(t,e){return t=`${t}`,t=t.replace(/(\\*)"/g,'$1$1\\"'),t=t.replace(/(\\*)$/,"$1$1"),t=`"${t}"`,t=t.replace(wT,"^$1"),e&&(t=t.replace(wT,"^$1")),t}BT.exports.command=OKe;BT.exports.argument=UKe});var gW=_((dkt,fW)=>{"use strict";fW.exports=/^#!(.*)/});var hW=_((mkt,pW)=>{"use strict";var KKe=gW();pW.exports=(t="")=>{let e=t.match(KKe);if(!e)return null;let[r,o]=e[0].replace(/#! ?/,"").split(" "),a=r.split("/").pop();return a==="env"?o:o?`${a} ${o}`:a}});var mW=_((ykt,dW)=>{"use strict";var QT=Ie("fs"),_Ke=hW();function HKe(t){let r=Buffer.alloc(150),o;try{o=QT.openSync(t,"r"),QT.readSync(o,r,0,150,0),QT.closeSync(o)}catch{}return _Ke(r.toString())}dW.exports=HKe});var IW=_((Ckt,EW)=>{"use strict";var qKe=Ie("path"),yW=cW(),CW=uW(),GKe=mW(),jKe=process.platform==="win32",YKe=/\.(?:com|exe)$/i,WKe=/node_modules[\\/].bin[\\/][^\\/]+\.cmd$/i;function JKe(t){t.file=yW(t);let e=t.file&&GKe(t.file);return e?(t.args.unshift(t.file),t.command=e,yW(t)):t.file}function VKe(t){if(!jKe)return t;let e=JKe(t),r=!YKe.test(e);if(t.options.forceShell||r){let o=WKe.test(e);t.command=qKe.normalize(t.command),t.command=CW.command(t.command),t.args=t.args.map(n=>CW.argument(n,o));let a=[t.command].concat(t.args).join(" ");t.args=["/d","/s","/c",`"${a}"`],t.command=process.env.comspec||"cmd.exe",t.options.windowsVerbatimArguments=!0}return t}function zKe(t,e,r){e&&!Array.isArray(e)&&(r=e,e=null),e=e?e.slice(0):[],r=Object.assign({},r);let o={command:t,args:e,options:r,file:void 0,original:{command:t,args:e}};return r.shell?o:VKe(o)}EW.exports=zKe});var QW=_((Ekt,BW)=>{"use strict";var vT=process.platform==="win32";function DT(t,e){return Object.assign(new Error(`${e} ${t.command} ENOENT`),{code:"ENOENT",errno:"ENOENT",syscall:`${e} ${t.command}`,path:t.command,spawnargs:t.args})}function XKe(t,e){if(!vT)return;let r=t.emit;t.emit=function(o,a){if(o==="exit"){let n=wW(a,e,"spawn");if(n)return r.call(t,"error",n)}return r.apply(t,arguments)}}function wW(t,e){return vT&&t===1&&!e.file?DT(e.original,"spawn"):null}function ZKe(t,e){return vT&&t===1&&!e.file?DT(e.original,"spawnSync"):null}BW.exports={hookChildProcess:XKe,verifyENOENT:wW,verifyENOENTSync:ZKe,notFoundError:DT}});var xT=_((Ikt,Ny)=>{"use strict";var vW=Ie("child_process"),ST=IW(),kT=QW();function DW(t,e,r){let o=ST(t,e,r),a=vW.spawn(o.command,o.args,o.options);return kT.hookChildProcess(a,o),a}function $Ke(t,e,r){let o=ST(t,e,r),a=vW.spawnSync(o.command,o.args,o.options);return a.error=a.error||kT.verifyENOENTSync(a.status,o),a}Ny.exports=DW;Ny.exports.spawn=DW;Ny.exports.sync=$Ke;Ny.exports._parse=ST;Ny.exports._enoent=kT});function kW(t){SW=t}function iw(){return typeof PT>"u"&&(PT=SW()),PT}var PT,SW,bT=Lt(()=>{SW=()=>{throw new Error("Assertion failed: No libzip instance is available, and no factory was configured")}});var PW=_((_v,RT)=>{var xW=Object.assign({},Ie("fs")),FT=function(){var t=typeof document<"u"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename<"u"&&(t=t||__filename),function(e){e=e||{};var r=typeof e<"u"?e:{},o,a;r.ready=new Promise(function(F,K){o=F,a=K});var n={},c;for(c in r)r.hasOwnProperty(c)&&(n[c]=r[c]);var f=[],g="./this.program",p=function(F,K){throw K},E=!1,B=!0,Q="";function x(F){return r.locateFile?r.locateFile(F,Q):Q+F}var C,N,U,H;B&&(E?Q=Ie("path").dirname(Q)+"/":Q=__dirname+"/",C=function(K,G){var se=Qs(K);return se?G?se:se.toString():(U||(U=xW),H||(H=Ie("path")),K=H.normalize(K),U.readFileSync(K,G?null:"utf8"))},N=function(K){var G=C(K,!0);return G.buffer||(G=new Uint8Array(G)),Be(G.buffer),G},process.argv.length>1&&(g=process.argv[1].replace(/\\/g,"/")),f=process.argv.slice(2),p=function(F){process.exit(F)},r.inspect=function(){return"[Emscripten Module object]"});var X=r.print||console.log.bind(console),ie=r.printErr||console.warn.bind(console);for(c in n)n.hasOwnProperty(c)&&(r[c]=n[c]);n=null,r.arguments&&(f=r.arguments),r.thisProgram&&(g=r.thisProgram),r.quit&&(p=r.quit);var fe=16;function ye(F,K){return K||(K=fe),Math.ceil(F/K)*K}var Qe=0,Pe=function(F){Qe=F},pe;r.wasmBinary&&(pe=r.wasmBinary);var Ee=r.noExitRuntime||!0;typeof WebAssembly!="object"&&gn("no native wasm support detected");function ke(F,K,G){switch(K=K||"i8",K.charAt(K.length-1)==="*"&&(K="i32"),K){case"i1":return Oe[F>>0];case"i8":return Oe[F>>0];case"i16":return Xe((F>>1)*2);case"i32":return Wn((F>>2)*4);case"i64":return Wn((F>>2)*4);case"float":return va((F>>2)*4);case"double":return KA((F>>3)*8);default:gn("invalid type for getValue: "+K)}return null}var h,Ke=!1,Ce;function Be(F,K){F||gn("Assertion failed: "+K)}function le(F){var K=r["_"+F];return Be(K,"Cannot call unknown function "+F+", make sure it is exported"),K}function re(F,K,G,se,ce){var xe={string:function(or){var qr=0;if(or!=null&&or!==0){var ui=(or.length<<2)+1;qr=Fa(ui),He(or,qr,ui)}return qr},array:function(or){var qr=Fa(or.length);return je(or,qr),qr}};function Je(or){return K==="string"?q(or):K==="boolean"?Boolean(or):or}var ut=le(F),Rt=[],Ar=0;if(se)for(var er=0;er=se);)++ce;return Ue.decode(F.subarray?F.subarray(K,ce):new Uint8Array(F.slice(K,ce)))}function q(F,K){if(!F)return"";for(var G=F+K,se=F;!(se>=G)&&k[se];)++se;return Ue.decode(k.subarray(F,se))}function Qt(F,K,G,se){if(!(se>0))return 0;for(var ce=G,xe=G+se-1,Je=0;Je=55296&&ut<=57343){var Rt=F.charCodeAt(++Je);ut=65536+((ut&1023)<<10)|Rt&1023}if(ut<=127){if(G>=xe)break;K[G++]=ut}else if(ut<=2047){if(G+1>=xe)break;K[G++]=192|ut>>6,K[G++]=128|ut&63}else if(ut<=65535){if(G+2>=xe)break;K[G++]=224|ut>>12,K[G++]=128|ut>>6&63,K[G++]=128|ut&63}else{if(G+3>=xe)break;K[G++]=240|ut>>18,K[G++]=128|ut>>12&63,K[G++]=128|ut>>6&63,K[G++]=128|ut&63}}return K[G]=0,G-ce}function He(F,K,G){return Qt(F,k,K,G)}function qe(F){for(var K=0,G=0;G=55296&&se<=57343&&(se=65536+((se&1023)<<10)|F.charCodeAt(++G)&1023),se<=127?++K:se<=2047?K+=2:se<=65535?K+=3:K+=4}return K}function Fe(F){var K=qe(F)+1,G=jA(K);return G&&Qt(F,Oe,G,K),G}function je(F,K){Oe.set(F,K)}function We(F,K){return F%K>0&&(F+=K-F%K),F}var pt,Oe,k,I,S,y,R,Z,te,ne;function Ae(F){pt=F,r.HEAP_DATA_VIEW=ne=new DataView(F),r.HEAP8=Oe=new Int8Array(F),r.HEAP16=I=new Int16Array(F),r.HEAP32=y=new Int32Array(F),r.HEAPU8=k=new Uint8Array(F),r.HEAPU16=S=new Uint16Array(F),r.HEAPU32=R=new Uint32Array(F),r.HEAPF32=Z=new Float32Array(F),r.HEAPF64=te=new Float64Array(F)}var Re=r.INITIAL_MEMORY||16777216,Le,lt=[],mt=[],qt=[],sr=!1;function Pt(){if(r.preRun)for(typeof r.preRun=="function"&&(r.preRun=[r.preRun]);r.preRun.length;)Fr(r.preRun.shift());Ti(lt)}function mn(){sr=!0,!r.noFSInit&&!$.init.initialized&&$.init(),fs.init(),Ti(mt)}function Or(){if(r.postRun)for(typeof r.postRun=="function"&&(r.postRun=[r.postRun]);r.postRun.length;)fn(r.postRun.shift());Ti(qt)}function Fr(F){lt.unshift(F)}function Ur(F){mt.unshift(F)}function fn(F){qt.unshift(F)}var vn=0,ws=null,_i=null;function wo(F){return F}function Bo(F){vn++,r.monitorRunDependencies&&r.monitorRunDependencies(vn)}function cs(F){if(vn--,r.monitorRunDependencies&&r.monitorRunDependencies(vn),vn==0&&(ws!==null&&(clearInterval(ws),ws=null),_i)){var K=_i;_i=null,K()}}r.preloadedImages={},r.preloadedAudios={};function gn(F){r.onAbort&&r.onAbort(F),F+="",ie(F),Ke=!0,Ce=1,F="abort("+F+"). Build with -s ASSERTIONS=1 for more info.";var K=new WebAssembly.RuntimeError(F);throw a(K),K}var $s="data:application/octet-stream;base64,";function UA(F){return F.startsWith($s)}var Qa="data:application/octet-stream;base64,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ACACIAA2AhggAiABNwMQIAIgAigCGEU6AA8CQCACKAIYRQRAIAIgAikDEKcQGSIANgIYIABFBEAgAkEANgIcDAILCyACQRgQGSIANgIIIABFBEAgAi0AD0EBcQRAIAIoAhgQFQsgAkEANgIcDAELIAIoAghBAToAACACKAIIIAIoAhg2AgQgAigCCCACKQMQNwMIIAIoAghCADcDECACKAIIIAItAA9BAXE6AAEgAiACKAIINgIcCyACKAIcIQAgAkEgaiQAIAALeAEBfyMAQRBrIgEkACABIAA2AgggASABKAIIQgQQHDYCBAJAIAEoAgRFBEAgAUEANgIMDAELIAEgASgCBC0AACABKAIELQABIAEoAgQtAAIgASgCBC0AA0EIdGpBCHRqQQh0ajYCDAsgASgCDCEAIAFBEGokACAAC4cDAQF/IwBBMGsiAyQAIAMgADYCJCADIAE2AiAgAyACNwMYAkAgAygCJC0AKEEBcQRAIANCfzcDKAwBCwJAAkAgAygCJCgCIEUNACADKQMYQv///////////wBWDQAgAykDGFANASADKAIgDQELIAMoAiRBDGpBEkEAEBQgA0J/NwMoDAELIAMoAiQtADVBAXEEQCADQn83AygMAQsCfyMAQRBrIgAgAygCJDYCDCAAKAIMLQA0QQFxCwRAIANCADcDKAwBCyADKQMYUARAIANCADcDKAwBCyADQgA3AxADQCADKQMQIAMpAxhUBEAgAyADKAIkIAMoAiAgAykDEKdqIAMpAxggAykDEH1BARAfIgI3AwggAkIAUwRAIAMoAiRBAToANSADKQMQUARAIANCfzcDKAwECyADIAMpAxA3AygMAwsgAykDCFAEQCADKAIkQQE6ADQFIAMgAykDCCADKQMQfDcDEAwCCwsLIAMgAykDEDcDKAsgAykDKCECIANBMGokACACC2EBAX8jAEEQayICIAA2AgggAiABNwMAAkAgAikDACACKAIIKQMIVgRAIAIoAghBADoAACACQX82AgwMAQsgAigCCEEBOgAAIAIoAgggAikDADcDECACQQA2AgwLIAIoAgwL7wEBAX8jAEEgayICJAAgAiAANgIYIAIgATcDECACIAIoAhhCCBAcNgIMAkAgAigCDEUEQCACQX82AhwMAQsgAigCDCACKQMQQv8BgzwAACACKAIMIAIp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AgwEQCABKAIMEE8gASgCDBAVCyABQRBqJAALLwEBfyMAQRBrIgEkACABIAA2AgwgASgCDCgCCBAVIAEoAgxBADYCCCABQRBqJAALzQEBAX8jAEEQayICJAAgAiAANgIIIAIgATYCBAJAIAIoAggtAChBAXEEQCACQX82AgwMAQsgAigCBEUEQCACKAIIQQxqQRJBABAUIAJBfzYCDAwBCyACKAIEEDsgAigCCCgCAARAIAIoAggoAgAgAigCBBA5QQBIBEAgAigCCEEMaiACKAIIKAIAEBggAkF/NgIMDAILCyACKAIIIAIoAgRCOEEDEB9CAFMEQCACQX82AgwMAQsgAkEANgIMCyACKAIMIQAgAkEQaiQAIAAL3wQBAX8jAEEgayICIAA2AhggAiABNgIUAkAgAigCGEUEQCACQQE2AhwMAQsgAiACKAIYKAIANgIMAkAgAigCGCgCCARAIAIgAigCGCgCCDYCEAwBCyACQQE2AhAgAkEANgIIA0ACQCACKAIIIAIoAhgvAQRPDQACQCACKAIMIAIoAghqLQAAQR9LBEAgAigCDCACKAIIai0AAEGAAUkNAQsgAigCDCACKAIIai0AAEENRg0AIAIoAgwgAigCCGotAABBCkYNACACKAIMIAIoAghqLQAAQQlGBEAMAQsgAkEDNgIQAkAgAigCDCACKAIIai0AAEHgAXFBwAFGBEAgAkEBNgIADAELAkAgAigCDCACKAIIai0AAEHwAXFB4AFGBEAgAkECNgIADAELAkAgAigCDCACKAIIai0AAEH4AXFB8AFGBEAgAkEDNgIADAELIAJBBDYCEAwECwsLIAIoAhgvAQQgAigCCCACKAIAak0EQCACQQQ2AhAMAgsgAkEBNgIEA0AgAigCBCACKAIATQRAIAIoAgwgAigCCCACKAIEamotAABBwAFxQYABRwRAIAJBBDYCEAwGBSACIAIoAgRBAWo2AgQMAgsACwsgAiACKAIAIAIoAghqNgIICyACIAIoAghBAWo2AggMAQsLCyACKAIYIAIoAhA2AgggAigCFARAAkAgAigCFEECRw0AIAIoAhBBA0cNACACQQI2AhAgAigCGEECNgIICwJAIAIoAhQgAigCEEYNACACKAIQQQFGDQAgAkEFNgIcDAILCyACIAIoAhA2AhwLIAIoAhwLagEBfyMAQRBr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QQJGDQELIAMoApQBQQJHDQEgAygCmAFBAkcNAQsgAygCpAEiACAALwEMQYAQcjsBDAwBCyADKAKkASIAIAAvAQxB/+8DcTsBDCADKAKUAUECRgRAIANB9eABIAMoAqQBKAIwIAMoAqgBQQhqEI8BNgKQASADKAKQAUUEQCADQX82AqwBDAMLCwJAIAMoAqABQYACcQ0AIAMoApgBQQJHDQAgA0H1xgEgAygCpAEoAjggAygCqAFBCGoQjwE2AkggAygCSEUEQCADKAKQARAiIANBfzYCrAEMAwsgAygCSCADKAKQATYCACADIAMoAkg2ApABCwsCQCADKAKkAS8BUkUEQCADKAKkASIAIAAvAQxB/v8DcTsBDAwBCyADKAKkASIAIAAvAQxBAXI7AQwLIAMgAygCpAEgAygCoAEQZ0EBcToAhgEgAyADKAKgAUGACnFBgApHBH8gAy0AhgEFQQELQQFxOgCHASADAn9BASADKAKkAS8BUkGBAkYNABpBASADKAKkAS8BUkGCAkYNABogAygCpAEvAVJBgwJGC0EBcToAhQEgAy0AhwFBAXEEQCADIANBIGpCHBApNgIcIAMoAhxFBEAgAygCqAFBCGpBDkEAEBQgAygCkAEQIiADQX82AqwBDAILAkAgAygCoAFBgAJxBEACQCADKAKgAUGACHENACADKAKkASkDIEL/////D1YNACADKAKkASkDKEL/////D1gNAgsgAygCHCADKAKkASkDKBAtIAMoAhwgAygCpAEpAyAQLQwBCwJAAkAgAygCoAFBgAhxDQAgAygCpAEpAyBC/////w9WDQAgAygCpAEpAyhC/////w9WDQAgAygCpAEpA0hC/////w9YDQELIAMoAqQBKQMoQv////8PWgRAIAMoAhwgAygCpAEpAygQLQsgAygCpAEpAyBC/////w9aBEAgAygCHCADKAKkASkDIBAtCyADKAKkASkDSEL/////D1oEQCADKAIcIAMoAqQBKQNIEC0LCwsCfyMAQRBrIgAgAygCHDYCDCAAKAIMLQAAQQFxRQsEQCADKAKoAUEIakEUQQAQFCADKAIcEBYgAygCkAEQIiADQX82AqwBDAILIANBAQJ/IwBBEGsiACADKAIcNgIMAn4gACgCDC0AAEEBcQRAIAAoAgwpAxAMAQtCAAunQf//A3ELIANBIGpBgAYQUjYCjAEgAygCHBAWIAMoAowBIAMoApABNgIAIAMgAygCjAE2ApABCyADLQCFAUEBcQRAIAMgA0EVakIHECk2AhAgAygCEEUEQCADKAKoAUEIakEOQQAQFCADKAKQARAiIANBfzYCrAEMAgsgAygCEEECEB0gAygCEEHMEkECEEAgAygCECADKAKkAS8BUkH/AXEQlwEgAygCECADKAKkASgCEEH//wNxEB0CfyMAQRBrIgAgAygCEDYCDCAAKAIMLQAAQQFxRQsEQCADKAKoAUEIakEUQQAQFCADKAIQEBYgAygCkAEQIiADQX82AqwBDAILIANBgbICQQcgA0EVakGABhBSNgIMIAMoAhAQFiADKAIMIAMoApABNgIAIAMgAygCDDYCkAELIAMgA0HQAGpCLhApIgA2AkwgAEUEQCADKAKoAUEIakEOQQAQFCADKAKQARAiIANBfzYCrAEMAQsgAygCTEH5EkH+EiADKAKgAUGAAnEbQQQQQCADKAKgAUGAAnFFBEAgAygCTCADLQCGAUEBcQR/QS0FIAMoAqQBLwEIC0H//wNxEB0LIAMoAkwgAy0AhgFBAXEEf0EtBSADKAKkAS8BCgtB//8DcRAdIAMoAkwgAygCpAEvAQwQHQJAIAMtAIUBQQFxBEAgAygCTEHjABAdDAELIAMoAkwgAygCpAEoAhBB//8DcRAdCyADKAKkASgCFCADQZ4BaiADQZwBahCOASADKAJMIAMvAZ4BEB0gAygCTCADLwGcARAdAkACQCADLQCFAUEBcUUNACADKAKkASkDKEIUWg0AIAMoAkxBABAgDAELIAMoAkwgAygCpAEoAhgQIAsCQAJAIAMoAqABQYACcUGAAkcNACADKAKkASkDIEL/////D1QEQCADKAKkASkDKEL/////D1QNAQsgAygCTEF/ECAgAygCTEF/ECAMAQsCQCADKAKkASkDIEL/////D1QEQCADKAJMIAMoAqQBKQMgpxAgDAELIAMoAkxBfxAgCwJAIAMoAqQBKQMoQv////8PVARAIAMoAkwgAygCpAEpAyinECAMAQsgAygCTEF/ECALCyADKAJMIAMoAqQBKAIwEE5B//8DcRAdIAMgAygCpAEoAjQgAygCoAEQkwFB//8DcSADKAKQAUGABhCTAUH//wNxajYCiAEgAygCTCAD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IgJBAWo2AhAgAiAAKAIEaiABQQh2OgAAIAAgACgCECICQQFqNgIQIAIgACgCBGogAUEQdjoAACAAIAAoAhAiAkEBajYCECACIAAoAgRqIAFBGHY6AAAL3gQCAX8CfiABQQJqrSEEIAApA7gtIQMCQCAAKALALSIBQQNqIgJBP00EQCAEIAGthiADhCEEDAELIAFBwABGBEAgACAAKAIQIgFBAWo2AhAgASAAKAIEaiADPAAAIAAgACgCECIBQQFqNgIQIAEgACgCBGogA0IIiDwAACAAIAAoAhAiAUEBajYCECABIAAoAgRqIANCEIg8AAAgACAAKAIQIgFBAWo2AhAgASAAKAIEaiADQhiIPAAAIAAgACgCECIBQQFqNgIQIAEgACgCBGogA0IgiDwAACAAIAAoAhAiAUEBajYCECABIAAoAgRqIANCKIg8AAAgACAAKAIQIgFBAWo2AhAgASAAKAIEaiADQjCIPAAAIAAgACgCECIBQQFqNgIQIAEgACgCBGogA0I4iDwAAEEDIQIMAQsgACAAKAIQIgJBAWo2AhAgAiAAKAIEaiAEIAGthiADhCIDPAAAIAAgACgCECICQQFqNgIQIAIgACgCBGogA0IIiDwAACAAIAAoAhAiAkEBajYCECACIAAoAgRqIANCEIg8AAAgACAAKAIQIgJBAWo2AhAgAiAAKAIEaiADQhiIPAAAIAAgACgCECICQQFqNgIQIAIgACgCBGogA0IgiDwAACAAIAAoAhAiAkEBajYCECACIAAoAgRqIANCKIg8AAAgACAAKAIQIgJBAWo2AhAgAiAAKAIEaiADQjCIPAAAIAAgACgCECICQQFqNgIQIAIgACgCBGogA0I4iDwAACABQT1rIQIgBEHAACABa62IIQQLIAAgBDcDuC0gACACNgLALQuoCQIDfwJ+QbDkADMBACEFIAApA7gtIQYCQCAAKALALSIEQbLkAC8BACIDaiICQT9NBEAgBSAErYYgBoQhBQwBCyAEQcAARgRAIAAgACgCECICQQFqNgIQIAIgACgCBGogBjwAACAAIAAoAhAiAkEBajYCECACIAAoAgRqIAZCCIg8AAAgACAAKAIQIgJBAWo2AhAgAiAAKAIEaiAGQhCIPAAAIAAgACgCECICQQFqNgIQIAIgACgCBGogBkIYiDwAACAAIAAoAhAiAkEB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KAI0EJYBIQAgAygCgAEoAgAgAykDcKdBBHRqKAIAIAA2AjQgAygCgAEoAgAgAykDcKdBBHRqKAIAQQE6AAQgA0EANgI0IAMQTyADIAMpA3BCAXw3A3AMAgsACwsgAwJ+IAMpA2AgAykDaH1C////////////AFQEQCADKQNgIAMpA2h9DAELQv///////////wALNwOIAQsgAykDiAEhBCADQZABaiQAIAQL1AQBAX8jAEEgayIDJAAgAyAANgIYIAMgATYCFCADIAI2AhAgAygCECEBIwBBEGsiACQAIAAgATYCCCAAQdgAEBk2AgQCQCAAKAIERQRAIAAoAghBDkEAEBQgAEEANgIMDAELIAAoAgghAiMAQRBrIgEkACABIAI2AgggAUEYEBkiAjYCBAJAIAJFBEAgASgCCEEOQQAQFCABQQA2AgwMAQsgASgCBEEANgIAIAEoAgRCADcDCCABKAIEQQA2AhAgASABKAIENgIMCyABKAIMIQIgAUEQaiQAIAAoAgQgAjYCUCACRQRAIAAoAgQQFSAAQQA2AgwMAQsgACgCBEEANgIAIAAoAgRBADYCBCMAQRBrIgEgACgCBEEIajYCDCABKAIMQQA2AgAgASgCDEEANgIEIAEoAgxBADYCCCAAKAIEQQA2AhggACgCBEEANgIUIAAoAgRBADYCHCAAKAIEQQA2AiQgACgCBEEANgIgIAAoAgRBADoAKCAAKAIEQgA3AzggACgCBEIANwMwIAAoAgRBADYCQCAAKAIEQQA2AkggACgCBEEANgJEIAAoAgRBADYCTCAAKAIEQQA2AlQgACAAKAIENgIMCyAAKAIMIQEgAEEQaiQAIAMgASIANgIMAkAgAEUEQCADQQA2AhwMAQsgAygCDCADKAIYNgIAIAMoAgwgAygCFDYCBCADKAIUQRBxBEAgAygCDCIAIAAoAhRBAnI2AhQgAygCDCIAIAAoAhhBAnI2AhgLIAMgAygCDDYCHAsgAygCHCEAIANBIGokACAAC9UBAQF/IwBBIGsiBCQAIAQgADYCGCAEIAE3AxAgBCACNgIMIAQgAzYCCAJAAkAgBCkDEEL///////////8AVwRAIAQpAxBCgICAgICAgICAf1kNAQsgBCgCCEEEQT0QFCAEQX82AhwMAQsCfyAEKQMQIQEgBCgCDCEAIAQoAhgiAigCTEF/TARAIAIgASAAEKEBDAELIAIgASAAEKEBC0EASARAIAQoAghBBEH4nQEoAgAQFCAEQX82AhwMAQsgBEEANgIcCyAEKAIcIQAgBEEgaiQAIAALJABBACAAEAUiACAAQRtGGyIABH9B+J0BIAA2AgBBAAVBAAsaC3ABAX8jAEEQayIDJAAgAwJ/IAFBwABxRQRAQQAgAUGAgIQCcUGAgIQCRw0BGgsgAyACQQRqNgIMIAIoAgALNgIAIAAgAUGAgAJyIAMQECIAQYFgTwRAQfidAUEAIABrNgIAQX8hAAsgA0EQaiQAIAALMwEBfwJ/IAAQByIBQWFGBEAgABARIQELIAFBgWBPCwR/QfidAUEAIAFrNgIAQX8FIAELC2kBAn8CQCAAKAIUIAAoAhxNDQAgAEEAQQAgACgCJBEAABogACgCFA0AQX8PCyAAKAIEIgEgACgCCCICSQRAIAAgASACa6xBASAAKAIoERAAGgsgAEEANgIcIABCADcDECAAQgA3AgRBAAvaAwEGfyMAQRBrIgUkACAFIAI2AgwjAEGgAWsiBCQAIARBCGpBoIkBQZABEBcaIAQgADYCNCAEIAA2AhwgBEF+IABrIgNB/////wcgA0H/////B0kbIgY2AjggBCAAIAZqIgA2AiQgBCAANgIYIARBCGohACMAQdABayIDJAAgAyACNgLMASADQaABakEAQSgQLyADIAMoAswBNgLIAQJAQQAgASADQcgBaiADQdAAaiADQaABahByQQBIDQAgACgCTEEATiEHIAAoAgAhAiAALABKQQBMBEAgACACQV9xNgIACyACQSBxIQgCfyAAKAIwBEAgACABIANByAFqIANB0ABqIANBoAFqEHIMAQsgAEHQADYCMCAAIANB0ABqNgIQIAAgAzYCHCAAIAM2AhQgACgCLCECIAAgAzYCLCAAIAEgA0HIAWogA0HQAGogA0GgAWoQciACRQ0AGiAAQQBBACAAKAIkEQAAGiAAQQA2AjAgACACNgIsIABBADYCHCAAQQA2AhAgACgCFBogAEEANgIUQQALGiAAIAAoAgAgCHI2AgAgB0UNAAsgA0HQAWokACAGBEAgBCgCHCIAIAAgBCgCGEZrQQA6AAALIARBoAFqJAAgBUEQaiQAC4wSAg9/AX4jAEHQAGsiBSQAIAUgATYCTCAFQTdqIRMgBUE4aiEQQQAhAQNAAkAgDUEASA0AQf////8HIA1rIAFIBEBB+J0BQT02AgBBfyENDAELIAEgDWohDQsgBSgCTCIHIQECQAJAAkACQAJAAkACQAJAIAUCfwJAIActAAAiBgRAA0ACQAJAIAZB/wFxIgZFBEAgASEGDAELIAZBJUcNASABIQYDQCABLQABQSVHDQEgBSABQQJqIgg2AkwgBkEBaiEGIAEtAAIhDiAIIQEgDkElRg0ACwsgBiAHayEBIAAEQCAAIAcgARAhCyABDQ0gBSgCTCEBIAUoAkwsAAFBMGtBCk8NAyABLQACQSRHDQMgASwAAUEwayEPQQEhESABQQNqDAQLIAUgAUEBaiIINgJMIAEtAAEhBiAIIQEMAAsACyANIQsgAA0IIBFFDQJBASEBA0AgBCABQQJ0aigCACIABEAgAyABQQN0aiAAIAIQqQFBASELIAFBAWoiAUEKRw0BDAoLC0EBIQsgAUEKTw0IA0AgBCABQQJ0aigCAA0IIAFBAWoiAUEKRw0ACwwIC0F/IQ8gAUEBagsiATYCTEEAIQgCQCABLAAAIgxBIGsiBkEfSw0AQQEgBnQiBkGJ0QRxRQ0AA0ACQCAFIAFBAWoiCDYCTCABLAABIgxBIGsiAUEgTw0AQQEgAXQiAUGJ0QRxRQ0AIAEgBnIhBiAIIQEMAQsLIAghASAGIQgLAkAgDEEqRgRAIAUCfwJAIAEsAAFBMGtBCk8NACAFKAJMIgEtAAJBJEcNACABLAABQQJ0IARqQcABa0EKNgIAIAEsAAFBA3QgA2pBgANrKAIAIQpBASERIAFBA2oMAQsgEQ0IQQAhEUEAIQogAARAIAIgAigCACIBQQRqNgIAIAEoAgAhCgsgBSgCTEEBagsiATYCTCAKQX9KDQFBACAKayEKIAhBgMAAciEIDAELIAVBzABqEKgBIgpBAEgNBiAFKAJMIQELQX8hCQJAIAEtAABBLkcNACABLQABQSpGBEACQCABLAACQTBrQQpPDQAgBSgCTCIBLQADQSRHDQAgASwAAkECdCAEakHAAWtBCjYCACABLAACQQN0IANqQYADaygCACEJIAUgAUEEaiIBNgJMDAILIBENByAABH8gAiACKAIAIgFBBGo2AgAgASgCAAVBAAshCSAFIAUoAkxBAmoiATYCTAwBCyAFIAFBAWo2AkwgBUHMAGoQqAEhCSAFKAJMIQELQQAhBgNAIAYhEkF/IQsgASwAAEHBAGtBOUsNByAFIAFBAWoiDDYCTCABLAAAIQYgDCEBIAYgEkE6bGpB/4QBai0AACIGQQFrQQhJDQALIAZBE0YNAiAGRQ0GIA9BAE4EQCAEIA9BAnRqIAY2AgAgBSADIA9BA3RqKQMANwNADAQLIAANAQtBACELDAULIAVBQGsgBiACEKkBIAUoAkwhDAwCCyAPQX9KDQMLQQAhASAARQ0ECyAIQf//e3EiDiAIIAhBgMAAcRshBkEAIQtBpAghDyAQIQgCQAJAAkACfwJAAkACQAJAAn8CQAJAAkACQAJAAkACQCAMQQFrLAAAIgFBX3EgASABQQ9xQQNGGyABIBIbIgFB2ABrDiEEEhISEhISEhIOEg8GDg4OEgYSEhISAgUDEhIJEgESEgQACwJAIAFBwQBrDgcOEgsSDg4OAAsgAUHTAEYNCQwRCyAFKQNAIRRBpAgMBQtBACEBAkACQAJAAkACQAJAAkAgEkH/AXEOCAABAgMEFwUGFwsgBSgCQCANNgIADBYLIAUoAkAgDTYCAAwVCyAFKAJAIA2sNwMADBQLIAUoAkAgDTsBAAwTCyAFKAJAIA06AAAMEgsgBSgCQCANNgIADBELIAUoAkAgDaw3AwAMEAsgCUEIIAlBCEsbIQkgBkEIciEGQfgAIQELIBAhByABQSBxIQ4gBSkDQCIUUEUEQANAIAdBAWsiByAUp0EPcUGQiQFqLQAAIA5yOgAAIBRCD1YhDCAUQgSIIRQgDA0ACwsgBSkDQFANAyAGQQhxRQ0DIAFBBHZBpAhqIQ9BAiELDAMLIBAhASAFKQNAIhRQRQRAA0AgAUEBayIBIBSnQQdxQTByOgAAIBRCB1YhByAUQgOIIRQgBw0ACwsgASEHIAZBCHFFDQIgCSAQIAdrIgFBAWogASAJSBshCQwCCyAFKQNAIhRCf1cEQCAFQgAgFH0iFDcDQEEBIQtBpAgMAQsgBkGAEHEEQEEBIQtBpQgMAQtBpghBpAggBkEBcSILGwshDyAUIBAQQyEHCyAGQf//e3EgBiAJQX9KGyEGAkAgBSkDQCIUQgBSDQAgCQ0AQQAhCSAQIQcMCgsgCSAUUCAQIAdraiIBIAEgCUgbIQkMCQsgBSgCQCIBQeASIAEbIgdBACAJEKwBIgEgByAJaiABGyEIIA4hBiABIAdrIAkgARshCQwICyAJBEAgBSgCQAwCC0EAIQEgAEEgIApBACAGECUMAgsgBUEANgIMIAUgBSkDQD4CCCAFIAVBCGo2AkBBfyEJIAVBCGoLIQhBACEBAkADQCAIKAIAIgdFDQECQCAFQQRqIAcQqwEiB0EASCIODQAgByAJIAFrSw0AIAhBBGohCCAJIAEgB2oiAUsNAQwCCwtBfyELIA4NBQsgAEEgIAogASAGECUgAUUEQEEAIQEMAQtBACEIIAUoAkAhDANAIAwoAgAiB0UNASAFQQRqIAcQqwEiByAIaiIIIAFKDQEgACAFQQRqIAcQISAMQQRqIQwgASAISw0ACwsgAEEgIAogASAGQYDAAHMQJSAKIAEgASAKSBshAQwFCyAAIAUrA0AgCiAJIAYgAUEzERkAIQEMBAsgBSAFKQNAPAA3QQEhCSATIQcgDiEGDAILQX8hCwsgBUHQAGokACALDwsgAEEgIAsgCCAHayIOIAkgCSAOSBsiDGoiCCAKIAggCkobIgEgCCAGECUgACAPIAsQISAAQTAgASAIIAZBgIAEcxAlIABBMCAMIA5BABAlIAAgByAOECEgAEEgIAEgCCAGQYDAAHMQJQwACwALkAIBA38CQCABIAIoAhAiBAR/IAQFQQAhBAJ/IAIgAi0ASiIDQQFrIANyOgBKIAIoAgAiA0EIcQRAIAIgA0EgcjYCAEF/DAELIAJCADcCBCACIAIoAiwiAzYCHCACIAM2AhQgAiADIAIoAjBqNgIQQQALDQEgAigCEAsgAigCFCIFa0sEQCACIAAgASACKAIkEQAADwsCfyACLABLQX9KBEAgASEEA0AgASAEIgNFDQIaIAAgA0EBayIEai0AAEEKRw0ACyACIAAgAyACKAIkEQAAIgQgA0kNAiAAIANqIQAgAigCFCEFIAEgA2sMAQsgAQshBCAFIAAgBBAXGiACIAIoAhQgBGo2AhQgASEECyAEC0gCAX8BfiMAQRBrIgMkACADIAA2AgwgAyABNgIIIAMgAjYCBCADKAIMIAMoAgggAygCBCADKAIMQQhqEFUhBCADQRBqJAAgBAt3AQF/IwBBEGsiASAANgIIIAFChSo3AwACQCABKAIIRQRAIAFBADYCDAwBCwNAIAEoAggtAAAEQCABIAEoAggtAACtIAEpAwBCIX58Qv////8PgzcDACABIAEoAghBAWo2AggMAQsLIAEgASkDAD4CDAsgASgCDAuHBQEBfyMAQTBrIgUkACAFIAA2AiggBSABNgIkIAUgAjcDGCAFIAM2AhQgBSAENgIQAkACQAJAIAUoAihFDQAgBSgCJEUNACAFKQMYQv///////////wBYDQELIAUoAhBBEkEAEBQgBUEAOgAvDAELIAUoAigoAgBFBEAgBSgCKEGAAiAFKAIQEFdBAXFFBEAgBUEAOgAvDAILCyAFIAUoAiQQdTYCDCAFIAUoAgwgBSgCKCgCAHA2AgggBSAFKAIoKAIQIAUoAghBAnRqKAIANgIEA0ACQCAFKAIERQ0AAkAgBSgCBCgCHCAFKAIMRw0AIAUoAiQgBSgCBCgCABBYDQACQAJAIAUoAhRBCHEEQCAFKAIEKQMIQn9SDQELIAUoAgQpAxBCf1ENAQsgBSgCEEEKQQAQFCAFQQA6AC8MBAsMAQsgBSAFKAIEKAIYNgIEDAELCyAFKAIERQRAIAVBIBAZIgA2AgQgAEUEQCAFKAIQQQ5BABAUIAVBADoALwwCCyAFKAIEIAUoAiQ2AgAgBSgCBCAFKAIoKAIQIAUoAghBAnRqKAIANgIYIAUoAigoAhAgBSgCCEECdGogBSgCBDYCACAFKAIEIAUoAgw2AhwgBSgCBEJ/NwMIIAUoAigiACAAKQMIQgF8NwMIAkAgBSgCKCIAKQMIuiAAKAIAuEQAAAAAAADoP6JkRQ0AIAUoAigoAgBBgICAgHhPDQAgBSgCKCAFKAIoKAIAQQF0IAUoAhAQV0EBcUUEQCAFQQA6AC8MAwsLCyAFKAIUQQhxBEAgBSgCBCAFKQMYNwMICyAFKAIEIAUpAxg3AxAgBUEBOgAvCyAFLQAvQQFxIQAgBUEwaiQAIAAL1g8BFn8jAEFAaiIHQgA3AzAgB0IANwM4IAdCADcDICAHQgA3AygCQAJAAkACQAJAIAIEQCACQQNxIQkgAkEBa0EDTwRAIAJBfHEhBgNAIAdBIGogASAIQQF0IgxqLwEAQQF0aiIKIAovAQBBAWo7AQAgB0EgaiABIAxBAnJqLwEAQQF0aiIKIAovAQBBAWo7AQAgB0EgaiABIAxBBHJqLwEAQQF0aiIKIAovAQBBAWo7AQAgB0EgaiABIAxBBnJqLwEAQQF0aiIKIAovAQBBAWo7AQAgCEEEaiEIIAZBBGsiBg0ACwsgCQRAA0AgB0EgaiABIAhBAXRqLwEAQQF0aiIGIAYvAQBBAWo7AQAgCEEBaiEIIAlBAWsiCQ0ACwsgBCgCACEIQQ8hCyAHLwE+IhENAgwBCyAEKAIAIQgLQQ4hC0EAIREgBy8BPA0AQQ0hCyAHLwE6DQBBDCELIAcvATgNAEELIQsgBy8BNg0AQQohCyAHLwE0DQBBCSELIAcvATINAEEIIQsgBy8BMA0AQQchCyAHLwEuDQBBBiELIAcvASwNAEEFIQsgBy8BKg0AQQQhCyAHLwEoDQBBAyELIAcvASYNAEECIQsgBy8BJA0AIAcvASJFBEAgAyADKAIAIgBBBGo2AgAgAEHAAjYBACADIAMoAgAiAEEEajYCACAAQcACNgEAQQEhDQwDCyAIQQBHIQ9BASELQQEhCAwBCyALIAggCCALSxshD0EBIQ5BASEIA0AgB0EgaiAIQQF0ai8BAA0BIAhBAWoiCCALRw0ACyALIQgLQX8hCSAHLwEiIhBBAksNAUEEIAcvASQiEiAQQQF0amsiBkEASA0BIAZBAXQgBy8BJiITayIGQQBIDQEgBkEBdCAHLwEoIhRrIgZBAEgNASAGQQF0IAcvASoiFWsiBkEASA0BIAZBAXQgBy8BLCIWayIGQQBIDQEgBkEBdCAHLwEuIhdrIgZBAEgNASAGQQF0IAcvATAiGWsiBkEASA0BIAZBAXQgBy8BMiIaayIGQQBIDQEgBkEBdCAHLwE0IhtrIgZBAEgNASAGQQF0IAcvATYiDWsiBkEASA0BIAZBAXQgBy8BOCIYayIGQQBIDQEgBkEBdCAHLwE6IgxrIgZBAEgNASAGQQF0IAcvATwiCmsiBkEASA0BIAZBAXQgEWsiBkEASA0BIAZBACAARSAOchsNASAIIA9LIRFBACEJIAdBADsBAiAHIBA7AQQgByAQIBJqIgY7AQYgByAGIBNqIgY7AQggByAGIBRqIgY7AQogByAGIBVqIgY7AQwgByAGIBZqIgY7AQ4gByAGIBdqIgY7ARAgByAGIBlqIgY7ARIgByAGIBpqIgY7ARQgByAGIBtqIgY7ARYgByAGIA1qIgY7ARggByAGIBhqIgY7ARogByAGIAxqIgY7ARwgByAGIApqOwEeAkAgAkUNACACQQFHBEAgAkF+cSEGA0AgASAJQQF0ai8BACIKBEAgByAKQQF0aiIKIAovAQAiCkEBajsBACAFIApBAXRqIAk7AQALIAEgCUEBciIMQQF0ai8BACIKBEAgByAKQQF0aiIKIAovAQAiCkEBajsBACAFIApBAXRqIAw7AQALIAlBAmohCSAGQQJrIgYNAAsLIAJBAXFFDQAgASAJQQF0ai8BACICRQ0AIAcgAkEBdGoiAiACLwEAIgJBAWo7AQAgBSACQQF0aiAJOwEACyAIIA8gERshDUEUIRBBACEWIAUiCiEYQQAhEgJAAkACQCAADgICAAELQQEhCSANQQlLDQNBgQIhEEHQ8gAhGEGQ8gAhCkEBIRIMAQsgAEECRiEWQQAhEEHQ8wAhGEGQ8wAhCiAAQQJHBEAMAQtBASEJIA1BCUsNAgtBASANdCITQQFrIRogAygCACEUQQAhFSANIQZBACEPQQAhDkF/IQwDQEEBIAZ0IRECQANAIAggD2shFwJ/QQAgBSAVQQF0ai8BACICQQFqIBBJDQAaIAIgEEkEQEEAIQJB4AAMAQsgCiACIBBrQQF0IgBqLwEAIQIgACAYai0AAAshACAOIA92IRtBfyAXdCEGIBEhCQNAIBQgBiAJaiIJIBtqQQJ0aiIZIAI7AQIgGSAXOgABIBkgADoAACAJDQALQQEgCEEBa3QhBgNAIAYiAEEBdiEGIAAgDnENAAsgB0EgaiAIQQF0aiICIAIvAQBBAWsiAjsBACAAQQFrIA5xIABqQQAgABshDiAVQQFqIRUgAkH//wNxRQRAIAggC0YNAiABIAUgFUEBdGovAQBBAXRqLwEAIQgLIAggDU0NACAOIBpxIgAgDEYNAAtBASAIIA8gDSAPGyIPayIGdCECIAggC0kEQCALIA9rIQwgCCEJAkADQCACIAdBIGogCUEBdGovAQBrIgJBAUgNASACQQF0IQIgBkEBaiIGIA9qIgkgC0kNAAsgDCEGC0EBIAZ0IQILQQEhCSASIAIgE2oiE0HUBktxDQMgFiATQdAES3ENAyADKAIAIgIgAEECdGoiCSANOgABIAkgBjoAACAJIBQgEUECdGoiFCACa0ECdjsBAiAAIQwMAQsLIA4EQCAUIA5BAnRqIgBBADsBAiAAIBc6AAEgAEHAADoAAAsgAyADKAIAIBNBAnRqNgIACyAEIA02AgBBACEJCyAJC04BAX8jAEEQayICIAA7AQogAiABNgIEAkAgAi8BCkEBRgRAIAIoAgRBAUYEQCACQQA2AgwMAgsgAkElNgIMDAELIAJBADYCDAsgAigCDAuAAwEBfyMAQTBrIgUkACAFIAA2AiwgBSABNgIoIAUgAjYCJCAFIAM3AxggBSAENgIUIAVCADcDCANAIAUpAwggBSkDGFQEQCAFIAUoAiQgBSkDCKdqLQAAOgAHIAUoAhRFBEAgBSAFKAIsKAIUQQJyOwESIAUgBS8BEiAFLwESQQFzbEEIdjsBEiAFIAUtAAcgBS8BEkH/AXFzOgAHCyAFKAIoBEAgBSgCKCAFKQMIp2ogBS0ABzoAAAsCfyAFKAIsKAIMQX9zIQBBACAFQQdqIgFFDQAaIAAgAUIBQayZASgCABEEAAtBf3MhACAFKAIsIAA2AgwgBSgCLCAFKAIsKAIQIAUoAiwoAgxB/wFxakGFiKLAAGxBAWo2AhAgBSAFKAIsKAIQQRh2OgAHAn8gBSgCLCgCFEF/cyEAQQAgBUEHaiIBRQ0AGiAAIAFCAUGsmQEoAgARBAALQX9zIQAgBSgCLCAANgIUIAUgBSkDCEIBfDcDCAwBCwsgBUEwaiQAC20BAX8jAEEgayIEJAAgBCAANgIYIAQgATYCFCAEIAI3AwggBCADNgIEAkAgBCgCGEUEQCAEQQA2AhwMAQsgBCAEKAIUIAQpAwggBCgCBCAEKAIYQQhqELsBNgIcCyAEKAIcIQAgBEEgaiQAIAALpwMBAX8jAEEgayIEJAAgBCAANgIYIAQgATcDECAEIAI2AgwgBCADNgIIIAQgBCgCGCAEKQMQIAQoAgxBABA+IgA2AgACQCAARQRAIARBfzYCHAwBCyAEIAQoAhggBCkDECAEKAIMELwBIgA2AgQgAEUEQCAEQX82AhwMAQsCQAJAIAQoAgxBCHENACAEKAIYKAJAIAQpAxCnQQR0aigCCEUNACAEKAIYKAJAIAQpAxCnQQR0aigCCCAEKAIIEDlBAEgEQCAEKAIYQQhqQQ9BABAUIARBfzYCHAwDCwwBCyAEKAIIEDsgBCgCCCAEKAIAKAIYNgIsIAQoAgggBCgCACkDKDcDGCAEKAIIIAQoAgAoAhQ2AiggBCgCCCAEKAIAKQMgNwMgIAQoAgggBCgCACgCEDsBMCAEKAIIIAQoAgAvAVI7ATIgBCgCCEEgQQAgBCgCAC0ABkEBcRtB3AFyrTcDAAsgBCgCCCAEKQMQNwMQIAQoAgggBCgCBDYCCCAEKAIIIgAgACkDAEIDhDcDACAEQQA2AhwLIAQoAhwhACAEQSBqJAAgAAtZAgF/AX4CQAJ/QQAgAEUNABogAK0gAa1+IgOnIgIgACABckGAgARJDQAaQX8gAiADQiCIpxsLIgIQGSIARQ0AIABBBGstAABBA3FFDQAgAEEAIAIQLwsgAAs2AQF/IwBBEGsiASQAIAEgADYCDCABKAIMEGAgASgCDCgCABA3IAEoAgwoAgQQNyABQRBqJAALpBUBEn8gASgCACEIIAEoAggiAigCACEFIAIoAgwhByAAQoCAgIDQxwA3AsQoQQAhAgJAAkAgB0EASgRAQX8hDANAAkAgCCACQQJ0aiIDLwEABEAgACAAKALEKEEBaiIDNgLEKCAAIANBAnRqQdAWaiACNgIAIAAgAmpBzChqQQA6AAAgAiEMDAELIANBADsBAgsgAkEBaiICIAdHDQALIABBoC1qIQ8gAEGcLWohESAAKALEKCIEQQFKDQIMAQsgAEGgLWohDyAAQZwtaiERQX8hDAsDQCAAIARBAWoiAjYCxCggACACQQJ0akHQFmogDEEBaiIDQQAgDEECSCIGGyICNgIAIAggAkECdCIEakEBOwEAIAAgAmpBzChqQQA6AAAgACAAKAKcLUEBazYCnC0gBQRAIA8gDygCACAEIAVqLwECazYCAAsgAyAMIAYbIQwgACgCxCgiBEECSA0ACwsgASAMNgIEIARBAXYhBgNAIAAgBkECdGpB0BZqKAIAIQkCQCAGIgJBAXQiAyAESg0AIAggCUECdGohCiAAIAlqQcwoaiENIAYhBQNAAkAgAyAETgRAIAMhAgwBCyAIIABB0BZqIgIgA0EBciIEQQJ0aigCACILQQJ0ai8BACIOIAggAiADQQJ0aigCACIQQQJ0ai8BACICTwRAIAIgDkcEQCADIQIMAgsgAyECIABBzChqIgMgC2otAAAgAyAQai0AAEsNAQsgBCECCyAKLwEAIgQgCCAAIAJBAnRqQdAWaigCACIDQQJ0ai8BACILSQRAIAUhAgwCCwJAIAQgC0cNACANLQAAIAAgA2pBzChqLQAASw0AIAUhAgwCCyAAIAVBAnRqQdAWaiADNgIAIAIhBSACQQF0IgMgACgCxCgiBEwNAAsLIAAgAkECdGpB0BZqIAk2AgAgBkECTgRAIAZBAWshBiAAKALEKCEEDAELCyAAKALEKCEDA0AgByEGIAAgA0EBayIENgLEKCAAKALUFiEKIAAgACADQQJ0akHQFmooAgAiCTYC1BZBASECAkAgA0EDSA0AIAggCUECdGohDSAAIAlqQcwoaiELQQIhA0EBIQUDQAJAIAMgBE4EQCADIQIMAQsgCCAAQdAWaiICIANBAXIiB0ECdGooAgAiBEECdGovAQAiDiAIIAIgA0ECdGooAgAiEEECdGovAQAiAk8EQCACIA5HBEAgAyECDAILIAMhAiAAQcwoaiIDIARqLQAAIAMgEGotAABLDQELIAchAgsgDS8BACIHIAggACACQQJ0akHQFmooAgAiA0ECdGovAQAiBEkEQCAFIQIMAgsCQCAEIAdHDQAgCy0AACAAIANqQcwoai0AAEsNACAFIQIMAgsgACAFQQJ0akHQFmogAzYCACACIQUgAkEBdCIDIAAoAsQoIgRMDQALC0ECIQMgAEHQFmoiByACQQJ0aiAJNgIAIAAgACgCyChBAWsiBTYCyCggACgC1BYhAiAHIAVBAnRqIAo2AgAgACAAKALIKEEBayIFNgLIKCAHIAVBAnRqIAI2AgAgCCAGQQJ0aiINIAggAkECdGoiBS8BACAIIApBAnRqIgQvAQBqOwEAIABBzChqIgkgBmoiCyACIAlqLQAAIgIgCSAKai0AACIKIAIgCksbQQFqOgAAIAUgBjsBAiAEIAY7AQIgACAGNgLUFkEBIQVBASECAkAgACgCxCgiBEECSA0AA0AgDS8BACIKIAggAAJ/IAMgAyAETg0AGiAIIAcgA0EBciICQQJ0aigCACIEQQJ0ai8BACIOIAggByADQQJ0aigCACIQQQJ0ai8BACISTwRAIAMgDiASRw0BGiADIAQgCWotAAAgCSAQai0AAEsNARoLIAILIgJBAnRqQdAWaigCACIDQQJ0ai8BACIESQRAIAUhAgwCCwJAIAQgCkcNACALLQAAIAAgA2pBzChqLQAASw0AIAUhAgwCCyAAIAVBAnRqQdAWaiADNgIAIAIhBSACQQF0IgMgACgCxCgiBEwNAAsLIAZBAWohByAAIAJBAnRqQdAWaiAGNgIAIAAoAsQoIgNBAUoNAAsgACAAKALIKEEBayICNgLIKCAAQdAWaiIDIAJBAnRqIAAoAtQWNgIAIAEoAgQhCSABKAIIIgIoAhAhBiACKAIIIQogAigCBCEQIAIoAgAhDSABKAIAIQcgAEHIFmpCADcBACAAQcAWakIANwEAIABBuBZqQgA3AQAgAEGwFmoiAUIANwEAQQAhBSAHIAMgACgCyChBAnRqKAIAQQJ0akEAOwECAkAgACgCyCgiAkG7BEoNACACQQFqIQIDQCAHIAAgAkECdGpB0BZqKAIAIgRBAnQiEmoiCyAHIAsvAQJBAnRqLwECIgNBAWogBiADIAZJGyIOOwECIAMgBk8hEwJAIAQgCUoNACAAIA5BAXRqQbAWaiIDIAMvAQBBAWo7AQBBACEDIAQgCk4EQCAQIAQgCmtBAnRqKAIAIQMLIBEgESgCACALLwEAIgQgAyAOamxqNgIAIA1FDQAgDyAPKAIAIAMgDSASai8BAmogBGxqNgIACyAFIBNqIQUgAkEBaiICQb0ERw0ACyAFRQ0AIAAgBkEBdGpBsBZqIQQDQCAGIQIDQCAAIAIiA0EBayICQQF0akGwFmoiDy8BACIKRQ0ACyAPIApBAWs7AQAgACADQQF0akGwFmoiAiACLwEAQQJqOwEAIAQgBC8BAEEBayIDOwEAIAVBAkohAiAFQQJrIQUgAg0ACyAGRQ0AQb0EIQIDQCADQf//A3EiBQRAA0AgACACQQFrIgJBAnRqQdAWaigCACIDIAlKDQAgByADQQJ0aiIDLwECIAZHBEAgESARKAIAIAYgAy8BAGxqIgQ2AgAgESAEIAMvAQAgAy8BAmxrNgIAIAMgBjsBAgsgBUEBayIFDQALCyAGQQFrIgZFDQEgACAGQQF0akGwFmovAQAhAwwACwALQQAhBSMAQSBrIgIgASIALwEAQQF0IgE7AQIgAiABIAAvAQJqQQF0IgE7AQQgAiABIAAvAQRqQQF0IgE7AQYgAiABIAAvAQZqQQF0IgE7AQggAiABIAAvAQhqQQF0IgE7AQogAiABIAAvAQpqQQF0IgE7AQwgAiABIAAvAQxqQQF0IgE7AQ4gAiABIAAvAQ5qQQF0IgE7ARAgAiABIAAvARBqQQF0IgE7ARIgAiABIAAvARJqQQF0IgE7ARQgAiABIAAvARRqQQF0IgE7ARYgAiABIAAvARZqQQF0IgE7ARggAiABIAAvARhqQQF0IgE7ARogAiABIAAvARpqQQF0IgE7ARwgAiAALwEcIAFqQQF0OwEeIAxBAE4EQANAIAggBUECdGoiBC8BAiIBBEAgAiABQQF0aiIAIAAvAQAiAEEBajsBACABQQNxIQZBACEDIAFBAWtBA08EQCABQfz/A3EhBwNAIABBA3ZBAXEgAEECdkEBcSAAQQJxIAMgAEEBcXJBAnRyckEBdHIiAUEBdCEDIABBBHYhACAHQQRrIgcNAAsLIAYEQANAIAMgAEEBcXIiAUEBdCEDIABBAXYhACAGQQFrIgYNAAsLIAQgATsBAAsgBSAMRyEAIAVBAWohBSAADQALCwuwCQIFfwF+IAAgAWshAwJAAkAgAkEHTQRAIAJFDQEgACADLQAAOgAAIAJBAUcNAiAAQQFqDwsCQAJ/AkACQAJAAkAgAUEBaw4IAwICAAICAgECCyADKAAADAMLIAMpAAAiCEIgiKchBCAIpyEBDAMLIAFBB00EQCAAIAJqQQFrIQcgASACSQRAIANBBGohBgNAIAcgAGtBAWoiBCABIAEgBEsbIgVBCE8EQANAIAAgAykAADcAACADQQhqIQMgAEEIaiEADAALAAsgBUEESQR/IAMFIAAgAygAADYAACAFQQRrIQUgAEEEaiEAIAYLIQQgBUECTwRAIAAgBC8AADsAACAFQQJrIQUgBEECaiEEIABBAmohAAsgBUEBRgRAIAAgBC0AADoAACAAQQFqIQALIAIgAWsiAiABSw0ACyACRQ0FCwJAIAcgAGtBAWoiASACIAEgAkkbIgJBCEkNACACQQhrIgRBA3ZBAWpBB3EiAQRAA0AgACADKQAANwAAIAJBCGshAiADQQhqIQMgAEEIaiEAIAFBAWsiAQ0ACwsgBEE4SQ0AA0AgACADKQAANwAAIAAgAykACDcACCAAIAMpABA3ABAgACADKQAYNwAYIAAgAykAIDcAICAAIAMpACg3ACggACADKQAwNwAwIAAgAykAODcAOCADQUBrIQMgAEFAayEAIAJBQGoiAkEHSw0ACwsgAkEETwRAIAAgAygAADYAACACQQRrIQIgA0EEaiEDIABBBGohAAsgAkECTwRAIAAgAy8AADsAACACQQJrIQIgA0ECaiEDIABBAmohAAsgAkEBRw0EIAAgAy0AADoAACAAQQFqDwsgACADKQAANwAAIAAgAkEBayIBQQdxQQFqIgJqIQAgAUEISQ0DIAIgA2ohAyABQQN2IgJBAWshBCACQQdxIgEEQANAIAAgAykAADcAACACQQFrIQIgA0EIaiEDIABBCGohACABQQFrIgENAAsLIARBB0kNAwNAIAAgAykAADcAACAAIAMpAAg3AAggACADKQAQNwAQIAAgAykAGDcAGCAAIAMpACA3ACAgACADKQAoNwAoIAAgAykAMDcAMCAAIAMpADg3ADggA0FAayEDIABBQGshACACQQhrIgINAAsMAwsgAy0AAEGBgoQIbAsiASEECyACQQdxIQYCQCACQXhxIgJFDQAgAa0gBK1CIIaEIQggAkEIayIEQQN2QQFqQQdxIgEEQANAIAAgCDcAACACQQhrIQIgAEEIaiEAIAFBAWsiAQ0ACwsgBEE4SQ0AA0AgACAINwA4IAAgCDcAMCAAIAg3ACggACAINwAgIAAgCDcAGCAAIAg3ABAgACAINwAIIAAgCDcAACAAQUBrIQAgAkFAaiICDQALCyAGRQ0AIAAgAyAGEBcgBmohAAsgAA8LIAAgAy0AAToAASACQQJGBEAgAEECag8LIAAgAy0AAjoAAiACQQNGBEAgAEEDag8LIAAgAy0AAzoAAyACQQRGBEAgAEEEag8LIAAgAy0ABDoABCACQQVGBEAgAEEFag8LIAAgAy0ABToABSACQQZGBEAgAEEGag8LIAAgAy0ABjoABiAAQQdqCwMAAQuYBAIBfgF/IABBf3MhAAJAIAJQDQAgAUEDcUUNACABLQAAIABB/wFxc0ECdEGwGWooAgAgAEEIdnMhACACQgF9IgNQQQEgAUEBaiIEQQNxGwRAIAQhASADIQIMAQsgAS0AASAAQf8BcXNBAnRBsBlqKAIAIABBCHZzIQAgAUECaiEEAkAgAkICfSIDUA0AIARBA3FFDQAgAS0AAiAAQf8BcXNBAnRBsBlqKAIAIABBCHZzIQAgAUEDaiEEAkAgAkIDfSIDUA0AIARBA3FFDQAgAS0AAyAAQf8BcXNBAnRBsBlqKAIAIABBCHZzIQAgAkIEfSECIAFBBGohAQwCCyAEIQEgAyECDAELIAQhASADIQILIAJCBFoEQANAIAEoAgAgAHMiAEEGdkH8B3FBsClqKAIAIABB/wFxQQJ0QbAxaigCAHMgAEEOdkH8B3FBsCFqKAIAcyAAQRZ2QfwHcUGwGWooAgBzIQAgAUEEaiEBIAJCBH0iAkIDVg0ACwsCQCACUA0AIAJCAYNQBH4gAgUgAS0AACAAQf8BcXNBAnRBsBlqKAIAIABBCHZzIQAgAUEBaiEBIAJCAX0LIQMgAkIBUQ0AA0AgAS0AASABLQAAIABB/wFxc0ECdEGwGWooAgAgAEEIdnMiAEH/AXFzQQJ0QbAZaigCACAAQQh2cyEAIAFBAmohASADQgJ9IgNCAFINAAsLIABBf3ML6gECAX8BfiMAQSBrIgQkACAEIAA2AhggBCABNgIUIAQgAjYCECAEIAM2AgwgBCAEKAIMEIMBIgA2AggCQCAARQRAIARBADYCHAwBCyMAQRBrIgAgBCgCGDYCDCAAKAIMIgAgACgCMEEBajYCMCAEKAIIIAQoAhg2AgAgBCgCCCAEKAIUNgIEIAQoAgggBCgCEDYCCCAEKAIYIAQoAhBBAEIAQQ4gBCgCFBELACEFIAQoAgggBTcDGCAEKAIIKQMYQgBTBEAgBCgCCEI/NwMYCyAEIAQoAgg2AhwLIAQoAhwhACAEQSBqJAAgAAvqAQEBfyMAQRBrIgEkACABIAA2AgggAUE4EBkiADYCBAJAIABFBEAgASgCCEEOQQAQFCABQQA2AgwMAQsgASgCBEEANgIAIAEoAgRBADYCBCABKAIEQQA2AgggASgCBEEANgIgIAEoAgRBADYCJCABKAIEQQA6ACggASgCBEEANgIsIAEoAgRBATYCMCMAQRBrIgAgASgCBEEMajYCDCAAKAIMQQA2AgAgACgCDEEANgIEIAAoAgxBADYCCCABKAIEQQA6ADQgASgCBEEAOgA1IAEgASgCBDYCDAsgASgCDCEAIAFBEGokACAAC7ABAgF/AX4jAEEgayIDJAAgAyAANgIYIAMgATYCFCADIAI2AhAgAyADKAIQEIMBIgA2AgwCQCAARQRAIANBADYCHAwBCyADKAIMIAMoAhg2AgQgAygCDCADKAIUNgIIIAMoAhRBAEIAQQ4gAygCGBEPACEEIAMoAgwgBDcDGCADKAIMKQMYQgBTBEAgAygCDEI/NwMYCyADIAMoAgw2AhwLIAMoAhwhACADQSBqJAAgAAvDAgEBfyMAQRBrIgMgADYCDCADIAE2AgggAyACNgIEIAMoAggpAwBCAoNCAFIEQCADKAIMIAMoAggpAxA3AxALIAMoAggpAwBCBINCAFIEQCADKAIMIAMoAggpAxg3AxgLIAMoAggpAwBCCINCAFIEQCADKAIMIAMoAggpAyA3AyALIAMoAggpAwBCEINCAFIEQCADKAIMIAMoAggoAig2AigLIAMoAggpAwBCIINCAFIEQCADKAIMIAMoAggoAiw2AiwLIAMoAggpAwBCwACDQgBSBEAgAygCDCADKAIILwEwOwEwCyADKAIIKQMAQoABg0IAUgRAIAMoAgwgAygCCC8BMjsBMgsgAygCCCkDAEKAAoNCAFIEQCADKAIMIAMoAggoAjQ2AjQLIAMoAgwiACADKAIIKQMAIAApAwCENwMAQQALXQEBfyMAQRBrIgIkACACIAA2AgggAiABNgIEAkAgAigCBEUEQCACQQA2AgwMAQsgAiACKAIIIAIoAgQoAgAgAigCBC8BBK0QNjYCDAsgAigCDCEAIAJBEGokACAAC48BAQF/IwBBEGsiAiQAIAIgADYCCCACIAE2AgQCQAJAIAIoAggEQCACKAIEDQELIAIgAigCCCACKAIERjYCDAwBCyACKAIILwEEIAIoAgQvAQRHBEAgAkEANgIMDAELIAIgAigCCCgCACACKAIEKAIAIAIoAggvAQQQWkU2AgwLIAIoAgwhACACQRBqJAAgAAttAQN/IwBBEGsiASQAIAEgADYCDCABQQA2AgggASgCDARAIAECfyABKAIIIQAgASgCDC8BBCECQQAgASgCDCgCACIDRQ0AGiAAIAMgAq1BrJkBKAIAEQQACzYCCAsgASgCCCEAIAFBEGokACAAC58CAQF/IwBBQGoiBSQAIAUgADcDMCAFIAE3AyggBSACNgIkIAUgAzcDGCAFIAQ2AhQgBQJ/IAUpAxhCEFQEQCAFKAIUQRJBABAUQQAMAQsgBSgCJAs2AgQCQCAFKAIERQRAIAVCfzcDOAwBCwJAAkACQAJAAkAgBSgCBCgCCA4DAgABAwsgBSAFKQMwIAUoAgQpAwB8NwMIDAMLIAUgBSkDKCAFKAIEKQMAfDcDCAwCCyAFIAUoAgQpAwA3AwgMAQsgBSgCFEESQQAQFCAFQn83AzgMAQsCQCAFKQMIQgBZBEAgBSkDCCAFKQMoWA0BCyAFKAIUQRJBABAUIAVCfzcDOAwBCyAFIAUpAwg3AzgLIAUpAzghACAFQUBrJAAgAAugAQEBfyMAQSBrIgUkACAFIAA2AhggBSABNgIUIAUgAjsBEiAFIAM6ABEgBSAENgIMIAUgBSgCGCAFKAIUIAUvARIgBS0AEUEBcSAFKAIMEGUiADYCCAJAIABFBEAgBUEANgIcDAELIAUgBSgCCCAFLwESQQAgBSgCDBBNNgIEIAUoAggQFSAFIAUoAgQ2AhwLIAUoAhwhACAFQSBqJAAgAAumAQEBfyMAQSBrIgUkACAFIAA2AhggBSABNwMQIAUgAjYCDCAFIAM2AgggBSAENgIEIAUgBSgCGCAFKQMQIAUoAgxBABA+IgA2AgACQCAARQRAIAVBfzYCHAwBCyAFKAIIBEAgBSgCCCAFKAIALwEIQQh2OgAACyAFKAIEBEAgBSgCBCAFKAIAKAJENgIACyAFQQA2AhwLIAUoAhwhACAFQSBqJAAgAAuNAgEBfyMAQTBrIgMkACADIAA2AiggAyABOwEmIAMgAjYCICADIAMoAigoAjQgA0EeaiADLwEmQYAGQQAQaDYCEAJAIAMoAhBFDQAgAy8BHkEFSQ0AAkAgAygCEC0AAEEBRg0ADAELIAMgAygCECADLwEerRApIgA2AhQgAEUEQAwBCyADKAIUEJgBGiADIAMoAhQQKjYCGCADKAIgEIgBIAMoAhhGBEAgAyADKAIUEDE9AQ4gAyADKAIUIAMvAQ6tEBwgAy8BDkGAEEEAEE02AgggAygCCARAIAMoAiAQIyADIAMoAgg2AiALCyADKAIUEBYLIAMgAygCIDYCLCADKAIsIQAgA0EwaiQAIAAL2hcCAX8BfiMAQYABayIFJAAgBSAANgJ0IAUgATYCcCAFIAI2AmwgBSADOgBrIAUgBDYCZCAFIAUoAmxBAEc6AB0gBUEeQS4gBS0Aa0EBcRs2AigCQAJAIAUoAmwEQCAFKAJsEDEgBSgCKK1UBEAgBSgCZEETQQAQFCAFQn83A3gMAwsMAQsgBSAFKAJwIAUoAiitIAVBMGogBSgCZBBBIgA2AmwgAEUEQCAFQn83A3gMAgsLIAUoAmxCBBAcIQBB+RJB/hIgBS0Aa0EBcRsoAAAgACgAAEcEQCAFKAJkQRNBABAUIAUtAB1BAXFFBEAgBSgCbBAWCyAFQn83A3gMAQsgBSgCdBBQAkAgBS0Aa0EBcUUEQCAFKAJsEBshACAFKAJ0IAA7AQgMAQsgBSgCdEEAOwEICyAFKAJsEBshACAFKAJ0IAA7AQogBSgCbBAbIQAgBSgCdCAAOwEMIAUoAmwQG0H//wNxIQAgBSgCdCAANgIQIAUgBSgCbBAbOwEuIAUgBSgCbBAbOwEsIAUvAS4hASAFLwEsIQIjAEEwayIAJAAgACABOwEuIAAgAjsBLCAAQgA3AgAgAEEANgIoIABCADcCICAAQgA3AhggAEIANwIQIABCADcCCCAAQQA2AiAgACAALwEsQQl2QdAAajYCFCAAIAAvASxBBXZBD3FBAWs2AhAgACAALwEsQR9xNgIMIAAgAC8BLkELdjYCCCAAIAAvAS5BBXZBP3E2AgQgACAALwEuQQF0QT5xNgIAIAAQEyEBIABBMGokACABIQAgBSgCdCAANgIUIAUoAmwQKiEAIAUoAnQgADYCGCAFKAJsECqtIQYgBSgCdCAGNwMgIAUoAmwQKq0hBiAFKAJ0IAY3AyggBSAFKAJsEBs7ASIgBSAFKAJsEBs7AR4CQCAFLQBrQQFxBEAgBUEAOwEgIAUoAnRBADYCPCAFKAJ0QQA7AUAgBSgCdEEANgJEIAUoAnRCADcDSAwBCyAFIAUoAmwQGzsBICAFKAJsEBtB//8DcSEAIAUoAnQgADYCPCAFKAJsEBshACAFKAJ0IAA7AUAgBSgCbBAqIQAgBSgCdCAANgJEIAUoAmwQKq0hBiAFKAJ0IAY3A0gLAn8jAEEQayIAIAUoAmw2AgwgACgCDC0AAEEBcUULBEAgBSgCZEEUQQAQFCAFLQAdQQFxRQRAIAUoAmwQFgsgBUJ/NwN4DAELAkAgBSgCdC8BDEEBcQRAIAUoAnQvAQxBwABxBEAgBSgCdEH//wM7AVIMAgsgBSgCdEEBOwFSDAELIAUoAnRBADsBUgsgBSgCdEEANgIwIAUoAnRBADYCNCAFKAJ0QQA2AjggBSAFLwEgIAUvASIgBS8BHmpqNgIkAkAgBS0AHUEBcQRAIAUoAmwQMSAFKAIkrVQEQCAFKAJkQRVBABAUIAVCfzcDeAwDCwwBCyAFKAJsEBYgBSAFKAJwIAUoAiStQQAgBSgCZBBBIgA2AmwgAEUEQCAFQn83A3gMAgsLIAUvASIEQCAFKAJsIAUoAnAgBS8BIkEBIAUoAmQQigEhACAFKAJ0IAA2AjAgBSgCdCgCMEUEQAJ/IwBBEGsiACAFKAJkNgIMIAAoAgwoAgBBEUYLBEAgBSgCZEEVQQAQFAsgBS0AHUEBcUUEQCAFKAJsEBYLIAVCfzcDeAwCCyAFKAJ0LwEMQYAQcQRAIAUoAnQoAjBBAhA6QQVGBEAgBSgCZEEVQQAQFCAFLQAdQQFxRQRAIAUoAmwQFgsgBUJ/NwN4DAMLCwsgBS8BHgRAIAUgBSgCbCAFKAJwIAUvAR5BACAFKAJkEGU2AhggBSgCGEUEQCAFLQAdQQFxRQRAIAUoAmwQFgsgBUJ/NwN4DAILIAUoAhggBS8BHkGAAkGABCAFLQBrQQFxGyAFKAJ0QTRqIAUoAmQQlQFBAXFFBEAgBSgCGBAVIAUtAB1BAXFFBEAgBSgCbBAWCyAFQn83A3gMAgsgBSgCGBAVIAUtAGtBAXEEQCAFKAJ0QQE6AAQLCyAFLwEgBEAgBSgCbCAFKAJwIAUvASBBACAFKAJkEIoBIQAgBSgCdCAANgI4IAUoAnQoAjhFBEAgBS0AHUEBcUUEQCAFKAJsEBYLIAVCfzcDeAwCCyAFKAJ0LwEMQYAQcQRAIAUoAnQoAjhBAhA6QQVGBEAgBSgCZEEVQQAQFCAFLQAdQQFxRQRAIAUoAmwQFgsgBUJ/NwN4DAMLCwsgBSgCdEH14AEgBSgCdCgCMBCMASEAIAUoAnQgADYCMCAFKAJ0QfXGASAFKAJ0KAI4EIwBIQAgBSgCdCAANgI4AkACQCAFKAJ0KQMoQv////8PUQ0AIAUoAnQpAyBC/////w9RDQAgBSgCdCkDSEL/////D1INAQsgBSAFKAJ0KAI0IAVBFmpBAUGAAkGABCAFLQBrQQFxGyAFKAJkEGg2AgwgBSgCDEUEQCAFLQAdQQFxRQRAIAUoAmwQFgsgBUJ/NwN4DAILIAUgBSgCDCAFLwEWrRApIgA2AhAgAEUEQCAFKAJkQQ5BABAUIAUtAB1BAXFFBEAgBSgCbBAWCyAFQn83A3gMAgsCQCAFKAJ0KQMoQv////8PUQRAIAUoAhAQMiEGIAUoAnQgBjcDKAwBCyAFLQBrQQFxBEAgBSgCECEBIwBBIGsiACQAIAAgATYCGCAAQgg3AxAgACAAKAIYKQMQIAApAxB8NwMIAkAgACkDCCAAKAIYKQMQVARAIAAoAhhBADoAACAAQX82AhwMAQsgACAAKAIYIAApAwgQLDYCHAsgACgCHBogAEEgaiQACwsgBSgCdCkDIEL/////D1EEQCAFKAIQEDIhBiAFKAJ0IAY3AyALIAUtAGtBAXFFBEAgBSgCdCkDSEL/////D1EEQCAFKAIQEDIhBiAFKAJ0IAY3A0gLIAUoAnQoAjxB//8DRgRAIAUoAhAQKiEAIAUoAnQgADYCPAsLIAUoAhAQR0EBcUUEQCAFKAJkQRVBABAUIAUoAhAQFiAFLQAdQQFxRQRAIAUoAmwQFgsgBUJ/NwN4DAILIAUoAhAQFgsCfyMAQRBrIgAgBSgCbDYCDCAAKAIMLQAAQQFxRQsEQCAFKAJkQRRBABAUIAUtAB1BAXFFBEAgBSgCbBAWCyAFQn83A3gMAQsgBS0AHUEBcUUEQCAFKAJsEBYLIAUoAnQpA0hC////////////AFYEQCAFKAJkQQRBFhAUIAVCfzcDeAwBCwJ/IAUoAnQhASAFKAJkIQIjAEEgayIAJAAgACABNgIYIAAgAjYCFAJAIAAoAhgoAhBB4wBHBEAgAEEBOgAfDAELIAAgACgCGCgCNCAAQRJqQYGyAkGABkEAEGg2AggCQCAAKAIIBEAgAC8BEkEHTw0BCyAAKAIUQRVBABAUIABBADoAHwwBCyAAIAAoAgggAC8BEq0QKSIBNgIMIAFFBEAgACgCFEEUQQAQFCAAQQA6AB8MAQsgAEEBOgAHAkACQAJAIAAoAgwQG0EBaw4CAgABCyAAKAIYKQMoQhRUBEAgAEEAOgAHCwwBCyAAKAIUQRhBABAUIAAoAgwQFiAAQQA6AB8MAQsgACgCDEICEBwvAABBwYoBRwRAIAAoAhRBGEEAEBQgACgCDBAWIABBADoAHwwBCwJAAkACQAJAAkAgACgCDBCYAUEBaw4DAAECAwsgAEGBAjsBBAwDCyAAQYICOwEEDAILIABBgwI7AQQMAQsgACgCFEEYQQAQFCAAKAIMEBYgAEEAOgAfDAELIAAvARJBB0cEQCAAKAIUQRVBABAUIAAoAgwQFiAAQQA6AB8MAQsgACgCGCAALQAHQQFxOgAGIAAoAhggAC8BBDsBUiAAKAIMEBtB//8DcSEBIAAoAhggATYCECAAKAIMEBYgAEEBOgAfCyAALQAfQQFxIQEgAEEgaiQAIAFBAXFFCwRAIAVCfzcDeAwBCyAFKAJ0KAI0EJQBIQAgBSgCdCAANgI0IAUgBSgCKCAFKAIkaq03A3gLIAUpA3ghBiAFQYABaiQAIAYLzQEBAX8jAEEQayIDJAAgAyAANgIMIAMgATYCCCADIAI2AgQgAyADQQxqQfydARASNgIAAkAgAygCAEUEQCADKAIEQSE7AQAgAygCCEEAOwEADAELIAMoAgAoAhRB0ABIBEAgAygCAEHQADYCFAsgAygCBCADKAIAKAIMIAMoAgAoAhRBCXQgAygCACgCEEEFdGpB4L8Ca2o7AQAgAygCCCADKAIAKAIIQQt0IAMoAgAoAgRBBXRqIAMoAgAoAgBBAXVqOwEACyADQRBqJAALgwMBAX8jAEEgayIDJAAgAyAAOwEaIAMgATYCFCADIAI2AhAgAyADKAIUIANBCGpBwABBABBGIgA2AgwCQCAARQRAIANBADYCHAwBCyADKAIIQQVqQf//A0sEQCADKAIQQRJBABAUIANBADYCHAwBCyADQQAgAygCCEEFaq0QKSIANgIEIABFBEAgAygCEEEOQQAQFCADQQA2AhwMAQsgAygCBEEBEJcBIAMoAgQgAygCFBCIARAgIAMoAgQgAygCDCADKAIIEEACfyMAQRBrIgAgAygCBDYCDCAAKAIMLQAAQQFxRQsEQCADKAIQQRRBABAUIAMoAgQQFiADQQA2AhwMAQsgAyADLwEaAn8jAEEQayIAIAMoAgQ2AgwCfiAAKAIMLQAAQQFxBEAgACgCDCkDEAwBC0IAC6dB//8DcQsCfyMAQRBrIgAgAygCBDYCDCAAKAIMKAIEC0GABhBSNgIAIAMoAgQQFiADIAMoAgA2AhwLIAMoAhwhACADQSBqJAAgAAu0AgEBfyMAQTBrIgMkACADIAA2AiggAyABNwMgIAMgAjYCHAJAIAMpAyBQBEAgA0EBOgAvDAELIAMgAygCKCkDECADKQMgfDcDCAJAIAMpAwggAykDIFoEQCADKQMIQv////8AWA0BCyADKAIcQQ5BABAUIANBADoALwwBCyADIAMoAigoAgAgAykDCKdBBHQQTCIANgIEIABFBEAgAygCHEEOQQAQFCADQQA6AC8MAQsgAygCKCADKAIENgIAIAMgAygCKCkDCDcDEANAIAMpAxAgAykDCFpFBEAgAygCKCgCACADKQMQp0EEdGoQvQEgAyADKQMQQgF8NwMQDAELCyADKAIoIAMpAwgiATcDECADKAIoIAE3AwggA0EBOgAvCyADLQAvQQFxIQAgA0EwaiQAIAALzAEBAX8jAEEgayICJAAgAiAANwMQIAIgATYCDCACQTAQGSIBNgIIAkAgAUUEQCACKAIMQQ5BABAUIAJBADYCHAwBCyACKAIIQQA2AgAgAigCCEIANwMQIAIoAghCADcDCCACKAIIQgA3AyAgAigCCEIANwMYIAIoAghBADYCKCACKAIIQQA6ACwgAigCCCACKQMQIAIoAgwQkAFBAXFFBEAgAigCCBAkIAJBADYCHAwBCyACIAIoAgg2AhwLIAIoAhwhASACQSBqJAAgAQvWAgEBfyMAQSBrIgMkACADIAA2AhggAyABNgIUIAMgAjYCECADIANBDGpCBBApNgIIAkAgAygCCEUEQCADQX82AhwMAQsDQCADKAIUBEAgAygCFCgCBCADKAIQcUGABnEEQCADKAIIQgAQLBogAygCCCADKAIULwEIEB0gAygCCCADKAIULwEKEB0CfyMAQRBrIgAgAygCCDYCDCAAKAIMLQAAQQFxRQsEQCADKAIYQQhqQRRBABAUIAMoAggQFiADQX82AhwMBAsgAygCGCADQQxqQgQQNkEASARAIAMoAggQFiADQX82AhwMBAsgAygCFC8BCgRAIAMoAhggAygCFCgCDCADKAIULwEKrRA2QQBIBEAgAygCCBAWIANBfzYCHAwFCwsLIAMgAygCFCgCADYCFAwBCwsgAygCCBAWIANBADYCHAsgAygCHCEAIANBIGokACAAC2gBAX8jAEEQayICIAA2AgwgAiABNgIIIAJBADsBBgNAIAIoAgwEQCACKAIMKAIEIAIoAghxQYAGcQRAIAIgAigCDC8BCiACLwEGQQRqajsBBgsgAiACKAIMKAIANgIMDAELCyACLwEGC/ABAQF/IwBBEGsiASQAIAEgADYCDCABIAEoAgw2AgggAUEANgIEA0AgASgCDARAAkACQCABKAIMLwEIQfXGAUYNACABKAIMLwEIQfXgAUYNACABKAIMLwEIQYGyAkYNACABKAIMLwEIQQFHDQELIAEgASgCDCgCADYCACABKAIIIAEoAgxGBEAgASABKAIANgIICyABKAIMQQA2AgAgASgCDBAi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IAFBADYCrAEMAQsgASABKAKkARAyNwMwAkAgASgClAFBBHFFDQAgASkDMCABKQM4fEIMfCABKQOYASABKQMYfFENACABKAKQAUEVQQAQFCABLQAXQQFxBEAgASgCpAEQFgsgAUEANgKsAQwBCyABKAKkAUIEEBwaIAEgASgCpAEQKjYCDCABIAEoAqQBECo2AgQgASgCEEH//wNGBEAgASABKAIMNgIQCyABKAIIQf//A0YEQCABIAEoAgQ2AggLAkAgASgClAFBBHFFDQAgASgCCCABKAIERgRAIAEoAhAgASgCDEYNAQsgASgCkAFBFUEAEBQgAS0AF0EBcQRAIAEoAqQBEBYLIAFBADYCrAEMAQsCQCABKAIQRQRAIAEoAghFDQELIAEoApABQQFBABAUIAEtABdBAXEEQCABKAKkARAWCyABQQA2AqwBDAELIAEgASgCpAEQMjcDKCABIAEoAqQBEDI3AyAgASkDKCABKQMgUgRAIAEoApABQQFBABAUIAEtABdBAXEEQCABKAKkARAWCyABQQA2AqwBDAELIAEgASgCpAEQMjcDMCABIAEoAqQBEDI3A4ABAn8jAEEQayIFIAEoAqQBNgIMIAUoAgwtAABBAXFFCwRAIAEoApABQRRBABAUIAEtABdBAXEEQCABKAKkARAWCyABQQA2AqwBDAELIAEtABdBAXEEQCABKAKkARAWCwJAIAEpA4ABQv///////////wBYBEAgASkDgAEgASkDgAEgASkDMHxYDQELIAEoApABQQRBFhAUIAFBADYCrAEMAQsgASkDgAEgASkDMHwgASkDmAEgASkDOHxWBEAgASgCkAFBFUEAEBQgAUEANgKsAQwBCwJAIAEoApQBQQRxRQ0AIAEpA4ABIAEpAzB8IAEpA5gBIAEpAzh8UQ0AIAEoApABQRVBABAUIAFBADYCrAEMAQsgASkDKCABKQMwQi6AVgRAIAEoApABQRVBABAUIAFBADYCrAEMAQsgASABKQMoIAEoApABEJEBIgU2AowBIAVFBEAgAUEANgKsAQwBCyABKAKMAUEBOgAsIAEoAowBIAEpAzA3AxggASgCjAEgASkDgAE3AyAgASABKAKMATYCrAELIAEoAqwBIQUgAUGwAWokACAAIAU2AlAMAQsgACgCZCAAKQMwECwaIAAoAmQhBSAAKQNY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A0AgACgCACICLAAAIQMgACACQQFqNgIAIAEgA2pBMGshASACLAABQTBrQQpPDQEgAUEKbCEBDAALAAsgAQu7AgACQCABQRRLDQACQAJAAkACQAJAAkACQAJAAkACQCABQQlrDgoAAQIDBAUGBwgJCgsgAiACKAIAIgFBBGo2AgAgACABKAIANgIADwsgAiACKAIAIgFBBGo2AgAgACABNAIANwMADwsgAiACKAIAIgFBBGo2AgAgACABNQIANwMADwsgAiACKAIAQQdqQXhxIgFBCGo2AgAgACABKQMANwMADwsgAiACKAIAIgFBBGo2AgAgACABMgEANwMADwsgAiACKAIAIgFBBGo2AgAgACABMwEANwMADwsgAiACKAIAIgFBBGo2AgAgACABMAAANwMADwsgAiACKAIAIgFBBGo2AgAgACABMQAANwMADwsgAiACKAIAQQdqQXhxIgFBCGo2AgAgACABKwMAOQMADwsgACACQTQRBgALC38CAX8BfiAAvSIDQjSIp0H/D3EiAkH/D0cEfCACRQRAIAEgAEQAAAAAAAAAAGEEf0EABSAARAAAAAAAAPBDoiABEKoBIQAgASgCAEFAags2AgAgAA8LIAEgAkH+B2s2AgAgA0L/////////h4B/g0KAgICAgICA8D+EvwUgAAsLmwIAIABFBEBBAA8LAn8CQCAABH8gAUH/AE0NAQJAQdSbASgCACgCAEUEQCABQYB/cUGAvwNGDQMMAQsgAUH/D00EQCAAIAFBP3FBgAFyOgABIAAgAUEGdkHAAXI6AABBAgwECyABQYCwA09BACABQYBAcUGAwANHG0UEQCAAIAFBP3FBgAFyOgACIAAgAUEMdkHgAXI6AAAgACABQQZ2QT9xQYABcjoAAUEDDAQLIAFBgIAEa0H//z9NBEAgACABQT9xQYABcjoAAyAAIAFBEnZB8AFyOgAAIAAgAUEGdkE/cUGAAXI6AAIgACABQQx2QT9xQYABcjoAAUEEDAQLC0H4nQFBGTYCAEF/BUEBCwwBCyAAIAE6AABBAQsL4wEBAn8gAkEARyEDAkACQAJAIABBA3FFDQAgAkUNACABQf8BcSEEA0AgAC0AACAERg0CIAJBAWsiAkEARyEDIABBAWoiAEEDcUUNASACDQALCyADRQ0BCwJAIAAtAAAgAUH/AXFGDQAgAkEE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AwwBCyAAIAItAAA6AAEgA0ECayEGIARBAmshBSACQQFqIQICQCAAQQJqIgdBB3FFDQAgBUUNACAAIAItAAA6AAIgA0EDayEGIARBA2shBSACQQFqIQICQCAAQQNqIgdBB3FFDQAgBUUNACAAIAItAAA6AAMgA0EEayEGIARBBGshBSACQQFqIQICQCAAQQRqIgdBB3FFDQAgBUUNACAAIAItAAA6AAQgA0EFayEGIARBBWshBSACQQFqIQICQCAAQQVqIgdBB3FFDQAgBUUNACAAIAItAAA6AAUgA0EGayEGIARBBmshBSACQQFqIQICQCAAQQZqIgdBB3FFDQAgBUUNACAAIAItAAA6AAYgA0EHayEGIARBB2shBSACQQFqIQICQCAAQQdqIgdBB3FFDQAgBUUNACAAIAItAAA6AAcgA0EIayEDIARBCGshBCAAQQhqIQAgAkEBaiECDAYLIAchACAFIQQgBiEDDAULIAchACAFIQQgBiEDDAQLIAchACAFIQQgBiEDDAMLIAchACAFIQQgBiEDDAILIAchACAFIQQgBiEDDAELIAchACAFIQQgBiEDCwJAIANBF00EQCAERQ0BIARBAWshASAEQQdxIgMEQANAIAAgAi0AADoAACAEQQFrIQQgAEEBaiEAIAJBAWohAiADQQFrIgMNAAsLIAFBB0kNAQNAIAAgAi0AADoAACAAIAItAAE6AAEgACACLQACOgACIAAgAi0AAzoAAyAAIAItAAQ6AAQgACACLQAFOgAFIAAgAi0ABjoABiAAIAItAAc6AAcgAEEIaiEAIAJBCGohAiAEQQhrIgQNAAsMAQsgACABIAQQfyEACyAAC2wBA38CQCABKAIAIgNBB0sNACADIAIoAgBPDQAgACADayEEA0AgACAEKQAANwAAIAIgAigCACABKAIAIgVrNgIAIAEgASgCAEEBdCIDNgIAIAAgBWohACADQQdLDQEgAyACKAIASQ0ACwsgAAu8AgEBfwJAIAMgAGtBAWoiAyACIAIgA0sbIgJBCEkNACACQQhrIgRBA3ZBAWpBB3EiAwRAA0AgACABKQAANwAAIAJBCGshAiABQQhqIQEgAEEIaiEAIANBAWsiAw0ACwsgBEE4SQ0AA0AgACABKQAANwAAIAAgASkACDcACCAAIAEpABA3ABAgACABKQAYNwAYIAAg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KAKgAUUEQCABIAEoAqQBNgKsAQwBCyABIAEoAqABEC4CfyABKAKkAQRAIAEoAqQBEC5BAmoMAQtBAAtqQQFqEBkiADYCHCAARQRAIAFByBMoAgA2AqwBDAELIAEoAhwhAAJ/IAEoAqQBBEAgASgCpAEMAQtBghMLIQNB5xJBghMgASgCpAEbIQIgASABKAKgATYCCCABIAI2AgQgASADNgIAIABBvgogARBxIAEoAqgBIAEoAhw2AgggASABKAIcNgKsAQsgASgCrAEhACABQbABaiQAIAALMwEBfyAAKAIUIgMgASACIAAoAhAgA2siASABIAJLGyIBEBcaIAAgACgCFCABajYCFCACC48FAgZ+AX8gASABKAIAQQ9qQXBxIgFBEGo2AgAgAAJ8IAEpAwAhAyABKQMIIQYjAEEgayIIJAACQCAGQv///////////wCDIgRCgICAgICAwIA8fSAEQoCAgICAgMD/wwB9VARAIAZCBIYgA0I8iIQhBCADQv//////////D4MiA0KBgICAgICAgAhaBEAgBEKBgICAgICAgMAAfCECDAILIARCgICAgICAgIBAfSECIANCgICAgICAgIAIhUIAUg0BIAIgBEIBg3whAgwBCyADUCAEQoCAgICAgMD//wBUIARCgICAgICAwP//AFEbRQRAIAZCBIYgA0I8iIRC/////////wODQoCAgICAgID8/wCEIQIMAQtCgICAgICAgPj/ACECIARC////////v//DAFYNAEIAIQIgBEIwiKciAEGR9wBJDQAgAyECIAZC////////P4NCgICAgICAwACEIgUhBwJAIABBgfcAayIBQcAAcQRAIAIgAUFAaq2GIQdCACECDAELIAFFDQAgByABrSIEhiACQcAAIAFrrYiEIQcgAiAEhiECCyAIIAI3AxAgCCAHNwMYAkBBgfgAIABrIgBBwABxBEAgBSAAQUBqrYghA0IAIQUMAQsgAEUNACAFQcAAIABrrYYgAyAArSICiIQhAyAFIAKIIQULIAggAzcDACAIIAU3AwggCCkDCEIEhiAIKQMAIgNCPIiEIQIgCCkDECAIKQMYhEIAUq0gA0L//////////w+DhCIDQoGAgICAgICACFoEQCACQgF8IQIMAQsgA0KAgICAgICAgAiFQgBSDQAgAkIBgyACfCECCyAIQSBq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NgIUIA8gAjYCECAPIA8oAhg2AgwgDygCDCAPKAIQKQMAQv////8PVgR+Qv////8PBSAPKAIQKQMACz4CICAPKAIMIA8oAhQ2AhwCQCAPKAIMLQAEQQFxBEAgDwJ/QQRBACAPKAIMLQAMQQFxGyEKQQAhAkF+IQECQAJAAkAgDygCDEEQaiILRQ0AIAsoAiBFDQAgCygCJEUNACALKAIcIgNFDQAgAygCACALRw0AAkACQCADKAIgIgRBOWsOOQECAgICAgICAgICAgECAgIBAgICAgICAgICAgICAgICAgIBAgICAgICAgICAgIBAgICAgICAgICAQALIARBmgVGDQAgBEEqRw0BCyAKQQVLDQACQAJAIAsoAgxFDQAgCygCBCIABEAgCygCAEUNAQsgBEGaBUcNASAKQQRGDQELIAtB8PEAKAIANgIYQX4MBAsgCygCEEUNASADKAIkIQEgAyAKNgIkAkAgAygCEARAIAMQJwJAIAsoAhAiBCADKAIQIgIgAiAESxsiAEUNACALKAIMIAMoAgggABAXGiALIAsoAgwgAGo2AgwgAyADKAIIIABqNgIIIAsgCygCFCAAajYCFCALIAsoAhAgAGsiBDYCECADIAMoAhAgAGsiAjYCECACDQAgAyADKAIENgIIQQAhAgsgBARAIAMoAiAhBAwCCwwECyAADQAgCkEBdEF3QQAgCkEEShtqIAFBAXRBd0EAIAFBBEobakoNACAKQQRGDQAMAgsCQAJAAkACQAJAIARBKkcEQCAEQZoFRw0BIAsoAgRFDQMMBwsgAygCFEUEQCADQfEANgIgDAILIAMoAjRBDHRBgPABayEBAkAgAygCfEECTg0AIAMoAngiAEEBTA0AIABBBUwEQCABQcAAciEBDAELQYABQcABIABBBkYbIAFyIQELIAMgAkEBajYCECADKAIEIAJqIAFBIHIgASADKAJkGyIBQQh2OgAAIAMgAygCECIAQQFqNgIQIAAgAygCBGogAUEfcCABckEfczoAACADKAJkBEAgAyALKAIwEMwBCyALQQE2AjAgA0HxADYCICALEB4gAygCEA0HIAMoAiAhBAsCQAJAAkACQCAEQTlGBH8gAygCAEEANgIwIAMgAygCECIAQQFqNgIQIAAgAygCBGpBHzoAACADIAMoAhAiAEEBajYCECAAIAMoAgRqQYsBOgAAIAMgAygCECIAQQFqNgIQIAAgAygCBGpBCDoAAAJAIAMoAhwiAEUEQCADQQAQXCADIAMoAhAiAEEBajYCECAAIAMoAgRqQQA6AABBAiEBIAMoAngiAEEJRwRAQQQgAEECSEECdCADKAJ8QQFKGyEBCyADIAMoAhAiAEEBajYCECAAIAMoAgRqIAE6AAAgAyADKAIQIgBBAWo2AhAgACADKAIEakEDOgAAIANB8QA2AiAgCxAeIAMoAhBFDQEMDQsgACgCJCEIIAAoAhwhBiAAKAIQIQwgACgCLCEEIAAoAgAhAiADIAMoAhAiAEEBajYCEEECIQEgACADKAIEaiAEQQBHQQF0IAJBAEdyIAxBAEdBAnRyIAZBAEdBA3RyIAhBAEdBBHRyOgAAIAMgAygCHCgCBBBcIAMoAngiAEEJRwRAQQQgAEECSEECdCADKAJ8QQFKGyEBCyADIAMoAhAiAEEBajYCECAAIAMoAgRqIAE6AAAgAygCHCgCDCEBIAMgAygCECIAQQFqNgIQIAAgAygCBGogAToAACADKAIcIgAoAhAEfyAAKAIUIQEgAyADKAIQIgBBAWo2AhAgACADKAIEaiABOgAAIAMgAygCECIAQQFqNgIQIAAgAygCBGogAUEIdjoAACADKAIcBSAACygCLARAIAsCfyALKAIwIQIgAygCECEBQQAgAygCBCIARQ0AGiACIAAgAa1BrJkBKAIAEQQACzYCMAsgA0HFADYCICADQQA2AhgMAgsgAygCIAUgBAtBxQBrDiMABAQEAQQEBAQEBAQEBAQEBAQEBAQEAgQEBAQEBAQEBAQEAwQLIAMoAhwiACgCECIEBEAgAygCDCICIAMoAhAiASAALwEUIAMoAhgiB2siBmpJBEADQCADKAIEIAFqIAQgB2ogAiABayIMEBcaIAMgAygCDCIENgIQAkAgAygCHCgCLEUNACABIARPDQAgCwJ/IAsoAjAhAkEAIAMoAgQgAWoiAEUNABogAiAAIAQgAWutQayZASgCABEEAAs2AjALIAMgAygCGCAMajYCGCALKAIcIgIQJwJAIAsoAhAiASACKAIQIgAgACABSxsiAEUNACALKAIMIAIoAgggABAXGiALIAsoAgwgAGo2AgwgAiACKAIIIABqNgIIIAsgCygCFCAAajYCFCALIAsoAhAgAGs2AhAgAiACKAIQIABrIgA2AhAgAA0AIAIgAigCBDYCCAsgAygCEA0MIAMoAhghByADKAIcKAIQIQRBACEBIAYgDGsiBiADKAIMIgJLDQALCyADKAIEIAFqIAQgB2ogBhAXGiADIAMoAhAgBmoiBDYCEAJAIAMoAhwoAixFDQAgASAETw0AIAsCfyALKAIwIQJBACADKAIEIAFqIgBFDQAaIAIgACAEIAFrrUGsmQEoAgARBAALNgIwCyADQQA2AhgLIANByQA2AiALIAMoAhwoAhwEQCADKAIQIgEhBgNAAkAgASADKAIMRw0AAkAgAygCHCgCLEUNACABIAZNDQAgCwJ/IAsoAjAhAkEAIAMoAgQgBmoiAEUNABogAiAAIAEgBmutQayZASgCABEEAAs2AjALIAsoAhwiAhAnAkAgCygCECIBIAIoAhAiACAAIAFLGyIARQ0AIAsoAgwgAigCCCAAEBcaIAsgCygCDCAAajYCDCACIAIoAgggAGo2AgggCyALKAIUIABqNgIUIAsgCygCECAAazYCECACIAIoAhAgAGsiADYCECAADQAgAiACKAIENgIIC0EAIQFBACEGIAMoAhBFDQAMCwsgAygCHCgCHCECIAMgAygCGCIAQQFqNgIYIAAgAmotAAAhACADIAFBAWo2AhAgAygCBCABaiAAOgAAIAAEQCADKAIQIQEMAQsLAkAgAygCHCgCLEUNACADKAIQIgIgBk0NACALAn8gCygCMCEBQQAgAygCBCAGaiIARQ0AGiABIAAgAiAGa61BrJkBKAIAEQQACzYCMAsgA0EANgIYCyADQdsANgIgCwJAIAMoAhwoAiRFDQAgAygCECIBIQYDQAJAIAEgAygCDEcNAAJAIAMoAhwoAixFDQAgASAGTQ0AIAsCfyALKAIwIQJBACADKAIEIAZqIgBFDQAaIAIgACABIAZrrUGsmQEoAgARBAALNgIwCyALKAIcIgIQJwJAIAsoAhAiASACKAIQIgAgACABSxsiAEUNACALKAIMIAIoAgggABAXGiALIAsoAgwgAGo2AgwgAiACKAIIIABqNgIIIAsgCygCFCAAajYCFCALIAsoAhAgAGs2AhAgAiACKAIQIABrIgA2AhAgAA0AIAIgAigCBDYCCAtBACEBQQAhBiADKAIQRQ0ADAoLIAMoAhwoAiQhAiADIAMoAhgiAEEBajYCGCAAIAJqLQAAIQAgAyABQQFqNgIQIAMoAgQgAWogADoAACAABEAgAygCECEBDAELCyADKAIcKAIsRQ0AIAMoAhAiAiAGTQ0AIAsCfyALKAIwIQFBACADKAIEIAZqIgBFDQAaIAEgACACIAZrrUGsmQEoAgARBAALNgIwCyADQecANgIgCwJAIAMoAhwoAiwEQCADKAIMIAMoAhAiAUECakkEQCALEB4gAygCEA0CQQAhAQsgCygCMCECIAMgAUEBajYCECADKAIEIAFqIAI6AAAgAyADKAIQIgBBAWo2AhAgACADKAIEaiACQQh2OgAAIAMoAgBBADYCMAsgA0HxADYCICALEB4gAygCEEUNAQwHCwwGCyALKAIEDQELIAMoAjwNACAKRQ0BIAMoAiBBmgVGDQELAn8gAygCeCIARQRAIAMgChDLAQwBCwJAAkACQCADKAJ8QQJrDgIAAQILAn8CQANAAkAgAygCPA0AIAMQRSADKAI8DQAgCg0CQQAMAwsgAygCSCADKAJkai0AACEBIAMgAygClC0iAEEBajYClC0gACADKAKQLWpBADoAACADIAMoApQtIgBBAWo2ApQtIAAgAygCkC1qQQA6AAAgAyADKAKULSIAQQFqNgKULSAAIAMoApAtaiABOgAAIAMgAUECdGoiACAALwGIAUEBajsBiAEgAyADKAI8QQFrNgI8IAMgAygCZEEBaiIANgJkIAMoApQtIAMoApgtRw0AIAMgAygCVCIBQQBOBH8gAygCSCABagVBAAsgACABa0EAECYgAyADKAJkNgJUIAMoAgAiBCgCHCICECcCQCAEKAIQIgEgAigCECIAIAAgAUsbIgBFDQAgBCgCDCACKAIIIAAQFxogBCAEKAIMIABqNgIMIAIgAigCCCAAajYCCCAEIAQoAhQgAGo2AhQgBCAEKAIQIABrNgIQIAIgAigCECAAayIANgIQIAANACACIAIoAgQ2AggLIAMoAgAoAhANAAtBAAwBCyADQQA2AqgtIApBBEYEQCADIAMoAlQiAEEATgR/IAMoAkggAGoFQQALIAMoAmQgAGtBARAmIAMgAygCZDYCVCADKAIAIgQoAhwiAhAnAkAgBCgCECIBIAIoAhAiACAAIAFLGyIARQ0AIAQoAgwgAigCCCAAEBcaIAQgBCgCDCAAajYCDCACIAIoAgggAGo2AgggBCAEKAIUIABqNgIUIAQgBCgCECAAazYCECACIAIoAhAgAGsiADYCECAADQAgAiACKAIENgIIC0EDQQIgAygCACgCEBsMAQsCQCADKAKULUUNACADIAMoAlQiAEEATgR/IAMoAkggAGoFQQALIAMoAmQgAGtBABAmIAMgAygCZDYCVCADKAIAIgQoAhwiAhAnAkAgBCgCECIBIAIoAhAiACAAIAFLGyIARQ0AIAQoAgwgAigCCCAAEBcaIAQgBCgCDCAAajYCDCACIAIoAgggAGo2AgggBCAEKAIUIABqNgIUIAQgBCgCECAAazYCECACIAIoAhAgAGsiADYCECAADQAgAiACKAIENgIICyADKAIAKAIQDQBBAAwBC0EBCwwCCwJ/AkADQAJAAkACQAJAIAMoAjwiBkGCAksNACADEEUCQCADKAI8IgZBggJLDQAgCg0AQQAMBwsgBkUNBSAGQQJLDQAgAygCZCEIDAELIAMoAmQiCEUEQEEAIQgMAQsgAygCSCAIaiIMQQFrIgAtAAAiCSAMLQAARw0AIAkgAC0AAkcNACAJIAAtAANHDQAgDEGCAmohBEF/IQECQAJAAkACQAJAAkADQCABIAxqIgItAAQgCUYEQCAJIAItAAVHDQIgCSACLQAGRw0DIAkgAi0AB0cNBCAJIAwgAUEIaiIAaiIHLQAARw0HIAkgAi0ACUcNBSAJIAItAApHDQYgCSACQQtqIgctAABHDQcgAUH3AUghAiAAIQEgAg0BDAcLCyACQQRqIQcMBQsgAkEFaiEHDAQLIAJBBmohBwwDCyACQQdqIQcMAgsgAkEJaiEHDAELIAJBCmohBwsgBiAHIARrQYICaiIAIAAgBksbIgFBAksNAQsgAygCSCAIai0AACEBIAMgAygClC0iAEEBajYClC0gACADKAKQLWpBADoAACADIAMoApQtIgBBAWo2ApQtIAAgAygCkC1qQQA6AAAgAyADKAKULSIAQQFqNgKULSAAIAMoApAtaiABOgAAIAMgAUECdGoiACAALwGIAUEBajsBiAEgAyADKAI8QQFrNgI8IAMgAygCZEEBaiIINgJkDAELIAMgAygClC0iAEEBajYClC0gACADKAKQLWpBAToAACADIAMoApQtIgBBAWo2ApQtIAAgAygCkC1qQQA6AAAgAyADKAKULSIAQQFqNgKULSAAIAMoApAtaiABQQNrOgAAIAMgAygCpC1BAWo2AqQtIAFBreoAai0AAEECdCADakGMCWoiACAALwEAQQFqOwEAIANBsOYALQAAQQJ0akH8EmoiACAALwEAQQFqOwEAIAMgAygCPCABazYCPCADIAMoAmQgAWoiCDYCZAsgAygClC0gAygCmC1HDQAgAyADKAJUIgBBAE4EfyADKAJIIABqBUEACyAIIABrQQAQJiADIAMoAmQ2AlQgAygCACIEKAIcIgIQJwJAIAQoAhAiASACKAIQIgAgACABSxsiAEUNACAEKAIMIAIoAgggABAXGiAEIAQoAgwgAGo2AgwgAiACKAIIIABqNgIIIAQgBCgCFCAAajYCFCAEIAQoAhAgAGs2AhAgAiACKAIQIABrIgA2AhAgAA0AIAIgAigCBDYCCAsgAygCACgCEA0AC0EADAELIANBADYCqC0gCkEERgRAIAMgAygCVCIAQQBOBH8gAygCSCAAagVBAAsgAygCZCAAa0EBECYgAyADKAJkNgJUIAMoAgAiBCgCHCICECcCQCAEKAIQIgEgAigCECIAIAAgAUsbIgBFDQAgBCgCDCACKAIIIAAQFxogBCAEKAIMIABqNgIMIAIgAigCCCAAajYCCCAEIAQoAhQgAGo2AhQgBCAEKAIQIABrNgIQIAIgAigCECAAayIANgIQIAANACACIAIoAgQ2AggLQQNBAiADKAIAKAIQGwwBCwJAIAMoApQtRQ0AIAMgAygCVCIAQQBOBH8gAygCSCAAagVBAAsgAygCZCAAa0EAECYgAyADKAJkNgJUIAMoAgAiBCgCHCICECcCQCAEKAIQIgEgAigCECIAIAAgAUsbIgBFDQAgBCgCDCACKAIIIAAQFxogBCAEKAIMIABqNgIMIAIgAigCCCAAajYCCCAEIAQoAhQgAGo2AhQgBCAEKAIQIABrNgIQIAIgAigCECAAayIANgIQIAANACACIAIoAgQ2AggLIAMoAgAoAhANAEEADAELQQELDAELIAMgCiAAQQxsQbjbAGooAgARAgALIgBBfnFBAkYEQCADQZoFNgIgCyAAQX1xRQRAQQAhASALKAIQDQIMBAsgAEEBRw0AAkACQAJAIApBAWsOBQABAQECAQsgAykDuC0hJQJ/An4gAygCwC0iAUED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AgQgAygCBEEANgIUIAMoAgRBADYCECADKAIEQQA2AiAgAygCBEEANgIcAkAgAygCBC0ABEEBcQRAIAMCfyADKAIEQRBqIQAgAygCBCgCCCEBQXohAgJAQY8NLQAAQTFHDQBBfiECIABFDQAgAEEANgIYIAAoAiAiBEUEQCAAQQA2AiggAEECNgIgQQIhBAsgACgCJEUEQCAAQQM2AiQLQQYgASABQX9GGyIFQQBIDQAgBUEJSg0AQXwhAiAAKAIoQQFB8C0gBBEAACIBRQ0AIAAgATYCHCABIAA2AgAgAUENQQ8gBUEBRhsiAjYCNCABQoCAgICgBTcCHCABQQA2AhQgAUEBIAJ0IgI2AjAgASACQQFrNgI4IAEgACgCKCACQQIgACgCIBEAADYCSCABIAAoAiggASgCMEECIAAoAiARAAAiAjYCTCACQQAgASgCMEEBdBAvIAAoAihBgIAEQQIgACgCIBEAACECIAFBgIACNgKMLSABQQA2AkAgASACNgJQIAEgACgCKEGAgAJBBCAAKAIgEQAAIgI2AgQgASABKAKMLSIEQQJ0NgIMAkACQCABKAJIRQ0AIAEoAkxFDQAgASgCUEUNACACDQELIAFBmgU2AiAgAEH48QAoAgA2AhggABDNARpBfAwCCyABQQA2AnwgASAFNgJ4IAFCADcDKCABIAIgBGo2ApAtIAEgBEEDbEEDazYCmC0Cf0F+IQICQCAARQ0AIAAoAiBFDQAgACgCJEUNACAAKAIcIgFFDQAgASgCACAARw0AAkACQCABKAIgIgVBOWsOOQECAgICAgICAgICAgECAgIBAgICAgICAgICAgICAgICAgIBAgICAgICAgICAgIBAgICAgICAgICAQALIAVBmgVGDQAgBUEqRw0BCyAAQQI2AiwgAEEANgIIIABCADcCFCABQQA2AhAgASABKAIENgIIIAEoAhQiAkF/TARAIAFBACACayICNgIUCyABQTlBKiACQQJGGzYCIAJAIAJBAkYEQCABKAIAQQA2AjAMAQsgAEEBNgIwCyABQX42AiQgAUEANgLALSABQgA3A7gtIAFBrBZqQdDuADYCACABIAFB8BRqNgKkFiABQaAWakG87gA2AgAgASABQfwSajYCmBYgAUGUFmpBqO4ANgIAIAEgAUGIAWo2AowWIAEQwQFBACECCyACRQsE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cgBJbnRlcm5hbCBlcnJvcgBTZWVrIGVycm9yAFdyaXRlIGVycm9yAGZpbGUgZXJyb3IAUmVhZCBlcnJvcgBabGliIGVycm9yAGRhdGEgZXJyb3IAQ1JDIGVycm9yAGluY29tcGF0aWJsZSB2ZXJzaW9uAG5hbgAvZGV2L3VyYW5kb20AaW52YWxpZCBjb2RlIC0tIG1pc3NpbmcgZW5kLW9mLWJsb2NrAGluY29ycmVjdCBoZWFkZXIgY2hlY2sAaW5jb3JyZWN0IGxlbmd0aCBjaGVjawBpbmNvcnJlY3QgZGF0YSBjaGVjawBpbnZhbGlkIGRpc3RhbmNlIHRvbyBmYXIgYmFjawBoZWFkZXIgY3JjIG1pc21hdGNoADEuMi4xMS56bGliLW5nAGluZgBpbnZhbGlkIHdpbmRvdyBzaXplAFJlYWQtb25seSBhcmNoaXZlAE5vdCBhIHppcCBhcmNoaXZlAFJlc291cmNlIHN0aWxsIGluIHVzZQBNYWxsb2MgZmFpbHVyZQBpbnZhbGlkIGJsb2NrIHR5cGUARmFpbHVyZSB0byBjcmVhdGUgdGVtcG9yYXJ5IGZpbGUAQ2FuJ3Qgb3BlbiBmaWxlAE5vIHN1Y2ggZmlsZQBQcmVtYXR1cmUgZW5kIG9mIGZpbGUAQ2FuJ3QgcmVtb3ZlIGZpbGUAaW52YWxpZCBsaXRlcmFsL2xlbmd0aCBjb2RlAGludmFsaWQgZGlzdGFuY2UgY29kZQB1bmtub3duIGNvbXByZXNzaW9uIG1ldGhvZABzdHJlYW0gZW5kAENvbXByZXNzZWQgZGF0YSBpbnZhbGlkAE11bHRpLWRpc2sgemlwIGFyY2hpdmVzIG5vdCBzdXBwb3J0ZWQAT3BlcmF0aW9uIG5vdCBzdXBwb3J0ZWQARW5jcnlwdGlvbiBtZXRob2Qgbm90IHN1cHBvcnRlZABDb21wcmVzc2lvbiBtZXRob2Qgbm90IHN1cHBvcnRlZABFbnRyeSBoYXMgYmVlbiBkZWxldGVkAENvbnRhaW5pbmcgemlwIGFyY2hpdmUgd2FzIGNsb3NlZABDbG9zaW5nIHppcCBhcmNoaXZlIGZhaWxlZABSZW5hbWluZyB0ZW1wb3JhcnkgZmlsZSBmYWlsZWQARW50cnkgaGFzIGJlZW4gY2hhbmdlZABObyBw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SXsbsS4eQ9I+SPtuWS3p2/bDUWeRpsywqR90DM56ZrlhlN4FBvEAQdDZAAtNAQAAAAEAAAABAAAAAQAAAAIAAAACAAAAAgAAAAIAAAADAAAAAwAAAAMAAAADAAAABAAAAAQAAAAEAAAABAAAAAUAAAAFAAAABQAAAAUAQcDaAAtlAQAAAAEAAAACAAAAAgAAAAMAAAADAAAABAAAAAQAAAAFAAAABQAAAAYAAAAGAAAABwAAAAcAAAAIAAAACAAAAAkAAAAJAAAACgAAAAoAAAALAAAACwAAAAwAAAAMAAAADQAAAA0AQbjbAAttBAAAAAQABAAIAAQABQAAAAQABAAIAAQABgAAAAQABgAgACAABgAAAAQABAAQABAABwAAAAgAEAAgACAABwAAAAgAEACAAIAABwAAAAgAIACAAAABCAAAACAAgAACAQAECAAAACAAAgECAQAQCABBsNwAC/cJDAAIAIwACABMAAgAzAAIACwACACsAAgAbAAIAOwACAAcAAgAnAAIAFwACADcAAgAPAAIALwACAB8AAgA/AAIAAIACACCAAgAQgAIAMIACAAiAAgAogAIAGIACADiAAgAEgAIAJIACABSAAgA0gAIADIACACyAAgAcgAIAPIACAAKAAgAigAIAEoACADKAAgAKgAIAKoACABqAAgA6gAIABoACACaAAgAWgAIANoACAA6AAgAugAIAHoACAD6AAgABgAIAIYACABGAAgAxgAIACYACACmAAgAZgAIAOYACAAWAAgAlgAIAFYACADWAAgANgAIALYACAB2AAgA9gAIAA4ACACOAAgATgAIAM4ACAAuAAgArgAIAG4ACADuAAgAHgAIAJ4ACABeAAgA3gAIAD4ACAC+AAgAfgAIAP4ACAABAAgAgQAIAEEACADBAAgAIQAIAKEACABhAAgA4QAIABEACACRAAgAUQAIANEACAAxAAgAsQAIAHEACADxAAgACQAIAIkACABJAAgAyQAIACkACACpAAgAaQAIAOkACAAZAAgAmQAIAFkACADZAAgAOQAIALkACAB5AAgA+QAIAAUACACFAAgARQAIAMUACAAlAAgApQAIAGUACADlAAgAFQAIAJUACABVAAgA1QAIADUACAC1AAgAdQAIAPUACAANAAgAjQAIAE0ACADNAAgALQAIAK0ACABtAAgA7QAIAB0A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AAEAAAABAAAAAQAAAAIAAAACAAAAAgAAAAIAAAADAAAAAwAAAAMAAAADAAAABAAAAAQAAAAEAAAABAAAAAUAAAAFAAAABQAAAAUAQYDwAAtlAQAAAAEAAAACAAAAAgAAAAMAAAADAAAABAAAAAQAAAAFAAAABQAAAAYAAAAGAAAABwAAAAcAAAAIAAAACAAAAAkAAAAJAAAACgAAAAoAAAALAAAACwAAAAwAAAAMAAAADQAAAA0AQbDxAAsjAgAAAAMAAAAHAAAAAAAAABAREgAIBwkGCgULBAwDDQIOAQ8AQeDxAAsmFAQAAMUHAACCCQAAmQUAAFsFAAC6BQAAAAQAAEUFAADPBQAAggkAQZDyAAulEwMABAAFAAYABwAIAAkACgALAA0ADwARABMAFwAbAB8AIwArADMAOwBDAFMAYwBzAIMAowDDAOMAAgEAAAAAAAAQABAAEAAQABAAEAAQABAAEQARABEAEQASABIAEgASABMAEwATABMAFAAUABQAFAAVABUAFQAVABAATQDKAAAAAQACAAMABAAFAAcACQANABEAGQAhADEAQQBhAIEAwQABAYEBAQIBAwEEAQYBCAEMARABGAEgATABQAFgAAAAABAAEAAQABAAEQARABIAEgATABMAFAAUABUAFQAWABYAFwAXABgAGAAZABkAGgAaABsAGwAcABwAHQAdAEAAQABgBwAAAAhQAAAIEAAUCHMAEgcfAAAIcAAACDAAAAnAABAHCgAACGAAAAggAAAJoAAACAAAAAiAAAAIQAAACeAAEAcGAAAIWAAACBgAAAmQABMHOwAACHgAAAg4AAAJ0AARBxEAAAhoAAAIKAAACbAAAAgIAAAIiAAACEgAAAnwABAHBAAACFQAAAgUABUI4wATBysAAAh0AAAINAAACcgAEQcNAAAIZAAACCQAAAmoAAAIBAAACIQAAAhEAAAJ6AAQBwgAAAhcAAAIHAAACZgAFAdTAAAIfAAACDwAAAnYABIHFwAACGwAAAgsAAAJuAAACAwAAAiMAAAITAAACfgAEAcDAAAIUgAACBIAFQijABMHIwAACHIAAAgyAAAJxAARBwsAAAhiAAAIIgAACaQAAAgCAAAIggAACEIAAAnkABAHBwAACFoAAAgaAAAJlAAUB0MAAAh6AAAIOgAACdQAEgcTAAAIagAACCoAAAm0AAAICgAACIoAAAhKAAAJ9AAQBwUAAAhWAAAIFgBACAAAEwczAAAIdgAACDYAAAnMABEHDwAACGYAAAgmAAAJrAAACAYAAAiGAAAIRgAACewAEAcJAAAIXgAACB4AAAmcABQHYwAACH4AAAg+AAAJ3AASBxsAAAhuAAAILgAACbwAAAgOAAAIjgAACE4AAAn8AGAHAAAACFEAAAgRABUIgwASBx8AAAhxAAAIMQAACcIAEAcKAAAIYQAACCEAAAmiAAAIAQAACIEAAAhBAAAJ4gAQBwYAAAhZAAAIGQAACZIAEwc7AAAIeQAACDkAAAnSABEHEQAACGkAAAgpAAAJsgAACAkAAAiJAAAISQAACfIAEAcEAAAIVQAACBUAEAgCARMHKwAACHUAAAg1AAAJygARBw0AAAhlAAAIJQAACaoAAAgFAAAIhQAACEUAAAnqABAHCAAACF0AAAgdAAAJmgAUB1MAAAh9AAAIPQAACdoAEgcXAAAIbQAACC0AAAm6AAAIDQAACI0AAAhNAAAJ+gAQBwMAAAhTAAAIEwAVCMMAEwcjAAAIcwAACDMAAAnGABEHCwAACGMAAAgjAAAJpgAACAMAAAiDAAAIQwAACeYAEAcHAAAIWwAACBsAAAmWABQHQwAACHsAAAg7AAAJ1gASBxMAAAhrAAAIKwAACbYAAAgLAAAIiwAACEsAAAn2ABAHBQAACFcAAAgXAEAIAAATBzMAAAh3AAAINwAACc4AEQcPAAAIZwAACCcAAAmuAAAIBwAACIcAAAhHAAAJ7gAQBwkAAAhfAAAIHwAACZ4AFAdjAAAIfwAACD8AAAneABIHGwAACG8AAAgvAAAJvgAACA8AAAiPAAAITwAACf4AYAcAAAAIUAAACBAAFAhzABIHHwAACHAAAAgwAAAJwQAQBwoAAAhgAAAIIAAACaEAAAgAAAAIgAAACEAAAAnhABAHBgAACFgAAAgYAAAJkQATBzsAAAh4AAAIOAAACdEAEQcRAAAIaAAACCgAAAmxAAAICAAACIgAAAhIAAAJ8QAQBwQAAAhUAAAIFAAVCOMAEwcrAAAIdAAACDQAAAnJABEHDQAACGQAAAgkAAAJqQAACAQAAAiEAAAIRAAACekAEAcIAAAIXAAACBwAAAmZABQHUwAACHwAAAg8AAAJ2QASBxcAAAhsAAAILAAACbkAAAgMAAAIjAAACEwAAAn5ABAHAwAACFIAAAgSABUIowATByMAAAhyAAAIMgAACcUAEQcLAAAIYgAACCIAAAmlAAAIAgAACIIAAAhCAAAJ5QAQBwcAAAhaAAAIGgAACZUAFAdDAAAIegAACDoAAAnVABIHEwAACGoAAAgqAAAJtQAACAoAAAiKAAAISgAACfUAEAcFAAAIVgAACBYAQAgAABMHMwAACHYAAAg2AAAJzQARBw8AAAhmAAAIJgAACa0AAAgGAAAIhgAACEYAAAntABAHCQAACF4AAAgeAAAJnQAUB2MAAAh+AAAIPgAACd0AEgcbAAAIbgAACC4AAAm9AAAIDgAACI4AAAhOAAAJ/QBgBwAAAAhRAAAIEQAVCIMAEgcfAAAIcQAACDEAAAnDABAHCgAACGEAAAghAAAJowAACAEAAAiBAAAIQQAACeMAEAcGAAAIWQAACBkAAAmTABMHOwAACHkAAAg5AAAJ0wARBxEAAAhpAAAIKQAACbMAAAgJAAAIiQAACEkAAAnzABAHBAAACFUAAAgVABAIAgETBysAAAh1AAAINQAACcsAEQcNAAAIZQAACCUAAAmrAAAIBQAACIUAAAhFAAAJ6wAQBwgAAAhdAAAIHQAACZsAFAdTAAAIfQAACD0AAAnbABIHFwAACG0AAAgtAAAJuwAACA0AAAiNAAAITQAACfsAEAcDAAAIUwAACBMAFQjDABMHIwAACHMAAAgzAAAJxwARBwsAAAhjAAAIIwAACacAAAgDAAAIgwAACEMAAAnnABAHBwAACFsAAAgbAAAJlwAUB0MAAAh7AAAIOwAACdcAEgcTAAAIawAACCsAAAm3AAAICwAACIsAAAhLAAAJ9wAQBwUAAAhXAAAIFwBACAAAEwczAAAIdwAACDcAAAnPABEHDwAACGcAAAgnAAAJrwAACAcAAAiHAAAIRwAACe8AEAcJAAAIXwAACB8AAAmfABQHYwAACH8AAAg/AAAJ3wASBxsAAAhvAAAILwAACb8AAAgPAAAIjwAACE8AAAn/ABAFAQAXBQEBEwURABsFARARBQUAGQUBBBUFQQAdBQFAEAUDABgFAQIUBSEAHAUBIBIFCQAaBQEIFgWBAEAFAAAQBQIAFwWBARMFGQAbBQEYEQUHABkFAQYVBWEAHQUBYBAFBAAYBQEDFAUxABwFATASBQ0AGgUBDBYFwQBABQAAEAARABIAAAAIAAcACQAGAAoABQALAAQADAADAA0AAgAOAAEADwBBwIUBC0ERAAoAERERAAAAAAUAAAAAAAAJAAAAAAsAAAAAAAAAABEADwoREREDCgcAAQAJCwsAAAkGCwAACwAGEQAAABEREQBBkYYBCyELAAAAAAAAAAARAAoKERERAAoAAAIACQsAAAAJAAsAAAsAQcuGAQsBDABB14YBCxUMAAAAAAwAAAAACQwAAAAAAAwAAAwAQYWHAQsBDgBBkYcBCxUNAAAABA0AAAAACQ4AAAAAAA4AAA4AQb+HAQsBEABBy4cBCx4PAAAAAA8AAAAACRAAAAAAABAAABAAABIAAAASEhIAQYKIAQsOEgAAABISEgAAAAAAAAkAQbOIAQsBCwBBv4gBCxUKAAAAAAoAAAAACQsAAAAAAAsAAAsAQe2IAQsBDABB+YgBCycMAAAAAAwAAAAACQwAAAAAAAwAAAwAADAxMjM0NTY3ODlBQkNERUYAQcSJAQsBNQBB64kBCwX//////wBBsIoBC1cZEkQ7Aj8sRxQ9MzAKGwZGS0U3D0kOjhcDQB08aSs2H0otHAEgJSkhCAwVFiIuEDg+CzQxGGR0dXYvQQl/OREjQzJCiYqLBQQmKCcNKh41jAcaSJMTlJUAQZCLAQuKDklsbGVnYWwgYnl0ZSBzZXF1ZW5jZQBEb21haW4gZXJyb3IAUmVzdWx0IG5vdCByZXByZXNlbnRhYmxlAE5vdCBhIHR0eQBQZXJtaXNzaW9uIGRlbmllZABPcGVyYXRpb24gbm90IHBlcm1pdHRlZABObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5AE5vIHN1Y2ggcHJvY2VzcwBGaWxlIGV4aXN0cwBWYWx1ZSB0b28gbGFyZ2UgZm9yIGRhdGEgdHlwZQBObyBzcGFjZSBsZWZ0IG9uIGRldmljZQBPdXQgb2YgbWVtb3J5AFJlc291cmNlIGJ1c3kASW50ZXJydXB0ZWQgc3lzdGVtIGNhbGwAUmVzb3VyY2UgdGVtcG9yYXJpbHkgdW5hdmFpbGFibGUASW52YWxpZCBzZWVrAENyb3NzLWRldmljZSBsaW5rAFJlYWQtb25seSBmaWxlIHN5c3RlbQBEaXJlY3Rvcnkgbm90IGVtcHR5AENvbm5lY3Rpb24gcmVzZXQgYnkgcGVlcgBPcGVyYXRpb24gdGltZWQgb3V0AENvbm5lY3Rpb24gcmVmdXNlZABIb3N0IGlzIGRvd24ASG9zdCBpcyB1bnJlYWNoYWJsZQBBZGRyZXNzIGluIHVzZQBCcm9rZW4gcGlwZQBJL08gZXJyb3IATm8gc3VjaCBkZXZpY2Ugb3IgYWRkcmVzcwBCbG9jayBkZXZpY2UgcmVxdWlyZWQATm8gc3VjaCBkZXZpY2UATm90IGEgZGlyZWN0b3J5AElzIGEgZGlyZWN0b3J5AFRleHQgZmlsZSBidXN5AEV4ZWMgZm9ybWF0IGVycm9yAEludmFsaWQgYXJndW1lbnQAQXJndW1lbnQgbGlzdCB0b28gbG9uZwBTeW1ib2xpYyBsaW5rIGxvb3AARmlsZW5hbWUgdG9vIGxvbmcAVG9vIG1hbnkgb3BlbiBmaWxlcyBpbiBzeXN0ZW0ATm8gZmlsZSBkZXNjcmlwdG9ycyBhdmFpbGFibGUAQmFkIGZpbGUgZGVzY3JpcHRvcgBObyBjaGlsZCBwcm9jZXNzAEJhZCBhZGRyZXNzAEZpbGUgdG9vIGxhcmdlAFRvbyBtYW55IGxpbmtzAE5vIGxvY2tzIGF2YWlsYWJsZQBSZXNvdXJjZSBkZWFkbG9jayB3b3VsZCBvY2N1cgBTdGF0ZSBub3QgcmVjb3ZlcmFibGUAUHJldmlvdXMgb3duZXIgZGllZABPcGVyYXRpb24gY2FuY2VsZWQARnVuY3Rpb24gbm90IGltcGxlbWVudGVkAE5vIG1lc3NhZ2Ugb2YgZGVzaXJlZCB0eXBlAElkZW50aWZpZXIgcmVtb3ZlZABEZXZpY2Ugbm90IGEgc3RyZWFtAE5vIGRhdGEgYXZhaWxhYmxlAERldmljZSB0aW1lb3V0AE91dCBvZiBzdHJlYW1zIHJlc291cmNlcwBMaW5rIGhhcyBiZWVuIHNldmVyZWQAUHJvdG9jb2wgZXJyb3IAQmFkIG1lc3NhZ2UARmlsZSBkZXNjcmlwdG9yIGluIGJhZCBzdGF0ZQBOb3QgYSBzb2NrZXQARGVzdGluYXRpb24gYWRkcmVzcyByZXF1aXJlZABNZXNzYWdlIHRvbyBsYXJnZQBQcm90b2NvbCB3cm9uZyB0eXBlIGZvciBzb2NrZXQAUHJvdG9jb2wgbm90IGF2YWlsYWJsZQBQcm90b2NvbCBub3Qgc3VwcG9ydGVkAFNvY2tldCB0eXBlIG5vdCBzdXBwb3J0ZWQATm90IHN1cHBvcnRlZABQcm90b2NvbCBmYW1pbHkgbm90IHN1cHBvcnRlZABBZGRyZXNzIGZhbWlseSBub3Qgc3VwcG9ydGVkIGJ5IHByb3RvY29sAEFkZHJlc3Mgbm90IGF2YWlsYWJsZQBOZXR3b3JrIGlzIGRvd24ATmV0d29yayB1bnJlYWNoYWJsZQBDb25uZWN0aW9uIHJlc2V0IGJ5IG5ldHdvcmsAQ29ubmVjdGlvbiBhYm9ydGVkAE5vIGJ1ZmZlciBzcGFjZSBhdmFpbGFibGUAU29ja2V0IGlzIGNvbm5lY3RlZABTb2NrZXQgbm90IGNvbm5lY3RlZABDYW5ub3Qgc2VuZCBhZnRlciBzb2NrZXQgc2h1dGRvd24AT3BlcmF0aW9uIGFscmVhZHkgaW4gcHJvZ3Jlc3MAT3BlcmF0aW9uIGluIHByb2dyZXNzAFN0YWxlIGZpbGUgaGFuZGxlAFJlbW90ZSBJL08gZXJyb3IAUXVvdGEgZXhjZWVkZWQATm8gbWVkaXVtIGZvdW5kAFdyb25nIG1lZGl1bSB0eXBlAE5vIGVycm9yIGluZm9ybWF0aW9uAEGgmQELhgEWAAAAFwAAABgAAAAZAAAAGgAAABsAAAAcAAAAHQAAAB4AAAAfAAAAIAAAACEAAAAiAAAAkFFQACYAAAAnAAAAKAAAACkAAAAqAAAAKwAAACwAAAAtAAAALgAAACcAAAAoAAAAKQAAACoAAAArAAAALAAAAC0AAAABAAAACAAAANhMAAD4TABB1JsBCwJQUQBBjJwBCwkfAAAAJE4AAAMAQaScAQuMAS30UVjPjLHARva1yykxA8cEW3AwtF39IHh/i5rYWSlQaEiJq6dWA2z/t82IP9R3tCulo3DxuuSo/EGD/dlv4Yp6Ly10lgcfDQleA3YscPdApSynb1dBqKp036BYZANKx8Q8U66vXxgEFbHjbSiGqwykv0Pw6VCBOVcWUjf/////////////////////";UA(Qa)||(Qa=x(Qa));function Fg(F){try{if(F==Qa&&pe)return new Uint8Array(pe);var K=Qs(F);if(K)return K;if(N)return N(F);throw"sync fetching of the wasm failed: you can preload it to Module['wasmBinary'] manually, or emcc.py will do that for you when generating HTML (but not JS)"}catch(G){gn(G)}}function Rg(F,K){var G,se,ce;try{ce=Fg(F),se=new WebAssembly.Module(ce),G=new WebAssembly.Instance(se,K)}catch(Je){var xe=Je.toString();throw ie("failed to compile wasm module: "+xe),(xe.includes("imported Memory")||xe.includes("memory import"))&&ie("Memory size incompatibility issues may be due to changing INITIAL_MEMORY at runtime to something too large. Use ALLOW_MEMORY_GROWTH to allow any size memory (and also make sure not to set INITIAL_MEMORY at runtime to something smaller than it was at compile time)."),Je}return[G,se]}function $u(){var F={a:ra};function K(ce,xe){var Je=ce.exports;r.asm=Je,h=r.asm.u,Ae(h.buffer),Le=r.asm.pa,Ur(r.asm.v),cs("wasm-instantiate")}if(Bo("wasm-instantiate"),r.instantiateWasm)try{var G=r.instantiateWasm(F,K);return G}catch(ce){return ie("Module.instantiateWasm callback failed with error: "+ce),!1}var se=Rg(Qa,F);return K(se[0]),r.asm}var Yn,Hi;function va(F){return ne.getFloat32(F,!0)}function KA(F){return ne.getFloat64(F,!0)}function Xe(F){return ne.getInt16(F,!0)}function Wn(F){return ne.getInt32(F,!0)}function ii(F,K){ne.setInt16(F,K,!0)}function Xt(F,K){ne.setInt32(F,K,!0)}function Ti(F){for(;F.length>0;){var K=F.shift();if(typeof K=="function"){K(r);continue}var G=K.func;typeof G=="number"?K.arg===void 0?Le.get(G)():Le.get(G)(K.arg):G(K.arg===void 0?null:K.arg)}}function Jn(F,K){var G=new Date(Wn((F>>2)*4)*1e3);Xt((K>>2)*4,G.getUTCSeconds()),Xt((K+4>>2)*4,G.getUTCMinutes()),Xt((K+8>>2)*4,G.getUTCHours()),Xt((K+12>>2)*4,G.getUTCDate()),Xt((K+16>>2)*4,G.getUTCMonth()),Xt((K+20>>2)*4,G.getUTCFullYear()-1900),Xt((K+24>>2)*4,G.getUTCDay()),Xt((K+36>>2)*4,0),Xt((K+32>>2)*4,0);var se=Date.UTC(G.getUTCFullYear(),0,1,0,0,0,0),ce=(G.getTime()-se)/(1e3*60*60*24)|0;return Xt((K+28>>2)*4,ce),Jn.GMTString||(Jn.GMTString=Fe("GMT")),Xt((K+40>>2)*4,Jn.GMTString),K}function us(F,K){return Jn(F,K)}var Dt={splitPath:function(F){var K=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return K.exec(F).slice(1)},normalizeArray:function(F,K){for(var G=0,se=F.length-1;se>=0;se--){var ce=F[se];ce==="."?F.splice(se,1):ce===".."?(F.splice(se,1),G++):G&&(F.splice(se,1),G--)}if(K)for(;G;G--)F.unshift("..");return F},normalize:function(F){var K=F.charAt(0)==="/",G=F.substr(-1)==="/";return F=Dt.normalizeArray(F.split("/").filter(function(se){return!!se}),!K).join("/"),!F&&!K&&(F="."),F&&G&&(F+="/"),(K?"/":"")+F},dirname:function(F){var K=Dt.splitPath(F),G=K[0],se=K[1];return!G&&!se?".":(se&&(se=se.substr(0,se.length-1)),G+se)},basename:function(F){if(F==="/")return"/";F=Dt.normalize(F),F=F.replace(/\/$/,"");var K=F.lastIndexOf("/");return K===-1?F:F.substr(K+1)},extname:function(F){return Dt.splitPath(F)[3]},join:function(){var F=Array.prototype.slice.call(arguments,0);return Dt.normalize(F.join("/"))},join2:function(F,K){return Dt.normalize(F+"/"+K)}};function Xi(){if(typeof crypto=="object"&&typeof crypto.getRandomValues=="function"){var F=new Uint8Array(1);return function(){return crypto.getRandomValues(F),F[0]}}else if(B)try{var K=Ie("crypto");return function(){return K.randomBytes(1)[0]}}catch{}return function(){gn("randomDevice")}}var Pn={resolve:function(){for(var F="",K=!1,G=arguments.length-1;G>=-1&&!K;G--){var se=G>=0?arguments[G]:$.cwd();if(typeof se!="string")throw new TypeError("Arguments to path.resolve must be strings");if(!se)return"";F=se+"/"+F,K=se.charAt(0)==="/"}return F=Dt.normalizeArray(F.split("/").filter(function(ce){return!!ce}),!K).join("/"),(K?"/":"")+F||"."},relative:function(F,K){F=Pn.resolve(F).substr(1),K=Pn.resolve(K).substr(1);function G(Ar){for(var er=0;er=0&&Ar[st]==="";st--);return er>st?[]:Ar.slice(er,st-er+1)}for(var se=G(F.split("/")),ce=G(K.split("/")),xe=Math.min(se.length,ce.length),Je=xe,ut=0;ut0?K=se.slice(0,ce).toString("utf-8"):K=null}else typeof window<"u"&&typeof window.prompt=="function"?(K=window.prompt("Input: "),K!==null&&(K+=` -`)):typeof readline=="function"&&(K=readline(),K!==null&&(K+=` -`));if(!K)return null;F.input=li(K,!0)}return F.input.shift()},put_char:function(F,K){K===null||K===10?(X(dt(F.output,0)),F.output=[]):K!=0&&F.output.push(K)},flush:function(F){F.output&&F.output.length>0&&(X(dt(F.output,0)),F.output=[])}},default_tty1_ops:{put_char:function(F,K){K===null||K===10?(ie(dt(F.output,0)),F.output=[]):K!=0&&F.output.push(K)},flush:function(F){F.output&&F.output.length>0&&(ie(dt(F.output,0)),F.output=[])}}};function sA(F){for(var K=ye(F,65536),G=jA(K);F=K)){var se=1024*1024;K=Math.max(K,G*(G>>0),G!=0&&(K=Math.max(K,256));var ce=F.contents;F.contents=new Uint8Array(K),F.usedBytes>0&&F.contents.set(ce.subarray(0,F.usedBytes),0)}},resizeFileStorage:function(F,K){if(F.usedBytes!=K)if(K==0)F.contents=null,F.usedBytes=0;else{var G=F.contents;F.contents=new Uint8Array(K),G&&F.contents.set(G.subarray(0,Math.min(K,F.usedBytes))),F.usedBytes=K}},node_ops:{getattr:function(F){var K={};return K.dev=$.isChrdev(F.mode)?F.id:1,K.ino=F.id,K.mode=F.mode,K.nlink=1,K.uid=0,K.gid=0,K.rdev=F.rdev,$.isDir(F.mode)?K.size=4096:$.isFile(F.mode)?K.size=F.usedBytes:$.isLink(F.mode)?K.size=F.link.length:K.size=0,K.atime=new Date(F.timestamp),K.mtime=new Date(F.timestamp),K.ctime=new Date(F.timestamp),K.blksize=4096,K.blocks=Math.ceil(K.size/K.blksize),K},setattr:function(F,K){K.mode!==void 0&&(F.mode=K.mode),K.timestamp!==void 0&&(F.timestamp=K.timestamp),K.size!==void 0&&kr.resizeFileStorage(F,K.size)},lookup:function(F,K){throw $.genericErrors[44]},mknod:function(F,K,G,se){return kr.createNode(F,K,G,se)},rename:function(F,K,G){if($.isDir(F.mode)){var se;try{se=$.lookupNode(K,G)}catch{}if(se)for(var ce in se.contents)throw new $.ErrnoError(55)}delete F.parent.contents[F.name],F.parent.timestamp=Date.now(),F.name=G,K.contents[G]=F,K.timestamp=F.parent.timestamp,F.parent=K},unlink:function(F,K){delete F.contents[K],F.timestamp=Date.now()},rmdir:function(F,K){var G=$.lookupNode(F,K);for(var se in G.contents)throw new $.ErrnoError(55);delete F.contents[K],F.timestamp=Date.now()},readdir:function(F){var K=[".",".."];for(var G in F.contents)!F.contents.hasOwnProperty(G)||K.push(G);return K},symlink:function(F,K,G){var se=kr.createNode(F,K,41471,0);return se.link=G,se},readlink:function(F){if(!$.isLink(F.mode))throw new $.ErrnoError(28);return F.link}},stream_ops:{read:function(F,K,G,se,ce){var xe=F.node.contents;if(ce>=F.node.usedBytes)return 0;var Je=Math.min(F.node.usedBytes-ce,se);if(Je>8&&xe.subarray)K.set(xe.subarray(ce,ce+Je),G);else for(var ut=0;ut0||se+G>2)}catch(G){throw G.code?new $.ErrnoError(fr.convertNodeCode(G)):G}return K.mode},realPath:function(F){for(var K=[];F.parent!==F;)K.push(F.name),F=F.parent;return K.push(F.mount.opts.root),K.reverse(),Dt.join.apply(null,K)},flagsForNode:function(F){F&=-2097153,F&=-2049,F&=-32769,F&=-524289;var K=0;for(var G in fr.flagsForNodeMap)F&G&&(K|=fr.flagsForNodeMap[G],F^=G);if(F)throw new $.ErrnoError(28);return K},node_ops:{getattr:function(F){var K=fr.realPath(F),G;try{G=Sr.lstatSync(K)}catch(se){throw se.code?new $.ErrnoError(fr.convertNodeCode(se)):se}return fr.isWindows&&!G.blksize&&(G.blksize=4096),fr.isWindows&&!G.blocks&&(G.blocks=(G.size+G.blksize-1)/G.blksize|0),{dev:G.dev,ino:G.ino,mode:G.mode,nlink:G.nlink,uid:G.uid,gid:G.gid,rdev:G.rdev,size:G.size,atime:G.atime,mtime:G.mtime,ctime:G.ctime,blksize:G.blksize,blocks:G.blocks}},setattr:function(F,K){var G=fr.realPath(F);try{if(K.mode!==void 0&&(Sr.chmodSync(G,K.mode),F.mode=K.mode),K.timestamp!==void 0){var se=new Date(K.timestamp);Sr.utimesSync(G,se,se)}K.size!==void 0&&Sr.truncateSync(G,K.size)}catch(ce){throw ce.code?new $.ErrnoError(fr.convertNodeCode(ce)):ce}},lookup:function(F,K){var G=Dt.join2(fr.realPath(F),K),se=fr.getMode(G);return fr.createNode(F,K,se)},mknod:function(F,K,G,se){var ce=fr.createNode(F,K,G,se),xe=fr.realPath(ce);try{$.isDir(ce.mode)?Sr.mkdirSync(xe,ce.mode):Sr.writeFileSync(xe,"",{mode:ce.mode})}catch(Je){throw Je.code?new $.ErrnoError(fr.convertNodeCode(Je)):Je}return ce},rename:function(F,K,G){var se=fr.realPath(F),ce=Dt.join2(fr.realPath(K),G);try{Sr.renameSync(se,ce)}catch(xe){throw xe.code?new $.ErrnoError(fr.convertNodeCode(xe)):xe}F.name=G},unlink:function(F,K){var G=Dt.join2(fr.realPath(F),K);try{Sr.unlinkSync(G)}catch(se){throw se.code?new $.ErrnoError(fr.convertNodeCode(se)):se}},rmdir:function(F,K){var G=Dt.join2(fr.realPath(F),K);try{Sr.rmdirSync(G)}catch(se){throw se.code?new $.ErrnoError(fr.convertNodeCode(se)):se}},readdir:function(F){var K=fr.realPath(F);try{return Sr.readdirSync(K)}catch(G){throw G.code?new $.ErrnoError(fr.convertNodeCode(G)):G}},symlink:function(F,K,G){var se=Dt.join2(fr.realPath(F),K);try{Sr.symlinkSync(G,se)}catch(ce){throw ce.code?new $.ErrnoError(fr.convertNodeCode(ce)):ce}},readlink:function(F){var K=fr.realPath(F);try{return K=Sr.readlinkSync(K),K=AA.relative(AA.resolve(F.mount.opts.root),K),K}catch(G){throw G.code?new $.ErrnoError(fr.convertNodeCode(G)):G}}},stream_ops:{open:function(F){var K=fr.realPath(F.node);try{$.isFile(F.node.mode)&&(F.nfd=Sr.openSync(K,fr.flagsForNode(F.flags)))}catch(G){throw G.code?new $.ErrnoError(fr.convertNodeCode(G)):G}},close:function(F){try{$.isFile(F.node.mode)&&F.nfd&&Sr.closeSync(F.nfd)}catch(K){throw K.code?new $.ErrnoError(fr.convertNodeCode(K)):K}},read:function(F,K,G,se,ce){if(se===0)return 0;try{return Sr.readSync(F.nfd,fr.bufferFrom(K.buffer),G,se,ce)}catch(xe){throw new $.ErrnoError(fr.convertNodeCode(xe))}},write:function(F,K,G,se,ce){try{return Sr.writeSync(F.nfd,fr.bufferFrom(K.buffer),G,se,ce)}catch(xe){throw new $.ErrnoError(fr.convertNodeCode(xe))}},llseek:function(F,K,G){var se=K;if(G===1)se+=F.position;else if(G===2&&$.isFile(F.node.mode))try{var ce=Sr.fstatSync(F.nfd);se+=ce.size}catch(xe){throw new $.ErrnoError(fr.convertNodeCode(xe))}if(se<0)throw new $.ErrnoError(28);return se},mmap:function(F,K,G,se,ce,xe){if(K!==0)throw new $.ErrnoError(28);if(!$.isFile(F.node.mode))throw new $.ErrnoError(43);var Je=sA(G);return fr.stream_ops.read(F,Oe,Je,G,se),{ptr:Je,allocated:!0}},msync:function(F,K,G,se,ce){if(!$.isFile(F.node.mode))throw new $.ErrnoError(43);if(ce&2)return 0;var xe=fr.stream_ops.write(F,K,0,se,G,!1);return 0}}},Da={lookupPath:function(F){return{path:F,node:{mode:fr.getMode(F)}}},createStandardStreams:function(){$.streams[0]={fd:0,nfd:0,position:0,path:"",flags:0,tty:!0,seekable:!1};for(var F=1;F<3;F++)$.streams[F]={fd:F,nfd:F,position:0,path:"",flags:577,tty:!0,seekable:!1}},cwd:function(){return process.cwd()},chdir:function(){process.chdir.apply(void 0,arguments)},mknod:function(F,K){$.isDir(F)?Sr.mkdirSync(F,K):Sr.writeFileSync(F,"",{mode:K})},mkdir:function(){Sr.mkdirSync.apply(void 0,arguments)},symlink:function(){Sr.symlinkSync.apply(void 0,arguments)},rename:function(){Sr.renameSync.apply(void 0,arguments)},rmdir:function(){Sr.rmdirSync.apply(void 0,arguments)},readdir:function(){Sr.readdirSync.apply(void 0,arguments)},unlink:function(){Sr.unlinkSync.apply(void 0,arguments)},readlink:function(){return Sr.readlinkSync.apply(void 0,arguments)},stat:function(){return Sr.statSync.apply(void 0,arguments)},lstat:function(){return Sr.lstatSync.apply(void 0,arguments)},chmod:function(){Sr.chmodSync.apply(void 0,arguments)},fchmod:function(){Sr.fchmodSync.apply(void 0,arguments)},chown:function(){Sr.chownSync.apply(void 0,arguments)},fchown:function(){Sr.fchownSync.apply(void 0,arguments)},truncate:function(){Sr.truncateSync.apply(void 0,arguments)},ftruncate:function(F,K){if(K<0)throw new $.ErrnoError(28);Sr.ftruncateSync.apply(void 0,arguments)},utime:function(){Sr.utimesSync.apply(void 0,arguments)},open:function(F,K,G,se){typeof K=="string"&&(K=Ut.modeStringToFlags(K));var ce=Sr.openSync(F,fr.flagsForNode(K),G),xe=se??$.nextfd(ce),Je={fd:xe,nfd:ce,position:0,path:F,flags:K,seekable:!0};return $.streams[xe]=Je,Je},close:function(F){F.stream_ops||Sr.closeSync(F.nfd),$.closeStream(F.fd)},llseek:function(F,K,G){if(F.stream_ops)return Ut.llseek(F,K,G);var se=K;if(G===1)se+=F.position;else if(G===2)se+=Sr.fstatSync(F.nfd).size;else if(G!==0)throw new $.ErrnoError(Qo.EINVAL);if(se<0)throw new $.ErrnoError(Qo.EINVAL);return F.position=se,se},read:function(F,K,G,se,ce){if(F.stream_ops)return Ut.read(F,K,G,se,ce);var xe=typeof ce<"u";!xe&&F.seekable&&(ce=F.position);var Je=Sr.readSync(F.nfd,fr.bufferFrom(K.buffer),G,se,ce);return xe||(F.position+=Je),Je},write:function(F,K,G,se,ce){if(F.stream_ops)return Ut.write(F,K,G,se,ce);F.flags&+"1024"&&$.llseek(F,0,+"2");var xe=typeof ce<"u";!xe&&F.seekable&&(ce=F.position);var Je=Sr.writeSync(F.nfd,fr.bufferFrom(K.buffer),G,se,ce);return xe||(F.position+=Je),Je},allocate:function(){throw new $.ErrnoError(Qo.EOPNOTSUPP)},mmap:function(F,K,G,se,ce,xe){if(F.stream_ops)return Ut.mmap(F,K,G,se,ce,xe);if(K!==0)throw new $.ErrnoError(28);var Je=sA(G);return $.read(F,Oe,Je,G,se),{ptr:Je,allocated:!0}},msync:function(F,K,G,se,ce){return F.stream_ops?Ut.msync(F,K,G,se,ce):(ce&2||$.write(F,K,0,se,G),0)},munmap:function(){return 0},ioctl:function(){throw new $.ErrnoError(Qo.ENOTTY)}},$={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:!1,ignorePermissions:!0,trackingDelegate:{},tracking:{openFlags:{READ:1,WRITE:2}},ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath:function(F,K){if(F=Pn.resolve($.cwd(),F),K=K||{},!F)return{path:"",node:null};var G={follow_mount:!0,recurse_count:0};for(var se in G)K[se]===void 0&&(K[se]=G[se]);if(K.recurse_count>8)throw new $.ErrnoError(32);for(var ce=Dt.normalizeArray(F.split("/").filter(function(Cr){return!!Cr}),!1),xe=$.root,Je="/",ut=0;ut40)throw new $.ErrnoError(32)}}return{path:Je,node:xe}},getPath:function(F){for(var K;;){if($.isRoot(F)){var G=F.mount.mountpoint;return K?G[G.length-1]!=="/"?G+"/"+K:G+K:G}K=K?F.name+"/"+K:F.name,F=F.parent}},hashName:function(F,K){for(var G=0,se=0;se>>0)%$.nameTable.length},hashAddNode:function(F){var K=$.hashName(F.parent.id,F.name);F.name_next=$.nameTable[K],$.nameTable[K]=F},hashRemoveNode:function(F){var K=$.hashName(F.parent.id,F.name);if($.nameTable[K]===F)$.nameTable[K]=F.name_next;else for(var G=$.nameTable[K];G;){if(G.name_next===F){G.name_next=F.name_next;break}G=G.name_next}},lookupNode:function(F,K){var G=$.mayLookup(F);if(G)throw new $.ErrnoError(G,F);for(var se=$.hashName(F.id,K),ce=$.nameTable[se];ce;ce=ce.name_next){var xe=ce.name;if(ce.parent.id===F.id&&xe===K)return ce}return $.lookup(F,K)},createNode:function(F,K,G,se){var ce=new $.FSNode(F,K,G,se);return $.hashAddNode(ce),ce},destroyNode:function(F){$.hashRemoveNode(F)},isRoot:function(F){return F===F.parent},isMountpoint:function(F){return!!F.mounted},isFile:function(F){return(F&61440)===32768},isDir:function(F){return(F&61440)===16384},isLink:function(F){return(F&61440)===40960},isChrdev:function(F){return(F&61440)===8192},isBlkdev:function(F){return(F&61440)===24576},isFIFO:function(F){return(F&61440)===4096},isSocket:function(F){return(F&49152)===49152},flagModes:{r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090},modeStringToFlags:function(F){var K=$.flagModes[F];if(typeof K>"u")throw new Error("Unknown file open mode: "+F);return K},flagsToPermissionString:function(F){var K=["r","w","rw"][F&3];return F&512&&(K+="w"),K},nodePermissions:function(F,K){return $.ignorePermissions?0:K.includes("r")&&!(F.mode&292)||K.includes("w")&&!(F.mode&146)||K.includes("x")&&!(F.mode&73)?2:0},mayLookup:function(F){var K=$.nodePermissions(F,"x");return K||(F.node_ops.lookup?0:2)},mayCreate:function(F,K){try{var G=$.lookupNode(F,K);return 20}catch{}return $.nodePermissions(F,"wx")},mayDelete:function(F,K,G){var se;try{se=$.lookupNode(F,K)}catch(xe){return xe.errno}var ce=$.nodePermissions(F,"wx");if(ce)return ce;if(G){if(!$.isDir(se.mode))return 54;if($.isRoot(se)||$.getPath(se)===$.cwd())return 10}else if($.isDir(se.mode))return 31;return 0},mayOpen:function(F,K){return F?$.isLink(F.mode)?32:$.isDir(F.mode)&&($.flagsToPermissionString(K)!=="r"||K&512)?31:$.nodePermissions(F,$.flagsToPermissionString(K)):44},MAX_OPEN_FDS:4096,nextfd:function(F,K){F=F||0,K=K||$.MAX_OPEN_FDS;for(var G=F;G<=K;G++)if(!$.streams[G])return G;throw new $.ErrnoError(33)},getStream:function(F){return $.streams[F]},createStream:function(F,K,G){$.FSStream||($.FSStream=function(){},$.FSStream.prototype={object:{get:function(){return this.node},set:function(Je){this.node=Je}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}}});var se=new $.FSStream;for(var ce in F)se[ce]=F[ce];F=se;var xe=$.nextfd(K,G);return F.fd=xe,$.streams[xe]=F,F},closeStream:function(F){$.streams[F]=null},chrdev_stream_ops:{open:function(F){var K=$.getDevice(F.node.rdev);F.stream_ops=K.stream_ops,F.stream_ops.open&&F.stream_ops.open(F)},llseek:function(){throw new $.ErrnoError(70)}},major:function(F){return F>>8},minor:function(F){return F&255},makedev:function(F,K){return F<<8|K},registerDevice:function(F,K){$.devices[F]={stream_ops:K}},getDevice:function(F){return $.devices[F]},getMounts:function(F){for(var K=[],G=[F];G.length;){var se=G.pop();K.push(se),G.push.apply(G,se.mounts)}return K},syncfs:function(F,K){typeof F=="function"&&(K=F,F=!1),$.syncFSRequests++,$.syncFSRequests>1&&ie("warning: "+$.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work");var G=$.getMounts($.root.mount),se=0;function ce(Je){return $.syncFSRequests--,K(Je)}function xe(Je){if(Je)return xe.errored?void 0:(xe.errored=!0,ce(Je));++se>=G.length&&ce(null)}G.forEach(function(Je){if(!Je.type.syncfs)return xe(null);Je.type.syncfs(Je,F,xe)})},mount:function(F,K,G){var se=G==="/",ce=!G,xe;if(se&&$.root)throw new $.ErrnoError(10);if(!se&&!ce){var Je=$.lookupPath(G,{follow_mount:!1});if(G=Je.path,xe=Je.node,$.isMountpoint(xe))throw new $.ErrnoError(10);if(!$.isDir(xe.mode))throw new $.ErrnoError(54)}var ut={type:F,opts:K,mountpoint:G,mounts:[]},Rt=F.mount(ut);return Rt.mount=ut,ut.root=Rt,se?$.root=Rt:xe&&(xe.mounted=ut,xe.mount&&xe.mount.mounts.push(ut)),Rt},unmount:function(F){var K=$.lookupPath(F,{follow_mount:!1});if(!$.isMountpoint(K.node))throw new $.ErrnoError(28);var G=K.node,se=G.mounted,ce=$.getMounts(se);Object.keys($.nameTable).forEach(function(Je){for(var ut=$.nameTable[Je];ut;){var Rt=ut.name_next;ce.includes(ut.mount)&&$.destroyNode(ut),ut=Rt}}),G.mounted=null;var xe=G.mount.mounts.indexOf(se);G.mount.mounts.splice(xe,1)},lookup:function(F,K){return F.node_ops.lookup(F,K)},mknod:function(F,K,G){var se=$.lookupPath(F,{parent:!0}),ce=se.node,xe=Dt.basename(F);if(!xe||xe==="."||xe==="..")throw new $.ErrnoError(28);var Je=$.mayCreate(ce,xe);if(Je)throw new $.ErrnoError(Je);if(!ce.node_ops.mknod)throw new $.ErrnoError(63);return ce.node_ops.mknod(ce,xe,K,G)},create:function(F,K){return K=K!==void 0?K:438,K&=4095,K|=32768,$.mknod(F,K,0)},mkdir:function(F,K){return K=K!==void 0?K:511,K&=1023,K|=16384,$.mknod(F,K,0)},mkdirTree:function(F,K){for(var G=F.split("/"),se="",ce=0;ce"u"&&(G=K,K=438),K|=8192,$.mknod(F,K,G)},symlink:function(F,K){if(!Pn.resolve(F))throw new $.ErrnoError(44);var G=$.lookupPath(K,{parent:!0}),se=G.node;if(!se)throw new $.ErrnoError(44);var ce=Dt.basename(K),xe=$.mayCreate(se,ce);if(xe)throw new $.ErrnoError(xe);if(!se.node_ops.symlink)throw new $.ErrnoError(63);return se.node_ops.symlink(se,ce,F)},rename:function(F,K){var G=Dt.dirname(F),se=Dt.dirname(K),ce=Dt.basename(F),xe=Dt.basename(K),Je,ut,Rt;if(Je=$.lookupPath(F,{parent:!0}),ut=Je.node,Je=$.lookupPath(K,{parent:!0}),Rt=Je.node,!ut||!Rt)throw new $.ErrnoError(44);if(ut.mount!==Rt.mount)throw new $.ErrnoError(75);var Ar=$.lookupNode(ut,ce),er=Pn.relative(F,se);if(er.charAt(0)!==".")throw new $.ErrnoError(28);if(er=Pn.relative(K,G),er.charAt(0)!==".")throw new $.ErrnoError(55);var st;try{st=$.lookupNode(Rt,xe)}catch{}if(Ar!==st){var Cr=$.isDir(Ar.mode),or=$.mayDelete(ut,ce,Cr);if(or)throw new $.ErrnoError(or);if(or=st?$.mayDelete(Rt,xe,Cr):$.mayCreate(Rt,xe),or)throw new $.ErrnoError(or);if(!ut.node_ops.rename)throw new $.ErrnoError(63);if($.isMountpoint(Ar)||st&&$.isMountpoint(st))throw new $.ErrnoError(10);if(Rt!==ut&&(or=$.nodePermissions(ut,"w"),or))throw new $.ErrnoError(or);try{$.trackingDelegate.willMovePath&&$.trackingDelegate.willMovePath(F,K)}catch(qr){ie("FS.trackingDelegate['willMovePath']('"+F+"', '"+K+"') threw an exception: "+qr.message)}$.hashRemoveNode(Ar);try{ut.node_ops.rename(Ar,Rt,xe)}catch(qr){throw qr}finally{$.hashAddNode(Ar)}try{$.trackingDelegate.onMovePath&&$.trackingDelegate.onMovePath(F,K)}catch(qr){ie("FS.trackingDelegate['onMovePath']('"+F+"', '"+K+"') threw an exception: "+qr.message)}}},rmdir:function(F){var K=$.lookupPath(F,{parent:!0}),G=K.node,se=Dt.basename(F),ce=$.lookupNode(G,se),xe=$.mayDelete(G,se,!0);if(xe)throw new $.ErrnoError(xe);if(!G.node_ops.rmdir)throw new $.ErrnoError(63);if($.isMountpoint(ce))throw new $.ErrnoError(10);try{$.trackingDelegate.willDeletePath&&$.trackingDelegate.willDeletePath(F)}catch(Je){ie("FS.trackingDelegate['willDeletePath']('"+F+"') threw an exception: "+Je.message)}G.node_ops.rmdir(G,se),$.destroyNode(ce);try{$.trackingDelegate.onDeletePath&&$.trackingDelegate.onDeletePath(F)}catch(Je){ie("FS.trackingDelegate['onDeletePath']('"+F+"') threw an exception: "+Je.message)}},readdir:function(F){var K=$.lookupPath(F,{follow:!0}),G=K.node;if(!G.node_ops.readdir)throw new $.ErrnoError(54);return G.node_ops.readdir(G)},unlink:function(F){var K=$.lookupPath(F,{parent:!0}),G=K.node,se=Dt.basename(F),ce=$.lookupNode(G,se),xe=$.mayDelete(G,se,!1);if(xe)throw new $.ErrnoError(xe);if(!G.node_ops.unlink)throw new $.ErrnoError(63);if($.isMountpoint(ce))throw new $.ErrnoError(10);try{$.trackingDelegate.willDeletePath&&$.trackingDelegate.willDeletePath(F)}catch(Je){ie("FS.trackingDelegate['willDeletePath']('"+F+"') threw an exception: "+Je.message)}G.node_ops.unlink(G,se),$.destroyNode(ce);try{$.trackingDelegate.onDeletePath&&$.trackingDelegate.onDeletePath(F)}catch(Je){ie("FS.trackingDelegate['onDeletePath']('"+F+"') threw an exception: "+Je.message)}},readlink:function(F){var K=$.lookupPath(F),G=K.node;if(!G)throw new $.ErrnoError(44);if(!G.node_ops.readlink)throw new $.ErrnoError(28);return Pn.resolve($.getPath(G.parent),G.node_ops.readlink(G))},stat:function(F,K){var G=$.lookupPath(F,{follow:!K}),se=G.node;if(!se)throw new $.ErrnoError(44);if(!se.node_ops.getattr)throw new $.ErrnoError(63);return se.node_ops.getattr(se)},lstat:function(F){return $.stat(F,!0)},chmod:function(F,K,G){var se;if(typeof F=="string"){var ce=$.lookupPath(F,{follow:!G});se=ce.node}else se=F;if(!se.node_ops.setattr)throw new $.ErrnoError(63);se.node_ops.setattr(se,{mode:K&4095|se.mode&-4096,timestamp:Date.now()})},lchmod:function(F,K){$.chmod(F,K,!0)},fchmod:function(F,K){var G=$.getStream(F);if(!G)throw new $.ErrnoError(8);$.chmod(G.node,K)},chown:function(F,K,G,se){var ce;if(typeof F=="string"){var xe=$.lookupPath(F,{follow:!se});ce=xe.node}else ce=F;if(!ce.node_ops.setattr)throw new $.ErrnoError(63);ce.node_ops.setattr(ce,{timestamp:Date.now()})},lchown:function(F,K,G){$.chown(F,K,G,!0)},fchown:function(F,K,G){var se=$.getStream(F);if(!se)throw new $.ErrnoError(8);$.chown(se.node,K,G)},truncate:function(F,K){if(K<0)throw new $.ErrnoError(28);var G;if(typeof F=="string"){var se=$.lookupPath(F,{follow:!0});G=se.node}else G=F;if(!G.node_ops.setattr)throw new $.ErrnoError(63);if($.isDir(G.mode))throw new $.ErrnoError(31);if(!$.isFile(G.mode))throw new $.ErrnoError(28);var ce=$.nodePermissions(G,"w");if(ce)throw new $.ErrnoError(ce);G.node_ops.setattr(G,{size:K,timestamp:Date.now()})},ftruncate:function(F,K){var G=$.getStream(F);if(!G)throw new $.ErrnoError(8);if((G.flags&2097155)===0)throw new $.ErrnoError(28);$.truncate(G.node,K)},utime:function(F,K,G){var se=$.lookupPath(F,{follow:!0}),ce=se.node;ce.node_ops.setattr(ce,{timestamp:Math.max(K,G)})},open:function(F,K,G,se,ce){if(F==="")throw new $.ErrnoError(44);K=typeof K=="string"?$.modeStringToFlags(K):K,G=typeof G>"u"?438:G,K&64?G=G&4095|32768:G=0;var xe;if(typeof F=="object")xe=F;else{F=Dt.normalize(F);try{var Je=$.lookupPath(F,{follow:!(K&131072)});xe=Je.node}catch{}}var ut=!1;if(K&64)if(xe){if(K&128)throw new $.ErrnoError(20)}else xe=$.mknod(F,G,0),ut=!0;if(!xe)throw new $.ErrnoError(44);if($.isChrdev(xe.mode)&&(K&=-513),K&65536&&!$.isDir(xe.mode))throw new $.ErrnoError(54);if(!ut){var Rt=$.mayOpen(xe,K);if(Rt)throw new $.ErrnoError(Rt)}K&512&&$.truncate(xe,0),K&=-131713;var Ar=$.createStream({node:xe,path:$.getPath(xe),flags:K,seekable:!0,position:0,stream_ops:xe.stream_ops,ungotten:[],error:!1},se,ce);Ar.stream_ops.open&&Ar.stream_ops.open(Ar),r.logReadFiles&&!(K&1)&&($.readFiles||($.readFiles={}),F in $.readFiles||($.readFiles[F]=1,ie("FS.trackingDelegate error on read file: "+F)));try{if($.trackingDelegate.onOpenFile){var er=0;(K&2097155)!==1&&(er|=$.tracking.openFlags.READ),(K&2097155)!==0&&(er|=$.tracking.openFlags.WRITE),$.trackingDelegate.onOpenFile(F,er)}}catch(st){ie("FS.trackingDelegate['onOpenFile']('"+F+"', flags) threw an exception: "+st.message)}return Ar},close:function(F){if($.isClosed(F))throw new $.ErrnoError(8);F.getdents&&(F.getdents=null);try{F.stream_ops.close&&F.stream_ops.close(F)}catch(K){throw K}finally{$.closeStream(F.fd)}F.fd=null},isClosed:function(F){return F.fd===null},llseek:function(F,K,G){if($.isClosed(F))throw new $.ErrnoError(8);if(!F.seekable||!F.stream_ops.llseek)throw new $.ErrnoError(70);if(G!=0&&G!=1&&G!=2)throw new $.ErrnoError(28);return F.position=F.stream_ops.llseek(F,K,G),F.ungotten=[],F.position},read:function(F,K,G,se,ce){if(se<0||ce<0)throw new $.ErrnoError(28);if($.isClosed(F))throw new $.ErrnoError(8);if((F.flags&2097155)===1)throw new $.ErrnoError(8);if($.isDir(F.node.mode))throw new $.ErrnoError(31);if(!F.stream_ops.read)throw new $.ErrnoError(28);var xe=typeof ce<"u";if(!xe)ce=F.position;else if(!F.seekable)throw new $.ErrnoError(70);var Je=F.stream_ops.read(F,K,G,se,ce);return xe||(F.position+=Je),Je},write:function(F,K,G,se,ce,xe){if(se<0||ce<0)throw new $.ErrnoError(28);if($.isClosed(F))throw new $.ErrnoError(8);if((F.flags&2097155)===0)throw new $.ErrnoError(8);if($.isDir(F.node.mode))throw new $.ErrnoError(31);if(!F.stream_ops.write)throw new $.ErrnoError(28);F.seekable&&F.flags&1024&&$.llseek(F,0,2);var Je=typeof ce<"u";if(!Je)ce=F.position;else if(!F.seekable)throw new $.ErrnoError(70);var ut=F.stream_ops.write(F,K,G,se,ce,xe);Je||(F.position+=ut);try{F.path&&$.trackingDelegate.onWriteToFile&&$.trackingDelegate.onWriteToFile(F.path)}catch(Rt){ie("FS.trackingDelegate['onWriteToFile']('"+F.path+"') threw an exception: "+Rt.message)}return ut},allocate:function(F,K,G){if($.isClosed(F))throw new $.ErrnoError(8);if(K<0||G<=0)throw new $.ErrnoError(28);if((F.flags&2097155)===0)throw new $.ErrnoError(8);if(!$.isFile(F.node.mode)&&!$.isDir(F.node.mode))throw new $.ErrnoError(43);if(!F.stream_ops.allocate)throw new $.ErrnoError(138);F.stream_ops.allocate(F,K,G)},mmap:function(F,K,G,se,ce,xe){if((ce&2)!==0&&(xe&2)===0&&(F.flags&2097155)!==2)throw new $.ErrnoError(2);if((F.flags&2097155)===1)throw new $.ErrnoError(2);if(!F.stream_ops.mmap)throw new $.ErrnoError(43);return F.stream_ops.mmap(F,K,G,se,ce,xe)},msync:function(F,K,G,se,ce){return!F||!F.stream_ops.msync?0:F.stream_ops.msync(F,K,G,se,ce)},munmap:function(F){return 0},ioctl:function(F,K,G){if(!F.stream_ops.ioctl)throw new $.ErrnoError(59);return F.stream_ops.ioctl(F,K,G)},readFile:function(F,K){if(K=K||{},K.flags=K.flags||0,K.encoding=K.encoding||"binary",K.encoding!=="utf8"&&K.encoding!=="binary")throw new Error('Invalid encoding type "'+K.encoding+'"');var G,se=$.open(F,K.flags),ce=$.stat(F),xe=ce.size,Je=new Uint8Array(xe);return $.read(se,Je,0,xe,0),K.encoding==="utf8"?G=dt(Je,0):K.encoding==="binary"&&(G=Je),$.close(se),G},writeFile:function(F,K,G){G=G||{},G.flags=G.flags||577;var se=$.open(F,G.flags,G.mode);if(typeof K=="string"){var ce=new Uint8Array(qe(K)+1),xe=Qt(K,ce,0,ce.length);$.write(se,ce,0,xe,void 0,G.canOwn)}else if(ArrayBuffer.isView(K))$.write(se,K,0,K.byteLength,void 0,G.canOwn);else throw new Error("Unsupported data type");$.close(se)},cwd:function(){return $.currentPath},chdir:function(F){var K=$.lookupPath(F,{follow:!0});if(K.node===null)throw new $.ErrnoError(44);if(!$.isDir(K.node.mode))throw new $.ErrnoError(54);var G=$.nodePermissions(K.node,"x");if(G)throw new $.ErrnoError(G);$.currentPath=K.path},createDefaultDirectories:function(){$.mkdir("/tmp"),$.mkdir("/home"),$.mkdir("/home/web_user")},createDefaultDevices:function(){$.mkdir("/dev"),$.registerDevice($.makedev(1,3),{read:function(){return 0},write:function(K,G,se,ce,xe){return ce}}),$.mkdev("/dev/null",$.makedev(1,3)),fs.register($.makedev(5,0),fs.default_tty_ops),fs.register($.makedev(6,0),fs.default_tty1_ops),$.mkdev("/dev/tty",$.makedev(5,0)),$.mkdev("/dev/tty1",$.makedev(6,0));var F=Xi();$.createDevice("/dev","random",F),$.createDevice("/dev","urandom",F),$.mkdir("/dev/shm"),$.mkdir("/dev/shm/tmp")},createSpecialDirectories:function(){$.mkdir("/proc");var F=$.mkdir("/proc/self");$.mkdir("/proc/self/fd"),$.mount({mount:function(){var K=$.createNode(F,"fd",16895,73);return K.node_ops={lookup:function(G,se){var ce=+se,xe=$.getStream(ce);if(!xe)throw new $.ErrnoError(8);var Je={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:function(){return xe.path}}};return Je.parent=Je,Je}},K}},{},"/proc/self/fd")},createStandardStreams:function(){r.stdin?$.createDevice("/dev","stdin",r.stdin):$.symlink("/dev/tty","/dev/stdin"),r.stdout?$.createDevice("/dev","stdout",null,r.stdout):$.symlink("/dev/tty","/dev/stdout"),r.stderr?$.createDevice("/dev","stderr",null,r.stderr):$.symlink("/dev/tty1","/dev/stderr");var F=$.open("/dev/stdin",0),K=$.open("/dev/stdout",1),G=$.open("/dev/stderr",1)},ensureErrnoError:function(){$.ErrnoError||($.ErrnoError=function(K,G){this.node=G,this.setErrno=function(se){this.errno=se},this.setErrno(K),this.message="FS error"},$.ErrnoError.prototype=new Error,$.ErrnoError.prototype.constructor=$.ErrnoError,[44].forEach(function(F){$.genericErrors[F]=new $.ErrnoError(F),$.genericErrors[F].stack=""}))},staticInit:function(){$.ensureErrnoError(),$.nameTable=new Array(4096),$.mount(kr,{},"/"),$.createDefaultDirectories(),$.createDefaultDevices(),$.createSpecialDirectories(),$.filesystems={MEMFS:kr,NODEFS:fr}},init:function(F,K,G){$.init.initialized=!0,$.ensureErrnoError(),r.stdin=F||r.stdin,r.stdout=K||r.stdout,r.stderr=G||r.stderr,$.createStandardStreams()},quit:function(){$.init.initialized=!1;var F=r._fflush;F&&F(0);for(var K=0;K<$.streams.length;K++){var G=$.streams[K];!G||$.close(G)}},getMode:function(F,K){var G=0;return F&&(G|=365),K&&(G|=146),G},findObject:function(F,K){var G=$.analyzePath(F,K);return G.exists?G.object:null},analyzePath:function(F,K){try{var G=$.lookupPath(F,{follow:!K});F=G.path}catch{}var se={isRoot:!1,exists:!1,error:0,name:null,path:null,object:null,parentExists:!1,parentPath:null,parentObject:null};try{var G=$.lookupPath(F,{parent:!0});se.parentExists=!0,se.parentPath=G.path,se.parentObject=G.node,se.name=Dt.basename(F),G=$.lookupPath(F,{follow:!K}),se.exists=!0,se.path=G.path,se.object=G.node,se.name=G.node.name,se.isRoot=G.path==="/"}catch(ce){se.error=ce.errno}return se},createPath:function(F,K,G,se){F=typeof F=="string"?F:$.getPath(F);for(var ce=K.split("/").reverse();ce.length;){var xe=ce.pop();if(!!xe){var Je=Dt.join2(F,xe);try{$.mkdir(Je)}catch{}F=Je}}return Je},createFile:function(F,K,G,se,ce){var xe=Dt.join2(typeof F=="string"?F:$.getPath(F),K),Je=$.getMode(se,ce);return $.create(xe,Je)},createDataFile:function(F,K,G,se,ce,xe){var Je=K?Dt.join2(typeof F=="string"?F:$.getPath(F),K):F,ut=$.getMode(se,ce),Rt=$.create(Je,ut);if(G){if(typeof G=="string"){for(var Ar=new Array(G.length),er=0,st=G.length;erthis.length-1||Cr<0)){var or=Cr%this.chunkSize,qr=Cr/this.chunkSize|0;return this.getter(qr)[or]}},xe.prototype.setDataGetter=function(Cr){this.getter=Cr},xe.prototype.cacheLength=function(){var Cr=new XMLHttpRequest;if(Cr.open("HEAD",G,!1),Cr.send(null),!(Cr.status>=200&&Cr.status<300||Cr.status===304))throw new Error("Couldn't load "+G+". Status: "+Cr.status);var or=Number(Cr.getResponseHeader("Content-length")),qr,ui=(qr=Cr.getResponseHeader("Accept-Ranges"))&&qr==="bytes",_s=(qr=Cr.getResponseHeader("Content-Encoding"))&&qr==="gzip",ts=1024*1024;ui||(ts=or);var xo=function(oo,ns){if(oo>ns)throw new Error("invalid range ("+oo+", "+ns+") or no bytes requested!");if(ns>or-1)throw new Error("only "+or+" bytes available! programmer error!");var Vn=new XMLHttpRequest;if(Vn.open("GET",G,!1),or!==ts&&Vn.setRequestHeader("Range","bytes="+oo+"-"+ns),typeof Uint8Array<"u"&&(Vn.responseType="arraybuffer"),Vn.overrideMimeType&&Vn.overrideMimeType("text/plain; charset=x-user-defined"),Vn.send(null),!(Vn.status>=200&&Vn.status<300||Vn.status===304))throw new Error("Couldn't load "+G+". Status: "+Vn.status);return Vn.response!==void 0?new Uint8Array(Vn.response||[]):li(Vn.responseText||"",!0)},rs=this;rs.setDataGetter(function(oo){var ns=oo*ts,Vn=(oo+1)*ts-1;if(Vn=Math.min(Vn,or-1),typeof rs.chunks[oo]>"u"&&(rs.chunks[oo]=xo(ns,Vn)),typeof rs.chunks[oo]>"u")throw new Error("doXHR failed!");return rs.chunks[oo]}),(_s||!or)&&(ts=or=1,or=this.getter(0).length,ts=or,X("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=or,this._chunkSize=ts,this.lengthKnown=!0},typeof XMLHttpRequest<"u"){if(!E)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var Je=new xe;Object.defineProperties(Je,{length:{get:function(){return this.lengthKnown||this.cacheLength(),this._length}},chunkSize:{get:function(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}});var ut={isDevice:!1,contents:Je}}else var ut={isDevice:!1,url:G};var Rt=$.createFile(F,K,ut,se,ce);ut.contents?Rt.contents=ut.contents:ut.url&&(Rt.contents=null,Rt.url=ut.url),Object.defineProperties(Rt,{usedBytes:{get:function(){return this.contents.length}}});var Ar={},er=Object.keys(Rt.stream_ops);return er.forEach(function(st){var Cr=Rt.stream_ops[st];Ar[st]=function(){return $.forceLoadFile(Rt),Cr.apply(null,arguments)}}),Ar.read=function(Cr,or,qr,ui,_s){$.forceLoadFile(Rt);var ts=Cr.node.contents;if(_s>=ts.length)return 0;var xo=Math.min(ts.length-_s,ui);if(ts.slice)for(var rs=0;rs>2)*4,se.dev),Xt((G+4>>2)*4,0),Xt((G+8>>2)*4,se.ino),Xt((G+12>>2)*4,se.mode),Xt((G+16>>2)*4,se.nlink),Xt((G+20>>2)*4,se.uid),Xt((G+24>>2)*4,se.gid),Xt((G+28>>2)*4,se.rdev),Xt((G+32>>2)*4,0),Hi=[se.size>>>0,(Yn=se.size,+Math.abs(Yn)>=1?Yn>0?(Math.min(+Math.floor(Yn/4294967296),4294967295)|0)>>>0:~~+Math.ceil((Yn-+(~~Yn>>>0))/4294967296)>>>0:0)],Xt((G+40>>2)*4,Hi[0]),Xt((G+44>>2)*4,Hi[1]),Xt((G+48>>2)*4,4096),Xt((G+52>>2)*4,se.blocks),Xt((G+56>>2)*4,se.atime.getTime()/1e3|0),Xt((G+60>>2)*4,0),Xt((G+64>>2)*4,se.mtime.getTime()/1e3|0),Xt((G+68>>2)*4,0),Xt((G+72>>2)*4,se.ctime.getTime()/1e3|0),Xt((G+76>>2)*4,0),Hi=[se.ino>>>0,(Yn=se.ino,+Math.abs(Yn)>=1?Yn>0?(Math.min(+Math.floor(Yn/4294967296),4294967295)|0)>>>0:~~+Math.ceil((Yn-+(~~Yn>>>0))/4294967296)>>>0:0)],Xt((G+80>>2)*4,Hi[0]),Xt((G+84>>2)*4,Hi[1]),0},doMsync:function(F,K,G,se,ce){var xe=k.slice(F,F+G);$.msync(K,xe,ce,G,se)},doMkdir:function(F,K){return F=Dt.normalize(F),F[F.length-1]==="/"&&(F=F.substr(0,F.length-1)),$.mkdir(F,K,0),0},doMknod:function(F,K,G){switch(K&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}return $.mknod(F,K,G),0},doReadlink:function(F,K,G){if(G<=0)return-28;var se=$.readlink(F),ce=Math.min(G,qe(se)),xe=Oe[K+ce];return He(se,K,G+1),Oe[K+ce]=xe,ce},doAccess:function(F,K){if(K&-8)return-28;var G,se=$.lookupPath(F,{follow:!0});if(G=se.node,!G)return-44;var ce="";return K&4&&(ce+="r"),K&2&&(ce+="w"),K&1&&(ce+="x"),ce&&$.nodePermissions(G,ce)?-2:0},doDup:function(F,K,G){var se=$.getStream(G);return se&&$.close(se),$.open(F,K,0,G,G).fd},doReadv:function(F,K,G,se){for(var ce=0,xe=0;xe>2)*4),ut=Wn((K+(xe*8+4)>>2)*4),Rt=$.read(F,Oe,Je,ut,se);if(Rt<0)return-1;if(ce+=Rt,Rt>2)*4),ut=Wn((K+(xe*8+4)>>2)*4),Rt=$.write(F,Oe,Je,ut,se);if(Rt<0)return-1;ce+=Rt}return ce},varargs:void 0,get:function(){rn.varargs+=4;var F=Wn((rn.varargs-4>>2)*4);return F},getStr:function(F){var K=q(F);return K},getStreamFromFD:function(F){var K=$.getStream(F);if(!K)throw new $.ErrnoError(8);return K},get64:function(F,K){return F}};function we(F,K){try{return F=rn.getStr(F),$.chmod(F,K),0}catch(G){return(typeof $>"u"||!(G instanceof $.ErrnoError))&&gn(G),-G.errno}}function Ot(F){return Xt((_c()>>2)*4,F),F}function _A(F,K,G){rn.varargs=G;try{var se=rn.getStreamFromFD(F);switch(K){case 0:{var ce=rn.get();if(ce<0)return-28;var xe;return xe=$.open(se.path,se.flags,0,ce),xe.fd}case 1:case 2:return 0;case 3:return se.flags;case 4:{var ce=rn.get();return se.flags|=ce,0}case 12:{var ce=rn.get(),Je=0;return ii((ce+Je>>1)*2,2),0}case 13:case 14:return 0;case 16:case 8:return-28;case 9:return Ot(28),-1;default:return-28}}catch(ut){return(typeof $>"u"||!(ut instanceof $.ErrnoError))&&gn(ut),-ut.errno}}function Zi(F,K){try{var G=rn.getStreamFromFD(F);return rn.doStat($.stat,G.path,K)}catch(se){return(typeof $>"u"||!(se instanceof $.ErrnoError))&&gn(se),-se.errno}}function _l(F,K,G){rn.varargs=G;try{var se=rn.getStreamFromFD(F);switch(K){case 21509:case 21505:return se.tty?0:-59;case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:return se.tty?0:-59;case 21519:{if(!se.tty)return-59;var ce=rn.get();return Xt((ce>>2)*4,0),0}case 21520:return se.tty?-28:-59;case 21531:{var ce=rn.get();return $.ioctl(se,K,ce)}case 21523:return se.tty?0:-59;case 21524:return se.tty?0:-59;default:gn("bad ioctl syscall "+K)}}catch(xe){return(typeof $>"u"||!(xe instanceof $.ErrnoError))&&gn(xe),-xe.errno}}function jt(F,K,G){rn.varargs=G;try{var se=rn.getStr(F),ce=G?rn.get():0,xe=$.open(se,K,ce);return xe.fd}catch(Je){return(typeof $>"u"||!(Je instanceof $.ErrnoError))&&gn(Je),-Je.errno}}function oA(F,K){try{return F=rn.getStr(F),K=rn.getStr(K),$.rename(F,K),0}catch(G){return(typeof $>"u"||!(G instanceof $.ErrnoError))&&gn(G),-G.errno}}function Lc(F){try{return F=rn.getStr(F),$.rmdir(F),0}catch(K){return(typeof $>"u"||!(K instanceof $.ErrnoError))&&gn(K),-K.errno}}function ef(F,K){try{return F=rn.getStr(F),rn.doStat($.stat,F,K)}catch(G){return(typeof $>"u"||!(G instanceof $.ErrnoError))&&gn(G),-G.errno}}function HA(F){try{return F=rn.getStr(F),$.unlink(F),0}catch(K){return(typeof $>"u"||!(K instanceof $.ErrnoError))&&gn(K),-K.errno}}function Oc(F,K,G){k.copyWithin(F,K,K+G)}function Ln(F){try{return h.grow(F-pt.byteLength+65535>>>16),Ae(h.buffer),1}catch{}}function mi(F){var K=k.length;F=F>>>0;var G=2147483648;if(F>G)return!1;for(var se=1;se<=4;se*=2){var ce=K*(1+.2/se);ce=Math.min(ce,F+100663296);var xe=Math.min(G,We(Math.max(F,ce),65536)),Je=Ln(xe);if(Je)return!0}return!1}function qA(F){try{var K=rn.getStreamFromFD(F);return $.close(K),0}catch(G){return(typeof $>"u"||!(G instanceof $.ErrnoError))&&gn(G),G.errno}}function Uc(F,K){try{var G=rn.getStreamFromFD(F),se=G.tty?2:$.isDir(G.mode)?3:$.isLink(G.mode)?7:4;return Oe[K>>0]=se,0}catch(ce){return(typeof $>"u"||!(ce instanceof $.ErrnoError))&&gn(ce),ce.errno}}function ea(F,K,G,se){try{var ce=rn.getStreamFromFD(F),xe=rn.doReadv(ce,K,G);return Xt((se>>2)*4,xe),0}catch(Je){return(typeof $>"u"||!(Je instanceof $.ErrnoError))&&gn(Je),Je.errno}}function $i(F,K,G,se,ce){try{var xe=rn.getStreamFromFD(F),Je=4294967296,ut=G*Je+(K>>>0),Rt=9007199254740992;return ut<=-Rt||ut>=Rt?-61:($.llseek(xe,ut,se),Hi=[xe.position>>>0,(Yn=xe.position,+Math.abs(Yn)>=1?Yn>0?(Math.min(+Math.floor(Yn/4294967296),4294967295)|0)>>>0:~~+Math.ceil((Yn-+(~~Yn>>>0))/4294967296)>>>0:0)],Xt((ce>>2)*4,Hi[0]),Xt((ce+4>>2)*4,Hi[1]),xe.getdents&&ut===0&&se===0&&(xe.getdents=null),0)}catch(Ar){return(typeof $>"u"||!(Ar instanceof $.ErrnoError))&&gn(Ar),Ar.errno}}function vo(F,K,G,se){try{var ce=rn.getStreamFromFD(F),xe=rn.doWritev(ce,K,G);return Xt((se>>2)*4,xe),0}catch(Je){return(typeof $>"u"||!(Je instanceof $.ErrnoError))&&gn(Je),Je.errno}}function it(F){Pe(F)}function eo(F){var K=Date.now()/1e3|0;return F&&Xt((F>>2)*4,K),K}function Sa(){if(Sa.called)return;Sa.called=!0;var F=new Date().getFullYear(),K=new Date(F,0,1),G=new Date(F,6,1),se=K.getTimezoneOffset(),ce=G.getTimezoneOffset(),xe=Math.max(se,ce);Xt((wt()>>2)*4,xe*60),Xt((J()>>2)*4,Number(se!=ce));function Je(st){var Cr=st.toTimeString().match(/\(([A-Za-z ]+)\)$/);return Cr?Cr[1]:"GMT"}var ut=Je(K),Rt=Je(G),Ar=Fe(ut),er=Fe(Rt);ce>2)*4,Ar),Xt((ko()+4>>2)*4,er)):(Xt((ko()>>2)*4,er),Xt((ko()+4>>2)*4,Ar))}function Hl(F){Sa();var K=Date.UTC(Wn((F+20>>2)*4)+1900,Wn((F+16>>2)*4),Wn((F+12>>2)*4),Wn((F+8>>2)*4),Wn((F+4>>2)*4),Wn((F>>2)*4),0),G=new Date(K);Xt((F+24>>2)*4,G.getUTCDay());var se=Date.UTC(G.getUTCFullYear(),0,1,0,0,0,0),ce=(G.getTime()-se)/(1e3*60*60*24)|0;return Xt((F+28>>2)*4,ce),G.getTime()/1e3|0}var qi=function(F,K,G,se){F||(F=this),this.parent=F,this.mount=F.mount,this.mounted=null,this.id=$.nextInode++,this.name=K,this.mode=G,this.node_ops={},this.stream_ops={},this.rdev=se},ka=365,aA=146;if(Object.defineProperties(qi.prototype,{read:{get:function(){return(this.mode&ka)===ka},set:function(F){F?this.mode|=ka:this.mode&=~ka}},write:{get:function(){return(this.mode&aA)===aA},set:function(F){F?this.mode|=aA:this.mode&=~aA}},isFolder:{get:function(){return $.isDir(this.mode)}},isDevice:{get:function(){return $.isChrdev(this.mode)}}}),$.FSNode=qi,$.staticInit(),B){var Sr=xW,AA=Ie("path");fr.staticInit()}if(B){var Bs=function(F){return function(){try{return F.apply(this,arguments)}catch(K){throw K.code?new $.ErrnoError(Qo[K.code]):K}}},Ut=Object.assign({},$);for(var bn in Da)$[bn]=Bs(Da[bn])}else throw new Error("NODERAWFS is currently only supported on Node.js environment.");function li(F,K,G){var se=G>0?G:qe(F)+1,ce=new Array(se),xe=Qt(F,ce,0,ce.length);return K&&(ce.length=xe),ce}var ta=typeof atob=="function"?atob:function(F){var K="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",G="",se,ce,xe,Je,ut,Rt,Ar,er=0;F=F.replace(/[^A-Za-z0-9\+\/\=]/g,"");do Je=K.indexOf(F.charAt(er++)),ut=K.indexOf(F.charAt(er++)),Rt=K.indexOf(F.charAt(er++)),Ar=K.indexOf(F.charAt(er++)),se=Je<<2|ut>>4,ce=(ut&15)<<4|Rt>>2,xe=(Rt&3)<<6|Ar,G=G+String.fromCharCode(se),Rt!==64&&(G=G+String.fromCharCode(ce)),Ar!==64&&(G=G+String.fromCharCode(xe));while(er0||(Pt(),vn>0))return;function K(){ct||(ct=!0,r.calledRun=!0,!Ke&&(mn(),o(r),r.onRuntimeInitialized&&r.onRuntimeInitialized(),Or()))}r.setStatus?(r.setStatus("Running..."),setTimeout(function(){setTimeout(function(){r.setStatus("")},1),K()},1)):K()}if(r.run=Ra,r.preInit)for(typeof r.preInit=="function"&&(r.preInit=[r.preInit]);r.preInit.length>0;)r.preInit.pop()();return Ra(),e}}();typeof _v=="object"&&typeof RT=="object"?RT.exports=FT:typeof define=="function"&&define.amd?define([],function(){return FT}):typeof _v=="object"&&(_v.createModule=FT)});var Uf,bW,FW,RW=Lt(()=>{Uf=["number","number"],bW=(re=>(re[re.ZIP_ER_OK=0]="ZIP_ER_OK",re[re.ZIP_ER_MULTIDISK=1]="ZIP_ER_MULTIDISK",re[re.ZIP_ER_RENAME=2]="ZIP_ER_RENAME",re[re.ZIP_ER_CLOSE=3]="ZIP_ER_CLOSE",re[re.ZIP_ER_SEEK=4]="ZIP_ER_SEEK",re[re.ZIP_ER_READ=5]="ZIP_ER_READ",re[re.ZIP_ER_WRITE=6]="ZIP_ER_WRITE",re[re.ZIP_ER_CRC=7]="ZIP_ER_CRC",re[re.ZIP_ER_ZIPCLOSED=8]="ZIP_ER_ZIPCLOSED",re[re.ZIP_ER_NOENT=9]="ZIP_ER_NOENT",re[re.ZIP_ER_EXISTS=10]="ZIP_ER_EXISTS",re[re.ZIP_ER_OPEN=11]="ZIP_ER_OPEN",re[re.ZIP_ER_TMPOPEN=12]="ZIP_ER_TMPOPEN",re[re.ZIP_ER_ZLIB=13]="ZIP_ER_ZLIB",re[re.ZIP_ER_MEMORY=14]="ZIP_ER_MEMORY",re[re.ZIP_ER_CHANGED=15]="ZIP_ER_CHANGED",re[re.ZIP_ER_COMPNOTSUPP=16]="ZIP_ER_COMPNOTSUPP",re[re.ZIP_ER_EOF=17]="ZIP_ER_EOF",re[re.ZIP_ER_INVAL=18]="ZIP_ER_INVAL",re[re.ZIP_ER_NOZIP=19]="ZIP_ER_NOZIP",re[re.ZIP_ER_INTERNAL=20]="ZIP_ER_INTERNAL",re[re.ZIP_ER_INCONS=21]="ZIP_ER_INCONS",re[re.ZIP_ER_REMOVE=22]="ZIP_ER_REMOVE",re[re.ZIP_ER_DELETED=23]="ZIP_ER_DELETED",re[re.ZIP_ER_ENCRNOTSUPP=24]="ZIP_ER_ENCRNOTSUPP",re[re.ZIP_ER_RDONLY=25]="ZIP_ER_RDONLY",re[re.ZIP_ER_NOPASSWD=26]="ZIP_ER_NOPASSWD",re[re.ZIP_ER_WRONGPASSWD=27]="ZIP_ER_WRONGPASSWD",re[re.ZIP_ER_OPNOTSUPP=28]="ZIP_ER_OPNOTSUPP",re[re.ZIP_ER_INUSE=29]="ZIP_ER_INUSE",re[re.ZIP_ER_TELL=30]="ZIP_ER_TELL",re[re.ZIP_ER_COMPRESSED_DATA=31]="ZIP_ER_COMPRESSED_DATA",re))(bW||{}),FW=t=>({get HEAP8(){return t.HEAP8},get HEAPU8(){return t.HEAPU8},errors:bW,SEEK_SET:0,SEEK_CUR:1,SEEK_END:2,ZIP_CHECKCONS:4,ZIP_CREATE:1,ZIP_EXCL:2,ZIP_TRUNCATE:8,ZIP_RDONLY:16,ZIP_FL_OVERWRITE:8192,ZIP_FL_COMPRESSED:4,ZIP_OPSYS_DOS:0,ZIP_OPSYS_AMIGA:1,ZIP_OPSYS_OPENVMS:2,ZIP_OPSYS_UNIX:3,ZIP_OPSYS_VM_CMS:4,ZIP_OPSYS_ATARI_ST:5,ZIP_OPSYS_OS_2:6,ZIP_OPSYS_MACINTOSH:7,ZIP_OPSYS_Z_SYSTEM:8,ZIP_OPSYS_CPM:9,ZIP_OPSYS_WINDOWS_NTFS:10,ZIP_OPSYS_MVS:11,ZIP_OPSYS_VSE:12,ZIP_OPSYS_ACORN_RISC:13,ZIP_OPSYS_VFAT:14,ZIP_OPSYS_ALTERNATE_MVS:15,ZIP_OPSYS_BEOS:16,ZIP_OPSYS_TANDEM:17,ZIP_OPSYS_OS_400:18,ZIP_OPSYS_OS_X:19,ZIP_CM_DEFAULT:-1,ZIP_CM_STORE:0,ZIP_CM_DEFLATE:8,uint08S:t._malloc(1),uint16S:t._malloc(2),uint32S:t._malloc(4),uint64S:t._malloc(8),malloc:t._malloc,free:t._free,getValue:t.getValue,open:t.cwrap("zip_open","number",["string","number","number"]),openFromSource:t.cwrap("zip_open_from_source","number",["number","number","number"]),close:t.cwrap("zip_close","number",["number"]),discard:t.cwrap("zip_discard",null,["number"]),getError:t.cwrap("zip_get_error","number",["number"]),getName:t.cwrap("zip_get_name","string",["number","number","number"]),getNumEntries:t.cwrap("zip_get_num_entries","number",["number","number"]),delete:t.cwrap("zip_delete","number",["number","number"]),stat:t.cwrap("zip_stat","number",["number","string","number","number"]),statIndex:t.cwrap("zip_stat_index","number",["number",...Uf,"number","number"]),fopen:t.cwrap("zip_fopen","number",["number","string","number"]),fopenIndex:t.cwrap("zip_fopen_index","number",["number",...Uf,"number"]),fread:t.cwrap("zip_fread","number",["number","number","number","number"]),fclose:t.cwrap("zip_fclose","number",["number"]),dir:{add:t.cwrap("zip_dir_add","number",["number","string"])},file:{add:t.cwrap("zip_file_add","number",["number","string","number","number"]),getError:t.cwrap("zip_file_get_error","number",["number"]),getExternalAttributes:t.cwrap("zip_file_get_external_attributes","number",["number",...Uf,"number","number","number"]),setExternalAttributes:t.cwrap("zip_file_set_external_attributes","number",["number",...Uf,"number","number","number"]),setMtime:t.cwrap("zip_file_set_mtime","number",["number",...Uf,"number","number"]),setCompression:t.cwrap("zip_set_file_compression","number",["number",...Uf,"number","number"])},ext:{countSymlinks:t.cwrap("zip_ext_count_symlinks","number",["number"])},error:{initWithCode:t.cwrap("zip_error_init_with_code",null,["number","number"]),strerror:t.cwrap("zip_error_strerror","string",["number"])},name:{locate:t.cwrap("zip_name_locate","number",["number","string","number"])},source:{fromUnattachedBuffer:t.cwrap("zip_source_buffer_create","number",["number",...Uf,"number","number"]),fromBuffer:t.cwrap("zip_source_buffer","number",["number","number",...Uf,"number"]),free:t.cwrap("zip_source_free",null,["number"]),keep:t.cwrap("zip_source_keep",null,["number"]),open:t.cwrap("zip_source_open","number",["number"]),close:t.cwrap("zip_source_close","number",["number"]),seek:t.cwrap("zip_source_seek","number",["number",...Uf,"number"]),tell:t.cwrap("zip_source_tell","number",["number"]),read:t.cwrap("zip_source_read","number",["number","number","number"]),error:t.cwrap("zip_source_error","number",["number"]),setMtime:t.cwrap("zip_source_set_mtime","number",["number","number"])},struct:{stat:t.cwrap("zipstruct_stat","number",[]),statS:t.cwrap("zipstruct_statS","number",[]),statName:t.cwrap("zipstruct_stat_name","string",["number"]),statIndex:t.cwrap("zipstruct_stat_index","number",["number"]),statSize:t.cwrap("zipstruct_stat_size","number",["number"]),statCompSize:t.cwrap("zipstruct_stat_comp_size","number",["number"]),statCompMethod:t.cwrap("zipstruct_stat_comp_method","number",["number"]),statMtime:t.cwrap("zipstruct_stat_mtime","number",["number"]),statCrc:t.cwrap("zipstruct_stat_crc","number",["number"]),error:t.cwrap("zipstruct_error","number",[]),errorS:t.cwrap("zipstruct_errorS","number",[]),errorCodeZip:t.cwrap("zipstruct_error_code_zip","number",["number"])}})});function TT(t,e){let r=t.indexOf(e);if(r<=0)return null;let o=r;for(;r>=0&&(o=r+e.length,t[o]!==ee.sep);){if(t[r-1]===ee.sep)return null;r=t.indexOf(e,o)}return t.length>o&&t[o]!==ee.sep?null:t.slice(0,o)}var ll,TW=Lt(()=>{Ft();Ft();oc();ll=class extends up{static async openPromise(e,r){let o=new ll(r);try{return await e(o)}finally{o.saveAndClose()}}constructor(e={}){let r=e.fileExtensions,o=e.readOnlyArchives,a=typeof r>"u"?f=>TT(f,".zip"):f=>{for(let g of r){let p=TT(f,g);if(p)return p}return null},n=(f,g)=>new Fs(g,{baseFs:f,readOnly:o,stats:f.statSync(g)}),c=async(f,g)=>{let p={baseFs:f,readOnly:o,stats:await f.statPromise(g)};return()=>new Fs(g,p)};super({...e,factorySync:n,factoryPromise:c,getMountPoint:a})}}});function e_e(t){if(typeof t=="string"&&String(+t)===t)return+t;if(typeof t=="number"&&Number.isFinite(t))return t<0?Date.now()/1e3:t;if(NW.types.isDate(t))return t.getTime()/1e3;throw new Error("Invalid time")}function LT(){return Buffer.from([80,75,5,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0])}var ua,NT,NW,MT,My,Hv,Fs,OT=Lt(()=>{Ft();Ft();Ft();Ft();Ft();Ft();ua=Ie("fs"),NT=Ie("stream"),NW=Ie("util"),MT=be(Ie("zlib"));bT();My="mixed";Hv=class extends Error{constructor(r,o){super(r);this.name="Libzip Error",this.code=o}},Fs=class extends ou{constructor(r,o={}){super();this.lzSource=null;this.listings=new Map;this.entries=new Map;this.fileSources=new Map;this.fds=new Map;this.nextFd=0;this.ready=!1;this.readOnly=!1;let a=o;if(this.level=typeof a.level<"u"?a.level:My,r??(r=LT()),typeof r=="string"){let{baseFs:f=new jn}=a;this.baseFs=f,this.path=r}else this.path=null,this.baseFs=null;if(o.stats)this.stats=o.stats;else if(typeof r=="string")try{this.stats=this.baseFs.statSync(r)}catch(f){if(f.code==="ENOENT"&&a.create)this.stats=Al.makeDefaultStats();else throw f}else this.stats=Al.makeDefaultStats();this.libzip=iw();let n=this.libzip.malloc(4);try{let f=0;if(typeof r=="string"&&a.create&&(f|=this.libzip.ZIP_CREATE|this.libzip.ZIP_TRUNCATE),o.readOnly&&(f|=this.libzip.ZIP_RDONLY,this.readOnly=!0),typeof r=="string")this.zip=this.libzip.open(me.fromPortablePath(r),f,n);else{let g=this.allocateUnattachedSource(r);try{this.zip=this.libzip.openFromSource(g,f,n),this.lzSource=g}catch(p){throw this.libzip.source.free(g),p}}if(this.zip===0){let g=this.libzip.struct.errorS();throw this.libzip.error.initWithCode(g,this.libzip.getValue(n,"i32")),this.makeLibzipError(g)}}finally{this.libzip.free(n)}this.listings.set(Bt.root,new Set);let c=this.libzip.getNumEntries(this.zip,0);for(let f=0;fr)throw new Error("Overread");let n=this.libzip.HEAPU8.subarray(o,o+r);return Buffer.from(n)}finally{this.libzip.free(o)}}finally{this.libzip.source.close(this.lzSource),this.libzip.source.free(this.lzSource),this.ready=!1}}prepareClose(){if(!this.ready)throw hr.EBUSY("archive closed, close");ld(this)}saveAndClose(){if(!this.path||!this.baseFs)throw new Error("ZipFS cannot be saved and must be discarded when loaded from a buffer");if(this.prepareClose(),this.readOnly){this.discardAndClose();return}let r=this.baseFs.existsSync(this.path)||this.stats.mode===Al.DEFAULT_MODE?void 0:this.stats.mode;if(this.entries.size===0)this.discardAndClose(),this.baseFs.writeFileSync(this.path,LT(),{mode:r});else{if(this.libzip.close(this.zip)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));typeof r<"u"&&this.baseFs.chmodSync(this.path,r)}this.ready=!1}discardAndClose(){this.prepareClose(),this.libzip.discard(this.zip),this.ready=!1}resolve(r){return ee.resolve(Bt.root,r)}async openPromise(r,o,a){return this.openSync(r,o,a)}openSync(r,o,a){let n=this.nextFd++;return this.fds.set(n,{cursor:0,p:r}),n}hasOpenFileHandles(){return!!this.fds.size}async opendirPromise(r,o){return this.opendirSync(r,o)}opendirSync(r,o={}){let a=this.resolveFilename(`opendir '${r}'`,r);if(!this.entries.has(a)&&!this.listings.has(a))throw hr.ENOENT(`opendir '${r}'`);let n=this.listings.get(a);if(!n)throw hr.ENOTDIR(`opendir '${r}'`);let c=[...n],f=this.openSync(a,"r");return Rv(this,a,c,{onClose:()=>{this.closeSync(f)}})}async readPromise(r,o,a,n,c){return this.readSync(r,o,a,n,c)}readSync(r,o,a=0,n=o.byteLength,c=-1){let f=this.fds.get(r);if(typeof f>"u")throw hr.EBADF("read");let g=c===-1||c===null?f.cursor:c,p=this.readFileSync(f.p);p.copy(o,a,g,g+n);let E=Math.max(0,Math.min(p.length-g,n));return(c===-1||c===null)&&(f.cursor+=E),E}async writePromise(r,o,a,n,c){return typeof o=="string"?this.writeSync(r,o,c):this.writeSync(r,o,a,n,c)}writeSync(r,o,a,n,c){throw typeof this.fds.get(r)>"u"?hr.EBADF("read"):new Error("Unimplemented")}async closePromise(r){return this.closeSync(r)}closeSync(r){if(typeof this.fds.get(r)>"u")throw hr.EBADF("read");this.fds.delete(r)}createReadStream(r,{encoding:o}={}){if(r===null)throw new Error("Unimplemented");let a=this.openSync(r,"r"),n=Object.assign(new NT.PassThrough({emitClose:!0,autoDestroy:!0,destroy:(f,g)=>{clearImmediate(c),this.closeSync(a),g(f)}}),{close(){n.destroy()},bytesRead:0,path:r,pending:!1}),c=setImmediate(async()=>{try{let f=await this.readFilePromise(r,o);n.bytesRead=f.length,n.end(f)}catch(f){n.destroy(f)}});return n}createWriteStream(r,{encoding:o}={}){if(this.readOnly)throw hr.EROFS(`open '${r}'`);if(r===null)throw new Error("Unimplemented");let a=[],n=this.openSync(r,"w"),c=Object.assign(new NT.PassThrough({autoDestroy:!0,emitClose:!0,destroy:(f,g)=>{try{f?g(f):(this.writeFileSync(r,Buffer.concat(a),o),g(null))}catch(p){g(p)}finally{this.closeSync(n)}}}),{close(){c.destroy()},bytesWritten:0,path:r,pending:!1});return c.on("data",f=>{let g=Buffer.from(f);c.bytesWritten+=g.length,a.push(g)}),c}async realpathPromise(r){return this.realpathSync(r)}realpathSync(r){let o=this.resolveFilename(`lstat '${r}'`,r);if(!this.entries.has(o)&&!this.listings.has(o))throw hr.ENOENT(`lstat '${r}'`);return o}async existsPromise(r){return this.existsSync(r)}existsSync(r){if(!this.ready)throw hr.EBUSY(`archive closed, existsSync '${r}'`);if(this.symlinkCount===0){let a=ee.resolve(Bt.root,r);return this.entries.has(a)||this.listings.has(a)}let o;try{o=this.resolveFilename(`stat '${r}'`,r,void 0,!1)}catch{return!1}return o===void 0?!1:this.entries.has(o)||this.listings.has(o)}async accessPromise(r,o){return this.accessSync(r,o)}accessSync(r,o=ua.constants.F_OK){let a=this.resolveFilename(`access '${r}'`,r);if(!this.entries.has(a)&&!this.listings.has(a))throw hr.ENOENT(`access '${r}'`);if(this.readOnly&&o&ua.constants.W_OK)throw hr.EROFS(`access '${r}'`)}async statPromise(r,o={bigint:!1}){return o.bigint?this.statSync(r,{bigint:!0}):this.statSync(r)}statSync(r,o={bigint:!1,throwIfNoEntry:!0}){let a=this.resolveFilename(`stat '${r}'`,r,void 0,o.throwIfNoEntry);if(a!==void 0){if(!this.entries.has(a)&&!this.listings.has(a)){if(o.throwIfNoEntry===!1)return;throw hr.ENOENT(`stat '${r}'`)}if(r[r.length-1]==="/"&&!this.listings.has(a))throw hr.ENOTDIR(`stat '${r}'`);return this.statImpl(`stat '${r}'`,a,o)}}async fstatPromise(r,o){return this.fstatSync(r,o)}fstatSync(r,o){let a=this.fds.get(r);if(typeof a>"u")throw hr.EBADF("fstatSync");let{p:n}=a,c=this.resolveFilename(`stat '${n}'`,n);if(!this.entries.has(c)&&!this.listings.has(c))throw hr.ENOENT(`stat '${n}'`);if(n[n.length-1]==="/"&&!this.listings.has(c))throw hr.ENOTDIR(`stat '${n}'`);return this.statImpl(`fstat '${n}'`,c,o)}async lstatPromise(r,o={bigint:!1}){return o.bigint?this.lstatSync(r,{bigint:!0}):this.lstatSync(r)}lstatSync(r,o={bigint:!1,throwIfNoEntry:!0}){let a=this.resolveFilename(`lstat '${r}'`,r,!1,o.throwIfNoEntry);if(a!==void 0){if(!this.entries.has(a)&&!this.listings.has(a)){if(o.throwIfNoEntry===!1)return;throw hr.ENOENT(`lstat '${r}'`)}if(r[r.length-1]==="/"&&!this.listings.has(a))throw hr.ENOTDIR(`lstat '${r}'`);return this.statImpl(`lstat '${r}'`,a,o)}}statImpl(r,o,a={}){let n=this.entries.get(o);if(typeof n<"u"){let c=this.libzip.struct.statS();if(this.libzip.statIndex(this.zip,n,0,0,c)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));let g=this.stats.uid,p=this.stats.gid,E=this.libzip.struct.statSize(c)>>>0,B=512,Q=Math.ceil(E/B),x=(this.libzip.struct.statMtime(c)>>>0)*1e3,C=x,N=x,U=x,H=new Date(C),X=new Date(N),ie=new Date(U),fe=new Date(x),ye=this.listings.has(o)?ua.constants.S_IFDIR:this.isSymbolicLink(n)?ua.constants.S_IFLNK:ua.constants.S_IFREG,Qe=ye===ua.constants.S_IFDIR?493:420,Pe=ye|this.getUnixMode(n,Qe)&511,pe=this.libzip.struct.statCrc(c),Ee=Object.assign(new Al.StatEntry,{uid:g,gid:p,size:E,blksize:B,blocks:Q,atime:H,birthtime:X,ctime:ie,mtime:fe,atimeMs:C,birthtimeMs:N,ctimeMs:U,mtimeMs:x,mode:Pe,crc:pe});return a.bigint===!0?Al.convertToBigIntStats(Ee):Ee}if(this.listings.has(o)){let c=this.stats.uid,f=this.stats.gid,g=0,p=512,E=0,B=this.stats.mtimeMs,Q=this.stats.mtimeMs,x=this.stats.mtimeMs,C=this.stats.mtimeMs,N=new Date(B),U=new Date(Q),H=new Date(x),X=new Date(C),ie=ua.constants.S_IFDIR|493,fe=0,ye=Object.assign(new Al.StatEntry,{uid:c,gid:f,size:g,blksize:p,blocks:E,atime:N,birthtime:U,ctime:H,mtime:X,atimeMs:B,birthtimeMs:Q,ctimeMs:x,mtimeMs:C,mode:ie,crc:fe});return a.bigint===!0?Al.convertToBigIntStats(ye):ye}throw new Error("Unreachable")}getUnixMode(r,o){if(this.libzip.file.getExternalAttributes(this.zip,r,0,0,this.libzip.uint08S,this.libzip.uint32S)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));return this.libzip.getValue(this.libzip.uint08S,"i8")>>>0!==this.libzip.ZIP_OPSYS_UNIX?o:this.libzip.getValue(this.libzip.uint32S,"i32")>>>16}registerListing(r){let o=this.listings.get(r);if(o)return o;this.registerListing(ee.dirname(r)).add(ee.basename(r));let n=new Set;return this.listings.set(r,n),n}registerEntry(r,o){this.registerListing(ee.dirname(r)).add(ee.basename(r)),this.entries.set(r,o)}unregisterListing(r){this.listings.delete(r);let o=this.listings.get(ee.dirname(r));o==null||o.delete(ee.basename(r))}unregisterEntry(r){this.unregisterListing(r);let o=this.entries.get(r);this.entries.delete(r),!(typeof o>"u")&&(this.fileSources.delete(o),this.isSymbolicLink(o)&&this.symlinkCount--)}deleteEntry(r,o){if(this.unregisterEntry(r),this.libzip.delete(this.zip,o)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip))}resolveFilename(r,o,a=!0,n=!0){if(!this.ready)throw hr.EBUSY(`archive closed, ${r}`);let c=ee.resolve(Bt.root,o);if(c==="/")return Bt.root;let f=this.entries.get(c);if(a&&f!==void 0)if(this.symlinkCount!==0&&this.isSymbolicLink(f)){let g=this.getFileSource(f).toString();return this.resolveFilename(r,ee.resolve(ee.dirname(c),g),!0,n)}else return c;for(;;){let g=this.resolveFilename(r,ee.dirname(c),!0,n);if(g===void 0)return g;let p=this.listings.has(g),E=this.entries.has(g);if(!p&&!E){if(n===!1)return;throw hr.ENOENT(r)}if(!p)throw hr.ENOTDIR(r);if(c=ee.resolve(g,ee.basename(c)),!a||this.symlinkCount===0)break;let B=this.libzip.name.locate(this.zip,c.slice(1),0);if(B===-1)break;if(this.isSymbolicLink(B)){let Q=this.getFileSource(B).toString();c=ee.resolve(ee.dirname(c),Q)}else break}return c}allocateBuffer(r){Buffer.isBuffer(r)||(r=Buffer.from(r));let o=this.libzip.malloc(r.byteLength);if(!o)throw new Error("Couldn't allocate enough memory");return new Uint8Array(this.libzip.HEAPU8.buffer,o,r.byteLength).set(r),{buffer:o,byteLength:r.byteLength}}allocateUnattachedSource(r){let o=this.libzip.struct.errorS(),{buffer:a,byteLength:n}=this.allocateBuffer(r),c=this.libzip.source.fromUnattachedBuffer(a,n,0,1,o);if(c===0)throw this.libzip.free(o),this.makeLibzipError(o);return c}allocateSource(r){let{buffer:o,byteLength:a}=this.allocateBuffer(r),n=this.libzip.source.fromBuffer(this.zip,o,a,0,1);if(n===0)throw this.libzip.free(o),this.makeLibzipError(this.libzip.getError(this.zip));return n}setFileSource(r,o){let a=Buffer.isBuffer(o)?o:Buffer.from(o),n=ee.relative(Bt.root,r),c=this.allocateSource(o);try{let f=this.libzip.file.add(this.zip,n,c,this.libzip.ZIP_FL_OVERWRITE);if(f===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));if(this.level!=="mixed"){let g=this.level===0?this.libzip.ZIP_CM_STORE:this.libzip.ZIP_CM_DEFLATE;if(this.libzip.file.setCompression(this.zip,f,0,g,this.level)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip))}return this.fileSources.set(f,a),f}catch(f){throw this.libzip.source.free(c),f}}isSymbolicLink(r){if(this.symlinkCount===0)return!1;if(this.libzip.file.getExternalAttributes(this.zip,r,0,0,this.libzip.uint08S,this.libzip.uint32S)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));return this.libzip.getValue(this.libzip.uint08S,"i8")>>>0!==this.libzip.ZIP_OPSYS_UNIX?!1:(this.libzip.getValue(this.libzip.uint32S,"i32")>>>16&ua.constants.S_IFMT)===ua.constants.S_IFLNK}getFileSource(r,o={asyncDecompress:!1}){let a=this.fileSources.get(r);if(typeof a<"u")return a;let n=this.libzip.struct.statS();if(this.libzip.statIndex(this.zip,r,0,0,n)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));let f=this.libzip.struct.statCompSize(n),g=this.libzip.struct.statCompMethod(n),p=this.libzip.malloc(f);try{let E=this.libzip.fopenIndex(this.zip,r,0,this.libzip.ZIP_FL_COMPRESSED);if(E===0)throw this.makeLibzipError(this.libzip.getError(this.zip));try{let B=this.libzip.fread(E,p,f,0);if(B===-1)throw this.makeLibzipError(this.libzip.file.getError(E));if(Bf)throw new Error("Overread");let Q=this.libzip.HEAPU8.subarray(p,p+f),x=Buffer.from(Q);if(g===0)return this.fileSources.set(r,x),x;if(o.asyncDecompress)return new Promise((C,N)=>{MT.default.inflateRaw(x,(U,H)=>{U?N(U):(this.fileSources.set(r,H),C(H))})});{let C=MT.default.inflateRawSync(x);return this.fileSources.set(r,C),C}}finally{this.libzip.fclose(E)}}finally{this.libzip.free(p)}}async fchmodPromise(r,o){return this.chmodPromise(this.fdToPath(r,"fchmod"),o)}fchmodSync(r,o){return this.chmodSync(this.fdToPath(r,"fchmodSync"),o)}async chmodPromise(r,o){return this.chmodSync(r,o)}chmodSync(r,o){if(this.readOnly)throw hr.EROFS(`chmod '${r}'`);o&=493;let a=this.resolveFilename(`chmod '${r}'`,r,!1),n=this.entries.get(a);if(typeof n>"u")throw new Error(`Assertion failed: The entry should have been registered (${a})`);let f=this.getUnixMode(n,ua.constants.S_IFREG|0)&-512|o;if(this.libzip.file.setExternalAttributes(this.zip,n,0,0,this.libzip.ZIP_OPSYS_UNIX,f<<16)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip))}async fchownPromise(r,o,a){return this.chownPromise(this.fdToPath(r,"fchown"),o,a)}fchownSync(r,o,a){return this.chownSync(this.fdToPath(r,"fchownSync"),o,a)}async chownPromise(r,o,a){return this.chownSync(r,o,a)}chownSync(r,o,a){throw new Error("Unimplemented")}async renamePromise(r,o){return this.renameSync(r,o)}renameSync(r,o){throw new Error("Unimplemented")}async copyFilePromise(r,o,a){let{indexSource:n,indexDest:c,resolvedDestP:f}=this.prepareCopyFile(r,o,a),g=await this.getFileSource(n,{asyncDecompress:!0}),p=this.setFileSource(f,g);p!==c&&this.registerEntry(f,p)}copyFileSync(r,o,a=0){let{indexSource:n,indexDest:c,resolvedDestP:f}=this.prepareCopyFile(r,o,a),g=this.getFileSource(n),p=this.setFileSource(f,g);p!==c&&this.registerEntry(f,p)}prepareCopyFile(r,o,a=0){if(this.readOnly)throw hr.EROFS(`copyfile '${r} -> '${o}'`);if((a&ua.constants.COPYFILE_FICLONE_FORCE)!==0)throw hr.ENOSYS("unsupported clone operation",`copyfile '${r}' -> ${o}'`);let n=this.resolveFilename(`copyfile '${r} -> ${o}'`,r),c=this.entries.get(n);if(typeof c>"u")throw hr.EINVAL(`copyfile '${r}' -> '${o}'`);let f=this.resolveFilename(`copyfile '${r}' -> ${o}'`,o),g=this.entries.get(f);if((a&(ua.constants.COPYFILE_EXCL|ua.constants.COPYFILE_FICLONE_FORCE))!==0&&typeof g<"u")throw hr.EEXIST(`copyfile '${r}' -> '${o}'`);return{indexSource:c,resolvedDestP:f,indexDest:g}}async appendFilePromise(r,o,a){if(this.readOnly)throw hr.EROFS(`open '${r}'`);return typeof a>"u"?a={flag:"a"}:typeof a=="string"?a={flag:"a",encoding:a}:typeof a.flag>"u"&&(a={flag:"a",...a}),this.writeFilePromise(r,o,a)}appendFileSync(r,o,a={}){if(this.readOnly)throw hr.EROFS(`open '${r}'`);return typeof a>"u"?a={flag:"a"}:typeof a=="string"?a={flag:"a",encoding:a}:typeof a.flag>"u"&&(a={flag:"a",...a}),this.writeFileSync(r,o,a)}fdToPath(r,o){var n;let a=(n=this.fds.get(r))==null?void 0:n.p;if(typeof a>"u")throw hr.EBADF(o);return a}async writeFilePromise(r,o,a){let{encoding:n,mode:c,index:f,resolvedP:g}=this.prepareWriteFile(r,a);f!==void 0&&typeof a=="object"&&a.flag&&a.flag.includes("a")&&(o=Buffer.concat([await this.getFileSource(f,{asyncDecompress:!0}),Buffer.from(o)])),n!==null&&(o=o.toString(n));let p=this.setFileSource(g,o);p!==f&&this.registerEntry(g,p),c!==null&&await this.chmodPromise(g,c)}writeFileSync(r,o,a){let{encoding:n,mode:c,index:f,resolvedP:g}=this.prepareWriteFile(r,a);f!==void 0&&typeof a=="object"&&a.flag&&a.flag.includes("a")&&(o=Buffer.concat([this.getFileSource(f),Buffer.from(o)])),n!==null&&(o=o.toString(n));let p=this.setFileSource(g,o);p!==f&&this.registerEntry(g,p),c!==null&&this.chmodSync(g,c)}prepareWriteFile(r,o){if(typeof r=="number"&&(r=this.fdToPath(r,"read")),this.readOnly)throw hr.EROFS(`open '${r}'`);let a=this.resolveFilename(`open '${r}'`,r);if(this.listings.has(a))throw hr.EISDIR(`open '${r}'`);let n=null,c=null;typeof o=="string"?n=o:typeof o=="object"&&({encoding:n=null,mode:c=null}=o);let f=this.entries.get(a);return{encoding:n,mode:c,resolvedP:a,index:f}}async unlinkPromise(r){return this.unlinkSync(r)}unlinkSync(r){if(this.readOnly)throw hr.EROFS(`unlink '${r}'`);let o=this.resolveFilename(`unlink '${r}'`,r);if(this.listings.has(o))throw hr.EISDIR(`unlink '${r}'`);let a=this.entries.get(o);if(typeof a>"u")throw hr.EINVAL(`unlink '${r}'`);this.deleteEntry(o,a)}async utimesPromise(r,o,a){return this.utimesSync(r,o,a)}utimesSync(r,o,a){if(this.readOnly)throw hr.EROFS(`utimes '${r}'`);let n=this.resolveFilename(`utimes '${r}'`,r);this.utimesImpl(n,a)}async lutimesPromise(r,o,a){return this.lutimesSync(r,o,a)}lutimesSync(r,o,a){if(this.readOnly)throw hr.EROFS(`lutimes '${r}'`);let n=this.resolveFilename(`utimes '${r}'`,r,!1);this.utimesImpl(n,a)}utimesImpl(r,o){this.listings.has(r)&&(this.entries.has(r)||this.hydrateDirectory(r));let a=this.entries.get(r);if(a===void 0)throw new Error("Unreachable");if(this.libzip.file.setMtime(this.zip,a,0,e_e(o),0)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip))}async mkdirPromise(r,o){return this.mkdirSync(r,o)}mkdirSync(r,{mode:o=493,recursive:a=!1}={}){if(a)return this.mkdirpSync(r,{chmod:o});if(this.readOnly)throw hr.EROFS(`mkdir '${r}'`);let n=this.resolveFilename(`mkdir '${r}'`,r);if(this.entries.has(n)||this.listings.has(n))throw hr.EEXIST(`mkdir '${r}'`);this.hydrateDirectory(n),this.chmodSync(n,o)}async rmdirPromise(r,o){return this.rmdirSync(r,o)}rmdirSync(r,{recursive:o=!1}={}){if(this.readOnly)throw hr.EROFS(`rmdir '${r}'`);if(o){this.removeSync(r);return}let a=this.resolveFilename(`rmdir '${r}'`,r),n=this.listings.get(a);if(!n)throw hr.ENOTDIR(`rmdir '${r}'`);if(n.size>0)throw hr.ENOTEMPTY(`rmdir '${r}'`);let c=this.entries.get(a);if(typeof c>"u")throw hr.EINVAL(`rmdir '${r}'`);this.deleteEntry(r,c)}hydrateDirectory(r){let o=this.libzip.dir.add(this.zip,ee.relative(Bt.root,r));if(o===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));return this.registerListing(r),this.registerEntry(r,o),o}async linkPromise(r,o){return this.linkSync(r,o)}linkSync(r,o){throw hr.EOPNOTSUPP(`link '${r}' -> '${o}'`)}async symlinkPromise(r,o){return this.symlinkSync(r,o)}symlinkSync(r,o){if(this.readOnly)throw hr.EROFS(`symlink '${r}' -> '${o}'`);let a=this.resolveFilename(`symlink '${r}' -> '${o}'`,o);if(this.listings.has(a))throw hr.EISDIR(`symlink '${r}' -> '${o}'`);if(this.entries.has(a))throw hr.EEXIST(`symlink '${r}' -> '${o}'`);let n=this.setFileSource(a,r);if(this.registerEntry(a,n),this.libzip.file.setExternalAttributes(this.zip,n,0,0,this.libzip.ZIP_OPSYS_UNIX,(ua.constants.S_IFLNK|511)<<16)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));this.symlinkCount+=1}async readFilePromise(r,o){typeof o=="object"&&(o=o?o.encoding:void 0);let a=await this.readFileBuffer(r,{asyncDecompress:!0});return o?a.toString(o):a}readFileSync(r,o){typeof o=="object"&&(o=o?o.encoding:void 0);let a=this.readFileBuffer(r);return o?a.toString(o):a}readFileBuffer(r,o={asyncDecompress:!1}){typeof r=="number"&&(r=this.fdToPath(r,"read"));let a=this.resolveFilename(`open '${r}'`,r);if(!this.entries.has(a)&&!this.listings.has(a))throw hr.ENOENT(`open '${r}'`);if(r[r.length-1]==="/"&&!this.listings.has(a))throw hr.ENOTDIR(`open '${r}'`);if(this.listings.has(a))throw hr.EISDIR("read");let n=this.entries.get(a);if(n===void 0)throw new Error("Unreachable");return this.getFileSource(n,o)}async readdirPromise(r,o){return this.readdirSync(r,o)}readdirSync(r,o){let a=this.resolveFilename(`scandir '${r}'`,r);if(!this.entries.has(a)&&!this.listings.has(a))throw hr.ENOENT(`scandir '${r}'`);let n=this.listings.get(a);if(!n)throw hr.ENOTDIR(`scandir '${r}'`);let c=[...n];return o!=null&&o.withFileTypes?c.map(f=>Object.assign(this.statImpl("lstat",ee.join(r,f)),{name:f})):c}async readlinkPromise(r){let o=this.prepareReadlink(r);return(await this.getFileSource(o,{asyncDecompress:!0})).toString()}readlinkSync(r){let o=this.prepareReadlink(r);return this.getFileSource(o).toString()}prepareReadlink(r){let o=this.resolveFilename(`readlink '${r}'`,r,!1);if(!this.entries.has(o)&&!this.listings.has(o))throw hr.ENOENT(`readlink '${r}'`);if(r[r.length-1]==="/"&&!this.listings.has(o))throw hr.ENOTDIR(`open '${r}'`);if(this.listings.has(o))throw hr.EINVAL(`readlink '${r}'`);let a=this.entries.get(o);if(a===void 0)throw new Error("Unreachable");if(!this.isSymbolicLink(a))throw hr.EINVAL(`readlink '${r}'`);return a}async truncatePromise(r,o=0){let a=this.resolveFilename(`open '${r}'`,r),n=this.entries.get(a);if(typeof n>"u")throw hr.EINVAL(`open '${r}'`);let c=await this.getFileSource(n,{asyncDecompress:!0}),f=Buffer.alloc(o,0);return c.copy(f),await this.writeFilePromise(r,f)}truncateSync(r,o=0){let a=this.resolveFilename(`open '${r}'`,r),n=this.entries.get(a);if(typeof n>"u")throw hr.EINVAL(`open '${r}'`);let c=this.getFileSource(n),f=Buffer.alloc(o,0);return c.copy(f),this.writeFileSync(r,f)}async ftruncatePromise(r,o){return this.truncatePromise(this.fdToPath(r,"ftruncate"),o)}ftruncateSync(r,o){return this.truncateSync(this.fdToPath(r,"ftruncateSync"),o)}watch(r,o,a){let n;switch(typeof o){case"function":case"string":case"undefined":n=!0;break;default:({persistent:n=!0}=o);break}if(!n)return{on:()=>{},close:()=>{}};let c=setInterval(()=>{},24*60*60*1e3);return{on:()=>{},close:()=>{clearInterval(c)}}}watchFile(r,o,a){let n=ee.resolve(Bt.root,r);return Py(this,n,o,a)}unwatchFile(r,o){let a=ee.resolve(Bt.root,r);return Ad(this,a,o)}}});function LW(t,e,r=Buffer.alloc(0)){let o=new Fs(r),a=E=>E.startsWith(`${e}/`)?E.slice(0,e.length):null,n=async(E,B)=>()=>o,c=(E,B)=>o,f={...t},g=new jn(f),p=new up({baseFs:g,getMountPoint:a,factoryPromise:n,factorySync:c,magicByte:21,maxAge:1/0});return rw(MW.default,new fp(p)),o}var MW,OW=Lt(()=>{Ft();MW=be(Ie("fs"));OT()});var UW=Lt(()=>{TW();OT();OW()});var sw={};tr(sw,{DEFAULT_COMPRESSION_LEVEL:()=>My,LibzipError:()=>Hv,ZipFS:()=>Fs,ZipOpenFS:()=>ll,getArchivePart:()=>TT,getLibzipPromise:()=>r_e,getLibzipSync:()=>t_e,makeEmptyArchive:()=>LT,mountMemoryDrive:()=>LW});function t_e(){return iw()}async function r_e(){return iw()}var KW,oc=Lt(()=>{bT();KW=be(PW());RW();UW();kW(()=>{let t=(0,KW.default)();return FW(t)})});var HW=_((Axt,_W)=>{"use strict";function n_e(t,e){function r(){this.constructor=t}r.prototype=e.prototype,t.prototype=new r}function gd(t,e,r,o){this.message=t,this.expected=e,this.found=r,this.location=o,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,gd)}n_e(gd,Error);gd.buildMessage=function(t,e){var r={literal:function(p){return'"'+a(p.text)+'"'},class:function(p){var E="",B;for(B=0;B0){for(B=1,Q=1;B>",S=ce(">>",!1),y=">&",R=ce(">&",!1),Z=">",te=ce(">",!1),ne="<<<",Ae=ce("<<<",!1),Re="<&",Le=ce("<&",!1),lt="<",mt=ce("<",!1),qt=function(M){return{type:"argument",segments:[].concat(...M)}},sr=function(M){return M},Pt="$'",mn=ce("$'",!1),Or="'",Fr=ce("'",!1),Ur=function(M){return[{type:"text",text:M}]},fn='""',vn=ce('""',!1),ws=function(){return{type:"text",text:""}},_i='"',wo=ce('"',!1),Bo=function(M){return M},cs=function(M){return{type:"arithmetic",arithmetic:M,quoted:!0}},gn=function(M){return{type:"shell",shell:M,quoted:!0}},$s=function(M){return{type:"variable",...M,quoted:!0}},UA=function(M){return{type:"text",text:M}},Qa=function(M){return{type:"arithmetic",arithmetic:M,quoted:!1}},Fg=function(M){return{type:"shell",shell:M,quoted:!1}},Rg=function(M){return{type:"variable",...M,quoted:!1}},$u=function(M){return{type:"glob",pattern:M}},Yn=/^[^']/,Hi=xe(["'"],!0,!1),va=function(M){return M.join("")},KA=/^[^$"]/,Xe=xe(["$",'"'],!0,!1),Wn=`\\ -`,ii=ce(`\\ -`,!1),Xt=function(){return""},Ti="\\",Jn=ce("\\",!1),us=/^[\\$"`]/,Dt=xe(["\\","$",'"',"`"],!1,!1),Xi=function(M){return M},Pn="\\a",fs=ce("\\a",!1),sA=function(){return"a"},kr="\\b",Qo=ce("\\b",!1),fr=function(){return"\b"},Da=/^[Ee]/,$=xe(["E","e"],!1,!1),rn=function(){return"\x1B"},we="\\f",Ot=ce("\\f",!1),_A=function(){return"\f"},Zi="\\n",_l=ce("\\n",!1),jt=function(){return` -`},oA="\\r",Lc=ce("\\r",!1),ef=function(){return"\r"},HA="\\t",Oc=ce("\\t",!1),Ln=function(){return" "},mi="\\v",qA=ce("\\v",!1),Uc=function(){return"\v"},ea=/^[\\'"?]/,$i=xe(["\\","'",'"',"?"],!1,!1),vo=function(M){return String.fromCharCode(parseInt(M,16))},it="\\x",eo=ce("\\x",!1),Sa="\\u",Hl=ce("\\u",!1),qi="\\U",ka=ce("\\U",!1),aA=function(M){return String.fromCodePoint(parseInt(M,16))},Sr=/^[0-7]/,AA=xe([["0","7"]],!1,!1),Bs=/^[0-9a-fA-f]/,Ut=xe([["0","9"],["a","f"],["A","f"]],!1,!1),bn=Je(),li="{}",ta=ce("{}",!1),to=function(){return"{}"},Qs="-",ra=ce("-",!1),Zt="+",na=ce("+",!1),vs=".",ro=ce(".",!1),no=function(M,z,oe){return{type:"number",value:(M==="-"?-1:1)*parseFloat(z.join("")+"."+oe.join(""))}},io=function(M,z){return{type:"number",value:(M==="-"?-1:1)*parseInt(z.join(""))}},Do=function(M){return{type:"variable",...M}},ci=function(M){return{type:"variable",name:M}},si=function(M){return M},ia="*",Us=ce("*",!1),Gi="/",GA=ce("/",!1),lA=function(M,z,oe){return{type:z==="*"?"multiplication":"division",right:oe}},ae=function(M,z){return z.reduce((oe,de)=>({left:oe,...de}),M)},ve=function(M,z,oe){return{type:z==="+"?"addition":"subtraction",right:oe}},Ye="$((",kt=ce("$((",!1),Et="))",Yt=ce("))",!1),Rr=function(M){return M},Bn="$(",xa=ce("$(",!1),O0=function(M){return M},So="${",cA=ce("${",!1),Kc=":-",jA=ce(":-",!1),_c=function(M,z){return{name:M,defaultValue:z}},Tg=":-}",ql=ce(":-}",!1),Ng=function(M){return{name:M,defaultValue:[]}},Gl=":+",so=ce(":+",!1),Hc=function(M,z){return{name:M,alternativeValue:z}},YA=":+}",sa=ce(":+}",!1),Mg=function(M){return{name:M,alternativeValue:[]}},WA=function(M){return{name:M}},U0="$",Lg=ce("$",!1),oi=function(M){return e.isGlobPattern(M)},tf=function(M){return M},Og=/^[a-zA-Z0-9_]/,qc=xe([["a","z"],["A","Z"],["0","9"],"_"],!1,!1),Ks=function(){return F()},jl=/^[$@*?#a-zA-Z0-9_\-]/,Pa=xe(["$","@","*","?","#",["a","z"],["A","Z"],["0","9"],"_","-"],!1,!1),es=/^[()}<>$|&; \t"']/,oa=xe(["(",")","}","<",">","$","|","&",";"," "," ",'"',"'"],!1,!1),Yl=/^[<>&; \t"']/,Ds=xe(["<",">","&",";"," "," ",'"',"'"],!1,!1),JA=/^[ \t]/,ko=xe([" "," "],!1,!1),J=0,wt=0,ba=[{line:1,column:1}],xi=0,Fa=[],ct=0,Ra;if("startRule"in e){if(!(e.startRule in o))throw new Error(`Can't start parsing from rule "`+e.startRule+'".');a=o[e.startRule]}function F(){return t.substring(wt,J)}function K(){return er(wt,J)}function G(M,z){throw z=z!==void 0?z:er(wt,J),or([Rt(M)],t.substring(wt,J),z)}function se(M,z){throw z=z!==void 0?z:er(wt,J),Cr(M,z)}function ce(M,z){return{type:"literal",text:M,ignoreCase:z}}function xe(M,z,oe){return{type:"class",parts:M,inverted:z,ignoreCase:oe}}function Je(){return{type:"any"}}function ut(){return{type:"end"}}function Rt(M){return{type:"other",description:M}}function Ar(M){var z=ba[M],oe;if(z)return z;for(oe=M-1;!ba[oe];)oe--;for(z=ba[oe],z={line:z.line,column:z.column};oexi&&(xi=J,Fa=[]),Fa.push(M))}function Cr(M,z){return new gd(M,null,null,z)}function or(M,z,oe){return new gd(gd.buildMessage(M,z),M,z,oe)}function qr(){var M,z,oe;for(M=J,z=[],oe=Nt();oe!==r;)z.push(oe),oe=Nt();return z!==r?(oe=ui(),oe===r&&(oe=null),oe!==r?(wt=M,z=n(oe),M=z):(J=M,M=r)):(J=M,M=r),M}function ui(){var M,z,oe,de,tt;if(M=J,z=xo(),z!==r){for(oe=[],de=Nt();de!==r;)oe.push(de),de=Nt();oe!==r?(de=ts(),de!==r?(tt=_s(),tt===r&&(tt=null),tt!==r?(wt=M,z=c(z,de,tt),M=z):(J=M,M=r)):(J=M,M=r)):(J=M,M=r)}else J=M,M=r;if(M===r)if(M=J,z=xo(),z!==r){for(oe=[],de=Nt();de!==r;)oe.push(de),de=Nt();oe!==r?(de=ts(),de===r&&(de=null),de!==r?(wt=M,z=f(z,de),M=z):(J=M,M=r)):(J=M,M=r)}else J=M,M=r;return M}function _s(){var M,z,oe,de,tt;for(M=J,z=[],oe=Nt();oe!==r;)z.push(oe),oe=Nt();if(z!==r)if(oe=ui(),oe!==r){for(de=[],tt=Nt();tt!==r;)de.push(tt),tt=Nt();de!==r?(wt=M,z=g(oe),M=z):(J=M,M=r)}else J=M,M=r;else J=M,M=r;return M}function ts(){var M;return t.charCodeAt(J)===59?(M=p,J++):(M=r,ct===0&&st(E)),M===r&&(t.charCodeAt(J)===38?(M=B,J++):(M=r,ct===0&&st(Q))),M}function xo(){var M,z,oe;return M=J,z=ns(),z!==r?(oe=rs(),oe===r&&(oe=null),oe!==r?(wt=M,z=x(z,oe),M=z):(J=M,M=r)):(J=M,M=r),M}function rs(){var M,z,oe,de,tt,Ct,Ir;for(M=J,z=[],oe=Nt();oe!==r;)z.push(oe),oe=Nt();if(z!==r)if(oe=oo(),oe!==r){for(de=[],tt=Nt();tt!==r;)de.push(tt),tt=Nt();if(de!==r)if(tt=xo(),tt!==r){for(Ct=[],Ir=Nt();Ir!==r;)Ct.push(Ir),Ir=Nt();Ct!==r?(wt=M,z=C(oe,tt),M=z):(J=M,M=r)}else J=M,M=r;else J=M,M=r}else J=M,M=r;else J=M,M=r;return M}function oo(){var M;return t.substr(J,2)===N?(M=N,J+=2):(M=r,ct===0&&st(U)),M===r&&(t.substr(J,2)===H?(M=H,J+=2):(M=r,ct===0&&st(X))),M}function ns(){var M,z,oe;return M=J,z=K0(),z!==r?(oe=Vn(),oe===r&&(oe=null),oe!==r?(wt=M,z=ie(z,oe),M=z):(J=M,M=r)):(J=M,M=r),M}function Vn(){var M,z,oe,de,tt,Ct,Ir;for(M=J,z=[],oe=Nt();oe!==r;)z.push(oe),oe=Nt();if(z!==r)if(oe=VA(),oe!==r){for(de=[],tt=Nt();tt!==r;)de.push(tt),tt=Nt();if(de!==r)if(tt=ns(),tt!==r){for(Ct=[],Ir=Nt();Ir!==r;)Ct.push(Ir),Ir=Nt();Ct!==r?(wt=M,z=fe(oe,tt),M=z):(J=M,M=r)}else J=M,M=r;else J=M,M=r}else J=M,M=r;else J=M,M=r;return M}function VA(){var M;return t.substr(J,2)===ye?(M=ye,J+=2):(M=r,ct===0&&st(Qe)),M===r&&(t.charCodeAt(J)===124?(M=Pe,J++):(M=r,ct===0&&st(pe))),M}function Gc(){var M,z,oe,de,tt,Ct;if(M=J,z=G0(),z!==r)if(t.charCodeAt(J)===61?(oe=Ee,J++):(oe=r,ct===0&&st(ke)),oe!==r)if(de=aa(),de!==r){for(tt=[],Ct=Nt();Ct!==r;)tt.push(Ct),Ct=Nt();tt!==r?(wt=M,z=h(z,de),M=z):(J=M,M=r)}else J=M,M=r;else J=M,M=r;else J=M,M=r;if(M===r)if(M=J,z=G0(),z!==r)if(t.charCodeAt(J)===61?(oe=Ee,J++):(oe=r,ct===0&&st(ke)),oe!==r){for(de=[],tt=Nt();tt!==r;)de.push(tt),tt=Nt();de!==r?(wt=M,z=Ke(z),M=z):(J=M,M=r)}else J=M,M=r;else J=M,M=r;return M}function K0(){var M,z,oe,de,tt,Ct,Ir,Dr,Fn,Ci,is;for(M=J,z=[],oe=Nt();oe!==r;)z.push(oe),oe=Nt();if(z!==r)if(t.charCodeAt(J)===40?(oe=Ce,J++):(oe=r,ct===0&&st(Be)),oe!==r){for(de=[],tt=Nt();tt!==r;)de.push(tt),tt=Nt();if(de!==r)if(tt=ui(),tt!==r){for(Ct=[],Ir=Nt();Ir!==r;)Ct.push(Ir),Ir=Nt();if(Ct!==r)if(t.charCodeAt(J)===41?(Ir=le,J++):(Ir=r,ct===0&&st(re)),Ir!==r){for(Dr=[],Fn=Nt();Fn!==r;)Dr.push(Fn),Fn=Nt();if(Dr!==r){for(Fn=[],Ci=uA();Ci!==r;)Fn.push(Ci),Ci=uA();if(Fn!==r){for(Ci=[],is=Nt();is!==r;)Ci.push(is),is=Nt();Ci!==r?(wt=M,z=Se(tt,Fn),M=z):(J=M,M=r)}else J=M,M=r}else J=M,M=r}else J=M,M=r;else J=M,M=r}else J=M,M=r;else J=M,M=r}else J=M,M=r;else J=M,M=r;if(M===r){for(M=J,z=[],oe=Nt();oe!==r;)z.push(oe),oe=Nt();if(z!==r)if(t.charCodeAt(J)===123?(oe=Ue,J++):(oe=r,ct===0&&st(dt)),oe!==r){for(de=[],tt=Nt();tt!==r;)de.push(tt),tt=Nt();if(de!==r)if(tt=ui(),tt!==r){for(Ct=[],Ir=Nt();Ir!==r;)Ct.push(Ir),Ir=Nt();if(Ct!==r)if(t.charCodeAt(J)===125?(Ir=q,J++):(Ir=r,ct===0&&st(Qt)),Ir!==r){for(Dr=[],Fn=Nt();Fn!==r;)Dr.push(Fn),Fn=Nt();if(Dr!==r){for(Fn=[],Ci=uA();Ci!==r;)Fn.push(Ci),Ci=uA();if(Fn!==r){for(Ci=[],is=Nt();is!==r;)Ci.push(is),is=Nt();Ci!==r?(wt=M,z=He(tt,Fn),M=z):(J=M,M=r)}else J=M,M=r}else J=M,M=r}else J=M,M=r;else J=M,M=r}else J=M,M=r;else J=M,M=r}else J=M,M=r;else J=M,M=r;if(M===r){for(M=J,z=[],oe=Nt();oe!==r;)z.push(oe),oe=Nt();if(z!==r){for(oe=[],de=Gc();de!==r;)oe.push(de),de=Gc();if(oe!==r){for(de=[],tt=Nt();tt!==r;)de.push(tt),tt=Nt();if(de!==r){if(tt=[],Ct=Ug(),Ct!==r)for(;Ct!==r;)tt.push(Ct),Ct=Ug();else tt=r;if(tt!==r){for(Ct=[],Ir=Nt();Ir!==r;)Ct.push(Ir),Ir=Nt();Ct!==r?(wt=M,z=qe(oe,tt),M=z):(J=M,M=r)}else J=M,M=r}else J=M,M=r}else J=M,M=r}else J=M,M=r;if(M===r){for(M=J,z=[],oe=Nt();oe!==r;)z.push(oe),oe=Nt();if(z!==r){if(oe=[],de=Gc(),de!==r)for(;de!==r;)oe.push(de),de=Gc();else oe=r;if(oe!==r){for(de=[],tt=Nt();tt!==r;)de.push(tt),tt=Nt();de!==r?(wt=M,z=Fe(oe),M=z):(J=M,M=r)}else J=M,M=r}else J=M,M=r}}}return M}function rf(){var M,z,oe,de,tt;for(M=J,z=[],oe=Nt();oe!==r;)z.push(oe),oe=Nt();if(z!==r){if(oe=[],de=Kg(),de!==r)for(;de!==r;)oe.push(de),de=Kg();else oe=r;if(oe!==r){for(de=[],tt=Nt();tt!==r;)de.push(tt),tt=Nt();de!==r?(wt=M,z=je(oe),M=z):(J=M,M=r)}else J=M,M=r}else J=M,M=r;return M}function Ug(){var M,z,oe;for(M=J,z=[],oe=Nt();oe!==r;)z.push(oe),oe=Nt();if(z!==r?(oe=uA(),oe!==r?(wt=M,z=We(oe),M=z):(J=M,M=r)):(J=M,M=r),M===r){for(M=J,z=[],oe=Nt();oe!==r;)z.push(oe),oe=Nt();z!==r?(oe=Kg(),oe!==r?(wt=M,z=We(oe),M=z):(J=M,M=r)):(J=M,M=r)}return M}function uA(){var M,z,oe,de,tt;for(M=J,z=[],oe=Nt();oe!==r;)z.push(oe),oe=Nt();return z!==r?(pt.test(t.charAt(J))?(oe=t.charAt(J),J++):(oe=r,ct===0&&st(Oe)),oe===r&&(oe=null),oe!==r?(de=_0(),de!==r?(tt=Kg(),tt!==r?(wt=M,z=k(oe,de,tt),M=z):(J=M,M=r)):(J=M,M=r)):(J=M,M=r)):(J=M,M=r),M}function _0(){var M;return t.substr(J,2)===I?(M=I,J+=2):(M=r,ct===0&&st(S)),M===r&&(t.substr(J,2)===y?(M=y,J+=2):(M=r,ct===0&&st(R)),M===r&&(t.charCodeAt(J)===62?(M=Z,J++):(M=r,ct===0&&st(te)),M===r&&(t.substr(J,3)===ne?(M=ne,J+=3):(M=r,ct===0&&st(Ae)),M===r&&(t.substr(J,2)===Re?(M=Re,J+=2):(M=r,ct===0&&st(Le)),M===r&&(t.charCodeAt(J)===60?(M=lt,J++):(M=r,ct===0&&st(mt))))))),M}function Kg(){var M,z,oe;for(M=J,z=[],oe=Nt();oe!==r;)z.push(oe),oe=Nt();return z!==r?(oe=aa(),oe!==r?(wt=M,z=We(oe),M=z):(J=M,M=r)):(J=M,M=r),M}function aa(){var M,z,oe;if(M=J,z=[],oe=Hs(),oe!==r)for(;oe!==r;)z.push(oe),oe=Hs();else z=r;return z!==r&&(wt=M,z=qt(z)),M=z,M}function Hs(){var M,z;return M=J,z=Ni(),z!==r&&(wt=M,z=sr(z)),M=z,M===r&&(M=J,z=iy(),z!==r&&(wt=M,z=sr(z)),M=z,M===r&&(M=J,z=sy(),z!==r&&(wt=M,z=sr(z)),M=z,M===r&&(M=J,z=Aa(),z!==r&&(wt=M,z=sr(z)),M=z))),M}function Ni(){var M,z,oe,de;return M=J,t.substr(J,2)===Pt?(z=Pt,J+=2):(z=r,ct===0&&st(mn)),z!==r?(oe=yn(),oe!==r?(t.charCodeAt(J)===39?(de=Or,J++):(de=r,ct===0&&st(Fr)),de!==r?(wt=M,z=Ur(oe),M=z):(J=M,M=r)):(J=M,M=r)):(J=M,M=r),M}function iy(){var M,z,oe,de;return M=J,t.charCodeAt(J)===39?(z=Or,J++):(z=r,ct===0&&st(Fr)),z!==r?(oe=Hg(),oe!==r?(t.charCodeAt(J)===39?(de=Or,J++):(de=r,ct===0&&st(Fr)),de!==r?(wt=M,z=Ur(oe),M=z):(J=M,M=r)):(J=M,M=r)):(J=M,M=r),M}function sy(){var M,z,oe,de;if(M=J,t.substr(J,2)===fn?(z=fn,J+=2):(z=r,ct===0&&st(vn)),z!==r&&(wt=M,z=ws()),M=z,M===r)if(M=J,t.charCodeAt(J)===34?(z=_i,J++):(z=r,ct===0&&st(wo)),z!==r){for(oe=[],de=nf();de!==r;)oe.push(de),de=nf();oe!==r?(t.charCodeAt(J)===34?(de=_i,J++):(de=r,ct===0&&st(wo)),de!==r?(wt=M,z=Bo(oe),M=z):(J=M,M=r)):(J=M,M=r)}else J=M,M=r;return M}function Aa(){var M,z,oe;if(M=J,z=[],oe=_g(),oe!==r)for(;oe!==r;)z.push(oe),oe=_g();else z=r;return z!==r&&(wt=M,z=Bo(z)),M=z,M}function nf(){var M,z;return M=J,z=en(),z!==r&&(wt=M,z=cs(z)),M=z,M===r&&(M=J,z=qg(),z!==r&&(wt=M,z=gn(z)),M=z,M===r&&(M=J,z=Jl(),z!==r&&(wt=M,z=$s(z)),M=z,M===r&&(M=J,z=H0(),z!==r&&(wt=M,z=UA(z)),M=z))),M}function _g(){var M,z;return M=J,z=en(),z!==r&&(wt=M,z=Qa(z)),M=z,M===r&&(M=J,z=qg(),z!==r&&(wt=M,z=Fg(z)),M=z,M===r&&(M=J,z=Jl(),z!==r&&(wt=M,z=Rg(z)),M=z,M===r&&(M=J,z=xI(),z!==r&&(wt=M,z=$u(z)),M=z,M===r&&(M=J,z=Na(),z!==r&&(wt=M,z=UA(z)),M=z)))),M}function Hg(){var M,z,oe;for(M=J,z=[],Yn.test(t.charAt(J))?(oe=t.charAt(J),J++):(oe=r,ct===0&&st(Hi));oe!==r;)z.push(oe),Yn.test(t.charAt(J))?(oe=t.charAt(J),J++):(oe=r,ct===0&&st(Hi));return z!==r&&(wt=M,z=va(z)),M=z,M}function H0(){var M,z,oe;if(M=J,z=[],oe=Ta(),oe===r&&(KA.test(t.charAt(J))?(oe=t.charAt(J),J++):(oe=r,ct===0&&st(Xe))),oe!==r)for(;oe!==r;)z.push(oe),oe=Ta(),oe===r&&(KA.test(t.charAt(J))?(oe=t.charAt(J),J++):(oe=r,ct===0&&st(Xe)));else z=r;return z!==r&&(wt=M,z=va(z)),M=z,M}function Ta(){var M,z,oe;return M=J,t.substr(J,2)===Wn?(z=Wn,J+=2):(z=r,ct===0&&st(ii)),z!==r&&(wt=M,z=Xt()),M=z,M===r&&(M=J,t.charCodeAt(J)===92?(z=Ti,J++):(z=r,ct===0&&st(Jn)),z!==r?(us.test(t.charAt(J))?(oe=t.charAt(J),J++):(oe=r,ct===0&&st(Dt)),oe!==r?(wt=M,z=Xi(oe),M=z):(J=M,M=r)):(J=M,M=r)),M}function yn(){var M,z,oe;for(M=J,z=[],oe=Po(),oe===r&&(Yn.test(t.charAt(J))?(oe=t.charAt(J),J++):(oe=r,ct===0&&st(Hi)));oe!==r;)z.push(oe),oe=Po(),oe===r&&(Yn.test(t.charAt(J))?(oe=t.charAt(J),J++):(oe=r,ct===0&&st(Hi)));return z!==r&&(wt=M,z=va(z)),M=z,M}function Po(){var M,z,oe;return M=J,t.substr(J,2)===Pn?(z=Pn,J+=2):(z=r,ct===0&&st(fs)),z!==r&&(wt=M,z=sA()),M=z,M===r&&(M=J,t.substr(J,2)===kr?(z=kr,J+=2):(z=r,ct===0&&st(Qo)),z!==r&&(wt=M,z=fr()),M=z,M===r&&(M=J,t.charCodeAt(J)===92?(z=Ti,J++):(z=r,ct===0&&st(Jn)),z!==r?(Da.test(t.charAt(J))?(oe=t.charAt(J),J++):(oe=r,ct===0&&st($)),oe!==r?(wt=M,z=rn(),M=z):(J=M,M=r)):(J=M,M=r),M===r&&(M=J,t.substr(J,2)===we?(z=we,J+=2):(z=r,ct===0&&st(Ot)),z!==r&&(wt=M,z=_A()),M=z,M===r&&(M=J,t.substr(J,2)===Zi?(z=Zi,J+=2):(z=r,ct===0&&st(_l)),z!==r&&(wt=M,z=jt()),M=z,M===r&&(M=J,t.substr(J,2)===oA?(z=oA,J+=2):(z=r,ct===0&&st(Lc)),z!==r&&(wt=M,z=ef()),M=z,M===r&&(M=J,t.substr(J,2)===HA?(z=HA,J+=2):(z=r,ct===0&&st(Oc)),z!==r&&(wt=M,z=Ln()),M=z,M===r&&(M=J,t.substr(J,2)===mi?(z=mi,J+=2):(z=r,ct===0&&st(qA)),z!==r&&(wt=M,z=Uc()),M=z,M===r&&(M=J,t.charCodeAt(J)===92?(z=Ti,J++):(z=r,ct===0&&st(Jn)),z!==r?(ea.test(t.charAt(J))?(oe=t.charAt(J),J++):(oe=r,ct===0&&st($i)),oe!==r?(wt=M,z=Xi(oe),M=z):(J=M,M=r)):(J=M,M=r),M===r&&(M=sf()))))))))),M}function sf(){var M,z,oe,de,tt,Ct,Ir,Dr,Fn,Ci,is,Y0;return M=J,t.charCodeAt(J)===92?(z=Ti,J++):(z=r,ct===0&&st(Jn)),z!==r?(oe=fA(),oe!==r?(wt=M,z=vo(oe),M=z):(J=M,M=r)):(J=M,M=r),M===r&&(M=J,t.substr(J,2)===it?(z=it,J+=2):(z=r,ct===0&&st(eo)),z!==r?(oe=J,de=J,tt=fA(),tt!==r?(Ct=yi(),Ct!==r?(tt=[tt,Ct],de=tt):(J=de,de=r)):(J=de,de=r),de===r&&(de=fA()),de!==r?oe=t.substring(oe,J):oe=de,oe!==r?(wt=M,z=vo(oe),M=z):(J=M,M=r)):(J=M,M=r),M===r&&(M=J,t.substr(J,2)===Sa?(z=Sa,J+=2):(z=r,ct===0&&st(Hl)),z!==r?(oe=J,de=J,tt=yi(),tt!==r?(Ct=yi(),Ct!==r?(Ir=yi(),Ir!==r?(Dr=yi(),Dr!==r?(tt=[tt,Ct,Ir,Dr],de=tt):(J=de,de=r)):(J=de,de=r)):(J=de,de=r)):(J=de,de=r),de!==r?oe=t.substring(oe,J):oe=de,oe!==r?(wt=M,z=vo(oe),M=z):(J=M,M=r)):(J=M,M=r),M===r&&(M=J,t.substr(J,2)===qi?(z=qi,J+=2):(z=r,ct===0&&st(ka)),z!==r?(oe=J,de=J,tt=yi(),tt!==r?(Ct=yi(),Ct!==r?(Ir=yi(),Ir!==r?(Dr=yi(),Dr!==r?(Fn=yi(),Fn!==r?(Ci=yi(),Ci!==r?(is=yi(),is!==r?(Y0=yi(),Y0!==r?(tt=[tt,Ct,Ir,Dr,Fn,Ci,is,Y0],de=tt):(J=de,de=r)):(J=de,de=r)):(J=de,de=r)):(J=de,de=r)):(J=de,de=r)):(J=de,de=r)):(J=de,de=r)):(J=de,de=r),de!==r?oe=t.substring(oe,J):oe=de,oe!==r?(wt=M,z=aA(oe),M=z):(J=M,M=r)):(J=M,M=r)))),M}function fA(){var M;return Sr.test(t.charAt(J))?(M=t.charAt(J),J++):(M=r,ct===0&&st(AA)),M}function yi(){var M;return Bs.test(t.charAt(J))?(M=t.charAt(J),J++):(M=r,ct===0&&st(Ut)),M}function Na(){var M,z,oe,de,tt;if(M=J,z=[],oe=J,t.charCodeAt(J)===92?(de=Ti,J++):(de=r,ct===0&&st(Jn)),de!==r?(t.length>J?(tt=t.charAt(J),J++):(tt=r,ct===0&&st(bn)),tt!==r?(wt=oe,de=Xi(tt),oe=de):(J=oe,oe=r)):(J=oe,oe=r),oe===r&&(oe=J,t.substr(J,2)===li?(de=li,J+=2):(de=r,ct===0&&st(ta)),de!==r&&(wt=oe,de=to()),oe=de,oe===r&&(oe=J,de=J,ct++,tt=oy(),ct--,tt===r?de=void 0:(J=de,de=r),de!==r?(t.length>J?(tt=t.charAt(J),J++):(tt=r,ct===0&&st(bn)),tt!==r?(wt=oe,de=Xi(tt),oe=de):(J=oe,oe=r)):(J=oe,oe=r))),oe!==r)for(;oe!==r;)z.push(oe),oe=J,t.charCodeAt(J)===92?(de=Ti,J++):(de=r,ct===0&&st(Jn)),de!==r?(t.length>J?(tt=t.charAt(J),J++):(tt=r,ct===0&&st(bn)),tt!==r?(wt=oe,de=Xi(tt),oe=de):(J=oe,oe=r)):(J=oe,oe=r),oe===r&&(oe=J,t.substr(J,2)===li?(de=li,J+=2):(de=r,ct===0&&st(ta)),de!==r&&(wt=oe,de=to()),oe=de,oe===r&&(oe=J,de=J,ct++,tt=oy(),ct--,tt===r?de=void 0:(J=de,de=r),de!==r?(t.length>J?(tt=t.charAt(J),J++):(tt=r,ct===0&&st(bn)),tt!==r?(wt=oe,de=Xi(tt),oe=de):(J=oe,oe=r)):(J=oe,oe=r)));else z=r;return z!==r&&(wt=M,z=va(z)),M=z,M}function Wl(){var M,z,oe,de,tt,Ct;if(M=J,t.charCodeAt(J)===45?(z=Qs,J++):(z=r,ct===0&&st(ra)),z===r&&(t.charCodeAt(J)===43?(z=Zt,J++):(z=r,ct===0&&st(na))),z===r&&(z=null),z!==r){if(oe=[],pt.test(t.charAt(J))?(de=t.charAt(J),J++):(de=r,ct===0&&st(Oe)),de!==r)for(;de!==r;)oe.push(de),pt.test(t.charAt(J))?(de=t.charAt(J),J++):(de=r,ct===0&&st(Oe));else oe=r;if(oe!==r)if(t.charCodeAt(J)===46?(de=vs,J++):(de=r,ct===0&&st(ro)),de!==r){if(tt=[],pt.test(t.charAt(J))?(Ct=t.charAt(J),J++):(Ct=r,ct===0&&st(Oe)),Ct!==r)for(;Ct!==r;)tt.push(Ct),pt.test(t.charAt(J))?(Ct=t.charAt(J),J++):(Ct=r,ct===0&&st(Oe));else tt=r;tt!==r?(wt=M,z=no(z,oe,tt),M=z):(J=M,M=r)}else J=M,M=r;else J=M,M=r}else J=M,M=r;if(M===r){if(M=J,t.charCodeAt(J)===45?(z=Qs,J++):(z=r,ct===0&&st(ra)),z===r&&(t.charCodeAt(J)===43?(z=Zt,J++):(z=r,ct===0&&st(na))),z===r&&(z=null),z!==r){if(oe=[],pt.test(t.charAt(J))?(de=t.charAt(J),J++):(de=r,ct===0&&st(Oe)),de!==r)for(;de!==r;)oe.push(de),pt.test(t.charAt(J))?(de=t.charAt(J),J++):(de=r,ct===0&&st(Oe));else oe=r;oe!==r?(wt=M,z=io(z,oe),M=z):(J=M,M=r)}else J=M,M=r;if(M===r&&(M=J,z=Jl(),z!==r&&(wt=M,z=Do(z)),M=z,M===r&&(M=J,z=gA(),z!==r&&(wt=M,z=ci(z)),M=z,M===r)))if(M=J,t.charCodeAt(J)===40?(z=Ce,J++):(z=r,ct===0&&st(Be)),z!==r){for(oe=[],de=Nt();de!==r;)oe.push(de),de=Nt();if(oe!==r)if(de=Ss(),de!==r){for(tt=[],Ct=Nt();Ct!==r;)tt.push(Ct),Ct=Nt();tt!==r?(t.charCodeAt(J)===41?(Ct=le,J++):(Ct=r,ct===0&&st(re)),Ct!==r?(wt=M,z=si(de),M=z):(J=M,M=r)):(J=M,M=r)}else J=M,M=r;else J=M,M=r}else J=M,M=r}return M}function zA(){var M,z,oe,de,tt,Ct,Ir,Dr;if(M=J,z=Wl(),z!==r){for(oe=[],de=J,tt=[],Ct=Nt();Ct!==r;)tt.push(Ct),Ct=Nt();if(tt!==r)if(t.charCodeAt(J)===42?(Ct=ia,J++):(Ct=r,ct===0&&st(Us)),Ct===r&&(t.charCodeAt(J)===47?(Ct=Gi,J++):(Ct=r,ct===0&&st(GA))),Ct!==r){for(Ir=[],Dr=Nt();Dr!==r;)Ir.push(Dr),Dr=Nt();Ir!==r?(Dr=Wl(),Dr!==r?(wt=de,tt=lA(z,Ct,Dr),de=tt):(J=de,de=r)):(J=de,de=r)}else J=de,de=r;else J=de,de=r;for(;de!==r;){for(oe.push(de),de=J,tt=[],Ct=Nt();Ct!==r;)tt.push(Ct),Ct=Nt();if(tt!==r)if(t.charCodeAt(J)===42?(Ct=ia,J++):(Ct=r,ct===0&&st(Us)),Ct===r&&(t.charCodeAt(J)===47?(Ct=Gi,J++):(Ct=r,ct===0&&st(GA))),Ct!==r){for(Ir=[],Dr=Nt();Dr!==r;)Ir.push(Dr),Dr=Nt();Ir!==r?(Dr=Wl(),Dr!==r?(wt=de,tt=lA(z,Ct,Dr),de=tt):(J=de,de=r)):(J=de,de=r)}else J=de,de=r;else J=de,de=r}oe!==r?(wt=M,z=ae(z,oe),M=z):(J=M,M=r)}else J=M,M=r;return M}function Ss(){var M,z,oe,de,tt,Ct,Ir,Dr;if(M=J,z=zA(),z!==r){for(oe=[],de=J,tt=[],Ct=Nt();Ct!==r;)tt.push(Ct),Ct=Nt();if(tt!==r)if(t.charCodeAt(J)===43?(Ct=Zt,J++):(Ct=r,ct===0&&st(na)),Ct===r&&(t.charCodeAt(J)===45?(Ct=Qs,J++):(Ct=r,ct===0&&st(ra))),Ct!==r){for(Ir=[],Dr=Nt();Dr!==r;)Ir.push(Dr),Dr=Nt();Ir!==r?(Dr=zA(),Dr!==r?(wt=de,tt=ve(z,Ct,Dr),de=tt):(J=de,de=r)):(J=de,de=r)}else J=de,de=r;else J=de,de=r;for(;de!==r;){for(oe.push(de),de=J,tt=[],Ct=Nt();Ct!==r;)tt.push(Ct),Ct=Nt();if(tt!==r)if(t.charCodeAt(J)===43?(Ct=Zt,J++):(Ct=r,ct===0&&st(na)),Ct===r&&(t.charCodeAt(J)===45?(Ct=Qs,J++):(Ct=r,ct===0&&st(ra))),Ct!==r){for(Ir=[],Dr=Nt();Dr!==r;)Ir.push(Dr),Dr=Nt();Ir!==r?(Dr=zA(),Dr!==r?(wt=de,tt=ve(z,Ct,Dr),de=tt):(J=de,de=r)):(J=de,de=r)}else J=de,de=r;else J=de,de=r}oe!==r?(wt=M,z=ae(z,oe),M=z):(J=M,M=r)}else J=M,M=r;return M}function en(){var M,z,oe,de,tt,Ct;if(M=J,t.substr(J,3)===Ye?(z=Ye,J+=3):(z=r,ct===0&&st(kt)),z!==r){for(oe=[],de=Nt();de!==r;)oe.push(de),de=Nt();if(oe!==r)if(de=Ss(),de!==r){for(tt=[],Ct=Nt();Ct!==r;)tt.push(Ct),Ct=Nt();tt!==r?(t.substr(J,2)===Et?(Ct=Et,J+=2):(Ct=r,ct===0&&st(Yt)),Ct!==r?(wt=M,z=Rr(de),M=z):(J=M,M=r)):(J=M,M=r)}else J=M,M=r;else J=M,M=r}else J=M,M=r;return M}function qg(){var M,z,oe,de;return M=J,t.substr(J,2)===Bn?(z=Bn,J+=2):(z=r,ct===0&&st(xa)),z!==r?(oe=ui(),oe!==r?(t.charCodeAt(J)===41?(de=le,J++):(de=r,ct===0&&st(re)),de!==r?(wt=M,z=O0(oe),M=z):(J=M,M=r)):(J=M,M=r)):(J=M,M=r),M}function Jl(){var M,z,oe,de,tt,Ct;return M=J,t.substr(J,2)===So?(z=So,J+=2):(z=r,ct===0&&st(cA)),z!==r?(oe=gA(),oe!==r?(t.substr(J,2)===Kc?(de=Kc,J+=2):(de=r,ct===0&&st(jA)),de!==r?(tt=rf(),tt!==r?(t.charCodeAt(J)===125?(Ct=q,J++):(Ct=r,ct===0&&st(Qt)),Ct!==r?(wt=M,z=_c(oe,tt),M=z):(J=M,M=r)):(J=M,M=r)):(J=M,M=r)):(J=M,M=r)):(J=M,M=r),M===r&&(M=J,t.substr(J,2)===So?(z=So,J+=2):(z=r,ct===0&&st(cA)),z!==r?(oe=gA(),oe!==r?(t.substr(J,3)===Tg?(de=Tg,J+=3):(de=r,ct===0&&st(ql)),de!==r?(wt=M,z=Ng(oe),M=z):(J=M,M=r)):(J=M,M=r)):(J=M,M=r),M===r&&(M=J,t.substr(J,2)===So?(z=So,J+=2):(z=r,ct===0&&st(cA)),z!==r?(oe=gA(),oe!==r?(t.substr(J,2)===Gl?(de=Gl,J+=2):(de=r,ct===0&&st(so)),de!==r?(tt=rf(),tt!==r?(t.charCodeAt(J)===125?(Ct=q,J++):(Ct=r,ct===0&&st(Qt)),Ct!==r?(wt=M,z=Hc(oe,tt),M=z):(J=M,M=r)):(J=M,M=r)):(J=M,M=r)):(J=M,M=r)):(J=M,M=r),M===r&&(M=J,t.substr(J,2)===So?(z=So,J+=2):(z=r,ct===0&&st(cA)),z!==r?(oe=gA(),oe!==r?(t.substr(J,3)===YA?(de=YA,J+=3):(de=r,ct===0&&st(sa)),de!==r?(wt=M,z=Mg(oe),M=z):(J=M,M=r)):(J=M,M=r)):(J=M,M=r),M===r&&(M=J,t.substr(J,2)===So?(z=So,J+=2):(z=r,ct===0&&st(cA)),z!==r?(oe=gA(),oe!==r?(t.charCodeAt(J)===125?(de=q,J++):(de=r,ct===0&&st(Qt)),de!==r?(wt=M,z=WA(oe),M=z):(J=M,M=r)):(J=M,M=r)):(J=M,M=r),M===r&&(M=J,t.charCodeAt(J)===36?(z=U0,J++):(z=r,ct===0&&st(Lg)),z!==r?(oe=gA(),oe!==r?(wt=M,z=WA(oe),M=z):(J=M,M=r)):(J=M,M=r)))))),M}function xI(){var M,z,oe;return M=J,z=q0(),z!==r?(wt=J,oe=oi(z),oe?oe=void 0:oe=r,oe!==r?(wt=M,z=tf(z),M=z):(J=M,M=r)):(J=M,M=r),M}function q0(){var M,z,oe,de,tt;if(M=J,z=[],oe=J,de=J,ct++,tt=j0(),ct--,tt===r?de=void 0:(J=de,de=r),de!==r?(t.length>J?(tt=t.charAt(J),J++):(tt=r,ct===0&&st(bn)),tt!==r?(wt=oe,de=Xi(tt),oe=de):(J=oe,oe=r)):(J=oe,oe=r),oe!==r)for(;oe!==r;)z.push(oe),oe=J,de=J,ct++,tt=j0(),ct--,tt===r?de=void 0:(J=de,de=r),de!==r?(t.length>J?(tt=t.charAt(J),J++):(tt=r,ct===0&&st(bn)),tt!==r?(wt=oe,de=Xi(tt),oe=de):(J=oe,oe=r)):(J=oe,oe=r);else z=r;return z!==r&&(wt=M,z=va(z)),M=z,M}function G0(){var M,z,oe;if(M=J,z=[],Og.test(t.charAt(J))?(oe=t.charAt(J),J++):(oe=r,ct===0&&st(qc)),oe!==r)for(;oe!==r;)z.push(oe),Og.test(t.charAt(J))?(oe=t.charAt(J),J++):(oe=r,ct===0&&st(qc));else z=r;return z!==r&&(wt=M,z=Ks()),M=z,M}function gA(){var M,z,oe;if(M=J,z=[],jl.test(t.charAt(J))?(oe=t.charAt(J),J++):(oe=r,ct===0&&st(Pa)),oe!==r)for(;oe!==r;)z.push(oe),jl.test(t.charAt(J))?(oe=t.charAt(J),J++):(oe=r,ct===0&&st(Pa));else z=r;return z!==r&&(wt=M,z=Ks()),M=z,M}function oy(){var M;return es.test(t.charAt(J))?(M=t.charAt(J),J++):(M=r,ct===0&&st(oa)),M}function j0(){var M;return Yl.test(t.charAt(J))?(M=t.charAt(J),J++):(M=r,ct===0&&st(Ds)),M}function Nt(){var M,z;if(M=[],JA.test(t.charAt(J))?(z=t.charAt(J),J++):(z=r,ct===0&&st(ko)),z!==r)for(;z!==r;)M.push(z),JA.test(t.charAt(J))?(z=t.charAt(J),J++):(z=r,ct===0&&st(ko));else M=r;return M}if(Ra=a(),Ra!==r&&J===t.length)return Ra;throw Ra!==r&&J!1}){try{return(0,qW.parse)(t,e)}catch(r){throw r.location&&(r.message=r.message.replace(/(\.)?$/,` (line ${r.location.start.line}, column ${r.location.start.column})$1`)),r}}function Ly(t,{endSemicolon:e=!1}={}){return t.map(({command:r,type:o},a)=>`${jv(r)}${o===";"?a!==t.length-1||e?";":"":" &"}`).join(" ")}function jv(t){return`${Oy(t.chain)}${t.then?` ${UT(t.then)}`:""}`}function UT(t){return`${t.type} ${jv(t.line)}`}function Oy(t){return`${_T(t)}${t.then?` ${KT(t.then)}`:""}`}function KT(t){return`${t.type} ${Oy(t.chain)}`}function _T(t){switch(t.type){case"command":return`${t.envs.length>0?`${t.envs.map(e=>qv(e)).join(" ")} `:""}${t.args.map(e=>HT(e)).join(" ")}`;case"subshell":return`(${Ly(t.subshell)})${t.args.length>0?` ${t.args.map(e=>ow(e)).join(" ")}`:""}`;case"group":return`{ ${Ly(t.group,{endSemicolon:!0})} }${t.args.length>0?` ${t.args.map(e=>ow(e)).join(" ")}`:""}`;case"envs":return t.envs.map(e=>qv(e)).join(" ");default:throw new Error(`Unsupported command type: "${t.type}"`)}}function qv(t){return`${t.name}=${t.args[0]?pd(t.args[0]):""}`}function HT(t){switch(t.type){case"redirection":return ow(t);case"argument":return pd(t);default:throw new Error(`Unsupported argument type: "${t.type}"`)}}function ow(t){return`${t.subtype} ${t.args.map(e=>pd(e)).join(" ")}`}function pd(t){return t.segments.map(e=>qT(e)).join("")}function qT(t){let e=(o,a)=>a?`"${o}"`:o,r=o=>o===""?'""':o.match(/[(){}<>$|&; \t"']/)?`$'${o.replace(/\\/g,"\\\\").replace(/'/g,"\\'").replace(/\f/g,"\\f").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/\t/g,"\\t").replace(/\v/g,"\\v").replace(/\0/g,"\\0")}'`:o;switch(t.type){case"text":return r(t.text);case"glob":return t.pattern;case"shell":return e(`\${${Ly(t.shell)}}`,t.quoted);case"variable":return e(typeof t.defaultValue>"u"?typeof t.alternativeValue>"u"?`\${${t.name}}`:t.alternativeValue.length===0?`\${${t.name}:+}`:`\${${t.name}:+${t.alternativeValue.map(o=>pd(o)).join(" ")}}`:t.defaultValue.length===0?`\${${t.name}:-}`:`\${${t.name}:-${t.defaultValue.map(o=>pd(o)).join(" ")}}`,t.quoted);case"arithmetic":return`$(( ${Yv(t.arithmetic)} ))`;default:throw new Error(`Unsupported argument segment type: "${t.type}"`)}}function Yv(t){let e=a=>{switch(a){case"addition":return"+";case"subtraction":return"-";case"multiplication":return"*";case"division":return"/";default:throw new Error(`Can't extract operator from arithmetic expression of type "${a}"`)}},r=(a,n)=>n?`( ${a} )`:a,o=a=>r(Yv(a),!["number","variable"].includes(a.type));switch(t.type){case"number":return String(t.value);case"variable":return t.name;default:return`${o(t.left)} ${e(t.type)} ${o(t.right)}`}}var qW,GW=Lt(()=>{qW=be(HW())});var YW=_((wxt,jW)=>{"use strict";function s_e(t,e){function r(){this.constructor=t}r.prototype=e.prototype,t.prototype=new r}function hd(t,e,r,o){this.message=t,this.expected=e,this.found=r,this.location=o,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,hd)}s_e(hd,Error);hd.buildMessage=function(t,e){var r={literal:function(p){return'"'+a(p.text)+'"'},class:function(p){var E="",B;for(B=0;B0){for(B=1,Q=1;Bye&&(ye=X,Qe=[]),Qe.push(Oe))}function Qt(Oe,k){return new hd(Oe,null,null,k)}function He(Oe,k,I){return new hd(hd.buildMessage(Oe,k),Oe,k,I)}function qe(){var Oe,k,I,S;return Oe=X,k=Fe(),k!==r?(t.charCodeAt(X)===47?(I=n,X++):(I=r,Pe===0&&q(c)),I!==r?(S=Fe(),S!==r?(ie=Oe,k=f(k,S),Oe=k):(X=Oe,Oe=r)):(X=Oe,Oe=r)):(X=Oe,Oe=r),Oe===r&&(Oe=X,k=Fe(),k!==r&&(ie=Oe,k=g(k)),Oe=k),Oe}function Fe(){var Oe,k,I,S;return Oe=X,k=je(),k!==r?(t.charCodeAt(X)===64?(I=p,X++):(I=r,Pe===0&&q(E)),I!==r?(S=pt(),S!==r?(ie=Oe,k=B(k,S),Oe=k):(X=Oe,Oe=r)):(X=Oe,Oe=r)):(X=Oe,Oe=r),Oe===r&&(Oe=X,k=je(),k!==r&&(ie=Oe,k=Q(k)),Oe=k),Oe}function je(){var Oe,k,I,S,y;return Oe=X,t.charCodeAt(X)===64?(k=p,X++):(k=r,Pe===0&&q(E)),k!==r?(I=We(),I!==r?(t.charCodeAt(X)===47?(S=n,X++):(S=r,Pe===0&&q(c)),S!==r?(y=We(),y!==r?(ie=Oe,k=x(),Oe=k):(X=Oe,Oe=r)):(X=Oe,Oe=r)):(X=Oe,Oe=r)):(X=Oe,Oe=r),Oe===r&&(Oe=X,k=We(),k!==r&&(ie=Oe,k=x()),Oe=k),Oe}function We(){var Oe,k,I;if(Oe=X,k=[],C.test(t.charAt(X))?(I=t.charAt(X),X++):(I=r,Pe===0&&q(N)),I!==r)for(;I!==r;)k.push(I),C.test(t.charAt(X))?(I=t.charAt(X),X++):(I=r,Pe===0&&q(N));else k=r;return k!==r&&(ie=Oe,k=x()),Oe=k,Oe}function pt(){var Oe,k,I;if(Oe=X,k=[],U.test(t.charAt(X))?(I=t.charAt(X),X++):(I=r,Pe===0&&q(H)),I!==r)for(;I!==r;)k.push(I),U.test(t.charAt(X))?(I=t.charAt(X),X++):(I=r,Pe===0&&q(H));else k=r;return k!==r&&(ie=Oe,k=x()),Oe=k,Oe}if(pe=a(),pe!==r&&X===t.length)return pe;throw pe!==r&&X{WW=be(YW())});var md=_((Qxt,dd)=>{"use strict";function VW(t){return typeof t>"u"||t===null}function a_e(t){return typeof t=="object"&&t!==null}function A_e(t){return Array.isArray(t)?t:VW(t)?[]:[t]}function l_e(t,e){var r,o,a,n;if(e)for(n=Object.keys(e),r=0,o=n.length;r{"use strict";function aw(t,e){Error.call(this),this.name="YAMLException",this.reason=t,this.mark=e,this.message=(this.reason||"(unknown reason)")+(this.mark?" "+this.mark.toString():""),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack||""}aw.prototype=Object.create(Error.prototype);aw.prototype.constructor=aw;aw.prototype.toString=function(e){var r=this.name+": ";return r+=this.reason||"(unknown reason)",!e&&this.mark&&(r+=" "+this.mark.toString()),r};zW.exports=aw});var $W=_((Dxt,ZW)=>{"use strict";var XW=md();function GT(t,e,r,o,a){this.name=t,this.buffer=e,this.position=r,this.line=o,this.column=a}GT.prototype.getSnippet=function(e,r){var o,a,n,c,f;if(!this.buffer)return null;for(e=e||4,r=r||75,o="",a=this.position;a>0&&`\0\r -\x85\u2028\u2029`.indexOf(this.buffer.charAt(a-1))===-1;)if(a-=1,this.position-a>r/2-1){o=" ... ",a+=5;break}for(n="",c=this.position;cr/2-1){n=" ... ",c-=5;break}return f=this.buffer.slice(a,c),XW.repeat(" ",e)+o+f+n+` -`+XW.repeat(" ",e+this.position-a+o.length)+"^"};GT.prototype.toString=function(e){var r,o="";return this.name&&(o+='in "'+this.name+'" '),o+="at line "+(this.line+1)+", column "+(this.column+1),e||(r=this.getSnippet(),r&&(o+=`: -`+r)),o};ZW.exports=GT});var Rs=_((Sxt,t7)=>{"use strict";var e7=Uy(),f_e=["kind","resolve","construct","instanceOf","predicate","represent","defaultStyle","styleAliases"],g_e=["scalar","sequence","mapping"];function p_e(t){var e={};return t!==null&&Object.keys(t).forEach(function(r){t[r].forEach(function(o){e[String(o)]=r})}),e}function h_e(t,e){if(e=e||{},Object.keys(e).forEach(function(r){if(f_e.indexOf(r)===-1)throw new e7('Unknown option "'+r+'" is met in definition of "'+t+'" YAML type.')}),this.tag=t,this.kind=e.kind||null,this.resolve=e.resolve||function(){return!0},this.construct=e.construct||function(r){return r},this.instanceOf=e.instanceOf||null,this.predicate=e.predicate||null,this.represent=e.represent||null,this.defaultStyle=e.defaultStyle||null,this.styleAliases=p_e(e.styleAliases||null),g_e.indexOf(this.kind)===-1)throw new e7('Unknown kind "'+this.kind+'" is specified for "'+t+'" YAML type.')}t7.exports=h_e});var yd=_((kxt,n7)=>{"use strict";var r7=md(),Vv=Uy(),d_e=Rs();function jT(t,e,r){var o=[];return t.include.forEach(function(a){r=jT(a,e,r)}),t[e].forEach(function(a){r.forEach(function(n,c){n.tag===a.tag&&n.kind===a.kind&&o.push(c)}),r.push(a)}),r.filter(function(a,n){return o.indexOf(n)===-1})}function m_e(){var t={scalar:{},sequence:{},mapping:{},fallback:{}},e,r;function o(a){t[a.kind][a.tag]=t.fallback[a.tag]=a}for(e=0,r=arguments.length;e{"use strict";var y_e=Rs();i7.exports=new y_e("tag:yaml.org,2002:str",{kind:"scalar",construct:function(t){return t!==null?t:""}})});var a7=_((Pxt,o7)=>{"use strict";var C_e=Rs();o7.exports=new C_e("tag:yaml.org,2002:seq",{kind:"sequence",construct:function(t){return t!==null?t:[]}})});var l7=_((bxt,A7)=>{"use strict";var E_e=Rs();A7.exports=new E_e("tag:yaml.org,2002:map",{kind:"mapping",construct:function(t){return t!==null?t:{}}})});var zv=_((Fxt,c7)=>{"use strict";var I_e=yd();c7.exports=new I_e({explicit:[s7(),a7(),l7()]})});var f7=_((Rxt,u7)=>{"use strict";var w_e=Rs();function B_e(t){if(t===null)return!0;var e=t.length;return e===1&&t==="~"||e===4&&(t==="null"||t==="Null"||t==="NULL")}function Q_e(){return null}function v_e(t){return t===null}u7.exports=new w_e("tag:yaml.org,2002:null",{kind:"scalar",resolve:B_e,construct:Q_e,predicate:v_e,represent:{canonical:function(){return"~"},lowercase:function(){return"null"},uppercase:function(){return"NULL"},camelcase:function(){return"Null"}},defaultStyle:"lowercase"})});var p7=_((Txt,g7)=>{"use strict";var D_e=Rs();function S_e(t){if(t===null)return!1;var e=t.length;return e===4&&(t==="true"||t==="True"||t==="TRUE")||e===5&&(t==="false"||t==="False"||t==="FALSE")}function k_e(t){return t==="true"||t==="True"||t==="TRUE"}function x_e(t){return Object.prototype.toString.call(t)==="[object Boolean]"}g7.exports=new D_e("tag:yaml.org,2002:bool",{kind:"scalar",resolve:S_e,construct:k_e,predicate:x_e,represent:{lowercase:function(t){return t?"true":"false"},uppercase:function(t){return t?"TRUE":"FALSE"},camelcase:function(t){return t?"True":"False"}},defaultStyle:"lowercase"})});var d7=_((Nxt,h7)=>{"use strict";var P_e=md(),b_e=Rs();function F_e(t){return 48<=t&&t<=57||65<=t&&t<=70||97<=t&&t<=102}function R_e(t){return 48<=t&&t<=55}function T_e(t){return 48<=t&&t<=57}function N_e(t){if(t===null)return!1;var e=t.length,r=0,o=!1,a;if(!e)return!1;if(a=t[r],(a==="-"||a==="+")&&(a=t[++r]),a==="0"){if(r+1===e)return!0;if(a=t[++r],a==="b"){for(r++;r=0?"0b"+t.toString(2):"-0b"+t.toString(2).slice(1)},octal:function(t){return t>=0?"0"+t.toString(8):"-0"+t.toString(8).slice(1)},decimal:function(t){return t.toString(10)},hexadecimal:function(t){return t>=0?"0x"+t.toString(16).toUpperCase():"-0x"+t.toString(16).toUpperCase().slice(1)}},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}})});var C7=_((Mxt,y7)=>{"use strict";var m7=md(),O_e=Rs(),U_e=new RegExp("^(?:[-+]?(?:0|[1-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\.[0-9_]*|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$");function K_e(t){return!(t===null||!U_e.test(t)||t[t.length-1]==="_")}function __e(t){var e,r,o,a;return e=t.replace(/_/g,"").toLowerCase(),r=e[0]==="-"?-1:1,a=[],"+-".indexOf(e[0])>=0&&(e=e.slice(1)),e===".inf"?r===1?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:e===".nan"?NaN:e.indexOf(":")>=0?(e.split(":").forEach(function(n){a.unshift(parseFloat(n,10))}),e=0,o=1,a.forEach(function(n){e+=n*o,o*=60}),r*e):r*parseFloat(e,10)}var H_e=/^[-+]?[0-9]+e/;function q_e(t,e){var r;if(isNaN(t))switch(e){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===t)switch(e){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===t)switch(e){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(m7.isNegativeZero(t))return"-0.0";return r=t.toString(10),H_e.test(r)?r.replace("e",".e"):r}function G_e(t){return Object.prototype.toString.call(t)==="[object Number]"&&(t%1!==0||m7.isNegativeZero(t))}y7.exports=new O_e("tag:yaml.org,2002:float",{kind:"scalar",resolve:K_e,construct:__e,predicate:G_e,represent:q_e,defaultStyle:"lowercase"})});var YT=_((Lxt,E7)=>{"use strict";var j_e=yd();E7.exports=new j_e({include:[zv()],implicit:[f7(),p7(),d7(),C7()]})});var WT=_((Oxt,I7)=>{"use strict";var Y_e=yd();I7.exports=new Y_e({include:[YT()]})});var v7=_((Uxt,Q7)=>{"use strict";var W_e=Rs(),w7=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),B7=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$");function J_e(t){return t===null?!1:w7.exec(t)!==null||B7.exec(t)!==null}function V_e(t){var e,r,o,a,n,c,f,g=0,p=null,E,B,Q;if(e=w7.exec(t),e===null&&(e=B7.exec(t)),e===null)throw new Error("Date resolve error");if(r=+e[1],o=+e[2]-1,a=+e[3],!e[4])return new Date(Date.UTC(r,o,a));if(n=+e[4],c=+e[5],f=+e[6],e[7]){for(g=e[7].slice(0,3);g.length<3;)g+="0";g=+g}return e[9]&&(E=+e[10],B=+(e[11]||0),p=(E*60+B)*6e4,e[9]==="-"&&(p=-p)),Q=new Date(Date.UTC(r,o,a,n,c,f,g)),p&&Q.setTime(Q.getTime()-p),Q}function z_e(t){return t.toISOString()}Q7.exports=new W_e("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:J_e,construct:V_e,instanceOf:Date,represent:z_e})});var S7=_((Kxt,D7)=>{"use strict";var X_e=Rs();function Z_e(t){return t==="<<"||t===null}D7.exports=new X_e("tag:yaml.org,2002:merge",{kind:"scalar",resolve:Z_e})});var P7=_((_xt,x7)=>{"use strict";var Cd;try{k7=Ie,Cd=k7("buffer").Buffer}catch{}var k7,$_e=Rs(),JT=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/= -\r`;function e6e(t){if(t===null)return!1;var e,r,o=0,a=t.length,n=JT;for(r=0;r64)){if(e<0)return!1;o+=6}return o%8===0}function t6e(t){var e,r,o=t.replace(/[\r\n=]/g,""),a=o.length,n=JT,c=0,f=[];for(e=0;e>16&255),f.push(c>>8&255),f.push(c&255)),c=c<<6|n.indexOf(o.charAt(e));return r=a%4*6,r===0?(f.push(c>>16&255),f.push(c>>8&255),f.push(c&255)):r===18?(f.push(c>>10&255),f.push(c>>2&255)):r===12&&f.push(c>>4&255),Cd?Cd.from?Cd.from(f):new Cd(f):f}function r6e(t){var e="",r=0,o,a,n=t.length,c=JT;for(o=0;o>18&63],e+=c[r>>12&63],e+=c[r>>6&63],e+=c[r&63]),r=(r<<8)+t[o];return a=n%3,a===0?(e+=c[r>>18&63],e+=c[r>>12&63],e+=c[r>>6&63],e+=c[r&63]):a===2?(e+=c[r>>10&63],e+=c[r>>4&63],e+=c[r<<2&63],e+=c[64]):a===1&&(e+=c[r>>2&63],e+=c[r<<4&63],e+=c[64],e+=c[64]),e}function n6e(t){return Cd&&Cd.isBuffer(t)}x7.exports=new $_e("tag:yaml.org,2002:binary",{kind:"scalar",resolve:e6e,construct:t6e,predicate:n6e,represent:r6e})});var F7=_((Hxt,b7)=>{"use strict";var i6e=Rs(),s6e=Object.prototype.hasOwnProperty,o6e=Object.prototype.toString;function a6e(t){if(t===null)return!0;var e=[],r,o,a,n,c,f=t;for(r=0,o=f.length;r{"use strict";var l6e=Rs(),c6e=Object.prototype.toString;function u6e(t){if(t===null)return!0;var e,r,o,a,n,c=t;for(n=new Array(c.length),e=0,r=c.length;e{"use strict";var g6e=Rs(),p6e=Object.prototype.hasOwnProperty;function h6e(t){if(t===null)return!0;var e,r=t;for(e in r)if(p6e.call(r,e)&&r[e]!==null)return!1;return!0}function d6e(t){return t!==null?t:{}}N7.exports=new g6e("tag:yaml.org,2002:set",{kind:"mapping",resolve:h6e,construct:d6e})});var _y=_((jxt,L7)=>{"use strict";var m6e=yd();L7.exports=new m6e({include:[WT()],implicit:[v7(),S7()],explicit:[P7(),F7(),T7(),M7()]})});var U7=_((Yxt,O7)=>{"use strict";var y6e=Rs();function C6e(){return!0}function E6e(){}function I6e(){return""}function w6e(t){return typeof t>"u"}O7.exports=new y6e("tag:yaml.org,2002:js/undefined",{kind:"scalar",resolve:C6e,construct:E6e,predicate:w6e,represent:I6e})});var _7=_((Wxt,K7)=>{"use strict";var B6e=Rs();function Q6e(t){if(t===null||t.length===0)return!1;var e=t,r=/\/([gim]*)$/.exec(t),o="";return!(e[0]==="/"&&(r&&(o=r[1]),o.length>3||e[e.length-o.length-1]!=="/"))}function v6e(t){var e=t,r=/\/([gim]*)$/.exec(t),o="";return e[0]==="/"&&(r&&(o=r[1]),e=e.slice(1,e.length-o.length-1)),new RegExp(e,o)}function D6e(t){var e="/"+t.source+"/";return t.global&&(e+="g"),t.multiline&&(e+="m"),t.ignoreCase&&(e+="i"),e}function S6e(t){return Object.prototype.toString.call(t)==="[object RegExp]"}K7.exports=new B6e("tag:yaml.org,2002:js/regexp",{kind:"scalar",resolve:Q6e,construct:v6e,predicate:S6e,represent:D6e})});var G7=_((Jxt,q7)=>{"use strict";var Xv;try{H7=Ie,Xv=H7("esprima")}catch{typeof window<"u"&&(Xv=window.esprima)}var H7,k6e=Rs();function x6e(t){if(t===null)return!1;try{var e="("+t+")",r=Xv.parse(e,{range:!0});return!(r.type!=="Program"||r.body.length!==1||r.body[0].type!=="ExpressionStatement"||r.body[0].expression.type!=="ArrowFunctionExpression"&&r.body[0].expression.type!=="FunctionExpression")}catch{return!1}}function P6e(t){var e="("+t+")",r=Xv.parse(e,{range:!0}),o=[],a;if(r.type!=="Program"||r.body.length!==1||r.body[0].type!=="ExpressionStatement"||r.body[0].expression.type!=="ArrowFunctionExpression"&&r.body[0].expression.type!=="FunctionExpression")throw new Error("Failed to resolve function");return r.body[0].expression.params.forEach(function(n){o.push(n.name)}),a=r.body[0].expression.body.range,r.body[0].expression.body.type==="BlockStatement"?new Function(o,e.slice(a[0]+1,a[1]-1)):new Function(o,"return "+e.slice(a[0],a[1]))}function b6e(t){return t.toString()}function F6e(t){return Object.prototype.toString.call(t)==="[object Function]"}q7.exports=new k6e("tag:yaml.org,2002:js/function",{kind:"scalar",resolve:x6e,construct:P6e,predicate:F6e,represent:b6e})});var Aw=_((Vxt,Y7)=>{"use strict";var j7=yd();Y7.exports=j7.DEFAULT=new j7({include:[_y()],explicit:[U7(),_7(),G7()]})});var uJ=_((zxt,lw)=>{"use strict";var Kf=md(),$7=Uy(),R6e=$W(),eJ=_y(),T6e=Aw(),hp=Object.prototype.hasOwnProperty,Zv=1,tJ=2,rJ=3,$v=4,VT=1,N6e=2,W7=3,M6e=/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,L6e=/[\x85\u2028\u2029]/,O6e=/[,\[\]\{\}]/,nJ=/^(?:!|!!|![a-z\-]+!)$/i,iJ=/^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i;function J7(t){return Object.prototype.toString.call(t)}function lu(t){return t===10||t===13}function Id(t){return t===9||t===32}function Ga(t){return t===9||t===32||t===10||t===13}function Hy(t){return t===44||t===91||t===93||t===123||t===125}function U6e(t){var e;return 48<=t&&t<=57?t-48:(e=t|32,97<=e&&e<=102?e-97+10:-1)}function K6e(t){return t===120?2:t===117?4:t===85?8:0}function _6e(t){return 48<=t&&t<=57?t-48:-1}function V7(t){return t===48?"\0":t===97?"\x07":t===98?"\b":t===116||t===9?" ":t===110?` -`:t===118?"\v":t===102?"\f":t===114?"\r":t===101?"\x1B":t===32?" ":t===34?'"':t===47?"/":t===92?"\\":t===78?"\x85":t===95?"\xA0":t===76?"\u2028":t===80?"\u2029":""}function H6e(t){return t<=65535?String.fromCharCode(t):String.fromCharCode((t-65536>>10)+55296,(t-65536&1023)+56320)}var sJ=new Array(256),oJ=new Array(256);for(Ed=0;Ed<256;Ed++)sJ[Ed]=V7(Ed)?1:0,oJ[Ed]=V7(Ed);var Ed;function q6e(t,e){this.input=t,this.filename=e.filename||null,this.schema=e.schema||T6e,this.onWarning=e.onWarning||null,this.legacy=e.legacy||!1,this.json=e.json||!1,this.listener=e.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=t.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.documents=[]}function aJ(t,e){return new $7(e,new R6e(t.filename,t.input,t.position,t.line,t.position-t.lineStart))}function Mr(t,e){throw aJ(t,e)}function eD(t,e){t.onWarning&&t.onWarning.call(null,aJ(t,e))}var z7={YAML:function(e,r,o){var a,n,c;e.version!==null&&Mr(e,"duplication of %YAML directive"),o.length!==1&&Mr(e,"YAML directive accepts exactly one argument"),a=/^([0-9]+)\.([0-9]+)$/.exec(o[0]),a===null&&Mr(e,"ill-formed argument of the YAML directive"),n=parseInt(a[1],10),c=parseInt(a[2],10),n!==1&&Mr(e,"unacceptable YAML version of the document"),e.version=o[0],e.checkLineBreaks=c<2,c!==1&&c!==2&&eD(e,"unsupported YAML version of the document")},TAG:function(e,r,o){var a,n;o.length!==2&&Mr(e,"TAG directive accepts exactly two arguments"),a=o[0],n=o[1],nJ.test(a)||Mr(e,"ill-formed tag handle (first argument) of the TAG directive"),hp.call(e.tagMap,a)&&Mr(e,'there is a previously declared suffix for "'+a+'" tag handle'),iJ.test(n)||Mr(e,"ill-formed tag prefix (second argument) of the TAG directive"),e.tagMap[a]=n}};function pp(t,e,r,o){var a,n,c,f;if(e1&&(t.result+=Kf.repeat(` -`,e-1))}function G6e(t,e,r){var o,a,n,c,f,g,p,E,B=t.kind,Q=t.result,x;if(x=t.input.charCodeAt(t.position),Ga(x)||Hy(x)||x===35||x===38||x===42||x===33||x===124||x===62||x===39||x===34||x===37||x===64||x===96||(x===63||x===45)&&(a=t.input.charCodeAt(t.position+1),Ga(a)||r&&Hy(a)))return!1;for(t.kind="scalar",t.result="",n=c=t.position,f=!1;x!==0;){if(x===58){if(a=t.input.charCodeAt(t.position+1),Ga(a)||r&&Hy(a))break}else if(x===35){if(o=t.input.charCodeAt(t.position-1),Ga(o))break}else{if(t.position===t.lineStart&&tD(t)||r&&Hy(x))break;if(lu(x))if(g=t.line,p=t.lineStart,E=t.lineIndent,ps(t,!1,-1),t.lineIndent>=e){f=!0,x=t.input.charCodeAt(t.position);continue}else{t.position=c,t.line=g,t.lineStart=p,t.lineIndent=E;break}}f&&(pp(t,n,c,!1),XT(t,t.line-g),n=c=t.position,f=!1),Id(x)||(c=t.position+1),x=t.input.charCodeAt(++t.position)}return pp(t,n,c,!1),t.result?!0:(t.kind=B,t.result=Q,!1)}function j6e(t,e){var r,o,a;if(r=t.input.charCodeAt(t.position),r!==39)return!1;for(t.kind="scalar",t.result="",t.position++,o=a=t.position;(r=t.input.charCodeAt(t.position))!==0;)if(r===39)if(pp(t,o,t.position,!0),r=t.input.charCodeAt(++t.position),r===39)o=t.position,t.position++,a=t.position;else return!0;else lu(r)?(pp(t,o,a,!0),XT(t,ps(t,!1,e)),o=a=t.position):t.position===t.lineStart&&tD(t)?Mr(t,"unexpected end of the document within a single quoted scalar"):(t.position++,a=t.position);Mr(t,"unexpected end of the stream within a single quoted scalar")}function Y6e(t,e){var r,o,a,n,c,f;if(f=t.input.charCodeAt(t.position),f!==34)return!1;for(t.kind="scalar",t.result="",t.position++,r=o=t.position;(f=t.input.charCodeAt(t.position))!==0;){if(f===34)return pp(t,r,t.position,!0),t.position++,!0;if(f===92){if(pp(t,r,t.position,!0),f=t.input.charCodeAt(++t.position),lu(f))ps(t,!1,e);else if(f<256&&sJ[f])t.result+=oJ[f],t.position++;else if((c=K6e(f))>0){for(a=c,n=0;a>0;a--)f=t.input.charCodeAt(++t.position),(c=U6e(f))>=0?n=(n<<4)+c:Mr(t,"expected hexadecimal character");t.result+=H6e(n),t.position++}else Mr(t,"unknown escape sequence");r=o=t.position}else lu(f)?(pp(t,r,o,!0),XT(t,ps(t,!1,e)),r=o=t.position):t.position===t.lineStart&&tD(t)?Mr(t,"unexpected end of the document within a double quoted scalar"):(t.position++,o=t.position)}Mr(t,"unexpected end of the stream within a double quoted scalar")}function W6e(t,e){var r=!0,o,a=t.tag,n,c=t.anchor,f,g,p,E,B,Q={},x,C,N,U;if(U=t.input.charCodeAt(t.position),U===91)g=93,B=!1,n=[];else if(U===123)g=125,B=!0,n={};else return!1;for(t.anchor!==null&&(t.anchorMap[t.anchor]=n),U=t.input.charCodeAt(++t.position);U!==0;){if(ps(t,!0,e),U=t.input.charCodeAt(t.position),U===g)return t.position++,t.tag=a,t.anchor=c,t.kind=B?"mapping":"sequence",t.result=n,!0;r||Mr(t,"missed comma between flow collection entries"),C=x=N=null,p=E=!1,U===63&&(f=t.input.charCodeAt(t.position+1),Ga(f)&&(p=E=!0,t.position++,ps(t,!0,e))),o=t.line,Gy(t,e,Zv,!1,!0),C=t.tag,x=t.result,ps(t,!0,e),U=t.input.charCodeAt(t.position),(E||t.line===o)&&U===58&&(p=!0,U=t.input.charCodeAt(++t.position),ps(t,!0,e),Gy(t,e,Zv,!1,!0),N=t.result),B?qy(t,n,Q,C,x,N):p?n.push(qy(t,null,Q,C,x,N)):n.push(x),ps(t,!0,e),U=t.input.charCodeAt(t.position),U===44?(r=!0,U=t.input.charCodeAt(++t.position)):r=!1}Mr(t,"unexpected end of the stream within a flow collection")}function J6e(t,e){var r,o,a=VT,n=!1,c=!1,f=e,g=0,p=!1,E,B;if(B=t.input.charCodeAt(t.position),B===124)o=!1;else if(B===62)o=!0;else return!1;for(t.kind="scalar",t.result="";B!==0;)if(B=t.input.charCodeAt(++t.position),B===43||B===45)VT===a?a=B===43?W7:N6e:Mr(t,"repeat of a chomping mode identifier");else if((E=_6e(B))>=0)E===0?Mr(t,"bad explicit indentation width of a block scalar; it cannot be less than one"):c?Mr(t,"repeat of an indentation width identifier"):(f=e+E-1,c=!0);else break;if(Id(B)){do B=t.input.charCodeAt(++t.position);while(Id(B));if(B===35)do B=t.input.charCodeAt(++t.position);while(!lu(B)&&B!==0)}for(;B!==0;){for(zT(t),t.lineIndent=0,B=t.input.charCodeAt(t.position);(!c||t.lineIndentf&&(f=t.lineIndent),lu(B)){g++;continue}if(t.lineIndente)&&g!==0)Mr(t,"bad indentation of a sequence entry");else if(t.lineIndente)&&(Gy(t,e,$v,!0,a)&&(C?Q=t.result:x=t.result),C||(qy(t,p,E,B,Q,x,n,c),B=Q=x=null),ps(t,!0,-1),U=t.input.charCodeAt(t.position)),t.lineIndent>e&&U!==0)Mr(t,"bad indentation of a mapping entry");else if(t.lineIndente?g=1:t.lineIndent===e?g=0:t.lineIndente?g=1:t.lineIndent===e?g=0:t.lineIndent tag; it should be "scalar", not "'+t.kind+'"'),B=0,Q=t.implicitTypes.length;B tag; it should be "'+x.kind+'", not "'+t.kind+'"'),x.resolve(t.result)?(t.result=x.construct(t.result),t.anchor!==null&&(t.anchorMap[t.anchor]=t.result)):Mr(t,"cannot resolve a node with !<"+t.tag+"> explicit tag")):Mr(t,"unknown tag !<"+t.tag+">");return t.listener!==null&&t.listener("close",t),t.tag!==null||t.anchor!==null||E}function $6e(t){var e=t.position,r,o,a,n=!1,c;for(t.version=null,t.checkLineBreaks=t.legacy,t.tagMap={},t.anchorMap={};(c=t.input.charCodeAt(t.position))!==0&&(ps(t,!0,-1),c=t.input.charCodeAt(t.position),!(t.lineIndent>0||c!==37));){for(n=!0,c=t.input.charCodeAt(++t.position),r=t.position;c!==0&&!Ga(c);)c=t.input.charCodeAt(++t.position);for(o=t.input.slice(r,t.position),a=[],o.length<1&&Mr(t,"directive name must not be less than one character in length");c!==0;){for(;Id(c);)c=t.input.charCodeAt(++t.position);if(c===35){do c=t.input.charCodeAt(++t.position);while(c!==0&&!lu(c));break}if(lu(c))break;for(r=t.position;c!==0&&!Ga(c);)c=t.input.charCodeAt(++t.position);a.push(t.input.slice(r,t.position))}c!==0&&zT(t),hp.call(z7,o)?z7[o](t,o,a):eD(t,'unknown document directive "'+o+'"')}if(ps(t,!0,-1),t.lineIndent===0&&t.input.charCodeAt(t.position)===45&&t.input.charCodeAt(t.position+1)===45&&t.input.charCodeAt(t.position+2)===45?(t.position+=3,ps(t,!0,-1)):n&&Mr(t,"directives end mark is expected"),Gy(t,t.lineIndent-1,$v,!1,!0),ps(t,!0,-1),t.checkLineBreaks&&L6e.test(t.input.slice(e,t.position))&&eD(t,"non-ASCII line breaks are interpreted as content"),t.documents.push(t.result),t.position===t.lineStart&&tD(t)){t.input.charCodeAt(t.position)===46&&(t.position+=3,ps(t,!0,-1));return}if(t.position"u"&&(r=e,e=null);var o=AJ(t,r);if(typeof e!="function")return o;for(var a=0,n=o.length;a"u"&&(r=e,e=null),lJ(t,e,Kf.extend({schema:eJ},r))}function tHe(t,e){return cJ(t,Kf.extend({schema:eJ},e))}lw.exports.loadAll=lJ;lw.exports.load=cJ;lw.exports.safeLoadAll=eHe;lw.exports.safeLoad=tHe});var TJ=_((Xxt,tN)=>{"use strict";var uw=md(),fw=Uy(),rHe=Aw(),nHe=_y(),CJ=Object.prototype.toString,EJ=Object.prototype.hasOwnProperty,iHe=9,cw=10,sHe=13,oHe=32,aHe=33,AHe=34,IJ=35,lHe=37,cHe=38,uHe=39,fHe=42,wJ=44,gHe=45,BJ=58,pHe=61,hHe=62,dHe=63,mHe=64,QJ=91,vJ=93,yHe=96,DJ=123,CHe=124,SJ=125,Ho={};Ho[0]="\\0";Ho[7]="\\a";Ho[8]="\\b";Ho[9]="\\t";Ho[10]="\\n";Ho[11]="\\v";Ho[12]="\\f";Ho[13]="\\r";Ho[27]="\\e";Ho[34]='\\"';Ho[92]="\\\\";Ho[133]="\\N";Ho[160]="\\_";Ho[8232]="\\L";Ho[8233]="\\P";var EHe=["y","Y","yes","Yes","YES","on","On","ON","n","N","no","No","NO","off","Off","OFF"];function IHe(t,e){var r,o,a,n,c,f,g;if(e===null)return{};for(r={},o=Object.keys(e),a=0,n=o.length;a0?t.charCodeAt(n-1):null,Q=Q&&pJ(c,f)}else{for(n=0;no&&t[B+1]!==" ",B=n);else if(!jy(c))return rD;f=n>0?t.charCodeAt(n-1):null,Q=Q&&pJ(c,f)}p=p||E&&n-B-1>o&&t[B+1]!==" "}return!g&&!p?Q&&!a(t)?xJ:PJ:r>9&&kJ(t)?rD:p?FJ:bJ}function SHe(t,e,r,o){t.dump=function(){if(e.length===0)return"''";if(!t.noCompatMode&&EHe.indexOf(e)!==-1)return"'"+e+"'";var a=t.indent*Math.max(1,r),n=t.lineWidth===-1?-1:Math.max(Math.min(t.lineWidth,40),t.lineWidth-a),c=o||t.flowLevel>-1&&r>=t.flowLevel;function f(g){return BHe(t,g)}switch(DHe(e,c,t.indent,n,f)){case xJ:return e;case PJ:return"'"+e.replace(/'/g,"''")+"'";case bJ:return"|"+hJ(e,t.indent)+dJ(gJ(e,a));case FJ:return">"+hJ(e,t.indent)+dJ(gJ(kHe(e,n),a));case rD:return'"'+xHe(e,n)+'"';default:throw new fw("impossible error: invalid scalar style")}}()}function hJ(t,e){var r=kJ(t)?String(e):"",o=t[t.length-1]===` -`,a=o&&(t[t.length-2]===` -`||t===` -`),n=a?"+":o?"":"-";return r+n+` -`}function dJ(t){return t[t.length-1]===` -`?t.slice(0,-1):t}function kHe(t,e){for(var r=/(\n+)([^\n]*)/g,o=function(){var p=t.indexOf(` -`);return p=p!==-1?p:t.length,r.lastIndex=p,mJ(t.slice(0,p),e)}(),a=t[0]===` -`||t[0]===" ",n,c;c=r.exec(t);){var f=c[1],g=c[2];n=g[0]===" ",o+=f+(!a&&!n&&g!==""?` -`:"")+mJ(g,e),a=n}return o}function mJ(t,e){if(t===""||t[0]===" ")return t;for(var r=/ [^ ]/g,o,a=0,n,c=0,f=0,g="";o=r.exec(t);)f=o.index,f-a>e&&(n=c>a?c:f,g+=` -`+t.slice(a,n),a=n+1),c=f;return g+=` -`,t.length-a>e&&c>a?g+=t.slice(a,c)+` -`+t.slice(c+1):g+=t.slice(a),g.slice(1)}function xHe(t){for(var e="",r,o,a,n=0;n=55296&&r<=56319&&(o=t.charCodeAt(n+1),o>=56320&&o<=57343)){e+=fJ((r-55296)*1024+o-56320+65536),n++;continue}a=Ho[r],e+=!a&&jy(r)?t[n]:a||fJ(r)}return e}function PHe(t,e,r){var o="",a=t.tag,n,c;for(n=0,c=r.length;n1024&&(E+="? "),E+=t.dump+(t.condenseFlow?'"':"")+":"+(t.condenseFlow?"":" "),wd(t,e,p,!1,!1)&&(E+=t.dump,o+=E));t.tag=a,t.dump="{"+o+"}"}function RHe(t,e,r,o){var a="",n=t.tag,c=Object.keys(r),f,g,p,E,B,Q;if(t.sortKeys===!0)c.sort();else if(typeof t.sortKeys=="function")c.sort(t.sortKeys);else if(t.sortKeys)throw new fw("sortKeys must be a boolean or a function");for(f=0,g=c.length;f1024,B&&(t.dump&&cw===t.dump.charCodeAt(0)?Q+="?":Q+="? "),Q+=t.dump,B&&(Q+=ZT(t,e)),wd(t,e+1,E,!0,B)&&(t.dump&&cw===t.dump.charCodeAt(0)?Q+=":":Q+=": ",Q+=t.dump,a+=Q));t.tag=n,t.dump=a||"{}"}function yJ(t,e,r){var o,a,n,c,f,g;for(a=r?t.explicitTypes:t.implicitTypes,n=0,c=a.length;n tag resolver accepts not "'+g+'" style');t.dump=o}return!0}return!1}function wd(t,e,r,o,a,n){t.tag=null,t.dump=r,yJ(t,r,!1)||yJ(t,r,!0);var c=CJ.call(t.dump);o&&(o=t.flowLevel<0||t.flowLevel>e);var f=c==="[object Object]"||c==="[object Array]",g,p;if(f&&(g=t.duplicates.indexOf(r),p=g!==-1),(t.tag!==null&&t.tag!=="?"||p||t.indent!==2&&e>0)&&(a=!1),p&&t.usedDuplicates[g])t.dump="*ref_"+g;else{if(f&&p&&!t.usedDuplicates[g]&&(t.usedDuplicates[g]=!0),c==="[object Object]")o&&Object.keys(t.dump).length!==0?(RHe(t,e,t.dump,a),p&&(t.dump="&ref_"+g+t.dump)):(FHe(t,e,t.dump),p&&(t.dump="&ref_"+g+" "+t.dump));else if(c==="[object Array]"){var E=t.noArrayIndent&&e>0?e-1:e;o&&t.dump.length!==0?(bHe(t,E,t.dump,a),p&&(t.dump="&ref_"+g+t.dump)):(PHe(t,E,t.dump),p&&(t.dump="&ref_"+g+" "+t.dump))}else if(c==="[object String]")t.tag!=="?"&&SHe(t,t.dump,e,n);else{if(t.skipInvalid)return!1;throw new fw("unacceptable kind of an object to dump "+c)}t.tag!==null&&t.tag!=="?"&&(t.dump="!<"+t.tag+"> "+t.dump)}return!0}function THe(t,e){var r=[],o=[],a,n;for($T(t,r,o),a=0,n=o.length;a{"use strict";var nD=uJ(),NJ=TJ();function iD(t){return function(){throw new Error("Function "+t+" is deprecated and cannot be used.")}}Yi.exports.Type=Rs();Yi.exports.Schema=yd();Yi.exports.FAILSAFE_SCHEMA=zv();Yi.exports.JSON_SCHEMA=YT();Yi.exports.CORE_SCHEMA=WT();Yi.exports.DEFAULT_SAFE_SCHEMA=_y();Yi.exports.DEFAULT_FULL_SCHEMA=Aw();Yi.exports.load=nD.load;Yi.exports.loadAll=nD.loadAll;Yi.exports.safeLoad=nD.safeLoad;Yi.exports.safeLoadAll=nD.safeLoadAll;Yi.exports.dump=NJ.dump;Yi.exports.safeDump=NJ.safeDump;Yi.exports.YAMLException=Uy();Yi.exports.MINIMAL_SCHEMA=zv();Yi.exports.SAFE_SCHEMA=_y();Yi.exports.DEFAULT_SCHEMA=Aw();Yi.exports.scan=iD("scan");Yi.exports.parse=iD("parse");Yi.exports.compose=iD("compose");Yi.exports.addConstructor=iD("addConstructor")});var OJ=_(($xt,LJ)=>{"use strict";var MHe=MJ();LJ.exports=MHe});var KJ=_((ePt,UJ)=>{"use strict";function LHe(t,e){function r(){this.constructor=t}r.prototype=e.prototype,t.prototype=new r}function Bd(t,e,r,o){this.message=t,this.expected=e,this.found=r,this.location=o,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,Bd)}LHe(Bd,Error);Bd.buildMessage=function(t,e){var r={literal:function(p){return'"'+a(p.text)+'"'},class:function(p){var E="",B;for(B=0;B0){for(B=1,Q=1;B({[kt]:Ye})))},ye=function(ae){return ae},Qe=function(ae){return ae},Pe=ea("correct indentation"),pe=" ",Ee=Ln(" ",!1),ke=function(ae){return ae.length===lA*GA},h=function(ae){return ae.length===(lA+1)*GA},Ke=function(){return lA++,!0},Ce=function(){return lA--,!0},Be=function(){return Lc()},le=ea("pseudostring"),re=/^[^\r\n\t ?:,\][{}#&*!|>'"%@`\-]/,Se=mi(["\r",` -`," "," ","?",":",",","]","[","{","}","#","&","*","!","|",">","'",'"',"%","@","`","-"],!0,!1),Ue=/^[^\r\n\t ,\][{}:#"']/,dt=mi(["\r",` -`," "," ",",","]","[","{","}",":","#",'"',"'"],!0,!1),q=function(){return Lc().replace(/^ *| *$/g,"")},Qt="--",He=Ln("--",!1),qe=/^[a-zA-Z\/0-9]/,Fe=mi([["a","z"],["A","Z"],"/",["0","9"]],!1,!1),je=/^[^\r\n\t :,]/,We=mi(["\r",` -`," "," ",":",","],!0,!1),pt="null",Oe=Ln("null",!1),k=function(){return null},I="true",S=Ln("true",!1),y=function(){return!0},R="false",Z=Ln("false",!1),te=function(){return!1},ne=ea("string"),Ae='"',Re=Ln('"',!1),Le=function(){return""},lt=function(ae){return ae},mt=function(ae){return ae.join("")},qt=/^[^"\\\0-\x1F\x7F]/,sr=mi(['"',"\\",["\0",""],"\x7F"],!0,!1),Pt='\\"',mn=Ln('\\"',!1),Or=function(){return'"'},Fr="\\\\",Ur=Ln("\\\\",!1),fn=function(){return"\\"},vn="\\/",ws=Ln("\\/",!1),_i=function(){return"/"},wo="\\b",Bo=Ln("\\b",!1),cs=function(){return"\b"},gn="\\f",$s=Ln("\\f",!1),UA=function(){return"\f"},Qa="\\n",Fg=Ln("\\n",!1),Rg=function(){return` -`},$u="\\r",Yn=Ln("\\r",!1),Hi=function(){return"\r"},va="\\t",KA=Ln("\\t",!1),Xe=function(){return" "},Wn="\\u",ii=Ln("\\u",!1),Xt=function(ae,ve,Ye,kt){return String.fromCharCode(parseInt(`0x${ae}${ve}${Ye}${kt}`))},Ti=/^[0-9a-fA-F]/,Jn=mi([["0","9"],["a","f"],["A","F"]],!1,!1),us=ea("blank space"),Dt=/^[ \t]/,Xi=mi([" "," "],!1,!1),Pn=ea("white space"),fs=/^[ \t\n\r]/,sA=mi([" "," ",` -`,"\r"],!1,!1),kr=`\r -`,Qo=Ln(`\r -`,!1),fr=` -`,Da=Ln(` -`,!1),$="\r",rn=Ln("\r",!1),we=0,Ot=0,_A=[{line:1,column:1}],Zi=0,_l=[],jt=0,oA;if("startRule"in e){if(!(e.startRule in o))throw new Error(`Can't start parsing from rule "`+e.startRule+'".');a=o[e.startRule]}function Lc(){return t.substring(Ot,we)}function ef(){return vo(Ot,we)}function HA(ae,ve){throw ve=ve!==void 0?ve:vo(Ot,we),Sa([ea(ae)],t.substring(Ot,we),ve)}function Oc(ae,ve){throw ve=ve!==void 0?ve:vo(Ot,we),eo(ae,ve)}function Ln(ae,ve){return{type:"literal",text:ae,ignoreCase:ve}}function mi(ae,ve,Ye){return{type:"class",parts:ae,inverted:ve,ignoreCase:Ye}}function qA(){return{type:"any"}}function Uc(){return{type:"end"}}function ea(ae){return{type:"other",description:ae}}function $i(ae){var ve=_A[ae],Ye;if(ve)return ve;for(Ye=ae-1;!_A[Ye];)Ye--;for(ve=_A[Ye],ve={line:ve.line,column:ve.column};YeZi&&(Zi=we,_l=[]),_l.push(ae))}function eo(ae,ve){return new Bd(ae,null,null,ve)}function Sa(ae,ve,Ye){return new Bd(Bd.buildMessage(ae,ve),ae,ve,Ye)}function Hl(){var ae;return ae=aA(),ae}function qi(){var ae,ve,Ye;for(ae=we,ve=[],Ye=ka();Ye!==r;)ve.push(Ye),Ye=ka();return ve!==r&&(Ot=ae,ve=n(ve)),ae=ve,ae}function ka(){var ae,ve,Ye,kt,Et;return ae=we,ve=Bs(),ve!==r?(t.charCodeAt(we)===45?(Ye=c,we++):(Ye=r,jt===0&&it(f)),Ye!==r?(kt=si(),kt!==r?(Et=AA(),Et!==r?(Ot=ae,ve=g(Et),ae=ve):(we=ae,ae=r)):(we=ae,ae=r)):(we=ae,ae=r)):(we=ae,ae=r),ae}function aA(){var ae,ve,Ye;for(ae=we,ve=[],Ye=Sr();Ye!==r;)ve.push(Ye),Ye=Sr();return ve!==r&&(Ot=ae,ve=p(ve)),ae=ve,ae}function Sr(){var ae,ve,Ye,kt,Et,Yt,Rr,Bn,xa;if(ae=we,ve=si(),ve===r&&(ve=null),ve!==r){if(Ye=we,t.charCodeAt(we)===35?(kt=E,we++):(kt=r,jt===0&&it(B)),kt!==r){if(Et=[],Yt=we,Rr=we,jt++,Bn=Gi(),jt--,Bn===r?Rr=void 0:(we=Rr,Rr=r),Rr!==r?(t.length>we?(Bn=t.charAt(we),we++):(Bn=r,jt===0&&it(Q)),Bn!==r?(Rr=[Rr,Bn],Yt=Rr):(we=Yt,Yt=r)):(we=Yt,Yt=r),Yt!==r)for(;Yt!==r;)Et.push(Yt),Yt=we,Rr=we,jt++,Bn=Gi(),jt--,Bn===r?Rr=void 0:(we=Rr,Rr=r),Rr!==r?(t.length>we?(Bn=t.charAt(we),we++):(Bn=r,jt===0&&it(Q)),Bn!==r?(Rr=[Rr,Bn],Yt=Rr):(we=Yt,Yt=r)):(we=Yt,Yt=r);else Et=r;Et!==r?(kt=[kt,Et],Ye=kt):(we=Ye,Ye=r)}else we=Ye,Ye=r;if(Ye===r&&(Ye=null),Ye!==r){if(kt=[],Et=Us(),Et!==r)for(;Et!==r;)kt.push(Et),Et=Us();else kt=r;kt!==r?(Ot=ae,ve=x(),ae=ve):(we=ae,ae=r)}else we=ae,ae=r}else we=ae,ae=r;if(ae===r&&(ae=we,ve=Bs(),ve!==r?(Ye=ta(),Ye!==r?(kt=si(),kt===r&&(kt=null),kt!==r?(t.charCodeAt(we)===58?(Et=C,we++):(Et=r,jt===0&&it(N)),Et!==r?(Yt=si(),Yt===r&&(Yt=null),Yt!==r?(Rr=AA(),Rr!==r?(Ot=ae,ve=U(Ye,Rr),ae=ve):(we=ae,ae=r)):(we=ae,ae=r)):(we=ae,ae=r)):(we=ae,ae=r)):(we=ae,ae=r)):(we=ae,ae=r),ae===r&&(ae=we,ve=Bs(),ve!==r?(Ye=to(),Ye!==r?(kt=si(),kt===r&&(kt=null),kt!==r?(t.charCodeAt(we)===58?(Et=C,we++):(Et=r,jt===0&&it(N)),Et!==r?(Yt=si(),Yt===r&&(Yt=null),Yt!==r?(Rr=AA(),Rr!==r?(Ot=ae,ve=U(Ye,Rr),ae=ve):(we=ae,ae=r)):(we=ae,ae=r)):(we=ae,ae=r)):(we=ae,ae=r)):(we=ae,ae=r)):(we=ae,ae=r),ae===r))){if(ae=we,ve=Bs(),ve!==r)if(Ye=to(),Ye!==r)if(kt=si(),kt!==r)if(Et=ra(),Et!==r){if(Yt=[],Rr=Us(),Rr!==r)for(;Rr!==r;)Yt.push(Rr),Rr=Us();else Yt=r;Yt!==r?(Ot=ae,ve=U(Ye,Et),ae=ve):(we=ae,ae=r)}else we=ae,ae=r;else we=ae,ae=r;else we=ae,ae=r;else we=ae,ae=r;if(ae===r)if(ae=we,ve=Bs(),ve!==r)if(Ye=to(),Ye!==r){if(kt=[],Et=we,Yt=si(),Yt===r&&(Yt=null),Yt!==r?(t.charCodeAt(we)===44?(Rr=H,we++):(Rr=r,jt===0&&it(X)),Rr!==r?(Bn=si(),Bn===r&&(Bn=null),Bn!==r?(xa=to(),xa!==r?(Ot=Et,Yt=ie(Ye,xa),Et=Yt):(we=Et,Et=r)):(we=Et,Et=r)):(we=Et,Et=r)):(we=Et,Et=r),Et!==r)for(;Et!==r;)kt.push(Et),Et=we,Yt=si(),Yt===r&&(Yt=null),Yt!==r?(t.charCodeAt(we)===44?(Rr=H,we++):(Rr=r,jt===0&&it(X)),Rr!==r?(Bn=si(),Bn===r&&(Bn=null),Bn!==r?(xa=to(),xa!==r?(Ot=Et,Yt=ie(Ye,xa),Et=Yt):(we=Et,Et=r)):(we=Et,Et=r)):(we=Et,Et=r)):(we=Et,Et=r);else kt=r;kt!==r?(Et=si(),Et===r&&(Et=null),Et!==r?(t.charCodeAt(we)===58?(Yt=C,we++):(Yt=r,jt===0&&it(N)),Yt!==r?(Rr=si(),Rr===r&&(Rr=null),Rr!==r?(Bn=AA(),Bn!==r?(Ot=ae,ve=fe(Ye,kt,Bn),ae=ve):(we=ae,ae=r)):(we=ae,ae=r)):(we=ae,ae=r)):(we=ae,ae=r)):(we=ae,ae=r)}else we=ae,ae=r;else we=ae,ae=r}return ae}function AA(){var ae,ve,Ye,kt,Et,Yt,Rr;if(ae=we,ve=we,jt++,Ye=we,kt=Gi(),kt!==r?(Et=Ut(),Et!==r?(t.charCodeAt(we)===45?(Yt=c,we++):(Yt=r,jt===0&&it(f)),Yt!==r?(Rr=si(),Rr!==r?(kt=[kt,Et,Yt,Rr],Ye=kt):(we=Ye,Ye=r)):(we=Ye,Ye=r)):(we=Ye,Ye=r)):(we=Ye,Ye=r),jt--,Ye!==r?(we=ve,ve=void 0):ve=r,ve!==r?(Ye=Us(),Ye!==r?(kt=bn(),kt!==r?(Et=qi(),Et!==r?(Yt=li(),Yt!==r?(Ot=ae,ve=ye(Et),ae=ve):(we=ae,ae=r)):(we=ae,ae=r)):(we=ae,ae=r)):(we=ae,ae=r)):(we=ae,ae=r),ae===r&&(ae=we,ve=Gi(),ve!==r?(Ye=bn(),Ye!==r?(kt=aA(),kt!==r?(Et=li(),Et!==r?(Ot=ae,ve=ye(kt),ae=ve):(we=ae,ae=r)):(we=ae,ae=r)):(we=ae,ae=r)):(we=ae,ae=r),ae===r))if(ae=we,ve=Qs(),ve!==r){if(Ye=[],kt=Us(),kt!==r)for(;kt!==r;)Ye.push(kt),kt=Us();else Ye=r;Ye!==r?(Ot=ae,ve=Qe(ve),ae=ve):(we=ae,ae=r)}else we=ae,ae=r;return ae}function Bs(){var ae,ve,Ye;for(jt++,ae=we,ve=[],t.charCodeAt(we)===32?(Ye=pe,we++):(Ye=r,jt===0&&it(Ee));Ye!==r;)ve.push(Ye),t.charCodeAt(we)===32?(Ye=pe,we++):(Ye=r,jt===0&&it(Ee));return ve!==r?(Ot=we,Ye=ke(ve),Ye?Ye=void 0:Ye=r,Ye!==r?(ve=[ve,Ye],ae=ve):(we=ae,ae=r)):(we=ae,ae=r),jt--,ae===r&&(ve=r,jt===0&&it(Pe)),ae}function Ut(){var ae,ve,Ye;for(ae=we,ve=[],t.charCodeAt(we)===32?(Ye=pe,we++):(Ye=r,jt===0&&it(Ee));Ye!==r;)ve.push(Ye),t.charCodeAt(we)===32?(Ye=pe,we++):(Ye=r,jt===0&&it(Ee));return ve!==r?(Ot=we,Ye=h(ve),Ye?Ye=void 0:Ye=r,Ye!==r?(ve=[ve,Ye],ae=ve):(we=ae,ae=r)):(we=ae,ae=r),ae}function bn(){var ae;return Ot=we,ae=Ke(),ae?ae=void 0:ae=r,ae}function li(){var ae;return Ot=we,ae=Ce(),ae?ae=void 0:ae=r,ae}function ta(){var ae;return ae=no(),ae===r&&(ae=Zt()),ae}function to(){var ae,ve,Ye;if(ae=no(),ae===r){if(ae=we,ve=[],Ye=na(),Ye!==r)for(;Ye!==r;)ve.push(Ye),Ye=na();else ve=r;ve!==r&&(Ot=ae,ve=Be()),ae=ve}return ae}function Qs(){var ae;return ae=vs(),ae===r&&(ae=ro(),ae===r&&(ae=no(),ae===r&&(ae=Zt()))),ae}function ra(){var ae;return ae=vs(),ae===r&&(ae=no(),ae===r&&(ae=na())),ae}function Zt(){var ae,ve,Ye,kt,Et,Yt;if(jt++,ae=we,re.test(t.charAt(we))?(ve=t.charAt(we),we++):(ve=r,jt===0&&it(Se)),ve!==r){for(Ye=[],kt=we,Et=si(),Et===r&&(Et=null),Et!==r?(Ue.test(t.charAt(we))?(Yt=t.charAt(we),we++):(Yt=r,jt===0&&it(dt)),Yt!==r?(Et=[Et,Yt],kt=Et):(we=kt,kt=r)):(we=kt,kt=r);kt!==r;)Ye.push(kt),kt=we,Et=si(),Et===r&&(Et=null),Et!==r?(Ue.test(t.charAt(we))?(Yt=t.charAt(we),we++):(Yt=r,jt===0&&it(dt)),Yt!==r?(Et=[Et,Yt],kt=Et):(we=kt,kt=r)):(we=kt,kt=r);Ye!==r?(Ot=ae,ve=q(),ae=ve):(we=ae,ae=r)}else we=ae,ae=r;return jt--,ae===r&&(ve=r,jt===0&&it(le)),ae}function na(){var ae,ve,Ye,kt,Et;if(ae=we,t.substr(we,2)===Qt?(ve=Qt,we+=2):(ve=r,jt===0&&it(He)),ve===r&&(ve=null),ve!==r)if(qe.test(t.charAt(we))?(Ye=t.charAt(we),we++):(Ye=r,jt===0&&it(Fe)),Ye!==r){for(kt=[],je.test(t.charAt(we))?(Et=t.charAt(we),we++):(Et=r,jt===0&&it(We));Et!==r;)kt.push(Et),je.test(t.charAt(we))?(Et=t.charAt(we),we++):(Et=r,jt===0&&it(We));kt!==r?(Ot=ae,ve=q(),ae=ve):(we=ae,ae=r)}else we=ae,ae=r;else we=ae,ae=r;return ae}function vs(){var ae,ve;return ae=we,t.substr(we,4)===pt?(ve=pt,we+=4):(ve=r,jt===0&&it(Oe)),ve!==r&&(Ot=ae,ve=k()),ae=ve,ae}function ro(){var ae,ve;return ae=we,t.substr(we,4)===I?(ve=I,we+=4):(ve=r,jt===0&&it(S)),ve!==r&&(Ot=ae,ve=y()),ae=ve,ae===r&&(ae=we,t.substr(we,5)===R?(ve=R,we+=5):(ve=r,jt===0&&it(Z)),ve!==r&&(Ot=ae,ve=te()),ae=ve),ae}function no(){var ae,ve,Ye,kt;return jt++,ae=we,t.charCodeAt(we)===34?(ve=Ae,we++):(ve=r,jt===0&&it(Re)),ve!==r?(t.charCodeAt(we)===34?(Ye=Ae,we++):(Ye=r,jt===0&&it(Re)),Ye!==r?(Ot=ae,ve=Le(),ae=ve):(we=ae,ae=r)):(we=ae,ae=r),ae===r&&(ae=we,t.charCodeAt(we)===34?(ve=Ae,we++):(ve=r,jt===0&&it(Re)),ve!==r?(Ye=io(),Ye!==r?(t.charCodeAt(we)===34?(kt=Ae,we++):(kt=r,jt===0&&it(Re)),kt!==r?(Ot=ae,ve=lt(Ye),ae=ve):(we=ae,ae=r)):(we=ae,ae=r)):(we=ae,ae=r)),jt--,ae===r&&(ve=r,jt===0&&it(ne)),ae}function io(){var ae,ve,Ye;if(ae=we,ve=[],Ye=Do(),Ye!==r)for(;Ye!==r;)ve.push(Ye),Ye=Do();else ve=r;return ve!==r&&(Ot=ae,ve=mt(ve)),ae=ve,ae}function Do(){var ae,ve,Ye,kt,Et,Yt;return qt.test(t.charAt(we))?(ae=t.charAt(we),we++):(ae=r,jt===0&&it(sr)),ae===r&&(ae=we,t.substr(we,2)===Pt?(ve=Pt,we+=2):(ve=r,jt===0&&it(mn)),ve!==r&&(Ot=ae,ve=Or()),ae=ve,ae===r&&(ae=we,t.substr(we,2)===Fr?(ve=Fr,we+=2):(ve=r,jt===0&&it(Ur)),ve!==r&&(Ot=ae,ve=fn()),ae=ve,ae===r&&(ae=we,t.substr(we,2)===vn?(ve=vn,we+=2):(ve=r,jt===0&&it(ws)),ve!==r&&(Ot=ae,ve=_i()),ae=ve,ae===r&&(ae=we,t.substr(we,2)===wo?(ve=wo,we+=2):(ve=r,jt===0&&it(Bo)),ve!==r&&(Ot=ae,ve=cs()),ae=ve,ae===r&&(ae=we,t.substr(we,2)===gn?(ve=gn,we+=2):(ve=r,jt===0&&it($s)),ve!==r&&(Ot=ae,ve=UA()),ae=ve,ae===r&&(ae=we,t.substr(we,2)===Qa?(ve=Qa,we+=2):(ve=r,jt===0&&it(Fg)),ve!==r&&(Ot=ae,ve=Rg()),ae=ve,ae===r&&(ae=we,t.substr(we,2)===$u?(ve=$u,we+=2):(ve=r,jt===0&&it(Yn)),ve!==r&&(Ot=ae,ve=Hi()),ae=ve,ae===r&&(ae=we,t.substr(we,2)===va?(ve=va,we+=2):(ve=r,jt===0&&it(KA)),ve!==r&&(Ot=ae,ve=Xe()),ae=ve,ae===r&&(ae=we,t.substr(we,2)===Wn?(ve=Wn,we+=2):(ve=r,jt===0&&it(ii)),ve!==r?(Ye=ci(),Ye!==r?(kt=ci(),kt!==r?(Et=ci(),Et!==r?(Yt=ci(),Yt!==r?(Ot=ae,ve=Xt(Ye,kt,Et,Yt),ae=ve):(we=ae,ae=r)):(we=ae,ae=r)):(we=ae,ae=r)):(we=ae,ae=r)):(we=ae,ae=r)))))))))),ae}function ci(){var ae;return Ti.test(t.charAt(we))?(ae=t.charAt(we),we++):(ae=r,jt===0&&it(Jn)),ae}function si(){var ae,ve;if(jt++,ae=[],Dt.test(t.charAt(we))?(ve=t.charAt(we),we++):(ve=r,jt===0&&it(Xi)),ve!==r)for(;ve!==r;)ae.push(ve),Dt.test(t.charAt(we))?(ve=t.charAt(we),we++):(ve=r,jt===0&&it(Xi));else ae=r;return jt--,ae===r&&(ve=r,jt===0&&it(us)),ae}function ia(){var ae,ve;if(jt++,ae=[],fs.test(t.charAt(we))?(ve=t.charAt(we),we++):(ve=r,jt===0&&it(sA)),ve!==r)for(;ve!==r;)ae.push(ve),fs.test(t.charAt(we))?(ve=t.charAt(we),we++):(ve=r,jt===0&&it(sA));else ae=r;return jt--,ae===r&&(ve=r,jt===0&&it(Pn)),ae}function Us(){var ae,ve,Ye,kt,Et,Yt;if(ae=we,ve=Gi(),ve!==r){for(Ye=[],kt=we,Et=si(),Et===r&&(Et=null),Et!==r?(Yt=Gi(),Yt!==r?(Et=[Et,Yt],kt=Et):(we=kt,kt=r)):(we=kt,kt=r);kt!==r;)Ye.push(kt),kt=we,Et=si(),Et===r&&(Et=null),Et!==r?(Yt=Gi(),Yt!==r?(Et=[Et,Yt],kt=Et):(we=kt,kt=r)):(we=kt,kt=r);Ye!==r?(ve=[ve,Ye],ae=ve):(we=ae,ae=r)}else we=ae,ae=r;return ae}function Gi(){var ae;return t.substr(we,2)===kr?(ae=kr,we+=2):(ae=r,jt===0&&it(Qo)),ae===r&&(t.charCodeAt(we)===10?(ae=fr,we++):(ae=r,jt===0&&it(Da)),ae===r&&(t.charCodeAt(we)===13?(ae=$,we++):(ae=r,jt===0&&it(rn)))),ae}let GA=2,lA=0;if(oA=a(),oA!==r&&we===t.length)return oA;throw oA!==r&&we"u"?!0:typeof t=="object"&&t!==null?Object.keys(t).every(e=>GJ(t[e])):!1}function rN(t,e,r){if(t===null)return`null -`;if(typeof t=="number"||typeof t=="boolean")return`${t.toString()} -`;if(typeof t=="string")return`${HJ(t)} -`;if(Array.isArray(t)){if(t.length===0)return`[] -`;let o=" ".repeat(e);return` -${t.map(n=>`${o}- ${rN(n,e+1,!1)}`).join("")}`}if(typeof t=="object"&&t){let[o,a]=t instanceof sD?[t.data,!1]:[t,!0],n=" ".repeat(e),c=Object.keys(o);a&&c.sort((g,p)=>{let E=_J.indexOf(g),B=_J.indexOf(p);return E===-1&&B===-1?gp?1:0:E!==-1&&B===-1?-1:E===-1&&B!==-1?1:E-B});let f=c.filter(g=>!GJ(o[g])).map((g,p)=>{let E=o[g],B=HJ(g),Q=rN(E,e+1,!0),x=p>0||r?n:"",C=B.length>1024?`? ${B} -${x}:`:`${B}:`,N=Q.startsWith(` -`)?Q:` ${Q}`;return`${x}${C}${N}`}).join(e===0?` -`:"")||` -`;return r?` -${f}`:`${f}`}throw new Error(`Unsupported value type (${t})`)}function ja(t){try{let e=rN(t,0,!1);return e!==` -`?e:""}catch(e){throw e.location&&(e.message=e.message.replace(/(\.)?$/,` (line ${e.location.start.line}, column ${e.location.start.column})$1`)),e}}function KHe(t){return t.endsWith(` -`)||(t+=` -`),(0,qJ.parse)(t)}function HHe(t){if(_He.test(t))return KHe(t);let e=(0,oD.safeLoad)(t,{schema:oD.FAILSAFE_SCHEMA,json:!0});if(e==null)return{};if(typeof e!="object")throw new Error(`Expected an indexed object, got a ${typeof e} instead. Does your file follow Yaml's rules?`);if(Array.isArray(e))throw new Error("Expected an indexed object, got an array instead. Does your file follow Yaml's rules?");return e}function os(t){return HHe(t)}var oD,qJ,UHe,_J,sD,_He,jJ=Lt(()=>{oD=be(OJ()),qJ=be(KJ()),UHe=/^(?![-?:,\][{}#&*!|>'"%@` \t\r\n]).([ \t]*(?![,\][{}:# \t\r\n]).)*$/,_J=["__metadata","version","resolution","dependencies","peerDependencies","dependenciesMeta","peerDependenciesMeta","binaries"],sD=class{constructor(e){this.data=e}};ja.PreserveOrdering=sD;_He=/^(#.*(\r?\n))*?#\s+yarn\s+lockfile\s+v1\r?\n/i});var gw={};tr(gw,{parseResolution:()=>Wv,parseShell:()=>Gv,parseSyml:()=>os,stringifyArgument:()=>HT,stringifyArgumentSegment:()=>qT,stringifyArithmeticExpression:()=>Yv,stringifyCommand:()=>_T,stringifyCommandChain:()=>Oy,stringifyCommandChainThen:()=>KT,stringifyCommandLine:()=>jv,stringifyCommandLineThen:()=>UT,stringifyEnvSegment:()=>qv,stringifyRedirectArgument:()=>ow,stringifyResolution:()=>Jv,stringifyShell:()=>Ly,stringifyShellLine:()=>Ly,stringifySyml:()=>ja,stringifyValueArgument:()=>pd});var cl=Lt(()=>{GW();JW();jJ()});var WJ=_((sPt,nN)=>{"use strict";var qHe=t=>{let e=!1,r=!1,o=!1;for(let a=0;a{if(!(typeof t=="string"||Array.isArray(t)))throw new TypeError("Expected the input to be `string | string[]`");e=Object.assign({pascalCase:!1},e);let r=a=>e.pascalCase?a.charAt(0).toUpperCase()+a.slice(1):a;return Array.isArray(t)?t=t.map(a=>a.trim()).filter(a=>a.length).join("-"):t=t.trim(),t.length===0?"":t.length===1?e.pascalCase?t.toUpperCase():t.toLowerCase():(t!==t.toLowerCase()&&(t=qHe(t)),t=t.replace(/^[_.\- ]+/,"").toLowerCase().replace(/[_.\- ]+(\w|$)/g,(a,n)=>n.toUpperCase()).replace(/\d+(\w|$)/g,a=>a.toUpperCase()),r(t))};nN.exports=YJ;nN.exports.default=YJ});var JJ=_((oPt,GHe)=>{GHe.exports=[{name:"AppVeyor",constant:"APPVEYOR",env:"APPVEYOR",pr:"APPVEYOR_PULL_REQUEST_NUMBER"},{name:"Azure Pipelines",constant:"AZURE_PIPELINES",env:"SYSTEM_TEAMFOUNDATIONCOLLECTIONURI",pr:"SYSTEM_PULLREQUEST_PULLREQUESTID"},{name:"Appcircle",constant:"APPCIRCLE",env:"AC_APPCIRCLE"},{name:"Bamboo",constant:"BAMBOO",env:"bamboo_planKey"},{name:"Bitbucket Pipelines",constant:"BITBUCKET",env:"BITBUCKET_COMMIT",pr:"BITBUCKET_PR_ID"},{name:"Bitrise",constant:"BITRISE",env:"BITRISE_IO",pr:"BITRISE_PULL_REQUEST"},{name:"Buddy",constant:"BUDDY",env:"BUDDY_WORKSPACE_ID",pr:"BUDDY_EXECUTION_PULL_REQUEST_ID"},{name:"Buildkite",constant:"BUILDKITE",env:"BUILDKITE",pr:{env:"BUILDKITE_PULL_REQUEST",ne:"false"}},{name:"CircleCI",constant:"CIRCLE",env:"CIRCLECI",pr:"CIRCLE_PULL_REQUEST"},{name:"Cirrus CI",constant:"CIRRUS",env:"CIRRUS_CI",pr:"CIRRUS_PR"},{name:"AWS CodeBuild",constant:"CODEBUILD",env:"CODEBUILD_BUILD_ARN"},{name:"Codefresh",constant:"CODEFRESH",env:"CF_BUILD_ID",pr:{any:["CF_PULL_REQUEST_NUMBER","CF_PULL_REQUEST_ID"]}},{name:"Codeship",constant:"CODESHIP",env:{CI_NAME:"codeship"}},{name:"Drone",constant:"DRONE",env:"DRONE",pr:{DRONE_BUILD_EVENT:"pull_request"}},{name:"dsari",constant:"DSARI",env:"DSARI"},{name:"GitHub Actions",constant:"GITHUB_ACTIONS",env:"GITHUB_ACTIONS",pr:{GITHUB_EVENT_NAME:"pull_request"}},{name:"GitLab CI",constant:"GITLAB",env:"GITLAB_CI",pr:"CI_MERGE_REQUEST_ID"},{name:"GoCD",constant:"GOCD",env:"GO_PIPELINE_LABEL"},{name:"LayerCI",constant:"LAYERCI",env:"LAYERCI",pr:"LAYERCI_PULL_REQUEST"},{name:"Hudson",constant:"HUDSON",env:"HUDSON_URL"},{name:"Jenkins",constant:"JENKINS",env:["JENKINS_URL","BUILD_ID"],pr:{any:["ghprbPullId","CHANGE_ID"]}},{name:"Magnum CI",constant:"MAGNUM",env:"MAGNUM"},{name:"Netlify CI",constant:"NETLIFY",env:"NETLIFY",pr:{env:"PULL_REQUEST",ne:"false"}},{name:"Nevercode",constant:"NEVERCODE",env:"NEVERCODE",pr:{env:"NEVERCODE_PULL_REQUEST",ne:"false"}},{name:"Render",constant:"RENDER",env:"RENDER",pr:{IS_PULL_REQUEST:"true"}},{name:"Sail CI",constant:"SAIL",env:"SAILCI",pr:"SAIL_PULL_REQUEST_NUMBER"},{name:"Semaphore",constant:"SEMAPHORE",env:"SEMAPHORE",pr:"PULL_REQUEST_NUMBER"},{name:"Screwdriver",constant:"SCREWDRIVER",env:"SCREWDRIVER",pr:{env:"SD_PULL_REQUEST",ne:"false"}},{name:"Shippable",constant:"SHIPPABLE",env:"SHIPPABLE",pr:{IS_PULL_REQUEST:"true"}},{name:"Solano CI",constant:"SOLANO",env:"TDDIUM",pr:"TDDIUM_PR_ID"},{name:"Strider CD",constant:"STRIDER",env:"STRIDER"},{name:"TaskCluster",constant:"TASKCLUSTER",env:["TASK_ID","RUN_ID"]},{name:"TeamCity",constant:"TEAMCITY",env:"TEAMCITY_VERSION"},{name:"Travis CI",constant:"TRAVIS",env:"TRAVIS",pr:{env:"TRAVIS_PULL_REQUEST",ne:"false"}},{name:"Vercel",constant:"VERCEL",env:"NOW_BUILDER"},{name:"Visual Studio App Center",constant:"APPCENTER",env:"APPCENTER_BUILD_ID"}]});var Qd=_(EA=>{"use strict";var zJ=JJ(),cu=process.env;Object.defineProperty(EA,"_vendors",{value:zJ.map(function(t){return t.constant})});EA.name=null;EA.isPR=null;zJ.forEach(function(t){let r=(Array.isArray(t.env)?t.env:[t.env]).every(function(o){return VJ(o)});if(EA[t.constant]=r,r)switch(EA.name=t.name,typeof t.pr){case"string":EA.isPR=!!cu[t.pr];break;case"object":"env"in t.pr?EA.isPR=t.pr.env in cu&&cu[t.pr.env]!==t.pr.ne:"any"in t.pr?EA.isPR=t.pr.any.some(function(o){return!!cu[o]}):EA.isPR=VJ(t.pr);break;default:EA.isPR=null}});EA.isCI=!!(cu.CI||cu.CONTINUOUS_INTEGRATION||cu.BUILD_NUMBER||cu.RUN_ID||EA.name);function VJ(t){return typeof t=="string"?!!cu[t]:Object.keys(t).every(function(e){return cu[e]===t[e]})}});var aD=_(IA=>{"use strict";Object.defineProperty(IA,"__esModule",{value:!0});var jHe=0,YHe=1,WHe=2,JHe="",VHe="\0",zHe=-1,XHe=/^(-h|--help)(?:=([0-9]+))?$/,ZHe=/^(--[a-z]+(?:-[a-z]+)*|-[a-zA-Z]+)$/,$He=/^-[a-zA-Z]{2,}$/,eqe=/^([^=]+)=([\s\S]*)$/,tqe=process.env.DEBUG_CLI==="1";IA.BATCH_REGEX=$He;IA.BINDING_REGEX=eqe;IA.DEBUG=tqe;IA.END_OF_INPUT=VHe;IA.HELP_COMMAND_INDEX=zHe;IA.HELP_REGEX=XHe;IA.NODE_ERRORED=WHe;IA.NODE_INITIAL=jHe;IA.NODE_SUCCESS=YHe;IA.OPTION_REGEX=ZHe;IA.START_OF_INPUT=JHe});var AD=_(pw=>{"use strict";Object.defineProperty(pw,"__esModule",{value:!0});var rqe=aD(),iN=class extends Error{constructor(e){super(e),this.clipanion={type:"usage"},this.name="UsageError"}},sN=class extends Error{constructor(e,r){if(super(),this.input=e,this.candidates=r,this.clipanion={type:"none"},this.name="UnknownSyntaxError",this.candidates.length===0)this.message="Command not found, but we're not sure what's the alternative.";else if(this.candidates.every(o=>o.reason!==null&&o.reason===r[0].reason)){let[{reason:o}]=this.candidates;this.message=`${o} - -${this.candidates.map(({usage:a})=>`$ ${a}`).join(` -`)}`}else if(this.candidates.length===1){let[{usage:o}]=this.candidates;this.message=`Command not found; did you mean: - -$ ${o} -${aN(e)}`}else this.message=`Command not found; did you mean one of: - -${this.candidates.map(({usage:o},a)=>`${`${a}.`.padStart(4)} ${o}`).join(` -`)} - -${aN(e)}`}},oN=class extends Error{constructor(e,r){super(),this.input=e,this.usages=r,this.clipanion={type:"none"},this.name="AmbiguousSyntaxError",this.message=`Cannot find which to pick amongst the following alternatives: - -${this.usages.map((o,a)=>`${`${a}.`.padStart(4)} ${o}`).join(` -`)} - -${aN(e)}`}},aN=t=>`While running ${t.filter(e=>e!==rqe.END_OF_INPUT).map(e=>{let r=JSON.stringify(e);return e.match(/\s/)||e.length===0||r!==`"${e}"`?r:e}).join(" ")}`;pw.AmbiguousSyntaxError=oN;pw.UnknownSyntaxError=sN;pw.UsageError=iN});var lN=_(hw=>{"use strict";Object.defineProperty(hw,"__esModule",{value:!0});var XJ=80,AN=Array(XJ).fill("\u2501");for(let t=0;t<=24;++t)AN[AN.length-t]=`\x1B[38;5;${232+t}m\u2501`;var nqe={header:t=>`\x1B[1m\u2501\u2501\u2501 ${t}${t.length`\x1B[1m${t}\x1B[22m`,error:t=>`\x1B[31m\x1B[1m${t}\x1B[22m\x1B[39m`,code:t=>`\x1B[36m${t}\x1B[39m`},iqe={header:t=>t,bold:t=>t,error:t=>t,code:t=>t};function sqe(t){let e=t.split(` -`),r=e.filter(a=>a.match(/\S/)),o=r.length>0?r.reduce((a,n)=>Math.min(a,n.length-n.trimStart().length),Number.MAX_VALUE):0;return e.map(a=>a.slice(o).trimRight()).join(` -`)}function oqe(t,{format:e,paragraphs:r}){return t=t.replace(/\r\n?/g,` -`),t=sqe(t),t=t.replace(/^\n+|\n+$/g,""),t=t.replace(/^(\s*)-([^\n]*?)\n+/gm,`$1-$2 - -`),t=t.replace(/\n(\n)?\n*/g,(o,a)=>a||" "),r&&(t=t.split(/\n/).map(o=>{let a=o.match(/^\s*[*-][\t ]+(.*)/);if(!a)return o.match(/(.{1,80})(?: |$)/g).join(` -`);let n=o.length-o.trimStart().length;return a[1].match(new RegExp(`(.{1,${78-n}})(?: |$)`,"g")).map((c,f)=>" ".repeat(n)+(f===0?"- ":" ")+c).join(` -`)}).join(` - -`)),t=t.replace(/(`+)((?:.|[\n])*?)\1/g,(o,a,n)=>e.code(a+n+a)),t=t.replace(/(\*\*)((?:.|[\n])*?)\1/g,(o,a,n)=>e.bold(a+n+a)),t?`${t} -`:""}hw.formatMarkdownish=oqe;hw.richFormat=nqe;hw.textFormat=iqe});var _f=_(dp=>{"use strict";Object.defineProperty(dp,"__esModule",{value:!0});var ZJ=AD(),$J=Symbol("clipanion/isOption");function aqe(t){return{...t,[$J]:!0}}function Aqe(t,e){return typeof t>"u"?[t,e]:typeof t=="object"&&t!==null&&!Array.isArray(t)?[void 0,t]:[t,e]}function cN(t,e=!1){let r=t.replace(/^\.: /,"");return e&&(r=r[0].toLowerCase()+r.slice(1)),r}function eV(t,e){return e.length===1?new ZJ.UsageError(`${t}: ${cN(e[0],!0)}`):new ZJ.UsageError(`${t}: -${e.map(r=>` -- ${cN(r)}`).join("")}`)}function lqe(t,e,r){if(typeof r>"u")return e;let o=[],a=[],n=f=>{let g=e;return e=f,n.bind(null,g)};if(!r(e,{errors:o,coercions:a,coercion:n}))throw eV(`Invalid value for ${t}`,o);for(let[,f]of a)f();return e}dp.applyValidator=lqe;dp.cleanValidationError=cN;dp.formatError=eV;dp.isOptionSymbol=$J;dp.makeCommandOption=aqe;dp.rerouteArguments=Aqe});var wA=_(Br=>{"use strict";Object.defineProperty(Br,"__esModule",{value:!0});var tV=/^[a-zA-Z_][a-zA-Z0-9_]*$/,rV=/^#[0-9a-f]{6}$/i,nV=/^#[0-9a-f]{6}([0-9a-f]{2})?$/i,iV=/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/,sV=/^[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89aAbB][a-f0-9]{3}-[a-f0-9]{12}$/i,uN=/^(?:[1-9]\d{3}(-?)(?:(?:0[1-9]|1[0-2])\1(?:0[1-9]|1\d|2[0-8])|(?:0[13-9]|1[0-2])\1(?:29|30)|(?:0[13578]|1[02])(?:\1)31|00[1-9]|0[1-9]\d|[12]\d{2}|3(?:[0-5]\d|6[0-5]))|(?:[1-9]\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[13579][26])00)(?:(-?)02(?:\2)29|-?366))T(?:[01]\d|2[0-3])(:?)[0-5]\d(?:\3[0-5]\d)?(?:Z|[+-][01]\d(?:\3[0-5]\d)?)$/,oV=t=>()=>t;function on({test:t}){return oV(t)()}function hs(t){return t===null?"null":t===void 0?"undefined":t===""?"an empty string":JSON.stringify(t)}function mp(t,e){var r,o,a;return typeof e=="number"?`${(r=t==null?void 0:t.p)!==null&&r!==void 0?r:"."}[${e}]`:tV.test(e)?`${(o=t==null?void 0:t.p)!==null&&o!==void 0?o:""}.${e}`:`${(a=t==null?void 0:t.p)!==null&&a!==void 0?a:"."}[${JSON.stringify(e)}]`}function vd(t,e){return r=>{let o=t[e];return t[e]=r,vd(t,e).bind(null,o)}}function aV(t,e){return r=>{t[e]=r}}function lD(t,e,r){return t===1?e:r}function Hr({errors:t,p:e}={},r){return t==null||t.push(`${e??"."}: ${r}`),!1}var AV=()=>on({test:(t,e)=>!0});function cqe(t){return on({test:(e,r)=>e!==t?Hr(r,`Expected a literal (got ${hs(t)})`):!0})}var uqe=()=>on({test:(t,e)=>typeof t!="string"?Hr(e,`Expected a string (got ${hs(t)})`):!0});function fqe(t){let e=Array.isArray(t)?t:Object.values(t),r=new Set(e);return on({test:(o,a)=>r.has(o)?!0:Hr(a,`Expected a valid enumeration value (got ${hs(o)})`)})}var gqe=new Map([["true",!0],["True",!0],["1",!0],[1,!0],["false",!1],["False",!1],["0",!1],[0,!1]]),pqe=()=>on({test:(t,e)=>{var r;if(typeof t!="boolean"){if(typeof(e==null?void 0:e.coercions)<"u"){if(typeof(e==null?void 0:e.coercion)>"u")return Hr(e,"Unbound coercion result");let o=gqe.get(t);if(typeof o<"u")return e.coercions.push([(r=e.p)!==null&&r!==void 0?r:".",e.coercion.bind(null,o)]),!0}return Hr(e,`Expected a boolean (got ${hs(t)})`)}return!0}}),hqe=()=>on({test:(t,e)=>{var r;if(typeof t!="number"){if(typeof(e==null?void 0:e.coercions)<"u"){if(typeof(e==null?void 0:e.coercion)>"u")return Hr(e,"Unbound coercion result");let o;if(typeof t=="string"){let a;try{a=JSON.parse(t)}catch{}if(typeof a=="number")if(JSON.stringify(a)===t)o=a;else return Hr(e,`Received a number that can't be safely represented by the runtime (${t})`)}if(typeof o<"u")return e.coercions.push([(r=e.p)!==null&&r!==void 0?r:".",e.coercion.bind(null,o)]),!0}return Hr(e,`Expected a number (got ${hs(t)})`)}return!0}}),dqe=()=>on({test:(t,e)=>{var r;if(!(t instanceof Date)){if(typeof(e==null?void 0:e.coercions)<"u"){if(typeof(e==null?void 0:e.coercion)>"u")return Hr(e,"Unbound coercion result");let o;if(typeof t=="string"&&uN.test(t))o=new Date(t);else{let a;if(typeof t=="string"){let n;try{n=JSON.parse(t)}catch{}typeof n=="number"&&(a=n)}else typeof t=="number"&&(a=t);if(typeof a<"u")if(Number.isSafeInteger(a)||!Number.isSafeInteger(a*1e3))o=new Date(a*1e3);else return Hr(e,`Received a timestamp that can't be safely represented by the runtime (${t})`)}if(typeof o<"u")return e.coercions.push([(r=e.p)!==null&&r!==void 0?r:".",e.coercion.bind(null,o)]),!0}return Hr(e,`Expected a date (got ${hs(t)})`)}return!0}}),mqe=(t,{delimiter:e}={})=>on({test:(r,o)=>{var a;if(typeof r=="string"&&typeof e<"u"&&typeof(o==null?void 0:o.coercions)<"u"){if(typeof(o==null?void 0:o.coercion)>"u")return Hr(o,"Unbound coercion result");r=r.split(e),o.coercions.push([(a=o.p)!==null&&a!==void 0?a:".",o.coercion.bind(null,r)])}if(!Array.isArray(r))return Hr(o,`Expected an array (got ${hs(r)})`);let n=!0;for(let c=0,f=r.length;c{let r=lV(t.length);return on({test:(o,a)=>{var n;if(typeof o=="string"&&typeof e<"u"&&typeof(a==null?void 0:a.coercions)<"u"){if(typeof(a==null?void 0:a.coercion)>"u")return Hr(a,"Unbound coercion result");o=o.split(e),a.coercions.push([(n=a.p)!==null&&n!==void 0?n:".",a.coercion.bind(null,o)])}if(!Array.isArray(o))return Hr(a,`Expected a tuple (got ${hs(o)})`);let c=r(o,Object.assign({},a));for(let f=0,g=o.length;fon({test:(r,o)=>{if(typeof r!="object"||r===null)return Hr(o,`Expected an object (got ${hs(r)})`);let a=Object.keys(r),n=!0;for(let c=0,f=a.length;c{let r=Object.keys(t);return on({test:(o,a)=>{if(typeof o!="object"||o===null)return Hr(a,`Expected an object (got ${hs(o)})`);let n=new Set([...r,...Object.keys(o)]),c={},f=!0;for(let g of n){if(g==="constructor"||g==="__proto__")f=Hr(Object.assign(Object.assign({},a),{p:mp(a,g)}),"Unsafe property name");else{let p=Object.prototype.hasOwnProperty.call(t,g)?t[g]:void 0,E=Object.prototype.hasOwnProperty.call(o,g)?o[g]:void 0;typeof p<"u"?f=p(E,Object.assign(Object.assign({},a),{p:mp(a,g),coercion:vd(o,g)}))&&f:e===null?f=Hr(Object.assign(Object.assign({},a),{p:mp(a,g)}),`Extraneous property (got ${hs(E)})`):Object.defineProperty(c,g,{enumerable:!0,get:()=>E,set:aV(o,g)})}if(!f&&(a==null?void 0:a.errors)==null)break}return e!==null&&(f||(a==null?void 0:a.errors)!=null)&&(f=e(c,a)&&f),f}})},Iqe=t=>on({test:(e,r)=>e instanceof t?!0:Hr(r,`Expected an instance of ${t.name} (got ${hs(e)})`)}),wqe=(t,{exclusive:e=!1}={})=>on({test:(r,o)=>{var a,n,c;let f=[],g=typeof(o==null?void 0:o.errors)<"u"?[]:void 0;for(let p=0,E=t.length;p1?Hr(o,`Expected to match exactly a single predicate (matched ${f.join(", ")})`):(c=o==null?void 0:o.errors)===null||c===void 0||c.push(...g),!1}}),Bqe=(t,e)=>on({test:(r,o)=>{var a,n;let c={value:r},f=typeof(o==null?void 0:o.coercions)<"u"?vd(c,"value"):void 0,g=typeof(o==null?void 0:o.coercions)<"u"?[]:void 0;if(!t(r,Object.assign(Object.assign({},o),{coercion:f,coercions:g})))return!1;let p=[];if(typeof g<"u")for(let[,E]of g)p.push(E());try{if(typeof(o==null?void 0:o.coercions)<"u"){if(c.value!==r){if(typeof(o==null?void 0:o.coercion)>"u")return Hr(o,"Unbound coercion result");o.coercions.push([(a=o.p)!==null&&a!==void 0?a:".",o.coercion.bind(null,c.value)])}(n=o==null?void 0:o.coercions)===null||n===void 0||n.push(...g)}return e.every(E=>E(c.value,o))}finally{for(let E of p)E()}}}),Qqe=t=>on({test:(e,r)=>typeof e>"u"?!0:t(e,r)}),vqe=t=>on({test:(e,r)=>e===null?!0:t(e,r)}),Dqe=t=>on({test:(e,r)=>e.length>=t?!0:Hr(r,`Expected to have a length of at least ${t} elements (got ${e.length})`)}),Sqe=t=>on({test:(e,r)=>e.length<=t?!0:Hr(r,`Expected to have a length of at most ${t} elements (got ${e.length})`)}),lV=t=>on({test:(e,r)=>e.length!==t?Hr(r,`Expected to have a length of exactly ${t} elements (got ${e.length})`):!0}),kqe=({map:t}={})=>on({test:(e,r)=>{let o=new Set,a=new Set;for(let n=0,c=e.length;non({test:(t,e)=>t<=0?!0:Hr(e,`Expected to be negative (got ${t})`)}),Pqe=()=>on({test:(t,e)=>t>=0?!0:Hr(e,`Expected to be positive (got ${t})`)}),bqe=t=>on({test:(e,r)=>e>=t?!0:Hr(r,`Expected to be at least ${t} (got ${e})`)}),Fqe=t=>on({test:(e,r)=>e<=t?!0:Hr(r,`Expected to be at most ${t} (got ${e})`)}),Rqe=(t,e)=>on({test:(r,o)=>r>=t&&r<=e?!0:Hr(o,`Expected to be in the [${t}; ${e}] range (got ${r})`)}),Tqe=(t,e)=>on({test:(r,o)=>r>=t&&ron({test:(e,r)=>e!==Math.round(e)?Hr(r,`Expected to be an integer (got ${e})`):Number.isSafeInteger(e)?!0:Hr(r,`Expected to be a safe integer (got ${e})`)}),Mqe=t=>on({test:(e,r)=>t.test(e)?!0:Hr(r,`Expected to match the pattern ${t.toString()} (got ${hs(e)})`)}),Lqe=()=>on({test:(t,e)=>t!==t.toLowerCase()?Hr(e,`Expected to be all-lowercase (got ${t})`):!0}),Oqe=()=>on({test:(t,e)=>t!==t.toUpperCase()?Hr(e,`Expected to be all-uppercase (got ${t})`):!0}),Uqe=()=>on({test:(t,e)=>sV.test(t)?!0:Hr(e,`Expected to be a valid UUID v4 (got ${hs(t)})`)}),Kqe=()=>on({test:(t,e)=>uN.test(t)?!1:Hr(e,`Expected to be a valid ISO 8601 date string (got ${hs(t)})`)}),_qe=({alpha:t=!1})=>on({test:(e,r)=>(t?rV.test(e):nV.test(e))?!0:Hr(r,`Expected to be a valid hexadecimal color string (got ${hs(e)})`)}),Hqe=()=>on({test:(t,e)=>iV.test(t)?!0:Hr(e,`Expected to be a valid base 64 string (got ${hs(t)})`)}),qqe=(t=AV())=>on({test:(e,r)=>{let o;try{o=JSON.parse(e)}catch{return Hr(r,`Expected to be a valid JSON string (got ${hs(e)})`)}return t(o,r)}}),Gqe=t=>{let e=new Set(t);return on({test:(r,o)=>{let a=new Set(Object.keys(r)),n=[];for(let c of e)a.has(c)||n.push(c);return n.length>0?Hr(o,`Missing required ${lD(n.length,"property","properties")} ${n.map(c=>`"${c}"`).join(", ")}`):!0}})},jqe=t=>{let e=new Set(t);return on({test:(r,o)=>{let a=new Set(Object.keys(r)),n=[];for(let c of e)a.has(c)&&n.push(c);return n.length>0?Hr(o,`Forbidden ${lD(n.length,"property","properties")} ${n.map(c=>`"${c}"`).join(", ")}`):!0}})},Yqe=t=>{let e=new Set(t);return on({test:(r,o)=>{let a=new Set(Object.keys(r)),n=[];for(let c of e)a.has(c)&&n.push(c);return n.length>1?Hr(o,`Mutually exclusive properties ${n.map(c=>`"${c}"`).join(", ")}`):!0}})};(function(t){t.Forbids="Forbids",t.Requires="Requires"})(Br.KeyRelationship||(Br.KeyRelationship={}));var Wqe={[Br.KeyRelationship.Forbids]:{expect:!1,message:"forbids using"},[Br.KeyRelationship.Requires]:{expect:!0,message:"requires using"}},Jqe=(t,e,r,{ignore:o=[]}={})=>{let a=new Set(o),n=new Set(r),c=Wqe[e];return on({test:(f,g)=>{let p=new Set(Object.keys(f));if(!p.has(t)||a.has(f[t]))return!0;let E=[];for(let B of n)(p.has(B)&&!a.has(f[B]))!==c.expect&&E.push(B);return E.length>=1?Hr(g,`Property "${t}" ${c.message} ${lD(E.length,"property","properties")} ${E.map(B=>`"${B}"`).join(", ")}`):!0}})};Br.applyCascade=Bqe;Br.base64RegExp=iV;Br.colorStringAlphaRegExp=nV;Br.colorStringRegExp=rV;Br.computeKey=mp;Br.getPrintable=hs;Br.hasExactLength=lV;Br.hasForbiddenKeys=jqe;Br.hasKeyRelationship=Jqe;Br.hasMaxLength=Sqe;Br.hasMinLength=Dqe;Br.hasMutuallyExclusiveKeys=Yqe;Br.hasRequiredKeys=Gqe;Br.hasUniqueItems=kqe;Br.isArray=mqe;Br.isAtLeast=bqe;Br.isAtMost=Fqe;Br.isBase64=Hqe;Br.isBoolean=pqe;Br.isDate=dqe;Br.isDict=Cqe;Br.isEnum=fqe;Br.isHexColor=_qe;Br.isISO8601=Kqe;Br.isInExclusiveRange=Tqe;Br.isInInclusiveRange=Rqe;Br.isInstanceOf=Iqe;Br.isInteger=Nqe;Br.isJSON=qqe;Br.isLiteral=cqe;Br.isLowerCase=Lqe;Br.isNegative=xqe;Br.isNullable=vqe;Br.isNumber=hqe;Br.isObject=Eqe;Br.isOneOf=wqe;Br.isOptional=Qqe;Br.isPositive=Pqe;Br.isString=uqe;Br.isTuple=yqe;Br.isUUID4=Uqe;Br.isUnknown=AV;Br.isUpperCase=Oqe;Br.iso8601RegExp=uN;Br.makeCoercionFn=vd;Br.makeSetter=aV;Br.makeTrait=oV;Br.makeValidator=on;Br.matchesRegExp=Mqe;Br.plural=lD;Br.pushError=Hr;Br.simpleKeyRegExp=tV;Br.uuid4RegExp=sV});var Dd=_(fN=>{"use strict";Object.defineProperty(fN,"__esModule",{value:!0});var cV=_f();function Vqe(t){if(t&&t.__esModule)return t;var e=Object.create(null);return t&&Object.keys(t).forEach(function(r){if(r!=="default"){var o=Object.getOwnPropertyDescriptor(t,r);Object.defineProperty(e,r,o.get?o:{enumerable:!0,get:function(){return t[r]}})}}),e.default=t,Object.freeze(e)}var dw=class{constructor(){this.help=!1}static Usage(e){return e}async catch(e){throw e}async validateAndExecute(){let r=this.constructor.schema;if(Array.isArray(r)){let{isDict:a,isUnknown:n,applyCascade:c}=await Promise.resolve().then(function(){return Vqe(wA())}),f=c(a(n()),r),g=[],p=[];if(!f(this,{errors:g,coercions:p}))throw cV.formatError("Invalid option schema",g);for(let[,B]of p)B()}else if(r!=null)throw new Error("Invalid command schema");let o=await this.execute();return typeof o<"u"?o:0}};dw.isOption=cV.isOptionSymbol;dw.Default=[];fN.Command=dw});var pD=_(fi=>{"use strict";Object.defineProperty(fi,"__esModule",{value:!0});var Pr=aD(),fD=AD();function fa(t){Pr.DEBUG&&console.log(t)}var uV={candidateUsage:null,requiredOptions:[],errorMessage:null,ignoreOptions:!1,path:[],positionals:[],options:[],remainder:null,selectedIndex:Pr.HELP_COMMAND_INDEX};function gN(){return{nodes:[qo(),qo(),qo()]}}function fV(t){let e=gN(),r=[],o=e.nodes.length;for(let a of t){r.push(o);for(let n=0;n{if(e.has(o))return;e.add(o);let a=t.nodes[o];for(let c of Object.values(a.statics))for(let{to:f}of c)r(f);for(let[,{to:c}]of a.dynamics)r(c);for(let{to:c}of a.shortcuts)r(c);let n=new Set(a.shortcuts.map(({to:c})=>c));for(;a.shortcuts.length>0;){let{to:c}=a.shortcuts.shift(),f=t.nodes[c];for(let[g,p]of Object.entries(f.statics)){let E=Object.prototype.hasOwnProperty.call(a.statics,g)?a.statics[g]:a.statics[g]=[];for(let B of p)E.some(({to:Q})=>B.to===Q)||E.push(B)}for(let[g,p]of f.dynamics)a.dynamics.some(([E,{to:B}])=>g===E&&p.to===B)||a.dynamics.push([g,p]);for(let g of f.shortcuts)n.has(g.to)||(a.shortcuts.push(g),n.add(g.to))}};r(Pr.NODE_INITIAL)}function pV(t,{prefix:e=""}={}){if(Pr.DEBUG){fa(`${e}Nodes are:`);for(let r=0;rg!==Pr.NODE_ERRORED).map(({state:g})=>({usage:g.candidateUsage,reason:null})));if(f.every(({node:g})=>g===Pr.NODE_ERRORED))throw new fD.UnknownSyntaxError(e,f.map(({state:g})=>({usage:g.candidateUsage,reason:g.errorMessage})));o=hV(f)}if(o.length>0){fa(" Results:");for(let n of o)fa(` - ${n.node} -> ${JSON.stringify(n.state)}`)}else fa(" No results");return o}function zqe(t,e){if(e.selectedIndex!==null)return!0;if(Object.prototype.hasOwnProperty.call(t.statics,Pr.END_OF_INPUT)){for(let{to:r}of t.statics[Pr.END_OF_INPUT])if(r===Pr.NODE_SUCCESS)return!0}return!1}function Xqe(t,e,r){let o=r&&e.length>0?[""]:[],a=pN(t,e,r),n=[],c=new Set,f=(g,p,E=!0)=>{let B=[p];for(;B.length>0;){let x=B;B=[];for(let C of x){let N=t.nodes[C],U=Object.keys(N.statics);for(let H of Object.keys(N.statics)){let X=U[0];for(let{to:ie,reducer:fe}of N.statics[X])fe==="pushPath"&&(E||g.push(X),B.push(ie))}}E=!1}let Q=JSON.stringify(g);c.has(Q)||(n.push(g),c.add(Q))};for(let{node:g,state:p}of a){if(p.remainder!==null){f([p.remainder],g);continue}let E=t.nodes[g],B=zqe(E,p);for(let[Q,x]of Object.entries(E.statics))(B&&Q!==Pr.END_OF_INPUT||!Q.startsWith("-")&&x.some(({reducer:C})=>C==="pushPath"))&&f([...o,Q],g);if(!!B)for(let[Q,{to:x}]of E.dynamics){if(x===Pr.NODE_ERRORED)continue;let C=EV(Q,p);if(C!==null)for(let N of C)f([...o,N],g)}}return[...n].sort()}function Zqe(t,e){let r=pN(t,[...e,Pr.END_OF_INPUT]);return dV(e,r.map(({state:o})=>o))}function hV(t){let e=0;for(let{state:r}of t)r.path.length>e&&(e=r.path.length);return t.filter(({state:r})=>r.path.length===e)}function dV(t,e){let r=e.filter(B=>B.selectedIndex!==null);if(r.length===0)throw new Error;let o=r.filter(B=>B.requiredOptions.every(Q=>Q.some(x=>B.options.find(C=>C.name===x))));if(o.length===0)throw new fD.UnknownSyntaxError(t,r.map(B=>({usage:B.candidateUsage,reason:null})));let a=0;for(let B of o)B.path.length>a&&(a=B.path.length);let n=o.filter(B=>B.path.length===a),c=B=>B.positionals.filter(({extra:Q})=>!Q).length+B.options.length,f=n.map(B=>({state:B,positionalCount:c(B)})),g=0;for(let{positionalCount:B}of f)B>g&&(g=B);let p=f.filter(({positionalCount:B})=>B===g).map(({state:B})=>B),E=mV(p);if(E.length>1)throw new fD.AmbiguousSyntaxError(t,E.map(B=>B.candidateUsage));return E[0]}function mV(t){let e=[],r=[];for(let o of t)o.selectedIndex===Pr.HELP_COMMAND_INDEX?r.push(o):e.push(o);return r.length>0&&e.push({...uV,path:yV(...r.map(o=>o.path)),options:r.reduce((o,a)=>o.concat(a.options),[])}),e}function yV(t,e,...r){return e===void 0?Array.from(t):yV(t.filter((o,a)=>o===e[a]),...r)}function qo(){return{dynamics:[],shortcuts:[],statics:{}}}function hN(t){return t===Pr.NODE_SUCCESS||t===Pr.NODE_ERRORED}function cD(t,e=0){return{to:hN(t.to)?t.to:t.to>2?t.to+e-2:t.to+e,reducer:t.reducer}}function CV(t,e=0){let r=qo();for(let[o,a]of t.dynamics)r.dynamics.push([o,cD(a,e)]);for(let o of t.shortcuts)r.shortcuts.push(cD(o,e));for(let[o,a]of Object.entries(t.statics))r.statics[o]=a.map(n=>cD(n,e));return r}function Js(t,e,r,o,a){t.nodes[e].dynamics.push([r,{to:o,reducer:a}])}function Sd(t,e,r,o){t.nodes[e].shortcuts.push({to:r,reducer:o})}function uu(t,e,r,o,a){(Object.prototype.hasOwnProperty.call(t.nodes[e].statics,r)?t.nodes[e].statics[r]:t.nodes[e].statics[r]=[]).push({to:o,reducer:a})}function mw(t,e,r,o){if(Array.isArray(e)){let[a,...n]=e;return t[a](r,o,...n)}else return t[e](r,o)}function EV(t,e){let r=Array.isArray(t)?yw[t[0]]:yw[t];if(typeof r.suggest>"u")return null;let o=Array.isArray(t)?t.slice(1):[];return r.suggest(e,...o)}var yw={always:()=>!0,isOptionLike:(t,e)=>!t.ignoreOptions&&e!=="-"&&e.startsWith("-"),isNotOptionLike:(t,e)=>t.ignoreOptions||e==="-"||!e.startsWith("-"),isOption:(t,e,r,o)=>!t.ignoreOptions&&e===r,isBatchOption:(t,e,r)=>!t.ignoreOptions&&Pr.BATCH_REGEX.test(e)&&[...e.slice(1)].every(o=>r.includes(`-${o}`)),isBoundOption:(t,e,r,o)=>{let a=e.match(Pr.BINDING_REGEX);return!t.ignoreOptions&&!!a&&Pr.OPTION_REGEX.test(a[1])&&r.includes(a[1])&&o.filter(n=>n.names.includes(a[1])).every(n=>n.allowBinding)},isNegatedOption:(t,e,r)=>!t.ignoreOptions&&e===`--no-${r.slice(2)}`,isHelp:(t,e)=>!t.ignoreOptions&&Pr.HELP_REGEX.test(e),isUnsupportedOption:(t,e,r)=>!t.ignoreOptions&&e.startsWith("-")&&Pr.OPTION_REGEX.test(e)&&!r.includes(e),isInvalidOption:(t,e)=>!t.ignoreOptions&&e.startsWith("-")&&!Pr.OPTION_REGEX.test(e)};yw.isOption.suggest=(t,e,r=!0)=>r?null:[e];var uD={setCandidateState:(t,e,r)=>({...t,...r}),setSelectedIndex:(t,e,r)=>({...t,selectedIndex:r}),pushBatch:(t,e)=>({...t,options:t.options.concat([...e.slice(1)].map(r=>({name:`-${r}`,value:!0})))}),pushBound:(t,e)=>{let[,r,o]=e.match(Pr.BINDING_REGEX);return{...t,options:t.options.concat({name:r,value:o})}},pushPath:(t,e)=>({...t,path:t.path.concat(e)}),pushPositional:(t,e)=>({...t,positionals:t.positionals.concat({value:e,extra:!1})}),pushExtra:(t,e)=>({...t,positionals:t.positionals.concat({value:e,extra:!0})}),pushExtraNoLimits:(t,e)=>({...t,positionals:t.positionals.concat({value:e,extra:fu})}),pushTrue:(t,e,r=e)=>({...t,options:t.options.concat({name:e,value:!0})}),pushFalse:(t,e,r=e)=>({...t,options:t.options.concat({name:r,value:!1})}),pushUndefined:(t,e)=>({...t,options:t.options.concat({name:e,value:void 0})}),pushStringValue:(t,e)=>{var r;let o={...t,options:[...t.options]},a=t.options[t.options.length-1];return a.value=((r=a.value)!==null&&r!==void 0?r:[]).concat([e]),o},setStringValue:(t,e)=>{let r={...t,options:[...t.options]},o=t.options[t.options.length-1];return o.value=e,r},inhibateOptions:t=>({...t,ignoreOptions:!0}),useHelp:(t,e,r)=>{let[,,o]=e.match(Pr.HELP_REGEX);return typeof o<"u"?{...t,options:[{name:"-c",value:String(r)},{name:"-i",value:o}]}:{...t,options:[{name:"-c",value:String(r)}]}},setError:(t,e,r)=>e===Pr.END_OF_INPUT?{...t,errorMessage:`${r}.`}:{...t,errorMessage:`${r} ("${e}").`},setOptionArityError:(t,e)=>{let r=t.options[t.options.length-1];return{...t,errorMessage:`Not enough arguments to option ${r.name}.`}}},fu=Symbol(),gD=class{constructor(e,r){this.allOptionNames=[],this.arity={leading:[],trailing:[],extra:[],proxy:!1},this.options=[],this.paths=[],this.cliIndex=e,this.cliOpts=r}addPath(e){this.paths.push(e)}setArity({leading:e=this.arity.leading,trailing:r=this.arity.trailing,extra:o=this.arity.extra,proxy:a=this.arity.proxy}){Object.assign(this.arity,{leading:e,trailing:r,extra:o,proxy:a})}addPositional({name:e="arg",required:r=!0}={}){if(!r&&this.arity.extra===fu)throw new Error("Optional parameters cannot be declared when using .rest() or .proxy()");if(!r&&this.arity.trailing.length>0)throw new Error("Optional parameters cannot be declared after the required trailing positional arguments");!r&&this.arity.extra!==fu?this.arity.extra.push(e):this.arity.extra!==fu&&this.arity.extra.length===0?this.arity.leading.push(e):this.arity.trailing.push(e)}addRest({name:e="arg",required:r=0}={}){if(this.arity.extra===fu)throw new Error("Infinite lists cannot be declared multiple times in the same command");if(this.arity.trailing.length>0)throw new Error("Infinite lists cannot be declared after the required trailing positional arguments");for(let o=0;o1)throw new Error("The arity cannot be higher than 1 when the option only supports the --arg=value syntax");if(!Number.isInteger(o))throw new Error(`The arity must be an integer, got ${o}`);if(o<0)throw new Error(`The arity must be positive, got ${o}`);this.allOptionNames.push(...e),this.options.push({names:e,description:r,arity:o,hidden:a,required:n,allowBinding:c})}setContext(e){this.context=e}usage({detailed:e=!0,inlineOptions:r=!0}={}){let o=[this.cliOpts.binaryName],a=[];if(this.paths.length>0&&o.push(...this.paths[0]),e){for(let{names:c,arity:f,hidden:g,description:p,required:E}of this.options){if(g)continue;let B=[];for(let x=0;x`:`[${Q}]`)}o.push(...this.arity.leading.map(c=>`<${c}>`)),this.arity.extra===fu?o.push("..."):o.push(...this.arity.extra.map(c=>`[${c}]`)),o.push(...this.arity.trailing.map(c=>`<${c}>`))}return{usage:o.join(" "),options:a}}compile(){if(typeof this.context>"u")throw new Error("Assertion failed: No context attached");let e=gN(),r=Pr.NODE_INITIAL,o=this.usage().usage,a=this.options.filter(f=>f.required).map(f=>f.names);r=ul(e,qo()),uu(e,Pr.NODE_INITIAL,Pr.START_OF_INPUT,r,["setCandidateState",{candidateUsage:o,requiredOptions:a}]);let n=this.arity.proxy?"always":"isNotOptionLike",c=this.paths.length>0?this.paths:[[]];for(let f of c){let g=r;if(f.length>0){let Q=ul(e,qo());Sd(e,g,Q),this.registerOptions(e,Q),g=Q}for(let Q=0;Q0||!this.arity.proxy){let Q=ul(e,qo());Js(e,g,"isHelp",Q,["useHelp",this.cliIndex]),uu(e,Q,Pr.END_OF_INPUT,Pr.NODE_SUCCESS,["setSelectedIndex",Pr.HELP_COMMAND_INDEX]),this.registerOptions(e,g)}this.arity.leading.length>0&&uu(e,g,Pr.END_OF_INPUT,Pr.NODE_ERRORED,["setError","Not enough positional arguments"]);let p=g;for(let Q=0;Q0||Q+1!==this.arity.leading.length)&&uu(e,x,Pr.END_OF_INPUT,Pr.NODE_ERRORED,["setError","Not enough positional arguments"]),Js(e,p,"isNotOptionLike",x,"pushPositional"),p=x}let E=p;if(this.arity.extra===fu||this.arity.extra.length>0){let Q=ul(e,qo());if(Sd(e,p,Q),this.arity.extra===fu){let x=ul(e,qo());this.arity.proxy||this.registerOptions(e,x),Js(e,p,n,x,"pushExtraNoLimits"),Js(e,x,n,x,"pushExtraNoLimits"),Sd(e,x,Q)}else for(let x=0;x0)&&this.registerOptions(e,C),Js(e,E,n,C,"pushExtra"),Sd(e,C,Q),E=C}E=Q}this.arity.trailing.length>0&&uu(e,E,Pr.END_OF_INPUT,Pr.NODE_ERRORED,["setError","Not enough positional arguments"]);let B=E;for(let Q=0;Qc.length>n.length?c:n,"");if(o.arity===0)for(let n of o.names)Js(e,r,["isOption",n,o.hidden||n!==a],r,"pushTrue"),n.startsWith("--")&&!n.startsWith("--no-")&&Js(e,r,["isNegatedOption",n],r,["pushFalse",n]);else{let n=ul(e,qo());for(let c of o.names)Js(e,r,["isOption",c,o.hidden||c!==a],n,"pushUndefined");for(let c=0;c=0&&eZqe(o,a),suggest:(a,n)=>Xqe(o,a,n)}}};fi.CliBuilder=Cw;fi.CommandBuilder=gD;fi.NoLimits=fu;fi.aggregateHelpStates=mV;fi.cloneNode=CV;fi.cloneTransition=cD;fi.debug=fa;fi.debugMachine=pV;fi.execute=mw;fi.injectNode=ul;fi.isTerminalNode=hN;fi.makeAnyOfMachine=fV;fi.makeNode=qo;fi.makeStateMachine=gN;fi.reducers=uD;fi.registerDynamic=Js;fi.registerShortcut=Sd;fi.registerStatic=uu;fi.runMachineInternal=pN;fi.selectBestState=dV;fi.simplifyMachine=gV;fi.suggest=EV;fi.tests=yw;fi.trimSmallerBranches=hV});var wV=_(hD=>{"use strict";Object.defineProperty(hD,"__esModule",{value:!0});var $qe=Ie("tty");function eGe(t){return t&&typeof t=="object"&&"default"in t?t:{default:t}}var dN=eGe($qe);function tGe(){return dN.default&&"getColorDepth"in dN.default.WriteStream.prototype?dN.default.WriteStream.prototype.getColorDepth():process.env.FORCE_COLOR==="0"?1:process.env.FORCE_COLOR==="1"||typeof process.stdout<"u"&&process.stdout.isTTY?8:1}var IV;function rGe(t){let e=IV;if(typeof e>"u"){if(t.stdout===process.stdout&&t.stderr===process.stderr)return null;let{AsyncLocalStorage:r}=Ie("async_hooks");e=IV=new r;let o=process.stdout._write;process.stdout._write=function(n,c,f){let g=e.getStore();return typeof g>"u"?o.call(this,n,c,f):g.stdout.write(n,c,f)};let a=process.stderr._write;process.stderr._write=function(n,c,f){let g=e.getStore();return typeof g>"u"?a.call(this,n,c,f):g.stderr.write(n,c,f)}}return r=>e.run(t,r)}hD.getCaptureActivator=rGe;hD.getDefaultColorDepth=tGe});var BV=_(mN=>{"use strict";Object.defineProperty(mN,"__esModule",{value:!0});var nGe=Dd(),Ew=class extends nGe.Command{constructor(e){super(),this.contexts=e,this.commands=[]}static from(e,r){let o=new Ew(r);o.path=e.path;for(let a of e.options)switch(a.name){case"-c":o.commands.push(Number(a.value));break;case"-i":o.index=Number(a.value);break}return o}async execute(){let e=this.commands;if(typeof this.index<"u"&&this.index>=0&&this.index1){this.context.stdout.write(`Multiple commands match your selection: -`),this.context.stdout.write(` -`);let r=0;for(let o of this.commands)this.context.stdout.write(this.cli.usage(this.contexts[o].commandClass,{prefix:`${r++}. `.padStart(5)}));this.context.stdout.write(` -`),this.context.stdout.write(`Run again with -h= to see the longer details of any of those commands. -`)}}};mN.HelpCommand=Ew});var kV=_(Iw=>{"use strict";Object.defineProperty(Iw,"__esModule",{value:!0});var iGe=aD(),sGe=pD(),BA=lN(),DV=wV(),dD=Dd(),oGe=BV(),QV=Symbol("clipanion/errorCommand");async function aGe(...t){let{resolvedOptions:e,resolvedCommandClasses:r,resolvedArgv:o,resolvedContext:a}=SV(t);return ac.from(r,e).runExit(o,a)}async function AGe(...t){let{resolvedOptions:e,resolvedCommandClasses:r,resolvedArgv:o,resolvedContext:a}=SV(t);return ac.from(r,e).run(o,a)}function SV(t){let e,r,o,a;switch(typeof process<"u"&&typeof process.argv<"u"&&(o=process.argv.slice(2)),t.length){case 1:r=t[0];break;case 2:t[0]&&t[0].prototype instanceof dD.Command||Array.isArray(t[0])?(r=t[0],Array.isArray(t[1])?o=t[1]:a=t[1]):(e=t[0],r=t[1]);break;case 3:Array.isArray(t[2])?(e=t[0],r=t[1],o=t[2]):t[0]&&t[0].prototype instanceof dD.Command||Array.isArray(t[0])?(r=t[0],o=t[1],a=t[2]):(e=t[0],r=t[1],a=t[2]);break;default:e=t[0],r=t[1],o=t[2],a=t[3];break}if(typeof o>"u")throw new Error("The argv parameter must be provided when running Clipanion outside of a Node context");return{resolvedOptions:e,resolvedCommandClasses:r,resolvedArgv:o,resolvedContext:a}}var ac=class{constructor({binaryLabel:e,binaryName:r="...",binaryVersion:o,enableCapture:a=!1,enableColors:n}={}){this.registrations=new Map,this.builder=new sGe.CliBuilder({binaryName:r}),this.binaryLabel=e,this.binaryName=r,this.binaryVersion=o,this.enableCapture=a,this.enableColors=n}static from(e,r={}){let o=new ac(r),a=Array.isArray(e)?e:[e];for(let n of a)o.register(n);return o}register(e){var r;let o=new Map,a=new e;for(let g in a){let p=a[g];typeof p=="object"&&p!==null&&p[dD.Command.isOption]&&o.set(g,p)}let n=this.builder.command(),c=n.cliIndex,f=(r=e.paths)!==null&&r!==void 0?r:a.paths;if(typeof f<"u")for(let g of f)n.addPath(g);this.registrations.set(e,{specs:o,builder:n,index:c});for(let[g,{definition:p}]of o.entries())p(n,g);n.setContext({commandClass:e})}process(e,r){let{contexts:o,process:a}=this.builder.compile(),n=a(e),c={...ac.defaultContext,...r};switch(n.selectedIndex){case iGe.HELP_COMMAND_INDEX:{let f=oGe.HelpCommand.from(n,o);return f.context=c,f}default:{let{commandClass:f}=o[n.selectedIndex],g=this.registrations.get(f);if(typeof g>"u")throw new Error("Assertion failed: Expected the command class to have been registered.");let p=new f;p.context=c,p.path=n.path;try{for(let[E,{transformer:B}]of g.specs.entries())p[E]=B(g.builder,E,n,c);return p}catch(E){throw E[QV]=p,E}}break}}async run(e,r){var o,a;let n,c={...ac.defaultContext,...r},f=(o=this.enableColors)!==null&&o!==void 0?o:c.colorDepth>1;if(!Array.isArray(e))n=e;else try{n=this.process(e,c)}catch(E){return c.stdout.write(this.error(E,{colored:f})),1}if(n.help)return c.stdout.write(this.usage(n,{colored:f,detailed:!0})),0;n.context=c,n.cli={binaryLabel:this.binaryLabel,binaryName:this.binaryName,binaryVersion:this.binaryVersion,enableCapture:this.enableCapture,enableColors:this.enableColors,definitions:()=>this.definitions(),error:(E,B)=>this.error(E,B),format:E=>this.format(E),process:(E,B)=>this.process(E,{...c,...B}),run:(E,B)=>this.run(E,{...c,...B}),usage:(E,B)=>this.usage(E,B)};let g=this.enableCapture&&(a=DV.getCaptureActivator(c))!==null&&a!==void 0?a:vV,p;try{p=await g(()=>n.validateAndExecute().catch(E=>n.catch(E).then(()=>0)))}catch(E){return c.stdout.write(this.error(E,{colored:f,command:n})),1}return p}async runExit(e,r){process.exitCode=await this.run(e,r)}suggest(e,r){let{suggest:o}=this.builder.compile();return o(e,r)}definitions({colored:e=!1}={}){let r=[];for(let[o,{index:a}]of this.registrations){if(typeof o.usage>"u")continue;let{usage:n}=this.getUsageByIndex(a,{detailed:!1}),{usage:c,options:f}=this.getUsageByIndex(a,{detailed:!0,inlineOptions:!1}),g=typeof o.usage.category<"u"?BA.formatMarkdownish(o.usage.category,{format:this.format(e),paragraphs:!1}):void 0,p=typeof o.usage.description<"u"?BA.formatMarkdownish(o.usage.description,{format:this.format(e),paragraphs:!1}):void 0,E=typeof o.usage.details<"u"?BA.formatMarkdownish(o.usage.details,{format:this.format(e),paragraphs:!0}):void 0,B=typeof o.usage.examples<"u"?o.usage.examples.map(([Q,x])=>[BA.formatMarkdownish(Q,{format:this.format(e),paragraphs:!1}),x.replace(/\$0/g,this.binaryName)]):void 0;r.push({path:n,usage:c,category:g,description:p,details:E,examples:B,options:f})}return r}usage(e=null,{colored:r,detailed:o=!1,prefix:a="$ "}={}){var n;if(e===null){for(let g of this.registrations.keys()){let p=g.paths,E=typeof g.usage<"u";if(!p||p.length===0||p.length===1&&p[0].length===0||((n=p==null?void 0:p.some(x=>x.length===0))!==null&&n!==void 0?n:!1))if(e){e=null;break}else e=g;else if(E){e=null;continue}}e&&(o=!0)}let c=e!==null&&e instanceof dD.Command?e.constructor:e,f="";if(c)if(o){let{description:g="",details:p="",examples:E=[]}=c.usage||{};g!==""&&(f+=BA.formatMarkdownish(g,{format:this.format(r),paragraphs:!1}).replace(/^./,x=>x.toUpperCase()),f+=` -`),(p!==""||E.length>0)&&(f+=`${this.format(r).header("Usage")} -`,f+=` -`);let{usage:B,options:Q}=this.getUsageByRegistration(c,{inlineOptions:!1});if(f+=`${this.format(r).bold(a)}${B} -`,Q.length>0){f+=` -`,f+=`${this.format(r).header("Options")} -`;let x=Q.reduce((C,N)=>Math.max(C,N.definition.length),0);f+=` -`;for(let{definition:C,description:N}of Q)f+=` ${this.format(r).bold(C.padEnd(x))} ${BA.formatMarkdownish(N,{format:this.format(r),paragraphs:!1})}`}if(p!==""&&(f+=` -`,f+=`${this.format(r).header("Details")} -`,f+=` -`,f+=BA.formatMarkdownish(p,{format:this.format(r),paragraphs:!0})),E.length>0){f+=` -`,f+=`${this.format(r).header("Examples")} -`;for(let[x,C]of E)f+=` -`,f+=BA.formatMarkdownish(x,{format:this.format(r),paragraphs:!1}),f+=`${C.replace(/^/m,` ${this.format(r).bold(a)}`).replace(/\$0/g,this.binaryName)} -`}}else{let{usage:g}=this.getUsageByRegistration(c);f+=`${this.format(r).bold(a)}${g} -`}else{let g=new Map;for(let[Q,{index:x}]of this.registrations.entries()){if(typeof Q.usage>"u")continue;let C=typeof Q.usage.category<"u"?BA.formatMarkdownish(Q.usage.category,{format:this.format(r),paragraphs:!1}):null,N=g.get(C);typeof N>"u"&&g.set(C,N=[]);let{usage:U}=this.getUsageByIndex(x);N.push({commandClass:Q,usage:U})}let p=Array.from(g.keys()).sort((Q,x)=>Q===null?-1:x===null?1:Q.localeCompare(x,"en",{usage:"sort",caseFirst:"upper"})),E=typeof this.binaryLabel<"u",B=typeof this.binaryVersion<"u";E||B?(E&&B?f+=`${this.format(r).header(`${this.binaryLabel} - ${this.binaryVersion}`)} - -`:E?f+=`${this.format(r).header(`${this.binaryLabel}`)} -`:f+=`${this.format(r).header(`${this.binaryVersion}`)} -`,f+=` ${this.format(r).bold(a)}${this.binaryName} -`):f+=`${this.format(r).bold(a)}${this.binaryName} -`;for(let Q of p){let x=g.get(Q).slice().sort((N,U)=>N.usage.localeCompare(U.usage,"en",{usage:"sort",caseFirst:"upper"})),C=Q!==null?Q.trim():"General commands";f+=` -`,f+=`${this.format(r).header(`${C}`)} -`;for(let{commandClass:N,usage:U}of x){let H=N.usage.description||"undocumented";f+=` -`,f+=` ${this.format(r).bold(U)} -`,f+=` ${BA.formatMarkdownish(H,{format:this.format(r),paragraphs:!1})}`}}f+=` -`,f+=BA.formatMarkdownish("You can also print more details about any of these commands by calling them with the `-h,--help` flag right after the command name.",{format:this.format(r),paragraphs:!0})}return f}error(e,r){var o,{colored:a,command:n=(o=e[QV])!==null&&o!==void 0?o:null}=r===void 0?{}:r;e instanceof Error||(e=new Error(`Execution failed with a non-error rejection (rejected value: ${JSON.stringify(e)})`));let c="",f=e.name.replace(/([a-z])([A-Z])/g,"$1 $2");f==="Error"&&(f="Internal Error"),c+=`${this.format(a).error(f)}: ${e.message} -`;let g=e.clipanion;return typeof g<"u"?g.type==="usage"&&(c+=` -`,c+=this.usage(n)):e.stack&&(c+=`${e.stack.replace(/^.*\n/,"")} -`),c}format(e){var r;return((r=e??this.enableColors)!==null&&r!==void 0?r:ac.defaultContext.colorDepth>1)?BA.richFormat:BA.textFormat}getUsageByRegistration(e,r){let o=this.registrations.get(e);if(typeof o>"u")throw new Error("Assertion failed: Unregistered command");return this.getUsageByIndex(o.index,r)}getUsageByIndex(e,r){return this.builder.getBuilderByIndex(e).usage(r)}};ac.defaultContext={env:process.env,stdin:process.stdin,stdout:process.stdout,stderr:process.stderr,colorDepth:DV.getDefaultColorDepth()};function vV(t){return t()}Iw.Cli=ac;Iw.run=AGe;Iw.runExit=aGe});var xV=_(yN=>{"use strict";Object.defineProperty(yN,"__esModule",{value:!0});var lGe=Dd(),mD=class extends lGe.Command{async execute(){this.context.stdout.write(`${JSON.stringify(this.cli.definitions(),null,2)} -`)}};mD.paths=[["--clipanion=definitions"]];yN.DefinitionsCommand=mD});var PV=_(CN=>{"use strict";Object.defineProperty(CN,"__esModule",{value:!0});var cGe=Dd(),yD=class extends cGe.Command{async execute(){this.context.stdout.write(this.cli.usage())}};yD.paths=[["-h"],["--help"]];CN.HelpCommand=yD});var bV=_(EN=>{"use strict";Object.defineProperty(EN,"__esModule",{value:!0});var uGe=Dd(),CD=class extends uGe.Command{async execute(){var e;this.context.stdout.write(`${(e=this.cli.binaryVersion)!==null&&e!==void 0?e:""} -`)}};CD.paths=[["-v"],["--version"]];EN.VersionCommand=CD});var FV=_(ww=>{"use strict";Object.defineProperty(ww,"__esModule",{value:!0});var fGe=xV(),gGe=PV(),pGe=bV();ww.DefinitionsCommand=fGe.DefinitionsCommand;ww.HelpCommand=gGe.HelpCommand;ww.VersionCommand=pGe.VersionCommand});var TV=_(IN=>{"use strict";Object.defineProperty(IN,"__esModule",{value:!0});var RV=_f();function hGe(t,e,r){let[o,a]=RV.rerouteArguments(e,r??{}),{arity:n=1}=a,c=t.split(","),f=new Set(c);return RV.makeCommandOption({definition(g){g.addOption({names:c,arity:n,hidden:a==null?void 0:a.hidden,description:a==null?void 0:a.description,required:a.required})},transformer(g,p,E){let B=typeof o<"u"?[...o]:void 0;for(let{name:Q,value:x}of E.options)!f.has(Q)||(B=B??[],B.push(x));return B}})}IN.Array=hGe});var MV=_(wN=>{"use strict";Object.defineProperty(wN,"__esModule",{value:!0});var NV=_f();function dGe(t,e,r){let[o,a]=NV.rerouteArguments(e,r??{}),n=t.split(","),c=new Set(n);return NV.makeCommandOption({definition(f){f.addOption({names:n,allowBinding:!1,arity:0,hidden:a.hidden,description:a.description,required:a.required})},transformer(f,g,p){let E=o;for(let{name:B,value:Q}of p.options)!c.has(B)||(E=Q);return E}})}wN.Boolean=dGe});var OV=_(BN=>{"use strict";Object.defineProperty(BN,"__esModule",{value:!0});var LV=_f();function mGe(t,e,r){let[o,a]=LV.rerouteArguments(e,r??{}),n=t.split(","),c=new Set(n);return LV.makeCommandOption({definition(f){f.addOption({names:n,allowBinding:!1,arity:0,hidden:a.hidden,description:a.description,required:a.required})},transformer(f,g,p){let E=o;for(let{name:B,value:Q}of p.options)!c.has(B)||(E??(E=0),Q?E+=1:E=0);return E}})}BN.Counter=mGe});var UV=_(QN=>{"use strict";Object.defineProperty(QN,"__esModule",{value:!0});var yGe=_f();function CGe(t={}){return yGe.makeCommandOption({definition(e,r){var o;e.addProxy({name:(o=t.name)!==null&&o!==void 0?o:r,required:t.required})},transformer(e,r,o){return o.positionals.map(({value:a})=>a)}})}QN.Proxy=CGe});var KV=_(vN=>{"use strict";Object.defineProperty(vN,"__esModule",{value:!0});var EGe=pD(),IGe=_f();function wGe(t={}){return IGe.makeCommandOption({definition(e,r){var o;e.addRest({name:(o=t.name)!==null&&o!==void 0?o:r,required:t.required})},transformer(e,r,o){let a=c=>{let f=o.positionals[c];return f.extra===EGe.NoLimits||f.extra===!1&&cc)}})}vN.Rest=wGe});var _V=_(DN=>{"use strict";Object.defineProperty(DN,"__esModule",{value:!0});var BGe=pD(),Bw=_f();function QGe(t,e,r){let[o,a]=Bw.rerouteArguments(e,r??{}),{arity:n=1}=a,c=t.split(","),f=new Set(c);return Bw.makeCommandOption({definition(g){g.addOption({names:c,arity:a.tolerateBoolean?0:n,hidden:a.hidden,description:a.description,required:a.required})},transformer(g,p,E,B){let Q,x=o;typeof a.env<"u"&&B.env[a.env]&&(Q=a.env,x=B.env[a.env]);for(let{name:C,value:N}of E.options)!f.has(C)||(Q=C,x=N);return typeof x=="string"?Bw.applyValidator(Q??p,x,a.validator):x}})}function vGe(t={}){let{required:e=!0}=t;return Bw.makeCommandOption({definition(r,o){var a;r.addPositional({name:(a=t.name)!==null&&a!==void 0?a:o,required:t.required})},transformer(r,o,a){var n;for(let c=0;c{"use strict";Object.defineProperty(Ya,"__esModule",{value:!0});var Yy=_f(),SGe=TV(),kGe=MV(),xGe=OV(),PGe=UV(),bGe=KV(),FGe=_V();Ya.applyValidator=Yy.applyValidator;Ya.cleanValidationError=Yy.cleanValidationError;Ya.formatError=Yy.formatError;Ya.isOptionSymbol=Yy.isOptionSymbol;Ya.makeCommandOption=Yy.makeCommandOption;Ya.rerouteArguments=Yy.rerouteArguments;Ya.Array=SGe.Array;Ya.Boolean=kGe.Boolean;Ya.Counter=xGe.Counter;Ya.Proxy=PGe.Proxy;Ya.Rest=bGe.Rest;Ya.String=FGe.String});var Vt=_(gu=>{"use strict";Object.defineProperty(gu,"__esModule",{value:!0});var RGe=AD(),TGe=lN(),NGe=Dd(),SN=kV(),MGe=FV(),LGe=HV();gu.UsageError=RGe.UsageError;gu.formatMarkdownish=TGe.formatMarkdownish;gu.Command=NGe.Command;gu.Cli=SN.Cli;gu.run=SN.run;gu.runExit=SN.runExit;gu.Builtins=MGe;gu.Option=LGe});var GV=_((PPt,qV)=>{"use strict";qV.exports=(t,...e)=>new Promise(r=>{r(t(...e))})});var kd=_((bPt,kN)=>{"use strict";var OGe=GV(),jV=t=>{if(t<1)throw new TypeError("Expected `concurrency` to be a number from 1 and up");let e=[],r=0,o=()=>{r--,e.length>0&&e.shift()()},a=(f,g,...p)=>{r++;let E=OGe(f,...p);g(E),E.then(o,o)},n=(f,g,...p)=>{rnew Promise(p=>n(f,p,...g));return Object.defineProperties(c,{activeCount:{get:()=>r},pendingCount:{get:()=>e.length}}),c};kN.exports=jV;kN.exports.default=jV});function pu(t){return`YN${t.toString(10).padStart(4,"0")}`}function ED(t){let e=Number(t.slice(2));if(typeof br[e]>"u")throw new Error(`Unknown message name: "${t}"`);return e}var br,ID=Lt(()=>{br=(Xe=>(Xe[Xe.UNNAMED=0]="UNNAMED",Xe[Xe.EXCEPTION=1]="EXCEPTION",Xe[Xe.MISSING_PEER_DEPENDENCY=2]="MISSING_PEER_DEPENDENCY",Xe[Xe.CYCLIC_DEPENDENCIES=3]="CYCLIC_DEPENDENCIES",Xe[Xe.DISABLED_BUILD_SCRIPTS=4]="DISABLED_BUILD_SCRIPTS",Xe[Xe.BUILD_DISABLED=5]="BUILD_DISABLED",Xe[Xe.SOFT_LINK_BUILD=6]="SOFT_LINK_BUILD",Xe[Xe.MUST_BUILD=7]="MUST_BUILD",Xe[Xe.MUST_REBUILD=8]="MUST_REBUILD",Xe[Xe.BUILD_FAILED=9]="BUILD_FAILED",Xe[Xe.RESOLVER_NOT_FOUND=10]="RESOLVER_NOT_FOUND",Xe[Xe.FETCHER_NOT_FOUND=11]="FETCHER_NOT_FOUND",Xe[Xe.LINKER_NOT_FOUND=12]="LINKER_NOT_FOUND",Xe[Xe.FETCH_NOT_CACHED=13]="FETCH_NOT_CACHED",Xe[Xe.YARN_IMPORT_FAILED=14]="YARN_IMPORT_FAILED",Xe[Xe.REMOTE_INVALID=15]="REMOTE_INVALID",Xe[Xe.REMOTE_NOT_FOUND=16]="REMOTE_NOT_FOUND",Xe[Xe.RESOLUTION_PACK=17]="RESOLUTION_PACK",Xe[Xe.CACHE_CHECKSUM_MISMATCH=18]="CACHE_CHECKSUM_MISMATCH",Xe[Xe.UNUSED_CACHE_ENTRY=19]="UNUSED_CACHE_ENTRY",Xe[Xe.MISSING_LOCKFILE_ENTRY=20]="MISSING_LOCKFILE_ENTRY",Xe[Xe.WORKSPACE_NOT_FOUND=21]="WORKSPACE_NOT_FOUND",Xe[Xe.TOO_MANY_MATCHING_WORKSPACES=22]="TOO_MANY_MATCHING_WORKSPACES",Xe[Xe.CONSTRAINTS_MISSING_DEPENDENCY=23]="CONSTRAINTS_MISSING_DEPENDENCY",Xe[Xe.CONSTRAINTS_INCOMPATIBLE_DEPENDENCY=24]="CONSTRAINTS_INCOMPATIBLE_DEPENDENCY",Xe[Xe.CONSTRAINTS_EXTRANEOUS_DEPENDENCY=25]="CONSTRAINTS_EXTRANEOUS_DEPENDENCY",Xe[Xe.CONSTRAINTS_INVALID_DEPENDENCY=26]="CONSTRAINTS_INVALID_DEPENDENCY",Xe[Xe.CANT_SUGGEST_RESOLUTIONS=27]="CANT_SUGGEST_RESOLUTIONS",Xe[Xe.FROZEN_LOCKFILE_EXCEPTION=28]="FROZEN_LOCKFILE_EXCEPTION",Xe[Xe.CROSS_DRIVE_VIRTUAL_LOCAL=29]="CROSS_DRIVE_VIRTUAL_LOCAL",Xe[Xe.FETCH_FAILED=30]="FETCH_FAILED",Xe[Xe.DANGEROUS_NODE_MODULES=31]="DANGEROUS_NODE_MODULES",Xe[Xe.NODE_GYP_INJECTED=32]="NODE_GYP_INJECTED",Xe[Xe.AUTHENTICATION_NOT_FOUND=33]="AUTHENTICATION_NOT_FOUND",Xe[Xe.INVALID_CONFIGURATION_KEY=34]="INVALID_CONFIGURATION_KEY",Xe[Xe.NETWORK_ERROR=35]="NETWORK_ERROR",Xe[Xe.LIFECYCLE_SCRIPT=36]="LIFECYCLE_SCRIPT",Xe[Xe.CONSTRAINTS_MISSING_FIELD=37]="CONSTRAINTS_MISSING_FIELD",Xe[Xe.CONSTRAINTS_INCOMPATIBLE_FIELD=38]="CONSTRAINTS_INCOMPATIBLE_FIELD",Xe[Xe.CONSTRAINTS_EXTRANEOUS_FIELD=39]="CONSTRAINTS_EXTRANEOUS_FIELD",Xe[Xe.CONSTRAINTS_INVALID_FIELD=40]="CONSTRAINTS_INVALID_FIELD",Xe[Xe.AUTHENTICATION_INVALID=41]="AUTHENTICATION_INVALID",Xe[Xe.PROLOG_UNKNOWN_ERROR=42]="PROLOG_UNKNOWN_ERROR",Xe[Xe.PROLOG_SYNTAX_ERROR=43]="PROLOG_SYNTAX_ERROR",Xe[Xe.PROLOG_EXISTENCE_ERROR=44]="PROLOG_EXISTENCE_ERROR",Xe[Xe.STACK_OVERFLOW_RESOLUTION=45]="STACK_OVERFLOW_RESOLUTION",Xe[Xe.AUTOMERGE_FAILED_TO_PARSE=46]="AUTOMERGE_FAILED_TO_PARSE",Xe[Xe.AUTOMERGE_IMMUTABLE=47]="AUTOMERGE_IMMUTABLE",Xe[Xe.AUTOMERGE_SUCCESS=48]="AUTOMERGE_SUCCESS",Xe[Xe.AUTOMERGE_REQUIRED=49]="AUTOMERGE_REQUIRED",Xe[Xe.DEPRECATED_CLI_SETTINGS=50]="DEPRECATED_CLI_SETTINGS",Xe[Xe.PLUGIN_NAME_NOT_FOUND=51]="PLUGIN_NAME_NOT_FOUND",Xe[Xe.INVALID_PLUGIN_REFERENCE=52]="INVALID_PLUGIN_REFERENCE",Xe[Xe.CONSTRAINTS_AMBIGUITY=53]="CONSTRAINTS_AMBIGUITY",Xe[Xe.CACHE_OUTSIDE_PROJECT=54]="CACHE_OUTSIDE_PROJECT",Xe[Xe.IMMUTABLE_INSTALL=55]="IMMUTABLE_INSTALL",Xe[Xe.IMMUTABLE_CACHE=56]="IMMUTABLE_CACHE",Xe[Xe.INVALID_MANIFEST=57]="INVALID_MANIFEST",Xe[Xe.PACKAGE_PREPARATION_FAILED=58]="PACKAGE_PREPARATION_FAILED",Xe[Xe.INVALID_RANGE_PEER_DEPENDENCY=59]="INVALID_RANGE_PEER_DEPENDENCY",Xe[Xe.INCOMPATIBLE_PEER_DEPENDENCY=60]="INCOMPATIBLE_PEER_DEPENDENCY",Xe[Xe.DEPRECATED_PACKAGE=61]="DEPRECATED_PACKAGE",Xe[Xe.INCOMPATIBLE_OS=62]="INCOMPATIBLE_OS",Xe[Xe.INCOMPATIBLE_CPU=63]="INCOMPATIBLE_CPU",Xe[Xe.FROZEN_ARTIFACT_EXCEPTION=64]="FROZEN_ARTIFACT_EXCEPTION",Xe[Xe.TELEMETRY_NOTICE=65]="TELEMETRY_NOTICE",Xe[Xe.PATCH_HUNK_FAILED=66]="PATCH_HUNK_FAILED",Xe[Xe.INVALID_CONFIGURATION_VALUE=67]="INVALID_CONFIGURATION_VALUE",Xe[Xe.UNUSED_PACKAGE_EXTENSION=68]="UNUSED_PACKAGE_EXTENSION",Xe[Xe.REDUNDANT_PACKAGE_EXTENSION=69]="REDUNDANT_PACKAGE_EXTENSION",Xe[Xe.AUTO_NM_SUCCESS=70]="AUTO_NM_SUCCESS",Xe[Xe.NM_CANT_INSTALL_EXTERNAL_SOFT_LINK=71]="NM_CANT_INSTALL_EXTERNAL_SOFT_LINK",Xe[Xe.NM_PRESERVE_SYMLINKS_REQUIRED=72]="NM_PRESERVE_SYMLINKS_REQUIRED",Xe[Xe.UPDATE_LOCKFILE_ONLY_SKIP_LINK=73]="UPDATE_LOCKFILE_ONLY_SKIP_LINK",Xe[Xe.NM_HARDLINKS_MODE_DOWNGRADED=74]="NM_HARDLINKS_MODE_DOWNGRADED",Xe[Xe.PROLOG_INSTANTIATION_ERROR=75]="PROLOG_INSTANTIATION_ERROR",Xe[Xe.INCOMPATIBLE_ARCHITECTURE=76]="INCOMPATIBLE_ARCHITECTURE",Xe[Xe.GHOST_ARCHITECTURE=77]="GHOST_ARCHITECTURE",Xe[Xe.RESOLUTION_MISMATCH=78]="RESOLUTION_MISMATCH",Xe[Xe.PROLOG_LIMIT_EXCEEDED=79]="PROLOG_LIMIT_EXCEEDED",Xe[Xe.NETWORK_DISABLED=80]="NETWORK_DISABLED",Xe[Xe.NETWORK_UNSAFE_HTTP=81]="NETWORK_UNSAFE_HTTP",Xe[Xe.RESOLUTION_FAILED=82]="RESOLUTION_FAILED",Xe))(br||{})});var Qw=_((RPt,YV)=>{var UGe="2.0.0",KGe=Number.MAX_SAFE_INTEGER||9007199254740991,_Ge=16;YV.exports={SEMVER_SPEC_VERSION:UGe,MAX_LENGTH:256,MAX_SAFE_INTEGER:KGe,MAX_SAFE_COMPONENT_LENGTH:_Ge}});var vw=_((TPt,WV)=>{var HGe=typeof process=="object"&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?(...t)=>console.error("SEMVER",...t):()=>{};WV.exports=HGe});var xd=_((yp,JV)=>{var{MAX_SAFE_COMPONENT_LENGTH:xN}=Qw(),qGe=vw();yp=JV.exports={};var GGe=yp.re=[],dr=yp.src=[],mr=yp.t={},jGe=0,an=(t,e,r)=>{let o=jGe++;qGe(o,e),mr[t]=o,dr[o]=e,GGe[o]=new RegExp(e,r?"g":void 0)};an("NUMERICIDENTIFIER","0|[1-9]\\d*");an("NUMERICIDENTIFIERLOOSE","[0-9]+");an("NONNUMERICIDENTIFIER","\\d*[a-zA-Z-][a-zA-Z0-9-]*");an("MAINVERSION",`(${dr[mr.NUMERICIDENTIFIER]})\\.(${dr[mr.NUMERICIDENTIFIER]})\\.(${dr[mr.NUMERICIDENTIFIER]})`);an("MAINVERSIONLOOSE",`(${dr[mr.NUMERICIDENTIFIERLOOSE]})\\.(${dr[mr.NUMERICIDENTIFIERLOOSE]})\\.(${dr[mr.NUMERICIDENTIFIERLOOSE]})`);an("PRERELEASEIDENTIFIER",`(?:${dr[mr.NUMERICIDENTIFIER]}|${dr[mr.NONNUMERICIDENTIFIER]})`);an("PRERELEASEIDENTIFIERLOOSE",`(?:${dr[mr.NUMERICIDENTIFIERLOOSE]}|${dr[mr.NONNUMERICIDENTIFIER]})`);an("PRERELEASE",`(?:-(${dr[mr.PRERELEASEIDENTIFIER]}(?:\\.${dr[mr.PRERELEASEIDENTIFIER]})*))`);an("PRERELEASELOOSE",`(?:-?(${dr[mr.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${dr[mr.PRERELEASEIDENTIFIERLOOSE]})*))`);an("BUILDIDENTIFIER","[0-9A-Za-z-]+");an("BUILD",`(?:\\+(${dr[mr.BUILDIDENTIFIER]}(?:\\.${dr[mr.BUILDIDENTIFIER]})*))`);an("FULLPLAIN",`v?${dr[mr.MAINVERSION]}${dr[mr.PRERELEASE]}?${dr[mr.BUILD]}?`);an("FULL",`^${dr[mr.FULLPLAIN]}$`);an("LOOSEPLAIN",`[v=\\s]*${dr[mr.MAINVERSIONLOOSE]}${dr[mr.PRERELEASELOOSE]}?${dr[mr.BUILD]}?`);an("LOOSE",`^${dr[mr.LOOSEPLAIN]}$`);an("GTLT","((?:<|>)?=?)");an("XRANGEIDENTIFIERLOOSE",`${dr[mr.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`);an("XRANGEIDENTIFIER",`${dr[mr.NUMERICIDENTIFIER]}|x|X|\\*`);an("XRANGEPLAIN",`[v=\\s]*(${dr[mr.XRANGEIDENTIFIER]})(?:\\.(${dr[mr.XRANGEIDENTIFIER]})(?:\\.(${dr[mr.XRANGEIDENTIFIER]})(?:${dr[mr.PRERELEASE]})?${dr[mr.BUILD]}?)?)?`);an("XRANGEPLAINLOOSE",`[v=\\s]*(${dr[mr.XRANGEIDENTIFIERLOOSE]})(?:\\.(${dr[mr.XRANGEIDENTIFIERLOOSE]})(?:\\.(${dr[mr.XRANGEIDENTIFIERLOOSE]})(?:${dr[mr.PRERELEASELOOSE]})?${dr[mr.BUILD]}?)?)?`);an("XRANGE",`^${dr[mr.GTLT]}\\s*${dr[mr.XRANGEPLAIN]}$`);an("XRANGELOOSE",`^${dr[mr.GTLT]}\\s*${dr[mr.XRANGEPLAINLOOSE]}$`);an("COERCE",`(^|[^\\d])(\\d{1,${xN}})(?:\\.(\\d{1,${xN}}))?(?:\\.(\\d{1,${xN}}))?(?:$|[^\\d])`);an("COERCERTL",dr[mr.COERCE],!0);an("LONETILDE","(?:~>?)");an("TILDETRIM",`(\\s*)${dr[mr.LONETILDE]}\\s+`,!0);yp.tildeTrimReplace="$1~";an("TILDE",`^${dr[mr.LONETILDE]}${dr[mr.XRANGEPLAIN]}$`);an("TILDELOOSE",`^${dr[mr.LONETILDE]}${dr[mr.XRANGEPLAINLOOSE]}$`);an("LONECARET","(?:\\^)");an("CARETTRIM",`(\\s*)${dr[mr.LONECARET]}\\s+`,!0);yp.caretTrimReplace="$1^";an("CARET",`^${dr[mr.LONECARET]}${dr[mr.XRANGEPLAIN]}$`);an("CARETLOOSE",`^${dr[mr.LONECARET]}${dr[mr.XRANGEPLAINLOOSE]}$`);an("COMPARATORLOOSE",`^${dr[mr.GTLT]}\\s*(${dr[mr.LOOSEPLAIN]})$|^$`);an("COMPARATOR",`^${dr[mr.GTLT]}\\s*(${dr[mr.FULLPLAIN]})$|^$`);an("COMPARATORTRIM",`(\\s*)${dr[mr.GTLT]}\\s*(${dr[mr.LOOSEPLAIN]}|${dr[mr.XRANGEPLAIN]})`,!0);yp.comparatorTrimReplace="$1$2$3";an("HYPHENRANGE",`^\\s*(${dr[mr.XRANGEPLAIN]})\\s+-\\s+(${dr[mr.XRANGEPLAIN]})\\s*$`);an("HYPHENRANGELOOSE",`^\\s*(${dr[mr.XRANGEPLAINLOOSE]})\\s+-\\s+(${dr[mr.XRANGEPLAINLOOSE]})\\s*$`);an("STAR","(<|>)?=?\\s*\\*");an("GTE0","^\\s*>=\\s*0.0.0\\s*$");an("GTE0PRE","^\\s*>=\\s*0.0.0-0\\s*$")});var Dw=_((NPt,VV)=>{var YGe=["includePrerelease","loose","rtl"],WGe=t=>t?typeof t!="object"?{loose:!0}:YGe.filter(e=>t[e]).reduce((e,r)=>(e[r]=!0,e),{}):{};VV.exports=WGe});var wD=_((MPt,ZV)=>{var zV=/^[0-9]+$/,XV=(t,e)=>{let r=zV.test(t),o=zV.test(e);return r&&o&&(t=+t,e=+e),t===e?0:r&&!o?-1:o&&!r?1:tXV(e,t);ZV.exports={compareIdentifiers:XV,rcompareIdentifiers:JGe}});var Go=_((LPt,rz)=>{var BD=vw(),{MAX_LENGTH:$V,MAX_SAFE_INTEGER:QD}=Qw(),{re:ez,t:tz}=xd(),VGe=Dw(),{compareIdentifiers:Sw}=wD(),QA=class{constructor(e,r){if(r=VGe(r),e instanceof QA){if(e.loose===!!r.loose&&e.includePrerelease===!!r.includePrerelease)return e;e=e.version}else if(typeof e!="string")throw new TypeError(`Invalid Version: ${e}`);if(e.length>$V)throw new TypeError(`version is longer than ${$V} characters`);BD("SemVer",e,r),this.options=r,this.loose=!!r.loose,this.includePrerelease=!!r.includePrerelease;let o=e.trim().match(r.loose?ez[tz.LOOSE]:ez[tz.FULL]);if(!o)throw new TypeError(`Invalid Version: ${e}`);if(this.raw=e,this.major=+o[1],this.minor=+o[2],this.patch=+o[3],this.major>QD||this.major<0)throw new TypeError("Invalid major version");if(this.minor>QD||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>QD||this.patch<0)throw new TypeError("Invalid patch version");o[4]?this.prerelease=o[4].split(".").map(a=>{if(/^[0-9]+$/.test(a)){let n=+a;if(n>=0&&n=0;)typeof this.prerelease[o]=="number"&&(this.prerelease[o]++,o=-2);o===-1&&this.prerelease.push(0)}r&&(this.prerelease[0]===r?isNaN(this.prerelease[1])&&(this.prerelease=[r,0]):this.prerelease=[r,0]);break;default:throw new Error(`invalid increment argument: ${e}`)}return this.format(),this.raw=this.version,this}};rz.exports=QA});var Pd=_((OPt,oz)=>{var{MAX_LENGTH:zGe}=Qw(),{re:nz,t:iz}=xd(),sz=Go(),XGe=Dw(),ZGe=(t,e)=>{if(e=XGe(e),t instanceof sz)return t;if(typeof t!="string"||t.length>zGe||!(e.loose?nz[iz.LOOSE]:nz[iz.FULL]).test(t))return null;try{return new sz(t,e)}catch{return null}};oz.exports=ZGe});var Az=_((UPt,az)=>{var $Ge=Pd(),eje=(t,e)=>{let r=$Ge(t,e);return r?r.version:null};az.exports=eje});var cz=_((KPt,lz)=>{var tje=Pd(),rje=(t,e)=>{let r=tje(t.trim().replace(/^[=v]+/,""),e);return r?r.version:null};lz.exports=rje});var fz=_((_Pt,uz)=>{var nje=Go(),ije=(t,e,r,o)=>{typeof r=="string"&&(o=r,r=void 0);try{return new nje(t,r).inc(e,o).version}catch{return null}};uz.exports=ije});var fl=_((HPt,pz)=>{var gz=Go(),sje=(t,e,r)=>new gz(t,r).compare(new gz(e,r));pz.exports=sje});var vD=_((qPt,hz)=>{var oje=fl(),aje=(t,e,r)=>oje(t,e,r)===0;hz.exports=aje});var yz=_((GPt,mz)=>{var dz=Pd(),Aje=vD(),lje=(t,e)=>{if(Aje(t,e))return null;{let r=dz(t),o=dz(e),a=r.prerelease.length||o.prerelease.length,n=a?"pre":"",c=a?"prerelease":"";for(let f in r)if((f==="major"||f==="minor"||f==="patch")&&r[f]!==o[f])return n+f;return c}};mz.exports=lje});var Ez=_((jPt,Cz)=>{var cje=Go(),uje=(t,e)=>new cje(t,e).major;Cz.exports=uje});var wz=_((YPt,Iz)=>{var fje=Go(),gje=(t,e)=>new fje(t,e).minor;Iz.exports=gje});var Qz=_((WPt,Bz)=>{var pje=Go(),hje=(t,e)=>new pje(t,e).patch;Bz.exports=hje});var Dz=_((JPt,vz)=>{var dje=Pd(),mje=(t,e)=>{let r=dje(t,e);return r&&r.prerelease.length?r.prerelease:null};vz.exports=mje});var kz=_((VPt,Sz)=>{var yje=fl(),Cje=(t,e,r)=>yje(e,t,r);Sz.exports=Cje});var Pz=_((zPt,xz)=>{var Eje=fl(),Ije=(t,e)=>Eje(t,e,!0);xz.exports=Ije});var DD=_((XPt,Fz)=>{var bz=Go(),wje=(t,e,r)=>{let o=new bz(t,r),a=new bz(e,r);return o.compare(a)||o.compareBuild(a)};Fz.exports=wje});var Tz=_((ZPt,Rz)=>{var Bje=DD(),Qje=(t,e)=>t.sort((r,o)=>Bje(r,o,e));Rz.exports=Qje});var Mz=_(($Pt,Nz)=>{var vje=DD(),Dje=(t,e)=>t.sort((r,o)=>vje(o,r,e));Nz.exports=Dje});var kw=_((ebt,Lz)=>{var Sje=fl(),kje=(t,e,r)=>Sje(t,e,r)>0;Lz.exports=kje});var SD=_((tbt,Oz)=>{var xje=fl(),Pje=(t,e,r)=>xje(t,e,r)<0;Oz.exports=Pje});var PN=_((rbt,Uz)=>{var bje=fl(),Fje=(t,e,r)=>bje(t,e,r)!==0;Uz.exports=Fje});var kD=_((nbt,Kz)=>{var Rje=fl(),Tje=(t,e,r)=>Rje(t,e,r)>=0;Kz.exports=Tje});var xD=_((ibt,_z)=>{var Nje=fl(),Mje=(t,e,r)=>Nje(t,e,r)<=0;_z.exports=Mje});var bN=_((sbt,Hz)=>{var Lje=vD(),Oje=PN(),Uje=kw(),Kje=kD(),_je=SD(),Hje=xD(),qje=(t,e,r,o)=>{switch(e){case"===":return typeof t=="object"&&(t=t.version),typeof r=="object"&&(r=r.version),t===r;case"!==":return typeof t=="object"&&(t=t.version),typeof r=="object"&&(r=r.version),t!==r;case"":case"=":case"==":return Lje(t,r,o);case"!=":return Oje(t,r,o);case">":return Uje(t,r,o);case">=":return Kje(t,r,o);case"<":return _je(t,r,o);case"<=":return Hje(t,r,o);default:throw new TypeError(`Invalid operator: ${e}`)}};Hz.exports=qje});var Gz=_((obt,qz)=>{var Gje=Go(),jje=Pd(),{re:PD,t:bD}=xd(),Yje=(t,e)=>{if(t instanceof Gje)return t;if(typeof t=="number"&&(t=String(t)),typeof t!="string")return null;e=e||{};let r=null;if(!e.rtl)r=t.match(PD[bD.COERCE]);else{let o;for(;(o=PD[bD.COERCERTL].exec(t))&&(!r||r.index+r[0].length!==t.length);)(!r||o.index+o[0].length!==r.index+r[0].length)&&(r=o),PD[bD.COERCERTL].lastIndex=o.index+o[1].length+o[2].length;PD[bD.COERCERTL].lastIndex=-1}return r===null?null:jje(`${r[2]}.${r[3]||"0"}.${r[4]||"0"}`,e)};qz.exports=Yje});var Yz=_((abt,jz)=>{"use strict";jz.exports=function(t){t.prototype[Symbol.iterator]=function*(){for(let e=this.head;e;e=e.next)yield e.value}}});var FD=_((Abt,Wz)=>{"use strict";Wz.exports=Tn;Tn.Node=bd;Tn.create=Tn;function Tn(t){var e=this;if(e instanceof Tn||(e=new Tn),e.tail=null,e.head=null,e.length=0,t&&typeof t.forEach=="function")t.forEach(function(a){e.push(a)});else if(arguments.length>0)for(var r=0,o=arguments.length;r1)r=e;else if(this.head)o=this.head.next,r=this.head.value;else throw new TypeError("Reduce of empty list with no initial value");for(var a=0;o!==null;a++)r=t(r,o.value,a),o=o.next;return r};Tn.prototype.reduceReverse=function(t,e){var r,o=this.tail;if(arguments.length>1)r=e;else if(this.tail)o=this.tail.prev,r=this.tail.value;else throw new TypeError("Reduce of empty list with no initial value");for(var a=this.length-1;o!==null;a--)r=t(r,o.value,a),o=o.prev;return r};Tn.prototype.toArray=function(){for(var t=new Array(this.length),e=0,r=this.head;r!==null;e++)t[e]=r.value,r=r.next;return t};Tn.prototype.toArrayReverse=function(){for(var t=new Array(this.length),e=0,r=this.tail;r!==null;e++)t[e]=r.value,r=r.prev;return t};Tn.prototype.slice=function(t,e){e=e||this.length,e<0&&(e+=this.length),t=t||0,t<0&&(t+=this.length);var r=new Tn;if(ethis.length&&(e=this.length);for(var o=0,a=this.head;a!==null&&othis.length&&(e=this.length);for(var o=this.length,a=this.tail;a!==null&&o>e;o--)a=a.prev;for(;a!==null&&o>t;o--,a=a.prev)r.push(a.value);return r};Tn.prototype.splice=function(t,e,...r){t>this.length&&(t=this.length-1),t<0&&(t=this.length+t);for(var o=0,a=this.head;a!==null&&o{"use strict";var zje=FD(),Fd=Symbol("max"),qf=Symbol("length"),Wy=Symbol("lengthCalculator"),Pw=Symbol("allowStale"),Rd=Symbol("maxAge"),Hf=Symbol("dispose"),Jz=Symbol("noDisposeOnSet"),Vs=Symbol("lruList"),Ac=Symbol("cache"),zz=Symbol("updateAgeOnGet"),FN=()=>1,TN=class{constructor(e){if(typeof e=="number"&&(e={max:e}),e||(e={}),e.max&&(typeof e.max!="number"||e.max<0))throw new TypeError("max must be a non-negative number");let r=this[Fd]=e.max||1/0,o=e.length||FN;if(this[Wy]=typeof o!="function"?FN:o,this[Pw]=e.stale||!1,e.maxAge&&typeof e.maxAge!="number")throw new TypeError("maxAge must be a number");this[Rd]=e.maxAge||0,this[Hf]=e.dispose,this[Jz]=e.noDisposeOnSet||!1,this[zz]=e.updateAgeOnGet||!1,this.reset()}set max(e){if(typeof e!="number"||e<0)throw new TypeError("max must be a non-negative number");this[Fd]=e||1/0,xw(this)}get max(){return this[Fd]}set allowStale(e){this[Pw]=!!e}get allowStale(){return this[Pw]}set maxAge(e){if(typeof e!="number")throw new TypeError("maxAge must be a non-negative number");this[Rd]=e,xw(this)}get maxAge(){return this[Rd]}set lengthCalculator(e){typeof e!="function"&&(e=FN),e!==this[Wy]&&(this[Wy]=e,this[qf]=0,this[Vs].forEach(r=>{r.length=this[Wy](r.value,r.key),this[qf]+=r.length})),xw(this)}get lengthCalculator(){return this[Wy]}get length(){return this[qf]}get itemCount(){return this[Vs].length}rforEach(e,r){r=r||this;for(let o=this[Vs].tail;o!==null;){let a=o.prev;Vz(this,e,o,r),o=a}}forEach(e,r){r=r||this;for(let o=this[Vs].head;o!==null;){let a=o.next;Vz(this,e,o,r),o=a}}keys(){return this[Vs].toArray().map(e=>e.key)}values(){return this[Vs].toArray().map(e=>e.value)}reset(){this[Hf]&&this[Vs]&&this[Vs].length&&this[Vs].forEach(e=>this[Hf](e.key,e.value)),this[Ac]=new Map,this[Vs]=new zje,this[qf]=0}dump(){return this[Vs].map(e=>RD(this,e)?!1:{k:e.key,v:e.value,e:e.now+(e.maxAge||0)}).toArray().filter(e=>e)}dumpLru(){return this[Vs]}set(e,r,o){if(o=o||this[Rd],o&&typeof o!="number")throw new TypeError("maxAge must be a number");let a=o?Date.now():0,n=this[Wy](r,e);if(this[Ac].has(e)){if(n>this[Fd])return Jy(this,this[Ac].get(e)),!1;let g=this[Ac].get(e).value;return this[Hf]&&(this[Jz]||this[Hf](e,g.value)),g.now=a,g.maxAge=o,g.value=r,this[qf]+=n-g.length,g.length=n,this.get(e),xw(this),!0}let c=new NN(e,r,n,a,o);return c.length>this[Fd]?(this[Hf]&&this[Hf](e,r),!1):(this[qf]+=c.length,this[Vs].unshift(c),this[Ac].set(e,this[Vs].head),xw(this),!0)}has(e){if(!this[Ac].has(e))return!1;let r=this[Ac].get(e).value;return!RD(this,r)}get(e){return RN(this,e,!0)}peek(e){return RN(this,e,!1)}pop(){let e=this[Vs].tail;return e?(Jy(this,e),e.value):null}del(e){Jy(this,this[Ac].get(e))}load(e){this.reset();let r=Date.now();for(let o=e.length-1;o>=0;o--){let a=e[o],n=a.e||0;if(n===0)this.set(a.k,a.v);else{let c=n-r;c>0&&this.set(a.k,a.v,c)}}}prune(){this[Ac].forEach((e,r)=>RN(this,r,!1))}},RN=(t,e,r)=>{let o=t[Ac].get(e);if(o){let a=o.value;if(RD(t,a)){if(Jy(t,o),!t[Pw])return}else r&&(t[zz]&&(o.value.now=Date.now()),t[Vs].unshiftNode(o));return a.value}},RD=(t,e)=>{if(!e||!e.maxAge&&!t[Rd])return!1;let r=Date.now()-e.now;return e.maxAge?r>e.maxAge:t[Rd]&&r>t[Rd]},xw=t=>{if(t[qf]>t[Fd])for(let e=t[Vs].tail;t[qf]>t[Fd]&&e!==null;){let r=e.prev;Jy(t,e),e=r}},Jy=(t,e)=>{if(e){let r=e.value;t[Hf]&&t[Hf](r.key,r.value),t[qf]-=r.length,t[Ac].delete(r.key),t[Vs].removeNode(e)}},NN=class{constructor(e,r,o,a,n){this.key=e,this.value=r,this.length=o,this.now=a,this.maxAge=n||0}},Vz=(t,e,r,o)=>{let a=r.value;RD(t,a)&&(Jy(t,r),t[Pw]||(a=void 0)),a&&e.call(o,a.value,a.key,t)};Xz.exports=TN});var gl=_((cbt,rX)=>{var Td=class{constructor(e,r){if(r=Zje(r),e instanceof Td)return e.loose===!!r.loose&&e.includePrerelease===!!r.includePrerelease?e:new Td(e.raw,r);if(e instanceof MN)return this.raw=e.value,this.set=[[e]],this.format(),this;if(this.options=r,this.loose=!!r.loose,this.includePrerelease=!!r.includePrerelease,this.raw=e,this.set=e.split(/\s*\|\|\s*/).map(o=>this.parseRange(o.trim())).filter(o=>o.length),!this.set.length)throw new TypeError(`Invalid SemVer Range: ${e}`);if(this.set.length>1){let o=this.set[0];if(this.set=this.set.filter(a=>!eX(a[0])),this.set.length===0)this.set=[o];else if(this.set.length>1){for(let a of this.set)if(a.length===1&&n5e(a[0])){this.set=[a];break}}}this.format()}format(){return this.range=this.set.map(e=>e.join(" ").trim()).join("||").trim(),this.range}toString(){return this.range}parseRange(e){e=e.trim();let o=`parseRange:${Object.keys(this.options).join(",")}:${e}`,a=$z.get(o);if(a)return a;let n=this.options.loose,c=n?jo[fo.HYPHENRANGELOOSE]:jo[fo.HYPHENRANGE];e=e.replace(c,g5e(this.options.includePrerelease)),as("hyphen replace",e),e=e.replace(jo[fo.COMPARATORTRIM],e5e),as("comparator trim",e,jo[fo.COMPARATORTRIM]),e=e.replace(jo[fo.TILDETRIM],t5e),e=e.replace(jo[fo.CARETTRIM],r5e),e=e.split(/\s+/).join(" ");let f=n?jo[fo.COMPARATORLOOSE]:jo[fo.COMPARATOR],g=e.split(" ").map(Q=>i5e(Q,this.options)).join(" ").split(/\s+/).map(Q=>f5e(Q,this.options)).filter(this.options.loose?Q=>!!Q.match(f):()=>!0).map(Q=>new MN(Q,this.options)),p=g.length,E=new Map;for(let Q of g){if(eX(Q))return[Q];E.set(Q.value,Q)}E.size>1&&E.has("")&&E.delete("");let B=[...E.values()];return $z.set(o,B),B}intersects(e,r){if(!(e instanceof Td))throw new TypeError("a Range is required");return this.set.some(o=>tX(o,r)&&e.set.some(a=>tX(a,r)&&o.every(n=>a.every(c=>n.intersects(c,r)))))}test(e){if(!e)return!1;if(typeof e=="string")try{e=new $je(e,this.options)}catch{return!1}for(let r=0;rt.value==="<0.0.0-0",n5e=t=>t.value==="",tX=(t,e)=>{let r=!0,o=t.slice(),a=o.pop();for(;r&&o.length;)r=o.every(n=>a.intersects(n,e)),a=o.pop();return r},i5e=(t,e)=>(as("comp",t,e),t=a5e(t,e),as("caret",t),t=s5e(t,e),as("tildes",t),t=l5e(t,e),as("xrange",t),t=u5e(t,e),as("stars",t),t),ga=t=>!t||t.toLowerCase()==="x"||t==="*",s5e=(t,e)=>t.trim().split(/\s+/).map(r=>o5e(r,e)).join(" "),o5e=(t,e)=>{let r=e.loose?jo[fo.TILDELOOSE]:jo[fo.TILDE];return t.replace(r,(o,a,n,c,f)=>{as("tilde",t,o,a,n,c,f);let g;return ga(a)?g="":ga(n)?g=`>=${a}.0.0 <${+a+1}.0.0-0`:ga(c)?g=`>=${a}.${n}.0 <${a}.${+n+1}.0-0`:f?(as("replaceTilde pr",f),g=`>=${a}.${n}.${c}-${f} <${a}.${+n+1}.0-0`):g=`>=${a}.${n}.${c} <${a}.${+n+1}.0-0`,as("tilde return",g),g})},a5e=(t,e)=>t.trim().split(/\s+/).map(r=>A5e(r,e)).join(" "),A5e=(t,e)=>{as("caret",t,e);let r=e.loose?jo[fo.CARETLOOSE]:jo[fo.CARET],o=e.includePrerelease?"-0":"";return t.replace(r,(a,n,c,f,g)=>{as("caret",t,a,n,c,f,g);let p;return ga(n)?p="":ga(c)?p=`>=${n}.0.0${o} <${+n+1}.0.0-0`:ga(f)?n==="0"?p=`>=${n}.${c}.0${o} <${n}.${+c+1}.0-0`:p=`>=${n}.${c}.0${o} <${+n+1}.0.0-0`:g?(as("replaceCaret pr",g),n==="0"?c==="0"?p=`>=${n}.${c}.${f}-${g} <${n}.${c}.${+f+1}-0`:p=`>=${n}.${c}.${f}-${g} <${n}.${+c+1}.0-0`:p=`>=${n}.${c}.${f}-${g} <${+n+1}.0.0-0`):(as("no pr"),n==="0"?c==="0"?p=`>=${n}.${c}.${f}${o} <${n}.${c}.${+f+1}-0`:p=`>=${n}.${c}.${f}${o} <${n}.${+c+1}.0-0`:p=`>=${n}.${c}.${f} <${+n+1}.0.0-0`),as("caret return",p),p})},l5e=(t,e)=>(as("replaceXRanges",t,e),t.split(/\s+/).map(r=>c5e(r,e)).join(" ")),c5e=(t,e)=>{t=t.trim();let r=e.loose?jo[fo.XRANGELOOSE]:jo[fo.XRANGE];return t.replace(r,(o,a,n,c,f,g)=>{as("xRange",t,o,a,n,c,f,g);let p=ga(n),E=p||ga(c),B=E||ga(f),Q=B;return a==="="&&Q&&(a=""),g=e.includePrerelease?"-0":"",p?a===">"||a==="<"?o="<0.0.0-0":o="*":a&&Q?(E&&(c=0),f=0,a===">"?(a=">=",E?(n=+n+1,c=0,f=0):(c=+c+1,f=0)):a==="<="&&(a="<",E?n=+n+1:c=+c+1),a==="<"&&(g="-0"),o=`${a+n}.${c}.${f}${g}`):E?o=`>=${n}.0.0${g} <${+n+1}.0.0-0`:B&&(o=`>=${n}.${c}.0${g} <${n}.${+c+1}.0-0`),as("xRange return",o),o})},u5e=(t,e)=>(as("replaceStars",t,e),t.trim().replace(jo[fo.STAR],"")),f5e=(t,e)=>(as("replaceGTE0",t,e),t.trim().replace(jo[e.includePrerelease?fo.GTE0PRE:fo.GTE0],"")),g5e=t=>(e,r,o,a,n,c,f,g,p,E,B,Q,x)=>(ga(o)?r="":ga(a)?r=`>=${o}.0.0${t?"-0":""}`:ga(n)?r=`>=${o}.${a}.0${t?"-0":""}`:c?r=`>=${r}`:r=`>=${r}${t?"-0":""}`,ga(p)?g="":ga(E)?g=`<${+p+1}.0.0-0`:ga(B)?g=`<${p}.${+E+1}.0-0`:Q?g=`<=${p}.${E}.${B}-${Q}`:t?g=`<${p}.${E}.${+B+1}-0`:g=`<=${g}`,`${r} ${g}`.trim()),p5e=(t,e,r)=>{for(let o=0;o0){let a=t[o].semver;if(a.major===e.major&&a.minor===e.minor&&a.patch===e.patch)return!0}return!1}return!0}});var bw=_((ubt,aX)=>{var Fw=Symbol("SemVer ANY"),Vy=class{static get ANY(){return Fw}constructor(e,r){if(r=h5e(r),e instanceof Vy){if(e.loose===!!r.loose)return e;e=e.value}ON("comparator",e,r),this.options=r,this.loose=!!r.loose,this.parse(e),this.semver===Fw?this.value="":this.value=this.operator+this.semver.version,ON("comp",this)}parse(e){let r=this.options.loose?nX[iX.COMPARATORLOOSE]:nX[iX.COMPARATOR],o=e.match(r);if(!o)throw new TypeError(`Invalid comparator: ${e}`);this.operator=o[1]!==void 0?o[1]:"",this.operator==="="&&(this.operator=""),o[2]?this.semver=new sX(o[2],this.options.loose):this.semver=Fw}toString(){return this.value}test(e){if(ON("Comparator.test",e,this.options.loose),this.semver===Fw||e===Fw)return!0;if(typeof e=="string")try{e=new sX(e,this.options)}catch{return!1}return LN(e,this.operator,this.semver,this.options)}intersects(e,r){if(!(e instanceof Vy))throw new TypeError("a Comparator is required");if((!r||typeof r!="object")&&(r={loose:!!r,includePrerelease:!1}),this.operator==="")return this.value===""?!0:new oX(e.value,r).test(this.value);if(e.operator==="")return e.value===""?!0:new oX(this.value,r).test(e.semver);let o=(this.operator===">="||this.operator===">")&&(e.operator===">="||e.operator===">"),a=(this.operator==="<="||this.operator==="<")&&(e.operator==="<="||e.operator==="<"),n=this.semver.version===e.semver.version,c=(this.operator===">="||this.operator==="<=")&&(e.operator===">="||e.operator==="<="),f=LN(this.semver,"<",e.semver,r)&&(this.operator===">="||this.operator===">")&&(e.operator==="<="||e.operator==="<"),g=LN(this.semver,">",e.semver,r)&&(this.operator==="<="||this.operator==="<")&&(e.operator===">="||e.operator===">");return o||a||n&&c||f||g}};aX.exports=Vy;var h5e=Dw(),{re:nX,t:iX}=xd(),LN=bN(),ON=vw(),sX=Go(),oX=gl()});var Rw=_((fbt,AX)=>{var d5e=gl(),m5e=(t,e,r)=>{try{e=new d5e(e,r)}catch{return!1}return e.test(t)};AX.exports=m5e});var cX=_((gbt,lX)=>{var y5e=gl(),C5e=(t,e)=>new y5e(t,e).set.map(r=>r.map(o=>o.value).join(" ").trim().split(" "));lX.exports=C5e});var fX=_((pbt,uX)=>{var E5e=Go(),I5e=gl(),w5e=(t,e,r)=>{let o=null,a=null,n=null;try{n=new I5e(e,r)}catch{return null}return t.forEach(c=>{n.test(c)&&(!o||a.compare(c)===-1)&&(o=c,a=new E5e(o,r))}),o};uX.exports=w5e});var pX=_((hbt,gX)=>{var B5e=Go(),Q5e=gl(),v5e=(t,e,r)=>{let o=null,a=null,n=null;try{n=new Q5e(e,r)}catch{return null}return t.forEach(c=>{n.test(c)&&(!o||a.compare(c)===1)&&(o=c,a=new B5e(o,r))}),o};gX.exports=v5e});var mX=_((dbt,dX)=>{var UN=Go(),D5e=gl(),hX=kw(),S5e=(t,e)=>{t=new D5e(t,e);let r=new UN("0.0.0");if(t.test(r)||(r=new UN("0.0.0-0"),t.test(r)))return r;r=null;for(let o=0;o{let f=new UN(c.semver.version);switch(c.operator){case">":f.prerelease.length===0?f.patch++:f.prerelease.push(0),f.raw=f.format();case"":case">=":(!n||hX(f,n))&&(n=f);break;case"<":case"<=":break;default:throw new Error(`Unexpected operation: ${c.operator}`)}}),n&&(!r||hX(r,n))&&(r=n)}return r&&t.test(r)?r:null};dX.exports=S5e});var CX=_((mbt,yX)=>{var k5e=gl(),x5e=(t,e)=>{try{return new k5e(t,e).range||"*"}catch{return null}};yX.exports=x5e});var TD=_((ybt,BX)=>{var P5e=Go(),wX=bw(),{ANY:b5e}=wX,F5e=gl(),R5e=Rw(),EX=kw(),IX=SD(),T5e=xD(),N5e=kD(),M5e=(t,e,r,o)=>{t=new P5e(t,o),e=new F5e(e,o);let a,n,c,f,g;switch(r){case">":a=EX,n=T5e,c=IX,f=">",g=">=";break;case"<":a=IX,n=N5e,c=EX,f="<",g="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(R5e(t,e,o))return!1;for(let p=0;p{x.semver===b5e&&(x=new wX(">=0.0.0")),B=B||x,Q=Q||x,a(x.semver,B.semver,o)?B=x:c(x.semver,Q.semver,o)&&(Q=x)}),B.operator===f||B.operator===g||(!Q.operator||Q.operator===f)&&n(t,Q.semver))return!1;if(Q.operator===g&&c(t,Q.semver))return!1}return!0};BX.exports=M5e});var vX=_((Cbt,QX)=>{var L5e=TD(),O5e=(t,e,r)=>L5e(t,e,">",r);QX.exports=O5e});var SX=_((Ebt,DX)=>{var U5e=TD(),K5e=(t,e,r)=>U5e(t,e,"<",r);DX.exports=K5e});var PX=_((Ibt,xX)=>{var kX=gl(),_5e=(t,e,r)=>(t=new kX(t,r),e=new kX(e,r),t.intersects(e));xX.exports=_5e});var FX=_((wbt,bX)=>{var H5e=Rw(),q5e=fl();bX.exports=(t,e,r)=>{let o=[],a=null,n=null,c=t.sort((E,B)=>q5e(E,B,r));for(let E of c)H5e(E,e,r)?(n=E,a||(a=E)):(n&&o.push([a,n]),n=null,a=null);a&&o.push([a,null]);let f=[];for(let[E,B]of o)E===B?f.push(E):!B&&E===c[0]?f.push("*"):B?E===c[0]?f.push(`<=${B}`):f.push(`${E} - ${B}`):f.push(`>=${E}`);let g=f.join(" || "),p=typeof e.raw=="string"?e.raw:String(e);return g.length{var RX=gl(),ND=bw(),{ANY:KN}=ND,Tw=Rw(),_N=fl(),G5e=(t,e,r={})=>{if(t===e)return!0;t=new RX(t,r),e=new RX(e,r);let o=!1;e:for(let a of t.set){for(let n of e.set){let c=j5e(a,n,r);if(o=o||c!==null,c)continue e}if(o)return!1}return!0},j5e=(t,e,r)=>{if(t===e)return!0;if(t.length===1&&t[0].semver===KN){if(e.length===1&&e[0].semver===KN)return!0;r.includePrerelease?t=[new ND(">=0.0.0-0")]:t=[new ND(">=0.0.0")]}if(e.length===1&&e[0].semver===KN){if(r.includePrerelease)return!0;e=[new ND(">=0.0.0")]}let o=new Set,a,n;for(let x of t)x.operator===">"||x.operator===">="?a=TX(a,x,r):x.operator==="<"||x.operator==="<="?n=NX(n,x,r):o.add(x.semver);if(o.size>1)return null;let c;if(a&&n){if(c=_N(a.semver,n.semver,r),c>0)return null;if(c===0&&(a.operator!==">="||n.operator!=="<="))return null}for(let x of o){if(a&&!Tw(x,String(a),r)||n&&!Tw(x,String(n),r))return null;for(let C of e)if(!Tw(x,String(C),r))return!1;return!0}let f,g,p,E,B=n&&!r.includePrerelease&&n.semver.prerelease.length?n.semver:!1,Q=a&&!r.includePrerelease&&a.semver.prerelease.length?a.semver:!1;B&&B.prerelease.length===1&&n.operator==="<"&&B.prerelease[0]===0&&(B=!1);for(let x of e){if(E=E||x.operator===">"||x.operator===">=",p=p||x.operator==="<"||x.operator==="<=",a){if(Q&&x.semver.prerelease&&x.semver.prerelease.length&&x.semver.major===Q.major&&x.semver.minor===Q.minor&&x.semver.patch===Q.patch&&(Q=!1),x.operator===">"||x.operator===">="){if(f=TX(a,x,r),f===x&&f!==a)return!1}else if(a.operator===">="&&!Tw(a.semver,String(x),r))return!1}if(n){if(B&&x.semver.prerelease&&x.semver.prerelease.length&&x.semver.major===B.major&&x.semver.minor===B.minor&&x.semver.patch===B.patch&&(B=!1),x.operator==="<"||x.operator==="<="){if(g=NX(n,x,r),g===x&&g!==n)return!1}else if(n.operator==="<="&&!Tw(n.semver,String(x),r))return!1}if(!x.operator&&(n||a)&&c!==0)return!1}return!(a&&p&&!n&&c!==0||n&&E&&!a&&c!==0||Q||B)},TX=(t,e,r)=>{if(!t)return e;let o=_N(t.semver,e.semver,r);return o>0?t:o<0||e.operator===">"&&t.operator===">="?e:t},NX=(t,e,r)=>{if(!t)return e;let o=_N(t.semver,e.semver,r);return o<0?t:o>0||e.operator==="<"&&t.operator==="<="?e:t};MX.exports=G5e});var wi=_((Qbt,OX)=>{var HN=xd();OX.exports={re:HN.re,src:HN.src,tokens:HN.t,SEMVER_SPEC_VERSION:Qw().SEMVER_SPEC_VERSION,SemVer:Go(),compareIdentifiers:wD().compareIdentifiers,rcompareIdentifiers:wD().rcompareIdentifiers,parse:Pd(),valid:Az(),clean:cz(),inc:fz(),diff:yz(),major:Ez(),minor:wz(),patch:Qz(),prerelease:Dz(),compare:fl(),rcompare:kz(),compareLoose:Pz(),compareBuild:DD(),sort:Tz(),rsort:Mz(),gt:kw(),lt:SD(),eq:vD(),neq:PN(),gte:kD(),lte:xD(),cmp:bN(),coerce:Gz(),Comparator:bw(),Range:gl(),satisfies:Rw(),toComparators:cX(),maxSatisfying:fX(),minSatisfying:pX(),minVersion:mX(),validRange:CX(),outside:TD(),gtr:vX(),ltr:SX(),intersects:PX(),simplifyRange:FX(),subset:LX()}});var KX=_((vbt,UX)=>{"use strict";function Y5e(t,e){function r(){this.constructor=t}r.prototype=e.prototype,t.prototype=new r}function Nd(t,e,r,o){this.message=t,this.expected=e,this.found=r,this.location=o,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,Nd)}Y5e(Nd,Error);Nd.buildMessage=function(t,e){var r={literal:function(p){return'"'+a(p.text)+'"'},class:function(p){var E="",B;for(B=0;B0){for(B=1,Q=1;B{switch(Le[1]){case"|":return Re|Le[3];case"&":return Re&Le[3];case"^":return Re^Le[3]}},ne)},Q="!",x=He("!",!1),C=function(ne){return!ne},N="(",U=He("(",!1),H=")",X=He(")",!1),ie=function(ne){return ne},fe=/^[^ \t\n\r()!|&\^]/,ye=qe([" "," ",` -`,"\r","(",")","!","|","&","^"],!0,!1),Qe=function(ne){return e.queryPattern.test(ne)},Pe=function(ne){return e.checkFn(ne)},pe=We("whitespace"),Ee=/^[ \t\n\r]/,ke=qe([" "," ",` -`,"\r"],!1,!1),h=0,Ke=0,Ce=[{line:1,column:1}],Be=0,le=[],re=0,Se;if("startRule"in e){if(!(e.startRule in o))throw new Error(`Can't start parsing from rule "`+e.startRule+'".');a=o[e.startRule]}function Ue(){return t.substring(Ke,h)}function dt(){return Oe(Ke,h)}function q(ne,Ae){throw Ae=Ae!==void 0?Ae:Oe(Ke,h),S([We(ne)],t.substring(Ke,h),Ae)}function Qt(ne,Ae){throw Ae=Ae!==void 0?Ae:Oe(Ke,h),I(ne,Ae)}function He(ne,Ae){return{type:"literal",text:ne,ignoreCase:Ae}}function qe(ne,Ae,Re){return{type:"class",parts:ne,inverted:Ae,ignoreCase:Re}}function Fe(){return{type:"any"}}function je(){return{type:"end"}}function We(ne){return{type:"other",description:ne}}function pt(ne){var Ae=Ce[ne],Re;if(Ae)return Ae;for(Re=ne-1;!Ce[Re];)Re--;for(Ae=Ce[Re],Ae={line:Ae.line,column:Ae.column};ReBe&&(Be=h,le=[]),le.push(ne))}function I(ne,Ae){return new Nd(ne,null,null,Ae)}function S(ne,Ae,Re){return new Nd(Nd.buildMessage(ne,Ae),ne,Ae,Re)}function y(){var ne,Ae,Re,Le,lt,mt,qt,sr;if(ne=h,Ae=R(),Ae!==r){for(Re=[],Le=h,lt=te(),lt!==r?(t.charCodeAt(h)===124?(mt=n,h++):(mt=r,re===0&&k(c)),mt===r&&(t.charCodeAt(h)===38?(mt=f,h++):(mt=r,re===0&&k(g)),mt===r&&(t.charCodeAt(h)===94?(mt=p,h++):(mt=r,re===0&&k(E)))),mt!==r?(qt=te(),qt!==r?(sr=R(),sr!==r?(lt=[lt,mt,qt,sr],Le=lt):(h=Le,Le=r)):(h=Le,Le=r)):(h=Le,Le=r)):(h=Le,Le=r);Le!==r;)Re.push(Le),Le=h,lt=te(),lt!==r?(t.charCodeAt(h)===124?(mt=n,h++):(mt=r,re===0&&k(c)),mt===r&&(t.charCodeAt(h)===38?(mt=f,h++):(mt=r,re===0&&k(g)),mt===r&&(t.charCodeAt(h)===94?(mt=p,h++):(mt=r,re===0&&k(E)))),mt!==r?(qt=te(),qt!==r?(sr=R(),sr!==r?(lt=[lt,mt,qt,sr],Le=lt):(h=Le,Le=r)):(h=Le,Le=r)):(h=Le,Le=r)):(h=Le,Le=r);Re!==r?(Ke=ne,Ae=B(Ae,Re),ne=Ae):(h=ne,ne=r)}else h=ne,ne=r;return ne}function R(){var ne,Ae,Re,Le,lt,mt;return ne=h,t.charCodeAt(h)===33?(Ae=Q,h++):(Ae=r,re===0&&k(x)),Ae!==r?(Re=R(),Re!==r?(Ke=ne,Ae=C(Re),ne=Ae):(h=ne,ne=r)):(h=ne,ne=r),ne===r&&(ne=h,t.charCodeAt(h)===40?(Ae=N,h++):(Ae=r,re===0&&k(U)),Ae!==r?(Re=te(),Re!==r?(Le=y(),Le!==r?(lt=te(),lt!==r?(t.charCodeAt(h)===41?(mt=H,h++):(mt=r,re===0&&k(X)),mt!==r?(Ke=ne,Ae=ie(Le),ne=Ae):(h=ne,ne=r)):(h=ne,ne=r)):(h=ne,ne=r)):(h=ne,ne=r)):(h=ne,ne=r),ne===r&&(ne=Z())),ne}function Z(){var ne,Ae,Re,Le,lt;if(ne=h,Ae=te(),Ae!==r){if(Re=h,Le=[],fe.test(t.charAt(h))?(lt=t.charAt(h),h++):(lt=r,re===0&&k(ye)),lt!==r)for(;lt!==r;)Le.push(lt),fe.test(t.charAt(h))?(lt=t.charAt(h),h++):(lt=r,re===0&&k(ye));else Le=r;Le!==r?Re=t.substring(Re,h):Re=Le,Re!==r?(Ke=h,Le=Qe(Re),Le?Le=void 0:Le=r,Le!==r?(Ke=ne,Ae=Pe(Re),ne=Ae):(h=ne,ne=r)):(h=ne,ne=r)}else h=ne,ne=r;return ne}function te(){var ne,Ae;for(re++,ne=[],Ee.test(t.charAt(h))?(Ae=t.charAt(h),h++):(Ae=r,re===0&&k(ke));Ae!==r;)ne.push(Ae),Ee.test(t.charAt(h))?(Ae=t.charAt(h),h++):(Ae=r,re===0&&k(ke));return re--,ne===r&&(Ae=r,re===0&&k(pe)),ne}if(Se=a(),Se!==r&&h===t.length)return Se;throw Se!==r&&h{var{parse:J5e}=KX();MD.makeParser=(t=/[a-z]+/)=>(e,r)=>J5e(e,{queryPattern:t,checkFn:r});MD.parse=MD.makeParser()});var qX=_((Sbt,HX)=>{"use strict";HX.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}});var qN=_((kbt,jX)=>{var Nw=qX(),GX={};for(let t of Object.keys(Nw))GX[Nw[t]]=t;var Er={rgb:{channels:3,labels:"rgb"},hsl:{channels:3,labels:"hsl"},hsv:{channels:3,labels:"hsv"},hwb:{channels:3,labels:"hwb"},cmyk:{channels:4,labels:"cmyk"},xyz:{channels:3,labels:"xyz"},lab:{channels:3,labels:"lab"},lch:{channels:3,labels:"lch"},hex:{channels:1,labels:["hex"]},keyword:{channels:1,labels:["keyword"]},ansi16:{channels:1,labels:["ansi16"]},ansi256:{channels:1,labels:["ansi256"]},hcg:{channels:3,labels:["h","c","g"]},apple:{channels:3,labels:["r16","g16","b16"]},gray:{channels:1,labels:["gray"]}};jX.exports=Er;for(let t of Object.keys(Er)){if(!("channels"in Er[t]))throw new Error("missing channels property: "+t);if(!("labels"in Er[t]))throw new Error("missing channel labels property: "+t);if(Er[t].labels.length!==Er[t].channels)throw new Error("channel and label counts mismatch: "+t);let{channels:e,labels:r}=Er[t];delete Er[t].channels,delete Er[t].labels,Object.defineProperty(Er[t],"channels",{value:e}),Object.defineProperty(Er[t],"labels",{value:r})}Er.rgb.hsl=function(t){let e=t[0]/255,r=t[1]/255,o=t[2]/255,a=Math.min(e,r,o),n=Math.max(e,r,o),c=n-a,f,g;n===a?f=0:e===n?f=(r-o)/c:r===n?f=2+(o-e)/c:o===n&&(f=4+(e-r)/c),f=Math.min(f*60,360),f<0&&(f+=360);let p=(a+n)/2;return n===a?g=0:p<=.5?g=c/(n+a):g=c/(2-n-a),[f,g*100,p*100]};Er.rgb.hsv=function(t){let e,r,o,a,n,c=t[0]/255,f=t[1]/255,g=t[2]/255,p=Math.max(c,f,g),E=p-Math.min(c,f,g),B=function(Q){return(p-Q)/6/E+1/2};return E===0?(a=0,n=0):(n=E/p,e=B(c),r=B(f),o=B(g),c===p?a=o-r:f===p?a=1/3+e-o:g===p&&(a=2/3+r-e),a<0?a+=1:a>1&&(a-=1)),[a*360,n*100,p*100]};Er.rgb.hwb=function(t){let e=t[0],r=t[1],o=t[2],a=Er.rgb.hsl(t)[0],n=1/255*Math.min(e,Math.min(r,o));return o=1-1/255*Math.max(e,Math.max(r,o)),[a,n*100,o*100]};Er.rgb.cmyk=function(t){let e=t[0]/255,r=t[1]/255,o=t[2]/255,a=Math.min(1-e,1-r,1-o),n=(1-e-a)/(1-a)||0,c=(1-r-a)/(1-a)||0,f=(1-o-a)/(1-a)||0;return[n*100,c*100,f*100,a*100]};function V5e(t,e){return(t[0]-e[0])**2+(t[1]-e[1])**2+(t[2]-e[2])**2}Er.rgb.keyword=function(t){let e=GX[t];if(e)return e;let r=1/0,o;for(let a of Object.keys(Nw)){let n=Nw[a],c=V5e(t,n);c.04045?((e+.055)/1.055)**2.4:e/12.92,r=r>.04045?((r+.055)/1.055)**2.4:r/12.92,o=o>.04045?((o+.055)/1.055)**2.4:o/12.92;let a=e*.4124+r*.3576+o*.1805,n=e*.2126+r*.7152+o*.0722,c=e*.0193+r*.1192+o*.9505;return[a*100,n*100,c*100]};Er.rgb.lab=function(t){let e=Er.rgb.xyz(t),r=e[0],o=e[1],a=e[2];r/=95.047,o/=100,a/=108.883,r=r>.008856?r**(1/3):7.787*r+16/116,o=o>.008856?o**(1/3):7.787*o+16/116,a=a>.008856?a**(1/3):7.787*a+16/116;let n=116*o-16,c=500*(r-o),f=200*(o-a);return[n,c,f]};Er.hsl.rgb=function(t){let e=t[0]/360,r=t[1]/100,o=t[2]/100,a,n,c;if(r===0)return c=o*255,[c,c,c];o<.5?a=o*(1+r):a=o+r-o*r;let f=2*o-a,g=[0,0,0];for(let p=0;p<3;p++)n=e+1/3*-(p-1),n<0&&n++,n>1&&n--,6*n<1?c=f+(a-f)*6*n:2*n<1?c=a:3*n<2?c=f+(a-f)*(2/3-n)*6:c=f,g[p]=c*255;return g};Er.hsl.hsv=function(t){let e=t[0],r=t[1]/100,o=t[2]/100,a=r,n=Math.max(o,.01);o*=2,r*=o<=1?o:2-o,a*=n<=1?n:2-n;let c=(o+r)/2,f=o===0?2*a/(n+a):2*r/(o+r);return[e,f*100,c*100]};Er.hsv.rgb=function(t){let e=t[0]/60,r=t[1]/100,o=t[2]/100,a=Math.floor(e)%6,n=e-Math.floor(e),c=255*o*(1-r),f=255*o*(1-r*n),g=255*o*(1-r*(1-n));switch(o*=255,a){case 0:return[o,g,c];case 1:return[f,o,c];case 2:return[c,o,g];case 3:return[c,f,o];case 4:return[g,c,o];case 5:return[o,c,f]}};Er.hsv.hsl=function(t){let e=t[0],r=t[1]/100,o=t[2]/100,a=Math.max(o,.01),n,c;c=(2-r)*o;let f=(2-r)*a;return n=r*a,n/=f<=1?f:2-f,n=n||0,c/=2,[e,n*100,c*100]};Er.hwb.rgb=function(t){let e=t[0]/360,r=t[1]/100,o=t[2]/100,a=r+o,n;a>1&&(r/=a,o/=a);let c=Math.floor(6*e),f=1-o;n=6*e-c,(c&1)!==0&&(n=1-n);let g=r+n*(f-r),p,E,B;switch(c){default:case 6:case 0:p=f,E=g,B=r;break;case 1:p=g,E=f,B=r;break;case 2:p=r,E=f,B=g;break;case 3:p=r,E=g,B=f;break;case 4:p=g,E=r,B=f;break;case 5:p=f,E=r,B=g;break}return[p*255,E*255,B*255]};Er.cmyk.rgb=function(t){let e=t[0]/100,r=t[1]/100,o=t[2]/100,a=t[3]/100,n=1-Math.min(1,e*(1-a)+a),c=1-Math.min(1,r*(1-a)+a),f=1-Math.min(1,o*(1-a)+a);return[n*255,c*255,f*255]};Er.xyz.rgb=function(t){let e=t[0]/100,r=t[1]/100,o=t[2]/100,a,n,c;return a=e*3.2406+r*-1.5372+o*-.4986,n=e*-.9689+r*1.8758+o*.0415,c=e*.0557+r*-.204+o*1.057,a=a>.0031308?1.055*a**(1/2.4)-.055:a*12.92,n=n>.0031308?1.055*n**(1/2.4)-.055:n*12.92,c=c>.0031308?1.055*c**(1/2.4)-.055:c*12.92,a=Math.min(Math.max(0,a),1),n=Math.min(Math.max(0,n),1),c=Math.min(Math.max(0,c),1),[a*255,n*255,c*255]};Er.xyz.lab=function(t){let e=t[0],r=t[1],o=t[2];e/=95.047,r/=100,o/=108.883,e=e>.008856?e**(1/3):7.787*e+16/116,r=r>.008856?r**(1/3):7.787*r+16/116,o=o>.008856?o**(1/3):7.787*o+16/116;let a=116*r-16,n=500*(e-r),c=200*(r-o);return[a,n,c]};Er.lab.xyz=function(t){let e=t[0],r=t[1],o=t[2],a,n,c;n=(e+16)/116,a=r/500+n,c=n-o/200;let f=n**3,g=a**3,p=c**3;return n=f>.008856?f:(n-16/116)/7.787,a=g>.008856?g:(a-16/116)/7.787,c=p>.008856?p:(c-16/116)/7.787,a*=95.047,n*=100,c*=108.883,[a,n,c]};Er.lab.lch=function(t){let e=t[0],r=t[1],o=t[2],a;a=Math.atan2(o,r)*360/2/Math.PI,a<0&&(a+=360);let c=Math.sqrt(r*r+o*o);return[e,c,a]};Er.lch.lab=function(t){let e=t[0],r=t[1],a=t[2]/360*2*Math.PI,n=r*Math.cos(a),c=r*Math.sin(a);return[e,n,c]};Er.rgb.ansi16=function(t,e=null){let[r,o,a]=t,n=e===null?Er.rgb.hsv(t)[2]:e;if(n=Math.round(n/50),n===0)return 30;let c=30+(Math.round(a/255)<<2|Math.round(o/255)<<1|Math.round(r/255));return n===2&&(c+=60),c};Er.hsv.ansi16=function(t){return Er.rgb.ansi16(Er.hsv.rgb(t),t[2])};Er.rgb.ansi256=function(t){let e=t[0],r=t[1],o=t[2];return e===r&&r===o?e<8?16:e>248?231:Math.round((e-8)/247*24)+232:16+36*Math.round(e/255*5)+6*Math.round(r/255*5)+Math.round(o/255*5)};Er.ansi16.rgb=function(t){let e=t%10;if(e===0||e===7)return t>50&&(e+=3.5),e=e/10.5*255,[e,e,e];let r=(~~(t>50)+1)*.5,o=(e&1)*r*255,a=(e>>1&1)*r*255,n=(e>>2&1)*r*255;return[o,a,n]};Er.ansi256.rgb=function(t){if(t>=232){let n=(t-232)*10+8;return[n,n,n]}t-=16;let e,r=Math.floor(t/36)/5*255,o=Math.floor((e=t%36)/6)/5*255,a=e%6/5*255;return[r,o,a]};Er.rgb.hex=function(t){let r=(((Math.round(t[0])&255)<<16)+((Math.round(t[1])&255)<<8)+(Math.round(t[2])&255)).toString(16).toUpperCase();return"000000".substring(r.length)+r};Er.hex.rgb=function(t){let e=t.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if(!e)return[0,0,0];let r=e[0];e[0].length===3&&(r=r.split("").map(f=>f+f).join(""));let o=parseInt(r,16),a=o>>16&255,n=o>>8&255,c=o&255;return[a,n,c]};Er.rgb.hcg=function(t){let e=t[0]/255,r=t[1]/255,o=t[2]/255,a=Math.max(Math.max(e,r),o),n=Math.min(Math.min(e,r),o),c=a-n,f,g;return c<1?f=n/(1-c):f=0,c<=0?g=0:a===e?g=(r-o)/c%6:a===r?g=2+(o-e)/c:g=4+(e-r)/c,g/=6,g%=1,[g*360,c*100,f*100]};Er.hsl.hcg=function(t){let e=t[1]/100,r=t[2]/100,o=r<.5?2*e*r:2*e*(1-r),a=0;return o<1&&(a=(r-.5*o)/(1-o)),[t[0],o*100,a*100]};Er.hsv.hcg=function(t){let e=t[1]/100,r=t[2]/100,o=e*r,a=0;return o<1&&(a=(r-o)/(1-o)),[t[0],o*100,a*100]};Er.hcg.rgb=function(t){let e=t[0]/360,r=t[1]/100,o=t[2]/100;if(r===0)return[o*255,o*255,o*255];let a=[0,0,0],n=e%1*6,c=n%1,f=1-c,g=0;switch(Math.floor(n)){case 0:a[0]=1,a[1]=c,a[2]=0;break;case 1:a[0]=f,a[1]=1,a[2]=0;break;case 2:a[0]=0,a[1]=1,a[2]=c;break;case 3:a[0]=0,a[1]=f,a[2]=1;break;case 4:a[0]=c,a[1]=0,a[2]=1;break;default:a[0]=1,a[1]=0,a[2]=f}return g=(1-r)*o,[(r*a[0]+g)*255,(r*a[1]+g)*255,(r*a[2]+g)*255]};Er.hcg.hsv=function(t){let e=t[1]/100,r=t[2]/100,o=e+r*(1-e),a=0;return o>0&&(a=e/o),[t[0],a*100,o*100]};Er.hcg.hsl=function(t){let e=t[1]/100,o=t[2]/100*(1-e)+.5*e,a=0;return o>0&&o<.5?a=e/(2*o):o>=.5&&o<1&&(a=e/(2*(1-o))),[t[0],a*100,o*100]};Er.hcg.hwb=function(t){let e=t[1]/100,r=t[2]/100,o=e+r*(1-e);return[t[0],(o-e)*100,(1-o)*100]};Er.hwb.hcg=function(t){let e=t[1]/100,r=t[2]/100,o=1-r,a=o-e,n=0;return a<1&&(n=(o-a)/(1-a)),[t[0],a*100,n*100]};Er.apple.rgb=function(t){return[t[0]/65535*255,t[1]/65535*255,t[2]/65535*255]};Er.rgb.apple=function(t){return[t[0]/255*65535,t[1]/255*65535,t[2]/255*65535]};Er.gray.rgb=function(t){return[t[0]/100*255,t[0]/100*255,t[0]/100*255]};Er.gray.hsl=function(t){return[0,0,t[0]]};Er.gray.hsv=Er.gray.hsl;Er.gray.hwb=function(t){return[0,100,t[0]]};Er.gray.cmyk=function(t){return[0,0,0,t[0]]};Er.gray.lab=function(t){return[t[0],0,0]};Er.gray.hex=function(t){let e=Math.round(t[0]/100*255)&255,o=((e<<16)+(e<<8)+e).toString(16).toUpperCase();return"000000".substring(o.length)+o};Er.rgb.gray=function(t){return[(t[0]+t[1]+t[2])/3/255*100]}});var WX=_((xbt,YX)=>{var LD=qN();function z5e(){let t={},e=Object.keys(LD);for(let r=e.length,o=0;o{var GN=qN(),e9e=WX(),zy={},t9e=Object.keys(GN);function r9e(t){let e=function(...r){let o=r[0];return o==null?o:(o.length>1&&(r=o),t(r))};return"conversion"in t&&(e.conversion=t.conversion),e}function n9e(t){let e=function(...r){let o=r[0];if(o==null)return o;o.length>1&&(r=o);let a=t(r);if(typeof a=="object")for(let n=a.length,c=0;c{zy[t]={},Object.defineProperty(zy[t],"channels",{value:GN[t].channels}),Object.defineProperty(zy[t],"labels",{value:GN[t].labels});let e=e9e(t);Object.keys(e).forEach(o=>{let a=e[o];zy[t][o]=n9e(a),zy[t][o].raw=r9e(a)})});JX.exports=zy});var Mw=_((bbt,eZ)=>{"use strict";var zX=(t,e)=>(...r)=>`\x1B[${t(...r)+e}m`,XX=(t,e)=>(...r)=>{let o=t(...r);return`\x1B[${38+e};5;${o}m`},ZX=(t,e)=>(...r)=>{let o=t(...r);return`\x1B[${38+e};2;${o[0]};${o[1]};${o[2]}m`},OD=t=>t,$X=(t,e,r)=>[t,e,r],Xy=(t,e,r)=>{Object.defineProperty(t,e,{get:()=>{let o=r();return Object.defineProperty(t,e,{value:o,enumerable:!0,configurable:!0}),o},enumerable:!0,configurable:!0})},jN,Zy=(t,e,r,o)=>{jN===void 0&&(jN=VX());let a=o?10:0,n={};for(let[c,f]of Object.entries(jN)){let g=c==="ansi16"?"ansi":c;c===e?n[g]=t(r,a):typeof f=="object"&&(n[g]=t(f[e],a))}return n};function i9e(){let t=new Map,e={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}};e.color.gray=e.color.blackBright,e.bgColor.bgGray=e.bgColor.bgBlackBright,e.color.grey=e.color.blackBright,e.bgColor.bgGrey=e.bgColor.bgBlackBright;for(let[r,o]of Object.entries(e)){for(let[a,n]of Object.entries(o))e[a]={open:`\x1B[${n[0]}m`,close:`\x1B[${n[1]}m`},o[a]=e[a],t.set(n[0],n[1]);Object.defineProperty(e,r,{value:o,enumerable:!1})}return Object.defineProperty(e,"codes",{value:t,enumerable:!1}),e.color.close="\x1B[39m",e.bgColor.close="\x1B[49m",Xy(e.color,"ansi",()=>Zy(zX,"ansi16",OD,!1)),Xy(e.color,"ansi256",()=>Zy(XX,"ansi256",OD,!1)),Xy(e.color,"ansi16m",()=>Zy(ZX,"rgb",$X,!1)),Xy(e.bgColor,"ansi",()=>Zy(zX,"ansi16",OD,!0)),Xy(e.bgColor,"ansi256",()=>Zy(XX,"ansi256",OD,!0)),Xy(e.bgColor,"ansi16m",()=>Zy(ZX,"rgb",$X,!0)),e}Object.defineProperty(eZ,"exports",{enumerable:!0,get:i9e})});var rZ=_((Fbt,tZ)=>{"use strict";tZ.exports=(t,e=process.argv)=>{let r=t.startsWith("-")?"":t.length===1?"-":"--",o=e.indexOf(r+t),a=e.indexOf("--");return o!==-1&&(a===-1||o{"use strict";var s9e=Ie("os"),nZ=Ie("tty"),pl=rZ(),{env:Ts}=process,Cp;pl("no-color")||pl("no-colors")||pl("color=false")||pl("color=never")?Cp=0:(pl("color")||pl("colors")||pl("color=true")||pl("color=always"))&&(Cp=1);"FORCE_COLOR"in Ts&&(Ts.FORCE_COLOR==="true"?Cp=1:Ts.FORCE_COLOR==="false"?Cp=0:Cp=Ts.FORCE_COLOR.length===0?1:Math.min(parseInt(Ts.FORCE_COLOR,10),3));function YN(t){return t===0?!1:{level:t,hasBasic:!0,has256:t>=2,has16m:t>=3}}function WN(t,e){if(Cp===0)return 0;if(pl("color=16m")||pl("color=full")||pl("color=truecolor"))return 3;if(pl("color=256"))return 2;if(t&&!e&&Cp===void 0)return 0;let r=Cp||0;if(Ts.TERM==="dumb")return r;if(process.platform==="win32"){let o=s9e.release().split(".");return Number(o[0])>=10&&Number(o[2])>=10586?Number(o[2])>=14931?3:2:1}if("CI"in Ts)return["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI"].some(o=>o in Ts)||Ts.CI_NAME==="codeship"?1:r;if("TEAMCITY_VERSION"in Ts)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(Ts.TEAMCITY_VERSION)?1:0;if("GITHUB_ACTIONS"in Ts)return 1;if(Ts.COLORTERM==="truecolor")return 3;if("TERM_PROGRAM"in Ts){let o=parseInt((Ts.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(Ts.TERM_PROGRAM){case"iTerm.app":return o>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(Ts.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(Ts.TERM)||"COLORTERM"in Ts?1:r}function o9e(t){let e=WN(t,t&&t.isTTY);return YN(e)}iZ.exports={supportsColor:o9e,stdout:YN(WN(!0,nZ.isatty(1))),stderr:YN(WN(!0,nZ.isatty(2)))}});var oZ=_((Tbt,sZ)=>{"use strict";var a9e=(t,e,r)=>{let o=t.indexOf(e);if(o===-1)return t;let a=e.length,n=0,c="";do c+=t.substr(n,o-n)+e+r,n=o+a,o=t.indexOf(e,n);while(o!==-1);return c+=t.substr(n),c},A9e=(t,e,r,o)=>{let a=0,n="";do{let c=t[o-1]==="\r";n+=t.substr(a,(c?o-1:o)-a)+e+(c?`\r -`:` -`)+r,a=o+1,o=t.indexOf(` -`,a)}while(o!==-1);return n+=t.substr(a),n};sZ.exports={stringReplaceAll:a9e,stringEncaseCRLFWithFirstIndex:A9e}});var uZ=_((Nbt,cZ)=>{"use strict";var l9e=/(?:\\(u(?:[a-f\d]{4}|\{[a-f\d]{1,6}\})|x[a-f\d]{2}|.))|(?:\{(~)?(\w+(?:\([^)]*\))?(?:\.\w+(?:\([^)]*\))?)*)(?:[ \t]|(?=\r?\n)))|(\})|((?:.|[\r\n\f])+?)/gi,aZ=/(?:^|\.)(\w+)(?:\(([^)]*)\))?/g,c9e=/^(['"])((?:\\.|(?!\1)[^\\])*)\1$/,u9e=/\\(u(?:[a-f\d]{4}|\{[a-f\d]{1,6}\})|x[a-f\d]{2}|.)|([^\\])/gi,f9e=new Map([["n",` -`],["r","\r"],["t"," "],["b","\b"],["f","\f"],["v","\v"],["0","\0"],["\\","\\"],["e","\x1B"],["a","\x07"]]);function lZ(t){let e=t[0]==="u",r=t[1]==="{";return e&&!r&&t.length===5||t[0]==="x"&&t.length===3?String.fromCharCode(parseInt(t.slice(1),16)):e&&r?String.fromCodePoint(parseInt(t.slice(2,-1),16)):f9e.get(t)||t}function g9e(t,e){let r=[],o=e.trim().split(/\s*,\s*/g),a;for(let n of o){let c=Number(n);if(!Number.isNaN(c))r.push(c);else if(a=n.match(c9e))r.push(a[2].replace(u9e,(f,g,p)=>g?lZ(g):p));else throw new Error(`Invalid Chalk template style argument: ${n} (in style '${t}')`)}return r}function p9e(t){aZ.lastIndex=0;let e=[],r;for(;(r=aZ.exec(t))!==null;){let o=r[1];if(r[2]){let a=g9e(o,r[2]);e.push([o].concat(a))}else e.push([o])}return e}function AZ(t,e){let r={};for(let a of e)for(let n of a.styles)r[n[0]]=a.inverse?null:n.slice(1);let o=t;for(let[a,n]of Object.entries(r))if(!!Array.isArray(n)){if(!(a in o))throw new Error(`Unknown Chalk style: ${a}`);o=n.length>0?o[a](...n):o[a]}return o}cZ.exports=(t,e)=>{let r=[],o=[],a=[];if(e.replace(l9e,(n,c,f,g,p,E)=>{if(c)a.push(lZ(c));else if(g){let B=a.join("");a=[],o.push(r.length===0?B:AZ(t,r)(B)),r.push({inverse:f,styles:p9e(g)})}else if(p){if(r.length===0)throw new Error("Found extraneous } in Chalk template literal");o.push(AZ(t,r)(a.join(""))),a=[],r.pop()}else a.push(E)}),o.push(a.join("")),r.length>0){let n=`Chalk template literal is missing ${r.length} closing bracket${r.length===1?"":"s"} (\`}\`)`;throw new Error(n)}return o.join("")}});var eM=_((Mbt,hZ)=>{"use strict";var Lw=Mw(),{stdout:zN,stderr:XN}=JN(),{stringReplaceAll:h9e,stringEncaseCRLFWithFirstIndex:d9e}=oZ(),fZ=["ansi","ansi","ansi256","ansi16m"],$y=Object.create(null),m9e=(t,e={})=>{if(e.level>3||e.level<0)throw new Error("The `level` option should be an integer from 0 to 3");let r=zN?zN.level:0;t.level=e.level===void 0?r:e.level},ZN=class{constructor(e){return gZ(e)}},gZ=t=>{let e={};return m9e(e,t),e.template=(...r)=>E9e(e.template,...r),Object.setPrototypeOf(e,UD.prototype),Object.setPrototypeOf(e.template,e),e.template.constructor=()=>{throw new Error("`chalk.constructor()` is deprecated. Use `new chalk.Instance()` instead.")},e.template.Instance=ZN,e.template};function UD(t){return gZ(t)}for(let[t,e]of Object.entries(Lw))$y[t]={get(){let r=KD(this,$N(e.open,e.close,this._styler),this._isEmpty);return Object.defineProperty(this,t,{value:r}),r}};$y.visible={get(){let t=KD(this,this._styler,!0);return Object.defineProperty(this,"visible",{value:t}),t}};var pZ=["rgb","hex","keyword","hsl","hsv","hwb","ansi","ansi256"];for(let t of pZ)$y[t]={get(){let{level:e}=this;return function(...r){let o=$N(Lw.color[fZ[e]][t](...r),Lw.color.close,this._styler);return KD(this,o,this._isEmpty)}}};for(let t of pZ){let e="bg"+t[0].toUpperCase()+t.slice(1);$y[e]={get(){let{level:r}=this;return function(...o){let a=$N(Lw.bgColor[fZ[r]][t](...o),Lw.bgColor.close,this._styler);return KD(this,a,this._isEmpty)}}}}var y9e=Object.defineProperties(()=>{},{...$y,level:{enumerable:!0,get(){return this._generator.level},set(t){this._generator.level=t}}}),$N=(t,e,r)=>{let o,a;return r===void 0?(o=t,a=e):(o=r.openAll+t,a=e+r.closeAll),{open:t,close:e,openAll:o,closeAll:a,parent:r}},KD=(t,e,r)=>{let o=(...a)=>C9e(o,a.length===1?""+a[0]:a.join(" "));return o.__proto__=y9e,o._generator=t,o._styler=e,o._isEmpty=r,o},C9e=(t,e)=>{if(t.level<=0||!e)return t._isEmpty?"":e;let r=t._styler;if(r===void 0)return e;let{openAll:o,closeAll:a}=r;if(e.indexOf("\x1B")!==-1)for(;r!==void 0;)e=h9e(e,r.close,r.open),r=r.parent;let n=e.indexOf(` -`);return n!==-1&&(e=d9e(e,a,o,n)),o+e+a},VN,E9e=(t,...e)=>{let[r]=e;if(!Array.isArray(r))return e.join(" ");let o=e.slice(1),a=[r.raw[0]];for(let n=1;n{"use strict";hl.isInteger=t=>typeof t=="number"?Number.isInteger(t):typeof t=="string"&&t.trim()!==""?Number.isInteger(Number(t)):!1;hl.find=(t,e)=>t.nodes.find(r=>r.type===e);hl.exceedsLimit=(t,e,r=1,o)=>o===!1||!hl.isInteger(t)||!hl.isInteger(e)?!1:(Number(e)-Number(t))/Number(r)>=o;hl.escapeNode=(t,e=0,r)=>{let o=t.nodes[e];!o||(r&&o.type===r||o.type==="open"||o.type==="close")&&o.escaped!==!0&&(o.value="\\"+o.value,o.escaped=!0)};hl.encloseBrace=t=>t.type!=="brace"?!1:t.commas>>0+t.ranges>>0===0?(t.invalid=!0,!0):!1;hl.isInvalidBrace=t=>t.type!=="brace"?!1:t.invalid===!0||t.dollar?!0:t.commas>>0+t.ranges>>0===0||t.open!==!0||t.close!==!0?(t.invalid=!0,!0):!1;hl.isOpenOrClose=t=>t.type==="open"||t.type==="close"?!0:t.open===!0||t.close===!0;hl.reduce=t=>t.reduce((e,r)=>(r.type==="text"&&e.push(r.value),r.type==="range"&&(r.type="text"),e),[]);hl.flatten=(...t)=>{let e=[],r=o=>{for(let a=0;a{"use strict";var dZ=_D();mZ.exports=(t,e={})=>{let r=(o,a={})=>{let n=e.escapeInvalid&&dZ.isInvalidBrace(a),c=o.invalid===!0&&e.escapeInvalid===!0,f="";if(o.value)return(n||c)&&dZ.isOpenOrClose(o)?"\\"+o.value:o.value;if(o.value)return o.value;if(o.nodes)for(let g of o.nodes)f+=r(g);return f};return r(t)}});var CZ=_((Ubt,yZ)=>{"use strict";yZ.exports=function(t){return typeof t=="number"?t-t===0:typeof t=="string"&&t.trim()!==""?Number.isFinite?Number.isFinite(+t):isFinite(+t):!1}});var kZ=_((Kbt,SZ)=>{"use strict";var EZ=CZ(),Md=(t,e,r)=>{if(EZ(t)===!1)throw new TypeError("toRegexRange: expected the first argument to be a number");if(e===void 0||t===e)return String(t);if(EZ(e)===!1)throw new TypeError("toRegexRange: expected the second argument to be a number.");let o={relaxZeros:!0,...r};typeof o.strictZeros=="boolean"&&(o.relaxZeros=o.strictZeros===!1);let a=String(o.relaxZeros),n=String(o.shorthand),c=String(o.capture),f=String(o.wrap),g=t+":"+e+"="+a+n+c+f;if(Md.cache.hasOwnProperty(g))return Md.cache[g].result;let p=Math.min(t,e),E=Math.max(t,e);if(Math.abs(p-E)===1){let N=t+"|"+e;return o.capture?`(${N})`:o.wrap===!1?N:`(?:${N})`}let B=DZ(t)||DZ(e),Q={min:t,max:e,a:p,b:E},x=[],C=[];if(B&&(Q.isPadded=B,Q.maxLen=String(Q.max).length),p<0){let N=E<0?Math.abs(E):1;C=IZ(N,Math.abs(p),Q,o),p=Q.a=0}return E>=0&&(x=IZ(p,E,Q,o)),Q.negatives=C,Q.positives=x,Q.result=I9e(C,x,o),o.capture===!0?Q.result=`(${Q.result})`:o.wrap!==!1&&x.length+C.length>1&&(Q.result=`(?:${Q.result})`),Md.cache[g]=Q,Q.result};function I9e(t,e,r){let o=tM(t,e,"-",!1,r)||[],a=tM(e,t,"",!1,r)||[],n=tM(t,e,"-?",!0,r)||[];return o.concat(n).concat(a).join("|")}function w9e(t,e){let r=1,o=1,a=BZ(t,r),n=new Set([e]);for(;t<=a&&a<=e;)n.add(a),r+=1,a=BZ(t,r);for(a=QZ(e+1,o)-1;t1&&f.count.pop(),f.count.push(E.count[0]),f.string=f.pattern+vZ(f.count),c=p+1;continue}r.isPadded&&(B=S9e(p,r,o)),E.string=B+E.pattern+vZ(E.count),n.push(E),c=p+1,f=E}return n}function tM(t,e,r,o,a){let n=[];for(let c of t){let{string:f}=c;!o&&!wZ(e,"string",f)&&n.push(r+f),o&&wZ(e,"string",f)&&n.push(r+f)}return n}function Q9e(t,e){let r=[];for(let o=0;oe?1:e>t?-1:0}function wZ(t,e,r){return t.some(o=>o[e]===r)}function BZ(t,e){return Number(String(t).slice(0,-e)+"9".repeat(e))}function QZ(t,e){return t-t%Math.pow(10,e)}function vZ(t){let[e=0,r=""]=t;return r||e>1?`{${e+(r?","+r:"")}}`:""}function D9e(t,e,r){return`[${t}${e-t===1?"":"-"}${e}]`}function DZ(t){return/^-?(0+)\d/.test(t)}function S9e(t,e,r){if(!e.isPadded)return t;let o=Math.abs(e.maxLen-String(t).length),a=r.relaxZeros!==!1;switch(o){case 0:return"";case 1:return a?"0?":"0";case 2:return a?"0{0,2}":"00";default:return a?`0{0,${o}}`:`0{${o}}`}}Md.cache={};Md.clearCache=()=>Md.cache={};SZ.exports=Md});var iM=_((_bt,MZ)=>{"use strict";var k9e=Ie("util"),bZ=kZ(),xZ=t=>t!==null&&typeof t=="object"&&!Array.isArray(t),x9e=t=>e=>t===!0?Number(e):String(e),rM=t=>typeof t=="number"||typeof t=="string"&&t!=="",Uw=t=>Number.isInteger(+t),nM=t=>{let e=`${t}`,r=-1;if(e[0]==="-"&&(e=e.slice(1)),e==="0")return!1;for(;e[++r]==="0";);return r>0},P9e=(t,e,r)=>typeof t=="string"||typeof e=="string"?!0:r.stringify===!0,b9e=(t,e,r)=>{if(e>0){let o=t[0]==="-"?"-":"";o&&(t=t.slice(1)),t=o+t.padStart(o?e-1:e,"0")}return r===!1?String(t):t},PZ=(t,e)=>{let r=t[0]==="-"?"-":"";for(r&&(t=t.slice(1),e--);t.length{t.negatives.sort((c,f)=>cf?1:0),t.positives.sort((c,f)=>cf?1:0);let r=e.capture?"":"?:",o="",a="",n;return t.positives.length&&(o=t.positives.join("|")),t.negatives.length&&(a=`-(${r}${t.negatives.join("|")})`),o&&a?n=`${o}|${a}`:n=o||a,e.wrap?`(${r}${n})`:n},FZ=(t,e,r,o)=>{if(r)return bZ(t,e,{wrap:!1,...o});let a=String.fromCharCode(t);if(t===e)return a;let n=String.fromCharCode(e);return`[${a}-${n}]`},RZ=(t,e,r)=>{if(Array.isArray(t)){let o=r.wrap===!0,a=r.capture?"":"?:";return o?`(${a}${t.join("|")})`:t.join("|")}return bZ(t,e,r)},TZ=(...t)=>new RangeError("Invalid range arguments: "+k9e.inspect(...t)),NZ=(t,e,r)=>{if(r.strictRanges===!0)throw TZ([t,e]);return[]},R9e=(t,e)=>{if(e.strictRanges===!0)throw new TypeError(`Expected step "${t}" to be a number`);return[]},T9e=(t,e,r=1,o={})=>{let a=Number(t),n=Number(e);if(!Number.isInteger(a)||!Number.isInteger(n)){if(o.strictRanges===!0)throw TZ([t,e]);return[]}a===0&&(a=0),n===0&&(n=0);let c=a>n,f=String(t),g=String(e),p=String(r);r=Math.max(Math.abs(r),1);let E=nM(f)||nM(g)||nM(p),B=E?Math.max(f.length,g.length,p.length):0,Q=E===!1&&P9e(t,e,o)===!1,x=o.transform||x9e(Q);if(o.toRegex&&r===1)return FZ(PZ(t,B),PZ(e,B),!0,o);let C={negatives:[],positives:[]},N=X=>C[X<0?"negatives":"positives"].push(Math.abs(X)),U=[],H=0;for(;c?a>=n:a<=n;)o.toRegex===!0&&r>1?N(a):U.push(b9e(x(a,H),B,Q)),a=c?a-r:a+r,H++;return o.toRegex===!0?r>1?F9e(C,o):RZ(U,null,{wrap:!1,...o}):U},N9e=(t,e,r=1,o={})=>{if(!Uw(t)&&t.length>1||!Uw(e)&&e.length>1)return NZ(t,e,o);let a=o.transform||(Q=>String.fromCharCode(Q)),n=`${t}`.charCodeAt(0),c=`${e}`.charCodeAt(0),f=n>c,g=Math.min(n,c),p=Math.max(n,c);if(o.toRegex&&r===1)return FZ(g,p,!1,o);let E=[],B=0;for(;f?n>=c:n<=c;)E.push(a(n,B)),n=f?n-r:n+r,B++;return o.toRegex===!0?RZ(E,null,{wrap:!1,options:o}):E},qD=(t,e,r,o={})=>{if(e==null&&rM(t))return[t];if(!rM(t)||!rM(e))return NZ(t,e,o);if(typeof r=="function")return qD(t,e,1,{transform:r});if(xZ(r))return qD(t,e,0,r);let a={...o};return a.capture===!0&&(a.wrap=!0),r=r||a.step||1,Uw(r)?Uw(t)&&Uw(e)?T9e(t,e,r,a):N9e(t,e,Math.max(Math.abs(r),1),a):r!=null&&!xZ(r)?R9e(r,a):qD(t,e,1,r)};MZ.exports=qD});var UZ=_((Hbt,OZ)=>{"use strict";var M9e=iM(),LZ=_D(),L9e=(t,e={})=>{let r=(o,a={})=>{let n=LZ.isInvalidBrace(a),c=o.invalid===!0&&e.escapeInvalid===!0,f=n===!0||c===!0,g=e.escapeInvalid===!0?"\\":"",p="";if(o.isOpen===!0||o.isClose===!0)return g+o.value;if(o.type==="open")return f?g+o.value:"(";if(o.type==="close")return f?g+o.value:")";if(o.type==="comma")return o.prev.type==="comma"?"":f?o.value:"|";if(o.value)return o.value;if(o.nodes&&o.ranges>0){let E=LZ.reduce(o.nodes),B=M9e(...E,{...e,wrap:!1,toRegex:!0});if(B.length!==0)return E.length>1&&B.length>1?`(${B})`:B}if(o.nodes)for(let E of o.nodes)p+=r(E,o);return p};return r(t)};OZ.exports=L9e});var HZ=_((qbt,_Z)=>{"use strict";var O9e=iM(),KZ=HD(),eC=_D(),Ld=(t="",e="",r=!1)=>{let o=[];if(t=[].concat(t),e=[].concat(e),!e.length)return t;if(!t.length)return r?eC.flatten(e).map(a=>`{${a}}`):e;for(let a of t)if(Array.isArray(a))for(let n of a)o.push(Ld(n,e,r));else for(let n of e)r===!0&&typeof n=="string"&&(n=`{${n}}`),o.push(Array.isArray(n)?Ld(a,n,r):a+n);return eC.flatten(o)},U9e=(t,e={})=>{let r=e.rangeLimit===void 0?1e3:e.rangeLimit,o=(a,n={})=>{a.queue=[];let c=n,f=n.queue;for(;c.type!=="brace"&&c.type!=="root"&&c.parent;)c=c.parent,f=c.queue;if(a.invalid||a.dollar){f.push(Ld(f.pop(),KZ(a,e)));return}if(a.type==="brace"&&a.invalid!==!0&&a.nodes.length===2){f.push(Ld(f.pop(),["{}"]));return}if(a.nodes&&a.ranges>0){let B=eC.reduce(a.nodes);if(eC.exceedsLimit(...B,e.step,r))throw new RangeError("expanded array length exceeds range limit. Use options.rangeLimit to increase or disable the limit.");let Q=O9e(...B,e);Q.length===0&&(Q=KZ(a,e)),f.push(Ld(f.pop(),Q)),a.nodes=[];return}let g=eC.encloseBrace(a),p=a.queue,E=a;for(;E.type!=="brace"&&E.type!=="root"&&E.parent;)E=E.parent,p=E.queue;for(let B=0;B{"use strict";qZ.exports={MAX_LENGTH:1024*64,CHAR_0:"0",CHAR_9:"9",CHAR_UPPERCASE_A:"A",CHAR_LOWERCASE_A:"a",CHAR_UPPERCASE_Z:"Z",CHAR_LOWERCASE_Z:"z",CHAR_LEFT_PARENTHESES:"(",CHAR_RIGHT_PARENTHESES:")",CHAR_ASTERISK:"*",CHAR_AMPERSAND:"&",CHAR_AT:"@",CHAR_BACKSLASH:"\\",CHAR_BACKTICK:"`",CHAR_CARRIAGE_RETURN:"\r",CHAR_CIRCUMFLEX_ACCENT:"^",CHAR_COLON:":",CHAR_COMMA:",",CHAR_DOLLAR:"$",CHAR_DOT:".",CHAR_DOUBLE_QUOTE:'"',CHAR_EQUAL:"=",CHAR_EXCLAMATION_MARK:"!",CHAR_FORM_FEED:"\f",CHAR_FORWARD_SLASH:"/",CHAR_HASH:"#",CHAR_HYPHEN_MINUS:"-",CHAR_LEFT_ANGLE_BRACKET:"<",CHAR_LEFT_CURLY_BRACE:"{",CHAR_LEFT_SQUARE_BRACKET:"[",CHAR_LINE_FEED:` -`,CHAR_NO_BREAK_SPACE:"\xA0",CHAR_PERCENT:"%",CHAR_PLUS:"+",CHAR_QUESTION_MARK:"?",CHAR_RIGHT_ANGLE_BRACKET:">",CHAR_RIGHT_CURLY_BRACE:"}",CHAR_RIGHT_SQUARE_BRACKET:"]",CHAR_SEMICOLON:";",CHAR_SINGLE_QUOTE:"'",CHAR_SPACE:" ",CHAR_TAB:" ",CHAR_UNDERSCORE:"_",CHAR_VERTICAL_LINE:"|",CHAR_ZERO_WIDTH_NOBREAK_SPACE:"\uFEFF"}});var VZ=_((jbt,JZ)=>{"use strict";var K9e=HD(),{MAX_LENGTH:jZ,CHAR_BACKSLASH:sM,CHAR_BACKTICK:_9e,CHAR_COMMA:H9e,CHAR_DOT:q9e,CHAR_LEFT_PARENTHESES:G9e,CHAR_RIGHT_PARENTHESES:j9e,CHAR_LEFT_CURLY_BRACE:Y9e,CHAR_RIGHT_CURLY_BRACE:W9e,CHAR_LEFT_SQUARE_BRACKET:YZ,CHAR_RIGHT_SQUARE_BRACKET:WZ,CHAR_DOUBLE_QUOTE:J9e,CHAR_SINGLE_QUOTE:V9e,CHAR_NO_BREAK_SPACE:z9e,CHAR_ZERO_WIDTH_NOBREAK_SPACE:X9e}=GZ(),Z9e=(t,e={})=>{if(typeof t!="string")throw new TypeError("Expected a string");let r=e||{},o=typeof r.maxLength=="number"?Math.min(jZ,r.maxLength):jZ;if(t.length>o)throw new SyntaxError(`Input length (${t.length}), exceeds max characters (${o})`);let a={type:"root",input:t,nodes:[]},n=[a],c=a,f=a,g=0,p=t.length,E=0,B=0,Q,x={},C=()=>t[E++],N=U=>{if(U.type==="text"&&f.type==="dot"&&(f.type="text"),f&&f.type==="text"&&U.type==="text"){f.value+=U.value;return}return c.nodes.push(U),U.parent=c,U.prev=f,f=U,U};for(N({type:"bos"});E0){if(c.ranges>0){c.ranges=0;let U=c.nodes.shift();c.nodes=[U,{type:"text",value:K9e(c)}]}N({type:"comma",value:Q}),c.commas++;continue}if(Q===q9e&&B>0&&c.commas===0){let U=c.nodes;if(B===0||U.length===0){N({type:"text",value:Q});continue}if(f.type==="dot"){if(c.range=[],f.value+=Q,f.type="range",c.nodes.length!==3&&c.nodes.length!==5){c.invalid=!0,c.ranges=0,f.type="text";continue}c.ranges++,c.args=[];continue}if(f.type==="range"){U.pop();let H=U[U.length-1];H.value+=f.value+Q,f=H,c.ranges--;continue}N({type:"dot",value:Q});continue}N({type:"text",value:Q})}do if(c=n.pop(),c.type!=="root"){c.nodes.forEach(X=>{X.nodes||(X.type==="open"&&(X.isOpen=!0),X.type==="close"&&(X.isClose=!0),X.nodes||(X.type="text"),X.invalid=!0)});let U=n[n.length-1],H=U.nodes.indexOf(c);U.nodes.splice(H,1,...c.nodes)}while(n.length>0);return N({type:"eos"}),a};JZ.exports=Z9e});var ZZ=_((Ybt,XZ)=>{"use strict";var zZ=HD(),$9e=UZ(),eYe=HZ(),tYe=VZ(),vA=(t,e={})=>{let r=[];if(Array.isArray(t))for(let o of t){let a=vA.create(o,e);Array.isArray(a)?r.push(...a):r.push(a)}else r=[].concat(vA.create(t,e));return e&&e.expand===!0&&e.nodupes===!0&&(r=[...new Set(r)]),r};vA.parse=(t,e={})=>tYe(t,e);vA.stringify=(t,e={})=>zZ(typeof t=="string"?vA.parse(t,e):t,e);vA.compile=(t,e={})=>(typeof t=="string"&&(t=vA.parse(t,e)),$9e(t,e));vA.expand=(t,e={})=>{typeof t=="string"&&(t=vA.parse(t,e));let r=eYe(t,e);return e.noempty===!0&&(r=r.filter(Boolean)),e.nodupes===!0&&(r=[...new Set(r)]),r};vA.create=(t,e={})=>t===""||t.length<3?[t]:e.expand!==!0?vA.compile(t,e):vA.expand(t,e);XZ.exports=vA});var Kw=_((Wbt,n$)=>{"use strict";var rYe=Ie("path"),hu="\\\\/",$Z=`[^${hu}]`,Gf="\\.",nYe="\\+",iYe="\\?",GD="\\/",sYe="(?=.)",e$="[^/]",oM=`(?:${GD}|$)`,t$=`(?:^|${GD})`,aM=`${Gf}{1,2}${oM}`,oYe=`(?!${Gf})`,aYe=`(?!${t$}${aM})`,AYe=`(?!${Gf}{0,1}${oM})`,lYe=`(?!${aM})`,cYe=`[^.${GD}]`,uYe=`${e$}*?`,r$={DOT_LITERAL:Gf,PLUS_LITERAL:nYe,QMARK_LITERAL:iYe,SLASH_LITERAL:GD,ONE_CHAR:sYe,QMARK:e$,END_ANCHOR:oM,DOTS_SLASH:aM,NO_DOT:oYe,NO_DOTS:aYe,NO_DOT_SLASH:AYe,NO_DOTS_SLASH:lYe,QMARK_NO_DOT:cYe,STAR:uYe,START_ANCHOR:t$},fYe={...r$,SLASH_LITERAL:`[${hu}]`,QMARK:$Z,STAR:`${$Z}*?`,DOTS_SLASH:`${Gf}{1,2}(?:[${hu}]|$)`,NO_DOT:`(?!${Gf})`,NO_DOTS:`(?!(?:^|[${hu}])${Gf}{1,2}(?:[${hu}]|$))`,NO_DOT_SLASH:`(?!${Gf}{0,1}(?:[${hu}]|$))`,NO_DOTS_SLASH:`(?!${Gf}{1,2}(?:[${hu}]|$))`,QMARK_NO_DOT:`[^.${hu}]`,START_ANCHOR:`(?:^|[${hu}])`,END_ANCHOR:`(?:[${hu}]|$)`},gYe={alnum:"a-zA-Z0-9",alpha:"a-zA-Z",ascii:"\\x00-\\x7F",blank:" \\t",cntrl:"\\x00-\\x1F\\x7F",digit:"0-9",graph:"\\x21-\\x7E",lower:"a-z",print:"\\x20-\\x7E ",punct:"\\-!\"#$%&'()\\*+,./:;<=>?@[\\]^_`{|}~",space:" \\t\\r\\n\\v\\f",upper:"A-Z",word:"A-Za-z0-9_",xdigit:"A-Fa-f0-9"};n$.exports={MAX_LENGTH:1024*64,POSIX_REGEX_SOURCE:gYe,REGEX_BACKSLASH:/\\(?![*+?^${}(|)[\]])/g,REGEX_NON_SPECIAL_CHARS:/^[^@![\].,$*+?^{}()|\\/]+/,REGEX_SPECIAL_CHARS:/[-*+?.^${}(|)[\]]/,REGEX_SPECIAL_CHARS_BACKREF:/(\\?)((\W)(\3*))/g,REGEX_SPECIAL_CHARS_GLOBAL:/([-*+?.^${}(|)[\]])/g,REGEX_REMOVE_BACKSLASH:/(?:\[.*?[^\\]\]|\\(?=.))/g,REPLACEMENTS:{"***":"*","**/**":"**","**/**/**":"**"},CHAR_0:48,CHAR_9:57,CHAR_UPPERCASE_A:65,CHAR_LOWERCASE_A:97,CHAR_UPPERCASE_Z:90,CHAR_LOWERCASE_Z:122,CHAR_LEFT_PARENTHESES:40,CHAR_RIGHT_PARENTHESES:41,CHAR_ASTERISK:42,CHAR_AMPERSAND:38,CHAR_AT:64,CHAR_BACKWARD_SLASH:92,CHAR_CARRIAGE_RETURN:13,CHAR_CIRCUMFLEX_ACCENT:94,CHAR_COLON:58,CHAR_COMMA:44,CHAR_DOT:46,CHAR_DOUBLE_QUOTE:34,CHAR_EQUAL:61,CHAR_EXCLAMATION_MARK:33,CHAR_FORM_FEED:12,CHAR_FORWARD_SLASH:47,CHAR_GRAVE_ACCENT:96,CHAR_HASH:35,CHAR_HYPHEN_MINUS:45,CHAR_LEFT_ANGLE_BRACKET:60,CHAR_LEFT_CURLY_BRACE:123,CHAR_LEFT_SQUARE_BRACKET:91,CHAR_LINE_FEED:10,CHAR_NO_BREAK_SPACE:160,CHAR_PERCENT:37,CHAR_PLUS:43,CHAR_QUESTION_MARK:63,CHAR_RIGHT_ANGLE_BRACKET:62,CHAR_RIGHT_CURLY_BRACE:125,CHAR_RIGHT_SQUARE_BRACKET:93,CHAR_SEMICOLON:59,CHAR_SINGLE_QUOTE:39,CHAR_SPACE:32,CHAR_TAB:9,CHAR_UNDERSCORE:95,CHAR_VERTICAL_LINE:124,CHAR_ZERO_WIDTH_NOBREAK_SPACE:65279,SEP:rYe.sep,extglobChars(t){return{"!":{type:"negate",open:"(?:(?!(?:",close:`))${t.STAR})`},"?":{type:"qmark",open:"(?:",close:")?"},"+":{type:"plus",open:"(?:",close:")+"},"*":{type:"star",open:"(?:",close:")*"},"@":{type:"at",open:"(?:",close:")"}}},globChars(t){return t===!0?fYe:r$}}});var _w=_(Wa=>{"use strict";var pYe=Ie("path"),hYe=process.platform==="win32",{REGEX_BACKSLASH:dYe,REGEX_REMOVE_BACKSLASH:mYe,REGEX_SPECIAL_CHARS:yYe,REGEX_SPECIAL_CHARS_GLOBAL:CYe}=Kw();Wa.isObject=t=>t!==null&&typeof t=="object"&&!Array.isArray(t);Wa.hasRegexChars=t=>yYe.test(t);Wa.isRegexChar=t=>t.length===1&&Wa.hasRegexChars(t);Wa.escapeRegex=t=>t.replace(CYe,"\\$1");Wa.toPosixSlashes=t=>t.replace(dYe,"/");Wa.removeBackslashes=t=>t.replace(mYe,e=>e==="\\"?"":e);Wa.supportsLookbehinds=()=>{let t=process.version.slice(1).split(".").map(Number);return t.length===3&&t[0]>=9||t[0]===8&&t[1]>=10};Wa.isWindows=t=>t&&typeof t.windows=="boolean"?t.windows:hYe===!0||pYe.sep==="\\";Wa.escapeLast=(t,e,r)=>{let o=t.lastIndexOf(e,r);return o===-1?t:t[o-1]==="\\"?Wa.escapeLast(t,e,o-1):`${t.slice(0,o)}\\${t.slice(o)}`};Wa.removePrefix=(t,e={})=>{let r=t;return r.startsWith("./")&&(r=r.slice(2),e.prefix="./"),r};Wa.wrapOutput=(t,e={},r={})=>{let o=r.contains?"":"^",a=r.contains?"":"$",n=`${o}(?:${t})${a}`;return e.negated===!0&&(n=`(?:^(?!${n}).*$)`),n}});var u$=_((Vbt,c$)=>{"use strict";var i$=_w(),{CHAR_ASTERISK:AM,CHAR_AT:EYe,CHAR_BACKWARD_SLASH:Hw,CHAR_COMMA:IYe,CHAR_DOT:lM,CHAR_EXCLAMATION_MARK:cM,CHAR_FORWARD_SLASH:l$,CHAR_LEFT_CURLY_BRACE:uM,CHAR_LEFT_PARENTHESES:fM,CHAR_LEFT_SQUARE_BRACKET:wYe,CHAR_PLUS:BYe,CHAR_QUESTION_MARK:s$,CHAR_RIGHT_CURLY_BRACE:QYe,CHAR_RIGHT_PARENTHESES:o$,CHAR_RIGHT_SQUARE_BRACKET:vYe}=Kw(),a$=t=>t===l$||t===Hw,A$=t=>{t.isPrefix!==!0&&(t.depth=t.isGlobstar?1/0:1)},DYe=(t,e)=>{let r=e||{},o=t.length-1,a=r.parts===!0||r.scanToEnd===!0,n=[],c=[],f=[],g=t,p=-1,E=0,B=0,Q=!1,x=!1,C=!1,N=!1,U=!1,H=!1,X=!1,ie=!1,fe=!1,ye=!1,Qe=0,Pe,pe,Ee={value:"",depth:0,isGlob:!1},ke=()=>p>=o,h=()=>g.charCodeAt(p+1),Ke=()=>(Pe=pe,g.charCodeAt(++p));for(;p0&&(Be=g.slice(0,E),g=g.slice(E),B-=E),Ce&&C===!0&&B>0?(Ce=g.slice(0,B),le=g.slice(B)):C===!0?(Ce="",le=g):Ce=g,Ce&&Ce!==""&&Ce!=="/"&&Ce!==g&&a$(Ce.charCodeAt(Ce.length-1))&&(Ce=Ce.slice(0,-1)),r.unescape===!0&&(le&&(le=i$.removeBackslashes(le)),Ce&&X===!0&&(Ce=i$.removeBackslashes(Ce)));let re={prefix:Be,input:t,start:E,base:Ce,glob:le,isBrace:Q,isBracket:x,isGlob:C,isExtglob:N,isGlobstar:U,negated:ie,negatedExtglob:fe};if(r.tokens===!0&&(re.maxDepth=0,a$(pe)||c.push(Ee),re.tokens=c),r.parts===!0||r.tokens===!0){let Se;for(let Ue=0;Ue{"use strict";var jD=Kw(),DA=_w(),{MAX_LENGTH:YD,POSIX_REGEX_SOURCE:SYe,REGEX_NON_SPECIAL_CHARS:kYe,REGEX_SPECIAL_CHARS_BACKREF:xYe,REPLACEMENTS:f$}=jD,PYe=(t,e)=>{if(typeof e.expandRange=="function")return e.expandRange(...t,e);t.sort();let r=`[${t.join("-")}]`;try{new RegExp(r)}catch{return t.map(a=>DA.escapeRegex(a)).join("..")}return r},tC=(t,e)=>`Missing ${t}: "${e}" - use "\\\\${e}" to match literal characters`,g$=(t,e)=>{if(typeof t!="string")throw new TypeError("Expected a string");t=f$[t]||t;let r={...e},o=typeof r.maxLength=="number"?Math.min(YD,r.maxLength):YD,a=t.length;if(a>o)throw new SyntaxError(`Input length: ${a}, exceeds maximum allowed length: ${o}`);let n={type:"bos",value:"",output:r.prepend||""},c=[n],f=r.capture?"":"?:",g=DA.isWindows(e),p=jD.globChars(g),E=jD.extglobChars(p),{DOT_LITERAL:B,PLUS_LITERAL:Q,SLASH_LITERAL:x,ONE_CHAR:C,DOTS_SLASH:N,NO_DOT:U,NO_DOT_SLASH:H,NO_DOTS_SLASH:X,QMARK:ie,QMARK_NO_DOT:fe,STAR:ye,START_ANCHOR:Qe}=p,Pe=k=>`(${f}(?:(?!${Qe}${k.dot?N:B}).)*?)`,pe=r.dot?"":U,Ee=r.dot?ie:fe,ke=r.bash===!0?Pe(r):ye;r.capture&&(ke=`(${ke})`),typeof r.noext=="boolean"&&(r.noextglob=r.noext);let h={input:t,index:-1,start:0,dot:r.dot===!0,consumed:"",output:"",prefix:"",backtrack:!1,negated:!1,brackets:0,braces:0,parens:0,quotes:0,globstar:!1,tokens:c};t=DA.removePrefix(t,h),a=t.length;let Ke=[],Ce=[],Be=[],le=n,re,Se=()=>h.index===a-1,Ue=h.peek=(k=1)=>t[h.index+k],dt=h.advance=()=>t[++h.index]||"",q=()=>t.slice(h.index+1),Qt=(k="",I=0)=>{h.consumed+=k,h.index+=I},He=k=>{h.output+=k.output!=null?k.output:k.value,Qt(k.value)},qe=()=>{let k=1;for(;Ue()==="!"&&(Ue(2)!=="("||Ue(3)==="?");)dt(),h.start++,k++;return k%2===0?!1:(h.negated=!0,h.start++,!0)},Fe=k=>{h[k]++,Be.push(k)},je=k=>{h[k]--,Be.pop()},We=k=>{if(le.type==="globstar"){let I=h.braces>0&&(k.type==="comma"||k.type==="brace"),S=k.extglob===!0||Ke.length&&(k.type==="pipe"||k.type==="paren");k.type!=="slash"&&k.type!=="paren"&&!I&&!S&&(h.output=h.output.slice(0,-le.output.length),le.type="star",le.value="*",le.output=ke,h.output+=le.output)}if(Ke.length&&k.type!=="paren"&&(Ke[Ke.length-1].inner+=k.value),(k.value||k.output)&&He(k),le&&le.type==="text"&&k.type==="text"){le.value+=k.value,le.output=(le.output||"")+k.value;return}k.prev=le,c.push(k),le=k},pt=(k,I)=>{let S={...E[I],conditions:1,inner:""};S.prev=le,S.parens=h.parens,S.output=h.output;let y=(r.capture?"(":"")+S.open;Fe("parens"),We({type:k,value:I,output:h.output?"":C}),We({type:"paren",extglob:!0,value:dt(),output:y}),Ke.push(S)},Oe=k=>{let I=k.close+(r.capture?")":""),S;if(k.type==="negate"){let y=ke;k.inner&&k.inner.length>1&&k.inner.includes("/")&&(y=Pe(r)),(y!==ke||Se()||/^\)+$/.test(q()))&&(I=k.close=`)$))${y}`),k.inner.includes("*")&&(S=q())&&/^\.[^\\/.]+$/.test(S)&&(I=k.close=`)${S})${y})`),k.prev.type==="bos"&&(h.negatedExtglob=!0)}We({type:"paren",extglob:!0,value:re,output:I}),je("parens")};if(r.fastpaths!==!1&&!/(^[*!]|[/()[\]{}"])/.test(t)){let k=!1,I=t.replace(xYe,(S,y,R,Z,te,ne)=>Z==="\\"?(k=!0,S):Z==="?"?y?y+Z+(te?ie.repeat(te.length):""):ne===0?Ee+(te?ie.repeat(te.length):""):ie.repeat(R.length):Z==="."?B.repeat(R.length):Z==="*"?y?y+Z+(te?ke:""):ke:y?S:`\\${S}`);return k===!0&&(r.unescape===!0?I=I.replace(/\\/g,""):I=I.replace(/\\+/g,S=>S.length%2===0?"\\\\":S?"\\":"")),I===t&&r.contains===!0?(h.output=t,h):(h.output=DA.wrapOutput(I,h,e),h)}for(;!Se();){if(re=dt(),re==="\0")continue;if(re==="\\"){let S=Ue();if(S==="/"&&r.bash!==!0||S==="."||S===";")continue;if(!S){re+="\\",We({type:"text",value:re});continue}let y=/^\\+/.exec(q()),R=0;if(y&&y[0].length>2&&(R=y[0].length,h.index+=R,R%2!==0&&(re+="\\")),r.unescape===!0?re=dt():re+=dt(),h.brackets===0){We({type:"text",value:re});continue}}if(h.brackets>0&&(re!=="]"||le.value==="["||le.value==="[^")){if(r.posix!==!1&&re===":"){let S=le.value.slice(1);if(S.includes("[")&&(le.posix=!0,S.includes(":"))){let y=le.value.lastIndexOf("["),R=le.value.slice(0,y),Z=le.value.slice(y+2),te=SYe[Z];if(te){le.value=R+te,h.backtrack=!0,dt(),!n.output&&c.indexOf(le)===1&&(n.output=C);continue}}}(re==="["&&Ue()!==":"||re==="-"&&Ue()==="]")&&(re=`\\${re}`),re==="]"&&(le.value==="["||le.value==="[^")&&(re=`\\${re}`),r.posix===!0&&re==="!"&&le.value==="["&&(re="^"),le.value+=re,He({value:re});continue}if(h.quotes===1&&re!=='"'){re=DA.escapeRegex(re),le.value+=re,He({value:re});continue}if(re==='"'){h.quotes=h.quotes===1?0:1,r.keepQuotes===!0&&We({type:"text",value:re});continue}if(re==="("){Fe("parens"),We({type:"paren",value:re});continue}if(re===")"){if(h.parens===0&&r.strictBrackets===!0)throw new SyntaxError(tC("opening","("));let S=Ke[Ke.length-1];if(S&&h.parens===S.parens+1){Oe(Ke.pop());continue}We({type:"paren",value:re,output:h.parens?")":"\\)"}),je("parens");continue}if(re==="["){if(r.nobracket===!0||!q().includes("]")){if(r.nobracket!==!0&&r.strictBrackets===!0)throw new SyntaxError(tC("closing","]"));re=`\\${re}`}else Fe("brackets");We({type:"bracket",value:re});continue}if(re==="]"){if(r.nobracket===!0||le&&le.type==="bracket"&&le.value.length===1){We({type:"text",value:re,output:`\\${re}`});continue}if(h.brackets===0){if(r.strictBrackets===!0)throw new SyntaxError(tC("opening","["));We({type:"text",value:re,output:`\\${re}`});continue}je("brackets");let S=le.value.slice(1);if(le.posix!==!0&&S[0]==="^"&&!S.includes("/")&&(re=`/${re}`),le.value+=re,He({value:re}),r.literalBrackets===!1||DA.hasRegexChars(S))continue;let y=DA.escapeRegex(le.value);if(h.output=h.output.slice(0,-le.value.length),r.literalBrackets===!0){h.output+=y,le.value=y;continue}le.value=`(${f}${y}|${le.value})`,h.output+=le.value;continue}if(re==="{"&&r.nobrace!==!0){Fe("braces");let S={type:"brace",value:re,output:"(",outputIndex:h.output.length,tokensIndex:h.tokens.length};Ce.push(S),We(S);continue}if(re==="}"){let S=Ce[Ce.length-1];if(r.nobrace===!0||!S){We({type:"text",value:re,output:re});continue}let y=")";if(S.dots===!0){let R=c.slice(),Z=[];for(let te=R.length-1;te>=0&&(c.pop(),R[te].type!=="brace");te--)R[te].type!=="dots"&&Z.unshift(R[te].value);y=PYe(Z,r),h.backtrack=!0}if(S.comma!==!0&&S.dots!==!0){let R=h.output.slice(0,S.outputIndex),Z=h.tokens.slice(S.tokensIndex);S.value=S.output="\\{",re=y="\\}",h.output=R;for(let te of Z)h.output+=te.output||te.value}We({type:"brace",value:re,output:y}),je("braces"),Ce.pop();continue}if(re==="|"){Ke.length>0&&Ke[Ke.length-1].conditions++,We({type:"text",value:re});continue}if(re===","){let S=re,y=Ce[Ce.length-1];y&&Be[Be.length-1]==="braces"&&(y.comma=!0,S="|"),We({type:"comma",value:re,output:S});continue}if(re==="/"){if(le.type==="dot"&&h.index===h.start+1){h.start=h.index+1,h.consumed="",h.output="",c.pop(),le=n;continue}We({type:"slash",value:re,output:x});continue}if(re==="."){if(h.braces>0&&le.type==="dot"){le.value==="."&&(le.output=B);let S=Ce[Ce.length-1];le.type="dots",le.output+=re,le.value+=re,S.dots=!0;continue}if(h.braces+h.parens===0&&le.type!=="bos"&&le.type!=="slash"){We({type:"text",value:re,output:B});continue}We({type:"dot",value:re,output:B});continue}if(re==="?"){if(!(le&&le.value==="(")&&r.noextglob!==!0&&Ue()==="("&&Ue(2)!=="?"){pt("qmark",re);continue}if(le&&le.type==="paren"){let y=Ue(),R=re;if(y==="<"&&!DA.supportsLookbehinds())throw new Error("Node.js v10 or higher is required for regex lookbehinds");(le.value==="("&&!/[!=<:]/.test(y)||y==="<"&&!/<([!=]|\w+>)/.test(q()))&&(R=`\\${re}`),We({type:"text",value:re,output:R});continue}if(r.dot!==!0&&(le.type==="slash"||le.type==="bos")){We({type:"qmark",value:re,output:fe});continue}We({type:"qmark",value:re,output:ie});continue}if(re==="!"){if(r.noextglob!==!0&&Ue()==="("&&(Ue(2)!=="?"||!/[!=<:]/.test(Ue(3)))){pt("negate",re);continue}if(r.nonegate!==!0&&h.index===0){qe();continue}}if(re==="+"){if(r.noextglob!==!0&&Ue()==="("&&Ue(2)!=="?"){pt("plus",re);continue}if(le&&le.value==="("||r.regex===!1){We({type:"plus",value:re,output:Q});continue}if(le&&(le.type==="bracket"||le.type==="paren"||le.type==="brace")||h.parens>0){We({type:"plus",value:re});continue}We({type:"plus",value:Q});continue}if(re==="@"){if(r.noextglob!==!0&&Ue()==="("&&Ue(2)!=="?"){We({type:"at",extglob:!0,value:re,output:""});continue}We({type:"text",value:re});continue}if(re!=="*"){(re==="$"||re==="^")&&(re=`\\${re}`);let S=kYe.exec(q());S&&(re+=S[0],h.index+=S[0].length),We({type:"text",value:re});continue}if(le&&(le.type==="globstar"||le.star===!0)){le.type="star",le.star=!0,le.value+=re,le.output=ke,h.backtrack=!0,h.globstar=!0,Qt(re);continue}let k=q();if(r.noextglob!==!0&&/^\([^?]/.test(k)){pt("star",re);continue}if(le.type==="star"){if(r.noglobstar===!0){Qt(re);continue}let S=le.prev,y=S.prev,R=S.type==="slash"||S.type==="bos",Z=y&&(y.type==="star"||y.type==="globstar");if(r.bash===!0&&(!R||k[0]&&k[0]!=="/")){We({type:"star",value:re,output:""});continue}let te=h.braces>0&&(S.type==="comma"||S.type==="brace"),ne=Ke.length&&(S.type==="pipe"||S.type==="paren");if(!R&&S.type!=="paren"&&!te&&!ne){We({type:"star",value:re,output:""});continue}for(;k.slice(0,3)==="/**";){let Ae=t[h.index+4];if(Ae&&Ae!=="/")break;k=k.slice(3),Qt("/**",3)}if(S.type==="bos"&&Se()){le.type="globstar",le.value+=re,le.output=Pe(r),h.output=le.output,h.globstar=!0,Qt(re);continue}if(S.type==="slash"&&S.prev.type!=="bos"&&!Z&&Se()){h.output=h.output.slice(0,-(S.output+le.output).length),S.output=`(?:${S.output}`,le.type="globstar",le.output=Pe(r)+(r.strictSlashes?")":"|$)"),le.value+=re,h.globstar=!0,h.output+=S.output+le.output,Qt(re);continue}if(S.type==="slash"&&S.prev.type!=="bos"&&k[0]==="/"){let Ae=k[1]!==void 0?"|$":"";h.output=h.output.slice(0,-(S.output+le.output).length),S.output=`(?:${S.output}`,le.type="globstar",le.output=`${Pe(r)}${x}|${x}${Ae})`,le.value+=re,h.output+=S.output+le.output,h.globstar=!0,Qt(re+dt()),We({type:"slash",value:"/",output:""});continue}if(S.type==="bos"&&k[0]==="/"){le.type="globstar",le.value+=re,le.output=`(?:^|${x}|${Pe(r)}${x})`,h.output=le.output,h.globstar=!0,Qt(re+dt()),We({type:"slash",value:"/",output:""});continue}h.output=h.output.slice(0,-le.output.length),le.type="globstar",le.output=Pe(r),le.value+=re,h.output+=le.output,h.globstar=!0,Qt(re);continue}let I={type:"star",value:re,output:ke};if(r.bash===!0){I.output=".*?",(le.type==="bos"||le.type==="slash")&&(I.output=pe+I.output),We(I);continue}if(le&&(le.type==="bracket"||le.type==="paren")&&r.regex===!0){I.output=re,We(I);continue}(h.index===h.start||le.type==="slash"||le.type==="dot")&&(le.type==="dot"?(h.output+=H,le.output+=H):r.dot===!0?(h.output+=X,le.output+=X):(h.output+=pe,le.output+=pe),Ue()!=="*"&&(h.output+=C,le.output+=C)),We(I)}for(;h.brackets>0;){if(r.strictBrackets===!0)throw new SyntaxError(tC("closing","]"));h.output=DA.escapeLast(h.output,"["),je("brackets")}for(;h.parens>0;){if(r.strictBrackets===!0)throw new SyntaxError(tC("closing",")"));h.output=DA.escapeLast(h.output,"("),je("parens")}for(;h.braces>0;){if(r.strictBrackets===!0)throw new SyntaxError(tC("closing","}"));h.output=DA.escapeLast(h.output,"{"),je("braces")}if(r.strictSlashes!==!0&&(le.type==="star"||le.type==="bracket")&&We({type:"maybe_slash",value:"",output:`${x}?`}),h.backtrack===!0){h.output="";for(let k of h.tokens)h.output+=k.output!=null?k.output:k.value,k.suffix&&(h.output+=k.suffix)}return h};g$.fastpaths=(t,e)=>{let r={...e},o=typeof r.maxLength=="number"?Math.min(YD,r.maxLength):YD,a=t.length;if(a>o)throw new SyntaxError(`Input length: ${a}, exceeds maximum allowed length: ${o}`);t=f$[t]||t;let n=DA.isWindows(e),{DOT_LITERAL:c,SLASH_LITERAL:f,ONE_CHAR:g,DOTS_SLASH:p,NO_DOT:E,NO_DOTS:B,NO_DOTS_SLASH:Q,STAR:x,START_ANCHOR:C}=jD.globChars(n),N=r.dot?B:E,U=r.dot?Q:E,H=r.capture?"":"?:",X={negated:!1,prefix:""},ie=r.bash===!0?".*?":x;r.capture&&(ie=`(${ie})`);let fe=pe=>pe.noglobstar===!0?ie:`(${H}(?:(?!${C}${pe.dot?p:c}).)*?)`,ye=pe=>{switch(pe){case"*":return`${N}${g}${ie}`;case".*":return`${c}${g}${ie}`;case"*.*":return`${N}${ie}${c}${g}${ie}`;case"*/*":return`${N}${ie}${f}${g}${U}${ie}`;case"**":return N+fe(r);case"**/*":return`(?:${N}${fe(r)}${f})?${U}${g}${ie}`;case"**/*.*":return`(?:${N}${fe(r)}${f})?${U}${ie}${c}${g}${ie}`;case"**/.*":return`(?:${N}${fe(r)}${f})?${c}${g}${ie}`;default:{let Ee=/^(.*?)\.(\w+)$/.exec(pe);if(!Ee)return;let ke=ye(Ee[1]);return ke?ke+c+Ee[2]:void 0}}},Qe=DA.removePrefix(t,X),Pe=ye(Qe);return Pe&&r.strictSlashes!==!0&&(Pe+=`${f}?`),Pe};p$.exports=g$});var m$=_((Xbt,d$)=>{"use strict";var bYe=Ie("path"),FYe=u$(),gM=h$(),pM=_w(),RYe=Kw(),TYe=t=>t&&typeof t=="object"&&!Array.isArray(t),As=(t,e,r=!1)=>{if(Array.isArray(t)){let E=t.map(Q=>As(Q,e,r));return Q=>{for(let x of E){let C=x(Q);if(C)return C}return!1}}let o=TYe(t)&&t.tokens&&t.input;if(t===""||typeof t!="string"&&!o)throw new TypeError("Expected pattern to be a non-empty string");let a=e||{},n=pM.isWindows(e),c=o?As.compileRe(t,e):As.makeRe(t,e,!1,!0),f=c.state;delete c.state;let g=()=>!1;if(a.ignore){let E={...e,ignore:null,onMatch:null,onResult:null};g=As(a.ignore,E,r)}let p=(E,B=!1)=>{let{isMatch:Q,match:x,output:C}=As.test(E,c,e,{glob:t,posix:n}),N={glob:t,state:f,regex:c,posix:n,input:E,output:C,match:x,isMatch:Q};return typeof a.onResult=="function"&&a.onResult(N),Q===!1?(N.isMatch=!1,B?N:!1):g(E)?(typeof a.onIgnore=="function"&&a.onIgnore(N),N.isMatch=!1,B?N:!1):(typeof a.onMatch=="function"&&a.onMatch(N),B?N:!0)};return r&&(p.state=f),p};As.test=(t,e,r,{glob:o,posix:a}={})=>{if(typeof t!="string")throw new TypeError("Expected input to be a string");if(t==="")return{isMatch:!1,output:""};let n=r||{},c=n.format||(a?pM.toPosixSlashes:null),f=t===o,g=f&&c?c(t):t;return f===!1&&(g=c?c(t):t,f=g===o),(f===!1||n.capture===!0)&&(n.matchBase===!0||n.basename===!0?f=As.matchBase(t,e,r,a):f=e.exec(g)),{isMatch:Boolean(f),match:f,output:g}};As.matchBase=(t,e,r,o=pM.isWindows(r))=>(e instanceof RegExp?e:As.makeRe(e,r)).test(bYe.basename(t));As.isMatch=(t,e,r)=>As(e,r)(t);As.parse=(t,e)=>Array.isArray(t)?t.map(r=>As.parse(r,e)):gM(t,{...e,fastpaths:!1});As.scan=(t,e)=>FYe(t,e);As.compileRe=(t,e,r=!1,o=!1)=>{if(r===!0)return t.output;let a=e||{},n=a.contains?"":"^",c=a.contains?"":"$",f=`${n}(?:${t.output})${c}`;t&&t.negated===!0&&(f=`^(?!${f}).*$`);let g=As.toRegex(f,e);return o===!0&&(g.state=t),g};As.makeRe=(t,e={},r=!1,o=!1)=>{if(!t||typeof t!="string")throw new TypeError("Expected a non-empty string");let a={negated:!1,fastpaths:!0};return e.fastpaths!==!1&&(t[0]==="."||t[0]==="*")&&(a.output=gM.fastpaths(t,e)),a.output||(a=gM(t,e)),As.compileRe(a,e,r,o)};As.toRegex=(t,e)=>{try{let r=e||{};return new RegExp(t,r.flags||(r.nocase?"i":""))}catch(r){if(e&&e.debug===!0)throw r;return/$^/}};As.constants=RYe;d$.exports=As});var hM=_((Zbt,y$)=>{"use strict";y$.exports=m$()});var pa=_(($bt,w$)=>{"use strict";var E$=Ie("util"),I$=ZZ(),du=hM(),dM=_w(),C$=t=>t===""||t==="./",Fi=(t,e,r)=>{e=[].concat(e),t=[].concat(t);let o=new Set,a=new Set,n=new Set,c=0,f=E=>{n.add(E.output),r&&r.onResult&&r.onResult(E)};for(let E=0;E!o.has(E));if(r&&p.length===0){if(r.failglob===!0)throw new Error(`No matches found for "${e.join(", ")}"`);if(r.nonull===!0||r.nullglob===!0)return r.unescape?e.map(E=>E.replace(/\\/g,"")):e}return p};Fi.match=Fi;Fi.matcher=(t,e)=>du(t,e);Fi.isMatch=(t,e,r)=>du(e,r)(t);Fi.any=Fi.isMatch;Fi.not=(t,e,r={})=>{e=[].concat(e).map(String);let o=new Set,a=[],c=Fi(t,e,{...r,onResult:f=>{r.onResult&&r.onResult(f),a.push(f.output)}});for(let f of a)c.includes(f)||o.add(f);return[...o]};Fi.contains=(t,e,r)=>{if(typeof t!="string")throw new TypeError(`Expected a string: "${E$.inspect(t)}"`);if(Array.isArray(e))return e.some(o=>Fi.contains(t,o,r));if(typeof e=="string"){if(C$(t)||C$(e))return!1;if(t.includes(e)||t.startsWith("./")&&t.slice(2).includes(e))return!0}return Fi.isMatch(t,e,{...r,contains:!0})};Fi.matchKeys=(t,e,r)=>{if(!dM.isObject(t))throw new TypeError("Expected the first argument to be an object");let o=Fi(Object.keys(t),e,r),a={};for(let n of o)a[n]=t[n];return a};Fi.some=(t,e,r)=>{let o=[].concat(t);for(let a of[].concat(e)){let n=du(String(a),r);if(o.some(c=>n(c)))return!0}return!1};Fi.every=(t,e,r)=>{let o=[].concat(t);for(let a of[].concat(e)){let n=du(String(a),r);if(!o.every(c=>n(c)))return!1}return!0};Fi.all=(t,e,r)=>{if(typeof t!="string")throw new TypeError(`Expected a string: "${E$.inspect(t)}"`);return[].concat(e).every(o=>du(o,r)(t))};Fi.capture=(t,e,r)=>{let o=dM.isWindows(r),n=du.makeRe(String(t),{...r,capture:!0}).exec(o?dM.toPosixSlashes(e):e);if(n)return n.slice(1).map(c=>c===void 0?"":c)};Fi.makeRe=(...t)=>du.makeRe(...t);Fi.scan=(...t)=>du.scan(...t);Fi.parse=(t,e)=>{let r=[];for(let o of[].concat(t||[]))for(let a of I$(String(o),e))r.push(du.parse(a,e));return r};Fi.braces=(t,e)=>{if(typeof t!="string")throw new TypeError("Expected a string");return e&&e.nobrace===!0||!/\{.*\}/.test(t)?[t]:I$(t,e)};Fi.braceExpand=(t,e)=>{if(typeof t!="string")throw new TypeError("Expected a string");return Fi.braces(t,{...e,expand:!0})};w$.exports=Fi});var Q$=_((eFt,B$)=>{"use strict";B$.exports=({onlyFirst:t=!1}={})=>{let e=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))"].join("|");return new RegExp(e,t?void 0:"g")}});var WD=_((tFt,v$)=>{"use strict";var NYe=Q$();v$.exports=t=>typeof t=="string"?t.replace(NYe(),""):t});var S$=_((rFt,D$)=>{function MYe(){this.__data__=[],this.size=0}D$.exports=MYe});var rC=_((nFt,k$)=>{function LYe(t,e){return t===e||t!==t&&e!==e}k$.exports=LYe});var qw=_((iFt,x$)=>{var OYe=rC();function UYe(t,e){for(var r=t.length;r--;)if(OYe(t[r][0],e))return r;return-1}x$.exports=UYe});var b$=_((sFt,P$)=>{var KYe=qw(),_Ye=Array.prototype,HYe=_Ye.splice;function qYe(t){var e=this.__data__,r=KYe(e,t);if(r<0)return!1;var o=e.length-1;return r==o?e.pop():HYe.call(e,r,1),--this.size,!0}P$.exports=qYe});var R$=_((oFt,F$)=>{var GYe=qw();function jYe(t){var e=this.__data__,r=GYe(e,t);return r<0?void 0:e[r][1]}F$.exports=jYe});var N$=_((aFt,T$)=>{var YYe=qw();function WYe(t){return YYe(this.__data__,t)>-1}T$.exports=WYe});var L$=_((AFt,M$)=>{var JYe=qw();function VYe(t,e){var r=this.__data__,o=JYe(r,t);return o<0?(++this.size,r.push([t,e])):r[o][1]=e,this}M$.exports=VYe});var Gw=_((lFt,O$)=>{var zYe=S$(),XYe=b$(),ZYe=R$(),$Ye=N$(),eWe=L$();function nC(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e{var tWe=Gw();function rWe(){this.__data__=new tWe,this.size=0}U$.exports=rWe});var H$=_((uFt,_$)=>{function nWe(t){var e=this.__data__,r=e.delete(t);return this.size=e.size,r}_$.exports=nWe});var G$=_((fFt,q$)=>{function iWe(t){return this.__data__.get(t)}q$.exports=iWe});var Y$=_((gFt,j$)=>{function sWe(t){return this.__data__.has(t)}j$.exports=sWe});var mM=_((pFt,W$)=>{var oWe=typeof global=="object"&&global&&global.Object===Object&&global;W$.exports=oWe});var dl=_((hFt,J$)=>{var aWe=mM(),AWe=typeof self=="object"&&self&&self.Object===Object&&self,lWe=aWe||AWe||Function("return this")();J$.exports=lWe});var Od=_((dFt,V$)=>{var cWe=dl(),uWe=cWe.Symbol;V$.exports=uWe});var $$=_((mFt,Z$)=>{var z$=Od(),X$=Object.prototype,fWe=X$.hasOwnProperty,gWe=X$.toString,jw=z$?z$.toStringTag:void 0;function pWe(t){var e=fWe.call(t,jw),r=t[jw];try{t[jw]=void 0;var o=!0}catch{}var a=gWe.call(t);return o&&(e?t[jw]=r:delete t[jw]),a}Z$.exports=pWe});var tee=_((yFt,eee)=>{var hWe=Object.prototype,dWe=hWe.toString;function mWe(t){return dWe.call(t)}eee.exports=mWe});var Ud=_((CFt,iee)=>{var ree=Od(),yWe=$$(),CWe=tee(),EWe="[object Null]",IWe="[object Undefined]",nee=ree?ree.toStringTag:void 0;function wWe(t){return t==null?t===void 0?IWe:EWe:nee&&nee in Object(t)?yWe(t):CWe(t)}iee.exports=wWe});var SA=_((EFt,see)=>{function BWe(t){var e=typeof t;return t!=null&&(e=="object"||e=="function")}see.exports=BWe});var JD=_((IFt,oee)=>{var QWe=Ud(),vWe=SA(),DWe="[object AsyncFunction]",SWe="[object Function]",kWe="[object GeneratorFunction]",xWe="[object Proxy]";function PWe(t){if(!vWe(t))return!1;var e=QWe(t);return e==SWe||e==kWe||e==DWe||e==xWe}oee.exports=PWe});var Aee=_((wFt,aee)=>{var bWe=dl(),FWe=bWe["__core-js_shared__"];aee.exports=FWe});var uee=_((BFt,cee)=>{var yM=Aee(),lee=function(){var t=/[^.]+$/.exec(yM&&yM.keys&&yM.keys.IE_PROTO||"");return t?"Symbol(src)_1."+t:""}();function RWe(t){return!!lee&&lee in t}cee.exports=RWe});var CM=_((QFt,fee)=>{var TWe=Function.prototype,NWe=TWe.toString;function MWe(t){if(t!=null){try{return NWe.call(t)}catch{}try{return t+""}catch{}}return""}fee.exports=MWe});var pee=_((vFt,gee)=>{var LWe=JD(),OWe=uee(),UWe=SA(),KWe=CM(),_We=/[\\^$.*+?()[\]{}|]/g,HWe=/^\[object .+?Constructor\]$/,qWe=Function.prototype,GWe=Object.prototype,jWe=qWe.toString,YWe=GWe.hasOwnProperty,WWe=RegExp("^"+jWe.call(YWe).replace(_We,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function JWe(t){if(!UWe(t)||OWe(t))return!1;var e=LWe(t)?WWe:HWe;return e.test(KWe(t))}gee.exports=JWe});var dee=_((DFt,hee)=>{function VWe(t,e){return t==null?void 0:t[e]}hee.exports=VWe});var Ep=_((SFt,mee)=>{var zWe=pee(),XWe=dee();function ZWe(t,e){var r=XWe(t,e);return zWe(r)?r:void 0}mee.exports=ZWe});var VD=_((kFt,yee)=>{var $We=Ep(),e7e=dl(),t7e=$We(e7e,"Map");yee.exports=t7e});var Yw=_((xFt,Cee)=>{var r7e=Ep(),n7e=r7e(Object,"create");Cee.exports=n7e});var wee=_((PFt,Iee)=>{var Eee=Yw();function i7e(){this.__data__=Eee?Eee(null):{},this.size=0}Iee.exports=i7e});var Qee=_((bFt,Bee)=>{function s7e(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e}Bee.exports=s7e});var Dee=_((FFt,vee)=>{var o7e=Yw(),a7e="__lodash_hash_undefined__",A7e=Object.prototype,l7e=A7e.hasOwnProperty;function c7e(t){var e=this.__data__;if(o7e){var r=e[t];return r===a7e?void 0:r}return l7e.call(e,t)?e[t]:void 0}vee.exports=c7e});var kee=_((RFt,See)=>{var u7e=Yw(),f7e=Object.prototype,g7e=f7e.hasOwnProperty;function p7e(t){var e=this.__data__;return u7e?e[t]!==void 0:g7e.call(e,t)}See.exports=p7e});var Pee=_((TFt,xee)=>{var h7e=Yw(),d7e="__lodash_hash_undefined__";function m7e(t,e){var r=this.__data__;return this.size+=this.has(t)?0:1,r[t]=h7e&&e===void 0?d7e:e,this}xee.exports=m7e});var Fee=_((NFt,bee)=>{var y7e=wee(),C7e=Qee(),E7e=Dee(),I7e=kee(),w7e=Pee();function iC(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e{var Ree=Fee(),B7e=Gw(),Q7e=VD();function v7e(){this.size=0,this.__data__={hash:new Ree,map:new(Q7e||B7e),string:new Ree}}Tee.exports=v7e});var Lee=_((LFt,Mee)=>{function D7e(t){var e=typeof t;return e=="string"||e=="number"||e=="symbol"||e=="boolean"?t!=="__proto__":t===null}Mee.exports=D7e});var Ww=_((OFt,Oee)=>{var S7e=Lee();function k7e(t,e){var r=t.__data__;return S7e(e)?r[typeof e=="string"?"string":"hash"]:r.map}Oee.exports=k7e});var Kee=_((UFt,Uee)=>{var x7e=Ww();function P7e(t){var e=x7e(this,t).delete(t);return this.size-=e?1:0,e}Uee.exports=P7e});var Hee=_((KFt,_ee)=>{var b7e=Ww();function F7e(t){return b7e(this,t).get(t)}_ee.exports=F7e});var Gee=_((_Ft,qee)=>{var R7e=Ww();function T7e(t){return R7e(this,t).has(t)}qee.exports=T7e});var Yee=_((HFt,jee)=>{var N7e=Ww();function M7e(t,e){var r=N7e(this,t),o=r.size;return r.set(t,e),this.size+=r.size==o?0:1,this}jee.exports=M7e});var zD=_((qFt,Wee)=>{var L7e=Nee(),O7e=Kee(),U7e=Hee(),K7e=Gee(),_7e=Yee();function sC(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e{var H7e=Gw(),q7e=VD(),G7e=zD(),j7e=200;function Y7e(t,e){var r=this.__data__;if(r instanceof H7e){var o=r.__data__;if(!q7e||o.length{var W7e=Gw(),J7e=K$(),V7e=H$(),z7e=G$(),X7e=Y$(),Z7e=Vee();function oC(t){var e=this.__data__=new W7e(t);this.size=e.size}oC.prototype.clear=J7e;oC.prototype.delete=V7e;oC.prototype.get=z7e;oC.prototype.has=X7e;oC.prototype.set=Z7e;zee.exports=oC});var Zee=_((YFt,Xee)=>{var $7e="__lodash_hash_undefined__";function eJe(t){return this.__data__.set(t,$7e),this}Xee.exports=eJe});var ete=_((WFt,$ee)=>{function tJe(t){return this.__data__.has(t)}$ee.exports=tJe});var rte=_((JFt,tte)=>{var rJe=zD(),nJe=Zee(),iJe=ete();function ZD(t){var e=-1,r=t==null?0:t.length;for(this.__data__=new rJe;++e{function sJe(t,e){for(var r=-1,o=t==null?0:t.length;++r{function oJe(t,e){return t.has(e)}ste.exports=oJe});var EM=_((XFt,ate)=>{var aJe=rte(),AJe=ite(),lJe=ote(),cJe=1,uJe=2;function fJe(t,e,r,o,a,n){var c=r&cJe,f=t.length,g=e.length;if(f!=g&&!(c&&g>f))return!1;var p=n.get(t),E=n.get(e);if(p&&E)return p==e&&E==t;var B=-1,Q=!0,x=r&uJe?new aJe:void 0;for(n.set(t,e),n.set(e,t);++B{var gJe=dl(),pJe=gJe.Uint8Array;Ate.exports=pJe});var cte=_(($Ft,lte)=>{function hJe(t){var e=-1,r=Array(t.size);return t.forEach(function(o,a){r[++e]=[a,o]}),r}lte.exports=hJe});var fte=_((eRt,ute)=>{function dJe(t){var e=-1,r=Array(t.size);return t.forEach(function(o){r[++e]=o}),r}ute.exports=dJe});var mte=_((tRt,dte)=>{var gte=Od(),pte=IM(),mJe=rC(),yJe=EM(),CJe=cte(),EJe=fte(),IJe=1,wJe=2,BJe="[object Boolean]",QJe="[object Date]",vJe="[object Error]",DJe="[object Map]",SJe="[object Number]",kJe="[object RegExp]",xJe="[object Set]",PJe="[object String]",bJe="[object Symbol]",FJe="[object ArrayBuffer]",RJe="[object DataView]",hte=gte?gte.prototype:void 0,wM=hte?hte.valueOf:void 0;function TJe(t,e,r,o,a,n,c){switch(r){case RJe:if(t.byteLength!=e.byteLength||t.byteOffset!=e.byteOffset)return!1;t=t.buffer,e=e.buffer;case FJe:return!(t.byteLength!=e.byteLength||!n(new pte(t),new pte(e)));case BJe:case QJe:case SJe:return mJe(+t,+e);case vJe:return t.name==e.name&&t.message==e.message;case kJe:case PJe:return t==e+"";case DJe:var f=CJe;case xJe:var g=o&IJe;if(f||(f=EJe),t.size!=e.size&&!g)return!1;var p=c.get(t);if(p)return p==e;o|=wJe,c.set(t,e);var E=yJe(f(t),f(e),o,a,n,c);return c.delete(t),E;case bJe:if(wM)return wM.call(t)==wM.call(e)}return!1}dte.exports=TJe});var $D=_((rRt,yte)=>{function NJe(t,e){for(var r=-1,o=e.length,a=t.length;++r{var MJe=Array.isArray;Cte.exports=MJe});var BM=_((iRt,Ete)=>{var LJe=$D(),OJe=lc();function UJe(t,e,r){var o=e(t);return OJe(t)?o:LJe(o,r(t))}Ete.exports=UJe});var wte=_((sRt,Ite)=>{function KJe(t,e){for(var r=-1,o=t==null?0:t.length,a=0,n=[];++r{function _Je(){return[]}Bte.exports=_Je});var eS=_((aRt,vte)=>{var HJe=wte(),qJe=QM(),GJe=Object.prototype,jJe=GJe.propertyIsEnumerable,Qte=Object.getOwnPropertySymbols,YJe=Qte?function(t){return t==null?[]:(t=Object(t),HJe(Qte(t),function(e){return jJe.call(t,e)}))}:qJe;vte.exports=YJe});var Ste=_((ARt,Dte)=>{function WJe(t,e){for(var r=-1,o=Array(t);++r{function JJe(t){return t!=null&&typeof t=="object"}kte.exports=JJe});var Pte=_((cRt,xte)=>{var VJe=Ud(),zJe=mu(),XJe="[object Arguments]";function ZJe(t){return zJe(t)&&VJe(t)==XJe}xte.exports=ZJe});var Jw=_((uRt,Rte)=>{var bte=Pte(),$Je=mu(),Fte=Object.prototype,eVe=Fte.hasOwnProperty,tVe=Fte.propertyIsEnumerable,rVe=bte(function(){return arguments}())?bte:function(t){return $Je(t)&&eVe.call(t,"callee")&&!tVe.call(t,"callee")};Rte.exports=rVe});var Nte=_((fRt,Tte)=>{function nVe(){return!1}Tte.exports=nVe});var zw=_((Vw,aC)=>{var iVe=dl(),sVe=Nte(),Ote=typeof Vw=="object"&&Vw&&!Vw.nodeType&&Vw,Mte=Ote&&typeof aC=="object"&&aC&&!aC.nodeType&&aC,oVe=Mte&&Mte.exports===Ote,Lte=oVe?iVe.Buffer:void 0,aVe=Lte?Lte.isBuffer:void 0,AVe=aVe||sVe;aC.exports=AVe});var Xw=_((gRt,Ute)=>{var lVe=9007199254740991,cVe=/^(?:0|[1-9]\d*)$/;function uVe(t,e){var r=typeof t;return e=e??lVe,!!e&&(r=="number"||r!="symbol"&&cVe.test(t))&&t>-1&&t%1==0&&t{var fVe=9007199254740991;function gVe(t){return typeof t=="number"&&t>-1&&t%1==0&&t<=fVe}Kte.exports=gVe});var Hte=_((hRt,_te)=>{var pVe=Ud(),hVe=tS(),dVe=mu(),mVe="[object Arguments]",yVe="[object Array]",CVe="[object Boolean]",EVe="[object Date]",IVe="[object Error]",wVe="[object Function]",BVe="[object Map]",QVe="[object Number]",vVe="[object Object]",DVe="[object RegExp]",SVe="[object Set]",kVe="[object String]",xVe="[object WeakMap]",PVe="[object ArrayBuffer]",bVe="[object DataView]",FVe="[object Float32Array]",RVe="[object Float64Array]",TVe="[object Int8Array]",NVe="[object Int16Array]",MVe="[object Int32Array]",LVe="[object Uint8Array]",OVe="[object Uint8ClampedArray]",UVe="[object Uint16Array]",KVe="[object Uint32Array]",Bi={};Bi[FVe]=Bi[RVe]=Bi[TVe]=Bi[NVe]=Bi[MVe]=Bi[LVe]=Bi[OVe]=Bi[UVe]=Bi[KVe]=!0;Bi[mVe]=Bi[yVe]=Bi[PVe]=Bi[CVe]=Bi[bVe]=Bi[EVe]=Bi[IVe]=Bi[wVe]=Bi[BVe]=Bi[QVe]=Bi[vVe]=Bi[DVe]=Bi[SVe]=Bi[kVe]=Bi[xVe]=!1;function _Ve(t){return dVe(t)&&hVe(t.length)&&!!Bi[pVe(t)]}_te.exports=_Ve});var rS=_((dRt,qte)=>{function HVe(t){return function(e){return t(e)}}qte.exports=HVe});var nS=_((Zw,AC)=>{var qVe=mM(),Gte=typeof Zw=="object"&&Zw&&!Zw.nodeType&&Zw,$w=Gte&&typeof AC=="object"&&AC&&!AC.nodeType&&AC,GVe=$w&&$w.exports===Gte,vM=GVe&&qVe.process,jVe=function(){try{var t=$w&&$w.require&&$w.require("util").types;return t||vM&&vM.binding&&vM.binding("util")}catch{}}();AC.exports=jVe});var iS=_((mRt,Wte)=>{var YVe=Hte(),WVe=rS(),jte=nS(),Yte=jte&&jte.isTypedArray,JVe=Yte?WVe(Yte):YVe;Wte.exports=JVe});var DM=_((yRt,Jte)=>{var VVe=Ste(),zVe=Jw(),XVe=lc(),ZVe=zw(),$Ve=Xw(),eze=iS(),tze=Object.prototype,rze=tze.hasOwnProperty;function nze(t,e){var r=XVe(t),o=!r&&zVe(t),a=!r&&!o&&ZVe(t),n=!r&&!o&&!a&&eze(t),c=r||o||a||n,f=c?VVe(t.length,String):[],g=f.length;for(var p in t)(e||rze.call(t,p))&&!(c&&(p=="length"||a&&(p=="offset"||p=="parent")||n&&(p=="buffer"||p=="byteLength"||p=="byteOffset")||$Ve(p,g)))&&f.push(p);return f}Jte.exports=nze});var sS=_((CRt,Vte)=>{var ize=Object.prototype;function sze(t){var e=t&&t.constructor,r=typeof e=="function"&&e.prototype||ize;return t===r}Vte.exports=sze});var SM=_((ERt,zte)=>{function oze(t,e){return function(r){return t(e(r))}}zte.exports=oze});var Zte=_((IRt,Xte)=>{var aze=SM(),Aze=aze(Object.keys,Object);Xte.exports=Aze});var ere=_((wRt,$te)=>{var lze=sS(),cze=Zte(),uze=Object.prototype,fze=uze.hasOwnProperty;function gze(t){if(!lze(t))return cze(t);var e=[];for(var r in Object(t))fze.call(t,r)&&r!="constructor"&&e.push(r);return e}$te.exports=gze});var eB=_((BRt,tre)=>{var pze=JD(),hze=tS();function dze(t){return t!=null&&hze(t.length)&&!pze(t)}tre.exports=dze});var oS=_((QRt,rre)=>{var mze=DM(),yze=ere(),Cze=eB();function Eze(t){return Cze(t)?mze(t):yze(t)}rre.exports=Eze});var kM=_((vRt,nre)=>{var Ize=BM(),wze=eS(),Bze=oS();function Qze(t){return Ize(t,Bze,wze)}nre.exports=Qze});var ore=_((DRt,sre)=>{var ire=kM(),vze=1,Dze=Object.prototype,Sze=Dze.hasOwnProperty;function kze(t,e,r,o,a,n){var c=r&vze,f=ire(t),g=f.length,p=ire(e),E=p.length;if(g!=E&&!c)return!1;for(var B=g;B--;){var Q=f[B];if(!(c?Q in e:Sze.call(e,Q)))return!1}var x=n.get(t),C=n.get(e);if(x&&C)return x==e&&C==t;var N=!0;n.set(t,e),n.set(e,t);for(var U=c;++B{var xze=Ep(),Pze=dl(),bze=xze(Pze,"DataView");are.exports=bze});var cre=_((kRt,lre)=>{var Fze=Ep(),Rze=dl(),Tze=Fze(Rze,"Promise");lre.exports=Tze});var fre=_((xRt,ure)=>{var Nze=Ep(),Mze=dl(),Lze=Nze(Mze,"Set");ure.exports=Lze});var pre=_((PRt,gre)=>{var Oze=Ep(),Uze=dl(),Kze=Oze(Uze,"WeakMap");gre.exports=Kze});var tB=_((bRt,Ire)=>{var xM=Are(),PM=VD(),bM=cre(),FM=fre(),RM=pre(),Ere=Ud(),lC=CM(),hre="[object Map]",_ze="[object Object]",dre="[object Promise]",mre="[object Set]",yre="[object WeakMap]",Cre="[object DataView]",Hze=lC(xM),qze=lC(PM),Gze=lC(bM),jze=lC(FM),Yze=lC(RM),Kd=Ere;(xM&&Kd(new xM(new ArrayBuffer(1)))!=Cre||PM&&Kd(new PM)!=hre||bM&&Kd(bM.resolve())!=dre||FM&&Kd(new FM)!=mre||RM&&Kd(new RM)!=yre)&&(Kd=function(t){var e=Ere(t),r=e==_ze?t.constructor:void 0,o=r?lC(r):"";if(o)switch(o){case Hze:return Cre;case qze:return hre;case Gze:return dre;case jze:return mre;case Yze:return yre}return e});Ire.exports=Kd});var xre=_((FRt,kre)=>{var TM=XD(),Wze=EM(),Jze=mte(),Vze=ore(),wre=tB(),Bre=lc(),Qre=zw(),zze=iS(),Xze=1,vre="[object Arguments]",Dre="[object Array]",aS="[object Object]",Zze=Object.prototype,Sre=Zze.hasOwnProperty;function $ze(t,e,r,o,a,n){var c=Bre(t),f=Bre(e),g=c?Dre:wre(t),p=f?Dre:wre(e);g=g==vre?aS:g,p=p==vre?aS:p;var E=g==aS,B=p==aS,Q=g==p;if(Q&&Qre(t)){if(!Qre(e))return!1;c=!0,E=!1}if(Q&&!E)return n||(n=new TM),c||zze(t)?Wze(t,e,r,o,a,n):Jze(t,e,g,r,o,a,n);if(!(r&Xze)){var x=E&&Sre.call(t,"__wrapped__"),C=B&&Sre.call(e,"__wrapped__");if(x||C){var N=x?t.value():t,U=C?e.value():e;return n||(n=new TM),a(N,U,r,o,n)}}return Q?(n||(n=new TM),Vze(t,e,r,o,a,n)):!1}kre.exports=$ze});var Rre=_((RRt,Fre)=>{var eXe=xre(),Pre=mu();function bre(t,e,r,o,a){return t===e?!0:t==null||e==null||!Pre(t)&&!Pre(e)?t!==t&&e!==e:eXe(t,e,r,o,bre,a)}Fre.exports=bre});var Nre=_((TRt,Tre)=>{var tXe=Rre();function rXe(t,e){return tXe(t,e)}Tre.exports=rXe});var NM=_((NRt,Mre)=>{var nXe=Ep(),iXe=function(){try{var t=nXe(Object,"defineProperty");return t({},"",{}),t}catch{}}();Mre.exports=iXe});var AS=_((MRt,Ore)=>{var Lre=NM();function sXe(t,e,r){e=="__proto__"&&Lre?Lre(t,e,{configurable:!0,enumerable:!0,value:r,writable:!0}):t[e]=r}Ore.exports=sXe});var MM=_((LRt,Ure)=>{var oXe=AS(),aXe=rC();function AXe(t,e,r){(r!==void 0&&!aXe(t[e],r)||r===void 0&&!(e in t))&&oXe(t,e,r)}Ure.exports=AXe});var _re=_((ORt,Kre)=>{function lXe(t){return function(e,r,o){for(var a=-1,n=Object(e),c=o(e),f=c.length;f--;){var g=c[t?f:++a];if(r(n[g],g,n)===!1)break}return e}}Kre.exports=lXe});var qre=_((URt,Hre)=>{var cXe=_re(),uXe=cXe();Hre.exports=uXe});var LM=_((rB,cC)=>{var fXe=dl(),Wre=typeof rB=="object"&&rB&&!rB.nodeType&&rB,Gre=Wre&&typeof cC=="object"&&cC&&!cC.nodeType&&cC,gXe=Gre&&Gre.exports===Wre,jre=gXe?fXe.Buffer:void 0,Yre=jre?jre.allocUnsafe:void 0;function pXe(t,e){if(e)return t.slice();var r=t.length,o=Yre?Yre(r):new t.constructor(r);return t.copy(o),o}cC.exports=pXe});var lS=_((KRt,Vre)=>{var Jre=IM();function hXe(t){var e=new t.constructor(t.byteLength);return new Jre(e).set(new Jre(t)),e}Vre.exports=hXe});var OM=_((_Rt,zre)=>{var dXe=lS();function mXe(t,e){var r=e?dXe(t.buffer):t.buffer;return new t.constructor(r,t.byteOffset,t.length)}zre.exports=mXe});var UM=_((HRt,Xre)=>{function yXe(t,e){var r=-1,o=t.length;for(e||(e=Array(o));++r{var CXe=SA(),Zre=Object.create,EXe=function(){function t(){}return function(e){if(!CXe(e))return{};if(Zre)return Zre(e);t.prototype=e;var r=new t;return t.prototype=void 0,r}}();$re.exports=EXe});var cS=_((GRt,tne)=>{var IXe=SM(),wXe=IXe(Object.getPrototypeOf,Object);tne.exports=wXe});var KM=_((jRt,rne)=>{var BXe=ene(),QXe=cS(),vXe=sS();function DXe(t){return typeof t.constructor=="function"&&!vXe(t)?BXe(QXe(t)):{}}rne.exports=DXe});var ine=_((YRt,nne)=>{var SXe=eB(),kXe=mu();function xXe(t){return kXe(t)&&SXe(t)}nne.exports=xXe});var _M=_((WRt,one)=>{var PXe=Ud(),bXe=cS(),FXe=mu(),RXe="[object Object]",TXe=Function.prototype,NXe=Object.prototype,sne=TXe.toString,MXe=NXe.hasOwnProperty,LXe=sne.call(Object);function OXe(t){if(!FXe(t)||PXe(t)!=RXe)return!1;var e=bXe(t);if(e===null)return!0;var r=MXe.call(e,"constructor")&&e.constructor;return typeof r=="function"&&r instanceof r&&sne.call(r)==LXe}one.exports=OXe});var HM=_((JRt,ane)=>{function UXe(t,e){if(!(e==="constructor"&&typeof t[e]=="function")&&e!="__proto__")return t[e]}ane.exports=UXe});var uS=_((VRt,Ane)=>{var KXe=AS(),_Xe=rC(),HXe=Object.prototype,qXe=HXe.hasOwnProperty;function GXe(t,e,r){var o=t[e];(!(qXe.call(t,e)&&_Xe(o,r))||r===void 0&&!(e in t))&&KXe(t,e,r)}Ane.exports=GXe});var _d=_((zRt,lne)=>{var jXe=uS(),YXe=AS();function WXe(t,e,r,o){var a=!r;r||(r={});for(var n=-1,c=e.length;++n{function JXe(t){var e=[];if(t!=null)for(var r in Object(t))e.push(r);return e}cne.exports=JXe});var gne=_((ZRt,fne)=>{var VXe=SA(),zXe=sS(),XXe=une(),ZXe=Object.prototype,$Xe=ZXe.hasOwnProperty;function eZe(t){if(!VXe(t))return XXe(t);var e=zXe(t),r=[];for(var o in t)o=="constructor"&&(e||!$Xe.call(t,o))||r.push(o);return r}fne.exports=eZe});var uC=_(($Rt,pne)=>{var tZe=DM(),rZe=gne(),nZe=eB();function iZe(t){return nZe(t)?tZe(t,!0):rZe(t)}pne.exports=iZe});var dne=_((eTt,hne)=>{var sZe=_d(),oZe=uC();function aZe(t){return sZe(t,oZe(t))}hne.exports=aZe});var wne=_((tTt,Ine)=>{var mne=MM(),AZe=LM(),lZe=OM(),cZe=UM(),uZe=KM(),yne=Jw(),Cne=lc(),fZe=ine(),gZe=zw(),pZe=JD(),hZe=SA(),dZe=_M(),mZe=iS(),Ene=HM(),yZe=dne();function CZe(t,e,r,o,a,n,c){var f=Ene(t,r),g=Ene(e,r),p=c.get(g);if(p){mne(t,r,p);return}var E=n?n(f,g,r+"",t,e,c):void 0,B=E===void 0;if(B){var Q=Cne(g),x=!Q&&gZe(g),C=!Q&&!x&&mZe(g);E=g,Q||x||C?Cne(f)?E=f:fZe(f)?E=cZe(f):x?(B=!1,E=AZe(g,!0)):C?(B=!1,E=lZe(g,!0)):E=[]:dZe(g)||yne(g)?(E=f,yne(f)?E=yZe(f):(!hZe(f)||pZe(f))&&(E=uZe(g))):B=!1}B&&(c.set(g,E),a(E,g,o,n,c),c.delete(g)),mne(t,r,E)}Ine.exports=CZe});var vne=_((rTt,Qne)=>{var EZe=XD(),IZe=MM(),wZe=qre(),BZe=wne(),QZe=SA(),vZe=uC(),DZe=HM();function Bne(t,e,r,o,a){t!==e&&wZe(e,function(n,c){if(a||(a=new EZe),QZe(n))BZe(t,e,c,r,Bne,o,a);else{var f=o?o(DZe(t,c),n,c+"",t,e,a):void 0;f===void 0&&(f=n),IZe(t,c,f)}},vZe)}Qne.exports=Bne});var qM=_((nTt,Dne)=>{function SZe(t){return t}Dne.exports=SZe});var kne=_((iTt,Sne)=>{function kZe(t,e,r){switch(r.length){case 0:return t.call(e);case 1:return t.call(e,r[0]);case 2:return t.call(e,r[0],r[1]);case 3:return t.call(e,r[0],r[1],r[2])}return t.apply(e,r)}Sne.exports=kZe});var GM=_((sTt,Pne)=>{var xZe=kne(),xne=Math.max;function PZe(t,e,r){return e=xne(e===void 0?t.length-1:e,0),function(){for(var o=arguments,a=-1,n=xne(o.length-e,0),c=Array(n);++a{function bZe(t){return function(){return t}}bne.exports=bZe});var Nne=_((aTt,Tne)=>{var FZe=Fne(),Rne=NM(),RZe=qM(),TZe=Rne?function(t,e){return Rne(t,"toString",{configurable:!0,enumerable:!1,value:FZe(e),writable:!0})}:RZe;Tne.exports=TZe});var Lne=_((ATt,Mne)=>{var NZe=800,MZe=16,LZe=Date.now;function OZe(t){var e=0,r=0;return function(){var o=LZe(),a=MZe-(o-r);if(r=o,a>0){if(++e>=NZe)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}Mne.exports=OZe});var jM=_((lTt,One)=>{var UZe=Nne(),KZe=Lne(),_Ze=KZe(UZe);One.exports=_Ze});var Kne=_((cTt,Une)=>{var HZe=qM(),qZe=GM(),GZe=jM();function jZe(t,e){return GZe(qZe(t,e,HZe),t+"")}Une.exports=jZe});var Hne=_((uTt,_ne)=>{var YZe=rC(),WZe=eB(),JZe=Xw(),VZe=SA();function zZe(t,e,r){if(!VZe(r))return!1;var o=typeof e;return(o=="number"?WZe(r)&&JZe(e,r.length):o=="string"&&e in r)?YZe(r[e],t):!1}_ne.exports=zZe});var Gne=_((fTt,qne)=>{var XZe=Kne(),ZZe=Hne();function $Ze(t){return XZe(function(e,r){var o=-1,a=r.length,n=a>1?r[a-1]:void 0,c=a>2?r[2]:void 0;for(n=t.length>3&&typeof n=="function"?(a--,n):void 0,c&&ZZe(r[0],r[1],c)&&(n=a<3?void 0:n,a=1),e=Object(e);++o{var e$e=vne(),t$e=Gne(),r$e=t$e(function(t,e,r,o){e$e(t,e,r,o)});jne.exports=r$e});var Ze={};tr(Ze,{AsyncActions:()=>JM,BufferStream:()=>WM,CachingStrategy:()=>iie,DefaultStream:()=>VM,allSettledSafe:()=>cc,assertNever:()=>ZM,bufferStream:()=>hC,buildIgnorePattern:()=>l$e,convertMapsToIndexableObjects:()=>fS,dynamicRequire:()=>dC,escapeRegExp:()=>i$e,getArrayWithDefault:()=>fC,getFactoryWithDefault:()=>jf,getMapWithDefault:()=>gC,getSetWithDefault:()=>Hd,isIndexableObject:()=>YM,isPathLike:()=>c$e,isTaggedYarnVersion:()=>n$e,makeDeferred:()=>tie,mapAndFilter:()=>yu,mapAndFind:()=>iB,mergeIntoTarget:()=>oie,overrideType:()=>s$e,parseBoolean:()=>sB,parseOptionalBoolean:()=>sie,prettifyAsyncErrors:()=>pC,prettifySyncErrors:()=>$M,releaseAfterUseAsync:()=>a$e,replaceEnvVariables:()=>eL,sortMap:()=>Ja,toMerged:()=>u$e,tryParseOptionalBoolean:()=>tL,validateEnum:()=>o$e});function n$e(t){return!!(Zne.default.valid(t)&&t.match(/^[^-]+(-rc\.[0-9]+)?$/))}function i$e(t){return t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function s$e(t){}function ZM(t){throw new Error(`Assertion failed: Unexpected object '${t}'`)}function o$e(t,e){let r=Object.values(t);if(!r.includes(e))throw new zM.UsageError(`Invalid value for enumeration: ${JSON.stringify(e)} (expected one of ${r.map(o=>JSON.stringify(o)).join(", ")})`);return e}function yu(t,e){let r=[];for(let o of t){let a=e(o);a!==$ne&&r.push(a)}return r}function iB(t,e){for(let r of t){let o=e(r);if(o!==eie)return o}}function YM(t){return typeof t=="object"&&t!==null}async function cc(t){let e=await Promise.allSettled(t),r=[];for(let o of e){if(o.status==="rejected")throw o.reason;r.push(o.value)}return r}function fS(t){if(t instanceof Map&&(t=Object.fromEntries(t)),YM(t))for(let e of Object.keys(t)){let r=t[e];YM(r)&&(t[e]=fS(r))}return t}function jf(t,e,r){let o=t.get(e);return typeof o>"u"&&t.set(e,o=r()),o}function fC(t,e){let r=t.get(e);return typeof r>"u"&&t.set(e,r=[]),r}function Hd(t,e){let r=t.get(e);return typeof r>"u"&&t.set(e,r=new Set),r}function gC(t,e){let r=t.get(e);return typeof r>"u"&&t.set(e,r=new Map),r}async function a$e(t,e){if(e==null)return await t();try{return await t()}finally{await e()}}async function pC(t,e){try{return await t()}catch(r){throw r.message=e(r.message),r}}function $M(t,e){try{return t()}catch(r){throw r.message=e(r.message),r}}async function hC(t){return await new Promise((e,r)=>{let o=[];t.on("error",a=>{r(a)}),t.on("data",a=>{o.push(a)}),t.on("end",()=>{e(Buffer.concat(o))})})}function tie(){let t,e;return{promise:new Promise((o,a)=>{t=o,e=a}),resolve:t,reject:e}}function rie(t){return nB(me.fromPortablePath(t))}function nie(path){let physicalPath=me.fromPortablePath(path),currentCacheEntry=nB.cache[physicalPath];delete nB.cache[physicalPath];let result;try{result=rie(physicalPath);let freshCacheEntry=nB.cache[physicalPath],dynamicModule=eval("module"),freshCacheIndex=dynamicModule.children.indexOf(freshCacheEntry);freshCacheIndex!==-1&&dynamicModule.children.splice(freshCacheIndex,1)}finally{nB.cache[physicalPath]=currentCacheEntry}return result}function A$e(t){let e=Wne.get(t),r=ge.statSync(t);if((e==null?void 0:e.mtime)===r.mtimeMs)return e.instance;let o=nie(t);return Wne.set(t,{mtime:r.mtimeMs,instance:o}),o}function dC(t,{cachingStrategy:e=2}={}){switch(e){case 0:return nie(t);case 1:return A$e(t);case 2:return rie(t);default:throw new Error("Unsupported caching strategy")}}function Ja(t,e){let r=Array.from(t);Array.isArray(e)||(e=[e]);let o=[];for(let n of e)o.push(r.map(c=>n(c)));let a=r.map((n,c)=>c);return a.sort((n,c)=>{for(let f of o){let g=f[n]f[c]?1:0;if(g!==0)return g}return 0}),a.map(n=>r[n])}function l$e(t){return t.length===0?null:t.map(e=>`(${zne.default.makeRe(e,{windows:!1,dot:!0}).source})`).join("|")}function eL(t,{env:e}){let r=/\${(?[\d\w_]+)(?:)?(?:-(?[^}]*))?}/g;return t.replace(r,(...o)=>{let{variableName:a,colon:n,fallback:c}=o[o.length-1],f=Object.prototype.hasOwnProperty.call(e,a),g=e[a];if(g||f&&!n)return g;if(c!=null)return c;throw new zM.UsageError(`Environment variable not found (${a})`)})}function sB(t){switch(t){case"true":case"1":case 1:case!0:return!0;case"false":case"0":case 0:case!1:return!1;default:throw new Error(`Couldn't parse "${t}" as a boolean`)}}function sie(t){return typeof t>"u"?t:sB(t)}function tL(t){try{return sie(t)}catch{return null}}function c$e(t){return!!(me.isAbsolute(t)||t.match(/^(\.{1,2}|~)\//))}function oie(t,...e){let r=c=>({value:c}),o=r(t),a=e.map(c=>r(c)),{value:n}=(0,Vne.default)(o,...a,(c,f)=>{if(Array.isArray(c)&&Array.isArray(f)){for(let g of f)c.find(p=>(0,Jne.default)(p,g))||c.push(g);return c}});return n}function u$e(...t){return oie({},...t)}var zM,Jne,Vne,zne,Xne,Zne,XM,$ne,eie,WM,JM,VM,nB,Wne,iie,ml=Lt(()=>{Ft();zM=be(Vt()),Jne=be(Nre()),Vne=be(Yne()),zne=be(pa()),Xne=be(kd()),Zne=be(wi()),XM=Ie("stream");$ne=Symbol();yu.skip=$ne;eie=Symbol();iB.skip=eie;WM=class extends XM.Transform{constructor(){super(...arguments);this.chunks=[]}_transform(r,o,a){if(o!=="buffer"||!Buffer.isBuffer(r))throw new Error("Assertion failed: BufferStream only accept buffers");this.chunks.push(r),a(null,null)}_flush(r){r(null,Buffer.concat(this.chunks))}};JM=class{constructor(e){this.deferred=new Map;this.promises=new Map;this.limit=(0,Xne.default)(e)}set(e,r){let o=this.deferred.get(e);typeof o>"u"&&this.deferred.set(e,o=tie());let a=this.limit(()=>r());return this.promises.set(e,a),a.then(()=>{this.promises.get(e)===a&&o.resolve()},n=>{this.promises.get(e)===a&&o.reject(n)}),o.promise}reduce(e,r){let o=this.promises.get(e)??Promise.resolve();this.set(e,()=>r(o))}async wait(){await Promise.all(this.promises.values())}},VM=class extends XM.Transform{constructor(r=Buffer.alloc(0)){super();this.active=!0;this.ifEmpty=r}_transform(r,o,a){if(o!=="buffer"||!Buffer.isBuffer(r))throw new Error("Assertion failed: DefaultStream only accept buffers");this.active=!1,a(null,r)}_flush(r){this.active&&this.ifEmpty.length>0?r(null,this.ifEmpty):r(null)}},nB=eval("require");Wne=new Map;iie=(o=>(o[o.NoCache=0]="NoCache",o[o.FsTime=1]="FsTime",o[o.Node=2]="Node",o))(iie||{})});var mC,rL,nL,aie=Lt(()=>{mC=(r=>(r.HARD="HARD",r.SOFT="SOFT",r))(mC||{}),rL=(o=>(o.Dependency="Dependency",o.PeerDependency="PeerDependency",o.PeerDependencyMeta="PeerDependencyMeta",o))(rL||{}),nL=(o=>(o.Inactive="inactive",o.Redundant="redundant",o.Active="active",o))(nL||{})});var Ne={};tr(Ne,{LogLevel:()=>dS,Style:()=>sL,Type:()=>Mt,addLogFilterSupport:()=>AB,applyColor:()=>Va,applyHyperlink:()=>yC,applyStyle:()=>hS,json:()=>qd,jsonOrPretty:()=>p$e,mark:()=>lL,pretty:()=>ar,prettyField:()=>Cu,prettyList:()=>AL,supportsColor:()=>pS,supportsHyperlinks:()=>aL,tuple:()=>uc});function uc(t,e){return[e,t]}function hS(t,e,r){return t.get("enableColors")&&r&2&&(e=aB.default.bold(e)),e}function Va(t,e,r){if(!t.get("enableColors"))return e;let o=f$e.get(r);if(o===null)return e;let a=typeof o>"u"?r:oL.level>=3?o[0]:o[1],n=typeof a=="number"?iL.ansi256(a):a.startsWith("#")?iL.hex(a):iL[a];if(typeof n!="function")throw new Error(`Invalid format type ${a}`);return n(e)}function yC(t,e,r){return t.get("enableHyperlinks")?g$e?`\x1B]8;;${r}\x1B\\${e}\x1B]8;;\x1B\\`:`\x1B]8;;${r}\x07${e}\x1B]8;;\x07`:e}function ar(t,e,r){if(e===null)return Va(t,"null",Mt.NULL);if(Object.prototype.hasOwnProperty.call(gS,r))return gS[r].pretty(t,e);if(typeof e!="string")throw new Error(`Assertion failed: Expected the value to be a string, got ${typeof e}`);return Va(t,e,r)}function AL(t,e,r,{separator:o=", "}={}){return[...e].map(a=>ar(t,a,r)).join(o)}function qd(t,e){if(t===null)return null;if(Object.prototype.hasOwnProperty.call(gS,e))return gS[e].json(t);if(typeof t!="string")throw new Error(`Assertion failed: Expected the value to be a string, got ${typeof t}`);return t}function p$e(t,e,[r,o]){return t?qd(r,o):ar(e,r,o)}function lL(t){return{Check:Va(t,"\u2713","green"),Cross:Va(t,"\u2718","red"),Question:Va(t,"?","cyan")}}function Cu(t,{label:e,value:[r,o]}){return`${ar(t,e,Mt.CODE)}: ${ar(t,r,o)}`}function AB(t,{configuration:e}){let r=e.get("logFilters"),o=new Map,a=new Map,n=[];for(let B of r){let Q=B.get("level");if(typeof Q>"u")continue;let x=B.get("code");typeof x<"u"&&o.set(x,Q);let C=B.get("text");typeof C<"u"&&a.set(C,Q);let N=B.get("pattern");typeof N<"u"&&n.push([lie.default.matcher(N,{contains:!0}),Q])}n.reverse();let c=(B,Q,x)=>{if(B===null||B===0)return x;let C=a.size>0||n.length>0?(0,cie.default)(Q):Q;if(a.size>0){let N=a.get(C);if(typeof N<"u")return N??x}if(n.length>0){for(let[N,U]of n)if(N(C))return U??x}if(o.size>0){let N=o.get(pu(B));if(typeof N<"u")return N??x}return x},f=t.reportInfo,g=t.reportWarning,p=t.reportError,E=function(B,Q,x,C){switch(c(Q,x,C)){case"info":f.call(B,Q,x);break;case"warning":g.call(B,Q??0,x);break;case"error":p.call(B,Q??0,x);break}};t.reportInfo=function(...B){return E(this,...B,"info")},t.reportWarning=function(...B){return E(this,...B,"warning")},t.reportError=function(...B){return E(this,...B,"error")}}var aB,oB,Aie,lie,cie,Mt,sL,oL,pS,aL,iL,f$e,yl,gS,g$e,dS,El=Lt(()=>{Ft();aB=be(eM()),oB=be(Qd()),Aie=be(Vt()),lie=be(pa()),cie=be(WD());ID();go();Mt={NO_HINT:"NO_HINT",NULL:"NULL",SCOPE:"SCOPE",NAME:"NAME",RANGE:"RANGE",REFERENCE:"REFERENCE",NUMBER:"NUMBER",PATH:"PATH",URL:"URL",ADDED:"ADDED",REMOVED:"REMOVED",CODE:"CODE",DURATION:"DURATION",SIZE:"SIZE",IDENT:"IDENT",DESCRIPTOR:"DESCRIPTOR",LOCATOR:"LOCATOR",RESOLUTION:"RESOLUTION",DEPENDENT:"DEPENDENT",PACKAGE_EXTENSION:"PACKAGE_EXTENSION",SETTING:"SETTING",MARKDOWN:"MARKDOWN"},sL=(e=>(e[e.BOLD=2]="BOLD",e))(sL||{}),oL=oB.default.GITHUB_ACTIONS?{level:2}:aB.default.supportsColor?{level:aB.default.supportsColor.level}:{level:0},pS=oL.level!==0,aL=pS&&!oB.default.GITHUB_ACTIONS&&!oB.default.CIRCLE&&!oB.default.GITLAB,iL=new aB.default.Instance(oL),f$e=new Map([[Mt.NO_HINT,null],[Mt.NULL,["#a853b5",129]],[Mt.SCOPE,["#d75f00",166]],[Mt.NAME,["#d7875f",173]],[Mt.RANGE,["#00afaf",37]],[Mt.REFERENCE,["#87afff",111]],[Mt.NUMBER,["#ffd700",220]],[Mt.PATH,["#d75fd7",170]],[Mt.URL,["#d75fd7",170]],[Mt.ADDED,["#5faf00",70]],[Mt.REMOVED,["#d70000",160]],[Mt.CODE,["#87afff",111]],[Mt.SIZE,["#ffd700",220]]]),yl=t=>t,gS={[Mt.NUMBER]:yl({pretty:(t,e)=>Va(t,`${e}`,Mt.NUMBER),json:t=>t}),[Mt.IDENT]:yl({pretty:(t,e)=>Ns(t,e),json:t=>Cn(t)}),[Mt.LOCATOR]:yl({pretty:(t,e)=>Yr(t,e),json:t=>Cl(t)}),[Mt.DESCRIPTOR]:yl({pretty:(t,e)=>$n(t,e),json:t=>za(t)}),[Mt.RESOLUTION]:yl({pretty:(t,{descriptor:e,locator:r})=>lB(t,e,r),json:({descriptor:t,locator:e})=>({descriptor:za(t),locator:e!==null?Cl(e):null})}),[Mt.DEPENDENT]:yl({pretty:(t,{locator:e,descriptor:r})=>cL(t,e,r),json:({locator:t,descriptor:e})=>({locator:Cl(t),descriptor:za(e)})}),[Mt.PACKAGE_EXTENSION]:yl({pretty:(t,e)=>{switch(e.type){case"Dependency":return`${Ns(t,e.parentDescriptor)} \u27A4 ${Va(t,"dependencies",Mt.CODE)} \u27A4 ${Ns(t,e.descriptor)}`;case"PeerDependency":return`${Ns(t,e.parentDescriptor)} \u27A4 ${Va(t,"peerDependencies",Mt.CODE)} \u27A4 ${Ns(t,e.descriptor)}`;case"PeerDependencyMeta":return`${Ns(t,e.parentDescriptor)} \u27A4 ${Va(t,"peerDependenciesMeta",Mt.CODE)} \u27A4 ${Ns(t,ha(e.selector))} \u27A4 ${Va(t,e.key,Mt.CODE)}`;default:throw new Error(`Assertion failed: Unsupported package extension type: ${e.type}`)}},json:t=>{switch(t.type){case"Dependency":return`${Cn(t.parentDescriptor)} > ${Cn(t.descriptor)}`;case"PeerDependency":return`${Cn(t.parentDescriptor)} >> ${Cn(t.descriptor)}`;case"PeerDependencyMeta":return`${Cn(t.parentDescriptor)} >> ${t.selector} / ${t.key}`;default:throw new Error(`Assertion failed: Unsupported package extension type: ${t.type}`)}}}),[Mt.SETTING]:yl({pretty:(t,e)=>(t.get(e),yC(t,Va(t,e,Mt.CODE),`https://yarnpkg.com/configuration/yarnrc#${e}`)),json:t=>t}),[Mt.DURATION]:yl({pretty:(t,e)=>{if(e>1e3*60){let r=Math.floor(e/1e3/60),o=Math.ceil((e-r*60*1e3)/1e3);return o===0?`${r}m`:`${r}m ${o}s`}else{let r=Math.floor(e/1e3),o=e-r*1e3;return o===0?`${r}s`:`${r}s ${o}ms`}},json:t=>t}),[Mt.SIZE]:yl({pretty:(t,e)=>{let r=["KB","MB","GB","TB"],o=r.length;for(;o>1&&e<1024**o;)o-=1;let a=1024**o,n=Math.floor(e*100/a)/100;return Va(t,`${n} ${r[o-1]}`,Mt.NUMBER)},json:t=>t}),[Mt.PATH]:yl({pretty:(t,e)=>Va(t,me.fromPortablePath(e),Mt.PATH),json:t=>me.fromPortablePath(t)}),[Mt.MARKDOWN]:yl({pretty:(t,{text:e,format:r,paragraphs:o})=>(0,Aie.formatMarkdownish)(e,{format:r,paragraphs:o}),json:({text:t})=>t})};g$e=!!process.env.KONSOLE_VERSION;dS=(a=>(a.Error="error",a.Warning="warning",a.Info="info",a.Discard="discard",a))(dS||{})});var fie=_((wTt,uie)=>{"use strict";uie.exports=(...t)=>[...new Set([].concat(...t))]});var uL=_((BTt,hie)=>{"use strict";var h$e=Ie("stream"),gie=h$e.PassThrough,d$e=Array.prototype.slice;hie.exports=m$e;function m$e(){let t=[],e=!1,r=d$e.call(arguments),o=r[r.length-1];o&&!Array.isArray(o)&&o.pipe==null?r.pop():o={};let a=o.end!==!1;o.objectMode==null&&(o.objectMode=!0),o.highWaterMark==null&&(o.highWaterMark=64*1024);let n=gie(o);function c(){for(let p=0,E=arguments.length;p0||(e=!1,f())}function Q(x){function C(){x.removeListener("merge2UnpipeEnd",C),x.removeListener("end",C),B()}if(x._readableState.endEmitted)return B();x.on("merge2UnpipeEnd",C),x.on("end",C),x.pipe(n,{end:!1}),x.resume()}for(let x=0;x{"use strict";Object.defineProperty(mS,"__esModule",{value:!0});function y$e(t){return t.reduce((e,r)=>[].concat(e,r),[])}mS.flatten=y$e;function C$e(t,e){let r=[[]],o=0;for(let a of t)e(a)?(o++,r[o]=[]):r[o].push(a);return r}mS.splitWhen=C$e});var mie=_(fL=>{"use strict";Object.defineProperty(fL,"__esModule",{value:!0});function E$e(t){return t.code==="ENOENT"}fL.isEnoentCodeError=E$e});var yie=_(pL=>{"use strict";Object.defineProperty(pL,"__esModule",{value:!0});var gL=class{constructor(e,r){this.name=e,this.isBlockDevice=r.isBlockDevice.bind(r),this.isCharacterDevice=r.isCharacterDevice.bind(r),this.isDirectory=r.isDirectory.bind(r),this.isFIFO=r.isFIFO.bind(r),this.isFile=r.isFile.bind(r),this.isSocket=r.isSocket.bind(r),this.isSymbolicLink=r.isSymbolicLink.bind(r)}};function I$e(t,e){return new gL(t,e)}pL.createDirentFromStats=I$e});var Cie=_(CC=>{"use strict";Object.defineProperty(CC,"__esModule",{value:!0});var w$e=Ie("path"),B$e=2,Q$e=/(\\?)([()*?[\]{|}]|^!|[!+@](?=\())/g;function v$e(t){return t.replace(/\\/g,"/")}CC.unixify=v$e;function D$e(t,e){return w$e.resolve(t,e)}CC.makeAbsolute=D$e;function S$e(t){return t.replace(Q$e,"\\$2")}CC.escape=S$e;function k$e(t){if(t.charAt(0)==="."){let e=t.charAt(1);if(e==="/"||e==="\\")return t.slice(B$e)}return t}CC.removeLeadingDotSegment=k$e});var Iie=_((kTt,Eie)=>{Eie.exports=function(e){if(typeof e!="string"||e==="")return!1;for(var r;r=/(\\).|([@?!+*]\(.*\))/g.exec(e);){if(r[2])return!0;e=e.slice(r.index+r[0].length)}return!1}});var Qie=_((xTt,Bie)=>{var x$e=Iie(),wie={"{":"}","(":")","[":"]"},P$e=function(t){if(t[0]==="!")return!0;for(var e=0,r=-2,o=-2,a=-2,n=-2,c=-2;ee&&(c===-1||c>o||(c=t.indexOf("\\",e),c===-1||c>o)))||a!==-1&&t[e]==="{"&&t[e+1]!=="}"&&(a=t.indexOf("}",e),a>e&&(c=t.indexOf("\\",e),c===-1||c>a))||n!==-1&&t[e]==="("&&t[e+1]==="?"&&/[:!=]/.test(t[e+2])&&t[e+3]!==")"&&(n=t.indexOf(")",e),n>e&&(c=t.indexOf("\\",e),c===-1||c>n))||r!==-1&&t[e]==="("&&t[e+1]!=="|"&&(rr&&(c=t.indexOf("\\",r),c===-1||c>n))))return!0;if(t[e]==="\\"){var f=t[e+1];e+=2;var g=wie[f];if(g){var p=t.indexOf(g,e);p!==-1&&(e=p+1)}if(t[e]==="!")return!0}else e++}return!1},b$e=function(t){if(t[0]==="!")return!0;for(var e=0;e{"use strict";var F$e=Qie(),R$e=Ie("path").posix.dirname,T$e=Ie("os").platform()==="win32",hL="/",N$e=/\\/g,M$e=/[\{\[].*[\}\]]$/,L$e=/(^|[^\\])([\{\[]|\([^\)]+$)/,O$e=/\\([\!\*\?\|\[\]\(\)\{\}])/g;vie.exports=function(e,r){var o=Object.assign({flipBackslashes:!0},r);o.flipBackslashes&&T$e&&e.indexOf(hL)<0&&(e=e.replace(N$e,hL)),M$e.test(e)&&(e+=hL),e+="a";do e=R$e(e);while(F$e(e)||L$e.test(e));return e.replace(O$e,"$1")}});var Nie=_(ds=>{"use strict";Object.defineProperty(ds,"__esModule",{value:!0});var U$e=Ie("path"),K$e=Die(),Sie=pa(),_$e=hM(),kie="**",H$e="\\",q$e=/[*?]|^!/,G$e=/\[.*]/,j$e=/(?:^|[^!*+?@])\(.*\|.*\)/,Y$e=/[!*+?@]\(.*\)/,W$e=/{.*(?:,|\.\.).*}/;function xie(t,e={}){return!Pie(t,e)}ds.isStaticPattern=xie;function Pie(t,e={}){return!!(e.caseSensitiveMatch===!1||t.includes(H$e)||q$e.test(t)||G$e.test(t)||j$e.test(t)||e.extglob!==!1&&Y$e.test(t)||e.braceExpansion!==!1&&W$e.test(t))}ds.isDynamicPattern=Pie;function J$e(t){return yS(t)?t.slice(1):t}ds.convertToPositivePattern=J$e;function V$e(t){return"!"+t}ds.convertToNegativePattern=V$e;function yS(t){return t.startsWith("!")&&t[1]!=="("}ds.isNegativePattern=yS;function bie(t){return!yS(t)}ds.isPositivePattern=bie;function z$e(t){return t.filter(yS)}ds.getNegativePatterns=z$e;function X$e(t){return t.filter(bie)}ds.getPositivePatterns=X$e;function Z$e(t){return K$e(t,{flipBackslashes:!1})}ds.getBaseDirectory=Z$e;function $$e(t){return t.includes(kie)}ds.hasGlobStar=$$e;function Fie(t){return t.endsWith("/"+kie)}ds.endsWithSlashGlobStar=Fie;function eet(t){let e=U$e.basename(t);return Fie(t)||xie(e)}ds.isAffectDepthOfReadingPattern=eet;function tet(t){return t.reduce((e,r)=>e.concat(Rie(r)),[])}ds.expandPatternsWithBraceExpansion=tet;function Rie(t){return Sie.braces(t,{expand:!0,nodupes:!0})}ds.expandBraceExpansion=Rie;function ret(t,e){let r=_$e.scan(t,Object.assign(Object.assign({},e),{parts:!0}));return r.parts.length===0?[t]:r.parts}ds.getPatternParts=ret;function Tie(t,e){return Sie.makeRe(t,e)}ds.makeRe=Tie;function net(t,e){return t.map(r=>Tie(r,e))}ds.convertPatternsToRe=net;function iet(t,e){return e.some(r=>r.test(t))}ds.matchAny=iet});var Lie=_(dL=>{"use strict";Object.defineProperty(dL,"__esModule",{value:!0});var set=uL();function oet(t){let e=set(t);return t.forEach(r=>{r.once("error",o=>e.emit("error",o))}),e.once("close",()=>Mie(t)),e.once("end",()=>Mie(t)),e}dL.merge=oet;function Mie(t){t.forEach(e=>e.emit("close"))}});var Oie=_(CS=>{"use strict";Object.defineProperty(CS,"__esModule",{value:!0});function aet(t){return typeof t=="string"}CS.isString=aet;function Aet(t){return t===""}CS.isEmpty=Aet});var Wf=_(Yf=>{"use strict";Object.defineProperty(Yf,"__esModule",{value:!0});var cet=die();Yf.array=cet;var uet=mie();Yf.errno=uet;var fet=yie();Yf.fs=fet;var get=Cie();Yf.path=get;var pet=Nie();Yf.pattern=pet;var het=Lie();Yf.stream=het;var det=Oie();Yf.string=det});var qie=_(Jf=>{"use strict";Object.defineProperty(Jf,"__esModule",{value:!0});var Gd=Wf();function met(t,e){let r=Uie(t),o=Kie(t,e.ignore),a=r.filter(g=>Gd.pattern.isStaticPattern(g,e)),n=r.filter(g=>Gd.pattern.isDynamicPattern(g,e)),c=mL(a,o,!1),f=mL(n,o,!0);return c.concat(f)}Jf.generate=met;function mL(t,e,r){let o=_ie(t);return"."in o?[yL(".",t,e,r)]:Hie(o,e,r)}Jf.convertPatternsToTasks=mL;function Uie(t){return Gd.pattern.getPositivePatterns(t)}Jf.getPositivePatterns=Uie;function Kie(t,e){return Gd.pattern.getNegativePatterns(t).concat(e).map(Gd.pattern.convertToPositivePattern)}Jf.getNegativePatternsAsPositive=Kie;function _ie(t){let e={};return t.reduce((r,o)=>{let a=Gd.pattern.getBaseDirectory(o);return a in r?r[a].push(o):r[a]=[o],r},e)}Jf.groupPatternsByBaseDirectory=_ie;function Hie(t,e,r){return Object.keys(t).map(o=>yL(o,t[o],e,r))}Jf.convertPatternGroupsToTasks=Hie;function yL(t,e,r,o){return{dynamic:o,positive:e,negative:r,base:t,patterns:[].concat(e,r.map(Gd.pattern.convertToNegativePattern))}}Jf.convertPatternGroupToTask=yL});var jie=_(ES=>{"use strict";Object.defineProperty(ES,"__esModule",{value:!0});ES.read=void 0;function yet(t,e,r){e.fs.lstat(t,(o,a)=>{if(o!==null){Gie(r,o);return}if(!a.isSymbolicLink()||!e.followSymbolicLink){CL(r,a);return}e.fs.stat(t,(n,c)=>{if(n!==null){if(e.throwErrorOnBrokenSymbolicLink){Gie(r,n);return}CL(r,a);return}e.markSymbolicLink&&(c.isSymbolicLink=()=>!0),CL(r,c)})})}ES.read=yet;function Gie(t,e){t(e)}function CL(t,e){t(null,e)}});var Yie=_(IS=>{"use strict";Object.defineProperty(IS,"__esModule",{value:!0});IS.read=void 0;function Cet(t,e){let r=e.fs.lstatSync(t);if(!r.isSymbolicLink()||!e.followSymbolicLink)return r;try{let o=e.fs.statSync(t);return e.markSymbolicLink&&(o.isSymbolicLink=()=>!0),o}catch(o){if(!e.throwErrorOnBrokenSymbolicLink)return r;throw o}}IS.read=Cet});var Wie=_(Ip=>{"use strict";Object.defineProperty(Ip,"__esModule",{value:!0});Ip.createFileSystemAdapter=Ip.FILE_SYSTEM_ADAPTER=void 0;var wS=Ie("fs");Ip.FILE_SYSTEM_ADAPTER={lstat:wS.lstat,stat:wS.stat,lstatSync:wS.lstatSync,statSync:wS.statSync};function Eet(t){return t===void 0?Ip.FILE_SYSTEM_ADAPTER:Object.assign(Object.assign({},Ip.FILE_SYSTEM_ADAPTER),t)}Ip.createFileSystemAdapter=Eet});var Jie=_(IL=>{"use strict";Object.defineProperty(IL,"__esModule",{value:!0});var Iet=Wie(),EL=class{constructor(e={}){this._options=e,this.followSymbolicLink=this._getValue(this._options.followSymbolicLink,!0),this.fs=Iet.createFileSystemAdapter(this._options.fs),this.markSymbolicLink=this._getValue(this._options.markSymbolicLink,!1),this.throwErrorOnBrokenSymbolicLink=this._getValue(this._options.throwErrorOnBrokenSymbolicLink,!0)}_getValue(e,r){return e??r}};IL.default=EL});var jd=_(wp=>{"use strict";Object.defineProperty(wp,"__esModule",{value:!0});wp.statSync=wp.stat=wp.Settings=void 0;var Vie=jie(),wet=Yie(),wL=Jie();wp.Settings=wL.default;function Bet(t,e,r){if(typeof e=="function"){Vie.read(t,BL(),e);return}Vie.read(t,BL(e),r)}wp.stat=Bet;function Qet(t,e){let r=BL(e);return wet.read(t,r)}wp.statSync=Qet;function BL(t={}){return t instanceof wL.default?t:new wL.default(t)}});var Xie=_((_Tt,zie)=>{zie.exports=vet;function vet(t,e){var r,o,a,n=!0;Array.isArray(t)?(r=[],o=t.length):(a=Object.keys(t),r={},o=a.length);function c(g){function p(){e&&e(g,r),e=null}n?process.nextTick(p):p()}function f(g,p,E){r[g]=E,(--o===0||p)&&c(p)}o?a?a.forEach(function(g){t[g](function(p,E){f(g,p,E)})}):t.forEach(function(g,p){g(function(E,B){f(p,E,B)})}):c(null),n=!1}});var QL=_(QS=>{"use strict";Object.defineProperty(QS,"__esModule",{value:!0});QS.IS_SUPPORT_READDIR_WITH_FILE_TYPES=void 0;var BS=process.versions.node.split(".");if(BS[0]===void 0||BS[1]===void 0)throw new Error(`Unexpected behavior. The 'process.versions.node' variable has invalid value: ${process.versions.node}`);var Zie=Number.parseInt(BS[0],10),Det=Number.parseInt(BS[1],10),$ie=10,ket=10,xet=Zie>$ie,Pet=Zie===$ie&&Det>=ket;QS.IS_SUPPORT_READDIR_WITH_FILE_TYPES=xet||Pet});var ese=_(vS=>{"use strict";Object.defineProperty(vS,"__esModule",{value:!0});vS.createDirentFromStats=void 0;var vL=class{constructor(e,r){this.name=e,this.isBlockDevice=r.isBlockDevice.bind(r),this.isCharacterDevice=r.isCharacterDevice.bind(r),this.isDirectory=r.isDirectory.bind(r),this.isFIFO=r.isFIFO.bind(r),this.isFile=r.isFile.bind(r),this.isSocket=r.isSocket.bind(r),this.isSymbolicLink=r.isSymbolicLink.bind(r)}};function bet(t,e){return new vL(t,e)}vS.createDirentFromStats=bet});var DL=_(DS=>{"use strict";Object.defineProperty(DS,"__esModule",{value:!0});DS.fs=void 0;var Fet=ese();DS.fs=Fet});var SL=_(SS=>{"use strict";Object.defineProperty(SS,"__esModule",{value:!0});SS.joinPathSegments=void 0;function Ret(t,e,r){return t.endsWith(r)?t+e:t+r+e}SS.joinPathSegments=Ret});var ose=_(Bp=>{"use strict";Object.defineProperty(Bp,"__esModule",{value:!0});Bp.readdir=Bp.readdirWithFileTypes=Bp.read=void 0;var Tet=jd(),tse=Xie(),Net=QL(),rse=DL(),nse=SL();function Met(t,e,r){if(!e.stats&&Net.IS_SUPPORT_READDIR_WITH_FILE_TYPES){ise(t,e,r);return}sse(t,e,r)}Bp.read=Met;function ise(t,e,r){e.fs.readdir(t,{withFileTypes:!0},(o,a)=>{if(o!==null){kS(r,o);return}let n=a.map(f=>({dirent:f,name:f.name,path:nse.joinPathSegments(t,f.name,e.pathSegmentSeparator)}));if(!e.followSymbolicLinks){kL(r,n);return}let c=n.map(f=>Let(f,e));tse(c,(f,g)=>{if(f!==null){kS(r,f);return}kL(r,g)})})}Bp.readdirWithFileTypes=ise;function Let(t,e){return r=>{if(!t.dirent.isSymbolicLink()){r(null,t);return}e.fs.stat(t.path,(o,a)=>{if(o!==null){if(e.throwErrorOnBrokenSymbolicLink){r(o);return}r(null,t);return}t.dirent=rse.fs.createDirentFromStats(t.name,a),r(null,t)})}}function sse(t,e,r){e.fs.readdir(t,(o,a)=>{if(o!==null){kS(r,o);return}let n=a.map(c=>{let f=nse.joinPathSegments(t,c,e.pathSegmentSeparator);return g=>{Tet.stat(f,e.fsStatSettings,(p,E)=>{if(p!==null){g(p);return}let B={name:c,path:f,dirent:rse.fs.createDirentFromStats(c,E)};e.stats&&(B.stats=E),g(null,B)})}});tse(n,(c,f)=>{if(c!==null){kS(r,c);return}kL(r,f)})})}Bp.readdir=sse;function kS(t,e){t(e)}function kL(t,e){t(null,e)}});var use=_(Qp=>{"use strict";Object.defineProperty(Qp,"__esModule",{value:!0});Qp.readdir=Qp.readdirWithFileTypes=Qp.read=void 0;var Oet=jd(),Uet=QL(),ase=DL(),Ase=SL();function Ket(t,e){return!e.stats&&Uet.IS_SUPPORT_READDIR_WITH_FILE_TYPES?lse(t,e):cse(t,e)}Qp.read=Ket;function lse(t,e){return e.fs.readdirSync(t,{withFileTypes:!0}).map(o=>{let a={dirent:o,name:o.name,path:Ase.joinPathSegments(t,o.name,e.pathSegmentSeparator)};if(a.dirent.isSymbolicLink()&&e.followSymbolicLinks)try{let n=e.fs.statSync(a.path);a.dirent=ase.fs.createDirentFromStats(a.name,n)}catch(n){if(e.throwErrorOnBrokenSymbolicLink)throw n}return a})}Qp.readdirWithFileTypes=lse;function cse(t,e){return e.fs.readdirSync(t).map(o=>{let a=Ase.joinPathSegments(t,o,e.pathSegmentSeparator),n=Oet.statSync(a,e.fsStatSettings),c={name:o,path:a,dirent:ase.fs.createDirentFromStats(o,n)};return e.stats&&(c.stats=n),c})}Qp.readdir=cse});var fse=_(vp=>{"use strict";Object.defineProperty(vp,"__esModule",{value:!0});vp.createFileSystemAdapter=vp.FILE_SYSTEM_ADAPTER=void 0;var EC=Ie("fs");vp.FILE_SYSTEM_ADAPTER={lstat:EC.lstat,stat:EC.stat,lstatSync:EC.lstatSync,statSync:EC.statSync,readdir:EC.readdir,readdirSync:EC.readdirSync};function _et(t){return t===void 0?vp.FILE_SYSTEM_ADAPTER:Object.assign(Object.assign({},vp.FILE_SYSTEM_ADAPTER),t)}vp.createFileSystemAdapter=_et});var gse=_(PL=>{"use strict";Object.defineProperty(PL,"__esModule",{value:!0});var Het=Ie("path"),qet=jd(),Get=fse(),xL=class{constructor(e={}){this._options=e,this.followSymbolicLinks=this._getValue(this._options.followSymbolicLinks,!1),this.fs=Get.createFileSystemAdapter(this._options.fs),this.pathSegmentSeparator=this._getValue(this._options.pathSegmentSeparator,Het.sep),this.stats=this._getValue(this._options.stats,!1),this.throwErrorOnBrokenSymbolicLink=this._getValue(this._options.throwErrorOnBrokenSymbolicLink,!0),this.fsStatSettings=new qet.Settings({followSymbolicLink:this.followSymbolicLinks,fs:this.fs,throwErrorOnBrokenSymbolicLink:this.throwErrorOnBrokenSymbolicLink})}_getValue(e,r){return e??r}};PL.default=xL});var xS=_(Dp=>{"use strict";Object.defineProperty(Dp,"__esModule",{value:!0});Dp.Settings=Dp.scandirSync=Dp.scandir=void 0;var pse=ose(),jet=use(),bL=gse();Dp.Settings=bL.default;function Yet(t,e,r){if(typeof e=="function"){pse.read(t,FL(),e);return}pse.read(t,FL(e),r)}Dp.scandir=Yet;function Wet(t,e){let r=FL(e);return jet.read(t,r)}Dp.scandirSync=Wet;function FL(t={}){return t instanceof bL.default?t:new bL.default(t)}});var dse=_((XTt,hse)=>{"use strict";function Jet(t){var e=new t,r=e;function o(){var n=e;return n.next?e=n.next:(e=new t,r=e),n.next=null,n}function a(n){r.next=n,r=n}return{get:o,release:a}}hse.exports=Jet});var yse=_((ZTt,RL)=>{"use strict";var Vet=dse();function mse(t,e,r){if(typeof t=="function"&&(r=e,e=t,t=null),r<1)throw new Error("fastqueue concurrency must be greater than 1");var o=Vet(zet),a=null,n=null,c=0,f=null,g={push:N,drain:Il,saturated:Il,pause:E,paused:!1,concurrency:r,running:p,resume:x,idle:C,length:B,getQueue:Q,unshift:U,empty:Il,kill:X,killAndDrain:ie,error:fe};return g;function p(){return c}function E(){g.paused=!0}function B(){for(var ye=a,Qe=0;ye;)ye=ye.next,Qe++;return Qe}function Q(){for(var ye=a,Qe=[];ye;)Qe.push(ye.value),ye=ye.next;return Qe}function x(){if(!!g.paused){g.paused=!1;for(var ye=0;ye{"use strict";Object.defineProperty(Eu,"__esModule",{value:!0});Eu.joinPathSegments=Eu.replacePathSegmentSeparator=Eu.isAppliedFilter=Eu.isFatalError=void 0;function Zet(t,e){return t.errorFilter===null?!0:!t.errorFilter(e)}Eu.isFatalError=Zet;function $et(t,e){return t===null||t(e)}Eu.isAppliedFilter=$et;function ett(t,e){return t.split(/[/\\]/).join(e)}Eu.replacePathSegmentSeparator=ett;function ttt(t,e,r){return t===""?e:t.endsWith(r)?t+e:t+r+e}Eu.joinPathSegments=ttt});var ML=_(NL=>{"use strict";Object.defineProperty(NL,"__esModule",{value:!0});var rtt=PS(),TL=class{constructor(e,r){this._root=e,this._settings=r,this._root=rtt.replacePathSegmentSeparator(e,r.pathSegmentSeparator)}};NL.default=TL});var UL=_(OL=>{"use strict";Object.defineProperty(OL,"__esModule",{value:!0});var ntt=Ie("events"),itt=xS(),stt=yse(),bS=PS(),ott=ML(),LL=class extends ott.default{constructor(e,r){super(e,r),this._settings=r,this._scandir=itt.scandir,this._emitter=new ntt.EventEmitter,this._queue=stt(this._worker.bind(this),this._settings.concurrency),this._isFatalError=!1,this._isDestroyed=!1,this._queue.drain=()=>{this._isFatalError||this._emitter.emit("end")}}read(){return this._isFatalError=!1,this._isDestroyed=!1,setImmediate(()=>{this._pushToQueue(this._root,this._settings.basePath)}),this._emitter}get isDestroyed(){return this._isDestroyed}destroy(){if(this._isDestroyed)throw new Error("The reader is already destroyed");this._isDestroyed=!0,this._queue.killAndDrain()}onEntry(e){this._emitter.on("entry",e)}onError(e){this._emitter.once("error",e)}onEnd(e){this._emitter.once("end",e)}_pushToQueue(e,r){let o={directory:e,base:r};this._queue.push(o,a=>{a!==null&&this._handleError(a)})}_worker(e,r){this._scandir(e.directory,this._settings.fsScandirSettings,(o,a)=>{if(o!==null){r(o,void 0);return}for(let n of a)this._handleEntry(n,e.base);r(null,void 0)})}_handleError(e){this._isDestroyed||!bS.isFatalError(this._settings,e)||(this._isFatalError=!0,this._isDestroyed=!0,this._emitter.emit("error",e))}_handleEntry(e,r){if(this._isDestroyed||this._isFatalError)return;let o=e.path;r!==void 0&&(e.path=bS.joinPathSegments(r,e.name,this._settings.pathSegmentSeparator)),bS.isAppliedFilter(this._settings.entryFilter,e)&&this._emitEntry(e),e.dirent.isDirectory()&&bS.isAppliedFilter(this._settings.deepFilter,e)&&this._pushToQueue(o,e.path)}_emitEntry(e){this._emitter.emit("entry",e)}};OL.default=LL});var Cse=_(_L=>{"use strict";Object.defineProperty(_L,"__esModule",{value:!0});var att=UL(),KL=class{constructor(e,r){this._root=e,this._settings=r,this._reader=new att.default(this._root,this._settings),this._storage=new Set}read(e){this._reader.onError(r=>{Att(e,r)}),this._reader.onEntry(r=>{this._storage.add(r)}),this._reader.onEnd(()=>{ltt(e,[...this._storage])}),this._reader.read()}};_L.default=KL;function Att(t,e){t(e)}function ltt(t,e){t(null,e)}});var Ese=_(qL=>{"use strict";Object.defineProperty(qL,"__esModule",{value:!0});var ctt=Ie("stream"),utt=UL(),HL=class{constructor(e,r){this._root=e,this._settings=r,this._reader=new utt.default(this._root,this._settings),this._stream=new ctt.Readable({objectMode:!0,read:()=>{},destroy:()=>{this._reader.isDestroyed||this._reader.destroy()}})}read(){return this._reader.onError(e=>{this._stream.emit("error",e)}),this._reader.onEntry(e=>{this._stream.push(e)}),this._reader.onEnd(()=>{this._stream.push(null)}),this._reader.read(),this._stream}};qL.default=HL});var Ise=_(YL=>{"use strict";Object.defineProperty(YL,"__esModule",{value:!0});var ftt=xS(),RS=PS(),gtt=ML(),jL=class extends gtt.default{constructor(){super(...arguments),this._scandir=ftt.scandirSync,this._storage=new Set,this._queue=new Set}read(){return this._pushToQueue(this._root,this._settings.basePath),this._handleQueue(),[...this._storage]}_pushToQueue(e,r){this._queue.add({directory:e,base:r})}_handleQueue(){for(let e of this._queue.values())this._handleDirectory(e.directory,e.base)}_handleDirectory(e,r){try{let o=this._scandir(e,this._settings.fsScandirSettings);for(let a of o)this._handleEntry(a,r)}catch(o){this._handleError(o)}}_handleError(e){if(!!RS.isFatalError(this._settings,e))throw e}_handleEntry(e,r){let o=e.path;r!==void 0&&(e.path=RS.joinPathSegments(r,e.name,this._settings.pathSegmentSeparator)),RS.isAppliedFilter(this._settings.entryFilter,e)&&this._pushToStorage(e),e.dirent.isDirectory()&&RS.isAppliedFilter(this._settings.deepFilter,e)&&this._pushToQueue(o,e.path)}_pushToStorage(e){this._storage.add(e)}};YL.default=jL});var wse=_(JL=>{"use strict";Object.defineProperty(JL,"__esModule",{value:!0});var ptt=Ise(),WL=class{constructor(e,r){this._root=e,this._settings=r,this._reader=new ptt.default(this._root,this._settings)}read(){return this._reader.read()}};JL.default=WL});var Bse=_(zL=>{"use strict";Object.defineProperty(zL,"__esModule",{value:!0});var htt=Ie("path"),dtt=xS(),VL=class{constructor(e={}){this._options=e,this.basePath=this._getValue(this._options.basePath,void 0),this.concurrency=this._getValue(this._options.concurrency,Number.POSITIVE_INFINITY),this.deepFilter=this._getValue(this._options.deepFilter,null),this.entryFilter=this._getValue(this._options.entryFilter,null),this.errorFilter=this._getValue(this._options.errorFilter,null),this.pathSegmentSeparator=this._getValue(this._options.pathSegmentSeparator,htt.sep),this.fsScandirSettings=new dtt.Settings({followSymbolicLinks:this._options.followSymbolicLinks,fs:this._options.fs,pathSegmentSeparator:this._options.pathSegmentSeparator,stats:this._options.stats,throwErrorOnBrokenSymbolicLink:this._options.throwErrorOnBrokenSymbolicLink})}_getValue(e,r){return e??r}};zL.default=VL});var ZL=_(Iu=>{"use strict";Object.defineProperty(Iu,"__esModule",{value:!0});Iu.Settings=Iu.walkStream=Iu.walkSync=Iu.walk=void 0;var Qse=Cse(),mtt=Ese(),ytt=wse(),XL=Bse();Iu.Settings=XL.default;function Ctt(t,e,r){if(typeof e=="function"){new Qse.default(t,TS()).read(e);return}new Qse.default(t,TS(e)).read(r)}Iu.walk=Ctt;function Ett(t,e){let r=TS(e);return new ytt.default(t,r).read()}Iu.walkSync=Ett;function Itt(t,e){let r=TS(e);return new mtt.default(t,r).read()}Iu.walkStream=Itt;function TS(t={}){return t instanceof XL.default?t:new XL.default(t)}});var tO=_(eO=>{"use strict";Object.defineProperty(eO,"__esModule",{value:!0});var wtt=Ie("path"),Btt=jd(),vse=Wf(),$L=class{constructor(e){this._settings=e,this._fsStatSettings=new Btt.Settings({followSymbolicLink:this._settings.followSymbolicLinks,fs:this._settings.fs,throwErrorOnBrokenSymbolicLink:this._settings.followSymbolicLinks})}_getFullEntryPath(e){return wtt.resolve(this._settings.cwd,e)}_makeEntry(e,r){let o={name:r,path:r,dirent:vse.fs.createDirentFromStats(r,e)};return this._settings.stats&&(o.stats=e),o}_isFatalError(e){return!vse.errno.isEnoentCodeError(e)&&!this._settings.suppressErrors}};eO.default=$L});var iO=_(nO=>{"use strict";Object.defineProperty(nO,"__esModule",{value:!0});var Qtt=Ie("stream"),vtt=jd(),Dtt=ZL(),Stt=tO(),rO=class extends Stt.default{constructor(){super(...arguments),this._walkStream=Dtt.walkStream,this._stat=vtt.stat}dynamic(e,r){return this._walkStream(e,r)}static(e,r){let o=e.map(this._getFullEntryPath,this),a=new Qtt.PassThrough({objectMode:!0});a._write=(n,c,f)=>this._getEntry(o[n],e[n],r).then(g=>{g!==null&&r.entryFilter(g)&&a.push(g),n===o.length-1&&a.end(),f()}).catch(f);for(let n=0;nthis._makeEntry(a,r)).catch(a=>{if(o.errorFilter(a))return null;throw a})}_getStat(e){return new Promise((r,o)=>{this._stat(e,this._fsStatSettings,(a,n)=>a===null?r(n):o(a))})}};nO.default=rO});var Dse=_(oO=>{"use strict";Object.defineProperty(oO,"__esModule",{value:!0});var IC=Wf(),sO=class{constructor(e,r,o){this._patterns=e,this._settings=r,this._micromatchOptions=o,this._storage=[],this._fillStorage()}_fillStorage(){let e=IC.pattern.expandPatternsWithBraceExpansion(this._patterns);for(let r of e){let o=this._getPatternSegments(r),a=this._splitSegmentsIntoSections(o);this._storage.push({complete:a.length<=1,pattern:r,segments:o,sections:a})}}_getPatternSegments(e){return IC.pattern.getPatternParts(e,this._micromatchOptions).map(o=>IC.pattern.isDynamicPattern(o,this._settings)?{dynamic:!0,pattern:o,patternRe:IC.pattern.makeRe(o,this._micromatchOptions)}:{dynamic:!1,pattern:o})}_splitSegmentsIntoSections(e){return IC.array.splitWhen(e,r=>r.dynamic&&IC.pattern.hasGlobStar(r.pattern))}};oO.default=sO});var Sse=_(AO=>{"use strict";Object.defineProperty(AO,"__esModule",{value:!0});var ktt=Dse(),aO=class extends ktt.default{match(e){let r=e.split("/"),o=r.length,a=this._storage.filter(n=>!n.complete||n.segments.length>o);for(let n of a){let c=n.sections[0];if(!n.complete&&o>c.length||r.every((g,p)=>{let E=n.segments[p];return!!(E.dynamic&&E.patternRe.test(g)||!E.dynamic&&E.pattern===g)}))return!0}return!1}};AO.default=aO});var kse=_(cO=>{"use strict";Object.defineProperty(cO,"__esModule",{value:!0});var NS=Wf(),xtt=Sse(),lO=class{constructor(e,r){this._settings=e,this._micromatchOptions=r}getFilter(e,r,o){let a=this._getMatcher(r),n=this._getNegativePatternsRe(o);return c=>this._filter(e,c,a,n)}_getMatcher(e){return new xtt.default(e,this._settings,this._micromatchOptions)}_getNegativePatternsRe(e){let r=e.filter(NS.pattern.isAffectDepthOfReadingPattern);return NS.pattern.convertPatternsToRe(r,this._micromatchOptions)}_filter(e,r,o,a){let n=this._getEntryLevel(e,r.path);if(this._isSkippedByDeep(n)||this._isSkippedSymbolicLink(r))return!1;let c=NS.path.removeLeadingDotSegment(r.path);return this._isSkippedByPositivePatterns(c,o)?!1:this._isSkippedByNegativePatterns(c,a)}_isSkippedByDeep(e){return e>=this._settings.deep}_isSkippedSymbolicLink(e){return!this._settings.followSymbolicLinks&&e.dirent.isSymbolicLink()}_getEntryLevel(e,r){let o=e.split("/").length;return r.split("/").length-(e===""?0:o)}_isSkippedByPositivePatterns(e,r){return!this._settings.baseNameMatch&&!r.match(e)}_isSkippedByNegativePatterns(e,r){return!NS.pattern.matchAny(e,r)}};cO.default=lO});var xse=_(fO=>{"use strict";Object.defineProperty(fO,"__esModule",{value:!0});var cB=Wf(),uO=class{constructor(e,r){this._settings=e,this._micromatchOptions=r,this.index=new Map}getFilter(e,r){let o=cB.pattern.convertPatternsToRe(e,this._micromatchOptions),a=cB.pattern.convertPatternsToRe(r,this._micromatchOptions);return n=>this._filter(n,o,a)}_filter(e,r,o){if(this._settings.unique){if(this._isDuplicateEntry(e))return!1;this._createIndexRecord(e)}if(this._onlyFileFilter(e)||this._onlyDirectoryFilter(e)||this._isSkippedByAbsoluteNegativePatterns(e,o))return!1;let a=this._settings.baseNameMatch?e.name:e.path;return this._isMatchToPatterns(a,r)&&!this._isMatchToPatterns(e.path,o)}_isDuplicateEntry(e){return this.index.has(e.path)}_createIndexRecord(e){this.index.set(e.path,void 0)}_onlyFileFilter(e){return this._settings.onlyFiles&&!e.dirent.isFile()}_onlyDirectoryFilter(e){return this._settings.onlyDirectories&&!e.dirent.isDirectory()}_isSkippedByAbsoluteNegativePatterns(e,r){if(!this._settings.absolute)return!1;let o=cB.path.makeAbsolute(this._settings.cwd,e.path);return this._isMatchToPatterns(o,r)}_isMatchToPatterns(e,r){let o=cB.path.removeLeadingDotSegment(e);return cB.pattern.matchAny(o,r)}};fO.default=uO});var Pse=_(pO=>{"use strict";Object.defineProperty(pO,"__esModule",{value:!0});var Ptt=Wf(),gO=class{constructor(e){this._settings=e}getFilter(){return e=>this._isNonFatalError(e)}_isNonFatalError(e){return Ptt.errno.isEnoentCodeError(e)||this._settings.suppressErrors}};pO.default=gO});var Fse=_(dO=>{"use strict";Object.defineProperty(dO,"__esModule",{value:!0});var bse=Wf(),hO=class{constructor(e){this._settings=e}getTransformer(){return e=>this._transform(e)}_transform(e){let r=e.path;return this._settings.absolute&&(r=bse.path.makeAbsolute(this._settings.cwd,r),r=bse.path.unixify(r)),this._settings.markDirectories&&e.dirent.isDirectory()&&(r+="/"),this._settings.objectMode?Object.assign(Object.assign({},e),{path:r}):r}};dO.default=hO});var MS=_(yO=>{"use strict";Object.defineProperty(yO,"__esModule",{value:!0});var btt=Ie("path"),Ftt=kse(),Rtt=xse(),Ttt=Pse(),Ntt=Fse(),mO=class{constructor(e){this._settings=e,this.errorFilter=new Ttt.default(this._settings),this.entryFilter=new Rtt.default(this._settings,this._getMicromatchOptions()),this.deepFilter=new Ftt.default(this._settings,this._getMicromatchOptions()),this.entryTransformer=new Ntt.default(this._settings)}_getRootDirectory(e){return btt.resolve(this._settings.cwd,e.base)}_getReaderOptions(e){let r=e.base==="."?"":e.base;return{basePath:r,pathSegmentSeparator:"/",concurrency:this._settings.concurrency,deepFilter:this.deepFilter.getFilter(r,e.positive,e.negative),entryFilter:this.entryFilter.getFilter(e.positive,e.negative),errorFilter:this.errorFilter.getFilter(),followSymbolicLinks:this._settings.followSymbolicLinks,fs:this._settings.fs,stats:this._settings.stats,throwErrorOnBrokenSymbolicLink:this._settings.throwErrorOnBrokenSymbolicLink,transform:this.entryTransformer.getTransformer()}}_getMicromatchOptions(){return{dot:this._settings.dot,matchBase:this._settings.baseNameMatch,nobrace:!this._settings.braceExpansion,nocase:!this._settings.caseSensitiveMatch,noext:!this._settings.extglob,noglobstar:!this._settings.globstar,posix:!0,strictSlashes:!1}}};yO.default=mO});var Rse=_(EO=>{"use strict";Object.defineProperty(EO,"__esModule",{value:!0});var Mtt=iO(),Ltt=MS(),CO=class extends Ltt.default{constructor(){super(...arguments),this._reader=new Mtt.default(this._settings)}read(e){let r=this._getRootDirectory(e),o=this._getReaderOptions(e),a=[];return new Promise((n,c)=>{let f=this.api(r,e,o);f.once("error",c),f.on("data",g=>a.push(o.transform(g))),f.once("end",()=>n(a))})}api(e,r,o){return r.dynamic?this._reader.dynamic(e,o):this._reader.static(r.patterns,o)}};EO.default=CO});var Tse=_(wO=>{"use strict";Object.defineProperty(wO,"__esModule",{value:!0});var Ott=Ie("stream"),Utt=iO(),Ktt=MS(),IO=class extends Ktt.default{constructor(){super(...arguments),this._reader=new Utt.default(this._settings)}read(e){let r=this._getRootDirectory(e),o=this._getReaderOptions(e),a=this.api(r,e,o),n=new Ott.Readable({objectMode:!0,read:()=>{}});return a.once("error",c=>n.emit("error",c)).on("data",c=>n.emit("data",o.transform(c))).once("end",()=>n.emit("end")),n.once("close",()=>a.destroy()),n}api(e,r,o){return r.dynamic?this._reader.dynamic(e,o):this._reader.static(r.patterns,o)}};wO.default=IO});var Nse=_(QO=>{"use strict";Object.defineProperty(QO,"__esModule",{value:!0});var _tt=jd(),Htt=ZL(),qtt=tO(),BO=class extends qtt.default{constructor(){super(...arguments),this._walkSync=Htt.walkSync,this._statSync=_tt.statSync}dynamic(e,r){return this._walkSync(e,r)}static(e,r){let o=[];for(let a of e){let n=this._getFullEntryPath(a),c=this._getEntry(n,a,r);c===null||!r.entryFilter(c)||o.push(c)}return o}_getEntry(e,r,o){try{let a=this._getStat(e);return this._makeEntry(a,r)}catch(a){if(o.errorFilter(a))return null;throw a}}_getStat(e){return this._statSync(e,this._fsStatSettings)}};QO.default=BO});var Mse=_(DO=>{"use strict";Object.defineProperty(DO,"__esModule",{value:!0});var Gtt=Nse(),jtt=MS(),vO=class extends jtt.default{constructor(){super(...arguments),this._reader=new Gtt.default(this._settings)}read(e){let r=this._getRootDirectory(e),o=this._getReaderOptions(e);return this.api(r,e,o).map(o.transform)}api(e,r,o){return r.dynamic?this._reader.dynamic(e,o):this._reader.static(r.patterns,o)}};DO.default=vO});var Lse=_(uB=>{"use strict";Object.defineProperty(uB,"__esModule",{value:!0});var wC=Ie("fs"),Ytt=Ie("os"),Wtt=Ytt.cpus().length;uB.DEFAULT_FILE_SYSTEM_ADAPTER={lstat:wC.lstat,lstatSync:wC.lstatSync,stat:wC.stat,statSync:wC.statSync,readdir:wC.readdir,readdirSync:wC.readdirSync};var SO=class{constructor(e={}){this._options=e,this.absolute=this._getValue(this._options.absolute,!1),this.baseNameMatch=this._getValue(this._options.baseNameMatch,!1),this.braceExpansion=this._getValue(this._options.braceExpansion,!0),this.caseSensitiveMatch=this._getValue(this._options.caseSensitiveMatch,!0),this.concurrency=this._getValue(this._options.concurrency,Wtt),this.cwd=this._getValue(this._options.cwd,process.cwd()),this.deep=this._getValue(this._options.deep,1/0),this.dot=this._getValue(this._options.dot,!1),this.extglob=this._getValue(this._options.extglob,!0),this.followSymbolicLinks=this._getValue(this._options.followSymbolicLinks,!0),this.fs=this._getFileSystemMethods(this._options.fs),this.globstar=this._getValue(this._options.globstar,!0),this.ignore=this._getValue(this._options.ignore,[]),this.markDirectories=this._getValue(this._options.markDirectories,!1),this.objectMode=this._getValue(this._options.objectMode,!1),this.onlyDirectories=this._getValue(this._options.onlyDirectories,!1),this.onlyFiles=this._getValue(this._options.onlyFiles,!0),this.stats=this._getValue(this._options.stats,!1),this.suppressErrors=this._getValue(this._options.suppressErrors,!1),this.throwErrorOnBrokenSymbolicLink=this._getValue(this._options.throwErrorOnBrokenSymbolicLink,!1),this.unique=this._getValue(this._options.unique,!0),this.onlyDirectories&&(this.onlyFiles=!1),this.stats&&(this.objectMode=!0)}_getValue(e,r){return e===void 0?r:e}_getFileSystemMethods(e={}){return Object.assign(Object.assign({},uB.DEFAULT_FILE_SYSTEM_ADAPTER),e)}};uB.default=SO});var LS=_((wNt,Use)=>{"use strict";var Ose=qie(),Jtt=Rse(),Vtt=Tse(),ztt=Mse(),kO=Lse(),Yd=Wf();async function xO(t,e){BC(t);let r=PO(t,Jtt.default,e),o=await Promise.all(r);return Yd.array.flatten(o)}(function(t){function e(c,f){BC(c);let g=PO(c,ztt.default,f);return Yd.array.flatten(g)}t.sync=e;function r(c,f){BC(c);let g=PO(c,Vtt.default,f);return Yd.stream.merge(g)}t.stream=r;function o(c,f){BC(c);let g=[].concat(c),p=new kO.default(f);return Ose.generate(g,p)}t.generateTasks=o;function a(c,f){BC(c);let g=new kO.default(f);return Yd.pattern.isDynamicPattern(c,g)}t.isDynamicPattern=a;function n(c){return BC(c),Yd.path.escape(c)}t.escapePath=n})(xO||(xO={}));function PO(t,e,r){let o=[].concat(t),a=new kO.default(r),n=Ose.generate(o,a),c=new e(a);return n.map(c.read,c)}function BC(t){if(![].concat(t).every(o=>Yd.string.isString(o)&&!Yd.string.isEmpty(o)))throw new TypeError("Patterns must be a string (non empty) or an array of strings")}Use.exports=xO});var _se=_(Wd=>{"use strict";var{promisify:Xtt}=Ie("util"),Kse=Ie("fs");async function bO(t,e,r){if(typeof r!="string")throw new TypeError(`Expected a string, got ${typeof r}`);try{return(await Xtt(Kse[t])(r))[e]()}catch(o){if(o.code==="ENOENT")return!1;throw o}}function FO(t,e,r){if(typeof r!="string")throw new TypeError(`Expected a string, got ${typeof r}`);try{return Kse[t](r)[e]()}catch(o){if(o.code==="ENOENT")return!1;throw o}}Wd.isFile=bO.bind(null,"stat","isFile");Wd.isDirectory=bO.bind(null,"stat","isDirectory");Wd.isSymlink=bO.bind(null,"lstat","isSymbolicLink");Wd.isFileSync=FO.bind(null,"statSync","isFile");Wd.isDirectorySync=FO.bind(null,"statSync","isDirectory");Wd.isSymlinkSync=FO.bind(null,"lstatSync","isSymbolicLink")});var Yse=_((QNt,RO)=>{"use strict";var Jd=Ie("path"),Hse=_se(),qse=t=>t.length>1?`{${t.join(",")}}`:t[0],Gse=(t,e)=>{let r=t[0]==="!"?t.slice(1):t;return Jd.isAbsolute(r)?r:Jd.join(e,r)},Ztt=(t,e)=>Jd.extname(t)?`**/${t}`:`**/${t}.${qse(e)}`,jse=(t,e)=>{if(e.files&&!Array.isArray(e.files))throw new TypeError(`Expected \`files\` to be of type \`Array\` but received type \`${typeof e.files}\``);if(e.extensions&&!Array.isArray(e.extensions))throw new TypeError(`Expected \`extensions\` to be of type \`Array\` but received type \`${typeof e.extensions}\``);return e.files&&e.extensions?e.files.map(r=>Jd.posix.join(t,Ztt(r,e.extensions))):e.files?e.files.map(r=>Jd.posix.join(t,`**/${r}`)):e.extensions?[Jd.posix.join(t,`**/*.${qse(e.extensions)}`)]:[Jd.posix.join(t,"**")]};RO.exports=async(t,e)=>{if(e={cwd:process.cwd(),...e},typeof e.cwd!="string")throw new TypeError(`Expected \`cwd\` to be of type \`string\` but received type \`${typeof e.cwd}\``);let r=await Promise.all([].concat(t).map(async o=>await Hse.isDirectory(Gse(o,e.cwd))?jse(o,e):o));return[].concat.apply([],r)};RO.exports.sync=(t,e)=>{if(e={cwd:process.cwd(),...e},typeof e.cwd!="string")throw new TypeError(`Expected \`cwd\` to be of type \`string\` but received type \`${typeof e.cwd}\``);let r=[].concat(t).map(o=>Hse.isDirectorySync(Gse(o,e.cwd))?jse(o,e):o);return[].concat.apply([],r)}});var eoe=_((vNt,$se)=>{function Wse(t){return Array.isArray(t)?t:[t]}var Xse="",Jse=" ",TO="\\",$tt=/^\s+$/,ert=/^\\!/,trt=/^\\#/,rrt=/\r?\n/g,nrt=/^\.*\/|^\.+$/,NO="/",Vse=typeof Symbol<"u"?Symbol.for("node-ignore"):"node-ignore",irt=(t,e,r)=>Object.defineProperty(t,e,{value:r}),srt=/([0-z])-([0-z])/g,ort=t=>t.replace(srt,(e,r,o)=>r.charCodeAt(0)<=o.charCodeAt(0)?e:Xse),art=t=>{let{length:e}=t;return t.slice(0,e-e%2)},Art=[[/\\?\s+$/,t=>t.indexOf("\\")===0?Jse:Xse],[/\\\s/g,()=>Jse],[/[\\$.|*+(){^]/g,t=>`\\${t}`],[/(?!\\)\?/g,()=>"[^/]"],[/^\//,()=>"^"],[/\//g,()=>"\\/"],[/^\^*\\\*\\\*\\\//,()=>"^(?:.*\\/)?"],[/^(?=[^^])/,function(){return/\/(?!$)/.test(this)?"^":"(?:^|\\/)"}],[/\\\/\\\*\\\*(?=\\\/|$)/g,(t,e,r)=>e+6`${e}[^\\/]*`],[/\\\\\\(?=[$.|*+(){^])/g,()=>TO],[/\\\\/g,()=>TO],[/(\\)?\[([^\]/]*?)(\\*)($|\])/g,(t,e,r,o,a)=>e===TO?`\\[${r}${art(o)}${a}`:a==="]"&&o.length%2===0?`[${ort(r)}${o}]`:"[]"],[/(?:[^*])$/,t=>/\/$/.test(t)?`${t}$`:`${t}(?=$|\\/$)`],[/(\^|\\\/)?\\\*$/,(t,e)=>`${e?`${e}[^/]+`:"[^/]*"}(?=$|\\/$)`]],zse=Object.create(null),lrt=(t,e)=>{let r=zse[t];return r||(r=Art.reduce((o,a)=>o.replace(a[0],a[1].bind(t)),t),zse[t]=r),e?new RegExp(r,"i"):new RegExp(r)},OO=t=>typeof t=="string",crt=t=>t&&OO(t)&&!$tt.test(t)&&t.indexOf("#")!==0,urt=t=>t.split(rrt),MO=class{constructor(e,r,o,a){this.origin=e,this.pattern=r,this.negative=o,this.regex=a}},frt=(t,e)=>{let r=t,o=!1;t.indexOf("!")===0&&(o=!0,t=t.substr(1)),t=t.replace(ert,"!").replace(trt,"#");let a=lrt(t,e);return new MO(r,t,o,a)},grt=(t,e)=>{throw new e(t)},Vf=(t,e,r)=>OO(t)?t?Vf.isNotRelative(t)?r(`path should be a \`path.relative()\`d string, but got "${e}"`,RangeError):!0:r("path must not be empty",TypeError):r(`path must be a string, but got \`${e}\``,TypeError),Zse=t=>nrt.test(t);Vf.isNotRelative=Zse;Vf.convert=t=>t;var LO=class{constructor({ignorecase:e=!0}={}){irt(this,Vse,!0),this._rules=[],this._ignorecase=e,this._initCache()}_initCache(){this._ignoreCache=Object.create(null),this._testCache=Object.create(null)}_addPattern(e){if(e&&e[Vse]){this._rules=this._rules.concat(e._rules),this._added=!0;return}if(crt(e)){let r=frt(e,this._ignorecase);this._added=!0,this._rules.push(r)}}add(e){return this._added=!1,Wse(OO(e)?urt(e):e).forEach(this._addPattern,this),this._added&&this._initCache(),this}addPattern(e){return this.add(e)}_testOne(e,r){let o=!1,a=!1;return this._rules.forEach(n=>{let{negative:c}=n;if(a===c&&o!==a||c&&!o&&!a&&!r)return;n.regex.test(e)&&(o=!c,a=c)}),{ignored:o,unignored:a}}_test(e,r,o,a){let n=e&&Vf.convert(e);return Vf(n,e,grt),this._t(n,r,o,a)}_t(e,r,o,a){if(e in r)return r[e];if(a||(a=e.split(NO)),a.pop(),!a.length)return r[e]=this._testOne(e,o);let n=this._t(a.join(NO)+NO,r,o,a);return r[e]=n.ignored?n:this._testOne(e,o)}ignores(e){return this._test(e,this._ignoreCache,!1).ignored}createFilter(){return e=>!this.ignores(e)}filter(e){return Wse(e).filter(this.createFilter())}test(e){return this._test(e,this._testCache,!0)}},OS=t=>new LO(t),prt=()=>!1,hrt=t=>Vf(t&&Vf.convert(t),t,prt);OS.isPathValid=hrt;OS.default=OS;$se.exports=OS;if(typeof process<"u"&&(process.env&&process.env.IGNORE_TEST_WIN32||process.platform==="win32")){let t=r=>/^\\\\\?\\/.test(r)||/["<>|\u0000-\u001F]+/u.test(r)?r:r.replace(/\\/g,"/");Vf.convert=t;let e=/^[a-z]:\//i;Vf.isNotRelative=r=>e.test(r)||Zse(r)}});var roe=_((DNt,toe)=>{"use strict";toe.exports=t=>{let e=/^\\\\\?\\/.test(t),r=/[^\u0000-\u0080]+/.test(t);return e||r?t:t.replace(/\\/g,"/")}});var loe=_((SNt,UO)=>{"use strict";var{promisify:drt}=Ie("util"),noe=Ie("fs"),zf=Ie("path"),ioe=LS(),mrt=eoe(),fB=roe(),soe=["**/node_modules/**","**/flow-typed/**","**/coverage/**","**/.git"],yrt=drt(noe.readFile),Crt=t=>e=>e.startsWith("!")?"!"+zf.posix.join(t,e.slice(1)):zf.posix.join(t,e),Ert=(t,e)=>{let r=fB(zf.relative(e.cwd,zf.dirname(e.fileName)));return t.split(/\r?\n/).filter(Boolean).filter(o=>!o.startsWith("#")).map(Crt(r))},ooe=t=>{let e=mrt();for(let r of t)e.add(Ert(r.content,{cwd:r.cwd,fileName:r.filePath}));return e},Irt=(t,e)=>{if(t=fB(t),zf.isAbsolute(e)){if(fB(e).startsWith(t))return e;throw new Error(`Path ${e} is not in cwd ${t}`)}return zf.join(t,e)},aoe=(t,e)=>r=>t.ignores(fB(zf.relative(e,Irt(e,r.path||r)))),wrt=async(t,e)=>{let r=zf.join(e,t),o=await yrt(r,"utf8");return{cwd:e,filePath:r,content:o}},Brt=(t,e)=>{let r=zf.join(e,t),o=noe.readFileSync(r,"utf8");return{cwd:e,filePath:r,content:o}},Aoe=({ignore:t=[],cwd:e=fB(process.cwd())}={})=>({ignore:t,cwd:e});UO.exports=async t=>{t=Aoe(t);let e=await ioe("**/.gitignore",{ignore:soe.concat(t.ignore),cwd:t.cwd}),r=await Promise.all(e.map(a=>wrt(a,t.cwd))),o=ooe(r);return aoe(o,t.cwd)};UO.exports.sync=t=>{t=Aoe(t);let r=ioe.sync("**/.gitignore",{ignore:soe.concat(t.ignore),cwd:t.cwd}).map(a=>Brt(a,t.cwd)),o=ooe(r);return aoe(o,t.cwd)}});var uoe=_((kNt,coe)=>{"use strict";var{Transform:Qrt}=Ie("stream"),US=class extends Qrt{constructor(){super({objectMode:!0})}},KO=class extends US{constructor(e){super(),this._filter=e}_transform(e,r,o){this._filter(e)&&this.push(e),o()}},_O=class extends US{constructor(){super(),this._pushed=new Set}_transform(e,r,o){this._pushed.has(e)||(this.push(e),this._pushed.add(e)),o()}};coe.exports={FilterStream:KO,UniqueStream:_O}});var jO=_((xNt,Vd)=>{"use strict";var goe=Ie("fs"),KS=fie(),vrt=uL(),_S=LS(),HS=Yse(),HO=loe(),{FilterStream:Drt,UniqueStream:Srt}=uoe(),poe=()=>!1,foe=t=>t[0]==="!",krt=t=>{if(!t.every(e=>typeof e=="string"))throw new TypeError("Patterns must be a string or an array of strings")},xrt=(t={})=>{if(!t.cwd)return;let e;try{e=goe.statSync(t.cwd)}catch{return}if(!e.isDirectory())throw new Error("The `cwd` option must be a path to a directory")},Prt=t=>t.stats instanceof goe.Stats?t.path:t,qS=(t,e)=>{t=KS([].concat(t)),krt(t),xrt(e);let r=[];e={ignore:[],expandDirectories:!0,...e};for(let[o,a]of t.entries()){if(foe(a))continue;let n=t.slice(o).filter(f=>foe(f)).map(f=>f.slice(1)),c={...e,ignore:e.ignore.concat(n)};r.push({pattern:a,options:c})}return r},brt=(t,e)=>{let r={};return t.options.cwd&&(r.cwd=t.options.cwd),Array.isArray(t.options.expandDirectories)?r={...r,files:t.options.expandDirectories}:typeof t.options.expandDirectories=="object"&&(r={...r,...t.options.expandDirectories}),e(t.pattern,r)},qO=(t,e)=>t.options.expandDirectories?brt(t,e):[t.pattern],hoe=t=>t&&t.gitignore?HO.sync({cwd:t.cwd,ignore:t.ignore}):poe,GO=t=>e=>{let{options:r}=t;return r.ignore&&Array.isArray(r.ignore)&&r.expandDirectories&&(r.ignore=HS.sync(r.ignore)),{pattern:e,options:r}};Vd.exports=async(t,e)=>{let r=qS(t,e),o=async()=>e&&e.gitignore?HO({cwd:e.cwd,ignore:e.ignore}):poe,a=async()=>{let g=await Promise.all(r.map(async p=>{let E=await qO(p,HS);return Promise.all(E.map(GO(p)))}));return KS(...g)},[n,c]=await Promise.all([o(),a()]),f=await Promise.all(c.map(g=>_S(g.pattern,g.options)));return KS(...f).filter(g=>!n(Prt(g)))};Vd.exports.sync=(t,e)=>{let r=qS(t,e),o=[];for(let c of r){let f=qO(c,HS.sync).map(GO(c));o.push(...f)}let a=hoe(e),n=[];for(let c of o)n=KS(n,_S.sync(c.pattern,c.options));return n.filter(c=>!a(c))};Vd.exports.stream=(t,e)=>{let r=qS(t,e),o=[];for(let f of r){let g=qO(f,HS.sync).map(GO(f));o.push(...g)}let a=hoe(e),n=new Drt(f=>!a(f)),c=new Srt;return vrt(o.map(f=>_S.stream(f.pattern,f.options))).pipe(n).pipe(c)};Vd.exports.generateGlobTasks=qS;Vd.exports.hasMagic=(t,e)=>[].concat(t).some(r=>_S.isDynamicPattern(r,e));Vd.exports.gitignore=HO});var Oi={};tr(Oi,{checksumFile:()=>jS,checksumPattern:()=>YS,makeHash:()=>da});function da(...t){let e=(0,GS.createHash)("sha512"),r="";for(let o of t)typeof o=="string"?r+=o:o&&(r&&(e.update(r),r=""),e.update(o));return r&&e.update(r),e.digest("hex")}async function jS(t,{baseFs:e,algorithm:r}={baseFs:ge,algorithm:"sha512"}){let o=await e.openPromise(t,"r");try{let n=Buffer.allocUnsafeSlow(65536),c=(0,GS.createHash)(r),f=0;for(;(f=await e.readPromise(o,n,0,65536))!==0;)c.update(f===65536?n:n.slice(0,f));return c.digest("hex")}finally{await e.closePromise(o)}}async function YS(t,{cwd:e}){let o=(await(0,YO.default)(t,{cwd:me.fromPortablePath(e),expandDirectories:!1,onlyDirectories:!0,unique:!0})).map(f=>`${f}/**/*`),a=await(0,YO.default)([t,...o],{cwd:me.fromPortablePath(e),expandDirectories:!1,onlyFiles:!1,unique:!0});a.sort();let n=await Promise.all(a.map(async f=>{let g=[Buffer.from(f)],p=me.toPortablePath(f),E=await ge.lstatPromise(p);return E.isSymbolicLink()?g.push(Buffer.from(await ge.readlinkPromise(p))):E.isFile()&&g.push(await ge.readFilePromise(p)),g.join("\0")})),c=(0,GS.createHash)("sha512");for(let f of n)c.update(f);return c.digest("hex")}var GS,YO,zd=Lt(()=>{Ft();GS=Ie("crypto"),YO=be(jO())});var Y={};tr(Y,{areDescriptorsEqual:()=>Eoe,areIdentsEqual:()=>mB,areLocatorsEqual:()=>yB,areVirtualPackagesEquivalent:()=>Krt,bindDescriptor:()=>Ort,bindLocator:()=>Urt,convertDescriptorToLocator:()=>WS,convertLocatorToDescriptor:()=>JO,convertPackageToLocator:()=>Nrt,convertToIdent:()=>Trt,convertToManifestRange:()=>Grt,copyPackage:()=>pB,devirtualizeDescriptor:()=>hB,devirtualizeLocator:()=>dB,ensureDevirtualizedDescriptor:()=>Mrt,ensureDevirtualizedLocator:()=>Lrt,getIdentVendorPath:()=>$O,isPackageCompatible:()=>ZS,isVirtualDescriptor:()=>Xf,isVirtualLocator:()=>fc,makeDescriptor:()=>_n,makeIdent:()=>wu,makeLocator:()=>Xa,makeRange:()=>VS,parseDescriptor:()=>Sp,parseFileStyleRange:()=>Hrt,parseIdent:()=>ha,parseLocator:()=>Xd,parseRange:()=>Zd,prettyDependent:()=>cL,prettyDescriptor:()=>$n,prettyIdent:()=>Ns,prettyLocator:()=>Yr,prettyLocatorNoColors:()=>ZO,prettyRange:()=>XS,prettyReference:()=>EB,prettyResolution:()=>lB,prettyWorkspace:()=>IB,renamePackage:()=>VO,slugifyIdent:()=>WO,slugifyLocator:()=>vC,sortDescriptors:()=>DC,stringifyDescriptor:()=>za,stringifyIdent:()=>Cn,stringifyLocator:()=>Cl,tryParseDescriptor:()=>CB,tryParseIdent:()=>Ioe,tryParseLocator:()=>JS,tryParseRange:()=>_rt,virtualizeDescriptor:()=>zO,virtualizePackage:()=>XO});function wu(t,e){if(t!=null&&t.startsWith("@"))throw new Error("Invalid scope: don't prefix it with '@'");return{identHash:da(t,e),scope:t,name:e}}function _n(t,e){return{identHash:t.identHash,scope:t.scope,name:t.name,descriptorHash:da(t.identHash,e),range:e}}function Xa(t,e){return{identHash:t.identHash,scope:t.scope,name:t.name,locatorHash:da(t.identHash,e),reference:e}}function Trt(t){return{identHash:t.identHash,scope:t.scope,name:t.name}}function WS(t){return{identHash:t.identHash,scope:t.scope,name:t.name,locatorHash:t.descriptorHash,reference:t.range}}function JO(t){return{identHash:t.identHash,scope:t.scope,name:t.name,descriptorHash:t.locatorHash,range:t.reference}}function Nrt(t){return{identHash:t.identHash,scope:t.scope,name:t.name,locatorHash:t.locatorHash,reference:t.reference}}function VO(t,e){return{identHash:e.identHash,scope:e.scope,name:e.name,locatorHash:e.locatorHash,reference:e.reference,version:t.version,languageName:t.languageName,linkType:t.linkType,conditions:t.conditions,dependencies:new Map(t.dependencies),peerDependencies:new Map(t.peerDependencies),dependenciesMeta:new Map(t.dependenciesMeta),peerDependenciesMeta:new Map(t.peerDependenciesMeta),bin:new Map(t.bin)}}function pB(t){return VO(t,t)}function zO(t,e){if(e.includes("#"))throw new Error("Invalid entropy");return _n(t,`virtual:${e}#${t.range}`)}function XO(t,e){if(e.includes("#"))throw new Error("Invalid entropy");return VO(t,Xa(t,`virtual:${e}#${t.reference}`))}function Xf(t){return t.range.startsWith(gB)}function fc(t){return t.reference.startsWith(gB)}function hB(t){if(!Xf(t))throw new Error("Not a virtual descriptor");return _n(t,t.range.replace(/^[^#]*#/,""))}function dB(t){if(!fc(t))throw new Error("Not a virtual descriptor");return Xa(t,t.reference.replace(/^[^#]*#/,""))}function Mrt(t){return Xf(t)?_n(t,t.range.replace(/^[^#]*#/,"")):t}function Lrt(t){return fc(t)?Xa(t,t.reference.replace(/^[^#]*#/,"")):t}function Ort(t,e){return t.range.includes("::")?t:_n(t,`${t.range}::${QC.default.stringify(e)}`)}function Urt(t,e){return t.reference.includes("::")?t:Xa(t,`${t.reference}::${QC.default.stringify(e)}`)}function mB(t,e){return t.identHash===e.identHash}function Eoe(t,e){return t.descriptorHash===e.descriptorHash}function yB(t,e){return t.locatorHash===e.locatorHash}function Krt(t,e){if(!fc(t))throw new Error("Invalid package type");if(!fc(e))throw new Error("Invalid package type");if(!mB(t,e)||t.dependencies.size!==e.dependencies.size)return!1;for(let r of t.dependencies.values()){let o=e.dependencies.get(r.identHash);if(!o||!Eoe(r,o))return!1}return!0}function ha(t){let e=Ioe(t);if(!e)throw new Error(`Invalid ident (${t})`);return e}function Ioe(t){let e=t.match(/^(?:@([^/]+?)\/)?([^/]+)$/);if(!e)return null;let[,r,o]=e;return wu(typeof r<"u"?r:null,o)}function Sp(t,e=!1){let r=CB(t,e);if(!r)throw new Error(`Invalid descriptor (${t})`);return r}function CB(t,e=!1){let r=e?t.match(/^(?:@([^/]+?)\/)?([^/]+?)(?:@(.+))$/):t.match(/^(?:@([^/]+?)\/)?([^/]+?)(?:@(.+))?$/);if(!r)return null;let[,o,a,n]=r;if(n==="unknown")throw new Error(`Invalid range (${t})`);let c=typeof o<"u"?o:null,f=typeof n<"u"?n:"unknown";return _n(wu(c,a),f)}function Xd(t,e=!1){let r=JS(t,e);if(!r)throw new Error(`Invalid locator (${t})`);return r}function JS(t,e=!1){let r=e?t.match(/^(?:@([^/]+?)\/)?([^/]+?)(?:@(.+))$/):t.match(/^(?:@([^/]+?)\/)?([^/]+?)(?:@(.+))?$/);if(!r)return null;let[,o,a,n]=r;if(n==="unknown")throw new Error(`Invalid reference (${t})`);let c=typeof o<"u"?o:null,f=typeof n<"u"?n:"unknown";return Xa(wu(c,a),f)}function Zd(t,e){let r=t.match(/^([^#:]*:)?((?:(?!::)[^#])*)(?:#((?:(?!::).)*))?(?:::(.*))?$/);if(r===null)throw new Error(`Invalid range (${t})`);let o=typeof r[1]<"u"?r[1]:null;if(typeof(e==null?void 0:e.requireProtocol)=="string"&&o!==e.requireProtocol)throw new Error(`Invalid protocol (${o})`);if((e==null?void 0:e.requireProtocol)&&o===null)throw new Error(`Missing protocol (${o})`);let a=typeof r[3]<"u"?decodeURIComponent(r[2]):null;if((e==null?void 0:e.requireSource)&&a===null)throw new Error(`Missing source (${t})`);let n=typeof r[3]<"u"?decodeURIComponent(r[3]):decodeURIComponent(r[2]),c=e!=null&&e.parseSelector?QC.default.parse(n):n,f=typeof r[4]<"u"?QC.default.parse(r[4]):null;return{protocol:o,source:a,selector:c,params:f}}function _rt(t,e){try{return Zd(t,e)}catch{return null}}function Hrt(t,{protocol:e}){let{selector:r,params:o}=Zd(t,{requireProtocol:e,requireBindings:!0});if(typeof o.locator!="string")throw new Error(`Assertion failed: Invalid bindings for ${t}`);return{parentLocator:Xd(o.locator,!0),path:r}}function doe(t){return t=t.replace(/%/g,"%25"),t=t.replace(/:/g,"%3A"),t=t.replace(/#/g,"%23"),t}function qrt(t){return t===null?!1:Object.entries(t).length>0}function VS({protocol:t,source:e,selector:r,params:o}){let a="";return t!==null&&(a+=`${t}`),e!==null&&(a+=`${doe(e)}#`),a+=doe(r),qrt(o)&&(a+=`::${QC.default.stringify(o)}`),a}function Grt(t){let{params:e,protocol:r,source:o,selector:a}=Zd(t);for(let n in e)n.startsWith("__")&&delete e[n];return VS({protocol:r,source:o,params:e,selector:a})}function Cn(t){return t.scope?`@${t.scope}/${t.name}`:`${t.name}`}function za(t){return t.scope?`@${t.scope}/${t.name}@${t.range}`:`${t.name}@${t.range}`}function Cl(t){return t.scope?`@${t.scope}/${t.name}@${t.reference}`:`${t.name}@${t.reference}`}function WO(t){return t.scope!==null?`@${t.scope}-${t.name}`:t.name}function vC(t){let{protocol:e,selector:r}=Zd(t.reference),o=e!==null?e.replace(/:$/,""):"exotic",a=moe.default.valid(r),n=a!==null?`${o}-${a}`:`${o}`,c=10,f=t.scope?`${WO(t)}-${n}-${t.locatorHash.slice(0,c)}`:`${WO(t)}-${n}-${t.locatorHash.slice(0,c)}`;return ss(f)}function Ns(t,e){return e.scope?`${ar(t,`@${e.scope}/`,Mt.SCOPE)}${ar(t,e.name,Mt.NAME)}`:`${ar(t,e.name,Mt.NAME)}`}function zS(t){if(t.startsWith(gB)){let e=zS(t.substring(t.indexOf("#")+1)),r=t.substring(gB.length,gB.length+Frt);return`${e} [${r}]`}else return t.replace(/\?.*/,"?[...]")}function XS(t,e){return`${ar(t,zS(e),Mt.RANGE)}`}function $n(t,e){return`${Ns(t,e)}${ar(t,"@",Mt.RANGE)}${XS(t,e.range)}`}function EB(t,e){return`${ar(t,zS(e),Mt.REFERENCE)}`}function Yr(t,e){return`${Ns(t,e)}${ar(t,"@",Mt.REFERENCE)}${EB(t,e.reference)}`}function ZO(t){return`${Cn(t)}@${zS(t.reference)}`}function DC(t){return Ja(t,[e=>Cn(e),e=>e.range])}function IB(t,e){return Ns(t,e.locator)}function lB(t,e,r){let o=Xf(e)?hB(e):e;return r===null?`${$n(t,o)} \u2192 ${lL(t).Cross}`:o.identHash===r.identHash?`${$n(t,o)} \u2192 ${EB(t,r.reference)}`:`${$n(t,o)} \u2192 ${Yr(t,r)}`}function cL(t,e,r){return r===null?`${Yr(t,e)}`:`${Yr(t,e)} (via ${XS(t,r.range)})`}function $O(t){return`node_modules/${Cn(t)}`}function ZS(t,e){return t.conditions?Rrt(t.conditions,r=>{let[,o,a]=r.match(Coe),n=e[o];return n?n.includes(a):!0}):!0}var QC,moe,yoe,gB,Frt,Coe,Rrt,go=Lt(()=>{Ft();QC=be(Ie("querystring")),moe=be(wi()),yoe=be(_X());El();zd();ml();go();gB="virtual:",Frt=5,Coe=/(os|cpu|libc)=([a-z0-9_-]+)/,Rrt=(0,yoe.makeParser)(Coe)});var woe,Boe=Lt(()=>{go();woe={hooks:{reduceDependency:(t,e,r,o,{resolver:a,resolveOptions:n})=>{for(let{pattern:c,reference:f}of e.topLevelWorkspace.manifest.resolutions){if(c.from&&c.from.fullName!==Cn(r)||c.from&&c.from.description&&c.from.description!==r.reference||c.descriptor.fullName!==Cn(t)||c.descriptor.description&&c.descriptor.description!==t.range)continue;return a.bindDescriptor(e.configuration.normalizeDependency(_n(t,f)),e.topLevelWorkspace.anchoredLocator,n)}return t},validateProject:async(t,e)=>{for(let r of t.workspaces){let o=IB(t.configuration,r);await t.configuration.triggerHook(a=>a.validateWorkspace,r,{reportWarning:(a,n)=>e.reportWarning(a,`${o}: ${n}`),reportError:(a,n)=>e.reportError(a,`${o}: ${n}`)})}},validateWorkspace:async(t,e)=>{let{manifest:r}=t;r.resolutions.length&&t.cwd!==t.project.cwd&&r.errors.push(new Error("Resolutions field will be ignored"));for(let o of r.errors)e.reportWarning(57,o.message)}}}});var wB,Qi,$d=Lt(()=>{wB=class{supportsDescriptor(e,r){return!!(e.range.startsWith(wB.protocol)||r.project.tryWorkspaceByDescriptor(e)!==null)}supportsLocator(e,r){return!!e.reference.startsWith(wB.protocol)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,o){return e}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,o){return[o.project.getWorkspaceByDescriptor(e).anchoredLocator]}async getSatisfying(e,r,o,a){let[n]=await this.getCandidates(e,r,a);return{locators:o.filter(c=>c.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){let o=r.project.getWorkspaceByCwd(e.reference.slice(wB.protocol.length));return{...e,version:o.manifest.version||"0.0.0",languageName:"unknown",linkType:"SOFT",conditions:null,dependencies:r.project.configuration.normalizeDependencyMap(new Map([...o.manifest.dependencies,...o.manifest.devDependencies])),peerDependencies:new Map([...o.manifest.peerDependencies]),dependenciesMeta:o.manifest.dependenciesMeta,peerDependenciesMeta:o.manifest.peerDependenciesMeta,bin:o.manifest.bin}}},Qi=wB;Qi.protocol="workspace:"});var Zr={};tr(Zr,{SemVer:()=>Doe.SemVer,clean:()=>Yrt,satisfiesWithPrereleases:()=>em,validRange:()=>Bu});function em(t,e,r=!1){if(!t)return!1;let o=`${e}${r}`,a=Qoe.get(o);if(typeof a>"u")try{a=new $S.default.Range(e,{includePrerelease:!0,loose:r})}catch{return!1}finally{Qoe.set(o,a||null)}else if(a===null)return!1;let n;try{n=new $S.default.SemVer(t,a)}catch{return!1}return a.test(n)?!0:(n.prerelease&&(n.prerelease=[]),a.set.some(c=>{for(let f of c)f.semver.prerelease&&(f.semver.prerelease=[]);return c.every(f=>f.test(n))}))}function Bu(t){if(t.indexOf(":")!==-1)return null;let e=voe.get(t);if(typeof e<"u")return e;try{e=new $S.default.Range(t)}catch{e=null}return voe.set(t,e),e}function Yrt(t){let e=jrt.exec(t);return e?e[1]:null}var $S,Doe,Qoe,voe,jrt,kp=Lt(()=>{$S=be(wi()),Doe=be(wi()),Qoe=new Map;voe=new Map;jrt=/^(?:[\sv=]*?)((0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?)(?:\s*)$/});function Soe(t){let e=t.match(/^[ \t]+/m);return e?e[0]:" "}function koe(t){return t.charCodeAt(0)===65279?t.slice(1):t}function ma(t){return t.replace(/\\/g,"/")}function ek(t,{yamlCompatibilityMode:e}){return e?tL(t):typeof t>"u"||typeof t=="boolean"?t:null}function xoe(t,e){let r=e.search(/[^!]/);if(r===-1)return"invalid";let o=r%2===0?"":"!",a=e.slice(r);return`${o}${t}=${a}`}function e4(t,e){return e.length===1?xoe(t,e[0]):`(${e.map(r=>xoe(t,r)).join(" | ")})`}var Poe,SC,Gt,kC=Lt(()=>{Ft();cl();Poe=be(wi());$d();ml();kp();go();SC=class{constructor(){this.indent=" ";this.name=null;this.version=null;this.os=null;this.cpu=null;this.libc=null;this.type=null;this.packageManager=null;this.private=!1;this.license=null;this.main=null;this.module=null;this.browser=null;this.languageName=null;this.bin=new Map;this.scripts=new Map;this.dependencies=new Map;this.devDependencies=new Map;this.peerDependencies=new Map;this.workspaceDefinitions=[];this.dependenciesMeta=new Map;this.peerDependenciesMeta=new Map;this.resolutions=[];this.files=null;this.publishConfig=null;this.installConfig=null;this.preferUnplugged=null;this.raw={};this.errors=[]}static async tryFind(e,{baseFs:r=new jn}={}){let o=ee.join(e,"package.json");try{return await SC.fromFile(o,{baseFs:r})}catch(a){if(a.code==="ENOENT")return null;throw a}}static async find(e,{baseFs:r}={}){let o=await SC.tryFind(e,{baseFs:r});if(o===null)throw new Error("Manifest not found");return o}static async fromFile(e,{baseFs:r=new jn}={}){let o=new SC;return await o.loadFile(e,{baseFs:r}),o}static fromText(e){let r=new SC;return r.loadFromText(e),r}loadFromText(e){let r;try{r=JSON.parse(koe(e)||"{}")}catch(o){throw o.message+=` (when parsing ${e})`,o}this.load(r),this.indent=Soe(e)}async loadFile(e,{baseFs:r=new jn}){let o=await r.readFilePromise(e,"utf8"),a;try{a=JSON.parse(koe(o)||"{}")}catch(n){throw n.message+=` (when parsing ${e})`,n}this.load(a),this.indent=Soe(o)}load(e,{yamlCompatibilityMode:r=!1}={}){if(typeof e!="object"||e===null)throw new Error(`Utterly invalid manifest data (${e})`);this.raw=e;let o=[];if(this.name=null,typeof e.name=="string")try{this.name=ha(e.name)}catch{o.push(new Error("Parsing failed for the 'name' field"))}if(typeof e.version=="string"?this.version=e.version:this.version=null,Array.isArray(e.os)){let n=[];this.os=n;for(let c of e.os)typeof c!="string"?o.push(new Error("Parsing failed for the 'os' field")):n.push(c)}else this.os=null;if(Array.isArray(e.cpu)){let n=[];this.cpu=n;for(let c of e.cpu)typeof c!="string"?o.push(new Error("Parsing failed for the 'cpu' field")):n.push(c)}else this.cpu=null;if(Array.isArray(e.libc)){let n=[];this.libc=n;for(let c of e.libc)typeof c!="string"?o.push(new Error("Parsing failed for the 'libc' field")):n.push(c)}else this.libc=null;if(typeof e.type=="string"?this.type=e.type:this.type=null,typeof e.packageManager=="string"?this.packageManager=e.packageManager:this.packageManager=null,typeof e.private=="boolean"?this.private=e.private:this.private=!1,typeof e.license=="string"?this.license=e.license:this.license=null,typeof e.languageName=="string"?this.languageName=e.languageName:this.languageName=null,typeof e.main=="string"?this.main=ma(e.main):this.main=null,typeof e.module=="string"?this.module=ma(e.module):this.module=null,e.browser!=null)if(typeof e.browser=="string")this.browser=ma(e.browser);else{this.browser=new Map;for(let[n,c]of Object.entries(e.browser))this.browser.set(ma(n),typeof c=="string"?ma(c):c)}else this.browser=null;if(this.bin=new Map,typeof e.bin=="string")this.name!==null?this.bin.set(this.name.name,ma(e.bin)):o.push(new Error("String bin field, but no attached package name"));else if(typeof e.bin=="object"&&e.bin!==null)for(let[n,c]of Object.entries(e.bin)){if(typeof c!="string"){o.push(new Error(`Invalid bin definition for '${n}'`));continue}let f=ha(n);this.bin.set(f.name,ma(c))}if(this.scripts=new Map,typeof e.scripts=="object"&&e.scripts!==null)for(let[n,c]of Object.entries(e.scripts)){if(typeof c!="string"){o.push(new Error(`Invalid script definition for '${n}'`));continue}this.scripts.set(n,c)}if(this.dependencies=new Map,typeof e.dependencies=="object"&&e.dependencies!==null)for(let[n,c]of Object.entries(e.dependencies)){if(typeof c!="string"){o.push(new Error(`Invalid dependency range for '${n}'`));continue}let f;try{f=ha(n)}catch{o.push(new Error(`Parsing failed for the dependency name '${n}'`));continue}let g=_n(f,c);this.dependencies.set(g.identHash,g)}if(this.devDependencies=new Map,typeof e.devDependencies=="object"&&e.devDependencies!==null)for(let[n,c]of Object.entries(e.devDependencies)){if(typeof c!="string"){o.push(new Error(`Invalid dependency range for '${n}'`));continue}let f;try{f=ha(n)}catch{o.push(new Error(`Parsing failed for the dependency name '${n}'`));continue}let g=_n(f,c);this.devDependencies.set(g.identHash,g)}if(this.peerDependencies=new Map,typeof e.peerDependencies=="object"&&e.peerDependencies!==null)for(let[n,c]of Object.entries(e.peerDependencies)){let f;try{f=ha(n)}catch{o.push(new Error(`Parsing failed for the dependency name '${n}'`));continue}(typeof c!="string"||!c.startsWith(Qi.protocol)&&!Bu(c))&&(o.push(new Error(`Invalid dependency range for '${n}'`)),c="*");let g=_n(f,c);this.peerDependencies.set(g.identHash,g)}typeof e.workspaces=="object"&&e.workspaces!==null&&e.workspaces.nohoist&&o.push(new Error("'nohoist' is deprecated, please use 'installConfig.hoistingLimits' instead"));let a=Array.isArray(e.workspaces)?e.workspaces:typeof e.workspaces=="object"&&e.workspaces!==null&&Array.isArray(e.workspaces.packages)?e.workspaces.packages:[];this.workspaceDefinitions=[];for(let n of a){if(typeof n!="string"){o.push(new Error(`Invalid workspace definition for '${n}'`));continue}this.workspaceDefinitions.push({pattern:n})}if(this.dependenciesMeta=new Map,typeof e.dependenciesMeta=="object"&&e.dependenciesMeta!==null)for(let[n,c]of Object.entries(e.dependenciesMeta)){if(typeof c!="object"||c===null){o.push(new Error(`Invalid meta field for '${n}`));continue}let f=Sp(n),g=this.ensureDependencyMeta(f),p=ek(c.built,{yamlCompatibilityMode:r});if(p===null){o.push(new Error(`Invalid built meta field for '${n}'`));continue}let E=ek(c.optional,{yamlCompatibilityMode:r});if(E===null){o.push(new Error(`Invalid optional meta field for '${n}'`));continue}let B=ek(c.unplugged,{yamlCompatibilityMode:r});if(B===null){o.push(new Error(`Invalid unplugged meta field for '${n}'`));continue}Object.assign(g,{built:p,optional:E,unplugged:B})}if(this.peerDependenciesMeta=new Map,typeof e.peerDependenciesMeta=="object"&&e.peerDependenciesMeta!==null)for(let[n,c]of Object.entries(e.peerDependenciesMeta)){if(typeof c!="object"||c===null){o.push(new Error(`Invalid meta field for '${n}'`));continue}let f=Sp(n),g=this.ensurePeerDependencyMeta(f),p=ek(c.optional,{yamlCompatibilityMode:r});if(p===null){o.push(new Error(`Invalid optional meta field for '${n}'`));continue}Object.assign(g,{optional:p})}if(this.resolutions=[],typeof e.resolutions=="object"&&e.resolutions!==null)for(let[n,c]of Object.entries(e.resolutions)){if(typeof c!="string"){o.push(new Error(`Invalid resolution entry for '${n}'`));continue}try{this.resolutions.push({pattern:Wv(n),reference:c})}catch(f){o.push(f);continue}}if(Array.isArray(e.files)){this.files=new Set;for(let n of e.files){if(typeof n!="string"){o.push(new Error(`Invalid files entry for '${n}'`));continue}this.files.add(n)}}else this.files=null;if(typeof e.publishConfig=="object"&&e.publishConfig!==null){if(this.publishConfig={},typeof e.publishConfig.access=="string"&&(this.publishConfig.access=e.publishConfig.access),typeof e.publishConfig.main=="string"&&(this.publishConfig.main=ma(e.publishConfig.main)),typeof e.publishConfig.module=="string"&&(this.publishConfig.module=ma(e.publishConfig.module)),e.publishConfig.browser!=null)if(typeof e.publishConfig.browser=="string")this.publishConfig.browser=ma(e.publishConfig.browser);else{this.publishConfig.browser=new Map;for(let[n,c]of Object.entries(e.publishConfig.browser))this.publishConfig.browser.set(ma(n),typeof c=="string"?ma(c):c)}if(typeof e.publishConfig.registry=="string"&&(this.publishConfig.registry=e.publishConfig.registry),typeof e.publishConfig.bin=="string")this.name!==null?this.publishConfig.bin=new Map([[this.name.name,ma(e.publishConfig.bin)]]):o.push(new Error("String bin field, but no attached package name"));else if(typeof e.publishConfig.bin=="object"&&e.publishConfig.bin!==null){this.publishConfig.bin=new Map;for(let[n,c]of Object.entries(e.publishConfig.bin)){if(typeof c!="string"){o.push(new Error(`Invalid bin definition for '${n}'`));continue}this.publishConfig.bin.set(n,ma(c))}}if(Array.isArray(e.publishConfig.executableFiles)){this.publishConfig.executableFiles=new Set;for(let n of e.publishConfig.executableFiles){if(typeof n!="string"){o.push(new Error("Invalid executable file definition"));continue}this.publishConfig.executableFiles.add(ma(n))}}}else this.publishConfig=null;if(typeof e.installConfig=="object"&&e.installConfig!==null){this.installConfig={};for(let n of Object.keys(e.installConfig))n==="hoistingLimits"?typeof e.installConfig.hoistingLimits=="string"?this.installConfig.hoistingLimits=e.installConfig.hoistingLimits:o.push(new Error("Invalid hoisting limits definition")):n=="selfReferences"?typeof e.installConfig.selfReferences=="boolean"?this.installConfig.selfReferences=e.installConfig.selfReferences:o.push(new Error("Invalid selfReferences definition, must be a boolean value")):o.push(new Error(`Unrecognized installConfig key: ${n}`))}else this.installConfig=null;if(typeof e.optionalDependencies=="object"&&e.optionalDependencies!==null)for(let[n,c]of Object.entries(e.optionalDependencies)){if(typeof c!="string"){o.push(new Error(`Invalid dependency range for '${n}'`));continue}let f;try{f=ha(n)}catch{o.push(new Error(`Parsing failed for the dependency name '${n}'`));continue}let g=_n(f,c);this.dependencies.set(g.identHash,g);let p=_n(f,"unknown"),E=this.ensureDependencyMeta(p);Object.assign(E,{optional:!0})}typeof e.preferUnplugged=="boolean"?this.preferUnplugged=e.preferUnplugged:this.preferUnplugged=null,this.errors=o}getForScope(e){switch(e){case"dependencies":return this.dependencies;case"devDependencies":return this.devDependencies;case"peerDependencies":return this.peerDependencies;default:throw new Error(`Unsupported value ("${e}")`)}}hasConsumerDependency(e){return!!(this.dependencies.has(e.identHash)||this.peerDependencies.has(e.identHash))}hasHardDependency(e){return!!(this.dependencies.has(e.identHash)||this.devDependencies.has(e.identHash))}hasSoftDependency(e){return!!this.peerDependencies.has(e.identHash)}hasDependency(e){return!!(this.hasHardDependency(e)||this.hasSoftDependency(e))}getConditions(){let e=[];return this.os&&this.os.length>0&&e.push(e4("os",this.os)),this.cpu&&this.cpu.length>0&&e.push(e4("cpu",this.cpu)),this.libc&&this.libc.length>0&&e.push(e4("libc",this.libc)),e.length>0?e.join(" & "):null}ensureDependencyMeta(e){if(e.range!=="unknown"&&!Poe.default.valid(e.range))throw new Error(`Invalid meta field range for '${za(e)}'`);let r=Cn(e),o=e.range!=="unknown"?e.range:null,a=this.dependenciesMeta.get(r);a||this.dependenciesMeta.set(r,a=new Map);let n=a.get(o);return n||a.set(o,n={}),n}ensurePeerDependencyMeta(e){if(e.range!=="unknown")throw new Error(`Invalid meta field range for '${za(e)}'`);let r=Cn(e),o=this.peerDependenciesMeta.get(r);return o||this.peerDependenciesMeta.set(r,o={}),o}setRawField(e,r,{after:o=[]}={}){let a=new Set(o.filter(n=>Object.prototype.hasOwnProperty.call(this.raw,n)));if(a.size===0||Object.prototype.hasOwnProperty.call(this.raw,e))this.raw[e]=r;else{let n=this.raw,c=this.raw={},f=!1;for(let g of Object.keys(n))c[g]=n[g],f||(a.delete(g),a.size===0&&(c[e]=r,f=!0))}}exportTo(e,{compatibilityMode:r=!0}={}){if(Object.assign(e,this.raw),this.name!==null?e.name=Cn(this.name):delete e.name,this.version!==null?e.version=this.version:delete e.version,this.os!==null?e.os=this.os:delete e.os,this.cpu!==null?e.cpu=this.cpu:delete e.cpu,this.type!==null?e.type=this.type:delete e.type,this.packageManager!==null?e.packageManager=this.packageManager:delete e.packageManager,this.private?e.private=!0:delete e.private,this.license!==null?e.license=this.license:delete e.license,this.languageName!==null?e.languageName=this.languageName:delete e.languageName,this.main!==null?e.main=this.main:delete e.main,this.module!==null?e.module=this.module:delete e.module,this.browser!==null){let n=this.browser;typeof n=="string"?e.browser=n:n instanceof Map&&(e.browser=Object.assign({},...Array.from(n.keys()).sort().map(c=>({[c]:n.get(c)}))))}else delete e.browser;this.bin.size===1&&this.name!==null&&this.bin.has(this.name.name)?e.bin=this.bin.get(this.name.name):this.bin.size>0?e.bin=Object.assign({},...Array.from(this.bin.keys()).sort().map(n=>({[n]:this.bin.get(n)}))):delete e.bin,this.workspaceDefinitions.length>0?this.raw.workspaces&&!Array.isArray(this.raw.workspaces)?e.workspaces={...this.raw.workspaces,packages:this.workspaceDefinitions.map(({pattern:n})=>n)}:e.workspaces=this.workspaceDefinitions.map(({pattern:n})=>n):this.raw.workspaces&&!Array.isArray(this.raw.workspaces)&&Object.keys(this.raw.workspaces).length>0?e.workspaces=this.raw.workspaces:delete e.workspaces;let o=[],a=[];for(let n of this.dependencies.values()){let c=this.dependenciesMeta.get(Cn(n)),f=!1;if(r&&c){let g=c.get(null);g&&g.optional&&(f=!0)}f?a.push(n):o.push(n)}o.length>0?e.dependencies=Object.assign({},...DC(o).map(n=>({[Cn(n)]:n.range}))):delete e.dependencies,a.length>0?e.optionalDependencies=Object.assign({},...DC(a).map(n=>({[Cn(n)]:n.range}))):delete e.optionalDependencies,this.devDependencies.size>0?e.devDependencies=Object.assign({},...DC(this.devDependencies.values()).map(n=>({[Cn(n)]:n.range}))):delete e.devDependencies,this.peerDependencies.size>0?e.peerDependencies=Object.assign({},...DC(this.peerDependencies.values()).map(n=>({[Cn(n)]:n.range}))):delete e.peerDependencies,e.dependenciesMeta={};for(let[n,c]of Ja(this.dependenciesMeta.entries(),([f,g])=>f))for(let[f,g]of Ja(c.entries(),([p,E])=>p!==null?`0${p}`:"1")){let p=f!==null?za(_n(ha(n),f)):n,E={...g};r&&f===null&&delete E.optional,Object.keys(E).length!==0&&(e.dependenciesMeta[p]=E)}if(Object.keys(e.dependenciesMeta).length===0&&delete e.dependenciesMeta,this.peerDependenciesMeta.size>0?e.peerDependenciesMeta=Object.assign({},...Ja(this.peerDependenciesMeta.entries(),([n,c])=>n).map(([n,c])=>({[n]:c}))):delete e.peerDependenciesMeta,this.resolutions.length>0?e.resolutions=Object.assign({},...this.resolutions.map(({pattern:n,reference:c})=>({[Jv(n)]:c}))):delete e.resolutions,this.files!==null?e.files=Array.from(this.files):delete e.files,this.preferUnplugged!==null?e.preferUnplugged=this.preferUnplugged:delete e.preferUnplugged,this.scripts!==null&&this.scripts.size>0){e.scripts??(e.scripts={});for(let n of Object.keys(e.scripts))this.scripts.has(n)||delete e.scripts[n];for(let[n,c]of this.scripts.entries())e.scripts[n]=c}else delete e.scripts;return e}},Gt=SC;Gt.fileName="package.json",Gt.allDependencies=["dependencies","devDependencies","peerDependencies"],Gt.hardDependencies=["dependencies","devDependencies"]});var Foe=_((YNt,boe)=>{var Wrt=dl(),Jrt=function(){return Wrt.Date.now()};boe.exports=Jrt});var Toe=_((WNt,Roe)=>{var Vrt=/\s/;function zrt(t){for(var e=t.length;e--&&Vrt.test(t.charAt(e)););return e}Roe.exports=zrt});var Moe=_((JNt,Noe)=>{var Xrt=Toe(),Zrt=/^\s+/;function $rt(t){return t&&t.slice(0,Xrt(t)+1).replace(Zrt,"")}Noe.exports=$rt});var BB=_((VNt,Loe)=>{var ent=Ud(),tnt=mu(),rnt="[object Symbol]";function nnt(t){return typeof t=="symbol"||tnt(t)&&ent(t)==rnt}Loe.exports=nnt});var _oe=_((zNt,Koe)=>{var int=Moe(),Ooe=SA(),snt=BB(),Uoe=0/0,ont=/^[-+]0x[0-9a-f]+$/i,ant=/^0b[01]+$/i,Ant=/^0o[0-7]+$/i,lnt=parseInt;function cnt(t){if(typeof t=="number")return t;if(snt(t))return Uoe;if(Ooe(t)){var e=typeof t.valueOf=="function"?t.valueOf():t;t=Ooe(e)?e+"":e}if(typeof t!="string")return t===0?t:+t;t=int(t);var r=ant.test(t);return r||Ant.test(t)?lnt(t.slice(2),r?2:8):ont.test(t)?Uoe:+t}Koe.exports=cnt});var Goe=_((XNt,qoe)=>{var unt=SA(),t4=Foe(),Hoe=_oe(),fnt="Expected a function",gnt=Math.max,pnt=Math.min;function hnt(t,e,r){var o,a,n,c,f,g,p=0,E=!1,B=!1,Q=!0;if(typeof t!="function")throw new TypeError(fnt);e=Hoe(e)||0,unt(r)&&(E=!!r.leading,B="maxWait"in r,n=B?gnt(Hoe(r.maxWait)||0,e):n,Q="trailing"in r?!!r.trailing:Q);function x(Qe){var Pe=o,pe=a;return o=a=void 0,p=Qe,c=t.apply(pe,Pe),c}function C(Qe){return p=Qe,f=setTimeout(H,e),E?x(Qe):c}function N(Qe){var Pe=Qe-g,pe=Qe-p,Ee=e-Pe;return B?pnt(Ee,n-pe):Ee}function U(Qe){var Pe=Qe-g,pe=Qe-p;return g===void 0||Pe>=e||Pe<0||B&&pe>=n}function H(){var Qe=t4();if(U(Qe))return X(Qe);f=setTimeout(H,N(Qe))}function X(Qe){return f=void 0,Q&&o?x(Qe):(o=a=void 0,c)}function ie(){f!==void 0&&clearTimeout(f),p=0,o=g=a=f=void 0}function fe(){return f===void 0?c:X(t4())}function ye(){var Qe=t4(),Pe=U(Qe);if(o=arguments,a=this,g=Qe,Pe){if(f===void 0)return C(g);if(B)return clearTimeout(f),f=setTimeout(H,e),x(g)}return f===void 0&&(f=setTimeout(H,e)),c}return ye.cancel=ie,ye.flush=fe,ye}qoe.exports=hnt});var r4=_((ZNt,joe)=>{var dnt=Goe(),mnt=SA(),ynt="Expected a function";function Cnt(t,e,r){var o=!0,a=!0;if(typeof t!="function")throw new TypeError(ynt);return mnt(r)&&(o="leading"in r?!!r.leading:o,a="trailing"in r?!!r.trailing:a),dnt(t,e,{leading:o,maxWait:e,trailing:a})}joe.exports=Cnt});function Int(t){return typeof t.reportCode<"u"}var Yoe,Woe,Joe,Ent,rr,po,wl=Lt(()=>{Yoe=be(r4()),Woe=Ie("stream"),Joe=Ie("string_decoder"),Ent=15,rr=class extends Error{constructor(r,o,a){super(o);this.reportExtra=a;this.reportCode=r}};po=class{constructor(){this.reportedInfos=new Set;this.reportedWarnings=new Set;this.reportedErrors=new Set}static progressViaCounter(e){let r=0,o,a=new Promise(g=>{o=g}),n=g=>{let p=o;a=new Promise(E=>{o=E}),r=g,p()},c=(g=0)=>{n(r+1)},f=async function*(){for(;r{r=c}),a=(0,Yoe.default)(c=>{let f=r;o=new Promise(g=>{r=g}),e=c,f()},1e3/Ent),n=async function*(){for(;;)await o,yield{title:e}}();return{[Symbol.asyncIterator](){return n},hasProgress:!1,hasTitle:!0,setTitle:a}}async startProgressPromise(e,r){let o=this.reportProgress(e);try{return await r(e)}finally{o.stop()}}startProgressSync(e,r){let o=this.reportProgress(e);try{return r(e)}finally{o.stop()}}reportInfoOnce(e,r,o){var n;let a=o&&o.key?o.key:r;this.reportedInfos.has(a)||(this.reportedInfos.add(a),this.reportInfo(e,r),(n=o==null?void 0:o.reportExtra)==null||n.call(o,this))}reportWarningOnce(e,r,o){var n;let a=o&&o.key?o.key:r;this.reportedWarnings.has(a)||(this.reportedWarnings.add(a),this.reportWarning(e,r),(n=o==null?void 0:o.reportExtra)==null||n.call(o,this))}reportErrorOnce(e,r,o){var n;let a=o&&o.key?o.key:r;this.reportedErrors.has(a)||(this.reportedErrors.add(a),this.reportError(e,r),(n=o==null?void 0:o.reportExtra)==null||n.call(o,this))}reportExceptionOnce(e){Int(e)?this.reportErrorOnce(e.reportCode,e.message,{key:e,reportExtra:e.reportExtra}):this.reportErrorOnce(1,e.stack||e.message,{key:e})}createStreamReporter(e=null){let r=new Woe.PassThrough,o=new Joe.StringDecoder,a="";return r.on("data",n=>{let c=o.write(n),f;do if(f=c.indexOf(` -`),f!==-1){let g=a+c.substring(0,f);c=c.substring(f+1),a="",e!==null?this.reportInfo(null,`${e} ${g}`):this.reportInfo(null,g)}while(f!==-1);a+=c}),r.on("end",()=>{let n=o.end();n!==""&&(e!==null?this.reportInfo(null,`${e} ${n}`):this.reportInfo(null,n))}),r}}});var xC,n4=Lt(()=>{wl();go();xC=class{constructor(e){this.fetchers=e}supports(e,r){return!!this.tryFetcher(e,r)}getLocalPath(e,r){return this.getFetcher(e,r).getLocalPath(e,r)}async fetch(e,r){return await this.getFetcher(e,r).fetch(e,r)}tryFetcher(e,r){let o=this.fetchers.find(a=>a.supports(e,r));return o||null}getFetcher(e,r){let o=this.fetchers.find(a=>a.supports(e,r));if(!o)throw new rr(11,`${Yr(r.project.configuration,e)} isn't supported by any available fetcher`);return o}}});var tm,i4=Lt(()=>{go();tm=class{constructor(e){this.resolvers=e.filter(r=>r)}supportsDescriptor(e,r){return!!this.tryResolverByDescriptor(e,r)}supportsLocator(e,r){return!!this.tryResolverByLocator(e,r)}shouldPersistResolution(e,r){return this.getResolverByLocator(e,r).shouldPersistResolution(e,r)}bindDescriptor(e,r,o){return this.getResolverByDescriptor(e,o).bindDescriptor(e,r,o)}getResolutionDependencies(e,r){return this.getResolverByDescriptor(e,r).getResolutionDependencies(e,r)}async getCandidates(e,r,o){return await this.getResolverByDescriptor(e,o).getCandidates(e,r,o)}async getSatisfying(e,r,o,a){return this.getResolverByDescriptor(e,a).getSatisfying(e,r,o,a)}async resolve(e,r){return await this.getResolverByLocator(e,r).resolve(e,r)}tryResolverByDescriptor(e,r){let o=this.resolvers.find(a=>a.supportsDescriptor(e,r));return o||null}getResolverByDescriptor(e,r){let o=this.resolvers.find(a=>a.supportsDescriptor(e,r));if(!o)throw new Error(`${$n(r.project.configuration,e)} isn't supported by any available resolver`);return o}tryResolverByLocator(e,r){let o=this.resolvers.find(a=>a.supportsLocator(e,r));return o||null}getResolverByLocator(e,r){let o=this.resolvers.find(a=>a.supportsLocator(e,r));if(!o)throw new Error(`${Yr(r.project.configuration,e)} isn't supported by any available resolver`);return o}}});var PC,s4=Lt(()=>{Ft();go();PC=class{supports(e){return!!e.reference.startsWith("virtual:")}getLocalPath(e,r){let o=e.reference.indexOf("#");if(o===-1)throw new Error("Invalid virtual package reference");let a=e.reference.slice(o+1),n=Xa(e,a);return r.fetcher.getLocalPath(n,r)}async fetch(e,r){let o=e.reference.indexOf("#");if(o===-1)throw new Error("Invalid virtual package reference");let a=e.reference.slice(o+1),n=Xa(e,a),c=await r.fetcher.fetch(n,r);return await this.ensureVirtualLink(e,c,r)}getLocatorFilename(e){return vC(e)}async ensureVirtualLink(e,r,o){let a=r.packageFs.getRealPath(),n=o.project.configuration.get("virtualFolder"),c=this.getLocatorFilename(e),f=ji.makeVirtualPath(n,c,a),g=new au(f,{baseFs:r.packageFs,pathUtils:ee});return{...r,packageFs:g}}}});var bC,QB,Voe=Lt(()=>{bC=class{static isVirtualDescriptor(e){return!!e.range.startsWith(bC.protocol)}static isVirtualLocator(e){return!!e.reference.startsWith(bC.protocol)}supportsDescriptor(e,r){return bC.isVirtualDescriptor(e)}supportsLocator(e,r){return bC.isVirtualLocator(e)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,o){throw new Error('Assertion failed: calling "bindDescriptor" on a virtual descriptor is unsupported')}getResolutionDependencies(e,r){throw new Error('Assertion failed: calling "getResolutionDependencies" on a virtual descriptor is unsupported')}async getCandidates(e,r,o){throw new Error('Assertion failed: calling "getCandidates" on a virtual descriptor is unsupported')}async getSatisfying(e,r,o,a){throw new Error('Assertion failed: calling "getSatisfying" on a virtual descriptor is unsupported')}async resolve(e,r){throw new Error('Assertion failed: calling "resolve" on a virtual locator is unsupported')}},QB=bC;QB.protocol="virtual:"});var FC,o4=Lt(()=>{Ft();$d();FC=class{supports(e){return!!e.reference.startsWith(Qi.protocol)}getLocalPath(e,r){return this.getWorkspace(e,r).cwd}async fetch(e,r){let o=this.getWorkspace(e,r).cwd;return{packageFs:new Qn(o),prefixPath:Bt.dot,localPath:o}}getWorkspace(e,r){return r.project.getWorkspaceByCwd(e.reference.slice(Qi.protocol.length))}}});var tk={};tr(tk,{getDefaultGlobalFolder:()=>A4,getHomeFolder:()=>vB,isFolderInside:()=>l4});function A4(){if(process.platform==="win32"){let t=me.toPortablePath(process.env.LOCALAPPDATA||me.join((0,a4.homedir)(),"AppData","Local"));return ee.resolve(t,"Yarn/Berry")}if(process.env.XDG_DATA_HOME){let t=me.toPortablePath(process.env.XDG_DATA_HOME);return ee.resolve(t,"yarn/berry")}return ee.resolve(vB(),".yarn/berry")}function vB(){return me.toPortablePath((0,a4.homedir)()||"/usr/local/share")}function l4(t,e){let r=ee.relative(e,t);return r&&!r.startsWith("..")&&!ee.isAbsolute(r)}var a4,rk=Lt(()=>{Ft();a4=Ie("os")});var xp={};tr(xp,{builtinModules:()=>c4,getArchitecture:()=>DB,getArchitectureName:()=>Bnt,getArchitectureSet:()=>u4});function c4(){return new Set(Zoe.default.builtinModules||Object.keys(process.binding("natives")))}function wnt(){var o;if(process.platform==="win32")return null;let e=(((o=process.report)==null?void 0:o.getReport())??{}).sharedObjects??[],r=/\/(?:(ld-linux-|[^/]+-linux-gnu\/)|(libc.musl-|ld-musl-))/;return iB(e,a=>{let n=a.match(r);if(!n)return iB.skip;if(n[1])return"glibc";if(n[2])return"musl";throw new Error("Assertion failed: Expected the libc variant to have been detected")})??null}function DB(){return zoe=zoe??{os:process.platform,cpu:process.arch,libc:wnt()}}function Bnt(t=DB()){return t.libc?`${t.os}-${t.cpu}-${t.libc}`:`${t.os}-${t.cpu}`}function u4(){let t=DB();return Xoe=Xoe??{os:[t.os],cpu:[t.cpu],libc:t.libc?[t.libc]:[]}}var Zoe,zoe,Xoe,nk=Lt(()=>{Zoe=be(Ie("module"));ml()});function m4(t,e,r,o,a){if(o.isArray||o.type==="ANY"&&Array.isArray(r))return Array.isArray(r)?r.map((n,c)=>g4(t,`${e}[${c}]`,n,o,a)):String(r).split(/,/).map(n=>g4(t,e,n,o,a));if(Array.isArray(r))throw new Error(`Non-array configuration settings "${e}" cannot be an array`);return g4(t,e,r,o,a)}function g4(t,e,r,o,a){var f;switch(o.type){case"ANY":return r;case"SHAPE":return Snt(t,e,r,o,a);case"MAP":return knt(t,e,r,o,a)}if(r===null&&!o.isNullable&&o.default!==null)throw new Error(`Non-nullable configuration settings "${e}" cannot be set to null`);if((f=o.values)!=null&&f.includes(r))return r;let c=(()=>{if(o.type==="BOOLEAN"&&typeof r!="string")return sB(r);if(typeof r!="string")throw new Error(`Expected value (${r}) to be a string`);let g=eL(r,{env:process.env});switch(o.type){case"ABSOLUTE_PATH":return ee.resolve(a,me.toPortablePath(g));case"LOCATOR_LOOSE":return Xd(g,!1);case"NUMBER":return parseInt(g);case"LOCATOR":return Xd(g);case"BOOLEAN":return sB(g);default:return g}})();if(o.values&&!o.values.includes(c))throw new Error(`Invalid value, expected one of ${o.values.join(", ")}`);return c}function Snt(t,e,r,o,a){if(typeof r!="object"||Array.isArray(r))throw new Zf.UsageError(`Object configuration settings "${e}" must be an object`);let n=y4(t,o,{ignoreArrays:!0});if(r===null)return n;for(let[c,f]of Object.entries(r)){let g=`${e}.${c}`;if(!o.properties[c])throw new Zf.UsageError(`Unrecognized configuration settings found: ${e}.${c} - run "yarn config -v" to see the list of settings supported in Yarn`);n.set(c,m4(t,g,f,o.properties[c],a))}return n}function knt(t,e,r,o,a){let n=new Map;if(typeof r!="object"||Array.isArray(r))throw new Zf.UsageError(`Map configuration settings "${e}" must be an object`);if(r===null)return n;for(let[c,f]of Object.entries(r)){let g=o.normalizeKeys?o.normalizeKeys(c):c,p=`${e}['${g}']`,E=o.valueDefinition;n.set(g,m4(t,p,f,E,a))}return n}function y4(t,e,{ignoreArrays:r=!1}={}){switch(e.type){case"SHAPE":{if(e.isArray&&!r)return[];let o=new Map;for(let[a,n]of Object.entries(e.properties))o.set(a,y4(t,n));return o}break;case"MAP":return e.isArray&&!r?[]:new Map;case"ABSOLUTE_PATH":return e.default===null?null:t.projectCwd===null?ee.isAbsolute(e.default)?ee.normalize(e.default):e.isNullable?null:void 0:Array.isArray(e.default)?e.default.map(o=>ee.resolve(t.projectCwd,o)):ee.resolve(t.projectCwd,e.default);default:return e.default}}function ik(t,e,r){if(e.type==="SECRET"&&typeof t=="string"&&r.hideSecrets)return Dnt;if(e.type==="ABSOLUTE_PATH"&&typeof t=="string"&&r.getNativePaths)return me.fromPortablePath(t);if(e.isArray&&Array.isArray(t)){let o=[];for(let a of t)o.push(ik(a,e,r));return o}if(e.type==="MAP"&&t instanceof Map){let o=new Map;for(let[a,n]of t.entries())o.set(a,ik(n,e.valueDefinition,r));return o}if(e.type==="SHAPE"&&t instanceof Map){let o=new Map;for(let[a,n]of t.entries()){let c=e.properties[a];o.set(a,ik(n,c,r))}return o}return t}function xnt(){let t={};for(let[e,r]of Object.entries(process.env))e=e.toLowerCase(),e.startsWith(ok)&&(e=(0,eae.default)(e.slice(ok.length)),t[e]=r);return t}function sk(){let t=`${ok}rc_filename`;for(let[e,r]of Object.entries(process.env))if(e.toLowerCase()===t&&typeof r=="string")return r;return h4}var eae,Pp,Zf,tae,p4,$oe,Qnt,vnt,SB,ok,h4,d4,Dnt,ak,rae,f4,C4,Qu,rt,kB=Lt(()=>{Ft();oc();cl();eae=be(WJ()),Pp=be(Qd()),Zf=be(Vt()),tae=be(kd()),p4=Ie("stream");Boe();kC();n4();i4();s4();Voe();o4();$d();rk();El();ml();nk();kp();go();Qnt=Pp.GITHUB_ACTIONS&&process.env.GITHUB_EVENT_PATH?!((($oe=ge.readJsonSync(me.toPortablePath(process.env.GITHUB_EVENT_PATH)).repository)==null?void 0:$oe.private)??!0):!1,vnt=new Set(["binFolder","version","flags","profile","gpg","ignoreNode","wrapOutput","home","confDir"]),SB=/^(?!v)[a-z0-9._-]+$/i,ok="yarn_",h4=".yarnrc.yml",d4="yarn.lock",Dnt="********",ak=(E=>(E.ANY="ANY",E.BOOLEAN="BOOLEAN",E.ABSOLUTE_PATH="ABSOLUTE_PATH",E.LOCATOR="LOCATOR",E.LOCATOR_LOOSE="LOCATOR_LOOSE",E.NUMBER="NUMBER",E.STRING="STRING",E.SECRET="SECRET",E.SHAPE="SHAPE",E.MAP="MAP",E))(ak||{}),rae=Mt,f4={lastUpdateCheck:{description:"Last timestamp we checked whether new Yarn versions were available",type:"STRING",default:null},yarnPath:{description:"Path to the local executable that must be used over the global one",type:"ABSOLUTE_PATH",default:null},ignorePath:{description:"If true, the local executable will be ignored when using the global one",type:"BOOLEAN",default:!1},ignoreCwd:{description:"If true, the `--cwd` flag will be ignored",type:"BOOLEAN",default:!1},cacheKeyOverride:{description:"A global cache key override; used only for test purposes",type:"STRING",default:null},globalFolder:{description:"Folder where all system-global files are stored",type:"ABSOLUTE_PATH",default:A4()},cacheFolder:{description:"Folder where the cache files must be written",type:"ABSOLUTE_PATH",default:"./.yarn/cache"},compressionLevel:{description:"Zip files compression level, from 0 to 9 or mixed (a variant of 9, which stores some files uncompressed, when compression doesn't yield good results)",type:"NUMBER",values:["mixed",0,1,2,3,4,5,6,7,8,9],default:My},virtualFolder:{description:"Folder where the virtual packages (cf doc) will be mapped on the disk (must be named __virtual__)",type:"ABSOLUTE_PATH",default:"./.yarn/__virtual__"},lockfileFilename:{description:"Name of the files where the Yarn dependency tree entries must be stored",type:"STRING",default:d4},installStatePath:{description:"Path of the file where the install state will be persisted",type:"ABSOLUTE_PATH",default:"./.yarn/install-state.gz"},immutablePatterns:{description:"Array of glob patterns; files matching them won't be allowed to change during immutable installs",type:"STRING",default:[],isArray:!0},rcFilename:{description:"Name of the files where the configuration can be found",type:"STRING",default:sk()},enableGlobalCache:{description:"If true, the system-wide cache folder will be used regardless of `cache-folder`",type:"BOOLEAN",default:!0},enableColors:{description:"If true, the CLI is allowed to use colors in its output",type:"BOOLEAN",default:pS,defaultText:""},enableHyperlinks:{description:"If true, the CLI is allowed to use hyperlinks in its output",type:"BOOLEAN",default:aL,defaultText:""},enableInlineBuilds:{description:"If true, the CLI will print the build output on the command line",type:"BOOLEAN",default:Pp.isCI,defaultText:""},enableMessageNames:{description:"If true, the CLI will prefix most messages with codes suitable for search engines",type:"BOOLEAN",default:!0},enableProgressBars:{description:"If true, the CLI is allowed to show a progress bar for long-running events",type:"BOOLEAN",default:!Pp.isCI,defaultText:""},enableTimers:{description:"If true, the CLI is allowed to print the time spent executing commands",type:"BOOLEAN",default:!0},preferAggregateCacheInfo:{description:"If true, the CLI will only print a one-line report of any cache changes",type:"BOOLEAN",default:Pp.isCI},preferInteractive:{description:"If true, the CLI will automatically use the interactive mode when called from a TTY",type:"BOOLEAN",default:!1},preferTruncatedLines:{description:"If true, the CLI will truncate lines that would go beyond the size of the terminal",type:"BOOLEAN",default:!1},progressBarStyle:{description:"Which style of progress bar should be used (only when progress bars are enabled)",type:"STRING",default:void 0,defaultText:""},defaultLanguageName:{description:"Default language mode that should be used when a package doesn't offer any insight",type:"STRING",default:"node"},defaultProtocol:{description:"Default resolution protocol used when resolving pure semver and tag ranges",type:"STRING",default:"npm:"},enableTransparentWorkspaces:{description:"If false, Yarn won't automatically resolve workspace dependencies unless they use the `workspace:` protocol",type:"BOOLEAN",default:!0},supportedArchitectures:{description:"Architectures that Yarn will fetch and inject into the resolver",type:"SHAPE",properties:{os:{description:"Array of supported process.platform strings, or null to target them all",type:"STRING",isArray:!0,isNullable:!0,default:["current"]},cpu:{description:"Array of supported process.arch strings, or null to target them all",type:"STRING",isArray:!0,isNullable:!0,default:["current"]},libc:{description:"Array of supported libc libraries, or null to target them all",type:"STRING",isArray:!0,isNullable:!0,default:["current"]}}},enableMirror:{description:"If true, the downloaded packages will be retrieved and stored in both the local and global folders",type:"BOOLEAN",default:!0},enableNetwork:{description:"If false, the package manager will refuse to use the network if required to",type:"BOOLEAN",default:!0},httpProxy:{description:"URL of the http proxy that must be used for outgoing http requests",type:"STRING",default:null},httpsProxy:{description:"URL of the http proxy that must be used for outgoing https requests",type:"STRING",default:null},unsafeHttpWhitelist:{description:"List of the hostnames for which http queries are allowed (glob patterns are supported)",type:"STRING",default:[],isArray:!0},httpTimeout:{description:"Timeout of each http request in milliseconds",type:"NUMBER",default:6e4},httpRetry:{description:"Retry times on http failure",type:"NUMBER",default:3},networkConcurrency:{description:"Maximal number of concurrent requests",type:"NUMBER",default:50},networkSettings:{description:"Network settings per hostname (glob patterns are supported)",type:"MAP",valueDefinition:{description:"",type:"SHAPE",properties:{httpsCaFilePath:{description:"Path to file containing one or multiple Certificate Authority signing certificates",type:"ABSOLUTE_PATH",default:null},enableNetwork:{description:"If false, the package manager will refuse to use the network if required to",type:"BOOLEAN",default:null},httpProxy:{description:"URL of the http proxy that must be used for outgoing http requests",type:"STRING",default:null},httpsProxy:{description:"URL of the http proxy that must be used for outgoing https requests",type:"STRING",default:null},httpsKeyFilePath:{description:"Path to file containing private key in PEM format",type:"ABSOLUTE_PATH",default:null},httpsCertFilePath:{description:"Path to file containing certificate chain in PEM format",type:"ABSOLUTE_PATH",default:null}}}},httpsCaFilePath:{description:"A path to a file containing one or multiple Certificate Authority signing certificates",type:"ABSOLUTE_PATH",default:null},httpsKeyFilePath:{description:"Path to file containing private key in PEM format",type:"ABSOLUTE_PATH",default:null},httpsCertFilePath:{description:"Path to file containing certificate chain in PEM format",type:"ABSOLUTE_PATH",default:null},enableStrictSsl:{description:"If false, SSL certificate errors will be ignored",type:"BOOLEAN",default:!0},logFilters:{description:"Overrides for log levels",type:"SHAPE",isArray:!0,concatenateValues:!0,properties:{code:{description:"Code of the messages covered by this override",type:"STRING",default:void 0},text:{description:"Code of the texts covered by this override",type:"STRING",default:void 0},pattern:{description:"Code of the patterns covered by this override",type:"STRING",default:void 0},level:{description:"Log level override, set to null to remove override",type:"STRING",values:Object.values(dS),isNullable:!0,default:void 0}}},enableTelemetry:{description:"If true, telemetry will be periodically sent, following the rules in https://yarnpkg.com/advanced/telemetry",type:"BOOLEAN",default:!0},telemetryInterval:{description:"Minimal amount of time between two telemetry uploads, in days",type:"NUMBER",default:7},telemetryUserId:{description:"If you desire to tell us which project you are, you can set this field. Completely optional and opt-in.",type:"STRING",default:null},enableHardenedMode:{description:"If true, automatically enable --check-resolutions --refresh-lockfile on installs",type:"BOOLEAN",default:Pp.isPR&&Qnt,defaultText:""},enableScripts:{description:"If true, packages are allowed to have install scripts by default",type:"BOOLEAN",default:!0},enableStrictSettings:{description:"If true, unknown settings will cause Yarn to abort",type:"BOOLEAN",default:!0},enableImmutableCache:{description:"If true, the cache is reputed immutable and actions that would modify it will throw",type:"BOOLEAN",default:!1},checksumBehavior:{description:"Enumeration defining what to do when a checksum doesn't match expectations",type:"STRING",default:"throw"},packageExtensions:{description:"Map of package corrections to apply on the dependency tree",type:"MAP",valueDefinition:{description:"The extension that will be applied to any package whose version matches the specified range",type:"SHAPE",properties:{dependencies:{description:"The set of dependencies that must be made available to the current package in order for it to work properly",type:"MAP",valueDefinition:{description:"A range",type:"STRING"}},peerDependencies:{description:"Inherited dependencies - the consumer of the package will be tasked to provide them",type:"MAP",valueDefinition:{description:"A semver range",type:"STRING"}},peerDependenciesMeta:{description:"Extra information related to the dependencies listed in the peerDependencies field",type:"MAP",valueDefinition:{description:"The peerDependency meta",type:"SHAPE",properties:{optional:{description:"If true, the selected peer dependency will be marked as optional by the package manager and the consumer omitting it won't be reported as an error",type:"BOOLEAN",default:!1}}}}}}}};C4=(o=>(o[o.LOCKFILE=0]="LOCKFILE",o[o.MANIFEST=1]="MANIFEST",o[o.NONE=2]="NONE",o))(C4||{}),Qu=class{constructor(e){this.projectCwd=null;this.plugins=new Map;this.settings=new Map;this.values=new Map;this.sources=new Map;this.invalid=new Map;this.packageExtensions=new Map;this.limits=new Map;this.startingCwd=e}static create(e,r,o){let a=new Qu(e);typeof r<"u"&&!(r instanceof Map)&&(a.projectCwd=r),a.importSettings(f4);let n=typeof o<"u"?o:r instanceof Map?r:new Map;for(let[c,f]of n)a.activatePlugin(c,f);return a}static async find(e,r,{lookup:o=0,strict:a=!0,usePath:n=!1,useRc:c=!0}={}){let f=xnt();delete f.rcFilename;let g=await Qu.findRcFiles(e),p=await Qu.findHomeRcFile();if(p){let H=g.find(X=>X.path===p.path);H?H.strict=!1:g.push({...p,strict:!1})}let E=({ignoreCwd:H,yarnPath:X,ignorePath:ie,lockfileFilename:fe})=>({ignoreCwd:H,yarnPath:X,ignorePath:ie,lockfileFilename:fe}),B=({ignoreCwd:H,yarnPath:X,ignorePath:ie,lockfileFilename:fe,...ye})=>ye,Q=new Qu(e);Q.importSettings(E(f4)),Q.useWithSource("",E(f),e,{strict:!1});for(let{path:H,cwd:X,data:ie}of g)Q.useWithSource(H,E(ie),X,{strict:!1});if(n){let H=Q.get("yarnPath"),X=Q.get("ignorePath");if(H!==null&&!X)return Q}let x=Q.get("lockfileFilename"),C;switch(o){case 0:C=await Qu.findProjectCwd(e,x);break;case 1:C=await Qu.findProjectCwd(e,null);break;case 2:ge.existsSync(ee.join(e,"package.json"))?C=ee.resolve(e):C=null;break}Q.startingCwd=e,Q.projectCwd=C,Q.importSettings(B(f4));let N=new Map([["@@core",woe]]),U=H=>"default"in H?H.default:H;if(r!==null){for(let fe of r.plugins.keys())N.set(fe,U(r.modules.get(fe)));let H=new Map;for(let fe of c4())H.set(fe,()=>dC(fe));for(let[fe,ye]of r.modules)H.set(fe,()=>ye);let X=new Set,ie=async(fe,ye)=>{let{factory:Qe,name:Pe}=dC(fe);if(!Qe||X.has(Pe))return;let pe=new Map(H),Ee=h=>{if(pe.has(h))return pe.get(h)();throw new Zf.UsageError(`This plugin cannot access the package referenced via ${h} which is neither a builtin, nor an exposed entry`)},ke=await pC(async()=>U(await Qe(Ee)),h=>`${h} (when initializing ${Pe}, defined in ${ye})`);H.set(Pe,()=>ke),X.add(Pe),N.set(Pe,ke)};if(f.plugins)for(let fe of f.plugins.split(";")){let ye=ee.resolve(e,me.toPortablePath(fe));await ie(ye,"")}for(let{path:fe,cwd:ye,data:Qe}of g)if(!!c&&!!Array.isArray(Qe.plugins))for(let Pe of Qe.plugins){let pe=typeof Pe!="string"?Pe.path:Pe,Ee=ee.resolve(ye,me.toPortablePath(pe));await ie(Ee,fe)}}for(let[H,X]of N)Q.activatePlugin(H,X);Q.useWithSource("",B(f),e,{strict:a});for(let{path:H,cwd:X,data:ie,strict:fe}of g)Q.useWithSource(H,B(ie),X,{strict:fe??a});return Q.get("enableGlobalCache")&&(Q.values.set("cacheFolder",`${Q.get("globalFolder")}/cache`),Q.sources.set("cacheFolder","")),await Q.refreshPackageExtensions(),Q}static async findRcFiles(e){let r=sk(),o=[],a=e,n=null;for(;a!==n;){n=a;let c=ee.join(n,r);if(ge.existsSync(c)){let f=await ge.readFilePromise(c,"utf8"),g;try{g=os(f)}catch{let E="";throw f.match(/^\s+(?!-)[^:]+\s+\S+/m)&&(E=" (in particular, make sure you list the colons after each key name)"),new Zf.UsageError(`Parse error when loading ${c}; please check it's proper Yaml${E}`)}o.push({path:c,cwd:n,data:g})}a=ee.dirname(n)}return o}static async findHomeRcFile(){let e=sk(),r=vB(),o=ee.join(r,e);if(ge.existsSync(o)){let a=await ge.readFilePromise(o,"utf8"),n=os(a);return{path:o,cwd:r,data:n}}return null}static async findProjectCwd(e,r){let o=null,a=e,n=null;for(;a!==n;){if(n=a,ge.existsSync(ee.join(n,"package.json"))&&(o=n),r!==null){if(ge.existsSync(ee.join(n,r))){o=n;break}}else if(o!==null)break;a=ee.dirname(n)}return o}static async updateConfiguration(e,r){let o=sk(),a=ee.join(e,o),n=ge.existsSync(a)?os(await ge.readFilePromise(a,"utf8")):{},c=!1,f;if(typeof r=="function"){try{f=r(n)}catch{f=r({})}if(f===n)return}else{f=n;for(let g of Object.keys(r)){let p=n[g],E=r[g],B;if(typeof E=="function")try{B=E(p)}catch{B=E(void 0)}else B=E;p!==B&&(B===Qu.deleteProperty?delete f[g]:f[g]=B,c=!0)}if(!c)return}await ge.changeFilePromise(a,ja(f),{automaticNewlines:!0})}static async updateHomeConfiguration(e){let r=vB();return await Qu.updateConfiguration(r,e)}activatePlugin(e,r){this.plugins.set(e,r),typeof r.configuration<"u"&&this.importSettings(r.configuration)}importSettings(e){for(let[r,o]of Object.entries(e))if(o!=null){if(this.settings.has(r))throw new Error(`Cannot redefine settings "${r}"`);this.settings.set(r,o),this.values.set(r,y4(this,o))}}useWithSource(e,r,o,a){try{this.use(e,r,o,a)}catch(n){throw n.message+=` (in ${ar(this,e,Mt.PATH)})`,n}}use(e,r,o,{strict:a=!0,overwrite:n=!1}={}){a=a&&this.get("enableStrictSettings");for(let c of["enableStrictSettings",...Object.keys(r)]){if(typeof r[c]>"u"||c==="plugins"||e===""&&vnt.has(c))continue;if(c==="rcFilename")throw new Zf.UsageError(`The rcFilename settings can only be set via ${`${ok}RC_FILENAME`.toUpperCase()}, not via a rc file`);let g=this.settings.get(c);if(!g){if(a)throw new Zf.UsageError(`Unrecognized or legacy configuration settings found: ${c} - run "yarn config -v" to see the list of settings supported in Yarn`);this.invalid.set(c,e);continue}if(this.sources.has(c)&&!(n||g.type==="MAP"||g.isArray&&g.concatenateValues))continue;let p;try{p=m4(this,c,r[c],g,o)}catch(E){throw E.message+=` in ${ar(this,e,Mt.PATH)}`,E}if(c==="enableStrictSettings"&&e!==""){a=p;continue}if(g.type==="MAP"){let E=this.values.get(c);this.values.set(c,new Map(n?[...E,...p]:[...p,...E])),this.sources.set(c,`${this.sources.get(c)}, ${e}`)}else if(g.isArray&&g.concatenateValues){let E=this.values.get(c);this.values.set(c,n?[...E,...p]:[...p,...E]),this.sources.set(c,`${this.sources.get(c)}, ${e}`)}else this.values.set(c,p),this.sources.set(c,e)}}get(e){if(!this.values.has(e))throw new Error(`Invalid configuration key "${e}"`);return this.values.get(e)}getSpecial(e,{hideSecrets:r=!1,getNativePaths:o=!1}){let a=this.get(e),n=this.settings.get(e);if(typeof n>"u")throw new Zf.UsageError(`Couldn't find a configuration settings named "${e}"`);return ik(a,n,{hideSecrets:r,getNativePaths:o})}getSubprocessStreams(e,{header:r,prefix:o,report:a}){let n,c,f=ge.createWriteStream(e);if(this.get("enableInlineBuilds")){let g=a.createStreamReporter(`${o} ${ar(this,"STDOUT","green")}`),p=a.createStreamReporter(`${o} ${ar(this,"STDERR","red")}`);n=new p4.PassThrough,n.pipe(g),n.pipe(f),c=new p4.PassThrough,c.pipe(p),c.pipe(f)}else n=f,c=f,typeof r<"u"&&n.write(`${r} -`);return{stdout:n,stderr:c}}makeResolver(){let e=[];for(let r of this.plugins.values())for(let o of r.resolvers||[])e.push(new o);return new tm([new QB,new Qi,...e])}makeFetcher(){let e=[];for(let r of this.plugins.values())for(let o of r.fetchers||[])e.push(new o);return new xC([new PC,new FC,...e])}getLinkers(){let e=[];for(let r of this.plugins.values())for(let o of r.linkers||[])e.push(new o);return e}getSupportedArchitectures(){let e=DB(),r=this.get("supportedArchitectures"),o=r.get("os");o!==null&&(o=o.map(c=>c==="current"?e.os:c));let a=r.get("cpu");a!==null&&(a=a.map(c=>c==="current"?e.cpu:c));let n=r.get("libc");return n!==null&&(n=yu(n,c=>c==="current"?e.libc??yu.skip:c)),{os:o,cpu:a,libc:n}}async refreshPackageExtensions(){this.packageExtensions=new Map;let e=this.packageExtensions,r=(o,a,{userProvided:n=!1}={})=>{if(!Bu(o.range))throw new Error("Only semver ranges are allowed as keys for the packageExtensions setting");let c=new Gt;c.load(a,{yamlCompatibilityMode:!0});let f=fC(e,o.identHash),g=[];f.push([o.range,g]);let p={status:"inactive",userProvided:n,parentDescriptor:o};for(let E of c.dependencies.values())g.push({...p,type:"Dependency",descriptor:E});for(let E of c.peerDependencies.values())g.push({...p,type:"PeerDependency",descriptor:E});for(let[E,B]of c.peerDependenciesMeta)for(let[Q,x]of Object.entries(B))g.push({...p,type:"PeerDependencyMeta",selector:E,key:Q,value:x})};await this.triggerHook(o=>o.registerPackageExtensions,this,r);for(let[o,a]of this.get("packageExtensions"))r(Sp(o,!0),fS(a),{userProvided:!0})}normalizeDependency(e){return Bu(e.range)?_n(e,`${this.get("defaultProtocol")}${e.range}`):SB.test(e.range)?_n(e,`${this.get("defaultProtocol")}${e.range}`):e}normalizeDependencyMap(e){return new Map([...e].map(([r,o])=>[r,this.normalizeDependency(o)]))}normalizePackage(e){let r=pB(e);if(this.packageExtensions==null)throw new Error("refreshPackageExtensions has to be called before normalizing packages");let o=this.packageExtensions.get(e.identHash);if(typeof o<"u"){let n=e.version;if(n!==null){for(let[c,f]of o)if(!!em(n,c))for(let g of f)switch(g.status==="inactive"&&(g.status="redundant"),g.type){case"Dependency":typeof r.dependencies.get(g.descriptor.identHash)>"u"&&(g.status="active",r.dependencies.set(g.descriptor.identHash,this.normalizeDependency(g.descriptor)));break;case"PeerDependency":typeof r.peerDependencies.get(g.descriptor.identHash)>"u"&&(g.status="active",r.peerDependencies.set(g.descriptor.identHash,g.descriptor));break;case"PeerDependencyMeta":{let p=r.peerDependenciesMeta.get(g.selector);(typeof p>"u"||!Object.prototype.hasOwnProperty.call(p,g.key)||p[g.key]!==g.value)&&(g.status="active",jf(r.peerDependenciesMeta,g.selector,()=>({}))[g.key]=g.value)}break;default:ZM(g);break}}}let a=n=>n.scope?`${n.scope}__${n.name}`:`${n.name}`;for(let n of r.peerDependenciesMeta.keys()){let c=ha(n);r.peerDependencies.has(c.identHash)||r.peerDependencies.set(c.identHash,_n(c,"*"))}for(let n of r.peerDependencies.values()){if(n.scope==="types")continue;let c=a(n),f=wu("types",c),g=Cn(f);r.peerDependencies.has(f.identHash)||r.peerDependenciesMeta.has(g)||(r.peerDependencies.set(f.identHash,_n(f,"*")),r.peerDependenciesMeta.set(g,{optional:!0}))}return r.dependencies=new Map(Ja(r.dependencies,([,n])=>za(n))),r.peerDependencies=new Map(Ja(r.peerDependencies,([,n])=>za(n))),r}getLimit(e){return jf(this.limits,e,()=>(0,tae.default)(this.get(e)))}async triggerHook(e,...r){for(let o of this.plugins.values()){let a=o.hooks;if(!a)continue;let n=e(a);!n||await n(...r)}}async triggerMultipleHooks(e,r){for(let o of r)await this.triggerHook(e,...o)}async reduceHook(e,r,...o){let a=r;for(let n of this.plugins.values()){let c=n.hooks;if(!c)continue;let f=e(c);!f||(a=await f(a,...o))}return a}async firstHook(e,...r){for(let o of this.plugins.values()){let a=o.hooks;if(!a)continue;let n=e(a);if(!n)continue;let c=await n(...r);if(typeof c<"u")return c}return null}},rt=Qu;rt.deleteProperty=Symbol(),rt.telemetry=null});var pn={};tr(pn,{EndStrategy:()=>B4,ExecError:()=>Ak,PipeError:()=>xB,execvp:()=>Pnt,pipevp:()=>vu});function rm(t){return t!==null&&typeof t.fd=="number"}function E4(){}function I4(){for(let t of nm)t.kill()}async function vu(t,e,{cwd:r,env:o=process.env,strict:a=!1,stdin:n=null,stdout:c,stderr:f,end:g=2}){let p=["pipe","pipe","pipe"];n===null?p[0]="ignore":rm(n)&&(p[0]=n),rm(c)&&(p[1]=c),rm(f)&&(p[2]=f);let E=(0,w4.default)(t,e,{cwd:me.fromPortablePath(r),env:{...o,PWD:me.fromPortablePath(r)},stdio:p});nm.add(E),nm.size===1&&(process.on("SIGINT",E4),process.on("SIGTERM",I4)),!rm(n)&&n!==null&&n.pipe(E.stdin),rm(c)||E.stdout.pipe(c,{end:!1}),rm(f)||E.stderr.pipe(f,{end:!1});let B=()=>{for(let Q of new Set([c,f]))rm(Q)||Q.end()};return new Promise((Q,x)=>{E.on("error",C=>{nm.delete(E),nm.size===0&&(process.off("SIGINT",E4),process.off("SIGTERM",I4)),(g===2||g===1)&&B(),x(C)}),E.on("close",(C,N)=>{nm.delete(E),nm.size===0&&(process.off("SIGINT",E4),process.off("SIGTERM",I4)),(g===2||g===1&&C!==0)&&B(),C===0||!a?Q({code:Q4(C,N)}):x(new xB({fileName:t,code:C,signal:N}))})})}async function Pnt(t,e,{cwd:r,env:o=process.env,encoding:a="utf8",strict:n=!1}){let c=["ignore","pipe","pipe"],f=[],g=[],p=me.fromPortablePath(r);typeof o.PWD<"u"&&(o={...o,PWD:p});let E=(0,w4.default)(t,e,{cwd:p,env:o,stdio:c});return E.stdout.on("data",B=>{f.push(B)}),E.stderr.on("data",B=>{g.push(B)}),await new Promise((B,Q)=>{E.on("error",x=>{let C=rt.create(r),N=ar(C,t,Mt.PATH);Q(new rr(1,`Process ${N} failed to spawn`,U=>{U.reportError(1,` ${Cu(C,{label:"Thrown Error",value:uc(Mt.NO_HINT,x.message)})}`)}))}),E.on("close",(x,C)=>{let N=a==="buffer"?Buffer.concat(f):Buffer.concat(f).toString(a),U=a==="buffer"?Buffer.concat(g):Buffer.concat(g).toString(a);x===0||!n?B({code:Q4(x,C),stdout:N,stderr:U}):Q(new Ak({fileName:t,code:x,signal:C,stdout:N,stderr:U}))})})}function Q4(t,e){let r=bnt.get(e);return typeof r<"u"?128+r:t??1}function Fnt(t,e,{configuration:r,report:o}){o.reportError(1,` ${Cu(r,t!==null?{label:"Exit Code",value:uc(Mt.NUMBER,t)}:{label:"Exit Signal",value:uc(Mt.CODE,e)})}`)}var w4,B4,xB,Ak,nm,bnt,v4=Lt(()=>{Ft();w4=be(xT());kB();wl();El();B4=(o=>(o[o.Never=0]="Never",o[o.ErrorCode=1]="ErrorCode",o[o.Always=2]="Always",o))(B4||{}),xB=class extends rr{constructor({fileName:r,code:o,signal:a}){let n=rt.create(ee.cwd()),c=ar(n,r,Mt.PATH);super(1,`Child ${c} reported an error`,f=>{Fnt(o,a,{configuration:n,report:f})});this.code=Q4(o,a)}},Ak=class extends xB{constructor({fileName:r,code:o,signal:a,stdout:n,stderr:c}){super({fileName:r,code:o,signal:a});this.stdout=n,this.stderr=c}};nm=new Set;bnt=new Map([["SIGINT",2],["SIGQUIT",3],["SIGKILL",9],["SIGTERM",15]])});var oae=_(RC=>{"use strict";var TMt=Ie("net"),Rnt=Ie("tls"),D4=Ie("http"),nae=Ie("https"),Tnt=Ie("events"),NMt=Ie("assert"),Nnt=Ie("util");RC.httpOverHttp=Mnt;RC.httpsOverHttp=Lnt;RC.httpOverHttps=Ont;RC.httpsOverHttps=Unt;function Mnt(t){var e=new $f(t);return e.request=D4.request,e}function Lnt(t){var e=new $f(t);return e.request=D4.request,e.createSocket=iae,e.defaultPort=443,e}function Ont(t){var e=new $f(t);return e.request=nae.request,e}function Unt(t){var e=new $f(t);return e.request=nae.request,e.createSocket=iae,e.defaultPort=443,e}function $f(t){var e=this;e.options=t||{},e.proxyOptions=e.options.proxy||{},e.maxSockets=e.options.maxSockets||D4.Agent.defaultMaxSockets,e.requests=[],e.sockets=[],e.on("free",function(o,a,n,c){for(var f=sae(a,n,c),g=0,p=e.requests.length;g=this.maxSockets){n.requests.push(c);return}n.createSocket(c,function(f){f.on("free",g),f.on("close",p),f.on("agentRemove",p),e.onSocket(f);function g(){n.emit("free",f,c)}function p(E){n.removeSocket(f),f.removeListener("free",g),f.removeListener("close",p),f.removeListener("agentRemove",p)}})};$f.prototype.createSocket=function(e,r){var o=this,a={};o.sockets.push(a);var n=S4({},o.proxyOptions,{method:"CONNECT",path:e.host+":"+e.port,agent:!1,headers:{host:e.host+":"+e.port}});e.localAddress&&(n.localAddress=e.localAddress),n.proxyAuth&&(n.headers=n.headers||{},n.headers["Proxy-Authorization"]="Basic "+new Buffer(n.proxyAuth).toString("base64")),bp("making CONNECT request");var c=o.request(n);c.useChunkedEncodingByDefault=!1,c.once("response",f),c.once("upgrade",g),c.once("connect",p),c.once("error",E),c.end();function f(B){B.upgrade=!0}function g(B,Q,x){process.nextTick(function(){p(B,Q,x)})}function p(B,Q,x){if(c.removeAllListeners(),Q.removeAllListeners(),B.statusCode!==200){bp("tunneling socket could not be established, statusCode=%d",B.statusCode),Q.destroy();var C=new Error("tunneling socket could not be established, statusCode="+B.statusCode);C.code="ECONNRESET",e.request.emit("error",C),o.removeSocket(a);return}if(x.length>0){bp("got illegal response body from proxy"),Q.destroy();var C=new Error("got illegal response body from proxy");C.code="ECONNRESET",e.request.emit("error",C),o.removeSocket(a);return}return bp("tunneling connection has established"),o.sockets[o.sockets.indexOf(a)]=Q,r(Q)}function E(B){c.removeAllListeners(),bp(`tunneling socket could not be established, cause=%s -`,B.message,B.stack);var Q=new Error("tunneling socket could not be established, cause="+B.message);Q.code="ECONNRESET",e.request.emit("error",Q),o.removeSocket(a)}};$f.prototype.removeSocket=function(e){var r=this.sockets.indexOf(e);if(r!==-1){this.sockets.splice(r,1);var o=this.requests.shift();o&&this.createSocket(o,function(a){o.request.onSocket(a)})}};function iae(t,e){var r=this;$f.prototype.createSocket.call(r,t,function(o){var a=t.request.getHeader("host"),n=S4({},r.options,{socket:o,servername:a?a.replace(/:.*$/,""):t.host}),c=Rnt.connect(0,n);r.sockets[r.sockets.indexOf(o)]=c,e(c)})}function sae(t,e,r){return typeof t=="string"?{host:t,port:e,localAddress:r}:t}function S4(t){for(var e=1,r=arguments.length;e{aae.exports=oae()});var tg=_((eg,lk)=>{"use strict";Object.defineProperty(eg,"__esModule",{value:!0});var lae=["Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","BigInt64Array","BigUint64Array"];function Knt(t){return lae.includes(t)}var _nt=["Function","Generator","AsyncGenerator","GeneratorFunction","AsyncGeneratorFunction","AsyncFunction","Observable","Array","Buffer","Object","RegExp","Date","Error","Map","Set","WeakMap","WeakSet","ArrayBuffer","SharedArrayBuffer","DataView","Promise","URL","FormData","URLSearchParams","HTMLElement",...lae];function Hnt(t){return _nt.includes(t)}var qnt=["null","undefined","string","number","bigint","boolean","symbol"];function Gnt(t){return qnt.includes(t)}function TC(t){return e=>typeof e===t}var{toString:cae}=Object.prototype,PB=t=>{let e=cae.call(t).slice(8,-1);if(/HTML\w+Element/.test(e)&&Te.domElement(t))return"HTMLElement";if(Hnt(e))return e},gi=t=>e=>PB(e)===t;function Te(t){if(t===null)return"null";switch(typeof t){case"undefined":return"undefined";case"string":return"string";case"number":return"number";case"boolean":return"boolean";case"function":return"Function";case"bigint":return"bigint";case"symbol":return"symbol";default:}if(Te.observable(t))return"Observable";if(Te.array(t))return"Array";if(Te.buffer(t))return"Buffer";let e=PB(t);if(e)return e;if(t instanceof String||t instanceof Boolean||t instanceof Number)throw new TypeError("Please don't use object wrappers for primitive types");return"Object"}Te.undefined=TC("undefined");Te.string=TC("string");var jnt=TC("number");Te.number=t=>jnt(t)&&!Te.nan(t);Te.bigint=TC("bigint");Te.function_=TC("function");Te.null_=t=>t===null;Te.class_=t=>Te.function_(t)&&t.toString().startsWith("class ");Te.boolean=t=>t===!0||t===!1;Te.symbol=TC("symbol");Te.numericString=t=>Te.string(t)&&!Te.emptyStringOrWhitespace(t)&&!Number.isNaN(Number(t));Te.array=(t,e)=>Array.isArray(t)?Te.function_(e)?t.every(e):!0:!1;Te.buffer=t=>{var e,r,o,a;return(a=(o=(r=(e=t)===null||e===void 0?void 0:e.constructor)===null||r===void 0?void 0:r.isBuffer)===null||o===void 0?void 0:o.call(r,t))!==null&&a!==void 0?a:!1};Te.nullOrUndefined=t=>Te.null_(t)||Te.undefined(t);Te.object=t=>!Te.null_(t)&&(typeof t=="object"||Te.function_(t));Te.iterable=t=>{var e;return Te.function_((e=t)===null||e===void 0?void 0:e[Symbol.iterator])};Te.asyncIterable=t=>{var e;return Te.function_((e=t)===null||e===void 0?void 0:e[Symbol.asyncIterator])};Te.generator=t=>Te.iterable(t)&&Te.function_(t.next)&&Te.function_(t.throw);Te.asyncGenerator=t=>Te.asyncIterable(t)&&Te.function_(t.next)&&Te.function_(t.throw);Te.nativePromise=t=>gi("Promise")(t);var Ynt=t=>{var e,r;return Te.function_((e=t)===null||e===void 0?void 0:e.then)&&Te.function_((r=t)===null||r===void 0?void 0:r.catch)};Te.promise=t=>Te.nativePromise(t)||Ynt(t);Te.generatorFunction=gi("GeneratorFunction");Te.asyncGeneratorFunction=t=>PB(t)==="AsyncGeneratorFunction";Te.asyncFunction=t=>PB(t)==="AsyncFunction";Te.boundFunction=t=>Te.function_(t)&&!t.hasOwnProperty("prototype");Te.regExp=gi("RegExp");Te.date=gi("Date");Te.error=gi("Error");Te.map=t=>gi("Map")(t);Te.set=t=>gi("Set")(t);Te.weakMap=t=>gi("WeakMap")(t);Te.weakSet=t=>gi("WeakSet")(t);Te.int8Array=gi("Int8Array");Te.uint8Array=gi("Uint8Array");Te.uint8ClampedArray=gi("Uint8ClampedArray");Te.int16Array=gi("Int16Array");Te.uint16Array=gi("Uint16Array");Te.int32Array=gi("Int32Array");Te.uint32Array=gi("Uint32Array");Te.float32Array=gi("Float32Array");Te.float64Array=gi("Float64Array");Te.bigInt64Array=gi("BigInt64Array");Te.bigUint64Array=gi("BigUint64Array");Te.arrayBuffer=gi("ArrayBuffer");Te.sharedArrayBuffer=gi("SharedArrayBuffer");Te.dataView=gi("DataView");Te.directInstanceOf=(t,e)=>Object.getPrototypeOf(t)===e.prototype;Te.urlInstance=t=>gi("URL")(t);Te.urlString=t=>{if(!Te.string(t))return!1;try{return new URL(t),!0}catch{return!1}};Te.truthy=t=>Boolean(t);Te.falsy=t=>!t;Te.nan=t=>Number.isNaN(t);Te.primitive=t=>Te.null_(t)||Gnt(typeof t);Te.integer=t=>Number.isInteger(t);Te.safeInteger=t=>Number.isSafeInteger(t);Te.plainObject=t=>{if(cae.call(t)!=="[object Object]")return!1;let e=Object.getPrototypeOf(t);return e===null||e===Object.getPrototypeOf({})};Te.typedArray=t=>Knt(PB(t));var Wnt=t=>Te.safeInteger(t)&&t>=0;Te.arrayLike=t=>!Te.nullOrUndefined(t)&&!Te.function_(t)&&Wnt(t.length);Te.inRange=(t,e)=>{if(Te.number(e))return t>=Math.min(0,e)&&t<=Math.max(e,0);if(Te.array(e)&&e.length===2)return t>=Math.min(...e)&&t<=Math.max(...e);throw new TypeError(`Invalid range: ${JSON.stringify(e)}`)};var Jnt=1,Vnt=["innerHTML","ownerDocument","style","attributes","nodeValue"];Te.domElement=t=>Te.object(t)&&t.nodeType===Jnt&&Te.string(t.nodeName)&&!Te.plainObject(t)&&Vnt.every(e=>e in t);Te.observable=t=>{var e,r,o,a;return t?t===((r=(e=t)[Symbol.observable])===null||r===void 0?void 0:r.call(e))||t===((a=(o=t)["@@observable"])===null||a===void 0?void 0:a.call(o)):!1};Te.nodeStream=t=>Te.object(t)&&Te.function_(t.pipe)&&!Te.observable(t);Te.infinite=t=>t===1/0||t===-1/0;var uae=t=>e=>Te.integer(e)&&Math.abs(e%2)===t;Te.evenInteger=uae(0);Te.oddInteger=uae(1);Te.emptyArray=t=>Te.array(t)&&t.length===0;Te.nonEmptyArray=t=>Te.array(t)&&t.length>0;Te.emptyString=t=>Te.string(t)&&t.length===0;Te.nonEmptyString=t=>Te.string(t)&&t.length>0;var znt=t=>Te.string(t)&&!/\S/.test(t);Te.emptyStringOrWhitespace=t=>Te.emptyString(t)||znt(t);Te.emptyObject=t=>Te.object(t)&&!Te.map(t)&&!Te.set(t)&&Object.keys(t).length===0;Te.nonEmptyObject=t=>Te.object(t)&&!Te.map(t)&&!Te.set(t)&&Object.keys(t).length>0;Te.emptySet=t=>Te.set(t)&&t.size===0;Te.nonEmptySet=t=>Te.set(t)&&t.size>0;Te.emptyMap=t=>Te.map(t)&&t.size===0;Te.nonEmptyMap=t=>Te.map(t)&&t.size>0;Te.propertyKey=t=>Te.any([Te.string,Te.number,Te.symbol],t);Te.formData=t=>gi("FormData")(t);Te.urlSearchParams=t=>gi("URLSearchParams")(t);var fae=(t,e,r)=>{if(!Te.function_(e))throw new TypeError(`Invalid predicate: ${JSON.stringify(e)}`);if(r.length===0)throw new TypeError("Invalid number of values");return t.call(r,e)};Te.any=(t,...e)=>(Te.array(t)?t:[t]).some(o=>fae(Array.prototype.some,o,e));Te.all=(t,...e)=>fae(Array.prototype.every,t,e);var Ht=(t,e,r,o={})=>{if(!t){let{multipleValues:a}=o,n=a?`received values of types ${[...new Set(r.map(c=>`\`${Te(c)}\``))].join(", ")}`:`received value of type \`${Te(r)}\``;throw new TypeError(`Expected value which is \`${e}\`, ${n}.`)}};eg.assert={undefined:t=>Ht(Te.undefined(t),"undefined",t),string:t=>Ht(Te.string(t),"string",t),number:t=>Ht(Te.number(t),"number",t),bigint:t=>Ht(Te.bigint(t),"bigint",t),function_:t=>Ht(Te.function_(t),"Function",t),null_:t=>Ht(Te.null_(t),"null",t),class_:t=>Ht(Te.class_(t),"Class",t),boolean:t=>Ht(Te.boolean(t),"boolean",t),symbol:t=>Ht(Te.symbol(t),"symbol",t),numericString:t=>Ht(Te.numericString(t),"string with a number",t),array:(t,e)=>{Ht(Te.array(t),"Array",t),e&&t.forEach(e)},buffer:t=>Ht(Te.buffer(t),"Buffer",t),nullOrUndefined:t=>Ht(Te.nullOrUndefined(t),"null or undefined",t),object:t=>Ht(Te.object(t),"Object",t),iterable:t=>Ht(Te.iterable(t),"Iterable",t),asyncIterable:t=>Ht(Te.asyncIterable(t),"AsyncIterable",t),generator:t=>Ht(Te.generator(t),"Generator",t),asyncGenerator:t=>Ht(Te.asyncGenerator(t),"AsyncGenerator",t),nativePromise:t=>Ht(Te.nativePromise(t),"native Promise",t),promise:t=>Ht(Te.promise(t),"Promise",t),generatorFunction:t=>Ht(Te.generatorFunction(t),"GeneratorFunction",t),asyncGeneratorFunction:t=>Ht(Te.asyncGeneratorFunction(t),"AsyncGeneratorFunction",t),asyncFunction:t=>Ht(Te.asyncFunction(t),"AsyncFunction",t),boundFunction:t=>Ht(Te.boundFunction(t),"Function",t),regExp:t=>Ht(Te.regExp(t),"RegExp",t),date:t=>Ht(Te.date(t),"Date",t),error:t=>Ht(Te.error(t),"Error",t),map:t=>Ht(Te.map(t),"Map",t),set:t=>Ht(Te.set(t),"Set",t),weakMap:t=>Ht(Te.weakMap(t),"WeakMap",t),weakSet:t=>Ht(Te.weakSet(t),"WeakSet",t),int8Array:t=>Ht(Te.int8Array(t),"Int8Array",t),uint8Array:t=>Ht(Te.uint8Array(t),"Uint8Array",t),uint8ClampedArray:t=>Ht(Te.uint8ClampedArray(t),"Uint8ClampedArray",t),int16Array:t=>Ht(Te.int16Array(t),"Int16Array",t),uint16Array:t=>Ht(Te.uint16Array(t),"Uint16Array",t),int32Array:t=>Ht(Te.int32Array(t),"Int32Array",t),uint32Array:t=>Ht(Te.uint32Array(t),"Uint32Array",t),float32Array:t=>Ht(Te.float32Array(t),"Float32Array",t),float64Array:t=>Ht(Te.float64Array(t),"Float64Array",t),bigInt64Array:t=>Ht(Te.bigInt64Array(t),"BigInt64Array",t),bigUint64Array:t=>Ht(Te.bigUint64Array(t),"BigUint64Array",t),arrayBuffer:t=>Ht(Te.arrayBuffer(t),"ArrayBuffer",t),sharedArrayBuffer:t=>Ht(Te.sharedArrayBuffer(t),"SharedArrayBuffer",t),dataView:t=>Ht(Te.dataView(t),"DataView",t),urlInstance:t=>Ht(Te.urlInstance(t),"URL",t),urlString:t=>Ht(Te.urlString(t),"string with a URL",t),truthy:t=>Ht(Te.truthy(t),"truthy",t),falsy:t=>Ht(Te.falsy(t),"falsy",t),nan:t=>Ht(Te.nan(t),"NaN",t),primitive:t=>Ht(Te.primitive(t),"primitive",t),integer:t=>Ht(Te.integer(t),"integer",t),safeInteger:t=>Ht(Te.safeInteger(t),"integer",t),plainObject:t=>Ht(Te.plainObject(t),"plain object",t),typedArray:t=>Ht(Te.typedArray(t),"TypedArray",t),arrayLike:t=>Ht(Te.arrayLike(t),"array-like",t),domElement:t=>Ht(Te.domElement(t),"HTMLElement",t),observable:t=>Ht(Te.observable(t),"Observable",t),nodeStream:t=>Ht(Te.nodeStream(t),"Node.js Stream",t),infinite:t=>Ht(Te.infinite(t),"infinite number",t),emptyArray:t=>Ht(Te.emptyArray(t),"empty array",t),nonEmptyArray:t=>Ht(Te.nonEmptyArray(t),"non-empty array",t),emptyString:t=>Ht(Te.emptyString(t),"empty string",t),nonEmptyString:t=>Ht(Te.nonEmptyString(t),"non-empty string",t),emptyStringOrWhitespace:t=>Ht(Te.emptyStringOrWhitespace(t),"empty string or whitespace",t),emptyObject:t=>Ht(Te.emptyObject(t),"empty object",t),nonEmptyObject:t=>Ht(Te.nonEmptyObject(t),"non-empty object",t),emptySet:t=>Ht(Te.emptySet(t),"empty set",t),nonEmptySet:t=>Ht(Te.nonEmptySet(t),"non-empty set",t),emptyMap:t=>Ht(Te.emptyMap(t),"empty map",t),nonEmptyMap:t=>Ht(Te.nonEmptyMap(t),"non-empty map",t),propertyKey:t=>Ht(Te.propertyKey(t),"PropertyKey",t),formData:t=>Ht(Te.formData(t),"FormData",t),urlSearchParams:t=>Ht(Te.urlSearchParams(t),"URLSearchParams",t),evenInteger:t=>Ht(Te.evenInteger(t),"even integer",t),oddInteger:t=>Ht(Te.oddInteger(t),"odd integer",t),directInstanceOf:(t,e)=>Ht(Te.directInstanceOf(t,e),"T",t),inRange:(t,e)=>Ht(Te.inRange(t,e),"in range",t),any:(t,...e)=>Ht(Te.any(t,...e),"predicate returns truthy for any value",e,{multipleValues:!0}),all:(t,...e)=>Ht(Te.all(t,...e),"predicate returns truthy for all values",e,{multipleValues:!0})};Object.defineProperties(Te,{class:{value:Te.class_},function:{value:Te.function_},null:{value:Te.null_}});Object.defineProperties(eg.assert,{class:{value:eg.assert.class_},function:{value:eg.assert.function_},null:{value:eg.assert.null_}});eg.default=Te;lk.exports=Te;lk.exports.default=Te;lk.exports.assert=eg.assert});var gae=_((OMt,k4)=>{"use strict";var ck=class extends Error{constructor(e){super(e||"Promise was canceled"),this.name="CancelError"}get isCanceled(){return!0}},NC=class{static fn(e){return(...r)=>new NC((o,a,n)=>{r.push(n),e(...r).then(o,a)})}constructor(e){this._cancelHandlers=[],this._isPending=!0,this._isCanceled=!1,this._rejectOnCancel=!0,this._promise=new Promise((r,o)=>{this._reject=o;let a=f=>{this._isPending=!1,r(f)},n=f=>{this._isPending=!1,o(f)},c=f=>{if(!this._isPending)throw new Error("The `onCancel` handler was attached after the promise settled.");this._cancelHandlers.push(f)};return Object.defineProperties(c,{shouldReject:{get:()=>this._rejectOnCancel,set:f=>{this._rejectOnCancel=f}}}),e(a,n,c)})}then(e,r){return this._promise.then(e,r)}catch(e){return this._promise.catch(e)}finally(e){return this._promise.finally(e)}cancel(e){if(!(!this._isPending||this._isCanceled)){if(this._cancelHandlers.length>0)try{for(let r of this._cancelHandlers)r()}catch(r){this._reject(r)}this._isCanceled=!0,this._rejectOnCancel&&this._reject(new ck(e))}}get isCanceled(){return this._isCanceled}};Object.setPrototypeOf(NC.prototype,Promise.prototype);k4.exports=NC;k4.exports.CancelError=ck});var pae=_((P4,b4)=>{"use strict";Object.defineProperty(P4,"__esModule",{value:!0});var Xnt=Ie("tls"),x4=(t,e)=>{let r;typeof e=="function"?r={connect:e}:r=e;let o=typeof r.connect=="function",a=typeof r.secureConnect=="function",n=typeof r.close=="function",c=()=>{o&&r.connect(),t instanceof Xnt.TLSSocket&&a&&(t.authorized?r.secureConnect():t.authorizationError||t.once("secureConnect",r.secureConnect)),n&&t.once("close",r.close)};t.writable&&!t.connecting?c():t.connecting?t.once("connect",c):t.destroyed&&n&&r.close(t._hadError)};P4.default=x4;b4.exports=x4;b4.exports.default=x4});var hae=_((R4,T4)=>{"use strict";Object.defineProperty(R4,"__esModule",{value:!0});var Znt=pae(),$nt=Number(process.versions.node.split(".")[0]),F4=t=>{let e={start:Date.now(),socket:void 0,lookup:void 0,connect:void 0,secureConnect:void 0,upload:void 0,response:void 0,end:void 0,error:void 0,abort:void 0,phases:{wait:void 0,dns:void 0,tcp:void 0,tls:void 0,request:void 0,firstByte:void 0,download:void 0,total:void 0}};t.timings=e;let r=c=>{let f=c.emit.bind(c);c.emit=(g,...p)=>(g==="error"&&(e.error=Date.now(),e.phases.total=e.error-e.start,c.emit=f),f(g,...p))};r(t),t.prependOnceListener("abort",()=>{e.abort=Date.now(),(!e.response||$nt>=13)&&(e.phases.total=Date.now()-e.start)});let o=c=>{e.socket=Date.now(),e.phases.wait=e.socket-e.start;let f=()=>{e.lookup=Date.now(),e.phases.dns=e.lookup-e.socket};c.prependOnceListener("lookup",f),Znt.default(c,{connect:()=>{e.connect=Date.now(),e.lookup===void 0&&(c.removeListener("lookup",f),e.lookup=e.connect,e.phases.dns=e.lookup-e.socket),e.phases.tcp=e.connect-e.lookup},secureConnect:()=>{e.secureConnect=Date.now(),e.phases.tls=e.secureConnect-e.connect}})};t.socket?o(t.socket):t.prependOnceListener("socket",o);let a=()=>{var c;e.upload=Date.now(),e.phases.request=e.upload-(c=e.secureConnect,c??e.connect)};return(()=>typeof t.writableFinished=="boolean"?t.writableFinished:t.finished&&t.outputSize===0&&(!t.socket||t.socket.writableLength===0))()?a():t.prependOnceListener("finish",a),t.prependOnceListener("response",c=>{e.response=Date.now(),e.phases.firstByte=e.response-e.upload,c.timings=e,r(c),c.prependOnceListener("end",()=>{e.end=Date.now(),e.phases.download=e.end-e.response,e.phases.total=e.end-e.start})}),e};R4.default=F4;T4.exports=F4;T4.exports.default=F4});var wae=_((UMt,L4)=>{"use strict";var{V4MAPPED:eit,ADDRCONFIG:tit,ALL:Iae,promises:{Resolver:dae},lookup:rit}=Ie("dns"),{promisify:N4}=Ie("util"),nit=Ie("os"),MC=Symbol("cacheableLookupCreateConnection"),M4=Symbol("cacheableLookupInstance"),mae=Symbol("expires"),iit=typeof Iae=="number",yae=t=>{if(!(t&&typeof t.createConnection=="function"))throw new Error("Expected an Agent instance as the first argument")},sit=t=>{for(let e of t)e.family!==6&&(e.address=`::ffff:${e.address}`,e.family=6)},Cae=()=>{let t=!1,e=!1;for(let r of Object.values(nit.networkInterfaces()))for(let o of r)if(!o.internal&&(o.family==="IPv6"?e=!0:t=!0,t&&e))return{has4:t,has6:e};return{has4:t,has6:e}},oit=t=>Symbol.iterator in t,Eae={ttl:!0},ait={all:!0},uk=class{constructor({cache:e=new Map,maxTtl:r=1/0,fallbackDuration:o=3600,errorTtl:a=.15,resolver:n=new dae,lookup:c=rit}={}){if(this.maxTtl=r,this.errorTtl=a,this._cache=e,this._resolver=n,this._dnsLookup=N4(c),this._resolver instanceof dae?(this._resolve4=this._resolver.resolve4.bind(this._resolver),this._resolve6=this._resolver.resolve6.bind(this._resolver)):(this._resolve4=N4(this._resolver.resolve4.bind(this._resolver)),this._resolve6=N4(this._resolver.resolve6.bind(this._resolver))),this._iface=Cae(),this._pending={},this._nextRemovalTime=!1,this._hostnamesToFallback=new Set,o<1)this._fallback=!1;else{this._fallback=!0;let f=setInterval(()=>{this._hostnamesToFallback.clear()},o*1e3);f.unref&&f.unref()}this.lookup=this.lookup.bind(this),this.lookupAsync=this.lookupAsync.bind(this)}set servers(e){this.clear(),this._resolver.setServers(e)}get servers(){return this._resolver.getServers()}lookup(e,r,o){if(typeof r=="function"?(o=r,r={}):typeof r=="number"&&(r={family:r}),!o)throw new Error("Callback must be a function.");this.lookupAsync(e,r).then(a=>{r.all?o(null,a):o(null,a.address,a.family,a.expires,a.ttl)},o)}async lookupAsync(e,r={}){typeof r=="number"&&(r={family:r});let o=await this.query(e);if(r.family===6){let a=o.filter(n=>n.family===6);r.hints&eit&&(iit&&r.hints&Iae||a.length===0)?sit(o):o=a}else r.family===4&&(o=o.filter(a=>a.family===4));if(r.hints&tit){let{_iface:a}=this;o=o.filter(n=>n.family===6?a.has6:a.has4)}if(o.length===0){let a=new Error(`cacheableLookup ENOTFOUND ${e}`);throw a.code="ENOTFOUND",a.hostname=e,a}return r.all?o:o[0]}async query(e){let r=await this._cache.get(e);if(!r){let o=this._pending[e];if(o)r=await o;else{let a=this.queryAndCache(e);this._pending[e]=a,r=await a}}return r=r.map(o=>({...o})),r}async _resolve(e){let r=async p=>{try{return await p}catch(E){if(E.code==="ENODATA"||E.code==="ENOTFOUND")return[];throw E}},[o,a]=await Promise.all([this._resolve4(e,Eae),this._resolve6(e,Eae)].map(p=>r(p))),n=0,c=0,f=0,g=Date.now();for(let p of o)p.family=4,p.expires=g+p.ttl*1e3,n=Math.max(n,p.ttl);for(let p of a)p.family=6,p.expires=g+p.ttl*1e3,c=Math.max(c,p.ttl);return o.length>0?a.length>0?f=Math.min(n,c):f=n:f=c,{entries:[...o,...a],cacheTtl:f}}async _lookup(e){try{return{entries:await this._dnsLookup(e,{all:!0}),cacheTtl:0}}catch{return{entries:[],cacheTtl:0}}}async _set(e,r,o){if(this.maxTtl>0&&o>0){o=Math.min(o,this.maxTtl)*1e3,r[mae]=Date.now()+o;try{await this._cache.set(e,r,o)}catch(a){this.lookupAsync=async()=>{let n=new Error("Cache Error. Please recreate the CacheableLookup instance.");throw n.cause=a,n}}oit(this._cache)&&this._tick(o)}}async queryAndCache(e){if(this._hostnamesToFallback.has(e))return this._dnsLookup(e,ait);try{let r=await this._resolve(e);r.entries.length===0&&this._fallback&&(r=await this._lookup(e),r.entries.length!==0&&this._hostnamesToFallback.add(e));let o=r.entries.length===0?this.errorTtl:r.cacheTtl;return await this._set(e,r.entries,o),delete this._pending[e],r.entries}catch(r){throw delete this._pending[e],r}}_tick(e){let r=this._nextRemovalTime;(!r||e{this._nextRemovalTime=!1;let o=1/0,a=Date.now();for(let[n,c]of this._cache){let f=c[mae];a>=f?this._cache.delete(n):f("lookup"in r||(r.lookup=this.lookup),e[MC](r,o))}uninstall(e){if(yae(e),e[MC]){if(e[M4]!==this)throw new Error("The agent is not owned by this CacheableLookup instance");e.createConnection=e[MC],delete e[MC],delete e[M4]}}updateInterfaceInfo(){let{_iface:e}=this;this._iface=Cae(),(e.has4&&!this._iface.has4||e.has6&&!this._iface.has6)&&this._cache.clear()}clear(e){if(e){this._cache.delete(e);return}this._cache.clear()}};L4.exports=uk;L4.exports.default=uk});var vae=_((KMt,O4)=>{"use strict";var Ait=typeof URL>"u"?Ie("url").URL:URL,lit="text/plain",cit="us-ascii",Bae=(t,e)=>e.some(r=>r instanceof RegExp?r.test(t):r===t),uit=(t,{stripHash:e})=>{let r=t.match(/^data:([^,]*?),([^#]*?)(?:#(.*))?$/);if(!r)throw new Error(`Invalid URL: ${t}`);let o=r[1].split(";"),a=r[2],n=e?"":r[3],c=!1;o[o.length-1]==="base64"&&(o.pop(),c=!0);let f=(o.shift()||"").toLowerCase(),p=[...o.map(E=>{let[B,Q=""]=E.split("=").map(x=>x.trim());return B==="charset"&&(Q=Q.toLowerCase(),Q===cit)?"":`${B}${Q?`=${Q}`:""}`}).filter(Boolean)];return c&&p.push("base64"),(p.length!==0||f&&f!==lit)&&p.unshift(f),`data:${p.join(";")},${c?a.trim():a}${n?`#${n}`:""}`},Qae=(t,e)=>{if(e={defaultProtocol:"http:",normalizeProtocol:!0,forceHttp:!1,forceHttps:!1,stripAuthentication:!0,stripHash:!1,stripWWW:!0,removeQueryParameters:[/^utm_\w+/i],removeTrailingSlash:!0,removeDirectoryIndex:!1,sortQueryParameters:!0,...e},Reflect.has(e,"normalizeHttps"))throw new Error("options.normalizeHttps is renamed to options.forceHttp");if(Reflect.has(e,"normalizeHttp"))throw new Error("options.normalizeHttp is renamed to options.forceHttps");if(Reflect.has(e,"stripFragment"))throw new Error("options.stripFragment is renamed to options.stripHash");if(t=t.trim(),/^data:/i.test(t))return uit(t,e);let r=t.startsWith("//");!r&&/^\.*\//.test(t)||(t=t.replace(/^(?!(?:\w+:)?\/\/)|^\/\//,e.defaultProtocol));let a=new Ait(t);if(e.forceHttp&&e.forceHttps)throw new Error("The `forceHttp` and `forceHttps` options cannot be used together");if(e.forceHttp&&a.protocol==="https:"&&(a.protocol="http:"),e.forceHttps&&a.protocol==="http:"&&(a.protocol="https:"),e.stripAuthentication&&(a.username="",a.password=""),e.stripHash&&(a.hash=""),a.pathname&&(a.pathname=a.pathname.replace(/((?!:).|^)\/{2,}/g,(n,c)=>/^(?!\/)/g.test(c)?`${c}/`:"/")),a.pathname&&(a.pathname=decodeURI(a.pathname)),e.removeDirectoryIndex===!0&&(e.removeDirectoryIndex=[/^index\.[a-z]+$/]),Array.isArray(e.removeDirectoryIndex)&&e.removeDirectoryIndex.length>0){let n=a.pathname.split("/"),c=n[n.length-1];Bae(c,e.removeDirectoryIndex)&&(n=n.slice(0,n.length-1),a.pathname=n.slice(1).join("/")+"/")}if(a.hostname&&(a.hostname=a.hostname.replace(/\.$/,""),e.stripWWW&&/^www\.([a-z\-\d]{2,63})\.([a-z.]{2,5})$/.test(a.hostname)&&(a.hostname=a.hostname.replace(/^www\./,""))),Array.isArray(e.removeQueryParameters))for(let n of[...a.searchParams.keys()])Bae(n,e.removeQueryParameters)&&a.searchParams.delete(n);return e.sortQueryParameters&&a.searchParams.sort(),e.removeTrailingSlash&&(a.pathname=a.pathname.replace(/\/$/,"")),t=a.toString(),(e.removeTrailingSlash||a.pathname==="/")&&a.hash===""&&(t=t.replace(/\/$/,"")),r&&!e.normalizeProtocol&&(t=t.replace(/^http:\/\//,"//")),e.stripProtocol&&(t=t.replace(/^(?:https?:)?\/\//,"")),t};O4.exports=Qae;O4.exports.default=Qae});var kae=_((_Mt,Sae)=>{Sae.exports=Dae;function Dae(t,e){if(t&&e)return Dae(t)(e);if(typeof t!="function")throw new TypeError("need wrapper function");return Object.keys(t).forEach(function(o){r[o]=t[o]}),r;function r(){for(var o=new Array(arguments.length),a=0;a{var xae=kae();U4.exports=xae(fk);U4.exports.strict=xae(Pae);fk.proto=fk(function(){Object.defineProperty(Function.prototype,"once",{value:function(){return fk(this)},configurable:!0}),Object.defineProperty(Function.prototype,"onceStrict",{value:function(){return Pae(this)},configurable:!0})});function fk(t){var e=function(){return e.called?e.value:(e.called=!0,e.value=t.apply(this,arguments))};return e.called=!1,e}function Pae(t){var e=function(){if(e.called)throw new Error(e.onceError);return e.called=!0,e.value=t.apply(this,arguments)},r=t.name||"Function wrapped with `once`";return e.onceError=r+" shouldn't be called more than once",e.called=!1,e}});var _4=_((qMt,Fae)=>{var fit=K4(),git=function(){},pit=function(t){return t.setHeader&&typeof t.abort=="function"},hit=function(t){return t.stdio&&Array.isArray(t.stdio)&&t.stdio.length===3},bae=function(t,e,r){if(typeof e=="function")return bae(t,null,e);e||(e={}),r=fit(r||git);var o=t._writableState,a=t._readableState,n=e.readable||e.readable!==!1&&t.readable,c=e.writable||e.writable!==!1&&t.writable,f=function(){t.writable||g()},g=function(){c=!1,n||r.call(t)},p=function(){n=!1,c||r.call(t)},E=function(C){r.call(t,C?new Error("exited with error code: "+C):null)},B=function(C){r.call(t,C)},Q=function(){if(n&&!(a&&a.ended))return r.call(t,new Error("premature close"));if(c&&!(o&&o.ended))return r.call(t,new Error("premature close"))},x=function(){t.req.on("finish",g)};return pit(t)?(t.on("complete",g),t.on("abort",Q),t.req?x():t.on("request",x)):c&&!o&&(t.on("end",f),t.on("close",f)),hit(t)&&t.on("exit",E),t.on("end",p),t.on("finish",g),e.error!==!1&&t.on("error",B),t.on("close",Q),function(){t.removeListener("complete",g),t.removeListener("abort",Q),t.removeListener("request",x),t.req&&t.req.removeListener("finish",g),t.removeListener("end",f),t.removeListener("close",f),t.removeListener("finish",g),t.removeListener("exit",E),t.removeListener("end",p),t.removeListener("error",B),t.removeListener("close",Q)}};Fae.exports=bae});var Nae=_((GMt,Tae)=>{var dit=K4(),mit=_4(),H4=Ie("fs"),bB=function(){},yit=/^v?\.0/.test(process.version),gk=function(t){return typeof t=="function"},Cit=function(t){return!yit||!H4?!1:(t instanceof(H4.ReadStream||bB)||t instanceof(H4.WriteStream||bB))&&gk(t.close)},Eit=function(t){return t.setHeader&&gk(t.abort)},Iit=function(t,e,r,o){o=dit(o);var a=!1;t.on("close",function(){a=!0}),mit(t,{readable:e,writable:r},function(c){if(c)return o(c);a=!0,o()});var n=!1;return function(c){if(!a&&!n){if(n=!0,Cit(t))return t.close(bB);if(Eit(t))return t.abort();if(gk(t.destroy))return t.destroy();o(c||new Error("stream was destroyed"))}}},Rae=function(t){t()},wit=function(t,e){return t.pipe(e)},Bit=function(){var t=Array.prototype.slice.call(arguments),e=gk(t[t.length-1]||bB)&&t.pop()||bB;if(Array.isArray(t[0])&&(t=t[0]),t.length<2)throw new Error("pump requires two streams per minimum");var r,o=t.map(function(a,n){var c=n0;return Iit(a,c,f,function(g){r||(r=g),g&&o.forEach(Rae),!c&&(o.forEach(Rae),e(r))})});return t.reduce(wit)};Tae.exports=Bit});var Lae=_((jMt,Mae)=>{"use strict";var{PassThrough:Qit}=Ie("stream");Mae.exports=t=>{t={...t};let{array:e}=t,{encoding:r}=t,o=r==="buffer",a=!1;e?a=!(r||o):r=r||"utf8",o&&(r=null);let n=new Qit({objectMode:a});r&&n.setEncoding(r);let c=0,f=[];return n.on("data",g=>{f.push(g),a?c=f.length:c+=g.length}),n.getBufferedValue=()=>e?f:o?Buffer.concat(f,c):f.join(""),n.getBufferedLength=()=>c,n}});var Oae=_((YMt,LC)=>{"use strict";var vit=Nae(),Dit=Lae(),pk=class extends Error{constructor(){super("maxBuffer exceeded"),this.name="MaxBufferError"}};async function hk(t,e){if(!t)return Promise.reject(new Error("Expected a stream"));e={maxBuffer:1/0,...e};let{maxBuffer:r}=e,o;return await new Promise((a,n)=>{let c=f=>{f&&(f.bufferedData=o.getBufferedValue()),n(f)};o=vit(t,Dit(e),f=>{if(f){c(f);return}a()}),o.on("data",()=>{o.getBufferedLength()>r&&c(new pk)})}),o.getBufferedValue()}LC.exports=hk;LC.exports.default=hk;LC.exports.buffer=(t,e)=>hk(t,{...e,encoding:"buffer"});LC.exports.array=(t,e)=>hk(t,{...e,array:!0});LC.exports.MaxBufferError=pk});var Kae=_((JMt,Uae)=>{"use strict";var Sit=new Set([200,203,204,206,300,301,404,405,410,414,501]),kit=new Set([200,203,204,300,301,302,303,307,308,404,405,410,414,501]),xit=new Set([500,502,503,504]),Pit={date:!0,connection:!0,"keep-alive":!0,"proxy-authenticate":!0,"proxy-authorization":!0,te:!0,trailer:!0,"transfer-encoding":!0,upgrade:!0},bit={"content-length":!0,"content-encoding":!0,"transfer-encoding":!0,"content-range":!0};function im(t){let e=parseInt(t,10);return isFinite(e)?e:0}function Fit(t){return t?xit.has(t.status):!0}function q4(t){let e={};if(!t)return e;let r=t.trim().split(/\s*,\s*/);for(let o of r){let[a,n]=o.split(/\s*=\s*/,2);e[a]=n===void 0?!0:n.replace(/^"|"$/g,"")}return e}function Rit(t){let e=[];for(let r in t){let o=t[r];e.push(o===!0?r:r+"="+o)}if(!!e.length)return e.join(", ")}Uae.exports=class{constructor(e,r,{shared:o,cacheHeuristic:a,immutableMinTimeToLive:n,ignoreCargoCult:c,_fromObject:f}={}){if(f){this._fromObject(f);return}if(!r||!r.headers)throw Error("Response headers missing");this._assertRequestHasHeaders(e),this._responseTime=this.now(),this._isShared=o!==!1,this._cacheHeuristic=a!==void 0?a:.1,this._immutableMinTtl=n!==void 0?n:24*3600*1e3,this._status="status"in r?r.status:200,this._resHeaders=r.headers,this._rescc=q4(r.headers["cache-control"]),this._method="method"in e?e.method:"GET",this._url=e.url,this._host=e.headers.host,this._noAuthorization=!e.headers.authorization,this._reqHeaders=r.headers.vary?e.headers:null,this._reqcc=q4(e.headers["cache-control"]),c&&"pre-check"in this._rescc&&"post-check"in this._rescc&&(delete this._rescc["pre-check"],delete this._rescc["post-check"],delete this._rescc["no-cache"],delete this._rescc["no-store"],delete this._rescc["must-revalidate"],this._resHeaders=Object.assign({},this._resHeaders,{"cache-control":Rit(this._rescc)}),delete this._resHeaders.expires,delete this._resHeaders.pragma),r.headers["cache-control"]==null&&/no-cache/.test(r.headers.pragma)&&(this._rescc["no-cache"]=!0)}now(){return Date.now()}storable(){return!!(!this._reqcc["no-store"]&&(this._method==="GET"||this._method==="HEAD"||this._method==="POST"&&this._hasExplicitExpiration())&&kit.has(this._status)&&!this._rescc["no-store"]&&(!this._isShared||!this._rescc.private)&&(!this._isShared||this._noAuthorization||this._allowsStoringAuthenticated())&&(this._resHeaders.expires||this._rescc["max-age"]||this._isShared&&this._rescc["s-maxage"]||this._rescc.public||Sit.has(this._status)))}_hasExplicitExpiration(){return this._isShared&&this._rescc["s-maxage"]||this._rescc["max-age"]||this._resHeaders.expires}_assertRequestHasHeaders(e){if(!e||!e.headers)throw Error("Request headers missing")}satisfiesWithoutRevalidation(e){this._assertRequestHasHeaders(e);let r=q4(e.headers["cache-control"]);return r["no-cache"]||/no-cache/.test(e.headers.pragma)||r["max-age"]&&this.age()>r["max-age"]||r["min-fresh"]&&this.timeToLive()<1e3*r["min-fresh"]||this.stale()&&!(r["max-stale"]&&!this._rescc["must-revalidate"]&&(r["max-stale"]===!0||r["max-stale"]>this.age()-this.maxAge()))?!1:this._requestMatches(e,!1)}_requestMatches(e,r){return(!this._url||this._url===e.url)&&this._host===e.headers.host&&(!e.method||this._method===e.method||r&&e.method==="HEAD")&&this._varyMatches(e)}_allowsStoringAuthenticated(){return this._rescc["must-revalidate"]||this._rescc.public||this._rescc["s-maxage"]}_varyMatches(e){if(!this._resHeaders.vary)return!0;if(this._resHeaders.vary==="*")return!1;let r=this._resHeaders.vary.trim().toLowerCase().split(/\s*,\s*/);for(let o of r)if(e.headers[o]!==this._reqHeaders[o])return!1;return!0}_copyWithoutHopByHopHeaders(e){let r={};for(let o in e)Pit[o]||(r[o]=e[o]);if(e.connection){let o=e.connection.trim().split(/\s*,\s*/);for(let a of o)delete r[a]}if(r.warning){let o=r.warning.split(/,/).filter(a=>!/^\s*1[0-9][0-9]/.test(a));o.length?r.warning=o.join(",").trim():delete r.warning}return r}responseHeaders(){let e=this._copyWithoutHopByHopHeaders(this._resHeaders),r=this.age();return r>3600*24&&!this._hasExplicitExpiration()&&this.maxAge()>3600*24&&(e.warning=(e.warning?`${e.warning}, `:"")+'113 - "rfc7234 5.5.4"'),e.age=`${Math.round(r)}`,e.date=new Date(this.now()).toUTCString(),e}date(){let e=Date.parse(this._resHeaders.date);return isFinite(e)?e:this._responseTime}age(){let e=this._ageValue(),r=(this.now()-this._responseTime)/1e3;return e+r}_ageValue(){return im(this._resHeaders.age)}maxAge(){if(!this.storable()||this._rescc["no-cache"]||this._isShared&&this._resHeaders["set-cookie"]&&!this._rescc.public&&!this._rescc.immutable||this._resHeaders.vary==="*")return 0;if(this._isShared){if(this._rescc["proxy-revalidate"])return 0;if(this._rescc["s-maxage"])return im(this._rescc["s-maxage"])}if(this._rescc["max-age"])return im(this._rescc["max-age"]);let e=this._rescc.immutable?this._immutableMinTtl:0,r=this.date();if(this._resHeaders.expires){let o=Date.parse(this._resHeaders.expires);return Number.isNaN(o)||oo)return Math.max(e,(r-o)/1e3*this._cacheHeuristic)}return e}timeToLive(){let e=this.maxAge()-this.age(),r=e+im(this._rescc["stale-if-error"]),o=e+im(this._rescc["stale-while-revalidate"]);return Math.max(0,e,r,o)*1e3}stale(){return this.maxAge()<=this.age()}_useStaleIfError(){return this.maxAge()+im(this._rescc["stale-if-error"])>this.age()}useStaleWhileRevalidate(){return this.maxAge()+im(this._rescc["stale-while-revalidate"])>this.age()}static fromObject(e){return new this(void 0,void 0,{_fromObject:e})}_fromObject(e){if(this._responseTime)throw Error("Reinitialized");if(!e||e.v!==1)throw Error("Invalid serialization");this._responseTime=e.t,this._isShared=e.sh,this._cacheHeuristic=e.ch,this._immutableMinTtl=e.imm!==void 0?e.imm:24*3600*1e3,this._status=e.st,this._resHeaders=e.resh,this._rescc=e.rescc,this._method=e.m,this._url=e.u,this._host=e.h,this._noAuthorization=e.a,this._reqHeaders=e.reqh,this._reqcc=e.reqcc}toObject(){return{v:1,t:this._responseTime,sh:this._isShared,ch:this._cacheHeuristic,imm:this._immutableMinTtl,st:this._status,resh:this._resHeaders,rescc:this._rescc,m:this._method,u:this._url,h:this._host,a:this._noAuthorization,reqh:this._reqHeaders,reqcc:this._reqcc}}revalidationHeaders(e){this._assertRequestHasHeaders(e);let r=this._copyWithoutHopByHopHeaders(e.headers);if(delete r["if-range"],!this._requestMatches(e,!0)||!this.storable())return delete r["if-none-match"],delete r["if-modified-since"],r;if(this._resHeaders.etag&&(r["if-none-match"]=r["if-none-match"]?`${r["if-none-match"]}, ${this._resHeaders.etag}`:this._resHeaders.etag),r["accept-ranges"]||r["if-match"]||r["if-unmodified-since"]||this._method&&this._method!="GET"){if(delete r["if-modified-since"],r["if-none-match"]){let a=r["if-none-match"].split(/,/).filter(n=>!/^\s*W\//.test(n));a.length?r["if-none-match"]=a.join(",").trim():delete r["if-none-match"]}}else this._resHeaders["last-modified"]&&!r["if-modified-since"]&&(r["if-modified-since"]=this._resHeaders["last-modified"]);return r}revalidatedPolicy(e,r){if(this._assertRequestHasHeaders(e),this._useStaleIfError()&&Fit(r))return{modified:!1,matches:!1,policy:this};if(!r||!r.headers)throw Error("Response headers missing");let o=!1;if(r.status!==void 0&&r.status!=304?o=!1:r.headers.etag&&!/^\s*W\//.test(r.headers.etag)?o=this._resHeaders.etag&&this._resHeaders.etag.replace(/^\s*W\//,"")===r.headers.etag:this._resHeaders.etag&&r.headers.etag?o=this._resHeaders.etag.replace(/^\s*W\//,"")===r.headers.etag.replace(/^\s*W\//,""):this._resHeaders["last-modified"]?o=this._resHeaders["last-modified"]===r.headers["last-modified"]:!this._resHeaders.etag&&!this._resHeaders["last-modified"]&&!r.headers.etag&&!r.headers["last-modified"]&&(o=!0),!o)return{policy:new this.constructor(e,r),modified:r.status!=304,matches:!1};let a={};for(let c in this._resHeaders)a[c]=c in r.headers&&!bit[c]?r.headers[c]:this._resHeaders[c];let n=Object.assign({},r,{status:this._status,method:this._method,headers:a});return{policy:new this.constructor(e,n,{shared:this._isShared,cacheHeuristic:this._cacheHeuristic,immutableMinTimeToLive:this._immutableMinTtl}),modified:!1,matches:!0}}}});var dk=_((VMt,_ae)=>{"use strict";_ae.exports=t=>{let e={};for(let[r,o]of Object.entries(t))e[r.toLowerCase()]=o;return e}});var qae=_((zMt,Hae)=>{"use strict";var Tit=Ie("stream").Readable,Nit=dk(),G4=class extends Tit{constructor(e,r,o,a){if(typeof e!="number")throw new TypeError("Argument `statusCode` should be a number");if(typeof r!="object")throw new TypeError("Argument `headers` should be an object");if(!(o instanceof Buffer))throw new TypeError("Argument `body` should be a buffer");if(typeof a!="string")throw new TypeError("Argument `url` should be a string");super(),this.statusCode=e,this.headers=Nit(r),this.body=o,this.url=a}_read(){this.push(this.body),this.push(null)}};Hae.exports=G4});var jae=_((XMt,Gae)=>{"use strict";var Mit=["destroy","setTimeout","socket","headers","trailers","rawHeaders","statusCode","httpVersion","httpVersionMinor","httpVersionMajor","rawTrailers","statusMessage"];Gae.exports=(t,e)=>{let r=new Set(Object.keys(t).concat(Mit));for(let o of r)o in e||(e[o]=typeof t[o]=="function"?t[o].bind(t):t[o])}});var Wae=_((ZMt,Yae)=>{"use strict";var Lit=Ie("stream").PassThrough,Oit=jae(),Uit=t=>{if(!(t&&t.pipe))throw new TypeError("Parameter `response` must be a response stream.");let e=new Lit;return Oit(t,e),t.pipe(e)};Yae.exports=Uit});var Jae=_(j4=>{j4.stringify=function t(e){if(typeof e>"u")return e;if(e&&Buffer.isBuffer(e))return JSON.stringify(":base64:"+e.toString("base64"));if(e&&e.toJSON&&(e=e.toJSON()),e&&typeof e=="object"){var r="",o=Array.isArray(e);r=o?"[":"{";var a=!0;for(var n in e){var c=typeof e[n]=="function"||!o&&typeof e[n]>"u";Object.hasOwnProperty.call(e,n)&&!c&&(a||(r+=","),a=!1,o?e[n]==null?r+="null":r+=t(e[n]):e[n]!==void 0&&(r+=t(n)+":"+t(e[n])))}return r+=o?"]":"}",r}else return typeof e=="string"?JSON.stringify(/^:/.test(e)?":"+e:e):typeof e>"u"?"null":JSON.stringify(e)};j4.parse=function(t){return JSON.parse(t,function(e,r){return typeof r=="string"?/^:base64:/.test(r)?Buffer.from(r.substring(8),"base64"):/^:/.test(r)?r.substring(1):r:r})}});var Xae=_((eLt,zae)=>{"use strict";var Kit=Ie("events"),Vae=Jae(),_it=t=>{let e={redis:"@keyv/redis",mongodb:"@keyv/mongo",mongo:"@keyv/mongo",sqlite:"@keyv/sqlite",postgresql:"@keyv/postgres",postgres:"@keyv/postgres",mysql:"@keyv/mysql"};if(t.adapter||t.uri){let r=t.adapter||/^[^:]*/.exec(t.uri)[0];return new(Ie(e[r]))(t)}return new Map},Y4=class extends Kit{constructor(e,r){if(super(),this.opts=Object.assign({namespace:"keyv",serialize:Vae.stringify,deserialize:Vae.parse},typeof e=="string"?{uri:e}:e,r),!this.opts.store){let o=Object.assign({},this.opts);this.opts.store=_it(o)}typeof this.opts.store.on=="function"&&this.opts.store.on("error",o=>this.emit("error",o)),this.opts.store.namespace=this.opts.namespace}_getKeyPrefix(e){return`${this.opts.namespace}:${e}`}get(e,r){e=this._getKeyPrefix(e);let{store:o}=this.opts;return Promise.resolve().then(()=>o.get(e)).then(a=>typeof a=="string"?this.opts.deserialize(a):a).then(a=>{if(a!==void 0){if(typeof a.expires=="number"&&Date.now()>a.expires){this.delete(e);return}return r&&r.raw?a:a.value}})}set(e,r,o){e=this._getKeyPrefix(e),typeof o>"u"&&(o=this.opts.ttl),o===0&&(o=void 0);let{store:a}=this.opts;return Promise.resolve().then(()=>{let n=typeof o=="number"?Date.now()+o:null;return r={value:r,expires:n},this.opts.serialize(r)}).then(n=>a.set(e,n,o)).then(()=>!0)}delete(e){e=this._getKeyPrefix(e);let{store:r}=this.opts;return Promise.resolve().then(()=>r.delete(e))}clear(){let{store:e}=this.opts;return Promise.resolve().then(()=>e.clear())}};zae.exports=Y4});var eAe=_((tLt,$ae)=>{"use strict";var Hit=Ie("events"),mk=Ie("url"),qit=vae(),Git=Oae(),W4=Kae(),Zae=qae(),jit=dk(),Yit=Wae(),Wit=Xae(),gc=class{constructor(e,r){if(typeof e!="function")throw new TypeError("Parameter `request` must be a function");return this.cache=new Wit({uri:typeof r=="string"&&r,store:typeof r!="string"&&r,namespace:"cacheable-request"}),this.createCacheableRequest(e)}createCacheableRequest(e){return(r,o)=>{let a;if(typeof r=="string")a=J4(mk.parse(r)),r={};else if(r instanceof mk.URL)a=J4(mk.parse(r.toString())),r={};else{let[B,...Q]=(r.path||"").split("?"),x=Q.length>0?`?${Q.join("?")}`:"";a=J4({...r,pathname:B,search:x})}r={headers:{},method:"GET",cache:!0,strictTtl:!1,automaticFailover:!1,...r,...Jit(a)},r.headers=jit(r.headers);let n=new Hit,c=qit(mk.format(a),{stripWWW:!1,removeTrailingSlash:!1,stripAuthentication:!1}),f=`${r.method}:${c}`,g=!1,p=!1,E=B=>{p=!0;let Q=!1,x,C=new Promise(U=>{x=()=>{Q||(Q=!0,U())}}),N=U=>{if(g&&!B.forceRefresh){U.status=U.statusCode;let X=W4.fromObject(g.cachePolicy).revalidatedPolicy(B,U);if(!X.modified){let ie=X.policy.responseHeaders();U=new Zae(g.statusCode,ie,g.body,g.url),U.cachePolicy=X.policy,U.fromCache=!0}}U.fromCache||(U.cachePolicy=new W4(B,U,B),U.fromCache=!1);let H;B.cache&&U.cachePolicy.storable()?(H=Yit(U),(async()=>{try{let X=Git.buffer(U);if(await Promise.race([C,new Promise(Qe=>U.once("end",Qe))]),Q)return;let ie=await X,fe={cachePolicy:U.cachePolicy.toObject(),url:U.url,statusCode:U.fromCache?g.statusCode:U.statusCode,body:ie},ye=B.strictTtl?U.cachePolicy.timeToLive():void 0;B.maxTtl&&(ye=ye?Math.min(ye,B.maxTtl):B.maxTtl),await this.cache.set(f,fe,ye)}catch(X){n.emit("error",new gc.CacheError(X))}})()):B.cache&&g&&(async()=>{try{await this.cache.delete(f)}catch(X){n.emit("error",new gc.CacheError(X))}})(),n.emit("response",H||U),typeof o=="function"&&o(H||U)};try{let U=e(B,N);U.once("error",x),U.once("abort",x),n.emit("request",U)}catch(U){n.emit("error",new gc.RequestError(U))}};return(async()=>{let B=async x=>{await Promise.resolve();let C=x.cache?await this.cache.get(f):void 0;if(typeof C>"u")return E(x);let N=W4.fromObject(C.cachePolicy);if(N.satisfiesWithoutRevalidation(x)&&!x.forceRefresh){let U=N.responseHeaders(),H=new Zae(C.statusCode,U,C.body,C.url);H.cachePolicy=N,H.fromCache=!0,n.emit("response",H),typeof o=="function"&&o(H)}else g=C,x.headers=N.revalidationHeaders(x),E(x)},Q=x=>n.emit("error",new gc.CacheError(x));this.cache.once("error",Q),n.on("response",()=>this.cache.removeListener("error",Q));try{await B(r)}catch(x){r.automaticFailover&&!p&&E(r),n.emit("error",new gc.CacheError(x))}})(),n}}};function Jit(t){let e={...t};return e.path=`${t.pathname||"/"}${t.search||""}`,delete e.pathname,delete e.search,e}function J4(t){return{protocol:t.protocol,auth:t.auth,hostname:t.hostname||t.host||"localhost",port:t.port,pathname:t.pathname,search:t.search}}gc.RequestError=class extends Error{constructor(t){super(t.message),this.name="RequestError",Object.assign(this,t)}};gc.CacheError=class extends Error{constructor(t){super(t.message),this.name="CacheError",Object.assign(this,t)}};$ae.exports=gc});var rAe=_((iLt,tAe)=>{"use strict";var Vit=["aborted","complete","headers","httpVersion","httpVersionMinor","httpVersionMajor","method","rawHeaders","rawTrailers","setTimeout","socket","statusCode","statusMessage","trailers","url"];tAe.exports=(t,e)=>{if(e._readableState.autoDestroy)throw new Error("The second stream must have the `autoDestroy` option set to `false`");let r=new Set(Object.keys(t).concat(Vit)),o={};for(let a of r)a in e||(o[a]={get(){let n=t[a];return typeof n=="function"?n.bind(t):n},set(n){t[a]=n},enumerable:!0,configurable:!1});return Object.defineProperties(e,o),t.once("aborted",()=>{e.destroy(),e.emit("aborted")}),t.once("close",()=>{t.complete&&e.readable?e.once("end",()=>{e.emit("close")}):e.emit("close")}),e}});var iAe=_((sLt,nAe)=>{"use strict";var{Transform:zit,PassThrough:Xit}=Ie("stream"),V4=Ie("zlib"),Zit=rAe();nAe.exports=t=>{let e=(t.headers["content-encoding"]||"").toLowerCase();if(!["gzip","deflate","br"].includes(e))return t;let r=e==="br";if(r&&typeof V4.createBrotliDecompress!="function")return t.destroy(new Error("Brotli is not supported on Node.js < 12")),t;let o=!0,a=new zit({transform(f,g,p){o=!1,p(null,f)},flush(f){f()}}),n=new Xit({autoDestroy:!1,destroy(f,g){t.destroy(),g(f)}}),c=r?V4.createBrotliDecompress():V4.createUnzip();return c.once("error",f=>{if(o&&!t.readable){n.end();return}n.destroy(f)}),Zit(t,n),t.pipe(a).pipe(c).pipe(n),n}});var X4=_((oLt,sAe)=>{"use strict";var z4=class{constructor(e={}){if(!(e.maxSize&&e.maxSize>0))throw new TypeError("`maxSize` must be a number greater than 0");this.maxSize=e.maxSize,this.onEviction=e.onEviction,this.cache=new Map,this.oldCache=new Map,this._size=0}_set(e,r){if(this.cache.set(e,r),this._size++,this._size>=this.maxSize){if(this._size=0,typeof this.onEviction=="function")for(let[o,a]of this.oldCache.entries())this.onEviction(o,a);this.oldCache=this.cache,this.cache=new Map}}get(e){if(this.cache.has(e))return this.cache.get(e);if(this.oldCache.has(e)){let r=this.oldCache.get(e);return this.oldCache.delete(e),this._set(e,r),r}}set(e,r){return this.cache.has(e)?this.cache.set(e,r):this._set(e,r),this}has(e){return this.cache.has(e)||this.oldCache.has(e)}peek(e){if(this.cache.has(e))return this.cache.get(e);if(this.oldCache.has(e))return this.oldCache.get(e)}delete(e){let r=this.cache.delete(e);return r&&this._size--,this.oldCache.delete(e)||r}clear(){this.cache.clear(),this.oldCache.clear(),this._size=0}*keys(){for(let[e]of this)yield e}*values(){for(let[,e]of this)yield e}*[Symbol.iterator](){for(let e of this.cache)yield e;for(let e of this.oldCache){let[r]=e;this.cache.has(r)||(yield e)}}get size(){let e=0;for(let r of this.oldCache.keys())this.cache.has(r)||e++;return Math.min(this._size+e,this.maxSize)}};sAe.exports=z4});var $4=_((aLt,lAe)=>{"use strict";var $it=Ie("events"),est=Ie("tls"),tst=Ie("http2"),rst=X4(),ya=Symbol("currentStreamsCount"),oAe=Symbol("request"),Bl=Symbol("cachedOriginSet"),OC=Symbol("gracefullyClosing"),nst=["maxDeflateDynamicTableSize","maxSessionMemory","maxHeaderListPairs","maxOutstandingPings","maxReservedRemoteStreams","maxSendHeaderBlockLength","paddingStrategy","localAddress","path","rejectUnauthorized","minDHSize","ca","cert","clientCertEngine","ciphers","key","pfx","servername","minVersion","maxVersion","secureProtocol","crl","honorCipherOrder","ecdhCurve","dhparam","secureOptions","sessionIdContext"],ist=(t,e,r)=>{let o=0,a=t.length;for(;o>>1;r(t[n],e)?o=n+1:a=n}return o},sst=(t,e)=>t.remoteSettings.maxConcurrentStreams>e.remoteSettings.maxConcurrentStreams,Z4=(t,e)=>{for(let r of t)r[Bl].lengthe[Bl].includes(o))&&r[ya]+e[ya]<=e.remoteSettings.maxConcurrentStreams&&AAe(r)},ost=(t,e)=>{for(let r of t)e[Bl].lengthr[Bl].includes(o))&&e[ya]+r[ya]<=r.remoteSettings.maxConcurrentStreams&&AAe(e)},aAe=({agent:t,isFree:e})=>{let r={};for(let o in t.sessions){let n=t.sessions[o].filter(c=>{let f=c[Du.kCurrentStreamsCount]{t[OC]=!0,t[ya]===0&&t.close()},Du=class extends $it{constructor({timeout:e=6e4,maxSessions:r=1/0,maxFreeSessions:o=10,maxCachedTlsSessions:a=100}={}){super(),this.sessions={},this.queue={},this.timeout=e,this.maxSessions=r,this.maxFreeSessions=o,this._freeSessionsCount=0,this._sessionsCount=0,this.settings={enablePush:!1},this.tlsSessionCache=new rst({maxSize:a})}static normalizeOrigin(e,r){return typeof e=="string"&&(e=new URL(e)),r&&e.hostname!==r&&(e.hostname=r),e.origin}normalizeOptions(e){let r="";if(e)for(let o of nst)e[o]&&(r+=`:${e[o]}`);return r}_tryToCreateNewSession(e,r){if(!(e in this.queue)||!(r in this.queue[e]))return;let o=this.queue[e][r];this._sessionsCount{Array.isArray(o)?(o=[...o],a()):o=[{resolve:a,reject:n}];let c=this.normalizeOptions(r),f=Du.normalizeOrigin(e,r&&r.servername);if(f===void 0){for(let{reject:E}of o)E(new TypeError("The `origin` argument needs to be a string or an URL object"));return}if(c in this.sessions){let E=this.sessions[c],B=-1,Q=-1,x;for(let C of E){let N=C.remoteSettings.maxConcurrentStreams;if(N=N||C[OC]||C.destroyed)continue;x||(B=N),U>Q&&(x=C,Q=U)}}if(x){if(o.length!==1){for(let{reject:C}of o){let N=new Error(`Expected the length of listeners to be 1, got ${o.length}. -Please report this to https://github.com/szmarczak/http2-wrapper/`);C(N)}return}o[0].resolve(x);return}}if(c in this.queue){if(f in this.queue[c]){this.queue[c][f].listeners.push(...o),this._tryToCreateNewSession(c,f);return}}else this.queue[c]={};let g=()=>{c in this.queue&&this.queue[c][f]===p&&(delete this.queue[c][f],Object.keys(this.queue[c]).length===0&&delete this.queue[c])},p=()=>{let E=`${f}:${c}`,B=!1;try{let Q=tst.connect(e,{createConnection:this.createConnection,settings:this.settings,session:this.tlsSessionCache.get(E),...r});Q[ya]=0,Q[OC]=!1;let x=()=>Q[ya]{this.tlsSessionCache.set(E,U)}),Q.once("error",U=>{for(let{reject:H}of o)H(U);this.tlsSessionCache.delete(E)}),Q.setTimeout(this.timeout,()=>{Q.destroy()}),Q.once("close",()=>{if(B){C&&this._freeSessionsCount--,this._sessionsCount--;let U=this.sessions[c];U.splice(U.indexOf(Q),1),U.length===0&&delete this.sessions[c]}else{let U=new Error("Session closed without receiving a SETTINGS frame");U.code="HTTP2WRAPPER_NOSETTINGS";for(let{reject:H}of o)H(U);g()}this._tryToCreateNewSession(c,f)});let N=()=>{if(!(!(c in this.queue)||!x())){for(let U of Q[Bl])if(U in this.queue[c]){let{listeners:H}=this.queue[c][U];for(;H.length!==0&&x();)H.shift().resolve(Q);let X=this.queue[c];if(X[U].listeners.length===0&&(delete X[U],Object.keys(X).length===0)){delete this.queue[c];break}if(!x())break}}};Q.on("origin",()=>{Q[Bl]=Q.originSet,x()&&(N(),Z4(this.sessions[c],Q))}),Q.once("remoteSettings",()=>{if(Q.ref(),Q.unref(),this._sessionsCount++,p.destroyed){let U=new Error("Agent has been destroyed");for(let H of o)H.reject(U);Q.destroy();return}Q[Bl]=Q.originSet;{let U=this.sessions;if(c in U){let H=U[c];H.splice(ist(H,Q,sst),0,Q)}else U[c]=[Q]}this._freeSessionsCount+=1,B=!0,this.emit("session",Q),N(),g(),Q[ya]===0&&this._freeSessionsCount>this.maxFreeSessions&&Q.close(),o.length!==0&&(this.getSession(f,r,o),o.length=0),Q.on("remoteSettings",()=>{N(),Z4(this.sessions[c],Q)})}),Q[oAe]=Q.request,Q.request=(U,H)=>{if(Q[OC])throw new Error("The session is gracefully closing. No new streams are allowed.");let X=Q[oAe](U,H);return Q.ref(),++Q[ya],Q[ya]===Q.remoteSettings.maxConcurrentStreams&&this._freeSessionsCount--,X.once("close",()=>{if(C=x(),--Q[ya],!Q.destroyed&&!Q.closed&&(ost(this.sessions[c],Q),x()&&!Q.closed)){C||(this._freeSessionsCount++,C=!0);let ie=Q[ya]===0;ie&&Q.unref(),ie&&(this._freeSessionsCount>this.maxFreeSessions||Q[OC])?Q.close():(Z4(this.sessions[c],Q),N())}}),X}}catch(Q){for(let x of o)x.reject(Q);g()}};p.listeners=o,p.completed=!1,p.destroyed=!1,this.queue[c][f]=p,this._tryToCreateNewSession(c,f)})}request(e,r,o,a){return new Promise((n,c)=>{this.getSession(e,r,[{reject:c,resolve:f=>{try{n(f.request(o,a))}catch(g){c(g)}}}])})}createConnection(e,r){return Du.connect(e,r)}static connect(e,r){r.ALPNProtocols=["h2"];let o=e.port||443,a=e.hostname||e.host;return typeof r.servername>"u"&&(r.servername=a),est.connect(o,a,r)}closeFreeSessions(){for(let e of Object.values(this.sessions))for(let r of e)r[ya]===0&&r.close()}destroy(e){for(let r of Object.values(this.sessions))for(let o of r)o.destroy(e);for(let r of Object.values(this.queue))for(let o of Object.values(r))o.destroyed=!0;this.queue={}}get freeSessions(){return aAe({agent:this,isFree:!0})}get busySessions(){return aAe({agent:this,isFree:!1})}};Du.kCurrentStreamsCount=ya;Du.kGracefullyClosing=OC;lAe.exports={Agent:Du,globalAgent:new Du}});var tU=_((ALt,cAe)=>{"use strict";var{Readable:ast}=Ie("stream"),eU=class extends ast{constructor(e,r){super({highWaterMark:r,autoDestroy:!1}),this.statusCode=null,this.statusMessage="",this.httpVersion="2.0",this.httpVersionMajor=2,this.httpVersionMinor=0,this.headers={},this.trailers={},this.req=null,this.aborted=!1,this.complete=!1,this.upgrade=null,this.rawHeaders=[],this.rawTrailers=[],this.socket=e,this.connection=e,this._dumped=!1}_destroy(e){this.req._request.destroy(e)}setTimeout(e,r){return this.req.setTimeout(e,r),this}_dump(){this._dumped||(this._dumped=!0,this.removeAllListeners("data"),this.resume())}_read(){this.req&&this.req._request.resume()}};cAe.exports=eU});var rU=_((lLt,uAe)=>{"use strict";uAe.exports=t=>{let e={protocol:t.protocol,hostname:typeof t.hostname=="string"&&t.hostname.startsWith("[")?t.hostname.slice(1,-1):t.hostname,host:t.host,hash:t.hash,search:t.search,pathname:t.pathname,href:t.href,path:`${t.pathname||""}${t.search||""}`};return typeof t.port=="string"&&t.port.length!==0&&(e.port=Number(t.port)),(t.username||t.password)&&(e.auth=`${t.username||""}:${t.password||""}`),e}});var gAe=_((cLt,fAe)=>{"use strict";fAe.exports=(t,e,r)=>{for(let o of r)t.on(o,(...a)=>e.emit(o,...a))}});var hAe=_((uLt,pAe)=>{"use strict";pAe.exports=t=>{switch(t){case":method":case":scheme":case":authority":case":path":return!0;default:return!1}}});var mAe=_((gLt,dAe)=>{"use strict";var UC=(t,e,r)=>{dAe.exports[e]=class extends t{constructor(...a){super(typeof r=="string"?r:r(a)),this.name=`${super.name} [${e}]`,this.code=e}}};UC(TypeError,"ERR_INVALID_ARG_TYPE",t=>{let e=t[0].includes(".")?"property":"argument",r=t[1],o=Array.isArray(r);return o&&(r=`${r.slice(0,-1).join(", ")} or ${r.slice(-1)}`),`The "${t[0]}" ${e} must be ${o?"one of":"of"} type ${r}. Received ${typeof t[2]}`});UC(TypeError,"ERR_INVALID_PROTOCOL",t=>`Protocol "${t[0]}" not supported. Expected "${t[1]}"`);UC(Error,"ERR_HTTP_HEADERS_SENT",t=>`Cannot ${t[0]} headers after they are sent to the client`);UC(TypeError,"ERR_INVALID_HTTP_TOKEN",t=>`${t[0]} must be a valid HTTP token [${t[1]}]`);UC(TypeError,"ERR_HTTP_INVALID_HEADER_VALUE",t=>`Invalid value "${t[0]} for header "${t[1]}"`);UC(TypeError,"ERR_INVALID_CHAR",t=>`Invalid character in ${t[0]} [${t[1]}]`)});var aU=_((pLt,QAe)=>{"use strict";var Ast=Ie("http2"),{Writable:lst}=Ie("stream"),{Agent:yAe,globalAgent:cst}=$4(),ust=tU(),fst=rU(),gst=gAe(),pst=hAe(),{ERR_INVALID_ARG_TYPE:nU,ERR_INVALID_PROTOCOL:hst,ERR_HTTP_HEADERS_SENT:CAe,ERR_INVALID_HTTP_TOKEN:dst,ERR_HTTP_INVALID_HEADER_VALUE:mst,ERR_INVALID_CHAR:yst}=mAe(),{HTTP2_HEADER_STATUS:EAe,HTTP2_HEADER_METHOD:IAe,HTTP2_HEADER_PATH:wAe,HTTP2_METHOD_CONNECT:Cst}=Ast.constants,Yo=Symbol("headers"),iU=Symbol("origin"),sU=Symbol("session"),BAe=Symbol("options"),yk=Symbol("flushedHeaders"),FB=Symbol("jobs"),Est=/^[\^`\-\w!#$%&*+.|~]+$/,Ist=/[^\t\u0020-\u007E\u0080-\u00FF]/,oU=class extends lst{constructor(e,r,o){super({autoDestroy:!1});let a=typeof e=="string"||e instanceof URL;if(a&&(e=fst(e instanceof URL?e:new URL(e))),typeof r=="function"||r===void 0?(o=r,r=a?e:{...e}):r={...e,...r},r.h2session)this[sU]=r.h2session;else if(r.agent===!1)this.agent=new yAe({maxFreeSessions:0});else if(typeof r.agent>"u"||r.agent===null)typeof r.createConnection=="function"?(this.agent=new yAe({maxFreeSessions:0}),this.agent.createConnection=r.createConnection):this.agent=cst;else if(typeof r.agent.request=="function")this.agent=r.agent;else throw new nU("options.agent",["Agent-like Object","undefined","false"],r.agent);if(r.protocol&&r.protocol!=="https:")throw new hst(r.protocol,"https:");let n=r.port||r.defaultPort||this.agent&&this.agent.defaultPort||443,c=r.hostname||r.host||"localhost";delete r.hostname,delete r.host,delete r.port;let{timeout:f}=r;if(r.timeout=void 0,this[Yo]=Object.create(null),this[FB]=[],this.socket=null,this.connection=null,this.method=r.method||"GET",this.path=r.path,this.res=null,this.aborted=!1,this.reusedSocket=!1,r.headers)for(let[g,p]of Object.entries(r.headers))this.setHeader(g,p);r.auth&&!("authorization"in this[Yo])&&(this[Yo].authorization="Basic "+Buffer.from(r.auth).toString("base64")),r.session=r.tlsSession,r.path=r.socketPath,this[BAe]=r,n===443?(this[iU]=`https://${c}`,":authority"in this[Yo]||(this[Yo][":authority"]=c)):(this[iU]=`https://${c}:${n}`,":authority"in this[Yo]||(this[Yo][":authority"]=`${c}:${n}`)),f&&this.setTimeout(f),o&&this.once("response",o),this[yk]=!1}get method(){return this[Yo][IAe]}set method(e){e&&(this[Yo][IAe]=e.toUpperCase())}get path(){return this[Yo][wAe]}set path(e){e&&(this[Yo][wAe]=e)}get _mustNotHaveABody(){return this.method==="GET"||this.method==="HEAD"||this.method==="DELETE"}_write(e,r,o){if(this._mustNotHaveABody){o(new Error("The GET, HEAD and DELETE methods must NOT have a body"));return}this.flushHeaders();let a=()=>this._request.write(e,r,o);this._request?a():this[FB].push(a)}_final(e){if(this.destroyed)return;this.flushHeaders();let r=()=>{if(this._mustNotHaveABody){e();return}this._request.end(e)};this._request?r():this[FB].push(r)}abort(){this.res&&this.res.complete||(this.aborted||process.nextTick(()=>this.emit("abort")),this.aborted=!0,this.destroy())}_destroy(e,r){this.res&&this.res._dump(),this._request&&this._request.destroy(),r(e)}async flushHeaders(){if(this[yk]||this.destroyed)return;this[yk]=!0;let e=this.method===Cst,r=o=>{if(this._request=o,this.destroyed){o.destroy();return}e||gst(o,this,["timeout","continue","close","error"]);let a=c=>(...f)=>{!this.writable&&!this.destroyed?c(...f):this.once("finish",()=>{c(...f)})};o.once("response",a((c,f,g)=>{let p=new ust(this.socket,o.readableHighWaterMark);this.res=p,p.req=this,p.statusCode=c[EAe],p.headers=c,p.rawHeaders=g,p.once("end",()=>{this.aborted?(p.aborted=!0,p.emit("aborted")):(p.complete=!0,p.socket=null,p.connection=null)}),e?(p.upgrade=!0,this.emit("connect",p,o,Buffer.alloc(0))?this.emit("close"):o.destroy()):(o.on("data",E=>{!p._dumped&&!p.push(E)&&o.pause()}),o.once("end",()=>{p.push(null)}),this.emit("response",p)||p._dump())})),o.once("headers",a(c=>this.emit("information",{statusCode:c[EAe]}))),o.once("trailers",a((c,f,g)=>{let{res:p}=this;p.trailers=c,p.rawTrailers=g}));let{socket:n}=o.session;this.socket=n,this.connection=n;for(let c of this[FB])c();this.emit("socket",this.socket)};if(this[sU])try{r(this[sU].request(this[Yo]))}catch(o){this.emit("error",o)}else{this.reusedSocket=!0;try{r(await this.agent.request(this[iU],this[BAe],this[Yo]))}catch(o){this.emit("error",o)}}}getHeader(e){if(typeof e!="string")throw new nU("name","string",e);return this[Yo][e.toLowerCase()]}get headersSent(){return this[yk]}removeHeader(e){if(typeof e!="string")throw new nU("name","string",e);if(this.headersSent)throw new CAe("remove");delete this[Yo][e.toLowerCase()]}setHeader(e,r){if(this.headersSent)throw new CAe("set");if(typeof e!="string"||!Est.test(e)&&!pst(e))throw new dst("Header name",e);if(typeof r>"u")throw new mst(r,e);if(Ist.test(r))throw new yst("header content",e);this[Yo][e.toLowerCase()]=r}setNoDelay(){}setSocketKeepAlive(){}setTimeout(e,r){let o=()=>this._request.setTimeout(e,r);return this._request?o():this[FB].push(o),this}get maxHeadersCount(){if(!this.destroyed&&this._request)return this._request.session.localSettings.maxHeaderListSize}set maxHeadersCount(e){}};QAe.exports=oU});var DAe=_((hLt,vAe)=>{"use strict";var wst=Ie("tls");vAe.exports=(t={})=>new Promise((e,r)=>{let o=wst.connect(t,()=>{t.resolveSocket?(o.off("error",r),e({alpnProtocol:o.alpnProtocol,socket:o})):(o.destroy(),e({alpnProtocol:o.alpnProtocol}))});o.on("error",r)})});var kAe=_((dLt,SAe)=>{"use strict";var Bst=Ie("net");SAe.exports=t=>{let e=t.host,r=t.headers&&t.headers.host;return r&&(r.startsWith("[")?r.indexOf("]")===-1?e=r:e=r.slice(1,-1):e=r.split(":",1)[0]),Bst.isIP(e)?"":e}});var bAe=_((mLt,lU)=>{"use strict";var xAe=Ie("http"),AU=Ie("https"),Qst=DAe(),vst=X4(),Dst=aU(),Sst=kAe(),kst=rU(),Ck=new vst({maxSize:100}),RB=new Map,PAe=(t,e,r)=>{e._httpMessage={shouldKeepAlive:!0};let o=()=>{t.emit("free",e,r)};e.on("free",o);let a=()=>{t.removeSocket(e,r)};e.on("close",a);let n=()=>{t.removeSocket(e,r),e.off("close",a),e.off("free",o),e.off("agentRemove",n)};e.on("agentRemove",n),t.emit("free",e,r)},xst=async t=>{let e=`${t.host}:${t.port}:${t.ALPNProtocols.sort()}`;if(!Ck.has(e)){if(RB.has(e))return(await RB.get(e)).alpnProtocol;let{path:r,agent:o}=t;t.path=t.socketPath;let a=Qst(t);RB.set(e,a);try{let{socket:n,alpnProtocol:c}=await a;if(Ck.set(e,c),t.path=r,c==="h2")n.destroy();else{let{globalAgent:f}=AU,g=AU.Agent.prototype.createConnection;o?o.createConnection===g?PAe(o,n,t):n.destroy():f.createConnection===g?PAe(f,n,t):n.destroy()}return RB.delete(e),c}catch(n){throw RB.delete(e),n}}return Ck.get(e)};lU.exports=async(t,e,r)=>{if((typeof t=="string"||t instanceof URL)&&(t=kst(new URL(t))),typeof e=="function"&&(r=e,e=void 0),e={ALPNProtocols:["h2","http/1.1"],...t,...e,resolveSocket:!0},!Array.isArray(e.ALPNProtocols)||e.ALPNProtocols.length===0)throw new Error("The `ALPNProtocols` option must be an Array with at least one entry");e.protocol=e.protocol||"https:";let o=e.protocol==="https:";e.host=e.hostname||e.host||"localhost",e.session=e.tlsSession,e.servername=e.servername||Sst(e),e.port=e.port||(o?443:80),e._defaultAgent=o?AU.globalAgent:xAe.globalAgent;let a=e.agent;if(a){if(a.addRequest)throw new Error("The `options.agent` object can contain only `http`, `https` or `http2` properties");e.agent=a[o?"https":"http"]}return o&&await xst(e)==="h2"?(a&&(e.agent=a.http2),new Dst(e,r)):xAe.request(e,r)};lU.exports.protocolCache=Ck});var RAe=_((yLt,FAe)=>{"use strict";var Pst=Ie("http2"),bst=$4(),cU=aU(),Fst=tU(),Rst=bAe(),Tst=(t,e,r)=>new cU(t,e,r),Nst=(t,e,r)=>{let o=new cU(t,e,r);return o.end(),o};FAe.exports={...Pst,ClientRequest:cU,IncomingMessage:Fst,...bst,request:Tst,get:Nst,auto:Rst}});var fU=_(uU=>{"use strict";Object.defineProperty(uU,"__esModule",{value:!0});var TAe=tg();uU.default=t=>TAe.default.nodeStream(t)&&TAe.default.function_(t.getBoundary)});var OAe=_(gU=>{"use strict";Object.defineProperty(gU,"__esModule",{value:!0});var MAe=Ie("fs"),LAe=Ie("util"),NAe=tg(),Mst=fU(),Lst=LAe.promisify(MAe.stat);gU.default=async(t,e)=>{if(e&&"content-length"in e)return Number(e["content-length"]);if(!t)return 0;if(NAe.default.string(t))return Buffer.byteLength(t);if(NAe.default.buffer(t))return t.length;if(Mst.default(t))return LAe.promisify(t.getLength.bind(t))();if(t instanceof MAe.ReadStream){let{size:r}=await Lst(t.path);return r===0?void 0:r}}});var hU=_(pU=>{"use strict";Object.defineProperty(pU,"__esModule",{value:!0});function Ost(t,e,r){let o={};for(let a of r)o[a]=(...n)=>{e.emit(a,...n)},t.on(a,o[a]);return()=>{for(let a of r)t.off(a,o[a])}}pU.default=Ost});var UAe=_(dU=>{"use strict";Object.defineProperty(dU,"__esModule",{value:!0});dU.default=()=>{let t=[];return{once(e,r,o){e.once(r,o),t.push({origin:e,event:r,fn:o})},unhandleAll(){for(let e of t){let{origin:r,event:o,fn:a}=e;r.removeListener(o,a)}t.length=0}}}});var _Ae=_(TB=>{"use strict";Object.defineProperty(TB,"__esModule",{value:!0});TB.TimeoutError=void 0;var Ust=Ie("net"),Kst=UAe(),KAe=Symbol("reentry"),_st=()=>{},Ek=class extends Error{constructor(e,r){super(`Timeout awaiting '${r}' for ${e}ms`),this.event=r,this.name="TimeoutError",this.code="ETIMEDOUT"}};TB.TimeoutError=Ek;TB.default=(t,e,r)=>{if(KAe in t)return _st;t[KAe]=!0;let o=[],{once:a,unhandleAll:n}=Kst.default(),c=(B,Q,x)=>{var C;let N=setTimeout(Q,B,B,x);(C=N.unref)===null||C===void 0||C.call(N);let U=()=>{clearTimeout(N)};return o.push(U),U},{host:f,hostname:g}=r,p=(B,Q)=>{t.destroy(new Ek(B,Q))},E=()=>{for(let B of o)B();n()};if(t.once("error",B=>{if(E(),t.listenerCount("error")===0)throw B}),t.once("close",E),a(t,"response",B=>{a(B,"end",E)}),typeof e.request<"u"&&c(e.request,p,"request"),typeof e.socket<"u"){let B=()=>{p(e.socket,"socket")};t.setTimeout(e.socket,B),o.push(()=>{t.removeListener("timeout",B)})}return a(t,"socket",B=>{var Q;let{socketPath:x}=t;if(B.connecting){let C=Boolean(x??Ust.isIP((Q=g??f)!==null&&Q!==void 0?Q:"")!==0);if(typeof e.lookup<"u"&&!C&&typeof B.address().address>"u"){let N=c(e.lookup,p,"lookup");a(B,"lookup",N)}if(typeof e.connect<"u"){let N=()=>c(e.connect,p,"connect");C?a(B,"connect",N()):a(B,"lookup",U=>{U===null&&a(B,"connect",N())})}typeof e.secureConnect<"u"&&r.protocol==="https:"&&a(B,"connect",()=>{let N=c(e.secureConnect,p,"secureConnect");a(B,"secureConnect",N)})}if(typeof e.send<"u"){let C=()=>c(e.send,p,"send");B.connecting?a(B,"connect",()=>{a(t,"upload-complete",C())}):a(t,"upload-complete",C())}}),typeof e.response<"u"&&a(t,"upload-complete",()=>{let B=c(e.response,p,"response");a(t,"response",B)}),E}});var qAe=_(mU=>{"use strict";Object.defineProperty(mU,"__esModule",{value:!0});var HAe=tg();mU.default=t=>{t=t;let e={protocol:t.protocol,hostname:HAe.default.string(t.hostname)&&t.hostname.startsWith("[")?t.hostname.slice(1,-1):t.hostname,host:t.host,hash:t.hash,search:t.search,pathname:t.pathname,href:t.href,path:`${t.pathname||""}${t.search||""}`};return HAe.default.string(t.port)&&t.port.length>0&&(e.port=Number(t.port)),(t.username||t.password)&&(e.auth=`${t.username||""}:${t.password||""}`),e}});var GAe=_(yU=>{"use strict";Object.defineProperty(yU,"__esModule",{value:!0});var Hst=Ie("url"),qst=["protocol","host","hostname","port","pathname","search"];yU.default=(t,e)=>{var r,o;if(e.path){if(e.pathname)throw new TypeError("Parameters `path` and `pathname` are mutually exclusive.");if(e.search)throw new TypeError("Parameters `path` and `search` are mutually exclusive.");if(e.searchParams)throw new TypeError("Parameters `path` and `searchParams` are mutually exclusive.")}if(e.search&&e.searchParams)throw new TypeError("Parameters `search` and `searchParams` are mutually exclusive.");if(!t){if(!e.protocol)throw new TypeError("No URL protocol specified");t=`${e.protocol}//${(o=(r=e.hostname)!==null&&r!==void 0?r:e.host)!==null&&o!==void 0?o:""}`}let a=new Hst.URL(t);if(e.path){let n=e.path.indexOf("?");n===-1?e.pathname=e.path:(e.pathname=e.path.slice(0,n),e.search=e.path.slice(n+1)),delete e.path}for(let n of qst)e[n]&&(a[n]=e[n].toString());return a}});var jAe=_(EU=>{"use strict";Object.defineProperty(EU,"__esModule",{value:!0});var CU=class{constructor(){this.weakMap=new WeakMap,this.map=new Map}set(e,r){typeof e=="object"?this.weakMap.set(e,r):this.map.set(e,r)}get(e){return typeof e=="object"?this.weakMap.get(e):this.map.get(e)}has(e){return typeof e=="object"?this.weakMap.has(e):this.map.has(e)}};EU.default=CU});var wU=_(IU=>{"use strict";Object.defineProperty(IU,"__esModule",{value:!0});var Gst=async t=>{let e=[],r=0;for await(let o of t)e.push(o),r+=Buffer.byteLength(o);return Buffer.isBuffer(e[0])?Buffer.concat(e,r):Buffer.from(e.join(""))};IU.default=Gst});var WAe=_(sm=>{"use strict";Object.defineProperty(sm,"__esModule",{value:!0});sm.dnsLookupIpVersionToFamily=sm.isDnsLookupIpVersion=void 0;var YAe={auto:0,ipv4:4,ipv6:6};sm.isDnsLookupIpVersion=t=>t in YAe;sm.dnsLookupIpVersionToFamily=t=>{if(sm.isDnsLookupIpVersion(t))return YAe[t];throw new Error("Invalid DNS lookup IP version")}});var BU=_(Ik=>{"use strict";Object.defineProperty(Ik,"__esModule",{value:!0});Ik.isResponseOk=void 0;Ik.isResponseOk=t=>{let{statusCode:e}=t,r=t.request.options.followRedirect?299:399;return e>=200&&e<=r||e===304}});var VAe=_(QU=>{"use strict";Object.defineProperty(QU,"__esModule",{value:!0});var JAe=new Set;QU.default=t=>{JAe.has(t)||(JAe.add(t),process.emitWarning(`Got: ${t}`,{type:"DeprecationWarning"}))}});var zAe=_(vU=>{"use strict";Object.defineProperty(vU,"__esModule",{value:!0});var vi=tg(),jst=(t,e)=>{if(vi.default.null_(t.encoding))throw new TypeError("To get a Buffer, set `options.responseType` to `buffer` instead");vi.assert.any([vi.default.string,vi.default.undefined],t.encoding),vi.assert.any([vi.default.boolean,vi.default.undefined],t.resolveBodyOnly),vi.assert.any([vi.default.boolean,vi.default.undefined],t.methodRewriting),vi.assert.any([vi.default.boolean,vi.default.undefined],t.isStream),vi.assert.any([vi.default.string,vi.default.undefined],t.responseType),t.responseType===void 0&&(t.responseType="text");let{retry:r}=t;if(e?t.retry={...e.retry}:t.retry={calculateDelay:o=>o.computedValue,limit:0,methods:[],statusCodes:[],errorCodes:[],maxRetryAfter:void 0},vi.default.object(r)?(t.retry={...t.retry,...r},t.retry.methods=[...new Set(t.retry.methods.map(o=>o.toUpperCase()))],t.retry.statusCodes=[...new Set(t.retry.statusCodes)],t.retry.errorCodes=[...new Set(t.retry.errorCodes)]):vi.default.number(r)&&(t.retry.limit=r),vi.default.undefined(t.retry.maxRetryAfter)&&(t.retry.maxRetryAfter=Math.min(...[t.timeout.request,t.timeout.connect].filter(vi.default.number))),vi.default.object(t.pagination)){e&&(t.pagination={...e.pagination,...t.pagination});let{pagination:o}=t;if(!vi.default.function_(o.transform))throw new Error("`options.pagination.transform` must be implemented");if(!vi.default.function_(o.shouldContinue))throw new Error("`options.pagination.shouldContinue` must be implemented");if(!vi.default.function_(o.filter))throw new TypeError("`options.pagination.filter` must be implemented");if(!vi.default.function_(o.paginate))throw new Error("`options.pagination.paginate` must be implemented")}return t.responseType==="json"&&t.headers.accept===void 0&&(t.headers.accept="application/json"),t};vU.default=jst});var XAe=_(NB=>{"use strict";Object.defineProperty(NB,"__esModule",{value:!0});NB.retryAfterStatusCodes=void 0;NB.retryAfterStatusCodes=new Set([413,429,503]);var Yst=({attemptCount:t,retryOptions:e,error:r,retryAfter:o})=>{if(t>e.limit)return 0;let a=e.methods.includes(r.options.method),n=e.errorCodes.includes(r.code),c=r.response&&e.statusCodes.includes(r.response.statusCode);if(!a||!n&&!c)return 0;if(r.response){if(o)return e.maxRetryAfter===void 0||o>e.maxRetryAfter?0:o;if(r.response.statusCode===413)return 0}let f=Math.random()*100;return 2**(t-1)*1e3+f};NB.default=Yst});var OB=_(Nn=>{"use strict";Object.defineProperty(Nn,"__esModule",{value:!0});Nn.UnsupportedProtocolError=Nn.ReadError=Nn.TimeoutError=Nn.UploadError=Nn.CacheError=Nn.HTTPError=Nn.MaxRedirectsError=Nn.RequestError=Nn.setNonEnumerableProperties=Nn.knownHookEvents=Nn.withoutBody=Nn.kIsNormalizedAlready=void 0;var ZAe=Ie("util"),$Ae=Ie("stream"),Wst=Ie("fs"),Fp=Ie("url"),ele=Ie("http"),DU=Ie("http"),Jst=Ie("https"),Vst=hae(),zst=wae(),tle=eAe(),Xst=iAe(),Zst=RAe(),$st=dk(),At=tg(),eot=OAe(),rle=fU(),tot=hU(),nle=_Ae(),rot=qAe(),ile=GAe(),not=jAe(),iot=wU(),sle=WAe(),sot=BU(),Rp=VAe(),oot=zAe(),aot=XAe(),SU,ho=Symbol("request"),Qk=Symbol("response"),KC=Symbol("responseSize"),_C=Symbol("downloadedSize"),HC=Symbol("bodySize"),qC=Symbol("uploadedSize"),wk=Symbol("serverResponsesPiped"),ole=Symbol("unproxyEvents"),ale=Symbol("isFromCache"),kU=Symbol("cancelTimeouts"),Ale=Symbol("startedReading"),GC=Symbol("stopReading"),Bk=Symbol("triggerRead"),Tp=Symbol("body"),MB=Symbol("jobs"),lle=Symbol("originalResponse"),cle=Symbol("retryTimeout");Nn.kIsNormalizedAlready=Symbol("isNormalizedAlready");var Aot=At.default.string(process.versions.brotli);Nn.withoutBody=new Set(["GET","HEAD"]);Nn.knownHookEvents=["init","beforeRequest","beforeRedirect","beforeError","beforeRetry","afterResponse"];function lot(t){for(let e in t){let r=t[e];if(!At.default.string(r)&&!At.default.number(r)&&!At.default.boolean(r)&&!At.default.null_(r)&&!At.default.undefined(r))throw new TypeError(`The \`searchParams\` value '${String(r)}' must be a string, number, boolean or null`)}}function cot(t){return At.default.object(t)&&!("statusCode"in t)}var xU=new not.default,uot=async t=>new Promise((e,r)=>{let o=a=>{r(a)};t.pending||e(),t.once("error",o),t.once("ready",()=>{t.off("error",o),e()})}),fot=new Set([300,301,302,303,304,307,308]),got=["context","body","json","form"];Nn.setNonEnumerableProperties=(t,e)=>{let r={};for(let o of t)if(!!o)for(let a of got)a in o&&(r[a]={writable:!0,configurable:!0,enumerable:!1,value:o[a]});Object.defineProperties(e,r)};var ms=class extends Error{constructor(e,r,o){var a;if(super(e),Error.captureStackTrace(this,this.constructor),this.name="RequestError",this.code=r.code,o instanceof bk?(Object.defineProperty(this,"request",{enumerable:!1,value:o}),Object.defineProperty(this,"response",{enumerable:!1,value:o[Qk]}),Object.defineProperty(this,"options",{enumerable:!1,value:o.options})):Object.defineProperty(this,"options",{enumerable:!1,value:o}),this.timings=(a=this.request)===null||a===void 0?void 0:a.timings,At.default.string(r.stack)&&At.default.string(this.stack)){let n=this.stack.indexOf(this.message)+this.message.length,c=this.stack.slice(n).split(` -`).reverse(),f=r.stack.slice(r.stack.indexOf(r.message)+r.message.length).split(` -`).reverse();for(;f.length!==0&&f[0]===c[0];)c.shift();this.stack=`${this.stack.slice(0,n)}${c.reverse().join(` -`)}${f.reverse().join(` -`)}`}}};Nn.RequestError=ms;var vk=class extends ms{constructor(e){super(`Redirected ${e.options.maxRedirects} times. Aborting.`,{},e),this.name="MaxRedirectsError"}};Nn.MaxRedirectsError=vk;var Dk=class extends ms{constructor(e){super(`Response code ${e.statusCode} (${e.statusMessage})`,{},e.request),this.name="HTTPError"}};Nn.HTTPError=Dk;var Sk=class extends ms{constructor(e,r){super(e.message,e,r),this.name="CacheError"}};Nn.CacheError=Sk;var kk=class extends ms{constructor(e,r){super(e.message,e,r),this.name="UploadError"}};Nn.UploadError=kk;var xk=class extends ms{constructor(e,r,o){super(e.message,e,o),this.name="TimeoutError",this.event=e.event,this.timings=r}};Nn.TimeoutError=xk;var LB=class extends ms{constructor(e,r){super(e.message,e,r),this.name="ReadError"}};Nn.ReadError=LB;var Pk=class extends ms{constructor(e){super(`Unsupported protocol "${e.url.protocol}"`,{},e),this.name="UnsupportedProtocolError"}};Nn.UnsupportedProtocolError=Pk;var pot=["socket","connect","continue","information","upgrade","timeout"],bk=class extends $Ae.Duplex{constructor(e,r={},o){super({autoDestroy:!1,highWaterMark:0}),this[_C]=0,this[qC]=0,this.requestInitialized=!1,this[wk]=new Set,this.redirects=[],this[GC]=!1,this[Bk]=!1,this[MB]=[],this.retryCount=0,this._progressCallbacks=[];let a=()=>this._unlockWrite(),n=()=>this._lockWrite();this.on("pipe",p=>{p.prependListener("data",a),p.on("data",n),p.prependListener("end",a),p.on("end",n)}),this.on("unpipe",p=>{p.off("data",a),p.off("data",n),p.off("end",a),p.off("end",n)}),this.on("pipe",p=>{p instanceof DU.IncomingMessage&&(this.options.headers={...p.headers,...this.options.headers})});let{json:c,body:f,form:g}=r;if((c||f||g)&&this._lockWrite(),Nn.kIsNormalizedAlready in r)this.options=r;else try{this.options=this.constructor.normalizeArguments(e,r,o)}catch(p){At.default.nodeStream(r.body)&&r.body.destroy(),this.destroy(p);return}(async()=>{var p;try{this.options.body instanceof Wst.ReadStream&&await uot(this.options.body);let{url:E}=this.options;if(!E)throw new TypeError("Missing `url` property");if(this.requestUrl=E.toString(),decodeURI(this.requestUrl),await this._finalizeBody(),await this._makeRequest(),this.destroyed){(p=this[ho])===null||p===void 0||p.destroy();return}for(let B of this[MB])B();this[MB].length=0,this.requestInitialized=!0}catch(E){if(E instanceof ms){this._beforeError(E);return}this.destroyed||this.destroy(E)}})()}static normalizeArguments(e,r,o){var a,n,c,f,g;let p=r;if(At.default.object(e)&&!At.default.urlInstance(e))r={...o,...e,...r};else{if(e&&r&&r.url!==void 0)throw new TypeError("The `url` option is mutually exclusive with the `input` argument");r={...o,...r},e!==void 0&&(r.url=e),At.default.urlInstance(r.url)&&(r.url=new Fp.URL(r.url.toString()))}if(r.cache===!1&&(r.cache=void 0),r.dnsCache===!1&&(r.dnsCache=void 0),At.assert.any([At.default.string,At.default.undefined],r.method),At.assert.any([At.default.object,At.default.undefined],r.headers),At.assert.any([At.default.string,At.default.urlInstance,At.default.undefined],r.prefixUrl),At.assert.any([At.default.object,At.default.undefined],r.cookieJar),At.assert.any([At.default.object,At.default.string,At.default.undefined],r.searchParams),At.assert.any([At.default.object,At.default.string,At.default.undefined],r.cache),At.assert.any([At.default.object,At.default.number,At.default.undefined],r.timeout),At.assert.any([At.default.object,At.default.undefined],r.context),At.assert.any([At.default.object,At.default.undefined],r.hooks),At.assert.any([At.default.boolean,At.default.undefined],r.decompress),At.assert.any([At.default.boolean,At.default.undefined],r.ignoreInvalidCookies),At.assert.any([At.default.boolean,At.default.undefined],r.followRedirect),At.assert.any([At.default.number,At.default.undefined],r.maxRedirects),At.assert.any([At.default.boolean,At.default.undefined],r.throwHttpErrors),At.assert.any([At.default.boolean,At.default.undefined],r.http2),At.assert.any([At.default.boolean,At.default.undefined],r.allowGetBody),At.assert.any([At.default.string,At.default.undefined],r.localAddress),At.assert.any([sle.isDnsLookupIpVersion,At.default.undefined],r.dnsLookupIpVersion),At.assert.any([At.default.object,At.default.undefined],r.https),At.assert.any([At.default.boolean,At.default.undefined],r.rejectUnauthorized),r.https&&(At.assert.any([At.default.boolean,At.default.undefined],r.https.rejectUnauthorized),At.assert.any([At.default.function_,At.default.undefined],r.https.checkServerIdentity),At.assert.any([At.default.string,At.default.object,At.default.array,At.default.undefined],r.https.certificateAuthority),At.assert.any([At.default.string,At.default.object,At.default.array,At.default.undefined],r.https.key),At.assert.any([At.default.string,At.default.object,At.default.array,At.default.undefined],r.https.certificate),At.assert.any([At.default.string,At.default.undefined],r.https.passphrase),At.assert.any([At.default.string,At.default.buffer,At.default.array,At.default.undefined],r.https.pfx)),At.assert.any([At.default.object,At.default.undefined],r.cacheOptions),At.default.string(r.method)?r.method=r.method.toUpperCase():r.method="GET",r.headers===(o==null?void 0:o.headers)?r.headers={...r.headers}:r.headers=$st({...o==null?void 0:o.headers,...r.headers}),"slashes"in r)throw new TypeError("The legacy `url.Url` has been deprecated. Use `URL` instead.");if("auth"in r)throw new TypeError("Parameter `auth` is deprecated. Use `username` / `password` instead.");if("searchParams"in r&&r.searchParams&&r.searchParams!==(o==null?void 0:o.searchParams)){let x;if(At.default.string(r.searchParams)||r.searchParams instanceof Fp.URLSearchParams)x=new Fp.URLSearchParams(r.searchParams);else{lot(r.searchParams),x=new Fp.URLSearchParams;for(let C in r.searchParams){let N=r.searchParams[C];N===null?x.append(C,""):N!==void 0&&x.append(C,N)}}(a=o==null?void 0:o.searchParams)===null||a===void 0||a.forEach((C,N)=>{x.has(N)||x.append(N,C)}),r.searchParams=x}if(r.username=(n=r.username)!==null&&n!==void 0?n:"",r.password=(c=r.password)!==null&&c!==void 0?c:"",At.default.undefined(r.prefixUrl)?r.prefixUrl=(f=o==null?void 0:o.prefixUrl)!==null&&f!==void 0?f:"":(r.prefixUrl=r.prefixUrl.toString(),r.prefixUrl!==""&&!r.prefixUrl.endsWith("/")&&(r.prefixUrl+="/")),At.default.string(r.url)){if(r.url.startsWith("/"))throw new Error("`input` must not start with a slash when using `prefixUrl`");r.url=ile.default(r.prefixUrl+r.url,r)}else(At.default.undefined(r.url)&&r.prefixUrl!==""||r.protocol)&&(r.url=ile.default(r.prefixUrl,r));if(r.url){"port"in r&&delete r.port;let{prefixUrl:x}=r;Object.defineProperty(r,"prefixUrl",{set:N=>{let U=r.url;if(!U.href.startsWith(N))throw new Error(`Cannot change \`prefixUrl\` from ${x} to ${N}: ${U.href}`);r.url=new Fp.URL(N+U.href.slice(x.length)),x=N},get:()=>x});let{protocol:C}=r.url;if(C==="unix:"&&(C="http:",r.url=new Fp.URL(`http://unix${r.url.pathname}${r.url.search}`)),r.searchParams&&(r.url.search=r.searchParams.toString()),C!=="http:"&&C!=="https:")throw new Pk(r);r.username===""?r.username=r.url.username:r.url.username=r.username,r.password===""?r.password=r.url.password:r.url.password=r.password}let{cookieJar:E}=r;if(E){let{setCookie:x,getCookieString:C}=E;At.assert.function_(x),At.assert.function_(C),x.length===4&&C.length===0&&(x=ZAe.promisify(x.bind(r.cookieJar)),C=ZAe.promisify(C.bind(r.cookieJar)),r.cookieJar={setCookie:x,getCookieString:C})}let{cache:B}=r;if(B&&(xU.has(B)||xU.set(B,new tle((x,C)=>{let N=x[ho](x,C);return At.default.promise(N)&&(N.once=(U,H)=>{if(U==="error")N.catch(H);else if(U==="abort")(async()=>{try{(await N).once("abort",H)}catch{}})();else throw new Error(`Unknown HTTP2 promise event: ${U}`);return N}),N},B))),r.cacheOptions={...r.cacheOptions},r.dnsCache===!0)SU||(SU=new zst.default),r.dnsCache=SU;else if(!At.default.undefined(r.dnsCache)&&!r.dnsCache.lookup)throw new TypeError(`Parameter \`dnsCache\` must be a CacheableLookup instance or a boolean, got ${At.default(r.dnsCache)}`);At.default.number(r.timeout)?r.timeout={request:r.timeout}:o&&r.timeout!==o.timeout?r.timeout={...o.timeout,...r.timeout}:r.timeout={...r.timeout},r.context||(r.context={});let Q=r.hooks===(o==null?void 0:o.hooks);r.hooks={...r.hooks};for(let x of Nn.knownHookEvents)if(x in r.hooks)if(At.default.array(r.hooks[x]))r.hooks[x]=[...r.hooks[x]];else throw new TypeError(`Parameter \`${x}\` must be an Array, got ${At.default(r.hooks[x])}`);else r.hooks[x]=[];if(o&&!Q)for(let x of Nn.knownHookEvents)o.hooks[x].length>0&&(r.hooks[x]=[...o.hooks[x],...r.hooks[x]]);if("family"in r&&Rp.default('"options.family" was never documented, please use "options.dnsLookupIpVersion"'),o!=null&&o.https&&(r.https={...o.https,...r.https}),"rejectUnauthorized"in r&&Rp.default('"options.rejectUnauthorized" is now deprecated, please use "options.https.rejectUnauthorized"'),"checkServerIdentity"in r&&Rp.default('"options.checkServerIdentity" was never documented, please use "options.https.checkServerIdentity"'),"ca"in r&&Rp.default('"options.ca" was never documented, please use "options.https.certificateAuthority"'),"key"in r&&Rp.default('"options.key" was never documented, please use "options.https.key"'),"cert"in r&&Rp.default('"options.cert" was never documented, please use "options.https.certificate"'),"passphrase"in r&&Rp.default('"options.passphrase" was never documented, please use "options.https.passphrase"'),"pfx"in r&&Rp.default('"options.pfx" was never documented, please use "options.https.pfx"'),"followRedirects"in r)throw new TypeError("The `followRedirects` option does not exist. Use `followRedirect` instead.");if(r.agent){for(let x in r.agent)if(x!=="http"&&x!=="https"&&x!=="http2")throw new TypeError(`Expected the \`options.agent\` properties to be \`http\`, \`https\` or \`http2\`, got \`${x}\``)}return r.maxRedirects=(g=r.maxRedirects)!==null&&g!==void 0?g:0,Nn.setNonEnumerableProperties([o,p],r),oot.default(r,o)}_lockWrite(){let e=()=>{throw new TypeError("The payload has been already provided")};this.write=e,this.end=e}_unlockWrite(){this.write=super.write,this.end=super.end}async _finalizeBody(){let{options:e}=this,{headers:r}=e,o=!At.default.undefined(e.form),a=!At.default.undefined(e.json),n=!At.default.undefined(e.body),c=o||a||n,f=Nn.withoutBody.has(e.method)&&!(e.method==="GET"&&e.allowGetBody);if(this._cannotHaveBody=f,c){if(f)throw new TypeError(`The \`${e.method}\` method cannot be used with a body`);if([n,o,a].filter(g=>g).length>1)throw new TypeError("The `body`, `json` and `form` options are mutually exclusive");if(n&&!(e.body instanceof $Ae.Readable)&&!At.default.string(e.body)&&!At.default.buffer(e.body)&&!rle.default(e.body))throw new TypeError("The `body` option must be a stream.Readable, string or Buffer");if(o&&!At.default.object(e.form))throw new TypeError("The `form` option must be an Object");{let g=!At.default.string(r["content-type"]);n?(rle.default(e.body)&&g&&(r["content-type"]=`multipart/form-data; boundary=${e.body.getBoundary()}`),this[Tp]=e.body):o?(g&&(r["content-type"]="application/x-www-form-urlencoded"),this[Tp]=new Fp.URLSearchParams(e.form).toString()):(g&&(r["content-type"]="application/json"),this[Tp]=e.stringifyJson(e.json));let p=await eot.default(this[Tp],e.headers);At.default.undefined(r["content-length"])&&At.default.undefined(r["transfer-encoding"])&&!f&&!At.default.undefined(p)&&(r["content-length"]=String(p))}}else f?this._lockWrite():this._unlockWrite();this[HC]=Number(r["content-length"])||void 0}async _onResponseBase(e){let{options:r}=this,{url:o}=r;this[lle]=e,r.decompress&&(e=Xst(e));let a=e.statusCode,n=e;n.statusMessage=n.statusMessage?n.statusMessage:ele.STATUS_CODES[a],n.url=r.url.toString(),n.requestUrl=this.requestUrl,n.redirectUrls=this.redirects,n.request=this,n.isFromCache=e.fromCache||!1,n.ip=this.ip,n.retryCount=this.retryCount,this[ale]=n.isFromCache,this[KC]=Number(e.headers["content-length"])||void 0,this[Qk]=e,e.once("end",()=>{this[KC]=this[_C],this.emit("downloadProgress",this.downloadProgress)}),e.once("error",f=>{e.destroy(),this._beforeError(new LB(f,this))}),e.once("aborted",()=>{this._beforeError(new LB({name:"Error",message:"The server aborted pending request",code:"ECONNRESET"},this))}),this.emit("downloadProgress",this.downloadProgress);let c=e.headers["set-cookie"];if(At.default.object(r.cookieJar)&&c){let f=c.map(async g=>r.cookieJar.setCookie(g,o.toString()));r.ignoreInvalidCookies&&(f=f.map(async g=>g.catch(()=>{})));try{await Promise.all(f)}catch(g){this._beforeError(g);return}}if(r.followRedirect&&e.headers.location&&fot.has(a)){if(e.resume(),this[ho]&&(this[kU](),delete this[ho],this[ole]()),(a===303&&r.method!=="GET"&&r.method!=="HEAD"||!r.methodRewriting)&&(r.method="GET","body"in r&&delete r.body,"json"in r&&delete r.json,"form"in r&&delete r.form,this[Tp]=void 0,delete r.headers["content-length"]),this.redirects.length>=r.maxRedirects){this._beforeError(new vk(this));return}try{let g=Buffer.from(e.headers.location,"binary").toString(),p=new Fp.URL(g,o),E=p.toString();decodeURI(E),p.hostname!==o.hostname||p.port!==o.port?("host"in r.headers&&delete r.headers.host,"cookie"in r.headers&&delete r.headers.cookie,"authorization"in r.headers&&delete r.headers.authorization,(r.username||r.password)&&(r.username="",r.password="")):(p.username=r.username,p.password=r.password),this.redirects.push(E),r.url=p;for(let B of r.hooks.beforeRedirect)await B(r,n);this.emit("redirect",n,r),await this._makeRequest()}catch(g){this._beforeError(g);return}return}if(r.isStream&&r.throwHttpErrors&&!sot.isResponseOk(n)){this._beforeError(new Dk(n));return}e.on("readable",()=>{this[Bk]&&this._read()}),this.on("resume",()=>{e.resume()}),this.on("pause",()=>{e.pause()}),e.once("end",()=>{this.push(null)}),this.emit("response",e);for(let f of this[wk])if(!f.headersSent){for(let g in e.headers){let p=r.decompress?g!=="content-encoding":!0,E=e.headers[g];p&&f.setHeader(g,E)}f.statusCode=a}}async _onResponse(e){try{await this._onResponseBase(e)}catch(r){this._beforeError(r)}}_onRequest(e){let{options:r}=this,{timeout:o,url:a}=r;Vst.default(e),this[kU]=nle.default(e,o,a);let n=r.cache?"cacheableResponse":"response";e.once(n,g=>{this._onResponse(g)}),e.once("error",g=>{var p;e.destroy(),(p=e.res)===null||p===void 0||p.removeAllListeners("end"),g=g instanceof nle.TimeoutError?new xk(g,this.timings,this):new ms(g.message,g,this),this._beforeError(g)}),this[ole]=tot.default(e,this,pot),this[ho]=e,this.emit("uploadProgress",this.uploadProgress);let c=this[Tp],f=this.redirects.length===0?this:e;At.default.nodeStream(c)?(c.pipe(f),c.once("error",g=>{this._beforeError(new kk(g,this))})):(this._unlockWrite(),At.default.undefined(c)?(this._cannotHaveBody||this._noPipe)&&(f.end(),this._lockWrite()):(this._writeRequest(c,void 0,()=>{}),f.end(),this._lockWrite())),this.emit("request",e)}async _createCacheableRequest(e,r){return new Promise((o,a)=>{Object.assign(r,rot.default(e)),delete r.url;let n,c=xU.get(r.cache)(r,async f=>{f._readableState.autoDestroy=!1,n&&(await n).emit("cacheableResponse",f),o(f)});r.url=e,c.once("error",a),c.once("request",async f=>{n=f,o(n)})})}async _makeRequest(){var e,r,o,a,n;let{options:c}=this,{headers:f}=c;for(let H in f)if(At.default.undefined(f[H]))delete f[H];else if(At.default.null_(f[H]))throw new TypeError(`Use \`undefined\` instead of \`null\` to delete the \`${H}\` header`);if(c.decompress&&At.default.undefined(f["accept-encoding"])&&(f["accept-encoding"]=Aot?"gzip, deflate, br":"gzip, deflate"),c.cookieJar){let H=await c.cookieJar.getCookieString(c.url.toString());At.default.nonEmptyString(H)&&(c.headers.cookie=H)}for(let H of c.hooks.beforeRequest){let X=await H(c);if(!At.default.undefined(X)){c.request=()=>X;break}}c.body&&this[Tp]!==c.body&&(this[Tp]=c.body);let{agent:g,request:p,timeout:E,url:B}=c;if(c.dnsCache&&!("lookup"in c)&&(c.lookup=c.dnsCache.lookup),B.hostname==="unix"){let H=/(?.+?):(?.+)/.exec(`${B.pathname}${B.search}`);if(H!=null&&H.groups){let{socketPath:X,path:ie}=H.groups;Object.assign(c,{socketPath:X,path:ie,host:""})}}let Q=B.protocol==="https:",x;c.http2?x=Zst.auto:x=Q?Jst.request:ele.request;let C=(e=c.request)!==null&&e!==void 0?e:x,N=c.cache?this._createCacheableRequest:C;g&&!c.http2&&(c.agent=g[Q?"https":"http"]),c[ho]=C,delete c.request,delete c.timeout;let U=c;if(U.shared=(r=c.cacheOptions)===null||r===void 0?void 0:r.shared,U.cacheHeuristic=(o=c.cacheOptions)===null||o===void 0?void 0:o.cacheHeuristic,U.immutableMinTimeToLive=(a=c.cacheOptions)===null||a===void 0?void 0:a.immutableMinTimeToLive,U.ignoreCargoCult=(n=c.cacheOptions)===null||n===void 0?void 0:n.ignoreCargoCult,c.dnsLookupIpVersion!==void 0)try{U.family=sle.dnsLookupIpVersionToFamily(c.dnsLookupIpVersion)}catch{throw new Error("Invalid `dnsLookupIpVersion` option value")}c.https&&("rejectUnauthorized"in c.https&&(U.rejectUnauthorized=c.https.rejectUnauthorized),c.https.checkServerIdentity&&(U.checkServerIdentity=c.https.checkServerIdentity),c.https.certificateAuthority&&(U.ca=c.https.certificateAuthority),c.https.certificate&&(U.cert=c.https.certificate),c.https.key&&(U.key=c.https.key),c.https.passphrase&&(U.passphrase=c.https.passphrase),c.https.pfx&&(U.pfx=c.https.pfx));try{let H=await N(B,U);At.default.undefined(H)&&(H=x(B,U)),c.request=p,c.timeout=E,c.agent=g,c.https&&("rejectUnauthorized"in c.https&&delete U.rejectUnauthorized,c.https.checkServerIdentity&&delete U.checkServerIdentity,c.https.certificateAuthority&&delete U.ca,c.https.certificate&&delete U.cert,c.https.key&&delete U.key,c.https.passphrase&&delete U.passphrase,c.https.pfx&&delete U.pfx),cot(H)?this._onRequest(H):this.writable?(this.once("finish",()=>{this._onResponse(H)}),this._unlockWrite(),this.end(),this._lockWrite()):this._onResponse(H)}catch(H){throw H instanceof tle.CacheError?new Sk(H,this):new ms(H.message,H,this)}}async _error(e){try{for(let r of this.options.hooks.beforeError)e=await r(e)}catch(r){e=new ms(r.message,r,this)}this.destroy(e)}_beforeError(e){if(this[GC])return;let{options:r}=this,o=this.retryCount+1;this[GC]=!0,e instanceof ms||(e=new ms(e.message,e,this));let a=e,{response:n}=a;(async()=>{if(n&&!n.body){n.setEncoding(this._readableState.encoding);try{n.rawBody=await iot.default(n),n.body=n.rawBody.toString()}catch{}}if(this.listenerCount("retry")!==0){let c;try{let f;n&&"retry-after"in n.headers&&(f=Number(n.headers["retry-after"]),Number.isNaN(f)?(f=Date.parse(n.headers["retry-after"])-Date.now(),f<=0&&(f=1)):f*=1e3),c=await r.retry.calculateDelay({attemptCount:o,retryOptions:r.retry,error:a,retryAfter:f,computedValue:aot.default({attemptCount:o,retryOptions:r.retry,error:a,retryAfter:f,computedValue:0})})}catch(f){this._error(new ms(f.message,f,this));return}if(c){let f=async()=>{try{for(let g of this.options.hooks.beforeRetry)await g(this.options,a,o)}catch(g){this._error(new ms(g.message,e,this));return}this.destroyed||(this.destroy(),this.emit("retry",o,e))};this[cle]=setTimeout(f,c);return}}this._error(a)})()}_read(){this[Bk]=!0;let e=this[Qk];if(e&&!this[GC]){e.readableLength&&(this[Bk]=!1);let r;for(;(r=e.read())!==null;){this[_C]+=r.length,this[Ale]=!0;let o=this.downloadProgress;o.percent<1&&this.emit("downloadProgress",o),this.push(r)}}}_write(e,r,o){let a=()=>{this._writeRequest(e,r,o)};this.requestInitialized?a():this[MB].push(a)}_writeRequest(e,r,o){this[ho].destroyed||(this._progressCallbacks.push(()=>{this[qC]+=Buffer.byteLength(e,r);let a=this.uploadProgress;a.percent<1&&this.emit("uploadProgress",a)}),this[ho].write(e,r,a=>{!a&&this._progressCallbacks.length>0&&this._progressCallbacks.shift()(),o(a)}))}_final(e){let r=()=>{for(;this._progressCallbacks.length!==0;)this._progressCallbacks.shift()();if(!(ho in this)){e();return}if(this[ho].destroyed){e();return}this[ho].end(o=>{o||(this[HC]=this[qC],this.emit("uploadProgress",this.uploadProgress),this[ho].emit("upload-complete")),e(o)})};this.requestInitialized?r():this[MB].push(r)}_destroy(e,r){var o;this[GC]=!0,clearTimeout(this[cle]),ho in this&&(this[kU](),!((o=this[Qk])===null||o===void 0)&&o.complete||this[ho].destroy()),e!==null&&!At.default.undefined(e)&&!(e instanceof ms)&&(e=new ms(e.message,e,this)),r(e)}get _isAboutToError(){return this[GC]}get ip(){var e;return(e=this.socket)===null||e===void 0?void 0:e.remoteAddress}get aborted(){var e,r,o;return((r=(e=this[ho])===null||e===void 0?void 0:e.destroyed)!==null&&r!==void 0?r:this.destroyed)&&!(!((o=this[lle])===null||o===void 0)&&o.complete)}get socket(){var e,r;return(r=(e=this[ho])===null||e===void 0?void 0:e.socket)!==null&&r!==void 0?r:void 0}get downloadProgress(){let e;return this[KC]?e=this[_C]/this[KC]:this[KC]===this[_C]?e=1:e=0,{percent:e,transferred:this[_C],total:this[KC]}}get uploadProgress(){let e;return this[HC]?e=this[qC]/this[HC]:this[HC]===this[qC]?e=1:e=0,{percent:e,transferred:this[qC],total:this[HC]}}get timings(){var e;return(e=this[ho])===null||e===void 0?void 0:e.timings}get isFromCache(){return this[ale]}pipe(e,r){if(this[Ale])throw new Error("Failed to pipe. The response has been emitted already.");return e instanceof DU.ServerResponse&&this[wk].add(e),super.pipe(e,r)}unpipe(e){return e instanceof DU.ServerResponse&&this[wk].delete(e),super.unpipe(e),this}};Nn.default=bk});var UB=_(pc=>{"use strict";var hot=pc&&pc.__createBinding||(Object.create?function(t,e,r,o){o===void 0&&(o=r),Object.defineProperty(t,o,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,o){o===void 0&&(o=r),t[o]=e[r]}),dot=pc&&pc.__exportStar||function(t,e){for(var r in t)r!=="default"&&!Object.prototype.hasOwnProperty.call(e,r)&&hot(e,t,r)};Object.defineProperty(pc,"__esModule",{value:!0});pc.CancelError=pc.ParseError=void 0;var ule=OB(),PU=class extends ule.RequestError{constructor(e,r){let{options:o}=r.request;super(`${e.message} in "${o.url.toString()}"`,e,r.request),this.name="ParseError"}};pc.ParseError=PU;var bU=class extends ule.RequestError{constructor(e){super("Promise was canceled",{},e),this.name="CancelError"}get isCanceled(){return!0}};pc.CancelError=bU;dot(OB(),pc)});var gle=_(FU=>{"use strict";Object.defineProperty(FU,"__esModule",{value:!0});var fle=UB(),mot=(t,e,r,o)=>{let{rawBody:a}=t;try{if(e==="text")return a.toString(o);if(e==="json")return a.length===0?"":r(a.toString());if(e==="buffer")return a;throw new fle.ParseError({message:`Unknown body type '${e}'`,name:"Error"},t)}catch(n){throw new fle.ParseError(n,t)}};FU.default=mot});var RU=_(Np=>{"use strict";var yot=Np&&Np.__createBinding||(Object.create?function(t,e,r,o){o===void 0&&(o=r),Object.defineProperty(t,o,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,o){o===void 0&&(o=r),t[o]=e[r]}),Cot=Np&&Np.__exportStar||function(t,e){for(var r in t)r!=="default"&&!Object.prototype.hasOwnProperty.call(e,r)&&yot(e,t,r)};Object.defineProperty(Np,"__esModule",{value:!0});var Eot=Ie("events"),Iot=tg(),wot=gae(),Fk=UB(),ple=gle(),hle=OB(),Bot=hU(),Qot=wU(),dle=BU(),vot=["request","response","redirect","uploadProgress","downloadProgress"];function mle(t){let e,r,o=new Eot.EventEmitter,a=new wot((c,f,g)=>{let p=E=>{let B=new hle.default(void 0,t);B.retryCount=E,B._noPipe=!0,g(()=>B.destroy()),g.shouldReject=!1,g(()=>f(new Fk.CancelError(B))),e=B,B.once("response",async C=>{var N;if(C.retryCount=E,C.request.aborted)return;let U;try{U=await Qot.default(B),C.rawBody=U}catch{return}if(B._isAboutToError)return;let H=((N=C.headers["content-encoding"])!==null&&N!==void 0?N:"").toLowerCase(),X=["gzip","deflate","br"].includes(H),{options:ie}=B;if(X&&!ie.decompress)C.body=U;else try{C.body=ple.default(C,ie.responseType,ie.parseJson,ie.encoding)}catch(fe){if(C.body=U.toString(),dle.isResponseOk(C)){B._beforeError(fe);return}}try{for(let[fe,ye]of ie.hooks.afterResponse.entries())C=await ye(C,async Qe=>{let Pe=hle.default.normalizeArguments(void 0,{...Qe,retry:{calculateDelay:()=>0},throwHttpErrors:!1,resolveBodyOnly:!1},ie);Pe.hooks.afterResponse=Pe.hooks.afterResponse.slice(0,fe);for(let Ee of Pe.hooks.beforeRetry)await Ee(Pe);let pe=mle(Pe);return g(()=>{pe.catch(()=>{}),pe.cancel()}),pe})}catch(fe){B._beforeError(new Fk.RequestError(fe.message,fe,B));return}if(!dle.isResponseOk(C)){B._beforeError(new Fk.HTTPError(C));return}r=C,c(B.options.resolveBodyOnly?C.body:C)});let Q=C=>{if(a.isCanceled)return;let{options:N}=B;if(C instanceof Fk.HTTPError&&!N.throwHttpErrors){let{response:U}=C;c(B.options.resolveBodyOnly?U.body:U);return}f(C)};B.once("error",Q);let x=B.options.body;B.once("retry",(C,N)=>{var U,H;if(x===((U=N.request)===null||U===void 0?void 0:U.options.body)&&Iot.default.nodeStream((H=N.request)===null||H===void 0?void 0:H.options.body)){Q(N);return}p(C)}),Bot.default(B,o,vot)};p(0)});a.on=(c,f)=>(o.on(c,f),a);let n=c=>{let f=(async()=>{await a;let{options:g}=r.request;return ple.default(r,c,g.parseJson,g.encoding)})();return Object.defineProperties(f,Object.getOwnPropertyDescriptors(a)),f};return a.json=()=>{let{headers:c}=e.options;return!e.writableFinished&&c.accept===void 0&&(c.accept="application/json"),n("json")},a.buffer=()=>n("buffer"),a.text=()=>n("text"),a}Np.default=mle;Cot(UB(),Np)});var yle=_(TU=>{"use strict";Object.defineProperty(TU,"__esModule",{value:!0});var Dot=UB();function Sot(t,...e){let r=(async()=>{if(t instanceof Dot.RequestError)try{for(let a of e)if(a)for(let n of a)t=await n(t)}catch(a){t=a}throw t})(),o=()=>r;return r.json=o,r.text=o,r.buffer=o,r.on=o,r}TU.default=Sot});var Ile=_(NU=>{"use strict";Object.defineProperty(NU,"__esModule",{value:!0});var Cle=tg();function Ele(t){for(let e of Object.values(t))(Cle.default.plainObject(e)||Cle.default.array(e))&&Ele(e);return Object.freeze(t)}NU.default=Ele});var Ble=_(wle=>{"use strict";Object.defineProperty(wle,"__esModule",{value:!0})});var MU=_(vl=>{"use strict";var kot=vl&&vl.__createBinding||(Object.create?function(t,e,r,o){o===void 0&&(o=r),Object.defineProperty(t,o,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,o){o===void 0&&(o=r),t[o]=e[r]}),xot=vl&&vl.__exportStar||function(t,e){for(var r in t)r!=="default"&&!Object.prototype.hasOwnProperty.call(e,r)&&kot(e,t,r)};Object.defineProperty(vl,"__esModule",{value:!0});vl.defaultHandler=void 0;var Qle=tg(),Ql=RU(),Pot=yle(),Tk=OB(),bot=Ile(),Fot={RequestError:Ql.RequestError,CacheError:Ql.CacheError,ReadError:Ql.ReadError,HTTPError:Ql.HTTPError,MaxRedirectsError:Ql.MaxRedirectsError,TimeoutError:Ql.TimeoutError,ParseError:Ql.ParseError,CancelError:Ql.CancelError,UnsupportedProtocolError:Ql.UnsupportedProtocolError,UploadError:Ql.UploadError},Rot=async t=>new Promise(e=>{setTimeout(e,t)}),{normalizeArguments:Rk}=Tk.default,vle=(...t)=>{let e;for(let r of t)e=Rk(void 0,r,e);return e},Tot=t=>t.isStream?new Tk.default(void 0,t):Ql.default(t),Not=t=>"defaults"in t&&"options"in t.defaults,Mot=["get","post","put","patch","head","delete"];vl.defaultHandler=(t,e)=>e(t);var Dle=(t,e)=>{if(t)for(let r of t)r(e)},Sle=t=>{t._rawHandlers=t.handlers,t.handlers=t.handlers.map(o=>(a,n)=>{let c,f=o(a,g=>(c=n(g),c));if(f!==c&&!a.isStream&&c){let g=f,{then:p,catch:E,finally:B}=g;Object.setPrototypeOf(g,Object.getPrototypeOf(c)),Object.defineProperties(g,Object.getOwnPropertyDescriptors(c)),g.then=p,g.catch=E,g.finally=B}return f});let e=(o,a={},n)=>{var c,f;let g=0,p=E=>t.handlers[g++](E,g===t.handlers.length?Tot:p);if(Qle.default.plainObject(o)){let E={...o,...a};Tk.setNonEnumerableProperties([o,a],E),a=E,o=void 0}try{let E;try{Dle(t.options.hooks.init,a),Dle((c=a.hooks)===null||c===void 0?void 0:c.init,a)}catch(Q){E=Q}let B=Rk(o,a,n??t.options);if(B[Tk.kIsNormalizedAlready]=!0,E)throw new Ql.RequestError(E.message,E,B);return p(B)}catch(E){if(a.isStream)throw E;return Pot.default(E,t.options.hooks.beforeError,(f=a.hooks)===null||f===void 0?void 0:f.beforeError)}};e.extend=(...o)=>{let a=[t.options],n=[...t._rawHandlers],c;for(let f of o)Not(f)?(a.push(f.defaults.options),n.push(...f.defaults._rawHandlers),c=f.defaults.mutableDefaults):(a.push(f),"handlers"in f&&n.push(...f.handlers),c=f.mutableDefaults);return n=n.filter(f=>f!==vl.defaultHandler),n.length===0&&n.push(vl.defaultHandler),Sle({options:vle(...a),handlers:n,mutableDefaults:Boolean(c)})};let r=async function*(o,a){let n=Rk(o,a,t.options);n.resolveBodyOnly=!1;let c=n.pagination;if(!Qle.default.object(c))throw new TypeError("`options.pagination` must be implemented");let f=[],{countLimit:g}=c,p=0;for(;p{let n=[];for await(let c of r(o,a))n.push(c);return n},e.paginate.each=r,e.stream=(o,a)=>e(o,{...a,isStream:!0});for(let o of Mot)e[o]=(a,n)=>e(a,{...n,method:o}),e.stream[o]=(a,n)=>e(a,{...n,method:o,isStream:!0});return Object.assign(e,Fot),Object.defineProperty(e,"defaults",{value:t.mutableDefaults?t:bot.default(t),writable:t.mutableDefaults,configurable:t.mutableDefaults,enumerable:!0}),e.mergeOptions=vle,e};vl.default=Sle;xot(Ble(),vl)});var Ple=_((rg,Nk)=>{"use strict";var Lot=rg&&rg.__createBinding||(Object.create?function(t,e,r,o){o===void 0&&(o=r),Object.defineProperty(t,o,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,o){o===void 0&&(o=r),t[o]=e[r]}),kle=rg&&rg.__exportStar||function(t,e){for(var r in t)r!=="default"&&!Object.prototype.hasOwnProperty.call(e,r)&&Lot(e,t,r)};Object.defineProperty(rg,"__esModule",{value:!0});var Oot=Ie("url"),xle=MU(),Uot={options:{method:"GET",retry:{limit:2,methods:["GET","PUT","HEAD","DELETE","OPTIONS","TRACE"],statusCodes:[408,413,429,500,502,503,504,521,522,524],errorCodes:["ETIMEDOUT","ECONNRESET","EADDRINUSE","ECONNREFUSED","EPIPE","ENOTFOUND","ENETUNREACH","EAI_AGAIN"],maxRetryAfter:void 0,calculateDelay:({computedValue:t})=>t},timeout:{},headers:{"user-agent":"got (https://github.com/sindresorhus/got)"},hooks:{init:[],beforeRequest:[],beforeRedirect:[],beforeRetry:[],beforeError:[],afterResponse:[]},cache:void 0,dnsCache:void 0,decompress:!0,throwHttpErrors:!0,followRedirect:!0,isStream:!1,responseType:"text",resolveBodyOnly:!1,maxRedirects:10,prefixUrl:"",methodRewriting:!0,ignoreInvalidCookies:!1,context:{},http2:!1,allowGetBody:!1,https:void 0,pagination:{transform:t=>t.request.options.responseType==="json"?t.body:JSON.parse(t.body),paginate:t=>{if(!Reflect.has(t.headers,"link"))return!1;let e=t.headers.link.split(","),r;for(let o of e){let a=o.split(";");if(a[1].includes("next")){r=a[0].trimStart().trim(),r=r.slice(1,-1);break}}return r?{url:new Oot.URL(r)}:!1},filter:()=>!0,shouldContinue:()=>!0,countLimit:1/0,backoff:0,requestLimit:1e4,stackAllItems:!0},parseJson:t=>JSON.parse(t),stringifyJson:t=>JSON.stringify(t),cacheOptions:{}},handlers:[xle.defaultHandler],mutableDefaults:!1},LU=xle.default(Uot);rg.default=LU;Nk.exports=LU;Nk.exports.default=LU;Nk.exports.__esModule=!0;kle(MU(),rg);kle(RU(),rg)});var Hn={};tr(Hn,{Method:()=>Lle,del:()=>jot,get:()=>qot,getNetworkSettings:()=>Mle,post:()=>_U,put:()=>Got,request:()=>KB});function Rle(t){let e=new Mk.URL(t),r={host:e.hostname,headers:{}};return e.port&&(r.port=Number(e.port)),e.username&&e.password&&(r.proxyAuth=`${e.username}:${e.password}`),{proxy:r}}async function OU(t){return jf(Fle,t,()=>ge.readFilePromise(t).then(e=>(Fle.set(t,e),e)))}function Hot({statusCode:t,statusMessage:e},r){let o=ar(r,t,Mt.NUMBER),a=`https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/${t}`;return yC(r,`${o}${e?` (${e})`:""}`,a)}async function Lk(t,{configuration:e,customErrorMessage:r}){var o;try{return await t}catch(a){if(a.name!=="HTTPError")throw a;let n=(r==null?void 0:r(a,e))??((o=a.response.body)==null?void 0:o.error);n==null&&(a.message.startsWith("Response code")?n="The remote server failed to provide the requested resource":n=a.message),a.code==="ETIMEDOUT"&&a.event==="socket"&&(n+=`(can be increased via ${ar(e,"httpTimeout",Mt.SETTING)})`);let c=new rr(35,n,f=>{a.response&&f.reportError(35,` ${Cu(e,{label:"Response Code",value:uc(Mt.NO_HINT,Hot(a.response,e))})}`),a.request&&(f.reportError(35,` ${Cu(e,{label:"Request Method",value:uc(Mt.NO_HINT,a.request.options.method)})}`),f.reportError(35,` ${Cu(e,{label:"Request URL",value:uc(Mt.URL,a.request.requestUrl)})}`)),a.request.redirects.length>0&&f.reportError(35,` ${Cu(e,{label:"Request Redirects",value:uc(Mt.NO_HINT,AL(e,a.request.redirects,Mt.URL))})}`),a.request.retryCount===a.request.options.retry.limit&&f.reportError(35,` ${Cu(e,{label:"Request Retry Count",value:uc(Mt.NO_HINT,`${ar(e,a.request.retryCount,Mt.NUMBER)} (can be increased via ${ar(e,"httpRetry",Mt.SETTING)})`)})}`)});throw c.originalError=a,c}}function Mle(t,e){let r=[...e.configuration.get("networkSettings")].sort(([c],[f])=>f.length-c.length),o={enableNetwork:void 0,httpsCaFilePath:void 0,httpProxy:void 0,httpsProxy:void 0,httpsKeyFilePath:void 0,httpsCertFilePath:void 0},a=Object.keys(o),n=typeof t=="string"?new Mk.URL(t):t;for(let[c,f]of r)if(KU.default.isMatch(n.hostname,c))for(let g of a){let p=f.get(g);p!==null&&typeof o[g]>"u"&&(o[g]=p)}for(let c of a)typeof o[c]>"u"&&(o[c]=e.configuration.get(c));return o}async function KB(t,e,{configuration:r,headers:o,jsonRequest:a,jsonResponse:n,method:c="GET"}){let f=async()=>await Yot(t,e,{configuration:r,headers:o,jsonRequest:a,jsonResponse:n,method:c});return await(await r.reduceHook(p=>p.wrapNetworkRequest,f,{target:t,body:e,configuration:r,headers:o,jsonRequest:a,jsonResponse:n,method:c}))()}async function qot(t,{configuration:e,jsonResponse:r,customErrorMessage:o,...a}){let n=jf(ble,t,()=>Lk(KB(t,null,{configuration:e,...a}),{configuration:e,customErrorMessage:o}).then(c=>(ble.set(t,c.body),c.body)));return Buffer.isBuffer(n)===!1&&(n=await n),r?JSON.parse(n.toString()):n}async function Got(t,e,{customErrorMessage:r,...o}){return(await Lk(KB(t,e,{...o,method:"PUT"}),{customErrorMessage:r,configuration:o.configuration})).body}async function _U(t,e,{customErrorMessage:r,...o}){return(await Lk(KB(t,e,{...o,method:"POST"}),{customErrorMessage:r,configuration:o.configuration})).body}async function jot(t,{customErrorMessage:e,...r}){return(await Lk(KB(t,null,{...r,method:"DELETE"}),{customErrorMessage:e,configuration:r.configuration})).body}async function Yot(t,e,{configuration:r,headers:o,jsonRequest:a,jsonResponse:n,method:c="GET"}){let f=typeof t=="string"?new Mk.URL(t):t,g=Mle(f,{configuration:r});if(g.enableNetwork===!1)throw new rr(80,`Request to '${f.href}' has been blocked because of your configuration settings`);if(f.protocol==="http:"&&!KU.default.isMatch(f.hostname,r.get("unsafeHttpWhitelist")))throw new rr(81,`Unsafe http requests must be explicitly whitelisted in your configuration (${f.hostname})`);let E={agent:{http:g.httpProxy?UU.default.httpOverHttp(Rle(g.httpProxy)):Kot,https:g.httpsProxy?UU.default.httpsOverHttp(Rle(g.httpsProxy)):_ot},headers:o,method:c};E.responseType=n?"json":"buffer",e!==null&&(Buffer.isBuffer(e)||!a&&typeof e=="string"?E.body=e:E.json=e);let B=r.get("httpTimeout"),Q=r.get("httpRetry"),x=r.get("enableStrictSsl"),C=g.httpsCaFilePath,N=g.httpsCertFilePath,U=g.httpsKeyFilePath,{default:H}=await Promise.resolve().then(()=>be(Ple())),X=C?await OU(C):void 0,ie=N?await OU(N):void 0,fe=U?await OU(U):void 0,ye=H.extend({timeout:{socket:B},retry:Q,https:{rejectUnauthorized:x,certificateAuthority:X,certificate:ie,key:fe},...E});return r.getLimit("networkConcurrency")(()=>ye(f))}var Tle,Nle,KU,UU,Mk,ble,Fle,Kot,_ot,Lle,HU=Lt(()=>{Ft();Tle=Ie("https"),Nle=Ie("http"),KU=be(pa()),UU=be(Aae()),Mk=Ie("url");wl();El();ml();ble=new Map,Fle=new Map,Kot=new Nle.Agent({keepAlive:!0}),_ot=new Tle.Agent({keepAlive:!0});Lle=(a=>(a.GET="GET",a.PUT="PUT",a.POST="POST",a.DELETE="DELETE",a))(Lle||{})});var jC,YC,Ole=Lt(()=>{Ft();jC=be(Vt());_B();YC=class extends jC.Command{constructor(){super(...arguments);this.cwd=jC.Option.String("--cwd",process.cwd(),{description:"The directory to run the command in"});this.commandName=jC.Option.String();this.args=jC.Option.Proxy()}async execute(){let r=this.args.length>0?`${this.commandName} ${this.args.join(" ")}`:this.commandName;return await WC(r,[],{cwd:me.toPortablePath(this.cwd),stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr})}};YC.usage={description:"run a command using yarn's portable shell",details:` - This command will run a command using Yarn's portable shell. - - Make sure to escape glob patterns, redirections, and other features that might be expanded by your own shell. - - Note: To escape something from Yarn's shell, you might have to escape it twice, the first time from your own shell. - - Note: Don't use this command in Yarn scripts, as Yarn's shell is automatically used. - - For a list of features, visit: https://github.com/yarnpkg/berry/blob/master/packages/yarnpkg-shell/README.md. - `,examples:[["Run a simple command","$0 echo Hello"],["Run a command with a glob pattern","$0 echo '*.js'"],["Run a command with a redirection","$0 echo Hello World '>' hello.txt"],["Run a command with an escaped glob pattern (The double escape is needed in Unix shells)",`$0 echo '"*.js"'`],["Run a command with a variable (Double quotes are needed in Unix shells, to prevent them from expanding the variable)",'$0 "GREETING=Hello echo $GREETING World"']]}});var kA,Ule=Lt(()=>{kA=class extends Error{constructor(e){super(e),this.name="ShellError"}}});var Kk={};tr(Kk,{fastGlobOptions:()=>Hle,isBraceExpansion:()=>qU,isGlobPattern:()=>Wot,match:()=>Jot,micromatchOptions:()=>Uk});function Wot(t){if(!Ok.default.scan(t,Uk).isGlob)return!1;try{Ok.default.parse(t,Uk)}catch{return!1}return!0}function Jot(t,{cwd:e,baseFs:r}){return(0,Kle.default)(t,{...Hle,cwd:me.fromPortablePath(e),fs:Uv(_le.default,new fp(r))})}function qU(t){return Ok.default.scan(t,Uk).isBrace}var Kle,_le,Ok,Uk,Hle,qle=Lt(()=>{Ft();Kle=be(LS()),_le=be(Ie("fs")),Ok=be(pa()),Uk={strictBrackets:!0},Hle={onlyDirectories:!1,onlyFiles:!1}});function GU(){}function jU(){for(let t of om)t.kill()}function Wle(t,e,r,o){return a=>{let n=a[0]instanceof Su.Transform?"pipe":a[0],c=a[1]instanceof Su.Transform?"pipe":a[1],f=a[2]instanceof Su.Transform?"pipe":a[2],g=(0,jle.default)(t,e,{...o,stdio:[n,c,f]});return om.add(g),om.size===1&&(process.on("SIGINT",GU),process.on("SIGTERM",jU)),a[0]instanceof Su.Transform&&a[0].pipe(g.stdin),a[1]instanceof Su.Transform&&g.stdout.pipe(a[1],{end:!1}),a[2]instanceof Su.Transform&&g.stderr.pipe(a[2],{end:!1}),{stdin:g.stdin,promise:new Promise(p=>{g.on("error",E=>{switch(om.delete(g),om.size===0&&(process.off("SIGINT",GU),process.off("SIGTERM",jU)),E.code){case"ENOENT":a[2].write(`command not found: ${t} -`),p(127);break;case"EACCES":a[2].write(`permission denied: ${t} -`),p(128);break;default:a[2].write(`uncaught error: ${E.message} -`),p(1);break}}),g.on("close",E=>{om.delete(g),om.size===0&&(process.off("SIGINT",GU),process.off("SIGTERM",jU)),p(E!==null?E:129)})})}}}function Jle(t){return e=>{let r=e[0]==="pipe"?new Su.PassThrough:e[0];return{stdin:r,promise:Promise.resolve().then(()=>t({stdin:r,stdout:e[1],stderr:e[2]}))}}}function _k(t,e){return JC.start(t,e)}function Gle(t,e=null){let r=new Su.PassThrough,o=new Yle.StringDecoder,a="";return r.on("data",n=>{let c=o.write(n),f;do if(f=c.indexOf(` -`),f!==-1){let g=a+c.substring(0,f);c=c.substring(f+1),a="",t(e!==null?`${e} ${g}`:g)}while(f!==-1);a+=c}),r.on("end",()=>{let n=o.end();n!==""&&t(e!==null?`${e} ${n}`:n)}),r}function Vle(t,{prefix:e}){return{stdout:Gle(r=>t.stdout.write(`${r} -`),t.stdout.isTTY?e:null),stderr:Gle(r=>t.stderr.write(`${r} -`),t.stderr.isTTY?e:null)}}var jle,Su,Yle,om,Dl,YU,JC,WU=Lt(()=>{jle=be(xT()),Su=Ie("stream"),Yle=Ie("string_decoder"),om=new Set;Dl=class{constructor(e){this.stream=e}close(){}get(){return this.stream}},YU=class{constructor(){this.stream=null}close(){if(this.stream===null)throw new Error("Assertion failed: No stream attached");this.stream.end()}attach(e){this.stream=e}get(){if(this.stream===null)throw new Error("Assertion failed: No stream attached");return this.stream}},JC=class{constructor(e,r){this.stdin=null;this.stdout=null;this.stderr=null;this.pipe=null;this.ancestor=e,this.implementation=r}static start(e,{stdin:r,stdout:o,stderr:a}){let n=new JC(null,e);return n.stdin=r,n.stdout=o,n.stderr=a,n}pipeTo(e,r=1){let o=new JC(this,e),a=new YU;return o.pipe=a,o.stdout=this.stdout,o.stderr=this.stderr,(r&1)===1?this.stdout=a:this.ancestor!==null&&(this.stderr=this.ancestor.stdout),(r&2)===2?this.stderr=a:this.ancestor!==null&&(this.stderr=this.ancestor.stderr),o}async exec(){let e=["ignore","ignore","ignore"];if(this.pipe)e[0]="pipe";else{if(this.stdin===null)throw new Error("Assertion failed: No input stream registered");e[0]=this.stdin.get()}let r;if(this.stdout===null)throw new Error("Assertion failed: No output stream registered");r=this.stdout,e[1]=r.get();let o;if(this.stderr===null)throw new Error("Assertion failed: No error stream registered");o=this.stderr,e[2]=o.get();let a=this.implementation(e);return this.pipe&&this.pipe.attach(a.stdin),await a.promise.then(n=>(r.close(),o.close(),n))}async run(){let e=[];for(let o=this;o;o=o.ancestor)e.push(o.exec());return(await Promise.all(e))[0]}}});var jB={};tr(jB,{EntryCommand:()=>YC,ShellError:()=>kA,execute:()=>WC,globUtils:()=>Kk});function zle(t,e,r){let o=new xA.PassThrough({autoDestroy:!0});switch(t){case 0:(e&1)===1&&r.stdin.pipe(o,{end:!1}),(e&2)===2&&r.stdin instanceof xA.Writable&&o.pipe(r.stdin,{end:!1});break;case 1:(e&1)===1&&r.stdout.pipe(o,{end:!1}),(e&2)===2&&o.pipe(r.stdout,{end:!1});break;case 2:(e&1)===1&&r.stderr.pipe(o,{end:!1}),(e&2)===2&&o.pipe(r.stderr,{end:!1});break;default:throw new kA(`Bad file descriptor: "${t}"`)}return o}function qk(t,e={}){let r={...t,...e};return r.environment={...t.environment,...e.environment},r.variables={...t.variables,...e.variables},r}async function Xot(t,e,r){let o=[],a=new xA.PassThrough;return a.on("data",n=>o.push(n)),await Gk(t,e,qk(r,{stdout:a})),Buffer.concat(o).toString().replace(/[\r\n]+$/,"")}async function Xle(t,e,r){let o=t.map(async n=>{let c=await ng(n.args,e,r);return{name:n.name,value:c.join(" ")}});return(await Promise.all(o)).reduce((n,c)=>(n[c.name]=c.value,n),{})}function Hk(t){return t.match(/[^ \r\n\t]+/g)||[]}async function nce(t,e,r,o,a=o){switch(t.name){case"$":o(String(process.pid));break;case"#":o(String(e.args.length));break;case"@":if(t.quoted)for(let n of e.args)a(n);else for(let n of e.args){let c=Hk(n);for(let f=0;f=0&&no.push(n));let a=Number(o.join(" "));return Number.isNaN(a)?HB({type:"variable",name:o.join(" ")},e,r):HB({type:"number",value:a},e,r)}else return Zot[t.type](await HB(t.left,e,r),await HB(t.right,e,r))}async function ng(t,e,r){let o=new Map,a=[],n=[],c=E=>{n.push(E)},f=()=>{n.length>0&&a.push(n.join("")),n=[]},g=E=>{c(E),f()},p=(E,B,Q)=>{let x=JSON.stringify({type:E,fd:B}),C=o.get(x);typeof C>"u"&&o.set(x,C=[]),C.push(Q)};for(let E of t){let B=!1;switch(E.type){case"redirection":{let Q=await ng(E.args,e,r);for(let x of Q)p(E.subtype,E.fd,x)}break;case"argument":for(let Q of E.segments)switch(Q.type){case"text":c(Q.text);break;case"glob":c(Q.pattern),B=!0;break;case"shell":{let x=await Xot(Q.shell,e,r);if(Q.quoted)c(x);else{let C=Hk(x);for(let N=0;N"u")throw new Error("Assertion failed: Expected a glob pattern to have been set");let x=await e.glob.match(Q,{cwd:r.cwd,baseFs:e.baseFs});if(x.length===0){let C=qU(Q)?". Note: Brace expansion of arbitrary strings isn't currently supported. For more details, please read this issue: https://github.com/yarnpkg/berry/issues/22":"";throw new kA(`No matches found: "${Q}"${C}`)}for(let C of x.sort())g(C)}}if(o.size>0){let E=[];for(let[B,Q]of o.entries())E.splice(E.length,0,B,String(Q.length),...Q);a.splice(0,0,"__ysh_set_redirects",...E,"--")}return a}function qB(t,e,r){e.builtins.has(t[0])||(t=["command",...t]);let o=me.fromPortablePath(r.cwd),a=r.environment;typeof a.PWD<"u"&&(a={...a,PWD:o});let[n,...c]=t;if(n==="command")return Wle(c[0],c.slice(1),e,{cwd:o,env:a});let f=e.builtins.get(n);if(typeof f>"u")throw new Error(`Assertion failed: A builtin should exist for "${n}"`);return Jle(async({stdin:g,stdout:p,stderr:E})=>{let{stdin:B,stdout:Q,stderr:x}=r;r.stdin=g,r.stdout=p,r.stderr=E;try{return await f(c,e,r)}finally{r.stdin=B,r.stdout=Q,r.stderr=x}})}function $ot(t,e,r){return o=>{let a=new xA.PassThrough,n=Gk(t,e,qk(r,{stdin:a}));return{stdin:a,promise:n}}}function eat(t,e,r){return o=>{let a=new xA.PassThrough,n=Gk(t,e,r);return{stdin:a,promise:n}}}function Zle(t,e,r,o){if(e.length===0)return t;{let a;do a=String(Math.random());while(Object.prototype.hasOwnProperty.call(o.procedures,a));return o.procedures={...o.procedures},o.procedures[a]=t,qB([...e,"__ysh_run_procedure",a],r,o)}}async function $le(t,e,r){let o=t,a=null,n=null;for(;o;){let c=o.then?{...r}:r,f;switch(o.type){case"command":{let g=await ng(o.args,e,r),p=await Xle(o.envs,e,r);f=o.envs.length?qB(g,e,qk(c,{environment:p})):qB(g,e,c)}break;case"subshell":{let g=await ng(o.args,e,r),p=$ot(o.subshell,e,c);f=Zle(p,g,e,c)}break;case"group":{let g=await ng(o.args,e,r),p=eat(o.group,e,c);f=Zle(p,g,e,c)}break;case"envs":{let g=await Xle(o.envs,e,r);c.environment={...c.environment,...g},f=qB(["true"],e,c)}break}if(typeof f>"u")throw new Error("Assertion failed: An action should have been generated");if(a===null)n=_k(f,{stdin:new Dl(c.stdin),stdout:new Dl(c.stdout),stderr:new Dl(c.stderr)});else{if(n===null)throw new Error("Assertion failed: The execution pipeline should have been setup");switch(a){case"|":n=n.pipeTo(f,1);break;case"|&":n=n.pipeTo(f,3);break}}o.then?(a=o.then.type,o=o.then.chain):o=null}if(n===null)throw new Error("Assertion failed: The execution pipeline should have been setup");return await n.run()}async function tat(t,e,r,{background:o=!1}={}){function a(n){let c=["#2E86AB","#A23B72","#F18F01","#C73E1D","#CCE2A3"],f=c[n%c.length];return ece.default.hex(f)}if(o){let n=r.nextBackgroundJobIndex++,c=a(n),f=`[${n}]`,g=c(f),{stdout:p,stderr:E}=Vle(r,{prefix:g});return r.backgroundJobs.push($le(t,e,qk(r,{stdout:p,stderr:E})).catch(B=>E.write(`${B.message} -`)).finally(()=>{r.stdout.isTTY&&r.stdout.write(`Job ${g}, '${c(Oy(t))}' has ended -`)})),0}return await $le(t,e,r)}async function rat(t,e,r,{background:o=!1}={}){let a,n=f=>{a=f,r.variables["?"]=String(f)},c=async f=>{try{return await tat(f.chain,e,r,{background:o&&typeof f.then>"u"})}catch(g){if(!(g instanceof kA))throw g;return r.stderr.write(`${g.message} -`),1}};for(n(await c(t));t.then;){if(r.exitCode!==null)return r.exitCode;switch(t.then.type){case"&&":a===0&&n(await c(t.then.line));break;case"||":a!==0&&n(await c(t.then.line));break;default:throw new Error(`Assertion failed: Unsupported command type: "${t.then.type}"`)}t=t.then.line}return a}async function Gk(t,e,r){let o=r.backgroundJobs;r.backgroundJobs=[];let a=0;for(let{command:n,type:c}of t){if(a=await rat(n,e,r,{background:c==="&"}),r.exitCode!==null)return r.exitCode;r.variables["?"]=String(a)}return await Promise.all(r.backgroundJobs),r.backgroundJobs=o,a}function ice(t){switch(t.type){case"variable":return t.name==="@"||t.name==="#"||t.name==="*"||Number.isFinite(parseInt(t.name,10))||"defaultValue"in t&&!!t.defaultValue&&t.defaultValue.some(e=>GB(e))||"alternativeValue"in t&&!!t.alternativeValue&&t.alternativeValue.some(e=>GB(e));case"arithmetic":return JU(t.arithmetic);case"shell":return VU(t.shell);default:return!1}}function GB(t){switch(t.type){case"redirection":return t.args.some(e=>GB(e));case"argument":return t.segments.some(e=>ice(e));default:throw new Error(`Assertion failed: Unsupported argument type: "${t.type}"`)}}function JU(t){switch(t.type){case"variable":return ice(t);case"number":return!1;default:return JU(t.left)||JU(t.right)}}function VU(t){return t.some(({command:e})=>{for(;e;){let r=e.chain;for(;r;){let o;switch(r.type){case"subshell":o=VU(r.subshell);break;case"command":o=r.envs.some(a=>a.args.some(n=>GB(n)))||r.args.some(a=>GB(a));break}if(o)return!0;if(!r.then)break;r=r.then.chain}if(!e.then)break;e=e.then.line}return!1})}async function WC(t,e=[],{baseFs:r=new jn,builtins:o={},cwd:a=me.toPortablePath(process.cwd()),env:n=process.env,stdin:c=process.stdin,stdout:f=process.stdout,stderr:g=process.stderr,variables:p={},glob:E=Kk}={}){let B={};for(let[C,N]of Object.entries(n))typeof N<"u"&&(B[C]=N);let Q=new Map(zot);for(let[C,N]of Object.entries(o))Q.set(C,N);c===null&&(c=new xA.PassThrough,c.end());let x=Gv(t,E);if(!VU(x)&&x.length>0&&e.length>0){let{command:C}=x[x.length-1];for(;C.then;)C=C.then.line;let N=C.chain;for(;N.then;)N=N.then.chain;N.type==="command"&&(N.args=N.args.concat(e.map(U=>({type:"argument",segments:[{type:"text",text:U}]}))))}return await Gk(x,{args:e,baseFs:r,builtins:Q,initialStdin:c,initialStdout:f,initialStderr:g,glob:E},{cwd:a,environment:B,exitCode:null,procedures:{},stdin:c,stdout:f,stderr:g,variables:Object.assign({},p,{["?"]:0}),nextBackgroundJobIndex:1,backgroundJobs:[]})}var ece,tce,xA,rce,Vot,zot,Zot,_B=Lt(()=>{Ft();cl();ece=be(eM()),tce=Ie("os"),xA=Ie("stream"),rce=Ie("util");Ole();Ule();qle();WU();WU();Vot=(0,rce.promisify)(setTimeout);zot=new Map([["cd",async([t=(0,tce.homedir)(),...e],r,o)=>{let a=ee.resolve(o.cwd,me.toPortablePath(t));if(!(await r.baseFs.statPromise(a).catch(c=>{throw c.code==="ENOENT"?new kA(`cd: no such file or directory: ${t}`):c})).isDirectory())throw new kA(`cd: not a directory: ${t}`);return o.cwd=a,0}],["pwd",async(t,e,r)=>(r.stdout.write(`${me.fromPortablePath(r.cwd)} -`),0)],[":",async(t,e,r)=>0],["true",async(t,e,r)=>0],["false",async(t,e,r)=>1],["exit",async([t,...e],r,o)=>o.exitCode=parseInt(t??o.variables["?"],10)],["echo",async(t,e,r)=>(r.stdout.write(`${t.join(" ")} -`),0)],["sleep",async([t],e,r)=>{if(typeof t>"u")throw new kA("sleep: missing operand");let o=Number(t);if(Number.isNaN(o))throw new kA(`sleep: invalid time interval '${t}'`);return await Vot(1e3*o,0)}],["__ysh_run_procedure",async(t,e,r)=>{let o=r.procedures[t[0]];return await _k(o,{stdin:new Dl(r.stdin),stdout:new Dl(r.stdout),stderr:new Dl(r.stderr)}).run()}],["__ysh_set_redirects",async(t,e,r)=>{let o=r.stdin,a=r.stdout,n=r.stderr,c=[],f=[],g=[],p=0;for(;t[p]!=="--";){let B=t[p++],{type:Q,fd:x}=JSON.parse(B),C=X=>{switch(x){case null:case 0:c.push(X);break;default:throw new Error(`Unsupported file descriptor: "${x}"`)}},N=X=>{switch(x){case null:case 1:f.push(X);break;case 2:g.push(X);break;default:throw new Error(`Unsupported file descriptor: "${x}"`)}},U=Number(t[p++]),H=p+U;for(let X=p;Xe.baseFs.createReadStream(ee.resolve(r.cwd,me.toPortablePath(t[X]))));break;case"<<<":C(()=>{let ie=new xA.PassThrough;return process.nextTick(()=>{ie.write(`${t[X]} -`),ie.end()}),ie});break;case"<&":C(()=>zle(Number(t[X]),1,r));break;case">":case">>":{let ie=ee.resolve(r.cwd,me.toPortablePath(t[X]));N(ie==="/dev/null"?new xA.Writable({autoDestroy:!0,emitClose:!0,write(fe,ye,Qe){setImmediate(Qe)}}):e.baseFs.createWriteStream(ie,Q===">>"?{flags:"a"}:void 0))}break;case">&":N(zle(Number(t[X]),2,r));break;default:throw new Error(`Assertion failed: Unsupported redirection type: "${Q}"`)}}if(c.length>0){let B=new xA.PassThrough;o=B;let Q=x=>{if(x===c.length)B.end();else{let C=c[x]();C.pipe(B,{end:!1}),C.on("end",()=>{Q(x+1)})}};Q(0)}if(f.length>0){let B=new xA.PassThrough;a=B;for(let Q of f)B.pipe(Q)}if(g.length>0){let B=new xA.PassThrough;n=B;for(let Q of g)B.pipe(Q)}let E=await _k(qB(t.slice(p+1),e,r),{stdin:new Dl(o),stdout:new Dl(a),stderr:new Dl(n)}).run();return await Promise.all(f.map(B=>new Promise((Q,x)=>{B.on("error",C=>{x(C)}),B.on("close",()=>{Q()}),B.end()}))),await Promise.all(g.map(B=>new Promise((Q,x)=>{B.on("error",C=>{x(C)}),B.on("close",()=>{Q()}),B.end()}))),E}]]);Zot={addition:(t,e)=>t+e,subtraction:(t,e)=>t-e,multiplication:(t,e)=>t*e,division:(t,e)=>Math.trunc(t/e)}});var zU=_((EOt,sce)=>{function nat(t,e){for(var r=-1,o=t==null?0:t.length,a=Array(o);++r{var oce=Od(),iat=zU(),sat=lc(),oat=BB(),aat=1/0,ace=oce?oce.prototype:void 0,Ace=ace?ace.toString:void 0;function lce(t){if(typeof t=="string")return t;if(sat(t))return iat(t,lce)+"";if(oat(t))return Ace?Ace.call(t):"";var e=t+"";return e=="0"&&1/t==-aat?"-0":e}cce.exports=lce});var jk=_((wOt,fce)=>{var Aat=uce();function lat(t){return t==null?"":Aat(t)}fce.exports=lat});var XU=_((BOt,gce)=>{function cat(t,e,r){var o=-1,a=t.length;e<0&&(e=-e>a?0:a+e),r=r>a?a:r,r<0&&(r+=a),a=e>r?0:r-e>>>0,e>>>=0;for(var n=Array(a);++o{var uat=XU();function fat(t,e,r){var o=t.length;return r=r===void 0?o:r,!e&&r>=o?t:uat(t,e,r)}pce.exports=fat});var ZU=_((vOt,dce)=>{var gat="\\ud800-\\udfff",pat="\\u0300-\\u036f",hat="\\ufe20-\\ufe2f",dat="\\u20d0-\\u20ff",mat=pat+hat+dat,yat="\\ufe0e\\ufe0f",Cat="\\u200d",Eat=RegExp("["+Cat+gat+mat+yat+"]");function Iat(t){return Eat.test(t)}dce.exports=Iat});var yce=_((DOt,mce)=>{function wat(t){return t.split("")}mce.exports=wat});var Dce=_((SOt,vce)=>{var Cce="\\ud800-\\udfff",Bat="\\u0300-\\u036f",Qat="\\ufe20-\\ufe2f",vat="\\u20d0-\\u20ff",Dat=Bat+Qat+vat,Sat="\\ufe0e\\ufe0f",kat="["+Cce+"]",$U="["+Dat+"]",e3="\\ud83c[\\udffb-\\udfff]",xat="(?:"+$U+"|"+e3+")",Ece="[^"+Cce+"]",Ice="(?:\\ud83c[\\udde6-\\uddff]){2}",wce="[\\ud800-\\udbff][\\udc00-\\udfff]",Pat="\\u200d",Bce=xat+"?",Qce="["+Sat+"]?",bat="(?:"+Pat+"(?:"+[Ece,Ice,wce].join("|")+")"+Qce+Bce+")*",Fat=Qce+Bce+bat,Rat="(?:"+[Ece+$U+"?",$U,Ice,wce,kat].join("|")+")",Tat=RegExp(e3+"(?="+e3+")|"+Rat+Fat,"g");function Nat(t){return t.match(Tat)||[]}vce.exports=Nat});var kce=_((kOt,Sce)=>{var Mat=yce(),Lat=ZU(),Oat=Dce();function Uat(t){return Lat(t)?Oat(t):Mat(t)}Sce.exports=Uat});var Pce=_((xOt,xce)=>{var Kat=hce(),_at=ZU(),Hat=kce(),qat=jk();function Gat(t){return function(e){e=qat(e);var r=_at(e)?Hat(e):void 0,o=r?r[0]:e.charAt(0),a=r?Kat(r,1).join(""):e.slice(1);return o[t]()+a}}xce.exports=Gat});var Fce=_((POt,bce)=>{var jat=Pce(),Yat=jat("toUpperCase");bce.exports=Yat});var t3=_((bOt,Rce)=>{var Wat=jk(),Jat=Fce();function Vat(t){return Jat(Wat(t).toLowerCase())}Rce.exports=Vat});var Tce=_((FOt,Yk)=>{function zat(){var t=0,e=1,r=2,o=3,a=4,n=5,c=6,f=7,g=8,p=9,E=10,B=11,Q=12,x=13,C=14,N=15,U=16,H=17,X=0,ie=1,fe=2,ye=3,Qe=4;function Pe(h,Ke){return 55296<=h.charCodeAt(Ke)&&h.charCodeAt(Ke)<=56319&&56320<=h.charCodeAt(Ke+1)&&h.charCodeAt(Ke+1)<=57343}function pe(h,Ke){Ke===void 0&&(Ke=0);var Ce=h.charCodeAt(Ke);if(55296<=Ce&&Ce<=56319&&Ke=1){var Be=h.charCodeAt(Ke-1),le=Ce;return 55296<=Be&&Be<=56319?(Be-55296)*1024+(le-56320)+65536:le}return Ce}function Ee(h,Ke,Ce){var Be=[h].concat(Ke).concat([Ce]),le=Be[Be.length-2],re=Ce,Se=Be.lastIndexOf(C);if(Se>1&&Be.slice(1,Se).every(function(q){return q==o})&&[o,x,H].indexOf(h)==-1)return fe;var Ue=Be.lastIndexOf(a);if(Ue>0&&Be.slice(1,Ue).every(function(q){return q==a})&&[Q,a].indexOf(le)==-1)return Be.filter(function(q){return q==a}).length%2==1?ye:Qe;if(le==t&&re==e)return X;if(le==r||le==t||le==e)return re==C&&Ke.every(function(q){return q==o})?fe:ie;if(re==r||re==t||re==e)return ie;if(le==c&&(re==c||re==f||re==p||re==E))return X;if((le==p||le==f)&&(re==f||re==g))return X;if((le==E||le==g)&&re==g)return X;if(re==o||re==N)return X;if(re==n)return X;if(le==Q)return X;var dt=Be.indexOf(o)!=-1?Be.lastIndexOf(o)-1:Be.length-2;return[x,H].indexOf(Be[dt])!=-1&&Be.slice(dt+1,-1).every(function(q){return q==o})&&re==C||le==N&&[U,H].indexOf(re)!=-1?X:Ke.indexOf(a)!=-1?fe:le==a&&re==a?X:ie}this.nextBreak=function(h,Ke){if(Ke===void 0&&(Ke=0),Ke<0)return 0;if(Ke>=h.length-1)return h.length;for(var Ce=ke(pe(h,Ke)),Be=[],le=Ke+1;le{var Xat=/^(.*?)(\x1b\[[^m]+m|\x1b\]8;;.*?(\x1b\\|\u0007))/,Wk;function Zat(){if(Wk)return Wk;if(typeof Intl.Segmenter<"u"){let t=new Intl.Segmenter("en",{granularity:"grapheme"});return Wk=e=>Array.from(t.segment(e),({segment:r})=>r)}else{let t=Tce(),e=new t;return Wk=r=>e.splitGraphemes(r)}}Nce.exports=(t,e=0,r=t.length)=>{if(e<0||r<0)throw new RangeError("Negative indices aren't supported by this implementation");let o=r-e,a="",n=0,c=0;for(;t.length>0;){let f=t.match(Xat)||[t,t,void 0],g=Zat()(f[1]),p=Math.min(e-n,g.length);g=g.slice(p);let E=Math.min(o-c,g.length);a+=g.slice(0,E).join(""),n+=p,c+=E,typeof f[2]<"u"&&(a+=f[2]),t=t.slice(f[0].length)}return a}});function _ce(t,{configuration:e,json:r}){if(!e.get("enableMessageNames"))return"";let a=pu(t===null?0:t);return!r&&t===null?ar(e,a,"grey"):a}function r3(t,{configuration:e,json:r}){let o=_ce(t,{configuration:e,json:r});if(!o||t===null||t===0)return o;let a=br[t],n=`https://yarnpkg.com/advanced/error-codes#${o}---${a}`.toLowerCase();return yC(e,o,n)}var Kce,Vk,Lce,Oce,$at,eAt,Jk,Uce,tAt,rAt,zk,nAt,St,Xk=Lt(()=>{Kce=be(Mce()),Vk=be(Qd());ID();wl();El();go();Lce=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"],Oce=80,$at=new Set([13,19]),eAt=5,Jk=Vk.default.GITHUB_ACTIONS?{start:t=>`::group::${t} -`,end:t=>`::endgroup:: -`}:Vk.default.TRAVIS?{start:t=>`travis_fold:start:${t} -`,end:t=>`travis_fold:end:${t} -`}:Vk.default.GITLAB?{start:t=>`section_start:${Math.floor(Date.now()/1e3)}:${t.toLowerCase().replace(/\W+/g,"_")}[collapsed=true]\r\x1B[0K${t} -`,end:t=>`section_end:${Math.floor(Date.now()/1e3)}:${t.toLowerCase().replace(/\W+/g,"_")}\r\x1B[0K`}:null,Uce=new Date,tAt=["iTerm.app","Apple_Terminal"].includes(process.env.TERM_PROGRAM)||!!process.env.WT_SESSION,rAt=t=>t,zk=rAt({patrick:{date:[17,3],chars:["\u{1F340}","\u{1F331}"],size:40},simba:{date:[19,7],chars:["\u{1F981}","\u{1F334}"],size:40},jack:{date:[31,10],chars:["\u{1F383}","\u{1F987}"],size:40},hogsfather:{date:[31,12],chars:["\u{1F389}","\u{1F384}"],size:40},default:{chars:["=","-"],size:80}}),nAt=tAt&&Object.keys(zk).find(t=>{let e=zk[t];return!(e.date&&(e.date[0]!==Uce.getDate()||e.date[1]!==Uce.getMonth()+1))})||"default";St=class extends po{constructor({configuration:r,stdout:o,json:a=!1,includeFooter:n=!0,includeLogs:c=!a,includeInfos:f=c,includeWarnings:g=c,forgettableBufferSize:p=eAt,forgettableNames:E=new Set}){super();this.uncommitted=new Set;this.cacheHitCount=0;this.cacheMissCount=0;this.lastCacheMiss=null;this.warningCount=0;this.errorCount=0;this.startTime=Date.now();this.indent=0;this.progress=new Map;this.progressTime=0;this.progressFrame=0;this.progressTimeout=null;this.progressStyle=null;this.progressMaxScaledSize=null;this.forgettableLines=[];if(AB(this,{configuration:r}),this.configuration=r,this.forgettableBufferSize=p,this.forgettableNames=new Set([...E,...$at]),this.includeFooter=n,this.includeInfos=f,this.includeWarnings=g,this.json=a,this.stdout=o,r.get("enableProgressBars")&&!a&&o.isTTY&&o.columns>22){let B=r.get("progressBarStyle")||nAt;if(!Object.prototype.hasOwnProperty.call(zk,B))throw new Error("Assertion failed: Invalid progress bar style");this.progressStyle=zk[B];let Q=12,x=Math.max(0,Math.min(o.columns-Q,80));this.progressMaxScaledSize=Math.floor(this.progressStyle.size*x/80)}}static async start(r,o){let a=new this(r),n=process.emitWarning;process.emitWarning=(c,f)=>{if(typeof c!="string"){let p=c;c=p.message,f=f??p.name}let g=typeof f<"u"?`${f}: ${c}`:c;a.reportWarning(0,g)};try{await o(a)}catch(c){a.reportExceptionOnce(c)}finally{await a.finalize(),process.emitWarning=n}return a}hasErrors(){return this.errorCount>0}exitCode(){return this.hasErrors()?1:0}reportCacheHit(r){this.cacheHitCount+=1}reportCacheMiss(r,o){this.lastCacheMiss=r,this.cacheMissCount+=1,typeof o<"u"&&!this.configuration.get("preferAggregateCacheInfo")&&this.reportInfo(13,o)}startSectionSync({reportHeader:r,reportFooter:o,skipIfEmpty:a},n){let c={committed:!1,action:()=>{r==null||r()}};a?this.uncommitted.add(c):(c.action(),c.committed=!0);let f=Date.now();try{return n()}catch(g){throw this.reportExceptionOnce(g),g}finally{let g=Date.now();this.uncommitted.delete(c),c.committed&&(o==null||o(g-f))}}async startSectionPromise({reportHeader:r,reportFooter:o,skipIfEmpty:a},n){let c={committed:!1,action:()=>{r==null||r()}};a?this.uncommitted.add(c):(c.action(),c.committed=!0);let f=Date.now();try{return await n()}catch(g){throw this.reportExceptionOnce(g),g}finally{let g=Date.now();this.uncommitted.delete(c),c.committed&&(o==null||o(g-f))}}startTimerImpl(r,o,a){return{cb:typeof o=="function"?o:a,reportHeader:()=>{this.reportInfo(null,`\u250C ${r}`),this.indent+=1,Jk!==null&&!this.json&&this.includeInfos&&this.stdout.write(Jk.start(r))},reportFooter:f=>{this.indent-=1,Jk!==null&&!this.json&&this.includeInfos&&this.stdout.write(Jk.end(r)),this.configuration.get("enableTimers")&&f>200?this.reportInfo(null,`\u2514 Completed in ${ar(this.configuration,f,Mt.DURATION)}`):this.reportInfo(null,"\u2514 Completed")},skipIfEmpty:(typeof o=="function"?{}:o).skipIfEmpty}}startTimerSync(r,o,a){let{cb:n,...c}=this.startTimerImpl(r,o,a);return this.startSectionSync(c,n)}async startTimerPromise(r,o,a){let{cb:n,...c}=this.startTimerImpl(r,o,a);return this.startSectionPromise(c,n)}async startCacheReport(r){let o=this.configuration.get("preferAggregateCacheInfo")?{cacheHitCount:this.cacheHitCount,cacheMissCount:this.cacheMissCount}:null;try{return await r()}catch(a){throw this.reportExceptionOnce(a),a}finally{o!==null&&this.reportCacheChanges(o)}}reportSeparator(){this.indent===0?this.writeLineWithForgettableReset(""):this.reportInfo(null,"")}reportInfo(r,o){if(!this.includeInfos)return;this.commit();let a=this.formatNameWithHyperlink(r),n=a?`${a}: `:"",c=`${ar(this.configuration,"\u27A4","blueBright")} ${n}${this.formatIndent()}${o}`;if(this.json)this.reportJson({type:"info",name:r,displayName:this.formatName(r),indent:this.formatIndent(),data:o});else if(this.forgettableNames.has(r))if(this.forgettableLines.push(c),this.forgettableLines.length>this.forgettableBufferSize){for(;this.forgettableLines.length>this.forgettableBufferSize;)this.forgettableLines.shift();this.writeLines(this.forgettableLines,{truncate:!0})}else this.writeLine(c,{truncate:!0});else this.writeLineWithForgettableReset(c)}reportWarning(r,o){if(this.warningCount+=1,!this.includeWarnings)return;this.commit();let a=this.formatNameWithHyperlink(r),n=a?`${a}: `:"";this.json?this.reportJson({type:"warning",name:r,displayName:this.formatName(r),indent:this.formatIndent(),data:o}):this.writeLineWithForgettableReset(`${ar(this.configuration,"\u27A4","yellowBright")} ${n}${this.formatIndent()}${o}`)}reportError(r,o){this.errorCount+=1,this.commit();let a=this.formatNameWithHyperlink(r),n=a?`${a}: `:"";this.json?this.reportJson({type:"error",name:r,displayName:this.formatName(r),indent:this.formatIndent(),data:o}):this.writeLineWithForgettableReset(`${ar(this.configuration,"\u27A4","redBright")} ${n}${this.formatIndent()}${o}`,{truncate:!1})}reportProgress(r){if(this.progressStyle===null)return{...Promise.resolve(),stop:()=>{}};if(r.hasProgress&&r.hasTitle)throw new Error("Unimplemented: Progress bars can't have both progress and titles.");let o=!1,a=Promise.resolve().then(async()=>{let c={progress:r.hasProgress?0:void 0,title:r.hasTitle?"":void 0};this.progress.set(r,{definition:c,lastScaledSize:r.hasProgress?-1:void 0,lastTitle:void 0}),this.refreshProgress({delta:-1});for await(let{progress:f,title:g}of r)o||c.progress===f&&c.title===g||(c.progress=f,c.title=g,this.refreshProgress());n()}),n=()=>{o||(o=!0,this.progress.delete(r),this.refreshProgress({delta:1}))};return{...a,stop:n}}reportJson(r){this.json&&this.writeLineWithForgettableReset(`${JSON.stringify(r)}`)}async finalize(){if(!this.includeFooter)return;let r="";this.errorCount>0?r="Failed with errors":this.warningCount>0?r="Done with warnings":r="Done";let o=ar(this.configuration,Date.now()-this.startTime,Mt.DURATION),a=this.configuration.get("enableTimers")?`${r} in ${o}`:r;this.errorCount>0?this.reportError(0,a):this.warningCount>0?this.reportWarning(0,a):this.reportInfo(0,a)}writeLine(r,{truncate:o}={}){this.clearProgress({clear:!0}),this.stdout.write(`${this.truncate(r,{truncate:o})} -`),this.writeProgress()}writeLineWithForgettableReset(r,{truncate:o}={}){this.forgettableLines=[],this.writeLine(r,{truncate:o})}writeLines(r,{truncate:o}={}){this.clearProgress({delta:r.length});for(let a of r)this.stdout.write(`${this.truncate(a,{truncate:o})} -`);this.writeProgress()}reportCacheChanges({cacheHitCount:r,cacheMissCount:o}){let a=this.cacheHitCount-r,n=this.cacheMissCount-o;if(a===0&&n===0)return;let c="";this.cacheHitCount>1?c+=`${this.cacheHitCount} packages were already cached`:this.cacheHitCount===1?c+=" - one package was already cached":c+="No packages were cached",this.cacheHitCount>0?this.cacheMissCount>1?c+=`, ${this.cacheMissCount} had to be fetched`:this.cacheMissCount===1&&(c+=`, one had to be fetched (${Yr(this.configuration,this.lastCacheMiss)})`):this.cacheMissCount>1?c+=` - ${this.cacheMissCount} packages had to be fetched`:this.cacheMissCount===1&&(c+=` - one package had to be fetched (${Yr(this.configuration,this.lastCacheMiss)})`),this.reportInfo(13,c)}commit(){let r=this.uncommitted;this.uncommitted=new Set;for(let o of r)o.committed=!0,o.action()}clearProgress({delta:r=0,clear:o=!1}){this.progressStyle!==null&&this.progress.size+r>0&&(this.stdout.write(`\x1B[${this.progress.size+r}A`),(r>0||o)&&this.stdout.write("\x1B[0J"))}writeProgress(){if(this.progressStyle===null||(this.progressTimeout!==null&&clearTimeout(this.progressTimeout),this.progressTimeout=null,this.progress.size===0))return;let r=Date.now();r-this.progressTime>Oce&&(this.progressFrame=(this.progressFrame+1)%Lce.length,this.progressTime=r);let o=Lce[this.progressFrame];for(let a of this.progress.values()){let n="";if(typeof a.lastScaledSize<"u"){let p=this.progressStyle.chars[0].repeat(a.lastScaledSize),E=this.progressStyle.chars[1].repeat(this.progressMaxScaledSize-a.lastScaledSize);n=` ${p}${E}`}let c=this.formatName(null),f=c?`${c}: `:"",g=a.definition.title?` ${a.definition.title}`:"";this.stdout.write(`${ar(this.configuration,"\u27A4","blueBright")} ${f}${o}${n}${g} -`)}this.progressTimeout=setTimeout(()=>{this.refreshProgress({force:!0})},Oce)}refreshProgress({delta:r=0,force:o=!1}={}){let a=!1,n=!1;if(o||this.progress.size===0)a=!0;else for(let c of this.progress.values()){let f=typeof c.definition.progress<"u"?Math.trunc(this.progressMaxScaledSize*c.definition.progress):void 0,g=c.lastScaledSize;c.lastScaledSize=f;let p=c.lastTitle;if(c.lastTitle=c.definition.title,f!==g||(n=p!==c.definition.title)){a=!0;break}}a&&(this.clearProgress({delta:r,clear:n}),this.writeProgress())}truncate(r,{truncate:o}={}){return this.progressStyle===null&&(o=!1),typeof o>"u"&&(o=this.configuration.get("preferTruncatedLines")),o&&(r=(0,Kce.default)(r,0,this.stdout.columns-1)),r}formatName(r){return _ce(r,{configuration:this.configuration,json:this.json})}formatNameWithHyperlink(r){return r3(r,{configuration:this.configuration,json:this.json})}formatIndent(){return"\u2502 ".repeat(this.indent)}}});var ei,n3=Lt(()=>{ei="4.0.0-rc.22.git.20221007.hash-578dbe7f1"});var En={};tr(En,{PackageManager:()=>Gce,detectPackageManager:()=>jce,executePackageAccessibleBinary:()=>Vce,executePackageScript:()=>Zk,executePackageShellcode:()=>s3,executeWorkspaceAccessibleBinary:()=>cAt,executeWorkspaceLifecycleScript:()=>Jce,executeWorkspaceScript:()=>Wce,getPackageAccessibleBinaries:()=>YB,getWorkspaceAccessibleBinaries:()=>i3,hasPackageScript:()=>aAt,hasWorkspaceScript:()=>o3,makeScriptEnv:()=>WB,maybeExecuteWorkspaceLifecycleScript:()=>lAt,prepareExternalProject:()=>oAt});async function ig(t,e,r,o=[]){if(process.platform==="win32"){let a=`@goto #_undefined_# 2>NUL || @title %COMSPEC% & @setlocal & @"${r}" ${o.map(n=>`"${n.replace('"','""')}"`).join(" ")} %*`;await ge.writeFilePromise(ee.format({dir:t,name:e,ext:".cmd"}),a)}console.log("making bin wrapper",e),await ge.writeFilePromise(ee.join(t,e),`#!/bin/sh -exec "${r}" ${o.map(a=>`'${a.replace(/'/g,`'"'"'`)}'`).join(" ")} "$@" -`,{mode:493})}async function jce(t){let e=await Gt.tryFind(t);if(e!=null&&e.packageManager){let o=JS(e.packageManager);if(o!=null&&o.name){let a=`found ${JSON.stringify({packageManager:e.packageManager})} in manifest`,[n]=o.reference.split(".");switch(o.name){case"yarn":return{packageManager:Number(n)===1?"Yarn Classic":"Yarn",reason:a};case"npm":return{packageManager:"npm",reason:a};case"pnpm":return{packageManager:"pnpm",reason:a}}}}let r;try{r=await ge.readFilePromise(ee.join(t,Xr.lockfile),"utf8")}catch{}return r!==void 0?r.match(/^__metadata:$/m)?{packageManager:"Yarn",reason:'"__metadata" key found in yarn.lock'}:{packageManager:"Yarn Classic",reason:'"__metadata" key not found in yarn.lock, must be a Yarn classic lockfile'}:ge.existsSync(ee.join(t,"package-lock.json"))?{packageManager:"npm",reason:`found npm's "package-lock.json" lockfile`}:ge.existsSync(ee.join(t,"pnpm-lock.yaml"))?{packageManager:"pnpm",reason:`found pnpm's "pnpm-lock.yaml" lockfile`}:null}async function WB({project:t,locator:e,binFolder:r,lifecycleScript:o}){let a={};for(let[g,p]of Object.entries(process.env))typeof p<"u"&&(a[g.toLowerCase()!=="path"?g:"PATH"]=p);let n=me.fromPortablePath(r);a.BERRY_BIN_FOLDER=me.fromPortablePath(n);let c=process.env.COREPACK_ROOT?me.join(process.env.COREPACK_ROOT,"dist/yarn.js"):process.argv[1];if(console.log("here 5"),await Promise.all([ig(r,"node",process.execPath),...ei!==null?[ig(r,"run",process.execPath,[c,"run"]),ig(r,"yarn",process.execPath,[c]),ig(r,"yarnpkg",process.execPath,[c]),ig(r,"node-gyp",process.execPath,[c,"run","--top-level","node-gyp"])]:[]]),t&&(a.INIT_CWD=me.cwd(),a.PROJECT_CWD=me.fromPortablePath(t.cwd)),a.PATH=a.PATH?`${n}${me.delimiter}${a.PATH}`:`${n}`,a.npm_execpath=`${n}${me.sep}yarn`,a.npm_node_execpath=`${n}${me.sep}node`,e){if(!t)throw new Error("Assertion failed: Missing project");let g=t.tryWorkspaceByLocator(e),p=g?g.manifest.version??"":t.storedPackages.get(e.locatorHash).version??"";a.npm_package_name=Cn(e),a.npm_package_version=p;let E;if(g)E=g.cwd;else{let B=t.storedPackages.get(e.locatorHash);if(!B)throw new Error(`Package for ${Yr(t.configuration,e)} not found in the project`);let Q=t.configuration.getLinkers(),x={project:t,report:new St({stdout:new Mp.PassThrough,configuration:t.configuration})},C=Q.find(N=>N.supportsPackage(B,x));if(!C)throw new Error(`The package ${Yr(t.configuration,B)} isn't supported by any of the available linkers`);E=await C.findPackageLocation(B,x)}a.npm_package_json=me.fromPortablePath(ee.join(E,Xr.manifest))}let f=ei!==null?`yarn/${ei}`:`yarn/${dC("@yarnpkg/core").version}-core`;return a.npm_config_user_agent=`${f} npm/? node/${process.version} ${process.platform} ${process.arch}`,o&&(a.npm_lifecycle_event=o),t&&await t.configuration.triggerHook(g=>g.setupScriptEnvironment,t,a,async(g,p,E)=>await ig(r,ss(g),p,E)),a}async function oAt(t,e,{configuration:r,report:o,workspace:a=null,locator:n=null}){await sAt(async()=>{await ge.mktempPromise(async c=>{let f=ee.join(c,"pack.log"),g=null,{stdout:p,stderr:E}=r.getSubprocessStreams(f,{prefix:me.fromPortablePath(t),report:o}),B=n&&fc(n)?dB(n):n,Q=B?Cl(B):"an external project";p.write(`Packing ${Q} from sources -`);let x=await jce(t),C;x!==null?(p.write(`Using ${x.packageManager} for bootstrap. Reason: ${x.reason} - -`),C=x.packageManager):(p.write(`No package manager configuration detected; defaulting to Yarn - -`),C="Yarn"),await ge.mktempPromise(async N=>{let U=await WB({binFolder:N}),X=new Map([["Yarn Classic",async()=>{let fe=a!==null?["workspace",a]:[],ye=ee.join(t,Xr.manifest),Qe=await ge.readFilePromise(ye),Pe=await vu(process.execPath,[process.argv[1],"set","version","classic","--only-if-needed","--yarn-path"],{cwd:t,env:U,stdin:g,stdout:p,stderr:E,end:1});if(Pe.code!==0)return Pe.code;await ge.writeFilePromise(ye,Qe),await ge.appendFilePromise(ee.join(t,".npmignore"),`/.yarn -`),p.write(` -`),delete U.NODE_ENV;let pe=await vu("yarn",["install"],{cwd:t,env:U,stdin:g,stdout:p,stderr:E,end:1});if(pe.code!==0)return pe.code;p.write(` -`);let Ee=await vu("yarn",[...fe,"pack","--filename",me.fromPortablePath(e)],{cwd:t,env:U,stdin:g,stdout:p,stderr:E});return Ee.code!==0?Ee.code:0}],["Yarn",async()=>{let fe=a!==null?["workspace",a]:[];U.YARN_ENABLE_INLINE_BUILDS="1";let ye=ee.join(t,Xr.lockfile);await ge.existsPromise(ye)||await ge.writeFilePromise(ye,"");let Qe=await vu("yarn",[...fe,"pack","--install-if-needed","--filename",me.fromPortablePath(e)],{cwd:t,env:U,stdin:g,stdout:p,stderr:E});return Qe.code!==0?Qe.code:0}],["npm",async()=>{if(a!==null){let h=new Mp.PassThrough,Ke=hC(h);h.pipe(p,{end:!1});let Ce=await vu("npm",["--version"],{cwd:t,env:U,stdin:g,stdout:h,stderr:E,end:0});if(h.end(),Ce.code!==0)return p.end(),E.end(),Ce.code;let Be=(await Ke).toString().trim();if(!em(Be,">=7.x")){let le=wu(null,"npm"),re=_n(le,Be),Se=_n(le,">=7.x");throw new Error(`Workspaces aren't supported by ${$n(r,re)}; please upgrade to ${$n(r,Se)} (npm has been detected as the primary package manager for ${ar(r,t,Mt.PATH)})`)}}let fe=a!==null?["--workspace",a]:[];delete U.npm_config_user_agent,delete U.npm_config_production,delete U.NPM_CONFIG_PRODUCTION,delete U.NODE_ENV;let ye=await vu("npm",["install"],{cwd:t,env:U,stdin:g,stdout:p,stderr:E,end:1});if(ye.code!==0)return ye.code;let Qe=new Mp.PassThrough,Pe=hC(Qe);Qe.pipe(p);let pe=await vu("npm",["pack","--silent",...fe],{cwd:t,env:U,stdin:g,stdout:Qe,stderr:E});if(pe.code!==0)return pe.code;let Ee=(await Pe).toString().trim().replace(/^.*\n/s,""),ke=ee.resolve(t,me.toPortablePath(Ee));return await ge.renamePromise(ke,e),0}]]).get(C);if(typeof X>"u")throw new Error("Assertion failed: Unsupported workflow");let ie=await X();if(!(ie===0||typeof ie>"u"))throw ge.detachTemp(c),new rr(58,`Packing the package failed (exit code ${ie}, logs can be found here: ${ar(r,f,Mt.PATH)})`)})})})}async function aAt(t,e,{project:r}){let o=r.tryWorkspaceByLocator(t);if(o!==null)return o3(o,e);let a=r.storedPackages.get(t.locatorHash);if(!a)throw new Error(`Package for ${Yr(r.configuration,t)} not found in the project`);return await ll.openPromise(async n=>{let c=r.configuration,f=r.configuration.getLinkers(),g={project:r,report:new St({stdout:new Mp.PassThrough,configuration:c})},p=f.find(x=>x.supportsPackage(a,g));if(!p)throw new Error(`The package ${Yr(r.configuration,a)} isn't supported by any of the available linkers`);let E=await p.findPackageLocation(a,g),B=new Qn(E,{baseFs:n});return(await Gt.find(Bt.dot,{baseFs:B})).scripts.has(e)})}async function Zk(t,e,r,{cwd:o,project:a,stdin:n,stdout:c,stderr:f}){return console.log("here in executePackageScript"),await ge.mktempPromise(async g=>{let{manifest:p,env:E,cwd:B}=await Yce(t,{project:a,binFolder:g,cwd:o,lifecycleScript:e}),Q=p.scripts.get(e);if(typeof Q>"u")return 1;let x=async()=>await WC(Q,r,{cwd:B,env:E,stdin:n,stdout:c,stderr:f});return await(await a.configuration.reduceHook(N=>N.wrapScriptExecution,x,a,t,e,{script:Q,args:r,cwd:B,env:E,stdin:n,stdout:c,stderr:f}))()})}async function s3(t,e,r,{cwd:o,project:a,stdin:n,stdout:c,stderr:f}){return await ge.mktempPromise(async g=>{let{env:p,cwd:E}=await Yce(t,{project:a,binFolder:g,cwd:o});return await WC(e,r,{cwd:E,env:p,stdin:n,stdout:c,stderr:f})})}async function AAt(t,{binFolder:e,cwd:r,lifecycleScript:o}){let a=await WB({project:t.project,locator:t.anchoredLocator,binFolder:e,lifecycleScript:o});return console.log("here 2",await i3(t)),await Promise.all(Array.from(await i3(t),([n,[,c]])=>ig(e,ss(n),process.execPath,[c]))),typeof r>"u"&&(r=ee.dirname(await ge.realpathPromise(ee.join(t.cwd,"package.json")))),{manifest:t.manifest,binFolder:e,env:a,cwd:r}}async function Yce(t,{project:e,binFolder:r,cwd:o,lifecycleScript:a}){let n=e.tryWorkspaceByLocator(t);if(n!==null)return AAt(n,{binFolder:r,cwd:o,lifecycleScript:a});let c=e.storedPackages.get(t.locatorHash);if(!c)throw new Error(`Package for ${Yr(e.configuration,t)} not found in the project`);return await ll.openPromise(async f=>{let g=e.configuration,p=e.configuration.getLinkers(),E={project:e,report:new St({stdout:new Mp.PassThrough,configuration:g})},B=p.find(U=>U.supportsPackage(c,E));if(!B)throw new Error(`The package ${Yr(e.configuration,c)} isn't supported by any of the available linkers`);let Q=await WB({project:e,locator:t,binFolder:r,lifecycleScript:a});console.log("here 1",await YB(t,{project:e})),await Promise.all(Array.from(await YB(t,{project:e}),([U,[,H]])=>ig(r,ss(U),process.execPath,[H])));let x=await B.findPackageLocation(c,E),C=new Qn(x,{baseFs:f}),N=await Gt.find(Bt.dot,{baseFs:C});return typeof o>"u"&&(o=x),{manifest:N,binFolder:r,env:Q,cwd:o}})}async function Wce(t,e,r,{cwd:o,stdin:a,stdout:n,stderr:c}){return await Zk(t.anchoredLocator,e,r,{cwd:o,project:t.project,stdin:a,stdout:n,stderr:c})}function o3(t,e){return t.manifest.scripts.has(e)}async function Jce(t,e,{cwd:r,report:o}){let{configuration:a}=t.project,n=null;await ge.mktempPromise(async c=>{let f=ee.join(c,`${e}.log`),g=`# This file contains the result of Yarn calling the "${e}" lifecycle script inside a workspace ("${me.fromPortablePath(t.cwd)}") -`,{stdout:p,stderr:E}=a.getSubprocessStreams(f,{report:o,prefix:Yr(a,t.anchoredLocator),header:g});o.reportInfo(36,`Calling the "${e}" lifecycle script`);let B=await Wce(t,e,[],{cwd:r,stdin:n,stdout:p,stderr:E});if(p.end(),E.end(),B!==0)throw ge.detachTemp(c),new rr(36,`${(0,Hce.default)(e)} script failed (exit code ${ar(a,B,Mt.NUMBER)}, logs can be found here: ${ar(a,f,Mt.PATH)}); run ${ar(a,`yarn ${e}`,Mt.CODE)} to investigate`)})}async function lAt(t,e,r){o3(t,e)&&await Jce(t,e,r)}async function YB(t,{project:e}){let r=e.configuration,o=new Map,a=e.storedPackages.get(t.locatorHash);if(!a)throw new Error(`Package for ${Yr(r,t)} not found in the project`);let n=new Mp.Writable,c=r.getLinkers(),f={project:e,report:new St({configuration:r,stdout:n})},g=new Set([t.locatorHash]);for(let E of a.dependencies.values()){let B=e.storedResolutions.get(E.descriptorHash);if(!B)throw new Error(`Assertion failed: The resolution (${$n(r,E)}) should have been registered`);g.add(B)}let p=await Promise.all(Array.from(g,async E=>{let B=e.storedPackages.get(E);if(!B)throw new Error(`Assertion failed: The package (${E}) should have been registered`);if(B.bin.size===0)return yu.skip;let Q=c.find(C=>C.supportsPackage(B,f));if(!Q)return yu.skip;let x=null;try{x=await Q.findPackageLocation(B,f)}catch(C){if(C.code==="LOCATOR_NOT_INSTALLED")return yu.skip;throw C}return{dependency:B,packageLocation:x}}));for(let E of p){if(E===yu.skip)continue;let{dependency:B,packageLocation:Q}=E;for(let[x,C]of B.bin)o.set(x,[B,me.fromPortablePath(ee.resolve(Q,C))])}return o}async function i3(t){return await YB(t.anchoredLocator,{project:t.project})}async function Vce(t,e,r,{cwd:o,project:a,stdin:n,stdout:c,stderr:f,nodeArgs:g=[],packageAccessibleBinaries:p}){p??(p=await YB(t,{project:a}));let E=p.get(e);if(!E)throw new Error(`Binary not found (${e}) for ${Yr(a.configuration,t)}`);return await ge.mktempPromise(async B=>{let[,Q]=E,x=await WB({project:a,locator:t,binFolder:B});console.log("here 3"),await Promise.all(Array.from(p,([N,[,U]])=>ig(x.BERRY_BIN_FOLDER,ss(N),process.execPath,[U])));let C;try{C=await vu(process.execPath,[...g,Q,...r],{cwd:o,env:x,stdin:n,stdout:c,stderr:f})}finally{await ge.removePromise(x.BERRY_BIN_FOLDER)}return C.code})}async function cAt(t,e,r,{cwd:o,stdin:a,stdout:n,stderr:c,packageAccessibleBinaries:f}){return await Vce(t.anchoredLocator,e,r,{project:t.project,cwd:o,stdin:a,stdout:n,stderr:c,packageAccessibleBinaries:f})}var Hce,qce,Mp,Gce,iAt,sAt,a3=Lt(()=>{Ft();Ft();oc();_B();Hce=be(t3()),qce=be(kd()),Mp=Ie("stream");kC();wl();Xk();n3();v4();El();ml();kp();go();Gce=(a=>(a.Yarn1="Yarn Classic",a.Yarn2="Yarn",a.Npm="npm",a.Pnpm="pnpm",a))(Gce||{});iAt=2,sAt=(0,qce.default)(iAt)});var VC=_(($Ot,Xce)=>{"use strict";var zce=new Map([["C","cwd"],["f","file"],["z","gzip"],["P","preservePaths"],["U","unlink"],["strip-components","strip"],["stripComponents","strip"],["keep-newer","newer"],["keepNewer","newer"],["keep-newer-files","newer"],["keepNewerFiles","newer"],["k","keep"],["keep-existing","keep"],["keepExisting","keep"],["m","noMtime"],["no-mtime","noMtime"],["p","preserveOwner"],["L","follow"],["h","follow"]]);Xce.exports=t=>t?Object.keys(t).map(e=>[zce.has(e)?zce.get(e):e,t[e]]).reduce((e,r)=>(e[r[0]]=r[1],e),Object.create(null)):{}});var XC=_((e4t,oue)=>{"use strict";var Zce=typeof process=="object"&&process?process:{stdout:null,stderr:null},uAt=Ie("events"),$ce=Ie("stream"),eue=Ie("string_decoder").StringDecoder,sg=Symbol("EOF"),og=Symbol("maybeEmitEnd"),Lp=Symbol("emittedEnd"),$k=Symbol("emittingEnd"),JB=Symbol("emittedError"),ex=Symbol("closed"),tue=Symbol("read"),tx=Symbol("flush"),rue=Symbol("flushChunk"),Za=Symbol("encoding"),ag=Symbol("decoder"),rx=Symbol("flowing"),VB=Symbol("paused"),zC=Symbol("resume"),zs=Symbol("bufferLength"),A3=Symbol("bufferPush"),l3=Symbol("bufferShift"),Wo=Symbol("objectMode"),Jo=Symbol("destroyed"),c3=Symbol("emitData"),nue=Symbol("emitEnd"),u3=Symbol("emitEnd2"),Ag=Symbol("async"),zB=t=>Promise.resolve().then(t),iue=global._MP_NO_ITERATOR_SYMBOLS_!=="1",fAt=iue&&Symbol.asyncIterator||Symbol("asyncIterator not implemented"),gAt=iue&&Symbol.iterator||Symbol("iterator not implemented"),pAt=t=>t==="end"||t==="finish"||t==="prefinish",hAt=t=>t instanceof ArrayBuffer||typeof t=="object"&&t.constructor&&t.constructor.name==="ArrayBuffer"&&t.byteLength>=0,dAt=t=>!Buffer.isBuffer(t)&&ArrayBuffer.isView(t),nx=class{constructor(e,r,o){this.src=e,this.dest=r,this.opts=o,this.ondrain=()=>e[zC](),r.on("drain",this.ondrain)}unpipe(){this.dest.removeListener("drain",this.ondrain)}proxyErrors(){}end(){this.unpipe(),this.opts.end&&this.dest.end()}},f3=class extends nx{unpipe(){this.src.removeListener("error",this.proxyErrors),super.unpipe()}constructor(e,r,o){super(e,r,o),this.proxyErrors=a=>r.emit("error",a),e.on("error",this.proxyErrors)}};oue.exports=class sue extends $ce{constructor(e){super(),this[rx]=!1,this[VB]=!1,this.pipes=[],this.buffer=[],this[Wo]=e&&e.objectMode||!1,this[Wo]?this[Za]=null:this[Za]=e&&e.encoding||null,this[Za]==="buffer"&&(this[Za]=null),this[Ag]=e&&!!e.async||!1,this[ag]=this[Za]?new eue(this[Za]):null,this[sg]=!1,this[Lp]=!1,this[$k]=!1,this[ex]=!1,this[JB]=null,this.writable=!0,this.readable=!0,this[zs]=0,this[Jo]=!1}get bufferLength(){return this[zs]}get encoding(){return this[Za]}set encoding(e){if(this[Wo])throw new Error("cannot set encoding in objectMode");if(this[Za]&&e!==this[Za]&&(this[ag]&&this[ag].lastNeed||this[zs]))throw new Error("cannot change encoding");this[Za]!==e&&(this[ag]=e?new eue(e):null,this.buffer.length&&(this.buffer=this.buffer.map(r=>this[ag].write(r)))),this[Za]=e}setEncoding(e){this.encoding=e}get objectMode(){return this[Wo]}set objectMode(e){this[Wo]=this[Wo]||!!e}get async(){return this[Ag]}set async(e){this[Ag]=this[Ag]||!!e}write(e,r,o){if(this[sg])throw new Error("write after end");if(this[Jo])return this.emit("error",Object.assign(new Error("Cannot call write after a stream was destroyed"),{code:"ERR_STREAM_DESTROYED"})),!0;typeof r=="function"&&(o=r,r="utf8"),r||(r="utf8");let a=this[Ag]?zB:n=>n();return!this[Wo]&&!Buffer.isBuffer(e)&&(dAt(e)?e=Buffer.from(e.buffer,e.byteOffset,e.byteLength):hAt(e)?e=Buffer.from(e):typeof e!="string"&&(this.objectMode=!0)),this[Wo]?(this.flowing&&this[zs]!==0&&this[tx](!0),this.flowing?this.emit("data",e):this[A3](e),this[zs]!==0&&this.emit("readable"),o&&a(o),this.flowing):e.length?(typeof e=="string"&&!(r===this[Za]&&!this[ag].lastNeed)&&(e=Buffer.from(e,r)),Buffer.isBuffer(e)&&this[Za]&&(e=this[ag].write(e)),this.flowing&&this[zs]!==0&&this[tx](!0),this.flowing?this.emit("data",e):this[A3](e),this[zs]!==0&&this.emit("readable"),o&&a(o),this.flowing):(this[zs]!==0&&this.emit("readable"),o&&a(o),this.flowing)}read(e){if(this[Jo])return null;if(this[zs]===0||e===0||e>this[zs])return this[og](),null;this[Wo]&&(e=null),this.buffer.length>1&&!this[Wo]&&(this.encoding?this.buffer=[this.buffer.join("")]:this.buffer=[Buffer.concat(this.buffer,this[zs])]);let r=this[tue](e||null,this.buffer[0]);return this[og](),r}[tue](e,r){return e===r.length||e===null?this[l3]():(this.buffer[0]=r.slice(e),r=r.slice(0,e),this[zs]-=e),this.emit("data",r),!this.buffer.length&&!this[sg]&&this.emit("drain"),r}end(e,r,o){return typeof e=="function"&&(o=e,e=null),typeof r=="function"&&(o=r,r="utf8"),e&&this.write(e,r),o&&this.once("end",o),this[sg]=!0,this.writable=!1,(this.flowing||!this[VB])&&this[og](),this}[zC](){this[Jo]||(this[VB]=!1,this[rx]=!0,this.emit("resume"),this.buffer.length?this[tx]():this[sg]?this[og]():this.emit("drain"))}resume(){return this[zC]()}pause(){this[rx]=!1,this[VB]=!0}get destroyed(){return this[Jo]}get flowing(){return this[rx]}get paused(){return this[VB]}[A3](e){this[Wo]?this[zs]+=1:this[zs]+=e.length,this.buffer.push(e)}[l3](){return this.buffer.length&&(this[Wo]?this[zs]-=1:this[zs]-=this.buffer[0].length),this.buffer.shift()}[tx](e){do;while(this[rue](this[l3]()));!e&&!this.buffer.length&&!this[sg]&&this.emit("drain")}[rue](e){return e?(this.emit("data",e),this.flowing):!1}pipe(e,r){if(this[Jo])return;let o=this[Lp];return r=r||{},e===Zce.stdout||e===Zce.stderr?r.end=!1:r.end=r.end!==!1,r.proxyErrors=!!r.proxyErrors,o?r.end&&e.end():(this.pipes.push(r.proxyErrors?new f3(this,e,r):new nx(this,e,r)),this[Ag]?zB(()=>this[zC]()):this[zC]()),e}unpipe(e){let r=this.pipes.find(o=>o.dest===e);r&&(this.pipes.splice(this.pipes.indexOf(r),1),r.unpipe())}addListener(e,r){return this.on(e,r)}on(e,r){let o=super.on(e,r);return e==="data"&&!this.pipes.length&&!this.flowing?this[zC]():e==="readable"&&this[zs]!==0?super.emit("readable"):pAt(e)&&this[Lp]?(super.emit(e),this.removeAllListeners(e)):e==="error"&&this[JB]&&(this[Ag]?zB(()=>r.call(this,this[JB])):r.call(this,this[JB])),o}get emittedEnd(){return this[Lp]}[og](){!this[$k]&&!this[Lp]&&!this[Jo]&&this.buffer.length===0&&this[sg]&&(this[$k]=!0,this.emit("end"),this.emit("prefinish"),this.emit("finish"),this[ex]&&this.emit("close"),this[$k]=!1)}emit(e,r,...o){if(e!=="error"&&e!=="close"&&e!==Jo&&this[Jo])return;if(e==="data")return r?this[Ag]?zB(()=>this[c3](r)):this[c3](r):!1;if(e==="end")return this[nue]();if(e==="close"){if(this[ex]=!0,!this[Lp]&&!this[Jo])return;let n=super.emit("close");return this.removeAllListeners("close"),n}else if(e==="error"){this[JB]=r;let n=super.emit("error",r);return this[og](),n}else if(e==="resume"){let n=super.emit("resume");return this[og](),n}else if(e==="finish"||e==="prefinish"){let n=super.emit(e);return this.removeAllListeners(e),n}let a=super.emit(e,r,...o);return this[og](),a}[c3](e){for(let o of this.pipes)o.dest.write(e)===!1&&this.pause();let r=super.emit("data",e);return this[og](),r}[nue](){this[Lp]||(this[Lp]=!0,this.readable=!1,this[Ag]?zB(()=>this[u3]()):this[u3]())}[u3](){if(this[ag]){let r=this[ag].end();if(r){for(let o of this.pipes)o.dest.write(r);super.emit("data",r)}}for(let r of this.pipes)r.end();let e=super.emit("end");return this.removeAllListeners("end"),e}collect(){let e=[];this[Wo]||(e.dataLength=0);let r=this.promise();return this.on("data",o=>{e.push(o),this[Wo]||(e.dataLength+=o.length)}),r.then(()=>e)}concat(){return this[Wo]?Promise.reject(new Error("cannot concat in objectMode")):this.collect().then(e=>this[Wo]?Promise.reject(new Error("cannot concat in objectMode")):this[Za]?e.join(""):Buffer.concat(e,e.dataLength))}promise(){return new Promise((e,r)=>{this.on(Jo,()=>r(new Error("stream destroyed"))),this.on("error",o=>r(o)),this.on("end",()=>e())})}[fAt](){return{next:()=>{let r=this.read();if(r!==null)return Promise.resolve({done:!1,value:r});if(this[sg])return Promise.resolve({done:!0});let o=null,a=null,n=p=>{this.removeListener("data",c),this.removeListener("end",f),a(p)},c=p=>{this.removeListener("error",n),this.removeListener("end",f),this.pause(),o({value:p,done:!!this[sg]})},f=()=>{this.removeListener("error",n),this.removeListener("data",c),o({done:!0})},g=()=>n(new Error("stream destroyed"));return new Promise((p,E)=>{a=E,o=p,this.once(Jo,g),this.once("error",n),this.once("end",f),this.once("data",c)})}}}[gAt](){return{next:()=>{let r=this.read();return{value:r,done:r===null}}}}destroy(e){return this[Jo]?(e?this.emit("error",e):this.emit(Jo),this):(this[Jo]=!0,this.buffer.length=0,this[zs]=0,typeof this.close=="function"&&!this[ex]&&this.close(),e?this.emit("error",e):this.emit(Jo),this)}static isStream(e){return!!e&&(e instanceof sue||e instanceof $ce||e instanceof uAt&&(typeof e.pipe=="function"||typeof e.write=="function"&&typeof e.end=="function"))}}});var Aue=_((t4t,aue)=>{var mAt=Ie("zlib").constants||{ZLIB_VERNUM:4736};aue.exports=Object.freeze(Object.assign(Object.create(null),{Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_VERSION_ERROR:-6,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,DEFLATE:1,INFLATE:2,GZIP:3,GUNZIP:4,DEFLATERAW:5,INFLATERAW:6,UNZIP:7,BROTLI_DECODE:8,BROTLI_ENCODE:9,Z_MIN_WINDOWBITS:8,Z_MAX_WINDOWBITS:15,Z_DEFAULT_WINDOWBITS:15,Z_MIN_CHUNK:64,Z_MAX_CHUNK:1/0,Z_DEFAULT_CHUNK:16384,Z_MIN_MEMLEVEL:1,Z_MAX_MEMLEVEL:9,Z_DEFAULT_MEMLEVEL:8,Z_MIN_LEVEL:-1,Z_MAX_LEVEL:9,Z_DEFAULT_LEVEL:-1,BROTLI_OPERATION_PROCESS:0,BROTLI_OPERATION_FLUSH:1,BROTLI_OPERATION_FINISH:2,BROTLI_OPERATION_EMIT_METADATA:3,BROTLI_MODE_GENERIC:0,BROTLI_MODE_TEXT:1,BROTLI_MODE_FONT:2,BROTLI_DEFAULT_MODE:0,BROTLI_MIN_QUALITY:0,BROTLI_MAX_QUALITY:11,BROTLI_DEFAULT_QUALITY:11,BROTLI_MIN_WINDOW_BITS:10,BROTLI_MAX_WINDOW_BITS:24,BROTLI_LARGE_MAX_WINDOW_BITS:30,BROTLI_DEFAULT_WINDOW:22,BROTLI_MIN_INPUT_BLOCK_BITS:16,BROTLI_MAX_INPUT_BLOCK_BITS:24,BROTLI_PARAM_MODE:0,BROTLI_PARAM_QUALITY:1,BROTLI_PARAM_LGWIN:2,BROTLI_PARAM_LGBLOCK:3,BROTLI_PARAM_DISABLE_LITERAL_CONTEXT_MODELING:4,BROTLI_PARAM_SIZE_HINT:5,BROTLI_PARAM_LARGE_WINDOW:6,BROTLI_PARAM_NPOSTFIX:7,BROTLI_PARAM_NDIRECT:8,BROTLI_DECODER_RESULT_ERROR:0,BROTLI_DECODER_RESULT_SUCCESS:1,BROTLI_DECODER_RESULT_NEEDS_MORE_INPUT:2,BROTLI_DECODER_RESULT_NEEDS_MORE_OUTPUT:3,BROTLI_DECODER_PARAM_DISABLE_RING_BUFFER_REALLOCATION:0,BROTLI_DECODER_PARAM_LARGE_WINDOW:1,BROTLI_DECODER_NO_ERROR:0,BROTLI_DECODER_SUCCESS:1,BROTLI_DECODER_NEEDS_MORE_INPUT:2,BROTLI_DECODER_NEEDS_MORE_OUTPUT:3,BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_NIBBLE:-1,BROTLI_DECODER_ERROR_FORMAT_RESERVED:-2,BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_META_NIBBLE:-3,BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_ALPHABET:-4,BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_SAME:-5,BROTLI_DECODER_ERROR_FORMAT_CL_SPACE:-6,BROTLI_DECODER_ERROR_FORMAT_HUFFMAN_SPACE:-7,BROTLI_DECODER_ERROR_FORMAT_CONTEXT_MAP_REPEAT:-8,BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_1:-9,BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_2:-10,BROTLI_DECODER_ERROR_FORMAT_TRANSFORM:-11,BROTLI_DECODER_ERROR_FORMAT_DICTIONARY:-12,BROTLI_DECODER_ERROR_FORMAT_WINDOW_BITS:-13,BROTLI_DECODER_ERROR_FORMAT_PADDING_1:-14,BROTLI_DECODER_ERROR_FORMAT_PADDING_2:-15,BROTLI_DECODER_ERROR_FORMAT_DISTANCE:-16,BROTLI_DECODER_ERROR_DICTIONARY_NOT_SET:-19,BROTLI_DECODER_ERROR_INVALID_ARGUMENTS:-20,BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MODES:-21,BROTLI_DECODER_ERROR_ALLOC_TREE_GROUPS:-22,BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MAP:-25,BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_1:-26,BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_2:-27,BROTLI_DECODER_ERROR_ALLOC_BLOCK_TYPE_TREES:-30,BROTLI_DECODER_ERROR_UNREACHABLE:-31},mAt))});var k3=_(PA=>{"use strict";var m3=Ie("assert"),Op=Ie("buffer").Buffer,uue=Ie("zlib"),am=PA.constants=Aue(),yAt=XC(),lue=Op.concat,Am=Symbol("_superWrite"),$C=class extends Error{constructor(e){super("zlib: "+e.message),this.code=e.code,this.errno=e.errno,this.code||(this.code="ZLIB_ERROR"),this.message="zlib: "+e.message,Error.captureStackTrace(this,this.constructor)}get name(){return"ZlibError"}},CAt=Symbol("opts"),XB=Symbol("flushFlag"),cue=Symbol("finishFlushFlag"),S3=Symbol("fullFlushFlag"),pi=Symbol("handle"),ix=Symbol("onError"),ZC=Symbol("sawError"),g3=Symbol("level"),p3=Symbol("strategy"),h3=Symbol("ended"),r4t=Symbol("_defaultFullFlush"),sx=class extends yAt{constructor(e,r){if(!e||typeof e!="object")throw new TypeError("invalid options for ZlibBase constructor");super(e),this[ZC]=!1,this[h3]=!1,this[CAt]=e,this[XB]=e.flush,this[cue]=e.finishFlush;try{this[pi]=new uue[r](e)}catch(o){throw new $C(o)}this[ix]=o=>{this[ZC]||(this[ZC]=!0,this.close(),this.emit("error",o))},this[pi].on("error",o=>this[ix](new $C(o))),this.once("end",()=>this.close)}close(){this[pi]&&(this[pi].close(),this[pi]=null,this.emit("close"))}reset(){if(!this[ZC])return m3(this[pi],"zlib binding closed"),this[pi].reset()}flush(e){this.ended||(typeof e!="number"&&(e=this[S3]),this.write(Object.assign(Op.alloc(0),{[XB]:e})))}end(e,r,o){return e&&this.write(e,r),this.flush(this[cue]),this[h3]=!0,super.end(null,null,o)}get ended(){return this[h3]}write(e,r,o){if(typeof r=="function"&&(o=r,r="utf8"),typeof e=="string"&&(e=Op.from(e,r)),this[ZC])return;m3(this[pi],"zlib binding closed");let a=this[pi]._handle,n=a.close;a.close=()=>{};let c=this[pi].close;this[pi].close=()=>{},Op.concat=p=>p;let f;try{let p=typeof e[XB]=="number"?e[XB]:this[XB];f=this[pi]._processChunk(e,p),Op.concat=lue}catch(p){Op.concat=lue,this[ix](new $C(p))}finally{this[pi]&&(this[pi]._handle=a,a.close=n,this[pi].close=c,this[pi].removeAllListeners("error"))}this[pi]&&this[pi].on("error",p=>this[ix](new $C(p)));let g;if(f)if(Array.isArray(f)&&f.length>0){g=this[Am](Op.from(f[0]));for(let p=1;p{this.flush(a),n()};try{this[pi].params(e,r)}finally{this[pi].flush=o}this[pi]&&(this[g3]=e,this[p3]=r)}}}},y3=class extends lg{constructor(e){super(e,"Deflate")}},C3=class extends lg{constructor(e){super(e,"Inflate")}},d3=Symbol("_portable"),E3=class extends lg{constructor(e){super(e,"Gzip"),this[d3]=e&&!!e.portable}[Am](e){return this[d3]?(this[d3]=!1,e[9]=255,super[Am](e)):super[Am](e)}},I3=class extends lg{constructor(e){super(e,"Gunzip")}},w3=class extends lg{constructor(e){super(e,"DeflateRaw")}},B3=class extends lg{constructor(e){super(e,"InflateRaw")}},Q3=class extends lg{constructor(e){super(e,"Unzip")}},ox=class extends sx{constructor(e,r){e=e||{},e.flush=e.flush||am.BROTLI_OPERATION_PROCESS,e.finishFlush=e.finishFlush||am.BROTLI_OPERATION_FINISH,super(e,r),this[S3]=am.BROTLI_OPERATION_FLUSH}},v3=class extends ox{constructor(e){super(e,"BrotliCompress")}},D3=class extends ox{constructor(e){super(e,"BrotliDecompress")}};PA.Deflate=y3;PA.Inflate=C3;PA.Gzip=E3;PA.Gunzip=I3;PA.DeflateRaw=w3;PA.InflateRaw=B3;PA.Unzip=Q3;typeof uue.BrotliCompress=="function"?(PA.BrotliCompress=v3,PA.BrotliDecompress=D3):PA.BrotliCompress=PA.BrotliDecompress=class{constructor(){throw new Error("Brotli is not supported in this version of Node.js")}}});var eE=_((s4t,fue)=>{var EAt=process.env.TESTING_TAR_FAKE_PLATFORM||process.platform;fue.exports=EAt!=="win32"?t=>t:t=>t&&t.replace(/\\/g,"/")});var ax=_((a4t,gue)=>{"use strict";var IAt=XC(),x3=eE(),P3=Symbol("slurp");gue.exports=class extends IAt{constructor(e,r,o){switch(super(),this.pause(),this.extended=r,this.globalExtended=o,this.header=e,this.startBlockSize=512*Math.ceil(e.size/512),this.blockRemain=this.startBlockSize,this.remain=e.size,this.type=e.type,this.meta=!1,this.ignore=!1,this.type){case"File":case"OldFile":case"Link":case"SymbolicLink":case"CharacterDevice":case"BlockDevice":case"Directory":case"FIFO":case"ContiguousFile":case"GNUDumpDir":break;case"NextFileHasLongLinkpath":case"NextFileHasLongPath":case"OldGnuLongPath":case"GlobalExtendedHeader":case"ExtendedHeader":case"OldExtendedHeader":this.meta=!0;break;default:this.ignore=!0}this.path=x3(e.path),this.mode=e.mode,this.mode&&(this.mode=this.mode&4095),this.uid=e.uid,this.gid=e.gid,this.uname=e.uname,this.gname=e.gname,this.size=e.size,this.mtime=e.mtime,this.atime=e.atime,this.ctime=e.ctime,this.linkpath=x3(e.linkpath),this.uname=e.uname,this.gname=e.gname,r&&this[P3](r),o&&this[P3](o,!0)}write(e){let r=e.length;if(r>this.blockRemain)throw new Error("writing more to entry than is appropriate");let o=this.remain,a=this.blockRemain;return this.remain=Math.max(0,o-r),this.blockRemain=Math.max(0,a-r),this.ignore?!0:o>=r?super.write(e):super.write(e.slice(0,o))}[P3](e,r){for(let o in e)e[o]!==null&&e[o]!==void 0&&!(r&&o==="path")&&(this[o]=o==="path"||o==="linkpath"?x3(e[o]):e[o])}}});var b3=_(Ax=>{"use strict";Ax.name=new Map([["0","File"],["","OldFile"],["1","Link"],["2","SymbolicLink"],["3","CharacterDevice"],["4","BlockDevice"],["5","Directory"],["6","FIFO"],["7","ContiguousFile"],["g","GlobalExtendedHeader"],["x","ExtendedHeader"],["A","SolarisACL"],["D","GNUDumpDir"],["I","Inode"],["K","NextFileHasLongLinkpath"],["L","NextFileHasLongPath"],["M","ContinuationFile"],["N","OldGnuLongPath"],["S","SparseFile"],["V","TapeVolumeHeader"],["X","OldExtendedHeader"]]);Ax.code=new Map(Array.from(Ax.name).map(t=>[t[1],t[0]]))});var mue=_((l4t,due)=>{"use strict";var wAt=(t,e)=>{if(Number.isSafeInteger(t))t<0?QAt(t,e):BAt(t,e);else throw Error("cannot encode number outside of javascript safe integer range");return e},BAt=(t,e)=>{e[0]=128;for(var r=e.length;r>1;r--)e[r-1]=t&255,t=Math.floor(t/256)},QAt=(t,e)=>{e[0]=255;var r=!1;t=t*-1;for(var o=e.length;o>1;o--){var a=t&255;t=Math.floor(t/256),r?e[o-1]=pue(a):a===0?e[o-1]=0:(r=!0,e[o-1]=hue(a))}},vAt=t=>{let e=t[0],r=e===128?SAt(t.slice(1,t.length)):e===255?DAt(t):null;if(r===null)throw Error("invalid base256 encoding");if(!Number.isSafeInteger(r))throw Error("parsed number outside of javascript safe integer range");return r},DAt=t=>{for(var e=t.length,r=0,o=!1,a=e-1;a>-1;a--){var n=t[a],c;o?c=pue(n):n===0?c=n:(o=!0,c=hue(n)),c!==0&&(r-=c*Math.pow(256,e-a-1))}return r},SAt=t=>{for(var e=t.length,r=0,o=e-1;o>-1;o--){var a=t[o];a!==0&&(r+=a*Math.pow(256,e-o-1))}return r},pue=t=>(255^t)&255,hue=t=>(255^t)+1&255;due.exports={encode:wAt,parse:vAt}});var rE=_((c4t,Cue)=>{"use strict";var F3=b3(),tE=Ie("path").posix,yue=mue(),R3=Symbol("slurp"),bA=Symbol("type"),M3=class{constructor(e,r,o,a){this.cksumValid=!1,this.needPax=!1,this.nullBlock=!1,this.block=null,this.path=null,this.mode=null,this.uid=null,this.gid=null,this.size=null,this.mtime=null,this.cksum=null,this[bA]="0",this.linkpath=null,this.uname=null,this.gname=null,this.devmaj=0,this.devmin=0,this.atime=null,this.ctime=null,Buffer.isBuffer(e)?this.decode(e,r||0,o,a):e&&this.set(e)}decode(e,r,o,a){if(r||(r=0),!e||!(e.length>=r+512))throw new Error("need 512 bytes for header");if(this.path=lm(e,r,100),this.mode=Up(e,r+100,8),this.uid=Up(e,r+108,8),this.gid=Up(e,r+116,8),this.size=Up(e,r+124,12),this.mtime=T3(e,r+136,12),this.cksum=Up(e,r+148,12),this[R3](o),this[R3](a,!0),this[bA]=lm(e,r+156,1),this[bA]===""&&(this[bA]="0"),this[bA]==="0"&&this.path.substr(-1)==="/"&&(this[bA]="5"),this[bA]==="5"&&(this.size=0),this.linkpath=lm(e,r+157,100),e.slice(r+257,r+265).toString()==="ustar\x0000")if(this.uname=lm(e,r+265,32),this.gname=lm(e,r+297,32),this.devmaj=Up(e,r+329,8),this.devmin=Up(e,r+337,8),e[r+475]!==0){let c=lm(e,r+345,155);this.path=c+"/"+this.path}else{let c=lm(e,r+345,130);c&&(this.path=c+"/"+this.path),this.atime=T3(e,r+476,12),this.ctime=T3(e,r+488,12)}let n=8*32;for(let c=r;c=r+512))throw new Error("need 512 bytes for header");let o=this.ctime||this.atime?130:155,a=kAt(this.path||"",o),n=a[0],c=a[1];this.needPax=a[2],this.needPax=cm(e,r,100,n)||this.needPax,this.needPax=Kp(e,r+100,8,this.mode)||this.needPax,this.needPax=Kp(e,r+108,8,this.uid)||this.needPax,this.needPax=Kp(e,r+116,8,this.gid)||this.needPax,this.needPax=Kp(e,r+124,12,this.size)||this.needPax,this.needPax=N3(e,r+136,12,this.mtime)||this.needPax,e[r+156]=this[bA].charCodeAt(0),this.needPax=cm(e,r+157,100,this.linkpath)||this.needPax,e.write("ustar\x0000",r+257,8),this.needPax=cm(e,r+265,32,this.uname)||this.needPax,this.needPax=cm(e,r+297,32,this.gname)||this.needPax,this.needPax=Kp(e,r+329,8,this.devmaj)||this.needPax,this.needPax=Kp(e,r+337,8,this.devmin)||this.needPax,this.needPax=cm(e,r+345,o,c)||this.needPax,e[r+475]!==0?this.needPax=cm(e,r+345,155,c)||this.needPax:(this.needPax=cm(e,r+345,130,c)||this.needPax,this.needPax=N3(e,r+476,12,this.atime)||this.needPax,this.needPax=N3(e,r+488,12,this.ctime)||this.needPax);let f=8*32;for(let g=r;g{let o=t,a="",n,c=tE.parse(t).root||".";if(Buffer.byteLength(o)<100)n=[o,a,!1];else{a=tE.dirname(o),o=tE.basename(o);do Buffer.byteLength(o)<=100&&Buffer.byteLength(a)<=e?n=[o,a,!1]:Buffer.byteLength(o)>100&&Buffer.byteLength(a)<=e?n=[o.substr(0,100-1),a,!0]:(o=tE.join(tE.basename(a),o),a=tE.dirname(a));while(a!==c&&!n);n||(n=[t.substr(0,100-1),"",!0])}return n},lm=(t,e,r)=>t.slice(e,e+r).toString("utf8").replace(/\0.*/,""),T3=(t,e,r)=>xAt(Up(t,e,r)),xAt=t=>t===null?null:new Date(t*1e3),Up=(t,e,r)=>t[e]&128?yue.parse(t.slice(e,e+r)):bAt(t,e,r),PAt=t=>isNaN(t)?null:t,bAt=(t,e,r)=>PAt(parseInt(t.slice(e,e+r).toString("utf8").replace(/\0.*$/,"").trim(),8)),FAt={12:8589934591,8:2097151},Kp=(t,e,r,o)=>o===null?!1:o>FAt[r]||o<0?(yue.encode(o,t.slice(e,e+r)),!0):(RAt(t,e,r,o),!1),RAt=(t,e,r,o)=>t.write(TAt(o,r),e,r,"ascii"),TAt=(t,e)=>NAt(Math.floor(t).toString(8),e),NAt=(t,e)=>(t.length===e-1?t:new Array(e-t.length-1).join("0")+t+" ")+"\0",N3=(t,e,r,o)=>o===null?!1:Kp(t,e,r,o.getTime()/1e3),MAt=new Array(156).join("\0"),cm=(t,e,r,o)=>o===null?!1:(t.write(o+MAt,e,r,"utf8"),o.length!==Buffer.byteLength(o)||o.length>r);Cue.exports=M3});var lx=_((u4t,Eue)=>{"use strict";var LAt=rE(),OAt=Ie("path"),ZB=class{constructor(e,r){this.atime=e.atime||null,this.charset=e.charset||null,this.comment=e.comment||null,this.ctime=e.ctime||null,this.gid=e.gid||null,this.gname=e.gname||null,this.linkpath=e.linkpath||null,this.mtime=e.mtime||null,this.path=e.path||null,this.size=e.size||null,this.uid=e.uid||null,this.uname=e.uname||null,this.dev=e.dev||null,this.ino=e.ino||null,this.nlink=e.nlink||null,this.global=r||!1}encode(){let e=this.encodeBody();if(e==="")return null;let r=Buffer.byteLength(e),o=512*Math.ceil(1+r/512),a=Buffer.allocUnsafe(o);for(let n=0;n<512;n++)a[n]=0;new LAt({path:("PaxHeader/"+OAt.basename(this.path)).slice(0,99),mode:this.mode||420,uid:this.uid||null,gid:this.gid||null,size:r,mtime:this.mtime||null,type:this.global?"GlobalExtendedHeader":"ExtendedHeader",linkpath:"",uname:this.uname||"",gname:this.gname||"",devmaj:0,devmin:0,atime:this.atime||null,ctime:this.ctime||null}).encode(a),a.write(e,512,r,"utf8");for(let n=r+512;n=Math.pow(10,n)&&(n+=1),n+a+o}};ZB.parse=(t,e,r)=>new ZB(UAt(KAt(t),e),r);var UAt=(t,e)=>e?Object.keys(t).reduce((r,o)=>(r[o]=t[o],r),e):t,KAt=t=>t.replace(/\n$/,"").split(` -`).reduce(_At,Object.create(null)),_At=(t,e)=>{let r=parseInt(e,10);if(r!==Buffer.byteLength(e)+1)return t;e=e.substr((r+" ").length);let o=e.split("="),a=o.shift().replace(/^SCHILY\.(dev|ino|nlink)/,"$1");if(!a)return t;let n=o.join("=");return t[a]=/^([A-Z]+\.)?([mac]|birth|creation)time$/.test(a)?new Date(n*1e3):/^[0-9]+$/.test(n)?+n:n,t};Eue.exports=ZB});var nE=_((f4t,Iue)=>{Iue.exports=t=>{let e=t.length-1,r=-1;for(;e>-1&&t.charAt(e)==="/";)r=e,e--;return r===-1?t:t.slice(0,r)}});var cx=_((g4t,wue)=>{"use strict";wue.exports=t=>class extends t{warn(e,r,o={}){this.file&&(o.file=this.file),this.cwd&&(o.cwd=this.cwd),o.code=r instanceof Error&&r.code||e,o.tarCode=e,!this.strict&&o.recoverable!==!1?(r instanceof Error&&(o=Object.assign(r,o),r=r.message),this.emit("warn",o.tarCode,r,o)):r instanceof Error?this.emit("error",Object.assign(r,o)):this.emit("error",Object.assign(new Error(`${e}: ${r}`),o))}}});var O3=_((h4t,Bue)=>{"use strict";var ux=["|","<",">","?",":"],L3=ux.map(t=>String.fromCharCode(61440+t.charCodeAt(0))),HAt=new Map(ux.map((t,e)=>[t,L3[e]])),qAt=new Map(L3.map((t,e)=>[t,ux[e]]));Bue.exports={encode:t=>ux.reduce((e,r)=>e.split(r).join(HAt.get(r)),t),decode:t=>L3.reduce((e,r)=>e.split(r).join(qAt.get(r)),t)}});var U3=_((d4t,vue)=>{var{isAbsolute:GAt,parse:Que}=Ie("path").win32;vue.exports=t=>{let e="",r=Que(t);for(;GAt(t)||r.root;){let o=t.charAt(0)==="/"&&t.slice(0,4)!=="//?/"?"/":r.root;t=t.substr(o.length),e+=o,r=Que(t)}return[e,t]}});var Sue=_((m4t,Due)=>{"use strict";Due.exports=(t,e,r)=>(t&=4095,r&&(t=(t|384)&-19),e&&(t&256&&(t|=64),t&32&&(t|=8),t&4&&(t|=1)),t)});var V3=_((E4t,_ue)=>{"use strict";var Tue=XC(),Nue=lx(),Mue=rE(),xu=Ie("fs"),kue=Ie("path"),ku=eE(),jAt=nE(),Lue=(t,e)=>e?(t=ku(t).replace(/^\.(\/|$)/,""),jAt(e)+"/"+t):ku(t),YAt=16*1024*1024,xue=Symbol("process"),Pue=Symbol("file"),bue=Symbol("directory"),_3=Symbol("symlink"),Fue=Symbol("hardlink"),$B=Symbol("header"),fx=Symbol("read"),H3=Symbol("lstat"),gx=Symbol("onlstat"),q3=Symbol("onread"),G3=Symbol("onreadlink"),j3=Symbol("openfile"),Y3=Symbol("onopenfile"),_p=Symbol("close"),px=Symbol("mode"),W3=Symbol("awaitDrain"),K3=Symbol("ondrain"),Pu=Symbol("prefix"),Rue=Symbol("hadError"),Oue=cx(),WAt=O3(),Uue=U3(),Kue=Sue(),hx=Oue(class extends Tue{constructor(e,r){if(r=r||{},super(r),typeof e!="string")throw new TypeError("path is required");this.path=ku(e),this.portable=!!r.portable,this.myuid=process.getuid&&process.getuid()||0,this.myuser=process.env.USER||"",this.maxReadSize=r.maxReadSize||YAt,this.linkCache=r.linkCache||new Map,this.statCache=r.statCache||new Map,this.preservePaths=!!r.preservePaths,this.cwd=ku(r.cwd||process.cwd()),this.strict=!!r.strict,this.noPax=!!r.noPax,this.noMtime=!!r.noMtime,this.mtime=r.mtime||null,this.prefix=r.prefix?ku(r.prefix):null,this.fd=null,this.blockLen=null,this.blockRemain=null,this.buf=null,this.offset=null,this.length=null,this.pos=null,this.remain=null,typeof r.onwarn=="function"&&this.on("warn",r.onwarn);let o=!1;if(!this.preservePaths){let[a,n]=Uue(this.path);a&&(this.path=n,o=a)}this.win32=!!r.win32||process.platform==="win32",this.win32&&(this.path=WAt.decode(this.path.replace(/\\/g,"/")),e=e.replace(/\\/g,"/")),this.absolute=ku(r.absolute||kue.resolve(this.cwd,e)),this.path===""&&(this.path="./"),o&&this.warn("TAR_ENTRY_INFO",`stripping ${o} from absolute path`,{entry:this,path:o+this.path}),this.statCache.has(this.absolute)?this[gx](this.statCache.get(this.absolute)):this[H3]()}emit(e,...r){return e==="error"&&(this[Rue]=!0),super.emit(e,...r)}[H3](){xu.lstat(this.absolute,(e,r)=>{if(e)return this.emit("error",e);this[gx](r)})}[gx](e){this.statCache.set(this.absolute,e),this.stat=e,e.isFile()||(e.size=0),this.type=VAt(e),this.emit("stat",e),this[xue]()}[xue](){switch(this.type){case"File":return this[Pue]();case"Directory":return this[bue]();case"SymbolicLink":return this[_3]();default:return this.end()}}[px](e){return Kue(e,this.type==="Directory",this.portable)}[Pu](e){return Lue(e,this.prefix)}[$B](){this.type==="Directory"&&this.portable&&(this.noMtime=!0),this.header=new Mue({path:this[Pu](this.path),linkpath:this.type==="Link"?this[Pu](this.linkpath):this.linkpath,mode:this[px](this.stat.mode),uid:this.portable?null:this.stat.uid,gid:this.portable?null:this.stat.gid,size:this.stat.size,mtime:this.noMtime?null:this.mtime||this.stat.mtime,type:this.type,uname:this.portable?null:this.stat.uid===this.myuid?this.myuser:"",atime:this.portable?null:this.stat.atime,ctime:this.portable?null:this.stat.ctime}),this.header.encode()&&!this.noPax&&super.write(new Nue({atime:this.portable?null:this.header.atime,ctime:this.portable?null:this.header.ctime,gid:this.portable?null:this.header.gid,mtime:this.noMtime?null:this.mtime||this.header.mtime,path:this[Pu](this.path),linkpath:this.type==="Link"?this[Pu](this.linkpath):this.linkpath,size:this.header.size,uid:this.portable?null:this.header.uid,uname:this.portable?null:this.header.uname,dev:this.portable?null:this.stat.dev,ino:this.portable?null:this.stat.ino,nlink:this.portable?null:this.stat.nlink}).encode()),super.write(this.header.block)}[bue](){this.path.substr(-1)!=="/"&&(this.path+="/"),this.stat.size=0,this[$B](),this.end()}[_3](){xu.readlink(this.absolute,(e,r)=>{if(e)return this.emit("error",e);this[G3](r)})}[G3](e){this.linkpath=ku(e),this[$B](),this.end()}[Fue](e){this.type="Link",this.linkpath=ku(kue.relative(this.cwd,e)),this.stat.size=0,this[$B](),this.end()}[Pue](){if(this.stat.nlink>1){let e=this.stat.dev+":"+this.stat.ino;if(this.linkCache.has(e)){let r=this.linkCache.get(e);if(r.indexOf(this.cwd)===0)return this[Fue](r)}this.linkCache.set(e,this.absolute)}if(this[$B](),this.stat.size===0)return this.end();this[j3]()}[j3](){xu.open(this.absolute,"r",(e,r)=>{if(e)return this.emit("error",e);this[Y3](r)})}[Y3](e){if(this.fd=e,this[Rue])return this[_p]();this.blockLen=512*Math.ceil(this.stat.size/512),this.blockRemain=this.blockLen;let r=Math.min(this.blockLen,this.maxReadSize);this.buf=Buffer.allocUnsafe(r),this.offset=0,this.pos=0,this.remain=this.stat.size,this.length=this.buf.length,this[fx]()}[fx](){let{fd:e,buf:r,offset:o,length:a,pos:n}=this;xu.read(e,r,o,a,n,(c,f)=>{if(c)return this[_p](()=>this.emit("error",c));this[q3](f)})}[_p](e){xu.close(this.fd,e)}[q3](e){if(e<=0&&this.remain>0){let a=new Error("encountered unexpected EOF");return a.path=this.absolute,a.syscall="read",a.code="EOF",this[_p](()=>this.emit("error",a))}if(e>this.remain){let a=new Error("did not encounter expected EOF");return a.path=this.absolute,a.syscall="read",a.code="EOF",this[_p](()=>this.emit("error",a))}if(e===this.remain)for(let a=e;athis[K3]())}[W3](e){this.once("drain",e)}write(e){if(this.blockRemaine?this.emit("error",e):this.end());this.offset>=this.length&&(this.buf=Buffer.allocUnsafe(Math.min(this.blockRemain,this.buf.length)),this.offset=0),this.length=this.buf.length-this.offset,this[fx]()}}),J3=class extends hx{[H3](){this[gx](xu.lstatSync(this.absolute))}[_3](){this[G3](xu.readlinkSync(this.absolute))}[j3](){this[Y3](xu.openSync(this.absolute,"r"))}[fx](){let e=!0;try{let{fd:r,buf:o,offset:a,length:n,pos:c}=this,f=xu.readSync(r,o,a,n,c);this[q3](f),e=!1}finally{if(e)try{this[_p](()=>{})}catch{}}}[W3](e){e()}[_p](e){xu.closeSync(this.fd),e()}},JAt=Oue(class extends Tue{constructor(e,r){r=r||{},super(r),this.preservePaths=!!r.preservePaths,this.portable=!!r.portable,this.strict=!!r.strict,this.noPax=!!r.noPax,this.noMtime=!!r.noMtime,this.readEntry=e,this.type=e.type,this.type==="Directory"&&this.portable&&(this.noMtime=!0),this.prefix=r.prefix||null,this.path=ku(e.path),this.mode=this[px](e.mode),this.uid=this.portable?null:e.uid,this.gid=this.portable?null:e.gid,this.uname=this.portable?null:e.uname,this.gname=this.portable?null:e.gname,this.size=e.size,this.mtime=this.noMtime?null:r.mtime||e.mtime,this.atime=this.portable?null:e.atime,this.ctime=this.portable?null:e.ctime,this.linkpath=ku(e.linkpath),typeof r.onwarn=="function"&&this.on("warn",r.onwarn);let o=!1;if(!this.preservePaths){let[a,n]=Uue(this.path);a&&(this.path=n,o=a)}this.remain=e.size,this.blockRemain=e.startBlockSize,this.header=new Mue({path:this[Pu](this.path),linkpath:this.type==="Link"?this[Pu](this.linkpath):this.linkpath,mode:this.mode,uid:this.portable?null:this.uid,gid:this.portable?null:this.gid,size:this.size,mtime:this.noMtime?null:this.mtime,type:this.type,uname:this.portable?null:this.uname,atime:this.portable?null:this.atime,ctime:this.portable?null:this.ctime}),o&&this.warn("TAR_ENTRY_INFO",`stripping ${o} from absolute path`,{entry:this,path:o+this.path}),this.header.encode()&&!this.noPax&&super.write(new Nue({atime:this.portable?null:this.atime,ctime:this.portable?null:this.ctime,gid:this.portable?null:this.gid,mtime:this.noMtime?null:this.mtime,path:this[Pu](this.path),linkpath:this.type==="Link"?this[Pu](this.linkpath):this.linkpath,size:this.size,uid:this.portable?null:this.uid,uname:this.portable?null:this.uname,dev:this.portable?null:this.readEntry.dev,ino:this.portable?null:this.readEntry.ino,nlink:this.portable?null:this.readEntry.nlink}).encode()),super.write(this.header.block),e.pipe(this)}[Pu](e){return Lue(e,this.prefix)}[px](e){return Kue(e,this.type==="Directory",this.portable)}write(e){let r=e.length;if(r>this.blockRemain)throw new Error("writing more to entry than is appropriate");return this.blockRemain-=r,super.write(e)}end(){return this.blockRemain&&super.write(Buffer.alloc(this.blockRemain)),super.end()}});hx.Sync=J3;hx.Tar=JAt;var VAt=t=>t.isFile()?"File":t.isDirectory()?"Directory":t.isSymbolicLink()?"SymbolicLink":"Unsupported";_ue.exports=hx});var Qx=_((w4t,Jue)=>{"use strict";var wx=class{constructor(e,r){this.path=e||"./",this.absolute=r,this.entry=null,this.stat=null,this.readdir=null,this.pending=!1,this.ignore=!1,this.piped=!1}},zAt=XC(),XAt=k3(),ZAt=ax(),i8=V3(),$At=i8.Sync,elt=i8.Tar,tlt=FD(),Hue=Buffer.alloc(1024),yx=Symbol("onStat"),dx=Symbol("ended"),bu=Symbol("queue"),iE=Symbol("current"),um=Symbol("process"),mx=Symbol("processing"),que=Symbol("processJob"),Fu=Symbol("jobs"),z3=Symbol("jobDone"),Cx=Symbol("addFSEntry"),Gue=Symbol("addTarEntry"),e8=Symbol("stat"),t8=Symbol("readdir"),Ex=Symbol("onreaddir"),Ix=Symbol("pipe"),jue=Symbol("entry"),X3=Symbol("entryOpt"),r8=Symbol("writeEntryClass"),Wue=Symbol("write"),Z3=Symbol("ondrain"),Bx=Ie("fs"),Yue=Ie("path"),rlt=cx(),$3=eE(),s8=rlt(class extends zAt{constructor(e){super(e),e=e||Object.create(null),this.opt=e,this.file=e.file||"",this.cwd=e.cwd||process.cwd(),this.maxReadSize=e.maxReadSize,this.preservePaths=!!e.preservePaths,this.strict=!!e.strict,this.noPax=!!e.noPax,this.prefix=$3(e.prefix||""),this.linkCache=e.linkCache||new Map,this.statCache=e.statCache||new Map,this.readdirCache=e.readdirCache||new Map,this[r8]=i8,typeof e.onwarn=="function"&&this.on("warn",e.onwarn),this.portable=!!e.portable,this.zip=null,e.gzip?(typeof e.gzip!="object"&&(e.gzip={}),this.portable&&(e.gzip.portable=!0),this.zip=new XAt.Gzip(e.gzip),this.zip.on("data",r=>super.write(r)),this.zip.on("end",r=>super.end()),this.zip.on("drain",r=>this[Z3]()),this.on("resume",r=>this.zip.resume())):this.on("drain",this[Z3]),this.noDirRecurse=!!e.noDirRecurse,this.follow=!!e.follow,this.noMtime=!!e.noMtime,this.mtime=e.mtime||null,this.filter=typeof e.filter=="function"?e.filter:r=>!0,this[bu]=new tlt,this[Fu]=0,this.jobs=+e.jobs||4,this[mx]=!1,this[dx]=!1}[Wue](e){return super.write(e)}add(e){return this.write(e),this}end(e){return e&&this.write(e),this[dx]=!0,this[um](),this}write(e){if(this[dx])throw new Error("write after end");return e instanceof ZAt?this[Gue](e):this[Cx](e),this.flowing}[Gue](e){let r=$3(Yue.resolve(this.cwd,e.path));if(!this.filter(e.path,e))e.resume();else{let o=new wx(e.path,r,!1);o.entry=new elt(e,this[X3](o)),o.entry.on("end",a=>this[z3](o)),this[Fu]+=1,this[bu].push(o)}this[um]()}[Cx](e){let r=$3(Yue.resolve(this.cwd,e));this[bu].push(new wx(e,r)),this[um]()}[e8](e){e.pending=!0,this[Fu]+=1;let r=this.follow?"stat":"lstat";Bx[r](e.absolute,(o,a)=>{e.pending=!1,this[Fu]-=1,o?this.emit("error",o):this[yx](e,a)})}[yx](e,r){this.statCache.set(e.absolute,r),e.stat=r,this.filter(e.path,r)||(e.ignore=!0),this[um]()}[t8](e){e.pending=!0,this[Fu]+=1,Bx.readdir(e.absolute,(r,o)=>{if(e.pending=!1,this[Fu]-=1,r)return this.emit("error",r);this[Ex](e,o)})}[Ex](e,r){this.readdirCache.set(e.absolute,r),e.readdir=r,this[um]()}[um](){if(!this[mx]){this[mx]=!0;for(let e=this[bu].head;e!==null&&this[Fu]this.warn(r,o,a),noPax:this.noPax,cwd:this.cwd,absolute:e.absolute,preservePaths:this.preservePaths,maxReadSize:this.maxReadSize,strict:this.strict,portable:this.portable,linkCache:this.linkCache,statCache:this.statCache,noMtime:this.noMtime,mtime:this.mtime,prefix:this.prefix}}[jue](e){this[Fu]+=1;try{return new this[r8](e.path,this[X3](e)).on("end",()=>this[z3](e)).on("error",r=>this.emit("error",r))}catch(r){this.emit("error",r)}}[Z3](){this[iE]&&this[iE].entry&&this[iE].entry.resume()}[Ix](e){e.piped=!0,e.readdir&&e.readdir.forEach(a=>{let n=e.path,c=n==="./"?"":n.replace(/\/*$/,"/");this[Cx](c+a)});let r=e.entry,o=this.zip;o?r.on("data",a=>{o.write(a)||r.pause()}):r.on("data",a=>{super.write(a)||r.pause()})}pause(){return this.zip&&this.zip.pause(),super.pause()}}),n8=class extends s8{constructor(e){super(e),this[r8]=$At}pause(){}resume(){}[e8](e){let r=this.follow?"statSync":"lstatSync";this[yx](e,Bx[r](e.absolute))}[t8](e,r){this[Ex](e,Bx.readdirSync(e.absolute))}[Ix](e){let r=e.entry,o=this.zip;e.readdir&&e.readdir.forEach(a=>{let n=e.path,c=n==="./"?"":n.replace(/\/*$/,"/");this[Cx](c+a)}),o?r.on("data",a=>{o.write(a)}):r.on("data",a=>{super[Wue](a)})}};s8.Sync=n8;Jue.exports=s8});var fE=_(t1=>{"use strict";var nlt=XC(),ilt=Ie("events").EventEmitter,$a=Ie("fs"),A8=$a.writev;if(!A8){let t=process.binding("fs"),e=t.FSReqWrap||t.FSReqCallback;A8=(r,o,a,n)=>{let c=(g,p)=>n(g,p,o),f=new e;f.oncomplete=c,t.writeBuffers(r,o,a,f)}}var cE=Symbol("_autoClose"),hc=Symbol("_close"),e1=Symbol("_ended"),ti=Symbol("_fd"),Vue=Symbol("_finished"),qp=Symbol("_flags"),o8=Symbol("_flush"),l8=Symbol("_handleChunk"),c8=Symbol("_makeBuf"),xx=Symbol("_mode"),vx=Symbol("_needDrain"),AE=Symbol("_onerror"),uE=Symbol("_onopen"),a8=Symbol("_onread"),oE=Symbol("_onwrite"),Gp=Symbol("_open"),cg=Symbol("_path"),fm=Symbol("_pos"),Ru=Symbol("_queue"),aE=Symbol("_read"),zue=Symbol("_readSize"),Hp=Symbol("_reading"),Dx=Symbol("_remain"),Xue=Symbol("_size"),Sx=Symbol("_write"),sE=Symbol("_writing"),kx=Symbol("_defaultFlag"),lE=Symbol("_errored"),Px=class extends nlt{constructor(e,r){if(r=r||{},super(r),this.readable=!0,this.writable=!1,typeof e!="string")throw new TypeError("path must be a string");this[lE]=!1,this[ti]=typeof r.fd=="number"?r.fd:null,this[cg]=e,this[zue]=r.readSize||16*1024*1024,this[Hp]=!1,this[Xue]=typeof r.size=="number"?r.size:1/0,this[Dx]=this[Xue],this[cE]=typeof r.autoClose=="boolean"?r.autoClose:!0,typeof this[ti]=="number"?this[aE]():this[Gp]()}get fd(){return this[ti]}get path(){return this[cg]}write(){throw new TypeError("this is a readable stream")}end(){throw new TypeError("this is a readable stream")}[Gp](){$a.open(this[cg],"r",(e,r)=>this[uE](e,r))}[uE](e,r){e?this[AE](e):(this[ti]=r,this.emit("open",r),this[aE]())}[c8](){return Buffer.allocUnsafe(Math.min(this[zue],this[Dx]))}[aE](){if(!this[Hp]){this[Hp]=!0;let e=this[c8]();if(e.length===0)return process.nextTick(()=>this[a8](null,0,e));$a.read(this[ti],e,0,e.length,null,(r,o,a)=>this[a8](r,o,a))}}[a8](e,r,o){this[Hp]=!1,e?this[AE](e):this[l8](r,o)&&this[aE]()}[hc](){if(this[cE]&&typeof this[ti]=="number"){let e=this[ti];this[ti]=null,$a.close(e,r=>r?this.emit("error",r):this.emit("close"))}}[AE](e){this[Hp]=!0,this[hc](),this.emit("error",e)}[l8](e,r){let o=!1;return this[Dx]-=e,e>0&&(o=super.write(ethis[uE](e,r))}[uE](e,r){this[kx]&&this[qp]==="r+"&&e&&e.code==="ENOENT"?(this[qp]="w",this[Gp]()):e?this[AE](e):(this[ti]=r,this.emit("open",r),this[o8]())}end(e,r){return e&&this.write(e,r),this[e1]=!0,!this[sE]&&!this[Ru].length&&typeof this[ti]=="number"&&this[oE](null,0),this}write(e,r){return typeof e=="string"&&(e=Buffer.from(e,r)),this[e1]?(this.emit("error",new Error("write() after end()")),!1):this[ti]===null||this[sE]||this[Ru].length?(this[Ru].push(e),this[vx]=!0,!1):(this[sE]=!0,this[Sx](e),!0)}[Sx](e){$a.write(this[ti],e,0,e.length,this[fm],(r,o)=>this[oE](r,o))}[oE](e,r){e?this[AE](e):(this[fm]!==null&&(this[fm]+=r),this[Ru].length?this[o8]():(this[sE]=!1,this[e1]&&!this[Vue]?(this[Vue]=!0,this[hc](),this.emit("finish")):this[vx]&&(this[vx]=!1,this.emit("drain"))))}[o8](){if(this[Ru].length===0)this[e1]&&this[oE](null,0);else if(this[Ru].length===1)this[Sx](this[Ru].pop());else{let e=this[Ru];this[Ru]=[],A8(this[ti],e,this[fm],(r,o)=>this[oE](r,o))}}[hc](){if(this[cE]&&typeof this[ti]=="number"){let e=this[ti];this[ti]=null,$a.close(e,r=>r?this.emit("error",r):this.emit("close"))}}},f8=class extends bx{[Gp](){let e;if(this[kx]&&this[qp]==="r+")try{e=$a.openSync(this[cg],this[qp],this[xx])}catch(r){if(r.code==="ENOENT")return this[qp]="w",this[Gp]();throw r}else e=$a.openSync(this[cg],this[qp],this[xx]);this[uE](null,e)}[hc](){if(this[cE]&&typeof this[ti]=="number"){let e=this[ti];this[ti]=null,$a.closeSync(e),this.emit("close")}}[Sx](e){let r=!0;try{this[oE](null,$a.writeSync(this[ti],e,0,e.length,this[fm])),r=!1}finally{if(r)try{this[hc]()}catch{}}}};t1.ReadStream=Px;t1.ReadStreamSync=u8;t1.WriteStream=bx;t1.WriteStreamSync=f8});var Ox=_((v4t,ife)=>{"use strict";var slt=cx(),olt=rE(),alt=Ie("events"),Alt=FD(),llt=1024*1024,clt=ax(),Zue=lx(),ult=k3(),g8=Buffer.from([31,139]),Sl=Symbol("state"),gm=Symbol("writeEntry"),ug=Symbol("readEntry"),p8=Symbol("nextEntry"),$ue=Symbol("processEntry"),kl=Symbol("extendedHeader"),r1=Symbol("globalExtendedHeader"),jp=Symbol("meta"),efe=Symbol("emitMeta"),Di=Symbol("buffer"),fg=Symbol("queue"),pm=Symbol("ended"),tfe=Symbol("emittedEnd"),hm=Symbol("emit"),eA=Symbol("unzip"),Fx=Symbol("consumeChunk"),Rx=Symbol("consumeChunkSub"),h8=Symbol("consumeBody"),rfe=Symbol("consumeMeta"),nfe=Symbol("consumeHeader"),Tx=Symbol("consuming"),d8=Symbol("bufferConcat"),m8=Symbol("maybeEnd"),n1=Symbol("writing"),Yp=Symbol("aborted"),Nx=Symbol("onDone"),dm=Symbol("sawValidEntry"),Mx=Symbol("sawNullBlock"),Lx=Symbol("sawEOF"),flt=t=>!0;ife.exports=slt(class extends alt{constructor(e){e=e||{},super(e),this.file=e.file||"",this[dm]=null,this.on(Nx,r=>{(this[Sl]==="begin"||this[dm]===!1)&&this.warn("TAR_BAD_ARCHIVE","Unrecognized archive format")}),e.ondone?this.on(Nx,e.ondone):this.on(Nx,r=>{this.emit("prefinish"),this.emit("finish"),this.emit("end"),this.emit("close")}),this.strict=!!e.strict,this.maxMetaEntrySize=e.maxMetaEntrySize||llt,this.filter=typeof e.filter=="function"?e.filter:flt,this.writable=!0,this.readable=!1,this[fg]=new Alt,this[Di]=null,this[ug]=null,this[gm]=null,this[Sl]="begin",this[jp]="",this[kl]=null,this[r1]=null,this[pm]=!1,this[eA]=null,this[Yp]=!1,this[Mx]=!1,this[Lx]=!1,typeof e.onwarn=="function"&&this.on("warn",e.onwarn),typeof e.onentry=="function"&&this.on("entry",e.onentry)}[nfe](e,r){this[dm]===null&&(this[dm]=!1);let o;try{o=new olt(e,r,this[kl],this[r1])}catch(a){return this.warn("TAR_ENTRY_INVALID",a)}if(o.nullBlock)this[Mx]?(this[Lx]=!0,this[Sl]==="begin"&&(this[Sl]="header"),this[hm]("eof")):(this[Mx]=!0,this[hm]("nullBlock"));else if(this[Mx]=!1,!o.cksumValid)this.warn("TAR_ENTRY_INVALID","checksum failure",{header:o});else if(!o.path)this.warn("TAR_ENTRY_INVALID","path is required",{header:o});else{let a=o.type;if(/^(Symbolic)?Link$/.test(a)&&!o.linkpath)this.warn("TAR_ENTRY_INVALID","linkpath required",{header:o});else if(!/^(Symbolic)?Link$/.test(a)&&o.linkpath)this.warn("TAR_ENTRY_INVALID","linkpath forbidden",{header:o});else{let n=this[gm]=new clt(o,this[kl],this[r1]);if(!this[dm])if(n.remain){let c=()=>{n.invalid||(this[dm]=!0)};n.on("end",c)}else this[dm]=!0;n.meta?n.size>this.maxMetaEntrySize?(n.ignore=!0,this[hm]("ignoredEntry",n),this[Sl]="ignore",n.resume()):n.size>0&&(this[jp]="",n.on("data",c=>this[jp]+=c),this[Sl]="meta"):(this[kl]=null,n.ignore=n.ignore||!this.filter(n.path,n),n.ignore?(this[hm]("ignoredEntry",n),this[Sl]=n.remain?"ignore":"header",n.resume()):(n.remain?this[Sl]="body":(this[Sl]="header",n.end()),this[ug]?this[fg].push(n):(this[fg].push(n),this[p8]())))}}}[$ue](e){let r=!0;return e?Array.isArray(e)?this.emit.apply(this,e):(this[ug]=e,this.emit("entry",e),e.emittedEnd||(e.on("end",o=>this[p8]()),r=!1)):(this[ug]=null,r=!1),r}[p8](){do;while(this[$ue](this[fg].shift()));if(!this[fg].length){let e=this[ug];!e||e.flowing||e.size===e.remain?this[n1]||this.emit("drain"):e.once("drain",o=>this.emit("drain"))}}[h8](e,r){let o=this[gm],a=o.blockRemain,n=a>=e.length&&r===0?e:e.slice(r,r+a);return o.write(n),o.blockRemain||(this[Sl]="header",this[gm]=null,o.end()),n.length}[rfe](e,r){let o=this[gm],a=this[h8](e,r);return this[gm]||this[efe](o),a}[hm](e,r,o){!this[fg].length&&!this[ug]?this.emit(e,r,o):this[fg].push([e,r,o])}[efe](e){switch(this[hm]("meta",this[jp]),e.type){case"ExtendedHeader":case"OldExtendedHeader":this[kl]=Zue.parse(this[jp],this[kl],!1);break;case"GlobalExtendedHeader":this[r1]=Zue.parse(this[jp],this[r1],!0);break;case"NextFileHasLongPath":case"OldGnuLongPath":this[kl]=this[kl]||Object.create(null),this[kl].path=this[jp].replace(/\0.*/,"");break;case"NextFileHasLongLinkpath":this[kl]=this[kl]||Object.create(null),this[kl].linkpath=this[jp].replace(/\0.*/,"");break;default:throw new Error("unknown meta: "+e.type)}}abort(e){this[Yp]=!0,this.emit("abort",e),this.warn("TAR_ABORT",e,{recoverable:!1})}write(e){if(this[Yp])return;if(this[eA]===null&&e){if(this[Di]&&(e=Buffer.concat([this[Di],e]),this[Di]=null),e.lengththis[Fx](n)),this[eA].on("error",n=>this.abort(n)),this[eA].on("end",n=>{this[pm]=!0,this[Fx]()}),this[n1]=!0;let a=this[eA][o?"end":"write"](e);return this[n1]=!1,a}}this[n1]=!0,this[eA]?this[eA].write(e):this[Fx](e),this[n1]=!1;let r=this[fg].length?!1:this[ug]?this[ug].flowing:!0;return!r&&!this[fg].length&&this[ug].once("drain",o=>this.emit("drain")),r}[d8](e){e&&!this[Yp]&&(this[Di]=this[Di]?Buffer.concat([this[Di],e]):e)}[m8](){if(this[pm]&&!this[tfe]&&!this[Yp]&&!this[Tx]){this[tfe]=!0;let e=this[gm];if(e&&e.blockRemain){let r=this[Di]?this[Di].length:0;this.warn("TAR_BAD_ARCHIVE",`Truncated input (needed ${e.blockRemain} more bytes, only ${r} available)`,{entry:e}),this[Di]&&e.write(this[Di]),e.end()}this[hm](Nx)}}[Fx](e){if(this[Tx])this[d8](e);else if(!e&&!this[Di])this[m8]();else{if(this[Tx]=!0,this[Di]){this[d8](e);let r=this[Di];this[Di]=null,this[Rx](r)}else this[Rx](e);for(;this[Di]&&this[Di].length>=512&&!this[Yp]&&!this[Lx];){let r=this[Di];this[Di]=null,this[Rx](r)}this[Tx]=!1}(!this[Di]||this[pm])&&this[m8]()}[Rx](e){let r=0,o=e.length;for(;r+512<=o&&!this[Yp]&&!this[Lx];)switch(this[Sl]){case"begin":case"header":this[nfe](e,r),r+=512;break;case"ignore":case"body":r+=this[h8](e,r);break;case"meta":r+=this[rfe](e,r);break;default:throw new Error("invalid state: "+this[Sl])}r{"use strict";var glt=VC(),ofe=Ox(),gE=Ie("fs"),plt=fE(),sfe=Ie("path"),y8=nE();Afe.exports=(t,e,r)=>{typeof t=="function"?(r=t,e=null,t={}):Array.isArray(t)&&(e=t,t={}),typeof e=="function"&&(r=e,e=null),e?e=Array.from(e):e=[];let o=glt(t);if(o.sync&&typeof r=="function")throw new TypeError("callback not supported for sync tar functions");if(!o.file&&typeof r=="function")throw new TypeError("callback only supported with file option");return e.length&&dlt(o,e),o.noResume||hlt(o),o.file&&o.sync?mlt(o):o.file?ylt(o,r):afe(o)};var hlt=t=>{let e=t.onentry;t.onentry=e?r=>{e(r),r.resume()}:r=>r.resume()},dlt=(t,e)=>{let r=new Map(e.map(n=>[y8(n),!0])),o=t.filter,a=(n,c)=>{let f=c||sfe.parse(n).root||".",g=n===f?!1:r.has(n)?r.get(n):a(sfe.dirname(n),f);return r.set(n,g),g};t.filter=o?(n,c)=>o(n,c)&&a(y8(n)):n=>a(y8(n))},mlt=t=>{let e=afe(t),r=t.file,o=!0,a;try{let n=gE.statSync(r),c=t.maxReadSize||16*1024*1024;if(n.size{let r=new ofe(t),o=t.maxReadSize||16*1024*1024,a=t.file,n=new Promise((c,f)=>{r.on("error",f),r.on("end",c),gE.stat(a,(g,p)=>{if(g)f(g);else{let E=new plt.ReadStream(a,{readSize:o,size:p.size});E.on("error",f),E.pipe(r)}})});return e?n.then(e,e):n},afe=t=>new ofe(t)});var pfe=_((S4t,gfe)=>{"use strict";var Clt=VC(),Kx=Qx(),lfe=fE(),cfe=Ux(),ufe=Ie("path");gfe.exports=(t,e,r)=>{if(typeof e=="function"&&(r=e),Array.isArray(t)&&(e=t,t={}),!e||!Array.isArray(e)||!e.length)throw new TypeError("no files or directories specified");e=Array.from(e);let o=Clt(t);if(o.sync&&typeof r=="function")throw new TypeError("callback not supported for sync tar functions");if(!o.file&&typeof r=="function")throw new TypeError("callback only supported with file option");return o.file&&o.sync?Elt(o,e):o.file?Ilt(o,e,r):o.sync?wlt(o,e):Blt(o,e)};var Elt=(t,e)=>{let r=new Kx.Sync(t),o=new lfe.WriteStreamSync(t.file,{mode:t.mode||438});r.pipe(o),ffe(r,e)},Ilt=(t,e,r)=>{let o=new Kx(t),a=new lfe.WriteStream(t.file,{mode:t.mode||438});o.pipe(a);let n=new Promise((c,f)=>{a.on("error",f),a.on("close",c),o.on("error",f)});return C8(o,e),r?n.then(r,r):n},ffe=(t,e)=>{e.forEach(r=>{r.charAt(0)==="@"?cfe({file:ufe.resolve(t.cwd,r.substr(1)),sync:!0,noResume:!0,onentry:o=>t.add(o)}):t.add(r)}),t.end()},C8=(t,e)=>{for(;e.length;){let r=e.shift();if(r.charAt(0)==="@")return cfe({file:ufe.resolve(t.cwd,r.substr(1)),noResume:!0,onentry:o=>t.add(o)}).then(o=>C8(t,e));t.add(r)}t.end()},wlt=(t,e)=>{let r=new Kx.Sync(t);return ffe(r,e),r},Blt=(t,e)=>{let r=new Kx(t);return C8(r,e),r}});var E8=_((k4t,Ife)=>{"use strict";var Qlt=VC(),hfe=Qx(),FA=Ie("fs"),dfe=fE(),mfe=Ux(),yfe=Ie("path"),Cfe=rE();Ife.exports=(t,e,r)=>{let o=Qlt(t);if(!o.file)throw new TypeError("file is required");if(o.gzip)throw new TypeError("cannot append to compressed archives");if(!e||!Array.isArray(e)||!e.length)throw new TypeError("no files or directories specified");return e=Array.from(e),o.sync?vlt(o,e):Slt(o,e,r)};var vlt=(t,e)=>{let r=new hfe.Sync(t),o=!0,a,n;try{try{a=FA.openSync(t.file,"r+")}catch(g){if(g.code==="ENOENT")a=FA.openSync(t.file,"w+");else throw g}let c=FA.fstatSync(a),f=Buffer.alloc(512);e:for(n=0;nc.size)break;n+=p,t.mtimeCache&&t.mtimeCache.set(g.path,g.mtime)}o=!1,Dlt(t,r,n,a,e)}finally{if(o)try{FA.closeSync(a)}catch{}}},Dlt=(t,e,r,o,a)=>{let n=new dfe.WriteStreamSync(t.file,{fd:o,start:r});e.pipe(n),klt(e,a)},Slt=(t,e,r)=>{e=Array.from(e);let o=new hfe(t),a=(c,f,g)=>{let p=(C,N)=>{C?FA.close(c,U=>g(C)):g(null,N)},E=0;if(f===0)return p(null,0);let B=0,Q=Buffer.alloc(512),x=(C,N)=>{if(C)return p(C);if(B+=N,B<512&&N)return FA.read(c,Q,B,Q.length-B,E+B,x);if(E===0&&Q[0]===31&&Q[1]===139)return p(new Error("cannot append to compressed archives"));if(B<512)return p(null,E);let U=new Cfe(Q);if(!U.cksumValid)return p(null,E);let H=512*Math.ceil(U.size/512);if(E+H+512>f||(E+=H+512,E>=f))return p(null,E);t.mtimeCache&&t.mtimeCache.set(U.path,U.mtime),B=0,FA.read(c,Q,0,512,E,x)};FA.read(c,Q,0,512,E,x)},n=new Promise((c,f)=>{o.on("error",f);let g="r+",p=(E,B)=>{if(E&&E.code==="ENOENT"&&g==="r+")return g="w+",FA.open(t.file,g,p);if(E)return f(E);FA.fstat(B,(Q,x)=>{if(Q)return FA.close(B,()=>f(Q));a(B,x.size,(C,N)=>{if(C)return f(C);let U=new dfe.WriteStream(t.file,{fd:B,start:N});o.pipe(U),U.on("error",f),U.on("close",c),Efe(o,e)})})};FA.open(t.file,g,p)});return r?n.then(r,r):n},klt=(t,e)=>{e.forEach(r=>{r.charAt(0)==="@"?mfe({file:yfe.resolve(t.cwd,r.substr(1)),sync:!0,noResume:!0,onentry:o=>t.add(o)}):t.add(r)}),t.end()},Efe=(t,e)=>{for(;e.length;){let r=e.shift();if(r.charAt(0)==="@")return mfe({file:yfe.resolve(t.cwd,r.substr(1)),noResume:!0,onentry:o=>t.add(o)}).then(o=>Efe(t,e));t.add(r)}t.end()}});var Bfe=_((x4t,wfe)=>{"use strict";var xlt=VC(),Plt=E8();wfe.exports=(t,e,r)=>{let o=xlt(t);if(!o.file)throw new TypeError("file is required");if(o.gzip)throw new TypeError("cannot append to compressed archives");if(!e||!Array.isArray(e)||!e.length)throw new TypeError("no files or directories specified");return e=Array.from(e),blt(o),Plt(o,e,r)};var blt=t=>{let e=t.filter;t.mtimeCache||(t.mtimeCache=new Map),t.filter=e?(r,o)=>e(r,o)&&!(t.mtimeCache.get(r)>o.mtime):(r,o)=>!(t.mtimeCache.get(r)>o.mtime)}});var Dfe=_((P4t,vfe)=>{var{promisify:Qfe}=Ie("util"),Wp=Ie("fs"),Flt=t=>{if(!t)t={mode:511,fs:Wp};else if(typeof t=="object")t={mode:511,fs:Wp,...t};else if(typeof t=="number")t={mode:t,fs:Wp};else if(typeof t=="string")t={mode:parseInt(t,8),fs:Wp};else throw new TypeError("invalid options argument");return t.mkdir=t.mkdir||t.fs.mkdir||Wp.mkdir,t.mkdirAsync=Qfe(t.mkdir),t.stat=t.stat||t.fs.stat||Wp.stat,t.statAsync=Qfe(t.stat),t.statSync=t.statSync||t.fs.statSync||Wp.statSync,t.mkdirSync=t.mkdirSync||t.fs.mkdirSync||Wp.mkdirSync,t};vfe.exports=Flt});var kfe=_((b4t,Sfe)=>{var Rlt=process.platform,{resolve:Tlt,parse:Nlt}=Ie("path"),Mlt=t=>{if(/\0/.test(t))throw Object.assign(new TypeError("path must be a string without null bytes"),{path:t,code:"ERR_INVALID_ARG_VALUE"});if(t=Tlt(t),Rlt==="win32"){let e=/[*|"<>?:]/,{root:r}=Nlt(t);if(e.test(t.substr(r.length)))throw Object.assign(new Error("Illegal characters in path."),{path:t,code:"EINVAL"})}return t};Sfe.exports=Mlt});var Rfe=_((F4t,Ffe)=>{var{dirname:xfe}=Ie("path"),Pfe=(t,e,r=void 0)=>r===e?Promise.resolve():t.statAsync(e).then(o=>o.isDirectory()?r:void 0,o=>o.code==="ENOENT"?Pfe(t,xfe(e),e):void 0),bfe=(t,e,r=void 0)=>{if(r!==e)try{return t.statSync(e).isDirectory()?r:void 0}catch(o){return o.code==="ENOENT"?bfe(t,xfe(e),e):void 0}};Ffe.exports={findMade:Pfe,findMadeSync:bfe}});var B8=_((R4t,Nfe)=>{var{dirname:Tfe}=Ie("path"),I8=(t,e,r)=>{e.recursive=!1;let o=Tfe(t);return o===t?e.mkdirAsync(t,e).catch(a=>{if(a.code!=="EISDIR")throw a}):e.mkdirAsync(t,e).then(()=>r||t,a=>{if(a.code==="ENOENT")return I8(o,e).then(n=>I8(t,e,n));if(a.code!=="EEXIST"&&a.code!=="EROFS")throw a;return e.statAsync(t).then(n=>{if(n.isDirectory())return r;throw a},()=>{throw a})})},w8=(t,e,r)=>{let o=Tfe(t);if(e.recursive=!1,o===t)try{return e.mkdirSync(t,e)}catch(a){if(a.code!=="EISDIR")throw a;return}try{return e.mkdirSync(t,e),r||t}catch(a){if(a.code==="ENOENT")return w8(t,e,w8(o,e,r));if(a.code!=="EEXIST"&&a.code!=="EROFS")throw a;try{if(!e.statSync(t).isDirectory())throw a}catch{throw a}}};Nfe.exports={mkdirpManual:I8,mkdirpManualSync:w8}});var Ofe=_((T4t,Lfe)=>{var{dirname:Mfe}=Ie("path"),{findMade:Llt,findMadeSync:Olt}=Rfe(),{mkdirpManual:Ult,mkdirpManualSync:Klt}=B8(),_lt=(t,e)=>(e.recursive=!0,Mfe(t)===t?e.mkdirAsync(t,e):Llt(e,t).then(o=>e.mkdirAsync(t,e).then(()=>o).catch(a=>{if(a.code==="ENOENT")return Ult(t,e);throw a}))),Hlt=(t,e)=>{if(e.recursive=!0,Mfe(t)===t)return e.mkdirSync(t,e);let o=Olt(e,t);try{return e.mkdirSync(t,e),o}catch(a){if(a.code==="ENOENT")return Klt(t,e);throw a}};Lfe.exports={mkdirpNative:_lt,mkdirpNativeSync:Hlt}});var Hfe=_((N4t,_fe)=>{var Ufe=Ie("fs"),qlt=process.version,Q8=qlt.replace(/^v/,"").split("."),Kfe=+Q8[0]>10||+Q8[0]==10&&+Q8[1]>=12,Glt=Kfe?t=>t.mkdir===Ufe.mkdir:()=>!1,jlt=Kfe?t=>t.mkdirSync===Ufe.mkdirSync:()=>!1;_fe.exports={useNative:Glt,useNativeSync:jlt}});var Jfe=_((M4t,Wfe)=>{var pE=Dfe(),hE=kfe(),{mkdirpNative:qfe,mkdirpNativeSync:Gfe}=Ofe(),{mkdirpManual:jfe,mkdirpManualSync:Yfe}=B8(),{useNative:Ylt,useNativeSync:Wlt}=Hfe(),dE=(t,e)=>(t=hE(t),e=pE(e),Ylt(e)?qfe(t,e):jfe(t,e)),Jlt=(t,e)=>(t=hE(t),e=pE(e),Wlt(e)?Gfe(t,e):Yfe(t,e));dE.sync=Jlt;dE.native=(t,e)=>qfe(hE(t),pE(e));dE.manual=(t,e)=>jfe(hE(t),pE(e));dE.nativeSync=(t,e)=>Gfe(hE(t),pE(e));dE.manualSync=(t,e)=>Yfe(hE(t),pE(e));Wfe.exports=dE});var tge=_((L4t,ege)=>{"use strict";var xl=Ie("fs"),mm=Ie("path"),Vlt=xl.lchown?"lchown":"chown",zlt=xl.lchownSync?"lchownSync":"chownSync",zfe=xl.lchown&&!process.version.match(/v1[1-9]+\./)&&!process.version.match(/v10\.[6-9]/),Vfe=(t,e,r)=>{try{return xl[zlt](t,e,r)}catch(o){if(o.code!=="ENOENT")throw o}},Xlt=(t,e,r)=>{try{return xl.chownSync(t,e,r)}catch(o){if(o.code!=="ENOENT")throw o}},Zlt=zfe?(t,e,r,o)=>a=>{!a||a.code!=="EISDIR"?o(a):xl.chown(t,e,r,o)}:(t,e,r,o)=>o,v8=zfe?(t,e,r)=>{try{return Vfe(t,e,r)}catch(o){if(o.code!=="EISDIR")throw o;Xlt(t,e,r)}}:(t,e,r)=>Vfe(t,e,r),$lt=process.version,Xfe=(t,e,r)=>xl.readdir(t,e,r),ect=(t,e)=>xl.readdirSync(t,e);/^v4\./.test($lt)&&(Xfe=(t,e,r)=>xl.readdir(t,r));var _x=(t,e,r,o)=>{xl[Vlt](t,e,r,Zlt(t,e,r,a=>{o(a&&a.code!=="ENOENT"?a:null)}))},Zfe=(t,e,r,o,a)=>{if(typeof e=="string")return xl.lstat(mm.resolve(t,e),(n,c)=>{if(n)return a(n.code!=="ENOENT"?n:null);c.name=e,Zfe(t,c,r,o,a)});if(e.isDirectory())D8(mm.resolve(t,e.name),r,o,n=>{if(n)return a(n);let c=mm.resolve(t,e.name);_x(c,r,o,a)});else{let n=mm.resolve(t,e.name);_x(n,r,o,a)}},D8=(t,e,r,o)=>{Xfe(t,{withFileTypes:!0},(a,n)=>{if(a){if(a.code==="ENOENT")return o();if(a.code!=="ENOTDIR"&&a.code!=="ENOTSUP")return o(a)}if(a||!n.length)return _x(t,e,r,o);let c=n.length,f=null,g=p=>{if(!f){if(p)return o(f=p);if(--c===0)return _x(t,e,r,o)}};n.forEach(p=>Zfe(t,p,e,r,g))})},tct=(t,e,r,o)=>{if(typeof e=="string")try{let a=xl.lstatSync(mm.resolve(t,e));a.name=e,e=a}catch(a){if(a.code==="ENOENT")return;throw a}e.isDirectory()&&$fe(mm.resolve(t,e.name),r,o),v8(mm.resolve(t,e.name),r,o)},$fe=(t,e,r)=>{let o;try{o=ect(t,{withFileTypes:!0})}catch(a){if(a.code==="ENOENT")return;if(a.code==="ENOTDIR"||a.code==="ENOTSUP")return v8(t,e,r);throw a}return o&&o.length&&o.forEach(a=>tct(t,a,e,r)),v8(t,e,r)};ege.exports=D8;D8.sync=$fe});var sge=_((O4t,S8)=>{"use strict";var rge=Jfe(),Pl=Ie("fs"),Hx=Ie("path"),nge=tge(),dc=eE(),qx=class extends Error{constructor(e,r){super("Cannot extract through symbolic link"),this.path=r,this.symlink=e}get name(){return"SylinkError"}},Gx=class extends Error{constructor(e,r){super(r+": Cannot cd into '"+e+"'"),this.path=e,this.code=r}get name(){return"CwdError"}},jx=(t,e)=>t.get(dc(e)),i1=(t,e,r)=>t.set(dc(e),r),rct=(t,e)=>{Pl.stat(t,(r,o)=>{(r||!o.isDirectory())&&(r=new Gx(t,r&&r.code||"ENOTDIR")),e(r)})};S8.exports=(t,e,r)=>{t=dc(t);let o=e.umask,a=e.mode|448,n=(a&o)!==0,c=e.uid,f=e.gid,g=typeof c=="number"&&typeof f=="number"&&(c!==e.processUid||f!==e.processGid),p=e.preserve,E=e.unlink,B=e.cache,Q=dc(e.cwd),x=(U,H)=>{U?r(U):(i1(B,t,!0),H&&g?nge(H,c,f,X=>x(X)):n?Pl.chmod(t,a,r):r())};if(B&&jx(B,t)===!0)return x();if(t===Q)return rct(t,x);if(p)return rge(t,{mode:a}).then(U=>x(null,U),x);let N=dc(Hx.relative(Q,t)).split("/");Yx(Q,N,a,B,E,Q,null,x)};var Yx=(t,e,r,o,a,n,c,f)=>{if(!e.length)return f(null,c);let g=e.shift(),p=dc(Hx.resolve(t+"/"+g));if(jx(o,p))return Yx(p,e,r,o,a,n,c,f);Pl.mkdir(p,r,ige(p,e,r,o,a,n,c,f))},ige=(t,e,r,o,a,n,c,f)=>g=>{g?Pl.lstat(t,(p,E)=>{if(p)p.path=p.path&&dc(p.path),f(p);else if(E.isDirectory())Yx(t,e,r,o,a,n,c,f);else if(a)Pl.unlink(t,B=>{if(B)return f(B);Pl.mkdir(t,r,ige(t,e,r,o,a,n,c,f))});else{if(E.isSymbolicLink())return f(new qx(t,t+"/"+e.join("/")));f(g)}}):(c=c||t,Yx(t,e,r,o,a,n,c,f))},nct=t=>{let e=!1,r="ENOTDIR";try{e=Pl.statSync(t).isDirectory()}catch(o){r=o.code}finally{if(!e)throw new Gx(t,r)}};S8.exports.sync=(t,e)=>{t=dc(t);let r=e.umask,o=e.mode|448,a=(o&r)!==0,n=e.uid,c=e.gid,f=typeof n=="number"&&typeof c=="number"&&(n!==e.processUid||c!==e.processGid),g=e.preserve,p=e.unlink,E=e.cache,B=dc(e.cwd),Q=U=>{i1(E,t,!0),U&&f&&nge.sync(U,n,c),a&&Pl.chmodSync(t,o)};if(E&&jx(E,t)===!0)return Q();if(t===B)return nct(B),Q();if(g)return Q(rge.sync(t,o));let C=dc(Hx.relative(B,t)).split("/"),N=null;for(let U=C.shift(),H=B;U&&(H+="/"+U);U=C.shift())if(H=dc(Hx.resolve(H)),!jx(E,H))try{Pl.mkdirSync(H,o),N=N||H,i1(E,H,!0)}catch{let ie=Pl.lstatSync(H);if(ie.isDirectory()){i1(E,H,!0);continue}else if(p){Pl.unlinkSync(H),Pl.mkdirSync(H,o),N=N||H,i1(E,H,!0);continue}else if(ie.isSymbolicLink())return new qx(H,H+"/"+C.join("/"))}return Q(N)}});var x8=_((U4t,oge)=>{var k8=Object.create(null),{hasOwnProperty:ict}=Object.prototype;oge.exports=t=>(ict.call(k8,t)||(k8[t]=t.normalize("NFKD")),k8[t])});var cge=_((K4t,lge)=>{var age=Ie("assert"),sct=x8(),oct=nE(),{join:Age}=Ie("path"),act=process.env.TESTING_TAR_FAKE_PLATFORM||process.platform,Act=act==="win32";lge.exports=()=>{let t=new Map,e=new Map,r=p=>p.split("/").slice(0,-1).reduce((B,Q)=>(B.length&&(Q=Age(B[B.length-1],Q)),B.push(Q||"/"),B),[]),o=new Set,a=p=>{let E=e.get(p);if(!E)throw new Error("function does not have any path reservations");return{paths:E.paths.map(B=>t.get(B)),dirs:[...E.dirs].map(B=>t.get(B))}},n=p=>{let{paths:E,dirs:B}=a(p);return E.every(Q=>Q[0]===p)&&B.every(Q=>Q[0]instanceof Set&&Q[0].has(p))},c=p=>o.has(p)||!n(p)?!1:(o.add(p),p(()=>f(p)),!0),f=p=>{if(!o.has(p))return!1;let{paths:E,dirs:B}=e.get(p),Q=new Set;return E.forEach(x=>{let C=t.get(x);age.equal(C[0],p),C.length===1?t.delete(x):(C.shift(),typeof C[0]=="function"?Q.add(C[0]):C[0].forEach(N=>Q.add(N)))}),B.forEach(x=>{let C=t.get(x);age(C[0]instanceof Set),C[0].size===1&&C.length===1?t.delete(x):C[0].size===1?(C.shift(),Q.add(C[0])):C[0].delete(p)}),o.delete(p),Q.forEach(x=>c(x)),!0};return{check:n,reserve:(p,E)=>{p=Act?["win32 parallelization disabled"]:p.map(Q=>sct(oct(Age(Q))).toLowerCase());let B=new Set(p.map(Q=>r(Q)).reduce((Q,x)=>Q.concat(x)));return e.set(E,{dirs:B,paths:p}),p.forEach(Q=>{let x=t.get(Q);x?x.push(E):t.set(Q,[E])}),B.forEach(Q=>{let x=t.get(Q);x?x[x.length-1]instanceof Set?x[x.length-1].add(E):x.push(new Set([E])):t.set(Q,[new Set([E])])}),c(E)}}}});var gge=_((_4t,fge)=>{var lct=process.platform,cct=lct==="win32",uct=global.__FAKE_TESTING_FS__||Ie("fs"),{O_CREAT:fct,O_TRUNC:gct,O_WRONLY:pct,UV_FS_O_FILEMAP:uge=0}=uct.constants,hct=cct&&!!uge,dct=512*1024,mct=uge|gct|fct|pct;fge.exports=hct?t=>t"w"});var O8=_((H4t,Sge)=>{"use strict";var yct=Ie("assert"),Cct=Ox(),Mn=Ie("fs"),Ect=fE(),gg=Ie("path"),Qge=sge(),pge=O3(),Ict=cge(),wct=U3(),RA=eE(),Bct=nE(),Qct=x8(),hge=Symbol("onEntry"),F8=Symbol("checkFs"),dge=Symbol("checkFs2"),Vx=Symbol("pruneCache"),R8=Symbol("isReusable"),bl=Symbol("makeFs"),T8=Symbol("file"),N8=Symbol("directory"),zx=Symbol("link"),mge=Symbol("symlink"),yge=Symbol("hardlink"),Cge=Symbol("unsupported"),Ege=Symbol("checkPath"),Jp=Symbol("mkdir"),Vo=Symbol("onError"),Wx=Symbol("pending"),Ige=Symbol("pend"),mE=Symbol("unpend"),P8=Symbol("ended"),b8=Symbol("maybeClose"),M8=Symbol("skip"),s1=Symbol("doChown"),o1=Symbol("uid"),a1=Symbol("gid"),A1=Symbol("checkedCwd"),vge=Ie("crypto"),Dge=gge(),vct=process.env.TESTING_TAR_FAKE_PLATFORM||process.platform,l1=vct==="win32",Dct=(t,e)=>{if(!l1)return Mn.unlink(t,e);let r=t+".DELETE."+vge.randomBytes(16).toString("hex");Mn.rename(t,r,o=>{if(o)return e(o);Mn.unlink(r,e)})},Sct=t=>{if(!l1)return Mn.unlinkSync(t);let e=t+".DELETE."+vge.randomBytes(16).toString("hex");Mn.renameSync(t,e),Mn.unlinkSync(e)},wge=(t,e,r)=>t===t>>>0?t:e===e>>>0?e:r,Bge=t=>Qct(Bct(RA(t))).toLowerCase(),kct=(t,e)=>{e=Bge(e);for(let r of t.keys()){let o=Bge(r);(o===e||o.indexOf(e+"/")===0)&&t.delete(r)}},xct=t=>{for(let e of t.keys())t.delete(e)},c1=class extends Cct{constructor(e){if(e||(e={}),e.ondone=r=>{this[P8]=!0,this[b8]()},super(e),this[A1]=!1,this.reservations=Ict(),this.transform=typeof e.transform=="function"?e.transform:null,this.writable=!0,this.readable=!1,this[Wx]=0,this[P8]=!1,this.dirCache=e.dirCache||new Map,typeof e.uid=="number"||typeof e.gid=="number"){if(typeof e.uid!="number"||typeof e.gid!="number")throw new TypeError("cannot set owner without number uid and gid");if(e.preserveOwner)throw new TypeError("cannot preserve owner in archive and also set owner explicitly");this.uid=e.uid,this.gid=e.gid,this.setOwner=!0}else this.uid=null,this.gid=null,this.setOwner=!1;e.preserveOwner===void 0&&typeof e.uid!="number"?this.preserveOwner=process.getuid&&process.getuid()===0:this.preserveOwner=!!e.preserveOwner,this.processUid=(this.preserveOwner||this.setOwner)&&process.getuid?process.getuid():null,this.processGid=(this.preserveOwner||this.setOwner)&&process.getgid?process.getgid():null,this.forceChown=e.forceChown===!0,this.win32=!!e.win32||l1,this.newer=!!e.newer,this.keep=!!e.keep,this.noMtime=!!e.noMtime,this.preservePaths=!!e.preservePaths,this.unlink=!!e.unlink,this.cwd=RA(gg.resolve(e.cwd||process.cwd())),this.strip=+e.strip||0,this.processUmask=e.noChmod?0:process.umask(),this.umask=typeof e.umask=="number"?e.umask:this.processUmask,this.dmode=e.dmode||511&~this.umask,this.fmode=e.fmode||438&~this.umask,this.on("entry",r=>this[hge](r))}warn(e,r,o={}){return(e==="TAR_BAD_ARCHIVE"||e==="TAR_ABORT")&&(o.recoverable=!1),super.warn(e,r,o)}[b8](){this[P8]&&this[Wx]===0&&(this.emit("prefinish"),this.emit("finish"),this.emit("end"),this.emit("close"))}[Ege](e){if(this.strip){let r=RA(e.path).split("/");if(r.length=this.strip)e.linkpath=o.slice(this.strip).join("/");else return!1}}if(!this.preservePaths){let r=RA(e.path),o=r.split("/");if(o.includes("..")||l1&&/^[a-z]:\.\.$/i.test(o[0]))return this.warn("TAR_ENTRY_ERROR","path contains '..'",{entry:e,path:r}),!1;let[a,n]=wct(r);a&&(e.path=n,this.warn("TAR_ENTRY_INFO",`stripping ${a} from absolute path`,{entry:e,path:r}))}if(gg.isAbsolute(e.path)?e.absolute=RA(gg.resolve(e.path)):e.absolute=RA(gg.resolve(this.cwd,e.path)),!this.preservePaths&&e.absolute.indexOf(this.cwd+"/")!==0&&e.absolute!==this.cwd)return this.warn("TAR_ENTRY_ERROR","path escaped extraction target",{entry:e,path:RA(e.path),resolvedPath:e.absolute,cwd:this.cwd}),!1;if(e.absolute===this.cwd&&e.type!=="Directory"&&e.type!=="GNUDumpDir")return!1;if(this.win32){let{root:r}=gg.win32.parse(e.absolute);e.absolute=r+pge.encode(e.absolute.substr(r.length));let{root:o}=gg.win32.parse(e.path);e.path=o+pge.encode(e.path.substr(o.length))}return!0}[hge](e){if(!this[Ege](e))return e.resume();switch(yct.equal(typeof e.absolute,"string"),e.type){case"Directory":case"GNUDumpDir":e.mode&&(e.mode=e.mode|448);case"File":case"OldFile":case"ContiguousFile":case"Link":case"SymbolicLink":return this[F8](e);case"CharacterDevice":case"BlockDevice":case"FIFO":default:return this[Cge](e)}}[Vo](e,r){e.name==="CwdError"?this.emit("error",e):(this.warn("TAR_ENTRY_ERROR",e,{entry:r}),this[mE](),r.resume())}[Jp](e,r,o){Qge(RA(e),{uid:this.uid,gid:this.gid,processUid:this.processUid,processGid:this.processGid,umask:this.processUmask,preserve:this.preservePaths,unlink:this.unlink,cache:this.dirCache,cwd:this.cwd,mode:r,noChmod:this.noChmod},o)}[s1](e){return this.forceChown||this.preserveOwner&&(typeof e.uid=="number"&&e.uid!==this.processUid||typeof e.gid=="number"&&e.gid!==this.processGid)||typeof this.uid=="number"&&this.uid!==this.processUid||typeof this.gid=="number"&&this.gid!==this.processGid}[o1](e){return wge(this.uid,e.uid,this.processUid)}[a1](e){return wge(this.gid,e.gid,this.processGid)}[T8](e,r){let o=e.mode&4095||this.fmode,a=new Ect.WriteStream(e.absolute,{flags:Dge(e.size),mode:o,autoClose:!1});a.on("error",g=>{a.fd&&Mn.close(a.fd,()=>{}),a.write=()=>!0,this[Vo](g,e),r()});let n=1,c=g=>{if(g){a.fd&&Mn.close(a.fd,()=>{}),this[Vo](g,e),r();return}--n===0&&Mn.close(a.fd,p=>{p?this[Vo](p,e):this[mE](),r()})};a.on("finish",g=>{let p=e.absolute,E=a.fd;if(e.mtime&&!this.noMtime){n++;let B=e.atime||new Date,Q=e.mtime;Mn.futimes(E,B,Q,x=>x?Mn.utimes(p,B,Q,C=>c(C&&x)):c())}if(this[s1](e)){n++;let B=this[o1](e),Q=this[a1](e);Mn.fchown(E,B,Q,x=>x?Mn.chown(p,B,Q,C=>c(C&&x)):c())}c()});let f=this.transform&&this.transform(e)||e;f!==e&&(f.on("error",g=>{this[Vo](g,e),r()}),e.pipe(f)),f.pipe(a)}[N8](e,r){let o=e.mode&4095||this.dmode;this[Jp](e.absolute,o,a=>{if(a){this[Vo](a,e),r();return}let n=1,c=f=>{--n===0&&(r(),this[mE](),e.resume())};e.mtime&&!this.noMtime&&(n++,Mn.utimes(e.absolute,e.atime||new Date,e.mtime,c)),this[s1](e)&&(n++,Mn.chown(e.absolute,this[o1](e),this[a1](e),c)),c()})}[Cge](e){e.unsupported=!0,this.warn("TAR_ENTRY_UNSUPPORTED",`unsupported entry type: ${e.type}`,{entry:e}),e.resume()}[mge](e,r){this[zx](e,e.linkpath,"symlink",r)}[yge](e,r){let o=RA(gg.resolve(this.cwd,e.linkpath));this[zx](e,o,"link",r)}[Ige](){this[Wx]++}[mE](){this[Wx]--,this[b8]()}[M8](e){this[mE](),e.resume()}[R8](e,r){return e.type==="File"&&!this.unlink&&r.isFile()&&r.nlink<=1&&!l1}[F8](e){this[Ige]();let r=[e.path];e.linkpath&&r.push(e.linkpath),this.reservations.reserve(r,o=>this[dge](e,o))}[Vx](e){e.type==="SymbolicLink"?xct(this.dirCache):e.type!=="Directory"&&kct(this.dirCache,e.absolute)}[dge](e,r){this[Vx](e);let o=f=>{this[Vx](e),r(f)},a=()=>{this[Jp](this.cwd,this.dmode,f=>{if(f){this[Vo](f,e),o();return}this[A1]=!0,n()})},n=()=>{if(e.absolute!==this.cwd){let f=RA(gg.dirname(e.absolute));if(f!==this.cwd)return this[Jp](f,this.dmode,g=>{if(g){this[Vo](g,e),o();return}c()})}c()},c=()=>{Mn.lstat(e.absolute,(f,g)=>{if(g&&(this.keep||this.newer&&g.mtime>e.mtime)){this[M8](e),o();return}if(f||this[R8](e,g))return this[bl](null,e,o);if(g.isDirectory()){if(e.type==="Directory"){let p=!this.noChmod&&e.mode&&(g.mode&4095)!==e.mode,E=B=>this[bl](B,e,o);return p?Mn.chmod(e.absolute,e.mode,E):E()}if(e.absolute!==this.cwd)return Mn.rmdir(e.absolute,p=>this[bl](p,e,o))}if(e.absolute===this.cwd)return this[bl](null,e,o);Dct(e.absolute,p=>this[bl](p,e,o))})};this[A1]?n():a()}[bl](e,r,o){if(e){this[Vo](e,r),o();return}switch(r.type){case"File":case"OldFile":case"ContiguousFile":return this[T8](r,o);case"Link":return this[yge](r,o);case"SymbolicLink":return this[mge](r,o);case"Directory":case"GNUDumpDir":return this[N8](r,o)}}[zx](e,r,o,a){Mn[o](r,e.absolute,n=>{n?this[Vo](n,e):(this[mE](),e.resume()),a()})}},Jx=t=>{try{return[null,t()]}catch(e){return[e,null]}},L8=class extends c1{[bl](e,r){return super[bl](e,r,()=>{})}[F8](e){if(this[Vx](e),!this[A1]){let n=this[Jp](this.cwd,this.dmode);if(n)return this[Vo](n,e);this[A1]=!0}if(e.absolute!==this.cwd){let n=RA(gg.dirname(e.absolute));if(n!==this.cwd){let c=this[Jp](n,this.dmode);if(c)return this[Vo](c,e)}}let[r,o]=Jx(()=>Mn.lstatSync(e.absolute));if(o&&(this.keep||this.newer&&o.mtime>e.mtime))return this[M8](e);if(r||this[R8](e,o))return this[bl](null,e);if(o.isDirectory()){if(e.type==="Directory"){let c=!this.noChmod&&e.mode&&(o.mode&4095)!==e.mode,[f]=c?Jx(()=>{Mn.chmodSync(e.absolute,e.mode)}):[];return this[bl](f,e)}let[n]=Jx(()=>Mn.rmdirSync(e.absolute));this[bl](n,e)}let[a]=e.absolute===this.cwd?[]:Jx(()=>Sct(e.absolute));this[bl](a,e)}[T8](e,r){let o=e.mode&4095||this.fmode,a=f=>{let g;try{Mn.closeSync(n)}catch(p){g=p}(f||g)&&this[Vo](f||g,e),r()},n;try{n=Mn.openSync(e.absolute,Dge(e.size),o)}catch(f){return a(f)}let c=this.transform&&this.transform(e)||e;c!==e&&(c.on("error",f=>this[Vo](f,e)),e.pipe(c)),c.on("data",f=>{try{Mn.writeSync(n,f,0,f.length)}catch(g){a(g)}}),c.on("end",f=>{let g=null;if(e.mtime&&!this.noMtime){let p=e.atime||new Date,E=e.mtime;try{Mn.futimesSync(n,p,E)}catch(B){try{Mn.utimesSync(e.absolute,p,E)}catch{g=B}}}if(this[s1](e)){let p=this[o1](e),E=this[a1](e);try{Mn.fchownSync(n,p,E)}catch(B){try{Mn.chownSync(e.absolute,p,E)}catch{g=g||B}}}a(g)})}[N8](e,r){let o=e.mode&4095||this.dmode,a=this[Jp](e.absolute,o);if(a){this[Vo](a,e),r();return}if(e.mtime&&!this.noMtime)try{Mn.utimesSync(e.absolute,e.atime||new Date,e.mtime)}catch{}if(this[s1](e))try{Mn.chownSync(e.absolute,this[o1](e),this[a1](e))}catch{}r(),e.resume()}[Jp](e,r){try{return Qge.sync(RA(e),{uid:this.uid,gid:this.gid,processUid:this.processUid,processGid:this.processGid,umask:this.processUmask,preserve:this.preservePaths,unlink:this.unlink,cache:this.dirCache,cwd:this.cwd,mode:r})}catch(o){return o}}[zx](e,r,o,a){try{Mn[o+"Sync"](r,e.absolute),a(),e.resume()}catch(n){return this[Vo](n,e)}}};c1.Sync=L8;Sge.exports=c1});var Fge=_((q4t,bge)=>{"use strict";var Pct=VC(),Xx=O8(),xge=Ie("fs"),Pge=fE(),kge=Ie("path"),U8=nE();bge.exports=(t,e,r)=>{typeof t=="function"?(r=t,e=null,t={}):Array.isArray(t)&&(e=t,t={}),typeof e=="function"&&(r=e,e=null),e?e=Array.from(e):e=[];let o=Pct(t);if(o.sync&&typeof r=="function")throw new TypeError("callback not supported for sync tar functions");if(!o.file&&typeof r=="function")throw new TypeError("callback only supported with file option");return e.length&&bct(o,e),o.file&&o.sync?Fct(o):o.file?Rct(o,r):o.sync?Tct(o):Nct(o)};var bct=(t,e)=>{let r=new Map(e.map(n=>[U8(n),!0])),o=t.filter,a=(n,c)=>{let f=c||kge.parse(n).root||".",g=n===f?!1:r.has(n)?r.get(n):a(kge.dirname(n),f);return r.set(n,g),g};t.filter=o?(n,c)=>o(n,c)&&a(U8(n)):n=>a(U8(n))},Fct=t=>{let e=new Xx.Sync(t),r=t.file,o=xge.statSync(r),a=t.maxReadSize||16*1024*1024;new Pge.ReadStreamSync(r,{readSize:a,size:o.size}).pipe(e)},Rct=(t,e)=>{let r=new Xx(t),o=t.maxReadSize||16*1024*1024,a=t.file,n=new Promise((c,f)=>{r.on("error",f),r.on("close",c),xge.stat(a,(g,p)=>{if(g)f(g);else{let E=new Pge.ReadStream(a,{readSize:o,size:p.size});E.on("error",f),E.pipe(r)}})});return e?n.then(e,e):n},Tct=t=>new Xx.Sync(t),Nct=t=>new Xx(t)});var Rge=_(Ms=>{"use strict";Ms.c=Ms.create=pfe();Ms.r=Ms.replace=E8();Ms.t=Ms.list=Ux();Ms.u=Ms.update=Bfe();Ms.x=Ms.extract=Fge();Ms.Pack=Qx();Ms.Unpack=O8();Ms.Parse=Ox();Ms.ReadEntry=ax();Ms.WriteEntry=V3();Ms.Header=rE();Ms.Pax=lx();Ms.types=b3()});var Tge,Nge,Mge,Vp,Zx,Lge=Lt(()=>{Tge=Ie("os"),Nge=be(kd()),Mge=Ie("worker_threads"),Vp=Symbol("kTaskInfo"),Zx=class{constructor(e){this.source=e;this.workers=[];this.limit=(0,Nge.default)(Math.max(1,(0,Tge.cpus)().length));this.cleanupInterval=setInterval(()=>{if(this.limit.pendingCount===0&&this.limit.activeCount===0){let r=this.workers.pop();r?r.terminate():clearInterval(this.cleanupInterval)}},5e3).unref()}createWorker(){this.cleanupInterval.refresh();let e=new Mge.Worker(this.source,{eval:!0,execArgv:[...process.execArgv,"--unhandled-rejections=strict"]});return e.on("message",r=>{if(!e[Vp])throw new Error("Assertion failed: Worker sent a result without having a task assigned");e[Vp].resolve(r),e[Vp]=null,e.unref(),this.workers.push(e)}),e.on("error",r=>{var o;(o=e[Vp])==null||o.reject(r),e[Vp]=null}),e.on("exit",r=>{var o;r!==0&&((o=e[Vp])==null||o.reject(new Error(`Worker exited with code ${r}`))),e[Vp]=null}),e}run(e){return this.limit(()=>{let r=this.workers.pop()??this.createWorker();return r.ref(),new Promise((o,a)=>{r[Vp]={resolve:o,reject:a},r.postMessage(e)})})}}});var Uge=_((Y4t,Oge)=>{var K8;Oge.exports.getContent=()=>(typeof K8>"u"&&(K8=Ie("zlib").brotliDecompressSync(Buffer.from("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","base64")).toString()),K8)});var ys={};tr(ys,{convertToZip:()=>Lct,extractArchiveTo:()=>Uct,makeArchiveFromDirectory:()=>Mct});async function Mct(t,{baseFs:e=new jn,prefixPath:r=Bt.root,compressionLevel:o,inMemory:a=!1}={}){let n;if(a)n=new Fs(null,{level:o});else{let f=await ge.mktempPromise(),g=ee.join(f,"archive.zip");n=new Fs(g,{create:!0,level:o})}let c=ee.resolve(Bt.root,r);return await n.copyPromise(c,t,{baseFs:e,stableTime:!0,stableSort:!0}),n}async function Lct(t,e){let r=await ge.mktempPromise(),o=ee.join(r,"archive.zip");return Kge||(Kge=new Zx((0,qge.getContent)())),await Kge.run({tmpFile:o,tgz:t,opts:e}),new Fs(o,{level:e.compressionLevel})}async function*Oct(t){let e=new Hge.default.Parse,r=new _ge.PassThrough({objectMode:!0,autoDestroy:!0,emitClose:!0});e.on("entry",o=>{r.write(o)}),e.on("error",o=>{r.destroy(o)}),e.on("close",()=>{r.destroyed||r.end()}),e.end(t);for await(let o of r){let a=o;yield a,a.resume()}}async function Uct(t,e,{stripComponents:r=0,prefixPath:o=Bt.dot}={}){function a(n){if(n.path[0]==="/")return!0;let c=n.path.split(/\//g);return!!(c.some(f=>f==="..")||c.length<=r)}for await(let n of Oct(t)){if(a(n))continue;let c=ee.normalize(me.toPortablePath(n.path)).replace(/\/$/,"").split(/\//g);if(c.length<=r)continue;let f=c.slice(r).join("/"),g=ee.join(o,f),p=420;switch((n.type==="Directory"||((n.mode??0)&73)!==0)&&(p|=73),n.type){case"Directory":e.mkdirpSync(ee.dirname(g),{chmod:493,utimes:[Li.SAFE_TIME,Li.SAFE_TIME]}),e.mkdirSync(g,{mode:p}),e.utimesSync(g,Li.SAFE_TIME,Li.SAFE_TIME);break;case"OldFile":case"File":e.mkdirpSync(ee.dirname(g),{chmod:493,utimes:[Li.SAFE_TIME,Li.SAFE_TIME]}),e.writeFileSync(g,await hC(n),{mode:p}),e.utimesSync(g,Li.SAFE_TIME,Li.SAFE_TIME);break;case"SymbolicLink":e.mkdirpSync(ee.dirname(g),{chmod:493,utimes:[Li.SAFE_TIME,Li.SAFE_TIME]}),e.symlinkSync(n.linkpath,g),e.lutimesSync(g,Li.SAFE_TIME,Li.SAFE_TIME);break}}return e}var _ge,Hge,qge,Kge,Gge=Lt(()=>{Ft();oc();_ge=Ie("stream"),Hge=be(Rge());Lge();ml();qge=be(Uge())});var Yge=_((_8,jge)=>{(function(t,e){typeof _8=="object"?jge.exports=e():typeof define=="function"&&define.amd?define(e):t.treeify=e()})(_8,function(){function t(a,n){var c=n?"\u2514":"\u251C";return a?c+="\u2500 ":c+="\u2500\u2500\u2510",c}function e(a,n){var c=[];for(var f in a)!a.hasOwnProperty(f)||n&&typeof a[f]=="function"||c.push(f);return c}function r(a,n,c,f,g,p,E){var B="",Q=0,x,C,N=f.slice(0);if(N.push([n,c])&&f.length>0&&(f.forEach(function(H,X){X>0&&(B+=(H[1]?" ":"\u2502")+" "),!C&&H[0]===n&&(C=!0)}),B+=t(a,c)+a,g&&(typeof n!="object"||n instanceof Date)&&(B+=": "+n),C&&(B+=" (circular ref.)"),E(B)),!C&&typeof n=="object"){var U=e(n,p);U.forEach(function(H){x=++Q===U.length,r(H,n[H],x,N,g,p,E)})}}var o={};return o.asLines=function(a,n,c,f){var g=typeof c!="function"?c:!1;r(".",a,!1,[],n,g,f||c)},o.asTree=function(a,n,c){var f="";return r(".",a,!1,[],n,c,function(g){f+=g+` -`}),f},o})});var TA={};tr(TA,{emitList:()=>Kct,emitTree:()=>zge,treeNodeToJson:()=>Vge,treeNodeToTreeify:()=>Jge});function Jge(t,{configuration:e}){let r={},o=(a,n)=>{let c=Array.isArray(a)?a.entries():Object.entries(a);for(let[f,{label:g,value:p,children:E}]of c){let B=[];typeof g<"u"&&B.push(hS(e,g,2)),typeof p<"u"&&B.push(ar(e,p[0],p[1])),B.length===0&&B.push(hS(e,`${f}`,2));let Q=B.join(": "),x=n[Q]={};typeof E<"u"&&o(E,x)}};if(typeof t.children>"u")throw new Error("The root node must only contain children");return o(t.children,r),r}function Vge(t){let e=r=>{if(typeof r.children>"u"){if(typeof r.value>"u")throw new Error("Assertion failed: Expected a value to be set if the children are missing");return qd(r.value[0],r.value[1])}let o=Array.isArray(r.children)?r.children.entries():Object.entries(r.children??{}),a=Array.isArray(r.children)?[]:{};for(let[n,c]of o)a[n]=e(c);return typeof r.value>"u"?a:{value:qd(r.value[0],r.value[1]),children:a}};return e(t)}function Kct(t,{configuration:e,stdout:r,json:o}){let a=t.map(n=>({value:n}));zge({children:a},{configuration:e,stdout:r,json:o})}function zge(t,{configuration:e,stdout:r,json:o,separators:a=0}){if(o){let c=Array.isArray(t.children)?t.children.values():Object.values(t.children??{});for(let f of c)r.write(`${JSON.stringify(Vge(f))} -`);return}let n=(0,Wge.asTree)(Jge(t,{configuration:e}),!1,!1);if(a>=1&&(n=n.replace(/^([├└]─)/gm,`\u2502 -$1`).replace(/^│\n/,"")),a>=2)for(let c=0;c<2;++c)n=n.replace(/^([│ ].{2}[├│ ].{2}[^\n]+\n)(([│ ]).{2}[├└].{2}[^\n]*\n[│ ].{2}[│ ].{2}[├└]─)/gm,`$1$3 \u2502 -$2`).replace(/^│\n/,"");if(a>=3)throw new Error("Only the first two levels are accepted by treeUtils.emitTree");r.write(n)}var Wge,Xge=Lt(()=>{Wge=be(Yge());El()});function H8(t){let e=t.indexOf("/");return e!==-1?t.slice(0,e):null}function Hct(t){let e=t.indexOf("/");return e!==-1?t.slice(e+1):t}var Zge,q8,_ct,$r,$ge=Lt(()=>{Ft();Ft();oc();Zge=Ie("crypto"),q8=be(Ie("fs"));wl();zd();ml();go();_ct=9,$r=class{constructor(e,{configuration:r,immutable:o=r.get("enableImmutableCache"),check:a=!1}){this.markedFiles=new Set;this.mutexes=new Map;this.cacheId=`-${(0,Zge.randomBytes)(8).toString("hex")}.tmp`;this.configuration=r,this.cwd=e,this.immutable=o,this.check=a;let n=r.get("cacheKeyOverride");if(n!==null)this.cacheKey=`${n}`;else{let c=r.get("compressionLevel"),f=c!==My?`c${c}`:"";this.cacheKey=[_ct,f].join("")}}static async find(e,{immutable:r,check:o}={}){let a=new $r(e.get("cacheFolder"),{configuration:e,immutable:r,check:o});return await a.setup(),a}get mirrorCwd(){if(!this.configuration.get("enableMirror"))return null;let e=`${this.configuration.get("globalFolder")}/cache`;return e!==this.cwd?e:null}getVersionFilename(e){return`${vC(e)}-${this.cacheKey}.zip`}getChecksumFilename(e,r){let a=Hct(r).slice(0,10);return`${vC(e)}-${a}.zip`}getLocatorPath(e,r,o={}){var n;return this.mirrorCwd===null||((n=o.unstablePackages)==null?void 0:n.has(e.locatorHash))?ee.resolve(this.cwd,this.getVersionFilename(e)):r===null||H8(r)!==this.cacheKey?null:ee.resolve(this.cwd,this.getChecksumFilename(e,r))}getLocatorMirrorPath(e){let r=this.mirrorCwd;return r!==null?ee.resolve(r,this.getVersionFilename(e)):null}async setup(){if(!this.configuration.get("enableGlobalCache"))if(this.immutable){if(!await ge.existsPromise(this.cwd))throw new rr(56,"Cache path does not exist.")}else{await ge.mkdirPromise(this.cwd,{recursive:!0});let e=ee.resolve(this.cwd,".gitignore");await ge.changeFilePromise(e,`/.gitignore -*.flock -*.tmp -`)}(this.mirrorCwd||!this.immutable)&&await ge.mkdirPromise(this.mirrorCwd||this.cwd,{recursive:!0})}async fetchPackageFromCache(e,r,{onHit:o,onMiss:a,loader:n,...c}){var pe;let f=this.getLocatorMirrorPath(e),g=new jn,p=()=>{let Ee=new Fs,ke=ee.join(Bt.root,$O(e));return Ee.mkdirSync(ke,{recursive:!0}),Ee.writeJsonSync(ee.join(ke,Xr.manifest),{name:Cn(e),mocked:!0}),Ee},E=async(Ee,ke=null)=>{var Ke;if(ke===null&&((Ke=c.unstablePackages)==null?void 0:Ke.has(e.locatorHash)))return null;let h=!c.skipIntegrityCheck||!r?`${this.cacheKey}/${await jS(Ee)}`:r;if(ke!==null){let Ce=!c.skipIntegrityCheck||!r?`${this.cacheKey}/${await jS(ke)}`:r;if(h!==Ce)throw new rr(18,"The remote archive doesn't match the local checksum - has the local cache been corrupted?")}if(r!==null&&h!==r){let Ce;switch(this.check?Ce="throw":H8(r)!==H8(h)?Ce="update":Ce=this.configuration.get("checksumBehavior"),Ce){case"ignore":return r;case"update":return h;default:case"throw":throw new rr(18,"The remote archive doesn't match the expected checksum")}}return h},B=async Ee=>{if(!n)throw new Error(`Cache check required but no loader configured for ${Yr(this.configuration,e)}`);let ke=await n(),h=ke.getRealPath();return ke.saveAndClose(),await ge.chmodPromise(h,420),await E(Ee,h)},Q=async()=>{if(f===null||!await ge.existsPromise(f)){let Ee=await n(),ke=Ee.getRealPath();return Ee.saveAndClose(),{source:"loader",path:ke}}return{source:"mirror",path:f}},x=async()=>{if(!n)throw new Error(`Cache entry required but missing for ${Yr(this.configuration,e)}`);if(this.immutable)throw new rr(56,`Cache entry required but missing for ${Yr(this.configuration,e)}`);let{path:Ee,source:ke}=await Q(),h=await E(Ee),Ke=this.getLocatorPath(e,h,c);if(!Ke)throw new Error("Assertion failed: Expected the cache path to be available");let Ce=[];ke!=="mirror"&&f!==null&&Ce.push(async()=>{let le=`${f}${this.cacheId}`;await ge.copyFilePromise(Ee,le,q8.default.constants.COPYFILE_FICLONE),await ge.chmodPromise(le,420),await ge.renamePromise(le,f)}),(!c.mirrorWriteOnly||f===null)&&Ce.push(async()=>{let le=`${Ke}${this.cacheId}`;await ge.copyFilePromise(Ee,le,q8.default.constants.COPYFILE_FICLONE),await ge.chmodPromise(le,420),await ge.renamePromise(le,Ke)});let Be=c.mirrorWriteOnly?f??Ke:Ke;return await Promise.all(Ce.map(le=>le())),[!1,Be,h]},C=async()=>{let ke=(async()=>{var re;let h=this.getLocatorPath(e,r,c),Ke=h!==null?this.markedFiles.has(h)||await g.existsPromise(h):!1,Ce=!!((re=c.mockedPackages)!=null&&re.has(e.locatorHash))&&(!this.check||!Ke),Be=Ce||Ke,le=Be?o:a;if(le&&le(),Be){let Se=null,Ue=h;return Ce||(Se=this.check?await B(Ue):await E(Ue)),[Ce,Ue,Se]}else return x()})();this.mutexes.set(e.locatorHash,ke);try{return await ke}finally{this.mutexes.delete(e.locatorHash)}};for(let Ee;Ee=this.mutexes.get(e.locatorHash);)await Ee;let[N,U,H]=await C();N||this.markedFiles.add(U);let X,ie=N?()=>p():()=>new Fs(U,{baseFs:g,readOnly:!0}),fe=new by(()=>$M(()=>X=ie(),Ee=>`Failed to open the cache entry for ${Yr(this.configuration,e)}: ${Ee}`),ee),ye=new au(U,{baseFs:fe,pathUtils:ee}),Qe=()=>{X==null||X.discardAndClose()},Pe=(pe=c.unstablePackages)!=null&&pe.has(e.locatorHash)?null:H;return[ye,Qe,Pe]}}});var $x,epe=Lt(()=>{$x=(r=>(r[r.SCRIPT=0]="SCRIPT",r[r.SHELLCODE=1]="SHELLCODE",r))($x||{})});var qct,yE,G8=Lt(()=>{Ft();cl();kp();go();qct=[[/^(git(?:\+(?:https|ssh))?:\/\/.*(?:\.git)?)#(.*)$/,(t,e,r,o)=>`${r}#commit=${o}`],[/^https:\/\/((?:[^/]+?)@)?codeload\.github\.com\/([^/]+\/[^/]+)\/tar\.gz\/([0-9a-f]+)$/,(t,e,r="",o,a)=>`https://${r}github.com/${o}.git#commit=${a}`],[/^https:\/\/((?:[^/]+?)@)?github\.com\/([^/]+\/[^/]+?)(?:\.git)?#([0-9a-f]+)$/,(t,e,r="",o,a)=>`https://${r}github.com/${o}.git#commit=${a}`],[/^https?:\/\/[^/]+\/(?:[^/]+\/)*(?:@.+(?:\/|(?:%2f)))?([^/]+)\/(?:-|download)\/\1-[^/]+\.tgz(?:#|$)/,t=>`npm:${t}`],[/^https:\/\/npm\.pkg\.github\.com\/download\/(?:@[^/]+)\/(?:[^/]+)\/(?:[^/]+)\/(?:[0-9a-f]+)(?:#|$)/,t=>`npm:${t}`],[/^https:\/\/npm\.fontawesome\.com\/(?:@[^/]+)\/([^/]+)\/-\/([^/]+)\/\1-\2.tgz(?:#|$)/,t=>`npm:${t}`],[/^https?:\/\/[^/]+\/.*\/(@[^/]+)\/([^/]+)\/-\/\1\/\2-(?:[.\d\w-]+)\.tgz(?:#|$)/,(t,e)=>VS({protocol:"npm:",source:null,selector:t,params:{__archiveUrl:e}})],[/^[^/]+\.tgz#[0-9a-f]+$/,t=>`npm:${t}`]],yE=class{constructor(e){this.resolver=e;this.resolutions=null}async setup(e,{report:r}){let o=ee.join(e.cwd,e.configuration.get("lockfileFilename"));if(!ge.existsSync(o))return;let a=await ge.readFilePromise(o,"utf8"),n=os(a);if(Object.prototype.hasOwnProperty.call(n,"__metadata"))return;let c=this.resolutions=new Map;for(let f of Object.keys(n)){let g=CB(f);if(!g){r.reportWarning(14,`Failed to parse the string "${f}" into a proper descriptor`);continue}let p=Bu(g.range)?_n(g,`npm:${g.range}`):g,{version:E,resolved:B}=n[f];if(!B)continue;let Q;for(let[C,N]of qct){let U=B.match(C);if(U){Q=N(E,...U);break}}if(!Q){r.reportWarning(14,`${$n(e.configuration,p)}: Only some patterns can be imported from legacy lockfiles (not "${B}")`);continue}let x=p;try{let C=Zd(p.range),N=CB(C.selector,!0);N&&(x=N)}catch{}c.set(p.descriptorHash,Xa(x,Q))}}supportsDescriptor(e,r){return this.resolutions?this.resolutions.has(e.descriptorHash):!1}supportsLocator(e,r){return!1}shouldPersistResolution(e,r){throw new Error("Assertion failed: This resolver doesn't support resolving locators to packages")}bindDescriptor(e,r,o){return e}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,o){if(!this.resolutions)throw new Error("Assertion failed: The resolution store should have been setup");let a=this.resolutions.get(e.descriptorHash);if(!a)throw new Error("Assertion failed: The resolution should have been registered");let n=JO(a),c=o.project.configuration.normalizeDependency(n);return await this.resolver.getCandidates(c,r,o)}async getSatisfying(e,r,o,a){let[n]=await this.getCandidates(e,r,a);return{locators:o.filter(c=>c.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){throw new Error("Assertion failed: This resolver doesn't support resolving locators to packages")}}});var Tu,tpe=Lt(()=>{wl();Xk();El();Tu=class extends po{constructor({configuration:r,stdout:o,suggestInstall:a=!0}){super();this.errorCount=0;AB(this,{configuration:r}),this.configuration=r,this.stdout=o,this.suggestInstall=a}static async start(r,o){let a=new this(r);try{await o(a)}catch(n){a.reportExceptionOnce(n)}finally{await a.finalize()}return a}hasErrors(){return this.errorCount>0}exitCode(){return this.hasErrors()?1:0}reportCacheHit(r){}reportCacheMiss(r){}startSectionSync(r,o){return o()}async startSectionPromise(r,o){return await o()}startTimerSync(r,o,a){return(typeof o=="function"?o:a)()}async startTimerPromise(r,o,a){return await(typeof o=="function"?o:a)()}async startCacheReport(r){return await r()}reportSeparator(){}reportInfo(r,o){}reportWarning(r,o){}reportError(r,o){this.errorCount+=1,this.stdout.write(`${ar(this.configuration,"\u27A4","redBright")} ${this.formatNameWithHyperlink(r)}: ${o} -`)}reportProgress(r){return{...Promise.resolve().then(async()=>{for await(let{}of r);}),stop:()=>{}}}reportJson(r){}async finalize(){this.errorCount>0&&(this.stdout.write(` -`),this.stdout.write(`${ar(this.configuration,"\u27A4","redBright")} Errors happened when preparing the environment required to run this command. -`),this.suggestInstall&&this.stdout.write(`${ar(this.configuration,"\u27A4","redBright")} This might be caused by packages being missing from the lockfile, in which case running "yarn install" might help. -`))}formatNameWithHyperlink(r){return r3(r,{configuration:this.configuration,json:!1})}}});var CE,j8=Lt(()=>{go();CE=class{constructor(e){this.resolver=e}supportsDescriptor(e,r){return!!(r.project.storedResolutions.get(e.descriptorHash)||r.project.originalPackages.has(WS(e).locatorHash))}supportsLocator(e,r){return!!(r.project.originalPackages.has(e.locatorHash)&&!r.project.lockfileNeedsRefresh)}shouldPersistResolution(e,r){throw new Error("The shouldPersistResolution method shouldn't be called on the lockfile resolver, which would always answer yes")}bindDescriptor(e,r,o){return e}getResolutionDependencies(e,r){return this.resolver.getResolutionDependencies(e,r)}async getCandidates(e,r,o){let a=o.project.storedResolutions.get(e.descriptorHash);if(a){let c=o.project.originalPackages.get(a);if(c)return[c]}let n=o.project.originalPackages.get(WS(e).locatorHash);if(n)return[n];throw new Error("Resolution expected from the lockfile data")}async getSatisfying(e,r,o,a){let[n]=await this.getCandidates(e,r,a);return{locators:o.filter(c=>c.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){let o=r.project.originalPackages.get(e.locatorHash);if(!o)throw new Error("The lockfile resolver isn't meant to resolve packages - they should already have been stored into a cache");return o}}});function pg(){}function Gct(t,e,r,o,a){for(var n=0,c=e.length,f=0,g=0;nx.length?N:x}),p.value=t.join(E)}else p.value=t.join(r.slice(f,f+p.count));f+=p.count,p.added||(g+=p.count)}}var Q=e[c-1];return c>1&&typeof Q.value=="string"&&(Q.added||Q.removed)&&t.equals("",Q.value)&&(e[c-2].value+=Q.value,e.pop()),e}function jct(t){return{newPos:t.newPos,components:t.components.slice(0)}}function Yct(t,e){if(typeof t=="function")e.callback=t;else if(t)for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r]);return e}function ipe(t,e,r){return r=Yct(r,{ignoreWhitespace:!0}),z8.diff(t,e,r)}function Wct(t,e,r){return X8.diff(t,e,r)}function eP(t){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?eP=function(e){return typeof e}:eP=function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},eP(t)}function Y8(t){return zct(t)||Xct(t)||Zct(t)||$ct()}function zct(t){if(Array.isArray(t))return W8(t)}function Xct(t){if(typeof Symbol<"u"&&Symbol.iterator in Object(t))return Array.from(t)}function Zct(t,e){if(!!t){if(typeof t=="string")return W8(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);if(r==="Object"&&t.constructor&&(r=t.constructor.name),r==="Map"||r==="Set")return Array.from(t);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return W8(t,e)}}function W8(t,e){(e==null||e>t.length)&&(e=t.length);for(var r=0,o=new Array(e);r"u"&&(c.context=4);var f=Wct(r,o,c);if(!f)return;f.push({value:"",lines:[]});function g(H){return H.map(function(X){return" "+X})}for(var p=[],E=0,B=0,Q=[],x=1,C=1,N=function(X){var ie=f[X],fe=ie.lines||ie.value.replace(/\n$/,"").split(` -`);if(ie.lines=fe,ie.added||ie.removed){var ye;if(!E){var Qe=f[X-1];E=x,B=C,Qe&&(Q=c.context>0?g(Qe.lines.slice(-c.context)):[],E-=Q.length,B-=Q.length)}(ye=Q).push.apply(ye,Y8(fe.map(function(Be){return(ie.added?"+":"-")+Be}))),ie.added?C+=fe.length:x+=fe.length}else{if(E)if(fe.length<=c.context*2&&X=f.length-2&&fe.length<=c.context){var h=/\n$/.test(r),Ke=/\n$/.test(o),Ce=fe.length==0&&Q.length>ke.oldLines;!h&&Ce&&r.length>0&&Q.splice(ke.oldLines,0,"\\ No newline at end of file"),(!h&&!Ce||!Ke)&&Q.push("\\ No newline at end of file")}p.push(ke),E=0,B=0,Q=[]}x+=fe.length,C+=fe.length}},U=0;U{pg.prototype={diff:function(e,r){var o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},a=o.callback;typeof o=="function"&&(a=o,o={}),this.options=o;var n=this;function c(N){return a?(setTimeout(function(){a(void 0,N)},0),!0):N}e=this.castInput(e),r=this.castInput(r),e=this.removeEmpty(this.tokenize(e)),r=this.removeEmpty(this.tokenize(r));var f=r.length,g=e.length,p=1,E=f+g;o.maxEditLength&&(E=Math.min(E,o.maxEditLength));var B=[{newPos:-1,components:[]}],Q=this.extractCommon(B[0],r,e,0);if(B[0].newPos+1>=f&&Q+1>=g)return c([{value:this.join(r),count:r.length}]);function x(){for(var N=-1*p;N<=p;N+=2){var U=void 0,H=B[N-1],X=B[N+1],ie=(X?X.newPos:0)-N;H&&(B[N-1]=void 0);var fe=H&&H.newPos+1=f&&ie+1>=g)return c(Gct(n,U.components,r,e,n.useLongestToken));B[N]=U}p++}if(a)(function N(){setTimeout(function(){if(p>E)return a();x()||N()},0)})();else for(;p<=E;){var C=x();if(C)return C}},pushComponent:function(e,r,o){var a=e[e.length-1];a&&a.added===r&&a.removed===o?e[e.length-1]={count:a.count+1,added:r,removed:o}:e.push({count:1,added:r,removed:o})},extractCommon:function(e,r,o,a){for(var n=r.length,c=o.length,f=e.newPos,g=f-a,p=0;f+1"u"?r:c}:o;return typeof t=="string"?t:JSON.stringify(J8(t,null,null,a),a," ")};u1.equals=function(t,e){return pg.prototype.equals.call(u1,t.replace(/,([\r\n])/g,"$1"),e.replace(/,([\r\n])/g,"$1"))};V8=new pg;V8.tokenize=function(t){return t.slice()};V8.join=V8.removeEmpty=function(t){return t}});var ape=_((CUt,ope)=>{var tut=lc(),rut=BB(),nut=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,iut=/^\w*$/;function sut(t,e){if(tut(t))return!1;var r=typeof t;return r=="number"||r=="symbol"||r=="boolean"||t==null||rut(t)?!0:iut.test(t)||!nut.test(t)||e!=null&&t in Object(e)}ope.exports=sut});var cpe=_((EUt,lpe)=>{var Ape=zD(),out="Expected a function";function $8(t,e){if(typeof t!="function"||e!=null&&typeof e!="function")throw new TypeError(out);var r=function(){var o=arguments,a=e?e.apply(this,o):o[0],n=r.cache;if(n.has(a))return n.get(a);var c=t.apply(this,o);return r.cache=n.set(a,c)||n,c};return r.cache=new($8.Cache||Ape),r}$8.Cache=Ape;lpe.exports=$8});var fpe=_((IUt,upe)=>{var aut=cpe(),Aut=500;function lut(t){var e=aut(t,function(o){return r.size===Aut&&r.clear(),o}),r=e.cache;return e}upe.exports=lut});var ppe=_((wUt,gpe)=>{var cut=fpe(),uut=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,fut=/\\(\\)?/g,gut=cut(function(t){var e=[];return t.charCodeAt(0)===46&&e.push(""),t.replace(uut,function(r,o,a,n){e.push(a?n.replace(fut,"$1"):o||r)}),e});gpe.exports=gut});var ym=_((BUt,hpe)=>{var put=lc(),hut=ape(),dut=ppe(),mut=jk();function yut(t,e){return put(t)?t:hut(t,e)?[t]:dut(mut(t))}hpe.exports=yut});var f1=_((QUt,dpe)=>{var Cut=BB(),Eut=1/0;function Iut(t){if(typeof t=="string"||Cut(t))return t;var e=t+"";return e=="0"&&1/t==-Eut?"-0":e}dpe.exports=Iut});var tP=_((vUt,mpe)=>{var wut=ym(),But=f1();function Qut(t,e){e=wut(e,t);for(var r=0,o=e.length;t!=null&&r{var vut=uS(),Dut=ym(),Sut=Xw(),ype=SA(),kut=f1();function xut(t,e,r,o){if(!ype(t))return t;e=Dut(e,t);for(var a=-1,n=e.length,c=n-1,f=t;f!=null&&++a{var Put=tP(),but=eK(),Fut=ym();function Rut(t,e,r){for(var o=-1,a=e.length,n={};++o{function Tut(t,e){return t!=null&&e in Object(t)}wpe.exports=Tut});var tK=_((xUt,Qpe)=>{var Nut=ym(),Mut=Jw(),Lut=lc(),Out=Xw(),Uut=tS(),Kut=f1();function _ut(t,e,r){e=Nut(e,t);for(var o=-1,a=e.length,n=!1;++o{var Hut=Bpe(),qut=tK();function Gut(t,e){return t!=null&&qut(t,e,Hut)}vpe.exports=Gut});var kpe=_((bUt,Spe)=>{var jut=Ipe(),Yut=Dpe();function Wut(t,e){return jut(t,e,function(r,o){return Yut(t,o)})}Spe.exports=Wut});var Fpe=_((FUt,bpe)=>{var xpe=Od(),Jut=Jw(),Vut=lc(),Ppe=xpe?xpe.isConcatSpreadable:void 0;function zut(t){return Vut(t)||Jut(t)||!!(Ppe&&t&&t[Ppe])}bpe.exports=zut});var Npe=_((RUt,Tpe)=>{var Xut=$D(),Zut=Fpe();function Rpe(t,e,r,o,a){var n=-1,c=t.length;for(r||(r=Zut),a||(a=[]);++n0&&r(f)?e>1?Rpe(f,e-1,r,o,a):Xut(a,f):o||(a[a.length]=f)}return a}Tpe.exports=Rpe});var Lpe=_((TUt,Mpe)=>{var $ut=Npe();function eft(t){var e=t==null?0:t.length;return e?$ut(t,1):[]}Mpe.exports=eft});var rK=_((NUt,Ope)=>{var tft=Lpe(),rft=GM(),nft=jM();function ift(t){return nft(rft(t,void 0,tft),t+"")}Ope.exports=ift});var Kpe=_((MUt,Upe)=>{var sft=kpe(),oft=rK(),aft=oft(function(t,e){return t==null?{}:sft(t,e)});Upe.exports=aft});var rP,_pe=Lt(()=>{wl();rP=class{constructor(e){this.resolver=e}supportsDescriptor(e,r){return this.resolver.supportsDescriptor(e,r)}supportsLocator(e,r){return this.resolver.supportsLocator(e,r)}shouldPersistResolution(e,r){return this.resolver.shouldPersistResolution(e,r)}bindDescriptor(e,r,o){return this.resolver.bindDescriptor(e,r,o)}getResolutionDependencies(e,r){return this.resolver.getResolutionDependencies(e,r)}async getCandidates(e,r,o){throw new rr(20,`This package doesn't seem to be present in your lockfile; run "yarn install" to update the lockfile`)}async getSatisfying(e,r,o,a){throw new rr(20,`This package doesn't seem to be present in your lockfile; run "yarn install" to update the lockfile`)}async resolve(e,r){throw new rr(20,`This package doesn't seem to be present in your lockfile; run "yarn install" to update the lockfile`)}}});var Wi,nK=Lt(()=>{wl();Wi=class extends po{reportCacheHit(e){}reportCacheMiss(e){}startSectionSync(e,r){return r()}async startSectionPromise(e,r){return await r()}startTimerSync(e,r,o){return(typeof r=="function"?r:o)()}async startTimerPromise(e,r,o){return await(typeof r=="function"?r:o)()}async startCacheReport(e){return await e()}reportSeparator(){}reportInfo(e,r){}reportWarning(e,r){}reportError(e,r){}reportProgress(e){return{...Promise.resolve().then(async()=>{for await(let{}of e);}),stop:()=>{}}}reportJson(e){}async finalize(){}}});var Hpe,EE,iK=Lt(()=>{Ft();Hpe=be(jO());kC();$d();El();zd();kp();go();EE=class{constructor(e,{project:r}){this.workspacesCwds=new Set;this.project=r,this.cwd=e}async setup(){this.manifest=await Gt.tryFind(this.cwd)??new Gt,this.relativeCwd=ee.relative(this.project.cwd,this.cwd)||Bt.dot;let e=this.manifest.name?this.manifest.name:wu(null,`${this.computeCandidateName()}-${da(this.relativeCwd).substring(0,6)}`),r=this.manifest.version?this.manifest.version:"0.0.0";this.locator=Xa(e,r),this.anchoredDescriptor=_n(this.locator,`${Qi.protocol}${this.relativeCwd}`),this.anchoredLocator=Xa(this.locator,`${Qi.protocol}${this.relativeCwd}`);let o=this.manifest.workspaceDefinitions.map(({pattern:n})=>n),a=await(0,Hpe.default)(o,{cwd:me.fromPortablePath(this.cwd),expandDirectories:!1,onlyDirectories:!0,onlyFiles:!1,ignore:["**/node_modules","**/.git","**/.yarn"]});a.sort();for(let n of a){let c=ee.resolve(this.cwd,me.toPortablePath(n));ge.existsSync(ee.join(c,"package.json"))&&this.workspacesCwds.add(c)}}get anchoredPackage(){let e=this.project.storedPackages.get(this.anchoredLocator.locatorHash);if(!e)throw new Error(`Assertion failed: Expected workspace ${IB(this.project.configuration,this)} (${ar(this.project.configuration,ee.join(this.cwd,Xr.manifest),Mt.PATH)}) to have been resolved. Run "yarn install" to update the lockfile`);return e}accepts(e){let r=e.indexOf(":"),o=r!==-1?e.slice(0,r+1):null,a=r!==-1?e.slice(r+1):e;if(o===Qi.protocol&&ee.normalize(a)===this.relativeCwd||o===Qi.protocol&&(a==="*"||a==="^"||a==="~"))return!0;let n=Bu(a);return n?o===Qi.protocol?n.test(this.manifest.version??"0.0.0"):this.project.configuration.get("enableTransparentWorkspaces")&&this.manifest.version!==null?n.test(this.manifest.version):!1:!1}computeCandidateName(){return this.cwd===this.project.cwd?"root-workspace":`${ee.basename(this.cwd)}`||"unnamed-workspace"}getRecursiveWorkspaceDependencies({dependencies:e=Gt.hardDependencies}={}){let r=new Set,o=a=>{for(let n of e)for(let c of a.manifest[n].values()){let f=this.project.tryWorkspaceByDescriptor(c);f===null||r.has(f)||(r.add(f),o(f))}};return o(this),r}getRecursiveWorkspaceDependents({dependencies:e=Gt.hardDependencies}={}){let r=new Set,o=a=>{for(let n of this.project.workspaces)e.some(f=>[...n.manifest[f].values()].some(g=>{let p=this.project.tryWorkspaceByDescriptor(g);return p!==null&&yB(p.anchoredLocator,a.anchoredLocator)}))&&!r.has(n)&&(r.add(n),o(n))};return o(this),r}getRecursiveWorkspaceChildren(){let e=[];for(let r of this.workspacesCwds){let o=this.project.workspacesByCwd.get(r);o&&e.push(o,...o.getRecursiveWorkspaceChildren())}return e}async persistManifest(){let e={};this.manifest.exportTo(e);let r=ee.join(this.cwd,Gt.fileName),o=`${JSON.stringify(e,null,this.manifest.indent)} -`;await ge.changeFilePromise(r,o,{automaticNewlines:!0}),this.manifest.raw=e}}});function gft({project:t,allDescriptors:e,allResolutions:r,allPackages:o,accessibleLocators:a=new Set,optionalBuilds:n=new Set,peerRequirements:c=new Map,volatileDescriptors:f=new Set,report:g}){let p=new Map,E=[],B=new Map,Q=new Map,x=new Map,C=new Map,N=new Map,U=new Map(t.workspaces.map(pe=>{let Ee=pe.anchoredLocator.locatorHash,ke=o.get(Ee);if(typeof ke>"u")throw new Error("Assertion failed: The workspace should have an associated package");return[Ee,pB(ke)]})),H=()=>{let pe=ge.mktempSync(),Ee=ee.join(pe,"stacktrace.log"),ke=String(E.length+1).length,h=E.map((Ke,Ce)=>`${`${Ce+1}.`.padStart(ke," ")} ${Cl(Ke)} -`).join("");throw ge.writeFileSync(Ee,h),ge.detachTemp(pe),new rr(45,`Encountered a stack overflow when resolving peer dependencies; cf ${me.fromPortablePath(Ee)}`)},X=pe=>{let Ee=r.get(pe.descriptorHash);if(typeof Ee>"u")throw new Error("Assertion failed: The resolution should have been registered");let ke=o.get(Ee);if(!ke)throw new Error("Assertion failed: The package could not be found");return ke},ie=(pe,Ee,ke,{top:h,optional:Ke})=>{E.length>1e3&&H(),E.push(Ee);let Ce=fe(pe,Ee,ke,{top:h,optional:Ke});return E.pop(),Ce},fe=(pe,Ee,ke,{top:h,optional:Ke})=>{if(a.has(Ee.locatorHash))return;a.add(Ee.locatorHash),Ke||n.delete(Ee.locatorHash);let Ce=o.get(Ee.locatorHash);if(!Ce)throw new Error(`Assertion failed: The package (${Yr(t.configuration,Ee)}) should have been registered`);let Be=[],le=[],re=[],Se=[],Ue=[];for(let q of Array.from(Ce.dependencies.values())){if(Ce.peerDependencies.has(q.identHash)&&Ce.locatorHash!==h)continue;if(Xf(q))throw new Error("Assertion failed: Virtual packages shouldn't be encountered when virtualizing a branch");f.delete(q.descriptorHash);let Qt=Ke;if(!Qt){let Oe=Ce.dependenciesMeta.get(Cn(q));if(typeof Oe<"u"){let k=Oe.get(null);typeof k<"u"&&k.optional&&(Qt=!0)}}let He=r.get(q.descriptorHash);if(!He)throw new Error(`Assertion failed: The resolution (${$n(t.configuration,q)}) should have been registered`);let qe=U.get(He)||o.get(He);if(!qe)throw new Error(`Assertion failed: The package (${He}, resolved from ${$n(t.configuration,q)}) should have been registered`);if(qe.peerDependencies.size===0){ie(q,qe,new Map,{top:h,optional:Qt});continue}let Fe,je,We=new Set,pt;le.push(()=>{Fe=zO(q,Ee.locatorHash),je=XO(qe,Ee.locatorHash),Ce.dependencies.delete(q.identHash),Ce.dependencies.set(Fe.identHash,Fe),r.set(Fe.descriptorHash,je.locatorHash),e.set(Fe.descriptorHash,Fe),o.set(je.locatorHash,je),Be.push([qe,Fe,je])}),re.push(()=>{pt=new Map;for(let Oe of je.peerDependencies.values()){let k=Ce.dependencies.get(Oe.identHash);if(!k&&mB(Ee,Oe)&&(pe.identHash===Ee.identHash?k=pe:(k=_n(Ee,pe.range),e.set(k.descriptorHash,k),r.set(k.descriptorHash,Ee.locatorHash),f.delete(k.descriptorHash))),(!k||k.range==="missing:")&&je.dependencies.has(Oe.identHash)){je.peerDependencies.delete(Oe.identHash);continue}k||(k=_n(Oe,"missing:")),je.dependencies.set(k.identHash,k),Xf(k)&&Hd(x,k.descriptorHash).add(je.locatorHash),B.set(k.identHash,k),k.range==="missing:"&&We.add(k.identHash),pt.set(Oe.identHash,ke.get(Oe.identHash)??je.locatorHash)}je.dependencies=new Map(Ja(je.dependencies,([Oe,k])=>Cn(k)))}),Se.push(()=>{if(!o.has(je.locatorHash))return;let Oe=p.get(qe.locatorHash);typeof Oe=="number"&&Oe>=2&&H();let k=p.get(qe.locatorHash),I=typeof k<"u"?k+1:1;p.set(qe.locatorHash,I),ie(Fe,je,pt,{top:h,optional:Qt}),p.set(qe.locatorHash,I-1)}),Ue.push(()=>{let Oe=Ce.dependencies.get(q.identHash);if(typeof Oe>"u")throw new Error("Assertion failed: Expected the peer dependency to have been turned into a dependency");let k=r.get(Oe.descriptorHash);if(typeof k>"u")throw new Error("Assertion failed: Expected the descriptor to be registered");if(Hd(N,k).add(Ee.locatorHash),!!o.has(je.locatorHash)){for(let I of je.peerDependencies.values()){let S=pt.get(I.identHash);if(typeof S>"u")throw new Error("Assertion failed: Expected the peer dependency ident to be registered");fC(gC(C,S),Cn(I)).push(je.locatorHash)}for(let I of We)je.dependencies.delete(I)}})}for(let q of[...le,...re])q();let dt;do{dt=!0;for(let[q,Qt,He]of Be){let qe=gC(Q,q.locatorHash),Fe=da(...[...He.dependencies.values()].map(Oe=>{let k=Oe.range!=="missing:"?r.get(Oe.descriptorHash):"missing:";if(typeof k>"u")throw new Error(`Assertion failed: Expected the resolution for ${$n(t.configuration,Oe)} to have been registered`);return k===h?`${k} (top)`:k}),Qt.identHash),je=qe.get(Fe);if(typeof je>"u"){qe.set(Fe,Qt);continue}if(je===Qt)continue;o.delete(He.locatorHash),e.delete(Qt.descriptorHash),r.delete(Qt.descriptorHash),a.delete(He.locatorHash);let We=x.get(Qt.descriptorHash)||[],pt=[Ce.locatorHash,...We];x.delete(Qt.descriptorHash);for(let Oe of pt){let k=o.get(Oe);typeof k>"u"||(k.dependencies.get(Qt.identHash).descriptorHash!==je.descriptorHash&&(dt=!1),k.dependencies.set(Qt.identHash,je))}}}while(!dt);for(let q of[...Se,...Ue])q()};for(let pe of t.workspaces){let Ee=pe.anchoredLocator;f.delete(pe.anchoredDescriptor.descriptorHash),ie(pe.anchoredDescriptor,Ee,new Map,{top:Ee.locatorHash,optional:!1})}let ye;(ke=>(ke[ke.NotProvided=0]="NotProvided",ke[ke.NotCompatible=1]="NotCompatible"))(ye||(ye={}));let Qe=[];for(let[pe,Ee]of N){let ke=o.get(pe);if(typeof ke>"u")throw new Error("Assertion failed: Expected the root to be registered");let h=C.get(pe);if(!(typeof h>"u"))for(let Ke of Ee){let Ce=o.get(Ke);if(!(typeof Ce>"u"))for(let[Be,le]of h){let re=ha(Be);if(Ce.peerDependencies.has(re.identHash))continue;let Se=`p${da(Ke,Be,pe).slice(0,5)}`;c.set(Se,{subject:Ke,requested:re,rootRequester:pe,allRequesters:le});let Ue=ke.dependencies.get(re.identHash);if(typeof Ue<"u"){let dt=X(Ue),q=dt.version??"0.0.0",Qt=new Set;for(let qe of le){let Fe=o.get(qe);if(typeof Fe>"u")throw new Error("Assertion failed: Expected the link to be registered");let je=Fe.peerDependencies.get(re.identHash);if(typeof je>"u")throw new Error("Assertion failed: Expected the ident to be registered");Qt.add(je.range)}[...Qt].every(qe=>{if(qe.startsWith(Qi.protocol)){if(!t.tryWorkspaceByLocator(dt))return!1;qe=qe.slice(Qi.protocol.length),(qe==="^"||qe==="~")&&(qe="*")}return em(q,qe)})||Qe.push({type:1,subject:Ce,requested:re,requester:ke,version:q,hash:Se,requirementCount:le.length})}else{let dt=ke.peerDependenciesMeta.get(Be);dt!=null&&dt.optional||Qe.push({type:0,subject:Ce,requested:re,requester:ke,hash:Se})}}}}let Pe=[pe=>ZO(pe.subject),pe=>Cn(pe.requested),pe=>`${pe.type}`];g==null||g.startSectionSync({reportFooter:()=>{g.reportWarning(0,`Some peer dependencies are incorrectly met; run ${ar(t.configuration,"yarn explain peer-requirements ",Mt.CODE)} for details, where ${ar(t.configuration,"",Mt.CODE)} is the six-letter p-prefixed code`)},skipIfEmpty:!0},()=>{for(let pe of Ja(Qe,Pe))switch(pe.type){case 0:g.reportWarning(2,`${Yr(t.configuration,pe.subject)} doesn't provide ${Ns(t.configuration,pe.requested)} (${ar(t.configuration,pe.hash,Mt.CODE)}), requested by ${Ns(t.configuration,pe.requester)}`);break;case 1:{let Ee=pe.requirementCount>1?"and some of its descendants request":"requests";g.reportWarning(60,`${Yr(t.configuration,pe.subject)} provides ${Ns(t.configuration,pe.requested)} (${ar(t.configuration,pe.hash,Mt.CODE)}) with version ${EB(t.configuration,pe.version)}, which doesn't satisfy what ${Ns(t.configuration,pe.requester)} ${Ee}`)}break}})}var oK,nP,iP,Ype,Wpe,AK,aK,lK,qpe,Aft,lft,Gpe,cft,uft,fft,NA,sK,jpe,xt,Jpe=Lt(()=>{Ft();Ft();cl();oK=be(Vt()),nP=Ie("crypto");Z8();iP=be(Kpe()),Ype=be(kd()),Wpe=be(wi()),AK=Ie("util"),aK=be(Ie("v8")),lK=be(Ie("zlib"));kB();G8();j8();kC();i4();wl();_pe();nK();$d();iK();rk();El();zd();ml();nk();a3();kp();go();qpe=7,Aft=2,lft=/ *, */g,Gpe=/\/$/,cft=32,uft=(0,AK.promisify)(lK.default.gzip),fft=(0,AK.promisify)(lK.default.gunzip),NA=(r=>(r.UpdateLockfile="update-lockfile",r.SkipBuild="skip-build",r))(NA||{}),sK={restoreLinkersCustomData:["linkersCustomData"],restoreResolutions:["accessibleLocators","conditionalLocators","disabledLocators","optionalBuilds","storedDescriptors","storedResolutions","storedPackages","lockFileChecksum"],restoreBuildState:["storedBuildState"]},jpe=t=>da(`${Aft}`,t),xt=class{constructor(e,{configuration:r}){this.resolutionAliases=new Map;this.workspaces=[];this.workspacesByCwd=new Map;this.workspacesByIdent=new Map;this.storedResolutions=new Map;this.storedDescriptors=new Map;this.storedPackages=new Map;this.storedChecksums=new Map;this.storedBuildState=new Map;this.accessibleLocators=new Set;this.conditionalLocators=new Set;this.disabledLocators=new Set;this.originalPackages=new Map;this.optionalBuilds=new Set;this.lockfileNeedsRefresh=!1;this.peerRequirements=new Map;this.linkersCustomData=new Map;this.lockFileChecksum=null;this.installStateChecksum=null;this.configuration=r,this.cwd=e}static async find(e,r){var C,N,U;if(!e.projectCwd)throw new oK.UsageError(`No project found in ${r}`);let o=e.projectCwd,a=r,n=null;for(;n!==e.projectCwd;){if(n=a,ge.existsSync(ee.join(n,Xr.manifest))){o=n;break}a=ee.dirname(n)}let c=new xt(e.projectCwd,{configuration:e});(C=rt.telemetry)==null||C.reportProject(c.cwd),await c.setupResolutions(),await c.setupWorkspaces(),(N=rt.telemetry)==null||N.reportWorkspaceCount(c.workspaces.length),(U=rt.telemetry)==null||U.reportDependencyCount(c.workspaces.reduce((H,X)=>H+X.manifest.dependencies.size+X.manifest.devDependencies.size,0));let f=c.tryWorkspaceByCwd(o);if(f)return{project:c,workspace:f,locator:f.anchoredLocator};let g=await c.findLocatorForLocation(`${o}/`,{strict:!0});if(g)return{project:c,locator:g,workspace:null};let p=ar(e,c.cwd,Mt.PATH),E=ar(e,ee.relative(c.cwd,o),Mt.PATH),B=`- If ${p} isn't intended to be a project, remove any yarn.lock and/or package.json file there.`,Q=`- If ${p} is intended to be a project, it might be that you forgot to list ${E} in its workspace configuration.`,x=`- Finally, if ${p} is fine and you intend ${E} to be treated as a completely separate project (not even a workspace), create an empty yarn.lock file in it.`;throw new oK.UsageError(`The nearest package directory (${ar(e,o,Mt.PATH)}) doesn't seem to be part of the project declared in ${ar(e,c.cwd,Mt.PATH)}. - -${[B,Q,x].join(` -`)}`)}async setupResolutions(){this.storedResolutions=new Map,this.storedDescriptors=new Map,this.storedPackages=new Map,this.lockFileChecksum=null;let e=ee.join(this.cwd,this.configuration.get("lockfileFilename")),r=this.configuration.get("defaultLanguageName");if(ge.existsSync(e)){let o=await ge.readFilePromise(e,"utf8");this.lockFileChecksum=jpe(o);let a=os(o);if(a.__metadata){let n=a.__metadata.version,c=a.__metadata.cacheKey;this.lockfileNeedsRefresh=n"u")throw new Error(`Assertion failed: Expected the lockfile entry to have a resolution field (${f})`);let p=Xd(g.resolution,!0),E=new Gt;E.load(g,{yamlCompatibilityMode:!0});let B=E.version,Q=E.languageName||r,x=g.linkType.toUpperCase(),C=g.conditions??null,N=E.dependencies,U=E.peerDependencies,H=E.dependenciesMeta,X=E.peerDependenciesMeta,ie=E.bin;if(g.checksum!=null){let ye=typeof c<"u"&&!g.checksum.includes("/")?`${c}/${g.checksum}`:g.checksum;this.storedChecksums.set(p.locatorHash,ye)}let fe={...p,version:B,languageName:Q,linkType:x,conditions:C,dependencies:N,peerDependencies:U,dependenciesMeta:H,peerDependenciesMeta:X,bin:ie};this.originalPackages.set(fe.locatorHash,fe);for(let ye of f.split(lft)){let Qe=Sp(ye);n<=6&&(Qe=this.configuration.normalizeDependency(Qe),Qe=_n(Qe,Qe.range.replace(/^patch:[^@]+@(?!npm(:|%3A))/,"$1npm%3A"))),this.storedDescriptors.set(Qe.descriptorHash,Qe),this.storedResolutions.set(Qe.descriptorHash,p.locatorHash)}}}}}async setupWorkspaces(){this.workspaces=[],this.workspacesByCwd=new Map,this.workspacesByIdent=new Map;let e=[this.cwd];for(;e.length>0;){let r=e;e=[];for(let o of r){if(this.workspacesByCwd.has(o))continue;let a=await this.addWorkspace(o);for(let n of a.workspacesCwds)e.push(n)}}}async addWorkspace(e){let r=new EE(e,{project:this});await r.setup();let o=this.workspacesByIdent.get(r.locator.identHash);if(typeof o<"u")throw new Error(`Duplicate workspace name ${Ns(this.configuration,r.locator)}: ${me.fromPortablePath(e)} conflicts with ${me.fromPortablePath(o.cwd)}`);return this.workspaces.push(r),this.workspacesByCwd.set(e,r),this.workspacesByIdent.set(r.locator.identHash,r),r}get topLevelWorkspace(){return this.getWorkspaceByCwd(this.cwd)}tryWorkspaceByCwd(e){ee.isAbsolute(e)||(e=ee.resolve(this.cwd,e)),e=ee.normalize(e).replace(/\/+$/,"");let r=this.workspacesByCwd.get(e);return r||null}getWorkspaceByCwd(e){let r=this.tryWorkspaceByCwd(e);if(!r)throw new Error(`Workspace not found (${e})`);return r}tryWorkspaceByFilePath(e){let r=null;for(let o of this.workspaces)ee.relative(o.cwd,e).startsWith("../")||r&&r.cwd.length>=o.cwd.length||(r=o);return r||null}getWorkspaceByFilePath(e){let r=this.tryWorkspaceByFilePath(e);if(!r)throw new Error(`Workspace not found (${e})`);return r}tryWorkspaceByIdent(e){let r=this.workspacesByIdent.get(e.identHash);return typeof r>"u"?null:r}getWorkspaceByIdent(e){let r=this.tryWorkspaceByIdent(e);if(!r)throw new Error(`Workspace not found (${Ns(this.configuration,e)})`);return r}tryWorkspaceByDescriptor(e){let r=this.tryWorkspaceByIdent(e);return r===null||(Xf(e)&&(e=hB(e)),!r.accepts(e.range))?null:r}getWorkspaceByDescriptor(e){let r=this.tryWorkspaceByDescriptor(e);if(r===null)throw new Error(`Workspace not found (${$n(this.configuration,e)})`);return r}tryWorkspaceByLocator(e){let r=this.tryWorkspaceByIdent(e);return r===null||(fc(e)&&(e=dB(e)),r.locator.locatorHash!==e.locatorHash&&r.anchoredLocator.locatorHash!==e.locatorHash)?null:r}getWorkspaceByLocator(e){let r=this.tryWorkspaceByLocator(e);if(!r)throw new Error(`Workspace not found (${Yr(this.configuration,e)})`);return r}forgetResolution(e){let r=a=>{this.storedResolutions.delete(a),this.storedDescriptors.delete(a)},o=a=>{this.originalPackages.delete(a),this.storedPackages.delete(a),this.accessibleLocators.delete(a)};if("descriptorHash"in e){let a=this.storedResolutions.get(e.descriptorHash);r(e.descriptorHash);let n=new Set(this.storedResolutions.values());typeof a<"u"&&!n.has(a)&&o(a)}if("locatorHash"in e){o(e.locatorHash);for(let[a,n]of this.storedResolutions)n===e.locatorHash&&r(a)}}forgetTransientResolutions(){let e=this.configuration.makeResolver();for(let r of this.originalPackages.values()){let o;try{o=e.shouldPersistResolution(r,{project:this,resolver:e})}catch{o=!1}o||this.forgetResolution(r)}}forgetVirtualResolutions(){for(let e of this.storedPackages.values())for(let[r,o]of e.dependencies)Xf(o)&&e.dependencies.set(r,hB(o))}getDependencyMeta(e,r){let o={},n=this.topLevelWorkspace.manifest.dependenciesMeta.get(Cn(e));if(!n)return o;let c=n.get(null);if(c&&Object.assign(o,c),r===null||!Wpe.default.valid(r))return o;for(let[f,g]of n)f!==null&&f===r&&Object.assign(o,g);return o}async findLocatorForLocation(e,{strict:r=!1}={}){let o=new Wi,a=this.configuration.getLinkers(),n={project:this,report:o};for(let c of a){let f=await c.findPackageLocator(e,n);if(f){if(r&&(await c.findPackageLocation(f,n)).replace(Gpe,"")!==e.replace(Gpe,""))continue;return f}}return null}async preparePackage(e,{resolver:r,resolveOptions:o}){let a=this.configuration.normalizePackage(e);for(let[n,c]of a.dependencies){let f=await this.configuration.reduceHook(p=>p.reduceDependency,c,this,a,c,{resolver:r,resolveOptions:o});if(!mB(c,f))throw new Error("Assertion failed: The descriptor ident cannot be changed through aliases");let g=r.bindDescriptor(f,a,o);a.dependencies.set(n,g)}return a}async resolveEverything(e){if(!this.workspacesByCwd||!this.workspacesByIdent)throw new Error("Workspaces must have been setup before calling this function");this.forgetVirtualResolutions(),e.lockfileOnly||this.forgetTransientResolutions();let r=e.resolver||this.configuration.makeResolver(),o=new yE(r);await o.setup(this,{report:e.report});let a=e.lockfileOnly?[new rP(r)]:[o,r],n=new tm([new CE(r),...a]),c=new tm([...a]),f=this.configuration.makeFetcher(),g=e.lockfileOnly?{project:this,report:e.report,resolver:n}:{project:this,report:e.report,resolver:n,fetchOptions:{project:this,cache:e.cache,checksums:this.storedChecksums,report:e.report,fetcher:f,cacheOptions:{mirrorWriteOnly:!0}}},p=new Map,E=new Map,B=new Map,Q=new Map,x=new Map,C=new Map,N=this.topLevelWorkspace.anchoredLocator,U=new Set,H=[],X=u4(),ie=this.configuration.getSupportedArchitectures();await e.report.startProgressPromise(po.progressViaTitle(),async ke=>{let h=async re=>{let Se=await pC(async()=>await n.resolve(re,g),q=>`${Yr(this.configuration,re)}: ${q}`);if(!yB(re,Se))throw new Error(`Assertion failed: The locator cannot be changed by the resolver (went from ${Yr(this.configuration,re)} to ${Yr(this.configuration,Se)})`);Q.set(Se.locatorHash,Se);let Ue=await this.preparePackage(Se,{resolver:n,resolveOptions:g}),dt=cc([...Ue.dependencies.values()].map(q=>le(q)));return H.push(dt),dt.catch(()=>{}),E.set(Ue.locatorHash,Ue),Ue},Ke=async re=>{let Se=x.get(re.locatorHash);if(typeof Se<"u")return Se;let Ue=Promise.resolve().then(()=>h(re));return x.set(re.locatorHash,Ue),Ue},Ce=async(re,Se)=>{let Ue=await le(Se);return p.set(re.descriptorHash,re),B.set(re.descriptorHash,Ue.locatorHash),Ue},Be=async re=>{ke.setTitle($n(this.configuration,re));let Se=this.resolutionAliases.get(re.descriptorHash);if(typeof Se<"u")return Ce(re,this.storedDescriptors.get(Se));let Ue=n.getResolutionDependencies(re,g),dt=Object.fromEntries(await cc(Object.entries(Ue).map(async([He,qe])=>{let Fe=n.bindDescriptor(qe,N,g),je=await le(Fe);return U.add(je.locatorHash),[He,je]}))),Qt=(await pC(async()=>await n.getCandidates(re,dt,g),He=>`${$n(this.configuration,re)}: ${He}`))[0];if(typeof Qt>"u")throw new rr(82,`${$n(this.configuration,re)}: No candidates found`);if(e.checkResolutions){let{locators:He}=await c.getSatisfying(re,dt,[Qt],{...g,resolver:c});if(!He.find(qe=>qe.locatorHash===Qt.locatorHash))throw new rr(78,`Invalid resolution ${lB(this.configuration,re,Qt)}`)}return p.set(re.descriptorHash,re),B.set(re.descriptorHash,Qt.locatorHash),Ke(Qt)},le=re=>{let Se=C.get(re.descriptorHash);if(typeof Se<"u")return Se;p.set(re.descriptorHash,re);let Ue=Promise.resolve().then(()=>Be(re));return C.set(re.descriptorHash,Ue),Ue};for(let re of this.workspaces){let Se=re.anchoredDescriptor;H.push(le(Se))}for(;H.length>0;){let re=[...H];H.length=0,await cc(re)}});let fe=new Set(this.resolutionAliases.values()),ye=new Set(E.keys()),Qe=new Set,Pe=new Map;gft({project:this,report:e.report,accessibleLocators:Qe,volatileDescriptors:fe,optionalBuilds:ye,peerRequirements:Pe,allDescriptors:p,allResolutions:B,allPackages:E});for(let ke of U)ye.delete(ke);for(let ke of fe)p.delete(ke),B.delete(ke);let pe=new Set,Ee=new Set;for(let ke of E.values())ke.conditions!=null&&(!ye.has(ke.locatorHash)||(ZS(ke,ie)||(ZS(ke,X)&&e.report.reportWarningOnce(77,`${Yr(this.configuration,ke)}: Your current architecture (${process.platform}-${process.arch}) is supported by this package, but is missing from the ${ar(this.configuration,"supportedArchitectures",Mt.SETTING)} setting`),Ee.add(ke.locatorHash)),pe.add(ke.locatorHash)));this.storedResolutions=B,this.storedDescriptors=p,this.storedPackages=E,this.accessibleLocators=Qe,this.conditionalLocators=pe,this.disabledLocators=Ee,this.originalPackages=Q,this.optionalBuilds=ye,this.peerRequirements=Pe}async fetchEverything({cache:e,report:r,fetcher:o,mode:a}){let n={mockedPackages:this.disabledLocators,unstablePackages:this.conditionalLocators},c=o||this.configuration.makeFetcher(),f={checksums:this.storedChecksums,project:this,cache:e,fetcher:c,report:r,cacheOptions:n},g=Array.from(new Set(Ja(this.storedResolutions.values(),[Q=>{let x=this.storedPackages.get(Q);if(!x)throw new Error("Assertion failed: The locator should have been registered");return Cl(x)}])));a==="update-lockfile"&&(g=g.filter(Q=>!this.storedChecksums.has(Q)));let p=!1,E=po.progressViaCounter(g.length);r.reportProgress(E);let B=(0,Ype.default)(cft);if(await r.startCacheReport(async()=>{await cc(g.map(Q=>B(async()=>{let x=this.storedPackages.get(Q);if(!x)throw new Error("Assertion failed: The locator should have been registered");if(fc(x))return;let C;try{C=await c.fetch(x,f)}catch(N){N.message=`${Yr(this.configuration,x)}: ${N.message}`,r.reportExceptionOnce(N),p=N;return}C.checksum!=null?this.storedChecksums.set(x.locatorHash,C.checksum):this.storedChecksums.delete(x.locatorHash),C.releaseFs&&C.releaseFs()}).finally(()=>{E.tick()})))}),p)throw p}async linkEverything({cache:e,report:r,fetcher:o,mode:a}){var h,Ke;let n={mockedPackages:this.disabledLocators,unstablePackages:this.conditionalLocators,skipIntegrityCheck:!0},c=o||this.configuration.makeFetcher(),f={checksums:this.storedChecksums,project:this,cache:e,fetcher:c,report:r,cacheOptions:n},g=this.configuration.getLinkers(),p={project:this,report:r},E=new Map(g.map(Ce=>{let Be=Ce.makeInstaller(p),le=Ce.getCustomDataKey(),re=this.linkersCustomData.get(le);return typeof re<"u"&&Be.attachCustomData(re),[Ce,Be]})),B=new Map,Q=new Map,x=new Map,C=new Map(await cc([...this.accessibleLocators].map(async Ce=>{let Be=this.storedPackages.get(Ce);if(!Be)throw new Error("Assertion failed: The locator should have been registered");return[Ce,await c.fetch(Be,f)]}))),N=[];for(let Ce of this.accessibleLocators){let Be=this.storedPackages.get(Ce);if(typeof Be>"u")throw new Error("Assertion failed: The locator should have been registered");let le=C.get(Be.locatorHash);if(typeof le>"u")throw new Error("Assertion failed: The fetch result should have been registered");let re=[],Se=dt=>{re.push(dt)},Ue=this.tryWorkspaceByLocator(Be);if(Ue!==null){let dt=[],{scripts:q}=Ue.manifest;for(let He of["preinstall","install","postinstall"])q.has(He)&&dt.push([0,He]);try{for(let[He,qe]of E)if(He.supportsPackage(Be,p)&&(await qe.installPackage(Be,le,{holdFetchResult:Se})).buildDirective!==null)throw new Error("Assertion failed: Linkers can't return build directives for workspaces; this responsibility befalls to the Yarn core")}finally{re.length===0?(h=le.releaseFs)==null||h.call(le):N.push(cc(re).catch(()=>{}).then(()=>{var He;(He=le.releaseFs)==null||He.call(le)}))}let Qt=ee.join(le.packageFs.getRealPath(),le.prefixPath);Q.set(Be.locatorHash,Qt),!fc(Be)&&dt.length>0&&x.set(Be.locatorHash,{directives:dt,buildLocations:[Qt]})}else{let dt=g.find(He=>He.supportsPackage(Be,p));if(!dt)throw new rr(12,`${Yr(this.configuration,Be)} isn't supported by any available linker`);let q=E.get(dt);if(!q)throw new Error("Assertion failed: The installer should have been registered");let Qt;try{Qt=await q.installPackage(Be,le,{holdFetchResult:Se})}finally{re.length===0?(Ke=le.releaseFs)==null||Ke.call(le):N.push(cc(re).then(()=>{}).then(()=>{var He;(He=le.releaseFs)==null||He.call(le)}))}B.set(Be.locatorHash,dt),Q.set(Be.locatorHash,Qt.packageLocation),Qt.buildDirective&&Qt.buildDirective.length>0&&Qt.packageLocation&&x.set(Be.locatorHash,{directives:Qt.buildDirective,buildLocations:[Qt.packageLocation]})}}let U=new Map;for(let Ce of this.accessibleLocators){let Be=this.storedPackages.get(Ce);if(!Be)throw new Error("Assertion failed: The locator should have been registered");let le=this.tryWorkspaceByLocator(Be)!==null,re=async(Se,Ue)=>{let dt=Q.get(Be.locatorHash);if(typeof dt>"u")throw new Error(`Assertion failed: The package (${Yr(this.configuration,Be)}) should have been registered`);let q=[];for(let Qt of Be.dependencies.values()){let He=this.storedResolutions.get(Qt.descriptorHash);if(typeof He>"u")throw new Error(`Assertion failed: The resolution (${$n(this.configuration,Qt)}, from ${Yr(this.configuration,Be)})should have been registered`);let qe=this.storedPackages.get(He);if(typeof qe>"u")throw new Error(`Assertion failed: The package (${He}, resolved from ${$n(this.configuration,Qt)}) should have been registered`);let Fe=this.tryWorkspaceByLocator(qe)===null?B.get(He):null;if(typeof Fe>"u")throw new Error(`Assertion failed: The package (${He}, resolved from ${$n(this.configuration,Qt)}) should have been registered`);Fe===Se||Fe===null?Q.get(qe.locatorHash)!==null&&q.push([Qt,qe]):!le&&dt!==null&&fC(U,He).push(dt)}dt!==null&&await Ue.attachInternalDependencies(Be,q)};if(le)for(let[Se,Ue]of E)Se.supportsPackage(Be,p)&&await re(Se,Ue);else{let Se=B.get(Be.locatorHash);if(!Se)throw new Error("Assertion failed: The linker should have been found");let Ue=E.get(Se);if(!Ue)throw new Error("Assertion failed: The installer should have been registered");await re(Se,Ue)}}for(let[Ce,Be]of U){let le=this.storedPackages.get(Ce);if(!le)throw new Error("Assertion failed: The package should have been registered");let re=B.get(le.locatorHash);if(!re)throw new Error("Assertion failed: The linker should have been found");let Se=E.get(re);if(!Se)throw new Error("Assertion failed: The installer should have been registered");await Se.attachExternalDependents(le,Be)}let H=new Map;for(let[Ce,Be]of E){let le=await Be.finalizeInstall();for(let re of(le==null?void 0:le.records)??[])x.set(re.locatorHash,{directives:re.buildDirective,buildLocations:re.buildLocations});typeof(le==null?void 0:le.customData)<"u"&&H.set(Ce.getCustomDataKey(),le.customData)}if(this.linkersCustomData=H,await cc(N),a==="skip-build")return;let X=new Set(this.storedPackages.keys()),ie=new Set(x.keys());for(let Ce of ie)X.delete(Ce);let fe=(0,nP.createHash)("sha512");fe.update(process.versions.node),await this.configuration.triggerHook(Ce=>Ce.globalHashGeneration,this,Ce=>{fe.update("\0"),fe.update(Ce)});let ye=fe.digest("hex"),Qe=new Map,Pe=Ce=>{let Be=Qe.get(Ce.locatorHash);if(typeof Be<"u")return Be;let le=this.storedPackages.get(Ce.locatorHash);if(typeof le>"u")throw new Error("Assertion failed: The package should have been registered");let re=(0,nP.createHash)("sha512");re.update(Ce.locatorHash),Qe.set(Ce.locatorHash,"");for(let Se of le.dependencies.values()){let Ue=this.storedResolutions.get(Se.descriptorHash);if(typeof Ue>"u")throw new Error(`Assertion failed: The resolution (${$n(this.configuration,Se)}) should have been registered`);let dt=this.storedPackages.get(Ue);if(typeof dt>"u")throw new Error("Assertion failed: The package should have been registered");re.update(Pe(dt))}return Be=re.digest("hex"),Qe.set(Ce.locatorHash,Be),Be},pe=(Ce,Be)=>{let le=(0,nP.createHash)("sha512");le.update(ye),le.update(Pe(Ce));for(let re of Be)le.update(re);return le.digest("hex")},Ee=new Map,ke=!1;for(;ie.size>0;){let Ce=ie.size,Be=[];for(let le of ie){let re=this.storedPackages.get(le);if(!re)throw new Error("Assertion failed: The package should have been registered");let Se=!0;for(let q of re.dependencies.values()){let Qt=this.storedResolutions.get(q.descriptorHash);if(!Qt)throw new Error(`Assertion failed: The resolution (${$n(this.configuration,q)}) should have been registered`);if(ie.has(Qt)){Se=!1;break}}if(!Se)continue;ie.delete(le);let Ue=x.get(re.locatorHash);if(!Ue)throw new Error("Assertion failed: The build directive should have been registered");let dt=pe(re,Ue.buildLocations);if(this.storedBuildState.get(re.locatorHash)===dt){Ee.set(re.locatorHash,dt);continue}ke||(await this.persistInstallStateFile(),ke=!0),this.storedBuildState.has(re.locatorHash)?r.reportInfo(8,`${Yr(this.configuration,re)} must be rebuilt because its dependency tree changed`):r.reportInfo(7,`${Yr(this.configuration,re)} must be built because it never has been before or the last one failed`);for(let q of Ue.buildLocations){if(!ee.isAbsolute(q))throw new Error(`Assertion failed: Expected the build location to be absolute (not ${q})`);Be.push((async()=>{for(let[Qt,He]of Ue.directives){let qe=`# This file contains the result of Yarn building a package (${Cl(re)}) -`;switch(Qt){case 0:qe+=`# Script name: ${He} -`;break;case 1:qe+=`# Script code: ${He} -`;break}let Fe=null;if(!await ge.mktempPromise(async We=>{let pt=ee.join(We,"build.log"),{stdout:Oe,stderr:k}=this.configuration.getSubprocessStreams(pt,{header:qe,prefix:Yr(this.configuration,re),report:r}),I;try{switch(Qt){case 0:I=await Zk(re,He,[],{cwd:q,project:this,stdin:Fe,stdout:Oe,stderr:k});break;case 1:I=await s3(re,He,[],{cwd:q,project:this,stdin:Fe,stdout:Oe,stderr:k});break}}catch(y){k.write(y.stack),I=1}if(Oe.end(),k.end(),I===0)return Ee.set(re.locatorHash,dt),!0;ge.detachTemp(We);let S=`${Yr(this.configuration,re)} couldn't be built successfully (exit code ${ar(this.configuration,I,Mt.NUMBER)}, logs can be found here: ${ar(this.configuration,pt,Mt.PATH)})`;return this.optionalBuilds.has(re.locatorHash)?(r.reportInfo(9,S),Ee.set(re.locatorHash,dt),!0):(r.reportError(9,S),!1)}))return}})())}}if(await cc(Be),Ce===ie.size){let le=Array.from(ie).map(re=>{let Se=this.storedPackages.get(re);if(!Se)throw new Error("Assertion failed: The package should have been registered");return Yr(this.configuration,Se)}).join(", ");r.reportError(3,`Some packages have circular dependencies that make their build order unsatisfiable - as a result they won't be built (affected packages are: ${le})`);break}}this.storedBuildState=Ee}async install(e){var f,g;let r=this.configuration.get("nodeLinker");(f=rt.telemetry)==null||f.reportInstall(r),await e.report.startTimerPromise("Project validation",{skipIfEmpty:!0},async()=>{await this.configuration.triggerHook(p=>p.validateProject,this,{reportWarning:e.report.reportWarning.bind(e.report),reportError:e.report.reportError.bind(e.report)})});for(let p of this.configuration.packageExtensions.values())for(let[,E]of p)for(let B of E)B.status="inactive";let o=ee.join(this.cwd,this.configuration.get("lockfileFilename")),a=null;if(e.immutable)try{a=await ge.readFilePromise(o,"utf8")}catch(p){throw p.code==="ENOENT"?new rr(28,"The lockfile would have been created by this install, which is explicitly forbidden."):p}await e.report.startTimerPromise("Resolution step",async()=>{await this.resolveEverything(e)}),await e.report.startTimerPromise("Post-resolution validation",{skipIfEmpty:!0},async()=>{for(let[,p]of this.configuration.packageExtensions)for(let[,E]of p)for(let B of E)if(B.userProvided){let Q=ar(this.configuration,B,Mt.PACKAGE_EXTENSION);switch(B.status){case"inactive":e.report.reportWarning(68,`${Q}: No matching package in the dependency tree; you may not need this rule anymore.`);break;case"redundant":e.report.reportWarning(69,`${Q}: This rule seems redundant when applied on the original package; the extension may have been applied upstream.`);break}}if(a!==null){let p=cd(a,this.generateLockfile());if(p!==a){let E=spe(o,o,a,p,void 0,void 0,{maxEditLength:100});if(E){e.report.reportSeparator();for(let B of E.hunks){e.report.reportInfo(null,`@@ -${B.oldStart},${B.oldLines} +${B.newStart},${B.newLines} @@`);for(let Q of B.lines)Q.startsWith("+")?e.report.reportError(28,ar(this.configuration,Q,Mt.ADDED)):Q.startsWith("-")?e.report.reportError(28,ar(this.configuration,Q,Mt.REMOVED)):e.report.reportInfo(null,ar(this.configuration,Q,"grey"))}e.report.reportSeparator()}throw new rr(28,"The lockfile would have been modified by this install, which is explicitly forbidden.")}}});for(let p of this.configuration.packageExtensions.values())for(let[,E]of p)for(let B of E)B.userProvided&&B.status==="active"&&((g=rt.telemetry)==null||g.reportPackageExtension(qd(B,Mt.PACKAGE_EXTENSION)));await e.report.startTimerPromise("Fetch step",async()=>{await this.fetchEverything(e),(typeof e.persistProject>"u"||e.persistProject)&&e.mode!=="update-lockfile"&&await this.cacheCleanup(e)});let n=e.immutable?[...new Set(this.configuration.get("immutablePatterns"))].sort():[],c=await Promise.all(n.map(async p=>YS(p,{cwd:this.cwd})));(typeof e.persistProject>"u"||e.persistProject)&&await this.persist(),await e.report.startTimerPromise("Link step",async()=>{if(e.mode==="update-lockfile"){e.report.reportWarning(73,`Skipped due to ${ar(this.configuration,"mode=update-lockfile",Mt.CODE)}`);return}await this.linkEverything(e);let p=await Promise.all(n.map(async E=>YS(E,{cwd:this.cwd})));for(let E=0;Ep.afterAllInstalled,this,e)}generateLockfile(){let e=new Map;for(let[a,n]of this.storedResolutions.entries()){let c=e.get(n);c||e.set(n,c=new Set),c.add(a)}let r={};r.__metadata={version:qpe,cacheKey:void 0};for(let[a,n]of e.entries()){let c=this.originalPackages.get(a);if(!c)continue;let f=[];for(let Q of n){let x=this.storedDescriptors.get(Q);if(!x)throw new Error("Assertion failed: The descriptor should have been registered");f.push(x)}let g=f.map(Q=>za(Q)).sort().join(", "),p=new Gt;p.version=c.linkType==="HARD"?c.version:"0.0.0-use.local",p.languageName=c.languageName,p.dependencies=new Map(c.dependencies),p.peerDependencies=new Map(c.peerDependencies),p.dependenciesMeta=new Map(c.dependenciesMeta),p.peerDependenciesMeta=new Map(c.peerDependenciesMeta),p.bin=new Map(c.bin);let E,B=this.storedChecksums.get(c.locatorHash);if(typeof B<"u"){let Q=B.indexOf("/");if(Q===-1)throw new Error("Assertion failed: Expected the checksum to reference its cache key");let x=B.slice(0,Q),C=B.slice(Q+1);typeof r.__metadata.cacheKey>"u"&&(r.__metadata.cacheKey=x),x===r.__metadata.cacheKey?E=C:E=B}r[g]={...p.exportTo({},{compatibilityMode:!1}),linkType:c.linkType.toLowerCase(),resolution:Cl(c),checksum:E,conditions:c.conditions||void 0}}return`${[`# This file is generated by running "yarn install" inside your project. -`,`# Manual changes might be lost - proceed with caution! -`].join("")} -`+ja(r)}async persistLockfile(){let e=ee.join(this.cwd,this.configuration.get("lockfileFilename")),r="";try{r=await ge.readFilePromise(e,"utf8")}catch{}let o=this.generateLockfile(),a=cd(r,o);a!==r&&(await ge.writeFilePromise(e,a),this.lockFileChecksum=jpe(a),this.lockfileNeedsRefresh=!1)}async persistInstallStateFile(){let e=[];for(let c of Object.values(sK))e.push(...c);let r=(0,iP.default)(this,e),o=aK.default.serialize(r),a=da(o);if(this.installStateChecksum===a)return;let n=this.configuration.get("installStatePath");await ge.mkdirPromise(ee.dirname(n),{recursive:!0}),await ge.writeFilePromise(n,await uft(o)),this.installStateChecksum=a}async restoreInstallState({restoreLinkersCustomData:e=!0,restoreResolutions:r=!0,restoreBuildState:o=!0}={}){let a=this.configuration.get("installStatePath"),n;try{let c=await fft(await ge.readFilePromise(a));n=aK.default.deserialize(c),this.installStateChecksum=da(c)}catch{r&&await this.applyLightResolution();return}e&&typeof n.linkersCustomData<"u"&&(this.linkersCustomData=n.linkersCustomData),o&&Object.assign(this,(0,iP.default)(n,sK.restoreBuildState)),r&&(n.lockFileChecksum===this.lockFileChecksum?Object.assign(this,(0,iP.default)(n,sK.restoreResolutions)):await this.applyLightResolution())}async applyLightResolution(){await this.resolveEverything({lockfileOnly:!0,report:new Wi}),await this.persistInstallStateFile()}async persist(){await this.persistLockfile();for(let e of this.workspacesByCwd.values())await e.persistManifest()}async cacheCleanup({cache:e,report:r}){if(this.configuration.get("enableGlobalCache"))return;let o=new Set([".gitignore"]);if(!l4(e.cwd,this.cwd)||!await ge.existsPromise(e.cwd))return;let a=this.configuration.get("preferAggregateCacheInfo"),n=0,c=null;for(let f of await ge.readdirPromise(e.cwd)){if(o.has(f))continue;let g=ee.resolve(e.cwd,f);e.markedFiles.has(g)||(c=f,e.immutable?r.reportError(56,`${ar(this.configuration,ee.basename(g),"magenta")} appears to be unused and would be marked for deletion, but the cache is immutable`):(a?n+=1:r.reportInfo(19,`${ar(this.configuration,ee.basename(g),"magenta")} appears to be unused - removing`),await ge.removePromise(g)))}a&&n!==0&&r.reportInfo(19,n>1?`${n} packages appeared to be unused and were removed`:`${c} appeared to be unused and was removed`)}}});var IE,Vpe=Lt(()=>{Ft();zd();HU();ml();IE=class{constructor(e,r){this.values=new Map;this.hits=new Map;this.enumerators=new Map;this.configuration=e;let o=this.getRegistryPath();this.isNew=!ge.existsSync(o),this.sendReport(r),this.startBuffer()}reportVersion(e){this.reportValue("version",e.replace(/-git\..*/,"-git"))}reportCommandName(e){this.reportValue("commandName",e||"")}reportPluginName(e){this.reportValue("pluginName",e)}reportProject(e){this.reportEnumerator("projectCount",e)}reportInstall(e){this.reportHit("installCount",e)}reportPackageExtension(e){this.reportValue("packageExtension",e)}reportWorkspaceCount(e){this.reportValue("workspaceCount",String(e))}reportDependencyCount(e){this.reportValue("dependencyCount",String(e))}reportValue(e,r){Hd(this.values,e).add(r)}reportEnumerator(e,r){Hd(this.enumerators,e).add(da(r))}reportHit(e,r="*"){let o=gC(this.hits,e),a=jf(o,r,()=>0);o.set(r,a+1)}getRegistryPath(){let e=this.configuration.get("globalFolder");return ee.join(e,"telemetry.json")}sendReport(e){let r=this.getRegistryPath(),o;try{o=ge.readJsonSync(r)}catch{o={}}let a=Date.now(),n=this.configuration.get("telemetryInterval")*24*60*60*1e3,f=(o.lastUpdate??a+n+Math.floor(n*Math.random()))+n;if(f>a&&o.lastUpdate!=null)return;try{ge.mkdirSync(ee.dirname(r),{recursive:!0}),ge.writeJsonSync(r,{lastUpdate:a})}catch{return}if(f>a||!o.blocks)return;let g=`https://browser-http-intake.logs.datadoghq.eu/v1/input/${e}?ddsource=yarn`,p=E=>_U(g,E,{configuration:this.configuration}).catch(()=>{});for(let[E,B]of Object.entries(o.blocks??{})){if(Object.keys(B).length===0)continue;let Q=B;Q.userId=E,Q.reportType="primary";for(let N of Object.keys(Q.enumerators??{}))Q.enumerators[N]=Q.enumerators[N].length;p(Q);let x=new Map,C=20;for(let[N,U]of Object.entries(Q.values))U.length>0&&x.set(N,U.slice(0,C));for(;x.size>0;){let N={};N.userId=E,N.reportType="secondary",N.metrics={};for(let[U,H]of x)N.metrics[U]=H.shift(),H.length===0&&x.delete(U);p(N)}}}applyChanges(){let e=this.getRegistryPath(),r;try{r=ge.readJsonSync(e)}catch{r={}}let o=this.configuration.get("telemetryUserId")??"*",a=r.blocks=r.blocks??{},n=a[o]=a[o]??{};for(let c of this.hits.keys()){let f=n.hits=n.hits??{},g=f[c]=f[c]??{};for(let[p,E]of this.hits.get(c))g[p]=(g[p]??0)+E}for(let c of["values","enumerators"])for(let f of this[c].keys()){let g=n[c]=n[c]??{};g[f]=[...new Set([...g[f]??[],...this[c].get(f)??[]])]}ge.mkdirSync(ee.dirname(e),{recursive:!0}),ge.writeJsonSync(e,r)}startBuffer(){process.on("exit",()=>{try{this.applyChanges()}catch{}})}}});var g1={};tr(g1,{BuildType:()=>$x,Cache:()=>$r,Configuration:()=>rt,DEFAULT_LOCK_FILENAME:()=>d4,DEFAULT_RC_FILENAME:()=>h4,FormatType:()=>rae,InstallMode:()=>NA,LegacyMigrationResolver:()=>yE,LightReport:()=>Tu,LinkType:()=>mC,LockfileResolver:()=>CE,Manifest:()=>Gt,MessageName:()=>br,MultiFetcher:()=>xC,PackageExtensionStatus:()=>nL,PackageExtensionType:()=>rL,Project:()=>xt,ProjectLookup:()=>C4,Report:()=>po,ReportError:()=>rr,SettingsType:()=>ak,StreamReport:()=>St,TAG_REGEXP:()=>SB,TelemetryManager:()=>IE,ThrowReport:()=>Wi,VirtualFetcher:()=>PC,Workspace:()=>EE,WorkspaceFetcher:()=>FC,WorkspaceResolver:()=>Qi,YarnVersion:()=>ei,execUtils:()=>pn,folderUtils:()=>tk,formatUtils:()=>Ne,hashUtils:()=>Oi,httpUtils:()=>Hn,miscUtils:()=>Ze,nodeUtils:()=>xp,parseMessageName:()=>ED,scriptUtils:()=>En,semverUtils:()=>Zr,stringifyMessageName:()=>pu,structUtils:()=>Y,tgzUtils:()=>ys,treeUtils:()=>TA});var $e=Lt(()=>{v4();rk();El();zd();HU();ml();nk();a3();kp();go();Gge();Xge();$ge();kB();kB();epe();G8();tpe();j8();kC();ID();n4();Jpe();wl();Xk();Vpe();nK();s4();o4();$d();iK();n3();aie()});var rhe=_((A8t,h1)=>{"use strict";var yft=process.env.TERM_PROGRAM==="Hyper",Cft=process.platform==="win32",$pe=process.platform==="linux",fK={ballotDisabled:"\u2612",ballotOff:"\u2610",ballotOn:"\u2611",bullet:"\u2022",bulletWhite:"\u25E6",fullBlock:"\u2588",heart:"\u2764",identicalTo:"\u2261",line:"\u2500",mark:"\u203B",middot:"\xB7",minus:"\uFF0D",multiplication:"\xD7",obelus:"\xF7",pencilDownRight:"\u270E",pencilRight:"\u270F",pencilUpRight:"\u2710",percent:"%",pilcrow2:"\u2761",pilcrow:"\xB6",plusMinus:"\xB1",section:"\xA7",starsOff:"\u2606",starsOn:"\u2605",upDownArrow:"\u2195"},ehe=Object.assign({},fK,{check:"\u221A",cross:"\xD7",ellipsisLarge:"...",ellipsis:"...",info:"i",question:"?",questionSmall:"?",pointer:">",pointerSmall:"\xBB",radioOff:"( )",radioOn:"(*)",warning:"\u203C"}),the=Object.assign({},fK,{ballotCross:"\u2718",check:"\u2714",cross:"\u2716",ellipsisLarge:"\u22EF",ellipsis:"\u2026",info:"\u2139",question:"?",questionFull:"\uFF1F",questionSmall:"\uFE56",pointer:$pe?"\u25B8":"\u276F",pointerSmall:$pe?"\u2023":"\u203A",radioOff:"\u25EF",radioOn:"\u25C9",warning:"\u26A0"});h1.exports=Cft&&!yft?ehe:the;Reflect.defineProperty(h1.exports,"common",{enumerable:!1,value:fK});Reflect.defineProperty(h1.exports,"windows",{enumerable:!1,value:ehe});Reflect.defineProperty(h1.exports,"other",{enumerable:!1,value:the})});var mc=_((l8t,gK)=>{"use strict";var Eft=t=>t!==null&&typeof t=="object"&&!Array.isArray(t),Ift=/[\u001b\u009b][[\]#;?()]*(?:(?:(?:[^\W_]*;?[^\W_]*)\u0007)|(?:(?:[0-9]{1,4}(;[0-9]{0,4})*)?[~0-9=<>cf-nqrtyA-PRZ]))/g,nhe=()=>{let t={enabled:!0,visible:!0,styles:{},keys:{}};"FORCE_COLOR"in process.env&&(t.enabled=process.env.FORCE_COLOR!=="0");let e=n=>{let c=n.open=`\x1B[${n.codes[0]}m`,f=n.close=`\x1B[${n.codes[1]}m`,g=n.regex=new RegExp(`\\u001b\\[${n.codes[1]}m`,"g");return n.wrap=(p,E)=>{p.includes(f)&&(p=p.replace(g,f+c));let B=c+p+f;return E?B.replace(/\r*\n/g,`${f}$&${c}`):B},n},r=(n,c,f)=>typeof n=="function"?n(c):n.wrap(c,f),o=(n,c)=>{if(n===""||n==null)return"";if(t.enabled===!1)return n;if(t.visible===!1)return"";let f=""+n,g=f.includes(` -`),p=c.length;for(p>0&&c.includes("unstyle")&&(c=[...new Set(["unstyle",...c])].reverse());p-- >0;)f=r(t.styles[c[p]],f,g);return f},a=(n,c,f)=>{t.styles[n]=e({name:n,codes:c}),(t.keys[f]||(t.keys[f]=[])).push(n),Reflect.defineProperty(t,n,{configurable:!0,enumerable:!0,set(p){t.alias(n,p)},get(){let p=E=>o(E,p.stack);return Reflect.setPrototypeOf(p,t),p.stack=this.stack?this.stack.concat(n):[n],p}})};return a("reset",[0,0],"modifier"),a("bold",[1,22],"modifier"),a("dim",[2,22],"modifier"),a("italic",[3,23],"modifier"),a("underline",[4,24],"modifier"),a("inverse",[7,27],"modifier"),a("hidden",[8,28],"modifier"),a("strikethrough",[9,29],"modifier"),a("black",[30,39],"color"),a("red",[31,39],"color"),a("green",[32,39],"color"),a("yellow",[33,39],"color"),a("blue",[34,39],"color"),a("magenta",[35,39],"color"),a("cyan",[36,39],"color"),a("white",[37,39],"color"),a("gray",[90,39],"color"),a("grey",[90,39],"color"),a("bgBlack",[40,49],"bg"),a("bgRed",[41,49],"bg"),a("bgGreen",[42,49],"bg"),a("bgYellow",[43,49],"bg"),a("bgBlue",[44,49],"bg"),a("bgMagenta",[45,49],"bg"),a("bgCyan",[46,49],"bg"),a("bgWhite",[47,49],"bg"),a("blackBright",[90,39],"bright"),a("redBright",[91,39],"bright"),a("greenBright",[92,39],"bright"),a("yellowBright",[93,39],"bright"),a("blueBright",[94,39],"bright"),a("magentaBright",[95,39],"bright"),a("cyanBright",[96,39],"bright"),a("whiteBright",[97,39],"bright"),a("bgBlackBright",[100,49],"bgBright"),a("bgRedBright",[101,49],"bgBright"),a("bgGreenBright",[102,49],"bgBright"),a("bgYellowBright",[103,49],"bgBright"),a("bgBlueBright",[104,49],"bgBright"),a("bgMagentaBright",[105,49],"bgBright"),a("bgCyanBright",[106,49],"bgBright"),a("bgWhiteBright",[107,49],"bgBright"),t.ansiRegex=Ift,t.hasColor=t.hasAnsi=n=>(t.ansiRegex.lastIndex=0,typeof n=="string"&&n!==""&&t.ansiRegex.test(n)),t.alias=(n,c)=>{let f=typeof c=="string"?t[c]:c;if(typeof f!="function")throw new TypeError("Expected alias to be the name of an existing color (string) or a function");f.stack||(Reflect.defineProperty(f,"name",{value:n}),t.styles[n]=f,f.stack=[n]),Reflect.defineProperty(t,n,{configurable:!0,enumerable:!0,set(g){t.alias(n,g)},get(){let g=p=>o(p,g.stack);return Reflect.setPrototypeOf(g,t),g.stack=this.stack?this.stack.concat(f.stack):f.stack,g}})},t.theme=n=>{if(!Eft(n))throw new TypeError("Expected theme to be an object");for(let c of Object.keys(n))t.alias(c,n[c]);return t},t.alias("unstyle",n=>typeof n=="string"&&n!==""?(t.ansiRegex.lastIndex=0,n.replace(t.ansiRegex,"")):""),t.alias("noop",n=>n),t.none=t.clear=t.noop,t.stripColor=t.unstyle,t.symbols=rhe(),t.define=a,t};gK.exports=nhe();gK.exports.create=nhe});var zo=_(hn=>{"use strict";var wft=Object.prototype.toString,Fl=mc(),ihe=!1,pK=[],she={yellow:"blue",cyan:"red",green:"magenta",black:"white",blue:"yellow",red:"cyan",magenta:"green",white:"black"};hn.longest=(t,e)=>t.reduce((r,o)=>Math.max(r,e?o[e].length:o.length),0);hn.hasColor=t=>!!t&&Fl.hasColor(t);var lP=hn.isObject=t=>t!==null&&typeof t=="object"&&!Array.isArray(t);hn.nativeType=t=>wft.call(t).slice(8,-1).toLowerCase().replace(/\s/g,"");hn.isAsyncFn=t=>hn.nativeType(t)==="asyncfunction";hn.isPrimitive=t=>t!=null&&typeof t!="object"&&typeof t!="function";hn.resolve=(t,e,...r)=>typeof e=="function"?e.call(t,...r):e;hn.scrollDown=(t=[])=>[...t.slice(1),t[0]];hn.scrollUp=(t=[])=>[t.pop(),...t];hn.reorder=(t=[])=>{let e=t.slice();return e.sort((r,o)=>r.index>o.index?1:r.index{let o=t.length,a=r===o?0:r<0?o-1:r,n=t[e];t[e]=t[a],t[a]=n};hn.width=(t,e=80)=>{let r=t&&t.columns?t.columns:e;return t&&typeof t.getWindowSize=="function"&&(r=t.getWindowSize()[0]),process.platform==="win32"?r-1:r};hn.height=(t,e=20)=>{let r=t&&t.rows?t.rows:e;return t&&typeof t.getWindowSize=="function"&&(r=t.getWindowSize()[1]),r};hn.wordWrap=(t,e={})=>{if(!t)return t;typeof e=="number"&&(e={width:e});let{indent:r="",newline:o=` -`+r,width:a=80}=e;a-=((o+r).match(/[^\S\n]/g)||[]).length;let c=`.{1,${a}}([\\s\\u200B]+|$)|[^\\s\\u200B]+?([\\s\\u200B]+|$)`,f=t.trim(),g=new RegExp(c,"g"),p=f.match(g)||[];return p=p.map(E=>E.replace(/\n$/,"")),e.padEnd&&(p=p.map(E=>E.padEnd(a," "))),e.padStart&&(p=p.map(E=>E.padStart(a," "))),r+p.join(o)};hn.unmute=t=>{let e=t.stack.find(o=>Fl.keys.color.includes(o));return e?Fl[e]:t.stack.find(o=>o.slice(2)==="bg")?Fl[e.slice(2)]:o=>o};hn.pascal=t=>t?t[0].toUpperCase()+t.slice(1):"";hn.inverse=t=>{if(!t||!t.stack)return t;let e=t.stack.find(o=>Fl.keys.color.includes(o));if(e){let o=Fl["bg"+hn.pascal(e)];return o?o.black:t}let r=t.stack.find(o=>o.slice(0,2)==="bg");return r?Fl[r.slice(2).toLowerCase()]||t:Fl.none};hn.complement=t=>{if(!t||!t.stack)return t;let e=t.stack.find(o=>Fl.keys.color.includes(o)),r=t.stack.find(o=>o.slice(0,2)==="bg");if(e&&!r)return Fl[she[e]||e];if(r){let o=r.slice(2).toLowerCase(),a=she[o];return a&&Fl["bg"+hn.pascal(a)]||t}return Fl.none};hn.meridiem=t=>{let e=t.getHours(),r=t.getMinutes(),o=e>=12?"pm":"am";e=e%12;let a=e===0?12:e,n=r<10?"0"+r:r;return a+":"+n+" "+o};hn.set=(t={},e="",r)=>e.split(".").reduce((o,a,n,c)=>{let f=c.length-1>n?o[a]||{}:r;return!hn.isObject(f)&&n{let o=t[e]==null?e.split(".").reduce((a,n)=>a&&a[n],t):t[e];return o??r};hn.mixin=(t,e)=>{if(!lP(t))return e;if(!lP(e))return t;for(let r of Object.keys(e)){let o=Object.getOwnPropertyDescriptor(e,r);if(o.hasOwnProperty("value"))if(t.hasOwnProperty(r)&&lP(o.value)){let a=Object.getOwnPropertyDescriptor(t,r);lP(a.value)?t[r]=hn.merge({},t[r],e[r]):Reflect.defineProperty(t,r,o)}else Reflect.defineProperty(t,r,o);else Reflect.defineProperty(t,r,o)}return t};hn.merge=(...t)=>{let e={};for(let r of t)hn.mixin(e,r);return e};hn.mixinEmitter=(t,e)=>{let r=e.constructor.prototype;for(let o of Object.keys(r)){let a=r[o];typeof a=="function"?hn.define(t,o,a.bind(e)):hn.define(t,o,a)}};hn.onExit=t=>{let e=(r,o)=>{ihe||(ihe=!0,pK.forEach(a=>a()),r===!0&&process.exit(128+o))};pK.length===0&&(process.once("SIGTERM",e.bind(null,!0,15)),process.once("SIGINT",e.bind(null,!0,2)),process.once("exit",e)),pK.push(t)};hn.define=(t,e,r)=>{Reflect.defineProperty(t,e,{value:r})};hn.defineExport=(t,e,r)=>{let o;Reflect.defineProperty(t,e,{enumerable:!0,configurable:!0,set(a){o=a},get(){return o?o():r()}})}});var ohe=_(QE=>{"use strict";QE.ctrl={a:"first",b:"backward",c:"cancel",d:"deleteForward",e:"last",f:"forward",g:"reset",i:"tab",k:"cutForward",l:"reset",n:"newItem",m:"cancel",j:"submit",p:"search",r:"remove",s:"save",u:"undo",w:"cutLeft",x:"toggleCursor",v:"paste"};QE.shift={up:"shiftUp",down:"shiftDown",left:"shiftLeft",right:"shiftRight",tab:"prev"};QE.fn={up:"pageUp",down:"pageDown",left:"pageLeft",right:"pageRight",delete:"deleteForward"};QE.option={b:"backward",f:"forward",d:"cutRight",left:"cutLeft",up:"altUp",down:"altDown"};QE.keys={pageup:"pageUp",pagedown:"pageDown",home:"home",end:"end",cancel:"cancel",delete:"deleteForward",backspace:"delete",down:"down",enter:"submit",escape:"cancel",left:"left",space:"space",number:"number",return:"submit",right:"right",tab:"next",up:"up"}});var lhe=_((f8t,Ahe)=>{"use strict";var ahe=Ie("readline"),Bft=ohe(),Qft=/^(?:\x1b)([a-zA-Z0-9])$/,vft=/^(?:\x1b+)(O|N|\[|\[\[)(?:(\d+)(?:;(\d+))?([~^$])|(?:1;)?(\d+)?([a-zA-Z]))/,Dft={OP:"f1",OQ:"f2",OR:"f3",OS:"f4","[11~":"f1","[12~":"f2","[13~":"f3","[14~":"f4","[[A":"f1","[[B":"f2","[[C":"f3","[[D":"f4","[[E":"f5","[15~":"f5","[17~":"f6","[18~":"f7","[19~":"f8","[20~":"f9","[21~":"f10","[23~":"f11","[24~":"f12","[A":"up","[B":"down","[C":"right","[D":"left","[E":"clear","[F":"end","[H":"home",OA:"up",OB:"down",OC:"right",OD:"left",OE:"clear",OF:"end",OH:"home","[1~":"home","[2~":"insert","[3~":"delete","[4~":"end","[5~":"pageup","[6~":"pagedown","[[5~":"pageup","[[6~":"pagedown","[7~":"home","[8~":"end","[a":"up","[b":"down","[c":"right","[d":"left","[e":"clear","[2$":"insert","[3$":"delete","[5$":"pageup","[6$":"pagedown","[7$":"home","[8$":"end",Oa:"up",Ob:"down",Oc:"right",Od:"left",Oe:"clear","[2^":"insert","[3^":"delete","[5^":"pageup","[6^":"pagedown","[7^":"home","[8^":"end","[Z":"tab"};function Sft(t){return["[a","[b","[c","[d","[e","[2$","[3$","[5$","[6$","[7$","[8$","[Z"].includes(t)}function kft(t){return["Oa","Ob","Oc","Od","Oe","[2^","[3^","[5^","[6^","[7^","[8^"].includes(t)}var cP=(t="",e={})=>{let r,o={name:e.name,ctrl:!1,meta:!1,shift:!1,option:!1,sequence:t,raw:t,...e};if(Buffer.isBuffer(t)?t[0]>127&&t[1]===void 0?(t[0]-=128,t="\x1B"+String(t)):t=String(t):t!==void 0&&typeof t!="string"?t=String(t):t||(t=o.sequence||""),o.sequence=o.sequence||t||o.name,t==="\r")o.raw=void 0,o.name="return";else if(t===` -`)o.name="enter";else if(t===" ")o.name="tab";else if(t==="\b"||t==="\x7F"||t==="\x1B\x7F"||t==="\x1B\b")o.name="backspace",o.meta=t.charAt(0)==="\x1B";else if(t==="\x1B"||t==="\x1B\x1B")o.name="escape",o.meta=t.length===2;else if(t===" "||t==="\x1B ")o.name="space",o.meta=t.length===2;else if(t<="")o.name=String.fromCharCode(t.charCodeAt(0)+"a".charCodeAt(0)-1),o.ctrl=!0;else if(t.length===1&&t>="0"&&t<="9")o.name="number";else if(t.length===1&&t>="a"&&t<="z")o.name=t;else if(t.length===1&&t>="A"&&t<="Z")o.name=t.toLowerCase(),o.shift=!0;else if(r=Qft.exec(t))o.meta=!0,o.shift=/^[A-Z]$/.test(r[1]);else if(r=vft.exec(t)){let a=[...t];a[0]==="\x1B"&&a[1]==="\x1B"&&(o.option=!0);let n=[r[1],r[2],r[4],r[6]].filter(Boolean).join(""),c=(r[3]||r[5]||1)-1;o.ctrl=!!(c&4),o.meta=!!(c&10),o.shift=!!(c&1),o.code=n,o.name=Dft[n],o.shift=Sft(n)||o.shift,o.ctrl=kft(n)||o.ctrl}return o};cP.listen=(t={},e)=>{let{stdin:r}=t;if(!r||r!==process.stdin&&!r.isTTY)throw new Error("Invalid stream passed");let o=ahe.createInterface({terminal:!0,input:r});ahe.emitKeypressEvents(r,o);let a=(f,g)=>e(f,cP(f,g),o),n=r.isRaw;return r.isTTY&&r.setRawMode(!0),r.on("keypress",a),o.resume(),()=>{r.isTTY&&r.setRawMode(n),r.removeListener("keypress",a),o.pause(),o.close()}};cP.action=(t,e,r)=>{let o={...Bft,...r};return e.ctrl?(e.action=o.ctrl[e.name],e):e.option&&o.option?(e.action=o.option[e.name],e):e.shift?(e.action=o.shift[e.name],e):(e.action=o.keys[e.name],e)};Ahe.exports=cP});var uhe=_((g8t,che)=>{"use strict";che.exports=t=>{t.timers=t.timers||{};let e=t.options.timers;if(!!e)for(let r of Object.keys(e)){let o=e[r];typeof o=="number"&&(o={interval:o}),xft(t,r,o)}};function xft(t,e,r={}){let o=t.timers[e]={name:e,start:Date.now(),ms:0,tick:0},a=r.interval||120;o.frames=r.frames||[],o.loading=!0;let n=setInterval(()=>{o.ms=Date.now()-o.start,o.tick++,t.render()},a);return o.stop=()=>{o.loading=!1,clearInterval(n)},Reflect.defineProperty(o,"interval",{value:n}),t.once("close",()=>o.stop()),o.stop}});var ghe=_((p8t,fhe)=>{"use strict";var{define:Pft,width:bft}=zo(),hK=class{constructor(e){let r=e.options;Pft(this,"_prompt",e),this.type=e.type,this.name=e.name,this.message="",this.header="",this.footer="",this.error="",this.hint="",this.input="",this.cursor=0,this.index=0,this.lines=0,this.tick=0,this.prompt="",this.buffer="",this.width=bft(r.stdout||process.stdout),Object.assign(this,r),this.name=this.name||this.message,this.message=this.message||this.name,this.symbols=e.symbols,this.styles=e.styles,this.required=new Set,this.cancelled=!1,this.submitted=!1}clone(){let e={...this};return e.status=this.status,e.buffer=Buffer.from(e.buffer),delete e.clone,e}set color(e){this._color=e}get color(){let e=this.prompt.styles;if(this.cancelled)return e.cancelled;if(this.submitted)return e.submitted;let r=this._color||e[this.status];return typeof r=="function"?r:e.pending}set loading(e){this._loading=e}get loading(){return typeof this._loading=="boolean"?this._loading:this.loadingChoices?"choices":!1}get status(){return this.cancelled?"cancelled":this.submitted?"submitted":"pending"}};fhe.exports=hK});var hhe=_((h8t,phe)=>{"use strict";var dK=zo(),mo=mc(),mK={default:mo.noop,noop:mo.noop,set inverse(t){this._inverse=t},get inverse(){return this._inverse||dK.inverse(this.primary)},set complement(t){this._complement=t},get complement(){return this._complement||dK.complement(this.primary)},primary:mo.cyan,success:mo.green,danger:mo.magenta,strong:mo.bold,warning:mo.yellow,muted:mo.dim,disabled:mo.gray,dark:mo.dim.gray,underline:mo.underline,set info(t){this._info=t},get info(){return this._info||this.primary},set em(t){this._em=t},get em(){return this._em||this.primary.underline},set heading(t){this._heading=t},get heading(){return this._heading||this.muted.underline},set pending(t){this._pending=t},get pending(){return this._pending||this.primary},set submitted(t){this._submitted=t},get submitted(){return this._submitted||this.success},set cancelled(t){this._cancelled=t},get cancelled(){return this._cancelled||this.danger},set typing(t){this._typing=t},get typing(){return this._typing||this.dim},set placeholder(t){this._placeholder=t},get placeholder(){return this._placeholder||this.primary.dim},set highlight(t){this._highlight=t},get highlight(){return this._highlight||this.inverse}};mK.merge=(t={})=>{t.styles&&typeof t.styles.enabled=="boolean"&&(mo.enabled=t.styles.enabled),t.styles&&typeof t.styles.visible=="boolean"&&(mo.visible=t.styles.visible);let e=dK.merge({},mK,t.styles);delete e.merge;for(let r of Object.keys(mo))e.hasOwnProperty(r)||Reflect.defineProperty(e,r,{get:()=>mo[r]});for(let r of Object.keys(mo.styles))e.hasOwnProperty(r)||Reflect.defineProperty(e,r,{get:()=>mo[r]});return e};phe.exports=mK});var mhe=_((d8t,dhe)=>{"use strict";var yK=process.platform==="win32",hg=mc(),Fft=zo(),CK={...hg.symbols,upDownDoubleArrow:"\u21D5",upDownDoubleArrow2:"\u2B0D",upDownArrow:"\u2195",asterisk:"*",asterism:"\u2042",bulletWhite:"\u25E6",electricArrow:"\u2301",ellipsisLarge:"\u22EF",ellipsisSmall:"\u2026",fullBlock:"\u2588",identicalTo:"\u2261",indicator:hg.symbols.check,leftAngle:"\u2039",mark:"\u203B",minus:"\u2212",multiplication:"\xD7",obelus:"\xF7",percent:"%",pilcrow:"\xB6",pilcrow2:"\u2761",pencilUpRight:"\u2710",pencilDownRight:"\u270E",pencilRight:"\u270F",plus:"+",plusMinus:"\xB1",pointRight:"\u261E",rightAngle:"\u203A",section:"\xA7",hexagon:{off:"\u2B21",on:"\u2B22",disabled:"\u2B22"},ballot:{on:"\u2611",off:"\u2610",disabled:"\u2612"},stars:{on:"\u2605",off:"\u2606",disabled:"\u2606"},folder:{on:"\u25BC",off:"\u25B6",disabled:"\u25B6"},prefix:{pending:hg.symbols.question,submitted:hg.symbols.check,cancelled:hg.symbols.cross},separator:{pending:hg.symbols.pointerSmall,submitted:hg.symbols.middot,cancelled:hg.symbols.middot},radio:{off:yK?"( )":"\u25EF",on:yK?"(*)":"\u25C9",disabled:yK?"(|)":"\u24BE"},numbers:["\u24EA","\u2460","\u2461","\u2462","\u2463","\u2464","\u2465","\u2466","\u2467","\u2468","\u2469","\u246A","\u246B","\u246C","\u246D","\u246E","\u246F","\u2470","\u2471","\u2472","\u2473","\u3251","\u3252","\u3253","\u3254","\u3255","\u3256","\u3257","\u3258","\u3259","\u325A","\u325B","\u325C","\u325D","\u325E","\u325F","\u32B1","\u32B2","\u32B3","\u32B4","\u32B5","\u32B6","\u32B7","\u32B8","\u32B9","\u32BA","\u32BB","\u32BC","\u32BD","\u32BE","\u32BF"]};CK.merge=t=>{let e=Fft.merge({},hg.symbols,CK,t.symbols);return delete e.merge,e};dhe.exports=CK});var Che=_((m8t,yhe)=>{"use strict";var Rft=hhe(),Tft=mhe(),Nft=zo();yhe.exports=t=>{t.options=Nft.merge({},t.options.theme,t.options),t.symbols=Tft.merge(t.options),t.styles=Rft.merge(t.options)}});var Qhe=_((whe,Bhe)=>{"use strict";var Ehe=process.env.TERM_PROGRAM==="Apple_Terminal",Mft=mc(),EK=zo(),yc=Bhe.exports=whe,Ui="\x1B[",Ihe="\x07",IK=!1,zp=yc.code={bell:Ihe,beep:Ihe,beginning:`${Ui}G`,down:`${Ui}J`,esc:Ui,getPosition:`${Ui}6n`,hide:`${Ui}?25l`,line:`${Ui}2K`,lineEnd:`${Ui}K`,lineStart:`${Ui}1K`,restorePosition:Ui+(Ehe?"8":"u"),savePosition:Ui+(Ehe?"7":"s"),screen:`${Ui}2J`,show:`${Ui}?25h`,up:`${Ui}1J`},Cm=yc.cursor={get hidden(){return IK},hide(){return IK=!0,zp.hide},show(){return IK=!1,zp.show},forward:(t=1)=>`${Ui}${t}C`,backward:(t=1)=>`${Ui}${t}D`,nextLine:(t=1)=>`${Ui}E`.repeat(t),prevLine:(t=1)=>`${Ui}F`.repeat(t),up:(t=1)=>t?`${Ui}${t}A`:"",down:(t=1)=>t?`${Ui}${t}B`:"",right:(t=1)=>t?`${Ui}${t}C`:"",left:(t=1)=>t?`${Ui}${t}D`:"",to(t,e){return e?`${Ui}${e+1};${t+1}H`:`${Ui}${t+1}G`},move(t=0,e=0){let r="";return r+=t<0?Cm.left(-t):t>0?Cm.right(t):"",r+=e<0?Cm.up(-e):e>0?Cm.down(e):"",r},restore(t={}){let{after:e,cursor:r,initial:o,input:a,prompt:n,size:c,value:f}=t;if(o=EK.isPrimitive(o)?String(o):"",a=EK.isPrimitive(a)?String(a):"",f=EK.isPrimitive(f)?String(f):"",c){let g=yc.cursor.up(c)+yc.cursor.to(n.length),p=a.length-r;return p>0&&(g+=yc.cursor.left(p)),g}if(f||e){let g=!a&&!!o?-o.length:-a.length+r;return e&&(g-=e.length),a===""&&o&&!n.includes(o)&&(g+=o.length),yc.cursor.move(g)}}},wK=yc.erase={screen:zp.screen,up:zp.up,down:zp.down,line:zp.line,lineEnd:zp.lineEnd,lineStart:zp.lineStart,lines(t){let e="";for(let r=0;r{if(!e)return wK.line+Cm.to(0);let r=n=>[...Mft.unstyle(n)].length,o=t.split(/\r?\n/),a=0;for(let n of o)a+=1+Math.floor(Math.max(r(n)-1,0)/e);return(wK.line+Cm.prevLine()).repeat(a-1)+wK.line+Cm.to(0)}});var vE=_((y8t,Dhe)=>{"use strict";var Lft=Ie("events"),vhe=mc(),BK=lhe(),Oft=uhe(),Uft=ghe(),Kft=Che(),tA=zo(),Em=Qhe(),d1=class extends Lft{constructor(e={}){super(),this.name=e.name,this.type=e.type,this.options=e,Kft(this),Oft(this),this.state=new Uft(this),this.initial=[e.initial,e.default].find(r=>r!=null),this.stdout=e.stdout||process.stdout,this.stdin=e.stdin||process.stdin,this.scale=e.scale||1,this.term=this.options.term||process.env.TERM_PROGRAM,this.margin=Hft(this.options.margin),this.setMaxListeners(0),_ft(this)}async keypress(e,r={}){this.keypressed=!0;let o=BK.action(e,BK(e,r),this.options.actions);this.state.keypress=o,this.emit("keypress",e,o),this.emit("state",this.state.clone());let a=this.options[o.action]||this[o.action]||this.dispatch;if(typeof a=="function")return await a.call(this,e,o);this.alert()}alert(){delete this.state.alert,this.options.show===!1?this.emit("alert"):this.stdout.write(Em.code.beep)}cursorHide(){this.stdout.write(Em.cursor.hide()),tA.onExit(()=>this.cursorShow())}cursorShow(){this.stdout.write(Em.cursor.show())}write(e){!e||(this.stdout&&this.state.show!==!1&&this.stdout.write(e),this.state.buffer+=e)}clear(e=0){let r=this.state.buffer;this.state.buffer="",!(!r&&!e||this.options.show===!1)&&this.stdout.write(Em.cursor.down(e)+Em.clear(r,this.width))}restore(){if(this.state.closed||this.options.show===!1)return;let{prompt:e,after:r,rest:o}=this.sections(),{cursor:a,initial:n="",input:c="",value:f=""}=this,g=this.state.size=o.length,p={after:r,cursor:a,initial:n,input:c,prompt:e,size:g,value:f},E=Em.cursor.restore(p);E&&this.stdout.write(E)}sections(){let{buffer:e,input:r,prompt:o}=this.state;o=vhe.unstyle(o);let a=vhe.unstyle(e),n=a.indexOf(o),c=a.slice(0,n),g=a.slice(n).split(` -`),p=g[0],E=g[g.length-1],Q=(o+(r?" "+r:"")).length,x=Qe.call(this,this.value),this.result=()=>o.call(this,this.value),typeof r.initial=="function"&&(this.initial=await r.initial.call(this,this)),typeof r.onRun=="function"&&await r.onRun.call(this,this),typeof r.onSubmit=="function"){let a=r.onSubmit.bind(this),n=this.submit.bind(this);delete this.options.onSubmit,this.submit=async()=>(await a(this.name,this.value,this),n())}await this.start(),await this.render()}render(){throw new Error("expected prompt to have a custom render method")}run(){return new Promise(async(e,r)=>{if(this.once("submit",e),this.once("cancel",r),await this.skip())return this.render=()=>{},this.submit();await this.initialize(),this.emit("run")})}async element(e,r,o){let{options:a,state:n,symbols:c,timers:f}=this,g=f&&f[e];n.timer=g;let p=a[e]||n[e]||c[e],E=r&&r[e]!=null?r[e]:await p;if(E==="")return E;let B=await this.resolve(E,n,r,o);return!B&&r&&r[e]?this.resolve(p,n,r,o):B}async prefix(){let e=await this.element("prefix")||this.symbols,r=this.timers&&this.timers.prefix,o=this.state;return o.timer=r,tA.isObject(e)&&(e=e[o.status]||e.pending),tA.hasColor(e)?e:(this.styles[o.status]||this.styles.pending)(e)}async message(){let e=await this.element("message");return tA.hasColor(e)?e:this.styles.strong(e)}async separator(){let e=await this.element("separator")||this.symbols,r=this.timers&&this.timers.separator,o=this.state;o.timer=r;let a=e[o.status]||e.pending||o.separator,n=await this.resolve(a,o);return tA.isObject(n)&&(n=n[o.status]||n.pending),tA.hasColor(n)?n:this.styles.muted(n)}async pointer(e,r){let o=await this.element("pointer",e,r);if(typeof o=="string"&&tA.hasColor(o))return o;if(o){let a=this.styles,n=this.index===r,c=n?a.primary:p=>p,f=await this.resolve(o[n?"on":"off"]||o,this.state),g=tA.hasColor(f)?f:c(f);return n?g:" ".repeat(f.length)}}async indicator(e,r){let o=await this.element("indicator",e,r);if(typeof o=="string"&&tA.hasColor(o))return o;if(o){let a=this.styles,n=e.enabled===!0,c=n?a.success:a.dark,f=o[n?"on":"off"]||o;return tA.hasColor(f)?f:c(f)}return""}body(){return null}footer(){if(this.state.status==="pending")return this.element("footer")}header(){if(this.state.status==="pending")return this.element("header")}async hint(){if(this.state.status==="pending"&&!this.isValue(this.state.input)){let e=await this.element("hint");return tA.hasColor(e)?e:this.styles.muted(e)}}error(e){return this.state.submitted?"":e||this.state.error}format(e){return e}result(e){return e}validate(e){return this.options.required===!0?this.isValue(e):!0}isValue(e){return e!=null&&e!==""}resolve(e,...r){return tA.resolve(this,e,...r)}get base(){return d1.prototype}get style(){return this.styles[this.state.status]}get height(){return this.options.rows||tA.height(this.stdout,25)}get width(){return this.options.columns||tA.width(this.stdout,80)}get size(){return{width:this.width,height:this.height}}set cursor(e){this.state.cursor=e}get cursor(){return this.state.cursor}set input(e){this.state.input=e}get input(){return this.state.input}set value(e){this.state.value=e}get value(){let{input:e,value:r}=this.state,o=[r,e].find(this.isValue.bind(this));return this.isValue(o)?o:this.initial}static get prompt(){return e=>new this(e).run()}};function _ft(t){let e=a=>t[a]===void 0||typeof t[a]=="function",r=["actions","choices","initial","margin","roles","styles","symbols","theme","timers","value"],o=["body","footer","error","header","hint","indicator","message","prefix","separator","skip"];for(let a of Object.keys(t.options)){if(r.includes(a)||/^on[A-Z]/.test(a))continue;let n=t.options[a];typeof n=="function"&&e(a)?o.includes(a)||(t[a]=n.bind(t)):typeof t[a]!="function"&&(t[a]=n)}}function Hft(t){typeof t=="number"&&(t=[t,t,t,t]);let e=[].concat(t||[]),r=a=>a%2===0?` -`:" ",o=[];for(let a=0;a<4;a++){let n=r(a);e[a]?o.push(n.repeat(e[a])):o.push("")}return o}Dhe.exports=d1});var xhe=_((C8t,khe)=>{"use strict";var qft=zo(),She={default(t,e){return e},checkbox(t,e){throw new Error("checkbox role is not implemented yet")},editable(t,e){throw new Error("editable role is not implemented yet")},expandable(t,e){throw new Error("expandable role is not implemented yet")},heading(t,e){return e.disabled="",e.indicator=[e.indicator," "].find(r=>r!=null),e.message=e.message||"",e},input(t,e){throw new Error("input role is not implemented yet")},option(t,e){return She.default(t,e)},radio(t,e){throw new Error("radio role is not implemented yet")},separator(t,e){return e.disabled="",e.indicator=[e.indicator," "].find(r=>r!=null),e.message=e.message||t.symbols.line.repeat(5),e},spacer(t,e){return e}};khe.exports=(t,e={})=>{let r=qft.merge({},She,e.roles);return r[t]||r.default}});var m1=_((E8t,Fhe)=>{"use strict";var Gft=mc(),jft=vE(),Yft=xhe(),uP=zo(),{reorder:QK,scrollUp:Wft,scrollDown:Jft,isObject:Phe,swap:Vft}=uP,vK=class extends jft{constructor(e){super(e),this.cursorHide(),this.maxSelected=e.maxSelected||1/0,this.multiple=e.multiple||!1,this.initial=e.initial||0,this.delay=e.delay||0,this.longest=0,this.num=""}async initialize(){typeof this.options.initial=="function"&&(this.initial=await this.options.initial.call(this)),await this.reset(!0),await super.initialize()}async reset(){let{choices:e,initial:r,autofocus:o,suggest:a}=this.options;if(this.state._choices=[],this.state.choices=[],this.choices=await Promise.all(await this.toChoices(e)),this.choices.forEach(n=>n.enabled=!1),typeof a!="function"&&this.selectable.length===0)throw new Error("At least one choice must be selectable");Phe(r)&&(r=Object.keys(r)),Array.isArray(r)?(o!=null&&(this.index=this.findIndex(o)),r.forEach(n=>this.enable(this.find(n))),await this.render()):(o!=null&&(r=o),typeof r=="string"&&(r=this.findIndex(r)),typeof r=="number"&&r>-1&&(this.index=Math.max(0,Math.min(r,this.choices.length)),this.enable(this.find(this.index)))),this.isDisabled(this.focused)&&await this.down()}async toChoices(e,r){this.state.loadingChoices=!0;let o=[],a=0,n=async(c,f)=>{typeof c=="function"&&(c=await c.call(this)),c instanceof Promise&&(c=await c);for(let g=0;g(this.state.loadingChoices=!1,c))}async toChoice(e,r,o){if(typeof e=="function"&&(e=await e.call(this,this)),e instanceof Promise&&(e=await e),typeof e=="string"&&(e={name:e}),e.normalized)return e;e.normalized=!0;let a=e.value;if(e=Yft(e.role,this.options)(this,e),typeof e.disabled=="string"&&!e.hint&&(e.hint=e.disabled,e.disabled=!0),e.disabled===!0&&e.hint==null&&(e.hint="(disabled)"),e.index!=null)return e;e.name=e.name||e.key||e.title||e.value||e.message,e.message=e.message||e.name||"",e.value=[e.value,e.name].find(this.isValue.bind(this)),e.input="",e.index=r,e.cursor=0,uP.define(e,"parent",o),e.level=o?o.level+1:1,e.indent==null&&(e.indent=o?o.indent+" ":e.indent||""),e.path=o?o.path+"."+e.name:e.name,e.enabled=!!(this.multiple&&!this.isDisabled(e)&&(e.enabled||this.isSelected(e))),this.isDisabled(e)||(this.longest=Math.max(this.longest,Gft.unstyle(e.message).length));let c={...e};return e.reset=(f=c.input,g=c.value)=>{for(let p of Object.keys(c))e[p]=c[p];e.input=f,e.value=g},a==null&&typeof e.initial=="function"&&(e.input=await e.initial.call(this,this.state,e,r)),e}async onChoice(e,r){this.emit("choice",e,r,this),typeof e.onChoice=="function"&&await e.onChoice.call(this,this.state,e,r)}async addChoice(e,r,o){let a=await this.toChoice(e,r,o);return this.choices.push(a),this.index=this.choices.length-1,this.limit=this.choices.length,a}async newItem(e,r,o){let a={name:"New choice name?",editable:!0,newChoice:!0,...e},n=await this.addChoice(a,r,o);return n.updateChoice=()=>{delete n.newChoice,n.name=n.message=n.input,n.input="",n.cursor=0},this.render()}indent(e){return e.indent==null?e.level>1?" ".repeat(e.level-1):"":e.indent}dispatch(e,r){if(this.multiple&&this[r.name])return this[r.name]();this.alert()}focus(e,r){return typeof r!="boolean"&&(r=e.enabled),r&&!e.enabled&&this.selected.length>=this.maxSelected?this.alert():(this.index=e.index,e.enabled=r&&!this.isDisabled(e),e)}space(){return this.multiple?(this.toggle(this.focused),this.render()):this.alert()}a(){if(this.maxSelectedr.enabled);return this.choices.forEach(r=>r.enabled=!e),this.render()}i(){return this.choices.length-this.selected.length>this.maxSelected?this.alert():(this.choices.forEach(e=>e.enabled=!e.enabled),this.render())}g(e=this.focused){return this.choices.some(r=>!!r.parent)?(this.toggle(e.parent&&!e.choices?e.parent:e),this.render()):this.a()}toggle(e,r){if(!e.enabled&&this.selected.length>=this.maxSelected)return this.alert();typeof r!="boolean"&&(r=!e.enabled),e.enabled=r,e.choices&&e.choices.forEach(a=>this.toggle(a,r));let o=e.parent;for(;o;){let a=o.choices.filter(n=>this.isDisabled(n));o.enabled=a.every(n=>n.enabled===!0),o=o.parent}return bhe(this,this.choices),this.emit("toggle",e,this),e}enable(e){return this.selected.length>=this.maxSelected?this.alert():(e.enabled=!this.isDisabled(e),e.choices&&e.choices.forEach(this.enable.bind(this)),e)}disable(e){return e.enabled=!1,e.choices&&e.choices.forEach(this.disable.bind(this)),e}number(e){this.num+=e;let r=o=>{let a=Number(o);if(a>this.choices.length-1)return this.alert();let n=this.focused,c=this.choices.find(f=>a===f.index);if(!c.enabled&&this.selected.length>=this.maxSelected)return this.alert();if(this.visible.indexOf(c)===-1){let f=QK(this.choices),g=f.indexOf(c);if(n.index>g){let p=f.slice(g,g+this.limit),E=f.filter(B=>!p.includes(B));this.choices=p.concat(E)}else{let p=g-this.limit+1;this.choices=f.slice(p).concat(f.slice(0,p))}}return this.index=this.choices.indexOf(c),this.toggle(this.focused),this.render()};return clearTimeout(this.numberTimeout),new Promise(o=>{let a=this.choices.length,n=this.num,c=(f=!1,g)=>{clearTimeout(this.numberTimeout),f&&(g=r(n)),this.num="",o(g)};if(n==="0"||n.length===1&&Number(n+"0")>a)return c(!0);if(Number(n)>a)return c(!1,this.alert());this.numberTimeout=setTimeout(()=>c(!0),this.delay)})}home(){return this.choices=QK(this.choices),this.index=0,this.render()}end(){let e=this.choices.length-this.limit,r=QK(this.choices);return this.choices=r.slice(e).concat(r.slice(0,e)),this.index=this.limit-1,this.render()}first(){return this.index=0,this.render()}last(){return this.index=this.visible.length-1,this.render()}prev(){return this.visible.length<=1?this.alert():this.up()}next(){return this.visible.length<=1?this.alert():this.down()}right(){return this.cursor>=this.input.length?this.alert():(this.cursor++,this.render())}left(){return this.cursor<=0?this.alert():(this.cursor--,this.render())}up(){let e=this.choices.length,r=this.visible.length,o=this.index;return this.options.scroll===!1&&o===0?this.alert():e>r&&o===0?this.scrollUp():(this.index=(o-1%e+e)%e,this.isDisabled()?this.up():this.render())}down(){let e=this.choices.length,r=this.visible.length,o=this.index;return this.options.scroll===!1&&o===r-1?this.alert():e>r&&o===r-1?this.scrollDown():(this.index=(o+1)%e,this.isDisabled()?this.down():this.render())}scrollUp(e=0){return this.choices=Wft(this.choices),this.index=e,this.isDisabled()?this.up():this.render()}scrollDown(e=this.visible.length-1){return this.choices=Jft(this.choices),this.index=e,this.isDisabled()?this.down():this.render()}async shiftUp(){if(this.options.sort===!0){this.sorting=!0,this.swap(this.index-1),await this.up(),this.sorting=!1;return}return this.scrollUp(this.index)}async shiftDown(){if(this.options.sort===!0){this.sorting=!0,this.swap(this.index+1),await this.down(),this.sorting=!1;return}return this.scrollDown(this.index)}pageUp(){return this.visible.length<=1?this.alert():(this.limit=Math.max(this.limit-1,0),this.index=Math.min(this.limit-1,this.index),this._limit=this.limit,this.isDisabled()?this.up():this.render())}pageDown(){return this.visible.length>=this.choices.length?this.alert():(this.index=Math.max(0,this.index),this.limit=Math.min(this.limit+1,this.choices.length),this._limit=this.limit,this.isDisabled()?this.down():this.render())}swap(e){Vft(this.choices,this.index,e)}isDisabled(e=this.focused){return e&&["disabled","collapsed","hidden","completing","readonly"].some(o=>e[o]===!0)?!0:e&&e.role==="heading"}isEnabled(e=this.focused){if(Array.isArray(e))return e.every(r=>this.isEnabled(r));if(e.choices){let r=e.choices.filter(o=>!this.isDisabled(o));return e.enabled&&r.every(o=>this.isEnabled(o))}return e.enabled&&!this.isDisabled(e)}isChoice(e,r){return e.name===r||e.index===Number(r)}isSelected(e){return Array.isArray(this.initial)?this.initial.some(r=>this.isChoice(e,r)):this.isChoice(e,this.initial)}map(e=[],r="value"){return[].concat(e||[]).reduce((o,a)=>(o[a]=this.find(a,r),o),{})}filter(e,r){let a=typeof e=="function"?e:(f,g)=>[f.name,g].includes(e),c=(this.options.multiple?this.state._choices:this.choices).filter(a);return r?c.map(f=>f[r]):c}find(e,r){if(Phe(e))return r?e[r]:e;let a=typeof e=="function"?e:(c,f)=>[c.name,f].includes(e),n=this.choices.find(a);if(n)return r?n[r]:n}findIndex(e){return this.choices.indexOf(this.find(e))}async submit(){let e=this.focused;if(!e)return this.alert();if(e.newChoice)return e.input?(e.updateChoice(),this.render()):this.alert();if(this.choices.some(c=>c.newChoice))return this.alert();let{reorder:r,sort:o}=this.options,a=this.multiple===!0,n=this.selected;return n===void 0?this.alert():(Array.isArray(n)&&r!==!1&&o!==!0&&(n=uP.reorder(n)),this.value=a?n.map(c=>c.name):n.name,super.submit())}set choices(e=[]){this.state._choices=this.state._choices||[],this.state.choices=e;for(let r of e)this.state._choices.some(o=>o.name===r.name)||this.state._choices.push(r);if(!this._initial&&this.options.initial){this._initial=!0;let r=this.initial;if(typeof r=="string"||typeof r=="number"){let o=this.find(r);o&&(this.initial=o.index,this.focus(o,!0))}}}get choices(){return bhe(this,this.state.choices||[])}set visible(e){this.state.visible=e}get visible(){return(this.state.visible||this.choices).slice(0,this.limit)}set limit(e){this.state.limit=e}get limit(){let{state:e,options:r,choices:o}=this,a=e.limit||this._limit||r.limit||o.length;return Math.min(a,this.height)}set value(e){super.value=e}get value(){return typeof super.value!="string"&&super.value===this.initial?this.input:super.value}set index(e){this.state.index=e}get index(){return Math.max(0,this.state?this.state.index:0)}get enabled(){return this.filter(this.isEnabled.bind(this))}get focused(){let e=this.choices[this.index];return e&&this.state.submitted&&this.multiple!==!0&&(e.enabled=!0),e}get selectable(){return this.choices.filter(e=>!this.isDisabled(e))}get selected(){return this.multiple?this.enabled:this.focused}};function bhe(t,e){if(e instanceof Promise)return e;if(typeof e=="function"){if(uP.isAsyncFn(e))return e;e=e.call(t,t)}for(let r of e){if(Array.isArray(r.choices)){let o=r.choices.filter(a=>!t.isDisabled(a));r.enabled=o.every(a=>a.enabled===!0)}t.isDisabled(r)===!0&&delete r.enabled}return e}Fhe.exports=vK});var Xp=_((I8t,Rhe)=>{"use strict";var zft=m1(),DK=zo(),SK=class extends zft{constructor(e){super(e),this.emptyError=this.options.emptyError||"No items were selected"}async dispatch(e,r){if(this.multiple)return this[r.name]?await this[r.name](e,r):await super.dispatch(e,r);this.alert()}separator(){if(this.options.separator)return super.separator();let e=this.styles.muted(this.symbols.ellipsis);return this.state.submitted?super.separator():e}pointer(e,r){return!this.multiple||this.options.pointer?super.pointer(e,r):""}indicator(e,r){return this.multiple?super.indicator(e,r):""}choiceMessage(e,r){let o=this.resolve(e.message,this.state,e,r);return e.role==="heading"&&!DK.hasColor(o)&&(o=this.styles.strong(o)),this.resolve(o,this.state,e,r)}choiceSeparator(){return":"}async renderChoice(e,r){await this.onChoice(e,r);let o=this.index===r,a=await this.pointer(e,r),n=await this.indicator(e,r)+(e.pad||""),c=await this.resolve(e.hint,this.state,e,r);c&&!DK.hasColor(c)&&(c=this.styles.muted(c));let f=this.indent(e),g=await this.choiceMessage(e,r),p=()=>[this.margin[3],f+a+n,g,this.margin[1],c].filter(Boolean).join(" ");return e.role==="heading"?p():e.disabled?(DK.hasColor(g)||(g=this.styles.disabled(g)),p()):(o&&(g=this.styles.em(g)),p())}async renderChoices(){if(this.state.loading==="choices")return this.styles.warning("Loading choices");if(this.state.submitted)return"";let e=this.visible.map(async(n,c)=>await this.renderChoice(n,c)),r=await Promise.all(e);r.length||r.push(this.styles.danger("No matching choices"));let o=this.margin[0]+r.join(` -`),a;return this.options.choicesHeader&&(a=await this.resolve(this.options.choicesHeader,this.state)),[a,o].filter(Boolean).join(` -`)}format(){return!this.state.submitted||this.state.cancelled?"":Array.isArray(this.selected)?this.selected.map(e=>this.styles.primary(e.name)).join(", "):this.styles.primary(this.selected.name)}async render(){let{submitted:e,size:r}=this.state,o="",a=await this.header(),n=await this.prefix(),c=await this.separator(),f=await this.message();this.options.promptLine!==!1&&(o=[n,f,c,""].join(" "),this.state.prompt=o);let g=await this.format(),p=await this.error()||await this.hint(),E=await this.renderChoices(),B=await this.footer();g&&(o+=g),p&&!o.includes(p)&&(o+=" "+p),e&&!g&&!E.trim()&&this.multiple&&this.emptyError!=null&&(o+=this.styles.danger(this.emptyError)),this.clear(r),this.write([a,o,E,B].filter(Boolean).join(` -`)),this.write(this.margin[2]),this.restore()}};Rhe.exports=SK});var Nhe=_((w8t,The)=>{"use strict";var Xft=Xp(),Zft=(t,e)=>{let r=t.toLowerCase();return o=>{let n=o.toLowerCase().indexOf(r),c=e(o.slice(n,n+r.length));return n>=0?o.slice(0,n)+c+o.slice(n+r.length):o}},kK=class extends Xft{constructor(e){super(e),this.cursorShow()}moveCursor(e){this.state.cursor+=e}dispatch(e){return this.append(e)}space(e){return this.options.multiple?super.space(e):this.append(e)}append(e){let{cursor:r,input:o}=this.state;return this.input=o.slice(0,r)+e+o.slice(r),this.moveCursor(1),this.complete()}delete(){let{cursor:e,input:r}=this.state;return r?(this.input=r.slice(0,e-1)+r.slice(e),this.moveCursor(-1),this.complete()):this.alert()}deleteForward(){let{cursor:e,input:r}=this.state;return r[e]===void 0?this.alert():(this.input=`${r}`.slice(0,e)+`${r}`.slice(e+1),this.complete())}number(e){return this.append(e)}async complete(){this.completing=!0,this.choices=await this.suggest(this.input,this.state._choices),this.state.limit=void 0,this.index=Math.min(Math.max(this.visible.length-1,0),this.index),await this.render(),this.completing=!1}suggest(e=this.input,r=this.state._choices){if(typeof this.options.suggest=="function")return this.options.suggest.call(this,e,r);let o=e.toLowerCase();return r.filter(a=>a.message.toLowerCase().includes(o))}pointer(){return""}format(){if(!this.focused)return this.input;if(this.options.multiple&&this.state.submitted)return this.selected.map(e=>this.styles.primary(e.message)).join(", ");if(this.state.submitted){let e=this.value=this.input=this.focused.value;return this.styles.primary(e)}return this.input}async render(){if(this.state.status!=="pending")return super.render();let e=this.options.highlight?this.options.highlight.bind(this):this.styles.placeholder,r=Zft(this.input,e),o=this.choices;this.choices=o.map(a=>({...a,message:r(a.message)})),await super.render(),this.choices=o}submit(){return this.options.multiple&&(this.value=this.selected.map(e=>e.name)),super.submit()}};The.exports=kK});var PK=_((B8t,Mhe)=>{"use strict";var xK=zo();Mhe.exports=(t,e={})=>{t.cursorHide();let{input:r="",initial:o="",pos:a,showCursor:n=!0,color:c}=e,f=c||t.styles.placeholder,g=xK.inverse(t.styles.primary),p=N=>g(t.styles.black(N)),E=r,B=" ",Q=p(B);if(t.blink&&t.blink.off===!0&&(p=N=>N,Q=""),n&&a===0&&o===""&&r==="")return p(B);if(n&&a===0&&(r===o||r===""))return p(o[0])+f(o.slice(1));o=xK.isPrimitive(o)?`${o}`:"",r=xK.isPrimitive(r)?`${r}`:"";let x=o&&o.startsWith(r)&&o!==r,C=x?p(o[r.length]):Q;if(a!==r.length&&n===!0&&(E=r.slice(0,a)+p(r[a])+r.slice(a+1),C=""),n===!1&&(C=""),x){let N=t.styles.unstyle(E+C);return E+C+f(o.slice(N.length))}return E+C}});var fP=_((Q8t,Lhe)=>{"use strict";var $ft=mc(),egt=Xp(),tgt=PK(),bK=class extends egt{constructor(e){super({...e,multiple:!0}),this.type="form",this.initial=this.options.initial,this.align=[this.options.align,"right"].find(r=>r!=null),this.emptyError="",this.values={}}async reset(e){return await super.reset(),e===!0&&(this._index=this.index),this.index=this._index,this.values={},this.choices.forEach(r=>r.reset&&r.reset()),this.render()}dispatch(e){return!!e&&this.append(e)}append(e){let r=this.focused;if(!r)return this.alert();let{cursor:o,input:a}=r;return r.value=r.input=a.slice(0,o)+e+a.slice(o),r.cursor++,this.render()}delete(){let e=this.focused;if(!e||e.cursor<=0)return this.alert();let{cursor:r,input:o}=e;return e.value=e.input=o.slice(0,r-1)+o.slice(r),e.cursor--,this.render()}deleteForward(){let e=this.focused;if(!e)return this.alert();let{cursor:r,input:o}=e;if(o[r]===void 0)return this.alert();let a=`${o}`.slice(0,r)+`${o}`.slice(r+1);return e.value=e.input=a,this.render()}right(){let e=this.focused;return e?e.cursor>=e.input.length?this.alert():(e.cursor++,this.render()):this.alert()}left(){let e=this.focused;return e?e.cursor<=0?this.alert():(e.cursor--,this.render()):this.alert()}space(e,r){return this.dispatch(e,r)}number(e,r){return this.dispatch(e,r)}next(){let e=this.focused;if(!e)return this.alert();let{initial:r,input:o}=e;return r&&r.startsWith(o)&&o!==r?(e.value=e.input=r,e.cursor=e.value.length,this.render()):super.next()}prev(){let e=this.focused;return e?e.cursor===0?super.prev():(e.value=e.input="",e.cursor=0,this.render()):this.alert()}separator(){return""}format(e){return this.state.submitted?"":super.format(e)}pointer(){return""}indicator(e){return e.input?"\u29BF":"\u2299"}async choiceSeparator(e,r){let o=await this.resolve(e.separator,this.state,e,r)||":";return o?" "+this.styles.disabled(o):""}async renderChoice(e,r){await this.onChoice(e,r);let{state:o,styles:a}=this,{cursor:n,initial:c="",name:f,hint:g,input:p=""}=e,{muted:E,submitted:B,primary:Q,danger:x}=a,C=g,N=this.index===r,U=e.validate||(()=>!0),H=await this.choiceSeparator(e,r),X=e.message;this.align==="right"&&(X=X.padStart(this.longest+1," ")),this.align==="left"&&(X=X.padEnd(this.longest+1," "));let ie=this.values[f]=p||c,fe=p?"success":"dark";await U.call(e,ie,this.state)!==!0&&(fe="danger");let ye=a[fe],Qe=ye(await this.indicator(e,r))+(e.pad||""),Pe=this.indent(e),pe=()=>[Pe,Qe,X+H,p,C].filter(Boolean).join(" ");if(o.submitted)return X=$ft.unstyle(X),p=B(p),C="",pe();if(e.format)p=await e.format.call(this,p,e,r);else{let Ee=this.styles.muted;p=tgt(this,{input:p,initial:c,pos:n,showCursor:N,color:Ee})}return this.isValue(p)||(p=this.styles.muted(this.symbols.ellipsis)),e.result&&(this.values[f]=await e.result.call(this,ie,e,r)),N&&(X=Q(X)),e.error?p+=(p?" ":"")+x(e.error.trim()):e.hint&&(p+=(p?" ":"")+E(e.hint.trim())),pe()}async submit(){return this.value=this.values,super.base.submit.call(this)}};Lhe.exports=bK});var FK=_((v8t,Uhe)=>{"use strict";var rgt=fP(),ngt=()=>{throw new Error("expected prompt to have a custom authenticate method")},Ohe=(t=ngt)=>{class e extends rgt{constructor(o){super(o)}async submit(){this.value=await t.call(this,this.values,this.state),super.base.submit.call(this)}static create(o){return Ohe(o)}}return e};Uhe.exports=Ohe()});var Hhe=_((D8t,_he)=>{"use strict";var igt=FK();function sgt(t,e){return t.username===this.options.username&&t.password===this.options.password}var Khe=(t=sgt)=>{let e=[{name:"username",message:"username"},{name:"password",message:"password",format(o){return this.options.showPassword?o:(this.state.submitted?this.styles.primary:this.styles.muted)(this.symbols.asterisk.repeat(o.length))}}];class r extends igt.create(t){constructor(a){super({...a,choices:e})}static create(a){return Khe(a)}}return r};_he.exports=Khe()});var gP=_((S8t,qhe)=>{"use strict";var ogt=vE(),{isPrimitive:agt,hasColor:Agt}=zo(),RK=class extends ogt{constructor(e){super(e),this.cursorHide()}async initialize(){let e=await this.resolve(this.initial,this.state);this.input=await this.cast(e),await super.initialize()}dispatch(e){return this.isValue(e)?(this.input=e,this.submit()):this.alert()}format(e){let{styles:r,state:o}=this;return o.submitted?r.success(e):r.primary(e)}cast(e){return this.isTrue(e)}isTrue(e){return/^[ty1]/i.test(e)}isFalse(e){return/^[fn0]/i.test(e)}isValue(e){return agt(e)&&(this.isTrue(e)||this.isFalse(e))}async hint(){if(this.state.status==="pending"){let e=await this.element("hint");return Agt(e)?e:this.styles.muted(e)}}async render(){let{input:e,size:r}=this.state,o=await this.prefix(),a=await this.separator(),n=await this.message(),c=this.styles.muted(this.default),f=[o,n,c,a].filter(Boolean).join(" ");this.state.prompt=f;let g=await this.header(),p=this.value=this.cast(e),E=await this.format(p),B=await this.error()||await this.hint(),Q=await this.footer();B&&!f.includes(B)&&(E+=" "+B),f+=" "+E,this.clear(r),this.write([g,f,Q].filter(Boolean).join(` -`)),this.restore()}set value(e){super.value=e}get value(){return this.cast(super.value)}};qhe.exports=RK});var jhe=_((k8t,Ghe)=>{"use strict";var lgt=gP(),TK=class extends lgt{constructor(e){super(e),this.default=this.options.default||(this.initial?"(Y/n)":"(y/N)")}};Ghe.exports=TK});var Whe=_((x8t,Yhe)=>{"use strict";var cgt=Xp(),ugt=fP(),DE=ugt.prototype,NK=class extends cgt{constructor(e){super({...e,multiple:!0}),this.align=[this.options.align,"left"].find(r=>r!=null),this.emptyError="",this.values={}}dispatch(e,r){let o=this.focused,a=o.parent||{};return!o.editable&&!a.editable&&(e==="a"||e==="i")?super[e]():DE.dispatch.call(this,e,r)}append(e,r){return DE.append.call(this,e,r)}delete(e,r){return DE.delete.call(this,e,r)}space(e){return this.focused.editable?this.append(e):super.space()}number(e){return this.focused.editable?this.append(e):super.number(e)}next(){return this.focused.editable?DE.next.call(this):super.next()}prev(){return this.focused.editable?DE.prev.call(this):super.prev()}async indicator(e,r){let o=e.indicator||"",a=e.editable?o:super.indicator(e,r);return await this.resolve(a,this.state,e,r)||""}indent(e){return e.role==="heading"?"":e.editable?" ":" "}async renderChoice(e,r){return e.indent="",e.editable?DE.renderChoice.call(this,e,r):super.renderChoice(e,r)}error(){return""}footer(){return this.state.error}async validate(){let e=!0;for(let r of this.choices){if(typeof r.validate!="function"||r.role==="heading")continue;let o=r.parent?this.value[r.parent.name]:this.value;if(r.editable?o=r.value===r.name?r.initial||"":r.value:this.isDisabled(r)||(o=r.enabled===!0),e=await r.validate(o,this.state),e!==!0)break}return e!==!0&&(this.state.error=typeof e=="string"?e:"Invalid Input"),e}submit(){if(this.focused.newChoice===!0)return super.submit();if(this.choices.some(e=>e.newChoice))return this.alert();this.value={};for(let e of this.choices){let r=e.parent?this.value[e.parent.name]:this.value;if(e.role==="heading"){this.value[e.name]={};continue}e.editable?r[e.name]=e.value===e.name?e.initial||"":e.value:this.isDisabled(e)||(r[e.name]=e.enabled===!0)}return this.base.submit.call(this)}};Yhe.exports=NK});var Im=_((P8t,Jhe)=>{"use strict";var fgt=vE(),ggt=PK(),{isPrimitive:pgt}=zo(),MK=class extends fgt{constructor(e){super(e),this.initial=pgt(this.initial)?String(this.initial):"",this.initial&&this.cursorHide(),this.state.prevCursor=0,this.state.clipboard=[]}async keypress(e,r={}){let o=this.state.prevKeypress;return this.state.prevKeypress=r,this.options.multiline===!0&&r.name==="return"&&(!o||o.name!=="return")?this.append(` -`,r):super.keypress(e,r)}moveCursor(e){this.cursor+=e}reset(){return this.input=this.value="",this.cursor=0,this.render()}dispatch(e,r){if(!e||r.ctrl||r.code)return this.alert();this.append(e)}append(e){let{cursor:r,input:o}=this.state;this.input=`${o}`.slice(0,r)+e+`${o}`.slice(r),this.moveCursor(String(e).length),this.render()}insert(e){this.append(e)}delete(){let{cursor:e,input:r}=this.state;if(e<=0)return this.alert();this.input=`${r}`.slice(0,e-1)+`${r}`.slice(e),this.moveCursor(-1),this.render()}deleteForward(){let{cursor:e,input:r}=this.state;if(r[e]===void 0)return this.alert();this.input=`${r}`.slice(0,e)+`${r}`.slice(e+1),this.render()}cutForward(){let e=this.cursor;if(this.input.length<=e)return this.alert();this.state.clipboard.push(this.input.slice(e)),this.input=this.input.slice(0,e),this.render()}cutLeft(){let e=this.cursor;if(e===0)return this.alert();let r=this.input.slice(0,e),o=this.input.slice(e),a=r.split(" ");this.state.clipboard.push(a.pop()),this.input=a.join(" "),this.cursor=this.input.length,this.input+=o,this.render()}paste(){if(!this.state.clipboard.length)return this.alert();this.insert(this.state.clipboard.pop()),this.render()}toggleCursor(){this.state.prevCursor?(this.cursor=this.state.prevCursor,this.state.prevCursor=0):(this.state.prevCursor=this.cursor,this.cursor=0),this.render()}first(){this.cursor=0,this.render()}last(){this.cursor=this.input.length-1,this.render()}next(){let e=this.initial!=null?String(this.initial):"";if(!e||!e.startsWith(this.input))return this.alert();this.input=this.initial,this.cursor=this.initial.length,this.render()}prev(){if(!this.input)return this.alert();this.reset()}backward(){return this.left()}forward(){return this.right()}right(){return this.cursor>=this.input.length?this.alert():(this.moveCursor(1),this.render())}left(){return this.cursor<=0?this.alert():(this.moveCursor(-1),this.render())}isValue(e){return!!e}async format(e=this.value){let r=await this.resolve(this.initial,this.state);return this.state.submitted?this.styles.submitted(e||r):ggt(this,{input:e,initial:r,pos:this.cursor})}async render(){let e=this.state.size,r=await this.prefix(),o=await this.separator(),a=await this.message(),n=[r,a,o].filter(Boolean).join(" ");this.state.prompt=n;let c=await this.header(),f=await this.format(),g=await this.error()||await this.hint(),p=await this.footer();g&&!f.includes(g)&&(f+=" "+g),n+=" "+f,this.clear(e),this.write([c,n,p].filter(Boolean).join(` -`)),this.restore()}};Jhe.exports=MK});var zhe=_((b8t,Vhe)=>{"use strict";var hgt=t=>t.filter((e,r)=>t.lastIndexOf(e)===r),pP=t=>hgt(t).filter(Boolean);Vhe.exports=(t,e={},r="")=>{let{past:o=[],present:a=""}=e,n,c;switch(t){case"prev":case"undo":return n=o.slice(0,o.length-1),c=o[o.length-1]||"",{past:pP([r,...n]),present:c};case"next":case"redo":return n=o.slice(1),c=o[0]||"",{past:pP([...n,r]),present:c};case"save":return{past:pP([...o,r]),present:""};case"remove":return c=pP(o.filter(f=>f!==r)),a="",c.length&&(a=c.pop()),{past:c,present:a};default:throw new Error(`Invalid action: "${t}"`)}}});var OK=_((F8t,Zhe)=>{"use strict";var dgt=Im(),Xhe=zhe(),LK=class extends dgt{constructor(e){super(e);let r=this.options.history;if(r&&r.store){let o=r.values||this.initial;this.autosave=!!r.autosave,this.store=r.store,this.data=this.store.get("values")||{past:[],present:o},this.initial=this.data.present||this.data.past[this.data.past.length-1]}}completion(e){return this.store?(this.data=Xhe(e,this.data,this.input),this.data.present?(this.input=this.data.present,this.cursor=this.input.length,this.render()):this.alert()):this.alert()}altUp(){return this.completion("prev")}altDown(){return this.completion("next")}prev(){return this.save(),super.prev()}save(){!this.store||(this.data=Xhe("save",this.data,this.input),this.store.set("values",this.data))}submit(){return this.store&&this.autosave===!0&&this.save(),super.submit()}};Zhe.exports=LK});var e0e=_((R8t,$he)=>{"use strict";var mgt=Im(),UK=class extends mgt{format(){return""}};$he.exports=UK});var r0e=_((T8t,t0e)=>{"use strict";var ygt=Im(),KK=class extends ygt{constructor(e={}){super(e),this.sep=this.options.separator||/, */,this.initial=e.initial||""}split(e=this.value){return e?String(e).split(this.sep):[]}format(){let e=this.state.submitted?this.styles.primary:r=>r;return this.list.map(e).join(", ")}async submit(e){let r=this.state.error||await this.validate(this.list,this.state);return r!==!0?(this.state.error=r,super.submit()):(this.value=this.list,super.submit())}get list(){return this.split()}};t0e.exports=KK});var i0e=_((N8t,n0e)=>{"use strict";var Cgt=Xp(),_K=class extends Cgt{constructor(e){super({...e,multiple:!0})}};n0e.exports=_K});var qK=_((M8t,s0e)=>{"use strict";var Egt=Im(),HK=class extends Egt{constructor(e={}){super({style:"number",...e}),this.min=this.isValue(e.min)?this.toNumber(e.min):-1/0,this.max=this.isValue(e.max)?this.toNumber(e.max):1/0,this.delay=e.delay!=null?e.delay:1e3,this.float=e.float!==!1,this.round=e.round===!0||e.float===!1,this.major=e.major||10,this.minor=e.minor||1,this.initial=e.initial!=null?e.initial:"",this.input=String(this.initial),this.cursor=this.input.length,this.cursorShow()}append(e){return!/[-+.]/.test(e)||e==="."&&this.input.includes(".")?this.alert("invalid number"):super.append(e)}number(e){return super.append(e)}next(){return this.input&&this.input!==this.initial?this.alert():this.isValue(this.initial)?(this.input=this.initial,this.cursor=String(this.initial).length,this.render()):this.alert()}up(e){let r=e||this.minor,o=this.toNumber(this.input);return o>this.max+r?this.alert():(this.input=`${o+r}`,this.render())}down(e){let r=e||this.minor,o=this.toNumber(this.input);return othis.isValue(r));return this.value=this.toNumber(e||0),super.submit()}};s0e.exports=HK});var a0e=_((L8t,o0e)=>{o0e.exports=qK()});var l0e=_((O8t,A0e)=>{"use strict";var Igt=Im(),GK=class extends Igt{constructor(e){super(e),this.cursorShow()}format(e=this.input){return this.keypressed?(this.state.submitted?this.styles.primary:this.styles.muted)(this.symbols.asterisk.repeat(e.length)):""}};A0e.exports=GK});var f0e=_((U8t,u0e)=>{"use strict";var wgt=mc(),Bgt=m1(),c0e=zo(),jK=class extends Bgt{constructor(e={}){super(e),this.widths=[].concat(e.messageWidth||50),this.align=[].concat(e.align||"left"),this.linebreak=e.linebreak||!1,this.edgeLength=e.edgeLength||3,this.newline=e.newline||` - `;let r=e.startNumber||1;typeof this.scale=="number"&&(this.scaleKey=!1,this.scale=Array(this.scale).fill(0).map((o,a)=>({name:a+r})))}async reset(){return this.tableized=!1,await super.reset(),this.render()}tableize(){if(this.tableized===!0)return;this.tableized=!0;let e=0;for(let r of this.choices){e=Math.max(e,r.message.length),r.scaleIndex=r.initial||2,r.scale=[];for(let o=0;o=this.scale.length-1?this.alert():(e.scaleIndex++,this.render())}left(){let e=this.focused;return e.scaleIndex<=0?this.alert():(e.scaleIndex--,this.render())}indent(){return""}format(){return this.state.submitted?this.choices.map(r=>this.styles.info(r.index)).join(", "):""}pointer(){return""}renderScaleKey(){if(this.scaleKey===!1||this.state.submitted)return"";let e=this.scale.map(o=>` ${o.name} - ${o.message}`);return["",...e].map(o=>this.styles.muted(o)).join(` -`)}renderScaleHeading(e){let r=this.scale.map(g=>g.name);typeof this.options.renderScaleHeading=="function"&&(r=this.options.renderScaleHeading.call(this,e));let o=this.scaleLength-r.join("").length,a=Math.round(o/(r.length-1)),c=r.map(g=>this.styles.strong(g)).join(" ".repeat(a)),f=" ".repeat(this.widths[0]);return this.margin[3]+f+this.margin[1]+c}scaleIndicator(e,r,o){if(typeof this.options.scaleIndicator=="function")return this.options.scaleIndicator.call(this,e,r,o);let a=e.scaleIndex===r.index;return r.disabled?this.styles.hint(this.symbols.radio.disabled):a?this.styles.success(this.symbols.radio.on):this.symbols.radio.off}renderScale(e,r){let o=e.scale.map(n=>this.scaleIndicator(e,n,r)),a=this.term==="Hyper"?"":" ";return o.join(a+this.symbols.line.repeat(this.edgeLength))}async renderChoice(e,r){await this.onChoice(e,r);let o=this.index===r,a=await this.pointer(e,r),n=await e.hint;n&&!c0e.hasColor(n)&&(n=this.styles.muted(n));let c=C=>this.margin[3]+C.replace(/\s+$/,"").padEnd(this.widths[0]," "),f=this.newline,g=this.indent(e),p=await this.resolve(e.message,this.state,e,r),E=await this.renderScale(e,r),B=this.margin[1]+this.margin[3];this.scaleLength=wgt.unstyle(E).length,this.widths[0]=Math.min(this.widths[0],this.width-this.scaleLength-B.length);let x=c0e.wordWrap(p,{width:this.widths[0],newline:f}).split(` -`).map(C=>c(C)+this.margin[1]);return o&&(E=this.styles.info(E),x=x.map(C=>this.styles.info(C))),x[0]+=E,this.linebreak&&x.push(""),[g+a,x.join(` -`)].filter(Boolean)}async renderChoices(){if(this.state.submitted)return"";this.tableize();let e=this.visible.map(async(a,n)=>await this.renderChoice(a,n)),r=await Promise.all(e),o=await this.renderScaleHeading();return this.margin[0]+[o,...r.map(a=>a.join(" "))].join(` -`)}async render(){let{submitted:e,size:r}=this.state,o=await this.prefix(),a=await this.separator(),n=await this.message(),c="";this.options.promptLine!==!1&&(c=[o,n,a,""].join(" "),this.state.prompt=c);let f=await this.header(),g=await this.format(),p=await this.renderScaleKey(),E=await this.error()||await this.hint(),B=await this.renderChoices(),Q=await this.footer(),x=this.emptyError;g&&(c+=g),E&&!c.includes(E)&&(c+=" "+E),e&&!g&&!B.trim()&&this.multiple&&x!=null&&(c+=this.styles.danger(x)),this.clear(r),this.write([f,c,p,B,Q].filter(Boolean).join(` -`)),this.state.submitted||this.write(this.margin[2]),this.restore()}submit(){this.value={};for(let e of this.choices)this.value[e.name]=e.scaleIndex;return this.base.submit.call(this)}};u0e.exports=jK});var h0e=_((K8t,p0e)=>{"use strict";var g0e=mc(),Qgt=(t="")=>typeof t=="string"?t.replace(/^['"]|['"]$/g,""):"",WK=class{constructor(e){this.name=e.key,this.field=e.field||{},this.value=Qgt(e.initial||this.field.initial||""),this.message=e.message||this.name,this.cursor=0,this.input="",this.lines=[]}},vgt=async(t={},e={},r=o=>o)=>{let o=new Set,a=t.fields||[],n=t.template,c=[],f=[],g=[],p=1;typeof n=="function"&&(n=await n());let E=-1,B=()=>n[++E],Q=()=>n[E+1],x=C=>{C.line=p,c.push(C)};for(x({type:"bos",value:""});Efe.name===H.key);H.field=a.find(fe=>fe.name===H.key),ie||(ie=new WK(H),f.push(ie)),ie.lines.push(H.line-1);continue}let N=c[c.length-1];N.type==="text"&&N.line===p?N.value+=C:x({type:"text",value:C})}return x({type:"eos",value:""}),{input:n,tabstops:c,unique:o,keys:g,items:f}};p0e.exports=async t=>{let e=t.options,r=new Set(e.required===!0?[]:e.required||[]),o={...e.values,...e.initial},{tabstops:a,items:n,keys:c}=await vgt(e,o),f=YK("result",t,e),g=YK("format",t,e),p=YK("validate",t,e,!0),E=t.isValue.bind(t);return async(B={},Q=!1)=>{let x=0;B.required=r,B.items=n,B.keys=c,B.output="";let C=async(X,ie,fe,ye)=>{let Qe=await p(X,ie,fe,ye);return Qe===!1?"Invalid field "+fe.name:Qe};for(let X of a){let ie=X.value,fe=X.key;if(X.type!=="template"){ie&&(B.output+=ie);continue}if(X.type==="template"){let ye=n.find(ke=>ke.name===fe);e.required===!0&&B.required.add(ye.name);let Qe=[ye.input,B.values[ye.value],ye.value,ie].find(E),pe=(ye.field||{}).message||X.inner;if(Q){let ke=await C(B.values[fe],B,ye,x);if(ke&&typeof ke=="string"||ke===!1){B.invalid.set(fe,ke);continue}B.invalid.delete(fe);let h=await f(B.values[fe],B,ye,x);B.output+=g0e.unstyle(h);continue}ye.placeholder=!1;let Ee=ie;ie=await g(ie,B,ye,x),Qe!==ie?(B.values[fe]=Qe,ie=t.styles.typing(Qe),B.missing.delete(pe)):(B.values[fe]=void 0,Qe=`<${pe}>`,ie=t.styles.primary(Qe),ye.placeholder=!0,B.required.has(fe)&&B.missing.add(pe)),B.missing.has(pe)&&B.validating&&(ie=t.styles.warning(Qe)),B.invalid.has(fe)&&B.validating&&(ie=t.styles.danger(Qe)),x===B.index&&(Ee!==ie?ie=t.styles.underline(ie):ie=t.styles.heading(g0e.unstyle(ie))),x++}ie&&(B.output+=ie)}let N=B.output.split(` -`).map(X=>" "+X),U=n.length,H=0;for(let X of n)B.invalid.has(X.name)&&X.lines.forEach(ie=>{N[ie][0]===" "&&(N[ie]=B.styles.danger(B.symbols.bullet)+N[ie].slice(1))}),t.isValue(B.values[X.name])&&H++;return B.completed=(H/U*100).toFixed(0),B.output=N.join(` -`),B.output}};function YK(t,e,r,o){return(a,n,c,f)=>typeof c.field[t]=="function"?c.field[t].call(e,a,n,c,f):[o,a].find(g=>e.isValue(g))}});var m0e=_((_8t,d0e)=>{"use strict";var Dgt=mc(),Sgt=h0e(),kgt=vE(),JK=class extends kgt{constructor(e){super(e),this.cursorHide(),this.reset(!0)}async initialize(){this.interpolate=await Sgt(this),await super.initialize()}async reset(e){this.state.keys=[],this.state.invalid=new Map,this.state.missing=new Set,this.state.completed=0,this.state.values={},e!==!0&&(await this.initialize(),await this.render())}moveCursor(e){let r=this.getItem();this.cursor+=e,r.cursor+=e}dispatch(e,r){if(!r.code&&!r.ctrl&&e!=null&&this.getItem()){this.append(e,r);return}this.alert()}append(e,r){let o=this.getItem(),a=o.input.slice(0,this.cursor),n=o.input.slice(this.cursor);this.input=o.input=`${a}${e}${n}`,this.moveCursor(1),this.render()}delete(){let e=this.getItem();if(this.cursor<=0||!e.input)return this.alert();let r=e.input.slice(this.cursor),o=e.input.slice(0,this.cursor-1);this.input=e.input=`${o}${r}`,this.moveCursor(-1),this.render()}increment(e){return e>=this.state.keys.length-1?0:e+1}decrement(e){return e<=0?this.state.keys.length-1:e-1}first(){this.state.index=0,this.render()}last(){this.state.index=this.state.keys.length-1,this.render()}right(){if(this.cursor>=this.input.length)return this.alert();this.moveCursor(1),this.render()}left(){if(this.cursor<=0)return this.alert();this.moveCursor(-1),this.render()}prev(){this.state.index=this.decrement(this.state.index),this.getItem(),this.render()}next(){this.state.index=this.increment(this.state.index),this.getItem(),this.render()}up(){this.prev()}down(){this.next()}format(e){let r=this.state.completed<100?this.styles.warning:this.styles.success;return this.state.submitted===!0&&this.state.completed!==100&&(r=this.styles.danger),r(`${this.state.completed}% completed`)}async render(){let{index:e,keys:r=[],submitted:o,size:a}=this.state,n=[this.options.newline,` -`].find(X=>X!=null),c=await this.prefix(),f=await this.separator(),g=await this.message(),p=[c,g,f].filter(Boolean).join(" ");this.state.prompt=p;let E=await this.header(),B=await this.error()||"",Q=await this.hint()||"",x=o?"":await this.interpolate(this.state),C=this.state.key=r[e]||"",N=await this.format(C),U=await this.footer();N&&(p+=" "+N),Q&&!N&&this.state.completed===0&&(p+=" "+Q),this.clear(a);let H=[E,p,x,U,B.trim()];this.write(H.filter(Boolean).join(n)),this.restore()}getItem(e){let{items:r,keys:o,index:a}=this.state,n=r.find(c=>c.name===o[a]);return n&&n.input!=null&&(this.input=n.input,this.cursor=n.cursor),n}async submit(){typeof this.interpolate!="function"&&await this.initialize(),await this.interpolate(this.state,!0);let{invalid:e,missing:r,output:o,values:a}=this.state;if(e.size){let f="";for(let[g,p]of e)f+=`Invalid ${g}: ${p} -`;return this.state.error=f,super.submit()}if(r.size)return this.state.error="Required: "+[...r.keys()].join(", "),super.submit();let c=Dgt.unstyle(o).split(` -`).map(f=>f.slice(1)).join(` -`);return this.value={values:a,result:c},super.submit()}};d0e.exports=JK});var C0e=_((H8t,y0e)=>{"use strict";var xgt="(Use + to sort)",Pgt=Xp(),VK=class extends Pgt{constructor(e){super({...e,reorder:!1,sort:!0,multiple:!0}),this.state.hint=[this.options.hint,xgt].find(this.isValue.bind(this))}indicator(){return""}async renderChoice(e,r){let o=await super.renderChoice(e,r),a=this.symbols.identicalTo+" ",n=this.index===r&&this.sorting?this.styles.muted(a):" ";return this.options.drag===!1&&(n=""),this.options.numbered===!0?n+`${r+1} - `+o:n+o}get selected(){return this.choices}submit(){return this.value=this.choices.map(e=>e.value),super.submit()}};y0e.exports=VK});var I0e=_((q8t,E0e)=>{"use strict";var bgt=m1(),zK=class extends bgt{constructor(e={}){if(super(e),this.emptyError=e.emptyError||"No items were selected",this.term=process.env.TERM_PROGRAM,!this.options.header){let r=["","4 - Strongly Agree","3 - Agree","2 - Neutral","1 - Disagree","0 - Strongly Disagree",""];r=r.map(o=>this.styles.muted(o)),this.state.header=r.join(` - `)}}async toChoices(...e){if(this.createdScales)return!1;this.createdScales=!0;let r=await super.toChoices(...e);for(let o of r)o.scale=Fgt(5,this.options),o.scaleIdx=2;return r}dispatch(){this.alert()}space(){let e=this.focused,r=e.scale[e.scaleIdx],o=r.selected;return e.scale.forEach(a=>a.selected=!1),r.selected=!o,this.render()}indicator(){return""}pointer(){return""}separator(){return this.styles.muted(this.symbols.ellipsis)}right(){let e=this.focused;return e.scaleIdx>=e.scale.length-1?this.alert():(e.scaleIdx++,this.render())}left(){let e=this.focused;return e.scaleIdx<=0?this.alert():(e.scaleIdx--,this.render())}indent(){return" "}async renderChoice(e,r){await this.onChoice(e,r);let o=this.index===r,a=this.term==="Hyper",n=a?9:8,c=a?"":" ",f=this.symbols.line.repeat(n),g=" ".repeat(n+(a?0:1)),p=ie=>(ie?this.styles.success("\u25C9"):"\u25EF")+c,E=r+1+".",B=o?this.styles.heading:this.styles.noop,Q=await this.resolve(e.message,this.state,e,r),x=this.indent(e),C=x+e.scale.map((ie,fe)=>p(fe===e.scaleIdx)).join(f),N=ie=>ie===e.scaleIdx?B(ie):ie,U=x+e.scale.map((ie,fe)=>N(fe)).join(g),H=()=>[E,Q].filter(Boolean).join(" "),X=()=>[H(),C,U," "].filter(Boolean).join(` -`);return o&&(C=this.styles.cyan(C),U=this.styles.cyan(U)),X()}async renderChoices(){if(this.state.submitted)return"";let e=this.visible.map(async(o,a)=>await this.renderChoice(o,a)),r=await Promise.all(e);return r.length||r.push(this.styles.danger("No matching choices")),r.join(` -`)}format(){return this.state.submitted?this.choices.map(r=>this.styles.info(r.scaleIdx)).join(", "):""}async render(){let{submitted:e,size:r}=this.state,o=await this.prefix(),a=await this.separator(),n=await this.message(),c=[o,n,a].filter(Boolean).join(" ");this.state.prompt=c;let f=await this.header(),g=await this.format(),p=await this.error()||await this.hint(),E=await this.renderChoices(),B=await this.footer();(g||!p)&&(c+=" "+g),p&&!c.includes(p)&&(c+=" "+p),e&&!g&&!E&&this.multiple&&this.type!=="form"&&(c+=this.styles.danger(this.emptyError)),this.clear(r),this.write([c,f,E,B].filter(Boolean).join(` -`)),this.restore()}submit(){this.value={};for(let e of this.choices)this.value[e.name]=e.scaleIdx;return this.base.submit.call(this)}};function Fgt(t,e={}){if(Array.isArray(e.scale))return e.scale.map(o=>({...o}));let r=[];for(let o=1;o{w0e.exports=OK()});var v0e=_((j8t,Q0e)=>{"use strict";var Rgt=gP(),XK=class extends Rgt{async initialize(){await super.initialize(),this.value=this.initial=!!this.options.initial,this.disabled=this.options.disabled||"no",this.enabled=this.options.enabled||"yes",await this.render()}reset(){this.value=this.initial,this.render()}delete(){this.alert()}toggle(){this.value=!this.value,this.render()}enable(){if(this.value===!0)return this.alert();this.value=!0,this.render()}disable(){if(this.value===!1)return this.alert();this.value=!1,this.render()}up(){this.toggle()}down(){this.toggle()}right(){this.toggle()}left(){this.toggle()}next(){this.toggle()}prev(){this.toggle()}dispatch(e="",r){switch(e.toLowerCase()){case" ":return this.toggle();case"1":case"y":case"t":return this.enable();case"0":case"n":case"f":return this.disable();default:return this.alert()}}format(){let e=o=>this.styles.primary.underline(o);return[this.value?this.disabled:e(this.disabled),this.value?e(this.enabled):this.enabled].join(this.styles.muted(" / "))}async render(){let{size:e}=this.state,r=await this.header(),o=await this.prefix(),a=await this.separator(),n=await this.message(),c=await this.format(),f=await this.error()||await this.hint(),g=await this.footer(),p=[o,n,a,c].join(" ");this.state.prompt=p,f&&!p.includes(f)&&(p+=" "+f),this.clear(e),this.write([r,p,g].filter(Boolean).join(` -`)),this.write(this.margin[2]),this.restore()}};Q0e.exports=XK});var S0e=_((Y8t,D0e)=>{"use strict";var Tgt=Xp(),ZK=class extends Tgt{constructor(e){if(super(e),typeof this.options.correctChoice!="number"||this.options.correctChoice<0)throw new Error("Please specify the index of the correct answer from the list of choices")}async toChoices(e,r){let o=await super.toChoices(e,r);if(o.length<2)throw new Error("Please give at least two choices to the user");if(this.options.correctChoice>o.length)throw new Error("Please specify the index of the correct answer from the list of choices");return o}check(e){return e.index===this.options.correctChoice}async result(e){return{selectedAnswer:e,correctAnswer:this.options.choices[this.options.correctChoice].value,correct:await this.check(this.state)}}};D0e.exports=ZK});var x0e=_($K=>{"use strict";var k0e=zo(),Ls=(t,e)=>{k0e.defineExport($K,t,e),k0e.defineExport($K,t.toLowerCase(),e)};Ls("AutoComplete",()=>Nhe());Ls("BasicAuth",()=>Hhe());Ls("Confirm",()=>jhe());Ls("Editable",()=>Whe());Ls("Form",()=>fP());Ls("Input",()=>OK());Ls("Invisible",()=>e0e());Ls("List",()=>r0e());Ls("MultiSelect",()=>i0e());Ls("Numeral",()=>a0e());Ls("Password",()=>l0e());Ls("Scale",()=>f0e());Ls("Select",()=>Xp());Ls("Snippet",()=>m0e());Ls("Sort",()=>C0e());Ls("Survey",()=>I0e());Ls("Text",()=>B0e());Ls("Toggle",()=>v0e());Ls("Quiz",()=>S0e())});var b0e=_((J8t,P0e)=>{P0e.exports={ArrayPrompt:m1(),AuthPrompt:FK(),BooleanPrompt:gP(),NumberPrompt:qK(),StringPrompt:Im()}});var C1=_((V8t,R0e)=>{"use strict";var F0e=Ie("assert"),t_=Ie("events"),Zp=zo(),Cc=class extends t_{constructor(e,r){super(),this.options=Zp.merge({},e),this.answers={...r}}register(e,r){if(Zp.isObject(e)){for(let a of Object.keys(e))this.register(a,e[a]);return this}F0e.equal(typeof r,"function","expected a function");let o=e.toLowerCase();return r.prototype instanceof this.Prompt?this.prompts[o]=r:this.prompts[o]=r(this.Prompt,this),this}async prompt(e=[]){for(let r of[].concat(e))try{typeof r=="function"&&(r=await r.call(this)),await this.ask(Zp.merge({},this.options,r))}catch(o){return Promise.reject(o)}return this.answers}async ask(e){typeof e=="function"&&(e=await e.call(this));let r=Zp.merge({},this.options,e),{type:o,name:a}=e,{set:n,get:c}=Zp;if(typeof o=="function"&&(o=await o.call(this,e,this.answers)),!o)return this.answers[a];F0e(this.prompts[o],`Prompt "${o}" is not registered`);let f=new this.prompts[o](r),g=c(this.answers,a);f.state.answers=this.answers,f.enquirer=this,a&&f.on("submit",E=>{this.emit("answer",a,E,f),n(this.answers,a,E)});let p=f.emit.bind(f);return f.emit=(...E)=>(this.emit.call(this,...E),p(...E)),this.emit("prompt",f,this),r.autofill&&g!=null?(f.value=f.input=g,r.autofill==="show"&&await f.submit()):g=f.value=await f.run(),g}use(e){return e.call(this,this),this}set Prompt(e){this._Prompt=e}get Prompt(){return this._Prompt||this.constructor.Prompt}get prompts(){return this.constructor.prompts}static set Prompt(e){this._Prompt=e}static get Prompt(){return this._Prompt||vE()}static get prompts(){return x0e()}static get types(){return b0e()}static get prompt(){let e=(r,...o)=>{let a=new this(...o),n=a.emit.bind(a);return a.emit=(...c)=>(e.emit(...c),n(...c)),a.prompt(r)};return Zp.mixinEmitter(e,new t_),e}};Zp.mixinEmitter(Cc,new t_);var e_=Cc.prompts;for(let t of Object.keys(e_)){let e=t.toLowerCase(),r=o=>new e_[t](o).run();Cc.prompt[e]=r,Cc[e]=r,Cc[t]||Reflect.defineProperty(Cc,t,{get:()=>e_[t]})}var y1=t=>{Zp.defineExport(Cc,t,()=>Cc.types[t])};y1("ArrayPrompt");y1("AuthPrompt");y1("BooleanPrompt");y1("NumberPrompt");y1("StringPrompt");R0e.exports=Cc});var Q1=_((kKt,_0e)=>{var Kgt=tP();function _gt(t,e,r){var o=t==null?void 0:Kgt(t,e);return o===void 0?r:o}_0e.exports=_gt});var G0e=_((RKt,q0e)=>{function Hgt(t,e){for(var r=-1,o=t==null?0:t.length;++r{var qgt=_d(),Ggt=oS();function jgt(t,e){return t&&qgt(e,Ggt(e),t)}j0e.exports=jgt});var J0e=_((NKt,W0e)=>{var Ygt=_d(),Wgt=uC();function Jgt(t,e){return t&&Ygt(e,Wgt(e),t)}W0e.exports=Jgt});var z0e=_((MKt,V0e)=>{var Vgt=_d(),zgt=eS();function Xgt(t,e){return Vgt(t,zgt(t),e)}V0e.exports=Xgt});var a_=_((LKt,X0e)=>{var Zgt=$D(),$gt=cS(),ept=eS(),tpt=QM(),rpt=Object.getOwnPropertySymbols,npt=rpt?function(t){for(var e=[];t;)Zgt(e,ept(t)),t=$gt(t);return e}:tpt;X0e.exports=npt});var $0e=_((OKt,Z0e)=>{var ipt=_d(),spt=a_();function opt(t,e){return ipt(t,spt(t),e)}Z0e.exports=opt});var A_=_((UKt,ede)=>{var apt=BM(),Apt=a_(),lpt=uC();function cpt(t){return apt(t,lpt,Apt)}ede.exports=cpt});var rde=_((KKt,tde)=>{var upt=Object.prototype,fpt=upt.hasOwnProperty;function gpt(t){var e=t.length,r=new t.constructor(e);return e&&typeof t[0]=="string"&&fpt.call(t,"index")&&(r.index=t.index,r.input=t.input),r}tde.exports=gpt});var ide=_((_Kt,nde)=>{var ppt=lS();function hpt(t,e){var r=e?ppt(t.buffer):t.buffer;return new t.constructor(r,t.byteOffset,t.byteLength)}nde.exports=hpt});var ode=_((HKt,sde)=>{var dpt=/\w*$/;function mpt(t){var e=new t.constructor(t.source,dpt.exec(t));return e.lastIndex=t.lastIndex,e}sde.exports=mpt});var ude=_((qKt,cde)=>{var ade=Od(),Ade=ade?ade.prototype:void 0,lde=Ade?Ade.valueOf:void 0;function ypt(t){return lde?Object(lde.call(t)):{}}cde.exports=ypt});var gde=_((GKt,fde)=>{var Cpt=lS(),Ept=ide(),Ipt=ode(),wpt=ude(),Bpt=OM(),Qpt="[object Boolean]",vpt="[object Date]",Dpt="[object Map]",Spt="[object Number]",kpt="[object RegExp]",xpt="[object Set]",Ppt="[object String]",bpt="[object Symbol]",Fpt="[object ArrayBuffer]",Rpt="[object DataView]",Tpt="[object Float32Array]",Npt="[object Float64Array]",Mpt="[object Int8Array]",Lpt="[object Int16Array]",Opt="[object Int32Array]",Upt="[object Uint8Array]",Kpt="[object Uint8ClampedArray]",_pt="[object Uint16Array]",Hpt="[object Uint32Array]";function qpt(t,e,r){var o=t.constructor;switch(e){case Fpt:return Cpt(t);case Qpt:case vpt:return new o(+t);case Rpt:return Ept(t,r);case Tpt:case Npt:case Mpt:case Lpt:case Opt:case Upt:case Kpt:case _pt:case Hpt:return Bpt(t,r);case Dpt:return new o;case Spt:case Ppt:return new o(t);case kpt:return Ipt(t);case xpt:return new o;case bpt:return wpt(t)}}fde.exports=qpt});var hde=_((jKt,pde)=>{var Gpt=tB(),jpt=mu(),Ypt="[object Map]";function Wpt(t){return jpt(t)&&Gpt(t)==Ypt}pde.exports=Wpt});var Cde=_((YKt,yde)=>{var Jpt=hde(),Vpt=rS(),dde=nS(),mde=dde&&dde.isMap,zpt=mde?Vpt(mde):Jpt;yde.exports=zpt});var Ide=_((WKt,Ede)=>{var Xpt=tB(),Zpt=mu(),$pt="[object Set]";function eht(t){return Zpt(t)&&Xpt(t)==$pt}Ede.exports=eht});var vde=_((JKt,Qde)=>{var tht=Ide(),rht=rS(),wde=nS(),Bde=wde&&wde.isSet,nht=Bde?rht(Bde):tht;Qde.exports=nht});var l_=_((VKt,xde)=>{var iht=XD(),sht=G0e(),oht=uS(),aht=Y0e(),Aht=J0e(),lht=LM(),cht=UM(),uht=z0e(),fht=$0e(),ght=kM(),pht=A_(),hht=tB(),dht=rde(),mht=gde(),yht=KM(),Cht=lc(),Eht=zw(),Iht=Cde(),wht=SA(),Bht=vde(),Qht=oS(),vht=uC(),Dht=1,Sht=2,kht=4,Dde="[object Arguments]",xht="[object Array]",Pht="[object Boolean]",bht="[object Date]",Fht="[object Error]",Sde="[object Function]",Rht="[object GeneratorFunction]",Tht="[object Map]",Nht="[object Number]",kde="[object Object]",Mht="[object RegExp]",Lht="[object Set]",Oht="[object String]",Uht="[object Symbol]",Kht="[object WeakMap]",_ht="[object ArrayBuffer]",Hht="[object DataView]",qht="[object Float32Array]",Ght="[object Float64Array]",jht="[object Int8Array]",Yht="[object Int16Array]",Wht="[object Int32Array]",Jht="[object Uint8Array]",Vht="[object Uint8ClampedArray]",zht="[object Uint16Array]",Xht="[object Uint32Array]",hi={};hi[Dde]=hi[xht]=hi[_ht]=hi[Hht]=hi[Pht]=hi[bht]=hi[qht]=hi[Ght]=hi[jht]=hi[Yht]=hi[Wht]=hi[Tht]=hi[Nht]=hi[kde]=hi[Mht]=hi[Lht]=hi[Oht]=hi[Uht]=hi[Jht]=hi[Vht]=hi[zht]=hi[Xht]=!0;hi[Fht]=hi[Sde]=hi[Kht]=!1;function dP(t,e,r,o,a,n){var c,f=e&Dht,g=e&Sht,p=e&kht;if(r&&(c=a?r(t,o,a,n):r(t)),c!==void 0)return c;if(!wht(t))return t;var E=Cht(t);if(E){if(c=dht(t),!f)return cht(t,c)}else{var B=hht(t),Q=B==Sde||B==Rht;if(Eht(t))return lht(t,f);if(B==kde||B==Dde||Q&&!a){if(c=g||Q?{}:yht(t),!f)return g?fht(t,Aht(c,t)):uht(t,aht(c,t))}else{if(!hi[B])return a?t:{};c=mht(t,B,f)}}n||(n=new iht);var x=n.get(t);if(x)return x;n.set(t,c),Bht(t)?t.forEach(function(U){c.add(dP(U,e,r,U,t,n))}):Iht(t)&&t.forEach(function(U,H){c.set(H,dP(U,e,r,H,t,n))});var C=p?g?pht:ght:g?vht:Qht,N=E?void 0:C(t);return sht(N||t,function(U,H){N&&(H=U,U=t[H]),oht(c,H,dP(U,e,r,H,t,n))}),c}xde.exports=dP});var c_=_((zKt,Pde)=>{var Zht=l_(),$ht=1,e0t=4;function t0t(t){return Zht(t,$ht|e0t)}Pde.exports=t0t});var u_=_((XKt,bde)=>{var r0t=eK();function n0t(t,e,r){return t==null?t:r0t(t,e,r)}bde.exports=n0t});var Mde=_((r_t,Nde)=>{var i0t=Object.prototype,s0t=i0t.hasOwnProperty;function o0t(t,e){return t!=null&&s0t.call(t,e)}Nde.exports=o0t});var Ode=_((n_t,Lde)=>{var a0t=Mde(),A0t=tK();function l0t(t,e){return t!=null&&A0t(t,e,a0t)}Lde.exports=l0t});var Kde=_((i_t,Ude)=>{function c0t(t){var e=t==null?0:t.length;return e?t[e-1]:void 0}Ude.exports=c0t});var Hde=_((s_t,_de)=>{var u0t=tP(),f0t=XU();function g0t(t,e){return e.length<2?t:u0t(t,f0t(e,0,-1))}_de.exports=g0t});var g_=_((o_t,qde)=>{var p0t=ym(),h0t=Kde(),d0t=Hde(),m0t=f1();function y0t(t,e){return e=p0t(e,t),t=d0t(t,e),t==null||delete t[m0t(h0t(e))]}qde.exports=y0t});var p_=_((a_t,Gde)=>{var C0t=g_();function E0t(t,e){return t==null?!0:C0t(t,e)}Gde.exports=E0t});var Vde=_((R_t,B0t)=>{B0t.exports={name:"@yarnpkg/cli",version:"4.0.0-rc.22",stableVersion:"3.2.4",license:"BSD-2-Clause",main:"./sources/index.ts",exports:{".":"./sources/index.ts","./polyfills":"./sources/polyfills.ts","./package.json":"./package.json"},dependencies:{"@yarnpkg/core":"workspace:^","@yarnpkg/fslib":"workspace:^","@yarnpkg/libzip":"workspace:^","@yarnpkg/parsers":"workspace:^","@yarnpkg/plugin-compat":"workspace:^","@yarnpkg/plugin-constraints":"workspace:^","@yarnpkg/plugin-dlx":"workspace:^","@yarnpkg/plugin-essentials":"workspace:^","@yarnpkg/plugin-exec":"workspace:^","@yarnpkg/plugin-file":"workspace:^","@yarnpkg/plugin-git":"workspace:^","@yarnpkg/plugin-github":"workspace:^","@yarnpkg/plugin-http":"workspace:^","@yarnpkg/plugin-init":"workspace:^","@yarnpkg/plugin-interactive-tools":"workspace:^","@yarnpkg/plugin-link":"workspace:^","@yarnpkg/plugin-nm":"workspace:^","@yarnpkg/plugin-npm":"workspace:^","@yarnpkg/plugin-npm-cli":"workspace:^","@yarnpkg/plugin-pack":"workspace:^","@yarnpkg/plugin-patch":"workspace:^","@yarnpkg/plugin-pnp":"workspace:^","@yarnpkg/plugin-pnpm":"workspace:^","@yarnpkg/plugin-stage":"workspace:^","@yarnpkg/plugin-typescript":"workspace:^","@yarnpkg/plugin-version":"workspace:^","@yarnpkg/plugin-workspace-tools":"workspace:^","@yarnpkg/shell":"workspace:^","ci-info":"^3.2.0",clipanion:"^3.2.0-rc.10",semver:"^7.1.2",tslib:"^2.4.0",typanion:"^3.3.0"},devDependencies:{"@types/semver":"^7.1.0","@yarnpkg/builder":"workspace:^","@yarnpkg/monorepo":"workspace:^","@yarnpkg/pnpify":"workspace:^",micromatch:"^4.0.2"},peerDependencies:{"@yarnpkg/core":"workspace:^"},scripts:{postpack:"rm -rf lib",prepack:'run build:compile "$(pwd)"',"build:cli+hook":"run build:pnp:hook && builder build bundle","build:cli":"builder build bundle","run:cli":"builder run","update-local":"run build:cli --no-git-hash && rsync -a --delete bundles/ bin/"},publishConfig:{main:"./lib/index.js",bin:null,exports:{".":"./lib/index.js","./package.json":"./package.json"}},files:["/lib/**/*","!/lib/pluginConfiguration.*","!/lib/cli.*"],"@yarnpkg/builder":{bundles:{standard:["@yarnpkg/plugin-essentials","@yarnpkg/plugin-compat","@yarnpkg/plugin-constraints","@yarnpkg/plugin-dlx","@yarnpkg/plugin-exec","@yarnpkg/plugin-file","@yarnpkg/plugin-git","@yarnpkg/plugin-github","@yarnpkg/plugin-http","@yarnpkg/plugin-init","@yarnpkg/plugin-interactive-tools","@yarnpkg/plugin-link","@yarnpkg/plugin-nm","@yarnpkg/plugin-npm","@yarnpkg/plugin-npm-cli","@yarnpkg/plugin-pack","@yarnpkg/plugin-patch","@yarnpkg/plugin-pnp","@yarnpkg/plugin-pnpm","@yarnpkg/plugin-stage","@yarnpkg/plugin-typescript","@yarnpkg/plugin-version","@yarnpkg/plugin-workspace-tools"]}},repository:{type:"git",url:"ssh://git@github.com/yarnpkg/berry.git",directory:"packages/yarnpkg-cli"},engines:{node:">=14.15.0"}}});var v_=_((Nqt,fme)=>{"use strict";fme.exports=function(e,r){r===!0&&(r=0);var o=e.indexOf("://"),a=e.substring(0,o).split("+").filter(Boolean);return typeof r=="number"?a[r]:a}});var D_=_((Mqt,pme)=>{"use strict";var H0t=v_();function gme(t){if(Array.isArray(t))return t.indexOf("ssh")!==-1||t.indexOf("rsync")!==-1;if(typeof t!="string")return!1;var e=H0t(t);return t=t.substring(t.indexOf("://")+3),gme(e)?!0:t.indexOf("@"){"use strict";var q0t=v_(),G0t=D_(),j0t=Ie("querystring");function Y0t(t){t=(t||"").trim();var e={protocols:q0t(t),protocol:null,port:null,resource:"",user:"",pathname:"",hash:"",search:"",href:t,query:Object.create(null)},r=t.indexOf("://"),o=-1,a=null,n=null;t.startsWith(".")&&(t.startsWith("./")&&(t=t.substring(2)),e.pathname=t,e.protocol="file");var c=t.charAt(1);return e.protocol||(e.protocol=e.protocols[0],e.protocol||(G0t(t)?e.protocol="ssh":((c==="/"||c==="~")&&(t=t.substring(2)),e.protocol="file"))),r!==-1&&(t=t.substring(r+3)),n=t.split("/"),e.protocol!=="file"?e.resource=n.shift():e.resource="",a=e.resource.split("@"),a.length===2&&(e.user=a[0],e.resource=a[1]),a=e.resource.split(":"),a.length===2&&(e.resource=a[0],a[1]?(e.port=Number(a[1]),isNaN(e.port)&&(e.port=null,n.unshift(a[1]))):e.port=null),n=n.filter(Boolean),e.protocol==="file"?e.pathname=e.href:e.pathname=e.pathname||(e.protocol!=="file"||e.href[0]==="/"?"/":"")+n.join("/"),a=e.pathname.split("#"),a.length===2&&(e.pathname=a[0],e.hash=a[1]),a=e.pathname.split("?"),a.length===2&&(e.pathname=a[0],e.search=a[1]),e.query=j0t.parse(e.search),e.href=e.href.replace(/\/$/,""),e.pathname=e.pathname.replace(/\/$/,""),e}hme.exports=Y0t});var Cme=_((Oqt,yme)=>{"use strict";var W0t="text/plain",J0t="us-ascii",mme=(t,e)=>e.some(r=>r instanceof RegExp?r.test(t):r===t),V0t=(t,{stripHash:e})=>{let r=/^data:(?[^,]*?),(?[^#]*?)(?:#(?.*))?$/.exec(t);if(!r)throw new Error(`Invalid URL: ${t}`);let{type:o,data:a,hash:n}=r.groups,c=o.split(";");n=e?"":n;let f=!1;c[c.length-1]==="base64"&&(c.pop(),f=!0);let g=(c.shift()||"").toLowerCase(),E=[...c.map(B=>{let[Q,x=""]=B.split("=").map(C=>C.trim());return Q==="charset"&&(x=x.toLowerCase(),x===J0t)?"":`${Q}${x?`=${x}`:""}`}).filter(Boolean)];return f&&E.push("base64"),(E.length!==0||g&&g!==W0t)&&E.unshift(g),`data:${E.join(";")},${f?a.trim():a}${n?`#${n}`:""}`},z0t=(t,e)=>{if(e={defaultProtocol:"http:",normalizeProtocol:!0,forceHttp:!1,forceHttps:!1,stripAuthentication:!0,stripHash:!1,stripTextFragment:!0,stripWWW:!0,removeQueryParameters:[/^utm_\w+/i],removeTrailingSlash:!0,removeSingleSlash:!0,removeDirectoryIndex:!1,sortQueryParameters:!0,...e},t=t.trim(),/^data:/i.test(t))return V0t(t,e);if(/^view-source:/i.test(t))throw new Error("`view-source:` is not supported as it is a non-standard protocol");let r=t.startsWith("//");!r&&/^\.*\//.test(t)||(t=t.replace(/^(?!(?:\w+:)?\/\/)|^\/\//,e.defaultProtocol));let a=new URL(t);if(e.forceHttp&&e.forceHttps)throw new Error("The `forceHttp` and `forceHttps` options cannot be used together");if(e.forceHttp&&a.protocol==="https:"&&(a.protocol="http:"),e.forceHttps&&a.protocol==="http:"&&(a.protocol="https:"),e.stripAuthentication&&(a.username="",a.password=""),e.stripHash?a.hash="":e.stripTextFragment&&(a.hash=a.hash.replace(/#?:~:text.*?$/i,"")),a.pathname&&(a.pathname=a.pathname.replace(/(?0){let c=a.pathname.split("/"),f=c[c.length-1];mme(f,e.removeDirectoryIndex)&&(c=c.slice(0,c.length-1),a.pathname=c.slice(1).join("/")+"/")}if(a.hostname&&(a.hostname=a.hostname.replace(/\.$/,""),e.stripWWW&&/^www\.(?!www\.)(?:[a-z\-\d]{1,63})\.(?:[a-z.\-\d]{2,63})$/.test(a.hostname)&&(a.hostname=a.hostname.replace(/^www\./,""))),Array.isArray(e.removeQueryParameters))for(let c of[...a.searchParams.keys()])mme(c,e.removeQueryParameters)&&a.searchParams.delete(c);e.removeQueryParameters===!0&&(a.search=""),e.sortQueryParameters&&a.searchParams.sort(),e.removeTrailingSlash&&(a.pathname=a.pathname.replace(/\/$/,""));let n=t;return t=a.toString(),!e.removeSingleSlash&&a.pathname==="/"&&!n.endsWith("/")&&a.hash===""&&(t=t.replace(/\/$/,"")),(e.removeTrailingSlash||a.pathname==="/")&&a.hash===""&&e.removeSingleSlash&&(t=t.replace(/\/$/,"")),r&&!e.normalizeProtocol&&(t=t.replace(/^http:\/\//,"//")),e.stripProtocol&&(t=t.replace(/^(?:https?:)?\/\//,"")),t};yme.exports=z0t});var Ime=_((Uqt,Eme)=>{"use strict";var X0t=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Z0t=dme(),$0t=Cme();function edt(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;if(typeof t!="string"||!t.trim())throw new Error("Invalid url.");e&&((typeof e>"u"?"undefined":X0t(e))!=="object"&&(e={stripHash:!1}),t=$0t(t,e));var r=Z0t(t);return r}Eme.exports=edt});var Qme=_((Kqt,Bme)=>{"use strict";var tdt=Ime(),wme=D_();function rdt(t){var e=tdt(t);e.token="";var r=e.user.split(":");return r.length===2&&(r[1]==="x-oauth-basic"?e.token=r[0]:r[0]==="x-token-auth"&&(e.token=r[1])),wme(e.protocols)||wme(t)?e.protocol="ssh":e.protocols.length?e.protocol=e.protocols[0]:e.protocol="file",e.href=e.href.replace(/\/$/,""),e}Bme.exports=rdt});var Dme=_((_qt,vme)=>{"use strict";var ndt=Qme();function S_(t){if(typeof t!="string")throw new Error("The url must be a string.");var e=ndt(t),r=e.resource.split("."),o=null;switch(e.toString=function(g){return S_.stringify(this,g)},e.source=r.length>2?r.slice(1-r.length).join("."):e.source=e.resource,e.git_suffix=/\.git$/.test(e.pathname),e.name=decodeURIComponent(e.pathname.replace(/^\//,"").replace(/\.git$/,"")),e.owner=decodeURIComponent(e.user),e.source){case"git.cloudforge.com":e.owner=e.user,e.organization=r[0],e.source="cloudforge.com";break;case"visualstudio.com":if(e.resource==="vs-ssh.visualstudio.com"){o=e.name.split("/"),o.length===4&&(e.organization=o[1],e.owner=o[2],e.name=o[3],e.full_name=o[2]+"/"+o[3]);break}else{o=e.name.split("/"),o.length===2?(e.owner=o[1],e.name=o[1],e.full_name="_git/"+e.name):o.length===3?(e.name=o[2],o[0]==="DefaultCollection"?(e.owner=o[2],e.organization=o[0],e.full_name=e.organization+"/_git/"+e.name):(e.owner=o[0],e.full_name=e.owner+"/_git/"+e.name)):o.length===4&&(e.organization=o[0],e.owner=o[1],e.name=o[3],e.full_name=e.organization+"/"+e.owner+"/_git/"+e.name);break}case"dev.azure.com":case"azure.com":if(e.resource==="ssh.dev.azure.com"){o=e.name.split("/"),o.length===4&&(e.organization=o[1],e.owner=o[2],e.name=o[3]);break}else{o=e.name.split("/"),o.length===5?(e.organization=o[0],e.owner=o[1],e.name=o[4],e.full_name="_git/"+e.name):o.length===3?(e.name=o[2],o[0]==="DefaultCollection"?(e.owner=o[2],e.organization=o[0],e.full_name=e.organization+"/_git/"+e.name):(e.owner=o[0],e.full_name=e.owner+"/_git/"+e.name)):o.length===4&&(e.organization=o[0],e.owner=o[1],e.name=o[3],e.full_name=e.organization+"/"+e.owner+"/_git/"+e.name);break}default:o=e.name.split("/");var a=o.length-1;if(o.length>=2){var n=o.indexOf("blob",2),c=o.indexOf("tree",2),f=o.indexOf("commit",2);a=n>0?n-1:c>0?c-1:f>0?f-1:a,e.owner=o.slice(0,a).join("/"),e.name=o[a],f&&(e.commit=o[a+2])}e.ref="",e.filepathtype="",e.filepath="",o.length>a+2&&["blob","tree"].indexOf(o[a+1])>=0&&(e.filepathtype=o[a+1],e.ref=o[a+2],o.length>a+3&&(e.filepath=o.slice(a+3).join("/"))),e.organization=e.owner;break}return e.full_name||(e.full_name=e.owner,e.name&&(e.full_name&&(e.full_name+="/"),e.full_name+=e.name)),e}S_.stringify=function(t,e){e=e||(t.protocols&&t.protocols.length?t.protocols.join("+"):t.protocol);var r=t.port?":"+t.port:"",o=t.user||"git",a=t.git_suffix?".git":"";switch(e){case"ssh":return r?"ssh://"+o+"@"+t.resource+r+"/"+t.full_name+a:o+"@"+t.resource+":"+t.full_name+a;case"git+ssh":case"ssh+git":case"ftp":case"ftps":return e+"://"+o+"@"+t.resource+r+"/"+t.full_name+a;case"http":case"https":var n=t.token?idt(t):t.user&&(t.protocols.includes("http")||t.protocols.includes("https"))?t.user+"@":"";return e+"://"+n+t.resource+r+"/"+t.full_name+a;default:return t.href}};function idt(t){switch(t.source){case"bitbucket.org":return"x-token-auth:"+t.token+"@";default:return t.token+"@"}}vme.exports=S_});var Kme=_((pjt,__)=>{var gdt;(function(t){var e=function(){return{"append/2":[new t.type.Rule(new t.type.Term("append",[new t.type.Var("X"),new t.type.Var("L")]),new t.type.Term("foldl",[new t.type.Term("append",[]),new t.type.Var("X"),new t.type.Term("[]",[]),new t.type.Var("L")]))],"append/3":[new t.type.Rule(new t.type.Term("append",[new t.type.Term("[]",[]),new t.type.Var("X"),new t.type.Var("X")]),null),new t.type.Rule(new t.type.Term("append",[new t.type.Term(".",[new t.type.Var("H"),new t.type.Var("T")]),new t.type.Var("X"),new t.type.Term(".",[new t.type.Var("H"),new t.type.Var("S")])]),new t.type.Term("append",[new t.type.Var("T"),new t.type.Var("X"),new t.type.Var("S")]))],"member/2":[new t.type.Rule(new t.type.Term("member",[new t.type.Var("X"),new t.type.Term(".",[new t.type.Var("X"),new t.type.Var("_")])]),null),new t.type.Rule(new t.type.Term("member",[new t.type.Var("X"),new t.type.Term(".",[new t.type.Var("_"),new t.type.Var("Xs")])]),new t.type.Term("member",[new t.type.Var("X"),new t.type.Var("Xs")]))],"permutation/2":[new t.type.Rule(new t.type.Term("permutation",[new t.type.Term("[]",[]),new t.type.Term("[]",[])]),null),new t.type.Rule(new t.type.Term("permutation",[new t.type.Term(".",[new t.type.Var("H"),new t.type.Var("T")]),new t.type.Var("S")]),new t.type.Term(",",[new t.type.Term("permutation",[new t.type.Var("T"),new t.type.Var("P")]),new t.type.Term(",",[new t.type.Term("append",[new t.type.Var("X"),new t.type.Var("Y"),new t.type.Var("P")]),new t.type.Term("append",[new t.type.Var("X"),new t.type.Term(".",[new t.type.Var("H"),new t.type.Var("Y")]),new t.type.Var("S")])])]))],"maplist/2":[new t.type.Rule(new t.type.Term("maplist",[new t.type.Var("_"),new t.type.Term("[]",[])]),null),new t.type.Rule(new t.type.Term("maplist",[new t.type.Var("P"),new t.type.Term(".",[new t.type.Var("X"),new t.type.Var("Xs")])]),new t.type.Term(",",[new t.type.Term("call",[new t.type.Var("P"),new t.type.Var("X")]),new t.type.Term("maplist",[new t.type.Var("P"),new t.type.Var("Xs")])]))],"maplist/3":[new t.type.Rule(new t.type.Term("maplist",[new t.type.Var("_"),new t.type.Term("[]",[]),new t.type.Term("[]",[])]),null),new t.type.Rule(new t.type.Term("maplist",[new t.type.Var("P"),new t.type.Term(".",[new t.type.Var("A"),new t.type.Var("As")]),new t.type.Term(".",[new t.type.Var("B"),new t.type.Var("Bs")])]),new t.type.Term(",",[new t.type.Term("call",[new t.type.Var("P"),new t.type.Var("A"),new t.type.Var("B")]),new t.type.Term("maplist",[new t.type.Var("P"),new t.type.Var("As"),new t.type.Var("Bs")])]))],"maplist/4":[new t.type.Rule(new t.type.Term("maplist",[new t.type.Var("_"),new t.type.Term("[]",[]),new t.type.Term("[]",[]),new t.type.Term("[]",[])]),null),new t.type.Rule(new t.type.Term("maplist",[new t.type.Var("P"),new t.type.Term(".",[new t.type.Var("A"),new t.type.Var("As")]),new t.type.Term(".",[new t.type.Var("B"),new t.type.Var("Bs")]),new t.type.Term(".",[new t.type.Var("C"),new t.type.Var("Cs")])]),new t.type.Term(",",[new t.type.Term("call",[new t.type.Var("P"),new t.type.Var("A"),new t.type.Var("B"),new t.type.Var("C")]),new t.type.Term("maplist",[new t.type.Var("P"),new t.type.Var("As"),new t.type.Var("Bs"),new t.type.Var("Cs")])]))],"maplist/5":[new t.type.Rule(new t.type.Term("maplist",[new t.type.Var("_"),new t.type.Term("[]",[]),new t.type.Term("[]",[]),new t.type.Term("[]",[]),new t.type.Term("[]",[])]),null),new t.type.Rule(new t.type.Term("maplist",[new t.type.Var("P"),new t.type.Term(".",[new t.type.Var("A"),new t.type.Var("As")]),new t.type.Term(".",[new t.type.Var("B"),new t.type.Var("Bs")]),new t.type.Term(".",[new t.type.Var("C"),new t.type.Var("Cs")]),new t.type.Term(".",[new t.type.Var("D"),new t.type.Var("Ds")])]),new t.type.Term(",",[new t.type.Term("call",[new t.type.Var("P"),new t.type.Var("A"),new t.type.Var("B"),new t.type.Var("C"),new t.type.Var("D")]),new t.type.Term("maplist",[new t.type.Var("P"),new t.type.Var("As"),new t.type.Var("Bs"),new t.type.Var("Cs"),new t.type.Var("Ds")])]))],"maplist/6":[new t.type.Rule(new t.type.Term("maplist",[new t.type.Var("_"),new t.type.Term("[]",[]),new t.type.Term("[]",[]),new t.type.Term("[]",[]),new t.type.Term("[]",[]),new t.type.Term("[]",[])]),null),new t.type.Rule(new t.type.Term("maplist",[new t.type.Var("P"),new t.type.Term(".",[new t.type.Var("A"),new t.type.Var("As")]),new t.type.Term(".",[new t.type.Var("B"),new t.type.Var("Bs")]),new t.type.Term(".",[new t.type.Var("C"),new t.type.Var("Cs")]),new t.type.Term(".",[new t.type.Var("D"),new t.type.Var("Ds")]),new t.type.Term(".",[new t.type.Var("E"),new t.type.Var("Es")])]),new t.type.Term(",",[new t.type.Term("call",[new t.type.Var("P"),new t.type.Var("A"),new t.type.Var("B"),new t.type.Var("C"),new t.type.Var("D"),new t.type.Var("E")]),new t.type.Term("maplist",[new t.type.Var("P"),new t.type.Var("As"),new t.type.Var("Bs"),new t.type.Var("Cs"),new t.type.Var("Ds"),new t.type.Var("Es")])]))],"maplist/7":[new t.type.Rule(new t.type.Term("maplist",[new t.type.Var("_"),new t.type.Term("[]",[]),new t.type.Term("[]",[]),new t.type.Term("[]",[]),new t.type.Term("[]",[]),new t.type.Term("[]",[]),new t.type.Term("[]",[])]),null),new t.type.Rule(new t.type.Term("maplist",[new t.type.Var("P"),new t.type.Term(".",[new t.type.Var("A"),new t.type.Var("As")]),new t.type.Term(".",[new t.type.Var("B"),new t.type.Var("Bs")]),new t.type.Term(".",[new t.type.Var("C"),new t.type.Var("Cs")]),new t.type.Term(".",[new t.type.Var("D"),new t.type.Var("Ds")]),new t.type.Term(".",[new t.type.Var("E"),new t.type.Var("Es")]),new t.type.Term(".",[new t.type.Var("F"),new t.type.Var("Fs")])]),new t.type.Term(",",[new t.type.Term("call",[new t.type.Var("P"),new t.type.Var("A"),new t.type.Var("B"),new t.type.Var("C"),new t.type.Var("D"),new t.type.Var("E"),new t.type.Var("F")]),new t.type.Term("maplist",[new t.type.Var("P"),new t.type.Var("As"),new t.type.Var("Bs"),new t.type.Var("Cs"),new t.type.Var("Ds"),new t.type.Var("Es"),new t.type.Var("Fs")])]))],"maplist/8":[new t.type.Rule(new t.type.Term("maplist",[new t.type.Var("_"),new t.type.Term("[]",[]),new t.type.Term("[]",[]),new t.type.Term("[]",[]),new t.type.Term("[]",[]),new t.type.Term("[]",[]),new t.type.Term("[]",[]),new t.type.Term("[]",[])]),null),new t.type.Rule(new t.type.Term("maplist",[new t.type.Var("P"),new t.type.Term(".",[new t.type.Var("A"),new t.type.Var("As")]),new t.type.Term(".",[new t.type.Var("B"),new t.type.Var("Bs")]),new t.type.Term(".",[new t.type.Var("C"),new t.type.Var("Cs")]),new t.type.Term(".",[new t.type.Var("D"),new t.type.Var("Ds")]),new t.type.Term(".",[new t.type.Var("E"),new t.type.Var("Es")]),new t.type.Term(".",[new t.type.Var("F"),new t.type.Var("Fs")]),new t.type.Term(".",[new t.type.Var("G"),new t.type.Var("Gs")])]),new t.type.Term(",",[new t.type.Term("call",[new t.type.Var("P"),new t.type.Var("A"),new t.type.Var("B"),new t.type.Var("C"),new t.type.Var("D"),new t.type.Var("E"),new t.type.Var("F"),new t.type.Var("G")]),new t.type.Term("maplist",[new t.type.Var("P"),new t.type.Var("As"),new t.type.Var("Bs"),new t.type.Var("Cs"),new t.type.Var("Ds"),new t.type.Var("Es"),new t.type.Var("Fs"),new t.type.Var("Gs")])]))],"include/3":[new t.type.Rule(new t.type.Term("include",[new t.type.Var("_"),new t.type.Term("[]",[]),new t.type.Term("[]",[])]),null),new t.type.Rule(new t.type.Term("include",[new t.type.Var("P"),new t.type.Term(".",[new t.type.Var("H"),new t.type.Var("T")]),new t.type.Var("L")]),new t.type.Term(",",[new t.type.Term("=..",[new t.type.Var("P"),new t.type.Var("A")]),new t.type.Term(",",[new t.type.Term("append",[new t.type.Var("A"),new t.type.Term(".",[new t.type.Var("H"),new t.type.Term("[]",[])]),new t.type.Var("B")]),new t.type.Term(",",[new t.type.Term("=..",[new t.type.Var("F"),new t.type.Var("B")]),new t.type.Term(",",[new t.type.Term(";",[new t.type.Term(",",[new t.type.Term("call",[new t.type.Var("F")]),new t.type.Term(",",[new t.type.Term("=",[new t.type.Var("L"),new t.type.Term(".",[new t.type.Var("H"),new t.type.Var("S")])]),new t.type.Term("!",[])])]),new t.type.Term("=",[new t.type.Var("L"),new t.type.Var("S")])]),new t.type.Term("include",[new t.type.Var("P"),new t.type.Var("T"),new t.type.Var("S")])])])])]))],"exclude/3":[new t.type.Rule(new t.type.Term("exclude",[new t.type.Var("_"),new t.type.Term("[]",[]),new t.type.Term("[]",[])]),null),new t.type.Rule(new t.type.Term("exclude",[new t.type.Var("P"),new t.type.Term(".",[new t.type.Var("H"),new t.type.Var("T")]),new t.type.Var("S")]),new t.type.Term(",",[new t.type.Term("exclude",[new t.type.Var("P"),new t.type.Var("T"),new t.type.Var("E")]),new t.type.Term(",",[new t.type.Term("=..",[new t.type.Var("P"),new t.type.Var("L")]),new t.type.Term(",",[new t.type.Term("append",[new t.type.Var("L"),new t.type.Term(".",[new t.type.Var("H"),new t.type.Term("[]",[])]),new t.type.Var("Q")]),new t.type.Term(",",[new t.type.Term("=..",[new t.type.Var("R"),new t.type.Var("Q")]),new t.type.Term(";",[new t.type.Term(",",[new t.type.Term("call",[new t.type.Var("R")]),new t.type.Term(",",[new t.type.Term("!",[]),new t.type.Term("=",[new t.type.Var("S"),new t.type.Var("E")])])]),new t.type.Term("=",[new t.type.Var("S"),new t.type.Term(".",[new t.type.Var("H"),new t.type.Var("E")])])])])])])]))],"foldl/4":[new t.type.Rule(new t.type.Term("foldl",[new t.type.Var("_"),new t.type.Term("[]",[]),new t.type.Var("I"),new t.type.Var("I")]),null),new t.type.Rule(new t.type.Term("foldl",[new t.type.Var("P"),new t.type.Term(".",[new t.type.Var("H"),new t.type.Var("T")]),new t.type.Var("I"),new t.type.Var("R")]),new t.type.Term(",",[new t.type.Term("=..",[new t.type.Var("P"),new t.type.Var("L")]),new t.type.Term(",",[new t.type.Term("append",[new t.type.Var("L"),new t.type.Term(".",[new t.type.Var("I"),new t.type.Term(".",[new t.type.Var("H"),new t.type.Term(".",[new t.type.Var("X"),new t.type.Term("[]",[])])])]),new t.type.Var("L2")]),new t.type.Term(",",[new t.type.Term("=..",[new t.type.Var("P2"),new t.type.Var("L2")]),new t.type.Term(",",[new t.type.Term("call",[new t.type.Var("P2")]),new t.type.Term("foldl",[new t.type.Var("P"),new t.type.Var("T"),new t.type.Var("X"),new t.type.Var("R")])])])])]))],"select/3":[new t.type.Rule(new t.type.Term("select",[new t.type.Var("E"),new t.type.Term(".",[new t.type.Var("E"),new t.type.Var("Xs")]),new t.type.Var("Xs")]),null),new t.type.Rule(new t.type.Term("select",[new t.type.Var("E"),new t.type.Term(".",[new t.type.Var("X"),new t.type.Var("Xs")]),new t.type.Term(".",[new t.type.Var("X"),new t.type.Var("Ys")])]),new t.type.Term("select",[new t.type.Var("E"),new t.type.Var("Xs"),new t.type.Var("Ys")]))],"sum_list/2":[new t.type.Rule(new t.type.Term("sum_list",[new t.type.Term("[]",[]),new t.type.Num(0,!1)]),null),new t.type.Rule(new t.type.Term("sum_list",[new t.type.Term(".",[new t.type.Var("X"),new t.type.Var("Xs")]),new t.type.Var("S")]),new t.type.Term(",",[new t.type.Term("sum_list",[new t.type.Var("Xs"),new t.type.Var("Y")]),new t.type.Term("is",[new t.type.Var("S"),new t.type.Term("+",[new t.type.Var("X"),new t.type.Var("Y")])])]))],"max_list/2":[new t.type.Rule(new t.type.Term("max_list",[new t.type.Term(".",[new t.type.Var("X"),new t.type.Term("[]",[])]),new t.type.Var("X")]),null),new t.type.Rule(new t.type.Term("max_list",[new t.type.Term(".",[new t.type.Var("X"),new t.type.Var("Xs")]),new t.type.Var("S")]),new t.type.Term(",",[new t.type.Term("max_list",[new t.type.Var("Xs"),new t.type.Var("Y")]),new t.type.Term(";",[new t.type.Term(",",[new t.type.Term(">=",[new t.type.Var("X"),new t.type.Var("Y")]),new t.type.Term(",",[new t.type.Term("=",[new t.type.Var("S"),new t.type.Var("X")]),new t.type.Term("!",[])])]),new t.type.Term("=",[new t.type.Var("S"),new t.type.Var("Y")])])]))],"min_list/2":[new t.type.Rule(new t.type.Term("min_list",[new t.type.Term(".",[new t.type.Var("X"),new t.type.Term("[]",[])]),new t.type.Var("X")]),null),new t.type.Rule(new t.type.Term("min_list",[new t.type.Term(".",[new t.type.Var("X"),new t.type.Var("Xs")]),new t.type.Var("S")]),new t.type.Term(",",[new t.type.Term("min_list",[new t.type.Var("Xs"),new t.type.Var("Y")]),new t.type.Term(";",[new t.type.Term(",",[new t.type.Term("=<",[new t.type.Var("X"),new t.type.Var("Y")]),new t.type.Term(",",[new t.type.Term("=",[new t.type.Var("S"),new t.type.Var("X")]),new t.type.Term("!",[])])]),new t.type.Term("=",[new t.type.Var("S"),new t.type.Var("Y")])])]))],"prod_list/2":[new t.type.Rule(new t.type.Term("prod_list",[new t.type.Term("[]",[]),new t.type.Num(1,!1)]),null),new t.type.Rule(new t.type.Term("prod_list",[new t.type.Term(".",[new t.type.Var("X"),new t.type.Var("Xs")]),new t.type.Var("S")]),new t.type.Term(",",[new t.type.Term("prod_list",[new t.type.Var("Xs"),new t.type.Var("Y")]),new t.type.Term("is",[new t.type.Var("S"),new t.type.Term("*",[new t.type.Var("X"),new t.type.Var("Y")])])]))],"last/2":[new t.type.Rule(new t.type.Term("last",[new t.type.Term(".",[new t.type.Var("X"),new t.type.Term("[]",[])]),new t.type.Var("X")]),null),new t.type.Rule(new t.type.Term("last",[new t.type.Term(".",[new t.type.Var("_"),new t.type.Var("Xs")]),new t.type.Var("X")]),new t.type.Term("last",[new t.type.Var("Xs"),new t.type.Var("X")]))],"prefix/2":[new t.type.Rule(new t.type.Term("prefix",[new t.type.Var("Part"),new t.type.Var("Whole")]),new t.type.Term("append",[new t.type.Var("Part"),new t.type.Var("_"),new t.type.Var("Whole")]))],"nth0/3":[new t.type.Rule(new t.type.Term("nth0",[new t.type.Var("X"),new t.type.Var("Y"),new t.type.Var("Z")]),new t.type.Term(";",[new t.type.Term("->",[new t.type.Term("var",[new t.type.Var("X")]),new t.type.Term("nth",[new t.type.Num(0,!1),new t.type.Var("X"),new t.type.Var("Y"),new t.type.Var("Z"),new t.type.Var("_")])]),new t.type.Term(",",[new t.type.Term(">=",[new t.type.Var("X"),new t.type.Num(0,!1)]),new t.type.Term(",",[new t.type.Term("nth",[new t.type.Num(0,!1),new t.type.Var("X"),new t.type.Var("Y"),new t.type.Var("Z"),new t.type.Var("_")]),new t.type.Term("!",[])])])]))],"nth1/3":[new t.type.Rule(new t.type.Term("nth1",[new t.type.Var("X"),new t.type.Var("Y"),new t.type.Var("Z")]),new t.type.Term(";",[new t.type.Term("->",[new t.type.Term("var",[new t.type.Var("X")]),new t.type.Term("nth",[new t.type.Num(1,!1),new t.type.Var("X"),new t.type.Var("Y"),new t.type.Var("Z"),new t.type.Var("_")])]),new t.type.Term(",",[new t.type.Term(">",[new t.type.Var("X"),new t.type.Num(0,!1)]),new t.type.Term(",",[new t.type.Term("nth",[new t.type.Num(1,!1),new t.type.Var("X"),new t.type.Var("Y"),new t.type.Var("Z"),new t.type.Var("_")]),new t.type.Term("!",[])])])]))],"nth0/4":[new t.type.Rule(new t.type.Term("nth0",[new t.type.Var("X"),new t.type.Var("Y"),new t.type.Var("Z"),new t.type.Var("W")]),new t.type.Term(";",[new t.type.Term("->",[new t.type.Term("var",[new t.type.Var("X")]),new t.type.Term("nth",[new t.type.Num(0,!1),new t.type.Var("X"),new t.type.Var("Y"),new t.type.Var("Z"),new t.type.Var("W")])]),new t.type.Term(",",[new t.type.Term(">=",[new t.type.Var("X"),new t.type.Num(0,!1)]),new t.type.Term(",",[new t.type.Term("nth",[new t.type.Num(0,!1),new t.type.Var("X"),new t.type.Var("Y"),new t.type.Var("Z"),new t.type.Var("W")]),new t.type.Term("!",[])])])]))],"nth1/4":[new t.type.Rule(new t.type.Term("nth1",[new t.type.Var("X"),new t.type.Var("Y"),new t.type.Var("Z"),new t.type.Var("W")]),new t.type.Term(";",[new t.type.Term("->",[new t.type.Term("var",[new t.type.Var("X")]),new t.type.Term("nth",[new t.type.Num(1,!1),new t.type.Var("X"),new t.type.Var("Y"),new t.type.Var("Z"),new t.type.Var("W")])]),new t.type.Term(",",[new t.type.Term(">",[new t.type.Var("X"),new t.type.Num(0,!1)]),new t.type.Term(",",[new t.type.Term("nth",[new t.type.Num(1,!1),new t.type.Var("X"),new t.type.Var("Y"),new t.type.Var("Z"),new t.type.Var("W")]),new t.type.Term("!",[])])])]))],"nth/5":[new t.type.Rule(new t.type.Term("nth",[new t.type.Var("N"),new t.type.Var("N"),new t.type.Term(".",[new t.type.Var("X"),new t.type.Var("Xs")]),new t.type.Var("X"),new t.type.Var("Xs")]),null),new t.type.Rule(new t.type.Term("nth",[new t.type.Var("N"),new t.type.Var("O"),new t.type.Term(".",[new t.type.Var("X"),new t.type.Var("Xs")]),new t.type.Var("Y"),new t.type.Term(".",[new t.type.Var("X"),new t.type.Var("Ys")])]),new t.type.Term(",",[new t.type.Term("is",[new t.type.Var("M"),new t.type.Term("+",[new t.type.Var("N"),new t.type.Num(1,!1)])]),new t.type.Term("nth",[new t.type.Var("M"),new t.type.Var("O"),new t.type.Var("Xs"),new t.type.Var("Y"),new t.type.Var("Ys")])]))],"length/2":function(o,a,n){var c=n.args[0],f=n.args[1];if(!t.type.is_variable(f)&&!t.type.is_integer(f))o.throw_error(t.error.type("integer",f,n.indicator));else if(t.type.is_integer(f)&&f.value<0)o.throw_error(t.error.domain("not_less_than_zero",f,n.indicator));else{var g=new t.type.Term("length",[c,new t.type.Num(0,!1),f]);t.type.is_integer(f)&&(g=new t.type.Term(",",[g,new t.type.Term("!",[])])),o.prepend([new t.type.State(a.goal.replace(g),a.substitution,a)])}},"length/3":[new t.type.Rule(new t.type.Term("length",[new t.type.Term("[]",[]),new t.type.Var("N"),new t.type.Var("N")]),null),new t.type.Rule(new t.type.Term("length",[new t.type.Term(".",[new t.type.Var("_"),new t.type.Var("X")]),new t.type.Var("A"),new t.type.Var("N")]),new t.type.Term(",",[new t.type.Term("succ",[new t.type.Var("A"),new t.type.Var("B")]),new t.type.Term("length",[new t.type.Var("X"),new t.type.Var("B"),new t.type.Var("N")])]))],"replicate/3":function(o,a,n){var c=n.args[0],f=n.args[1],g=n.args[2];if(t.type.is_variable(f))o.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_integer(f))o.throw_error(t.error.type("integer",f,n.indicator));else if(f.value<0)o.throw_error(t.error.domain("not_less_than_zero",f,n.indicator));else if(!t.type.is_variable(g)&&!t.type.is_list(g))o.throw_error(t.error.type("list",g,n.indicator));else{for(var p=new t.type.Term("[]"),E=0;E0;B--)E[B].equals(E[B-1])&&E.splice(B,1);for(var Q=new t.type.Term("[]"),B=E.length-1;B>=0;B--)Q=new t.type.Term(".",[E[B],Q]);o.prepend([new t.type.State(a.goal.replace(new t.type.Term("=",[Q,f])),a.substitution,a)])}}},"msort/2":function(o,a,n){var c=n.args[0],f=n.args[1];if(t.type.is_variable(c))o.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_variable(f)&&!t.type.is_fully_list(f))o.throw_error(t.error.type("list",f,n.indicator));else{for(var g=[],p=c;p.indicator==="./2";)g.push(p.args[0]),p=p.args[1];if(t.type.is_variable(p))o.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_empty_list(p))o.throw_error(t.error.type("list",c,n.indicator));else{for(var E=g.sort(t.compare),B=new t.type.Term("[]"),Q=E.length-1;Q>=0;Q--)B=new t.type.Term(".",[E[Q],B]);o.prepend([new t.type.State(a.goal.replace(new t.type.Term("=",[B,f])),a.substitution,a)])}}},"keysort/2":function(o,a,n){var c=n.args[0],f=n.args[1];if(t.type.is_variable(c))o.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_variable(f)&&!t.type.is_fully_list(f))o.throw_error(t.error.type("list",f,n.indicator));else{for(var g=[],p,E=c;E.indicator==="./2";){if(p=E.args[0],t.type.is_variable(p)){o.throw_error(t.error.instantiation(n.indicator));return}else if(!t.type.is_term(p)||p.indicator!=="-/2"){o.throw_error(t.error.type("pair",p,n.indicator));return}p.args[0].pair=p.args[1],g.push(p.args[0]),E=E.args[1]}if(t.type.is_variable(E))o.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_empty_list(E))o.throw_error(t.error.type("list",c,n.indicator));else{for(var B=g.sort(t.compare),Q=new t.type.Term("[]"),x=B.length-1;x>=0;x--)Q=new t.type.Term(".",[new t.type.Term("-",[B[x],B[x].pair]),Q]),delete B[x].pair;o.prepend([new t.type.State(a.goal.replace(new t.type.Term("=",[Q,f])),a.substitution,a)])}}},"take/3":function(o,a,n){var c=n.args[0],f=n.args[1],g=n.args[2];if(t.type.is_variable(f)||t.type.is_variable(c))o.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_list(f))o.throw_error(t.error.type("list",f,n.indicator));else if(!t.type.is_integer(c))o.throw_error(t.error.type("integer",c,n.indicator));else if(!t.type.is_variable(g)&&!t.type.is_list(g))o.throw_error(t.error.type("list",g,n.indicator));else{for(var p=c.value,E=[],B=f;p>0&&B.indicator==="./2";)E.push(B.args[0]),B=B.args[1],p--;if(p===0){for(var Q=new t.type.Term("[]"),p=E.length-1;p>=0;p--)Q=new t.type.Term(".",[E[p],Q]);o.prepend([new t.type.State(a.goal.replace(new t.type.Term("=",[Q,g])),a.substitution,a)])}}},"drop/3":function(o,a,n){var c=n.args[0],f=n.args[1],g=n.args[2];if(t.type.is_variable(f)||t.type.is_variable(c))o.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_list(f))o.throw_error(t.error.type("list",f,n.indicator));else if(!t.type.is_integer(c))o.throw_error(t.error.type("integer",c,n.indicator));else if(!t.type.is_variable(g)&&!t.type.is_list(g))o.throw_error(t.error.type("list",g,n.indicator));else{for(var p=c.value,E=[],B=f;p>0&&B.indicator==="./2";)E.push(B.args[0]),B=B.args[1],p--;p===0&&o.prepend([new t.type.State(a.goal.replace(new t.type.Term("=",[B,g])),a.substitution,a)])}},"reverse/2":function(o,a,n){var c=n.args[0],f=n.args[1],g=t.type.is_instantiated_list(c),p=t.type.is_instantiated_list(f);if(t.type.is_variable(c)&&t.type.is_variable(f))o.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_variable(c)&&!t.type.is_fully_list(c))o.throw_error(t.error.type("list",c,n.indicator));else if(!t.type.is_variable(f)&&!t.type.is_fully_list(f))o.throw_error(t.error.type("list",f,n.indicator));else if(!g&&!p)o.throw_error(t.error.instantiation(n.indicator));else{for(var E=g?c:f,B=new t.type.Term("[]",[]);E.indicator==="./2";)B=new t.type.Term(".",[E.args[0],B]),E=E.args[1];o.prepend([new t.type.State(a.goal.replace(new t.type.Term("=",[B,g?f:c])),a.substitution,a)])}},"list_to_set/2":function(o,a,n){var c=n.args[0],f=n.args[1];if(t.type.is_variable(c))o.throw_error(t.error.instantiation(n.indicator));else{for(var g=c,p=[];g.indicator==="./2";)p.push(g.args[0]),g=g.args[1];if(t.type.is_variable(g))o.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_term(g)||g.indicator!=="[]/0")o.throw_error(t.error.type("list",c,n.indicator));else{for(var E=[],B=new t.type.Term("[]",[]),Q,x=0;x=0;x--)B=new t.type.Term(".",[E[x],B]);o.prepend([new t.type.State(a.goal.replace(new t.type.Term("=",[f,B])),a.substitution,a)])}}}}},r=["append/2","append/3","member/2","permutation/2","maplist/2","maplist/3","maplist/4","maplist/5","maplist/6","maplist/7","maplist/8","include/3","exclude/3","foldl/4","sum_list/2","max_list/2","min_list/2","prod_list/2","last/2","prefix/2","nth0/3","nth1/3","nth0/4","nth1/4","length/2","replicate/3","select/3","sort/2","msort/2","keysort/2","take/3","drop/3","reverse/2","list_to_set/2"];typeof __<"u"?__.exports=function(o){t=o,new t.type.Module("lists",e(),r)}:new t.type.Module("lists",e(),r)})(gdt)});var tye=_(tn=>{"use strict";var xm=process.platform==="win32",H_="aes-256-cbc",pdt="sha256",qme="The current environment doesn't support interactive reading from TTY.",ri=Ie("fs"),_me=process.binding("tty_wrap").TTY,G_=Ie("child_process"),Uh=Ie("path"),j_={prompt:"> ",hideEchoBack:!1,mask:"*",limit:[],limitMessage:"Input another, please.$<( [)limit(])>",defaultInput:"",trueValue:[],falseValue:[],caseSensitive:!1,keepWhitespace:!1,encoding:"utf8",bufferSize:1024,print:void 0,history:!0,cd:!1,phContent:void 0,preCheck:void 0},yg="none",Bc,ME,Hme=!1,Oh,DP,q_,hdt=0,z_="",km=[],SP,Gme=!1,Y_=!1,T1=!1;function jme(t){function e(r){return r.replace(/[^\w\u0080-\uFFFF]/g,function(o){return"#"+o.charCodeAt(0)+";"})}return DP.concat(function(r){var o=[];return Object.keys(r).forEach(function(a){r[a]==="boolean"?t[a]&&o.push("--"+a):r[a]==="string"&&t[a]&&o.push("--"+a,e(t[a]))}),o}({display:"string",displayOnly:"boolean",keyIn:"boolean",hideEchoBack:"boolean",mask:"string",limit:"string",caseSensitive:"boolean"}))}function ddt(t,e){function r(H){var X,ie="",fe;for(q_=q_||Ie("os").tmpdir();;){X=Uh.join(q_,H+ie);try{fe=ri.openSync(X,"wx")}catch(ye){if(ye.code==="EEXIST"){ie++;continue}else throw ye}ri.closeSync(fe);break}return X}var o,a,n,c={},f,g,p=r("readline-sync.stdout"),E=r("readline-sync.stderr"),B=r("readline-sync.exit"),Q=r("readline-sync.done"),x=Ie("crypto"),C,N,U;C=x.createHash(pdt),C.update(""+process.pid+hdt+++Math.random()),U=C.digest("hex"),N=x.createDecipher(H_,U),o=jme(t),xm?(a=process.env.ComSpec||"cmd.exe",process.env.Q='"',n=["/V:ON","/S","/C","(%Q%"+a+"%Q% /V:ON /S /C %Q%%Q%"+Oh+"%Q%"+o.map(function(H){return" %Q%"+H+"%Q%"}).join("")+" & (echo !ERRORLEVEL!)>%Q%"+B+"%Q%%Q%) 2>%Q%"+E+"%Q% |%Q%"+process.execPath+"%Q% %Q%"+__dirname+"\\encrypt.js%Q% %Q%"+H_+"%Q% %Q%"+U+"%Q% >%Q%"+p+"%Q% & (echo 1)>%Q%"+Q+"%Q%"]):(a="/bin/sh",n=["-c",'("'+Oh+'"'+o.map(function(H){return" '"+H.replace(/'/g,"'\\''")+"'"}).join("")+'; echo $?>"'+B+'") 2>"'+E+'" |"'+process.execPath+'" "'+__dirname+'/encrypt.js" "'+H_+'" "'+U+'" >"'+p+'"; echo 1 >"'+Q+'"']),T1&&T1("_execFileSync",o);try{G_.spawn(a,n,e)}catch(H){c.error=new Error(H.message),c.error.method="_execFileSync - spawn",c.error.program=a,c.error.args=n}for(;ri.readFileSync(Q,{encoding:t.encoding}).trim()!=="1";);return(f=ri.readFileSync(B,{encoding:t.encoding}).trim())==="0"?c.input=N.update(ri.readFileSync(p,{encoding:"binary"}),"hex",t.encoding)+N.final(t.encoding):(g=ri.readFileSync(E,{encoding:t.encoding}).trim(),c.error=new Error(qme+(g?` -`+g:"")),c.error.method="_execFileSync",c.error.program=a,c.error.args=n,c.error.extMessage=g,c.error.exitCode=+f),ri.unlinkSync(p),ri.unlinkSync(E),ri.unlinkSync(B),ri.unlinkSync(Q),c}function mdt(t){var e,r={},o,a={env:process.env,encoding:t.encoding};if(Oh||(xm?process.env.PSModulePath?(Oh="powershell.exe",DP=["-ExecutionPolicy","Bypass","-File",__dirname+"\\read.ps1"]):(Oh="cscript.exe",DP=["//nologo",__dirname+"\\read.cs.js"]):(Oh="/bin/sh",DP=[__dirname+"/read.sh"])),xm&&!process.env.PSModulePath&&(a.stdio=[process.stdin]),G_.execFileSync){e=jme(t),T1&&T1("execFileSync",e);try{r.input=G_.execFileSync(Oh,e,a)}catch(n){o=n.stderr?(n.stderr+"").trim():"",r.error=new Error(qme+(o?` -`+o:"")),r.error.method="execFileSync",r.error.program=Oh,r.error.args=e,r.error.extMessage=o,r.error.exitCode=n.status,r.error.code=n.code,r.error.signal=n.signal}}else r=ddt(t,a);return r.error||(r.input=r.input.replace(/^\s*'|'\s*$/g,""),t.display=""),r}function W_(t){var e="",r=t.display,o=!t.display&&t.keyIn&&t.hideEchoBack&&!t.mask;function a(){var n=mdt(t);if(n.error)throw n.error;return n.input}return Y_&&Y_(t),function(){var n,c,f;function g(){return n||(n=process.binding("fs"),c=process.binding("constants")),n}if(typeof yg=="string")if(yg=null,xm){if(f=function(p){var E=p.replace(/^\D+/,"").split("."),B=0;return(E[0]=+E[0])&&(B+=E[0]*1e4),(E[1]=+E[1])&&(B+=E[1]*100),(E[2]=+E[2])&&(B+=E[2]),B}(process.version),!(f>=20302&&f<40204||f>=5e4&&f<50100||f>=50600&&f<60200)&&process.stdin.isTTY)process.stdin.pause(),yg=process.stdin.fd,ME=process.stdin._handle;else try{yg=g().open("CONIN$",c.O_RDWR,parseInt("0666",8)),ME=new _me(yg,!0)}catch{}if(process.stdout.isTTY)Bc=process.stdout.fd;else{try{Bc=ri.openSync("\\\\.\\CON","w")}catch{}if(typeof Bc!="number")try{Bc=g().open("CONOUT$",c.O_RDWR,parseInt("0666",8))}catch{}}}else{if(process.stdin.isTTY){process.stdin.pause();try{yg=ri.openSync("/dev/tty","r"),ME=process.stdin._handle}catch{}}else try{yg=ri.openSync("/dev/tty","r"),ME=new _me(yg,!1)}catch{}if(process.stdout.isTTY)Bc=process.stdout.fd;else try{Bc=ri.openSync("/dev/tty","w")}catch{}}}(),function(){var n,c,f=!t.hideEchoBack&&!t.keyIn,g,p,E,B,Q;SP="";function x(C){return C===Hme?!0:ME.setRawMode(C)!==0?!1:(Hme=C,!0)}if(Gme||!ME||typeof Bc!="number"&&(t.display||!f)){e=a();return}if(t.display&&(ri.writeSync(Bc,t.display),t.display=""),!t.displayOnly){if(!x(!f)){e=a();return}for(p=t.keyIn?1:t.bufferSize,g=Buffer.allocUnsafe&&Buffer.alloc?Buffer.alloc(p):new Buffer(p),t.keyIn&&t.limit&&(c=new RegExp("[^"+t.limit+"]","g"+(t.caseSensitive?"":"i")));;){E=0;try{E=ri.readSync(yg,g,0,p)}catch(C){if(C.code!=="EOF"){x(!1),e+=a();return}}if(E>0?(B=g.toString(t.encoding,0,E),SP+=B):(B=` -`,SP+=String.fromCharCode(0)),B&&typeof(Q=(B.match(/^(.*?)[\r\n]/)||[])[1])=="string"&&(B=Q,n=!0),B&&(B=B.replace(/[\x00-\x08\x0b\x0c\x0e-\x1f\x7f]/g,"")),B&&c&&(B=B.replace(c,"")),B&&(f||(t.hideEchoBack?t.mask&&ri.writeSync(Bc,new Array(B.length+1).join(t.mask)):ri.writeSync(Bc,B)),e+=B),!t.keyIn&&n||t.keyIn&&e.length>=p)break}!f&&!o&&ri.writeSync(Bc,` -`),x(!1)}}(),t.print&&!o&&t.print(r+(t.displayOnly?"":(t.hideEchoBack?new Array(e.length+1).join(t.mask):e)+` -`),t.encoding),t.displayOnly?"":z_=t.keepWhitespace||t.keyIn?e:e.trim()}function ydt(t,e){var r=[];function o(a){a!=null&&(Array.isArray(a)?a.forEach(o):(!e||e(a))&&r.push(a))}return o(t),r}function X_(t){return t.replace(/[\x00-\x7f]/g,function(e){return"\\x"+("00"+e.charCodeAt().toString(16)).substr(-2)})}function Xs(){var t=Array.prototype.slice.call(arguments),e,r;return t.length&&typeof t[0]=="boolean"&&(r=t.shift(),r&&(e=Object.keys(j_),t.unshift(j_))),t.reduce(function(o,a){return a==null||(a.hasOwnProperty("noEchoBack")&&!a.hasOwnProperty("hideEchoBack")&&(a.hideEchoBack=a.noEchoBack,delete a.noEchoBack),a.hasOwnProperty("noTrim")&&!a.hasOwnProperty("keepWhitespace")&&(a.keepWhitespace=a.noTrim,delete a.noTrim),r||(e=Object.keys(a)),e.forEach(function(n){var c;if(!!a.hasOwnProperty(n))switch(c=a[n],n){case"mask":case"limitMessage":case"defaultInput":case"encoding":c=c!=null?c+"":"",c&&n!=="limitMessage"&&(c=c.replace(/[\r\n]/g,"")),o[n]=c;break;case"bufferSize":!isNaN(c=parseInt(c,10))&&typeof c=="number"&&(o[n]=c);break;case"displayOnly":case"keyIn":case"hideEchoBack":case"caseSensitive":case"keepWhitespace":case"history":case"cd":o[n]=!!c;break;case"limit":case"trueValue":case"falseValue":o[n]=ydt(c,function(f){var g=typeof f;return g==="string"||g==="number"||g==="function"||f instanceof RegExp}).map(function(f){return typeof f=="string"?f.replace(/[\r\n]/g,""):f});break;case"print":case"phContent":case"preCheck":o[n]=typeof c=="function"?c:void 0;break;case"prompt":case"display":o[n]=c??"";break}})),o},{})}function J_(t,e,r){return e.some(function(o){var a=typeof o;return a==="string"?r?t===o:t.toLowerCase()===o.toLowerCase():a==="number"?parseFloat(t)===o:a==="function"?o(t):o instanceof RegExp?o.test(t):!1})}function Z_(t,e){var r=Uh.normalize(xm?(process.env.HOMEDRIVE||"")+(process.env.HOMEPATH||""):process.env.HOME||"").replace(/[\/\\]+$/,"");return t=Uh.normalize(t),e?t.replace(/^~(?=\/|\\|$)/,r):t.replace(new RegExp("^"+X_(r)+"(?=\\/|\\\\|$)",xm?"i":""),"~")}function LE(t,e){var r="(?:\\(([\\s\\S]*?)\\))?(\\w+|.-.)(?:\\(([\\s\\S]*?)\\))?",o=new RegExp("(\\$)?(\\$<"+r+">)","g"),a=new RegExp("(\\$)?(\\$\\{"+r+"\\})","g");function n(c,f,g,p,E,B){var Q;return f||typeof(Q=e(E))!="string"?g:Q?(p||"")+Q+(B||""):""}return t.replace(o,n).replace(a,n)}function Yme(t,e,r){var o,a=[],n=-1,c=0,f="",g;function p(E,B){return B.length>3?(E.push(B[0]+"..."+B[B.length-1]),g=!0):B.length&&(E=E.concat(B)),E}return o=t.reduce(function(E,B){return E.concat((B+"").split(""))},[]).reduce(function(E,B){var Q,x;return e||(B=B.toLowerCase()),Q=/^\d$/.test(B)?1:/^[A-Z]$/.test(B)?2:/^[a-z]$/.test(B)?3:0,r&&Q===0?f+=B:(x=B.charCodeAt(0),Q&&Q===n&&x===c+1?a.push(B):(E=p(E,a),a=[B],n=Q),c=x),E},[]),o=p(o,a),f&&(o.push(f),g=!0),{values:o,suppressed:g}}function Wme(t,e){return t.join(t.length>2?", ":e?" / ":"/")}function Jme(t,e){var r,o,a={},n;if(e.phContent&&(r=e.phContent(t,e)),typeof r!="string")switch(t){case"hideEchoBack":case"mask":case"defaultInput":case"caseSensitive":case"keepWhitespace":case"encoding":case"bufferSize":case"history":case"cd":r=e.hasOwnProperty(t)?typeof e[t]=="boolean"?e[t]?"on":"off":e[t]+"":"";break;case"limit":case"trueValue":case"falseValue":o=e[e.hasOwnProperty(t+"Src")?t+"Src":t],e.keyIn?(a=Yme(o,e.caseSensitive),o=a.values):o=o.filter(function(c){var f=typeof c;return f==="string"||f==="number"}),r=Wme(o,a.suppressed);break;case"limitCount":case"limitCountNotZero":r=e[e.hasOwnProperty("limitSrc")?"limitSrc":"limit"].length,r=r||t!=="limitCountNotZero"?r+"":"";break;case"lastInput":r=z_;break;case"cwd":case"CWD":case"cwdHome":r=process.cwd(),t==="CWD"?r=Uh.basename(r):t==="cwdHome"&&(r=Z_(r));break;case"date":case"time":case"localeDate":case"localeTime":r=new Date()["to"+t.replace(/^./,function(c){return c.toUpperCase()})+"String"]();break;default:typeof(n=(t.match(/^history_m(\d+)$/)||[])[1])=="string"&&(r=km[km.length-n]||"")}return r}function Vme(t){var e=/^(.)-(.)$/.exec(t),r="",o,a,n,c;if(!e)return null;for(o=e[1].charCodeAt(0),a=e[2].charCodeAt(0),c=o -And the length must be: $`,trueValue:null,falseValue:null,caseSensitive:!0},e,{history:!1,cd:!1,phContent:function(x){return x==="charlist"?r.text:x==="length"?o+"..."+a:null}}),c,f,g,p,E,B,Q;for(e=e||{},c=LE(e.charlist?e.charlist+"":"$",Vme),(isNaN(o=parseInt(e.min,10))||typeof o!="number")&&(o=12),(isNaN(a=parseInt(e.max,10))||typeof a!="number")&&(a=24),p=new RegExp("^["+X_(c)+"]{"+o+","+a+"}$"),r=Yme([c],n.caseSensitive,!0),r.text=Wme(r.values,r.suppressed),f=e.confirmMessage!=null?e.confirmMessage:"Reinput a same one to confirm it: ",g=e.unmatchMessage!=null?e.unmatchMessage:"It differs from first one. Hit only the Enter key if you want to retry from first one.",t==null&&(t="Input new password: "),E=n.limitMessage;!Q;)n.limit=p,n.limitMessage=E,B=tn.question(t,n),n.limit=[B,""],n.limitMessage=g,Q=tn.question(f,n);return B};function Zme(t,e,r){var o;function a(n){return o=r(n),!isNaN(o)&&typeof o=="number"}return tn.question(t,Xs({limitMessage:"Input valid number, please."},e,{limit:a,cd:!1})),o}tn.questionInt=function(t,e){return Zme(t,e,function(r){return parseInt(r,10)})};tn.questionFloat=function(t,e){return Zme(t,e,parseFloat)};tn.questionPath=function(t,e){var r,o="",a=Xs({hideEchoBack:!1,limitMessage:`$Input valid path, please.$<( Min:)min>$<( Max:)max>`,history:!0,cd:!0},e,{keepWhitespace:!1,limit:function(n){var c,f,g;n=Z_(n,!0),o="";function p(E){E.split(/\/|\\/).reduce(function(B,Q){var x=Uh.resolve(B+=Q+Uh.sep);if(!ri.existsSync(x))ri.mkdirSync(x);else if(!ri.statSync(x).isDirectory())throw new Error("Non directory already exists: "+x);return B},"")}try{if(c=ri.existsSync(n),r=c?ri.realpathSync(n):Uh.resolve(n),!e.hasOwnProperty("exists")&&!c||typeof e.exists=="boolean"&&e.exists!==c)return o=(c?"Already exists":"No such file or directory")+": "+r,!1;if(!c&&e.create&&(e.isDirectory?p(r):(p(Uh.dirname(r)),ri.closeSync(ri.openSync(r,"w"))),r=ri.realpathSync(r)),c&&(e.min||e.max||e.isFile||e.isDirectory)){if(f=ri.statSync(r),e.isFile&&!f.isFile())return o="Not file: "+r,!1;if(e.isDirectory&&!f.isDirectory())return o="Not directory: "+r,!1;if(e.min&&f.size<+e.min||e.max&&f.size>+e.max)return o="Size "+f.size+" is out of range: "+r,!1}if(typeof e.validate=="function"&&(g=e.validate(r))!==!0)return typeof g=="string"&&(o=g),!1}catch(E){return o=E+"",!1}return!0},phContent:function(n){return n==="error"?o:n!=="min"&&n!=="max"?null:e.hasOwnProperty(n)?e[n]+"":""}});return e=e||{},t==null&&(t='Input path (you can "cd" and "pwd"): '),tn.question(t,a),r};function $me(t,e){var r={},o={};return typeof t=="object"?(Object.keys(t).forEach(function(a){typeof t[a]=="function"&&(o[e.caseSensitive?a:a.toLowerCase()]=t[a])}),r.preCheck=function(a){var n;return r.args=V_(a),n=r.args[0]||"",e.caseSensitive||(n=n.toLowerCase()),r.hRes=n!=="_"&&o.hasOwnProperty(n)?o[n].apply(a,r.args.slice(1)):o.hasOwnProperty("_")?o._.apply(a,r.args):null,{res:a,forceNext:!1}},o.hasOwnProperty("_")||(r.limit=function(){var a=r.args[0]||"";return e.caseSensitive||(a=a.toLowerCase()),o.hasOwnProperty(a)})):r.preCheck=function(a){return r.args=V_(a),r.hRes=typeof t=="function"?t.apply(a,r.args):!0,{res:a,forceNext:!1}},r}tn.promptCL=function(t,e){var r=Xs({hideEchoBack:!1,limitMessage:"Requested command is not available.",caseSensitive:!1,history:!0},e),o=$me(t,r);return r.limit=o.limit,r.preCheck=o.preCheck,tn.prompt(r),o.args};tn.promptLoop=function(t,e){for(var r=Xs({hideEchoBack:!1,trueValue:null,falseValue:null,caseSensitive:!1,history:!0},e);!t(tn.prompt(r)););};tn.promptCLLoop=function(t,e){var r=Xs({hideEchoBack:!1,limitMessage:"Requested command is not available.",caseSensitive:!1,history:!0},e),o=$me(t,r);for(r.limit=o.limit,r.preCheck=o.preCheck;tn.prompt(r),!o.hRes;);};tn.promptSimShell=function(t){return tn.prompt(Xs({hideEchoBack:!1,history:!0},t,{prompt:function(){return xm?"$>":(process.env.USER||"")+(process.env.HOSTNAME?"@"+process.env.HOSTNAME.replace(/\..*$/,""):"")+":$$ "}()}))};function eye(t,e,r){var o;return t==null&&(t="Are you sure? "),(!e||e.guide!==!1)&&(t+="")&&(t=t.replace(/\s*:?\s*$/,"")+" [y/n]: "),o=tn.keyIn(t,Xs(e,{hideEchoBack:!1,limit:r,trueValue:"y",falseValue:"n",caseSensitive:!1})),typeof o=="boolean"?o:""}tn.keyInYN=function(t,e){return eye(t,e)};tn.keyInYNStrict=function(t,e){return eye(t,e,"yn")};tn.keyInPause=function(t,e){t==null&&(t="Continue..."),(!e||e.guide!==!1)&&(t+="")&&(t=t.replace(/\s+$/,"")+" (Hit any key)"),tn.keyIn(t,Xs({limit:null},e,{hideEchoBack:!0,mask:""}))};tn.keyInSelect=function(t,e,r){var o=Xs({hideEchoBack:!1},r,{trueValue:null,falseValue:null,caseSensitive:!1,phContent:function(g){return g==="itemsCount"?t.length+"":g==="firstItem"?(t[0]+"").trim():g==="lastItem"?(t[t.length-1]+"").trim():null}}),a="",n={},c=49,f=` -`;if(!Array.isArray(t)||!t.length||t.length>35)throw"`items` must be Array (max length: 35).";return t.forEach(function(g,p){var E=String.fromCharCode(c);a+=E,n[E]=p,f+="["+E+"] "+(g+"").trim()+` -`,c=c===57?97:c+1}),(!r||r.cancel!==!1)&&(a+="0",n[0]=-1,f+="[0] "+(r&&r.cancel!=null&&typeof r.cancel!="boolean"?(r.cancel+"").trim():"CANCEL")+` -`),o.limit=a,f+=` -`,e==null&&(e="Choose one from list: "),(e+="")&&((!r||r.guide!==!1)&&(e=e.replace(/\s*:?\s*$/,"")+" [$]: "),f+=e),n[tn.keyIn(f,o).toLowerCase()]};tn.getRawInput=function(){return SP};function N1(t,e){var r;return e.length&&(r={},r[t]=e[0]),tn.setDefaultOptions(r)[t]}tn.setPrint=function(){return N1("print",arguments)};tn.setPrompt=function(){return N1("prompt",arguments)};tn.setEncoding=function(){return N1("encoding",arguments)};tn.setMask=function(){return N1("mask",arguments)};tn.setBufferSize=function(){return N1("bufferSize",arguments)}});var $_=_((djt,MA)=>{(function(){var t={major:0,minor:2,patch:66,status:"beta"};tau_file_system={files:{},open:function(I,S,y){var R=tau_file_system.files[I];if(!R){if(y==="read")return null;R={path:I,text:"",type:S,get:function(Z,te){return te===this.text.length||te>this.text.length?"end_of_file":this.text.substring(te,te+Z)},put:function(Z,te){return te==="end_of_file"?(this.text+=Z,!0):te==="past_end_of_file"?null:(this.text=this.text.substring(0,te)+Z+this.text.substring(te+Z.length),!0)},get_byte:function(Z){if(Z==="end_of_stream")return-1;var te=Math.floor(Z/2);if(this.text.length<=te)return-1;var ne=n(this.text[Math.floor(Z/2)],0);return Z%2===0?ne&255:ne/256>>>0},put_byte:function(Z,te){var ne=te==="end_of_stream"?this.text.length:Math.floor(te/2);if(this.text.length>>0,Ae=(Ae&255)<<8|Z&255):(Ae=Ae&255,Ae=(Z&255)<<8|Ae&255),this.text.length===ne?this.text+=c(Ae):this.text=this.text.substring(0,ne)+c(Ae)+this.text.substring(ne+1),!0},flush:function(){return!0},close:function(){var Z=tau_file_system.files[this.path];return Z?!0:null}},tau_file_system.files[I]=R}return y==="write"&&(R.text=""),R}},tau_user_input={buffer:"",get:function(I,S){for(var y;tau_user_input.buffer.length\?\@\^\~\\]+|'(?:[^']*?(?:\\(?:x?\d+)?\\)*(?:'')*(?:\\')*)*')/,number:/^(?:0o[0-7]+|0x[0-9a-fA-F]+|0b[01]+|0'(?:''|\\[abfnrtv\\'"`]|\\x?\d+\\|[^\\])|\d+(?:\.\d+(?:[eE][+-]?\d+)?)?)/,string:/^(?:"([^"]|""|\\")*"|`([^`]|``|\\`)*`)/,l_brace:/^(?:\[)/,r_brace:/^(?:\])/,l_bracket:/^(?:\{)/,r_bracket:/^(?:\})/,bar:/^(?:\|)/,l_paren:/^(?:\()/,r_paren:/^(?:\))/};function U(I,S){return I.get_flag("char_conversion").id==="on"?S.replace(/./g,function(y){return I.get_char_conversion(y)}):S}function H(I){this.thread=I,this.text="",this.tokens=[]}H.prototype.set_last_tokens=function(I){return this.tokens=I},H.prototype.new_text=function(I){this.text=I,this.tokens=[]},H.prototype.get_tokens=function(I){var S,y=0,R=0,Z=0,te=[],ne=!1;if(I){var Ae=this.tokens[I-1];y=Ae.len,S=U(this.thread,this.text.substr(Ae.len)),R=Ae.line,Z=Ae.start}else S=this.text;if(/^\s*$/.test(S))return null;for(;S!=="";){var Re=[],Le=!1;if(/^\n/.exec(S)!==null){R++,Z=0,y++,S=S.replace(/\n/,""),ne=!0;continue}for(var lt in N)if(N.hasOwnProperty(lt)){var mt=N[lt].exec(S);mt&&Re.push({value:mt[0],name:lt,matches:mt})}if(!Re.length)return this.set_last_tokens([{value:S,matches:[],name:"lexical",line:R,start:Z}]);var Ae=r(Re,function(Or,Fr){return Or.value.length>=Fr.value.length?Or:Fr});switch(Ae.start=Z,Ae.line=R,S=S.replace(Ae.value,""),Z+=Ae.value.length,y+=Ae.value.length,Ae.name){case"atom":Ae.raw=Ae.value,Ae.value.charAt(0)==="'"&&(Ae.value=Q(Ae.value.substr(1,Ae.value.length-2),"'"),Ae.value===null&&(Ae.name="lexical",Ae.value="unknown escape sequence"));break;case"number":Ae.float=Ae.value.substring(0,2)!=="0x"&&Ae.value.match(/[.eE]/)!==null&&Ae.value!=="0'.",Ae.value=C(Ae.value),Ae.blank=Le;break;case"string":var qt=Ae.value.charAt(0);Ae.value=Q(Ae.value.substr(1,Ae.value.length-2),qt),Ae.value===null&&(Ae.name="lexical",Ae.value="unknown escape sequence");break;case"whitespace":var sr=te[te.length-1];sr&&(sr.space=!0),Le=!0;continue;case"r_bracket":te.length>0&&te[te.length-1].name==="l_bracket"&&(Ae=te.pop(),Ae.name="atom",Ae.value="{}",Ae.raw="{}",Ae.space=!1);break;case"r_brace":te.length>0&&te[te.length-1].name==="l_brace"&&(Ae=te.pop(),Ae.name="atom",Ae.value="[]",Ae.raw="[]",Ae.space=!1);break}Ae.len=y,te.push(Ae),Le=!1}var Pt=this.set_last_tokens(te);return Pt.length===0?null:Pt};function X(I,S,y,R,Z){if(!S[y])return{type:f,value:k.error.syntax(S[y-1],"expression expected",!0)};var te;if(R==="0"){var ne=S[y];switch(ne.name){case"number":return{type:g,len:y+1,value:new k.type.Num(ne.value,ne.float)};case"variable":return{type:g,len:y+1,value:new k.type.Var(ne.value)};case"string":var Ae;switch(I.get_flag("double_quotes").id){case"atom":Ae=new q(ne.value,[]);break;case"codes":Ae=new q("[]",[]);for(var Re=ne.value.length-1;Re>=0;Re--)Ae=new q(".",[new k.type.Num(n(ne.value,Re),!1),Ae]);break;case"chars":Ae=new q("[]",[]);for(var Re=ne.value.length-1;Re>=0;Re--)Ae=new q(".",[new k.type.Term(ne.value.charAt(Re),[]),Ae]);break}return{type:g,len:y+1,value:Ae};case"l_paren":var Pt=X(I,S,y+1,I.__get_max_priority(),!0);return Pt.type!==g?Pt:S[Pt.len]&&S[Pt.len].name==="r_paren"?(Pt.len++,Pt):{type:f,derived:!0,value:k.error.syntax(S[Pt.len]?S[Pt.len]:S[Pt.len-1],") or operator expected",!S[Pt.len])};case"l_bracket":var Pt=X(I,S,y+1,I.__get_max_priority(),!0);return Pt.type!==g?Pt:S[Pt.len]&&S[Pt.len].name==="r_bracket"?(Pt.len++,Pt.value=new q("{}",[Pt.value]),Pt):{type:f,derived:!0,value:k.error.syntax(S[Pt.len]?S[Pt.len]:S[Pt.len-1],"} or operator expected",!S[Pt.len])}}var Le=ie(I,S,y,Z);return Le.type===g||Le.derived||(Le=fe(I,S,y),Le.type===g||Le.derived)?Le:{type:f,derived:!1,value:k.error.syntax(S[y],"unexpected token")}}var lt=I.__get_max_priority(),mt=I.__get_next_priority(R),qt=y;if(S[y].name==="atom"&&S[y+1]&&(S[y].space||S[y+1].name!=="l_paren")){var ne=S[y++],sr=I.__lookup_operator_classes(R,ne.value);if(sr&&sr.indexOf("fy")>-1){var Pt=X(I,S,y,R,Z);if(Pt.type!==f)return ne.value==="-"&&!ne.space&&k.type.is_number(Pt.value)?{value:new k.type.Num(-Pt.value.value,Pt.value.is_float),len:Pt.len,type:g}:{value:new k.type.Term(ne.value,[Pt.value]),len:Pt.len,type:g};te=Pt}else if(sr&&sr.indexOf("fx")>-1){var Pt=X(I,S,y,mt,Z);if(Pt.type!==f)return{value:new k.type.Term(ne.value,[Pt.value]),len:Pt.len,type:g};te=Pt}}y=qt;var Pt=X(I,S,y,mt,Z);if(Pt.type===g){y=Pt.len;var ne=S[y];if(S[y]&&(S[y].name==="atom"&&I.__lookup_operator_classes(R,ne.value)||S[y].name==="bar"&&I.__lookup_operator_classes(R,"|"))){var mn=mt,Or=R,sr=I.__lookup_operator_classes(R,ne.value);if(sr.indexOf("xf")>-1)return{value:new k.type.Term(ne.value,[Pt.value]),len:++Pt.len,type:g};if(sr.indexOf("xfx")>-1){var Fr=X(I,S,y+1,mn,Z);return Fr.type===g?{value:new k.type.Term(ne.value,[Pt.value,Fr.value]),len:Fr.len,type:g}:(Fr.derived=!0,Fr)}else if(sr.indexOf("xfy")>-1){var Fr=X(I,S,y+1,Or,Z);return Fr.type===g?{value:new k.type.Term(ne.value,[Pt.value,Fr.value]),len:Fr.len,type:g}:(Fr.derived=!0,Fr)}else if(Pt.type!==f)for(;;){y=Pt.len;var ne=S[y];if(ne&&ne.name==="atom"&&I.__lookup_operator_classes(R,ne.value)){var sr=I.__lookup_operator_classes(R,ne.value);if(sr.indexOf("yf")>-1)Pt={value:new k.type.Term(ne.value,[Pt.value]),len:++y,type:g};else if(sr.indexOf("yfx")>-1){var Fr=X(I,S,++y,mn,Z);if(Fr.type===f)return Fr.derived=!0,Fr;y=Fr.len,Pt={value:new k.type.Term(ne.value,[Pt.value,Fr.value]),len:y,type:g}}else break}else break}}else te={type:f,value:k.error.syntax(S[Pt.len-1],"operator expected")};return Pt}return Pt}function ie(I,S,y,R){if(!S[y]||S[y].name==="atom"&&S[y].raw==="."&&!R&&(S[y].space||!S[y+1]||S[y+1].name!=="l_paren"))return{type:f,derived:!1,value:k.error.syntax(S[y-1],"unfounded token")};var Z=S[y],te=[];if(S[y].name==="atom"&&S[y].raw!==","){if(y++,S[y-1].space)return{type:g,len:y,value:new k.type.Term(Z.value,te)};if(S[y]&&S[y].name==="l_paren"){if(S[y+1]&&S[y+1].name==="r_paren")return{type:f,derived:!0,value:k.error.syntax(S[y+1],"argument expected")};var ne=X(I,S,++y,"999",!0);if(ne.type===f)return ne.derived?ne:{type:f,derived:!0,value:k.error.syntax(S[y]?S[y]:S[y-1],"argument expected",!S[y])};for(te.push(ne.value),y=ne.len;S[y]&&S[y].name==="atom"&&S[y].value===",";){if(ne=X(I,S,y+1,"999",!0),ne.type===f)return ne.derived?ne:{type:f,derived:!0,value:k.error.syntax(S[y+1]?S[y+1]:S[y],"argument expected",!S[y+1])};te.push(ne.value),y=ne.len}if(S[y]&&S[y].name==="r_paren")y++;else return{type:f,derived:!0,value:k.error.syntax(S[y]?S[y]:S[y-1],", or ) expected",!S[y])}}return{type:g,len:y,value:new k.type.Term(Z.value,te)}}return{type:f,derived:!1,value:k.error.syntax(S[y],"term expected")}}function fe(I,S,y){if(!S[y])return{type:f,derived:!1,value:k.error.syntax(S[y-1],"[ expected")};if(S[y]&&S[y].name==="l_brace"){var R=X(I,S,++y,"999",!0),Z=[R.value],te=void 0;if(R.type===f)return S[y]&&S[y].name==="r_brace"?{type:g,len:y+1,value:new k.type.Term("[]",[])}:{type:f,derived:!0,value:k.error.syntax(S[y],"] expected")};for(y=R.len;S[y]&&S[y].name==="atom"&&S[y].value===",";){if(R=X(I,S,y+1,"999",!0),R.type===f)return R.derived?R:{type:f,derived:!0,value:k.error.syntax(S[y+1]?S[y+1]:S[y],"argument expected",!S[y+1])};Z.push(R.value),y=R.len}var ne=!1;if(S[y]&&S[y].name==="bar"){if(ne=!0,R=X(I,S,y+1,"999",!0),R.type===f)return R.derived?R:{type:f,derived:!0,value:k.error.syntax(S[y+1]?S[y+1]:S[y],"argument expected",!S[y+1])};te=R.value,y=R.len}return S[y]&&S[y].name==="r_brace"?{type:g,len:y+1,value:h(Z,te)}:{type:f,derived:!0,value:k.error.syntax(S[y]?S[y]:S[y-1],ne?"] expected":", or | or ] expected",!S[y])}}return{type:f,derived:!1,value:k.error.syntax(S[y],"list expected")}}function ye(I,S,y){var R=S[y].line,Z=X(I,S,y,I.__get_max_priority(),!1),te=null,ne;if(Z.type!==f)if(y=Z.len,S[y]&&S[y].name==="atom"&&S[y].raw===".")if(y++,k.type.is_term(Z.value)){if(Z.value.indicator===":-/2"?(te=new k.type.Rule(Z.value.args[0],ke(Z.value.args[1])),ne={value:te,len:y,type:g}):Z.value.indicator==="-->/2"?(te=pe(new k.type.Rule(Z.value.args[0],Z.value.args[1]),I),te.body=ke(te.body),ne={value:te,len:y,type:k.type.is_rule(te)?g:f}):(te=new k.type.Rule(Z.value,null),ne={value:te,len:y,type:g}),te){var Ae=te.singleton_variables();Ae.length>0&&I.throw_warning(k.warning.singleton(Ae,te.head.indicator,R))}return ne}else return{type:f,value:k.error.syntax(S[y],"callable expected")};else return{type:f,value:k.error.syntax(S[y]?S[y]:S[y-1],". or operator expected")};return Z}function Qe(I,S,y){y=y||{},y.from=y.from?y.from:"$tau-js",y.reconsult=y.reconsult!==void 0?y.reconsult:!0;var R=new H(I),Z={},te;R.new_text(S);var ne=0,Ae=R.get_tokens(ne);do{if(Ae===null||!Ae[ne])break;var Re=ye(I,Ae,ne);if(Re.type===f)return new q("throw",[Re.value]);if(Re.value.body===null&&Re.value.head.indicator==="?-/1"){var Le=new pt(I.session);Le.add_goal(Re.value.head.args[0]),Le.answer(function(mt){k.type.is_error(mt)?I.throw_warning(mt.args[0]):(mt===!1||mt===null)&&I.throw_warning(k.warning.failed_goal(Re.value.head.args[0],Re.len))}),ne=Re.len;var lt=!0}else if(Re.value.body===null&&Re.value.head.indicator===":-/1"){var lt=I.run_directive(Re.value.head.args[0]);ne=Re.len,Re.value.head.args[0].indicator==="char_conversion/2"&&(Ae=R.get_tokens(ne),ne=0)}else{te=Re.value.head.indicator,y.reconsult!==!1&&Z[te]!==!0&&!I.is_multifile_predicate(te)&&(I.session.rules[te]=a(I.session.rules[te]||[],function(qt){return qt.dynamic}),Z[te]=!0);var lt=I.add_rule(Re.value,y);ne=Re.len}if(!lt)return lt}while(!0);return!0}function Pe(I,S){var y=new H(I);y.new_text(S);var R=0;do{var Z=y.get_tokens(R);if(Z===null)break;var te=X(I,Z,0,I.__get_max_priority(),!1);if(te.type!==f){var ne=te.len,Ae=ne;if(Z[ne]&&Z[ne].name==="atom"&&Z[ne].raw===".")I.add_goal(ke(te.value));else{var Re=Z[ne];return new q("throw",[k.error.syntax(Re||Z[ne-1],". or operator expected",!Re)])}R=te.len+1}else return new q("throw",[te.value])}while(!0);return!0}function pe(I,S){I=I.rename(S);var y=S.next_free_variable(),R=Ee(I.body,y,S);return R.error?R.value:(I.body=R.value,I.head.args=I.head.args.concat([y,R.variable]),I.head=new q(I.head.id,I.head.args),I)}function Ee(I,S,y){var R;if(k.type.is_term(I)&&I.indicator==="!/0")return{value:I,variable:S,error:!1};if(k.type.is_term(I)&&I.indicator===",/2"){var Z=Ee(I.args[0],S,y);if(Z.error)return Z;var te=Ee(I.args[1],Z.variable,y);return te.error?te:{value:new q(",",[Z.value,te.value]),variable:te.variable,error:!1}}else{if(k.type.is_term(I)&&I.indicator==="{}/1")return{value:I.args[0],variable:S,error:!1};if(k.type.is_empty_list(I))return{value:new q("true",[]),variable:S,error:!1};if(k.type.is_list(I)){R=y.next_free_variable();for(var ne=I,Ae;ne.indicator==="./2";)Ae=ne,ne=ne.args[1];return k.type.is_variable(ne)?{value:k.error.instantiation("DCG"),variable:S,error:!0}:k.type.is_empty_list(ne)?(Ae.args[1]=R,{value:new q("=",[S,I]),variable:R,error:!1}):{value:k.error.type("list",I,"DCG"),variable:S,error:!0}}else return k.type.is_callable(I)?(R=y.next_free_variable(),I.args=I.args.concat([S,R]),I=new q(I.id,I.args),{value:I,variable:R,error:!1}):{value:k.error.type("callable",I,"DCG"),variable:S,error:!0}}}function ke(I){return k.type.is_variable(I)?new q("call",[I]):k.type.is_term(I)&&[",/2",";/2","->/2"].indexOf(I.indicator)!==-1?new q(I.id,[ke(I.args[0]),ke(I.args[1])]):I}function h(I,S){for(var y=S||new k.type.Term("[]",[]),R=I.length-1;R>=0;R--)y=new k.type.Term(".",[I[R],y]);return y}function Ke(I,S){for(var y=I.length-1;y>=0;y--)I[y]===S&&I.splice(y,1)}function Ce(I){for(var S={},y=[],R=0;R=0;S--)if(I.charAt(S)==="/")return new q("/",[new q(I.substring(0,S)),new Ue(parseInt(I.substring(S+1)),!1)])}function Se(I){this.id=I}function Ue(I,S){this.is_float=S!==void 0?S:parseInt(I)!==I,this.value=this.is_float?I:parseInt(I)}var dt=0;function q(I,S,y){this.ref=y||++dt,this.id=I,this.args=S||[],this.indicator=I+"/"+this.args.length}var Qt=0;function He(I,S,y,R,Z,te){this.id=Qt++,this.stream=I,this.mode=S,this.alias=y,this.type=R!==void 0?R:"text",this.reposition=Z!==void 0?Z:!0,this.eof_action=te!==void 0?te:"eof_code",this.position=this.mode==="append"?"end_of_stream":0,this.output=this.mode==="write"||this.mode==="append",this.input=this.mode==="read"}function qe(I){I=I||{},this.links=I}function Fe(I,S,y){S=S||new qe,y=y||null,this.goal=I,this.substitution=S,this.parent=y}function je(I,S,y){this.head=I,this.body=S,this.dynamic=y||!1}function We(I){I=I===void 0||I<=0?1e3:I,this.rules={},this.src_predicates={},this.rename=0,this.modules=[],this.thread=new pt(this),this.total_threads=1,this.renamed_variables={},this.public_predicates={},this.multifile_predicates={},this.limit=I,this.streams={user_input:new He(typeof MA<"u"&&MA.exports?nodejs_user_input:tau_user_input,"read","user_input","text",!1,"reset"),user_output:new He(typeof MA<"u"&&MA.exports?nodejs_user_output:tau_user_output,"write","user_output","text",!1,"eof_code")},this.file_system=typeof MA<"u"&&MA.exports?nodejs_file_system:tau_file_system,this.standard_input=this.streams.user_input,this.standard_output=this.streams.user_output,this.current_input=this.streams.user_input,this.current_output=this.streams.user_output,this.format_success=function(S){return S.substitution},this.format_error=function(S){return S.goal},this.flag={bounded:k.flag.bounded.value,max_integer:k.flag.max_integer.value,min_integer:k.flag.min_integer.value,integer_rounding_function:k.flag.integer_rounding_function.value,char_conversion:k.flag.char_conversion.value,debug:k.flag.debug.value,max_arity:k.flag.max_arity.value,unknown:k.flag.unknown.value,double_quotes:k.flag.double_quotes.value,occurs_check:k.flag.occurs_check.value,dialect:k.flag.dialect.value,version_data:k.flag.version_data.value,nodejs:k.flag.nodejs.value},this.__loaded_modules=[],this.__char_conversion={},this.__operators={1200:{":-":["fx","xfx"],"-->":["xfx"],"?-":["fx"]},1100:{";":["xfy"]},1050:{"->":["xfy"]},1e3:{",":["xfy"]},900:{"\\+":["fy"]},700:{"=":["xfx"],"\\=":["xfx"],"==":["xfx"],"\\==":["xfx"],"@<":["xfx"],"@=<":["xfx"],"@>":["xfx"],"@>=":["xfx"],"=..":["xfx"],is:["xfx"],"=:=":["xfx"],"=\\=":["xfx"],"<":["xfx"],"=<":["xfx"],">":["xfx"],">=":["xfx"]},600:{":":["xfy"]},500:{"+":["yfx"],"-":["yfx"],"/\\":["yfx"],"\\/":["yfx"]},400:{"*":["yfx"],"/":["yfx"],"//":["yfx"],rem:["yfx"],mod:["yfx"],"<<":["yfx"],">>":["yfx"]},200:{"**":["xfx"],"^":["xfy"],"-":["fy"],"+":["fy"],"\\":["fy"]}}}function pt(I){this.epoch=Date.now(),this.session=I,this.session.total_threads++,this.total_steps=0,this.cpu_time=0,this.cpu_time_last=0,this.points=[],this.debugger=!1,this.debugger_states=[],this.level="top_level/0",this.__calls=[],this.current_limit=this.session.limit,this.warnings=[]}function Oe(I,S,y){this.id=I,this.rules=S,this.exports=y,k.module[I]=this}Oe.prototype.exports_predicate=function(I){return this.exports.indexOf(I)!==-1},Se.prototype.unify=function(I,S){if(S&&e(I.variables(),this.id)!==-1&&!k.type.is_variable(I))return null;var y={};return y[this.id]=I,new qe(y)},Ue.prototype.unify=function(I,S){return k.type.is_number(I)&&this.value===I.value&&this.is_float===I.is_float?new qe:null},q.prototype.unify=function(I,S){if(k.type.is_term(I)&&this.indicator===I.indicator){for(var y=new qe,R=0;R=0){var R=this.args[0].value,Z=Math.floor(R/26),te=R%26;return"ABCDEFGHIJKLMNOPQRSTUVWXYZ"[te]+(Z!==0?Z:"")}switch(this.indicator){case"[]/0":case"{}/0":case"!/0":return this.id;case"{}/1":return"{"+this.args[0].toString(I)+"}";case"./2":for(var ne="["+this.args[0].toString(I),Ae=this.args[1];Ae.indicator==="./2";)ne+=", "+Ae.args[0].toString(I),Ae=Ae.args[1];return Ae.indicator!=="[]/0"&&(ne+="|"+Ae.toString(I)),ne+="]",ne;case",/2":return"("+this.args[0].toString(I)+", "+this.args[1].toString(I)+")";default:var Re=this.id,Le=I.session?I.session.lookup_operator(this.id,this.args.length):null;if(I.session===void 0||I.ignore_ops||Le===null)return I.quoted&&!/^(!|,|;|[a-z][0-9a-zA-Z_]*)$/.test(Re)&&Re!=="{}"&&Re!=="[]"&&(Re="'"+x(Re)+"'"),Re+(this.args.length?"("+o(this.args,function(sr){return sr.toString(I)}).join(", ")+")":"");var lt=Le.priority>S.priority||Le.priority===S.priority&&(Le.class==="xfy"&&this.indicator!==S.indicator||Le.class==="yfx"&&this.indicator!==S.indicator||this.indicator===S.indicator&&Le.class==="yfx"&&y==="right"||this.indicator===S.indicator&&Le.class==="xfy"&&y==="left");Le.indicator=this.indicator;var mt=lt?"(":"",qt=lt?")":"";return this.args.length===0?"("+this.id+")":["fy","fx"].indexOf(Le.class)!==-1?mt+Re+" "+this.args[0].toString(I,Le)+qt:["yf","xf"].indexOf(Le.class)!==-1?mt+this.args[0].toString(I,Le)+" "+Re+qt:mt+this.args[0].toString(I,Le,"left")+" "+this.id+" "+this.args[1].toString(I,Le,"right")+qt}},He.prototype.toString=function(I){return"("+this.id+")"},qe.prototype.toString=function(I){var S="{";for(var y in this.links)!this.links.hasOwnProperty(y)||(S!=="{"&&(S+=", "),S+=y+"/"+this.links[y].toString(I));return S+="}",S},Fe.prototype.toString=function(I){return this.goal===null?"<"+this.substitution.toString(I)+">":"<"+this.goal.toString(I)+", "+this.substitution.toString(I)+">"},je.prototype.toString=function(I){return this.body?this.head.toString(I)+" :- "+this.body.toString(I)+".":this.head.toString(I)+"."},We.prototype.toString=function(I){for(var S="",y=0;y=0;Z--)R=new q(".",[S[Z],R]);return R}return new q(this.id,o(this.args,function(te){return te.apply(I)}),this.ref)},He.prototype.apply=function(I){return this},je.prototype.apply=function(I){return new je(this.head.apply(I),this.body!==null?this.body.apply(I):null)},qe.prototype.apply=function(I){var S,y={};for(S in this.links)!this.links.hasOwnProperty(S)||(y[S]=this.links[S].apply(I));return new qe(y)},q.prototype.select=function(){for(var I=this;I.indicator===",/2";)I=I.args[0];return I},q.prototype.replace=function(I){return this.indicator===",/2"?this.args[0].indicator===",/2"?new q(",",[this.args[0].replace(I),this.args[1]]):I===null?this.args[1]:new q(",",[I,this.args[1]]):I},q.prototype.search=function(I){if(k.type.is_term(I)&&I.ref!==void 0&&this.ref===I.ref)return!0;for(var S=0;SS&&R0&&(S=this.head_point().substitution.domain());e(S,k.format_variable(this.session.rename))!==-1;)this.session.rename++;if(I.id==="_")return new Se(k.format_variable(this.session.rename));this.session.renamed_variables[I.id]=k.format_variable(this.session.rename)}return new Se(this.session.renamed_variables[I.id])},We.prototype.next_free_variable=function(){return this.thread.next_free_variable()},pt.prototype.next_free_variable=function(){this.session.rename++;var I=[];for(this.points.length>0&&(I=this.head_point().substitution.domain());e(I,k.format_variable(this.session.rename))!==-1;)this.session.rename++;return new Se(k.format_variable(this.session.rename))},We.prototype.is_public_predicate=function(I){return!this.public_predicates.hasOwnProperty(I)||this.public_predicates[I]===!0},pt.prototype.is_public_predicate=function(I){return this.session.is_public_predicate(I)},We.prototype.is_multifile_predicate=function(I){return this.multifile_predicates.hasOwnProperty(I)&&this.multifile_predicates[I]===!0},pt.prototype.is_multifile_predicate=function(I){return this.session.is_multifile_predicate(I)},We.prototype.prepend=function(I){return this.thread.prepend(I)},pt.prototype.prepend=function(I){for(var S=I.length-1;S>=0;S--)this.points.push(I[S])},We.prototype.success=function(I,S){return this.thread.success(I,S)},pt.prototype.success=function(I,y){var y=typeof y>"u"?I:y;this.prepend([new Fe(I.goal.replace(null),I.substitution,y)])},We.prototype.throw_error=function(I){return this.thread.throw_error(I)},pt.prototype.throw_error=function(I){this.prepend([new Fe(new q("throw",[I]),new qe,null,null)])},We.prototype.step_rule=function(I,S){return this.thread.step_rule(I,S)},pt.prototype.step_rule=function(I,S){var y=S.indicator;if(I==="user"&&(I=null),I===null&&this.session.rules.hasOwnProperty(y))return this.session.rules[y];for(var R=I===null?this.session.modules:e(this.session.modules,I)===-1?[]:[I],Z=0;Z1)&&this.again()},We.prototype.answers=function(I,S,y){return this.thread.answers(I,S,y)},pt.prototype.answers=function(I,S,y){var R=S||1e3,Z=this;if(S<=0){y&&y();return}this.answer(function(te){I(te),te!==!1?setTimeout(function(){Z.answers(I,S-1,y)},1):y&&y()})},We.prototype.again=function(I){return this.thread.again(I)},pt.prototype.again=function(I){for(var S,y=Date.now();this.__calls.length>0;){for(this.warnings=[],I!==!1&&(this.current_limit=this.session.limit);this.current_limit>0&&this.points.length>0&&this.head_point().goal!==null&&!k.type.is_error(this.head_point().goal);)if(this.current_limit--,this.step()===!0)return;var R=Date.now();this.cpu_time_last=R-y,this.cpu_time+=this.cpu_time_last;var Z=this.__calls.shift();this.current_limit<=0?Z(null):this.points.length===0?Z(!1):k.type.is_error(this.head_point().goal)?(S=this.session.format_error(this.points.pop()),this.points=[],Z(S)):(this.debugger&&this.debugger_states.push(this.head_point()),S=this.session.format_success(this.points.pop()),Z(S))}},We.prototype.unfold=function(I){if(I.body===null)return!1;var S=I.head,y=I.body,R=y.select(),Z=new pt(this),te=[];Z.add_goal(R),Z.step();for(var ne=Z.points.length-1;ne>=0;ne--){var Ae=Z.points[ne],Re=S.apply(Ae.substitution),Le=y.replace(Ae.goal);Le!==null&&(Le=Le.apply(Ae.substitution)),te.push(new je(Re,Le))}var lt=this.rules[S.indicator],mt=e(lt,I);return te.length>0&&mt!==-1?(lt.splice.apply(lt,[mt,1].concat(te)),!0):!1},pt.prototype.unfold=function(I){return this.session.unfold(I)},Se.prototype.interpret=function(I){return k.error.instantiation(I.level)},Ue.prototype.interpret=function(I){return this},q.prototype.interpret=function(I){return k.type.is_unitary_list(this)?this.args[0].interpret(I):k.operate(I,this)},Se.prototype.compare=function(I){return this.idI.id?1:0},Ue.prototype.compare=function(I){if(this.value===I.value&&this.is_float===I.is_float)return 0;if(this.valueI.value)return 1},q.prototype.compare=function(I){if(this.args.lengthI.args.length||this.args.length===I.args.length&&this.id>I.id)return 1;for(var S=0;SR)return 1;if(I.constructor===Ue){if(I.is_float&&S.is_float)return 0;if(I.is_float)return-1;if(S.is_float)return 1}return 0},is_substitution:function(I){return I instanceof qe},is_state:function(I){return I instanceof Fe},is_rule:function(I){return I instanceof je},is_variable:function(I){return I instanceof Se},is_stream:function(I){return I instanceof He},is_anonymous_var:function(I){return I instanceof Se&&I.id==="_"},is_callable:function(I){return I instanceof q},is_number:function(I){return I instanceof Ue},is_integer:function(I){return I instanceof Ue&&!I.is_float},is_float:function(I){return I instanceof Ue&&I.is_float},is_term:function(I){return I instanceof q},is_atom:function(I){return I instanceof q&&I.args.length===0},is_ground:function(I){if(I instanceof Se)return!1;if(I instanceof q){for(var S=0;S0},is_list:function(I){return I instanceof q&&(I.indicator==="[]/0"||I.indicator==="./2")},is_empty_list:function(I){return I instanceof q&&I.indicator==="[]/0"},is_non_empty_list:function(I){return I instanceof q&&I.indicator==="./2"},is_fully_list:function(I){for(;I instanceof q&&I.indicator==="./2";)I=I.args[1];return I instanceof Se||I instanceof q&&I.indicator==="[]/0"},is_instantiated_list:function(I){for(;I instanceof q&&I.indicator==="./2";)I=I.args[1];return I instanceof q&&I.indicator==="[]/0"},is_unitary_list:function(I){return I instanceof q&&I.indicator==="./2"&&I.args[1]instanceof q&&I.args[1].indicator==="[]/0"},is_character:function(I){return I instanceof q&&(I.id.length===1||I.id.length>0&&I.id.length<=2&&n(I.id,0)>=65536)},is_character_code:function(I){return I instanceof Ue&&!I.is_float&&I.value>=0&&I.value<=1114111},is_byte:function(I){return I instanceof Ue&&!I.is_float&&I.value>=0&&I.value<=255},is_operator:function(I){return I instanceof q&&k.arithmetic.evaluation[I.indicator]},is_directive:function(I){return I instanceof q&&k.directive[I.indicator]!==void 0},is_builtin:function(I){return I instanceof q&&k.predicate[I.indicator]!==void 0},is_error:function(I){return I instanceof q&&I.indicator==="throw/1"},is_predicate_indicator:function(I){return I instanceof q&&I.indicator==="//2"&&I.args[0]instanceof q&&I.args[0].args.length===0&&I.args[1]instanceof Ue&&I.args[1].is_float===!1},is_flag:function(I){return I instanceof q&&I.args.length===0&&k.flag[I.id]!==void 0},is_value_flag:function(I,S){if(!k.type.is_flag(I))return!1;for(var y in k.flag[I.id].allowed)if(!!k.flag[I.id].allowed.hasOwnProperty(y)&&k.flag[I.id].allowed[y].equals(S))return!0;return!1},is_io_mode:function(I){return k.type.is_atom(I)&&["read","write","append"].indexOf(I.id)!==-1},is_stream_option:function(I){return k.type.is_term(I)&&(I.indicator==="alias/1"&&k.type.is_atom(I.args[0])||I.indicator==="reposition/1"&&k.type.is_atom(I.args[0])&&(I.args[0].id==="true"||I.args[0].id==="false")||I.indicator==="type/1"&&k.type.is_atom(I.args[0])&&(I.args[0].id==="text"||I.args[0].id==="binary")||I.indicator==="eof_action/1"&&k.type.is_atom(I.args[0])&&(I.args[0].id==="error"||I.args[0].id==="eof_code"||I.args[0].id==="reset"))},is_stream_position:function(I){return k.type.is_integer(I)&&I.value>=0||k.type.is_atom(I)&&(I.id==="end_of_stream"||I.id==="past_end_of_stream")},is_stream_property:function(I){return k.type.is_term(I)&&(I.indicator==="input/0"||I.indicator==="output/0"||I.indicator==="alias/1"&&(k.type.is_variable(I.args[0])||k.type.is_atom(I.args[0]))||I.indicator==="file_name/1"&&(k.type.is_variable(I.args[0])||k.type.is_atom(I.args[0]))||I.indicator==="position/1"&&(k.type.is_variable(I.args[0])||k.type.is_stream_position(I.args[0]))||I.indicator==="reposition/1"&&(k.type.is_variable(I.args[0])||k.type.is_atom(I.args[0])&&(I.args[0].id==="true"||I.args[0].id==="false"))||I.indicator==="type/1"&&(k.type.is_variable(I.args[0])||k.type.is_atom(I.args[0])&&(I.args[0].id==="text"||I.args[0].id==="binary"))||I.indicator==="mode/1"&&(k.type.is_variable(I.args[0])||k.type.is_atom(I.args[0])&&(I.args[0].id==="read"||I.args[0].id==="write"||I.args[0].id==="append"))||I.indicator==="eof_action/1"&&(k.type.is_variable(I.args[0])||k.type.is_atom(I.args[0])&&(I.args[0].id==="error"||I.args[0].id==="eof_code"||I.args[0].id==="reset"))||I.indicator==="end_of_stream/1"&&(k.type.is_variable(I.args[0])||k.type.is_atom(I.args[0])&&(I.args[0].id==="at"||I.args[0].id==="past"||I.args[0].id==="not")))},is_streamable:function(I){return I.__proto__.stream!==void 0},is_read_option:function(I){return k.type.is_term(I)&&["variables/1","variable_names/1","singletons/1"].indexOf(I.indicator)!==-1},is_write_option:function(I){return k.type.is_term(I)&&(I.indicator==="quoted/1"&&k.type.is_atom(I.args[0])&&(I.args[0].id==="true"||I.args[0].id==="false")||I.indicator==="ignore_ops/1"&&k.type.is_atom(I.args[0])&&(I.args[0].id==="true"||I.args[0].id==="false")||I.indicator==="numbervars/1"&&k.type.is_atom(I.args[0])&&(I.args[0].id==="true"||I.args[0].id==="false"))},is_close_option:function(I){return k.type.is_term(I)&&I.indicator==="force/1"&&k.type.is_atom(I.args[0])&&(I.args[0].id==="true"||I.args[0].id==="false")},is_modifiable_flag:function(I){return k.type.is_flag(I)&&k.flag[I.id].changeable},is_module:function(I){return I instanceof q&&I.indicator==="library/1"&&I.args[0]instanceof q&&I.args[0].args.length===0&&k.module[I.args[0].id]!==void 0}},arithmetic:{evaluation:{"e/0":{type_args:null,type_result:!0,fn:function(I){return Math.E}},"pi/0":{type_args:null,type_result:!0,fn:function(I){return Math.PI}},"tau/0":{type_args:null,type_result:!0,fn:function(I){return 2*Math.PI}},"epsilon/0":{type_args:null,type_result:!0,fn:function(I){return Number.EPSILON}},"+/1":{type_args:null,type_result:null,fn:function(I,S){return I}},"-/1":{type_args:null,type_result:null,fn:function(I,S){return-I}},"\\/1":{type_args:!1,type_result:!1,fn:function(I,S){return~I}},"abs/1":{type_args:null,type_result:null,fn:function(I,S){return Math.abs(I)}},"sign/1":{type_args:null,type_result:null,fn:function(I,S){return Math.sign(I)}},"float_integer_part/1":{type_args:!0,type_result:!1,fn:function(I,S){return parseInt(I)}},"float_fractional_part/1":{type_args:!0,type_result:!0,fn:function(I,S){return I-parseInt(I)}},"float/1":{type_args:null,type_result:!0,fn:function(I,S){return parseFloat(I)}},"floor/1":{type_args:!0,type_result:!1,fn:function(I,S){return Math.floor(I)}},"truncate/1":{type_args:!0,type_result:!1,fn:function(I,S){return parseInt(I)}},"round/1":{type_args:!0,type_result:!1,fn:function(I,S){return Math.round(I)}},"ceiling/1":{type_args:!0,type_result:!1,fn:function(I,S){return Math.ceil(I)}},"sin/1":{type_args:null,type_result:!0,fn:function(I,S){return Math.sin(I)}},"cos/1":{type_args:null,type_result:!0,fn:function(I,S){return Math.cos(I)}},"tan/1":{type_args:null,type_result:!0,fn:function(I,S){return Math.tan(I)}},"asin/1":{type_args:null,type_result:!0,fn:function(I,S){return Math.asin(I)}},"acos/1":{type_args:null,type_result:!0,fn:function(I,S){return Math.acos(I)}},"atan/1":{type_args:null,type_result:!0,fn:function(I,S){return Math.atan(I)}},"atan2/2":{type_args:null,type_result:!0,fn:function(I,S,y){return Math.atan2(I,S)}},"exp/1":{type_args:null,type_result:!0,fn:function(I,S){return Math.exp(I)}},"sqrt/1":{type_args:null,type_result:!0,fn:function(I,S){return Math.sqrt(I)}},"log/1":{type_args:null,type_result:!0,fn:function(I,S){return I>0?Math.log(I):k.error.evaluation("undefined",S.__call_indicator)}},"+/2":{type_args:null,type_result:null,fn:function(I,S,y){return I+S}},"-/2":{type_args:null,type_result:null,fn:function(I,S,y){return I-S}},"*/2":{type_args:null,type_result:null,fn:function(I,S,y){return I*S}},"//2":{type_args:null,type_result:!0,fn:function(I,S,y){return S?I/S:k.error.evaluation("zero_division",y.__call_indicator)}},"///2":{type_args:!1,type_result:!1,fn:function(I,S,y){return S?parseInt(I/S):k.error.evaluation("zero_division",y.__call_indicator)}},"**/2":{type_args:null,type_result:!0,fn:function(I,S,y){return Math.pow(I,S)}},"^/2":{type_args:null,type_result:null,fn:function(I,S,y){return Math.pow(I,S)}},"<>/2":{type_args:!1,type_result:!1,fn:function(I,S,y){return I>>S}},"/\\/2":{type_args:!1,type_result:!1,fn:function(I,S,y){return I&S}},"\\//2":{type_args:!1,type_result:!1,fn:function(I,S,y){return I|S}},"xor/2":{type_args:!1,type_result:!1,fn:function(I,S,y){return I^S}},"rem/2":{type_args:!1,type_result:!1,fn:function(I,S,y){return S?I%S:k.error.evaluation("zero_division",y.__call_indicator)}},"mod/2":{type_args:!1,type_result:!1,fn:function(I,S,y){return S?I-parseInt(I/S)*S:k.error.evaluation("zero_division",y.__call_indicator)}},"max/2":{type_args:null,type_result:null,fn:function(I,S,y){return Math.max(I,S)}},"min/2":{type_args:null,type_result:null,fn:function(I,S,y){return Math.min(I,S)}}}},directive:{"dynamic/1":function(I,S){var y=S.args[0];if(k.type.is_variable(y))I.throw_error(k.error.instantiation(S.indicator));else if(!k.type.is_compound(y)||y.indicator!=="//2")I.throw_error(k.error.type("predicate_indicator",y,S.indicator));else if(k.type.is_variable(y.args[0])||k.type.is_variable(y.args[1]))I.throw_error(k.error.instantiation(S.indicator));else if(!k.type.is_atom(y.args[0]))I.throw_error(k.error.type("atom",y.args[0],S.indicator));else if(!k.type.is_integer(y.args[1]))I.throw_error(k.error.type("integer",y.args[1],S.indicator));else{var R=S.args[0].args[0].id+"/"+S.args[0].args[1].value;I.session.public_predicates[R]=!0,I.session.rules[R]||(I.session.rules[R]=[])}},"multifile/1":function(I,S){var y=S.args[0];k.type.is_variable(y)?I.throw_error(k.error.instantiation(S.indicator)):!k.type.is_compound(y)||y.indicator!=="//2"?I.throw_error(k.error.type("predicate_indicator",y,S.indicator)):k.type.is_variable(y.args[0])||k.type.is_variable(y.args[1])?I.throw_error(k.error.instantiation(S.indicator)):k.type.is_atom(y.args[0])?k.type.is_integer(y.args[1])?I.session.multifile_predicates[S.args[0].args[0].id+"/"+S.args[0].args[1].value]=!0:I.throw_error(k.error.type("integer",y.args[1],S.indicator)):I.throw_error(k.error.type("atom",y.args[0],S.indicator))},"set_prolog_flag/2":function(I,S){var y=S.args[0],R=S.args[1];k.type.is_variable(y)||k.type.is_variable(R)?I.throw_error(k.error.instantiation(S.indicator)):k.type.is_atom(y)?k.type.is_flag(y)?k.type.is_value_flag(y,R)?k.type.is_modifiable_flag(y)?I.session.flag[y.id]=R:I.throw_error(k.error.permission("modify","flag",y)):I.throw_error(k.error.domain("flag_value",new q("+",[y,R]),S.indicator)):I.throw_error(k.error.domain("prolog_flag",y,S.indicator)):I.throw_error(k.error.type("atom",y,S.indicator))},"use_module/1":function(I,S){var y=S.args[0];if(k.type.is_variable(y))I.throw_error(k.error.instantiation(S.indicator));else if(!k.type.is_term(y))I.throw_error(k.error.type("term",y,S.indicator));else if(k.type.is_module(y)){var R=y.args[0].id;e(I.session.modules,R)===-1&&I.session.modules.push(R)}},"char_conversion/2":function(I,S){var y=S.args[0],R=S.args[1];k.type.is_variable(y)||k.type.is_variable(R)?I.throw_error(k.error.instantiation(S.indicator)):k.type.is_character(y)?k.type.is_character(R)?y.id===R.id?delete I.session.__char_conversion[y.id]:I.session.__char_conversion[y.id]=R.id:I.throw_error(k.error.type("character",R,S.indicator)):I.throw_error(k.error.type("character",y,S.indicator))},"op/3":function(I,S){var y=S.args[0],R=S.args[1],Z=S.args[2];if(k.type.is_variable(y)||k.type.is_variable(R)||k.type.is_variable(Z))I.throw_error(k.error.instantiation(S.indicator));else if(!k.type.is_integer(y))I.throw_error(k.error.type("integer",y,S.indicator));else if(!k.type.is_atom(R))I.throw_error(k.error.type("atom",R,S.indicator));else if(!k.type.is_atom(Z))I.throw_error(k.error.type("atom",Z,S.indicator));else if(y.value<0||y.value>1200)I.throw_error(k.error.domain("operator_priority",y,S.indicator));else if(Z.id===",")I.throw_error(k.error.permission("modify","operator",Z,S.indicator));else if(Z.id==="|"&&(y.value<1001||R.id.length!==3))I.throw_error(k.error.permission("modify","operator",Z,S.indicator));else if(["fy","fx","yf","xf","xfx","yfx","xfy"].indexOf(R.id)===-1)I.throw_error(k.error.domain("operator_specifier",R,S.indicator));else{var te={prefix:null,infix:null,postfix:null};for(var ne in I.session.__operators)if(!!I.session.__operators.hasOwnProperty(ne)){var Ae=I.session.__operators[ne][Z.id];Ae&&(e(Ae,"fx")!==-1&&(te.prefix={priority:ne,type:"fx"}),e(Ae,"fy")!==-1&&(te.prefix={priority:ne,type:"fy"}),e(Ae,"xf")!==-1&&(te.postfix={priority:ne,type:"xf"}),e(Ae,"yf")!==-1&&(te.postfix={priority:ne,type:"yf"}),e(Ae,"xfx")!==-1&&(te.infix={priority:ne,type:"xfx"}),e(Ae,"xfy")!==-1&&(te.infix={priority:ne,type:"xfy"}),e(Ae,"yfx")!==-1&&(te.infix={priority:ne,type:"yfx"}))}var Re;switch(R.id){case"fy":case"fx":Re="prefix";break;case"yf":case"xf":Re="postfix";break;default:Re="infix";break}if(((te.prefix&&Re==="prefix"||te.postfix&&Re==="postfix"||te.infix&&Re==="infix")&&te[Re].type!==R.id||te.infix&&Re==="postfix"||te.postfix&&Re==="infix")&&y.value!==0)I.throw_error(k.error.permission("create","operator",Z,S.indicator));else return te[Re]&&(Ke(I.session.__operators[te[Re].priority][Z.id],R.id),I.session.__operators[te[Re].priority][Z.id].length===0&&delete I.session.__operators[te[Re].priority][Z.id]),y.value>0&&(I.session.__operators[y.value]||(I.session.__operators[y.value.toString()]={}),I.session.__operators[y.value][Z.id]||(I.session.__operators[y.value][Z.id]=[]),I.session.__operators[y.value][Z.id].push(R.id)),!0}}},predicate:{"op/3":function(I,S,y){k.directive["op/3"](I,y)&&I.success(S)},"current_op/3":function(I,S,y){var R=y.args[0],Z=y.args[1],te=y.args[2],ne=[];for(var Ae in I.session.__operators)for(var Re in I.session.__operators[Ae])for(var Le=0;Le/2"){var R=I.points,Z=I.session.format_success,te=I.session.format_error;I.session.format_success=function(Le){return Le.substitution},I.session.format_error=function(Le){return Le.goal},I.points=[new Fe(y.args[0].args[0],S.substitution,S)];var ne=function(Le){I.points=R,I.session.format_success=Z,I.session.format_error=te,Le===!1?I.prepend([new Fe(S.goal.replace(y.args[1]),S.substitution,S)]):k.type.is_error(Le)?I.throw_error(Le.args[0]):Le===null?(I.prepend([S]),I.__calls.shift()(null)):I.prepend([new Fe(S.goal.replace(y.args[0].args[1]).apply(Le),S.substitution.apply(Le),S)])};I.__calls.unshift(ne)}else{var Ae=new Fe(S.goal.replace(y.args[0]),S.substitution,S),Re=new Fe(S.goal.replace(y.args[1]),S.substitution,S);I.prepend([Ae,Re])}},"!/0":function(I,S,y){var R,Z,te=[];for(R=S,Z=null;R.parent!==null&&R.parent.goal.search(y);)if(Z=R,R=R.parent,R.goal!==null){var ne=R.goal.select();if(ne&&ne.id==="call"&&ne.search(y)){R=Z;break}}for(var Ae=I.points.length-1;Ae>=0;Ae--){for(var Re=I.points[Ae],Le=Re.parent;Le!==null&&Le!==R.parent;)Le=Le.parent;Le===null&&Le!==R.parent&&te.push(Re)}I.points=te.reverse(),I.success(S)},"\\+/1":function(I,S,y){var R=y.args[0];k.type.is_variable(R)?I.throw_error(k.error.instantiation(I.level)):k.type.is_callable(R)?I.prepend([new Fe(S.goal.replace(new q(",",[new q(",",[new q("call",[R]),new q("!",[])]),new q("fail",[])])),S.substitution,S),new Fe(S.goal.replace(null),S.substitution,S)]):I.throw_error(k.error.type("callable",R,I.level))},"->/2":function(I,S,y){var R=S.goal.replace(new q(",",[y.args[0],new q(",",[new q("!"),y.args[1]])]));I.prepend([new Fe(R,S.substitution,S)])},"fail/0":function(I,S,y){},"false/0":function(I,S,y){},"true/0":function(I,S,y){I.success(S)},"call/1":le(1),"call/2":le(2),"call/3":le(3),"call/4":le(4),"call/5":le(5),"call/6":le(6),"call/7":le(7),"call/8":le(8),"once/1":function(I,S,y){var R=y.args[0];I.prepend([new Fe(S.goal.replace(new q(",",[new q("call",[R]),new q("!",[])])),S.substitution,S)])},"forall/2":function(I,S,y){var R=y.args[0],Z=y.args[1];I.prepend([new Fe(S.goal.replace(new q("\\+",[new q(",",[new q("call",[R]),new q("\\+",[new q("call",[Z])])])])),S.substitution,S)])},"repeat/0":function(I,S,y){I.prepend([new Fe(S.goal.replace(null),S.substitution,S),S])},"throw/1":function(I,S,y){k.type.is_variable(y.args[0])?I.throw_error(k.error.instantiation(I.level)):I.throw_error(y.args[0])},"catch/3":function(I,S,y){var R=I.points;I.points=[],I.prepend([new Fe(y.args[0],S.substitution,S)]);var Z=I.session.format_success,te=I.session.format_error;I.session.format_success=function(Ae){return Ae.substitution},I.session.format_error=function(Ae){return Ae.goal};var ne=function(Ae){var Re=I.points;if(I.points=R,I.session.format_success=Z,I.session.format_error=te,k.type.is_error(Ae)){for(var Le=[],lt=I.points.length-1;lt>=0;lt--){for(var sr=I.points[lt],mt=sr.parent;mt!==null&&mt!==S.parent;)mt=mt.parent;mt===null&&mt!==S.parent&&Le.push(sr)}I.points=Le;var qt=I.get_flag("occurs_check").indicator==="true/0",sr=new Fe,Pt=k.unify(Ae.args[0],y.args[1],qt);Pt!==null?(sr.substitution=S.substitution.apply(Pt),sr.goal=S.goal.replace(y.args[2]).apply(Pt),sr.parent=S,I.prepend([sr])):I.throw_error(Ae.args[0])}else if(Ae!==!1){for(var mn=Ae===null?[]:[new Fe(S.goal.apply(Ae).replace(null),S.substitution.apply(Ae),S)],Or=[],lt=Re.length-1;lt>=0;lt--){Or.push(Re[lt]);var Fr=Re[lt].goal!==null?Re[lt].goal.select():null;if(k.type.is_term(Fr)&&Fr.indicator==="!/0")break}var Ur=o(Or,function(fn){return fn.goal===null&&(fn.goal=new q("true",[])),fn=new Fe(S.goal.replace(new q("catch",[fn.goal,y.args[1],y.args[2]])),S.substitution.apply(fn.substitution),fn.parent),fn.exclude=y.args[0].variables(),fn}).reverse();I.prepend(Ur),I.prepend(mn),Ae===null&&(this.current_limit=0,I.__calls.shift()(null))}};I.__calls.unshift(ne)},"=/2":function(I,S,y){var R=I.get_flag("occurs_check").indicator==="true/0",Z=new Fe,te=k.unify(y.args[0],y.args[1],R);te!==null&&(Z.goal=S.goal.apply(te).replace(null),Z.substitution=S.substitution.apply(te),Z.parent=S,I.prepend([Z]))},"unify_with_occurs_check/2":function(I,S,y){var R=new Fe,Z=k.unify(y.args[0],y.args[1],!0);Z!==null&&(R.goal=S.goal.apply(Z).replace(null),R.substitution=S.substitution.apply(Z),R.parent=S,I.prepend([R]))},"\\=/2":function(I,S,y){var R=I.get_flag("occurs_check").indicator==="true/0",Z=k.unify(y.args[0],y.args[1],R);Z===null&&I.success(S)},"subsumes_term/2":function(I,S,y){var R=I.get_flag("occurs_check").indicator==="true/0",Z=k.unify(y.args[1],y.args[0],R);Z!==null&&y.args[1].apply(Z).equals(y.args[1])&&I.success(S)},"findall/3":function(I,S,y){var R=y.args[0],Z=y.args[1],te=y.args[2];if(k.type.is_variable(Z))I.throw_error(k.error.instantiation(y.indicator));else if(!k.type.is_callable(Z))I.throw_error(k.error.type("callable",Z,y.indicator));else if(!k.type.is_variable(te)&&!k.type.is_list(te))I.throw_error(k.error.type("list",te,y.indicator));else{var ne=I.next_free_variable(),Ae=new q(",",[Z,new q("=",[ne,R])]),Re=I.points,Le=I.session.limit,lt=I.session.format_success;I.session.format_success=function(sr){return sr.substitution},I.add_goal(Ae,!0,S);var mt=[],qt=function(sr){if(sr!==!1&&sr!==null&&!k.type.is_error(sr))I.__calls.unshift(qt),mt.push(sr.links[ne.id]),I.session.limit=I.current_limit;else if(I.points=Re,I.session.limit=Le,I.session.format_success=lt,k.type.is_error(sr))I.throw_error(sr.args[0]);else if(I.current_limit>0){for(var Pt=new q("[]"),mn=mt.length-1;mn>=0;mn--)Pt=new q(".",[mt[mn],Pt]);I.prepend([new Fe(S.goal.replace(new q("=",[te,Pt])),S.substitution,S)])}};I.__calls.unshift(qt)}},"bagof/3":function(I,S,y){var R,Z=y.args[0],te=y.args[1],ne=y.args[2];if(k.type.is_variable(te))I.throw_error(k.error.instantiation(y.indicator));else if(!k.type.is_callable(te))I.throw_error(k.error.type("callable",te,y.indicator));else if(!k.type.is_variable(ne)&&!k.type.is_list(ne))I.throw_error(k.error.type("list",ne,y.indicator));else{var Ae=I.next_free_variable(),Re;te.indicator==="^/2"?(Re=te.args[0].variables(),te=te.args[1]):Re=[],Re=Re.concat(Z.variables());for(var Le=te.variables().filter(function(Ur){return e(Re,Ur)===-1}),lt=new q("[]"),mt=Le.length-1;mt>=0;mt--)lt=new q(".",[new Se(Le[mt]),lt]);var qt=new q(",",[te,new q("=",[Ae,new q(",",[lt,Z])])]),sr=I.points,Pt=I.session.limit,mn=I.session.format_success;I.session.format_success=function(Ur){return Ur.substitution},I.add_goal(qt,!0,S);var Or=[],Fr=function(Ur){if(Ur!==!1&&Ur!==null&&!k.type.is_error(Ur)){I.__calls.unshift(Fr);var fn=!1,vn=Ur.links[Ae.id].args[0],ws=Ur.links[Ae.id].args[1];for(var _i in Or)if(!!Or.hasOwnProperty(_i)){var wo=Or[_i];if(wo.variables.equals(vn)){wo.answers.push(ws),fn=!0;break}}fn||Or.push({variables:vn,answers:[ws]}),I.session.limit=I.current_limit}else if(I.points=sr,I.session.limit=Pt,I.session.format_success=mn,k.type.is_error(Ur))I.throw_error(Ur.args[0]);else if(I.current_limit>0){for(var Bo=[],cs=0;cs=0;$s--)gn=new q(".",[Ur[$s],gn]);Bo.push(new Fe(S.goal.replace(new q(",",[new q("=",[lt,Or[cs].variables]),new q("=",[ne,gn])])),S.substitution,S))}I.prepend(Bo)}};I.__calls.unshift(Fr)}},"setof/3":function(I,S,y){var R,Z=y.args[0],te=y.args[1],ne=y.args[2];if(k.type.is_variable(te))I.throw_error(k.error.instantiation(y.indicator));else if(!k.type.is_callable(te))I.throw_error(k.error.type("callable",te,y.indicator));else if(!k.type.is_variable(ne)&&!k.type.is_list(ne))I.throw_error(k.error.type("list",ne,y.indicator));else{var Ae=I.next_free_variable(),Re;te.indicator==="^/2"?(Re=te.args[0].variables(),te=te.args[1]):Re=[],Re=Re.concat(Z.variables());for(var Le=te.variables().filter(function(Ur){return e(Re,Ur)===-1}),lt=new q("[]"),mt=Le.length-1;mt>=0;mt--)lt=new q(".",[new Se(Le[mt]),lt]);var qt=new q(",",[te,new q("=",[Ae,new q(",",[lt,Z])])]),sr=I.points,Pt=I.session.limit,mn=I.session.format_success;I.session.format_success=function(Ur){return Ur.substitution},I.add_goal(qt,!0,S);var Or=[],Fr=function(Ur){if(Ur!==!1&&Ur!==null&&!k.type.is_error(Ur)){I.__calls.unshift(Fr);var fn=!1,vn=Ur.links[Ae.id].args[0],ws=Ur.links[Ae.id].args[1];for(var _i in Or)if(!!Or.hasOwnProperty(_i)){var wo=Or[_i];if(wo.variables.equals(vn)){wo.answers.push(ws),fn=!0;break}}fn||Or.push({variables:vn,answers:[ws]}),I.session.limit=I.current_limit}else if(I.points=sr,I.session.limit=Pt,I.session.format_success=mn,k.type.is_error(Ur))I.throw_error(Ur.args[0]);else if(I.current_limit>0){for(var Bo=[],cs=0;cs=0;$s--)gn=new q(".",[Ur[$s],gn]);Bo.push(new Fe(S.goal.replace(new q(",",[new q("=",[lt,Or[cs].variables]),new q("=",[ne,gn])])),S.substitution,S))}I.prepend(Bo)}};I.__calls.unshift(Fr)}},"functor/3":function(I,S,y){var R,Z=y.args[0],te=y.args[1],ne=y.args[2];if(k.type.is_variable(Z)&&(k.type.is_variable(te)||k.type.is_variable(ne)))I.throw_error(k.error.instantiation("functor/3"));else if(!k.type.is_variable(ne)&&!k.type.is_integer(ne))I.throw_error(k.error.type("integer",y.args[2],"functor/3"));else if(!k.type.is_variable(te)&&!k.type.is_atomic(te))I.throw_error(k.error.type("atomic",y.args[1],"functor/3"));else if(k.type.is_integer(te)&&k.type.is_integer(ne)&&ne.value!==0)I.throw_error(k.error.type("atom",y.args[1],"functor/3"));else if(k.type.is_variable(Z)){if(y.args[2].value>=0){for(var Ae=[],Re=0;Re0&&R<=y.args[1].args.length){var Z=new q("=",[y.args[1].args[R-1],y.args[2]]);I.prepend([new Fe(S.goal.replace(Z),S.substitution,S)])}}},"=../2":function(I,S,y){var R;if(k.type.is_variable(y.args[0])&&(k.type.is_variable(y.args[1])||k.type.is_non_empty_list(y.args[1])&&k.type.is_variable(y.args[1].args[0])))I.throw_error(k.error.instantiation(y.indicator));else if(!k.type.is_fully_list(y.args[1]))I.throw_error(k.error.type("list",y.args[1],y.indicator));else if(k.type.is_variable(y.args[0])){if(!k.type.is_variable(y.args[1])){var te=[];for(R=y.args[1].args[1];R.indicator==="./2";)te.push(R.args[0]),R=R.args[1];k.type.is_variable(y.args[0])&&k.type.is_variable(R)?I.throw_error(k.error.instantiation(y.indicator)):te.length===0&&k.type.is_compound(y.args[1].args[0])?I.throw_error(k.error.type("atomic",y.args[1].args[0],y.indicator)):te.length>0&&(k.type.is_compound(y.args[1].args[0])||k.type.is_number(y.args[1].args[0]))?I.throw_error(k.error.type("atom",y.args[1].args[0],y.indicator)):te.length===0?I.prepend([new Fe(S.goal.replace(new q("=",[y.args[1].args[0],y.args[0]],S)),S.substitution,S)]):I.prepend([new Fe(S.goal.replace(new q("=",[new q(y.args[1].args[0].id,te),y.args[0]])),S.substitution,S)])}}else{if(k.type.is_atomic(y.args[0]))R=new q(".",[y.args[0],new q("[]")]);else{R=new q("[]");for(var Z=y.args[0].args.length-1;Z>=0;Z--)R=new q(".",[y.args[0].args[Z],R]);R=new q(".",[new q(y.args[0].id),R])}I.prepend([new Fe(S.goal.replace(new q("=",[R,y.args[1]])),S.substitution,S)])}},"copy_term/2":function(I,S,y){var R=y.args[0].rename(I);I.prepend([new Fe(S.goal.replace(new q("=",[R,y.args[1]])),S.substitution,S.parent)])},"term_variables/2":function(I,S,y){var R=y.args[0],Z=y.args[1];if(!k.type.is_fully_list(Z))I.throw_error(k.error.type("list",Z,y.indicator));else{var te=h(o(Ce(R.variables()),function(ne){return new Se(ne)}));I.prepend([new Fe(S.goal.replace(new q("=",[Z,te])),S.substitution,S)])}},"clause/2":function(I,S,y){if(k.type.is_variable(y.args[0]))I.throw_error(k.error.instantiation(y.indicator));else if(!k.type.is_callable(y.args[0]))I.throw_error(k.error.type("callable",y.args[0],y.indicator));else if(!k.type.is_variable(y.args[1])&&!k.type.is_callable(y.args[1]))I.throw_error(k.error.type("callable",y.args[1],y.indicator));else if(I.session.rules[y.args[0].indicator]!==void 0)if(I.is_public_predicate(y.args[0].indicator)){var R=[];for(var Z in I.session.rules[y.args[0].indicator])if(!!I.session.rules[y.args[0].indicator].hasOwnProperty(Z)){var te=I.session.rules[y.args[0].indicator][Z];I.session.renamed_variables={},te=te.rename(I),te.body===null&&(te.body=new q("true"));var ne=new q(",",[new q("=",[te.head,y.args[0]]),new q("=",[te.body,y.args[1]])]);R.push(new Fe(S.goal.replace(ne),S.substitution,S))}I.prepend(R)}else I.throw_error(k.error.permission("access","private_procedure",y.args[0].indicator,y.indicator))},"current_predicate/1":function(I,S,y){var R=y.args[0];if(!k.type.is_variable(R)&&(!k.type.is_compound(R)||R.indicator!=="//2"))I.throw_error(k.error.type("predicate_indicator",R,y.indicator));else if(!k.type.is_variable(R)&&!k.type.is_variable(R.args[0])&&!k.type.is_atom(R.args[0]))I.throw_error(k.error.type("atom",R.args[0],y.indicator));else if(!k.type.is_variable(R)&&!k.type.is_variable(R.args[1])&&!k.type.is_integer(R.args[1]))I.throw_error(k.error.type("integer",R.args[1],y.indicator));else{var Z=[];for(var te in I.session.rules)if(!!I.session.rules.hasOwnProperty(te)){var ne=te.lastIndexOf("/"),Ae=te.substr(0,ne),Re=parseInt(te.substr(ne+1,te.length-(ne+1))),Le=new q("/",[new q(Ae),new Ue(Re,!1)]),lt=new q("=",[Le,R]);Z.push(new Fe(S.goal.replace(lt),S.substitution,S))}I.prepend(Z)}},"asserta/1":function(I,S,y){if(k.type.is_variable(y.args[0]))I.throw_error(k.error.instantiation(y.indicator));else if(!k.type.is_callable(y.args[0]))I.throw_error(k.error.type("callable",y.args[0],y.indicator));else{var R,Z;y.args[0].indicator===":-/2"?(R=y.args[0].args[0],Z=ke(y.args[0].args[1])):(R=y.args[0],Z=null),k.type.is_callable(R)?Z!==null&&!k.type.is_callable(Z)?I.throw_error(k.error.type("callable",Z,y.indicator)):I.is_public_predicate(R.indicator)?(I.session.rules[R.indicator]===void 0&&(I.session.rules[R.indicator]=[]),I.session.public_predicates[R.indicator]=!0,I.session.rules[R.indicator]=[new je(R,Z,!0)].concat(I.session.rules[R.indicator]),I.success(S)):I.throw_error(k.error.permission("modify","static_procedure",R.indicator,y.indicator)):I.throw_error(k.error.type("callable",R,y.indicator))}},"assertz/1":function(I,S,y){if(k.type.is_variable(y.args[0]))I.throw_error(k.error.instantiation(y.indicator));else if(!k.type.is_callable(y.args[0]))I.throw_error(k.error.type("callable",y.args[0],y.indicator));else{var R,Z;y.args[0].indicator===":-/2"?(R=y.args[0].args[0],Z=ke(y.args[0].args[1])):(R=y.args[0],Z=null),k.type.is_callable(R)?Z!==null&&!k.type.is_callable(Z)?I.throw_error(k.error.type("callable",Z,y.indicator)):I.is_public_predicate(R.indicator)?(I.session.rules[R.indicator]===void 0&&(I.session.rules[R.indicator]=[]),I.session.public_predicates[R.indicator]=!0,I.session.rules[R.indicator].push(new je(R,Z,!0)),I.success(S)):I.throw_error(k.error.permission("modify","static_procedure",R.indicator,y.indicator)):I.throw_error(k.error.type("callable",R,y.indicator))}},"retract/1":function(I,S,y){if(k.type.is_variable(y.args[0]))I.throw_error(k.error.instantiation(y.indicator));else if(!k.type.is_callable(y.args[0]))I.throw_error(k.error.type("callable",y.args[0],y.indicator));else{var R,Z;if(y.args[0].indicator===":-/2"?(R=y.args[0].args[0],Z=y.args[0].args[1]):(R=y.args[0],Z=new q("true")),typeof S.retract>"u")if(I.is_public_predicate(R.indicator)){if(I.session.rules[R.indicator]!==void 0){for(var te=[],ne=0;neI.get_flag("max_arity").value)I.throw_error(k.error.representation("max_arity",y.indicator));else{var R=y.args[0].args[0].id+"/"+y.args[0].args[1].value;I.is_public_predicate(R)?(delete I.session.rules[R],I.success(S)):I.throw_error(k.error.permission("modify","static_procedure",R,y.indicator))}},"atom_length/2":function(I,S,y){if(k.type.is_variable(y.args[0]))I.throw_error(k.error.instantiation(y.indicator));else if(!k.type.is_atom(y.args[0]))I.throw_error(k.error.type("atom",y.args[0],y.indicator));else if(!k.type.is_variable(y.args[1])&&!k.type.is_integer(y.args[1]))I.throw_error(k.error.type("integer",y.args[1],y.indicator));else if(k.type.is_integer(y.args[1])&&y.args[1].value<0)I.throw_error(k.error.domain("not_less_than_zero",y.args[1],y.indicator));else{var R=new Ue(y.args[0].id.length,!1);I.prepend([new Fe(S.goal.replace(new q("=",[R,y.args[1]])),S.substitution,S)])}},"atom_concat/3":function(I,S,y){var R,Z,te=y.args[0],ne=y.args[1],Ae=y.args[2];if(k.type.is_variable(Ae)&&(k.type.is_variable(te)||k.type.is_variable(ne)))I.throw_error(k.error.instantiation(y.indicator));else if(!k.type.is_variable(te)&&!k.type.is_atom(te))I.throw_error(k.error.type("atom",te,y.indicator));else if(!k.type.is_variable(ne)&&!k.type.is_atom(ne))I.throw_error(k.error.type("atom",ne,y.indicator));else if(!k.type.is_variable(Ae)&&!k.type.is_atom(Ae))I.throw_error(k.error.type("atom",Ae,y.indicator));else{var Re=k.type.is_variable(te),Le=k.type.is_variable(ne);if(!Re&&!Le)Z=new q("=",[Ae,new q(te.id+ne.id)]),I.prepend([new Fe(S.goal.replace(Z),S.substitution,S)]);else if(Re&&!Le)R=Ae.id.substr(0,Ae.id.length-ne.id.length),R+ne.id===Ae.id&&(Z=new q("=",[te,new q(R)]),I.prepend([new Fe(S.goal.replace(Z),S.substitution,S)]));else if(Le&&!Re)R=Ae.id.substr(te.id.length),te.id+R===Ae.id&&(Z=new q("=",[ne,new q(R)]),I.prepend([new Fe(S.goal.replace(Z),S.substitution,S)]));else{for(var lt=[],mt=0;mt<=Ae.id.length;mt++){var qt=new q(Ae.id.substr(0,mt)),sr=new q(Ae.id.substr(mt));Z=new q(",",[new q("=",[qt,te]),new q("=",[sr,ne])]),lt.push(new Fe(S.goal.replace(Z),S.substitution,S))}I.prepend(lt)}}},"sub_atom/5":function(I,S,y){var R,Z=y.args[0],te=y.args[1],ne=y.args[2],Ae=y.args[3],Re=y.args[4];if(k.type.is_variable(Z))I.throw_error(k.error.instantiation(y.indicator));else if(!k.type.is_variable(te)&&!k.type.is_integer(te))I.throw_error(k.error.type("integer",te,y.indicator));else if(!k.type.is_variable(ne)&&!k.type.is_integer(ne))I.throw_error(k.error.type("integer",ne,y.indicator));else if(!k.type.is_variable(Ae)&&!k.type.is_integer(Ae))I.throw_error(k.error.type("integer",Ae,y.indicator));else if(k.type.is_integer(te)&&te.value<0)I.throw_error(k.error.domain("not_less_than_zero",te,y.indicator));else if(k.type.is_integer(ne)&&ne.value<0)I.throw_error(k.error.domain("not_less_than_zero",ne,y.indicator));else if(k.type.is_integer(Ae)&&Ae.value<0)I.throw_error(k.error.domain("not_less_than_zero",Ae,y.indicator));else{var Le=[],lt=[],mt=[];if(k.type.is_variable(te))for(R=0;R<=Z.id.length;R++)Le.push(R);else Le.push(te.value);if(k.type.is_variable(ne))for(R=0;R<=Z.id.length;R++)lt.push(R);else lt.push(ne.value);if(k.type.is_variable(Ae))for(R=0;R<=Z.id.length;R++)mt.push(R);else mt.push(Ae.value);var qt=[];for(var sr in Le)if(!!Le.hasOwnProperty(sr)){R=Le[sr];for(var Pt in lt)if(!!lt.hasOwnProperty(Pt)){var mn=lt[Pt],Or=Z.id.length-R-mn;if(e(mt,Or)!==-1&&R+mn+Or===Z.id.length){var Fr=Z.id.substr(R,mn);if(Z.id===Z.id.substr(0,R)+Fr+Z.id.substr(R+mn,Or)){var Ur=new q("=",[new q(Fr),Re]),fn=new q("=",[te,new Ue(R)]),vn=new q("=",[ne,new Ue(mn)]),ws=new q("=",[Ae,new Ue(Or)]),_i=new q(",",[new q(",",[new q(",",[fn,vn]),ws]),Ur]);qt.push(new Fe(S.goal.replace(_i),S.substitution,S))}}}}I.prepend(qt)}},"atom_chars/2":function(I,S,y){var R=y.args[0],Z=y.args[1];if(k.type.is_variable(R)&&k.type.is_variable(Z))I.throw_error(k.error.instantiation(y.indicator));else if(!k.type.is_variable(R)&&!k.type.is_atom(R))I.throw_error(k.error.type("atom",R,y.indicator));else if(k.type.is_variable(R)){for(var Ae=Z,Re=k.type.is_variable(R),Le="";Ae.indicator==="./2";){if(k.type.is_character(Ae.args[0]))Le+=Ae.args[0].id;else if(k.type.is_variable(Ae.args[0])&&Re){I.throw_error(k.error.instantiation(y.indicator));return}else if(!k.type.is_variable(Ae.args[0])){I.throw_error(k.error.type("character",Ae.args[0],y.indicator));return}Ae=Ae.args[1]}k.type.is_variable(Ae)&&Re?I.throw_error(k.error.instantiation(y.indicator)):!k.type.is_empty_list(Ae)&&!k.type.is_variable(Ae)?I.throw_error(k.error.type("list",Z,y.indicator)):I.prepend([new Fe(S.goal.replace(new q("=",[new q(Le),R])),S.substitution,S)])}else{for(var te=new q("[]"),ne=R.id.length-1;ne>=0;ne--)te=new q(".",[new q(R.id.charAt(ne)),te]);I.prepend([new Fe(S.goal.replace(new q("=",[Z,te])),S.substitution,S)])}},"atom_codes/2":function(I,S,y){var R=y.args[0],Z=y.args[1];if(k.type.is_variable(R)&&k.type.is_variable(Z))I.throw_error(k.error.instantiation(y.indicator));else if(!k.type.is_variable(R)&&!k.type.is_atom(R))I.throw_error(k.error.type("atom",R,y.indicator));else if(k.type.is_variable(R)){for(var Ae=Z,Re=k.type.is_variable(R),Le="";Ae.indicator==="./2";){if(k.type.is_character_code(Ae.args[0]))Le+=c(Ae.args[0].value);else if(k.type.is_variable(Ae.args[0])&&Re){I.throw_error(k.error.instantiation(y.indicator));return}else if(!k.type.is_variable(Ae.args[0])){I.throw_error(k.error.representation("character_code",y.indicator));return}Ae=Ae.args[1]}k.type.is_variable(Ae)&&Re?I.throw_error(k.error.instantiation(y.indicator)):!k.type.is_empty_list(Ae)&&!k.type.is_variable(Ae)?I.throw_error(k.error.type("list",Z,y.indicator)):I.prepend([new Fe(S.goal.replace(new q("=",[new q(Le),R])),S.substitution,S)])}else{for(var te=new q("[]"),ne=R.id.length-1;ne>=0;ne--)te=new q(".",[new Ue(n(R.id,ne),!1),te]);I.prepend([new Fe(S.goal.replace(new q("=",[Z,te])),S.substitution,S)])}},"char_code/2":function(I,S,y){var R=y.args[0],Z=y.args[1];if(k.type.is_variable(R)&&k.type.is_variable(Z))I.throw_error(k.error.instantiation(y.indicator));else if(!k.type.is_variable(R)&&!k.type.is_character(R))I.throw_error(k.error.type("character",R,y.indicator));else if(!k.type.is_variable(Z)&&!k.type.is_integer(Z))I.throw_error(k.error.type("integer",Z,y.indicator));else if(!k.type.is_variable(Z)&&!k.type.is_character_code(Z))I.throw_error(k.error.representation("character_code",y.indicator));else if(k.type.is_variable(Z)){var te=new Ue(n(R.id,0),!1);I.prepend([new Fe(S.goal.replace(new q("=",[te,Z])),S.substitution,S)])}else{var ne=new q(c(Z.value));I.prepend([new Fe(S.goal.replace(new q("=",[ne,R])),S.substitution,S)])}},"number_chars/2":function(I,S,y){var R,Z=y.args[0],te=y.args[1];if(k.type.is_variable(Z)&&k.type.is_variable(te))I.throw_error(k.error.instantiation(y.indicator));else if(!k.type.is_variable(Z)&&!k.type.is_number(Z))I.throw_error(k.error.type("number",Z,y.indicator));else if(!k.type.is_variable(te)&&!k.type.is_list(te))I.throw_error(k.error.type("list",te,y.indicator));else{var ne=k.type.is_variable(Z);if(!k.type.is_variable(te)){var Ae=te,Re=!0;for(R="";Ae.indicator==="./2";){if(k.type.is_character(Ae.args[0]))R+=Ae.args[0].id;else if(k.type.is_variable(Ae.args[0]))Re=!1;else if(!k.type.is_variable(Ae.args[0])){I.throw_error(k.error.type("character",Ae.args[0],y.indicator));return}Ae=Ae.args[1]}if(Re=Re&&k.type.is_empty_list(Ae),!k.type.is_empty_list(Ae)&&!k.type.is_variable(Ae)){I.throw_error(k.error.type("list",te,y.indicator));return}if(!Re&&ne){I.throw_error(k.error.instantiation(y.indicator));return}else if(Re)if(k.type.is_variable(Ae)&&ne){I.throw_error(k.error.instantiation(y.indicator));return}else{var Le=I.parse(R),lt=Le.value;!k.type.is_number(lt)||Le.tokens[Le.tokens.length-1].space?I.throw_error(k.error.syntax_by_predicate("parseable_number",y.indicator)):I.prepend([new Fe(S.goal.replace(new q("=",[Z,lt])),S.substitution,S)]);return}}if(!ne){R=Z.toString();for(var mt=new q("[]"),qt=R.length-1;qt>=0;qt--)mt=new q(".",[new q(R.charAt(qt)),mt]);I.prepend([new Fe(S.goal.replace(new q("=",[te,mt])),S.substitution,S)])}}},"number_codes/2":function(I,S,y){var R,Z=y.args[0],te=y.args[1];if(k.type.is_variable(Z)&&k.type.is_variable(te))I.throw_error(k.error.instantiation(y.indicator));else if(!k.type.is_variable(Z)&&!k.type.is_number(Z))I.throw_error(k.error.type("number",Z,y.indicator));else if(!k.type.is_variable(te)&&!k.type.is_list(te))I.throw_error(k.error.type("list",te,y.indicator));else{var ne=k.type.is_variable(Z);if(!k.type.is_variable(te)){var Ae=te,Re=!0;for(R="";Ae.indicator==="./2";){if(k.type.is_character_code(Ae.args[0]))R+=c(Ae.args[0].value);else if(k.type.is_variable(Ae.args[0]))Re=!1;else if(!k.type.is_variable(Ae.args[0])){I.throw_error(k.error.type("character_code",Ae.args[0],y.indicator));return}Ae=Ae.args[1]}if(Re=Re&&k.type.is_empty_list(Ae),!k.type.is_empty_list(Ae)&&!k.type.is_variable(Ae)){I.throw_error(k.error.type("list",te,y.indicator));return}if(!Re&&ne){I.throw_error(k.error.instantiation(y.indicator));return}else if(Re)if(k.type.is_variable(Ae)&&ne){I.throw_error(k.error.instantiation(y.indicator));return}else{var Le=I.parse(R),lt=Le.value;!k.type.is_number(lt)||Le.tokens[Le.tokens.length-1].space?I.throw_error(k.error.syntax_by_predicate("parseable_number",y.indicator)):I.prepend([new Fe(S.goal.replace(new q("=",[Z,lt])),S.substitution,S)]);return}}if(!ne){R=Z.toString();for(var mt=new q("[]"),qt=R.length-1;qt>=0;qt--)mt=new q(".",[new Ue(n(R,qt),!1),mt]);I.prepend([new Fe(S.goal.replace(new q("=",[te,mt])),S.substitution,S)])}}},"upcase_atom/2":function(I,S,y){var R=y.args[0],Z=y.args[1];k.type.is_variable(R)?I.throw_error(k.error.instantiation(y.indicator)):k.type.is_atom(R)?!k.type.is_variable(Z)&&!k.type.is_atom(Z)?I.throw_error(k.error.type("atom",Z,y.indicator)):I.prepend([new Fe(S.goal.replace(new q("=",[Z,new q(R.id.toUpperCase(),[])])),S.substitution,S)]):I.throw_error(k.error.type("atom",R,y.indicator))},"downcase_atom/2":function(I,S,y){var R=y.args[0],Z=y.args[1];k.type.is_variable(R)?I.throw_error(k.error.instantiation(y.indicator)):k.type.is_atom(R)?!k.type.is_variable(Z)&&!k.type.is_atom(Z)?I.throw_error(k.error.type("atom",Z,y.indicator)):I.prepend([new Fe(S.goal.replace(new q("=",[Z,new q(R.id.toLowerCase(),[])])),S.substitution,S)]):I.throw_error(k.error.type("atom",R,y.indicator))},"atomic_list_concat/2":function(I,S,y){var R=y.args[0],Z=y.args[1];I.prepend([new Fe(S.goal.replace(new q("atomic_list_concat",[R,new q("",[]),Z])),S.substitution,S)])},"atomic_list_concat/3":function(I,S,y){var R=y.args[0],Z=y.args[1],te=y.args[2];if(k.type.is_variable(Z)||k.type.is_variable(R)&&k.type.is_variable(te))I.throw_error(k.error.instantiation(y.indicator));else if(!k.type.is_variable(R)&&!k.type.is_list(R))I.throw_error(k.error.type("list",R,y.indicator));else if(!k.type.is_variable(te)&&!k.type.is_atom(te))I.throw_error(k.error.type("atom",te,y.indicator));else if(k.type.is_variable(te)){for(var Ae="",Re=R;k.type.is_term(Re)&&Re.indicator==="./2";){if(!k.type.is_atom(Re.args[0])&&!k.type.is_number(Re.args[0])){I.throw_error(k.error.type("atomic",Re.args[0],y.indicator));return}Ae!==""&&(Ae+=Z.id),k.type.is_atom(Re.args[0])?Ae+=Re.args[0].id:Ae+=""+Re.args[0].value,Re=Re.args[1]}Ae=new q(Ae,[]),k.type.is_variable(Re)?I.throw_error(k.error.instantiation(y.indicator)):!k.type.is_term(Re)||Re.indicator!=="[]/0"?I.throw_error(k.error.type("list",R,y.indicator)):I.prepend([new Fe(S.goal.replace(new q("=",[Ae,te])),S.substitution,S)])}else{var ne=h(o(te.id.split(Z.id),function(Le){return new q(Le,[])}));I.prepend([new Fe(S.goal.replace(new q("=",[ne,R])),S.substitution,S)])}},"@=/2":function(I,S,y){k.compare(y.args[0],y.args[1])>0&&I.success(S)},"@>=/2":function(I,S,y){k.compare(y.args[0],y.args[1])>=0&&I.success(S)},"compare/3":function(I,S,y){var R=y.args[0],Z=y.args[1],te=y.args[2];if(!k.type.is_variable(R)&&!k.type.is_atom(R))I.throw_error(k.error.type("atom",R,y.indicator));else if(k.type.is_atom(R)&&["<",">","="].indexOf(R.id)===-1)I.throw_error(k.type.domain("order",R,y.indicator));else{var ne=k.compare(Z,te);ne=ne===0?"=":ne===-1?"<":">",I.prepend([new Fe(S.goal.replace(new q("=",[R,new q(ne,[])])),S.substitution,S)])}},"is/2":function(I,S,y){var R=y.args[1].interpret(I);k.type.is_number(R)?I.prepend([new Fe(S.goal.replace(new q("=",[y.args[0],R],I.level)),S.substitution,S)]):I.throw_error(R)},"between/3":function(I,S,y){var R=y.args[0],Z=y.args[1],te=y.args[2];if(k.type.is_variable(R)||k.type.is_variable(Z))I.throw_error(k.error.instantiation(y.indicator));else if(!k.type.is_integer(R))I.throw_error(k.error.type("integer",R,y.indicator));else if(!k.type.is_integer(Z))I.throw_error(k.error.type("integer",Z,y.indicator));else if(!k.type.is_variable(te)&&!k.type.is_integer(te))I.throw_error(k.error.type("integer",te,y.indicator));else if(k.type.is_variable(te)){var ne=[new Fe(S.goal.replace(new q("=",[te,R])),S.substitution,S)];R.value=te.value&&I.success(S)},"succ/2":function(I,S,y){var R=y.args[0],Z=y.args[1];k.type.is_variable(R)&&k.type.is_variable(Z)?I.throw_error(k.error.instantiation(y.indicator)):!k.type.is_variable(R)&&!k.type.is_integer(R)?I.throw_error(k.error.type("integer",R,y.indicator)):!k.type.is_variable(Z)&&!k.type.is_integer(Z)?I.throw_error(k.error.type("integer",Z,y.indicator)):!k.type.is_variable(R)&&R.value<0?I.throw_error(k.error.domain("not_less_than_zero",R,y.indicator)):!k.type.is_variable(Z)&&Z.value<0?I.throw_error(k.error.domain("not_less_than_zero",Z,y.indicator)):(k.type.is_variable(Z)||Z.value>0)&&(k.type.is_variable(R)?I.prepend([new Fe(S.goal.replace(new q("=",[R,new Ue(Z.value-1,!1)])),S.substitution,S)]):I.prepend([new Fe(S.goal.replace(new q("=",[Z,new Ue(R.value+1,!1)])),S.substitution,S)]))},"=:=/2":function(I,S,y){var R=k.arithmetic_compare(I,y.args[0],y.args[1]);k.type.is_term(R)?I.throw_error(R):R===0&&I.success(S)},"=\\=/2":function(I,S,y){var R=k.arithmetic_compare(I,y.args[0],y.args[1]);k.type.is_term(R)?I.throw_error(R):R!==0&&I.success(S)},"/2":function(I,S,y){var R=k.arithmetic_compare(I,y.args[0],y.args[1]);k.type.is_term(R)?I.throw_error(R):R>0&&I.success(S)},">=/2":function(I,S,y){var R=k.arithmetic_compare(I,y.args[0],y.args[1]);k.type.is_term(R)?I.throw_error(R):R>=0&&I.success(S)},"var/1":function(I,S,y){k.type.is_variable(y.args[0])&&I.success(S)},"atom/1":function(I,S,y){k.type.is_atom(y.args[0])&&I.success(S)},"atomic/1":function(I,S,y){k.type.is_atomic(y.args[0])&&I.success(S)},"compound/1":function(I,S,y){k.type.is_compound(y.args[0])&&I.success(S)},"integer/1":function(I,S,y){k.type.is_integer(y.args[0])&&I.success(S)},"float/1":function(I,S,y){k.type.is_float(y.args[0])&&I.success(S)},"number/1":function(I,S,y){k.type.is_number(y.args[0])&&I.success(S)},"nonvar/1":function(I,S,y){k.type.is_variable(y.args[0])||I.success(S)},"ground/1":function(I,S,y){y.variables().length===0&&I.success(S)},"acyclic_term/1":function(I,S,y){for(var R=S.substitution.apply(S.substitution),Z=y.args[0].variables(),te=0;te0?Pt[Pt.length-1]:null,Pt!==null&&(qt=X(I,Pt,0,I.__get_max_priority(),!1))}if(qt.type===g&&qt.len===Pt.length-1&&mn.value==="."){qt=qt.value.rename(I);var Or=new q("=",[Z,qt]);if(Ae.variables){var Fr=h(o(Ce(qt.variables()),function(Ur){return new Se(Ur)}));Or=new q(",",[Or,new q("=",[Ae.variables,Fr])])}if(Ae.variable_names){var Fr=h(o(Ce(qt.variables()),function(fn){var vn;for(vn in I.session.renamed_variables)if(I.session.renamed_variables.hasOwnProperty(vn)&&I.session.renamed_variables[vn]===fn)break;return new q("=",[new q(vn,[]),new Se(fn)])}));Or=new q(",",[Or,new q("=",[Ae.variable_names,Fr])])}if(Ae.singletons){var Fr=h(o(new je(qt,null).singleton_variables(),function(fn){var vn;for(vn in I.session.renamed_variables)if(I.session.renamed_variables.hasOwnProperty(vn)&&I.session.renamed_variables[vn]===fn)break;return new q("=",[new q(vn,[]),new Se(fn)])}));Or=new q(",",[Or,new q("=",[Ae.singletons,Fr])])}I.prepend([new Fe(S.goal.replace(Or),S.substitution,S)])}else qt.type===g?I.throw_error(k.error.syntax(Pt[qt.len],"unexpected token",!1)):I.throw_error(qt.value)}}},"write/1":function(I,S,y){var R=y.args[0];I.prepend([new Fe(S.goal.replace(new q(",",[new q("current_output",[new Se("S")]),new q("write",[new Se("S"),R])])),S.substitution,S)])},"write/2":function(I,S,y){var R=y.args[0],Z=y.args[1];I.prepend([new Fe(S.goal.replace(new q("write_term",[R,Z,new q(".",[new q("quoted",[new q("false",[])]),new q(".",[new q("ignore_ops",[new q("false")]),new q(".",[new q("numbervars",[new q("true")]),new q("[]",[])])])])])),S.substitution,S)])},"writeq/1":function(I,S,y){var R=y.args[0];I.prepend([new Fe(S.goal.replace(new q(",",[new q("current_output",[new Se("S")]),new q("writeq",[new Se("S"),R])])),S.substitution,S)])},"writeq/2":function(I,S,y){var R=y.args[0],Z=y.args[1];I.prepend([new Fe(S.goal.replace(new q("write_term",[R,Z,new q(".",[new q("quoted",[new q("true",[])]),new q(".",[new q("ignore_ops",[new q("false")]),new q(".",[new q("numbervars",[new q("true")]),new q("[]",[])])])])])),S.substitution,S)])},"write_canonical/1":function(I,S,y){var R=y.args[0];I.prepend([new Fe(S.goal.replace(new q(",",[new q("current_output",[new Se("S")]),new q("write_canonical",[new Se("S"),R])])),S.substitution,S)])},"write_canonical/2":function(I,S,y){var R=y.args[0],Z=y.args[1];I.prepend([new Fe(S.goal.replace(new q("write_term",[R,Z,new q(".",[new q("quoted",[new q("true",[])]),new q(".",[new q("ignore_ops",[new q("true")]),new q(".",[new q("numbervars",[new q("false")]),new q("[]",[])])])])])),S.substitution,S)])},"write_term/2":function(I,S,y){var R=y.args[0],Z=y.args[1];I.prepend([new Fe(S.goal.replace(new q(",",[new q("current_output",[new Se("S")]),new q("write_term",[new Se("S"),R,Z])])),S.substitution,S)])},"write_term/3":function(I,S,y){var R=y.args[0],Z=y.args[1],te=y.args[2],ne=k.type.is_stream(R)?R:I.get_stream_by_alias(R.id);if(k.type.is_variable(R)||k.type.is_variable(te))I.throw_error(k.error.instantiation(y.indicator));else if(!k.type.is_list(te))I.throw_error(k.error.type("list",te,y.indicator));else if(!k.type.is_stream(R)&&!k.type.is_atom(R))I.throw_error(k.error.domain("stream_or_alias",R,y.indicator));else if(!k.type.is_stream(ne)||ne.stream===null)I.throw_error(k.error.existence("stream",R,y.indicator));else if(ne.input)I.throw_error(k.error.permission("output","stream",R,y.indicator));else if(ne.type==="binary")I.throw_error(k.error.permission("output","binary_stream",R,y.indicator));else if(ne.position==="past_end_of_stream"&&ne.eof_action==="error")I.throw_error(k.error.permission("output","past_end_of_stream",R,y.indicator));else{for(var Ae={},Re=te,Le;k.type.is_term(Re)&&Re.indicator==="./2";){if(Le=Re.args[0],k.type.is_variable(Le)){I.throw_error(k.error.instantiation(y.indicator));return}else if(!k.type.is_write_option(Le)){I.throw_error(k.error.domain("write_option",Le,y.indicator));return}Ae[Le.id]=Le.args[0].id==="true",Re=Re.args[1]}if(Re.indicator!=="[]/0"){k.type.is_variable(Re)?I.throw_error(k.error.instantiation(y.indicator)):I.throw_error(k.error.type("list",te,y.indicator));return}else{Ae.session=I.session;var lt=Z.toString(Ae);ne.stream.put(lt,ne.position),typeof ne.position=="number"&&(ne.position+=lt.length),I.success(S)}}},"halt/0":function(I,S,y){I.points=[]},"halt/1":function(I,S,y){var R=y.args[0];k.type.is_variable(R)?I.throw_error(k.error.instantiation(y.indicator)):k.type.is_integer(R)?I.points=[]:I.throw_error(k.error.type("integer",R,y.indicator))},"current_prolog_flag/2":function(I,S,y){var R=y.args[0],Z=y.args[1];if(!k.type.is_variable(R)&&!k.type.is_atom(R))I.throw_error(k.error.type("atom",R,y.indicator));else if(!k.type.is_variable(R)&&!k.type.is_flag(R))I.throw_error(k.error.domain("prolog_flag",R,y.indicator));else{var te=[];for(var ne in k.flag)if(!!k.flag.hasOwnProperty(ne)){var Ae=new q(",",[new q("=",[new q(ne),R]),new q("=",[I.get_flag(ne),Z])]);te.push(new Fe(S.goal.replace(Ae),S.substitution,S))}I.prepend(te)}},"set_prolog_flag/2":function(I,S,y){var R=y.args[0],Z=y.args[1];k.type.is_variable(R)||k.type.is_variable(Z)?I.throw_error(k.error.instantiation(y.indicator)):k.type.is_atom(R)?k.type.is_flag(R)?k.type.is_value_flag(R,Z)?k.type.is_modifiable_flag(R)?(I.session.flag[R.id]=Z,I.success(S)):I.throw_error(k.error.permission("modify","flag",R)):I.throw_error(k.error.domain("flag_value",new q("+",[R,Z]),y.indicator)):I.throw_error(k.error.domain("prolog_flag",R,y.indicator)):I.throw_error(k.error.type("atom",R,y.indicator))}},flag:{bounded:{allowed:[new q("true"),new q("false")],value:new q("true"),changeable:!1},max_integer:{allowed:[new Ue(Number.MAX_SAFE_INTEGER)],value:new Ue(Number.MAX_SAFE_INTEGER),changeable:!1},min_integer:{allowed:[new Ue(Number.MIN_SAFE_INTEGER)],value:new Ue(Number.MIN_SAFE_INTEGER),changeable:!1},integer_rounding_function:{allowed:[new q("down"),new q("toward_zero")],value:new q("toward_zero"),changeable:!1},char_conversion:{allowed:[new q("on"),new q("off")],value:new q("on"),changeable:!0},debug:{allowed:[new q("on"),new q("off")],value:new q("off"),changeable:!0},max_arity:{allowed:[new q("unbounded")],value:new q("unbounded"),changeable:!1},unknown:{allowed:[new q("error"),new q("fail"),new q("warning")],value:new q("error"),changeable:!0},double_quotes:{allowed:[new q("chars"),new q("codes"),new q("atom")],value:new q("codes"),changeable:!0},occurs_check:{allowed:[new q("false"),new q("true")],value:new q("false"),changeable:!0},dialect:{allowed:[new q("tau")],value:new q("tau"),changeable:!1},version_data:{allowed:[new q("tau",[new Ue(t.major,!1),new Ue(t.minor,!1),new Ue(t.patch,!1),new q(t.status)])],value:new q("tau",[new Ue(t.major,!1),new Ue(t.minor,!1),new Ue(t.patch,!1),new q(t.status)]),changeable:!1},nodejs:{allowed:[new q("yes"),new q("no")],value:new q(typeof MA<"u"&&MA.exports?"yes":"no"),changeable:!1}},unify:function(I,S,y){y=y===void 0?!1:y;for(var R=[{left:I,right:S}],Z={};R.length!==0;){var te=R.pop();if(I=te.left,S=te.right,k.type.is_term(I)&&k.type.is_term(S)){if(I.indicator!==S.indicator)return null;for(var ne=0;neZ.value?1:0:Z}else return R},operate:function(I,S){if(k.type.is_operator(S)){for(var y=k.type.is_operator(S),R=[],Z,te=!1,ne=0;neI.get_flag("max_integer").value||Z0?I.start+I.matches[0].length:I.start,Z=y?new q("token_not_found"):new q("found",[new q(I.value.toString())]),te=new q(".",[new q("line",[new Ue(I.line+1)]),new q(".",[new q("column",[new Ue(R+1)]),new q(".",[Z,new q("[]",[])])])]);return new q("error",[new q("syntax_error",[new q(S)]),te])},syntax_by_predicate:function(I,S){return new q("error",[new q("syntax_error",[new q(I)]),re(S)])}},warning:{singleton:function(I,S,y){for(var R=new q("[]"),Z=I.length-1;Z>=0;Z--)R=new q(".",[new Se(I[Z]),R]);return new q("warning",[new q("singleton_variables",[R,re(S)]),new q(".",[new q("line",[new Ue(y,!1)]),new q("[]")])])},failed_goal:function(I,S){return new q("warning",[new q("failed_goal",[I]),new q(".",[new q("line",[new Ue(S,!1)]),new q("[]")])])}},format_variable:function(I){return"_"+I},format_answer:function(I,S,R){S instanceof We&&(S=S.thread);var R=R||{};if(R.session=S?S.session:void 0,k.type.is_error(I))return"uncaught exception: "+I.args[0].toString();if(I===!1)return"false.";if(I===null)return"limit exceeded ;";var Z=0,te="";if(k.type.is_substitution(I)){var ne=I.domain(!0);I=I.filter(function(Le,lt){return!k.type.is_variable(lt)||ne.indexOf(lt.id)!==-1&&Le!==lt.id})}for(var Ae in I.links)!I.links.hasOwnProperty(Ae)||(Z++,te!==""&&(te+=", "),te+=Ae.toString(R)+" = "+I.links[Ae].toString(R));var Re=typeof S>"u"||S.points.length>0?" ;":".";return Z===0?"true"+Re:te+Re},flatten_error:function(I){if(!k.type.is_error(I))return null;I=I.args[0];var S={};return S.type=I.args[0].id,S.thrown=S.type==="syntax_error"?null:I.args[1].id,S.expected=null,S.found=null,S.representation=null,S.existence=null,S.existence_type=null,S.line=null,S.column=null,S.permission_operation=null,S.permission_type=null,S.evaluation_type=null,S.type==="type_error"||S.type==="domain_error"?(S.expected=I.args[0].args[0].id,S.found=I.args[0].args[1].toString()):S.type==="syntax_error"?I.args[1].indicator==="./2"?(S.expected=I.args[0].args[0].id,S.found=I.args[1].args[1].args[1].args[0],S.found=S.found.id==="token_not_found"?S.found.id:S.found.args[0].id,S.line=I.args[1].args[0].args[0].value,S.column=I.args[1].args[1].args[0].args[0].value):S.thrown=I.args[1].id:S.type==="permission_error"?(S.found=I.args[0].args[2].toString(),S.permission_operation=I.args[0].args[0].id,S.permission_type=I.args[0].args[1].id):S.type==="evaluation_error"?S.evaluation_type=I.args[0].args[0].id:S.type==="representation_error"?S.representation=I.args[0].args[0].id:S.type==="existence_error"&&(S.existence=I.args[0].args[1].toString(),S.existence_type=I.args[0].args[0].id),S},create:function(I){return new k.type.Session(I)}};typeof MA<"u"?MA.exports=k:window.pl=k})()});function rye(t,e,r){t.prepend(r.map(o=>new rA.default.type.State(e.goal.replace(o),e.substitution,e)))}function e6(t){let e=iye.get(t.session);if(e==null)throw new Error("Assertion failed: A project should have been registered for the active session");return e}function sye(t,e){iye.set(t,e),t.consult(`:- use_module(library(${Idt.id})).`)}var t6,rA,nye,Kh,Cdt,Edt,iye,Idt,oye=Lt(()=>{$e();t6=be(Q1()),rA=be($_()),nye=be(Ie("vm")),{is_atom:Kh,is_variable:Cdt,is_instantiated_list:Edt}=rA.default.type;iye=new WeakMap;Idt=new rA.default.type.Module("constraints",{["project_workspaces_by_descriptor/3"]:(t,e,r)=>{let[o,a,n]=r.args;if(!Kh(o)||!Kh(a)){t.throw_error(rA.default.error.instantiation(r.indicator));return}let c=Y.parseIdent(o.id),f=Y.makeDescriptor(c,a.id),p=e6(t).tryWorkspaceByDescriptor(f);Cdt(n)&&p!==null&&rye(t,e,[new rA.default.type.Term("=",[n,new rA.default.type.Term(String(p.relativeCwd))])]),Kh(n)&&p!==null&&p.relativeCwd===n.id&&t.success(e)},["workspace_field/3"]:(t,e,r)=>{let[o,a,n]=r.args;if(!Kh(o)||!Kh(a)){t.throw_error(rA.default.error.instantiation(r.indicator));return}let f=e6(t).tryWorkspaceByCwd(o.id);if(f==null)return;let g=(0,t6.default)(f.manifest.raw,a.id);typeof g>"u"||rye(t,e,[new rA.default.type.Term("=",[n,new rA.default.type.Term(typeof g=="object"?JSON.stringify(g):g)])])},["workspace_field_test/3"]:(t,e,r)=>{let[o,a,n]=r.args;t.prepend([new rA.default.type.State(e.goal.replace(new rA.default.type.Term("workspace_field_test",[o,a,n,new rA.default.type.Term("[]",[])])),e.substitution,e)])},["workspace_field_test/4"]:(t,e,r)=>{let[o,a,n,c]=r.args;if(!Kh(o)||!Kh(a)||!Kh(n)||!Edt(c)){t.throw_error(rA.default.error.instantiation(r.indicator));return}let g=e6(t).tryWorkspaceByCwd(o.id);if(g==null)return;let p=(0,t6.default)(g.manifest.raw,a.id);if(typeof p>"u")return;let E={$$:p};for(let[Q,x]of c.toJavaScript().entries())E[`$${Q}`]=x;nye.default.runInNewContext(n.id,E)&&t.success(e)}},["project_workspaces_by_descriptor/3","workspace_field/3","workspace_field_test/3","workspace_field_test/4"])});var kP={};tr(kP,{Constraints:()=>M1,DependencyType:()=>cye});function Co(t){if(t instanceof OE.default.type.Num)return t.value;if(t instanceof OE.default.type.Term)switch(t.indicator){case"throw/1":return Co(t.args[0]);case"error/1":return Co(t.args[0]);case"error/2":if(t.args[0]instanceof OE.default.type.Term&&t.args[0].indicator==="syntax_error/1")return Object.assign(Co(t.args[0]),...Co(t.args[1]));{let e=Co(t.args[0]);return e.message+=` (in ${Co(t.args[1])})`,e}case"syntax_error/1":return new rr(43,`Syntax error: ${Co(t.args[0])}`);case"existence_error/2":return new rr(44,`Existence error: ${Co(t.args[0])} ${Co(t.args[1])} not found`);case"instantiation_error/0":return new rr(75,"Instantiation error: an argument is variable when an instantiated argument was expected");case"line/1":return{line:Co(t.args[0])};case"column/1":return{column:Co(t.args[0])};case"found/1":return{found:Co(t.args[0])};case"./2":return[Co(t.args[0])].concat(Co(t.args[1]));case"//2":return`${Co(t.args[0])}/${Co(t.args[1])}`;default:return t.id}throw`couldn't pretty print because of unsupported node ${t}`}function Aye(t){let e;try{e=Co(t)}catch(r){throw typeof r=="string"?new rr(42,`Unknown error: ${t} (note: ${r})`):r}return typeof e.line<"u"&&typeof e.column<"u"&&(e.message+=` at line ${e.line}, column ${e.column}`),e}function Pm(t){return t.id==="null"?null:`${t.toJavaScript()}`}function wdt(t){if(t.id==="null")return null;{let e=t.toJavaScript();if(typeof e!="string")return JSON.stringify(e);try{return JSON.stringify(JSON.parse(e))}catch{return JSON.stringify(e)}}}function _h(t){return typeof t=="string"?`'${t}'`:"[]"}var lye,OE,cye,aye,r6,M1,xP=Lt(()=>{$e();$e();Ft();lye=be(Kme()),OE=be($_());oye();(0,lye.default)(OE.default);cye=(o=>(o.Dependencies="dependencies",o.DevDependencies="devDependencies",o.PeerDependencies="peerDependencies",o))(cye||{}),aye=["dependencies","devDependencies","peerDependencies"];r6=class{constructor(e,r){let o=1e3*e.workspaces.length;this.session=OE.default.create(o),sye(this.session,e),this.session.consult(":- use_module(library(lists))."),this.session.consult(r)}fetchNextAnswer(){return new Promise(e=>{this.session.answer(r=>{e(r)})})}async*makeQuery(e){let r=this.session.query(e);if(r!==!0)throw Aye(r);for(;;){let o=await this.fetchNextAnswer();if(o===null)throw new rr(79,"Resolution limit exceeded");if(!o)break;if(o.id==="throw")throw Aye(o);yield o}}};M1=class{constructor(e){this.source="";this.project=e;let r=e.configuration.get("constraintsPath");ge.existsSync(r)&&(this.source=ge.readFileSync(r,"utf8"))}static async find(e){return new M1(e)}getProjectDatabase(){let e="";for(let r of aye)e+=`dependency_type(${r}). -`;for(let r of this.project.workspacesByCwd.values()){let o=r.relativeCwd;e+=`workspace(${_h(o)}). -`,e+=`workspace_ident(${_h(o)}, ${_h(Y.stringifyIdent(r.locator))}). -`,e+=`workspace_version(${_h(o)}, ${_h(r.manifest.version)}). -`;for(let a of aye)for(let n of r.manifest[a].values())e+=`workspace_has_dependency(${_h(o)}, ${_h(Y.stringifyIdent(n))}, ${_h(n.range)}, ${a}). -`}return e+=`workspace(_) :- false. -`,e+=`workspace_ident(_, _) :- false. -`,e+=`workspace_version(_, _) :- false. -`,e+=`workspace_has_dependency(_, _, _, _) :- false. -`,e}getDeclarations(){let e="";return e+=`gen_enforced_dependency(_, _, _, _) :- false. -`,e+=`gen_enforced_field(_, _, _) :- false. -`,e}get fullSource(){return`${this.getProjectDatabase()} -${this.source} -${this.getDeclarations()}`}createSession(){return new r6(this.project,this.fullSource)}async process(){let e=this.createSession();return{enforcedDependencies:await this.genEnforcedDependencies(e),enforcedFields:await this.genEnforcedFields(e)}}async genEnforcedDependencies(e){let r=[];for await(let o of e.makeQuery("workspace(WorkspaceCwd), dependency_type(DependencyType), gen_enforced_dependency(WorkspaceCwd, DependencyIdent, DependencyRange, DependencyType).")){let a=ee.resolve(this.project.cwd,Pm(o.links.WorkspaceCwd)),n=Pm(o.links.DependencyIdent),c=Pm(o.links.DependencyRange),f=Pm(o.links.DependencyType);if(a===null||n===null)throw new Error("Invalid rule");let g=this.project.getWorkspaceByCwd(a),p=Y.parseIdent(n);r.push({workspace:g,dependencyIdent:p,dependencyRange:c,dependencyType:f})}return Ze.sortMap(r,[({dependencyRange:o})=>o!==null?"0":"1",({workspace:o})=>Y.stringifyIdent(o.locator),({dependencyIdent:o})=>Y.stringifyIdent(o)])}async genEnforcedFields(e){let r=[];for await(let o of e.makeQuery("workspace(WorkspaceCwd), gen_enforced_field(WorkspaceCwd, FieldPath, FieldValue).")){let a=ee.resolve(this.project.cwd,Pm(o.links.WorkspaceCwd)),n=Pm(o.links.FieldPath),c=wdt(o.links.FieldValue);if(a===null||n===null)throw new Error("Invalid rule");let f=this.project.getWorkspaceByCwd(a);r.push({workspace:f,fieldPath:n,fieldValue:c})}return Ze.sortMap(r,[({workspace:o})=>Y.stringifyIdent(o.locator),({fieldPath:o})=>o])}async*query(e){let r=this.createSession();for await(let o of r.makeQuery(e)){let a={};for(let[n,c]of Object.entries(o.links))n!=="_"&&(a[n]=Pm(c));yield a}}}});var Iye=_(NP=>{"use strict";Object.defineProperty(NP,"__esModule",{value:!0});function $1(t){let e=[...t.caches],r=e.shift();return r===void 0?Eye():{get(o,a,n={miss:()=>Promise.resolve()}){return r.get(o,a,n).catch(()=>$1({caches:e}).get(o,a,n))},set(o,a){return r.set(o,a).catch(()=>$1({caches:e}).set(o,a))},delete(o){return r.delete(o).catch(()=>$1({caches:e}).delete(o))},clear(){return r.clear().catch(()=>$1({caches:e}).clear())}}}function Eye(){return{get(t,e,r={miss:()=>Promise.resolve()}){return e().then(a=>Promise.all([a,r.miss(a)])).then(([a])=>a)},set(t,e){return Promise.resolve(e)},delete(t){return Promise.resolve()},clear(){return Promise.resolve()}}}NP.createFallbackableCache=$1;NP.createNullCache=Eye});var Bye=_((_9t,wye)=>{wye.exports=Iye()});var Qye=_(E6=>{"use strict";Object.defineProperty(E6,"__esModule",{value:!0});function qdt(t={serializable:!0}){let e={};return{get(r,o,a={miss:()=>Promise.resolve()}){let n=JSON.stringify(r);if(n in e)return Promise.resolve(t.serializable?JSON.parse(e[n]):e[n]);let c=o(),f=a&&a.miss||(()=>Promise.resolve());return c.then(g=>f(g)).then(()=>c)},set(r,o){return e[JSON.stringify(r)]=t.serializable?JSON.stringify(o):o,Promise.resolve(o)},delete(r){return delete e[JSON.stringify(r)],Promise.resolve()},clear(){return e={},Promise.resolve()}}}E6.createInMemoryCache=qdt});var Dye=_((q9t,vye)=>{vye.exports=Qye()});var kye=_(Qc=>{"use strict";Object.defineProperty(Qc,"__esModule",{value:!0});function Gdt(t,e,r){let o={"x-algolia-api-key":r,"x-algolia-application-id":e};return{headers(){return t===I6.WithinHeaders?o:{}},queryParameters(){return t===I6.WithinQueryParameters?o:{}}}}function jdt(t){let e=0,r=()=>(e++,new Promise(o=>{setTimeout(()=>{o(t(r))},Math.min(100*e,1e3))}));return t(r)}function Sye(t,e=(r,o)=>Promise.resolve()){return Object.assign(t,{wait(r){return Sye(t.then(o=>Promise.all([e(o,r),o])).then(o=>o[1]))}})}function Ydt(t){let e=t.length-1;for(e;e>0;e--){let r=Math.floor(Math.random()*(e+1)),o=t[e];t[e]=t[r],t[r]=o}return t}function Wdt(t,e){return Object.keys(e!==void 0?e:{}).forEach(r=>{t[r]=e[r](t)}),t}function Jdt(t,...e){let r=0;return t.replace(/%s/g,()=>encodeURIComponent(e[r++]))}var Vdt="4.2.0",zdt=t=>()=>t.transporter.requester.destroy(),I6={WithinQueryParameters:0,WithinHeaders:1};Qc.AuthMode=I6;Qc.addMethods=Wdt;Qc.createAuth=Gdt;Qc.createRetryablePromise=jdt;Qc.createWaitablePromise=Sye;Qc.destroy=zdt;Qc.encode=Jdt;Qc.shuffle=Ydt;Qc.version=Vdt});var e2=_((j9t,xye)=>{xye.exports=kye()});var Pye=_(w6=>{"use strict";Object.defineProperty(w6,"__esModule",{value:!0});var Xdt={Delete:"DELETE",Get:"GET",Post:"POST",Put:"PUT"};w6.MethodEnum=Xdt});var t2=_((W9t,bye)=>{bye.exports=Pye()});var Yye=_(Ji=>{"use strict";Object.defineProperty(Ji,"__esModule",{value:!0});var Rye=t2();function B6(t,e){let r=t||{},o=r.data||{};return Object.keys(r).forEach(a=>{["timeout","headers","queryParameters","data","cacheable"].indexOf(a)===-1&&(o[a]=r[a])}),{data:Object.entries(o).length>0?o:void 0,timeout:r.timeout||e,headers:r.headers||{},queryParameters:r.queryParameters||{},cacheable:r.cacheable}}var MP={Read:1,Write:2,Any:3},_E={Up:1,Down:2,Timeouted:3},Tye=2*60*1e3;function v6(t,e=_E.Up){return{...t,status:e,lastUpdate:Date.now()}}function Nye(t){return t.status===_E.Up||Date.now()-t.lastUpdate>Tye}function Mye(t){return t.status===_E.Timeouted&&Date.now()-t.lastUpdate<=Tye}function D6(t){return{protocol:t.protocol||"https",url:t.url,accept:t.accept||MP.Any}}function Zdt(t,e){return Promise.all(e.map(r=>t.get(r,()=>Promise.resolve(v6(r))))).then(r=>{let o=r.filter(f=>Nye(f)),a=r.filter(f=>Mye(f)),n=[...o,...a],c=n.length>0?n.map(f=>D6(f)):e;return{getTimeout(f,g){return(a.length===0&&f===0?1:a.length+3+f)*g},statelessHosts:c}})}var $dt=({isTimedOut:t,status:e})=>!t&&~~e===0,emt=t=>{let e=t.status;return t.isTimedOut||$dt(t)||~~(e/100)!==2&&~~(e/100)!==4},tmt=({status:t})=>~~(t/100)===2,rmt=(t,e)=>emt(t)?e.onRetry(t):tmt(t)?e.onSucess(t):e.onFail(t);function Fye(t,e,r,o){let a=[],n=_ye(r,o),c=Hye(t,o),f=r.method,g=r.method!==Rye.MethodEnum.Get?{}:{...r.data,...o.data},p={"x-algolia-agent":t.userAgent.value,...t.queryParameters,...g,...o.queryParameters},E=0,B=(Q,x)=>{let C=Q.pop();if(C===void 0)throw jye(Q6(a));let N={data:n,headers:c,method:f,url:Uye(C,r.path,p),connectTimeout:x(E,t.timeouts.connect),responseTimeout:x(E,o.timeout)},U=X=>{let ie={request:N,response:X,host:C,triesLeft:Q.length};return a.push(ie),ie},H={onSucess:X=>Lye(X),onRetry(X){let ie=U(X);return X.isTimedOut&&E++,Promise.all([t.logger.info("Retryable failure",S6(ie)),t.hostsCache.set(C,v6(C,X.isTimedOut?_E.Timeouted:_E.Down))]).then(()=>B(Q,x))},onFail(X){throw U(X),Oye(X,Q6(a))}};return t.requester.send(N).then(X=>rmt(X,H))};return Zdt(t.hostsCache,e).then(Q=>B([...Q.statelessHosts].reverse(),Q.getTimeout))}function nmt(t){let{hostsCache:e,logger:r,requester:o,requestsCache:a,responsesCache:n,timeouts:c,userAgent:f,hosts:g,queryParameters:p,headers:E}=t,B={hostsCache:e,logger:r,requester:o,requestsCache:a,responsesCache:n,timeouts:c,userAgent:f,headers:E,queryParameters:p,hosts:g.map(Q=>D6(Q)),read(Q,x){let C=B6(x,B.timeouts.read),N=()=>Fye(B,B.hosts.filter(X=>(X.accept&MP.Read)!==0),Q,C);if((C.cacheable!==void 0?C.cacheable:Q.cacheable)!==!0)return N();let H={request:Q,mappedRequestOptions:C,transporter:{queryParameters:B.queryParameters,headers:B.headers}};return B.responsesCache.get(H,()=>B.requestsCache.get(H,()=>B.requestsCache.set(H,N()).then(X=>Promise.all([B.requestsCache.delete(H),X]),X=>Promise.all([B.requestsCache.delete(H),Promise.reject(X)])).then(([X,ie])=>ie)),{miss:X=>B.responsesCache.set(H,X)})},write(Q,x){return Fye(B,B.hosts.filter(C=>(C.accept&MP.Write)!==0),Q,B6(x,B.timeouts.write))}};return B}function imt(t){let e={value:`Algolia for JavaScript (${t})`,add(r){let o=`; ${r.segment}${r.version!==void 0?` (${r.version})`:""}`;return e.value.indexOf(o)===-1&&(e.value=`${e.value}${o}`),e}};return e}function Lye(t){try{return JSON.parse(t.content)}catch(e){throw Gye(e.message,t)}}function Oye({content:t,status:e},r){let o=t;try{o=JSON.parse(t).message}catch{}return qye(o,e,r)}function smt(t,...e){let r=0;return t.replace(/%s/g,()=>encodeURIComponent(e[r++]))}function Uye(t,e,r){let o=Kye(r),a=`${t.protocol}://${t.url}/${e.charAt(0)==="/"?e.substr(1):e}`;return o.length&&(a+=`?${o}`),a}function Kye(t){let e=r=>Object.prototype.toString.call(r)==="[object Object]"||Object.prototype.toString.call(r)==="[object Array]";return Object.keys(t).map(r=>smt("%s=%s",r,e(t[r])?JSON.stringify(t[r]):t[r])).join("&")}function _ye(t,e){if(t.method===Rye.MethodEnum.Get||t.data===void 0&&e.data===void 0)return;let r=Array.isArray(t.data)?t.data:{...t.data,...e.data};return JSON.stringify(r)}function Hye(t,e){let r={...t.headers,...e.headers},o={};return Object.keys(r).forEach(a=>{let n=r[a];o[a.toLowerCase()]=n}),o}function Q6(t){return t.map(e=>S6(e))}function S6(t){let e=t.request.headers["x-algolia-api-key"]?{"x-algolia-api-key":"*****"}:{};return{...t,request:{...t.request,headers:{...t.request.headers,...e}}}}function qye(t,e,r){return{name:"ApiError",message:t,status:e,transporterStackTrace:r}}function Gye(t,e){return{name:"DeserializationError",message:t,response:e}}function jye(t){return{name:"RetryError",message:"Unreachable hosts - your application id may be incorrect. If the error persists, contact support@algolia.com.",transporterStackTrace:t}}Ji.CallEnum=MP;Ji.HostStatusEnum=_E;Ji.createApiError=qye;Ji.createDeserializationError=Gye;Ji.createMappedRequestOptions=B6;Ji.createRetryError=jye;Ji.createStatefulHost=v6;Ji.createStatelessHost=D6;Ji.createTransporter=nmt;Ji.createUserAgent=imt;Ji.deserializeFailure=Oye;Ji.deserializeSuccess=Lye;Ji.isStatefulHostTimeouted=Mye;Ji.isStatefulHostUp=Nye;Ji.serializeData=_ye;Ji.serializeHeaders=Hye;Ji.serializeQueryParameters=Kye;Ji.serializeUrl=Uye;Ji.stackFrameWithoutCredentials=S6;Ji.stackTraceWithoutCredentials=Q6});var r2=_((V9t,Wye)=>{Wye.exports=Yye()});var Jye=_(Wh=>{"use strict";Object.defineProperty(Wh,"__esModule",{value:!0});var HE=e2(),omt=r2(),n2=t2(),amt=t=>{let e=t.region||"us",r=HE.createAuth(HE.AuthMode.WithinHeaders,t.appId,t.apiKey),o=omt.createTransporter({hosts:[{url:`analytics.${e}.algolia.com`}],...t,headers:{...r.headers(),"content-type":"application/json",...t.headers},queryParameters:{...r.queryParameters(),...t.queryParameters}}),a=t.appId;return HE.addMethods({appId:a,transporter:o},t.methods)},Amt=t=>(e,r)=>t.transporter.write({method:n2.MethodEnum.Post,path:"2/abtests",data:e},r),lmt=t=>(e,r)=>t.transporter.write({method:n2.MethodEnum.Delete,path:HE.encode("2/abtests/%s",e)},r),cmt=t=>(e,r)=>t.transporter.read({method:n2.MethodEnum.Get,path:HE.encode("2/abtests/%s",e)},r),umt=t=>e=>t.transporter.read({method:n2.MethodEnum.Get,path:"2/abtests"},e),fmt=t=>(e,r)=>t.transporter.write({method:n2.MethodEnum.Post,path:HE.encode("2/abtests/%s/stop",e)},r);Wh.addABTest=Amt;Wh.createAnalyticsClient=amt;Wh.deleteABTest=lmt;Wh.getABTest=cmt;Wh.getABTests=umt;Wh.stopABTest=fmt});var zye=_((X9t,Vye)=>{Vye.exports=Jye()});var Zye=_(i2=>{"use strict";Object.defineProperty(i2,"__esModule",{value:!0});var k6=e2(),gmt=r2(),Xye=t2(),pmt=t=>{let e=t.region||"us",r=k6.createAuth(k6.AuthMode.WithinHeaders,t.appId,t.apiKey),o=gmt.createTransporter({hosts:[{url:`recommendation.${e}.algolia.com`}],...t,headers:{...r.headers(),"content-type":"application/json",...t.headers},queryParameters:{...r.queryParameters(),...t.queryParameters}});return k6.addMethods({appId:t.appId,transporter:o},t.methods)},hmt=t=>e=>t.transporter.read({method:Xye.MethodEnum.Get,path:"1/strategies/personalization"},e),dmt=t=>(e,r)=>t.transporter.write({method:Xye.MethodEnum.Post,path:"1/strategies/personalization",data:e},r);i2.createRecommendationClient=pmt;i2.getPersonalizationStrategy=hmt;i2.setPersonalizationStrategy=dmt});var eCe=_(($9t,$ye)=>{$ye.exports=Zye()});var gCe=_(_t=>{"use strict";Object.defineProperty(_t,"__esModule",{value:!0});var ur=e2(),nA=r2(),Vr=t2(),mmt=Ie("crypto");function LP(t){let e=r=>t.request(r).then(o=>{if(t.batch!==void 0&&t.batch(o.hits),!t.shouldStop(o))return o.cursor?e({cursor:o.cursor}):e({page:(r.page||0)+1})});return e({})}var ymt=t=>{let e=t.appId,r=ur.createAuth(t.authMode!==void 0?t.authMode:ur.AuthMode.WithinHeaders,e,t.apiKey),o=nA.createTransporter({hosts:[{url:`${e}-dsn.algolia.net`,accept:nA.CallEnum.Read},{url:`${e}.algolia.net`,accept:nA.CallEnum.Write}].concat(ur.shuffle([{url:`${e}-1.algolianet.com`},{url:`${e}-2.algolianet.com`},{url:`${e}-3.algolianet.com`}])),...t,headers:{...r.headers(),"content-type":"application/x-www-form-urlencoded",...t.headers},queryParameters:{...r.queryParameters(),...t.queryParameters}}),a={transporter:o,appId:e,addAlgoliaAgent(n,c){o.userAgent.add({segment:n,version:c})},clearCache(){return Promise.all([o.requestsCache.clear(),o.responsesCache.clear()]).then(()=>{})}};return ur.addMethods(a,t.methods)};function tCe(){return{name:"MissingObjectIDError",message:"All objects must have an unique objectID (like a primary key) to be valid. Algolia is also able to generate objectIDs automatically but *it's not recommended*. To do it, use the `{'autoGenerateObjectIDIfNotExist': true}` option."}}function rCe(){return{name:"ObjectNotFoundError",message:"Object not found."}}function nCe(){return{name:"ValidUntilNotFoundError",message:"ValidUntil not found in given secured api key."}}var Cmt=t=>(e,r)=>{let{queryParameters:o,...a}=r||{},n={acl:e,...o!==void 0?{queryParameters:o}:{}},c=(f,g)=>ur.createRetryablePromise(p=>s2(t)(f.key,g).catch(E=>{if(E.status!==404)throw E;return p()}));return ur.createWaitablePromise(t.transporter.write({method:Vr.MethodEnum.Post,path:"1/keys",data:n},a),c)},Emt=t=>(e,r,o)=>{let a=nA.createMappedRequestOptions(o);return a.queryParameters["X-Algolia-User-ID"]=e,t.transporter.write({method:Vr.MethodEnum.Post,path:"1/clusters/mapping",data:{cluster:r}},a)},Imt=t=>(e,r,o)=>t.transporter.write({method:Vr.MethodEnum.Post,path:"1/clusters/mapping/batch",data:{users:e,cluster:r}},o),OP=t=>(e,r,o)=>{let a=(n,c)=>o2(t)(e,{methods:{waitTask:Cs}}).waitTask(n.taskID,c);return ur.createWaitablePromise(t.transporter.write({method:Vr.MethodEnum.Post,path:ur.encode("1/indexes/%s/operation",e),data:{operation:"copy",destination:r}},o),a)},wmt=t=>(e,r,o)=>OP(t)(e,r,{...o,scope:[KP.Rules]}),Bmt=t=>(e,r,o)=>OP(t)(e,r,{...o,scope:[KP.Settings]}),Qmt=t=>(e,r,o)=>OP(t)(e,r,{...o,scope:[KP.Synonyms]}),vmt=t=>(e,r)=>{let o=(a,n)=>ur.createRetryablePromise(c=>s2(t)(e,n).then(c).catch(f=>{if(f.status!==404)throw f}));return ur.createWaitablePromise(t.transporter.write({method:Vr.MethodEnum.Delete,path:ur.encode("1/keys/%s",e)},r),o)},Dmt=()=>(t,e)=>{let r=nA.serializeQueryParameters(e),o=mmt.createHmac("sha256",t).update(r).digest("hex");return Buffer.from(o+r).toString("base64")},s2=t=>(e,r)=>t.transporter.read({method:Vr.MethodEnum.Get,path:ur.encode("1/keys/%s",e)},r),Smt=t=>e=>t.transporter.read({method:Vr.MethodEnum.Get,path:"1/logs"},e),kmt=()=>t=>{let e=Buffer.from(t,"base64").toString("ascii"),r=/validUntil=(\d+)/,o=e.match(r);if(o===null)throw nCe();return parseInt(o[1],10)-Math.round(new Date().getTime()/1e3)},xmt=t=>e=>t.transporter.read({method:Vr.MethodEnum.Get,path:"1/clusters/mapping/top"},e),Pmt=t=>(e,r)=>t.transporter.read({method:Vr.MethodEnum.Get,path:ur.encode("1/clusters/mapping/%s",e)},r),bmt=t=>e=>{let{retrieveMappings:r,...o}=e||{};return r===!0&&(o.getClusters=!0),t.transporter.read({method:Vr.MethodEnum.Get,path:"1/clusters/mapping/pending"},o)},o2=t=>(e,r={})=>{let o={transporter:t.transporter,appId:t.appId,indexName:e};return ur.addMethods(o,r.methods)},Fmt=t=>e=>t.transporter.read({method:Vr.MethodEnum.Get,path:"1/keys"},e),Rmt=t=>e=>t.transporter.read({method:Vr.MethodEnum.Get,path:"1/clusters"},e),Tmt=t=>e=>t.transporter.read({method:Vr.MethodEnum.Get,path:"1/indexes"},e),Nmt=t=>e=>t.transporter.read({method:Vr.MethodEnum.Get,path:"1/clusters/mapping"},e),Mmt=t=>(e,r,o)=>{let a=(n,c)=>o2(t)(e,{methods:{waitTask:Cs}}).waitTask(n.taskID,c);return ur.createWaitablePromise(t.transporter.write({method:Vr.MethodEnum.Post,path:ur.encode("1/indexes/%s/operation",e),data:{operation:"move",destination:r}},o),a)},Lmt=t=>(e,r)=>{let o=(a,n)=>Promise.all(Object.keys(a.taskID).map(c=>o2(t)(c,{methods:{waitTask:Cs}}).waitTask(a.taskID[c],n)));return ur.createWaitablePromise(t.transporter.write({method:Vr.MethodEnum.Post,path:"1/indexes/*/batch",data:{requests:e}},r),o)},Omt=t=>(e,r)=>t.transporter.read({method:Vr.MethodEnum.Post,path:"1/indexes/*/objects",data:{requests:e}},r),Umt=t=>(e,r)=>{let o=e.map(a=>({...a,params:nA.serializeQueryParameters(a.params||{})}));return t.transporter.read({method:Vr.MethodEnum.Post,path:"1/indexes/*/queries",data:{requests:o},cacheable:!0},r)},Kmt=t=>(e,r)=>Promise.all(e.map(o=>{let{facetName:a,facetQuery:n,...c}=o.params;return o2(t)(o.indexName,{methods:{searchForFacetValues:cCe}}).searchForFacetValues(a,n,{...r,...c})})),_mt=t=>(e,r)=>{let o=nA.createMappedRequestOptions(r);return o.queryParameters["X-Algolia-User-ID"]=e,t.transporter.write({method:Vr.MethodEnum.Delete,path:"1/clusters/mapping"},o)},Hmt=t=>(e,r)=>{let o=(a,n)=>ur.createRetryablePromise(c=>s2(t)(e,n).catch(f=>{if(f.status!==404)throw f;return c()}));return ur.createWaitablePromise(t.transporter.write({method:Vr.MethodEnum.Post,path:ur.encode("1/keys/%s/restore",e)},r),o)},qmt=t=>(e,r)=>t.transporter.read({method:Vr.MethodEnum.Post,path:"1/clusters/mapping/search",data:{query:e}},r),Gmt=t=>(e,r)=>{let o=Object.assign({},r),{queryParameters:a,...n}=r||{},c=a?{queryParameters:a}:{},f=["acl","indexes","referers","restrictSources","queryParameters","description","maxQueriesPerIPPerHour","maxHitsPerQuery"],g=E=>Object.keys(o).filter(B=>f.indexOf(B)!==-1).every(B=>E[B]===o[B]),p=(E,B)=>ur.createRetryablePromise(Q=>s2(t)(e,B).then(x=>g(x)?Promise.resolve():Q()));return ur.createWaitablePromise(t.transporter.write({method:Vr.MethodEnum.Put,path:ur.encode("1/keys/%s",e),data:c},n),p)},iCe=t=>(e,r)=>{let o=(a,n)=>Cs(t)(a.taskID,n);return ur.createWaitablePromise(t.transporter.write({method:Vr.MethodEnum.Post,path:ur.encode("1/indexes/%s/batch",t.indexName),data:{requests:e}},r),o)},jmt=t=>e=>LP({...e,shouldStop:r=>r.cursor===void 0,request:r=>t.transporter.read({method:Vr.MethodEnum.Post,path:ur.encode("1/indexes/%s/browse",t.indexName),data:r},e)}),Ymt=t=>e=>{let r={hitsPerPage:1e3,...e};return LP({...r,shouldStop:o=>o.hits.length({...a,hits:a.hits.map(n=>(delete n._highlightResult,n))}))}})},Wmt=t=>e=>{let r={hitsPerPage:1e3,...e};return LP({...r,shouldStop:o=>o.hits.length({...a,hits:a.hits.map(n=>(delete n._highlightResult,n))}))}})},UP=t=>(e,r,o)=>{let{batchSize:a,...n}=o||{},c={taskIDs:[],objectIDs:[]},f=(g=0)=>{let p=[],E;for(E=g;E({action:r,body:B})),n).then(B=>(c.objectIDs=c.objectIDs.concat(B.objectIDs),c.taskIDs.push(B.taskID),E++,f(E)))};return ur.createWaitablePromise(f(),(g,p)=>Promise.all(g.taskIDs.map(E=>Cs(t)(E,p))))},Jmt=t=>e=>ur.createWaitablePromise(t.transporter.write({method:Vr.MethodEnum.Post,path:ur.encode("1/indexes/%s/clear",t.indexName)},e),(r,o)=>Cs(t)(r.taskID,o)),Vmt=t=>e=>{let{forwardToReplicas:r,...o}=e||{},a=nA.createMappedRequestOptions(o);return r&&(a.queryParameters.forwardToReplicas=1),ur.createWaitablePromise(t.transporter.write({method:Vr.MethodEnum.Post,path:ur.encode("1/indexes/%s/rules/clear",t.indexName)},a),(n,c)=>Cs(t)(n.taskID,c))},zmt=t=>e=>{let{forwardToReplicas:r,...o}=e||{},a=nA.createMappedRequestOptions(o);return r&&(a.queryParameters.forwardToReplicas=1),ur.createWaitablePromise(t.transporter.write({method:Vr.MethodEnum.Post,path:ur.encode("1/indexes/%s/synonyms/clear",t.indexName)},a),(n,c)=>Cs(t)(n.taskID,c))},Xmt=t=>(e,r)=>ur.createWaitablePromise(t.transporter.write({method:Vr.MethodEnum.Post,path:ur.encode("1/indexes/%s/deleteByQuery",t.indexName),data:e},r),(o,a)=>Cs(t)(o.taskID,a)),Zmt=t=>e=>ur.createWaitablePromise(t.transporter.write({method:Vr.MethodEnum.Delete,path:ur.encode("1/indexes/%s",t.indexName)},e),(r,o)=>Cs(t)(r.taskID,o)),$mt=t=>(e,r)=>ur.createWaitablePromise(sCe(t)([e],r).then(o=>({taskID:o.taskIDs[0]})),(o,a)=>Cs(t)(o.taskID,a)),sCe=t=>(e,r)=>{let o=e.map(a=>({objectID:a}));return UP(t)(o,Rm.DeleteObject,r)},eyt=t=>(e,r)=>{let{forwardToReplicas:o,...a}=r||{},n=nA.createMappedRequestOptions(a);return o&&(n.queryParameters.forwardToReplicas=1),ur.createWaitablePromise(t.transporter.write({method:Vr.MethodEnum.Delete,path:ur.encode("1/indexes/%s/rules/%s",t.indexName,e)},n),(c,f)=>Cs(t)(c.taskID,f))},tyt=t=>(e,r)=>{let{forwardToReplicas:o,...a}=r||{},n=nA.createMappedRequestOptions(a);return o&&(n.queryParameters.forwardToReplicas=1),ur.createWaitablePromise(t.transporter.write({method:Vr.MethodEnum.Delete,path:ur.encode("1/indexes/%s/synonyms/%s",t.indexName,e)},n),(c,f)=>Cs(t)(c.taskID,f))},ryt=t=>e=>oCe(t)(e).then(()=>!0).catch(r=>{if(r.status!==404)throw r;return!1}),nyt=t=>(e,r)=>{let{query:o,paginate:a,...n}=r||{},c=0,f=()=>lCe(t)(o||"",{...n,page:c}).then(g=>{for(let[p,E]of Object.entries(g.hits))if(e(E))return{object:E,position:parseInt(p,10),page:c};if(c++,a===!1||c>=g.nbPages)throw rCe();return f()});return f()},iyt=t=>(e,r)=>t.transporter.read({method:Vr.MethodEnum.Get,path:ur.encode("1/indexes/%s/%s",t.indexName,e)},r),syt=()=>(t,e)=>{for(let[r,o]of Object.entries(t.hits))if(o.objectID===e)return parseInt(r,10);return-1},oyt=t=>(e,r)=>{let{attributesToRetrieve:o,...a}=r||{},n=e.map(c=>({indexName:t.indexName,objectID:c,...o?{attributesToRetrieve:o}:{}}));return t.transporter.read({method:Vr.MethodEnum.Post,path:"1/indexes/*/objects",data:{requests:n}},a)},ayt=t=>(e,r)=>t.transporter.read({method:Vr.MethodEnum.Get,path:ur.encode("1/indexes/%s/rules/%s",t.indexName,e)},r),oCe=t=>e=>t.transporter.read({method:Vr.MethodEnum.Get,path:ur.encode("1/indexes/%s/settings",t.indexName),data:{getVersion:2}},e),Ayt=t=>(e,r)=>t.transporter.read({method:Vr.MethodEnum.Get,path:ur.encode("1/indexes/%s/synonyms/%s",t.indexName,e)},r),aCe=t=>(e,r)=>t.transporter.read({method:Vr.MethodEnum.Get,path:ur.encode("1/indexes/%s/task/%s",t.indexName,e.toString())},r),lyt=t=>(e,r)=>ur.createWaitablePromise(ACe(t)([e],r).then(o=>({objectID:o.objectIDs[0],taskID:o.taskIDs[0]})),(o,a)=>Cs(t)(o.taskID,a)),ACe=t=>(e,r)=>{let{createIfNotExists:o,...a}=r||{},n=o?Rm.PartialUpdateObject:Rm.PartialUpdateObjectNoCreate;return UP(t)(e,n,a)},cyt=t=>(e,r)=>{let{safe:o,autoGenerateObjectIDIfNotExist:a,batchSize:n,...c}=r||{},f=(C,N,U,H)=>ur.createWaitablePromise(t.transporter.write({method:Vr.MethodEnum.Post,path:ur.encode("1/indexes/%s/operation",C),data:{operation:U,destination:N}},H),(X,ie)=>Cs(t)(X.taskID,ie)),g=Math.random().toString(36).substring(7),p=`${t.indexName}_tmp_${g}`,E=x6({appId:t.appId,transporter:t.transporter,indexName:p}),B=[],Q=f(t.indexName,p,"copy",{...c,scope:["settings","synonyms","rules"]});B.push(Q);let x=(o?Q.wait(c):Q).then(()=>{let C=E(e,{...c,autoGenerateObjectIDIfNotExist:a,batchSize:n});return B.push(C),o?C.wait(c):C}).then(()=>{let C=f(p,t.indexName,"move",c);return B.push(C),o?C.wait(c):C}).then(()=>Promise.all(B)).then(([C,N,U])=>({objectIDs:N.objectIDs,taskIDs:[C.taskID,...N.taskIDs,U.taskID]}));return ur.createWaitablePromise(x,(C,N)=>Promise.all(B.map(U=>U.wait(N))))},uyt=t=>(e,r)=>P6(t)(e,{...r,clearExistingRules:!0}),fyt=t=>(e,r)=>b6(t)(e,{...r,replaceExistingSynonyms:!0}),gyt=t=>(e,r)=>ur.createWaitablePromise(x6(t)([e],r).then(o=>({objectID:o.objectIDs[0],taskID:o.taskIDs[0]})),(o,a)=>Cs(t)(o.taskID,a)),x6=t=>(e,r)=>{let{autoGenerateObjectIDIfNotExist:o,...a}=r||{},n=o?Rm.AddObject:Rm.UpdateObject;if(n===Rm.UpdateObject){for(let c of e)if(c.objectID===void 0)return ur.createWaitablePromise(Promise.reject(tCe()))}return UP(t)(e,n,a)},pyt=t=>(e,r)=>P6(t)([e],r),P6=t=>(e,r)=>{let{forwardToReplicas:o,clearExistingRules:a,...n}=r||{},c=nA.createMappedRequestOptions(n);return o&&(c.queryParameters.forwardToReplicas=1),a&&(c.queryParameters.clearExistingRules=1),ur.createWaitablePromise(t.transporter.write({method:Vr.MethodEnum.Post,path:ur.encode("1/indexes/%s/rules/batch",t.indexName),data:e},c),(f,g)=>Cs(t)(f.taskID,g))},hyt=t=>(e,r)=>b6(t)([e],r),b6=t=>(e,r)=>{let{forwardToReplicas:o,replaceExistingSynonyms:a,...n}=r||{},c=nA.createMappedRequestOptions(n);return o&&(c.queryParameters.forwardToReplicas=1),a&&(c.queryParameters.replaceExistingSynonyms=1),ur.createWaitablePromise(t.transporter.write({method:Vr.MethodEnum.Post,path:ur.encode("1/indexes/%s/synonyms/batch",t.indexName),data:e},c),(f,g)=>Cs(t)(f.taskID,g))},lCe=t=>(e,r)=>t.transporter.read({method:Vr.MethodEnum.Post,path:ur.encode("1/indexes/%s/query",t.indexName),data:{query:e},cacheable:!0},r),cCe=t=>(e,r,o)=>t.transporter.read({method:Vr.MethodEnum.Post,path:ur.encode("1/indexes/%s/facets/%s/query",t.indexName,e),data:{facetQuery:r},cacheable:!0},o),uCe=t=>(e,r)=>t.transporter.read({method:Vr.MethodEnum.Post,path:ur.encode("1/indexes/%s/rules/search",t.indexName),data:{query:e}},r),fCe=t=>(e,r)=>t.transporter.read({method:Vr.MethodEnum.Post,path:ur.encode("1/indexes/%s/synonyms/search",t.indexName),data:{query:e}},r),dyt=t=>(e,r)=>{let{forwardToReplicas:o,...a}=r||{},n=nA.createMappedRequestOptions(a);return o&&(n.queryParameters.forwardToReplicas=1),ur.createWaitablePromise(t.transporter.write({method:Vr.MethodEnum.Put,path:ur.encode("1/indexes/%s/settings",t.indexName),data:e},n),(c,f)=>Cs(t)(c.taskID,f))},Cs=t=>(e,r)=>ur.createRetryablePromise(o=>aCe(t)(e,r).then(a=>a.status!=="published"?o():void 0)),myt={AddObject:"addObject",Analytics:"analytics",Browser:"browse",DeleteIndex:"deleteIndex",DeleteObject:"deleteObject",EditSettings:"editSettings",ListIndexes:"listIndexes",Logs:"logs",Recommendation:"recommendation",Search:"search",SeeUnretrievableAttributes:"seeUnretrievableAttributes",Settings:"settings",Usage:"usage"},Rm={AddObject:"addObject",UpdateObject:"updateObject",PartialUpdateObject:"partialUpdateObject",PartialUpdateObjectNoCreate:"partialUpdateObjectNoCreate",DeleteObject:"deleteObject"},KP={Settings:"settings",Synonyms:"synonyms",Rules:"rules"},yyt={None:"none",StopIfEnoughMatches:"stopIfEnoughMatches"},Cyt={Synonym:"synonym",OneWaySynonym:"oneWaySynonym",AltCorrection1:"altCorrection1",AltCorrection2:"altCorrection2",Placeholder:"placeholder"};_t.ApiKeyACLEnum=myt;_t.BatchActionEnum=Rm;_t.ScopeEnum=KP;_t.StrategyEnum=yyt;_t.SynonymEnum=Cyt;_t.addApiKey=Cmt;_t.assignUserID=Emt;_t.assignUserIDs=Imt;_t.batch=iCe;_t.browseObjects=jmt;_t.browseRules=Ymt;_t.browseSynonyms=Wmt;_t.chunkedBatch=UP;_t.clearObjects=Jmt;_t.clearRules=Vmt;_t.clearSynonyms=zmt;_t.copyIndex=OP;_t.copyRules=wmt;_t.copySettings=Bmt;_t.copySynonyms=Qmt;_t.createBrowsablePromise=LP;_t.createMissingObjectIDError=tCe;_t.createObjectNotFoundError=rCe;_t.createSearchClient=ymt;_t.createValidUntilNotFoundError=nCe;_t.deleteApiKey=vmt;_t.deleteBy=Xmt;_t.deleteIndex=Zmt;_t.deleteObject=$mt;_t.deleteObjects=sCe;_t.deleteRule=eyt;_t.deleteSynonym=tyt;_t.exists=ryt;_t.findObject=nyt;_t.generateSecuredApiKey=Dmt;_t.getApiKey=s2;_t.getLogs=Smt;_t.getObject=iyt;_t.getObjectPosition=syt;_t.getObjects=oyt;_t.getRule=ayt;_t.getSecuredApiKeyRemainingValidity=kmt;_t.getSettings=oCe;_t.getSynonym=Ayt;_t.getTask=aCe;_t.getTopUserIDs=xmt;_t.getUserID=Pmt;_t.hasPendingMappings=bmt;_t.initIndex=o2;_t.listApiKeys=Fmt;_t.listClusters=Rmt;_t.listIndices=Tmt;_t.listUserIDs=Nmt;_t.moveIndex=Mmt;_t.multipleBatch=Lmt;_t.multipleGetObjects=Omt;_t.multipleQueries=Umt;_t.multipleSearchForFacetValues=Kmt;_t.partialUpdateObject=lyt;_t.partialUpdateObjects=ACe;_t.removeUserID=_mt;_t.replaceAllObjects=cyt;_t.replaceAllRules=uyt;_t.replaceAllSynonyms=fyt;_t.restoreApiKey=Hmt;_t.saveObject=gyt;_t.saveObjects=x6;_t.saveRule=pyt;_t.saveRules=P6;_t.saveSynonym=hyt;_t.saveSynonyms=b6;_t.search=lCe;_t.searchForFacetValues=cCe;_t.searchRules=uCe;_t.searchSynonyms=fCe;_t.searchUserIDs=qmt;_t.setSettings=dyt;_t.updateApiKey=Gmt;_t.waitTask=Cs});var hCe=_((tYt,pCe)=>{pCe.exports=gCe()});var dCe=_(_P=>{"use strict";Object.defineProperty(_P,"__esModule",{value:!0});function Eyt(){return{debug(t,e){return Promise.resolve()},info(t,e){return Promise.resolve()},error(t,e){return Promise.resolve()}}}var Iyt={Debug:1,Info:2,Error:3};_P.LogLevelEnum=Iyt;_P.createNullLogger=Eyt});var yCe=_((nYt,mCe)=>{mCe.exports=dCe()});var ICe=_(F6=>{"use strict";Object.defineProperty(F6,"__esModule",{value:!0});var CCe=Ie("http"),ECe=Ie("https"),wyt=Ie("url");function Byt(){let t={keepAlive:!0},e=new CCe.Agent(t),r=new ECe.Agent(t);return{send(o){return new Promise(a=>{let n=wyt.parse(o.url),c=n.query===null?n.pathname:`${n.pathname}?${n.query}`,f={agent:n.protocol==="https:"?r:e,hostname:n.hostname,path:c,method:o.method,headers:o.headers,...n.port!==void 0?{port:n.port||""}:{}},g=(n.protocol==="https:"?ECe:CCe).request(f,Q=>{let x="";Q.on("data",C=>x+=C),Q.on("end",()=>{clearTimeout(E),clearTimeout(B),a({status:Q.statusCode||0,content:x,isTimedOut:!1})})}),p=(Q,x)=>setTimeout(()=>{g.abort(),a({status:0,content:x,isTimedOut:!0})},Q*1e3),E=p(o.connectTimeout,"Connection timeout"),B;g.on("error",Q=>{clearTimeout(E),clearTimeout(B),a({status:0,content:Q.message,isTimedOut:!1})}),g.once("response",()=>{clearTimeout(E),B=p(o.responseTimeout,"Socket timeout")}),o.data!==void 0&&g.write(o.data),g.end()})},destroy(){return e.destroy(),r.destroy(),Promise.resolve()}}}F6.createNodeHttpRequester=Byt});var BCe=_((sYt,wCe)=>{wCe.exports=ICe()});var SCe=_((oYt,DCe)=>{"use strict";var QCe=Bye(),Qyt=Dye(),qE=zye(),T6=e2(),R6=eCe(),ir=hCe(),vyt=yCe(),Dyt=BCe(),Syt=r2();function vCe(t,e,r){let o={appId:t,apiKey:e,timeouts:{connect:2,read:5,write:30},requester:Dyt.createNodeHttpRequester(),logger:vyt.createNullLogger(),responsesCache:QCe.createNullCache(),requestsCache:QCe.createNullCache(),hostsCache:Qyt.createInMemoryCache(),userAgent:Syt.createUserAgent(T6.version).add({segment:"Node.js",version:process.versions.node})};return ir.createSearchClient({...o,...r,methods:{search:ir.multipleQueries,searchForFacetValues:ir.multipleSearchForFacetValues,multipleBatch:ir.multipleBatch,multipleGetObjects:ir.multipleGetObjects,multipleQueries:ir.multipleQueries,copyIndex:ir.copyIndex,copySettings:ir.copySettings,copyRules:ir.copyRules,copySynonyms:ir.copySynonyms,moveIndex:ir.moveIndex,listIndices:ir.listIndices,getLogs:ir.getLogs,listClusters:ir.listClusters,multipleSearchForFacetValues:ir.multipleSearchForFacetValues,getApiKey:ir.getApiKey,addApiKey:ir.addApiKey,listApiKeys:ir.listApiKeys,updateApiKey:ir.updateApiKey,deleteApiKey:ir.deleteApiKey,restoreApiKey:ir.restoreApiKey,assignUserID:ir.assignUserID,assignUserIDs:ir.assignUserIDs,getUserID:ir.getUserID,searchUserIDs:ir.searchUserIDs,listUserIDs:ir.listUserIDs,getTopUserIDs:ir.getTopUserIDs,removeUserID:ir.removeUserID,hasPendingMappings:ir.hasPendingMappings,generateSecuredApiKey:ir.generateSecuredApiKey,getSecuredApiKeyRemainingValidity:ir.getSecuredApiKeyRemainingValidity,destroy:T6.destroy,initIndex:a=>n=>ir.initIndex(a)(n,{methods:{batch:ir.batch,delete:ir.deleteIndex,getObject:ir.getObject,getObjects:ir.getObjects,saveObject:ir.saveObject,saveObjects:ir.saveObjects,search:ir.search,searchForFacetValues:ir.searchForFacetValues,waitTask:ir.waitTask,setSettings:ir.setSettings,getSettings:ir.getSettings,partialUpdateObject:ir.partialUpdateObject,partialUpdateObjects:ir.partialUpdateObjects,deleteObject:ir.deleteObject,deleteObjects:ir.deleteObjects,deleteBy:ir.deleteBy,clearObjects:ir.clearObjects,browseObjects:ir.browseObjects,getObjectPosition:ir.getObjectPosition,findObject:ir.findObject,exists:ir.exists,saveSynonym:ir.saveSynonym,saveSynonyms:ir.saveSynonyms,getSynonym:ir.getSynonym,searchSynonyms:ir.searchSynonyms,browseSynonyms:ir.browseSynonyms,deleteSynonym:ir.deleteSynonym,clearSynonyms:ir.clearSynonyms,replaceAllObjects:ir.replaceAllObjects,replaceAllSynonyms:ir.replaceAllSynonyms,searchRules:ir.searchRules,getRule:ir.getRule,deleteRule:ir.deleteRule,saveRule:ir.saveRule,saveRules:ir.saveRules,replaceAllRules:ir.replaceAllRules,browseRules:ir.browseRules,clearRules:ir.clearRules}}),initAnalytics:()=>a=>qE.createAnalyticsClient({...o,...a,methods:{addABTest:qE.addABTest,getABTest:qE.getABTest,getABTests:qE.getABTests,stopABTest:qE.stopABTest,deleteABTest:qE.deleteABTest}}),initRecommendation:()=>a=>R6.createRecommendationClient({...o,...a,methods:{getPersonalizationStrategy:R6.getPersonalizationStrategy,setPersonalizationStrategy:R6.setPersonalizationStrategy}})}})}vCe.version=T6.version;DCe.exports=vCe});var M6=_((aYt,N6)=>{var kCe=SCe();N6.exports=kCe;N6.exports.default=kCe});var U6=_((lYt,bCe)=>{"use strict";var PCe=Object.getOwnPropertySymbols,xyt=Object.prototype.hasOwnProperty,Pyt=Object.prototype.propertyIsEnumerable;function byt(t){if(t==null)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(t)}function Fyt(){try{if(!Object.assign)return!1;var t=new String("abc");if(t[5]="de",Object.getOwnPropertyNames(t)[0]==="5")return!1;for(var e={},r=0;r<10;r++)e["_"+String.fromCharCode(r)]=r;var o=Object.getOwnPropertyNames(e).map(function(n){return e[n]});if(o.join("")!=="0123456789")return!1;var a={};return"abcdefghijklmnopqrst".split("").forEach(function(n){a[n]=n}),Object.keys(Object.assign({},a)).join("")==="abcdefghijklmnopqrst"}catch{return!1}}bCe.exports=Fyt()?Object.assign:function(t,e){for(var r,o=byt(t),a,n=1;n{"use strict";var G6=U6(),vc=typeof Symbol=="function"&&Symbol.for,a2=vc?Symbol.for("react.element"):60103,Ryt=vc?Symbol.for("react.portal"):60106,Tyt=vc?Symbol.for("react.fragment"):60107,Nyt=vc?Symbol.for("react.strict_mode"):60108,Myt=vc?Symbol.for("react.profiler"):60114,Lyt=vc?Symbol.for("react.provider"):60109,Oyt=vc?Symbol.for("react.context"):60110,Uyt=vc?Symbol.for("react.forward_ref"):60112,Kyt=vc?Symbol.for("react.suspense"):60113,_yt=vc?Symbol.for("react.memo"):60115,Hyt=vc?Symbol.for("react.lazy"):60116,FCe=typeof Symbol=="function"&&Symbol.iterator;function A2(t){for(var e="https://reactjs.org/docs/error-decoder.html?invariant="+t,r=1;rHP.length&&HP.push(t)}function _6(t,e,r,o){var a=typeof t;(a==="undefined"||a==="boolean")&&(t=null);var n=!1;if(t===null)n=!0;else switch(a){case"string":case"number":n=!0;break;case"object":switch(t.$$typeof){case a2:case Ryt:n=!0}}if(n)return r(o,t,e===""?"."+K6(t,0):e),1;if(n=0,e=e===""?".":e+":",Array.isArray(t))for(var c=0;c{"use strict";GCe.exports=qCe()});var z6=_((fYt,V6)=>{"use strict";var In=V6.exports;V6.exports.default=In;var Xn="\x1B[",l2="\x1B]",jE="\x07",qP=";",jCe=process.env.TERM_PROGRAM==="Apple_Terminal";In.cursorTo=(t,e)=>{if(typeof t!="number")throw new TypeError("The `x` argument is required");return typeof e!="number"?Xn+(t+1)+"G":Xn+(e+1)+";"+(t+1)+"H"};In.cursorMove=(t,e)=>{if(typeof t!="number")throw new TypeError("The `x` argument is required");let r="";return t<0?r+=Xn+-t+"D":t>0&&(r+=Xn+t+"C"),e<0?r+=Xn+-e+"A":e>0&&(r+=Xn+e+"B"),r};In.cursorUp=(t=1)=>Xn+t+"A";In.cursorDown=(t=1)=>Xn+t+"B";In.cursorForward=(t=1)=>Xn+t+"C";In.cursorBackward=(t=1)=>Xn+t+"D";In.cursorLeft=Xn+"G";In.cursorSavePosition=jCe?"\x1B7":Xn+"s";In.cursorRestorePosition=jCe?"\x1B8":Xn+"u";In.cursorGetPosition=Xn+"6n";In.cursorNextLine=Xn+"E";In.cursorPrevLine=Xn+"F";In.cursorHide=Xn+"?25l";In.cursorShow=Xn+"?25h";In.eraseLines=t=>{let e="";for(let r=0;r[l2,"8",qP,qP,e,jE,t,l2,"8",qP,qP,jE].join("");In.image=(t,e={})=>{let r=`${l2}1337;File=inline=1`;return e.width&&(r+=`;width=${e.width}`),e.height&&(r+=`;height=${e.height}`),e.preserveAspectRatio===!1&&(r+=";preserveAspectRatio=0"),r+":"+t.toString("base64")+jE};In.iTerm={setCwd:(t=process.cwd())=>`${l2}50;CurrentDir=${t}${jE}`,annotation:(t,e={})=>{let r=`${l2}1337;`,o=typeof e.x<"u",a=typeof e.y<"u";if((o||a)&&!(o&&a&&typeof e.length<"u"))throw new Error("`x`, `y` and `length` must be defined when `x` or `y` is defined");return t=t.replace(/\|/g,""),r+=e.isHidden?"AddHiddenAnnotation=":"AddAnnotation=",e.length>0?r+=(o?[t,e.length,e.x,e.y]:[e.length,t]).join("|"):r+=t,r+jE}}});var WCe=_((gYt,X6)=>{"use strict";var YCe=(t,e)=>{for(let r of Reflect.ownKeys(e))Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(e,r));return t};X6.exports=YCe;X6.exports.default=YCe});var VCe=_((pYt,jP)=>{"use strict";var Jyt=WCe(),GP=new WeakMap,JCe=(t,e={})=>{if(typeof t!="function")throw new TypeError("Expected a function");let r,o=0,a=t.displayName||t.name||"",n=function(...c){if(GP.set(n,++o),o===1)r=t.apply(this,c),t=null;else if(e.throw===!0)throw new Error(`Function \`${a}\` can only be called once`);return r};return Jyt(n,t),GP.set(n,o),n};jP.exports=JCe;jP.exports.default=JCe;jP.exports.callCount=t=>{if(!GP.has(t))throw new Error(`The given function \`${t.name}\` is not wrapped by the \`onetime\` package`);return GP.get(t)}});var zCe=_((hYt,YP)=>{YP.exports=["SIGABRT","SIGALRM","SIGHUP","SIGINT","SIGTERM"];process.platform!=="win32"&&YP.exports.push("SIGVTALRM","SIGXCPU","SIGXFSZ","SIGUSR2","SIGTRAP","SIGSYS","SIGQUIT","SIGIOT");process.platform==="linux"&&YP.exports.push("SIGIO","SIGPOLL","SIGPWR","SIGSTKFLT","SIGUNUSED")});var eH=_((dYt,JE)=>{var Ri=global.process,Tm=function(t){return t&&typeof t=="object"&&typeof t.removeListener=="function"&&typeof t.emit=="function"&&typeof t.reallyExit=="function"&&typeof t.listeners=="function"&&typeof t.kill=="function"&&typeof t.pid=="number"&&typeof t.on=="function"};Tm(Ri)?(XCe=Ie("assert"),YE=zCe(),ZCe=/^win/i.test(Ri.platform),c2=Ie("events"),typeof c2!="function"&&(c2=c2.EventEmitter),Ri.__signal_exit_emitter__?Zs=Ri.__signal_exit_emitter__:(Zs=Ri.__signal_exit_emitter__=new c2,Zs.count=0,Zs.emitted={}),Zs.infinite||(Zs.setMaxListeners(1/0),Zs.infinite=!0),JE.exports=function(t,e){if(!Tm(global.process))return function(){};XCe.equal(typeof t,"function","a callback must be provided for exit handler"),WE===!1&&Z6();var r="exit";e&&e.alwaysLast&&(r="afterexit");var o=function(){Zs.removeListener(r,t),Zs.listeners("exit").length===0&&Zs.listeners("afterexit").length===0&&WP()};return Zs.on(r,t),o},WP=function(){!WE||!Tm(global.process)||(WE=!1,YE.forEach(function(e){try{Ri.removeListener(e,JP[e])}catch{}}),Ri.emit=VP,Ri.reallyExit=$6,Zs.count-=1)},JE.exports.unload=WP,Nm=function(e,r,o){Zs.emitted[e]||(Zs.emitted[e]=!0,Zs.emit(e,r,o))},JP={},YE.forEach(function(t){JP[t]=function(){if(!!Tm(global.process)){var r=Ri.listeners(t);r.length===Zs.count&&(WP(),Nm("exit",null,t),Nm("afterexit",null,t),ZCe&&t==="SIGHUP"&&(t="SIGINT"),Ri.kill(Ri.pid,t))}}}),JE.exports.signals=function(){return YE},WE=!1,Z6=function(){WE||!Tm(global.process)||(WE=!0,Zs.count+=1,YE=YE.filter(function(e){try{return Ri.on(e,JP[e]),!0}catch{return!1}}),Ri.emit=eEe,Ri.reallyExit=$Ce)},JE.exports.load=Z6,$6=Ri.reallyExit,$Ce=function(e){!Tm(global.process)||(Ri.exitCode=e||0,Nm("exit",Ri.exitCode,null),Nm("afterexit",Ri.exitCode,null),$6.call(Ri,Ri.exitCode))},VP=Ri.emit,eEe=function(e,r){if(e==="exit"&&Tm(global.process)){r!==void 0&&(Ri.exitCode=r);var o=VP.apply(this,arguments);return Nm("exit",Ri.exitCode,null),Nm("afterexit",Ri.exitCode,null),o}else return VP.apply(this,arguments)}):JE.exports=function(){return function(){}};var XCe,YE,ZCe,c2,Zs,WP,Nm,JP,WE,Z6,$6,$Ce,VP,eEe});var rEe=_((mYt,tEe)=>{"use strict";var Vyt=VCe(),zyt=eH();tEe.exports=Vyt(()=>{zyt(()=>{process.stderr.write("\x1B[?25h")},{alwaysLast:!0})})});var tH=_(VE=>{"use strict";var Xyt=rEe(),zP=!1;VE.show=(t=process.stderr)=>{!t.isTTY||(zP=!1,t.write("\x1B[?25h"))};VE.hide=(t=process.stderr)=>{!t.isTTY||(Xyt(),zP=!0,t.write("\x1B[?25l"))};VE.toggle=(t,e)=>{t!==void 0&&(zP=t),zP?VE.show(e):VE.hide(e)}});var oEe=_(u2=>{"use strict";var sEe=u2&&u2.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(u2,"__esModule",{value:!0});var nEe=sEe(z6()),iEe=sEe(tH()),Zyt=(t,{showCursor:e=!1}={})=>{let r=0,o="",a=!1,n=c=>{!e&&!a&&(iEe.default.hide(),a=!0);let f=c+` -`;f!==o&&(o=f,t.write(nEe.default.eraseLines(r)+f),r=f.split(` -`).length)};return n.clear=()=>{t.write(nEe.default.eraseLines(r)),o="",r=0},n.done=()=>{o="",r=0,e||(iEe.default.show(),a=!1)},n};u2.default={create:Zyt}});var aEe=_((EYt,$yt)=>{$yt.exports=[{name:"AppVeyor",constant:"APPVEYOR",env:"APPVEYOR",pr:"APPVEYOR_PULL_REQUEST_NUMBER"},{name:"Azure Pipelines",constant:"AZURE_PIPELINES",env:"SYSTEM_TEAMFOUNDATIONCOLLECTIONURI",pr:"SYSTEM_PULLREQUEST_PULLREQUESTID"},{name:"Bamboo",constant:"BAMBOO",env:"bamboo_planKey"},{name:"Bitbucket Pipelines",constant:"BITBUCKET",env:"BITBUCKET_COMMIT",pr:"BITBUCKET_PR_ID"},{name:"Bitrise",constant:"BITRISE",env:"BITRISE_IO",pr:"BITRISE_PULL_REQUEST"},{name:"Buddy",constant:"BUDDY",env:"BUDDY_WORKSPACE_ID",pr:"BUDDY_EXECUTION_PULL_REQUEST_ID"},{name:"Buildkite",constant:"BUILDKITE",env:"BUILDKITE",pr:{env:"BUILDKITE_PULL_REQUEST",ne:"false"}},{name:"CircleCI",constant:"CIRCLE",env:"CIRCLECI",pr:"CIRCLE_PULL_REQUEST"},{name:"Cirrus CI",constant:"CIRRUS",env:"CIRRUS_CI",pr:"CIRRUS_PR"},{name:"AWS CodeBuild",constant:"CODEBUILD",env:"CODEBUILD_BUILD_ARN"},{name:"Codeship",constant:"CODESHIP",env:{CI_NAME:"codeship"}},{name:"Drone",constant:"DRONE",env:"DRONE",pr:{DRONE_BUILD_EVENT:"pull_request"}},{name:"dsari",constant:"DSARI",env:"DSARI"},{name:"GitLab CI",constant:"GITLAB",env:"GITLAB_CI"},{name:"GoCD",constant:"GOCD",env:"GO_PIPELINE_LABEL"},{name:"Hudson",constant:"HUDSON",env:"HUDSON_URL"},{name:"Jenkins",constant:"JENKINS",env:["JENKINS_URL","BUILD_ID"],pr:{any:["ghprbPullId","CHANGE_ID"]}},{name:"Magnum CI",constant:"MAGNUM",env:"MAGNUM"},{name:"Netlify CI",constant:"NETLIFY",env:"NETLIFY_BUILD_BASE",pr:{env:"PULL_REQUEST",ne:"false"}},{name:"Sail CI",constant:"SAIL",env:"SAILCI",pr:"SAIL_PULL_REQUEST_NUMBER"},{name:"Semaphore",constant:"SEMAPHORE",env:"SEMAPHORE",pr:"PULL_REQUEST_NUMBER"},{name:"Shippable",constant:"SHIPPABLE",env:"SHIPPABLE",pr:{IS_PULL_REQUEST:"true"}},{name:"Solano CI",constant:"SOLANO",env:"TDDIUM",pr:"TDDIUM_PR_ID"},{name:"Strider CD",constant:"STRIDER",env:"STRIDER"},{name:"TaskCluster",constant:"TASKCLUSTER",env:["TASK_ID","RUN_ID"]},{name:"TeamCity",constant:"TEAMCITY",env:"TEAMCITY_VERSION"},{name:"Travis CI",constant:"TRAVIS",env:"TRAVIS",pr:{env:"TRAVIS_PULL_REQUEST",ne:"false"}}]});var cEe=_(LA=>{"use strict";var lEe=aEe(),Ou=process.env;Object.defineProperty(LA,"_vendors",{value:lEe.map(function(t){return t.constant})});LA.name=null;LA.isPR=null;lEe.forEach(function(t){var e=Array.isArray(t.env)?t.env:[t.env],r=e.every(function(o){return AEe(o)});if(LA[t.constant]=r,r)switch(LA.name=t.name,typeof t.pr){case"string":LA.isPR=!!Ou[t.pr];break;case"object":"env"in t.pr?LA.isPR=t.pr.env in Ou&&Ou[t.pr.env]!==t.pr.ne:"any"in t.pr?LA.isPR=t.pr.any.some(function(o){return!!Ou[o]}):LA.isPR=AEe(t.pr);break;default:LA.isPR=null}});LA.isCI=!!(Ou.CI||Ou.CONTINUOUS_INTEGRATION||Ou.BUILD_NUMBER||Ou.RUN_ID||LA.name);function AEe(t){return typeof t=="string"?!!Ou[t]:Object.keys(t).every(function(e){return Ou[e]===t[e]})}});var fEe=_((wYt,uEe)=>{"use strict";uEe.exports=cEe().isCI});var pEe=_((BYt,gEe)=>{"use strict";var eCt=t=>{let e=new Set;do for(let r of Reflect.ownKeys(t))e.add([t,r]);while((t=Reflect.getPrototypeOf(t))&&t!==Object.prototype);return e};gEe.exports=(t,{include:e,exclude:r}={})=>{let o=a=>{let n=c=>typeof c=="string"?a===c:c.test(a);return e?e.some(n):r?!r.some(n):!0};for(let[a,n]of eCt(t.constructor.prototype)){if(n==="constructor"||!o(n))continue;let c=Reflect.getOwnPropertyDescriptor(a,n);c&&typeof c.value=="function"&&(t[n]=t[n].bind(t))}return t}});var IEe=_(qn=>{"use strict";Object.defineProperty(qn,"__esModule",{value:!0});var XE,p2,tb,rb,AH;typeof window>"u"||typeof MessageChannel!="function"?(zE=null,rH=null,nH=function(){if(zE!==null)try{var t=qn.unstable_now();zE(!0,t),zE=null}catch(e){throw setTimeout(nH,0),e}},hEe=Date.now(),qn.unstable_now=function(){return Date.now()-hEe},XE=function(t){zE!==null?setTimeout(XE,0,t):(zE=t,setTimeout(nH,0))},p2=function(t,e){rH=setTimeout(t,e)},tb=function(){clearTimeout(rH)},rb=function(){return!1},AH=qn.unstable_forceFrameRate=function(){}):(XP=window.performance,iH=window.Date,dEe=window.setTimeout,mEe=window.clearTimeout,typeof console<"u"&&(yEe=window.cancelAnimationFrame,typeof window.requestAnimationFrame!="function"&&console.error("This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills"),typeof yEe!="function"&&console.error("This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills")),typeof XP=="object"&&typeof XP.now=="function"?qn.unstable_now=function(){return XP.now()}:(CEe=iH.now(),qn.unstable_now=function(){return iH.now()-CEe}),f2=!1,g2=null,ZP=-1,sH=5,oH=0,rb=function(){return qn.unstable_now()>=oH},AH=function(){},qn.unstable_forceFrameRate=function(t){0>t||125eb(c,r))g!==void 0&&0>eb(g,c)?(t[o]=g,t[f]=r,o=f):(t[o]=c,t[n]=r,o=n);else if(g!==void 0&&0>eb(g,r))t[o]=g,t[f]=r,o=f;else break e}}return e}return null}function eb(t,e){var r=t.sortIndex-e.sortIndex;return r!==0?r:t.id-e.id}var Dc=[],Jh=[],tCt=1,wa=null,Xo=3,ib=!1,Mm=!1,h2=!1;function sb(t){for(var e=Tl(Jh);e!==null;){if(e.callback===null)nb(Jh);else if(e.startTime<=t)nb(Jh),e.sortIndex=e.expirationTime,lH(Dc,e);else break;e=Tl(Jh)}}function cH(t){if(h2=!1,sb(t),!Mm)if(Tl(Dc)!==null)Mm=!0,XE(uH);else{var e=Tl(Jh);e!==null&&p2(cH,e.startTime-t)}}function uH(t,e){Mm=!1,h2&&(h2=!1,tb()),ib=!0;var r=Xo;try{for(sb(e),wa=Tl(Dc);wa!==null&&(!(wa.expirationTime>e)||t&&!rb());){var o=wa.callback;if(o!==null){wa.callback=null,Xo=wa.priorityLevel;var a=o(wa.expirationTime<=e);e=qn.unstable_now(),typeof a=="function"?wa.callback=a:wa===Tl(Dc)&&nb(Dc),sb(e)}else nb(Dc);wa=Tl(Dc)}if(wa!==null)var n=!0;else{var c=Tl(Jh);c!==null&&p2(cH,c.startTime-e),n=!1}return n}finally{wa=null,Xo=r,ib=!1}}function EEe(t){switch(t){case 1:return-1;case 2:return 250;case 5:return 1073741823;case 4:return 1e4;default:return 5e3}}var rCt=AH;qn.unstable_ImmediatePriority=1;qn.unstable_UserBlockingPriority=2;qn.unstable_NormalPriority=3;qn.unstable_IdlePriority=5;qn.unstable_LowPriority=4;qn.unstable_runWithPriority=function(t,e){switch(t){case 1:case 2:case 3:case 4:case 5:break;default:t=3}var r=Xo;Xo=t;try{return e()}finally{Xo=r}};qn.unstable_next=function(t){switch(Xo){case 1:case 2:case 3:var e=3;break;default:e=Xo}var r=Xo;Xo=e;try{return t()}finally{Xo=r}};qn.unstable_scheduleCallback=function(t,e,r){var o=qn.unstable_now();if(typeof r=="object"&&r!==null){var a=r.delay;a=typeof a=="number"&&0o?(t.sortIndex=a,lH(Jh,t),Tl(Dc)===null&&t===Tl(Jh)&&(h2?tb():h2=!0,p2(cH,a-o))):(t.sortIndex=r,lH(Dc,t),Mm||ib||(Mm=!0,XE(uH))),t};qn.unstable_cancelCallback=function(t){t.callback=null};qn.unstable_wrapCallback=function(t){var e=Xo;return function(){var r=Xo;Xo=e;try{return t.apply(this,arguments)}finally{Xo=r}}};qn.unstable_getCurrentPriorityLevel=function(){return Xo};qn.unstable_shouldYield=function(){var t=qn.unstable_now();sb(t);var e=Tl(Dc);return e!==wa&&wa!==null&&e!==null&&e.callback!==null&&e.startTime<=t&&e.expirationTime{"use strict";wEe.exports=IEe()});var BEe=_((DYt,d2)=>{d2.exports=function t(e){"use strict";var r=U6(),o=dn(),a=fH();function n(D){for(var v="https://reactjs.org/docs/error-decoder.html?invariant="+D,T=1;TWn||(D.current=Xe[Wn],Xe[Wn]=null,Wn--)}function Xt(D,v){Wn++,Xe[Wn]=D.current,D.current=v}var Ti={},Jn={current:Ti},us={current:!1},Dt=Ti;function Xi(D,v){var T=D.type.contextTypes;if(!T)return Ti;var j=D.stateNode;if(j&&j.__reactInternalMemoizedUnmaskedChildContext===v)return j.__reactInternalMemoizedMaskedChildContext;var V={},he;for(he in T)V[he]=v[he];return j&&(D=D.stateNode,D.__reactInternalMemoizedUnmaskedChildContext=v,D.__reactInternalMemoizedMaskedChildContext=V),V}function Pn(D){return D=D.childContextTypes,D!=null}function fs(D){ii(us,D),ii(Jn,D)}function sA(D){ii(us,D),ii(Jn,D)}function kr(D,v,T){if(Jn.current!==Ti)throw Error(n(168));Xt(Jn,v,D),Xt(us,T,D)}function Qo(D,v,T){var j=D.stateNode;if(D=v.childContextTypes,typeof j.getChildContext!="function")return T;j=j.getChildContext();for(var V in j)if(!(V in D))throw Error(n(108,pe(v)||"Unknown",V));return r({},T,{},j)}function fr(D){var v=D.stateNode;return v=v&&v.__reactInternalMemoizedMergedChildContext||Ti,Dt=Jn.current,Xt(Jn,v,D),Xt(us,us.current,D),!0}function Da(D,v,T){var j=D.stateNode;if(!j)throw Error(n(169));T?(v=Qo(D,v,Dt),j.__reactInternalMemoizedMergedChildContext=v,ii(us,D),ii(Jn,D),Xt(Jn,v,D)):ii(us,D),Xt(us,T,D)}var $=a.unstable_runWithPriority,rn=a.unstable_scheduleCallback,we=a.unstable_cancelCallback,Ot=a.unstable_shouldYield,_A=a.unstable_requestPaint,Zi=a.unstable_now,_l=a.unstable_getCurrentPriorityLevel,jt=a.unstable_ImmediatePriority,oA=a.unstable_UserBlockingPriority,Lc=a.unstable_NormalPriority,ef=a.unstable_LowPriority,HA=a.unstable_IdlePriority,Oc={},Ln=_A!==void 0?_A:function(){},mi=null,qA=null,Uc=!1,ea=Zi(),$i=1e4>ea?Zi:function(){return Zi()-ea};function vo(){switch(_l()){case jt:return 99;case oA:return 98;case Lc:return 97;case ef:return 96;case HA:return 95;default:throw Error(n(332))}}function it(D){switch(D){case 99:return jt;case 98:return oA;case 97:return Lc;case 96:return ef;case 95:return HA;default:throw Error(n(332))}}function eo(D,v){return D=it(D),$(D,v)}function Sa(D,v,T){return D=it(D),rn(D,v,T)}function Hl(D){return mi===null?(mi=[D],qA=rn(jt,ka)):mi.push(D),Oc}function qi(){if(qA!==null){var D=qA;qA=null,we(D)}ka()}function ka(){if(!Uc&&mi!==null){Uc=!0;var D=0;try{var v=mi;eo(99,function(){for(;D=v&&(aa=!0),D.firstContext=null)}function io(D,v){if(ra!==D&&v!==!1&&v!==0)if((typeof v!="number"||v===1073741823)&&(ra=D,v=1073741823),v={context:D,observedBits:v,next:null},Qs===null){if(to===null)throw Error(n(308));Qs=v,to.dependencies={expirationTime:0,firstContext:v,responders:null}}else Qs=Qs.next=v;return k?D._currentValue:D._currentValue2}var Do=!1;function ci(D){return{baseState:D,firstUpdate:null,lastUpdate:null,firstCapturedUpdate:null,lastCapturedUpdate:null,firstEffect:null,lastEffect:null,firstCapturedEffect:null,lastCapturedEffect:null}}function si(D){return{baseState:D.baseState,firstUpdate:D.firstUpdate,lastUpdate:D.lastUpdate,firstCapturedUpdate:null,lastCapturedUpdate:null,firstEffect:null,lastEffect:null,firstCapturedEffect:null,lastCapturedEffect:null}}function ia(D,v){return{expirationTime:D,suspenseConfig:v,tag:0,payload:null,callback:null,next:null,nextEffect:null}}function Us(D,v){D.lastUpdate===null?D.firstUpdate=D.lastUpdate=v:(D.lastUpdate.next=v,D.lastUpdate=v)}function Gi(D,v){var T=D.alternate;if(T===null){var j=D.updateQueue,V=null;j===null&&(j=D.updateQueue=ci(D.memoizedState))}else j=D.updateQueue,V=T.updateQueue,j===null?V===null?(j=D.updateQueue=ci(D.memoizedState),V=T.updateQueue=ci(T.memoizedState)):j=D.updateQueue=si(V):V===null&&(V=T.updateQueue=si(j));V===null||j===V?Us(j,v):j.lastUpdate===null||V.lastUpdate===null?(Us(j,v),Us(V,v)):(Us(j,v),V.lastUpdate=v)}function GA(D,v){var T=D.updateQueue;T=T===null?D.updateQueue=ci(D.memoizedState):lA(D,T),T.lastCapturedUpdate===null?T.firstCapturedUpdate=T.lastCapturedUpdate=v:(T.lastCapturedUpdate.next=v,T.lastCapturedUpdate=v)}function lA(D,v){var T=D.alternate;return T!==null&&v===T.updateQueue&&(v=D.updateQueue=si(v)),v}function ae(D,v,T,j,V,he){switch(T.tag){case 1:return D=T.payload,typeof D=="function"?D.call(he,j,V):D;case 3:D.effectTag=D.effectTag&-4097|64;case 0:if(D=T.payload,V=typeof D=="function"?D.call(he,j,V):D,V==null)break;return r({},j,V);case 2:Do=!0}return j}function ve(D,v,T,j,V){Do=!1,v=lA(D,v);for(var he=v.baseState,De=null,vt=0,It=v.firstUpdate,bt=he;It!==null;){var zr=It.expirationTime;zrUn?(Ei=Kr,Kr=null):Ei=Kr.sibling;var un=bi(at,Kr,ht[Un],Wt);if(un===null){Kr===null&&(Kr=Ei);break}D&&Kr&&un.alternate===null&&v(at,Kr),et=he(un,et,Un),On===null?xr=un:On.sibling=un,On=un,Kr=Ei}if(Un===ht.length)return T(at,Kr),xr;if(Kr===null){for(;UnUn?(Ei=Kr,Kr=null):Ei=Kr.sibling;var Ro=bi(at,Kr,un.value,Wt);if(Ro===null){Kr===null&&(Kr=Ei);break}D&&Kr&&Ro.alternate===null&&v(at,Kr),et=he(Ro,et,Un),On===null?xr=Ro:On.sibling=Ro,On=Ro,Kr=Ei}if(un.done)return T(at,Kr),xr;if(Kr===null){for(;!un.done;Un++,un=ht.next())un=Ps(at,un.value,Wt),un!==null&&(et=he(un,et,Un),On===null?xr=un:On.sibling=un,On=un);return xr}for(Kr=j(at,Kr);!un.done;Un++,un=ht.next())un=Fo(Kr,at,Un,un.value,Wt),un!==null&&(D&&un.alternate!==null&&Kr.delete(un.key===null?Un:un.key),et=he(un,et,Un),On===null?xr=un:On.sibling=un,On=un);return D&&Kr.forEach(function(JF){return v(at,JF)}),xr}return function(at,et,ht,Wt){var xr=typeof ht=="object"&&ht!==null&&ht.type===E&&ht.key===null;xr&&(ht=ht.props.children);var On=typeof ht=="object"&&ht!==null;if(On)switch(ht.$$typeof){case g:e:{for(On=ht.key,xr=et;xr!==null;){if(xr.key===On)if(xr.tag===7?ht.type===E:xr.elementType===ht.type){T(at,xr.sibling),et=V(xr,ht.type===E?ht.props.children:ht.props,Wt),et.ref=jA(at,xr,ht),et.return=at,at=et;break e}else{T(at,xr);break}else v(at,xr);xr=xr.sibling}ht.type===E?(et=zc(ht.props.children,at.mode,Wt,ht.key),et.return=at,at=et):(Wt=hy(ht.type,ht.key,ht.props,null,at.mode,Wt),Wt.ref=jA(at,et,ht),Wt.return=at,at=Wt)}return De(at);case p:e:{for(xr=ht.key;et!==null;){if(et.key===xr)if(et.tag===4&&et.stateNode.containerInfo===ht.containerInfo&&et.stateNode.implementation===ht.implementation){T(at,et.sibling),et=V(et,ht.children||[],Wt),et.return=at,at=et;break e}else{T(at,et);break}else v(at,et);et=et.sibling}et=HI(ht,at.mode,Wt),et.return=at,at=et}return De(at)}if(typeof ht=="string"||typeof ht=="number")return ht=""+ht,et!==null&&et.tag===6?(T(at,et.sibling),et=V(et,ht,Wt),et.return=at,at=et):(T(at,et),et=_I(ht,at.mode,Wt),et.return=at,at=et),De(at);if(Kc(ht))return df(at,et,ht,Wt);if(Qe(ht))return la(at,et,ht,Wt);if(On&&_c(at,ht),typeof ht>"u"&&!xr)switch(at.tag){case 1:case 0:throw at=at.type,Error(n(152,at.displayName||at.name||"Component"))}return T(at,et)}}var ql=Tg(!0),Ng=Tg(!1),Gl={},so={current:Gl},Hc={current:Gl},YA={current:Gl};function sa(D){if(D===Gl)throw Error(n(174));return D}function Mg(D,v){Xt(YA,v,D),Xt(Hc,D,D),Xt(so,Gl,D),v=le(v),ii(so,D),Xt(so,v,D)}function WA(D){ii(so,D),ii(Hc,D),ii(YA,D)}function U0(D){var v=sa(YA.current),T=sa(so.current);v=re(T,D.type,v),T!==v&&(Xt(Hc,D,D),Xt(so,v,D))}function Lg(D){Hc.current===D&&(ii(so,D),ii(Hc,D))}var oi={current:0};function tf(D){for(var v=D;v!==null;){if(v.tag===13){var T=v.memoizedState;if(T!==null&&(T=T.dehydrated,T===null||gn(T)||$s(T)))return v}else if(v.tag===19&&v.memoizedProps.revealOrder!==void 0){if((v.effectTag&64)!==0)return v}else if(v.child!==null){v.child.return=v,v=v.child;continue}if(v===D)break;for(;v.sibling===null;){if(v.return===null||v.return===D)return null;v=v.return}v.sibling.return=v.return,v=v.sibling}return null}function Og(D,v){return{responder:D,props:v}}var qc=c.ReactCurrentDispatcher,Ks=c.ReactCurrentBatchConfig,jl=0,Pa=null,es=null,oa=null,Yl=null,Ds=null,JA=null,ko=0,J=null,wt=0,ba=!1,xi=null,Fa=0;function ct(){throw Error(n(321))}function Ra(D,v){if(v===null)return!1;for(var T=0;Tko&&(ko=zr,py(ko))):(MI(zr,It.suspenseConfig),he=It.eagerReducer===D?It.eagerState:D(he,It.action)),De=It,It=It.next}while(It!==null&&It!==j);bt||(vt=De,V=he),Bs(he,v.memoizedState)||(aa=!0),v.memoizedState=he,v.baseUpdate=vt,v.baseState=V,T.lastRenderedState=he}return[v.memoizedState,T.dispatch]}function Je(D){var v=G();return typeof D=="function"&&(D=D()),v.memoizedState=v.baseState=D,D=v.queue={last:null,dispatch:null,lastRenderedReducer:ce,lastRenderedState:D},D=D.dispatch=ts.bind(null,Pa,D),[v.memoizedState,D]}function ut(D){return xe(ce,D)}function Rt(D,v,T,j){return D={tag:D,create:v,destroy:T,deps:j,next:null},J===null?(J={lastEffect:null},J.lastEffect=D.next=D):(v=J.lastEffect,v===null?J.lastEffect=D.next=D:(T=v.next,v.next=D,D.next=T,J.lastEffect=D)),D}function Ar(D,v,T,j){var V=G();wt|=D,V.memoizedState=Rt(v,T,void 0,j===void 0?null:j)}function er(D,v,T,j){var V=se();j=j===void 0?null:j;var he=void 0;if(es!==null){var De=es.memoizedState;if(he=De.destroy,j!==null&&Ra(j,De.deps)){Rt(0,T,he,j);return}}wt|=D,V.memoizedState=Rt(v,T,he,j)}function st(D,v){return Ar(516,192,D,v)}function Cr(D,v){return er(516,192,D,v)}function or(D,v){if(typeof v=="function")return D=D(),v(D),function(){v(null)};if(v!=null)return D=D(),v.current=D,function(){v.current=null}}function qr(){}function ui(D,v){return G().memoizedState=[D,v===void 0?null:v],D}function _s(D,v){var T=se();v=v===void 0?null:v;var j=T.memoizedState;return j!==null&&v!==null&&Ra(v,j[1])?j[0]:(T.memoizedState=[D,v],D)}function ts(D,v,T){if(!(25>Fa))throw Error(n(301));var j=D.alternate;if(D===Pa||j!==null&&j===Pa)if(ba=!0,D={expirationTime:jl,suspenseConfig:null,action:T,eagerReducer:null,eagerState:null,next:null},xi===null&&(xi=new Map),T=xi.get(v),T===void 0)xi.set(v,D);else{for(v=T;v.next!==null;)v=v.next;v.next=D}else{var V=La(),he=Et.suspense;V=cf(V,D,he),he={expirationTime:V,suspenseConfig:he,action:T,eagerReducer:null,eagerState:null,next:null};var De=v.last;if(De===null)he.next=he;else{var vt=De.next;vt!==null&&(he.next=vt),De.next=he}if(v.last=he,D.expirationTime===0&&(j===null||j.expirationTime===0)&&(j=v.lastRenderedReducer,j!==null))try{var It=v.lastRenderedState,bt=j(It,T);if(he.eagerReducer=j,he.eagerState=bt,Bs(bt,It))return}catch{}finally{}zl(D,V)}}var xo={readContext:io,useCallback:ct,useContext:ct,useEffect:ct,useImperativeHandle:ct,useLayoutEffect:ct,useMemo:ct,useReducer:ct,useRef:ct,useState:ct,useDebugValue:ct,useResponder:ct,useDeferredValue:ct,useTransition:ct},rs={readContext:io,useCallback:ui,useContext:io,useEffect:st,useImperativeHandle:function(D,v,T){return T=T!=null?T.concat([D]):null,Ar(4,36,or.bind(null,v,D),T)},useLayoutEffect:function(D,v){return Ar(4,36,D,v)},useMemo:function(D,v){var T=G();return v=v===void 0?null:v,D=D(),T.memoizedState=[D,v],D},useReducer:function(D,v,T){var j=G();return v=T!==void 0?T(v):v,j.memoizedState=j.baseState=v,D=j.queue={last:null,dispatch:null,lastRenderedReducer:D,lastRenderedState:v},D=D.dispatch=ts.bind(null,Pa,D),[j.memoizedState,D]},useRef:function(D){var v=G();return D={current:D},v.memoizedState=D},useState:Je,useDebugValue:qr,useResponder:Og,useDeferredValue:function(D,v){var T=Je(D),j=T[0],V=T[1];return st(function(){a.unstable_next(function(){var he=Ks.suspense;Ks.suspense=v===void 0?null:v;try{V(D)}finally{Ks.suspense=he}})},[D,v]),j},useTransition:function(D){var v=Je(!1),T=v[0],j=v[1];return[ui(function(V){j(!0),a.unstable_next(function(){var he=Ks.suspense;Ks.suspense=D===void 0?null:D;try{j(!1),V()}finally{Ks.suspense=he}})},[D,T]),T]}},oo={readContext:io,useCallback:_s,useContext:io,useEffect:Cr,useImperativeHandle:function(D,v,T){return T=T!=null?T.concat([D]):null,er(4,36,or.bind(null,v,D),T)},useLayoutEffect:function(D,v){return er(4,36,D,v)},useMemo:function(D,v){var T=se();v=v===void 0?null:v;var j=T.memoizedState;return j!==null&&v!==null&&Ra(v,j[1])?j[0]:(D=D(),T.memoizedState=[D,v],D)},useReducer:xe,useRef:function(){return se().memoizedState},useState:ut,useDebugValue:qr,useResponder:Og,useDeferredValue:function(D,v){var T=ut(D),j=T[0],V=T[1];return Cr(function(){a.unstable_next(function(){var he=Ks.suspense;Ks.suspense=v===void 0?null:v;try{V(D)}finally{Ks.suspense=he}})},[D,v]),j},useTransition:function(D){var v=ut(!1),T=v[0],j=v[1];return[_s(function(V){j(!0),a.unstable_next(function(){var he=Ks.suspense;Ks.suspense=D===void 0?null:D;try{j(!1),V()}finally{Ks.suspense=he}})},[D,T]),T]}},ns=null,Vn=null,VA=!1;function Gc(D,v){var T=ZA(5,null,null,0);T.elementType="DELETED",T.type="DELETED",T.stateNode=v,T.return=D,T.effectTag=8,D.lastEffect!==null?(D.lastEffect.nextEffect=T,D.lastEffect=T):D.firstEffect=D.lastEffect=T}function K0(D,v){switch(D.tag){case 5:return v=Bo(v,D.type,D.pendingProps),v!==null?(D.stateNode=v,!0):!1;case 6:return v=cs(v,D.pendingProps),v!==null?(D.stateNode=v,!0):!1;case 13:return!1;default:return!1}}function rf(D){if(VA){var v=Vn;if(v){var T=v;if(!K0(D,v)){if(v=UA(T),!v||!K0(D,v)){D.effectTag=D.effectTag&-1025|2,VA=!1,ns=D;return}Gc(ns,T)}ns=D,Vn=Qa(v)}else D.effectTag=D.effectTag&-1025|2,VA=!1,ns=D}}function Ug(D){for(D=D.return;D!==null&&D.tag!==5&&D.tag!==3&&D.tag!==13;)D=D.return;ns=D}function uA(D){if(!y||D!==ns)return!1;if(!VA)return Ug(D),VA=!0,!1;var v=D.type;if(D.tag!==5||v!=="head"&&v!=="body"&&!qe(v,D.memoizedProps))for(v=Vn;v;)Gc(D,v),v=UA(v);if(Ug(D),D.tag===13){if(!y)throw Error(n(316));if(D=D.memoizedState,D=D!==null?D.dehydrated:null,!D)throw Error(n(317));Vn=$u(D)}else Vn=ns?UA(D.stateNode):null;return!0}function _0(){y&&(Vn=ns=null,VA=!1)}var Kg=c.ReactCurrentOwner,aa=!1;function Hs(D,v,T,j){v.child=D===null?Ng(v,null,T,j):ql(v,D.child,T,j)}function Ni(D,v,T,j,V){T=T.render;var he=v.ref;return no(v,V),j=F(D,v,T,j,he,V),D!==null&&!aa?(v.updateQueue=D.updateQueue,v.effectTag&=-517,D.expirationTime<=V&&(D.expirationTime=0),yi(D,v,V)):(v.effectTag|=1,Hs(D,v,j,V),v.child)}function iy(D,v,T,j,V,he){if(D===null){var De=T.type;return typeof De=="function"&&!KI(De)&&De.defaultProps===void 0&&T.compare===null&&T.defaultProps===void 0?(v.tag=15,v.type=De,sy(D,v,De,j,V,he)):(D=hy(T.type,null,j,null,v.mode,he),D.ref=v.ref,D.return=v,v.child=D)}return De=D.child,Vv)&&lf.set(D,v)))}}function V0(D,v){D.expirationTimeD?v:D)}function bo(D){if(D.lastExpiredTime!==0)D.callbackExpirationTime=1073741823,D.callbackPriority=99,D.callbackNode=Hl(NI.bind(null,D));else{var v=gy(D),T=D.callbackNode;if(v===0)T!==null&&(D.callbackNode=null,D.callbackExpirationTime=0,D.callbackPriority=90);else{var j=La();if(v===1073741823?j=99:v===1||v===2?j=95:(j=10*(1073741821-v)-10*(1073741821-j),j=0>=j?99:250>=j?98:5250>=j?97:95),T!==null){var V=D.callbackPriority;if(D.callbackExpirationTime===v&&V>=j)return;T!==Oc&&we(T)}D.callbackExpirationTime=v,D.callbackPriority=j,v=v===1073741823?Hl(NI.bind(null,D)):Sa(j,ZQ.bind(null,D),{timeout:10*(1073741821-v)-$i()}),D.callbackNode=v}}}function ZQ(D,v){if(fy=0,v)return v=La(),dy(D,v),bo(D),null;var T=gy(D);if(T!==0){if(v=D.callbackNode,(Qr&(ks|ao))!==Rn)throw Error(n(327));if(Wg(),D===Pi&&T===xs||Jc(D,T),Wr!==null){var j=Qr;Qr|=ks;var V=ff(D);do try{LF();break}catch(vt){uf(D,vt)}while(1);if(Zt(),Qr=j,Gg.current=V,gs===Ay)throw v=ly,Jc(D,T),hf(D,T),bo(D),v;if(Wr===null)switch(V=D.finishedWork=D.current.alternate,D.finishedExpirationTime=T,j=gs,Pi=null,j){case jc:case Ay:throw Error(n(345));case Mi:dy(D,2=T){D.lastPingedTime=T,Jc(D,T);break}}if(he=gy(D),he!==0&&he!==T)break;if(j!==0&&j!==T){D.lastPingedTime=j;break}D.timeoutHandle=We(Vc.bind(null,D),V);break}Vc(D);break;case XA:if(hf(D,T),j=D.lastSuspendedTime,T===j&&(D.nextKnownPendingLevel=LI(V)),af&&(V=D.lastPingedTime,V===0||V>=T)){D.lastPingedTime=T,Jc(D,T);break}if(V=gy(D),V!==0&&V!==T)break;if(j!==0&&j!==T){D.lastPingedTime=j;break}if(of!==1073741823?j=10*(1073741821-of)-$i():pA===1073741823?j=0:(j=10*(1073741821-pA)-5e3,V=$i(),T=10*(1073741821-T)-V,j=V-j,0>j&&(j=0),j=(120>j?120:480>j?480:1080>j?1080:1920>j?1920:3e3>j?3e3:4320>j?4320:1960*PI(j/1960))-j,T=j?j=0:(V=De.busyDelayMs|0,he=$i()-(10*(1073741821-he)-(De.timeoutMs|0||5e3)),j=he<=V?0:V+j-he),10 component higher in the tree to provide a loading indicator or placeholder to display.`+KA(V))}gs!==Vl&&(gs=Mi),he=q0(he,V),It=j;do{switch(It.tag){case 3:De=he,It.effectTag|=4096,It.expirationTime=v;var et=zQ(It,De,v);GA(It,et);break e;case 1:De=he;var ht=It.type,Wt=It.stateNode;if((It.effectTag&64)===0&&(typeof ht.getDerivedStateFromError=="function"||Wt!==null&&typeof Wt.componentDidCatch=="function"&&(Wc===null||!Wc.has(Wt)))){It.effectTag|=4096,It.expirationTime=v;var xr=XQ(It,De,v);GA(It,xr);break e}}It=It.return}while(It!==null)}Wr=rv(Wr)}catch(On){v=On;continue}break}while(1)}function ff(){var D=Gg.current;return Gg.current=xo,D===null?xo:D}function MI(D,v){Djg&&(jg=D)}function MF(){for(;Wr!==null;)Wr=tv(Wr)}function LF(){for(;Wr!==null&&!Ot();)Wr=tv(Wr)}function tv(D){var v=iv(D.alternate,D,xs);return D.memoizedProps=D.pendingProps,v===null&&(v=rv(D)),bI.current=null,v}function rv(D){Wr=D;do{var v=Wr.alternate;if(D=Wr.return,(Wr.effectTag&2048)===0){e:{var T=v;v=Wr;var j=xs,V=v.pendingProps;switch(v.tag){case 2:break;case 16:break;case 15:case 0:break;case 1:Pn(v.type)&&fs(v);break;case 3:WA(v),sA(v),V=v.stateNode,V.pendingContext&&(V.context=V.pendingContext,V.pendingContext=null),(T===null||T.child===null)&&uA(v)&&Na(v),zA(v);break;case 5:Lg(v);var he=sa(YA.current);if(j=v.type,T!==null&&v.stateNode!=null)Ss(T,v,j,V,he),T.ref!==v.ref&&(v.effectTag|=128);else if(V){if(T=sa(so.current),uA(v)){if(V=v,!y)throw Error(n(175));T=Fg(V.stateNode,V.type,V.memoizedProps,he,T,V),V.updateQueue=T,T=T!==null,T&&Na(v)}else{var De=dt(j,V,he,T,v);Wl(De,v,!1,!1),v.stateNode=De,Qt(De,j,V,he,T)&&Na(v)}v.ref!==null&&(v.effectTag|=128)}else if(v.stateNode===null)throw Error(n(166));break;case 6:if(T&&v.stateNode!=null)en(T,v,T.memoizedProps,V);else{if(typeof V!="string"&&v.stateNode===null)throw Error(n(166));if(T=sa(YA.current),he=sa(so.current),uA(v)){if(T=v,!y)throw Error(n(176));(T=Rg(T.stateNode,T.memoizedProps,T))&&Na(v)}else v.stateNode=je(V,T,he,v)}break;case 11:break;case 13:if(ii(oi,v),V=v.memoizedState,(v.effectTag&64)!==0){v.expirationTime=j;break e}V=V!==null,he=!1,T===null?v.memoizedProps.fallback!==void 0&&uA(v):(j=T.memoizedState,he=j!==null,V||j===null||(j=T.child.sibling,j!==null&&(De=v.firstEffect,De!==null?(v.firstEffect=j,j.nextEffect=De):(v.firstEffect=v.lastEffect=j,j.nextEffect=null),j.effectTag=8))),V&&!he&&(v.mode&2)!==0&&(T===null&&v.memoizedProps.unstable_avoidThisFallback!==!0||(oi.current&1)!==0?gs===jc&&(gs=Ma):((gs===jc||gs===Ma)&&(gs=XA),jg!==0&&Pi!==null&&(hf(Pi,xs),ov(Pi,jg)))),S&&V&&(v.effectTag|=4),I&&(V||he)&&(v.effectTag|=4);break;case 7:break;case 8:break;case 12:break;case 4:WA(v),zA(v);break;case 10:vs(v);break;case 9:break;case 14:break;case 17:Pn(v.type)&&fs(v);break;case 19:if(ii(oi,v),V=v.memoizedState,V===null)break;if(he=(v.effectTag&64)!==0,De=V.rendering,De===null){if(he)Jl(V,!1);else if(gs!==jc||T!==null&&(T.effectTag&64)!==0)for(T=v.child;T!==null;){if(De=tf(T),De!==null){for(v.effectTag|=64,Jl(V,!1),T=De.updateQueue,T!==null&&(v.updateQueue=T,v.effectTag|=4),V.lastEffect===null&&(v.firstEffect=null),v.lastEffect=V.lastEffect,T=j,V=v.child;V!==null;)he=V,j=T,he.effectTag&=2,he.nextEffect=null,he.firstEffect=null,he.lastEffect=null,De=he.alternate,De===null?(he.childExpirationTime=0,he.expirationTime=j,he.child=null,he.memoizedProps=null,he.memoizedState=null,he.updateQueue=null,he.dependencies=null):(he.childExpirationTime=De.childExpirationTime,he.expirationTime=De.expirationTime,he.child=De.child,he.memoizedProps=De.memoizedProps,he.memoizedState=De.memoizedState,he.updateQueue=De.updateQueue,j=De.dependencies,he.dependencies=j===null?null:{expirationTime:j.expirationTime,firstContext:j.firstContext,responders:j.responders}),V=V.sibling;Xt(oi,oi.current&1|2,v),v=v.child;break e}T=T.sibling}}else{if(!he)if(T=tf(De),T!==null){if(v.effectTag|=64,he=!0,T=T.updateQueue,T!==null&&(v.updateQueue=T,v.effectTag|=4),Jl(V,!0),V.tail===null&&V.tailMode==="hidden"&&!De.alternate){v=v.lastEffect=V.lastEffect,v!==null&&(v.nextEffect=null);break}}else $i()>V.tailExpiration&&1V&&(V=j),De>V&&(V=De),he=he.sibling;T.childExpirationTime=V}if(v!==null)return v;D!==null&&(D.effectTag&2048)===0&&(D.firstEffect===null&&(D.firstEffect=Wr.firstEffect),Wr.lastEffect!==null&&(D.lastEffect!==null&&(D.lastEffect.nextEffect=Wr.firstEffect),D.lastEffect=Wr.lastEffect),1D?v:D}function Vc(D){var v=vo();return eo(99,OF.bind(null,D,v)),null}function OF(D,v){do Wg();while(W0!==null);if((Qr&(ks|ao))!==Rn)throw Error(n(327));var T=D.finishedWork,j=D.finishedExpirationTime;if(T===null)return null;if(D.finishedWork=null,D.finishedExpirationTime=0,T===D.current)throw Error(n(177));D.callbackNode=null,D.callbackExpirationTime=0,D.callbackPriority=90,D.nextKnownPendingLevel=0;var V=LI(T);if(D.firstPendingTime=V,j<=D.lastSuspendedTime?D.firstSuspendedTime=D.lastSuspendedTime=D.nextKnownPendingLevel=0:j<=D.firstSuspendedTime&&(D.firstSuspendedTime=j-1),j<=D.lastPingedTime&&(D.lastPingedTime=0),j<=D.lastExpiredTime&&(D.lastExpiredTime=0),D===Pi&&(Wr=Pi=null,xs=0),1=T?yn(D,v,T):(Xt(oi,oi.current&1,v),v=yi(D,v,T),v!==null?v.sibling:null);Xt(oi,oi.current&1,v);break;case 19:if(j=v.childExpirationTime>=T,(D.effectTag&64)!==0){if(j)return fA(D,v,T);v.effectTag|=64}if(V=v.memoizedState,V!==null&&(V.rendering=null,V.tail=null),Xt(oi,oi.current,v),!j)return null}return yi(D,v,T)}aa=!1}}else aa=!1;switch(v.expirationTime=0,v.tag){case 2:if(j=v.type,D!==null&&(D.alternate=null,v.alternate=null,v.effectTag|=2),D=v.pendingProps,V=Xi(v,Jn.current),no(v,T),V=F(null,v,j,D,V,T),v.effectTag|=1,typeof V=="object"&&V!==null&&typeof V.render=="function"&&V.$$typeof===void 0){if(v.tag=1,K(),Pn(j)){var he=!0;fr(v)}else he=!1;v.memoizedState=V.state!==null&&V.state!==void 0?V.state:null;var De=j.getDerivedStateFromProps;typeof De=="function"&&Rr(v,j,De,D),V.updater=Bn,v.stateNode=V,V._reactInternalFiber=v,cA(v,j,D,T),v=Hg(null,v,j,!0,he,T)}else v.tag=0,Hs(null,v,V,T),v=v.child;return v;case 16:if(V=v.elementType,D!==null&&(D.alternate=null,v.alternate=null,v.effectTag|=2),D=v.pendingProps,Pe(V),V._status!==1)throw V._result;switch(V=V._result,v.type=V,he=v.tag=jF(V),D=li(V,D),he){case 0:v=nf(null,v,V,D,T);break;case 1:v=_g(null,v,V,D,T);break;case 11:v=Ni(null,v,V,D,T);break;case 14:v=iy(null,v,V,li(V.type,D),j,T);break;default:throw Error(n(306,V,""))}return v;case 0:return j=v.type,V=v.pendingProps,V=v.elementType===j?V:li(j,V),nf(D,v,j,V,T);case 1:return j=v.type,V=v.pendingProps,V=v.elementType===j?V:li(j,V),_g(D,v,j,V,T);case 3:if(H0(v),j=v.updateQueue,j===null)throw Error(n(282));if(V=v.memoizedState,V=V!==null?V.element:null,ve(v,j,v.pendingProps,null,T),j=v.memoizedState.element,j===V)_0(),v=yi(D,v,T);else{if((V=v.stateNode.hydrate)&&(y?(Vn=Qa(v.stateNode.containerInfo),ns=v,V=VA=!0):V=!1),V)for(T=Ng(v,null,j,T),v.child=T;T;)T.effectTag=T.effectTag&-3|1024,T=T.sibling;else Hs(D,v,j,T),_0();v=v.child}return v;case 5:return U0(v),D===null&&rf(v),j=v.type,V=v.pendingProps,he=D!==null?D.memoizedProps:null,De=V.children,qe(j,V)?De=null:he!==null&&qe(j,he)&&(v.effectTag|=16),Aa(D,v),v.mode&4&&T!==1&&Fe(j,V)?(v.expirationTime=v.childExpirationTime=1,v=null):(Hs(D,v,De,T),v=v.child),v;case 6:return D===null&&rf(v),null;case 13:return yn(D,v,T);case 4:return Mg(v,v.stateNode.containerInfo),j=v.pendingProps,D===null?v.child=ql(v,null,j,T):Hs(D,v,j,T),v.child;case 11:return j=v.type,V=v.pendingProps,V=v.elementType===j?V:li(j,V),Ni(D,v,j,V,T);case 7:return Hs(D,v,v.pendingProps,T),v.child;case 8:return Hs(D,v,v.pendingProps.children,T),v.child;case 12:return Hs(D,v,v.pendingProps.children,T),v.child;case 10:e:{if(j=v.type._context,V=v.pendingProps,De=v.memoizedProps,he=V.value,na(v,he),De!==null){var vt=De.value;if(he=Bs(vt,he)?0:(typeof j._calculateChangedBits=="function"?j._calculateChangedBits(vt,he):1073741823)|0,he===0){if(De.children===V.children&&!us.current){v=yi(D,v,T);break e}}else for(vt=v.child,vt!==null&&(vt.return=v);vt!==null;){var It=vt.dependencies;if(It!==null){De=vt.child;for(var bt=It.firstContext;bt!==null;){if(bt.context===j&&(bt.observedBits&he)!==0){vt.tag===1&&(bt=ia(T,null),bt.tag=2,Gi(vt,bt)),vt.expirationTime"u")return!1;var v=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(v.isDisabled||!v.supportsFiber)return!0;try{var T=v.inject(D);OI=function(j){try{v.onCommitFiberRoot(T,j,void 0,(j.current.effectTag&64)===64)}catch{}},UI=function(j){try{v.onCommitFiberUnmount(T,j)}catch{}}}catch{}return!0}function GF(D,v,T,j){this.tag=D,this.key=T,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=v,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=j,this.effectTag=0,this.lastEffect=this.firstEffect=this.nextEffect=null,this.childExpirationTime=this.expirationTime=0,this.alternate=null}function ZA(D,v,T,j){return new GF(D,v,T,j)}function KI(D){return D=D.prototype,!(!D||!D.isReactComponent)}function jF(D){if(typeof D=="function")return KI(D)?1:0;if(D!=null){if(D=D.$$typeof,D===U)return 11;if(D===ie)return 14}return 2}function pf(D,v){var T=D.alternate;return T===null?(T=ZA(D.tag,v,D.key,D.mode),T.elementType=D.elementType,T.type=D.type,T.stateNode=D.stateNode,T.alternate=D,D.alternate=T):(T.pendingProps=v,T.effectTag=0,T.nextEffect=null,T.firstEffect=null,T.lastEffect=null),T.childExpirationTime=D.childExpirationTime,T.expirationTime=D.expirationTime,T.child=D.child,T.memoizedProps=D.memoizedProps,T.memoizedState=D.memoizedState,T.updateQueue=D.updateQueue,v=D.dependencies,T.dependencies=v===null?null:{expirationTime:v.expirationTime,firstContext:v.firstContext,responders:v.responders},T.sibling=D.sibling,T.index=D.index,T.ref=D.ref,T}function hy(D,v,T,j,V,he){var De=2;if(j=D,typeof D=="function")KI(D)&&(De=1);else if(typeof D=="string")De=5;else e:switch(D){case E:return zc(T.children,V,he,v);case N:De=8,V|=7;break;case B:De=8,V|=1;break;case Q:return D=ZA(12,T,v,V|8),D.elementType=Q,D.type=Q,D.expirationTime=he,D;case H:return D=ZA(13,T,v,V),D.type=H,D.elementType=H,D.expirationTime=he,D;case X:return D=ZA(19,T,v,V),D.elementType=X,D.expirationTime=he,D;default:if(typeof D=="object"&&D!==null)switch(D.$$typeof){case x:De=10;break e;case C:De=9;break e;case U:De=11;break e;case ie:De=14;break e;case fe:De=16,j=null;break e}throw Error(n(130,D==null?D:typeof D,""))}return v=ZA(De,T,v,V),v.elementType=D,v.type=j,v.expirationTime=he,v}function zc(D,v,T,j){return D=ZA(7,D,j,v),D.expirationTime=T,D}function _I(D,v,T){return D=ZA(6,D,null,v),D.expirationTime=T,D}function HI(D,v,T){return v=ZA(4,D.children!==null?D.children:[],D.key,v),v.expirationTime=T,v.stateNode={containerInfo:D.containerInfo,pendingChildren:null,implementation:D.implementation},v}function YF(D,v,T){this.tag=v,this.current=null,this.containerInfo=D,this.pingCache=this.pendingChildren=null,this.finishedExpirationTime=0,this.finishedWork=null,this.timeoutHandle=Oe,this.pendingContext=this.context=null,this.hydrate=T,this.callbackNode=null,this.callbackPriority=90,this.lastExpiredTime=this.lastPingedTime=this.nextKnownPendingLevel=this.lastSuspendedTime=this.firstSuspendedTime=this.firstPendingTime=0}function sv(D,v){var T=D.firstSuspendedTime;return D=D.lastSuspendedTime,T!==0&&T>=v&&D<=v}function hf(D,v){var T=D.firstSuspendedTime,j=D.lastSuspendedTime;Tv||T===0)&&(D.lastSuspendedTime=v),v<=D.lastPingedTime&&(D.lastPingedTime=0),v<=D.lastExpiredTime&&(D.lastExpiredTime=0)}function ov(D,v){v>D.firstPendingTime&&(D.firstPendingTime=v);var T=D.firstSuspendedTime;T!==0&&(v>=T?D.firstSuspendedTime=D.lastSuspendedTime=D.nextKnownPendingLevel=0:v>=D.lastSuspendedTime&&(D.lastSuspendedTime=v+1),v>D.nextKnownPendingLevel&&(D.nextKnownPendingLevel=v))}function dy(D,v){var T=D.lastExpiredTime;(T===0||T>v)&&(D.lastExpiredTime=v)}function av(D){var v=D._reactInternalFiber;if(v===void 0)throw typeof D.render=="function"?Error(n(188)):Error(n(268,Object.keys(D)));return D=Ke(v),D===null?null:D.stateNode}function Av(D,v){D=D.memoizedState,D!==null&&D.dehydrated!==null&&D.retryTime{"use strict";QEe.exports=BEe()});var SEe=_((kYt,DEe)=>{"use strict";var nCt={ALIGN_COUNT:8,ALIGN_AUTO:0,ALIGN_FLEX_START:1,ALIGN_CENTER:2,ALIGN_FLEX_END:3,ALIGN_STRETCH:4,ALIGN_BASELINE:5,ALIGN_SPACE_BETWEEN:6,ALIGN_SPACE_AROUND:7,DIMENSION_COUNT:2,DIMENSION_WIDTH:0,DIMENSION_HEIGHT:1,DIRECTION_COUNT:3,DIRECTION_INHERIT:0,DIRECTION_LTR:1,DIRECTION_RTL:2,DISPLAY_COUNT:2,DISPLAY_FLEX:0,DISPLAY_NONE:1,EDGE_COUNT:9,EDGE_LEFT:0,EDGE_TOP:1,EDGE_RIGHT:2,EDGE_BOTTOM:3,EDGE_START:4,EDGE_END:5,EDGE_HORIZONTAL:6,EDGE_VERTICAL:7,EDGE_ALL:8,EXPERIMENTAL_FEATURE_COUNT:1,EXPERIMENTAL_FEATURE_WEB_FLEX_BASIS:0,FLEX_DIRECTION_COUNT:4,FLEX_DIRECTION_COLUMN:0,FLEX_DIRECTION_COLUMN_REVERSE:1,FLEX_DIRECTION_ROW:2,FLEX_DIRECTION_ROW_REVERSE:3,JUSTIFY_COUNT:6,JUSTIFY_FLEX_START:0,JUSTIFY_CENTER:1,JUSTIFY_FLEX_END:2,JUSTIFY_SPACE_BETWEEN:3,JUSTIFY_SPACE_AROUND:4,JUSTIFY_SPACE_EVENLY:5,LOG_LEVEL_COUNT:6,LOG_LEVEL_ERROR:0,LOG_LEVEL_WARN:1,LOG_LEVEL_INFO:2,LOG_LEVEL_DEBUG:3,LOG_LEVEL_VERBOSE:4,LOG_LEVEL_FATAL:5,MEASURE_MODE_COUNT:3,MEASURE_MODE_UNDEFINED:0,MEASURE_MODE_EXACTLY:1,MEASURE_MODE_AT_MOST:2,NODE_TYPE_COUNT:2,NODE_TYPE_DEFAULT:0,NODE_TYPE_TEXT:1,OVERFLOW_COUNT:3,OVERFLOW_VISIBLE:0,OVERFLOW_HIDDEN:1,OVERFLOW_SCROLL:2,POSITION_TYPE_COUNT:2,POSITION_TYPE_RELATIVE:0,POSITION_TYPE_ABSOLUTE:1,PRINT_OPTIONS_COUNT:3,PRINT_OPTIONS_LAYOUT:1,PRINT_OPTIONS_STYLE:2,PRINT_OPTIONS_CHILDREN:4,UNIT_COUNT:4,UNIT_UNDEFINED:0,UNIT_POINT:1,UNIT_PERCENT:2,UNIT_AUTO:3,WRAP_COUNT:3,WRAP_NO_WRAP:0,WRAP_WRAP:1,WRAP_WRAP_REVERSE:2};DEe.exports=nCt});var bEe=_((xYt,PEe)=>{"use strict";var iCt=Object.assign||function(t){for(var e=1;e"}}]),t}(),kEe=function(){ob(t,null,[{key:"fromJS",value:function(r){var o=r.width,a=r.height;return new t(o,a)}}]);function t(e,r){pH(this,t),this.width=e,this.height=r}return ob(t,[{key:"fromJS",value:function(r){r(this.width,this.height)}},{key:"toString",value:function(){return""}}]),t}(),xEe=function(){function t(e,r){pH(this,t),this.unit=e,this.value=r}return ob(t,[{key:"fromJS",value:function(r){r(this.unit,this.value)}},{key:"toString",value:function(){switch(this.unit){case Sc.UNIT_POINT:return String(this.value);case Sc.UNIT_PERCENT:return this.value+"%";case Sc.UNIT_AUTO:return"auto";default:return this.value+"?"}}},{key:"valueOf",value:function(){return this.value}}]),t}();PEe.exports=function(t,e){function r(c,f,g){var p=c[f];c[f]=function(){for(var E=arguments.length,B=Array(E),Q=0;Q1?B-1:0),x=1;x1&&arguments[1]!==void 0?arguments[1]:NaN,g=arguments.length>2&&arguments[2]!==void 0?arguments[2]:NaN,p=arguments.length>3&&arguments[3]!==void 0?arguments[3]:Sc.DIRECTION_LTR;return c.call(this,f,g,p)}),iCt({Config:e.Config,Node:e.Node,Layout:t("Layout",sCt),Size:t("Size",kEe),Value:t("Value",xEe),getInstanceCount:function(){return e.getInstanceCount.apply(e,arguments)}},Sc)}});var FEe=_((exports,module)=>{(function(t,e){typeof define=="function"&&define.amd?define([],function(){return e}):typeof module=="object"&&module.exports?module.exports=e:(t.nbind=t.nbind||{}).init=e})(exports,function(Module,cb){typeof Module=="function"&&(cb=Module,Module={}),Module.onRuntimeInitialized=function(t,e){return function(){t&&t.apply(this,arguments);try{Module.ccall("nbind_init")}catch(r){e(r);return}e(null,{bind:Module._nbind_value,reflect:Module.NBind.reflect,queryType:Module.NBind.queryType,toggleLightGC:Module.toggleLightGC,lib:Module})}}(Module.onRuntimeInitialized,cb);var Module;Module||(Module=(typeof Module<"u"?Module:null)||{});var moduleOverrides={};for(var key in Module)Module.hasOwnProperty(key)&&(moduleOverrides[key]=Module[key]);var ENVIRONMENT_IS_WEB=!1,ENVIRONMENT_IS_WORKER=!1,ENVIRONMENT_IS_NODE=!1,ENVIRONMENT_IS_SHELL=!1;if(Module.ENVIRONMENT)if(Module.ENVIRONMENT==="WEB")ENVIRONMENT_IS_WEB=!0;else if(Module.ENVIRONMENT==="WORKER")ENVIRONMENT_IS_WORKER=!0;else if(Module.ENVIRONMENT==="NODE")ENVIRONMENT_IS_NODE=!0;else if(Module.ENVIRONMENT==="SHELL")ENVIRONMENT_IS_SHELL=!0;else throw new Error("The provided Module['ENVIRONMENT'] value is not valid. It must be one of: WEB|WORKER|NODE|SHELL.");else ENVIRONMENT_IS_WEB=typeof window=="object",ENVIRONMENT_IS_WORKER=typeof importScripts=="function",ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof Ie=="function"&&!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_WORKER,ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;if(ENVIRONMENT_IS_NODE){Module.print||(Module.print=console.log),Module.printErr||(Module.printErr=console.warn);var nodeFS,nodePath;Module.read=function(e,r){nodeFS||(nodeFS={}("")),nodePath||(nodePath={}("")),e=nodePath.normalize(e);var o=nodeFS.readFileSync(e);return r?o:o.toString()},Module.readBinary=function(e){var r=Module.read(e,!0);return r.buffer||(r=new Uint8Array(r)),assert(r.buffer),r},Module.load=function(e){globalEval(read(e))},Module.thisProgram||(process.argv.length>1?Module.thisProgram=process.argv[1].replace(/\\/g,"/"):Module.thisProgram="unknown-program"),Module.arguments=process.argv.slice(2),typeof module<"u"&&(module.exports=Module),Module.inspect=function(){return"[Emscripten Module object]"}}else if(ENVIRONMENT_IS_SHELL)Module.print||(Module.print=print),typeof printErr<"u"&&(Module.printErr=printErr),typeof read<"u"?Module.read=read:Module.read=function(){throw"no read() available"},Module.readBinary=function(e){if(typeof readbuffer=="function")return new Uint8Array(readbuffer(e));var r=read(e,"binary");return assert(typeof r=="object"),r},typeof scriptArgs<"u"?Module.arguments=scriptArgs:typeof arguments<"u"&&(Module.arguments=arguments),typeof quit=="function"&&(Module.quit=function(t,e){quit(t)});else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(Module.read=function(e){var r=new XMLHttpRequest;return r.open("GET",e,!1),r.send(null),r.responseText},ENVIRONMENT_IS_WORKER&&(Module.readBinary=function(e){var r=new XMLHttpRequest;return r.open("GET",e,!1),r.responseType="arraybuffer",r.send(null),new Uint8Array(r.response)}),Module.readAsync=function(e,r,o){var a=new XMLHttpRequest;a.open("GET",e,!0),a.responseType="arraybuffer",a.onload=function(){a.status==200||a.status==0&&a.response?r(a.response):o()},a.onerror=o,a.send(null)},typeof arguments<"u"&&(Module.arguments=arguments),typeof console<"u")Module.print||(Module.print=function(e){console.log(e)}),Module.printErr||(Module.printErr=function(e){console.warn(e)});else{var TRY_USE_DUMP=!1;Module.print||(Module.print=TRY_USE_DUMP&&typeof dump<"u"?function(t){dump(t)}:function(t){})}ENVIRONMENT_IS_WORKER&&(Module.load=importScripts),typeof Module.setWindowTitle>"u"&&(Module.setWindowTitle=function(t){document.title=t})}else throw"Unknown runtime environment. Where are we?";function globalEval(t){eval.call(null,t)}!Module.load&&Module.read&&(Module.load=function(e){globalEval(Module.read(e))}),Module.print||(Module.print=function(){}),Module.printErr||(Module.printErr=Module.print),Module.arguments||(Module.arguments=[]),Module.thisProgram||(Module.thisProgram="./this.program"),Module.quit||(Module.quit=function(t,e){throw e}),Module.print=Module.print,Module.printErr=Module.printErr,Module.preRun=[],Module.postRun=[];for(var key in moduleOverrides)moduleOverrides.hasOwnProperty(key)&&(Module[key]=moduleOverrides[key]);moduleOverrides=void 0;var Runtime={setTempRet0:function(t){return tempRet0=t,t},getTempRet0:function(){return tempRet0},stackSave:function(){return STACKTOP},stackRestore:function(t){STACKTOP=t},getNativeTypeSize:function(t){switch(t){case"i1":case"i8":return 1;case"i16":return 2;case"i32":return 4;case"i64":return 8;case"float":return 4;case"double":return 8;default:{if(t[t.length-1]==="*")return Runtime.QUANTUM_SIZE;if(t[0]==="i"){var e=parseInt(t.substr(1));return assert(e%8===0),e/8}else return 0}}},getNativeFieldSize:function(t){return Math.max(Runtime.getNativeTypeSize(t),Runtime.QUANTUM_SIZE)},STACK_ALIGN:16,prepVararg:function(t,e){return e==="double"||e==="i64"?t&7&&(assert((t&7)===4),t+=4):assert((t&3)===0),t},getAlignSize:function(t,e,r){return!r&&(t=="i64"||t=="double")?8:t?Math.min(e||(t?Runtime.getNativeFieldSize(t):0),Runtime.QUANTUM_SIZE):Math.min(e,8)},dynCall:function(t,e,r){return r&&r.length?Module["dynCall_"+t].apply(null,[e].concat(r)):Module["dynCall_"+t].call(null,e)},functionPointers:[],addFunction:function(t){for(var e=0;e>2],r=(e+t+15|0)&-16;if(HEAP32[DYNAMICTOP_PTR>>2]=r,r>=TOTAL_MEMORY){var o=enlargeMemory();if(!o)return HEAP32[DYNAMICTOP_PTR>>2]=e,0}return e},alignMemory:function(t,e){var r=t=Math.ceil(t/(e||16))*(e||16);return r},makeBigInt:function(t,e,r){var o=r?+(t>>>0)+ +(e>>>0)*4294967296:+(t>>>0)+ +(e|0)*4294967296;return o},GLOBAL_BASE:8,QUANTUM_SIZE:4,__dummy__:0};Module.Runtime=Runtime;var ABORT=0,EXITSTATUS=0;function assert(t,e){t||abort("Assertion failed: "+e)}function getCFunc(ident){var func=Module["_"+ident];if(!func)try{func=eval("_"+ident)}catch(t){}return assert(func,"Cannot call unknown function "+ident+" (perhaps LLVM optimizations or closure removed it?)"),func}var cwrap,ccall;(function(){var JSfuncs={stackSave:function(){Runtime.stackSave()},stackRestore:function(){Runtime.stackRestore()},arrayToC:function(t){var e=Runtime.stackAlloc(t.length);return writeArrayToMemory(t,e),e},stringToC:function(t){var e=0;if(t!=null&&t!==0){var r=(t.length<<2)+1;e=Runtime.stackAlloc(r),stringToUTF8(t,e,r)}return e}},toC={string:JSfuncs.stringToC,array:JSfuncs.arrayToC};ccall=function(e,r,o,a,n){var c=getCFunc(e),f=[],g=0;if(a)for(var p=0;p>0]=e;break;case"i8":HEAP8[t>>0]=e;break;case"i16":HEAP16[t>>1]=e;break;case"i32":HEAP32[t>>2]=e;break;case"i64":tempI64=[e>>>0,(tempDouble=e,+Math_abs(tempDouble)>=1?tempDouble>0?(Math_min(+Math_floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math_ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[t>>2]=tempI64[0],HEAP32[t+4>>2]=tempI64[1];break;case"float":HEAPF32[t>>2]=e;break;case"double":HEAPF64[t>>3]=e;break;default:abort("invalid type for setValue: "+r)}}Module.setValue=setValue;function getValue(t,e,r){switch(e=e||"i8",e.charAt(e.length-1)==="*"&&(e="i32"),e){case"i1":return HEAP8[t>>0];case"i8":return HEAP8[t>>0];case"i16":return HEAP16[t>>1];case"i32":return HEAP32[t>>2];case"i64":return HEAP32[t>>2];case"float":return HEAPF32[t>>2];case"double":return HEAPF64[t>>3];default:abort("invalid type for setValue: "+e)}return null}Module.getValue=getValue;var ALLOC_NORMAL=0,ALLOC_STACK=1,ALLOC_STATIC=2,ALLOC_DYNAMIC=3,ALLOC_NONE=4;Module.ALLOC_NORMAL=ALLOC_NORMAL,Module.ALLOC_STACK=ALLOC_STACK,Module.ALLOC_STATIC=ALLOC_STATIC,Module.ALLOC_DYNAMIC=ALLOC_DYNAMIC,Module.ALLOC_NONE=ALLOC_NONE;function allocate(t,e,r,o){var a,n;typeof t=="number"?(a=!0,n=t):(a=!1,n=t.length);var c=typeof e=="string"?e:null,f;if(r==ALLOC_NONE?f=o:f=[typeof _malloc=="function"?_malloc:Runtime.staticAlloc,Runtime.stackAlloc,Runtime.staticAlloc,Runtime.dynamicAlloc][r===void 0?ALLOC_STATIC:r](Math.max(n,c?1:e.length)),a){var o=f,g;for(assert((f&3)==0),g=f+(n&-4);o>2]=0;for(g=f+n;o>0]=0;return f}if(c==="i8")return t.subarray||t.slice?HEAPU8.set(t,f):HEAPU8.set(new Uint8Array(t),f),f;for(var p=0,E,B,Q;p>0],r|=o,!(o==0&&!e||(a++,e&&a==e)););e||(e=a);var n="";if(r<128){for(var c=1024,f;e>0;)f=String.fromCharCode.apply(String,HEAPU8.subarray(t,t+Math.min(e,c))),n=n?n+f:f,t+=c,e-=c;return n}return Module.UTF8ToString(t)}Module.Pointer_stringify=Pointer_stringify;function AsciiToString(t){for(var e="";;){var r=HEAP8[t++>>0];if(!r)return e;e+=String.fromCharCode(r)}}Module.AsciiToString=AsciiToString;function stringToAscii(t,e){return writeAsciiToMemory(t,e,!1)}Module.stringToAscii=stringToAscii;var UTF8Decoder=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0;function UTF8ArrayToString(t,e){for(var r=e;t[r];)++r;if(r-e>16&&t.subarray&&UTF8Decoder)return UTF8Decoder.decode(t.subarray(e,r));for(var o,a,n,c,f,g,p="";;){if(o=t[e++],!o)return p;if(!(o&128)){p+=String.fromCharCode(o);continue}if(a=t[e++]&63,(o&224)==192){p+=String.fromCharCode((o&31)<<6|a);continue}if(n=t[e++]&63,(o&240)==224?o=(o&15)<<12|a<<6|n:(c=t[e++]&63,(o&248)==240?o=(o&7)<<18|a<<12|n<<6|c:(f=t[e++]&63,(o&252)==248?o=(o&3)<<24|a<<18|n<<12|c<<6|f:(g=t[e++]&63,o=(o&1)<<30|a<<24|n<<18|c<<12|f<<6|g))),o<65536)p+=String.fromCharCode(o);else{var E=o-65536;p+=String.fromCharCode(55296|E>>10,56320|E&1023)}}}Module.UTF8ArrayToString=UTF8ArrayToString;function UTF8ToString(t){return UTF8ArrayToString(HEAPU8,t)}Module.UTF8ToString=UTF8ToString;function stringToUTF8Array(t,e,r,o){if(!(o>0))return 0;for(var a=r,n=r+o-1,c=0;c=55296&&f<=57343&&(f=65536+((f&1023)<<10)|t.charCodeAt(++c)&1023),f<=127){if(r>=n)break;e[r++]=f}else if(f<=2047){if(r+1>=n)break;e[r++]=192|f>>6,e[r++]=128|f&63}else if(f<=65535){if(r+2>=n)break;e[r++]=224|f>>12,e[r++]=128|f>>6&63,e[r++]=128|f&63}else if(f<=2097151){if(r+3>=n)break;e[r++]=240|f>>18,e[r++]=128|f>>12&63,e[r++]=128|f>>6&63,e[r++]=128|f&63}else if(f<=67108863){if(r+4>=n)break;e[r++]=248|f>>24,e[r++]=128|f>>18&63,e[r++]=128|f>>12&63,e[r++]=128|f>>6&63,e[r++]=128|f&63}else{if(r+5>=n)break;e[r++]=252|f>>30,e[r++]=128|f>>24&63,e[r++]=128|f>>18&63,e[r++]=128|f>>12&63,e[r++]=128|f>>6&63,e[r++]=128|f&63}}return e[r]=0,r-a}Module.stringToUTF8Array=stringToUTF8Array;function stringToUTF8(t,e,r){return stringToUTF8Array(t,HEAPU8,e,r)}Module.stringToUTF8=stringToUTF8;function lengthBytesUTF8(t){for(var e=0,r=0;r=55296&&o<=57343&&(o=65536+((o&1023)<<10)|t.charCodeAt(++r)&1023),o<=127?++e:o<=2047?e+=2:o<=65535?e+=3:o<=2097151?e+=4:o<=67108863?e+=5:e+=6}return e}Module.lengthBytesUTF8=lengthBytesUTF8;var UTF16Decoder=typeof TextDecoder<"u"?new TextDecoder("utf-16le"):void 0;function demangle(t){var e=Module.___cxa_demangle||Module.__cxa_demangle;if(e){try{var r=t.substr(1),o=lengthBytesUTF8(r)+1,a=_malloc(o);stringToUTF8(r,a,o);var n=_malloc(4),c=e(a,0,0,n);if(getValue(n,"i32")===0&&c)return Pointer_stringify(c)}catch{}finally{a&&_free(a),n&&_free(n),c&&_free(c)}return t}return Runtime.warnOnce("warning: build with -s DEMANGLE_SUPPORT=1 to link in libcxxabi demangling"),t}function demangleAll(t){var e=/__Z[\w\d_]+/g;return t.replace(e,function(r){var o=demangle(r);return r===o?r:r+" ["+o+"]"})}function jsStackTrace(){var t=new Error;if(!t.stack){try{throw new Error(0)}catch(e){t=e}if(!t.stack)return"(no stack trace available)"}return t.stack.toString()}function stackTrace(){var t=jsStackTrace();return Module.extraStackTrace&&(t+=` -`+Module.extraStackTrace()),demangleAll(t)}Module.stackTrace=stackTrace;var HEAP,buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferViews(){Module.HEAP8=HEAP8=new Int8Array(buffer),Module.HEAP16=HEAP16=new Int16Array(buffer),Module.HEAP32=HEAP32=new Int32Array(buffer),Module.HEAPU8=HEAPU8=new Uint8Array(buffer),Module.HEAPU16=HEAPU16=new Uint16Array(buffer),Module.HEAPU32=HEAPU32=new Uint32Array(buffer),Module.HEAPF32=HEAPF32=new Float32Array(buffer),Module.HEAPF64=HEAPF64=new Float64Array(buffer)}var STATIC_BASE,STATICTOP,staticSealed,STACK_BASE,STACKTOP,STACK_MAX,DYNAMIC_BASE,DYNAMICTOP_PTR;STATIC_BASE=STATICTOP=STACK_BASE=STACKTOP=STACK_MAX=DYNAMIC_BASE=DYNAMICTOP_PTR=0,staticSealed=!1;function abortOnCannotGrowMemory(){abort("Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value "+TOTAL_MEMORY+", (2) compile with -s ALLOW_MEMORY_GROWTH=1 which allows increasing the size at runtime but prevents some optimizations, (3) set Module.TOTAL_MEMORY to a higher value before the program runs, or (4) if you want malloc to return NULL (0) instead of this abort, compile with -s ABORTING_MALLOC=0 ")}function enlargeMemory(){abortOnCannotGrowMemory()}var TOTAL_STACK=Module.TOTAL_STACK||5242880,TOTAL_MEMORY=Module.TOTAL_MEMORY||134217728;TOTAL_MEMORY0;){var e=t.shift();if(typeof e=="function"){e();continue}var r=e.func;typeof r=="number"?e.arg===void 0?Module.dynCall_v(r):Module.dynCall_vi(r,e.arg):r(e.arg===void 0?null:e.arg)}}var __ATPRERUN__=[],__ATINIT__=[],__ATMAIN__=[],__ATEXIT__=[],__ATPOSTRUN__=[],runtimeInitialized=!1,runtimeExited=!1;function preRun(){if(Module.preRun)for(typeof Module.preRun=="function"&&(Module.preRun=[Module.preRun]);Module.preRun.length;)addOnPreRun(Module.preRun.shift());callRuntimeCallbacks(__ATPRERUN__)}function ensureInitRuntime(){runtimeInitialized||(runtimeInitialized=!0,callRuntimeCallbacks(__ATINIT__))}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){callRuntimeCallbacks(__ATEXIT__),runtimeExited=!0}function postRun(){if(Module.postRun)for(typeof Module.postRun=="function"&&(Module.postRun=[Module.postRun]);Module.postRun.length;)addOnPostRun(Module.postRun.shift());callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(t){__ATPRERUN__.unshift(t)}Module.addOnPreRun=addOnPreRun;function addOnInit(t){__ATINIT__.unshift(t)}Module.addOnInit=addOnInit;function addOnPreMain(t){__ATMAIN__.unshift(t)}Module.addOnPreMain=addOnPreMain;function addOnExit(t){__ATEXIT__.unshift(t)}Module.addOnExit=addOnExit;function addOnPostRun(t){__ATPOSTRUN__.unshift(t)}Module.addOnPostRun=addOnPostRun;function intArrayFromString(t,e,r){var o=r>0?r:lengthBytesUTF8(t)+1,a=new Array(o),n=stringToUTF8Array(t,a,0,a.length);return e&&(a.length=n),a}Module.intArrayFromString=intArrayFromString;function intArrayToString(t){for(var e=[],r=0;r255&&(o&=255),e.push(String.fromCharCode(o))}return e.join("")}Module.intArrayToString=intArrayToString;function writeStringToMemory(t,e,r){Runtime.warnOnce("writeStringToMemory is deprecated and should not be called! Use stringToUTF8() instead!");var o,a;r&&(a=e+lengthBytesUTF8(t),o=HEAP8[a]),stringToUTF8(t,e,1/0),r&&(HEAP8[a]=o)}Module.writeStringToMemory=writeStringToMemory;function writeArrayToMemory(t,e){HEAP8.set(t,e)}Module.writeArrayToMemory=writeArrayToMemory;function writeAsciiToMemory(t,e,r){for(var o=0;o>0]=t.charCodeAt(o);r||(HEAP8[e>>0]=0)}if(Module.writeAsciiToMemory=writeAsciiToMemory,(!Math.imul||Math.imul(4294967295,5)!==-5)&&(Math.imul=function t(e,r){var o=e>>>16,a=e&65535,n=r>>>16,c=r&65535;return a*c+(o*c+a*n<<16)|0}),Math.imul=Math.imul,!Math.fround){var froundBuffer=new Float32Array(1);Math.fround=function(t){return froundBuffer[0]=t,froundBuffer[0]}}Math.fround=Math.fround,Math.clz32||(Math.clz32=function(t){t=t>>>0;for(var e=0;e<32;e++)if(t&1<<31-e)return e;return 32}),Math.clz32=Math.clz32,Math.trunc||(Math.trunc=function(t){return t<0?Math.ceil(t):Math.floor(t)}),Math.trunc=Math.trunc;var Math_abs=Math.abs,Math_cos=Math.cos,Math_sin=Math.sin,Math_tan=Math.tan,Math_acos=Math.acos,Math_asin=Math.asin,Math_atan=Math.atan,Math_atan2=Math.atan2,Math_exp=Math.exp,Math_log=Math.log,Math_sqrt=Math.sqrt,Math_ceil=Math.ceil,Math_floor=Math.floor,Math_pow=Math.pow,Math_imul=Math.imul,Math_fround=Math.fround,Math_round=Math.round,Math_min=Math.min,Math_clz32=Math.clz32,Math_trunc=Math.trunc,runDependencies=0,runDependencyWatcher=null,dependenciesFulfilled=null;function getUniqueRunDependency(t){return t}function addRunDependency(t){runDependencies++,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies)}Module.addRunDependency=addRunDependency;function removeRunDependency(t){if(runDependencies--,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies),runDependencies==0&&(runDependencyWatcher!==null&&(clearInterval(runDependencyWatcher),runDependencyWatcher=null),dependenciesFulfilled)){var e=dependenciesFulfilled;dependenciesFulfilled=null,e()}}Module.removeRunDependency=removeRunDependency,Module.preloadedImages={},Module.preloadedAudios={};var ASM_CONSTS=[function(t,e,r,o,a,n,c,f){return _nbind.callbackSignatureList[t].apply(this,arguments)}];function _emscripten_asm_const_iiiiiiii(t,e,r,o,a,n,c,f){return ASM_CONSTS[t](e,r,o,a,n,c,f)}function _emscripten_asm_const_iiiii(t,e,r,o,a){return ASM_CONSTS[t](e,r,o,a)}function _emscripten_asm_const_iiidddddd(t,e,r,o,a,n,c,f,g){return ASM_CONSTS[t](e,r,o,a,n,c,f,g)}function _emscripten_asm_const_iiididi(t,e,r,o,a,n,c){return ASM_CONSTS[t](e,r,o,a,n,c)}function _emscripten_asm_const_iiii(t,e,r,o){return ASM_CONSTS[t](e,r,o)}function _emscripten_asm_const_iiiid(t,e,r,o,a){return ASM_CONSTS[t](e,r,o,a)}function _emscripten_asm_const_iiiiii(t,e,r,o,a,n){return ASM_CONSTS[t](e,r,o,a,n)}STATIC_BASE=Runtime.GLOBAL_BASE,STATICTOP=STATIC_BASE+12800,__ATINIT__.push({func:function(){__GLOBAL__sub_I_Yoga_cpp()}},{func:function(){__GLOBAL__sub_I_nbind_cc()}},{func:function(){__GLOBAL__sub_I_common_cc()}},{func:function(){__GLOBAL__sub_I_Binding_cc()}}),allocate([0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,127,0,0,192,127,0,0,192,127,0,0,192,127,3,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,3,0,0,0,0,0,192,127,3,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,127,0,0,192,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,127,0,0,0,0,0,0,0,0,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,127,0,0,192,127,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,0,0,128,191,0,0,128,191,0,0,192,127,0,0,0,0,0,0,0,0,0,0,128,63,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,3,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,190,12,0,0,200,12,0,0,208,12,0,0,216,12,0,0,230,12,0,0,242,12,0,0,1,0,0,0,3,0,0,0,0,0,0,0,2,0,0,0,0,0,192,127,3,0,0,0,180,45,0,0,181,45,0,0,182,45,0,0,181,45,0,0,182,45,0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,1,0,0,0,4,0,0,0,183,45,0,0,181,45,0,0,181,45,0,0,181,45,0,0,181,45,0,0,181,45,0,0,181,45,0,0,184,45,0,0,185,45,0,0,181,45,0,0,181,45,0,0,182,45,0,0,186,45,0,0,185,45,0,0,148,4,0,0,3,0,0,0,187,45,0,0,164,4,0,0,188,45,0,0,2,0,0,0,189,45,0,0,164,4,0,0,188,45,0,0,185,45,0,0,164,4,0,0,185,45,0,0,164,4,0,0,188,45,0,0,181,45,0,0,182,45,0,0,181,45,0,0,0,0,0,0,0,0,0,0,1,0,0,0,5,0,0,0,6,0,0,0,1,0,0,0,7,0,0,0,183,45,0,0,182,45,0,0,181,45,0,0,190,45,0,0,190,45,0,0,182,45,0,0,182,45,0,0,185,45,0,0,181,45,0,0,185,45,0,0,182,45,0,0,181,45,0,0,185,45,0,0,182,45,0,0,185,45,0,0,48,5,0,0,3,0,0,0,56,5,0,0,1,0,0,0,189,45,0,0,185,45,0,0,164,4,0,0,76,5,0,0,2,0,0,0,191,45,0,0,186,45,0,0,182,45,0,0,185,45,0,0,192,45,0,0,185,45,0,0,182,45,0,0,186,45,0,0,185,45,0,0,76,5,0,0,76,5,0,0,136,5,0,0,182,45,0,0,181,45,0,0,2,0,0,0,190,45,0,0,136,5,0,0,56,19,0,0,156,5,0,0,2,0,0,0,184,45,0,0,0,0,0,0,0,0,0,0,1,0,0,0,8,0,0,0,9,0,0,0,1,0,0,0,10,0,0,0,204,5,0,0,181,45,0,0,181,45,0,0,2,0,0,0,180,45,0,0,204,5,0,0,2,0,0,0,195,45,0,0,236,5,0,0,97,19,0,0,198,45,0,0,211,45,0,0,212,45,0,0,213,45,0,0,214,45,0,0,215,45,0,0,188,45,0,0,182,45,0,0,216,45,0,0,217,45,0,0,218,45,0,0,219,45,0,0,192,45,0,0,181,45,0,0,0,0,0,0,185,45,0,0,110,19,0,0,186,45,0,0,115,19,0,0,221,45,0,0,120,19,0,0,148,4,0,0,132,19,0,0,96,6,0,0,145,19,0,0,222,45,0,0,164,19,0,0,223,45,0,0,173,19,0,0,0,0,0,0,3,0,0,0,104,6,0,0,1,0,0,0,187,45,0,0,0,0,0,0,0,0,0,0,1,0,0,0,11,0,0,0,12,0,0,0,1,0,0,0,13,0,0,0,185,45,0,0,224,45,0,0,164,6,0,0,188,45,0,0,172,6,0,0,180,6,0,0,2,0,0,0,188,6,0,0,7,0,0,0,224,45,0,0,7,0,0,0,164,6,0,0,1,0,0,0,213,45,0,0,185,45,0,0,224,45,0,0,172,6,0,0,185,45,0,0,224,45,0,0,164,6,0,0,185,45,0,0,224,45,0,0,211,45,0,0,211,45,0,0,222,45,0,0,211,45,0,0,224,45,0,0,222,45,0,0,211,45,0,0,224,45,0,0,172,6,0,0,222,45,0,0,211,45,0,0,224,45,0,0,188,45,0,0,222,45,0,0,211,45,0,0,40,7,0,0,188,45,0,0,2,0,0,0,224,45,0,0,185,45,0,0,188,45,0,0,188,45,0,0,188,45,0,0,188,45,0,0,222,45,0,0,224,45,0,0,148,4,0,0,185,45,0,0,148,4,0,0,148,4,0,0,148,4,0,0,148,4,0,0,148,4,0,0,185,45,0,0,164,6,0,0,148,4,0,0,0,0,0,0,0,0,0,0,1,0,0,0,14,0,0,0,15,0,0,0,1,0,0,0,16,0,0,0,148,7,0,0,2,0,0,0,225,45,0,0,183,45,0,0,188,45,0,0,168,7,0,0,5,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,234,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,9,0,0,5,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,2,0,0,0,242,45,0,0,0,4,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,111,117,108,100,32,110,111,116,32,97,108,108,111,99,97,116,101,32,109,101,109,111,114,121,32,102,111,114,32,110,111,100,101,0,67,97,110,110,111,116,32,114,101,115,101,116,32,97,32,110,111,100,101,32,119,104,105,99,104,32,115,116,105,108,108,32,104,97,115,32,99,104,105,108,100,114,101,110,32,97,116,116,97,99,104,101,100,0,67,97,110,110,111,116,32,114,101,115,101,116,32,97,32,110,111,100,101,32,115,116,105,108,108,32,97,116,116,97,99,104,101,100,32,116,111,32,97,32,112,97,114,101,110,116,0,67,111,117,108,100,32,110,111,116,32,97,108,108,111,99,97,116,101,32,109,101,109,111,114,121,32,102,111,114,32,99,111,110,102,105,103,0,67,97,110,110,111,116,32,115,101,116,32,109,101,97,115,117,114,101,32,102,117,110,99,116,105,111,110,58,32,78,111,100,101,115,32,119,105,116,104,32,109,101,97,115,117,114,101,32,102,117,110,99,116,105,111,110,115,32,99,97,110,110,111,116,32,104,97,118,101,32,99,104,105,108,100,114,101,110,46,0,67,104,105,108,100,32,97,108,114,101,97,100,121,32,104,97,115,32,97,32,112,97,114,101,110,116,44,32,105,116,32,109,117,115,116,32,98,101,32,114,101,109,111,118,101,100,32,102,105,114,115,116,46,0,67,97,110,110,111,116,32,97,100,100,32,99,104,105,108,100,58,32,78,111,100,101,115,32,119,105,116,104,32,109,101,97,115,117,114,101,32,102,117,110,99,116,105,111,110,115,32,99,97,110,110,111,116,32,104,97,118,101,32,99,104,105,108,100,114,101,110,46,0,79,110,108,121,32,108,101,97,102,32,110,111,100,101,115,32,119,105,116,104,32,99,117,115,116,111,109,32,109,101,97,115,117,114,101,32,102,117,110,99,116,105,111,110,115,115,104,111,117,108,100,32,109,97,110,117,97,108,108,121,32,109,97,114,107,32,116,104,101,109,115,101,108,118,101,115,32,97,115,32,100,105,114,116,121,0,67,97,110,110,111,116,32,103,101,116,32,108,97,121,111,117,116,32,112,114,111,112,101,114,116,105,101,115,32,111,102,32,109,117,108,116,105,45,101,100,103,101,32,115,104,111,114,116,104,97,110,100,115,0,37,115,37,100,46,123,91,115,107,105,112,112,101,100,93,32,0,119,109,58,32,37,115,44,32,104,109,58,32,37,115,44,32,97,119,58,32,37,102,32,97,104,58,32,37,102,32,61,62,32,100,58,32,40,37,102,44,32,37,102,41,32,37,115,10,0,37,115,37,100,46,123,37,115,0,42,0,119,109,58,32,37,115,44,32,104,109,58,32,37,115,44,32,97,119,58,32,37,102,32,97,104,58,32,37,102,32,37,115,10,0,37,115,37,100,46,125,37,115,0,119,109,58,32,37,115,44,32,104,109,58,32,37,115,44,32,100,58,32,40,37,102,44,32,37,102,41,32,37,115,10,0,79,117,116,32,111,102,32,99,97,99,104,101,32,101,110,116,114,105,101,115,33,10,0,83,99,97,108,101,32,102,97,99,116,111,114,32,115,104,111,117,108,100,32,110,111,116,32,98,101,32,108,101,115,115,32,116,104,97,110,32,122,101,114,111,0,105,110,105,116,105,97,108,0,37,115,10,0,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,0,85,78,68,69,70,73,78,69,68,0,69,88,65,67,84,76,89,0,65,84,95,77,79,83,84,0,76,65,89,95,85,78,68,69,70,73,78,69,68,0,76,65,89,95,69,88,65,67,84,76,89,0,76,65,89,95,65,84,95,77,79,83,84,0,97,118,97,105,108,97,98,108,101,87,105,100,116,104,32,105,115,32,105,110,100,101,102,105,110,105,116,101,32,115,111,32,119,105,100,116,104,77,101,97,115,117,114,101,77,111,100,101,32,109,117,115,116,32,98,101,32,89,71,77,101,97,115,117,114,101,77,111,100,101,85,110,100,101,102,105,110,101,100,0,97,118,97,105,108,97,98,108,101,72,101,105,103,104,116,32,105,115,32,105,110,100,101,102,105,110,105,116,101,32,115,111,32,104,101,105,103,104,116,77,101,97,115,117,114,101,77,111,100,101,32,109,117,115,116,32,98,101,32,89,71,77,101,97,115,117,114,101,77,111,100,101,85,110,100,101,102,105,110,101,100,0,102,108,101,120,0,115,116,114,101,116,99,104,0,109,117,108,116,105,108,105,110,101,45,115,116,114,101,116,99,104,0,69,120,112,101,99,116,101,100,32,110,111,100,101,32,116,111,32,104,97,118,101,32,99,117,115,116,111,109,32,109,101,97,115,117,114,101,32,102,117,110,99,116,105,111,110,0,109,101,97,115,117,114,101,0,69,120,112,101,99,116,32,99,117,115,116,111,109,32,98,97,115,101,108,105,110,101,32,102,117,110,99,116,105,111,110,32,116,111,32,110,111,116,32,114,101,116,117,114,110,32,78,97,78,0,97,98,115,45,109,101,97,115,117,114,101,0,97,98,115,45,108,97,121,111,117,116,0,78,111,100,101,0,99,114,101,97,116,101,68,101,102,97,117,108,116,0,99,114,101,97,116,101,87,105,116,104,67,111,110,102,105,103,0,100,101,115,116,114,111,121,0,114,101,115,101,116,0,99,111,112,121,83,116,121,108,101,0,115,101,116,80,111,115,105,116,105,111,110,84,121,112,101,0,115,101,116,80,111,115,105,116,105,111,110,0,115,101,116,80,111,115,105,116,105,111,110,80,101,114,99,101,110,116,0,115,101,116,65,108,105,103,110,67,111,110,116,101,110,116,0,115,101,116,65,108,105,103,110,73,116,101,109,115,0,115,101,116,65,108,105,103,110,83,101,108,102,0,115,101,116,70,108,101,120,68,105,114,101,99,116,105,111,110,0,115,101,116,70,108,101,120,87,114,97,112,0,115,101,116,74,117,115,116,105,102,121,67,111,110,116,101,110,116,0,115,101,116,77,97,114,103,105,110,0,115,101,116,77,97,114,103,105,110,80,101,114,99,101,110,116,0,115,101,116,77,97,114,103,105,110,65,117,116,111,0,115,101,116,79,118,101,114,102,108,111,119,0,115,101,116,68,105,115,112,108,97,121,0,115,101,116,70,108,101,120,0,115,101,116,70,108,101,120,66,97,115,105,115,0,115,101,116,70,108,101,120,66,97,115,105,115,80,101,114,99,101,110,116,0,115,101,116,70,108,101,120,71,114,111,119,0,115,101,116,70,108,101,120,83,104,114,105,110,107,0,115,101,116,87,105,100,116,104,0,115,101,116,87,105,100,116,104,80,101,114,99,101,110,116,0,115,101,116,87,105,100,116,104,65,117,116,111,0,115,101,116,72,101,105,103,104,116,0,115,101,116,72,101,105,103,104,116,80,101,114,99,101,110,116,0,115,101,116,72,101,105,103,104,116,65,117,116,111,0,115,101,116,77,105,110,87,105,100,116,104,0,115,101,116,77,105,110,87,105,100,116,104,80,101,114,99,101,110,116,0,115,101,116,77,105,110,72,101,105,103,104,116,0,115,101,116,77,105,110,72,101,105,103,104,116,80,101,114,99,101,110,116,0,115,101,116,77,97,120,87,105,100,116,104,0,115,101,116,77,97,120,87,105,100,116,104,80,101,114,99,101,110,116,0,115,101,116,77,97,120,72,101,105,103,104,116,0,115,101,116,77,97,120,72,101,105,103,104,116,80,101,114,99,101,110,116,0,115,101,116,65,115,112,101,99,116,82,97,116,105,111,0,115,101,116,66,111,114,100,101,114,0,115,101,116,80,97,100,100,105,110,103,0,115,101,116,80,97,100,100,105,110,103,80,101,114,99,101,110,116,0,103,101,116,80,111,115,105,116,105,111,110,84,121,112,101,0,103,101,116,80,111,115,105,116,105,111,110,0,103,101,116,65,108,105,103,110,67,111,110,116,101,110,116,0,103,101,116,65,108,105,103,110,73,116,101,109,115,0,103,101,116,65,108,105,103,110,83,101,108,102,0,103,101,116,70,108,101,120,68,105,114,101,99,116,105,111,110,0,103,101,116,70,108,101,120,87,114,97,112,0,103,101,116,74,117,115,116,105,102,121,67,111,110,116,101,110,116,0,103,101,116,77,97,114,103,105,110,0,103,101,116,70,108,101,120,66,97,115,105,115,0,103,101,116,70,108,101,120,71,114,111,119,0,103,101,116,70,108,101,120,83,104,114,105,110,107,0,103,101,116,87,105,100,116,104,0,103,101,116,72,101,105,103,104,116,0,103,101,116,77,105,110,87,105,100,116,104,0,103,101,116,77,105,110,72,101,105,103,104,116,0,103,101,116,77,97,120,87,105,100,116,104,0,103,101,116,77,97,120,72,101,105,103,104,116,0,103,101,116,65,115,112,101,99,116,82,97,116,105,111,0,103,101,116,66,111,114,100,101,114,0,103,101,116,79,118,101,114,102,108,111,119,0,103,101,116,68,105,115,112,108,97,121,0,103,101,116,80,97,100,100,105,110,103,0,105,110,115,101,114,116,67,104,105,108,100,0,114,101,109,111,118,101,67,104,105,108,100,0,103,101,116,67,104,105,108,100,67,111,117,110,116,0,103,101,116,80,97,114,101,110,116,0,103,101,116,67,104,105,108,100,0,115,101,116,77,101,97,115,117,114,101,70,117,110,99,0,117,110,115,101,116,77,101,97,115,117,114,101,70,117,110,99,0,109,97,114,107,68,105,114,116,121,0,105,115,68,105,114,116,121,0,99,97,108,99,117,108,97,116,101,76,97,121,111,117,116,0,103,101,116,67,111,109,112,117,116,101,100,76,101,102,116,0,103,101,116,67,111,109,112,117,116,101,100,82,105,103,104,116,0,103,101,116,67,111,109,112,117,116,101,100,84,111,112,0,103,101,116,67,111,109,112,117,116,101,100,66,111,116,116,111,109,0,103,101,116,67,111,109,112,117,116,101,100,87,105,100,116,104,0,103,101,116,67,111,109,112,117,116,101,100,72,101,105,103,104,116,0,103,101,116,67,111,109,112,117,116,101,100,76,97,121,111,117,116,0,103,101,116,67,111,109,112,117,116,101,100,77,97,114,103,105,110,0,103,101,116,67,111,109,112,117,116,101,100,66,111,114,100,101,114,0,103,101,116,67,111,109,112,117,116,101,100,80,97,100,100,105,110,103,0,67,111,110,102,105,103,0,99,114,101,97,116,101,0,115,101,116,69,120,112,101,114,105,109,101,110,116,97,108,70,101,97,116,117,114,101,69,110,97,98,108,101,100,0,115,101,116,80,111,105,110,116,83,99,97,108,101,70,97,99,116,111,114,0,105,115,69,120,112,101,114,105,109,101,110,116,97,108,70,101,97,116,117,114,101,69,110,97,98,108,101,100,0,86,97,108,117,101,0,76,97,121,111,117,116,0,83,105,122,101,0,103,101,116,73,110,115,116,97,110,99,101,67,111,117,110,116,0,73,110,116,54,52,0,1,1,1,2,2,4,4,4,4,8,8,4,8,118,111,105,100,0,98,111,111,108,0,115,116,100,58,58,115,116,114,105,110,103,0,99,98,70,117,110,99,116,105,111,110,32,38,0,99,111,110,115,116,32,99,98,70,117,110,99,116,105,111,110,32,38,0,69,120,116,101,114,110,97,108,0,66,117,102,102,101,114,0,78,66,105,110,100,73,68,0,78,66,105,110,100,0,98,105,110,100,95,118,97,108,117,101,0,114,101,102,108,101,99,116,0,113,117,101,114,121,84,121,112,101,0,108,97,108,108,111,99,0,108,114,101,115,101,116,0,123,114,101,116,117,114,110,40,95,110,98,105,110,100,46,99,97,108,108,98,97,99,107,83,105,103,110,97,116,117,114,101,76,105,115,116,91,36,48,93,46,97,112,112,108,121,40,116,104,105,115,44,97,114,103,117,109,101,110,116,115,41,41,59,125,0,95,110,98,105,110,100,95,110,101,119,0,17,0,10,0,17,17,17,0,0,0,0,5,0,0,0,0,0,0,9,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,15,10,17,17,17,3,10,7,0,1,19,9,11,11,0,0,9,6,11,0,0,11,0,6,17,0,0,0,17,17,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,10,10,17,17,17,0,10,0,0,2,0,9,11,0,0,0,9,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,4,13,0,0,0,0,9,14,0,0,0,0,0,14,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,15,0,0,0,0,9,16,0,0,0,0,0,16,0,0,16,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,10,0,0,0,0,9,11,0,0,0,0,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,45,43,32,32,32,48,88,48,120,0,40,110,117,108,108,41,0,45,48,88,43,48,88,32,48,88,45,48,120,43,48,120,32,48,120,0,105,110,102,0,73,78,70,0,110,97,110,0,78,65,78,0,48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70,46,0,84,33,34,25,13,1,2,3,17,75,28,12,16,4,11,29,18,30,39,104,110,111,112,113,98,32,5,6,15,19,20,21,26,8,22,7,40,36,23,24,9,10,14,27,31,37,35,131,130,125,38,42,43,60,61,62,63,67,71,74,77,88,89,90,91,92,93,94,95,96,97,99,100,101,102,103,105,106,107,108,114,115,116,121,122,123,124,0,73,108,108,101,103,97,108,32,98,121,116,101,32,115,101,113,117,101,110,99,101,0,68,111,109,97,105,110,32,101,114,114,111,114,0,82,101,115,117,108,116,32,110,111,116,32,114,101,112,114,101,115,101,110,116,97,98,108,101,0,78,111,116,32,97,32,116,116,121,0,80,101,114,109,105,115,115,105,111,110,32,100,101,110,105,101,100,0,79,112,101,114,97,116,105,111,110,32,110,111,116,32,112,101,114,109,105,116,116,101,100,0,78,111,32,115,117,99,104,32,102,105,108,101,32,111,114,32,100,105,114,101,99,116,111,114,121,0,78,111,32,115,117,99,104,32,112,114,111,99,101,115,115,0,70,105,108,101,32,101,120,105,115,116,115,0,86,97,108,117,101,32,116,111,111,32,108,97,114,103,101,32,102,111,114,32,100,97,116,97,32,116,121,112,101,0,78,111,32,115,112,97,99,101,32,108,101,102,116,32,111,110,32,100,101,118,105,99,101,0,79,117,116,32,111,102,32,109,101,109,111,114,121,0,82,101,115,111,117,114,99,101,32,98,117,115,121,0,73,110,116,101,114,114,117,112,116,101,100,32,115,121,115,116,101,109,32,99,97,108,108,0,82,101,115,111,117,114,99,101,32,116,101,109,112,111,114,97,114,105,108,121,32,117,110,97,118,97,105,108,97,98,108,101,0,73,110,118,97,108,105,100,32,115,101,101,107,0,67,114,111,115,115,45,100,101,118,105,99,101,32,108,105,110,107,0,82,101,97,100,45,111,110,108,121,32,102,105,108,101,32,115,121,115,116,101,109,0,68,105,114,101,99,116,111,114,121,32,110,111,116,32,101,109,112,116,121,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,112,101,101,114,0,79,112,101,114,97,116,105,111,110,32,116,105,109,101,100,32,111,117,116,0,67,111,110,110,101,99,116,105,111,110,32,114,101,102,117,115,101,100,0,72,111,115,116,32,105,115,32,100,111,119,110,0,72,111,115,116,32,105,115,32,117,110,114,101,97,99,104,97,98,108,101,0,65,100,100,114,101,115,115,32,105,110,32,117,115,101,0,66,114,111,107,101,110,32,112,105,112,101,0,73,47,79,32,101,114,114,111,114,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,32,111,114,32,97,100,100,114,101,115,115,0,66,108,111,99,107,32,100,101,118,105,99,101,32,114,101,113,117,105,114,101,100,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,0,78,111,116,32,97,32,100,105,114,101,99,116,111,114,121,0,73,115,32,97,32,100,105,114,101,99,116,111,114,121,0,84,101,120,116,32,102,105,108,101,32,98,117,115,121,0,69,120,101,99,32,102,111,114,109,97,116,32,101,114,114,111,114,0,73,110,118,97,108,105,100,32,97,114,103,117,109,101,110,116,0,65,114,103,117,109,101,110,116,32,108,105,115,116,32,116,111,111,32,108,111,110,103,0,83,121,109,98,111,108,105,99,32,108,105,110,107,32,108,111,111,112,0,70,105,108,101,110,97,109,101,32,116,111,111,32,108,111,110,103,0,84,111,111,32,109,97,110,121,32,111,112,101,110,32,102,105,108,101,115,32,105,110,32,115,121,115,116,101,109,0,78,111,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,115,32,97,118,97,105,108,97,98,108,101,0,66,97,100,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,0,78,111,32,99,104,105,108,100,32,112,114,111,99,101,115,115,0,66,97,100,32,97,100,100,114,101,115,115,0,70,105,108,101,32,116,111,111,32,108,97,114,103,101,0,84,111,111,32,109,97,110,121,32,108,105,110,107,115,0,78,111,32,108,111,99,107,115,32,97,118,97,105,108,97,98,108,101,0,82,101,115,111,117,114,99,101,32,100,101,97,100,108,111,99,107,32,119,111,117,108,100,32,111,99,99,117,114,0,83,116,97,116,101,32,110,111,116,32,114,101,99,111,118,101,114,97,98,108,101,0,80,114,101,118,105,111,117,115,32,111,119,110,101,114,32,100,105,101,100,0,79,112,101,114,97,116,105,111,110,32,99,97,110,99,101,108,101,100,0,70,117,110,99,116,105,111,110,32,110,111,116,32,105,109,112,108,101,109,101,110,116,101,100,0,78,111,32,109,101,115,115,97,103,101,32,111,102,32,100,101,115,105,114,101,100,32,116,121,112,101,0,73,100,101,110,116,105,102,105,101,114,32,114,101,109,111,118,101,100,0,68,101,118,105,99,101,32,110,111,116,32,97,32,115,116,114,101,97,109,0,78,111,32,100,97,116,97,32,97,118,97,105,108,97,98,108,101,0,68,101,118,105,99,101,32,116,105,109,101,111,117,116,0,79,117,116,32,111,102,32,115,116,114,101,97,109,115,32,114,101,115,111,117,114,99,101,115,0,76,105,110,107,32,104,97,115,32,98,101,101,110,32,115,101,118,101,114,101,100,0,80,114,111,116,111,99,111,108,32,101,114,114,111,114,0,66,97,100,32,109,101,115,115,97,103,101,0,70,105,108,101,32,100,101,115,99,114,105,112,116,111,114,32,105,110,32,98,97,100,32,115,116,97,116,101,0,78,111,116,32,97,32,115,111,99,107,101,116,0,68,101,115,116,105,110,97,116,105,111,110,32,97,100,100,114,101,115,115,32,114,101,113,117,105,114,101,100,0,77,101,115,115,97,103,101,32,116,111,111,32,108,97,114,103,101,0,80,114,111,116,111,99,111,108,32,119,114,111,110,103,32,116,121,112,101,32,102,111,114,32,115,111,99,107,101,116,0,80,114,111,116,111,99,111,108,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,80,114,111,116,111,99,111,108,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,83,111,99,107,101,116,32,116,121,112,101,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,78,111,116,32,115,117,112,112,111,114,116,101,100,0,80,114,111,116,111,99,111,108,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,65,100,100,114,101,115,115,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,98,121,32,112,114,111,116,111,99,111,108,0,65,100,100,114,101,115,115,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,78,101,116,119,111,114,107,32,105,115,32,100,111,119,110,0,78,101,116,119,111,114,107,32,117,110,114,101,97,99,104,97,98,108,101,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,110,101,116,119,111,114,107,0,67,111,110,110,101,99,116,105,111,110,32,97,98,111,114,116,101,100,0,78,111,32,98,117,102,102,101,114,32,115,112,97,99,101,32,97,118,97,105,108,97,98,108,101,0,83,111,99,107,101,116,32,105,115,32,99,111,110,110,101,99,116,101,100,0,83,111,99,107,101,116,32,110,111,116,32,99,111,110,110,101,99,116,101,100,0,67,97,110,110,111,116,32,115,101,110,100,32,97,102,116,101,114,32,115,111,99,107,101,116,32,115,104,117,116,100,111,119,110,0,79,112,101,114,97,116,105,111,110,32,97,108,114,101,97,100,121,32,105,110,32,112,114,111,103,114,101,115,115,0,79,112,101,114,97,116,105,111,110,32,105,110,32,112,114,111,103,114,101,115,115,0,83,116,97,108,101,32,102,105,108,101,32,104,97,110,100,108,101,0,82,101,109,111,116,101,32,73,47,79,32,101,114,114,111,114,0,81,117,111,116,97,32,101,120,99,101,101,100,101,100,0,78,111,32,109,101,100,105,117,109,32,102,111,117,110,100,0,87,114,111,110,103,32,109,101,100,105,117,109,32,116,121,112,101,0,78,111,32,101,114,114,111,114,32,105,110,102,111,114,109,97,116,105,111,110,0,0],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE);var tempDoublePtr=STATICTOP;STATICTOP+=16;function _atexit(t,e){__ATEXIT__.unshift({func:t,arg:e})}function ___cxa_atexit(){return _atexit.apply(null,arguments)}function _abort(){Module.abort()}function __ZN8facebook4yoga14YGNodeToStringEPNSt3__212basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEP6YGNode14YGPrintOptionsj(){Module.printErr("missing function: _ZN8facebook4yoga14YGNodeToStringEPNSt3__212basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEP6YGNode14YGPrintOptionsj"),abort(-1)}function __decorate(t,e,r,o){var a=arguments.length,n=a<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,r):o,c;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")n=Reflect.decorate(t,e,r,o);else for(var f=t.length-1;f>=0;f--)(c=t[f])&&(n=(a<3?c(n):a>3?c(e,r,n):c(e,r))||n);return a>3&&n&&Object.defineProperty(e,r,n),n}function _defineHidden(t){return function(e,r){Object.defineProperty(e,r,{configurable:!1,enumerable:!1,value:t,writable:!0})}}var _nbind={};function __nbind_free_external(t){_nbind.externalList[t].dereference(t)}function __nbind_reference_external(t){_nbind.externalList[t].reference()}function _llvm_stackrestore(t){var e=_llvm_stacksave,r=e.LLVM_SAVEDSTACKS[t];e.LLVM_SAVEDSTACKS.splice(t,1),Runtime.stackRestore(r)}function __nbind_register_pool(t,e,r,o){_nbind.Pool.pageSize=t,_nbind.Pool.usedPtr=e/4,_nbind.Pool.rootPtr=r,_nbind.Pool.pagePtr=o/4,HEAP32[e/4]=16909060,HEAP8[e]==1&&(_nbind.bigEndian=!0),HEAP32[e/4]=0,_nbind.makeTypeKindTbl=(n={},n[1024]=_nbind.PrimitiveType,n[64]=_nbind.Int64Type,n[2048]=_nbind.BindClass,n[3072]=_nbind.BindClassPtr,n[4096]=_nbind.SharedClassPtr,n[5120]=_nbind.ArrayType,n[6144]=_nbind.ArrayType,n[7168]=_nbind.CStringType,n[9216]=_nbind.CallbackType,n[10240]=_nbind.BindType,n),_nbind.makeTypeNameTbl={Buffer:_nbind.BufferType,External:_nbind.ExternalType,Int64:_nbind.Int64Type,_nbind_new:_nbind.CreateValueType,bool:_nbind.BooleanType,"cbFunction &":_nbind.CallbackType,"const cbFunction &":_nbind.CallbackType,"const std::string &":_nbind.StringType,"std::string":_nbind.StringType},Module.toggleLightGC=_nbind.toggleLightGC,_nbind.callUpcast=Module.dynCall_ii;var a=_nbind.makeType(_nbind.constructType,{flags:2048,id:0,name:""});a.proto=Module,_nbind.BindClass.list.push(a);var n}function _emscripten_set_main_loop_timing(t,e){if(Browser.mainLoop.timingMode=t,Browser.mainLoop.timingValue=e,!Browser.mainLoop.func)return 1;if(t==0)Browser.mainLoop.scheduler=function(){var c=Math.max(0,Browser.mainLoop.tickStartTime+e-_emscripten_get_now())|0;setTimeout(Browser.mainLoop.runner,c)},Browser.mainLoop.method="timeout";else if(t==1)Browser.mainLoop.scheduler=function(){Browser.requestAnimationFrame(Browser.mainLoop.runner)},Browser.mainLoop.method="rAF";else if(t==2){if(!window.setImmediate){let n=function(c){c.source===window&&c.data===o&&(c.stopPropagation(),r.shift()())};var a=n,r=[],o="setimmediate";window.addEventListener("message",n,!0),window.setImmediate=function(f){r.push(f),ENVIRONMENT_IS_WORKER?(Module.setImmediates===void 0&&(Module.setImmediates=[]),Module.setImmediates.push(f),window.postMessage({target:o})):window.postMessage(o,"*")}}Browser.mainLoop.scheduler=function(){window.setImmediate(Browser.mainLoop.runner)},Browser.mainLoop.method="immediate"}return 0}function _emscripten_get_now(){abort()}function _emscripten_set_main_loop(t,e,r,o,a){Module.noExitRuntime=!0,assert(!Browser.mainLoop.func,"emscripten_set_main_loop: there can only be one main loop function at once: call emscripten_cancel_main_loop to cancel the previous one before setting a new one with different parameters."),Browser.mainLoop.func=t,Browser.mainLoop.arg=o;var n;typeof o<"u"?n=function(){Module.dynCall_vi(t,o)}:n=function(){Module.dynCall_v(t)};var c=Browser.mainLoop.currentlyRunningMainloop;if(Browser.mainLoop.runner=function(){if(!ABORT){if(Browser.mainLoop.queue.length>0){var g=Date.now(),p=Browser.mainLoop.queue.shift();if(p.func(p.arg),Browser.mainLoop.remainingBlockers){var E=Browser.mainLoop.remainingBlockers,B=E%1==0?E-1:Math.floor(E);p.counted?Browser.mainLoop.remainingBlockers=B:(B=B+.5,Browser.mainLoop.remainingBlockers=(8*E+B)/9)}if(console.log('main loop blocker "'+p.name+'" took '+(Date.now()-g)+" ms"),Browser.mainLoop.updateStatus(),c1&&Browser.mainLoop.currentFrameNumber%Browser.mainLoop.timingValue!=0){Browser.mainLoop.scheduler();return}else Browser.mainLoop.timingMode==0&&(Browser.mainLoop.tickStartTime=_emscripten_get_now());Browser.mainLoop.method==="timeout"&&Module.ctx&&(Module.printErr("Looks like you are rendering without using requestAnimationFrame for the main loop. You should use 0 for the frame rate in emscripten_set_main_loop in order to use requestAnimationFrame, as that can greatly improve your frame rates!"),Browser.mainLoop.method=""),Browser.mainLoop.runIter(n),!(c0?_emscripten_set_main_loop_timing(0,1e3/e):_emscripten_set_main_loop_timing(1,1),Browser.mainLoop.scheduler()),r)throw"SimulateInfiniteLoop"}var Browser={mainLoop:{scheduler:null,method:"",currentlyRunningMainloop:0,func:null,arg:0,timingMode:0,timingValue:0,currentFrameNumber:0,queue:[],pause:function(){Browser.mainLoop.scheduler=null,Browser.mainLoop.currentlyRunningMainloop++},resume:function(){Browser.mainLoop.currentlyRunningMainloop++;var t=Browser.mainLoop.timingMode,e=Browser.mainLoop.timingValue,r=Browser.mainLoop.func;Browser.mainLoop.func=null,_emscripten_set_main_loop(r,0,!1,Browser.mainLoop.arg,!0),_emscripten_set_main_loop_timing(t,e),Browser.mainLoop.scheduler()},updateStatus:function(){if(Module.setStatus){var t=Module.statusMessage||"Please wait...",e=Browser.mainLoop.remainingBlockers,r=Browser.mainLoop.expectedBlockers;e?e"u"&&(console.log("warning: Browser does not support creating object URLs. Built-in browser image decoding will not be available."),Module.noImageDecoding=!0);var t={};t.canHandle=function(n){return!Module.noImageDecoding&&/\.(jpg|jpeg|png|bmp)$/i.test(n)},t.handle=function(n,c,f,g){var p=null;if(Browser.hasBlobConstructor)try{p=new Blob([n],{type:Browser.getMimetype(c)}),p.size!==n.length&&(p=new Blob([new Uint8Array(n).buffer],{type:Browser.getMimetype(c)}))}catch(x){Runtime.warnOnce("Blob constructor present but fails: "+x+"; falling back to blob builder")}if(!p){var E=new Browser.BlobBuilder;E.append(new Uint8Array(n).buffer),p=E.getBlob()}var B=Browser.URLObject.createObjectURL(p),Q=new Image;Q.onload=function(){assert(Q.complete,"Image "+c+" could not be decoded");var C=document.createElement("canvas");C.width=Q.width,C.height=Q.height;var N=C.getContext("2d");N.drawImage(Q,0,0),Module.preloadedImages[c]=C,Browser.URLObject.revokeObjectURL(B),f&&f(n)},Q.onerror=function(C){console.log("Image "+B+" could not be decoded"),g&&g()},Q.src=B},Module.preloadPlugins.push(t);var e={};e.canHandle=function(n){return!Module.noAudioDecoding&&n.substr(-4)in{".ogg":1,".wav":1,".mp3":1}},e.handle=function(n,c,f,g){var p=!1;function E(N){p||(p=!0,Module.preloadedAudios[c]=N,f&&f(n))}function B(){p||(p=!0,Module.preloadedAudios[c]=new Audio,g&&g())}if(Browser.hasBlobConstructor){try{var Q=new Blob([n],{type:Browser.getMimetype(c)})}catch{return B()}var x=Browser.URLObject.createObjectURL(Q),C=new Audio;C.addEventListener("canplaythrough",function(){E(C)},!1),C.onerror=function(U){if(p)return;console.log("warning: browser could not fully decode audio "+c+", trying slower base64 approach");function H(X){for(var ie="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",fe="=",ye="",Qe=0,Pe=0,pe=0;pe=6;){var Ee=Qe>>Pe-6&63;Pe-=6,ye+=ie[Ee]}return Pe==2?(ye+=ie[(Qe&3)<<4],ye+=fe+fe):Pe==4&&(ye+=ie[(Qe&15)<<2],ye+=fe),ye}C.src="data:audio/x-"+c.substr(-3)+";base64,"+H(n),E(C)},C.src=x,Browser.safeSetTimeout(function(){E(C)},1e4)}else return B()},Module.preloadPlugins.push(e);function r(){Browser.pointerLock=document.pointerLockElement===Module.canvas||document.mozPointerLockElement===Module.canvas||document.webkitPointerLockElement===Module.canvas||document.msPointerLockElement===Module.canvas}var o=Module.canvas;o&&(o.requestPointerLock=o.requestPointerLock||o.mozRequestPointerLock||o.webkitRequestPointerLock||o.msRequestPointerLock||function(){},o.exitPointerLock=document.exitPointerLock||document.mozExitPointerLock||document.webkitExitPointerLock||document.msExitPointerLock||function(){},o.exitPointerLock=o.exitPointerLock.bind(document),document.addEventListener("pointerlockchange",r,!1),document.addEventListener("mozpointerlockchange",r,!1),document.addEventListener("webkitpointerlockchange",r,!1),document.addEventListener("mspointerlockchange",r,!1),Module.elementPointerLock&&o.addEventListener("click",function(a){!Browser.pointerLock&&Module.canvas.requestPointerLock&&(Module.canvas.requestPointerLock(),a.preventDefault())},!1))},createContext:function(t,e,r,o){if(e&&Module.ctx&&t==Module.canvas)return Module.ctx;var a,n;if(e){var c={antialias:!1,alpha:!1};if(o)for(var f in o)c[f]=o[f];n=GL.createContext(t,c),n&&(a=GL.getContext(n).GLctx)}else a=t.getContext("2d");return a?(r&&(e||assert(typeof GLctx>"u","cannot set in module if GLctx is used, but we are a non-GL context that would replace it"),Module.ctx=a,e&&GL.makeContextCurrent(n),Module.useWebGL=e,Browser.moduleContextCreatedCallbacks.forEach(function(g){g()}),Browser.init()),a):null},destroyContext:function(t,e,r){},fullscreenHandlersInstalled:!1,lockPointer:void 0,resizeCanvas:void 0,requestFullscreen:function(t,e,r){Browser.lockPointer=t,Browser.resizeCanvas=e,Browser.vrDevice=r,typeof Browser.lockPointer>"u"&&(Browser.lockPointer=!0),typeof Browser.resizeCanvas>"u"&&(Browser.resizeCanvas=!1),typeof Browser.vrDevice>"u"&&(Browser.vrDevice=null);var o=Module.canvas;function a(){Browser.isFullscreen=!1;var c=o.parentNode;(document.fullscreenElement||document.mozFullScreenElement||document.msFullscreenElement||document.webkitFullscreenElement||document.webkitCurrentFullScreenElement)===c?(o.exitFullscreen=document.exitFullscreen||document.cancelFullScreen||document.mozCancelFullScreen||document.msExitFullscreen||document.webkitCancelFullScreen||function(){},o.exitFullscreen=o.exitFullscreen.bind(document),Browser.lockPointer&&o.requestPointerLock(),Browser.isFullscreen=!0,Browser.resizeCanvas&&Browser.setFullscreenCanvasSize()):(c.parentNode.insertBefore(o,c),c.parentNode.removeChild(c),Browser.resizeCanvas&&Browser.setWindowedCanvasSize()),Module.onFullScreen&&Module.onFullScreen(Browser.isFullscreen),Module.onFullscreen&&Module.onFullscreen(Browser.isFullscreen),Browser.updateCanvasDimensions(o)}Browser.fullscreenHandlersInstalled||(Browser.fullscreenHandlersInstalled=!0,document.addEventListener("fullscreenchange",a,!1),document.addEventListener("mozfullscreenchange",a,!1),document.addEventListener("webkitfullscreenchange",a,!1),document.addEventListener("MSFullscreenChange",a,!1));var n=document.createElement("div");o.parentNode.insertBefore(n,o),n.appendChild(o),n.requestFullscreen=n.requestFullscreen||n.mozRequestFullScreen||n.msRequestFullscreen||(n.webkitRequestFullscreen?function(){n.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT)}:null)||(n.webkitRequestFullScreen?function(){n.webkitRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT)}:null),r?n.requestFullscreen({vrDisplay:r}):n.requestFullscreen()},requestFullScreen:function(t,e,r){return Module.printErr("Browser.requestFullScreen() is deprecated. Please call Browser.requestFullscreen instead."),Browser.requestFullScreen=function(o,a,n){return Browser.requestFullscreen(o,a,n)},Browser.requestFullscreen(t,e,r)},nextRAF:0,fakeRequestAnimationFrame:function(t){var e=Date.now();if(Browser.nextRAF===0)Browser.nextRAF=e+1e3/60;else for(;e+2>=Browser.nextRAF;)Browser.nextRAF+=1e3/60;var r=Math.max(Browser.nextRAF-e,0);setTimeout(t,r)},requestAnimationFrame:function t(e){typeof window>"u"?Browser.fakeRequestAnimationFrame(e):(window.requestAnimationFrame||(window.requestAnimationFrame=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame||window.oRequestAnimationFrame||Browser.fakeRequestAnimationFrame),window.requestAnimationFrame(e))},safeCallback:function(t){return function(){if(!ABORT)return t.apply(null,arguments)}},allowAsyncCallbacks:!0,queuedAsyncCallbacks:[],pauseAsyncCallbacks:function(){Browser.allowAsyncCallbacks=!1},resumeAsyncCallbacks:function(){if(Browser.allowAsyncCallbacks=!0,Browser.queuedAsyncCallbacks.length>0){var t=Browser.queuedAsyncCallbacks;Browser.queuedAsyncCallbacks=[],t.forEach(function(e){e()})}},safeRequestAnimationFrame:function(t){return Browser.requestAnimationFrame(function(){ABORT||(Browser.allowAsyncCallbacks?t():Browser.queuedAsyncCallbacks.push(t))})},safeSetTimeout:function(t,e){return Module.noExitRuntime=!0,setTimeout(function(){ABORT||(Browser.allowAsyncCallbacks?t():Browser.queuedAsyncCallbacks.push(t))},e)},safeSetInterval:function(t,e){return Module.noExitRuntime=!0,setInterval(function(){ABORT||Browser.allowAsyncCallbacks&&t()},e)},getMimetype:function(t){return{jpg:"image/jpeg",jpeg:"image/jpeg",png:"image/png",bmp:"image/bmp",ogg:"audio/ogg",wav:"audio/wav",mp3:"audio/mpeg"}[t.substr(t.lastIndexOf(".")+1)]},getUserMedia:function(t){window.getUserMedia||(window.getUserMedia=navigator.getUserMedia||navigator.mozGetUserMedia),window.getUserMedia(t)},getMovementX:function(t){return t.movementX||t.mozMovementX||t.webkitMovementX||0},getMovementY:function(t){return t.movementY||t.mozMovementY||t.webkitMovementY||0},getMouseWheelDelta:function(t){var e=0;switch(t.type){case"DOMMouseScroll":e=t.detail;break;case"mousewheel":e=t.wheelDelta;break;case"wheel":e=t.deltaY;break;default:throw"unrecognized mouse wheel event: "+t.type}return e},mouseX:0,mouseY:0,mouseMovementX:0,mouseMovementY:0,touches:{},lastTouches:{},calculateMouseEvent:function(t){if(Browser.pointerLock)t.type!="mousemove"&&"mozMovementX"in t?Browser.mouseMovementX=Browser.mouseMovementY=0:(Browser.mouseMovementX=Browser.getMovementX(t),Browser.mouseMovementY=Browser.getMovementY(t)),typeof SDL<"u"?(Browser.mouseX=SDL.mouseX+Browser.mouseMovementX,Browser.mouseY=SDL.mouseY+Browser.mouseMovementY):(Browser.mouseX+=Browser.mouseMovementX,Browser.mouseY+=Browser.mouseMovementY);else{var e=Module.canvas.getBoundingClientRect(),r=Module.canvas.width,o=Module.canvas.height,a=typeof window.scrollX<"u"?window.scrollX:window.pageXOffset,n=typeof window.scrollY<"u"?window.scrollY:window.pageYOffset;if(t.type==="touchstart"||t.type==="touchend"||t.type==="touchmove"){var c=t.touch;if(c===void 0)return;var f=c.pageX-(a+e.left),g=c.pageY-(n+e.top);f=f*(r/e.width),g=g*(o/e.height);var p={x:f,y:g};if(t.type==="touchstart")Browser.lastTouches[c.identifier]=p,Browser.touches[c.identifier]=p;else if(t.type==="touchend"||t.type==="touchmove"){var E=Browser.touches[c.identifier];E||(E=p),Browser.lastTouches[c.identifier]=E,Browser.touches[c.identifier]=p}return}var B=t.pageX-(a+e.left),Q=t.pageY-(n+e.top);B=B*(r/e.width),Q=Q*(o/e.height),Browser.mouseMovementX=B-Browser.mouseX,Browser.mouseMovementY=Q-Browser.mouseY,Browser.mouseX=B,Browser.mouseY=Q}},asyncLoad:function(t,e,r,o){var a=o?"":"al "+t;Module.readAsync(t,function(n){assert(n,'Loading data file "'+t+'" failed (no arrayBuffer).'),e(new Uint8Array(n)),a&&removeRunDependency(a)},function(n){if(r)r();else throw'Loading data file "'+t+'" failed.'}),a&&addRunDependency(a)},resizeListeners:[],updateResizeListeners:function(){var t=Module.canvas;Browser.resizeListeners.forEach(function(e){e(t.width,t.height)})},setCanvasSize:function(t,e,r){var o=Module.canvas;Browser.updateCanvasDimensions(o,t,e),r||Browser.updateResizeListeners()},windowedWidth:0,windowedHeight:0,setFullscreenCanvasSize:function(){if(typeof SDL<"u"){var t=HEAPU32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2];t=t|8388608,HEAP32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2]=t}Browser.updateResizeListeners()},setWindowedCanvasSize:function(){if(typeof SDL<"u"){var t=HEAPU32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2];t=t&-8388609,HEAP32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2]=t}Browser.updateResizeListeners()},updateCanvasDimensions:function(t,e,r){e&&r?(t.widthNative=e,t.heightNative=r):(e=t.widthNative,r=t.heightNative);var o=e,a=r;if(Module.forcedAspectRatio&&Module.forcedAspectRatio>0&&(o/a>2];return e},getStr:function(){var t=Pointer_stringify(SYSCALLS.get());return t},get64:function(){var t=SYSCALLS.get(),e=SYSCALLS.get();return t>=0?assert(e===0):assert(e===-1),t},getZero:function(){assert(SYSCALLS.get()===0)}};function ___syscall6(t,e){SYSCALLS.varargs=e;try{var r=SYSCALLS.getStreamFromFD();return FS.close(r),0}catch(o){return(typeof FS>"u"||!(o instanceof FS.ErrnoError))&&abort(o),-o.errno}}function ___syscall54(t,e){SYSCALLS.varargs=e;try{return 0}catch(r){return(typeof FS>"u"||!(r instanceof FS.ErrnoError))&&abort(r),-r.errno}}function _typeModule(t){var e=[[0,1,"X"],[1,1,"const X"],[128,1,"X *"],[256,1,"X &"],[384,1,"X &&"],[512,1,"std::shared_ptr"],[640,1,"std::unique_ptr"],[5120,1,"std::vector"],[6144,2,"std::array"],[9216,-1,"std::function"]];function r(g,p,E,B,Q,x){if(p==1){var C=B&896;(C==128||C==256||C==384)&&(g="X const")}var N;return x?N=E.replace("X",g).replace("Y",Q):N=g.replace("X",E).replace("Y",Q),N.replace(/([*&]) (?=[*&])/g,"$1")}function o(g,p,E,B,Q){throw new Error(g+" type "+E.replace("X",p+"?")+(B?" with flag "+B:"")+" in "+Q)}function a(g,p,E,B,Q,x,C,N){x===void 0&&(x="X"),N===void 0&&(N=1);var U=E(g);if(U)return U;var H=B(g),X=H.placeholderFlag,ie=e[X];C&&ie&&(x=r(C[2],C[0],x,ie[0],"?",!0));var fe;X==0&&(fe="Unbound"),X>=10&&(fe="Corrupt"),N>20&&(fe="Deeply nested"),fe&&o(fe,g,x,X,Q||"?");var ye=H.paramList[0],Qe=a(ye,p,E,B,Q,x,ie,N+1),Pe,pe={flags:ie[0],id:g,name:"",paramList:[Qe]},Ee=[],ke="?";switch(H.placeholderFlag){case 1:Pe=Qe.spec;break;case 2:if((Qe.flags&15360)==1024&&Qe.spec.ptrSize==1){pe.flags=7168;break}case 3:case 6:case 5:Pe=Qe.spec,Qe.flags&15360;break;case 8:ke=""+H.paramList[1],pe.paramList.push(H.paramList[1]);break;case 9:for(var h=0,Ke=H.paramList[1];h>2]=t),t}function _llvm_stacksave(){var t=_llvm_stacksave;return t.LLVM_SAVEDSTACKS||(t.LLVM_SAVEDSTACKS=[]),t.LLVM_SAVEDSTACKS.push(Runtime.stackSave()),t.LLVM_SAVEDSTACKS.length-1}function ___syscall140(t,e){SYSCALLS.varargs=e;try{var r=SYSCALLS.getStreamFromFD(),o=SYSCALLS.get(),a=SYSCALLS.get(),n=SYSCALLS.get(),c=SYSCALLS.get(),f=a;return FS.llseek(r,f,c),HEAP32[n>>2]=r.position,r.getdents&&f===0&&c===0&&(r.getdents=null),0}catch(g){return(typeof FS>"u"||!(g instanceof FS.ErrnoError))&&abort(g),-g.errno}}function ___syscall146(t,e){SYSCALLS.varargs=e;try{var r=SYSCALLS.get(),o=SYSCALLS.get(),a=SYSCALLS.get(),n=0;___syscall146.buffer||(___syscall146.buffers=[null,[],[]],___syscall146.printChar=function(E,B){var Q=___syscall146.buffers[E];assert(Q),B===0||B===10?((E===1?Module.print:Module.printErr)(UTF8ArrayToString(Q,0)),Q.length=0):Q.push(B)});for(var c=0;c>2],g=HEAP32[o+(c*8+4)>>2],p=0;p"u"||!(E instanceof FS.ErrnoError))&&abort(E),-E.errno}}function __nbind_finish(){for(var t=0,e=_nbind.BindClass.list;tt.pageSize/2||e>t.pageSize-r){var o=_nbind.typeNameTbl.NBind.proto;return o.lalloc(e)}else return HEAPU32[t.usedPtr]=r+e,t.rootPtr+r},t.lreset=function(e,r){var o=HEAPU32[t.pagePtr];if(o){var a=_nbind.typeNameTbl.NBind.proto;a.lreset(e,r)}else HEAPU32[t.usedPtr]=e},t}();_nbind.Pool=Pool;function constructType(t,e){var r=t==10240?_nbind.makeTypeNameTbl[e.name]||_nbind.BindType:_nbind.makeTypeKindTbl[t],o=new r(e);return typeIdTbl[e.id]=o,_nbind.typeNameTbl[e.name]=o,o}_nbind.constructType=constructType;function getType(t){return typeIdTbl[t]}_nbind.getType=getType;function queryType(t){var e=HEAPU8[t],r=_nbind.structureList[e][1];t/=4,r<0&&(++t,r=HEAPU32[t]+1);var o=Array.prototype.slice.call(HEAPU32.subarray(t+1,t+1+r));return e==9&&(o=[o[0],o.slice(1)]),{paramList:o,placeholderFlag:e}}_nbind.queryType=queryType;function getTypes(t,e){return t.map(function(r){return typeof r=="number"?_nbind.getComplexType(r,constructType,getType,queryType,e):_nbind.typeNameTbl[r]})}_nbind.getTypes=getTypes;function readTypeIdList(t,e){return Array.prototype.slice.call(HEAPU32,t/4,t/4+e)}_nbind.readTypeIdList=readTypeIdList;function readAsciiString(t){for(var e=t;HEAPU8[e++];);return String.fromCharCode.apply("",HEAPU8.subarray(t,e-1))}_nbind.readAsciiString=readAsciiString;function readPolicyList(t){var e={};if(t)for(;;){var r=HEAPU32[t/4];if(!r)break;e[readAsciiString(r)]=!0,t+=4}return e}_nbind.readPolicyList=readPolicyList;function getDynCall(t,e){var r={float32_t:"d",float64_t:"d",int64_t:"d",uint64_t:"d",void:"v"},o=t.map(function(n){return r[n.name]||"i"}).join(""),a=Module["dynCall_"+o];if(!a)throw new Error("dynCall_"+o+" not found for "+e+"("+t.map(function(n){return n.name}).join(", ")+")");return a}_nbind.getDynCall=getDynCall;function addMethod(t,e,r,o){var a=t[e];t.hasOwnProperty(e)&&a?((a.arity||a.arity===0)&&(a=_nbind.makeOverloader(a,a.arity),t[e]=a),a.addMethod(r,o)):(r.arity=o,t[e]=r)}_nbind.addMethod=addMethod;function throwError(t){throw new Error(t)}_nbind.throwError=throwError,_nbind.bigEndian=!1,_a=_typeModule(_typeModule),_nbind.Type=_a.Type,_nbind.makeType=_a.makeType,_nbind.getComplexType=_a.getComplexType,_nbind.structureList=_a.structureList;var BindType=function(t){__extends(e,t);function e(){var r=t!==null&&t.apply(this,arguments)||this;return r.heap=HEAPU32,r.ptrSize=4,r}return e.prototype.needsWireRead=function(r){return!!this.wireRead||!!this.makeWireRead},e.prototype.needsWireWrite=function(r){return!!this.wireWrite||!!this.makeWireWrite},e}(_nbind.Type);_nbind.BindType=BindType;var PrimitiveType=function(t){__extends(e,t);function e(r){var o=t.call(this,r)||this,a=r.flags&32?{32:HEAPF32,64:HEAPF64}:r.flags&8?{8:HEAPU8,16:HEAPU16,32:HEAPU32}:{8:HEAP8,16:HEAP16,32:HEAP32};return o.heap=a[r.ptrSize*8],o.ptrSize=r.ptrSize,o}return e.prototype.needsWireWrite=function(r){return!!r&&!!r.Strict},e.prototype.makeWireWrite=function(r,o){return o&&o.Strict&&function(a){if(typeof a=="number")return a;throw new Error("Type mismatch")}},e}(BindType);_nbind.PrimitiveType=PrimitiveType;function pushCString(t,e){if(t==null){if(e&&e.Nullable)return 0;throw new Error("Type mismatch")}if(e&&e.Strict){if(typeof t!="string")throw new Error("Type mismatch")}else t=t.toString();var r=Module.lengthBytesUTF8(t)+1,o=_nbind.Pool.lalloc(r);return Module.stringToUTF8Array(t,HEAPU8,o,r),o}_nbind.pushCString=pushCString;function popCString(t){return t===0?null:Module.Pointer_stringify(t)}_nbind.popCString=popCString;var CStringType=function(t){__extends(e,t);function e(){var r=t!==null&&t.apply(this,arguments)||this;return r.wireRead=popCString,r.wireWrite=pushCString,r.readResources=[_nbind.resources.pool],r.writeResources=[_nbind.resources.pool],r}return e.prototype.makeWireWrite=function(r,o){return function(a){return pushCString(a,o)}},e}(BindType);_nbind.CStringType=CStringType;var BooleanType=function(t){__extends(e,t);function e(){var r=t!==null&&t.apply(this,arguments)||this;return r.wireRead=function(o){return!!o},r}return e.prototype.needsWireWrite=function(r){return!!r&&!!r.Strict},e.prototype.makeWireRead=function(r){return"!!("+r+")"},e.prototype.makeWireWrite=function(r,o){return o&&o.Strict&&function(a){if(typeof a=="boolean")return a;throw new Error("Type mismatch")}||r},e}(BindType);_nbind.BooleanType=BooleanType;var Wrapper=function(){function t(){}return t.prototype.persist=function(){this.__nbindState|=1},t}();_nbind.Wrapper=Wrapper;function makeBound(t,e){var r=function(o){__extends(a,o);function a(n,c,f,g){var p=o.call(this)||this;if(!(p instanceof a))return new(Function.prototype.bind.apply(a,Array.prototype.concat.apply([null],arguments)));var E=c,B=f,Q=g;if(n!==_nbind.ptrMarker){var x=p.__nbindConstructor.apply(p,arguments);E=4608,Q=HEAPU32[x/4],B=HEAPU32[x/4+1]}var C={configurable:!0,enumerable:!1,value:null,writable:!1},N={__nbindFlags:E,__nbindPtr:B};Q&&(N.__nbindShared=Q,_nbind.mark(p));for(var U=0,H=Object.keys(N);U>=1;var r=_nbind.valueList[t];return _nbind.valueList[t]=firstFreeValue,firstFreeValue=t,r}else{if(e)return _nbind.popShared(t,e);throw new Error("Invalid value slot "+t)}}_nbind.popValue=popValue;var valueBase=18446744073709552e3;function push64(t){return typeof t=="number"?t:pushValue(t)*4096+valueBase}function pop64(t){return t=3?c=Buffer.from(n):c=new Buffer(n),c.copy(o)}else getBuffer(o).set(n)}}_nbind.commitBuffer=commitBuffer;var dirtyList=[],gcTimer=0;function sweep(){for(var t=0,e=dirtyList;t>2]=DYNAMIC_BASE,staticSealed=!0;function invoke_viiiii(t,e,r,o,a,n){try{Module.dynCall_viiiii(t,e,r,o,a,n)}catch(c){if(typeof c!="number"&&c!=="longjmp")throw c;Module.setThrew(1,0)}}function invoke_vif(t,e,r){try{Module.dynCall_vif(t,e,r)}catch(o){if(typeof o!="number"&&o!=="longjmp")throw o;Module.setThrew(1,0)}}function invoke_vid(t,e,r){try{Module.dynCall_vid(t,e,r)}catch(o){if(typeof o!="number"&&o!=="longjmp")throw o;Module.setThrew(1,0)}}function invoke_fiff(t,e,r,o){try{return Module.dynCall_fiff(t,e,r,o)}catch(a){if(typeof a!="number"&&a!=="longjmp")throw a;Module.setThrew(1,0)}}function invoke_vi(t,e){try{Module.dynCall_vi(t,e)}catch(r){if(typeof r!="number"&&r!=="longjmp")throw r;Module.setThrew(1,0)}}function invoke_vii(t,e,r){try{Module.dynCall_vii(t,e,r)}catch(o){if(typeof o!="number"&&o!=="longjmp")throw o;Module.setThrew(1,0)}}function invoke_ii(t,e){try{return Module.dynCall_ii(t,e)}catch(r){if(typeof r!="number"&&r!=="longjmp")throw r;Module.setThrew(1,0)}}function invoke_viddi(t,e,r,o,a){try{Module.dynCall_viddi(t,e,r,o,a)}catch(n){if(typeof n!="number"&&n!=="longjmp")throw n;Module.setThrew(1,0)}}function invoke_vidd(t,e,r,o){try{Module.dynCall_vidd(t,e,r,o)}catch(a){if(typeof a!="number"&&a!=="longjmp")throw a;Module.setThrew(1,0)}}function invoke_iiii(t,e,r,o){try{return Module.dynCall_iiii(t,e,r,o)}catch(a){if(typeof a!="number"&&a!=="longjmp")throw a;Module.setThrew(1,0)}}function invoke_diii(t,e,r,o){try{return Module.dynCall_diii(t,e,r,o)}catch(a){if(typeof a!="number"&&a!=="longjmp")throw a;Module.setThrew(1,0)}}function invoke_di(t,e){try{return Module.dynCall_di(t,e)}catch(r){if(typeof r!="number"&&r!=="longjmp")throw r;Module.setThrew(1,0)}}function invoke_iid(t,e,r){try{return Module.dynCall_iid(t,e,r)}catch(o){if(typeof o!="number"&&o!=="longjmp")throw o;Module.setThrew(1,0)}}function invoke_iii(t,e,r){try{return Module.dynCall_iii(t,e,r)}catch(o){if(typeof o!="number"&&o!=="longjmp")throw o;Module.setThrew(1,0)}}function invoke_viiddi(t,e,r,o,a,n){try{Module.dynCall_viiddi(t,e,r,o,a,n)}catch(c){if(typeof c!="number"&&c!=="longjmp")throw c;Module.setThrew(1,0)}}function invoke_viiiiii(t,e,r,o,a,n,c){try{Module.dynCall_viiiiii(t,e,r,o,a,n,c)}catch(f){if(typeof f!="number"&&f!=="longjmp")throw f;Module.setThrew(1,0)}}function invoke_dii(t,e,r){try{return Module.dynCall_dii(t,e,r)}catch(o){if(typeof o!="number"&&o!=="longjmp")throw o;Module.setThrew(1,0)}}function invoke_i(t){try{return Module.dynCall_i(t)}catch(e){if(typeof e!="number"&&e!=="longjmp")throw e;Module.setThrew(1,0)}}function invoke_iiiiii(t,e,r,o,a,n){try{return Module.dynCall_iiiiii(t,e,r,o,a,n)}catch(c){if(typeof c!="number"&&c!=="longjmp")throw c;Module.setThrew(1,0)}}function invoke_viiid(t,e,r,o,a){try{Module.dynCall_viiid(t,e,r,o,a)}catch(n){if(typeof n!="number"&&n!=="longjmp")throw n;Module.setThrew(1,0)}}function invoke_viififi(t,e,r,o,a,n,c){try{Module.dynCall_viififi(t,e,r,o,a,n,c)}catch(f){if(typeof f!="number"&&f!=="longjmp")throw f;Module.setThrew(1,0)}}function invoke_viii(t,e,r,o){try{Module.dynCall_viii(t,e,r,o)}catch(a){if(typeof a!="number"&&a!=="longjmp")throw a;Module.setThrew(1,0)}}function invoke_v(t){try{Module.dynCall_v(t)}catch(e){if(typeof e!="number"&&e!=="longjmp")throw e;Module.setThrew(1,0)}}function invoke_viid(t,e,r,o){try{Module.dynCall_viid(t,e,r,o)}catch(a){if(typeof a!="number"&&a!=="longjmp")throw a;Module.setThrew(1,0)}}function invoke_idd(t,e,r){try{return Module.dynCall_idd(t,e,r)}catch(o){if(typeof o!="number"&&o!=="longjmp")throw o;Module.setThrew(1,0)}}function invoke_viiii(t,e,r,o,a){try{Module.dynCall_viiii(t,e,r,o,a)}catch(n){if(typeof n!="number"&&n!=="longjmp")throw n;Module.setThrew(1,0)}}Module.asmGlobalArg={Math,Int8Array,Int16Array,Int32Array,Uint8Array,Uint16Array,Uint32Array,Float32Array,Float64Array,NaN:NaN,Infinity:1/0},Module.asmLibraryArg={abort,assert,enlargeMemory,getTotalMemory,abortOnCannotGrowMemory,invoke_viiiii,invoke_vif,invoke_vid,invoke_fiff,invoke_vi,invoke_vii,invoke_ii,invoke_viddi,invoke_vidd,invoke_iiii,invoke_diii,invoke_di,invoke_iid,invoke_iii,invoke_viiddi,invoke_viiiiii,invoke_dii,invoke_i,invoke_iiiiii,invoke_viiid,invoke_viififi,invoke_viii,invoke_v,invoke_viid,invoke_idd,invoke_viiii,_emscripten_asm_const_iiiii,_emscripten_asm_const_iiidddddd,_emscripten_asm_const_iiiid,__nbind_reference_external,_emscripten_asm_const_iiiiiiii,_removeAccessorPrefix,_typeModule,__nbind_register_pool,__decorate,_llvm_stackrestore,___cxa_atexit,__extends,__nbind_get_value_object,__ZN8facebook4yoga14YGNodeToStringEPNSt3__212basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEP6YGNode14YGPrintOptionsj,_emscripten_set_main_loop_timing,__nbind_register_primitive,__nbind_register_type,_emscripten_memcpy_big,__nbind_register_function,___setErrNo,__nbind_register_class,__nbind_finish,_abort,_nbind_value,_llvm_stacksave,___syscall54,_defineHidden,_emscripten_set_main_loop,_emscripten_get_now,__nbind_register_callback_signature,_emscripten_asm_const_iiiiii,__nbind_free_external,_emscripten_asm_const_iiii,_emscripten_asm_const_iiididi,___syscall6,_atexit,___syscall140,___syscall146,DYNAMICTOP_PTR,tempDoublePtr,ABORT,STACKTOP,STACK_MAX,cttz_i8,___dso_handle};var asm=function(t,e,r){var o=new t.Int8Array(r),a=new t.Int16Array(r),n=new t.Int32Array(r),c=new t.Uint8Array(r),f=new t.Uint16Array(r),g=new t.Uint32Array(r),p=new t.Float32Array(r),E=new t.Float64Array(r),B=e.DYNAMICTOP_PTR|0,Q=e.tempDoublePtr|0,x=e.ABORT|0,C=e.STACKTOP|0,N=e.STACK_MAX|0,U=e.cttz_i8|0,H=e.___dso_handle|0,X=0,ie=0,fe=0,ye=0,Qe=t.NaN,Pe=t.Infinity,pe=0,Ee=0,ke=0,h=0,Ke=0,Ce=0,Be=t.Math.floor,le=t.Math.abs,re=t.Math.sqrt,Se=t.Math.pow,Ue=t.Math.cos,dt=t.Math.sin,q=t.Math.tan,Qt=t.Math.acos,He=t.Math.asin,qe=t.Math.atan,Fe=t.Math.atan2,je=t.Math.exp,We=t.Math.log,pt=t.Math.ceil,Oe=t.Math.imul,k=t.Math.min,I=t.Math.max,S=t.Math.clz32,y=t.Math.fround,R=e.abort,Z=e.assert,te=e.enlargeMemory,ne=e.getTotalMemory,Ae=e.abortOnCannotGrowMemory,Re=e.invoke_viiiii,Le=e.invoke_vif,lt=e.invoke_vid,mt=e.invoke_fiff,qt=e.invoke_vi,sr=e.invoke_vii,Pt=e.invoke_ii,mn=e.invoke_viddi,Or=e.invoke_vidd,Fr=e.invoke_iiii,Ur=e.invoke_diii,fn=e.invoke_di,vn=e.invoke_iid,ws=e.invoke_iii,_i=e.invoke_viiddi,wo=e.invoke_viiiiii,Bo=e.invoke_dii,cs=e.invoke_i,gn=e.invoke_iiiiii,$s=e.invoke_viiid,UA=e.invoke_viififi,Qa=e.invoke_viii,Fg=e.invoke_v,Rg=e.invoke_viid,$u=e.invoke_idd,Yn=e.invoke_viiii,Hi=e._emscripten_asm_const_iiiii,va=e._emscripten_asm_const_iiidddddd,KA=e._emscripten_asm_const_iiiid,Xe=e.__nbind_reference_external,Wn=e._emscripten_asm_const_iiiiiiii,ii=e._removeAccessorPrefix,Xt=e._typeModule,Ti=e.__nbind_register_pool,Jn=e.__decorate,us=e._llvm_stackrestore,Dt=e.___cxa_atexit,Xi=e.__extends,Pn=e.__nbind_get_value_object,fs=e.__ZN8facebook4yoga14YGNodeToStringEPNSt3__212basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEP6YGNode14YGPrintOptionsj,sA=e._emscripten_set_main_loop_timing,kr=e.__nbind_register_primitive,Qo=e.__nbind_register_type,fr=e._emscripten_memcpy_big,Da=e.__nbind_register_function,$=e.___setErrNo,rn=e.__nbind_register_class,we=e.__nbind_finish,Ot=e._abort,_A=e._nbind_value,Zi=e._llvm_stacksave,_l=e.___syscall54,jt=e._defineHidden,oA=e._emscripten_set_main_loop,Lc=e._emscripten_get_now,ef=e.__nbind_register_callback_signature,HA=e._emscripten_asm_const_iiiiii,Oc=e.__nbind_free_external,Ln=e._emscripten_asm_const_iiii,mi=e._emscripten_asm_const_iiididi,qA=e.___syscall6,Uc=e._atexit,ea=e.___syscall140,$i=e.___syscall146,vo=y(0);let it=y(0);function eo(s){s=s|0;var A=0;return A=C,C=C+s|0,C=C+15&-16,A|0}function Sa(){return C|0}function Hl(s){s=s|0,C=s}function qi(s,A){s=s|0,A=A|0,C=s,N=A}function ka(s,A){s=s|0,A=A|0,X||(X=s,ie=A)}function aA(s){s=s|0,Ce=s}function Sr(){return Ce|0}function AA(){var s=0,A=0;Tr(8104,8,400)|0,Tr(8504,408,540)|0,s=9044,A=s+44|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(A|0));o[9088]=0,o[9089]=1,n[2273]=0,n[2274]=948,n[2275]=948,Dt(17,8104,H|0)|0}function Bs(s){s=s|0,kt(s+948|0)}function Ut(s){return s=y(s),((Wc(s)|0)&2147483647)>>>0>2139095040|0}function bn(s,A,l){s=s|0,A=A|0,l=l|0;e:do if(n[s+(A<<3)+4>>2]|0)s=s+(A<<3)|0;else{if((A|2|0)==3&&n[s+60>>2]|0){s=s+56|0;break}switch(A|0){case 0:case 2:case 4:case 5:{if(n[s+52>>2]|0){s=s+48|0;break e}break}default:}if(n[s+68>>2]|0){s=s+64|0;break}else{s=(A|1|0)==5?948:l;break}}while(0);return s|0}function li(s){s=s|0;var A=0;return A=Cv(1e3)|0,ta(s,(A|0)!=0,2456),n[2276]=(n[2276]|0)+1,Tr(A|0,8104,1e3)|0,o[s+2>>0]|0&&(n[A+4>>2]=2,n[A+12>>2]=4),n[A+976>>2]=s,A|0}function ta(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0;d=C,C=C+16|0,u=d,A||(n[u>>2]=l,q0(s,5,3197,u)),C=d}function to(){return li(956)|0}function Qs(s){s=s|0;var A=0;return A=Jt(1e3)|0,ra(A,s),ta(n[s+976>>2]|0,1,2456),n[2276]=(n[2276]|0)+1,n[A+944>>2]=0,A|0}function ra(s,A){s=s|0,A=A|0;var l=0;Tr(s|0,A|0,948)|0,oy(s+948|0,A+948|0),l=s+960|0,s=A+960|0,A=l+40|0;do n[l>>2]=n[s>>2],l=l+4|0,s=s+4|0;while((l|0)<(A|0))}function Zt(s){s=s|0;var A=0,l=0,u=0,d=0;if(A=s+944|0,l=n[A>>2]|0,l|0&&(na(l+948|0,s)|0,n[A>>2]=0),l=vs(s)|0,l|0){A=0;do n[(ro(s,A)|0)+944>>2]=0,A=A+1|0;while((A|0)!=(l|0))}l=s+948|0,u=n[l>>2]|0,d=s+952|0,A=n[d>>2]|0,(A|0)!=(u|0)&&(n[d>>2]=A+(~((A+-4-u|0)>>>2)<<2)),no(l),Ev(s),n[2276]=(n[2276]|0)+-1}function na(s,A){s=s|0,A=A|0;var l=0,u=0,d=0,m=0,w=0,P=0;u=n[s>>2]|0,P=s+4|0,l=n[P>>2]|0,m=l;e:do if((u|0)==(l|0))d=u,w=4;else for(s=u;;){if((n[s>>2]|0)==(A|0)){d=s,w=4;break e}if(s=s+4|0,(s|0)==(l|0)){s=0;break}}while(0);return(w|0)==4&&((d|0)!=(l|0)?(u=d+4|0,s=m-u|0,A=s>>2,A&&(WI(d|0,u|0,s|0)|0,l=n[P>>2]|0),s=d+(A<<2)|0,(l|0)==(s|0)||(n[P>>2]=l+(~((l+-4-s|0)>>>2)<<2)),s=1):s=0),s|0}function vs(s){return s=s|0,(n[s+952>>2]|0)-(n[s+948>>2]|0)>>2|0}function ro(s,A){s=s|0,A=A|0;var l=0;return l=n[s+948>>2]|0,(n[s+952>>2]|0)-l>>2>>>0>A>>>0?s=n[l+(A<<2)>>2]|0:s=0,s|0}function no(s){s=s|0;var A=0,l=0,u=0,d=0;u=C,C=C+32|0,A=u,d=n[s>>2]|0,l=(n[s+4>>2]|0)-d|0,((n[s+8>>2]|0)-d|0)>>>0>l>>>0&&(d=l>>2,Yg(A,d,d,s+8|0),W0(s,A),Af(A)),C=u}function io(s,A){s=s|0,A=A|0;var l=0,u=0,d=0,m=0,w=0,P=0,b=0,O=0;O=vs(s)|0;do if(O|0){if((n[(ro(s,0)|0)+944>>2]|0)==(s|0)){if(!(na(s+948|0,A)|0))break;Tr(A+400|0,8504,540)|0,n[A+944>>2]=0,Ye(s);break}w=n[(n[s+976>>2]|0)+12>>2]|0,P=s+948|0,b=(w|0)==0,l=0,m=0;do u=n[(n[P>>2]|0)+(m<<2)>>2]|0,(u|0)==(A|0)?Ye(s):(d=Qs(u)|0,n[(n[P>>2]|0)+(l<<2)>>2]=d,n[d+944>>2]=s,b||iT[w&15](u,d,s,l),l=l+1|0),m=m+1|0;while((m|0)!=(O|0));if(l>>>0>>0){b=s+948|0,P=s+952|0,w=l,l=n[P>>2]|0;do m=(n[b>>2]|0)+(w<<2)|0,u=m+4|0,d=l-u|0,A=d>>2,A&&(WI(m|0,u|0,d|0)|0,l=n[P>>2]|0),d=l,u=m+(A<<2)|0,(d|0)!=(u|0)&&(l=d+(~((d+-4-u|0)>>>2)<<2)|0,n[P>>2]=l),w=w+1|0;while((w|0)!=(O|0))}}while(0)}function Do(s){s=s|0;var A=0,l=0,u=0,d=0;ci(s,(vs(s)|0)==0,2491),ci(s,(n[s+944>>2]|0)==0,2545),A=s+948|0,l=n[A>>2]|0,u=s+952|0,d=n[u>>2]|0,(d|0)!=(l|0)&&(n[u>>2]=d+(~((d+-4-l|0)>>>2)<<2)),no(A),A=s+976|0,l=n[A>>2]|0,Tr(s|0,8104,1e3)|0,o[l+2>>0]|0&&(n[s+4>>2]=2,n[s+12>>2]=4),n[A>>2]=l}function ci(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0;d=C,C=C+16|0,u=d,A||(n[u>>2]=l,Po(s,5,3197,u)),C=d}function si(){return n[2276]|0}function ia(){var s=0;return s=Cv(20)|0,Us((s|0)!=0,2592),n[2277]=(n[2277]|0)+1,n[s>>2]=n[239],n[s+4>>2]=n[240],n[s+8>>2]=n[241],n[s+12>>2]=n[242],n[s+16>>2]=n[243],s|0}function Us(s,A){s=s|0,A=A|0;var l=0,u=0;u=C,C=C+16|0,l=u,s||(n[l>>2]=A,Po(0,5,3197,l)),C=u}function Gi(s){s=s|0,Ev(s),n[2277]=(n[2277]|0)+-1}function GA(s,A){s=s|0,A=A|0;var l=0;A?(ci(s,(vs(s)|0)==0,2629),l=1):(l=0,A=0),n[s+964>>2]=A,n[s+988>>2]=l}function lA(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0,w=0;u=C,C=C+16|0,m=u+8|0,d=u+4|0,w=u,n[d>>2]=A,ci(s,(n[A+944>>2]|0)==0,2709),ci(s,(n[s+964>>2]|0)==0,2763),ae(s),A=s+948|0,n[w>>2]=(n[A>>2]|0)+(l<<2),n[m>>2]=n[w>>2],ve(A,m,d)|0,n[(n[d>>2]|0)+944>>2]=s,Ye(s),C=u}function ae(s){s=s|0;var A=0,l=0,u=0,d=0,m=0,w=0,P=0;if(l=vs(s)|0,l|0&&(n[(ro(s,0)|0)+944>>2]|0)!=(s|0)){u=n[(n[s+976>>2]|0)+12>>2]|0,d=s+948|0,m=(u|0)==0,A=0;do w=n[(n[d>>2]|0)+(A<<2)>>2]|0,P=Qs(w)|0,n[(n[d>>2]|0)+(A<<2)>>2]=P,n[P+944>>2]=s,m||iT[u&15](w,P,s,A),A=A+1|0;while((A|0)!=(l|0))}}function ve(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0,w=0,P=0,b=0,O=0,L=0,W=0,ue=0,ze=0,_e=0,Me=0,ot=0,nt=0;ot=C,C=C+64|0,W=ot+52|0,P=ot+48|0,ue=ot+28|0,ze=ot+24|0,_e=ot+20|0,Me=ot,u=n[s>>2]|0,m=u,A=u+((n[A>>2]|0)-m>>2<<2)|0,u=s+4|0,d=n[u>>2]|0,w=s+8|0;do if(d>>>0<(n[w>>2]|0)>>>0){if((A|0)==(d|0)){n[A>>2]=n[l>>2],n[u>>2]=(n[u>>2]|0)+4;break}lf(s,A,d,A+4|0),A>>>0<=l>>>0&&(l=(n[u>>2]|0)>>>0>l>>>0?l+4|0:l),n[A>>2]=n[l>>2]}else{u=(d-m>>2)+1|0,d=M(s)|0,d>>>0>>0&&An(s),L=n[s>>2]|0,O=(n[w>>2]|0)-L|0,m=O>>1,Yg(Me,O>>2>>>0>>1>>>0?m>>>0>>0?u:m:d,A-L>>2,s+8|0),L=Me+8|0,u=n[L>>2]|0,m=Me+12|0,O=n[m>>2]|0,w=O,b=u;do if((u|0)==(O|0)){if(O=Me+4|0,u=n[O>>2]|0,nt=n[Me>>2]|0,d=nt,u>>>0<=nt>>>0){u=w-d>>1,u=(u|0)==0?1:u,Yg(ue,u,u>>>2,n[Me+16>>2]|0),n[ze>>2]=n[O>>2],n[_e>>2]=n[L>>2],n[P>>2]=n[ze>>2],n[W>>2]=n[_e>>2],TI(ue,P,W),u=n[Me>>2]|0,n[Me>>2]=n[ue>>2],n[ue>>2]=u,u=ue+4|0,nt=n[O>>2]|0,n[O>>2]=n[u>>2],n[u>>2]=nt,u=ue+8|0,nt=n[L>>2]|0,n[L>>2]=n[u>>2],n[u>>2]=nt,u=ue+12|0,nt=n[m>>2]|0,n[m>>2]=n[u>>2],n[u>>2]=nt,Af(ue),u=n[L>>2]|0;break}m=u,w=((m-d>>2)+1|0)/-2|0,P=u+(w<<2)|0,d=b-m|0,m=d>>2,m&&(WI(P|0,u|0,d|0)|0,u=n[O>>2]|0),nt=P+(m<<2)|0,n[L>>2]=nt,n[O>>2]=u+(w<<2),u=nt}while(0);n[u>>2]=n[l>>2],n[L>>2]=(n[L>>2]|0)+4,A=J0(s,Me,A)|0,Af(Me)}while(0);return C=ot,A|0}function Ye(s){s=s|0;var A=0;do{if(A=s+984|0,o[A>>0]|0)break;o[A>>0]=1,p[s+504>>2]=y(Qe),s=n[s+944>>2]|0}while((s|0)!=0)}function kt(s){s=s|0;var A=0,l=0,u=0;l=n[s>>2]|0,u=l,l|0&&(s=s+4|0,A=n[s>>2]|0,(A|0)!=(l|0)&&(n[s>>2]=A+(~((A+-4-u|0)>>>2)<<2)),yt(l))}function Et(s){return s=s|0,n[s+944>>2]|0}function Yt(s){s=s|0,ci(s,(n[s+964>>2]|0)!=0,2832),Ye(s)}function Rr(s){return s=s|0,(o[s+984>>0]|0)!=0|0}function Bn(s,A){s=s|0,A=A|0,v3e(s,A,400)|0&&(Tr(s|0,A|0,400)|0,Ye(s))}function xa(s){s=s|0;var A=it;return A=y(p[s+44>>2]),s=Ut(A)|0,y(s?y(0):A)}function O0(s){s=s|0;var A=it;return A=y(p[s+48>>2]),Ut(A)|0&&(A=o[(n[s+976>>2]|0)+2>>0]|0?y(1):y(0)),y(A)}function So(s,A){s=s|0,A=A|0,n[s+980>>2]=A}function cA(s){return s=s|0,n[s+980>>2]|0}function Kc(s,A){s=s|0,A=A|0;var l=0;l=s+4|0,(n[l>>2]|0)!=(A|0)&&(n[l>>2]=A,Ye(s))}function jA(s){return s=s|0,n[s+4>>2]|0}function _c(s,A){s=s|0,A=A|0;var l=0;l=s+8|0,(n[l>>2]|0)!=(A|0)&&(n[l>>2]=A,Ye(s))}function Tg(s){return s=s|0,n[s+8>>2]|0}function ql(s,A){s=s|0,A=A|0;var l=0;l=s+12|0,(n[l>>2]|0)!=(A|0)&&(n[l>>2]=A,Ye(s))}function Ng(s){return s=s|0,n[s+12>>2]|0}function Gl(s,A){s=s|0,A=A|0;var l=0;l=s+16|0,(n[l>>2]|0)!=(A|0)&&(n[l>>2]=A,Ye(s))}function so(s){return s=s|0,n[s+16>>2]|0}function Hc(s,A){s=s|0,A=A|0;var l=0;l=s+20|0,(n[l>>2]|0)!=(A|0)&&(n[l>>2]=A,Ye(s))}function YA(s){return s=s|0,n[s+20>>2]|0}function sa(s,A){s=s|0,A=A|0;var l=0;l=s+24|0,(n[l>>2]|0)!=(A|0)&&(n[l>>2]=A,Ye(s))}function Mg(s){return s=s|0,n[s+24>>2]|0}function WA(s,A){s=s|0,A=A|0;var l=0;l=s+28|0,(n[l>>2]|0)!=(A|0)&&(n[l>>2]=A,Ye(s))}function U0(s){return s=s|0,n[s+28>>2]|0}function Lg(s,A){s=s|0,A=A|0;var l=0;l=s+32|0,(n[l>>2]|0)!=(A|0)&&(n[l>>2]=A,Ye(s))}function oi(s){return s=s|0,n[s+32>>2]|0}function tf(s,A){s=s|0,A=A|0;var l=0;l=s+36|0,(n[l>>2]|0)!=(A|0)&&(n[l>>2]=A,Ye(s))}function Og(s){return s=s|0,n[s+36>>2]|0}function qc(s,A){s=s|0,A=y(A);var l=0;l=s+40|0,y(p[l>>2])!=A&&(p[l>>2]=A,Ye(s))}function Ks(s,A){s=s|0,A=y(A);var l=0;l=s+44|0,y(p[l>>2])!=A&&(p[l>>2]=A,Ye(s))}function jl(s,A){s=s|0,A=y(A);var l=0;l=s+48|0,y(p[l>>2])!=A&&(p[l>>2]=A,Ye(s))}function Pa(s,A){s=s|0,A=y(A);var l=0,u=0,d=0,m=0;m=Ut(A)|0,l=(m^1)&1,u=s+52|0,d=s+56|0,m|y(p[u>>2])==A&&(n[d>>2]|0)==(l|0)||(p[u>>2]=A,n[d>>2]=l,Ye(s))}function es(s,A){s=s|0,A=y(A);var l=0,u=0;u=s+52|0,l=s+56|0,y(p[u>>2])==A&&(n[l>>2]|0)==2||(p[u>>2]=A,u=Ut(A)|0,n[l>>2]=u?3:2,Ye(s))}function oa(s,A){s=s|0,A=A|0;var l=0,u=0;u=A+52|0,l=n[u+4>>2]|0,A=s,n[A>>2]=n[u>>2],n[A+4>>2]=l}function Yl(s,A,l){s=s|0,A=A|0,l=y(l);var u=0,d=0,m=0;m=Ut(l)|0,u=(m^1)&1,d=s+132+(A<<3)|0,A=s+132+(A<<3)+4|0,m|y(p[d>>2])==l&&(n[A>>2]|0)==(u|0)||(p[d>>2]=l,n[A>>2]=u,Ye(s))}function Ds(s,A,l){s=s|0,A=A|0,l=y(l);var u=0,d=0,m=0;m=Ut(l)|0,u=m?0:2,d=s+132+(A<<3)|0,A=s+132+(A<<3)+4|0,m|y(p[d>>2])==l&&(n[A>>2]|0)==(u|0)||(p[d>>2]=l,n[A>>2]=u,Ye(s))}function JA(s,A,l){s=s|0,A=A|0,l=l|0;var u=0;u=A+132+(l<<3)|0,A=n[u+4>>2]|0,l=s,n[l>>2]=n[u>>2],n[l+4>>2]=A}function ko(s,A,l){s=s|0,A=A|0,l=y(l);var u=0,d=0,m=0;m=Ut(l)|0,u=(m^1)&1,d=s+60+(A<<3)|0,A=s+60+(A<<3)+4|0,m|y(p[d>>2])==l&&(n[A>>2]|0)==(u|0)||(p[d>>2]=l,n[A>>2]=u,Ye(s))}function J(s,A,l){s=s|0,A=A|0,l=y(l);var u=0,d=0,m=0;m=Ut(l)|0,u=m?0:2,d=s+60+(A<<3)|0,A=s+60+(A<<3)+4|0,m|y(p[d>>2])==l&&(n[A>>2]|0)==(u|0)||(p[d>>2]=l,n[A>>2]=u,Ye(s))}function wt(s,A,l){s=s|0,A=A|0,l=l|0;var u=0;u=A+60+(l<<3)|0,A=n[u+4>>2]|0,l=s,n[l>>2]=n[u>>2],n[l+4>>2]=A}function ba(s,A){s=s|0,A=A|0;var l=0;l=s+60+(A<<3)+4|0,(n[l>>2]|0)!=3&&(p[s+60+(A<<3)>>2]=y(Qe),n[l>>2]=3,Ye(s))}function xi(s,A,l){s=s|0,A=A|0,l=y(l);var u=0,d=0,m=0;m=Ut(l)|0,u=(m^1)&1,d=s+204+(A<<3)|0,A=s+204+(A<<3)+4|0,m|y(p[d>>2])==l&&(n[A>>2]|0)==(u|0)||(p[d>>2]=l,n[A>>2]=u,Ye(s))}function Fa(s,A,l){s=s|0,A=A|0,l=y(l);var u=0,d=0,m=0;m=Ut(l)|0,u=m?0:2,d=s+204+(A<<3)|0,A=s+204+(A<<3)+4|0,m|y(p[d>>2])==l&&(n[A>>2]|0)==(u|0)||(p[d>>2]=l,n[A>>2]=u,Ye(s))}function ct(s,A,l){s=s|0,A=A|0,l=l|0;var u=0;u=A+204+(l<<3)|0,A=n[u+4>>2]|0,l=s,n[l>>2]=n[u>>2],n[l+4>>2]=A}function Ra(s,A,l){s=s|0,A=A|0,l=y(l);var u=0,d=0,m=0;m=Ut(l)|0,u=(m^1)&1,d=s+276+(A<<3)|0,A=s+276+(A<<3)+4|0,m|y(p[d>>2])==l&&(n[A>>2]|0)==(u|0)||(p[d>>2]=l,n[A>>2]=u,Ye(s))}function F(s,A){return s=s|0,A=A|0,y(p[s+276+(A<<3)>>2])}function K(s,A){s=s|0,A=y(A);var l=0,u=0,d=0,m=0;m=Ut(A)|0,l=(m^1)&1,u=s+348|0,d=s+352|0,m|y(p[u>>2])==A&&(n[d>>2]|0)==(l|0)||(p[u>>2]=A,n[d>>2]=l,Ye(s))}function G(s,A){s=s|0,A=y(A);var l=0,u=0;u=s+348|0,l=s+352|0,y(p[u>>2])==A&&(n[l>>2]|0)==2||(p[u>>2]=A,u=Ut(A)|0,n[l>>2]=u?3:2,Ye(s))}function se(s){s=s|0;var A=0;A=s+352|0,(n[A>>2]|0)!=3&&(p[s+348>>2]=y(Qe),n[A>>2]=3,Ye(s))}function ce(s,A){s=s|0,A=A|0;var l=0,u=0;u=A+348|0,l=n[u+4>>2]|0,A=s,n[A>>2]=n[u>>2],n[A+4>>2]=l}function xe(s,A){s=s|0,A=y(A);var l=0,u=0,d=0,m=0;m=Ut(A)|0,l=(m^1)&1,u=s+356|0,d=s+360|0,m|y(p[u>>2])==A&&(n[d>>2]|0)==(l|0)||(p[u>>2]=A,n[d>>2]=l,Ye(s))}function Je(s,A){s=s|0,A=y(A);var l=0,u=0;u=s+356|0,l=s+360|0,y(p[u>>2])==A&&(n[l>>2]|0)==2||(p[u>>2]=A,u=Ut(A)|0,n[l>>2]=u?3:2,Ye(s))}function ut(s){s=s|0;var A=0;A=s+360|0,(n[A>>2]|0)!=3&&(p[s+356>>2]=y(Qe),n[A>>2]=3,Ye(s))}function Rt(s,A){s=s|0,A=A|0;var l=0,u=0;u=A+356|0,l=n[u+4>>2]|0,A=s,n[A>>2]=n[u>>2],n[A+4>>2]=l}function Ar(s,A){s=s|0,A=y(A);var l=0,u=0,d=0,m=0;m=Ut(A)|0,l=(m^1)&1,u=s+364|0,d=s+368|0,m|y(p[u>>2])==A&&(n[d>>2]|0)==(l|0)||(p[u>>2]=A,n[d>>2]=l,Ye(s))}function er(s,A){s=s|0,A=y(A);var l=0,u=0,d=0,m=0;m=Ut(A)|0,l=m?0:2,u=s+364|0,d=s+368|0,m|y(p[u>>2])==A&&(n[d>>2]|0)==(l|0)||(p[u>>2]=A,n[d>>2]=l,Ye(s))}function st(s,A){s=s|0,A=A|0;var l=0,u=0;u=A+364|0,l=n[u+4>>2]|0,A=s,n[A>>2]=n[u>>2],n[A+4>>2]=l}function Cr(s,A){s=s|0,A=y(A);var l=0,u=0,d=0,m=0;m=Ut(A)|0,l=(m^1)&1,u=s+372|0,d=s+376|0,m|y(p[u>>2])==A&&(n[d>>2]|0)==(l|0)||(p[u>>2]=A,n[d>>2]=l,Ye(s))}function or(s,A){s=s|0,A=y(A);var l=0,u=0,d=0,m=0;m=Ut(A)|0,l=m?0:2,u=s+372|0,d=s+376|0,m|y(p[u>>2])==A&&(n[d>>2]|0)==(l|0)||(p[u>>2]=A,n[d>>2]=l,Ye(s))}function qr(s,A){s=s|0,A=A|0;var l=0,u=0;u=A+372|0,l=n[u+4>>2]|0,A=s,n[A>>2]=n[u>>2],n[A+4>>2]=l}function ui(s,A){s=s|0,A=y(A);var l=0,u=0,d=0,m=0;m=Ut(A)|0,l=(m^1)&1,u=s+380|0,d=s+384|0,m|y(p[u>>2])==A&&(n[d>>2]|0)==(l|0)||(p[u>>2]=A,n[d>>2]=l,Ye(s))}function _s(s,A){s=s|0,A=y(A);var l=0,u=0,d=0,m=0;m=Ut(A)|0,l=m?0:2,u=s+380|0,d=s+384|0,m|y(p[u>>2])==A&&(n[d>>2]|0)==(l|0)||(p[u>>2]=A,n[d>>2]=l,Ye(s))}function ts(s,A){s=s|0,A=A|0;var l=0,u=0;u=A+380|0,l=n[u+4>>2]|0,A=s,n[A>>2]=n[u>>2],n[A+4>>2]=l}function xo(s,A){s=s|0,A=y(A);var l=0,u=0,d=0,m=0;m=Ut(A)|0,l=(m^1)&1,u=s+388|0,d=s+392|0,m|y(p[u>>2])==A&&(n[d>>2]|0)==(l|0)||(p[u>>2]=A,n[d>>2]=l,Ye(s))}function rs(s,A){s=s|0,A=y(A);var l=0,u=0,d=0,m=0;m=Ut(A)|0,l=m?0:2,u=s+388|0,d=s+392|0,m|y(p[u>>2])==A&&(n[d>>2]|0)==(l|0)||(p[u>>2]=A,n[d>>2]=l,Ye(s))}function oo(s,A){s=s|0,A=A|0;var l=0,u=0;u=A+388|0,l=n[u+4>>2]|0,A=s,n[A>>2]=n[u>>2],n[A+4>>2]=l}function ns(s,A){s=s|0,A=y(A);var l=0;l=s+396|0,y(p[l>>2])!=A&&(p[l>>2]=A,Ye(s))}function Vn(s){return s=s|0,y(p[s+396>>2])}function VA(s){return s=s|0,y(p[s+400>>2])}function Gc(s){return s=s|0,y(p[s+404>>2])}function K0(s){return s=s|0,y(p[s+408>>2])}function rf(s){return s=s|0,y(p[s+412>>2])}function Ug(s){return s=s|0,y(p[s+416>>2])}function uA(s){return s=s|0,y(p[s+420>>2])}function _0(s,A){switch(s=s|0,A=A|0,ci(s,(A|0)<6,2918),A|0){case 0:{A=(n[s+496>>2]|0)==2?5:4;break}case 2:{A=(n[s+496>>2]|0)==2?4:5;break}default:}return y(p[s+424+(A<<2)>>2])}function Kg(s,A){switch(s=s|0,A=A|0,ci(s,(A|0)<6,2918),A|0){case 0:{A=(n[s+496>>2]|0)==2?5:4;break}case 2:{A=(n[s+496>>2]|0)==2?4:5;break}default:}return y(p[s+448+(A<<2)>>2])}function aa(s,A){switch(s=s|0,A=A|0,ci(s,(A|0)<6,2918),A|0){case 0:{A=(n[s+496>>2]|0)==2?5:4;break}case 2:{A=(n[s+496>>2]|0)==2?4:5;break}default:}return y(p[s+472+(A<<2)>>2])}function Hs(s,A){s=s|0,A=A|0;var l=0,u=it;return l=n[s+4>>2]|0,(l|0)==(n[A+4>>2]|0)?l?(u=y(p[s>>2]),s=y(le(y(u-y(p[A>>2]))))>2]=0,n[u+4>>2]=0,n[u+8>>2]=0,fs(u|0,s|0,A|0,0),Po(s,3,(o[u+11>>0]|0)<0?n[u>>2]|0:u,l),J3e(u),C=l}function Aa(s,A,l,u){s=y(s),A=y(A),l=l|0,u=u|0;var d=it;s=y(s*A),d=y(ZR(s,y(1)));do if(Ni(d,y(0))|0)s=y(s-d);else{if(s=y(s-d),Ni(d,y(1))|0){s=y(s+y(1));break}if(l){s=y(s+y(1));break}u||(d>y(.5)?d=y(1):(u=Ni(d,y(.5))|0,d=y(u?1:0)),s=y(s+d))}while(0);return y(s/A)}function nf(s,A,l,u,d,m,w,P,b,O,L,W,ue){s=s|0,A=y(A),l=l|0,u=y(u),d=d|0,m=y(m),w=w|0,P=y(P),b=y(b),O=y(O),L=y(L),W=y(W),ue=ue|0;var ze=0,_e=it,Me=it,ot=it,nt=it,ft=it,Ge=it;return b>2]),_e!=y(0))?(ot=y(Aa(A,_e,0,0)),nt=y(Aa(u,_e,0,0)),Me=y(Aa(m,_e,0,0)),_e=y(Aa(P,_e,0,0))):(Me=m,ot=A,_e=P,nt=u),(d|0)==(s|0)?ze=Ni(Me,ot)|0:ze=0,(w|0)==(l|0)?ue=Ni(_e,nt)|0:ue=0,!ze&&(ft=y(A-L),!(_g(s,ft,b)|0))&&!(Hg(s,ft,d,b)|0)?ze=H0(s,ft,d,m,b)|0:ze=1,!ue&&(Ge=y(u-W),!(_g(l,Ge,O)|0))&&!(Hg(l,Ge,w,O)|0)?ue=H0(l,Ge,w,P,O)|0:ue=1,ue=ze&ue),ue|0}function _g(s,A,l){return s=s|0,A=y(A),l=y(l),(s|0)==1?s=Ni(A,l)|0:s=0,s|0}function Hg(s,A,l,u){return s=s|0,A=y(A),l=l|0,u=y(u),(s|0)==2&(l|0)==0?A>=u?s=1:s=Ni(A,u)|0:s=0,s|0}function H0(s,A,l,u,d){return s=s|0,A=y(A),l=l|0,u=y(u),d=y(d),(s|0)==2&(l|0)==2&u>A?d<=A?s=1:s=Ni(A,d)|0:s=0,s|0}function Ta(s,A,l,u,d,m,w,P,b,O,L){s=s|0,A=y(A),l=y(l),u=u|0,d=d|0,m=m|0,w=y(w),P=y(P),b=b|0,O=O|0,L=L|0;var W=0,ue=0,ze=0,_e=0,Me=it,ot=it,nt=0,ft=0,Ge=0,Ve=0,Kt=0,Jr=0,pr=0,$t=0,Nr=0,jr=0,cr=0,Kn=it,To=it,No=it,Mo=0,Ka=0;cr=C,C=C+160|0,$t=cr+152|0,pr=cr+120|0,Jr=cr+104|0,Ge=cr+72|0,_e=cr+56|0,Kt=cr+8|0,ft=cr,Ve=(n[2279]|0)+1|0,n[2279]=Ve,Nr=s+984|0,(o[Nr>>0]|0)!=0&&(n[s+512>>2]|0)!=(n[2278]|0)?nt=4:(n[s+516>>2]|0)==(u|0)?jr=0:nt=4,(nt|0)==4&&(n[s+520>>2]=0,n[s+924>>2]=-1,n[s+928>>2]=-1,p[s+932>>2]=y(-1),p[s+936>>2]=y(-1),jr=1);e:do if(n[s+964>>2]|0)if(Me=y(yn(s,2,w)),ot=y(yn(s,0,w)),W=s+916|0,No=y(p[W>>2]),To=y(p[s+920>>2]),Kn=y(p[s+932>>2]),nf(d,A,m,l,n[s+924>>2]|0,No,n[s+928>>2]|0,To,Kn,y(p[s+936>>2]),Me,ot,L)|0)nt=22;else if(ze=n[s+520>>2]|0,!ze)nt=21;else for(ue=0;;){if(W=s+524+(ue*24|0)|0,Kn=y(p[W>>2]),To=y(p[s+524+(ue*24|0)+4>>2]),No=y(p[s+524+(ue*24|0)+16>>2]),nf(d,A,m,l,n[s+524+(ue*24|0)+8>>2]|0,Kn,n[s+524+(ue*24|0)+12>>2]|0,To,No,y(p[s+524+(ue*24|0)+20>>2]),Me,ot,L)|0){nt=22;break e}if(ue=ue+1|0,ue>>>0>=ze>>>0){nt=21;break}}else{if(b){if(W=s+916|0,!(Ni(y(p[W>>2]),A)|0)){nt=21;break}if(!(Ni(y(p[s+920>>2]),l)|0)){nt=21;break}if((n[s+924>>2]|0)!=(d|0)){nt=21;break}W=(n[s+928>>2]|0)==(m|0)?W:0,nt=22;break}if(ze=n[s+520>>2]|0,!ze)nt=21;else for(ue=0;;){if(W=s+524+(ue*24|0)|0,Ni(y(p[W>>2]),A)|0&&Ni(y(p[s+524+(ue*24|0)+4>>2]),l)|0&&(n[s+524+(ue*24|0)+8>>2]|0)==(d|0)&&(n[s+524+(ue*24|0)+12>>2]|0)==(m|0)){nt=22;break e}if(ue=ue+1|0,ue>>>0>=ze>>>0){nt=21;break}}}while(0);do if((nt|0)==21)o[11697]|0?(W=0,nt=28):(W=0,nt=31);else if((nt|0)==22){if(ue=(o[11697]|0)!=0,!((W|0)!=0&(jr^1)))if(ue){nt=28;break}else{nt=31;break}_e=W+16|0,n[s+908>>2]=n[_e>>2],ze=W+20|0,n[s+912>>2]=n[ze>>2],(o[11698]|0)==0|ue^1||(n[ft>>2]=sf(Ve)|0,n[ft+4>>2]=Ve,Po(s,4,2972,ft),ue=n[s+972>>2]|0,ue|0&&Bf[ue&127](s),d=fA(d,b)|0,m=fA(m,b)|0,Ka=+y(p[_e>>2]),Mo=+y(p[ze>>2]),n[Kt>>2]=d,n[Kt+4>>2]=m,E[Kt+8>>3]=+A,E[Kt+16>>3]=+l,E[Kt+24>>3]=Ka,E[Kt+32>>3]=Mo,n[Kt+40>>2]=O,Po(s,4,2989,Kt))}while(0);return(nt|0)==28&&(ue=sf(Ve)|0,n[_e>>2]=ue,n[_e+4>>2]=Ve,n[_e+8>>2]=jr?3047:11699,Po(s,4,3038,_e),ue=n[s+972>>2]|0,ue|0&&Bf[ue&127](s),Kt=fA(d,b)|0,nt=fA(m,b)|0,n[Ge>>2]=Kt,n[Ge+4>>2]=nt,E[Ge+8>>3]=+A,E[Ge+16>>3]=+l,n[Ge+24>>2]=O,Po(s,4,3049,Ge),nt=31),(nt|0)==31&&(yi(s,A,l,u,d,m,w,P,b,L),o[11697]|0&&(ue=n[2279]|0,Kt=sf(ue)|0,n[Jr>>2]=Kt,n[Jr+4>>2]=ue,n[Jr+8>>2]=jr?3047:11699,Po(s,4,3083,Jr),ue=n[s+972>>2]|0,ue|0&&Bf[ue&127](s),Kt=fA(d,b)|0,Jr=fA(m,b)|0,Mo=+y(p[s+908>>2]),Ka=+y(p[s+912>>2]),n[pr>>2]=Kt,n[pr+4>>2]=Jr,E[pr+8>>3]=Mo,E[pr+16>>3]=Ka,n[pr+24>>2]=O,Po(s,4,3092,pr)),n[s+516>>2]=u,W||(ue=s+520|0,W=n[ue>>2]|0,(W|0)==16&&(o[11697]|0&&Po(s,4,3124,$t),n[ue>>2]=0,W=0),b?W=s+916|0:(n[ue>>2]=W+1,W=s+524+(W*24|0)|0),p[W>>2]=A,p[W+4>>2]=l,n[W+8>>2]=d,n[W+12>>2]=m,n[W+16>>2]=n[s+908>>2],n[W+20>>2]=n[s+912>>2],W=0)),b&&(n[s+416>>2]=n[s+908>>2],n[s+420>>2]=n[s+912>>2],o[s+985>>0]=1,o[Nr>>0]=0),n[2279]=(n[2279]|0)+-1,n[s+512>>2]=n[2278],C=cr,jr|(W|0)==0|0}function yn(s,A,l){s=s|0,A=A|0,l=y(l);var u=it;return u=y(z(s,A,l)),y(u+y(oe(s,A,l)))}function Po(s,A,l,u){s=s|0,A=A|0,l=l|0,u=u|0;var d=0,m=0;m=C,C=C+16|0,d=m,n[d>>2]=u,s?u=n[s+976>>2]|0:u=0,G0(u,s,A,l,d),C=m}function sf(s){return s=s|0,(s>>>0>60?3201:3201+(60-s)|0)|0}function fA(s,A){s=s|0,A=A|0;var l=0,u=0,d=0;return d=C,C=C+32|0,l=d+12|0,u=d,n[l>>2]=n[254],n[l+4>>2]=n[255],n[l+8>>2]=n[256],n[u>>2]=n[257],n[u+4>>2]=n[258],n[u+8>>2]=n[259],(s|0)>2?s=11699:s=n[(A?u:l)+(s<<2)>>2]|0,C=d,s|0}function yi(s,A,l,u,d,m,w,P,b,O){s=s|0,A=y(A),l=y(l),u=u|0,d=d|0,m=m|0,w=y(w),P=y(P),b=b|0,O=O|0;var L=0,W=0,ue=0,ze=0,_e=it,Me=it,ot=it,nt=it,ft=it,Ge=it,Ve=it,Kt=0,Jr=0,pr=0,$t=it,Nr=it,jr=0,cr=it,Kn=0,To=0,No=0,Mo=0,Ka=0,rp=0,np=0,tl=0,ip=0,eu=0,tu=0,sp=0,op=0,ap=0,ln=0,rl=0,Ap=0,Zl=0,lp=it,cp=it,ru=it,nu=it,$l=it,Ao=0,CA=0,ca=0,nl=0,vf=0,Df=it,iu=it,Sf=it,kf=it,lo=it,js=it,il=0,Gn=it,xf=it,Lo=it,ec=it,Oo=it,tc=it,Pf=0,bf=0,rc=it,co=it,sl=0,Ff=0,Rf=0,Tf=0,Lr=it,ai=0,Ys=0,Uo=0,uo=0,_r=0,yr=0,ol=0,zt=it,Nf=0,Ii=0;ol=C,C=C+16|0,Ao=ol+12|0,CA=ol+8|0,ca=ol+4|0,nl=ol,ci(s,(d|0)==0|(Ut(A)|0)^1,3326),ci(s,(m|0)==0|(Ut(l)|0)^1,3406),Ys=Ct(s,u)|0,n[s+496>>2]=Ys,_r=Ir(2,Ys)|0,yr=Ir(0,Ys)|0,p[s+440>>2]=y(z(s,_r,w)),p[s+444>>2]=y(oe(s,_r,w)),p[s+428>>2]=y(z(s,yr,w)),p[s+436>>2]=y(oe(s,yr,w)),p[s+464>>2]=y(Dr(s,_r)),p[s+468>>2]=y(Fn(s,_r)),p[s+452>>2]=y(Dr(s,yr)),p[s+460>>2]=y(Fn(s,yr)),p[s+488>>2]=y(Ci(s,_r,w)),p[s+492>>2]=y(is(s,_r,w)),p[s+476>>2]=y(Ci(s,yr,w)),p[s+484>>2]=y(is(s,yr,w));do if(n[s+964>>2]|0)Y0(s,A,l,d,m,w,P);else{if(Uo=s+948|0,uo=(n[s+952>>2]|0)-(n[Uo>>2]|0)>>2,!uo){zQ(s,A,l,d,m,w,P);break}if(!b&&XQ(s,A,l,d,m,w,P)|0)break;ae(s),rl=s+508|0,o[rl>>0]=0,_r=Ir(n[s+4>>2]|0,Ys)|0,yr=PI(_r,Ys)|0,ai=de(_r)|0,Ap=n[s+8>>2]|0,Ff=s+28|0,Zl=(n[Ff>>2]|0)!=0,Oo=ai?w:P,rc=ai?P:w,lp=y(Gg(s,_r,w)),cp=y(bI(s,_r,w)),_e=y(Gg(s,yr,w)),tc=y(Rn(s,_r,w)),co=y(Rn(s,yr,w)),pr=ai?d:m,sl=ai?m:d,Lr=ai?tc:co,ft=ai?co:tc,ec=y(yn(s,2,w)),nt=y(yn(s,0,w)),Me=y(y(en(s+364|0,w))-Lr),ot=y(y(en(s+380|0,w))-Lr),Ge=y(y(en(s+372|0,P))-ft),Ve=y(y(en(s+388|0,P))-ft),ru=ai?Me:Ge,nu=ai?ot:Ve,ec=y(A-ec),A=y(ec-Lr),Ut(A)|0?Lr=A:Lr=y(Zn(y(id(A,ot)),Me)),xf=y(l-nt),A=y(xf-ft),Ut(A)|0?Lo=A:Lo=y(Zn(y(id(A,Ve)),Ge)),Me=ai?Lr:Lo,Gn=ai?Lo:Lr;e:do if((pr|0)==1)for(u=0,W=0;;){if(L=ro(s,W)|0,!u)y(ks(L))>y(0)&&y(ao(L))>y(0)?u=L:u=0;else if(ay(L)|0){ze=0;break e}if(W=W+1|0,W>>>0>=uo>>>0){ze=u;break}}else ze=0;while(0);Kt=ze+500|0,Jr=ze+504|0,u=0,L=0,A=y(0),ue=0;do{if(W=n[(n[Uo>>2]|0)+(ue<<2)>>2]|0,(n[W+36>>2]|0)==1)jc(W),o[W+985>>0]=1,o[W+984>>0]=0;else{zA(W),b&&qg(W,Ct(W,Ys)|0,Me,Gn,Lr);do if((n[W+24>>2]|0)!=1)if((W|0)==(ze|0)){n[Kt>>2]=n[2278],p[Jr>>2]=y(0);break}else{Ay(s,W,Lr,d,Lo,Lr,Lo,m,Ys,O);break}else L|0&&(n[L+960>>2]=W),n[W+960>>2]=0,L=W,u=(u|0)==0?W:u;while(0);js=y(p[W+504>>2]),A=y(A+y(js+y(yn(W,_r,Lr))))}ue=ue+1|0}while((ue|0)!=(uo|0));for(No=A>Me,il=Zl&((pr|0)==2&No)?1:pr,Kn=(sl|0)==1,Ka=Kn&(b^1),rp=(il|0)==1,np=(il|0)==2,tl=976+(_r<<2)|0,ip=(sl|2|0)==2,ap=Kn&(Zl^1),eu=1040+(yr<<2)|0,tu=1040+(_r<<2)|0,sp=976+(yr<<2)|0,op=(sl|0)!=1,No=Zl&((pr|0)!=0&No),To=s+976|0,Kn=Kn^1,A=Me,jr=0,Mo=0,js=y(0),$l=y(0);;){e:do if(jr>>>0>>0)for(Jr=n[Uo>>2]|0,ue=0,Ve=y(0),Ge=y(0),ot=y(0),Me=y(0),W=0,L=0,ze=jr;;){if(Kt=n[Jr+(ze<<2)>>2]|0,(n[Kt+36>>2]|0)!=1&&(n[Kt+940>>2]=Mo,(n[Kt+24>>2]|0)!=1)){if(nt=y(yn(Kt,_r,Lr)),ln=n[tl>>2]|0,l=y(en(Kt+380+(ln<<3)|0,Oo)),ft=y(p[Kt+504>>2]),l=y(id(l,ft)),l=y(Zn(y(en(Kt+364+(ln<<3)|0,Oo)),l)),Zl&(ue|0)!=0&y(nt+y(Ge+l))>A){m=ue,nt=Ve,pr=ze;break e}nt=y(nt+l),l=y(Ge+nt),nt=y(Ve+nt),ay(Kt)|0&&(ot=y(ot+y(ks(Kt))),Me=y(Me-y(ft*y(ao(Kt))))),L|0&&(n[L+960>>2]=Kt),n[Kt+960>>2]=0,ue=ue+1|0,L=Kt,W=(W|0)==0?Kt:W}else nt=Ve,l=Ge;if(ze=ze+1|0,ze>>>0>>0)Ve=nt,Ge=l;else{m=ue,pr=ze;break}}else m=0,nt=y(0),ot=y(0),Me=y(0),W=0,pr=jr;while(0);ln=ot>y(0)&oty(0)&Menu&((Ut(nu)|0)^1))A=nu,ln=51;else if(o[(n[To>>2]|0)+3>>0]|0)ln=51;else{if($t!=y(0)&&y(ks(s))!=y(0)){ln=53;break}A=nt,ln=53}while(0);if((ln|0)==51&&(ln=0,Ut(A)|0?ln=53:(Nr=y(A-nt),cr=A)),(ln|0)==53&&(ln=0,nt>2]|0,ze=Nry(0),Ge=y(Nr/$t),ot=y(0),nt=y(0),A=y(0),L=W;do l=y(en(L+380+(ue<<3)|0,Oo)),Me=y(en(L+364+(ue<<3)|0,Oo)),Me=y(id(l,y(Zn(Me,y(p[L+504>>2]))))),ze?(l=y(Me*y(ao(L))),l!=y(-0)&&(zt=y(Me-y(ft*l)),Df=y(Mi(L,_r,zt,cr,Lr)),zt!=Df)&&(ot=y(ot-y(Df-Me)),A=y(A+l))):Kt&&(iu=y(ks(L)),iu!=y(0))&&(zt=y(Me+y(Ge*iu)),Sf=y(Mi(L,_r,zt,cr,Lr)),zt!=Sf)&&(ot=y(ot-y(Sf-Me)),nt=y(nt-iu)),L=n[L+960>>2]|0;while((L|0)!=0);if(A=y(Ve+A),Me=y(Nr+ot),vf)A=y(0);else{ft=y($t+nt),ze=n[tl>>2]|0,Kt=Mey(0),ft=y(Me/ft),A=y(0);do{zt=y(en(W+380+(ze<<3)|0,Oo)),ot=y(en(W+364+(ze<<3)|0,Oo)),ot=y(id(zt,y(Zn(ot,y(p[W+504>>2]))))),Kt?(zt=y(ot*y(ao(W))),Me=y(-zt),zt!=y(-0)?(zt=y(Ge*Me),Me=y(Mi(W,_r,y(ot+(Jr?Me:zt)),cr,Lr))):Me=ot):ue&&(kf=y(ks(W)),kf!=y(0))?Me=y(Mi(W,_r,y(ot+y(ft*kf)),cr,Lr)):Me=ot,A=y(A-y(Me-ot)),nt=y(yn(W,_r,Lr)),l=y(yn(W,yr,Lr)),Me=y(Me+nt),p[CA>>2]=Me,n[nl>>2]=1,ot=y(p[W+396>>2]);e:do if(Ut(ot)|0){L=Ut(Gn)|0;do if(!L){if(No|(Ss(W,yr,Gn)|0|Kn)||(Ma(s,W)|0)!=4||(n[(XA(W,yr)|0)+4>>2]|0)==3||(n[(Vl(W,yr)|0)+4>>2]|0)==3)break;p[Ao>>2]=Gn,n[ca>>2]=1;break e}while(0);if(Ss(W,yr,Gn)|0){L=n[W+992+(n[sp>>2]<<2)>>2]|0,zt=y(l+y(en(L,Gn))),p[Ao>>2]=zt,L=op&(n[L+4>>2]|0)==2,n[ca>>2]=((Ut(zt)|0|L)^1)&1;break}else{p[Ao>>2]=Gn,n[ca>>2]=L?0:2;break}}else zt=y(Me-nt),$t=y(zt/ot),zt=y(ot*zt),n[ca>>2]=1,p[Ao>>2]=y(l+(ai?$t:zt));while(0);Qr(W,_r,cr,Lr,nl,CA),Qr(W,yr,Gn,Lr,ca,Ao);do if(!(Ss(W,yr,Gn)|0)&&(Ma(s,W)|0)==4){if((n[(XA(W,yr)|0)+4>>2]|0)==3){L=0;break}L=(n[(Vl(W,yr)|0)+4>>2]|0)!=3}else L=0;while(0);zt=y(p[CA>>2]),$t=y(p[Ao>>2]),Nf=n[nl>>2]|0,Ii=n[ca>>2]|0,Ta(W,ai?zt:$t,ai?$t:zt,Ys,ai?Nf:Ii,ai?Ii:Nf,Lr,Lo,b&(L^1),3488,O)|0,o[rl>>0]=o[rl>>0]|o[W+508>>0],W=n[W+960>>2]|0}while((W|0)!=0)}}else A=y(0);if(A=y(Nr+A),Ii=A>0]=Ii|c[rl>>0],np&A>y(0)?(L=n[tl>>2]|0,(n[s+364+(L<<3)+4>>2]|0)!=0&&(lo=y(en(s+364+(L<<3)|0,Oo)),lo>=y(0))?Me=y(Zn(y(0),y(lo-y(cr-A)))):Me=y(0)):Me=A,Kt=jr>>>0>>0,Kt){ze=n[Uo>>2]|0,ue=jr,L=0;do W=n[ze+(ue<<2)>>2]|0,n[W+24>>2]|0||(L=((n[(XA(W,_r)|0)+4>>2]|0)==3&1)+L|0,L=L+((n[(Vl(W,_r)|0)+4>>2]|0)==3&1)|0),ue=ue+1|0;while((ue|0)!=(pr|0));L?(nt=y(0),l=y(0)):ln=101}else ln=101;e:do if((ln|0)==101)switch(ln=0,Ap|0){case 1:{L=0,nt=y(Me*y(.5)),l=y(0);break e}case 2:{L=0,nt=Me,l=y(0);break e}case 3:{if(m>>>0<=1){L=0,nt=y(0),l=y(0);break e}l=y((m+-1|0)>>>0),L=0,nt=y(0),l=y(y(Zn(Me,y(0)))/l);break e}case 5:{l=y(Me/y((m+1|0)>>>0)),L=0,nt=l;break e}case 4:{l=y(Me/y(m>>>0)),L=0,nt=y(l*y(.5));break e}default:{L=0,nt=y(0),l=y(0);break e}}while(0);if(A=y(lp+nt),Kt){ot=y(Me/y(L|0)),ue=n[Uo>>2]|0,W=jr,Me=y(0);do{L=n[ue+(W<<2)>>2]|0;e:do if((n[L+36>>2]|0)!=1){switch(n[L+24>>2]|0){case 1:{if(Pi(L,_r)|0){if(!b)break e;zt=y(Wr(L,_r,cr)),zt=y(zt+y(Dr(s,_r))),zt=y(zt+y(z(L,_r,Lr))),p[L+400+(n[tu>>2]<<2)>>2]=zt;break e}break}case 0:if(Ii=(n[(XA(L,_r)|0)+4>>2]|0)==3,zt=y(ot+A),A=Ii?zt:A,b&&(Ii=L+400+(n[tu>>2]<<2)|0,p[Ii>>2]=y(A+y(p[Ii>>2]))),Ii=(n[(Vl(L,_r)|0)+4>>2]|0)==3,zt=y(ot+A),A=Ii?zt:A,Ka){zt=y(l+y(yn(L,_r,Lr))),Me=Gn,A=y(A+y(zt+y(p[L+504>>2])));break e}else{A=y(A+y(l+y(xs(L,_r,Lr)))),Me=y(Zn(Me,y(xs(L,yr,Lr))));break e}default:}b&&(zt=y(nt+y(Dr(s,_r))),Ii=L+400+(n[tu>>2]<<2)|0,p[Ii>>2]=y(zt+y(p[Ii>>2])))}while(0);W=W+1|0}while((W|0)!=(pr|0))}else Me=y(0);if(l=y(cp+A),ip?nt=y(y(Mi(s,yr,y(co+Me),rc,w))-co):nt=Gn,ot=y(y(Mi(s,yr,y(co+(ap?Gn:Me)),rc,w))-co),Kt&b){W=jr;do{ue=n[(n[Uo>>2]|0)+(W<<2)>>2]|0;do if((n[ue+36>>2]|0)!=1){if((n[ue+24>>2]|0)==1){if(Pi(ue,yr)|0){if(zt=y(Wr(ue,yr,Gn)),zt=y(zt+y(Dr(s,yr))),zt=y(zt+y(z(ue,yr,Lr))),L=n[eu>>2]|0,p[ue+400+(L<<2)>>2]=zt,!(Ut(zt)|0))break}else L=n[eu>>2]|0;zt=y(Dr(s,yr)),p[ue+400+(L<<2)>>2]=y(zt+y(z(ue,yr,Lr)));break}L=Ma(s,ue)|0;do if((L|0)==4){if((n[(XA(ue,yr)|0)+4>>2]|0)==3){ln=139;break}if((n[(Vl(ue,yr)|0)+4>>2]|0)==3){ln=139;break}if(Ss(ue,yr,Gn)|0){A=_e;break}Nf=n[ue+908+(n[tl>>2]<<2)>>2]|0,n[Ao>>2]=Nf,A=y(p[ue+396>>2]),Ii=Ut(A)|0,Me=(n[Q>>2]=Nf,y(p[Q>>2])),Ii?A=ot:(Nr=y(yn(ue,yr,Lr)),zt=y(Me/A),A=y(A*Me),A=y(Nr+(ai?zt:A))),p[CA>>2]=A,p[Ao>>2]=y(y(yn(ue,_r,Lr))+Me),n[ca>>2]=1,n[nl>>2]=1,Qr(ue,_r,cr,Lr,ca,Ao),Qr(ue,yr,Gn,Lr,nl,CA),A=y(p[Ao>>2]),Nr=y(p[CA>>2]),zt=ai?A:Nr,A=ai?Nr:A,Ii=((Ut(zt)|0)^1)&1,Ta(ue,zt,A,Ys,Ii,((Ut(A)|0)^1)&1,Lr,Lo,1,3493,O)|0,A=_e}else ln=139;while(0);e:do if((ln|0)==139){ln=0,A=y(nt-y(xs(ue,yr,Lr)));do if((n[(XA(ue,yr)|0)+4>>2]|0)==3){if((n[(Vl(ue,yr)|0)+4>>2]|0)!=3)break;A=y(_e+y(Zn(y(0),y(A*y(.5)))));break e}while(0);if((n[(Vl(ue,yr)|0)+4>>2]|0)==3){A=_e;break}if((n[(XA(ue,yr)|0)+4>>2]|0)==3){A=y(_e+y(Zn(y(0),A)));break}switch(L|0){case 1:{A=_e;break e}case 2:{A=y(_e+y(A*y(.5)));break e}default:{A=y(_e+A);break e}}}while(0);zt=y(js+A),Ii=ue+400+(n[eu>>2]<<2)|0,p[Ii>>2]=y(zt+y(p[Ii>>2]))}while(0);W=W+1|0}while((W|0)!=(pr|0))}if(js=y(js+ot),$l=y(Zn($l,l)),m=Mo+1|0,pr>>>0>=uo>>>0)break;A=cr,jr=pr,Mo=m}do if(b){if(L=m>>>0>1,!L&&!(gs(s)|0))break;if(!(Ut(Gn)|0)){A=y(Gn-js);e:do switch(n[s+12>>2]|0){case 3:{_e=y(_e+A),Ge=y(0);break}case 2:{_e=y(_e+y(A*y(.5))),Ge=y(0);break}case 4:{Gn>js?Ge=y(A/y(m>>>0)):Ge=y(0);break}case 7:if(Gn>js){_e=y(_e+y(A/y(m<<1>>>0))),Ge=y(A/y(m>>>0)),Ge=L?Ge:y(0);break e}else{_e=y(_e+y(A*y(.5))),Ge=y(0);break e}case 6:{Ge=y(A/y(Mo>>>0)),Ge=Gn>js&L?Ge:y(0);break}default:Ge=y(0)}while(0);if(m|0)for(Kt=1040+(yr<<2)|0,Jr=976+(yr<<2)|0,ze=0,W=0;;){e:do if(W>>>0>>0)for(Me=y(0),ot=y(0),A=y(0),ue=W;;){L=n[(n[Uo>>2]|0)+(ue<<2)>>2]|0;do if((n[L+36>>2]|0)!=1&&(n[L+24>>2]|0)==0){if((n[L+940>>2]|0)!=(ze|0))break e;if(ly(L,yr)|0&&(zt=y(p[L+908+(n[Jr>>2]<<2)>>2]),A=y(Zn(A,y(zt+y(yn(L,yr,Lr)))))),(Ma(s,L)|0)!=5)break;lo=y(pA(L)),lo=y(lo+y(z(L,0,Lr))),zt=y(p[L+912>>2]),zt=y(y(zt+y(yn(L,0,Lr)))-lo),lo=y(Zn(ot,lo)),zt=y(Zn(Me,zt)),Me=zt,ot=lo,A=y(Zn(A,y(lo+zt)))}while(0);if(L=ue+1|0,L>>>0>>0)ue=L;else{ue=L;break}}else ot=y(0),A=y(0),ue=W;while(0);if(ft=y(Ge+A),l=_e,_e=y(_e+ft),W>>>0>>0){nt=y(l+ot),L=W;do{W=n[(n[Uo>>2]|0)+(L<<2)>>2]|0;e:do if((n[W+36>>2]|0)!=1&&(n[W+24>>2]|0)==0)switch(Ma(s,W)|0){case 1:{zt=y(l+y(z(W,yr,Lr))),p[W+400+(n[Kt>>2]<<2)>>2]=zt;break e}case 3:{zt=y(y(_e-y(oe(W,yr,Lr)))-y(p[W+908+(n[Jr>>2]<<2)>>2])),p[W+400+(n[Kt>>2]<<2)>>2]=zt;break e}case 2:{zt=y(l+y(y(ft-y(p[W+908+(n[Jr>>2]<<2)>>2]))*y(.5))),p[W+400+(n[Kt>>2]<<2)>>2]=zt;break e}case 4:{if(zt=y(l+y(z(W,yr,Lr))),p[W+400+(n[Kt>>2]<<2)>>2]=zt,Ss(W,yr,Gn)|0||(ai?(Me=y(p[W+908>>2]),A=y(Me+y(yn(W,_r,Lr))),ot=ft):(ot=y(p[W+912>>2]),ot=y(ot+y(yn(W,yr,Lr))),A=ft,Me=y(p[W+908>>2])),Ni(A,Me)|0&&Ni(ot,y(p[W+912>>2]))|0))break e;Ta(W,A,ot,Ys,1,1,Lr,Lo,1,3501,O)|0;break e}case 5:{p[W+404>>2]=y(y(nt-y(pA(W)))+y(Wr(W,0,Gn)));break e}default:break e}while(0);L=L+1|0}while((L|0)!=(ue|0))}if(ze=ze+1|0,(ze|0)==(m|0))break;W=ue}}}while(0);if(p[s+908>>2]=y(Mi(s,2,ec,w,w)),p[s+912>>2]=y(Mi(s,0,xf,P,w)),(il|0)!=0&&(Pf=n[s+32>>2]|0,bf=(il|0)==2,!(bf&(Pf|0)!=2))?bf&(Pf|0)==2&&(A=y(tc+cr),A=y(Zn(y(id(A,y(of(s,_r,$l,Oo)))),tc)),ln=198):(A=y(Mi(s,_r,$l,Oo,w)),ln=198),(ln|0)==198&&(p[s+908+(n[976+(_r<<2)>>2]<<2)>>2]=A),(sl|0)!=0&&(Rf=n[s+32>>2]|0,Tf=(sl|0)==2,!(Tf&(Rf|0)!=2))?Tf&(Rf|0)==2&&(A=y(co+Gn),A=y(Zn(y(id(A,y(of(s,yr,y(co+js),rc)))),co)),ln=204):(A=y(Mi(s,yr,y(co+js),rc,w)),ln=204),(ln|0)==204&&(p[s+908+(n[976+(yr<<2)>>2]<<2)>>2]=A),b){if((n[Ff>>2]|0)==2){W=976+(yr<<2)|0,ue=1040+(yr<<2)|0,L=0;do ze=ro(s,L)|0,n[ze+24>>2]|0||(Nf=n[W>>2]|0,zt=y(p[s+908+(Nf<<2)>>2]),Ii=ze+400+(n[ue>>2]<<2)|0,zt=y(zt-y(p[Ii>>2])),p[Ii>>2]=y(zt-y(p[ze+908+(Nf<<2)>>2]))),L=L+1|0;while((L|0)!=(uo|0))}if(u|0){L=ai?il:d;do cy(s,u,Lr,L,Lo,Ys,O),u=n[u+960>>2]|0;while((u|0)!=0)}if(L=(_r|2|0)==3,W=(yr|2|0)==3,L|W){u=0;do ue=n[(n[Uo>>2]|0)+(u<<2)>>2]|0,(n[ue+36>>2]|0)!=1&&(L&&jg(s,ue,_r),W&&jg(s,ue,yr)),u=u+1|0;while((u|0)!=(uo|0))}}}while(0);C=ol}function Na(s,A){s=s|0,A=y(A);var l=0;ta(s,A>=y(0),3147),l=A==y(0),p[s+4>>2]=l?y(0):A}function Wl(s,A,l,u){s=s|0,A=y(A),l=y(l),u=u|0;var d=it,m=it,w=0,P=0,b=0;n[2278]=(n[2278]|0)+1,zA(s),Ss(s,2,A)|0?(d=y(en(n[s+992>>2]|0,A)),b=1,d=y(d+y(yn(s,2,A)))):(d=y(en(s+380|0,A)),d>=y(0)?b=2:(b=((Ut(A)|0)^1)&1,d=A)),Ss(s,0,l)|0?(m=y(en(n[s+996>>2]|0,l)),P=1,m=y(m+y(yn(s,0,A)))):(m=y(en(s+388|0,l)),m>=y(0)?P=2:(P=((Ut(l)|0)^1)&1,m=l)),w=s+976|0,Ta(s,d,m,u,b,P,A,l,1,3189,n[w>>2]|0)|0&&(qg(s,n[s+496>>2]|0,A,l,A),Jl(s,y(p[(n[w>>2]|0)+4>>2]),y(0),y(0)),o[11696]|0)&&iy(s,7)}function zA(s){s=s|0;var A=0,l=0,u=0,d=0,m=0,w=0,P=0,b=0,O=0,L=0;P=C,C=C+32|0,w=P+24|0,m=P+16|0,u=P+8|0,d=P,l=0;do A=s+380+(l<<3)|0,(n[s+380+(l<<3)+4>>2]|0)!=0&&(b=A,O=n[b+4>>2]|0,L=u,n[L>>2]=n[b>>2],n[L+4>>2]=O,L=s+364+(l<<3)|0,O=n[L+4>>2]|0,b=d,n[b>>2]=n[L>>2],n[b+4>>2]=O,n[m>>2]=n[u>>2],n[m+4>>2]=n[u+4>>2],n[w>>2]=n[d>>2],n[w+4>>2]=n[d+4>>2],Hs(m,w)|0)||(A=s+348+(l<<3)|0),n[s+992+(l<<2)>>2]=A,l=l+1|0;while((l|0)!=2);C=P}function Ss(s,A,l){s=s|0,A=A|0,l=y(l);var u=0;switch(s=n[s+992+(n[976+(A<<2)>>2]<<2)>>2]|0,n[s+4>>2]|0){case 0:case 3:{s=0;break}case 1:{y(p[s>>2])>2])>2]|0){case 2:{A=y(y(y(p[s>>2])*A)/y(100));break}case 1:{A=y(p[s>>2]);break}default:A=y(Qe)}return y(A)}function qg(s,A,l,u,d){s=s|0,A=A|0,l=y(l),u=y(u),d=y(d);var m=0,w=it;A=n[s+944>>2]|0?A:1,m=Ir(n[s+4>>2]|0,A)|0,A=PI(m,A)|0,l=y(uy(s,m,l)),u=y(uy(s,A,u)),w=y(l+y(z(s,m,d))),p[s+400+(n[1040+(m<<2)>>2]<<2)>>2]=w,l=y(l+y(oe(s,m,d))),p[s+400+(n[1e3+(m<<2)>>2]<<2)>>2]=l,l=y(u+y(z(s,A,d))),p[s+400+(n[1040+(A<<2)>>2]<<2)>>2]=l,d=y(u+y(oe(s,A,d))),p[s+400+(n[1e3+(A<<2)>>2]<<2)>>2]=d}function Jl(s,A,l,u){s=s|0,A=y(A),l=y(l),u=y(u);var d=0,m=0,w=it,P=it,b=0,O=0,L=it,W=0,ue=it,ze=it,_e=it,Me=it;if(A!=y(0)&&(d=s+400|0,Me=y(p[d>>2]),m=s+404|0,_e=y(p[m>>2]),W=s+416|0,ze=y(p[W>>2]),O=s+420|0,w=y(p[O>>2]),ue=y(Me+l),L=y(_e+u),u=y(ue+ze),P=y(L+w),b=(n[s+988>>2]|0)==1,p[d>>2]=y(Aa(Me,A,0,b)),p[m>>2]=y(Aa(_e,A,0,b)),l=y(ZR(y(ze*A),y(1))),Ni(l,y(0))|0?m=0:m=(Ni(l,y(1))|0)^1,l=y(ZR(y(w*A),y(1))),Ni(l,y(0))|0?d=0:d=(Ni(l,y(1))|0)^1,Me=y(Aa(u,A,b&m,b&(m^1))),p[W>>2]=y(Me-y(Aa(ue,A,0,b))),Me=y(Aa(P,A,b&d,b&(d^1))),p[O>>2]=y(Me-y(Aa(L,A,0,b))),m=(n[s+952>>2]|0)-(n[s+948>>2]|0)>>2,m|0)){d=0;do Jl(ro(s,d)|0,A,ue,L),d=d+1|0;while((d|0)!=(m|0))}}function xI(s,A,l,u,d){switch(s=s|0,A=A|0,l=l|0,u=u|0,d=d|0,l|0){case 5:case 0:{s=L9(n[489]|0,u,d)|0;break}default:s=G3e(u,d)|0}return s|0}function q0(s,A,l,u){s=s|0,A=A|0,l=l|0,u=u|0;var d=0,m=0;d=C,C=C+16|0,m=d,n[m>>2]=u,G0(s,0,A,l,m),C=d}function G0(s,A,l,u,d){if(s=s|0,A=A|0,l=l|0,u=u|0,d=d|0,s=s|0?s:956,iY[n[s+8>>2]&1](s,A,l,u,d)|0,(l|0)==5)Ot();else return}function gA(s,A,l){s=s|0,A=A|0,l=l|0,o[s+A>>0]=l&1}function oy(s,A){s=s|0,A=A|0;var l=0,u=0;n[s>>2]=0,n[s+4>>2]=0,n[s+8>>2]=0,l=A+4|0,u=(n[l>>2]|0)-(n[A>>2]|0)>>2,u|0&&(j0(s,u),Nt(s,n[A>>2]|0,n[l>>2]|0,u))}function j0(s,A){s=s|0,A=A|0;var l=0;if((M(s)|0)>>>0>>0&&An(s),A>>>0>1073741823)Ot();else{l=Jt(A<<2)|0,n[s+4>>2]=l,n[s>>2]=l,n[s+8>>2]=l+(A<<2);return}}function Nt(s,A,l,u){s=s|0,A=A|0,l=l|0,u=u|0,u=s+4|0,s=l-A|0,(s|0)>0&&(Tr(n[u>>2]|0,A|0,s|0)|0,n[u>>2]=(n[u>>2]|0)+(s>>>2<<2))}function M(s){return s=s|0,1073741823}function z(s,A,l){return s=s|0,A=A|0,l=y(l),de(A)|0&&(n[s+96>>2]|0)!=0?s=s+92|0:s=bn(s+60|0,n[1040+(A<<2)>>2]|0,992)|0,y(tt(s,l))}function oe(s,A,l){return s=s|0,A=A|0,l=y(l),de(A)|0&&(n[s+104>>2]|0)!=0?s=s+100|0:s=bn(s+60|0,n[1e3+(A<<2)>>2]|0,992)|0,y(tt(s,l))}function de(s){return s=s|0,(s|1|0)==3|0}function tt(s,A){return s=s|0,A=y(A),(n[s+4>>2]|0)==3?A=y(0):A=y(en(s,A)),y(A)}function Ct(s,A){return s=s|0,A=A|0,s=n[s>>2]|0,((s|0)==0?(A|0)>1?A:1:s)|0}function Ir(s,A){s=s|0,A=A|0;var l=0;e:do if((A|0)==2){switch(s|0){case 2:{s=3;break e}case 3:break;default:{l=4;break e}}s=2}else l=4;while(0);return s|0}function Dr(s,A){s=s|0,A=A|0;var l=it;return de(A)|0&&(n[s+312>>2]|0)!=0&&(l=y(p[s+308>>2]),l>=y(0))||(l=y(Zn(y(p[(bn(s+276|0,n[1040+(A<<2)>>2]|0,992)|0)>>2]),y(0)))),y(l)}function Fn(s,A){s=s|0,A=A|0;var l=it;return de(A)|0&&(n[s+320>>2]|0)!=0&&(l=y(p[s+316>>2]),l>=y(0))||(l=y(Zn(y(p[(bn(s+276|0,n[1e3+(A<<2)>>2]|0,992)|0)>>2]),y(0)))),y(l)}function Ci(s,A,l){s=s|0,A=A|0,l=y(l);var u=it;return de(A)|0&&(n[s+240>>2]|0)!=0&&(u=y(en(s+236|0,l)),u>=y(0))||(u=y(Zn(y(en(bn(s+204|0,n[1040+(A<<2)>>2]|0,992)|0,l)),y(0)))),y(u)}function is(s,A,l){s=s|0,A=A|0,l=y(l);var u=it;return de(A)|0&&(n[s+248>>2]|0)!=0&&(u=y(en(s+244|0,l)),u>=y(0))||(u=y(Zn(y(en(bn(s+204|0,n[1e3+(A<<2)>>2]|0,992)|0,l)),y(0)))),y(u)}function Y0(s,A,l,u,d,m,w){s=s|0,A=y(A),l=y(l),u=u|0,d=d|0,m=y(m),w=y(w);var P=it,b=it,O=it,L=it,W=it,ue=it,ze=0,_e=0,Me=0;Me=C,C=C+16|0,ze=Me,_e=s+964|0,ci(s,(n[_e>>2]|0)!=0,3519),P=y(Rn(s,2,A)),b=y(Rn(s,0,A)),O=y(yn(s,2,A)),L=y(yn(s,0,A)),Ut(A)|0?W=A:W=y(Zn(y(0),y(y(A-O)-P))),Ut(l)|0?ue=l:ue=y(Zn(y(0),y(y(l-L)-b))),(u|0)==1&(d|0)==1?(p[s+908>>2]=y(Mi(s,2,y(A-O),m,m)),A=y(Mi(s,0,y(l-L),w,m))):(sY[n[_e>>2]&1](ze,s,W,u,ue,d),W=y(P+y(p[ze>>2])),ue=y(A-O),p[s+908>>2]=y(Mi(s,2,(u|2|0)==2?W:ue,m,m)),ue=y(b+y(p[ze+4>>2])),A=y(l-L),A=y(Mi(s,0,(d|2|0)==2?ue:A,w,m))),p[s+912>>2]=A,C=Me}function zQ(s,A,l,u,d,m,w){s=s|0,A=y(A),l=y(l),u=u|0,d=d|0,m=y(m),w=y(w);var P=it,b=it,O=it,L=it;O=y(Rn(s,2,m)),P=y(Rn(s,0,m)),L=y(yn(s,2,m)),b=y(yn(s,0,m)),A=y(A-L),p[s+908>>2]=y(Mi(s,2,(u|2|0)==2?O:A,m,m)),l=y(l-b),p[s+912>>2]=y(Mi(s,0,(d|2|0)==2?P:l,w,m))}function XQ(s,A,l,u,d,m,w){s=s|0,A=y(A),l=y(l),u=u|0,d=d|0,m=y(m),w=y(w);var P=0,b=it,O=it;return P=(u|0)==2,!(A<=y(0)&P)&&!(l<=y(0)&(d|0)==2)&&!((u|0)==1&(d|0)==1)?s=0:(b=y(yn(s,0,m)),O=y(yn(s,2,m)),P=A>2]=y(Mi(s,2,P?y(0):A,m,m)),A=y(l-b),P=l>2]=y(Mi(s,0,P?y(0):A,w,m)),s=1),s|0}function PI(s,A){return s=s|0,A=A|0,af(s)|0?s=Ir(2,A)|0:s=0,s|0}function Gg(s,A,l){return s=s|0,A=A|0,l=y(l),l=y(Ci(s,A,l)),y(l+y(Dr(s,A)))}function bI(s,A,l){return s=s|0,A=A|0,l=y(l),l=y(is(s,A,l)),y(l+y(Fn(s,A)))}function Rn(s,A,l){s=s|0,A=A|0,l=y(l);var u=it;return u=y(Gg(s,A,l)),y(u+y(bI(s,A,l)))}function ay(s){return s=s|0,n[s+24>>2]|0?s=0:y(ks(s))!=y(0)?s=1:s=y(ao(s))!=y(0),s|0}function ks(s){s=s|0;var A=it;if(n[s+944>>2]|0){if(A=y(p[s+44>>2]),Ut(A)|0)return A=y(p[s+40>>2]),s=A>y(0)&((Ut(A)|0)^1),y(s?A:y(0))}else A=y(0);return y(A)}function ao(s){s=s|0;var A=it,l=0,u=it;do if(n[s+944>>2]|0){if(A=y(p[s+48>>2]),Ut(A)|0){if(l=o[(n[s+976>>2]|0)+2>>0]|0,l<<24>>24==0&&(u=y(p[s+40>>2]),u>24?y(1):y(0)}}else A=y(0);while(0);return y(A)}function jc(s){s=s|0;var A=0,l=0;if(Qy(s+400|0,0,540)|0,o[s+985>>0]=1,ae(s),l=vs(s)|0,l|0){A=s+948|0,s=0;do jc(n[(n[A>>2]|0)+(s<<2)>>2]|0),s=s+1|0;while((s|0)!=(l|0))}}function Ay(s,A,l,u,d,m,w,P,b,O){s=s|0,A=A|0,l=y(l),u=u|0,d=y(d),m=y(m),w=y(w),P=P|0,b=b|0,O=O|0;var L=0,W=it,ue=0,ze=0,_e=it,Me=it,ot=0,nt=it,ft=0,Ge=it,Ve=0,Kt=0,Jr=0,pr=0,$t=0,Nr=0,jr=0,cr=0,Kn=0,To=0;Kn=C,C=C+16|0,Jr=Kn+12|0,pr=Kn+8|0,$t=Kn+4|0,Nr=Kn,cr=Ir(n[s+4>>2]|0,b)|0,Ve=de(cr)|0,W=y(en(FI(A)|0,Ve?m:w)),Kt=Ss(A,2,m)|0,jr=Ss(A,0,w)|0;do if(!(Ut(W)|0)&&!(Ut(Ve?l:d)|0)){if(L=A+504|0,!(Ut(y(p[L>>2]))|0)&&(!(RI(n[A+976>>2]|0,0)|0)||(n[A+500>>2]|0)==(n[2278]|0)))break;p[L>>2]=y(Zn(W,y(Rn(A,cr,m))))}else ue=7;while(0);do if((ue|0)==7){if(ft=Ve^1,!(ft|Kt^1)){w=y(en(n[A+992>>2]|0,m)),p[A+504>>2]=y(Zn(w,y(Rn(A,2,m))));break}if(!(Ve|jr^1)){w=y(en(n[A+996>>2]|0,w)),p[A+504>>2]=y(Zn(w,y(Rn(A,0,m))));break}p[Jr>>2]=y(Qe),p[pr>>2]=y(Qe),n[$t>>2]=0,n[Nr>>2]=0,nt=y(yn(A,2,m)),Ge=y(yn(A,0,m)),Kt?(_e=y(nt+y(en(n[A+992>>2]|0,m))),p[Jr>>2]=_e,n[$t>>2]=1,ze=1):(ze=0,_e=y(Qe)),jr?(W=y(Ge+y(en(n[A+996>>2]|0,w))),p[pr>>2]=W,n[Nr>>2]=1,L=1):(L=0,W=y(Qe)),ue=n[s+32>>2]|0,Ve&(ue|0)==2?ue=2:Ut(_e)|0&&!(Ut(l)|0)&&(p[Jr>>2]=l,n[$t>>2]=2,ze=2,_e=l),!((ue|0)==2&ft)&&Ut(W)|0&&!(Ut(d)|0)&&(p[pr>>2]=d,n[Nr>>2]=2,L=2,W=d),Me=y(p[A+396>>2]),ot=Ut(Me)|0;do if(ot)ue=ze;else{if((ze|0)==1&ft){p[pr>>2]=y(y(_e-nt)/Me),n[Nr>>2]=1,L=1,ue=1;break}Ve&(L|0)==1?(p[Jr>>2]=y(Me*y(W-Ge)),n[$t>>2]=1,L=1,ue=1):ue=ze}while(0);To=Ut(l)|0,ze=(Ma(s,A)|0)!=4,!(Ve|Kt|((u|0)!=1|To)|(ze|(ue|0)==1))&&(p[Jr>>2]=l,n[$t>>2]=1,!ot)&&(p[pr>>2]=y(y(l-nt)/Me),n[Nr>>2]=1,L=1),!(jr|ft|((P|0)!=1|(Ut(d)|0))|(ze|(L|0)==1))&&(p[pr>>2]=d,n[Nr>>2]=1,!ot)&&(p[Jr>>2]=y(Me*y(d-Ge)),n[$t>>2]=1),Qr(A,2,m,m,$t,Jr),Qr(A,0,w,m,Nr,pr),l=y(p[Jr>>2]),d=y(p[pr>>2]),Ta(A,l,d,b,n[$t>>2]|0,n[Nr>>2]|0,m,w,0,3565,O)|0,w=y(p[A+908+(n[976+(cr<<2)>>2]<<2)>>2]),p[A+504>>2]=y(Zn(w,y(Rn(A,cr,m))))}while(0);n[A+500>>2]=n[2278],C=Kn}function Mi(s,A,l,u,d){return s=s|0,A=A|0,l=y(l),u=y(u),d=y(d),u=y(of(s,A,l,u)),y(Zn(u,y(Rn(s,A,d))))}function Ma(s,A){return s=s|0,A=A|0,A=A+20|0,A=n[((n[A>>2]|0)==0?s+16|0:A)>>2]|0,(A|0)==5&&af(n[s+4>>2]|0)|0&&(A=1),A|0}function XA(s,A){return s=s|0,A=A|0,de(A)|0&&(n[s+96>>2]|0)!=0?A=4:A=n[1040+(A<<2)>>2]|0,s+60+(A<<3)|0}function Vl(s,A){return s=s|0,A=A|0,de(A)|0&&(n[s+104>>2]|0)!=0?A=5:A=n[1e3+(A<<2)>>2]|0,s+60+(A<<3)|0}function Qr(s,A,l,u,d,m){switch(s=s|0,A=A|0,l=y(l),u=y(u),d=d|0,m=m|0,l=y(en(s+380+(n[976+(A<<2)>>2]<<3)|0,l)),l=y(l+y(yn(s,A,u))),n[d>>2]|0){case 2:case 1:{d=Ut(l)|0,u=y(p[m>>2]),p[m>>2]=d|u>2]=2,p[m>>2]=l);break}default:}}function Pi(s,A){return s=s|0,A=A|0,s=s+132|0,de(A)|0&&(n[(bn(s,4,948)|0)+4>>2]|0)!=0?s=1:s=(n[(bn(s,n[1040+(A<<2)>>2]|0,948)|0)+4>>2]|0)!=0,s|0}function Wr(s,A,l){s=s|0,A=A|0,l=y(l);var u=0,d=0;return s=s+132|0,de(A)|0&&(u=bn(s,4,948)|0,(n[u+4>>2]|0)!=0)?d=4:(u=bn(s,n[1040+(A<<2)>>2]|0,948)|0,n[u+4>>2]|0?d=4:l=y(0)),(d|0)==4&&(l=y(en(u,l))),y(l)}function xs(s,A,l){s=s|0,A=A|0,l=y(l);var u=it;return u=y(p[s+908+(n[976+(A<<2)>>2]<<2)>>2]),u=y(u+y(z(s,A,l))),y(u+y(oe(s,A,l)))}function gs(s){s=s|0;var A=0,l=0,u=0;e:do if(af(n[s+4>>2]|0)|0)A=0;else if((n[s+16>>2]|0)!=5)if(l=vs(s)|0,!l)A=0;else for(A=0;;){if(u=ro(s,A)|0,(n[u+24>>2]|0)==0&&(n[u+20>>2]|0)==5){A=1;break e}if(A=A+1|0,A>>>0>=l>>>0){A=0;break}}else A=1;while(0);return A|0}function ly(s,A){s=s|0,A=A|0;var l=it;return l=y(p[s+908+(n[976+(A<<2)>>2]<<2)>>2]),l>=y(0)&((Ut(l)|0)^1)|0}function pA(s){s=s|0;var A=it,l=0,u=0,d=0,m=0,w=0,P=0,b=it;if(l=n[s+968>>2]|0,l)b=y(p[s+908>>2]),A=y(p[s+912>>2]),A=y(eY[l&0](s,b,A)),ci(s,(Ut(A)|0)^1,3573);else{m=vs(s)|0;do if(m|0){for(l=0,d=0;;){if(u=ro(s,d)|0,n[u+940>>2]|0){w=8;break}if((n[u+24>>2]|0)!=1)if(P=(Ma(s,u)|0)==5,P){l=u;break}else l=(l|0)==0?u:l;if(d=d+1|0,d>>>0>=m>>>0){w=8;break}}if((w|0)==8&&!l)break;return A=y(pA(l)),y(A+y(p[l+404>>2]))}while(0);A=y(p[s+912>>2])}return y(A)}function of(s,A,l,u){s=s|0,A=A|0,l=y(l),u=y(u);var d=it,m=0;return af(A)|0?(A=1,m=3):de(A)|0?(A=0,m=3):(u=y(Qe),d=y(Qe)),(m|0)==3&&(d=y(en(s+364+(A<<3)|0,u)),u=y(en(s+380+(A<<3)|0,u))),m=u=y(0)&((Ut(u)|0)^1)),l=m?u:l,m=d>=y(0)&((Ut(d)|0)^1)&l>2]|0,m)|0,_e=PI(ot,m)|0,Me=de(ot)|0,W=y(yn(A,2,l)),ue=y(yn(A,0,l)),Ss(A,2,l)|0?P=y(W+y(en(n[A+992>>2]|0,l))):Pi(A,2)|0&&gr(A,2)|0?(P=y(p[s+908>>2]),b=y(Dr(s,2)),b=y(P-y(b+y(Fn(s,2)))),P=y(Wr(A,2,l)),P=y(Mi(A,2,y(b-y(P+y(Yc(A,2,l)))),l,l))):P=y(Qe),Ss(A,0,d)|0?b=y(ue+y(en(n[A+996>>2]|0,d))):Pi(A,0)|0&&gr(A,0)|0?(b=y(p[s+912>>2]),ft=y(Dr(s,0)),ft=y(b-y(ft+y(Fn(s,0)))),b=y(Wr(A,0,d)),b=y(Mi(A,0,y(ft-y(b+y(Yc(A,0,d)))),d,l))):b=y(Qe),O=Ut(P)|0,L=Ut(b)|0;do if(O^L&&(ze=y(p[A+396>>2]),!(Ut(ze)|0)))if(O){P=y(W+y(y(b-ue)*ze));break}else{ft=y(ue+y(y(P-W)/ze)),b=L?ft:b;break}while(0);L=Ut(P)|0,O=Ut(b)|0,L|O&&(Ge=(L^1)&1,u=l>y(0)&((u|0)!=0&L),P=Me?P:u?l:P,Ta(A,P,b,m,Me?Ge:u?2:Ge,L&(O^1)&1,P,b,0,3623,w)|0,P=y(p[A+908>>2]),P=y(P+y(yn(A,2,l))),b=y(p[A+912>>2]),b=y(b+y(yn(A,0,l)))),Ta(A,P,b,m,1,1,P,b,1,3635,w)|0,gr(A,ot)|0&&!(Pi(A,ot)|0)?(Ge=n[976+(ot<<2)>>2]|0,ft=y(p[s+908+(Ge<<2)>>2]),ft=y(ft-y(p[A+908+(Ge<<2)>>2])),ft=y(ft-y(Fn(s,ot))),ft=y(ft-y(oe(A,ot,l))),ft=y(ft-y(Yc(A,ot,Me?l:d))),p[A+400+(n[1040+(ot<<2)>>2]<<2)>>2]=ft):nt=21;do if((nt|0)==21){if(!(Pi(A,ot)|0)&&(n[s+8>>2]|0)==1){Ge=n[976+(ot<<2)>>2]|0,ft=y(p[s+908+(Ge<<2)>>2]),ft=y(y(ft-y(p[A+908+(Ge<<2)>>2]))*y(.5)),p[A+400+(n[1040+(ot<<2)>>2]<<2)>>2]=ft;break}!(Pi(A,ot)|0)&&(n[s+8>>2]|0)==2&&(Ge=n[976+(ot<<2)>>2]|0,ft=y(p[s+908+(Ge<<2)>>2]),ft=y(ft-y(p[A+908+(Ge<<2)>>2])),p[A+400+(n[1040+(ot<<2)>>2]<<2)>>2]=ft)}while(0);gr(A,_e)|0&&!(Pi(A,_e)|0)?(Ge=n[976+(_e<<2)>>2]|0,ft=y(p[s+908+(Ge<<2)>>2]),ft=y(ft-y(p[A+908+(Ge<<2)>>2])),ft=y(ft-y(Fn(s,_e))),ft=y(ft-y(oe(A,_e,l))),ft=y(ft-y(Yc(A,_e,Me?d:l))),p[A+400+(n[1040+(_e<<2)>>2]<<2)>>2]=ft):nt=30;do if((nt|0)==30&&!(Pi(A,_e)|0)){if((Ma(s,A)|0)==2){Ge=n[976+(_e<<2)>>2]|0,ft=y(p[s+908+(Ge<<2)>>2]),ft=y(y(ft-y(p[A+908+(Ge<<2)>>2]))*y(.5)),p[A+400+(n[1040+(_e<<2)>>2]<<2)>>2]=ft;break}Ge=(Ma(s,A)|0)==3,Ge^(n[s+28>>2]|0)==2&&(Ge=n[976+(_e<<2)>>2]|0,ft=y(p[s+908+(Ge<<2)>>2]),ft=y(ft-y(p[A+908+(Ge<<2)>>2])),p[A+400+(n[1040+(_e<<2)>>2]<<2)>>2]=ft)}while(0)}function jg(s,A,l){s=s|0,A=A|0,l=l|0;var u=it,d=0;d=n[976+(l<<2)>>2]|0,u=y(p[A+908+(d<<2)>>2]),u=y(y(p[s+908+(d<<2)>>2])-u),u=y(u-y(p[A+400+(n[1040+(l<<2)>>2]<<2)>>2])),p[A+400+(n[1e3+(l<<2)>>2]<<2)>>2]=u}function af(s){return s=s|0,(s|1|0)==1|0}function FI(s){s=s|0;var A=it;switch(n[s+56>>2]|0){case 0:case 3:{A=y(p[s+40>>2]),A>y(0)&((Ut(A)|0)^1)?s=o[(n[s+976>>2]|0)+2>>0]|0?1056:992:s=1056;break}default:s=s+52|0}return s|0}function RI(s,A){return s=s|0,A=A|0,(o[s+A>>0]|0)!=0|0}function gr(s,A){return s=s|0,A=A|0,s=s+132|0,de(A)|0&&(n[(bn(s,5,948)|0)+4>>2]|0)!=0?s=1:s=(n[(bn(s,n[1e3+(A<<2)>>2]|0,948)|0)+4>>2]|0)!=0,s|0}function Yc(s,A,l){s=s|0,A=A|0,l=y(l);var u=0,d=0;return s=s+132|0,de(A)|0&&(u=bn(s,5,948)|0,(n[u+4>>2]|0)!=0)?d=4:(u=bn(s,n[1e3+(A<<2)>>2]|0,948)|0,n[u+4>>2]|0?d=4:l=y(0)),(d|0)==4&&(l=y(en(u,l))),y(l)}function uy(s,A,l){return s=s|0,A=A|0,l=y(l),Pi(s,A)|0?l=y(Wr(s,A,l)):l=y(-y(Yc(s,A,l))),y(l)}function Wc(s){return s=y(s),p[Q>>2]=s,n[Q>>2]|0|0}function Yg(s,A,l,u){s=s|0,A=A|0,l=l|0,u=u|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=u;do if(A)if(A>>>0>1073741823)Ot();else{d=Jt(A<<2)|0;break}else d=0;while(0);n[s>>2]=d,u=d+(l<<2)|0,n[s+8>>2]=u,n[s+4>>2]=u,n[s+12>>2]=d+(A<<2)}function W0(s,A){s=s|0,A=A|0;var l=0,u=0,d=0,m=0,w=0;u=n[s>>2]|0,w=s+4|0,m=A+4|0,d=(n[w>>2]|0)-u|0,l=(n[m>>2]|0)+(0-(d>>2)<<2)|0,n[m>>2]=l,(d|0)>0?(Tr(l|0,u|0,d|0)|0,u=m,l=n[m>>2]|0):u=m,m=n[s>>2]|0,n[s>>2]=l,n[u>>2]=m,m=A+8|0,d=n[w>>2]|0,n[w>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,w=A+12|0,s=n[m>>2]|0,n[m>>2]=n[w>>2],n[w>>2]=s,n[A>>2]=n[u>>2]}function Af(s){s=s|0;var A=0,l=0,u=0;A=n[s+4>>2]|0,l=s+8|0,u=n[l>>2]|0,(u|0)!=(A|0)&&(n[l>>2]=u+(~((u+-4-A|0)>>>2)<<2)),s=n[s>>2]|0,s|0&&yt(s)}function lf(s,A,l,u){s=s|0,A=A|0,l=l|0,u=u|0;var d=0,m=0,w=0,P=0;if(w=s+4|0,P=n[w>>2]|0,d=P-u|0,m=d>>2,s=A+(m<<2)|0,s>>>0>>0){u=P;do n[u>>2]=n[s>>2],s=s+4|0,u=(n[w>>2]|0)+4|0,n[w>>2]=u;while(s>>>0>>0)}m|0&&WI(P+(0-m<<2)|0,A|0,d|0)|0}function J0(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0,w=0,P=0,b=0;return P=A+4|0,b=n[P>>2]|0,d=n[s>>2]|0,w=l,m=w-d|0,u=b+(0-(m>>2)<<2)|0,n[P>>2]=u,(m|0)>0&&Tr(u|0,d|0,m|0)|0,d=s+4|0,m=A+8|0,u=(n[d>>2]|0)-w|0,(u|0)>0&&(Tr(n[m>>2]|0,l|0,u|0)|0,n[m>>2]=(n[m>>2]|0)+(u>>>2<<2)),w=n[s>>2]|0,n[s>>2]=n[P>>2],n[P>>2]=w,w=n[d>>2]|0,n[d>>2]=n[m>>2],n[m>>2]=w,w=s+8|0,l=A+12|0,s=n[w>>2]|0,n[w>>2]=n[l>>2],n[l>>2]=s,n[A>>2]=n[P>>2],b|0}function TI(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0,w=0;if(w=n[A>>2]|0,m=n[l>>2]|0,(w|0)!=(m|0)){d=s+8|0,l=((m+-4-w|0)>>>2)+1|0,s=w,u=n[d>>2]|0;do n[u>>2]=n[s>>2],u=(n[d>>2]|0)+4|0,n[d>>2]=u,s=s+4|0;while((s|0)!=(m|0));n[A>>2]=w+(l<<2)}}function fy(){AA()}function La(){var s=0;return s=Jt(4)|0,cf(s),s|0}function cf(s){s=s|0,n[s>>2]=ia()|0}function zl(s){s=s|0,s|0&&(V0(s),yt(s))}function V0(s){s=s|0,Gi(n[s>>2]|0)}function gy(s,A,l){s=s|0,A=A|0,l=l|0,gA(n[s>>2]|0,A,l)}function bo(s,A){s=s|0,A=y(A),Na(n[s>>2]|0,A)}function ZQ(s,A){return s=s|0,A=A|0,RI(n[s>>2]|0,A)|0}function NI(){var s=0;return s=Jt(8)|0,$Q(s,0),s|0}function $Q(s,A){s=s|0,A=A|0,A?A=li(n[A>>2]|0)|0:A=to()|0,n[s>>2]=A,n[s+4>>2]=0,So(A,s)}function NF(s){s=s|0;var A=0;return A=Jt(8)|0,$Q(A,s),A|0}function ev(s){s=s|0,s|0&&(Jc(s),yt(s))}function Jc(s){s=s|0;var A=0;Zt(n[s>>2]|0),A=s+4|0,s=n[A>>2]|0,n[A>>2]=0,s|0&&(uf(s),yt(s))}function uf(s){s=s|0,ff(s)}function ff(s){s=s|0,s=n[s>>2]|0,s|0&&Oc(s|0)}function MI(s){return s=s|0,cA(s)|0}function py(s){s=s|0;var A=0,l=0;l=s+4|0,A=n[l>>2]|0,n[l>>2]=0,A|0&&(uf(A),yt(A)),Do(n[s>>2]|0)}function MF(s,A){s=s|0,A=A|0,Bn(n[s>>2]|0,n[A>>2]|0)}function LF(s,A){s=s|0,A=A|0,sa(n[s>>2]|0,A)}function tv(s,A,l){s=s|0,A=A|0,l=+l,Yl(n[s>>2]|0,A,y(l))}function rv(s,A,l){s=s|0,A=A|0,l=+l,Ds(n[s>>2]|0,A,y(l))}function LI(s,A){s=s|0,A=A|0,ql(n[s>>2]|0,A)}function Vc(s,A){s=s|0,A=A|0,Gl(n[s>>2]|0,A)}function OF(s,A){s=s|0,A=A|0,Hc(n[s>>2]|0,A)}function UF(s,A){s=s|0,A=A|0,Kc(n[s>>2]|0,A)}function Wg(s,A){s=s|0,A=A|0,WA(n[s>>2]|0,A)}function KF(s,A){s=s|0,A=A|0,_c(n[s>>2]|0,A)}function nv(s,A,l){s=s|0,A=A|0,l=+l,ko(n[s>>2]|0,A,y(l))}function gf(s,A,l){s=s|0,A=A|0,l=+l,J(n[s>>2]|0,A,y(l))}function _F(s,A){s=s|0,A=A|0,ba(n[s>>2]|0,A)}function HF(s,A){s=s|0,A=A|0,Lg(n[s>>2]|0,A)}function iv(s,A){s=s|0,A=A|0,tf(n[s>>2]|0,A)}function OI(s,A){s=s|0,A=+A,qc(n[s>>2]|0,y(A))}function UI(s,A){s=s|0,A=+A,Pa(n[s>>2]|0,y(A))}function qF(s,A){s=s|0,A=+A,es(n[s>>2]|0,y(A))}function GF(s,A){s=s|0,A=+A,Ks(n[s>>2]|0,y(A))}function ZA(s,A){s=s|0,A=+A,jl(n[s>>2]|0,y(A))}function KI(s,A){s=s|0,A=+A,K(n[s>>2]|0,y(A))}function jF(s,A){s=s|0,A=+A,G(n[s>>2]|0,y(A))}function pf(s){s=s|0,se(n[s>>2]|0)}function hy(s,A){s=s|0,A=+A,xe(n[s>>2]|0,y(A))}function zc(s,A){s=s|0,A=+A,Je(n[s>>2]|0,y(A))}function _I(s){s=s|0,ut(n[s>>2]|0)}function HI(s,A){s=s|0,A=+A,Ar(n[s>>2]|0,y(A))}function YF(s,A){s=s|0,A=+A,er(n[s>>2]|0,y(A))}function sv(s,A){s=s|0,A=+A,Cr(n[s>>2]|0,y(A))}function hf(s,A){s=s|0,A=+A,or(n[s>>2]|0,y(A))}function ov(s,A){s=s|0,A=+A,ui(n[s>>2]|0,y(A))}function dy(s,A){s=s|0,A=+A,_s(n[s>>2]|0,y(A))}function av(s,A){s=s|0,A=+A,xo(n[s>>2]|0,y(A))}function Av(s,A){s=s|0,A=+A,rs(n[s>>2]|0,y(A))}function my(s,A){s=s|0,A=+A,ns(n[s>>2]|0,y(A))}function lv(s,A,l){s=s|0,A=A|0,l=+l,Ra(n[s>>2]|0,A,y(l))}function WF(s,A,l){s=s|0,A=A|0,l=+l,xi(n[s>>2]|0,A,y(l))}function D(s,A,l){s=s|0,A=A|0,l=+l,Fa(n[s>>2]|0,A,y(l))}function v(s){return s=s|0,Mg(n[s>>2]|0)|0}function T(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0;u=C,C=C+16|0,d=u,JA(d,n[A>>2]|0,l),j(s,d),C=u}function j(s,A){s=s|0,A=A|0,V(s,n[A+4>>2]|0,+y(p[A>>2]))}function V(s,A,l){s=s|0,A=A|0,l=+l,n[s>>2]=A,E[s+8>>3]=l}function he(s){return s=s|0,Ng(n[s>>2]|0)|0}function De(s){return s=s|0,so(n[s>>2]|0)|0}function vt(s){return s=s|0,YA(n[s>>2]|0)|0}function It(s){return s=s|0,jA(n[s>>2]|0)|0}function bt(s){return s=s|0,U0(n[s>>2]|0)|0}function zr(s){return s=s|0,Tg(n[s>>2]|0)|0}function Ps(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0;u=C,C=C+16|0,d=u,wt(d,n[A>>2]|0,l),j(s,d),C=u}function bi(s){return s=s|0,oi(n[s>>2]|0)|0}function Fo(s){return s=s|0,Og(n[s>>2]|0)|0}function df(s,A){s=s|0,A=A|0;var l=0,u=0;l=C,C=C+16|0,u=l,oa(u,n[A>>2]|0),j(s,u),C=l}function la(s){return s=s|0,+ +y(xa(n[s>>2]|0))}function at(s){return s=s|0,+ +y(O0(n[s>>2]|0))}function et(s,A){s=s|0,A=A|0;var l=0,u=0;l=C,C=C+16|0,u=l,ce(u,n[A>>2]|0),j(s,u),C=l}function ht(s,A){s=s|0,A=A|0;var l=0,u=0;l=C,C=C+16|0,u=l,Rt(u,n[A>>2]|0),j(s,u),C=l}function Wt(s,A){s=s|0,A=A|0;var l=0,u=0;l=C,C=C+16|0,u=l,st(u,n[A>>2]|0),j(s,u),C=l}function xr(s,A){s=s|0,A=A|0;var l=0,u=0;l=C,C=C+16|0,u=l,qr(u,n[A>>2]|0),j(s,u),C=l}function On(s,A){s=s|0,A=A|0;var l=0,u=0;l=C,C=C+16|0,u=l,ts(u,n[A>>2]|0),j(s,u),C=l}function Kr(s,A){s=s|0,A=A|0;var l=0,u=0;l=C,C=C+16|0,u=l,oo(u,n[A>>2]|0),j(s,u),C=l}function Un(s){return s=s|0,+ +y(Vn(n[s>>2]|0))}function Ei(s,A){return s=s|0,A=A|0,+ +y(F(n[s>>2]|0,A))}function un(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0;u=C,C=C+16|0,d=u,ct(d,n[A>>2]|0,l),j(s,d),C=u}function Ro(s,A,l){s=s|0,A=A|0,l=l|0,lA(n[s>>2]|0,n[A>>2]|0,l)}function JF(s,A){s=s|0,A=A|0,io(n[s>>2]|0,n[A>>2]|0)}function JQe(s){return s=s|0,vs(n[s>>2]|0)|0}function VQe(s){return s=s|0,s=Et(n[s>>2]|0)|0,s?s=MI(s)|0:s=0,s|0}function zQe(s,A){return s=s|0,A=A|0,s=ro(n[s>>2]|0,A)|0,s?s=MI(s)|0:s=0,s|0}function XQe(s,A){s=s|0,A=A|0;var l=0,u=0;u=Jt(4)|0,xj(u,A),l=s+4|0,A=n[l>>2]|0,n[l>>2]=u,A|0&&(uf(A),yt(A)),GA(n[s>>2]|0,1)}function xj(s,A){s=s|0,A=A|0,lve(s,A)}function ZQe(s,A,l,u,d,m){s=s|0,A=A|0,l=y(l),u=u|0,d=y(d),m=m|0;var w=0,P=0;w=C,C=C+16|0,P=w,$Qe(P,cA(A)|0,+l,u,+d,m),p[s>>2]=y(+E[P>>3]),p[s+4>>2]=y(+E[P+8>>3]),C=w}function $Qe(s,A,l,u,d,m){s=s|0,A=A|0,l=+l,u=u|0,d=+d,m=m|0;var w=0,P=0,b=0,O=0,L=0;w=C,C=C+32|0,L=w+8|0,O=w+20|0,b=w,P=w+16|0,E[L>>3]=l,n[O>>2]=u,E[b>>3]=d,n[P>>2]=m,eve(s,n[A+4>>2]|0,L,O,b,P),C=w}function eve(s,A,l,u,d,m){s=s|0,A=A|0,l=l|0,u=u|0,d=d|0,m=m|0;var w=0,P=0;w=C,C=C+16|0,P=w,dA(P),A=Oa(A)|0,tve(s,A,+E[l>>3],n[u>>2]|0,+E[d>>3],n[m>>2]|0),mA(P),C=w}function Oa(s){return s=s|0,n[s>>2]|0}function tve(s,A,l,u,d,m){s=s|0,A=A|0,l=+l,u=u|0,d=+d,m=m|0;var w=0;w=$A(rve()|0)|0,l=+mf(l),u=VF(u)|0,d=+mf(d),nve(s,mi(0,w|0,A|0,+l,u|0,+d,VF(m)|0)|0)}function rve(){var s=0;return o[7608]|0||(ave(9120),s=7608,n[s>>2]=1,n[s+4>>2]=0),9120}function $A(s){return s=s|0,n[s+8>>2]|0}function mf(s){return s=+s,+ +zF(s)}function VF(s){return s=s|0,bj(s)|0}function nve(s,A){s=s|0,A=A|0;var l=0,u=0,d=0;d=C,C=C+32|0,l=d,u=A,u&1?(ive(l,0),Pn(u|0,l|0)|0,sve(s,l),ove(l)):(n[s>>2]=n[A>>2],n[s+4>>2]=n[A+4>>2],n[s+8>>2]=n[A+8>>2],n[s+12>>2]=n[A+12>>2]),C=d}function ive(s,A){s=s|0,A=A|0,Pj(s,A),n[s+8>>2]=0,o[s+24>>0]=0}function sve(s,A){s=s|0,A=A|0,A=A+8|0,n[s>>2]=n[A>>2],n[s+4>>2]=n[A+4>>2],n[s+8>>2]=n[A+8>>2],n[s+12>>2]=n[A+12>>2]}function ove(s){s=s|0,o[s+24>>0]=0}function Pj(s,A){s=s|0,A=A|0,n[s>>2]=A}function bj(s){return s=s|0,s|0}function zF(s){return s=+s,+s}function ave(s){s=s|0,el(s,Ave()|0,4)}function Ave(){return 1064}function el(s,A,l){s=s|0,A=A|0,l=l|0,n[s>>2]=A,n[s+4>>2]=l,n[s+8>>2]=ef(A|0,l+1|0)|0}function lve(s,A){s=s|0,A=A|0,A=n[A>>2]|0,n[s>>2]=A,Xe(A|0)}function cve(s){s=s|0;var A=0,l=0;l=s+4|0,A=n[l>>2]|0,n[l>>2]=0,A|0&&(uf(A),yt(A)),GA(n[s>>2]|0,0)}function uve(s){s=s|0,Yt(n[s>>2]|0)}function fve(s){return s=s|0,Rr(n[s>>2]|0)|0}function gve(s,A,l,u){s=s|0,A=+A,l=+l,u=u|0,Wl(n[s>>2]|0,y(A),y(l),u)}function pve(s){return s=s|0,+ +y(VA(n[s>>2]|0))}function hve(s){return s=s|0,+ +y(K0(n[s>>2]|0))}function dve(s){return s=s|0,+ +y(Gc(n[s>>2]|0))}function mve(s){return s=s|0,+ +y(rf(n[s>>2]|0))}function yve(s){return s=s|0,+ +y(Ug(n[s>>2]|0))}function Cve(s){return s=s|0,+ +y(uA(n[s>>2]|0))}function Eve(s,A){s=s|0,A=A|0,E[s>>3]=+y(VA(n[A>>2]|0)),E[s+8>>3]=+y(K0(n[A>>2]|0)),E[s+16>>3]=+y(Gc(n[A>>2]|0)),E[s+24>>3]=+y(rf(n[A>>2]|0)),E[s+32>>3]=+y(Ug(n[A>>2]|0)),E[s+40>>3]=+y(uA(n[A>>2]|0))}function Ive(s,A){return s=s|0,A=A|0,+ +y(_0(n[s>>2]|0,A))}function wve(s,A){return s=s|0,A=A|0,+ +y(Kg(n[s>>2]|0,A))}function Bve(s,A){return s=s|0,A=A|0,+ +y(aa(n[s>>2]|0,A))}function Qve(){return si()|0}function vve(){Dve(),Sve(),kve(),xve(),Pve(),bve()}function Dve(){PMe(11713,4938,1)}function Sve(){VNe(10448)}function kve(){PNe(10408)}function xve(){$Te(10324)}function Pve(){aRe(10096)}function bve(){Fve(9132)}function Fve(s){s=s|0;var A=0,l=0,u=0,d=0,m=0,w=0,P=0,b=0,O=0,L=0,W=0,ue=0,ze=0,_e=0,Me=0,ot=0,nt=0,ft=0,Ge=0,Ve=0,Kt=0,Jr=0,pr=0,$t=0,Nr=0,jr=0,cr=0,Kn=0,To=0,No=0,Mo=0,Ka=0,rp=0,np=0,tl=0,ip=0,eu=0,tu=0,sp=0,op=0,ap=0,ln=0,rl=0,Ap=0,Zl=0,lp=0,cp=0,ru=0,nu=0,$l=0,Ao=0,CA=0,ca=0,nl=0,vf=0,Df=0,iu=0,Sf=0,kf=0,lo=0,js=0,il=0,Gn=0,xf=0,Lo=0,ec=0,Oo=0,tc=0,Pf=0,bf=0,rc=0,co=0,sl=0,Ff=0,Rf=0,Tf=0,Lr=0,ai=0,Ys=0,Uo=0,uo=0,_r=0,yr=0,ol=0;A=C,C=C+672|0,l=A+656|0,ol=A+648|0,yr=A+640|0,_r=A+632|0,uo=A+624|0,Uo=A+616|0,Ys=A+608|0,ai=A+600|0,Lr=A+592|0,Tf=A+584|0,Rf=A+576|0,Ff=A+568|0,sl=A+560|0,co=A+552|0,rc=A+544|0,bf=A+536|0,Pf=A+528|0,tc=A+520|0,Oo=A+512|0,ec=A+504|0,Lo=A+496|0,xf=A+488|0,Gn=A+480|0,il=A+472|0,js=A+464|0,lo=A+456|0,kf=A+448|0,Sf=A+440|0,iu=A+432|0,Df=A+424|0,vf=A+416|0,nl=A+408|0,ca=A+400|0,CA=A+392|0,Ao=A+384|0,$l=A+376|0,nu=A+368|0,ru=A+360|0,cp=A+352|0,lp=A+344|0,Zl=A+336|0,Ap=A+328|0,rl=A+320|0,ln=A+312|0,ap=A+304|0,op=A+296|0,sp=A+288|0,tu=A+280|0,eu=A+272|0,ip=A+264|0,tl=A+256|0,np=A+248|0,rp=A+240|0,Ka=A+232|0,Mo=A+224|0,No=A+216|0,To=A+208|0,Kn=A+200|0,cr=A+192|0,jr=A+184|0,Nr=A+176|0,$t=A+168|0,pr=A+160|0,Jr=A+152|0,Kt=A+144|0,Ve=A+136|0,Ge=A+128|0,ft=A+120|0,nt=A+112|0,ot=A+104|0,Me=A+96|0,_e=A+88|0,ze=A+80|0,ue=A+72|0,W=A+64|0,L=A+56|0,O=A+48|0,b=A+40|0,P=A+32|0,w=A+24|0,m=A+16|0,d=A+8|0,u=A,Rve(s,3646),Tve(s,3651,2)|0,Nve(s,3665,2)|0,Mve(s,3682,18)|0,n[ol>>2]=19,n[ol+4>>2]=0,n[l>>2]=n[ol>>2],n[l+4>>2]=n[ol+4>>2],qI(s,3690,l)|0,n[yr>>2]=1,n[yr+4>>2]=0,n[l>>2]=n[yr>>2],n[l+4>>2]=n[yr+4>>2],Lve(s,3696,l)|0,n[_r>>2]=2,n[_r+4>>2]=0,n[l>>2]=n[_r>>2],n[l+4>>2]=n[_r+4>>2],Xc(s,3706,l)|0,n[uo>>2]=1,n[uo+4>>2]=0,n[l>>2]=n[uo>>2],n[l+4>>2]=n[uo+4>>2],z0(s,3722,l)|0,n[Uo>>2]=2,n[Uo+4>>2]=0,n[l>>2]=n[Uo>>2],n[l+4>>2]=n[Uo+4>>2],z0(s,3734,l)|0,n[Ys>>2]=3,n[Ys+4>>2]=0,n[l>>2]=n[Ys>>2],n[l+4>>2]=n[Ys+4>>2],Xc(s,3753,l)|0,n[ai>>2]=4,n[ai+4>>2]=0,n[l>>2]=n[ai>>2],n[l+4>>2]=n[ai+4>>2],Xc(s,3769,l)|0,n[Lr>>2]=5,n[Lr+4>>2]=0,n[l>>2]=n[Lr>>2],n[l+4>>2]=n[Lr+4>>2],Xc(s,3783,l)|0,n[Tf>>2]=6,n[Tf+4>>2]=0,n[l>>2]=n[Tf>>2],n[l+4>>2]=n[Tf+4>>2],Xc(s,3796,l)|0,n[Rf>>2]=7,n[Rf+4>>2]=0,n[l>>2]=n[Rf>>2],n[l+4>>2]=n[Rf+4>>2],Xc(s,3813,l)|0,n[Ff>>2]=8,n[Ff+4>>2]=0,n[l>>2]=n[Ff>>2],n[l+4>>2]=n[Ff+4>>2],Xc(s,3825,l)|0,n[sl>>2]=3,n[sl+4>>2]=0,n[l>>2]=n[sl>>2],n[l+4>>2]=n[sl+4>>2],z0(s,3843,l)|0,n[co>>2]=4,n[co+4>>2]=0,n[l>>2]=n[co>>2],n[l+4>>2]=n[co+4>>2],z0(s,3853,l)|0,n[rc>>2]=9,n[rc+4>>2]=0,n[l>>2]=n[rc>>2],n[l+4>>2]=n[rc+4>>2],Xc(s,3870,l)|0,n[bf>>2]=10,n[bf+4>>2]=0,n[l>>2]=n[bf>>2],n[l+4>>2]=n[bf+4>>2],Xc(s,3884,l)|0,n[Pf>>2]=11,n[Pf+4>>2]=0,n[l>>2]=n[Pf>>2],n[l+4>>2]=n[Pf+4>>2],Xc(s,3896,l)|0,n[tc>>2]=1,n[tc+4>>2]=0,n[l>>2]=n[tc>>2],n[l+4>>2]=n[tc+4>>2],qs(s,3907,l)|0,n[Oo>>2]=2,n[Oo+4>>2]=0,n[l>>2]=n[Oo>>2],n[l+4>>2]=n[Oo+4>>2],qs(s,3915,l)|0,n[ec>>2]=3,n[ec+4>>2]=0,n[l>>2]=n[ec>>2],n[l+4>>2]=n[ec+4>>2],qs(s,3928,l)|0,n[Lo>>2]=4,n[Lo+4>>2]=0,n[l>>2]=n[Lo>>2],n[l+4>>2]=n[Lo+4>>2],qs(s,3948,l)|0,n[xf>>2]=5,n[xf+4>>2]=0,n[l>>2]=n[xf>>2],n[l+4>>2]=n[xf+4>>2],qs(s,3960,l)|0,n[Gn>>2]=6,n[Gn+4>>2]=0,n[l>>2]=n[Gn>>2],n[l+4>>2]=n[Gn+4>>2],qs(s,3974,l)|0,n[il>>2]=7,n[il+4>>2]=0,n[l>>2]=n[il>>2],n[l+4>>2]=n[il+4>>2],qs(s,3983,l)|0,n[js>>2]=20,n[js+4>>2]=0,n[l>>2]=n[js>>2],n[l+4>>2]=n[js+4>>2],qI(s,3999,l)|0,n[lo>>2]=8,n[lo+4>>2]=0,n[l>>2]=n[lo>>2],n[l+4>>2]=n[lo+4>>2],qs(s,4012,l)|0,n[kf>>2]=9,n[kf+4>>2]=0,n[l>>2]=n[kf>>2],n[l+4>>2]=n[kf+4>>2],qs(s,4022,l)|0,n[Sf>>2]=21,n[Sf+4>>2]=0,n[l>>2]=n[Sf>>2],n[l+4>>2]=n[Sf+4>>2],qI(s,4039,l)|0,n[iu>>2]=10,n[iu+4>>2]=0,n[l>>2]=n[iu>>2],n[l+4>>2]=n[iu+4>>2],qs(s,4053,l)|0,n[Df>>2]=11,n[Df+4>>2]=0,n[l>>2]=n[Df>>2],n[l+4>>2]=n[Df+4>>2],qs(s,4065,l)|0,n[vf>>2]=12,n[vf+4>>2]=0,n[l>>2]=n[vf>>2],n[l+4>>2]=n[vf+4>>2],qs(s,4084,l)|0,n[nl>>2]=13,n[nl+4>>2]=0,n[l>>2]=n[nl>>2],n[l+4>>2]=n[nl+4>>2],qs(s,4097,l)|0,n[ca>>2]=14,n[ca+4>>2]=0,n[l>>2]=n[ca>>2],n[l+4>>2]=n[ca+4>>2],qs(s,4117,l)|0,n[CA>>2]=15,n[CA+4>>2]=0,n[l>>2]=n[CA>>2],n[l+4>>2]=n[CA+4>>2],qs(s,4129,l)|0,n[Ao>>2]=16,n[Ao+4>>2]=0,n[l>>2]=n[Ao>>2],n[l+4>>2]=n[Ao+4>>2],qs(s,4148,l)|0,n[$l>>2]=17,n[$l+4>>2]=0,n[l>>2]=n[$l>>2],n[l+4>>2]=n[$l+4>>2],qs(s,4161,l)|0,n[nu>>2]=18,n[nu+4>>2]=0,n[l>>2]=n[nu>>2],n[l+4>>2]=n[nu+4>>2],qs(s,4181,l)|0,n[ru>>2]=5,n[ru+4>>2]=0,n[l>>2]=n[ru>>2],n[l+4>>2]=n[ru+4>>2],z0(s,4196,l)|0,n[cp>>2]=6,n[cp+4>>2]=0,n[l>>2]=n[cp>>2],n[l+4>>2]=n[cp+4>>2],z0(s,4206,l)|0,n[lp>>2]=7,n[lp+4>>2]=0,n[l>>2]=n[lp>>2],n[l+4>>2]=n[lp+4>>2],z0(s,4217,l)|0,n[Zl>>2]=3,n[Zl+4>>2]=0,n[l>>2]=n[Zl>>2],n[l+4>>2]=n[Zl+4>>2],yf(s,4235,l)|0,n[Ap>>2]=1,n[Ap+4>>2]=0,n[l>>2]=n[Ap>>2],n[l+4>>2]=n[Ap+4>>2],XF(s,4251,l)|0,n[rl>>2]=4,n[rl+4>>2]=0,n[l>>2]=n[rl>>2],n[l+4>>2]=n[rl+4>>2],yf(s,4263,l)|0,n[ln>>2]=5,n[ln+4>>2]=0,n[l>>2]=n[ln>>2],n[l+4>>2]=n[ln+4>>2],yf(s,4279,l)|0,n[ap>>2]=6,n[ap+4>>2]=0,n[l>>2]=n[ap>>2],n[l+4>>2]=n[ap+4>>2],yf(s,4293,l)|0,n[op>>2]=7,n[op+4>>2]=0,n[l>>2]=n[op>>2],n[l+4>>2]=n[op+4>>2],yf(s,4306,l)|0,n[sp>>2]=8,n[sp+4>>2]=0,n[l>>2]=n[sp>>2],n[l+4>>2]=n[sp+4>>2],yf(s,4323,l)|0,n[tu>>2]=9,n[tu+4>>2]=0,n[l>>2]=n[tu>>2],n[l+4>>2]=n[tu+4>>2],yf(s,4335,l)|0,n[eu>>2]=2,n[eu+4>>2]=0,n[l>>2]=n[eu>>2],n[l+4>>2]=n[eu+4>>2],XF(s,4353,l)|0,n[ip>>2]=12,n[ip+4>>2]=0,n[l>>2]=n[ip>>2],n[l+4>>2]=n[ip+4>>2],X0(s,4363,l)|0,n[tl>>2]=1,n[tl+4>>2]=0,n[l>>2]=n[tl>>2],n[l+4>>2]=n[tl+4>>2],Cf(s,4376,l)|0,n[np>>2]=2,n[np+4>>2]=0,n[l>>2]=n[np>>2],n[l+4>>2]=n[np+4>>2],Cf(s,4388,l)|0,n[rp>>2]=13,n[rp+4>>2]=0,n[l>>2]=n[rp>>2],n[l+4>>2]=n[rp+4>>2],X0(s,4402,l)|0,n[Ka>>2]=14,n[Ka+4>>2]=0,n[l>>2]=n[Ka>>2],n[l+4>>2]=n[Ka+4>>2],X0(s,4411,l)|0,n[Mo>>2]=15,n[Mo+4>>2]=0,n[l>>2]=n[Mo>>2],n[l+4>>2]=n[Mo+4>>2],X0(s,4421,l)|0,n[No>>2]=16,n[No+4>>2]=0,n[l>>2]=n[No>>2],n[l+4>>2]=n[No+4>>2],X0(s,4433,l)|0,n[To>>2]=17,n[To+4>>2]=0,n[l>>2]=n[To>>2],n[l+4>>2]=n[To+4>>2],X0(s,4446,l)|0,n[Kn>>2]=18,n[Kn+4>>2]=0,n[l>>2]=n[Kn>>2],n[l+4>>2]=n[Kn+4>>2],X0(s,4458,l)|0,n[cr>>2]=3,n[cr+4>>2]=0,n[l>>2]=n[cr>>2],n[l+4>>2]=n[cr+4>>2],Cf(s,4471,l)|0,n[jr>>2]=1,n[jr+4>>2]=0,n[l>>2]=n[jr>>2],n[l+4>>2]=n[jr+4>>2],cv(s,4486,l)|0,n[Nr>>2]=10,n[Nr+4>>2]=0,n[l>>2]=n[Nr>>2],n[l+4>>2]=n[Nr+4>>2],yf(s,4496,l)|0,n[$t>>2]=11,n[$t+4>>2]=0,n[l>>2]=n[$t>>2],n[l+4>>2]=n[$t+4>>2],yf(s,4508,l)|0,n[pr>>2]=3,n[pr+4>>2]=0,n[l>>2]=n[pr>>2],n[l+4>>2]=n[pr+4>>2],XF(s,4519,l)|0,n[Jr>>2]=4,n[Jr+4>>2]=0,n[l>>2]=n[Jr>>2],n[l+4>>2]=n[Jr+4>>2],Ove(s,4530,l)|0,n[Kt>>2]=19,n[Kt+4>>2]=0,n[l>>2]=n[Kt>>2],n[l+4>>2]=n[Kt+4>>2],Uve(s,4542,l)|0,n[Ve>>2]=12,n[Ve+4>>2]=0,n[l>>2]=n[Ve>>2],n[l+4>>2]=n[Ve+4>>2],Kve(s,4554,l)|0,n[Ge>>2]=13,n[Ge+4>>2]=0,n[l>>2]=n[Ge>>2],n[l+4>>2]=n[Ge+4>>2],_ve(s,4568,l)|0,n[ft>>2]=2,n[ft+4>>2]=0,n[l>>2]=n[ft>>2],n[l+4>>2]=n[ft+4>>2],Hve(s,4578,l)|0,n[nt>>2]=20,n[nt+4>>2]=0,n[l>>2]=n[nt>>2],n[l+4>>2]=n[nt+4>>2],qve(s,4587,l)|0,n[ot>>2]=22,n[ot+4>>2]=0,n[l>>2]=n[ot>>2],n[l+4>>2]=n[ot+4>>2],qI(s,4602,l)|0,n[Me>>2]=23,n[Me+4>>2]=0,n[l>>2]=n[Me>>2],n[l+4>>2]=n[Me+4>>2],qI(s,4619,l)|0,n[_e>>2]=14,n[_e+4>>2]=0,n[l>>2]=n[_e>>2],n[l+4>>2]=n[_e+4>>2],Gve(s,4629,l)|0,n[ze>>2]=1,n[ze+4>>2]=0,n[l>>2]=n[ze>>2],n[l+4>>2]=n[ze+4>>2],jve(s,4637,l)|0,n[ue>>2]=4,n[ue+4>>2]=0,n[l>>2]=n[ue>>2],n[l+4>>2]=n[ue+4>>2],Cf(s,4653,l)|0,n[W>>2]=5,n[W+4>>2]=0,n[l>>2]=n[W>>2],n[l+4>>2]=n[W+4>>2],Cf(s,4669,l)|0,n[L>>2]=6,n[L+4>>2]=0,n[l>>2]=n[L>>2],n[l+4>>2]=n[L+4>>2],Cf(s,4686,l)|0,n[O>>2]=7,n[O+4>>2]=0,n[l>>2]=n[O>>2],n[l+4>>2]=n[O+4>>2],Cf(s,4701,l)|0,n[b>>2]=8,n[b+4>>2]=0,n[l>>2]=n[b>>2],n[l+4>>2]=n[b+4>>2],Cf(s,4719,l)|0,n[P>>2]=9,n[P+4>>2]=0,n[l>>2]=n[P>>2],n[l+4>>2]=n[P+4>>2],Cf(s,4736,l)|0,n[w>>2]=21,n[w+4>>2]=0,n[l>>2]=n[w>>2],n[l+4>>2]=n[w+4>>2],Yve(s,4754,l)|0,n[m>>2]=2,n[m+4>>2]=0,n[l>>2]=n[m>>2],n[l+4>>2]=n[m+4>>2],cv(s,4772,l)|0,n[d>>2]=3,n[d+4>>2]=0,n[l>>2]=n[d>>2],n[l+4>>2]=n[d+4>>2],cv(s,4790,l)|0,n[u>>2]=4,n[u+4>>2]=0,n[l>>2]=n[u>>2],n[l+4>>2]=n[u+4>>2],cv(s,4808,l)|0,C=A}function Rve(s,A){s=s|0,A=A|0;var l=0;l=ZFe()|0,n[s>>2]=l,$Fe(l,A),$g(n[s>>2]|0)}function Tve(s,A,l){return s=s|0,A=A|0,l=l|0,OFe(s,Dn(A)|0,l,0),s|0}function Nve(s,A,l){return s=s|0,A=A|0,l=l|0,wFe(s,Dn(A)|0,l,0),s|0}function Mve(s,A,l){return s=s|0,A=A|0,l=l|0,AFe(s,Dn(A)|0,l,0),s|0}function qI(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0,w=0;return u=C,C=C+16|0,d=u+8|0,m=u,w=n[l+4>>2]|0,n[m>>2]=n[l>>2],n[m+4>>2]=w,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],Ybe(s,A,d),C=u,s|0}function Lve(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0,w=0;return u=C,C=C+16|0,d=u+8|0,m=u,w=n[l+4>>2]|0,n[m>>2]=n[l>>2],n[m+4>>2]=w,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],Sbe(s,A,d),C=u,s|0}function Xc(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0,w=0;return u=C,C=C+16|0,d=u+8|0,m=u,w=n[l+4>>2]|0,n[m>>2]=n[l>>2],n[m+4>>2]=w,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],ube(s,A,d),C=u,s|0}function z0(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0,w=0;return u=C,C=C+16|0,d=u+8|0,m=u,w=n[l+4>>2]|0,n[m>>2]=n[l>>2],n[m+4>>2]=w,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],VPe(s,A,d),C=u,s|0}function qs(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0,w=0;return u=C,C=C+16|0,d=u+8|0,m=u,w=n[l+4>>2]|0,n[m>>2]=n[l>>2],n[m+4>>2]=w,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],RPe(s,A,d),C=u,s|0}function yf(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0,w=0;return u=C,C=C+16|0,d=u+8|0,m=u,w=n[l+4>>2]|0,n[m>>2]=n[l>>2],n[m+4>>2]=w,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],mPe(s,A,d),C=u,s|0}function XF(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0,w=0;return u=C,C=C+16|0,d=u+8|0,m=u,w=n[l+4>>2]|0,n[m>>2]=n[l>>2],n[m+4>>2]=w,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],tPe(s,A,d),C=u,s|0}function X0(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0,w=0;return u=C,C=C+16|0,d=u+8|0,m=u,w=n[l+4>>2]|0,n[m>>2]=n[l>>2],n[m+4>>2]=w,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],Sxe(s,A,d),C=u,s|0}function Cf(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0,w=0;return u=C,C=C+16|0,d=u+8|0,m=u,w=n[l+4>>2]|0,n[m>>2]=n[l>>2],n[m+4>>2]=w,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],uxe(s,A,d),C=u,s|0}function cv(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0,w=0;return u=C,C=C+16|0,d=u+8|0,m=u,w=n[l+4>>2]|0,n[m>>2]=n[l>>2],n[m+4>>2]=w,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],Vke(s,A,d),C=u,s|0}function Ove(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0,w=0;return u=C,C=C+16|0,d=u+8|0,m=u,w=n[l+4>>2]|0,n[m>>2]=n[l>>2],n[m+4>>2]=w,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],Rke(s,A,d),C=u,s|0}function Uve(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0,w=0;return u=C,C=C+16|0,d=u+8|0,m=u,w=n[l+4>>2]|0,n[m>>2]=n[l>>2],n[m+4>>2]=w,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],mke(s,A,d),C=u,s|0}function Kve(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0,w=0;return u=C,C=C+16|0,d=u+8|0,m=u,w=n[l+4>>2]|0,n[m>>2]=n[l>>2],n[m+4>>2]=w,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],rke(s,A,d),C=u,s|0}function _ve(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0,w=0;return u=C,C=C+16|0,d=u+8|0,m=u,w=n[l+4>>2]|0,n[m>>2]=n[l>>2],n[m+4>>2]=w,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],_Se(s,A,d),C=u,s|0}function Hve(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0,w=0;return u=C,C=C+16|0,d=u+8|0,m=u,w=n[l+4>>2]|0,n[m>>2]=n[l>>2],n[m+4>>2]=w,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],QSe(s,A,d),C=u,s|0}function qve(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0,w=0;return u=C,C=C+16|0,d=u+8|0,m=u,w=n[l+4>>2]|0,n[m>>2]=n[l>>2],n[m+4>>2]=w,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],aSe(s,A,d),C=u,s|0}function Gve(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0,w=0;return u=C,C=C+16|0,d=u+8|0,m=u,w=n[l+4>>2]|0,n[m>>2]=n[l>>2],n[m+4>>2]=w,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],jDe(s,A,d),C=u,s|0}function jve(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0,w=0;return u=C,C=C+16|0,d=u+8|0,m=u,w=n[l+4>>2]|0,n[m>>2]=n[l>>2],n[m+4>>2]=w,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],SDe(s,A,d),C=u,s|0}function Yve(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0,w=0;return u=C,C=C+16|0,d=u+8|0,m=u,w=n[l+4>>2]|0,n[m>>2]=n[l>>2],n[m+4>>2]=w,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],Wve(s,A,d),C=u,s|0}function Wve(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0,w=0,P=0;u=C,C=C+16|0,d=u+8|0,m=u,P=n[l>>2]|0,w=n[l+4>>2]|0,l=Dn(A)|0,n[m>>2]=P,n[m+4>>2]=w,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],Jve(s,l,d,1),C=u}function Dn(s){return s=s|0,s|0}function Jve(s,A,l,u){s=s|0,A=A|0,l=l|0,u=u|0;var d=0,m=0,w=0,P=0,b=0,O=0,L=0;d=C,C=C+32|0,m=d+16|0,L=d+8|0,P=d,O=n[l>>2]|0,b=n[l+4>>2]|0,w=n[s>>2]|0,s=ZF()|0,n[L>>2]=O,n[L+4>>2]=b,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],l=Vve(m)|0,n[P>>2]=O,n[P+4>>2]=b,n[m>>2]=n[P>>2],n[m+4>>2]=n[P+4>>2],Sn(w,A,s,l,zve(m,u)|0,u),C=d}function ZF(){var s=0,A=0;if(o[7616]|0||(Tj(9136),Dt(24,9136,H|0)|0,A=7616,n[A>>2]=1,n[A+4>>2]=0),!(Gr(9136)|0)){s=9136,A=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(A|0));Tj(9136)}return 9136}function Vve(s){return s=s|0,0}function zve(s,A){s=s|0,A=A|0;var l=0,u=0,d=0,m=0,w=0,P=0,b=0,O=0,L=0,W=0;return L=C,C=C+32|0,d=L+24|0,w=L+16|0,P=L,b=L+8|0,m=n[s>>2]|0,u=n[s+4>>2]|0,n[P>>2]=m,n[P+4>>2]=u,W=ZF()|0,O=W+24|0,s=wr(A,4)|0,n[b>>2]=s,A=W+28|0,l=n[A>>2]|0,l>>>0<(n[W+32>>2]|0)>>>0?(n[w>>2]=m,n[w+4>>2]=u,n[d>>2]=n[w>>2],n[d+4>>2]=n[w+4>>2],Rj(l,d,s),s=(n[A>>2]|0)+12|0,n[A>>2]=s):($ve(O,P,b),s=n[A>>2]|0),C=L,((s-(n[O>>2]|0)|0)/12|0)+-1|0}function Sn(s,A,l,u,d,m){s=s|0,A=A|0,l=l|0,u=u|0,d=d|0,m=m|0;var w=0,P=0,b=0,O=0,L=0,W=0,ue=0,ze=0;w=C,C=C+32|0,ue=w+24|0,W=w+20|0,b=w+16|0,L=w+12|0,O=w+8|0,P=w+4|0,ze=w,n[W>>2]=A,n[b>>2]=l,n[L>>2]=u,n[O>>2]=d,n[P>>2]=m,m=s+28|0,n[ze>>2]=n[m>>2],n[ue>>2]=n[ze>>2],Xve(s+24|0,ue,W,L,O,b,P)|0,n[m>>2]=n[n[m>>2]>>2],C=w}function Xve(s,A,l,u,d,m,w){return s=s|0,A=A|0,l=l|0,u=u|0,d=d|0,m=m|0,w=w|0,s=Zve(A)|0,A=Jt(24)|0,Fj(A+4|0,n[l>>2]|0,n[u>>2]|0,n[d>>2]|0,n[m>>2]|0,n[w>>2]|0),n[A>>2]=n[s>>2],n[s>>2]=A,A|0}function Zve(s){return s=s|0,n[s>>2]|0}function Fj(s,A,l,u,d,m){s=s|0,A=A|0,l=l|0,u=u|0,d=d|0,m=m|0,n[s>>2]=A,n[s+4>>2]=l,n[s+8>>2]=u,n[s+12>>2]=d,n[s+16>>2]=m}function wr(s,A){return s=s|0,A=A|0,A|s|0}function Rj(s,A,l){s=s|0,A=A|0,l=l|0;var u=0;u=n[A+4>>2]|0,n[s>>2]=n[A>>2],n[s+4>>2]=u,n[s+8>>2]=l}function $ve(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0,w=0,P=0,b=0,O=0,L=0,W=0,ue=0;if(O=C,C=C+48|0,u=O+32|0,w=O+24|0,P=O,b=s+4|0,d=(((n[b>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=eDe(s)|0,m>>>0>>0)An(s);else{L=n[s>>2]|0,ue=((n[s+8>>2]|0)-L|0)/12|0,W=ue<<1,tDe(P,ue>>>0>>1>>>0?W>>>0>>0?d:W:m,((n[b>>2]|0)-L|0)/12|0,s+8|0),b=P+8|0,m=n[b>>2]|0,d=n[A+4>>2]|0,l=n[l>>2]|0,n[w>>2]=n[A>>2],n[w+4>>2]=d,n[u>>2]=n[w>>2],n[u+4>>2]=n[w+4>>2],Rj(m,u,l),n[b>>2]=(n[b>>2]|0)+12,rDe(s,P),nDe(P),C=O;return}}function eDe(s){return s=s|0,357913941}function tDe(s,A,l,u){s=s|0,A=A|0,l=l|0,u=u|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=u;do if(A)if(A>>>0>357913941)Ot();else{d=Jt(A*12|0)|0;break}else d=0;while(0);n[s>>2]=d,u=d+(l*12|0)|0,n[s+8>>2]=u,n[s+4>>2]=u,n[s+12>>2]=d+(A*12|0)}function rDe(s,A){s=s|0,A=A|0;var l=0,u=0,d=0,m=0,w=0;u=n[s>>2]|0,w=s+4|0,m=A+4|0,d=(n[w>>2]|0)-u|0,l=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=l,(d|0)>0?(Tr(l|0,u|0,d|0)|0,u=m,l=n[m>>2]|0):u=m,m=n[s>>2]|0,n[s>>2]=l,n[u>>2]=m,m=A+8|0,d=n[w>>2]|0,n[w>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,w=A+12|0,s=n[m>>2]|0,n[m>>2]=n[w>>2],n[w>>2]=s,n[A>>2]=n[u>>2]}function nDe(s){s=s|0;var A=0,l=0,u=0;A=n[s+4>>2]|0,l=s+8|0,u=n[l>>2]|0,(u|0)!=(A|0)&&(n[l>>2]=u+(~(((u+-12-A|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&yt(s)}function Tj(s){s=s|0,oDe(s)}function iDe(s){s=s|0,sDe(s+24|0)}function Gr(s){return s=s|0,n[s>>2]|0}function sDe(s){s=s|0;var A=0,l=0,u=0;l=n[s>>2]|0,u=l,l|0&&(s=s+4|0,A=n[s>>2]|0,(A|0)!=(l|0)&&(n[s>>2]=A+(~(((A+-12-u|0)>>>0)/12|0)*12|0)),yt(l))}function oDe(s){s=s|0;var A=0;A=nn()|0,sn(s,2,3,A,aDe()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function nn(){return 9228}function aDe(){return 1140}function ADe(s,A){s=s|0,A=A|0;var l=0,u=0,d=0,m=0;return l=C,C=C+16|0,u=l+8|0,d=l,m=lDe(s)|0,s=n[m+4>>2]|0,n[d>>2]=n[m>>2],n[d+4>>2]=s,n[u>>2]=n[d>>2],n[u+4>>2]=n[d+4>>2],A=cDe(A,u)|0,C=l,A|0}function sn(s,A,l,u,d,m){s=s|0,A=A|0,l=l|0,u=u|0,d=d|0,m=m|0,n[s>>2]=A,n[s+4>>2]=l,n[s+8>>2]=u,n[s+12>>2]=d,n[s+16>>2]=m}function lDe(s){return s=s|0,(n[(ZF()|0)+24>>2]|0)+(s*12|0)|0}function cDe(s,A){s=s|0,A=A|0;var l=0,u=0,d=0;return d=C,C=C+48|0,u=d,l=n[A>>2]|0,A=n[A+4>>2]|0,s=s+(A>>1)|0,A&1&&(l=n[(n[s>>2]|0)+l>>2]|0),Qf[l&31](u,s),u=uDe(u)|0,C=d,u|0}function uDe(s){s=s|0;var A=0,l=0,u=0,d=0;return d=C,C=C+32|0,A=d+12|0,l=d,u=$F(Nj()|0)|0,u?(eR(A,u),tR(l,A),fDe(s,l),s=rR(A)|0):s=gDe(s)|0,C=d,s|0}function Nj(){var s=0;return o[7632]|0||(BDe(9184),Dt(25,9184,H|0)|0,s=7632,n[s>>2]=1,n[s+4>>2]=0),9184}function $F(s){return s=s|0,n[s+36>>2]|0}function eR(s,A){s=s|0,A=A|0,n[s>>2]=A,n[s+4>>2]=s,n[s+8>>2]=0}function tR(s,A){s=s|0,A=A|0,n[s>>2]=n[A>>2],n[s+4>>2]=n[A+4>>2],n[s+8>>2]=0}function fDe(s,A){s=s|0,A=A|0,mDe(A,s,s+8|0,s+16|0,s+24|0,s+32|0,s+40|0)|0}function rR(s){return s=s|0,n[(n[s+4>>2]|0)+8>>2]|0}function gDe(s){s=s|0;var A=0,l=0,u=0,d=0,m=0,w=0,P=0,b=0;b=C,C=C+16|0,l=b+4|0,u=b,d=hA(8)|0,m=d,w=Jt(48)|0,P=w,A=P+48|0;do n[P>>2]=n[s>>2],P=P+4|0,s=s+4|0;while((P|0)<(A|0));return A=m+4|0,n[A>>2]=w,P=Jt(8)|0,w=n[A>>2]|0,n[u>>2]=0,n[l>>2]=n[u>>2],Mj(P,w,l),n[d>>2]=P,C=b,m|0}function Mj(s,A,l){s=s|0,A=A|0,l=l|0,n[s>>2]=A,l=Jt(16)|0,n[l+4>>2]=0,n[l+8>>2]=0,n[l>>2]=1092,n[l+12>>2]=A,n[s+4>>2]=l}function pDe(s){s=s|0,By(s),yt(s)}function hDe(s){s=s|0,s=n[s+12>>2]|0,s|0&&yt(s)}function dDe(s){s=s|0,yt(s)}function mDe(s,A,l,u,d,m,w){return s=s|0,A=A|0,l=l|0,u=u|0,d=d|0,m=m|0,w=w|0,m=yDe(n[s>>2]|0,A,l,u,d,m,w)|0,w=s+4|0,n[(n[w>>2]|0)+8>>2]=m,n[(n[w>>2]|0)+8>>2]|0}function yDe(s,A,l,u,d,m,w){s=s|0,A=A|0,l=l|0,u=u|0,d=d|0,m=m|0,w=w|0;var P=0,b=0;return P=C,C=C+16|0,b=P,dA(b),s=Oa(s)|0,w=CDe(s,+E[A>>3],+E[l>>3],+E[u>>3],+E[d>>3],+E[m>>3],+E[w>>3])|0,mA(b),C=P,w|0}function CDe(s,A,l,u,d,m,w){s=s|0,A=+A,l=+l,u=+u,d=+d,m=+m,w=+w;var P=0;return P=$A(EDe()|0)|0,A=+mf(A),l=+mf(l),u=+mf(u),d=+mf(d),m=+mf(m),va(0,P|0,s|0,+A,+l,+u,+d,+m,+ +mf(w))|0}function EDe(){var s=0;return o[7624]|0||(IDe(9172),s=7624,n[s>>2]=1,n[s+4>>2]=0),9172}function IDe(s){s=s|0,el(s,wDe()|0,6)}function wDe(){return 1112}function BDe(s){s=s|0,Jg(s)}function QDe(s){s=s|0,Lj(s+24|0),Oj(s+16|0)}function Lj(s){s=s|0,DDe(s)}function Oj(s){s=s|0,vDe(s)}function vDe(s){s=s|0;var A=0,l=0;if(A=n[s>>2]|0,A|0)do l=A,A=n[A>>2]|0,yt(l);while((A|0)!=0);n[s>>2]=0}function DDe(s){s=s|0;var A=0,l=0;if(A=n[s>>2]|0,A|0)do l=A,A=n[A>>2]|0,yt(l);while((A|0)!=0);n[s>>2]=0}function Jg(s){s=s|0;var A=0;n[s+16>>2]=0,n[s+20>>2]=0,A=s+24|0,n[A>>2]=0,n[s+28>>2]=A,n[s+36>>2]=0,o[s+40>>0]=0,o[s+41>>0]=0}function SDe(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0,w=0,P=0;u=C,C=C+16|0,d=u+8|0,m=u,P=n[l>>2]|0,w=n[l+4>>2]|0,l=Dn(A)|0,n[m>>2]=P,n[m+4>>2]=w,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],kDe(s,l,d,0),C=u}function kDe(s,A,l,u){s=s|0,A=A|0,l=l|0,u=u|0;var d=0,m=0,w=0,P=0,b=0,O=0,L=0;d=C,C=C+32|0,m=d+16|0,L=d+8|0,P=d,O=n[l>>2]|0,b=n[l+4>>2]|0,w=n[s>>2]|0,s=nR()|0,n[L>>2]=O,n[L+4>>2]=b,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],l=xDe(m)|0,n[P>>2]=O,n[P+4>>2]=b,n[m>>2]=n[P>>2],n[m+4>>2]=n[P+4>>2],Sn(w,A,s,l,PDe(m,u)|0,u),C=d}function nR(){var s=0,A=0;if(o[7640]|0||(Kj(9232),Dt(26,9232,H|0)|0,A=7640,n[A>>2]=1,n[A+4>>2]=0),!(Gr(9232)|0)){s=9232,A=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(A|0));Kj(9232)}return 9232}function xDe(s){return s=s|0,0}function PDe(s,A){s=s|0,A=A|0;var l=0,u=0,d=0,m=0,w=0,P=0,b=0,O=0,L=0,W=0;return L=C,C=C+32|0,d=L+24|0,w=L+16|0,P=L,b=L+8|0,m=n[s>>2]|0,u=n[s+4>>2]|0,n[P>>2]=m,n[P+4>>2]=u,W=nR()|0,O=W+24|0,s=wr(A,4)|0,n[b>>2]=s,A=W+28|0,l=n[A>>2]|0,l>>>0<(n[W+32>>2]|0)>>>0?(n[w>>2]=m,n[w+4>>2]=u,n[d>>2]=n[w>>2],n[d+4>>2]=n[w+4>>2],Uj(l,d,s),s=(n[A>>2]|0)+12|0,n[A>>2]=s):(bDe(O,P,b),s=n[A>>2]|0),C=L,((s-(n[O>>2]|0)|0)/12|0)+-1|0}function Uj(s,A,l){s=s|0,A=A|0,l=l|0;var u=0;u=n[A+4>>2]|0,n[s>>2]=n[A>>2],n[s+4>>2]=u,n[s+8>>2]=l}function bDe(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0,w=0,P=0,b=0,O=0,L=0,W=0,ue=0;if(O=C,C=C+48|0,u=O+32|0,w=O+24|0,P=O,b=s+4|0,d=(((n[b>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=FDe(s)|0,m>>>0>>0)An(s);else{L=n[s>>2]|0,ue=((n[s+8>>2]|0)-L|0)/12|0,W=ue<<1,RDe(P,ue>>>0>>1>>>0?W>>>0>>0?d:W:m,((n[b>>2]|0)-L|0)/12|0,s+8|0),b=P+8|0,m=n[b>>2]|0,d=n[A+4>>2]|0,l=n[l>>2]|0,n[w>>2]=n[A>>2],n[w+4>>2]=d,n[u>>2]=n[w>>2],n[u+4>>2]=n[w+4>>2],Uj(m,u,l),n[b>>2]=(n[b>>2]|0)+12,TDe(s,P),NDe(P),C=O;return}}function FDe(s){return s=s|0,357913941}function RDe(s,A,l,u){s=s|0,A=A|0,l=l|0,u=u|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=u;do if(A)if(A>>>0>357913941)Ot();else{d=Jt(A*12|0)|0;break}else d=0;while(0);n[s>>2]=d,u=d+(l*12|0)|0,n[s+8>>2]=u,n[s+4>>2]=u,n[s+12>>2]=d+(A*12|0)}function TDe(s,A){s=s|0,A=A|0;var l=0,u=0,d=0,m=0,w=0;u=n[s>>2]|0,w=s+4|0,m=A+4|0,d=(n[w>>2]|0)-u|0,l=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=l,(d|0)>0?(Tr(l|0,u|0,d|0)|0,u=m,l=n[m>>2]|0):u=m,m=n[s>>2]|0,n[s>>2]=l,n[u>>2]=m,m=A+8|0,d=n[w>>2]|0,n[w>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,w=A+12|0,s=n[m>>2]|0,n[m>>2]=n[w>>2],n[w>>2]=s,n[A>>2]=n[u>>2]}function NDe(s){s=s|0;var A=0,l=0,u=0;A=n[s+4>>2]|0,l=s+8|0,u=n[l>>2]|0,(u|0)!=(A|0)&&(n[l>>2]=u+(~(((u+-12-A|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&yt(s)}function Kj(s){s=s|0,ODe(s)}function MDe(s){s=s|0,LDe(s+24|0)}function LDe(s){s=s|0;var A=0,l=0,u=0;l=n[s>>2]|0,u=l,l|0&&(s=s+4|0,A=n[s>>2]|0,(A|0)!=(l|0)&&(n[s>>2]=A+(~(((A+-12-u|0)>>>0)/12|0)*12|0)),yt(l))}function ODe(s){s=s|0;var A=0;A=nn()|0,sn(s,2,1,A,UDe()|0,3),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function UDe(){return 1144}function KDe(s,A,l,u,d){s=s|0,A=A|0,l=+l,u=+u,d=d|0;var m=0,w=0,P=0,b=0;m=C,C=C+16|0,w=m+8|0,P=m,b=_De(s)|0,s=n[b+4>>2]|0,n[P>>2]=n[b>>2],n[P+4>>2]=s,n[w>>2]=n[P>>2],n[w+4>>2]=n[P+4>>2],HDe(A,w,l,u,d),C=m}function _De(s){return s=s|0,(n[(nR()|0)+24>>2]|0)+(s*12|0)|0}function HDe(s,A,l,u,d){s=s|0,A=A|0,l=+l,u=+u,d=d|0;var m=0,w=0,P=0,b=0,O=0;O=C,C=C+16|0,w=O+2|0,P=O+1|0,b=O,m=n[A>>2]|0,A=n[A+4>>2]|0,s=s+(A>>1)|0,A&1&&(m=n[(n[s>>2]|0)+m>>2]|0),Zc(w,l),l=+$c(w,l),Zc(P,u),u=+$c(P,u),Ef(b,d),b=If(b,d)|0,tY[m&1](s,l,u,b),C=O}function Zc(s,A){s=s|0,A=+A}function $c(s,A){return s=s|0,A=+A,+ +GDe(A)}function Ef(s,A){s=s|0,A=A|0}function If(s,A){return s=s|0,A=A|0,qDe(A)|0}function qDe(s){return s=s|0,s|0}function GDe(s){return s=+s,+s}function jDe(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0,w=0,P=0;u=C,C=C+16|0,d=u+8|0,m=u,P=n[l>>2]|0,w=n[l+4>>2]|0,l=Dn(A)|0,n[m>>2]=P,n[m+4>>2]=w,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],YDe(s,l,d,1),C=u}function YDe(s,A,l,u){s=s|0,A=A|0,l=l|0,u=u|0;var d=0,m=0,w=0,P=0,b=0,O=0,L=0;d=C,C=C+32|0,m=d+16|0,L=d+8|0,P=d,O=n[l>>2]|0,b=n[l+4>>2]|0,w=n[s>>2]|0,s=iR()|0,n[L>>2]=O,n[L+4>>2]=b,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],l=WDe(m)|0,n[P>>2]=O,n[P+4>>2]=b,n[m>>2]=n[P>>2],n[m+4>>2]=n[P+4>>2],Sn(w,A,s,l,JDe(m,u)|0,u),C=d}function iR(){var s=0,A=0;if(o[7648]|0||(Hj(9268),Dt(27,9268,H|0)|0,A=7648,n[A>>2]=1,n[A+4>>2]=0),!(Gr(9268)|0)){s=9268,A=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(A|0));Hj(9268)}return 9268}function WDe(s){return s=s|0,0}function JDe(s,A){s=s|0,A=A|0;var l=0,u=0,d=0,m=0,w=0,P=0,b=0,O=0,L=0,W=0;return L=C,C=C+32|0,d=L+24|0,w=L+16|0,P=L,b=L+8|0,m=n[s>>2]|0,u=n[s+4>>2]|0,n[P>>2]=m,n[P+4>>2]=u,W=iR()|0,O=W+24|0,s=wr(A,4)|0,n[b>>2]=s,A=W+28|0,l=n[A>>2]|0,l>>>0<(n[W+32>>2]|0)>>>0?(n[w>>2]=m,n[w+4>>2]=u,n[d>>2]=n[w>>2],n[d+4>>2]=n[w+4>>2],_j(l,d,s),s=(n[A>>2]|0)+12|0,n[A>>2]=s):(VDe(O,P,b),s=n[A>>2]|0),C=L,((s-(n[O>>2]|0)|0)/12|0)+-1|0}function _j(s,A,l){s=s|0,A=A|0,l=l|0;var u=0;u=n[A+4>>2]|0,n[s>>2]=n[A>>2],n[s+4>>2]=u,n[s+8>>2]=l}function VDe(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0,w=0,P=0,b=0,O=0,L=0,W=0,ue=0;if(O=C,C=C+48|0,u=O+32|0,w=O+24|0,P=O,b=s+4|0,d=(((n[b>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=zDe(s)|0,m>>>0>>0)An(s);else{L=n[s>>2]|0,ue=((n[s+8>>2]|0)-L|0)/12|0,W=ue<<1,XDe(P,ue>>>0>>1>>>0?W>>>0>>0?d:W:m,((n[b>>2]|0)-L|0)/12|0,s+8|0),b=P+8|0,m=n[b>>2]|0,d=n[A+4>>2]|0,l=n[l>>2]|0,n[w>>2]=n[A>>2],n[w+4>>2]=d,n[u>>2]=n[w>>2],n[u+4>>2]=n[w+4>>2],_j(m,u,l),n[b>>2]=(n[b>>2]|0)+12,ZDe(s,P),$De(P),C=O;return}}function zDe(s){return s=s|0,357913941}function XDe(s,A,l,u){s=s|0,A=A|0,l=l|0,u=u|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=u;do if(A)if(A>>>0>357913941)Ot();else{d=Jt(A*12|0)|0;break}else d=0;while(0);n[s>>2]=d,u=d+(l*12|0)|0,n[s+8>>2]=u,n[s+4>>2]=u,n[s+12>>2]=d+(A*12|0)}function ZDe(s,A){s=s|0,A=A|0;var l=0,u=0,d=0,m=0,w=0;u=n[s>>2]|0,w=s+4|0,m=A+4|0,d=(n[w>>2]|0)-u|0,l=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=l,(d|0)>0?(Tr(l|0,u|0,d|0)|0,u=m,l=n[m>>2]|0):u=m,m=n[s>>2]|0,n[s>>2]=l,n[u>>2]=m,m=A+8|0,d=n[w>>2]|0,n[w>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,w=A+12|0,s=n[m>>2]|0,n[m>>2]=n[w>>2],n[w>>2]=s,n[A>>2]=n[u>>2]}function $De(s){s=s|0;var A=0,l=0,u=0;A=n[s+4>>2]|0,l=s+8|0,u=n[l>>2]|0,(u|0)!=(A|0)&&(n[l>>2]=u+(~(((u+-12-A|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&yt(s)}function Hj(s){s=s|0,rSe(s)}function eSe(s){s=s|0,tSe(s+24|0)}function tSe(s){s=s|0;var A=0,l=0,u=0;l=n[s>>2]|0,u=l,l|0&&(s=s+4|0,A=n[s>>2]|0,(A|0)!=(l|0)&&(n[s>>2]=A+(~(((A+-12-u|0)>>>0)/12|0)*12|0)),yt(l))}function rSe(s){s=s|0;var A=0;A=nn()|0,sn(s,2,4,A,nSe()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function nSe(){return 1160}function iSe(s,A){s=s|0,A=A|0;var l=0,u=0,d=0,m=0;return l=C,C=C+16|0,u=l+8|0,d=l,m=sSe(s)|0,s=n[m+4>>2]|0,n[d>>2]=n[m>>2],n[d+4>>2]=s,n[u>>2]=n[d>>2],n[u+4>>2]=n[d+4>>2],A=oSe(A,u)|0,C=l,A|0}function sSe(s){return s=s|0,(n[(iR()|0)+24>>2]|0)+(s*12|0)|0}function oSe(s,A){s=s|0,A=A|0;var l=0;return l=n[A>>2]|0,A=n[A+4>>2]|0,s=s+(A>>1)|0,A&1&&(l=n[(n[s>>2]|0)+l>>2]|0),qj(od[l&31](s)|0)|0}function qj(s){return s=s|0,s&1|0}function aSe(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0,w=0,P=0;u=C,C=C+16|0,d=u+8|0,m=u,P=n[l>>2]|0,w=n[l+4>>2]|0,l=Dn(A)|0,n[m>>2]=P,n[m+4>>2]=w,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],ASe(s,l,d,0),C=u}function ASe(s,A,l,u){s=s|0,A=A|0,l=l|0,u=u|0;var d=0,m=0,w=0,P=0,b=0,O=0,L=0;d=C,C=C+32|0,m=d+16|0,L=d+8|0,P=d,O=n[l>>2]|0,b=n[l+4>>2]|0,w=n[s>>2]|0,s=sR()|0,n[L>>2]=O,n[L+4>>2]=b,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],l=lSe(m)|0,n[P>>2]=O,n[P+4>>2]=b,n[m>>2]=n[P>>2],n[m+4>>2]=n[P+4>>2],Sn(w,A,s,l,cSe(m,u)|0,u),C=d}function sR(){var s=0,A=0;if(o[7656]|0||(jj(9304),Dt(28,9304,H|0)|0,A=7656,n[A>>2]=1,n[A+4>>2]=0),!(Gr(9304)|0)){s=9304,A=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(A|0));jj(9304)}return 9304}function lSe(s){return s=s|0,0}function cSe(s,A){s=s|0,A=A|0;var l=0,u=0,d=0,m=0,w=0,P=0,b=0,O=0,L=0,W=0;return L=C,C=C+32|0,d=L+24|0,w=L+16|0,P=L,b=L+8|0,m=n[s>>2]|0,u=n[s+4>>2]|0,n[P>>2]=m,n[P+4>>2]=u,W=sR()|0,O=W+24|0,s=wr(A,4)|0,n[b>>2]=s,A=W+28|0,l=n[A>>2]|0,l>>>0<(n[W+32>>2]|0)>>>0?(n[w>>2]=m,n[w+4>>2]=u,n[d>>2]=n[w>>2],n[d+4>>2]=n[w+4>>2],Gj(l,d,s),s=(n[A>>2]|0)+12|0,n[A>>2]=s):(uSe(O,P,b),s=n[A>>2]|0),C=L,((s-(n[O>>2]|0)|0)/12|0)+-1|0}function Gj(s,A,l){s=s|0,A=A|0,l=l|0;var u=0;u=n[A+4>>2]|0,n[s>>2]=n[A>>2],n[s+4>>2]=u,n[s+8>>2]=l}function uSe(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0,w=0,P=0,b=0,O=0,L=0,W=0,ue=0;if(O=C,C=C+48|0,u=O+32|0,w=O+24|0,P=O,b=s+4|0,d=(((n[b>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=fSe(s)|0,m>>>0>>0)An(s);else{L=n[s>>2]|0,ue=((n[s+8>>2]|0)-L|0)/12|0,W=ue<<1,gSe(P,ue>>>0>>1>>>0?W>>>0>>0?d:W:m,((n[b>>2]|0)-L|0)/12|0,s+8|0),b=P+8|0,m=n[b>>2]|0,d=n[A+4>>2]|0,l=n[l>>2]|0,n[w>>2]=n[A>>2],n[w+4>>2]=d,n[u>>2]=n[w>>2],n[u+4>>2]=n[w+4>>2],Gj(m,u,l),n[b>>2]=(n[b>>2]|0)+12,pSe(s,P),hSe(P),C=O;return}}function fSe(s){return s=s|0,357913941}function gSe(s,A,l,u){s=s|0,A=A|0,l=l|0,u=u|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=u;do if(A)if(A>>>0>357913941)Ot();else{d=Jt(A*12|0)|0;break}else d=0;while(0);n[s>>2]=d,u=d+(l*12|0)|0,n[s+8>>2]=u,n[s+4>>2]=u,n[s+12>>2]=d+(A*12|0)}function pSe(s,A){s=s|0,A=A|0;var l=0,u=0,d=0,m=0,w=0;u=n[s>>2]|0,w=s+4|0,m=A+4|0,d=(n[w>>2]|0)-u|0,l=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=l,(d|0)>0?(Tr(l|0,u|0,d|0)|0,u=m,l=n[m>>2]|0):u=m,m=n[s>>2]|0,n[s>>2]=l,n[u>>2]=m,m=A+8|0,d=n[w>>2]|0,n[w>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,w=A+12|0,s=n[m>>2]|0,n[m>>2]=n[w>>2],n[w>>2]=s,n[A>>2]=n[u>>2]}function hSe(s){s=s|0;var A=0,l=0,u=0;A=n[s+4>>2]|0,l=s+8|0,u=n[l>>2]|0,(u|0)!=(A|0)&&(n[l>>2]=u+(~(((u+-12-A|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&yt(s)}function jj(s){s=s|0,ySe(s)}function dSe(s){s=s|0,mSe(s+24|0)}function mSe(s){s=s|0;var A=0,l=0,u=0;l=n[s>>2]|0,u=l,l|0&&(s=s+4|0,A=n[s>>2]|0,(A|0)!=(l|0)&&(n[s>>2]=A+(~(((A+-12-u|0)>>>0)/12|0)*12|0)),yt(l))}function ySe(s){s=s|0;var A=0;A=nn()|0,sn(s,2,5,A,CSe()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function CSe(){return 1164}function ESe(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0,w=0;u=C,C=C+16|0,d=u+8|0,m=u,w=ISe(s)|0,s=n[w+4>>2]|0,n[m>>2]=n[w>>2],n[m+4>>2]=s,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],wSe(A,d,l),C=u}function ISe(s){return s=s|0,(n[(sR()|0)+24>>2]|0)+(s*12|0)|0}function wSe(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0;m=C,C=C+16|0,d=m,u=n[A>>2]|0,A=n[A+4>>2]|0,s=s+(A>>1)|0,A&1&&(u=n[(n[s>>2]|0)+u>>2]|0),Vg(d,l),l=zg(d,l)|0,Qf[u&31](s,l),Xg(d),C=m}function Vg(s,A){s=s|0,A=A|0,BSe(s,A)}function zg(s,A){return s=s|0,A=A|0,s|0}function Xg(s){s=s|0,uf(s)}function BSe(s,A){s=s|0,A=A|0,oR(s,A)}function oR(s,A){s=s|0,A=A|0,n[s>>2]=A}function QSe(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0,w=0,P=0;u=C,C=C+16|0,d=u+8|0,m=u,P=n[l>>2]|0,w=n[l+4>>2]|0,l=Dn(A)|0,n[m>>2]=P,n[m+4>>2]=w,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],vSe(s,l,d,0),C=u}function vSe(s,A,l,u){s=s|0,A=A|0,l=l|0,u=u|0;var d=0,m=0,w=0,P=0,b=0,O=0,L=0;d=C,C=C+32|0,m=d+16|0,L=d+8|0,P=d,O=n[l>>2]|0,b=n[l+4>>2]|0,w=n[s>>2]|0,s=aR()|0,n[L>>2]=O,n[L+4>>2]=b,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],l=DSe(m)|0,n[P>>2]=O,n[P+4>>2]=b,n[m>>2]=n[P>>2],n[m+4>>2]=n[P+4>>2],Sn(w,A,s,l,SSe(m,u)|0,u),C=d}function aR(){var s=0,A=0;if(o[7664]|0||(Wj(9340),Dt(29,9340,H|0)|0,A=7664,n[A>>2]=1,n[A+4>>2]=0),!(Gr(9340)|0)){s=9340,A=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(A|0));Wj(9340)}return 9340}function DSe(s){return s=s|0,0}function SSe(s,A){s=s|0,A=A|0;var l=0,u=0,d=0,m=0,w=0,P=0,b=0,O=0,L=0,W=0;return L=C,C=C+32|0,d=L+24|0,w=L+16|0,P=L,b=L+8|0,m=n[s>>2]|0,u=n[s+4>>2]|0,n[P>>2]=m,n[P+4>>2]=u,W=aR()|0,O=W+24|0,s=wr(A,4)|0,n[b>>2]=s,A=W+28|0,l=n[A>>2]|0,l>>>0<(n[W+32>>2]|0)>>>0?(n[w>>2]=m,n[w+4>>2]=u,n[d>>2]=n[w>>2],n[d+4>>2]=n[w+4>>2],Yj(l,d,s),s=(n[A>>2]|0)+12|0,n[A>>2]=s):(kSe(O,P,b),s=n[A>>2]|0),C=L,((s-(n[O>>2]|0)|0)/12|0)+-1|0}function Yj(s,A,l){s=s|0,A=A|0,l=l|0;var u=0;u=n[A+4>>2]|0,n[s>>2]=n[A>>2],n[s+4>>2]=u,n[s+8>>2]=l}function kSe(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0,w=0,P=0,b=0,O=0,L=0,W=0,ue=0;if(O=C,C=C+48|0,u=O+32|0,w=O+24|0,P=O,b=s+4|0,d=(((n[b>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=xSe(s)|0,m>>>0>>0)An(s);else{L=n[s>>2]|0,ue=((n[s+8>>2]|0)-L|0)/12|0,W=ue<<1,PSe(P,ue>>>0>>1>>>0?W>>>0>>0?d:W:m,((n[b>>2]|0)-L|0)/12|0,s+8|0),b=P+8|0,m=n[b>>2]|0,d=n[A+4>>2]|0,l=n[l>>2]|0,n[w>>2]=n[A>>2],n[w+4>>2]=d,n[u>>2]=n[w>>2],n[u+4>>2]=n[w+4>>2],Yj(m,u,l),n[b>>2]=(n[b>>2]|0)+12,bSe(s,P),FSe(P),C=O;return}}function xSe(s){return s=s|0,357913941}function PSe(s,A,l,u){s=s|0,A=A|0,l=l|0,u=u|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=u;do if(A)if(A>>>0>357913941)Ot();else{d=Jt(A*12|0)|0;break}else d=0;while(0);n[s>>2]=d,u=d+(l*12|0)|0,n[s+8>>2]=u,n[s+4>>2]=u,n[s+12>>2]=d+(A*12|0)}function bSe(s,A){s=s|0,A=A|0;var l=0,u=0,d=0,m=0,w=0;u=n[s>>2]|0,w=s+4|0,m=A+4|0,d=(n[w>>2]|0)-u|0,l=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=l,(d|0)>0?(Tr(l|0,u|0,d|0)|0,u=m,l=n[m>>2]|0):u=m,m=n[s>>2]|0,n[s>>2]=l,n[u>>2]=m,m=A+8|0,d=n[w>>2]|0,n[w>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,w=A+12|0,s=n[m>>2]|0,n[m>>2]=n[w>>2],n[w>>2]=s,n[A>>2]=n[u>>2]}function FSe(s){s=s|0;var A=0,l=0,u=0;A=n[s+4>>2]|0,l=s+8|0,u=n[l>>2]|0,(u|0)!=(A|0)&&(n[l>>2]=u+(~(((u+-12-A|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&yt(s)}function Wj(s){s=s|0,NSe(s)}function RSe(s){s=s|0,TSe(s+24|0)}function TSe(s){s=s|0;var A=0,l=0,u=0;l=n[s>>2]|0,u=l,l|0&&(s=s+4|0,A=n[s>>2]|0,(A|0)!=(l|0)&&(n[s>>2]=A+(~(((A+-12-u|0)>>>0)/12|0)*12|0)),yt(l))}function NSe(s){s=s|0;var A=0;A=nn()|0,sn(s,2,4,A,MSe()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function MSe(){return 1180}function LSe(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0,w=0;return u=C,C=C+16|0,d=u+8|0,m=u,w=OSe(s)|0,s=n[w+4>>2]|0,n[m>>2]=n[w>>2],n[m+4>>2]=s,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],l=USe(A,d,l)|0,C=u,l|0}function OSe(s){return s=s|0,(n[(aR()|0)+24>>2]|0)+(s*12|0)|0}function USe(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0;return m=C,C=C+16|0,d=m,u=n[A>>2]|0,A=n[A+4>>2]|0,s=s+(A>>1)|0,A&1&&(u=n[(n[s>>2]|0)+u>>2]|0),Z0(d,l),d=$0(d,l)|0,d=uv(nT[u&15](s,d)|0)|0,C=m,d|0}function Z0(s,A){s=s|0,A=A|0}function $0(s,A){return s=s|0,A=A|0,KSe(A)|0}function uv(s){return s=s|0,s|0}function KSe(s){return s=s|0,s|0}function _Se(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0,w=0,P=0;u=C,C=C+16|0,d=u+8|0,m=u,P=n[l>>2]|0,w=n[l+4>>2]|0,l=Dn(A)|0,n[m>>2]=P,n[m+4>>2]=w,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],HSe(s,l,d,0),C=u}function HSe(s,A,l,u){s=s|0,A=A|0,l=l|0,u=u|0;var d=0,m=0,w=0,P=0,b=0,O=0,L=0;d=C,C=C+32|0,m=d+16|0,L=d+8|0,P=d,O=n[l>>2]|0,b=n[l+4>>2]|0,w=n[s>>2]|0,s=AR()|0,n[L>>2]=O,n[L+4>>2]=b,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],l=qSe(m)|0,n[P>>2]=O,n[P+4>>2]=b,n[m>>2]=n[P>>2],n[m+4>>2]=n[P+4>>2],Sn(w,A,s,l,GSe(m,u)|0,u),C=d}function AR(){var s=0,A=0;if(o[7672]|0||(Vj(9376),Dt(30,9376,H|0)|0,A=7672,n[A>>2]=1,n[A+4>>2]=0),!(Gr(9376)|0)){s=9376,A=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(A|0));Vj(9376)}return 9376}function qSe(s){return s=s|0,0}function GSe(s,A){s=s|0,A=A|0;var l=0,u=0,d=0,m=0,w=0,P=0,b=0,O=0,L=0,W=0;return L=C,C=C+32|0,d=L+24|0,w=L+16|0,P=L,b=L+8|0,m=n[s>>2]|0,u=n[s+4>>2]|0,n[P>>2]=m,n[P+4>>2]=u,W=AR()|0,O=W+24|0,s=wr(A,4)|0,n[b>>2]=s,A=W+28|0,l=n[A>>2]|0,l>>>0<(n[W+32>>2]|0)>>>0?(n[w>>2]=m,n[w+4>>2]=u,n[d>>2]=n[w>>2],n[d+4>>2]=n[w+4>>2],Jj(l,d,s),s=(n[A>>2]|0)+12|0,n[A>>2]=s):(jSe(O,P,b),s=n[A>>2]|0),C=L,((s-(n[O>>2]|0)|0)/12|0)+-1|0}function Jj(s,A,l){s=s|0,A=A|0,l=l|0;var u=0;u=n[A+4>>2]|0,n[s>>2]=n[A>>2],n[s+4>>2]=u,n[s+8>>2]=l}function jSe(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0,w=0,P=0,b=0,O=0,L=0,W=0,ue=0;if(O=C,C=C+48|0,u=O+32|0,w=O+24|0,P=O,b=s+4|0,d=(((n[b>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=YSe(s)|0,m>>>0>>0)An(s);else{L=n[s>>2]|0,ue=((n[s+8>>2]|0)-L|0)/12|0,W=ue<<1,WSe(P,ue>>>0>>1>>>0?W>>>0>>0?d:W:m,((n[b>>2]|0)-L|0)/12|0,s+8|0),b=P+8|0,m=n[b>>2]|0,d=n[A+4>>2]|0,l=n[l>>2]|0,n[w>>2]=n[A>>2],n[w+4>>2]=d,n[u>>2]=n[w>>2],n[u+4>>2]=n[w+4>>2],Jj(m,u,l),n[b>>2]=(n[b>>2]|0)+12,JSe(s,P),VSe(P),C=O;return}}function YSe(s){return s=s|0,357913941}function WSe(s,A,l,u){s=s|0,A=A|0,l=l|0,u=u|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=u;do if(A)if(A>>>0>357913941)Ot();else{d=Jt(A*12|0)|0;break}else d=0;while(0);n[s>>2]=d,u=d+(l*12|0)|0,n[s+8>>2]=u,n[s+4>>2]=u,n[s+12>>2]=d+(A*12|0)}function JSe(s,A){s=s|0,A=A|0;var l=0,u=0,d=0,m=0,w=0;u=n[s>>2]|0,w=s+4|0,m=A+4|0,d=(n[w>>2]|0)-u|0,l=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=l,(d|0)>0?(Tr(l|0,u|0,d|0)|0,u=m,l=n[m>>2]|0):u=m,m=n[s>>2]|0,n[s>>2]=l,n[u>>2]=m,m=A+8|0,d=n[w>>2]|0,n[w>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,w=A+12|0,s=n[m>>2]|0,n[m>>2]=n[w>>2],n[w>>2]=s,n[A>>2]=n[u>>2]}function VSe(s){s=s|0;var A=0,l=0,u=0;A=n[s+4>>2]|0,l=s+8|0,u=n[l>>2]|0,(u|0)!=(A|0)&&(n[l>>2]=u+(~(((u+-12-A|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&yt(s)}function Vj(s){s=s|0,ZSe(s)}function zSe(s){s=s|0,XSe(s+24|0)}function XSe(s){s=s|0;var A=0,l=0,u=0;l=n[s>>2]|0,u=l,l|0&&(s=s+4|0,A=n[s>>2]|0,(A|0)!=(l|0)&&(n[s>>2]=A+(~(((A+-12-u|0)>>>0)/12|0)*12|0)),yt(l))}function ZSe(s){s=s|0;var A=0;A=nn()|0,sn(s,2,5,A,zj()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function zj(){return 1196}function $Se(s,A){s=s|0,A=A|0;var l=0,u=0,d=0,m=0;return l=C,C=C+16|0,u=l+8|0,d=l,m=eke(s)|0,s=n[m+4>>2]|0,n[d>>2]=n[m>>2],n[d+4>>2]=s,n[u>>2]=n[d>>2],n[u+4>>2]=n[d+4>>2],A=tke(A,u)|0,C=l,A|0}function eke(s){return s=s|0,(n[(AR()|0)+24>>2]|0)+(s*12|0)|0}function tke(s,A){s=s|0,A=A|0;var l=0;return l=n[A>>2]|0,A=n[A+4>>2]|0,s=s+(A>>1)|0,A&1&&(l=n[(n[s>>2]|0)+l>>2]|0),uv(od[l&31](s)|0)|0}function rke(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0,w=0,P=0;u=C,C=C+16|0,d=u+8|0,m=u,P=n[l>>2]|0,w=n[l+4>>2]|0,l=Dn(A)|0,n[m>>2]=P,n[m+4>>2]=w,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],nke(s,l,d,1),C=u}function nke(s,A,l,u){s=s|0,A=A|0,l=l|0,u=u|0;var d=0,m=0,w=0,P=0,b=0,O=0,L=0;d=C,C=C+32|0,m=d+16|0,L=d+8|0,P=d,O=n[l>>2]|0,b=n[l+4>>2]|0,w=n[s>>2]|0,s=lR()|0,n[L>>2]=O,n[L+4>>2]=b,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],l=ike(m)|0,n[P>>2]=O,n[P+4>>2]=b,n[m>>2]=n[P>>2],n[m+4>>2]=n[P+4>>2],Sn(w,A,s,l,ske(m,u)|0,u),C=d}function lR(){var s=0,A=0;if(o[7680]|0||(Zj(9412),Dt(31,9412,H|0)|0,A=7680,n[A>>2]=1,n[A+4>>2]=0),!(Gr(9412)|0)){s=9412,A=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(A|0));Zj(9412)}return 9412}function ike(s){return s=s|0,0}function ske(s,A){s=s|0,A=A|0;var l=0,u=0,d=0,m=0,w=0,P=0,b=0,O=0,L=0,W=0;return L=C,C=C+32|0,d=L+24|0,w=L+16|0,P=L,b=L+8|0,m=n[s>>2]|0,u=n[s+4>>2]|0,n[P>>2]=m,n[P+4>>2]=u,W=lR()|0,O=W+24|0,s=wr(A,4)|0,n[b>>2]=s,A=W+28|0,l=n[A>>2]|0,l>>>0<(n[W+32>>2]|0)>>>0?(n[w>>2]=m,n[w+4>>2]=u,n[d>>2]=n[w>>2],n[d+4>>2]=n[w+4>>2],Xj(l,d,s),s=(n[A>>2]|0)+12|0,n[A>>2]=s):(oke(O,P,b),s=n[A>>2]|0),C=L,((s-(n[O>>2]|0)|0)/12|0)+-1|0}function Xj(s,A,l){s=s|0,A=A|0,l=l|0;var u=0;u=n[A+4>>2]|0,n[s>>2]=n[A>>2],n[s+4>>2]=u,n[s+8>>2]=l}function oke(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0,w=0,P=0,b=0,O=0,L=0,W=0,ue=0;if(O=C,C=C+48|0,u=O+32|0,w=O+24|0,P=O,b=s+4|0,d=(((n[b>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=ake(s)|0,m>>>0>>0)An(s);else{L=n[s>>2]|0,ue=((n[s+8>>2]|0)-L|0)/12|0,W=ue<<1,Ake(P,ue>>>0>>1>>>0?W>>>0>>0?d:W:m,((n[b>>2]|0)-L|0)/12|0,s+8|0),b=P+8|0,m=n[b>>2]|0,d=n[A+4>>2]|0,l=n[l>>2]|0,n[w>>2]=n[A>>2],n[w+4>>2]=d,n[u>>2]=n[w>>2],n[u+4>>2]=n[w+4>>2],Xj(m,u,l),n[b>>2]=(n[b>>2]|0)+12,lke(s,P),cke(P),C=O;return}}function ake(s){return s=s|0,357913941}function Ake(s,A,l,u){s=s|0,A=A|0,l=l|0,u=u|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=u;do if(A)if(A>>>0>357913941)Ot();else{d=Jt(A*12|0)|0;break}else d=0;while(0);n[s>>2]=d,u=d+(l*12|0)|0,n[s+8>>2]=u,n[s+4>>2]=u,n[s+12>>2]=d+(A*12|0)}function lke(s,A){s=s|0,A=A|0;var l=0,u=0,d=0,m=0,w=0;u=n[s>>2]|0,w=s+4|0,m=A+4|0,d=(n[w>>2]|0)-u|0,l=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=l,(d|0)>0?(Tr(l|0,u|0,d|0)|0,u=m,l=n[m>>2]|0):u=m,m=n[s>>2]|0,n[s>>2]=l,n[u>>2]=m,m=A+8|0,d=n[w>>2]|0,n[w>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,w=A+12|0,s=n[m>>2]|0,n[m>>2]=n[w>>2],n[w>>2]=s,n[A>>2]=n[u>>2]}function cke(s){s=s|0;var A=0,l=0,u=0;A=n[s+4>>2]|0,l=s+8|0,u=n[l>>2]|0,(u|0)!=(A|0)&&(n[l>>2]=u+(~(((u+-12-A|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&yt(s)}function Zj(s){s=s|0,gke(s)}function uke(s){s=s|0,fke(s+24|0)}function fke(s){s=s|0;var A=0,l=0,u=0;l=n[s>>2]|0,u=l,l|0&&(s=s+4|0,A=n[s>>2]|0,(A|0)!=(l|0)&&(n[s>>2]=A+(~(((A+-12-u|0)>>>0)/12|0)*12|0)),yt(l))}function gke(s){s=s|0;var A=0;A=nn()|0,sn(s,2,6,A,$j()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function $j(){return 1200}function pke(s,A){s=s|0,A=A|0;var l=0,u=0,d=0,m=0;return l=C,C=C+16|0,u=l+8|0,d=l,m=hke(s)|0,s=n[m+4>>2]|0,n[d>>2]=n[m>>2],n[d+4>>2]=s,n[u>>2]=n[d>>2],n[u+4>>2]=n[d+4>>2],A=dke(A,u)|0,C=l,A|0}function hke(s){return s=s|0,(n[(lR()|0)+24>>2]|0)+(s*12|0)|0}function dke(s,A){s=s|0,A=A|0;var l=0;return l=n[A>>2]|0,A=n[A+4>>2]|0,s=s+(A>>1)|0,A&1&&(l=n[(n[s>>2]|0)+l>>2]|0),fv(od[l&31](s)|0)|0}function fv(s){return s=s|0,s|0}function mke(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0,w=0,P=0;u=C,C=C+16|0,d=u+8|0,m=u,P=n[l>>2]|0,w=n[l+4>>2]|0,l=Dn(A)|0,n[m>>2]=P,n[m+4>>2]=w,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],yke(s,l,d,0),C=u}function yke(s,A,l,u){s=s|0,A=A|0,l=l|0,u=u|0;var d=0,m=0,w=0,P=0,b=0,O=0,L=0;d=C,C=C+32|0,m=d+16|0,L=d+8|0,P=d,O=n[l>>2]|0,b=n[l+4>>2]|0,w=n[s>>2]|0,s=cR()|0,n[L>>2]=O,n[L+4>>2]=b,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],l=Cke(m)|0,n[P>>2]=O,n[P+4>>2]=b,n[m>>2]=n[P>>2],n[m+4>>2]=n[P+4>>2],Sn(w,A,s,l,Eke(m,u)|0,u),C=d}function cR(){var s=0,A=0;if(o[7688]|0||(t5(9448),Dt(32,9448,H|0)|0,A=7688,n[A>>2]=1,n[A+4>>2]=0),!(Gr(9448)|0)){s=9448,A=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(A|0));t5(9448)}return 9448}function Cke(s){return s=s|0,0}function Eke(s,A){s=s|0,A=A|0;var l=0,u=0,d=0,m=0,w=0,P=0,b=0,O=0,L=0,W=0;return L=C,C=C+32|0,d=L+24|0,w=L+16|0,P=L,b=L+8|0,m=n[s>>2]|0,u=n[s+4>>2]|0,n[P>>2]=m,n[P+4>>2]=u,W=cR()|0,O=W+24|0,s=wr(A,4)|0,n[b>>2]=s,A=W+28|0,l=n[A>>2]|0,l>>>0<(n[W+32>>2]|0)>>>0?(n[w>>2]=m,n[w+4>>2]=u,n[d>>2]=n[w>>2],n[d+4>>2]=n[w+4>>2],e5(l,d,s),s=(n[A>>2]|0)+12|0,n[A>>2]=s):(Ike(O,P,b),s=n[A>>2]|0),C=L,((s-(n[O>>2]|0)|0)/12|0)+-1|0}function e5(s,A,l){s=s|0,A=A|0,l=l|0;var u=0;u=n[A+4>>2]|0,n[s>>2]=n[A>>2],n[s+4>>2]=u,n[s+8>>2]=l}function Ike(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0,w=0,P=0,b=0,O=0,L=0,W=0,ue=0;if(O=C,C=C+48|0,u=O+32|0,w=O+24|0,P=O,b=s+4|0,d=(((n[b>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=wke(s)|0,m>>>0>>0)An(s);else{L=n[s>>2]|0,ue=((n[s+8>>2]|0)-L|0)/12|0,W=ue<<1,Bke(P,ue>>>0>>1>>>0?W>>>0>>0?d:W:m,((n[b>>2]|0)-L|0)/12|0,s+8|0),b=P+8|0,m=n[b>>2]|0,d=n[A+4>>2]|0,l=n[l>>2]|0,n[w>>2]=n[A>>2],n[w+4>>2]=d,n[u>>2]=n[w>>2],n[u+4>>2]=n[w+4>>2],e5(m,u,l),n[b>>2]=(n[b>>2]|0)+12,Qke(s,P),vke(P),C=O;return}}function wke(s){return s=s|0,357913941}function Bke(s,A,l,u){s=s|0,A=A|0,l=l|0,u=u|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=u;do if(A)if(A>>>0>357913941)Ot();else{d=Jt(A*12|0)|0;break}else d=0;while(0);n[s>>2]=d,u=d+(l*12|0)|0,n[s+8>>2]=u,n[s+4>>2]=u,n[s+12>>2]=d+(A*12|0)}function Qke(s,A){s=s|0,A=A|0;var l=0,u=0,d=0,m=0,w=0;u=n[s>>2]|0,w=s+4|0,m=A+4|0,d=(n[w>>2]|0)-u|0,l=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=l,(d|0)>0?(Tr(l|0,u|0,d|0)|0,u=m,l=n[m>>2]|0):u=m,m=n[s>>2]|0,n[s>>2]=l,n[u>>2]=m,m=A+8|0,d=n[w>>2]|0,n[w>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,w=A+12|0,s=n[m>>2]|0,n[m>>2]=n[w>>2],n[w>>2]=s,n[A>>2]=n[u>>2]}function vke(s){s=s|0;var A=0,l=0,u=0;A=n[s+4>>2]|0,l=s+8|0,u=n[l>>2]|0,(u|0)!=(A|0)&&(n[l>>2]=u+(~(((u+-12-A|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&yt(s)}function t5(s){s=s|0,kke(s)}function Dke(s){s=s|0,Ske(s+24|0)}function Ske(s){s=s|0;var A=0,l=0,u=0;l=n[s>>2]|0,u=l,l|0&&(s=s+4|0,A=n[s>>2]|0,(A|0)!=(l|0)&&(n[s>>2]=A+(~(((A+-12-u|0)>>>0)/12|0)*12|0)),yt(l))}function kke(s){s=s|0;var A=0;A=nn()|0,sn(s,2,6,A,r5()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function r5(){return 1204}function xke(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0,w=0;u=C,C=C+16|0,d=u+8|0,m=u,w=Pke(s)|0,s=n[w+4>>2]|0,n[m>>2]=n[w>>2],n[m+4>>2]=s,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],bke(A,d,l),C=u}function Pke(s){return s=s|0,(n[(cR()|0)+24>>2]|0)+(s*12|0)|0}function bke(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0;m=C,C=C+16|0,d=m,u=n[A>>2]|0,A=n[A+4>>2]|0,s=s+(A>>1)|0,A&1&&(u=n[(n[s>>2]|0)+u>>2]|0),uR(d,l),d=fR(d,l)|0,Qf[u&31](s,d),C=m}function uR(s,A){s=s|0,A=A|0}function fR(s,A){return s=s|0,A=A|0,Fke(A)|0}function Fke(s){return s=s|0,s|0}function Rke(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0,w=0,P=0;u=C,C=C+16|0,d=u+8|0,m=u,P=n[l>>2]|0,w=n[l+4>>2]|0,l=Dn(A)|0,n[m>>2]=P,n[m+4>>2]=w,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],Tke(s,l,d,0),C=u}function Tke(s,A,l,u){s=s|0,A=A|0,l=l|0,u=u|0;var d=0,m=0,w=0,P=0,b=0,O=0,L=0;d=C,C=C+32|0,m=d+16|0,L=d+8|0,P=d,O=n[l>>2]|0,b=n[l+4>>2]|0,w=n[s>>2]|0,s=gR()|0,n[L>>2]=O,n[L+4>>2]=b,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],l=Nke(m)|0,n[P>>2]=O,n[P+4>>2]=b,n[m>>2]=n[P>>2],n[m+4>>2]=n[P+4>>2],Sn(w,A,s,l,Mke(m,u)|0,u),C=d}function gR(){var s=0,A=0;if(o[7696]|0||(i5(9484),Dt(33,9484,H|0)|0,A=7696,n[A>>2]=1,n[A+4>>2]=0),!(Gr(9484)|0)){s=9484,A=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(A|0));i5(9484)}return 9484}function Nke(s){return s=s|0,0}function Mke(s,A){s=s|0,A=A|0;var l=0,u=0,d=0,m=0,w=0,P=0,b=0,O=0,L=0,W=0;return L=C,C=C+32|0,d=L+24|0,w=L+16|0,P=L,b=L+8|0,m=n[s>>2]|0,u=n[s+4>>2]|0,n[P>>2]=m,n[P+4>>2]=u,W=gR()|0,O=W+24|0,s=wr(A,4)|0,n[b>>2]=s,A=W+28|0,l=n[A>>2]|0,l>>>0<(n[W+32>>2]|0)>>>0?(n[w>>2]=m,n[w+4>>2]=u,n[d>>2]=n[w>>2],n[d+4>>2]=n[w+4>>2],n5(l,d,s),s=(n[A>>2]|0)+12|0,n[A>>2]=s):(Lke(O,P,b),s=n[A>>2]|0),C=L,((s-(n[O>>2]|0)|0)/12|0)+-1|0}function n5(s,A,l){s=s|0,A=A|0,l=l|0;var u=0;u=n[A+4>>2]|0,n[s>>2]=n[A>>2],n[s+4>>2]=u,n[s+8>>2]=l}function Lke(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0,w=0,P=0,b=0,O=0,L=0,W=0,ue=0;if(O=C,C=C+48|0,u=O+32|0,w=O+24|0,P=O,b=s+4|0,d=(((n[b>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=Oke(s)|0,m>>>0>>0)An(s);else{L=n[s>>2]|0,ue=((n[s+8>>2]|0)-L|0)/12|0,W=ue<<1,Uke(P,ue>>>0>>1>>>0?W>>>0>>0?d:W:m,((n[b>>2]|0)-L|0)/12|0,s+8|0),b=P+8|0,m=n[b>>2]|0,d=n[A+4>>2]|0,l=n[l>>2]|0,n[w>>2]=n[A>>2],n[w+4>>2]=d,n[u>>2]=n[w>>2],n[u+4>>2]=n[w+4>>2],n5(m,u,l),n[b>>2]=(n[b>>2]|0)+12,Kke(s,P),_ke(P),C=O;return}}function Oke(s){return s=s|0,357913941}function Uke(s,A,l,u){s=s|0,A=A|0,l=l|0,u=u|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=u;do if(A)if(A>>>0>357913941)Ot();else{d=Jt(A*12|0)|0;break}else d=0;while(0);n[s>>2]=d,u=d+(l*12|0)|0,n[s+8>>2]=u,n[s+4>>2]=u,n[s+12>>2]=d+(A*12|0)}function Kke(s,A){s=s|0,A=A|0;var l=0,u=0,d=0,m=0,w=0;u=n[s>>2]|0,w=s+4|0,m=A+4|0,d=(n[w>>2]|0)-u|0,l=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=l,(d|0)>0?(Tr(l|0,u|0,d|0)|0,u=m,l=n[m>>2]|0):u=m,m=n[s>>2]|0,n[s>>2]=l,n[u>>2]=m,m=A+8|0,d=n[w>>2]|0,n[w>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,w=A+12|0,s=n[m>>2]|0,n[m>>2]=n[w>>2],n[w>>2]=s,n[A>>2]=n[u>>2]}function _ke(s){s=s|0;var A=0,l=0,u=0;A=n[s+4>>2]|0,l=s+8|0,u=n[l>>2]|0,(u|0)!=(A|0)&&(n[l>>2]=u+(~(((u+-12-A|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&yt(s)}function i5(s){s=s|0,Gke(s)}function Hke(s){s=s|0,qke(s+24|0)}function qke(s){s=s|0;var A=0,l=0,u=0;l=n[s>>2]|0,u=l,l|0&&(s=s+4|0,A=n[s>>2]|0,(A|0)!=(l|0)&&(n[s>>2]=A+(~(((A+-12-u|0)>>>0)/12|0)*12|0)),yt(l))}function Gke(s){s=s|0;var A=0;A=nn()|0,sn(s,2,1,A,jke()|0,2),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function jke(){return 1212}function Yke(s,A,l,u){s=s|0,A=A|0,l=l|0,u=u|0;var d=0,m=0,w=0,P=0;d=C,C=C+16|0,m=d+8|0,w=d,P=Wke(s)|0,s=n[P+4>>2]|0,n[w>>2]=n[P>>2],n[w+4>>2]=s,n[m>>2]=n[w>>2],n[m+4>>2]=n[w+4>>2],Jke(A,m,l,u),C=d}function Wke(s){return s=s|0,(n[(gR()|0)+24>>2]|0)+(s*12|0)|0}function Jke(s,A,l,u){s=s|0,A=A|0,l=l|0,u=u|0;var d=0,m=0,w=0,P=0;P=C,C=C+16|0,m=P+1|0,w=P,d=n[A>>2]|0,A=n[A+4>>2]|0,s=s+(A>>1)|0,A&1&&(d=n[(n[s>>2]|0)+d>>2]|0),uR(m,l),m=fR(m,l)|0,Z0(w,u),w=$0(w,u)|0,zI[d&15](s,m,w),C=P}function Vke(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0,w=0,P=0;u=C,C=C+16|0,d=u+8|0,m=u,P=n[l>>2]|0,w=n[l+4>>2]|0,l=Dn(A)|0,n[m>>2]=P,n[m+4>>2]=w,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],zke(s,l,d,1),C=u}function zke(s,A,l,u){s=s|0,A=A|0,l=l|0,u=u|0;var d=0,m=0,w=0,P=0,b=0,O=0,L=0;d=C,C=C+32|0,m=d+16|0,L=d+8|0,P=d,O=n[l>>2]|0,b=n[l+4>>2]|0,w=n[s>>2]|0,s=pR()|0,n[L>>2]=O,n[L+4>>2]=b,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],l=Xke(m)|0,n[P>>2]=O,n[P+4>>2]=b,n[m>>2]=n[P>>2],n[m+4>>2]=n[P+4>>2],Sn(w,A,s,l,Zke(m,u)|0,u),C=d}function pR(){var s=0,A=0;if(o[7704]|0||(o5(9520),Dt(34,9520,H|0)|0,A=7704,n[A>>2]=1,n[A+4>>2]=0),!(Gr(9520)|0)){s=9520,A=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(A|0));o5(9520)}return 9520}function Xke(s){return s=s|0,0}function Zke(s,A){s=s|0,A=A|0;var l=0,u=0,d=0,m=0,w=0,P=0,b=0,O=0,L=0,W=0;return L=C,C=C+32|0,d=L+24|0,w=L+16|0,P=L,b=L+8|0,m=n[s>>2]|0,u=n[s+4>>2]|0,n[P>>2]=m,n[P+4>>2]=u,W=pR()|0,O=W+24|0,s=wr(A,4)|0,n[b>>2]=s,A=W+28|0,l=n[A>>2]|0,l>>>0<(n[W+32>>2]|0)>>>0?(n[w>>2]=m,n[w+4>>2]=u,n[d>>2]=n[w>>2],n[d+4>>2]=n[w+4>>2],s5(l,d,s),s=(n[A>>2]|0)+12|0,n[A>>2]=s):($ke(O,P,b),s=n[A>>2]|0),C=L,((s-(n[O>>2]|0)|0)/12|0)+-1|0}function s5(s,A,l){s=s|0,A=A|0,l=l|0;var u=0;u=n[A+4>>2]|0,n[s>>2]=n[A>>2],n[s+4>>2]=u,n[s+8>>2]=l}function $ke(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0,w=0,P=0,b=0,O=0,L=0,W=0,ue=0;if(O=C,C=C+48|0,u=O+32|0,w=O+24|0,P=O,b=s+4|0,d=(((n[b>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=exe(s)|0,m>>>0>>0)An(s);else{L=n[s>>2]|0,ue=((n[s+8>>2]|0)-L|0)/12|0,W=ue<<1,txe(P,ue>>>0>>1>>>0?W>>>0>>0?d:W:m,((n[b>>2]|0)-L|0)/12|0,s+8|0),b=P+8|0,m=n[b>>2]|0,d=n[A+4>>2]|0,l=n[l>>2]|0,n[w>>2]=n[A>>2],n[w+4>>2]=d,n[u>>2]=n[w>>2],n[u+4>>2]=n[w+4>>2],s5(m,u,l),n[b>>2]=(n[b>>2]|0)+12,rxe(s,P),nxe(P),C=O;return}}function exe(s){return s=s|0,357913941}function txe(s,A,l,u){s=s|0,A=A|0,l=l|0,u=u|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=u;do if(A)if(A>>>0>357913941)Ot();else{d=Jt(A*12|0)|0;break}else d=0;while(0);n[s>>2]=d,u=d+(l*12|0)|0,n[s+8>>2]=u,n[s+4>>2]=u,n[s+12>>2]=d+(A*12|0)}function rxe(s,A){s=s|0,A=A|0;var l=0,u=0,d=0,m=0,w=0;u=n[s>>2]|0,w=s+4|0,m=A+4|0,d=(n[w>>2]|0)-u|0,l=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=l,(d|0)>0?(Tr(l|0,u|0,d|0)|0,u=m,l=n[m>>2]|0):u=m,m=n[s>>2]|0,n[s>>2]=l,n[u>>2]=m,m=A+8|0,d=n[w>>2]|0,n[w>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,w=A+12|0,s=n[m>>2]|0,n[m>>2]=n[w>>2],n[w>>2]=s,n[A>>2]=n[u>>2]}function nxe(s){s=s|0;var A=0,l=0,u=0;A=n[s+4>>2]|0,l=s+8|0,u=n[l>>2]|0,(u|0)!=(A|0)&&(n[l>>2]=u+(~(((u+-12-A|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&yt(s)}function o5(s){s=s|0,oxe(s)}function ixe(s){s=s|0,sxe(s+24|0)}function sxe(s){s=s|0;var A=0,l=0,u=0;l=n[s>>2]|0,u=l,l|0&&(s=s+4|0,A=n[s>>2]|0,(A|0)!=(l|0)&&(n[s>>2]=A+(~(((A+-12-u|0)>>>0)/12|0)*12|0)),yt(l))}function oxe(s){s=s|0;var A=0;A=nn()|0,sn(s,2,1,A,axe()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function axe(){return 1224}function Axe(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0,w=0,P=0;return d=C,C=C+16|0,m=d+8|0,w=d,P=lxe(s)|0,s=n[P+4>>2]|0,n[w>>2]=n[P>>2],n[w+4>>2]=s,n[m>>2]=n[w>>2],n[m+4>>2]=n[w+4>>2],u=+cxe(A,m,l),C=d,+u}function lxe(s){return s=s|0,(n[(pR()|0)+24>>2]|0)+(s*12|0)|0}function cxe(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0,w=0;return m=C,C=C+16|0,d=m,u=n[A>>2]|0,A=n[A+4>>2]|0,s=s+(A>>1)|0,A&1&&(u=n[(n[s>>2]|0)+u>>2]|0),Ef(d,l),d=If(d,l)|0,w=+zF(+nY[u&7](s,d)),C=m,+w}function uxe(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0,w=0,P=0;u=C,C=C+16|0,d=u+8|0,m=u,P=n[l>>2]|0,w=n[l+4>>2]|0,l=Dn(A)|0,n[m>>2]=P,n[m+4>>2]=w,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],fxe(s,l,d,1),C=u}function fxe(s,A,l,u){s=s|0,A=A|0,l=l|0,u=u|0;var d=0,m=0,w=0,P=0,b=0,O=0,L=0;d=C,C=C+32|0,m=d+16|0,L=d+8|0,P=d,O=n[l>>2]|0,b=n[l+4>>2]|0,w=n[s>>2]|0,s=hR()|0,n[L>>2]=O,n[L+4>>2]=b,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],l=gxe(m)|0,n[P>>2]=O,n[P+4>>2]=b,n[m>>2]=n[P>>2],n[m+4>>2]=n[P+4>>2],Sn(w,A,s,l,pxe(m,u)|0,u),C=d}function hR(){var s=0,A=0;if(o[7712]|0||(A5(9556),Dt(35,9556,H|0)|0,A=7712,n[A>>2]=1,n[A+4>>2]=0),!(Gr(9556)|0)){s=9556,A=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(A|0));A5(9556)}return 9556}function gxe(s){return s=s|0,0}function pxe(s,A){s=s|0,A=A|0;var l=0,u=0,d=0,m=0,w=0,P=0,b=0,O=0,L=0,W=0;return L=C,C=C+32|0,d=L+24|0,w=L+16|0,P=L,b=L+8|0,m=n[s>>2]|0,u=n[s+4>>2]|0,n[P>>2]=m,n[P+4>>2]=u,W=hR()|0,O=W+24|0,s=wr(A,4)|0,n[b>>2]=s,A=W+28|0,l=n[A>>2]|0,l>>>0<(n[W+32>>2]|0)>>>0?(n[w>>2]=m,n[w+4>>2]=u,n[d>>2]=n[w>>2],n[d+4>>2]=n[w+4>>2],a5(l,d,s),s=(n[A>>2]|0)+12|0,n[A>>2]=s):(hxe(O,P,b),s=n[A>>2]|0),C=L,((s-(n[O>>2]|0)|0)/12|0)+-1|0}function a5(s,A,l){s=s|0,A=A|0,l=l|0;var u=0;u=n[A+4>>2]|0,n[s>>2]=n[A>>2],n[s+4>>2]=u,n[s+8>>2]=l}function hxe(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0,w=0,P=0,b=0,O=0,L=0,W=0,ue=0;if(O=C,C=C+48|0,u=O+32|0,w=O+24|0,P=O,b=s+4|0,d=(((n[b>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=dxe(s)|0,m>>>0>>0)An(s);else{L=n[s>>2]|0,ue=((n[s+8>>2]|0)-L|0)/12|0,W=ue<<1,mxe(P,ue>>>0>>1>>>0?W>>>0>>0?d:W:m,((n[b>>2]|0)-L|0)/12|0,s+8|0),b=P+8|0,m=n[b>>2]|0,d=n[A+4>>2]|0,l=n[l>>2]|0,n[w>>2]=n[A>>2],n[w+4>>2]=d,n[u>>2]=n[w>>2],n[u+4>>2]=n[w+4>>2],a5(m,u,l),n[b>>2]=(n[b>>2]|0)+12,yxe(s,P),Cxe(P),C=O;return}}function dxe(s){return s=s|0,357913941}function mxe(s,A,l,u){s=s|0,A=A|0,l=l|0,u=u|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=u;do if(A)if(A>>>0>357913941)Ot();else{d=Jt(A*12|0)|0;break}else d=0;while(0);n[s>>2]=d,u=d+(l*12|0)|0,n[s+8>>2]=u,n[s+4>>2]=u,n[s+12>>2]=d+(A*12|0)}function yxe(s,A){s=s|0,A=A|0;var l=0,u=0,d=0,m=0,w=0;u=n[s>>2]|0,w=s+4|0,m=A+4|0,d=(n[w>>2]|0)-u|0,l=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=l,(d|0)>0?(Tr(l|0,u|0,d|0)|0,u=m,l=n[m>>2]|0):u=m,m=n[s>>2]|0,n[s>>2]=l,n[u>>2]=m,m=A+8|0,d=n[w>>2]|0,n[w>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,w=A+12|0,s=n[m>>2]|0,n[m>>2]=n[w>>2],n[w>>2]=s,n[A>>2]=n[u>>2]}function Cxe(s){s=s|0;var A=0,l=0,u=0;A=n[s+4>>2]|0,l=s+8|0,u=n[l>>2]|0,(u|0)!=(A|0)&&(n[l>>2]=u+(~(((u+-12-A|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&yt(s)}function A5(s){s=s|0,wxe(s)}function Exe(s){s=s|0,Ixe(s+24|0)}function Ixe(s){s=s|0;var A=0,l=0,u=0;l=n[s>>2]|0,u=l,l|0&&(s=s+4|0,A=n[s>>2]|0,(A|0)!=(l|0)&&(n[s>>2]=A+(~(((A+-12-u|0)>>>0)/12|0)*12|0)),yt(l))}function wxe(s){s=s|0;var A=0;A=nn()|0,sn(s,2,5,A,Bxe()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function Bxe(){return 1232}function Qxe(s,A){s=s|0,A=A|0;var l=0,u=0,d=0,m=0,w=0;return u=C,C=C+16|0,d=u+8|0,m=u,w=vxe(s)|0,s=n[w+4>>2]|0,n[m>>2]=n[w>>2],n[m+4>>2]=s,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],l=+Dxe(A,d),C=u,+l}function vxe(s){return s=s|0,(n[(hR()|0)+24>>2]|0)+(s*12|0)|0}function Dxe(s,A){s=s|0,A=A|0;var l=0;return l=n[A>>2]|0,A=n[A+4>>2]|0,s=s+(A>>1)|0,A&1&&(l=n[(n[s>>2]|0)+l>>2]|0),+ +zF(+rY[l&15](s))}function Sxe(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0,w=0,P=0;u=C,C=C+16|0,d=u+8|0,m=u,P=n[l>>2]|0,w=n[l+4>>2]|0,l=Dn(A)|0,n[m>>2]=P,n[m+4>>2]=w,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],kxe(s,l,d,1),C=u}function kxe(s,A,l,u){s=s|0,A=A|0,l=l|0,u=u|0;var d=0,m=0,w=0,P=0,b=0,O=0,L=0;d=C,C=C+32|0,m=d+16|0,L=d+8|0,P=d,O=n[l>>2]|0,b=n[l+4>>2]|0,w=n[s>>2]|0,s=dR()|0,n[L>>2]=O,n[L+4>>2]=b,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],l=xxe(m)|0,n[P>>2]=O,n[P+4>>2]=b,n[m>>2]=n[P>>2],n[m+4>>2]=n[P+4>>2],Sn(w,A,s,l,Pxe(m,u)|0,u),C=d}function dR(){var s=0,A=0;if(o[7720]|0||(c5(9592),Dt(36,9592,H|0)|0,A=7720,n[A>>2]=1,n[A+4>>2]=0),!(Gr(9592)|0)){s=9592,A=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(A|0));c5(9592)}return 9592}function xxe(s){return s=s|0,0}function Pxe(s,A){s=s|0,A=A|0;var l=0,u=0,d=0,m=0,w=0,P=0,b=0,O=0,L=0,W=0;return L=C,C=C+32|0,d=L+24|0,w=L+16|0,P=L,b=L+8|0,m=n[s>>2]|0,u=n[s+4>>2]|0,n[P>>2]=m,n[P+4>>2]=u,W=dR()|0,O=W+24|0,s=wr(A,4)|0,n[b>>2]=s,A=W+28|0,l=n[A>>2]|0,l>>>0<(n[W+32>>2]|0)>>>0?(n[w>>2]=m,n[w+4>>2]=u,n[d>>2]=n[w>>2],n[d+4>>2]=n[w+4>>2],l5(l,d,s),s=(n[A>>2]|0)+12|0,n[A>>2]=s):(bxe(O,P,b),s=n[A>>2]|0),C=L,((s-(n[O>>2]|0)|0)/12|0)+-1|0}function l5(s,A,l){s=s|0,A=A|0,l=l|0;var u=0;u=n[A+4>>2]|0,n[s>>2]=n[A>>2],n[s+4>>2]=u,n[s+8>>2]=l}function bxe(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0,w=0,P=0,b=0,O=0,L=0,W=0,ue=0;if(O=C,C=C+48|0,u=O+32|0,w=O+24|0,P=O,b=s+4|0,d=(((n[b>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=Fxe(s)|0,m>>>0>>0)An(s);else{L=n[s>>2]|0,ue=((n[s+8>>2]|0)-L|0)/12|0,W=ue<<1,Rxe(P,ue>>>0>>1>>>0?W>>>0>>0?d:W:m,((n[b>>2]|0)-L|0)/12|0,s+8|0),b=P+8|0,m=n[b>>2]|0,d=n[A+4>>2]|0,l=n[l>>2]|0,n[w>>2]=n[A>>2],n[w+4>>2]=d,n[u>>2]=n[w>>2],n[u+4>>2]=n[w+4>>2],l5(m,u,l),n[b>>2]=(n[b>>2]|0)+12,Txe(s,P),Nxe(P),C=O;return}}function Fxe(s){return s=s|0,357913941}function Rxe(s,A,l,u){s=s|0,A=A|0,l=l|0,u=u|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=u;do if(A)if(A>>>0>357913941)Ot();else{d=Jt(A*12|0)|0;break}else d=0;while(0);n[s>>2]=d,u=d+(l*12|0)|0,n[s+8>>2]=u,n[s+4>>2]=u,n[s+12>>2]=d+(A*12|0)}function Txe(s,A){s=s|0,A=A|0;var l=0,u=0,d=0,m=0,w=0;u=n[s>>2]|0,w=s+4|0,m=A+4|0,d=(n[w>>2]|0)-u|0,l=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=l,(d|0)>0?(Tr(l|0,u|0,d|0)|0,u=m,l=n[m>>2]|0):u=m,m=n[s>>2]|0,n[s>>2]=l,n[u>>2]=m,m=A+8|0,d=n[w>>2]|0,n[w>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,w=A+12|0,s=n[m>>2]|0,n[m>>2]=n[w>>2],n[w>>2]=s,n[A>>2]=n[u>>2]}function Nxe(s){s=s|0;var A=0,l=0,u=0;A=n[s+4>>2]|0,l=s+8|0,u=n[l>>2]|0,(u|0)!=(A|0)&&(n[l>>2]=u+(~(((u+-12-A|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&yt(s)}function c5(s){s=s|0,Oxe(s)}function Mxe(s){s=s|0,Lxe(s+24|0)}function Lxe(s){s=s|0;var A=0,l=0,u=0;l=n[s>>2]|0,u=l,l|0&&(s=s+4|0,A=n[s>>2]|0,(A|0)!=(l|0)&&(n[s>>2]=A+(~(((A+-12-u|0)>>>0)/12|0)*12|0)),yt(l))}function Oxe(s){s=s|0;var A=0;A=nn()|0,sn(s,2,7,A,Uxe()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function Uxe(){return 1276}function Kxe(s,A){s=s|0,A=A|0;var l=0,u=0,d=0,m=0;return l=C,C=C+16|0,u=l+8|0,d=l,m=_xe(s)|0,s=n[m+4>>2]|0,n[d>>2]=n[m>>2],n[d+4>>2]=s,n[u>>2]=n[d>>2],n[u+4>>2]=n[d+4>>2],A=Hxe(A,u)|0,C=l,A|0}function _xe(s){return s=s|0,(n[(dR()|0)+24>>2]|0)+(s*12|0)|0}function Hxe(s,A){s=s|0,A=A|0;var l=0,u=0,d=0;return d=C,C=C+16|0,u=d,l=n[A>>2]|0,A=n[A+4>>2]|0,s=s+(A>>1)|0,A&1&&(l=n[(n[s>>2]|0)+l>>2]|0),Qf[l&31](u,s),u=u5(u)|0,C=d,u|0}function u5(s){s=s|0;var A=0,l=0,u=0,d=0;return d=C,C=C+32|0,A=d+12|0,l=d,u=$F(f5()|0)|0,u?(eR(A,u),tR(l,A),qxe(s,l),s=rR(A)|0):s=Gxe(s)|0,C=d,s|0}function f5(){var s=0;return o[7736]|0||(ePe(9640),Dt(25,9640,H|0)|0,s=7736,n[s>>2]=1,n[s+4>>2]=0),9640}function qxe(s,A){s=s|0,A=A|0,Jxe(A,s,s+8|0)|0}function Gxe(s){s=s|0;var A=0,l=0,u=0,d=0,m=0,w=0,P=0;return l=C,C=C+16|0,d=l+4|0,w=l,u=hA(8)|0,A=u,P=Jt(16)|0,n[P>>2]=n[s>>2],n[P+4>>2]=n[s+4>>2],n[P+8>>2]=n[s+8>>2],n[P+12>>2]=n[s+12>>2],m=A+4|0,n[m>>2]=P,s=Jt(8)|0,m=n[m>>2]|0,n[w>>2]=0,n[d>>2]=n[w>>2],mR(s,m,d),n[u>>2]=s,C=l,A|0}function mR(s,A,l){s=s|0,A=A|0,l=l|0,n[s>>2]=A,l=Jt(16)|0,n[l+4>>2]=0,n[l+8>>2]=0,n[l>>2]=1244,n[l+12>>2]=A,n[s+4>>2]=l}function jxe(s){s=s|0,By(s),yt(s)}function Yxe(s){s=s|0,s=n[s+12>>2]|0,s|0&&yt(s)}function Wxe(s){s=s|0,yt(s)}function Jxe(s,A,l){return s=s|0,A=A|0,l=l|0,A=Vxe(n[s>>2]|0,A,l)|0,l=s+4|0,n[(n[l>>2]|0)+8>>2]=A,n[(n[l>>2]|0)+8>>2]|0}function Vxe(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0;return u=C,C=C+16|0,d=u,dA(d),s=Oa(s)|0,l=zxe(s,n[A>>2]|0,+E[l>>3])|0,mA(d),C=u,l|0}function zxe(s,A,l){s=s|0,A=A|0,l=+l;var u=0;return u=$A(Xxe()|0)|0,A=VF(A)|0,KA(0,u|0,s|0,A|0,+ +mf(l))|0}function Xxe(){var s=0;return o[7728]|0||(Zxe(9628),s=7728,n[s>>2]=1,n[s+4>>2]=0),9628}function Zxe(s){s=s|0,el(s,$xe()|0,2)}function $xe(){return 1264}function ePe(s){s=s|0,Jg(s)}function tPe(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0,w=0,P=0;u=C,C=C+16|0,d=u+8|0,m=u,P=n[l>>2]|0,w=n[l+4>>2]|0,l=Dn(A)|0,n[m>>2]=P,n[m+4>>2]=w,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],rPe(s,l,d,1),C=u}function rPe(s,A,l,u){s=s|0,A=A|0,l=l|0,u=u|0;var d=0,m=0,w=0,P=0,b=0,O=0,L=0;d=C,C=C+32|0,m=d+16|0,L=d+8|0,P=d,O=n[l>>2]|0,b=n[l+4>>2]|0,w=n[s>>2]|0,s=yR()|0,n[L>>2]=O,n[L+4>>2]=b,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],l=nPe(m)|0,n[P>>2]=O,n[P+4>>2]=b,n[m>>2]=n[P>>2],n[m+4>>2]=n[P+4>>2],Sn(w,A,s,l,iPe(m,u)|0,u),C=d}function yR(){var s=0,A=0;if(o[7744]|0||(p5(9684),Dt(37,9684,H|0)|0,A=7744,n[A>>2]=1,n[A+4>>2]=0),!(Gr(9684)|0)){s=9684,A=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(A|0));p5(9684)}return 9684}function nPe(s){return s=s|0,0}function iPe(s,A){s=s|0,A=A|0;var l=0,u=0,d=0,m=0,w=0,P=0,b=0,O=0,L=0,W=0;return L=C,C=C+32|0,d=L+24|0,w=L+16|0,P=L,b=L+8|0,m=n[s>>2]|0,u=n[s+4>>2]|0,n[P>>2]=m,n[P+4>>2]=u,W=yR()|0,O=W+24|0,s=wr(A,4)|0,n[b>>2]=s,A=W+28|0,l=n[A>>2]|0,l>>>0<(n[W+32>>2]|0)>>>0?(n[w>>2]=m,n[w+4>>2]=u,n[d>>2]=n[w>>2],n[d+4>>2]=n[w+4>>2],g5(l,d,s),s=(n[A>>2]|0)+12|0,n[A>>2]=s):(sPe(O,P,b),s=n[A>>2]|0),C=L,((s-(n[O>>2]|0)|0)/12|0)+-1|0}function g5(s,A,l){s=s|0,A=A|0,l=l|0;var u=0;u=n[A+4>>2]|0,n[s>>2]=n[A>>2],n[s+4>>2]=u,n[s+8>>2]=l}function sPe(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0,w=0,P=0,b=0,O=0,L=0,W=0,ue=0;if(O=C,C=C+48|0,u=O+32|0,w=O+24|0,P=O,b=s+4|0,d=(((n[b>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=oPe(s)|0,m>>>0>>0)An(s);else{L=n[s>>2]|0,ue=((n[s+8>>2]|0)-L|0)/12|0,W=ue<<1,aPe(P,ue>>>0>>1>>>0?W>>>0>>0?d:W:m,((n[b>>2]|0)-L|0)/12|0,s+8|0),b=P+8|0,m=n[b>>2]|0,d=n[A+4>>2]|0,l=n[l>>2]|0,n[w>>2]=n[A>>2],n[w+4>>2]=d,n[u>>2]=n[w>>2],n[u+4>>2]=n[w+4>>2],g5(m,u,l),n[b>>2]=(n[b>>2]|0)+12,APe(s,P),lPe(P),C=O;return}}function oPe(s){return s=s|0,357913941}function aPe(s,A,l,u){s=s|0,A=A|0,l=l|0,u=u|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=u;do if(A)if(A>>>0>357913941)Ot();else{d=Jt(A*12|0)|0;break}else d=0;while(0);n[s>>2]=d,u=d+(l*12|0)|0,n[s+8>>2]=u,n[s+4>>2]=u,n[s+12>>2]=d+(A*12|0)}function APe(s,A){s=s|0,A=A|0;var l=0,u=0,d=0,m=0,w=0;u=n[s>>2]|0,w=s+4|0,m=A+4|0,d=(n[w>>2]|0)-u|0,l=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=l,(d|0)>0?(Tr(l|0,u|0,d|0)|0,u=m,l=n[m>>2]|0):u=m,m=n[s>>2]|0,n[s>>2]=l,n[u>>2]=m,m=A+8|0,d=n[w>>2]|0,n[w>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,w=A+12|0,s=n[m>>2]|0,n[m>>2]=n[w>>2],n[w>>2]=s,n[A>>2]=n[u>>2]}function lPe(s){s=s|0;var A=0,l=0,u=0;A=n[s+4>>2]|0,l=s+8|0,u=n[l>>2]|0,(u|0)!=(A|0)&&(n[l>>2]=u+(~(((u+-12-A|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&yt(s)}function p5(s){s=s|0,fPe(s)}function cPe(s){s=s|0,uPe(s+24|0)}function uPe(s){s=s|0;var A=0,l=0,u=0;l=n[s>>2]|0,u=l,l|0&&(s=s+4|0,A=n[s>>2]|0,(A|0)!=(l|0)&&(n[s>>2]=A+(~(((A+-12-u|0)>>>0)/12|0)*12|0)),yt(l))}function fPe(s){s=s|0;var A=0;A=nn()|0,sn(s,2,5,A,gPe()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function gPe(){return 1280}function pPe(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0,w=0;return u=C,C=C+16|0,d=u+8|0,m=u,w=hPe(s)|0,s=n[w+4>>2]|0,n[m>>2]=n[w>>2],n[m+4>>2]=s,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],l=dPe(A,d,l)|0,C=u,l|0}function hPe(s){return s=s|0,(n[(yR()|0)+24>>2]|0)+(s*12|0)|0}function dPe(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0,w=0;return w=C,C=C+32|0,d=w,m=w+16|0,u=n[A>>2]|0,A=n[A+4>>2]|0,s=s+(A>>1)|0,A&1&&(u=n[(n[s>>2]|0)+u>>2]|0),Ef(m,l),m=If(m,l)|0,zI[u&15](d,s,m),m=u5(d)|0,C=w,m|0}function mPe(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0,w=0,P=0;u=C,C=C+16|0,d=u+8|0,m=u,P=n[l>>2]|0,w=n[l+4>>2]|0,l=Dn(A)|0,n[m>>2]=P,n[m+4>>2]=w,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],yPe(s,l,d,1),C=u}function yPe(s,A,l,u){s=s|0,A=A|0,l=l|0,u=u|0;var d=0,m=0,w=0,P=0,b=0,O=0,L=0;d=C,C=C+32|0,m=d+16|0,L=d+8|0,P=d,O=n[l>>2]|0,b=n[l+4>>2]|0,w=n[s>>2]|0,s=CR()|0,n[L>>2]=O,n[L+4>>2]=b,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],l=CPe(m)|0,n[P>>2]=O,n[P+4>>2]=b,n[m>>2]=n[P>>2],n[m+4>>2]=n[P+4>>2],Sn(w,A,s,l,EPe(m,u)|0,u),C=d}function CR(){var s=0,A=0;if(o[7752]|0||(d5(9720),Dt(38,9720,H|0)|0,A=7752,n[A>>2]=1,n[A+4>>2]=0),!(Gr(9720)|0)){s=9720,A=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(A|0));d5(9720)}return 9720}function CPe(s){return s=s|0,0}function EPe(s,A){s=s|0,A=A|0;var l=0,u=0,d=0,m=0,w=0,P=0,b=0,O=0,L=0,W=0;return L=C,C=C+32|0,d=L+24|0,w=L+16|0,P=L,b=L+8|0,m=n[s>>2]|0,u=n[s+4>>2]|0,n[P>>2]=m,n[P+4>>2]=u,W=CR()|0,O=W+24|0,s=wr(A,4)|0,n[b>>2]=s,A=W+28|0,l=n[A>>2]|0,l>>>0<(n[W+32>>2]|0)>>>0?(n[w>>2]=m,n[w+4>>2]=u,n[d>>2]=n[w>>2],n[d+4>>2]=n[w+4>>2],h5(l,d,s),s=(n[A>>2]|0)+12|0,n[A>>2]=s):(IPe(O,P,b),s=n[A>>2]|0),C=L,((s-(n[O>>2]|0)|0)/12|0)+-1|0}function h5(s,A,l){s=s|0,A=A|0,l=l|0;var u=0;u=n[A+4>>2]|0,n[s>>2]=n[A>>2],n[s+4>>2]=u,n[s+8>>2]=l}function IPe(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0,w=0,P=0,b=0,O=0,L=0,W=0,ue=0;if(O=C,C=C+48|0,u=O+32|0,w=O+24|0,P=O,b=s+4|0,d=(((n[b>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=wPe(s)|0,m>>>0>>0)An(s);else{L=n[s>>2]|0,ue=((n[s+8>>2]|0)-L|0)/12|0,W=ue<<1,BPe(P,ue>>>0>>1>>>0?W>>>0>>0?d:W:m,((n[b>>2]|0)-L|0)/12|0,s+8|0),b=P+8|0,m=n[b>>2]|0,d=n[A+4>>2]|0,l=n[l>>2]|0,n[w>>2]=n[A>>2],n[w+4>>2]=d,n[u>>2]=n[w>>2],n[u+4>>2]=n[w+4>>2],h5(m,u,l),n[b>>2]=(n[b>>2]|0)+12,QPe(s,P),vPe(P),C=O;return}}function wPe(s){return s=s|0,357913941}function BPe(s,A,l,u){s=s|0,A=A|0,l=l|0,u=u|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=u;do if(A)if(A>>>0>357913941)Ot();else{d=Jt(A*12|0)|0;break}else d=0;while(0);n[s>>2]=d,u=d+(l*12|0)|0,n[s+8>>2]=u,n[s+4>>2]=u,n[s+12>>2]=d+(A*12|0)}function QPe(s,A){s=s|0,A=A|0;var l=0,u=0,d=0,m=0,w=0;u=n[s>>2]|0,w=s+4|0,m=A+4|0,d=(n[w>>2]|0)-u|0,l=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=l,(d|0)>0?(Tr(l|0,u|0,d|0)|0,u=m,l=n[m>>2]|0):u=m,m=n[s>>2]|0,n[s>>2]=l,n[u>>2]=m,m=A+8|0,d=n[w>>2]|0,n[w>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,w=A+12|0,s=n[m>>2]|0,n[m>>2]=n[w>>2],n[w>>2]=s,n[A>>2]=n[u>>2]}function vPe(s){s=s|0;var A=0,l=0,u=0;A=n[s+4>>2]|0,l=s+8|0,u=n[l>>2]|0,(u|0)!=(A|0)&&(n[l>>2]=u+(~(((u+-12-A|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&yt(s)}function d5(s){s=s|0,kPe(s)}function DPe(s){s=s|0,SPe(s+24|0)}function SPe(s){s=s|0;var A=0,l=0,u=0;l=n[s>>2]|0,u=l,l|0&&(s=s+4|0,A=n[s>>2]|0,(A|0)!=(l|0)&&(n[s>>2]=A+(~(((A+-12-u|0)>>>0)/12|0)*12|0)),yt(l))}function kPe(s){s=s|0;var A=0;A=nn()|0,sn(s,2,8,A,xPe()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function xPe(){return 1288}function PPe(s,A){s=s|0,A=A|0;var l=0,u=0,d=0,m=0;return l=C,C=C+16|0,u=l+8|0,d=l,m=bPe(s)|0,s=n[m+4>>2]|0,n[d>>2]=n[m>>2],n[d+4>>2]=s,n[u>>2]=n[d>>2],n[u+4>>2]=n[d+4>>2],A=FPe(A,u)|0,C=l,A|0}function bPe(s){return s=s|0,(n[(CR()|0)+24>>2]|0)+(s*12|0)|0}function FPe(s,A){s=s|0,A=A|0;var l=0;return l=n[A>>2]|0,A=n[A+4>>2]|0,s=s+(A>>1)|0,A&1&&(l=n[(n[s>>2]|0)+l>>2]|0),bj(od[l&31](s)|0)|0}function RPe(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0,w=0,P=0;u=C,C=C+16|0,d=u+8|0,m=u,P=n[l>>2]|0,w=n[l+4>>2]|0,l=Dn(A)|0,n[m>>2]=P,n[m+4>>2]=w,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],TPe(s,l,d,0),C=u}function TPe(s,A,l,u){s=s|0,A=A|0,l=l|0,u=u|0;var d=0,m=0,w=0,P=0,b=0,O=0,L=0;d=C,C=C+32|0,m=d+16|0,L=d+8|0,P=d,O=n[l>>2]|0,b=n[l+4>>2]|0,w=n[s>>2]|0,s=ER()|0,n[L>>2]=O,n[L+4>>2]=b,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],l=NPe(m)|0,n[P>>2]=O,n[P+4>>2]=b,n[m>>2]=n[P>>2],n[m+4>>2]=n[P+4>>2],Sn(w,A,s,l,MPe(m,u)|0,u),C=d}function ER(){var s=0,A=0;if(o[7760]|0||(y5(9756),Dt(39,9756,H|0)|0,A=7760,n[A>>2]=1,n[A+4>>2]=0),!(Gr(9756)|0)){s=9756,A=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(A|0));y5(9756)}return 9756}function NPe(s){return s=s|0,0}function MPe(s,A){s=s|0,A=A|0;var l=0,u=0,d=0,m=0,w=0,P=0,b=0,O=0,L=0,W=0;return L=C,C=C+32|0,d=L+24|0,w=L+16|0,P=L,b=L+8|0,m=n[s>>2]|0,u=n[s+4>>2]|0,n[P>>2]=m,n[P+4>>2]=u,W=ER()|0,O=W+24|0,s=wr(A,4)|0,n[b>>2]=s,A=W+28|0,l=n[A>>2]|0,l>>>0<(n[W+32>>2]|0)>>>0?(n[w>>2]=m,n[w+4>>2]=u,n[d>>2]=n[w>>2],n[d+4>>2]=n[w+4>>2],m5(l,d,s),s=(n[A>>2]|0)+12|0,n[A>>2]=s):(LPe(O,P,b),s=n[A>>2]|0),C=L,((s-(n[O>>2]|0)|0)/12|0)+-1|0}function m5(s,A,l){s=s|0,A=A|0,l=l|0;var u=0;u=n[A+4>>2]|0,n[s>>2]=n[A>>2],n[s+4>>2]=u,n[s+8>>2]=l}function LPe(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0,w=0,P=0,b=0,O=0,L=0,W=0,ue=0;if(O=C,C=C+48|0,u=O+32|0,w=O+24|0,P=O,b=s+4|0,d=(((n[b>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=OPe(s)|0,m>>>0>>0)An(s);else{L=n[s>>2]|0,ue=((n[s+8>>2]|0)-L|0)/12|0,W=ue<<1,UPe(P,ue>>>0>>1>>>0?W>>>0>>0?d:W:m,((n[b>>2]|0)-L|0)/12|0,s+8|0),b=P+8|0,m=n[b>>2]|0,d=n[A+4>>2]|0,l=n[l>>2]|0,n[w>>2]=n[A>>2],n[w+4>>2]=d,n[u>>2]=n[w>>2],n[u+4>>2]=n[w+4>>2],m5(m,u,l),n[b>>2]=(n[b>>2]|0)+12,KPe(s,P),_Pe(P),C=O;return}}function OPe(s){return s=s|0,357913941}function UPe(s,A,l,u){s=s|0,A=A|0,l=l|0,u=u|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=u;do if(A)if(A>>>0>357913941)Ot();else{d=Jt(A*12|0)|0;break}else d=0;while(0);n[s>>2]=d,u=d+(l*12|0)|0,n[s+8>>2]=u,n[s+4>>2]=u,n[s+12>>2]=d+(A*12|0)}function KPe(s,A){s=s|0,A=A|0;var l=0,u=0,d=0,m=0,w=0;u=n[s>>2]|0,w=s+4|0,m=A+4|0,d=(n[w>>2]|0)-u|0,l=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=l,(d|0)>0?(Tr(l|0,u|0,d|0)|0,u=m,l=n[m>>2]|0):u=m,m=n[s>>2]|0,n[s>>2]=l,n[u>>2]=m,m=A+8|0,d=n[w>>2]|0,n[w>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,w=A+12|0,s=n[m>>2]|0,n[m>>2]=n[w>>2],n[w>>2]=s,n[A>>2]=n[u>>2]}function _Pe(s){s=s|0;var A=0,l=0,u=0;A=n[s+4>>2]|0,l=s+8|0,u=n[l>>2]|0,(u|0)!=(A|0)&&(n[l>>2]=u+(~(((u+-12-A|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&yt(s)}function y5(s){s=s|0,GPe(s)}function HPe(s){s=s|0,qPe(s+24|0)}function qPe(s){s=s|0;var A=0,l=0,u=0;l=n[s>>2]|0,u=l,l|0&&(s=s+4|0,A=n[s>>2]|0,(A|0)!=(l|0)&&(n[s>>2]=A+(~(((A+-12-u|0)>>>0)/12|0)*12|0)),yt(l))}function GPe(s){s=s|0;var A=0;A=nn()|0,sn(s,2,8,A,jPe()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function jPe(){return 1292}function YPe(s,A,l){s=s|0,A=A|0,l=+l;var u=0,d=0,m=0,w=0;u=C,C=C+16|0,d=u+8|0,m=u,w=WPe(s)|0,s=n[w+4>>2]|0,n[m>>2]=n[w>>2],n[m+4>>2]=s,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],JPe(A,d,l),C=u}function WPe(s){return s=s|0,(n[(ER()|0)+24>>2]|0)+(s*12|0)|0}function JPe(s,A,l){s=s|0,A=A|0,l=+l;var u=0,d=0,m=0;m=C,C=C+16|0,d=m,u=n[A>>2]|0,A=n[A+4>>2]|0,s=s+(A>>1)|0,A&1&&(u=n[(n[s>>2]|0)+u>>2]|0),Zc(d,l),l=+$c(d,l),$9[u&31](s,l),C=m}function VPe(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0,w=0,P=0;u=C,C=C+16|0,d=u+8|0,m=u,P=n[l>>2]|0,w=n[l+4>>2]|0,l=Dn(A)|0,n[m>>2]=P,n[m+4>>2]=w,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],zPe(s,l,d,0),C=u}function zPe(s,A,l,u){s=s|0,A=A|0,l=l|0,u=u|0;var d=0,m=0,w=0,P=0,b=0,O=0,L=0;d=C,C=C+32|0,m=d+16|0,L=d+8|0,P=d,O=n[l>>2]|0,b=n[l+4>>2]|0,w=n[s>>2]|0,s=IR()|0,n[L>>2]=O,n[L+4>>2]=b,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],l=XPe(m)|0,n[P>>2]=O,n[P+4>>2]=b,n[m>>2]=n[P>>2],n[m+4>>2]=n[P+4>>2],Sn(w,A,s,l,ZPe(m,u)|0,u),C=d}function IR(){var s=0,A=0;if(o[7768]|0||(E5(9792),Dt(40,9792,H|0)|0,A=7768,n[A>>2]=1,n[A+4>>2]=0),!(Gr(9792)|0)){s=9792,A=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(A|0));E5(9792)}return 9792}function XPe(s){return s=s|0,0}function ZPe(s,A){s=s|0,A=A|0;var l=0,u=0,d=0,m=0,w=0,P=0,b=0,O=0,L=0,W=0;return L=C,C=C+32|0,d=L+24|0,w=L+16|0,P=L,b=L+8|0,m=n[s>>2]|0,u=n[s+4>>2]|0,n[P>>2]=m,n[P+4>>2]=u,W=IR()|0,O=W+24|0,s=wr(A,4)|0,n[b>>2]=s,A=W+28|0,l=n[A>>2]|0,l>>>0<(n[W+32>>2]|0)>>>0?(n[w>>2]=m,n[w+4>>2]=u,n[d>>2]=n[w>>2],n[d+4>>2]=n[w+4>>2],C5(l,d,s),s=(n[A>>2]|0)+12|0,n[A>>2]=s):($Pe(O,P,b),s=n[A>>2]|0),C=L,((s-(n[O>>2]|0)|0)/12|0)+-1|0}function C5(s,A,l){s=s|0,A=A|0,l=l|0;var u=0;u=n[A+4>>2]|0,n[s>>2]=n[A>>2],n[s+4>>2]=u,n[s+8>>2]=l}function $Pe(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0,w=0,P=0,b=0,O=0,L=0,W=0,ue=0;if(O=C,C=C+48|0,u=O+32|0,w=O+24|0,P=O,b=s+4|0,d=(((n[b>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=ebe(s)|0,m>>>0>>0)An(s);else{L=n[s>>2]|0,ue=((n[s+8>>2]|0)-L|0)/12|0,W=ue<<1,tbe(P,ue>>>0>>1>>>0?W>>>0>>0?d:W:m,((n[b>>2]|0)-L|0)/12|0,s+8|0),b=P+8|0,m=n[b>>2]|0,d=n[A+4>>2]|0,l=n[l>>2]|0,n[w>>2]=n[A>>2],n[w+4>>2]=d,n[u>>2]=n[w>>2],n[u+4>>2]=n[w+4>>2],C5(m,u,l),n[b>>2]=(n[b>>2]|0)+12,rbe(s,P),nbe(P),C=O;return}}function ebe(s){return s=s|0,357913941}function tbe(s,A,l,u){s=s|0,A=A|0,l=l|0,u=u|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=u;do if(A)if(A>>>0>357913941)Ot();else{d=Jt(A*12|0)|0;break}else d=0;while(0);n[s>>2]=d,u=d+(l*12|0)|0,n[s+8>>2]=u,n[s+4>>2]=u,n[s+12>>2]=d+(A*12|0)}function rbe(s,A){s=s|0,A=A|0;var l=0,u=0,d=0,m=0,w=0;u=n[s>>2]|0,w=s+4|0,m=A+4|0,d=(n[w>>2]|0)-u|0,l=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=l,(d|0)>0?(Tr(l|0,u|0,d|0)|0,u=m,l=n[m>>2]|0):u=m,m=n[s>>2]|0,n[s>>2]=l,n[u>>2]=m,m=A+8|0,d=n[w>>2]|0,n[w>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,w=A+12|0,s=n[m>>2]|0,n[m>>2]=n[w>>2],n[w>>2]=s,n[A>>2]=n[u>>2]}function nbe(s){s=s|0;var A=0,l=0,u=0;A=n[s+4>>2]|0,l=s+8|0,u=n[l>>2]|0,(u|0)!=(A|0)&&(n[l>>2]=u+(~(((u+-12-A|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&yt(s)}function E5(s){s=s|0,obe(s)}function ibe(s){s=s|0,sbe(s+24|0)}function sbe(s){s=s|0;var A=0,l=0,u=0;l=n[s>>2]|0,u=l,l|0&&(s=s+4|0,A=n[s>>2]|0,(A|0)!=(l|0)&&(n[s>>2]=A+(~(((A+-12-u|0)>>>0)/12|0)*12|0)),yt(l))}function obe(s){s=s|0;var A=0;A=nn()|0,sn(s,2,1,A,abe()|0,2),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function abe(){return 1300}function Abe(s,A,l,u){s=s|0,A=A|0,l=l|0,u=+u;var d=0,m=0,w=0,P=0;d=C,C=C+16|0,m=d+8|0,w=d,P=lbe(s)|0,s=n[P+4>>2]|0,n[w>>2]=n[P>>2],n[w+4>>2]=s,n[m>>2]=n[w>>2],n[m+4>>2]=n[w+4>>2],cbe(A,m,l,u),C=d}function lbe(s){return s=s|0,(n[(IR()|0)+24>>2]|0)+(s*12|0)|0}function cbe(s,A,l,u){s=s|0,A=A|0,l=l|0,u=+u;var d=0,m=0,w=0,P=0;P=C,C=C+16|0,m=P+1|0,w=P,d=n[A>>2]|0,A=n[A+4>>2]|0,s=s+(A>>1)|0,A&1&&(d=n[(n[s>>2]|0)+d>>2]|0),Ef(m,l),m=If(m,l)|0,Zc(w,u),u=+$c(w,u),aY[d&15](s,m,u),C=P}function ube(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0,w=0,P=0;u=C,C=C+16|0,d=u+8|0,m=u,P=n[l>>2]|0,w=n[l+4>>2]|0,l=Dn(A)|0,n[m>>2]=P,n[m+4>>2]=w,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],fbe(s,l,d,0),C=u}function fbe(s,A,l,u){s=s|0,A=A|0,l=l|0,u=u|0;var d=0,m=0,w=0,P=0,b=0,O=0,L=0;d=C,C=C+32|0,m=d+16|0,L=d+8|0,P=d,O=n[l>>2]|0,b=n[l+4>>2]|0,w=n[s>>2]|0,s=wR()|0,n[L>>2]=O,n[L+4>>2]=b,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],l=gbe(m)|0,n[P>>2]=O,n[P+4>>2]=b,n[m>>2]=n[P>>2],n[m+4>>2]=n[P+4>>2],Sn(w,A,s,l,pbe(m,u)|0,u),C=d}function wR(){var s=0,A=0;if(o[7776]|0||(w5(9828),Dt(41,9828,H|0)|0,A=7776,n[A>>2]=1,n[A+4>>2]=0),!(Gr(9828)|0)){s=9828,A=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(A|0));w5(9828)}return 9828}function gbe(s){return s=s|0,0}function pbe(s,A){s=s|0,A=A|0;var l=0,u=0,d=0,m=0,w=0,P=0,b=0,O=0,L=0,W=0;return L=C,C=C+32|0,d=L+24|0,w=L+16|0,P=L,b=L+8|0,m=n[s>>2]|0,u=n[s+4>>2]|0,n[P>>2]=m,n[P+4>>2]=u,W=wR()|0,O=W+24|0,s=wr(A,4)|0,n[b>>2]=s,A=W+28|0,l=n[A>>2]|0,l>>>0<(n[W+32>>2]|0)>>>0?(n[w>>2]=m,n[w+4>>2]=u,n[d>>2]=n[w>>2],n[d+4>>2]=n[w+4>>2],I5(l,d,s),s=(n[A>>2]|0)+12|0,n[A>>2]=s):(hbe(O,P,b),s=n[A>>2]|0),C=L,((s-(n[O>>2]|0)|0)/12|0)+-1|0}function I5(s,A,l){s=s|0,A=A|0,l=l|0;var u=0;u=n[A+4>>2]|0,n[s>>2]=n[A>>2],n[s+4>>2]=u,n[s+8>>2]=l}function hbe(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0,w=0,P=0,b=0,O=0,L=0,W=0,ue=0;if(O=C,C=C+48|0,u=O+32|0,w=O+24|0,P=O,b=s+4|0,d=(((n[b>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=dbe(s)|0,m>>>0>>0)An(s);else{L=n[s>>2]|0,ue=((n[s+8>>2]|0)-L|0)/12|0,W=ue<<1,mbe(P,ue>>>0>>1>>>0?W>>>0>>0?d:W:m,((n[b>>2]|0)-L|0)/12|0,s+8|0),b=P+8|0,m=n[b>>2]|0,d=n[A+4>>2]|0,l=n[l>>2]|0,n[w>>2]=n[A>>2],n[w+4>>2]=d,n[u>>2]=n[w>>2],n[u+4>>2]=n[w+4>>2],I5(m,u,l),n[b>>2]=(n[b>>2]|0)+12,ybe(s,P),Cbe(P),C=O;return}}function dbe(s){return s=s|0,357913941}function mbe(s,A,l,u){s=s|0,A=A|0,l=l|0,u=u|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=u;do if(A)if(A>>>0>357913941)Ot();else{d=Jt(A*12|0)|0;break}else d=0;while(0);n[s>>2]=d,u=d+(l*12|0)|0,n[s+8>>2]=u,n[s+4>>2]=u,n[s+12>>2]=d+(A*12|0)}function ybe(s,A){s=s|0,A=A|0;var l=0,u=0,d=0,m=0,w=0;u=n[s>>2]|0,w=s+4|0,m=A+4|0,d=(n[w>>2]|0)-u|0,l=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=l,(d|0)>0?(Tr(l|0,u|0,d|0)|0,u=m,l=n[m>>2]|0):u=m,m=n[s>>2]|0,n[s>>2]=l,n[u>>2]=m,m=A+8|0,d=n[w>>2]|0,n[w>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,w=A+12|0,s=n[m>>2]|0,n[m>>2]=n[w>>2],n[w>>2]=s,n[A>>2]=n[u>>2]}function Cbe(s){s=s|0;var A=0,l=0,u=0;A=n[s+4>>2]|0,l=s+8|0,u=n[l>>2]|0,(u|0)!=(A|0)&&(n[l>>2]=u+(~(((u+-12-A|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&yt(s)}function w5(s){s=s|0,wbe(s)}function Ebe(s){s=s|0,Ibe(s+24|0)}function Ibe(s){s=s|0;var A=0,l=0,u=0;l=n[s>>2]|0,u=l,l|0&&(s=s+4|0,A=n[s>>2]|0,(A|0)!=(l|0)&&(n[s>>2]=A+(~(((A+-12-u|0)>>>0)/12|0)*12|0)),yt(l))}function wbe(s){s=s|0;var A=0;A=nn()|0,sn(s,2,7,A,Bbe()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function Bbe(){return 1312}function Qbe(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0,w=0;u=C,C=C+16|0,d=u+8|0,m=u,w=vbe(s)|0,s=n[w+4>>2]|0,n[m>>2]=n[w>>2],n[m+4>>2]=s,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],Dbe(A,d,l),C=u}function vbe(s){return s=s|0,(n[(wR()|0)+24>>2]|0)+(s*12|0)|0}function Dbe(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0;m=C,C=C+16|0,d=m,u=n[A>>2]|0,A=n[A+4>>2]|0,s=s+(A>>1)|0,A&1&&(u=n[(n[s>>2]|0)+u>>2]|0),Ef(d,l),d=If(d,l)|0,Qf[u&31](s,d),C=m}function Sbe(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0,w=0,P=0;u=C,C=C+16|0,d=u+8|0,m=u,P=n[l>>2]|0,w=n[l+4>>2]|0,l=Dn(A)|0,n[m>>2]=P,n[m+4>>2]=w,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],kbe(s,l,d,0),C=u}function kbe(s,A,l,u){s=s|0,A=A|0,l=l|0,u=u|0;var d=0,m=0,w=0,P=0,b=0,O=0,L=0;d=C,C=C+32|0,m=d+16|0,L=d+8|0,P=d,O=n[l>>2]|0,b=n[l+4>>2]|0,w=n[s>>2]|0,s=BR()|0,n[L>>2]=O,n[L+4>>2]=b,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],l=xbe(m)|0,n[P>>2]=O,n[P+4>>2]=b,n[m>>2]=n[P>>2],n[m+4>>2]=n[P+4>>2],Sn(w,A,s,l,Pbe(m,u)|0,u),C=d}function BR(){var s=0,A=0;if(o[7784]|0||(Q5(9864),Dt(42,9864,H|0)|0,A=7784,n[A>>2]=1,n[A+4>>2]=0),!(Gr(9864)|0)){s=9864,A=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(A|0));Q5(9864)}return 9864}function xbe(s){return s=s|0,0}function Pbe(s,A){s=s|0,A=A|0;var l=0,u=0,d=0,m=0,w=0,P=0,b=0,O=0,L=0,W=0;return L=C,C=C+32|0,d=L+24|0,w=L+16|0,P=L,b=L+8|0,m=n[s>>2]|0,u=n[s+4>>2]|0,n[P>>2]=m,n[P+4>>2]=u,W=BR()|0,O=W+24|0,s=wr(A,4)|0,n[b>>2]=s,A=W+28|0,l=n[A>>2]|0,l>>>0<(n[W+32>>2]|0)>>>0?(n[w>>2]=m,n[w+4>>2]=u,n[d>>2]=n[w>>2],n[d+4>>2]=n[w+4>>2],B5(l,d,s),s=(n[A>>2]|0)+12|0,n[A>>2]=s):(bbe(O,P,b),s=n[A>>2]|0),C=L,((s-(n[O>>2]|0)|0)/12|0)+-1|0}function B5(s,A,l){s=s|0,A=A|0,l=l|0;var u=0;u=n[A+4>>2]|0,n[s>>2]=n[A>>2],n[s+4>>2]=u,n[s+8>>2]=l}function bbe(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0,w=0,P=0,b=0,O=0,L=0,W=0,ue=0;if(O=C,C=C+48|0,u=O+32|0,w=O+24|0,P=O,b=s+4|0,d=(((n[b>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=Fbe(s)|0,m>>>0>>0)An(s);else{L=n[s>>2]|0,ue=((n[s+8>>2]|0)-L|0)/12|0,W=ue<<1,Rbe(P,ue>>>0>>1>>>0?W>>>0>>0?d:W:m,((n[b>>2]|0)-L|0)/12|0,s+8|0),b=P+8|0,m=n[b>>2]|0,d=n[A+4>>2]|0,l=n[l>>2]|0,n[w>>2]=n[A>>2],n[w+4>>2]=d,n[u>>2]=n[w>>2],n[u+4>>2]=n[w+4>>2],B5(m,u,l),n[b>>2]=(n[b>>2]|0)+12,Tbe(s,P),Nbe(P),C=O;return}}function Fbe(s){return s=s|0,357913941}function Rbe(s,A,l,u){s=s|0,A=A|0,l=l|0,u=u|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=u;do if(A)if(A>>>0>357913941)Ot();else{d=Jt(A*12|0)|0;break}else d=0;while(0);n[s>>2]=d,u=d+(l*12|0)|0,n[s+8>>2]=u,n[s+4>>2]=u,n[s+12>>2]=d+(A*12|0)}function Tbe(s,A){s=s|0,A=A|0;var l=0,u=0,d=0,m=0,w=0;u=n[s>>2]|0,w=s+4|0,m=A+4|0,d=(n[w>>2]|0)-u|0,l=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=l,(d|0)>0?(Tr(l|0,u|0,d|0)|0,u=m,l=n[m>>2]|0):u=m,m=n[s>>2]|0,n[s>>2]=l,n[u>>2]=m,m=A+8|0,d=n[w>>2]|0,n[w>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,w=A+12|0,s=n[m>>2]|0,n[m>>2]=n[w>>2],n[w>>2]=s,n[A>>2]=n[u>>2]}function Nbe(s){s=s|0;var A=0,l=0,u=0;A=n[s+4>>2]|0,l=s+8|0,u=n[l>>2]|0,(u|0)!=(A|0)&&(n[l>>2]=u+(~(((u+-12-A|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&yt(s)}function Q5(s){s=s|0,Obe(s)}function Mbe(s){s=s|0,Lbe(s+24|0)}function Lbe(s){s=s|0;var A=0,l=0,u=0;l=n[s>>2]|0,u=l,l|0&&(s=s+4|0,A=n[s>>2]|0,(A|0)!=(l|0)&&(n[s>>2]=A+(~(((A+-12-u|0)>>>0)/12|0)*12|0)),yt(l))}function Obe(s){s=s|0;var A=0;A=nn()|0,sn(s,2,8,A,Ube()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function Ube(){return 1320}function Kbe(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0,w=0;u=C,C=C+16|0,d=u+8|0,m=u,w=_be(s)|0,s=n[w+4>>2]|0,n[m>>2]=n[w>>2],n[m+4>>2]=s,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],Hbe(A,d,l),C=u}function _be(s){return s=s|0,(n[(BR()|0)+24>>2]|0)+(s*12|0)|0}function Hbe(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0;m=C,C=C+16|0,d=m,u=n[A>>2]|0,A=n[A+4>>2]|0,s=s+(A>>1)|0,A&1&&(u=n[(n[s>>2]|0)+u>>2]|0),qbe(d,l),d=Gbe(d,l)|0,Qf[u&31](s,d),C=m}function qbe(s,A){s=s|0,A=A|0}function Gbe(s,A){return s=s|0,A=A|0,jbe(A)|0}function jbe(s){return s=s|0,s|0}function Ybe(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0,w=0,P=0;u=C,C=C+16|0,d=u+8|0,m=u,P=n[l>>2]|0,w=n[l+4>>2]|0,l=Dn(A)|0,n[m>>2]=P,n[m+4>>2]=w,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],Wbe(s,l,d,0),C=u}function Wbe(s,A,l,u){s=s|0,A=A|0,l=l|0,u=u|0;var d=0,m=0,w=0,P=0,b=0,O=0,L=0;d=C,C=C+32|0,m=d+16|0,L=d+8|0,P=d,O=n[l>>2]|0,b=n[l+4>>2]|0,w=n[s>>2]|0,s=QR()|0,n[L>>2]=O,n[L+4>>2]=b,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],l=Jbe(m)|0,n[P>>2]=O,n[P+4>>2]=b,n[m>>2]=n[P>>2],n[m+4>>2]=n[P+4>>2],Sn(w,A,s,l,Vbe(m,u)|0,u),C=d}function QR(){var s=0,A=0;if(o[7792]|0||(D5(9900),Dt(43,9900,H|0)|0,A=7792,n[A>>2]=1,n[A+4>>2]=0),!(Gr(9900)|0)){s=9900,A=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(A|0));D5(9900)}return 9900}function Jbe(s){return s=s|0,0}function Vbe(s,A){s=s|0,A=A|0;var l=0,u=0,d=0,m=0,w=0,P=0,b=0,O=0,L=0,W=0;return L=C,C=C+32|0,d=L+24|0,w=L+16|0,P=L,b=L+8|0,m=n[s>>2]|0,u=n[s+4>>2]|0,n[P>>2]=m,n[P+4>>2]=u,W=QR()|0,O=W+24|0,s=wr(A,4)|0,n[b>>2]=s,A=W+28|0,l=n[A>>2]|0,l>>>0<(n[W+32>>2]|0)>>>0?(n[w>>2]=m,n[w+4>>2]=u,n[d>>2]=n[w>>2],n[d+4>>2]=n[w+4>>2],v5(l,d,s),s=(n[A>>2]|0)+12|0,n[A>>2]=s):(zbe(O,P,b),s=n[A>>2]|0),C=L,((s-(n[O>>2]|0)|0)/12|0)+-1|0}function v5(s,A,l){s=s|0,A=A|0,l=l|0;var u=0;u=n[A+4>>2]|0,n[s>>2]=n[A>>2],n[s+4>>2]=u,n[s+8>>2]=l}function zbe(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0,w=0,P=0,b=0,O=0,L=0,W=0,ue=0;if(O=C,C=C+48|0,u=O+32|0,w=O+24|0,P=O,b=s+4|0,d=(((n[b>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=Xbe(s)|0,m>>>0>>0)An(s);else{L=n[s>>2]|0,ue=((n[s+8>>2]|0)-L|0)/12|0,W=ue<<1,Zbe(P,ue>>>0>>1>>>0?W>>>0>>0?d:W:m,((n[b>>2]|0)-L|0)/12|0,s+8|0),b=P+8|0,m=n[b>>2]|0,d=n[A+4>>2]|0,l=n[l>>2]|0,n[w>>2]=n[A>>2],n[w+4>>2]=d,n[u>>2]=n[w>>2],n[u+4>>2]=n[w+4>>2],v5(m,u,l),n[b>>2]=(n[b>>2]|0)+12,$be(s,P),eFe(P),C=O;return}}function Xbe(s){return s=s|0,357913941}function Zbe(s,A,l,u){s=s|0,A=A|0,l=l|0,u=u|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=u;do if(A)if(A>>>0>357913941)Ot();else{d=Jt(A*12|0)|0;break}else d=0;while(0);n[s>>2]=d,u=d+(l*12|0)|0,n[s+8>>2]=u,n[s+4>>2]=u,n[s+12>>2]=d+(A*12|0)}function $be(s,A){s=s|0,A=A|0;var l=0,u=0,d=0,m=0,w=0;u=n[s>>2]|0,w=s+4|0,m=A+4|0,d=(n[w>>2]|0)-u|0,l=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=l,(d|0)>0?(Tr(l|0,u|0,d|0)|0,u=m,l=n[m>>2]|0):u=m,m=n[s>>2]|0,n[s>>2]=l,n[u>>2]=m,m=A+8|0,d=n[w>>2]|0,n[w>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,w=A+12|0,s=n[m>>2]|0,n[m>>2]=n[w>>2],n[w>>2]=s,n[A>>2]=n[u>>2]}function eFe(s){s=s|0;var A=0,l=0,u=0;A=n[s+4>>2]|0,l=s+8|0,u=n[l>>2]|0,(u|0)!=(A|0)&&(n[l>>2]=u+(~(((u+-12-A|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&yt(s)}function D5(s){s=s|0,nFe(s)}function tFe(s){s=s|0,rFe(s+24|0)}function rFe(s){s=s|0;var A=0,l=0,u=0;l=n[s>>2]|0,u=l,l|0&&(s=s+4|0,A=n[s>>2]|0,(A|0)!=(l|0)&&(n[s>>2]=A+(~(((A+-12-u|0)>>>0)/12|0)*12|0)),yt(l))}function nFe(s){s=s|0;var A=0;A=nn()|0,sn(s,2,22,A,iFe()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function iFe(){return 1344}function sFe(s,A){s=s|0,A=A|0;var l=0,u=0,d=0,m=0;l=C,C=C+16|0,u=l+8|0,d=l,m=oFe(s)|0,s=n[m+4>>2]|0,n[d>>2]=n[m>>2],n[d+4>>2]=s,n[u>>2]=n[d>>2],n[u+4>>2]=n[d+4>>2],aFe(A,u),C=l}function oFe(s){return s=s|0,(n[(QR()|0)+24>>2]|0)+(s*12|0)|0}function aFe(s,A){s=s|0,A=A|0;var l=0;l=n[A>>2]|0,A=n[A+4>>2]|0,s=s+(A>>1)|0,A&1&&(l=n[(n[s>>2]|0)+l>>2]|0),Bf[l&127](s)}function AFe(s,A,l,u){s=s|0,A=A|0,l=l|0,u=u|0;var d=0,m=0;m=n[s>>2]|0,d=vR()|0,s=lFe(l)|0,Sn(m,A,d,s,cFe(l,u)|0,u)}function vR(){var s=0,A=0;if(o[7800]|0||(k5(9936),Dt(44,9936,H|0)|0,A=7800,n[A>>2]=1,n[A+4>>2]=0),!(Gr(9936)|0)){s=9936,A=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(A|0));k5(9936)}return 9936}function lFe(s){return s=s|0,s|0}function cFe(s,A){s=s|0,A=A|0;var l=0,u=0,d=0,m=0,w=0,P=0,b=0;return P=C,C=C+16|0,d=P,m=P+4|0,n[d>>2]=s,b=vR()|0,w=b+24|0,A=wr(A,4)|0,n[m>>2]=A,l=b+28|0,u=n[l>>2]|0,u>>>0<(n[b+32>>2]|0)>>>0?(S5(u,s,A),A=(n[l>>2]|0)+8|0,n[l>>2]=A):(uFe(w,d,m),A=n[l>>2]|0),C=P,(A-(n[w>>2]|0)>>3)+-1|0}function S5(s,A,l){s=s|0,A=A|0,l=l|0,n[s>>2]=A,n[s+4>>2]=l}function uFe(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0,w=0,P=0,b=0,O=0,L=0;if(P=C,C=C+32|0,d=P,m=s+4|0,w=((n[m>>2]|0)-(n[s>>2]|0)>>3)+1|0,u=fFe(s)|0,u>>>0>>0)An(s);else{b=n[s>>2]|0,L=(n[s+8>>2]|0)-b|0,O=L>>2,gFe(d,L>>3>>>0>>1>>>0?O>>>0>>0?w:O:u,(n[m>>2]|0)-b>>3,s+8|0),w=d+8|0,S5(n[w>>2]|0,n[A>>2]|0,n[l>>2]|0),n[w>>2]=(n[w>>2]|0)+8,pFe(s,d),hFe(d),C=P;return}}function fFe(s){return s=s|0,536870911}function gFe(s,A,l,u){s=s|0,A=A|0,l=l|0,u=u|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=u;do if(A)if(A>>>0>536870911)Ot();else{d=Jt(A<<3)|0;break}else d=0;while(0);n[s>>2]=d,u=d+(l<<3)|0,n[s+8>>2]=u,n[s+4>>2]=u,n[s+12>>2]=d+(A<<3)}function pFe(s,A){s=s|0,A=A|0;var l=0,u=0,d=0,m=0,w=0;u=n[s>>2]|0,w=s+4|0,m=A+4|0,d=(n[w>>2]|0)-u|0,l=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=l,(d|0)>0?(Tr(l|0,u|0,d|0)|0,u=m,l=n[m>>2]|0):u=m,m=n[s>>2]|0,n[s>>2]=l,n[u>>2]=m,m=A+8|0,d=n[w>>2]|0,n[w>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,w=A+12|0,s=n[m>>2]|0,n[m>>2]=n[w>>2],n[w>>2]=s,n[A>>2]=n[u>>2]}function hFe(s){s=s|0;var A=0,l=0,u=0;A=n[s+4>>2]|0,l=s+8|0,u=n[l>>2]|0,(u|0)!=(A|0)&&(n[l>>2]=u+(~((u+-8-A|0)>>>3)<<3)),s=n[s>>2]|0,s|0&&yt(s)}function k5(s){s=s|0,yFe(s)}function dFe(s){s=s|0,mFe(s+24|0)}function mFe(s){s=s|0;var A=0,l=0,u=0;l=n[s>>2]|0,u=l,l|0&&(s=s+4|0,A=n[s>>2]|0,(A|0)!=(l|0)&&(n[s>>2]=A+(~((A+-8-u|0)>>>3)<<3)),yt(l))}function yFe(s){s=s|0;var A=0;A=nn()|0,sn(s,1,23,A,r5()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function CFe(s,A){s=s|0,A=A|0,IFe(n[(EFe(s)|0)>>2]|0,A)}function EFe(s){return s=s|0,(n[(vR()|0)+24>>2]|0)+(s<<3)|0}function IFe(s,A){s=s|0,A=A|0;var l=0,u=0;l=C,C=C+16|0,u=l,uR(u,A),A=fR(u,A)|0,Bf[s&127](A),C=l}function wFe(s,A,l,u){s=s|0,A=A|0,l=l|0,u=u|0;var d=0,m=0;m=n[s>>2]|0,d=DR()|0,s=BFe(l)|0,Sn(m,A,d,s,QFe(l,u)|0,u)}function DR(){var s=0,A=0;if(o[7808]|0||(P5(9972),Dt(45,9972,H|0)|0,A=7808,n[A>>2]=1,n[A+4>>2]=0),!(Gr(9972)|0)){s=9972,A=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(A|0));P5(9972)}return 9972}function BFe(s){return s=s|0,s|0}function QFe(s,A){s=s|0,A=A|0;var l=0,u=0,d=0,m=0,w=0,P=0,b=0;return P=C,C=C+16|0,d=P,m=P+4|0,n[d>>2]=s,b=DR()|0,w=b+24|0,A=wr(A,4)|0,n[m>>2]=A,l=b+28|0,u=n[l>>2]|0,u>>>0<(n[b+32>>2]|0)>>>0?(x5(u,s,A),A=(n[l>>2]|0)+8|0,n[l>>2]=A):(vFe(w,d,m),A=n[l>>2]|0),C=P,(A-(n[w>>2]|0)>>3)+-1|0}function x5(s,A,l){s=s|0,A=A|0,l=l|0,n[s>>2]=A,n[s+4>>2]=l}function vFe(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0,w=0,P=0,b=0,O=0,L=0;if(P=C,C=C+32|0,d=P,m=s+4|0,w=((n[m>>2]|0)-(n[s>>2]|0)>>3)+1|0,u=DFe(s)|0,u>>>0>>0)An(s);else{b=n[s>>2]|0,L=(n[s+8>>2]|0)-b|0,O=L>>2,SFe(d,L>>3>>>0>>1>>>0?O>>>0>>0?w:O:u,(n[m>>2]|0)-b>>3,s+8|0),w=d+8|0,x5(n[w>>2]|0,n[A>>2]|0,n[l>>2]|0),n[w>>2]=(n[w>>2]|0)+8,kFe(s,d),xFe(d),C=P;return}}function DFe(s){return s=s|0,536870911}function SFe(s,A,l,u){s=s|0,A=A|0,l=l|0,u=u|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=u;do if(A)if(A>>>0>536870911)Ot();else{d=Jt(A<<3)|0;break}else d=0;while(0);n[s>>2]=d,u=d+(l<<3)|0,n[s+8>>2]=u,n[s+4>>2]=u,n[s+12>>2]=d+(A<<3)}function kFe(s,A){s=s|0,A=A|0;var l=0,u=0,d=0,m=0,w=0;u=n[s>>2]|0,w=s+4|0,m=A+4|0,d=(n[w>>2]|0)-u|0,l=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=l,(d|0)>0?(Tr(l|0,u|0,d|0)|0,u=m,l=n[m>>2]|0):u=m,m=n[s>>2]|0,n[s>>2]=l,n[u>>2]=m,m=A+8|0,d=n[w>>2]|0,n[w>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,w=A+12|0,s=n[m>>2]|0,n[m>>2]=n[w>>2],n[w>>2]=s,n[A>>2]=n[u>>2]}function xFe(s){s=s|0;var A=0,l=0,u=0;A=n[s+4>>2]|0,l=s+8|0,u=n[l>>2]|0,(u|0)!=(A|0)&&(n[l>>2]=u+(~((u+-8-A|0)>>>3)<<3)),s=n[s>>2]|0,s|0&&yt(s)}function P5(s){s=s|0,FFe(s)}function PFe(s){s=s|0,bFe(s+24|0)}function bFe(s){s=s|0;var A=0,l=0,u=0;l=n[s>>2]|0,u=l,l|0&&(s=s+4|0,A=n[s>>2]|0,(A|0)!=(l|0)&&(n[s>>2]=A+(~((A+-8-u|0)>>>3)<<3)),yt(l))}function FFe(s){s=s|0;var A=0;A=nn()|0,sn(s,1,9,A,RFe()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function RFe(){return 1348}function TFe(s,A){return s=s|0,A=A|0,MFe(n[(NFe(s)|0)>>2]|0,A)|0}function NFe(s){return s=s|0,(n[(DR()|0)+24>>2]|0)+(s<<3)|0}function MFe(s,A){s=s|0,A=A|0;var l=0,u=0;return l=C,C=C+16|0,u=l,b5(u,A),A=F5(u,A)|0,A=uv(od[s&31](A)|0)|0,C=l,A|0}function b5(s,A){s=s|0,A=A|0}function F5(s,A){return s=s|0,A=A|0,LFe(A)|0}function LFe(s){return s=s|0,s|0}function OFe(s,A,l,u){s=s|0,A=A|0,l=l|0,u=u|0;var d=0,m=0;m=n[s>>2]|0,d=SR()|0,s=UFe(l)|0,Sn(m,A,d,s,KFe(l,u)|0,u)}function SR(){var s=0,A=0;if(o[7816]|0||(T5(10008),Dt(46,10008,H|0)|0,A=7816,n[A>>2]=1,n[A+4>>2]=0),!(Gr(10008)|0)){s=10008,A=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(A|0));T5(10008)}return 10008}function UFe(s){return s=s|0,s|0}function KFe(s,A){s=s|0,A=A|0;var l=0,u=0,d=0,m=0,w=0,P=0,b=0;return P=C,C=C+16|0,d=P,m=P+4|0,n[d>>2]=s,b=SR()|0,w=b+24|0,A=wr(A,4)|0,n[m>>2]=A,l=b+28|0,u=n[l>>2]|0,u>>>0<(n[b+32>>2]|0)>>>0?(R5(u,s,A),A=(n[l>>2]|0)+8|0,n[l>>2]=A):(_Fe(w,d,m),A=n[l>>2]|0),C=P,(A-(n[w>>2]|0)>>3)+-1|0}function R5(s,A,l){s=s|0,A=A|0,l=l|0,n[s>>2]=A,n[s+4>>2]=l}function _Fe(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0,w=0,P=0,b=0,O=0,L=0;if(P=C,C=C+32|0,d=P,m=s+4|0,w=((n[m>>2]|0)-(n[s>>2]|0)>>3)+1|0,u=HFe(s)|0,u>>>0>>0)An(s);else{b=n[s>>2]|0,L=(n[s+8>>2]|0)-b|0,O=L>>2,qFe(d,L>>3>>>0>>1>>>0?O>>>0>>0?w:O:u,(n[m>>2]|0)-b>>3,s+8|0),w=d+8|0,R5(n[w>>2]|0,n[A>>2]|0,n[l>>2]|0),n[w>>2]=(n[w>>2]|0)+8,GFe(s,d),jFe(d),C=P;return}}function HFe(s){return s=s|0,536870911}function qFe(s,A,l,u){s=s|0,A=A|0,l=l|0,u=u|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=u;do if(A)if(A>>>0>536870911)Ot();else{d=Jt(A<<3)|0;break}else d=0;while(0);n[s>>2]=d,u=d+(l<<3)|0,n[s+8>>2]=u,n[s+4>>2]=u,n[s+12>>2]=d+(A<<3)}function GFe(s,A){s=s|0,A=A|0;var l=0,u=0,d=0,m=0,w=0;u=n[s>>2]|0,w=s+4|0,m=A+4|0,d=(n[w>>2]|0)-u|0,l=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=l,(d|0)>0?(Tr(l|0,u|0,d|0)|0,u=m,l=n[m>>2]|0):u=m,m=n[s>>2]|0,n[s>>2]=l,n[u>>2]=m,m=A+8|0,d=n[w>>2]|0,n[w>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,w=A+12|0,s=n[m>>2]|0,n[m>>2]=n[w>>2],n[w>>2]=s,n[A>>2]=n[u>>2]}function jFe(s){s=s|0;var A=0,l=0,u=0;A=n[s+4>>2]|0,l=s+8|0,u=n[l>>2]|0,(u|0)!=(A|0)&&(n[l>>2]=u+(~((u+-8-A|0)>>>3)<<3)),s=n[s>>2]|0,s|0&&yt(s)}function T5(s){s=s|0,JFe(s)}function YFe(s){s=s|0,WFe(s+24|0)}function WFe(s){s=s|0;var A=0,l=0,u=0;l=n[s>>2]|0,u=l,l|0&&(s=s+4|0,A=n[s>>2]|0,(A|0)!=(l|0)&&(n[s>>2]=A+(~((A+-8-u|0)>>>3)<<3)),yt(l))}function JFe(s){s=s|0;var A=0;A=nn()|0,sn(s,1,15,A,zj()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function VFe(s){return s=s|0,XFe(n[(zFe(s)|0)>>2]|0)|0}function zFe(s){return s=s|0,(n[(SR()|0)+24>>2]|0)+(s<<3)|0}function XFe(s){return s=s|0,uv(Dv[s&7]()|0)|0}function ZFe(){var s=0;return o[7832]|0||(oRe(10052),Dt(25,10052,H|0)|0,s=7832,n[s>>2]=1,n[s+4>>2]=0),10052}function $Fe(s,A){s=s|0,A=A|0,n[s>>2]=eRe()|0,n[s+4>>2]=tRe()|0,n[s+12>>2]=A,n[s+8>>2]=rRe()|0,n[s+32>>2]=2}function eRe(){return 11709}function tRe(){return 1188}function rRe(){return gv()|0}function nRe(s,A,l,u){s=s|0,A=A|0,l=l|0,u=u|0,(Zg(u,896)|0)==512?l|0&&(iRe(l),yt(l)):A|0&&(Jc(A),yt(A))}function Zg(s,A){return s=s|0,A=A|0,A&s|0}function iRe(s){s=s|0,s=n[s+4>>2]|0,s|0&&ep(s)}function gv(){var s=0;return o[7824]|0||(n[2511]=sRe()|0,n[2512]=0,s=7824,n[s>>2]=1,n[s+4>>2]=0),10044}function sRe(){return 0}function oRe(s){s=s|0,Jg(s)}function aRe(s){s=s|0;var A=0,l=0,u=0,d=0,m=0;A=C,C=C+32|0,l=A+24|0,m=A+16|0,d=A+8|0,u=A,ARe(s,4827),lRe(s,4834,3)|0,cRe(s,3682,47)|0,n[m>>2]=9,n[m+4>>2]=0,n[l>>2]=n[m>>2],n[l+4>>2]=n[m+4>>2],uRe(s,4841,l)|0,n[d>>2]=1,n[d+4>>2]=0,n[l>>2]=n[d>>2],n[l+4>>2]=n[d+4>>2],fRe(s,4871,l)|0,n[u>>2]=10,n[u+4>>2]=0,n[l>>2]=n[u>>2],n[l+4>>2]=n[u+4>>2],gRe(s,4891,l)|0,C=A}function ARe(s,A){s=s|0,A=A|0;var l=0;l=jTe()|0,n[s>>2]=l,YTe(l,A),$g(n[s>>2]|0)}function lRe(s,A,l){return s=s|0,A=A|0,l=l|0,xTe(s,Dn(A)|0,l,0),s|0}function cRe(s,A,l){return s=s|0,A=A|0,l=l|0,pTe(s,Dn(A)|0,l,0),s|0}function uRe(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0,w=0;return u=C,C=C+16|0,d=u+8|0,m=u,w=n[l+4>>2]|0,n[m>>2]=n[l>>2],n[m+4>>2]=w,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],VRe(s,A,d),C=u,s|0}function fRe(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0,w=0;return u=C,C=C+16|0,d=u+8|0,m=u,w=n[l+4>>2]|0,n[m>>2]=n[l>>2],n[m+4>>2]=w,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],PRe(s,A,d),C=u,s|0}function gRe(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0,w=0;return u=C,C=C+16|0,d=u+8|0,m=u,w=n[l+4>>2]|0,n[m>>2]=n[l>>2],n[m+4>>2]=w,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],pRe(s,A,d),C=u,s|0}function pRe(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0,w=0,P=0;u=C,C=C+16|0,d=u+8|0,m=u,P=n[l>>2]|0,w=n[l+4>>2]|0,l=Dn(A)|0,n[m>>2]=P,n[m+4>>2]=w,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],hRe(s,l,d,1),C=u}function hRe(s,A,l,u){s=s|0,A=A|0,l=l|0,u=u|0;var d=0,m=0,w=0,P=0,b=0,O=0,L=0;d=C,C=C+32|0,m=d+16|0,L=d+8|0,P=d,O=n[l>>2]|0,b=n[l+4>>2]|0,w=n[s>>2]|0,s=kR()|0,n[L>>2]=O,n[L+4>>2]=b,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],l=dRe(m)|0,n[P>>2]=O,n[P+4>>2]=b,n[m>>2]=n[P>>2],n[m+4>>2]=n[P+4>>2],Sn(w,A,s,l,mRe(m,u)|0,u),C=d}function kR(){var s=0,A=0;if(o[7840]|0||(M5(10100),Dt(48,10100,H|0)|0,A=7840,n[A>>2]=1,n[A+4>>2]=0),!(Gr(10100)|0)){s=10100,A=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(A|0));M5(10100)}return 10100}function dRe(s){return s=s|0,0}function mRe(s,A){s=s|0,A=A|0;var l=0,u=0,d=0,m=0,w=0,P=0,b=0,O=0,L=0,W=0;return L=C,C=C+32|0,d=L+24|0,w=L+16|0,P=L,b=L+8|0,m=n[s>>2]|0,u=n[s+4>>2]|0,n[P>>2]=m,n[P+4>>2]=u,W=kR()|0,O=W+24|0,s=wr(A,4)|0,n[b>>2]=s,A=W+28|0,l=n[A>>2]|0,l>>>0<(n[W+32>>2]|0)>>>0?(n[w>>2]=m,n[w+4>>2]=u,n[d>>2]=n[w>>2],n[d+4>>2]=n[w+4>>2],N5(l,d,s),s=(n[A>>2]|0)+12|0,n[A>>2]=s):(yRe(O,P,b),s=n[A>>2]|0),C=L,((s-(n[O>>2]|0)|0)/12|0)+-1|0}function N5(s,A,l){s=s|0,A=A|0,l=l|0;var u=0;u=n[A+4>>2]|0,n[s>>2]=n[A>>2],n[s+4>>2]=u,n[s+8>>2]=l}function yRe(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0,w=0,P=0,b=0,O=0,L=0,W=0,ue=0;if(O=C,C=C+48|0,u=O+32|0,w=O+24|0,P=O,b=s+4|0,d=(((n[b>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=CRe(s)|0,m>>>0>>0)An(s);else{L=n[s>>2]|0,ue=((n[s+8>>2]|0)-L|0)/12|0,W=ue<<1,ERe(P,ue>>>0>>1>>>0?W>>>0>>0?d:W:m,((n[b>>2]|0)-L|0)/12|0,s+8|0),b=P+8|0,m=n[b>>2]|0,d=n[A+4>>2]|0,l=n[l>>2]|0,n[w>>2]=n[A>>2],n[w+4>>2]=d,n[u>>2]=n[w>>2],n[u+4>>2]=n[w+4>>2],N5(m,u,l),n[b>>2]=(n[b>>2]|0)+12,IRe(s,P),wRe(P),C=O;return}}function CRe(s){return s=s|0,357913941}function ERe(s,A,l,u){s=s|0,A=A|0,l=l|0,u=u|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=u;do if(A)if(A>>>0>357913941)Ot();else{d=Jt(A*12|0)|0;break}else d=0;while(0);n[s>>2]=d,u=d+(l*12|0)|0,n[s+8>>2]=u,n[s+4>>2]=u,n[s+12>>2]=d+(A*12|0)}function IRe(s,A){s=s|0,A=A|0;var l=0,u=0,d=0,m=0,w=0;u=n[s>>2]|0,w=s+4|0,m=A+4|0,d=(n[w>>2]|0)-u|0,l=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=l,(d|0)>0?(Tr(l|0,u|0,d|0)|0,u=m,l=n[m>>2]|0):u=m,m=n[s>>2]|0,n[s>>2]=l,n[u>>2]=m,m=A+8|0,d=n[w>>2]|0,n[w>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,w=A+12|0,s=n[m>>2]|0,n[m>>2]=n[w>>2],n[w>>2]=s,n[A>>2]=n[u>>2]}function wRe(s){s=s|0;var A=0,l=0,u=0;A=n[s+4>>2]|0,l=s+8|0,u=n[l>>2]|0,(u|0)!=(A|0)&&(n[l>>2]=u+(~(((u+-12-A|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&yt(s)}function M5(s){s=s|0,vRe(s)}function BRe(s){s=s|0,QRe(s+24|0)}function QRe(s){s=s|0;var A=0,l=0,u=0;l=n[s>>2]|0,u=l,l|0&&(s=s+4|0,A=n[s>>2]|0,(A|0)!=(l|0)&&(n[s>>2]=A+(~(((A+-12-u|0)>>>0)/12|0)*12|0)),yt(l))}function vRe(s){s=s|0;var A=0;A=nn()|0,sn(s,2,6,A,DRe()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function DRe(){return 1364}function SRe(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0,w=0;return u=C,C=C+16|0,d=u+8|0,m=u,w=kRe(s)|0,s=n[w+4>>2]|0,n[m>>2]=n[w>>2],n[m+4>>2]=s,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],l=xRe(A,d,l)|0,C=u,l|0}function kRe(s){return s=s|0,(n[(kR()|0)+24>>2]|0)+(s*12|0)|0}function xRe(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0;return m=C,C=C+16|0,d=m,u=n[A>>2]|0,A=n[A+4>>2]|0,s=s+(A>>1)|0,A&1&&(u=n[(n[s>>2]|0)+u>>2]|0),Ef(d,l),d=If(d,l)|0,d=qj(nT[u&15](s,d)|0)|0,C=m,d|0}function PRe(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0,w=0,P=0;u=C,C=C+16|0,d=u+8|0,m=u,P=n[l>>2]|0,w=n[l+4>>2]|0,l=Dn(A)|0,n[m>>2]=P,n[m+4>>2]=w,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],bRe(s,l,d,0),C=u}function bRe(s,A,l,u){s=s|0,A=A|0,l=l|0,u=u|0;var d=0,m=0,w=0,P=0,b=0,O=0,L=0;d=C,C=C+32|0,m=d+16|0,L=d+8|0,P=d,O=n[l>>2]|0,b=n[l+4>>2]|0,w=n[s>>2]|0,s=xR()|0,n[L>>2]=O,n[L+4>>2]=b,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],l=FRe(m)|0,n[P>>2]=O,n[P+4>>2]=b,n[m>>2]=n[P>>2],n[m+4>>2]=n[P+4>>2],Sn(w,A,s,l,RRe(m,u)|0,u),C=d}function xR(){var s=0,A=0;if(o[7848]|0||(O5(10136),Dt(49,10136,H|0)|0,A=7848,n[A>>2]=1,n[A+4>>2]=0),!(Gr(10136)|0)){s=10136,A=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(A|0));O5(10136)}return 10136}function FRe(s){return s=s|0,0}function RRe(s,A){s=s|0,A=A|0;var l=0,u=0,d=0,m=0,w=0,P=0,b=0,O=0,L=0,W=0;return L=C,C=C+32|0,d=L+24|0,w=L+16|0,P=L,b=L+8|0,m=n[s>>2]|0,u=n[s+4>>2]|0,n[P>>2]=m,n[P+4>>2]=u,W=xR()|0,O=W+24|0,s=wr(A,4)|0,n[b>>2]=s,A=W+28|0,l=n[A>>2]|0,l>>>0<(n[W+32>>2]|0)>>>0?(n[w>>2]=m,n[w+4>>2]=u,n[d>>2]=n[w>>2],n[d+4>>2]=n[w+4>>2],L5(l,d,s),s=(n[A>>2]|0)+12|0,n[A>>2]=s):(TRe(O,P,b),s=n[A>>2]|0),C=L,((s-(n[O>>2]|0)|0)/12|0)+-1|0}function L5(s,A,l){s=s|0,A=A|0,l=l|0;var u=0;u=n[A+4>>2]|0,n[s>>2]=n[A>>2],n[s+4>>2]=u,n[s+8>>2]=l}function TRe(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0,w=0,P=0,b=0,O=0,L=0,W=0,ue=0;if(O=C,C=C+48|0,u=O+32|0,w=O+24|0,P=O,b=s+4|0,d=(((n[b>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=NRe(s)|0,m>>>0>>0)An(s);else{L=n[s>>2]|0,ue=((n[s+8>>2]|0)-L|0)/12|0,W=ue<<1,MRe(P,ue>>>0>>1>>>0?W>>>0>>0?d:W:m,((n[b>>2]|0)-L|0)/12|0,s+8|0),b=P+8|0,m=n[b>>2]|0,d=n[A+4>>2]|0,l=n[l>>2]|0,n[w>>2]=n[A>>2],n[w+4>>2]=d,n[u>>2]=n[w>>2],n[u+4>>2]=n[w+4>>2],L5(m,u,l),n[b>>2]=(n[b>>2]|0)+12,LRe(s,P),ORe(P),C=O;return}}function NRe(s){return s=s|0,357913941}function MRe(s,A,l,u){s=s|0,A=A|0,l=l|0,u=u|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=u;do if(A)if(A>>>0>357913941)Ot();else{d=Jt(A*12|0)|0;break}else d=0;while(0);n[s>>2]=d,u=d+(l*12|0)|0,n[s+8>>2]=u,n[s+4>>2]=u,n[s+12>>2]=d+(A*12|0)}function LRe(s,A){s=s|0,A=A|0;var l=0,u=0,d=0,m=0,w=0;u=n[s>>2]|0,w=s+4|0,m=A+4|0,d=(n[w>>2]|0)-u|0,l=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=l,(d|0)>0?(Tr(l|0,u|0,d|0)|0,u=m,l=n[m>>2]|0):u=m,m=n[s>>2]|0,n[s>>2]=l,n[u>>2]=m,m=A+8|0,d=n[w>>2]|0,n[w>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,w=A+12|0,s=n[m>>2]|0,n[m>>2]=n[w>>2],n[w>>2]=s,n[A>>2]=n[u>>2]}function ORe(s){s=s|0;var A=0,l=0,u=0;A=n[s+4>>2]|0,l=s+8|0,u=n[l>>2]|0,(u|0)!=(A|0)&&(n[l>>2]=u+(~(((u+-12-A|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&yt(s)}function O5(s){s=s|0,_Re(s)}function URe(s){s=s|0,KRe(s+24|0)}function KRe(s){s=s|0;var A=0,l=0,u=0;l=n[s>>2]|0,u=l,l|0&&(s=s+4|0,A=n[s>>2]|0,(A|0)!=(l|0)&&(n[s>>2]=A+(~(((A+-12-u|0)>>>0)/12|0)*12|0)),yt(l))}function _Re(s){s=s|0;var A=0;A=nn()|0,sn(s,2,9,A,HRe()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function HRe(){return 1372}function qRe(s,A,l){s=s|0,A=A|0,l=+l;var u=0,d=0,m=0,w=0;u=C,C=C+16|0,d=u+8|0,m=u,w=GRe(s)|0,s=n[w+4>>2]|0,n[m>>2]=n[w>>2],n[m+4>>2]=s,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],jRe(A,d,l),C=u}function GRe(s){return s=s|0,(n[(xR()|0)+24>>2]|0)+(s*12|0)|0}function jRe(s,A,l){s=s|0,A=A|0,l=+l;var u=0,d=0,m=0,w=it;m=C,C=C+16|0,d=m,u=n[A>>2]|0,A=n[A+4>>2]|0,s=s+(A>>1)|0,A&1&&(u=n[(n[s>>2]|0)+u>>2]|0),YRe(d,l),w=y(WRe(d,l)),Z9[u&1](s,w),C=m}function YRe(s,A){s=s|0,A=+A}function WRe(s,A){return s=s|0,A=+A,y(JRe(A))}function JRe(s){return s=+s,y(s)}function VRe(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0,w=0,P=0;u=C,C=C+16|0,d=u+8|0,m=u,P=n[l>>2]|0,w=n[l+4>>2]|0,l=Dn(A)|0,n[m>>2]=P,n[m+4>>2]=w,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],zRe(s,l,d,0),C=u}function zRe(s,A,l,u){s=s|0,A=A|0,l=l|0,u=u|0;var d=0,m=0,w=0,P=0,b=0,O=0,L=0;d=C,C=C+32|0,m=d+16|0,L=d+8|0,P=d,O=n[l>>2]|0,b=n[l+4>>2]|0,w=n[s>>2]|0,s=PR()|0,n[L>>2]=O,n[L+4>>2]=b,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],l=XRe(m)|0,n[P>>2]=O,n[P+4>>2]=b,n[m>>2]=n[P>>2],n[m+4>>2]=n[P+4>>2],Sn(w,A,s,l,ZRe(m,u)|0,u),C=d}function PR(){var s=0,A=0;if(o[7856]|0||(K5(10172),Dt(50,10172,H|0)|0,A=7856,n[A>>2]=1,n[A+4>>2]=0),!(Gr(10172)|0)){s=10172,A=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(A|0));K5(10172)}return 10172}function XRe(s){return s=s|0,0}function ZRe(s,A){s=s|0,A=A|0;var l=0,u=0,d=0,m=0,w=0,P=0,b=0,O=0,L=0,W=0;return L=C,C=C+32|0,d=L+24|0,w=L+16|0,P=L,b=L+8|0,m=n[s>>2]|0,u=n[s+4>>2]|0,n[P>>2]=m,n[P+4>>2]=u,W=PR()|0,O=W+24|0,s=wr(A,4)|0,n[b>>2]=s,A=W+28|0,l=n[A>>2]|0,l>>>0<(n[W+32>>2]|0)>>>0?(n[w>>2]=m,n[w+4>>2]=u,n[d>>2]=n[w>>2],n[d+4>>2]=n[w+4>>2],U5(l,d,s),s=(n[A>>2]|0)+12|0,n[A>>2]=s):($Re(O,P,b),s=n[A>>2]|0),C=L,((s-(n[O>>2]|0)|0)/12|0)+-1|0}function U5(s,A,l){s=s|0,A=A|0,l=l|0;var u=0;u=n[A+4>>2]|0,n[s>>2]=n[A>>2],n[s+4>>2]=u,n[s+8>>2]=l}function $Re(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0,w=0,P=0,b=0,O=0,L=0,W=0,ue=0;if(O=C,C=C+48|0,u=O+32|0,w=O+24|0,P=O,b=s+4|0,d=(((n[b>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=eTe(s)|0,m>>>0>>0)An(s);else{L=n[s>>2]|0,ue=((n[s+8>>2]|0)-L|0)/12|0,W=ue<<1,tTe(P,ue>>>0>>1>>>0?W>>>0>>0?d:W:m,((n[b>>2]|0)-L|0)/12|0,s+8|0),b=P+8|0,m=n[b>>2]|0,d=n[A+4>>2]|0,l=n[l>>2]|0,n[w>>2]=n[A>>2],n[w+4>>2]=d,n[u>>2]=n[w>>2],n[u+4>>2]=n[w+4>>2],U5(m,u,l),n[b>>2]=(n[b>>2]|0)+12,rTe(s,P),nTe(P),C=O;return}}function eTe(s){return s=s|0,357913941}function tTe(s,A,l,u){s=s|0,A=A|0,l=l|0,u=u|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=u;do if(A)if(A>>>0>357913941)Ot();else{d=Jt(A*12|0)|0;break}else d=0;while(0);n[s>>2]=d,u=d+(l*12|0)|0,n[s+8>>2]=u,n[s+4>>2]=u,n[s+12>>2]=d+(A*12|0)}function rTe(s,A){s=s|0,A=A|0;var l=0,u=0,d=0,m=0,w=0;u=n[s>>2]|0,w=s+4|0,m=A+4|0,d=(n[w>>2]|0)-u|0,l=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=l,(d|0)>0?(Tr(l|0,u|0,d|0)|0,u=m,l=n[m>>2]|0):u=m,m=n[s>>2]|0,n[s>>2]=l,n[u>>2]=m,m=A+8|0,d=n[w>>2]|0,n[w>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,w=A+12|0,s=n[m>>2]|0,n[m>>2]=n[w>>2],n[w>>2]=s,n[A>>2]=n[u>>2]}function nTe(s){s=s|0;var A=0,l=0,u=0;A=n[s+4>>2]|0,l=s+8|0,u=n[l>>2]|0,(u|0)!=(A|0)&&(n[l>>2]=u+(~(((u+-12-A|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&yt(s)}function K5(s){s=s|0,oTe(s)}function iTe(s){s=s|0,sTe(s+24|0)}function sTe(s){s=s|0;var A=0,l=0,u=0;l=n[s>>2]|0,u=l,l|0&&(s=s+4|0,A=n[s>>2]|0,(A|0)!=(l|0)&&(n[s>>2]=A+(~(((A+-12-u|0)>>>0)/12|0)*12|0)),yt(l))}function oTe(s){s=s|0;var A=0;A=nn()|0,sn(s,2,3,A,aTe()|0,2),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function aTe(){return 1380}function ATe(s,A,l,u){s=s|0,A=A|0,l=l|0,u=u|0;var d=0,m=0,w=0,P=0;d=C,C=C+16|0,m=d+8|0,w=d,P=lTe(s)|0,s=n[P+4>>2]|0,n[w>>2]=n[P>>2],n[w+4>>2]=s,n[m>>2]=n[w>>2],n[m+4>>2]=n[w+4>>2],cTe(A,m,l,u),C=d}function lTe(s){return s=s|0,(n[(PR()|0)+24>>2]|0)+(s*12|0)|0}function cTe(s,A,l,u){s=s|0,A=A|0,l=l|0,u=u|0;var d=0,m=0,w=0,P=0;P=C,C=C+16|0,m=P+1|0,w=P,d=n[A>>2]|0,A=n[A+4>>2]|0,s=s+(A>>1)|0,A&1&&(d=n[(n[s>>2]|0)+d>>2]|0),Ef(m,l),m=If(m,l)|0,uTe(w,u),w=fTe(w,u)|0,zI[d&15](s,m,w),C=P}function uTe(s,A){s=s|0,A=A|0}function fTe(s,A){return s=s|0,A=A|0,gTe(A)|0}function gTe(s){return s=s|0,(s|0)!=0|0}function pTe(s,A,l,u){s=s|0,A=A|0,l=l|0,u=u|0;var d=0,m=0;m=n[s>>2]|0,d=bR()|0,s=hTe(l)|0,Sn(m,A,d,s,dTe(l,u)|0,u)}function bR(){var s=0,A=0;if(o[7864]|0||(H5(10208),Dt(51,10208,H|0)|0,A=7864,n[A>>2]=1,n[A+4>>2]=0),!(Gr(10208)|0)){s=10208,A=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(A|0));H5(10208)}return 10208}function hTe(s){return s=s|0,s|0}function dTe(s,A){s=s|0,A=A|0;var l=0,u=0,d=0,m=0,w=0,P=0,b=0;return P=C,C=C+16|0,d=P,m=P+4|0,n[d>>2]=s,b=bR()|0,w=b+24|0,A=wr(A,4)|0,n[m>>2]=A,l=b+28|0,u=n[l>>2]|0,u>>>0<(n[b+32>>2]|0)>>>0?(_5(u,s,A),A=(n[l>>2]|0)+8|0,n[l>>2]=A):(mTe(w,d,m),A=n[l>>2]|0),C=P,(A-(n[w>>2]|0)>>3)+-1|0}function _5(s,A,l){s=s|0,A=A|0,l=l|0,n[s>>2]=A,n[s+4>>2]=l}function mTe(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0,w=0,P=0,b=0,O=0,L=0;if(P=C,C=C+32|0,d=P,m=s+4|0,w=((n[m>>2]|0)-(n[s>>2]|0)>>3)+1|0,u=yTe(s)|0,u>>>0>>0)An(s);else{b=n[s>>2]|0,L=(n[s+8>>2]|0)-b|0,O=L>>2,CTe(d,L>>3>>>0>>1>>>0?O>>>0>>0?w:O:u,(n[m>>2]|0)-b>>3,s+8|0),w=d+8|0,_5(n[w>>2]|0,n[A>>2]|0,n[l>>2]|0),n[w>>2]=(n[w>>2]|0)+8,ETe(s,d),ITe(d),C=P;return}}function yTe(s){return s=s|0,536870911}function CTe(s,A,l,u){s=s|0,A=A|0,l=l|0,u=u|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=u;do if(A)if(A>>>0>536870911)Ot();else{d=Jt(A<<3)|0;break}else d=0;while(0);n[s>>2]=d,u=d+(l<<3)|0,n[s+8>>2]=u,n[s+4>>2]=u,n[s+12>>2]=d+(A<<3)}function ETe(s,A){s=s|0,A=A|0;var l=0,u=0,d=0,m=0,w=0;u=n[s>>2]|0,w=s+4|0,m=A+4|0,d=(n[w>>2]|0)-u|0,l=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=l,(d|0)>0?(Tr(l|0,u|0,d|0)|0,u=m,l=n[m>>2]|0):u=m,m=n[s>>2]|0,n[s>>2]=l,n[u>>2]=m,m=A+8|0,d=n[w>>2]|0,n[w>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,w=A+12|0,s=n[m>>2]|0,n[m>>2]=n[w>>2],n[w>>2]=s,n[A>>2]=n[u>>2]}function ITe(s){s=s|0;var A=0,l=0,u=0;A=n[s+4>>2]|0,l=s+8|0,u=n[l>>2]|0,(u|0)!=(A|0)&&(n[l>>2]=u+(~((u+-8-A|0)>>>3)<<3)),s=n[s>>2]|0,s|0&&yt(s)}function H5(s){s=s|0,QTe(s)}function wTe(s){s=s|0,BTe(s+24|0)}function BTe(s){s=s|0;var A=0,l=0,u=0;l=n[s>>2]|0,u=l,l|0&&(s=s+4|0,A=n[s>>2]|0,(A|0)!=(l|0)&&(n[s>>2]=A+(~((A+-8-u|0)>>>3)<<3)),yt(l))}function QTe(s){s=s|0;var A=0;A=nn()|0,sn(s,1,24,A,vTe()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function vTe(){return 1392}function DTe(s,A){s=s|0,A=A|0,kTe(n[(STe(s)|0)>>2]|0,A)}function STe(s){return s=s|0,(n[(bR()|0)+24>>2]|0)+(s<<3)|0}function kTe(s,A){s=s|0,A=A|0;var l=0,u=0;l=C,C=C+16|0,u=l,b5(u,A),A=F5(u,A)|0,Bf[s&127](A),C=l}function xTe(s,A,l,u){s=s|0,A=A|0,l=l|0,u=u|0;var d=0,m=0;m=n[s>>2]|0,d=FR()|0,s=PTe(l)|0,Sn(m,A,d,s,bTe(l,u)|0,u)}function FR(){var s=0,A=0;if(o[7872]|0||(G5(10244),Dt(52,10244,H|0)|0,A=7872,n[A>>2]=1,n[A+4>>2]=0),!(Gr(10244)|0)){s=10244,A=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(A|0));G5(10244)}return 10244}function PTe(s){return s=s|0,s|0}function bTe(s,A){s=s|0,A=A|0;var l=0,u=0,d=0,m=0,w=0,P=0,b=0;return P=C,C=C+16|0,d=P,m=P+4|0,n[d>>2]=s,b=FR()|0,w=b+24|0,A=wr(A,4)|0,n[m>>2]=A,l=b+28|0,u=n[l>>2]|0,u>>>0<(n[b+32>>2]|0)>>>0?(q5(u,s,A),A=(n[l>>2]|0)+8|0,n[l>>2]=A):(FTe(w,d,m),A=n[l>>2]|0),C=P,(A-(n[w>>2]|0)>>3)+-1|0}function q5(s,A,l){s=s|0,A=A|0,l=l|0,n[s>>2]=A,n[s+4>>2]=l}function FTe(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0,w=0,P=0,b=0,O=0,L=0;if(P=C,C=C+32|0,d=P,m=s+4|0,w=((n[m>>2]|0)-(n[s>>2]|0)>>3)+1|0,u=RTe(s)|0,u>>>0>>0)An(s);else{b=n[s>>2]|0,L=(n[s+8>>2]|0)-b|0,O=L>>2,TTe(d,L>>3>>>0>>1>>>0?O>>>0>>0?w:O:u,(n[m>>2]|0)-b>>3,s+8|0),w=d+8|0,q5(n[w>>2]|0,n[A>>2]|0,n[l>>2]|0),n[w>>2]=(n[w>>2]|0)+8,NTe(s,d),MTe(d),C=P;return}}function RTe(s){return s=s|0,536870911}function TTe(s,A,l,u){s=s|0,A=A|0,l=l|0,u=u|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=u;do if(A)if(A>>>0>536870911)Ot();else{d=Jt(A<<3)|0;break}else d=0;while(0);n[s>>2]=d,u=d+(l<<3)|0,n[s+8>>2]=u,n[s+4>>2]=u,n[s+12>>2]=d+(A<<3)}function NTe(s,A){s=s|0,A=A|0;var l=0,u=0,d=0,m=0,w=0;u=n[s>>2]|0,w=s+4|0,m=A+4|0,d=(n[w>>2]|0)-u|0,l=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=l,(d|0)>0?(Tr(l|0,u|0,d|0)|0,u=m,l=n[m>>2]|0):u=m,m=n[s>>2]|0,n[s>>2]=l,n[u>>2]=m,m=A+8|0,d=n[w>>2]|0,n[w>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,w=A+12|0,s=n[m>>2]|0,n[m>>2]=n[w>>2],n[w>>2]=s,n[A>>2]=n[u>>2]}function MTe(s){s=s|0;var A=0,l=0,u=0;A=n[s+4>>2]|0,l=s+8|0,u=n[l>>2]|0,(u|0)!=(A|0)&&(n[l>>2]=u+(~((u+-8-A|0)>>>3)<<3)),s=n[s>>2]|0,s|0&&yt(s)}function G5(s){s=s|0,UTe(s)}function LTe(s){s=s|0,OTe(s+24|0)}function OTe(s){s=s|0;var A=0,l=0,u=0;l=n[s>>2]|0,u=l,l|0&&(s=s+4|0,A=n[s>>2]|0,(A|0)!=(l|0)&&(n[s>>2]=A+(~((A+-8-u|0)>>>3)<<3)),yt(l))}function UTe(s){s=s|0;var A=0;A=nn()|0,sn(s,1,16,A,KTe()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function KTe(){return 1400}function _Te(s){return s=s|0,qTe(n[(HTe(s)|0)>>2]|0)|0}function HTe(s){return s=s|0,(n[(FR()|0)+24>>2]|0)+(s<<3)|0}function qTe(s){return s=s|0,GTe(Dv[s&7]()|0)|0}function GTe(s){return s=s|0,s|0}function jTe(){var s=0;return o[7880]|0||(ZTe(10280),Dt(25,10280,H|0)|0,s=7880,n[s>>2]=1,n[s+4>>2]=0),10280}function YTe(s,A){s=s|0,A=A|0,n[s>>2]=WTe()|0,n[s+4>>2]=JTe()|0,n[s+12>>2]=A,n[s+8>>2]=VTe()|0,n[s+32>>2]=4}function WTe(){return 11711}function JTe(){return 1356}function VTe(){return gv()|0}function zTe(s,A,l,u){s=s|0,A=A|0,l=l|0,u=u|0,(Zg(u,896)|0)==512?l|0&&(XTe(l),yt(l)):A|0&&(V0(A),yt(A))}function XTe(s){s=s|0,s=n[s+4>>2]|0,s|0&&ep(s)}function ZTe(s){s=s|0,Jg(s)}function $Te(s){s=s|0,eNe(s,4920),tNe(s)|0,rNe(s)|0}function eNe(s,A){s=s|0,A=A|0;var l=0;l=f5()|0,n[s>>2]=l,BNe(l,A),$g(n[s>>2]|0)}function tNe(s){s=s|0;var A=0;return A=n[s>>2]|0,ed(A,gNe()|0),s|0}function rNe(s){s=s|0;var A=0;return A=n[s>>2]|0,ed(A,nNe()|0),s|0}function nNe(){var s=0;return o[7888]|0||(j5(10328),Dt(53,10328,H|0)|0,s=7888,n[s>>2]=1,n[s+4>>2]=0),Gr(10328)|0||j5(10328),10328}function ed(s,A){s=s|0,A=A|0,Sn(s,0,A,0,0,0)}function j5(s){s=s|0,oNe(s),td(s,10)}function iNe(s){s=s|0,sNe(s+24|0)}function sNe(s){s=s|0;var A=0,l=0,u=0;l=n[s>>2]|0,u=l,l|0&&(s=s+4|0,A=n[s>>2]|0,(A|0)!=(l|0)&&(n[s>>2]=A+(~((A+-8-u|0)>>>3)<<3)),yt(l))}function oNe(s){s=s|0;var A=0;A=nn()|0,sn(s,5,1,A,cNe()|0,2),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function aNe(s,A,l){s=s|0,A=A|0,l=+l,ANe(s,A,l)}function td(s,A){s=s|0,A=A|0,n[s+20>>2]=A}function ANe(s,A,l){s=s|0,A=A|0,l=+l;var u=0,d=0,m=0,w=0,P=0;u=C,C=C+16|0,m=u+8|0,P=u+13|0,d=u,w=u+12|0,Ef(P,A),n[m>>2]=If(P,A)|0,Zc(w,l),E[d>>3]=+$c(w,l),lNe(s,m,d),C=u}function lNe(s,A,l){s=s|0,A=A|0,l=l|0,V(s+8|0,n[A>>2]|0,+E[l>>3]),o[s+24>>0]=1}function cNe(){return 1404}function uNe(s,A){return s=s|0,A=+A,fNe(s,A)|0}function fNe(s,A){s=s|0,A=+A;var l=0,u=0,d=0,m=0,w=0,P=0,b=0;return u=C,C=C+16|0,m=u+4|0,w=u+8|0,P=u,d=hA(8)|0,l=d,b=Jt(16)|0,Ef(m,s),s=If(m,s)|0,Zc(w,A),V(b,s,+$c(w,A)),w=l+4|0,n[w>>2]=b,s=Jt(8)|0,w=n[w>>2]|0,n[P>>2]=0,n[m>>2]=n[P>>2],mR(s,w,m),n[d>>2]=s,C=u,l|0}function gNe(){var s=0;return o[7896]|0||(Y5(10364),Dt(54,10364,H|0)|0,s=7896,n[s>>2]=1,n[s+4>>2]=0),Gr(10364)|0||Y5(10364),10364}function Y5(s){s=s|0,dNe(s),td(s,55)}function pNe(s){s=s|0,hNe(s+24|0)}function hNe(s){s=s|0;var A=0,l=0,u=0;l=n[s>>2]|0,u=l,l|0&&(s=s+4|0,A=n[s>>2]|0,(A|0)!=(l|0)&&(n[s>>2]=A+(~((A+-8-u|0)>>>3)<<3)),yt(l))}function dNe(s){s=s|0;var A=0;A=nn()|0,sn(s,5,4,A,ENe()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function mNe(s){s=s|0,yNe(s)}function yNe(s){s=s|0,CNe(s)}function CNe(s){s=s|0,W5(s+8|0),o[s+24>>0]=1}function W5(s){s=s|0,n[s>>2]=0,E[s+8>>3]=0}function ENe(){return 1424}function INe(){return wNe()|0}function wNe(){var s=0,A=0,l=0,u=0,d=0,m=0,w=0;return A=C,C=C+16|0,d=A+4|0,w=A,l=hA(8)|0,s=l,u=Jt(16)|0,W5(u),m=s+4|0,n[m>>2]=u,u=Jt(8)|0,m=n[m>>2]|0,n[w>>2]=0,n[d>>2]=n[w>>2],mR(u,m,d),n[l>>2]=u,C=A,s|0}function BNe(s,A){s=s|0,A=A|0,n[s>>2]=QNe()|0,n[s+4>>2]=vNe()|0,n[s+12>>2]=A,n[s+8>>2]=DNe()|0,n[s+32>>2]=5}function QNe(){return 11710}function vNe(){return 1416}function DNe(){return pv()|0}function SNe(s,A,l,u){s=s|0,A=A|0,l=l|0,u=u|0,(Zg(u,896)|0)==512?l|0&&(kNe(l),yt(l)):A|0&&yt(A)}function kNe(s){s=s|0,s=n[s+4>>2]|0,s|0&&ep(s)}function pv(){var s=0;return o[7904]|0||(n[2600]=xNe()|0,n[2601]=0,s=7904,n[s>>2]=1,n[s+4>>2]=0),10400}function xNe(){return n[357]|0}function PNe(s){s=s|0,bNe(s,4926),FNe(s)|0}function bNe(s,A){s=s|0,A=A|0;var l=0;l=Nj()|0,n[s>>2]=l,qNe(l,A),$g(n[s>>2]|0)}function FNe(s){s=s|0;var A=0;return A=n[s>>2]|0,ed(A,RNe()|0),s|0}function RNe(){var s=0;return o[7912]|0||(J5(10412),Dt(56,10412,H|0)|0,s=7912,n[s>>2]=1,n[s+4>>2]=0),Gr(10412)|0||J5(10412),10412}function J5(s){s=s|0,MNe(s),td(s,57)}function TNe(s){s=s|0,NNe(s+24|0)}function NNe(s){s=s|0;var A=0,l=0,u=0;l=n[s>>2]|0,u=l,l|0&&(s=s+4|0,A=n[s>>2]|0,(A|0)!=(l|0)&&(n[s>>2]=A+(~((A+-8-u|0)>>>3)<<3)),yt(l))}function MNe(s){s=s|0;var A=0;A=nn()|0,sn(s,5,5,A,KNe()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function LNe(s){s=s|0,ONe(s)}function ONe(s){s=s|0,UNe(s)}function UNe(s){s=s|0;var A=0,l=0;A=s+8|0,l=A+48|0;do n[A>>2]=0,A=A+4|0;while((A|0)<(l|0));o[s+56>>0]=1}function KNe(){return 1432}function _Ne(){return HNe()|0}function HNe(){var s=0,A=0,l=0,u=0,d=0,m=0,w=0,P=0;w=C,C=C+16|0,s=w+4|0,A=w,l=hA(8)|0,u=l,d=Jt(48)|0,m=d,P=m+48|0;do n[m>>2]=0,m=m+4|0;while((m|0)<(P|0));return m=u+4|0,n[m>>2]=d,P=Jt(8)|0,m=n[m>>2]|0,n[A>>2]=0,n[s>>2]=n[A>>2],Mj(P,m,s),n[l>>2]=P,C=w,u|0}function qNe(s,A){s=s|0,A=A|0,n[s>>2]=GNe()|0,n[s+4>>2]=jNe()|0,n[s+12>>2]=A,n[s+8>>2]=YNe()|0,n[s+32>>2]=6}function GNe(){return 11704}function jNe(){return 1436}function YNe(){return pv()|0}function WNe(s,A,l,u){s=s|0,A=A|0,l=l|0,u=u|0,(Zg(u,896)|0)==512?l|0&&(JNe(l),yt(l)):A|0&&yt(A)}function JNe(s){s=s|0,s=n[s+4>>2]|0,s|0&&ep(s)}function VNe(s){s=s|0,zNe(s,4933),XNe(s)|0,ZNe(s)|0}function zNe(s,A){s=s|0,A=A|0;var l=0;l=wMe()|0,n[s>>2]=l,BMe(l,A),$g(n[s>>2]|0)}function XNe(s){s=s|0;var A=0;return A=n[s>>2]|0,ed(A,fMe()|0),s|0}function ZNe(s){s=s|0;var A=0;return A=n[s>>2]|0,ed(A,$Ne()|0),s|0}function $Ne(){var s=0;return o[7920]|0||(V5(10452),Dt(58,10452,H|0)|0,s=7920,n[s>>2]=1,n[s+4>>2]=0),Gr(10452)|0||V5(10452),10452}function V5(s){s=s|0,rMe(s),td(s,1)}function eMe(s){s=s|0,tMe(s+24|0)}function tMe(s){s=s|0;var A=0,l=0,u=0;l=n[s>>2]|0,u=l,l|0&&(s=s+4|0,A=n[s>>2]|0,(A|0)!=(l|0)&&(n[s>>2]=A+(~((A+-8-u|0)>>>3)<<3)),yt(l))}function rMe(s){s=s|0;var A=0;A=nn()|0,sn(s,5,1,A,oMe()|0,2),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function nMe(s,A,l){s=s|0,A=+A,l=+l,iMe(s,A,l)}function iMe(s,A,l){s=s|0,A=+A,l=+l;var u=0,d=0,m=0,w=0,P=0;u=C,C=C+32|0,m=u+8|0,P=u+17|0,d=u,w=u+16|0,Zc(P,A),E[m>>3]=+$c(P,A),Zc(w,l),E[d>>3]=+$c(w,l),sMe(s,m,d),C=u}function sMe(s,A,l){s=s|0,A=A|0,l=l|0,z5(s+8|0,+E[A>>3],+E[l>>3]),o[s+24>>0]=1}function z5(s,A,l){s=s|0,A=+A,l=+l,E[s>>3]=A,E[s+8>>3]=l}function oMe(){return 1472}function aMe(s,A){return s=+s,A=+A,AMe(s,A)|0}function AMe(s,A){s=+s,A=+A;var l=0,u=0,d=0,m=0,w=0,P=0,b=0;return u=C,C=C+16|0,w=u+4|0,P=u+8|0,b=u,d=hA(8)|0,l=d,m=Jt(16)|0,Zc(w,s),s=+$c(w,s),Zc(P,A),z5(m,s,+$c(P,A)),P=l+4|0,n[P>>2]=m,m=Jt(8)|0,P=n[P>>2]|0,n[b>>2]=0,n[w>>2]=n[b>>2],X5(m,P,w),n[d>>2]=m,C=u,l|0}function X5(s,A,l){s=s|0,A=A|0,l=l|0,n[s>>2]=A,l=Jt(16)|0,n[l+4>>2]=0,n[l+8>>2]=0,n[l>>2]=1452,n[l+12>>2]=A,n[s+4>>2]=l}function lMe(s){s=s|0,By(s),yt(s)}function cMe(s){s=s|0,s=n[s+12>>2]|0,s|0&&yt(s)}function uMe(s){s=s|0,yt(s)}function fMe(){var s=0;return o[7928]|0||(Z5(10488),Dt(59,10488,H|0)|0,s=7928,n[s>>2]=1,n[s+4>>2]=0),Gr(10488)|0||Z5(10488),10488}function Z5(s){s=s|0,hMe(s),td(s,60)}function gMe(s){s=s|0,pMe(s+24|0)}function pMe(s){s=s|0;var A=0,l=0,u=0;l=n[s>>2]|0,u=l,l|0&&(s=s+4|0,A=n[s>>2]|0,(A|0)!=(l|0)&&(n[s>>2]=A+(~((A+-8-u|0)>>>3)<<3)),yt(l))}function hMe(s){s=s|0;var A=0;A=nn()|0,sn(s,5,6,A,CMe()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function dMe(s){s=s|0,mMe(s)}function mMe(s){s=s|0,yMe(s)}function yMe(s){s=s|0,$5(s+8|0),o[s+24>>0]=1}function $5(s){s=s|0,n[s>>2]=0,n[s+4>>2]=0,n[s+8>>2]=0,n[s+12>>2]=0}function CMe(){return 1492}function EMe(){return IMe()|0}function IMe(){var s=0,A=0,l=0,u=0,d=0,m=0,w=0;return A=C,C=C+16|0,d=A+4|0,w=A,l=hA(8)|0,s=l,u=Jt(16)|0,$5(u),m=s+4|0,n[m>>2]=u,u=Jt(8)|0,m=n[m>>2]|0,n[w>>2]=0,n[d>>2]=n[w>>2],X5(u,m,d),n[l>>2]=u,C=A,s|0}function wMe(){var s=0;return o[7936]|0||(xMe(10524),Dt(25,10524,H|0)|0,s=7936,n[s>>2]=1,n[s+4>>2]=0),10524}function BMe(s,A){s=s|0,A=A|0,n[s>>2]=QMe()|0,n[s+4>>2]=vMe()|0,n[s+12>>2]=A,n[s+8>>2]=DMe()|0,n[s+32>>2]=7}function QMe(){return 11700}function vMe(){return 1484}function DMe(){return pv()|0}function SMe(s,A,l,u){s=s|0,A=A|0,l=l|0,u=u|0,(Zg(u,896)|0)==512?l|0&&(kMe(l),yt(l)):A|0&&yt(A)}function kMe(s){s=s|0,s=n[s+4>>2]|0,s|0&&ep(s)}function xMe(s){s=s|0,Jg(s)}function PMe(s,A,l){s=s|0,A=A|0,l=l|0,s=Dn(A)|0,A=bMe(l)|0,l=FMe(l,0)|0,ALe(s,A,l,RR()|0,0)}function bMe(s){return s=s|0,s|0}function FMe(s,A){s=s|0,A=A|0;var l=0,u=0,d=0,m=0,w=0,P=0,b=0;return P=C,C=C+16|0,d=P,m=P+4|0,n[d>>2]=s,b=RR()|0,w=b+24|0,A=wr(A,4)|0,n[m>>2]=A,l=b+28|0,u=n[l>>2]|0,u>>>0<(n[b+32>>2]|0)>>>0?(t9(u,s,A),A=(n[l>>2]|0)+8|0,n[l>>2]=A):(UMe(w,d,m),A=n[l>>2]|0),C=P,(A-(n[w>>2]|0)>>3)+-1|0}function RR(){var s=0,A=0;if(o[7944]|0||(e9(10568),Dt(61,10568,H|0)|0,A=7944,n[A>>2]=1,n[A+4>>2]=0),!(Gr(10568)|0)){s=10568,A=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(A|0));e9(10568)}return 10568}function e9(s){s=s|0,NMe(s)}function RMe(s){s=s|0,TMe(s+24|0)}function TMe(s){s=s|0;var A=0,l=0,u=0;l=n[s>>2]|0,u=l,l|0&&(s=s+4|0,A=n[s>>2]|0,(A|0)!=(l|0)&&(n[s>>2]=A+(~((A+-8-u|0)>>>3)<<3)),yt(l))}function NMe(s){s=s|0;var A=0;A=nn()|0,sn(s,1,17,A,$j()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function MMe(s){return s=s|0,OMe(n[(LMe(s)|0)>>2]|0)|0}function LMe(s){return s=s|0,(n[(RR()|0)+24>>2]|0)+(s<<3)|0}function OMe(s){return s=s|0,fv(Dv[s&7]()|0)|0}function t9(s,A,l){s=s|0,A=A|0,l=l|0,n[s>>2]=A,n[s+4>>2]=l}function UMe(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0,w=0,P=0,b=0,O=0,L=0;if(P=C,C=C+32|0,d=P,m=s+4|0,w=((n[m>>2]|0)-(n[s>>2]|0)>>3)+1|0,u=KMe(s)|0,u>>>0>>0)An(s);else{b=n[s>>2]|0,L=(n[s+8>>2]|0)-b|0,O=L>>2,_Me(d,L>>3>>>0>>1>>>0?O>>>0>>0?w:O:u,(n[m>>2]|0)-b>>3,s+8|0),w=d+8|0,t9(n[w>>2]|0,n[A>>2]|0,n[l>>2]|0),n[w>>2]=(n[w>>2]|0)+8,HMe(s,d),qMe(d),C=P;return}}function KMe(s){return s=s|0,536870911}function _Me(s,A,l,u){s=s|0,A=A|0,l=l|0,u=u|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=u;do if(A)if(A>>>0>536870911)Ot();else{d=Jt(A<<3)|0;break}else d=0;while(0);n[s>>2]=d,u=d+(l<<3)|0,n[s+8>>2]=u,n[s+4>>2]=u,n[s+12>>2]=d+(A<<3)}function HMe(s,A){s=s|0,A=A|0;var l=0,u=0,d=0,m=0,w=0;u=n[s>>2]|0,w=s+4|0,m=A+4|0,d=(n[w>>2]|0)-u|0,l=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=l,(d|0)>0?(Tr(l|0,u|0,d|0)|0,u=m,l=n[m>>2]|0):u=m,m=n[s>>2]|0,n[s>>2]=l,n[u>>2]=m,m=A+8|0,d=n[w>>2]|0,n[w>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,w=A+12|0,s=n[m>>2]|0,n[m>>2]=n[w>>2],n[w>>2]=s,n[A>>2]=n[u>>2]}function qMe(s){s=s|0;var A=0,l=0,u=0;A=n[s+4>>2]|0,l=s+8|0,u=n[l>>2]|0,(u|0)!=(A|0)&&(n[l>>2]=u+(~((u+-8-A|0)>>>3)<<3)),s=n[s>>2]|0,s|0&&yt(s)}function GMe(){jMe()}function jMe(){YMe(10604)}function YMe(s){s=s|0,WMe(s,4955)}function WMe(s,A){s=s|0,A=A|0;var l=0;l=JMe()|0,n[s>>2]=l,VMe(l,A),$g(n[s>>2]|0)}function JMe(){var s=0;return o[7952]|0||(iLe(10612),Dt(25,10612,H|0)|0,s=7952,n[s>>2]=1,n[s+4>>2]=0),10612}function VMe(s,A){s=s|0,A=A|0,n[s>>2]=$Me()|0,n[s+4>>2]=eLe()|0,n[s+12>>2]=A,n[s+8>>2]=tLe()|0,n[s+32>>2]=8}function $g(s){s=s|0;var A=0,l=0;A=C,C=C+16|0,l=A,yy()|0,n[l>>2]=s,zMe(10608,l),C=A}function yy(){return o[11714]|0||(n[2652]=0,Dt(62,10608,H|0)|0,o[11714]=1),10608}function zMe(s,A){s=s|0,A=A|0;var l=0;l=Jt(8)|0,n[l+4>>2]=n[A>>2],n[l>>2]=n[s>>2],n[s>>2]=l}function XMe(s){s=s|0,ZMe(s)}function ZMe(s){s=s|0;var A=0,l=0;if(A=n[s>>2]|0,A|0)do l=A,A=n[A>>2]|0,yt(l);while((A|0)!=0);n[s>>2]=0}function $Me(){return 11715}function eLe(){return 1496}function tLe(){return gv()|0}function rLe(s,A,l,u){s=s|0,A=A|0,l=l|0,u=u|0,(Zg(u,896)|0)==512?l|0&&(nLe(l),yt(l)):A|0&&yt(A)}function nLe(s){s=s|0,s=n[s+4>>2]|0,s|0&&ep(s)}function iLe(s){s=s|0,Jg(s)}function sLe(s,A){s=s|0,A=A|0;var l=0,u=0;yy()|0,l=n[2652]|0;e:do if(l|0){for(;u=n[l+4>>2]|0,!(u|0&&(M9(TR(u)|0,s)|0)==0);)if(l=n[l>>2]|0,!l)break e;oLe(u,A)}while(0)}function TR(s){return s=s|0,n[s+12>>2]|0}function oLe(s,A){s=s|0,A=A|0;var l=0;s=s+36|0,l=n[s>>2]|0,l|0&&(uf(l),yt(l)),l=Jt(4)|0,xj(l,A),n[s>>2]=l}function NR(){return o[11716]|0||(n[2664]=0,Dt(63,10656,H|0)|0,o[11716]=1),10656}function r9(){var s=0;return o[11717]|0?s=n[2665]|0:(aLe(),n[2665]=1504,o[11717]=1,s=1504),s|0}function aLe(){o[11740]|0||(o[11718]=wr(wr(8,0)|0,0)|0,o[11719]=wr(wr(0,0)|0,0)|0,o[11720]=wr(wr(0,16)|0,0)|0,o[11721]=wr(wr(8,0)|0,0)|0,o[11722]=wr(wr(0,0)|0,0)|0,o[11723]=wr(wr(8,0)|0,0)|0,o[11724]=wr(wr(0,0)|0,0)|0,o[11725]=wr(wr(8,0)|0,0)|0,o[11726]=wr(wr(0,0)|0,0)|0,o[11727]=wr(wr(8,0)|0,0)|0,o[11728]=wr(wr(0,0)|0,0)|0,o[11729]=wr(wr(0,0)|0,32)|0,o[11730]=wr(wr(0,0)|0,32)|0,o[11740]=1)}function n9(){return 1572}function ALe(s,A,l,u,d){s=s|0,A=A|0,l=l|0,u=u|0,d=d|0;var m=0,w=0,P=0,b=0,O=0,L=0;m=C,C=C+32|0,L=m+16|0,O=m+12|0,b=m+8|0,P=m+4|0,w=m,n[L>>2]=s,n[O>>2]=A,n[b>>2]=l,n[P>>2]=u,n[w>>2]=d,NR()|0,lLe(10656,L,O,b,P,w),C=m}function lLe(s,A,l,u,d,m){s=s|0,A=A|0,l=l|0,u=u|0,d=d|0,m=m|0;var w=0;w=Jt(24)|0,Fj(w+4|0,n[A>>2]|0,n[l>>2]|0,n[u>>2]|0,n[d>>2]|0,n[m>>2]|0),n[w>>2]=n[s>>2],n[s>>2]=w}function i9(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0,w=0,P=0,b=0,O=0,L=0,W=0,ue=0,ze=0,_e=0,Me=0,ot=0,nt=0,ft=0;if(ft=C,C=C+32|0,_e=ft+20|0,Me=ft+8|0,ot=ft+4|0,nt=ft,A=n[A>>2]|0,A|0){ze=_e+4|0,b=_e+8|0,O=Me+4|0,L=Me+8|0,W=Me+8|0,ue=_e+8|0;do{if(w=A+4|0,P=MR(w)|0,P|0){if(d=GI(P)|0,n[_e>>2]=0,n[ze>>2]=0,n[b>>2]=0,u=(jI(P)|0)+1|0,cLe(_e,u),u|0)for(;u=u+-1|0,Xl(Me,n[d>>2]|0),m=n[ze>>2]|0,m>>>0<(n[ue>>2]|0)>>>0?(n[m>>2]=n[Me>>2],n[ze>>2]=(n[ze>>2]|0)+4):LR(_e,Me),u;)d=d+4|0;u=YI(P)|0,n[Me>>2]=0,n[O>>2]=0,n[L>>2]=0;e:do if(n[u>>2]|0)for(d=0,m=0;;){if((d|0)==(m|0)?uLe(Me,u):(n[d>>2]=n[u>>2],n[O>>2]=(n[O>>2]|0)+4),u=u+4|0,!(n[u>>2]|0))break e;d=n[O>>2]|0,m=n[W>>2]|0}while(0);n[ot>>2]=hv(w)|0,n[nt>>2]=Gr(P)|0,fLe(l,s,ot,nt,_e,Me),OR(Me),wf(_e)}A=n[A>>2]|0}while((A|0)!=0)}C=ft}function MR(s){return s=s|0,n[s+12>>2]|0}function GI(s){return s=s|0,n[s+12>>2]|0}function jI(s){return s=s|0,n[s+16>>2]|0}function cLe(s,A){s=s|0,A=A|0;var l=0,u=0,d=0;d=C,C=C+32|0,l=d,u=n[s>>2]|0,(n[s+8>>2]|0)-u>>2>>>0>>0&&(f9(l,A,(n[s+4>>2]|0)-u>>2,s+8|0),g9(s,l),p9(l)),C=d}function LR(s,A){s=s|0,A=A|0;var l=0,u=0,d=0,m=0,w=0,P=0,b=0,O=0;if(w=C,C=C+32|0,l=w,u=s+4|0,d=((n[u>>2]|0)-(n[s>>2]|0)>>2)+1|0,m=u9(s)|0,m>>>0>>0)An(s);else{P=n[s>>2]|0,O=(n[s+8>>2]|0)-P|0,b=O>>1,f9(l,O>>2>>>0>>1>>>0?b>>>0>>0?d:b:m,(n[u>>2]|0)-P>>2,s+8|0),m=l+8|0,n[n[m>>2]>>2]=n[A>>2],n[m>>2]=(n[m>>2]|0)+4,g9(s,l),p9(l),C=w;return}}function YI(s){return s=s|0,n[s+8>>2]|0}function uLe(s,A){s=s|0,A=A|0;var l=0,u=0,d=0,m=0,w=0,P=0,b=0,O=0;if(w=C,C=C+32|0,l=w,u=s+4|0,d=((n[u>>2]|0)-(n[s>>2]|0)>>2)+1|0,m=c9(s)|0,m>>>0>>0)An(s);else{P=n[s>>2]|0,O=(n[s+8>>2]|0)-P|0,b=O>>1,bLe(l,O>>2>>>0>>1>>>0?b>>>0>>0?d:b:m,(n[u>>2]|0)-P>>2,s+8|0),m=l+8|0,n[n[m>>2]>>2]=n[A>>2],n[m>>2]=(n[m>>2]|0)+4,FLe(s,l),RLe(l),C=w;return}}function hv(s){return s=s|0,n[s>>2]|0}function fLe(s,A,l,u,d,m){s=s|0,A=A|0,l=l|0,u=u|0,d=d|0,m=m|0,gLe(s,A,l,u,d,m)}function OR(s){s=s|0;var A=0,l=0,u=0;l=n[s>>2]|0,u=l,l|0&&(s=s+4|0,A=n[s>>2]|0,(A|0)!=(l|0)&&(n[s>>2]=A+(~((A+-4-u|0)>>>2)<<2)),yt(l))}function wf(s){s=s|0;var A=0,l=0,u=0;l=n[s>>2]|0,u=l,l|0&&(s=s+4|0,A=n[s>>2]|0,(A|0)!=(l|0)&&(n[s>>2]=A+(~((A+-4-u|0)>>>2)<<2)),yt(l))}function gLe(s,A,l,u,d,m){s=s|0,A=A|0,l=l|0,u=u|0,d=d|0,m=m|0;var w=0,P=0,b=0,O=0,L=0,W=0;w=C,C=C+48|0,L=w+40|0,P=w+32|0,W=w+24|0,b=w+12|0,O=w,dA(P),s=Oa(s)|0,n[W>>2]=n[A>>2],l=n[l>>2]|0,u=n[u>>2]|0,UR(b,d),pLe(O,m),n[L>>2]=n[W>>2],hLe(s,L,l,u,b,O),OR(O),wf(b),mA(P),C=w}function UR(s,A){s=s|0,A=A|0;var l=0,u=0;n[s>>2]=0,n[s+4>>2]=0,n[s+8>>2]=0,l=A+4|0,u=(n[l>>2]|0)-(n[A>>2]|0)>>2,u|0&&(xLe(s,u),PLe(s,n[A>>2]|0,n[l>>2]|0,u))}function pLe(s,A){s=s|0,A=A|0;var l=0,u=0;n[s>>2]=0,n[s+4>>2]=0,n[s+8>>2]=0,l=A+4|0,u=(n[l>>2]|0)-(n[A>>2]|0)>>2,u|0&&(SLe(s,u),kLe(s,n[A>>2]|0,n[l>>2]|0,u))}function hLe(s,A,l,u,d,m){s=s|0,A=A|0,l=l|0,u=u|0,d=d|0,m=m|0;var w=0,P=0,b=0,O=0,L=0,W=0;w=C,C=C+32|0,L=w+28|0,W=w+24|0,P=w+12|0,b=w,O=$A(dLe()|0)|0,n[W>>2]=n[A>>2],n[L>>2]=n[W>>2],A=rd(L)|0,l=s9(l)|0,u=KR(u)|0,n[P>>2]=n[d>>2],L=d+4|0,n[P+4>>2]=n[L>>2],W=d+8|0,n[P+8>>2]=n[W>>2],n[W>>2]=0,n[L>>2]=0,n[d>>2]=0,d=_R(P)|0,n[b>>2]=n[m>>2],L=m+4|0,n[b+4>>2]=n[L>>2],W=m+8|0,n[b+8>>2]=n[W>>2],n[W>>2]=0,n[L>>2]=0,n[m>>2]=0,Wn(0,O|0,s|0,A|0,l|0,u|0,d|0,mLe(b)|0)|0,OR(b),wf(P),C=w}function dLe(){var s=0;return o[7968]|0||(vLe(10708),s=7968,n[s>>2]=1,n[s+4>>2]=0),10708}function rd(s){return s=s|0,a9(s)|0}function s9(s){return s=s|0,o9(s)|0}function KR(s){return s=s|0,fv(s)|0}function _R(s){return s=s|0,CLe(s)|0}function mLe(s){return s=s|0,yLe(s)|0}function yLe(s){s=s|0;var A=0,l=0,u=0;if(u=(n[s+4>>2]|0)-(n[s>>2]|0)|0,l=u>>2,u=hA(u+4|0)|0,n[u>>2]=l,l|0){A=0;do n[u+4+(A<<2)>>2]=o9(n[(n[s>>2]|0)+(A<<2)>>2]|0)|0,A=A+1|0;while((A|0)!=(l|0))}return u|0}function o9(s){return s=s|0,s|0}function CLe(s){s=s|0;var A=0,l=0,u=0;if(u=(n[s+4>>2]|0)-(n[s>>2]|0)|0,l=u>>2,u=hA(u+4|0)|0,n[u>>2]=l,l|0){A=0;do n[u+4+(A<<2)>>2]=a9((n[s>>2]|0)+(A<<2)|0)|0,A=A+1|0;while((A|0)!=(l|0))}return u|0}function a9(s){s=s|0;var A=0,l=0,u=0,d=0;return d=C,C=C+32|0,A=d+12|0,l=d,u=$F(A9()|0)|0,u?(eR(A,u),tR(l,A),t3e(s,l),s=rR(A)|0):s=ELe(s)|0,C=d,s|0}function A9(){var s=0;return o[7960]|0||(QLe(10664),Dt(25,10664,H|0)|0,s=7960,n[s>>2]=1,n[s+4>>2]=0),10664}function ELe(s){s=s|0;var A=0,l=0,u=0,d=0,m=0,w=0,P=0;return l=C,C=C+16|0,d=l+4|0,w=l,u=hA(8)|0,A=u,P=Jt(4)|0,n[P>>2]=n[s>>2],m=A+4|0,n[m>>2]=P,s=Jt(8)|0,m=n[m>>2]|0,n[w>>2]=0,n[d>>2]=n[w>>2],l9(s,m,d),n[u>>2]=s,C=l,A|0}function l9(s,A,l){s=s|0,A=A|0,l=l|0,n[s>>2]=A,l=Jt(16)|0,n[l+4>>2]=0,n[l+8>>2]=0,n[l>>2]=1656,n[l+12>>2]=A,n[s+4>>2]=l}function ILe(s){s=s|0,By(s),yt(s)}function wLe(s){s=s|0,s=n[s+12>>2]|0,s|0&&yt(s)}function BLe(s){s=s|0,yt(s)}function QLe(s){s=s|0,Jg(s)}function vLe(s){s=s|0,el(s,DLe()|0,5)}function DLe(){return 1676}function SLe(s,A){s=s|0,A=A|0;var l=0;if((c9(s)|0)>>>0>>0&&An(s),A>>>0>1073741823)Ot();else{l=Jt(A<<2)|0,n[s+4>>2]=l,n[s>>2]=l,n[s+8>>2]=l+(A<<2);return}}function kLe(s,A,l,u){s=s|0,A=A|0,l=l|0,u=u|0,u=s+4|0,s=l-A|0,(s|0)>0&&(Tr(n[u>>2]|0,A|0,s|0)|0,n[u>>2]=(n[u>>2]|0)+(s>>>2<<2))}function c9(s){return s=s|0,1073741823}function xLe(s,A){s=s|0,A=A|0;var l=0;if((u9(s)|0)>>>0>>0&&An(s),A>>>0>1073741823)Ot();else{l=Jt(A<<2)|0,n[s+4>>2]=l,n[s>>2]=l,n[s+8>>2]=l+(A<<2);return}}function PLe(s,A,l,u){s=s|0,A=A|0,l=l|0,u=u|0,u=s+4|0,s=l-A|0,(s|0)>0&&(Tr(n[u>>2]|0,A|0,s|0)|0,n[u>>2]=(n[u>>2]|0)+(s>>>2<<2))}function u9(s){return s=s|0,1073741823}function bLe(s,A,l,u){s=s|0,A=A|0,l=l|0,u=u|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=u;do if(A)if(A>>>0>1073741823)Ot();else{d=Jt(A<<2)|0;break}else d=0;while(0);n[s>>2]=d,u=d+(l<<2)|0,n[s+8>>2]=u,n[s+4>>2]=u,n[s+12>>2]=d+(A<<2)}function FLe(s,A){s=s|0,A=A|0;var l=0,u=0,d=0,m=0,w=0;u=n[s>>2]|0,w=s+4|0,m=A+4|0,d=(n[w>>2]|0)-u|0,l=(n[m>>2]|0)+(0-(d>>2)<<2)|0,n[m>>2]=l,(d|0)>0?(Tr(l|0,u|0,d|0)|0,u=m,l=n[m>>2]|0):u=m,m=n[s>>2]|0,n[s>>2]=l,n[u>>2]=m,m=A+8|0,d=n[w>>2]|0,n[w>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,w=A+12|0,s=n[m>>2]|0,n[m>>2]=n[w>>2],n[w>>2]=s,n[A>>2]=n[u>>2]}function RLe(s){s=s|0;var A=0,l=0,u=0;A=n[s+4>>2]|0,l=s+8|0,u=n[l>>2]|0,(u|0)!=(A|0)&&(n[l>>2]=u+(~((u+-4-A|0)>>>2)<<2)),s=n[s>>2]|0,s|0&&yt(s)}function f9(s,A,l,u){s=s|0,A=A|0,l=l|0,u=u|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=u;do if(A)if(A>>>0>1073741823)Ot();else{d=Jt(A<<2)|0;break}else d=0;while(0);n[s>>2]=d,u=d+(l<<2)|0,n[s+8>>2]=u,n[s+4>>2]=u,n[s+12>>2]=d+(A<<2)}function g9(s,A){s=s|0,A=A|0;var l=0,u=0,d=0,m=0,w=0;u=n[s>>2]|0,w=s+4|0,m=A+4|0,d=(n[w>>2]|0)-u|0,l=(n[m>>2]|0)+(0-(d>>2)<<2)|0,n[m>>2]=l,(d|0)>0?(Tr(l|0,u|0,d|0)|0,u=m,l=n[m>>2]|0):u=m,m=n[s>>2]|0,n[s>>2]=l,n[u>>2]=m,m=A+8|0,d=n[w>>2]|0,n[w>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,w=A+12|0,s=n[m>>2]|0,n[m>>2]=n[w>>2],n[w>>2]=s,n[A>>2]=n[u>>2]}function p9(s){s=s|0;var A=0,l=0,u=0;A=n[s+4>>2]|0,l=s+8|0,u=n[l>>2]|0,(u|0)!=(A|0)&&(n[l>>2]=u+(~((u+-4-A|0)>>>2)<<2)),s=n[s>>2]|0,s|0&&yt(s)}function TLe(s,A,l,u,d){s=s|0,A=A|0,l=l|0,u=u|0,d=d|0;var m=0,w=0,P=0,b=0,O=0,L=0,W=0,ue=0,ze=0,_e=0,Me=0;if(Me=C,C=C+32|0,L=Me+20|0,W=Me+12|0,O=Me+16|0,ue=Me+4|0,ze=Me,_e=Me+8|0,P=r9()|0,m=n[P>>2]|0,w=n[m>>2]|0,w|0)for(b=n[P+8>>2]|0,P=n[P+4>>2]|0;Xl(L,w),NLe(s,L,P,b),m=m+4|0,w=n[m>>2]|0,w;)b=b+1|0,P=P+1|0;if(m=n9()|0,w=n[m>>2]|0,w|0)do Xl(L,w),n[W>>2]=n[m+4>>2],MLe(A,L,W),m=m+8|0,w=n[m>>2]|0;while((w|0)!=0);if(m=n[(yy()|0)>>2]|0,m|0)do A=n[m+4>>2]|0,Xl(L,n[(Cy(A)|0)>>2]|0),n[W>>2]=TR(A)|0,LLe(l,L,W),m=n[m>>2]|0;while((m|0)!=0);if(Xl(O,0),m=NR()|0,n[L>>2]=n[O>>2],i9(L,m,d),m=n[(yy()|0)>>2]|0,m|0){s=L+4|0,A=L+8|0,l=L+8|0;do{if(b=n[m+4>>2]|0,Xl(W,n[(Cy(b)|0)>>2]|0),OLe(ue,h9(b)|0),w=n[ue>>2]|0,w|0){n[L>>2]=0,n[s>>2]=0,n[A>>2]=0;do Xl(ze,n[(Cy(n[w+4>>2]|0)|0)>>2]|0),P=n[s>>2]|0,P>>>0<(n[l>>2]|0)>>>0?(n[P>>2]=n[ze>>2],n[s>>2]=(n[s>>2]|0)+4):LR(L,ze),w=n[w>>2]|0;while((w|0)!=0);ULe(u,W,L),wf(L)}n[_e>>2]=n[W>>2],O=d9(b)|0,n[L>>2]=n[_e>>2],i9(L,O,d),Oj(ue),m=n[m>>2]|0}while((m|0)!=0)}C=Me}function NLe(s,A,l,u){s=s|0,A=A|0,l=l|0,u=u|0,XLe(s,A,l,u)}function MLe(s,A,l){s=s|0,A=A|0,l=l|0,zLe(s,A,l)}function Cy(s){return s=s|0,s|0}function LLe(s,A,l){s=s|0,A=A|0,l=l|0,YLe(s,A,l)}function h9(s){return s=s|0,s+16|0}function OLe(s,A){s=s|0,A=A|0;var l=0,u=0,d=0,m=0,w=0,P=0,b=0;if(m=C,C=C+16|0,d=m+8|0,l=m,n[s>>2]=0,u=n[A>>2]|0,n[d>>2]=u,n[l>>2]=s,l=jLe(l)|0,u|0){if(u=Jt(12)|0,w=(m9(d)|0)+4|0,s=n[w+4>>2]|0,A=u+4|0,n[A>>2]=n[w>>2],n[A+4>>2]=s,A=n[n[d>>2]>>2]|0,n[d>>2]=A,!A)s=u;else for(A=u;s=Jt(12)|0,b=(m9(d)|0)+4|0,P=n[b+4>>2]|0,w=s+4|0,n[w>>2]=n[b>>2],n[w+4>>2]=P,n[A>>2]=s,w=n[n[d>>2]>>2]|0,n[d>>2]=w,w;)A=s;n[s>>2]=n[l>>2],n[l>>2]=u}C=m}function ULe(s,A,l){s=s|0,A=A|0,l=l|0,KLe(s,A,l)}function d9(s){return s=s|0,s+24|0}function KLe(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0,w=0,P=0;u=C,C=C+32|0,w=u+24|0,d=u+16|0,P=u+12|0,m=u,dA(d),s=Oa(s)|0,n[P>>2]=n[A>>2],UR(m,l),n[w>>2]=n[P>>2],_Le(s,w,m),wf(m),mA(d),C=u}function _Le(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0,w=0,P=0;u=C,C=C+32|0,w=u+16|0,P=u+12|0,d=u,m=$A(HLe()|0)|0,n[P>>2]=n[A>>2],n[w>>2]=n[P>>2],A=rd(w)|0,n[d>>2]=n[l>>2],w=l+4|0,n[d+4>>2]=n[w>>2],P=l+8|0,n[d+8>>2]=n[P>>2],n[P>>2]=0,n[w>>2]=0,n[l>>2]=0,Hi(0,m|0,s|0,A|0,_R(d)|0)|0,wf(d),C=u}function HLe(){var s=0;return o[7976]|0||(qLe(10720),s=7976,n[s>>2]=1,n[s+4>>2]=0),10720}function qLe(s){s=s|0,el(s,GLe()|0,2)}function GLe(){return 1732}function jLe(s){return s=s|0,n[s>>2]|0}function m9(s){return s=s|0,n[s>>2]|0}function YLe(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0,w=0;u=C,C=C+32|0,m=u+16|0,d=u+8|0,w=u,dA(d),s=Oa(s)|0,n[w>>2]=n[A>>2],l=n[l>>2]|0,n[m>>2]=n[w>>2],y9(s,m,l),mA(d),C=u}function y9(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0,w=0;u=C,C=C+16|0,m=u+4|0,w=u,d=$A(WLe()|0)|0,n[w>>2]=n[A>>2],n[m>>2]=n[w>>2],A=rd(m)|0,Hi(0,d|0,s|0,A|0,s9(l)|0)|0,C=u}function WLe(){var s=0;return o[7984]|0||(JLe(10732),s=7984,n[s>>2]=1,n[s+4>>2]=0),10732}function JLe(s){s=s|0,el(s,VLe()|0,2)}function VLe(){return 1744}function zLe(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0,w=0;u=C,C=C+32|0,m=u+16|0,d=u+8|0,w=u,dA(d),s=Oa(s)|0,n[w>>2]=n[A>>2],l=n[l>>2]|0,n[m>>2]=n[w>>2],y9(s,m,l),mA(d),C=u}function XLe(s,A,l,u){s=s|0,A=A|0,l=l|0,u=u|0;var d=0,m=0,w=0,P=0;d=C,C=C+32|0,w=d+16|0,m=d+8|0,P=d,dA(m),s=Oa(s)|0,n[P>>2]=n[A>>2],l=o[l>>0]|0,u=o[u>>0]|0,n[w>>2]=n[P>>2],ZLe(s,w,l,u),mA(m),C=d}function ZLe(s,A,l,u){s=s|0,A=A|0,l=l|0,u=u|0;var d=0,m=0,w=0,P=0;d=C,C=C+16|0,w=d+4|0,P=d,m=$A($Le()|0)|0,n[P>>2]=n[A>>2],n[w>>2]=n[P>>2],A=rd(w)|0,l=Ey(l)|0,HA(0,m|0,s|0,A|0,l|0,Ey(u)|0)|0,C=d}function $Le(){var s=0;return o[7992]|0||(tOe(10744),s=7992,n[s>>2]=1,n[s+4>>2]=0),10744}function Ey(s){return s=s|0,eOe(s)|0}function eOe(s){return s=s|0,s&255|0}function tOe(s){s=s|0,el(s,rOe()|0,3)}function rOe(){return 1756}function nOe(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0,w=0,P=0,b=0,O=0,L=0,W=0,ue=0;switch(ue=C,C=C+32|0,P=ue+8|0,b=ue+4|0,O=ue+20|0,L=ue,oR(s,0),u=e3e(A)|0,n[P>>2]=0,W=P+4|0,n[W>>2]=0,n[P+8>>2]=0,u<<24>>24){case 0:{o[O>>0]=0,iOe(b,l,O),dv(s,b)|0,ff(b);break}case 8:{W=WR(A)|0,o[O>>0]=8,Xl(L,n[W+4>>2]|0),sOe(b,l,O,L,W+8|0),dv(s,b)|0,ff(b);break}case 9:{if(m=WR(A)|0,A=n[m+4>>2]|0,A|0)for(w=P+8|0,d=m+12|0;A=A+-1|0,Xl(b,n[d>>2]|0),u=n[W>>2]|0,u>>>0<(n[w>>2]|0)>>>0?(n[u>>2]=n[b>>2],n[W>>2]=(n[W>>2]|0)+4):LR(P,b),A;)d=d+4|0;o[O>>0]=9,Xl(L,n[m+8>>2]|0),oOe(b,l,O,L,P),dv(s,b)|0,ff(b);break}default:W=WR(A)|0,o[O>>0]=u,Xl(L,n[W+4>>2]|0),aOe(b,l,O,L),dv(s,b)|0,ff(b)}wf(P),C=ue}function iOe(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0;u=C,C=C+16|0,d=u,dA(d),A=Oa(A)|0,EOe(s,A,o[l>>0]|0),mA(d),C=u}function dv(s,A){s=s|0,A=A|0;var l=0;return l=n[s>>2]|0,l|0&&Oc(l|0),n[s>>2]=n[A>>2],n[A>>2]=0,s|0}function sOe(s,A,l,u,d){s=s|0,A=A|0,l=l|0,u=u|0,d=d|0;var m=0,w=0,P=0,b=0;m=C,C=C+32|0,P=m+16|0,w=m+8|0,b=m,dA(w),A=Oa(A)|0,l=o[l>>0]|0,n[b>>2]=n[u>>2],d=n[d>>2]|0,n[P>>2]=n[b>>2],dOe(s,A,l,P,d),mA(w),C=m}function oOe(s,A,l,u,d){s=s|0,A=A|0,l=l|0,u=u|0,d=d|0;var m=0,w=0,P=0,b=0,O=0;m=C,C=C+32|0,b=m+24|0,w=m+16|0,O=m+12|0,P=m,dA(w),A=Oa(A)|0,l=o[l>>0]|0,n[O>>2]=n[u>>2],UR(P,d),n[b>>2]=n[O>>2],fOe(s,A,l,b,P),wf(P),mA(w),C=m}function aOe(s,A,l,u){s=s|0,A=A|0,l=l|0,u=u|0;var d=0,m=0,w=0,P=0;d=C,C=C+32|0,w=d+16|0,m=d+8|0,P=d,dA(m),A=Oa(A)|0,l=o[l>>0]|0,n[P>>2]=n[u>>2],n[w>>2]=n[P>>2],AOe(s,A,l,w),mA(m),C=d}function AOe(s,A,l,u){s=s|0,A=A|0,l=l|0,u=u|0;var d=0,m=0,w=0,P=0;d=C,C=C+16|0,m=d+4|0,P=d,w=$A(lOe()|0)|0,l=Ey(l)|0,n[P>>2]=n[u>>2],n[m>>2]=n[P>>2],mv(s,Hi(0,w|0,A|0,l|0,rd(m)|0)|0),C=d}function lOe(){var s=0;return o[8e3]|0||(cOe(10756),s=8e3,n[s>>2]=1,n[s+4>>2]=0),10756}function mv(s,A){s=s|0,A=A|0,oR(s,A)}function cOe(s){s=s|0,el(s,uOe()|0,2)}function uOe(){return 1772}function fOe(s,A,l,u,d){s=s|0,A=A|0,l=l|0,u=u|0,d=d|0;var m=0,w=0,P=0,b=0,O=0;m=C,C=C+32|0,b=m+16|0,O=m+12|0,w=m,P=$A(gOe()|0)|0,l=Ey(l)|0,n[O>>2]=n[u>>2],n[b>>2]=n[O>>2],u=rd(b)|0,n[w>>2]=n[d>>2],b=d+4|0,n[w+4>>2]=n[b>>2],O=d+8|0,n[w+8>>2]=n[O>>2],n[O>>2]=0,n[b>>2]=0,n[d>>2]=0,mv(s,HA(0,P|0,A|0,l|0,u|0,_R(w)|0)|0),wf(w),C=m}function gOe(){var s=0;return o[8008]|0||(pOe(10768),s=8008,n[s>>2]=1,n[s+4>>2]=0),10768}function pOe(s){s=s|0,el(s,hOe()|0,3)}function hOe(){return 1784}function dOe(s,A,l,u,d){s=s|0,A=A|0,l=l|0,u=u|0,d=d|0;var m=0,w=0,P=0,b=0;m=C,C=C+16|0,P=m+4|0,b=m,w=$A(mOe()|0)|0,l=Ey(l)|0,n[b>>2]=n[u>>2],n[P>>2]=n[b>>2],u=rd(P)|0,mv(s,HA(0,w|0,A|0,l|0,u|0,KR(d)|0)|0),C=m}function mOe(){var s=0;return o[8016]|0||(yOe(10780),s=8016,n[s>>2]=1,n[s+4>>2]=0),10780}function yOe(s){s=s|0,el(s,COe()|0,3)}function COe(){return 1800}function EOe(s,A,l){s=s|0,A=A|0,l=l|0;var u=0;u=$A(IOe()|0)|0,mv(s,Ln(0,u|0,A|0,Ey(l)|0)|0)}function IOe(){var s=0;return o[8024]|0||(wOe(10792),s=8024,n[s>>2]=1,n[s+4>>2]=0),10792}function wOe(s){s=s|0,el(s,BOe()|0,1)}function BOe(){return 1816}function QOe(){vOe(),DOe(),SOe()}function vOe(){n[2702]=Y9(65536)|0}function DOe(){WOe(10856)}function SOe(){kOe(10816)}function kOe(s){s=s|0,xOe(s,5044),POe(s)|0}function xOe(s,A){s=s|0,A=A|0;var l=0;l=A9()|0,n[s>>2]=l,_Oe(l,A),$g(n[s>>2]|0)}function POe(s){s=s|0;var A=0;return A=n[s>>2]|0,ed(A,bOe()|0),s|0}function bOe(){var s=0;return o[8032]|0||(C9(10820),Dt(64,10820,H|0)|0,s=8032,n[s>>2]=1,n[s+4>>2]=0),Gr(10820)|0||C9(10820),10820}function C9(s){s=s|0,TOe(s),td(s,25)}function FOe(s){s=s|0,ROe(s+24|0)}function ROe(s){s=s|0;var A=0,l=0,u=0;l=n[s>>2]|0,u=l,l|0&&(s=s+4|0,A=n[s>>2]|0,(A|0)!=(l|0)&&(n[s>>2]=A+(~((A+-8-u|0)>>>3)<<3)),yt(l))}function TOe(s){s=s|0;var A=0;A=nn()|0,sn(s,5,18,A,OOe()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function NOe(s,A){s=s|0,A=A|0,MOe(s,A)}function MOe(s,A){s=s|0,A=A|0;var l=0,u=0,d=0;l=C,C=C+16|0,u=l,d=l+4|0,Z0(d,A),n[u>>2]=$0(d,A)|0,LOe(s,u),C=l}function LOe(s,A){s=s|0,A=A|0,E9(s+4|0,n[A>>2]|0),o[s+8>>0]=1}function E9(s,A){s=s|0,A=A|0,n[s>>2]=A}function OOe(){return 1824}function UOe(s){return s=s|0,KOe(s)|0}function KOe(s){s=s|0;var A=0,l=0,u=0,d=0,m=0,w=0,P=0;return l=C,C=C+16|0,d=l+4|0,w=l,u=hA(8)|0,A=u,P=Jt(4)|0,Z0(d,s),E9(P,$0(d,s)|0),m=A+4|0,n[m>>2]=P,s=Jt(8)|0,m=n[m>>2]|0,n[w>>2]=0,n[d>>2]=n[w>>2],l9(s,m,d),n[u>>2]=s,C=l,A|0}function hA(s){s=s|0;var A=0,l=0;return s=s+7&-8,s>>>0<=32768&&(A=n[2701]|0,s>>>0<=(65536-A|0)>>>0)?(l=(n[2702]|0)+A|0,n[2701]=A+s,s=l):(s=Y9(s+8|0)|0,n[s>>2]=n[2703],n[2703]=s,s=s+8|0),s|0}function _Oe(s,A){s=s|0,A=A|0,n[s>>2]=HOe()|0,n[s+4>>2]=qOe()|0,n[s+12>>2]=A,n[s+8>>2]=GOe()|0,n[s+32>>2]=9}function HOe(){return 11744}function qOe(){return 1832}function GOe(){return pv()|0}function jOe(s,A,l,u){s=s|0,A=A|0,l=l|0,u=u|0,(Zg(u,896)|0)==512?l|0&&(YOe(l),yt(l)):A|0&&yt(A)}function YOe(s){s=s|0,s=n[s+4>>2]|0,s|0&&ep(s)}function WOe(s){s=s|0,JOe(s,5052),VOe(s)|0,zOe(s,5058,26)|0,XOe(s,5069,1)|0,ZOe(s,5077,10)|0,$Oe(s,5087,19)|0,e4e(s,5094,27)|0}function JOe(s,A){s=s|0,A=A|0;var l=0;l=YUe()|0,n[s>>2]=l,WUe(l,A),$g(n[s>>2]|0)}function VOe(s){s=s|0;var A=0;return A=n[s>>2]|0,ed(A,FUe()|0),s|0}function zOe(s,A,l){return s=s|0,A=A|0,l=l|0,pUe(s,Dn(A)|0,l,0),s|0}function XOe(s,A,l){return s=s|0,A=A|0,l=l|0,$4e(s,Dn(A)|0,l,0),s|0}function ZOe(s,A,l){return s=s|0,A=A|0,l=l|0,b4e(s,Dn(A)|0,l,0),s|0}function $Oe(s,A,l){return s=s|0,A=A|0,l=l|0,d4e(s,Dn(A)|0,l,0),s|0}function I9(s,A){s=s|0,A=A|0;var l=0,u=0;e:for(;;){for(l=n[2703]|0;;){if((l|0)==(A|0))break e;if(u=n[l>>2]|0,n[2703]=u,!l)l=u;else break}yt(l)}n[2701]=s}function e4e(s,A,l){return s=s|0,A=A|0,l=l|0,t4e(s,Dn(A)|0,l,0),s|0}function t4e(s,A,l,u){s=s|0,A=A|0,l=l|0,u=u|0;var d=0,m=0;m=n[s>>2]|0,d=HR()|0,s=r4e(l)|0,Sn(m,A,d,s,n4e(l,u)|0,u)}function HR(){var s=0,A=0;if(o[8040]|0||(B9(10860),Dt(65,10860,H|0)|0,A=8040,n[A>>2]=1,n[A+4>>2]=0),!(Gr(10860)|0)){s=10860,A=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(A|0));B9(10860)}return 10860}function r4e(s){return s=s|0,s|0}function n4e(s,A){s=s|0,A=A|0;var l=0,u=0,d=0,m=0,w=0,P=0,b=0;return P=C,C=C+16|0,d=P,m=P+4|0,n[d>>2]=s,b=HR()|0,w=b+24|0,A=wr(A,4)|0,n[m>>2]=A,l=b+28|0,u=n[l>>2]|0,u>>>0<(n[b+32>>2]|0)>>>0?(w9(u,s,A),A=(n[l>>2]|0)+8|0,n[l>>2]=A):(i4e(w,d,m),A=n[l>>2]|0),C=P,(A-(n[w>>2]|0)>>3)+-1|0}function w9(s,A,l){s=s|0,A=A|0,l=l|0,n[s>>2]=A,n[s+4>>2]=l}function i4e(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0,w=0,P=0,b=0,O=0,L=0;if(P=C,C=C+32|0,d=P,m=s+4|0,w=((n[m>>2]|0)-(n[s>>2]|0)>>3)+1|0,u=s4e(s)|0,u>>>0>>0)An(s);else{b=n[s>>2]|0,L=(n[s+8>>2]|0)-b|0,O=L>>2,o4e(d,L>>3>>>0>>1>>>0?O>>>0>>0?w:O:u,(n[m>>2]|0)-b>>3,s+8|0),w=d+8|0,w9(n[w>>2]|0,n[A>>2]|0,n[l>>2]|0),n[w>>2]=(n[w>>2]|0)+8,a4e(s,d),A4e(d),C=P;return}}function s4e(s){return s=s|0,536870911}function o4e(s,A,l,u){s=s|0,A=A|0,l=l|0,u=u|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=u;do if(A)if(A>>>0>536870911)Ot();else{d=Jt(A<<3)|0;break}else d=0;while(0);n[s>>2]=d,u=d+(l<<3)|0,n[s+8>>2]=u,n[s+4>>2]=u,n[s+12>>2]=d+(A<<3)}function a4e(s,A){s=s|0,A=A|0;var l=0,u=0,d=0,m=0,w=0;u=n[s>>2]|0,w=s+4|0,m=A+4|0,d=(n[w>>2]|0)-u|0,l=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=l,(d|0)>0?(Tr(l|0,u|0,d|0)|0,u=m,l=n[m>>2]|0):u=m,m=n[s>>2]|0,n[s>>2]=l,n[u>>2]=m,m=A+8|0,d=n[w>>2]|0,n[w>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,w=A+12|0,s=n[m>>2]|0,n[m>>2]=n[w>>2],n[w>>2]=s,n[A>>2]=n[u>>2]}function A4e(s){s=s|0;var A=0,l=0,u=0;A=n[s+4>>2]|0,l=s+8|0,u=n[l>>2]|0,(u|0)!=(A|0)&&(n[l>>2]=u+(~((u+-8-A|0)>>>3)<<3)),s=n[s>>2]|0,s|0&&yt(s)}function B9(s){s=s|0,u4e(s)}function l4e(s){s=s|0,c4e(s+24|0)}function c4e(s){s=s|0;var A=0,l=0,u=0;l=n[s>>2]|0,u=l,l|0&&(s=s+4|0,A=n[s>>2]|0,(A|0)!=(l|0)&&(n[s>>2]=A+(~((A+-8-u|0)>>>3)<<3)),yt(l))}function u4e(s){s=s|0;var A=0;A=nn()|0,sn(s,1,11,A,f4e()|0,2),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function f4e(){return 1840}function g4e(s,A,l){s=s|0,A=A|0,l=l|0,h4e(n[(p4e(s)|0)>>2]|0,A,l)}function p4e(s){return s=s|0,(n[(HR()|0)+24>>2]|0)+(s<<3)|0}function h4e(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0;u=C,C=C+16|0,m=u+1|0,d=u,Z0(m,A),A=$0(m,A)|0,Z0(d,l),l=$0(d,l)|0,Qf[s&31](A,l),C=u}function d4e(s,A,l,u){s=s|0,A=A|0,l=l|0,u=u|0;var d=0,m=0;m=n[s>>2]|0,d=qR()|0,s=m4e(l)|0,Sn(m,A,d,s,y4e(l,u)|0,u)}function qR(){var s=0,A=0;if(o[8048]|0||(v9(10896),Dt(66,10896,H|0)|0,A=8048,n[A>>2]=1,n[A+4>>2]=0),!(Gr(10896)|0)){s=10896,A=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(A|0));v9(10896)}return 10896}function m4e(s){return s=s|0,s|0}function y4e(s,A){s=s|0,A=A|0;var l=0,u=0,d=0,m=0,w=0,P=0,b=0;return P=C,C=C+16|0,d=P,m=P+4|0,n[d>>2]=s,b=qR()|0,w=b+24|0,A=wr(A,4)|0,n[m>>2]=A,l=b+28|0,u=n[l>>2]|0,u>>>0<(n[b+32>>2]|0)>>>0?(Q9(u,s,A),A=(n[l>>2]|0)+8|0,n[l>>2]=A):(C4e(w,d,m),A=n[l>>2]|0),C=P,(A-(n[w>>2]|0)>>3)+-1|0}function Q9(s,A,l){s=s|0,A=A|0,l=l|0,n[s>>2]=A,n[s+4>>2]=l}function C4e(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0,w=0,P=0,b=0,O=0,L=0;if(P=C,C=C+32|0,d=P,m=s+4|0,w=((n[m>>2]|0)-(n[s>>2]|0)>>3)+1|0,u=E4e(s)|0,u>>>0>>0)An(s);else{b=n[s>>2]|0,L=(n[s+8>>2]|0)-b|0,O=L>>2,I4e(d,L>>3>>>0>>1>>>0?O>>>0>>0?w:O:u,(n[m>>2]|0)-b>>3,s+8|0),w=d+8|0,Q9(n[w>>2]|0,n[A>>2]|0,n[l>>2]|0),n[w>>2]=(n[w>>2]|0)+8,w4e(s,d),B4e(d),C=P;return}}function E4e(s){return s=s|0,536870911}function I4e(s,A,l,u){s=s|0,A=A|0,l=l|0,u=u|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=u;do if(A)if(A>>>0>536870911)Ot();else{d=Jt(A<<3)|0;break}else d=0;while(0);n[s>>2]=d,u=d+(l<<3)|0,n[s+8>>2]=u,n[s+4>>2]=u,n[s+12>>2]=d+(A<<3)}function w4e(s,A){s=s|0,A=A|0;var l=0,u=0,d=0,m=0,w=0;u=n[s>>2]|0,w=s+4|0,m=A+4|0,d=(n[w>>2]|0)-u|0,l=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=l,(d|0)>0?(Tr(l|0,u|0,d|0)|0,u=m,l=n[m>>2]|0):u=m,m=n[s>>2]|0,n[s>>2]=l,n[u>>2]=m,m=A+8|0,d=n[w>>2]|0,n[w>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,w=A+12|0,s=n[m>>2]|0,n[m>>2]=n[w>>2],n[w>>2]=s,n[A>>2]=n[u>>2]}function B4e(s){s=s|0;var A=0,l=0,u=0;A=n[s+4>>2]|0,l=s+8|0,u=n[l>>2]|0,(u|0)!=(A|0)&&(n[l>>2]=u+(~((u+-8-A|0)>>>3)<<3)),s=n[s>>2]|0,s|0&&yt(s)}function v9(s){s=s|0,D4e(s)}function Q4e(s){s=s|0,v4e(s+24|0)}function v4e(s){s=s|0;var A=0,l=0,u=0;l=n[s>>2]|0,u=l,l|0&&(s=s+4|0,A=n[s>>2]|0,(A|0)!=(l|0)&&(n[s>>2]=A+(~((A+-8-u|0)>>>3)<<3)),yt(l))}function D4e(s){s=s|0;var A=0;A=nn()|0,sn(s,1,11,A,S4e()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function S4e(){return 1852}function k4e(s,A){return s=s|0,A=A|0,P4e(n[(x4e(s)|0)>>2]|0,A)|0}function x4e(s){return s=s|0,(n[(qR()|0)+24>>2]|0)+(s<<3)|0}function P4e(s,A){s=s|0,A=A|0;var l=0,u=0;return l=C,C=C+16|0,u=l,Z0(u,A),A=$0(u,A)|0,A=fv(od[s&31](A)|0)|0,C=l,A|0}function b4e(s,A,l,u){s=s|0,A=A|0,l=l|0,u=u|0;var d=0,m=0;m=n[s>>2]|0,d=GR()|0,s=F4e(l)|0,Sn(m,A,d,s,R4e(l,u)|0,u)}function GR(){var s=0,A=0;if(o[8056]|0||(S9(10932),Dt(67,10932,H|0)|0,A=8056,n[A>>2]=1,n[A+4>>2]=0),!(Gr(10932)|0)){s=10932,A=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(A|0));S9(10932)}return 10932}function F4e(s){return s=s|0,s|0}function R4e(s,A){s=s|0,A=A|0;var l=0,u=0,d=0,m=0,w=0,P=0,b=0;return P=C,C=C+16|0,d=P,m=P+4|0,n[d>>2]=s,b=GR()|0,w=b+24|0,A=wr(A,4)|0,n[m>>2]=A,l=b+28|0,u=n[l>>2]|0,u>>>0<(n[b+32>>2]|0)>>>0?(D9(u,s,A),A=(n[l>>2]|0)+8|0,n[l>>2]=A):(T4e(w,d,m),A=n[l>>2]|0),C=P,(A-(n[w>>2]|0)>>3)+-1|0}function D9(s,A,l){s=s|0,A=A|0,l=l|0,n[s>>2]=A,n[s+4>>2]=l}function T4e(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0,w=0,P=0,b=0,O=0,L=0;if(P=C,C=C+32|0,d=P,m=s+4|0,w=((n[m>>2]|0)-(n[s>>2]|0)>>3)+1|0,u=N4e(s)|0,u>>>0>>0)An(s);else{b=n[s>>2]|0,L=(n[s+8>>2]|0)-b|0,O=L>>2,M4e(d,L>>3>>>0>>1>>>0?O>>>0>>0?w:O:u,(n[m>>2]|0)-b>>3,s+8|0),w=d+8|0,D9(n[w>>2]|0,n[A>>2]|0,n[l>>2]|0),n[w>>2]=(n[w>>2]|0)+8,L4e(s,d),O4e(d),C=P;return}}function N4e(s){return s=s|0,536870911}function M4e(s,A,l,u){s=s|0,A=A|0,l=l|0,u=u|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=u;do if(A)if(A>>>0>536870911)Ot();else{d=Jt(A<<3)|0;break}else d=0;while(0);n[s>>2]=d,u=d+(l<<3)|0,n[s+8>>2]=u,n[s+4>>2]=u,n[s+12>>2]=d+(A<<3)}function L4e(s,A){s=s|0,A=A|0;var l=0,u=0,d=0,m=0,w=0;u=n[s>>2]|0,w=s+4|0,m=A+4|0,d=(n[w>>2]|0)-u|0,l=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=l,(d|0)>0?(Tr(l|0,u|0,d|0)|0,u=m,l=n[m>>2]|0):u=m,m=n[s>>2]|0,n[s>>2]=l,n[u>>2]=m,m=A+8|0,d=n[w>>2]|0,n[w>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,w=A+12|0,s=n[m>>2]|0,n[m>>2]=n[w>>2],n[w>>2]=s,n[A>>2]=n[u>>2]}function O4e(s){s=s|0;var A=0,l=0,u=0;A=n[s+4>>2]|0,l=s+8|0,u=n[l>>2]|0,(u|0)!=(A|0)&&(n[l>>2]=u+(~((u+-8-A|0)>>>3)<<3)),s=n[s>>2]|0,s|0&&yt(s)}function S9(s){s=s|0,_4e(s)}function U4e(s){s=s|0,K4e(s+24|0)}function K4e(s){s=s|0;var A=0,l=0,u=0;l=n[s>>2]|0,u=l,l|0&&(s=s+4|0,A=n[s>>2]|0,(A|0)!=(l|0)&&(n[s>>2]=A+(~((A+-8-u|0)>>>3)<<3)),yt(l))}function _4e(s){s=s|0;var A=0;A=nn()|0,sn(s,1,7,A,H4e()|0,2),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function H4e(){return 1860}function q4e(s,A,l){return s=s|0,A=A|0,l=l|0,j4e(n[(G4e(s)|0)>>2]|0,A,l)|0}function G4e(s){return s=s|0,(n[(GR()|0)+24>>2]|0)+(s<<3)|0}function j4e(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0,w=0,P=0,b=0;return u=C,C=C+32|0,w=u+12|0,m=u+8|0,P=u,b=u+16|0,d=u+4|0,Y4e(b,A),W4e(P,b,A),Vg(d,l),l=zg(d,l)|0,n[w>>2]=n[P>>2],zI[s&15](m,w,l),l=J4e(m)|0,ff(m),Xg(d),C=u,l|0}function Y4e(s,A){s=s|0,A=A|0}function W4e(s,A,l){s=s|0,A=A|0,l=l|0,V4e(s,l)}function J4e(s){return s=s|0,Oa(s)|0}function V4e(s,A){s=s|0,A=A|0;var l=0,u=0,d=0;d=C,C=C+16|0,l=d,u=A,u&1?(z4e(l,0),Pn(u|0,l|0)|0,X4e(s,l),Z4e(l)):n[s>>2]=n[A>>2],C=d}function z4e(s,A){s=s|0,A=A|0,Pj(s,A),n[s+4>>2]=0,o[s+8>>0]=0}function X4e(s,A){s=s|0,A=A|0,n[s>>2]=n[A+4>>2]}function Z4e(s){s=s|0,o[s+8>>0]=0}function $4e(s,A,l,u){s=s|0,A=A|0,l=l|0,u=u|0;var d=0,m=0;m=n[s>>2]|0,d=jR()|0,s=eUe(l)|0,Sn(m,A,d,s,tUe(l,u)|0,u)}function jR(){var s=0,A=0;if(o[8064]|0||(x9(10968),Dt(68,10968,H|0)|0,A=8064,n[A>>2]=1,n[A+4>>2]=0),!(Gr(10968)|0)){s=10968,A=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(A|0));x9(10968)}return 10968}function eUe(s){return s=s|0,s|0}function tUe(s,A){s=s|0,A=A|0;var l=0,u=0,d=0,m=0,w=0,P=0,b=0;return P=C,C=C+16|0,d=P,m=P+4|0,n[d>>2]=s,b=jR()|0,w=b+24|0,A=wr(A,4)|0,n[m>>2]=A,l=b+28|0,u=n[l>>2]|0,u>>>0<(n[b+32>>2]|0)>>>0?(k9(u,s,A),A=(n[l>>2]|0)+8|0,n[l>>2]=A):(rUe(w,d,m),A=n[l>>2]|0),C=P,(A-(n[w>>2]|0)>>3)+-1|0}function k9(s,A,l){s=s|0,A=A|0,l=l|0,n[s>>2]=A,n[s+4>>2]=l}function rUe(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0,w=0,P=0,b=0,O=0,L=0;if(P=C,C=C+32|0,d=P,m=s+4|0,w=((n[m>>2]|0)-(n[s>>2]|0)>>3)+1|0,u=nUe(s)|0,u>>>0>>0)An(s);else{b=n[s>>2]|0,L=(n[s+8>>2]|0)-b|0,O=L>>2,iUe(d,L>>3>>>0>>1>>>0?O>>>0>>0?w:O:u,(n[m>>2]|0)-b>>3,s+8|0),w=d+8|0,k9(n[w>>2]|0,n[A>>2]|0,n[l>>2]|0),n[w>>2]=(n[w>>2]|0)+8,sUe(s,d),oUe(d),C=P;return}}function nUe(s){return s=s|0,536870911}function iUe(s,A,l,u){s=s|0,A=A|0,l=l|0,u=u|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=u;do if(A)if(A>>>0>536870911)Ot();else{d=Jt(A<<3)|0;break}else d=0;while(0);n[s>>2]=d,u=d+(l<<3)|0,n[s+8>>2]=u,n[s+4>>2]=u,n[s+12>>2]=d+(A<<3)}function sUe(s,A){s=s|0,A=A|0;var l=0,u=0,d=0,m=0,w=0;u=n[s>>2]|0,w=s+4|0,m=A+4|0,d=(n[w>>2]|0)-u|0,l=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=l,(d|0)>0?(Tr(l|0,u|0,d|0)|0,u=m,l=n[m>>2]|0):u=m,m=n[s>>2]|0,n[s>>2]=l,n[u>>2]=m,m=A+8|0,d=n[w>>2]|0,n[w>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,w=A+12|0,s=n[m>>2]|0,n[m>>2]=n[w>>2],n[w>>2]=s,n[A>>2]=n[u>>2]}function oUe(s){s=s|0;var A=0,l=0,u=0;A=n[s+4>>2]|0,l=s+8|0,u=n[l>>2]|0,(u|0)!=(A|0)&&(n[l>>2]=u+(~((u+-8-A|0)>>>3)<<3)),s=n[s>>2]|0,s|0&&yt(s)}function x9(s){s=s|0,lUe(s)}function aUe(s){s=s|0,AUe(s+24|0)}function AUe(s){s=s|0;var A=0,l=0,u=0;l=n[s>>2]|0,u=l,l|0&&(s=s+4|0,A=n[s>>2]|0,(A|0)!=(l|0)&&(n[s>>2]=A+(~((A+-8-u|0)>>>3)<<3)),yt(l))}function lUe(s){s=s|0;var A=0;A=nn()|0,sn(s,1,1,A,cUe()|0,5),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function cUe(){return 1872}function uUe(s,A,l,u,d,m){s=s|0,A=A|0,l=l|0,u=u|0,d=d|0,m=m|0,gUe(n[(fUe(s)|0)>>2]|0,A,l,u,d,m)}function fUe(s){return s=s|0,(n[(jR()|0)+24>>2]|0)+(s<<3)|0}function gUe(s,A,l,u,d,m){s=s|0,A=A|0,l=l|0,u=u|0,d=d|0,m=m|0;var w=0,P=0,b=0,O=0,L=0,W=0;w=C,C=C+32|0,P=w+16|0,b=w+12|0,O=w+8|0,L=w+4|0,W=w,Vg(P,A),A=zg(P,A)|0,Vg(b,l),l=zg(b,l)|0,Vg(O,u),u=zg(O,u)|0,Vg(L,d),d=zg(L,d)|0,Vg(W,m),m=zg(W,m)|0,X9[s&1](A,l,u,d,m),Xg(W),Xg(L),Xg(O),Xg(b),Xg(P),C=w}function pUe(s,A,l,u){s=s|0,A=A|0,l=l|0,u=u|0;var d=0,m=0;m=n[s>>2]|0,d=YR()|0,s=hUe(l)|0,Sn(m,A,d,s,dUe(l,u)|0,u)}function YR(){var s=0,A=0;if(o[8072]|0||(b9(11004),Dt(69,11004,H|0)|0,A=8072,n[A>>2]=1,n[A+4>>2]=0),!(Gr(11004)|0)){s=11004,A=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(A|0));b9(11004)}return 11004}function hUe(s){return s=s|0,s|0}function dUe(s,A){s=s|0,A=A|0;var l=0,u=0,d=0,m=0,w=0,P=0,b=0;return P=C,C=C+16|0,d=P,m=P+4|0,n[d>>2]=s,b=YR()|0,w=b+24|0,A=wr(A,4)|0,n[m>>2]=A,l=b+28|0,u=n[l>>2]|0,u>>>0<(n[b+32>>2]|0)>>>0?(P9(u,s,A),A=(n[l>>2]|0)+8|0,n[l>>2]=A):(mUe(w,d,m),A=n[l>>2]|0),C=P,(A-(n[w>>2]|0)>>3)+-1|0}function P9(s,A,l){s=s|0,A=A|0,l=l|0,n[s>>2]=A,n[s+4>>2]=l}function mUe(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0,w=0,P=0,b=0,O=0,L=0;if(P=C,C=C+32|0,d=P,m=s+4|0,w=((n[m>>2]|0)-(n[s>>2]|0)>>3)+1|0,u=yUe(s)|0,u>>>0>>0)An(s);else{b=n[s>>2]|0,L=(n[s+8>>2]|0)-b|0,O=L>>2,CUe(d,L>>3>>>0>>1>>>0?O>>>0>>0?w:O:u,(n[m>>2]|0)-b>>3,s+8|0),w=d+8|0,P9(n[w>>2]|0,n[A>>2]|0,n[l>>2]|0),n[w>>2]=(n[w>>2]|0)+8,EUe(s,d),IUe(d),C=P;return}}function yUe(s){return s=s|0,536870911}function CUe(s,A,l,u){s=s|0,A=A|0,l=l|0,u=u|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=u;do if(A)if(A>>>0>536870911)Ot();else{d=Jt(A<<3)|0;break}else d=0;while(0);n[s>>2]=d,u=d+(l<<3)|0,n[s+8>>2]=u,n[s+4>>2]=u,n[s+12>>2]=d+(A<<3)}function EUe(s,A){s=s|0,A=A|0;var l=0,u=0,d=0,m=0,w=0;u=n[s>>2]|0,w=s+4|0,m=A+4|0,d=(n[w>>2]|0)-u|0,l=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=l,(d|0)>0?(Tr(l|0,u|0,d|0)|0,u=m,l=n[m>>2]|0):u=m,m=n[s>>2]|0,n[s>>2]=l,n[u>>2]=m,m=A+8|0,d=n[w>>2]|0,n[w>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,w=A+12|0,s=n[m>>2]|0,n[m>>2]=n[w>>2],n[w>>2]=s,n[A>>2]=n[u>>2]}function IUe(s){s=s|0;var A=0,l=0,u=0;A=n[s+4>>2]|0,l=s+8|0,u=n[l>>2]|0,(u|0)!=(A|0)&&(n[l>>2]=u+(~((u+-8-A|0)>>>3)<<3)),s=n[s>>2]|0,s|0&&yt(s)}function b9(s){s=s|0,QUe(s)}function wUe(s){s=s|0,BUe(s+24|0)}function BUe(s){s=s|0;var A=0,l=0,u=0;l=n[s>>2]|0,u=l,l|0&&(s=s+4|0,A=n[s>>2]|0,(A|0)!=(l|0)&&(n[s>>2]=A+(~((A+-8-u|0)>>>3)<<3)),yt(l))}function QUe(s){s=s|0;var A=0;A=nn()|0,sn(s,1,12,A,vUe()|0,2),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function vUe(){return 1896}function DUe(s,A,l){s=s|0,A=A|0,l=l|0,kUe(n[(SUe(s)|0)>>2]|0,A,l)}function SUe(s){return s=s|0,(n[(YR()|0)+24>>2]|0)+(s<<3)|0}function kUe(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0;u=C,C=C+16|0,m=u+4|0,d=u,xUe(m,A),A=PUe(m,A)|0,Vg(d,l),l=zg(d,l)|0,Qf[s&31](A,l),Xg(d),C=u}function xUe(s,A){s=s|0,A=A|0}function PUe(s,A){return s=s|0,A=A|0,bUe(A)|0}function bUe(s){return s=s|0,s|0}function FUe(){var s=0;return o[8080]|0||(F9(11040),Dt(70,11040,H|0)|0,s=8080,n[s>>2]=1,n[s+4>>2]=0),Gr(11040)|0||F9(11040),11040}function F9(s){s=s|0,NUe(s),td(s,71)}function RUe(s){s=s|0,TUe(s+24|0)}function TUe(s){s=s|0;var A=0,l=0,u=0;l=n[s>>2]|0,u=l,l|0&&(s=s+4|0,A=n[s>>2]|0,(A|0)!=(l|0)&&(n[s>>2]=A+(~((A+-8-u|0)>>>3)<<3)),yt(l))}function NUe(s){s=s|0;var A=0;A=nn()|0,sn(s,5,7,A,UUe()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function MUe(s){s=s|0,LUe(s)}function LUe(s){s=s|0,OUe(s)}function OUe(s){s=s|0,o[s+8>>0]=1}function UUe(){return 1936}function KUe(){return _Ue()|0}function _Ue(){var s=0,A=0,l=0,u=0,d=0,m=0,w=0;return A=C,C=C+16|0,d=A+4|0,w=A,l=hA(8)|0,s=l,m=s+4|0,n[m>>2]=Jt(1)|0,u=Jt(8)|0,m=n[m>>2]|0,n[w>>2]=0,n[d>>2]=n[w>>2],HUe(u,m,d),n[l>>2]=u,C=A,s|0}function HUe(s,A,l){s=s|0,A=A|0,l=l|0,n[s>>2]=A,l=Jt(16)|0,n[l+4>>2]=0,n[l+8>>2]=0,n[l>>2]=1916,n[l+12>>2]=A,n[s+4>>2]=l}function qUe(s){s=s|0,By(s),yt(s)}function GUe(s){s=s|0,s=n[s+12>>2]|0,s|0&&yt(s)}function jUe(s){s=s|0,yt(s)}function YUe(){var s=0;return o[8088]|0||($Ue(11076),Dt(25,11076,H|0)|0,s=8088,n[s>>2]=1,n[s+4>>2]=0),11076}function WUe(s,A){s=s|0,A=A|0,n[s>>2]=JUe()|0,n[s+4>>2]=VUe()|0,n[s+12>>2]=A,n[s+8>>2]=zUe()|0,n[s+32>>2]=10}function JUe(){return 11745}function VUe(){return 1940}function zUe(){return gv()|0}function XUe(s,A,l,u){s=s|0,A=A|0,l=l|0,u=u|0,(Zg(u,896)|0)==512?l|0&&(ZUe(l),yt(l)):A|0&&yt(A)}function ZUe(s){s=s|0,s=n[s+4>>2]|0,s|0&&ep(s)}function $Ue(s){s=s|0,Jg(s)}function Xl(s,A){s=s|0,A=A|0,n[s>>2]=A}function WR(s){return s=s|0,n[s>>2]|0}function e3e(s){return s=s|0,o[n[s>>2]>>0]|0}function t3e(s,A){s=s|0,A=A|0;var l=0,u=0;l=C,C=C+16|0,u=l,n[u>>2]=n[s>>2],r3e(A,u)|0,C=l}function r3e(s,A){s=s|0,A=A|0;var l=0;return l=n3e(n[s>>2]|0,A)|0,A=s+4|0,n[(n[A>>2]|0)+8>>2]=l,n[(n[A>>2]|0)+8>>2]|0}function n3e(s,A){s=s|0,A=A|0;var l=0,u=0;return l=C,C=C+16|0,u=l,dA(u),s=Oa(s)|0,A=i3e(s,n[A>>2]|0)|0,mA(u),C=l,A|0}function dA(s){s=s|0,n[s>>2]=n[2701],n[s+4>>2]=n[2703]}function i3e(s,A){s=s|0,A=A|0;var l=0;return l=$A(s3e()|0)|0,Ln(0,l|0,s|0,KR(A)|0)|0}function mA(s){s=s|0,I9(n[s>>2]|0,n[s+4>>2]|0)}function s3e(){var s=0;return o[8096]|0||(o3e(11120),s=8096,n[s>>2]=1,n[s+4>>2]=0),11120}function o3e(s){s=s|0,el(s,a3e()|0,1)}function a3e(){return 1948}function A3e(){l3e()}function l3e(){var s=0,A=0,l=0,u=0,d=0,m=0,w=0,P=0,b=0,O=0,L=0,W=0,ue=0,ze=0,_e=0,Me=0;if(_e=C,C=C+16|0,L=_e+4|0,W=_e,Ti(65536,10804,n[2702]|0,10812),l=r9()|0,A=n[l>>2]|0,s=n[A>>2]|0,s|0)for(u=n[l+8>>2]|0,l=n[l+4>>2]|0;kr(s|0,c[l>>0]|0|0,o[u>>0]|0),A=A+4|0,s=n[A>>2]|0,s;)u=u+1|0,l=l+1|0;if(s=n9()|0,A=n[s>>2]|0,A|0)do Qo(A|0,n[s+4>>2]|0),s=s+8|0,A=n[s>>2]|0;while((A|0)!=0);Qo(c3e()|0,5167),O=yy()|0,s=n[O>>2]|0;e:do if(s|0){do u3e(n[s+4>>2]|0),s=n[s>>2]|0;while((s|0)!=0);if(s=n[O>>2]|0,s|0){b=O;do{for(;d=s,s=n[s>>2]|0,d=n[d+4>>2]|0,!!(f3e(d)|0);)if(n[W>>2]=b,n[L>>2]=n[W>>2],g3e(O,L)|0,!s)break e;if(p3e(d),b=n[b>>2]|0,A=R9(d)|0,m=Zi()|0,w=C,C=C+((1*(A<<2)|0)+15&-16)|0,P=C,C=C+((1*(A<<2)|0)+15&-16)|0,A=n[(h9(d)|0)>>2]|0,A|0)for(l=w,u=P;n[l>>2]=n[(Cy(n[A+4>>2]|0)|0)>>2],n[u>>2]=n[A+8>>2],A=n[A>>2]|0,A;)l=l+4|0,u=u+4|0;Me=Cy(d)|0,A=h3e(d)|0,l=R9(d)|0,u=d3e(d)|0,rn(Me|0,A|0,w|0,P|0,l|0,u|0,TR(d)|0),us(m|0)}while((s|0)!=0)}}while(0);if(s=n[(NR()|0)>>2]|0,s|0)do Me=s+4|0,O=MR(Me)|0,d=YI(O)|0,m=GI(O)|0,w=(jI(O)|0)+1|0,P=yv(O)|0,b=T9(Me)|0,O=Gr(O)|0,L=hv(Me)|0,W=JR(Me)|0,Da(0,d|0,m|0,w|0,P|0,b|0,O|0,L|0,W|0,VR(Me)|0),s=n[s>>2]|0;while((s|0)!=0);s=n[(yy()|0)>>2]|0;e:do if(s|0){t:for(;;){if(A=n[s+4>>2]|0,A|0&&(ue=n[(Cy(A)|0)>>2]|0,ze=n[(d9(A)|0)>>2]|0,ze|0)){l=ze;do{A=l+4|0,u=MR(A)|0;r:do if(u|0)switch(Gr(u)|0){case 0:break t;case 4:case 3:case 2:{P=YI(u)|0,b=GI(u)|0,O=(jI(u)|0)+1|0,L=yv(u)|0,W=Gr(u)|0,Me=hv(A)|0,Da(ue|0,P|0,b|0,O|0,L|0,0,W|0,Me|0,JR(A)|0,VR(A)|0);break r}case 1:{w=YI(u)|0,P=GI(u)|0,b=(jI(u)|0)+1|0,O=yv(u)|0,L=T9(A)|0,W=Gr(u)|0,Me=hv(A)|0,Da(ue|0,w|0,P|0,b|0,O|0,L|0,W|0,Me|0,JR(A)|0,VR(A)|0);break r}case 5:{O=YI(u)|0,L=GI(u)|0,W=(jI(u)|0)+1|0,Me=yv(u)|0,Da(ue|0,O|0,L|0,W|0,Me|0,m3e(u)|0,Gr(u)|0,0,0,0);break r}default:break r}while(0);l=n[l>>2]|0}while((l|0)!=0)}if(s=n[s>>2]|0,!s)break e}Ot()}while(0);we(),C=_e}function c3e(){return 11703}function u3e(s){s=s|0,o[s+40>>0]=0}function f3e(s){return s=s|0,(o[s+40>>0]|0)!=0|0}function g3e(s,A){return s=s|0,A=A|0,A=y3e(A)|0,s=n[A>>2]|0,n[A>>2]=n[s>>2],yt(s),n[A>>2]|0}function p3e(s){s=s|0,o[s+40>>0]=1}function R9(s){return s=s|0,n[s+20>>2]|0}function h3e(s){return s=s|0,n[s+8>>2]|0}function d3e(s){return s=s|0,n[s+32>>2]|0}function yv(s){return s=s|0,n[s+4>>2]|0}function T9(s){return s=s|0,n[s+4>>2]|0}function JR(s){return s=s|0,n[s+8>>2]|0}function VR(s){return s=s|0,n[s+16>>2]|0}function m3e(s){return s=s|0,n[s+20>>2]|0}function y3e(s){return s=s|0,n[s>>2]|0}function Cv(s){s=s|0;var A=0,l=0,u=0,d=0,m=0,w=0,P=0,b=0,O=0,L=0,W=0,ue=0,ze=0,_e=0,Me=0,ot=0,nt=0,ft=0,Ge=0,Ve=0,Kt=0;Kt=C,C=C+16|0,ue=Kt;do if(s>>>0<245){if(O=s>>>0<11?16:s+11&-8,s=O>>>3,W=n[2783]|0,l=W>>>s,l&3|0)return A=(l&1^1)+s|0,s=11172+(A<<1<<2)|0,l=s+8|0,u=n[l>>2]|0,d=u+8|0,m=n[d>>2]|0,(s|0)==(m|0)?n[2783]=W&~(1<>2]=s,n[l>>2]=m),Ve=A<<3,n[u+4>>2]=Ve|3,Ve=u+Ve+4|0,n[Ve>>2]=n[Ve>>2]|1,Ve=d,C=Kt,Ve|0;if(L=n[2785]|0,O>>>0>L>>>0){if(l|0)return A=2<>>12&16,A=A>>>w,l=A>>>5&8,A=A>>>l,d=A>>>2&4,A=A>>>d,s=A>>>1&2,A=A>>>s,u=A>>>1&1,u=(l|w|d|s|u)+(A>>>u)|0,A=11172+(u<<1<<2)|0,s=A+8|0,d=n[s>>2]|0,w=d+8|0,l=n[w>>2]|0,(A|0)==(l|0)?(s=W&~(1<>2]=A,n[s>>2]=l,s=W),m=(u<<3)-O|0,n[d+4>>2]=O|3,u=d+O|0,n[u+4>>2]=m|1,n[u+m>>2]=m,L|0&&(d=n[2788]|0,A=L>>>3,l=11172+(A<<1<<2)|0,A=1<>2]|0):(n[2783]=s|A,A=l,s=l+8|0),n[s>>2]=d,n[A+12>>2]=d,n[d+8>>2]=A,n[d+12>>2]=l),n[2785]=m,n[2788]=u,Ve=w,C=Kt,Ve|0;if(P=n[2784]|0,P){if(l=(P&0-P)+-1|0,w=l>>>12&16,l=l>>>w,m=l>>>5&8,l=l>>>m,b=l>>>2&4,l=l>>>b,u=l>>>1&2,l=l>>>u,s=l>>>1&1,s=n[11436+((m|w|b|u|s)+(l>>>s)<<2)>>2]|0,l=(n[s+4>>2]&-8)-O|0,u=n[s+16+(((n[s+16>>2]|0)==0&1)<<2)>>2]|0,!u)b=s,m=l;else{do w=(n[u+4>>2]&-8)-O|0,b=w>>>0>>0,l=b?w:l,s=b?u:s,u=n[u+16+(((n[u+16>>2]|0)==0&1)<<2)>>2]|0;while((u|0)!=0);b=s,m=l}if(w=b+O|0,b>>>0>>0){d=n[b+24>>2]|0,A=n[b+12>>2]|0;do if((A|0)==(b|0)){if(s=b+20|0,A=n[s>>2]|0,!A&&(s=b+16|0,A=n[s>>2]|0,!A)){l=0;break}for(;;){if(l=A+20|0,u=n[l>>2]|0,u|0){A=u,s=l;continue}if(l=A+16|0,u=n[l>>2]|0,u)A=u,s=l;else break}n[s>>2]=0,l=A}else l=n[b+8>>2]|0,n[l+12>>2]=A,n[A+8>>2]=l,l=A;while(0);do if(d|0){if(A=n[b+28>>2]|0,s=11436+(A<<2)|0,(b|0)==(n[s>>2]|0)){if(n[s>>2]=l,!l){n[2784]=P&~(1<>2]|0)!=(b|0)&1)<<2)>>2]=l,!l)break;n[l+24>>2]=d,A=n[b+16>>2]|0,A|0&&(n[l+16>>2]=A,n[A+24>>2]=l),A=n[b+20>>2]|0,A|0&&(n[l+20>>2]=A,n[A+24>>2]=l)}while(0);return m>>>0<16?(Ve=m+O|0,n[b+4>>2]=Ve|3,Ve=b+Ve+4|0,n[Ve>>2]=n[Ve>>2]|1):(n[b+4>>2]=O|3,n[w+4>>2]=m|1,n[w+m>>2]=m,L|0&&(u=n[2788]|0,A=L>>>3,l=11172+(A<<1<<2)|0,A=1<>2]|0):(n[2783]=W|A,A=l,s=l+8|0),n[s>>2]=u,n[A+12>>2]=u,n[u+8>>2]=A,n[u+12>>2]=l),n[2785]=m,n[2788]=w),Ve=b+8|0,C=Kt,Ve|0}else W=O}else W=O}else W=O}else if(s>>>0<=4294967231)if(s=s+11|0,O=s&-8,b=n[2784]|0,b){u=0-O|0,s=s>>>8,s?O>>>0>16777215?P=31:(W=(s+1048320|0)>>>16&8,Ge=s<>>16&4,Ge=Ge<>>16&2,P=14-(L|W|P)+(Ge<
(?:.(?!##))+)/gs;async function S0t(t){let r=`https://repo.yarnpkg.com/${Ze.isTaggedYarnVersion(ei)?ei:await S1(t,"canary")}/packages/gatsby/content/advanced/error-codes.md`,o=await Hn.get(r,{configuration:t});return new Map(Array.from(o.toString().matchAll(D0t),({groups:a})=>{if(!a)throw new Error("Assertion failed: Expected the match to have been successful");let n=Zde(a.code);if(a.name!==n)throw new Error(`Assertion failed: Invalid error code data: Expected "${a.name}" to be named "${n}"`);return[a.code,a.details]}))}var ph=class extends gt{constructor(){super(...arguments);this.code=k1.Option.String({required:!1,validator:PE.applyCascade(PE.isString(),[PE.matchesRegExp(/^YN[0-9]{4}$/)])});this.json=k1.Option.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}async execute(){let r=await rt.find(this.context.cwd,this.context.plugins);if(typeof this.code<"u"){let o=Zde(this.code),a=Ne.pretty(r,o,Ne.Type.CODE),n=this.cli.format().header(`${this.code} - ${a}`),f=(await S0t(r)).get(this.code),g=typeof f<"u"?Ne.jsonOrPretty(this.json,r,Ne.tuple(Ne.Type.MARKDOWN,{text:f,format:this.cli.format(),paragraphs:!0})):`This error code does not have a description. - -You can help us by editing this page on GitHub \u{1F642}: -${Ne.jsonOrPretty(this.json,r,Ne.tuple(Ne.Type.URL,"https://github.com/yarnpkg/berry/blob/master/packages/gatsby/content/advanced/error-codes.md"))} -`;this.json?this.context.stdout.write(`${JSON.stringify({code:this.code,name:o,details:g})} -`):this.context.stdout.write(`${n} - -${g} -`)}else{let o={children:Ze.mapAndFilter(Object.entries(br),([a,n])=>Number.isNaN(Number(a))?Ze.mapAndFilter.skip:{label:pu(Number(a)),value:Ne.tuple(Ne.Type.CODE,n)})};TA.emitTree(o,{configuration:r,stdout:this.context.stdout,json:this.json})}}};ph.paths=[["explain"]],ph.usage=k1.Command.Usage({description:"explain an error code",details:` - When the code argument is specified, this command prints its name and its details. - - When used without arguments, this command lists all error codes and their names. - `,examples:[["Explain an error code","$0 explain YN0006"],["List all error codes","$0 explain"]]});$e();Ft();var Ca=be(Vt()),$de=be(pa()),hh=class extends gt{constructor(){super(...arguments);this.all=Ca.Option.Boolean("-A,--all",!1,{description:"Print versions of a package from the whole project"});this.recursive=Ca.Option.Boolean("-R,--recursive",!1,{description:"Print information for all packages, including transitive dependencies"});this.extra=Ca.Option.Array("-X,--extra",[],{description:"An array of requests of extra data provided by plugins"});this.cache=Ca.Option.Boolean("--cache",!1,{description:"Print information about the cache entry of a package (path, size, checksum)"});this.dependents=Ca.Option.Boolean("--dependents",!1,{description:"Print all dependents for each matching package"});this.manifest=Ca.Option.Boolean("--manifest",!1,{description:"Print data obtained by looking at the package archive (license, homepage, ...)"});this.nameOnly=Ca.Option.Boolean("--name-only",!1,{description:"Only print the name for the matching packages"});this.virtuals=Ca.Option.Boolean("--virtuals",!1,{description:"Print each instance of the virtual packages"});this.json=Ca.Option.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.patterns=Ca.Option.Rest()}async execute(){let r=await rt.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await xt.find(r,this.context.cwd),n=await $r.find(r);if(!a&&!this.all)throw new lr(o.cwd,this.context.cwd);await o.restoreInstallState();let c=new Set(this.extra);this.cache&&c.add("cache"),this.dependents&&c.add("dependents"),this.manifest&&c.add("manifest");let f=(fe,{recursive:ye})=>{let Qe=fe.anchoredLocator.locatorHash,Pe=new Map,pe=[Qe];for(;pe.length>0;){let Ee=pe.shift();if(Pe.has(Ee))continue;let ke=o.storedPackages.get(Ee);if(typeof ke>"u")throw new Error("Assertion failed: Expected the package to be registered");if(Pe.set(Ee,ke),Y.isVirtualLocator(ke)&&pe.push(Y.devirtualizeLocator(ke).locatorHash),!(!ye&&Ee!==Qe))for(let h of ke.dependencies.values()){let Ke=o.storedResolutions.get(h.descriptorHash);if(typeof Ke>"u")throw new Error("Assertion failed: Expected the resolution to be registered");pe.push(Ke)}}return Pe.values()},g=({recursive:fe})=>{let ye=new Map;for(let Qe of o.workspaces)for(let Pe of f(Qe,{recursive:fe}))ye.set(Pe.locatorHash,Pe);return ye.values()},p=({all:fe,recursive:ye})=>fe&&ye?o.storedPackages.values():fe?g({recursive:ye}):f(a,{recursive:ye}),E=({all:fe,recursive:ye})=>{let Qe=p({all:fe,recursive:ye}),Pe=this.patterns.map(ke=>{let h=Y.parseLocator(ke),Ke=$de.default.makeRe(Y.stringifyIdent(h)),Ce=Y.isVirtualLocator(h),Be=Ce?Y.devirtualizeLocator(h):h;return le=>{let re=Y.stringifyIdent(le);if(!Ke.test(re))return!1;if(h.reference==="unknown")return!0;let Se=Y.isVirtualLocator(le),Ue=Se?Y.devirtualizeLocator(le):le;return!(Ce&&Se&&h.reference!==le.reference||Be.reference!==Ue.reference)}}),pe=Ze.sortMap([...Qe],ke=>Y.stringifyLocator(ke));return{selection:pe.filter(ke=>Pe.length===0||Pe.some(h=>h(ke))),sortedLookup:pe}},{selection:B,sortedLookup:Q}=E({all:this.all,recursive:this.recursive});if(B.length===0)throw new Ca.UsageError("No package matched your request");let x=new Map;if(this.dependents)for(let fe of Q)for(let ye of fe.dependencies.values()){let Qe=o.storedResolutions.get(ye.descriptorHash);if(typeof Qe>"u")throw new Error("Assertion failed: Expected the resolution to be registered");Ze.getArrayWithDefault(x,Qe).push(fe)}let C=new Map;for(let fe of Q){if(!Y.isVirtualLocator(fe))continue;let ye=Y.devirtualizeLocator(fe);Ze.getArrayWithDefault(C,ye.locatorHash).push(fe)}let N={},U={children:N},H=r.makeFetcher(),X={project:o,fetcher:H,cache:n,checksums:o.storedChecksums,report:new Wi,cacheOptions:{skipIntegrityCheck:!0}},ie=[async(fe,ye,Qe)=>{var Ee;if(!ye.has("manifest"))return;let Pe=await H.fetch(fe,X),pe;try{pe=await Gt.find(Pe.prefixPath,{baseFs:Pe.packageFs})}finally{(Ee=Pe.releaseFs)==null||Ee.call(Pe)}Qe("Manifest",{License:Ne.tuple(Ne.Type.NO_HINT,pe.license),Homepage:Ne.tuple(Ne.Type.URL,pe.raw.homepage??null)})},async(fe,ye,Qe)=>{if(!ye.has("cache"))return;let Pe={mockedPackages:o.disabledLocators,unstablePackages:o.conditionalLocators},pe=o.storedChecksums.get(fe.locatorHash)??null,Ee=n.getLocatorPath(fe,pe,Pe),ke;if(Ee!==null)try{ke=ge.statSync(Ee)}catch{}let h=typeof ke<"u"?[ke.size,Ne.Type.SIZE]:void 0;Qe("Cache",{Checksum:Ne.tuple(Ne.Type.NO_HINT,pe),Path:Ne.tuple(Ne.Type.PATH,Ee),Size:h})}];for(let fe of B){let ye=Y.isVirtualLocator(fe);if(!this.virtuals&&ye)continue;let Qe={},Pe={value:[fe,Ne.Type.LOCATOR],children:Qe};if(N[Y.stringifyLocator(fe)]=Pe,this.nameOnly){delete Pe.children;continue}let pe=C.get(fe.locatorHash);typeof pe<"u"&&(Qe.Instances={label:"Instances",value:Ne.tuple(Ne.Type.NUMBER,pe.length)}),Qe.Version={label:"Version",value:Ne.tuple(Ne.Type.NO_HINT,fe.version)};let Ee=(h,Ke)=>{let Ce={};if(Qe[h]=Ce,Array.isArray(Ke))Ce.children=Ke.map(Be=>({value:Be}));else{let Be={};Ce.children=Be;for(let[le,re]of Object.entries(Ke))typeof re>"u"||(Be[le]={label:le,value:re})}};if(!ye){for(let h of ie)await h(fe,c,Ee);await r.triggerHook(h=>h.fetchPackageInfo,fe,c,Ee)}fe.bin.size>0&&!ye&&Ee("Exported Binaries",[...fe.bin.keys()].map(h=>Ne.tuple(Ne.Type.PATH,h)));let ke=x.get(fe.locatorHash);typeof ke<"u"&&ke.length>0&&Ee("Dependents",ke.map(h=>Ne.tuple(Ne.Type.LOCATOR,h))),fe.dependencies.size>0&&!ye&&Ee("Dependencies",[...fe.dependencies.values()].map(h=>{let Ke=o.storedResolutions.get(h.descriptorHash),Ce=typeof Ke<"u"?o.storedPackages.get(Ke)??null:null;return Ne.tuple(Ne.Type.RESOLUTION,{descriptor:h,locator:Ce})})),fe.peerDependencies.size>0&&ye&&Ee("Peer dependencies",[...fe.peerDependencies.values()].map(h=>{let Ke=fe.dependencies.get(h.identHash),Ce=typeof Ke<"u"?o.storedResolutions.get(Ke.descriptorHash)??null:null,Be=Ce!==null?o.storedPackages.get(Ce)??null:null;return Ne.tuple(Ne.Type.RESOLUTION,{descriptor:h,locator:Be})}))}TA.emitTree(U,{configuration:r,json:this.json,stdout:this.context.stdout,separators:this.nameOnly?0:2})}};hh.paths=[["info"]],hh.usage=Ca.Command.Usage({description:"see information related to packages",details:"\n This command prints various information related to the specified packages, accepting glob patterns.\n\n By default, if the locator reference is missing, Yarn will default to print the information about all the matching direct dependencies of the package for the active workspace. To instead print all versions of the package that are direct dependencies of any of your workspaces, use the `-A,--all` flag. Adding the `-R,--recursive` flag will also report transitive dependencies.\n\n Some fields will be hidden by default in order to keep the output readable, but can be selectively displayed by using additional options (`--dependents`, `--manifest`, `--virtuals`, ...) described in the option descriptions.\n\n Note that this command will only print the information directly related to the selected packages - if you wish to know why the package is there in the first place, use `yarn why` which will do just that (it also provides a `-R,--recursive` flag that may be of some help).\n ",examples:[["Show information about Lodash","$0 info lodash"]]});$e();Ft();cl();var CP=be(Qd()),Ki=be(Vt()),eme=be(wA()),dh=class extends gt{constructor(){super(...arguments);this.json=Ki.Option.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.immutable=Ki.Option.Boolean("--immutable",{description:"Abort with an error exit code if the lockfile was to be modified"});this.immutableCache=Ki.Option.Boolean("--immutable-cache",{description:"Abort with an error exit code if the cache folder was to be modified"});this.refreshLockfile=Ki.Option.Boolean("--refresh-lockfile",{description:"Refresh the package metadata stored in the lockfile"});this.checkCache=Ki.Option.Boolean("--check-cache",{description:"Always refetch the packages and ensure that their checksums are consistent"});this.checkResolutions=Ki.Option.Boolean("--check-resolutions",{description:"Validates that the package resolutions are coherent"});this.inlineBuilds=Ki.Option.Boolean("--inline-builds",{description:"Verbosely print the output of the build steps of dependencies"});this.mode=Ki.Option.String("--mode",{description:"Change what artifacts installs generate",validator:eme.isEnum(NA)});this.cacheFolder=Ki.Option.String("--cache-folder",{hidden:!0});this.frozenLockfile=Ki.Option.Boolean("--frozen-lockfile",{hidden:!0});this.ignoreEngines=Ki.Option.Boolean("--ignore-engines",{hidden:!0});this.nonInteractive=Ki.Option.Boolean("--non-interactive",{hidden:!0});this.preferOffline=Ki.Option.Boolean("--prefer-offline",{hidden:!0});this.production=Ki.Option.Boolean("--production",{hidden:!0});this.registry=Ki.Option.String("--registry",{hidden:!0});this.silent=Ki.Option.Boolean("--silent",{hidden:!0});this.networkTimeout=Ki.Option.String("--network-timeout",{hidden:!0})}async execute(){let r=await rt.find(this.context.cwd,this.context.plugins);typeof this.inlineBuilds<"u"&&r.useWithSource("",{enableInlineBuilds:this.inlineBuilds},r.startingCwd,{overwrite:!0});let o=!!process.env.FUNCTION_TARGET||!!process.env.GOOGLE_RUNTIME,a=async(C,{error:N})=>{let U=await St.start({configuration:r,stdout:this.context.stdout,includeFooter:!1},async H=>{N?H.reportError(50,C):H.reportWarning(50,C)});return U.hasErrors()?U.exitCode():null};if(typeof this.ignoreEngines<"u"){let C=await a("The --ignore-engines option is deprecated; engine checking isn't a core feature anymore",{error:!CP.default.VERCEL});if(C!==null)return C}if(typeof this.registry<"u"){let C=await a("The --registry option is deprecated; prefer setting npmRegistryServer in your .yarnrc.yml file",{error:!1});if(C!==null)return C}if(typeof this.preferOffline<"u"){let C=await a("The --prefer-offline flag is deprecated; use the --cached flag with 'yarn add' instead",{error:!CP.default.VERCEL});if(C!==null)return C}if(typeof this.production<"u"){let C=await a("The --production option is deprecated on 'install'; use 'yarn workspaces focus' instead",{error:!0});if(C!==null)return C}if(typeof this.nonInteractive<"u"){let C=await a("The --non-interactive option is deprecated",{error:!o});if(C!==null)return C}if(typeof this.frozenLockfile<"u"&&(await a("The --frozen-lockfile option is deprecated; use --immutable and/or --immutable-cache instead",{error:!1}),this.immutable=this.frozenLockfile),typeof this.cacheFolder<"u"){let C=await a("The cache-folder option has been deprecated; use rc settings instead",{error:!CP.default.NETLIFY});if(C!==null)return C}let n=this.mode==="update-lockfile";if(n&&(this.immutable||this.immutableCache))throw new Ki.UsageError(`${Ne.pretty(r,"--immutable",Ne.Type.CODE)} and ${Ne.pretty(r,"--immutable-cache",Ne.Type.CODE)} cannot be used with ${Ne.pretty(r,"--mode=update-lockfile",Ne.Type.CODE)}`);let c=(this.immutable??r.get("enableImmutableInstalls"))&&!n,f=this.immutableCache&&!n;if(r.projectCwd!==null){let C=await St.start({configuration:r,json:this.json,stdout:this.context.stdout,includeFooter:!1},async N=>{await b0t(r,c)&&(N.reportInfo(48,"Automatically fixed merge conflicts \u{1F44D}"),N.reportSeparator())});if(C.hasErrors())return C.exitCode()}if(r.projectCwd!==null&&typeof r.sources.get("nodeLinker")>"u"){let C=r.projectCwd,N;try{N=await ge.readFilePromise(ee.join(C,Xr.lockfile),"utf8")}catch{}if(N!=null&&N.includes("yarn lockfile v1")){let U=await St.start({configuration:r,json:this.json,stdout:this.context.stdout,includeFooter:!1},async H=>{H.reportInfo(70,"Migrating from Yarn 1; automatically enabling the compatibility node-modules linker \u{1F44D}"),H.reportSeparator(),r.use("",{nodeLinker:"node-modules"},C,{overwrite:!0}),await rt.updateConfiguration(C,{nodeLinker:"node-modules"})});if(U.hasErrors())return U.exitCode()}}if(r.projectCwd!==null){let C=await St.start({configuration:r,json:this.json,stdout:this.context.stdout,includeFooter:!1},async N=>{var U;(U=rt.telemetry)!=null&&U.isNew&&(N.reportInfo(65,"Yarn will periodically gather anonymous telemetry: https://yarnpkg.com/advanced/telemetry"),N.reportInfo(65,`Run ${Ne.pretty(r,"yarn config set --home enableTelemetry 0",Ne.Type.CODE)} to disable`),N.reportSeparator())});if(C.hasErrors())return C.exitCode()}let{project:g,workspace:p}=await xt.find(r,this.context.cwd),E=await $r.find(r,{immutable:f,check:this.checkCache});if(!p)throw new lr(g.cwd,this.context.cwd);await g.restoreInstallState({restoreResolutions:!1});let B=r.get("enableHardenedMode");(this.refreshLockfile??B)&&(g.lockfileNeedsRefresh=!0);let Q=this.checkResolutions??B;return(await St.start({configuration:r,json:this.json,stdout:this.context.stdout,includeLogs:!0},async C=>{await g.install({cache:E,report:C,immutable:c,checkResolutions:Q,mode:this.mode})})).exitCode()}};dh.paths=[["install"],Ki.Command.Default],dh.usage=Ki.Command.Usage({description:"install the project dependencies",details:"\n This command sets up your project if needed. The installation is split into four different steps that each have their own characteristics:\n\n - **Resolution:** First the package manager will resolve your dependencies. The exact way a dependency version is privileged over another isn't standardized outside of the regular semver guarantees. If a package doesn't resolve to what you would expect, check that all dependencies are correctly declared (also check our website for more information: ).\n\n - **Fetch:** Then we download all the dependencies if needed, and make sure that they're all stored within our cache (check the value of `cacheFolder` in `yarn config` to see where the cache files are stored).\n\n - **Link:** Then we send the dependency tree information to internal plugins tasked with writing them on the disk in some form (for example by generating the .pnp.cjs file you might know).\n\n - **Build:** Once the dependency tree has been written on the disk, the package manager will now be free to run the build scripts for all packages that might need it, in a topological order compatible with the way they depend on one another. See https://yarnpkg.com/advanced/lifecycle-scripts for detail.\n\n Note that running this command is not part of the recommended workflow. Yarn supports zero-installs, which means that as long as you store your cache and your .pnp.cjs file inside your repository, everything will work without requiring any install right after cloning your repository or switching branches.\n\n If the `--immutable` option is set (defaults to true on CI), Yarn will abort with an error exit code if the lockfile was to be modified (other paths can be added using the `immutablePatterns` configuration setting). For backward compatibility we offer an alias under the name of `--frozen-lockfile`, but it will be removed in a later release.\n\n If the `--immutable-cache` option is set, Yarn will abort with an error exit code if the cache folder was to be modified (either because files would be added, or because they'd be removed).\n\n If the `--refresh-lockfile` option is set, Yarn will keep the same resolution for the packages currently in the lockfile but will refresh their metadata. If used together with `--immutable`, it can validate that the lockfile information are consistent. This flag is enabled by default when Yarn detects it runs within a pull request context.\n\n If the `--check-cache` option is set, Yarn will always refetch the packages and will ensure that their checksum matches what's 1/ described in the lockfile 2/ inside the existing cache files (if present). This is recommended as part of your CI workflow if you're both following the Zero-Installs model and accepting PRs from third-parties, as they'd otherwise have the ability to alter the checked-in packages before submitting them.\n\n If the `--inline-builds` option is set, Yarn will verbosely print the output of the build steps of your dependencies (instead of writing them into individual files). This is likely useful mostly for debug purposes only when using Docker-like environments.\n\n If the `--mode=` option is set, Yarn will change which artifacts are generated. The modes currently supported are:\n\n - `skip-build` will not run the build scripts at all. Note that this is different from setting `enableScripts` to false because the later will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run.\n\n - `update-lockfile` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost.\n ",examples:[["Install the project","$0 install"],["Validate a project when using Zero-Installs","$0 install --immutable --immutable-cache"],["Validate a project when using Zero-Installs (slightly safer if you accept external PRs)","$0 install --immutable --immutable-cache --check-cache"]]});var k0t="|||||||",x0t=">>>>>>>",P0t="=======",tme="<<<<<<<";async function b0t(t,e){if(!t.projectCwd)return!1;let r=ee.join(t.projectCwd,t.get("lockfileFilename"));if(!await ge.existsPromise(r))return!1;let o=await ge.readFilePromise(r,"utf8");if(!o.includes(tme))return!1;if(e)throw new rr(47,"Cannot autofix a lockfile when running an immutable install");let[a,n]=F0t(o),c,f;try{c=os(a),f=os(n)}catch{throw new rr(46,"The individual variants of the lockfile failed to parse")}let g={...c,...f};for(let[p,E]of Object.entries(g))typeof E=="string"&&delete g[p];return await ge.changeFilePromise(r,ja(g),{automaticNewlines:!0}),!0}function F0t(t){let e=[[],[]],r=t.split(/\r?\n/g),o=!1;for(;r.length>0;){let a=r.shift();if(typeof a>"u")throw new Error("Assertion failed: Some lines should remain");if(a.startsWith(tme)){for(;r.length>0;){let n=r.shift();if(typeof n>"u")throw new Error("Assertion failed: Some lines should remain");if(n===P0t){o=!1;break}else if(o||n.startsWith(k0t)){o=!0;continue}else e[0].push(n)}for(;r.length>0;){let n=r.shift();if(typeof n>"u")throw new Error("Assertion failed: Some lines should remain");if(n.startsWith(x0t))break;e[1].push(n)}}else e[0].push(a),e[1].push(a)}return[e[0].join(` -`),e[1].join(` -`)]}$e();Ft();var Rl=be(Vt()),mh=class extends gt{constructor(){super(...arguments);this.all=Rl.Option.Boolean("-A,--all",!1,{description:"Link all workspaces belonging to the target projects to the current one"});this.private=Rl.Option.Boolean("-p,--private",!1,{description:"Also link private workspaces belonging to the target projects to the current one"});this.relative=Rl.Option.Boolean("-r,--relative",!1,{description:"Link workspaces using relative paths instead of absolute paths"});this.destinations=Rl.Option.Rest()}async execute(){let r=await rt.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await xt.find(r,this.context.cwd),n=await $r.find(r);if(!a)throw new lr(o.cwd,this.context.cwd);await o.restoreInstallState({restoreResolutions:!1});let c=o.topLevelWorkspace,f=[];for(let p of this.destinations){let E=ee.resolve(this.context.cwd,me.toPortablePath(p)),B=await rt.find(E,this.context.plugins,{useRc:!1,strict:!1}),{project:Q,workspace:x}=await xt.find(B,E);if(o.cwd===Q.cwd)throw new Rl.UsageError(`Invalid destination '${p}'; Can't link the project to itself`);if(!x)throw new lr(Q.cwd,E);if(this.all){let C=!1;for(let N of Q.workspaces)N.manifest.name&&(!N.manifest.private||this.private)&&(f.push(N),C=!0);if(!C)throw new Rl.UsageError(`No workspace found to be linked in the target project: ${p}`)}else{if(!x.manifest.name)throw new Rl.UsageError(`The target workspace at '${p}' doesn't have a name and thus cannot be linked`);if(x.manifest.private&&!this.private)throw new Rl.UsageError(`The target workspace at '${p}' is marked private - use the --private flag to link it anyway`);f.push(x)}}for(let p of f){let E=Y.stringifyIdent(p.locator),B=this.relative?ee.relative(o.cwd,p.cwd):p.cwd;c.manifest.resolutions.push({pattern:{descriptor:{fullName:E}},reference:`portal:${B}`})}return(await St.start({configuration:r,stdout:this.context.stdout},async p=>{await o.install({cache:n,report:p})})).exitCode()}};mh.paths=[["link"]],mh.usage=Rl.Command.Usage({description:"connect the local project to another one",details:"\n This command will set a new `resolutions` field in the project-level manifest and point it to the workspace at the specified location (even if part of another project).\n ",examples:[["Register one or more remote workspaces for use in the current project","$0 link ~/ts-loader ~/jest"],["Register all workspaces from a remote project for use in the current project","$0 link ~/jest --all"]]});var EP=be(Vt()),yh=class extends gt{constructor(){super(...arguments);this.args=EP.Option.Proxy()}async execute(){return this.cli.run(["exec","node",...this.args])}};yh.paths=[["node"]],yh.usage=EP.Command.Usage({description:"run node with the hook already setup",details:` - This command simply runs Node. It also makes sure to call it in a way that's compatible with the current project (for example, on PnP projects the environment will be setup in such a way that PnP will be correctly injected into the environment). - - The Node process will use the exact same version of Node as the one used to run Yarn itself, which might be a good way to ensure that your commands always use a consistent Node version. - `,examples:[["Run a Node script","$0 node ./my-script.js"]]});$e();$e();Ft();var dg=be(Vt()),ame=Ie("os");$e();Ft();var Nu=be(Vt()),rme=Ie("os");$e();cl();var IP=be(Vt()),R0t="https://raw.githubusercontent.com/yarnpkg/berry/master/plugins.yml";async function vm(t,e){let r=await Hn.get(R0t,{configuration:t}),o=os(r.toString());return Object.fromEntries(Object.entries(o).filter(([a,n])=>!e||Zr.satisfiesWithPrereleases(e,n.range??"<4.0.0-rc.1")))}var Ch=class extends gt{constructor(){super(...arguments);this.json=IP.Option.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}async execute(){let r=await rt.find(this.context.cwd,this.context.plugins);return(await St.start({configuration:r,json:this.json,stdout:this.context.stdout},async a=>{let n=await vm(r,ei);for(let[c,{experimental:f,...g}]of Object.entries(n)){let p=c;f&&(p+=" [experimental]"),a.reportJson({name:c,experimental:f,...g}),a.reportInfo(null,p)}})).exitCode()}};Ch.paths=[["plugin","list"]],Ch.usage=IP.Command.Usage({category:"Plugin-related commands",description:"list the available official plugins",details:"\n This command prints the plugins available directly from the Yarn repository. Only those plugins can be referenced by name in `yarn plugin import`.\n ",examples:[["List the official plugins","$0 plugin list"]]});var T0t=/^[0-9]+$/;function nme(t){return T0t.test(t)?`pull/${t}/head`:t}var N0t=({repository:t,branch:e},r)=>[["git","init",me.fromPortablePath(r)],["git","remote","add","origin",t],["git","fetch","origin","--depth=1",nme(e)],["git","reset","--hard","FETCH_HEAD"]],M0t=({branch:t})=>[["git","fetch","origin","--depth=1",nme(t),"--force"],["git","reset","--hard","FETCH_HEAD"],["git","clean","-dfx"]],L0t=({plugins:t,noMinify:e},r)=>[["yarn","build:cli",...new Array().concat(...t.map(o=>["--plugin",ee.resolve(r,o)])),...e?["--no-minify"]:[],"|"]],Eh=class extends gt{constructor(){super(...arguments);this.installPath=Nu.Option.String("--path",{description:"The path where the repository should be cloned to"});this.repository=Nu.Option.String("--repository","https://github.com/yarnpkg/berry.git",{description:"The repository that should be cloned"});this.branch=Nu.Option.String("--branch","master",{description:"The branch of the repository that should be cloned"});this.plugins=Nu.Option.Array("--plugin",[],{description:"An array of additional plugins that should be included in the bundle"});this.noMinify=Nu.Option.Boolean("--no-minify",!1,{description:"Build a bundle for development (debugging) - non-minified and non-mangled"});this.force=Nu.Option.Boolean("-f,--force",!1,{description:"Always clone the repository instead of trying to fetch the latest commits"});this.skipPlugins=Nu.Option.Boolean("--skip-plugins",!1,{description:"Skip updating the contrib plugins"})}async execute(){let r=await rt.find(this.context.cwd,this.context.plugins),{project:o}=await xt.find(r,this.context.cwd),a=typeof this.installPath<"u"?ee.resolve(this.context.cwd,me.toPortablePath(this.installPath)):ee.resolve(me.toPortablePath((0,rme.tmpdir)()),"yarnpkg-sources",Oi.makeHash(this.repository).slice(0,6));return(await St.start({configuration:r,stdout:this.context.stdout},async c=>{await E_(this,{configuration:r,report:c,target:a}),c.reportSeparator(),c.reportInfo(0,"Building a fresh bundle"),c.reportSeparator(),await x1(L0t(this,a),{configuration:r,context:this.context,target:a}),c.reportSeparator();let f=ee.resolve(a,"packages/yarnpkg-cli/bundles/yarn.js"),g=await ge.readFilePromise(f),{bundleVersion:p}=await C_(r,null,async()=>g,{report:c});this.skipPlugins||await O0t(this,p,{project:o,report:c,target:a})})).exitCode()}};Eh.paths=[["set","version","from","sources"]],Eh.usage=Nu.Command.Usage({description:"build Yarn from master",details:` - This command will clone the Yarn repository into a temporary folder, then build it. The resulting bundle will then be copied into the local project. - - By default, it also updates all contrib plugins to the same commit the bundle is built from. This behavior can be disabled by using the \`--skip-plugins\` flag. - `,examples:[["Build Yarn from master","$0 set version from sources"]]});async function x1(t,{configuration:e,context:r,target:o}){for(let[a,...n]of t){let c=n[n.length-1]==="|";if(c&&n.pop(),c)await pn.pipevp(a,n,{cwd:o,stdin:r.stdin,stdout:r.stdout,stderr:r.stderr,strict:!0});else{r.stdout.write(`${Ne.pretty(e,` $ ${[a,...n].join(" ")}`,"grey")} -`);try{await pn.execvp(a,n,{cwd:o,strict:!0})}catch(f){throw r.stdout.write(f.stdout||f.stack),f}}}}async function E_(t,{configuration:e,report:r,target:o}){let a=!1;if(!t.force&&ge.existsSync(ee.join(o,".git"))){r.reportInfo(0,"Fetching the latest commits"),r.reportSeparator();try{await x1(M0t(t),{configuration:e,context:t.context,target:o}),a=!0}catch{r.reportSeparator(),r.reportWarning(0,"Repository update failed; we'll try to regenerate it")}}a||(r.reportInfo(0,"Cloning the remote repository"),r.reportSeparator(),await ge.removePromise(o),await ge.mkdirPromise(o,{recursive:!0}),await x1(N0t(t,o),{configuration:e,context:t.context,target:o}))}async function O0t(t,e,{project:r,report:o,target:a}){let n=await vm(r.configuration,e),c=new Set(Object.keys(n));for(let f of r.configuration.plugins.keys())!c.has(f)||await I_(f,t,{project:r,report:o,target:a})}$e();$e();Ft();var wP=be(Vt()),ime=be(wi()),sme=Ie("url"),ome=Ie("vm");var Ih=class extends gt{constructor(){super(...arguments);this.name=wP.Option.String()}async execute(){let r=await rt.find(this.context.cwd,this.context.plugins);return(await St.start({configuration:r,stdout:this.context.stdout},async a=>{let{project:n}=await xt.find(r,this.context.cwd),c,f;if(this.name.match(/^\.{0,2}[\\/]/)||me.isAbsolute(this.name)){let g=ee.resolve(this.context.cwd,me.toPortablePath(this.name));a.reportInfo(0,`Reading ${Ne.pretty(r,g,Ne.Type.PATH)}`),c=ee.relative(n.cwd,g),f=await ge.readFilePromise(g)}else{let g;if(this.name.match(/^https?:/)){try{new sme.URL(this.name)}catch{throw new rr(52,`Plugin specifier "${this.name}" is neither a plugin name nor a valid url`)}c=this.name,g=this.name}else{let p=Y.parseLocator(this.name.replace(/^((@yarnpkg\/)?plugin-)?/,"@yarnpkg/plugin-"));if(p.reference!=="unknown"&&!ime.default.valid(p.reference))throw new rr(0,"Official plugins only accept strict version references. Use an explicit URL if you wish to download them from another location.");let E=Y.stringifyIdent(p),B=await vm(r,ei);if(!Object.prototype.hasOwnProperty.call(B,E)){let Q=`Couldn't find a plugin named ${Y.prettyIdent(r,p)} on the remote registry. -`;throw r.plugins.has(E)?Q+=`A plugin named ${Y.prettyIdent(r,p)} is already installed; possibly attempting to import a built-in plugin.`:Q+=`Note that only the plugins referenced on our website (${Ne.pretty(r,"https://github.com/yarnpkg/berry/blob/master/plugins.yml",Ne.Type.URL)}) can be referenced by their name; any other plugin will have to be referenced through its public url (for example ${Ne.pretty(r,"https://github.com/yarnpkg/berry/raw/master/packages/plugin-typescript/bin/%40yarnpkg/plugin-typescript.js",Ne.Type.URL)}).`,new rr(51,Q)}c=E,g=B[E].url,p.reference!=="unknown"?g=g.replace(/\/master\//,`/${E}/${p.reference}/`):ei!==null&&(g=g.replace(/\/master\//,`/@yarnpkg/cli/${ei}/`))}a.reportInfo(0,`Downloading ${Ne.pretty(r,g,"green")}`),f=await Hn.get(g,{configuration:r})}await w_(c,f,{project:n,report:a})})).exitCode()}};Ih.paths=[["plugin","import"]],Ih.usage=wP.Command.Usage({category:"Plugin-related commands",description:"download a plugin",details:` - This command downloads the specified plugin from its remote location and updates the configuration to reference it in further CLI invocations. - - Three types of plugin references are accepted: - - - If the plugin is stored within the Yarn repository, it can be referenced by name. - - Third-party plugins can be referenced directly through their public urls. - - Local plugins can be referenced by their path on the disk. - - Plugins cannot be downloaded from the npm registry, and aren't allowed to have dependencies (they need to be bundled into a single file, possibly thanks to the \`@yarnpkg/builder\` package). - `,examples:[['Download and activate the "@yarnpkg/plugin-exec" plugin',"$0 plugin import @yarnpkg/plugin-exec"],['Download and activate the "@yarnpkg/plugin-exec" plugin (shorthand)',"$0 plugin import exec"],["Download and activate a community plugin","$0 plugin import https://example.org/path/to/plugin.js"],["Activate a local plugin","$0 plugin import ./path/to/plugin.js"]]});async function w_(t,e,{project:r,report:o}){let{configuration:a}=r,n={},c={exports:n};(0,ome.runInNewContext)(e.toString(),{module:c,exports:n});let f=c.exports.name,g=`.yarn/plugins/${f}.cjs`,p=ee.resolve(r.cwd,g);o.reportInfo(0,`Saving the new plugin in ${Ne.pretty(a,g,"magenta")}`),await ge.mkdirPromise(ee.dirname(p),{recursive:!0}),await ge.writeFilePromise(p,e);let E={path:g,spec:t};await rt.updateConfiguration(r.cwd,B=>{let Q=[],x=!1;for(let C of B.plugins||[]){let N=typeof C!="string"?C.path:C,U=ee.resolve(r.cwd,me.toPortablePath(N)),{name:H}=Ze.dynamicRequire(U);H!==f?Q.push(C):(Q.push(E),x=!0)}return x||Q.push(E),{...B,plugins:Q}})}var U0t=({pluginName:t,noMinify:e},r)=>[["yarn",`build:${t}`,...e?["--no-minify"]:[],"|"]],wh=class extends gt{constructor(){super(...arguments);this.installPath=dg.Option.String("--path",{description:"The path where the repository should be cloned to"});this.repository=dg.Option.String("--repository","https://github.com/yarnpkg/berry.git",{description:"The repository that should be cloned"});this.branch=dg.Option.String("--branch","master",{description:"The branch of the repository that should be cloned"});this.noMinify=dg.Option.Boolean("--no-minify",!1,{description:"Build a plugin for development (debugging) - non-minified and non-mangled"});this.force=dg.Option.Boolean("-f,--force",!1,{description:"Always clone the repository instead of trying to fetch the latest commits"});this.name=dg.Option.String()}async execute(){let r=await rt.find(this.context.cwd,this.context.plugins),o=typeof this.installPath<"u"?ee.resolve(this.context.cwd,me.toPortablePath(this.installPath)):ee.resolve(me.toPortablePath((0,ame.tmpdir)()),"yarnpkg-sources",Oi.makeHash(this.repository).slice(0,6));return(await St.start({configuration:r,stdout:this.context.stdout},async n=>{let{project:c}=await xt.find(r,this.context.cwd),f=Y.parseIdent(this.name.replace(/^((@yarnpkg\/)?plugin-)?/,"@yarnpkg/plugin-")),g=Y.stringifyIdent(f),p=await vm(r,ei);if(!Object.prototype.hasOwnProperty.call(p,g))throw new rr(51,`Couldn't find a plugin named "${g}" on the remote registry. Note that only the plugins referenced on our website (https://github.com/yarnpkg/berry/blob/master/plugins.yml) can be built and imported from sources.`);let E=g;await E_(this,{configuration:r,report:n,target:o}),await I_(E,this,{project:c,report:n,target:o})})).exitCode()}};wh.paths=[["plugin","import","from","sources"]],wh.usage=dg.Command.Usage({category:"Plugin-related commands",description:"build a plugin from sources",details:` - This command clones the Yarn repository into a temporary folder, builds the specified contrib plugin and updates the configuration to reference it in further CLI invocations. - - The plugins can be referenced by their short name if sourced from the official Yarn repository. - `,examples:[['Build and activate the "@yarnpkg/plugin-exec" plugin',"$0 plugin import from sources @yarnpkg/plugin-exec"],['Build and activate the "@yarnpkg/plugin-exec" plugin (shorthand)',"$0 plugin import from sources exec"]]});async function I_(t,{context:e,noMinify:r},{project:o,report:a,target:n}){let c=t.replace(/@yarnpkg\//,""),{configuration:f}=o;a.reportSeparator(),a.reportInfo(0,`Building a fresh ${c}`),a.reportSeparator(),await x1(U0t({pluginName:c,noMinify:r},n),{configuration:f,context:e,target:n}),a.reportSeparator();let g=ee.resolve(n,`packages/${c}/bundles/${t}.js`),p=await ge.readFilePromise(g);await w_(t,p,{project:o,report:a})}$e();Ft();var bE=be(Vt()),Bh=class extends gt{constructor(){super(...arguments);this.name=bE.Option.String()}async execute(){let r=await rt.find(this.context.cwd,this.context.plugins),{project:o}=await xt.find(r,this.context.cwd);return(await St.start({configuration:r,stdout:this.context.stdout},async n=>{let c=this.name,f=Y.parseIdent(c);if(!r.plugins.has(c))throw new bE.UsageError(`${Y.prettyIdent(r,f)} isn't referenced by the current configuration`);let g=`.yarn/plugins/${c}.cjs`,p=ee.resolve(o.cwd,g);ge.existsSync(p)&&(n.reportInfo(0,`Removing ${Ne.pretty(r,g,Ne.Type.PATH)}...`),await ge.removePromise(p)),n.reportInfo(0,"Updating the configuration..."),await rt.updateConfiguration(o.cwd,E=>{if(!Array.isArray(E.plugins))return E;let B=E.plugins.filter(Q=>Q.path!==g);return E.plugins.length===B.length?E:{...E,plugins:B}})})).exitCode()}};Bh.paths=[["plugin","remove"]],Bh.usage=bE.Command.Usage({category:"Plugin-related commands",description:"remove a plugin",details:` - This command deletes the specified plugin from the .yarn/plugins folder and removes it from the configuration. - - **Note:** The plugins have to be referenced by their name property, which can be obtained using the \`yarn plugin runtime\` command. Shorthands are not allowed. - `,examples:[["Remove a plugin imported from the Yarn repository","$0 plugin remove @yarnpkg/plugin-typescript"],["Remove a plugin imported from a local file","$0 plugin remove my-local-plugin"]]});$e();var BP=be(Vt()),Qh=class extends gt{constructor(){super(...arguments);this.json=BP.Option.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}async execute(){let r=await rt.find(this.context.cwd,this.context.plugins);return(await St.start({configuration:r,json:this.json,stdout:this.context.stdout},async a=>{for(let n of r.plugins.keys()){let c=this.context.plugins.plugins.has(n),f=n;c&&(f+=" [builtin]"),a.reportJson({name:n,builtin:c}),a.reportInfo(null,`${f}`)}})).exitCode()}};Qh.paths=[["plugin","runtime"]],Qh.usage=BP.Command.Usage({category:"Plugin-related commands",description:"list the active plugins",details:` - This command prints the currently active plugins. Will be displayed both builtin plugins and external plugins. - `,examples:[["List the currently active plugins","$0 plugin runtime"]]});$e();$e();var QP=be(Vt()),vh=class extends gt{constructor(){super(...arguments);this.idents=QP.Option.Rest()}async execute(){let r=await rt.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await xt.find(r,this.context.cwd),n=await $r.find(r);if(!a)throw new lr(o.cwd,this.context.cwd);let c=new Set;for(let g of this.idents)c.add(Y.parseIdent(g).identHash);if(await o.restoreInstallState({restoreResolutions:!1}),await o.resolveEverything({cache:n,report:new Wi}),c.size>0)for(let g of o.storedPackages.values())c.has(g.identHash)&&o.storedBuildState.delete(g.locatorHash);else o.storedBuildState.clear();return(await St.start({configuration:r,stdout:this.context.stdout,includeLogs:!this.context.quiet},async g=>{await o.install({cache:n,report:g})})).exitCode()}};vh.paths=[["rebuild"]],vh.usage=QP.Command.Usage({description:"rebuild the project's native packages",details:` - This command will automatically cause Yarn to forget about previous compilations of the given packages and to run them again. - - Note that while Yarn forgets the compilation, the previous artifacts aren't erased from the filesystem and may affect the next builds (in good or bad). To avoid this, you may remove the .yarn/unplugged folder, or any other relevant location where packages might have been stored (Yarn may offer a way to do that automatically in the future). - - By default all packages will be rebuilt, but you can filter the list by specifying the names of the packages you want to clear from memory. - `,examples:[["Rebuild all packages","$0 rebuild"],["Rebuild fsevents only","$0 rebuild fsevents"]]});$e();$e();$e();var Sh=be(Vt()),B_=be(pa()),Ame=be(wA());var Dh=class extends gt{constructor(){super(...arguments);this.all=Sh.Option.Boolean("-A,--all",!1,{description:"Apply the operation to all workspaces from the current project"});this.mode=Sh.Option.String("--mode",{description:"Change what artifacts installs generate",validator:Ame.isEnum(NA)});this.patterns=Sh.Option.Rest()}async execute(){let r=await rt.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await xt.find(r,this.context.cwd),n=await $r.find(r);if(!a)throw new lr(o.cwd,this.context.cwd);await o.restoreInstallState({restoreResolutions:!1});let c=this.all?o.workspaces:[a],f=["dependencies","devDependencies","peerDependencies"],g=[],p=!1,E=[];for(let C of this.patterns){let N=!1,U=Y.parseIdent(C);for(let H of c){let X=[...H.manifest.peerDependenciesMeta.keys()];for(let ie of(0,B_.default)(X,C))H.manifest.peerDependenciesMeta.delete(ie),p=!0,N=!0;for(let ie of f){let fe=H.manifest.getForScope(ie),ye=[...fe.values()].map(Qe=>Y.stringifyIdent(Qe));for(let Qe of(0,B_.default)(ye,Y.stringifyIdent(U))){let{identHash:Pe}=Y.parseIdent(Qe),pe=fe.get(Pe);if(typeof pe>"u")throw new Error("Assertion failed: Expected the descriptor to be registered");H.manifest[ie].delete(Pe),E.push([H,ie,pe]),p=!0,N=!0}}}N||g.push(C)}let B=g.length>1?"Patterns":"Pattern",Q=g.length>1?"don't":"doesn't",x=this.all?"any":"this";if(g.length>0)throw new Sh.UsageError(`${B} ${Ne.prettyList(r,g,Ne.Type.CODE)} ${Q} match any packages referenced by ${x} workspace`);return p?(await r.triggerMultipleHooks(N=>N.afterWorkspaceDependencyRemoval,E),(await St.start({configuration:r,stdout:this.context.stdout},async N=>{await o.install({cache:n,report:N,mode:this.mode})})).exitCode()):0}};Dh.paths=[["remove"]],Dh.usage=Sh.Command.Usage({description:"remove dependencies from the project",details:` - This command will remove the packages matching the specified patterns from the current workspace. - - If the \`--mode=\` option is set, Yarn will change which artifacts are generated. The modes currently supported are: - - - \`skip-build\` will not run the build scripts at all. Note that this is different from setting \`enableScripts\` to false because the later will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run. - - - \`update-lockfile\` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost. - - This command accepts glob patterns as arguments (if valid Idents and supported by [micromatch](https://github.com/micromatch/micromatch)). Make sure to escape the patterns, to prevent your own shell from trying to expand them. - `,examples:[["Remove a dependency from the current project","$0 remove lodash"],["Remove a dependency from all workspaces at once","$0 remove lodash --all"],["Remove all dependencies starting with `eslint-`","$0 remove 'eslint-*'"],["Remove all dependencies with the `@babel` scope","$0 remove '@babel/*'"],["Remove all dependencies matching `react-dom` or `react-helmet`","$0 remove 'react-{dom,helmet}'"]]});$e();$e();var lme=Ie("util"),Dm=class extends gt{async execute(){let e=await rt.find(this.context.cwd,this.context.plugins),{project:r,workspace:o}=await xt.find(e,this.context.cwd);if(!o)throw new lr(r.cwd,this.context.cwd);return(await St.start({configuration:e,stdout:this.context.stdout},async n=>{let c=o.manifest.scripts,f=Ze.sortMap(c.keys(),E=>E),g={breakLength:1/0,colors:e.get("enableColors"),maxArrayLength:2},p=f.reduce((E,B)=>Math.max(E,B.length),0);for(let[E,B]of c.entries())n.reportInfo(null,`${E.padEnd(p," ")} ${(0,lme.inspect)(B,g)}`)})).exitCode()}};Dm.paths=[["run"]];$e();$e();var yo=be(Vt()),kh=class extends gt{constructor(){super(...arguments);this.inspect=yo.Option.String("--inspect",!1,{tolerateBoolean:!0,description:"Forwarded to the underlying Node process when executing a binary"});this.inspectBrk=yo.Option.String("--inspect-brk",!1,{tolerateBoolean:!0,description:"Forwarded to the underlying Node process when executing a binary"});this.topLevel=yo.Option.Boolean("-T,--top-level",!1,{description:"Check the root workspace for scripts and/or binaries instead of the current one"});this.binariesOnly=yo.Option.Boolean("-B,--binaries-only",!1,{description:"Ignore any user defined scripts and only check for binaries"});this.require=yo.Option.String("--require",{description:"Forwarded to the underlying Node process when executing a binary"});this.silent=yo.Option.Boolean("--silent",{hidden:!0});this.scriptName=yo.Option.String();this.args=yo.Option.Proxy()}async execute(){let r=await rt.find(this.context.cwd,this.context.plugins),{project:o,workspace:a,locator:n}=await xt.find(r,this.context.cwd);await o.restoreInstallState();let c=this.topLevel?o.topLevelWorkspace.anchoredLocator:n;if(!this.binariesOnly&&await En.hasPackageScript(c,this.scriptName,{project:o}))return await En.executePackageScript(c,this.scriptName,this.args,{project:o,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr});let f=await En.getPackageAccessibleBinaries(c,{project:o});if(f.get(this.scriptName)){let p=[];return this.inspect&&(typeof this.inspect=="string"?p.push(`--inspect=${this.inspect}`):p.push("--inspect")),this.inspectBrk&&(typeof this.inspectBrk=="string"?p.push(`--inspect-brk=${this.inspectBrk}`):p.push("--inspect-brk")),this.require&&p.push(`--require=${this.require}`),await En.executePackageAccessibleBinary(c,this.scriptName,this.args,{cwd:this.context.cwd,project:o,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr,nodeArgs:p,packageAccessibleBinaries:f})}if(!this.topLevel&&!this.binariesOnly&&a&&this.scriptName.includes(":")){let E=(await Promise.all(o.workspaces.map(async B=>B.manifest.scripts.has(this.scriptName)?B:null))).filter(B=>B!==null);if(E.length===1)return await En.executeWorkspaceScript(E[0],this.scriptName,this.args,{stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr})}if(this.topLevel)throw this.scriptName==="node-gyp"?new yo.UsageError(`Couldn't find a script name "${this.scriptName}" in the top-level (used by ${Y.prettyLocator(r,n)}). This typically happens because some package depends on "node-gyp" to build itself, but didn't list it in their dependencies. To fix that, please run "yarn add node-gyp" into your top-level workspace. You also can open an issue on the repository of the specified package to suggest them to use an optional peer dependency.`):new yo.UsageError(`Couldn't find a script name "${this.scriptName}" in the top-level (used by ${Y.prettyLocator(r,n)}).`);{if(this.scriptName==="global")throw new yo.UsageError("The 'yarn global' commands have been removed in 2.x - consider using 'yarn dlx' or a third-party plugin instead");let p=[this.scriptName].concat(this.args);for(let[E,B]of wE)for(let Q of B)if(p.length>=Q.length&&JSON.stringify(p.slice(0,Q.length))===JSON.stringify(Q))throw new yo.UsageError(`Couldn't find a script named "${this.scriptName}", but a matching command can be found in the ${E} plugin. You can install it with "yarn plugin import ${E}".`);throw new yo.UsageError(`Couldn't find a script named "${this.scriptName}".`)}}};kh.paths=[["run"]],kh.usage=yo.Command.Usage({description:"run a script defined in the package.json",details:` - This command will run a tool. The exact tool that will be executed will depend on the current state of your workspace: - - - If the \`scripts\` field from your local package.json contains a matching script name, its definition will get executed. - - - Otherwise, if one of the local workspace's dependencies exposes a binary with a matching name, this binary will get executed. - - - Otherwise, if the specified name contains a colon character and if one of the workspaces in the project contains exactly one script with a matching name, then this script will get executed. - - Whatever happens, the cwd of the spawned process will be the workspace that declares the script (which makes it possible to call commands cross-workspaces using the third syntax). - `,examples:[["Run the tests from the local workspace","$0 run test"],['Same thing, but without the "run" keyword',"$0 test"],["Inspect Webpack while running","$0 run --inspect-brk webpack"]]});$e();$e();var FE=be(Vt()),xh=class extends gt{constructor(){super(...arguments);this.save=FE.Option.Boolean("-s,--save",!1,{description:"Persist the resolution inside the top-level manifest"});this.descriptor=FE.Option.String();this.resolution=FE.Option.String()}async execute(){let r=await rt.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await xt.find(r,this.context.cwd),n=await $r.find(r);if(await o.restoreInstallState({restoreResolutions:!1}),!a)throw new lr(o.cwd,this.context.cwd);let c=Y.parseDescriptor(this.descriptor,!0),f=Y.makeDescriptor(c,this.resolution);return o.storedDescriptors.set(c.descriptorHash,c),o.storedDescriptors.set(f.descriptorHash,f),o.resolutionAliases.set(c.descriptorHash,f.descriptorHash),(await St.start({configuration:r,stdout:this.context.stdout},async p=>{await o.install({cache:n,report:p})})).exitCode()}};xh.paths=[["set","resolution"]],xh.usage=FE.Command.Usage({description:"enforce a package resolution",details:'\n This command updates the resolution table so that `descriptor` is resolved by `resolution`.\n\n Note that by default this command only affect the current resolution table - meaning that this "manual override" will disappear if you remove the lockfile, or if the package disappear from the table. If you wish to make the enforced resolution persist whatever happens, add the `-s,--save` flag which will also edit the `resolutions` field from your top-level manifest.\n\n Note that no attempt is made at validating that `resolution` is a valid resolution entry for `descriptor`.\n ',examples:[["Force all instances of lodash@npm:^1.2.3 to resolve to 1.5.0","$0 set resolution lodash@npm:^1.2.3 1.5.0"]]});$e();Ft();var bh=be(Vt()),cme=be(pa()),Ph=class extends gt{constructor(){super(...arguments);this.all=bh.Option.Boolean("-A,--all",!1,{description:"Unlink all workspaces belonging to the target project from the current one"});this.leadingArguments=bh.Option.Rest()}async execute(){let r=await rt.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await xt.find(r,this.context.cwd),n=await $r.find(r);if(!a)throw new lr(o.cwd,this.context.cwd);let c=o.topLevelWorkspace,f=new Set;if(this.leadingArguments.length===0&&this.all)for(let{pattern:p,reference:E}of c.manifest.resolutions)E.startsWith("portal:")&&f.add(p.descriptor.fullName);if(this.leadingArguments.length>0)for(let p of this.leadingArguments){let E=ee.resolve(this.context.cwd,me.toPortablePath(p));if(Ze.isPathLike(p)){let B=await rt.find(E,this.context.plugins,{useRc:!1,strict:!1}),{project:Q,workspace:x}=await xt.find(B,E);if(!x)throw new lr(Q.cwd,E);if(this.all){for(let C of Q.workspaces)C.manifest.name&&f.add(Y.stringifyIdent(C.locator));if(f.size===0)throw new bh.UsageError("No workspace found to be unlinked in the target project")}else{if(!x.manifest.name)throw new bh.UsageError("The target workspace doesn't have a name and thus cannot be unlinked");f.add(Y.stringifyIdent(x.locator))}}else{let B=[...c.manifest.resolutions.map(({pattern:Q})=>Q.descriptor.fullName)];for(let Q of(0,cme.default)(B,p))f.add(Q)}}return c.manifest.resolutions=c.manifest.resolutions.filter(({pattern:p})=>!f.has(p.descriptor.fullName)),(await St.start({configuration:r,stdout:this.context.stdout},async p=>{await o.install({cache:n,report:p})})).exitCode()}};Ph.paths=[["unlink"]],Ph.usage=bh.Command.Usage({description:"disconnect the local project from another one",details:` - This command will remove any resolutions in the project-level manifest that would have been added via a yarn link with similar arguments. - `,examples:[["Unregister a remote workspace in the current project","$0 unlink ~/ts-loader"],["Unregister all workspaces from a remote project in the current project","$0 unlink ~/jest --all"],["Unregister all previously linked workspaces","$0 unlink --all"],["Unregister all workspaces matching a glob","$0 unlink '@babel/*' 'pkg-{a,b}'"]]});$e();$e();$e();var Ea=be(Vt()),ume=be(C1()),Q_=be(pa()),RE=be(wA());var mg=class extends gt{constructor(){super(...arguments);this.interactive=Ea.Option.Boolean("-i,--interactive",{description:"Offer various choices, depending on the detected upgrade paths"});this.fixed=Ea.Option.Boolean("-F,--fixed",!1,{description:"Store dependency tags as-is instead of resolving them"});this.exact=Ea.Option.Boolean("-E,--exact",!1,{description:"Don't use any semver modifier on the resolved range"});this.tilde=Ea.Option.Boolean("-T,--tilde",!1,{description:"Use the `~` semver modifier on the resolved range"});this.caret=Ea.Option.Boolean("-C,--caret",!1,{description:"Use the `^` semver modifier on the resolved range"});this.recursive=Ea.Option.Boolean("-R,--recursive",!1,{description:"Resolve again ALL resolutions for those packages"});this.mode=Ea.Option.String("--mode",{description:"Change what artifacts installs generate",validator:RE.isEnum(NA)});this.patterns=Ea.Option.Rest()}async execute(){return this.recursive?await this.executeUpRecursive():await this.executeUpClassic()}async executeUpRecursive(){let r=await rt.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await xt.find(r,this.context.cwd),n=await $r.find(r);if(!a)throw new lr(o.cwd,this.context.cwd);await o.restoreInstallState({restoreResolutions:!1});let c=[...o.storedDescriptors.values()],f=c.map(B=>Y.stringifyIdent(B)),g=new Set;for(let B of this.patterns){if(Y.parseDescriptor(B).range!=="unknown")throw new Ea.UsageError("Ranges aren't allowed when using --recursive");for(let Q of(0,Q_.default)(f,B)){let x=Y.parseIdent(Q);g.add(x.identHash)}}let p=c.filter(B=>g.has(B.identHash));for(let B of p)o.storedDescriptors.delete(B.descriptorHash),o.storedResolutions.delete(B.descriptorHash);return(await St.start({configuration:r,stdout:this.context.stdout},async B=>{await o.install({cache:n,report:B})})).exitCode()}async executeUpClassic(){let r=await rt.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await xt.find(r,this.context.cwd),n=await $r.find(r);if(!a)throw new lr(o.cwd,this.context.cwd);await o.restoreInstallState({restoreResolutions:!1});let c=this.fixed,f=this.interactive??r.get("preferInteractive"),g=I1(this,o),p=f?["keep","reuse","project","latest"]:["project","latest"],E=[],B=[];for(let H of this.patterns){let X=!1,ie=Y.parseDescriptor(H);for(let fe of o.workspaces)for(let ye of["dependencies","devDependencies"]){let Pe=[...fe.manifest.getForScope(ye).values()].map(pe=>Y.stringifyIdent(pe));for(let pe of(0,Q_.default)(Pe,Y.stringifyIdent(ie))){let Ee=Y.parseIdent(pe),ke=fe.manifest[ye].get(Ee.identHash);if(typeof ke>"u")throw new Error("Assertion failed: Expected the descriptor to be registered");let h=Y.makeDescriptor(Ee,ie.range);E.push(Promise.resolve().then(async()=>[fe,ye,ke,await w1(h,{project:o,workspace:fe,cache:n,target:ye,fixed:c,modifier:g,strategies:p})])),X=!0}}X||B.push(H)}if(B.length>1)throw new Ea.UsageError(`Patterns ${Ne.prettyList(r,B,Ne.Type.CODE)} don't match any packages referenced by any workspace`);if(B.length>0)throw new Ea.UsageError(`Pattern ${Ne.prettyList(r,B,Ne.Type.CODE)} doesn't match any packages referenced by any workspace`);let Q=await Promise.all(E),x=await Tu.start({configuration:r,stdout:this.context.stdout,suggestInstall:!1},async H=>{for(let[,,X,{suggestions:ie,rejections:fe}]of Q){let ye=ie.filter(Qe=>Qe.descriptor!==null);if(ye.length===0){let[Qe]=fe;if(typeof Qe>"u")throw new Error("Assertion failed: Expected an error to have been set");let Pe=this.cli.error(Qe);o.configuration.get("enableNetwork")?H.reportError(27,`${Y.prettyDescriptor(r,X)} can't be resolved to a satisfying range - -${Pe}`):H.reportError(27,`${Y.prettyDescriptor(r,X)} can't be resolved to a satisfying range (note: network resolution has been disabled) - -${Pe}`)}else ye.length>1&&!f&&H.reportError(27,`${Y.prettyDescriptor(r,X)} has multiple possible upgrade strategies; use -i to disambiguate manually`)}});if(x.hasErrors())return x.exitCode();let C=!1,N=[];for(let[H,X,,{suggestions:ie}]of Q){let fe,ye=ie.filter(Ee=>Ee.descriptor!==null),Qe=ye[0].descriptor,Pe=ye.every(Ee=>Y.areDescriptorsEqual(Ee.descriptor,Qe));ye.length===1||Pe?fe=Qe:(C=!0,{answer:fe}=await(0,ume.prompt)({type:"select",name:"answer",message:`Which range do you want to use in ${Y.prettyWorkspace(r,H)} \u276F ${X}?`,choices:ie.map(({descriptor:Ee,name:ke,reason:h})=>Ee?{name:ke,hint:h,descriptor:Ee}:{name:ke,hint:h,disabled:!0}),onCancel:()=>process.exit(130),result(Ee){return this.find(Ee,"descriptor")},stdin:this.context.stdin,stdout:this.context.stdout}));let pe=H.manifest[X].get(fe.identHash);if(typeof pe>"u")throw new Error("Assertion failed: This descriptor should have a matching entry");if(pe.descriptorHash!==fe.descriptorHash)H.manifest[X].set(fe.identHash,fe),N.push([H,X,pe,fe]);else{let Ee=r.makeResolver(),ke={project:o,resolver:Ee},h=r.normalizeDependency(pe),Ke=Ee.bindDescriptor(h,H.anchoredLocator,ke);o.forgetResolution(Ke)}}return await r.triggerMultipleHooks(H=>H.afterWorkspaceDependencyReplacement,N),C&&this.context.stdout.write(` -`),(await St.start({configuration:r,stdout:this.context.stdout},async H=>{await o.install({cache:n,report:H,mode:this.mode})})).exitCode()}};mg.paths=[["up"]],mg.usage=Ea.Command.Usage({description:"upgrade dependencies across the project",details:"\n This command upgrades the packages matching the list of specified patterns to their latest available version across the whole project (regardless of whether they're part of `dependencies` or `devDependencies` - `peerDependencies` won't be affected). This is a project-wide command: all workspaces will be upgraded in the process.\n\n If `-R,--recursive` is set the command will change behavior and no other switch will be allowed. When operating under this mode `yarn up` will force all ranges matching the selected packages to be resolved again (often to the highest available versions) before being stored in the lockfile. It however won't touch your manifests anymore, so depending on your needs you might want to run both `yarn up` and `yarn up -R` to cover all bases.\n\n If `-i,--interactive` is set (or if the `preferInteractive` settings is toggled on) the command will offer various choices, depending on the detected upgrade paths. Some upgrades require this flag in order to resolve ambiguities.\n\n The, `-C,--caret`, `-E,--exact` and `-T,--tilde` options have the same meaning as in the `add` command (they change the modifier used when the range is missing or a tag, and are ignored when the range is explicitly set).\n\n If the `--mode=` option is set, Yarn will change which artifacts are generated. The modes currently supported are:\n\n - `skip-build` will not run the build scripts at all. Note that this is different from setting `enableScripts` to false because the later will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run.\n\n - `update-lockfile` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost.\n\n Generally you can see `yarn up` as a counterpart to what was `yarn upgrade --latest` in Yarn 1 (ie it ignores the ranges previously listed in your manifests), but unlike `yarn upgrade` which only upgraded dependencies in the current workspace, `yarn up` will upgrade all workspaces at the same time.\n\n This command accepts glob patterns as arguments (if valid Descriptors and supported by [micromatch](https://github.com/micromatch/micromatch)). Make sure to escape the patterns, to prevent your own shell from trying to expand them.\n\n **Note:** The ranges have to be static, only the package scopes and names can contain glob patterns.\n ",examples:[["Upgrade all instances of lodash to the latest release","$0 up lodash"],["Upgrade all instances of lodash to the latest release, but ask confirmation for each","$0 up lodash -i"],["Upgrade all instances of lodash to 1.2.3","$0 up lodash@1.2.3"],["Upgrade all instances of packages with the `@babel` scope to the latest release","$0 up '@babel/*'"],["Upgrade all instances of packages containing the word `jest` to the latest release","$0 up '*jest*'"],["Upgrade all instances of packages with the `@babel` scope to 7.0.0","$0 up '@babel/*@7.0.0'"]]}),mg.schema=[RE.hasKeyRelationship("recursive",RE.KeyRelationship.Forbids,["interactive","exact","tilde","caret"],{ignore:[void 0,!1]})];$e();$e();$e();var Sm=be(Vt()),Fh=class extends gt{constructor(){super(...arguments);this.recursive=Sm.Option.Boolean("-R,--recursive",!1,{description:"List, for each workspace, what are all the paths that lead to the dependency"});this.json=Sm.Option.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.peers=Sm.Option.Boolean("--peers",!1,{description:"Also print the peer dependencies that match the specified name"});this.package=Sm.Option.String()}async execute(){let r=await rt.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await xt.find(r,this.context.cwd);if(!a)throw new lr(o.cwd,this.context.cwd);await o.restoreInstallState();let n=Y.parseIdent(this.package).identHash,c=this.recursive?_0t(o,n,{configuration:r,peers:this.peers}):K0t(o,n,{configuration:r,peers:this.peers});TA.emitTree(c,{configuration:r,stdout:this.context.stdout,json:this.json,separators:1})}};Fh.paths=[["why"]],Fh.usage=Sm.Command.Usage({description:"display the reason why a package is needed",details:` - This command prints the exact reasons why a package appears in the dependency tree. - - If \`-R,--recursive\` is set, the listing will go in depth and will list, for each workspaces, what are all the paths that lead to the dependency. Note that the display is somewhat optimized in that it will not print the package listing twice for a single package, so if you see a leaf named "Foo" when looking for "Bar", it means that "Foo" already got printed higher in the tree. - `,examples:[["Explain why lodash is used in your project","$0 why lodash"]]});function K0t(t,e,{configuration:r,peers:o}){let a=Ze.sortMap(t.storedPackages.values(),f=>Y.stringifyLocator(f)),n={},c={children:n};for(let f of a){let g={};for(let E of f.dependencies.values()){if(!o&&f.peerDependencies.has(E.identHash))continue;let B=t.storedResolutions.get(E.descriptorHash);if(!B)throw new Error("Assertion failed: The resolution should have been registered");let Q=t.storedPackages.get(B);if(!Q)throw new Error("Assertion failed: The package should have been registered");if(Q.identHash!==e)continue;{let C=Y.stringifyLocator(f);n[C]={value:[f,Ne.Type.LOCATOR],children:g}}let x=Y.stringifyLocator(Q);g[x]={value:[{descriptor:E,locator:Q},Ne.Type.DEPENDENT]}}}return c}function _0t(t,e,{configuration:r,peers:o}){let a=Ze.sortMap(t.workspaces,Q=>Y.stringifyLocator(Q.anchoredLocator)),n=new Set,c=new Set,f=Q=>{if(n.has(Q.locatorHash))return c.has(Q.locatorHash);if(n.add(Q.locatorHash),Q.identHash===e)return c.add(Q.locatorHash),!0;let x=!1;Q.identHash===e&&(x=!0);for(let C of Q.dependencies.values()){if(!o&&Q.peerDependencies.has(C.identHash))continue;let N=t.storedResolutions.get(C.descriptorHash);if(!N)throw new Error("Assertion failed: The resolution should have been registered");let U=t.storedPackages.get(N);if(!U)throw new Error("Assertion failed: The package should have been registered");f(U)&&(x=!0)}return x&&c.add(Q.locatorHash),x};for(let Q of a)f(Q.anchoredPackage);let g=new Set,p={},E={children:p},B=(Q,x,C)=>{if(!c.has(Q.locatorHash))return;let N=C!==null?Ne.tuple(Ne.Type.DEPENDENT,{locator:Q,descriptor:C}):Ne.tuple(Ne.Type.LOCATOR,Q),U={},H={value:N,children:U},X=Y.stringifyLocator(Q);if(x[X]=H,!g.has(Q.locatorHash)&&(g.add(Q.locatorHash),!(C!==null&&t.tryWorkspaceByLocator(Q))))for(let ie of Q.dependencies.values()){if(!o&&Q.peerDependencies.has(ie.identHash))continue;let fe=t.storedResolutions.get(ie.descriptorHash);if(!fe)throw new Error("Assertion failed: The resolution should have been registered");let ye=t.storedPackages.get(fe);if(!ye)throw new Error("Assertion failed: The package should have been registered");B(ye,U,ie)}};for(let Q of a)B(Q.anchoredPackage,p,null);return E}$e();var T_={};tr(T_,{GitFetcher:()=>F1,GitResolver:()=>R1,default:()=>Adt,gitUtils:()=>Ia});$e();Ft();var Ia={};tr(Ia,{TreeishProtocols:()=>b1,clone:()=>R_,fetchBase:()=>Rme,fetchChangedFiles:()=>Tme,fetchChangedWorkspaces:()=>odt,fetchRoot:()=>Fme,isGitUrl:()=>NE,lsRemote:()=>bme,normalizeLocator:()=>P_,normalizeRepoUrl:()=>vP,resolveUrl:()=>F_,splitRepoUrl:()=>Rh,validateRepoUrl:()=>b_});$e();Ft();var P1=be(Vt()),Sme=be(Dme()),kme=be(t3()),TE=be(Ie("querystring")),k_=be(wi()),xme=be(Ie("url"));function Pme(){return{...process.env,GIT_SSH_COMMAND:process.env.GIT_SSH_COMMAND||`${process.env.GIT_SSH||"ssh"} -o BatchMode=yes`}}var sdt=[/^ssh:/,/^git(?:\+[^:]+)?:/,/^(?:git\+)?https?:[^#]+\/[^#]+(?:\.git)(?:#.*)?$/,/^git@[^#]+\/[^#]+\.git(?:#.*)?$/,/^(?:github:|https:\/\/github\.com\/)?(?!\.{1,2}\/)([a-zA-Z._0-9-]+)\/(?!\.{1,2}(?:#|$))([a-zA-Z._0-9-]+?)(?:\.git)?(?:#.*)?$/,/^https:\/\/github\.com\/(?!\.{1,2}\/)([a-zA-Z0-9._-]+)\/(?!\.{1,2}(?:#|$))([a-zA-Z0-9._-]+?)\/tarball\/(.+)?$/],b1=(a=>(a.Commit="commit",a.Head="head",a.Tag="tag",a.Semver="semver",a))(b1||{});function NE(t){return t?sdt.some(e=>!!t.match(e)):!1}function Rh(t){t=vP(t);let e=t.indexOf("#");if(e===-1)return{repo:t,treeish:{protocol:"head",request:"HEAD"},extra:{}};let r=t.slice(0,e),o=t.slice(e+1);if(o.match(/^[a-z]+=/)){let a=TE.default.parse(o);for(let[g,p]of Object.entries(a))if(typeof p!="string")throw new Error(`Assertion failed: The ${g} parameter must be a literal string`);let n=Object.values(b1).find(g=>Object.prototype.hasOwnProperty.call(a,g)),[c,f]=typeof n<"u"?[n,a[n]]:["head","HEAD"];for(let g of Object.values(b1))delete a[g];return{repo:r,treeish:{protocol:c,request:f},extra:a}}else{let a=o.indexOf(":"),[n,c]=a===-1?[null,o]:[o.slice(0,a),o.slice(a+1)];return{repo:r,treeish:{protocol:n,request:c},extra:{}}}}function vP(t,{git:e=!1}={}){var r;if(t=t.replace(/^git\+https:/,"https:"),t=t.replace(/^(?:github:|https:\/\/github\.com\/)?(?!\.{1,2}\/)([a-zA-Z0-9._-]+)\/(?!\.{1,2}(?:#|$))([a-zA-Z0-9._-]+?)(?:\.git)?(#.*)?$/,"https://github.com/$1/$2.git$3"),t=t.replace(/^https:\/\/github\.com\/(?!\.{1,2}\/)([a-zA-Z0-9._-]+)\/(?!\.{1,2}(?:#|$))([a-zA-Z0-9._-]+?)\/tarball\/(.+)?$/,"https://github.com/$1/$2.git#$3"),e){t=t.replace(/^git\+([^:]+):/,"$1:");let o;try{o=xme.default.parse(t)}catch{o=null}o&&o.protocol==="ssh:"&&((r=o.path)==null?void 0:r.startsWith("/:"))&&(t=t.replace(/^ssh:\/\//,""))}return t}function P_(t){return Y.makeLocator(t,vP(t.reference))}function b_(t,{configuration:e}){let r=vP(t,{git:!0});if(!Hn.getNetworkSettings(`https://${(0,Sme.default)(r).resource}`,{configuration:e}).enableNetwork)throw new rr(80,`Request to '${r}' has been blocked because of your configuration settings`);return r}async function bme(t,e){let r=b_(t,{configuration:e}),o=await x_("listing refs",["ls-remote",r],{cwd:e.startingCwd,env:Pme()},{configuration:e,normalizedRepoUrl:r}),a=new Map,n=/^([a-f0-9]{40})\t([^\n]+)/gm,c;for(;(c=n.exec(o.stdout))!==null;)a.set(c[2],c[1]);return a}async function F_(t,e){let{repo:r,treeish:{protocol:o,request:a},extra:n}=Rh(t),c=await bme(r,e),f=(p,E)=>{switch(p){case"commit":{if(!E.match(/^[a-f0-9]{40}$/))throw new Error("Invalid commit hash");return TE.default.stringify({...n,commit:E})}case"head":{let B=c.get(E==="HEAD"?E:`refs/heads/${E}`);if(typeof B>"u")throw new Error(`Unknown head ("${E}")`);return TE.default.stringify({...n,commit:B})}case"tag":{let B=c.get(`refs/tags/${E}`);if(typeof B>"u")throw new Error(`Unknown tag ("${E}")`);return TE.default.stringify({...n,commit:B})}case"semver":{let B=Zr.validRange(E);if(!B)throw new Error(`Invalid range ("${E}")`);let Q=new Map([...c.entries()].filter(([C])=>C.startsWith("refs/tags/")).map(([C,N])=>[k_.default.parse(C.slice(10)),N]).filter(C=>C[0]!==null)),x=k_.default.maxSatisfying([...Q.keys()],B);if(x===null)throw new Error(`No matching range ("${E}")`);return TE.default.stringify({...n,commit:Q.get(x)})}case null:{let B;if((B=g("commit",E))!==null||(B=g("tag",E))!==null||(B=g("head",E))!==null)return B;throw E.match(/^[a-f0-9]+$/)?new Error(`Couldn't resolve "${E}" as either a commit, a tag, or a head - if a commit, use the 40-characters commit hash`):new Error(`Couldn't resolve "${E}" as either a commit, a tag, or a head`)}default:throw new Error(`Invalid Git resolution protocol ("${p}")`)}},g=(p,E)=>{try{return f(p,E)}catch{return null}};return`${r}#${f(o,a)}`}async function R_(t,e){return await e.getLimit("cloneConcurrency")(async()=>{let{repo:r,treeish:{protocol:o,request:a}}=Rh(t);if(o!=="commit")throw new Error("Invalid treeish protocol when cloning");let n=b_(r,{configuration:e}),c=await ge.mktempPromise(),f={cwd:c,env:Pme()};return await x_("cloning the repository",["clone","-c core.autocrlf=false",n,me.fromPortablePath(c)],f,{configuration:e,normalizedRepoUrl:n}),await x_("switching branch",["checkout",`${a}`],f,{configuration:e,normalizedRepoUrl:n}),c})}async function Fme(t){let e,r=t;do{if(e=r,await ge.existsPromise(ee.join(e,".git")))return e;r=ee.dirname(e)}while(r!==e);return null}async function Rme(t,{baseRefs:e}){if(e.length===0)throw new P1.UsageError("Can't run this command with zero base refs specified.");let r=[];for(let f of e){let{code:g}=await pn.execvp("git",["merge-base",f,"HEAD"],{cwd:t});g===0&&r.push(f)}if(r.length===0)throw new P1.UsageError(`No ancestor could be found between any of HEAD and ${e.join(", ")}`);let{stdout:o}=await pn.execvp("git",["merge-base","HEAD",...r],{cwd:t,strict:!0}),a=o.trim(),{stdout:n}=await pn.execvp("git",["show","--quiet","--pretty=format:%s",a],{cwd:t,strict:!0}),c=n.trim();return{hash:a,title:c}}async function Tme(t,{base:e,project:r}){let o=Ze.buildIgnorePattern(r.configuration.get("changesetIgnorePatterns")),{stdout:a}=await pn.execvp("git",["diff","--name-only",`${e}`],{cwd:t,strict:!0}),n=a.split(/\r\n|\r|\n/).filter(p=>p.length>0).map(p=>ee.resolve(t,me.toPortablePath(p))),{stdout:c}=await pn.execvp("git",["ls-files","--others","--exclude-standard"],{cwd:t,strict:!0}),f=c.split(/\r\n|\r|\n/).filter(p=>p.length>0).map(p=>ee.resolve(t,me.toPortablePath(p))),g=[...new Set([...n,...f].sort())];return o?g.filter(p=>!ee.relative(r.cwd,p).match(o)):g}async function odt({ref:t,project:e}){if(e.configuration.projectCwd===null)throw new P1.UsageError("This command can only be run from within a Yarn project");let r=[ee.resolve(e.cwd,e.configuration.get("cacheFolder")),ee.resolve(e.cwd,e.configuration.get("installStatePath")),ee.resolve(e.cwd,e.configuration.get("lockfileFilename")),ee.resolve(e.cwd,e.configuration.get("virtualFolder"))];await e.configuration.triggerHook(c=>c.populateYarnPaths,e,c=>{c!=null&&r.push(c)});let o=await Fme(e.configuration.projectCwd);if(o==null)throw new P1.UsageError("This command can only be run on Git repositories");let a=await Rme(o,{baseRefs:typeof t=="string"?[t]:e.configuration.get("changesetBaseRefs")}),n=await Tme(o,{base:a.hash,project:e});return new Set(Ze.mapAndFilter(n,c=>{let f=e.tryWorkspaceByFilePath(c);return f===null?Ze.mapAndFilter.skip:r.some(g=>c.startsWith(g))?Ze.mapAndFilter.skip:f}))}async function x_(t,e,r,{configuration:o,normalizedRepoUrl:a}){try{return await pn.execvp("git",e,{...r,strict:!0})}catch(n){if(!(n instanceof pn.ExecError))throw n;let c=n.reportExtra,f=n.stderr.toString();throw new rr(1,`Failed ${t}`,g=>{g.reportError(1,` ${Ne.prettyField(o,{label:"Repository URL",value:Ne.tuple(Ne.Type.URL,a)})}`);for(let p of f.matchAll(/^(.+?): (.*)$/gm)){let[,E,B]=p;E=E.toLowerCase();let Q=E==="error"?"Error":`${(0,kme.default)(E)} Error`;g.reportError(1,` ${Ne.prettyField(o,{label:Q,value:Ne.tuple(Ne.Type.NO_HINT,B)})}`)}c==null||c(g)})}}var F1=class{supports(e,r){return NE(e.reference)}getLocalPath(e,r){return null}async fetch(e,r){let o=r.checksums.get(e.locatorHash)||null,a=P_(e),n=new Map(r.checksums);n.set(a.locatorHash,o);let c={...r,checksums:n},f=await this.downloadHosted(a,c);if(f!==null)return f;let[g,p,E]=await r.cache.fetchPackageFromCache(e,o,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${Y.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the remote repository`),loader:()=>this.cloneFromRemote(a,c),...r.cacheOptions});return{packageFs:g,releaseFs:p,prefixPath:Y.getIdentVendorPath(e),checksum:E}}async downloadHosted(e,r){return r.project.configuration.reduceHook(o=>o.fetchHostedRepository,null,e,r)}async cloneFromRemote(e,r){let o=await R_(e.reference,r.project.configuration),a=Rh(e.reference),n=ee.join(o,"package.tgz");await En.prepareExternalProject(o,n,{configuration:r.project.configuration,report:r.report,workspace:a.extra.workspace,locator:e});let c=await ge.readFilePromise(n);return await Ze.releaseAfterUseAsync(async()=>await ys.convertToZip(c,{compressionLevel:r.project.configuration.get("compressionLevel"),prefixPath:Y.getIdentVendorPath(e),stripComponents:1}))}};$e();$e();var R1=class{supportsDescriptor(e,r){return NE(e.range)}supportsLocator(e,r){return NE(e.reference)}shouldPersistResolution(e,r){return!0}bindDescriptor(e,r,o){return e}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,o){let a=await F_(e.range,o.project.configuration);return[Y.makeLocator(e,a)]}async getSatisfying(e,r,o,a){let n=Rh(e.range);return{locators:o.filter(f=>{if(f.identHash!==e.identHash)return!1;let g=Rh(f.reference);return!(n.repo!==g.repo||n.treeish.protocol==="commit"&&n.treeish.request!==g.treeish.request)}),sorted:!1}}async resolve(e,r){if(!r.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let o=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),a=await Ze.releaseAfterUseAsync(async()=>await Gt.find(o.prefixPath,{baseFs:o.packageFs}),o.releaseFs);return{...e,version:a.version||"0.0.0",languageName:a.languageName||r.project.configuration.get("defaultLanguageName"),linkType:"HARD",conditions:a.getConditions(),dependencies:r.project.configuration.normalizeDependencyMap(a.dependencies),peerDependencies:a.peerDependencies,dependenciesMeta:a.dependenciesMeta,peerDependenciesMeta:a.peerDependenciesMeta,bin:a.bin}}};var adt={configuration:{changesetBaseRefs:{description:"The base git refs that the current HEAD is compared against when detecting changes. Supports git branches, tags, and commits.",type:"STRING",isArray:!0,isNullable:!1,default:["master","origin/master","upstream/master","main","origin/main","upstream/main"]},changesetIgnorePatterns:{description:"Array of glob patterns; files matching them will be ignored when fetching the changed files",type:"STRING",default:[],isArray:!0},cloneConcurrency:{description:"Maximal number of concurrent clones",type:"NUMBER",default:2}},fetchers:[F1],resolvers:[R1]};var Adt=adt;var Th=be(Vt()),Nh=class extends gt{constructor(){super(...arguments);this.since=Th.Option.String("--since",{description:"Only include workspaces that have been changed since the specified ref.",tolerateBoolean:!0});this.recursive=Th.Option.Boolean("-R,--recursive",!1,{description:"Find packages via dependencies/devDependencies instead of using the workspaces field"});this.noPrivate=Th.Option.Boolean("--no-private",{description:"Exclude workspaces that have the private field set to true"});this.verbose=Th.Option.Boolean("-v,--verbose",!1,{description:"Also return the cross-dependencies between workspaces"});this.json=Th.Option.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}async execute(){let r=await rt.find(this.context.cwd,this.context.plugins),{project:o}=await xt.find(r,this.context.cwd);return(await St.start({configuration:r,json:this.json,stdout:this.context.stdout},async n=>{let c=this.since?await Ia.fetchChangedWorkspaces({ref:this.since,project:o}):o.workspaces,f=new Set(c);if(this.recursive)for(let g of[...c].map(p=>p.getRecursiveWorkspaceDependents()))for(let p of g)f.add(p);for(let g of f){let{manifest:p}=g;if(p.private&&this.noPrivate)continue;let E;if(this.verbose){let B=new Set,Q=new Set;for(let x of Gt.hardDependencies)for(let[C,N]of p.getForScope(x)){let U=o.tryWorkspaceByDescriptor(N);U===null?o.workspacesByIdent.has(C)&&Q.add(N):B.add(U)}E={workspaceDependencies:Array.from(B).map(x=>x.relativeCwd),mismatchedWorkspaceDependencies:Array.from(Q).map(x=>Y.stringifyDescriptor(x))}}n.reportInfo(null,`${g.relativeCwd}`),n.reportJson({location:g.relativeCwd,name:p.name?Y.stringifyIdent(p.name):null,...E})}})).exitCode()}};Nh.paths=[["workspaces","list"]],Nh.usage=Th.Command.Usage({category:"Workspace-related commands",description:"list all available workspaces",details:"\n This command will print the list of all workspaces in the project.\n\n - If `--since` is set, Yarn will only list workspaces that have been modified since the specified ref. By default Yarn will use the refs specified by the `changesetBaseRefs` configuration option.\n\n - If `-R,--recursive` is set, Yarn will find workspaces to run the command on by recursively evaluating `dependencies` and `devDependencies` fields, instead of looking at the `workspaces` fields.\n\n - If `--no-private` is set, Yarn will not list any workspaces that have the `private` field set to `true`.\n\n - If both the `-v,--verbose` and `--json` options are set, Yarn will also return the cross-dependencies between each workspaces (useful when you wish to automatically generate Buck / Bazel rules).\n "});$e();$e();var Lh=be(Vt()),Mh=class extends gt{constructor(){super(...arguments);this.workspaceName=Lh.Option.String();this.commandName=Lh.Option.String();this.args=Lh.Option.Proxy()}async execute(){let r=await rt.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await xt.find(r,this.context.cwd);if(!a)throw new lr(o.cwd,this.context.cwd);let n=o.workspaces,c=new Map(n.map(g=>[Y.stringifyIdent(g.locator),g])),f=c.get(this.workspaceName);if(f===void 0){let g=Array.from(c.keys()).sort();throw new Lh.UsageError(`Workspace '${this.workspaceName}' not found. Did you mean any of the following: - - ${g.join(` - - `)}?`)}return this.cli.run([this.commandName,...this.args],{cwd:f.cwd})}};Mh.paths=[["workspace"]],Mh.usage=Lh.Command.Usage({category:"Workspace-related commands",description:"run a command within the specified workspace",details:` - This command will run a given sub-command on a single workspace. - `,examples:[["Add a package to a single workspace","yarn workspace components add -D react"],["Run build script on a single workspace","yarn workspace components run build"]]});var ldt={configuration:{enableImmutableInstalls:{description:"If true (the default on CI), prevents the install command from modifying the lockfile",type:"BOOLEAN",default:Nme.isCI},defaultSemverRangePrefix:{description:"The default save prefix: '^', '~' or ''",type:"STRING",values:["^","~",""],default:"^"},preferReuse:{description:"If true, `yarn add` will attempt to reuse the most common dependency range in other workspaces.",type:"BOOLEAN",default:!1}},commands:[rh,nh,sh,oh,xh,Eh,gh,Nh,wm,Bm,kE,Qm,$p,eh,Ah,ch,uh,fh,ph,hh,dh,mh,Ph,yh,wh,Ih,Bh,Ch,Qh,vh,Dh,Dm,kh,mg,Fh,Mh]},cdt=ldt;var K_={};tr(K_,{default:()=>fdt});$e();var Tt={optional:!0},M_=[["@tailwindcss/aspect-ratio@<0.2.1",{peerDependencies:{tailwindcss:"^2.0.2"}}],["@tailwindcss/line-clamp@<0.2.1",{peerDependencies:{tailwindcss:"^2.0.2"}}],["@fullhuman/postcss-purgecss@3.1.3 || 3.1.3-alpha.0",{peerDependencies:{postcss:"^8.0.0"}}],["@samverschueren/stream-to-observable@<0.3.1",{peerDependenciesMeta:{rxjs:Tt,zenObservable:Tt}}],["any-observable@<0.5.1",{peerDependenciesMeta:{rxjs:Tt,zenObservable:Tt}}],["@pm2/agent@<1.0.4",{dependencies:{debug:"*"}}],["debug@<4.2.0",{peerDependenciesMeta:{["supports-color"]:Tt}}],["got@<11",{dependencies:{["@types/responselike"]:"^1.0.0",["@types/keyv"]:"^3.1.1"}}],["cacheable-lookup@<4.1.2",{dependencies:{["@types/keyv"]:"^3.1.1"}}],["http-link-dataloader@*",{peerDependencies:{graphql:"^0.13.1 || ^14.0.0"}}],["typescript-language-server@*",{dependencies:{["vscode-jsonrpc"]:"^5.0.1",["vscode-languageserver-protocol"]:"^3.15.0"}}],["postcss-syntax@*",{peerDependenciesMeta:{["postcss-html"]:Tt,["postcss-jsx"]:Tt,["postcss-less"]:Tt,["postcss-markdown"]:Tt,["postcss-scss"]:Tt}}],["jss-plugin-rule-value-function@<=10.1.1",{dependencies:{["tiny-warning"]:"^1.0.2"}}],["ink-select-input@<4.1.0",{peerDependencies:{react:"^16.8.2"}}],["license-webpack-plugin@<2.3.18",{peerDependenciesMeta:{webpack:Tt}}],["snowpack@>=3.3.0",{dependencies:{["node-gyp"]:"^7.1.0"}}],["promise-inflight@*",{peerDependenciesMeta:{bluebird:Tt}}],["reactcss@*",{peerDependencies:{react:"*"}}],["react-color@<=2.19.0",{peerDependencies:{react:"*"}}],["gatsby-plugin-i18n@*",{dependencies:{ramda:"^0.24.1"}}],["useragent@^2.0.0",{dependencies:{request:"^2.88.0",yamlparser:"0.0.x",semver:"5.5.x"}}],["@apollographql/apollo-tools@<=0.5.2",{peerDependencies:{graphql:"^14.2.1 || ^15.0.0"}}],["material-table@^2.0.0",{dependencies:{"@babel/runtime":"^7.11.2"}}],["@babel/parser@*",{dependencies:{"@babel/types":"^7.8.3"}}],["fork-ts-checker-webpack-plugin@<=6.3.4",{peerDependencies:{eslint:">= 6",typescript:">= 2.7",webpack:">= 4","vue-template-compiler":"*"},peerDependenciesMeta:{eslint:Tt,"vue-template-compiler":Tt}}],["rc-animate@<=3.1.1",{peerDependencies:{react:">=16.9.0","react-dom":">=16.9.0"}}],["react-bootstrap-table2-paginator@*",{dependencies:{classnames:"^2.2.6"}}],["react-draggable@<=4.4.3",{peerDependencies:{react:">= 16.3.0","react-dom":">= 16.3.0"}}],["apollo-upload-client@<14",{peerDependencies:{graphql:"14 - 15"}}],["react-instantsearch-core@<=6.7.0",{peerDependencies:{algoliasearch:">= 3.1 < 5"}}],["react-instantsearch-dom@<=6.7.0",{dependencies:{"react-fast-compare":"^3.0.0"}}],["ws@<7.2.1",{peerDependencies:{bufferutil:"^4.0.1","utf-8-validate":"^5.0.2"},peerDependenciesMeta:{bufferutil:Tt,"utf-8-validate":Tt}}],["react-portal@*",{peerDependencies:{"react-dom":"^15.0.0-0 || ^16.0.0-0 || ^17.0.0-0"}}],["react-scripts@<=4.0.1",{peerDependencies:{react:"*"}}],["testcafe@<=1.10.1",{dependencies:{"@babel/plugin-transform-for-of":"^7.12.1","@babel/runtime":"^7.12.5"}}],["testcafe-legacy-api@<=4.2.0",{dependencies:{"testcafe-hammerhead":"^17.0.1","read-file-relative":"^1.2.0"}}],["@google-cloud/firestore@<=4.9.3",{dependencies:{protobufjs:"^6.8.6"}}],["gatsby-source-apiserver@*",{dependencies:{["babel-polyfill"]:"^6.26.0"}}],["@webpack-cli/package-utils@<=1.0.1-alpha.4",{dependencies:{["cross-spawn"]:"^7.0.3"}}],["gatsby-remark-prismjs@<3.3.28",{dependencies:{lodash:"^4"}}],["gatsby-plugin-favicon@*",{peerDependencies:{webpack:"*"}}],["gatsby-plugin-sharp@<=4.6.0-next.3",{dependencies:{debug:"^4.3.1"}}],["gatsby-react-router-scroll@<=5.6.0-next.0",{dependencies:{["prop-types"]:"^15.7.2"}}],["@rebass/forms@*",{dependencies:{["@styled-system/should-forward-prop"]:"^5.0.0"},peerDependencies:{react:"^16.8.6"}}],["rebass@*",{peerDependencies:{react:"^16.8.6"}}],["@ant-design/react-slick@<=0.28.3",{peerDependencies:{react:">=16.0.0"}}],["mqtt@<4.2.7",{dependencies:{duplexify:"^4.1.1"}}],["vue-cli-plugin-vuetify@<=2.0.3",{dependencies:{semver:"^6.3.0"},peerDependenciesMeta:{"sass-loader":Tt,"vuetify-loader":Tt}}],["vue-cli-plugin-vuetify@<=2.0.4",{dependencies:{"null-loader":"^3.0.0"}}],["vue-cli-plugin-vuetify@>=2.4.3",{peerDependencies:{vue:"*"}}],["@vuetify/cli-plugin-utils@<=0.0.4",{dependencies:{semver:"^6.3.0"},peerDependenciesMeta:{"sass-loader":Tt}}],["@vue/cli-plugin-typescript@<=5.0.0-alpha.0",{dependencies:{"babel-loader":"^8.1.0"}}],["@vue/cli-plugin-typescript@<=5.0.0-beta.0",{dependencies:{"@babel/core":"^7.12.16"},peerDependencies:{"vue-template-compiler":"^2.0.0"},peerDependenciesMeta:{"vue-template-compiler":Tt}}],["cordova-ios@<=6.3.0",{dependencies:{underscore:"^1.9.2"}}],["cordova-lib@<=10.0.1",{dependencies:{underscore:"^1.9.2"}}],["git-node-fs@*",{peerDependencies:{"js-git":"^0.7.8"},peerDependenciesMeta:{"js-git":Tt}}],["consolidate@<0.16.0",{peerDependencies:{mustache:"^3.0.0"},peerDependenciesMeta:{mustache:Tt}}],["consolidate@*",{peerDependencies:{velocityjs:"^2.0.1",tinyliquid:"^0.2.34","liquid-node":"^3.0.1",jade:"^1.11.0","then-jade":"*",dust:"^0.3.0","dustjs-helpers":"^1.7.4","dustjs-linkedin":"^2.7.5",swig:"^1.4.2","swig-templates":"^2.0.3","razor-tmpl":"^1.3.1",atpl:">=0.7.6",liquor:"^0.0.5",twig:"^1.15.2",ejs:"^3.1.5",eco:"^1.1.0-rc-3",jazz:"^0.0.18",jqtpl:"~1.1.0",hamljs:"^0.6.2",hamlet:"^0.3.3",whiskers:"^0.4.0","haml-coffee":"^1.14.1","hogan.js":"^3.0.2",templayed:">=0.2.3",handlebars:"^4.7.6",underscore:"^1.11.0",lodash:"^4.17.20",pug:"^3.0.0","then-pug":"*",qejs:"^3.0.5",walrus:"^0.10.1",mustache:"^4.0.1",just:"^0.1.8",ect:"^0.5.9",mote:"^0.2.0",toffee:"^0.3.6",dot:"^1.1.3","bracket-template":"^1.1.5",ractive:"^1.3.12",nunjucks:"^3.2.2",htmling:"^0.0.8","babel-core":"^6.26.3",plates:"~0.4.11","react-dom":"^16.13.1",react:"^16.13.1","arc-templates":"^0.5.3",vash:"^0.13.0",slm:"^2.0.0",marko:"^3.14.4",teacup:"^2.0.0","coffee-script":"^1.12.7",squirrelly:"^5.1.0",twing:"^5.0.2"},peerDependenciesMeta:{velocityjs:Tt,tinyliquid:Tt,"liquid-node":Tt,jade:Tt,"then-jade":Tt,dust:Tt,"dustjs-helpers":Tt,"dustjs-linkedin":Tt,swig:Tt,"swig-templates":Tt,"razor-tmpl":Tt,atpl:Tt,liquor:Tt,twig:Tt,ejs:Tt,eco:Tt,jazz:Tt,jqtpl:Tt,hamljs:Tt,hamlet:Tt,whiskers:Tt,"haml-coffee":Tt,"hogan.js":Tt,templayed:Tt,handlebars:Tt,underscore:Tt,lodash:Tt,pug:Tt,"then-pug":Tt,qejs:Tt,walrus:Tt,mustache:Tt,just:Tt,ect:Tt,mote:Tt,toffee:Tt,dot:Tt,"bracket-template":Tt,ractive:Tt,nunjucks:Tt,htmling:Tt,"babel-core":Tt,plates:Tt,"react-dom":Tt,react:Tt,"arc-templates":Tt,vash:Tt,slm:Tt,marko:Tt,teacup:Tt,"coffee-script":Tt,squirrelly:Tt,twing:Tt}}],["vue-loader@<=16.3.3",{peerDependencies:{"@vue/compiler-sfc":"^3.0.8",webpack:"^4.1.0 || ^5.0.0-0"},peerDependenciesMeta:{"@vue/compiler-sfc":Tt}}],["vue-loader@^16.7.0",{peerDependencies:{"@vue/compiler-sfc":"^3.0.8",vue:"^3.2.13"},peerDependenciesMeta:{"@vue/compiler-sfc":Tt,vue:Tt}}],["scss-parser@*",{dependencies:{lodash:"^4.17.21"}}],["query-ast@*",{dependencies:{lodash:"^4.17.21"}}],["redux-thunk@<=2.3.0",{peerDependencies:{redux:"^4.0.0"}}],["skypack@<=0.3.2",{dependencies:{tar:"^6.1.0"}}],["@npmcli/metavuln-calculator@<2.0.0",{dependencies:{"json-parse-even-better-errors":"^2.3.1"}}],["bin-links@<2.3.0",{dependencies:{"mkdirp-infer-owner":"^1.0.2"}}],["rollup-plugin-polyfill-node@<=0.8.0",{peerDependencies:{rollup:"^1.20.0 || ^2.0.0"}}],["snowpack@<3.8.6",{dependencies:{"magic-string":"^0.25.7"}}],["elm-webpack-loader@*",{dependencies:{temp:"^0.9.4"}}],["winston-transport@<=4.4.0",{dependencies:{logform:"^2.2.0"}}],["jest-vue-preprocessor@*",{dependencies:{"@babel/core":"7.8.7","@babel/template":"7.8.6"},peerDependencies:{pug:"^2.0.4"},peerDependenciesMeta:{pug:Tt}}],["redux-persist@*",{peerDependencies:{react:">=16"},peerDependenciesMeta:{react:Tt}}],["sodium@>=3",{dependencies:{"node-gyp":"^3.8.0"}}],["babel-plugin-graphql-tag@<=3.1.0",{peerDependencies:{graphql:"^14.0.0 || ^15.0.0"}}],["@playwright/test@<=1.14.1",{dependencies:{"jest-matcher-utils":"^26.4.2"}}],...["babel-plugin-remove-graphql-queries@<3.14.0-next.1","babel-preset-gatsby-package@<1.14.0-next.1","create-gatsby@<1.14.0-next.1","gatsby-admin@<0.24.0-next.1","gatsby-cli@<3.14.0-next.1","gatsby-core-utils@<2.14.0-next.1","gatsby-design-tokens@<3.14.0-next.1","gatsby-legacy-polyfills@<1.14.0-next.1","gatsby-plugin-benchmark-reporting@<1.14.0-next.1","gatsby-plugin-graphql-config@<0.23.0-next.1","gatsby-plugin-image@<1.14.0-next.1","gatsby-plugin-mdx@<2.14.0-next.1","gatsby-plugin-netlify-cms@<5.14.0-next.1","gatsby-plugin-no-sourcemaps@<3.14.0-next.1","gatsby-plugin-page-creator@<3.14.0-next.1","gatsby-plugin-preact@<5.14.0-next.1","gatsby-plugin-preload-fonts@<2.14.0-next.1","gatsby-plugin-schema-snapshot@<2.14.0-next.1","gatsby-plugin-styletron@<6.14.0-next.1","gatsby-plugin-subfont@<3.14.0-next.1","gatsby-plugin-utils@<1.14.0-next.1","gatsby-recipes@<0.25.0-next.1","gatsby-source-shopify@<5.6.0-next.1","gatsby-source-wikipedia@<3.14.0-next.1","gatsby-transformer-screenshot@<3.14.0-next.1","gatsby-worker@<0.5.0-next.1"].map(t=>[t,{dependencies:{"@babel/runtime":"^7.14.8"}}]),["gatsby-core-utils@<2.14.0-next.1",{dependencies:{got:"8.3.2"}}],["gatsby-plugin-gatsby-cloud@<=3.1.0-next.0",{dependencies:{"gatsby-core-utils":"^2.13.0-next.0"}}],["gatsby-plugin-gatsby-cloud@<=3.2.0-next.1",{peerDependencies:{webpack:"*"}}],["babel-plugin-remove-graphql-queries@<=3.14.0-next.1",{dependencies:{"gatsby-core-utils":"^2.8.0-next.1"}}],["gatsby-plugin-netlify@3.13.0-next.1",{dependencies:{"gatsby-core-utils":"^2.13.0-next.0"}}],["clipanion-v3-codemod@<=0.2.0",{peerDependencies:{jscodeshift:"^0.11.0"}}],["react-live@*",{peerDependencies:{"react-dom":"*",react:"*"}}],["webpack@<4.44.1",{peerDependenciesMeta:{"webpack-cli":Tt,"webpack-command":Tt}}],["webpack@<5.0.0-beta.23",{peerDependenciesMeta:{"webpack-cli":Tt}}],["webpack-dev-server@<3.10.2",{peerDependenciesMeta:{"webpack-cli":Tt}}],["@docusaurus/responsive-loader@<1.5.0",{peerDependenciesMeta:{sharp:Tt,jimp:Tt}}],["eslint-module-utils@*",{peerDependenciesMeta:{"eslint-import-resolver-node":Tt,"eslint-import-resolver-typescript":Tt,"eslint-import-resolver-webpack":Tt,"@typescript-eslint/parser":Tt}}],["eslint-plugin-import@*",{peerDependenciesMeta:{"@typescript-eslint/parser":Tt}}],["critters-webpack-plugin@<3.0.2",{peerDependenciesMeta:{"html-webpack-plugin":Tt}}],["terser@<=5.10.0",{dependencies:{acorn:"^8.5.0"}}],["babel-preset-react-app@10.0.x",{dependencies:{"@babel/plugin-proposal-private-property-in-object":"^7.16.0"}}],["eslint-config-react-app@*",{peerDependenciesMeta:{typescript:Tt}}],["@vue/eslint-config-typescript@<11.0.0",{peerDependenciesMeta:{typescript:Tt}}],["unplugin-vue2-script-setup@<0.9.1",{peerDependencies:{"@vue/composition-api":"^1.4.3","@vue/runtime-dom":"^3.2.26"}}],["@cypress/snapshot@*",{dependencies:{debug:"^3.2.7"}}],["auto-relay@*",{peerDependencies:{"reflect-metadata":"^0.1.13"}}],["vue-template-babel-compiler@<1.2.0",{peerDependencies:{["vue-template-compiler"]:"^2.6.0"}}],["@parcel/transformer-image@<2.5.0",{peerDependencies:{["@parcel/core"]:"*"}}],["@parcel/transformer-js@<2.5.0",{peerDependencies:{["@parcel/core"]:"*"}}],["parcel@*",{peerDependenciesMeta:{["@parcel/core"]:Tt}}],["react-scripts@*",{peerDependencies:{eslint:"*"}}],["focus-trap-react@^8.0.0",{dependencies:{tabbable:"^5.3.2"}}],["react-rnd@<10.3.7",{peerDependencies:{react:">=16.3.0","react-dom":">=16.3.0"}}],["connect-mongo@*",{peerDependencies:{"express-session":"^1.17.1"}}],["vue-i18n@<9",{peerDependencies:{vue:"^2"}}],["vue-router@<4",{peerDependencies:{vue:"^2"}}],["unified@<10",{dependencies:{"@types/unist":"^2.0.0"}}],["react-github-btn@<=1.3.0",{peerDependencies:{react:">=16.3.0"}}],["react-dev-utils@*",{peerDependencies:{typescript:">=2.7",webpack:">=4"},peerDependenciesMeta:{typescript:Tt}}],["@asyncapi/react-component@<=1.0.0-next.39",{peerDependencies:{react:">=16.8.0","react-dom":">=16.8.0"}}],["xo@*",{peerDependencies:{webpack:">=1.11.0"},peerDependenciesMeta:{webpack:Tt}}],["babel-plugin-remove-graphql-queries@<=4.20.0-next.0",{dependencies:{"@babel/types":"^7.15.4"}}],["gatsby-plugin-page-creator@<=4.20.0-next.1",{dependencies:{"fs-extra":"^10.1.0"}}],["gatsby-plugin-utils@<=3.14.0-next.1",{dependencies:{fastq:"^1.13.0"},peerDependencies:{graphql:"^15.0.0"}}],["gatsby-plugin-mdx@<3.1.0-next.1",{dependencies:{mkdirp:"^1.0.4"}}],["gatsby-plugin-mdx@^2",{peerDependencies:{gatsby:"^3.0.0-next"}}]];var L_;function Mme(){return typeof L_>"u"&&(L_=Ie("zlib").brotliDecompressSync(Buffer.from("G7weAByFTVk3Vs7UfHhq4yykgEM7pbW7TI43SG2S5tvGrwHBAzdz+s/npQ6tgEvobvxisrPIadkXeUAJotBn5bDZ5kAhcRqsIHe3F75Walet5hNalwgFDtxb0BiDUjiUQkjG0yW2hto9HPgiCkm316d6bC0kST72YN7D7rfkhCE9x4J0XwB0yavalxpUu2t9xszHrmtwalOxT7VslsxWcB1qpqZwERUra4psWhTV8BgwWeizurec82Caf1ABL11YMfbf8FJ9JBceZOkgmvrQPbC9DUldX/yMbmX06UQluCEjSwUoyO+EZPIjofr+/oAZUck2enraRD+oWLlnlYnj8xB+gwSo9lmmks4fXv574qSqcWA6z21uYkzMu3EWj+K23RxeQlLqiE35/rC8GcS4CGkKHKKq+zAIQwD9iRDNfiAqueLLpicFFrNsAI4zeTD/eO9MHcnRa5m8UT+M2+V+AkFST4BlKneiAQRSdST8KEAIyFlULt6wa9EBd0Ds28VmpaxquJdVt+nwdEs5xUskI13OVtFyY0UrQIRAlCuvvWivvlSKQfTO+2Q8OyUR1W5RvetaPz4jD27hdtwHFFA1Ptx6Ee/t2cY2rg2G46M1pNDRf2pWhvpy8pqMnuI3++4OF3+7OFIWXGjh+o7Nr2jNvbiYcQdQS1h903/jVFgOpA0yJ78z+x759bFA0rq+6aY5qPB4FzS3oYoLupDUhD9nDz6F6H7hpnlMf18KNKDu4IKjTWwrAnY6MFQw1W6ymOALHlFyCZmQhldg1MQHaMVVQTVgDC60TfaBqG++Y8PEoFhN/PBTZT175KNP/BlHDYGOOBmnBdzqJKplZ/ljiVG0ZBzfqeBRrrUkn6rA54462SgiliKoYVnbeptMdXNfAuaupIEi0bApF10TlgHfmEJAPUVidRVFyDupSem5po5vErPqWKhKbUIp0LozpYsIKK57dM/HKr+nguF+7924IIWMICkQ8JUigs9D+W+c4LnNoRtPPKNRUiCYmP+Jfo2lfKCKw8qpraEeWU3uiNRO6zcyKQoXPR5htmzzLznke7b4YbXW3I1lIRzmgG02Udb58U+7TpwyN7XymCgH+wuPDthZVQvRZuEP+SnLtMicz9m5zASWOBiAcLmkuFlTKuHspSIhCBD0yUPKcxu81A+4YD78rA2vtwsUEday9WNyrShyrl60rWmA+SmbYZkQOwFJWArxRYYc5jGhA5ikxYw1rx3ei4NmeX/lKiwpZ9Ln1tV2Ae7sArvxuVLbJjqJRjW1vFXAyHpvLG+8MJ6T2Ubx5M2KDa2SN6vuIGxJ9WQM9Mk3Q7aCNiZONXllhqq24DmoLbQfW2rYWsOgHWjtOmIQMyMKdiHZDjoyIq5+U700nZ6odJAoYXPQBvFNiQ78d5jaXliBqLTJEqUCwi+LiH2mx92EmNKDsJL74Z613+3lf20pxkV1+erOrjj8pW00vsPaahKUM+05ssd5uwM7K482KWEf3TCwlg/o3e5ngto7qSMz7YteIgCsF1UOcsLk7F7MxWbvrPMY473ew0G+noVL8EPbkmEMftMSeL6HFub/zy+2JQ==","base64")).toString()),L_}var O_;function Lme(){return typeof O_>"u"&&(O_=Ie("zlib").brotliDecompressSync(Buffer.from("G8MSIIzURnVBnObTcvb3XE6v2S9Qgc2K801Oa5otNKEtK8BINZNcaQHy+9/vf/WXBimwutXC33P2DPc64pps5rz7NGGWaOKNSPL4Y2KRE8twut2lFOIN+OXPtRmPMRhMTILib2bEQx43az2I5d3YS8Roa5UZpF/ujHb3Djd3GDvYUfvFYSUQ39vb2cmifp/rgB4J/65JK3wRBTvMBoNBmn3mbXC63/gbBkW/2IRPri0O8bcsRBsmarF328pAln04nyJFkwUAvNu934supAqLtyerZZpJ8I8suJHhf/ocMV+scKwa8NOiDKIPXw6Ex/EEZD6TEGaW8N5zvNHYF10l6Lfooj7D5W2k3dgvQSbp2Wv8TGOayS978gxlOLVjTGXs66ozewbrjwElLtyrYNnWTfzzdEutgROUFPVMhnMoy8EjJLLlWwIEoySxliim9kYW30JUHiPVyjt0iAw/ZpPmCbUCltYPnq6ZNblIKhTNhqS/oqC9iya5sGKZTOVsTEg34n92uZTf2iPpcZih8rPW8CzA+adIGmyCPcKdLMsBLShd+zuEbTrqpwuh+DLmracZcjPC5Sdf5odDAhKpFuOsQS67RT+1VgWWygSv3YwxDnylc04/PYuaMeIzhBkLrvs7e/OUzRTF56MmfY6rI63QtEjEQzq637zQqJ39nNhu3NmoRRhW/086bHGBUtx0PE0j3aEGvkdh9WJC8y8j8mqqke9/dQ5la+Q3ba4RlhvTbnfQhPDDab3tUifkjKuOsp13mXEmO00Mu88F/M67R7LXfoFDFLNtgCSWjWX+3Jn1371pJTK9xPBiMJafvDjtFyAzu8rxeQ0TKMQXNPs5xxiBOd+BRJP8KP88XPtJIbZKh/cdW8KvBUkpqKpGoiIaA32c3/JnQr4efXt85mXvidOvn/eU3Pase1typLYBalJ14mCso9h79nuMOuCa/kZAOkJHmTjP5RM2WNoPasZUAnT1TAE/NH25hUxcQv6hQWR/m1PKk4ooXMcM4SR1iYU3fUohvqk4RY2hbmTVVIXv6TvqO+0doOjgeVFAcom+RlwJQmOVH7pr1Q9LoJT6n1DeQEB+NHygsATbIwTcOKZlJsY8G4+suX1uQLjUWwLjjs0mvSvZcLTpIGAekeR7GCgl8eo3ndAqEe2XCav4huliHjdbIPBsGJuPX7lrO9HX1UbXRH5opOe1x6JsOSgHZR+EaxuXVhpLLxm6jk1LJtZfHSc6BKPun3CpYYVMJGwEUyk8MTGG0XL5MfEwaXpnc9TKnBmlGn6nHiGREc3ysn47XIBDzA+YvFdjZzVIEDcKGpS6PbUJehFRjEne8D0lVU1XuRtlgszq6pTNlQ/3MzNOEgCWPyTct22V2mEi2krizn5VDo9B19/X2DB3hCGRMM7ONbtnAcIx/OWB1u5uPbW1gsH8irXxT/IzG0PoXWYjhbMsH3KTuoOl5o17PulcgvsfTSnKFM354GWI8luqZnrswWjiXy3G+Vbyo1KMopFmmvBwNELgaS8z8dNZchx/Cl/xjddxhMcyqtzFyONb2Zdu90NkI8pAeufe7YlXrp53v8Dj/l8vWeVspRKBGXScBBPI/HinSTGmLDOGGOCIyH0JFdOZx0gWsacNlQLJMIrBhqRxXxHF/5pseWwejlAAvZ3klZSDSYY8mkToaWejXhgNomeGtx1DTLEUFMRkgF5yFB22WYdJnaWN14r1YJj81hGi45+jrADS5nYRhCiSlCJJ1nL8pYX+HDSMhdTEWyRcgHVp/IsUIZYMfT+YYncUQPgcxNGCHfZ88vDdrcUuaGIl6zhAsiaq7R5dfqrqXH/JcBhfjT8D0azayIyEz75Nxp6YkcyDxlJq3EXnJUpqDohJJOysL1t1uNiHESlvsxPb5cpbW0+ICZqJmUZus1BMW0F5IVBODLIo2zHHjA0=","base64")).toString()),O_}var U_;function Ome(){return typeof U_>"u"&&(U_=Ie("zlib").brotliDecompressSync(Buffer.from("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","base64")).toString()),U_}var Ume=new Map([[Y.makeIdent(null,"fsevents").identHash,Mme],[Y.makeIdent(null,"resolve").identHash,Lme],[Y.makeIdent(null,"typescript").identHash,Ome]]),udt={hooks:{registerPackageExtensions:async(t,e)=>{for(let[r,o]of M_)e(Y.parseDescriptor(r,!0),o)},getBuiltinPatch:async(t,e)=>{var n;let r="compat/";if(!e.startsWith(r))return;let o=Y.parseIdent(e.slice(r.length)),a=(n=Ume.get(o.identHash))==null?void 0:n();return typeof a<"u"?a:null},reduceDependency:async(t,e,r,o)=>typeof Ume.get(t.identHash)>"u"?t:Y.makeDescriptor(t,Y.makeRange({protocol:"patch:",source:Y.stringifyDescriptor(t),selector:`optional!builtin`,params:null}))}},fdt=udt;var i6={};tr(i6,{ConstraintsCheckCommand:()=>Gh,ConstraintsQueryCommand:()=>Hh,ConstraintsSourceCommand:()=>qh,default:()=>kdt});$e();$e();var L1=be(Vt()),Hh=class extends gt{constructor(){super(...arguments);this.json=L1.Option.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.query=L1.Option.String()}async execute(){let{Constraints:r}=await Promise.resolve().then(()=>(xP(),kP)),o=await rt.find(this.context.cwd,this.context.plugins),{project:a}=await xt.find(o,this.context.cwd),n=await r.find(a),c=this.query;return c.endsWith(".")||(c=`${c}.`),(await St.start({configuration:o,json:this.json,stdout:this.context.stdout},async g=>{for await(let p of n.query(c)){let E=Array.from(Object.entries(p)),B=E.length,Q=E.reduce((x,[C])=>Math.max(x,C.length),0);for(let x=0;x(xP(),kP)),o=await rt.find(this.context.cwd,this.context.plugins),{project:a}=await xt.find(o,this.context.cwd),n=await r.find(a);this.context.stdout.write(this.verbose?n.fullSource:n.source)}};qh.paths=[["constraints","source"]],qh.usage=PP.Command.Usage({category:"Constraints-related commands",description:"print the source code for the constraints",details:"\n This command will print the Prolog source code used by the constraints engine. Adding the `-v,--verbose` flag will print the *full* source code, including the fact database automatically compiled from the workspace manifests.\n ",examples:[["Prints the source code","yarn constraints source"],["Print the source code and the fact database","yarn constraints source -v"]]});$e();$e();$e();var bP=be(Vt()),uye=be(Q1()),fye=be(u_()),gye=be(p_()),Gh=class extends gt{constructor(){super(...arguments);this.fix=bP.Option.Boolean("--fix",!1,{description:"Attempt to automatically fix unambiguous issues, following a multi-pass process"})}async execute(){let{Constraints:r}=await Promise.resolve().then(()=>(xP(),kP)),o=await rt.find(this.context.cwd,this.context.plugins),{project:a}=await xt.find(o,this.context.cwd),n=await r.find(a),c=await St.start({configuration:o,stdout:this.context.stdout},async f=>{let g=new Set,p=[];for(let E=0,B=this.fix?10:1;E{await E.persistManifest()}));for(let[E,B]of p)f.reportError(E,B)});return c.hasErrors()?c.exitCode():0}};Gh.paths=[["constraints"]],Gh.usage=bP.Command.Usage({category:"Constraints-related commands",description:"check that the project constraints are met",details:` - This command will run constraints on your project and emit errors for each one that is found but isn't met. If any error is emitted the process will exit with a non-zero exit code. - - If the \`--fix\` flag is used, Yarn will attempt to automatically fix the issues the best it can, following a multi-pass process (with a maximum of 10 iterations). Some ambiguous patterns cannot be autofixed, in which case you'll have to manually specify the right resolution. - - For more information as to how to write constraints, please consult our dedicated page on our website: https://yarnpkg.com/features/constraints. - `,examples:[["Check that all constraints are satisfied","yarn constraints"],["Autofix all unmet constraints","yarn constraints --fix"]]});async function vdt(t,e,r,{configuration:o,fix:a}){let n=new Map,c=new Map;for(let{workspace:f,dependencyIdent:g,dependencyRange:p,dependencyType:E}of r){let B=c.get(f);typeof B>"u"&&c.set(f,B=new Map);let Q=B.get(g.identHash);typeof Q>"u"&&B.set(g.identHash,Q=new Map);let x=Q.get(E);typeof x>"u"&&Q.set(E,x=new Set),n.set(g.identHash,g),x.add(p)}for(let[f,g]of c)for(let[p,E]of g){let B=n.get(p);if(typeof B>"u")throw new Error("Assertion failed: The ident should have been registered");for(let[Q,x]of E){let C=x.has(null)?[null]:[...x];if(C.length>2)e.push([53,`${Y.prettyWorkspace(o,f)} must depend on ${Y.prettyIdent(o,B)} via conflicting ranges ${C.slice(0,-1).map(N=>Y.prettyRange(o,String(N))).join(", ")}, and ${Y.prettyRange(o,String(C[C.length-1]))} (in ${Q})`]);else if(C.length>1)e.push([53,`${Y.prettyWorkspace(o,f)} must depend on ${Y.prettyIdent(o,B)} via conflicting ranges ${Y.prettyRange(o,String(C[0]))} and ${Y.prettyRange(o,String(C[1]))} (in ${Q})`]);else{let N=f.manifest[Q].get(B.identHash),[U]=C;U!==null?N?N.range!==U&&(a?(f.manifest[Q].set(B.identHash,Y.makeDescriptor(B,U)),t.add(f)):e.push([24,`${Y.prettyWorkspace(o,f)} must depend on ${Y.prettyIdent(o,B)} via ${Y.prettyRange(o,U)}, but uses ${Y.prettyRange(o,N.range)} instead (in ${Q})`])):a?(f.manifest[Q].set(B.identHash,Y.makeDescriptor(B,U)),t.add(f)):e.push([23,`${Y.prettyWorkspace(o,f)} must depend on ${Y.prettyIdent(o,B)} (via ${Y.prettyRange(o,U)}), but doesn't (in ${Q})`]):N&&(a?(f.manifest[Q].delete(B.identHash),t.add(f)):e.push([25,`${Y.prettyWorkspace(o,f)} has an extraneous dependency on ${Y.prettyIdent(o,B)} (in ${Q})`]))}}}}async function Ddt(t,e,r,{configuration:o,fix:a}){let n=new Map;for(let{workspace:c,fieldPath:f,fieldValue:g}of r){let p=Ze.getMapWithDefault(n,c);Ze.getSetWithDefault(p,f).add(g)}for(let[c,f]of n)for(let[g,p]of f){let E=[...p];if(E.length>2)e.push([53,`${Y.prettyWorkspace(o,c)} must have a field ${Ne.pretty(o,g,"cyan")} set to conflicting values ${E.slice(0,-1).map(B=>Ne.pretty(o,String(B),"magenta")).join(", ")}, or ${Ne.pretty(o,String(E[E.length-1]),"magenta")}`]);else if(E.length>1)e.push([53,`${Y.prettyWorkspace(o,c)} must have a field ${Ne.pretty(o,g,"cyan")} set to conflicting values ${Ne.pretty(o,String(E[0]),"magenta")} or ${Ne.pretty(o,String(E[1]),"magenta")}`]);else{let B=(0,uye.default)(c.manifest.raw,g),[Q]=E;Q!==null?B===void 0?a?(await n6(c,g,Q),t.add(c)):e.push([37,`${Y.prettyWorkspace(o,c)} must have a field ${Ne.pretty(o,g,"cyan")} set to ${Ne.pretty(o,String(Q),"magenta")}, but doesn't`]):JSON.stringify(B)!==Q&&(a?(await n6(c,g,Q),t.add(c)):e.push([38,`${Y.prettyWorkspace(o,c)} must have a field ${Ne.pretty(o,g,"cyan")} set to ${Ne.pretty(o,String(Q),"magenta")}, but is set to ${Ne.pretty(o,JSON.stringify(B),"magenta")} instead`])):B!=null&&(a?(await n6(c,g,null),t.add(c)):e.push([39,`${Y.prettyWorkspace(o,c)} has an extraneous field ${Ne.pretty(o,g,"cyan")} set to ${Ne.pretty(o,JSON.stringify(B),"magenta")}`]))}}}async function n6(t,e,r){r===null?(0,gye.default)(t.manifest.raw,e):(0,fye.default)(t.manifest.raw,e,JSON.parse(r))}var Sdt={configuration:{constraintsPath:{description:"The path of the constraints file.",type:"ABSOLUTE_PATH",default:"./constraints.pro"}},commands:[Hh,qh,Gh]},kdt=Sdt;var s6={};tr(s6,{CreateCommand:()=>bm,DlxCommand:()=>jh,default:()=>Pdt});$e();var O1=be(Vt()),bm=class extends gt{constructor(){super(...arguments);this.pkg=O1.Option.String("-p,--package",{description:"The package to run the provided command from"});this.quiet=O1.Option.Boolean("-q,--quiet",!1,{description:"Only report critical errors instead of printing the full install logs"});this.command=O1.Option.String();this.args=O1.Option.Proxy()}async execute(){let r=[];this.pkg&&r.push("--package",this.pkg),this.quiet&&r.push("--quiet");let o=Y.parseDescriptor(this.command),a;o.scope?a=Y.makeIdent(o.scope,`create-${o.name}`):o.name.startsWith("@")?a=Y.makeIdent(o.name.substring(1),"create"):a=Y.makeIdent(null,`create-${o.name}`);let n=Y.stringifyIdent(a);return o.range!=="unknown"&&(n+=`@${o.range}`),this.cli.run(["dlx",...r,n,...this.args])}};bm.paths=[["create"]];$e();$e();Ft();var Fm=be(Vt()),jh=class extends gt{constructor(){super(...arguments);this.packages=Fm.Option.Array("-p,--package",{description:"The package(s) to install before running the command"});this.quiet=Fm.Option.Boolean("-q,--quiet",!1,{description:"Only report critical errors instead of printing the full install logs"});this.command=Fm.Option.String();this.args=Fm.Option.Proxy()}async execute(){return rt.telemetry=null,await ge.mktempPromise(async r=>{let o=ee.join(r,`dlx-${process.pid}`);await ge.mkdirPromise(o),await ge.writeFilePromise(ee.join(o,"package.json"),`{} -`),await ge.writeFilePromise(ee.join(o,"yarn.lock"),"");let a=ee.join(o,".yarnrc.yml"),n=await rt.findProjectCwd(this.context.cwd,Xr.lockfile),f={enableGlobalCache:!(await rt.find(this.context.cwd,null,{strict:!1})).get("enableGlobalCache"),enableTelemetry:!1,logFilters:[{code:pu(68),level:Ne.LogLevel.Discard}]},g=n!==null?ee.join(n,".yarnrc.yml"):null;g!==null&&ge.existsSync(g)?(await ge.copyFilePromise(g,a),await rt.updateConfiguration(o,U=>{let H=Ze.toMerged(U,f);return Array.isArray(U.plugins)&&(H.plugins=U.plugins.map(X=>{let ie=typeof X=="string"?X:X.path,fe=me.isAbsolute(ie)?ie:me.resolve(me.fromPortablePath(n),ie);return typeof X=="string"?fe:{path:fe,spec:X.spec}})),H})):await ge.writeJsonPromise(a,f);let p=this.packages??[this.command],E=Y.parseDescriptor(this.command).name,B=await this.cli.run(["add","--fixed","--",...p],{cwd:o,quiet:this.quiet});if(B!==0)return B;this.quiet||this.context.stdout.write(` -`);let Q=await rt.find(o,this.context.plugins),{project:x,workspace:C}=await xt.find(Q,o);if(C===null)throw new lr(x.cwd,o);await x.restoreInstallState();let N=await En.getWorkspaceAccessibleBinaries(C);return N.has(E)===!1&&N.size===1&&typeof this.packages>"u"&&(E=Array.from(N)[0][0]),await En.executeWorkspaceAccessibleBinary(C,E,this.args,{packageAccessibleBinaries:N,cwd:this.context.cwd,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr})})}};jh.paths=[["dlx"]],jh.usage=Fm.Command.Usage({description:"run a package in a temporary environment",details:"\n This command will install a package within a temporary environment, and run its binary script if it contains any. The binary will run within the current cwd.\n\n By default Yarn will download the package named `command`, but this can be changed through the use of the `-p,--package` flag which will instruct Yarn to still run the same command but from a different package.\n\n Using `yarn dlx` as a replacement of `yarn add` isn't recommended, as it makes your project non-deterministic (Yarn doesn't keep track of the packages installed through `dlx` - neither their name, nor their version).\n ",examples:[["Use create-react-app to create a new React app","yarn dlx create-react-app ./my-app"],["Install multiple packages for a single command",`yarn dlx -p typescript -p ts-node ts-node --transpile-only -e "console.log('hello!')"`]]});var xdt={commands:[bm,jh]},Pdt=xdt;var A6={};tr(A6,{ExecFetcher:()=>K1,ExecResolver:()=>_1,default:()=>Rdt,execUtils:()=>FP});$e();$e();Ft();var Mu="exec:";var FP={};tr(FP,{loadGeneratorFile:()=>U1,makeLocator:()=>a6,makeSpec:()=>pye,parseSpec:()=>o6});$e();Ft();function o6(t){let{params:e,selector:r}=Y.parseRange(t),o=me.toPortablePath(r);return{parentLocator:e&&typeof e.locator=="string"?Y.parseLocator(e.locator):null,path:o}}function pye({parentLocator:t,path:e,generatorHash:r,protocol:o}){let a=t!==null?{locator:Y.stringifyLocator(t)}:{},n=typeof r<"u"?{hash:r}:{};return Y.makeRange({protocol:o,source:e,selector:e,params:{...n,...a}})}function a6(t,{parentLocator:e,path:r,generatorHash:o,protocol:a}){return Y.makeLocator(t,pye({parentLocator:e,path:r,generatorHash:o,protocol:a}))}async function U1(t,e,r){let{parentLocator:o,path:a}=Y.parseFileStyleRange(t,{protocol:e}),n=ee.isAbsolute(a)?{packageFs:new Qn(Bt.root),prefixPath:Bt.dot,localPath:Bt.root}:await r.fetcher.fetch(o,r),c=n.localPath?{packageFs:new Qn(Bt.root),prefixPath:ee.relative(Bt.root,n.localPath)}:n;n!==c&&n.releaseFs&&n.releaseFs();let f=c.packageFs,g=ee.join(c.prefixPath,a);return await f.readFilePromise(g,"utf8")}var K1=class{supports(e,r){return!!e.reference.startsWith(Mu)}getLocalPath(e,r){let{parentLocator:o,path:a}=Y.parseFileStyleRange(e.reference,{protocol:Mu});if(ee.isAbsolute(a))return a;let n=r.fetcher.getLocalPath(o,r);return n===null?null:ee.resolve(n,a)}async fetch(e,r){let o=r.checksums.get(e.locatorHash)||null,[a,n,c]=await r.cache.fetchPackageFromCache(e,o,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e),loader:()=>this.fetchFromDisk(e,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:Y.getIdentVendorPath(e),localPath:this.getLocalPath(e,r),checksum:c}}async fetchFromDisk(e,r){let o=await U1(e.reference,Mu,r);return ge.mktempPromise(async a=>{let n=ee.join(a,"generator.js");return await ge.writeFilePromise(n,o),ge.mktempPromise(async c=>{if(await this.generatePackage(c,e,n,r),!ge.existsSync(ee.join(c,"build")))throw new Error("The script should have generated a build directory");return await ys.makeArchiveFromDirectory(ee.join(c,"build"),{prefixPath:Y.getIdentVendorPath(e),compressionLevel:r.project.configuration.get("compressionLevel")})})})}async generatePackage(e,r,o,a){return await ge.mktempPromise(async n=>{let c=await En.makeScriptEnv({project:a.project,binFolder:n}),f=ee.join(e,"runtime.js");return await ge.mktempPromise(async g=>{let p=ee.join(g,"buildfile.log"),E=null,B=ge.createWriteStream(p),Q=B,x=ee.join(e,"generator"),C=ee.join(e,"build");await ge.mkdirPromise(x),await ge.mkdirPromise(C);let N={tempDir:me.fromPortablePath(x),buildDir:me.fromPortablePath(C),locator:Y.stringifyLocator(r)};await ge.writeFilePromise(f,` - // Expose 'Module' as a global variable - Object.defineProperty(global, 'Module', { - get: () => require('module'), - configurable: true, - enumerable: false, - }); - - // Expose non-hidden built-in modules as global variables - for (const name of Module.builtinModules.filter((name) => name !== 'module' && !name.startsWith('_'))) { - Object.defineProperty(global, name, { - get: () => require(name), - configurable: true, - enumerable: false, - }); - } - - // Expose the 'execEnv' global variable - Object.defineProperty(global, 'execEnv', { - value: { - ...${JSON.stringify(N)}, - }, - enumerable: true, - }); - `);let U=c.NODE_OPTIONS||"",H=/\s*--require\s+\S*\.pnp\.c?js\s*/g;U=U.replace(H," ").trim(),c.NODE_OPTIONS=U,B.write(`# This file contains the result of Yarn generating a package (${Y.stringifyLocator(r)}) -`),B.write(` -`);let{code:X}=await pn.pipevp(process.execPath,["--require",me.fromPortablePath(f),me.fromPortablePath(o),Y.stringifyIdent(r)],{cwd:e,env:c,stdin:E,stdout:B,stderr:Q});if(X!==0)throw ge.detachTemp(g),new Error(`Package generation failed (exit code ${X}, logs can be found here: ${Ne.pretty(a.project.configuration,p,Ne.Type.PATH)})`)})})}};$e();$e();var bdt=2,_1=class{supportsDescriptor(e,r){return!!e.range.startsWith(Mu)}supportsLocator(e,r){return!!e.reference.startsWith(Mu)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,o){return Y.bindDescriptor(e,{locator:Y.stringifyLocator(r)})}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,o){if(!o.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let{path:a,parentLocator:n}=o6(e.range);if(n===null)throw new Error("Assertion failed: The descriptor should have been bound");let c=await U1(Y.makeRange({protocol:Mu,source:a,selector:a,params:{locator:Y.stringifyLocator(n)}}),Mu,o.fetchOptions),f=Oi.makeHash(`${bdt}`,c).slice(0,6);return[a6(e,{parentLocator:n,path:a,generatorHash:f,protocol:Mu})]}async getSatisfying(e,r,o,a){let[n]=await this.getCandidates(e,r,a);return{locators:o.filter(c=>c.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){if(!r.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let o=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),a=await Ze.releaseAfterUseAsync(async()=>await Gt.find(o.prefixPath,{baseFs:o.packageFs}),o.releaseFs);return{...e,version:a.version||"0.0.0",languageName:a.languageName||r.project.configuration.get("defaultLanguageName"),linkType:"HARD",conditions:a.getConditions(),dependencies:r.project.configuration.normalizeDependencyMap(a.dependencies),peerDependencies:a.peerDependencies,dependenciesMeta:a.dependenciesMeta,peerDependenciesMeta:a.peerDependenciesMeta,bin:a.bin}}};var Fdt={fetchers:[K1],resolvers:[_1]},Rdt=Fdt;var f6={};tr(f6,{FileFetcher:()=>G1,FileResolver:()=>j1,TarballFileFetcher:()=>Y1,TarballFileResolver:()=>W1,default:()=>Mdt,fileUtils:()=>q1});$e();Ft();var UE=/^(?:[a-zA-Z]:[\\/]|\.{0,2}\/)/,H1=/^[^?]*\.(?:tar\.gz|tgz)(?:::.*)?$/,ls="file:";var q1={};tr(q1,{makeArchiveFromLocator:()=>RP,makeBufferFromLocator:()=>u6,makeLocator:()=>c6,makeSpec:()=>hye,parseSpec:()=>l6});$e();Ft();function l6(t){let{params:e,selector:r}=Y.parseRange(t),o=me.toPortablePath(r);return{parentLocator:e&&typeof e.locator=="string"?Y.parseLocator(e.locator):null,path:o}}function hye({parentLocator:t,path:e,folderHash:r,protocol:o}){let a=t!==null?{locator:Y.stringifyLocator(t)}:{},n=typeof r<"u"?{hash:r}:{};return Y.makeRange({protocol:o,source:e,selector:e,params:{...n,...a}})}function c6(t,{parentLocator:e,path:r,folderHash:o,protocol:a}){return Y.makeLocator(t,hye({parentLocator:e,path:r,folderHash:o,protocol:a}))}async function RP(t,{protocol:e,fetchOptions:r,inMemory:o=!1}){let{parentLocator:a,path:n}=Y.parseFileStyleRange(t.reference,{protocol:e}),c=ee.isAbsolute(n)?{packageFs:new Qn(Bt.root),prefixPath:Bt.dot,localPath:Bt.root}:await r.fetcher.fetch(a,r),f=c.localPath?{packageFs:new Qn(Bt.root),prefixPath:ee.relative(Bt.root,c.localPath)}:c;c!==f&&c.releaseFs&&c.releaseFs();let g=f.packageFs,p=ee.join(f.prefixPath,n);return await Ze.releaseAfterUseAsync(async()=>await ys.makeArchiveFromDirectory(p,{baseFs:g,prefixPath:Y.getIdentVendorPath(t),compressionLevel:r.project.configuration.get("compressionLevel"),inMemory:o}),f.releaseFs)}async function u6(t,{protocol:e,fetchOptions:r}){return(await RP(t,{protocol:e,fetchOptions:r,inMemory:!0})).getBufferAndClose()}var G1=class{supports(e,r){return!!e.reference.startsWith(ls)}getLocalPath(e,r){let{parentLocator:o,path:a}=Y.parseFileStyleRange(e.reference,{protocol:ls});if(ee.isAbsolute(a))return a;let n=r.fetcher.getLocalPath(o,r);return n===null?null:ee.resolve(n,a)}async fetch(e,r){let o=r.checksums.get(e.locatorHash)||null,[a,n,c]=await r.cache.fetchPackageFromCache(e,o,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${Y.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the disk`),loader:()=>this.fetchFromDisk(e,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:Y.getIdentVendorPath(e),localPath:this.getLocalPath(e,r),checksum:c}}async fetchFromDisk(e,r){return RP(e,{protocol:ls,fetchOptions:r})}};$e();$e();var Tdt=2,j1=class{supportsDescriptor(e,r){return e.range.match(UE)?!0:!!e.range.startsWith(ls)}supportsLocator(e,r){return!!e.reference.startsWith(ls)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,o){return UE.test(e.range)&&(e=Y.makeDescriptor(e,`${ls}${e.range}`)),Y.bindDescriptor(e,{locator:Y.stringifyLocator(r)})}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,o){if(!o.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let{path:a,parentLocator:n}=l6(e.range);if(n===null)throw new Error("Assertion failed: The descriptor should have been bound");let c=await u6(Y.makeLocator(e,Y.makeRange({protocol:ls,source:a,selector:a,params:{locator:Y.stringifyLocator(n)}})),{protocol:ls,fetchOptions:o.fetchOptions}),f=Oi.makeHash(`${Tdt}`,c).slice(0,6);return[c6(e,{parentLocator:n,path:a,folderHash:f,protocol:ls})]}async getSatisfying(e,r,o,a){let[n]=await this.getCandidates(e,r,a);return{locators:o.filter(c=>c.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){if(!r.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let o=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),a=await Ze.releaseAfterUseAsync(async()=>await Gt.find(o.prefixPath,{baseFs:o.packageFs}),o.releaseFs);return{...e,version:a.version||"0.0.0",languageName:a.languageName||r.project.configuration.get("defaultLanguageName"),linkType:"HARD",conditions:a.getConditions(),dependencies:r.project.configuration.normalizeDependencyMap(a.dependencies),peerDependencies:a.peerDependencies,dependenciesMeta:a.dependenciesMeta,peerDependenciesMeta:a.peerDependenciesMeta,bin:a.bin}}};$e();Ft();var Y1=class{supports(e,r){return H1.test(e.reference)?!!e.reference.startsWith(ls):!1}getLocalPath(e,r){return null}async fetch(e,r){let o=r.checksums.get(e.locatorHash)||null,[a,n,c]=await r.cache.fetchPackageFromCache(e,o,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${Y.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the disk`),loader:()=>this.fetchFromDisk(e,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:Y.getIdentVendorPath(e),checksum:c}}async fetchFromDisk(e,r){let{parentLocator:o,path:a}=Y.parseFileStyleRange(e.reference,{protocol:ls}),n=ee.isAbsolute(a)?{packageFs:new Qn(Bt.root),prefixPath:Bt.dot,localPath:Bt.root}:await r.fetcher.fetch(o,r),c=n.localPath?{packageFs:new Qn(Bt.root),prefixPath:ee.relative(Bt.root,n.localPath)}:n;n!==c&&n.releaseFs&&n.releaseFs();let f=c.packageFs,g=ee.join(c.prefixPath,a),p=await f.readFilePromise(g);return await Ze.releaseAfterUseAsync(async()=>await ys.convertToZip(p,{compressionLevel:r.project.configuration.get("compressionLevel"),prefixPath:Y.getIdentVendorPath(e),stripComponents:1}),c.releaseFs)}};$e();$e();Ft();var W1=class{supportsDescriptor(e,r){return H1.test(e.range)?!!(e.range.startsWith(ls)||UE.test(e.range)):!1}supportsLocator(e,r){return H1.test(e.reference)?!!e.reference.startsWith(ls):!1}shouldPersistResolution(e,r){return!0}bindDescriptor(e,r,o){return UE.test(e.range)&&(e=Y.makeDescriptor(e,`${ls}${e.range}`)),Y.bindDescriptor(e,{locator:Y.stringifyLocator(r)})}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,o){let a=e.range.startsWith(ls)?e.range.slice(ls.length):e.range;return[Y.makeLocator(e,`${ls}${me.toPortablePath(a)}`)]}async getSatisfying(e,r,o,a){let[n]=await this.getCandidates(e,r,a);return{locators:o.filter(c=>c.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){if(!r.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let o=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),a=await Ze.releaseAfterUseAsync(async()=>await Gt.find(o.prefixPath,{baseFs:o.packageFs}),o.releaseFs);return{...e,version:a.version||"0.0.0",languageName:a.languageName||r.project.configuration.get("defaultLanguageName"),linkType:"HARD",conditions:a.getConditions(),dependencies:r.project.configuration.normalizeDependencyMap(a.dependencies),peerDependencies:a.peerDependencies,dependenciesMeta:a.dependenciesMeta,peerDependenciesMeta:a.peerDependenciesMeta,bin:a.bin}}};var Ndt={fetchers:[Y1,G1],resolvers:[W1,j1]},Mdt=Ndt;var h6={};tr(h6,{GithubFetcher:()=>J1,default:()=>Odt,githubUtils:()=>TP});$e();Ft();var TP={};tr(TP,{invalidGithubUrlMessage:()=>yye,isGithubUrl:()=>g6,parseGithubUrl:()=>p6});var dye=be(Ie("querystring")),mye=[/^https?:\/\/(?:([^/]+?)@)?github.com\/([^/#]+)\/([^/#]+)\/tarball\/([^/#]+)(?:#(.*))?$/,/^https?:\/\/(?:([^/]+?)@)?github.com\/([^/#]+)\/([^/#]+?)(?:\.git)?(?:#(.*))?$/];function g6(t){return t?mye.some(e=>!!t.match(e)):!1}function p6(t){let e;for(let f of mye)if(e=t.match(f),e)break;if(!e)throw new Error(yye(t));let[,r,o,a,n="master"]=e,{commit:c}=dye.default.parse(n);return n=c||n.replace(/[^:]*:/,""),{auth:r,username:o,reponame:a,treeish:n}}function yye(t){return`Input cannot be parsed as a valid GitHub URL ('${t}').`}var J1=class{supports(e,r){return!!g6(e.reference)}getLocalPath(e,r){return null}async fetch(e,r){let o=r.checksums.get(e.locatorHash)||null,[a,n,c]=await r.cache.fetchPackageFromCache(e,o,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${Y.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from GitHub`),loader:()=>this.fetchFromNetwork(e,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:Y.getIdentVendorPath(e),checksum:c}}async fetchFromNetwork(e,r){let o=await Hn.get(this.getLocatorUrl(e,r),{configuration:r.project.configuration});return await ge.mktempPromise(async a=>{let n=new Qn(a);await ys.extractArchiveTo(o,n,{stripComponents:1});let c=Ia.splitRepoUrl(e.reference),f=ee.join(a,"package.tgz");await En.prepareExternalProject(a,f,{configuration:r.project.configuration,report:r.report,workspace:c.extra.workspace,locator:e});let g=await ge.readFilePromise(f);return await ys.convertToZip(g,{compressionLevel:r.project.configuration.get("compressionLevel"),prefixPath:Y.getIdentVendorPath(e),stripComponents:1})})}getLocatorUrl(e,r){let{auth:o,username:a,reponame:n,treeish:c}=p6(e.reference);return`https://${o?`${o}@`:""}github.com/${a}/${n}/archive/${c}.tar.gz`}};var Ldt={hooks:{async fetchHostedRepository(t,e,r){if(t!==null)return t;let o=new J1;if(!o.supports(e,r))return null;try{return await o.fetch(e,r)}catch{return null}}}},Odt=Ldt;var d6={};tr(d6,{TarballHttpFetcher:()=>X1,TarballHttpResolver:()=>Z1,default:()=>Kdt});$e();var V1=/^[^?]*\.(?:tar\.gz|tgz)(?:\?.*)?$/,z1=/^https?:/;var X1=class{supports(e,r){return V1.test(e.reference)?!!z1.test(e.reference):!1}getLocalPath(e,r){return null}async fetch(e,r){let o=r.checksums.get(e.locatorHash)||null,[a,n,c]=await r.cache.fetchPackageFromCache(e,o,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${Y.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the remote server`),loader:()=>this.fetchFromNetwork(e,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:Y.getIdentVendorPath(e),checksum:c}}async fetchFromNetwork(e,r){let o=await Hn.get(e.reference,{configuration:r.project.configuration});return await ys.convertToZip(o,{compressionLevel:r.project.configuration.get("compressionLevel"),prefixPath:Y.getIdentVendorPath(e),stripComponents:1})}};$e();$e();var Z1=class{supportsDescriptor(e,r){return V1.test(e.range)?!!z1.test(e.range):!1}supportsLocator(e,r){return V1.test(e.reference)?!!z1.test(e.reference):!1}shouldPersistResolution(e,r){return!0}bindDescriptor(e,r,o){return e}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,o){return[Y.convertDescriptorToLocator(e)]}async getSatisfying(e,r,o,a){let[n]=await this.getCandidates(e,r,a);return{locators:o.filter(c=>c.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){if(!r.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let o=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),a=await Ze.releaseAfterUseAsync(async()=>await Gt.find(o.prefixPath,{baseFs:o.packageFs}),o.releaseFs);return{...e,version:a.version||"0.0.0",languageName:a.languageName||r.project.configuration.get("defaultLanguageName"),linkType:"HARD",conditions:a.getConditions(),dependencies:r.project.configuration.normalizeDependencyMap(a.dependencies),peerDependencies:a.peerDependencies,dependenciesMeta:a.dependenciesMeta,peerDependenciesMeta:a.peerDependenciesMeta,bin:a.bin}}};var Udt={fetchers:[X1],resolvers:[Z1]},Kdt=Udt;var y6={};tr(y6,{InitCommand:()=>Yh,default:()=>Hdt});$e();$e();Ft();var Lu=be(Vt()),m6=Ie("util"),Yh=class extends gt{constructor(){super(...arguments);this.private=Lu.Option.Boolean("-p,--private",!1,{description:"Initialize a private package"});this.workspace=Lu.Option.Boolean("-w,--workspace",!1,{description:"Initialize a workspace root with a `packages/` directory"});this.install=Lu.Option.String("-i,--install",!1,{tolerateBoolean:!0,description:"Initialize a package with a specific bundle that will be locked in the project"});this.usev2=Lu.Option.Boolean("-2",!1,{hidden:!0});this.yes=Lu.Option.Boolean("-y,--yes",{hidden:!0})}async execute(){let r=await rt.find(this.context.cwd,this.context.plugins),o=typeof this.install=="string"?this.install:this.usev2||this.install===!0?"latest":null;return o!==null?await this.executeProxy(r,o):await this.executeRegular(r)}async executeProxy(r,o){if(r.projectCwd!==null&&r.projectCwd!==this.context.cwd)throw new Lu.UsageError("Cannot use the --install flag from within a project subdirectory");ge.existsSync(this.context.cwd)||await ge.mkdirPromise(this.context.cwd,{recursive:!0});let a=ee.join(this.context.cwd,r.get("lockfileFilename"));ge.existsSync(a)||await ge.writeFilePromise(a,"");let n=await this.cli.run(["set","version",o],{quiet:!0});if(n!==0)return n;let c=[];return this.private&&c.push("-p"),this.workspace&&c.push("-w"),this.yes&&c.push("-y"),await ge.mktempPromise(async f=>{let{code:g}=await pn.pipevp("yarn",["init",...c],{cwd:this.context.cwd,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr,env:await En.makeScriptEnv({binFolder:f})});return g})}async executeRegular(r){let o=null;try{o=(await xt.find(r,this.context.cwd)).project}catch{o=null}ge.existsSync(this.context.cwd)||await ge.mkdirPromise(this.context.cwd,{recursive:!0});let a=await Gt.tryFind(this.context.cwd)||new Gt,n=Object.fromEntries(r.get("initFields").entries());a.load(n),a.name=a.name??Y.makeIdent(r.get("initScope"),ee.basename(this.context.cwd)),a.packageManager=ei&&Ze.isTaggedYarnVersion(ei)?`yarn@${ei}`:null,typeof a.raw.private>"u"&&(this.private||this.workspace&&a.workspaceDefinitions.length===0)&&(a.private=!0),this.workspace&&a.workspaceDefinitions.length===0&&(await ge.mkdirPromise(ee.join(this.context.cwd,"packages"),{recursive:!0}),a.workspaceDefinitions=[{pattern:"packages/*"}]);let c={};a.exportTo(c),m6.inspect.styles.name="cyan",this.context.stdout.write(`${(0,m6.inspect)(c,{depth:1/0,colors:!0,compact:!1})} -`);let f=ee.join(this.context.cwd,Gt.fileName);await ge.changeFilePromise(f,`${JSON.stringify(c,null,2)} -`,{automaticNewlines:!0});let g=ee.join(this.context.cwd,"README.md");if(ge.existsSync(g)||await ge.writeFilePromise(g,`# ${Y.stringifyIdent(a.name)} -`),!o||o.cwd===this.context.cwd){let p=ee.join(this.context.cwd,Xr.lockfile);ge.existsSync(p)||await ge.writeFilePromise(p,"");let B=[".yarn/*","!.yarn/patches","!.yarn/plugins","!.yarn/releases","!.yarn/sdks","!.yarn/versions","","# Swap the comments on the following lines if you wish to use zero-installs","# Also don't forget to run `yarn config set enableGlobalCache false`!","# Documentation here: https://yarnpkg.com/features/zero-installs","","#!.yarn/cache",".pnp.*"].map(U=>`${U} -`).join(""),Q=ee.join(this.context.cwd,".gitignore");ge.existsSync(Q)||await ge.writeFilePromise(Q,B);let x={["*"]:{endOfLine:"lf",insertFinalNewline:!0},["*.{js,json,yml}"]:{charset:"utf-8",indentStyle:"space",indentSize:2}};Ze.mergeIntoTarget(x,r.get("initEditorConfig"));let C=`root = true -`;for(let[U,H]of Object.entries(x)){C+=` -[${U}] -`;for(let[X,ie]of Object.entries(H))C+=`${X.replace(/[A-Z]/g,ye=>`_${ye.toLowerCase()}`)} = ${ie} -`}let N=ee.join(this.context.cwd,".editorconfig");ge.existsSync(N)||await ge.writeFilePromise(N,C),ge.existsSync(ee.join(this.context.cwd,".git"))||await pn.execvp("git",["init"],{cwd:this.context.cwd})}}};Yh.paths=[["init"]],Yh.usage=Lu.Command.Usage({description:"create a new package",details:"\n This command will setup a new package in your local directory.\n\n If the `-p,--private` or `-w,--workspace` options are set, the package will be private by default.\n\n If the `-w,--workspace` option is set, the package will be configured to accept a set of workspaces in the `packages/` directory.\n\n If the `-i,--install` option is given a value, Yarn will first download it using `yarn set version` and only then forward the init call to the newly downloaded bundle. Without arguments, the downloaded bundle will be `latest`.\n\n The initial settings of the manifest can be changed by using the `initScope` and `initFields` configuration values. Additionally, Yarn will generate an EditorConfig file whose rules can be altered via `initEditorConfig`, and will initialize a Git repository in the current directory.\n ",examples:[["Create a new package in the local directory","yarn init"],["Create a new private package in the local directory","yarn init -p"],["Create a new package and store the Yarn release inside","yarn init -i=latest"],["Create a new private package and defines it as a workspace root","yarn init -w"]]});var _dt={configuration:{initScope:{description:"Scope used when creating packages via the init command",type:"STRING",default:null},initFields:{description:"Additional fields to set when creating packages via the init command",type:"MAP",valueDefinition:{description:"",type:"ANY"}},initEditorConfig:{description:"Extra rules to define in the generator editorconfig",type:"MAP",valueDefinition:{description:"",type:"ANY"}}},commands:[Yh]},Hdt=_dt;var Eq={};tr(Eq,{SearchCommand:()=>Xh,UpgradeInteractiveCommand:()=>$h,default:()=>Cwt});$e();var Cye=be(Ie("os"));function KE({stdout:t}){if(Cye.default.endianness()==="BE")throw new Error("Interactive commands cannot be used on big-endian systems because ink depends on yoga-layout-prebuilt which only supports little-endian architectures");if(!t.isTTY)throw new Error("Interactive commands can only be used inside a TTY environment")}var tBe=be(Vt());var xCe=be(M6()),L6={appId:"OFCNCOG2CU",apiKey:"6fe4476ee5a1832882e326b506d14126",indexName:"npm-search"},kyt=(0,xCe.default)(L6.appId,L6.apiKey).initIndex(L6.indexName),O6=async(t,e=0)=>await kyt.search(t,{analyticsTags:["yarn-plugin-interactive-tools"],attributesToRetrieve:["name","version","owner","repository","humanDownloadsLast30Days"],page:e,hitsPerPage:10});var z2=["regular","dev","peer"],Xh=class extends gt{async execute(){KE(this.context);let{Gem:e}=await Promise.resolve().then(()=>(Qb(),lq)),{ScrollableItems:r}=await Promise.resolve().then(()=>(kb(),Sb)),{useKeypress:o}=await Promise.resolve().then(()=>(W2(),Gwe)),{useMinistore:a}=await Promise.resolve().then(()=>(hq(),pq)),{renderForm:n}=await Promise.resolve().then(()=>(Fb(),bb)),{default:c}=await Promise.resolve().then(()=>be(eBe())),{Box:f,Text:g}=await Promise.resolve().then(()=>be(Nl())),{default:p,useEffect:E,useState:B}=await Promise.resolve().then(()=>be(dn())),Q=await rt.find(this.context.cwd,this.context.plugins),x=()=>p.createElement(f,{flexDirection:"row"},p.createElement(f,{flexDirection:"column",width:48},p.createElement(f,null,p.createElement(g,null,"Press ",p.createElement(g,{bold:!0,color:"cyanBright"},""),"/",p.createElement(g,{bold:!0,color:"cyanBright"},"")," to move between packages.")),p.createElement(f,null,p.createElement(g,null,"Press ",p.createElement(g,{bold:!0,color:"cyanBright"},"")," to select a package.")),p.createElement(f,null,p.createElement(g,null,"Press ",p.createElement(g,{bold:!0,color:"cyanBright"},"")," again to change the target."))),p.createElement(f,{flexDirection:"column"},p.createElement(f,{marginLeft:1},p.createElement(g,null,"Press ",p.createElement(g,{bold:!0,color:"cyanBright"},"")," to install the selected packages.")),p.createElement(f,{marginLeft:1},p.createElement(g,null,"Press ",p.createElement(g,{bold:!0,color:"cyanBright"},"")," to abort.")))),C=()=>p.createElement(p.Fragment,null,p.createElement(f,{width:15},p.createElement(g,{bold:!0,underline:!0,color:"gray"},"Owner")),p.createElement(f,{width:11},p.createElement(g,{bold:!0,underline:!0,color:"gray"},"Version")),p.createElement(f,{width:10},p.createElement(g,{bold:!0,underline:!0,color:"gray"},"Downloads"))),N=()=>p.createElement(f,{width:17},p.createElement(g,{bold:!0,underline:!0,color:"gray"},"Target")),U=({hit:pe,active:Ee})=>{let[ke,h]=a(pe.name,null);o({active:Ee},(Be,le)=>{if(le.name!=="space")return;if(!ke){h(z2[0]);return}let re=z2.indexOf(ke)+1;re===z2.length?h(null):h(z2[re])},[ke,h]);let Ke=Y.parseIdent(pe.name),Ce=Y.prettyIdent(Q,Ke);return p.createElement(f,null,p.createElement(f,{width:45},p.createElement(g,{bold:!0,wrap:"wrap"},Ce)),p.createElement(f,{width:14,marginLeft:1},p.createElement(g,{bold:!0,wrap:"truncate"},pe.owner.name)),p.createElement(f,{width:10,marginLeft:1},p.createElement(g,{italic:!0,wrap:"truncate"},pe.version)),p.createElement(f,{width:16,marginLeft:1},p.createElement(g,null,pe.humanDownloadsLast30Days)))},H=({name:pe,active:Ee})=>{let[ke]=a(pe,null),h=Y.parseIdent(pe);return p.createElement(f,null,p.createElement(f,{width:47},p.createElement(g,{bold:!0}," - ",Y.prettyIdent(Q,h))),z2.map(Ke=>p.createElement(f,{key:Ke,width:14,marginLeft:1},p.createElement(g,null," ",p.createElement(e,{active:ke===Ke})," ",p.createElement(g,{bold:!0},Ke)))))},X=()=>p.createElement(f,{marginTop:1},p.createElement(g,null,"Powered by Algolia.")),fe=await n(({useSubmit:pe})=>{let Ee=a();pe(Ee);let ke=Array.from(Ee.keys()).filter(q=>Ee.get(q)!==null),[h,Ke]=B(""),[Ce,Be]=B(0),[le,re]=B([]),Se=q=>{q.match(/\t| /)||Ke(q)},Ue=async()=>{Be(0);let q=await O6(h);q.query===h&&re(q.hits)},dt=async()=>{let q=await O6(h,Ce+1);q.query===h&&q.page-1===Ce&&(Be(q.page),re([...le,...q.hits]))};return E(()=>{h?Ue():re([])},[h]),p.createElement(f,{flexDirection:"column"},p.createElement(x,null),p.createElement(f,{flexDirection:"row",marginTop:1},p.createElement(g,{bold:!0},"Search: "),p.createElement(f,{width:41},p.createElement(c,{value:h,onChange:Se,placeholder:"i.e. babel, webpack, react...",showCursor:!1})),p.createElement(C,null)),le.length?p.createElement(r,{radius:2,loop:!1,children:le.map(q=>p.createElement(U,{key:q.name,hit:q,active:!1})),willReachEnd:dt}):p.createElement(g,{color:"gray"},"Start typing..."),p.createElement(f,{flexDirection:"row",marginTop:1},p.createElement(f,{width:49},p.createElement(g,{bold:!0},"Selected:")),p.createElement(N,null)),ke.length?ke.map(q=>p.createElement(H,{key:q,name:q,active:!1})):p.createElement(g,{color:"gray"},"No selected packages..."),p.createElement(X,null))},{},{stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr});if(typeof fe>"u")return 1;let ye=Array.from(fe.keys()).filter(pe=>fe.get(pe)==="regular"),Qe=Array.from(fe.keys()).filter(pe=>fe.get(pe)==="dev"),Pe=Array.from(fe.keys()).filter(pe=>fe.get(pe)==="peer");return ye.length&&await this.cli.run(["add",...ye]),Qe.length&&await this.cli.run(["add","--dev",...Qe]),Pe&&await this.cli.run(["add","--peer",...Pe]),0}};Xh.paths=[["search"]],Xh.usage=tBe.Command.Usage({category:"Interactive commands",description:"open the search interface",details:` - This command opens a fullscreen terminal interface where you can search for and install packages from the npm registry. - `,examples:[["Open the search window","yarn search"]]});$e();var ABe=be(Vt());Z8();var lBe=be(wi()),aBe=/^((?:[\^~]|>=?)?)([0-9]+)(\.[0-9]+)(\.[0-9]+)((?:-\S+)?)$/,cBe=(t,e)=>t.length>0?[t.slice(0,e)].concat(cBe(t.slice(e),e)):[],$h=class extends gt{async execute(){KE(this.context);let{ItemOptions:e}=await Promise.resolve().then(()=>(oBe(),sBe)),{Pad:r}=await Promise.resolve().then(()=>(Cq(),iBe)),{ScrollableItems:o}=await Promise.resolve().then(()=>(kb(),Sb)),{useMinistore:a}=await Promise.resolve().then(()=>(hq(),pq)),{renderForm:n}=await Promise.resolve().then(()=>(Fb(),bb)),{Box:c,Text:f}=await Promise.resolve().then(()=>be(Nl())),{default:g,useEffect:p,useRef:E,useState:B}=await Promise.resolve().then(()=>be(dn())),Q=await rt.find(this.context.cwd,this.context.plugins),{project:x,workspace:C}=await xt.find(Q,this.context.cwd),N=await $r.find(Q);if(!C)throw new lr(x.cwd,this.context.cwd);await x.restoreInstallState({restoreResolutions:!1});let U=this.context.stdout.rows-7,H=(Ce,Be)=>{let le=ipe(Ce,Be),re="";for(let Se of le)Se.added?re+=Ne.pretty(Q,Se.value,"green"):Se.removed||(re+=Se.value);return re},X=(Ce,Be)=>{if(Ce===Be)return Be;let le=Y.parseRange(Ce),re=Y.parseRange(Be),Se=le.selector.match(aBe),Ue=re.selector.match(aBe);if(!Se||!Ue)return H(Ce,Be);let dt=["gray","red","yellow","green","magenta"],q=null,Qt="";for(let He=1;He{let re=await Ec.fetchDescriptorFrom(Ce,le,{project:x,cache:N,preserveModifier:Be,workspace:C});return re!==null?re.range:Ce.range},fe=async Ce=>{let Be=lBe.default.valid(Ce.range)?`^${Ce.range}`:Ce.range,[le,re]=await Promise.all([ie(Ce,Ce.range,Be).catch(()=>null),ie(Ce,Ce.range,"latest").catch(()=>null)]),Se=[{value:null,label:Ce.range}];return le&&le!==Ce.range?Se.push({value:le,label:X(Ce.range,le)}):Se.push({value:null,label:""}),re&&re!==le&&re!==Ce.range?Se.push({value:re,label:X(Ce.range,re)}):Se.push({value:null,label:""}),Se},ye=()=>g.createElement(c,{flexDirection:"row"},g.createElement(c,{flexDirection:"column",width:49},g.createElement(c,{marginLeft:1},g.createElement(f,null,"Press ",g.createElement(f,{bold:!0,color:"cyanBright"},""),"/",g.createElement(f,{bold:!0,color:"cyanBright"},"")," to select packages.")),g.createElement(c,{marginLeft:1},g.createElement(f,null,"Press ",g.createElement(f,{bold:!0,color:"cyanBright"},""),"/",g.createElement(f,{bold:!0,color:"cyanBright"},"")," to select versions."))),g.createElement(c,{flexDirection:"column"},g.createElement(c,{marginLeft:1},g.createElement(f,null,"Press ",g.createElement(f,{bold:!0,color:"cyanBright"},"")," to install.")),g.createElement(c,{marginLeft:1},g.createElement(f,null,"Press ",g.createElement(f,{bold:!0,color:"cyanBright"},"")," to abort.")))),Qe=()=>g.createElement(c,{flexDirection:"row",paddingTop:1,paddingBottom:1},g.createElement(c,{width:50},g.createElement(f,{bold:!0},g.createElement(f,{color:"greenBright"},"?")," Pick the packages you want to upgrade.")),g.createElement(c,{width:17},g.createElement(f,{bold:!0,underline:!0,color:"gray"},"Current")),g.createElement(c,{width:17},g.createElement(f,{bold:!0,underline:!0,color:"gray"},"Range")),g.createElement(c,{width:17},g.createElement(f,{bold:!0,underline:!0,color:"gray"},"Latest"))),Pe=({active:Ce,descriptor:Be,suggestions:le})=>{let[re,Se]=a(Be.descriptorHash,null),Ue=Y.stringifyIdent(Be),dt=Math.max(0,45-Ue.length);return g.createElement(g.Fragment,null,g.createElement(c,null,g.createElement(c,{width:45},g.createElement(f,{bold:!0},Y.prettyIdent(Q,Be)),g.createElement(r,{active:Ce,length:dt})),g.createElement(e,{active:Ce,options:le,value:re,skewer:!0,onChange:Se,sizes:[17,17,17]})))},pe=({dependencies:Ce})=>{let[Be,le]=B(Ce.map(()=>null)),re=E(!0),Se=async Ue=>{let dt=await fe(Ue);return dt.filter(q=>q.label!=="").length<=1?null:{descriptor:Ue,suggestions:dt}};return p(()=>()=>{re.current=!1},[]),p(()=>{let Ue=Math.trunc(U*1.75),dt=Ce.slice(0,Ue),q=Ce.slice(Ue),Qt=cBe(q,U),He=dt.map(Se).reduce(async(qe,Fe)=>{await qe;let je=await Fe;je!==null&&(!re.current||le(We=>{let pt=We.findIndex(k=>k===null),Oe=[...We];return Oe[pt]=je,Oe}))},Promise.resolve());Qt.reduce((qe,Fe)=>Promise.all(Fe.map(je=>Promise.resolve().then(()=>Se(je)))).then(async je=>{je=je.filter(We=>We!==null),await qe,re.current&&le(We=>{let pt=We.findIndex(Oe=>Oe===null);return We.slice(0,pt).concat(je).concat(We.slice(pt+je.length))})}),He).then(()=>{re.current&&le(qe=>qe.filter(Fe=>Fe!==null))})},[]),Be.length?g.createElement(o,{radius:U>>1,children:Be.map((Ue,dt)=>Ue!==null?g.createElement(Pe,{key:dt,active:!1,descriptor:Ue.descriptor,suggestions:Ue.suggestions}):g.createElement(f,{key:dt},"Loading..."))}):g.createElement(f,null,"No upgrades found")},ke=await n(({useSubmit:Ce})=>{Ce(a());let Be=new Map;for(let re of x.workspaces)for(let Se of["dependencies","devDependencies"])for(let Ue of re.manifest[Se].values())x.tryWorkspaceByDescriptor(Ue)===null&&Be.set(Ue.descriptorHash,Ue);let le=Ze.sortMap(Be.values(),re=>Y.stringifyDescriptor(re));return g.createElement(c,{flexDirection:"column"},g.createElement(ye,null),g.createElement(Qe,null),g.createElement(pe,{dependencies:le}))},{},{stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr});if(typeof ke>"u")return 1;let h=!1;for(let Ce of x.workspaces)for(let Be of["dependencies","devDependencies"]){let le=Ce.manifest[Be];for(let re of le.values()){let Se=ke.get(re.descriptorHash);typeof Se<"u"&&Se!==null&&(le.set(re.identHash,Y.makeDescriptor(re,Se)),h=!0)}}return h?(await St.start({configuration:Q,stdout:this.context.stdout,includeLogs:!this.context.quiet},async Ce=>{await x.install({cache:N,report:Ce})})).exitCode():0}};$h.paths=[["upgrade-interactive"]],$h.usage=ABe.Command.Usage({category:"Interactive commands",description:"open the upgrade interface",details:` - This command opens a fullscreen terminal interface where you can see any out of date packages used by your application, their status compared to the latest versions available on the remote registry, and select packages to upgrade. - `,examples:[["Open the upgrade window","yarn upgrade-interactive"]]});var ywt={commands:[Xh,$h]},Cwt=ywt;var Iq={};tr(Iq,{LinkFetcher:()=>Z2,LinkResolver:()=>$2,PortalFetcher:()=>eQ,PortalResolver:()=>tQ,default:()=>Iwt});$e();Ft();var Bg="portal:",Qg="link:";var Z2=class{supports(e,r){return!!e.reference.startsWith(Qg)}getLocalPath(e,r){let{parentLocator:o,path:a}=Y.parseFileStyleRange(e.reference,{protocol:Qg});if(ee.isAbsolute(a))return a;let n=r.fetcher.getLocalPath(o,r);return n===null?null:ee.resolve(n,a)}async fetch(e,r){let{parentLocator:o,path:a}=Y.parseFileStyleRange(e.reference,{protocol:Qg}),n=ee.isAbsolute(a)?{packageFs:new Qn(Bt.root),prefixPath:Bt.dot,localPath:Bt.root}:await r.fetcher.fetch(o,r),c=n.localPath?{packageFs:new Qn(Bt.root),prefixPath:ee.relative(Bt.root,n.localPath),localPath:Bt.root}:n;n!==c&&n.releaseFs&&n.releaseFs();let f=c.packageFs,g=ee.resolve(c.localPath??c.packageFs.getRealPath(),c.prefixPath,a);return n.localPath?{packageFs:new Qn(g,{baseFs:f}),releaseFs:c.releaseFs,prefixPath:Bt.dot,discardFromLookup:!0,localPath:g}:{packageFs:new Au(g,{baseFs:f}),releaseFs:c.releaseFs,prefixPath:Bt.dot,discardFromLookup:!0}}};$e();Ft();var $2=class{supportsDescriptor(e,r){return!!e.range.startsWith(Qg)}supportsLocator(e,r){return!!e.reference.startsWith(Qg)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,o){return Y.bindDescriptor(e,{locator:Y.stringifyLocator(r)})}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,o){let a=e.range.slice(Qg.length);return[Y.makeLocator(e,`${Qg}${me.toPortablePath(a)}`)]}async getSatisfying(e,r,o,a){let[n]=await this.getCandidates(e,r,a);return{locators:o.filter(c=>c.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){return{...e,version:"0.0.0",languageName:r.project.configuration.get("defaultLanguageName"),linkType:"SOFT",conditions:null,dependencies:new Map,peerDependencies:new Map,dependenciesMeta:new Map,peerDependenciesMeta:new Map,bin:new Map}}};$e();Ft();var eQ=class{supports(e,r){return!!e.reference.startsWith(Bg)}getLocalPath(e,r){let{parentLocator:o,path:a}=Y.parseFileStyleRange(e.reference,{protocol:Bg});if(ee.isAbsolute(a))return a;let n=r.fetcher.getLocalPath(o,r);return n===null?null:ee.resolve(n,a)}async fetch(e,r){let{parentLocator:o,path:a}=Y.parseFileStyleRange(e.reference,{protocol:Bg}),n=ee.isAbsolute(a)?{packageFs:new Qn(Bt.root),prefixPath:Bt.dot,localPath:Bt.root}:await r.fetcher.fetch(o,r),c=n.localPath?{packageFs:new Qn(Bt.root),prefixPath:ee.relative(Bt.root,n.localPath),localPath:Bt.root}:n;n!==c&&n.releaseFs&&n.releaseFs();let f=c.packageFs,g=ee.resolve(c.localPath??c.packageFs.getRealPath(),c.prefixPath,a);return n.localPath?{packageFs:new Qn(g,{baseFs:f}),releaseFs:c.releaseFs,prefixPath:Bt.dot,localPath:g}:{packageFs:new Au(g,{baseFs:f}),releaseFs:c.releaseFs,prefixPath:Bt.dot}}};$e();$e();Ft();var tQ=class{supportsDescriptor(e,r){return!!e.range.startsWith(Bg)}supportsLocator(e,r){return!!e.reference.startsWith(Bg)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,o){return Y.bindDescriptor(e,{locator:Y.stringifyLocator(r)})}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,o){let a=e.range.slice(Bg.length);return[Y.makeLocator(e,`${Bg}${me.toPortablePath(a)}`)]}async getSatisfying(e,r,o,a){let[n]=await this.getCandidates(e,r,a);return{locators:o.filter(c=>c.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){if(!r.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let o=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),a=await Ze.releaseAfterUseAsync(async()=>await Gt.find(o.prefixPath,{baseFs:o.packageFs}),o.releaseFs);return{...e,version:a.version||"0.0.0",languageName:a.languageName||r.project.configuration.get("defaultLanguageName"),linkType:"SOFT",conditions:a.getConditions(),dependencies:r.project.configuration.normalizeDependencyMap(a.dependencies),peerDependencies:a.peerDependencies,dependenciesMeta:a.dependenciesMeta,peerDependenciesMeta:a.peerDependenciesMeta,bin:a.bin}}};var Ewt={fetchers:[Z2,eQ],resolvers:[$2,tQ]},Iwt=Ewt;var tG={};tr(tG,{NodeModulesLinker:()=>pQ,NodeModulesMode:()=>Xq,PnpLooseLinker:()=>hQ,default:()=>TBt});Ft();$e();Ft();Ft();var Bq=(t,e)=>`${t}@${e}`,uBe=(t,e)=>{let r=e.indexOf("#"),o=r>=0?e.substring(r+1):e;return Bq(t,o)};var pBe=(t,e={})=>{let r=e.debugLevel||Number(process.env.NM_DEBUG_LEVEL||-1),o=e.check||r>=9,a=e.hoistingLimits||new Map,n={check:o,debugLevel:r,hoistingLimits:a,fastLookupPossible:!0},c;n.debugLevel>=0&&(c=Date.now());let f=kwt(t,n),g=!1,p=0;do g=Qq(f,[f],new Set([f.locator]),new Map,n).anotherRoundNeeded,n.fastLookupPossible=!1,p++;while(g);if(n.debugLevel>=0&&console.log(`hoist time: ${Date.now()-c}ms, rounds: ${p}`),n.debugLevel>=1){let E=rQ(f);if(Qq(f,[f],new Set([f.locator]),new Map,n).isGraphChanged)throw new Error(`The hoisting result is not terminal, prev tree: -${E}, next tree: -${rQ(f)}`);let Q=hBe(f);if(Q)throw new Error(`${Q}, after hoisting finished: -${rQ(f)}`)}return n.debugLevel>=2&&console.log(rQ(f)),xwt(f)},wwt=t=>{let e=t[t.length-1],r=new Map,o=new Set,a=n=>{if(!o.has(n)){o.add(n);for(let c of n.hoistedDependencies.values())r.set(c.name,c);for(let c of n.dependencies.values())n.peerNames.has(c.name)||a(c)}};return a(e),r},Bwt=t=>{let e=t[t.length-1],r=new Map,o=new Set,a=new Set,n=(c,f)=>{if(o.has(c))return;o.add(c);for(let p of c.hoistedDependencies.values())if(!f.has(p.name)){let E;for(let B of t)E=B.dependencies.get(p.name),E&&r.set(E.name,E)}let g=new Set;for(let p of c.dependencies.values())g.add(p.name);for(let p of c.dependencies.values())c.peerNames.has(p.name)||n(p,g)};return n(e,a),r},fBe=(t,e)=>{if(e.decoupled)return e;let{name:r,references:o,ident:a,locator:n,dependencies:c,originalDependencies:f,hoistedDependencies:g,peerNames:p,reasons:E,isHoistBorder:B,hoistPriority:Q,dependencyKind:x,hoistedFrom:C,hoistedTo:N}=e,U={name:r,references:new Set(o),ident:a,locator:n,dependencies:new Map(c),originalDependencies:new Map(f),hoistedDependencies:new Map(g),peerNames:new Set(p),reasons:new Map(E),decoupled:!0,isHoistBorder:B,hoistPriority:Q,dependencyKind:x,hoistedFrom:new Map(C),hoistedTo:new Map(N)},H=U.dependencies.get(r);return H&&H.ident==U.ident&&U.dependencies.set(r,U),t.dependencies.set(U.name,U),U},Qwt=(t,e)=>{let r=new Map([[t.name,[t.ident]]]);for(let a of t.dependencies.values())t.peerNames.has(a.name)||r.set(a.name,[a.ident]);let o=Array.from(e.keys());o.sort((a,n)=>{let c=e.get(a),f=e.get(n);return f.hoistPriority!==c.hoistPriority?f.hoistPriority-c.hoistPriority:f.peerDependents.size!==c.peerDependents.size?f.peerDependents.size-c.peerDependents.size:f.dependents.size-c.dependents.size});for(let a of o){let n=a.substring(0,a.indexOf("@",1)),c=a.substring(n.length+1);if(!t.peerNames.has(n)){let f=r.get(n);f||(f=[],r.set(n,f)),f.indexOf(c)<0&&f.push(c)}}return r},wq=t=>{let e=new Set,r=(o,a=new Set)=>{if(!a.has(o)){a.add(o);for(let n of o.peerNames)if(!t.peerNames.has(n)){let c=t.dependencies.get(n);c&&!e.has(c)&&r(c,a)}e.add(o)}};for(let o of t.dependencies.values())t.peerNames.has(o.name)||r(o);return e},Qq=(t,e,r,o,a,n=new Set)=>{let c=e[e.length-1];if(n.has(c))return{anotherRoundNeeded:!1,isGraphChanged:!1};n.add(c);let f=Pwt(c),g=Qwt(c,f),p=t==c?new Map:a.fastLookupPossible?wwt(e):Bwt(e),E,B=!1,Q=!1,x=new Map(Array.from(g.entries()).map(([N,U])=>[N,U[0]])),C=new Map;do{let N=Swt(t,e,r,p,x,g,o,C,a);N.isGraphChanged&&(Q=!0),N.anotherRoundNeeded&&(B=!0),E=!1;for(let[U,H]of g)H.length>1&&!c.dependencies.has(U)&&(x.delete(U),H.shift(),x.set(U,H[0]),E=!0)}while(E);for(let N of c.dependencies.values())if(!c.peerNames.has(N.name)&&!r.has(N.locator)){r.add(N.locator);let U=Qq(t,[...e,N],r,C,a);U.isGraphChanged&&(Q=!0),U.anotherRoundNeeded&&(B=!0),r.delete(N.locator)}return{anotherRoundNeeded:B,isGraphChanged:Q}},vwt=t=>{for(let[e,r]of t.dependencies)if(!t.peerNames.has(e)&&r.ident!==t.ident)return!0;return!1},Dwt=(t,e,r,o,a,n,c,f,{outputReason:g,fastLookupPossible:p})=>{let E,B=null,Q=new Set;g&&(E=`${Array.from(e).map(U=>Io(U)).join("\u2192")}`);let x=r[r.length-1],N=!(o.ident===x.ident);if(g&&!N&&(B="- self-reference"),N&&(N=o.dependencyKind!==1,g&&!N&&(B="- workspace")),N&&o.dependencyKind===2&&(N=!vwt(o),g&&!N&&(B="- external soft link with unhoisted dependencies")),N&&(N=x.dependencyKind!==1||x.hoistedFrom.has(o.name)||e.size===1,g&&!N&&(B=x.reasons.get(o.name))),N&&(N=!t.peerNames.has(o.name),g&&!N&&(B=`- cannot shadow peer: ${Io(t.originalDependencies.get(o.name).locator)} at ${E}`)),N){let U=!1,H=a.get(o.name);if(U=!H||H.ident===o.ident,g&&!U&&(B=`- filled by: ${Io(H.locator)} at ${E}`),U)for(let X=r.length-1;X>=1;X--){let fe=r[X].dependencies.get(o.name);if(fe&&fe.ident!==o.ident){U=!1;let ye=f.get(x);ye||(ye=new Set,f.set(x,ye)),ye.add(o.name),g&&(B=`- filled by ${Io(fe.locator)} at ${r.slice(0,X).map(Qe=>Io(Qe.locator)).join("\u2192")}`);break}}N=U}if(N&&(N=n.get(o.name)===o.ident,g&&!N&&(B=`- filled by: ${Io(c.get(o.name)[0])} at ${E}`)),N){let U=!0,H=new Set(o.peerNames);for(let X=r.length-1;X>=1;X--){let ie=r[X];for(let fe of H){if(ie.peerNames.has(fe)&&ie.originalDependencies.has(fe))continue;let ye=ie.dependencies.get(fe);ye&&t.dependencies.get(fe)!==ye&&(X===r.length-1?Q.add(ye):(Q=null,U=!1,g&&(B=`- peer dependency ${Io(ye.locator)} from parent ${Io(ie.locator)} was not hoisted to ${E}`))),H.delete(fe)}if(!U)break}N=U}if(N&&!p)for(let U of o.hoistedDependencies.values()){let H=a.get(U.name)||t.dependencies.get(U.name);if(!H||U.ident!==H.ident){N=!1,g&&(B=`- previously hoisted dependency mismatch, needed: ${Io(U.locator)}, available: ${Io(H==null?void 0:H.locator)}`);break}}return Q!==null&&Q.size>0?{isHoistable:2,dependsOn:Q,reason:B}:{isHoistable:N?0:1,reason:B}},Rb=t=>`${t.name}@${t.locator}`,Swt=(t,e,r,o,a,n,c,f,g)=>{let p=e[e.length-1],E=new Set,B=!1,Q=!1,x=(H,X,ie,fe,ye)=>{if(E.has(fe))return;let Qe=[...X,Rb(fe)],Pe=[...ie,Rb(fe)],pe=new Map,Ee=new Map;for(let Be of wq(fe)){let le=Dwt(p,r,[p,...H,fe],Be,o,a,n,f,{outputReason:g.debugLevel>=2,fastLookupPossible:g.fastLookupPossible});if(Ee.set(Be,le),le.isHoistable===2)for(let re of le.dependsOn){let Se=pe.get(re.name)||new Set;Se.add(Be.name),pe.set(re.name,Se)}}let ke=new Set,h=(Be,le,re)=>{if(!ke.has(Be)){ke.add(Be),Ee.set(Be,{isHoistable:1,reason:re});for(let Se of pe.get(Be.name)||[])h(fe.dependencies.get(Se),le,g.debugLevel>=2?`- peer dependency ${Io(Be.locator)} from parent ${Io(fe.locator)} was not hoisted`:"")}};for(let[Be,le]of Ee)le.isHoistable===1&&h(Be,le,le.reason);let Ke=!1;for(let Be of Ee.keys())if(!ke.has(Be)){Q=!0;let le=c.get(fe);le&&le.has(Be.name)&&(B=!0),Ke=!0,fe.dependencies.delete(Be.name),fe.hoistedDependencies.set(Be.name,Be),fe.reasons.delete(Be.name);let re=p.dependencies.get(Be.name);if(g.debugLevel>=2){let Se=Array.from(X).concat([fe.locator]).map(dt=>Io(dt)).join("\u2192"),Ue=p.hoistedFrom.get(Be.name);Ue||(Ue=[],p.hoistedFrom.set(Be.name,Ue)),Ue.push(Se),fe.hoistedTo.set(Be.name,Array.from(e).map(dt=>Io(dt.locator)).join("\u2192"))}if(!re)p.ident!==Be.ident&&(p.dependencies.set(Be.name,Be),ye.add(Be));else for(let Se of Be.references)re.references.add(Se)}if(fe.dependencyKind===2&&Ke&&(B=!0),g.check){let Be=hBe(t);if(Be)throw new Error(`${Be}, after hoisting dependencies of ${[p,...H,fe].map(le=>Io(le.locator)).join("\u2192")}: -${rQ(t)}`)}let Ce=wq(fe);for(let Be of Ce)if(ke.has(Be)){let le=Ee.get(Be);if((a.get(Be.name)===Be.ident||!fe.reasons.has(Be.name))&&le.isHoistable!==0&&fe.reasons.set(Be.name,le.reason),!Be.isHoistBorder&&Pe.indexOf(Rb(Be))<0){E.add(fe);let Se=fBe(fe,Be);x([...H,fe],Qe,Pe,Se,N),E.delete(fe)}}},C,N=new Set(wq(p)),U=Array.from(e).map(H=>Rb(H));do{C=N,N=new Set;for(let H of C){if(H.locator===p.locator||H.isHoistBorder)continue;let X=fBe(p,H);x([],Array.from(r),U,X,N)}}while(N.size>0);return{anotherRoundNeeded:B,isGraphChanged:Q}},hBe=t=>{let e=[],r=new Set,o=new Set,a=(n,c,f)=>{if(r.has(n)||(r.add(n),o.has(n)))return;let g=new Map(c);for(let p of n.dependencies.values())n.peerNames.has(p.name)||g.set(p.name,p);for(let p of n.originalDependencies.values()){let E=g.get(p.name),B=()=>`${Array.from(o).concat([n]).map(Q=>Io(Q.locator)).join("\u2192")}`;if(n.peerNames.has(p.name)){let Q=c.get(p.name);(Q!==E||!Q||Q.ident!==p.ident)&&e.push(`${B()} - broken peer promise: expected ${p.ident} but found ${Q&&Q.ident}`)}else{let Q=f.hoistedFrom.get(n.name),x=n.hoistedTo.get(p.name),C=`${Q?` hoisted from ${Q.join(", ")}`:""}`,N=`${x?` hoisted to ${x}`:""}`,U=`${B()}${C}`;E?E.ident!==p.ident&&e.push(`${U} - broken require promise for ${p.name}${N}: expected ${p.ident}, but found: ${E.ident}`):e.push(`${U} - broken require promise: no required dependency ${p.name}${N} found`)}}o.add(n);for(let p of n.dependencies.values())n.peerNames.has(p.name)||a(p,g,n);o.delete(n)};return a(t,t.dependencies,t),e.join(` -`)},kwt=(t,e)=>{let{identName:r,name:o,reference:a,peerNames:n}=t,c={name:o,references:new Set([a]),locator:Bq(r,a),ident:uBe(r,a),dependencies:new Map,originalDependencies:new Map,hoistedDependencies:new Map,peerNames:new Set(n),reasons:new Map,decoupled:!0,isHoistBorder:!0,hoistPriority:0,dependencyKind:1,hoistedFrom:new Map,hoistedTo:new Map},f=new Map([[t,c]]),g=(p,E)=>{let B=f.get(p),Q=!!B;if(!B){let{name:x,identName:C,reference:N,peerNames:U,hoistPriority:H,dependencyKind:X}=p,ie=e.hoistingLimits.get(E.locator);B={name:x,references:new Set([N]),locator:Bq(C,N),ident:uBe(C,N),dependencies:new Map,originalDependencies:new Map,hoistedDependencies:new Map,peerNames:new Set(U),reasons:new Map,decoupled:!0,isHoistBorder:ie?ie.has(x):!1,hoistPriority:H||0,dependencyKind:X||0,hoistedFrom:new Map,hoistedTo:new Map},f.set(p,B)}if(E.dependencies.set(p.name,B),E.originalDependencies.set(p.name,B),Q){let x=new Set,C=N=>{if(!x.has(N)){x.add(N),N.decoupled=!1;for(let U of N.dependencies.values())N.peerNames.has(U.name)||C(U)}};C(B)}else for(let x of p.dependencies)g(x,B)};for(let p of t.dependencies)g(p,c);return c},vq=t=>t.substring(0,t.indexOf("@",1)),xwt=t=>{let e={name:t.name,identName:vq(t.locator),references:new Set(t.references),dependencies:new Set},r=new Set([t]),o=(a,n,c)=>{let f=r.has(a),g;if(n===a)g=c;else{let{name:p,references:E,locator:B}=a;g={name:p,identName:vq(B),references:E,dependencies:new Set}}if(c.dependencies.add(g),!f){r.add(a);for(let p of a.dependencies.values())a.peerNames.has(p.name)||o(p,a,g);r.delete(a)}};for(let a of t.dependencies.values())o(a,t,e);return e},Pwt=t=>{let e=new Map,r=new Set([t]),o=c=>`${c.name}@${c.ident}`,a=c=>{let f=o(c),g=e.get(f);return g||(g={dependents:new Set,peerDependents:new Set,hoistPriority:0},e.set(f,g)),g},n=(c,f)=>{let g=!!r.has(f);if(a(f).dependents.add(c.ident),!g){r.add(f);for(let E of f.dependencies.values()){let B=a(E);B.hoistPriority=Math.max(B.hoistPriority,E.hoistPriority),f.peerNames.has(E.name)?B.peerDependents.add(f.ident):n(f,E)}}};for(let c of t.dependencies.values())t.peerNames.has(c.name)||n(t,c);return e},Io=t=>{if(!t)return"none";let e=t.indexOf("@",1),r=t.substring(0,e);r.endsWith("$wsroot$")&&(r=`wh:${r.replace("$wsroot$","")}`);let o=t.substring(e+1);if(o==="workspace:.")return".";if(o){let a=(o.indexOf("#")>0?o.split("#")[1]:o).replace("npm:","");return o.startsWith("virtual")&&(r=`v:${r}`),a.startsWith("workspace")&&(r=`w:${r}`,a=""),`${r}${a?`@${a}`:""}`}else return`${r}`},gBe=5e4,rQ=t=>{let e=0,r=(a,n,c="")=>{if(e>gBe||n.has(a))return"";e++;let f=Array.from(a.dependencies.values()).sort((p,E)=>p.name===E.name?0:p.name>E.name?1:-1),g="";n.add(a);for(let p=0;p":"")+(Q!==E.name?`a:${E.name}:`:"")+Io(E.locator)+(B?` ${B}`:"")} -`,g+=r(E,n,`${c}${pgBe?` -Tree is too large, part of the tree has been dunped -`:"")};var nQ=(o=>(o.WORKSPACES="workspaces",o.DEPENDENCIES="dependencies",o.NONE="none",o))(nQ||{}),dBe="node_modules",Gm="$wsroot$";var iQ=(t,e)=>{let{packageTree:r,hoistingLimits:o,errors:a,preserveSymlinksRequired:n}=Fwt(t,e),c=null;if(a.length===0){let f=pBe(r,{hoistingLimits:o});c=Twt(t,f,e)}return{tree:c,errors:a,preserveSymlinksRequired:n}},Ku=t=>`${t.name}@${t.reference}`,Sq=t=>{let e=new Map;for(let[r,o]of t.entries())if(!o.dirList){let a=e.get(o.locator);a||(a={target:o.target,linkType:o.linkType,locations:[],aliases:o.aliases},e.set(o.locator,a)),a.locations.push(r)}for(let r of e.values())r.locations=r.locations.sort((o,a)=>{let n=o.split(ee.delimiter).length,c=a.split(ee.delimiter).length;return a===o?0:n!==c?c-n:a>o?1:-1});return e},mBe=(t,e)=>{let r=Y.isVirtualLocator(t)?Y.devirtualizeLocator(t):t,o=Y.isVirtualLocator(e)?Y.devirtualizeLocator(e):e;return Y.areLocatorsEqual(r,o)},Dq=(t,e,r,o)=>{if(t.linkType!=="SOFT")return!1;let a=me.toPortablePath(r.resolveVirtual&&e.reference&&e.reference.startsWith("virtual:")?r.resolveVirtual(t.packageLocation):t.packageLocation);return ee.contains(o,a)===null},bwt=t=>{let e=t.getPackageInformation(t.topLevel);if(e===null)throw new Error("Assertion failed: Expected the top-level package to have been registered");if(t.findPackageLocator(e.packageLocation)===null)throw new Error("Assertion failed: Expected the top-level package to have a physical locator");let o=me.toPortablePath(e.packageLocation.slice(0,-1)),a=new Map,n={children:new Map},c=t.getDependencyTreeRoots(),f=new Map,g=new Set,p=(Q,x)=>{let C=Ku(Q);if(g.has(C))return;g.add(C);let N=t.getPackageInformation(Q);if(N){let U=x?Ku(x):"";if(Ku(Q)!==U&&N.linkType==="SOFT"&&!Dq(N,Q,t,o)){let H=yBe(N,Q,t);(!f.get(H)||Q.reference.startsWith("workspace:"))&&f.set(H,Q)}for(let[H,X]of N.packageDependencies)X!==null&&(N.packagePeers.has(H)||p(t.getLocator(H,X),Q))}};for(let Q of c)p(Q,null);let E=o.split(ee.sep);for(let Q of f.values()){let x=t.getPackageInformation(Q),N=me.toPortablePath(x.packageLocation.slice(0,-1)).split(ee.sep).slice(E.length),U=n;for(let H of N){let X=U.children.get(H);X||(X={children:new Map},U.children.set(H,X)),U=X}U.workspaceLocator=Q}let B=(Q,x)=>{if(Q.workspaceLocator){let C=Ku(x),N=a.get(C);N||(N=new Set,a.set(C,N)),N.add(Q.workspaceLocator)}for(let C of Q.children.values())B(C,Q.workspaceLocator||x)};for(let Q of n.children.values())B(Q,n.workspaceLocator);return a},Fwt=(t,e)=>{let r=[],o=!1,a=new Map,n=bwt(t),c=t.getPackageInformation(t.topLevel);if(c===null)throw new Error("Assertion failed: Expected the top-level package to have been registered");let f=t.findPackageLocator(c.packageLocation);if(f===null)throw new Error("Assertion failed: Expected the top-level package to have a physical locator");let g=me.toPortablePath(c.packageLocation.slice(0,-1)),p={name:f.name,identName:f.name,reference:f.reference,peerNames:c.packagePeers,dependencies:new Set,dependencyKind:1},E=new Map,B=(x,C)=>`${Ku(C)}:${x}`,Q=(x,C,N,U,H,X,ie,fe)=>{var Be,le;let ye=B(x,N),Qe=E.get(ye),Pe=!!Qe;!Pe&&N.name===f.name&&N.reference===f.reference&&(Qe=p,E.set(ye,p));let pe=Dq(C,N,t,g);if(!Qe){let re=0;pe?re=2:C.linkType==="SOFT"&&N.name.endsWith(Gm)&&(re=1),Qe={name:x,identName:N.name,reference:N.reference,dependencies:new Set,peerNames:re===1?new Set:C.packagePeers,dependencyKind:re},E.set(ye,Qe)}let Ee;if(pe?Ee=2:H.linkType==="SOFT"?Ee=1:Ee=0,Qe.hoistPriority=Math.max(Qe.hoistPriority||0,Ee),fe&&!pe){let re=Ku({name:U.identName,reference:U.reference}),Se=a.get(re)||new Set;a.set(re,Se),Se.add(Qe.name)}let ke=new Map(C.packageDependencies);if(e.project){let re=e.project.workspacesByCwd.get(me.toPortablePath(C.packageLocation.slice(0,-1)));if(re){let Se=new Set([...Array.from(re.manifest.peerDependencies.values(),Ue=>Y.stringifyIdent(Ue)),...Array.from(re.manifest.peerDependenciesMeta.keys())]);for(let Ue of Se)ke.has(Ue)||(ke.set(Ue,X.get(Ue)||null),Qe.peerNames.add(Ue))}}let h=Ku({name:N.name.replace(Gm,""),reference:N.reference}),Ke=n.get(h);if(Ke)for(let re of Ke)ke.set(`${re.name}${Gm}`,re.reference);(C!==H||C.linkType!=="SOFT"||!pe&&(!e.selfReferencesByCwd||e.selfReferencesByCwd.get(ie)))&&U.dependencies.add(Qe);let Ce=N!==f&&C.linkType==="SOFT"&&!N.name.endsWith(Gm)&&!pe;if(!Pe&&!Ce){let re=new Map;for(let[Se,Ue]of ke)if(Ue!==null){let dt=t.getLocator(Se,Ue),q=t.getLocator(Se.replace(Gm,""),Ue),Qt=t.getPackageInformation(q);if(Qt===null)throw new Error("Assertion failed: Expected the package to have been registered");let He=Dq(Qt,dt,t,g);if(e.validateExternalSoftLinks&&e.project&&He){Qt.packageDependencies.size>0&&(o=!0);for(let[pt,Oe]of Qt.packageDependencies)if(Oe!==null){let k=Y.parseLocator(Array.isArray(Oe)?`${Oe[0]}@${Oe[1]}`:`${pt}@${Oe}`);if(Ku(k)!==Ku(dt)){let I=ke.get(pt);if(I){let S=Y.parseLocator(Array.isArray(I)?`${I[0]}@${I[1]}`:`${pt}@${I}`);mBe(S,k)||r.push({messageName:71,text:`Cannot link ${Y.prettyIdent(e.project.configuration,Y.parseIdent(dt.name))} into ${Y.prettyLocator(e.project.configuration,Y.parseLocator(`${N.name}@${N.reference}`))} dependency ${Y.prettyLocator(e.project.configuration,k)} conflicts with parent dependency ${Y.prettyLocator(e.project.configuration,S)}`})}else{let S=re.get(pt);if(S){let y=S.target,R=Y.parseLocator(Array.isArray(y)?`${y[0]}@${y[1]}`:`${pt}@${y}`);mBe(R,k)||r.push({messageName:71,text:`Cannot link ${Y.prettyIdent(e.project.configuration,Y.parseIdent(dt.name))} into ${Y.prettyLocator(e.project.configuration,Y.parseLocator(`${N.name}@${N.reference}`))} dependency ${Y.prettyLocator(e.project.configuration,k)} conflicts with dependency ${Y.prettyLocator(e.project.configuration,R)} from sibling portal ${Y.prettyIdent(e.project.configuration,Y.parseIdent(S.portal.name))}`})}else re.set(pt,{target:k.reference,portal:dt})}}}}let qe=(Be=e.hoistingLimitsByCwd)==null?void 0:Be.get(ie),Fe=He?ie:ee.relative(g,me.toPortablePath(Qt.packageLocation))||Bt.dot,je=(le=e.hoistingLimitsByCwd)==null?void 0:le.get(Fe);Q(Se,Qt,dt,Qe,C,ke,Fe,qe==="dependencies"||je==="dependencies"||je==="workspaces")}}};return Q(f.name,c,f,p,c,c.packageDependencies,Bt.dot,!1),{packageTree:p,hoistingLimits:a,errors:r,preserveSymlinksRequired:o}};function yBe(t,e,r){let o=r.resolveVirtual&&e.reference&&e.reference.startsWith("virtual:")?r.resolveVirtual(t.packageLocation):t.packageLocation;return me.toPortablePath(o||t.packageLocation)}function Rwt(t,e,r){let o=e.getLocator(t.name.replace(Gm,""),t.reference),a=e.getPackageInformation(o);if(a===null)throw new Error("Assertion failed: Expected the package to be registered");return r.pnpifyFs?{linkType:"SOFT",target:me.toPortablePath(a.packageLocation)}:{linkType:a.linkType,target:yBe(a,t,e)}}var Twt=(t,e,r)=>{let o=new Map,a=(E,B,Q)=>{let{linkType:x,target:C}=Rwt(E,t,r);return{locator:Ku(E),nodePath:B,target:C,linkType:x,aliases:Q}},n=E=>{let[B,Q]=E.split("/");return Q?{scope:ss(B),name:ss(Q)}:{scope:null,name:ss(B)}},c=new Set,f=(E,B,Q)=>{if(!c.has(E)){c.add(E);for(let x of E.dependencies){if(x===E)continue;let C=Array.from(x.references).sort(),N={name:x.identName,reference:C[0]},{name:U,scope:H}=n(x.name),X=H?[H,U]:[U],ie=ee.join(B,dBe),fe=ee.join(ie,...X),ye=`${Q}/${N.name}`,Qe=a(N,Q,C.slice(1)),Pe=!1;if(Qe.linkType==="SOFT"&&r.project){let pe=r.project.workspacesByCwd.get(Qe.target.slice(0,-1));Pe=!!(pe&&!pe.manifest.name)}if(!x.name.endsWith(Gm)&&!Pe){let pe=o.get(fe);if(pe){if(pe.dirList)throw new Error(`Assertion failed: ${fe} cannot merge dir node with leaf node`);{let h=Y.parseLocator(pe.locator),Ke=Y.parseLocator(Qe.locator);if(pe.linkType!==Qe.linkType)throw new Error(`Assertion failed: ${fe} cannot merge nodes with different link types ${pe.nodePath}/${Y.stringifyLocator(h)} and ${Q}/${Y.stringifyLocator(Ke)}`);if(h.identHash!==Ke.identHash)throw new Error(`Assertion failed: ${fe} cannot merge nodes with different idents ${pe.nodePath}/${Y.stringifyLocator(h)} and ${Q}/s${Y.stringifyLocator(Ke)}`);Qe.aliases=[...Qe.aliases,...pe.aliases,Y.parseLocator(pe.locator).reference]}}o.set(fe,Qe);let Ee=fe.split("/"),ke=Ee.indexOf(dBe);for(let h=Ee.length-1;ke>=0&&h>ke;h--){let Ke=me.toPortablePath(Ee.slice(0,h).join(ee.sep)),Ce=ss(Ee[h]),Be=o.get(Ke);if(!Be)o.set(Ke,{dirList:new Set([Ce])});else if(Be.dirList){if(Be.dirList.has(Ce))break;Be.dirList.add(Ce)}}}f(x,Qe.linkType==="SOFT"?Qe.target:fe,ye)}}},g=a({name:e.name,reference:Array.from(e.references)[0]},"",[]),p=g.target;return o.set(p,g),f(e,p,""),o};$e();$e();Ft();Ft();oc();cl();var Hq={};tr(Hq,{PnpInstaller:()=>Ym,PnpLinker:()=>e0,UnplugCommand:()=>r0,default:()=>ABt,getPnpPath:()=>t0,jsInstallUtils:()=>_u,pnpUtils:()=>gQ,quotePathIfNeeded:()=>ZBe});Ft();var zBe=be(wi()),XBe=Ie("url");$e();$e();Ft();Ft();var CBe={["DEFAULT"]:{collapsed:!1,next:{["*"]:"DEFAULT"}},["TOP_LEVEL"]:{collapsed:!1,next:{fallbackExclusionList:"FALLBACK_EXCLUSION_LIST",packageRegistryData:"PACKAGE_REGISTRY_DATA",["*"]:"DEFAULT"}},["FALLBACK_EXCLUSION_LIST"]:{collapsed:!1,next:{["*"]:"FALLBACK_EXCLUSION_ENTRIES"}},["FALLBACK_EXCLUSION_ENTRIES"]:{collapsed:!0,next:{["*"]:"FALLBACK_EXCLUSION_DATA"}},["FALLBACK_EXCLUSION_DATA"]:{collapsed:!0,next:{["*"]:"DEFAULT"}},["PACKAGE_REGISTRY_DATA"]:{collapsed:!1,next:{["*"]:"PACKAGE_REGISTRY_ENTRIES"}},["PACKAGE_REGISTRY_ENTRIES"]:{collapsed:!0,next:{["*"]:"PACKAGE_STORE_DATA"}},["PACKAGE_STORE_DATA"]:{collapsed:!1,next:{["*"]:"PACKAGE_STORE_ENTRIES"}},["PACKAGE_STORE_ENTRIES"]:{collapsed:!0,next:{["*"]:"PACKAGE_INFORMATION_DATA"}},["PACKAGE_INFORMATION_DATA"]:{collapsed:!1,next:{packageDependencies:"PACKAGE_DEPENDENCIES",["*"]:"DEFAULT"}},["PACKAGE_DEPENDENCIES"]:{collapsed:!1,next:{["*"]:"PACKAGE_DEPENDENCY"}},["PACKAGE_DEPENDENCY"]:{collapsed:!0,next:{["*"]:"DEFAULT"}}};function Nwt(t,e,r){let o="";o+="[";for(let a=0,n=t.length;a"u"||(f!==0&&(a+=", "),a+=JSON.stringify(g),a+=": ",a+=Tb(g,p,e,r).replace(/^ +/g,""),f+=1)}return a+="}",a}function Owt(t,e,r){let o=Object.keys(t),a=`${r} `,n="";n+=r,n+=`{ -`;let c=0;for(let f=0,g=o.length;f"u"||(c!==0&&(n+=",",n+=` -`),n+=a,n+=JSON.stringify(p),n+=": ",n+=Tb(p,E,e,a).replace(/^ +/g,""),c+=1)}return c!==0&&(n+=` -`),n+=r,n+="}",n}function Tb(t,e,r,o){let{next:a}=CBe[r],n=a[t]||a["*"];return EBe(e,n,o)}function EBe(t,e,r){let{collapsed:o}=CBe[e];return Array.isArray(t)?o?Nwt(t,e,r):Mwt(t,e,r):typeof t=="object"&&t!==null?o?Lwt(t,e,r):Owt(t,e,r):JSON.stringify(t)}function IBe(t){return EBe(t,"TOP_LEVEL","")}function sQ(t,e){let r=Array.from(t);Array.isArray(e)||(e=[e]);let o=[];for(let n of e)o.push(r.map(c=>n(c)));let a=r.map((n,c)=>c);return a.sort((n,c)=>{for(let f of o){let g=f[n]f[c]?1:0;if(g!==0)return g}return 0}),a.map(n=>r[n])}function Uwt(t){let e=new Map,r=sQ(t.fallbackExclusionList||[],[({name:o,reference:a})=>o,({name:o,reference:a})=>a]);for(let{name:o,reference:a}of r){let n=e.get(o);typeof n>"u"&&e.set(o,n=new Set),n.add(a)}return Array.from(e).map(([o,a])=>[o,Array.from(a)])}function Kwt(t){return sQ(t.fallbackPool||[],([e])=>e)}function _wt(t){let e=[];for(let[r,o]of sQ(t.packageRegistry,([a])=>a===null?"0":`1${a}`)){let a=[];e.push([r,a]);for(let[n,{packageLocation:c,packageDependencies:f,packagePeers:g,linkType:p,discardFromLookup:E}]of sQ(o,([B])=>B===null?"0":`1${B}`)){let B=[];r!==null&&n!==null&&!f.has(r)&&B.push([r,n]);for(let[C,N]of sQ(f.entries(),([U])=>U))B.push([C,N]);let Q=g&&g.size>0?Array.from(g):void 0,x=E||void 0;a.push([n,{packageLocation:c,packageDependencies:B,packagePeers:Q,linkType:p,discardFromLookup:x}])}}return e}function oQ(t){return{__info:["This file is automatically generated. Do not touch it, or risk","your modifications being lost."],dependencyTreeRoots:t.dependencyTreeRoots,enableTopLevelFallback:t.enableTopLevelFallback||!1,ignorePatternData:t.ignorePattern||null,fallbackExclusionList:Uwt(t),fallbackPool:Kwt(t),packageRegistryData:_wt(t)}}var QBe=be(BBe());function vBe(t,e){return[t?`${t} -`:"",`/* eslint-disable */ -`,`"use strict"; -`,` -`,e,` -`,(0,QBe.default)()].join("")}function Hwt(t){return JSON.stringify(t,null,2)}function qwt(t){return`'${t.replace(/\\/g,"\\\\").replace(/'/g,"\\'").replace(/\n/g,`\\ -`)}'`}function Gwt(t){return[`const RAW_RUNTIME_STATE = -`,`${qwt(IBe(t))}; - -`,`function $$SETUP_STATE(hydrateRuntimeState, basePath) { -`,` return hydrateRuntimeState(JSON.parse(RAW_RUNTIME_STATE), {basePath: basePath || __dirname}); -`,`} -`].join("")}function jwt(){return[`function $$SETUP_STATE(hydrateRuntimeState, basePath) { -`,` return hydrateRuntimeState(require(${JSON.stringify(`./${Xr.pnpData}`)}), {basePath: basePath || __dirname}); -`,`} -`].join("")}function DBe(t){let e=oQ(t),r=Gwt(e);return vBe(t.shebang,r)}function SBe(t){let e=oQ(t),r=jwt(),o=vBe(t.shebang,r);return{dataFile:Hwt(e),loaderFile:o}}Ft();function xq(t,{basePath:e}){let r=me.toPortablePath(e),o=ee.resolve(r),a=t.ignorePatternData!==null?new RegExp(t.ignorePatternData):null,n=new Map,c=new Map(t.packageRegistryData.map(([B,Q])=>[B,new Map(Q.map(([x,C])=>{if(B===null!=(x===null))throw new Error("Assertion failed: The name and reference should be null, or neither should");let N=C.discardFromLookup??!1,U={name:B,reference:x},H=n.get(C.packageLocation);H?(H.discardFromLookup=H.discardFromLookup&&N,N||(H.locator=U)):n.set(C.packageLocation,{locator:U,discardFromLookup:N});let X=null;return[x,{packageDependencies:new Map(C.packageDependencies),packagePeers:new Set(C.packagePeers),linkType:C.linkType,discardFromLookup:N,get packageLocation(){return X||(X=ee.join(o,C.packageLocation))}}]}))])),f=new Map(t.fallbackExclusionList.map(([B,Q])=>[B,new Set(Q)])),g=new Map(t.fallbackPool),p=t.dependencyTreeRoots,E=t.enableTopLevelFallback;return{basePath:r,dependencyTreeRoots:p,enableTopLevelFallback:E,fallbackExclusionList:f,fallbackPool:g,ignorePattern:a,packageLocatorsByLocations:n,packageRegistry:c}}Ft();Ft();var uQ=Ie("module");function tI(t,e){if(typeof t=="string")return t;if(t){let r,o;if(Array.isArray(t)){for(r=0;r0)return(Q=tI(a[B],E))?Q.replace("*",p.substring(B.length-1)):jm(o,p,1)}return jm(o,p)}}var Hb=Ie("url"),Tq=Ie("util");var Rc=Ie("url");var NBe=be(Ie("assert"));var xBe=Array.isArray,aQ=JSON.stringify,Pq=Object.getOwnPropertyNames,rI=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),bq=(t,e)=>RegExp.prototype.exec.call(t,e),Fq=(t,...e)=>RegExp.prototype[Symbol.replace].apply(t,e),AQ=(t,...e)=>String.prototype.endsWith.apply(t,e),PBe=(t,...e)=>String.prototype.includes.apply(t,e),bBe=(t,...e)=>String.prototype.lastIndexOf.apply(t,e),Nb=(t,...e)=>String.prototype.indexOf.apply(t,e),FBe=(t,...e)=>String.prototype.replace.apply(t,e),lQ=(t,...e)=>String.prototype.slice.apply(t,e),vg=(t,...e)=>String.prototype.startsWith.apply(t,e),RBe=Map,TBe=JSON.parse;function Mb(t,e,r){return class extends r{constructor(...o){super(e(...o)),this.code=t,this.name=`${r.name} [${t}]`}}}var MBe=Mb("ERR_PACKAGE_IMPORT_NOT_DEFINED",(t,e,r)=>`Package import specifier "${t}" is not defined${e?` in package ${e}package.json`:""} imported from ${r}`,TypeError),Rq=Mb("ERR_INVALID_MODULE_SPECIFIER",(t,e,r=void 0)=>`Invalid module "${t}" ${e}${r?` imported from ${r}`:""}`,TypeError),LBe=Mb("ERR_INVALID_PACKAGE_TARGET",(t,e,r,o=!1,a=void 0)=>{let n=typeof r=="string"&&!o&&r.length&&!vg(r,"./");return e==="."?((0,NBe.default)(o===!1),`Invalid "exports" main target ${aQ(r)} defined in the package config ${t}package.json${a?` imported from ${a}`:""}${n?'; targets must start with "./"':""}`):`Invalid "${o?"imports":"exports"}" target ${aQ(r)} defined for '${e}' in the package config ${t}package.json${a?` imported from ${a}`:""}${n?'; targets must start with "./"':""}`},Error),Lb=Mb("ERR_INVALID_PACKAGE_CONFIG",(t,e,r)=>`Invalid package config ${t}${e?` while importing ${e}`:""}${r?`. ${r}`:""}`,Error);var Ub=Ie("url");function OBe(t,e){let r=Object.create(null);for(let o=0;oe):t+e}cQ(r,t,o,c,a)}bq(KBe,lQ(t,2))!==null&&cQ(r,t,o,c,a);let g=new URL(t,o),p=g.pathname,E=new URL(".",o).pathname;if(vg(p,E)||cQ(r,t,o,c,a),e==="")return g;if(bq(KBe,e)!==null){let B=n?FBe(r,"*",()=>e):r+e;Vwt(B,o,c,a)}return n?new URL(Fq(_Be,g.href,()=>e)):new URL(e,g)}function Xwt(t){let e=+t;return`${e}`!==t?!1:e>=0&&e<4294967295}function Kb(t,e,r,o,a,n,c,f){if(typeof e=="string")return zwt(e,r,o,t,a,n,c,f);if(xBe(e)){if(e.length===0)return null;let g;for(let p=0;pn?-1:n>a||r===-1?1:o===-1||t.length>e.length?-1:e.length>t.length?1:0}function HBe({name:t,base:e,conditions:r,readFileSyncFn:o}){if(t==="#"||vg(t,"#/")||AQ(t,"/")){let c="is not a valid internal imports specifier name";throw new Rq(t,c,(0,Rc.fileURLToPath)(e))}let a,n=UBe(e,o);if(n.exists){a=(0,Rc.pathToFileURL)(n.pjsonPath);let c=n.imports;if(c)if(rI(c,t)&&!PBe(t,"*")){let f=Kb(a,c[t],"",t,e,!1,!0,r);if(f!=null)return f}else{let f="",g,p=Pq(c);for(let E=0;E=B.length&&AQ(t,x)&&Zwt(f,B)===1&&bBe(B,"*")===Q&&(f=B,g=lQ(t,Q,t.length-x.length))}}if(f){let E=c[f],B=Kb(a,E,g,f,e,!0,!0,r);if(B!=null)return B}}}Jwt(t,a,e)}Ft();var $wt=new Set(["BUILTIN_NODE_RESOLUTION_FAILED","MISSING_DEPENDENCY","MISSING_PEER_DEPENDENCY","QUALIFIED_PATH_RESOLUTION_FAILED","UNDECLARED_DEPENDENCY"]);function Es(t,e,r={},o){o??(o=$wt.has(t)?"MODULE_NOT_FOUND":t);let a={configurable:!0,writable:!0,enumerable:!1};return Object.defineProperties(new Error(e),{code:{...a,value:o},pnpCode:{...a,value:t},data:{...a,value:r}})}function Tc(t){return me.normalize(me.fromPortablePath(t))}var qBe=Ie("module");var eBt=new Set(qBe.Module.builtinModules||Object.keys(process.binding("natives"))),_b=t=>t.startsWith("node:")||eBt.has(t);function Nq(t,e){let r=Number(process.env.PNP_ALWAYS_WARN_ON_FALLBACK)>0,o=Number(process.env.PNP_DEBUG_LEVEL),a=/^(?![a-zA-Z]:[\\/]|\\\\|\.{0,2}(?:\/|$))((?:node:)?(?:@[^/]+\/)?[^/]+)\/*(.*|)$/,n=/^(\/|\.{1,2}(\/|$))/,c=/\/$/,f=/^\.{0,2}\//,g={name:null,reference:null},p=[],E=new Set;if(t.enableTopLevelFallback===!0&&p.push(g),e.compatibilityMode!==!1)for(let He of["react-scripts","gatsby"]){let qe=t.packageRegistry.get(He);if(qe)for(let Fe of qe.keys()){if(Fe===null)throw new Error("Assertion failed: This reference shouldn't be null");p.push({name:He,reference:Fe})}}let{ignorePattern:B,packageRegistry:Q,packageLocatorsByLocations:x}=t;function C(He,qe){return{fn:He,args:qe,error:null,result:null}}function N(He){var pt,Oe,k,I;let qe=((Oe=(pt=process.stderr)==null?void 0:pt.hasColors)==null?void 0:Oe.call(pt))??process.stdout.isTTY,Fe=(S,y)=>`\x1B[${S}m${y}\x1B[0m`,je=He.error;console.error(je?Fe("31;1",`\u2716 ${(k=He.error)==null?void 0:k.message.replace(/\n.*/s,"")}`):Fe("33;1","\u203C Resolution")),He.args.length>0&&console.error();for(let S of He.args)console.error(` ${Fe("37;1","In \u2190")} ${(0,Tq.inspect)(S,{colors:qe,compact:!0})}`);He.result&&(console.error(),console.error(` ${Fe("37;1","Out \u2192")} ${(0,Tq.inspect)(He.result,{colors:qe,compact:!0})}`));let We=((I=new Error().stack.match(/(?<=^ +)at.*/gm))==null?void 0:I.slice(2))??[];if(We.length>0){console.error();for(let S of We)console.error(` ${Fe("38;5;244",S)}`)}console.error()}function U(He,qe){if(e.allowDebug===!1)return qe;if(Number.isFinite(o)){if(o>=2)return(...Fe)=>{let je=C(He,Fe);try{return je.result=qe(...Fe)}catch(We){throw je.error=We}finally{N(je)}};if(o>=1)return(...Fe)=>{try{return qe(...Fe)}catch(je){let We=C(He,Fe);throw We.error=je,N(We),je}}}return qe}function H(He){let qe=h(He);if(!qe)throw Es("INTERNAL","Couldn't find a matching entry in the dependency tree for the specified parent (this is probably an internal error)");return qe}function X(He){if(He.name===null)return!0;for(let qe of t.dependencyTreeRoots)if(qe.name===He.name&&qe.reference===He.reference)return!0;return!1}let ie=new Set(["default","node","require"]);function fe(He,qe=ie){let Fe=Be(ee.join(He,"internal.js"),{resolveIgnored:!0,includeDiscardFromLookup:!0});if(Fe===null)throw Es("INTERNAL",`The locator that owns the "${He}" path can't be found inside the dependency tree (this is probably an internal error)`);let{packageLocation:je}=H(Fe),We=ee.join(je,Xr.manifest);if(!e.fakeFs.existsSync(We))return null;let pt=JSON.parse(e.fakeFs.readFileSync(We,"utf8")),Oe=ee.contains(je,He);if(Oe===null)throw Es("INTERNAL","unqualifiedPath doesn't contain the packageLocation (this is probably an internal error)");f.test(Oe)||(Oe=`./${Oe}`);let k;try{k=kBe(pt,ee.normalize(Oe),{conditions:qe,unsafe:!0})}catch(I){throw Es("EXPORTS_RESOLUTION_FAILED",I.message,{unqualifiedPath:Tc(He),locator:Fe,pkgJson:pt,subpath:Tc(Oe),conditions:qe},"ERR_PACKAGE_PATH_NOT_EXPORTED")}return typeof k=="string"?ee.join(je,k):null}function ye(He,qe,{extensions:Fe}){let je;try{qe.push(He),je=e.fakeFs.statSync(He)}catch{}if(je&&!je.isDirectory())return e.fakeFs.realpathSync(He);if(je&&je.isDirectory()){let We;try{We=JSON.parse(e.fakeFs.readFileSync(ee.join(He,Xr.manifest),"utf8"))}catch{}let pt;if(We&&We.main&&(pt=ee.resolve(He,We.main)),pt&&pt!==He){let Oe=ye(pt,qe,{extensions:Fe});if(Oe!==null)return Oe}}for(let We=0,pt=Fe.length;We{let k=JSON.stringify(Oe.name);if(je.has(k))return;je.add(k);let I=Ke(Oe);for(let S of I)if(H(S).packagePeers.has(He))We(S);else{let R=Fe.get(S.name);typeof R>"u"&&Fe.set(S.name,R=new Set),R.add(S.reference)}};We(qe);let pt=[];for(let Oe of[...Fe.keys()].sort())for(let k of[...Fe.get(Oe)].sort())pt.push({name:Oe,reference:k});return pt}function Be(He,{resolveIgnored:qe=!1,includeDiscardFromLookup:Fe=!1}={}){if(pe(He)&&!qe)return null;let je=ee.relative(t.basePath,He);je.match(n)||(je=`./${je}`),je.endsWith("/")||(je=`${je}/`);do{let We=x.get(je);if(typeof We>"u"||We.discardFromLookup&&!Fe){je=je.substring(0,je.lastIndexOf("/",je.length-2)+1);continue}return We.locator}while(je!=="");return null}function le(He){try{return e.fakeFs.readFileSync(me.toPortablePath(He),"utf8")}catch(qe){if(qe.code==="ENOENT")return;throw qe}}function re(He,qe,{considerBuiltins:Fe=!0}={}){if(He.startsWith("#"))throw new Error("resolveToUnqualified can not handle private import mappings");if(He==="pnpapi")return me.toPortablePath(e.pnpapiResolution);if(Fe&&_b(He))return null;let je=Tc(He),We=qe&&Tc(qe);if(qe&&pe(qe)&&(!ee.isAbsolute(He)||Be(He)===null)){let k=Pe(He,qe);if(k===!1)throw Es("BUILTIN_NODE_RESOLUTION_FAILED",`The builtin node resolution algorithm was unable to resolve the requested module (it didn't go through the pnp resolver because the issuer was explicitely ignored by the regexp) - -Require request: "${je}" -Required by: ${We} -`,{request:je,issuer:We});return me.toPortablePath(k)}let pt,Oe=He.match(a);if(Oe){if(!qe)throw Es("API_ERROR","The resolveToUnqualified function must be called with a valid issuer when the path isn't a builtin nor absolute",{request:je,issuer:We});let[,k,I]=Oe,S=Be(qe);if(!S){let Le=Pe(He,qe);if(Le===!1)throw Es("BUILTIN_NODE_RESOLUTION_FAILED",`The builtin node resolution algorithm was unable to resolve the requested module (it didn't go through the pnp resolver because the issuer doesn't seem to be part of the Yarn-managed dependency tree). - -Require path: "${je}" -Required by: ${We} -`,{request:je,issuer:We});return me.toPortablePath(Le)}let R=H(S).packageDependencies.get(k),Z=null;if(R==null&&S.name!==null){let Le=t.fallbackExclusionList.get(S.name);if(!Le||!Le.has(S.reference)){for(let mt=0,qt=p.length;mtX(lt))?te=Es("MISSING_PEER_DEPENDENCY",`${S.name} tried to access ${k} (a peer dependency) but it isn't provided by your application; this makes the require call ambiguous and unsound. - -Required package: ${k}${k!==je?` (via "${je}")`:""} -Required by: ${S.name}@${S.reference} (via ${We}) -${Le.map(lt=>`Ancestor breaking the chain: ${lt.name}@${lt.reference} -`).join("")} -`,{request:je,issuer:We,issuerLocator:Object.assign({},S),dependencyName:k,brokenAncestors:Le}):te=Es("MISSING_PEER_DEPENDENCY",`${S.name} tried to access ${k} (a peer dependency) but it isn't provided by its ancestors; this makes the require call ambiguous and unsound. - -Required package: ${k}${k!==je?` (via "${je}")`:""} -Required by: ${S.name}@${S.reference} (via ${We}) - -${Le.map(lt=>`Ancestor breaking the chain: ${lt.name}@${lt.reference} -`).join("")} -`,{request:je,issuer:We,issuerLocator:Object.assign({},S),dependencyName:k,brokenAncestors:Le})}else R===void 0&&(!Fe&&_b(He)?X(S)?te=Es("UNDECLARED_DEPENDENCY",`Your application tried to access ${k}. While this module is usually interpreted as a Node builtin, your resolver is running inside a non-Node resolution context where such builtins are ignored. Since ${k} isn't otherwise declared in your dependencies, this makes the require call ambiguous and unsound. - -Required package: ${k}${k!==je?` (via "${je}")`:""} -Required by: ${We} -`,{request:je,issuer:We,dependencyName:k}):te=Es("UNDECLARED_DEPENDENCY",`${S.name} tried to access ${k}. While this module is usually interpreted as a Node builtin, your resolver is running inside a non-Node resolution context where such builtins are ignored. Since ${k} isn't otherwise declared in ${S.name}'s dependencies, this makes the require call ambiguous and unsound. - -Required package: ${k}${k!==je?` (via "${je}")`:""} -Required by: ${We} -`,{request:je,issuer:We,issuerLocator:Object.assign({},S),dependencyName:k}):X(S)?te=Es("UNDECLARED_DEPENDENCY",`Your application tried to access ${k}, but it isn't declared in your dependencies; this makes the require call ambiguous and unsound. - -Required package: ${k}${k!==je?` (via "${je}")`:""} -Required by: ${We} -`,{request:je,issuer:We,dependencyName:k}):te=Es("UNDECLARED_DEPENDENCY",`${S.name} tried to access ${k}, but it isn't declared in its dependencies; this makes the require call ambiguous and unsound. - -Required package: ${k}${k!==je?` (via "${je}")`:""} -Required by: ${S.name}@${S.reference} (via ${We}) -`,{request:je,issuer:We,issuerLocator:Object.assign({},S),dependencyName:k}));if(R==null){if(Z===null||te===null)throw te||new Error("Assertion failed: Expected an error to have been set");R=Z;let Le=te.message.replace(/\n.*/g,"");te.message=Le,!E.has(Le)&&o!==0&&(E.add(Le),process.emitWarning(te))}let ne=Array.isArray(R)?{name:R[0],reference:R[1]}:{name:k,reference:R},Ae=H(ne);if(!Ae.packageLocation)throw Es("MISSING_DEPENDENCY",`A dependency seems valid but didn't get installed for some reason. This might be caused by a partial install, such as dev vs prod. - -Required package: ${ne.name}@${ne.reference}${ne.name!==je?` (via "${je}")`:""} -Required by: ${S.name}@${S.reference} (via ${We}) -`,{request:je,issuer:We,dependencyLocator:Object.assign({},ne)});let Re=Ae.packageLocation;I?pt=ee.join(Re,I):pt=Re}else if(ee.isAbsolute(He))pt=ee.normalize(He);else{if(!qe)throw Es("API_ERROR","The resolveToUnqualified function must be called with a valid issuer when the path isn't a builtin nor absolute",{request:je,issuer:We});let k=ee.resolve(qe);qe.match(c)?pt=ee.normalize(ee.join(k,He)):pt=ee.normalize(ee.join(ee.dirname(k),He))}return ee.normalize(pt)}function Se(He,qe,Fe=ie){if(n.test(He))return qe;let je=fe(qe,Fe);return je?ee.normalize(je):qe}function Ue(He,{extensions:qe=Object.keys(uQ.Module._extensions)}={}){let Fe=[],je=ye(He,Fe,{extensions:qe});if(je)return ee.normalize(je);{let We=Tc(He),pt=Be(He);if(pt){let{packageLocation:Oe}=H(pt),k=!0;try{e.fakeFs.accessSync(Oe)}catch(I){if((I==null?void 0:I.code)==="ENOENT")k=!1;else{let S=((I==null?void 0:I.message)??I??"empty exception thrown").replace(/^[A-Z]/,y=>y.toLowerCase());throw Es("QUALIFIED_PATH_RESOLUTION_FAILED",`Required package exists but could not be accessed (${S}). - -Missing package: ${pt.name}@${pt.reference} -Expected package location: ${Tc(Oe)} -`,{unqualifiedPath:We,extensions:qe})}}if(!k){let I=Oe.includes("/unplugged/")?"Required unplugged package missing from disk. This may happen when switching branches without running installs (unplugged packages must be fully materialized on disk to work).":"Required package missing from disk. If you keep your packages inside your repository then restarting the Node process may be enough. Otherwise, try to run an install first.";throw Es("QUALIFIED_PATH_RESOLUTION_FAILED",`${I} - -Missing package: ${pt.name}@${pt.reference} -Expected package location: ${Tc(Oe)} -`,{unqualifiedPath:We,extensions:qe})}}throw Es("QUALIFIED_PATH_RESOLUTION_FAILED",`Qualified path resolution failed: we looked for the following paths, but none could be accessed. - -Source path: ${We} -${Fe.map(Oe=>`Not found: ${Tc(Oe)} -`).join("")}`,{unqualifiedPath:We,extensions:qe})}}function dt(He,qe,Fe){if(!qe)throw new Error("Assertion failed: An issuer is required to resolve private import mappings");let je=HBe({name:He,base:(0,Hb.pathToFileURL)(me.fromPortablePath(qe)),conditions:Fe.conditions??ie,readFileSyncFn:le});if(je instanceof URL)return Ue(me.toPortablePath((0,Hb.fileURLToPath)(je)),{extensions:Fe.extensions});if(je.startsWith("#"))throw new Error("Mapping from one private import to another isn't allowed");return q(je,qe,Fe)}function q(He,qe,Fe={}){try{if(He.startsWith("#"))return dt(He,qe,Fe);let{considerBuiltins:je,extensions:We,conditions:pt}=Fe,Oe=re(He,qe,{considerBuiltins:je});if(He==="pnpapi")return Oe;if(Oe===null)return null;let k=()=>qe!==null?pe(qe):!1,I=(!je||!_b(He))&&!k()?Se(He,Oe,pt):Oe;return Ue(I,{extensions:We})}catch(je){throw Object.prototype.hasOwnProperty.call(je,"pnpCode")&&Object.assign(je.data,{request:Tc(He),issuer:qe&&Tc(qe)}),je}}function Qt(He){let qe=ee.normalize(He),Fe=ji.resolveVirtual(qe);return Fe!==qe?Fe:null}return{VERSIONS:Ee,topLevel:ke,getLocator:(He,qe)=>Array.isArray(qe)?{name:qe[0],reference:qe[1]}:{name:He,reference:qe},getDependencyTreeRoots:()=>[...t.dependencyTreeRoots],getAllLocators(){let He=[];for(let[qe,Fe]of Q)for(let je of Fe.keys())qe!==null&&je!==null&&He.push({name:qe,reference:je});return He},getPackageInformation:He=>{let qe=h(He);if(qe===null)return null;let Fe=me.fromPortablePath(qe.packageLocation);return{...qe,packageLocation:Fe}},findPackageLocator:He=>Be(me.toPortablePath(He)),resolveToUnqualified:U("resolveToUnqualified",(He,qe,Fe)=>{let je=qe!==null?me.toPortablePath(qe):null,We=re(me.toPortablePath(He),je,Fe);return We===null?null:me.fromPortablePath(We)}),resolveUnqualified:U("resolveUnqualified",(He,qe)=>me.fromPortablePath(Ue(me.toPortablePath(He),qe))),resolveRequest:U("resolveRequest",(He,qe,Fe)=>{let je=qe!==null?me.toPortablePath(qe):null,We=q(me.toPortablePath(He),je,Fe);return We===null?null:me.fromPortablePath(We)}),resolveVirtual:U("resolveVirtual",He=>{let qe=Qt(me.toPortablePath(He));return qe!==null?me.fromPortablePath(qe):null})}}Ft();var GBe=(t,e,r)=>{let o=oQ(t),a=xq(o,{basePath:e}),n=me.join(e,Xr.pnpCjs);return Nq(a,{fakeFs:r,pnpapiResolution:n})};var Lq=be(YBe());var _q=be(Vt());var _u={};tr(_u,{checkAndReportManifestCompatibility:()=>JBe,checkManifestCompatibility:()=>WBe,extractBuildScripts:()=>qb,getExtractHint:()=>Oq,hasBindingGyp:()=>Uq});$e();Ft();function WBe(t){return Y.isPackageCompatible(t,xp.getArchitectureSet())}function JBe(t,e,{configuration:r,report:o}){return WBe(t)?!0:(o==null||o.reportWarningOnce(76,`${Y.prettyLocator(r,t)} The ${xp.getArchitectureName()} architecture is incompatible with this package, ${e} skipped.`),!1)}function qb(t,e,r,{configuration:o,report:a}){let n=[];for(let f of["preinstall","install","postinstall"])e.manifest.scripts.has(f)&&n.push([0,f]);return!e.manifest.scripts.has("install")&&e.misc.hasBindingGyp&&n.push([1,"node-gyp rebuild"]),n.length===0?[]:t.linkType!=="HARD"?(a==null||a.reportWarningOnce(6,`${Y.prettyLocator(o,t)} lists build scripts, but is referenced through a soft link. Soft links don't support build scripts, so they'll be ignored.`),[]):r&&r.built===!1?(a==null||a.reportInfoOnce(5,`${Y.prettyLocator(o,t)} lists build scripts, but its build has been explicitly disabled through configuration.`),[]):!o.get("enableScripts")&&!r.built?(a==null||a.reportWarningOnce(4,`${Y.prettyLocator(o,t)} lists build scripts, but all build scripts have been disabled.`),[]):JBe(t,"build",{configuration:o,report:a})?n:[]}var rBt=new Set([".exe",".h",".hh",".hpp",".c",".cc",".cpp",".java",".jar",".node"]);function Oq(t){return t.packageFs.getExtractHint({relevantExtensions:rBt})}function Uq(t){let e=ee.join(t.prefixPath,"binding.gyp");return t.packageFs.existsSync(e)}var gQ={};tr(gQ,{getUnpluggedPath:()=>fQ});$e();Ft();function fQ(t,{configuration:e}){return ee.resolve(e.get("pnpUnpluggedFolder"),Y.slugifyLocator(t))}var nBt=new Set([Y.makeIdent(null,"nan").identHash,Y.makeIdent(null,"node-gyp").identHash,Y.makeIdent(null,"node-pre-gyp").identHash,Y.makeIdent(null,"node-addon-api").identHash,Y.makeIdent(null,"fsevents").identHash,Y.makeIdent(null,"open").identHash,Y.makeIdent(null,"opn").identHash]),e0=class{constructor(){this.mode="strict";this.pnpCache=new Map}getCustomDataKey(){return JSON.stringify({name:"PnpLinker",version:2})}supportsPackage(e,r){return this.isEnabled(r)}async findPackageLocation(e,r){if(!this.isEnabled(r))throw new Error("Assertion failed: Expected the PnP linker to be enabled");let o=t0(r.project).cjs;if(!ge.existsSync(o))throw new _q.UsageError(`The project in ${Ne.pretty(r.project.configuration,`${r.project.cwd}/package.json`,Ne.Type.PATH)} doesn't seem to have been installed - running an install there might help`);let a=Ze.getFactoryWithDefault(this.pnpCache,o,()=>Ze.dynamicRequire(o,{cachingStrategy:Ze.CachingStrategy.FsTime})),n={name:Y.stringifyIdent(e),reference:e.reference},c=a.getPackageInformation(n);if(!c)throw new _q.UsageError(`Couldn't find ${Y.prettyLocator(r.project.configuration,e)} in the currently installed PnP map - running an install might help`);return me.toPortablePath(c.packageLocation)}async findPackageLocator(e,r){if(!this.isEnabled(r))return null;let o=t0(r.project).cjs;if(!ge.existsSync(o))return null;let n=Ze.getFactoryWithDefault(this.pnpCache,o,()=>Ze.dynamicRequire(o,{cachingStrategy:Ze.CachingStrategy.FsTime})).findPackageLocator(me.fromPortablePath(e));return n?Y.makeLocator(Y.parseIdent(n.name),n.reference):null}makeInstaller(e){return new Ym(e)}isEnabled(e){return!(e.project.configuration.get("nodeLinker")!=="pnp"||e.project.configuration.get("pnpMode")!==this.mode)}},Ym=class{constructor(e){this.opts=e;this.mode="strict";this.asyncActions=new Ze.AsyncActions(10);this.packageRegistry=new Map;this.virtualTemplates=new Map;this.isESMLoaderRequired=!1;this.customData={store:new Map};this.unpluggedPaths=new Set;this.opts=e}attachCustomData(e){this.customData=e}async installPackage(e,r,o){let a=Y.stringifyIdent(e),n=e.reference,c=!!this.opts.project.tryWorkspaceByLocator(e),f=Y.isVirtualLocator(e),g=e.peerDependencies.size>0&&!f,p=!g&&!c,E=!g&&e.linkType!=="SOFT",B,Q;if(p||E){let ie=f?Y.devirtualizeLocator(e):e;B=this.customData.store.get(ie.locatorHash),typeof B>"u"&&(B=await iBt(r),e.linkType==="HARD"&&this.customData.store.set(ie.locatorHash,B)),B.manifest.type==="module"&&(this.isESMLoaderRequired=!0),Q=this.opts.project.getDependencyMeta(ie,e.version)}let x=p?qb(e,B,Q,{configuration:this.opts.project.configuration,report:this.opts.report}):[],C=E?await this.unplugPackageIfNeeded(e,B,r,Q,o):r.packageFs;if(ee.isAbsolute(r.prefixPath))throw new Error(`Assertion failed: Expected the prefix path (${r.prefixPath}) to be relative to the parent`);let N=ee.resolve(C.getRealPath(),r.prefixPath),U=Kq(this.opts.project.cwd,N),H=new Map,X=new Set;if(f){for(let ie of e.peerDependencies.values())H.set(Y.stringifyIdent(ie),null),X.add(Y.stringifyIdent(ie));if(!c){let ie=Y.devirtualizeLocator(e);this.virtualTemplates.set(ie.locatorHash,{location:Kq(this.opts.project.cwd,ji.resolveVirtual(N)),locator:ie})}}return Ze.getMapWithDefault(this.packageRegistry,a).set(n,{packageLocation:U,packageDependencies:H,packagePeers:X,linkType:e.linkType,discardFromLookup:r.discardFromLookup||!1}),{packageLocation:N,buildDirective:x.length>0?x:null}}async attachInternalDependencies(e,r){let o=this.getPackageInformation(e);for(let[a,n]of r){let c=Y.areIdentsEqual(a,n)?n.reference:[Y.stringifyIdent(n),n.reference];o.packageDependencies.set(Y.stringifyIdent(a),c)}}async attachExternalDependents(e,r){for(let o of r)this.getDiskInformation(o).packageDependencies.set(Y.stringifyIdent(e),e.reference)}async finalizeInstall(){if(this.opts.project.configuration.get("pnpMode")!==this.mode)return;let e=t0(this.opts.project);if(this.isEsmEnabled()||await ge.removePromise(e.esmLoader),this.opts.project.configuration.get("nodeLinker")!=="pnp"){await ge.removePromise(e.cjs),await ge.removePromise(e.data),await ge.removePromise(e.esmLoader),await ge.removePromise(this.opts.project.configuration.get("pnpUnpluggedFolder"));return}for(let{locator:E,location:B}of this.virtualTemplates.values())Ze.getMapWithDefault(this.packageRegistry,Y.stringifyIdent(E)).set(E.reference,{packageLocation:B,packageDependencies:new Map,packagePeers:new Set,linkType:"SOFT",discardFromLookup:!1});this.packageRegistry.set(null,new Map([[null,this.getPackageInformation(this.opts.project.topLevelWorkspace.anchoredLocator)]]));let r=this.opts.project.configuration.get("pnpFallbackMode"),o=this.opts.project.workspaces.map(({anchoredLocator:E})=>({name:Y.stringifyIdent(E),reference:E.reference})),a=r!=="none",n=[],c=new Map,f=Ze.buildIgnorePattern([".yarn/sdks/**",...this.opts.project.configuration.get("pnpIgnorePatterns")]),g=this.packageRegistry,p=this.opts.project.configuration.get("pnpShebang");if(r==="dependencies-only")for(let E of this.opts.project.storedPackages.values())this.opts.project.tryWorkspaceByLocator(E)&&n.push({name:Y.stringifyIdent(E),reference:E.reference});return await this.asyncActions.wait(),await this.finalizeInstallWithPnp({dependencyTreeRoots:o,enableTopLevelFallback:a,fallbackExclusionList:n,fallbackPool:c,ignorePattern:f,packageRegistry:g,shebang:p}),{customData:this.customData}}async transformPnpSettings(e){}isEsmEnabled(){if(this.opts.project.configuration.sources.has("pnpEnableEsmLoader"))return this.opts.project.configuration.get("pnpEnableEsmLoader");if(this.isESMLoaderRequired)return!0;for(let e of this.opts.project.workspaces)if(e.manifest.type==="module")return!0;return!1}async finalizeInstallWithPnp(e){let r=t0(this.opts.project),o=await this.locateNodeModules(e.ignorePattern);if(o.length>0){this.opts.report.reportWarning(31,"One or more node_modules have been detected and will be removed. This operation may take some time.");for(let n of o)await ge.removePromise(n)}if(await this.transformPnpSettings(e),this.opts.project.configuration.get("pnpEnableInlining")){let n=DBe(e);await ge.changeFilePromise(r.cjs,n,{automaticNewlines:!0,mode:493}),await ge.removePromise(r.data)}else{let{dataFile:n,loaderFile:c}=SBe(e);await ge.changeFilePromise(r.cjs,c,{automaticNewlines:!0,mode:493}),await ge.changeFilePromise(r.data,n,{automaticNewlines:!0,mode:420})}this.isEsmEnabled()&&(this.opts.report.reportWarning(0,"ESM support for PnP uses the experimental loader API and is therefore experimental"),await ge.changeFilePromise(r.esmLoader,(0,Lq.default)(),{automaticNewlines:!0,mode:420}));let a=this.opts.project.configuration.get("pnpUnpluggedFolder");if(this.unpluggedPaths.size===0)await ge.removePromise(a);else for(let n of await ge.readdirPromise(a)){let c=ee.resolve(a,n);this.unpluggedPaths.has(c)||await ge.removePromise(c)}}async locateNodeModules(e){let r=[],o=e?new RegExp(e):null;for(let a of this.opts.project.workspaces){let n=ee.join(a.cwd,"node_modules");if(o&&o.test(ee.relative(this.opts.project.cwd,a.cwd))||!ge.existsSync(n))continue;let c=await ge.readdirPromise(n,{withFileTypes:!0}),f=c.filter(g=>!g.isDirectory()||g.name===".bin"||!g.name.startsWith("."));if(f.length===c.length)r.push(n);else for(let g of f)r.push(ee.join(n,g.name))}return r}async unplugPackageIfNeeded(e,r,o,a,n){return this.shouldBeUnplugged(e,r,a)?this.unplugPackage(e,o,n):o.packageFs}shouldBeUnplugged(e,r,o){return typeof o.unplugged<"u"?o.unplugged:nBt.has(e.identHash)||e.conditions!=null?!0:r.manifest.preferUnplugged!==null?r.manifest.preferUnplugged:!!(qb(e,r,o,{configuration:this.opts.project.configuration}).length>0||r.misc.extractHint)}async unplugPackage(e,r,o){let a=fQ(e,{configuration:this.opts.project.configuration});return this.opts.project.disabledLocators.has(e.locatorHash)?new au(a,{baseFs:r.packageFs,pathUtils:ee}):(this.unpluggedPaths.add(a),o.holdFetchResult(this.asyncActions.set(e.locatorHash,async()=>{let n=ee.join(a,r.prefixPath,".ready");await ge.existsPromise(n)||(this.opts.project.storedBuildState.delete(e.locatorHash),await ge.mkdirPromise(a,{recursive:!0}),await ge.copyPromise(a,Bt.dot,{baseFs:r.packageFs,overwrite:!1}),await ge.writeFilePromise(n,""))})),new Qn(a))}getPackageInformation(e){let r=Y.stringifyIdent(e),o=e.reference,a=this.packageRegistry.get(r);if(!a)throw new Error(`Assertion failed: The package information store should have been available (for ${Y.prettyIdent(this.opts.project.configuration,e)})`);let n=a.get(o);if(!n)throw new Error(`Assertion failed: The package information should have been available (for ${Y.prettyLocator(this.opts.project.configuration,e)})`);return n}getDiskInformation(e){let r=Ze.getMapWithDefault(this.packageRegistry,"@@disk"),o=Kq(this.opts.project.cwd,e);return Ze.getFactoryWithDefault(r,o,()=>({packageLocation:o,packageDependencies:new Map,packagePeers:new Set,linkType:"SOFT",discardFromLookup:!1}))}};function Kq(t,e){let r=ee.relative(t,e);return r.match(/^\.{0,2}\//)||(r=`./${r}`),r.replace(/\/?$/,"/")}async function iBt(t){let e=await Gt.tryFind(t.prefixPath,{baseFs:t.packageFs})??new Gt,r=new Set(["preinstall","install","postinstall"]);for(let o of e.scripts.keys())r.has(o)||e.scripts.delete(o);return{manifest:{scripts:e.scripts,preferUnplugged:e.preferUnplugged,type:e.type},misc:{extractHint:Oq(t),hasBindingGyp:Uq(t)}}}$e();$e();var Ml=be(Vt()),VBe=be(pa());var r0=class extends gt{constructor(){super(...arguments);this.all=Ml.Option.Boolean("-A,--all",!1,{description:"Unplug direct dependencies from the entire project"});this.recursive=Ml.Option.Boolean("-R,--recursive",!1,{description:"Unplug both direct and transitive dependencies"});this.json=Ml.Option.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.patterns=Ml.Option.Rest()}async execute(){let r=await rt.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await xt.find(r,this.context.cwd),n=await $r.find(r);if(!a)throw new lr(o.cwd,this.context.cwd);if(r.get("nodeLinker")!=="pnp")throw new Ml.UsageError("This command can only be used if the `nodeLinker` option is set to `pnp`");await o.restoreInstallState();let c=new Set(this.patterns),f=this.patterns.map(x=>{let C=Y.parseDescriptor(x),N=C.range!=="unknown"?C:Y.makeDescriptor(C,"*");if(!Zr.validRange(N.range))throw new Ml.UsageError(`The range of the descriptor patterns must be a valid semver range (${Y.prettyDescriptor(r,N)})`);return U=>{let H=Y.stringifyIdent(U);return!VBe.default.isMatch(H,Y.stringifyIdent(N))||U.version&&!Zr.satisfiesWithPrereleases(U.version,N.range)?!1:(c.delete(x),!0)}}),g=()=>{let x=[];for(let C of o.storedPackages.values())!o.tryWorkspaceByLocator(C)&&!Y.isVirtualLocator(C)&&f.some(N=>N(C))&&x.push(C);return x},p=x=>{let C=new Set,N=[],U=(H,X)=>{if(!C.has(H.locatorHash)&&(C.add(H.locatorHash),!o.tryWorkspaceByLocator(H)&&f.some(ie=>ie(H))&&N.push(H),!(X>0&&!this.recursive)))for(let ie of H.dependencies.values()){let fe=o.storedResolutions.get(ie.descriptorHash);if(!fe)throw new Error("Assertion failed: The resolution should have been registered");let ye=o.storedPackages.get(fe);if(!ye)throw new Error("Assertion failed: The package should have been registered");U(ye,X+1)}};for(let H of x)U(H.anchoredPackage,0);return N},E,B;if(this.all&&this.recursive?(E=g(),B="the project"):this.all?(E=p(o.workspaces),B="any workspace"):(E=p([a]),B="this workspace"),c.size>1)throw new Ml.UsageError(`Patterns ${Ne.prettyList(r,c,Ne.Type.CODE)} don't match any packages referenced by ${B}`);if(c.size>0)throw new Ml.UsageError(`Pattern ${Ne.prettyList(r,c,Ne.Type.CODE)} doesn't match any packages referenced by ${B}`);return E=Ze.sortMap(E,x=>Y.stringifyLocator(x)),(await St.start({configuration:r,stdout:this.context.stdout,json:this.json},async x=>{for(let C of E){let N=C.version??"unknown",U=o.topLevelWorkspace.manifest.ensureDependencyMeta(Y.makeDescriptor(C,N));U.unplugged=!0,x.reportInfo(0,`Will unpack ${Y.prettyLocator(r,C)} to ${Ne.pretty(r,fQ(C,{configuration:r}),Ne.Type.PATH)}`),x.reportJson({locator:Y.stringifyLocator(C),version:N})}await o.topLevelWorkspace.persistManifest(),x.reportSeparator(),await o.install({cache:n,report:x})})).exitCode()}};r0.paths=[["unplug"]],r0.usage=Ml.Command.Usage({description:"force the unpacking of a list of packages",details:"\n This command will add the selectors matching the specified patterns to the list of packages that must be unplugged when installed.\n\n A package being unplugged means that instead of being referenced directly through its archive, it will be unpacked at install time in the directory configured via `pnpUnpluggedFolder`. Note that unpacking packages this way is generally not recommended because it'll make it harder to store your packages within the repository. However, it's a good approach to quickly and safely debug some packages, and can even sometimes be required depending on the context (for example when the package contains shellscripts).\n\n Running the command will set a persistent flag inside your top-level `package.json`, in the `dependenciesMeta` field. As such, to undo its effects, you'll need to revert the changes made to the manifest and run `yarn install` to apply the modification.\n\n By default, only direct dependencies from the current workspace are affected. If `-A,--all` is set, direct dependencies from the entire project are affected. Using the `-R,--recursive` flag will affect transitive dependencies as well as direct ones.\n\n This command accepts glob patterns inside the scope and name components (not the range). Make sure to escape the patterns to prevent your own shell from trying to expand them.\n ",examples:[["Unplug the lodash dependency from the active workspace","yarn unplug lodash"],["Unplug all instances of lodash referenced by any workspace","yarn unplug lodash -A"],["Unplug all instances of lodash referenced by the active workspace and its dependencies","yarn unplug lodash -R"],["Unplug all instances of lodash, anywhere","yarn unplug lodash -AR"],["Unplug one specific version of lodash","yarn unplug lodash@1.2.3"],["Unplug all packages with the `@babel` scope","yarn unplug '@babel/*'"],["Unplug all packages (only for testing, not recommended)","yarn unplug -R '*'"]]});var t0=t=>({cjs:ee.join(t.cwd,Xr.pnpCjs),data:ee.join(t.cwd,Xr.pnpData),esmLoader:ee.join(t.cwd,Xr.pnpEsmLoader)}),ZBe=t=>/\s/.test(t)?JSON.stringify(t):t;async function sBt(t,e,r){let o=t0(t),a=`--require ${ZBe(me.fromPortablePath(o.cjs))}`;if(ge.existsSync(o.esmLoader)&&(a=`${a} --experimental-loader ${(0,XBe.pathToFileURL)(me.fromPortablePath(o.esmLoader)).href}`),o.cjs.includes(" ")&&zBe.default.lt(process.versions.node,"12.0.0"))throw new Error(`Expected the build location to not include spaces when using Node < 12.0.0 (${process.versions.node})`);if(ge.existsSync(o.cjs)){let n=e.NODE_OPTIONS||"",c=/\s*--require\s+\S*\.pnp\.c?js\s*/g,f=/\s*--experimental-loader\s+\S*\.pnp\.loader\.mjs\s*/;n=n.replace(c," ").replace(f," ").trim(),n=n?`${a} ${n}`:a,e.NODE_OPTIONS=n}}async function oBt(t,e){let r=t0(t);e(r.cjs),e(r.data),e(r.esmLoader),e(t.configuration.get("pnpUnpluggedFolder"))}var aBt={hooks:{populateYarnPaths:oBt,setupScriptEnvironment:sBt},configuration:{nodeLinker:{description:'The linker used for installing Node packages, one of: "pnp", "node-modules"',type:"STRING",default:"pnp"},pnpMode:{description:"If 'strict', generates standard PnP maps. If 'loose', merges them with the n_m resolution.",type:"STRING",default:"strict"},pnpShebang:{description:"String to prepend to the generated PnP script",type:"STRING",default:"#!/usr/bin/env node"},pnpIgnorePatterns:{description:"Array of glob patterns; files matching them will use the classic resolution",type:"STRING",default:[],isArray:!0},pnpEnableEsmLoader:{description:"If true, Yarn will generate an ESM loader (`.pnp.loader.mjs`). If this is not explicitly set Yarn tries to automatically detect whether ESM support is required.",type:"BOOLEAN",default:!1},pnpEnableInlining:{description:"If true, the PnP data will be inlined along with the generated loader",type:"BOOLEAN",default:!0},pnpFallbackMode:{description:"If true, the generated PnP loader will follow the top-level fallback rule",type:"STRING",default:"dependencies-only"},pnpUnpluggedFolder:{description:"Folder where the unplugged packages must be stored",type:"ABSOLUTE_PATH",default:"./.yarn/unplugged"}},linkers:[e0],commands:[r0]},ABt=aBt;var o1e=be(n1e()),Wq=be(Vt()),zq=be(Ie("crypto")),a1e=be(Ie("fs")),A1e=1,Vi="node_modules",Gb=".bin",l1e=".yarn-state.yml",Xq=(o=>(o.CLASSIC="classic",o.HARDLINKS_LOCAL="hardlinks-local",o.HARDLINKS_GLOBAL="hardlinks-global",o))(Xq||{}),pQ=class{constructor(){this.installStateCache=new Map}getCustomDataKey(){return JSON.stringify({name:"NodeModulesLinker",version:3})}supportsPackage(e,r){return this.isEnabled(r)}async findPackageLocation(e,r){if(!this.isEnabled(r))throw new Error("Assertion failed: Expected the node-modules linker to be enabled");let o=r.project.tryWorkspaceByLocator(e);if(o)return o.cwd;let a=await Ze.getFactoryWithDefault(this.installStateCache,r.project.cwd,async()=>await Vq(r.project,{unrollAliases:!0}));if(a===null)throw new Wq.UsageError("Couldn't find the node_modules state file - running an install might help (findPackageLocation)");let n=a.locatorMap.get(Y.stringifyLocator(e));if(!n){let f=new Wq.UsageError(`Couldn't find ${Y.prettyLocator(r.project.configuration,e)} in the currently installed node_modules map - running an install might help`);throw f.code="LOCATOR_NOT_INSTALLED",f}let c=r.project.configuration.startingCwd;return n.locations.find(f=>ee.contains(c,f))||n.locations[0]}async findPackageLocator(e,r){if(!this.isEnabled(r))return null;let o=await Ze.getFactoryWithDefault(this.installStateCache,r.project.cwd,async()=>await Vq(r.project,{unrollAliases:!0}));if(o===null)return null;let{locationRoot:a,segments:n}=jb(ee.resolve(e),{skipPrefix:r.project.cwd}),c=o.locationTree.get(a);if(!c)return null;let f=c.locator;for(let g of n){if(c=c.children.get(g),!c)break;f=c.locator||f}return Y.parseLocator(f)}makeInstaller(e){return new Jq(e)}isEnabled(e){return e.project.configuration.get("nodeLinker")==="node-modules"}},Jq=class{constructor(e){this.opts=e;this.localStore=new Map;this.realLocatorChecksums=new Map;this.customData={store:new Map}}attachCustomData(e){this.customData=e}async installPackage(e,r){let o=ee.resolve(r.packageFs.getRealPath(),r.prefixPath),a=this.customData.store.get(e.locatorHash);if(typeof a>"u"&&(a=await vBt(e,r),e.linkType==="HARD"&&this.customData.store.set(e.locatorHash,a)),!Y.isPackageCompatible(e,this.opts.project.configuration.getSupportedArchitectures()))return{packageLocation:null,buildDirective:null};let n=new Map,c=new Set;n.has(Y.stringifyIdent(e))||n.set(Y.stringifyIdent(e),e.reference);let f=e;if(Y.isVirtualLocator(e)){f=Y.devirtualizeLocator(e);for(let E of e.peerDependencies.values())n.set(Y.stringifyIdent(E),null),c.add(Y.stringifyIdent(E))}let g={packageLocation:`${me.fromPortablePath(o)}/`,packageDependencies:n,packagePeers:c,linkType:e.linkType,discardFromLookup:r.discardFromLookup??!1};this.localStore.set(e.locatorHash,{pkg:e,customPackageData:a,dependencyMeta:this.opts.project.getDependencyMeta(e,e.version),pnpNode:g});let p=r.checksum?r.checksum.substring(r.checksum.indexOf("/")+1):null;return this.realLocatorChecksums.set(f.locatorHash,p),{packageLocation:o,buildDirective:null}}async attachInternalDependencies(e,r){let o=this.localStore.get(e.locatorHash);if(typeof o>"u")throw new Error("Assertion failed: Expected information object to have been registered");for(let[a,n]of r){let c=Y.areIdentsEqual(a,n)?n.reference:[Y.stringifyIdent(n),n.reference];o.pnpNode.packageDependencies.set(Y.stringifyIdent(a),c)}}async attachExternalDependents(e,r){throw new Error("External dependencies haven't been implemented for the node-modules linker")}async finalizeInstall(){if(this.opts.project.configuration.get("nodeLinker")!=="node-modules")return;let e=new ji({baseFs:new ll({maxOpenFiles:80,readOnlyArchives:!0})}),r=await Vq(this.opts.project),o=this.opts.project.configuration.get("nmMode");(r===null||o!==r.nmMode)&&(this.opts.project.storedBuildState.clear(),r={locatorMap:new Map,binSymlinks:new Map,locationTree:new Map,nmMode:o,mtimeMs:0});let a=new Map(this.opts.project.workspaces.map(Q=>{var C;let x=this.opts.project.configuration.get("nmHoistingLimits");try{x=Ze.validateEnum(nQ,((C=Q.manifest.installConfig)==null?void 0:C.hoistingLimits)??x)}catch{let U=Y.prettyWorkspace(this.opts.project.configuration,Q);this.opts.report.reportWarning(57,`${U}: Invalid 'installConfig.hoistingLimits' value. Expected one of ${Object.values(nQ).join(", ")}, using default: "${x}"`)}return[Q.relativeCwd,x]})),n=new Map(this.opts.project.workspaces.map(Q=>{var C;let x=this.opts.project.configuration.get("nmSelfReferences");return x=((C=Q.manifest.installConfig)==null?void 0:C.selfReferences)??x,[Q.relativeCwd,x]})),c={VERSIONS:{std:1},topLevel:{name:null,reference:null},getLocator:(Q,x)=>Array.isArray(x)?{name:x[0],reference:x[1]}:{name:Q,reference:x},getDependencyTreeRoots:()=>this.opts.project.workspaces.map(Q=>{let x=Q.anchoredLocator;return{name:Y.stringifyIdent(Q.locator),reference:x.reference}}),getPackageInformation:Q=>{let x=Q.reference===null?this.opts.project.topLevelWorkspace.anchoredLocator:Y.makeLocator(Y.parseIdent(Q.name),Q.reference),C=this.localStore.get(x.locatorHash);if(typeof C>"u")throw new Error("Assertion failed: Expected the package reference to have been registered");return C.pnpNode},findPackageLocator:Q=>{let x=this.opts.project.tryWorkspaceByCwd(me.toPortablePath(Q));if(x!==null){let C=x.anchoredLocator;return{name:Y.stringifyIdent(C),reference:C.reference}}throw new Error("Assertion failed: Unimplemented")},resolveToUnqualified:()=>{throw new Error("Assertion failed: Unimplemented")},resolveUnqualified:()=>{throw new Error("Assertion failed: Unimplemented")},resolveRequest:()=>{throw new Error("Assertion failed: Unimplemented")},resolveVirtual:Q=>me.fromPortablePath(ji.resolveVirtual(me.toPortablePath(Q)))},{tree:f,errors:g,preserveSymlinksRequired:p}=iQ(c,{pnpifyFs:!1,validateExternalSoftLinks:!0,hoistingLimitsByCwd:a,project:this.opts.project,selfReferencesByCwd:n});if(!f){for(let{messageName:Q,text:x}of g)this.opts.report.reportError(Q,x);return}let E=Sq(f);await bBt(r,E,{baseFs:e,project:this.opts.project,report:this.opts.report,realLocatorChecksums:this.realLocatorChecksums,loadManifest:async Q=>{let x=Y.parseLocator(Q),C=this.localStore.get(x.locatorHash);if(typeof C>"u")throw new Error("Assertion failed: Expected the slot to exist");return C.customPackageData.manifest}});let B=[];for(let[Q,x]of E.entries()){if(f1e(Q))continue;let C=Y.parseLocator(Q),N=this.localStore.get(C.locatorHash);if(typeof N>"u")throw new Error("Assertion failed: Expected the slot to exist");if(this.opts.project.tryWorkspaceByLocator(N.pkg))continue;let U=_u.extractBuildScripts(N.pkg,N.customPackageData,N.dependencyMeta,{configuration:this.opts.project.configuration,report:this.opts.report});U.length!==0&&B.push({buildLocations:x.locations,locatorHash:C.locatorHash,buildDirective:U})}return p&&this.opts.report.reportWarning(72,`The application uses portals and that's why ${Ne.pretty(this.opts.project.configuration,"--preserve-symlinks",Ne.Type.CODE)} Node option is required for launching it`),{customData:this.customData,records:B}}};async function vBt(t,e){let r=await Gt.tryFind(e.prefixPath,{baseFs:e.packageFs})??new Gt,o=new Set(["preinstall","install","postinstall"]);for(let a of r.scripts.keys())o.has(a)||r.scripts.delete(a);return{manifest:{bin:r.bin,scripts:r.scripts},misc:{hasBindingGyp:_u.hasBindingGyp(e)}}}async function DBt(t,e,r,o,{installChangedByUser:a}){let n="";n+=`# Warning: This file is automatically generated. Removing it is fine, but will -`,n+=`# cause your node_modules installation to become invalidated. -`,n+=` -`,n+=`__metadata: -`,n+=` version: ${A1e} -`,n+=` nmMode: ${o.value} -`;let c=Array.from(e.keys()).sort(),f=Y.stringifyLocator(t.topLevelWorkspace.anchoredLocator);for(let E of c){let B=e.get(E);n+=` -`,n+=`${JSON.stringify(E)}: -`,n+=` locations: -`;for(let Q of B.locations){let x=ee.contains(t.cwd,Q);if(x===null)throw new Error(`Assertion failed: Expected the path to be within the project (${Q})`);n+=` - ${JSON.stringify(x)} -`}if(B.aliases.length>0){n+=` aliases: -`;for(let Q of B.aliases)n+=` - ${JSON.stringify(Q)} -`}if(E===f&&r.size>0){n+=` bin: -`;for(let[Q,x]of r){let C=ee.contains(t.cwd,Q);if(C===null)throw new Error(`Assertion failed: Expected the path to be within the project (${Q})`);n+=` ${JSON.stringify(C)}: -`;for(let[N,U]of x){let H=ee.relative(ee.join(Q,Vi),U);n+=` ${JSON.stringify(N)}: ${JSON.stringify(H)} -`}}}}let g=t.cwd,p=ee.join(g,Vi,l1e);a&&await ge.removePromise(p),await ge.changeFilePromise(p,n,{automaticNewlines:!0})}async function Vq(t,{unrollAliases:e=!1}={}){let r=t.cwd,o=ee.join(r,Vi,l1e),a;try{a=await ge.statPromise(o)}catch{}if(!a)return null;let n=os(await ge.readFilePromise(o,"utf8"));if(n.__metadata.version>A1e)return null;let c=n.__metadata.nmMode||"hardlinks-local",f=new Map,g=new Map;delete n.__metadata;for(let[p,E]of Object.entries(n)){let B=E.locations.map(x=>ee.join(r,x)),Q=E.bin;if(Q)for(let[x,C]of Object.entries(Q)){let N=ee.join(r,me.toPortablePath(x)),U=Ze.getMapWithDefault(g,N);for(let[H,X]of Object.entries(C))U.set(ss(H),me.toPortablePath([N,Vi,X].join(ee.sep)))}if(f.set(p,{target:Bt.dot,linkType:"HARD",locations:B,aliases:E.aliases||[]}),e&&E.aliases)for(let x of E.aliases){let{scope:C,name:N}=Y.parseLocator(p),U=Y.makeLocator(Y.makeIdent(C,N),x),H=Y.stringifyLocator(U);f.set(H,{target:Bt.dot,linkType:"HARD",locations:B,aliases:[]})}}return{locatorMap:f,binSymlinks:g,locationTree:c1e(f,{skipPrefix:t.cwd}),nmMode:c,mtimeMs:a.mtimeMs}}var iI=async(t,e)=>{if(t.split(ee.sep).indexOf(Vi)<0)throw new Error(`Assertion failed: trying to remove dir that doesn't contain node_modules: ${t}`);try{if(!e.innerLoop){let o=e.allowSymlink?await ge.statPromise(t):await ge.lstatPromise(t);if(e.allowSymlink&&!o.isDirectory()||!e.allowSymlink&&o.isSymbolicLink()){await ge.unlinkPromise(t);return}}let r=await ge.readdirPromise(t,{withFileTypes:!0});for(let o of r){let a=ee.join(t,ss(o.name));o.isDirectory()?(o.name!==Vi||e&&e.innerLoop)&&await iI(a,{innerLoop:!0,contentsOnly:!1}):await ge.unlinkPromise(a)}e.contentsOnly||await ge.rmdirPromise(t)}catch(r){if(r.code!=="ENOENT"&&r.code!=="ENOTEMPTY")throw r}},i1e=4,jb=(t,{skipPrefix:e})=>{let r=ee.contains(e,t);if(r===null)throw new Error(`Assertion failed: Writing attempt prevented to ${t} which is outside project root: ${e}`);let o=r.split(ee.sep).filter(g=>g!==""),a=o.indexOf(Vi),n=o.slice(0,a).join(ee.sep),c=ee.join(e,n),f=o.slice(a);return{locationRoot:c,segments:f}},c1e=(t,{skipPrefix:e})=>{let r=new Map;if(t===null)return r;let o=()=>({children:new Map,linkType:"HARD"});for(let[a,n]of t.entries()){if(n.linkType==="SOFT"&&ee.contains(e,n.target)!==null){let f=Ze.getFactoryWithDefault(r,n.target,o);f.locator=a,f.linkType=n.linkType}for(let c of n.locations){let{locationRoot:f,segments:g}=jb(c,{skipPrefix:e}),p=Ze.getFactoryWithDefault(r,f,o);for(let E=0;E{let r;try{process.platform==="win32"&&(r=await ge.lstatPromise(t))}catch{}process.platform=="win32"&&(!r||r.isDirectory())?await ge.symlinkPromise(t,e,"junction"):await ge.symlinkPromise(ee.relative(ee.dirname(e),t),e)};async function u1e(t,e,r){let o=ee.join(t,ss(`${zq.default.randomBytes(16).toString("hex")}.tmp`));try{await ge.writeFilePromise(o,r);try{await ge.linkPromise(o,e)}catch{}}finally{await ge.unlinkPromise(o)}}async function SBt({srcPath:t,dstPath:e,srcMode:r,globalHardlinksStore:o,baseFs:a,nmMode:n,digest:c}){if(n.value==="hardlinks-global"&&o&&c){let g=ee.join(o,c.substring(0,2),`${c.substring(2)}.dat`),p;try{if(await Oi.checksumFile(g,{baseFs:ge,algorithm:"sha1"})!==c){let B=ee.join(o,ss(`${zq.default.randomBytes(16).toString("hex")}.tmp`));await ge.renamePromise(g,B);let Q=await a.readFilePromise(t);await ge.writeFilePromise(B,Q);try{await ge.linkPromise(B,g),await ge.unlinkPromise(B)}catch{}}await ge.linkPromise(g,e),p=!0}catch{p=!1}if(!p){let E=await a.readFilePromise(t);await u1e(o,g,E);try{await ge.linkPromise(g,e)}catch(B){B&&B.code&&B.code=="EXDEV"&&(n.value="hardlinks-local",await a.copyFilePromise(t,e))}}}else await a.copyFilePromise(t,e);let f=r&511;f!==420&&await ge.chmodPromise(e,f)}var kBt=async(t,e,{baseFs:r,globalHardlinksStore:o,nmMode:a,packageChecksum:n})=>{await ge.mkdirPromise(t,{recursive:!0});let c=async(g=Bt.dot)=>{let p=ee.join(e,g),E=await r.readdirPromise(p,{withFileTypes:!0}),B=new Map;for(let Q of E){let x=ee.join(g,Q.name),C,N=ee.join(p,Q.name);if(Q.isFile()){if(C={kind:"file",mode:(await r.lstatPromise(N)).mode},a.value==="hardlinks-global"){let U=await Oi.checksumFile(N,{baseFs:r,algorithm:"sha1"});C.digest=U}}else if(Q.isDirectory())C={kind:"directory"};else if(Q.isSymbolicLink())C={kind:"symlink",symlinkTo:await r.readlinkPromise(N)};else throw new Error(`Unsupported file type (file: ${N}, mode: 0o${await r.statSync(N).mode.toString(8).padStart(6,"0")})`);if(B.set(x,C),Q.isDirectory()&&x!==Vi){let U=await c(x);for(let[H,X]of U)B.set(H,X)}}return B},f;if(a.value==="hardlinks-global"&&o&&n){let g=ee.join(o,n.substring(0,2),`${n.substring(2)}.json`);try{f=new Map(Object.entries(JSON.parse(await ge.readFilePromise(g,"utf8"))))}catch{f=await c(),await u1e(o,g,Buffer.from(JSON.stringify(Object.fromEntries(f))))}}else f=await c();for(let[g,p]of f){let E=ee.join(e,g),B=ee.join(t,g);p.kind==="directory"?await ge.mkdirPromise(B,{recursive:!0}):p.kind==="file"?await SBt({srcPath:E,dstPath:B,srcMode:p.mode,digest:p.digest,nmMode:a,baseFs:r,globalHardlinksStore:o}):p.kind==="symlink"&&await Zq(ee.resolve(ee.dirname(B),p.symlinkTo),B)}};function xBt(t,e,r,o){let a=new Map,n=new Map,c=new Map,f=!1,g=(p,E,B,Q,x)=>{let C=!0,N=ee.join(p,E),U=new Set;if(E===Vi||E.startsWith("@")){let X;try{X=ge.statSync(N)}catch{}C=!!X,X?X.mtimeMs>r?(f=!0,U=new Set(ge.readdirSync(N))):U=new Set(B.children.get(E).children.keys()):f=!0;let ie=e.get(p);if(ie){let fe=ee.join(p,Vi,Gb),ye;try{ye=ge.statSync(fe)}catch{}if(!ye)f=!0;else if(ye.mtimeMs>r){f=!0;let Qe=new Set(ge.readdirSync(fe)),Pe=new Map;n.set(p,Pe);for(let[pe,Ee]of ie)Qe.has(pe)&&Pe.set(pe,Ee)}else n.set(p,ie)}}else C=x.has(E);let H=B.children.get(E);if(C){let{linkType:X,locator:ie}=H,fe={children:new Map,linkType:X,locator:ie};if(Q.children.set(E,fe),ie){let ye=Ze.getSetWithDefault(c,ie);ye.add(N),c.set(ie,ye)}for(let ye of H.children.keys())g(N,ye,H,fe,U)}else H.locator&&o.storedBuildState.delete(Y.parseLocator(H.locator).locatorHash)};for(let[p,E]of t){let{linkType:B,locator:Q}=E,x={children:new Map,linkType:B,locator:Q};if(a.set(p,x),Q){let C=Ze.getSetWithDefault(c,E.locator);C.add(p),c.set(E.locator,C)}E.children.has(Vi)&&g(p,Vi,E,x,new Set)}return{locationTree:a,binSymlinks:n,locatorLocations:c,installChangedByUser:f}}function f1e(t){let e=Y.parseDescriptor(t);return Y.isVirtualDescriptor(e)&&(e=Y.devirtualizeDescriptor(e)),e.range.startsWith("link:")}async function PBt(t,e,r,{loadManifest:o}){let a=new Map;for(let[f,{locations:g}]of t){let p=f1e(f)?null:await o(f,g[0]),E=new Map;if(p)for(let[B,Q]of p.bin){let x=ee.join(g[0],Q);Q!==""&&ge.existsSync(x)&&E.set(B,Q)}a.set(f,E)}let n=new Map,c=(f,g,p)=>{let E=new Map,B=ee.contains(r,f);if(p.locator&&B!==null){let Q=a.get(p.locator);for(let[x,C]of Q){let N=ee.join(f,me.toPortablePath(C));E.set(ss(x),N)}for(let[x,C]of p.children){let N=ee.join(f,x),U=c(N,N,C);U.size>0&&n.set(f,new Map([...n.get(f)||new Map,...U]))}}else for(let[Q,x]of p.children){let C=c(ee.join(f,Q),g,x);for(let[N,U]of C)E.set(N,U)}return E};for(let[f,g]of e){let p=c(f,f,g);p.size>0&&n.set(f,new Map([...n.get(f)||new Map,...p]))}return n}var s1e=(t,e)=>{if(!t||!e)return t===e;let r=Y.parseLocator(t);Y.isVirtualLocator(r)&&(r=Y.devirtualizeLocator(r));let o=Y.parseLocator(e);return Y.isVirtualLocator(o)&&(o=Y.devirtualizeLocator(o)),Y.areLocatorsEqual(r,o)};function $q(t){return ee.join(t.get("globalFolder"),"store")}async function bBt(t,e,{baseFs:r,project:o,report:a,loadManifest:n,realLocatorChecksums:c}){let f=ee.join(o.cwd,Vi),{locationTree:g,binSymlinks:p,locatorLocations:E,installChangedByUser:B}=xBt(t.locationTree,t.binSymlinks,t.mtimeMs,o),Q=c1e(e,{skipPrefix:o.cwd}),x=[],C=async({srcDir:pe,dstDir:Ee,linkType:ke,globalHardlinksStore:h,nmMode:Ke,packageChecksum:Ce})=>{let Be=(async()=>{try{ke==="SOFT"?(await ge.mkdirPromise(ee.dirname(Ee),{recursive:!0}),await Zq(ee.resolve(pe),Ee)):await kBt(Ee,pe,{baseFs:r,globalHardlinksStore:h,nmMode:Ke,packageChecksum:Ce})}catch(le){throw le.message=`While persisting ${pe} -> ${Ee} ${le.message}`,le}finally{fe.tick()}})().then(()=>x.splice(x.indexOf(Be),1));x.push(Be),x.length>i1e&&await Promise.race(x)},N=async(pe,Ee,ke)=>{let h=(async()=>{let Ke=async(Ce,Be,le)=>{try{le.innerLoop||await ge.mkdirPromise(Be,{recursive:!0});let re=await ge.readdirPromise(Ce,{withFileTypes:!0});for(let Se of re){if(!le.innerLoop&&Se.name===Gb)continue;let Ue=ee.join(Ce,Se.name),dt=ee.join(Be,Se.name);Se.isDirectory()?(Se.name!==Vi||le&&le.innerLoop)&&(await ge.mkdirPromise(dt,{recursive:!0}),await Ke(Ue,dt,{...le,innerLoop:!0})):Pe.value==="hardlinks-local"||Pe.value==="hardlinks-global"?await ge.linkPromise(Ue,dt):await ge.copyFilePromise(Ue,dt,a1e.default.constants.COPYFILE_FICLONE)}}catch(re){throw le.innerLoop||(re.message=`While cloning ${Ce} -> ${Be} ${re.message}`),re}finally{le.innerLoop||fe.tick()}};await Ke(pe,Ee,ke)})().then(()=>x.splice(x.indexOf(h),1));x.push(h),x.length>i1e&&await Promise.race(x)},U=async(pe,Ee,ke)=>{if(ke)for(let[h,Ke]of Ee.children){let Ce=ke.children.get(h);await U(ee.join(pe,h),Ke,Ce)}else{Ee.children.has(Vi)&&await iI(ee.join(pe,Vi),{contentsOnly:!1});let h=ee.basename(pe)===Vi&&Q.has(ee.join(ee.dirname(pe),ee.sep));await iI(pe,{contentsOnly:pe===f,allowSymlink:h})}};for(let[pe,Ee]of g){let ke=Q.get(pe);for(let[h,Ke]of Ee.children){if(h===".")continue;let Ce=ke&&ke.children.get(h),Be=ee.join(pe,h);await U(Be,Ke,Ce)}}let H=async(pe,Ee,ke)=>{if(ke){s1e(Ee.locator,ke.locator)||await iI(pe,{contentsOnly:Ee.linkType==="HARD"});for(let[h,Ke]of Ee.children){let Ce=ke.children.get(h);await H(ee.join(pe,h),Ke,Ce)}}else{Ee.children.has(Vi)&&await iI(ee.join(pe,Vi),{contentsOnly:!0});let h=ee.basename(pe)===Vi&&Q.has(ee.join(ee.dirname(pe),ee.sep));await iI(pe,{contentsOnly:Ee.linkType==="HARD",allowSymlink:h})}};for(let[pe,Ee]of Q){let ke=g.get(pe);for(let[h,Ke]of Ee.children){if(h===".")continue;let Ce=ke&&ke.children.get(h);await H(ee.join(pe,h),Ke,Ce)}}let X=new Map,ie=[];for(let[pe,Ee]of E)for(let ke of Ee){let{locationRoot:h,segments:Ke}=jb(ke,{skipPrefix:o.cwd}),Ce=Q.get(h),Be=h;if(Ce){for(let le of Ke)if(Be=ee.join(Be,le),Ce=Ce.children.get(le),!Ce)break;if(Ce){let le=s1e(Ce.locator,pe),re=e.get(Ce.locator),Se=re.target,Ue=Be,dt=re.linkType;if(le)X.has(Se)||X.set(Se,Ue);else if(Se!==Ue){let q=Y.parseLocator(Ce.locator);Y.isVirtualLocator(q)&&(q=Y.devirtualizeLocator(q)),ie.push({srcDir:Se,dstDir:Ue,linkType:dt,realLocatorHash:q.locatorHash})}}}}for(let[pe,{locations:Ee}]of e.entries())for(let ke of Ee){let{locationRoot:h,segments:Ke}=jb(ke,{skipPrefix:o.cwd}),Ce=g.get(h),Be=Q.get(h),le=h,re=e.get(pe),Se=Y.parseLocator(pe);Y.isVirtualLocator(Se)&&(Se=Y.devirtualizeLocator(Se));let Ue=Se.locatorHash,dt=re.target,q=ke;if(dt===q)continue;let Qt=re.linkType;for(let He of Ke)Be=Be.children.get(He);if(!Ce)ie.push({srcDir:dt,dstDir:q,linkType:Qt,realLocatorHash:Ue});else for(let He of Ke)if(le=ee.join(le,He),Ce=Ce.children.get(He),!Ce){ie.push({srcDir:dt,dstDir:q,linkType:Qt,realLocatorHash:Ue});break}}let fe=po.progressViaCounter(ie.length),ye=a.reportProgress(fe),Qe=o.configuration.get("nmMode"),Pe={value:Qe};try{let pe=Pe.value==="hardlinks-global"?`${$q(o.configuration)}/v1`:null;if(pe&&!await ge.existsPromise(pe)){await ge.mkdirpPromise(pe);for(let ke=0;ke<256;ke++)await ge.mkdirPromise(ee.join(pe,ke.toString(16).padStart(2,"0")))}for(let ke of ie)(ke.linkType==="SOFT"||!X.has(ke.srcDir))&&(X.set(ke.srcDir,ke.dstDir),await C({...ke,globalHardlinksStore:pe,nmMode:Pe,packageChecksum:c.get(ke.realLocatorHash)||null}));await Promise.all(x),x.length=0;for(let ke of ie){let h=X.get(ke.srcDir);ke.linkType!=="SOFT"&&ke.dstDir!==h&&await N(h,ke.dstDir,{nmMode:Pe})}await Promise.all(x),await ge.mkdirPromise(f,{recursive:!0});let Ee=await PBt(e,Q,o.cwd,{loadManifest:n});await FBt(p,Ee,o.cwd),await DBt(o,e,Ee,Pe,{installChangedByUser:B}),Qe=="hardlinks-global"&&Pe.value=="hardlinks-local"&&a.reportWarningOnce(74,"'nmMode' has been downgraded to 'hardlinks-local' due to global cache and install folder being on different devices")}finally{ye.stop()}}async function FBt(t,e,r){for(let o of t.keys()){if(ee.contains(r,o)===null)throw new Error(`Assertion failed. Excepted bin symlink location to be inside project dir, instead it was at ${o}`);if(!e.has(o)){let a=ee.join(o,Vi,Gb);await ge.removePromise(a)}}for(let[o,a]of e){if(ee.contains(r,o)===null)throw new Error(`Assertion failed. Excepted bin symlink location to be inside project dir, instead it was at ${o}`);let n=ee.join(o,Vi,Gb),c=t.get(o)||new Map;await ge.mkdirPromise(n,{recursive:!0});for(let f of c.keys())a.has(f)||(await ge.removePromise(ee.join(n,f)),process.platform==="win32"&&await ge.removePromise(ee.join(n,ss(`${f}.cmd`))));for(let[f,g]of a){let p=c.get(f),E=ee.join(n,f);p!==g&&(process.platform==="win32"?await(0,o1e.default)(me.fromPortablePath(g),me.fromPortablePath(E),{createPwshFile:!1}):(await ge.removePromise(E),await Zq(g,E),ee.contains(r,await ge.realpathPromise(g))!==null&&await ge.chmodPromise(g,493)))}}}$e();Ft();oc();var hQ=class extends e0{constructor(){super(...arguments);this.mode="loose"}makeInstaller(r){return new eG(r)}},eG=class extends Ym{constructor(){super(...arguments);this.mode="loose"}async transformPnpSettings(r){let o=new ji({baseFs:new ll({maxOpenFiles:80,readOnlyArchives:!0})}),a=GBe(r,this.opts.project.cwd,o),{tree:n,errors:c}=iQ(a,{pnpifyFs:!1,project:this.opts.project});if(!n){for(let{messageName:B,text:Q}of c)this.opts.report.reportError(B,Q);return}let f=new Map;r.fallbackPool=f;let g=(B,Q)=>{let x=Y.parseLocator(Q.locator),C=Y.stringifyIdent(x);C===B?f.set(B,x.reference):f.set(B,[C,x.reference])},p=ee.join(this.opts.project.cwd,Xr.nodeModules),E=n.get(p);if(!(typeof E>"u")){if("target"in E)throw new Error("Assertion failed: Expected the root junction point to be a directory");for(let B of E.dirList){let Q=ee.join(p,B),x=n.get(Q);if(typeof x>"u")throw new Error("Assertion failed: Expected the child to have been registered");if("target"in x)g(B,x);else for(let C of x.dirList){let N=ee.join(Q,C),U=n.get(N);if(typeof U>"u")throw new Error("Assertion failed: Expected the subchild to have been registered");if("target"in U)g(`${B}/${C}`,U);else throw new Error("Assertion failed: Expected the leaf junction to be a package")}}}}};var RBt={hooks:{cleanGlobalArtifacts:async t=>{let e=$q(t);await ge.removePromise(e)}},configuration:{nmHoistingLimits:{description:"Prevent packages to be hoisted past specific levels",type:"STRING",values:["workspaces","dependencies","none"],default:"none"},nmMode:{description:'If set to "hardlinks-local" Yarn will utilize hardlinks to reduce disk space consumption inside "node_modules" directories. With "hardlinks-global" Yarn will use global content addressable storage to reduce "node_modules" size across all the projects using this option.',type:"STRING",values:["classic","hardlinks-local","hardlinks-global"],default:"hardlinks-local"},nmSelfReferences:{description:"If set to 'false' the workspace will not be allowed to require itself and corresponding self-referencing symlink will not be created",type:"BOOLEAN",default:!0}},linkers:[pQ,hQ]},TBt=RBt;var XG={};tr(XG,{NpmHttpFetcher:()=>mQ,NpmRemapResolver:()=>yQ,NpmSemverFetcher:()=>OA,NpmSemverResolver:()=>CQ,NpmTagResolver:()=>EQ,default:()=>HQt,npmConfigUtils:()=>Ai,npmHttpUtils:()=>wn,npmPublishUtils:()=>dI});$e();var y1e=be(wi());var ni="npm:";var wn={};tr(wn,{AuthType:()=>m1e,customPackageError:()=>Sg,del:()=>UBt,get:()=>Nc,getIdentUrl:()=>i0,handleInvalidAuthenticationError:()=>n0,post:()=>LBt,put:()=>OBt});$e();$e();var h1e=be(C1()),d1e=Ie("url");var Ai={};tr(Ai,{RegistryType:()=>g1e,getAuditRegistry:()=>NBt,getAuthConfiguration:()=>nG,getDefaultRegistry:()=>dQ,getPublishRegistry:()=>MBt,getRegistryConfiguration:()=>p1e,getScopeConfiguration:()=>rG,getScopeRegistry:()=>Dg,normalizeRegistry:()=>Hu});var g1e=(o=>(o.AUDIT_REGISTRY="npmAuditRegistry",o.FETCH_REGISTRY="npmRegistryServer",o.PUBLISH_REGISTRY="npmPublishRegistry",o))(g1e||{});function Hu(t){return t.replace(/\/$/,"")}function NBt({configuration:t}){return dQ({configuration:t,type:"npmAuditRegistry"})}function MBt(t,{configuration:e}){var r;return(r=t.publishConfig)!=null&&r.registry?Hu(t.publishConfig.registry):t.name?Dg(t.name.scope,{configuration:e,type:"npmPublishRegistry"}):dQ({configuration:e,type:"npmPublishRegistry"})}function Dg(t,{configuration:e,type:r="npmRegistryServer"}){let o=rG(t,{configuration:e});if(o===null)return dQ({configuration:e,type:r});let a=o.get(r);return a===null?dQ({configuration:e,type:r}):Hu(a)}function dQ({configuration:t,type:e="npmRegistryServer"}){let r=t.get(e);return Hu(r!==null?r:t.get("npmRegistryServer"))}function p1e(t,{configuration:e}){let r=e.get("npmRegistries"),o=Hu(t),a=r.get(o);if(typeof a<"u")return a;let n=r.get(o.replace(/^[a-z]+:/,""));return typeof n<"u"?n:null}function rG(t,{configuration:e}){if(t===null)return null;let o=e.get("npmScopes").get(t);return o||null}function nG(t,{configuration:e,ident:r}){let o=r&&rG(r.scope,{configuration:e});return(o==null?void 0:o.get("npmAuthIdent"))||(o==null?void 0:o.get("npmAuthToken"))?o:p1e(t,{configuration:e})||e}var m1e=(a=>(a[a.NO_AUTH=0]="NO_AUTH",a[a.BEST_EFFORT=1]="BEST_EFFORT",a[a.CONFIGURATION=2]="CONFIGURATION",a[a.ALWAYS_AUTH=3]="ALWAYS_AUTH",a))(m1e||{});async function n0(t,{attemptedAs:e,registry:r,headers:o,configuration:a}){var n,c;if(Wb(t))throw new rr(41,"Invalid OTP token");if(((n=t.originalError)==null?void 0:n.name)==="HTTPError"&&((c=t.originalError)==null?void 0:c.response.statusCode)===401)throw new rr(41,`Invalid authentication (${typeof e!="string"?`as ${await _Bt(r,o,{configuration:a})}`:`attempted as ${e}`})`)}function Sg(t,e){var o;let r=(o=t.response)==null?void 0:o.statusCode;return r?r===404?"Package not found":r>=500&&r<600?`The registry appears to be down (using a ${Ne.applyHyperlink(e,"local cache","https://yarnpkg.com/advanced/lexicon#local-cache")} might have protected you against such outages)`:null:null}function i0(t){return t.scope?`/@${t.scope}%2f${t.name}`:`/${t.name}`}async function Nc(t,{configuration:e,headers:r,ident:o,authType:a,registry:n,...c}){if(o&&typeof n>"u"&&(n=Dg(o.scope,{configuration:e})),o&&o.scope&&typeof a>"u"&&(a=1),typeof n!="string")throw new Error("Assertion failed: The registry should be a string");let f=await Yb(n,{authType:a,configuration:e,ident:o});f&&(r={...r,authorization:f});try{return await Hn.get(t.charAt(0)==="/"?`${n}${t}`:t,{configuration:e,headers:r,...c})}catch(g){throw await n0(g,{registry:n,configuration:e,headers:r}),g}}async function LBt(t,e,{attemptedAs:r,configuration:o,headers:a,ident:n,authType:c=3,registry:f,otp:g,...p}){if(n&&typeof f>"u"&&(f=Dg(n.scope,{configuration:o})),typeof f!="string")throw new Error("Assertion failed: The registry should be a string");let E=await Yb(f,{authType:c,configuration:o,ident:n});E&&(a={...a,authorization:E}),g&&(a={...a,...sI(g)});try{return await Hn.post(f+t,e,{configuration:o,headers:a,...p})}catch(B){if(!Wb(B)||g)throw await n0(B,{attemptedAs:r,registry:f,configuration:o,headers:a}),B;g=await iG();let Q={...a,...sI(g)};try{return await Hn.post(`${f}${t}`,e,{configuration:o,headers:Q,...p})}catch(x){throw await n0(x,{attemptedAs:r,registry:f,configuration:o,headers:a}),x}}}async function OBt(t,e,{attemptedAs:r,configuration:o,headers:a,ident:n,authType:c=3,registry:f,otp:g,...p}){if(n&&typeof f>"u"&&(f=Dg(n.scope,{configuration:o})),typeof f!="string")throw new Error("Assertion failed: The registry should be a string");let E=await Yb(f,{authType:c,configuration:o,ident:n});E&&(a={...a,authorization:E}),g&&(a={...a,...sI(g)});try{return await Hn.put(f+t,e,{configuration:o,headers:a,...p})}catch(B){if(!Wb(B))throw await n0(B,{attemptedAs:r,registry:f,configuration:o,headers:a}),B;g=await iG();let Q={...a,...sI(g)};try{return await Hn.put(`${f}${t}`,e,{configuration:o,headers:Q,...p})}catch(x){throw await n0(x,{attemptedAs:r,registry:f,configuration:o,headers:a}),x}}}async function UBt(t,{attemptedAs:e,configuration:r,headers:o,ident:a,authType:n=3,registry:c,otp:f,...g}){if(a&&typeof c>"u"&&(c=Dg(a.scope,{configuration:r})),typeof c!="string")throw new Error("Assertion failed: The registry should be a string");let p=await Yb(c,{authType:n,configuration:r,ident:a});p&&(o={...o,authorization:p}),f&&(o={...o,...sI(f)});try{return await Hn.del(c+t,{configuration:r,headers:o,...g})}catch(E){if(!Wb(E)||f)throw await n0(E,{attemptedAs:e,registry:c,configuration:r,headers:o}),E;f=await iG();let B={...o,...sI(f)};try{return await Hn.del(`${c}${t}`,{configuration:r,headers:B,...g})}catch(Q){throw await n0(Q,{attemptedAs:e,registry:c,configuration:r,headers:o}),Q}}}async function Yb(t,{authType:e=2,configuration:r,ident:o}){let a=nG(t,{configuration:r,ident:o}),n=KBt(a,e);if(!n)return null;let c=await r.reduceHook(f=>f.getNpmAuthenticationHeader,void 0,t,{configuration:r,ident:o});if(c)return c;if(a.get("npmAuthToken"))return`Bearer ${a.get("npmAuthToken")}`;if(a.get("npmAuthIdent")){let f=a.get("npmAuthIdent");return f.includes(":")?`Basic ${Buffer.from(f).toString("base64")}`:`Basic ${f}`}if(n&&e!==1)throw new rr(33,"No authentication configured for request");return null}function KBt(t,e){switch(e){case 2:return t.get("npmAlwaysAuth");case 1:case 3:return!0;case 0:return!1;default:throw new Error("Unreachable")}}async function _Bt(t,e,{configuration:r}){if(typeof e>"u"||typeof e.authorization>"u")return"an anonymous user";try{return(await Hn.get(new d1e.URL(`${t}/-/whoami`).href,{configuration:r,headers:e,jsonResponse:!0})).username??"an unknown user"}catch{return"an unknown user"}}async function iG(){let{otp:t}=await(0,h1e.prompt)({type:"password",name:"otp",message:"One-time password:",required:!0,onCancel:()=>process.exit(130)});return t}function Wb(t){var e,r;if(((e=t.originalError)==null?void 0:e.name)!=="HTTPError")return!1;try{return((r=t.originalError)==null?void 0:r.response.headers["www-authenticate"].split(/,\s*/).map(a=>a.toLowerCase())).includes("otp")}catch{return!1}}function sI(t){return{["npm-otp"]:t}}var mQ=class{supports(e,r){if(!e.reference.startsWith(ni))return!1;let{selector:o,params:a}=Y.parseRange(e.reference);return!(!y1e.default.valid(o)||a===null||typeof a.__archiveUrl!="string")}getLocalPath(e,r){return null}async fetch(e,r){let o=r.checksums.get(e.locatorHash)||null,[a,n,c]=await r.cache.fetchPackageFromCache(e,o,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${Y.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the remote server`),loader:()=>this.fetchFromNetwork(e,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:Y.getIdentVendorPath(e),checksum:c}}async fetchFromNetwork(e,r){let{params:o}=Y.parseRange(e.reference);if(o===null||typeof o.__archiveUrl!="string")throw new Error("Assertion failed: The archiveUrl querystring parameter should have been available");let a=await Nc(o.__archiveUrl,{customErrorMessage:Sg,configuration:r.project.configuration,ident:e});return await ys.convertToZip(a,{compressionLevel:r.project.configuration.get("compressionLevel"),prefixPath:Y.getIdentVendorPath(e),stripComponents:1})}};$e();var yQ=class{supportsDescriptor(e,r){return!(!e.range.startsWith(ni)||!Y.tryParseDescriptor(e.range.slice(ni.length),!0))}supportsLocator(e,r){return!1}shouldPersistResolution(e,r){throw new Error("Unreachable")}bindDescriptor(e,r,o){return e}getResolutionDependencies(e,r){let o=r.project.configuration.normalizeDependency(Y.parseDescriptor(e.range.slice(ni.length),!0));return r.resolver.getResolutionDependencies(o,r)}async getCandidates(e,r,o){let a=o.project.configuration.normalizeDependency(Y.parseDescriptor(e.range.slice(ni.length),!0));return await o.resolver.getCandidates(a,r,o)}async getSatisfying(e,r,o,a){let n=a.project.configuration.normalizeDependency(Y.parseDescriptor(e.range.slice(ni.length),!0));return a.resolver.getSatisfying(n,r,o,a)}resolve(e,r){throw new Error("Unreachable")}};$e();$e();var C1e=be(wi()),E1e=Ie("url");var OA=class{supports(e,r){if(!e.reference.startsWith(ni))return!1;let o=new E1e.URL(e.reference);return!(!C1e.default.valid(o.pathname)||o.searchParams.has("__archiveUrl"))}getLocalPath(e,r){return null}async fetch(e,r){let o=r.checksums.get(e.locatorHash)||null,[a,n,c]=await r.cache.fetchPackageFromCache(e,o,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${Y.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the remote registry`),loader:()=>this.fetchFromNetwork(e,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:Y.getIdentVendorPath(e),checksum:c}}async fetchFromNetwork(e,r){let o;try{o=await Nc(OA.getLocatorUrl(e),{customErrorMessage:Sg,configuration:r.project.configuration,ident:e})}catch{o=await Nc(OA.getLocatorUrl(e).replace(/%2f/g,"/"),{customErrorMessage:Sg,configuration:r.project.configuration,ident:e})}return await ys.convertToZip(o,{compressionLevel:r.project.configuration.get("compressionLevel"),prefixPath:Y.getIdentVendorPath(e),stripComponents:1})}static isConventionalTarballUrl(e,r,{configuration:o}){let a=Dg(e.scope,{configuration:o}),n=OA.getLocatorUrl(e);return r=r.replace(/^https?:(\/\/(?:[^/]+\.)?npmjs.org(?:$|\/))/,"https:$1"),a=a.replace(/^https:\/\/registry\.npmjs\.org($|\/)/,"https://registry.yarnpkg.com$1"),r=r.replace(/^https:\/\/registry\.npmjs\.org($|\/)/,"https://registry.yarnpkg.com$1"),r===a+n||r===a+n.replace(/%2f/g,"/")}static getLocatorUrl(e){let r=Zr.clean(e.reference.slice(ni.length));if(r===null)throw new rr(10,"The npm semver resolver got selected, but the version isn't semver");return`${i0(e)}/-/${e.name}-${r}.tgz`}};$e();$e();$e();var I1e=be(wi());var Jb=Y.makeIdent(null,"node-gyp"),HBt=/\b(node-gyp|prebuild-install)\b/,CQ=class{supportsDescriptor(e,r){return e.range.startsWith(ni)?!!Zr.validRange(e.range.slice(ni.length)):!1}supportsLocator(e,r){if(!e.reference.startsWith(ni))return!1;let{selector:o}=Y.parseRange(e.reference);return!!I1e.default.valid(o)}shouldPersistResolution(e,r){return!0}bindDescriptor(e,r,o){return e}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,o){let a=Zr.validRange(e.range.slice(ni.length));if(a===null)throw new Error(`Expected a valid range, got ${e.range.slice(ni.length)}`);let n=await Nc(i0(e),{customErrorMessage:Sg,configuration:o.project.configuration,ident:e,jsonResponse:!0}),c=Ze.mapAndFilter(Object.keys(n.versions),p=>{try{let E=new Zr.SemVer(p);if(a.test(E))return E}catch{}return Ze.mapAndFilter.skip}),f=c.filter(p=>!n.versions[p.raw].deprecated),g=f.length>0?f:c;return g.sort((p,E)=>-p.compare(E)),g.map(p=>{let E=Y.makeLocator(e,`${ni}${p.raw}`),B=n.versions[p.raw].dist.tarball;return OA.isConventionalTarballUrl(E,B,{configuration:o.project.configuration})?E:Y.bindLocator(E,{__archiveUrl:B})})}async getSatisfying(e,r,o,a){let n=Zr.validRange(e.range.slice(ni.length));if(n===null)throw new Error(`Expected a valid range, got ${e.range.slice(ni.length)}`);return{locators:Ze.mapAndFilter(o,g=>{if(g.identHash!==e.identHash)return Ze.mapAndFilter.skip;let p=Y.tryParseRange(g.reference,{requireProtocol:ni});if(!p)return Ze.mapAndFilter.skip;let E=new Zr.SemVer(p.selector);return n.test(E)?{locator:g,version:E}:Ze.mapAndFilter.skip}).sort((g,p)=>-g.version.compare(p.version)).map(({locator:g})=>g),sorted:!0}}async resolve(e,r){let{selector:o}=Y.parseRange(e.reference),a=Zr.clean(o);if(a===null)throw new rr(10,"The npm semver resolver got selected, but the version isn't semver");let n=await Nc(i0(e),{customErrorMessage:Sg,configuration:r.project.configuration,ident:e,jsonResponse:!0});if(!Object.prototype.hasOwnProperty.call(n,"versions"))throw new rr(15,'Registry returned invalid data for - missing "versions" field');if(!Object.prototype.hasOwnProperty.call(n.versions,a))throw new rr(16,`Registry failed to return reference "${a}"`);let c=new Gt;if(c.load(n.versions[a]),!c.dependencies.has(Jb.identHash)&&!c.peerDependencies.has(Jb.identHash)){for(let f of c.scripts.values())if(f.match(HBt)){c.dependencies.set(Jb.identHash,Y.makeDescriptor(Jb,"latest")),r.report.reportWarningOnce(32,`${Y.prettyLocator(r.project.configuration,e)}: Implicit dependencies on node-gyp are discouraged`);break}}if(typeof c.raw.deprecated=="string"&&c.raw.deprecated!==""){let f=Y.prettyLocator(r.project.configuration,e),g=c.raw.deprecated.match(/\S/)?`${f} is deprecated: ${c.raw.deprecated}`:`${f} is deprecated`;r.report.reportWarningOnce(61,g)}return{...e,version:a,languageName:"node",linkType:"HARD",conditions:c.getConditions(),dependencies:r.project.configuration.normalizeDependencyMap(c.dependencies),peerDependencies:c.peerDependencies,dependenciesMeta:c.dependenciesMeta,peerDependenciesMeta:c.peerDependenciesMeta,bin:c.bin}}};$e();$e();var w1e=be(wi());var EQ=class{supportsDescriptor(e,r){return!(!e.range.startsWith(ni)||!SB.test(e.range.slice(ni.length)))}supportsLocator(e,r){return!1}shouldPersistResolution(e,r){throw new Error("Unreachable")}bindDescriptor(e,r,o){return e}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,o){let a=e.range.slice(ni.length),n=await Nc(i0(e),{configuration:o.project.configuration,ident:e,jsonResponse:!0});if(!Object.prototype.hasOwnProperty.call(n,"dist-tags"))throw new rr(15,'Registry returned invalid data - missing "dist-tags" field');let c=n["dist-tags"];if(!Object.prototype.hasOwnProperty.call(c,a))throw new rr(16,`Registry failed to return tag "${a}"`);let f=c[a],g=Y.makeLocator(e,`${ni}${f}`),p=n.versions[f].dist.tarball;return OA.isConventionalTarballUrl(g,p,{configuration:o.project.configuration})?[g]:[Y.bindLocator(g,{__archiveUrl:p})]}async getSatisfying(e,r,o,a){var c;let n=[];for(let f of o){if(f.identHash!==e.identHash)continue;let g=Y.tryParseRange(f.reference,{requireProtocol:ni});if(!(!g||!w1e.default.valid(g.selector))){if((c=g.params)!=null&&c.__archiveUrl){let p=Y.makeRange({protocol:ni,selector:g.selector,source:null,params:null}),[E]=await this.getCandidates(Y.makeDescriptor(e,p),r,a);if(f.reference!==E.reference)continue}n.push(f)}}return{locators:n,sorted:!1}}async resolve(e,r){throw new Error("Unreachable")}};var dI={};tr(dI,{getGitHead:()=>KQt,makePublishBody:()=>UQt});$e();$e();var YG={};tr(YG,{PackCommand:()=>p0,default:()=>IQt,packUtils:()=>ju});$e();$e();$e();Ft();var g0=be(Vt());var ju={};tr(ju,{genPackList:()=>mF,genPackStream:()=>jG,genPackageManifest:()=>$2e,hasPackScripts:()=>qG,prepareForPack:()=>GG});$e();Ft();var HG=be(pa()),X2e=be(W2e()),Z2e=Ie("zlib"),cQt=["/package.json","/readme","/readme.*","/license","/license.*","/licence","/licence.*","/changelog","/changelog.*"],uQt=["/package.tgz",".github",".git",".hg","node_modules",".npmignore",".gitignore",".#*",".DS_Store"];async function qG(t){return!!(En.hasWorkspaceScript(t,"prepack")||En.hasWorkspaceScript(t,"postpack"))}async function GG(t,{report:e},r){await En.maybeExecuteWorkspaceLifecycleScript(t,"prepack",{report:e});try{let o=ee.join(t.cwd,Gt.fileName);await ge.existsPromise(o)&&await t.manifest.loadFile(o,{baseFs:ge}),await r()}finally{await En.maybeExecuteWorkspaceLifecycleScript(t,"postpack",{report:e})}}async function jG(t,e){var n;typeof e>"u"&&(e=await mF(t));let r=new Set;for(let c of((n=t.manifest.publishConfig)==null?void 0:n.executableFiles)??new Set)r.add(ee.normalize(c));for(let c of t.manifest.bin.values())r.add(ee.normalize(c));let o=X2e.default.pack();process.nextTick(async()=>{for(let c of e){let f=ee.normalize(c),g=ee.resolve(t.cwd,f),p=ee.join("package",f),E=await ge.lstatPromise(g),B={name:p,mtime:new Date(Li.SAFE_TIME*1e3)},Q=r.has(f)?493:420,x,C,N=new Promise((H,X)=>{x=H,C=X}),U=H=>{H?C(H):x()};if(E.isFile()){let H;f==="package.json"?H=Buffer.from(JSON.stringify(await $2e(t),null,2)):H=await ge.readFilePromise(g),o.entry({...B,mode:Q,type:"file"},H,U)}else E.isSymbolicLink()?o.entry({...B,mode:Q,type:"symlink",linkname:await ge.readlinkPromise(g)},U):U(new Error(`Unsupported file type ${E.mode} for ${me.fromPortablePath(f)}`));await N}o.finalize()});let a=(0,Z2e.createGzip)();return o.pipe(a),a}async function $2e(t){let e=JSON.parse(JSON.stringify(t.manifest.raw));return await t.project.configuration.triggerHook(r=>r.beforeWorkspacePacking,t,e),e}async function mF(t){var B,Q,x,C;let e=t.project,r=e.configuration,o={accept:[],reject:[]};for(let N of uQt)o.reject.push(N);for(let N of cQt)o.accept.push(N);o.reject.push(r.get("rcFilename"));let a=N=>{if(N===null||!N.startsWith(`${t.cwd}/`))return;let U=ee.relative(t.cwd,N),H=ee.resolve(Bt.root,U);o.reject.push(H)};a(ee.resolve(e.cwd,r.get("lockfileFilename"))),a(r.get("cacheFolder")),a(r.get("globalFolder")),a(r.get("installStatePath")),a(r.get("virtualFolder")),a(r.get("yarnPath")),await r.triggerHook(N=>N.populateYarnPaths,e,N=>{a(N)});for(let N of e.workspaces){let U=ee.relative(t.cwd,N.cwd);U!==""&&!U.match(/^(\.\.)?\//)&&o.reject.push(`/${U}`)}let n={accept:[],reject:[]},c=((B=t.manifest.publishConfig)==null?void 0:B.main)??t.manifest.main,f=((Q=t.manifest.publishConfig)==null?void 0:Q.module)??t.manifest.module,g=((x=t.manifest.publishConfig)==null?void 0:x.browser)??t.manifest.browser,p=((C=t.manifest.publishConfig)==null?void 0:C.bin)??t.manifest.bin;c!=null&&n.accept.push(ee.resolve(Bt.root,c)),f!=null&&n.accept.push(ee.resolve(Bt.root,f)),typeof g=="string"&&n.accept.push(ee.resolve(Bt.root,g));for(let N of p.values())n.accept.push(ee.resolve(Bt.root,N));if(g instanceof Map)for(let[N,U]of g.entries())n.accept.push(ee.resolve(Bt.root,N)),typeof U=="string"&&n.accept.push(ee.resolve(Bt.root,U));let E=t.manifest.files!==null;if(E){n.reject.push("/*");for(let N of t.manifest.files)eQe(n.accept,N,{cwd:Bt.root})}return await fQt(t.cwd,{hasExplicitFileList:E,globalList:o,ignoreList:n})}async function fQt(t,{hasExplicitFileList:e,globalList:r,ignoreList:o}){let a=[],n=new Au(t),c=[[Bt.root,[o]]];for(;c.length>0;){let[f,g]=c.pop(),p=await n.lstatPromise(f);if(!V2e(f,{globalList:r,ignoreLists:p.isDirectory()?null:g}))if(p.isDirectory()){let E=await n.readdirPromise(f),B=!1,Q=!1;if(!e||f!==Bt.root)for(let N of E)B=B||N===".gitignore",Q=Q||N===".npmignore";let x=Q?await J2e(n,f,".npmignore"):B?await J2e(n,f,".gitignore"):null,C=x!==null?[x].concat(g):g;V2e(f,{globalList:r,ignoreLists:g})&&(C=[...g,{accept:[],reject:["**/*"]}]);for(let N of E)c.push([ee.resolve(f,N),C])}else(p.isFile()||p.isSymbolicLink())&&a.push(ee.relative(Bt.root,f))}return a.sort()}async function J2e(t,e,r){let o={accept:[],reject:[]},a=await t.readFilePromise(ee.join(e,r),"utf8");for(let n of a.split(/\n/g))eQe(o.reject,n,{cwd:e});return o}function gQt(t,{cwd:e}){let r=t[0]==="!";return r&&(t=t.slice(1)),t.match(/\.{0,1}\//)&&(t=ee.resolve(e,t)),r&&(t=`!${t}`),t}function eQe(t,e,{cwd:r}){let o=e.trim();o===""||o[0]==="#"||t.push(gQt(o,{cwd:r}))}function V2e(t,{globalList:e,ignoreLists:r}){let o=dF(t,e.accept);if(o!==0)return o===2;let a=dF(t,e.reject);if(a!==0)return a===1;if(r!==null)for(let n of r){let c=dF(t,n.accept);if(c!==0)return c===2;let f=dF(t,n.reject);if(f!==0)return f===1}return!1}function dF(t,e){let r=e,o=[];for(let a=0;a{await GG(a,{report:g},async()=>{g.reportJson({base:me.fromPortablePath(a.cwd)});let p=await mF(a);for(let E of p)g.reportInfo(null,me.fromPortablePath(E)),g.reportJson({location:me.fromPortablePath(E)});if(!this.dryRun){let E=await jG(a,p),B=ge.createWriteStream(c);E.pipe(B),await new Promise(Q=>{B.on("finish",Q)})}}),this.dryRun||(g.reportInfo(0,`Package archive generated in ${Ne.pretty(r,c,Ne.Type.PATH)}`),g.reportJson({output:me.fromPortablePath(c)}))})).exitCode()}};p0.paths=[["pack"]],p0.usage=g0.Command.Usage({description:"generate a tarball from the active workspace",details:"\n This command will turn the active workspace into a compressed archive suitable for publishing. The archive will by default be stored at the root of the workspace (`package.tgz`).\n\n If the `-o,---out` is set the archive will be created at the specified path. The `%s` and `%v` variables can be used within the path and will be respectively replaced by the package name and version.\n ",examples:[["Create an archive from the active workspace","yarn pack"],["List the files that would be made part of the workspace's archive","yarn pack --dry-run"],["Name and output the archive in a dedicated folder","yarn pack --out /artifacts/%s-%v.tgz"]]});function pQt(t,{workspace:e}){let r=t.replace("%s",hQt(e)).replace("%v",dQt(e));return me.toPortablePath(r)}function hQt(t){return t.manifest.name!==null?Y.slugifyIdent(t.manifest.name):"package"}function dQt(t){return t.manifest.version!==null?t.manifest.version:"unknown"}var mQt=["dependencies","devDependencies","peerDependencies"],yQt="workspace:",CQt=(t,e)=>{e.publishConfig&&(e.publishConfig.type&&(e.type=e.publishConfig.type),e.publishConfig.main&&(e.main=e.publishConfig.main),e.publishConfig.browser&&(e.browser=e.publishConfig.browser),e.publishConfig.module&&(e.module=e.publishConfig.module),e.publishConfig.browser&&(e.browser=e.publishConfig.browser),e.publishConfig.exports&&(e.exports=e.publishConfig.exports),e.publishConfig.bin&&(e.bin=e.publishConfig.bin));let r=t.project;for(let o of mQt)for(let a of t.manifest.getForScope(o).values()){let n=r.tryWorkspaceByDescriptor(a),c=Y.parseRange(a.range);if(c.protocol===yQt)if(n===null){if(r.tryWorkspaceByIdent(a)===null)throw new rr(21,`${Y.prettyDescriptor(r.configuration,a)}: No local workspace found for this range`)}else{let f;Y.areDescriptorsEqual(a,n.anchoredDescriptor)||c.selector==="*"?f=n.manifest.version??"0.0.0":c.selector==="~"||c.selector==="^"?f=`${c.selector}${n.manifest.version??"0.0.0"}`:f=c.selector;let g=o==="dependencies"?Y.makeDescriptor(a,"unknown"):null,p=g!==null&&t.manifest.ensureDependencyMeta(g).optional?"optionalDependencies":o;e[p][Y.stringifyIdent(a)]=f}}},EQt={hooks:{beforeWorkspacePacking:CQt},commands:[p0]},IQt=EQt;var lQe=Ie("crypto"),cQe=be(AQe()),uQe=Ie("url");async function UQt(t,e,{access:r,tag:o,registry:a,gitHead:n}){let c=t.project.configuration,f=t.manifest.name,g=t.manifest.version,p=Y.stringifyIdent(f),E=(0,lQe.createHash)("sha1").update(e).digest("hex"),B=cQe.default.fromData(e).toString();typeof r>"u"&&(t.manifest.publishConfig&&typeof t.manifest.publishConfig.access=="string"?r=t.manifest.publishConfig.access:c.get("npmPublishAccess")!==null?r=c.get("npmPublishAccess"):f.scope?r="restricted":r="public");let Q=await ju.genPackageManifest(t),x=`${p}-${g}.tgz`,C=new uQe.URL(`${Hu(a)}/${p}/-/${x}`);return{_id:p,_attachments:{[x]:{content_type:"application/octet-stream",data:e.toString("base64"),length:e.length}},name:p,access:r,["dist-tags"]:{[o]:g},versions:{[g]:{...Q,_id:`${p}@${g}`,name:p,version:g,gitHead:n,dist:{shasum:E,integrity:B,tarball:C.toString()}}}}}async function KQt(t){try{let{stdout:e}=await pn.execvp("git",["rev-parse","--revs-only","HEAD"],{cwd:t});return e.trim()===""?void 0:e.trim()}catch{return}}var zG={npmAlwaysAuth:{description:"URL of the selected npm registry (note: npm enterprise isn't supported)",type:"BOOLEAN",default:!1},npmAuthIdent:{description:"Authentication identity for the npm registry (_auth in npm and yarn v1)",type:"SECRET",default:null},npmAuthToken:{description:"Authentication token for the npm registry (_authToken in npm and yarn v1)",type:"SECRET",default:null}},fQe={npmAuditRegistry:{description:"Registry to query for audit reports",type:"STRING",default:null},npmPublishRegistry:{description:"Registry to push packages to",type:"STRING",default:null},npmRegistryServer:{description:"URL of the selected npm registry (note: npm enterprise isn't supported)",type:"STRING",default:"https://registry.yarnpkg.com"}},_Qt={configuration:{...zG,...fQe,npmScopes:{description:"Settings per package scope",type:"MAP",valueDefinition:{description:"",type:"SHAPE",properties:{...zG,...fQe}}},npmRegistries:{description:"Settings per registry",type:"MAP",normalizeKeys:Hu,valueDefinition:{description:"",type:"SHAPE",properties:{...zG}}}},fetchers:[mQ,OA],resolvers:[yQ,CQ,EQ]},HQt=_Qt;var oj={};tr(oj,{NpmAuditCommand:()=>d0,NpmInfoCommand:()=>m0,NpmLoginCommand:()=>C0,NpmLogoutCommand:()=>E0,NpmPublishCommand:()=>I0,NpmTagAddCommand:()=>B0,NpmTagListCommand:()=>w0,NpmTagRemoveCommand:()=>Q0,NpmWhoamiCommand:()=>D0,default:()=>XQt,npmAuditUtils:()=>EF});$e();var Ju=be(Vt()),MQ=be(pa()),rj=be(wA());var yF=(o=>(o.All="all",o.Production="production",o.Development="development",o))(yF||{}),CF=(n=>(n.Info="info",n.Low="low",n.Moderate="moderate",n.High="high",n.Critical="critical",n))(CF||{});var EF={};tr(EF,{allSeverities:()=>mI,getDependencies:()=>tj,getReportTree:()=>$G,getRequires:()=>ej,isError:()=>ZG});$e();var mI=["info","low","moderate","high","critical"];function pQe(t,e){let r=[],o=new Set,a=c=>{o.has(c)||(o.add(c),r.push(c))};for(let c of e)a(c);let n=new Set;for(;r.length>0;){let c=r.shift(),f=t.storedResolutions.get(c);if(typeof f>"u")throw new Error("Assertion failed: Expected the resolution to have been registered");let g=t.storedPackages.get(f);if(!!g){n.add(c);for(let p of g.dependencies.values())a(p.descriptorHash)}}return n}function qQt(t,e){return new Set([...t].filter(r=>!e.has(r)))}function GQt(t,e,{all:r}){let o=r?t.workspaces:[e],a=o.map(Q=>Q.manifest),n=new Set(a.map(Q=>[...Q.dependencies].map(([x,C])=>x)).flat()),c=new Set(a.map(Q=>[...Q.devDependencies].map(([x,C])=>x)).flat()),f=o.map(Q=>[...Q.anchoredPackage.dependencies.values()]).flat(),g=f.filter(Q=>n.has(Q.identHash)).map(Q=>Q.descriptorHash),p=f.filter(Q=>c.has(Q.identHash)).map(Q=>Q.descriptorHash),E=pQe(t,g),B=pQe(t,p);return qQt(B,E)}function hQe(t){let e={};for(let r of t)e[Y.stringifyIdent(r)]=Y.parseRange(r.range).selector;return e}function dQe(t){if(typeof t>"u")return new Set(mI);let e=mI.indexOf(t),r=mI.slice(e);return new Set(r)}function jQt(t,e){let r=dQe(e),o={};for(let a of r)o[a]=t[a];return o}function ZG(t,e){let r=jQt(t,e);for(let o of Object.keys(r))if(r[o]??0>0)return!0;return!1}function $G(t,e){var n;let r={},o={children:r},a=Object.values(t.advisories);if(e!=null){let c=dQe(e);a=a.filter(f=>c.has(f.severity))}for(let c of Ze.sortMap(a,f=>f.module_name))r[c.module_name]={label:c.module_name,value:Ne.tuple(Ne.Type.RANGE,c.findings.map(f=>f.version).join(", ")),children:{ID:{label:"ID",value:Ne.tuple(Ne.Type.NUMBER,c.id)},Issue:{label:"Issue",value:Ne.tuple(Ne.Type.NO_HINT,c.title)},URL:{label:"URL",value:Ne.tuple(Ne.Type.URL,c.url)},Severity:{label:"Severity",value:Ne.tuple(Ne.Type.NO_HINT,c.severity)},["Vulnerable Versions"]:{label:"Vulnerable Versions",value:Ne.tuple(Ne.Type.RANGE,c.vulnerable_versions)},["Patched Versions"]:{label:"Patched Versions",value:Ne.tuple(Ne.Type.RANGE,c.patched_versions)},Via:{label:"Via",value:Ne.tuple(Ne.Type.NO_HINT,Array.from(new Set(c.findings.map(f=>f.paths).flat().map(f=>f.split(">")[0]))).join(", "))},Recommendation:{label:"Recommendation",value:Ne.tuple(Ne.Type.NO_HINT,(n=c.recommendation)==null?void 0:n.replace(/\n/g," "))}}};return o}function ej(t,e,{all:r,environment:o}){let a=r?t.workspaces:[e],n=["all","production"].includes(o),c=[];if(n)for(let p of a)for(let E of p.manifest.dependencies.values())c.push(E);let f=["all","development"].includes(o),g=[];if(f)for(let p of a)for(let E of p.manifest.devDependencies.values())g.push(E);return hQe([...c,...g].filter(p=>Y.parseRange(p.range).protocol===null))}function tj(t,e,{all:r}){let o=GQt(t,e,{all:r}),a={};for(let n of t.storedPackages.values())a[Y.stringifyIdent(n)]={version:n.version??"0.0.0",integrity:n.identHash,requires:hQe(n.dependencies.values()),dev:o.has(Y.convertLocatorToDescriptor(n).descriptorHash)};return a}var d0=class extends gt{constructor(){super(...arguments);this.all=Ju.Option.Boolean("-A,--all",!1,{description:"Audit dependencies from all workspaces"});this.recursive=Ju.Option.Boolean("-R,--recursive",!1,{description:"Audit transitive dependencies as well"});this.environment=Ju.Option.String("--environment","all",{description:"Which environments to cover",validator:rj.isEnum(yF)});this.json=Ju.Option.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.severity=Ju.Option.String("--severity","info",{description:"Minimal severity requested for packages to be displayed",validator:rj.isEnum(CF)});this.excludes=Ju.Option.Array("--exclude",[],{description:"Array of glob patterns of packages to exclude from audit"});this.ignores=Ju.Option.Array("--ignore",[],{description:"Array of glob patterns of advisory ID's to ignore in the audit report"})}async execute(){let r=await rt.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await xt.find(r,this.context.cwd);if(!a)throw new lr(o.cwd,this.context.cwd);await o.restoreInstallState();let n=ej(o,a,{all:this.all,environment:this.environment}),c=tj(o,a,{all:this.all});if(!this.recursive)for(let C of Object.keys(c))Object.prototype.hasOwnProperty.call(n,C)?c[C].requires={}:delete c[C];let f=Array.from(new Set([...r.get("npmAuditExcludePackages"),...this.excludes]));if(f){for(let C of Object.keys(n))MQ.default.isMatch(C,f)&&delete n[C];for(let C of Object.keys(c))MQ.default.isMatch(C,f)&&delete c[C];for(let C of Object.keys(c))for(let N of Object.keys(c[C].requires))MQ.default.isMatch(N,f)&&delete c[C].requires[N]}let g={requires:n,dependencies:c},p=Ai.getAuditRegistry({configuration:r}),E,B=await Tu.start({configuration:r,stdout:this.context.stdout},async()=>{E=await wn.post("/-/npm/v1/security/audits/quick",g,{authType:wn.AuthType.BEST_EFFORT,configuration:r,jsonResponse:!0,registry:p})});if(B.hasErrors())return B.exitCode();let Q=Array.from(new Set([...r.get("npmAuditIgnoreAdvisories"),...this.ignores]));if(Q){for(let C of Object.keys(E.advisories))if(MQ.default.isMatch(C,Q)){let N=E.advisories[C];E.metadata.vulnerabilities[N.severity]-=1,delete E.advisories[C]}}let x=ZG(E.metadata.vulnerabilities,this.severity);return!this.json&&x?(TA.emitTree($G(E,this.severity),{configuration:r,json:this.json,stdout:this.context.stdout,separators:2}),1):(await St.start({configuration:r,includeFooter:!1,json:this.json,stdout:this.context.stdout},async C=>{C.reportJson(E),x||C.reportInfo(1,"No audit suggestions")}),x?1:0)}};d0.paths=[["npm","audit"]],d0.usage=Ju.Command.Usage({description:"perform a vulnerability audit against the installed packages",details:` - This command checks for known security reports on the packages you use. The reports are by default extracted from the npm registry, and may or may not be relevant to your actual program (not all vulnerabilities affect all code paths). - - For consistency with our other commands the default is to only check the direct dependencies for the active workspace. To extend this search to all workspaces, use \`-A,--all\`. To extend this search to both direct and transitive dependencies, use \`-R,--recursive\`. - - Applying the \`--severity\` flag will limit the audit table to vulnerabilities of the corresponding severity and above. Valid values are ${mI.map(r=>`\`${r}\``).join(", ")}. - - If the \`--json\` flag is set, Yarn will print the output exactly as received from the registry. Regardless of this flag, the process will exit with a non-zero exit code if a report is found for the selected packages. - - If certain packages produce false positives for a particular environment, the \`--exclude\` flag can be used to exclude any number of packages from the audit. This can also be set in the configuration file with the \`npmAuditExcludePackages\` option. - - If particular advisories are needed to be ignored, the \`--ignore\` flag can be used with Advisory ID's to ignore any number of advisories in the audit report. This can also be set in the configuration file with the \`npmAuditIgnoreAdvisories\` option. - - To understand the dependency tree requiring vulnerable packages, check the raw report with the \`--json\` flag or use \`yarn why \` to get more information as to who depends on them. - `,examples:[["Checks for known security issues with the installed packages. The output is a list of known issues.","yarn npm audit"],["Audit dependencies in all workspaces","yarn npm audit --all"],["Limit auditing to `dependencies` (excludes `devDependencies`)","yarn npm audit --environment production"],["Show audit report as valid JSON","yarn npm audit --json"],["Audit all direct and transitive dependencies","yarn npm audit --recursive"],["Output moderate (or more severe) vulnerabilities","yarn npm audit --severity moderate"],["Exclude certain packages","yarn npm audit --exclude package1 --exclude package2"],["Ignore specific advisories","yarn npm audit --ignore 1234567 --ignore 7654321"]]});$e();$e();Ft();var y0=be(Vt()),nj=be(wi()),ij=Ie("util"),m0=class extends gt{constructor(){super(...arguments);this.fields=y0.Option.String("-f,--fields",{description:"A comma-separated list of manifest fields that should be displayed"});this.json=y0.Option.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.packages=y0.Option.Rest()}async execute(){let r=await rt.find(this.context.cwd,this.context.plugins),{project:o}=await xt.find(r,this.context.cwd),a=typeof this.fields<"u"?new Set(["name",...this.fields.split(/\s*,\s*/)]):null,n=[],c=!1,f=await St.start({configuration:r,includeFooter:!1,json:this.json,stdout:this.context.stdout},async g=>{for(let p of this.packages){let E;if(p==="."){let fe=o.topLevelWorkspace;if(!fe.manifest.name)throw new y0.UsageError(`Missing ${Ne.pretty(r,"name",Ne.Type.CODE)} field in ${me.fromPortablePath(ee.join(fe.cwd,Xr.manifest))}`);E=Y.makeDescriptor(fe.manifest.name,"unknown")}else E=Y.parseDescriptor(p);let B=wn.getIdentUrl(E),Q=sj(await wn.get(B,{configuration:r,ident:E,jsonResponse:!0,customErrorMessage:wn.customPackageError})),x=Object.keys(Q.versions).sort(nj.default.compareLoose),N=Q["dist-tags"].latest||x[x.length-1],U=Zr.validRange(E.range);if(U){let fe=nj.default.maxSatisfying(x,U);fe!==null?N=fe:(g.reportWarning(0,`Unmet range ${Y.prettyRange(r,E.range)}; falling back to the latest version`),c=!0)}else Object.prototype.hasOwnProperty.call(Q["dist-tags"],E.range)?N=Q["dist-tags"][E.range]:E.range!=="unknown"&&(g.reportWarning(0,`Unknown tag ${Y.prettyRange(r,E.range)}; falling back to the latest version`),c=!0);let H=Q.versions[N],X={...Q,...H,version:N,versions:x},ie;if(a!==null){ie={};for(let fe of a){let ye=X[fe];if(typeof ye<"u")ie[fe]=ye;else{g.reportWarning(1,`The ${Ne.pretty(r,fe,Ne.Type.CODE)} field doesn't exist inside ${Y.prettyIdent(r,E)}'s information`),c=!0;continue}}}else this.json||(delete X.dist,delete X.readme,delete X.users),ie=X;g.reportJson(ie),this.json||n.push(ie)}});ij.inspect.styles.name="cyan";for(let g of n)(g!==n[0]||c)&&this.context.stdout.write(` -`),this.context.stdout.write(`${(0,ij.inspect)(g,{depth:1/0,colors:!0,compact:!1})} -`);return f.exitCode()}};m0.paths=[["npm","info"]],m0.usage=y0.Command.Usage({category:"Npm-related commands",description:"show information about a package",details:"\n This command fetches information about a package from the npm registry and prints it in a tree format.\n\n The package does not have to be installed locally, but needs to have been published (in particular, local changes will be ignored even for workspaces).\n\n Append `@` to the package argument to provide information specific to the latest version that satisfies the range or to the corresponding tagged version. If the range is invalid or if there is no version satisfying the range, the command will print a warning and fall back to the latest version.\n\n If the `-f,--fields` option is set, it's a comma-separated list of fields which will be used to only display part of the package information.\n\n By default, this command won't return the `dist`, `readme`, and `users` fields, since they are often very long. To explicitly request those fields, explicitly list them with the `--fields` flag or request the output in JSON mode.\n ",examples:[["Show all available information about react (except the `dist`, `readme`, and `users` fields)","yarn npm info react"],["Show all available information about react as valid JSON (including the `dist`, `readme`, and `users` fields)","yarn npm info react --json"],["Show all available information about react@16.12.0","yarn npm info react@16.12.0"],["Show all available information about react@next","yarn npm info react@next"],["Show the description of react","yarn npm info react --fields description"],["Show all available versions of react","yarn npm info react --fields versions"],["Show the readme of react","yarn npm info react --fields readme"],["Show a few fields of react","yarn npm info react --fields homepage,repository"]]});function sj(t){if(Array.isArray(t)){let e=[];for(let r of t)r=sj(r),r&&e.push(r);return e}else if(typeof t=="object"&&t!==null){let e={};for(let r of Object.keys(t)){if(r.startsWith("_"))continue;let o=sj(t[r]);o&&(e[r]=o)}return e}else return t||null}$e();$e();var LQ=be(Vt()),mQe=be(C1()),C0=class extends gt{constructor(){super(...arguments);this.scope=LQ.Option.String("-s,--scope",{description:"Login to the registry configured for a given scope"});this.publish=LQ.Option.Boolean("--publish",!1,{description:"Login to the publish registry"})}async execute(){let r=await rt.find(this.context.cwd,this.context.plugins),o=await IF({configuration:r,cwd:this.context.cwd,publish:this.publish,scope:this.scope});return(await St.start({configuration:r,stdout:this.context.stdout},async n=>{let c=await WQt({registry:o,report:n,stdin:this.context.stdin,stdout:this.context.stdout}),f=`/-/user/org.couchdb.user:${encodeURIComponent(c.name)}`,g=await wn.put(f,c,{attemptedAs:c.name,configuration:r,registry:o,jsonResponse:!0,authType:wn.AuthType.NO_AUTH});return await YQt(o,g.token,{configuration:r,scope:this.scope}),n.reportInfo(0,"Successfully logged in")})).exitCode()}};C0.paths=[["npm","login"]],C0.usage=LQ.Command.Usage({category:"Npm-related commands",description:"store new login info to access the npm registry",details:"\n This command will ask you for your username, password, and 2FA One-Time-Password (when it applies). It will then modify your local configuration (in your home folder, never in the project itself) to reference the new tokens thus generated.\n\n Adding the `-s,--scope` flag will cause the authentication to be done against whatever registry is configured for the associated scope (see also `npmScopes`).\n\n Adding the `--publish` flag will cause the authentication to be done against the registry used when publishing the package (see also `publishConfig.registry` and `npmPublishRegistry`).\n ",examples:[["Login to the default registry","yarn npm login"],["Login to the registry linked to the @my-scope registry","yarn npm login --scope my-scope"],["Login to the publish registry for the current package","yarn npm login --publish"]]});async function IF({scope:t,publish:e,configuration:r,cwd:o}){return t&&e?Ai.getScopeRegistry(t,{configuration:r,type:Ai.RegistryType.PUBLISH_REGISTRY}):t?Ai.getScopeRegistry(t,{configuration:r}):e?Ai.getPublishRegistry((await BE(r,o)).manifest,{configuration:r}):Ai.getDefaultRegistry({configuration:r})}async function YQt(t,e,{configuration:r,scope:o}){let a=c=>f=>{let g=Ze.isIndexableObject(f)?f:{},p=g[c],E=Ze.isIndexableObject(p)?p:{};return{...g,[c]:{...E,npmAuthToken:e}}},n=o?{npmScopes:a(o)}:{npmRegistries:a(t)};return await rt.updateHomeConfiguration(n)}async function WQt({registry:t,report:e,stdin:r,stdout:o}){e.reportInfo(0,`Logging in to ${t}`);let a=!1;t.match(/^https:\/\/npm\.pkg\.github\.com(\/|$)/)&&(e.reportInfo(0,"You seem to be using the GitHub Package Registry. Tokens must be generated with the 'repo', 'write:packages', and 'read:packages' permissions."),a=!0),e.reportSeparator();let{username:n,password:c}=await(0,mQe.prompt)([{type:"input",name:"username",message:"Username:",required:!0,onCancel:()=>process.exit(130),stdin:r,stdout:o},{type:"password",name:"password",message:a?"Token:":"Password:",required:!0,onCancel:()=>process.exit(130),stdin:r,stdout:o}]);return e.reportSeparator(),{name:n,password:c}}$e();$e();var yI=be(Vt());var CI=new Set(["npmAuthIdent","npmAuthToken"]),E0=class extends gt{constructor(){super(...arguments);this.scope=yI.Option.String("-s,--scope",{description:"Logout of the registry configured for a given scope"});this.publish=yI.Option.Boolean("--publish",!1,{description:"Logout of the publish registry"});this.all=yI.Option.Boolean("-A,--all",!1,{description:"Logout of all registries"})}async execute(){let r=await rt.find(this.context.cwd,this.context.plugins),o=async()=>{let n=await IF({configuration:r,cwd:this.context.cwd,publish:this.publish,scope:this.scope}),c=await rt.find(this.context.cwd,this.context.plugins),f=Y.makeIdent(this.scope??null,"pkg");return!Ai.getAuthConfiguration(n,{configuration:c,ident:f}).get("npmAuthToken")};return(await St.start({configuration:r,stdout:this.context.stdout},async n=>{if(this.all&&(await VQt(),n.reportInfo(0,"Successfully logged out from everything")),this.scope){await yQe("npmScopes",this.scope),await o()?n.reportInfo(0,`Successfully logged out from ${this.scope}`):n.reportWarning(0,"Scope authentication settings removed, but some other ones settings still apply to it");return}let c=await IF({configuration:r,cwd:this.context.cwd,publish:this.publish});await yQe("npmRegistries",c),await o()?n.reportInfo(0,`Successfully logged out from ${c}`):n.reportWarning(0,"Registry authentication settings removed, but some other ones settings still apply to it")})).exitCode()}};E0.paths=[["npm","logout"]],E0.usage=yI.Command.Usage({category:"Npm-related commands",description:"logout of the npm registry",details:"\n This command will log you out by modifying your local configuration (in your home folder, never in the project itself) to delete all credentials linked to a registry.\n\n Adding the `-s,--scope` flag will cause the deletion to be done against whatever registry is configured for the associated scope (see also `npmScopes`).\n\n Adding the `--publish` flag will cause the deletion to be done against the registry used when publishing the package (see also `publishConfig.registry` and `npmPublishRegistry`).\n\n Adding the `-A,--all` flag will cause the deletion to be done against all registries and scopes.\n ",examples:[["Logout of the default registry","yarn npm logout"],["Logout of the @my-scope scope","yarn npm logout --scope my-scope"],["Logout of the publish registry for the current package","yarn npm logout --publish"],["Logout of all registries","yarn npm logout --all"]]});function JQt(t,e){let r=t[e];if(!Ze.isIndexableObject(r))return!1;let o=new Set(Object.keys(r));if([...CI].every(n=>!o.has(n)))return!1;for(let n of CI)o.delete(n);if(o.size===0)return t[e]=void 0,!0;let a={...r};for(let n of CI)delete a[n];return t[e]=a,!0}async function VQt(){let t=e=>{let r=!1,o=Ze.isIndexableObject(e)?{...e}:{};o.npmAuthToken&&(delete o.npmAuthToken,r=!0);for(let a of Object.keys(o))JQt(o,a)&&(r=!0);if(Object.keys(o).length!==0)return r?o:e};return await rt.updateHomeConfiguration({npmRegistries:t,npmScopes:t})}async function yQe(t,e){return await rt.updateHomeConfiguration({[t]:r=>{let o=Ze.isIndexableObject(r)?r:{};if(!Object.prototype.hasOwnProperty.call(o,e))return r;let a=o[e],n=Ze.isIndexableObject(a)?a:{},c=new Set(Object.keys(n));if([...CI].every(g=>!c.has(g)))return r;for(let g of CI)c.delete(g);if(c.size===0)return Object.keys(o).length===1?void 0:{...o,[e]:void 0};let f={};for(let g of CI)f[g]=void 0;return{...o,[e]:{...n,...f}}}})}$e();var Vu=be(Vt()),I0=class extends gt{constructor(){super(...arguments);this.access=Vu.Option.String("--access",{description:"The access for the published package (public or restricted)"});this.tag=Vu.Option.String("--tag","latest",{description:"The tag on the registry that the package should be attached to"});this.tolerateRepublish=Vu.Option.Boolean("--tolerate-republish",!1,{description:"Warn and exit when republishing an already existing version of a package"});this.otp=Vu.Option.String("--otp",{description:"The OTP token to use with the command"})}async execute(){let r=await rt.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await xt.find(r,this.context.cwd);if(!a)throw new lr(o.cwd,this.context.cwd);if(a.manifest.private)throw new Vu.UsageError("Private workspaces cannot be published");if(a.manifest.name===null||a.manifest.version===null)throw new Vu.UsageError("Workspaces must have valid names and versions to be published on an external registry");await o.restoreInstallState();let n=a.manifest.name,c=a.manifest.version,f=Ai.getPublishRegistry(a.manifest,{configuration:r});return(await St.start({configuration:r,stdout:this.context.stdout},async p=>{var E,B;if(this.tolerateRepublish)try{let Q=await wn.get(wn.getIdentUrl(n),{configuration:r,registry:f,ident:n,jsonResponse:!0});if(!Object.prototype.hasOwnProperty.call(Q,"versions"))throw new rr(15,'Registry returned invalid data for - missing "versions" field');if(Object.prototype.hasOwnProperty.call(Q.versions,c)){p.reportWarning(0,`Registry already knows about version ${c}; skipping.`);return}}catch(Q){if(((B=(E=Q.originalError)==null?void 0:E.response)==null?void 0:B.statusCode)!==404)throw Q}await En.maybeExecuteWorkspaceLifecycleScript(a,"prepublish",{report:p}),await ju.prepareForPack(a,{report:p},async()=>{let Q=await ju.genPackList(a);for(let H of Q)p.reportInfo(null,H);let x=await ju.genPackStream(a,Q),C=await Ze.bufferStream(x),N=await dI.getGitHead(a.cwd),U=await dI.makePublishBody(a,C,{access:this.access,tag:this.tag,registry:f,gitHead:N});await wn.put(wn.getIdentUrl(n),U,{configuration:r,registry:f,ident:n,otp:this.otp,jsonResponse:!0})}),p.reportInfo(0,"Package archive published")})).exitCode()}};I0.paths=[["npm","publish"]],I0.usage=Vu.Command.Usage({category:"Npm-related commands",description:"publish the active workspace to the npm registry",details:'\n This command will pack the active workspace into a fresh archive and upload it to the npm registry.\n\n The package will by default be attached to the `latest` tag on the registry, but this behavior can be overriden by using the `--tag` option.\n\n Note that for legacy reasons scoped packages are by default published with an access set to `restricted` (aka "private packages"). This requires you to register for a paid npm plan. In case you simply wish to publish a public scoped package to the registry (for free), just add the `--access public` flag. This behavior can be enabled by default through the `npmPublishAccess` settings.\n ',examples:[["Publish the active workspace","yarn npm publish"]]});$e();var ey=be(Vt()),CQe=be(wi());$e();Ft();var $m=be(Vt()),w0=class extends gt{constructor(){super(...arguments);this.json=$m.Option.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.package=$m.Option.String({required:!1})}async execute(){let r=await rt.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await xt.find(r,this.context.cwd),n;if(typeof this.package<"u")n=Y.parseIdent(this.package);else{if(!a)throw new lr(o.cwd,this.context.cwd);if(!a.manifest.name)throw new $m.UsageError(`Missing 'name' field in ${me.fromPortablePath(ee.join(a.cwd,Xr.manifest))}`);n=a.manifest.name}let c=await OQ(n,r),g={children:Ze.sortMap(Object.entries(c),([p])=>p).map(([p,E])=>({value:Ne.tuple(Ne.Type.RESOLUTION,{descriptor:Y.makeDescriptor(n,p),locator:Y.makeLocator(n,E)})}))};return TA.emitTree(g,{configuration:r,json:this.json,stdout:this.context.stdout})}};w0.paths=[["npm","tag","list"]],w0.usage=$m.Command.Usage({category:"Npm-related commands",description:"list all dist-tags of a package",details:` - This command will list all tags of a package from the npm registry. - - If the package is not specified, Yarn will default to the current workspace. - `,examples:[["List all tags of package `my-pkg`","yarn npm tag list my-pkg"]]});async function OQ(t,e){let r=`/-/package${wn.getIdentUrl(t)}/dist-tags`;return wn.get(r,{configuration:e,ident:t,jsonResponse:!0,customErrorMessage:wn.customPackageError})}var B0=class extends gt{constructor(){super(...arguments);this.package=ey.Option.String();this.tag=ey.Option.String()}async execute(){let r=await rt.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await xt.find(r,this.context.cwd);if(!a)throw new lr(o.cwd,this.context.cwd);let n=Y.parseDescriptor(this.package,!0),c=n.range;if(!CQe.default.valid(c))throw new ey.UsageError(`The range ${Ne.pretty(r,n.range,Ne.Type.RANGE)} must be a valid semver version`);let f=Ai.getPublishRegistry(a.manifest,{configuration:r}),g=Ne.pretty(r,n,Ne.Type.IDENT),p=Ne.pretty(r,c,Ne.Type.RANGE),E=Ne.pretty(r,this.tag,Ne.Type.CODE);return(await St.start({configuration:r,stdout:this.context.stdout},async Q=>{let x=await OQ(n,r);Object.prototype.hasOwnProperty.call(x,this.tag)&&x[this.tag]===c&&Q.reportWarning(0,`Tag ${E} is already set to version ${p}`);let C=`/-/package${wn.getIdentUrl(n)}/dist-tags/${encodeURIComponent(this.tag)}`;await wn.put(C,c,{configuration:r,registry:f,ident:n,jsonRequest:!0,jsonResponse:!0}),Q.reportInfo(0,`Tag ${E} added to version ${p} of package ${g}`)})).exitCode()}};B0.paths=[["npm","tag","add"]],B0.usage=ey.Command.Usage({category:"Npm-related commands",description:"add a tag for a specific version of a package",details:` - This command will add a tag to the npm registry for a specific version of a package. If the tag already exists, it will be overwritten. - `,examples:[["Add a `beta` tag for version `2.3.4-beta.4` of package `my-pkg`","yarn npm tag add my-pkg@2.3.4-beta.4 beta"]]});$e();var v0=be(Vt());var Q0=class extends gt{constructor(){super(...arguments);this.package=v0.Option.String();this.tag=v0.Option.String()}async execute(){if(this.tag==="latest")throw new v0.UsageError("The 'latest' tag cannot be removed.");let r=await rt.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await xt.find(r,this.context.cwd);if(!a)throw new lr(o.cwd,this.context.cwd);let n=Y.parseIdent(this.package),c=Ai.getPublishRegistry(a.manifest,{configuration:r}),f=Ne.pretty(r,this.tag,Ne.Type.CODE),g=Ne.pretty(r,n,Ne.Type.IDENT),p=await OQ(n,r);if(!Object.prototype.hasOwnProperty.call(p,this.tag))throw new v0.UsageError(`${f} is not a tag of package ${g}`);return(await St.start({configuration:r,stdout:this.context.stdout},async B=>{let Q=`/-/package${wn.getIdentUrl(n)}/dist-tags/${encodeURIComponent(this.tag)}`;await wn.del(Q,{configuration:r,registry:c,ident:n,jsonResponse:!0}),B.reportInfo(0,`Tag ${f} removed from package ${g}`)})).exitCode()}};Q0.paths=[["npm","tag","remove"]],Q0.usage=v0.Command.Usage({category:"Npm-related commands",description:"remove a tag from a package",details:` - This command will remove a tag from a package from the npm registry. - `,examples:[["Remove the `beta` tag from package `my-pkg`","yarn npm tag remove my-pkg beta"]]});$e();$e();var UQ=be(Vt()),D0=class extends gt{constructor(){super(...arguments);this.scope=UQ.Option.String("-s,--scope",{description:"Print username for the registry configured for a given scope"});this.publish=UQ.Option.Boolean("--publish",!1,{description:"Print username for the publish registry"})}async execute(){let r=await rt.find(this.context.cwd,this.context.plugins),o;return this.scope&&this.publish?o=Ai.getScopeRegistry(this.scope,{configuration:r,type:Ai.RegistryType.PUBLISH_REGISTRY}):this.scope?o=Ai.getScopeRegistry(this.scope,{configuration:r}):this.publish?o=Ai.getPublishRegistry((await BE(r,this.context.cwd)).manifest,{configuration:r}):o=Ai.getDefaultRegistry({configuration:r}),(await St.start({configuration:r,stdout:this.context.stdout},async n=>{var f,g;let c;try{c=await wn.get("/-/whoami",{configuration:r,registry:o,authType:wn.AuthType.ALWAYS_AUTH,jsonResponse:!0,ident:this.scope?Y.makeIdent(this.scope,""):void 0})}catch(p){if(((f=p.response)==null?void 0:f.statusCode)===401||((g=p.response)==null?void 0:g.statusCode)===403){n.reportError(41,"Authentication failed - your credentials may have expired");return}else throw p}n.reportInfo(0,c.username)})).exitCode()}};D0.paths=[["npm","whoami"]],D0.usage=UQ.Command.Usage({category:"Npm-related commands",description:"display the name of the authenticated user",details:"\n Print the username associated with the current authentication settings to the standard output.\n\n When using `-s,--scope`, the username printed will be the one that matches the authentication settings of the registry associated with the given scope (those settings can be overriden using the `npmRegistries` map, and the registry associated with the scope is configured via the `npmScopes` map).\n\n When using `--publish`, the registry we'll select will by default be the one used when publishing packages (`publishConfig.registry` or `npmPublishRegistry` if available, otherwise we'll fallback to the regular `npmRegistryServer`).\n ",examples:[["Print username for the default registry","yarn npm whoami"],["Print username for the registry on a given scope","yarn npm whoami --scope company"]]});var zQt={configuration:{npmPublishAccess:{description:"Default access of the published packages",type:"STRING",default:null},npmAuditExcludePackages:{description:"Array of glob patterns of packages to exclude from npm audit",type:"STRING",default:[],isArray:!0},npmAuditIgnoreAdvisories:{description:"Array of glob patterns of advisory IDs to exclude from npm audit",type:"STRING",default:[],isArray:!0}},commands:[d0,m0,C0,E0,I0,B0,w0,Q0,D0]},XQt=zQt;var fj={};tr(fj,{PatchCommand:()=>P0,PatchCommitCommand:()=>k0,PatchFetcher:()=>qQ,PatchResolver:()=>GQ,default:()=>hvt,patchUtils:()=>ty});$e();$e();Ft();oc();var ty={};tr(ty,{applyPatchFile:()=>QF,diffFolders:()=>uj,ensureUnpatchedDescriptor:()=>aj,ensureUnpatchedLocator:()=>DF,extractPackageToDisk:()=>cj,extractPatchFlags:()=>DQe,isParentRequired:()=>lj,isPatchDescriptor:()=>vF,isPatchLocator:()=>S0,loadPatchFiles:()=>HQ,makeDescriptor:()=>SF,makeLocator:()=>Aj,parseDescriptor:()=>KQ,parseLocator:()=>_Q,parsePatchFile:()=>BF,unpatchDescriptor:()=>uvt,unpatchLocator:()=>fvt});$e();Ft();$e();Ft();var EI=class extends Error{constructor(r,o){super(`Cannot apply hunk #${r+1}`);this.hunk=o}};$e();Ft();var ZQt=/^@@ -(\d+)(,(\d+))? \+(\d+)(,(\d+))? @@.*/;function II(t){return ee.relative(Bt.root,ee.resolve(Bt.root,me.toPortablePath(t)))}function $Qt(t){let e=t.trim().match(ZQt);if(!e)throw new Error(`Bad header line: '${t}'`);return{original:{start:Math.max(Number(e[1]),1),length:Number(e[3]||1)},patched:{start:Math.max(Number(e[4]),1),length:Number(e[6]||1)}}}var evt=420,tvt=493;var EQe=()=>({semverExclusivity:null,diffLineFromPath:null,diffLineToPath:null,oldMode:null,newMode:null,deletedFileMode:null,newFileMode:null,renameFrom:null,renameTo:null,beforeHash:null,afterHash:null,fromPath:null,toPath:null,hunks:null}),rvt=t=>({header:$Qt(t),parts:[]}),nvt={["@"]:"header",["-"]:"deletion",["+"]:"insertion",[" "]:"context",["\\"]:"pragma",undefined:"context"};function ivt(t){let e=[],r=EQe(),o="parsing header",a=null,n=null;function c(){a&&(n&&(a.parts.push(n),n=null),r.hunks.push(a),a=null)}function f(){c(),e.push(r),r=EQe()}for(let g=0;g0?"patch":"mode change",X=null;switch(H){case"rename":{if(!E||!B)throw new Error("Bad parser state: rename from & to not given");e.push({type:"rename",semverExclusivity:o,fromPath:II(E),toPath:II(B)}),X=B}break;case"file deletion":{let ie=a||C;if(!ie)throw new Error("Bad parse state: no path given for file deletion");e.push({type:"file deletion",semverExclusivity:o,hunk:U&&U[0]||null,path:II(ie),mode:wF(g),hash:Q})}break;case"file creation":{let ie=n||N;if(!ie)throw new Error("Bad parse state: no path given for file creation");e.push({type:"file creation",semverExclusivity:o,hunk:U&&U[0]||null,path:II(ie),mode:wF(p),hash:x})}break;case"patch":case"mode change":X=N||n;break;default:Ze.assertNever(H);break}X&&c&&f&&c!==f&&e.push({type:"mode change",semverExclusivity:o,path:II(X),oldMode:wF(c),newMode:wF(f)}),X&&U&&U.length&&e.push({type:"patch",semverExclusivity:o,path:II(X),hunks:U,beforeHash:Q,afterHash:x})}if(e.length===0)throw new Error("Unable to parse patch file: No changes found. Make sure the patch is a valid UTF8 encoded string");return e}function wF(t){let e=parseInt(t,8)&511;if(e!==evt&&e!==tvt)throw new Error(`Unexpected file mode string: ${t}`);return e}function BF(t){let e=t.split(/\n/g);return e[e.length-1]===""&&e.pop(),svt(ivt(e))}function ovt(t){let e=0,r=0;for(let{type:o,lines:a}of t.parts)switch(o){case"context":r+=a.length,e+=a.length;break;case"deletion":e+=a.length;break;case"insertion":r+=a.length;break;default:Ze.assertNever(o);break}if(e!==t.header.original.length||r!==t.header.patched.length){let o=a=>a<0?a:`+${a}`;throw new Error(`hunk header integrity check failed (expected @@ ${o(t.header.original.length)} ${o(t.header.patched.length)} @@, got @@ ${o(e)} ${o(r)} @@)`)}}async function wI(t,e,r){let o=await t.lstatPromise(e),a=await r();typeof a<"u"&&(e=a),await t.lutimesPromise(e,o.atime,o.mtime)}async function QF(t,{baseFs:e=new jn,dryRun:r=!1,version:o=null}={}){for(let a of t)if(!(a.semverExclusivity!==null&&o!==null&&!Zr.satisfiesWithPrereleases(o,a.semverExclusivity)))switch(a.type){case"file deletion":if(r){if(!e.existsSync(a.path))throw new Error(`Trying to delete a file that doesn't exist: ${a.path}`)}else await wI(e,ee.dirname(a.path),async()=>{await e.unlinkPromise(a.path)});break;case"rename":if(r){if(!e.existsSync(a.fromPath))throw new Error(`Trying to move a file that doesn't exist: ${a.fromPath}`)}else await wI(e,ee.dirname(a.fromPath),async()=>{await wI(e,ee.dirname(a.toPath),async()=>{await wI(e,a.fromPath,async()=>(await e.movePromise(a.fromPath,a.toPath),a.toPath))})});break;case"file creation":if(r){if(e.existsSync(a.path))throw new Error(`Trying to create a file that already exists: ${a.path}`)}else{let n=a.hunk?a.hunk.parts[0].lines.join(` -`)+(a.hunk.parts[0].noNewlineAtEndOfFile?"":` -`):"";await e.mkdirpPromise(ee.dirname(a.path),{chmod:493,utimes:[Li.SAFE_TIME,Li.SAFE_TIME]}),await e.writeFilePromise(a.path,n,{mode:a.mode}),await e.utimesPromise(a.path,Li.SAFE_TIME,Li.SAFE_TIME)}break;case"patch":await wI(e,a.path,async()=>{await lvt(a,{baseFs:e,dryRun:r})});break;case"mode change":{let c=(await e.statPromise(a.path)).mode;if(IQe(a.newMode)!==IQe(c))continue;await wI(e,a.path,async()=>{await e.chmodPromise(a.path,a.newMode)})}break;default:Ze.assertNever(a);break}}function IQe(t){return(t&64)>0}function wQe(t){return t.replace(/\s+$/,"")}function Avt(t,e){return wQe(t)===wQe(e)}async function lvt({hunks:t,path:e},{baseFs:r,dryRun:o=!1}){let a=await r.statSync(e).mode,c=(await r.readFileSync(e,"utf8")).split(/\n/),f=[],g=0,p=0;for(let B of t){let Q=Math.max(p,B.header.patched.start+g),x=Math.max(0,Q-p),C=Math.max(0,c.length-Q-B.header.original.length),N=Math.max(x,C),U=0,H=0,X=null;for(;U<=N;){if(U<=x&&(H=Q-U,X=BQe(B,c,H),X!==null)){U=-U;break}if(U<=C&&(H=Q+U,X=BQe(B,c,H),X!==null))break;U+=1}if(X===null)throw new EI(t.indexOf(B),B);f.push(X),g+=U,p=H+B.header.original.length}if(o)return;let E=0;for(let B of f)for(let Q of B)switch(Q.type){case"splice":{let x=Q.index+E;c.splice(x,Q.numToDelete,...Q.linesToInsert),E+=Q.linesToInsert.length-Q.numToDelete}break;case"pop":c.pop();break;case"push":c.push(Q.line);break;default:Ze.assertNever(Q);break}await r.writeFilePromise(e,c.join(` -`),{mode:a})}function BQe(t,e,r){let o=[];for(let a of t.parts)switch(a.type){case"context":case"deletion":{for(let n of a.lines){let c=e[r];if(c==null||!Avt(c,n))return null;r+=1}a.type==="deletion"&&(o.push({type:"splice",index:r-a.lines.length,numToDelete:a.lines.length,linesToInsert:[]}),a.noNewlineAtEndOfFile&&o.push({type:"push",line:""}))}break;case"insertion":o.push({type:"splice",index:r,numToDelete:0,linesToInsert:a.lines}),a.noNewlineAtEndOfFile&&o.push({type:"pop"});break;default:Ze.assertNever(a.type);break}return o}var cvt=/^builtin<([^>]+)>$/;function BI(t,e){let{protocol:r,source:o,selector:a,params:n}=Y.parseRange(t);if(r!=="patch:")throw new Error("Invalid patch range");if(o===null)throw new Error("Patch locators must explicitly define their source");let c=a?a.split(/&/).map(E=>me.toPortablePath(E)):[],f=n&&typeof n.locator=="string"?Y.parseLocator(n.locator):null,g=n&&typeof n.version=="string"?n.version:null,p=e(o);return{parentLocator:f,sourceItem:p,patchPaths:c,sourceVersion:g}}function vF(t){return t.range.startsWith("patch:")}function S0(t){return t.reference.startsWith("patch:")}function KQ(t){let{sourceItem:e,...r}=BI(t.range,Y.parseDescriptor);return{...r,sourceDescriptor:e}}function _Q(t){let{sourceItem:e,...r}=BI(t.reference,Y.parseLocator);return{...r,sourceLocator:e}}function uvt(t){let{sourceItem:e}=BI(t.range,Y.parseDescriptor);return e}function fvt(t){let{sourceItem:e}=BI(t.reference,Y.parseLocator);return e}function aj(t){if(!vF(t))return t;let{sourceItem:e}=BI(t.range,Y.parseDescriptor);return e}function DF(t){if(!S0(t))return t;let{sourceItem:e}=BI(t.reference,Y.parseLocator);return e}function QQe({parentLocator:t,sourceItem:e,patchPaths:r,sourceVersion:o,patchHash:a},n){let c=t!==null?{locator:Y.stringifyLocator(t)}:{},f=typeof o<"u"?{version:o}:{},g=typeof a<"u"?{hash:a}:{};return Y.makeRange({protocol:"patch:",source:n(e),selector:r.join("&"),params:{...f,...g,...c}})}function SF(t,{parentLocator:e,sourceDescriptor:r,patchPaths:o}){return Y.makeDescriptor(t,QQe({parentLocator:e,sourceItem:r,patchPaths:o},Y.stringifyDescriptor))}function Aj(t,{parentLocator:e,sourcePackage:r,patchPaths:o,patchHash:a}){return Y.makeLocator(t,QQe({parentLocator:e,sourceItem:r,sourceVersion:r.version,patchPaths:o,patchHash:a},Y.stringifyLocator))}function vQe({onAbsolute:t,onRelative:e,onProject:r,onBuiltin:o},a){let n=a.lastIndexOf("!");n!==-1&&(a=a.slice(n+1));let c=a.match(cvt);return c!==null?o(c[1]):a.startsWith("~/")?r(a.slice(2)):ee.isAbsolute(a)?t(a):e(a)}function DQe(t){let e=t.lastIndexOf("!");return{optional:(e!==-1?new Set(t.slice(0,e).split(/!/)):new Set).has("optional")}}function lj(t){return vQe({onAbsolute:()=>!1,onRelative:()=>!0,onProject:()=>!1,onBuiltin:()=>!1},t)}async function HQ(t,e,r){let o=t!==null?await r.fetcher.fetch(t,r):null,a=o&&o.localPath?{packageFs:new Qn(Bt.root),prefixPath:ee.relative(Bt.root,o.localPath)}:o;o&&o!==a&&o.releaseFs&&o.releaseFs();let n=await Ze.releaseAfterUseAsync(async()=>await Promise.all(e.map(async c=>{let f=DQe(c),g=await vQe({onAbsolute:async p=>await ge.readFilePromise(p,"utf8"),onRelative:async p=>{if(a===null)throw new Error("Assertion failed: The parent locator should have been fetched");return await a.packageFs.readFilePromise(ee.join(a.prefixPath,p),"utf8")},onProject:async p=>await ge.readFilePromise(ee.join(r.project.cwd,p),"utf8"),onBuiltin:async p=>await r.project.configuration.firstHook(E=>E.getBuiltinPatch,r.project,p)},c);return{...f,source:g}})));for(let c of n)typeof c.source=="string"&&(c.source=c.source.replace(/\r\n?/g,` -`));return n}async function cj(t,{cache:e,project:r}){let o=r.storedPackages.get(t.locatorHash);if(typeof o>"u")throw new Error("Assertion failed: Expected the package to be registered");let a=DF(t),n=r.storedChecksums,c=new Wi,f=await ge.mktempPromise(),g=ee.join(f,"source"),p=ee.join(f,"user"),E=ee.join(f,".yarn-patch.json"),B=r.configuration.makeFetcher(),Q=[];try{let x,C;if(t.locatorHash===a.locatorHash){let N=await B.fetch(t,{cache:e,project:r,fetcher:B,checksums:n,report:c});Q.push(()=>{var U;return(U=N.releaseFs)==null?void 0:U.call(N)}),x=N,C=N}else x=await B.fetch(t,{cache:e,project:r,fetcher:B,checksums:n,report:c}),Q.push(()=>{var N;return(N=x.releaseFs)==null?void 0:N.call(x)}),C=await B.fetch(t,{cache:e,project:r,fetcher:B,checksums:n,report:c}),Q.push(()=>{var N;return(N=C.releaseFs)==null?void 0:N.call(C)});await Promise.all([ge.copyPromise(g,x.prefixPath,{baseFs:x.packageFs}),ge.copyPromise(p,C.prefixPath,{baseFs:C.packageFs}),ge.writeJsonPromise(E,{locator:Y.stringifyLocator(t),version:o.version})])}finally{for(let x of Q)x()}return ge.detachTemp(f),p}async function uj(t,e){let r=me.fromPortablePath(t).replace(/\\/g,"/"),o=me.fromPortablePath(e).replace(/\\/g,"/"),{stdout:a,stderr:n}=await pn.execvp("git",["-c","core.safecrlf=false","diff","--src-prefix=a/","--dst-prefix=b/","--ignore-cr-at-eol","--full-index","--no-index","--no-renames","--text",r,o],{cwd:me.toPortablePath(process.cwd()),env:{...process.env,GIT_CONFIG_NOSYSTEM:"1",HOME:"",XDG_CONFIG_HOME:"",USERPROFILE:""}});if(n.length>0)throw new Error(`Unable to diff directories. Make sure you have a recent version of 'git' available in PATH. -The following error was reported by 'git': -${n}`);let c=r.startsWith("/")?f=>f.slice(1):f=>f;return a.replace(new RegExp(`(a|b)(${Ze.escapeRegExp(`/${c(r)}/`)})`,"g"),"$1/").replace(new RegExp(`(a|b)${Ze.escapeRegExp(`/${c(o)}/`)}`,"g"),"$1/").replace(new RegExp(Ze.escapeRegExp(`${r}/`),"g"),"").replace(new RegExp(Ze.escapeRegExp(`${o}/`),"g"),"")}$e();function SQe(t,{configuration:e,report:r}){for(let o of t.parts)for(let a of o.lines)switch(o.type){case"context":r.reportInfo(null,` ${Ne.pretty(e,a,"grey")}`);break;case"deletion":r.reportError(28,`- ${Ne.pretty(e,a,Ne.Type.REMOVED)}`);break;case"insertion":r.reportError(28,`+ ${Ne.pretty(e,a,Ne.Type.ADDED)}`);break;default:Ze.assertNever(o.type)}}var qQ=class{supports(e,r){return!!S0(e)}getLocalPath(e,r){return null}async fetch(e,r){let o=r.checksums.get(e.locatorHash)||null,[a,n,c]=await r.cache.fetchPackageFromCache(e,o,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${Y.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the disk`),loader:()=>this.patchPackage(e,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:Y.getIdentVendorPath(e),localPath:this.getLocalPath(e,r),checksum:c}}async patchPackage(e,r){let{parentLocator:o,sourceLocator:a,sourceVersion:n,patchPaths:c}=_Q(e),f=await HQ(o,c,r),g=await ge.mktempPromise(),p=ee.join(g,"current.zip"),E=await r.fetcher.fetch(a,r),B=Y.getIdentVendorPath(e),Q=new Fs(p,{create:!0,level:r.project.configuration.get("compressionLevel")});await Ze.releaseAfterUseAsync(async()=>{await Q.copyPromise(B,E.prefixPath,{baseFs:E.packageFs,stableSort:!0})},E.releaseFs),Q.saveAndClose();for(let{source:x,optional:C}of f){if(x===null)continue;let N=new Fs(p,{level:r.project.configuration.get("compressionLevel")}),U=new Qn(ee.resolve(Bt.root,B),{baseFs:N});try{await QF(BF(x),{baseFs:U,version:n})}catch(H){if(!(H instanceof EI))throw H;let X=r.project.configuration.get("enableInlineHunks"),ie=!X&&!C?" (set enableInlineHunks for details)":"",fe=`${Y.prettyLocator(r.project.configuration,e)}: ${H.message}${ie}`,ye=Qe=>{!X||SQe(H.hunk,{configuration:r.project.configuration,report:Qe})};if(N.discardAndClose(),C){r.report.reportWarningOnce(66,fe,{reportExtra:ye});continue}else throw new rr(66,fe,ye)}N.saveAndClose()}return new Fs(p,{level:r.project.configuration.get("compressionLevel")})}};$e();$e();var gvt=3,GQ=class{supportsDescriptor(e,r){return!!vF(e)}supportsLocator(e,r){return!!S0(e)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,o){let{patchPaths:a}=KQ(e);return a.every(n=>!lj(n))?e:Y.bindDescriptor(e,{locator:Y.stringifyLocator(r)})}getResolutionDependencies(e,r){let{sourceDescriptor:o}=KQ(e);return{sourceDescriptor:r.project.configuration.normalizeDependency(o)}}async getCandidates(e,r,o){if(!o.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let{parentLocator:a,patchPaths:n}=KQ(e),c=await HQ(a,n,o.fetchOptions),f=r.sourceDescriptor;if(typeof f>"u")throw new Error("Assertion failed: The dependency should have been resolved");let g=Oi.makeHash(`${gvt}`,...c.map(p=>JSON.stringify(p))).slice(0,6);return[Aj(e,{parentLocator:a,sourcePackage:f,patchPaths:n,patchHash:g})]}async getSatisfying(e,r,o,a){let[n]=await this.getCandidates(e,r,a);return{locators:o.filter(c=>c.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){let{sourceLocator:o}=_Q(e);return{...await r.resolver.resolve(o,r),...e}}};$e();Ft();var x0=be(Vt());var k0=class extends gt{constructor(){super(...arguments);this.save=x0.Option.Boolean("-s,--save",!1,{description:"Add the patch to your resolution entries"});this.patchFolder=x0.Option.String()}async execute(){let r=await rt.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await xt.find(r,this.context.cwd);if(!a)throw new lr(o.cwd,this.context.cwd);await o.restoreInstallState();let n=ee.resolve(this.context.cwd,me.toPortablePath(this.patchFolder)),c=ee.join(n,"../source"),f=ee.join(n,"../.yarn-patch.json");if(!ge.existsSync(c))throw new x0.UsageError("The argument folder didn't get created by 'yarn patch'");let g=await uj(c,n),p=await ge.readJsonPromise(f),E=Y.parseLocator(p.locator,!0);if(!o.storedPackages.has(E.locatorHash))throw new x0.UsageError("No package found in the project for the given locator");if(!this.save){this.context.stdout.write(g);return}let B=r.get("patchFolder"),Q=ee.join(B,`${Y.slugifyLocator(E)}.patch`);await ge.mkdirPromise(B,{recursive:!0}),await ge.writeFilePromise(Q,g);let x=[],C=new Map;for(let N of o.storedPackages.values()){if(Y.isVirtualLocator(N))continue;let U=N.dependencies.get(E.identHash);if(!U)continue;let H=Y.ensureDevirtualizedDescriptor(U),X=aj(H),ie=o.storedResolutions.get(X.descriptorHash);if(!ie)throw new Error("Assertion failed: Expected the resolution to have been registered");if(!o.storedPackages.get(ie))throw new Error("Assertion failed: Expected the package to have been registered");let ye=o.tryWorkspaceByLocator(N);if(ye)x.push(ye);else{let Qe=o.originalPackages.get(N.locatorHash);if(!Qe)throw new Error("Assertion failed: Expected the original package to have been registered");let Pe=Qe.dependencies.get(U.identHash);if(!Pe)throw new Error("Assertion failed: Expected the original dependency to have been registered");C.set(Pe.descriptorHash,Pe)}}for(let N of x)for(let U of Gt.hardDependencies){let H=N.manifest[U].get(E.identHash);if(!H)continue;let X=SF(H,{parentLocator:null,sourceDescriptor:Y.convertLocatorToDescriptor(E),patchPaths:[ee.join(Xr.home,ee.relative(o.cwd,Q))]});N.manifest[U].set(H.identHash,X)}for(let N of C.values()){let U=SF(N,{parentLocator:null,sourceDescriptor:Y.convertLocatorToDescriptor(E),patchPaths:[ee.join(Xr.home,ee.relative(o.cwd,Q))]});o.topLevelWorkspace.manifest.resolutions.push({pattern:{descriptor:{fullName:Y.stringifyIdent(U),description:N.range}},reference:U.range})}await o.persist()}};k0.paths=[["patch-commit"]],k0.usage=x0.Command.Usage({description:"generate a patch out of a directory",details:"\n By default, this will print a patchfile on stdout based on the diff between the folder passed in and the original version of the package. Such file is suitable for consumption with the `patch:` protocol.\n\n With the `-s,--save` option set, the patchfile won't be printed on stdout anymore and will instead be stored within a local file (by default kept within `.yarn/patches`, but configurable via the `patchFolder` setting). A `resolutions` entry will also be added to your top-level manifest, referencing the patched package via the `patch:` protocol.\n\n Note that only folders generated by `yarn patch` are accepted as valid input for `yarn patch-commit`.\n "});$e();Ft();var zu=be(Vt());var P0=class extends gt{constructor(){super(...arguments);this.update=zu.Option.Boolean("-u,--update",!1,{description:"Reapply local patches that already apply to this packages"});this.json=zu.Option.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.package=zu.Option.String()}async execute(){let r=await rt.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await xt.find(r,this.context.cwd),n=await $r.find(r);if(!a)throw new lr(o.cwd,this.context.cwd);await o.restoreInstallState();let c=Y.parseLocator(this.package);if(c.reference==="unknown"){let f=Ze.mapAndFilter([...o.storedPackages.values()],g=>g.identHash!==c.identHash?Ze.mapAndFilter.skip:Y.isVirtualLocator(g)?Ze.mapAndFilter.skip:S0(g)!==this.update?Ze.mapAndFilter.skip:g);if(f.length===0)throw new zu.UsageError("No package found in the project for the given locator");if(f.length>1)throw new zu.UsageError(`Multiple candidate packages found; explicitly choose one of them (use \`yarn why \` to get more information as to who depends on them): -${f.map(g=>` -- ${Y.prettyLocator(r,g)}`).join("")}`);c=f[0]}if(!o.storedPackages.has(c.locatorHash))throw new zu.UsageError("No package found in the project for the given locator");await St.start({configuration:r,json:this.json,stdout:this.context.stdout},async f=>{let g=DF(c),p=await cj(c,{cache:n,project:o});f.reportJson({locator:Y.stringifyLocator(g),path:me.fromPortablePath(p)});let E=this.update?" along with its current modifications":"";f.reportInfo(0,`Package ${Y.prettyLocator(r,g)} got extracted with success${E}!`),f.reportInfo(0,`You can now edit the following folder: ${Ne.pretty(r,me.fromPortablePath(p),"magenta")}`),f.reportInfo(0,`Once you are done run ${Ne.pretty(r,`yarn patch-commit -s ${process.platform==="win32"?'"':""}${me.fromPortablePath(p)}${process.platform==="win32"?'"':""}`,"cyan")} and Yarn will store a patchfile based on your changes.`)})}};P0.paths=[["patch"]],P0.usage=zu.Command.Usage({description:"prepare a package for patching",details:"\n This command will cause a package to be extracted in a temporary directory intended to be editable at will.\n\n Once you're done with your changes, run `yarn patch-commit -s ` (with `` being the temporary directory you received) to generate a patchfile and register it into your top-level manifest via the `patch:` protocol. Run `yarn patch-commit -h` for more details.\n\n Calling the command when you already have a patch won't import it by default (in other words, the default behavior is to reset existing patches). However, adding the `-u,--update` flag will import any current patch.\n "});var pvt={configuration:{enableInlineHunks:{description:"If true, the installs will print unmatched patch hunks",type:"BOOLEAN",default:!1},patchFolder:{description:"Folder where the patch files must be written",type:"ABSOLUTE_PATH",default:"./.yarn/patches"}},commands:[k0,P0],fetchers:[qQ],resolvers:[GQ]},hvt=pvt;var hj={};tr(hj,{PnpmLinker:()=>jQ,default:()=>Evt});$e();Ft();var kF=be(Vt()),jQ=class{getCustomDataKey(){return JSON.stringify({name:"PnpmLinker",version:3})}supportsPackage(e,r){return this.isEnabled(r)}async findPackageLocation(e,r){if(!this.isEnabled(r))throw new Error("Assertion failed: Expected the pnpm linker to be enabled");let o=this.getCustomDataKey(),a=r.project.linkersCustomData.get(o);if(!a)throw new kF.UsageError(`The project in ${Ne.pretty(r.project.configuration,`${r.project.cwd}/package.json`,Ne.Type.PATH)} doesn't seem to have been installed - running an install there might help`);let n=a.pathsByLocator.get(e.locatorHash);if(typeof n>"u")throw new kF.UsageError(`Couldn't find ${Y.prettyLocator(r.project.configuration,e)} in the currently installed pnpm map - running an install might help`);return n.packageLocation}async findPackageLocator(e,r){if(!this.isEnabled(r))return null;let o=this.getCustomDataKey(),a=r.project.linkersCustomData.get(o);if(!a)throw new kF.UsageError(`The project in ${Ne.pretty(r.project.configuration,`${r.project.cwd}/package.json`,Ne.Type.PATH)} doesn't seem to have been installed - running an install there might help`);let n=e.match(/(^.*\/node_modules\/(@[^/]*\/)?[^/]+)(\/.*$)/);if(n){let g=a.locatorByPath.get(n[1]);if(g)return g}let c=e,f=e;do{f=c,c=ee.dirname(f);let g=a.locatorByPath.get(f);if(g)return g}while(c!==f);return null}makeInstaller(e){return new gj(e)}isEnabled(e){return e.project.configuration.get("nodeLinker")==="pnpm"}},gj=class{constructor(e){this.opts=e;this.asyncActions=new Ze.AsyncActions(10);this.customData={pathsByLocator:new Map,locatorByPath:new Map};this.indexFolderPromise=Fv(ge,{indexPath:ee.join(e.project.configuration.get("globalFolder"),"index")})}attachCustomData(e){}async installPackage(e,r,o){switch(e.linkType){case"SOFT":return this.installPackageSoft(e,r,o);case"HARD":return this.installPackageHard(e,r,o)}throw new Error("Assertion failed: Unsupported package link type")}async installPackageSoft(e,r,o){let a=ee.resolve(r.packageFs.getRealPath(),r.prefixPath),n=this.opts.project.tryWorkspaceByLocator(e)?ee.join(a,Xr.nodeModules):null;return this.customData.pathsByLocator.set(e.locatorHash,{packageLocation:a,dependenciesLocation:n}),{packageLocation:a,buildDirective:null}}async installPackageHard(e,r,o){let a=dvt(e,{project:this.opts.project}),n=a.packageLocation;this.customData.locatorByPath.set(n,Y.stringifyLocator(e)),this.customData.pathsByLocator.set(e.locatorHash,a),o.holdFetchResult(this.asyncActions.set(e.locatorHash,async()=>{await ge.mkdirPromise(n,{recursive:!0}),await ge.copyPromise(n,r.prefixPath,{baseFs:r.packageFs,overwrite:!1,linkStrategy:{type:"HardlinkFromIndex",indexPath:await this.indexFolderPromise,autoRepair:!0}})}));let f=Y.isVirtualLocator(e)?Y.devirtualizeLocator(e):e,g={manifest:await Gt.tryFind(r.prefixPath,{baseFs:r.packageFs})??new Gt,misc:{hasBindingGyp:_u.hasBindingGyp(r)}},p=this.opts.project.getDependencyMeta(f,e.version),E=_u.extractBuildScripts(e,g,p,{configuration:this.opts.project.configuration,report:this.opts.report});return{packageLocation:n,buildDirective:E}}async attachInternalDependencies(e,r){if(this.opts.project.configuration.get("nodeLinker")!=="pnpm"||!kQe(e,{project:this.opts.project}))return;let o=this.customData.pathsByLocator.get(e.locatorHash);if(typeof o>"u")throw new Error(`Assertion failed: Expected the package to have been registered (${Y.stringifyLocator(e)})`);let{dependenciesLocation:a}=o;!a||this.asyncActions.reduce(e.locatorHash,async n=>{await ge.mkdirPromise(a,{recursive:!0});let c=await mvt(a),f=new Map(c),g=[n],p=(B,Q)=>{let x=Q;kQe(Q,{project:this.opts.project})||(this.opts.report.reportWarningOnce(0,"The pnpm linker doesn't support providing different versions to workspaces' peer dependencies"),x=Y.devirtualizeLocator(Q));let C=this.customData.pathsByLocator.get(x.locatorHash);if(typeof C>"u")throw new Error(`Assertion failed: Expected the package to have been registered (${Y.stringifyLocator(Q)})`);let N=Y.stringifyIdent(B),U=ee.join(a,N),H=ee.relative(ee.dirname(U),C.packageLocation),X=f.get(N);f.delete(N),g.push(Promise.resolve().then(async()=>{if(X){if(X.isSymbolicLink()&&await ge.readlinkPromise(U)===H)return;await ge.removePromise(U)}await ge.mkdirpPromise(ee.dirname(U)),process.platform=="win32"?await ge.symlinkPromise(C.packageLocation,U,"junction"):await ge.symlinkPromise(H,U)}))},E=!1;for(let[B,Q]of r)B.identHash===e.identHash&&(E=!0),p(B,Q);!E&&!this.opts.project.tryWorkspaceByLocator(e)&&p(Y.convertLocatorToDescriptor(e),e),g.push(yvt(a,f)),await Promise.all(g)})}async attachExternalDependents(e,r){throw new Error("External dependencies haven't been implemented for the pnpm linker")}async finalizeInstall(){let e=PQe(this.opts.project);if(this.opts.project.configuration.get("nodeLinker")!=="pnpm")await ge.removePromise(e);else{let r;try{r=new Set(await ge.readdirPromise(e))}catch{r=new Set}for(let{dependenciesLocation:o}of this.customData.pathsByLocator.values()){if(!o)continue;let a=ee.contains(e,o);if(a===null)continue;let[n]=a.split(ee.sep);r.delete(n)}await Promise.all([...r].map(async o=>{await ge.removePromise(ee.join(e,o))}))}return await this.asyncActions.wait(),await pj(e),this.opts.project.configuration.get("nodeLinker")!=="node-modules"&&await pj(xQe(this.opts.project)),{customData:this.customData}}};function xQe(t){return ee.join(t.cwd,Xr.nodeModules)}function PQe(t){return ee.join(xQe(t),".store")}function dvt(t,{project:e}){let r=Y.slugifyLocator(t),o=PQe(e),a=ee.join(o,r,"package"),n=ee.join(o,r,Xr.nodeModules);return{packageLocation:a,dependenciesLocation:n}}function kQe(t,{project:e}){return!Y.isVirtualLocator(t)||!e.tryWorkspaceByLocator(t)}async function mvt(t){let e=new Map,r=[];try{r=await ge.readdirPromise(t,{withFileTypes:!0})}catch(o){if(o.code!=="ENOENT")throw o}try{for(let o of r)if(!o.name.startsWith("."))if(o.name.startsWith("@")){let a=await ge.readdirPromise(ee.join(t,o.name),{withFileTypes:!0});if(a.length===0)e.set(o.name,o);else for(let n of a)e.set(`${o.name}/${n.name}`,n)}else e.set(o.name,o)}catch(o){if(o.code!=="ENOENT")throw o}return e}async function yvt(t,e){var a;let r=[],o=new Set;for(let n of e.keys()){r.push(ge.removePromise(ee.join(t,n)));let c=(a=Y.tryParseIdent(n))==null?void 0:a.scope;c&&o.add(`@${c}`)}return Promise.all(r).then(()=>Promise.all([...o].map(n=>pj(ee.join(t,n)))))}async function pj(t){try{await ge.rmdirPromise(t)}catch(e){if(e.code!=="ENOENT"&&e.code!=="ENOTEMPTY")throw e}}var Cvt={linkers:[jQ]},Evt=Cvt;var Ij={};tr(Ij,{StageCommand:()=>b0,default:()=>bvt,stageUtils:()=>WQ});$e();Ft();var bg=be(Vt());$e();Ft();var WQ={};tr(WQ,{ActionType:()=>dj,checkConsensus:()=>xF,expandDirectory:()=>yj,findConsensus:()=>Cj,findVcsRoot:()=>YQ,genCommitMessage:()=>Ej,getCommitPrefix:()=>bQe,isYarnFile:()=>mj});Ft();var dj=(n=>(n[n.CREATE=0]="CREATE",n[n.DELETE=1]="DELETE",n[n.ADD=2]="ADD",n[n.REMOVE=3]="REMOVE",n[n.MODIFY=4]="MODIFY",n))(dj||{});async function YQ(t,{marker:e}){do if(!ge.existsSync(ee.join(t,e)))t=ee.dirname(t);else return t;while(t!=="/");return null}function mj(t,{roots:e,names:r}){if(r.has(ee.basename(t)))return!0;do if(!e.has(t))t=ee.dirname(t);else return!0;while(t!=="/");return!1}function yj(t){let e=[],r=[t];for(;r.length>0;){let o=r.pop(),a=ge.readdirSync(o);for(let n of a){let c=ee.resolve(o,n);ge.lstatSync(c).isDirectory()?r.push(c):e.push(c)}}return e}function xF(t,e){let r=0,o=0;for(let a of t)a!=="wip"&&(e.test(a)?r+=1:o+=1);return r>=o}function Cj(t){let e=xF(t,/^(\w\(\w+\):\s*)?\w+s/),r=xF(t,/^(\w\(\w+\):\s*)?[A-Z]/),o=xF(t,/^\w\(\w+\):/);return{useThirdPerson:e,useUpperCase:r,useComponent:o}}function bQe(t){return t.useComponent?"chore(yarn): ":""}var Ivt=new Map([[0,"create"],[1,"delete"],[2,"add"],[3,"remove"],[4,"update"]]);function Ej(t,e){let r=bQe(t),o=[],a=e.slice().sort((n,c)=>n[0]-c[0]);for(;a.length>0;){let[n,c]=a.shift(),f=Ivt.get(n);t.useUpperCase&&o.length===0&&(f=`${f[0].toUpperCase()}${f.slice(1)}`),t.useThirdPerson&&(f+="s");let g=[c];for(;a.length>0&&a[0][0]===n;){let[,E]=a.shift();g.push(E)}g.sort();let p=g.shift();g.length===1?p+=" (and one other)":g.length>1&&(p+=` (and ${g.length} others)`),o.push(`${f} ${p}`)}return`${r}${o.join(", ")}`}var wvt="Commit generated via `yarn stage`",Bvt=11;async function FQe(t){let{code:e,stdout:r}=await pn.execvp("git",["log","-1","--pretty=format:%H"],{cwd:t});return e===0?r.trim():null}async function Qvt(t,e){let r=[],o=e.filter(p=>ee.basename(p.path)==="package.json");for(let{action:p,path:E}of o){let B=ee.relative(t,E);if(p===4){let Q=await FQe(t),{stdout:x}=await pn.execvp("git",["show",`${Q}:${B}`],{cwd:t,strict:!0}),C=await Gt.fromText(x),N=await Gt.fromFile(E),U=new Map([...N.dependencies,...N.devDependencies]),H=new Map([...C.dependencies,...C.devDependencies]);for(let[X,ie]of H){let fe=Y.stringifyIdent(ie),ye=U.get(X);ye?ye.range!==ie.range&&r.push([4,`${fe} to ${ye.range}`]):r.push([3,fe])}for(let[X,ie]of U)H.has(X)||r.push([2,Y.stringifyIdent(ie)])}else if(p===0){let Q=await Gt.fromFile(E);Q.name?r.push([0,Y.stringifyIdent(Q.name)]):r.push([0,"a package"])}else if(p===1){let Q=await FQe(t),{stdout:x}=await pn.execvp("git",["show",`${Q}:${B}`],{cwd:t,strict:!0}),C=await Gt.fromText(x);C.name?r.push([1,Y.stringifyIdent(C.name)]):r.push([1,"a package"])}else throw new Error("Assertion failed: Unsupported action type")}let{code:a,stdout:n}=await pn.execvp("git",["log",`-${Bvt}`,"--pretty=format:%s"],{cwd:t}),c=a===0?n.split(/\n/g).filter(p=>p!==""):[],f=Cj(c);return Ej(f,r)}var vvt={[0]:[" A ","?? "],[4]:[" M "],[1]:[" D "]},Dvt={[0]:["A "],[4]:["M "],[1]:["D "]},RQe={async findRoot(t){return await YQ(t,{marker:".git"})},async filterChanges(t,e,r,o){let{stdout:a}=await pn.execvp("git",["status","-s"],{cwd:t,strict:!0}),n=a.toString().split(/\n/g),c=o!=null&&o.staged?Dvt:vvt;return[].concat(...n.map(g=>{if(g==="")return[];let p=g.slice(0,3),E=ee.resolve(t,g.slice(3));if(!(o!=null&&o.staged)&&p==="?? "&&g.endsWith("/"))return yj(E).map(B=>({action:0,path:B}));{let Q=[0,4,1].find(x=>c[x].includes(p));return Q!==void 0?[{action:Q,path:E}]:[]}})).filter(g=>mj(g.path,{roots:e,names:r}))},async genCommitMessage(t,e){return await Qvt(t,e)},async makeStage(t,e){let r=e.map(o=>me.fromPortablePath(o.path));await pn.execvp("git",["add","--",...r],{cwd:t,strict:!0})},async makeCommit(t,e,r){let o=e.map(a=>me.fromPortablePath(a.path));await pn.execvp("git",["add","-N","--",...o],{cwd:t,strict:!0}),await pn.execvp("git",["commit","-m",`${r} - -${wvt} -`,"--",...o],{cwd:t,strict:!0})},async makeReset(t,e){let r=e.map(o=>me.fromPortablePath(o.path));await pn.execvp("git",["reset","HEAD","--",...r],{cwd:t,strict:!0})}};var TQe={async findRoot(t){return await YQ(t,{marker:".hg"})},async filterChanges(t,e,r){return[]},async genCommitMessage(t,e){return""},async makeStage(t,e){},async makeCommit(t,e,r){},async makeReset(t,e){},async makeUpdate(t,e){}};var Svt=[RQe,TQe],b0=class extends gt{constructor(){super(...arguments);this.commit=bg.Option.Boolean("-c,--commit",!1,{description:"Commit the staged files"});this.reset=bg.Option.Boolean("-r,--reset",!1,{description:"Remove all files from the staging area"});this.dryRun=bg.Option.Boolean("-n,--dry-run",!1,{description:"Print the commit message and the list of modified files without staging / committing"});this.update=bg.Option.Boolean("-u,--update",!1,{hidden:!0})}async execute(){let r=await rt.find(this.context.cwd,this.context.plugins),{project:o}=await xt.find(r,this.context.cwd),{driver:a,root:n}=await kvt(o.cwd),c=[r.get("cacheFolder"),r.get("globalFolder"),r.get("virtualFolder"),r.get("yarnPath")];await r.triggerHook(B=>B.populateYarnPaths,o,B=>{c.push(B)});let f=new Set;for(let B of c)for(let Q of xvt(n,B))f.add(Q);let g=new Set([r.get("rcFilename"),r.get("lockfileFilename"),"package.json"]),p=await a.filterChanges(n,f,g),E=await a.genCommitMessage(n,p);if(this.dryRun)if(this.commit)this.context.stdout.write(`${E} -`);else for(let B of p)this.context.stdout.write(`${me.fromPortablePath(B.path)} -`);else if(this.reset){let B=await a.filterChanges(n,f,g,{staged:!0});B.length===0?this.context.stdout.write("No staged changes found!"):await a.makeReset(n,B)}else p.length===0?this.context.stdout.write("No changes found!"):this.commit?await a.makeCommit(n,p,E):(await a.makeStage(n,p),this.context.stdout.write(E))}};b0.paths=[["stage"]],b0.usage=bg.Command.Usage({description:"add all yarn files to your vcs",details:"\n This command will add to your staging area the files belonging to Yarn (typically any modified `package.json` and `.yarnrc.yml` files, but also linker-generated files, cache data, etc). It will take your ignore list into account, so the cache files won't be added if the cache is ignored in a `.gitignore` file (assuming you use Git).\n\n Running `--reset` will instead remove them from the staging area (the changes will still be there, but won't be committed until you stage them back).\n\n Since the staging area is a non-existent concept in Mercurial, Yarn will always create a new commit when running this command on Mercurial repositories. You can get this behavior when using Git by using the `--commit` flag which will directly create a commit.\n ",examples:[["Adds all modified project files to the staging area","yarn stage"],["Creates a new commit containing all modified project files","yarn stage --commit"]]});async function kvt(t){let e=null,r=null;for(let o of Svt)if((r=await o.findRoot(t))!==null){e=o;break}if(e===null||r===null)throw new bg.UsageError("No stage driver has been found for your current project");return{driver:e,root:r}}function xvt(t,e){let r=[];if(e===null)return r;for(;;){(e===t||e.startsWith(`${t}/`))&&r.push(e);let o;try{o=ge.statSync(e)}catch{break}if(o.isSymbolicLink())e=ee.resolve(ee.dirname(e),ge.readlinkSync(e));else break}return r}var Pvt={commands:[b0]},bvt=Pvt;var wj={};tr(wj,{default:()=>Uvt});$e();$e();Ft();var LQe=be(wi());$e();var NQe=be(M6()),Fvt="e8e1bd300d860104bb8c58453ffa1eb4",Rvt="OFCNCOG2CU",MQe=async(t,e)=>{var n;let r=Y.stringifyIdent(t),a=Tvt(e).initIndex("npm-search");try{return((n=(await a.getObject(r,{attributesToRetrieve:["types"]})).types)==null?void 0:n.ts)==="definitely-typed"}catch{return!1}},Tvt=t=>(0,NQe.default)(Rvt,Fvt,{requester:{async send(r){try{let o=await Hn.request(r.url,r.data||null,{configuration:t,headers:r.headers});return{content:o.body,isTimedOut:!1,status:o.statusCode}}catch(o){return{content:o.response.body,isTimedOut:!1,status:o.response.statusCode}}}}});var OQe=t=>t.scope?`${t.scope}__${t.name}`:`${t.name}`,Nvt=async(t,e,r,o)=>{if(r.scope==="types")return;let{project:a}=t,{configuration:n}=a;if(!(n.get("tsEnableAutoTypes")??ge.existsSync(ee.join(a.cwd,"tsconfig.json"))))return;let f=n.makeResolver(),g={project:a,resolver:f,report:new Wi};if(!await MQe(r,n))return;let E=OQe(r),B=Y.parseRange(r.range).selector;if(!Zr.validRange(B)){let U=n.normalizeDependency(r),H=await f.getCandidates(U,{},g);B=Y.parseRange(H[0].reference).selector}let Q=LQe.default.coerce(B);if(Q===null)return;let x=`${Ec.Modifier.CARET}${Q.major}`,C=Y.makeDescriptor(Y.makeIdent("types",E),x),N=Ze.mapAndFind(a.workspaces,U=>{var fe,ye;let H=(fe=U.manifest.dependencies.get(r.identHash))==null?void 0:fe.descriptorHash,X=(ye=U.manifest.devDependencies.get(r.identHash))==null?void 0:ye.descriptorHash;if(H!==r.descriptorHash&&X!==r.descriptorHash)return Ze.mapAndFind.skip;let ie=[];for(let Qe of Gt.allDependencies){let Pe=U.manifest[Qe].get(C.identHash);typeof Pe>"u"||ie.push([Qe,Pe])}return ie.length===0?Ze.mapAndFind.skip:ie});if(typeof N<"u")for(let[U,H]of N)t.manifest[U].set(H.identHash,H);else{try{let U=n.normalizeDependency(C);if((await f.getCandidates(U,{},g)).length===0)return}catch{return}t.manifest[Ec.Target.DEVELOPMENT].set(C.identHash,C)}},Mvt=async(t,e,r)=>{if(r.scope==="types")return;let{project:o}=t,{configuration:a}=o;if(!(a.get("tsEnableAutoTypes")??ge.existsSync(ee.join(o.cwd,"tsconfig.json"))))return;let c=OQe(r),f=Y.makeIdent("types",c);for(let g of Gt.allDependencies)typeof t.manifest[g].get(f.identHash)>"u"||t.manifest[g].delete(f.identHash)},Lvt=(t,e)=>{e.publishConfig&&e.publishConfig.typings&&(e.typings=e.publishConfig.typings),e.publishConfig&&e.publishConfig.types&&(e.types=e.publishConfig.types)},Ovt={configuration:{tsEnableAutoTypes:{description:"Whether Yarn should auto-install @types/ dependencies on 'yarn add'",type:"BOOLEAN",isNullable:!0,default:null}},hooks:{afterWorkspaceDependencyAddition:Nvt,afterWorkspaceDependencyRemoval:Mvt,beforeWorkspacePacking:Lvt}},Uvt=Ovt;var Sj={};tr(Sj,{VersionApplyCommand:()=>R0,VersionCheckCommand:()=>T0,VersionCommand:()=>N0,default:()=>iDt,versionUtils:()=>kI});$e();$e();var F0=be(Vt());var kI={};tr(kI,{Decision:()=>DI,applyPrerelease:()=>GQe,applyReleases:()=>Dj,applyStrategy:()=>bF,clearVersionFiles:()=>Bj,getUndecidedDependentWorkspaces:()=>VQ,getUndecidedWorkspaces:()=>PF,openVersionFile:()=>SI,requireMoreDecisions:()=>tDt,resolveVersionFiles:()=>JQ,suggestStrategy:()=>vj,updateVersionFiles:()=>Qj,validateReleaseDecision:()=>vI});$e();Ft();cl();var QI=be(Vt()),qQe=be(HQe()),Xu=be(wi()),eDt=/^(>=|[~^]|)(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(-(0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(\.(0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*)?(\+[0-9a-zA-Z-]+(\.[0-9a-zA-Z-]+)*)?$/,DI=(c=>(c.UNDECIDED="undecided",c.DECLINE="decline",c.MAJOR="major",c.MINOR="minor",c.PATCH="patch",c.PRERELEASE="prerelease",c))(DI||{});function vI(t){let e=Xu.default.valid(t);return e||Ze.validateEnum((0,qQe.default)(DI,"UNDECIDED"),t)}async function JQ(t,{prerelease:e=null}={}){let r=new Map,o=t.configuration.get("deferredVersionFolder");if(!ge.existsSync(o))return r;let a=await ge.readdirPromise(o);for(let n of a){if(!n.endsWith(".yml"))continue;let c=ee.join(o,n),f=await ge.readFilePromise(c,"utf8"),g=os(f);for(let[p,E]of Object.entries(g.releases||{})){if(E==="decline")continue;let B=Y.parseIdent(p),Q=t.tryWorkspaceByIdent(B);if(Q===null)throw new Error(`Assertion failed: Expected a release definition file to only reference existing workspaces (${ee.basename(c)} references ${p})`);if(Q.manifest.version===null)throw new Error(`Assertion failed: Expected the workspace to have a version (${Y.prettyLocator(t.configuration,Q.anchoredLocator)})`);let x=Q.manifest.raw.stableVersion??Q.manifest.version,C=r.get(Q),N=bF(x,vI(E));if(N===null)throw new Error(`Assertion failed: Expected ${x} to support being bumped via strategy ${E}`);let U=typeof C<"u"?Xu.default.gt(N,C)?N:C:N;r.set(Q,U)}}return e&&(r=new Map([...r].map(([n,c])=>[n,GQe(c,{current:n.manifest.version,prerelease:e})]))),r}async function Bj(t){let e=t.configuration.get("deferredVersionFolder");!ge.existsSync(e)||await ge.removePromise(e)}async function Qj(t,e){let r=new Set(e),o=t.configuration.get("deferredVersionFolder");if(!ge.existsSync(o))return;let a=await ge.readdirPromise(o);for(let n of a){if(!n.endsWith(".yml"))continue;let c=ee.join(o,n),f=await ge.readFilePromise(c,"utf8"),g=os(f),p=g==null?void 0:g.releases;if(!!p){for(let E of Object.keys(p)){let B=Y.parseIdent(E),Q=t.tryWorkspaceByIdent(B);(Q===null||r.has(Q))&&delete g.releases[E]}Object.keys(g.releases).length>0?await ge.changeFilePromise(c,ja(new ja.PreserveOrdering(g))):await ge.unlinkPromise(c)}}}async function SI(t,{allowEmpty:e=!1}={}){let r=t.configuration;if(r.projectCwd===null)throw new QI.UsageError("This command can only be run from within a Yarn project");let o=await Ia.fetchRoot(r.projectCwd),a=o!==null?await Ia.fetchBase(o,{baseRefs:r.get("changesetBaseRefs")}):null,n=o!==null?await Ia.fetchChangedFiles(o,{base:a.hash,project:t}):[],c=r.get("deferredVersionFolder"),f=n.filter(x=>ee.contains(c,x)!==null);if(f.length>1)throw new QI.UsageError(`Your current branch contains multiple versioning files; this isn't supported: -- ${f.map(x=>me.fromPortablePath(x)).join(` -- `)}`);let g=new Set(Ze.mapAndFilter(n,x=>{let C=t.tryWorkspaceByFilePath(x);return C===null?Ze.mapAndFilter.skip:C}));if(f.length===0&&g.size===0&&!e)return null;let p=f.length===1?f[0]:ee.join(c,`${Oi.makeHash(Math.random().toString()).slice(0,8)}.yml`),E=ge.existsSync(p)?await ge.readFilePromise(p,"utf8"):"{}",B=os(E),Q=new Map;for(let x of B.declined||[]){let C=Y.parseIdent(x),N=t.getWorkspaceByIdent(C);Q.set(N,"decline")}for(let[x,C]of Object.entries(B.releases||{})){let N=Y.parseIdent(x),U=t.getWorkspaceByIdent(N);Q.set(U,vI(C))}return{project:t,root:o,baseHash:a!==null?a.hash:null,baseTitle:a!==null?a.title:null,changedFiles:new Set(n),changedWorkspaces:g,releaseRoots:new Set([...g].filter(x=>x.manifest.version!==null)),releases:Q,async saveAll(){let x={},C=[],N=[];for(let U of t.workspaces){if(U.manifest.version===null)continue;let H=Y.stringifyIdent(U.locator),X=Q.get(U);X==="decline"?C.push(H):typeof X<"u"?x[H]=vI(X):g.has(U)&&N.push(H)}await ge.mkdirPromise(ee.dirname(p),{recursive:!0}),await ge.changeFilePromise(p,ja(new ja.PreserveOrdering({releases:Object.keys(x).length>0?x:void 0,declined:C.length>0?C:void 0,undecided:N.length>0?N:void 0})))}}}function tDt(t){return PF(t).size>0||VQ(t).length>0}function PF(t){let e=new Set;for(let r of t.changedWorkspaces)r.manifest.version!==null&&(t.releases.has(r)||e.add(r));return e}function VQ(t,{include:e=new Set}={}){let r=[],o=new Map(Ze.mapAndFilter([...t.releases],([n,c])=>c==="decline"?Ze.mapAndFilter.skip:[n.anchoredLocator.locatorHash,n])),a=new Map(Ze.mapAndFilter([...t.releases],([n,c])=>c!=="decline"?Ze.mapAndFilter.skip:[n.anchoredLocator.locatorHash,n]));for(let n of t.project.workspaces)if(!(!e.has(n)&&(a.has(n.anchoredLocator.locatorHash)||o.has(n.anchoredLocator.locatorHash)))&&n.manifest.version!==null)for(let c of Gt.hardDependencies)for(let f of n.manifest.getForScope(c).values()){let g=t.project.tryWorkspaceByDescriptor(f);g!==null&&o.has(g.anchoredLocator.locatorHash)&&r.push([n,g])}return r}function vj(t,e){let r=Xu.default.clean(e);for(let o of Object.values(DI))if(o!=="undecided"&&o!=="decline"&&Xu.default.inc(t,o)===r)return o;return null}function bF(t,e){if(Xu.default.valid(e))return e;if(t===null)throw new QI.UsageError(`Cannot apply the release strategy "${e}" unless the workspace already has a valid version`);if(!Xu.default.valid(t))throw new QI.UsageError(`Cannot apply the release strategy "${e}" on a non-semver version (${t})`);let r=Xu.default.inc(t,e);if(r===null)throw new QI.UsageError(`Cannot apply the release strategy "${e}" on the specified version (${t})`);return r}function Dj(t,e,{report:r}){let o=new Map;for(let a of t.workspaces)for(let n of Gt.allDependencies)for(let c of a.manifest[n].values()){let f=t.tryWorkspaceByDescriptor(c);if(f===null||!e.has(f))continue;Ze.getArrayWithDefault(o,f).push([a,n,c.identHash])}for(let[a,n]of e){let c=a.manifest.version;a.manifest.version=n,Xu.default.prerelease(n)===null?delete a.manifest.raw.stableVersion:a.manifest.raw.stableVersion||(a.manifest.raw.stableVersion=c);let f=a.manifest.name!==null?Y.stringifyIdent(a.manifest.name):null;r.reportInfo(0,`${Y.prettyLocator(t.configuration,a.anchoredLocator)}: Bumped to ${n}`),r.reportJson({cwd:me.fromPortablePath(a.cwd),ident:f,oldVersion:c,newVersion:n});let g=o.get(a);if(!(typeof g>"u"))for(let[p,E,B]of g){let Q=p.manifest[E].get(B);if(typeof Q>"u")throw new Error("Assertion failed: The dependency should have existed");let x=Q.range,C=!1;if(x.startsWith(Qi.protocol)&&(x=x.slice(Qi.protocol.length),C=!0,x===a.relativeCwd))continue;let N=x.match(eDt);if(!N){r.reportWarning(0,`Couldn't auto-upgrade range ${x} (in ${Y.prettyLocator(t.configuration,p.anchoredLocator)})`);continue}let U=`${N[1]}${n}`;C&&(U=`${Qi.protocol}${U}`);let H=Y.makeDescriptor(Q,U);p.manifest[E].set(B,H)}}}var rDt=new Map([["%n",{extract:t=>t.length>=1?[t[0],t.slice(1)]:null,generate:(t=0)=>`${t+1}`}]]);function GQe(t,{current:e,prerelease:r}){let o=new Xu.default.SemVer(e),a=o.prerelease.slice(),n=[];o.prerelease=[],o.format()!==t&&(a.length=0);let c=!0,f=r.split(/\./g);for(let g of f){let p=rDt.get(g);if(typeof p>"u")n.push(g),a[0]===g?a.shift():c=!1;else{let E=c?p.extract(a):null;E!==null&&typeof E[0]=="number"?(n.push(p.generate(E[0])),a=E[1]):(n.push(p.generate()),c=!1)}}return o.prerelease&&(o.prerelease=[]),`${t}-${n.join(".")}`}var R0=class extends gt{constructor(){super(...arguments);this.all=F0.Option.Boolean("--all",!1,{description:"Apply the deferred version changes on all workspaces"});this.dryRun=F0.Option.Boolean("--dry-run",!1,{description:"Print the versions without actually generating the package archive"});this.prerelease=F0.Option.String("--prerelease",{description:"Add a prerelease identifier to new versions",tolerateBoolean:!0});this.recursive=F0.Option.Boolean("-R,--recursive",{description:"Release the transitive workspaces as well"});this.json=F0.Option.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}async execute(){let r=await rt.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await xt.find(r,this.context.cwd),n=await $r.find(r);if(!a)throw new lr(o.cwd,this.context.cwd);return await o.restoreInstallState({restoreResolutions:!1}),(await St.start({configuration:r,json:this.json,stdout:this.context.stdout},async f=>{let g=this.prerelease?typeof this.prerelease!="boolean"?this.prerelease:"rc.%n":null,p=await JQ(o,{prerelease:g}),E=new Map;if(this.all)E=p;else{let B=this.recursive?a.getRecursiveWorkspaceDependencies():[a];for(let Q of B){let x=p.get(Q);typeof x<"u"&&E.set(Q,x)}}if(E.size===0){let B=p.size>0?" Did you want to add --all?":"";f.reportWarning(0,`The current workspace doesn't seem to require a version bump.${B}`);return}Dj(o,E,{report:f}),this.dryRun||(g||(this.all?await Bj(o):await Qj(o,[...E.keys()])),f.reportSeparator(),await o.install({cache:n,report:f}))})).exitCode()}};R0.paths=[["version","apply"]],R0.usage=F0.Command.Usage({category:"Release-related commands",description:"apply all the deferred version bumps at once",details:` - This command will apply the deferred version changes and remove their definitions from the repository. - - Note that if \`--prerelease\` is set, the given prerelease identifier (by default \`rc.%d\`) will be used on all new versions and the version definitions will be kept as-is. - - By default only the current workspace will be bumped, but you can configure this behavior by using one of: - - - \`--recursive\` to also apply the version bump on its dependencies - - \`--all\` to apply the version bump on all packages in the repository - - Note that this command will also update the \`workspace:\` references across all your local workspaces, thus ensuring that they keep referring to the same workspaces even after the version bump. - `,examples:[["Apply the version change to the local workspace","yarn version apply"],["Apply the version change to all the workspaces in the local workspace","yarn version apply --all"]]});$e();Ft();var ry=be(Vt()),FF=be(wi());var T0=class extends gt{constructor(){super(...arguments);this.interactive=ry.Option.Boolean("-i,--interactive",{description:"Open an interactive interface used to set version bumps"})}async execute(){return this.interactive?await this.executeInteractive():await this.executeStandard()}async executeInteractive(){KE(this.context);let{Gem:r}=await Promise.resolve().then(()=>(Qb(),lq)),{ScrollableItems:o}=await Promise.resolve().then(()=>(kb(),Sb)),{FocusRequest:a}=await Promise.resolve().then(()=>(uq(),Ywe)),{useListInput:n}=await Promise.resolve().then(()=>(Db(),Wwe)),{renderForm:c}=await Promise.resolve().then(()=>(Fb(),bb)),{Box:f,Text:g}=await Promise.resolve().then(()=>be(Nl())),{default:p,useCallback:E,useState:B}=await Promise.resolve().then(()=>be(dn())),Q=await rt.find(this.context.cwd,this.context.plugins),{project:x,workspace:C}=await xt.find(Q,this.context.cwd);if(!C)throw new lr(x.cwd,this.context.cwd);await x.restoreInstallState();let N=await SI(x);if(N===null||N.releaseRoots.size===0)return 0;if(N.root===null)throw new ry.UsageError("This command can only be run on Git repositories");let U=()=>p.createElement(f,{flexDirection:"row",paddingBottom:1},p.createElement(f,{flexDirection:"column",width:60},p.createElement(f,null,p.createElement(g,null,"Press ",p.createElement(g,{bold:!0,color:"cyanBright"},""),"/",p.createElement(g,{bold:!0,color:"cyanBright"},"")," to select workspaces.")),p.createElement(f,null,p.createElement(g,null,"Press ",p.createElement(g,{bold:!0,color:"cyanBright"},""),"/",p.createElement(g,{bold:!0,color:"cyanBright"},"")," to select release strategies."))),p.createElement(f,{flexDirection:"column"},p.createElement(f,{marginLeft:1},p.createElement(g,null,"Press ",p.createElement(g,{bold:!0,color:"cyanBright"},"")," to save.")),p.createElement(f,{marginLeft:1},p.createElement(g,null,"Press ",p.createElement(g,{bold:!0,color:"cyanBright"},"")," to abort.")))),H=({workspace:Pe,active:pe,decision:Ee,setDecision:ke})=>{let h=Pe.manifest.raw.stableVersion??Pe.manifest.version;if(h===null)throw new Error(`Assertion failed: The version should have been set (${Y.prettyLocator(Q,Pe.anchoredLocator)})`);if(FF.default.prerelease(h)!==null)throw new Error(`Assertion failed: Prerelease identifiers shouldn't be found (${h})`);let Ke=["undecided","decline","patch","minor","major"];n(Ee,Ke,{active:pe,minus:"left",plus:"right",set:ke});let Ce=Ee==="undecided"?p.createElement(g,{color:"yellow"},h):Ee==="decline"?p.createElement(g,{color:"green"},h):p.createElement(g,null,p.createElement(g,{color:"magenta"},h)," \u2192 ",p.createElement(g,{color:"green"},FF.default.valid(Ee)?Ee:FF.default.inc(h,Ee)));return p.createElement(f,{flexDirection:"column"},p.createElement(f,null,p.createElement(g,null,Y.prettyLocator(Q,Pe.anchoredLocator)," - ",Ce)),p.createElement(f,null,Ke.map(Be=>p.createElement(f,{key:Be,paddingLeft:2},p.createElement(g,null,p.createElement(r,{active:Be===Ee})," ",Be)))))},X=Pe=>{let pe=new Set(N.releaseRoots),Ee=new Map([...Pe].filter(([ke])=>pe.has(ke)));for(;;){let ke=VQ({project:N.project,releases:Ee}),h=!1;if(ke.length>0){for(let[Ke]of ke)if(!pe.has(Ke)){pe.add(Ke),h=!0;let Ce=Pe.get(Ke);typeof Ce<"u"&&Ee.set(Ke,Ce)}}if(!h)break}return{relevantWorkspaces:pe,relevantReleases:Ee}},ie=()=>{let[Pe,pe]=B(()=>new Map(N.releases)),Ee=E((ke,h)=>{let Ke=new Map(Pe);h!=="undecided"?Ke.set(ke,h):Ke.delete(ke);let{relevantReleases:Ce}=X(Ke);pe(Ce)},[Pe,pe]);return[Pe,Ee]},fe=({workspaces:Pe,releases:pe})=>{let Ee=[];Ee.push(`${Pe.size} total`);let ke=0,h=0;for(let Ke of Pe){let Ce=pe.get(Ke);typeof Ce>"u"?h+=1:Ce!=="decline"&&(ke+=1)}return Ee.push(`${ke} release${ke===1?"":"s"}`),Ee.push(`${h} remaining`),p.createElement(g,{color:"yellow"},Ee.join(", "))},Qe=await c(({useSubmit:Pe})=>{let[pe,Ee]=ie();Pe(pe);let{relevantWorkspaces:ke}=X(pe),h=new Set([...ke].filter(le=>!N.releaseRoots.has(le))),[Ke,Ce]=B(0),Be=E(le=>{switch(le){case a.BEFORE:Ce(Ke-1);break;case a.AFTER:Ce(Ke+1);break}},[Ke,Ce]);return p.createElement(f,{flexDirection:"column"},p.createElement(U,null),p.createElement(f,null,p.createElement(g,{wrap:"wrap"},"The following files have been modified in your local checkout.")),p.createElement(f,{flexDirection:"column",marginTop:1,paddingLeft:2},[...N.changedFiles].map(le=>p.createElement(f,{key:le},p.createElement(g,null,p.createElement(g,{color:"grey"},me.fromPortablePath(N.root)),me.sep,me.relative(me.fromPortablePath(N.root),me.fromPortablePath(le)))))),N.releaseRoots.size>0&&p.createElement(p.Fragment,null,p.createElement(f,{marginTop:1},p.createElement(g,{wrap:"wrap"},"Because of those files having been modified, the following workspaces may need to be released again (note that private workspaces are also shown here, because even though they won't be published, releasing them will allow us to flag their dependents for potential re-release):")),h.size>3?p.createElement(f,{marginTop:1},p.createElement(fe,{workspaces:N.releaseRoots,releases:pe})):null,p.createElement(f,{marginTop:1,flexDirection:"column"},p.createElement(o,{active:Ke%2===0,radius:1,size:2,onFocusRequest:Be},[...N.releaseRoots].map(le=>p.createElement(H,{key:le.cwd,workspace:le,decision:pe.get(le)||"undecided",setDecision:re=>Ee(le,re)}))))),h.size>0?p.createElement(p.Fragment,null,p.createElement(f,{marginTop:1},p.createElement(g,{wrap:"wrap"},"The following workspaces depend on other workspaces that have been marked for release, and thus may need to be released as well:")),p.createElement(f,null,p.createElement(g,null,"(Press ",p.createElement(g,{bold:!0,color:"cyanBright"},"")," to move the focus between the workspace groups.)")),h.size>5?p.createElement(f,{marginTop:1},p.createElement(fe,{workspaces:h,releases:pe})):null,p.createElement(f,{marginTop:1,flexDirection:"column"},p.createElement(o,{active:Ke%2===1,radius:2,size:2,onFocusRequest:Be},[...h].map(le=>p.createElement(H,{key:le.cwd,workspace:le,decision:pe.get(le)||"undecided",setDecision:re=>Ee(le,re)}))))):null)},{versionFile:N},{stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr});if(typeof Qe>"u")return 1;N.releases.clear();for(let[Pe,pe]of Qe)N.releases.set(Pe,pe);await N.saveAll()}async executeStandard(){let r=await rt.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await xt.find(r,this.context.cwd);if(!a)throw new lr(o.cwd,this.context.cwd);return await o.restoreInstallState(),(await St.start({configuration:r,stdout:this.context.stdout},async c=>{let f=await SI(o);if(f===null||f.releaseRoots.size===0)return;if(f.root===null)throw new ry.UsageError("This command can only be run on Git repositories");if(c.reportInfo(0,`Your PR was started right after ${Ne.pretty(r,f.baseHash.slice(0,7),"yellow")} ${Ne.pretty(r,f.baseTitle,"magenta")}`),f.changedFiles.size>0){c.reportInfo(0,"You have changed the following files since then:"),c.reportSeparator();for(let Q of f.changedFiles)c.reportInfo(null,`${Ne.pretty(r,me.fromPortablePath(f.root),"gray")}${me.sep}${me.relative(me.fromPortablePath(f.root),me.fromPortablePath(Q))}`)}let g=!1,p=!1,E=PF(f);if(E.size>0){g||c.reportSeparator();for(let Q of E)c.reportError(0,`${Y.prettyLocator(r,Q.anchoredLocator)} has been modified but doesn't have a release strategy attached`);g=!0}let B=VQ(f);for(let[Q,x]of B)p||c.reportSeparator(),c.reportError(0,`${Y.prettyLocator(r,Q.anchoredLocator)} doesn't have a release strategy attached, but depends on ${Y.prettyWorkspace(r,x)} which is planned for release.`),p=!0;(g||p)&&(c.reportSeparator(),c.reportInfo(0,"This command detected that at least some workspaces have received modifications without explicit instructions as to how they had to be released (if needed)."),c.reportInfo(0,"To correct these errors, run `yarn version check --interactive` then follow the instructions."))})).exitCode()}};T0.paths=[["version","check"]],T0.usage=ry.Command.Usage({category:"Release-related commands",description:"check that all the relevant packages have been bumped",details:"\n **Warning:** This command currently requires Git.\n\n This command will check that all the packages covered by the files listed in argument have been properly bumped or declined to bump.\n\n In the case of a bump, the check will also cover transitive packages - meaning that should `Foo` be bumped, a package `Bar` depending on `Foo` will require a decision as to whether `Bar` will need to be bumped. This check doesn't cross packages that have declined to bump.\n\n In case no arguments are passed to the function, the list of modified files will be generated by comparing the HEAD against `master`.\n ",examples:[["Check whether the modified packages need a bump","yarn version check"]]});$e();var Zu=be(Vt()),RF=be(wi());var N0=class extends gt{constructor(){super(...arguments);this.deferred=Zu.Option.Boolean("-d,--deferred",{description:"Prepare the version to be bumped during the next release cycle"});this.immediate=Zu.Option.Boolean("-i,--immediate",{description:"Bump the version immediately"});this.strategy=Zu.Option.String()}async execute(){let r=await rt.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await xt.find(r,this.context.cwd);if(!a)throw new lr(o.cwd,this.context.cwd);let n=r.get("preferDeferredVersions");this.deferred&&(n=!0),this.immediate&&(n=!1);let c=RF.default.valid(this.strategy),f=this.strategy==="decline",g;if(c)if(a.manifest.version!==null){let E=vj(a.manifest.version,this.strategy);E!==null?g=E:g=this.strategy}else g=this.strategy;else{let E=a.manifest.version;if(!f){if(E===null)throw new Zu.UsageError("Can't bump the version if there wasn't a version to begin with - use 0.0.0 as initial version then run the command again.");if(typeof E!="string"||!RF.default.valid(E))throw new Zu.UsageError(`Can't bump the version (${E}) if it's not valid semver`)}g=vI(this.strategy)}if(!n){let B=(await JQ(o)).get(a);if(typeof B<"u"&&g!=="decline"){let Q=bF(a.manifest.version,g);if(RF.default.lt(Q,B))throw new Zu.UsageError(`Can't bump the version to one that would be lower than the current deferred one (${B})`)}}let p=await SI(o,{allowEmpty:!0});return p.releases.set(a,g),await p.saveAll(),n?0:await this.cli.run(["version","apply"])}};N0.paths=[["version"]],N0.usage=Zu.Command.Usage({category:"Release-related commands",description:"apply a new version to the current package",details:"\n This command will bump the version number for the given package, following the specified strategy:\n\n - If `major`, the first number from the semver range will be increased (`X.0.0`).\n - If `minor`, the second number from the semver range will be increased (`0.X.0`).\n - If `patch`, the third number from the semver range will be increased (`0.0.X`).\n - If prefixed by `pre` (`premajor`, ...), a `-0` suffix will be set (`0.0.0-0`).\n - If `prerelease`, the suffix will be increased (`0.0.0-X`); the third number from the semver range will also be increased if there was no suffix in the previous version.\n - If `decline`, the nonce will be increased for `yarn version check` to pass without version bump.\n - If a valid semver range, it will be used as new version.\n - If unspecified, Yarn will ask you for guidance.\n\n For more information about the `--deferred` flag, consult our documentation (https://yarnpkg.com/features/release-workflow#deferred-versioning).\n ",examples:[["Immediately bump the version to the next major","yarn version major"],["Prepare the version to be bumped to the next major","yarn version major --deferred"]]});var nDt={configuration:{deferredVersionFolder:{description:"Folder where are stored the versioning files",type:"ABSOLUTE_PATH",default:"./.yarn/versions"},preferDeferredVersions:{description:"If true, running `yarn version` will assume the `--deferred` flag unless `--immediate` is set",type:"BOOLEAN",default:!1}},commands:[R0,T0,N0]},iDt=nDt;var kj={};tr(kj,{WorkspacesFocusCommand:()=>M0,WorkspacesForeachCommand:()=>L0,default:()=>aDt});$e();$e();var ny=be(Vt()),M0=class extends gt{constructor(){super(...arguments);this.json=ny.Option.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.production=ny.Option.Boolean("--production",!1,{description:"Only install regular dependencies by omitting dev dependencies"});this.all=ny.Option.Boolean("-A,--all",!1,{description:"Install the entire project"});this.workspaces=ny.Option.Rest()}async execute(){let r=await rt.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await xt.find(r,this.context.cwd),n=await $r.find(r);await o.restoreInstallState({restoreResolutions:!1});let c;if(this.all)c=new Set(o.workspaces);else if(this.workspaces.length===0){if(!a)throw new lr(o.cwd,this.context.cwd);c=new Set([a])}else c=new Set(this.workspaces.map(g=>o.getWorkspaceByIdent(Y.parseIdent(g))));for(let g of c)for(let p of this.production?["dependencies"]:Gt.hardDependencies)for(let E of g.manifest.getForScope(p).values()){let B=o.tryWorkspaceByDescriptor(E);B!==null&&c.add(B)}for(let g of o.workspaces)c.has(g)?this.production&&g.manifest.devDependencies.clear():(g.manifest.installConfig=g.manifest.installConfig||{},g.manifest.installConfig.selfReferences=!1,g.manifest.dependencies.clear(),g.manifest.devDependencies.clear(),g.manifest.peerDependencies.clear(),g.manifest.scripts.clear());return(await St.start({configuration:r,json:this.json,stdout:this.context.stdout,includeLogs:!0},async g=>{await o.install({cache:n,report:g,persistProject:!1})})).exitCode()}};M0.paths=[["workspaces","focus"]],M0.usage=ny.Command.Usage({category:"Workspace-related commands",description:"install a single workspace and its dependencies",details:"\n This command will run an install as if the specified workspaces (and all other workspaces they depend on) were the only ones in the project. If no workspaces are explicitly listed, the active one will be assumed.\n\n Note that this command is only very moderately useful when using zero-installs, since the cache will contain all the packages anyway - meaning that the only difference between a full install and a focused install would just be a few extra lines in the `.pnp.cjs` file, at the cost of introducing an extra complexity.\n\n If the `-A,--all` flag is set, the entire project will be installed. Combine with `--production` to replicate the old `yarn install --production`.\n "});$e();$e();$e();var Is=be(Vt()),TF=be(pa()),YQe=Ie("os"),WQe=be(kd()),Kl=be(wA()),L0=class extends gt{constructor(){super(...arguments);this.recursive=Is.Option.Boolean("-R,--recursive",!1,{description:"Find packages via dependencies/devDependencies instead of using the workspaces field"});this.from=Is.Option.Array("--from",[],{description:"An array of glob pattern idents from which to base any recursion"});this.all=Is.Option.Boolean("-A,--all",!1,{description:"Run the command on all workspaces of a project"});this.verbose=Is.Option.Boolean("-v,--verbose",{description:"Prefix each output line with the name of the originating workspace"});this.parallel=Is.Option.Boolean("-p,--parallel",!1,{description:"Run the commands in parallel"});this.interlaced=Is.Option.Boolean("-i,--interlaced",!1,{description:"Print the output of commands in real-time instead of buffering it"});this.jobs=Is.Option.String("-j,--jobs",{description:"The maximum number of parallel tasks that the execution will be limited to; or `unlimited`",validator:Kl.isOneOf([Kl.isEnum(["unlimited"]),Kl.applyCascade(Kl.isNumber(),[Kl.isInteger(),Kl.isAtLeast(1)])])});this.topological=Is.Option.Boolean("-t,--topological",!1,{description:"Run the command after all workspaces it depends on (regular) have finished"});this.topologicalDev=Is.Option.Boolean("--topological-dev",!1,{description:"Run the command after all workspaces it depends on (regular + dev) have finished"});this.include=Is.Option.Array("--include",[],{description:"An array of glob pattern idents; only matching workspaces will be traversed"});this.exclude=Is.Option.Array("--exclude",[],{description:"An array of glob pattern idents; matching workspaces won't be traversed"});this.publicOnly=Is.Option.Boolean("--no-private",{description:"Avoid running the command on private workspaces"});this.since=Is.Option.String("--since",{description:"Only include workspaces that have been changed since the specified ref.",tolerateBoolean:!0});this.commandName=Is.Option.String();this.args=Is.Option.Proxy()}async execute(){let r=await rt.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await xt.find(r,this.context.cwd);if(!this.all&&!a)throw new lr(o.cwd,this.context.cwd);await o.restoreInstallState();let n=this.cli.process([this.commandName,...this.args]),c=n.path.length===1&&n.path[0]==="run"&&typeof n.scriptName<"u"?n.scriptName:null;if(n.path.length===0)throw new Is.UsageError("Invalid subcommand name for iteration - use the 'run' keyword if you wish to execute a script");let f=this.all?o.topLevelWorkspace:a,g=this.since?Array.from(await Ia.fetchChangedWorkspaces({ref:this.since,project:o})):[f,...this.from.length>0?f.getRecursiveWorkspaceChildren():[]],p=Ee=>TF.default.isMatch(Y.stringifyIdent(Ee.locator),this.from),E=this.from.length>0?g.filter(p):g,B=new Set([...E,...E.map(Ee=>[...this.recursive?this.since?Ee.getRecursiveWorkspaceDependents():Ee.getRecursiveWorkspaceDependencies():Ee.getRecursiveWorkspaceChildren()]).flat()]),Q=[],x=!1;if(c!=null&&c.includes(":")){for(let Ee of o.workspaces)if(Ee.manifest.scripts.has(c)&&(x=!x,x===!1))break}for(let Ee of B)c&&!Ee.manifest.scripts.has(c)&&!x&&!(await En.getWorkspaceAccessibleBinaries(Ee)).has(c)||c===process.env.npm_lifecycle_event&&Ee.cwd===a.cwd||this.include.length>0&&!TF.default.isMatch(Y.stringifyIdent(Ee.locator),this.include)||this.exclude.length>0&&TF.default.isMatch(Y.stringifyIdent(Ee.locator),this.exclude)||this.publicOnly&&Ee.manifest.private===!0||Q.push(Ee);let C=this.verbose??this.context.stdout.isTTY,N=this.parallel?this.jobs==="unlimited"?1/0:Number(this.jobs)||Math.max(1,(0,YQe.cpus)().length/2):1,U=N===1?!1:this.parallel,H=U?this.interlaced:!0,X=(0,WQe.default)(N),ie=new Map,fe=new Set,ye=0,Qe=null,Pe=!1,pe=await St.start({configuration:r,stdout:this.context.stdout},async Ee=>{let ke=async(h,{commandIndex:Ke})=>{if(Pe)return-1;!U&&C&&Ke>1&&Ee.reportSeparator();let Ce=sDt(h,{configuration:r,verbose:C,commandIndex:Ke}),[Be,le]=jQe(Ee,{prefix:Ce,interlaced:H}),[re,Se]=jQe(Ee,{prefix:Ce,interlaced:H});try{C&&Ee.reportInfo(null,`${Ce} Process started`);let Ue=Date.now(),dt=await this.cli.run([this.commandName,...this.args],{cwd:h.cwd,stdout:Be,stderr:re})||0;Be.end(),re.end(),await le,await Se;let q=Date.now();if(C){let Qt=r.get("enableTimers")?`, completed in ${Ne.pretty(r,q-Ue,Ne.Type.DURATION)}`:"";Ee.reportInfo(null,`${Ce} Process exited (exit code ${dt})${Qt}`)}return dt===130&&(Pe=!0,Qe=dt),dt}catch(Ue){throw Be.end(),re.end(),await le,await Se,Ue}};for(let h of Q)ie.set(h.anchoredLocator.locatorHash,h);for(;ie.size>0&&!Ee.hasErrors();){let h=[];for(let[Be,le]of ie){if(fe.has(le.anchoredDescriptor.descriptorHash))continue;let re=!0;if(this.topological||this.topologicalDev){let Se=this.topologicalDev?new Map([...le.manifest.dependencies,...le.manifest.devDependencies]):le.manifest.dependencies;for(let Ue of Se.values()){let dt=o.tryWorkspaceByDescriptor(Ue);if(re=dt===null||!ie.has(dt.anchoredLocator.locatorHash),!re)break}}if(!!re&&(fe.add(le.anchoredDescriptor.descriptorHash),h.push(X(async()=>{let Se=await ke(le,{commandIndex:++ye});return ie.delete(Be),fe.delete(le.anchoredDescriptor.descriptorHash),Se})),!U))break}if(h.length===0){let Be=Array.from(ie.values()).map(le=>Y.prettyLocator(r,le.anchoredLocator)).join(", ");Ee.reportError(3,`Dependency cycle detected (${Be})`);return}let Ce=(await Promise.all(h)).find(Be=>Be!==0);Qe===null&&(Qe=typeof Ce<"u"?1:Qe),(this.topological||this.topologicalDev)&&typeof Ce<"u"&&Ee.reportError(0,"The command failed for workspaces that are depended upon by other workspaces; can't satisfy the dependency graph")}});return Qe!==null?Qe:pe.exitCode()}};L0.paths=[["workspaces","foreach"]],L0.usage=Is.Command.Usage({category:"Workspace-related commands",description:"run a command on all workspaces",details:"\n This command will run a given sub-command on current and all its descendant workspaces. Various flags can alter the exact behavior of the command:\n\n - If `-p,--parallel` is set, the commands will be ran in parallel; they'll by default be limited to a number of parallel tasks roughly equal to half your core number, but that can be overridden via `-j,--jobs`, or disabled by setting `-j unlimited`.\n\n - If `-p,--parallel` and `-i,--interlaced` are both set, Yarn will print the lines from the output as it receives them. If `-i,--interlaced` wasn't set, it would instead buffer the output from each process and print the resulting buffers only after their source processes have exited.\n\n - If `-t,--topological` is set, Yarn will only run the command after all workspaces that it depends on through the `dependencies` field have successfully finished executing. If `--topological-dev` is set, both the `dependencies` and `devDependencies` fields will be considered when figuring out the wait points.\n\n - If `-A,--all` is set, Yarn will run the command on all the workspaces of a project. By default yarn runs the command only on current and all its descendant workspaces.\n\n - If `-R,--recursive` is set, Yarn will find workspaces to run the command on by recursively evaluating `dependencies` and `devDependencies` fields, instead of looking at the `workspaces` fields.\n\n - If `--from` is set, Yarn will use the packages matching the 'from' glob as the starting point for any recursive search.\n\n - If `--since` is set, Yarn will only run the command on workspaces that have been modified since the specified ref. By default Yarn will use the refs specified by the `changesetBaseRefs` configuration option.\n\n - The command may apply to only some workspaces through the use of `--include` which acts as a whitelist. The `--exclude` flag will do the opposite and will be a list of packages that mustn't execute the script. Both flags accept glob patterns (if valid Idents and supported by [micromatch](https://github.com/micromatch/micromatch)). Make sure to escape the patterns, to prevent your own shell from trying to expand them.\n\n Adding the `-v,--verbose` flag (automatically enabled in interactive terminal environments) will cause Yarn to print more information; in particular the name of the workspace that generated the output will be printed at the front of each line.\n\n If the command is `run` and the script being run does not exist the child workspace will be skipped without error.\n ",examples:[["Publish current and all descendant packages","yarn workspaces foreach npm publish --tolerate-republish"],["Run build script on current and all descendant packages","yarn workspaces foreach run build"],["Run build script on current and all descendant packages in parallel, building package dependencies first","yarn workspaces foreach -pt run build"],["Run build script on several packages and all their dependencies, building dependencies first","yarn workspaces foreach -ptR --from '{workspace-a,workspace-b}' run build"]]});function jQe(t,{prefix:e,interlaced:r}){let o=t.createStreamReporter(e),a=new Ze.DefaultStream;a.pipe(o,{end:!1}),a.on("finish",()=>{o.end()});let n=new Promise(f=>{o.on("finish",()=>{f(a.active)})});if(r)return[a,n];let c=new Ze.BufferStream;return c.pipe(a,{end:!1}),c.on("finish",()=>{a.end()}),[c,n]}function sDt(t,{configuration:e,commandIndex:r,verbose:o}){if(!o)return null;let n=`[${Y.stringifyIdent(t.locator)}]:`,c=["#2E86AB","#A23B72","#F18F01","#C73E1D","#CCE2A3"],f=c[r%c.length];return Ne.pretty(e,n,f)}var oDt={commands:[M0,L0]},aDt=oDt;var AP=()=>({modules:new Map([["@yarnpkg/cli",p1],["@yarnpkg/core",g1],["@yarnpkg/fslib",nw],["@yarnpkg/libzip",sw],["@yarnpkg/parsers",gw],["@yarnpkg/shell",jB],["clipanion",ADt],["semver",lDt],["typanion",cDt],["@yarnpkg/plugin-essentials",N_],["@yarnpkg/plugin-compat",K_],["@yarnpkg/plugin-constraints",i6],["@yarnpkg/plugin-dlx",s6],["@yarnpkg/plugin-exec",A6],["@yarnpkg/plugin-file",f6],["@yarnpkg/plugin-git",T_],["@yarnpkg/plugin-github",h6],["@yarnpkg/plugin-http",d6],["@yarnpkg/plugin-init",y6],["@yarnpkg/plugin-interactive-tools",Eq],["@yarnpkg/plugin-link",Iq],["@yarnpkg/plugin-nm",tG],["@yarnpkg/plugin-npm",XG],["@yarnpkg/plugin-npm-cli",oj],["@yarnpkg/plugin-pack",YG],["@yarnpkg/plugin-patch",fj],["@yarnpkg/plugin-pnp",Hq],["@yarnpkg/plugin-pnpm",hj],["@yarnpkg/plugin-stage",Ij],["@yarnpkg/plugin-typescript",wj],["@yarnpkg/plugin-version",Sj],["@yarnpkg/plugin-workspace-tools",kj]]),plugins:new Set(["@yarnpkg/plugin-essentials","@yarnpkg/plugin-compat","@yarnpkg/plugin-constraints","@yarnpkg/plugin-dlx","@yarnpkg/plugin-exec","@yarnpkg/plugin-file","@yarnpkg/plugin-git","@yarnpkg/plugin-github","@yarnpkg/plugin-http","@yarnpkg/plugin-init","@yarnpkg/plugin-interactive-tools","@yarnpkg/plugin-link","@yarnpkg/plugin-nm","@yarnpkg/plugin-npm","@yarnpkg/plugin-npm-cli","@yarnpkg/plugin-pack","@yarnpkg/plugin-patch","@yarnpkg/plugin-pnp","@yarnpkg/plugin-pnpm","@yarnpkg/plugin-stage","@yarnpkg/plugin-typescript","@yarnpkg/plugin-version","@yarnpkg/plugin-workspace-tools"])});oP({binaryVersion:ei||"",pluginConfiguration:AP()});})(); -/* -object-assign -(c) Sindre Sorhus -@license MIT -*/ -/*! - * buildToken - * Builds OAuth token prefix (helper function) - * - * @name buildToken - * @function - * @param {GitUrl} obj The parsed Git url object. - * @return {String} token prefix - */ -/*! - * fill-range - * - * Copyright (c) 2014-present, Jon Schlinkert. - * Licensed under the MIT License. - */ -/*! - * is-extglob - * - * Copyright (c) 2014-2016, Jon Schlinkert. - * Licensed under the MIT License. - */ -/*! - * is-glob - * - * Copyright (c) 2014-2017, Jon Schlinkert. - * Released under the MIT License. - */ -/*! - * is-number - * - * Copyright (c) 2014-present, Jon Schlinkert. - * Released under the MIT License. - */ -/*! - * is-windows - * - * Copyright © 2015-2018, Jon Schlinkert. - * Released under the MIT License. - */ -/*! - * to-regex-range - * - * Copyright (c) 2015-present, Jon Schlinkert. - * Released under the MIT License. - */ -/** - @license - Copyright Node.js contributors. All rights reserved. - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to - deal in the Software without restriction, including without limitation the - rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - sell copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - IN THE SOFTWARE. -*/ -/** @license React v0.18.0 - * scheduler.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ -/** @license React v0.24.0 - * react-reconciler.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ -/** @license React v16.13.1 - * react.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ diff --git a/plugin/.yarnrc.yml b/plugin/.yarnrc.yml index 8ac48a6..59125bd 100644 --- a/plugin/.yarnrc.yml +++ b/plugin/.yarnrc.yml @@ -1 +1,2 @@ yarnPath: .yarn/releases/yarn-4.0.0-rc.25.cjs +nodeLinker: node-modules diff --git a/plugin/dist/plugin-yarnpnp2nix.js b/plugin/dist/plugin-yarnpnp2nix.js index e361798..8f22776 100644 --- a/plugin/dist/plugin-yarnpnp2nix.js +++ b/plugin/dist/plugin-yarnpnp2nix.js @@ -3,120 +3,139 @@ module.exports = { name: "@yarnpkg/plugin-yarnpnp2nix", factory: function (require) { -var plugin=(()=>{var Ss=Object.create;var He=Object.defineProperty;var ks=Object.getOwnPropertyDescriptor;var ws=Object.getOwnPropertyNames;var bs=Object.getPrototypeOf,Es=Object.prototype.hasOwnProperty;var F=(r=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(r,{get:(e,t)=>(typeof require<"u"?require:e)[t]}):r)(function(r){if(typeof require<"u")return require.apply(this,arguments);throw new Error('Dynamic require of "'+r+'" is not supported')});var M=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports),Ts=(r,e)=>{for(var t in e)He(r,t,{get:e[t],enumerable:!0})},ur=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of ws(e))!Es.call(r,s)&&s!==t&&He(r,s,{get:()=>e[s],enumerable:!(n=ks(e,s))||n.enumerable});return r};var Z=(r,e,t)=>(t=r!=null?Ss(bs(r)):{},ur(e||!r||!r.__esModule?He(t,"default",{value:r,enumerable:!0}):t,r)),Fs=r=>ur(He({},"__esModule",{value:!0}),r);var mr=M((to,pr)=>{pr.exports=dr;dr.sync=Ls;var fr=F("fs");function xs(r,e){var t=e.pathExt!==void 0?e.pathExt:process.env.PATHEXT;if(!t||(t=t.split(";"),t.indexOf("")!==-1))return!0;for(var n=0;n{Sr.exports=gr;gr.sync=Is;var yr=F("fs");function gr(r,e,t){yr.stat(r,function(n,s){t(n,n?!1:Pr(s,e))})}function Is(r,e){return Pr(yr.statSync(r),e)}function Pr(r,e){return r.isFile()&&As(r,e)}function As(r,e){var t=r.mode,n=r.uid,s=r.gid,i=e.uid!==void 0?e.uid:process.getuid&&process.getuid(),a=e.gid!==void 0?e.gid:process.getgid&&process.getgid(),o=parseInt("100",8),c=parseInt("010",8),f=parseInt("001",8),g=o|c,l=t&f||t&c&&s===a||t&o&&n===i||t&g&&i===0;return l}});var br=M((so,wr)=>{var no=F("fs"),je;process.platform==="win32"||global.TESTING_WINDOWS?je=mr():je=kr();wr.exports=gt;gt.sync=vs;function gt(r,e,t){if(typeof e=="function"&&(t=e,e={}),!t){if(typeof Promise!="function")throw new TypeError("callback not provided");return new Promise(function(n,s){gt(r,e||{},function(i,a){i?s(i):n(a)})})}je(r,e||{},function(n,s){n&&(n.code==="EACCES"||e&&e.ignoreErrors)&&(n=null,s=!1),t(n,s)})}function vs(r,e){try{return je.sync(r,e||{})}catch(t){if(e&&e.ignoreErrors||t.code==="EACCES")return!1;throw t}}});var Ar=M((io,Ir)=>{var ke=process.platform==="win32"||process.env.OSTYPE==="cygwin"||process.env.OSTYPE==="msys",Er=F("path"),Ds=ke?";":":",Tr=br(),Fr=r=>Object.assign(new Error(`not found: ${r}`),{code:"ENOENT"}),xr=(r,e)=>{let t=e.colon||Ds,n=r.match(/\//)||ke&&r.match(/\\/)?[""]:[...ke?[process.cwd()]:[],...(e.path||process.env.PATH||"").split(t)],s=ke?e.pathExt||process.env.PATHEXT||".EXE;.CMD;.BAT;.COM":"",i=ke?s.split(t):[""];return ke&&r.indexOf(".")!==-1&&i[0]!==""&&i.unshift(""),{pathEnv:n,pathExt:i,pathExtExe:s}},Lr=(r,e,t)=>{typeof e=="function"&&(t=e,e={}),e||(e={});let{pathEnv:n,pathExt:s,pathExtExe:i}=xr(r,e),a=[],o=f=>new Promise((g,l)=>{if(f===n.length)return e.all&&a.length?g(a):l(Fr(r));let P=n[f],b=/^".*"$/.test(P)?P.slice(1,-1):P,S=Er.join(b,r),h=!b&&/^\.[\\\/]/.test(r)?r.slice(0,2)+S:S;g(c(h,f,0))}),c=(f,g,l)=>new Promise((P,b)=>{if(l===s.length)return P(o(g+1));let S=s[l];Tr(f+S,{pathExt:i},(h,A)=>{if(!h&&A)if(e.all)a.push(f+S);else return P(f+S);return P(c(f,g,l+1))})});return t?o(0).then(f=>t(null,f),t):o(0)},Rs=(r,e)=>{e=e||{};let{pathEnv:t,pathExt:n,pathExtExe:s}=xr(r,e),i=[];for(let a=0;a{"use strict";var vr=(r={})=>{let e=r.env||process.env;return(r.platform||process.platform)!=="win32"?"PATH":Object.keys(e).reverse().find(n=>n.toUpperCase()==="PATH")||"Path"};Pt.exports=vr;Pt.exports.default=vr});var Mr=M((oo,Br)=>{"use strict";var Rr=F("path"),Cs=Ar(),Bs=Dr();function Cr(r,e){let t=r.options.env||process.env,n=process.cwd(),s=r.options.cwd!=null,i=s&&process.chdir!==void 0&&!process.chdir.disabled;if(i)try{process.chdir(r.options.cwd)}catch{}let a;try{a=Cs.sync(r.command,{path:t[Bs({env:t})],pathExt:e?Rr.delimiter:void 0})}catch{}finally{i&&process.chdir(n)}return a&&(a=Rr.resolve(s?r.options.cwd:"",a)),a}function Ms(r){return Cr(r)||Cr(r,!0)}Br.exports=Ms});var Nr=M((co,kt)=>{"use strict";var St=/([()\][%!^"`<>&|;, *?])/g;function Ns(r){return r=r.replace(St,"^$1"),r}function Os(r,e){return r=`${r}`,r=r.replace(/(\\*)"/g,'$1$1\\"'),r=r.replace(/(\\*)$/,"$1$1"),r=`"${r}"`,r=r.replace(St,"^$1"),e&&(r=r.replace(St,"^$1")),r}kt.exports.command=Ns;kt.exports.argument=Os});var Wr=M((lo,Or)=>{"use strict";Or.exports=/^#!(.*)/});var Gr=M((uo,qr)=>{"use strict";var Ws=Wr();qr.exports=(r="")=>{let e=r.match(Ws);if(!e)return null;let[t,n]=e[0].replace(/#! ?/,"").split(" "),s=t.split("/").pop();return s==="env"?n:n?`${s} ${n}`:s}});var Ur=M((fo,Jr)=>{"use strict";var wt=F("fs"),qs=Gr();function Gs(r){let t=Buffer.alloc(150),n;try{n=wt.openSync(r,"r"),wt.readSync(n,t,0,150,0),wt.closeSync(n)}catch{}return qs(t.toString())}Jr.exports=Gs});var Qr=M((ho,Yr)=>{"use strict";var Js=F("path"),Hr=Mr(),jr=Nr(),Us=Ur(),Hs=process.platform==="win32",js=/\.(?:com|exe)$/i,Ys=/node_modules[\\/].bin[\\/][^\\/]+\.cmd$/i;function Qs(r){r.file=Hr(r);let e=r.file&&Us(r.file);return e?(r.args.unshift(r.file),r.command=e,Hr(r)):r.file}function Ks(r){if(!Hs)return r;let e=Qs(r),t=!js.test(e);if(r.options.forceShell||t){let n=Ys.test(e);r.command=Js.normalize(r.command),r.command=jr.command(r.command),r.args=r.args.map(i=>jr.argument(i,n));let s=[r.command].concat(r.args).join(" ");r.args=["/d","/s","/c",`"${s}"`],r.command=process.env.comspec||"cmd.exe",r.options.windowsVerbatimArguments=!0}return r}function Vs(r,e,t){e&&!Array.isArray(e)&&(t=e,e=null),e=e?e.slice(0):[],t=Object.assign({},t);let n={command:r,args:e,options:t,file:void 0,original:{command:r,args:e}};return t.shell?n:Ks(n)}Yr.exports=Vs});var Xr=M((po,Vr)=>{"use strict";var bt=process.platform==="win32";function Et(r,e){return Object.assign(new Error(`${e} ${r.command} ENOENT`),{code:"ENOENT",errno:"ENOENT",syscall:`${e} ${r.command}`,path:r.command,spawnargs:r.args})}function Xs(r,e){if(!bt)return;let t=r.emit;r.emit=function(n,s){if(n==="exit"){let i=Kr(s,e,"spawn");if(i)return t.call(r,"error",i)}return t.apply(r,arguments)}}function Kr(r,e){return bt&&r===1&&!e.file?Et(e.original,"spawn"):null}function zs(r,e){return bt&&r===1&&!e.file?Et(e.original,"spawnSync"):null}Vr.exports={hookChildProcess:Xs,verifyENOENT:Kr,verifyENOENTSync:zs,notFoundError:Et}});var _r=M((mo,we)=>{"use strict";var zr=F("child_process"),Tt=Qr(),Ft=Xr();function Zr(r,e,t){let n=Tt(r,e,t),s=zr.spawn(n.command,n.args,n.options);return Ft.hookChildProcess(s,n),s}function Zs(r,e,t){let n=Tt(r,e,t),s=zr.spawnSync(n.command,n.args,n.options);return s.error=s.error||Ft.verifyENOENTSync(s.status,n),s}we.exports=Zr;we.exports.spawn=Zr;we.exports.sync=Zs;we.exports._parse=Tt;we.exports._enoent=Ft});var fn=M((Mo,Ve)=>{Ve.exports=["SIGABRT","SIGALRM","SIGHUP","SIGINT","SIGTERM"];process.platform!=="win32"&&Ve.exports.push("SIGVTALRM","SIGXCPU","SIGXFSZ","SIGUSR2","SIGTRAP","SIGSYS","SIGQUIT","SIGIOT");process.platform==="linux"&&Ve.exports.push("SIGIO","SIGPOLL","SIGPWR","SIGSTKFLT","SIGUNUSED")});var yn=M((No,Fe)=>{var C=global.process,ue=function(r){return r&&typeof r=="object"&&typeof r.removeListener=="function"&&typeof r.emit=="function"&&typeof r.reallyExit=="function"&&typeof r.listeners=="function"&&typeof r.kill=="function"&&typeof r.pid=="number"&&typeof r.on=="function"};ue(C)?(hn=F("assert"),Ee=fn(),dn=/^win/i.test(C.platform),Re=F("events"),typeof Re!="function"&&(Re=Re.EventEmitter),C.__signal_exit_emitter__?W=C.__signal_exit_emitter__:(W=C.__signal_exit_emitter__=new Re,W.count=0,W.emitted={}),W.infinite||(W.setMaxListeners(1/0),W.infinite=!0),Fe.exports=function(r,e){if(!ue(global.process))return function(){};hn.equal(typeof r,"function","a callback must be provided for exit handler"),Te===!1&&vt();var t="exit";e&&e.alwaysLast&&(t="afterexit");var n=function(){W.removeListener(t,r),W.listeners("exit").length===0&&W.listeners("afterexit").length===0&&Xe()};return W.on(t,r),n},Xe=function(){!Te||!ue(global.process)||(Te=!1,Ee.forEach(function(e){try{C.removeListener(e,ze[e])}catch{}}),C.emit=Ze,C.reallyExit=Dt,W.count-=1)},Fe.exports.unload=Xe,fe=function(e,t,n){W.emitted[e]||(W.emitted[e]=!0,W.emit(e,t,n))},ze={},Ee.forEach(function(r){ze[r]=function(){if(!!ue(global.process)){var t=C.listeners(r);t.length===W.count&&(Xe(),fe("exit",null,r),fe("afterexit",null,r),dn&&r==="SIGHUP"&&(r="SIGINT"),C.kill(C.pid,r))}}}),Fe.exports.signals=function(){return Ee},Te=!1,vt=function(){Te||!ue(global.process)||(Te=!0,W.count+=1,Ee=Ee.filter(function(e){try{return C.on(e,ze[e]),!0}catch{return!1}}),C.emit=mn,C.reallyExit=pn)},Fe.exports.load=vt,Dt=C.reallyExit,pn=function(e){!ue(global.process)||(C.exitCode=e||0,fe("exit",C.exitCode,null),fe("afterexit",C.exitCode,null),Dt.call(C,C.exitCode))},Ze=C.emit,mn=function(e,t){if(e==="exit"&&ue(global.process)){t!==void 0&&(C.exitCode=t);var n=Ze.apply(this,arguments);return fe("exit",C.exitCode,null),fe("afterexit",C.exitCode,null),n}else return Ze.apply(this,arguments)}):Fe.exports=function(){return function(){}};var hn,Ee,dn,Re,W,Xe,fe,ze,Te,vt,Dt,pn,Ze,mn});var Fn=M((qo,Tn)=>{"use strict";var{PassThrough:wi}=F("stream");Tn.exports=r=>{r={...r};let{array:e}=r,{encoding:t}=r,n=t==="buffer",s=!1;e?s=!(t||n):t=t||"utf8",n&&(t=null);let i=new wi({objectMode:s});t&&i.setEncoding(t);let a=0,o=[];return i.on("data",c=>{o.push(c),s?a=o.length:a+=c.length}),i.getBufferedValue=()=>e?o:n?Buffer.concat(o,a):o.join(""),i.getBufferedLength=()=>a,i}});var xn=M((Go,Ce)=>{"use strict";var{constants:bi}=F("buffer"),Ei=F("stream"),{promisify:Ti}=F("util"),Fi=Fn(),xi=Ti(Ei.pipeline),_e=class extends Error{constructor(){super("maxBuffer exceeded"),this.name="MaxBufferError"}};async function Ct(r,e){if(!r)throw new Error("Expected a stream");e={maxBuffer:1/0,...e};let{maxBuffer:t}=e,n=Fi(e);return await new Promise((s,i)=>{let a=o=>{o&&n.getBufferedLength()<=bi.MAX_LENGTH&&(o.bufferedData=n.getBufferedValue()),i(o)};(async()=>{try{await xi(r,n),s()}catch(o){a(o)}})(),n.on("data",()=>{n.getBufferedLength()>t&&a(new _e)})}),n.getBufferedValue()}Ce.exports=Ct;Ce.exports.buffer=(r,e)=>Ct(r,{...e,encoding:"buffer"});Ce.exports.array=(r,e)=>Ct(r,{...e,array:!0});Ce.exports.MaxBufferError=_e});var In=M((Jo,Ln)=>{"use strict";var{PassThrough:Li}=F("stream");Ln.exports=function(){var r=[],e=new Li({objectMode:!0});return e.setMaxListeners(0),e.add=t,e.isEmpty=n,e.on("unpipe",s),Array.prototype.slice.call(arguments).forEach(t),e;function t(i){return Array.isArray(i)?(i.forEach(t),this):(r.push(i),i.once("end",s.bind(null,i)),i.once("error",e.emit.bind(e,"error")),i.pipe(e,{end:!1}),this)}function n(){return r.length==0}function s(i){r=r.filter(function(a){return a!==i}),!r.length&&e.readable&&e.end()}}});var Jn=M((sc,Mi)=>{Mi.exports=`# This file can't import anything as we include the contents of this file -# directly in nix eval --apply arguments (see how this file is included in runner/src/common.ts) - -with builtins; - -let - nameValuePair = name: value: { inherit name value; }; - - filterAttrs = pred: set: - listToAttrs (concatMap (name: let v = set.\${name}; in if pred name v then [(nameValuePair name v)] else []) (attrNames set)); - - ## - - getPackages = manifest: - mapAttrs (name: pkg: - filterAttrs (key: b: (builtins.elem key [ - "name" - "outputHash" - "outputHashByPlatform" - ])) pkg - ) manifest; -in -`});var us=M(_=>{"use strict";Object.defineProperty(_,"__esModule",{value:!0});var Ni=F("zlib"),Vn=F("path"),Ne=F("module"),Y=F("url"),Un=F("util"),Oi=F("assert"),Wi=F("fs"),qi=F("crypto"),Gi=F("os"),at=r=>r&&typeof r=="object"&&"default"in r?r:{default:r},Xn=at(Ni),rt=at(Vn),Ji=at(Oi),Ui=at(Wi),zn=(r=>(r.HARD="HARD",r.SOFT="SOFT",r))(zn||{}),Hi=456789e3,Yt={root:"/",dot:"."},nt={home:"~",nodeModules:"node_modules",manifest:"package.json",lockfile:"yarn.lock",virtual:"__virtual__",pnpJs:".pnp.js",pnpCjs:".pnp.cjs",pnpData:".pnp.data.json",pnpEsmLoader:".pnp.loader.mjs",rc:".yarnrc.yml"},m=Object.create(rt.default),x=Object.create(rt.default.posix);m.cwd=()=>process.cwd();x.cwd=()=>$t(process.cwd());x.resolve=(...r)=>r.length>0&&x.isAbsolute(r[0])?rt.default.posix.resolve(...r):rt.default.posix.resolve(x.cwd(),...r);var Zn=function(r,e,t){return e=r.normalize(e),t=r.normalize(t),e===t?".":(e.endsWith(r.sep)||(e=e+r.sep),t.startsWith(e)?t.slice(e.length):null)};m.fromPortablePath=_n;m.toPortablePath=$t;m.contains=(r,e)=>Zn(m,r,e);x.contains=(r,e)=>Zn(x,r,e);var ji=/^([a-zA-Z]:.*)$/,Yi=/^\/\/(\.\/)?(.*)$/,Qi=/^\/([a-zA-Z]:.*)$/,Ki=/^\/unc\/(\.dot\/)?(.*)$/;function _n(r){if(process.platform!=="win32")return r;let e,t;if(e=r.match(Qi))r=e[1];else if(t=r.match(Ki))r=`\\\\${t[1]?".\\":""}${t[2]}`;else return r;return r.replace(/\//g,"\\")}function $t(r){if(process.platform!=="win32")return r;r=r.replace(/\\/g,"/");let e,t;return(e=r.match(ji))?r=`/${e[1]}`:(t=r.match(Yi))&&(r=`/unc/${t[1]?".dot/":""}${t[2]}`),r}function $n(r,e){return r===m?_n(e):$t(e)}var pe=new Date(Hi*1e3),Vi=pe.getTime();async function Xi(r,e,t,n,s){let i=r.pathUtils.normalize(e),a=t.pathUtils.normalize(n),o=[],c=[],{atime:f,mtime:g}=s.stableTime?{atime:pe,mtime:pe}:await t.lstatPromise(a);await r.mkdirpPromise(r.pathUtils.dirname(e),{utimes:[f,g]}),await Qt(o,c,r,i,t,a,{...s,didParentExist:!0});for(let l of o)await l();await Promise.all(c.map(l=>l()))}async function Qt(r,e,t,n,s,i,a){var o,c,f;let g=a.didParentExist?await es(t,n):null,l=await s.lstatPromise(i),{atime:P,mtime:b}=a.stableTime?{atime:pe,mtime:pe}:l,S;switch(!0){case l.isDirectory():S=await zi(r,e,t,n,g,s,i,l,a);break;case l.isFile():S=await $i(r,e,t,n,g,s,i,l,a);break;case l.isSymbolicLink():S=await ea(r,e,t,n,g,s,i,l,a);break;default:throw new Error(`Unsupported file type (${l.mode})`)}return(((o=a.linkStrategy)==null?void 0:o.type)!=="HardlinkFromIndex"||!l.isFile())&&((S||((c=g==null?void 0:g.mtime)==null?void 0:c.getTime())!==b.getTime()||((f=g==null?void 0:g.atime)==null?void 0:f.getTime())!==P.getTime())&&(e.push(()=>t.lutimesPromise(n,P,b)),S=!0),(g===null||(g.mode&511)!==(l.mode&511))&&(e.push(()=>t.chmodPromise(n,l.mode&511)),S=!0)),S}async function es(r,e){try{return await r.lstatPromise(e)}catch{return null}}async function zi(r,e,t,n,s,i,a,o,c){if(s!==null&&!s.isDirectory())if(c.overwrite)r.push(async()=>t.removePromise(n)),s=null;else return!1;let f=!1;s===null&&(r.push(async()=>{try{await t.mkdirPromise(n,{mode:o.mode})}catch(P){if(P.code!=="EEXIST")throw P}}),f=!0);let g=await i.readdirPromise(a),l=c.didParentExist&&!s?{...c,didParentExist:!1}:c;if(c.stableSort)for(let P of g.sort())await Qt(r,e,t,t.pathUtils.join(n,P),i,i.pathUtils.join(a,P),l)&&(f=!0);else(await Promise.all(g.map(async b=>{await Qt(r,e,t,t.pathUtils.join(n,b),i,i.pathUtils.join(a,b),l)}))).some(b=>b)&&(f=!0);return f}async function Zi(r,e,t,n,s,i,a,o,c,f){let g=await i.checksumFilePromise(a,{algorithm:"sha1"}),l=t.pathUtils.join(f.indexPath,g.slice(0,2),`${g}.dat`),P;(L=>{L[L.Lock=0]="Lock",L[L.Rename=1]="Rename"})(P||(P={}));let b=1,S=await es(t,l);if(s){let L=S&&s.dev===S.dev&&s.ino===S.ino,B=(S==null?void 0:S.mtimeMs)!==Vi;if(L&&B&&f.autoRepair&&(b=0,S=null),!L)if(c.overwrite)r.push(async()=>t.removePromise(n)),s=null;else return!1}let h=!S&&b===1?`${l}.${Math.floor(Math.random()*4294967296).toString(16).padStart(8,"0")}`:null,A=!1;return r.push(async()=>{if(!S&&(b===0&&await t.lockPromise(l,async()=>{let L=await i.readFilePromise(a);await t.writeFilePromise(l,L)}),b===1&&h)){let L=await i.readFilePromise(a);await t.writeFilePromise(h,L);try{await t.linkPromise(h,l)}catch(B){if(B.code==="EEXIST")A=!0,await t.unlinkPromise(h);else throw B}}s||await t.linkPromise(l,n)}),e.push(async()=>{S||await t.lutimesPromise(l,pe,pe),h&&!A&&await t.unlinkPromise(h)}),!1}async function _i(r,e,t,n,s,i,a,o,c){if(s!==null)if(c.overwrite)r.push(async()=>t.removePromise(n)),s=null;else return!1;return r.push(async()=>{let f=await i.readFilePromise(a);await t.writeFilePromise(n,f)}),!0}async function $i(r,e,t,n,s,i,a,o,c){var f;return((f=c.linkStrategy)==null?void 0:f.type)==="HardlinkFromIndex"?Zi(r,e,t,n,s,i,a,o,c,c.linkStrategy):_i(r,e,t,n,s,i,a,o,c)}async function ea(r,e,t,n,s,i,a,o,c){if(s!==null)if(c.overwrite)r.push(async()=>t.removePromise(n)),s=null;else return!1;return r.push(async()=>{await t.symlinkPromise($n(t.pathUtils,await i.readlinkPromise(a)),n)}),!0}var st=class{constructor(e){this.pathUtils=e}async*genTraversePromise(e,{stableSort:t=!1}={}){let n=[e];for(;n.length>0;){let s=n.shift();if((await this.lstatPromise(s)).isDirectory()){let a=await this.readdirPromise(s);if(t)for(let o of a.sort())n.push(this.pathUtils.join(s,o));else throw new Error("Not supported")}else yield s}}async checksumFilePromise(e,{algorithm:t="sha512"}={}){let n=await this.openPromise(e,"r");try{let i=Buffer.allocUnsafeSlow(65536),a=qi.createHash(t),o=0;for(;(o=await this.readPromise(n,i,0,65536))!==0;)a.update(o===65536?i:i.slice(0,o));return a.digest("hex")}finally{await this.closePromise(n)}}async removePromise(e,{recursive:t=!0,maxRetries:n=5}={}){let s;try{s=await this.lstatPromise(e)}catch(i){if(i.code==="ENOENT")return;throw i}if(s.isDirectory()){if(t){let i=await this.readdirPromise(e);await Promise.all(i.map(a=>this.removePromise(this.pathUtils.resolve(e,a))))}for(let i=0;i<=n;i++)try{await this.rmdirPromise(e);break}catch(a){if(a.code!=="EBUSY"&&a.code!=="ENOTEMPTY")throw a;isetTimeout(o,i*100))}}else await this.unlinkPromise(e)}removeSync(e,{recursive:t=!0}={}){let n;try{n=this.lstatSync(e)}catch(s){if(s.code==="ENOENT")return;throw s}if(n.isDirectory()){if(t)for(let s of this.readdirSync(e))this.removeSync(this.pathUtils.resolve(e,s));this.rmdirSync(e)}else this.unlinkSync(e)}async mkdirpPromise(e,{chmod:t,utimes:n}={}){if(e=this.resolve(e),e===this.pathUtils.dirname(e))return;let s=e.split(this.pathUtils.sep),i;for(let a=2;a<=s.length;++a){let o=s.slice(0,a).join(this.pathUtils.sep);if(!this.existsSync(o)){try{await this.mkdirPromise(o)}catch(c){if(c.code==="EEXIST")continue;throw c}if(i??(i=o),t!=null&&await this.chmodPromise(o,t),n!=null)await this.utimesPromise(o,n[0],n[1]);else{let c=await this.statPromise(this.pathUtils.dirname(o));await this.utimesPromise(o,c.atime,c.mtime)}}}return i}mkdirpSync(e,{chmod:t,utimes:n}={}){if(e=this.resolve(e),e===this.pathUtils.dirname(e))return;let s=e.split(this.pathUtils.sep),i;for(let a=2;a<=s.length;++a){let o=s.slice(0,a).join(this.pathUtils.sep);if(!this.existsSync(o)){try{this.mkdirSync(o)}catch(c){if(c.code==="EEXIST")continue;throw c}if(i??(i=o),t!=null&&this.chmodSync(o,t),n!=null)this.utimesSync(o,n[0],n[1]);else{let c=this.statSync(this.pathUtils.dirname(o));this.utimesSync(o,c.atime,c.mtime)}}}return i}async copyPromise(e,t,{baseFs:n=this,overwrite:s=!0,stableSort:i=!1,stableTime:a=!1,linkStrategy:o=null}={}){return await Xi(this,e,n,t,{overwrite:s,stableSort:i,stableTime:a,linkStrategy:o})}copySync(e,t,{baseFs:n=this,overwrite:s=!0}={}){let i=n.lstatSync(t),a=this.existsSync(e);if(i.isDirectory()){this.mkdirpSync(e);let c=n.readdirSync(t);for(let f of c)this.copySync(this.pathUtils.join(e,f),n.pathUtils.join(t,f),{baseFs:n,overwrite:s})}else if(i.isFile()){if(!a||s){a&&this.removeSync(e);let c=n.readFileSync(t);this.writeFileSync(e,c)}}else if(i.isSymbolicLink()){if(!a||s){a&&this.removeSync(e);let c=n.readlinkSync(t);this.symlinkSync($n(this.pathUtils,c),e)}}else throw new Error(`Unsupported file type (file: ${t}, mode: 0o${i.mode.toString(8).padStart(6,"0")})`);let o=i.mode&511;this.chmodSync(e,o)}async changeFilePromise(e,t,n={}){return Buffer.isBuffer(t)?this.changeFileBufferPromise(e,t,n):this.changeFileTextPromise(e,t,n)}async changeFileBufferPromise(e,t,{mode:n}={}){let s=Buffer.alloc(0);try{s=await this.readFilePromise(e)}catch{}Buffer.compare(s,t)!==0&&await this.writeFilePromise(e,t,{mode:n})}async changeFileTextPromise(e,t,{automaticNewlines:n,mode:s}={}){let i="";try{i=await this.readFilePromise(e,"utf8")}catch{}let a=n?Hn(i,t):t;i!==a&&await this.writeFilePromise(e,a,{mode:s})}changeFileSync(e,t,n={}){return Buffer.isBuffer(t)?this.changeFileBufferSync(e,t,n):this.changeFileTextSync(e,t,n)}changeFileBufferSync(e,t,{mode:n}={}){let s=Buffer.alloc(0);try{s=this.readFileSync(e)}catch{}Buffer.compare(s,t)!==0&&this.writeFileSync(e,t,{mode:n})}changeFileTextSync(e,t,{automaticNewlines:n=!1,mode:s}={}){let i="";try{i=this.readFileSync(e,"utf8")}catch{}let a=n?Hn(i,t):t;i!==a&&this.writeFileSync(e,a,{mode:s})}async movePromise(e,t){try{await this.renamePromise(e,t)}catch(n){if(n.code==="EXDEV")await this.copyPromise(t,e),await this.removePromise(e);else throw n}}moveSync(e,t){try{this.renameSync(e,t)}catch(n){if(n.code==="EXDEV")this.copySync(t,e),this.removeSync(e);else throw n}}async lockPromise(e,t){let n=`${e}.flock`,s=1e3/60,i=Date.now(),a=null,o=async()=>{let c;try{[c]=await this.readJsonPromise(n)}catch{return Date.now()-i<500}try{return process.kill(c,0),!0}catch{return!1}};for(;a===null;)try{a=await this.openPromise(n,"wx")}catch(c){if(c.code==="EEXIST"){if(!await o())try{await this.unlinkPromise(n);continue}catch{}if(Date.now()-i<60*1e3)await new Promise(f=>setTimeout(f,s));else throw new Error(`Couldn't acquire a lock in a reasonable time (via ${n})`)}else throw c}await this.writePromise(a,JSON.stringify([process.pid]));try{return await t()}finally{try{await this.closePromise(a),await this.unlinkPromise(n)}catch{}}}async readJsonPromise(e){let t=await this.readFilePromise(e,"utf8");try{return JSON.parse(t)}catch(n){throw n.message+=` (in ${e})`,n}}readJsonSync(e){let t=this.readFileSync(e,"utf8");try{return JSON.parse(t)}catch(n){throw n.message+=` (in ${e})`,n}}async writeJsonPromise(e,t){return await this.writeFilePromise(e,`${JSON.stringify(t,null,2)} -`)}writeJsonSync(e,t){return this.writeFileSync(e,`${JSON.stringify(t,null,2)} -`)}async preserveTimePromise(e,t){let n=await this.lstatPromise(e),s=await t();typeof s<"u"&&(e=s),await this.lutimesPromise(e,n.atime,n.mtime)}async preserveTimeSync(e,t){let n=this.lstatSync(e),s=t();typeof s<"u"&&(e=s),this.lutimesSync(e,n.atime,n.mtime)}},Kt=class extends st{constructor(){super(x)}};function ta(r){let e=r.match(/\r?\n/g);if(e===null)return Gi.EOL;let t=e.filter(s=>s===`\r -`).length,n=e.length-t;return t>n?`\r +var plugin=(()=>{var gw=Object.create;var hi=Object.defineProperty;var yw=Object.getOwnPropertyDescriptor;var Pw=Object.getOwnPropertyNames;var ww=Object.getPrototypeOf,Sw=Object.prototype.hasOwnProperty;var H=(r=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(r,{get:(n,s)=>(typeof require<"u"?require:n)[s]}):r)(function(r){if(typeof require<"u")return require.apply(this,arguments);throw new Error('Dynamic require of "'+r+'" is not supported')});var Le=(r,n)=>()=>(n||r((n={exports:{}}).exports,n),n.exports),vw=(r,n)=>{for(var s in n)hi(r,s,{get:n[s],enumerable:!0})},Ac=(r,n,s,o)=>{if(n&&typeof n=="object"||typeof n=="function")for(let c of Pw(n))!Sw.call(r,c)&&c!==s&&hi(r,c,{get:()=>n[c],enumerable:!(o=yw(n,c))||o.enumerable});return r};var Me=(r,n,s)=>(s=r!=null?gw(ww(r)):{},Ac(n||!r||!r.__esModule?hi(s,"default",{value:r,enumerable:!0}):s,r)),Ew=r=>Ac(hi({},"__esModule",{value:!0}),r);var Rc=Le((YS,Fc)=>{Fc.exports=Ic;Ic.sync=xw;var kc=H("fs");function bw(r,n){var s=n.pathExt!==void 0?n.pathExt:process.env.PATHEXT;if(!s||(s=s.split(";"),s.indexOf("")!==-1))return!0;for(var o=0;o{Mc.exports=Dc;Dc.sync=Tw;var Cc=H("fs");function Dc(r,n,s){Cc.stat(r,function(o,c){s(o,o?!1:Bc(c,n))})}function Tw(r,n){return Bc(Cc.statSync(r),n)}function Bc(r,n){return r.isFile()&&Aw(r,n)}function Aw(r,n){var s=r.mode,o=r.uid,c=r.gid,h=n.uid!==void 0?n.uid:process.getuid&&process.getuid(),d=n.gid!==void 0?n.gid:process.getgid&&process.getgid(),P=parseInt("100",8),w=parseInt("010",8),v=parseInt("001",8),b=P|w,T=s&v||s&w&&c===d||s&P&&o===h||s&b&&h===0;return T}});var Nc=Le((zS,Wc)=>{var QS=H("fs"),pi;process.platform==="win32"||global.TESTING_WINDOWS?pi=Rc():pi=Oc();Wc.exports=ao;ao.sync=kw;function ao(r,n,s){if(typeof n=="function"&&(s=n,n={}),!s){if(typeof Promise!="function")throw new TypeError("callback not provided");return new Promise(function(o,c){ao(r,n||{},function(h,d){h?c(h):o(d)})})}pi(r,n||{},function(o,c){o&&(o.code==="EACCES"||n&&n.ignoreErrors)&&(o=null,c=!1),s(o,c)})}function kw(r,n){try{return pi.sync(r,n||{})}catch(s){if(n&&n.ignoreErrors||s.code==="EACCES")return!1;throw s}}});var Kc=Le((XS,Yc)=>{var Wn=process.platform==="win32"||process.env.OSTYPE==="cygwin"||process.env.OSTYPE==="msys",Uc=H("path"),Lw=Wn?";":":",Gc=Nc(),qc=r=>Object.assign(new Error(`not found: ${r}`),{code:"ENOENT"}),Hc=(r,n)=>{let s=n.colon||Lw,o=r.match(/\//)||Wn&&r.match(/\\/)?[""]:[...Wn?[process.cwd()]:[],...(n.path||process.env.PATH||"").split(s)],c=Wn?n.pathExt||process.env.PATHEXT||".EXE;.CMD;.BAT;.COM":"",h=Wn?c.split(s):[""];return Wn&&r.indexOf(".")!==-1&&h[0]!==""&&h.unshift(""),{pathEnv:o,pathExt:h,pathExtExe:c}},Jc=(r,n,s)=>{typeof n=="function"&&(s=n,n={}),n||(n={});let{pathEnv:o,pathExt:c,pathExtExe:h}=Hc(r,n),d=[],P=v=>new Promise((b,T)=>{if(v===o.length)return n.all&&d.length?b(d):T(qc(r));let C=o[v],G=/^".*"$/.test(C)?C.slice(1,-1):C,N=Uc.join(G,r),Q=!G&&/^\.[\\\/]/.test(r)?r.slice(0,2)+N:N;b(w(Q,v,0))}),w=(v,b,T)=>new Promise((C,G)=>{if(T===c.length)return C(P(b+1));let N=c[T];Gc(v+N,{pathExt:h},(Q,le)=>{if(!Q&&le)if(n.all)d.push(v+N);else return C(v+N);return C(w(v,b,T+1))})});return s?P(0).then(v=>s(null,v),s):P(0)},Iw=(r,n)=>{n=n||{};let{pathEnv:s,pathExt:o,pathExtExe:c}=Hc(r,n),h=[];for(let d=0;d{"use strict";var Qc=(r={})=>{let n=r.env||process.env;return(r.platform||process.platform)!=="win32"?"PATH":Object.keys(n).reverse().find(o=>o.toUpperCase()==="PATH")||"Path"};uo.exports=Qc;uo.exports.default=Qc});var jc=Le((VS,Vc)=>{"use strict";var Xc=H("path"),Fw=Kc(),Rw=zc();function Zc(r,n){let s=r.options.env||process.env,o=process.cwd(),c=r.options.cwd!=null,h=c&&process.chdir!==void 0&&!process.chdir.disabled;if(h)try{process.chdir(r.options.cwd)}catch{}let d;try{d=Fw.sync(r.command,{path:s[Rw({env:s})],pathExt:n?Xc.delimiter:void 0})}catch{}finally{h&&process.chdir(o)}return d&&(d=Xc.resolve(c?r.options.cwd:"",d)),d}function Cw(r){return Zc(r)||Zc(r,!0)}Vc.exports=Cw});var _c=Le((jS,lo)=>{"use strict";var co=/([()\][%!^"`<>&|;, *?])/g;function Dw(r){return r=r.replace(co,"^$1"),r}function Bw(r,n){return r=`${r}`,r=r.replace(/(\\*)"/g,'$1$1\\"'),r=r.replace(/(\\*)$/,"$1$1"),r=`"${r}"`,r=r.replace(co,"^$1"),n&&(r=r.replace(co,"^$1")),r}lo.exports.command=Dw;lo.exports.argument=Bw});var el=Le((_S,$c)=>{"use strict";$c.exports=/^#!(.*)/});var nl=Le(($S,tl)=>{"use strict";var Mw=el();tl.exports=(r="")=>{let n=r.match(Mw);if(!n)return null;let[s,o]=n[0].replace(/#! ?/,"").split(" "),c=s.split("/").pop();return c==="env"?o:o?`${c} ${o}`:c}});var il=Le((ev,rl)=>{"use strict";var fo=H("fs"),Ow=nl();function Ww(r){let s=Buffer.alloc(150),o;try{o=fo.openSync(r,"r"),fo.readSync(o,s,0,150,0),fo.closeSync(o)}catch{}return Ow(s.toString())}rl.exports=Ww});var ul=Le((tv,al)=>{"use strict";var Nw=H("path"),sl=jc(),ol=_c(),Uw=il(),Gw=process.platform==="win32",qw=/\.(?:com|exe)$/i,Hw=/node_modules[\\/].bin[\\/][^\\/]+\.cmd$/i;function Jw(r){r.file=sl(r);let n=r.file&&Uw(r.file);return n?(r.args.unshift(r.file),r.command=n,sl(r)):r.file}function Yw(r){if(!Gw)return r;let n=Jw(r),s=!qw.test(n);if(r.options.forceShell||s){let o=Hw.test(n);r.command=Nw.normalize(r.command),r.command=ol.command(r.command),r.args=r.args.map(h=>ol.argument(h,o));let c=[r.command].concat(r.args).join(" ");r.args=["/d","/s","/c",`"${c}"`],r.command=process.env.comspec||"cmd.exe",r.options.windowsVerbatimArguments=!0}return r}function Kw(r,n,s){n&&!Array.isArray(n)&&(s=n,n=null),n=n?n.slice(0):[],s=Object.assign({},s);let o={command:r,args:n,options:s,file:void 0,original:{command:r,args:n}};return s.shell?o:Yw(o)}al.exports=Kw});var fl=Le((nv,ll)=>{"use strict";var ho=process.platform==="win32";function po(r,n){return Object.assign(new Error(`${n} ${r.command} ENOENT`),{code:"ENOENT",errno:"ENOENT",syscall:`${n} ${r.command}`,path:r.command,spawnargs:r.args})}function Qw(r,n){if(!ho)return;let s=r.emit;r.emit=function(o,c){if(o==="exit"){let h=cl(c,n,"spawn");if(h)return s.call(r,"error",h)}return s.apply(r,arguments)}}function cl(r,n){return ho&&r===1&&!n.file?po(n.original,"spawn"):null}function zw(r,n){return ho&&r===1&&!n.file?po(n.original,"spawnSync"):null}ll.exports={hookChildProcess:Qw,verifyENOENT:cl,verifyENOENTSync:zw,notFoundError:po}});var dl=Le((rv,Nn)=>{"use strict";var hl=H("child_process"),mo=ul(),go=fl();function pl(r,n,s){let o=mo(r,n,s),c=hl.spawn(o.command,o.args,o.options);return go.hookChildProcess(c,o),c}function Xw(r,n,s){let o=mo(r,n,s),c=hl.spawnSync(o.command,o.args,o.options);return c.error=c.error||go.verifyENOENTSync(c.status,o),c}Nn.exports=pl;Nn.exports.spawn=pl;Nn.exports.sync=Xw;Nn.exports._parse=mo;Nn.exports._enoent=go});var Al=Le((bv,yi)=>{yi.exports=["SIGABRT","SIGALRM","SIGHUP","SIGINT","SIGTERM"];process.platform!=="win32"&&yi.exports.push("SIGVTALRM","SIGXCPU","SIGXFSZ","SIGUSR2","SIGTRAP","SIGSYS","SIGQUIT","SIGIOT");process.platform==="linux"&&yi.exports.push("SIGIO","SIGPOLL","SIGPWR","SIGSTKFLT","SIGUNUSED")});var Rl=Le((xv,Hn)=>{var Se=global.process,yn=function(r){return r&&typeof r=="object"&&typeof r.removeListener=="function"&&typeof r.emit=="function"&&typeof r.reallyExit=="function"&&typeof r.listeners=="function"&&typeof r.kill=="function"&&typeof r.pid=="number"&&typeof r.on=="function"};yn(Se)?(kl=H("assert"),Gn=Al(),Ll=/^win/i.test(Se.platform),lr=H("events"),typeof lr!="function"&&(lr=lr.EventEmitter),Se.__signal_exit_emitter__?Oe=Se.__signal_exit_emitter__:(Oe=Se.__signal_exit_emitter__=new lr,Oe.count=0,Oe.emitted={}),Oe.infinite||(Oe.setMaxListeners(1/0),Oe.infinite=!0),Hn.exports=function(r,n){if(!yn(global.process))return function(){};kl.equal(typeof r,"function","a callback must be provided for exit handler"),qn===!1&&vo();var s="exit";n&&n.alwaysLast&&(s="afterexit");var o=function(){Oe.removeListener(s,r),Oe.listeners("exit").length===0&&Oe.listeners("afterexit").length===0&&Pi()};return Oe.on(s,r),o},Pi=function(){!qn||!yn(global.process)||(qn=!1,Gn.forEach(function(n){try{Se.removeListener(n,wi[n])}catch{}}),Se.emit=Si,Se.reallyExit=Eo,Oe.count-=1)},Hn.exports.unload=Pi,Pn=function(n,s,o){Oe.emitted[n]||(Oe.emitted[n]=!0,Oe.emit(n,s,o))},wi={},Gn.forEach(function(r){wi[r]=function(){if(!!yn(global.process)){var s=Se.listeners(r);s.length===Oe.count&&(Pi(),Pn("exit",null,r),Pn("afterexit",null,r),Ll&&r==="SIGHUP"&&(r="SIGINT"),Se.kill(Se.pid,r))}}}),Hn.exports.signals=function(){return Gn},qn=!1,vo=function(){qn||!yn(global.process)||(qn=!0,Oe.count+=1,Gn=Gn.filter(function(n){try{return Se.on(n,wi[n]),!0}catch{return!1}}),Se.emit=Fl,Se.reallyExit=Il)},Hn.exports.load=vo,Eo=Se.reallyExit,Il=function(n){!yn(global.process)||(Se.exitCode=n||0,Pn("exit",Se.exitCode,null),Pn("afterexit",Se.exitCode,null),Eo.call(Se,Se.exitCode))},Si=Se.emit,Fl=function(n,s){if(n==="exit"&&yn(global.process)){s!==void 0&&(Se.exitCode=s);var o=Si.apply(this,arguments);return Pn("exit",Se.exitCode,null),Pn("afterexit",Se.exitCode,null),o}else return Si.apply(this,arguments)}):Hn.exports=function(){return function(){}};var kl,Gn,Ll,lr,Oe,Pi,Pn,wi,qn,vo,Eo,Il,Si,Fl});var Gl=Le((kv,Ul)=>{"use strict";var{PassThrough:P0}=H("stream");Ul.exports=r=>{r={...r};let{array:n}=r,{encoding:s}=r,o=s==="buffer",c=!1;n?c=!(s||o):s=s||"utf8",o&&(s=null);let h=new P0({objectMode:c});s&&h.setEncoding(s);let d=0,P=[];return h.on("data",w=>{P.push(w),c?d=P.length:d+=w.length}),h.getBufferedValue=()=>n?P:o?Buffer.concat(P,d):P.join(""),h.getBufferedLength=()=>d,h}});var ql=Le((Lv,fr)=>{"use strict";var{constants:w0}=H("buffer"),S0=H("stream"),{promisify:v0}=H("util"),E0=Gl(),b0=v0(S0.pipeline),vi=class extends Error{constructor(){super("maxBuffer exceeded"),this.name="MaxBufferError"}};async function xo(r,n){if(!r)throw new Error("Expected a stream");n={maxBuffer:1/0,...n};let{maxBuffer:s}=n,o=E0(n);return await new Promise((c,h)=>{let d=P=>{P&&o.getBufferedLength()<=w0.MAX_LENGTH&&(P.bufferedData=o.getBufferedValue()),h(P)};(async()=>{try{await b0(r,o),c()}catch(P){d(P)}})(),o.on("data",()=>{o.getBufferedLength()>s&&d(new vi)})}),o.getBufferedValue()}fr.exports=xo;fr.exports.buffer=(r,n)=>xo(r,{...n,encoding:"buffer"});fr.exports.array=(r,n)=>xo(r,{...n,array:!0});fr.exports.MaxBufferError=vi});var Jl=Le((Iv,Hl)=>{"use strict";var{PassThrough:x0}=H("stream");Hl.exports=function(){var r=[],n=new x0({objectMode:!0});return n.setMaxListeners(0),n.add=s,n.isEmpty=o,n.on("unpipe",c),Array.prototype.slice.call(arguments).forEach(s),n;function s(h){return Array.isArray(h)?(h.forEach(s),this):(r.push(h),h.once("end",c.bind(null,h)),h.once("error",n.emit.bind(n,"error")),h.pipe(n,{end:!1}),this)}function o(){return r.length==0}function c(h){r=r.filter(function(d){return d!==h}),!r.length&&n.readable&&n.end()}}});var Tf=Le(Ft=>{"use strict";Object.defineProperty(Ft,"__esModule",{value:!0});var C0=H("zlib"),cf=H("path"),dr=H("module"),et=H("url"),nf=H("util"),D0=H("assert"),B0=H("fs"),M0=H("crypto"),O0=H("os"),Ii=r=>r&&typeof r=="object"&&"default"in r?r:{default:r},lf=Ii(C0),Ti=Ii(cf),W0=Ii(D0),N0=Ii(B0),ff=(r=>(r.HARD="HARD",r.SOFT="SOFT",r))(ff||{}),U0=456789e3,Oo={root:"/",dot:"."},Ai={home:"~",nodeModules:"node_modules",manifest:"package.json",lockfile:"yarn.lock",virtual:"__virtual__",pnpJs:".pnp.js",pnpCjs:".pnp.cjs",pnpData:".pnp.data.json",pnpEsmLoader:".pnp.loader.mjs",rc:".yarnrc.yml"},I=Object.create(Ti.default),V=Object.create(Ti.default.posix);I.cwd=()=>process.cwd();V.cwd=()=>Yo(process.cwd());V.resolve=(...r)=>r.length>0&&V.isAbsolute(r[0])?Ti.default.posix.resolve(...r):Ti.default.posix.resolve(V.cwd(),...r);var hf=function(r,n,s){return n=r.normalize(n),s=r.normalize(s),n===s?".":(n.endsWith(r.sep)||(n=n+r.sep),s.startsWith(n)?s.slice(n.length):null)};I.fromPortablePath=pf;I.toPortablePath=Yo;I.contains=(r,n)=>hf(I,r,n);V.contains=(r,n)=>hf(V,r,n);var G0=/^([a-zA-Z]:.*)$/,q0=/^\/\/(\.\/)?(.*)$/,H0=/^\/([a-zA-Z]:.*)$/,J0=/^\/unc\/(\.dot\/)?(.*)$/;function pf(r){if(process.platform!=="win32")return r;let n,s;if(n=r.match(H0))r=n[1];else if(s=r.match(J0))r=`\\\\${s[1]?".\\":""}${s[2]}`;else return r;return r.replace(/\//g,"\\")}function Yo(r){if(process.platform!=="win32")return r;r=r.replace(/\\/g,"/");let n,s;return(n=r.match(G0))?r=`/${n[1]}`:(s=r.match(q0))&&(r=`/unc/${s[1]?".dot/":""}${s[2]}`),r}function df(r,n){return r===I?pf(n):Yo(n)}var vn=new Date(U0*1e3),Y0=vn.getTime();async function K0(r,n,s,o,c){let h=r.pathUtils.normalize(n),d=s.pathUtils.normalize(o),P=[],w=[],{atime:v,mtime:b}=c.stableTime?{atime:vn,mtime:vn}:await s.lstatPromise(d);await r.mkdirpPromise(r.pathUtils.dirname(n),{utimes:[v,b]}),await Wo(P,w,r,h,s,d,{...c,didParentExist:!0});for(let T of P)await T();await Promise.all(w.map(T=>T()))}async function Wo(r,n,s,o,c,h,d){var P,w,v;let b=d.didParentExist?await mf(s,o):null,T=await c.lstatPromise(h),{atime:C,mtime:G}=d.stableTime?{atime:vn,mtime:vn}:T,N;switch(!0){case T.isDirectory():N=await Q0(r,n,s,o,b,c,h,T,d);break;case T.isFile():N=await Z0(r,n,s,o,b,c,h,T,d);break;case T.isSymbolicLink():N=await V0(r,n,s,o,b,c,h,T,d);break;default:throw new Error(`Unsupported file type (${T.mode})`)}return(((P=d.linkStrategy)==null?void 0:P.type)!=="HardlinkFromIndex"||!T.isFile())&&((N||((w=b==null?void 0:b.mtime)==null?void 0:w.getTime())!==G.getTime()||((v=b==null?void 0:b.atime)==null?void 0:v.getTime())!==C.getTime())&&(n.push(()=>s.lutimesPromise(o,C,G)),N=!0),(b===null||(b.mode&511)!==(T.mode&511))&&(n.push(()=>s.chmodPromise(o,T.mode&511)),N=!0)),N}async function mf(r,n){try{return await r.lstatPromise(n)}catch{return null}}async function Q0(r,n,s,o,c,h,d,P,w){if(c!==null&&!c.isDirectory())if(w.overwrite)r.push(async()=>s.removePromise(o)),c=null;else return!1;let v=!1;c===null&&(r.push(async()=>{try{await s.mkdirPromise(o,{mode:P.mode})}catch(C){if(C.code!=="EEXIST")throw C}}),v=!0);let b=await h.readdirPromise(d),T=w.didParentExist&&!c?{...w,didParentExist:!1}:w;if(w.stableSort)for(let C of b.sort())await Wo(r,n,s,s.pathUtils.join(o,C),h,h.pathUtils.join(d,C),T)&&(v=!0);else(await Promise.all(b.map(async G=>{await Wo(r,n,s,s.pathUtils.join(o,G),h,h.pathUtils.join(d,G),T)}))).some(G=>G)&&(v=!0);return v}async function z0(r,n,s,o,c,h,d,P,w,v){let b=await h.checksumFilePromise(d,{algorithm:"sha1"}),T=s.pathUtils.join(v.indexPath,b.slice(0,2),`${b}.dat`),C;(z=>{z[z.Lock=0]="Lock",z[z.Rename=1]="Rename"})(C||(C={}));let G=1,N=await mf(s,T);if(c){let z=N&&c.dev===N.dev&&c.ino===N.ino,fe=(N==null?void 0:N.mtimeMs)!==Y0;if(z&&fe&&v.autoRepair&&(G=0,N=null),!z)if(w.overwrite)r.push(async()=>s.removePromise(o)),c=null;else return!1}let Q=!N&&G===1?`${T}.${Math.floor(Math.random()*4294967296).toString(16).padStart(8,"0")}`:null,le=!1;return r.push(async()=>{if(!N&&(G===0&&await s.lockPromise(T,async()=>{let z=await h.readFilePromise(d);await s.writeFilePromise(T,z)}),G===1&&Q)){let z=await h.readFilePromise(d);await s.writeFilePromise(Q,z);try{await s.linkPromise(Q,T)}catch(fe){if(fe.code==="EEXIST")le=!0,await s.unlinkPromise(Q);else throw fe}}c||await s.linkPromise(T,o)}),n.push(async()=>{N||await s.lutimesPromise(T,vn,vn),Q&&!le&&await s.unlinkPromise(Q)}),!1}async function X0(r,n,s,o,c,h,d,P,w){if(c!==null)if(w.overwrite)r.push(async()=>s.removePromise(o)),c=null;else return!1;return r.push(async()=>{let v=await h.readFilePromise(d);await s.writeFilePromise(o,v)}),!0}async function Z0(r,n,s,o,c,h,d,P,w){var v;return((v=w.linkStrategy)==null?void 0:v.type)==="HardlinkFromIndex"?z0(r,n,s,o,c,h,d,P,w,w.linkStrategy):X0(r,n,s,o,c,h,d,P,w)}async function V0(r,n,s,o,c,h,d,P,w){if(c!==null)if(w.overwrite)r.push(async()=>s.removePromise(o)),c=null;else return!1;return r.push(async()=>{await s.symlinkPromise(df(s.pathUtils,await h.readlinkPromise(d)),o)}),!0}var ki=class{constructor(n){this.pathUtils=n}async*genTraversePromise(n,{stableSort:s=!1}={}){let o=[n];for(;o.length>0;){let c=o.shift();if((await this.lstatPromise(c)).isDirectory()){let d=await this.readdirPromise(c);if(s)for(let P of d.sort())o.push(this.pathUtils.join(c,P));else throw new Error("Not supported")}else yield c}}async checksumFilePromise(n,{algorithm:s="sha512"}={}){let o=await this.openPromise(n,"r");try{let h=Buffer.allocUnsafeSlow(65536),d=M0.createHash(s),P=0;for(;(P=await this.readPromise(o,h,0,65536))!==0;)d.update(P===65536?h:h.slice(0,P));return d.digest("hex")}finally{await this.closePromise(o)}}async removePromise(n,{recursive:s=!0,maxRetries:o=5}={}){let c;try{c=await this.lstatPromise(n)}catch(h){if(h.code==="ENOENT")return;throw h}if(c.isDirectory()){if(s){let h=await this.readdirPromise(n);await Promise.all(h.map(d=>this.removePromise(this.pathUtils.resolve(n,d))))}for(let h=0;h<=o;h++)try{await this.rmdirPromise(n);break}catch(d){if(d.code!=="EBUSY"&&d.code!=="ENOTEMPTY")throw d;hsetTimeout(P,h*100))}}else await this.unlinkPromise(n)}removeSync(n,{recursive:s=!0}={}){let o;try{o=this.lstatSync(n)}catch(c){if(c.code==="ENOENT")return;throw c}if(o.isDirectory()){if(s)for(let c of this.readdirSync(n))this.removeSync(this.pathUtils.resolve(n,c));this.rmdirSync(n)}else this.unlinkSync(n)}async mkdirpPromise(n,{chmod:s,utimes:o}={}){if(n=this.resolve(n),n===this.pathUtils.dirname(n))return;let c=n.split(this.pathUtils.sep),h;for(let d=2;d<=c.length;++d){let P=c.slice(0,d).join(this.pathUtils.sep);if(!this.existsSync(P)){try{await this.mkdirPromise(P)}catch(w){if(w.code==="EEXIST")continue;throw w}if(h??(h=P),s!=null&&await this.chmodPromise(P,s),o!=null)await this.utimesPromise(P,o[0],o[1]);else{let w=await this.statPromise(this.pathUtils.dirname(P));await this.utimesPromise(P,w.atime,w.mtime)}}}return h}mkdirpSync(n,{chmod:s,utimes:o}={}){if(n=this.resolve(n),n===this.pathUtils.dirname(n))return;let c=n.split(this.pathUtils.sep),h;for(let d=2;d<=c.length;++d){let P=c.slice(0,d).join(this.pathUtils.sep);if(!this.existsSync(P)){try{this.mkdirSync(P)}catch(w){if(w.code==="EEXIST")continue;throw w}if(h??(h=P),s!=null&&this.chmodSync(P,s),o!=null)this.utimesSync(P,o[0],o[1]);else{let w=this.statSync(this.pathUtils.dirname(P));this.utimesSync(P,w.atime,w.mtime)}}}return h}async copyPromise(n,s,{baseFs:o=this,overwrite:c=!0,stableSort:h=!1,stableTime:d=!1,linkStrategy:P=null}={}){return await K0(this,n,o,s,{overwrite:c,stableSort:h,stableTime:d,linkStrategy:P})}copySync(n,s,{baseFs:o=this,overwrite:c=!0}={}){let h=o.lstatSync(s),d=this.existsSync(n);if(h.isDirectory()){this.mkdirpSync(n);let w=o.readdirSync(s);for(let v of w)this.copySync(this.pathUtils.join(n,v),o.pathUtils.join(s,v),{baseFs:o,overwrite:c})}else if(h.isFile()){if(!d||c){d&&this.removeSync(n);let w=o.readFileSync(s);this.writeFileSync(n,w)}}else if(h.isSymbolicLink()){if(!d||c){d&&this.removeSync(n);let w=o.readlinkSync(s);this.symlinkSync(df(this.pathUtils,w),n)}}else throw new Error(`Unsupported file type (file: ${s}, mode: 0o${h.mode.toString(8).padStart(6,"0")})`);let P=h.mode&511;this.chmodSync(n,P)}async changeFilePromise(n,s,o={}){return Buffer.isBuffer(s)?this.changeFileBufferPromise(n,s,o):this.changeFileTextPromise(n,s,o)}async changeFileBufferPromise(n,s,{mode:o}={}){let c=Buffer.alloc(0);try{c=await this.readFilePromise(n)}catch{}Buffer.compare(c,s)!==0&&await this.writeFilePromise(n,s,{mode:o})}async changeFileTextPromise(n,s,{automaticNewlines:o,mode:c}={}){let h="";try{h=await this.readFilePromise(n,"utf8")}catch{}let d=o?rf(h,s):s;h!==d&&await this.writeFilePromise(n,d,{mode:c})}changeFileSync(n,s,o={}){return Buffer.isBuffer(s)?this.changeFileBufferSync(n,s,o):this.changeFileTextSync(n,s,o)}changeFileBufferSync(n,s,{mode:o}={}){let c=Buffer.alloc(0);try{c=this.readFileSync(n)}catch{}Buffer.compare(c,s)!==0&&this.writeFileSync(n,s,{mode:o})}changeFileTextSync(n,s,{automaticNewlines:o=!1,mode:c}={}){let h="";try{h=this.readFileSync(n,"utf8")}catch{}let d=o?rf(h,s):s;h!==d&&this.writeFileSync(n,d,{mode:c})}async movePromise(n,s){try{await this.renamePromise(n,s)}catch(o){if(o.code==="EXDEV")await this.copyPromise(s,n),await this.removePromise(n);else throw o}}moveSync(n,s){try{this.renameSync(n,s)}catch(o){if(o.code==="EXDEV")this.copySync(s,n),this.removeSync(n);else throw o}}async lockPromise(n,s){let o=`${n}.flock`,c=1e3/60,h=Date.now(),d=null,P=async()=>{let w;try{[w]=await this.readJsonPromise(o)}catch{return Date.now()-h<500}try{return process.kill(w,0),!0}catch{return!1}};for(;d===null;)try{d=await this.openPromise(o,"wx")}catch(w){if(w.code==="EEXIST"){if(!await P())try{await this.unlinkPromise(o);continue}catch{}if(Date.now()-h<60*1e3)await new Promise(v=>setTimeout(v,c));else throw new Error(`Couldn't acquire a lock in a reasonable time (via ${o})`)}else throw w}await this.writePromise(d,JSON.stringify([process.pid]));try{return await s()}finally{try{await this.closePromise(d),await this.unlinkPromise(o)}catch{}}}async readJsonPromise(n){let s=await this.readFilePromise(n,"utf8");try{return JSON.parse(s)}catch(o){throw o.message+=` (in ${n})`,o}}readJsonSync(n){let s=this.readFileSync(n,"utf8");try{return JSON.parse(s)}catch(o){throw o.message+=` (in ${n})`,o}}async writeJsonPromise(n,s){return await this.writeFilePromise(n,`${JSON.stringify(s,null,2)} +`)}writeJsonSync(n,s){return this.writeFileSync(n,`${JSON.stringify(s,null,2)} +`)}async preserveTimePromise(n,s){let o=await this.lstatPromise(n),c=await s();typeof c<"u"&&(n=c),await this.lutimesPromise(n,o.atime,o.mtime)}async preserveTimeSync(n,s){let o=this.lstatSync(n),c=s();typeof c<"u"&&(n=c),this.lutimesSync(n,o.atime,o.mtime)}},No=class extends ki{constructor(){super(V)}};function j0(r){let n=r.match(/\r?\n/g);if(n===null)return O0.EOL;let s=n.filter(c=>c===`\r +`).length,o=n.length-s;return s>o?`\r `:` -`}function Hn(r,e){return e.replace(/\r?\n/g,ta(r))}var Vt=class extends st{getExtractHint(e){return this.baseFs.getExtractHint(e)}resolve(e){return this.mapFromBase(this.baseFs.resolve(this.mapToBase(e)))}getRealPath(){return this.mapFromBase(this.baseFs.getRealPath())}async openPromise(e,t,n){return this.baseFs.openPromise(this.mapToBase(e),t,n)}openSync(e,t,n){return this.baseFs.openSync(this.mapToBase(e),t,n)}async opendirPromise(e,t){return Object.assign(await this.baseFs.opendirPromise(this.mapToBase(e),t),{path:e})}opendirSync(e,t){return Object.assign(this.baseFs.opendirSync(this.mapToBase(e),t),{path:e})}async readPromise(e,t,n,s,i){return await this.baseFs.readPromise(e,t,n,s,i)}readSync(e,t,n,s,i){return this.baseFs.readSync(e,t,n,s,i)}async writePromise(e,t,n,s,i){return typeof t=="string"?await this.baseFs.writePromise(e,t,n):await this.baseFs.writePromise(e,t,n,s,i)}writeSync(e,t,n,s,i){return typeof t=="string"?this.baseFs.writeSync(e,t,n):this.baseFs.writeSync(e,t,n,s,i)}async closePromise(e){return this.baseFs.closePromise(e)}closeSync(e){this.baseFs.closeSync(e)}createReadStream(e,t){return this.baseFs.createReadStream(e!==null?this.mapToBase(e):e,t)}createWriteStream(e,t){return this.baseFs.createWriteStream(e!==null?this.mapToBase(e):e,t)}async realpathPromise(e){return this.mapFromBase(await this.baseFs.realpathPromise(this.mapToBase(e)))}realpathSync(e){return this.mapFromBase(this.baseFs.realpathSync(this.mapToBase(e)))}async existsPromise(e){return this.baseFs.existsPromise(this.mapToBase(e))}existsSync(e){return this.baseFs.existsSync(this.mapToBase(e))}accessSync(e,t){return this.baseFs.accessSync(this.mapToBase(e),t)}async accessPromise(e,t){return this.baseFs.accessPromise(this.mapToBase(e),t)}async statPromise(e,t){return this.baseFs.statPromise(this.mapToBase(e),t)}statSync(e,t){return this.baseFs.statSync(this.mapToBase(e),t)}async fstatPromise(e,t){return this.baseFs.fstatPromise(e,t)}fstatSync(e,t){return this.baseFs.fstatSync(e,t)}lstatPromise(e,t){return this.baseFs.lstatPromise(this.mapToBase(e),t)}lstatSync(e,t){return this.baseFs.lstatSync(this.mapToBase(e),t)}async fchmodPromise(e,t){return this.baseFs.fchmodPromise(e,t)}fchmodSync(e,t){return this.baseFs.fchmodSync(e,t)}async chmodPromise(e,t){return this.baseFs.chmodPromise(this.mapToBase(e),t)}chmodSync(e,t){return this.baseFs.chmodSync(this.mapToBase(e),t)}async fchownPromise(e,t,n){return this.baseFs.fchownPromise(e,t,n)}fchownSync(e,t,n){return this.baseFs.fchownSync(e,t,n)}async chownPromise(e,t,n){return this.baseFs.chownPromise(this.mapToBase(e),t,n)}chownSync(e,t,n){return this.baseFs.chownSync(this.mapToBase(e),t,n)}async renamePromise(e,t){return this.baseFs.renamePromise(this.mapToBase(e),this.mapToBase(t))}renameSync(e,t){return this.baseFs.renameSync(this.mapToBase(e),this.mapToBase(t))}async copyFilePromise(e,t,n=0){return this.baseFs.copyFilePromise(this.mapToBase(e),this.mapToBase(t),n)}copyFileSync(e,t,n=0){return this.baseFs.copyFileSync(this.mapToBase(e),this.mapToBase(t),n)}async appendFilePromise(e,t,n){return this.baseFs.appendFilePromise(this.fsMapToBase(e),t,n)}appendFileSync(e,t,n){return this.baseFs.appendFileSync(this.fsMapToBase(e),t,n)}async writeFilePromise(e,t,n){return this.baseFs.writeFilePromise(this.fsMapToBase(e),t,n)}writeFileSync(e,t,n){return this.baseFs.writeFileSync(this.fsMapToBase(e),t,n)}async unlinkPromise(e){return this.baseFs.unlinkPromise(this.mapToBase(e))}unlinkSync(e){return this.baseFs.unlinkSync(this.mapToBase(e))}async utimesPromise(e,t,n){return this.baseFs.utimesPromise(this.mapToBase(e),t,n)}utimesSync(e,t,n){return this.baseFs.utimesSync(this.mapToBase(e),t,n)}async lutimesPromise(e,t,n){return this.baseFs.lutimesPromise(this.mapToBase(e),t,n)}lutimesSync(e,t,n){return this.baseFs.lutimesSync(this.mapToBase(e),t,n)}async mkdirPromise(e,t){return this.baseFs.mkdirPromise(this.mapToBase(e),t)}mkdirSync(e,t){return this.baseFs.mkdirSync(this.mapToBase(e),t)}async rmdirPromise(e,t){return this.baseFs.rmdirPromise(this.mapToBase(e),t)}rmdirSync(e,t){return this.baseFs.rmdirSync(this.mapToBase(e),t)}async linkPromise(e,t){return this.baseFs.linkPromise(this.mapToBase(e),this.mapToBase(t))}linkSync(e,t){return this.baseFs.linkSync(this.mapToBase(e),this.mapToBase(t))}async symlinkPromise(e,t,n){let s=this.mapToBase(t);if(this.pathUtils.isAbsolute(e))return this.baseFs.symlinkPromise(this.mapToBase(e),s,n);let i=this.mapToBase(this.pathUtils.join(this.pathUtils.dirname(t),e)),a=this.baseFs.pathUtils.relative(this.baseFs.pathUtils.dirname(s),i);return this.baseFs.symlinkPromise(a,s,n)}symlinkSync(e,t,n){let s=this.mapToBase(t);if(this.pathUtils.isAbsolute(e))return this.baseFs.symlinkSync(this.mapToBase(e),s,n);let i=this.mapToBase(this.pathUtils.join(this.pathUtils.dirname(t),e)),a=this.baseFs.pathUtils.relative(this.baseFs.pathUtils.dirname(s),i);return this.baseFs.symlinkSync(a,s,n)}async readFilePromise(e,t){return this.baseFs.readFilePromise(this.fsMapToBase(e),t)}readFileSync(e,t){return this.baseFs.readFileSync(this.fsMapToBase(e),t)}async readdirPromise(e,t){return this.baseFs.readdirPromise(this.mapToBase(e),t)}readdirSync(e,t){return this.baseFs.readdirSync(this.mapToBase(e),t)}async readlinkPromise(e){return this.mapFromBase(await this.baseFs.readlinkPromise(this.mapToBase(e)))}readlinkSync(e){return this.mapFromBase(this.baseFs.readlinkSync(this.mapToBase(e)))}async truncatePromise(e,t){return this.baseFs.truncatePromise(this.mapToBase(e),t)}truncateSync(e,t){return this.baseFs.truncateSync(this.mapToBase(e),t)}async ftruncatePromise(e,t){return this.baseFs.ftruncatePromise(e,t)}ftruncateSync(e,t){return this.baseFs.ftruncateSync(e,t)}watch(e,t,n){return this.baseFs.watch(this.mapToBase(e),t,n)}watchFile(e,t,n){return this.baseFs.watchFile(this.mapToBase(e),t,n)}unwatchFile(e,t){return this.baseFs.unwatchFile(this.mapToBase(e),t)}fsMapToBase(e){return typeof e=="number"?e:this.mapToBase(e)}},Xt=class extends Kt{constructor(e=Ui.default){super(),this.realFs=e}getExtractHint(){return!1}getRealPath(){return Yt.root}resolve(e){return x.resolve(e)}async openPromise(e,t,n){return await new Promise((s,i)=>{this.realFs.open(m.fromPortablePath(e),t,n,this.makeCallback(s,i))})}openSync(e,t,n){return this.realFs.openSync(m.fromPortablePath(e),t,n)}async opendirPromise(e,t){return await new Promise((n,s)=>{typeof t<"u"?this.realFs.opendir(m.fromPortablePath(e),t,this.makeCallback(n,s)):this.realFs.opendir(m.fromPortablePath(e),this.makeCallback(n,s))}).then(n=>Object.defineProperty(n,"path",{value:e,configurable:!0,writable:!0}))}opendirSync(e,t){let n=typeof t<"u"?this.realFs.opendirSync(m.fromPortablePath(e),t):this.realFs.opendirSync(m.fromPortablePath(e));return Object.defineProperty(n,"path",{value:e,configurable:!0,writable:!0})}async readPromise(e,t,n=0,s=0,i=-1){return await new Promise((a,o)=>{this.realFs.read(e,t,n,s,i,(c,f)=>{c?o(c):a(f)})})}readSync(e,t,n,s,i){return this.realFs.readSync(e,t,n,s,i)}async writePromise(e,t,n,s,i){return await new Promise((a,o)=>typeof t=="string"?this.realFs.write(e,t,n,this.makeCallback(a,o)):this.realFs.write(e,t,n,s,i,this.makeCallback(a,o)))}writeSync(e,t,n,s,i){return typeof t=="string"?this.realFs.writeSync(e,t,n):this.realFs.writeSync(e,t,n,s,i)}async closePromise(e){await new Promise((t,n)=>{this.realFs.close(e,this.makeCallback(t,n))})}closeSync(e){this.realFs.closeSync(e)}createReadStream(e,t){let n=e!==null?m.fromPortablePath(e):e;return this.realFs.createReadStream(n,t)}createWriteStream(e,t){let n=e!==null?m.fromPortablePath(e):e;return this.realFs.createWriteStream(n,t)}async realpathPromise(e){return await new Promise((t,n)=>{this.realFs.realpath(m.fromPortablePath(e),{},this.makeCallback(t,n))}).then(t=>m.toPortablePath(t))}realpathSync(e){return m.toPortablePath(this.realFs.realpathSync(m.fromPortablePath(e),{}))}async existsPromise(e){return await new Promise(t=>{this.realFs.exists(m.fromPortablePath(e),t)})}accessSync(e,t){return this.realFs.accessSync(m.fromPortablePath(e),t)}async accessPromise(e,t){return await new Promise((n,s)=>{this.realFs.access(m.fromPortablePath(e),t,this.makeCallback(n,s))})}existsSync(e){return this.realFs.existsSync(m.fromPortablePath(e))}async statPromise(e,t){return await new Promise((n,s)=>{t?this.realFs.stat(m.fromPortablePath(e),t,this.makeCallback(n,s)):this.realFs.stat(m.fromPortablePath(e),this.makeCallback(n,s))})}statSync(e,t){return t?this.realFs.statSync(m.fromPortablePath(e),t):this.realFs.statSync(m.fromPortablePath(e))}async fstatPromise(e,t){return await new Promise((n,s)=>{t?this.realFs.fstat(e,t,this.makeCallback(n,s)):this.realFs.fstat(e,this.makeCallback(n,s))})}fstatSync(e,t){return t?this.realFs.fstatSync(e,t):this.realFs.fstatSync(e)}async lstatPromise(e,t){return await new Promise((n,s)=>{t?this.realFs.lstat(m.fromPortablePath(e),t,this.makeCallback(n,s)):this.realFs.lstat(m.fromPortablePath(e),this.makeCallback(n,s))})}lstatSync(e,t){return t?this.realFs.lstatSync(m.fromPortablePath(e),t):this.realFs.lstatSync(m.fromPortablePath(e))}async fchmodPromise(e,t){return await new Promise((n,s)=>{this.realFs.fchmod(e,t,this.makeCallback(n,s))})}fchmodSync(e,t){return this.realFs.fchmodSync(e,t)}async chmodPromise(e,t){return await new Promise((n,s)=>{this.realFs.chmod(m.fromPortablePath(e),t,this.makeCallback(n,s))})}chmodSync(e,t){return this.realFs.chmodSync(m.fromPortablePath(e),t)}async fchownPromise(e,t,n){return await new Promise((s,i)=>{this.realFs.fchown(e,t,n,this.makeCallback(s,i))})}fchownSync(e,t,n){return this.realFs.fchownSync(e,t,n)}async chownPromise(e,t,n){return await new Promise((s,i)=>{this.realFs.chown(m.fromPortablePath(e),t,n,this.makeCallback(s,i))})}chownSync(e,t,n){return this.realFs.chownSync(m.fromPortablePath(e),t,n)}async renamePromise(e,t){return await new Promise((n,s)=>{this.realFs.rename(m.fromPortablePath(e),m.fromPortablePath(t),this.makeCallback(n,s))})}renameSync(e,t){return this.realFs.renameSync(m.fromPortablePath(e),m.fromPortablePath(t))}async copyFilePromise(e,t,n=0){return await new Promise((s,i)=>{this.realFs.copyFile(m.fromPortablePath(e),m.fromPortablePath(t),n,this.makeCallback(s,i))})}copyFileSync(e,t,n=0){return this.realFs.copyFileSync(m.fromPortablePath(e),m.fromPortablePath(t),n)}async appendFilePromise(e,t,n){return await new Promise((s,i)=>{let a=typeof e=="string"?m.fromPortablePath(e):e;n?this.realFs.appendFile(a,t,n,this.makeCallback(s,i)):this.realFs.appendFile(a,t,this.makeCallback(s,i))})}appendFileSync(e,t,n){let s=typeof e=="string"?m.fromPortablePath(e):e;n?this.realFs.appendFileSync(s,t,n):this.realFs.appendFileSync(s,t)}async writeFilePromise(e,t,n){return await new Promise((s,i)=>{let a=typeof e=="string"?m.fromPortablePath(e):e;n?this.realFs.writeFile(a,t,n,this.makeCallback(s,i)):this.realFs.writeFile(a,t,this.makeCallback(s,i))})}writeFileSync(e,t,n){let s=typeof e=="string"?m.fromPortablePath(e):e;n?this.realFs.writeFileSync(s,t,n):this.realFs.writeFileSync(s,t)}async unlinkPromise(e){return await new Promise((t,n)=>{this.realFs.unlink(m.fromPortablePath(e),this.makeCallback(t,n))})}unlinkSync(e){return this.realFs.unlinkSync(m.fromPortablePath(e))}async utimesPromise(e,t,n){return await new Promise((s,i)=>{this.realFs.utimes(m.fromPortablePath(e),t,n,this.makeCallback(s,i))})}utimesSync(e,t,n){this.realFs.utimesSync(m.fromPortablePath(e),t,n)}async lutimesPromise(e,t,n){return await new Promise((s,i)=>{this.realFs.lutimes(m.fromPortablePath(e),t,n,this.makeCallback(s,i))})}lutimesSync(e,t,n){this.realFs.lutimesSync(m.fromPortablePath(e),t,n)}async mkdirPromise(e,t){return await new Promise((n,s)=>{this.realFs.mkdir(m.fromPortablePath(e),t,this.makeCallback(n,s))})}mkdirSync(e,t){return this.realFs.mkdirSync(m.fromPortablePath(e),t)}async rmdirPromise(e,t){return await new Promise((n,s)=>{t?this.realFs.rmdir(m.fromPortablePath(e),t,this.makeCallback(n,s)):this.realFs.rmdir(m.fromPortablePath(e),this.makeCallback(n,s))})}rmdirSync(e,t){return this.realFs.rmdirSync(m.fromPortablePath(e),t)}async linkPromise(e,t){return await new Promise((n,s)=>{this.realFs.link(m.fromPortablePath(e),m.fromPortablePath(t),this.makeCallback(n,s))})}linkSync(e,t){return this.realFs.linkSync(m.fromPortablePath(e),m.fromPortablePath(t))}async symlinkPromise(e,t,n){return await new Promise((s,i)=>{this.realFs.symlink(m.fromPortablePath(e.replace(/\/+$/,"")),m.fromPortablePath(t),n,this.makeCallback(s,i))})}symlinkSync(e,t,n){return this.realFs.symlinkSync(m.fromPortablePath(e.replace(/\/+$/,"")),m.fromPortablePath(t),n)}async readFilePromise(e,t){return await new Promise((n,s)=>{let i=typeof e=="string"?m.fromPortablePath(e):e;this.realFs.readFile(i,t,this.makeCallback(n,s))})}readFileSync(e,t){let n=typeof e=="string"?m.fromPortablePath(e):e;return this.realFs.readFileSync(n,t)}async readdirPromise(e,t){return await new Promise((n,s)=>{t!=null&&t.withFileTypes?this.realFs.readdir(m.fromPortablePath(e),{withFileTypes:!0},this.makeCallback(n,s)):this.realFs.readdir(m.fromPortablePath(e),this.makeCallback(i=>n(i),s))})}readdirSync(e,t){return t!=null&&t.withFileTypes?this.realFs.readdirSync(m.fromPortablePath(e),{withFileTypes:!0}):this.realFs.readdirSync(m.fromPortablePath(e))}async readlinkPromise(e){return await new Promise((t,n)=>{this.realFs.readlink(m.fromPortablePath(e),this.makeCallback(t,n))}).then(t=>m.toPortablePath(t))}readlinkSync(e){return m.toPortablePath(this.realFs.readlinkSync(m.fromPortablePath(e)))}async truncatePromise(e,t){return await new Promise((n,s)=>{this.realFs.truncate(m.fromPortablePath(e),t,this.makeCallback(n,s))})}truncateSync(e,t){return this.realFs.truncateSync(m.fromPortablePath(e),t)}async ftruncatePromise(e,t){return await new Promise((n,s)=>{this.realFs.ftruncate(e,t,this.makeCallback(n,s))})}ftruncateSync(e,t){return this.realFs.ftruncateSync(e,t)}watch(e,t,n){return this.realFs.watch(m.fromPortablePath(e),t,n)}watchFile(e,t,n){return this.realFs.watchFile(m.fromPortablePath(e),t,n)}unwatchFile(e,t){return this.realFs.unwatchFile(m.fromPortablePath(e),t)}makeCallback(e,t){return(n,s)=>{n?t(n):e(s)}}},ra=/^[0-9]+$/,Jt=/^(\/(?:[^/]+\/)*?(?:\$\$virtual|__virtual__))((?:\/((?:[^/]+-)?[a-f0-9]+)(?:\/([^/]+))?)?((?:\/.*)?))$/,na=/^([^/]+-)?[a-f0-9]+$/,ne=class extends Vt{constructor({baseFs:e=new Xt}={}){super(x),this.baseFs=e}static makeVirtualPath(e,t,n){if(x.basename(e)!=="__virtual__")throw new Error('Assertion failed: Virtual folders must be named "__virtual__"');if(!x.basename(t).match(na))throw new Error("Assertion failed: Virtual components must be ended by an hexadecimal hash");let i=x.relative(x.dirname(e),n).split("/"),a=0;for(;a"u"||(o!==0&&(s+=", "),s+=JSON.stringify(c),s+=": ",s+=ot(c,f,e,t).replace(/^ +/g,""),o+=1)}return s+="}",s}function oa(r,e,t){let n=Object.keys(r),s=`${t} `,i="";i+=t,i+=`{ -`;let a=0;for(let o=0,c=n.length;o"u"||(a!==0&&(i+=",",i+=` -`),i+=s,i+=JSON.stringify(f),i+=": ",i+=ot(f,g,e,s).replace(/^ +/g,""),a+=1)}return a!==0&&(i+=` -`),i+=t,i+="}",i}function ot(r,e,t,n){let{next:s}=ts[t],i=s[r]||s["*"];return rs(e,i,n)}function rs(r,e,t){let{collapsed:n}=ts[e];return Array.isArray(r)?n?sa(r,e,t):ia(r,e,t):typeof r=="object"&&r!==null?n?aa(r,e,t):oa(r,e,t):JSON.stringify(r)}function ns(r){return rs(r,"TOP_LEVEL","")}function We(r,e){let t=Array.from(r);Array.isArray(e)||(e=[e]);let n=[];for(let i of e)n.push(t.map(a=>i(a)));let s=t.map((i,a)=>a);return s.sort((i,a)=>{for(let o of n){let c=o[i]o[a]?1:0;if(c!==0)return c}return 0}),s.map(i=>t[i])}function ca(r){let e=new Map,t=We(r.fallbackExclusionList||[],[({name:n,reference:s})=>n,({name:n,reference:s})=>s]);for(let{name:n,reference:s}of t){let i=e.get(n);typeof i>"u"&&e.set(n,i=new Set),i.add(s)}return Array.from(e).map(([n,s])=>[n,Array.from(s)])}function la(r){return We(r.fallbackPool||[],([e])=>e)}function ua(r){let e=[];for(let[t,n]of We(r.packageRegistry,([s])=>s===null?"0":`1${s}`)){let s=[];e.push([t,s]);for(let[i,{packageLocation:a,packageDependencies:o,packagePeers:c,linkType:f,discardFromLookup:g}]of We(n,([l])=>l===null?"0":`1${l}`)){let l=[];t!==null&&i!==null&&!o.has(t)&&l.push([t,i]);for(let[S,h]of We(o.entries(),([A])=>A))l.push([S,h]);let P=c&&c.size>0?Array.from(c):void 0,b=g||void 0;s.push([i,{packageLocation:a,packageDependencies:l,packagePeers:P,linkType:f,discardFromLookup:b}])}}return e}function er(r){return{__info:["This file is automatically generated. Do not touch it, or risk","your modifications being lost."],dependencyTreeRoots:r.dependencyTreeRoots,enableTopLevelFallback:r.enableTopLevelFallback||!1,ignorePatternData:r.ignorePattern||null,fallbackExclusionList:ca(r),fallbackPool:la(r),packageRegistryData:ua(r)}}var Ut,fa=()=>(typeof Ut>"u"&&(Ut=Xn.default.brotliDecompressSync(Buffer.from("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","base64")).toString()),Ut);function tr(r,e){return[r?`${r} +`}function rf(r,n){return n.replace(/\r?\n/g,j0(r))}var Uo=class extends ki{getExtractHint(n){return this.baseFs.getExtractHint(n)}resolve(n){return this.mapFromBase(this.baseFs.resolve(this.mapToBase(n)))}getRealPath(){return this.mapFromBase(this.baseFs.getRealPath())}async openPromise(n,s,o){return this.baseFs.openPromise(this.mapToBase(n),s,o)}openSync(n,s,o){return this.baseFs.openSync(this.mapToBase(n),s,o)}async opendirPromise(n,s){return Object.assign(await this.baseFs.opendirPromise(this.mapToBase(n),s),{path:n})}opendirSync(n,s){return Object.assign(this.baseFs.opendirSync(this.mapToBase(n),s),{path:n})}async readPromise(n,s,o,c,h){return await this.baseFs.readPromise(n,s,o,c,h)}readSync(n,s,o,c,h){return this.baseFs.readSync(n,s,o,c,h)}async writePromise(n,s,o,c,h){return typeof s=="string"?await this.baseFs.writePromise(n,s,o):await this.baseFs.writePromise(n,s,o,c,h)}writeSync(n,s,o,c,h){return typeof s=="string"?this.baseFs.writeSync(n,s,o):this.baseFs.writeSync(n,s,o,c,h)}async closePromise(n){return this.baseFs.closePromise(n)}closeSync(n){this.baseFs.closeSync(n)}createReadStream(n,s){return this.baseFs.createReadStream(n!==null?this.mapToBase(n):n,s)}createWriteStream(n,s){return this.baseFs.createWriteStream(n!==null?this.mapToBase(n):n,s)}async realpathPromise(n){return this.mapFromBase(await this.baseFs.realpathPromise(this.mapToBase(n)))}realpathSync(n){return this.mapFromBase(this.baseFs.realpathSync(this.mapToBase(n)))}async existsPromise(n){return this.baseFs.existsPromise(this.mapToBase(n))}existsSync(n){return this.baseFs.existsSync(this.mapToBase(n))}accessSync(n,s){return this.baseFs.accessSync(this.mapToBase(n),s)}async accessPromise(n,s){return this.baseFs.accessPromise(this.mapToBase(n),s)}async statPromise(n,s){return this.baseFs.statPromise(this.mapToBase(n),s)}statSync(n,s){return this.baseFs.statSync(this.mapToBase(n),s)}async fstatPromise(n,s){return this.baseFs.fstatPromise(n,s)}fstatSync(n,s){return this.baseFs.fstatSync(n,s)}lstatPromise(n,s){return this.baseFs.lstatPromise(this.mapToBase(n),s)}lstatSync(n,s){return this.baseFs.lstatSync(this.mapToBase(n),s)}async fchmodPromise(n,s){return this.baseFs.fchmodPromise(n,s)}fchmodSync(n,s){return this.baseFs.fchmodSync(n,s)}async chmodPromise(n,s){return this.baseFs.chmodPromise(this.mapToBase(n),s)}chmodSync(n,s){return this.baseFs.chmodSync(this.mapToBase(n),s)}async fchownPromise(n,s,o){return this.baseFs.fchownPromise(n,s,o)}fchownSync(n,s,o){return this.baseFs.fchownSync(n,s,o)}async chownPromise(n,s,o){return this.baseFs.chownPromise(this.mapToBase(n),s,o)}chownSync(n,s,o){return this.baseFs.chownSync(this.mapToBase(n),s,o)}async renamePromise(n,s){return this.baseFs.renamePromise(this.mapToBase(n),this.mapToBase(s))}renameSync(n,s){return this.baseFs.renameSync(this.mapToBase(n),this.mapToBase(s))}async copyFilePromise(n,s,o=0){return this.baseFs.copyFilePromise(this.mapToBase(n),this.mapToBase(s),o)}copyFileSync(n,s,o=0){return this.baseFs.copyFileSync(this.mapToBase(n),this.mapToBase(s),o)}async appendFilePromise(n,s,o){return this.baseFs.appendFilePromise(this.fsMapToBase(n),s,o)}appendFileSync(n,s,o){return this.baseFs.appendFileSync(this.fsMapToBase(n),s,o)}async writeFilePromise(n,s,o){return this.baseFs.writeFilePromise(this.fsMapToBase(n),s,o)}writeFileSync(n,s,o){return this.baseFs.writeFileSync(this.fsMapToBase(n),s,o)}async unlinkPromise(n){return this.baseFs.unlinkPromise(this.mapToBase(n))}unlinkSync(n){return this.baseFs.unlinkSync(this.mapToBase(n))}async utimesPromise(n,s,o){return this.baseFs.utimesPromise(this.mapToBase(n),s,o)}utimesSync(n,s,o){return this.baseFs.utimesSync(this.mapToBase(n),s,o)}async lutimesPromise(n,s,o){return this.baseFs.lutimesPromise(this.mapToBase(n),s,o)}lutimesSync(n,s,o){return this.baseFs.lutimesSync(this.mapToBase(n),s,o)}async mkdirPromise(n,s){return this.baseFs.mkdirPromise(this.mapToBase(n),s)}mkdirSync(n,s){return this.baseFs.mkdirSync(this.mapToBase(n),s)}async rmdirPromise(n,s){return this.baseFs.rmdirPromise(this.mapToBase(n),s)}rmdirSync(n,s){return this.baseFs.rmdirSync(this.mapToBase(n),s)}async linkPromise(n,s){return this.baseFs.linkPromise(this.mapToBase(n),this.mapToBase(s))}linkSync(n,s){return this.baseFs.linkSync(this.mapToBase(n),this.mapToBase(s))}async symlinkPromise(n,s,o){let c=this.mapToBase(s);if(this.pathUtils.isAbsolute(n))return this.baseFs.symlinkPromise(this.mapToBase(n),c,o);let h=this.mapToBase(this.pathUtils.join(this.pathUtils.dirname(s),n)),d=this.baseFs.pathUtils.relative(this.baseFs.pathUtils.dirname(c),h);return this.baseFs.symlinkPromise(d,c,o)}symlinkSync(n,s,o){let c=this.mapToBase(s);if(this.pathUtils.isAbsolute(n))return this.baseFs.symlinkSync(this.mapToBase(n),c,o);let h=this.mapToBase(this.pathUtils.join(this.pathUtils.dirname(s),n)),d=this.baseFs.pathUtils.relative(this.baseFs.pathUtils.dirname(c),h);return this.baseFs.symlinkSync(d,c,o)}async readFilePromise(n,s){return this.baseFs.readFilePromise(this.fsMapToBase(n),s)}readFileSync(n,s){return this.baseFs.readFileSync(this.fsMapToBase(n),s)}async readdirPromise(n,s){return this.baseFs.readdirPromise(this.mapToBase(n),s)}readdirSync(n,s){return this.baseFs.readdirSync(this.mapToBase(n),s)}async readlinkPromise(n){return this.mapFromBase(await this.baseFs.readlinkPromise(this.mapToBase(n)))}readlinkSync(n){return this.mapFromBase(this.baseFs.readlinkSync(this.mapToBase(n)))}async truncatePromise(n,s){return this.baseFs.truncatePromise(this.mapToBase(n),s)}truncateSync(n,s){return this.baseFs.truncateSync(this.mapToBase(n),s)}async ftruncatePromise(n,s){return this.baseFs.ftruncatePromise(n,s)}ftruncateSync(n,s){return this.baseFs.ftruncateSync(n,s)}watch(n,s,o){return this.baseFs.watch(this.mapToBase(n),s,o)}watchFile(n,s,o){return this.baseFs.watchFile(this.mapToBase(n),s,o)}unwatchFile(n,s){return this.baseFs.unwatchFile(this.mapToBase(n),s)}fsMapToBase(n){return typeof n=="number"?n:this.mapToBase(n)}},Go=class extends No{constructor(n=N0.default){super(),this.realFs=n}getExtractHint(){return!1}getRealPath(){return Oo.root}resolve(n){return V.resolve(n)}async openPromise(n,s,o){return await new Promise((c,h)=>{this.realFs.open(I.fromPortablePath(n),s,o,this.makeCallback(c,h))})}openSync(n,s,o){return this.realFs.openSync(I.fromPortablePath(n),s,o)}async opendirPromise(n,s){return await new Promise((o,c)=>{typeof s<"u"?this.realFs.opendir(I.fromPortablePath(n),s,this.makeCallback(o,c)):this.realFs.opendir(I.fromPortablePath(n),this.makeCallback(o,c))}).then(o=>Object.defineProperty(o,"path",{value:n,configurable:!0,writable:!0}))}opendirSync(n,s){let o=typeof s<"u"?this.realFs.opendirSync(I.fromPortablePath(n),s):this.realFs.opendirSync(I.fromPortablePath(n));return Object.defineProperty(o,"path",{value:n,configurable:!0,writable:!0})}async readPromise(n,s,o=0,c=0,h=-1){return await new Promise((d,P)=>{this.realFs.read(n,s,o,c,h,(w,v)=>{w?P(w):d(v)})})}readSync(n,s,o,c,h){return this.realFs.readSync(n,s,o,c,h)}async writePromise(n,s,o,c,h){return await new Promise((d,P)=>typeof s=="string"?this.realFs.write(n,s,o,this.makeCallback(d,P)):this.realFs.write(n,s,o,c,h,this.makeCallback(d,P)))}writeSync(n,s,o,c,h){return typeof s=="string"?this.realFs.writeSync(n,s,o):this.realFs.writeSync(n,s,o,c,h)}async closePromise(n){await new Promise((s,o)=>{this.realFs.close(n,this.makeCallback(s,o))})}closeSync(n){this.realFs.closeSync(n)}createReadStream(n,s){let o=n!==null?I.fromPortablePath(n):n;return this.realFs.createReadStream(o,s)}createWriteStream(n,s){let o=n!==null?I.fromPortablePath(n):n;return this.realFs.createWriteStream(o,s)}async realpathPromise(n){return await new Promise((s,o)=>{this.realFs.realpath(I.fromPortablePath(n),{},this.makeCallback(s,o))}).then(s=>I.toPortablePath(s))}realpathSync(n){return I.toPortablePath(this.realFs.realpathSync(I.fromPortablePath(n),{}))}async existsPromise(n){return await new Promise(s=>{this.realFs.exists(I.fromPortablePath(n),s)})}accessSync(n,s){return this.realFs.accessSync(I.fromPortablePath(n),s)}async accessPromise(n,s){return await new Promise((o,c)=>{this.realFs.access(I.fromPortablePath(n),s,this.makeCallback(o,c))})}existsSync(n){return this.realFs.existsSync(I.fromPortablePath(n))}async statPromise(n,s){return await new Promise((o,c)=>{s?this.realFs.stat(I.fromPortablePath(n),s,this.makeCallback(o,c)):this.realFs.stat(I.fromPortablePath(n),this.makeCallback(o,c))})}statSync(n,s){return s?this.realFs.statSync(I.fromPortablePath(n),s):this.realFs.statSync(I.fromPortablePath(n))}async fstatPromise(n,s){return await new Promise((o,c)=>{s?this.realFs.fstat(n,s,this.makeCallback(o,c)):this.realFs.fstat(n,this.makeCallback(o,c))})}fstatSync(n,s){return s?this.realFs.fstatSync(n,s):this.realFs.fstatSync(n)}async lstatPromise(n,s){return await new Promise((o,c)=>{s?this.realFs.lstat(I.fromPortablePath(n),s,this.makeCallback(o,c)):this.realFs.lstat(I.fromPortablePath(n),this.makeCallback(o,c))})}lstatSync(n,s){return s?this.realFs.lstatSync(I.fromPortablePath(n),s):this.realFs.lstatSync(I.fromPortablePath(n))}async fchmodPromise(n,s){return await new Promise((o,c)=>{this.realFs.fchmod(n,s,this.makeCallback(o,c))})}fchmodSync(n,s){return this.realFs.fchmodSync(n,s)}async chmodPromise(n,s){return await new Promise((o,c)=>{this.realFs.chmod(I.fromPortablePath(n),s,this.makeCallback(o,c))})}chmodSync(n,s){return this.realFs.chmodSync(I.fromPortablePath(n),s)}async fchownPromise(n,s,o){return await new Promise((c,h)=>{this.realFs.fchown(n,s,o,this.makeCallback(c,h))})}fchownSync(n,s,o){return this.realFs.fchownSync(n,s,o)}async chownPromise(n,s,o){return await new Promise((c,h)=>{this.realFs.chown(I.fromPortablePath(n),s,o,this.makeCallback(c,h))})}chownSync(n,s,o){return this.realFs.chownSync(I.fromPortablePath(n),s,o)}async renamePromise(n,s){return await new Promise((o,c)=>{this.realFs.rename(I.fromPortablePath(n),I.fromPortablePath(s),this.makeCallback(o,c))})}renameSync(n,s){return this.realFs.renameSync(I.fromPortablePath(n),I.fromPortablePath(s))}async copyFilePromise(n,s,o=0){return await new Promise((c,h)=>{this.realFs.copyFile(I.fromPortablePath(n),I.fromPortablePath(s),o,this.makeCallback(c,h))})}copyFileSync(n,s,o=0){return this.realFs.copyFileSync(I.fromPortablePath(n),I.fromPortablePath(s),o)}async appendFilePromise(n,s,o){return await new Promise((c,h)=>{let d=typeof n=="string"?I.fromPortablePath(n):n;o?this.realFs.appendFile(d,s,o,this.makeCallback(c,h)):this.realFs.appendFile(d,s,this.makeCallback(c,h))})}appendFileSync(n,s,o){let c=typeof n=="string"?I.fromPortablePath(n):n;o?this.realFs.appendFileSync(c,s,o):this.realFs.appendFileSync(c,s)}async writeFilePromise(n,s,o){return await new Promise((c,h)=>{let d=typeof n=="string"?I.fromPortablePath(n):n;o?this.realFs.writeFile(d,s,o,this.makeCallback(c,h)):this.realFs.writeFile(d,s,this.makeCallback(c,h))})}writeFileSync(n,s,o){let c=typeof n=="string"?I.fromPortablePath(n):n;o?this.realFs.writeFileSync(c,s,o):this.realFs.writeFileSync(c,s)}async unlinkPromise(n){return await new Promise((s,o)=>{this.realFs.unlink(I.fromPortablePath(n),this.makeCallback(s,o))})}unlinkSync(n){return this.realFs.unlinkSync(I.fromPortablePath(n))}async utimesPromise(n,s,o){return await new Promise((c,h)=>{this.realFs.utimes(I.fromPortablePath(n),s,o,this.makeCallback(c,h))})}utimesSync(n,s,o){this.realFs.utimesSync(I.fromPortablePath(n),s,o)}async lutimesPromise(n,s,o){return await new Promise((c,h)=>{this.realFs.lutimes(I.fromPortablePath(n),s,o,this.makeCallback(c,h))})}lutimesSync(n,s,o){this.realFs.lutimesSync(I.fromPortablePath(n),s,o)}async mkdirPromise(n,s){return await new Promise((o,c)=>{this.realFs.mkdir(I.fromPortablePath(n),s,this.makeCallback(o,c))})}mkdirSync(n,s){return this.realFs.mkdirSync(I.fromPortablePath(n),s)}async rmdirPromise(n,s){return await new Promise((o,c)=>{s?this.realFs.rmdir(I.fromPortablePath(n),s,this.makeCallback(o,c)):this.realFs.rmdir(I.fromPortablePath(n),this.makeCallback(o,c))})}rmdirSync(n,s){return this.realFs.rmdirSync(I.fromPortablePath(n),s)}async linkPromise(n,s){return await new Promise((o,c)=>{this.realFs.link(I.fromPortablePath(n),I.fromPortablePath(s),this.makeCallback(o,c))})}linkSync(n,s){return this.realFs.linkSync(I.fromPortablePath(n),I.fromPortablePath(s))}async symlinkPromise(n,s,o){return await new Promise((c,h)=>{this.realFs.symlink(I.fromPortablePath(n.replace(/\/+$/,"")),I.fromPortablePath(s),o,this.makeCallback(c,h))})}symlinkSync(n,s,o){return this.realFs.symlinkSync(I.fromPortablePath(n.replace(/\/+$/,"")),I.fromPortablePath(s),o)}async readFilePromise(n,s){return await new Promise((o,c)=>{let h=typeof n=="string"?I.fromPortablePath(n):n;this.realFs.readFile(h,s,this.makeCallback(o,c))})}readFileSync(n,s){let o=typeof n=="string"?I.fromPortablePath(n):n;return this.realFs.readFileSync(o,s)}async readdirPromise(n,s){return await new Promise((o,c)=>{s!=null&&s.withFileTypes?this.realFs.readdir(I.fromPortablePath(n),{withFileTypes:!0},this.makeCallback(o,c)):this.realFs.readdir(I.fromPortablePath(n),this.makeCallback(h=>o(h),c))})}readdirSync(n,s){return s!=null&&s.withFileTypes?this.realFs.readdirSync(I.fromPortablePath(n),{withFileTypes:!0}):this.realFs.readdirSync(I.fromPortablePath(n))}async readlinkPromise(n){return await new Promise((s,o)=>{this.realFs.readlink(I.fromPortablePath(n),this.makeCallback(s,o))}).then(s=>I.toPortablePath(s))}readlinkSync(n){return I.toPortablePath(this.realFs.readlinkSync(I.fromPortablePath(n)))}async truncatePromise(n,s){return await new Promise((o,c)=>{this.realFs.truncate(I.fromPortablePath(n),s,this.makeCallback(o,c))})}truncateSync(n,s){return this.realFs.truncateSync(I.fromPortablePath(n),s)}async ftruncatePromise(n,s){return await new Promise((o,c)=>{this.realFs.ftruncate(n,s,this.makeCallback(o,c))})}ftruncateSync(n,s){return this.realFs.ftruncateSync(n,s)}watch(n,s,o){return this.realFs.watch(I.fromPortablePath(n),s,o)}watchFile(n,s,o){return this.realFs.watchFile(I.fromPortablePath(n),s,o)}unwatchFile(n,s){return this.realFs.unwatchFile(I.fromPortablePath(n),s)}makeCallback(n,s){return(o,c)=>{o?s(o):n(c)}}},_0=/^[0-9]+$/,Co=/^(\/(?:[^/]+\/)*?(?:\$\$virtual|__virtual__))((?:\/((?:[^/]+-)?[a-f0-9]+)(?:\/([^/]+))?)?((?:\/.*)?))$/,$0=/^([^/]+-)?[a-f0-9]+$/,Mt=class extends Uo{constructor({baseFs:n=new Go}={}){super(V),this.baseFs=n}static makeVirtualPath(n,s,o){if(V.basename(n)!=="__virtual__")throw new Error('Assertion failed: Virtual folders must be named "__virtual__"');if(!V.basename(s).match($0))throw new Error("Assertion failed: Virtual components must be ended by an hexadecimal hash");let h=V.relative(V.dirname(n),o).split("/"),d=0;for(;d"u"||(P!==0&&(c+=", "),c+=JSON.stringify(w),c+=": ",c+=Fi(w,v,n,s).replace(/^ +/g,""),P+=1)}return c+="}",c}function rS(r,n,s){let o=Object.keys(r),c=`${s} `,h="";h+=s,h+=`{ +`;let d=0;for(let P=0,w=o.length;P"u"||(d!==0&&(h+=",",h+=` +`),h+=c,h+=JSON.stringify(v),h+=": ",h+=Fi(v,b,n,c).replace(/^ +/g,""),d+=1)}return d!==0&&(h+=` +`),h+=s,h+="}",h}function Fi(r,n,s,o){let{next:c}=gf[s],h=c[r]||c["*"];return yf(n,h,o)}function yf(r,n,s){let{collapsed:o}=gf[n];return Array.isArray(r)?o?eS(r,n,s):tS(r,n,s):typeof r=="object"&&r!==null?o?nS(r,n,s):rS(r,n,s):JSON.stringify(r)}function Pf(r){return yf(r,"TOP_LEVEL","")}function gr(r,n){let s=Array.from(r);Array.isArray(n)||(n=[n]);let o=[];for(let h of n)o.push(s.map(d=>h(d)));let c=s.map((h,d)=>d);return c.sort((h,d)=>{for(let P of o){let w=P[h]P[d]?1:0;if(w!==0)return w}return 0}),c.map(h=>s[h])}function iS(r){let n=new Map,s=gr(r.fallbackExclusionList||[],[({name:o,reference:c})=>o,({name:o,reference:c})=>c]);for(let{name:o,reference:c}of s){let h=n.get(o);typeof h>"u"&&n.set(o,h=new Set),h.add(c)}return Array.from(n).map(([o,c])=>[o,Array.from(c)])}function sS(r){return gr(r.fallbackPool||[],([n])=>n)}function oS(r){let n=[];for(let[s,o]of gr(r.packageRegistry,([c])=>c===null?"0":`1${c}`)){let c=[];n.push([s,c]);for(let[h,{packageLocation:d,packageDependencies:P,packagePeers:w,linkType:v,discardFromLookup:b}]of gr(o,([T])=>T===null?"0":`1${T}`)){let T=[];s!==null&&h!==null&&!P.has(s)&&T.push([s,h]);for(let[N,Q]of gr(P.entries(),([le])=>le))T.push([N,Q]);let C=w&&w.size>0?Array.from(w):void 0,G=b||void 0;c.push([h,{packageLocation:d,packageDependencies:T,packagePeers:C,linkType:v,discardFromLookup:G}])}}return n}function Ko(r){return{__info:["This file is automatically generated. Do not touch it, or risk","your modifications being lost."],dependencyTreeRoots:r.dependencyTreeRoots,enableTopLevelFallback:r.enableTopLevelFallback||!1,ignorePatternData:r.ignorePattern||null,fallbackExclusionList:iS(r),fallbackPool:sS(r),packageRegistryData:oS(r)}}var Do,aS=()=>(typeof Do>"u"&&(Do=lf.default.brotliDecompressSync(Buffer.from("W9TbWMM8C+Z0JwBVqbbqt3ZCHGM7Ilpl6/CsPoaIbxtxwtC465vA9Ga9q51zHahwVFUTk8oY20D38wOaVlVWQTB5I0MIoUCSZ0dwFKQh8mzUO6ZoMzKTVJrcNxhSyE6DHAnniSa0uTlaadDYDOksePV+OxY5q3Snx/NF+cYnyLK+zaWPNkg0wqiTN1/dt3CR+LeTVN2PVfxFp0giqfZY9XhBdNY8+Sp9auInRPEiL1yPA5zcrgRQhJBNJwyEJvEKm3Aa1zzEp339Xt/+9fPVpSTrmfhoFMv7hLyQENd4LYkSeF8UC1xxJE2EGYoZ3bqkgplaWgtNtSPzTO0dAqYWRlE86Z+vkpkg/1eRpMI29GfUWAzCLcH4J039f5vm771ZXRRORgJbMindye91hRhEsRgyogSZgzPw4pc/za/foHEwww7X0jU8beyUUkhBIDjLVWOLa0jvTf06XfP+KZ5Ws96KJeSwlkAfkJNMY+a2rZq+9a5qrVT/SY/IHo+vbMddcXdfKy0J0CGKin1/av/9+Sq6gVM6JA/C0XFjDTpkSGidqZfALadVc1l8EflCaKWlwS1O4tOPfMlYly9+b9PqdNXMbLDeyEzI9okO0e1O0QkK6IA+2qoywn5re1Vf9yyTUjpdx9rWNqWe9C7Q8yd5BgscGfgD283RECbgB9iPb2wdDx2ksl09vvkMOCjYgLThjTAHokLF9kvwRPldx8P+gixxfJV0kjaaKWRt3GijlrBhs9QMHkp/WtkC1W8lWQ7+rM1lgI5IN/GlRNcfDxxIS3c3HN/TyI4c20VOXTC3NPxqvP3gNg5MuvCIvarH67dcj+sDPqTQG1L2TVkgQo2mUkPTfvwP59Pnx+5uqaZt+nlm7lyYG0CHSJT8peQ5ICq2pKLdt3D+/3Lx3vvfDbTtVpJlj5OZBI3jhnQHnFtZMSHQcDsYC5Ot58OHVbk7fM5utmlaCmxDwPJD1DQWRASvVt/mq+NqS6kjcOcHLi0J4rP9YneRUsm1bPX8QiJbkyc4JiM1sgtRQH5Gt8CkoylzAmG6ab/RvwoMIUFYJA6VdO+PK/B4Zbf9gKm0WXKKeYQ89KaWHQ+2dx3S9aMIisWOUOh0m2F7QHmeZGfu+v37lv4reYBGxtlQQWQsCMrZTKFiLcXTVbXPJvr27SZ63HszA4D0z1iA4DfuVNW5Pd09A66ZAcg/wHMgKX5vMlmzcmWJ9WEGUD7TUpLp/y9L7du+FxEZmQWAMGyQBEXKuDb6/Y1dZxVANkmxndcfuzN21Xjv3rif+d6LOMyMzGxWRmY1K7OyTqMMRqgqYIYsgPEiq6jIBKhfBYI9WSDVv4CW/gFl/oD6jtJ4ESBnWqR0RiK/s23G+TX1nR1j/GI3O+N0ZhYbY3eb2c1iNYvdamb3d9vx/9/31b5PWWznIpMamyRWUhtnkrCw9lpntmAuxiMpslukpCrfxpg919xrH+BeACJBlqP0nKqt2n9bPzYuzX0aXYDfsOp9Z4M0/fD/3/I/pZIcoSFUwokbAU133d6KGTkT/G6qM/E5hsUNGDKE1X8M3jDb/7KVpg0z3Xu3AqJQQdg98MRt5CT03oza5d27E6KBuG/vr1c0Zk6VGSgSZAZOMmeOQqcOA1uRDFEtm53t+RjLE6JDuL1XSCQSoz8mx0tCdKl8jBaFfKUIQlN4T6EwAqNQ4BVCWdRv3/LhqEQ4Dc1QLnepL7EIDZ1pHM+DxIm1fhMJKJCBKZxzWbbj+af+HtXMWdoLFCDOCyX2C5kJoBekhlorl9Og3acIj9IpLFVIhMIyfnMP/UJrQqE8h7pWucTbvijEHBlZVubBbf9/JuUl5EVeRcJRYwUbvY1aECkxMkTCKtobP6aYs2bzkvyLLt+LndIEC01EO1YuGo1iCqCiQprxWx94t/3zFwW8h4m+1ydUIgcLeqCDkQOJkjTIMUBhwKg6x/tLygv4fX9P0w3wrz0IggPh3qz//3+9vZZ//zPY2GvQgx5oILAGwggjTGFEKGPlUQSFaCBCkQhSEEEKUgMNNFjJ336u/3/ob+8jzPyvOGIztGjRMBERERGBiQhDRBgiIlqEoUVERBiWWAyLRz1YIvB8rmVeVh+wBKB/5JDb9CbjVxbQIfxbBzknfHCwsHCwEMhMA4HAh0BgoVgoFh50/KZ+zv8fjEKOhHhby9EYVFSKBTvFAhgLlhp7TCwxOTm31Pc+vgAXSCFYHj56UlDXTWUD3/Cvm11UsMf8a7eywswgYQQhrOWAHbRFcIETqSJiraLo3R/jDcdAukUdjoArMv62OjPqQE+jhAQIhBqKtKZ0oQsJXbC13X6UlLIw+afRV+DbjLyXnm2SMWMh6hSiV2m+n7aMvTMK0600qzvkv68xDziFSSqJsOK739Vb0PLUrpXcqOeOTbfSvOsm6s9Hokd1Mbnv23TXmlGtUliKmodk2uqAUw23yneyytb9A7feXmYp7vXy25muAJBM/y/0vm36bMVGlXwt6AwedEkPBfhIfaVM15xIXsgJ2zrUe6uCb2gYnZFGGF3x6LnoY/3inKQ4fXvMm8YW4wyDaz/5DV2yvnovy0j1stZ2tRuWEFZbA2an2PdPQ3KQbelYgFI3NNqgupX3iqFZ3bsh8U/xQwVSCP0+5k3O7hDzuLd67vybzSDGzsp5/AIIi6s/7apYJPcCg+glMAyDaO86cL7rgKQiZOr1xdEcVdeTybCYeZwWxhERjUn+BLnpf2JrGnRDGuKJSIzc/cVaLgcfxMctZW7zhw+iR4Z4Luwfuj99pFhjp2hrco1uJgKDEknus/um5wmNigUGdjnRzfSKQalUORNRZ3sg8c5EyY6zJDwTndv0lIrnH/SlpNL86+vmRuph9EgmRX8hSm8eUlz/QgaVfajytsvqJKzZoGA823VlWdF8f5HV8/tbope8Q8eG7n2b3K4DR3FgyS7g03IvUT6prwLhvSQ4XGUf2axewG7ahFCxRtnF5kx+P6hny7DbkYcXpOOUs89YROdnsUwNmTi/u0aChjMSSyzk8+rTcM+a4uyHiXiHeiRsKQXYbHGdUIbnVuofbIFcIppUlHslqANhZga0Vuy7x4LsiKUU1bxX24Oy2d2xx0X7xQfzTIograFfukLTf/tkkW2yCBaReJL5BXDTlyr/3bOUAqiaEEOLjZXmWhUfTKUYoGZFLbDHi8aXOGWVsAGRoC+hPkxB86LhdlpqSbaVyFXp5APa6F1Ky3LEdaVkmbiZWW/QyKTx32Wy9YsHF2KsCliP38El5KrblaoAxZZWj2NtbmZIP18MsPhHavUb76WhXXHiBdartg27q8Okqfl8KXWMutS9tEsJPJJ9oSPejMZ7RfuPdFKfOZ7ZtApB4xC7ECxvVXwKF5F2M5dnJNpu7kGFrZseBBhdaSVZRfTUZsbn2pLke7X+EYlaqzcTa9XEq71W1hJbOJXR5+tBNM9ZD8PtkOVCq0sZlER9Oop30xQclrui8kGi2yKsZLbI4pj8KYrrD0uq/MZ6YXvQznVeS1wct19Weeup29w011UMl3jeEosAL2gyR/p32ZlilJ2qFWPnysHlx+Wa73TN/C9/fPnjZzfOkz3+HT8WjH1A/F02NqKuR1g/IUy5Qj88ZnJmH+FxH/u+AvlCOzME30TP8dZOyKEwRU/yv+OENHNHzzKdED8jsb60vmRZjK8YKA+yyF4VFQod7mqOtAXUVK6lYc6VgiBFg/oN75px/gRpU5CXbDK0Y8IylY6R6WEEzgTor+S1adEBULXdQ6u0mHDL23LVslHDsOLOjHgHvzZMfwFLrzQc40iGMa3jd8m9STYhcR2uHU+64LOEuNWDMWc2fYShGXsrkztDCZirATQQOFlDkBU+NCOa/opjCfYPM7LaXWOMUZNGnLPvirXY6MLJLM9kN3//VDjQowP6Wccz27M2f7lMjHM05FY6CAV2XzMb6CaCPuSdum10WjBE2y2ntc4RMhelLXqGNqnbbpslIJNAp9UWLodQ2plm5aqRdmdGlhT/ZkP+bQb/Ze4kQDPwywAjQDMQFeewGRk1w8ku84RF48HwfBmAaKg/AAaKejjkuWYoFv0AIGkGmMdTw7MDNP6STxjepB2NlQkMUr62W/Yc+OzCRETT2GmzZimF9U5SVqeyQcezKdiXNdFc/G3GA3i9J5pZDW86zm4NIc+laAl1ifRs0yWmZzkxdyIkzzdCu+5MNsuUZ8fqznoSNROV1zB9CSvTu9LVp89L03vahbsl74OdX30nz09+kaLRuqOuiC06W7NOphbiK6BHFF2/8tx8P1myCWl3Gy2f+AzulJ6eYOzDCLbz/HSDqvEnxty/VjeOluvqu+rvbp5kSyaTBRWKTHpX4byBHGzl47Y2xZw9434fGObTZChe+z6Hk/pPLUP67QBs0Mvme3tKV1M1ELQgR1P1ARhXur4S2lP20kC3Xi4MFou+lLzWj2CnOkXwqnBAGcY7iM1tKdfup7MYyiW1GJShBhv+GAceDcMOZF4NWpVhGlFdpDV4xR3u2CQmci0Wk3lN/Xq2gs3IK1cr+ll2ItfS3Zie0nGrk39EZ5SmFduun5f0mnuAYr+Xi8ztdupxFRsqjq52hakks6IeB9bkGQJlJWEruNfEkLMbIvvrNMFcOdq86NECTSrmw1gRcwdR575A7LZRX/qNGYImjAIZZSHh+WL5rIvkPOvVdaRMVRQoNxbDTlitYoecPND+JQWcgIMvGMf7G03iQA+k1/AfesvTov9w2n/3cb0jkRTEX9I3TgH1T62VVlxLrcTOFeUVnbLjVpda7e7POLl2Xy39whIyY4Kpn0fMCsq4E81Hvn9eHM+4+FL56ds6Khwy3TKL9+xxSowK98UQkjAw0SoNFoR6PFoMoeXu70uofpFwgwtkXKMrV1mfzghXeMT5PO6nLsgfGoMSG7L4mj5HuC2kGk+rEUSf0Eo1gXDU5/LN7hVN5jfn4pN6rKQWgxjdFUgxGi2W0kaipOA3UPc5RQmjMOtnEMORzjcphzglwt8tjwJMVErc6Jea1CqVpGTaEaLRYkOzlpJiwYZqyVnfEhZZ1RzeRIMjODk6LH3JCilIXVJDUbcua/ethhN8Jgf9/patEQKt405vP3H+LaUGHXNb+347jN8NzHpC2pUI1+dKKIiJPbfWGcvQVMT87wSFttUrNeIjVX5Zm1MODjHatQIzkJIjMpAazoErPO5+jNGlvCDj8nLZ3gh/431rq78SidxtulNkaUxMGXQ2CGHY8/qGYq/kGR/STNHH7LQqCncSUnjLFKjtTbFqNPc5m1Q6qomI7tLoGpCu/6WjT6mkOzfBNUdtBp+Nfd8KpU1IVvgiaBp5Zft6EpZu9CdSLpM7dxyMnJ67qPuqmUOXCeRsiM4Bn6KZWbC8M9myKA1kNU6aEqtSfBUVCEJl4qUu23NEb5PYEZP20q6oQ2lDMrT1I/8Ld71Yzqo66YhIu1epkYEGt8Gl13XQ4xF4a0eW7McmdWAEkcCjsc6yjT2qLaYuTBnH4MQr52zLzDjjmXJZK6Nr66yBvefJdRmLsSBpxUXD7yLn4UVXa1hFmZFr8WDwwNbb4ZCRI31puJq0gLJo+g+bmLdRLaRIo6+kHelxlwj1NBEdPwLmyQgPvN3//3C3sfVcMnXlXBauHHXp7f4NI95T7DXO86IdCQXKYZfSYycz/8Y80+6WE5EuilsPE/smUeayFCiZY1KDUL5QYbOFWXNy92Igf7G8p3g+GjvSXsY8TGUrXQ1iLpXTDiuopq++BeZ/EKrL3C9ZXcLz7kxds8znwGwogYWdcAzNhuBVGgCl0IjqNVbdir7tPJYWiKokSlDu4R44s9LAFEc/XGSprto8zmM5i0HF8/cYkSoZQt0YJbMjJF5i9lM8V0jIzIElDaxQJ4XBZld6sccLFrEIj1l/b+Klen86kc605QTEo5jvsIJVnhRZd7lUb1mJGLWyZ1UPf8MMYSUnXZFK9QtE8VKzL+q54YKruYVgzcIPP7XKIQHL4LS1xJxJRQyVlQEIeZ1TBRx37fCgsHDQ8zvKelHKyFSA+rxhlAZG0IZ/07kkMc2oYoXr1OMymYxTZeAykUymGsmNcXJRMeW4ewWL5hp9JpqJlRKLdSVP5qvOriTR+VThH3mhbbI0FAtveLRVJ+VKLB/d5o0jZEpNIO0C7ZGW9HIaYz5Ww9ZTH5Xdu327oetRqKrAqp6A7c0zjvM/5GiGXMByE4vmjA6yyoabyp9Rf0JNih9eXsPy8P6NL0pDj0FuP/KDchvbRWBelmOKU7ReTbhn755sxm3WmbnVCW/Efq6/XGkIMOt0Q3Sqt8e0I2+m7C4TgC6BT+IWvWZnVKbjqdeMHYryxMk7Op/bXIzO4Fy+vOLcyHjtXW8MGz6ok6zkDzv3Fjh0d9EbqZonCWet8R6RpuWr6LzekWtG3/3+WmC/IscRpAcmVxZBeeSPgxrdZPZxZB5onMIYPSGhhSLS7zIpdgE3aGYeSW34Zx8odTPwPw0wBqwO3aN4y1z20r1C62mFmyAcKaD5pO+MrHKFQUEN8orIOxIkL9Byha89ioVLs+MIfQKFx6AGHkrMZ0nGjr65xXk7F9UeMUW7IlbkCvrXl0Hk+nnkLCsJ18W0XVtCmeN+GlIEf8Q3lHqKtJ/a/jffgcVwsjC5NrjyIu2PoFUi+obFFj5e04h2KyREulNvXbEHODGzI0ISowQsCL/El559nkBUPPeJC4fyMqdNxVji3DF/Ry7uUTQEqjIpu9Dh0LvnIAaWaIosIdEL740jjrCANupA9eWGP1XSOCgrttQbYgsz7HJjIFa8OjwK/IpYUyf1904o8F4ez/MGCAoUeSaXXZ7adPQ85vtxwDP4jMrXlPhZ8wAdMrmWy44/c1EphZl7lSiKIPw+OVrwr89qqyLqaOTfDa0Rd29HQz3Nl+ZI/dzo0oLXemGwZF9TnoQV6G369Q3bnV/FsW+PO2ttLPZTZXzTKeNkrYOSvo//ZmQNafLGlInoX9RuMkhLDftIylIcFgCr5JTGDAIzOm2OqAeHzldzivPW4SIC24OnrDrrZnmKVYxJdNfw0eFJAFZtbqm3HtYSm0NxBdefQdTYj8sNyIooQGqbPDGIeKp5EHUWU1t5+tMMVmAea9f8geHCFV/Os8bAsvHLBP/3JjpuxExffGNRVAaEeNnDL5/97EXdYPNiEm7q7MWDOnTCoCihM5qxhk+y6JlX0qU7Qfsrl7basYWZN7rC2C8q9ttR3NwLaIEEIOA/DoulNXoOhJ3ABLHp4Yb8MxPoLPAMaB0ih+m7dl9FXqiD4yZR3Ml+8Gyw0y5/5P6XpQ2w2DKYaVPTvtBFYVMHUnE0g1KW87q10SxavOULloLRKZpMnnLxNCvLzPoh+AWNvk9NwuzacjvVWe7K55cxj2tzf6chDb2ohdF8Bmc1zUNK0TWaoXHdBXKafCopM72mTM4mxJGxdsMe+4n04hHry2JxrOwWU+U8p80H7/ufl48R1Hr3xgNmHMIyYbyGabie3jxl51J6HoQ2+HReuPvM3CHFTaDtDW/HD3/9ALdeq+MMP+ScPk6JGy3omvE5v65qmb9yvww4dPD8a9qAl39HvLZoN52zZ/vaZ7aLJu3ggWxUV0o98F0dcGyzm/eUlXeaUfcLOvvnjvzCif6zo9r4BiHTTuk35gK2ND+upHBUcwmsKJYO4YHxlHE4pVjMQzUMo0GQUzordKNZhDc859aRdCRJG8IT8wSawk6pSaOmnmfQZSkDYpH18To6bd1ENSPgCbttCLyheq0CuEpJ7R5/HfF1+ygN9cLZr+eVCeu3aQItcxq10RMf2noRk8+nAIwCMZWykoNbfDOxBcLNoc0gOxqKmh5DECjsaUnI59dhtq0GQTqy4qU6pMtBa9fUKHziKQ/2WAWc4/B08LNRzhPgvBxq6EIgTukyBGUvMpJk3VtTY3mCexU0yKjTDMVbLcuCUubZ1SWS4FpkR2ANIcIk9ooCOEpyOSrp2tDk1ew8aIpGcWGYz77MtFq4eYkZO5Nfv4qaGLjMfssDzFY3Rci2mP3jcmAE4vpOjcUm/xQEx5P5lMx0WlKnzFLCKvSouL1d4zyJjqtFamNuzD3++3pcaiOCpnKy/5iTYqeZUbYgLr9kVHmPoG43No8SozkKHNGm+GTzkFEcUD6M8VFS/8J3EO+QVVPiNj+RXJdYseZRZTBI4ybAvsNvTKlkfcq9V1xoPkp4gbZBw6khrszxkl0vUcZ/nPvKm9x6HRU4lqPHl9Da+hiIPGU5Batdo0wGHaYT1C2kQ01+caO1IeCresT2tCZnfTW0Nirrsiuj9kDYj+KS3+tOtQxJ1mh+y/0w355/zch7yuUKgmSaqjtGSDvaevdyak6u8zwwaqUcoemORbCqK3mEIE13crg/sy4R2JB6g8oid0dSJVd4sFUdSxFW3lJSpscU65baFMUf76an5YPpSmLEMawQXIpvQ0h2MJezuoPjh/3gngZ00745pzl4dOsDpyzkefiGzPlES0bDGucdKGtGX83GnMHb0qTFzdguUzpCZY1QVqM6qVkckqmgo6i694K6/dIL8thVNK0Yw8s7CvGQ31JTKSWXtU3MGHIxyU/D+B23qX6Nbye+qSGyUt+moHZ1mGtNdvRMbVouoVrn+W36nzhE+CisHuv365AH0RWR+qNaOmeD846fK+Pic76G3TlJHmN0+47XkjrC9AaO4ryoNOFoJo66x10hdmZFtrspyj5cBOwDOd7g5RCWr1XIbXArfwSq5RYZUuJ5uGy/zi0e+KaSuliKD3wsYg1AfuIfhqu+XKQ3zYum3QyCDZ7yTXNzIvE5nrwM3sLoHd5Q/EiEpz0zjed7WMUT9/LMPCJ41uTvuDWG2D8bVK4oRHVtsvAotYc6wNLJnt9QMmTCZO7Ni2M5crFXrr9fwgQJVop70BqJ+zDBXTTcUpnhVa7mz36PxY74KFmro2fJJ/KTygOV2dZJm4HR/hsVr1ic4Dt2ah96h6aSIr/nFKxXGItwlJ8b6bpueUpXfv8ZO0e2xDWuqXCKEzcD/U5zf9C+AENHo2VzgYPDCVwfnrYWdjel1bTG8Vje9wQXlMvhDk5DXOCzte/hdaA3WGiWcKuI2Kr0dvMITaI6FWrXGD1Olidjj9QT3+Ny5y5mBMdJ536+0ajzXO8XE+zDL2OW4u9yf3GSajN6vI/lyaEsLWm44ukAXcrVK/WqcerFZfzMZONuMYJ7Ux0KqP6splKTdLQi6juttVi79ZfDRbbPulsa3Q9ZyPNsC46PoZjMxFUvqnUxLaqu91RdUlpnUKZMBmDsb+CAblHsae+CqFqno+4oYL2k1o3VomdJWARITwPh/q5byJPbOenUE515eFyEbEvEaeyFhzUxlsyY2crF4YK+2Btm3l1sQ6yfm9m3ejbqGpaZL25wK2ll7om7bFxPDeC+BTID81fN0fHCs632ybDlHl0LGsp6J0axHhHxHYM/QBlMQeeorKzchpeoO4YMHbUWARMS0gihsS1VTRQ3izFSNZF51Ph1l048ObXIuugBCPJiV95oSBaMbMqGu5fOllnYXveJcF4PsznGwywRGZhlCyLI//1E8oVVb8Bc/y0HazMAtRwCdG0qIHb4LZ8dXukPg60Fe/Q7Oa1/U+ipynu2j0EArKijla7pnJ/Fiz78plRSCfzWMdyF5+QiCT7gxTPuLp8QzeWXmBPLiROJMY0Ly8pNdXAIamha4ZIQsdzVZa53c0dq6ynAwQ0a3nF18OTUyLAHTwE9IgvEadtZWE5Y43g+yY2JxY4pVLB+ZbAfNPLT7vtMw7hKibZU+WuuI3wYFpps07rMUg03XjCdRRrfwMfazjdleVmLZ2KU1OnvQCyF7UX2oX8es6Lbk9V9RNthE8A6cCRzMGg8PVGP13bns9wFhguyQMhlE/b2RgNWXMV/ZolVGyaXi8jT+YzLY3U3x0Ne1qwDu9h5ZOW8vjVMeDBo291sb1dlvUic0hVigXML8ulUNKGjuY6pYmI5mjj5K88h5OTp2gad+5IOzQvCicR2B3obRbbduwhcKmbq2IZGOQ9bKVxLmsaDm+kdyy5rm1qDmbDb7RR0/eZy580ilzcz8/nS+3vGFyMepsJ3lo3SyP2HkWc9//1SXrzf5GxjMmOxT4DTXhmp9gsgHGWVPS0/5/BZEmpFxCwXXDExnayKUDnsyR/l9ko+hwZJqBWmzB/VzslGRnk+0u0yt8LtrTGXZXsX5OT48LpirqIP/w6Y68HlHmIa3Z0KPQx4HBb9Td14vTmTKluSc+GL069dM+6RkJef42zpbI90sEoKFZfnLf+6wG0fcPrWrhWnEGY5bJjPD0Il5NPNQyw+64YLE1GOdWDvlNcK8FdzhqP2YVleo2QzrLMPy2hwRZWFod8tx8hXuOmJPqKyI3kPnxWFXXu7t9mxp3sgQX2bJd5MCfTAOZ2Fq0pXUv+IYrT+Da/VoEiIaMOFa6F1/k9ir1TjcoIdCaUi8dEZsibMX0WcCHL2WzKbCjM8nIp3KBG6xtsHvGBtTgZUkDkafKnL/0pLw21xvA4z1qhkN0tLCzrkbp2vzGabX1qOpRVCbYZfUPS2WrCd64Hoh3xLk17WAw/diOd3+sKlr3YP/4ZfjbK828SSPsGNBk3usz9c4MZWFMg53IJcaVSO7Qty8eWk8+yQ97my12X4jC5HUbUUSb5HcWLkl8rK70K6ySWDuYeuzxjcyIYPFrn5pfnhlVVjmIjhc4tcM6ZS/eNdg+oQi2VtFq99c4WILLh1GybruObgHuub0rFkuDSN4cDLtMe/NNSVNlCPjsPL8IWrtO3zIykso4YtWPRY9M/rtRZ/zR5sqcYUZpPBxbFiCd2fJ0FtwjUW7RYf7DnEDPbi4Ly4SzvuCEa6dIMJ7qojWXztycN2GJut7wrgiyeiUVIqLIG5G0Yu3WGXzEtk3IZAPmP7ei38sA5zZ6Uvb4tza7Ax9xji+fu3Oqdu0RzKN0crczGcomqKroxnpXyTAz0d636r8fRl4jLV8Lu7vo2oB6lruN/UlvYMMLD/OdF91cfRcGsRLxs+oqc3tKxZIL47R4JNFGQrp3ZjMlbWO6alj2TZuHsH9/xKrpz0pcytpFCdbVRDJvX3+OybopbVINuQrD3TwSpWSgPv3+mCjCmI8Itcfd6Lw4mr25G2V8DicpqDrYKeKsIKMR11fZN5dORzITrCBbck3Mx0bptvjYUJK09UrAvVCzvzuFEL9k6u4/CylFita9WCyxiKvfqVEFkKFFrjziczGJGtDb1Ebn0e/onFww/oBeEOoUo5jfDWJLBF0196BDMCVuSmCAFz8KdBFBC68r5XL0u9T3+nlvEj6R+nzYnylyhjKtE4/Mh0UXw+oNWHyQRjrkr82GO5hrkc4z/zq6rqOuz9UqmUZK4J/4ZrB8hyQejzDdOW9AJCrXJTC6KZR7WhRcmz0DNQiHBJAzRPiG14+/iR0ugLqgWIc/3GkISmCfuDrd3T6EaM9xNxz0LAk6AMPO/WuRJ9b2eMyiBUSiijFyxHPzttNHTZa2wo2bgtXY1B2ydPUM4u11zUKZKyCsdJpr6T9oZUMmTx3JKOTET7TMCZgbm5TrPGkiXlEdVNZhkTKBc0k9f3D3pRGIw7HHIc6H5oBehTizMAr+jUeTUi13LIVYkcHregP+4ccqtkAsW9oU0wyxIV0EeeTCJEcs1GbMjDFOK8VYaAN5nYvds3g//Bl24FixlhMVKhtD7hPFtUYB95cokQybWdsSM/05gUtF6TJLip9/Nl3SSz28dNzsgVo0bm3hF9ZycL+4s7ZzOYgjMXem/OJJju+2deUh8k12jbVKtqQaCTlR+qGbZzOa4DvWclNjuFSBCRQbTkfmf4Ze+pqkAJgT3JX7e6a4ieIgWAwCjSXM5k78N41qUo98AXRAFTo0BBNNrBVmVG8s5l4oj1ANEaoJDhwq5/kF2Zi8eNsYgWEmB3ncaNjF3o77FLivhrIHJ9h1yfCD5zk6Z25GgDdn9MIT7r7E+3TwV/rTK9RlN6DTO5bnoc17E5qhbbN4R6lpUOPYuz5RJApI6CYY8/UMlnEhyVgzs5727yiS8owSDud2aG3vecHOKgz/bMTCrylCsUd2wriIn5cI8cbN+7isQi51sEaptJcQPPmAVMwt0Ex182LE8BHysTxQvKYJybCnNiRVrC6M7x/dTVjTBPuRB1NSGtO1vTcBwntLHo3pt6Qosz53EwiRm52tBLNnGMIVM/brEZcaJz4od/imrBFCpdYKknA7K3wTaa7kP8PkOJ76v0VfmRqSTFIGKs4DEkaUOy1CF2EwoE1mJUy4XNxInSJZrjAPe/M8cHsn9jkdRIa+Y3kd6+/WHx6XtlJGC1pcwuO9JrWP72jIvHboB7K2a2OYa0NyfZPa1HuxfFgvETubtUnr1lCPZC+4v3hrxHQteS3JNk658YgdQfXk8+Uwz9TtbxqckhWteQHy2t6VjgXxtoW7Gt2NMheNteFockCm+DqhvnF87vwgTH5Ege24HKFY4uEzoPXAYUPn7Bo5jTUcFzPRkQClARTODRINKYbw07wdirisSBek2cKrZTnKRaOpmE6URups9t/cD2p8Z42Zg685PKbja+JeyRd6sRGHtI3/1uqP/D/bgXld1Xo/gGW4WbTiLeZ3orbxar6ffivrw6dc2YXbnMbaVYUk0zXVm2jtxjDcD44lgHcG/7H9lLBpPNI/31Bx+Qg6w71A7CdLokkIblY2D1UBD0ujDJ9mWgvukdcVDGyYDexNVdV3JJLZ5BzaDWZ1ZXyPxB7plx5x8kkwEILQtkJmEnu6OTLx1yVyIYKIBZiw2JbRvz63cKJt3W8TjM5yfme3DoOhytn0cYe3T6uiRZjTiol0fcP1WkxsLEZMOYoukRu0aGg0jfQSqnFJYOEvUSdh2m+jKvyXoQLceMjFdD3z0KToCqxAI3KW0zGxxahZp21nZFiyuho5ymW5d4THekQkVteE8yK/FQD+tua6kccn1BoKMMPw4LiR7Uyg5yy9eCnSv89NXtacsq1nv4zY57Cnkl9nPn1fVsrTvrM0TkVon8+hxyW0SuT6Tugam3YoMHxCcPWX2vTtgKgb7UI1I0rEYTfY9RL0i1SSg8R/VKGnw8A0XT6Hujwl4P9EoYkZp+hJrpe7rGAlWbi8bjVR8fbErimdNqJckuzHQt9r1qAR4IhBV72eplblxLcROjinmP2GnKl3ryIoUHEkmUnr3CCOFyvILE2BgSa0Fh4NK1xnWbU/qlswt/PdBzGb9pymcKgipVf/LzYrSO5bkc0qoSX+nTYHs8OefGU4Pg4qv1aYvCcbko9M8e9RKro1DrR/se9trRbhDXzxCvQ977nn/VQgm8+NWKGZyqwPMWaKmxhj7PV1Vd6h0CeuXdOpErOuT6RPobEPRq2+Or2ISuR5sbvCB1LXU3OaxvQ9vZngAAVwT9bRwUpFFJku0c+mZcHUpgvN5Van/LiMcAogJLtpDo1W28Kpjxdq9j/E0cKvQWzspEbOR1sh7aOylyzGVdpzSiTQDnn+7HLkfJVBvxp1dZfYfCSqUqO1Ll02DBZgflWJMefWa7sG1o7ObR/SelLw1JJlzdTeBBkDu8/fSjFIWYG39POSfuSjHW9tXyyFX3DZHJNq8rsJqtYD8f03I6SMY1c8WZmVGvxs/oVWMF0wBIVIDAp0an7QMUwc50mtwn+uvEwlQ1JPDbUSsKNkZdoJG2LxBxKYCUB0XNyn2CYAsos9b7BgE8qDH1PkJ1HXpmPKrrdk+Hy4aWlCcFjF2624YxDj0gG1mbyIVj/9B/NMnL0cCml/aNUG2j2jOo0qWoXWBDo4rFnIYIa6q0dRwsRqQlYR1NH/3l9eJYd+0VXZYrQYgswp2Xf/x2EjKfrf1eeDbGdf/p86C6s+9+f2unVc2qnzsSU4JEUKSIkPoqeqepxxJJy1gX9Lyjw16mAhkcyph6zuZN6Y33u0SoxX65Dv77iUG05j5mgozP+bcvo+euqmkETDR5+fTPKxLEZbLpham2fz/LmrRetIHDbOKou+aRzSyuFtuEEK8FyZ/hC+s7JtVQ6GffCmtOnXMj/UHbgKBIYva9PtOJU5ax/4giks8x2RRnotQlIKPREtz0iunFcIVb9RVJ377Xks73yoN6kVql+aIV+L2H30FTER8L++4l/aPl7pTo6vBbKB7OQDhvM5hcmUXlfopm2GTRKMzMWuHYNgSuby0gJoMCy/f22FfDdtDJ3H8qqoiVvXmMAL/vs+/OAkM9A4Remb11rGdPFVAHU7f422hwH2kXBHu1y+QzP2SLemUx/48Lxp2irTWS6eo35DJjfdMER7kt55mtbTywvRF0QK172IcfY2y6bdhb62lgKvzzpGKzWvjB1Sj26ra5+skkuP41Upt7BFf52lQUohTro/gU+kdFRoNDqGnjbl/znI2gz4PMfxatWA6vjnq48JISpNIbBq9GuUW7ePX1osBTUicywydHCIi4QMV+Fsy3L7PP93bM7LZPrL5ZxLRnNwlL60hqii4P2I6luNf6TaTzhDFBvhjgnpdLBXePTz7jBtDn/Xe39vCOI3US5dLcfkHL/edyfLDixCA8Qhxs9xgbNEfCtJ56yUZWdeB6fZU0g9yfXxcm0nR9WMKLco0MJ9k43K8OwYZh2WH//mLFCyZYS9eSPZ/zYF/TeZdGI3XU276lJPXPVFi/ccqeweAvBBfnro0IuGqNpPbAsN0MBYSkPu76iUFEf3GLszM16MjbVSSY6LKAcoGWHvKht+hQXV+FsFxIjV6GrtH2QxT417ThWWVTnn/CJbv4SiCmX58N2M/vPd7gF+YG0S+7bQRiXvl1wgfAtZcjrdwhyfeuTIULj05lLKx0abgGcWVBTo/WGUiv3HK6+fxt/v4R+vl6zC2fqffrKM9o3rB+EKQeTS1Y9N8HnUt6xtX3QTGdYpCwOHWzrLkAD4WoL6MHiV2ytIii0w4U5bZbuVkI1zjonV/5yspDd2zuxyHuJgFVmsudW1dqkt2dNcQ3DEoRwzxYyup9TMhMbweEtI/W9xrRtwBHVGIVPKVQfE2IF72xco56vUE/ALBp7aGj12FCWWNETzAvkuJgGr0hM4b6mCffmcps5tdaUYewGEIthxMeu6afr+X0F79u2znLVlh9wUem/uPl5GqD+JmgdFUaQqCp78h5BosbJXIlIrfnkFshciUi5YNt9GjOYHF08JahCO/Q/hMU5Sjkz6U17cABKVBZYCE9SFnqAdQ9gEknKJH+LCatAtArl6YfAEnfFopMFm8Rg3/UGv6pBw/ne6pI+IEz7xmhehXC4lQQ5kINOlOiD0GlNykltnKzAocQwKgfwkpvXnLyKhMDzWLJRCGzUuOC18di/M25FNRrSE1sFtlSqrSj4m+w4r3vX9Xovfl3SvX+4vcus31jo/idllz8Viu+GMB74PPx60o19f4D8qH36YeHStVrbf1ixsV7xf1L9zbQoY69lz0oWHM7iRTxrfHiYPGwQ4M7qu4jJ2n65ANRADf6EVI7rBzfkAag+cjlvAWduuM0W41AI6dpJ08j3SNsG4w3k6AwrCC+8bZb7uLFsMKffejzs106X0SV3sN3N8y9zxn8KkVb/wYv/3Gr7qTfClWMQqkKYxTRhCeN7ldHGvk3bTRg8B7J4fnz9jonh/BviZ+YvfewNq9val9pLkJ5GpEf4nWbjsbIEt82MeZ/qsXW8iMyz/4gHmWpHiNFjKJDv3J8iaT8dF/9H63KF7F8dKd+0e3XPfI7ZzmfXWqj53uO+Of/Sp9CPgjGe5Vdwy/ZLI8CzASYi/ZbenGK8Yrhc2FVBMyEe4LkV4Q55KHYnMK9YvpcuqYakYJ8wPqBoGHTpFKOfih6SfrdcGohU0VPfhP28LQOwQPS1KNk7BEGdI1HnKdfSxO+zOtdPsbEwwtS3ZXQWxSK0obelLny92cnsOqjzRbqTJ3AQshHh55VUMtHNQasa/7X6/cPar4eKHp7/R7Zeltmk798UTNnZgRijoLw1LqFzg4fjc0zJt+X2u/oOmHDgPuyUXhNjoK7aDTmoo9CfHq0H9xZ3wQiZnKdQ7q1DnIkXQVAVAigFAPt/tN6ozU46/UIHw9Sdv0DrPU6LnKQGRvC/aLiDHXG6r95IlcncssOuT0iVyEi2QNcr/uUpdzYUO87w+2p1wKQVgPo9cH/zT4ZEZaLgdcm0556LQBpNXgNMvVDmctuZdd1WuUtr9giGyOjC3oe353sVnOJh0jfUK2WUXygur77NnjLK73ECCA4ZF3Vras8JEbPScdAc1C7vrrLHPUwZmO5A179A9r1hi4xEEFPtVVGb+jzWOSc5ypGXigQmJFdC2S0lfpf7+wMSyIhN30c2s24pV0mDlVhHGJ5XHRAu77qKjz1xoNBBODSCu+u12VGW1SdnmRNov5h8nrn9RKHxVHYy7bBxGUYGfunXdJr0NM/G9T6EUEMrLy3v75VDbIXR6L/KHz+ouKDMqLpbDEvi/dZFh80oFcCpCcrIqcPTfs5caywlKj/AAMNiEl3BO7TAAdxZFVmUA1TERT6mP71k7bFSY34qXTyV606lxyuJq1QMIpg8/nPCLE7+QXAkDiCTj88m5ittWD7D93r6fT9wGmQrSIQQFJum3ADKidJc/fB5PKqmPxD3m9+UX7HgUKcZKN8q3Qn5DrqOm5XSlQzNbc91++tYNQ90qk2ZKLHpuIByJVXZt7dYPVkDGN91wW+rAWdiC8X44vJ16l/33Gtltcyx4izZvYKvNAyODMi2ZJH2+IiHQc2ajNm69ZkcUFJC4vE7oluFFTPCruEEafOksm01zpk8YDy4iw4ur2fRclZslxiFHW/YdMBhaatcu4N6HpDKQdfzomBa7/BaN18HnDVfJL8KjHLb7ZTc0mfiVc+3y/ooB2YNZF9QfdR5ks9+v7xcMpDTjeAjkq6o+qEadxbbohNwkgz6dHkS2KO7ipdnZ1x1gwjTPOSiG93nICHzwA+PifIYfDNFJ+jbkMAOJPKw23DvasQXN0H980gLBfzJT4sQEw43n3E+2SMiaVpj0v9JvUoEXhawJ2u1td7hthMWDBZ7N3/LJLLS08TMIh8sl6usx8SobaHSfq7uLqyZ5BfpeU5ON1JsV56tfsgzzU89mjulGfRVjkJ4d6hGyYjidDo9vErr3rDahZf83nSPMO9C3XrJgP84OaYrz9Wvs+0YBbnBlgUeohRdzHhevJS5ilOr73eP9KwciyDQNCTZm57WEQMJ3Kq0Lo14DQFuZFsXRKlVXuYQZhjbJk884GpqCXqYv6/yZOTNeZzB41OSB/uVTT4kEj165TQC3dGXTWwG7/QaDmJXQLLds8a39ob6BlC4Ld6UHKJVE1Aya+qV1sNXfhbeinRr9THLUDBNmbAvCUQAepY4lRZk59oWbKlwRE/nFIkwCkhxJ9JriaBxOFQPvuUcYM/U4xO2QwpVpDB1SjyPOEpkBNm3VeBZzwQXmiG+Un3sMrRc3ZBDZTbJZMYT4SQ53d1yyIDCXJYznLIXyESIISvnJR0SnBLBlRCfZj/4YFyyl3/oW3M+v3bf9iqoUGNtwFR98d0efK0nSeLEs3gPQ5dRU/RKt7/Y+hG38ARaJ7NJK/frzi7a6j/qGhpE8nK2/eRHl99dV62nAw/61tn6atzrfiHN+dWVTfeHxXnD8rzX3jGJrwt/7Eib3uCC8jGoMhuPYg9LfqWyESY6vEFsUHM+lUZfS6TjM8GlXL81AtM5mCSbIvEyXcShmja73Gar6HDnUrscu0ZrJkUntEIENCZ27Pak52aa8wJQWsvMCSADXj47Y1rezhp9/XqJ8hzTdrP870wYhP9piZh5zp0lWuXBeJTbN5EFpFDsnv5mjFRlLzVk6eItdLqp/e+XQMLdvUa4uqHPcOD4YcbGrm82bKdO1ecQ1BD2TkuW/422gwVXue2bIqZKXSbdPk21JCb0ekSmx5n7YLlfJfvsZypd6WUGTTLNEaS5Wyz1F1AxDe8VZvOD7It4DVXFSZYW0fMY/YRiIbK1jzO4/VtkyH6iJ/R8Qpt+CFJ6zbrdRakG46/zLzci1eBvdycNLTTs9zZEXlMF/aMaIO+QA4X0NfadVYFlMGbjH20u3vsc0RrJQUWj0shWsmmENmK03ostCZT9WTLe5VjtpT5BmllkT89tLSTYuJHrA4dyWD6t/ZJuJFXyigzEp8S9v+XSN5FdiN+SXyl0F1LLpKP/bZgHgjubbPeHKQScVGhAYd/qYT6I8XbvQuFnmH9O1HIQq7pxMpUdPDjB5z8TjZ+6T7POIMq3cTpkzqXABnTVncfE3bTB976tu73L1KJ/C1MjmOKh3mvc/cSOaXr9xW6Kxd/eUwGh0/GrBge61K5SJtL336w09i7QUuYtKl2yt6ICIIfyMCt+tDqSI2kv2Lkn/Q/y/Rt72dpuXpyJyJsnED1qqjA4hXygHv7nwg9GpkoqtrKsHgxf2X/ORavkIb7lWH3a6r3Wt3S+gNL7dWnEpkPYVXWue7BumbyopTVJa73VVPD1D4U7ZTnh6hwS+N6vWcbOiyrcvjx/nZZlqXNcYnlByfLZ0NcD0Fic+mQt3HVUBBAP8KV6315XgE/YyEL9RMjGlnB4NDoOq2rNjurM0G0/2nSPesKAlg6dWUWTl6Z6fL5bcocqLsQQkwuEmgAUJIBMi9GoKRJrbzvjmVAVC+wEElryf2PGI7krGksC6j6f8I4r5O6GO+ZxF/NL4rJerNS92KJJgFnchnVM9cII7louB3QXTk62VrJZ6SFIg+tN82DgHeEwwogN7365Dhn4qTIrSvHwUB62QDuGdImoI6eToYmM/lv3IxC0yU10n56X3uso7JApjW9nYiEo/m7oJbtBuMZXVswI9L0CoFGyITmGEWfhz09Yd8X5lqthmqzd1kZMJ7nGIGCai3S/bkgcTuVCtnNTh1o5nOgEZpOcn4XO+JeeCYjJbdpwhbbv+cY2j30lw7cC9u96ep4ye5MVePRjWwijs4j/FC/Wh7X7yrc6YZmNRQ85v9Y5KlPDnzwdu0esuOsY0h5ziV3gjvgs3JFSgb3tWcXLYdIHXir2jbXXgs4PlZ6hoY/wrZtrHGHIRigADe0cugp2glKKcANzcmttfgDNZirJIupIZEbrFULMrdII2iNjghkZIMISjPjXwNAzMHkbMMA9NCaM3gE8Y3HStAuXtYDHyhseP0gZNrT2C1X1+9jq70NOdwLOeRrZLx4lKhZ+XA4urXU8GauBsp1Qq11EFqI1Y/NRr2oMvBc2ZyaC+QzcCyJlEleHNTJXk5y0g3ndGU8Ih4tvLBaMYJ5lVaoaAL6Rit1BMCNuoy5Pq+bK20lQn+ACr7QjTPmdjApKFTtJ0llMGlLRPvZIqV00hochsI0eYYcewxyQTCskil31F9cJ10q9FBKTwsa9sxCAHkJCsjU9x5tizNdGO6Xr4fwTQnMkYek99WKLHbSlpmu0Fbk3DFpUrrswDuxwpnBD3ngMaARe7gDPhJBHx7uly0XH5vaeTL8uCEhyoWJJx9zIJ6hE/Zz6mLvCPCqDvK1I9nrgK/pw0vRCOmFf3CWMK1VOmqVIsWdK12O/KX4qd20b0U56pUcmnx4g6fYPjd7pb0OypyjQFL6Yba4c0AKE65A83afJB05SVOQ+QJGggTAiOwpf3qCEwsjGjo6CpOLR/E8b8PQ9ZcbS+CgtbAB4Wj30GJD5Ur7F+5czZeayDAovDwcWpcSnnFrx+mooyYc1qJrpwR+YP/oCk4b8KNrePiIkLwj68HkXphTQsp/9zquP/aprc0/jI3UDuvdpsOdWKFwMn5Xi8V/cLgXbAfi09cvhjyLL48uMUWQYYQ39z5JjcefeHw7Ffm7VGig4eFQn/Llv5xih0Uvak/H9XYFZ8ydhe9Xez20dnb6abMXNNwyFSrcgc7PbbMyPEAKFvio0aY7ws16oYmbFYQSU4cCYXJuWQoOGl9MDBJ/vCFSsgUsj8C68BCAmk10pwMwzu2V5xOaxCfLzXUALLW1PuDiPOa8xAmujg1VxpxmAV/JPN/wFOcD56Nd1hvyIc14MJJCqiWTYCc+n0nBU3wkjijxMa/BAFqcBYex6o0c+A4aaBcJtLmSQMFfuT6PLUg4s4qAb1hCLInz0LIyCyo4kwBoE8oJI/AonyjqpXVjzYJ472ZDO8e7m1X83fEsL7fVQHaKfKgalHfrCmSCrHsWMI6qHxxtJIfcVq9lf7x+ZfI6zhyVN84dWJ7gdEVVY4lv0jDJVEnLglxYyvtru0GTa7ocf3BFx2NNyBFsRSLuG4SrLnTkq+FBaLlQn/BDFPaqvYnebHZgiNUbvLO0ufUFmKAdCvJH9QrWEyp8q1V1itaYh1g80k2GZmvoheqcuAZfuDfml2lI8j3RDayCdZLnSsCjVppJBDWDp4oVc5JLF7RB6M2SnBKSaPH5nPEWx0UdHbNqfefV69fQTb7FAoJah4/Mznva0JXlXU8JpYl9SiMqmLOyQSTtUjpFO63Yfj+dr30UuzbS/pqLGiuW0ciC6JoR/S9hljW8PVLhG71BiYETs20FKVmPykk4P9iPUuZ7DsXoadwg70j+RP1D+mTxu9DwKyxNS5DzX+Irkiy6X0r+Brj0//LhS2Ow3AKFXDFZc8vNvT7vQZOuVEWE8uWn2TqB/e5ZeoNW8Ty9qi0N6cgmR7R9MleQvpIXHmhhYxv2ie1wO87dotYsHNZnEon9a7kAsrj1LyvrKVhRT2gIjfb9nIwVhmrOLGyrnsJTK+nFOod5VSsSyAGtS2XRAw7cuLDitgmAY1is/+eP34WLUUMviRdeczERAz4cm5bF+TgmSK+w+Q3lQjg8t2JBPK34BetCg8LPd7iuL/ioGBsuvOCem1RUZeEQ5lcoUIgNVnjmuPHseb70ts2Ex1M9UNoPSzPqU5VMwKICGcGIFc4MIqBQR8F2XhCcDIObX6CG+VsnVgHDMZojb4OYxgcBED/4UHD7edelaSBwwxoNGe+GyeqHgS1QXWhGobkYhqb8EDDwrF0Gcdll8lNsosV9nCoRmli+TDIjX3ktJ4c1iYo3kxAh5mVgh4FsC4lHJMBLUCtAeJozycEAHO1TYKVcPuKXs+PILWeCocx62eMvBCIGJPdRFU5MVaGfsqAVLVrqq/kEyoz4bqhfHdQI9g/XrZDi4CtTv+k7Y9ae/a5DynI/Iwt87nV8mqQbl5D3FMQhNlTNacLh8EovbFn8TD0KsHX+xj9w0RCzX6VZUQjk2VZsLXF+WawyW8hUXLkAuuBpePv4P4BlT6RdCAk+c6B9RwVg7oJUFLf0xawZrYbBgzXlI9fSd9bsHNJ6RroTrP6AU7g+nXbAFudD50E9H0q7//M1bryY/Ex4cu6R1GdE5KugayqRFEcityTEG5wl0KMYaT6g7+BZbyPUnoX7VlYlNsk4+lHGbsfAgP2vwN8/riZiOABMf7Y83vSRwBn3A2ck1GqTVwEwwZFDjdsfNGUmzoenVlwzK9srAPgEKihMPzogALHlhlZFOLnK/gZDdaKGCskhj3CVmLaAWWcywOG+S9HirgmDolC/Ar3b+9pYSjVYQbTIHS3L5YUSrP86Qt6zzqTkle9j7ah5ZHq3Xfwg0JueoaG76f6MPtsX+dTsH5AhgGLkGvE6bs9x+OQwXTm+vSS9faf2GJlEr9vm6XXjzud901RCaH19QQ6jBZxGg7RMBBybYIxj+WcyFY7u5lh4o49bpNF0dw/I6qI5pErohY5w5X6+WvFEU6/QJW3u5DCfqbBH6Hf6EuRZSi9dj7WtmaOD9ZTsSXCt3vqHzoqaS1ykVUazlSqPLgvzmrDeLDSilUSB5flxmCGd+uS3n+H+PnxSozWOJG7545LAFlNG/oqC6NdT/cfIYcGXL/O6rnMr5KXI7IOO5NxQdRF2lzBTu1jUgbekZrzH1YMbe1Lg+WC8ItLvf090U84w8N34quJbmOBtWbnimu5As3Zs4Oe8c0BVjU+crXJojDnxjh+w5eELfkBTicyn3WH2G2SQEcigrPzJ35GBh8ibjkKrnGsvzKa5684cS5aAypAS7C5Ps0b3JdNbAW3/Wl8ySFtApZU/FUtwOdFdWrP9SX5drH39zOvR+jjBgCFjeqcAFyKRW5+Q/WXjS4151xzL+p1/Q+F55RLykdwTP1YXGczaAXknAA9KI18b2u20HjsGro2zJJuIe3ZT0fnB2X4LgogErJ+b06VaZNuSlwC0M14CNx6Q1iOGOhDin+VLq8Qtf+aCHWnD231UFzp0QsIjjbDSJjzagfZ3oiONWKeihAM9TTWXuyuGqPRpwexD+w2IrM1QJJcJ+ASi/fKwFmav8XIL/XSXNkDdA1I4bfNe//20X1I2/XYbtm8WVSAHPc+bQlIhDqJsDVGNVASOBox+CaFT7Bn+k8W3F4CmyFmKQ/ohyka/oTCqKH6Gq8noebi8XID8kAkKd/7WAUDWUv5jhhYmYMtJqtzns7NF1LfO0Z+UgpS7DyuHDRSpaYYXqiCENWv1uMEi0BIPr26ulBsi0FaugGwFrdOU8QypWiT3wuOmA9QzAt7Avv2CzgxIYR/F6DwRSplVPseqHCqTrnqPNWgl/Qhu9+Brhnm2Mm5dtAD1ZOMgW/qONvkHPVWY0eR9fb/X9pyGdg1NffhFI5X2XKlradVfwBgTG34jwaGHqrPTrCJsKLr1FAJBxO6T8bvUsZQtj0mqTFfrXtgFIwCqK58C/9yU6fqqnNB2ZNddI+WEJCzDray6kSvuE9GwptAfi2dPoliEr7zz2ow1TtFuZUo8ojavErzRY6GIGW4af3e0a8WNoo3adyt2sWLDqMb8o8YvTJz+qLrQjY3I9ko121ecqiZzUyJK/Ul5lDTDxLvs0k+3p3yxa6dPI66r4lrsnounnoidaten6i68if+JWqOIBqV1kPu1Tts/ktv1PEw8QWdpnahqEPOm61PjLzC1v3dSXI9AifpdnB0dJLIlvP6glSLyCOBo8Eb5kdVRh7AmfnRvn2xOTwDawJMAXChcIlEDHO63maOjimcackTp3R4A+MyQF0aifBXRK2Ap/dRHvWY3WtVv7GwhHparONGfccR+Uj9ubElMpDtSr05ay0k8dUeVA0lja3fqgze8T+mdOCnlxXxr/XB4vsP6zbFkY1GzFuyYEargslFY0F0RbQUkSR0h20SO9HWvuAgk0Nc3+xiv2/m3Mg0dcvnd1+rQxPQVMH8WSLbGl/+ypA3B2jSqa5PcSldQuec2ttVGoL61xlYcgwRC63y+qcrflTghBOROEXqpOQOs14lAGlYZ0hI1WZh1rffXJ/RS3hjx6bs1SFImskw2yoW9/uicBAUFhQGjck5rprtgtkkmPjPl2JDokvhSzp2PE9UfVDjqDjw2BGSgBlCAoyUzWGEgm5nYYCfvsVxqfKRTKSIGreMWdLUum8ZJMJ/aYieYRiTiRmfqQhR4pkXpKC/IJFj1Kg8+3ZJAN1xeuqE2KZ/38z1TFWEL8SRaPuECk3LdOsKHXTmHtBDmEV9kQtRdVqbzllP+XYSg+GxSkMJXWe8TpAsbWKbf1Dw6nT+YJX44DUKJiZHS+E4TTG6T3NH8MS4E1/d90iT4xWmlTMTTQ8K9RwO/S/XtDnLwn40Wut1T7uRa6B43VH+Q9K/Q4NsiyBgsevkQfNfmmz9Y5hdS/0D0aKXqEQ46L8cxpMjDxTcQIrMiKxmWuVnaNlrHyd95lkYCTbkicuZGVLlbLCdSq4UcEqyrgP8nYo62qIwqzeiYdeVplsmRhy27a63T9KaWT9yU7SrFpSk+s3UJk4Adx4p99N5aaiq2nsKGyMOOG6WRzPq7rztsXnRwtWOY4VS60ihv5cDuVPbsyPlFVA3yGrfolBEgVQPZXMEjXHtzhB+3on/mPYi/YW8vg9LB9etw29jEglpwx9coIcipAtZbwmrdlShtbiR9kESrpjhtLvzxMzjETnhRlW3Lt8NK69aY9gM0+wkr1+HTvX4+qbBbKcCjA0vB+WqnOMY1epWmsGYnx/0JavpKxG1TbT5PGWxsaANUf9hL/HE84+eOk524AcIhkOYtQgxSTYaMDgaplgvwAZ+3ZiH7I7zhH/ZXkqNoE/+3LCbx39bCBks+QlmnHgNIbPXVXaKtpP9E//OvvSvq4IgWGZoK5lwtuw0X2qxmCv4QFL7oECMdDISjHMLxlqHFMarTQO6bqWLz4p5Q39zn6oWhORRR0VZbfpKaA5KjxBZW7bVh8xp5DQD6rsr0hlNW0LshZ9q16PGKQm8p6Beb793/WIKtTrv3gz2xWX2ncpZIBRC2Q7V4jBGdq3UTyxvDFGaaVbQ6XEUtVTRoV9FSu8oAD3W4scrEkKs8P+02o8bHv305gwwBa4QlMe/VjL7hajIg1NIfuZalgZc6Qs6iPmCcNmt1CTOFZWN8EPV6p/HYlR66Z/mITlpK6KYQly0oEQodDhVvzdF6wIeDgHWLc+3dUFg11MV4HEtcPE4A8caRNUJhEs3DLe4kcFO1cnuu1tQuBOmVfO3bf+mzeNvZPftGXPV1LGBuTfdp+LdnRKInUg5TryE322sQmAuAGMTghCEvBlug4X9cTsVbLv2rHMdAyBGgm3TLZLoXaFPY4dHPL32iwK1+mJmhzqj4gt+afELW1aRZD7v84oZG9CrnsiHOJK1hTOaDxNjO+RJmBhMzsc6+WwfiBzm7Mth/vtuG3LEu3h1DFsN+4E/uUZHr7QS9uEZbDN2n6PEkHFMOS5HhbYu5pw/TJb6fEr+lDYBV9PvkAgD0ifQ6oZ4dH7Y83oKOpbqtIM1+vnCcYYVw/PT5Az4vg8XS+RBLwSsvfjCffRU4mOi/bvDkH9SNJ/qIcm+cWG1m1xI+PwXcdBfR/IMiVPOhZMKnXpzCz7Y5JlU/XfyjCOFbSmUnjD4eMlyEPIwXtVfgIEY/WnDEwOavTORxP6wGMj49fUjNnrwnSMiv+hb6k3yey/taqdKoBVQ/rHOEfTjKeqdlnw7Ml8N8P8xwMycPOztqLhcbHZirk/04zv47KPjCrTCZ3wcL/p9HEr5i38JPCSsiLKXQJhP6qcDamRWlYYgNI2x+QBoaDdLKNoq1Y3hnYIOQXz4ErUJSplCHe/iIWDuQ8mM1AOATZJ0s2Sk5QsQaAzzEAjusQFhjQEbbGknDO3hnwSKkDEAZ+1Ryj8YBU6RgmAmZ7vLb6R7QUYhV4JseJkTTSMC8BRAclIDqS8Xv2Uoif0pYTwK3ALQANIelzvmXBGOCMTk1MtwALZOW0ZFEUkAciPWlguEWBggE1L40rD1hnOBrCyAQhGAp2E8u+JcaUIZpBCACE2A1JP9CuJFTFtLIYz/+Q22IDmwGTPbCt1JRv18SfN39D/uBh5KB+AAF4aHBWzF8x18g0RNUGQ8DK2dSDStY5FA3RFvhayjmCCUsilCnhLZD5ky5lzO0cthVDu2ESzcsTFp4NcMtE9oV30Jxp+EJEm0RPFdeFF4pFIwD44sXLD1NYNEOKoyD4juEXhQHHCrkGr0ipQ4Hwxdn+qfhNySq2XWEwwLfnClBGCFJO2nYQ5Lui4YfkORj0rBDkn7SsIUkn5OGBkm+Jg2PkOR70nCCJMMXdQdIcpo0fEeS86Thi194w8Z/LGDF+SYDB33+qZCF0tutYo/kJ2XgteoQe9n/VLgqSs2tYgvhQy24CqXDV8GXH/6TK79lKL2vJn4U/okH37/DOb3D7P/GlNsL8NOrEsvK31J/4i3ks7SMvqPf2FU4faDJC0F/4tt2IvMiQu90wqbjDfTlVYvXkxxi/4bXO/n2qsHrKsfYe8y30nu1xTzJBzYbzEdNXgnm79LFPsfsbKVp73zxF48vfCy7ezyOuETxCzkfD+XnhAmIh8W/YLF6mBfgCl4CHZiZJUVlOE1MDmENrYjh6CHmekiJgx58/1cUQmHlCEv7i4X0uBV1QKMBFEQuHmc6wDS/7KFQr+j9nYzEoVITKCLhgWswSDW7DRpQUBl6CFioHub1bf5JNoFMPfaAIp5N4HD14lfoBWVBDEcpZviQqSVl+sYVRcJhLmyaBX6QVw6n2nZQht+2mdKxcT4coqJzM+EaCnudB4vDNSsLP1UbgTr2lQsdSKBX8Ojga6CHWMc5Jig6rL54VQBbzU5YIHBvzeBugJSe1U7bUxaC8v92fQ5G0JzOpnZBYYIMphggnux7KHTgCFavKIqHxELAIkHhKGJ1GglkpsIEGXjCoIorOEbBMQqVWR2CoBqoZaYpHXSoBsLZ1E8oLTGcDMrMQCE12nz8FRVdwNwPL489Eou0ii76dIWb3o4Z8GoxClVKgTjfJ45L4VZnAyl94ImPDiBrK03aAFhY4D8aYyXxICH8A4XripCdekjuf4UqfOXAiIJIx1+6gntEB5hGUx+NFXCsFuebx7YVVMaw7cGhlYfULbDiyJNSjvaBPIDX3dgAa+SVjJCZgb0dXil5gOE0FMVAEhbeQ4QHSaO6LtSMxmbCcmZI/z9V3GVs69s77hJNtcjHPiFru6IxTVWBi/Ru5i0r5/g+QHfm83nZocdUAH2DUyci4aCDfkd1HrolYASsmVVUkYbWdXxMvBOax9PD+xOvwhNw/3yCdqZGZmygaGOZWaDcD3iu1Zhp9QTQR1fGHbV5YIav4vibAxa/yVsGU+sDMkziexLLwtFwgQseY4yAW6VPznxe0TmldZR4V/BIQvq3gxDqBGoz4Algxy13mkNBKO2nSFKX+OgNFUB8HApiYF5VDJBaBRKk6fXTjAo2BsiEsWQYoKge4BEwfGY2CSqDr1zoEIj8T5UvHOijiTicofYmAqLZDARZt1FzgGl7a66KkuPLx+ObN/Tg2l5Nq8zcFK3Ghg+e8+aIR8p+B09ex5C5Lm8N4ngxZZFc6CHBvDpp/nL+8aLYfCtpFQ+1KWQx7OkNJ8LrQA97UJ2GmECKBKuLOMEipsGP9yQPVURMKK0WmPHB6o702aGoyPhTB6ZEcQFWjR6OA6T5so4fvYWBayjUOKgDoasHKpzgLsPo/h29vzVjR1M8iLDADEWk/3pKydTq6nDqloKeSIrhM3t4iHQrHmJZskSHiRO8uiXI6Vm6syYEDMH+4cAsBzupkD/9bGl0MSUd3wH578TA0qopHt87WE4XU20gUI8RhGmhQbV7Wi7oGBNigmZnraEiVJaOOc91pMHrdPC8Y1g2ExIZ5mdiePgqNXdbohoMK89LxdLg073PCGXFYNRM1hxdDNByGMWRhFWZaQZPSagv7MgBEAaAQarRuQhBulQnYrrGvfTA0h9eulqcDk6sAew1CHpNSsQpSyj8BsjgxQuoGIVdLXHg/DpqBc6x8EpNXBTXqo8anHfqyAu1qhmjRvikGq/0mnfV+aoWPldZ7RSjnoJv2Y9fFknjMSODtaSLqSlDBqaAcPe2h2WZOQqwKhd8naBJcHa9UMbNayKeVBygJvSpInTWj810mBUHiX+xC0C+A/KEjYK3DnLyf+f/TOJkd7oJxJIZBA3kkE3FieFPXSLcD4nhc78B+zUAlwSLZtJJnI8z5lAoHSEIS74mxCA52wTu8mziuOmVJh4eRMzQ6nDwj/2Nbr7+zApibejnHAXREjHrC9DUr/+RmAHT65s/tVcDIhe8PJnmttAvjdFtvEF/+7fXp57wwI7zkjgNB3Gkh/knh+GIwkRET2mACUruMNNBM6/NDObWKiq2r39zXunyJ1sHs6i6Zk05Lc7OoDJ+oTTo9QKyVjD0sH+c+2tvlB2SAxMJI3QQB1M44vXdQBwvw48pCQycLivC/ThDgOnt1nO6mTb35hXR657cikcI3MyggB4lvDr0GoM4MnCeC6pGbaQZowaIipqnc3AImD1m8cNHJFAPgKBlYBwxDVq6qex4ovOuP874wycdpd9xMvRwK4FW8gQ2bYfYLjIU3q1mUjfia6ojsOeUmlG5SILm3AqzUInFn++tO6hDP4b2mlZ3vN6MsuNeO+6jKHFPnE/tWOOQdnpYI2FVsa1KNMxxClqIF2xShkPL4RIFSCiWi+nOmEK98qvsPd/z3xX2Corj5TQy1cNAQRSu9sQF43wiHl40FbFDkQri7DMVzB7eL17Lo5fZn12TwA9zVEES/XeU4/x0gJ6GeoEM0B6YoLAQYUET3URnqie4rbtV2lsyUtW1UBTCcZDsGeITYotJ2gjPwSzrXsxCJWxsXV/V6PWeeDKZ81CAxrV7bR26OSXm4qJLDtTxE5Gy1bo2CCiQHgIOjDgTJ+eHvhKf2WnfyNpyUM3ELcD57JitPag0bco+tDyI5GNP/WIa2hoiUAxnk5RytePm/rvCiHUSKk7eLEKkmM1Aqi/8BnnXNRmmZN4wTMmmemRek+nCJZOpsOvB+WO/BKCcYRBxEOl/mgwuIrC8Dwahw881GORx6C4bMw6KBIV2RKjuahnhd34zpg4yCt3BqRg6xlgAYMdyVXTEFQZqfp9RpHFEtc06V8STch+lTY4NyCBupsTHT9RcFnAKXU4z69rc2WiQ/gtI0vTwk9hJvBSNtcsiQ60YdutELGohCPQXrIQgH6aA6eOIVouAlLdVOZYZaPYepa0HmicrGHqatqgfVAwlnf7plKzHHrKDdmKlkyEMivp3mp/tPhZAAzr4OB3bGpVqMA9gIsAzTRriMQMd5RWsCZCQ5vn45iSK6ITepqyeq7EEM0ULj5oaVDV9wf/fstRF1DCMqmWWrRrj4fuAiahOI+y3DFFpF8a8dmULejOJDiAHry5pJFz8SArubOpDQi0Wwx+CJ5wuGAQsWYrXPd9Lfm0JuupA4lKBmYq8c8xUOBFDWRyyFp1IJKpb3lbeCbwSr59pexcoYk33kRkPVtN8Z5ply8Gq6G6ww1wIbiB35l5XRqV6e/MnuvnL/OfmeFzuGdNEOVcR3m8r+sWncyieYgyqUN+Fi+mPa56bSNa7fhcXFwbDmtJhhjF74yBIZ1NVuE3fI34Xm02oY6vvmw45AESk96zCBFIuQOBTWAbYe5DmMdPuAH4Mo0zlW1VOzdXzm+QcRpH78lpV2HMhpK/LOtTKYBaAYDIYlXXoMFSc68sEOA4nghHqy+psUpaCNufp1BH0+A/p+7W+63WWEBM97LngO7vIzT/IhLDTYCeAU5ae/Bps8NMcitL3MG80IQiOF4Pz1fSRZv9vf4DPS2u0dDNdIhNw3lqbGjERwwh8FY6zXDdQDKzjYQj1JZcZ4uMykuBwOXYWFgUQyoEDFZKchRzuedycOFPlkP+3x0FMIbxVhXMz+jIfHknHAIHlu8WUsADRVZqSv9AnwFVi4PoefuGfPVPhe0xEnRwkbXfDaD7P2mMP5hBkFMFPnVBeyFk1qy6phxj+AqOKyLxtLdi1hBR+DURC/FD673PYa35DfnVZ3wC/KcXPuiPCtBMuYztG7Cpd3uj7XSdVfDaLg5FixbkCqBbsPQmPGFkDfb5xM/+kxBl/r+coVXbUznLPzHjRqwN6tuk7foyfOaaHBHSFb857IVow7fxnkUjfAxdq3Xqg9bSr5nAXXQ9X56Q31FPToRkuM3EMBVhyCNgULjaHDrm36YFu3Phr9q6LAi8+AaWi6kYrk8LR0aFkn0+yTQ+vonWSIdz/FAjOfFUU9aRFMzIUZ3J8Ij3qL1OeTTs8v0o2n0LhJArowssn2TcU5/0rK/Hv4wWtTU/UYDRSg04zqDpwq4P4J1bmSEJ/9hcXG8Y46HOYqbCZX0dQruBr64AL4IO84r8Wfvs56oZ8von0ghZxugl/mciAFeQxtjyDxtM4yI/KI0rBogvvegmRFvyS9NUC5wvpsSIwWLV98/7TXt8vKR6qeH4z/f5lIk6PYh45el48l+fVGnQ0YSLBIer+j7pBlu5COcaOdUVmeOfxbACNUOXrKplc1zWKAcqeFktBUJoLvcg6l1mTgPnsrQZXXYU8tOkvoRehR6zTmzgUpo8IzE5ipSwMkxlBkhkU1FkMThksp5EL1k08ZPcVxMSIkEiKERQEKLHs1mmBJOq+vwbgZ8Ven5IpxqjYPHZ0RtEQeYh11oM5CdcDa7rWCK+fOVetolGxIA79SHx3qBHCOZBBqZk7KftnpyMPV5h7WFjKBUayn16y2mi+yCCwHjuC6sG/q2k6zzchsi+Tj/VFhTu0w0Eet93DI+ci3WZwy+kfIJyVbw8zKKgnA5qOw8A0CgzqYDnUh++Eh2jy5vZmglLQGdjvm83VcIMBCkZkt6jTMX19nJKAJp/CKNTKALhgpofKxGhDdR94PxjGSQ/M1NATErTwxW6KQ60yO8toGJqiDgw1Wk13gL4nLUWH11uZ8CreoQgvMpWtMouoxTip9G1URpOi/8U9dEur95el980IddNLzRpi5rTtZQOcyVY0QUvi94gVh3PvlbOHESzakMm6xk5Gmo/h69puWFzeUJK4FU9rPXO6ZxoaMq36+1Ltx/0zUjqHKKV9rLMbJSxFjTSNlSQDjJuhlyF7wIz0uZQdBtUPWcE1Qz2MG5kpgMrJrOg1k3gKcQqnSWQoRE8L9o0ILOiJCbIeqhgW43gF4cJi6hufSRAaEYa8Hhzlm4inSsdifp8HH9xZsUyKLrPhfty/VRwvqgNwIfq8ClxAEb4DQiga59vJAS4zFPUkPUTmxMOVkRUFVf3dDXV/sXU/utvdjY7oH1keVQRFTl1Yw3gJLcTrDxuDf2aFpzRJUo852yDonQagwa1QRFr3GW0E/JhgEDS+DYGGtWsFCV8K64U3iaPuELgWzAjQDhC3tbxxPhMROCqAP8FG/KMtAWkbJgkhMX3pSNxXBDHNtX9cTxjStBd2ogsvxoGij9EMMK1K9DTHYWk548zU2GUu59KkpnCO74miYiEpED8BFA13QRyrirkIqFliSsFcqIzHBd1dYARqfDXWv/mdl/udn++HDdUCwld9YMMl9OyLwd1MgDmSLIsaTAVqlyShrQvP5Vqmx+j2whz9PsJCvPalnBgVkmt7FeV0jNiUcoagopQk5+5WVWAIlsh832GJeTHo3g3Jqndssh/FtQPEeXL5R0V8kUuEiONmupn8RiTQLT04FguXI9dpWoLe5mXPzVqBSgOskx/xxVAcHEZZUf+AST5/igmPhQzPFps5E98F3wjlZUAiZgbTzXBikDoDBjO1fOLkXJJFGVeDOMm0/QoKlH+hhFcBdgYTjIjehAmTFtIMpZH2SnkYB6x0Yul+bDxBJjmeQ/AVvcqCm1HnLq9peCW2JozAO8+5blLsdiazJLMbxTwNNpI6tjDP+hStF0AR4B0yRduN8sREgfikDeWQgzizcgg6NI/JH6/Rxgb4wkLpK/lQn/yQ4LTEptElBLovPAPC86ZUv53M0Tpi4+jM6pe0dH4F9MpXQhSmpa1uC5R5oAHAVQqJbX0uEg5umg1/HTVAWUEU4iGBnVAzE5ElpKonOuQy8RrBzao7osj3HLkAoD+PlApSbTfH3ytNguUFw85mEBG3DL7rSdCYSrzVndf4wPu0JMxUJrzXx1HbaZKwJQB2otsogAOI1j284QNu1bqwmwE7TfVYtRk8x0NJiXENt3Amxe1IHfGoZwotGpRUhQQU8G2gksjHsfkCNIQHBAtNYhAPSR5nporq5DW+4vPjKNZl5KqiOCG2HNMfz935A1Ztg0p0wdWjaiw1N41vkWbNLeljAfINodB3yJ7cqhJ4qk3fyeSmDP24g5AqdZ7gepvzNCfE3BTSNnF5qs0ShC3zJGZiTQC5kqIS4RzUooN0bqlbka3CcH1Xrc7PoFOBjxu/+OJIMgzuQCHAWbnk0ue/kwPK0z3CrrGEi5S3HkcGZ75rn+wzjHrnWvNPfGSZHM9q/0y7OaB5/aRrCuMTCxYIqVEmqGZ34lc3YJPSmUDaJoPA7gmN5wrHkJ3GirzkOZeIbxGaxD2QvKnQGrtE026QEAKd/PNDpz1UxEZsfed4ilkUM65EPciy2jSPQ4X3eiw3jW2Q+gYQs0wiPF74eFMsVd20mMKixnrn5Hp7o4Q9IrQkE7ke3ycOm1Rh+ejqP12NKSXFEXbz7SaQh8am697y7x9C4dtmdJAOfFakZ6K4lvLPsnSHyrBPaJKw1LZ3LJBotxKWb2CAShMF4VD4Sg2QIq11uHhGJ7vSCVHTHHkfkf3uFTy0oztJm2MFSGKUpJJtj2nO/yEOqFQgCi4DhoNrnKkM/eZfPleLIofTUbtPeAr8dtz3o4T6uqCQNyzy4ZoHx8pHg/jWi9Ix7RMg3gxO+hdv4e7T/101DIN4bJisbcg6SC+LtuAKR8Y1gPq5C570U9dqYIS0AheFUHzDX4MYESOoAxQHMiSTvWu2HkajyxRCIoR21cS4/u8q8LI0wN/H0ps/xuUjDQoyOchdRcyRZvex1bxWw52d5q7Rlhgz6ITsuotrsqC40WzezL4ftllQDxcm7WYs09HLPROvw7kdageRp2fWUSdmGiatWXWRsriu/7n8xdHYKEtfIViVJnf3wcycYn7fpQWtxFGWbvRvSGVOIapNvoUFL+Aki6WvB0T9Dr3jsdAokTAnZHAQkmoSmP9Iqm3i3MIsjZw/X4NQqLbvx7xlB/928kyzSrwysQws5efK/4unlP9gqfIgWEISqTa7yghQEH1we9ZhHiDA9vZ1V3kj4B3HQZzZgwFEIlX3uZdou9vZU/9DN4/97eSIrSptiYkoqNfYQ/NJd6Y54fOzOOnrIk/EX8owq4Oq9QHCTgYS4Km+RwbRKJGq87M6Z5Hr5j9WVVP/ARFJFPIvd9+DcSvWdLBR1KHS48cfzKW6lkUFhRX+hnJKMelfV/9A4Ol+uYGhgo0hmkMxhWQnn0grr6QUlJyMXN+TX/iJwy9w5u2MapoRGARc0dXpOT6KP3E8AjrSyNs7CFCPS9sk+RombR0JqrqSkfKujFA/r+6JJoyxX3NKrIV+S1ko9yL0QReIZi0itxTKzOQ3a+ar19Q/aLsqFNr6TPBFUOonDgfnfXVc/G0GFJh5LRe8fCaPgNX/PNZ5SyBD3ussIFrm4dwOCkFx8gYOzs/VZvgLQQ060UwAOy4fvOxmnPKjX4PZxV0Uqy7SURjP2lUdLse7n4s7VXWRnF80jrWfOuee4PxAHQVjjIwrmQWI6dyviLb8W71qqTQ9e/pbMuq2fh3b9KsGsKvf8O56epv9HvsSHLEu8pGkSKiXTkTxECJLD0ZrBNLsoqDSfxLy42Gn201bsISya2wi9Jz+pixNoCRrPA3Mcs3L28WkXB8KAS3JXPLDG0dBfs0zPIhEksxF8phhaYBMV4Spf3gQpJ7AtwAUkA5xaCciSCTyPJGiOs4DYHQAIxWQ5phBjOgPx7NB41h9C0T/6rB2LvHTHeKQtZMPkZs7RYIYz/ThRqMsKOOgDq7BOVS37Nw2hb/o8RCHrJ18SLz500l392cTC4YCYFB9fWtqZSmAc9Wkb80CBK2tRVkA9pb24Nz/5bD/RTnz++T0Z7Maf+DVkirypXFZe5yHRS3Ys1rpacT5WWTYaFVgWDmxuRJDGhJjukrmeEja+zH3dZNyjA8fp7CMV8EdKyc2V2JIQ2JMV8kcj0hLuH2vYzz/G7Mwoja3B17OU8zUUbUh821SA+p++wAg6rmV0R/nv09+go5ts4fo+7HJREK783Urx/h5wDuS7U7z9a9h6J+pNbbakqGmL+d2gQz5AyRADpgACZADJsTh74TBF5GoNlb2ugmhpT8o513oZJUB4jBtJR08iDjpspI1Pt5upLRLpMdVE5Efx75mjgXcT3DmYpKNbysuB8lvv4L+DQ/O+qBH3s7wgAXZp6kNoLEhaSdoi3CdKQcikAbDEAEXm9ch5xvB9SZTNIrtyakEvJEAapID/PtffVtaYv7Q1fneOR9Xrizh1RlJd9fWKLvspszEj24ioyaFGU+tAHW4V9b/FZhUf0sTkWMNkBb4H9TptwUJsj2i/BoNeYDL5uc8qwhnQ479Gv1MKbB1OrcK8M3HjJUd3iAYGGzWH7jk8e2PICLVrpbX+xE5IBkgY6F/rD5Ho8jet4v2Fz3eSaeQGZJ6ej2kHSgS6jH8JDs99OKuE4kgrpoWBqSrRoqAJGT1HSk5kJyfkahHWNPL2OWLgPTYmIfTjPRFWGVc1Swu/j/0fuhYDmzw9TiwXpUyqR5v3sWxDPj8UwKXbtYIeHWLz3NRB+B1GyCTQbJ5uH/beMP3uJgaec4HUrsc0EwqSf0AQk7QIMmgneRQ5JY7ah0+qRa0HXolz3w1hHNAEoLDwXcszhftv+ECjhsE6nEbgM/BHWV5KyjZLPp/s2yucQ9UssRpLsV/ETj2HvswIt/9vkOevMq1Pctv+BVuqSR37KG7FVvzMH+NT2ioQFf4UPSqADsWUq+weuG/iTeYYkHveJrFgqFTXOgHDfj4JeuVaLsM+3WuSRwqlz5VZZB9MtXghATv+mYqQ39JLjSJVYQAWCaqIazMxH/pImp/3wrBGBCV2NYN9bE/pER0e9Bd6X1EAcwpHHOZD8ySzHech9l6y+13YCsqQ5hOnwFy1upd47YQCFmBbDGhwJ6UKnw6mpurmJZtQgggL+hMDeUU+UnUmM/EnaRh1I3SB0hBZ6011cx3ziPrnJPr9AvgJ/GgIYKHiEGRqdWbpA5Vgnzq73LcsfkHXJtN4LnGrwB1TGeqE2GPV/lZnutPHEJyyLqe0/yU0OZJIC3tQw+uKUrmbjulKuVqmzjNgpCPxvT/x79a8dAmVODasRFQzznmU61JeELHsl/hX7RjK4N+bz/hc17ICXBMAgKJgdzpZLEMyW9B0FPKpynxkAus3ge8ZplVQSVqzYzISlI9pYJMPdkd3lw6bm+0uCcaPJraDdYININ2HZBVYhlvi/DtJYBWNAGEaWSsrWtokyNqnDu58ncEjepvOKkQXJhwITIYEaT2o5fV2x5UWesR1Ri1N1K44ezo/MEG1MsLHX1dCENQrTUstHU4dYTgK0t2mmn/lRSOs+SkwwAlmt57ob5nZGFCLxS71hBLUTYYU+/T9f+W9l+hgK5kydcgOxnk1lvzDNBvQKU/TlHrbJzhS7oANEw0JgVO8VkmU0nZPEV74EMeALuyLStqieRWjXwzBQ3UafPjVp6sMUHRrP0CWWo6ACqpxz4Kilel8zc4msL6NGMah5+K1+V/BjXZVDHH16u3jmxZT05jqYEl4Haz1RMUlZz6NuxMm4A9B6XamswsqKZ2Jo+JYzuFMhT2y9FAIXHOgevUR0jdm7wjQrVEij7ZSiMTB0NWt6/WoLzGxfR9mw6FBnhAip3KWZP65tRJQ3NwkiSQt17U29i1qKsO9iVJ0Fz86XY1bWDKcBCxl1j1s1ndR6B7dn2FukXdIKhXpKpdMuO+uKQGhWdYAhjr4HdKmXUiRQlEzOS8rH996nAq/chdMxesh5EWlPZVNvdiE8NJd+LlcjLMBWiMKK0m4qwhI90SDZ4yRSL5oA7kxc+hDa2C9aPiPxPJfZFrvtNiwSQXBzVLoG7e6UBk4TlYCRTMjF7ZPCQCvrKakoMIMy2OUU2F47hfFBKIIO478/bmTU4QTD/aSAhNuu13oqeHh4q8YfM4SEmRgtTwlLSW0srjDex/D4gYHQbCupscKBzo5wLLHmZJDcXABT2jggS5P58zi8uYNnm+8by75l/lzbGO6gtZy3ER94p4B+yvntQexcfDpK6E35OZ5aU4Cwl9Yo13yBuWeK+Bmh/UP6dNq0ZJyrQETz3305TAWqtYDtXRAwXgy1T3572ic1MErDHJ+ajJ78kID/1PvnBqUih90qTTS1KXY/2zI7Q2Y0nv+2dyntqlQ7vptPqH1EGbnOYkioeFjwEFR5QavC4DybGRYtNXb/1Qt32CU15zgkvwhYELH59R5s6Rti6r27ll2PXcm7HAjBTmeBTLHZxRE43sGQotT74w4u56t4dHRQSLWIDuBSp5WLXDMJKzrAnhQZALOwi09JpjBi4UlCoIsJZFFbyzem6uXX5kZXfZaxkYRfny4HF4w5LJNwC85eBWh1l8dWU4nRJkqb5DTDsh6+L2LaOO5c6YQ+hE0P8MsvdaH+DWeV3P+vSo9J5ydefgXdLvjprE0cFLL0SbavLsLNsV0YPa+KhUpcj1K6V9Ctj26yns7uilYGBxXY4LqB0P2Z3VUI9MNYGbtBRpwPMQB18iEnwRL6a4OgFhqwnfXEmqha02k1DzNMkWBcHIpXF6Ex14KxKYlgXbabNXNDg+fdn5WLxP26O8Y1Z6s2/vq1yHFkkyhtyiCMiauomKABQMCZHuYEI2Qgf3mX8g+XOoD7eKNU8FnXzZwjLG+9hTToDkQD96OhufNak1XdS1/2SGcDycAUSun+aIOqSfdQCS+2cVTNGzheFeBPRCpylqizbicXzZ/J6QMy9bOJ7kd4CrtIcQwDSzWIbi1BQqQu3BwByTJows1qPduNMcFIUkctoDq3r0XQNiU4LlmgrwqkVDdSSiZkAelxCAUQuAnkKWnSRA3O3COjDfG5KjkSuhg5x7cGkaKGRGLvDiVkbVfeMEKE2RwleZahSHtRgKHInizTA8WR3e6c4zVifQqWhlyuEldR3qRpzIyvCStQ4vVwlhyAaWfe66WXUh2x9hRtb2+4mUQy+6n+ITQwJOy80rnUmxcOGQd35SSp3DYfVaVyxdiaVYi1YlaWKiPs9rB+QwUH9jlLaXyisAkdgOA2dO17EX57DYCj8XTb4y9nRfDW4yr1bURaHQYYiSJEdkYSouCNNgiRE1VgEIlNL8KhbcBuoOmOqX43Wk5Xx40yJJazT2esmhOKXKv247XB/R3HQJ/CETYOw35ZZnLblkUPmNuhz7oVRYghPhrlXmzg/wyk6zl7m/EdAY0pTzBBkPPjVCpYQznhdAnkKZbqigM6So5M2jJZaWmerNHlE1P3H7pt66xyuUrnTc7MoXVzpWIIbTsMemilV7YbzLtcZrbj2JC3X9OkSVa0AXRCN8VKgbeYFj+X0L5+WO+7KfrK1u8skqx8dMeN2JnU1iCwtQWCQbWSG3/de4HG1q7p1NChNHnySQUp0W+gFTZoWPvzkzhJDRTY4mJCCnfck0vTFehdLcmrGkPWV3IK3yNs5VC2tlaJ3kFdcIPMrhuzSBj4tyHhIY9BSZ8DU01dNG5Vyfjqg3ADc5a9wuVpT+2kbZ/epSVCAceZBxExfPZyKBNMQ1AgJouZ3IvAfWycQy5ohIB2igiIMHsNMoDKMNM4iJh+2mxxC0KLJrt1tR5aromcVb1CHk88nKWYGHV9C2vC8RHuJuIioMM7Ucx8GvefibCPKkWgbcTkLWhQxLG7kH1CfCFZCSv6yK9FXyPe/h0hehqh42OoZGz35yWbPtD7QD9nTiR8XhLqeoIpl6KtXI2yUc6YThfhARETa0PicYry7q6qTJmDvKc4mdtgeqSxhP1871EZwBCtaX0rxrei8NrLNB4QbWMjMYqD9EPTjLr1NBzg2YBN0df93+8hVN9/qQQ/gEXvGli5pvB5COfCmc3o1Wr5p0wTCrvSnV0++iPbmv6zlsMZErF+XikokTa9jLyPhx1d0E1CV8j/0/c1QgKbL6cMqyd7CLEYWJG9ZOglaVq4dGLUml/NmcF2PdB09K3Ww7K6f96tCoOmw0WXOt9k5IIHaohQ/cx4aCfPIdrRqnM4K6Q9c4K2j/5lWwArathKHdz6zp72wtfeHL1N17i8shUIJQ54n89RCNTc8KCrEUCnVoGwPFAoOcFHXSo8u73qqKXz9YYAaD9/k4o8OtgJkWqX4T4iG4GSo9SGCG80pHEal7FUA9iTU5LPbUXr1tDpnhOkXFvZhab0AXcJByHxBQ1YSYSXTOIcvWiyKWFKhIUBltVP1gUnEnKoe2vDN7aBWY/ZTd8OCFHme4ZkmooB2SqRHTWd9ttmlWgphBg/O0pWN2U9DDYF0b18N4tfYrZPq6XICBklYYNJc+XghbyfDrt15ukohf6ULYqrhXBUvvXuOEy0hgqH1J9tHLt+5loi31BscYpK2uqVf5pVztMOK1Ei64/YG/uOLSp5Y7vazK2u2I5fdWr4TOnV204Ts09BzdTjdTij8uKOqz/E6sWNosgt85vJ/sWyiNVSIHLGKCnGqBmZZYLxHY0q5lqz/8JLockrGHNoH6Q0dz5ee2L2HYLuQxvGdaYfVOHamuOiypX2gerNQ84Crlqy1cxpVdiUOGNuhZC34wbLjpvHEcp3lOWOdwrWoqjQ5gDqnB8XZXJcyVaNmg2nrKHkI24YhcR4vjzWyIQxzHZT5BA2GYc6B5Ql6mGwXIVxajwN+wJrUnnjWZESGRG3yi537S1Nw3kH3PSnG4LqrqhAxVo5TGpB8P5jrw3EJylexxIi9z6MEcUd8rssEwPHgPZMPyodjSkOYKsnxoZ2RXi3TQ6Be1JIUMMUPXzL6yeuRHHX8DEMEf0ZxV2j+sXl59D2y0PHYnnV4+VsWIplUI2H/CgI9bORCnUNnI81C4vbmGV+jzXSk/rPv/JkTgQYQZK9XSbnn1NhEbO6ppQRnOVp48qLTNm3tQCjvDxq9j1A3i5OgxOir8TBGhevGqeCI9GSPtroq1CFIqwAXlKg+HMxDQQqFkVISku+rVbOMmAqYoZSyGhhLqo0CHLu+REzRNIiRCzki14R78dL8vs+e1V4LZDOhS7nFii3SK+1NvyQOVAg6UGv//Bzq6gi4Rqp4NSPEAcaZjkmGZPeXSiDSR4dsDDaiYYW6bglRRM316AygssYRPec9Sqj7EuFjmPA8imQSKeTL6hVf2jJ3DHLChiGux1nENKdd5fEeox7W4cXzJTbkGMhgaphFx0JCDjT6Yk7Ill5TYE4p67A7S/KnfzIe2ZOZGzhgt8P1x9kGnxW8G3ZIvD2iD7dHqJ97t7U2q94/9nEuBhiaAoDjUxqoE0nwqxk5dTtVmovcKGDEXd2L/wMnkNjNg9O0qR9vWCBzSa9K68QkOclM/QgNTc1tw8C0eI3QkZVM0l5HzyGbPPJECDJLkkA+jVrnCftz4HFCqV7HcCB0Q0FGfUk3/WG0CDM4g3rUjmC9GxnuMjag/Im18igdyIDltpjqi3nCE887Myp+D3FvSqSyfruJMwJDkQy/uhYqU4k+Wb/ZfLFEiXTly8EBaMxG2obwyY7LkLWtA3oFMuS9YIrSvVk1n56BAgJNHCvlYt7B4EqC9i1eMpQxKCgEiwYC0FA4Zc/9aRZUIAVizbJTDGo/bnu64iq3Q8+LbrvFxu9kUOjhezQk/+sYDGr7ssivpD3UIUdqrKxsNeFEsnVae6pHBmiDmgsET37FVSBkE9MRiNYYrNW/9IsX8l+eUhicEwa8aV2aLkdzDq0F4ukipR9E037GzGkd6TYNpw5GeBAlWBGlORHteVU4fWLPA0grsfX3k9WQxEg19Vp6FKqWqtloaXcDgIdzdnR9QoDoaJt+YFRpQ0LoEoeaAvHlR0tayyI5KJTMT7qwY6tW36yIMz7GHvyPbwUoSXc3rvHndHtlveowEwTPxwM6PhvAa1KNHLulBOrJMKNaJD6tJJ/q0bI4a7O+ht6dM0K7tiIUGsjdARUFuOqfnq0uPZIxcA8fJNdH2foWt87ikMFiZLTXsEtUQ+F+d2PQNSSjXfXBzJzoCo0ihyZ8nMLMqBqp4y81RACqipH3rMcktKTscJhXIjGxTPSb3qqRsWmf9yBk4dNHmaGq93FzI0MLY64/FTXrJm626zNR4ueXhEYOX3XEE2/TuUhfD1FXUkenCjOe5o85Zp7lirXCoRFiCQnus5iDQUU18Hq+yLRg6vA+piRJ/BPGFIa2pVn1SVuSC3hvtmkrejF33JSymjpDWV1LE75Nsr4xe4fo+kbuFUXq9o8xJi2H88nq3MfX0a4yUTJhU1RbOk9+4lLAMIy+TjVf+SBeT0H0Cb8ZkGktp3Vp9Y+mRzGyZ3GRkWumeYtvSsV1INGrq25q8PNFRw9xARPFot38J3wyXQKsmJ/gatvovJG19UmyOBWBRgejmJTXK236gqXy5M0TC1f5j3o+uLVJap+A6WyRHteKRGbxtJKPauhwqXQbvS2OmMDF1RFjDLBqFk0vQXNkzGj4vZ7muX7CtqFdlNtv0gpE+Za7il1yMRUARSKzKeAXjApsVwlQ7+dATIanzsIgQcbaUXg/bVXmCRFkLvDgMwA1gtThpkBq9/ZK6nTTkNuA5hjtAHWHf5LTI8fk+lPtnfpQyqo1pqa/LbkEKNdTP0X7fDVa/8MqPJHz2RLixP9D9iprwJLd9RCmWkCmVzSeN9zCbUkYtktyzbZxj00WOZ371XCZdW0w9L7Qm/DVauEkIkHhsfXbptfR+3aCYAzilRZpv4+CZAQxe4u9A9z4zn9FpJYcI7eTQIOP4kxj0Qxx3YHAgckrumeyGwjm8lGIF3u8pcj9et4/Ur6RyuLKvd701Eun76yp+4IAM2yp/Lb/g/SDYX+YNOA/P7U/kubLz22mTSmV4V506PN1TDdiRH7YtsU+ckau7Pl4vGPq7F3gL5rAE+0UPCIRpErshdhVaodw2dAG6vIGIKl60dpRvx/lKhrlHfcKW9d4neFTB3kQnrWDNvyv5JaYTpGJ4Zbnx9o5qmocLjYv2+AVqWv4PzAqfWlAeSdKWMKSXaacVk2pbvwtZTeIb+BheoAI3nmViK9m3+vfX0ORyzImPPhsUVvt70RWme81zDER2Goxz/MwFbOox3oEmQijq8S1u8QZ0vroIobdgOQVmQ3H+bxDaCjzID9i8HySXP+z0SrYPlJqHEzVw+Le9oeTg74oMrztaLQJ9gyE0qHKpGt3uVQrsEfD6mdgjYaXGBLSSGQ+PwyHBX/sdPxOy4tBdzGVUs1SLQJi1TzlJQXhrBFzVAuEJenKiYUbyeoEebDIW29ASY36aM6xvanPKi7IKJl7ok5PyP/feyX+ZHsWKhXGR2nK0CReBIsh68g0dom22k6DRk5w4tV/mefz6OIZcdCioI/qJpoPAHlNrgSgzEY/zjtFXP4ogF3dbZLxFHkK0LJ5T8X8TMhEOWucXnFMUDjqDjkifHCiiungMfk6KVanQ7YeN+fLg9G283s06nQDgj8SBb4IJdhXg70GFbErUbsiIo5ZPE3+AU7cI9/mSSycJtgLHoHBCVc+d4DfqIrRxr1wZnB7qZgNzv9y+rEib2d8NpoTnSpZPJvg8WqQ8xT6BTQix5Pt4bJ9Fn8ILaujLKwbl3Mtyj2ytPRmpNiBOqUEt/QVI9iBRJyMNBDttwipYlyD/xehOkZ9k1uLVFCtMJfCbZ29ixcWTTrsbzvp/BXjVR1dVdfeookxt5cotxMszzUGF/Bkbr4kDsFDDuBWSeXHt40YvpGHi7KLA7gw4e4iKC+K90BZaviK11NUw/RM+gDgnSBS9m5WheWl0AaSue9vx6r3nrsqCzJUE/uH/aEALs6729R4zzvM5YY2XRcI5be+tHX9dtCtB8GTtcKcDtptVQL6U6UTd79zZmFORz4szVnyQKWwsEHMTJdv2ek2NOUpvV+oAWSS95QWTWjwfou1UlyvdFPcC0FX5W+np/hB5Eyd9qVzUUURterJCi5iYZZIOjoOsM4IWP7vhtg6amOKuEr7qPfkVIZzl4OenvaASzoHPa64CYA8+k2NxIz3F96R0XID50UTSMnU6WnZiFBJlg/Vvn8E0ucqgbzMBndVlkO5iK3yFmDxZuL5Uw+huWM1/6A9aYs0rkFlWV6ftLxBPHJCWWEQO9MrlAmo1UeaTwB4NAmEgI3WzQgiZD5e/xkzGBFvmAJzGN8yq2+cklD07MBs/Csht+tow4ygJeXHxHg6Bkj7uSj0UiR2nXrhnq+NxMEddApQRvW2k7Xzzi+ItHDT1TT2VDXkz4QXsIycznq44ihih2jzAUPhRbzhTf8EY0lLPO2THRhaL4XGpwSNIQzarsbbR1/BKM7zLNd41uXDCI8eOnOZgiLsltJiWvUF/QmnAAyOfQmJRnpk0TTI0pQOo1KSs7dqAmIBTElf2EoOW6cgm71uQ3DNQrFyfTOZOaO9CZTPzxjJ9mCHTZaKfVg5ji73s1Dp0lOSwxO9MdF/ITCBqxOxeJumdYaLRji1qHCOg6xZVXuc2X4YfW5rk1mrGvtGKrtL736FQPr7CwqB/8EHBX8XUC7D6tOIdCxyv6OK8c5uW/1b5GLrbd5r/WfeIBsHQg9PhYEEhd+cWX3Q4c/uhOy2szjyjS7fk48y4zH1id1MaXl/CYrZqTHYdfeSSAbiozJ18Y9DquehNZPBD+ml3Y8tZsp31yrmXuglB8FE7GX3f6Lebqb8Cia5MTKNnITxzLhXS2sI2dMFzzZXxnT9MuffhK8FXjAxhk2YDTt0+DKLTc7c1sWMsUGXeEm146t4KVEfBu400ey4aM/7q6NYgKAt2lhw5FRDNm2vEDAWmqXi5m0MqGuFOe7UEiw1UeIUjEIhCKalOPLlTc0Li84VrMqJlBIaVowlbA2i9LafXASsjLOHBcHm2+YlnVOSkRq7EcfD3I9Mj4oDBFQaPGdxPBq+tI8mVRafldxqLcqBHrgBuRRQMSZCD/GrJhCAUqILo+xTRtKY7UIliYpOV5mEQnFoRnCSqiIN4ZTpZSMdAucKxesyS2Pfng4/ukKfWbYYbjeQe+XiTCe+kL2qTjtbJYRRVAC7d2eBU3nrQjJbVrTz/pHK39HCJUYxdx5VvSEv5oGM0cvDILWrzAq+XBwZfnqoDsc8I99lWirKZgluuWt5v47DDi4OeOOp3MQuLI3U3ybiE/CFOsqTXndHEqWcPEm2alC5A6uDbjdKdVFHBW6QIrMKkRdDyxuUlRgAaBgDMiVDpEWEKcQkeAi0CQq2KP+L5uvzfBJkMq3H88/Kc/3f020H7PEdo5wMx8aM/DS8hPHTfnhC9coWtOUqZN/JrBqx6RZO+nCp/By06wvIelhke6SMuwJFXZVRuStC/2UwVj/HQHbeoL+t9G7WurfyLn5ixTNKE5WLbg3ILr9xfdZ8UvroihZdOCivwUh8Tlw8MtUiCi6xmpFJS0WYZiDpAKn6oM8l2ItTro6YYugE6KfwJz6qtcbfXYboI9qugkmmkJbVSKycKrljfRkkJ43Gh6w2IZGV2B1jmKo5nJDPp3xgADTk9dasrSOOXpTKsXXou+A89cgFggDZQ4ALAiBtrMFhQr0JFUAfaKEhMHBQAewm5BhREwv1OAzeSW8IK9vIdVPffDwaSH983NubKBonVJRZJ7W4iXE9rgZ1Ps4fxhAMYyQP7My72aXfgXhATN92fJh3MsCCWCudLXn5iCSX/casc2eszRjcQR6Jmm8tl9vmwI4+dIifdnod2AjK2Ngfi9qWxFLaFiHFScMWvPT/Zl3lCzGUeSMr6aNjwFMTCDBSp4X4h1IguQMqH33BdHzUnihzyFj5JcfywBPRyDRK+lQ5bMp7MEKOJgkgTD6XZ3AmnDYBNRw4fwD7yrSUeCxRNJP84sqz04N0PWXuNTHTpu+4UVo2VY4VC2OJnaA28O2ojkhRKVNxLuSpfiVo8nk83GFh4btukLUjWRqQLC9tUjgpOHjJMKjxSVk32e6qM4d0CtIcxks0hZc1pbdoVsP2MJuxcEwJP+TCJtpBRv4VmfEKoDIuT2nsxjkEe6sKC6wwRJ5qQUTDpy6GjyKnWhf0sz/6VIokHi2tAP5o+DYfb4rFXwbgNWaNSOOpK2zbPSiB+EPsDlh2kXYSS366SgKLXhfNkvs3wHhWEyeEM0NY8DnndBQIrv4OBUUibE4Zpw4pbGE2ZuDCeMpnwyLwKzDxvnOQRkykbFwb3NMQ7GPZwyHPzWzjAKQR3PNzBwVaQEDtCwqOdrweR49aT6v7ys24VTG8/RFhUfDOoWHooqk62gy1Qbhtxr3qtWnTkAClWhy1l1TLIgLQDp4Flp0Zedh+UAhE2AHDfxrYVlXKz/krbk3jcwQhE4nX2T1ha9eqPRYNZD2p5TtRd2xmziFADO4Zqgz1HW4c+nxk3Y8ayBpY/H0UnyJo13FxMKt01GN7ImljT3vRWFNY53/i9V7GnOe2MkNQave5pwQhGpQIpuv9wUeOddAqZEWlwJXG0iJKwjIM6XD2sPtmQrNY+hb/o8U46hcyA1F87FbXpjTHKo1pGI48N9inBPLi8j4y2jg3sBnqm/y7X37KJjp+6js8FgqlN8gy0EwJgcrkCGczgu8LgkC6W9k2g25RN75nKd5Pex0PV9hZCGZfp4SK2qejpSHE2MaoPhXNNjlFnJOfzQcQaUJeUaQlzpRFzq3dUEwv3SMntncBBaoh3AgepIX4FuNwSM/e5gxM4SA3xTuAgNcSvFI6JJZFqI/m++nNUldDqS+lj6uFTeh7HuljVNUKs7aHF0yTUWUh3C4Cm2H3uPHlHFcy9hYyQ/hXzHdr5cHSuP76I0a3+IsdDxEmXkEVtd3Wla/itEZRx8ARXuxzB6LP3tin8RY6HiJMuIYu/drUK25KbBwtZnVbe1LFT5VpTzMRpMtl+VOH9Xwf064NpjxSq//34CyqS8teFJ3Xqo93IP/1yJ3LlU28Tb8RqFM127oDcUu2vjfgA+M8DLJCdiSXAAss3GpyWZFg3SE26JeOyIi4Vmmlo+FdYDcTxdsPL29OP4O/KnR6ka7TUzZNP41jkhaokUqD3Tyh3glMIrK2ujHf54jYpsQH/zAwaypMwmnTNaKhdjOS9Uvq2hacvXSjycVZWKDwrK5SukVnGBZb8yi+WcZ39g5A+3xkzs6ucMZW7Kr0gRAuJkrD2eqf1utMMCn8NXtenRXH7atTVnSHjM+nUeZl78Qprqripr483MIJtShCUK9ZirrqTfGqbQkoIEKEiidJHks6fl/lKJ6NKodVMeX+pUvHvXhkhtVSngwfSy0V/WnHHfTnzD0g7QeUMQz0xyfNJ+uOarep4qdt5IHtXFAwyn3J5WaMcFLv5wgaWw4WQGXJW4ywnKfP9kAO3/rzKXkdAa4co31E8ZuZoMiRVPNwhb7/X1ApvECLFJncwu7WakfShxZNfqt2E1pslNynBUE7eDKWOLzgxNgnIwStXXjjT2sqCJvMZPMeSdkcNNiUyHOn9pJyhUuhxnzwW6PL0hZZMEGbZ0eQXaU4u5wxGp/4JxZzTb9V0YnXhMIHPJTKkH9hXPM3VBVow6QXs31SC9H+DxgDLf+7nAQqQB6JNoH37p11nb04sHFAqfrlGt/rvlWiSMzLOLVMPsSUtgUNpwSRfxaz/PhkQhV9LQEJEW/WSCKxwFKRFPVYP6XtnQQZZBON8Grj1akO2rUISODTLeH/8rf0KKxvJu8p4OrwJSimuQhdg0SGujFRAbXYfYWtSvMHjyMwxhyRgyEV1oA8hcBnlhif7wlVpfb+1gKUR/ADE8irRVGbjyxyuzwarcmLENx9ardxAPUSulZro0t06jOlGF6eX+qIr0cshYaOWtW1LT0u4JqqFJipsSq7dViftuL2avO0j4ewqY6wbV48R9KDd4Krtx0qe76r+gBZczFGS4fGgJz2NPkARTNP5gxYN5628uXpfT25Bh1E6la9mzQJDiSGoEsxNJRPphA/GJ+cBk74MQFGU+dC2GMaMC5WhcbXx4O46DBOMjLbya3sW8vh8mOxIDTs4WKm2NJBCMA2F1I5NyqAcUb67yGmz3PolBlczBOkV9EoXBgDLfk3serLZm84/Km0qnBrVgt3tQdaOD63CVKt/8RLZFnh5pdSnfPkvap/iYILj2waK2KLhrWYcclqZhfBqMv0tGUqsOl3fwq2DkEfGG9bVbCnX2PfLbbshkMkjg998lODHk83ukBljBbkOxVrOPTLbxm4N0lyeNjzFFZbTan8boQuGMDNhCNMlmTrMzTQ9u1HcInQxudXdON5vedRXGK8Cb1fN1WuNlCfM+Pvo4QK1cB1ZTcCoAJ8buQWdQ9x4zR2atXtqyHfVrAR8/gue8GgvyHWAO7aL64B0iHrnPOo6HyuB5abMhReK2yBRzAWt0XSyKu3iMLEKn7PPLKnyKd102Op2yuP2PYjr2KDysWBLMZZld7H1ap4FCHQk/yQFWWIAJTLuuKxduYdP2CR/djO2PNVVYIG0ozONiDLjHaz52BPDDqb6jb6VLqcbOrOTgNY2cA8UQnin0lIIfJYLKDLGOwgWqV7HW/K0oPi1RjOpfd/s7drBiYpiuus9irKlG3uJENZKVylSfMY18wqt7itcePXOTSmoX178RjposuPqS8fd5mK1mBaeZ50HzZpRWlFvOk0rJLY0Zkqr5j+Fnab2fM1fOGE9dYPztx8pvssnfM2pNx5thNXVXUDFTPdu2wnp0m48+YtmYgpb8+Jn20sJaEisJU82wYrmK8caEkTI2/N3z6XTNQ6BZWtrXXGfYD6ttDZe4sWZTCNszx2QLvKxzFFhqiDDnSu9btgI1G++QsEL5ErQoMrYd2WjdIpQw+42qZ1c2yWp57geJlXkFkyeMjvT5T7+9ld0UVZOrts0HUTLVIaI9MY8JeqCWNuLUoYRwEX+jrwl1IheFaEeD7bmMQf08HBHBrbKiFDh5cpKd1PRFx6VBSOXh18fmaaKxFCTVLr0J3dBUxpTTjTMpYJ4FPzZNdmGhMwgnnoVdu3u3Z3M/ipkKJNoZs5q/kysjOERY0QUqraQ4IGLVwaQzn91bu5hRoXnGiI4r7ZDgKlHGsulpdUDai6brhoZNiBwUK4o0jH1zPJOQoJlz4xuzJn3V0S0tOBCysWUgcIZ4IaGMQ+ZuIVmaBHfLxmcBw2Gw4idRByBypKyBS6p2x2seIGA9AVgU6mHImpSGVo57zd6md42sAEFZxDI9Nv5bpik951iWyOvSbuJZ98KQPWAsc/PUhlWheXBOgg0Zefk8Exay9dG4MkJI9jzalmPQo6C9BdsjH9/AyxHVWMHCSNjSnG9XJD0zQi/5h9vXvqTI4IT7NkFeTEaxvK2PbCvYqxOD9RVyYwthsOdtW5VBmTHwl36VndBG6K2SpGaEV5ZkaQE29DoN4lJ+MsRtCMEWH6t7WRAq6URaJ/g5YADActRH0CbosnmjKK2HrZkr87hJq75kdp5Ex9fGVfNbU0xRjzQJ/fu3lkp8798VWQPwwA7zj9QBAq69NHAXhcZsAScQXAh9YrHJGfBaDLUf5a6RUQjJlq8iH2lZ+eH20A/vmIlkNI9vBCv2xUqLoxML37XYc3WL4lhVJjOkQWYLzUJhRDXsBMuLBlVrpmd2TO61gzAwHJQimQJZhBZyzPxfmTROBCIjzA918u/4NxwQFo1iph1p9Koe5BgA5hHmcWGFSm7irC4p3ZZ2Afc7u8Ua0BQk+qJ9nNzbY7OpiDqMw4VlMIOiiZGe9o61trWsGyF+WwV8ci1EHoOlkAUznoT+9TnAKf0nl45upJ0iMUVC+4OPgTM9SwoQWtVWuK9D1hflldcUK66mZi8lWFWl2RvrQlBTmoFoJ+HhmjrIGyzWigsloZwAc+xFnS8ipwtBk9nA6v7vuB+WN+L9Ta3030/Q7kegWgQLeLaKriL7kHcmF+pCbDhALUmDQx21hSlH8G0VYq9rFFmOje6HMczQsHezoAfxseLCk+8VANDshc6PbNUDvDP2usdhWL0sz3fnaq7w5vNqY9tYpO94bC/8CVSEOyRwY7EfEcv+HpeikJMljEv6LzrVl23lDZDTWP9183KSSHGh1LilgXUl+0vAIwSByB76uN+xbp+7xcx5xGvfKSk7HvsQWLVKqalxYuuK6YXuVqmoV5RPFsTW1zYfAEdUiKpsadenxcyilullxQFmF1v3gdmDDICQw2yCMeX1c60sgIipfGV3G97fCZgzHPRpG/cA1pZj0PvVHnQDFLNzgl2ukgkqpY0t0CqwzLw3x4VsIAmbMXGAGSmFEWhJoQ9EzI4GWQojAVNK+48eyygUDt77jGltHsiKbIj9uNCzA8cKIUfT7YbaaEyNsO7CPbFznXoRfpWrDM6sL1RSQGrAKhfW/nL7PX3YdjAlJ0fnqSvy8DzoYEL0TDGKO0rMsCn91LEH0q4vw+lqggNDRjODes8IyMXM9JdP4n8HuKA1wgprMWIE9c613dAomSwJbQBiC9maM6+B9aT7jKzgBau3TqTRGyPjlXtBJo3tBvnC6sEZopBi0BtCLQ/FGaoLRk40q4Sa5JnsL9rDjt9Xe5DjQiMXT10IxgYO6Cf9wW9oQP9As+6MTp/JcR76rK1jMsth0rzs8sc0abPyfW04lQTo7gK8/rTXU9fjKKywqkD0h5edVI6COTUdsD9lSzIQ0BLs+AQwM1ahHqEgDmhzsVBudR9BeKaJgCtFuZW2C8QDX0buglsXIK6LV6JlwUMsn/EB+r9C4QiRT74WfoIwDdQDIz9bNdqw1ePWd6cFIT8ykW79DShWDb/kwpqlSVmEnSmTb891Z+8nSvVOQEsuWp0cW0boygFR+JsyjAScw1qwU9CNmoOovi5NAy7pZQKd3YNq/K4BxUUDi6sBHMZoi23pjGV+sS7njpxTosWfYeHSnO2kHHgY5YnJEJ3K9aRcAEy/zQNl8xeQe3KT2hOI0TMDq8AZ6AtadmUnnaoMkPFFyp6fdSB9gurLq+uWRzPCsmv500fQJeUjGWw/Osld+LbOrS7e/Hp/ih89PfbtmbXzO5g30ARyTtdUjzds68HDy5dHr+DdJlTP0wON9QM2uR0gnYE7Hx0VChWVYq9xg0DBO8k+jFGTLerDvX6K6FqAzaBprUQf9Rhbn7xq7UfOgRS18TIsofPMvsbQMUeXMZ6pwj4KWUsIUFU8Uzm5cmkD/aa+tmiHgPJuBTCwBHYe157HvR9UidtK60Y6t2c8qzLT3V52+htM0btPD+3Cii+vd8rQCl34f3UJkZrdnDaqCU0nAxcG6HGJyL3wc30n39PJ9Q3kyUx2hiiSlNHBt4fBs13XMAhngUUKr7NOM0VRXPaw9G938dhLTIXguP5hZuIi4cJzmdRaX0gIxU05s1gFJvw8Wax9ppq0KoI5qVpkrIQyjCGzuxrSMHy4C5+qpFdcfDkC+yufK0RRQmmkw5uQqxLyVlZV6oWTyfvCHzAvoxsRpXJa9acaVklHm3LWcBudkJcghfb6ViR+PtNSN/JAvll+oNgJN55OlfliHWdYDxpUmwyEyg4nw2mwAyDW7ie+s5SrMKBYrDf0A3eCEbOXC4BDweBbjN0w7m4ltUHU6ua+plZ3/oPztr6SMEGSBz+OJCn4haPLwN6Pxc1yRR7JzdBkbwniJcjF5WB3ItVGOlkxaolKUuvV6pcItm4tOlJx9R3zYHccNgC2sYV+YzWRtfpkq81WAcetU8Ex2CWkiKuN7SSo+v2qD5HxAeM7pa1E9xQqxAoUk0K7BTLVewQZAgEzi/rDxxcEmtBZyjyT+c+bUjz6OM1wy1w7do6N7wTayIliyG0eeWylMSZZhmm6C4hvIn/p2OnmEI8bvY0zrMdUhk7gYf0yzdTVWFY/9ARbgWLuz1gOzgyVHEkM5D+imcDotShEnwjCM8GcI7YCeMCYZRd64mMxR6JcORwjgR6kO4bNDPBIj1oW85Uh03Y7yI5t57ulZVAjx/0tfdm24fy1Vxb4swgL5eBjBR7StZhfBW5ZfinPg20JVWU4QaUjmA5HNSK9cSQQx7fOLjAWHHqO2gD2tQYR4KR3SCLot7nJoouHI5ehu1nuIMKQ8t6ou5HzFojcBKHCSSJOVoJvVXJykdF4GCjDckGLzvNxOBX/JOFJzAHIXhQACFHp51yJGNDxN3Fj0souXFj7L/E5ZMYGQvO5+jaw+kSKyxWA1vwsjdR+wI4Y0G3Bl+N2n15eNpOzYv23ynBmW0wJ6v4ljA3Bv8awd93pGLI4VOyEiJeeRmMyzNWq76qS4GRxUtIqw0UvM1RjzQUFBZOizIayiBtznGKcN44HgxC5EUZA/zKlTm5cGkNIcGr4SFN6Pli7f00F5hHLjSdw8gHEYNeTfNnFZQxDaVRB3UOj74QhLq6Iqeh9Yy+W0R287bQVCQdAXFITioWzVoMuAenGXNiokZmDOBS1iZ+OG1g9EX8+Orcw7NuHFB0LElXD6prwA+yJgWjaQ4uULMYF1Cf2cmBJqLIyT81Jw/zd5fIF/xrAgAAwvDyt+nFBERFER9u7rqxFFUZ4MwDlDEGeRHfCG4H6wpxvjVtRR5OuPUk70AJkaX1CR/4OYQSkPOeKd6ccR9bRt/msGgweYWZ7Ss86+LhebHPYDGhHiHp3Uz6dW9/0rATBeo7GVTJmW75pzSzMG/uHRRML0PzpuKaU18zDWrg0fkgXhu3K1pRgqeIiNQssWODUZTcpyndNgi7ykA85CwmdhE1nzv5JtWrPCzyR9R0kWXEsPH6H6m6hevangA1a1XnG4u/p2HnuOUzMpgGvl/8LSlR6LgU9H+wtx4ipdjo7s1MDcKNcoUQpb0pVCP+HUldb/Yq9q5NqbiMwqeoFNcSFI/nJ5GOqgsbXxgezgXwNJF66jqFUcLag0K/tAFlpmDKQ1KfeEIypdUIwVG2Fw/UWfzTNwo8hFEWtzWnTEnsidizFgco4n5gKFHutq6jbPneKGbdTPmMh6zU1dPaoxXJs0I7MyRI7RlWDfZh7Bg/aPbVXdnXwyLTVjwuagcJZJfu8GUq8J3osUceBMEfxZDLzfsD2Ti5Z/8ew48PZI9x9YGkXXlg7lgu35Wqmz+QLUv3gXwzv/4gftbjSI25EQNNgZs+r32nXfWzlSYidvTTdybCSIwMQvgBU+MIEUrOptM/WGUcEYWyW8EKeWEovBR8YV+Ye4dbGhQ+C1I4FbRw9apb8DVI4LWFZh8+Cs1qvL3dL/rPEsyMu0LwSOzaVt00XvLuGiWkF1h2xAlHbOjWwqgLwIMrweJb3ogHM+3Y1mJM+lU0lymssK58Jl6WKkUL9ZOZtlRFaSljpyY9CusFNnAU8B208Qq5huA/tDz+WWW9XRV4QlJsQ+cxpyCtNkRgvhe0oyY7qmJQ5VJrEcwIoMVvh0et+tkazcjcDcqFLgK1lvxHZGxIMw+tF847O6jCWSi8yAlnMVkRY5j+Z8Wek+ArXbn08AuxR30Qd6caXWweAj0EzK0phsqjFtsTmG9VMaS+uhX3SVlIcAysYVbUUHik+zVXQ3OrAqfHAZ7Ua9SQzuetLaCuPI3luYTm2DW+OkFCdGlgl6AEq6EbOHBmhN3M/ry1Zoz/DuL+IJIL8SCaQUmNiXWdZS10feP/PzXll0B/wMRrj4etA4X6gB8ARgoVpSo3YOPS+arqTNJyXvnM8PShW2AhMxrlsEWTcQY1BYhfDny7GtDZFQ4cc0r8BDA3lw5xDfpm4iGcVdr/WCXQglBsbEF5CbcVsj7/S9PpagpN0mVAeRKxxySP23iyO7r1DiIcLqXoVy4FP88mPoQ5HbvCzpOTWHVBWbX0c7luMjPxon8erYIzn2sjMecuwKBhguwH7QXq6n/azO1K6i/XpKlVib0ewPtHrZs1MUXvrSTqshiGfXwXZcZaHB+0ZHA9PQGZjQ01U7Rk0qz1vjWUlGWw2PwNSGujAE7xNco8KaNzmB2X+SyTm7B2wZ3oLAmcuuCMg6hglO91C3YrkXAa7MbJPctHubR5S9mA/C4Bq9+9y+GJExDM4RJjBGQjEOPvfMMSSZ+stBUMOnlv8frAVuduHMO4woEoL7NsStCTHK1bYVmPkvNjVKPfJ2UtgYkI7l4AvQvYdDX6fWHXD+cR4FVdebtdFg01+i2jJG9BrKo2sSVCxL3YQSmBgXGcVpS0HlsPZgW4aD6SFhSAvEHGsVkQqi276mKTmFtf4djqvLufAble13q3THMVx9yA123YjUxyjrNmVLBRwopGwZn8LEV0aPNx58riTECZJUQajYJ0Cx/tsZolbBo5T9bC5m3XWOPe4LtOWGISPfhx/EhOpUt1uEmSdY5W24WWXtIZJ4T/GdR5bDsZaraQDLbNXo1LzyFuS0rPqkgbVwZvamG8CQc8Z1SCiE7AEtfl8KfUpFJHn4BOIQZ8QV/TtSMogfNq2Br5Alv9iAhINLXNZdb1l8REwsj6l/iLn/IDd7KGxV3h6Qagfu32ZviAOJ0f9glIirschzQmJKsgGcjljp49oSXMMq289C58T0TRAxJwa5n6HdgEgYeLDxL3L6amIFDzUsMxn9FkT68Ow2un7u26ts5N4uOUDtZSPF4ApO9k+NOJBQq1jV8DsNyup7dzfpqi7HrcNduus/LEQPy6dc+DWc/4KLuFcUHQ4Ljj5JW93gpusPjJFWeE5LxQs0EAC9PRhzaDO0nFN3tqgXhKyTsWeixl1spO7pFnDg6+4BAYbxnOOL/yVzo7ZBtmzcLrO0fCobEZmbNm/A0RDXr3ZrIIcN60m6FqjgaVVLwOVTTC4VgtjccL2CW2OYfUIMraBgf9lm8SA7nOajuNvpZIWaZV8TmLCyd5PFkG5nJu5+4TKm5XzYVQ7tw1bTBvW/dbmqPnyG7ahSg29FfIgc2+ehJ0byYGhZf5kTiLCBeY62JUoutDjU3V89pwnj6Isu3hrG855F3o7Aft6OC9HXeAPiL79Gsrnt98X5Zt2lbQtRSKhAe0DWF1oLibFBQBBmc5XvIsuqjyAz25d6PwKqQc5aaZW3XVUz8jgkKIOygLJciXMO2i3C9nQCIt04BZhE/GyYTNaEk8ivaWcMPY8nBrWeh8O0B3B8Um+7F69UZRorcSN5jR0DMxYeiAs+c7OrBnbvWutNx6GiFdDhwkgsIA8PSRoCMLE8qGWS7ddDghuE3jTAIVk66FMna2eY0TAsZwovVmq8rdc0/YMx9ev0wogML9kz8xqsoQNSdWBlX4LqNsimLWEwZA1ArV9uSDjJIpyyW20McNZIdxdTjKrU3bzkf9bztiNQ7XVVULA5JJHTHO6UlluuFMb/h5qc/dNZIv+rKFoNIQex8cbtYwEb0lUQchzSqXcQPQC6HgO+WBWZMiSFc6x2LlgevYBYViyU+fd6hDRekCZbHUwL5OykjSJmsyHiGTEUSCFavKTRLv3TtWLXOp4yCs8JnI68qhYYE5y+kqE5NTO9oSTKhjJbQSVL95TlH/DyEWkoMqqheLOcxx+rkE5aKA2Qk3r7wTqEu/PrlG56UrjJxpVnAdI4e9zm1D7BXFXrDMJl0HGcp0dwpWQkgl2VtZCnsKldOU8uA4entWtRJZlpZzZ89MNtS5r/haM1guLl2cMkcXt/+qLH8DirBBBkxKbiQUT/SEdvZlouMR1Tr0QdI/9u4bIY457ufBY2CCXopudRv2xNXZJui4Jvcs1Br0max5FYSGnHnNoW4GNW7dH9mep49TDQ7OfU1iimPaFBD6haB60QwFVZR2XkKKj6fT6n/kmeV9tmcTCepQUJlUs71XT4Y6G3rLHwgE0dCosaoFMTnlmMST7SIlHfv9NmvZKrwUhjx7aPgz0Hw1U8iBrgMekqzKPs3jJdcXVEs3QuyaTcAom24tOnan/VVQVF97ZDeNuPMJnJmXOC6+LEHrFENW8timlL1qTt82yt/7IdegRzjIL9MmCsvk0BjqOrYPcEHdCornsapoJ2J3lTd6df6BNRK5iTO2TRPCKDNYaWCo/f1xB8K0VBhh1SV1Uzf6aZEcU5lg2ayPMhNh0ee91HRO8LwXZPK+v3ZJcGydnmY0EKc7Q65Kzoe7fg9/ailQ42q/XM/rGqCcFHyAwLhfSgqIwVnp3SDkIERQMmCRPABt2kcsFz7BvJWYKzklV6sAyQfY+aGaW7nXbB086b055ykNOpNioppbuddsHTz5I+t4AbP7ZBAvwfeTAh/yJ7LeOkMTcl4cCxJnQTbKgGMOI8zg8YsUkCXrIKd+wyuRbdWm9fgflnMDh/6Iv5hYNDNCKbvVgAN5MVTHSdU3XKvjqX7xzh1flsE3IKJV1YJQnGAPTsjoLj0FZPj24gERVNMFrCNY3s+hyqeqwSYrBWxX+t9dVOJ6vAscmuiw0eLdOuw0TEibwN8YCNbK+kMj0D2nYR3NtuVb1OPV+p1hNQKU4UqWjjqwHn59JwBGFfX5fp/J0Ld3xWcj0vcB1BQImctOclz7qFpygyG00AfiddjhFtaqU+Zco4/keAuO4az+AggNYO809LLgdB6DQqVFm7NZXEU+Hk7FYim/OKUj76voNmKKw0aa+Y6PwugmjJwZK5psMKpDufl4wAdSeEflBquegQWxOV1ZOd9kfgsZfAjthTdmar7F9mw6oKjuz3FuGSHm2rBWoPYbylj8NDAotOcsmNI/TZHNQYMQgsuJkUKxJxHXICfv/CNPfiqR7Wfjq7/wXWVX1uGSLgsRp6GpZzUeElESCZOmXIJdmsdMHIcVU/FL+MqIiuMcXD4fwMt7MPcbDS6qQRYYUrFXUMoVLtgPCBr++b0GaW9ZvhsDQFNdYd+zmirCjMMopa8TLk7tZkMKTDdEk8fINQQL4FAEN194jGJRHD747F/4FE7OkrdSMOXKYp5Tc8xYgl0C1QRyw+d6ssXdL1xnKQ+yg7IWjB105O1VHqZgdS+iJ0tmGzGmh/FLwM0EFgksp31S0F7Q2uM2gLIhpvD01Y/7CX7iAOgGWlLYD4KdBss4HZGpCeI1A9sWLX43swfvYxMUyYeDPzmjn00O/J/z6eeTpEThHnT+y+TId07h7yfn/EPS//Ud3mToAPv5QlA6RnUr0MQB6/NDGipskQmWLl0oaNZQp3O7SfT1sXpZUnL+1SFz0KrH5V5VeZlV4RbW9Sp4pkVmE2BE0PvvcKg13/jjHI08KAdWEbnV/rd6QGNouJc3Oh5cKJFB0fBZCLvnY3k4Nn+PPmUA40VhQSSUkU2LW42VwZRbSrxtigbctcDrDmnHvq2zdlM+VjRKFMKWxo3aG07BH2duZTduXunTnpvvH/xYdvuxmJCZuSiMn14Fc279ImzJukL+myeHLlNazQM6mio2DzOk8C4egpb4vWZYVhML3jw+SYLnPMzs/sJviAhPB+j3vCyzQa3BrMeIQkzAt7/5EyoGb3Cn4u1mpcjF0mat5p9nD9GtQBu0X+4TN7X635pNYM9oalsJqr+GeAopE935DM88hnMD58kSzPGVW007UthNn+6bY9Yvm4ODmI3OKM/g/W0nZU02egrf3+ukKMC6tnk4J2lZ8u2/g4tXdtdMXSGBy1TqicmYRJPgEW3q2i+06b2W7b+gCepJ3WyZM9zKS3ltmyjZ7ZBrI3ir0xUNqLwDPcTyW4G3Oyhz8VBeQVjqMt6Dl1+Vh2+X4Na3YnAhXSnG6zC7qrmudbEU9Iw/cGgy7X5QJDwmxzG5Usf9P3EMDPv6RozBFyYv3if3XR4UKrionMdq6XW5X3QBixV907ABtI2h9UH3ASqktenHytrW298sfYLsgDlJ6eS3PPl8maEYtHlOi9T/Kv7qUpSvGrWI9iMzTPaSKqqY0X2OW5DWgWeHBHwrT5s/6ZjW95GKTctcYPQF91yzZ88QZMPJBFtB+c/S7oxW5Vtq37DcSffR6r9+1LR9cpcLJJt5LYrhjt8GH7e0kfK6tOAMs96Ac6WEjtGVnluxYgWIMyV3nrYCdVzjQTd4uEn1Xdf4DFqB+J+eJZrMhPiTWSSqJjMw5s6YQg3YLLH/0lorSF2ZWvxLQNK7vbY4l7FJcCBUlzOa+uVEbeFqIKULHOtTtbTQEFZg5ZDy0RZ2GdPMeU+8itor9e8JSUGLx7cyXPM9Hj4pHe28Vh6MxK1jLMQn/gw14W0lXYoxqpCn9g/hFpCWUMvqc25SJMqXcHffMYuopGWbk44CgSpbt9xtZbD3Y1CghBSYOUyIMgo77YznBcjNKRc3nq3jO5XCvPCOB/gwX0rdGxVxJh1MUM1TptoafDVMpiJ0+VKg3g6J2fnmlJJDTzpdezW2d4y3bVc9cyHb7u/SySOc/rdN/Mbr2VvkqrB6bh3rGOcq85A7n7nqNRQabH0xskHlitw2MATXhAPb//w37BrZN3iq/butJJu7IGbMdf01MIuuyfnYnmuT9RmBf8LmN2DiC38uij7hjcK+hohAJCMY65wh8wwifYDFzMiYpklV+poLepcwaGvvAzf2kE9dXFUqHCccoQcaTaZKCRtlT/WlPN8Vts6vEo27L7WzuWrA7w6CoUTvn/S4vAG3KTRbTKN6FgE76/sRmyu3LHfU4NdD60JLJ0pNW54RTdJ48Er1t0JSWZAV0Pa1ff1xCRF6E6K7fE2z1v0WL0zGfYD0KXO9/nG5vQDv13Ey9oxn4t5NUUS+672QFBPCt4wldw/HjEsH8mjaC5uYnlPiyR0O0b1fJvDtEZgJbt3tzhXLgVpn8h8fo/698Wv3HXm+gq9sLtg8MWkFrwI1o5nqiYwW5qKB2i/u4SGa6e3ehOyMe0YqiOu6ft5qlMAsCjPBQr6RXjdvwtmE/OBRjTIpnFT0P7rpdTzsonOf1LM5NnSv+ncrabgzV/Rg/LmXopja0MICtVt1Bp/wRbuGBdXobHlEn87FPLzEqb8wlWe6xqdir/IP9nJ7RzMXdfMbpYvyGrZxaY3HPYiIxIRr3OKFOjx0wmYppDah0f9d6ZKT1j4j2wU9Yxq1yOd/Q6LYwZnHs2jPSBtwyiFvb/4ZH0tZf7+d3yjOJnqMUfk0KFaO2/qJznzpRaYM1cKYSe5pSgYgSAkJj56ePEgFrxyjauXDUpA7I4MDTS1WAWUZqMagMlorpER67q2+Xt82SaKqnZfpLLruD7un86OSZvil70SvImlQyqiKgJ/65uoK+mE6ohBkUkjbk0kx2bWuXWjxIiPCk8xkRLvbE5OnL7kW3cFtV6h72IIFhE3DrdUms5G8YbAvK10oHNNOBnxjq3bE5pHBzSpQUFqT3XwWqMvvmJ+Yra2x7FUkUm82JtSv4YGoF+1rYKpB1TZ1zr7v8jP4nZ+eNwuzT/3QOJ6TZyJeZ1gM01+CvwO2cRMFWbnvk+miaaZg7rYAk5N8SIv8ps9Y6133dxBMr0YuBdW89BsHfvxmsf/099CN6ppXjiT0WLuCOqUFodYOq+YQBlh7q4ytzSlOZVbxT/z1SrRIIHLM9nq5Fw34YGDkDl3VBRGGFuqbR2sjILz89ApJO4ugm3zfaELZMJw0vVOJE2tbe6fPfHMVq31arGtYCshx9Rc0OPb9wK8LGTS/hM/20eBxG48JI9s6QDqBqxkHafAmxpoRPAi4x76UBdVAXRu4mRvQ7J7Rf8bSPskok9UW6BCvzeNCniHb/YUYbOii2A9X3oU3SHyq0sVcVknnqjim26O2DRnrza0/6ZCdm9vlQ8dBWCxV0rx8VwZsfR/6bRbSVrddhUk1rTaeqpr0CtWkbc+JEvdOxvGw2yHNIdeWMkRbRgJlOfhe8PfG14VsDN4OskH9YjDFd9ACk5qB32CY6PlSAOkLHAlUV9V2N4SMHLsH50tCr8WQ7XkXh/z9iysz+T8AIj+dpPGDytjEJhLpHCPcZ81mTOiqu0pUOZIAUeuKYA3haSXtnFhnlfB2VcZzPZEV+w7TRADG7+BsgKnyYXkgQcVEWw8w6z170dZC5RRz94qIST2wO7ERxkjqyoZckl4jOJGhDSNlwNjnKO6ispHOTQ1xWU3aRqOcnWd2Ov7Z1AuYF7uZYEoqUMxwd8gka+LwJ9/tdZebis98e/+BGftjO8UOX1CxWPAP2EPzQI3AIqYVjy0BzGOBinZHhEXjI4FZvsS9qge2PB+Mh/p6k3Yh9WKJTPlPqul1E8BU0WI7uK0h4eHlvKoO/Wrn2a10Wvkf/GbVB+IxqtYR/y06AAlE8QQkj6ZKgRLUTfa+mUxPToHGsaYCB2OPWGfi3gxSkq8jFuLU8AUgz8rJCRr43Z46Li+CLXHHTtvVdntNqGcmkWxs6GHkoTs4YjQ1eFQXnC8yfw5mX7pfEgoUmxxskxuCVPgaNIkRV7xHEwx3uMKVee85depumEqVA+x+2lg4+vRiGll0cTBxBKaifdzn/eZx2r3jjsQzydzg8k+gunOIlBeScC5jwgFbbEy1F7gtqM2CGNOMTqGNyllVbkm15v9FCbijSmheQ8guGMxu5uUn3ifkmuDhvpvyd3+9hF8cEBNR6a8tarHuNoBxchMrwaGZFNChVLUcbSANzuCEGkxn4woMiiDbWWhlqFlfAHvYH5iD13zxHkMOHJclTKmYpKd+T+/I4PfK/6/wUQWyheF2s2J4fyMPPQoTyQuc7sjBTp1ca4okSj/OmjGCvtWHUK6QDQ00/izb0msSCu58k13jC2XK0ILWJo0TlLhB2EyEbbUYXbPeHLBhj8lNWDjLU9a8SXyRy7APzmU6YGGqvULkh1aDhTZ5NnXU6OkewormF53wuMpIsnMtAfUQwcWrt8hHNLwrJiPI/yzO5ufj7xCcgsFPE2vsJudzdzOYhHH5GsgkgaqNptMxTNim2vKaBjUZFOk+ZYQ+nXXVNdrrryUCAYOLzt7geQV54dd3DDKV0A7XUb6ZXrowBiJAJ2zlNf7KhEYTsWVgKZWjtVXcDb7n7c8xct4RSk9wfXidTPy1PjEik7W/vV8c9WqZSjl25xD4Oc2MVz8iw5g7WimsEYHC702kpcq9PRLAjPApWfHF8u5WdDJ5KVrrlW2Yx8hGZ88qc3sgJEkI96+5cDdq4dwQsFP3MDzbI3evGmSTE4XTtZkrmMLDbqBqdxN2S2J/IsOQcPJaLbE5mVTzrQJw96R8Hr14P8Pz/yDKTQbV9f3cCc1eAmdG+paznJr/ljNP6zAJz9Rrnb+H55E/YQ65OsyiZnT+nxI2sMruL97M6UQeAtbwVbFX+P+yL3dHnMZH8rfYOUAY2XjRmTEUn4aeBI/InhUa0kNweb6RUnMGGU4qYQBROHViMPS4fLfDzOcxTKAlc0F70dGlRMuftQ40BqwKIUA0RIP4us3EiGfan/jG7JOWWJgjtxJyww5vOgiVhkLki8KjZ3SqgjI0Cd8dNabi3QbvEtu0METhOWksArXh45TP4NVLSKCGCbUjacKcoDMMtjqWoH+zXwD93wC+oeKpvxy3PBYF42f2tRgGvJeYLxomSadU6vMnm/+82L+mnvfEGq/45E7kFFWkh/kGnWCsWecy3N50+uwuWwpYy64KRm5VjWlXzkZo0BKD40xAOHX1B1/3HM72NeTtGFbT0q/ayD6/4X3S2dLDLARs1nN8vs1/jcxyfAzAtnjvwxQWFkFmFJay1H0E0qgDV6rRreqaxgtTjoIFlAnCIGhMRJMuDe4n2wKla5wocc6s4ySqSiagXvbxY7IzRBTt+l0dEDMXuQYc0MQUTi6xTUHJIkhxmKPueiMEeMfCdS74yF1TTyNo8TPuGwjL3bNiSsRStIJ0wnYoKEIpKH0GSSXd5xP9i7tUF9wW+FwkNKWZTwGZYgBs1A9csRiRidgDCz5tDc7yWlil1D5lqloDjp7OXaIg6cvtf0YZlZqDo7XM58N7evtCnELudZLf3aSTIAIJT7IYVYT0zGCIg25GGN3SfBYO1F8I9H3oUfoIdFrccphlpk3Qeosseo7vW5h1vwuBY3jduiJMFMDa3njzGnZlNF99fIvt3IxNeQBpvzSy/zkOJo42rc14saBSaEMybD6HR1hyaqu+HdmX50lvWYcZopY0BUMgYfKkUAxAAVW1CwdIe+JKXuVKs3xykU08nycL2r0LEVO+A3xyWGAb5KyLy6S3T9qS5E61JcXWNQuj3erMKDDth5HV3bI59DZWJu3mtK+bXCQRtief6cQuGPbysUdfiGA7SzovMqKnXY+ZJvO3XWHEe9ppMm88Zvc/DRimJ5cxX9Kn2hynZMY49PF5CNyR23OZdEAwesl+Dg4kM32LCAahu84k49ozZJjNKsnJPw2UmGgVKx2r2B7kEHOlGyDoX6y2TYDzZIccn3dUk3u16kA62LNqCJLCnt0aO+3KR0giqv3eQ2sG5ZmaP0Gag9TDvK3YQLbFdkAv5KVNETMqq52zWTLZddZY/lMg3jIBB7wFYhiPiUWx5Frj+opPnFPSB6ts/R++faDenaBSOxSqNToGFNwrYbRaPnML5rh45C+hHCFtMFi9wyZplLbJ42ZKOkN2ra3zUJFYBzuhR+Y+zUnTQFzU9tJtFrj8awAXni2TxRG5cHjrDcELiUvuMzhwEyJxcr0o1PuFzTr0pLZjqNlrJmjBusc39eBT90eb8FfrEPQLSjSrnM3ZmAxRH3Cfg5jTKmOiW5RyzaVPBwHp1BAXGMtBOzuCcZgWWm8ulqN8+4tEoxbTIJr+Zz7ZxCWEJ1SA9MPcKffaj432sNvrSJQf7aPTI1yCoqiDeL5yqgWdOCIjffp2XHrN1Ufasn+DJlsO8xtg6wLcvpivA3ZJUGwMXUP4Is43WHpY0/DwotqUhyAgA8DzUcFuiKALhm5Ep+mz5XApIgW2N3jTcXWKJviERBnpOIB1EzFBc20Onshp4cIIiwzGLn7QVkogKnWKcxT5/0AgwxWKLIQAq9cCatsIdVDDnroNAoim7ayZgesqVdhLu+QYXMJWFyg0XoIwXkZ0SIB8YWKffXu9vzIBy7MD0gZTr95VsgAyBZKfQ9eHByQ+CJEwoQhqcrvoHSKr0whPNTzUYaWEcCFQ0tBhT3TobCYDiw08fIUNZ7yZOOcbnA7lFYbE3w4ecBucXhlqliI5bj5mrAcj4tLQgkUeaopBDix0I+FRwmN0gVkKWnJtyIF02GASqxNT37Ivup5BtUlSj3d74aiVy5nVgT26oCWZfBi3koW4YKnj2tvoIW+n/vwZtWNPzojzLI20KLExXeGe0ix36rUyKaniccuGsHU/ttGbcXLYZW/EI7bGDolDWMAd269LMkI96z3WnEREqoNI5q1n+3QftG9wenCBvj+7qKa2kuZYPvvPxSZfnt5Ys2bBnRXdfA5DNwtBFrSeW5rfWiptqylhl4tXRTbHK2uZ6+X2y61HuC0BdbryxCIPSyJo6Auj3iKmlXhydriEO4Ug+NKr0yXoI1bsCKk4Vyn8VWkAC/aMnVfOpeQ+VPLk/Xqhc5NR1fTD51a43nfgIClgmko+I6YEdAVpxQcc3WaN1vkDeefxjGa4xVqTBgAtpZrTtAkI37326s16B6Efw3GVycYxpdDYEXCZA0BO29+4Xu6Ao5RBa4qnolYeuTh8RruLcPbCBXW20T8Mx3UkQvYnpLLv4UxvgqpbsXeXdi1xlYMfPB0ibsSh3Wk1MxHdbZC5k46xuP0Z597UVudyRjSAyaaU/itWgY1siop8QFcKr7E3+BB4S+q3MJ/QslTase3wIBa5sSo7mQyhoI5shQa4DSYp27YrMW8mHvxoi1r7m5O/Ny9beDsV32d9s5Nb0jpqFnQSf/rncCsM+S+Ce55U8Ru4/5q55tSFSoSih57LD7qKBJ/uIxREHwGFZBTlIPkXOBgvWxQCdggft+nLoK3PJXZNyJNjHHj/bLL4FPYOTE5u8x5ZNSmsesMXuuj4CGOTZILhTAQpvLbwese5VwXZnQOSpLxJEUncY9nsTmC67jkWlAwWf5Z/HpmZW9hpwYFZuJlwxh34yxlx/tvg1zRSPRWvJdICFdfhOCA5Ryz35z0oKzoXvXFgpGn7SirZKUSJ+Ev71kOGMmSU3T/tvCg6YCkQAGpHzeKvu+5mIAzchlOGSj0sdOniqYQAfK+WsunqVtgfdZyBUuWF6lCYmbZM/oWD7eadDfEPuYpD5Pj19pdJKQEbbrvu2dF9izHiYVpUDeTSaHe0dVfpYdsGbEkYv/gp+KIfDf+71TQ69yve4canOQm4iMj1zscqF+TRtS9UsGxJt7FA3PutxqkxSJHnAzY5bGPw4HZ24ESr8oGfcdb4PA2eU1Tn+Ky+Lj4jVJpMinPlqzE7N+vN+tzbrMSr33KFF393ynzfTjeV1prqxdm2HFDTkfkIxlRSWbp+0Jj9Xn1EAY6oxAgHoHpDGtxf1KPryhlACv18HRe5mT3fwtkw04z4gBCrm0GrypBh39kLGd1v7PX2lXk8LgBR0NRfF9L3SIzjs8fRKoDLKN6pQh5DQV19hmaVWO9guVuw56bwsRgXb8uIjAqdElpOH8EvXngBzqoE5cNhm8au/9o5UcLUPEpb+4jsBz8Rlgh9naSamTcnaRpE6cGPSa4ahFICNqfzzzdrsTzbIxANZVG80HED9K7+yFuDvKU72Kdjsng0jERuEirQBDpzATM16S1+irLlZ2EhunlO9utk28GSO3Bh3Gge8+OGOICjOSQIMA+lw1xduJcnDiCBveMMcyv+YWfR7A7RcQ963hrctlPSJW/M8s2VIoUmL8nyq3hCeGfwa5Fveg/ADrL5eqAVeJJ6lpEDRMZBxV6s2kBtBABNz/hs1uBgnj58V1wYATZ16fPPmirQan+Pq+OMKl4zinYhxsl5aFIueWVggQleoagI+WMBcZv15hXKYPgb+VLHSyzxjFcF0Sp4synrK6o2kDEydRGMVC5Bh8dB+iEAHIh4OTvjp/IhJML9Fo2W5AI8SF5Uyo57NyHBJA2okq65MiuqPwvzqtjGTB/6uCnrbRt8Y1gYnqjlyD6aQUm+5fJ8Y07tiSBeWTTy2uf3KYJ/rqxXt6kAWjDZxWX5tCeOvMH+wEG1s9HGdHjSCPZBYFqkiCYFo69U+Zi2owWXVe6n6j1dg5wmqhoOztfixCQ+rjB3OhzEnOxaxinEM3X11i89aYRWyb3DRfTQS+cyCsJKv2DvyD3zbrNtZNEzqV2P7v18guN3cAA0GteodXUtW38qzdqw2/qf4wkf3n0PJW5ZCLXS2w8z0Nat78t2sfGm+d8+NCLYFHij3LyCD3SEB/l198Y1KowGu8FIUkQ0zw9Vz34Yd2k7NZQ/5DraXSeQk9TPl29LCKBUfgd6orWhXSiLPAX/YGJ5FfZ+XTVEcPg7l9t92ynXhXY5BsWEy9NddgrsC3sdfh3z6jYYLY6Qd23xFN57y7YyhwNtmcBhTsW1AMtmnkUAghDtGXUAjnfkKq4w+hQMGlPOGni4McKAJ/Spt5op/vCQqo+4WuAeYUMVDxVLI0Zm4x9/rtpe7b6gd6sksdhG70HpqwVDfI6FFn79ItwTj5jWf+77I7HUafbsmiJHog+sK/u7881xInF2QYmH9gCz1XhH+X4ZOfsmk8a+BoeW0nhUe+OrDMHc1F8TZbOcFyZd5gNhGhgwOQNuCDN2TJncv7js5/bjACFVRIvQz1z+sNl8zgoDkMptfMTSdNKVrd0buMaUefRkzmd645KW7xQ2EXsqhaadzypkkMaFJ9cWmYBsjZLzWDISylKghBwQaGbmMwSd4OezG13Aqsd7znk7HHHkom4Uy7fDMVbU9xf/fkTGBGvIZiDNYC17KCNO7WOed0mbhNXuxR5FZsVNWpIaV3FIaEn7VOsWD5sE7FOn96Fv03PaNi4Y2YzONk0D8ShHM+yepADF2hlmFY1zPZbSFc3IkfZ+YNe9Bpy3YQmfPYyneD4TIne534xtpHW0KRrwlYoTC8e6IBfaEdvqULKJr3YLA6UciQBBufKQ6FbLsbgYlwkCQeJC7smWQR/Yswu+HK5kRrQiJvk4gvc0ECWZ1z2eJCOmuKdIOQaJ6zgYQA65clbxubwd7+RmQ99xMpAYhOmgGJQHCD5GiSdWdnE0Yec8ZpjmmPApAMLMXc3qG3pO3hBDBAfqGhONg0aBOGUMnj0OJWK100iYFAbsUVfQOKs0vTafaHkIAlEIlhzwvEJYN0K18q1cT0iF7fSUOCluSYTvrejIsHJO+mqDw7Rh6+RHxy+SeBHLdURhuuficj4TSx3lfFzUE8ThlGsHgHINCIu5Ula+il8RaJ4k1t1z0HliGGoXpLpl+7qRgSJLjVMCXRlfw+cMwO2vS9gaatYGgcD4cdFhJjfEmUrK0oNLlWe8cT2ILTICShbeOLchHHwwoaBbygKx9DGgoY9I6HeyL4ycCQ8/77NpqU8SwUhCFnmIKWNnBS+KStt+2l6Gue4Jq0T0x+Y71wDYfJnNQICWPaQqRjmKOtcZEzvZyWUCPweJqtRXD8Bx/JvszgU4VrEJjWvWi1UObjgHLw0YHUbGFRQj8ssRj2pSp9yDrAEMXwm/LxAjxeu2Arm5hP1kdkztlCbYtm0SDK+RrzUFvdCJAJ/kRSWLCM/WXHCo8Ec4RNdRWWhwUIwmmtvmnOhuCT0vyUIxLkww8dyWKeaiI4L3mFy/tYT+M2S5ygczh1JYg1xs8+Vbjq2BAxOM4VXWJjm3WQOmOusJXhONU5353FY+8j93BfBRKvl1Kk7ZNgXemAWesHI8z1BwNELeHa3DApXiQnjWtU6jhwndIL24kGYKw9rxsd0VQxMFG0xwB7z+Ir7JA/VO+7lDLhBsHPgClOxukPiwmulTFQwBiwIywkGADpf+NKKeZNQPFzdo7LHEOzilqrOFplNffUkLNhurM97qfZ/wx6GZEIXlYqvfOygTGEUqSGcGgDeZQtJP5aNEEJTuTqeQ9CAu4vNyPYiFPaql5zwT04Dm4JR1Wuu+ZH+ecatH+gJhJlrYEqdT/HN6PkgrJnmkWsEBD+ZlA07bMJj/wLNHywRQUTif6Q0CGsnS2ibzgMF6z78liLt+BUE1c/9hhSWhEt/UF7W3yQtkAcCGXuUcaxO5B/aDP5YjmttCOFQuVYEV+oX2IOZFoMgf3aQ09es7FmHtmlsELWK0ETa102HvBo1PdB8VMhyRj14i6mKNYGgqucdQROiNyJP0nWhoOSg/2pRRCoQ1gea6PIG0ghYpZNp97ib6QsEmVzQ6EOsD6cOo4/Oo7bdybm3GhvLUG64hzA9x9rH+kOiuGcyf2vS2N9NnaXv3wiHn4xKKFYgDojHSIxBsbyuFv0RwTBwCtTJcJMcI6PSiui76nygQ5m2A4EOyXnVGFphsIPOQPA9v/BMhZepDBAY29zCZQOdJAxRIMYbE0IhB4huC15hF1+6kJ40jCQE5FyRKkncjqJqjpLpnOdnlHQxPlCxqA/dvOY0R+r+XiSmBV+MRAupcIAZdUVYseoflAAEXiukXg2064BRzwJONhkVIDTSXOX08vslPQE4tfttIlndlV9ID9XLoPiHXgFY3iAOvUTlmVR7QAWaGieSQRJRnazywqj/8rJWu4a9oGBh5lrfnd6WwGP+cDG49/jxyur5+fkZxyNjuJrgGo2mLo/E0WIMf7d9Ej4dUzaDBL4qwXcQFKasjM7sIDY7NYHw9ATWzoYBbCDCcWineXxXE0BHOqeKtPm7kqVeBgdMb+9IrUQbYXx5gGYRgF+yxHqwm5joOPK0R3gCAIw7Y/xkoobiaGsF6fgMQoxtQipZ3byJEk+tDfm46jl+nmuebUAGn/3XAgVQ/zykugEkgtDn5aNhWJjeoRpLl2dCVk30zfDe1SrKTeAm376Af3pzhR5iaXt1T/80EPN28e+ZvuTFZludoTobRPc7LvgTg/eCCfhzc22Y3C290pPfJ0J30N8/oGeJgwz+oPG/XggrgWVodDgnybqmUQ65xxLG6gdYhEX7rtPrOOfbNM9sJZ5bteTe/wDbd8d8yKmBpj0XSuEoUFHBUJrRalM9LWdbDEtjh8GydGuF3SStCD1h8L70NxYDkXRSSFkdFNIEuHIUohVACjyGCF6UpbLXzcJ8JYwe/tiu2qzgYjwLxyouBGNL2/QO4wGIrIQS79gkzkNPko345CbixrvWn1Xv49TstPMgGHkC7KW+OGFcY9XhXFvNFyC0jKvEu6McnsnzPbArNpH7xMM12IJqNSh2Zt7DojUjmAH0OTazaw/dBQIpjPt1lhlCrhJcikV+zIYJmJA1rcwXqX9OhOt8vJWKapUi2l2LjqYqZflw6mYFShTCe5dZN0jlIPf8bEzzrWdw9m8eCJKEXyf2QC3DDoo3DGM7iUkEn4VcAJ8N5T1AcG0EoYalFFDNWObadlXWWJr8bYbeNfCAX4ce3gkzmSXZU/YG+g4Bf6YmRMZzuHjMJVj8gPAhl5IDeIV2HXJfCeDYDJbJ8mcw8kzT3NgXk4T8ht+XXCXrl2+1cFFTjsLsPDuFRBgV4oux9H6yqh98ACvDGd6Ykr9X540RuaZ3BN/o6QAgDf5dIY08fkZs793/EwmJ917dyMoYemLVj34J9Cz7/YNWZafYmvjJOmxBYqONAD5AYL7C9qMleB8x/EBC5udlM0CbwUPkv4bbh+82ZDMb85Ovi6nMQpCR4DE+OM9oBzS9HPjOgd7W48TktjBCP98yfwkE6DNZCjSPpEd4daJXx12DWLHI/TWbn0afwHoxMK3RrOMBMGkQrN2qZKGmEl3pvufxoBubFgtqbcx8usVgSPDGr35tC4y/YVxW5p0NZ8Gamcn/WO+5bQnq55S2UlQO65gBTDbPtE+kDNEE1ayx0920t8+++dDbxJd8w5FY0R6zTt6wdz5QPtMrU1myImkKV/5Vfq7D331mAxPcv4PNLLe3OZGfeKE5GEBnSJjB6IEohMSK8tTX7BfQ5vRawoaVy5GnnCDaJnb4oj0EWrUy3NPLqUL+Dq6gH5ymfg9pZ8R9el6zALGfw3y4IUFBjbgKeVw1QkHp5T7jWG6uEMLmtwdsKe8/ewcbM/ODKxWkJHkAeLpHDOl6uoohhd5aiHM5EBrPzSB2jF8OwWaQmyBFj4VgRlSd9MZfJX3hIhJWaS9IWJ19dd+EacWRVOWUNVoa0HntrcGMKYzjlMOm5onpH27pVbh+WIhirlPwPD1zcCJeKcrTcvTQ5kJ483NEBtKp3bk0Qb4kRyWUs7uKCDBA8F5YAOyVE81RxZGfzqMd0vgPLoHyoBCBtbcyO8R1OC0Gh4e48XTUSBU14MHmQYxpRb8R6Wti3tdNSANIL4w1mhXXHHcbiflmMIcDflYJWiHcy5ZF8dxqc3EJq0tUceaYrnEx3VYMFSjMeEetE0oAKalsU1f+YM84Z6zDubTAX2LOK2XTDedKAwi1Bg/eb0h9KMGHAJmL6hqmbrUvBXHxEN4dg7Ycy6CAJEDtUpflfIH1tgHPPH7c7E5bxkBZZsQulDPsy5FrjTE1bBkG/0JqqtSw8iIaLNNEfQ1H6qkU4xetJ3akAcAwPmHsHl0zTkzJjPddtd9Em+pixOD5T/lJpN/Yh4YikJYG2jSEgWcw/bA2oav7rl52lBG0d6/ezEzbw/h/Jk0frUW+7wui+FgeodXhZE/9j1jKUm2xOFGN+4F9Mt6wfWZiTpTn2FSLtGJCDNQvJkoHLcfKCmQsSwsfpCv0OaqrQE0jfgr0lIM2RgoMMECbOmAsxflJ51UNdx/Ai1WTljT8hPWFeX5/qhSrjb/dfPFA0vwu+ixQEd8fvjDeQss8bXQWjcnocOcPSmMGa9M834AsgxvaSknUSFZL0qde1HGf54lzK+I9dycsUYSc2DlcGhqeB2IAxo8vN/SVo8NH0hejK+cvZ2wWyXDJJU1wMJZUPVp9MJLku7zITLa2mZE6STzMnd0NOpLS5YFu0erZfMMIUrVjye2RkjjQJ8JGH3r3AcrasGGPh9IC38JJggr9ZMt13WziJSL9/WG9rsQmQWSQPWivspwt7vjLabvD5xyHh4As37sA6BmJKvRBa9vdZi3bPisuRlRT7cXr7XmlKW9iSruQa/YXFgayhYvpS0uK/xiprDRafvf2DOsRxZvYBDOJUcRZxAaRht6LlhN8gq/0UhmI3Vz6cwDrTXjz4jVNOGQKYgQhHbrfczyrTr6zmKomlwbVHcgVUSGy7WXr3M1rmWhpjKivm2931hOu8bgPyvGbUEUqcmZhAC495v3AqxHqcR1vfoj4SVe4aQdduYeJw6QUMDFBCjg8XsY1SDyYhxXXh6cW7jkKljJ/lQGwqRJIBxphIcIniO9yUXuQAMSLi6EQQc9wug7+H5RHHPSEOAa/JIOHYP3hnvldMlGa84qFkoP/2tXOR9bWgfm2xFjQhzBFvkZvNu+HXUr14UipC1aQs+xW5TJ7Rn9JEDzdJMG+EbYcYxlsZCBiTfuctKWKd2sGerqxzm49WSmSGwXLHRK/VfhDGMQ48viI83ASb40F5ndduMFeZcr7F36Y2P3lHdjjkI08bFw4u/cYmhG5mmuTEhvySP65dLM6zwuU0HHDJdW1tUjPEKdDu2vRd/U73XWuj6MGzbjpzi0yMdhQ+9PspaBU2FqDzn1wlsg3OZM/ZhgzOTdu40+MiZgeqDxbJth+MSiQ3T7co0H2lY+yrH12tMRHCv+vLaVQ4h88FW/pLZ/8QRAgudBUkyYDQmyNzcYeP3PEBdYgRXJ3LQYR97GWkEG8aJa3p4lENNuzzwnJKiFdu951iTZk+C1Zd4gBw5FJFk+9sXDQSBptMZdmWPHsz+PtSmY3H0t9IE4ZzGEeUQkWg3f8YsQSBvENk1G7Nkmmh1SAO8zeTFzq+a0QGl2RrgXhiqVWjs+mVLWq7DeC+LyeMuLMNFBM7Vl6AfWdEIXxlEsvSYtCjFX7+1QdaMD8bOeV3pky9gjbg4zu8oPsPwSj3S0oQOb2FwL/X5yF66HsaxlgSosWgArr9PGy2GNlu5SAh50cET9kaCaVRludWS6Xo/EdETmmyE7gbE93JUfsmsbgbnLrrEpjGt02LQg6lM7PRmZGn60Rwc6iS7w64cWhytAor5JDgzMLQ6X2IjYToqoiOzZ1yAxTcxd2HxNuWylZGgULPSRPVWIvXzNbjOAEWyzJOEuvs1DY5DdNWeqbgQQ2FN6othYfuhMsmGiDfterD2fRRXtSKOBY73Imu6emq6j3lQANyhcfM4RS4rm5xM/Jj9jKc5a2p+vvHJyPPp8GjpWeSejTFyC9ixiPZVXjQ3QAFd3H2If7YyCB3OT0IUR0rYU+qfD1Unm8lpe+P0tdj5eVGFU9LI0JNUz0NKrR3YwV2eFmIUOzINpdSWdV65HGSaEt20k21R//Bubsucak/WPAU1SHza+fs+Mz4DrMrN+t7vmj11pHsKjzobtx1ClzjFn/sakjlv1u3UsTyUEvDTv69osVOSQkeuEfXL7m4rtsEqx4p/qd8MLwMdLuk6X4qOviw7lI2GjclCJpLCT/FHRjC4HZSZkZ2EpQj2Q1QcLOzDymPa+kgBPNMqdUZxveKB1SoL7VOoeChS4XQZXDurktc6rlNbPd0vjam3kjGUn7Xos2a3OWP/w+PvhZbiDqE79T91Gkt/ng2HUygeZtwS158HvLC89Dx0EVC6DLuOgWucYuHtRYylNJnu0v3WWKGmNSSpULoDlBwF3cf4pFyEVb85LdLDBdNfLzpRtGEAcS9XUyzcyZbSab4S9PE2xSLiC3Tk1bZtvRxCmwrjCsI5+66rCx1E4pjs5Q5tWCD+F61zkofaDju3GOLE3dI7pQNaTZC7DPQsZPNjSkWPlVqUkfnf5Oi8KPTqUKfLdAG1wN3wG+4HrgDfhvsDxWppR3E5z/08nZnc4VcJbgjsKtw7QazDP/HrGfdiPtWbXpxCsf+9NJ0qkf+pH4WHLV9zCXNt0nkA7rQyhBbifr+uLXgrXbur7nvRKaisDcZdRRMmUb/vG0OqD8QBLknKDYnmZQBnj9yuEMB3FiWQzKPzG5UA8ovcOwkPhCulioecsFeG825uVRe6BJcoXgoGrGl5NIUXgADxdzUs8oWQves2twZt+wQVTyOkffIpMSV6KA1mMWdZMARd3EnGXDEXVYmWbofLCz2YPLetNNf3X40IrSnPeLQnvbIjYcu465TYAVb2xFV0bEfTX72/3/Nt3RGHM4AjCrCB3FBEM+mA7Wob92goOaDkscuHv5CMJChpu3ZmywjhtMj6Fu6IA5HlF/nw7PSmBkeyAh6TN/nHVCmKeBiulka7LcPqodbr8B1MmgFLvIrL/dHcHa3oq6A6/KbaYpm8tBukHcihHZ9Q4DriCed/gtu6u8YeLl3OGUI8p9zL8GmDVI9J0zvt1/GCHWss2ywJ6atwTP/K/2rx77jBY24C1CAI+4CFOAYXxqoFYzw5IyF8b1qvmYNpxW2uQfaCr2AcImrn9lGxpR0ZiolygsyeldCWZCyq0Cq/xv9etCW8dB9SgbNnOh3oeTOMdH3sY+vzSBbRMU/o7ESwbk+4hUeoJIJ5dpJEsgHZHKSBPJhTJ9QBwiqfRjHK/ZyQCZMgnxAJkyCfJhTX/3OQEYpm7Jpd5UfKW+UxxWl26NenC53n0jadHuIQtZOPkTceoDu/y/555/ThCv/9KAFMZmW98YWvOOBL2btAgb5fB3OBfeDEjVdGiwy8adAl+Ofr2IdIYuXLlf0Hc0hz2a6VPKmbtbdVEfA3uLR6BWIrlyfXfGD0T/amF4Jq/v1WyVn6Yl8s+pepWfayqQlzrGMe0fzK4IqDvbnL7MdbNV3lzmbHkLuqW2KTMIE/zef981l5Ng65ETr3suXlIR8UFopzaJyIaakrcCBNz7GCAImNfDnrFDqzz2MZ5VxkocPNJyZesEIGpjCinOdih50J2CgoB7MSn8GIPa2+/30XP15Ur49vOxuZs/L9ZiFS6+gPkVML5pGNlsBpTKnM4pWOTHNbE9M1JBlvcWSVvfUITSJk5rq0JL25QHR+PzlZfvtc3Vd3vrxn4904w9lO/hJ3ropP9XvI6EsRwN21ZcGnkBuPkY02ey69wJDoEA/rMKbohapUb2JSayLCEk86XBR9yRjrlcgVXEUMfA8DeexR5bXE8dQ8wAGbKuHHi5BqtXjO0CGxBFxLtTmIUFYK1NJLPRnB3eMcE/srqfRZ9hQ0GNufJyVSaVnXWRmkgRyB5xRZaEiwEuE46mnoxyFMHQa5AfCFe3k8OMGlotxbkweoxsA8nFIul+D6QKIeHX4+H/RbKwxMgnBmZgbiakYI2gx0hNV891i0/92dIKYrJYSy1vIwMfNqGJx4WqZkjVyhRJuXMU0LLBqMjGUF/z0T3CpCGhEbVyboIY098RvpmC33U/l5Je91Pn5/enbK/yzPwQizAikjQrvztxN0E65Ujj0GuIVMnBQA6MRuhmGd1rBQnOofmI1I8BEjtOwxKdVREUubYYijdHV/myTTSnjpT3sEQt4X8d8o5ABL8/R+2iPmSWzVbz51KCDWtsU4tyLHGDXaUTqyu5QcWIXV6jzuiANGQb2/eCPiweD7NKxoAfHIi4eDLJLx4IeHIu48W5koIj7oN8XizytTs4y/Jml+LWfWy7hi9vawUieflQIyA88iBp48JT0gqmlbTAlwJXPqFEGrVuGQi64hJgUYv1NR9ElBnmDOJjUnQLSntUQXtZMb06OBA3bP0gLg3sYxhaYCNUh9SpPJiolq6Q4Ty5Mx9R/eV5Eq/PUrzx70eki9SHPQfRcW76AxBihyJOsebe5z53/RuMI81Dtd5qlVWmaLNoGSpcKESBD8cYZtYgQFLsmTFSBS+9iosnF5Uf5SIRWvwHGuY7iCKPMhILiEkpGOEd0yf/5n9x849ELJBGAh+qDL4EDZ3tdzHi4nd5Avb686fFdgScAPxRhVoI1alOwkryZtpXLPIuq4CpnAyLqQMvdZGAeRU+MrLeC2A98T8MJzCF9kGJFjijq+QyAHmMVkayF05kC1tCtekmjCE2O6vTFJitbYpOVLbFJ54hAnJZlyYZpWZZkHG/DbULGS1iEfvjPLzNGjyXAMIRiBCUgvnCl8JKimyNB3UgQRhPyBbU1c3BB3Q2ZY3mwMaDOSPJJ+wVYmeXLNkZNKCqufuLsM8cicfeVb8LNZcljfwDf5G81LzrAwovSsuvEhJLPWc5A9kwWXp6Ii6qlCIkhfAavEhj8pnFx++jzLwM4uPAffT6LJ9TP36SKuNCOVsPTz5uBOsrVIqCPLUHr+N+iBIcjW88+jbW+PR9y8zpbPezv14xW37HgKJABULvxCF8y2jcWaHx0oV4ijwON5JpQZ/HXk5v7078pcu9cFxUAI0kPN75Hygq2avG8TY0QBfCXhaVIo1xTNl3/31NNY5kXG0/YaPDDxpbglIFS6kVCHhVdOHxcDLjwOuL1/SmeIk5x5A/Dq2ZOSYFirKMUhxE/6ebUzW6m7YjT1qAyIxiiA+mDqqpS3INke8IsIzq45JTy3hTvOxc9z3WRSQ542Z7ejnsffu4w5XDpuLvF5fOPvxoFq+z/3PUJ8Uiw8QtDPVHOVfSOokKUQgwjQko46e49TIrocvqp61jJtx4JDFauMC5OOvjkSU8X/OrVOqKgdRDktH99G0+jZIbJpXut2hZIIvgDzycWa6B/WHq5aX06xZ8PjfBO/D9YL2ZmOAIPN8XW9OGFp/piZ83QsE4k8ge9aWXNK+PrUdKrw0IjCi0v0fBybbYEOXEUEioe5rOCRrHgr/iuYi234rTTOl/4AaYc5c2UVoLz+6CBqDKVr8R+7jeiczMGS0d9NgzHm+nimzfRd+DrNxnkM4YKTOne8UIHe7nR6LpMzm/ATCgnKXkBdwvhVUtjGLHnYOmqcoGTD+wFgVSGjrAFBNtv4hpfSjIDxJKJpW9acUgVlqMiPvbm80RFe5x5L3VCxUpGAA7GbuG9SSyuaUhmvoY0tyqj7A6qfIKUobO3lMDZFHNL11NoayIhM5wjCRLuxM90B/X+XW6CB+2uw4QUmJhKWCEvTsy4IFTpMtIieDZu80GD/Zaxq7ewmdKY+nbUAyNHMQ4fBR2ZPMCdoI3w+IWZrkNCW5arcOCiGgNj9Va8c6oYKG8m5Y9/EXV019Zx4F4SGSYkhJnEzFJm+77lRQk+CVYrfHTYsWyVYBInGkd525reNGxYFdZo82VwAHEmbOZwRasNfVSLxyVQLao7JJCZA1fY+UhnRCduCEM8CzOI/KiTo6hNZXhOH6ruC0dugiBkhUr3wXeuRoXWXF6qHQ+3ituaQhEJHYGpwEOh8LSSmuBUmUq4Nm2hTU/RMBmrEE2k8XrF865kb6hYKE4gESA7i+hKoaaSvvUMMAc3HfUxzhnZQ15HNCV57NJDoKnhjkswKVY+GBlo7FcZtWBFGIYc4hFKpYgGa4hEMXUo/+wqTLzXJfY6LEiE6gLizOwF8NQ4gY3Njy0pdwj+KS86xJFTNoTkRceiCYNPlwUi6H8RX1fhtqN1Sn4aYJ0GRcTBzz4U2HfuWSa/uXdZeIuCrDbLMic8kBMMVWiw5acg2nns/RBSU3GaL9W/12dYp/tiWqpXPT6hUKN+g7b9QxIHsrNGqhyqtNL00fk9KCcqiV8Vv6uQTyB1BS1rZ0yMVy2rt7V75WGcQXpgrC+eYKJiaq+yGqbS9g5YAYj4do1K4puqnjGwZdQMT0i1wIphwjWq5WPVyEAs7Kd1HBMV0QrkEVQPMY7vgAwCMI9xuBCTgox8yERCBdnaPIzW5lG2vkVyuhdUyecX+I9EtFoSpesiDjTnTIwExY3RpHgjGCpouPSy4x+zm/a0vR/vd8YMt3+WXw4OOi4cD4S6XfyKRxs+193fw7Bh9AYdO9KeSWS8iDJfM8S584CX4YxnGLpeBgGet7z+lmrl3ghkgwwzpS9XLdD2OC6dSDl/A3eJ2vm3GFQ4vrVwMf13MqlYROQ4IoOjCBTyDsGIwc1aNhx4Ta6KBAYJ8dVMy4gleSS/Kzsp2c0skpxwW2fTKiMW+SgtRzZHreR4ddEMpKGR0FOp2QdVwgueLK+WOh6aEtmO8H14mmv2TKzp9eICj26nLm7A4XYu76/eeIHeCJnHQJsRsfMRAQHFLDzgrpENgwfWcXLyPHoudej79oqe3n4Owu4RSexkHos1eBopStFyJOLu3VOKQ+b1Aa9F8TNhr4SVjy2L9SYU+4ysunZuDLbhR0DRT6dwBKrTaB2YE+/WTQgFxyDAshZHtSebjlJEC3AfxxPdP3kCYRG8EMv2mLbBSwxwE8dcfMIQ30H4rxW0BZk/aVxfhex8fUImkw1x51Cz5f6t+oz8zXcMYTkG6FiuHIavr8y0Ose09mBQqETAtu8IDCXWgNae4Qk/fDGAC2AHeZfXyRKXx75pY+g2JjlBUTJ/PVUQeLv5bH4jOKQZGLWrX5jURvN1fgxBk6vFXPCibp1WZ5K/CRyUJ6aBp7pws+Bymn6ny/+O43MvrBzoei84jc5hYt27/nbIT8bMLOLJlfKSeFeuml3Gx/tlfO7s2A4MOmPfHwLrPE1hZJuL0+6lulsZOpA/WvJk8f+8/P7gSlRtXcda39IBi1szjrfFO5rf1JNqER4S6bt1HhJy/49jz+04XW/W8uR5720AXPmO0RhQ7C0pEUqpvYQUV4aeHjZOZszroeyAmmyEKepYrTQFU3Q/FYbXW7qT7q8H3Q3O3XWJS/3BRAh5zB/E9+5082rUP7j9oR8Vfl3PwAXgFvgVF4xtM30uCmNHy+IuEG7GwK4GLmaXDvmoZM+qitJz44tSFgBMdxRrq8J1vSiNVpe5xoQVT3fuv7V7yMDCawoH92aTdecqEzcPSE91xxINdBXaD24GCm529yF+8jKBmYkrZGF8r45v1shevRRW2nBbF/DVu8G5uy5xqT9aPHlhIvsoRHP9HrOEP/K18+BY/KjjKySceya8AFRG+Q4Zn16eoOujpWMYtwFC/gwfPm6ospkxb6mmwE5tYmorq4hA9P5ADWxldptEGafFdKPKIyWre3WPAQzLPLm/I63lKvMOkFXqtMFoFJ0LIT9V+9WL94TMfwGz5p8rjemRTBFPNesfrraz90vwrXoCcphEp8M926/TYk9+eaAqXnOvqBxFadXcueghqISOzurToGD6cR0Q97QBSsu1/tU/Mzy8tVY59DFimMp04S/gjFt2X8jbrvjM3x/VIZSQjsi2RBl463exT0dFth6wF/I1R/6nkBM6LE7t5LhHZhGpnySEeTJC9KdA2YcUJiDXdQFjFXrqB/jPWB4wEPY9hsyGndOu6wzBUBho90/r7MW9WAccbLjRywygvQ3MzsSl/J7SyQSSJAxBQL77YEJ4nCF+MQCEssMxebuT0AXt+Id6zaCSa3i+6t4wGtk3fJTum6v7UN5/QPZIhZT2DPxA6eQ4ff8NP+hUhp7+7drzYxvuxi6qD3tMyQhTRAlvkj86FwxaPyhAcrfLiYCdb0Am2N12i1OVc2QM8x50cr3CyYbjoKQeZZ66L1wcxz4HRHUFvKEnjeVNxwjCLoENOnC6jRhfCh9jiPGYSCe92lqfEWBAlkB5fAwD3EBMRYMrKzXoHeivq760irUKHgJPSalF7nvnOh4CSIOrgWAMGVlpHDL/SwuiGy+dlDrqmT9NIdtTC0U/+LsFRnFMccP0ihRyUtAPhRUWlj9VltVAhFS9v+E6r9wPZvRIZDh9lqy35Jm6nxOWyQR5EOma2XDXPMjsJhpto0TzJlCOMU56+C0PyqdyX/4z1bjK3RwKwdNb8PYfM1RGor9y6wgP8wBSIl6x6HhQgOPhe5srHAS6HMCXMXlePKKDpRxNH8lgKARxfQp/5M9Gkb1U3lkknlRxyyBcL+yKSE4Oudsxh0jlcZWHoY6CNkhYLur4itFghD1GRS52Hlg1kgnVPi3jbgDfIeOaK6GcSXd5low5S8eUVGmFEuZDBkZTwLSWaymAeeHbtoXySLNFeeQLCzGkC1otrgkJQADaVlYubeRqa9B+oM9DJ5egjn5HZxTmMmybybh9P/WCmBkFnu6sG5v9+/2oH72yJ78aITgiaW/g9BPrzVqpxx8HjSZRvdOWb7DoLgtyYKecbHHJsRhOZX2+yM7Koq4nY8yAlwEo9t/y944T3bTWpUBthccwxiNSJHJW5izjujFcERqOHJfjgdsCq0J5hwq4rFE7jdHxCIQFJLz8SG/ys01UYkwO0DRgeVPtbeMjQlFtsbBv70/W9R8yhf0UcGixjWhq8IvLare6gUWCAi45Q2tI656BUwq8PK3+AqhLG8VXyxGJ0zYN3tzX5C6ANFYjEPqqNh8XhQu8IeqOMYAFgQTq/Bk+oK0JcY7c/4DVNQbLEAKpoKzmjtKpDqWuJGns/pKyLdwCf7JrgjRxOJ9EJEpO+PAefItfV9VNQCSG+z+4G3x/vtbOb+FRa3pIXIAE5WBu+uLT1NXvNlYN8NxlQC9g8ZHqkMle69EuvoNbtgtpyqCqZfR9EDZkjq0rVdZtNDM7u8A7Ofew38QFLRzDKGzIAdwSSzJ+5SGSY1filLs+YWlNCa4NSglL1mZD9jyj2MlJFhu9+0pni2max4LABR7j7NdAoQUCr03Z4RJup8bzB5EROQ3CN7v4DUfX+PsCK6Bs3AhLYQXhKqc0noxoW8pQU95DTMXKhPRvH4sWKjfkZ8Ya2sJQriXuks4Db8ePQTR6qe4we7LZ7Vnl24Z0UEGC5D0cXrbVUFkMP/LoOsLfEiB9U8jVum6xnABEGxpnCiF3/mVxS63Ntp16l3fA7I6WWXPVH0BT/rpmt6SKngL4U2DnwAF4Slm7yw7gcHnT3DTNoGhkVv9L4+AniYtmZgKy3aDe0R25Bu49imTajOwbafUjFvVyIb+5X/i1YMNE5gBUT3iCFBCzwFAi2OP9TsJBRRbdtp2PtnSdEqUy/lerI1NSnjKFVAZc7ynRn6Y1k/5kUNXCTYNWDl/kViUNTymmBAmFL8Cpp+2Ojem5KhdoadWydjouzx/AwAPz6ZP3sPHbSSb4jxJmbNwGdv0oHjyiU79ykgJzp0kiSdKmg9uE7bqmAafwh3+dFuSu2LMulW74j4RXKOKV+52MkEKBkgwKUrB36IrRBJ4tLaboj48OhiIlM1stjA3x7IKZC/4L1tEOtOXvLm8cLRAOpjqpynW9E0904BNGVmYjpYNzHun5LrAA10QicB48v1xALTugLnyEGDGPNbbhqZ4YPE9gIw7wFtTmYDdNZkGvmmLlmIkeFiaZjJg5ORqeOSQBgxEsX3JhvKAHL9P54BvSTQM/cA4IrQwjA6gngJogLGYMDJsuB7rTzuMEwE9aSj8Sxru6W4WOWELw3EPMG1W0E6ZwOV+nZAm5EcndUB5Dqppjnglr8dhAdHRdNsXUn0gxRvltHrqR4Ab4y3PNxWDmlAon+DTYD8Akg8RBnNJZXCzMTKrkA/z8fB87zy5GoYlsm1TWMz7Qhm9WbWaUaGLr1ig1e2bGX0qetKHIIR0iADZGe60vHYj5DOJHh5LZLYzXw5nVhCyJXA2sjB1ce7soXuxrHXnyA8VX9SxUqO7vdSg4YNiCKXTp7nKaKVs+lQ3pCRr68oDksiSbZpOVp0tOevDhQvnCuBORkYmeGXw3Ykt4fSIfchJj+AMtCPHPtDIYG/FKvC5GDJRcdBzr3H4MFeEQp2PdGQvH3JdwDVaBPiQwh3Kp9i4RXCByHv+a2Njag1FO9RHtmg3LFO9sWrR4uc/E+T0oLzaQ5jnRQP0GpU5XkiABTtuAu97Qg09XgeoiP3hf/M1G0/QxAQ2iRQcY/MbMCH6wseAQoevZeKiVj2yRuWyJiYt567iIVw7KMgG4fa0UfAMPGoXDudknCPPlXEb57YHisxexBWKZklLgOkAhR+RVatUup7YrblVEAiZcLmbPvdHWe4hAEv/vEGltywFKIBrKVynagcDsCBVuwEv7lQY26SstIp0h2i355fiDYea6DkxaH3C7xwmdS0cCBujoe1gXuKiqtPZkdq8EsDdD9M03QFdurvP0NZDveogwMm0/UesgaOouscKnLgl6zvUdvEN+s6sGma4rgDGG1209tpm53OqZ9Wmncb/HKDQEhwgUcID0kjMFFxjKbljOGI1lRM1AcwYuwwK4vnJ5fiKIF8rt4teP3YnReD5UnvA5/KoxPxtsDVQL1M7HhH0VfVjW+qQsxjATSgTbT67596QF2Wb3fAHie2B52eDQhRoCsshalTI2PKGkw7IEV3gnxU9W1GePv1nSPHTN0UHQoAvTX/hACkWbHZ8zaX4rpKh/LoBDc0m3llojB97MSlgbuLZ8XilRN1Dw2ZVKYGvPTQWtAt4TpBM6RNORN0ygPpD1O/oq161FnTPdfV30oKFGmBXTlyXVsSO29TKcmWC7kdLH611pRaWAmY/ESEndpVS1KUvYXFhkfG0VcAphdBlMGyy6dzolkIwqgjgVS1AqpS8YXHF0/EqJMl2XJhDfQnRTejQjpCTAv0nzUuXBFIDJwSb3CbPY7ytrI4ltUd3RAUeAgzXIMJshWFeZxzs8NuJ1FqISNxbHw72p4KcPYnCsTZCsHiVfWEHjRKtHFdgD8p1X1jwwCI10JfdqCXjFiu9P9PuGaDwnTZkF82Imxo5sMfWN8tpMhnCUDv1wekNTaEwt6VjA/arAWLOEvizpZHxkRx6cEBsKCYaR3Ksp+ecpZSSH9GJa/BBaYWcQIgz9Kc73EJGUVOwfijipfgWwT9FVOlUBsgCmmxROGQ4xQ/VOmSlIRIYLW2pKpCyfq6cWymY5XzsUndtYEQqZCys6C0xFvgSNGzM0PYqnwNjKoSiwTJdUW4K9jbpW21K3+gXgPsnQ37TuKtmfpAsVoB/SjDaXGQgl1HkLtuv2J3hd/efaKyyB7JMXt/ngi5cXnoAFK7hKZXZ+v4dITy3NfQRIZwQsxosygPixgYXcrTuElvRrmYr/Hf6DVKrekyH3DHBcR/UEsrVTEKnPqE5P0UTagM5yrkT2PZJaZ03osG6zGyjgxRCatMk23anHplq/aRoWskK/6A7oMiU26w9gyyW9SvED94PQLjwzTVbb8YMps1QvmXtzYnQpaswGJhhIIsCzVf8Mu2qmrjYa3NRUQ84arj7DYwk1myWHQkNRg8f7pId3Bus/c5o1QJXtVPfZzfptGasanLI35V1o/6RZ+HlKUh6BNHTAAktAjNjkdQjl2fXFAjnPLAge8IYJkmhlVXJVURu1k0rX2Wkl7wHY1PyNjx+1dZAR/PWwylzLveDYQntN1U77rdA5pBXgTjKChzcXWhOy7xJdoHpP0QVsP2KLEE9rFbiAEsVDkH5qO8g5U097Cfr4YFePKAYo0kg2styUBCSGKZFiFcCOGM9RAMVy3533ik57sAqnsDPrLliODjvnYTjYXI6i9uC/hMUipJHNdmRwCQGiig6FN7iL/r3iKT36oI3Aki2Fiqh7WVuRMWew7A6RnHsER0tS2Ew/epFcE2WLNL/l5BpT/EzRETuiIBkE0XQ9iQbDKu2ygtPEF6pjNvdP5pvNK3VqwCWeWCZ9FHWwfe9kI1rS/ifIyt6hNGTCETo1CMJWxo3WHAeXMmpWwc1KV9ilaGh+urGA6IRXCu0gLczVFLOoc7jZ1jE3HeaYwE934ysVq1Tkce9MESEjnFY8eRysZS40FYsJuck+BSXxq1pReSzecAxnVxZ0renCaD67EF46PdIgXWymH0iMByiDnUkxyd/kLsvc5m78kH8o9tc2AeGr+ekTNiDB+UWCF2H7MNB1vrOxwqoPSHRs1htW9vyIrVfxHZAWOazXPBPhA9Pl31M66/Buxy5wlUzKBsgkUrP1qgixO/9cAbqV4jAKRGbwDgU8j7Q9ViGC8UG3ngMZUXAmpA8c1aEAryXbqVs2ogoHLWERqjiUzOs6/5KTBzBmI5rJEyorT99p/9TL/nYNPS2vDArT0S6o2vfRmT8Z8Ds8KParuyk8YHY2lDsZEp6ThbusyVjG0oGSifFttIVSej1Hjb908myZUae6UhQ1ZAbBjIwNCtgOdEucyxztUwKbEj0E7ba7ZWNmGpy39Wv9gPQ+ABR7GApbzErV4AMun6iQYSWEVRs0lwEQT5oqgcGaGTv9wUsUr3KKVy8E8dxs0+zBtgofJvsYclamBufzx/46GhcZAelxlaJxDeJ9sj7YqNf+OHzT9rGRXwo9u5lRayGl4+k2XTXL5LuB6A1DOJQwynmsjQdHMzz82I9Ixj33MAqdHo0tlbt96Z1mcwPecAs6sgnRmQp3NuTiqQtCc+OZFJeMJrutljZoKaV3+UzOAKmmH79x6BEE2fAUVtn1rlz+rmTZWFOxiIV1spm55u/zohvNgnpqoLaU9TxsH3RNwa1/yXJwuzZel6a3re0/fnuHQFfXRFv1DmMI2/IYBRfQoXBmqR5dps1D73735uGMsLdzdk03ycmmM2DF09NJQ+vhG6qH7MTXdRYroCdsxJEndDM5OSOba/K0IAMz/BIgrp12onRQ8lVZKwN004zhAHWb2CcQC1qPcNJyG3hySfK7MqnOI6Qz1XWcYzgHBjY+qNuQD+Ww9CHp92DL264WOUb6Lb03Pc3hVWb3t+nLbRJ3Prl1FDIjJgoBjWsJ3uDCIQLzVuHl1PzG99iNe6U/95YCE7yWWts06nCCL6jnm/2j1ZNYB1BxWoXlA1Gi3KOALwZ4TcSXQxq09n4jjym727EmcAfzRQ0J5Yv5/XNaumJLFTk/Fxy+5HAVeOrPvGZBhbE/WDzWls17IUQTGAOWhN2isP+KSy3o2ras6+t4n8v7sxBV4VU6Hhe9ynG4e44YKIwHgxlscJGFeIQE9LNCCmnPUQQhLmxkZgVRubUdS1sC2/EGmAoeDmbYQ3MsAT28L9hBgF2bgirUKUKey6/lVzkGqP+IA98Ex69zggU3wvtepW1Ry0+68cJnhJIYLrAiZzzyG5wH0mNoq8+P/zgRh6QVUqr88SGh8wrgwohehAcmXm37cKpAlQf0v01qvBk7CkOE5A2Fl9E47vPH7/vHWbp9ub+dUeDtrk+Msuyok9PMN5CCHQb4dmM3cxE9woG6N5Ov59UnmQRk7Zlf81Gc1jwp243FAAiN68zivzZl+VrSRSn4/cHloviDQBhQNkszMy69N6ahybYCIDKyr2QDd2X+Mq/8mxsiInztBsENIYGaBKvSbpeJGeXdJT7SBBNacZyx+8+Gm7AbfXS7pTxpusnwVi3lo7KjqPDjMTMjenguZiuvab0++hbIFk5C7GUudf0gvuHANwSZ2HEF68ykpOqyQOjrLIflFm9O3o10bc0Sj3jPaePps/OqKH0gx73L4BJH9NnyS5QFelPZ0h92ieC1Jddk/IE8nUHe84t2GWiW0eyYsjr2wIjPApFY8/1Q0AmDSGUo5D6vP6P4vfIdUlQaecOhZRAt5E12zCIOMN6IzxRqYQgFPNRejUw9o9K5tDWqIvVi8vQOAk/NIqk9LDMzUI90Q3n2ChuglERpTEqAhqNJ2Wo5aNjB3QMU/kEV5VAoy4tU06plfjFfRyDFnk4g8zhw0HqPEYhdkaxeeaY3fG5pgZfy7OGNKsOP6wb/5YfBzpAwe9pmO/UjcGwiBzn4dhEIRvh4X5RTlnYD/7Fr4EnRFZLi6vsrGGpy8YBoB5fEYAE/ZAZbphgIPAiYTFB8sv5QZ0kagHgUMe/hAXf7HC9+oEqaPxo9M8rR25FaGh5vTYTQMjYwzKv2YMHS+eFFeJy/hq8i9UrLIsDibh/BPRlLNK+Ce+ourmMtRQSdozWDTd150ZhLuA3JL2Ys0V800ouh32Zsl1rt0HAZ+q94R0emU8JG0Uevbw8St0dQIYxWZV8w7V4HKMQij0eLYZhgijHYWpqrF65CztT3oq8wCFnOQuE6CKF3jatwKkIXdQvcwWPD0SkqDrQ777yJ49qfjwZ4lYeBklLt0f3xKKXW6HHJrb8AuVc8QOoYbFG7nGUNmB/uXfW2643pgEGkMvAr1BMB3yF6oxO8hmUAAaIns4mD5CNTLxr/uA4VskuR9/bA3lqeZ2an+kdHTx7UPNZUjxwYYP4LksIO4pC757m3kqI2s9w8fNHkImeH7BO/QTz4Z6n0huW2bxNi10Pxv5h/YpW90eDrvjdUQ2MTwws1sljWnd5UG0/be1QCW44A5NnM1OOd2gVrjih3tnNXUF/bWqKSuxmeM1WwLS7BNCuwlNsZKswBsg7zZkHuy4BzNVt0oZwYIR4qamhTKAmf2R5qipcILz3tWAOTPBa6fQ/4PhXEROF0vxEGSAZFJEdJ1HF2qEvZBWc2sohDyscAkC1YqdWbNx3om5yq8ujgCGRwBqRTq51Z09kri9D5yTFiNR/tdroSzO9cw+NokHFI6aAusBgx2S90CDw0DYMnbFwEqnI11lqzqCvxtqwc3tIJ8KwueBsa5pcKluYpcbfOA8mSD53xeJ92OR97rrQg75cnoLQZsykbW7spdHQ8kckVIzQoypxaVAaeO3pRTnMqQxIeI7u5XBmtHfHfQHV+zQ6VdGCmReYFJ/TtRNv8wn0vvAOredisZ2zSn0O4hHrAN827GmQGIStfGgNkmkReLIQq1o3DQZvT9Zxtp+ELjlt/tBTKYFtpV3kZRg09GfYs4XTpw17RpuFtHulcLUucnm5UsXTn76ZAi77MOzAFLzZeedc1sjjejkhh3+N2VB5SfJnGOU/OX/j53eTQdpa8TYR2F5p6l6MM/cakYcjSBOtd6g40pCqYos8rS9/ixHCa+xqdHEbb42UMYRbZeI0xHJ93O+anAGEytbXJxBCGqWFgcx46Kj/kL3ENbt1rq3ygDOFyVQQWB/vm0q6dwHKBGt3W0081xUw3c+P87e9Mo0nzQLK6F/Y7nGBEW918K3y2RQc/TCfOdPgJzisqMx1xgCgn6/MPoHh8A489qWm0lUg6lY3ecAumprRK+pzVBsarlb4dwBE8DFh11gSJ5v6GDV+5fGkFrFt0u0EzFu75t7mE9Qh6vQGjLfcEiK4Uos/zzNb2LamztSWtO0WCQVvyWxZJIoyDcWV+VUUUn2pV3BFMVwZnJkQa8bs7ru8lDWAnvhP0CXiwu+x4Cj4HeTuAh5ShC6Krj0CKzOuwZB/Wzx70JqgUjxTFnhHUPHftVkRLvwYIJFY55Tz9hlALbN7E6Bd4AYPHlq8IhExD7lPhtMjb9Yc/yhY2Y/t6Gz3tvhkA/yqlC6X0vt7pbJJQzPnaYYBL+LsP6fnTh/vN+zA83y4L0J1qNTVvWNQ/EED4RF06qRW9UPdIMo/RBc5hSx23VdNpKCrqeQOQ4vqrOd5jfOP3T+DUYLXHb3RU+tf3ui8M0Knon/iOWXQ15h5aSrmQpLFZYSAqLCsCo5Z0b01DBHeKgAgORDl9lAsCSjx/wL3mQIewlyML/lnjiEqGbOUDmPN8kVlmKtN/vA7pX4cFcCH33cdsCZTtAFUC54W7wrOQawJTUpruFNJMgs39MmU8V1i5xYJV7ISt6bipSFw/dKEB6BWU2EtpsydhQPJ5DKJJkdcarpERHI3hewXhVrzHAkcEcRl6jFUiH4JOYlmP6gJruOaXa5gDyx1JEM77YHAFkCOgpiH+/60S9ClXeTWuRu5Gnk+cUbqvQcmf5f3ZMu8EsmhUVEx0c9YSUov+nnQ1NW87urjyhTjUkJ4M5GXtHA8W1hLc6AR3j91OYeot7sqB+0VR8Fiz5aiH1rRMWU9DWp8DhvV0PR/AVqSocXyTkAE9f3hspZ5126Cu4WHkgraNHX5lTT8zuKgPoZujVREZDWG/8RUDJEpLO+UkjcNgmt9rNkwLVK/STETUzFeEKqIgGE0qz1HhTFZs38PHEpp0kJjBsBz23UxkPIwMqS1/WC8z+f+bBAnAERu8XQZNbhDD0lvAcDywCqZsPK3mD9VEy7aj5zXcw2ORPq+BG8SoGPq7tb498MPrX1lgyt0pg+8vTOWPMRK5+AHM7xT7g3FBQ8fAxaAX/65uJzx11hHB8R8Nd3DViG0aPacH0p+fpAVJM2jUvKFN6tsg3lafXgUPgaPa1KnCdba6cZI8XmNZQ5vIpDCE/qUDd6ZBOzJTUXxm8LywrW5srlg3GZ4ntIvLsR4lCLOHXrShkrsS63GhZLAsGAGodtWeDBVpW0BsM9XdDKjelos+q6oX93pfQQGx4aUceKHsMFGdhMMKoRgiW2FiT2ENtG4CjTsQIWRh6UBSiDZfa80HXkOVeisXtkqA3WZ+kyC/fig//vDrU7aEQSBLT20GFtBbrhGtDBEMWUc7VpE3eYLx9QHLvB4eNzrVpYJoOYHYefN1OenMYYol6KYiCGI67Q+GyiJCG9nIr5oN5RH9V4UcUOBl89Vq+HORHku0ja0GJk8zxPA33YGJl1H0w1bCouWelFJ2TMCTWUGYCHSLc8KxnCCpbnSbIVzynXYvMoOlF/uJTWt9ffG4hxUES5d6cJ36clhT7ofUe65QKNyDqZxmiMZ1YSYQnpOlbhfI9ci6G8ojBjKUt4VBJu0+ueugqxntXhx0YbzXAEStFgV22SotN3J2XTma4sMXip0Kmj2FJvzYzGBJvXSm09g/rgWRczBIFWa0kxCmqLMCMH5Gc0y6oF1GLGSTn1dCuK3jcKg0y5esD0rgvb7zoqlaZ4eNx2FcN8WP4xtNzlDvzKnlKshlPvJ4OdRhdZHbqzyAzmLkGp+RLPiO6dtxCMh1yGJ66v7yWuEbivdC3VHxeEKhzvvAiz8NMUfABGGSDkU6fZH4XEnRe7dhuEq3/mhdDqWTAaFR5qnE6icskxeZwryQVUnmAXYBxsNalKkXQbSZDSxC4nOj4TCUmggD6sW0mw/QKijINhrqBOAUmc188HcZ6EaEwEW6Ea8sF0hdSng7SDJSlT/+n0cRMy8HVFLqrb6EUfUF3QRyDEV1LPtIg01oHYTk2MA+D9ch2ZcJWOcd0Kpad0r7+YNAiO5OEZYLF7K9y5GSaMWiTNeZRHJIWOqrqjz5GKWUxhni6hT0NoDs141a9iJhPDh1JQD8u+2eY8ldVgTBMlo3BNR4+qK2o5s39LsqarjxXJGk30BnVOZEir50y0KtFgRt8CSLBwj31LYQvRKQegNAfK2kVHoJfda2WUKJHgUKsB3mRtR8JFjjYkMUng7pWthfgwUCBc6aJVUZiNSkTezPAby+4KQdIPJIVVdsce/Pyk0YIKlHbZhAIK40KLZ7fKohBpVZ79T9ZFHwGrYGhS0vpejejsOSYuppArXxsyGLPOFaT0D7e+wIROLO0BA9zgsq6EHo80pklEESvg8+jSdb0FmJhaqVgrGZExkc0rOmJVYTk5AuTYtEo71KK702ztTaiPTay8qpc+8fuBwwJ+Sz9/A9sLgaB6Dd8e1wEltxRDQJZkItYEsDWTymRe4YzePxS6YTw14sR44dfP13SJHzwAEEfmXKepgzwMV0T/0xbt0rfcbe+6wifmz1q+mAb+jQfUhZJ0M66WcW+K3HyrYQk3ur53w9SviQE2KAO/E9jF9TU5QAYDmCAuB6SOQWZpE65PCxt6XzOKLRLrLLQ3Dy8Vew1Ju4NaXn+YEd4Kwi6u1KMp2+/lp6pxpWLroqelnBqw1SkGY0wWYhGgD1XOJ0bVsRr7Gc9oPTH26dQmFxi6doOmmh5BQ88iS7nhYjx+/TgcxzOcrLWxLwK/iJeFm8TQMXgl3trNgjCXUjTezJLcl1WK8XjYVmaXF6afi5Yu5mYhk9XZtPcNa/RvHonqT9UxuvCV4yh//HguGgrQW3o3u/ajRnXyADuvMNqD4BypW1uU6CM66gpsuE5tMTjeWLh472ZnJOBf9+g88L6y5Ml5sQkhwcgbBgG9JCG3izQkluWBU9T6K0Efkw6CQb8UGVww1Wg+3zAWLD1zrvzMwPfGy6Nzw6ks7gbDsX5fGW2S/D33Ydbk89Rz220fT3yQ54FFYjsj7ihpA1m/5pgQ7/bwbGG9JGl5XsUyGDXcaX7JTNhoJpdf2idrkq/xrU/ZbZBdBceJOD5hd1lqylnCRf3j+uaaVuP899+4OHWGUQhZq7m67z/X6G83xZqOxf+IrHMfu2/5wFYvWxUmVa155P6FpmGgCIk9gvLyyk83YQ0O2QQefNjMDLwckwQxvEMEnZWAIPhNQwiUYZWZ2rYoqLA6oZ8oSkU0CSEZbFeTjDLjcQZB1sOKm2Lcz+OTjGQKEPMrt9cCQeGKKGCtmipTGLpADEeMJ7fpZLybkmfHqRqtWE9vdGahEXKs6p4oIOKwTX5mgYvDWrKakzLb4477Cl5o71zdDeQUcJgypx2oil093P5u4mrO203VoK/rP5ho/mFoc7HqWGvYFPw9YJ4BIEwqVnPW7mlaTZCyfGL6Ct/lbmu7Pyumj9aE27zQtq/pEmobGVdXmvrQqE8//C2PMqN6v2aHNq2sZalWu+SyafjzBfdWoILeJflfWuTX2dZUvi79FHpwGPnqmXfyqLXrIdy0jQgm6m3bNv5702cXCo3gzEcZBfrqlKeat1k6vPQFpFGO5WcXuTlCy5Pu8Bo4hNyt4TmlVsnacXJq8i9jGT1YHmTp0IdwT0EuKnuRR7N2h4cLuUJdNcZDXBnrpQ8WXdhzS/1yvNj6w/I3vflYpyd6R1Nkh5olnWeuioJcZVJPlku21JAHp0yoiFy2xS86T2+Wjj4VRRanlVIbRrsMGHxfBzn/PNZ3rNfsfYFa2UGda7eQNGYk7fU0AyNKtBTQEpQFizycIoZRxng+ZBHn6u5yT9gRR1nUjMP8ufF5s/BcwdMjgTMVOB0lftqN3aEFHLDs/3f0+4xfg7d/PX5y8wyYySqg6CH41WcofpnW4dDU6gp9dErsO01ZkYWanAlpJCmEXDirLysek0Rah89BAZXYvJGnQbMreS9W+0/07kf8HzgD1ojdnI7LW3Qjk9Ba00ZVCW9O47EXDVI5w9VVzfmciiwrnPl+44HGa709dFVB8yk6hw4ZTUhLlIL+JQ79kamxn3B93bjyZGo8XbN5EQOhtuHRGhUNsDSdPQEmjMop1NpMB0eHlY4Rcr/YI3sn6E7U6mEMSozn2dc5vKxl07xA9G+FU1gihWDY1sxQF10a7DBdRwEZZbRIHxXHXoi+qmRLo5MXJ6E9jafU6L7HL07N2RMoGxF63qmAq/GS81vwo4LqoJCIsYvoz4YY1Kim9wZ9IrNI/tUqSMdrZLyqmelEo+pgoF+ZD20AeFe/8JNzyzjk+klbiEosTLEpIp9nR98xZ+HLpVHSqWBkrsSSS91Zd5FikK8+BWq/VK5i4bSD18WhvomiKghsz/T2IZjaD+KVoCKxxXfCb2qKMRLPs6/fQ8aLCUOHODL7+Tbmv2MW2Xyaa3b7UdPPxuH+Yy5u0aMuKuuK257p0AACBY4PjR0+Lxq9WjIiZoNWyglKp9cMuF0362hzqRT8/LZKEZt/WwkTNqbX2G4sBEd4nfjOUkwK915ffPJa34hlSqLsj93hT0djqhhlLJqe5uvQ0NnhEyPHT8cEWSnxtK2YPX7BhG9TVnNqtLItWm1KplRNs45d2xZIVFJQNVOdfa+3chY4mmH3CFVwbzhKBAIr2K1vz26hSZLcGs+nv4VuNjDR6XKn11q/fz+GIbRSYu3q7Z9pD4CAvbqUJ1kULUbJsil/VT0QSsqwCc6rjio2+g6oNeoVJB3HJaK+1DEKrGmJz8Llj5vlp6fazopjPvCJhvgWtmtm665jeJKmqv264zpdZ729tpUi7SddOITbAn7pfgkbTVcfZgCQOP33ESdKlIil7irhFNdWbxH7rAyeN0nKWIIQBKlSHao6rY5cQ9yZc3rEuvXf+eDzCWqpPjhWjXTic5EvDgF5Z7BdwKx5YpmIV+xYvuXHpEvFlx5ayUP11HR/zptlptXo/OoecvOZzeyuCqmyA1HyXizJVUardyIG0GaR0StWZaBBZk4sK4PqD99Fw/33Ug1Ej5me7Xp96uxE/Nb3qjsR8aPXuon1gnA2HzqyMbMrGBA2W6yB3Gy1EEhVYhHCGKkmY2OexaOq7u9nVS0TR6A6EuIdiRSehULt6tKWZfEEa5y5x+Y8kcZa6rPsV9FFa3NZ4IF3CA89mNal+p1rogR2wntlbrqiE4uXj5YjS9koziL9O1kvChotQgqwWPnsEstw5iD2IUomCvRWFtur6ZqKHtnI7FdbIY4al1OBAdCgm0IMP6Avlhm6dmfsUbIY4rnFPnJTa7J3Dmz0SpYPuUFIEHAQmMJcsGl88leLN4QzWYCxQg9HDo05bJzF4NBxJ4arYLJ8zTt1dNCkCpdCUc6lfUp1nNyYBkLx7J/TthwsRcLss9TFn2h9De9JfWJ5NhWz7xtQXpryIgadfeKzFBm2FWh9M3C/Nz2kNggKusNzov1f0g6ovUCfyaeThudVcE0OKVT0fF6bgRchPkIUgSsST497IjSMTplJHKtoz1t3VadBMyZ6CZN6YGFyVRmllwkI0WBVVCyGemKpaxq+pjH5X7av/cRIoandGo4OGs/gcmlpoL7/LpQZxf/6tBgWAs6iDBJFfOq8aAjmCtFM93tkETbjGKSpOxqTn1iJHzsySebmVaWDEHYydzLOvod1jhIZsr5WUNuLsejCBEZ4OPs2tyTohG2h9NphqlQort3pfnByaJXb1AWYoeDMEKE17q5mBlrFisCNbHcS7e1taY1aU8yIf1fawD+uvyMy+Yn3S1tf/3wDB/k2GC1ZuEjDUktyV0JCN97R25W+zlIZC2+gjkFCRbzs9w55tRyOXbGABqIcGMkKg/Qb2lv1CqzhVNQ32SnRsMrHrEB+TFaEu0kD8vlM8uBcgLJUt+IWG0rwMWROx3qFM6WNfiU+JomkQqtl/VQWTKxfgWl0q6PlZ4c2pscIu9Mso2EH3rHbgAJG/yxoGOSOPEzRWbMigj5Ez73VEnSSEOAqxROE162jTXs9xWBPyRo/Tvgd/uD7fZfn/kEd+AAHH64yKMve5H2MH0+9Munca28txHCoepor9YFU6ioQClEJDC22cwbd6WgW00kMKtNhhFOPkM6wEHmolJCW/DmaxOpkYI6fPAAXcIGEK/O1xkw4io1p1L8C9CD4XtVxrIC+FUxgvB8hhe4mFanJOH7OTKA79EveTvmS6L01qBKMldy6ROHh64VSmbXH7wezDKBH+1x9uBu3HNzMOVVWmBMxuRE0NjoSTugjvyG8qh0hzT+o3z1/NGwo2LAN0CHIHn/i3oRXYXkUs4Z3R1r0S4Taun38a0uoOwgMS/e4E0c7h3tfV9WuyajCLu66/lrirfU04KaJbpVA/NST0DJAEdyCUg13/FS29npbq1RG8SnQK1dVLS2Z7cy3uH+egdI9zmbR4OkFcNPBcFmqYtN07uMIDUFTf7ulOHFercUJYEkQJMgMjs1YBEWr8To0gwKh79i5yXAbEdXUfdodMqjfzNfQgCt00/PDFFtzssKkyYpYFALSQZHNGAP/4p0KKRyObyVdG0oKs0TCmrgg51YippS3Xx6mR8qG5n4qHr2LDHnScHxEMsY9ce70bHbeeBVYFQ8kHdGo6X0g4HAtzOfYBL/DPSnpxyjyM49AZXprAowHK55lV8Z0ul2ZopKUn9yTyg79vP5j5NrPHIn9BxIlBMFb2s/OPJEfKaSdY/fAYf/hYkfJVPKrin0omuFhMf7ykgwPtmIhjVhaZpnHT+FRlsBkAY6xj/J0WfYQJVSzrbh7yE6aS2POJlM83ydD2NhbcrfmsZrWTMGLSA8EDA5E0Y6DUxI4a50jEZBOKsrFcazYUINJib4VrvGEEOmI5aG0+ihVkL3KOG5cgC1+UIDQ1FEJa1+XqU1Acz3ARjitAhX45H36N/kJh9ipp0mc4wg+v0yTFfsAcGA7cQKq0BgXoCWoMNJFjnahkgM4hSv4o/aF4AUolSKUlN5s69pNgBrp6BDYgDfpZfiWqmdBcMMikki/xQxR0IyDPe9N8B36St0UPKe/tgm0u4N95Jyg4SCoMXtAz9qilAnVnv7rCGL4FxIK5oqbGBwkVAeOQNOX6r8ATtl+Ms8+os90yHa+/2sipZUZKuoiUaf567Zo/d6L96mH20OeAbhRqdFbiB5kgNxY6i2ENOkR9HeNEJzsEz7ClIATEzWQe9IXOyTD88cEtPD+3vgbwGa425TbjhOukiHaxZjtG+KUQWG52h13JCg6sSVWuzGb/I0xlHrSxg629+BquHYXlhTp9LFVuNVJ8EhGfehwcqWL7GMSRgYtwFgGdoLPBzSiKRp05OAALn+IiHURMXkgnI3ah8DZ/Kt1F9Iev55XbVxQazoZ2xkYk8/AeUImRZSk+pBeWudIcc7LBBDTArwAphUm3ohI3MbSNdLzBYECE7+7zl/x/NLNuwxFCoUE9L/mcBgyUkH38xd4yvIeDvSY51qEUb1j35vgvRDxuWwGC3lEz2jsCKE6hVWi9oLWP90l6EvKWipErUS8PDjp5w9p7+tyCF/iA3q+7CYc4SKvjmRa8u8fwZ/kpyYXklEjtb/3Z/Gv0tuzVbrOnDJRK/1RYHTYfCm98tVFws8u+dyI2ujLTPI/C7v1FIMlRSniG94JneWmozehtv1Y0mJnADel712FephbYOiP6k/kWXI9SU3ltxT/PfeeGrcfhTbG6hSMUe4QvEAzg/oFdRvZj4NwIjQyuvRWmT8Juc4/u0C6dfGCpcWvo6H58LryNmTwAHPuBoAycpHAA2gqyC7pJWryquQ7y/ueyVXuUiG72lEIlWrukAN+LygHfiEt2XNkMSVt8WmycY4iEQkMWUQj1eqsQqi7sKwlvXKx40PPpvjfe66iVfeo0OL6pDkah2bB0pBikLL6vLSRpaM2mfENsPy9JEciDGqrQuKsgWgHHqI/Y2aiOQj+XLhquc7AuoHoqhL78p804vdvUl+NZdtEM2TeUaBmMtXLSpafWl8OLsfno2iJMJvTwt6ifLt4bkVzAxiP7a1NejafFkldvLwFDs6hG4oveiv0+TbGmCczWBQLLqpFxFTpz0E+8fIlDOlUzzZG3JdhGlgwWBnm5Nq8VloHVxE85aJxZuKCXbjbUIXXGvPtd2pE8ym+DwMBJ4IYVhz8hebdqK74J7eYywkrq2NkbcGhccYKgxrarRbCqAbdyY9IYe7vBlxHj7p6ae/dssQDN3yQ/+QXqW3RXSShusEvklJmnaMD9Hz4larUHOpMaXHFtL7mlJe9MBvSc+vwPmqzMafmJw/HWu3aFEKysOXYCYfbU1oZHFx2YcU8L1Pkm0ojVTwSPaZ2AcwTNNEkYck2QlZ+R3TSEzuaDNxj26gpHmpQEsfezoGDnIBtR20pbbRbkjoWsWnsvm8s8NXPjjdEnpEQRjmDLhny8G/5pZfZYNZLxNT09CjgTW+2MtX+fGLPfrLMfX3eJhGfGobCBQg61Ah9OcFw1R2Q/FSBvHagkaTm5Yl3iRZeGEirYrCxi0h+08YRoU94v8nNWGBJvMIs4DSW+P4jYwbNV3NxnM8J0Q6B7o95RBkC6445bF6MnUt3ApVbcr1dDjj7yXbQk0VOk05MP9EcbN7AU8IJIaOx9UuwmPSxWnijGFJfhpZcid36R3R0KIGgim6uS8RZDRcJbOEWDFpcTKhSk9FVmQOiT1BDkElTw4EA2D4qANJOZBH7MH5PEDEudRLxnQlVd4r4yMXE3P0zUc7rIX5gDjF1cBjF3dhyhaFA6P8M4RceFBrcj1Lm43CMZ6OhpsUB1Ipi4KqlL8Y1AWqLjcI4gl0DbOsPhocn9cHuQQDyr1GhQHtUecnYmVqPSWr4tO/kRZdi5+UkasrwsPlj5lgqqH9SPKTqfVWwdxNawiC6Nc+nPoe6T7u5zvdMojo2M5/pdqsYAarWBohiydCtN9CirvLaEYMI3VabyAshZUh6mSDrTQdEAcT7DSSAVWWWKpWs5rkRxL5Mix8k/k9f17Wqhkoso6KcLKG+0Wq+ThYAIJxhyNLK2bx6eoDW48oSYOY0hk8x3couXTt8bv2Jc6XZGo0K+dyvNCW8ypmzyYijPH0X9Vh6Wq50mXZtjWFbWtRnLBxQP4mqgu2NoS0cSal6/aflQMxdb7T/yL6QbWOUiWFvHBEFo73civpNv8zKtfwxIfbFJJL3dtm0Lt78qyKC7xwRB3vuK9maGgGu7uSru45lcm2p3ZLtWFP9yaLbMM8CODK/hbjUvjBJfdtRN6OTVWC/89quNRkER8Vk0K4cqKeACdypiKN8M78fKEqWsMDBNlcenRYxeMnhSIqWsFMPHMi3jHDQ84HMk4GBc1hU6sMQYkhGE5tWQX88bwilH2nj0BLghLeKpVXW+pCrP47OIBMw1ego/O/r8/gGWV8167v0HkNzPLXDgiEBxxN/34IUFVMI43tNIbaTWD09RwfgRAf6Lcwb4Ym/PjTtEKCIDsDPmuBQtNCHGGWWbFf39V0Mux7ZrvZNHMCsgBpx77cbv6J88QHG6pAYPtJBWFYNyotBb1lGWasAIrUKIemjNl5tnUoEDhvkpvPFgKfAlPkju8LJVz/vPyxusYmQ8BF2YAIMSSuNUPK7VlmoVDaptkx6xEgUvBPFwVPVPoKtxdTnAZFob8za1gv4APnZLT72QTKMUjWs8wQI0dumGIvuUJNDGSg4QWvKHoZUcR0HlPl0T5kmE1l+5hL6JXuuI41GEnN4az2ArXWWR7qK9FitMK/b/ka8JxEMJmfXyVrf6IPbtWD5F88p2pc87lvLzYqZxWN1u7f36VGANnsppz66Z3j3T5qRwvyUovV73FT2RKC7Xcdfa4hCF/dh35ruhua2XpvScTefuSTRbm/hV81GXEGXXGyD8PLPUZjfoe6dGEybErFp11MLm3NXepBAW6Xw46cYAhvsY9T6jVKqZCEQI9cftfBJNQs5CQSblUEWH8xsacQIU9SeH8V5PWpSU9QrsfFI5mJoVzFn1+eoYdGJqvN5NIdHzdL4OYK+TTUxsB4UnbL0w8ZrUcCboZvcDaKKFNpXRDVcIlyxv4lFkSy2UBHreZJGfB2rImHyQHh1jK2lzWGCk97jvlcvo4tQ4fYv+6pQwHybr1clDt/UE8ICdE6o/rTbukiKJf5c7mzwm/XcPESerLr57FFrNq/O+/bwrdHxemXvm60vlyeTW1qJPWp4IrktMKVi4hrpouIEgLEZHo9pBBbvHnNciB+aDY0nYzlt2SOTA5M+MCXtbBQ4qcg9V8bNeKIRr8iEfXIkJHJHUYuBmJidMDKs/E717qeexfHD6JDAbqBHXFbZ6xGYkwX+rZozCme8Y3Iru0oysNi853/kJmsRU1CO2IBXxBYuNo2KzLRT573GHGUrGYKtaJ2gO9hgDr98trAi4YzOlRRMPmg603s/QKfZ13eUzabiK/fyQ958figc5kPQjVp+I8ToGDoJe1+nZ3g/xKRXC5n6+li6YR+iedCRiAhr/G7Yybc1UocGuw6cEv4XYCp9VGsKZH0Fl96vgyA/o31IKR69GwS3tTrOnhj4NDHpb7Q29Whc9q+GpIjlri0pJMmC/WhmaTb0Zf0jzrcb50GhxpQPtftn8FXJ79jH+FbluQecndh2MaPZ+54Mo/004wcP1RUaZ4MDo329Alb4uuSFbJpEuV5iwbfNqXGnues6GbD7KW1o7iB91v4WkZFv1mGRtaCHCFldwTSUGFPAWaQRms+D6mF1toUMvVZji5qHdw6PryFylJZDpPitI9ODkDCkSFFWpThw+8kvu5S4q5r00BEkUYE7fk7EaN4FbsiVEIhkGHZoY4kTH18TZrVpLciYNId0niQHp66nUU2jnGSZlrUFjtlfRVcfNHyzP+i73th+wQkp4TBpc6t3WtgCIDCWy16yiuT7wKIvx8yTreyOC7RfPQ2qLeFplrZkTye/evk09dNUKkRzt6xc2OSBqmcxnWhAvVPSvxVdhQoaabp5vhhKJ7zkXLbEw36eNWX/9417X+y7cQgXkPfvbS5D88MPMxlgV2esdNkKcCm7Z6TedgqUypg5Y49C+8btZbjLSalen1jzzxhjs8HMSKhm9B5MR6FV8BjSoX+JHd1udTY88sGAao37BzUT3Hiobfu4nxpANsgBEOp5pgnkALyOkCwO2qkMojkzC0bJIUF8tjVT9lI0lTwShzpHN/gJJ3zUkL7EEyRKK5QyKRbFytXs28M4MvtgcyO4rz+2Ozjvfj1GWRy66OUvm+rIti6E65n9KUhzJ7zNWxWCxioeXZYEonMhXvwDk77qXkUDox5Utud6Qxgr7QbWpYKYrw73nmVd8u4YqE5b2XTMf+R9k4yIKE4aBmyg3hYkH5SQ2ag5PzDFKfrAOpjzgsn4e2lh5zVRnHpVB+QcOSDKt+mHWMshsD5Qz2SYmKxUSjhJhYIUJ78Gv26wHXNILDH81nrL2sR/kWTbG/VlbtCyu3o5SEaeMy0g+SuWDch7Um1EPhTZsnOEMHNezpSb+tL2IRb4div0eheZv1I4Vqe2VVeIdrcS22h9dy/PTsuYmaltvB24avdemOJgwrsOAUC17/DBycA+dAm2P4XMCljYaEuVOJcWfls8aJHiY1lI1DUSWLc62tGj6Qhf4vxWDKK5xeqX5Uo4vBqbQshOBurrfEezVD85CSsYrgkiXpq6uuHIXBTUN0SrymZIftZS8fcilGyYOjtjV3Jxg22DNK0GKZ6MpvKVhwg41cdDLt2w2VQ1kyhd+DIxAFIIXmRclNvS3aeZhbLIZgz2HpnlxU1x74EYsBg26+Q+MVTrtoxxCYDmSyhQ7wG71QRHM7Ga7ADwroWdGj2A6oc4DJdxK1ZrSig7nLB8ejnolu7a3p+p42GJGXBHLp/OpRWFhLff+ULtbuym8v9J65PW7MqiG/OqqjowmJt8F8DK4i8weLLmg33Hj2+7rIxc+lh5IYrB3DQDV2HqkLssiunqPwgMiBtwbRrkr0UvaRM9iY69aC/RUwqFyBsoK4jq8zwnhIwojr6qTWjIVqK2TEebQ3qYJbyjxP0mSPbp9d29uAjl2dt6z8HY0HZ4L2SQirB4hkCiG9NS+FdT6JwLy8GJWRfhcYh9CtC98PxZWvFcu5PEWPNJx2rm9tW6Yqtw8u66kgrKjdyROAm23GpcUwN4EmVZ37aCwlhlnz3f3Y+1vPOXGqkrF7OMBMFpnN8SgQGdKVsdzdo7dIHEbeIR2qJxbGavuxgkRwNHtMFqxUU1L7fn6lnjl3AIIC1kc1dh9xZqc+qpgCesC2oPu+DRxr+pJ1opJ8VsIod/BQkXuwKKR+jwhAfAvsqfJ/QgtaZdb27RCNLB3/9OdLGWPrYU2l0gUFFFDDTUqkgai6bcZDpr0/AarYcCqTtlvxm19VOa8TdLThsLHPMSG1Wp3nSxEkdIOL7kmS5bcG+gvWtLhiftfep1mWiSiCSXFbaMWQDrY+f1JldqnxMIwh27PbS5tPjWwoxA7pVp9j/zxXK1hCHrEEYYf9N7QkXnMMGfp/yfonQ4ySeFE25Ub+Bv7lViXKvqWFfgT45mtl6OMVQB8OhxJ91EGQhc6QQ+6bd/3OP7NNlmJtRQG2KXxcZisAiO0eiF/VciEZ2KwV9u7FnL0PbqsxzS0SDDduc4dGcEZmj8+x7JujCqKMLeIUtynW+OmYB8873T9gCBohzD0HFK7wQkpkIyx/zKXG+kArheWMcHCLHBeitfPZg7Pavbx8UvHICpsZ8gN9udzTiHpR9fK0jh+VBzq+sBe58sYeHoqzJElWIitP74iCOwKYu4pLijVLa0aVHlw1MmadMH2GSNQk7pllu6/MlYRsBwKLQGYfFkZw0CLB8y7s1TJ6n9lyAen/F6zdo2LaoJXlC2+ygQjXubzKydQs6GGMCxfsqZPFrW1/XqfZ1X7qE+nCzaqp6zDlP9xDgM2Or4hgFx+9uRDPWFHvjjwzQ5qNGz2eo/VTVenyuL7y7TscRxNGZSh53/8vMGzDWTbpJtJZh5jElZ9M/wf0HMlj/tB45EZu8hwKe5YlE20fkqnZkmZFXa+KneNjlfHSUO609KCa3ZYeGMUVnHlFC0P4unUfBpUS7Oce9ohqFKbhjXsecYyV89JoHm/RY3j35ZCdrr3H7fHS1P3IeHeaw5gGfztdPIoQKDrz3AJH86ZeNiJEMuT1o5/Yiakctr1PnO5xhF6IjXZfyHy3UKH5NvOtc36C101zjc/rAxbLWqzPvxNhekNbdPqt9fYIGYRQmcqHkuVYBUcReiIowpSqXiAGsrcwn6x2ew0kEaVE3FhAqxRb+9jLeTjIk71TKhssnKVefKqW5tIltIxIz3B8ptV06aDc7Qyx2lquNBTktpsx0zo3Mqn8WvohZFOT1pqW4ph6NXsiO9K9i7BRL0ly3I8ERh/r+liLo9YiVskYJZfTnFdpnj7gWEsl+mX/juRCozrkmz2X0qChvPefA7QkHvGijFgQPbq4FvJ3VDVJP6Xe+2VcKdaOH0u9qCok6bVTnVPZ6apFb1deY6H8rm9WC+JwPafS9Fuy4INsEaBmuEp9gy+umr0L5GgxLFfJwqHMHhaYVcTI+rleWKAsC/YJotohVQW+4FSVwrVROk6QhVrstm0FZTftmpVwYGU33/QFh/1rTj4F7dzDjcSfyPNmb7gFpcrsiF+Syg2JWpIYjotGPvWnAOeY2QLTpTQDAywqzRNqApoLKEjD9WnRXRvx9Ab0tUgprndDnrsR/ZTgAU40P/WZ0e9ptoNrUdQeSuZwTtBUsILBGMtDFTmkWuPlWlk8YYu8sI4LhXGUofhEq4g4DL6GBGXCOt/481UEokT2IlJAtaiwSc5FU8dA9kc7fFP2Ux0Kh7OKGYqI3ING3gSX4dFk3TqiTZinxtaKkik6DRBcrdSMqkrIdbFaqpvDuQHROljYkze1pzxy8b/1O2xps3q6yVaDN2UTOLPXYFWfSARBidwmaPutiSRnKfzHm61jZrS872ipI4waLsntCujrcSxGbP6gBFEZeymacYbxd/5ncNEW7qsO/BFLh4aQvmrHJgQYT8iCUYPVMY7f+Y/3W25fmnItoBI9gTLok4jbrlnNPCGiX3HjqJY1OzavqE88OUg6CWKb31/hHUsreUowJGFGFy8ThZ0Aw/RMXftTHJoouqjEEiu5EYnPP+deOz1x+MhUkzvzr1pWBxY4khPv3rEqlaxJIqfFr2tGS4aFvXPoe4waZWP/zxvs8bptWSlN71bsA9Z1HraJmQbMZHpIurDQFaA3a01l0V07bqwXDugiu5Hd7Tp5b/nZ8cEVM3muuoHae3PRVdH1ZOG9cl8UL25HqsZ8yvOPTNga1eK/5IMjtbT7HvOPWOQwR0gk8Ro796Dg66hy4B6lLaTRaEfvv8R4x6V9WPlrEzECLaBhtYSPJSF6WdjtN4hJCKqXsBJCgXR8DyCMUmpVEuw7uD/zY0io8XL3o6gn2IPks+ZG5DNV6NjdAU8U7h1oqz512PBEYxAhQjqAM8Cyv2xcongc3kasmhkA1CkUoOK9Ciq9CRQ+93K6BdV/y1YbQFqk5YiR2lBhYpaHrOD9jWtR7FtowrWy3gEE63bpXymmfL2QUuLTIAVQ7NToJIKD00P4qPK/76tFtIp6fWNM0FzjiipyNnnAwlQvlRnMCLxik5JHRhQtbnZH0MBmYQB8syS7vzN7WTZ7Z/dDBTRRXMMLUjkaia2RxCGaOXxyvo8+cPdStK3OIJq9dJaPTF2IJafRT0w1MEmaTSxWF6fpiz3UOtPPrY/qaQOQkPhTey8SXLdeGJlOVOfrCHu4Xnk5ZUvBa9wlLJwIRUBkqqOWOz24RpLn+VwK7iGgwzBPJHx83xD+ScnsRCVA/pa2D1ppnzOtNiKGlTxOtpoaHfik8qOQLU4jREzD7ezmqaWfq7iEZut0gKA2VXF4R6548AIEKyr7TCJRhoMEQ7hgTpIgrn35oy980Gr0Js07WYGA6sDymIxhfE6/3lA+HfQnZnmKeSKj17SPolsIRzLSQB4J9w8/vPgaD9sNsIq76ty3W+ZhancuLJO8mB4WUOuSJNYRZ/eEJA5Go9eqHqx+/4+o/yb87PC0sIVan/GhL72vUEtz4lRray+j16HDuVdLw9VbYWYGMy5YbB0v3bx56kjXn8ZJjAXHHOtAxB45INmo4tFY1S0/JM2FJYtpST14NxJjjJw+4n8vxHChSu5a98JSbnqD24DKwJ2q2lgrsapOtSEaXbtp9m7xqISliHpbRpxqBRVyslGnDA4gfmdZo3oENc95xMggrbalfhRkKEH7pIiVpbtQCtG5eB/f3abZozyMm40c0mdJ75iBRGLaIMjuRoPlg97sQpfrI9jfrMmsihxiMEjSwl8//5DIT5VF2GISbH0+bsKxgUspiooLf6QBiKo6jSzUMHChTE9hn29xsUuT1X2gO8wJDlf6oHXZTplOX/zBa+K2aaB7V6e7coTSozaa646Gm1JMyhHS01LqjL8iauD517WgpREWErnQD41AavdGKgfpLALxavutiimWnrU8vD24yJExmoT8vBPzymK3hwMrDe0T+jzn8JkYTyC0xufvbOGYQ45GxGCWQili2QYI7CIgeHBYFVvx9BPiP2XH+vEu6wPn0bZMT2ay1BqyVrKMffoxe2WeoGc82REtsNIosNwyUH4orj3A2f1IohJKQ+ydQmyQn1O744/i80opP4emeoX3Gc6roUFkikc3fl3mzJxLNhSA6g+2yMmPb58OVf4lwBlqS9TQby8JIMlKyBXOgPudMMLAoY5MyVJVZ5HE6EUiJve4c1/M5EP9CzLodbK5nYf7hcN7faZBSfr5cqUwiarXRBrXQ5VG1dnXrm5psPkhydhXofszpVcWd83K0hXHKBgKDLsKqZnJ1eLoZ7kUF7sRHfRAvIdlKW3rtkHz19H0T3jxZ3a838EhmBLHUN6M0++WqtUodF3e9cqsHAWVljNfp1jw1JPxVvVyTgVewUCetvfTGAxay8Wic4vixBqnhYLMustoVbsvg/jS0sfBHstT47GWBpwc/5Y6S740tf5eIavwGwoCuPIUBpJA+pCsk0J+5VVIL9UECSK6HHuwHgdsd4JRglCG0sdUqZ1hxsJqrWr1SJkQN9TbkX8uNKhKnxLDwYjqAHwnsJ9VBGgOlp45+xu7ysXlLFS80qnjHzAqg60Z+65ygM0l4+F5aEdhHmBigAcwqhpi9GUum6ec+xd0Yq/7iHh7CDfgVUN66QfsIqaTZpkPFiNwQ7prP14GydHNbPOc3EJlQapVlKfHF7ZsL84S1Zu0PNyyARsyCuL+9oYkvfTI6FfK7JWYoaXb9HWQa665Ud6n7Wsfwg3kUsMD2vz4H4gaYjmwkcwTehLe2OBGZr97cuWv16xW2sGo15hp9vBJU/k4iqzT3fd49zBpzFS4XZmZxmZ++Y1m5B+Jk1nieqi2MKKRBYu4zrKNZRVwOzgWmotC59MEuoiOH5pJp6Wna+UheFu1A5spcS3+ScAz32aAXu4JiD7XQACCzsLHoXERDrsHUPXRTv1e44ZIgndti7T8gFeLib57dum6Xu0EC1R6KByxX1vGsIRekQnGwyOH21YTT3c20ZG7OnmzM0JDTSF9c/mIfkT1FOqBt5PAk3g5/PxZI7vQeuSNHeqnjboeqIfevnEgMggUaakbFj87+2A3jMB3/m9b00txyD8pwkVI4WaGVrXNFEQ3R9JezvQFJgdD/vc15FmhFgp51mZ4HFP7xY/qqx9sRjluaW8a8/c1BW4iWR/HpedWWDJNZ+RAXWLTXzAORP+GZ/LAXi9JBtGSU4UNfZMJiabBXbgK0Imnb4SXBH9qGtgrXuuuPRK3BDhEIaiyx0uZjBoGdC6ketHOB38DMfj+DFXXZO2lUPu6PGmUSu0lKVhbk6sWsBxNX1dCxCuQKiOHjmgqy+GgyQoXmoFqgPukKZKljYo/PCVR0pO5n64iafkW8JarmWPFCyaU3ywNlDY2clqBQ8UmJHfOeq/B9YcUJsE8IkRX0CiZsHLePXGxkh8fquXLWa/VFIYleOU63DaMpRaBducKXkksh4Q7xsICbFa2ip9czmRW9Fl7KCxN5+5+KqaEuJEwRzFFpCGSsWtwSZguSXAtMx5TC4phBDlN2Sp2TPq6Hdk3qNVivlFAd9EqVKLjaCyIi3gtGQ4mUprTqZ4CZKCmkffDYMmYrngqznnvrWzidVnXnFgtKUWzhWUgSgQJjRMRLTgoqQkM/lKMT+ntAfbmqgsNprpdH2eZISp+12jV3ODoSVwV6nHEh9/24MUgNgm0sYi7loSigL8ubFEYRVJFDIfRbQBYq91tiItFOhD+X8G+zGxTFGSrmdLrSvVGuoTUiXszqSM5h3/BksgBrYB0PokAkNcG1iuSbopk+yDN/kNSRYfcJRxqapMvD0kak2I+U7+RR1CYoTnR20gIHO75WHlOska9yoFqXiiSOGDCEL8JbsPCF2d8LAJHcpC7Tx0fvlLy/qvx8Ke4voVCNAmpBzkIndo/lo+kPTtgTeBOsgLQ6CQnbLuVsw5ckr1PqjqB9kb8Ox8LyyUYEQY/2IRQeF0N9/HrXKAiDDsc2Q8ScedcaHu2l/CNFinutQUhD7xWHxOkNZu62em/mCMRMH1cfWf6Ql/UGoIt8683Ot9MVGmKu5Lh1suc+sZB1Fs+1NOsOAvjS+vmLB0CAiucUFWiv19beBHkRAq0roThOlP5n2WZ8YB7nYLiHwSM2Wu1fpOU3vl29wyLLGnyQhwqZ2uzHFhDZfj98XLBVtTiA3+XXzsNLvsTwldFZmFWGOERfwqyhh0dXHRB1SyH44+ilAhNRhDQXpOEN/HqReXXCenBHhzKRYsNZq+h+xFbtN1ejuyCy4KGXTTLikswfcWDPmIP4OZlGKb6PZo/lpDWkzKzYOFlZ5VZ5sfw+NdSYEkiWz1KCECAW5ptxrEvFIwtPJ1x1p4WJcsHe74NW4cio7MCdZiwrCCffHiOyS7M+GgbqbsL46A8dIJDYQcdj0vq2pNOMIvTrBdpkjWBWfGd9ZUS5UPOiHe659F4aD8ckfwaK8jXQynvoFUo6YpPZbzsA/ZxuycFTrycAWN1GfUaQZKg7WAZsTXBpZznZW80KJRWzGFBhboGm2IB5fDzp72+46oSkKqlK4qEZi4kgt/X1qbrWcxCXlSNYkORjAc0Xk/vsi0DXpXPBrXXwQ0e9VOS6uqnfwa47Q/yDzrfyUIsbAm5+14mN295ncUkD+liAbRV7uvtdkvwnt/2iF/4l4puvt3AcgjpzyJa7RqtVuT7f25aoRDP7/e500UL09jh/mPOPdyJCqUijOKWxZWcRor60vzLcPNu4w0hxZFM0lx5r2PAb9JSaXCWBGDmJv/qxtS/5X3jJs90WqwPsoNet0Sk57n4UuUFFLy6lqc2py1Z2sNEM16inQCbsZ3fx6G6PPpzJCzMHhgXRfLqW8rrmHcURanSRNR6ye9lSYyaqwlf1EsK1kKjVc1BpqyQJmVQliBJmoPAgDZrRmtuIHGnHSiNDneyR4CuwqKmlhcFw14iQ28p3qdZX2+tj3eWJVMQUUViqV/6sh+/vvjkQqmXCAE+gDvF5OyYg+B269XFhZFTejtLLIgnEFb3ZJLecsHHbNw8oskPQO9/EpmIabHQ0t+VM5jyaJxigUzr9Ep9LCz5H7e7edp8yCAJWZs6ml4LMKHrkvr5agjCg5ZMa9HvVQQXSGi0xWH3W94ncOV88dYEBkAPH3VNWxF4spCHef6iosfxlB1Zt8aLNdR9vwnP7kSKz2Kri5eXRJLx+bYIc+c44T9XU85geBpj9nKW3pjQdyeBUfFhcsdR2Bf2fjz4v4nOx+UKDxZuvpdxh8ct6BZr9XI2utb6IVitkgY/Uwdb5GhXiKuQDi9AnbCOZsw9GplzvBDEQcH5ciBayy8JxuZJXvg99WmmtHTAfNcwcGirpWIIZSo8+xzKBXfXdLtm1YUHtU2+c0wDvUalQxBFWcmAZ76qvqlT1YbEUClqndvw7VMWXLjvpNAoqoS5cq9M6oM1LYFNW2YNejW6gx8+yYkmLpZVcosfC1CGwFgfcIUQuaJhUgZlcHPabN+Gr1AmUJB+WDQ22SEcdW8bk7P6jU4LF5FTNjwbxThDRxLeC9qipLN5cEdKpvJO2oAQ+COWZWRwf+GMQdP+OlIa/yqTwAy7lH6qygKy5QyBeeWuH/EH78X4ATs8iVGD6cEPhG9ccaXCGfKxVWpM0DI3RfFhSmi1E6USii3xCrL7tsQlEyjjXNNMX1UqPzm7QEfSYJ+BK+VuEjqaTvZkJsgJhtRfQp5rO17ZWq7hyrSOJD8pvw/cEootGZPdGFPp6L7IRlJpTK11DAx5g3Q84m2muDDbORWa0g48WBsZHj3SyeWAwZGgYA4NCmEfDdTPRCypl8sKhZsZuLoa+JQKJk1bqZsz5292ucYoQofw3hhAqqjOPwgo2lq6IljUNEzwIEVcYoxlSlTU6JGkjLY7HebiEbrizbb8gmx/6PVsFV1WwSzr8aDsDTOhH92iRi0nZmxUDsyArSBkqjMW2CWd0va2YLRPVzOd2zQYNOhoc24dwQuU+6j++AtN0DvmHBn1A5IyDlfgKlCYIsrBM3iFTAYBo14mF29HAgmDU84vI5sKxvGR0j6YqpduNpLrg/16b2WInQblkmbFdOn0qTzDj7HMoKsFN8euZ38PI1X30FKARZFt4Kc3M/oqElZAcSDb5AA9TFh+TfIHN+18Ja4L50b8UFlzyvsCwYrQ7S1eEIEZTOCB0jiDMkg93rQGfmCElAF6E9baBUhKhahwXYrzWU9wV0P82xPVUcHpjMhcMZMf+kNxWdiZnEfgVhGHapv2c7ynM547GpKjS9BUe5M8y/8Nks585TUVAs0Nl+v3f6Ln3JEMA+U/ezCkqul8C3F1UuB0uJfHINVOnWEA6SnygHLcWJKGUaN1poRevsPYOp38YnNw+YaHOtifNPQaX8JemK6eSa9C2j9afnXjYk8rSmE8lOgqI4k7vKf2U74mMQEoEbowC2vzVtjkoDBggaWcJcPjo5jIwlRbdhIrcFWs9E+YAfoN6fWHkg6EVeX3ZZyvtaChE7yeZ7RVYaKFvDQSxpUy60lk8SJ9I6OC7J5oRf7ITr7XrqMaF0wBlsNWTNKIsNrIpZSqkuAP4B9GgenNC6Sbufi3fagGuMZmjy7N2O4hAiCpX6LLfYaK5pDyWsnawo4iP08JPBXphIhuzytkYzCmht25zoq2B5R3XxBie1EEIVzGGGrJKOhatWrPlChoMJBa9I4CgtnPRmXoOmA02IbaAKv0b3/w5S1kkMiVgI4259ZpggsUda4MLzRB7xUPyRavFS6MHY5A949spXAGr/DB9NAPSR1j0ukC2I8DV5JHVcRh8VhdZE8cXGEVNJOhtHBfuC87xmSaJBLnO9GK6+nPLwyS9+MOGNXKcVXsccXjjFZLSgdQoIUgvf0TM8gnACfd+WVzeuG47Y+GLda2YL+gtN7V3C3XkFO8kRKFBkghsD884Vw4W6DbvXhLrYfSbfdiumRpFJ+WxnqMvpsyMfJWCkHSGFALOgjxmKbZQkm5Or3gccffw7pBPU4dQbs1oGADd8EmFnW2ktRHnjo/tOXIx71UoeruYOG5XUViloIoxDoy2xHPNYMTCsC0mztGfM6qySNjJ8BUXAWPczTbGPofHBZQKQMPSwcvM6t1CPzFKPaLh9j50XKKdnzYK/QGmfGew1nfzFWhwhzXJaFAfP3/WGG2Bl/CXnEERs5ekp9mObBj8AH+femIjgk63kMKPRfeMb7Py3VF7lZBm88tgjThE17CysUsAtHkqgjxb4Qfvq3SzJzbAV1ARJ8jOOjYQgrEOiE5mgglG2p28cN3Z0kRfJhcoVlBZIQX2wJmquZbna2432gA0WTDKz45/pvhflcJoL8egXO6rw5+evhEUsPVh6V3w5lJU5wRiys+cFJ6lE8npmvifY0Yu8aAEuchvUdGpYdeDgtQc0Izm1J1CEVpnG0PUZObQaWeWw7PQ9ybysa2XvYOR4v4e/fo4jN2zdFKDVW8HECwjpGdTjrM6WeyCDL801ReUoXMklt7kwESbt0Rzeqx3pMpAPCQjCeQwsoYgwAl9xoUsnCAS+J29j/Wt5WtOYv7W0bleZgDcdrEUnkDxLP7SGiStwP4NYvjvn22qzHv54zWl8CVNyfCh0XYE73jUChbt6S3PoDJ4mOewW2mZiM7Q2YEzAq2EfHIivTR897T1YHuBl6X/eq08VfvGPpYjtsb0QLUvHodYKvFSBWglvc0NFbmhh5RuSyJf+UqZTZIr9Xrl339aFxpSJ2NUgtjKaBHevDv+2q4J0cyFNmBJMlGTCSLWCjLOYI7MFUD3y/yWVnJKJeiXL4JUlEuDtskP4YCyhumHqexskiNv9T7nLRGNLq53ME7g7+1akNX3FxQ6HtzYdEesNhbFhwLvrRtMmAOtC7e1307sCK8aikaeTE0WjSWmCazWY5stTGatVkrFzNjfLlHLqoTnwMkkLRRKeJGEoNaIa4LurYpuw8EdkeHBoO7mJ7KWmTRAuDu8pojW1MFf8Pqe75BSvNxDvYC2F602w29nM8IxuLXgC2lIFBRmzpbdZohioCHCpnjC1EvDuRngyt5lLngICCLixImUDVMwXHYMIUE9EDUIdjWP8ak7lEO/hgfvWvU4ipUjuLxBKevv67vcjCVBKFS3J5PQIfCcRcDtZw+DeX9WOr5qS2RwAnr+2bDKzOqG8/tRHkpd7qsa/+63Jxkj/MQADJyVbSq9/BDE+A08SXZLJz27E6GngoHVtqOb5gz0gqwOe9/xKwB2bgTtQ1PXzpnjIRJDzRjiSiHXPZisTdzoVPFb2sAxLXyRUReGPPb9D5cWdmILl4RdDs6f+njbCvlCnSbYcWg/rCZvRuMLUAjk/a0w/oqdVOJ4DMUoSG/rpDUO/W0J/D2nz/VRfzY0cGR1WREPfKfbUagVWNlT2WSK3X11eNlqxsrSmrXsuQ37CRyU9hBIXZSAi/R0/QohidLM+AfzGhqzY7Sysd7tnPooAdGbFtYrL28rFIezCBoxgJOePgKiyXHrczJFiqxajffZyvBFRddpqgdnUH+nrAfMo47HIDSMqOqJ/EQc2X/M251t04rA1wfgKtlFzcX8BG0siwbNRlXXAILNrHMwp1YknZmydwuFXrckjNVzsflrLxVtzBUl/00LBcacMzegEB0tMJ1mFGwBs6s4n9a4ziv5tSwvKjHra88NprBAzbYG54223z2iju067oimaFPIEIAtNiwzHKOwg2b78OcG6w4tMzBCclU1Lato5MSCX3HlbItoj8Rzs5ma+lbmVJIkF3U+YWRmOvBz5n1881C8bhNQhi2pbGovTPoBisc4R7HmTUlH0jajKMsskjcfk3BfJBhDgdGIykoc78cDfNCahNBO8HJYebjUV5ccNFkyqVIQjGNB23HYfZMCeLl9y0lErPOkoVkTPJQeXqogqdANxBzep5m/dUnsNoSXhZOWjfZbqnEDSpQhH5Y7An7apE/9yJ7zbcdYY7VkNGgA5aR2Dv6kH97R76z9U9QaWWcNFE4Exgp7W0qKad7hTR4gh9D+J7Iq3xlyAA6/YBmlmKPXyOsVcl7pYeOAVWlRLQAvKHOATzNzTXpG5dnf0BESh4U/2R1CdQoNtfmLXValZ2U+GH5fc5o21+bfA7HEqaU/4CI4ClLH0ymkBRCoEixkh63ZCgd/QE3lEkcWP/N6UwxPzzCZOUfJjQj8ue/mGIbWQocyueNciheqh/lUdT89/OUbajesVe2C1AgKMb/eXnQqFQ39xzeljDtbqJGP8kR3ERQkzY3MujZxQSD24vu3cOX7GuM/62HV0oGeHvS8ZLRkVjB4oM8NkLm+yOzKp5KfMHyCIUIvkmQJdrcPdyLcCTPtYt85Jzw8iepoj05NkYCehka2zJmbB4fJvOo3uvKzXrjbg59zx8cmmsUeuSXeQWcPl39WUFFNn5rjxxhFzD4XUe+rl1f1iCMXXEXUj4D/J+c5paq2bwmtdvOWlQVOMDGuti2Z9V9zAgcaPv77WRGi6gZOfoa/rBHDXq5/x7/cwX1xs3+CHwDreB47may660jqcT1KWKgIehYYZAUsd+wmUZ3QQ3I1SAiweViznp8C5uu3Tfb0T1au/24kT1duz1aezdudo6uvVm3TNTD8jYBR65mg3S5qCwHswKVDa0Nya5mm+Y9C9Zh3HR6LrMGlRwE+Aq26QAdYdZ1Bz0zV29Xm2glvb3/T4dWpCBsQ6fD6PZw8iaN6I+ek8hStPMJHVjpGNwI89iHCjBVlNcnCtIlGJafmaR3+LsZ5WDoUGZVt24bgnK06pSf7i3bcPT1UqtadHKCIcTtP67XbPHJdpkEuhrSsmapF/wUbXsDVoNOxhTpzWqxxi7wUSQ+Yb+7lNsTuMbUcOx6gk8WXKaLD/Zvs3v+5qbyHGCQp+VRfKS60qPc5sV5M96C9Ta8/uadndGfoKP1MbZ57Nqk4OUMbhAuh5VLcOpxzU2Aj/3XqVA47JKYf6//3gOrJismo0S3jo+sWeYsTynF3JCgg/lZ6ew31xGGdCJU+u9yoyngwSwGaX/IuOrZFP2zSYaWLzlaY1uOvWnKjvbokYWhycbDF2/FPNIIVGd1m9Bt/ir9Ii5TQC49qxJd63WwGB21qz0s1f5um7K2ct76fimEQ0G823GYvz1Ptm81+ZNtdm7Iy3lr9uc/eR/TTrdLVZsyDYOZmr/bchKRsX9iwbp8Z3LQQpZyLESHae8W+WbBVOC738+KQLduWwSwCtWJkomr2RYdnTz7u0FeR0p7St05VeR+f6Fqd2rNULOzrfRXL1x8QU9GEWE5Oer4yanMyvkxl17MQCfb9yE8f3uiAl8z/5b74TNLJu+jOMEqfB+91CuFzBOxmxM7WCwFlVHmGutkfM7qoQyro99frGA/oJyRXTyyoqNkuBl9fXf8WAViUWKRVsj7+gFDIUS0Hem2pWXbpNFAuf4OTDBuHtTwbPTl0fi20+tvUEZkYTpoTKHQT5oqsVXMkTOSnnPmr5F5wOa3SRnSulx/B8C6O9mJVr1F0ksfUcp/gbs/sMVlC6TsuznCqzUm0/4nLZvxNvZP7A178uj/F5romAzQoSvKNqSQpjJCbvzyFpUpiFEszI/cF4lHveSJWpVQ/UvJlNXOkCCBVY5XyBkcKK4DFKytWQ8Di+AKWqotLCc40OxanX3vdDgSU/s7X2FFKioi92y1PmZ21EP2CcOGNpEujvP5UmLrrpU/W48f+KtYdBjqibkrAx4Nv/6xQg+Enf0VP3eg8nKhvzmLotNi0iOflz33X/TXt08ljjKx8pnpjFP9qwuXvPSxM8qp6Hi/tQn+HGco1J2G7T08xRHDLAP/+Cs3JFGL4nfW5NczDK0oPtkr9a7H8Cq480yJE+JDEj97xf0cKV0NJwvGOTDEYlh8Ta2V8iIDb27EGIn9MPycBq8n8BDw7evIzloGFUcq8iZ5GlqAAjRQoVCn1PLXieLBSyb/P0tV5EXWt7Sgrdybrt3sKW/Tl3/lV3s8pq/v6YijprlNmuVwv39xSY/jKb9+pff1+J2fpdyX3S27B1QNvngzlC1302i9bNEV4y64Zz28U0NZd0qQnU8UZVYulMwVfqfMXDm/KYVb4x8Vd8r/qYl7fGMYuXdODBNT59zg3ClfUCuNItTUXJp6sjeZUztLlRX1L1aUM+r3ji7JGJy6rBiVJ5VrxsyWcsM4s3V5ZFZ4MXmh41XlkZ54ozzTR95cvtMn7i1+0Z0HjXd6ZSG2zKPF48A0eLc4NhnPGoemhRfi2FRyXs95dM6yeWRqfG94Zlo4e21+MXXOR/OXaeM/teVu4vS16VDGUvEYw4jliBv1M9QVHsAdVYpP428theYaXrFMcWP+B3PG2fkvZgsIby+YBfgPblGN+O7cJHs5TGPgpNDPzr90d+vq8+BfPtKaD4fx8JLW/nkztprk+llzeUmNfwaX0/JlfngYD7u7tX6eNuuvtMGh5ZcxbZrnna77tCkP9/6lSl7k0I6Hr7QZdpbLOqnsueNNmuxxcN7c8DhFvy6Bv3Xo18Udag1Pvmjxtw9X1O/l0pmr1Sc9SjopferRUuG01dsGvFt7UD+eB+zKx9aXyDHtAACgrDw97JdW/37/v5MyTzRN7izkTmXT0vqYWdgTmRWmKvZ15mGtel9ULrnCFacgpRZr0IdwOUwdMSbreT8PLgIOkuOcL/opOrt5soRTNM7ei0vD5pIRgF/moQTDti+3pcWHa3sIFLdkiEsAkU6Txjh2A10wrp/mTNonP2QDd2ByCqooEkbGLbv6lssmZvgVUdVBlcPbQh2wwk23DuplZKCt9bacfnhMusrBx0QiEI/f2t/nZvOV4V+7BWXC55vapbTvPJ+q/cKgo8QEZa2Ik+zcZAydnNC/uhlNaUT8DzDeeVddjLJwSiPGpJ7yRjIQzvW26Hvrr2hkYrfLkczaHjydK8uiciIV5cHeHO9N3OLAFaC2ufjKZISwWzzcOPXDer8sxyBXvI8zDGBtzBRJamNh+WFmM3XaEaSMyDsMjlgkQA4F0bknk3jIZvOkSWgxkv6RaSDl8jUy7s3STMeFlGPTRZ4eUugQeeERewd06Kdc9V/LJdx5HpqJtUlB2Dv6pk9GkvT5Be6e/gox+tdjPUfCgjSi0B6PZUPnhe+u9g3Bp7kR0ciD5niZQqakBOpcEp8VHyS4VlAyv1n7zLZ98WOi/vuyIbc5jjILLKPfS9LwxjCeURsfWHgrzByk+1Tjkmzx91zFa68i3tBNJvecWh+/b0Ef8MTyuXNZ8EefBHxcB9M0ZH+euwVOzd+djZVBuwhZQR0SG41CKxSq5yE0b14Ur6IngCVYiBfY03ryWZtl86L/DznMNaUOX3UxzPbOTUm7qmFTptZzSrlQjVCBhyJlIRwnd62nSMQUfnpIVSFlCI5ItA9g3O134UogLW94JzznNIAD9XzfC87fexHDCfEkVtfDZwoMtNS+hp5Yov6hEPim5O2mcEWtJySdPq2bu6og3WEiwpNzG4h4jYEk8iI4hX0nJh2iSLWQGH4Z8QRkQWYciKxLizndGu/lX4BgU+uNcWH8jClz5IWLjdLpXyKGOUZeR7BwJPIN4wZpj7sd8DeDdM0ZBeicyVUh3lPuJ54fhjpMX/4lwFcsyApzq3ky2yBx6QOaDbm3USEXrRkzTMR5OxCK8oZhG7Yf8YFJZGJMGOkNDQLAVYSS9EspJZhztO9BWMphp/8Cul1mEsEjLWiKO8FGX4bTl4geEo26ZJHg46J0MrvxIKhZTzrFzMEKNVClCb3uk45BIL0nQWznbIphzdaQp2LCsMezAskdj4EnXjqvYBElJmu6yKgiaHnZw7pBGVlEZ56mzV07NkMifOnv+7e+KUGiM2gfQ72CZPDItkbfyc5dx/IMpOmvmwWpTIBA+uazZ21qYV2FOj0jnnFVU/Zfwtq+jJJnIhJoCLWZJKafmmTxhpGjT5j1FcXpDsMwDMsa7pE2k4IYh+nr3iG80Tu4tYvWSTZHYy6Pg2hzyp5+wkQ+p6QRFkh89Axhz2uf2WvWGwH3HcLPB1VMSukKh6oJnJ0GtPnQcuc5Fd2GZXXprT+dfh2faVOMi8ez4ZRImJJsDpcj4HIe6q6b21jGcT3J0nuANAU6pVfx424unSeMlRHO2NO4uzYncbXeW94StjxDtr2oil09SPS95bbtI1wSOC25XG9kCL2CMYvs0/FaFZ1pHXNwTqHnflMIt4G4J/CxMCoVofuQPjtmoI9S30aeh/Iuc+TKygAtTOUA5FeL5Ga2DI6j2zBaFvDZNo1TqAV4VrvV7i06/rOhYyP66Py4Mt4RSXH6lC7Jop8zyRKOAkfyC8ITnDU954DdDyoufGvQ+tH2RBVxBxH1rqEyxlt4vBy7ydkBE6kFgIiGIkJebXgsmh3ZGKKMDxENIZfANOZuxS9D996Sqq0Dd1jAiPrJVYpnNAGHAle3Ap1GrGKJ7dCLDpgVfDNMkNDbWbmDUTxFV0qpzqyHiINBAtHvq8BiK6BJnGysv9mA+bPtgDDsFenYpHM2r1bnuqK22zF4xryJoe1oQQoASIumlY5UPnWfUDOYs5NzLgRrrSJQ++t7pGV6ovqgU4gbFQ0kNvnjVwU+NwrUquzAPtJ81E+Yy8ZfT+VOcxvcuoCnWbV4eMdbz7ZOnK4Ce6B2xnUJAl2SMGXltiv9PpjmyWM9s8sL4/4znckSh/jkhsQ4cZ24dIGMTz7pCSmeDje2ipPf7KY5sZhf8LpMVos69Jzm4lL5HxTGKIbw6nNKX13KDAMIDZdcofE2BOckG6FDoQUPbS7SJhzTFiiMWs2RdBQhdb7eTHVtClScyF0Z6bOR3yaS8bh/26sUpnlLMIrp3SphlYCgU9awVAgmsL+EnDpSEDpSpMKthrZKSOW2PDMtKrVeGini9lSjN0T8th1VILr85LtvCU9Hu5bazVQfM4W12vWo7HNQbiCbvippLf6XvyCflvh4duxksIA0UEqUpFomEBkDx2Hjl+z9emwACSLAAKsJa3Zzn2WeR/ssKqI6+SW4I9QzT3lY7C7Yb/C2DmZpgpb4SMFvoQs89oqHiawnw1O/fsfGt9NPKjLzu12MbbRJDxvg4fL64Jcmkx4joon/bWljwRjV9+qMHhpXtFP8kuJ3C3QG+xWZqrxcL+ggGSORtgnEG8qlQXkNQXvoBOuXVYMI/bayz9BnozNw3DnarzxUWRWtQUf1SJIPmTNry0Zj+q9Tm2RC1tmhN8ooADghOdrerE9BWmHamKWpM/ENPoCrJvsAbKxn/inhg0qUIJyf0TmitpvVR4ByoX2VfavQpHRxef/Mr9Ya1AN2s06rqsEwDMOYyM4xERm0jJneQ8KhWqOywM19T/bVCiS0bmqzeesKD2FbtGDDSxTzlXyHzjsA7qIGuJ1wzHLOzUK78KMXmjHJQq3iLFSVhFJrLtzI26Pr75UnFZQ9J7BLdgRn7qxQfeCBeI8KRDIdruT6suGI4kKJnvGArUv0exP5lUuIACv5fh/rCoX3q65a5Ixx/0KRgwNymCfZo0I8/DsGjEJHbFmZE03PfIE89AIz2ZCYigeGv/TDafAQ0+0bJ8QKvuXg0TGsGLCqNfaSX61GHzT5Atwp6DEvnNJNVdKItTEoXgdV3FKj+7K7E09psaDZXQ/JsnA+aPbr6q7QHnEufXE/CpIVdj1HsnRFLv5Pvl0U7TMOaLH7sIgUtxCXQpTDcYihygj4ZKrXb6LwMdQmB02tssdUqVE5c68tjEuAxS5VJHPd0ie7Mn6i94LlwOQAE360e7hHwItmjeoZUQNbtrlyMnAnPRXmkTlt39kGhbwmph+vU9zfkTtcjdGlC7xiUtF8dKmIhBB6AVYH0ImXqaiBkl351KHKAuGd8GqsJZL4aZe9QnZTTCrTA864hTA0gysYB8wWcGM73D55gVL2yskHUv+GUsEZcADcchhzZYaGy88AokVu/ephrUsFZgjco7xYlZqhsNFEWH6m4/S2hJuYqrzHjk1q4Zu5EV3lHnDGGJOblYQWdd2QB/Bi5zQWgFkc/z9l9AzgvzpfViDy8T5YwjKRD9XgFh7Nm34ktduQld/pQO93Frp2fbYTJFxk1f5crE2/tO6CKn6MILGyYwzqLJMB7Ukg9sm9KomXGV4AQr8ytgk2lP6pPSJQrBi7txQ4zgwt363T9Rb2dW2CEIgkIowhYYFeZ2N19Z9ZlQEg5A8XJaHPpF1DnQyjVaib9J/w0h2TSLbCe56QtMceHRqymttBvG0tprgVVu7H7jJALQ/ERzCP6i/U3Z69w8hIRm2EY80B/xc+hMZBlBQSrMxsGm1+OCj21C5V1KxQrqB/sSO7xsvnSW5Kp838H4IzB86MG+CW4HsOHM5puJJq1uTPPDGN2xmkav0RnRa+Cd+Mdi/fKmjvMVGNrYHNmogDKzTkZJQIT4hOwUYa6UlDtZUZfKT2Tll72FthDmJlyW33wFc2yp7TkKY3wyB0edC/S6ek6sbfD540V/bIC+8i58eGxue3kjUFSUBIbCXzsR62G+9g2xRfHbf8jTtt93it2klV1nV5r7Lur3bkBDS+G3JIivyuH7gbRIqEcTQ4PoCuhbMCGv87/9ZuN0wtOBLfm+4UlAfj7yCdOjE7eqb+iYby5m0e/fXypNnx0PSGUaQfUtPB5Fl7bESwd+pfvFQM+QR1J0E1AFPc5VpFO3iaagcwDMMwUjjfeqd/zLSRGwALYxUnC/VRJoaiIr2r+YDBOHprui92A6XUkd/cEcW2jxxfOhh5J5pkt/KXNNiELdtHKh1LIU8YWryIKuUAs4ztgq488l3vWS2nkKEUczDlFGkWMnCObpAIHkqehAPOJ5O0X73878r1qNXtHC8dxihXTQPsv9ZEVGdJejhbz+4wSvVlfuvoz1uTat1R4iS2eD3apSS3UwRh/F5GA2D/P7UYaCUJlr9haJkEDZqQAbvcsIwtdbNThlePULMZnJr5cFVhd3p7MeBzdizXWcnAbs+AEmxBKgVrZNH3RZCMK9DU3zJLQU1f89M4jub1oOPQQKtsPJyI6pnYRNOfK1MapY0uybj9aBLwRK/tliDXJCEkhiFBM9fEexHLVppe2gzZJhX6Sjw/p9w0Mr7yHahXyKmUlNXxD6q/SPcW3yyzkmgsep/SaXu7Kg9C4AsEUn5Jf52FAzRfDrY4TIS8F/CsmqXw7JMd5sXWdDlbqYhB3Q3JCOEzYDFZSOZMi6XYH+CSYedrodu4uvOyYGOgRGvK+25TWX6guA50eXO5UxFPsMMVXH1cUP8UJXb7xvA09pyHVSkm+NfYyI2/mO2LSIM8sWJ386ybMDrsI9/GAg+GAjZOVo8UWKfvbX6bb445iiLMXgHcnFMTnshWYpTudN101PbEvEGe43zGpzyGOQsEQh1K1Q/mnEAmzSi19D4Tvq40C2EVpleRXvcCoeTEcD40/fJG/MZzCTDjE/bLT8+2DXyu/QavlsjchSSBTHBrwRB7AwnvoIkovRYJKaFVOrZPLJqOH6t/tYvpG648BsOCpTamg7jJIhHR6IBrAxCPK11St9DjTpBmENzUZw33p9jhwIWgI+31zcyZwARX5ygxUkcp+e8QvVx3Ch0lP9sCZdKxKr5NOzLdTp08jgSaEwHtoaFybJT5s1KC32ytriRVZAlhRWH/5eAMWwfs3CoJ7oApaDY2cji9Z+Mw8dqAG2kX660W1NJRmRu7eJKQxIDvNWrErSiyF26Wk6VSBWGqg18Qgoyloojr4ADJq8kiuzAFJBhN172+9/T3mihyiGJR7CBnwdfeo5Tb5oGomANPqRYFNnbp64SHXE6hV1cJs1j2chFhvm/pfbZu0KQJQTzZj9E0iUWWq9xgr43E4k1H1ahOPB5SniA10yskPhlsB6G/B7CaKIY5MRjFXs7nu6WW8x+Rxy7kdFJGzvYulTzIrf838bR4dLl+r/Xxc7XHmsxd/izVjcSA21Tg6RCqzIEsfHoF7metbzq1h/oiPXagE3V4+eyPNseyzBTie/dW0GAuL3Yd7qnYp8rr4XgBlI0gwDQNUenKxPT88m7xshck+ThRTiKiDcMwDIuyPxeRDd7q6qAG+SLnhZMW0g71wNivflSlatTz56UY81xcmt/A1VCNtJ52zIT43Akc8UfjZHOyOAfKqVCeLztkO9NQt4UXQSfcg1xJ5x7UEVri1g3Beug2tCW+r3lMYjpkRM+AkY5Xyzp+1RMw4WsnT3og9WLbkWVyDApbCNZ8wrsKIhkmgjwsU/kW/cPjpqizpitDDSKCWaCd0QGfWU84u5bk5kV+ZXbc9sgYZ3tgUFzHclzADWpvtEBHXp4a2uuiDUN8Zuk2OugkbtKetgeHuy0oFECM6YTdWWBrjIbNIyV2TC/x5vQdzr2qHH3XSplkwuM+kVBuZDrpPoygguQw5fmya+8p+n/DLrMVuSR2ToacLlDfgDcSeh8YaCN/mWIz9gCNzbT0l2BNbAtmDUJyEkTrqTjkaj0l8MNmyOnS7HskkSamPp9Qk8L40yONFZQzWUg2TQ89dWC/Yjke5iwJe70GygVc1k5dSUslJ1Sib5zpwWRA6P8DtGukAfIlYUOcoWwt5MOUpkcalqqhRMjaZRfChO++EurDt086yLxmvXsh9XemWCshE4dBgiPosfEzLzpuzWrENGTWxuiwsUCpj8puO6YLLK/yHCeFSAerHnu3uYWnp6P+kzzMMFkBDrYixZQcJpcoRx1vupsePxTru2M2eUXH/M1c03eSeccr6gYeZMKfl2KUuuxN1x66/1RCc3Wz5jGJsV2Ii90nz+GNkkO2DHxmPU5k47bgDGlzuKGCOKQxGjbXTlUdNWMPkCdzmu3Jjfxl0iA9N4kmY1k2Ujh/73iYs3hlTz6Dp5OXy+xrAOMg85qlNKz99oSjCGDdF4iLZAU4CPf0ZxzBm70speTXfZ88h2ujoOpB+TlTWUaFSAGeTl56uoJ4dGNq9HZz7WmYjanRgyBUE18nFshvUl2Hvnj1Fy1lOY5/iPT3+js17zLmtNYEU9+Zx2OUeERyUMErjRJdYSCqHShe/QUcO6Rr3AVFq1ocyCI8Zw2uZOz8v3AgKaFHNHHJ6Tk8O38koDKV0dbPjHoOz1ZwTrYSD4bYqCKnWCAyYuGPOa01l4ZVrUse3nXxepJbqu716z3COWbW5n+fz52jnyRBtB5Qpd85U18eYFMji3k1ORb9dYar43kfct1KeimXWKNEVw7yyPqkTUJ+rcBy8GenKQkCknZlkbiDtBHlBi0uzN5VZmFCF26xihlYjvU/Wzmrk+wkbI560Sj7Pn6V9HVB0aohZZqhAl9zSIIi/P1s+XcFNEHORygfBw0aegwSOUJT7a9dh6YFpOUbnActREZAfCL+ZSENsF+F39AjUQUeSEroh9t6e1tm7MFpE7WPuqPffc3zCtFGTVxLH8SRGMQwDMNI7vE6voIki7Lroc2n0i+yMozSQhhFWyX5kBS9VJ92Te8++6kCF7h0lw0hxXWcAWWcGQ74KcHrCSFP7G97h+IFoZ0qL4vRMu8nFc0OHXHBcICeVRLIagfDT8S3asZJeJtOD7dKOnMC57Wax5Xhc1nGNX3k7B84Plj/4WLNaySommbMb9yvpCopOrGWiPwSljQRtu3glF01n5+9uTrGIXJtgyvNwHln1LOUM09n/vBmBNZo435zT6HqrFJYElq7ff6/IyQfF/yEsgxlSPBc3/7ThPI+e6bKqggPTNWYbFXf9mG1CkKo2VxV/veRf/tT6AxmV6vcgyxKKJyg3UJR8miz1djVg8/5HyIjsFO8qxN2jWTy+8msnb00JIUhhYItRmAq+Q35zBatGOX3aW7FxsNwQRwbQXsBk6aXgOh/+0bGodcv0hN2CgTCqxTxa13BeOu81LcK1d8Cpw4Dx+UXkx7H0onjLcyEelxFASDMb2IJY2OLnpGqfPsgPdQ76TmC0TXXVprhY61zXmhBfDswqXQtb6fNgPKv1NNq+08nGjRgGQDZNH/Nr8brSaIe0696nLdDohES9wm43dylcbnoP43TfTJ4elFy7gmxrLKZwenftup5CvJXUVwVEguQvzzjtw2AN8rddOwM8W98BEM32IIA6+ay5PXeoottWjla/sVPwtFN2qBxeUx8Lnd9WFuTMGy7t3vwE5raFAw9DWFQ8OI5wMoqj87mMs8icsk2aoHAUGXpVSKtDge/+ZO3ivs6yZJl4kZGkIkSapvl5pyKHmzLzYPUIzVLH1LYDVOg+ZQwrNY0v+h3BN4NqgYHtFzSRhC9FgiFAMituI8gaR7uTUUReVH0WVcYJb633n5rx7pXFeoXQncAIpTngChpHT6hfd7WVCAvor+EkmlSSNAxu/7j7rU+m/O0qjhrKdColy/ue0+jK4jDt21YB7iA8cVs0UVNuZqBuVZzPrG3fAvq7DMcfCCLtVBpQ/Kxv4gWUPtguetmNA9XQ8abk1kec60DZ2lBlzzx4Gycxd/AmGfueOJ5e2Yqz1UuMq+0+sl2jtHHQZJZ0iMbbgC+XGPxSzj7eMvVo7cycIgDB2skx8U2fi/KeNPTIvHzW1VubRShVhgw7E35v5jBiNpNBY4HdKtiARUH9gqE8x3radj97B/oCaIJvxddsFJfQOeyG59CIg5QwCunhXbmQufmc+gvHEUIfb4ozyBvTjOE0uLaSLCPW4njCkB5WjQM7jndybKpoK7fFr9DCtI+Nlol5zyRnxHclkTzWe2AXKY1PwUOuQoUJjNc0ayLdcvhQ0JGIIxW5ztmZCzW4w6Ro6GaYKlYcoZxGfEurlZTygL+vOWrNvwxDMMwjMxlfcG3pnsxQwZETqFu5iN9lL6zCkwdTWiLS2AJsITxtED2DxK3ZWKEFdhy7o6nTJ8MsKHNHaRx8Cvb7jMtKFPixijLhIrKLd7I3pDrz3VIF9xOb7ejlJJmeQwLffx9rI1ONuUeXjYJsmkMbkBFrROAPdOLe2dVbUngAoT5Qd5YCXXA/60OC0ZwYIfbkH/ZPCG1zEE9/OrZjuqkflqJcIPOMnyb5c6bvZNsjvCGJCAYahwev+5nwPILjlyq0j0OXLT2RDGTvwyoHZx/ntn5wdMtXEkqVpYqnTBQb7BVurNo5F7J30wlQrLYzfrqsVDQ3PeXh3HRRZfpf9XtMZf1BftGVo0WL57us14Y+IgOX1CUo2hrqBNTsQrD6SnWy1xUMq2fA03zThPVBt0p8cSUmos5LeFXjdd88y19N3zcHPHkMS60CIUBJ34BK79mZCTl0oqS4rkYocJltYGZkXbXT9vnbgAm3rWnE78+oTiuZx2kkkdjSNIx5Dpj0mR6Zq0rwhAubqkHL215qwhXAVgl4GvJzKz74oYOA5KgWSi96pa4T/7sUMj4dyo0nc86BfS5AmNHssl5VbI52GXIof9mIhsajzqHaETZY4bCzegDBmcE/bZdMEuJlureMxlGl4IT4tEENJ2mFyJFmicfIboPvlto9cHHEy1GI3DqCNqa7sVgdvmegPb+ANkXRJzi/ffHVg0g0T1eUvHh8mKyFTV5fX/hHGOTmlaFF9zQkrzogD4QFaJAwLWby75l4UeDroVR9u9CRw2MyFeBcCBt9ZIJ3E8i8pIDKSk4d1vsc/wz1qhQh8bXICfYXv66Y+HSzMiOdqxrhI32aUzQAwj+5YjFEZ9cfRkj96fy5wFg/1wVdUShpFV3NAorpV6Y0D3CyGEgZramFxiQdIfAHvI1JdutjO8uBvZDQPpkpzJIIyrGN+a86heoVJ5pMylLAqs+Yxn9hhXa9s1CmNY9rLyMxWnuRK/1VFR/xki+x6ALtWy4TAn9SXo6FMhA724x+3AOGRA5KnuCcuVpkHINwLBIaTbZ6xenorePnr5Rq980RlTfRo3NM3H++IMJeFYC89ROenir6oiyrpUb+alNt+3WCaKaPmd4MCX3DdrGC2h3yKQ1Knp0kI4i2CB4iaa8nQU3+Dp0iprwO8DIOz815Z9Bief/oicGWdq3b5FYSx4WDbJiJ9dsHEeMxDqxBrGvEonv14nVGrUKw3XmxOPtGiqpWf02bjcZwHGvchiWW4TakNQA3Cws/spThEmB2dbda1WehftDuiNJVYU4WgWcmG52uW4iz/fzpEAewWAnO6enYUTCn7pcbajEZOvTTYYP6fPeJqGdOlRgigVGI5ndawORDsMwDIfdUjluzax0rwbvAGEnaxmbNPkYXbjH9FfCf4e/ubOQKKT42HrfFTvAjyQzwR7dZP9lZ19iJo0acNsLYupIYVUTWvAA9+LMr8vtdvui6M18Ui2vBAwXTcv/BX6ra3TWKHMKbhPahIcCWJFAKpb9QDMvs2U7Oy8p2qNUQ60uvHbbbWd94qFZSAUfS8FAHO1Y0hSTImW04fxgPTqOWDm2S+2i/t6cBmD78IoaXwMSl+O0o5qUgMmQZWMCogRmNrMDmqiMOChEnfJol1aFEA16EYi8YKAMdMisKHyCBpOYKej4C9Sf31WPbS+q3wou+k6778A5HksJtmcPW6sQdpWLYkMrRANGvFAOeqYude2Lcm5n269tDADUT92yh9m0ItEUpj7JbIXS2oRFwROi/+8+VyVmMcFg8q3rD8mXULt/D2Qvs/VmRtmyRrEiedf4gntPdkxBIOCQU+rUY56Z72FdXmmeTchomveQVFLwStc35fVI/TjDKLVDc+cOCFbT/DHRj8VPKzsNHgV23ORHFgK5EhvwdiMbLm5uJjBRBUCAq16TQnJdyhhMbzmTXPkws/x4+q36HFgh4MQYkinicLjbBFdAmC0DhYBkbIl3Df3hIoR+8N8GGm6FNs3QV5eoGaF3shGZABWxisoA+gOoONQSLjVMYYg5yd3ABPXHOq+R4YRYcDxCIS4HMvGAwJPCkUIq0Z+1UKJ+vL7iKGf1i7KQKRkMoowfiT6EI0VEvECsGKU2L/XnV2K2h6Cc/jblOcxgmSOCSs6K0LDqBAj7w/Ipc/53K+aOa7Pfc9OM9FBWtq96FKvsHemBjsxkgzitdRXF7Wtr/YjHKRCNQNBTtWpm7yDSZQkkVtlBCV6je74/zWQF8wYTfrkwQp5C+tPeSl8b1fIkcGYrZ44n6brNjSPfWUbfj8wiGgLlfRJyzOjLsWpNW2xpNYBWWOLyVN2WquIgBbTtOrFY7OC6CzeWnZ28Uwon8sIKsm7vN6kV1JSHhP8qF5WMQ03v/rS6rlj9cmqSTW5RydijgjP1kY85VY/r6Og6qVGZojEd5b5PZwYe4CwRzikuyZNSDN4twbuy/5cHOSGof56Pq5aaHnaBIzOF+pTOV1+BylsWrgJhbopufnL9raR52cHbQCpemMUqlt0McZrHduJ71ZiCtRjaa3s0TdLCPN66Rqb/2wqYxGzDM81aEsmrI0yVy/S/xn7B41DCE9guuaBRr1PhwrVUieB/yBxvaGEd+8wt4cPWR4LP2gw0nBNOVYAsfKL37evmSzqJWwEgs8zpEljpqu9fwaCyivwceT+NmWF68ZEfHlY5tAJ49nlFHroiYM4HUeWux/dsLg3xBk6k+9iOJgaqc/ov0EPYAtfaNZtctR2nOK4YXeMMxZoK2hU5QeXa0yPahF3z+pyb2hhcZ1YdlfZyreNH7Tvq9E65h805ObOLse+41LUMn/fcwfXSpiKtFSuuYPA4thQQRqG5CEEecr4PA85xcwC5jrO4zFAItyIK0+8UvxON9QCeNWsDOLjhr6h+I34vHI+eLcLeh3yMpVm0cHvBBXCrVi3SniIrjyuIMipkTDzZW4ZKWjmNUamis78orm3Mw1/fijHocu0l9hNXvmxbtDYO5dXB3Cx68HhhctlaVc99+8rODwpl9O6Bie+8WQbaaCsyhlNFrQmKc8E8/LgoxuDL9ZfEGPdOdi16W8fy/mBhFj25uRAukaa6dPCZLX3KK0sv7sa49zJLc+9JJjOrClz9iwIHT80Dj/5Pcfi7DChBKTl1O6BHv0qJPAUr7aA9Mod5+FWb5X7tFROaLi5hJq27RBtePaEK5y7ObHTx1yI8s8rcm418QvdM+OfbLPrr1XJCtNjnVrqVfbTyow4fSlXu25ad0B8UnhyU0au1+YTmTO7RVRE9erQMS2bdNPdstTKd0C8O/32pov+eLSZUoNzRhzw6ejAPt5ZmuZk3xYRuzyUydHPfAvYVVGCiAa/EcLJDUWuhCKJZ1qiXy0Pm5Qf1C13PAcxL511/vJjnJYieG/dlX0EFJvJ4JYaTHYoqC0UQzbJGvVweMi+LIUrN2LD3pM3r1rfiCPxfKApjMCEtLVlnX2uXfmprW/sU+kF2bPN34pfZnxdrbfA9ocH8/2QLYxv1PzK/vVVfGiDEnrtqFZGWOZXrKC//q4bI3f1TfoOxz+QH7o82//PitOrmPw+WZ/tDTzP8zw//5wpeikZZ/9lXuwVZW2aLyEVqQvO3LzYKm4AoxKjnrmrFPzhBNjhhFjSBA8CJzADZNOfNJ/u/GAvgcnvA1I8aTPwoM+2RZXQWo+S6nyuqy52u70N2w7BvBGcTIpWaJycgut5k4D8ZWZq9FuP624TSSO9zIPtSF47PiQ1lTOzD3tD8K8qN780w/m21/sOcZs4SrBSYoEsFS/R7dB/+t3TfSBV6le3Nty9PAhTgdYSGIxz5ybK1M8IQjMri1jJapW3KvvVlpuFumBB1rbjomnFpicPQUfjrKTCse90+Q5fd9n+e20jKCOX1c3Au+EwxrvG1wVlQEqPzQFRy4xc18bBJZUy8unxwccdvXisPd+gBD6bn1tikxp4S5CCRLim+scof51rkKdvq2dcuHLVZVS1RFM6Zwep9oOw+zpUaNJU/XFSbKryGQouFLTRtlJp6x57SUTsrijIaECyIlYQKIvJcHUHI7o1Gxxtlohv3xEJ3HglnrrxXWLfFEVhV6tRT9Ina80sgFxq5DhSm2ui63fBhBs6BbLJZqJbuxnNuLf5ZfVEl9ecbojfoJeaCvWwD1hl5A3EHekSeIUKHqwsmgWgV+qAM+f1gJbsFa4G8h8imtXyGfIOoFS4zskDEBmvAfEgTN6wZOUHcGDPer5CfIBqH66jEqXVE59AXzO8QbHBOyCPEg2mWBnnqCIlGfXwSqY8boo/oO8xb7MUXrI/I7IhbRa+R3YiQuE6CSRzRztBvMT/jVIobWA+RDx1xr2rPK+QHI+oZLgUyDBF/g3WF+ZgmPmC9Ro4mAuqWP5DvRjQjXJMSpsYR3Qj9BfM/CF7h3CH3hti4ZjlBvhhCSlyy0H50RF+if8F8wEG2C9Z35K0h7hz9HPmrEeF7XCs7JhBtQL9QhuxuKdsK6xZ5p4gcVcsK+aqIOuDyiNQQsWIVzOUrKT5ivUHuFHET1S2fI39RopngeqmEKTREN0F/xbwYwWc4nyAPiniIqiUgnxQhg6rX9qlfOaIf0Pcw78xCvMD6jJwVcTujt8hViXDC9U0w1RBtgX6P+cWsy94NrMfIR0Xcz1rPO+RHJeoCl0PkoIj4NdYzzF9CiiesV8i6salTom75E3Jxoklw7ZQw1Y7oEvQnzK9GcAfnBtkcsRlVS498doQscLlWtFdH9Av0I8x7ryxlm7D+Q9444m5EP0WenQh/wXVfYRJFtBn6b1XiKJ8J6wHy3hG5VFteI98cUWe4vCOLI+ICa4/56JUUn7A+ICdH3JRG3p+Qn5xoKlw3Ik6dI7oK/QPzhxH8jPMaeXTEQ+mVBeQJIRhZP0Wcekf0oDtmV018xmrIRNwGdJAdIsD1j2ASQ7QGfcQ8qaN8LlhL5APiPqgtXyA/QNQGly0yIGKHNWKukiauWAfkiKf6/I665V/Id4hG4XqihKlRRKfQJ8xvStDgHJB7iM2kWSLyBUIcLjeK9sOG6B16hXk/Ocg2Y12QtxB3E3pC/goRNrj+VJjYEG1Ev1SG/M2tZJew7pB3hsiD2vIp8tUQdcTlGakjYmKtMf9MmnjGeovcGeJmMPLeIH8xopnh+kuJU9gQ3Qz9DfN/JfgNzivkwRAPg2ppkU+GkJFGR0l9ckQ/Qt/H/Kn24hXWF+RsiNsCvUOuRoRXuP4XTLUi2hJ9g/mvOpX9G1i/IB8NcV+oPT8gPxpRl7gcIwdDxO+xnmP+4QZAL+Y2nuqIEqyGoH9wqgpqJZTJumLSn96hryhJT1A+W58M8itbaDOge6i1oAz6D+WkrXfoPWotKIV1R6H/cb7WM9Ra2Eya9tSQ9NPr+sRG1gbnzvrLonde1yM2K+MseoDzl556h/7O5DjZWpP1L86iPW5VOJX1QKU/vEM/cCpd4/z8D/NDMNJ4EQ0lbMOCsrT27EUHOx2KyDCq8i7ZUp0GirVaPJXLYOJUYoljrXyQDDnadVCN0ESj0a+DfWo75aNkeA1tmChTq42/5DqYdCijMApeRcPQcvof4a0jB9HCzoZoZGxdg6Ko7CkRkoWi7PAbodyiMWDA13QmqsElPK5LXbQ9fqPtwx5bWLJqD/gLy5X1voN50fZhqC3TmGtf8LkrjnB6aFDCPjSRadxLvQvXlVTFuVbmt5EUuuhfL2R+79oilSJ7Jzy1HW7Y+oQ6cds2crzuy4glpvGR23Tha3dpvpfvg3dffE1gVwbKuxQ/Ny9GKzYIISeyip9DvynauIract46FOKJ5/hlp/TQtxt3XGJ/6P/G97WVcwpCi7j9faEH7yp98FP/2wSDn+q9yua76nFhPkn7WpqyhTb78qg014N/Jn3dP/xPEz6z5P8r8f3+KL39w/t2aX7ssf5FFfujLYLwYIL+5n3YG6VguttcrorgdC4gMfl+YAyHvCvfZux/uE/7yW0evDy0/00/v1gNv9tv4u7LuSTVrx03ddVuvr5jf9qU6e4zBejebaA/96aXFobPDvoFs741r2HkapZoS+wMaSnZoTnCIWUHJJdSyXZA8OJItFcBRDeOfssNP0ih/7+YnM0pYd83UCC9Xqv/7hy0YjGp2eE7AfaWxkN5BeSOa07EO4DlSvHRswL+eEVzzAkofJne8wWZTv7FnlW9Y53Ho2Su6pAg/oJHX14oI7Ml9pcx2OWq8rDJ0vioUba8eqRx6Fg5sxIpqv8eSHQlXb1ETw4Wa/xcOL4fd+02BKVaqMSQg6CCGT5eT0EEYc1XEcgczhDjPyODfPc2CAmlk0Eon8IFrFYS+LxBi4hikZ6Nl3C9Wgr5kEnVJ2hVENT6oxt2uL2AwKRxuaQW5pZXhAdW9XaVFQQk/FFa6YGfRg8NPlSaLcAy6icSa/S+1Vcig7+tx+ZYoGMF+0AtRTtaV0UqxwZXi5ux70uLNwwfKRlzlSKNaXJ5Yn8fPX6YYM0oM89/0Ze+13HuL7xZt+lYR+sGZDJWwKjOKuBH9s19AcUq/Ka3EjnnlQc1es4y6qBLBGS9nlYq6L1EiI8+Kwlc0DtnTqLmJSViqblAy5Ww/FWCaW5OPme9AGlQ5ppi5np1prLJtIl1Hxu2dceUKqvEjEJOrViWrvbmeT4fB5UL73y0r3bQY1KfBHIGhaO7eMyK1ooqn19EV6uuL/u7rrmXY6UTcj7YK1IrGLBZsMZKW+7RFh4iDCXjlvfoKTDwzqsZqMumC1//JiTipk027YMyuxpYqHh87axYKvHWt23Kruhs3hxr+/H1WIHvb/b8uC9nFc+io04bW0OmLz+8kxM/Qzp5JFnLdh7Z46kiQ6NaQ8v26/8sGlth0MI2YOMEuvM+BYNZhImIGYhMorHPyT1D/18YtMAXYZ69dW6wIkMV5uggFsUdMqtaOR3jjGqwiBNHSq0zFGNo75wCP67Zwic83YVTdEQ9/9qTnJcI7321Txo9w+SqxgZEmnOWQtGK1q6wOoU9HVVSZKNKbZXS3yrZ31nULNHZl6WVVFU6FWCVl7qcrjZeikw1TZmQ0oF58N3K2Ahw2Rs8ouZILHIsB6GQ9bTgFp9MdgTmtARZR6hjmvU6WlmxOkJdfRiKDUavAwirddrtYfCwR3dba2gVR1TFkLM9Pjhwcvxh/lxqQVaMLWXHik/Lp6DP9NdZlTfH/DPV2XP/H+HU8+TjxHdzROZpicsFHTWNrG+kIlD+se7101xZMUtjy2pPBvSXUTmBarpEexILl6xo81Q40RWIBOZcCUPstfd9NSRHi/Q8DYGsqaxYknD4CLTZrkW6xbeIuPsa82RZ2xqs0sb0mNHsCHS9QxzaykQ5s9rI8rSkmId9L72L1Qu/roZPnB5cxkN6s5n0JPFzlpCuzWPXEXl1s4oVHDZ/NEE+uADhA7cAfuLjHUqj0fFXaEMPABD9L6oPc9zcPjRqmtyW+RR6/8njWyFsvE9VriqvdnH//u3F8y6VpjG3U4M/lRAg/J+xbjsgzB9AdN+MZN9oaUQfzUD2L88AIPEGQAWrN3vIzyPi1kOhIOztXpcZ987g7xtehiqECGWeU0RpRW7BDt+TyBudTOjUjSgjBvnBk0IUm3bRk7vGBeXf6/IWUJB4sBxvLFkJ/YOhsSlq3hkrBk2Owi6Z1fvmHC7ZTVshlGCTlDG1l3KogCDu+G0EMZf73Ouk7fmGG7IfIuRYKyyioK/BL2q3lUYzO/LfPNZ6gTbqVVrqmeipXq0fpMHVNo3ktGBqOHu5SeBCijqbxNriPZk+vphqwWioOYVVmExr+3CkDTVImwaOWlSyd8wycfOPEiJxpV+iOYkqCOMeZPq2JkJX/2+nnq4aF/C+lVzTSDVhdUNhZH5vglV4GYbfUsqhrYcKUrZ/l3YkS0bnTyc1FrAP3TMyJgRayIrNAC3vWgAxJaB9ZrFEH36dTnMWsuM0u36lY5t2qVmXAWGFbqf6yPgLpzqnR35GERC1XBUka308Xf76MSsrq4KUCihsVi4gm2msnwm3yArDMW0ZyuOwCsrI2Xrnn52yENB37rXjU2rx3wyAKrR+3XRAQjQpM7xOYRJJ+UgvL3ySCbzD5uyVcqq67x0EM1szaoGX5iqDGbGPgEwYOdPlxdMWgPdpduC0svDNsDTQxTSOBoaCePtBK/YdJr40AGTbTTXvmIP9r//yuzUJ0Sbx9nvd9LK4o9saqUFW+sx2Sp+0Rmc6RbIllneCmgpn6kcrMz4voUtRCNF5a0wwSfvEa73JMBenFdDwouocfba60MXi94J8iOvFdIr/4xF+IAPwAf0CAV+MfBNWCZfyGicfKieOS+v1Z8H70AXeVX5pmKRz+Tj2giRkoFrTP0e7j7DxeG6Jid98tBgrJokBndKoFJMETga4aiM2jII+10LFMDe2Qt+ygVkUKNW6wrrN626TSy1XWib0i6s2JuPl1Y4TlmmmAZ6kSP+8LaK6sXjXJc5KDwvthdoCrQYXFeQTz3UrNzcITgIjV9g1RAORQJ3GsmyUdnIsRabCV3Koq4MCfIAGaMWrQ+93xT951L/sCI6KVsgaOBaHOkMY6bGjaAw6jK2xJvTHTLVnvTAl9xv7DeGYB/1OpOfZDOdx/tlv1JeYLMJm7/SzrLmFu454U+hHVRlpluM37ksQVIa0JjBumh+XGGGcjLgswGBOGlkiIsAuzCmjakTATJ8atbYER3sIcsL4cMWA3uj2LB0qL8lO4Pd68olMIDBIPd75goY+WOMs60ialtcb47OSAxjEF8NyrJOsYJihQ5ntDOFVMGdYj7vf/d8kiXlvNn2x0TvXpkQjK63nJWCGFBqM2kZIHQrAhnQmoiYcqbi6cEf7zHj13vtVeo9zX3JA5uMQLKl4MXH/4r+Vor3pgOrwixBcxrcZjreS7SUNVHf8+mg1MLa1ly+QAcrYPziNKsWLMWtXsHL+8ubyGOnNgePtCX3A//Yfno65bIZXfETfximT+vy11SuI6LDTjcd7cfxJiQMoYCn7TL5882+35sIGKLRftltiiUboo859afOp+bTuVMIK5xpAXzLfhv3yd9cHyYOkng6KGvFuv5U4kyP/hv3nLf5L5+zyYrxoWCWvDqYpIqoJlIUlFEBCbcY4y9A7R+ru/V/mwyaWVPuf/34E08/7z5VrsvG/kysaSZANfePzOYk2Ur94ExyfM9XI+2A4WschE5gTnKcFxi+KwjjdTaUu065LNThV370+NvOcB9lU4YFqtEAnh6CZnCEiVJyuGl85vLGK8JqE/oEaEbHRsgjrNe4UCidBrBNcJ/u/HvFt6jmr7xcc6tNCUoty8cbtXh5jxu/wHEj+4YtDy1JcWgGe5598qw8+zTwd1DVKzXV7vJQmC9+oLF5WztSrZFS6Fw/9ui0aGbuFS/z7ijlTUPsNNC5prOUaElaA4IbYS1CyDT1+l7d2YyC5mLdhQGgR/ugHU2syxaoM8zTI9f1JMIrH60vzUpArQgB6OYkp0qRbAJOBC4uYfW6kKjetvoJOwKkMWyZ3XpzLWWWMObRoGa692CqUQVzK0Bnd9jNOaFEZbHostNiE4V2YsI6VdvXLs+gUmURRaFRMl5ubuRVGssTk21KdOkyDMwLaRoFZ+sdEFAsHGrifoUnpofqut/kZKtdGOcYVzFkUH3Eug/JRjboGVb9UYhJ5ZQR/1Lszw5jPfCDgmsndCF3MF33uHOfINFemBx9Pz3O59urzUDl7B4g42jZUgPVpPaDpSjFf5UGZpoynRbJkaztdPkPLK9fBLJDLdtr7s4GuyQdnWJkQnXgdysDQObKjoXeABTaYmjxY9M3aPqZOwJfKMMCoWT1Gplhw6jhj++vFHZfMLjGdw74VHbAc56ZzQ1LCtRckaq932Yp/6SDtRhT7QFN10yo/PCr3aKJ3mfu46tK42peOeCBdyahHGpc2cyHZhsEQ6r2Fl0kxyOvQ6NMoPUvtCCcjJvpu77Ti9XgEwLRrX8feUDF3IE1G1gccCFTRJADAjuinoyv2fUwu1YXWpOVdC8ELEzYOd/UoP9qwoUaq7kl6+IiCYR69kUWJY/gAg706w+adu0+33AJDF+pVV3lZS1QfnA3lNIy2ixN1qsiFBp/KTsD1qXe7KMxdO8GMXd4aYKm+2HKSfDYe415cFX2k7QcnvKmRtK5xSBJdbrq5zc3+OdGP1UxSqZGvSJA1PMmYBJW6qz/iGs8yM0os9IwMLP9jFQuj+/U2tMTOR9i3jtBojMlZlgrYe6fzlFLkk8TO4ll5yS/r+hCNQk57EdxjJxiihEV8fT0cIjmIWaqk84pOXj7AMzJ9owZ5aD++tqnh2lK8TMVmHipI3PgoKs8sBZMQ+9Di9EI2y2cMBGWYFCCM1XLkhZYXzCVgZsEPk8EE9uz4qLebcKpV8ATyFLG1XrZXjg7VWjbogSjOf81uvfbepY0mUHOatVvy3qpI+3Cqtpf8fNeXMEVzQB6/5RraG7E1etvaOQZL4yfpuJInxkXa1P7raqqsYPazRHXjHVF/iAejNolDaNp76WVcxhar5erqssfKfUPgHBlu3FyKsEaSqbagYnbgFaxD4+WUK8HSNjSQXIz4VmeGB1+U9dUkISlNgWRivX9VTCM87lnLXOmd0i1qahVkXnVyf7HqwaoWpbnz2S3Jt4B7B9kGqNyNo9CqtbFaWXO3Li4Hf8wkNV9wajmsmVJcPy1X1YcJi/I3vZ3keYDL+eDzhvmCkfxpUetJQ5kLP0mPQiD0hS0+dr+J1fu7Ioz1qnInLAJDno7aGOAMUpmsQG4gdcd3558DIUzmW4ZHESCbZrlvPfDGYyKLhSBoMwaPajhh1L97jf4mH50le3KNAaJZZOXfSWUplKvUOOqwlgkvwH6db7WjDEAwvOJPLC9t7PeWJqJXlOixREfWbLJ8jH4G1ZU6GqkbeDjCe/P3YvsDH+qACc9KK9Ou8W0wiv6gE0bIG1dxCUwL6rnQsp5DpNAy504ruIkg0+HvP6nWaBhbvQhluZN+O49w5Ej6m6hzP+S9psQoYdoq2u/f/DexK+WOTHqQk/qo1+pdi0KidatJO0tkh2f8lCZSENlqxvt7unClcyqKvpZlhK30Q8eBC+kuWIcIwQR1re1gO3LLJGaZCSJLHkfs5KmoBdDDrhvZURxUVDPQ9gwJVXDgcA+7eJ2lSsINzg5hIMGWLh/S25JwVi4dDmZmqrIEW5tEW4c1M78Rsxwx2fIgVjeHoG5rKZQUdkLttTjqbf3mybWfFY09nq96EMSxx5C+b/HnNqkOgR7r8h4s1wndx0zpsdgVOhbt+sV7bjl+c9eGnsESEEBwaEzvlggEtruj9nyPEPJ5H2Ot8bXE0rsJ3/pu2+AvDcGWps+rKWOUowO+Q3/WvMS9IKcZNnDA3gpUjVRbF3c7RfsnJcDZnh+xTNCFTbZqPGTo9XsAitZLR2zvTN7/wWy76tu30IGMwBpR8/lSdFsERrTCkPmCbpjXnkMIKSGb4YRYef0WKoKN9Dq5hIHiH6vVgVO2oNbCnKgrYnhyEU/0lvRv2Kl5uwen+wn393WrUu5ul3J3WDeX/MT9cjRAiCSH/CSFAkBBcne7xG4sZkgsrihuPn/5SFE4AEGC5ZTIzOjtn5tFywUjdzTMfVG9NDnb3HRDZWZOVlPypawPVFASAe7kFFNsFaZdEWhsyJOe8Fcea+IVkfkpAjv0J1G7kkCFCnelu5HQQNmIuhDYPHQ87/eqeQX3lpP2g7Gn90xZ1IMrGEN3m463utLPneRYJ7fDnWaSKNuSherR7AryeC3QJZkJc2hBtg6jIVsjWOClWLwQdmBI4cmYEpm2R3/WQU0VFlEdcQj94hSmXR0YIcms0XRUY39o3hw3a0BFSEckSLN3tFHUVbCQ9TKmiQWGH8srbZaXuC6StLs3ygg6mo+MckhKKEt6cH9cMENzgGbH5NieQL+Xyo6SrbST2CKmQ9LzgURdTj4Yvw2FwDRgxM6Skca3lZlE4pHEUCoStlNBOFhU24cAp/CMC4eO4WKPnvN9a+8Xbq8uxYLrbQt7LS8PkmugUJjU02pLUomG76Qvb8mz/6zIMpZKvEaD6wEAMnyUfwciYoz1+/vo5h5FIOoxmM1tOdsXKVn5z2BokehxB7FwYiTdgC8oRICZeYV1Sq3N+2Y7DL6yq5tNWbwB4BEtY1J16CRhO1O5d9RbWW5nKpCigjTLyaNblOuKgp5PZ+ua1YcIX1UrJo6g0IngSl9S74p4TmZqcdURLCyQo4+Dc6NLKhsjDRUdtr1EzGlZZsvceh5JcywY6vWXLhIW45KRo1TdzG3DzcY0R/AJM3Y70M0u7dg9UGNOI4eVu41AeYAwhYSgmOMB9HLTyzA7uunZW3FLeyTWfgZUHGcyI2tsASS9REcP/+r0srIG6cLYqw4ZB6NfEbRHSexCuQSusKe4yUBjhyzpqUS/Uu0jjnirGAQB6OH2ulne5fn8MR25fdpQfT9jt69dR45ILPJC7nvdANftTtQMROESkaTBnwp1Hh0m4YeTgbgGE4hhcd4bBVdApTZnjsU5vQoq5zLfeZ6+FYYa/Ok2tzxLDHN5U+ZYK4u7YyRU/FgUBGpdz2nZO5sut/sPyKdWTxFWqQC04kbKAtU28CCwt+3O+ZY9wVZ9/46+RbnEBFRutnhkwRK6XDiqOyB+oov6rVP+2U3UMnibTrXga7z4ZSdppOomCmb2yIDD5Az+d2wErs32QEYRURoG0zdagIcAPSHDmKeu1koINeVnzsW66MAKlr5LbjQEKd8cCTEJiRTSOFkSX3MSCxb4a4O73ixI/qmKJcwdkN094cLf/4qr1Qc9y5dHyf145SrbnkG6EJmN3czGqLT1IIgEl7CmoZX3PqP6tvqAwy1SiXTzz1T+lDOTMPbAE/zc78YwNmJDELH8oisYBZAoSqQwRKzsILtUCxl56bHyNuf522kPdWBRJv3kLk7UZFCZYICzKgrPwuAUOgqea3g2buo0vUcoMr7kJp9qhvkDOSzu74vlray0QkBt2pkTIH8dz2Lte2NFqp7iqu51NDp+FnBhJyqaM6TEfAvy5MmsvnuUrYDBt8EhdtfGwssORJp8r0D8MuN80KLt7EDSGueZKMoRWhKuhghUWhrWeUJVMHnKWmJb+x+ZQ5XtuOKeXkxJ49+IyoBUKMnXKxjddFQIT+FAgvWc1XF7vKGAcNdzFPv4bt55X2tgJQeyeERBagtSV4TiEuuFS7oy3ysT2ZT1BpNDrKInEGLXwtd3BFAH8gLX5/HW55qGVcu73g5z5EKr2+fiuHkulouWacydJ5cLZSRlAm07b4tQaPC7PcN3x2nc2tftCJ4qhhP7VsHM2acc6nf5WFRSSvGNdLaqF5gYa42nIRFtvaSS1uL/HSVwUAc2Zblh78gohm35tbrOIiu0tJpfYi1qOAzX1TTGHhZTKux/EVmPl8S+Gn3YcygChHPEGCSi2qrZ2pWHwX69Ks5/7A+bMrNxDOTiG0j+wPw0MJk8z+g1GKZRmh6gdamQnmNsJO1p4rMoa2qZG1mYJxPVQ3fMlfKD3OjgHh9IbGVINBZ1ruOpfFoKIgpEjBA6RF0Vmc1DlRfpdJF/ZFfuzn4jsuYRtPYdaK1m/KjWCGvGOThlqSk1t4cj7lnK1faofrCZbtoEyASwiVqeG9FKIJFIQdRm/fkYY3eRRnYwyiZ+J90Yw0c9wRQCkl0Be3srIvoElQ3A+rH2FdZX8D2MKkskybiR/Ox01DZLP0ELpPxD+gHyR0zTGQ6UHSF2vQ/qIcHFqfIVOpB65MVrWocsmUeumFAxjiyQS9SQfP2aHP8qguMJsALxLBH54jqR70YTvITMH2nYINfER1JCK6JU4CFXLbaO+FK3raau6WG3i3SCpu0nggMt+M/WCkbSsY1O/WAmzYVIa2SOIUcf2aGuxX4RLlRxxlC6nQw7/Yf9thZn1q++sH6gqIrwtwKuR6ynbtF+1Dp1hKIeUSm2JYeFOyvxViS4DyR/OEuDA9azCrwGShfqTmm2FqdKWQK3giV/SHnNaYV+cH3xyW6cnPKYffmxesh8ne39ZmVtmGJxZgeDy/S4mWZsOhmd5C1mSCKtgN2MkJXEUrZDNW1DKcsVjDjkFx0tsnJ9hZ8Il6U408DC7jCjVu+Tt81MWdqm0otIQrpLEQ5pyfm0uTqtgs9mcHAVs+XUsjFUxBKyKrLGyKH8OA71bU03DngfBApvixWoSgdY05D3UEW0TFvmD8Bnk7SGpmVwWsVbmWLId0bK9c/SZ57VsuVZSNrNjVREKwsnfDDdI3ZpqtIGDVWubk3nNa1kJ2iBlLwnzaEF8v1cb7XEk+zWBtdJgNZx2K73Q3YzCkrWu/O4UxbT0PCVmFIRyc977VAimCII8JdFQsWe64Xl7REofPNTAQvMilb0luRWl9FSHCCGgMqIKLGa35qNYolMSOkdCm8ZuiqdQYqHp9p5eJYLsp2aNnxNEwrftFKdkpV4mMq0Cd4Ni6inxXsq+mBFaBqQOfpBrCAiahyPZBl7rhjMnMXSN4xLRDstzw3iV3nK8aCY+BIRHJ9Vw66aZ6eqKJ2pK9Vm/08Ckb8sEaf5n0vqgs/DXrbDJaqvhMVhB6ozFh5LPF0NqmTIcXNIixHQ/eGiCj6mAd8Ui/GlaLPDUD+2amjtfjgpJpHvSu2OigBpRSd5w7tOUMSSwqapmrDStZ3e/lpb0qrCAnDCemqPAPCdXViFhY10d3N8nUXN2KC3JtitxmPtBMWxNgZbMg7wD+ttM3y18gL/9CbAFBbU5FjxJwr1oDZ7wmAOPMstsvLABdwbr9wea5Z7R23CL6l5N9rqWf4hsB1YB6IH5VAeTfUZ6NR4yYCT6dWAe5F4DdJMlphjJi+CnQL/U5wG9I6c7+qYd+UF3rdPiuBOaX9rx3vgNVXHn/ok8gfAktxvyPIR+vNpFq6//5PTF4X17mntkeFJAJ16bmQe6Dqg5QTeumgGKq4Gm2Y5nZCD7rWkzLzF4Eif82m+mzlM5tr3U/P62RD2nC6Ozs+H4Mt5RsI+BFjxnt9+8lP8hq2326Oh9kO6o51mIofv8ejTVSceYo1qp9HAaSAhY+eNSQNr1wb0MK+XfLR1E2x/ijP7pE1McMkba+CY6NYX29Y8rBQM1MMlwS9cTPBxA0wYvIEVHs+Ioqj8OmdrEaVpk2GrG3q+hXfhLkzadEZCTC62LvY/fxCgXLZY8PYQ+7R/vTig95ZBGrzq37XiGR/Fyo4CZA3uY/fG9pnRyHzqhtXUU3szeDFVfe5fPNBOG7BshVjs7DgdP9XPCfKNSyGpPTVRGHGeNtotHjjeIuMjn59sz/ojqzfgYUXNR7+VYPlieawIf6eTmyc6ZVE92P+57NOw8NMC/XPPQbQL2yN92Ur/VgO3s9UDna5QyIjvWkwbAmJ6kXAi+TCfSgSn/M6/8V8niesh5SMqCMnrJyrqTeL6DxboZx6DJ0vtcQIkKlUWI3WkoE40opFVESAVVdr6L8sL9p+rHIvd7ZOTiD3w0o3d8dFet8TOU/wOrgnnD7zxR2ZGl785OXvS2anYr8xk/5/ewhy8GQpr24nmOMHxramOql+XsFTt+YVOjr8zzorNlJ6b2B2dLpF7RMVPGag8GIGo/DkrP+kgR4ny6iiWHUPwgcWFBPPiDLf/goppzScY6vVZ1936AQgg56xNoDqSUxAjpvIDE4zMR/TvFcto5Ok6tYBOhGw0Ov7t4F2m+mELxEQAygMM0YX7xreOax/+0AqJscl1q5t8BoMj6RJdTkhPdmODLkXdHNVuCtZ/9ARs/nLb+tMn61+39Yfi4IbNIwLURZCb4AQVtlJIoPQImHUQ7hv698ZYvfUkrv5w0GbvPAmdx3uneDR2d1LBwQQeGgVfLmk0nvRGukrSct6aUKnIlHtuvZGZCwsHc6LQax2EWV9FaUF7Bm67Ya8+vHNDRdfScEu66w/4rN/U4/fy4DPBbkte1Q/5/Nj9j0umtolBcxoU6bplUf300b5WwQgf0KCKO4dkjn+0R82dTYRJRESh8Gdq9OLXXc2SETu69R9Nu82KcsXfQFEvY+wuUyW96hbqJdiDf42EGLvd4FCtrIGyz5HdmqPE+p/KWEPAuEfScVWP4VvSDerwb1sxrv/EYQHsOfQewXoH207HqnraGgUXujuV2dNsaL/EPke5JbL++Eq1lNcvtfUf/gNaL4aWyCsg+sr3mI6uMshZf5fhxzXZPOrcYHW4+kcR1i9ZJHEbHCp6RX24pvzwQlR49jzgSNVi5RaMnAQCkOIBhDBDeK92TyFA1Lc/aln6qsKlnGE53YbrapOIkBWs3G4Gq656afw+rpOWm3wWE4kf74yGkQ14ELuZYpdsM9tLrHn83NpfRHVP/SyvNm+c7rJDSPz5AwFU5csfsYu9hJ1j5A81HtPB3bPmoV2Vw1uykBGEHoIgIf70aASI7fiFSxW2iADRN5HPVC8Da6FEGQBi5zSO55UsiSG8hYrtJX7nSwPpxF3V91WaWsI8hVrLYBN9o29hgM7YLor6PYvENJGI1AuOyAyV3WIZTDMNvGkYr09ot4eY6b54Kvxv1Ew8V6qhwJsG8XK/hjzE5NRKynrKODkBG3zW6BvuRNqXd64rpqvd6h/kcwsy0X0ZS9dDTE3pb6+JnblnQhW6V91cy36AQWwJNDOzgjzbDSZeMMGMYvqGM/BgBXZt24VwiE0Z9TO5QBrtPIETZbyoB14kujDZDrHRf+z39UeIL/oW2eD45BL0I9rANrZLDm1SnrU6GtTQvdF5c6IgAV70Z9m7/QaIvzqzc+dGTIFBJkbJ+WAuO51xmo/g5EjNMXKrIdi91lx+Id/LCj8Ue30Blv88aT95oEDlJdWzxHaEbkEXDE5kbuoiDVged0IkVgU9lhHanIXKClAVrsN1mKkNLtrQioxmjJWEItw/bHH85JAx86i00rJ+DOAbSkBwUCzMAF55pXy+klm8k5IaqnbxBjeAWR9BuBTQR7K/RSWimif78+U7rULpqqn/rKtY5Bery9NXlvXcwSWduWa5gMj+Dpk+ajzqTzvr3/sMGPDNkaSW6Hoou5e9/Pcy9ja1SBIWLeP34c7/797Xh+oJk2SDKevtXkWRNeEROPDIZ1pRRdfbYzzdTb3z2svbK10PlvDMGIXiiiX1FYfx9YVuozZ3brsOA14fnl8yluys+DQn9Ry3hAU8qCY3OFW7GQSTWMAVjnhNhw8P8xRA/2W1Te7aR86ZsAyOJIOLuu9Mu5RdKw8vI75GvteJtWJYob3kHMeF4Kck+onwfNUjLPba2ePkteyp4vWbh0XWND2+ICPdF4jgvC2eXTYn/z8VsuYqtoJlIXtgt5xpIw27YW0cGLbtiOX8x2bREp2iI25iee4ugQzq9tj2LRbMyPphdH9qFeDZbbSSgXeYD+Tx1OhhluHuXKfovvqtzznbGFz60eioCi8Uk3uJhlsH5+GHot9qf4/f9z2ho9LrhKfENvb7hGeV2AahyNbSAVNUg5kNDnOlFz0H7EeXQOc3y+8Eeo02wtg6mZ4Qi/96GKDx6k0akJcuG8uKHOLx84+zLfRrJZtyGF531Sjz1UvI8FoayLGMK8007mrca5nTuwZLzzX34S796qPAwX2mXRiETDS7zba5ENhe1KAmSQ0BFSWxV0S93Q9/rNst63m5TS14Zg9MQQrg6v7iRxw0dnDPai0GxoD0lixRPFig2S83xCa2SoGRugayaMs/0jB2ix0XeBWuomM/E8G+isTQjtQwPZoIJ4kgD0TBiTuLGiZpuCbCjrQ+Cc6F67nBaUfmcJ+G8F/5GOMENrYrh0lTa7Xgh04GyFEiToBVcE2dKZTf6UftX7ErT8lHygZ159Akef6YTV8/+TSCIAySTz25W5RBk5I8zvXowq4YndKXFDP3FWFUVs3LbqSYqO8shjoXe+s4mBSkyCA+i3kBnAg7WPGWfWWka3tW00ck4Js6DvU69jfwQUGgOVT/bbufx5fcwp7YMYHzVutBTaKV1wTG90FonN3luwt3AsKSzYSJJAHuB/SuUsGbhskN8kI06mjiSBFMMZOA6OEsG+xQYLbDR2RddkTJhnNqzP3k3Ni/b3g8pLlkuxr6PMOBLv0X6YwKrhBBICFV3JDujJdmD45QrU2vMxl8oS6EDjOaFnTZk9rHXdjkVk43ret8MWH1BiUEmdOG6np6dgGud5Bdirwa/FhYWsQaEWZJD2/S/p+5sww06TVjSblmdwCsmq/ALUtpAY1JEpH1B6f1RBOZCfa8tTpy2rbi9UQM97t3ZYgGIXCE00eBHnnUGSTF0TQxGP3ACERV4howPU4X0KRlIiTDORVEZLWHkSLHZMIlvZxD9JqWPaK3MG8y9026id7HMOrAQCeD+gMeOnN9kBs5x9PZ0wFnqyU4wYZ2vvDbFTbg/i5Zx9una0YlxwffsY7NBTe2JPdJnJ9rxwL+UzNpMvrO9krpj6zoHfw8TN8ZPN7yp1bhgXpnsZ93+sgzAn577LvFDyEdRZfXYRC7qIpiomhBEGaxkY0hGdXUFFyJMpQ4xJgH4wRfsIKtVnBmlhTjTFfhohuo7eybbKZCPL/nrHOr/LnhYOCs9+7y4fIff3J6mddDzSchhbF1SF3j7NVvoLIRgb7VxZWqsZ2eo8LHtMUXB1W0k/mry/rraMBpiPvxHT3gdy32Nb2pUziNeOtZZkxfvWn8XUbMN+2+xqFzq6/VI+VD1x9/5JxaylzQ93FSM+lAqklchmSiwQZkmg59Zae8x7rVjjbZg4RD2UC8d1PvqxMwcMWWugodfCY0Ddrl0cITD2RF8QOcb+MEcTVkQrR1i1bVD6Rc815SU769lqmkc7GFByO1UAfyzD5AXrWOY6DLc+8xpapfpWBUO1FcE6KWMERFwpBOv+aplrbak0k2+DXv2Mzw4PyByrDpGRw9ogrtTM+9S8+p9xgPq4iwsW4XIXckaQzKQy9qujM92Gz3h6fbagRVJB4OWDOVeOT//X8PriEdOUq2Ofu1SDrlI9O/npQDrDx4Hxx0L4vsQ+BntiUuhbaD2b+HjyYLqJfPp3uDeujf2ZRQTPDcxzgIcl3IEWL/evVWe1t7x1URqlMysp2pFGqC3chLZiATlfejzoD7f3BlCJKrXlzu/DOoT6rBwEIpH9hSfCmf828v0pByXu+hzpGAVMZjw0gxkC4WAqGZ96CE8/I4fI7aml5rPcxRxltCunfoehyxwFWSedp2mrKHwK9MPAp2+KG1ADrDkEvY0Nmj6XnE6KPxaiXqEstirGO379+LwAFoD3Khm45fUndQfEOtqlGOGuMiyuxAQO/czvaIjnssPNKGeK13cYYhD63TeoqfUAsnSLnEkEHTAXyqXhCZQXggEpwxGiVvGJB6S60QVpjcScCEt7MvPtT34V6GVzNWU/XUOPCs7fC7RYLgN4LDooHnRAAvwxu/+fmnwZn7xb0NSoL+WCGhkKNKxoSqx57KftBdtR9+ak9qpmGglFLqIcybCiW8k10tKd0fAFdRchvmIe67+LQJmiLB3LxdKlaJgfig74rOjO25uq+9FZ2VM1mGOhOPRjztyAd5MN/UNlyg44oAEG3TuTMucKp48NZPLAukFvl+XZk3xCNAC12HqBw7K/mWpP5VDBEUGOXysJnijM54Jg7hAn8bJuC8TVHwv+lscSiW+OFbb8uNsBwkIHZIFrSTSaJ9wRPs4FwZYbmqvZoZC995Iur3uBMntYDwpVGg5Bxu+WUYbTu+fr4V942R2vNouDM0ZA1p7HPBeup8NqdaDbydOka7uHMmUqDYYQJjbXNdAsigwy/fT8Uxvh+qLXjq/k/JBBan1gaiHxDfbeKjV1RGRYwrp2GwRzD8pn6pCbfQ5ljOcnhu7CMSBhgkdvHLsTcVQ7hs7p2oxZFGqTF0+l4eBrLNSv8CV3lJhpxJeImi7dvivGWQ9RF0JiTOd0jk/nnE9m4ZXJcokTqMt1LdSo/lMtoiaOkFaZ0Te1hR72iQdk3Q3JSJgIvK66xpyH89HGUMmOUtm5/qRNx3afxBgmmf5ceRMO74SIotGLSbLuhNDKVNBfxtBpwoPw0QQZZpzKs16aEeJOBUAbog0FXnuuYh01ghiwGb14ucYG7VWkAaIehIYP2Qw36TvT5CyNr9H8lQp8mWy6arcXuTyA8cBN/BtKl+xXYbPzRKrNdO0uMgT32ZjhqGd4W8vsSI67KC+Ozze2oEYDGBOme0Pk7AUUEEz7Sw4UdZ+kpreMZ+BYFS51GKH+l5c60RE0GoM+7nIOVK0jIoBp3U6gta0K8HuKglG5bgTbkT2kPOcCgwSy41rZfJQzT06ePa5D8Im7qY4Egm8lm0brDl0h9UyDFe16axGhwbaOqszbPWGnEofIuGXugBQRQo19oKir4gMvYkD4RvW/fTUfwANUdpTY1tIbEJdDXqpTzMDwzALk8wB1rVwr91Z2ZibfSpW4E1aHdW43z8rLBDw7ce1C1+yBqPZB/oWPONCtdQ6f2Qhku5W2OH2iab9uV6oFO95dA23rqr289B/oEYXc1i6h2luNbaxotpZZKrI31F+BflNkbUxRcmOU5N4/IaImACsksCwzbyTqhfVRDAlFVGVj5sIm9B/W6fVvmkDStC3YyU0K9hWU5CApP1rjnWXNW0pkbGSWFeXNfji4B4g67D5fdMCORjo34SZKhHagZO+5FGaqbI3+WBU8QdQMAZ3E2CxTU4mTHCpQuXQsvgZQx8d3mY7TQgsKEQYepqQMAeuRoNbkXkgel4YAsLtOHEh5arkqEO0IIbeWOLfx1m3J5RJfKGwU6tqYUWlwEpJC6ICX9QQ7O4C2eCu6oQvqjp51hyN1kxdTpsMTixP9Qenv1aXXAIkbW2VhkgXb1GGnxSQA9vNFS/Zwj7B1a8/cC48IZjfNRtE74qLvcy/IdFOsKeY3MJAThPo0yuhPx9Fga+0lE8r3am31yaUajnBiJ5oS7Lh6+Z/qqXLRH4bKEq7pXRFmoUwhc9hOW6cFF3CZ36VaGU8Zl2nnDvESaK+mCn3esNve/joqpJJv2lfqtLVW/S4F8uvfNwePMSshhvlXGPbxxRN0twDq193uFHGifbR8xgctnunwuVb/LdF/jCwVhxJEDo0SzWw0id99EbkBo3BtIWnu9dnm7AL/ChoXK5PmlAt72/LHXSa4bcLm/Y6uM8rCeIDIYZS96UXFAj+H4lKjPjilWjXHfMiUJW+xovYS0Mg3BvolTtrsI36koBHfbWYy9ywLpwiODrR1p7a8/cduWKERQq2QSnVgaG+vj5SOpn5EsuzDcYGjpIRHZQ/moWVnvV6M0B3N7/W0TAPfW/lQDWiaRkRGIQx6Nmk7feK3XAEuP9X6sgDBF8Wl7RQaWP2hoGS7ezvbIBzJqGLvGv9QsRAxL4ouCiZHCNJ+eZBM4KSeh6HgVY+RQIVq9EkNCH4uJdzoEHqLJNflOCZwzZJYYu0Rv2MDiwniXgW8H6nn1h8NG8UmgwI2a47K9qabj+sSAQY6QZUV3eyvcPZmoCfngjSoESp8VgP2jTYcrRizh3Fh2SNPm9kiF/s9XyHrWGUvfTEOFNNBUCq4Gsd4MJBNexHWxADV0Cq1rvKudld6b8bytIf8D/an9b8KTM75qaVNmg/wV8cHB5M/0wbMIcYFbqeweOtFfd5NyosN887daM8EtN+Otofy3GdJeWSrg+5Z5+px0lLGvmdCdHEz7WmdhOYQsRRr3LqJv3WAPRj+aiSfDd49U80uQuNqdYwwW1nqq2y06fuM9vsybHExh9a2LWK77uM6vYhL8Lxz40lk9AC1NjrLiiBHqE7dYDlJoSakmgjFvp5nFl9eNa66lpBL34vIc5rcaQOdsJGlKOXKXGDwmTCOzpUoVIW2NQn9cwF2TPz3kAd38VuWnBz5WSJF2cXWyIE7TCGF5s3QPFxypK2w8UoWe4+BYVrqHsolRbl+ih0ZSwYjfrP6/XJmajxu71QgZoIdcnEYaBv81P7n89HYNQBE0l2cHAh1ru2feaEEAumOmIJ1Jgp6r32N7v8OOmDn8oIchdzONs6qCFCrGE31Tsi/MWnKBK9PonL+qsknnAG+mA6xL5X5hxMb0GUVcg/dYJrnpJJoVI0DrReLKJ13L1jhrqfOLLXS/rneq4E2Edy76G1EenF1jMgjZFXV6JCEnMCoW1LxspHSuHThLVYQ6G3WIuqWaUFYtH5kj2MyQxL7ClfHFPaIYeNtgS+HDJj/8CqCHEIZM50PKNigMCHQYK15uruXcT/3T1ipDjhLqxv2qw9SQzDNRwGPEQG7mHlfqd3nmJc0TJa1Y7r88yFEmgKd+QolWfaYL7iU5tptiUSXOTQB0sdMTUbJeS0ohS3YHM2vW+6n2kMgAFQ0x9Fo+QniY8HRCPu1iFLeu+e4ttQb+B/bxZxTTk1mLccx5sU2MA/t2dN6APSeeuNZtTba16v7UBviT5aNdGuvp+95mKMYXTYMNXezs4n7zWLzz5UEkPpOJxtieFdoJkzBXXIvL6vXyO9F9c6wpZh/RVgrPuynaAYHgaqyFxgP+K02stJprxyhKkv4fiX80918V1mnyiF15utbHaN/CPiHS0wf0Lj7jN/kYdvWgEzH1hL1zPLscSPgzligzZE77SNeet62DQa3+odFmwANBvbWrdeq/Mk+cYsdfRouu6hOOYkMlswf6HufVB9uAN6WoR8m806+GuM65fgJw3iHrEm+wzS+5DLmvuF8Urhl+axsTmWGzEs13jlPzQ/qbFr0y7qOFyNZ+CnJWGX0ggwrUmPw1MmA8jA9zXU/QRDnscefFuRpV7T2HZEVR7l7jCetrONDtwANO7BYd9P25SMwoTQBr0le1yAvAbyQ2QC6xymywF2YUur3UX1iwdQfksbpjSbcjtN3s8FjHVx7CiR1m6kZVa5BO7DZmFU0I20FT6Utqkp3ACtDdG+J8kbkyG9o8SUm8o62guMFa2ZMXQICaIAmQ0MDOmqB1YcQY1CjPM7l1MDLI0QAED5S70XxgX7n8c5B5LJqZr7XqI1jglfLibFBqmw6NMiQcqbNdknFfW5I6dTG9lb299jM0kC//lKRldz8EsqOjgyj6Bd28sQ9WAfBit8WUce2/f/fx01FaNZRDgd+y/xQJHiMEaQEuiCzZuPLe9P/MoktEbnp7fC6600eGqx/idd9W2sv6FfthoKw+8Y35U/bW/p1+dOwwtg9ONzEBcvn7zh4PwhT09CqoN1qWgQEoeBqxc26FOgxgGRk3E1/L6V+Z0oiNg0aZfHIAq2ArRPo4uxG+AUdufgk+X1N+HkLTjPmuQ9yc/LczKk0Pr4rRQtNBftcwBB0cvKYWp9r4J/pygLeb0btAVEcWRz8HU6y/Sgpz3lS79yx31Abc4OFwGjpfO1b2GulieC+CGHOSOu4NNSbbCCFUIb56fPvE0tge5EJAlxrVseeL96JwfP1/olE3JIkSsAgsb4aTm0m6Q9SPpaA7eDLEMfsGZp33sH136uTGuAEFMhpA47WvmBVkbFVzaMqSJHpYH/81WKD9cXpMWqeIlS2vfog3sMUqmJtDY1iaLAM6nErA2/fuHQ+cNTU2a9Js8PO68V56tWXfTk+ix40JSZvf8iUVZ+ZZRpq2ND3YxxBNICac6jt+jW+V/E2Dxxu+70dKj2WdOfbBu4MjcZd6OvaKpqUogHZ3phhl7IuuuTQQFWjepk2aprcHZYc+vt7IgB/7Vi1EjSiq3tsgRqKlVie4C5DoFQ6VlGSY6jqS4wH85HOIOWfQHxiyVFxqWrYo+gbUexnFVBn7nMA+hIeOE1HTO6RMv0EgOXgzJM/AMrRSBsBchAAZKxuZ+REd1EdmoH+UIb3j+1Cyf9no2SjXbz1M3HATdxR8CKss+FhVVD91hohCar06qalfG6bkx5I5yu1URFUTGvPnxD3b4kn71wIg9UO+Kff7xcgMNON71mkOywg6CTQZY9CiwtcFvPolgn0VLWIrRO4TLOXdj+9fZO/BOgRPF3PbIyD7/57mrmepMdmA0e1NBOLBF2GJOsyrr5VSmhtrUzHxT9F6YckPRUP4r01Xli7QyThlqeP2AhFo3aWHCmAgQsUjT6wfTvuRWyzpI5DumndjsvbhxRJXA6VPl4Gg62+utTFppi/Ad6zADUMhRQESxxnFbhYBl+QF0QqtG6Pnsp26HJfvCuzKc3myrXEH7x5rfhqUisnSJPpoMcJ4Hvmz3HX03Vsbsg1Qt1KFdd/1+YX0PxiwWqF6SZmjzpAH26byDFzYdMjUnhWz696ExHI1bXT/Se2jZNUNXBwMEYOzx80JgNc0Z3900vZcW3YpIbEtyf2YEcW/tpIi0/YFcTmK1o98Zgw3CEDuqWuyBeLrszJT4e2w6o1HfHDNxrz2GEwFQicxv5KaQZ9e7xyKxekfD+sUKo9gQpyWEE1uKe9rnHIpa3IJ8GZtZSLhLKRB80UZgsFDi7jKg+ewBuspmwH1WbxMNL16wNJILqUwUZSqVuA/9ESMUl5msvS7wdwh8Y/dZs+KV9HtjRXY3V+p+thPS8lsVQgMeJlLaauQE8oVZv6QaMVXBi9vxeKTuykH7B5GkMXJIcAM5vxTt8u1y7FPEnI3Q7ZWBabaNQIl1HAM71rQTvIs5FiqaHRcPPgvEMkQz2KqEsM6BSxLOA8qgZ0OR9HBUfOoxznRHhqD2/MJcJjqM1/EXaXTMxSwiM9GP4VlgrNi14PSLATBW9fGxoTWxonQx1xvU1NrOmvb/bRjG3Tsota5hh7ooWNsjHi3azfrnlWLj4qdrHrpSZ1HNLLLSJ3ufSeu1YBLC3pUSQziEbjaW6QBTO0tanIXFTYtMPXP7UF6p6BlS4xI8XRPAwazGAJRXS7NBswE/d3nPyGvzXqldOgt6czYWSDinepuFIe8kgZk/+wqh6JWSrN6OhUHyU1KekfKzOY2PPqj6cjSt/uFjXPQ3vjBPIGq16/760jbhon5B9tQt7oz/iBF15jeHZpgbCtFid6F4fvV1bNJLGLTGhKb1+jLpn0Rr31xfuxpo+pNMsLo6tjJWVadpa4AyWN/8ffWkOKZKuv/N6koeso8VPlcXs1Qfuvu/37GG23Y0R10/Eo3ty5bZb6UtdveJgsTyFjpcxI+RloVjlUvxa3gdSpDL5WURvUw5tQyGrZfNyBE1837S5FYyQQQkmuY2QUYB5/4tC1S97l5s5HW2SKPLSS7lh3XIS7Dk0+E0q6yTqaG//xHW48vC97vnNleFPNixLykvvMpgIRN/w+T6TFqbGMN2Xv4vIaVONTy1sEoiSp2m8+xUmu+avfIiftQaJYgYN/okMIIG1XouvDJoKupDZGG+8P3VsT/qlooWGpretWO0piZF3Y5nrQP1ME1JXm3oa9GQ+7zD/pkqQabGb5rKUsUvor8llOzqtaLDMSRapFbj+qHpOaoBrqOgVOEya/xNWHbSd8upnR/UrbP6Ui9kpLTCGi9kkKrLuwBNPr/yq7OLrfCNQrwoMYzbW/O0pcIkM70VW18JhuEZkhbnRqqLbpd9bG12/HPsDlTnONGXvDpos4kj8CrLngzHfGS8EQHjxNfEnuHGa8J5r26NR3GXGhwqXvqZ0k++sop7wxws7M1cS6VvTycg38c6zdSdUj2fms56GWlAfKeYdntCKD0mgqQIUUxFPqyeywysn1JnEyEbziuu4NwpEB6bXdUmbugkk9qXS+CquCqreuowcYwXiYp3sWmzxf8+qqh6L0ciLZ07DBgYXmruygHtL8ohB17ArdF6+Gu9GAahYfP8NzzslILDsTtxoWWWgc0QIVJSoIY0iFl19Mq4Z4F/el6QUZwoP5G4zUOeLliUC/KqXhdbek5dcgzkR/aJJbkc0Ew7e384vI484kyHM8AO0bBylf5vTR2oDbEs7uiLRRu9xN8/U3j2UVCc7GQAsbxhiH670DqW+jf7y+ymNVZ3Wrl5snP/u/VJXFowUfW7RXzfotiuyhcdJ1eST5bHIYWO46kf06SHhC2kJ3TuYLPxlS/UflG079GGw/dLJiKJbuttElebGNLbwHfBg7NammwDlmjDjwEAIzd6jOXAeMf5+7QyXwpz8Qw66vNvrTCQImO4iYwt226BiIsZbB/DlLzw32HwSdVxD19EJzsC/VzW2Sm9VOnsBis2NoVjLOrBZpxnjN9tRsDopLhuux6TV3vR0YMSDHZS+Rj3QDyLAJx2Tk33Q3m0ymCLeqXuS242B0xf3zxTVFj3H7/IJlrwlzjOpGdS6iC/bdUdgSQ1eSsjk3XBtR96bDyhuh3LRd5UZKbkk9VhHqBixgCL2FZJ1OQwjPllVb/fCOEHruuj43ZnS1aXpcIk5daJJCjyYjOnz9frr0kMKpSA8bLl7W020gbvvYFc8Dh+EF3EwWmiNYYpwjZ9GQrUpVlkf885zcFeP4+Jq6Fdg/HoXqLzXivi/G9XkpPQfgPDayS+a0ffdoTeTRgrCeGtNG6tV/LE4Nd+Tj4uSLggd9zPQYUWsEPI+EXX9cWTCH10yvXPmPt6gYfb4ZBFEYCobynkwuoIOkKZ5RunSai3Djco+fv1bggFrzAcPeOIx1/+a8coN2iq4+vURnNowIndZIdK6w9tYNtqLfyp2ddyG5vPcrs7LNmuSXWgsQ/OTf3SWJvbdqiayb5ybAptUR92bCNqHKrwwuBOAqobHevE+hzVNXfFMFsLL/CBXjcrdmPE6xJogbD8ITFjByRpTfkcdxGDY+GyMmyUvVeZdxSKukFsTUHWFfb6CG0HBibzklqX3Y3ad1fTSmJ0wwTBPMlAJ/T8zgcaVQxHQ/b64wzuMvGe9swhXMiOoHZnMQRc3Uo85OiVBLYaGP0aAmOi6XjQIbXpqhxfGq9+2QITVy+rv57AA4VhCXjjbMljGfi1a/3+zxfivzF/Zfgb91Wks7yQAS/WtdoYuPe+BS1++bj6KYE9w5fHmtoGe+xkZX7fvGdW0aEtR/yhJAy1R2poVaeqevBstumZ90rPHR+dOGf0xlHMDOB4me5fIdLNl3gJsgJTcfG5AhnP42Y82LOLBvUwYARlMV80U7JnbxF2awuPPaztTXmHysGMvQTeQa2A/uoONKv5cQjkAwLVL5up30mOISBz5Hfp9zenw1XZsr9GrleJpvz1zfmbPtqvsv71HeJXvX39hhnwEfVWBFD5Sif4lV28taLY6ufLap20sGptu55QZX6jpoh2d4OCJK8DHxQI2IL+vH5FILL/9OWm6U1Un4IR+mtT5q6Pv63OAhEpdfsPmnkHMu0DM+noV7U4A1ctHIke/6ouUx5HH2+TizxCfajAPq3o3VbGFSTaYNBSgY+VPz23J0J+7mPWx7mu5YzNXVGnL3/8kxb8wmjUSjjcccEYCJnw9h+77CLLhZS3Kx58YVrVePqk6DnS3inRLYUx2902JHgg0s7H/kSHZjMfsRxSn7n74/TjCjC1XNAktswYY6aIHuLYmBS3JlTCo7TYKD/f6WfzuSlY8m9eSpbdHqxRV2/xcfYwF2DBX/0ZxUwBMPI9Ye3n2zUfgItMGt6CfivLW6A3urqk932g+6x27ReRnkPcapD7GDs9sBQWk2+EQ4Z4WvzQaUmsFYJdsnkYZFOfjHfT2Fxn8Rth+HHMWmSy68sHDI9D0/7Hxzl17sloJqlNbyaQgLZPTkRYrIz5QfPzIIS9TzPinKKfQRjHivc2tTUaNBg2S1RmgiZXswtzZ2nd7OjI/zjhQsx8s4GNwLJsxPCTpt5c/Lje/Atf7dwVDTNvDFB2K5j2KzVf7DbHGlKDtdXx9vfkCTh2D0N2Qo3DXPO3FLDXZYw9HKOw8Plt8EL5XqY4ywjzKKve/dWjiw+1HYfDFH69t80/vKH+lV+YKdLRvaYorQ5i+Tqf1wj9E/1iy4F26M+/gDQ6fEM8fFOfZMtzqPJKvXqVFH7XPk/7mPed9J23osyE6Rx4WE9rZY5N0RrG8DrLe2tvd/a87Pc6B/84z3OUm9lXVrqPJXwN8MMs4LuYc3eT6/yH2Klz7V95a61LhniMYB4RNDdQlXxCBe2HASF7BOCfOQ/0UVVqcj7PP3lqmr/tYoCkkjaF6CKulH/pcKVHf8/yIUXvz0fViPvMuIF0S/R0oUwCZJGBEdgEPnac5vRwW5M/VL7pHbZkrunq79o90EYXyAamrX6JE9teKcwAhWJ36Ywzscr/jUQ2pA57viR6mJuJ9XZ3o6/HKXnPOc2cfel5G4LzjxQjUkGXWYV4PnL3ILgS6mZht14Ei7DO3k4GB+V4a0deMBHUeAniieg7BRFBd/Y90wnn/fX47tR6gxOH5w2B+9UzCw0ALHEmSFqvdXLYl6gkvboJ/ND1I02fJN7c3hS/bs03r++qvscPf84QkV+85+kUkIGKsovJ9/ObHMrhZMnQn+g22yFQCMJdZ3mANASXk1b+VeXz7fj1p666QBpL2/7FDAS8bbAlqLZRPcLBbtUETBSBrR8ZL01hSi9c3FLRYsQ29r5WQlZiMRVGqg1JXo8H4PZMLDE+TzWGYe0Ki2LhAmqowYCpQEI6e0Eew+hWzi0D35tUIrduMQKQ3e64iQwu0prrOE49W3sbp2hB47w2+QDdrQ2cnvdczn+/sqM/9WNZerUtZH9nsi4nsuidqwV1gO2Gq374O/aK7T/ug7To4qZev/sT+xk+LmkGsKzN5CLiD0Cxry28r4+R2JFKH4B2p8hGq/GDSrk+DQomszXkkXVH9eUZjdPl+J0gTjq1WErnOMNIpE0MtS+yhg8AD7kkEtQr2aZY+eUXLoKav0Mbi+25pE/h/zIkpK28z5lypclf3nYNFbuVeogbVgJ/xgJ38vwTsXznXcv8qZjYmTjwYetZ+3cnQsDHXTmG1HmO1ozKeShUF1HArez234NAqple80cM83vUONgj64XtOhIDu2KDdzhLbuyaTY9YpP9Svl0Ujxavvyz4PQxwdDtd+pMSsJ/QAeB9a+WhELH+WxbdguitE+VWuLAjzebW4tFxmWrWxgeHXxjlNYl1/RrBY9V3ox7quZi0EyOL2atFwMXhWkt/0ksN8DFyxMAPaw/haUbhK45XJek7fLc5ve1aQJeQll0PoOEUy7lXIWLeD2sP+LWexZu9hX+9dIq/pNSxDDBG8zDdQeZRcp5PvYzXc/z/ys8yaoBSoS9XcNidQg5Byu8rq9iTOTDM/h8o7BNRqRHv73NPtWwGwaLOZA6SkTLcd7KnVdzIcUP6jiLuACXQc18Yr7QGCdU6wTywiyJtMGt4RashDJ9cA7Tar4lQT1gPW8noyLATq/JIglykOKyl2zqa8ToyNy2WD0qlVzngP8xTM/r+SP1hFn1aqTVtAM1NwgfDXGryQM80pFHj1RSRwGh1yeyCdkeZ8uGrPYnQoLuL+YkbP/SFO2K5YG6V9+Zx/7+kFJYH31/3x8UQmH99Q1lNj8Y/cQxr+f09dP9xNxdGnBzCjbizvHdiB4ScS+8QOkFt3KlxrmmNElp/TrLIeTICaDSdjK14/8kFNteRUQbanzgzChPuGogf11hNy4w5kBtbYTFhbmOzYmFwYSy8WZyac4f/M/n1I3TGiw2O2GTfTS56kGVJ93Eqtvw3z3n69eN3X/oPw9+LuBVJhdpA9JCxcRA/Rum3o0GQyP1CTKKZMHRxQQJStZ+Bk6B+6VkbPmNNJ0cbobV1Z/xJbZgsz5ekDTse90qf9NrVns/YQ88qpOzpzdYSh+PAXBMC7aoc2FRxxiLvl1Qf4s8BQoxJnmiK6RPtAENRo1P+aT1mVvvn9Fx2a/3VKevqfmXiKgvurzSrVW87xh56vdSMyOv/hj+3/6f1QdR3x+iGk+kC5ftcuQ9Efc7d4xPM8dux/+PqHZUZivy72BeZIe13hDzMQYvPTzA1TKyxw7MfYxV9m7gs0w2SlDncV/55EqqWwNMDsa1b++tsb1893umJXjUhp6XaA0APmkOtpLuzdayKaa/RxuxKKzXP9WnRFljGtHdxi9dyqDpZVLcajo6WpWdQ4OGslLEhYiqj9IBR1rId8BwA7qwPAKUCIDkKLP1LzLxGASf0HW3TFD0WzNUJoyvV1/qU6zJQRC3+HTLodxqJJe8Pp+frFrwKcVp0r9J2u2rKtW7bycA/+X8pdbAg2KUTAxRVOgQVU9aGChs4abND3WH+/i95Fq3foyPcMjGHWsxI8oCP/h7Zvu96zbP0qPZpdhv7xCpWDYk2Oc7D9wqsID0h/kaoCXm6UlV2h+KNSY/HNtQfB9R8AQNTFjX4CCkk401b3Ngum7YG7Hx//Xx3+P0TA2aPF++JU7HI2fXwxPQYboCX5R5wM/TpONuPslFmGlx+AehxcRGp8YBn5sxSD6Gh5gy/yBrCPwm7Fu/YDzLZxT9BA0tcaV9zqKMSKVryI/6dXKDoV8FyRFBZlfkE7uMcMoi88pchjgW/lXJQNt8vCmbhJWJw33PN0lo7WnkiZtJvd6SLAVJ0dsD7sya2S+s0k8h/lhr9dlGrcmjvc0gFDrN93GsEFUg5Z6sJTiBk93atdeK4A9FlB5fOJ6onGAiKbcafoBBNQvs3TIgqQYaxxbuMP0fhUtwe/Uggz+kGU0MEALNUZhyIOh+tatJA3Gusz3Sg+7vWZz7QNcf+PAfbi8FbyECKl9ayH/6LTC8iZ9VHehUufgl8Rjdh++b8P8vzBfJRVqjbsmqGvwWN8c9hk9QsPngoz51bBYxpOTALBrPHQKrxmb1/Ku5tlYeGKLRbuzRsh+i2pNhntZXyfNZx3kGkwSuNzMMJ8NoKfofOvbZDAORzr523qpz4rrtphBW48tpjR6zaB0ZlKiSIkba6A9N/k+9xVH94lo5oZFxYj1LQJLn24/S1SQbPYfTrXBakr/0k7yXbJLSOM94Cq5d5ubheHY+02U+vN/RA3VlIawXRnlvmm28Dx36xzzqq8tIcpZ2Zr95tYVSda4RZ+bNu8Lgg8m3S0riR3yktwEVZ+sSZHL7NfAKwdlF86rvQQYWTW3kvlCrfBKofosttg2IWJnSjhOv4l9iS3bFYhA6dFgXsZq0KKqpSbY4/6758ey8DupvAaYEVexHZSKXNGXEoBUEpK9xROZrNaSEi+3Moq1Rh/CotBaJ/yWcerAKrfQ0zKft1InR/k+qwuiaQ6qneu3vuWQRnSPzXNlC74uv/IwrvS1M47CwNJg4Lbnt3f6Fofoo1iKLdgV+R9gPLyLgdJ2LwJczS4g6hCOGEoEYEOLYW4eFNhMYOtqW19MCPPZZVT7QtaNrDhz3b1+XR7FJrw2s/JjiL+YVtnuUXXcJ+y/rJseNjbR1F2W7SvtuxibSVbT8pyOEm3ELjzpDGHY4XsdGyMmeETa6rBpVRW/KoTRxhB0w/RCfH6/Lf1jaq6WEaQgSq832Y5EMIKFJBZkp1sd320ICH+fAYXgqNHBtv6dHsyYloNGidObyKmeTKXAvk5AbM3qVduApn3xHCYVZyRU3KzGe3eMH44if2pGFeEMxKZOPOZpdhSB9dW6QKKEEmdggLO3rCIT3hZHC0WnvF9HVq4Q2llIN0TKm0mIcO5pU8TKmRltEcfLAc2u9YpyBRJ1NKbmAt1yFZOuyW4jk0ZhNZrs13E4LuqURCwHTMzu3mF2og90cJuLSWBJS2nN1/e7DLJgFdq+vVqGH1QHHDbgqnj2Wb+6fr4R/wQD1QQzbYOHtd/q7b8+FlnoiZyWzDBoZlKkcdnmXXGMKoqiHefVEBTwaCYjJEgcGkp3j3DFmOSHN11aZf9iSQyUAJ4FmTHJV0yqr1w8VAz6IHhmUq/pCznQImG9St8wVQg2khpaKmW3e8eXgSVMGSQV314a3/C/T0hfCaKi1z8GRQ1rRndUm1MXTr6vb2q0EZoqcvKG/SHmIV6SBHJEJ0XaR8QCW9ssbvZxiV6GykpKrrOxI4lDFfJ7ZQ4+2LhmSosLgnYZObhW5dxReGDTo2xFyd4GvTxinL4D19IY6+OGlUr8Ag0Yh2F5dJxSJ0lWh7dDC7+ALZMxSUDlHfiQlqRKJsGHJQoAfGQhqYhuECJhsJG5cL1qRnHgZKNm1v5xzemyeZmI3I1tj0pNmLFBH76eEb9MeVxrxkwmQuXQJV4Yob4wFSuJsbxgbBUVWZ02i1tKgSQ1mDyauVCx2y3JDB65AKulX8KIpNFXfEOtIlB9PQoh1Ezg5EEEiI/xaZ74fsIpcUwdGRDKWxa6oEDBW0JCs0JuLjozBl06XGfarGYbQSZ69O6afFnuZ9tnS7WWQxH6SWL0GjFQQitSyNHt5bZwr8yGC6whQ+u7dIC1kcV4ODUtgD4LadeMTixZyh+es2SMQudvanqPhdvMpwUKgEiodTtycPwX9djX3osUepU5VdnRXY6m5xkqX5O4AkyqFkKc4M8CMF3MtSEO6DI6cpYnpBmZsiZx04r9zFrULpkVeo0dT90HX1p58a9BL5TqY7e0hAOz+K8MB0riavs+YXuB/6+5wFgqeZ1KA1D8t54Kcs6gd+RtE+8F/pFqW2G5FA/pY3fryUG3KJYhWKQ0SvpSCvyNj2YTvlQtMT1T73sKPaX6RrMf7YyYhM64BoMV4Euckji2ITXRix5ljRp0RtMhIi1EepjhKG5HE1oEVWH/bXoi4FjuoZ0l2hMOplcYa37QYD9quJIOA+6X5b8K5R8+t5YUIJ2cvQFEwXL0Ny1hzq0qT0Jdt+FLL3yS3ho3B3xAjbD4WX/PCgIRexwaDJlMyvIcLUEu5cAMitAEzCNplJwSlHPPRoXdbyUDvyOQVZDlWuJVw+zJhdsJKXcaQom1yJrOjR1gZUgzcQRVXgacAdRKvLDqf7Xv1QV+ZN9Jr7v16+azrmExWh8/Vlo/qT7lPoqUvz1jEWqdrTjkFpqz9zknIFBqqOzRBZcZrZDfCicGvj5qM2ImJqKgSRmCmHi7oCY0hDHoUobWKLxxaBl9oKpFShWwy4wpiWWYDQ0hDXvePQL/VahsJYWca6ln+D/hOMHNKtHtFTJk4aYgpyT4Z2K8Ud5JiCQY5OCrnCtxAl4kmiodRSajHpq8EzUyAEVbxaifIgxxQULIYnr+aUE2BxhRCogWICxLGshlQS6gDndFrBGUnXuSqVtXPzucaLp7yLpTzKMOvr4bQzUA2mHAHozKMGjHmRPmfqwKLAEqsiOhPMgup7gHVJiPp2NaH2V4q6sWzBr6WcMHvxcoKFgKIvpYDVXyLlXTTl2RP3YBGVAVrdXnK4VDfk9OXZBhlQJrHhG4MFcEcC7Mnizm2YGTyoDZACaZhMgYuLZf0exQzWbr1xYfrnNd3YDWoU7qpY23PLT4Hch47guIe73p73bncoBg0OuQSqk8GmMccF8diWWpGLIzjOkceX6UQZ3LBXl0itwxHhgzdJ2D38+9oYAbzEA4Copse/dbhFsW4GFW83Zx4qPwJK4ZHHc9sMJiwnNxSXUW2CE0dHyxVAgPqgz4LKmBZkmNrRFYq28XgQTmBVlSEi22Y3fvCnDxK9bFIiPyRwJY1sAVuZEatT1AeJNgMp/xyNdTqYKdGr4T2Wa7KdOximJaZ/IPlthauIOYGWTpWMn7VfcZv6uD837A/RqE1RwxR8CdqGEOLrIbDQRHL7x6P7owTPhCMsWyJrqxebvaWGtvrbYZTE5qsPLkhhY/XATLms3c7Z5cQlv/WFZtjbSxayo/FwfCsLpkO0FzQf5VKCqpGgBDDQiyV9VGIpiyy0SWahMZdZIMBjjxbtRwF77DabYf+szjsmAklBQ/RTvCpj4KZFqe2O6fBk1G15bpwSeJzZMhL7wjltMzalYocC1giHk3LMFu+mYljeMwX1sgM+6dl7xqH4JDyEHDDBGkUCGMXwBq8QXxgZPEdRzs2UGSYN2m671ieBSKEM94t8gp6fD+341SlFeHwa8fFHv/huPP5zAGez0vHobaulJgIUkPaDQFs3YJgkrtkb2aNDPsn0TALH7IIzPVtZiBE0WOTnqLyeCNAlhBWBFcR3e8zX1IoAYZKANMspyE4Sjfl1G17muvNzbH1dzaJgyS+LrWUmBqgFI5TkpKWJiz42hALh5Br0WqJ8J8thKODWR1i6oMzhnJ9HZ5vaw+PrLmQ8MT3hhxWFSR1YwdFpjp0868yHgbmEcfotuOu8C2aR4ARzAXRuBB99GczE+HKz2pkS3CcFD1dVFScNZBZOdTXEA2st0Kzw4GTiTYJgoARSYOu4Oj6CaRp17ny4KTKL53hbMI0992uaecjPU9U72Kg9zWoL4o7rUD/h0kcsD4kYclx+jbzRHcTxWT9dQOsNEoA3DxB9YzxwwEewEfmSwA2/eoJmmh4B5PwwuglFkkaPIx4/l5EzNDiKknAO3Y2hLtwtiAyDuK14m3fdb3ouDnlVlXDQ1DMru8Hd3tD9EtzBrw6qV4i5WEHRP1dkBw7WmgUr2ieqQchlc2fS8hW3O8Z8tkqknNmWLcQEhSsFIRALW64MZxb9WhqCqAbObOHkaWLz0bOeJAz94wbZbGzfiD4pyYS9j0nN3rvuWyEw7NnNVoriZzVFud7ktZdC80F7RKdw8ETNo+/+ZbTHsLf4gVaIcryilizgYZAoFZNQc8Uo+xhs2BknbnIfxHnCxKKOb+8IYEIF77Jpx5R1O3YWpsH/7to5tduRIeQklYQSnwDykLQYRYLpkA9krtbnwTIwT9rBdiLWsbZlRja/MmP46XQ9y8rIpMVE5nBp7TZUy5xXi/UjiPKuzT3lpqN36kjwZjbXqIOzFzRhw1eIsWt0n4RMf+u1T5YUnGT6Y05qc0PHl3c/9lhf85oX3c+OBE3i2BCWjOH5eB7Mqg07wDTnC+RzV9vOdFbOH/WzzlNSYA9sBkkj4nVKQNj5gGxrOfFfI3Zb8ahA+rUtLm1Tcm4EMlt7C7SAGiz2BM1W7V0ao9e/GxPFHznVqm5tOsQqFVMDRDwRA4218DKXzwVvBySautQGd/64OUsSuvS2d/cIdpojv7cVPWcgT6G8aeVFcBVCetWMiTXcALqe27Cy5hHbh50QSweVZGVpAb2nnsSqHFfAqijYfvHRiHXrt5IY4wDzPSciO2fqoQm++DiwEV4qQFVX1PIdIG/jfwIgMmW2CClq9xSbrbhOiG66uCYhY9EYIeT2ahFXuRb8oh+yIKRoOqxFba0tRuj9Ciobl6TBhMIvwjgLw3QSVQ7RhQivAcn09llnPTSz2uuKffCqbRKosEcOy1m38KtL2tANe1wnTgVQVmDCNisD3jpPGHlJHQKygSwmg7jbovHNRZfRrSeBvimpUAACeUobpNfGI7FeDhl/caYyvFgkc7ND1sSWI5FLsj8phw0zW4njnRY+HcKCPAsN1C0t3eluCVo2adIOzyzDF0m1CTn/VaB/SlAu5btDRd0rRv8iAq2Bk0bnfrqywT/XXrtJ8kDDEdxdwGwljRtWEEuwUT8T9eo5iGwvhURKPgwKFG4FjnWIYdLjwf9a+MZFD7x7PoxxxRZPDjwvyQ4Rx9a6Q0uKGeYBt5kzHQo8RMWFs5g4/REFuJej4YRnpdn449JYaMRsCXbCWB2mEXEnQD5gwZLKd3rMykB14ivjOs+jDRtcrBd8Ew5U/a/HUj1UaipZL3vzfO5ifBjDJbXEmd/MqSRoajtxPUaRalxJI+f3Uikl1ecXnqyQCOExQNIcbASw+R2MBA7wMTilaAiiCG9Hx8U9rxDYUm5w2Sf06crA8m99tOmqT/HfGj+YNK4YvHYW5lz8me+IIfeO4oRu/7pHfgDneqw2Io8gzRF1l8Y0Iog5jVj7wrS9WFdk4c4exA/i+ZHJGQQePdzwyGWGkxiAVuJM0O2DuRwmEdwsGnEr3+JGEG4WXnghrWtkZQF9rpHUWOw/hLXs/2qhJ+z6fvJhx8IkiO/S4LpEOjfHj2DsJz+WAH+JJ1B6lLgatFXKIqwULNulQInLw13/bdINvM+ba2Hp+9SzH68uR51E+sWz11pkpEPtYICPFhDPnBpuaoPYG4a7ZshlGpCSDy80IpvwJdSFwk/OAOR6zAMPz1HdCGrBYIXQWu7C0cjIOmIdxH9/KiAdrP/e0QaVHxREeIsjCf4OWPRbllTA1BFUcIs1mOzcqwjhwH6Gr5I/gKPIv0A0gqwy65BrkeodmVxthiM9xdTXsxVvVrPWH7OZV+vow7qrI3ABD3dEspRNX5/lH50ZdQaeP6efKoiI88LaONYyZhC61aKpLEaf3cW8S6ZlPYuY159QyFYOAMsh101s9fXT604bI1wOYlUt+H5BELyWP5nvhTySRZbmPZqS3iDCljPtF7NpFp6oZBucRsS9OOxJg2lhvTEJzMLEWNNfmuT667+O20P/uRkq5piIB/bnAmKYm8uChnTWatLtWcHrhYMT0JyoouKyu+01oIFPB2PieLdhdJBIJjnppx2FEXtDiwkmW8BtNWMIo3QhO3iNAxAn+NONAWmH9bApLawAPGISUlhATxheYwCjHf9QH0O2LOq0b4Iy5Tm07d+caL58g/RHf0kpRlO/FEEmyyMAS/9w/yBzFGF0C2Lslmf4YAErGgDjmJ0BUGPR7to4nEq8v1drKrhQjex69mqBTFxB3JTXnNDZi5TDB0or4UwQD55QiEWZ+ETJ0K8jPmL8IZPH+temjJt1PalwTaWEBoCTWbyA9WoYPTYOqWPCcHZDwfowx3I47h0AukDMTsz7n2eJ2LzJiebKrOw1W6/3rpKyXZR9lzjZVicLHq9Cc981bu5qnOwKnAzWHAbTxU46kXchIgy3/OtYsnCJJIULxIY2t6LPtu9tO9R5Ro3qcGxzvhyAJaYe5f3s9KA9+uO6zcJIDcguef6k523fcrFIv37lM66mInDMR3LGh2lJw+w5E6v56bHVyD8V3qoepbzD83E4Jf5nOQJWP1ODbmCGcETaaO4O2rn4iR+D61HSudA8dDI7a9u5oxuzl9w88xxXG5Os7WPpP4yvfANLVNHyJcRFPE3euaNfVHlLDB6guHoHvd6ivQ4nv+9UCHlwSD97/EEW6veaxiwgM4QchS2szaMrxG9qMQTPh/M9llNiP9iU08LxHFwU4+2WEYYoStlZPewr64tweT5pWCN4l5uYHO53GqhdQpIimX03bT4/NccFz8VfLKK5WBf3Et5WzB6PgTSVAZQuH6RjWpaWLDJFIYfdr43S9PxmN+YHCc9CzlC3cTUt+ZtubuOcBauiXnvvBrnG/YgTM5Xe59LQxdbq9bpdx7Sha13+MAFpSUsrPvrpumPOvvYStMXB49GVs9B5/IzvAooqzupyTInx9+wo10cWaq9+hdvfV0UFHnRGJhWSOjn3ePILgMKYpN2SZxA+y+mOMeCxJTrFSW9JTfe4Mxpt3cVSb+YgC0RG0os3rlwh45W7kXFOAbHDjg1EJ1LcYAA52umGtgrzReznuzobqPBPj94oDWHfeCxpG+F8U/zPWyt3FW4imGNUCUIEBQO5g14RnVbKGj1e4bMpuEH6FX5h0bNK+BTz9c071oWbpjVZIcXoDkHAtlEh1mOScARQHp8aQ6eMhmlnLxKkCqEwCZXOzZ1lmnPLnDg4raxGYLLmF9p0P7P6E9WAwmAvI9P6njBYa48aowOt2C9V30OmG4M0hF5oOBnj7t3atgCVjHUrXBlc1iQDanqU+/S+wu4evMjUCqpIsQLHGrAVdRqtEr1D+X9rwwXhWKLgGOANUR8uHUD96bRSw3sgUAVO3RCg30QEx51GKRVctMULKNP7ypeVi5CGKs4V+3sG0FfsoSPLiX/RqJAlmCc+UOhCcHNDrAIQ+tPpLksVk1oqpEHKzi1ziwBoUtGYaR69sMOa4VmROrEsIYAMf2jkVbXwckOy4G3tM4ufzQy+gjmKpIESPkiVdNCGgOdRt0A8nCZddQjmFwxBXJO7HpRFiFV2QTgttNuInp7J+u7HacbYGvAXkvgl66QTZ0Je7K8aevp296Gb+66uJQEqNvMG8QxWVM9LdLmMwzFLGlh6M79Jzvl0BNJp3uUBfBrRZTSNHfKgqQPLQAdbCMYvMEYChLphQHf3lcPj7xAmxuKI3PK9Vwd0jxaGmc5AZ52pjbgQHFn6XTj0TXG60N3FZ0N7dZLpPr2r5lKLjnneR4AfLYEcccFQ7PII96OWN5XF9WGikB0dGtpKU4Joe4WidmRIRRWQXa3CPQPNU0KalPGkk8BxigVEe8qoAgwNMeiqSOV88HYXhaaYPd9Wtg9GmmXZcw5SGqzLwiSVgrSEvUpnryC+PRZhwrPExUPqZ7W1HVG3BaZfeC1p6MzMjyNC0aKiUCOvxrSsdpryySxNcMcpJDVtH71K//+cG+yb0ND9FeFa2zHsDxjNLhClDqI7uGmdQDpYdGX14xLVq2xuV5/Aa8w8DNnjEdeNwYPFNoTfIQobcgC6466HeAuVIigcJJy5Bkc5h0KhzFfeG5w9LbyvUxWA9QdKXMHv+6VyVh4FSK5KCMtt0eiE1Nw80wgWdtpRWXneVSoncI4e0diKdl5p/WbryirY5u4TZjfxQsrXH9KKh5i2AXZrhNHNa7LifZeveNw0TTO8YUcWXp0zzaPJd5Ce6SZ/DwyTGVw+pSw8lH0qTNtECcsIpmKsDt6oTwB4+Sd8gbtu1CHN2hgkAmhtDXPW9LaHcjDCM6SWYEdV+rP5sIAfpNs4nSAOnjCFaaYkynZAJWK9uoKZUzq95JZ64ad0z+QncpkQ1Tm9KbgSxJM1pUQTicCmCrMLAApaAXLzQDrI3Fs/r4fCeWAFkwsh9Ocd+9kYZEqj1Ybr/Os23jI7KIr2thN26YHHvN139Q5Cn3y5MhuHYOcOU777SaffAO4VQly3Zucj79XNTtLQrcp0Gze7PsV0V7fTcob2p6z8AaNbsLuysHWpf57oA0xHK/BLV0ltcnJ//XP34Hzw1iMrKoMB94FWhHM9kA/yiTV4XYTXY45XJkCuVz3xei281tNQ3gOWmmQFt9UBXCdrxPSKdDRD+Xd2Une35+QwdIxtmzhrV/AbcEXWdeJsAXqnCLwhfy3i5IfB+rakrpGFPwme6LMjaNhmIgIdwaO7186YQgCsidNQS+dmxkIlAm69YJYi0NqJZbXC8JxzazmK8PWQYgfyAETjp3geji7Hg514uhFxQWjlMYDBDgglRXhEjVUmNOtkAUibQy5QYh2WMpxMVDaIRUHiCEQ3HhTDBVMZElJBVQnbSFTsBNKyFAFzl+nlogqOdy4fklPIOuxQ7j110SREY0Tj5xDikSlzLhVL2deLGu7yjDsV5HPWPq8KIxTdUFJD06RF0J/ycDEXNpo1FC2cmWtU050p5NgjGWGK+4c2x4P+e9JgK8/qxUE7G9/7cOzXK3wsIGy1hqvA0dZGwClJfzmyQJ9TcczwEMCNbB3xEIyKxxKHlzhw5ng+HuugdoM4ibb90WyLdYiQbDa3XOhsonSwTjZ98ecJxW+vu51miZjm77on5fCxuJi3W0EnQJeoJNfhSutu3VfNF+3A8NdFjAoPxRe0GYKj2VW20yTCxjWXlBU1rqSBmcUyI2BpASYxQTGBnw2JbzuvOmltKJm9EqakbHtdJQkNRXUJ1PMYGBa50cLooFPGVYrJuZ0eD3yYdfr4fbKFnh0duI3k43IPzfhOl+gDZykFK/x2Zrb/YyQL9XSo88fEbSDIjWggd2cVmFVezrYM19IuPEDPkSqt9SY1Xuc/F+AD3VzWeQPpTJTG3Pb81Abt+uph79SjRv90rG82au7uGh0NAiLKijWBT5BH13suuglOjGpntQoBCkyQT6JDiKC3F+ApeFkG02vhZK+Nk2FXy9TQkpaUn4rdlpTPgeIKCPjuaWnQQxOofJBnsA+FdhuFFT61ongkbXn/S3Qsofa45Bd5d1EehPu8g2U+pA42i/r3EFg/nspr2xV4dgMUqIYjUg3mn8xZY2HnqffkX2dloUZvvgqOZUGy1rn+ZHOWErSeAeo1SXGczXyMImwWdXII/SCKSaAeeb+2KWlYFtWYVXkJ6eWnHv+/lindmB4zBkWQMgDcv2SsANPQUN8k6SWcryjEScyDST5ifPSUqZcU55bp1TbzHY/0F/M+tWPUp4XDA9LkYO0OiduXroXchQW076nhjQ/EQ5gdvWGpFdZQN28OQ1EF+x7pZQ1WPdBokok5TzAxtSvgg7mFSIHiqj9NShzqBZYukOaJ4vK2icVpzUrqq7ZxCVZlYqdqC+5DiXjRdeDLHsg5aRM6xEyDRh/Op2GY1E+I+g2oTvnrqVp+KqWF8u8kLOCMUmnzgLWZXDfaqiHvPkp9CY0+NzkM9Mqv7EdmWD3ZYO3tf6vV4+1/j2X7fS5V5rTaOhlherM2R5HwRL270/b0tA52HAa5rvwr47ndTP9vZaovhQcXbx4BN8wn4OQ0hHXLNrHDKU47DEWpFjGs0EhNKTtoPakkbqDjKgNjLRazaxKqIwCQXquw++vkwl62Lib0opGrxnB5RR0aSMj+WctrYwJJVwWzmVlscbtoAtzfrAaXb7X1OH6xCm/fwPwccaI7i5rmfV7DLz2iNhDaGq4qFex/PQPzn95Kd8bhuRDZVsKDjna7/bvw4pGwFcYT0FsTNjXGBL2KxNNYFO1HLFRbOMHKWkioCNXgcQhgaNr56KhIFse5xGkIJWQFkhg3OwZjs3oRBtiRnqiQSKA9Bs0iwM1upfP+6NuABsPY9S60AJ3ZUeoMCsAdnawKZb/7mwMHSFxgPzdaDq2rI7Zt0HtK84a4+P8mT7tDy0vIWQvhBiEnCF6ffSa8UZQIArtwrjC3ujfAXKrNOVytWYdvGIiVEMCvTzDrPzxjDQYP+tk/BCCOY+Dv0ZcVpQUJa2PpX3KHtFO8MB8d1oF3YYlp2HR7C+f4DsTBkjHesTmO440myWkULOVM4/UoaYgmzNSoxVtT0n9QZOzIGTnd6AijMfuf3BGVhTKhKf3d5wMqFcIMsc86QCXSnDEPfnzDP+Rm37nm9wWl7dkX2lBRwXsdUtjF9wTrz3DkA9TGkkTrL16bfypYPF7gOjxRlWCZpJTIjEJBYSCCa9RE1DcKwgDWdEzDJoyF/WL0G5uKAu7XUYZzqo30qSUYkQQwB/7thOR+I7Mj8HU/qbsaN/likL5qG5CW6NMtHDCVc0utZYsCRp6w4BACGv9JPnKvSNmfvwykFqe7BTW/3KOSOJolA4zrbRziOG4GIQTYTGBoQlX3y88JiXZqgNRFtWwFmunCl4tgADteK/GwkHmx7ABwOMS6jU+JvRdcXuDckvWgM9WE/xN46GDU9GVrGF/LI2qdc/r+rKDw1hzp/zbvJob25z6RVbdKpXK6CDPkzXklhI7UK4WBkSL2WiTG83I0QgSArMNhWmlG0DsOiFAhI35TI4Sk3ovrmwosxSePJtYk5sWbbojpMJxheHfK6xn70OeVcLF0g7qyVoyg/CVnLXTxzUF2QcdPsrf7H8rhBYASNKrsbdd8YOhurRB9b89OsPqPaDDPSDXl5ZShhnbg0jaZ5Ox752wxQE7CCK63Kno7tfrE18CS/7l4OdslkNKWH3AnaYetmWm5vhar3XDlsDrh3/UdiXM/jR16pK8gBCsuN0BgXXtCHYWX8MQSZmSjH17Kl8oMCYVKNozC9CgVcSncFeepoSSXUCPCIfyXFzVa72Ad4QV2BdG3Gcp0uN5mixNHyT6Wphg3mjHk/i2vJnSOJhAajrfNpYcDrYGjhr9bo+IOFw6le93RXFtEP+cSTxU75GFdeA2xUtGXkrHYfyeMdMoVmHubeql+YT0l92nw0yWe2SFf2Zms9p7bfFScpTy2K5pxev0E1dQBctxsqwXJ0isgZAdPke9MVi++xwYBVA2l7QCp5/b6YdoNkHzdvToQHOi6fcN+ufZ6f1hdDXB1GiB5ZX9eL2HhMHglinhXEb3QVRt7dKFhIINeED+/yvlLDv61Kr6oL/BU+xLJtqpI3U9oOa2wMhabV4Jn3JHCOKv7ytnqsmiLcklPyMMvf1lEwHvMCaLhi3m/Kt7aYCcnRyqfqniecveHy1B6q4STpKHmO8l9HTRcCiPBAmvw7BYscfyDcDIw5Xv4QM3bHUZl4MrbLsJ85K1a2+UAftPkXTjrXG1N8kcqme3eREtVTqe3oOjtGGIdfaMk90HQBnfw2ur6YrhMMRPIMRx5BiI5dzkwcOREHFZLNv6Mg9tBc5LwxasqjXp3RFHlWRJeqgsg2ncnJiUb2pobuj0PlK86NTAEUz9qOWBIBlMlBhUSBUx59V+goMjnEnvEDTyUeK5yh8wxvry5JF9RZaWlNoVBGfiB56GPIazM4vuZrwsC1U4EmWdsPdTDLLKIbrZi6Ro04XrHHjygC17amyQd1iejRyyXZCqvrs4X7bnMP5bDkiaX1Ezel9i7d3jB8OFx2AsCRWYx+zR44uN7cYysA2CUn+VBy11N5/ECs2KPoEXzYb5aIygvikekQbBMgxHCq8TJqppP9DUFJHIH1O3Aj23hE9p8MM2CF7ynNg3wh/mHOxTuDmV2tWeRdUj7k8hNq4u6Qb6M2qNGoiHolMsp3X38t9fLKp4cYR1ReSqNs8x8JqI+VCEkeDAAJGagSVB1fBmjrywmHHBmyet6Tc3CAovXJknQLKZc5luwvQ2tDhJxf53AFCHRwC3c6M9LjxauW4JUWhgFRL8ZZwnJcTck91OrmEN8IvraGoW3ziU11+xDMi1RxZTJ0w0UJ6yK4zVoAMoMlHiZOwJQMmxihLdz4eT1Zwy1Fwg2aAHQDgBXBkWV3i8jTx2HxdqyJfjF60+NqZJMG3xYSKGmsiV3nBCkJWARtClN3DL3Qq+RZqa7hXN92Fxg5iXLcVlj9G0eSO7LqKLJo50J9MbE+3OjqIc+mQDdsfVfSCPV2FFbxykJlqbF/FlSiiiljxObyh3o1T5ZwmwD90H7Lc6qe6rEyGAOiB39I3iTE9g3iyIGQ2ctilux9YG7zi/hR4mIqoCynFRiZmfLWvbeL5++o7UUgkKEmupHZiJrcEaibOlh/NIH8ctCnMzBliX8h2VNkRru43TxG0fUCINVtSRr4JxV+ITyhK6AH24lSPfC6uFopNgFZbYADqKalAUQHhcH8KZt0YM+taz/uw0xHL08jXcbc/KcU84H4kJIrDoQNyHlgo8QIvx1HpnVNACLxmhRbFTQljBwF1GhNmsuRJfN8YXGGolRYUMOsNq0xC16cYh8oauGySO6nvECC/YRVu5+CLb175T/jo7WKutaa70d/Ch3P6N4CzdNo/BdY43U/udfIdBSxGW0fYyViVMW6LZcZFjr2VqDV1RaveSjLUWnWBhLfFGcu2L/ilHjX78q05bv0IgfY3AXLxH6QrxXXeNOl10Us62GwsY4ynYYedoFWpJwGzt+/COm+Wdz3Y0BeFbaSpTtZ+53sX5xdn0y5lZavbCbekhKcj/3rXv4a2Q9IaEZKEFXNwrpEUcDF69UwWuhEpiFavQzFR+ZQFevjdN9+4WzieTsI0WHZr3ZX3yjs5gbXQm7ucMzD/+2lPu/+GOXDNdU2svdfGMJ0/jgG43RpG0HuGolyirZRfYFgZnCR8SiF+NsGau1Kz8h45pgcXkfT3Kgi1FPZRWCnmqSdyaUAD046W6X4ncfHkSWN0gVo3SDjF82EPruiRZuXcwMGTWrm/v7QAWWpqvp5PpXphhhki0UjpcdiZyQyD/k5rkLIkUK2pq/F0ncF80MfzpVLZvITQ2rJmXO2o7nEHjx91MTaihHq94SUeokOJR5fz0egQhXsa1KPWB7o2O+47qM5ae+GcsSp2yHZeo2i3r2laHJy/euylfVXNKX6em/m7CdidpNekyfAswYFL54cZ/LIIx9+7i2n9+bikFncOwHVDnK2og5dO6XNcb/iZ8ZpXe81n1CJAYCv/WS13B3K+PXeeW8NNn3CnNk63zd08AJM6WpH91uovpopcNVejCydFCqkhV93WSorsVhDOwensDFbm+cIB5XLaVGW2ppqZZmLZrIKLdVklhBRIXpkADjZAecPdnZ3Zc0+9jbYaTtDlwk2J+NTLY1+hkQ6GitpYdNdWWxxd032P94VuqcCUkzKsxiqB1U5Pj7jBxNyfmJVWJ6R2W6YNGyCaIeqVzO7542uSABK1VCJ1DUJf9I5ocT/s6MnYIwm8O3a4gPjJFmf98xW8suqqgpjMsnN2tkh1BJPvTIVn1q/ZbR240zOfKp5AGqilA4fzLaMAxQIr0ai6Iv4xMda9YGUooERsKdTU3+CqKmRegzY+l50bPwR/rCx2zJi4HXXu9L+G2IBar1Pv+TOcuP1V8PV+sihn5ONua70418GnYv6upmdwIzXiDLL3KrS9Ickca4TLSolyyu0mMW7bo9rA/d+a7N/Mn0qWg61NYZDLtOla+6bVpzqjzaA6J6zjEwmBQ0CwTNrm1UbT1EYvdpCTCbYezeVpVeduWkyAKZ83i/1gpxaxAKjWUVCzf8GueTvTlg+XogrKDyHj88Wu2XALuYV781OdbDW69VcqUaPILMHbkHm+5IBv9bbe7UeMfWyxU94z+ngdZGg6PS6QRTg+V/Q+mUWmRi6sGOzx8OZ22TxTrJbu2DW/aMzQH45DNrh7daOtsO7xQADJx2gjRXHjKrPO+YeJgOcEB3TA/AlseTNu9Uxk1lI5CyCfy4Pdf4raYaA3HhersK6UvmLbbqEqyHXHXbtDVuvVvP/VHRLthGVQtObdzX62eK129vzh+cjAHm3elPXQmpu9QSBzD+VbNBQ7JDnK+6FgzX7XrZcPmHrebFw4AQDyHVNqYQaEQqRG6NeX16thtfEDihT1hV1B0x2cbPvSYicpoTBNww/GlIvW70e5OYetRHLIDa7kwewqUK+vPFTL8m3CPCbA+Qm4Y/mlRsL5m/V8B5XLpyD7OtlnK46dtTKGzAdX2iWuqNXF4pDwzSBBP35uecn1jjN+8sR8cds7nVp+GZseYWx7miPlichEJ3aXWrKX9gJHHAZAZmnQf2KHL048SZPLAtQuZSTWcloo5PRY9GL1YDInhTYYfY6Rs7fPgZoQRE8cOL82JMLrDENdxdpS97F2zuEZk+JsQE++oZC4Z2/C/uSg2EYwP9ddka4NSityiirsRNqvOnG4aYtufr0ea0sm5qtTm7ozWTJiKM0gaFmqyAwvrdTfIvaPcQrMlwn9h2p/aekRTmPGGsnitsldOn3LHI6Lleeyu275eoqS3J32tdvAP7l8es8JcSO7Upa3aeetHotX+lwMkj9BGCortBiRy7m3eYs1gtmHm5CaOqDAU73QDfjnOv4CFJYD/67IDJGiNNqnGpN+47/e8vUs5nQYTHv+qh/sCYG92e0OTHnX8lZf2xSuumnwdWHOWzkhET4ToLOjtSI+FoeSopgwLbbf8NXPegbs30Sf8KB3Bh2vGjKcUy+D5OfOqlHljj2ibkT9Rh4m4qfxltL/+Ebml8xZDqWffL5pMCLWZZff7tzj5X8lpf4DWlTwAaV6dxQ4LhDd2FtZIzQABJ1zxRVcxKB2hCLMhMbEaKAyWuZyTtplResyY41pOZYkthVGYDXpZBv7+froKwWZsx6LsxoeKJMfbx7Q+hvIan1vwSIF5toNsiEsBTuVo/zGDd2JomRaPPT+6oHxruX6DiszP2RWpgt6cZl7nFr2LaiMPut1cyTauaB5pw+syZm2Rvi07gPzD+9/GSCkyW/Z0Cp5p7RZhOrg6EQEH6TGb8JxlTy/jpaTzxWzlVbi29UsAvR7a+kvhU+v8MgnaB/kW9LVmqqZUsYwOtrHFd/PjAx1P8u0rcF+ZXww52jG9KiNSQvuK0YpwCbJkwlQwCWNAQpWAnYxIUT+ZnMgaqQQbPJ9jfjMDtWNzbvl1Er/+UqtyMZfLTAOIabVnWe0ZR4CRWYx3Lj+b6UdB8Bl88ZFjUoeg97E9V1qwFIDj/kixglXjT1IkPeiqZSZ3qJ7ZBvyjowZE4xYBFn0ldKzJOMKWKUT/Mbw+317UgmVWsTIBWrtRepprNWa4hdJkOp21E0wsFf/3UA2nK4Sg16oWjiwjfVCRtz+TILClRsqY/UmJsggxF/9OVVy/R/5/lxmPRMAfA1E6vkbvR9dFDELzoaXZcTRXW7Oku8NISn5jgMlMZ1djqGi4ZLGmRKVstsFGjRe0wYwm+1YnERHOc0dUNtyf6C1pm967w5wFmQN0LXmAjSeV+lpiLCbPC0uYgm9OunP6+3pDCKpSK+uOt9hRxaObLPLP3ujBmJvrnSwEfGwTO1OB2W2Ir5HHuzd/DCxaxJjMVCeqejK7tGoxanCNBPJrJ/pt8kO8zMZq6mx3NZWuqXGDuQ+v7U9S83mYsf7wfkAMEHQXtMz5NN/vgM4Cdc5hK7Zr26ichSACt2MgmCSQKAhDkGRjOv0CUbwJvJcCeEb9eKg3eSvdrXTAIKTdF5A2FCN/wUrmprEVX6ka4lLfIjXYjuBkLGMGy/Vw2yXUhUJTN7Mf06kHAOwhUdkCjELa0Go8I6h0ukJsBdtwsKsLfwe9+j29bM0V0yak19K+td1xIiynYPB5XBH0M3AZWuVPAvyKNfj56vzkxes4ZDMApsnEd23X5L5M2ujuzoQUNK4cwA7MJTdmjLxRaCytSthRwfQJgb/GmnRrPdMZWFVnuJ5LqdN8vJTKqd+MSIr1RVMoKofxuJuO7oNxNzXD99dqESggVmNbuT6VaQC2ldaRg/bgmJY/IpcM0gbtjXA+yfIAtwGjUZ00x49wqxHSoVkJZ2Ps0sHz48+rHpRhRQOiVIE98cpphJf0EDcfdbxt8DG6xa3Hp5hWsTMUbMLsAQtzfDwa02J3i6RXwM9o9P6M72RbtN+UuDGq1acn/Z3buZXskWLMuO2JLBRsj2MjELfcnIRiXD2q1quJMgDKSnDug2cgIk9oVhFiIjenqxiFzNR/lmvRILqeMEiyrjfzCvpUYzdKEPncE36Gta43mSjEBLl6d4iwBz4waMjGqpC0y4kQtu7WtV14o3zFT5hZHbmPMiRs2l4TV+qQAl7hmLwS+FeFUDgyF0ebzOTDbNTkgeJW4igprhjcawqF9oF8EReykRmBR3btlsHV8KX+E8qqwMuti5JJbbyc1UghQM76z2mHvL6oa84E5GJToiYoAWk10Yfr//T2PU3YMfzENvZCMh+763faaIGJ8yjSqMa7InEYOKlKA0RQEzLRQDmPkcNfw0zEnmzNdxdadWWWFb2i2d9JaKpDLhW0c91tSl52zTgXV0B/1E7NV0NmbAoIpGo5V3ck8dF9vz+47c1ednHhUNkkfU6o/pLskPPXU9IjgPkL5dvM9ykeu1SU32vuB70yLsV8YCARMIAtFOEZZp6LsxORnDdbD5GTN8KaGZLaWrMp3t6Ua0tGOMAkQFIXxERzG2fXcCujxXRh/rXg3Becvskej0+iJ36J+3P+KDYZrLPjkjCJC7BSqPt36c+4OjWKiPq11ZCXfnTH6vd5WwB1QOce2ok6+C2Rs3SpAW5o0sjK+NUY6SvS6nvKYIsiNWbw5rb9O4YT5kem9EToO7ip1c1K2yN3Zfzo6dkduiccepu71/ohAvFI7TU/PiK9noOCxYwav/E3AFpHA7uf3K8yLhfSlBkQP3mim5Nb3hmeXVBVpvo0SAVO/6f4I8fBbfPMVRX78TA9V7Jt+LMZ2ulGzOncqsm8tImgz/qlFM1w8ZbzTwe5vFpie7xHqsJcGf+6nEkrYq8CohZadkWlFj/krR0S7GlpQENb9VJIMUcoWr1DG5gNZJJ2E+p334Rq5cM9ep1TJw9QfMLKaK5sJapzAiANKZBqY4t8/grloS3XOWgHvPiVoawbmZDqZMLNvieaTJA4wkqglsAW/k8T4xUffEdkZ7QD3AKX42dTn8XViL6kMWk3MGBPdNLa6diiO1Dusc/e0dDVBh2ra3OdeSCinha8RcIkr81DMBjyPlogLiZAIiZYoyXjIJwtOiwRQv2r1DQB3S7MErtFh770hySrY7I5rZrCcSNKoMrWs5tO5RcCuXnxDK1hw4M8jX68kQimEcd8kv8kLGsbbIhirUSGZt07Plmhnhjs7nYKzlagEmwQvIC/gYfrfnrkrQzzTNp9fRu3NAAElQ5SUfb4plkggmwg5WgjKa1Z+RCHszGD7W70wCBPK2uR9rs9/6ogjeOOSWpin0E2UDIT+RxGNZvmTZ4Bn23JfDw5NUyom2Q4wCOdSw4UTc6CV/ktZmQG2D522V27gBSMcxL9Y+HUzrG6wvdWbAP9d2ZENchYKxpt0qGfMnDvjvAqwCw9qCDZ24uEZUOC2zCwFRMTlKhCPTmGx87IVYrxqDqTro+ImtXbmKqR5jXJ/1WOwz/6LDwUz/i/3hwchK/LVDzrDPqOTs64BRzhbsaBeaiwA7sXbVFq4yxoIsOnbg/BDqwJ7jeMFa8A3vv49Zhzi/WEf76NjvP/Eh+9dfcW2CmleKuh7CcLtGQH6dbRWHFpN95LzrPlFKebztzGP1yQisZ2yv3kmTM6KWFlHr80ZxYYluNpZMXVrxoLfrOBUuFq6d309HDOBIg/cwth8RpjEAysg1n2AVHGUNUp47z2iSn658c22UEUI+Lop3n9KZyA4HSfV2ihYpt6qV67tpSx5KbPcYQJSql/9Vq00pBTYUuIKapqG3S29TiSqVC1JyJBuNxQaNqWkzuuGTVGZga1Bbkus/5TYEsyZPM68kzsb3LuvS0xLdfKmNtB7wF0BK5eklVcAOZqfFhfnT4uL84pzkHh7k5Ze2qIbTBgJ7Y3KpoL7TIVmYrZRzGJgeHCihmDvO6bgw0bZ4WHLLQffBMvNGDa6hscd0saRmjjLfcq4i5ihQp7Wp/VloFEHlQRrXhdtqsUnWR8R5roRDJ6FxQqOGLHYAEyk6T7Yg2wd4Hi57R0VPVa4cG39hPf200t7X/o/Tvn+/5Od5G+7DMz8kT+mNhSaswkJySuRMJ35dalf9mQ2ZaLiPPNy9oVaxaeML/ri4r3+LRSlfZtO6BAtFBCAT9eRavZbUnGi84jHB6TA1uZwYP21cS5RguxK305bhioDYHyG0a20P7R3VBmtXuSX8ePdQwbDS1hyxtGJ71cbG+5AXD6FfIHWbFGGYeIpGnrTllFAjIk1aBjJHspLWMlmRL2Bfr1bV+8cF8fdNHUYJGUv2MyHF4+7ODdpONcLgHCdGH8sfMR7EuXph6BfUzpNjILos7k/gQIlKKrzh0dUKn7waEbWzcNjj/ReF+nuE+bpGGh98XUAjtLnxUr8hMvTvBgZiofjZwCohjXCgBulXy/pUBwT/SjstDMCv6jvE2QAgJ+GKwv66M8WEnpGmoks9vooiFhoaQqyQ50TC6Tz/H1YLqlRgFtH2Jt0wYOgxjWzpDhR9XJuWijsoCRZpuhw1trsWP2vo426pP+IffeA7J4rj3xiwvW3+1O4kukb5gELAtCJmnNc/HS2fG6ohJFOS7cK4ufJaigKd6unpqNZPC4bhu3G0/mmknJNeZbqFGZVZ2C/EDkeUIabYyg31mcem02oTWFEVpzYcoYA85QtbP1JDxzL/cBjWPixrJWEEZkc0lBmPFPECU6gjpL6+8XOBaaT6ETVCwABBlqGnPibAVgIZ4S3DXmdcCvhXuxm9GvnEyGrPNtj9oZPAoxfWWf3TBguCEUDULSg+1H8GO5hGruCqOEk6GUYHMtrnOEzh+HDH/NxOsFsBh7Yv1TCZrAeTSBR2Ccb6WkOnvMvIRENf0wLdPCljOq0jgLD0pDmiQO0z6xrrddyDIes05vyCF/WNtgpg2VLRMKUim7li10xoNwvh0JnqRPoENXqNXGBezc5JiCgQuGjur4acDdF5wrSsR9xn0B+K8SA1XhmOAbT0cDgwEQBNb1YwzMoREpeT2A4O32RLYdDFkF7kS5pyUu4wpnf+ydXrNIqRo8OyYnuTxtjE450zL4vfM64v3y5gkbvUkxdf3YQHhGBgfG4WuIZhv/qg7OUXZ5AsPj6GOqy+ig1+B9CKVJA7SzqyEJ52XpykAWwL602sCcxH0EBZDlVNhvCtFO+aBR7ITt3EljQH98rdZcHSvco7toPIBj33JpJfi05BpxhJkD34VFkN1gUbYYcFK26huWodadvqKjJK7K3QAU2wslyzbPvRA1BLGBK1XOgENXNQyWa1GknC7ljtcIjLSR0+7XFqxkK1dHLxvSTvsb7SaY9tDMIuB6dDCqIVjWJlvitu/buJ2GBchPC0OUtmWQVHW5qWVz+R0X7mdK5ueLvIS6dTr4wOVMxmq6hxl6+5pr5SZrerNF16lV6sCJOlV9uKI6zOcALlsh/j5QI8ik5zCBkyKZmoWrZKGovU06ADn7RycmZae+AxxfLPhpHQSYCwVAFpKPwLG5sKVsCita2a6yjxiNmqULAB/kL+u1iYSQLjah9Z//xmDYzT7tIRY4CVOMdgVuUD3KKm8jYY1wL4SJmAA8T3E9ke7m/HXKyCe/Pi7ERciLntsKJ4rf6u/Iaf539sBaO1P3dIMqCFlwkk+PHopQypMNuMKAE50S0qWJJfaylkNalJal2H70z7elWBrhoVBMDDNuH0Wf+8TTo3komRpB1nkLCGB8+fQCjnniKxTQhb/l85Zl7sCBqt8QFlGNGBPNa+fOe6bT14Btc5fYklAFPIzjlCH3sudB8c08+iYyO0v5OXPuIMqes8DRKzrSNqgB/IjGJ13MudD7YwAHAwqFtjMjTDCw3aK2490MTxTTjlIIqRnE4eRdE5k3QzXvihmTSra+VoGF5B3YVbEbFjjJahmXiPehZkhJiYaO1RrjRBPFtXoAV4QNa4JQyAf1mZWM1vkFlJi5yt+BEJv6ZVXvcQO3nscpKQTwtxPsM4BYOp6g9LeLBbx2Qlk2BjayyhtMTPqURAqa2uNC+ONqHZ2uheXi9e/j3hzuonoxNo7uZz6sp7stkIuMmTgE0YKgsOv0g+lmyF7nf2uEUWgcjVXSwzfzsxpuM+X+fzV6qq6r9jQ/+5YbiDh3clHaxpPOMhf0AiulOV+dK0SZ1MF1R7BVAiQPtjbG2DK6su+u9QhjCeQHYJGY13B/fLFVBsocbOoLCP1YfrNsgcfyA9XXn9fvba7/+/mH1bZh+OY9/K43mUBx4keMmuNVTQIKdMMvU/VcXzRd+aoddj7Cev5alTFaeV+Ba7D6tuqTUX+L+v0G/eat8wEaMEBwovs30n+nn1N9wlDEA4daZe/EZbuiOHG6yqYeNhvK9gtOg+ROM7XBF66n66M9/gP2gbfSaxk5qd5vnC4kBpydOGYS3nnT2CDzcw4pK0R+O2cGf/6v4cuARDkdzLe0q+BYS1tRvGbezvfLAqv+D4B/enX7IxGtVt6pJkkqm9dqyZf5/VnUh9A0tNyn8YadhTw32FaPBgebBvb+1jzhAXo9kwJ9iSWmyn864/4N3VMVo17f57okbjZjGNnf0NzAn+0/12RnSx/PUZcKSWbb2p5+BeiD3gDyycZZBerKOjl8IiJzrHz9lwIIfa9uoGIwHGDE5gE5JAXCJv9qfqkvNjwh+gTGUFCZ0axUxf8WoTJb5jjDfYy4IZ6sTqP7YjWTogHXlyLHbEzqtxhONJbkH1dWKdb0AAC2F1E+fIo4CkRzZTkiWuf5037E8t+CHRVps90Tjkn5EP46eien3wSOLm8Bl+iyjQLfxCHp++uIpjXJnp4yT2JdLFsvxzD3ACjn5sKrC8UG25CwG1JfXp9EyEXGvZiz7EuzKLLxQ9YyV0VmuokNFovhR6WPoQi5Y6oWCMDm1lx5NJJ2bRSx8ouNiPYZnVnRiNDqbOvFNxPMpn47nN8gmt4Zh3ZsCSZfpeU/0YDtdTvVuuk5mGMIsCV4dXWw1aj8GXFamYYrmNinJVr1v/2DpUHg6qqXrzdadIaRdaT4GVWAHX7dqiLV+Qwvcv9vPtWIXO9sVIcOzMTL9M3pFi8sx4g2Bvr3VxCF7fhDmiVazAa/t+2CUGfhQAws4jgexlQLmA7pj/LZFH0WWHzkEJwQJkBGDW6wipqU5eq1Ho1nHEGzURZE8nXEMNrR8lMgmLJCDsFvmkf0R4OyDn8oMC45sI7jSkMyCKwQSeExaBeU7OWDYDa7SkevPgMjaSmo/PWeKFY567CDG42c1fWnviXDZlxG3+KNA1McE3KiLX33QUIR5SAezQGUXGpuTGJAn9BC6c1vXALPLm/tSSlUbjUgeEaIEESQEkKd3lEeIUmb05XPRsiO314HQfgJNuzLvGt2i/cajBAYV3/NOJzppwshKo/JO2MY5MwrMGdVtax/6o2RrIJh/AHhBoSEXCAaEvvpGFt/A4gtvFcJUBKSMGA9AQiPPEah9vmEk/JnujDoxoh1N0mWKkMTEYySDtHskelveEVBJbJjb8I+/tkVFIO8lYKhpgXIcGBoZqY7NeHWuVVhnwHUTAUyQNx4OyPByWADqpWlJx6WQDrc65GcB02HBr6x3tDki7BH/JFB21NmnR6lBtsb2SH5UeGZ47HoDmZBMkyqOsyJVNK2Hv/UdbUwKivYc3QMRH/Nl6rOjweikfoaG/kwkmbTsd+rH86XjUk11pQQE4wBjgvR8vgxQIEXQeJYmTMYhLQbD54qVqpk2Q4adMjOGUJbbzartfXzWLjpAF54YH5oK2P5j9mi7XBJaOCMf8uzqi1EsL/hmZFzAwPQaqR40pidstOFzUqBbRehuVVlVQRiIuETMN5tBrmtSpQ1cDOetxF9fInBVwzLWzB1KUmNAGDdSWxLZ8F3Jvy+K+3UwJBdlJRN5foTAdVmkVXzSXp/WeO7sTezQno1rPKqtpQHuwHyOxNrpa4FG6sv51XTymmJJtlyzHa+nRRmdBiGLmqXSwRFozWhYoWC63JtY2UalKku129forEOeGvXprVe5mtNKjOmkJM6fWGBXkj5pJGBYSQjQzdw1FuNTCUKkMAQ2kGZgc0tpqRjFqoehvskp1TKKxJ6C2/Jk8Lwh8w2TGSWVys6T4APEcr0/f4fgiV/pVFATFIHFsAChgSDQo6B9vvMrLTbRHDl076Qb+pIPI4xkd9DrEPx8bbrNkC5btmnwGy2l5jGIFF2gGjisZcuLkgjD1VN7ydlNke3DeAgZgO2qA0qCoY9eBYhj/JJBpvW32KkJmYw8dASUWlOFbnDVIx3YcCdpYB/ExkstoSkLaRIYT1bYyNX5oCx3CndUSHSLmYeOVPZPplSA4iI+ALjEI7PKFwAaXGvhXgrAhDfWOQI3SLlsEWhrVNHBTJM4/WGLJk6Xhcetvh/jHSI1kh25XqLMbBqtpjZVuB64qDS50kAQL+fHZ2GxQkcnxFnQtN2J9MLqMO5pVqeB4dPH6jNGV77B2V8g8t4KiXx887KMZU2IaTGX00NZ38VQyvukAKOzRtJyEo6falkqmdPfXnQKY/QVj4auJCdFjNvgnDmhLgEFOcqryPzYCH2M2gslASJ8wZA904N+LKDrUZXQRCjmgEIZmpTHroZ2NavvMo+SG6KF6WlqkN+i1WWjovh9X8ZPZgWbkuUoS4cwVnmppxUH0MGtdz9fJ/XVw0usPyWTg/7Iwp8i/D6dqcIvLfibaOFsO2IGSRe020umXJjqC17FuvQo0bDKmi9jK/eadYM1S4m2/njFmldYLThPe0RzOdfTVXz0sFP87YIp3kaTLvCFyq6G5TlArQsAknb3Cj7ErGsVFP+9x6XTwDH5ojh9Pxhjs+R5XujJDlTgsmfwYYfWS5r0Ew9N5/lUXNARSwuzPEYhA/XtsYBaf43IVH7e8aEFjy4hcJQEF4oSdjrlEVj+kkwrjLe3efpc3BbI+y73us8NbBSJO0dD1AkyOV/mdgSnqeaGWX3qIym3rRLGP/EIGQe4B9Os1oHYUwNMfddLJglynFnB5geLl+3wAugVxE8BRIfLkbWVGbmIrUMtjbyStivH5UapsVtW6tN6pT0JGWP7RJGZ5a4FrjdDq55gHig5Sef7dtxqtwjUOsJHaoDHG+cCOdly47CbC/wwiVntPmyzgbM6vJwOC2PYb0qSt/nktzCV17vJqCVORaDob5whLy1LqWEywaSbD5S+rJtvTPIAEjKk56W4LsQVaD+nJeOSW0CyqgQSSEJyXUXRS2s1EXNQlBGPnPfTRd/aq4FKU4+Bzv+2IFWN1k4hUJY805D3L/kzv2ruFuxcSNpS7pG05LZR56vDdxVop5SQJdRKdMl06TYMKB4mQYygo+cYHaWzLtMWwLFKFKhJ7vhMiDbdDA2WZu1cdaEXcdDwEkYBN77u/v678AbH9hFyZyZeG/rPXi1LBogKNeCcISE8xTPa/PTtK9BVD80IPuO3fX1umyyD7ikUlRr3nLx7YfJZRVxvznUoa6yLZOxDIkomBATZbTk/1oEYyAF5+F8xR2cdDWfmpz8556Zb8ux6mLMCqLKyDmXanZUMi6EoeKuWyh7x870Gx/M/Tk3ugIaujfWYbEQs+0lkkTTbG4hrVxcjqxbIChuNE3DpueGRxmLMxIPL+iwk7vWdJ2S1ceQhMN+XPglG5P6CV/LrhaKRtgVrthbx7wj8Uksv0AR9p2//EtoYfnEYcyrnR5SQomMKxB0ehnwy0gZVovOEUbMHAQP5ghM5GuJNyB+kuVb2i+OFEq5DOQnI/P21QA0pcsg6UwAqzaDHJhG3UV7arl9qSoYyUPG4dP43SMNzOL3+ECY/DVYfxcS9sDyy7TrEeMBvNjlrfbRfMv3/K6D9Z325m7uFRoMB1tw7n8yOtfX+GcShR5Mhkvo/kZKaD/kg6l4S36Kv+KJu4eFRGu/DZFixPsjxm5I/lJiP5QFGWFxXyk6x3XsXN2mIEQXOTE7hGdJMevsHkT9r1UJb/ZXu+yu+eGhQOJ3N0uPPonpmWt0QAEzOpc0Px+ldneBozZzaIuzCRFhs9uw4UZOE25T54L2haynHlNihYubE8k4yztpxfcpW3eJhnUvwZDCNs1NxgUskwPoOhhnXRILjLsuxjogFgl9JLlyv3LewFL++j+/JFMvobOQ+S3Xis9d+Vx+9alGvJsX/cc3WT6+b5NQTGASH2z/e36IZtPEo9H+U9P9v0Ce0bPr6h68Ax7dqbIVKyPn1JoMVupjJruoKwUx5TPGEOf8+0NBmIjzYDsz8d7xEPMU074GBrxPFjRmh9faZj4TQ1UP/Aiqb319G97LV1YTy1oS2G6ZJfqJRKYifuVPTIUtmphnyweeheQHpfRKBKV1MkfQXH0gwU1ClwmaQjwrzEVX/BqgiQoICBZdAfBxEx2Vqm37YPGl810DTufjNbTUhlgvG7SfO3til8Q8u0TLiqaY3dn9AB2EdyIRfFOedexu7jXLa8CU6J5rNZwkAndCE8p9Dwy+4qHDFxMZpNEln06hS6731ou/1r5hGRYL6iq1QWN/ix+s+NWBSf9FqqzWv7hEGo/nLUDM2CVZAGuyilXd+UkwodCtmSBZaIF3L0pUGmwrica+CGLxmqOnvaAvFrYMlg0QrMMnqWzBq4JDVHJe1Dvfw1fa7JLlKbhMwkFC32T++KGHaBU7VMAXiGYxmgXFPhn/p3ACSssNnWkbvMSIzU6XluAwrgNdxeS+RIuqWaBrQYtX8CNZdhQmYgppMwKE+NxQ1OCX1vaCHiplhM4dNzDCxZO669MDYIsUMYwOss3GSdWSZvOoAa2qx3LLSOBbIQN7j/Rf741HNW6vgs2zyLMk3dRWzsfdeHkPU/+mism8Xy/TZB3O2KdRqVOZpuoxM6b4DX0rqjEQ4TMvLEFe24h4Wj6WGCPFnJprIrB0pN5JTDUTibCfayKXEAg09ygxuHqRS6mm1HmrArcFwuoXii/oHNZbOKiSjd326K2pkKPazOP6vWv6jb++XCzfLINg1cBqOECwhnbHAdU82GLlgG2+J66sqNeU9RxaE27VARajnKl9ukRmF7SS1CZks4LyC4kuRub8D8uCrb+5Ly+fhYBTd41c7D+mXVuS+KgpGRqVsVNq2R6B7bBZgaYnTwjq+WFIQhSf8I15zYVMKguJasN9DhvP70NhvrF7c13HzZvr1C2jbyr2JAr6HTCGDsV0rlPQSXWitEHk6gR+aJ+bzpuZRfk/VD08uCf6sixf00fQFT73y5a06jtn6WO2JWmQZZ021OeoYOb46SWrZjajbxS/eoPvkoVE6ntpzei1JbS3213ahS4gcX7AZRFjAe9qPsCXVMZg3d3Cf9YCDTmf3/Njz2TxhiUJfQTEx/dg4fzQYReBDo0vv8KaQK9EaCgg0FxR3lDP2oyXnQwWSgUXqnNvrpZozoF3wpZXIYVYFyKbqPLvuMJ6P8gdDnpXMIcN+5Jd0bpcxHeo1qqTB//l4qnDtDu7f8Xku3Iow/ENuf/jdsEwqG6f+SqBHkYXyr/Uus8B0ZlDj/L+6eZfCeELb8wEAhffFZf0aPYdBCdWbdscLnqroK+hgyd64zDF3NFRBHyFuC8Cxp8WX616zdO9nYtsqD5loK9La7o/JvD9+Yr4D+iFyJYdhK8k4HgmQdZKLe3zY22n84onrfY/UK6Ugv5+UnHlpe8zlHeVzo/2nUUlX7ikNvLh2YjjUY9iyRRQEyLdJ3PEbQHWyNDi7fQAeeNS77m87w0/5LN1LYbZ4aQzN5inMwlQNby8HJZlbsmFKrtH2DXiIOTiTcjHYJcr+e5VJowGfb40FospRQh2Ckk/0AHuKuvnnW28z1m1DvZTo/z9buBE8oN1WMSDpufVIaZJWWT9vX80QrTQWmOteJgDLJNzLyUIJ9Y8IMUsu6cboYqJBE5NFVwidekPmS9pVB9WhqiTopJTBNc1JD9JC9dim/t2A5zVBCTy/k9ujGA3f0FBN4w4qH0vI1esluSqpE2+gBHCEBp2ZcxjnaJJO1M94owDpgTo+XqVy+jBjttIC9NNWia3GFmkueZ1kaCzR1E7QJxUwW5aD0vSM675qfLOY7UEubnCe4oIkk+SpPovqKNXz/imyjRRLeyBDnNsBZ28bygF2t6ivQRYhJzjOmohiDEmXJdFWjDV4aBbZT3bcXqG59FQjJXcHYsTcQSPIBscWNHbvsTFMXLdkGmnNALFbxSRL8SSGbW7iFP7CEmroYfy1oQlmBPqv1EHvqPXquocYSB5V+1tSSJjEIpZuObbswyhX6O/3Mkh4fi+5JcNzUWL0vP7SI8uB7ZUngMk/dMNPoyrAdEB/x1p1EwSPDe2Xi5NlomkNnx/wS6T/inzlkgDPA3DTEh2hCqLB1S/S/vGeIHopPCf6VGLVxv+jiJ2FN8LYouS0ALFVkd1Z6Af1ZD9HdW1gNA9CPUq9TGyg2D+316egjOzPhX1H2ie9w8dfjorZ0EXWGuuDZHPDnqUCOtJ30mZVUF/27Smw6Xww67Ffttqkor8hge0hwWFhUVZyJUByYVDyyKXj0AqJwudsw+BWzzguw5eiBDvMTaQhAKFTP/bfRUOYTPF2OQCPs0wTbNHPSIK5Flg3cvGRbCQR0jCh0xdxowOu1jQec42uRaawQzJ5Wn+vTXFrruPMfnlXJryfSdcXA9jRmP4fZhoWPJ7PQCgtnIXi4aqDgHbeBQQJ/LD83YZtZkiZUzbVyYcGm9u6ubephdkXeYBnhkVtbyExfXqxDb9rOlRvBNg8ttUr21ySElq8AwTFGnc4wYz8fO1L40qb/PPIVfvXDNzlMmPHbQwDUmFL4+wt0r1bg+2nWcqwRxyPMZbXli4Wq6tM5uuNN8tkk7TMEo7lY77GnaO9ZMrVH9hTYYbUvUVLFLk8FHGHMOGU7e/I7TOIyIsgmvswJqPtRTPFYXKUrcQPWRZ5hkUwwvAwNlAJS+0fGeOvcE4xlQ2bmqRRA44UmI+EBaEv7mRVtIZ6OJgdF/cFAL1RExs/+NGL4VbuYuMP0Pi6kcCrggg4VZt4JKKR+XahkjANDZ8MK+DNb7ANLgYAJJ+PrVracvQ93NASGLxKjgusPp4KP0bGaPmLZ28x+4m3oIJn5AHiT/CWGglfZJJJta8d3FB8uhhEkeT66VT6ECOfA6RaP8Y5igkdF0qeVOt4wu2JoENJW989erJ+LGli6xoxfpkLwivliaQIams00nkgVoqdZ3iy1RgW2885s5+r2ljz8q/7gF21KdSvj7MAuVKeRjww21A+wUwopMrihF5GOGca/XA3pgXKykXSgoS6H8yL4pIivRPP0UohCT7L0aUgdVXRuH10giOQU256GE3ytrHaNO02fpTY0H/ti4So1OrymO+3UW08UKshewaRxZhJXyJRwEi5SxW6I7I/BZgkARbsqORjStVdk6XftiUMsp8FtmZPVn8/qgJZT2CGwsn7Iu5et9S5vTeVFWchDZs5sWgn/t1477ApfzVTGJX1q0QZG9Vt8GlG9V0qd8a24pvZcnC30oWfmrfB5oZTBuYsAk52OfneNzouFSghv/mt/BlCL7fYoqjhLG0lqtv2kJtzp7TRL+QFiCezQXiB8GmPy/qFTjMuDmOfN0AspC8EiF0P7ueO1zlllKdmgT/iOZgvf1lMxRBySiA+UkKGM443Fi+AZYj8HUEwZ0FpT5aaFDOqb+woWiswdgSgR3JwQL8ZofuSFDmswS6xgT/rkW6Dh+HCoGhIxVqOcgufAfhZoPyezDjoLxsQi9DzpXTHPn0a43IV3n7hdQgbK4/XLNjDpvtb1Ksnz/HEfZQnQE4Kuzezy/tQ3ySlaxZ+T+zoD7Dj9Mg9OtdOF1fi749d8LkTH1WtgPUAMaNxpmB9J7a5RYKz7TmH+q3ZGMTscQBFGxsAKfTn1wthOnemS1BGgNIry2SQhc5M5B3REsmPkym5z2imtMDU+IVZ7HtTP2CbqJzK0N1SjJXcm7YDpEsPZll1w3M+M4RXVVmXArntsJ9diQRa/mpVEQtv7so5UP0MHoZ3Xtgm7wTmE3Os4+fP0ElJhCc/oxS/7GcJJ2uXHSfuAbc85z5bqGrismE/XFd18hlTHQbweE3H7bdt5Ui9aZ3HVBxWDUc2rMKjr/Qf+Nz4C1xYzPIObSYHifnFLaCQrR71cQBZ7joG5R2DT/FYS58CZrcCwLgfInqYVoR6pnhHuNWvLLwdiQWw4IDnQr/VX3tZUs+HrIc/owQ=","base64")).toString()),Do);function Qo(r,n){return[r?`${r} `:"",`/* eslint-disable */ `,`"use strict"; `,` -`,e,` -`,fa()].join("")}function ha(r){return JSON.stringify(r,null,2)}function da(r){return`'${r.replace(/\\/g,"\\\\").replace(/'/g,"\\'").replace(/\n/g,`\\ -`)}'`}function pa(r){return[`const RAW_RUNTIME_STATE = -`,`${da(ns(r))}; +`,n,` +`,aS()].join("")}function uS(r){return JSON.stringify(r,null,2)}function cS(r){return`'${r.replace(/\\/g,"\\\\").replace(/'/g,"\\'").replace(/\n/g,`\\ +`)}'`}function lS(r){return[`const RAW_RUNTIME_STATE = +`,`${cS(Pf(r))}; `,`function $$SETUP_STATE(hydrateRuntimeState, basePath) { `,` return hydrateRuntimeState(JSON.parse(RAW_RUNTIME_STATE), {basePath: basePath || __dirname}); `,`} -`].join("")}function ma(){return[`function $$SETUP_STATE(hydrateRuntimeState, basePath) { -`,` return hydrateRuntimeState(require(${JSON.stringify(`./${nt.pnpData}`)}), {basePath: basePath || __dirname}); +`].join("")}function fS(){return[`function $$SETUP_STATE(hydrateRuntimeState, basePath) { +`,` return hydrateRuntimeState(require(${JSON.stringify(`./${Ai.pnpData}`)}), {basePath: basePath || __dirname}); `,`} -`].join("")}function ya(r){let e=er(r),t=pa(e);return tr(r.shebang,t)}function ga(r){let e=er(r),t=ma(),n=tr(r.shebang,t);return{dataFile:ha(e),loaderFile:n}}function ss(r,{basePath:e}){let t=m.toPortablePath(e),n=x.resolve(t),s=r.ignorePatternData!==null?new RegExp(r.ignorePatternData):null,i=new Map,a=new Map(r.packageRegistryData.map(([l,P])=>[l,new Map(P.map(([b,S])=>{if(l===null!=(b===null))throw new Error("Assertion failed: The name and reference should be null, or neither should");let h=S.discardFromLookup??!1,A={name:l,reference:b},L=i.get(S.packageLocation);L?(L.discardFromLookup=L.discardFromLookup&&h,h||(L.locator=A)):i.set(S.packageLocation,{locator:A,discardFromLookup:h});let B=null;return[b,{packageDependencies:new Map(S.packageDependencies),packagePeers:new Set(S.packagePeers),linkType:S.linkType,discardFromLookup:h,get packageLocation(){return B||(B=x.join(n,S.packageLocation))}}]}))])),o=new Map(r.fallbackExclusionList.map(([l,P])=>[l,new Set(P)])),c=new Map(r.fallbackPool),f=r.dependencyTreeRoots,g=r.enableTopLevelFallback;return{basePath:t,dependencyTreeRoots:f,enableTopLevelFallback:g,fallbackExclusionList:o,fallbackPool:c,ignorePattern:s,packageLocatorsByLocations:i,packageRegistry:a}}function xe(r,e){if(typeof r=="string")return r;if(r){let t,n;if(Array.isArray(r)){for(t=0;t0)return(P=xe(s[l],g))?P.replace("*",f.substring(l.length-1)):he(n,f,1)}return he(n,f)}}var ka=Array.isArray,zt=JSON.stringify,is=Object.getOwnPropertyNames,rr=(r,e)=>Object.prototype.hasOwnProperty.call(r,e),jn=(r,e)=>RegExp.prototype.exec.call(r,e),Yn=(r,...e)=>RegExp.prototype[Symbol.replace].apply(r,e),Zt=(r,...e)=>String.prototype.endsWith.apply(r,e),wa=(r,...e)=>String.prototype.includes.apply(r,e),ba=(r,...e)=>String.prototype.lastIndexOf.apply(r,e),_t=(r,...e)=>String.prototype.indexOf.apply(r,e),Ea=(r,...e)=>String.prototype.replace.apply(r,e),et=(r,...e)=>String.prototype.slice.apply(r,e),de=(r,...e)=>String.prototype.startsWith.apply(r,e),Ta=Map,Fa=JSON.parse;function ct(r,e,t){return class extends t{constructor(...n){super(e(...n)),this.code=r,this.name=`${t.name} [${r}]`}}}var xa=ct("ERR_PACKAGE_IMPORT_NOT_DEFINED",(r,e,t)=>`Package import specifier "${r}" is not defined${e?` in package ${e}package.json`:""} imported from ${t}`,TypeError),as=ct("ERR_INVALID_MODULE_SPECIFIER",(r,e,t=void 0)=>`Invalid module "${r}" ${e}${t?` imported from ${t}`:""}`,TypeError),La=ct("ERR_INVALID_PACKAGE_TARGET",(r,e,t,n=!1,s=void 0)=>{let i=typeof t=="string"&&!n&&t.length&&!de(t,"./");return e==="."?(Ji.default(n===!1),`Invalid "exports" main target ${zt(t)} defined in the package config ${r}package.json${s?` imported from ${s}`:""}${i?'; targets must start with "./"':""}`):`Invalid "${n?"imports":"exports"}" target ${zt(t)} defined for '${e}' in the package config ${r}package.json${s?` imported from ${s}`:""}${i?'; targets must start with "./"':""}`},Error),os=ct("ERR_INVALID_PACKAGE_CONFIG",(r,e,t)=>`Invalid package config ${r}${e?` while importing ${e}`:""}${t?`. ${t}`:""}`,Error);function Ia(r,e){let t=Object.create(null);for(let n=0;ne):r+e}Oe(t,r,n,a,s)}jn(Qn,et(r,2))!==null&&Oe(t,r,n,a,s);let c=new URL(r,n),f=c.pathname,g=new URL(".",n).pathname;if(de(f,g)||Oe(t,r,n,a,s),e==="")return c;if(jn(Qn,e)!==null){let l=i?Ea(t,"*",()=>e):t+e;Ra(l,n,a,s)}return i?new URL(Yn(Kn,c.href,()=>e)):new URL(e,c)}function Ba(r){let e=+r;return`${e}`!==r?!1:e>=0&&e<4294967295}function it(r,e,t,n,s,i,a,o){if(typeof e=="string")return Ca(e,t,n,r,s,i,a);if(ka(e)){if(e.length===0)return null;let c;for(let f=0;fi?-1:i>s||t===-1?1:n===-1||r.length>e.length?-1:e.length>r.length?1:0}function Na({name:r,base:e,conditions:t,readFileSyncFn:n}){if(r==="#"||de(r,"#/")||Zt(r,"/")){let a="is not a valid internal imports specifier name";throw new as(r,a,Y.fileURLToPath(e))}let s,i=va(e,n);if(i.exists){s=Y.pathToFileURL(i.pjsonPath);let a=i.imports;if(a)if(rr(a,r)&&!wa(r,"*")){let o=it(s,a[r],"",r,e,!1,!0,t);if(o!=null)return o}else{let o="",c,f=is(a);for(let g=0;g=l.length&&Zt(r,b)&&Ma(o,l)===1&&ba(l,"*")===P&&(o=l,c=et(r,P,r.length-b.length))}}if(o){let g=a[o],l=it(s,g,c,o,e,!0,!0,t);if(l!=null)return l}}}Da(r,s,e)}var N=(r=>(r.API_ERROR="API_ERROR",r.BUILTIN_NODE_RESOLUTION_FAILED="BUILTIN_NODE_RESOLUTION_FAILED",r.EXPORTS_RESOLUTION_FAILED="EXPORTS_RESOLUTION_FAILED",r.MISSING_DEPENDENCY="MISSING_DEPENDENCY",r.MISSING_PEER_DEPENDENCY="MISSING_PEER_DEPENDENCY",r.QUALIFIED_PATH_RESOLUTION_FAILED="QUALIFIED_PATH_RESOLUTION_FAILED",r.INTERNAL="INTERNAL",r.UNDECLARED_DEPENDENCY="UNDECLARED_DEPENDENCY",r.UNSUPPORTED="UNSUPPORTED",r))(N||{}),Oa=new Set(["BUILTIN_NODE_RESOLUTION_FAILED","MISSING_DEPENDENCY","MISSING_PEER_DEPENDENCY","QUALIFIED_PATH_RESOLUTION_FAILED","UNDECLARED_DEPENDENCY"]);function O(r,e,t={},n){n??(n=Oa.has(r)?"MODULE_NOT_FOUND":r);let s={configurable:!0,writable:!0,enumerable:!1};return Object.defineProperties(new Error(e),{code:{...s,value:n},pnpCode:{...s,value:r},data:{...s,value:t}})}function re(r){return m.normalize(m.fromPortablePath(r))}var Wa=new Set(Ne.Module.builtinModules||Object.keys(process.binding("natives"))),Ht=r=>r.startsWith("node:")||Wa.has(r);function cs(r,e){let t=Number(process.env.PNP_ALWAYS_WARN_ON_FALLBACK)>0,n=Number(process.env.PNP_DEBUG_LEVEL),s=/^(?![a-zA-Z]:[\\/]|\\\\|\.{0,2}(?:\/|$))((?:node:)?(?:@[^/]+\/)?[^/]+)\/*(.*|)$/,i=/^(\/|\.{1,2}(\/|$))/,a=/\/$/,o=/^\.{0,2}\//,c={name:null,reference:null},f=[],g=new Set;if(r.enableTopLevelFallback===!0&&f.push(c),e.compatibilityMode!==!1)for(let p of["react-scripts","gatsby"]){let d=r.packageRegistry.get(p);if(d)for(let E of d.keys()){if(E===null)throw new Error("Assertion failed: This reference shouldn't be null");f.push({name:p,reference:E})}}let{ignorePattern:l,packageRegistry:P,packageLocatorsByLocations:b}=r;function S(p,d){return{fn:p,args:d,error:null,result:null}}function h(p){var d,E,u,y;let T=((E=(d=process.stderr)==null?void 0:d.hasColors)==null?void 0:E.call(d))??process.stdout.isTTY,w=(I,Pe)=>`\x1B[${I}m${Pe}\x1B[0m`,k=p.error;console.error(k?w("31;1",`\u2716 ${(u=p.error)==null?void 0:u.message.replace(/\n.*/s,"")}`):w("33;1","\u203C Resolution")),p.args.length>0&&console.error();for(let I of p.args)console.error(` ${w("37;1","In \u2190")} ${Un.inspect(I,{colors:T,compact:!0})}`);p.result&&(console.error(),console.error(` ${w("37;1","Out \u2192")} ${Un.inspect(p.result,{colors:T,compact:!0})}`));let R=((y=new Error().stack.match(/(?<=^ +)at.*/gm))==null?void 0:y.slice(2))??[];if(R.length>0){console.error();for(let I of R)console.error(` ${w("38;5;244",I)}`)}console.error()}function A(p,d){if(e.allowDebug===!1)return d;if(Number.isFinite(n)){if(n>=2)return(...E)=>{let u=S(p,E);try{return u.result=d(...E)}catch(y){throw u.error=y}finally{h(u)}};if(n>=1)return(...E)=>{try{return d(...E)}catch(u){let y=S(p,E);throw y.error=u,h(y),u}}}return d}function L(p){let d=te(p);if(!d)throw O(N.INTERNAL,"Couldn't find a matching entry in the dependency tree for the specified parent (this is probably an internal error)");return d}function B(p){if(p.name===null)return!0;for(let d of r.dependencyTreeRoots)if(d.name===p.name&&d.reference===p.reference)return!0;return!1}let j=new Set(["default","node","require"]);function D(p,d=j){let E=Q(x.join(p,"internal.js"),{resolveIgnored:!0,includeDiscardFromLookup:!0});if(E===null)throw O(N.INTERNAL,`The locator that owns the "${p}" path can't be found inside the dependency tree (this is probably an internal error)`);let{packageLocation:u}=L(E),y=x.join(u,nt.manifest);if(!e.fakeFs.existsSync(y))return null;let T=JSON.parse(e.fakeFs.readFileSync(y,"utf8")),w=x.contains(u,p);if(w===null)throw O(N.INTERNAL,"unqualifiedPath doesn't contain the packageLocation (this is probably an internal error)");o.test(w)||(w=`./${w}`);let k;try{k=Sa(T,x.normalize(w),{conditions:d,unsafe:!0})}catch(R){throw O(N.EXPORTS_RESOLUTION_FAILED,R.message,{unqualifiedPath:re(p),locator:E,pkgJson:T,subpath:re(w),conditions:d},"ERR_PACKAGE_PATH_NOT_EXPORTED")}return typeof k=="string"?x.join(u,k):null}function ee(p,d,{extensions:E}){let u;try{d.push(p),u=e.fakeFs.statSync(p)}catch{}if(u&&!u.isDirectory())return e.fakeFs.realpathSync(p);if(u&&u.isDirectory()){let y;try{y=JSON.parse(e.fakeFs.readFileSync(x.join(p,nt.manifest),"utf8"))}catch{}let T;if(y&&y.main&&(T=x.resolve(p,y.main)),T&&T!==p){let w=ee(T,d,{extensions:E});if(w!==null)return w}}for(let y=0,T=E.length;y{let k=JSON.stringify(w.name);if(u.has(k))return;u.add(k);let R=ae(w);for(let I of R)if(L(I).packagePeers.has(p))y(I);else{let q=E.get(I.name);typeof q>"u"&&E.set(I.name,q=new Set),q.add(I.reference)}};y(d);let T=[];for(let w of[...E.keys()].sort())for(let k of[...E.get(w)].sort())T.push({name:w,reference:k});return T}function Q(p,{resolveIgnored:d=!1,includeDiscardFromLookup:E=!1}={}){if(X(p)&&!d)return null;let u=x.relative(r.basePath,p);u.match(i)||(u=`./${u}`),u.endsWith("/")||(u=`${u}/`);do{let y=b.get(u);if(typeof y>"u"||y.discardFromLookup&&!E){u=u.substring(0,u.lastIndexOf("/",u.length-2)+1);continue}return y.locator}while(u!=="");return null}function mt(p){try{return e.fakeFs.readFileSync(m.toPortablePath(p),"utf8")}catch(d){if(d.code==="ENOENT")return;throw d}}function Je(p,d,{considerBuiltins:E=!0}={}){if(p.startsWith("#"))throw new Error("resolveToUnqualified can not handle private import mappings");if(p==="pnpapi")return m.toPortablePath(e.pnpapiResolution);if(E&&Ht(p))return null;let u=re(p),y=d&&re(d);if(d&&X(d)&&(!x.isAbsolute(p)||Q(p)===null)){let k=ie(p,d);if(k===!1)throw O(N.BUILTIN_NODE_RESOLUTION_FAILED,`The builtin node resolution algorithm was unable to resolve the requested module (it didn't go through the pnp resolver because the issuer was explicitely ignored by the regexp) +`].join("")}function hS(r){let n=Ko(r),s=lS(n);return Qo(r.shebang,s)}function pS(r){let n=Ko(r),s=fS(),o=Qo(r.shebang,s);return{dataFile:uS(n),loaderFile:o}}function wf(r,{basePath:n}){let s=I.toPortablePath(n),o=V.resolve(s),c=r.ignorePatternData!==null?new RegExp(r.ignorePatternData):null,h=new Map,d=new Map(r.packageRegistryData.map(([T,C])=>[T,new Map(C.map(([G,N])=>{if(T===null!=(G===null))throw new Error("Assertion failed: The name and reference should be null, or neither should");let Q=N.discardFromLookup??!1,le={name:T,reference:G},z=h.get(N.packageLocation);z?(z.discardFromLookup=z.discardFromLookup&&Q,Q||(z.locator=le)):h.set(N.packageLocation,{locator:le,discardFromLookup:Q});let fe=null;return[G,{packageDependencies:new Map(N.packageDependencies),packagePeers:new Set(N.packagePeers),linkType:N.linkType,discardFromLookup:Q,get packageLocation(){return fe||(fe=V.join(o,N.packageLocation))}}]}))])),P=new Map(r.fallbackExclusionList.map(([T,C])=>[T,new Set(C)])),w=new Map(r.fallbackPool),v=r.dependencyTreeRoots,b=r.enableTopLevelFallback;return{basePath:s,dependencyTreeRoots:v,enableTopLevelFallback:b,fallbackExclusionList:P,fallbackPool:w,ignorePattern:c,packageLocatorsByLocations:h,packageRegistry:d}}function Jn(r,n){if(typeof r=="string")return r;if(r){let s,o;if(Array.isArray(r)){for(s=0;s0)return(C=Jn(c[T],b))?C.replace("*",v.substring(T.length-1)):wn(o,v,1)}return wn(o,v)}}var gS=Array.isArray,qo=JSON.stringify,Sf=Object.getOwnPropertyNames,zo=(r,n)=>Object.prototype.hasOwnProperty.call(r,n),sf=(r,n)=>RegExp.prototype.exec.call(r,n),of=(r,...n)=>RegExp.prototype[Symbol.replace].apply(r,n),Ho=(r,...n)=>String.prototype.endsWith.apply(r,n),yS=(r,...n)=>String.prototype.includes.apply(r,n),PS=(r,...n)=>String.prototype.lastIndexOf.apply(r,n),Jo=(r,...n)=>String.prototype.indexOf.apply(r,n),wS=(r,...n)=>String.prototype.replace.apply(r,n),bi=(r,...n)=>String.prototype.slice.apply(r,n),Sn=(r,...n)=>String.prototype.startsWith.apply(r,n),SS=Map,vS=JSON.parse;function Ri(r,n,s){return class extends s{constructor(...o){super(n(...o)),this.code=r,this.name=`${s.name} [${r}]`}}}var ES=Ri("ERR_PACKAGE_IMPORT_NOT_DEFINED",(r,n,s)=>`Package import specifier "${r}" is not defined${n?` in package ${n}package.json`:""} imported from ${s}`,TypeError),vf=Ri("ERR_INVALID_MODULE_SPECIFIER",(r,n,s=void 0)=>`Invalid module "${r}" ${n}${s?` imported from ${s}`:""}`,TypeError),bS=Ri("ERR_INVALID_PACKAGE_TARGET",(r,n,s,o=!1,c=void 0)=>{let h=typeof s=="string"&&!o&&s.length&&!Sn(s,"./");return n==="."?(W0.default(o===!1),`Invalid "exports" main target ${qo(s)} defined in the package config ${r}package.json${c?` imported from ${c}`:""}${h?'; targets must start with "./"':""}`):`Invalid "${o?"imports":"exports"}" target ${qo(s)} defined for '${n}' in the package config ${r}package.json${c?` imported from ${c}`:""}${h?'; targets must start with "./"':""}`},Error),Ef=Ri("ERR_INVALID_PACKAGE_CONFIG",(r,n,s)=>`Invalid package config ${r}${n?` while importing ${n}`:""}${s?`. ${s}`:""}`,Error);function xS(r,n){let s=Object.create(null);for(let o=0;on):r+n}mr(s,r,o,d,c)}sf(af,bi(r,2))!==null&&mr(s,r,o,d,c);let w=new URL(r,o),v=w.pathname,b=new URL(".",o).pathname;if(Sn(v,b)||mr(s,r,o,d,c),n==="")return w;if(sf(af,n)!==null){let T=h?wS(s,"*",()=>n):s+n;LS(T,o,d,c)}return h?new URL(of(uf,w.href,()=>n)):new URL(n,w)}function FS(r){let n=+r;return`${n}`!==r?!1:n>=0&&n<4294967295}function Li(r,n,s,o,c,h,d,P){if(typeof n=="string")return IS(n,s,o,r,c,h,d);if(gS(n)){if(n.length===0)return null;let w;for(let v=0;vh?-1:h>c||s===-1?1:o===-1||r.length>n.length?-1:n.length>r.length?1:0}function CS({name:r,base:n,conditions:s,readFileSyncFn:o}){if(r==="#"||Sn(r,"#/")||Ho(r,"/")){let d="is not a valid internal imports specifier name";throw new vf(r,d,et.fileURLToPath(n))}let c,h=AS(n,o);if(h.exists){c=et.pathToFileURL(h.pjsonPath);let d=h.imports;if(d)if(zo(d,r)&&!yS(r,"*")){let P=Li(c,d[r],"",r,n,!1,!0,s);if(P!=null)return P}else{let P="",w,v=Sf(d);for(let b=0;b=T.length&&Ho(r,G)&&RS(P,T)===1&&PS(T,"*")===C&&(P=T,w=bi(r,C,r.length-G.length))}}if(P){let b=d[P],T=Li(c,b,w,P,n,!0,!0,s);if(T!=null)return T}}}kS(r,c,n)}var Ie=(r=>(r.API_ERROR="API_ERROR",r.BUILTIN_NODE_RESOLUTION_FAILED="BUILTIN_NODE_RESOLUTION_FAILED",r.EXPORTS_RESOLUTION_FAILED="EXPORTS_RESOLUTION_FAILED",r.MISSING_DEPENDENCY="MISSING_DEPENDENCY",r.MISSING_PEER_DEPENDENCY="MISSING_PEER_DEPENDENCY",r.QUALIFIED_PATH_RESOLUTION_FAILED="QUALIFIED_PATH_RESOLUTION_FAILED",r.INTERNAL="INTERNAL",r.UNDECLARED_DEPENDENCY="UNDECLARED_DEPENDENCY",r.UNSUPPORTED="UNSUPPORTED",r))(Ie||{}),DS=new Set(["BUILTIN_NODE_RESOLUTION_FAILED","MISSING_DEPENDENCY","MISSING_PEER_DEPENDENCY","QUALIFIED_PATH_RESOLUTION_FAILED","UNDECLARED_DEPENDENCY"]);function Ce(r,n,s={},o){o??(o=DS.has(r)?"MODULE_NOT_FOUND":r);let c={configurable:!0,writable:!0,enumerable:!1};return Object.defineProperties(new Error(n),{code:{...c,value:o},pnpCode:{...c,value:r},data:{...c,value:s}})}function Bt(r){return I.normalize(I.fromPortablePath(r))}var BS=new Set(dr.Module.builtinModules||Object.keys(process.binding("natives"))),Bo=r=>r.startsWith("node:")||BS.has(r);function bf(r,n){let s=Number(process.env.PNP_ALWAYS_WARN_ON_FALLBACK)>0,o=Number(process.env.PNP_DEBUG_LEVEL),c=/^(?![a-zA-Z]:[\\/]|\\\\|\.{0,2}(?:\/|$))((?:node:)?(?:@[^/]+\/)?[^/]+)\/*(.*|)$/,h=/^(\/|\.{1,2}(\/|$))/,d=/\/$/,P=/^\.{0,2}\//,w={name:null,reference:null},v=[],b=new Set;if(r.enableTopLevelFallback===!0&&v.push(w),n.compatibilityMode!==!1)for(let L of["react-scripts","gatsby"]){let x=r.packageRegistry.get(L);if(x)for(let O of x.keys()){if(O===null)throw new Error("Assertion failed: This reference shouldn't be null");v.push({name:L,reference:O})}}let{ignorePattern:T,packageRegistry:C,packageLocatorsByLocations:G}=r;function N(L,x){return{fn:L,args:x,error:null,result:null}}function Q(L){var x,O,F,D;let _=((O=(x=process.stderr)==null?void 0:x.hasColors)==null?void 0:O.call(x))??process.stdout.isTTY,K=($,Ne)=>`\x1B[${$}m${Ne}\x1B[0m`,W=L.error;console.error(W?K("31;1",`\u2716 ${(F=L.error)==null?void 0:F.message.replace(/\n.*/s,"")}`):K("33;1","\u203C Resolution")),L.args.length>0&&console.error();for(let $ of L.args)console.error(` ${K("37;1","In \u2190")} ${nf.inspect($,{colors:_,compact:!0})}`);L.result&&(console.error(),console.error(` ${K("37;1","Out \u2192")} ${nf.inspect(L.result,{colors:_,compact:!0})}`));let Pe=((D=new Error().stack.match(/(?<=^ +)at.*/gm))==null?void 0:D.slice(2))??[];if(Pe.length>0){console.error();for(let $ of Pe)console.error(` ${K("38;5;244",$)}`)}console.error()}function le(L,x){if(n.allowDebug===!1)return x;if(Number.isFinite(o)){if(o>=2)return(...O)=>{let F=N(L,O);try{return F.result=x(...O)}catch(D){throw F.error=D}finally{Q(F)}};if(o>=1)return(...O)=>{try{return x(...O)}catch(F){let D=N(L,O);throw D.error=F,Q(D),F}}}return x}function z(L){let x=ft(L);if(!x)throw Ce(Ie.INTERNAL,"Couldn't find a matching entry in the dependency tree for the specified parent (this is probably an internal error)");return x}function fe(L){if(L.name===null)return!0;for(let x of r.dependencyTreeRoots)if(x.name===L.name&&x.reference===L.reference)return!0;return!1}let me=new Set(["default","node","require"]);function xe(L,x=me){let O=tt(V.join(L,"internal.js"),{resolveIgnored:!0,includeDiscardFromLookup:!0});if(O===null)throw Ce(Ie.INTERNAL,`The locator that owns the "${L}" path can't be found inside the dependency tree (this is probably an internal error)`);let{packageLocation:F}=z(O),D=V.join(F,Ai.manifest);if(!n.fakeFs.existsSync(D))return null;let _=JSON.parse(n.fakeFs.readFileSync(D,"utf8")),K=V.contains(F,L);if(K===null)throw Ce(Ie.INTERNAL,"unqualifiedPath doesn't contain the packageLocation (this is probably an internal error)");P.test(K)||(K=`./${K}`);let W;try{W=mS(_,V.normalize(K),{conditions:x,unsafe:!0})}catch(Pe){throw Ce(Ie.EXPORTS_RESOLUTION_FAILED,Pe.message,{unqualifiedPath:Bt(L),locator:O,pkgJson:_,subpath:Bt(K),conditions:x},"ERR_PACKAGE_PATH_NOT_EXPORTED")}return typeof W=="string"?V.join(F,W):null}function j(L,x,{extensions:O}){let F;try{x.push(L),F=n.fakeFs.statSync(L)}catch{}if(F&&!F.isDirectory())return n.fakeFs.realpathSync(L);if(F&&F.isDirectory()){let D;try{D=JSON.parse(n.fakeFs.readFileSync(V.join(L,Ai.manifest),"utf8"))}catch{}let _;if(D&&D.main&&(_=V.resolve(L,D.main)),_&&_!==L){let K=j(_,x,{extensions:O});if(K!==null)return K}}for(let D=0,_=O.length;D<_;D++){let K=`${L}${O[D]}`;if(x.push(K),n.fakeFs.existsSync(K))return K}if(F&&F.isDirectory())for(let D=0,_=O.length;D<_;D++){let K=V.format({dir:L,name:"index",ext:O[D]});if(x.push(K),n.fakeFs.existsSync(K))return K}return null}function We(L){let x=new dr.Module(L,null);return x.filename=L,x.paths=dr.Module._nodeModulePaths(L),x}function ye(L,x){return x.endsWith("/")&&(x=V.join(x,"internal.js")),dr.Module._resolveFilename(I.fromPortablePath(L),We(I.fromPortablePath(x)),!1,{plugnplay:!1})}function ct(L){if(T===null)return!1;let x=V.contains(r.basePath,L);return x===null?!1:!!T.test(x.replace(/\/$/,""))}let bt={std:3,resolveVirtual:1,getAllLocators:1},lt=w;function ft({name:L,reference:x}){let O=C.get(L);if(!O)return null;let F=O.get(x);return F||null}function zt({name:L,reference:x}){let O=[];for(let[F,D]of C)if(F!==null)for(let[_,K]of D)_===null||K.packageDependencies.get(L)!==x||F===L&&_===x||O.push({name:F,reference:_});return O}function xt(L,x){let O=new Map,F=new Set,D=K=>{let W=JSON.stringify(K.name);if(F.has(W))return;F.add(W);let Pe=zt(K);for(let $ of Pe)if(z($).packagePeers.has(L))D($);else{let Te=O.get($.name);typeof Te>"u"&&O.set($.name,Te=new Set),Te.add($.reference)}};D(x);let _=[];for(let K of[...O.keys()].sort())for(let W of[...O.get(K)].sort())_.push({name:K,reference:W});return _}function tt(L,{resolveIgnored:x=!1,includeDiscardFromLookup:O=!1}={}){if(ct(L)&&!x)return null;let F=V.relative(r.basePath,L);F.match(h)||(F=`./${F}`),F.endsWith("/")||(F=`${F}/`);do{let D=G.get(F);if(typeof D>"u"||D.discardFromLookup&&!O){F=F.substring(0,F.lastIndexOf("/",F.length-2)+1);continue}return D.locator}while(F!=="");return null}function ht(L){try{return n.fakeFs.readFileSync(I.toPortablePath(L),"utf8")}catch(x){if(x.code==="ENOENT")return;throw x}}function nt(L,x,{considerBuiltins:O=!0}={}){if(L.startsWith("#"))throw new Error("resolveToUnqualified can not handle private import mappings");if(L==="pnpapi")return I.toPortablePath(n.pnpapiResolution);if(O&&Bo(L))return null;let F=Bt(L),D=x&&Bt(x);if(x&&ct(x)&&(!V.isAbsolute(L)||tt(L)===null)){let W=ye(L,x);if(W===!1)throw Ce(Ie.BUILTIN_NODE_RESOLUTION_FAILED,`The builtin node resolution algorithm was unable to resolve the requested module (it didn't go through the pnp resolver because the issuer was explicitely ignored by the regexp) -Require request: "${u}" -Required by: ${y} -`,{request:u,issuer:y});return m.toPortablePath(k)}let T,w=p.match(s);if(w){if(!d)throw O(N.API_ERROR,"The resolveToUnqualified function must be called with a valid issuer when the path isn't a builtin nor absolute",{request:u,issuer:y});let[,k,R]=w,I=Q(d);if(!I){let H=ie(p,d);if(H===!1)throw O(N.BUILTIN_NODE_RESOLUTION_FAILED,`The builtin node resolution algorithm was unable to resolve the requested module (it didn't go through the pnp resolver because the issuer doesn't seem to be part of the Yarn-managed dependency tree). +Require request: "${F}" +Required by: ${D} +`,{request:F,issuer:D});return I.toPortablePath(W)}let _,K=L.match(c);if(K){if(!x)throw Ce(Ie.API_ERROR,"The resolveToUnqualified function must be called with a valid issuer when the path isn't a builtin nor absolute",{request:F,issuer:D});let[,W,Pe]=K,$=tt(x);if(!$){let he=ye(L,x);if(he===!1)throw Ce(Ie.BUILTIN_NODE_RESOLUTION_FAILED,`The builtin node resolution algorithm was unable to resolve the requested module (it didn't go through the pnp resolver because the issuer doesn't seem to be part of the Yarn-managed dependency tree). -Require path: "${u}" -Required by: ${y} -`,{request:u,issuer:y});return m.toPortablePath(H)}let q=L(I).packageDependencies.get(k),Ie=null;if(q==null&&I.name!==null){let H=r.fallbackExclusionList.get(I.name);if(!H||!H.has(I.reference)){for(let Se=0,Ps=f.length;SeB(le))?V=O(N.MISSING_PEER_DEPENDENCY,`${I.name} tried to access ${k} (a peer dependency) but it isn't provided by your application; this makes the require call ambiguous and unsound. +Required package: ${W}${W!==F?` (via "${F}")`:""} +Required by: ${D} +`,{request:F,issuer:D,dependencyName:W});else{let he=xt(W,$);he.every(Ze=>fe(Ze))?Ee=Ce(Ie.MISSING_PEER_DEPENDENCY,`${$.name} tried to access ${W} (a peer dependency) but it isn't provided by your application; this makes the require call ambiguous and unsound. -Required package: ${k}${k!==u?` (via "${u}")`:""} -Required by: ${I.name}@${I.reference} (via ${y}) -${H.map(le=>`Ancestor breaking the chain: ${le.name}@${le.reference} +Required package: ${W}${W!==F?` (via "${F}")`:""} +Required by: ${$.name}@${$.reference} (via ${D}) +${he.map(Ze=>`Ancestor breaking the chain: ${Ze.name}@${Ze.reference} `).join("")} -`,{request:u,issuer:y,issuerLocator:Object.assign({},I),dependencyName:k,brokenAncestors:H}):V=O(N.MISSING_PEER_DEPENDENCY,`${I.name} tried to access ${k} (a peer dependency) but it isn't provided by its ancestors; this makes the require call ambiguous and unsound. +`,{request:F,issuer:D,issuerLocator:Object.assign({},$),dependencyName:W,brokenAncestors:he}):Ee=Ce(Ie.MISSING_PEER_DEPENDENCY,`${$.name} tried to access ${W} (a peer dependency) but it isn't provided by its ancestors; this makes the require call ambiguous and unsound. -Required package: ${k}${k!==u?` (via "${u}")`:""} -Required by: ${I.name}@${I.reference} (via ${y}) +Required package: ${W}${W!==F?` (via "${F}")`:""} +Required by: ${$.name}@${$.reference} (via ${D}) -${H.map(le=>`Ancestor breaking the chain: ${le.name}@${le.reference} +${he.map(Ze=>`Ancestor breaking the chain: ${Ze.name}@${Ze.reference} `).join("")} -`,{request:u,issuer:y,issuerLocator:Object.assign({},I),dependencyName:k,brokenAncestors:H})}else q===void 0&&(!E&&Ht(p)?B(I)?V=O(N.UNDECLARED_DEPENDENCY,`Your application tried to access ${k}. While this module is usually interpreted as a Node builtin, your resolver is running inside a non-Node resolution context where such builtins are ignored. Since ${k} isn't otherwise declared in your dependencies, this makes the require call ambiguous and unsound. - -Required package: ${k}${k!==u?` (via "${u}")`:""} -Required by: ${y} -`,{request:u,issuer:y,dependencyName:k}):V=O(N.UNDECLARED_DEPENDENCY,`${I.name} tried to access ${k}. While this module is usually interpreted as a Node builtin, your resolver is running inside a non-Node resolution context where such builtins are ignored. Since ${k} isn't otherwise declared in ${I.name}'s dependencies, this makes the require call ambiguous and unsound. - -Required package: ${k}${k!==u?` (via "${u}")`:""} -Required by: ${y} -`,{request:u,issuer:y,issuerLocator:Object.assign({},I),dependencyName:k}):B(I)?V=O(N.UNDECLARED_DEPENDENCY,`Your application tried to access ${k}, but it isn't declared in your dependencies; this makes the require call ambiguous and unsound. - -Required package: ${k}${k!==u?` (via "${u}")`:""} -Required by: ${y} -`,{request:u,issuer:y,dependencyName:k}):V=O(N.UNDECLARED_DEPENDENCY,`${I.name} tried to access ${k}, but it isn't declared in its dependencies; this makes the require call ambiguous and unsound. +`,{request:F,issuer:D,issuerLocator:Object.assign({},$),dependencyName:W,brokenAncestors:he})}else Te===void 0&&(!O&&Bo(L)?fe($)?Ee=Ce(Ie.UNDECLARED_DEPENDENCY,`Your application tried to access ${W}. While this module is usually interpreted as a Node builtin, your resolver is running inside a non-Node resolution context where such builtins are ignored. Since ${W} isn't otherwise declared in your dependencies, this makes the require call ambiguous and unsound. + +Required package: ${W}${W!==F?` (via "${F}")`:""} +Required by: ${D} +`,{request:F,issuer:D,dependencyName:W}):Ee=Ce(Ie.UNDECLARED_DEPENDENCY,`${$.name} tried to access ${W}. While this module is usually interpreted as a Node builtin, your resolver is running inside a non-Node resolution context where such builtins are ignored. Since ${W} isn't otherwise declared in ${$.name}'s dependencies, this makes the require call ambiguous and unsound. + +Required package: ${W}${W!==F?` (via "${F}")`:""} +Required by: ${D} +`,{request:F,issuer:D,issuerLocator:Object.assign({},$),dependencyName:W}):fe($)?Ee=Ce(Ie.UNDECLARED_DEPENDENCY,`Your application tried to access ${W}, but it isn't declared in your dependencies; this makes the require call ambiguous and unsound. + +Required package: ${W}${W!==F?` (via "${F}")`:""} +Required by: ${D} +`,{request:F,issuer:D,dependencyName:W}):Ee=Ce(Ie.UNDECLARED_DEPENDENCY,`${$.name} tried to access ${W}, but it isn't declared in its dependencies; this makes the require call ambiguous and unsound. + +Required package: ${W}${W!==F?` (via "${F}")`:""} +Required by: ${$.name}@${$.reference} (via ${D}) +`,{request:F,issuer:D,issuerLocator:Object.assign({},$),dependencyName:W}));if(Te==null){if(an===null||Ee===null)throw Ee||new Error("Assertion failed: Expected an error to have been set");Te=an;let he=Ee.message.replace(/\n.*/g,"");Ee.message=he,!b.has(he)&&o!==0&&(b.add(he),process.emitWarning(Ee))}let Xt=Array.isArray(Te)?{name:Te[0],reference:Te[1]}:{name:W,reference:Te},br=z(Xt);if(!br.packageLocation)throw Ce(Ie.MISSING_DEPENDENCY,`A dependency seems valid but didn't get installed for some reason. This might be caused by a partial install, such as dev vs prod. + +Required package: ${Xt.name}@${Xt.reference}${Xt.name!==F?` (via "${F}")`:""} +Required by: ${$.name}@${$.reference} (via ${D}) +`,{request:F,issuer:D,dependencyLocator:Object.assign({},Xt)});let Zt=br.packageLocation;Pe?_=V.join(Zt,Pe):_=Zt}else if(V.isAbsolute(L))_=V.normalize(L);else{if(!x)throw Ce(Ie.API_ERROR,"The resolveToUnqualified function must be called with a valid issuer when the path isn't a builtin nor absolute",{request:F,issuer:D});let W=V.resolve(x);x.match(d)?_=V.normalize(V.join(W,L)):_=V.normalize(V.join(V.dirname(W),L))}return V.normalize(_)}function Ot(L,x,O=me){if(h.test(L))return x;let F=xe(x,O);return F?V.normalize(F):x}function Xe(L,{extensions:x=Object.keys(dr.Module._extensions)}={}){let O=[],F=j(L,O,{extensions:x});if(F)return V.normalize(F);{let D=Bt(L),_=tt(L);if(_){let{packageLocation:K}=z(_),W=!0;try{n.fakeFs.accessSync(K)}catch(Pe){if((Pe==null?void 0:Pe.code)==="ENOENT")W=!1;else{let $=((Pe==null?void 0:Pe.message)??Pe??"empty exception thrown").replace(/^[A-Z]/,Ne=>Ne.toLowerCase());throw Ce(Ie.QUALIFIED_PATH_RESOLUTION_FAILED,`Required package exists but could not be accessed (${$}). + +Missing package: ${_.name}@${_.reference} +Expected package location: ${Bt(K)} +`,{unqualifiedPath:D,extensions:x})}}if(!W){let Pe=K.includes("/unplugged/")?"Required unplugged package missing from disk. This may happen when switching branches without running installs (unplugged packages must be fully materialized on disk to work).":"Required package missing from disk. If you keep your packages inside your repository then restarting the Node process may be enough. Otherwise, try to run an install first.";throw Ce(Ie.QUALIFIED_PATH_RESOLUTION_FAILED,`${Pe} + +Missing package: ${_.name}@${_.reference} +Expected package location: ${Bt(K)} +`,{unqualifiedPath:D,extensions:x})}}throw Ce(Ie.QUALIFIED_PATH_RESOLUTION_FAILED,`Qualified path resolution failed: we looked for the following paths, but none could be accessed. + +Source path: ${D} +${O.map(K=>`Not found: ${Bt(K)} +`).join("")}`,{unqualifiedPath:D,extensions:x})}}function qe(L,x,O){if(!x)throw new Error("Assertion failed: An issuer is required to resolve private import mappings");let F=CS({name:L,base:et.pathToFileURL(I.fromPortablePath(x)),conditions:O.conditions??me,readFileSyncFn:ht});if(F instanceof URL)return Xe(I.toPortablePath(et.fileURLToPath(F)),{extensions:O.extensions});if(F.startsWith("#"))throw new Error("Mapping from one private import to another isn't allowed");return Er(F,x,O)}function Er(L,x,O={}){try{if(L.startsWith("#"))return qe(L,x,O);let{considerBuiltins:F,extensions:D,conditions:_}=O,K=nt(L,x,{considerBuiltins:F});if(L==="pnpapi")return K;if(K===null)return null;let W=()=>x!==null?ct(x):!1,Pe=(!F||!Bo(L))&&!W()?Ot(L,K,_):K;return Xe(Pe,{extensions:D})}catch(F){throw Object.prototype.hasOwnProperty.call(F,"pnpCode")&&Object.assign(F.data,{request:Bt(L),issuer:x&&Bt(x)}),F}}function Ni(L){let x=V.normalize(L),O=Mt.resolveVirtual(x);return O!==x?O:null}return{VERSIONS:bt,topLevel:lt,getLocator:(L,x)=>Array.isArray(x)?{name:x[0],reference:x[1]}:{name:L,reference:x},getDependencyTreeRoots:()=>[...r.dependencyTreeRoots],getAllLocators(){let L=[];for(let[x,O]of C)for(let F of O.keys())x!==null&&F!==null&&L.push({name:x,reference:F});return L},getPackageInformation:L=>{let x=ft(L);if(x===null)return null;let O=I.fromPortablePath(x.packageLocation);return{...x,packageLocation:O}},findPackageLocator:L=>tt(I.toPortablePath(L)),resolveToUnqualified:le("resolveToUnqualified",(L,x,O)=>{let F=x!==null?I.toPortablePath(x):null,D=nt(I.toPortablePath(L),F,O);return D===null?null:I.fromPortablePath(D)}),resolveUnqualified:le("resolveUnqualified",(L,x)=>I.fromPortablePath(Xe(I.toPortablePath(L),x))),resolveRequest:le("resolveRequest",(L,x,O)=>{let F=x!==null?I.toPortablePath(x):null,D=Er(I.toPortablePath(L),F,O);return D===null?null:I.fromPortablePath(D)}),resolveVirtual:le("resolveVirtual",L=>{let x=Ni(I.toPortablePath(L));return x!==null?I.fromPortablePath(x):null})}}async function MS(r,{fakeFs:n,pnpapiResolution:s}){let o=await n.readFilePromise(r,"utf8");return xf(o,{basePath:cf.dirname(r),fakeFs:n,pnpapiResolution:s})}function xf(r,{basePath:n,fakeFs:s,pnpapiResolution:o}){let c=JSON.parse(r),h=wf(c,{basePath:n});return bf(h,{compatibilityMode:!0,fakeFs:s,pnpapiResolution:o})}var OS=(r,n,s)=>{let o=Ko(r),c=wf(o,{basePath:n}),h=I.join(n,Ai.pnpCjs);return bf(c,{fakeFs:s,pnpapiResolution:h})},Mo,WS=()=>(typeof Mo>"u"&&(Mo=lf.default.brotliDecompressSync(Buffer.from("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","base64")).toString()),Mo);Ft.LinkType=ff;Ft.generateInlinedScript=hS;Ft.generateLoader=Qo;Ft.generatePrettyJson=Pf;Ft.generateSplitScript=pS;Ft.getESMLoaderTemplate=WS;Ft.hydratePnpFile=MS;Ft.hydratePnpSource=xf;Ft.makeRuntimeApi=OS});var Af=Le((Yn,yr)=>{(function(){var r,n="4.17.21",s=200,o="Unsupported core-js use. Try https://npms.io/search?q=ponyfill.",c="Expected a function",h="Invalid `variable` option passed into `_.template`",d="__lodash_hash_undefined__",P=500,w="__lodash_placeholder__",v=1,b=2,T=4,C=1,G=2,N=1,Q=2,le=4,z=8,fe=16,me=32,xe=64,j=128,We=256,ye=512,ct=30,bt="...",lt=800,ft=16,zt=1,xt=2,tt=3,ht=1/0,nt=9007199254740991,Ot=17976931348623157e292,Xe=0/0,qe=4294967295,Er=qe-1,Ni=qe>>>1,L=[["ary",j],["bind",N],["bindKey",Q],["curry",z],["curryRight",fe],["flip",ye],["partial",me],["partialRight",xe],["rearg",We]],x="[object Arguments]",O="[object Array]",F="[object AsyncFunction]",D="[object Boolean]",_="[object Date]",K="[object DOMException]",W="[object Error]",Pe="[object Function]",$="[object GeneratorFunction]",Ne="[object Map]",Te="[object Number]",an="[object Null]",Ee="[object Object]",Xt="[object Promise]",br="[object Proxy]",Zt="[object RegExp]",he="[object Set]",Ze="[object String]",Tt="[object Symbol]",Ui="[object Undefined]",En="[object WeakMap]",Kn="[object WeakSet]",Qn="[object ArrayBuffer]",bn="[object DataView]",Gi="[object Float32Array]",qi="[object Float64Array]",Hi="[object Int8Array]",Ji="[object Int16Array]",Yi="[object Int32Array]",Ki="[object Uint8Array]",Qi="[object Uint8ClampedArray]",zi="[object Uint16Array]",Xi="[object Uint32Array]",Wf=/\b__p \+= '';/g,Nf=/\b(__p \+=) '' \+/g,Uf=/(__e\(.*?\)|\b__t\)) \+\n'';/g,jo=/&(?:amp|lt|gt|quot|#39);/g,_o=/[&<>"']/g,Gf=RegExp(jo.source),qf=RegExp(_o.source),Hf=/<%-([\s\S]+?)%>/g,Jf=/<%([\s\S]+?)%>/g,$o=/<%=([\s\S]+?)%>/g,Yf=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Kf=/^\w*$/,Qf=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Zi=/[\\^$.*+?()[\]{}|]/g,zf=RegExp(Zi.source),Vi=/^\s+/,Xf=/\s/,Zf=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,Vf=/\{\n\/\* \[wrapped with (.+)\] \*/,jf=/,? & /,_f=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,$f=/[()=,{}\[\]\/\s]/,eh=/\\(\\)?/g,th=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,ea=/\w*$/,nh=/^[-+]0x[0-9a-f]+$/i,rh=/^0b[01]+$/i,ih=/^\[object .+?Constructor\]$/,sh=/^0o[0-7]+$/i,oh=/^(?:0|[1-9]\d*)$/,ah=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,xr=/($^)/,uh=/['\n\r\u2028\u2029\\]/g,Tr="\\ud800-\\udfff",ch="\\u0300-\\u036f",lh="\\ufe20-\\ufe2f",fh="\\u20d0-\\u20ff",ta=ch+lh+fh,na="\\u2700-\\u27bf",ra="a-z\\xdf-\\xf6\\xf8-\\xff",hh="\\xac\\xb1\\xd7\\xf7",ph="\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf",dh="\\u2000-\\u206f",mh=" \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",ia="A-Z\\xc0-\\xd6\\xd8-\\xde",sa="\\ufe0e\\ufe0f",oa=hh+ph+dh+mh,ji="['\u2019]",gh="["+Tr+"]",aa="["+oa+"]",Ar="["+ta+"]",ua="\\d+",yh="["+na+"]",ca="["+ra+"]",la="[^"+Tr+oa+ua+na+ra+ia+"]",_i="\\ud83c[\\udffb-\\udfff]",Ph="(?:"+Ar+"|"+_i+")",fa="[^"+Tr+"]",$i="(?:\\ud83c[\\udde6-\\uddff]){2}",es="[\\ud800-\\udbff][\\udc00-\\udfff]",xn="["+ia+"]",ha="\\u200d",pa="(?:"+ca+"|"+la+")",wh="(?:"+xn+"|"+la+")",da="(?:"+ji+"(?:d|ll|m|re|s|t|ve))?",ma="(?:"+ji+"(?:D|LL|M|RE|S|T|VE))?",ga=Ph+"?",ya="["+sa+"]?",Sh="(?:"+ha+"(?:"+[fa,$i,es].join("|")+")"+ya+ga+")*",vh="\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",Eh="\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])",Pa=ya+ga+Sh,bh="(?:"+[yh,$i,es].join("|")+")"+Pa,xh="(?:"+[fa+Ar+"?",Ar,$i,es,gh].join("|")+")",Th=RegExp(ji,"g"),Ah=RegExp(Ar,"g"),ts=RegExp(_i+"(?="+_i+")|"+xh+Pa,"g"),kh=RegExp([xn+"?"+ca+"+"+da+"(?="+[aa,xn,"$"].join("|")+")",wh+"+"+ma+"(?="+[aa,xn+pa,"$"].join("|")+")",xn+"?"+pa+"+"+da,xn+"+"+ma,Eh,vh,ua,bh].join("|"),"g"),Lh=RegExp("["+ha+Tr+ta+sa+"]"),Ih=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,Fh=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],Rh=-1,ge={};ge[Gi]=ge[qi]=ge[Hi]=ge[Ji]=ge[Yi]=ge[Ki]=ge[Qi]=ge[zi]=ge[Xi]=!0,ge[x]=ge[O]=ge[Qn]=ge[D]=ge[bn]=ge[_]=ge[W]=ge[Pe]=ge[Ne]=ge[Te]=ge[Ee]=ge[Zt]=ge[he]=ge[Ze]=ge[En]=!1;var de={};de[x]=de[O]=de[Qn]=de[bn]=de[D]=de[_]=de[Gi]=de[qi]=de[Hi]=de[Ji]=de[Yi]=de[Ne]=de[Te]=de[Ee]=de[Zt]=de[he]=de[Ze]=de[Tt]=de[Ki]=de[Qi]=de[zi]=de[Xi]=!0,de[W]=de[Pe]=de[En]=!1;var Ch={\u00C0:"A",\u00C1:"A",\u00C2:"A",\u00C3:"A",\u00C4:"A",\u00C5:"A",\u00E0:"a",\u00E1:"a",\u00E2:"a",\u00E3:"a",\u00E4:"a",\u00E5:"a",\u00C7:"C",\u00E7:"c",\u00D0:"D",\u00F0:"d",\u00C8:"E",\u00C9:"E",\u00CA:"E",\u00CB:"E",\u00E8:"e",\u00E9:"e",\u00EA:"e",\u00EB:"e",\u00CC:"I",\u00CD:"I",\u00CE:"I",\u00CF:"I",\u00EC:"i",\u00ED:"i",\u00EE:"i",\u00EF:"i",\u00D1:"N",\u00F1:"n",\u00D2:"O",\u00D3:"O",\u00D4:"O",\u00D5:"O",\u00D6:"O",\u00D8:"O",\u00F2:"o",\u00F3:"o",\u00F4:"o",\u00F5:"o",\u00F6:"o",\u00F8:"o",\u00D9:"U",\u00DA:"U",\u00DB:"U",\u00DC:"U",\u00F9:"u",\u00FA:"u",\u00FB:"u",\u00FC:"u",\u00DD:"Y",\u00FD:"y",\u00FF:"y",\u00C6:"Ae",\u00E6:"ae",\u00DE:"Th",\u00FE:"th",\u00DF:"ss",\u0100:"A",\u0102:"A",\u0104:"A",\u0101:"a",\u0103:"a",\u0105:"a",\u0106:"C",\u0108:"C",\u010A:"C",\u010C:"C",\u0107:"c",\u0109:"c",\u010B:"c",\u010D:"c",\u010E:"D",\u0110:"D",\u010F:"d",\u0111:"d",\u0112:"E",\u0114:"E",\u0116:"E",\u0118:"E",\u011A:"E",\u0113:"e",\u0115:"e",\u0117:"e",\u0119:"e",\u011B:"e",\u011C:"G",\u011E:"G",\u0120:"G",\u0122:"G",\u011D:"g",\u011F:"g",\u0121:"g",\u0123:"g",\u0124:"H",\u0126:"H",\u0125:"h",\u0127:"h",\u0128:"I",\u012A:"I",\u012C:"I",\u012E:"I",\u0130:"I",\u0129:"i",\u012B:"i",\u012D:"i",\u012F:"i",\u0131:"i",\u0134:"J",\u0135:"j",\u0136:"K",\u0137:"k",\u0138:"k",\u0139:"L",\u013B:"L",\u013D:"L",\u013F:"L",\u0141:"L",\u013A:"l",\u013C:"l",\u013E:"l",\u0140:"l",\u0142:"l",\u0143:"N",\u0145:"N",\u0147:"N",\u014A:"N",\u0144:"n",\u0146:"n",\u0148:"n",\u014B:"n",\u014C:"O",\u014E:"O",\u0150:"O",\u014D:"o",\u014F:"o",\u0151:"o",\u0154:"R",\u0156:"R",\u0158:"R",\u0155:"r",\u0157:"r",\u0159:"r",\u015A:"S",\u015C:"S",\u015E:"S",\u0160:"S",\u015B:"s",\u015D:"s",\u015F:"s",\u0161:"s",\u0162:"T",\u0164:"T",\u0166:"T",\u0163:"t",\u0165:"t",\u0167:"t",\u0168:"U",\u016A:"U",\u016C:"U",\u016E:"U",\u0170:"U",\u0172:"U",\u0169:"u",\u016B:"u",\u016D:"u",\u016F:"u",\u0171:"u",\u0173:"u",\u0174:"W",\u0175:"w",\u0176:"Y",\u0177:"y",\u0178:"Y",\u0179:"Z",\u017B:"Z",\u017D:"Z",\u017A:"z",\u017C:"z",\u017E:"z",\u0132:"IJ",\u0133:"ij",\u0152:"Oe",\u0153:"oe",\u0149:"'n",\u017F:"s"},Dh={"&":"&","<":"<",">":">",'"':""","'":"'"},Bh={"&":"&","<":"<",">":">",""":'"',"'":"'"},Mh={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},Oh=parseFloat,Wh=parseInt,wa=typeof global=="object"&&global&&global.Object===Object&&global,Nh=typeof self=="object"&&self&&self.Object===Object&&self,De=wa||Nh||Function("return this")(),ns=typeof Yn=="object"&&Yn&&!Yn.nodeType&&Yn,un=ns&&typeof yr=="object"&&yr&&!yr.nodeType&&yr,Sa=un&&un.exports===ns,rs=Sa&&wa.process,pt=function(){try{var g=un&&un.require&&un.require("util").types;return g||rs&&rs.binding&&rs.binding("util")}catch{}}(),va=pt&&pt.isArrayBuffer,Ea=pt&&pt.isDate,ba=pt&&pt.isMap,xa=pt&&pt.isRegExp,Ta=pt&&pt.isSet,Aa=pt&&pt.isTypedArray;function rt(g,E,S){switch(S.length){case 0:return g.call(E);case 1:return g.call(E,S[0]);case 2:return g.call(E,S[0],S[1]);case 3:return g.call(E,S[0],S[1],S[2])}return g.apply(E,S)}function Uh(g,E,S,M){for(var Z=-1,ae=g==null?0:g.length;++Z-1}function is(g,E,S){for(var M=-1,Z=g==null?0:g.length;++M-1;);return S}function Ba(g,E){for(var S=g.length;S--&&Tn(E,g[S],0)>-1;);return S}function Xh(g,E){for(var S=g.length,M=0;S--;)g[S]===E&&++M;return M}var Zh=us(Ch),Vh=us(Dh);function jh(g){return"\\"+Mh[g]}function _h(g,E){return g==null?r:g[E]}function An(g){return Lh.test(g)}function $h(g){return Ih.test(g)}function ep(g){for(var E,S=[];!(E=g.next()).done;)S.push(E.value);return S}function hs(g){var E=-1,S=Array(g.size);return g.forEach(function(M,Z){S[++E]=[Z,M]}),S}function Ma(g,E){return function(S){return g(E(S))}}function _t(g,E){for(var S=-1,M=g.length,Z=0,ae=[];++S-1}function qp(e,t){var i=this.__data__,a=Yr(i,e);return a<0?(++this.size,i.push([e,t])):i[a][1]=t,this}Wt.prototype.clear=Wp,Wt.prototype.delete=Np,Wt.prototype.get=Up,Wt.prototype.has=Gp,Wt.prototype.set=qp;function Nt(e){var t=-1,i=e==null?0:e.length;for(this.clear();++t=t?e:t)),e}function yt(e,t,i,a,u,f){var p,m=t&v,y=t&b,A=t&T;if(i&&(p=u?i(e,a,u,f):i(e)),p!==r)return p;if(!ve(e))return e;var k=ee(e);if(k){if(p=Kd(e),!m)return Ve(e,p)}else{var R=Je(e),B=R==Pe||R==$;if(on(e))return yu(e,m);if(R==Ee||R==x||B&&!u){if(p=y||B?{}:Ou(e),!m)return y?Bd(e,rd(p,e)):Dd(e,za(p,e))}else{if(!de[R])return u?e:{};p=Qd(e,R,m)}}f||(f=new kt);var U=f.get(e);if(U)return U;f.set(e,p),fc(e)?e.forEach(function(Y){p.add(yt(Y,t,i,Y,e,f))}):cc(e)&&e.forEach(function(Y,ie){p.set(ie,yt(Y,t,i,ie,e,f))});var J=A?y?Ns:Ws:y?_e:Be,ne=k?r:J(e);return dt(ne||e,function(Y,ie){ne&&(ie=Y,Y=e[ie]),$n(p,ie,yt(Y,t,i,ie,e,f))}),p}function id(e){var t=Be(e);return function(i){return Xa(i,e,t)}}function Xa(e,t,i){var a=i.length;if(e==null)return!a;for(e=pe(e);a--;){var u=i[a],f=t[u],p=e[u];if(p===r&&!(u in e)||!f(p))return!1}return!0}function Za(e,t,i){if(typeof e!="function")throw new mt(c);return or(function(){e.apply(r,i)},t)}function er(e,t,i,a){var u=-1,f=kr,p=!0,m=e.length,y=[],A=t.length;if(!m)return y;i&&(t=we(t,it(i))),a?(f=is,p=!1):t.length>=s&&(f=zn,p=!1,t=new fn(t));e:for(;++uu?0:u+i),a=a===r||a>u?u:te(a),a<0&&(a+=u),a=i>a?0:pc(a);i0&&i(m)?t>1?Ue(m,t-1,i,a,u):jt(u,m):a||(u[u.length]=m)}return u}var ws=bu(),_a=bu(!0);function Rt(e,t){return e&&ws(e,t,Be)}function Ss(e,t){return e&&_a(e,t,Be)}function Qr(e,t){return Vt(t,function(i){return Jt(e[i])})}function pn(e,t){t=rn(t,e);for(var i=0,a=t.length;e!=null&&it}function ad(e,t){return e!=null&&ce.call(e,t)}function ud(e,t){return e!=null&&t in pe(e)}function cd(e,t,i){return e>=He(t,i)&&e=120&&k.length>=120)?new fn(p&&k):r}k=e[0];var R=-1,B=m[0];e:for(;++R-1;)m!==e&&Wr.call(m,y,1),Wr.call(e,y,1);return e}function cu(e,t){for(var i=e?t.length:0,a=i-1;i--;){var u=t[i];if(i==a||u!==f){var f=u;Ht(u)?Wr.call(e,u,1):Fs(e,u)}}return e}function ks(e,t){return e+Gr(Ja()*(t-e+1))}function Ed(e,t,i,a){for(var u=-1,f=Re(Ur((t-e)/(i||1)),0),p=S(f);f--;)p[a?f:++u]=e,e+=i;return p}function Ls(e,t){var i="";if(!e||t<1||t>nt)return i;do t%2&&(i+=e),t=Gr(t/2),t&&(e+=e);while(t);return i}function re(e,t){return Ks(Uu(e,t,$e),e+"")}function bd(e){return Qa(On(e))}function xd(e,t){var i=On(e);return ri(i,hn(t,0,i.length))}function rr(e,t,i,a){if(!ve(e))return e;t=rn(t,e);for(var u=-1,f=t.length,p=f-1,m=e;m!=null&&++uu?0:u+t),i=i>u?u:i,i<0&&(i+=u),u=t>i?0:i-t>>>0,t>>>=0;for(var f=S(u);++a>>1,p=e[f];p!==null&&!ot(p)&&(i?p<=t:p=s){var A=t?null:Nd(e);if(A)return Ir(A);p=!1,u=zn,y=new fn}else y=t?[]:m;e:for(;++a=a?e:Pt(e,t,i)}var gu=mp||function(e){return De.clearTimeout(e)};function yu(e,t){if(t)return e.slice();var i=e.length,a=Na?Na(i):new e.constructor(i);return e.copy(a),a}function Bs(e){var t=new e.constructor(e.byteLength);return new Mr(t).set(new Mr(e)),t}function Id(e,t){var i=t?Bs(e.buffer):e.buffer;return new e.constructor(i,e.byteOffset,e.byteLength)}function Fd(e){var t=new e.constructor(e.source,ea.exec(e));return t.lastIndex=e.lastIndex,t}function Rd(e){return _n?pe(_n.call(e)):{}}function Pu(e,t){var i=t?Bs(e.buffer):e.buffer;return new e.constructor(i,e.byteOffset,e.length)}function wu(e,t){if(e!==t){var i=e!==r,a=e===null,u=e===e,f=ot(e),p=t!==r,m=t===null,y=t===t,A=ot(t);if(!m&&!A&&!f&&e>t||f&&p&&y&&!m&&!A||a&&p&&y||!i&&y||!u)return 1;if(!a&&!f&&!A&&e=m)return y;var A=i[a];return y*(A=="desc"?-1:1)}}return e.index-t.index}function Su(e,t,i,a){for(var u=-1,f=e.length,p=i.length,m=-1,y=t.length,A=Re(f-p,0),k=S(y+A),R=!a;++m1?i[u-1]:r,p=u>2?i[2]:r;for(f=e.length>3&&typeof f=="function"?(u--,f):r,p&&Ke(i[0],i[1],p)&&(f=u<3?r:f,u=1),t=pe(t);++a-1?u[f?t[p]:p]:r}}function Au(e){return qt(function(t){var i=t.length,a=i,u=gt.prototype.thru;for(e&&t.reverse();a--;){var f=t[a];if(typeof f!="function")throw new mt(c);if(u&&!p&&ti(f)=="wrapper")var p=new gt([],!0)}for(a=p?a:i;++a1&&oe.reverse(),k&&ym))return!1;var A=f.get(e),k=f.get(t);if(A&&k)return A==t&&k==e;var R=-1,B=!0,U=i&G?new fn:r;for(f.set(e,t),f.set(t,e);++R1?"& ":"")+t[a],t=t.join(i>2?", ":" "),e.replace(Zf,`{ +/* [wrapped with `+t+`] */ +`)}function Xd(e){return ee(e)||gn(e)||!!(qa&&e&&e[qa])}function Ht(e,t){var i=typeof e;return t=t??nt,!!t&&(i=="number"||i!="symbol"&&oh.test(e))&&e>-1&&e%1==0&&e0){if(++t>=lt)return arguments[0]}else t=0;return e.apply(r,arguments)}}function ri(e,t){var i=-1,a=e.length,u=a-1;for(t=t===r?a:t;++i1?e[t-1]:r;return i=typeof i=="function"?(e.pop(),i):r,ju(e,i)});function _u(e){var t=l(e);return t.__chain__=!0,t}function sg(e,t){return t(e),e}function ii(e,t){return t(e)}var og=qt(function(e){var t=e.length,i=t?e[0]:0,a=this.__wrapped__,u=function(f){return Ps(f,e)};return t>1||this.__actions__.length||!(a instanceof se)||!Ht(i)?this.thru(u):(a=a.slice(i,+i+(t?1:0)),a.__actions__.push({func:ii,args:[u],thisArg:r}),new gt(a,this.__chain__).thru(function(f){return t&&!f.length&&f.push(r),f}))});function ag(){return _u(this)}function ug(){return new gt(this.value(),this.__chain__)}function cg(){this.__values__===r&&(this.__values__=hc(this.value()));var e=this.__index__>=this.__values__.length,t=e?r:this.__values__[this.__index__++];return{done:e,value:t}}function lg(){return this}function fg(e){for(var t,i=this;i instanceof Jr;){var a=Ku(i);a.__index__=0,a.__values__=r,t?u.__wrapped__=a:t=a;var u=a;i=i.__wrapped__}return u.__wrapped__=e,t}function hg(){var e=this.__wrapped__;if(e instanceof se){var t=e;return this.__actions__.length&&(t=new se(this)),t=t.reverse(),t.__actions__.push({func:ii,args:[Qs],thisArg:r}),new gt(t,this.__chain__)}return this.thru(Qs)}function pg(){return du(this.__wrapped__,this.__actions__)}var dg=Vr(function(e,t,i){ce.call(e,i)?++e[i]:Ut(e,i,1)});function mg(e,t,i){var a=ee(e)?ka:sd;return i&&Ke(e,t,i)&&(t=r),a(e,q(t,3))}function gg(e,t){var i=ee(e)?Vt:ja;return i(e,q(t,3))}var yg=Tu(Qu),Pg=Tu(zu);function wg(e,t){return Ue(si(e,t),1)}function Sg(e,t){return Ue(si(e,t),ht)}function vg(e,t,i){return i=i===r?1:te(i),Ue(si(e,t),i)}function $u(e,t){var i=ee(e)?dt:tn;return i(e,q(t,3))}function ec(e,t){var i=ee(e)?Gh:Va;return i(e,q(t,3))}var Eg=Vr(function(e,t,i){ce.call(e,i)?e[i].push(t):Ut(e,i,[t])});function bg(e,t,i,a){e=je(e)?e:On(e),i=i&&!a?te(i):0;var u=e.length;return i<0&&(i=Re(u+i,0)),li(e)?i<=u&&e.indexOf(t,i)>-1:!!u&&Tn(e,t,i)>-1}var xg=re(function(e,t,i){var a=-1,u=typeof t=="function",f=je(e)?S(e.length):[];return tn(e,function(p){f[++a]=u?rt(t,p,i):tr(p,t,i)}),f}),Tg=Vr(function(e,t,i){Ut(e,i,t)});function si(e,t){var i=ee(e)?we:ru;return i(e,q(t,3))}function Ag(e,t,i,a){return e==null?[]:(ee(t)||(t=t==null?[]:[t]),i=a?r:i,ee(i)||(i=i==null?[]:[i]),au(e,t,i))}var kg=Vr(function(e,t,i){e[i?0:1].push(t)},function(){return[[],[]]});function Lg(e,t,i){var a=ee(e)?ss:Ra,u=arguments.length<3;return a(e,q(t,4),i,u,tn)}function Ig(e,t,i){var a=ee(e)?qh:Ra,u=arguments.length<3;return a(e,q(t,4),i,u,Va)}function Fg(e,t){var i=ee(e)?Vt:ja;return i(e,ui(q(t,3)))}function Rg(e){var t=ee(e)?Qa:bd;return t(e)}function Cg(e,t,i){(i?Ke(e,t,i):t===r)?t=1:t=te(t);var a=ee(e)?ed:xd;return a(e,t)}function Dg(e){var t=ee(e)?td:Ad;return t(e)}function Bg(e){if(e==null)return 0;if(je(e))return li(e)?kn(e):e.length;var t=Je(e);return t==Ne||t==he?e.size:xs(e).length}function Mg(e,t,i){var a=ee(e)?os:kd;return i&&Ke(e,t,i)&&(t=r),a(e,q(t,3))}var Og=re(function(e,t){if(e==null)return[];var i=t.length;return i>1&&Ke(e,t[0],t[1])?t=[]:i>2&&Ke(t[0],t[1],t[2])&&(t=[t[0]]),au(e,Ue(t,1),[])}),oi=gp||function(){return De.Date.now()};function Wg(e,t){if(typeof t!="function")throw new mt(c);return e=te(e),function(){if(--e<1)return t.apply(this,arguments)}}function tc(e,t,i){return t=i?r:t,t=e&&t==null?e.length:t,Gt(e,j,r,r,r,r,t)}function nc(e,t){var i;if(typeof t!="function")throw new mt(c);return e=te(e),function(){return--e>0&&(i=t.apply(this,arguments)),e<=1&&(t=r),i}}var Xs=re(function(e,t,i){var a=N;if(i.length){var u=_t(i,Bn(Xs));a|=me}return Gt(e,a,t,i,u)}),rc=re(function(e,t,i){var a=N|Q;if(i.length){var u=_t(i,Bn(rc));a|=me}return Gt(t,a,e,i,u)});function ic(e,t,i){t=i?r:t;var a=Gt(e,z,r,r,r,r,r,t);return a.placeholder=ic.placeholder,a}function sc(e,t,i){t=i?r:t;var a=Gt(e,fe,r,r,r,r,r,t);return a.placeholder=sc.placeholder,a}function oc(e,t,i){var a,u,f,p,m,y,A=0,k=!1,R=!1,B=!0;if(typeof e!="function")throw new mt(c);t=St(t)||0,ve(i)&&(k=!!i.leading,R="maxWait"in i,f=R?Re(St(i.maxWait)||0,t):f,B="trailing"in i?!!i.trailing:B);function U(ke){var It=a,Kt=u;return a=u=r,A=ke,p=e.apply(Kt,It),p}function J(ke){return A=ke,m=or(ie,t),k?U(ke):p}function ne(ke){var It=ke-y,Kt=ke-A,Tc=t-It;return R?He(Tc,f-Kt):Tc}function Y(ke){var It=ke-y,Kt=ke-A;return y===r||It>=t||It<0||R&&Kt>=f}function ie(){var ke=oi();if(Y(ke))return oe(ke);m=or(ie,ne(ke))}function oe(ke){return m=r,B&&a?U(ke):(a=u=r,p)}function at(){m!==r&&gu(m),A=0,a=y=u=m=r}function Qe(){return m===r?p:oe(oi())}function ut(){var ke=oi(),It=Y(ke);if(a=arguments,u=this,y=ke,It){if(m===r)return J(y);if(R)return gu(m),m=or(ie,t),U(y)}return m===r&&(m=or(ie,t)),p}return ut.cancel=at,ut.flush=Qe,ut}var Ng=re(function(e,t){return Za(e,1,t)}),Ug=re(function(e,t,i){return Za(e,St(t)||0,i)});function Gg(e){return Gt(e,ye)}function ai(e,t){if(typeof e!="function"||t!=null&&typeof t!="function")throw new mt(c);var i=function(){var a=arguments,u=t?t.apply(this,a):a[0],f=i.cache;if(f.has(u))return f.get(u);var p=e.apply(this,a);return i.cache=f.set(u,p)||f,p};return i.cache=new(ai.Cache||Nt),i}ai.Cache=Nt;function ui(e){if(typeof e!="function")throw new mt(c);return function(){var t=arguments;switch(t.length){case 0:return!e.call(this);case 1:return!e.call(this,t[0]);case 2:return!e.call(this,t[0],t[1]);case 3:return!e.call(this,t[0],t[1],t[2])}return!e.apply(this,t)}}function qg(e){return nc(2,e)}var Hg=Ld(function(e,t){t=t.length==1&&ee(t[0])?we(t[0],it(q())):we(Ue(t,1),it(q()));var i=t.length;return re(function(a){for(var u=-1,f=He(a.length,i);++u=t}),gn=eu(function(){return arguments}())?eu:function(e){return be(e)&&ce.call(e,"callee")&&!Ga.call(e,"callee")},ee=S.isArray,ry=va?it(va):fd;function je(e){return e!=null&&ci(e.length)&&!Jt(e)}function Ae(e){return be(e)&&je(e)}function iy(e){return e===!0||e===!1||be(e)&&Ye(e)==D}var on=Pp||oo,sy=Ea?it(Ea):hd;function oy(e){return be(e)&&e.nodeType===1&&!ar(e)}function ay(e){if(e==null)return!0;if(je(e)&&(ee(e)||typeof e=="string"||typeof e.splice=="function"||on(e)||Mn(e)||gn(e)))return!e.length;var t=Je(e);if(t==Ne||t==he)return!e.size;if(sr(e))return!xs(e).length;for(var i in e)if(ce.call(e,i))return!1;return!0}function uy(e,t){return nr(e,t)}function cy(e,t,i){i=typeof i=="function"?i:r;var a=i?i(e,t):r;return a===r?nr(e,t,r,i):!!a}function Vs(e){if(!be(e))return!1;var t=Ye(e);return t==W||t==K||typeof e.message=="string"&&typeof e.name=="string"&&!ar(e)}function ly(e){return typeof e=="number"&&Ha(e)}function Jt(e){if(!ve(e))return!1;var t=Ye(e);return t==Pe||t==$||t==F||t==br}function uc(e){return typeof e=="number"&&e==te(e)}function ci(e){return typeof e=="number"&&e>-1&&e%1==0&&e<=nt}function ve(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}function be(e){return e!=null&&typeof e=="object"}var cc=ba?it(ba):dd;function fy(e,t){return e===t||bs(e,t,Gs(t))}function hy(e,t,i){return i=typeof i=="function"?i:r,bs(e,t,Gs(t),i)}function py(e){return lc(e)&&e!=+e}function dy(e){if(jd(e))throw new Z(o);return tu(e)}function my(e){return e===null}function gy(e){return e==null}function lc(e){return typeof e=="number"||be(e)&&Ye(e)==Te}function ar(e){if(!be(e)||Ye(e)!=Ee)return!1;var t=Or(e);if(t===null)return!0;var i=ce.call(t,"constructor")&&t.constructor;return typeof i=="function"&&i instanceof i&&Cr.call(i)==hp}var js=xa?it(xa):md;function yy(e){return uc(e)&&e>=-nt&&e<=nt}var fc=Ta?it(Ta):gd;function li(e){return typeof e=="string"||!ee(e)&&be(e)&&Ye(e)==Ze}function ot(e){return typeof e=="symbol"||be(e)&&Ye(e)==Tt}var Mn=Aa?it(Aa):yd;function Py(e){return e===r}function wy(e){return be(e)&&Je(e)==En}function Sy(e){return be(e)&&Ye(e)==Kn}var vy=ei(Ts),Ey=ei(function(e,t){return e<=t});function hc(e){if(!e)return[];if(je(e))return li(e)?At(e):Ve(e);if(Xn&&e[Xn])return ep(e[Xn]());var t=Je(e),i=t==Ne?hs:t==he?Ir:On;return i(e)}function Yt(e){if(!e)return e===0?e:0;if(e=St(e),e===ht||e===-ht){var t=e<0?-1:1;return t*Ot}return e===e?e:0}function te(e){var t=Yt(e),i=t%1;return t===t?i?t-i:t:0}function pc(e){return e?hn(te(e),0,qe):0}function St(e){if(typeof e=="number")return e;if(ot(e))return Xe;if(ve(e)){var t=typeof e.valueOf=="function"?e.valueOf():e;e=ve(t)?t+"":t}if(typeof e!="string")return e===0?e:+e;e=Ca(e);var i=rh.test(e);return i||sh.test(e)?Wh(e.slice(2),i?2:8):nh.test(e)?Xe:+e}function dc(e){return Ct(e,_e(e))}function by(e){return e?hn(te(e),-nt,nt):e===0?e:0}function ue(e){return e==null?"":st(e)}var xy=Cn(function(e,t){if(sr(t)||je(t)){Ct(t,Be(t),e);return}for(var i in t)ce.call(t,i)&&$n(e,i,t[i])}),mc=Cn(function(e,t){Ct(t,_e(t),e)}),fi=Cn(function(e,t,i,a){Ct(t,_e(t),e,a)}),Ty=Cn(function(e,t,i,a){Ct(t,Be(t),e,a)}),Ay=qt(Ps);function ky(e,t){var i=Rn(e);return t==null?i:za(i,t)}var Ly=re(function(e,t){e=pe(e);var i=-1,a=t.length,u=a>2?t[2]:r;for(u&&Ke(t[0],t[1],u)&&(a=1);++i1),f}),Ct(e,Ns(e),i),a&&(i=yt(i,v|b|T,Ud));for(var u=t.length;u--;)Fs(i,t[u]);return i});function Qy(e,t){return yc(e,ui(q(t)))}var zy=qt(function(e,t){return e==null?{}:Sd(e,t)});function yc(e,t){if(e==null)return{};var i=we(Ns(e),function(a){return[a]});return t=q(t),uu(e,i,function(a,u){return t(a,u[0])})}function Xy(e,t,i){t=rn(t,e);var a=-1,u=t.length;for(u||(u=1,e=r);++at){var a=e;e=t,t=a}if(i||e%1||t%1){var u=Ja();return He(e+u*(t-e+Oh("1e-"+((u+"").length-1))),t)}return ks(e,t)}var sP=Dn(function(e,t,i){return t=t.toLowerCase(),e+(i?Sc(t):t)});function Sc(e){return eo(ue(e).toLowerCase())}function vc(e){return e=ue(e),e&&e.replace(ah,Zh).replace(Ah,"")}function oP(e,t,i){e=ue(e),t=st(t);var a=e.length;i=i===r?a:hn(te(i),0,a);var u=i;return i-=t.length,i>=0&&e.slice(i,u)==t}function aP(e){return e=ue(e),e&&qf.test(e)?e.replace(_o,Vh):e}function uP(e){return e=ue(e),e&&zf.test(e)?e.replace(Zi,"\\$&"):e}var cP=Dn(function(e,t,i){return e+(i?"-":"")+t.toLowerCase()}),lP=Dn(function(e,t,i){return e+(i?" ":"")+t.toLowerCase()}),fP=xu("toLowerCase");function hP(e,t,i){e=ue(e),t=te(t);var a=t?kn(e):0;if(!t||a>=t)return e;var u=(t-a)/2;return $r(Gr(u),i)+e+$r(Ur(u),i)}function pP(e,t,i){e=ue(e),t=te(t);var a=t?kn(e):0;return t&&a>>0,i?(e=ue(e),e&&(typeof t=="string"||t!=null&&!js(t))&&(t=st(t),!t&&An(e))?sn(At(e),0,i):e.split(t,i)):[]}var SP=Dn(function(e,t,i){return e+(i?" ":"")+eo(t)});function vP(e,t,i){return e=ue(e),i=i==null?0:hn(te(i),0,e.length),t=st(t),e.slice(i,i+t.length)==t}function EP(e,t,i){var a=l.templateSettings;i&&Ke(e,t,i)&&(t=r),e=ue(e),t=fi({},t,a,Ru);var u=fi({},t.imports,a.imports,Ru),f=Be(u),p=fs(u,f),m,y,A=0,k=t.interpolate||xr,R="__p += '",B=ps((t.escape||xr).source+"|"+k.source+"|"+(k===$o?th:xr).source+"|"+(t.evaluate||xr).source+"|$","g"),U="//# sourceURL="+(ce.call(t,"sourceURL")?(t.sourceURL+"").replace(/\s/g," "):"lodash.templateSources["+ ++Rh+"]")+` +`;e.replace(B,function(Y,ie,oe,at,Qe,ut){return oe||(oe=at),R+=e.slice(A,ut).replace(uh,jh),ie&&(m=!0,R+=`' + +__e(`+ie+`) + +'`),Qe&&(y=!0,R+=`'; +`+Qe+`; +__p += '`),oe&&(R+=`' + +((__t = (`+oe+`)) == null ? '' : __t) + +'`),A=ut+Y.length,Y}),R+=`'; +`;var J=ce.call(t,"variable")&&t.variable;if(!J)R=`with (obj) { +`+R+` +} +`;else if($f.test(J))throw new Z(h);R=(y?R.replace(Wf,""):R).replace(Nf,"$1").replace(Uf,"$1;"),R="function("+(J||"obj")+`) { +`+(J?"":`obj || (obj = {}); +`)+"var __t, __p = ''"+(m?", __e = _.escape":"")+(y?`, __j = Array.prototype.join; +function print() { __p += __j.call(arguments, '') } +`:`; +`)+R+`return __p +}`;var ne=bc(function(){return ae(f,U+"return "+R).apply(r,p)});if(ne.source=R,Vs(ne))throw ne;return ne}function bP(e){return ue(e).toLowerCase()}function xP(e){return ue(e).toUpperCase()}function TP(e,t,i){if(e=ue(e),e&&(i||t===r))return Ca(e);if(!e||!(t=st(t)))return e;var a=At(e),u=At(t),f=Da(a,u),p=Ba(a,u)+1;return sn(a,f,p).join("")}function AP(e,t,i){if(e=ue(e),e&&(i||t===r))return e.slice(0,Oa(e)+1);if(!e||!(t=st(t)))return e;var a=At(e),u=Ba(a,At(t))+1;return sn(a,0,u).join("")}function kP(e,t,i){if(e=ue(e),e&&(i||t===r))return e.replace(Vi,"");if(!e||!(t=st(t)))return e;var a=At(e),u=Da(a,At(t));return sn(a,u).join("")}function LP(e,t){var i=ct,a=bt;if(ve(t)){var u="separator"in t?t.separator:u;i="length"in t?te(t.length):i,a="omission"in t?st(t.omission):a}e=ue(e);var f=e.length;if(An(e)){var p=At(e);f=p.length}if(i>=f)return e;var m=i-kn(a);if(m<1)return a;var y=p?sn(p,0,m).join(""):e.slice(0,m);if(u===r)return y+a;if(p&&(m+=y.length-m),js(u)){if(e.slice(m).search(u)){var A,k=y;for(u.global||(u=ps(u.source,ue(ea.exec(u))+"g")),u.lastIndex=0;A=u.exec(k);)var R=A.index;y=y.slice(0,R===r?m:R)}}else if(e.indexOf(st(u),m)!=m){var B=y.lastIndexOf(u);B>-1&&(y=y.slice(0,B))}return y+a}function IP(e){return e=ue(e),e&&Gf.test(e)?e.replace(jo,ip):e}var FP=Dn(function(e,t,i){return e+(i?" ":"")+t.toUpperCase()}),eo=xu("toUpperCase");function Ec(e,t,i){return e=ue(e),t=i?r:t,t===r?$h(e)?ap(e):Yh(e):e.match(t)||[]}var bc=re(function(e,t){try{return rt(e,r,t)}catch(i){return Vs(i)?i:new Z(i)}}),RP=qt(function(e,t){return dt(t,function(i){i=Dt(i),Ut(e,i,Xs(e[i],e))}),e});function CP(e){var t=e==null?0:e.length,i=q();return e=t?we(e,function(a){if(typeof a[1]!="function")throw new mt(c);return[i(a[0]),a[1]]}):[],re(function(a){for(var u=-1;++unt)return[];var i=qe,a=He(e,qe);t=q(t),e-=qe;for(var u=ls(a,t);++i0||t<0)?new se(i):(e<0?i=i.takeRight(-e):e&&(i=i.drop(e)),t!==r&&(t=te(t),i=t<0?i.dropRight(-t):i.take(t-e)),i)},se.prototype.takeRightWhile=function(e){return this.reverse().takeWhile(e).reverse()},se.prototype.toArray=function(){return this.take(qe)},Rt(se.prototype,function(e,t){var i=/^(?:filter|find|map|reject)|While$/.test(t),a=/^(?:head|last)$/.test(t),u=l[a?"take"+(t=="last"?"Right":""):t],f=a||/^find/.test(t);!u||(l.prototype[t]=function(){var p=this.__wrapped__,m=a?[1]:arguments,y=p instanceof se,A=m[0],k=y||ee(p),R=function(ie){var oe=u.apply(l,jt([ie],m));return a&&B?oe[0]:oe};k&&i&&typeof A=="function"&&A.length!=1&&(y=k=!1);var B=this.__chain__,U=!!this.__actions__.length,J=f&&!B,ne=y&&!U;if(!f&&k){p=ne?p:new se(this);var Y=e.apply(p,m);return Y.__actions__.push({func:ii,args:[R],thisArg:r}),new gt(Y,B)}return J&&ne?e.apply(this,m):(Y=this.thru(R),J?a?Y.value()[0]:Y.value():Y)})}),dt(["pop","push","shift","sort","splice","unshift"],function(e){var t=Fr[e],i=/^(?:push|sort|unshift)$/.test(e)?"tap":"thru",a=/^(?:pop|shift)$/.test(e);l.prototype[e]=function(){var u=arguments;if(a&&!this.__chain__){var f=this.value();return t.apply(ee(f)?f:[],u)}return this[i](function(p){return t.apply(ee(p)?p:[],u)})}}),Rt(se.prototype,function(e,t){var i=l[t];if(i){var a=i.name+"";ce.call(Fn,a)||(Fn[a]=[]),Fn[a].push({name:t,func:i})}}),Fn[jr(r,Q).name]=[{name:"wrapper",func:r}],se.prototype.clone=Ip,se.prototype.reverse=Fp,se.prototype.value=Rp,l.prototype.at=og,l.prototype.chain=ag,l.prototype.commit=ug,l.prototype.next=cg,l.prototype.plant=fg,l.prototype.reverse=hg,l.prototype.toJSON=l.prototype.valueOf=l.prototype.value=pg,l.prototype.first=l.prototype.head,Xn&&(l.prototype[Xn]=lg),l},$t=up();typeof define=="function"&&typeof define.amd=="object"&&define.amd?(De._=$t,define(function(){return $t})):un?((un.exports=$t)._=$t,ns._=$t):De._=$t}).call(Yn)});var Cf=Le((_v,US)=>{US.exports=`# This file can't import anything as we include the contents of this file +# directly in nix eval --apply arguments (see how this file is included in runner/src/common.ts) -Required package: ${k}${k!==u?` (via "${u}")`:""} -Required by: ${I.name}@${I.reference} (via ${y}) -`,{request:u,issuer:y,issuerLocator:Object.assign({},I),dependencyName:k}));if(q==null){if(Ie===null||V===null)throw V||new Error("Assertion failed: Expected an error to have been set");q=Ie;let H=V.message.replace(/\n.*/g,"");V.message=H,!g.has(H)&&n!==0&&(g.add(H),process.emitWarning(V))}let Ae=Array.isArray(q)?{name:q[0],reference:q[1]}:{name:k,reference:q},cr=L(Ae);if(!cr.packageLocation)throw O(N.MISSING_DEPENDENCY,`A dependency seems valid but didn't get installed for some reason. This might be caused by a partial install, such as dev vs prod. +with builtins; -Required package: ${Ae.name}@${Ae.reference}${Ae.name!==u?` (via "${u}")`:""} -Required by: ${I.name}@${I.reference} (via ${y}) -`,{request:u,issuer:y,dependencyLocator:Object.assign({},Ae)});let lr=cr.packageLocation;R?T=x.join(lr,R):T=lr}else if(x.isAbsolute(p))T=x.normalize(p);else{if(!d)throw O(N.API_ERROR,"The resolveToUnqualified function must be called with a valid issuer when the path isn't a builtin nor absolute",{request:u,issuer:y});let k=x.resolve(d);d.match(a)?T=x.normalize(x.join(k,p)):T=x.normalize(x.join(x.dirname(k),p))}return x.normalize(T)}function Ue(p,d,E=j){if(i.test(p))return d;let u=D(d,E);return u?x.normalize(u):d}function ge(p,{extensions:d=Object.keys(Ne.Module._extensions)}={}){let E=[],u=ee(p,E,{extensions:d});if(u)return x.normalize(u);{let y=re(p),T=Q(p);if(T){let{packageLocation:w}=L(T),k=!0;try{e.fakeFs.accessSync(w)}catch(R){if((R==null?void 0:R.code)==="ENOENT")k=!1;else{let I=((R==null?void 0:R.message)??R??"empty exception thrown").replace(/^[A-Z]/,Pe=>Pe.toLowerCase());throw O(N.QUALIFIED_PATH_RESOLUTION_FAILED,`Required package exists but could not be accessed (${I}). +let + nameValuePair = name: value: { inherit name value; }; -Missing package: ${T.name}@${T.reference} -Expected package location: ${re(w)} -`,{unqualifiedPath:y,extensions:d})}}if(!k){let R=w.includes("/unplugged/")?"Required unplugged package missing from disk. This may happen when switching branches without running installs (unplugged packages must be fully materialized on disk to work).":"Required package missing from disk. If you keep your packages inside your repository then restarting the Node process may be enough. Otherwise, try to run an install first.";throw O(N.QUALIFIED_PATH_RESOLUTION_FAILED,`${R} + filterAttrs = pred: set: + listToAttrs (concatMap (name: let v = set.\${name}; in if pred name v then [(nameValuePair name v)] else []) (attrNames set)); -Missing package: ${T.name}@${T.reference} -Expected package location: ${re(w)} -`,{unqualifiedPath:y,extensions:d})}}throw O(N.QUALIFIED_PATH_RESOLUTION_FAILED,`Qualified path resolution failed: we looked for the following paths, but none could be accessed. + ## -Source path: ${y} -${E.map(w=>`Not found: ${re(w)} -`).join("")}`,{unqualifiedPath:y,extensions:d})}}function ce(p,d,E){if(!d)throw new Error("Assertion failed: An issuer is required to resolve private import mappings");let u=Na({name:p,base:Y.pathToFileURL(m.fromPortablePath(d)),conditions:E.conditions??j,readFileSyncFn:mt});if(u instanceof URL)return ge(m.toPortablePath(Y.fileURLToPath(u)),{extensions:E.extensions});if(u.startsWith("#"))throw new Error("Mapping from one private import to another isn't allowed");return z(u,d,E)}function z(p,d,E={}){try{if(p.startsWith("#"))return ce(p,d,E);let{considerBuiltins:u,extensions:y,conditions:T}=E,w=Je(p,d,{considerBuiltins:u});if(p==="pnpapi")return w;if(w===null)return null;let k=()=>d!==null?X(d):!1,R=(!u||!Ht(p))&&!k()?Ue(p,w,T):w;return ge(R,{extensions:y})}catch(u){throw Object.prototype.hasOwnProperty.call(u,"pnpCode")&&Object.assign(u.data,{request:re(p),issuer:d&&re(d)}),u}}function K(p){let d=x.normalize(p),E=ne.resolveVirtual(d);return E!==d?E:null}return{VERSIONS:me,topLevel:ye,getLocator:(p,d)=>Array.isArray(d)?{name:d[0],reference:d[1]}:{name:p,reference:d},getDependencyTreeRoots:()=>[...r.dependencyTreeRoots],getAllLocators(){let p=[];for(let[d,E]of P)for(let u of E.keys())d!==null&&u!==null&&p.push({name:d,reference:u});return p},getPackageInformation:p=>{let d=te(p);if(d===null)return null;let E=m.fromPortablePath(d.packageLocation);return{...d,packageLocation:E}},findPackageLocator:p=>Q(m.toPortablePath(p)),resolveToUnqualified:A("resolveToUnqualified",(p,d,E)=>{let u=d!==null?m.toPortablePath(d):null,y=Je(m.toPortablePath(p),u,E);return y===null?null:m.fromPortablePath(y)}),resolveUnqualified:A("resolveUnqualified",(p,d)=>m.fromPortablePath(ge(m.toPortablePath(p),d))),resolveRequest:A("resolveRequest",(p,d,E)=>{let u=d!==null?m.toPortablePath(d):null,y=z(m.toPortablePath(p),u,E);return y===null?null:m.fromPortablePath(y)}),resolveVirtual:A("resolveVirtual",p=>{let d=K(m.toPortablePath(p));return d!==null?m.fromPortablePath(d):null})}}async function qa(r,{fakeFs:e,pnpapiResolution:t}){let n=await e.readFilePromise(r,"utf8");return ls(n,{basePath:Vn.dirname(r),fakeFs:e,pnpapiResolution:t})}function ls(r,{basePath:e,fakeFs:t,pnpapiResolution:n}){let s=JSON.parse(r),i=ss(s,{basePath:e});return cs(i,{compatibilityMode:!0,fakeFs:t,pnpapiResolution:n})}var Ga=(r,e,t)=>{let n=er(r),s=ss(n,{basePath:e}),i=m.join(e,nt.pnpCjs);return cs(s,{fakeFs:t,pnpapiResolution:i})},jt,Ja=()=>(typeof jt>"u"&&(jt=Xn.default.brotliDecompressSync(Buffer.from("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","base64")).toString()),jt);_.LinkType=zn;_.generateInlinedScript=ya;_.generateLoader=tr;_.generatePrettyJson=ns;_.generateSplitScript=ga;_.getESMLoaderTemplate=Ja;_.hydratePnpFile=qa;_.hydratePnpSource=ls;_.makeRuntimeApi=Ga});var _a={};Ts(_a,{default:()=>Za,getExistingYarnManifest:()=>hs,nixCurrentSystem:()=>ir});var Nn=F("buffer"),On=Z(F("path"),1),$e=Z(F("child_process"),1),Be=Z(F("process"),1),Wn=Z(_r(),1);function xt(r){let e=typeof r=="string"?` + getPackages = manifest: + mapAttrs (name: pkg: + filterAttrs (key: b: (builtins.elem key [ + "name" + "outputHash" + "outputHashByPlatform" + ])) pkg + ) manifest; +in +`});var HS={};vw(HS,{default:()=>qS,getExistingYarnManifest:()=>Of,nixCurrentSystem:()=>Vo});var X=H("@yarnpkg/core"),vr=H("@yarnpkg/cli"),ze=H("@yarnpkg/fslib"),Df=H("@yarnpkg/libzip"),Bf=H("@yarnpkg/plugin-pnp"),vt=Me(H("typanion")),Et=H("clipanion");var jl=H("buffer"),_l=Me(H("path"),1),Ei=Me(H("child_process"),1),hr=Me(H("process"),1),$l=Me(dl(),1);function yo(r){let n=typeof r=="string"?` `:` -`.charCodeAt(),t=typeof r=="string"?"\r":"\r".charCodeAt();return r[r.length-1]===e&&(r=r.slice(0,-1)),r[r.length-1]===t&&(r=r.slice(0,-1)),r}var ve=Z(F("process"),1),be=Z(F("path"),1),$r=Z(F("url"),1);function Ye(r={}){let{env:e=process.env,platform:t=process.platform}=r;return t!=="win32"?"PATH":Object.keys(e).reverse().find(n=>n.toUpperCase()==="PATH")||"Path"}function _s(r={}){let{cwd:e=ve.default.cwd(),path:t=ve.default.env[Ye()],execPath:n=ve.default.execPath}=r,s,i=e instanceof URL?$r.default.fileURLToPath(e):e,a=be.default.resolve(i),o=[];for(;s!==a;)o.push(be.default.join(a,"node_modules/.bin")),s=a,a=be.default.resolve(a,"..");return o.push(be.default.resolve(i,n,"..")),[...o,t].join(be.default.delimiter)}function en({env:r=ve.default.env,...e}={}){r={...r};let t=Ye({env:r});return e.path=r[t],r[t]=_s(e),r}var $s=(r,e,t,n)=>{if(t==="length"||t==="prototype"||t==="arguments"||t==="caller")return;let s=Object.getOwnPropertyDescriptor(r,t),i=Object.getOwnPropertyDescriptor(e,t);!ei(s,i)&&n||Object.defineProperty(r,t,i)},ei=function(r,e){return r===void 0||r.configurable||r.writable===e.writable&&r.enumerable===e.enumerable&&r.configurable===e.configurable&&(r.writable||r.value===e.value)},ti=(r,e)=>{let t=Object.getPrototypeOf(e);t!==Object.getPrototypeOf(r)&&Object.setPrototypeOf(r,t)},ri=(r,e)=>`/* Wrapped ${r}*/ -${e}`,ni=Object.getOwnPropertyDescriptor(Function.prototype,"toString"),si=Object.getOwnPropertyDescriptor(Function.prototype.toString,"name"),ii=(r,e,t)=>{let n=t===""?"":`with ${t.trim()}() `,s=ri.bind(null,n,e.toString());Object.defineProperty(s,"name",si),Object.defineProperty(r,"toString",{...ni,value:s})};function Lt(r,e,{ignoreNonConfigurable:t=!1}={}){let{name:n}=r;for(let s of Reflect.ownKeys(e))$s(r,e,s,t);return ti(r,e),ii(r,e,n),r}var Qe=new WeakMap,tn=(r,e={})=>{if(typeof r!="function")throw new TypeError("Expected a function");let t,n=0,s=r.displayName||r.name||"",i=function(...a){if(Qe.set(i,++n),n===1)t=r.apply(this,a),r=null;else if(e.throw===!0)throw new Error(`Function \`${s}\` can only be called once`);return t};return Lt(i,r),Qe.set(i,n),i};tn.callCount=r=>{if(!Qe.has(r))throw new Error(`The given function \`${r.name}\` is not wrapped by the \`onetime\` package`);return Qe.get(r)};var rn=tn;var cn=F("os");var nn=function(){let r=It-sn+1;return Array.from({length:r},ai)},ai=function(r,e){return{name:`SIGRT${e+1}`,number:sn+e,action:"terminate",description:"Application-specific signal (realtime)",standard:"posix"}},sn=34,It=64;var on=F("os");var an=[{name:"SIGHUP",number:1,action:"terminate",description:"Terminal closed",standard:"posix"},{name:"SIGINT",number:2,action:"terminate",description:"User interruption with CTRL-C",standard:"ansi"},{name:"SIGQUIT",number:3,action:"core",description:"User interruption with CTRL-\\",standard:"posix"},{name:"SIGILL",number:4,action:"core",description:"Invalid machine instruction",standard:"ansi"},{name:"SIGTRAP",number:5,action:"core",description:"Debugger breakpoint",standard:"posix"},{name:"SIGABRT",number:6,action:"core",description:"Aborted",standard:"ansi"},{name:"SIGIOT",number:6,action:"core",description:"Aborted",standard:"bsd"},{name:"SIGBUS",number:7,action:"core",description:"Bus error due to misaligned, non-existing address or paging error",standard:"bsd"},{name:"SIGEMT",number:7,action:"terminate",description:"Command should be emulated but is not implemented",standard:"other"},{name:"SIGFPE",number:8,action:"core",description:"Floating point arithmetic error",standard:"ansi"},{name:"SIGKILL",number:9,action:"terminate",description:"Forced termination",standard:"posix",forced:!0},{name:"SIGUSR1",number:10,action:"terminate",description:"Application-specific signal",standard:"posix"},{name:"SIGSEGV",number:11,action:"core",description:"Segmentation fault",standard:"ansi"},{name:"SIGUSR2",number:12,action:"terminate",description:"Application-specific signal",standard:"posix"},{name:"SIGPIPE",number:13,action:"terminate",description:"Broken pipe or socket",standard:"posix"},{name:"SIGALRM",number:14,action:"terminate",description:"Timeout or timer",standard:"posix"},{name:"SIGTERM",number:15,action:"terminate",description:"Termination",standard:"ansi"},{name:"SIGSTKFLT",number:16,action:"terminate",description:"Stack is empty or overflowed",standard:"other"},{name:"SIGCHLD",number:17,action:"ignore",description:"Child process terminated, paused or unpaused",standard:"posix"},{name:"SIGCLD",number:17,action:"ignore",description:"Child process terminated, paused or unpaused",standard:"other"},{name:"SIGCONT",number:18,action:"unpause",description:"Unpaused",standard:"posix",forced:!0},{name:"SIGSTOP",number:19,action:"pause",description:"Paused",standard:"posix",forced:!0},{name:"SIGTSTP",number:20,action:"pause",description:'Paused using CTRL-Z or "suspend"',standard:"posix"},{name:"SIGTTIN",number:21,action:"pause",description:"Background process cannot read terminal input",standard:"posix"},{name:"SIGBREAK",number:21,action:"terminate",description:"User interruption with CTRL-BREAK",standard:"other"},{name:"SIGTTOU",number:22,action:"pause",description:"Background process cannot write to terminal output",standard:"posix"},{name:"SIGURG",number:23,action:"ignore",description:"Socket received out-of-band data",standard:"bsd"},{name:"SIGXCPU",number:24,action:"core",description:"Process timed out",standard:"bsd"},{name:"SIGXFSZ",number:25,action:"core",description:"File too big",standard:"bsd"},{name:"SIGVTALRM",number:26,action:"terminate",description:"Timeout or timer",standard:"bsd"},{name:"SIGPROF",number:27,action:"terminate",description:"Timeout or timer",standard:"bsd"},{name:"SIGWINCH",number:28,action:"ignore",description:"Terminal window size changed",standard:"bsd"},{name:"SIGIO",number:29,action:"terminate",description:"I/O is available",standard:"other"},{name:"SIGPOLL",number:29,action:"terminate",description:"Watched event",standard:"other"},{name:"SIGINFO",number:29,action:"ignore",description:"Request for process information",standard:"other"},{name:"SIGPWR",number:30,action:"terminate",description:"Device running out of power",standard:"systemv"},{name:"SIGSYS",number:31,action:"core",description:"Invalid system call",standard:"other"},{name:"SIGUNUSED",number:31,action:"terminate",description:"Invalid system call",standard:"other"}];var At=function(){let r=nn();return[...an,...r].map(oi)},oi=function({name:r,number:e,description:t,action:n,forced:s=!1,standard:i}){let{signals:{[r]:a}}=on.constants,o=a!==void 0;return{name:r,number:o?a:e,description:t,supported:o,action:n,forced:s,standard:i}};var ci=function(){return At().reduce(li,{})},li=function(r,{name:e,number:t,description:n,supported:s,action:i,forced:a,standard:o}){return{...r,[e]:{name:e,number:t,description:n,supported:s,action:i,forced:a,standard:o}}},ln=ci(),ui=function(){let r=At(),e=64+1,t=Array.from({length:e},(n,s)=>fi(s,r));return Object.assign({},...t)},fi=function(r,e){let t=hi(r,e);if(t===void 0)return{};let{name:n,description:s,supported:i,action:a,forced:o,standard:c}=t;return{[r]:{name:n,number:r,description:s,supported:i,action:a,forced:o,standard:c}}},hi=function(r,e){let t=e.find(({name:n})=>cn.constants.signals[n]===r);return t!==void 0?t:e.find(n=>n.number===r)},vo=ui();var di=({timedOut:r,timeout:e,errorCode:t,signal:n,signalDescription:s,exitCode:i,isCanceled:a})=>r?`timed out after ${e} milliseconds`:a?"was canceled":t!==void 0?`failed with ${t}`:n!==void 0?`was killed with ${n} (${s})`:i!==void 0?`failed with exit code ${i}`:"failed",De=({stdout:r,stderr:e,all:t,error:n,signal:s,exitCode:i,command:a,escapedCommand:o,timedOut:c,isCanceled:f,killed:g,parsed:{options:{timeout:l}}})=>{i=i===null?void 0:i,s=s===null?void 0:s;let P=s===void 0?void 0:ln[s].description,b=n&&n.code,h=`Command ${di({timedOut:c,timeout:l,errorCode:b,signal:s,signalDescription:P,exitCode:i,isCanceled:f})}: ${a}`,A=Object.prototype.toString.call(n)==="[object Error]",L=A?`${h} -${n.message}`:h,B=[L,e,r].filter(Boolean).join(` -`);return A?(n.originalMessage=n.message,n.message=B):n=new Error(B),n.shortMessage=L,n.command=a,n.escapedCommand=o,n.exitCode=i,n.signal=s,n.signalDescription=P,n.stdout=r,n.stderr=e,t!==void 0&&(n.all=t),"bufferedData"in n&&delete n.bufferedData,n.failed=!0,n.timedOut=Boolean(c),n.isCanceled=f,n.killed=g&&!c,n};var Ke=["stdin","stdout","stderr"],pi=r=>Ke.some(e=>r[e]!==void 0),un=r=>{if(!r)return;let{stdio:e}=r;if(e===void 0)return Ke.map(n=>r[n]);if(pi(r))throw new Error(`It's not possible to provide \`stdio\` in combination with one of ${Ke.map(n=>`\`${n}\``).join(", ")}`);if(typeof e=="string")return e;if(!Array.isArray(e))throw new TypeError(`Expected \`stdio\` to be of type \`string\` or \`Array\`, got \`${typeof e}\``);let t=Math.max(e.length,Ke.length);return Array.from({length:t},(n,s)=>e[s])};var gn=Z(F("os"),1),Pn=Z(yn(),1),mi=1e3*5,Sn=(r,e="SIGTERM",t={})=>{let n=r(e);return yi(r,e,t,n),n},yi=(r,e,t,n)=>{if(!gi(e,t,n))return;let s=Si(t),i=setTimeout(()=>{r("SIGKILL")},s);i.unref&&i.unref()},gi=(r,{forceKillAfterTimeout:e},t)=>Pi(r)&&e!==!1&&t,Pi=r=>r===gn.default.constants.signals.SIGTERM||typeof r=="string"&&r.toUpperCase()==="SIGTERM",Si=({forceKillAfterTimeout:r=!0})=>{if(r===!0)return mi;if(!Number.isFinite(r)||r<0)throw new TypeError(`Expected the \`forceKillAfterTimeout\` option to be a non-negative integer, got \`${r}\` (${typeof r})`);return r},kn=(r,e)=>{r.kill()&&(e.isCanceled=!0)},ki=(r,e,t)=>{r.kill(e),t(Object.assign(new Error("Timed out"),{timedOut:!0,signal:e}))},wn=(r,{timeout:e,killSignal:t="SIGTERM"},n)=>{if(e===0||e===void 0)return n;let s,i=new Promise((o,c)=>{s=setTimeout(()=>{ki(r,t,c)},e)}),a=n.finally(()=>{clearTimeout(s)});return Promise.race([i,a])},bn=({timeout:r})=>{if(r!==void 0&&(!Number.isFinite(r)||r<0))throw new TypeError(`Expected the \`timeout\` option to be a non-negative integer, got \`${r}\` (${typeof r})`)},En=async(r,{cleanup:e,detached:t},n)=>{if(!e||t)return n;let s=(0,Pn.default)(()=>{r.kill()});return n.finally(()=>{s()})};function Rt(r){return r!==null&&typeof r=="object"&&typeof r.pipe=="function"}var Nt=Z(xn(),1),An=Z(In(),1),vn=(r,e)=>{e===void 0||r.stdin===void 0||(Rt(e)?e.pipe(r.stdin):r.stdin.end(e))},Dn=(r,{all:e})=>{if(!e||!r.stdout&&!r.stderr)return;let t=(0,An.default)();return r.stdout&&t.add(r.stdout),r.stderr&&t.add(r.stderr),t},Bt=async(r,e)=>{if(!!r){r.destroy();try{return await e}catch(t){return t.bufferedData}}},Mt=(r,{encoding:e,buffer:t,maxBuffer:n})=>{if(!(!r||!t))return e?(0,Nt.default)(r,{encoding:e,maxBuffer:n}):Nt.default.buffer(r,{maxBuffer:n})},Rn=async({stdout:r,stderr:e,all:t},{encoding:n,buffer:s,maxBuffer:i},a)=>{let o=Mt(r,{encoding:n,buffer:s,maxBuffer:i}),c=Mt(e,{encoding:n,buffer:s,maxBuffer:i}),f=Mt(t,{encoding:n,buffer:s,maxBuffer:i*2});try{return await Promise.all([a,o,c,f])}catch(g){return Promise.all([{error:g,signal:g.signal,timedOut:g.timedOut},Bt(r,o),Bt(e,c),Bt(t,f)])}},Cn=({input:r})=>{if(Rt(r))throw new TypeError("The `input` option cannot be a stream in sync mode")};var Ii=(async()=>{})().constructor.prototype,Ai=["then","catch","finally"].map(r=>[r,Reflect.getOwnPropertyDescriptor(Ii,r)]),Ot=(r,e)=>{for(let[t,n]of Ai){let s=typeof e=="function"?(...i)=>Reflect.apply(n.value,e(),i):n.value.bind(e);Reflect.defineProperty(r,t,{...n,value:s})}return r},Bn=r=>new Promise((e,t)=>{r.on("exit",(n,s)=>{e({exitCode:n,signal:s})}),r.on("error",n=>{t(n)}),r.stdin&&r.stdin.on("error",n=>{t(n)})});var Mn=(r,e=[])=>Array.isArray(e)?[r,...e]:[r],vi=/^[\w.-]+$/,Di=/"/g,Ri=r=>typeof r!="string"||vi.test(r)?r:`"${r.replace(Di,'\\"')}"`,Wt=(r,e)=>Mn(r,e).join(" "),qt=(r,e)=>Mn(r,e).map(t=>Ri(t)).join(" ");var Ci=1e3*1e3*100,Bi=({env:r,extendEnv:e,preferLocal:t,localDir:n,execPath:s})=>{let i=e?{...Be.default.env,...r}:r;return t?en({env:i,cwd:n,execPath:s}):i},qn=(r,e,t={})=>{let n=Wn.default._parse(r,e,t);return r=n.command,e=n.args,t=n.options,t={maxBuffer:Ci,buffer:!0,stripFinalNewline:!0,extendEnv:!0,preferLocal:!1,localDir:t.cwd||Be.default.cwd(),execPath:Be.default.execPath,encoding:"utf8",reject:!0,cleanup:!0,all:!1,windowsHide:!0,...t},t.env=Bi(t),t.stdio=un(t),Be.default.platform==="win32"&&On.default.basename(r,".exe")==="cmd"&&e.unshift("/q"),{file:r,args:e,options:t,parsed:n}},Me=(r,e,t)=>typeof e!="string"&&!Nn.Buffer.isBuffer(e)?t===void 0?void 0:"":r.stripFinalNewline?xt(e):e;function Gn(r,e,t){let n=qn(r,e,t),s=Wt(r,e),i=qt(r,e);bn(n.options);let a;try{a=$e.default.spawn(n.file,n.args,n.options)}catch(b){let S=new $e.default.ChildProcess,h=Promise.reject(De({error:b,stdout:"",stderr:"",all:"",command:s,escapedCommand:i,parsed:n,timedOut:!1,isCanceled:!1,killed:!1}));return Ot(S,h)}let o=Bn(a),c=wn(a,n.options,o),f=En(a,n.options,c),g={isCanceled:!1};a.kill=Sn.bind(null,a.kill.bind(a)),a.cancel=kn.bind(null,a,g);let P=rn(async()=>{let[{error:b,exitCode:S,signal:h,timedOut:A},L,B,j]=await Rn(a,n.options,f),D=Me(n.options,L),ee=Me(n.options,B),U=Me(n.options,j);if(b||S!==0||h!==null){let ie=De({error:b,exitCode:S,signal:h,stdout:D,stderr:ee,all:U,command:s,escapedCommand:i,parsed:n,timedOut:A,isCanceled:g.isCanceled||(n.options.signal?n.options.signal.aborted:!1),killed:a.killed});if(!n.options.reject)return ie;throw ie}return{command:s,escapedCommand:i,exitCode:0,stdout:D,stderr:ee,all:U,failed:!1,timedOut:!1,isCanceled:!1,killed:!1}});return vn(a,n.options.input),a.all=Dn(a,n.options),Ot(a,P)}function Gt(r,e,t){let n=qn(r,e,t),s=Wt(r,e),i=qt(r,e);Cn(n.options);let a;try{a=$e.default.spawnSync(n.file,n.args,n.options)}catch(f){throw De({error:f,stdout:"",stderr:"",all:"",command:s,escapedCommand:i,parsed:n,timedOut:!1,isCanceled:!1,killed:!1})}let o=Me(n.options,a.stdout,a.error),c=Me(n.options,a.stderr,a.error);if(a.error||a.status!==0||a.signal!==null){let f=De({stdout:o,stderr:c,error:a.error,signal:a.signal,exitCode:a.status,command:s,escapedCommand:i,parsed:n,timedOut:a.error&&a.error.code==="ETIMEDOUT",isCanceled:!1,killed:a.signal!==null});if(!n.options.reject)return f;throw f}return{command:s,escapedCommand:i,exitCode:0,stdout:o,stderr:c,failed:!1,timedOut:!1,isCanceled:!1,killed:!1}}var Ua=Jn(),se=F("fs"),$=F("path"),{PassThrough:fs}=F("stream"),{spawnSync:cc}=F("child_process"),{generateInlinedScript:Ha}=us(),nr;function ja(r,e){for(let[t,n]of r.entries())if(n===e)return t}function ir(){if(nr)return nr;let r=JSON.parse(Gt("nix",["eval","--impure","--json","--expr","builtins.currentSystem"]).stdout);return nr=r,r}async function hs(r){try{let e=["eval","--json","--impure","--expr",Ua+` +`.charCodeAt(),s=typeof r=="string"?"\r":"\r".charCodeAt();return r[r.length-1]===n&&(r=r.slice(0,-1)),r[r.length-1]===s&&(r=r.slice(0,-1)),r}var ur=Me(H("process"),1),Un=Me(H("path"),1),ml=Me(H("url"),1);function di(r={}){let{env:n=process.env,platform:s=process.platform}=r;return s!=="win32"?"PATH":Object.keys(n).reverse().find(o=>o.toUpperCase()==="PATH")||"Path"}function Zw(r={}){let{cwd:n=ur.default.cwd(),path:s=ur.default.env[di()],execPath:o=ur.default.execPath}=r,c,h=n instanceof URL?ml.default.fileURLToPath(n):n,d=Un.default.resolve(h),P=[];for(;c!==d;)P.push(Un.default.join(d,"node_modules/.bin")),c=d,d=Un.default.resolve(d,"..");return P.push(Un.default.resolve(h,o,"..")),[...P,s].join(Un.default.delimiter)}function gl({env:r=ur.default.env,...n}={}){r={...r};let s=di({env:r});return n.path=r[s],r[s]=Zw(n),r}var Vw=(r,n,s,o)=>{if(s==="length"||s==="prototype"||s==="arguments"||s==="caller")return;let c=Object.getOwnPropertyDescriptor(r,s),h=Object.getOwnPropertyDescriptor(n,s);!jw(c,h)&&o||Object.defineProperty(r,s,h)},jw=function(r,n){return r===void 0||r.configurable||r.writable===n.writable&&r.enumerable===n.enumerable&&r.configurable===n.configurable&&(r.writable||r.value===n.value)},_w=(r,n)=>{let s=Object.getPrototypeOf(n);s!==Object.getPrototypeOf(r)&&Object.setPrototypeOf(r,s)},$w=(r,n)=>`/* Wrapped ${r}*/ +${n}`,e0=Object.getOwnPropertyDescriptor(Function.prototype,"toString"),t0=Object.getOwnPropertyDescriptor(Function.prototype.toString,"name"),n0=(r,n,s)=>{let o=s===""?"":`with ${s.trim()}() `,c=$w.bind(null,o,n.toString());Object.defineProperty(c,"name",t0),Object.defineProperty(r,"toString",{...e0,value:c})};function Po(r,n,{ignoreNonConfigurable:s=!1}={}){let{name:o}=r;for(let c of Reflect.ownKeys(n))Vw(r,n,c,s);return _w(r,n),n0(r,n,o),r}var mi=new WeakMap,yl=(r,n={})=>{if(typeof r!="function")throw new TypeError("Expected a function");let s,o=0,c=r.displayName||r.name||"",h=function(...d){if(mi.set(h,++o),o===1)s=r.apply(this,d),r=null;else if(n.throw===!0)throw new Error(`Function \`${c}\` can only be called once`);return s};return Po(h,r),mi.set(h,o),h};yl.callCount=r=>{if(!mi.has(r))throw new Error(`The given function \`${r.name}\` is not wrapped by the \`onetime\` package`);return mi.get(r)};var Pl=yl;var bl=H("os");var wl=function(){let r=wo-Sl+1;return Array.from({length:r},r0)},r0=function(r,n){return{name:`SIGRT${n+1}`,number:Sl+n,action:"terminate",description:"Application-specific signal (realtime)",standard:"posix"}},Sl=34,wo=64;var El=H("os");var vl=[{name:"SIGHUP",number:1,action:"terminate",description:"Terminal closed",standard:"posix"},{name:"SIGINT",number:2,action:"terminate",description:"User interruption with CTRL-C",standard:"ansi"},{name:"SIGQUIT",number:3,action:"core",description:"User interruption with CTRL-\\",standard:"posix"},{name:"SIGILL",number:4,action:"core",description:"Invalid machine instruction",standard:"ansi"},{name:"SIGTRAP",number:5,action:"core",description:"Debugger breakpoint",standard:"posix"},{name:"SIGABRT",number:6,action:"core",description:"Aborted",standard:"ansi"},{name:"SIGIOT",number:6,action:"core",description:"Aborted",standard:"bsd"},{name:"SIGBUS",number:7,action:"core",description:"Bus error due to misaligned, non-existing address or paging error",standard:"bsd"},{name:"SIGEMT",number:7,action:"terminate",description:"Command should be emulated but is not implemented",standard:"other"},{name:"SIGFPE",number:8,action:"core",description:"Floating point arithmetic error",standard:"ansi"},{name:"SIGKILL",number:9,action:"terminate",description:"Forced termination",standard:"posix",forced:!0},{name:"SIGUSR1",number:10,action:"terminate",description:"Application-specific signal",standard:"posix"},{name:"SIGSEGV",number:11,action:"core",description:"Segmentation fault",standard:"ansi"},{name:"SIGUSR2",number:12,action:"terminate",description:"Application-specific signal",standard:"posix"},{name:"SIGPIPE",number:13,action:"terminate",description:"Broken pipe or socket",standard:"posix"},{name:"SIGALRM",number:14,action:"terminate",description:"Timeout or timer",standard:"posix"},{name:"SIGTERM",number:15,action:"terminate",description:"Termination",standard:"ansi"},{name:"SIGSTKFLT",number:16,action:"terminate",description:"Stack is empty or overflowed",standard:"other"},{name:"SIGCHLD",number:17,action:"ignore",description:"Child process terminated, paused or unpaused",standard:"posix"},{name:"SIGCLD",number:17,action:"ignore",description:"Child process terminated, paused or unpaused",standard:"other"},{name:"SIGCONT",number:18,action:"unpause",description:"Unpaused",standard:"posix",forced:!0},{name:"SIGSTOP",number:19,action:"pause",description:"Paused",standard:"posix",forced:!0},{name:"SIGTSTP",number:20,action:"pause",description:'Paused using CTRL-Z or "suspend"',standard:"posix"},{name:"SIGTTIN",number:21,action:"pause",description:"Background process cannot read terminal input",standard:"posix"},{name:"SIGBREAK",number:21,action:"terminate",description:"User interruption with CTRL-BREAK",standard:"other"},{name:"SIGTTOU",number:22,action:"pause",description:"Background process cannot write to terminal output",standard:"posix"},{name:"SIGURG",number:23,action:"ignore",description:"Socket received out-of-band data",standard:"bsd"},{name:"SIGXCPU",number:24,action:"core",description:"Process timed out",standard:"bsd"},{name:"SIGXFSZ",number:25,action:"core",description:"File too big",standard:"bsd"},{name:"SIGVTALRM",number:26,action:"terminate",description:"Timeout or timer",standard:"bsd"},{name:"SIGPROF",number:27,action:"terminate",description:"Timeout or timer",standard:"bsd"},{name:"SIGWINCH",number:28,action:"ignore",description:"Terminal window size changed",standard:"bsd"},{name:"SIGIO",number:29,action:"terminate",description:"I/O is available",standard:"other"},{name:"SIGPOLL",number:29,action:"terminate",description:"Watched event",standard:"other"},{name:"SIGINFO",number:29,action:"ignore",description:"Request for process information",standard:"other"},{name:"SIGPWR",number:30,action:"terminate",description:"Device running out of power",standard:"systemv"},{name:"SIGSYS",number:31,action:"core",description:"Invalid system call",standard:"other"},{name:"SIGUNUSED",number:31,action:"terminate",description:"Invalid system call",standard:"other"}];var So=function(){let r=wl();return[...vl,...r].map(i0)},i0=function({name:r,number:n,description:s,action:o,forced:c=!1,standard:h}){let{signals:{[r]:d}}=El.constants,P=d!==void 0;return{name:r,number:P?d:n,description:s,supported:P,action:o,forced:c,standard:h}};var s0=function(){return So().reduce(o0,{})},o0=function(r,{name:n,number:s,description:o,supported:c,action:h,forced:d,standard:P}){return{...r,[n]:{name:n,number:s,description:o,supported:c,action:h,forced:d,standard:P}}},xl=s0(),a0=function(){let r=So(),n=64+1,s=Array.from({length:n},(o,c)=>u0(c,r));return Object.assign({},...s)},u0=function(r,n){let s=c0(r,n);if(s===void 0)return{};let{name:o,description:c,supported:h,action:d,forced:P,standard:w}=s;return{[r]:{name:o,number:r,description:c,supported:h,action:d,forced:P,standard:w}}},c0=function(r,n){let s=n.find(({name:o})=>bl.constants.signals[o]===r);return s!==void 0?s:n.find(o=>o.number===r)},Pv=a0();var l0=({timedOut:r,timeout:n,errorCode:s,signal:o,signalDescription:c,exitCode:h,isCanceled:d})=>r?`timed out after ${n} milliseconds`:d?"was canceled":s!==void 0?`failed with ${s}`:o!==void 0?`was killed with ${o} (${c})`:h!==void 0?`failed with exit code ${h}`:"failed",cr=({stdout:r,stderr:n,all:s,error:o,signal:c,exitCode:h,command:d,escapedCommand:P,timedOut:w,isCanceled:v,killed:b,parsed:{options:{timeout:T}}})=>{h=h===null?void 0:h,c=c===null?void 0:c;let C=c===void 0?void 0:xl[c].description,G=o&&o.code,Q=`Command ${l0({timedOut:w,timeout:T,errorCode:G,signal:c,signalDescription:C,exitCode:h,isCanceled:v})}: ${d}`,le=Object.prototype.toString.call(o)==="[object Error]",z=le?`${Q} +${o.message}`:Q,fe=[z,n,r].filter(Boolean).join(` +`);return le?(o.originalMessage=o.message,o.message=fe):o=new Error(fe),o.shortMessage=z,o.command=d,o.escapedCommand=P,o.exitCode=h,o.signal=c,o.signalDescription=C,o.stdout=r,o.stderr=n,s!==void 0&&(o.all=s),"bufferedData"in o&&delete o.bufferedData,o.failed=!0,o.timedOut=Boolean(w),o.isCanceled=v,o.killed=b&&!w,o};var gi=["stdin","stdout","stderr"],f0=r=>gi.some(n=>r[n]!==void 0),Tl=r=>{if(!r)return;let{stdio:n}=r;if(n===void 0)return gi.map(o=>r[o]);if(f0(r))throw new Error(`It's not possible to provide \`stdio\` in combination with one of ${gi.map(o=>`\`${o}\``).join(", ")}`);if(typeof n=="string")return n;if(!Array.isArray(n))throw new TypeError(`Expected \`stdio\` to be of type \`string\` or \`Array\`, got \`${typeof n}\``);let s=Math.max(n.length,gi.length);return Array.from({length:s},(o,c)=>n[c])};var Cl=Me(H("os"),1),Dl=Me(Rl(),1),h0=1e3*5,Bl=(r,n="SIGTERM",s={})=>{let o=r(n);return p0(r,n,s,o),o},p0=(r,n,s,o)=>{if(!d0(n,s,o))return;let c=g0(s),h=setTimeout(()=>{r("SIGKILL")},c);h.unref&&h.unref()},d0=(r,{forceKillAfterTimeout:n},s)=>m0(r)&&n!==!1&&s,m0=r=>r===Cl.default.constants.signals.SIGTERM||typeof r=="string"&&r.toUpperCase()==="SIGTERM",g0=({forceKillAfterTimeout:r=!0})=>{if(r===!0)return h0;if(!Number.isFinite(r)||r<0)throw new TypeError(`Expected the \`forceKillAfterTimeout\` option to be a non-negative integer, got \`${r}\` (${typeof r})`);return r},Ml=(r,n)=>{r.kill()&&(n.isCanceled=!0)},y0=(r,n,s)=>{r.kill(n),s(Object.assign(new Error("Timed out"),{timedOut:!0,signal:n}))},Ol=(r,{timeout:n,killSignal:s="SIGTERM"},o)=>{if(n===0||n===void 0)return o;let c,h=new Promise((P,w)=>{c=setTimeout(()=>{y0(r,s,w)},n)}),d=o.finally(()=>{clearTimeout(c)});return Promise.race([h,d])},Wl=({timeout:r})=>{if(r!==void 0&&(!Number.isFinite(r)||r<0))throw new TypeError(`Expected the \`timeout\` option to be a non-negative integer, got \`${r}\` (${typeof r})`)},Nl=async(r,{cleanup:n,detached:s},o)=>{if(!n||s)return o;let c=(0,Dl.default)(()=>{r.kill()});return o.finally(()=>{c()})};function bo(r){return r!==null&&typeof r=="object"&&typeof r.pipe=="function"}var ko=Me(ql(),1),Yl=Me(Jl(),1),Kl=(r,n)=>{n===void 0||r.stdin===void 0||(bo(n)?n.pipe(r.stdin):r.stdin.end(n))},Ql=(r,{all:n})=>{if(!n||!r.stdout&&!r.stderr)return;let s=(0,Yl.default)();return r.stdout&&s.add(r.stdout),r.stderr&&s.add(r.stderr),s},To=async(r,n)=>{if(!!r){r.destroy();try{return await n}catch(s){return s.bufferedData}}},Ao=(r,{encoding:n,buffer:s,maxBuffer:o})=>{if(!(!r||!s))return n?(0,ko.default)(r,{encoding:n,maxBuffer:o}):ko.default.buffer(r,{maxBuffer:o})},zl=async({stdout:r,stderr:n,all:s},{encoding:o,buffer:c,maxBuffer:h},d)=>{let P=Ao(r,{encoding:o,buffer:c,maxBuffer:h}),w=Ao(n,{encoding:o,buffer:c,maxBuffer:h}),v=Ao(s,{encoding:o,buffer:c,maxBuffer:h*2});try{return await Promise.all([d,P,w,v])}catch(b){return Promise.all([{error:b,signal:b.signal,timedOut:b.timedOut},To(r,P),To(n,w),To(s,v)])}},Xl=({input:r})=>{if(bo(r))throw new TypeError("The `input` option cannot be a stream in sync mode")};var T0=(async()=>{})().constructor.prototype,A0=["then","catch","finally"].map(r=>[r,Reflect.getOwnPropertyDescriptor(T0,r)]),Lo=(r,n)=>{for(let[s,o]of A0){let c=typeof n=="function"?(...h)=>Reflect.apply(o.value,n(),h):o.value.bind(n);Reflect.defineProperty(r,s,{...o,value:c})}return r},Zl=r=>new Promise((n,s)=>{r.on("exit",(o,c)=>{n({exitCode:o,signal:c})}),r.on("error",o=>{s(o)}),r.stdin&&r.stdin.on("error",o=>{s(o)})});var Vl=(r,n=[])=>Array.isArray(n)?[r,...n]:[r],k0=/^[\w.-]+$/,L0=/"/g,I0=r=>typeof r!="string"||k0.test(r)?r:`"${r.replace(L0,'\\"')}"`,Io=(r,n)=>Vl(r,n).join(" "),Fo=(r,n)=>Vl(r,n).map(s=>I0(s)).join(" ");var F0=1e3*1e3*100,R0=({env:r,extendEnv:n,preferLocal:s,localDir:o,execPath:c})=>{let h=n?{...hr.default.env,...r}:r;return s?gl({env:h,cwd:o,execPath:c}):h},ef=(r,n,s={})=>{let o=$l.default._parse(r,n,s);return r=o.command,n=o.args,s=o.options,s={maxBuffer:F0,buffer:!0,stripFinalNewline:!0,extendEnv:!0,preferLocal:!1,localDir:s.cwd||hr.default.cwd(),execPath:hr.default.execPath,encoding:"utf8",reject:!0,cleanup:!0,all:!1,windowsHide:!0,...s},s.env=R0(s),s.stdio=Tl(s),hr.default.platform==="win32"&&_l.default.basename(r,".exe")==="cmd"&&n.unshift("/q"),{file:r,args:n,options:s,parsed:o}},pr=(r,n,s)=>typeof n!="string"&&!jl.Buffer.isBuffer(n)?s===void 0?void 0:"":r.stripFinalNewline?yo(n):n;function tf(r,n,s){let o=ef(r,n,s),c=Io(r,n),h=Fo(r,n);Wl(o.options);let d;try{d=Ei.default.spawn(o.file,o.args,o.options)}catch(G){let N=new Ei.default.ChildProcess,Q=Promise.reject(cr({error:G,stdout:"",stderr:"",all:"",command:c,escapedCommand:h,parsed:o,timedOut:!1,isCanceled:!1,killed:!1}));return Lo(N,Q)}let P=Zl(d),w=Ol(d,o.options,P),v=Nl(d,o.options,w),b={isCanceled:!1};d.kill=Bl.bind(null,d.kill.bind(d)),d.cancel=Ml.bind(null,d,b);let C=Pl(async()=>{let[{error:G,exitCode:N,signal:Q,timedOut:le},z,fe,me]=await zl(d,o.options,v),xe=pr(o.options,z),j=pr(o.options,fe),We=pr(o.options,me);if(G||N!==0||Q!==null){let ye=cr({error:G,exitCode:N,signal:Q,stdout:xe,stderr:j,all:We,command:c,escapedCommand:h,parsed:o,timedOut:le,isCanceled:b.isCanceled||(o.options.signal?o.options.signal.aborted:!1),killed:d.killed});if(!o.options.reject)return ye;throw ye}return{command:c,escapedCommand:h,exitCode:0,stdout:xe,stderr:j,all:We,failed:!1,timedOut:!1,isCanceled:!1,killed:!1}});return Kl(d,o.options.input),d.all=Ql(d,o.options),Lo(d,C)}function Ro(r,n,s){let o=ef(r,n,s),c=Io(r,n),h=Fo(r,n);Xl(o.options);let d;try{d=Ei.default.spawnSync(o.file,o.args,o.options)}catch(v){throw cr({error:v,stdout:"",stderr:"",all:"",command:c,escapedCommand:h,parsed:o,timedOut:!1,isCanceled:!1,killed:!1})}let P=pr(o.options,d.stdout,d.error),w=pr(o.options,d.stderr,d.error);if(d.error||d.status!==0||d.signal!==null){let v=cr({stdout:P,stderr:w,error:d.error,signal:d.signal,exitCode:d.status,command:c,escapedCommand:h,parsed:o,timedOut:d.error&&d.error.code==="ETIMEDOUT",isCanceled:!1,killed:d.signal!==null});if(!o.options.reject)return v;throw v}return{command:c,escapedCommand:h,exitCode:0,stdout:P,stderr:w,failed:!1,timedOut:!1,isCanceled:!1,killed:!1}}var Qt=Me(H("fs")),Sr=Me(H("path")),Mf=H("stream");var Ci=Me(H("fs")),kf=Me(H("path")),Lf=H("stream"),Ge=H("@yarnpkg/core"),Di=H("@yarnpkg/fslib"),If=H("@yarnpkg/plugin-pnp"),Ff=Me(Tf()),Rf=Me(Af());var Pr=H("@yarnpkg/core");function wr(r){let n=Pr.structUtils.parseLocator(r),s=Pr.structUtils.parseRange(n.reference);return s.protocol==="patch:"?Pr.structUtils.stringifyLocator({...n,reference:Pr.structUtils.makeRange({...s,params:null})}):r}async function Xo(r,{outDirectory:n,packageRegistryDataPath:s,topLevelPackageLocatorString:o}){let c=(0,If.getPnpPath)({cwd:n}),h=r.configuration.get("pnpFallbackMode"),d=r.configuration.get("pnpIgnorePatterns"),P=[],w=h!=="none",v=new Map,b=Ge.miscUtils.buildIgnorePattern([".yarn/sdks/**",...d]),T="#!/usr/bin/env node",C=new Map,G=wr(o),N=await NS(r,JSON.parse(Ci.readFileSync(s,"utf8"))),Q=(0,Rf.mapKeys)(N,(xe,j)=>wr(j)),le=null,z=Ci.realpathSync(n);for(let[xe,j]of r.storedPackages){let We=Ge.structUtils.stringifyLocator(j),ye=Ge.structUtils.isVirtualLocator(j),ct=ye?Ge.structUtils.devirtualizeLocator(j):j,bt=Q[Ge.structUtils.stringifyLocator(ct)];if(!bt)continue;let lt=new Map,ft=new Set;for(let[nt,Ot]of Array.from((j==null?void 0:j.peerDependencies)??new Map)){let Xe=Ge.structUtils.stringifyIdent(Ot);lt.set(Xe,null),ft.add(Xe)}Array.from(j.dependencies).forEach(([nt,Ot])=>{let Xe=r.storedResolutions.get(Ot.descriptorHash),qe=Xe!=null?r.storedPackages.get(Xe):null;if(!qe)throw new Error("generatePnpFile(): Failed to resolve "+Ot.name);lt.set(Ge.structUtils.stringifyIdent(Ot),[Ge.structUtils.stringifyIdent(qe),qe.reference])});let zt=bt.packageLocation??bt.packageOut+"/node_modules/"+bt.identString,xt=kf.relative(z,zt),tt=(xt.startsWith("../")?xt:"./"+xt)+"/";ye&&(tt="./"+Di.VirtualFS.makeVirtualPath("./.yarn/__virtual__",Ge.structUtils.slugifyLocator(j),xt)+"/");let ht={packageLocation:tt,packageDependencies:lt,packagePeers:ft,linkType:j.linkType};Ge.miscUtils.getMapWithDefault(C,Ge.structUtils.stringifyIdent(j)).set(j.reference,ht),j.reference.startsWith("workspace:")&&P.push({name:Ge.structUtils.stringifyIdent(j),reference:j.reference}),We===G&&(le=ht)}if(le!=null)Ge.miscUtils.getMapWithDefault(C,null).set(null,le);else throw new Error("Could not determine topLevelPackage, this is NEEDED for the .pnp.cjs to be correctly generated");let me=(0,Ff.generateInlinedScript)({dependencyTreeRoots:P,enableTopLevelFallback:w,fallbackExclusionList:h==="dependencies-only"?P:[],fallbackPool:v,ignorePattern:b,packageRegistry:C,shebang:T});await Di.xfs.changeFilePromise(c.cjs,me,{automaticNewlines:!0,mode:493})}async function NS(r,n){let s=new Ge.StreamReport({stdout:new Lf.PassThrough,configuration:r.configuration});return await r.resolveEverything({lockfileOnly:!0,checkResolutions:!1,report:s,cache:null,resolver:null}),n}var GS=Cf(),Zo;function Vo(){if(Zo)return Zo;let r=JSON.parse(Ro("nix",["eval","--impure","--json","--expr","builtins.currentSystem"]).stdout);return Zo=r,r}async function Of(r){try{let n=["eval","--json","--impure","--expr",GS+` getPackages (import ${r}) - `],{stdout:t}=await Gn("nix",e,{stderr:"ignore"});return JSON.parse(t)}catch{return null}}var{Configuration:qe,Project:Ge,Cache:Ya,StreamReport:ar,Manifest:ds,tgzUtils:Qa,structUtils:v,miscUtils:sr,scriptUtils:Ka}=F("@yarnpkg/core"),{BaseCommand:Le}=F("@yarnpkg/cli"),{xfs:or,CwdFS:ps,PortablePath:ms,VirtualFS:ys}=F("@yarnpkg/fslib"),{ZipOpenFS:gs}=F("@yarnpkg/libzip"),{getPnpPath:Va,pnpUtils:Xa}=F("@yarnpkg/plugin-pnp"),{fileUtils:za}=F("@yarnpkg/plugin-file"),{Option:G}=F("clipanion"),J=F("typanion"),lt=class extends Le{constructor(){super(...arguments);this.locator=G.String({validator:J.isString()});this.outDirectory=G.String({validator:J.isString()})}async execute(){let t=await qe.find(process.cwd(),this.context.plugins),{project:n,workspace:s}=await Ge.find(t,process.cwd()),i=t.makeFetcher(),a=await ar.start({configuration:t,stdout:this.context.stdout,includeLogs:!this.context.quiet},async o=>{t.values.set("enableMirror",!1);let c={...JSON.parse(this.locator),locatorHash:"",identHash:""};v.isVirtualLocator(c)&&(c=v.devirtualizeLocator(c));let f={checksums:new Map,project:n,cache:new Ya(this.outDirectory,{check:!1,configuration:t,immutable:!1}),fetcher:i,report:o},g=await i.fetch(c,f);se.renameSync(g.packageFs.target,$.join(this.outDirectory,"output.zip"))})}};lt.paths=[["nix","fetch-by-locator"]];var ut=class extends Le{constructor(){super(...arguments);this.packageRegistryDataPath=G.String({validator:J.isString()})}async execute(){var a;let t=await qe.find(process.cwd(),this.context.plugins),n=new Ge(process.cwd(),{configuration:t});await n.setupResolutions();let s=JSON.parse(se.readFileSync(this.packageRegistryDataPath,"utf8")),i=Object.values(s).filter(o=>!!(o!=null&&o.manifest));for(let o of i){let c=Object.assign({},o.manifest,{name:o.name,reference:o.reference}),f=new Map,g=new Map(Object.entries(c.bin??{})),l=v.makeIdent(c.scope,c.flatName),P=v.makeLocator(l,c.reference),b=v.makeDescriptor(l,c.descriptorRange);c.locatorHash=P.locatorHash,c.descriptorHash=b.descriptorHash,o.manifest.locatorHash=P.locatorHash,o.manifest.descriptorHash=b.descriptorHash;let S={...P,languageName:c.languageName,linkType:c.linkType,conditions:null,dependencies:f,bin:g};n.originalPackages.set(c.locatorHash,S),n.storedResolutions.set(c.descriptorHash,c.locatorHash),c.checksum!=null&&n.storedChecksums.set(c.locatorHash,c.checksum),n.storedDescriptors.set(c.descriptorHash,b)}for(let o of i){let c=n.originalPackages.get(o.manifest.locatorHash);if(!c)continue;let f=o.packageDependencies??{};for(let g of Object.keys(f)){let[l,P]=f[g],b=i.find(S=>(S==null?void 0:S.name)===l&&(S==null?void 0:S.reference)===P);if(((a=b==null?void 0:b.manifest)==null?void 0:a.descriptorHash)!=null){let S=n.storedDescriptors.get(b.manifest.descriptorHash);S!=null&&c.dependencies.set(b.manifest.descriptorHash,S)}}}n.storedPackages=n.originalPackages,await n.persistLockfile()}};ut.paths=[["nix","create-lockfile"]];var ft=class extends Le{constructor(){super(...arguments);this.locator=G.String({validator:J.isString()});this.tgzPath=G.String({validator:J.isString()});this.outPath=G.String({validator:J.isString()})}async execute(){let t=await qe.find(process.cwd(),this.context.plugins),{project:n,workspace:s}=await Ge.find(t,process.cwd()),i={...JSON.parse(this.locator),locatorHash:"",identHash:""},{path:a}=await Qa.convertToZip(se.readFileSync(this.tgzPath),{compressionLevel:n.configuration.get("compressionLevel"),prefixPath:v.getIdentVendorPath(i),stripComponents:1});se.copyFileSync(a,this.outPath)}};ft.paths=[["nix","convert-to-zip"]];var ht=class extends Le{constructor(){super(...arguments);this.outDirectory=G.String({validator:J.isString()});this.packageRegistryDataPath=G.String({validator:J.isString()});this.topLevelPackageLocator=G.String({validator:J.isString()})}async execute(){var B;let t=await qe.find(process.cwd(),this.context.plugins),{project:n,workspace:s}=await Ge.find(t,process.cwd()),i=Va({cwd:this.outDirectory}),a=n.configuration.get("pnpFallbackMode"),o=[],c=a!=="none",f=new Map,g=sr.buildIgnorePattern([".yarn/sdks/**",...n.configuration.get("pnpIgnorePatterns")]),l=n.configuration.get("pnpShebang"),P=new Map,b=JSON.parse(se.readFileSync(this.packageRegistryDataPath,"utf8")),S=null,h=se.realpathSync(this.outDirectory);for(let j of Object.keys(b)){let D=b[j];if(!D)continue;let ee=v.makeIdent(D.manifest.scope,D.manifest.flatName),U=v.makeLocator(ee,D.reference),ie=v.isVirtualLocator(D),X=new Map,me=new Set;for(let Q of((B=D.manifest)==null?void 0:B.packagePeers)??[])X.set(Q,null),me.add(Q);if(D.packageDependencies!=null)for(let Q of Object.keys(D.packageDependencies))X.set(Q,D.packageDependencies[Q]);let ye=D.packageLocation??D.drvPath+"/node_modules/"+D.name,te=$.relative(h,ye),ae=(te.startsWith("../")?te:"./"+te)+"/";ie&&(ae="./"+ys.makeVirtualPath("./.yarn/__virtual__",v.slugifyLocator(U),te)+"/");let oe={packageLocation:ae,packageDependencies:X,packagePeers:me,linkType:D.linkType};sr.getMapWithDefault(P,D.name).set(D.reference,oe),U.reference.startsWith("workspace:")&&o.push({name:v.stringifyIdent(U),reference:U.reference}),`${D.name}@${D.reference}`===this.topLevelPackageLocator&&(S=oe)}if(S!=null)sr.getMapWithDefault(P,null).set(null,S);else throw new Error("Could not determine topLevelPackage, this is NEEDED for the .pnp.cjs to be correctly generated");let L=Ha({dependencyTreeRoots:o,enableTopLevelFallback:c,fallbackExclusionList:a==="dependencies-only"?o:[],fallbackPool:f,ignorePattern:g,packageRegistry:P,shebang:l});await or.changeFilePromise(i.cjs,L,{automaticNewlines:!0,mode:493})}};ht.paths=[["nix","generate-pnp-file"]];var dt=class extends Le{constructor(){super(...arguments);this.binWrappersOutDirectory=G.String({validator:J.isString()});this.pnpOutDirectory=G.String({validator:J.isString()});this.packageRegistryDataPath=G.String({validator:J.isString()});this.topLevelPackageLocator=G.String({validator:J.isString()})}async execute(){var s;let t=JSON.parse(se.readFileSync(this.packageRegistryDataPath,"utf8")),n=se.realpathSync(this.pnpOutDirectory);for(let i of Object.keys(t)){let a=t[i];if(!a)continue;let o=v.makeIdent(a.manifest.scope,a.manifest.flatName),c=v.makeLocator(o,a.reference),f=v.isVirtualLocator(a),g=a.packageLocation??a.drvPath+"/node_modules/"+a.name,l=$.relative(n,g),P=g;if(`${a.name}@${a.reference}`!==this.topLevelPackageLocator){f&&(P=$.join(n,ys.makeVirtualPath("./.yarn/__virtual__",v.slugifyLocator(c),l)));for(let S of Object.keys(((s=a==null?void 0:a.manifest)==null?void 0:s.bin)??{})){let h=$.join(P,a.manifest.bin[S]);await or.writeFilePromise($.join(this.binWrappersOutDirectory,S),`node ${h} "$@"`,{mode:493})}}}}};dt.paths=[["nix","make-path-wrappers"]];var pt=class extends Le{constructor(){super(...arguments);this.locator=G.String({validator:J.isString()});this.pnpRootDirectory=G.String({validator:J.isString()});this.packageDirectory=G.String({validator:J.isString()})}async execute(){let t=await qe.find(process.cwd(),this.context.plugins),{project:n,workspace:s}=await Ge.find(t,process.cwd()),i=JSON.parse(this.locator),a=v.makeIdent(i.scope,i.name),o=v.makeLocator(a,i.reference),c=n.originalPackages.get(o.locatorHash);n.cwd=this.pnpRootDirectory,n.storedPackages=n.originalPackages;let f=await gs.openPromise(async g=>{let l=n.configuration.getLinkers(),P={project:n,report:new ar({stdout:new fs,configuration:t})},b=l.find(L=>L.supportsPackage(c,P));if(!b)throw new Error(`The package ${v.prettyLocator(n.configuration,c)} isn't supported by any of the available linkers`);let S=await b.findPackageLocation(c,P),h=new ps(S,{baseFs:g});return await ds.find(ms.dot,{baseFs:h})});for(let g of["preinstall","install","postinstall"]){if(!f.scripts.has(g))continue;let l=await Ka.executePackageScript(c,g,[],{cwd:this.packageDirectory,project:n,stdin:process.stdin,stdout:process.stdout,stderr:process.stderr});if(l>0)return l}}};pt.paths=[["nix","run-build-scripts"]];var Za={hooks:{afterAllInstalled:async(r,e)=>{let t=r.configuration.getLinkers(),n={project:r,report:null},s=await hs($.join(r.cwd,"yarn-manifest.nix")),i=new Map(t.map(S=>{let h=S.makeInstaller(n),A=S.getCustomDataKey(),L=r.linkersCustomData.get(A);return typeof L<"u"&&h.attachCustomData(L),[S,h]})),a=r.configuration.makeFetcher(),o={checksums:new Map,project:r,cache:null,fetcher:a,report:null},c=r.configuration.makeResolver(),f={project:r,report:e.report,resolver:c},g={};for(let[S,h]of r.storedPackages){let A=v.isVirtualLocator(h),L=A?r.storedPackages.get(v.devirtualizeLocator(h).locatorHash):h,B=t.find(u=>u.supportsPackage(L,n)),j=i.get(B),D=a.getLocalPath(L,o);if(!D){let u=za.parseSpec(L.reference);if((u==null?void 0:u.parentLocator)!=null&&(u==null?void 0:u.path)!=null){let y=a.getLocalPath(u.parentLocator,o),T=$.resolve(y,u.path);T!=null&&(D=T)}}let ee=D!=null?"./"+$.relative(r.cwd,D):null,U=h.reference.startsWith("workspace:")?`./${h.reference.substring(10)}`:ee??null,ie=h.bin!=null?Object.fromEntries(h.bin):null,X=U!=null?!0:(j==null?void 0:j.shouldBeUnplugged)!=null?j.customData.store.get(h.locatorHash)!=null?j.shouldBeUnplugged(h,j.customData.store.get(h.locatorHash),r.getDependencyMeta(v.isVirtualLocator(h)?v.devirtualizeLocator(h):h,h.version)):!1:!0,me=!U&&!X,ye=U!=null&&h.reference.startsWith("patch:"),te=null;if(h.conditions!=null){let u=h.conditions.split("&").map(T=>T.trim().split("=")),y=[];for(let T of u){let w=T[0],k=T[1];if(w==="os")k==="linux"?y.push("stdenv.isLinux"):k==="darwin"?y.push("stdenv.isDarwin"):y.push("false");else if(w==="cpu"){let R={ia32:"stdenv.isi686",x64:"stdenv.isx86_64",arm:"stdenv.isAarch32",arm64:"stdenv.isAarch64"};R[k]!=null?y.push(R[k]):y.push("false")}else w==="libc"&&k!=="glibc"&&y.push("false")}y.length>0&&(te=`stdenv: ${y.map(T=>`(${T})`).join(" && ")}`)}let ae=h.dependencies,oe=new Map;if(L.reference.startsWith("workspace:")){let u=await gs.openPromise(async y=>{let T=r.configuration.getLinkers(),w={project:r,report:new ar({stdout:new fs,configuration:r.configuration})},k=T.find(q=>q.supportsPackage(L,w));if(!k)throw new Error(`The package ${v.prettyLocator(r.configuration,h)} isn't supported by any of the available linkers`);let R=await k.findPackageLocation(L,w),I=new ps(R,{baseFs:y});return await ds.find(ms.dot,{baseFs:I})});u!=null&&(ae=new Map,oe=new Map,Array.from(u.dependencies).map(([y,T])=>ae.set(y,h.dependencies.get(y))),u.devDependencies&&Array.from(u.devDependencies).map(([y,T])=>oe.set(y,h.dependencies.get(y))))}let mt=(await Promise.all(Array.from(ae).map(async([u,y])=>{let T=r.storedResolutions.get(y.descriptorHash),w=T!=null?r.storedPackages.get(T):null;return w?{key:u,name:v.stringifyIdent(y),packageManifestId:v.stringifyIdent(w)+"@"+w.reference}:(console.log("failed to resolve",y),null)}))).filter(u=>!!u),Je=(await Promise.all(Array.from(oe).map(async([u,y])=>{let T=r.storedResolutions.get(y.descriptorHash),w=T!=null?r.storedPackages.get(T):null;return w?{key:u,name:v.stringifyIdent(y),packageManifestId:v.stringifyIdent(w)+"@"+w.reference}:(console.log("failed to resolve",y),null)}))).filter(u=>!!u),Ue=[];for(let u of h.peerDependencies.values())Ue.push(v.stringifyIdent(u));let ge=v.stringifyIdent(h)+"@"+h.reference,ce=s==null?void 0:s[ge],z=ce==null?void 0:ce.outputHash,K=(ce==null?void 0:ce.outputHashByPlatform)??{};await async function(){var u;if(U!=null&&!ye){z=null,K=null;return}else if(me){z=(u=r.storedChecksums.get(h.locatorHash))==null?void 0:u.substring(2),K=null;return}else if(X){if(K[ir()]&&!ye){z=null;return}else{let T=Xa.getUnpluggedPath(h,{configuration:r.configuration});if(T!=null&&await or.existsPromise(T)){let w=await Gt("nix",["hash","path","--type","sha512",T]);if(w.stdout!=null){z=null,K||(K={}),K[ir()]=w.stdout;return}}else if(Object.keys(K).length>0&&z==null)return}z="",K=null;return}else{z=null,K=null;return}}();let p=ja(r.storedResolutions,h.locatorHash),d=r.storedDescriptors.get(p),E=r.storedChecksums.get(h.locatorHash);g[ge]={isVirtual:A,canonicalPackage:L,name:v.stringifyIdent(h),reference:h.reference,linkType:h.linkType,outputName:[v.stringifyIdent(h),h.version,h.locatorHash.substring(0,10)].filter(u=>!!u).join("-").replace(/@/g,"").replace(/[\/]/g,"-"),outputHash:z,outputHashByPlatform:K,src:U,shouldBeUnplugged:X,installCondition:te,bin:ie,flatName:h.name,descriptor:d,languageName:h.languageName,scope:h.scope,checksum:E,dependencies:mt,devDependencies:Je,packagePeers:Ue}}let l=[];l.push('# This file is generated by running "yarn install" inside your project.'),l.push("# It is essentially a version of yarn.lock that Nix can better understand"),l.push("# Manual changes WILL be lost - proceed with caution!"),l.push("let"),l.push(" packages = {");function P(S,h){if(h.length>0){l.push(` ${S} = {`);for(let A of h)l.push(` ${JSON.stringify(A.name)} = packages.${JSON.stringify(A.packageManifestId)};`);l.push(" };")}}let b=Object.keys(g).sort((S,h)=>S.localeCompare(h));for(let S of b){let h=g[S];if(l.push(` "${S}" = {`),l.push(` name = ${JSON.stringify(h.name)};`),l.push(` reference = ${JSON.stringify(h.reference)};`),h.isVirtual&&h.canonicalPackage!=null&&l.push(` canonicalPackage = packages.${JSON.stringify(`${v.stringifyIdent(h.canonicalPackage)}@${h.canonicalPackage.reference}`)};`),!h.isVirtual){if(l.push(` linkType = ${JSON.stringify(h.linkType)};`),l.push(` outputName = ${JSON.stringify(h.outputName)};`),h.outputHash!=null&&l.push(` outputHash = ${JSON.stringify(h.outputHash)};`),h.outputHashByPlatform&&Object.keys(h.outputHashByPlatform).length>0){l.push(" outputHashByPlatform = {");for(let A of Object.keys(h.outputHashByPlatform))l.push(` ${JSON.stringify(A)} = ${JSON.stringify(h.outputHashByPlatform[A])};`);l.push(" };")}if(h.src&&l.push(` src = ${h.src};`),h.shouldBeUnplugged&&l.push(` shouldBeUnplugged = ${h.shouldBeUnplugged};`),h.installCondition&&l.push(` installCondition = ${h.installCondition};`),l.push(` flatName = ${JSON.stringify(h.flatName)};`),l.push(` languageName = ${JSON.stringify(h.languageName)};`),l.push(` scope = ${JSON.stringify(h.scope)};`),l.push(` descriptorRange = ${JSON.stringify(h.descriptor.range)};`),h.checksum&&l.push(` checksum = ${JSON.stringify(h.checksum)};`),h.bin&&Object.keys(h.bin).length>0){l.push(" bin = {");for(let A of Object.keys(h.bin))l.push(` ${JSON.stringify(A)} = ${JSON.stringify(h.bin[A])};`);l.push(" };")}}if(P("dependencies",h.dependencies),P("devDependencies",h.devDependencies),!h.isVirtual&&h.packagePeers&&h.packagePeers.length>0){l.push(" packagePeers = [");for(let A of h.packagePeers)l.push(` ${JSON.stringify(A)}`);l.push(" ];")}l.push(" };")}l.push(" };"),l.push("in"),l.push("packages"),l.push(""),se.writeFileSync($.join(r.cwd,"yarn-manifest.nix"),l.join(` -`),"utf8")},populateYarnPaths:async r=>{let e=process.env.YARNNIX_PACKAGE_REGISTRY_DATA_PATH;if(e){let t=JSON.parse(se.readFileSync(e,"utf8")),n=Object.values(t).filter(s=>!!(s!=null&&s.manifest));for(let s of n)s.canonicalReference.startsWith("workspace:")&&s.drvPath!==process.env.out&&await r.addWorkspace(s.packageLocation??$.join(s.drvPath,"node_modules",s.name))}}},commands:[ut,lt,ft,ht,dt,pt]};return Fs(_a);})(); + `],{stdout:s}=await tf("nix",n,{stderr:"ignore"});return JSON.parse(s)}catch{return null}}var Bi=class extends vr.BaseCommand{constructor(){super(...arguments);this.locator=Et.Option.String({validator:vt.isString()});this.outDirectory=Et.Option.String({validator:vt.isString()})}async execute(){let s=await X.Configuration.find(ze.ppath.cwd(),this.context.plugins),{project:o,workspace:c}=await X.Project.find(s,ze.ppath.cwd()),h=s.makeFetcher(),d=await X.StreamReport.start({configuration:s,stdout:this.context.stdout,includeLogs:!this.context.quiet},async P=>{s.values.set("enableMirror",!1);let w={...JSON.parse(this.locator),locatorHash:"",identHash:""};w=X.structUtils.parseLocator(X.structUtils.stringifyLocator(w)),X.structUtils.isVirtualLocator(w)&&(w=X.structUtils.devirtualizeLocator(w));let v={checksums:new Map,project:o,cache:new X.Cache(this.outDirectory,{check:!1,configuration:s,immutable:!1}),fetcher:h,report:P},b=await h.fetch(w,v);Qt.renameSync(b.packageFs.target,Sr.join(this.outDirectory,"output.zip"))})}};Bi.paths=[["nix","fetch-by-locator"]];var Mi=class extends vr.BaseCommand{constructor(){super(...arguments);this.locator=Et.Option.String({validator:vt.isString()});this.tgzPath=Et.Option.String({validator:vt.isString()});this.outPath=Et.Option.String({validator:vt.isString()})}async execute(){let s=await X.Configuration.find(ze.ppath.cwd(),this.context.plugins),{project:o,workspace:c}=await X.Project.find(s,ze.ppath.cwd()),h={...JSON.parse(this.locator),locatorHash:"",identHash:""},{path:d}=await X.tgzUtils.convertToZip(Qt.readFileSync(this.tgzPath),{compressionLevel:o.configuration.get("compressionLevel"),prefixPath:X.structUtils.getIdentVendorPath(h),stripComponents:1});Qt.copyFileSync(d,this.outPath)}};Mi.paths=[["nix","convert-to-zip"]];var Oi=class extends vr.BaseCommand{constructor(){super(...arguments);this.outDirectory=Et.Option.String({validator:vt.isString()});this.packageRegistryDataPath=Et.Option.String({validator:vt.isString()});this.topLevelPackageLocatorString=Et.Option.String({validator:vt.isString()})}async execute(){let s=await X.Configuration.find(ze.ppath.cwd(),this.context.plugins),{project:o,workspace:c}=await X.Project.find(s,ze.ppath.cwd());await Xo(o,{outDirectory:this.outDirectory,packageRegistryDataPath:this.packageRegistryDataPath,topLevelPackageLocatorString:this.topLevelPackageLocatorString})}};Oi.paths=[["nix","generate-pnp-file"]];var Wi=class extends vr.BaseCommand{constructor(){super(...arguments);this.topLevelPackageLocatorString=Et.Option.String({validator:vt.isString()});this.pnpRootDirectory=Et.Option.String({validator:vt.isString()});this.packageDirectory=Et.Option.String({validator:vt.isString()})}async execute(){let s=await X.Configuration.find(ze.ppath.cwd(),this.context.plugins),{project:o}=await X.Project.find(s,ze.ppath.cwd()),c=X.structUtils.parseLocator(wr(this.topLevelPackageLocatorString)),h=o.originalPackages.get(c.locatorHash);if(!h)throw new Error("runBuildScripts(): Could not determine top level package "+this.topLevelPackageLocatorString);o.cwd=this.pnpRootDirectory,o.storedPackages=o.originalPackages;let d=await Df.ZipOpenFS.openPromise(async P=>{let w=o.configuration.getLinkers(),v={project:o,report:new X.StreamReport({stdout:new Mf.PassThrough,configuration:s})},b=w.find(N=>N.supportsPackage(h,v));if(!b)throw new Error(`The package ${X.structUtils.prettyLocator(o.configuration,h)} isn't supported by any of the available linkers`);let T=await b.findPackageLocation(h,v),C=new ze.CwdFS(T,{baseFs:P});return await X.Manifest.find(ze.PortablePath.dot,{baseFs:C})});for(let P of["preinstall","install","postinstall"]){if(!d.scripts.has(P))continue;let w=await X.scriptUtils.executePackageScript(h,P,[],{cwd:this.packageDirectory,project:o,stdin:process.stdin,stdout:process.stdout,stderr:process.stderr});if(w>0)return w}}};Wi.paths=[["nix","run-build-scripts"]];var qS={hooks:{afterAllInstalled:async(r,n)=>{let s=r.configuration.getLinkers(),o={project:r,report:null},c=await Of(Sr.join(r.cwd,"yarn-manifest.nix")),h=new Map(s.map(v=>{let b=v.makeInstaller(o),T=v.getCustomDataKey(),C=r.linkersCustomData.get(T);return typeof C<"u"&&b.attachCustomData(C),[v,b]})),d={};for(let[v,b]of r.storedPackages){if(X.structUtils.isVirtualLocator(b))continue;let C=r.originalPackages.get(v),G={};Array.from(b.dependencies).forEach(async([We,ye])=>{let ct=X.structUtils.ensureDevirtualizedDescriptor(ye),bt=C.dependencies.get(We);if(bt!=null){let lt=X.structUtils.ensureDevirtualizedDescriptor(bt),ft=X.structUtils.makeRange({...X.structUtils.parseRange(lt.range),params:null}),zt=X.structUtils.makeRange({...X.structUtils.parseRange(ct.range),params:null});if(ft!==zt){let xt=r.storedResolutions.get(ye.descriptorHash),tt=xt!=null?r.storedPackages.get(xt):null;if(!tt)return console.log("failed to resolve",ye),null;G[X.structUtils.stringifyIdent(ye)]=X.structUtils.stringifyLocator(X.structUtils.ensureDevirtualizedLocator(tt))}}else{let lt=r.storedResolutions.get(ye.descriptorHash),ft=lt!=null?r.storedPackages.get(lt):null;if(!ft)return console.log("failed to resolve",ye),null;G[X.structUtils.stringifyIdent(ye)]=X.structUtils.stringifyLocator(ft)}});let N=s.find(We=>We.supportsPackage(b,o)),Q=h.get(N),le=b.reference.startsWith("workspace:")||b.reference.startsWith("file:")||b.reference.startsWith("portal:"),z=(Q==null?void 0:Q.shouldBeUnplugged)!=null?Q.customData.store.get(b.locatorHash)!=null?Q.shouldBeUnplugged(b,Q.customData.store.get(b.locatorHash),r.getDependencyMeta(X.structUtils.isVirtualLocator(b)?X.structUtils.devirtualizeLocator(b):b,b.version)):!1:!0,fe=X.structUtils.stringifyIdent(b)+"@"+b.reference,me=c==null?void 0:c[fe],xe=me==null?void 0:me.outputHash,j=(me==null?void 0:me.outputHashByPlatform)??{};await async function(){if(le){xe=null,j=null;return}else if(z){if(j[Vo()]){xe=null;return}else{let ye=Bf.pnpUtils.getUnpluggedPath(b,{configuration:r.configuration});if(ye!=null&&await ze.xfs.existsPromise(ye)){let ct=await Ro("nix",["hash","path","--type","sha512",ye]);if(ct.stdout!=null){xe=null,j||(j={}),j[Vo()]=ct.stdout;return}}else if(Object.keys(j).length>0&&xe==null)return}xe="",j=null;return}else{xe=null,j=null;return}}(),(z||Object.keys(G).length>0)&&(d[fe]={shouldBeUnplugged:z,outputHash:xe,outputHashByPlatform:j,dependencies:G})}let P=[];P.push('# This file is generated by running "yarn install" inside your project.'),P.push("# It is essentially a version of yarn.lock that Nix can better understand"),P.push("# Manual changes WILL be lost - proceed with caution!"),P.push("{");let w=Object.keys(d).sort((v,b)=>v.localeCompare(b));for(let v of w){let b=d[v];if(P.push(` "${v}" = {`),b.shouldBeUnplugged&&P.push(` shouldBeUnplugged = ${b.shouldBeUnplugged};`),b.outputHash!=null&&P.push(` outputHash = ${JSON.stringify(b.outputHash)};`),b.outputHashByPlatform&&Object.keys(b.outputHashByPlatform).length>0){P.push(" outputHashByPlatform = {");for(let T of Object.keys(b.outputHashByPlatform))P.push(` ${JSON.stringify(T)} = ${JSON.stringify(b.outputHashByPlatform[T])};`);P.push(" };")}if(b.dependencies&&Object.keys(b.dependencies).length>0){P.push(" dependencies = {");for(let T of Object.keys(b.dependencies))P.push(` ${JSON.stringify(T)} = ${JSON.stringify(b.dependencies[T])};`);P.push(" };")}P.push(" };")}P.push("}"),P.push(""),Qt.writeFileSync(Sr.join(r.cwd,"yarn-manifest.nix"),P.join(` +`),"utf8")},populateYarnPaths:async r=>{let n=process.env.YARNNIX_PACKAGE_REGISTRY_DATA_PATH;if(n){let s=JSON.parse(Qt.readFileSync(n,"utf8")),o=Object.entries(s);for(let[c,h]of o)X.structUtils.parseLocator(c).reference.startsWith("workspace:")&&await r.addWorkspace(h.packageLocation??Sr.join(h.packageOut,"node_modules",h.identString))}}},commands:[Bi,Mi,Oi,Wi]};return Ew(HS);})(); /** @license Copyright Node.js contributors. All rights reserved. @@ -139,6 +158,14 @@ ${n.message}`:h,B=[L,e,r].filter(Boolean).join(` FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/** + * @license + * Lodash + * Copyright OpenJS Foundation and other contributors + * Released under MIT license + * Based on Underscore.js 1.8.3 + * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + */ return plugin; } }; diff --git a/plugin/package.json b/plugin/package.json index 331234e..23a82a8 100644 --- a/plugin/package.json +++ b/plugin/package.json @@ -8,9 +8,15 @@ "@yarnpkg/core": "^4.0.0-rc.26", "@yarnpkg/pnp": "^4.0.0-rc.26", "execa": "^6.1.0", + "lodash": "^4.17.21", "typescript": "4.9.1-beta" }, "scripts": { + "dev": "nodemon --ignore dist --ext ts --exec 'builder build plugin && mv bundles/@yarnpkg/plugin-yarnpnp2nix.js dist/'", "build": "builder build plugin && mv bundles/@yarnpkg/plugin-yarnpnp2nix.js dist/" + }, + "devDependencies": { + "@types/lodash": "^4", + "nodemon": "^2.0.20" } } diff --git a/plugin/sources/generatePnpFile.ts b/plugin/sources/generatePnpFile.ts new file mode 100644 index 0000000..0c86571 --- /dev/null +++ b/plugin/sources/generatePnpFile.ts @@ -0,0 +1,130 @@ +import * as fs from 'node:fs' +import * as path from 'node:path' +import { PassThrough } from 'node:stream' +import { Project, StreamReport, structUtils, miscUtils } from '@yarnpkg/core' +import { xfs, VirtualFS } from '@yarnpkg/fslib' +import { getPnpPath } from '@yarnpkg/plugin-pnp' +import { generateInlinedScript } from '@yarnpkg/pnp' +import { mapKeys } from 'lodash' +import { cleanLocatorString } from './lib' + +export default async function generatePnpFile(project: Project, { outDirectory, packageRegistryDataPath, topLevelPackageLocatorString}: { + outDirectory: string, + packageRegistryDataPath: string, + topLevelPackageLocatorString: string, +}) { + const pnpPath = getPnpPath({ cwd: outDirectory } as any); + + const pnpFallbackMode = project.configuration.get(`pnpFallbackMode`); + const pnpIgnorePatterns = project.configuration.get(`pnpIgnorePatterns`); + + const dependencyTreeRoots: any[] = [] //project.workspaces.map(({anchoredLocator}) => ({name: structUtils.stringifyIdent(anchoredLocator), reference: anchoredLocator.reference})); + const enableTopLevelFallback = pnpFallbackMode !== `none`; + const fallbackPool = new Map(); + const ignorePattern = miscUtils.buildIgnorePattern([`.yarn/sdks/**`, ...pnpIgnorePatterns]); + // const shebang = project.configuration.get(`pnpShebang`); + const shebang = '#!/usr/bin/env node' + + const packageRegistry = new Map() + + const topLevelPackageLocatorClean = cleanLocatorString(topLevelPackageLocatorString) + + const _packageRegistryData = await resolvePackageRegistryData(project, JSON.parse(fs.readFileSync(packageRegistryDataPath, 'utf8'))) + + const cleanedPackageRegistryData = mapKeys(_packageRegistryData, (value, key) => cleanLocatorString(key)) + + let topLevelPackage = null + + const outDirectoryReal = fs.realpathSync(outDirectory) + + for (const [__, pkg] of project.storedPackages) { + const stringifiedLocator = structUtils.stringifyLocator(pkg) + const isVirtual = structUtils.isVirtualLocator(pkg); + + const devirtualisedLocator = isVirtual ? structUtils.devirtualizeLocator(pkg) : pkg + + const devirtualisedPkgData = cleanedPackageRegistryData[structUtils.stringifyLocator(devirtualisedLocator)] + if (!devirtualisedPkgData) { + continue + } + + const packageDependencies = new Map() + const packagePeers = new Set() + + for (const [__, descriptor] of Array.from(pkg?.peerDependencies ?? new Map())) { + const ident = structUtils.stringifyIdent(descriptor) + packageDependencies.set(ident, null); + packagePeers.add(ident); + } + + Array.from(pkg.dependencies).forEach(([key, value]) => { + const resolutionHash = project.storedResolutions.get(value.descriptorHash) + let resolvedPkg = resolutionHash != null ? project.storedPackages.get(resolutionHash) : + null + if (!resolvedPkg) { + throw new Error('generatePnpFile(): Failed to resolve ' + value.name) + } + packageDependencies.set(structUtils.stringifyIdent(value), [structUtils.stringifyIdent(resolvedPkg), resolvedPkg.reference]) + }) + + const packageLocationAbs = devirtualisedPkgData.packageLocation ?? (devirtualisedPkgData.packageOut + '/node_modules/' + devirtualisedPkgData.identString) + const relativePackageLocation = path.relative(outDirectoryReal, packageLocationAbs) + let packageLocation = (relativePackageLocation.startsWith('../') ? relativePackageLocation : ('./' + relativePackageLocation)) + '/' + + if (isVirtual) { + packageLocation = './' + VirtualFS.makeVirtualPath('./.yarn/__virtual__' as any, structUtils.slugifyLocator(pkg), relativePackageLocation as any) + '/' + } + + const packageData = { + packageLocation, + packageDependencies, + packagePeers, + linkType: pkg.linkType, + // discardFromLookup: fetchResult.discardFromLookup || false, + } + + miscUtils.getMapWithDefault(packageRegistry, structUtils.stringifyIdent(pkg)).set(pkg.reference, packageData); + + if (pkg.reference.startsWith('workspace:')) { + dependencyTreeRoots.push({ + name: structUtils.stringifyIdent(pkg), + reference: pkg.reference, + }) + } + + if (stringifiedLocator === topLevelPackageLocatorClean) { + topLevelPackage = packageData + } + } + + if (topLevelPackage != null) { + miscUtils.getMapWithDefault(packageRegistry, null).set(null, topLevelPackage); + } else { + throw new Error('Could not determine topLevelPackage, this is NEEDED for the .pnp.cjs to be correctly generated') + } + + const pnpSettings = { + dependencyTreeRoots, + enableTopLevelFallback, + fallbackExclusionList: pnpFallbackMode === `dependencies-only` ? dependencyTreeRoots : [], + fallbackPool, + ignorePattern, + packageRegistry, + shebang, + } + + const loaderFile = generateInlinedScript(pnpSettings); + + await xfs.changeFilePromise(pnpPath.cjs, loaderFile, { + automaticNewlines: true, + mode: 0o755, + }); +} + +async function resolvePackageRegistryData(project: Project, packageRegistryData: any) { + const report = new StreamReport({ stdout: new PassThrough(), configuration: project.configuration }) + + await project.resolveEverything({ lockfileOnly: true, checkResolutions: false, report, cache: null, resolver: null }) + + return packageRegistryData +} diff --git a/plugin/sources/index.ts b/plugin/sources/index.ts index 4f19270..1481007 100644 --- a/plugin/sources/index.ts +++ b/plugin/sources/index.ts @@ -1,25 +1,22 @@ -import {Plugin} from '@yarnpkg/core'; -import {BaseCommand} from '@yarnpkg/cli'; -import {Option} from 'clipanion'; -import { execa, execaSync } from 'execa'; +import { Configuration, Project, Cache, StreamReport, Manifest, tgzUtils, structUtils, scriptUtils } from '@yarnpkg/core' +import { BaseCommand } from '@yarnpkg/cli' +import { Installer, Linker } from '@yarnpkg/core' +import { xfs, CwdFS, PortablePath, ppath } from '@yarnpkg/fslib' +import { ZipOpenFS } from '@yarnpkg/libzip' +import { pnpUtils } from '@yarnpkg/plugin-pnp' +import * as t from 'typanion' +import { Option } from 'clipanion' +import { execa, execaSync } from 'execa' +import * as fs from 'node:fs' +import * as path from 'node:path' +import { PassThrough } from 'node:stream' +import generatePnpFile from './generatePnpFile' +import { cleanLocatorString } from './lib' let getExistingManifestNix = require('../../lib/getExistingManifest.nix.txt') -const fs = require('fs') -const path = require('path') -const { PassThrough } = require('stream') -const { spawnSync } = require('child_process') -const { generateInlinedScript } = require('@yarnpkg/pnp') - let _nixCurrentSystem: string -function getByValue(map, searchValue) { - for (let [key, value] of map.entries()) { - if (value === searchValue) - return key; - } -} - export function nixCurrentSystem() { if (!!_nixCurrentSystem) return _nixCurrentSystem const res = JSON.parse(execaSync('nix', [ @@ -53,15 +50,6 @@ export async function getExistingYarnManifest(manifestPath: string) { } } -const { Configuration, Project, Cache, StreamReport, Manifest, tgzUtils, structUtils, miscUtils, scriptUtils } = require("@yarnpkg/core") -const { BaseCommand } = require('@yarnpkg/cli') -const { xfs, CwdFS, PortablePath, VirtualFS } = require('@yarnpkg/fslib') -const { ZipOpenFS } = require('@yarnpkg/libzip') -const { getPnpPath, pnpUtils } = require('@yarnpkg/plugin-pnp') -const { fileUtils } = require('@yarnpkg/plugin-file') -const { Option } = require('clipanion') -const t = require('typanion') - class FetchCommand extends BaseCommand { static paths = [['nix', 'fetch-by-locator']] @@ -69,8 +57,8 @@ class FetchCommand extends BaseCommand { outDirectory = Option.String({validator: t.isString()}) async execute() { - const configuration = await Configuration.find(process.cwd(), this.context.plugins); - const {project, workspace} = await Project.find(configuration, process.cwd()); + const configuration = await Configuration.find(ppath.cwd(), this.context.plugins); + const {project, workspace} = await Project.find(configuration, ppath.cwd()); const fetcher = configuration.makeFetcher() @@ -87,107 +75,20 @@ class FetchCommand extends BaseCommand { identHash: '', } + locator = structUtils.parseLocator(structUtils.stringifyLocator(locator)) + if (structUtils.isVirtualLocator(locator)) { locator = structUtils.devirtualizeLocator(locator) } - const fetchOptions = { checksums: new Map(), project, cache: new Cache(this.outDirectory, { check: false, configuration, immutable: false }), fetcher, report } + const fetchOptions = { checksums: new Map(), project, cache: new Cache(this.outDirectory as any, { check: false, configuration, immutable: false }), fetcher, report } const fetched = await fetcher.fetch(locator, fetchOptions) - fs.renameSync(fetched.packageFs.target, path.join(this.outDirectory, 'output.zip')) + fs.renameSync((fetched.packageFs as any).target, path.join(this.outDirectory, 'output.zip')) }); } } -class CreateLockFileCommand extends BaseCommand { - static paths = [['nix', 'create-lockfile']] - - packageRegistryDataPath = Option.String({validator: t.isString()}) - - async execute() { - const configuration = await Configuration.find(process.cwd(), this.context.plugins); - - const project = new Project(process.cwd(), { configuration }) - await project.setupResolutions() - - const packageRegistryData = JSON.parse(fs.readFileSync(this.packageRegistryDataPath, 'utf8')) - - const packageRegistryPackages: any[] = Object.values(packageRegistryData).filter(pkg => !!pkg?.manifest) - - for (const _package of packageRegistryPackages) { - const pkg = Object.assign({}, _package.manifest, { name: _package.name, reference: _package.reference }) - // { - // identHash: '9ca470fa61f45e067b8912c4342a3400ef0a72ba40cc23c2c0b328fe2213be1f145c35685252f614b708022def6c86380b66b07686cf36dd332caae8d849136f', - // scope: null, - // name: 'typescript', - // locatorHash: '9c0a3355115b252fc54c3916c6fcccf92c84041e4ac48c6ff1334782d6b0b707fd13645250cee7bae78e22cc73b5b806db08dd49dd0afa0ffcb6adeb10543ad6', - // reference: 'npm:4.8.4', - // version: '4.8.4', - // languageName: 'node', - // linkType: 'HARD', - // conditions: null, - // dependencies: Map(0) {}, - // peerDependencies: Map(0) {}, - // dependenciesMeta: Map(0) {}, - // peerDependenciesMeta: Map(0) {}, - // bin: Map(2) { 'tsc' => 'bin/tsc', 'tsserver' => 'bin/tsserver' } - // } - - const dependencies = new Map() - const bin = new Map(Object.entries(pkg.bin ?? {})) - - const ident = structUtils.makeIdent(pkg.scope, pkg.flatName) - const locator = structUtils.makeLocator(ident, pkg.reference) - const descriptor = structUtils.makeDescriptor(ident, pkg.descriptorRange) - - pkg.locatorHash = locator.locatorHash - pkg.descriptorHash = descriptor.descriptorHash - _package.manifest.locatorHash = locator.locatorHash - _package.manifest.descriptorHash = descriptor.descriptorHash - - const origPackage = { - ...locator, - languageName: pkg.languageName, - linkType: pkg.linkType, - conditions: null, - dependencies, - bin, - } - project.originalPackages.set(pkg.locatorHash, origPackage) - - // storedResolutions is a map of descriptorHash -> locatorHash - project.storedResolutions.set(pkg.descriptorHash, pkg.locatorHash) - - // storedChecksums is a map of locatorHash -> checksum - if (pkg.checksum != null) project.storedChecksums.set(pkg.locatorHash, pkg.checksum) - - project.storedDescriptors.set(pkg.descriptorHash, descriptor) - } - - for (const _package of packageRegistryPackages) { - const pkg = project.originalPackages.get(_package.manifest.locatorHash) - if (!pkg) continue - - const pkgDependencies = _package.packageDependencies ?? {} - - for (const dependencyName of Object.keys(pkgDependencies)) { - const [depPkgName, depPkgReference] = pkgDependencies[dependencyName] - const depPkg = packageRegistryPackages.find(pkg => pkg?.name === depPkgName && pkg?.reference === depPkgReference) - if (depPkg?.manifest?.descriptorHash != null) { - const depPkgDescriptor = project.storedDescriptors.get(depPkg.manifest.descriptorHash) - if (depPkgDescriptor != null) { - pkg.dependencies.set(depPkg.manifest.descriptorHash, depPkgDescriptor) - } - } - } - } - - project.storedPackages = project.originalPackages - - await project.persistLockfile() - } -} - class ConvertToZipCommand extends BaseCommand { static paths = [['nix', 'convert-to-zip']] @@ -196,8 +97,8 @@ class ConvertToZipCommand extends BaseCommand { outPath = Option.String({validator: t.isString()}) async execute() { - const configuration = await Configuration.find(process.cwd(), this.context.plugins); - const {project, workspace} = await Project.find(configuration, process.cwd()); + const configuration = await Configuration.find(ppath.cwd(), this.context.plugins); + const {project, workspace} = await Project.find(configuration, ppath.cwd()); const locator = { ...(JSON.parse(this.locator)), @@ -205,11 +106,11 @@ class ConvertToZipCommand extends BaseCommand { identHash: '', } - const { path } = await tgzUtils.convertToZip(fs.readFileSync(this.tgzPath), { + const { path } = (await tgzUtils.convertToZip(fs.readFileSync(this.tgzPath), { compressionLevel: project.configuration.get(`compressionLevel`), prefixPath: structUtils.getIdentVendorPath(locator), stripComponents: 1, - }) + })) as any fs.copyFileSync(path, this.outPath) } } @@ -219,176 +120,40 @@ class GeneratePnpFile extends BaseCommand { outDirectory = Option.String({validator: t.isString()}) packageRegistryDataPath = Option.String({validator: t.isString()}) - topLevelPackageLocator = Option.String({validator: t.isString()}) + topLevelPackageLocatorString = Option.String({validator: t.isString()}) async execute() { - const configuration = await Configuration.find(process.cwd(), this.context.plugins); - const {project, workspace} = await Project.find(configuration, process.cwd()); - - const pnpPath = getPnpPath({ cwd: this.outDirectory }); - - const pnpFallbackMode = project.configuration.get(`pnpFallbackMode`); - - const dependencyTreeRoots = [] //project.workspaces.map(({anchoredLocator}) => ({name: structUtils.stringifyIdent(anchoredLocator), reference: anchoredLocator.reference})); - const enableTopLevelFallback = pnpFallbackMode !== `none`; - const fallbackPool = new Map(); - const ignorePattern = miscUtils.buildIgnorePattern([`.yarn/sdks/**`, ...project.configuration.get(`pnpIgnorePatterns`)]); - const shebang = project.configuration.get(`pnpShebang`); - - const packageRegistry = new Map() + const configuration = await Configuration.find(ppath.cwd(), this.context.plugins); + const {project, workspace} = await Project.find(configuration, ppath.cwd()); - const packageRegistryData = JSON.parse(fs.readFileSync(this.packageRegistryDataPath, 'utf8')) - - let topLevelPackage = null - - const outDirectoryReal = fs.realpathSync(this.outDirectory) - - for (const pkgIdent of Object.keys(packageRegistryData)) { - const pkg = packageRegistryData[pkgIdent] - if (!pkg) continue - - const ident = structUtils.makeIdent(pkg.manifest.scope, pkg.manifest.flatName) - const locator = structUtils.makeLocator(ident, pkg.reference) - - const isVirtual = structUtils.isVirtualLocator(pkg); - - const packageDependencies = new Map() - const packagePeers = new Set() - - for (const descriptor of pkg.manifest?.packagePeers ?? []) { - packageDependencies.set(descriptor, null); - packagePeers.add(descriptor); - } - - if (pkg.packageDependencies != null) { - for (const dep of Object.keys(pkg.packageDependencies)) { - packageDependencies.set(dep, pkg.packageDependencies[dep]); - } - } - - const packageLocationAbs = pkg.packageLocation ?? (pkg.drvPath + '/node_modules/' + pkg.name) - const relativePackageLocation = path.relative(outDirectoryReal, packageLocationAbs) - let packageLocation = (relativePackageLocation.startsWith('../') ? relativePackageLocation : ('./' + relativePackageLocation)) + '/' - - if (isVirtual) { - packageLocation = './' + VirtualFS.makeVirtualPath('./.yarn/__virtual__', structUtils.slugifyLocator(locator), relativePackageLocation) + '/' - } - - const packageData = { - packageLocation, - packageDependencies, - packagePeers, - linkType: pkg.linkType, - // discardFromLookup: fetchResult.discardFromLookup || false, - } - - miscUtils.getMapWithDefault(packageRegistry, pkg.name).set(pkg.reference, packageData); - - if (locator.reference.startsWith('workspace:')) { - dependencyTreeRoots.push({ - name: structUtils.stringifyIdent(locator), - reference: locator.reference, - }) - } - - if (`${pkg.name}@${pkg.reference}` === this.topLevelPackageLocator) { - topLevelPackage = packageData - } - } - - if (topLevelPackage != null) { - miscUtils.getMapWithDefault(packageRegistry, null).set(null, topLevelPackage); - } else { - throw new Error('Could not determine topLevelPackage, this is NEEDED for the .pnp.cjs to be correctly generated') - } - - const pnpSettings = { - dependencyTreeRoots, - enableTopLevelFallback, - fallbackExclusionList: pnpFallbackMode === `dependencies-only` ? dependencyTreeRoots : [], - fallbackPool, - ignorePattern, - packageRegistry, - shebang, - } - - const loaderFile = generateInlinedScript(pnpSettings); - - await xfs.changeFilePromise(pnpPath.cjs, loaderFile, { - automaticNewlines: true, - mode: 0o755, - }); - } -} - -class MakePathWrappers extends BaseCommand { - static paths = [['nix', 'make-path-wrappers']] - - binWrappersOutDirectory = Option.String({validator: t.isString()}) - pnpOutDirectory = Option.String({validator: t.isString()}) - packageRegistryDataPath = Option.String({validator: t.isString()}) - topLevelPackageLocator = Option.String({validator: t.isString()}) - - async execute() { - const packageRegistryData = JSON.parse(fs.readFileSync(this.packageRegistryDataPath, 'utf8')) - - const outDirectoryReal = fs.realpathSync(this.pnpOutDirectory) - - for (const pkgIdent of Object.keys(packageRegistryData)) { - const pkg = packageRegistryData[pkgIdent] - if (!pkg) continue - - const ident = structUtils.makeIdent(pkg.manifest.scope, pkg.manifest.flatName) - const locator = structUtils.makeLocator(ident, pkg.reference) - - const isVirtual = structUtils.isVirtualLocator(pkg); - - const packageLocationAbs = pkg.packageLocation ?? (pkg.drvPath + '/node_modules/' + pkg.name) - const relativePackageLocation = path.relative(outDirectoryReal, packageLocationAbs) - let packageLocation = packageLocationAbs - - const isTopLevelPackage = `${pkg.name}@${pkg.reference}` === this.topLevelPackageLocator - if (isTopLevelPackage) continue - - if (isVirtual) { - packageLocation = path.join(outDirectoryReal, VirtualFS.makeVirtualPath('./.yarn/__virtual__', structUtils.slugifyLocator(locator), relativePackageLocation)) - } - - for (const bin of Object.keys(pkg?.manifest?.bin ?? {})) { - const resolvedBinPath = path.join(packageLocation, pkg.manifest.bin[bin]) - await xfs.writeFilePromise(path.join(this.binWrappersOutDirectory, bin), `node ${resolvedBinPath} "$@"`, { - mode: 0o755, - }) - } - } + await generatePnpFile(project, { + outDirectory: this.outDirectory, + packageRegistryDataPath: this.packageRegistryDataPath, + topLevelPackageLocatorString: this.topLevelPackageLocatorString + }) } } class RunBuildScriptsCommand extends BaseCommand { static paths = [['nix', 'run-build-scripts']] - locator = Option.String({validator: t.isString()}) + topLevelPackageLocatorString = Option.String({validator: t.isString()}) pnpRootDirectory = Option.String({validator: t.isString()}) packageDirectory = Option.String({validator: t.isString()}) async execute() { - const configuration = await Configuration.find(process.cwd(), this.context.plugins); - const {project, workspace} = await Project.find(configuration, process.cwd()); - - const _locator = JSON.parse(this.locator) - const ident = structUtils.makeIdent(_locator.scope, _locator.name) - const locator = structUtils.makeLocator(ident, _locator.reference) + const configuration = await Configuration.find(ppath.cwd(), this.context.plugins); + const {project} = await Project.find(configuration, ppath.cwd()); - const pkg = project.originalPackages.get(locator.locatorHash) + const topLevelLocator = structUtils.parseLocator(cleanLocatorString(this.topLevelPackageLocatorString)) - project.cwd = this.pnpRootDirectory + const pkg = project.originalPackages.get(topLevelLocator.locatorHash) + if (!pkg) { + throw new Error('runBuildScripts(): Could not determine top level package ' + this.topLevelPackageLocatorString) + } - // need to find a way to make this work without restoring install state... - // await project.restoreInstallState({ - // restoreResolutions: true, - // }); + ;(project as any).cwd = this.pnpRootDirectory project.storedPackages = project.originalPackages - // next thing to fix is "couldn't find XXX in the currently installed PnP map" const manifest = await ZipOpenFS.openPromise(async (zipOpenFs) => { const linkers = project.configuration.getLinkers(); @@ -408,7 +173,7 @@ class RunBuildScriptsCommand extends BaseCommand { for (const scriptName of [`preinstall`, `install`, `postinstall`]) { if (!manifest.scripts.has(scriptName)) continue - const exitCode = await scriptUtils.executePackageScript(pkg, scriptName, [], {cwd: this.packageDirectory, project, stdin: process.stdin, stdout: process.stdout, stderr: process.stderr}); + const exitCode = await scriptUtils.executePackageScript(pkg, scriptName, [], {cwd: this.packageDirectory as any, project, stdin: process.stdin, stdout: process.stdout, stderr: process.stderr}); if (exitCode > 0) { return exitCode @@ -436,168 +201,63 @@ export default { return [linker, installer] as [Linker, Installer]; })); - const fetcher = project.configuration.makeFetcher(); - const fetchOptions = { checksums: new Map(), project, cache: null, fetcher, report: null } - - const resolver = project.configuration.makeResolver(); - const resolveOptions = {project, report: opts.report, resolver} - const packageManifest: any = {} for (const [__, pkg] of project.storedPackages) { - // include virtual packages so that peerDependencies work easily + // skip virtual packages, we resolve these at runtime now during the derivation buildPhase const isVirtual = structUtils.isVirtualLocator(pkg) - // if (structUtils.isVirtualLocator(pkg)) { - // continue - // } - - const canonicalPackage = isVirtual - ? project.storedPackages.get(structUtils.devirtualizeLocator(pkg).locatorHash) - : pkg - - const linker = linkers.find(linker => linker.supportsPackage(canonicalPackage, linkerOptions)); - const installer = installers.get(linker) - - let localPath = fetcher.getLocalPath(canonicalPackage, fetchOptions) - - if (!localPath) { - const fileParsedSpec = fileUtils.parseSpec(canonicalPackage.reference) - if (fileParsedSpec?.parentLocator != null && fileParsedSpec?.path != null) { - const parentLocalPath = fetcher.getLocalPath(fileParsedSpec.parentLocator, fetchOptions) - const resolvedPath = path.resolve(parentLocalPath, fileParsedSpec.path) - if (resolvedPath != null) { - localPath = resolvedPath - } - } + if (isVirtual) { + continue } - const localPathRelative = localPath != null ? './' + path.relative(project.cwd, localPath) : null + const originalPackage = project.originalPackages.get(__) - const src = pkg.reference.startsWith('workspace:') ? `./${pkg.reference.substring('workspace:'.length)}` : (localPathRelative != null ? localPathRelative : null) - const bin = pkg.bin != null ? Object.fromEntries(pkg.bin) : null + const dependencies = {} - const shouldBeUnplugged = src != null ? true : (installer?.shouldBeUnplugged != null ? installer.customData.store.get(pkg.locatorHash) != null ? installer.shouldBeUnplugged(pkg, installer.customData.store.get(pkg.locatorHash), project.getDependencyMeta(structUtils.isVirtualLocator(pkg) ? structUtils.devirtualizeLocator(pkg) : pkg, pkg.version)) : false : true) - const willOutputBeZip = !src && !shouldBeUnplugged + Array.from(pkg.dependencies).forEach(async ([key, value]) => { + const resolvedDevirtualisedDescriptor = structUtils.ensureDevirtualizedDescriptor(value) - const isSourcePatch = src != null && pkg.reference.startsWith('patch:') + const originalDependency = originalPackage.dependencies.get(key) - let installCondition = null + if (originalDependency != null) { + const originalDevirtualisedDescriptor = structUtils.ensureDevirtualizedDescriptor(originalDependency) - if (pkg.conditions != null) { - const conditions = pkg.conditions.split('&').map(part => part.trim().split('=')) - let nixConditions = [] + const originalRange = structUtils.makeRange({...structUtils.parseRange(originalDevirtualisedDescriptor.range), params: null}) + const resolvedRange = structUtils.makeRange({...structUtils.parseRange(resolvedDevirtualisedDescriptor.range), params: null}) - for (const condition of conditions) { - const key = condition[0] - const v = condition[1] - if (key === 'os') { - if (v === 'linux') { - nixConditions.push('stdenv.isLinux') - } else if (v === 'darwin') { - nixConditions.push('stdenv.isDarwin') - } else { - nixConditions.push('false') - } - } else if (key === 'cpu') { - const cpuMapping: any = { - 'ia32': 'stdenv.isi686', - 'x64': 'stdenv.isx86_64', - 'arm': 'stdenv.isAarch32', - 'arm64': 'stdenv.isAarch64', - } - if (cpuMapping[v] != null) { - nixConditions.push(cpuMapping[v]) - } else { - nixConditions.push('false') - } - } else if (key === 'libc') { - if (v !== 'glibc') { - // only glibc is supported on Nix, other implementations like musl are not supported - nixConditions.push('false') + if (originalRange !== resolvedRange) { + const resolutionHash = project.storedResolutions.get(value.descriptorHash) + let resolvedPkg = resolutionHash != null ? project.storedPackages.get(resolutionHash) : + null + if (!resolvedPkg) { + console.log('failed to resolve', value) + return null } + dependencies[structUtils.stringifyIdent(value)] = + structUtils.stringifyLocator(structUtils.ensureDevirtualizedLocator(resolvedPkg)) } + } else { + const resolutionHash = project.storedResolutions.get(value.descriptorHash) + let resolvedPkg = resolutionHash != null ? project.storedPackages.get(resolutionHash) : + null + if (!resolvedPkg) { + console.log('failed to resolve', value) + return null + } + dependencies[structUtils.stringifyIdent(value)] = + structUtils.stringifyLocator(resolvedPkg) } + }) - if (nixConditions.length > 0) { - installCondition = `stdenv: ${nixConditions.map(cond => `(${cond})`).join(' && ')}` - } - } - - let pkgDependencies = pkg.dependencies - let pkgDevDependencies = new Map() - - const shouldLookupDevDependencies = canonicalPackage.reference.startsWith('workspace:') - - // lookup devDependencies from manifests for workspace: packages - if (shouldLookupDevDependencies) { - const manifest = await ZipOpenFS.openPromise(async (zipOpenFs) => { - const linkers = project.configuration.getLinkers(); - const linkerOptions = {project, report: new StreamReport({stdout: new PassThrough(), configuration: project.configuration})}; - - const linker = linkers.find(linker => linker.supportsPackage(canonicalPackage, linkerOptions)); - if (!linker) - throw new Error(`The package ${structUtils.prettyLocator(project.configuration, pkg)} isn't supported by any of the available linkers`); - - const packageLocation = await linker.findPackageLocation(canonicalPackage, linkerOptions); - const packageFs = new CwdFS(packageLocation, {baseFs: zipOpenFs}); - const manifest = await Manifest.find(PortablePath.dot, {baseFs: packageFs}); - - return manifest - }) - - if (manifest != null) { - pkgDependencies = new Map() - pkgDevDependencies = new Map() - - Array.from(manifest.dependencies).map(([key, value]) => pkgDependencies.set(key, pkg.dependencies.get(key))) - if (manifest.devDependencies) - Array.from(manifest.devDependencies).map(([key, value]) => pkgDevDependencies.set(key, pkg.dependencies.get(key))) - } - } - - const dependencies = (await Promise.all(Array.from(pkgDependencies).map(async ([key, value]) => { - const resolutionHash = project.storedResolutions.get(value.descriptorHash) - let resolvedPkg = resolutionHash != null ? project.storedPackages.get(resolutionHash) : - null - if (!resolvedPkg) { - console.log('failed to resolve', value) - return null - } - // reference virtual packages instead so that peerDependencies are respected - // if (structUtils.isVirtualLocator(resolvedPkg)) { - // resolvedPkg = structUtils.devirtualizeLocator(resolvedPkg) - // } - return { - key, - name: structUtils.stringifyIdent(value), - packageManifestId: structUtils.stringifyIdent(resolvedPkg) + '@' + resolvedPkg.reference, - } - }))).filter(pkg => !!pkg) - - const devDependencies = (await Promise.all(Array.from(pkgDevDependencies).map(async ([key, value]) => { - const resolutionHash = project.storedResolutions.get(value.descriptorHash) - let resolvedPkg = resolutionHash != null ? project.storedPackages.get(resolutionHash) : - null - if (!resolvedPkg) { - console.log('failed to resolve', value) - return null - } - // reference virtual packages instead so that peerDependencies are respected - // if (structUtils.isVirtualLocator(resolvedPkg)) { - // resolvedPkg = structUtils.devirtualizeLocator(resolvedPkg) - // } - return { - key, - name: structUtils.stringifyIdent(value), - packageManifestId: structUtils.stringifyIdent(resolvedPkg) + '@' + resolvedPkg.reference, - } - }))).filter(pkg => !!pkg) + const linker = linkers.find(linker => linker.supportsPackage(pkg, linkerOptions)); + const installer: any = installers.get(linker) - const packagePeers = [] + const willProbablyHaveSource = + pkg.reference.startsWith('workspace:') || + pkg.reference.startsWith('file:') || + pkg.reference.startsWith('portal:') - for (const descriptor of pkg.peerDependencies.values()) { - packagePeers.push(structUtils.stringifyIdent(descriptor)); - } + const shouldBeUnplugged = installer?.shouldBeUnplugged != null ? installer.customData.store.get(pkg.locatorHash) != null ? installer.shouldBeUnplugged(pkg, installer.customData.store.get(pkg.locatorHash), project.getDependencyMeta(structUtils.isVirtualLocator(pkg) ? structUtils.devirtualizeLocator(pkg) : pkg, pkg.version)) : false : true const manifestPackageId = structUtils.stringifyIdent(pkg) + '@' + pkg.reference @@ -607,20 +267,15 @@ export default { let outputHashByPlatform: any = packageInExistingManifest?.outputHashByPlatform ?? {} await (async function() { - if (src != null && !isSourcePatch) { + if (willProbablyHaveSource) { // no outputHash for when a src is provided as the build will be completed locally. outputHash = null outputHashByPlatform = null return - } else if (willOutputBeZip) { - // simple, use the hash of the zip file - outputHash = project.storedChecksums.get(pkg.locatorHash)?.substring(2) // first 2 characters are like a checksum version that yarn uses, we can discard - outputHashByPlatform = null - return } else if (shouldBeUnplugged) { const shouldHashBePlatformSpecific = true // TODO only if package or dependencies have platform conditions maybe? if (shouldHashBePlatformSpecific) { - if (outputHashByPlatform[nixCurrentSystem()] && !isSourcePatch) { + if (outputHashByPlatform[nixCurrentSystem()]) { // got existing hash for this platform in the manifest, use existing hash outputHash = null return @@ -653,34 +308,13 @@ export default { } })() - const descriptorHash = getByValue(project.storedResolutions, pkg.locatorHash) - const descriptor = project.storedDescriptors.get(descriptorHash) - const yarnChecksum = project.storedChecksums.get(pkg.locatorHash) - - packageManifest[manifestPackageId] = { - isVirtual, - canonicalPackage, - name: structUtils.stringifyIdent(pkg), - reference: pkg.reference, - linkType: pkg.linkType, // HARD package links are the most common, and mean that the target location is fully owned by the package manager. SOFT links, on the other hand, typically point to arbitrary user-defined locations on disk. - outputName: [structUtils.stringifyIdent(pkg), pkg.version, pkg.locatorHash.substring(0, 10)].filter(part => !!part).join('-').replace(/@/g, '').replace(/[\/]/g, '-'), - outputHash, - outputHashByPlatform, - src, - shouldBeUnplugged, - installCondition, - bin, - - // other things necessary for recreating lock file that we don't necessarily use - flatName: pkg.name, - descriptor: descriptor, - languageName: pkg.languageName, - scope: pkg.scope, - checksum: yarnChecksum, - - dependencies, - devDependencies, - packagePeers, + if (shouldBeUnplugged || Object.keys(dependencies).length > 0) { + packageManifest[manifestPackageId] = { + shouldBeUnplugged, + outputHash, + outputHashByPlatform, + dependencies, + } } } @@ -689,83 +323,38 @@ export default { manifestNix.push('# This file is generated by running "yarn install" inside your project.') manifestNix.push('# It is essentially a version of yarn.lock that Nix can better understand') manifestNix.push('# Manual changes WILL be lost - proceed with caution!') - manifestNix.push('let') - manifestNix.push(' packages = {') - - function writeDependencies(key: string, dependencies: any[]) { - if (dependencies.length > 0) { - manifestNix.push(` ${key} = {`) - for (const dep of dependencies) { - manifestNix.push(` ${JSON.stringify(dep.name)} = packages.${JSON.stringify(dep.packageManifestId)};`) - } - manifestNix.push(` };`) - } - } + manifestNix.push('{') const alphabeticalKeys = Object.keys(packageManifest).sort((a, b) => a.localeCompare(b)) for (const key of alphabeticalKeys) { const pkg = packageManifest[key] - manifestNix.push(` "${key}" = {`) - manifestNix.push(` name = ${JSON.stringify(pkg.name)};`) - manifestNix.push(` reference = ${JSON.stringify(pkg.reference)};`) - if (pkg.isVirtual && pkg.canonicalPackage != null) { - manifestNix.push(` canonicalPackage = packages.${JSON.stringify(`${structUtils.stringifyIdent(pkg.canonicalPackage)}@${pkg.canonicalPackage.reference}`)};`) - } - if (!pkg.isVirtual) { - manifestNix.push(` linkType = ${JSON.stringify(pkg.linkType)};`) - manifestNix.push(` outputName = ${JSON.stringify(pkg.outputName)};`) - if (pkg.outputHash != null) - manifestNix.push(` outputHash = ${JSON.stringify(pkg.outputHash)};`) - if (pkg.outputHashByPlatform && Object.keys(pkg.outputHashByPlatform).length > 0) { - manifestNix.push(` outputHashByPlatform = {`) - for (const outputHashByPlatform of Object.keys(pkg.outputHashByPlatform)) { - manifestNix.push(` ${JSON.stringify(outputHashByPlatform)} = ${JSON.stringify(pkg.outputHashByPlatform[outputHashByPlatform])};`) - } - manifestNix.push(` };`) - } - if (pkg.src) - manifestNix.push(` src = ${pkg.src};`) - if (pkg.shouldBeUnplugged) - manifestNix.push(` shouldBeUnplugged = ${pkg.shouldBeUnplugged};`) - if (pkg.installCondition) - manifestNix.push(` installCondition = ${pkg.installCondition};`) - - // other things necessary for recreating lock file that we don't necessarily use - manifestNix.push(` flatName = ${JSON.stringify(pkg.flatName)};`) - manifestNix.push(` languageName = ${JSON.stringify(pkg.languageName)};`) - manifestNix.push(` scope = ${JSON.stringify(pkg.scope)};`) - manifestNix.push(` descriptorRange = ${JSON.stringify(pkg.descriptor.range)};`) - if (pkg.checksum) - manifestNix.push(` checksum = ${JSON.stringify(pkg.checksum)};`) - - if (pkg.bin && Object.keys(pkg.bin).length > 0) { - manifestNix.push(` bin = {`) - for (const bin of Object.keys(pkg.bin)) { - manifestNix.push(` ${JSON.stringify(bin)} = ${JSON.stringify(pkg.bin[bin])};`) - } - manifestNix.push(` };`) + manifestNix.push(` "${key}" = {`) + + if (pkg.shouldBeUnplugged) + manifestNix.push(` shouldBeUnplugged = ${pkg.shouldBeUnplugged};`) + if (pkg.outputHash != null) + manifestNix.push(` outputHash = ${JSON.stringify(pkg.outputHash)};`) + if (pkg.outputHashByPlatform && Object.keys(pkg.outputHashByPlatform).length > 0) { + manifestNix.push(` outputHashByPlatform = {`) + for (const outputHashByPlatform of Object.keys(pkg.outputHashByPlatform)) { + manifestNix.push(` ${JSON.stringify(outputHashByPlatform)} = ${JSON.stringify(pkg.outputHashByPlatform[outputHashByPlatform])};`) } + manifestNix.push(` };`) } - - writeDependencies('dependencies', pkg.dependencies) - writeDependencies('devDependencies', pkg.devDependencies) - - if (!pkg.isVirtual && pkg.packagePeers && pkg.packagePeers.length > 0) { - manifestNix.push(` packagePeers = [`) - for (const peer of pkg.packagePeers) { - manifestNix.push(` ${JSON.stringify(peer)}`) + if (pkg.dependencies && Object.keys(pkg.dependencies).length > 0) { + manifestNix.push(` dependencies = {`) + for (const resolution of Object.keys(pkg.dependencies)) { + manifestNix.push(` ${JSON.stringify(resolution)} = ${JSON.stringify(pkg.dependencies[resolution])};`) } - manifestNix.push(` ];`) + manifestNix.push(` };`) } - manifestNix.push(` };`) + manifestNix.push(` };`) } - manifestNix.push(' };') - manifestNix.push('in') - manifestNix.push('packages') + manifestNix.push('}') manifestNix.push('') fs.writeFileSync(path.join(project.cwd, 'yarn-manifest.nix'), manifestNix.join('\n'), 'utf8') @@ -774,24 +363,21 @@ export default { const packageRegistryDataPath = process.env.YARNNIX_PACKAGE_REGISTRY_DATA_PATH if (!!packageRegistryDataPath) { const packageRegistryData = JSON.parse(fs.readFileSync(packageRegistryDataPath, 'utf8')) - const packageRegistryPackages: any[] = Object.values(packageRegistryData).filter(pkg => !!pkg?.manifest) + const packageRegistryPackages: any[] = Object.entries(packageRegistryData) - for (const pkg of packageRegistryPackages) { - if (pkg.canonicalReference.startsWith('workspace:')) { - if (pkg.drvPath !== process.env.out) { - await project.addWorkspace(pkg.packageLocation ?? path.join(pkg.drvPath, 'node_modules', pkg.name)) - } + for (const [locatorString, pkg] of packageRegistryPackages) { + const locator = structUtils.parseLocator(locatorString) + if (locator.reference.startsWith('workspace:')) { + await (project as any).addWorkspace(pkg.packageLocation ?? path.join(pkg.packageOut, 'node_modules', pkg.identString)) } } } }, }, commands: [ - CreateLockFileCommand, FetchCommand, ConvertToZipCommand, GeneratePnpFile, - MakePathWrappers, RunBuildScriptsCommand, ], } diff --git a/plugin/sources/lib.ts b/plugin/sources/lib.ts new file mode 100644 index 0000000..5f85994 --- /dev/null +++ b/plugin/sources/lib.ts @@ -0,0 +1,15 @@ +import { structUtils } from "@yarnpkg/core" + +export function cleanLocatorString(locatorString: string) { + const locator = structUtils.parseLocator(locatorString) + const range = structUtils.parseRange(locator.reference) + + if (range.protocol === 'patch:') { + return structUtils.stringifyLocator({ + ...locator, + reference: structUtils.makeRange({...range, params: null}), + }) + } + + return locatorString +} diff --git a/plugin/yarn.lock b/plugin/yarn.lock index ef72892..7f41778 100644 --- a/plugin/yarn.lock +++ b/plugin/yarn.lock @@ -146,6 +146,13 @@ __metadata: languageName: node linkType: hard +"@gar/promisify@npm:^1.1.3": + version: 1.1.3 + resolution: "@gar/promisify@npm:1.1.3" + checksum: 3fadc40481a783ddb90397f5759f92650b57465f7a4a778056bd24b47060595012e9181a55ae547d57a893d37d9776abe9e368f1f6918e37225eb6a83f9a75f8 + languageName: node + linkType: hard + "@nodelib/fs.scandir@npm:2.1.5": version: 2.1.5 resolution: "@nodelib/fs.scandir@npm:2.1.5" @@ -173,6 +180,26 @@ __metadata: languageName: node linkType: hard +"@npmcli/fs@npm:^2.1.0": + version: 2.1.2 + resolution: "@npmcli/fs@npm:2.1.2" + dependencies: + "@gar/promisify": "npm:^1.1.3" + semver: "npm:^7.3.5" + checksum: 82bc61f832f45e2033ea3522f66a94de50e5561577b1f3af226576ad5467c240375eba948d4ea1ca146e7871740fb3005e7c4f3f1ab616e79a5a5cedd9fdb789 + languageName: node + linkType: hard + +"@npmcli/move-file@npm:^2.0.0": + version: 2.0.1 + resolution: "@npmcli/move-file@npm:2.0.1" + dependencies: + mkdirp: "npm:^1.0.4" + rimraf: "npm:^3.0.2" + checksum: 3557a12cd18dfb5bcd5d5cf910b783832af50ffba28fd5bb510c3c56b2df0481558b9ec6d3008e8eeefb9f2944bdc1d34832b1a8bbf6ad1cd2f256bf12c84ff0 + languageName: node + linkType: hard + "@sindresorhus/is@npm:^4.0.0": version: 4.6.0 resolution: "@sindresorhus/is@npm:4.6.0" @@ -189,6 +216,13 @@ __metadata: languageName: node linkType: hard +"@tootallnate/once@npm:2": + version: 2.0.0 + resolution: "@tootallnate/once@npm:2.0.0" + checksum: d9f7f2130a0a2e1ea50f3bc90b83a8b99c913bbb80d7a1706f7f4730292ef299d18443c3b57a42dfb17c6559c9085e13f751b1b6c969bcff7bee3eeaf9da4dec + languageName: node + linkType: hard + "@types/cacheable-request@npm:^6.0.1": version: 6.0.2 resolution: "@types/cacheable-request@npm:6.0.2" @@ -224,6 +258,13 @@ __metadata: languageName: node linkType: hard +"@types/lodash@npm:^4": + version: 4.14.188 + resolution: "@types/lodash@npm:4.14.188" + checksum: 672660fd912505b7076646ff1f216950ff11bd50a69acfed09c44adb55c407f111f9b24a2361610cbd6c1bb2cc768895cd5b7673351f71d8793b5e84b641def8 + languageName: node + linkType: hard + "@types/node@npm:*": version: 18.11.6 resolution: "@types/node@npm:18.11.6" @@ -841,6 +882,43 @@ __metadata: languageName: node linkType: hard +"abbrev@npm:1, abbrev@npm:^1.0.0": + version: 1.1.1 + resolution: "abbrev@npm:1.1.1" + checksum: 76e7fb9283b13208d5cf55df46669f9cf5e72007cb66595849be2d5e96c0a43704132d030c5705f9447266183986e1e8a4fc3e9578cb60a1f19cf0157664f957 + languageName: node + linkType: hard + +"agent-base@npm:6, agent-base@npm:^6.0.2": + version: 6.0.2 + resolution: "agent-base@npm:6.0.2" + dependencies: + debug: "npm:4" + checksum: 2d0cdeccfe3058cb18661db3bcbb6cc092144eaecd7da3ee4321be0490d5654e53dbd08c28690d83f55f791b0369819f5872ee5122a2aad0a39edbc51798f01b + languageName: node + linkType: hard + +"agentkeepalive@npm:^4.2.1": + version: 4.2.1 + resolution: "agentkeepalive@npm:4.2.1" + dependencies: + debug: "npm:^4.1.0" + depd: "npm:^1.1.2" + humanize-ms: "npm:^1.2.1" + checksum: c0a7067d1bec147b40bc046ed3ad32bfff35014e7d20e21219f90a21df661d85124e5ffa5bd89118d7ceac9105e2e9b0525ea317a2958b39a357535394b483b0 + languageName: node + linkType: hard + +"aggregate-error@npm:^3.0.0": + version: 3.1.0 + resolution: "aggregate-error@npm:3.1.0" + dependencies: + clean-stack: "npm:^2.0.0" + indent-string: "npm:^4.0.0" + checksum: 676b1da86a0ff06a29d9a318109752990c28aae4600f6d094845a679f388a2a246402d993d223165d208122d81823235969132dc09439de2eee50a9f48fa9db9 + languageName: node + linkType: hard + "algoliasearch@npm:^4.2.0": version: 4.14.2 resolution: "algoliasearch@npm:4.14.2" @@ -895,6 +973,33 @@ __metadata: languageName: node linkType: hard +"anymatch@npm:~3.1.2": + version: 3.1.2 + resolution: "anymatch@npm:3.1.2" + dependencies: + normalize-path: "npm:^3.0.0" + picomatch: "npm:^2.0.4" + checksum: b9266228a3e1406086ece57c20f9cbfc9755375218697c79a71fba9245ad23a672687314422e97753fbb3bccd245d7c76974d7c15ba513386b499de6ba002300 + languageName: node + linkType: hard + +"aproba@npm:^1.0.3 || ^2.0.0": + version: 2.0.0 + resolution: "aproba@npm:2.0.0" + checksum: 02a080748877ae9a7d8973c37c688669a59971c5ec38a4c44f4a7176a52313da0b0c1e1518f80d3b80d75d0d4a16f25a4151a2316bad3db06bb34cb0245cc4fa + languageName: node + linkType: hard + +"are-we-there-yet@npm:^3.0.0": + version: 3.0.1 + resolution: "are-we-there-yet@npm:3.0.1" + dependencies: + delegates: "npm:^1.0.0" + readable-stream: "npm:^3.6.0" + checksum: 7137e25713c611cf38054434ba377e2f7ad3a4bbdb7ac3565ed5caac786080d1c86ed0b280edd917b4c1001ee0d6ed7bdd53effd69b5af4251e5a4fd18d09fbe + languageName: node + linkType: hard + "argparse@npm:^1.0.7": version: 1.0.10 resolution: "argparse@npm:1.0.10" @@ -925,6 +1030,13 @@ __metadata: languageName: node linkType: hard +"balanced-match@npm:^1.0.0": + version: 1.0.2 + resolution: "balanced-match@npm:1.0.2" + checksum: 9ca7fca1845f06edbd8478e209a2e8eed5bb148a021719e77affeaf0c61e45af20279e4540a9f11942acc27c078fc132ff0ebc9c16a403033cff5af3d8199f40 + languageName: node + linkType: hard + "base64-js@npm:^1.3.1": version: 1.5.1 resolution: "base64-js@npm:1.5.1" @@ -932,6 +1044,13 @@ __metadata: languageName: node linkType: hard +"binary-extensions@npm:^2.0.0": + version: 2.2.0 + resolution: "binary-extensions@npm:2.2.0" + checksum: 16cf7c0cfd2d04c0d7a115473b14054d6b01c077d8894f5eadc53e0cc1a0bea512a6187b314b26c99efd0c5f02b2871ab413017916d9ecaa47fa23d0f519adc6 + languageName: node + linkType: hard + "bl@npm:^4.0.3": version: 4.1.0 resolution: "bl@npm:4.1.0" @@ -943,7 +1062,26 @@ __metadata: languageName: node linkType: hard -"braces@npm:^3.0.2": +"brace-expansion@npm:^1.1.7": + version: 1.1.11 + resolution: "brace-expansion@npm:1.1.11" + dependencies: + balanced-match: "npm:^1.0.0" + concat-map: "npm:0.0.1" + checksum: 5ecc6da29cd3b4d49a832fd8e48f3a8b6ac058f82fe778eb6751ed30a206c5ec5171f6f632aa1946ffb4f8151136740803f620b15edca8437a9348cbb21a8ba8 + languageName: node + linkType: hard + +"brace-expansion@npm:^2.0.1": + version: 2.0.1 + resolution: "brace-expansion@npm:2.0.1" + dependencies: + balanced-match: "npm:^1.0.0" + checksum: 0f8d0d6a165d636fed93a7dd9321a5ae122cac9a672d8a9e01997e4ae09743cb3cbfb0a6e6b32303cda0f1f40617e2c0953f28f59a6f01d6d12c9698a3f0e41b + languageName: node + linkType: hard + +"braces@npm:^3.0.2, braces@npm:~3.0.2": version: 3.0.2 resolution: "braces@npm:3.0.2" dependencies: @@ -962,6 +1100,32 @@ __metadata: languageName: node linkType: hard +"cacache@npm:^16.1.0": + version: 16.1.3 + resolution: "cacache@npm:16.1.3" + dependencies: + "@npmcli/fs": "npm:^2.1.0" + "@npmcli/move-file": "npm:^2.0.0" + chownr: "npm:^2.0.0" + fs-minipass: "npm:^2.1.0" + glob: "npm:^8.0.1" + infer-owner: "npm:^1.0.4" + lru-cache: "npm:^7.7.1" + minipass: "npm:^3.1.6" + minipass-collect: "npm:^1.0.2" + minipass-flush: "npm:^1.0.5" + minipass-pipeline: "npm:^1.2.4" + mkdirp: "npm:^1.0.4" + p-map: "npm:^4.0.0" + promise-inflight: "npm:^1.0.1" + rimraf: "npm:^3.0.2" + ssri: "npm:^9.0.0" + tar: "npm:^6.1.11" + unique-filename: "npm:^2.0.0" + checksum: 54f39565219c47ac624e0efeae123551b5391844f18ae69d0c344f51ce2b9ae4adec62316e5eae7e11cf83c3c21f726a0117d55400182779dce687887ce3f50e + languageName: node + linkType: hard + "cacheable-lookup@npm:^5.0.3": version: 5.0.4 resolution: "cacheable-lookup@npm:5.0.4" @@ -1021,6 +1185,25 @@ __metadata: languageName: node linkType: hard +"chokidar@npm:^3.5.2": + version: 3.5.3 + resolution: "chokidar@npm:3.5.3" + dependencies: + anymatch: "npm:~3.1.2" + braces: "npm:~3.0.2" + fsevents: "npm:~2.3.2" + glob-parent: "npm:~5.1.2" + is-binary-path: "npm:~2.1.0" + is-glob: "npm:~4.0.1" + normalize-path: "npm:~3.0.0" + readdirp: "npm:~3.6.0" + dependenciesMeta: + fsevents: + optional: true + checksum: eb45bf6464f6c871e2b46926eaaf35abc06624d4ca8b894bc7c927d8ac808e680d977c37283276992159360767d51c64b4c9bb91ece91beceaf3cb4abe555f99 + languageName: node + linkType: hard + "chownr@npm:^2.0.0": version: 2.0.0 resolution: "chownr@npm:2.0.0" @@ -1042,6 +1225,13 @@ __metadata: languageName: node linkType: hard +"clean-stack@npm:^2.0.0": + version: 2.2.0 + resolution: "clean-stack@npm:2.2.0" + checksum: 0a476c914f0a5e9e12b215729e1a633fcbdd47b8c3d508ebe6441f2ef8d5047fdd0800926349dd18253db4bfcab3e48aa0aca1f2e7f5d614f7194778d7851be4 + languageName: node + linkType: hard + "cli-boxes@npm:^2.2.0": version: 2.2.1 resolution: "cli-boxes@npm:2.2.1" @@ -1120,6 +1310,15 @@ __metadata: languageName: node linkType: hard +"color-support@npm:^1.1.3": + version: 1.1.3 + resolution: "color-support@npm:1.1.3" + bin: + color-support: bin.js + checksum: 8dc879a976be92306773276728e0bbb0925478b2373f133a98e563c497ccd58f220b9c30cea37c72678fe071627d7391b3751a1b92aaa5e872cd278b00b96b74 + languageName: node + linkType: hard + "commander@npm:7.2.0": version: 7.2.0 resolution: "commander@npm:7.2.0" @@ -1127,6 +1326,20 @@ __metadata: languageName: node linkType: hard +"concat-map@npm:0.0.1": + version: 0.0.1 + resolution: "concat-map@npm:0.0.1" + checksum: 88222f18b3a68b71fe4473a146c8ed3315ec0488703104319c53543ad4668af3e79418ab79e2fa8032ee04c3eb45cc478815b89877a048cc5ba34e201bc15c35 + languageName: node + linkType: hard + +"console-control-strings@npm:^1.1.0": + version: 1.1.0 + resolution: "console-control-strings@npm:1.1.0" + checksum: d286ffd439aac97472557325e6aa4cc3a2eefe495a70a9640b89508880db4bba1bd1b29bb011608c23033d884c84cac8da95c8f12ca0ec69ccc70d6d5f39c618 + languageName: node + linkType: hard + "convert-to-spaces@npm:^1.0.1": version: 1.0.2 resolution: "convert-to-spaces@npm:1.0.2" @@ -1145,6 +1358,27 @@ __metadata: languageName: node linkType: hard +"debug@npm:4, debug@npm:^4.1.0, debug@npm:^4.3.3": + version: 4.3.4 + resolution: "debug@npm:4.3.4" + dependencies: + ms: "npm:2.1.2" + peerDependenciesMeta: + supports-color: + optional: true + checksum: ab50d98b6f2a0e803379e8f789017f4215efd0e085774623e462c691e9f99bfd359a35f7424ff401da3ea58b31f89ceebc9ea35779b4a94f78b0ee3e235b6640 + languageName: node + linkType: hard + +"debug@npm:^3.2.7": + version: 3.2.7 + resolution: "debug@npm:3.2.7" + dependencies: + ms: "npm:^2.1.1" + checksum: b98f479c1004d349128ba45f38fb1af53fa3ab1a3614f27c56e2cfbee34b58cbf7dc060fead0882a5b64924e49d1dd59fb796a5d90ba7b1987d72d426e199253 + languageName: node + linkType: hard + "decode-uri-component@npm:^0.2.0": version: 0.2.0 resolution: "decode-uri-component@npm:0.2.0" @@ -1168,6 +1402,20 @@ __metadata: languageName: node linkType: hard +"delegates@npm:^1.0.0": + version: 1.0.0 + resolution: "delegates@npm:1.0.0" + checksum: 2ef8c043c6caea7f00f23236e0606b00f10d2b497657d63d230e50efdef307936b070734187b03960b9c4afe64ce9e09a77c01da60e661d42dcefec11ce41c30 + languageName: node + linkType: hard + +"depd@npm:^1.1.2": + version: 1.1.2 + resolution: "depd@npm:1.1.2" + checksum: e9fb93771e7cf3d88c4e38ca95742f7c58cae31928eb5e67a1a14d970325a02755451bb7fafc2db72333a5cf7fc14e07e4f8d709c0df70143355e77e8d090bac + languageName: node + linkType: hard + "diff@npm:^5.1.0": version: 5.1.0 resolution: "diff@npm:5.1.0" @@ -1191,6 +1439,15 @@ __metadata: languageName: node linkType: hard +"encoding@npm:^0.1.13": + version: 0.1.13 + resolution: "encoding@npm:0.1.13" + dependencies: + iconv-lite: "npm:^0.6.2" + checksum: 954eb7d006c8d466207dcda57ddd15b1d6667607b8da15c7ce400d377504aafcc5e2f5507027cfb045cad7aefd15d18aa3f6e14f3a73ed2b26ad5ff08004536b + languageName: node + linkType: hard + "end-of-stream@npm:^1.1.0, end-of-stream@npm:^1.4.1": version: 1.4.4 resolution: "end-of-stream@npm:1.4.4" @@ -1209,6 +1466,20 @@ __metadata: languageName: node linkType: hard +"env-paths@npm:^2.2.0": + version: 2.2.1 + resolution: "env-paths@npm:2.2.1" + checksum: 528af3898854262b86b3adb5de09e6c81b8c0e3f4f675750282281b86782ddc3c33ffc13598d903d9eb23652f339ded86c994b61fe06e5f9cbb69a191f62244b + languageName: node + linkType: hard + +"err-code@npm:^2.0.2": + version: 2.0.3 + resolution: "err-code@npm:2.0.3" + checksum: 12244d58c3eeb73a5ebf633ff615b2366cedaccfea3c2b4d6a3295f6440661052e9574c71f89d6dc8a5466e3d84be0b1994e2a4017ab10e1f037f8be1ca89a37 + languageName: node + linkType: hard + "esbuild@npm:esbuild-wasm@^0.15.5": version: 0.15.12 resolution: "esbuild-wasm@npm:0.15.12" @@ -1304,7 +1575,7 @@ __metadata: languageName: node linkType: hard -"fs-minipass@npm:^2.0.0": +"fs-minipass@npm:^2.0.0, fs-minipass@npm:^2.1.0": version: 2.1.0 resolution: "fs-minipass@npm:2.1.0" dependencies: @@ -1313,6 +1584,32 @@ __metadata: languageName: node linkType: hard +"fs.realpath@npm:^1.0.0": + version: 1.0.0 + resolution: "fs.realpath@npm:1.0.0" + checksum: 477fb3547134ce67d71531a19b2597028d2efaeced56a2fcb125ba9994a4204685d256795e4a5b68e5d866d11d8d0dd9050937cb44037beb4caeb3acb75602e2 + languageName: node + linkType: hard + +"fsevents@npm:~2.3.2": + version: 2.3.2 + resolution: "fsevents@npm:2.3.2" + dependencies: + node-gyp: "npm:latest" + checksum: c85eed7a3e0bbe6908f9feae8a823ee63a796ea2b32e20616ee33f0dda9417976f5a087a8cd2ccf228aae1c5b8b6125c9800f05dd69aaf016c34352a0567dcfb + conditions: os=darwin + languageName: node + linkType: hard + +"fsevents@patch:fsevents@npm%3A~2.3.2#optional!builtin": + version: 2.3.2 + resolution: "fsevents@patch:fsevents@npm%3A2.3.2#optional!builtin::version=2.3.2&hash=18f3a7" + dependencies: + node-gyp: "npm:latest" + conditions: os=darwin + languageName: node + linkType: hard + "function-bind@npm:^1.1.1": version: 1.1.1 resolution: "function-bind@npm:1.1.1" @@ -1320,6 +1617,22 @@ __metadata: languageName: node linkType: hard +"gauge@npm:^4.0.3": + version: 4.0.4 + resolution: "gauge@npm:4.0.4" + dependencies: + aproba: "npm:^1.0.3 || ^2.0.0" + color-support: "npm:^1.1.3" + console-control-strings: "npm:^1.1.0" + has-unicode: "npm:^2.0.1" + signal-exit: "npm:^3.0.7" + string-width: "npm:^4.2.3" + strip-ansi: "npm:^6.0.1" + wide-align: "npm:^1.1.5" + checksum: 4fc68f770dba9962a326918f33f58f2458eddea08442c2d716238357e4291dee4223a812ce11084b54f928d607e4dfb6f380ba28d435b2721de94a22d5600669 + languageName: node + linkType: hard + "get-intrinsic@npm:^1.0.2": version: 1.1.3 resolution: "get-intrinsic@npm:1.1.3" @@ -1366,7 +1679,7 @@ __metadata: languageName: node linkType: hard -"glob-parent@npm:^5.1.2": +"glob-parent@npm:^5.1.2, glob-parent@npm:~5.1.2": version: 5.1.2 resolution: "glob-parent@npm:5.1.2" dependencies: @@ -1375,6 +1688,33 @@ __metadata: languageName: node linkType: hard +"glob@npm:^7.1.3, glob@npm:^7.1.4": + version: 7.2.3 + resolution: "glob@npm:7.2.3" + dependencies: + fs.realpath: "npm:^1.0.0" + inflight: "npm:^1.0.4" + inherits: "npm:2" + minimatch: "npm:^3.1.1" + once: "npm:^1.3.0" + path-is-absolute: "npm:^1.0.0" + checksum: c55966a5db7ed2f30976a1490f3165f9d4e20ac7cabf01b55da4cc4f8f53a4c506e6f427e469c2fbf68636200871f3acf07e159ba6d9b65e7386216b98474a34 + languageName: node + linkType: hard + +"glob@npm:^8.0.1": + version: 8.0.3 + resolution: "glob@npm:8.0.3" + dependencies: + fs.realpath: "npm:^1.0.0" + inflight: "npm:^1.0.4" + inherits: "npm:2" + minimatch: "npm:^5.0.1" + once: "npm:^1.3.0" + checksum: e629823aabf11611bfe7b3a2f4582a5e0898daaecba3263081d5d4a8fcc595d07aefb85c178e816f7bf1c07a09fd164dc80558b83e9e825555796929164404b1 + languageName: node + linkType: hard + "globalyzer@npm:0.1.0": version: 0.1.0 resolution: "globalyzer@npm:0.1.0" @@ -1422,6 +1762,13 @@ __metadata: languageName: node linkType: hard +"graceful-fs@npm:^4.2.6": + version: 4.2.10 + resolution: "graceful-fs@npm:4.2.10" + checksum: 6b5f9b5aeaee0459b9c37bdbf9624f788703ce291d6bf2d7751f5003942e853f232ca613aec818d1ff7622379bc8b434c635bfda99db93e0b9b8da80ec3d844d + languageName: node + linkType: hard + "grapheme-splitter@npm:^1.0.4": version: 1.0.4 resolution: "grapheme-splitter@npm:1.0.4" @@ -1429,6 +1776,13 @@ __metadata: languageName: node linkType: hard +"has-flag@npm:^3.0.0": + version: 3.0.0 + resolution: "has-flag@npm:3.0.0" + checksum: b1cb757b71bca736b4f7a060d52a7914b1438d7bd7ba3cb783f71728c7a72d51520955d477d54fce75e19a859d93fadc9b707de019c141c45f2e560c48beb1f9 + languageName: node + linkType: hard + "has-flag@npm:^4.0.0": version: 4.0.0 resolution: "has-flag@npm:4.0.0" @@ -1443,6 +1797,13 @@ __metadata: languageName: node linkType: hard +"has-unicode@npm:^2.0.1": + version: 2.0.1 + resolution: "has-unicode@npm:2.0.1" + checksum: d7f38422bc8e339b52014ed5aea2fdcb6545e583ac252081bc7d0970ae8eaa6efa3d056aa3119ac5825bc51fc289b53fa7b3588a40b8bf71a0dabc346513c485 + languageName: node + linkType: hard + "has@npm:^1.0.3": version: 1.0.3 resolution: "has@npm:1.0.3" @@ -1452,13 +1813,24 @@ __metadata: languageName: node linkType: hard -"http-cache-semantics@npm:^4.0.0": +"http-cache-semantics@npm:^4.0.0, http-cache-semantics@npm:^4.1.0": version: 4.1.0 resolution: "http-cache-semantics@npm:4.1.0" checksum: ccfe23dd2729bc564ab419330e0c4646a1247e8dd728a4a6b3ab427b5243d2e0afea0c6fe690ff9ead43d02bd84cc5240e996543c4c87866f272e26e40540acd languageName: node linkType: hard +"http-proxy-agent@npm:^5.0.0": + version: 5.0.0 + resolution: "http-proxy-agent@npm:5.0.0" + dependencies: + "@tootallnate/once": "npm:2" + agent-base: "npm:6" + debug: "npm:4" + checksum: b59a9b4bdd7c1d3450956a2974cb7b685517c758853a873064a536f5a831879ac92a28c717f69eb60ff3c924b262cb5aaf80cf62f5c2c24d1129d2b8dadf1e7c + languageName: node + linkType: hard + "http2-wrapper@npm:^1.0.0-beta.5.2": version: 1.0.3 resolution: "http2-wrapper@npm:1.0.3" @@ -1469,6 +1841,16 @@ __metadata: languageName: node linkType: hard +"https-proxy-agent@npm:^5.0.0": + version: 5.0.1 + resolution: "https-proxy-agent@npm:5.0.1" + dependencies: + agent-base: "npm:6" + debug: "npm:4" + checksum: 8e767faec977400c31bca2ef0f5338b843b781b63fd985c00d199adac2d6c8a5ecc6e553588a6821a058198960f167a3c83f014bd64bef9a15b176d992d29dfe + languageName: node + linkType: hard + "human-signals@npm:^3.0.1": version: 3.0.1 resolution: "human-signals@npm:3.0.1" @@ -1476,6 +1858,24 @@ __metadata: languageName: node linkType: hard +"humanize-ms@npm:^1.2.1": + version: 1.2.1 + resolution: "humanize-ms@npm:1.2.1" + dependencies: + ms: "npm:^2.0.0" + checksum: fded981fd3b507fe78f7ce505c3f060e3b53cb2155d279d794a6bddb451bb1c7f865f4ca495dc0bae695ad0c182fd5be3a581b51ba30770e6adfda960bca0e68 + languageName: node + linkType: hard + +"iconv-lite@npm:^0.6.2": + version: 0.6.3 + resolution: "iconv-lite@npm:0.6.3" + dependencies: + safer-buffer: "npm:>= 2.1.2 < 3.0.0" + checksum: 14633c984e398011b4cce3d453e6566e4cc1b58f257e6fc48ae39c25a158b926e6cd7ee6023cd84aff12952a7581bd10bd4e7954af802dd5678e83b4cb8fdbba + languageName: node + linkType: hard + "ieee754@npm:^1.1.13": version: 1.2.1 resolution: "ieee754@npm:1.2.1" @@ -1483,6 +1883,13 @@ __metadata: languageName: node linkType: hard +"ignore-by-default@npm:^1.0.1": + version: 1.0.1 + resolution: "ignore-by-default@npm:1.0.1" + checksum: a243c7acff1f7233ac437acc67a13e1757dd1ea7092c1b8e30585844d8fac4d672a0c257dcffd8ef8fe100cfe030580f8c3ec72ddb8064753fcfa3633da8a80a + languageName: node + linkType: hard + "ignore@npm:^5.2.0": version: 5.2.0 resolution: "ignore@npm:5.2.0" @@ -1490,6 +1897,13 @@ __metadata: languageName: node linkType: hard +"imurmurhash@npm:^0.1.4": + version: 0.1.4 + resolution: "imurmurhash@npm:0.1.4" + checksum: 6e2473e6083063b9f5f21a9586794b3af5b3f87995bcf60cb64f3824a7323c2ae41b4eaf3d7446e20fb66b5f3410094246aa3c52db7585270c8b10f762b8ffa1 + languageName: node + linkType: hard + "indent-string@npm:^4.0.0": version: 4.0.0 resolution: "indent-string@npm:4.0.0" @@ -1497,7 +1911,24 @@ __metadata: languageName: node linkType: hard -"inherits@npm:^2.0.3, inherits@npm:^2.0.4": +"infer-owner@npm:^1.0.4": + version: 1.0.4 + resolution: "infer-owner@npm:1.0.4" + checksum: 2020f6d0322e7910ce841134a303c69857e456531d8cd01e336f6eea18122d1085b93ebde961745e5f278233f7f8a3d8b60b9276c8dbd3f49c4c352582ec9504 + languageName: node + linkType: hard + +"inflight@npm:^1.0.4": + version: 1.0.6 + resolution: "inflight@npm:1.0.6" + dependencies: + once: "npm:^1.3.0" + wrappy: "npm:1" + checksum: 40d0e5db34e05d49b9ad9ac678334269745644f73206862a8dee6e50ada1c8b3e70774ce28d5e6e3b03b7b868c9d9ae1edaf6eff253fc50209e4c69decad1811 + languageName: node + linkType: hard + +"inherits@npm:2, inherits@npm:^2.0.3, inherits@npm:^2.0.4": version: 2.0.4 resolution: "inherits@npm:2.0.4" checksum: ca76c7e45ec715bfe6c1dd67b780b9a15068f37b37ab56cf8b773537b2654238469a42950f5f4d301212755e7512be888f627752e778e1863d95cfedefc8b8bd @@ -1554,6 +1985,22 @@ __metadata: languageName: node linkType: hard +"ip@npm:^2.0.0": + version: 2.0.0 + resolution: "ip@npm:2.0.0" + checksum: 42a7cf251b844d98a4c3373d06997b991cd1a7f8a5d43bcf2b4f610517d39c5504f6eb3e73e77f5c1453ac766690e82dab28a8a05a49a6fd7d4a40fad93640e9 + languageName: node + linkType: hard + +"is-binary-path@npm:~2.1.0": + version: 2.1.0 + resolution: "is-binary-path@npm:2.1.0" + dependencies: + binary-extensions: "npm:^2.0.0" + checksum: f6ed933392b85facdc081bbe3539602ac70cf35fe5d3d7e02da0b9c4bc65fa673d815142f16bf6253de84a561332a680382be1ade1406c89c9102832a571620f + languageName: node + linkType: hard + "is-ci@npm:^2.0.0": version: 2.0.0 resolution: "is-ci@npm:2.0.0" @@ -1579,7 +2026,7 @@ __metadata: languageName: node linkType: hard -"is-glob@npm:^4.0.1": +"is-glob@npm:^4.0.1, is-glob@npm:~4.0.1": version: 4.0.3 resolution: "is-glob@npm:4.0.3" dependencies: @@ -1588,6 +2035,13 @@ __metadata: languageName: node linkType: hard +"is-lambda@npm:^1.0.1": + version: 1.0.1 + resolution: "is-lambda@npm:1.0.1" + checksum: 8e761e558bf60bd3682648e6ecb6333e9ad9c5a6fef2a9ca879deef1a40478e5f7e18999fc3630ef8b879cf00bc0248ffa5616aa4251917a7f87f066841310aa + languageName: node + linkType: hard + "is-number@npm:^7.0.0": version: 7.0.0 resolution: "is-number@npm:7.0.0" @@ -1660,7 +2114,7 @@ __metadata: languageName: node linkType: hard -"lodash@npm:^4.17.15, lodash@npm:^4.17.20": +"lodash@npm:^4.17.15, lodash@npm:^4.17.20, lodash@npm:^4.17.21": version: 4.17.21 resolution: "lodash@npm:4.17.21" checksum: 3ac18e92108d68f88429fcddee609e42cf2b653583d9bac22308815a4cd6b185b89a0ad0d9b0c670c371d9d6b61571a98fee6b36e1db14e52766ca253ed9cba0 @@ -1694,6 +2148,37 @@ __metadata: languageName: node linkType: hard +"lru-cache@npm:^7.7.1": + version: 7.14.1 + resolution: "lru-cache@npm:7.14.1" + checksum: e4c8c073d9632585dde73bb2c857c22866f61f3ee75fea6e1dcc5412b59eca4107bc511c4b4ae4e038c7f59a15488b67448b24a3a1154def46c8ab1d07935d85 + languageName: node + linkType: hard + +"make-fetch-happen@npm:^10.0.3": + version: 10.2.1 + resolution: "make-fetch-happen@npm:10.2.1" + dependencies: + agentkeepalive: "npm:^4.2.1" + cacache: "npm:^16.1.0" + http-cache-semantics: "npm:^4.1.0" + http-proxy-agent: "npm:^5.0.0" + https-proxy-agent: "npm:^5.0.0" + is-lambda: "npm:^1.0.1" + lru-cache: "npm:^7.7.1" + minipass: "npm:^3.1.6" + minipass-collect: "npm:^1.0.2" + minipass-fetch: "npm:^2.0.3" + minipass-flush: "npm:^1.0.5" + minipass-pipeline: "npm:^1.2.4" + negotiator: "npm:^0.6.3" + promise-retry: "npm:^2.0.1" + socks-proxy-agent: "npm:^7.0.0" + ssri: "npm:^9.0.0" + checksum: cf0d4b94fb0b022d41373fe7ce0f2a170a7c2668c7404f985c4fa6fe465c24cc3d1a6a84e0a6d4b2cd60cf7d41ec26cc5205d258e15f06c33179c14a31a5e4bd + languageName: node + linkType: hard + "merge-stream@npm:^2.0.0": version: 2.0.0 resolution: "merge-stream@npm:2.0.0" @@ -1746,7 +2231,76 @@ __metadata: languageName: node linkType: hard -"minipass@npm:^3.0.0": +"minimatch@npm:^3.1.1, minimatch@npm:^3.1.2": + version: 3.1.2 + resolution: "minimatch@npm:3.1.2" + dependencies: + brace-expansion: "npm:^1.1.7" + checksum: 97f5615ee8f7c0019277dadef7b2b81e5c60d369cb3155cbfb9da72688aef2edb652b105353ff08a6575ae95a6189d1c09a0829b9c254f60849148457c4d8a66 + languageName: node + linkType: hard + +"minimatch@npm:^5.0.1": + version: 5.1.0 + resolution: "minimatch@npm:5.1.0" + dependencies: + brace-expansion: "npm:^2.0.1" + checksum: cf8124b47d19be2d6a4b2cab80114999239ab6a01062e2f0abe666b779de120b6f85ed9a73e3a27b61fa088fb45957929a8fcc727bd20de829d3e4e659ad01ff + languageName: node + linkType: hard + +"minipass-collect@npm:^1.0.2": + version: 1.0.2 + resolution: "minipass-collect@npm:1.0.2" + dependencies: + minipass: "npm:^3.0.0" + checksum: 4d608e8a292ec87dd1a7d881c314effe341a7d7f52eb416270a243f8ea7f4e23b40b2785f5ce9c6c7841e1453841019efd5db05b427288b897c96f62afbc1f17 + languageName: node + linkType: hard + +"minipass-fetch@npm:^2.0.3": + version: 2.1.2 + resolution: "minipass-fetch@npm:2.1.2" + dependencies: + encoding: "npm:^0.1.13" + minipass: "npm:^3.1.6" + minipass-sized: "npm:^1.0.3" + minizlib: "npm:^2.1.2" + dependenciesMeta: + encoding: + optional: true + checksum: 8ec17c0895d8890b863bbdf860e25bc2f81580c0bbc2cfc05d220f8b5bc255203ee1931f54821e299fd1d5a53d63bfaca20a813a2f45e881423d096c24940366 + languageName: node + linkType: hard + +"minipass-flush@npm:^1.0.5": + version: 1.0.5 + resolution: "minipass-flush@npm:1.0.5" + dependencies: + minipass: "npm:^3.0.0" + checksum: 6e851bd0640e5406633b0aa77e889d4175eb3d12b55173e999e6dd1fc06ed13982277e012d6f41dc28a2167278d9480697893f6cd286c46c10fdfd735e05d45d + languageName: node + linkType: hard + +"minipass-pipeline@npm:^1.2.4": + version: 1.2.4 + resolution: "minipass-pipeline@npm:1.2.4" + dependencies: + minipass: "npm:^3.0.0" + checksum: 07dd09bf3c6f546ef407e7a36bca4cd2235d54695c083dc5815052e36cbdd46e55a7c0dae2801983c73257adc7aa613e375c8350587bc50a6a10e1a6b55f9965 + languageName: node + linkType: hard + +"minipass-sized@npm:^1.0.3": + version: 1.0.3 + resolution: "minipass-sized@npm:1.0.3" + dependencies: + minipass: "npm:^3.0.0" + checksum: 54591ac7e54571e91df602e3c1018f4048ee12a3407dfab8140e0b03cb149c16ae67e94d36682c0869a683b8443470e354dba123ea83914c87ff22d8d8628fea + languageName: node + linkType: hard + +"minipass@npm:^3.0.0, minipass@npm:^3.1.1, minipass@npm:^3.1.6": version: 3.3.5 resolution: "minipass@npm:3.3.5" dependencies: @@ -1755,7 +2309,7 @@ __metadata: languageName: node linkType: hard -"minizlib@npm:^2.1.1": +"minizlib@npm:^2.1.1, minizlib@npm:^2.1.2": version: 2.1.2 resolution: "minizlib@npm:2.1.2" dependencies: @@ -1765,7 +2319,7 @@ __metadata: languageName: node linkType: hard -"mkdirp@npm:^1.0.3": +"mkdirp@npm:^1.0.3, mkdirp@npm:^1.0.4": version: 1.0.4 resolution: "mkdirp@npm:1.0.4" bin: @@ -1774,6 +2328,47 @@ __metadata: languageName: node linkType: hard +"ms@npm:2.1.2": + version: 2.1.2 + resolution: "ms@npm:2.1.2" + checksum: 3f46af60a08158f1c77746c06c2f6c7aba7feddafd41335f9baa2d7e0741d7539774aa7d5d1661a7f2b7eed55a7063771297eea016051924dbb04d4c2bf40bcb + languageName: node + linkType: hard + +"ms@npm:^2.0.0, ms@npm:^2.1.1": + version: 2.1.3 + resolution: "ms@npm:2.1.3" + checksum: 78c12f6b473a022ebacc393fc14b76fe40b8feda7218124b86c4684e440e10377a063bec1d3902df1f74714f02b74b36ad7d3a6de9e2fbffa26fc29e5ce018fc + languageName: node + linkType: hard + +"negotiator@npm:^0.6.3": + version: 0.6.3 + resolution: "negotiator@npm:0.6.3" + checksum: d8e3b42d99638b1f363ce114c98e6906ade395c230058e50644417bd398b01381133dbca4bc49f30f6b1c93254e4b5a2d50cc47adcdabf2a8476b6f16311ad5d + languageName: node + linkType: hard + +"node-gyp@npm:latest": + version: 9.3.0 + resolution: "node-gyp@npm:9.3.0" + dependencies: + env-paths: "npm:^2.2.0" + glob: "npm:^7.1.4" + graceful-fs: "npm:^4.2.6" + make-fetch-happen: "npm:^10.0.3" + nopt: "npm:^6.0.0" + npmlog: "npm:^6.0.0" + rimraf: "npm:^3.0.2" + semver: "npm:^7.3.5" + tar: "npm:^6.1.2" + which: "npm:^2.0.2" + bin: + node-gyp: bin/node-gyp.js + checksum: 986e171f91cedd913800b4f272f9c22258a15bc8f44d2426630dc68d98281614004d4da1a8aec7a70a6171056425a95828cd68d8433b89d0e16ed973507ecccf + languageName: node + linkType: hard + "node-watch@npm:0.7.3": version: 0.7.3 resolution: "node-watch@npm:0.7.3" @@ -1781,6 +2376,55 @@ __metadata: languageName: node linkType: hard +"nodemon@npm:^2.0.20": + version: 2.0.20 + resolution: "nodemon@npm:2.0.20" + dependencies: + chokidar: "npm:^3.5.2" + debug: "npm:^3.2.7" + ignore-by-default: "npm:^1.0.1" + minimatch: "npm:^3.1.2" + pstree.remy: "npm:^1.1.8" + semver: "npm:^5.7.1" + simple-update-notifier: "npm:^1.0.7" + supports-color: "npm:^5.5.0" + touch: "npm:^3.1.0" + undefsafe: "npm:^2.0.5" + bin: + nodemon: bin/nodemon.js + checksum: 49aaba39d908a24b7b31c6b8ba81c86763ae2606f21b368af7f79bef5211759d7102a527bb34f2c94196f325d91e6327d3dfc045b470f851ac0053a3901c5382 + languageName: node + linkType: hard + +"nopt@npm:^6.0.0": + version: 6.0.0 + resolution: "nopt@npm:6.0.0" + dependencies: + abbrev: "npm:^1.0.0" + bin: + nopt: bin/nopt.js + checksum: 6ae5c083c5b205d0850f3b00c093cb0b1d4fb28fb69c68c3f933048e666695b1f218db6a4a7f61a4bae2f127268f526a7f2764223208e4dd527c51c56c49a5c7 + languageName: node + linkType: hard + +"nopt@npm:~1.0.10": + version: 1.0.10 + resolution: "nopt@npm:1.0.10" + dependencies: + abbrev: "npm:1" + bin: + nopt: ./bin/nopt.js + checksum: efa5a9c2c167b6c4e399fcefab89d573a580e33a604a04800093e4e0a7c477828c0d8d2f07f6af48c81e270f09d67bb530307239b2b10824fabf2f535b4dee75 + languageName: node + linkType: hard + +"normalize-path@npm:^3.0.0, normalize-path@npm:~3.0.0": + version: 3.0.0 + resolution: "normalize-path@npm:3.0.0" + checksum: 66de83885051c8a7266566cb175281ec583e3d66b5054c744b46a0eebc4eaac1e1d74c640aaf72144086a9661aa60e89ac0b5c92eb76608e5b8a5056dbcf9e27 + languageName: node + linkType: hard + "normalize-url@npm:^6.0.1, normalize-url@npm:^6.1.0": version: 6.1.0 resolution: "normalize-url@npm:6.1.0" @@ -1797,6 +2441,18 @@ __metadata: languageName: node linkType: hard +"npmlog@npm:^6.0.0": + version: 6.0.2 + resolution: "npmlog@npm:6.0.2" + dependencies: + are-we-there-yet: "npm:^3.0.0" + console-control-strings: "npm:^1.1.0" + gauge: "npm:^4.0.3" + set-blocking: "npm:^2.0.0" + checksum: c04307b2991f128df6f3bb71c36fa56a65397f56f02a565ed269786ecd5609818e6cae36de3371555e52fdf049a5649a3591ac3bb432a2a0146d67093c4be93c + languageName: node + linkType: hard + "object-assign@npm:^4.1.1": version: 4.1.1 resolution: "object-assign@npm:4.1.1" @@ -1811,7 +2467,7 @@ __metadata: languageName: node linkType: hard -"once@npm:^1.3.1, once@npm:^1.4.0": +"once@npm:^1.3.0, once@npm:^1.3.1, once@npm:^1.4.0": version: 1.4.0 resolution: "once@npm:1.4.0" dependencies: @@ -1854,6 +2510,15 @@ __metadata: languageName: node linkType: hard +"p-map@npm:^4.0.0": + version: 4.0.0 + resolution: "p-map@npm:4.0.0" + dependencies: + aggregate-error: "npm:^3.0.0" + checksum: 619df8954fe81933903bc760e9884d85540ef7e8f6c24c4e28e2c8f0ad14d480bb7d4541787eee2e2d61aa0fae8b54abc42f7afc35db457884e589386e78a922 + languageName: node + linkType: hard + "p-try@npm:^2.0.0": version: 2.2.0 resolution: "p-try@npm:2.2.0" @@ -1892,6 +2557,13 @@ __metadata: languageName: node linkType: hard +"path-is-absolute@npm:^1.0.0": + version: 1.0.1 + resolution: "path-is-absolute@npm:1.0.1" + checksum: 6bb8fef4324c3f744e5d216980aa053095e1fc533d40fa47f9c1adc16be7fa52d3c4858370c7685406c32ab143a4dca0798f2e2c0f57d7937af66d8dd79267f6 + languageName: node + linkType: hard + "path-key@npm:^3.1.0": version: 3.1.1 resolution: "path-key@npm:3.1.1" @@ -1913,13 +2585,30 @@ __metadata: languageName: node linkType: hard -"picomatch@npm:^2.3.1": +"picomatch@npm:^2.0.4, picomatch@npm:^2.2.1, picomatch@npm:^2.3.1": version: 2.3.1 resolution: "picomatch@npm:2.3.1" checksum: 6ba5938c24af2c5918e94b39aa0ad48d71f2c30634de69d46e0bd32feb666de4e909406db6ffb78f98d39ef450d6a41b6fa3954dc3659d7b2b750766c1261e5e languageName: node linkType: hard +"promise-inflight@npm:^1.0.1": + version: 1.0.1 + resolution: "promise-inflight@npm:1.0.1" + checksum: 7671022d3ea7e40e29ee941d30df819ed2a81a3d22b1175ed8c1bd83af542ea94ca47b50bea54634b12f7b1837fcd7dd5bcc7720910befa0076d12582ee56c93 + languageName: node + linkType: hard + +"promise-retry@npm:^2.0.1": + version: 2.0.1 + resolution: "promise-retry@npm:2.0.1" + dependencies: + err-code: "npm:^2.0.2" + retry: "npm:^0.12.0" + checksum: cbff149b3327554f3613196ca300a77aefac289624148c37e5c9236242931691a4ba0a76fd1c6171e6a3e6a2b1edfa2acdf122004857e6f3e3efd1be29df6cd2 + languageName: node + linkType: hard + "prop-types@npm:^15.6.2": version: 15.8.1 resolution: "prop-types@npm:15.8.1" @@ -1945,6 +2634,13 @@ __metadata: languageName: node linkType: hard +"pstree.remy@npm:^1.1.8": + version: 1.1.8 + resolution: "pstree.remy@npm:1.1.8" + checksum: f144e436fd0b93837fffe2ca0f8638788188a5aca8973996e2f9bb76c70ac0218796e4f5da00a7a64d0715d1df837416d6766ec93f5b24147e71738858a4afd7 + languageName: node + linkType: hard + "pump@npm:^3.0.0": version: 3.0.0 resolution: "pump@npm:3.0.0" @@ -2044,7 +2740,7 @@ __metadata: languageName: node linkType: hard -"readable-stream@npm:^3.1.1, readable-stream@npm:^3.4.0": +"readable-stream@npm:^3.1.1, readable-stream@npm:^3.4.0, readable-stream@npm:^3.6.0": version: 3.6.0 resolution: "readable-stream@npm:3.6.0" dependencies: @@ -2055,6 +2751,15 @@ __metadata: languageName: node linkType: hard +"readdirp@npm:~3.6.0": + version: 3.6.0 + resolution: "readdirp@npm:3.6.0" + dependencies: + picomatch: "npm:^2.2.1" + checksum: 9dea77bef6b47b7c7553da4b5f30606449b49cf2aa043de23e22bee909c2d26c97630b8f8fa43775e318731c5a208d2063a10d3c788a3b0e1a9e32c5ab5fe790 + languageName: node + linkType: hard + "readline-sync@npm:1.4.9": version: 1.4.9 resolution: "readline-sync@npm:1.4.9" @@ -2088,6 +2793,13 @@ __metadata: languageName: node linkType: hard +"retry@npm:^0.12.0": + version: 0.12.0 + resolution: "retry@npm:0.12.0" + checksum: 1c3616bdf89aa6f887bcca2b86603c255f4b497577f6a54f33262f4f314b8516d65e251f717b45e2a5ec234359999015a9e2263b38467544188210327e638ac3 + languageName: node + linkType: hard + "reusify@npm:^1.0.4": version: 1.0.4 resolution: "reusify@npm:1.0.4" @@ -2095,6 +2807,17 @@ __metadata: languageName: node linkType: hard +"rimraf@npm:^3.0.2": + version: 3.0.2 + resolution: "rimraf@npm:3.0.2" + dependencies: + glob: "npm:^7.1.3" + bin: + rimraf: bin.js + checksum: b786c9ad52df9fbcd9c7120e105f3150b83b39dd87d9235a93b0c7e806575e1e68936504ff64563dbe67b3f8bbbc00bdfff586157d402ee8990e7143456511c0 + languageName: node + linkType: hard + "run-parallel@npm:^1.1.9": version: 1.2.0 resolution: "run-parallel@npm:1.2.0" @@ -2111,6 +2834,13 @@ __metadata: languageName: node linkType: hard +"safer-buffer@npm:>= 2.1.2 < 3.0.0": + version: 2.1.2 + resolution: "safer-buffer@npm:2.1.2" + checksum: d4199666e9e792968c0b88c2c35dd400f56d3eecb9affbcf5207922822eadf30cc06995bae3c5d0a653851bbd40fc0af578bf046bbf734199ce22433ba4da659 + languageName: node + linkType: hard + "scheduler@npm:^0.20.2": version: 0.20.2 resolution: "scheduler@npm:0.20.2" @@ -2121,7 +2851,16 @@ __metadata: languageName: node linkType: hard -"semver@npm:^7.1.2": +"semver@npm:^5.7.1": + version: 5.7.1 + resolution: "semver@npm:5.7.1" + bin: + semver: ./bin/semver + checksum: e1d12140b695aeb8917978d134ff3f8fee33489a5eaf6b217111ab0b14cbf45f36753d510db4dfbdc5a6f304e053ff1a4995c5498e9734ad9bf98182e4f39704 + languageName: node + linkType: hard + +"semver@npm:^7.1.2, semver@npm:^7.3.5": version: 7.3.8 resolution: "semver@npm:7.3.8" dependencies: @@ -2132,6 +2871,22 @@ __metadata: languageName: node linkType: hard +"semver@npm:~7.0.0": + version: 7.0.0 + resolution: "semver@npm:7.0.0" + bin: + semver: bin/semver.js + checksum: c0b7fdd720c6ee955cd71172ef8d63f41976d70049f02aa7569edff0ab89846ee035e39c82f3733fd2af3285f6ca6e14c3778e8de84cd8ea6ec1a33c68bf072a + languageName: node + linkType: hard + +"set-blocking@npm:^2.0.0": + version: 2.0.0 + resolution: "set-blocking@npm:2.0.0" + checksum: 9e8f5aeb7cd850a60b5dbf47d42051137c14f58f375d9a70ca227b797d6ffed3dabf659587d2f183231085f1da2dc3067e2af9f5fcd66fb65c98da5fb54a22fb + languageName: node + linkType: hard + "shebang-command@npm:^2.0.0": version: 2.0.0 resolution: "shebang-command@npm:2.0.0" @@ -2173,6 +2928,15 @@ __metadata: languageName: node linkType: hard +"simple-update-notifier@npm:^1.0.7": + version: 1.0.7 + resolution: "simple-update-notifier@npm:1.0.7" + dependencies: + semver: "npm:~7.0.0" + checksum: 7c7053ecefbe2f8ba88af5522e59266de309edf0861320f889ae38676353b52b3e9d15f6e99867fa696eb6e2734d563ae0a910e0e8577c68411a34e969338b16 + languageName: node + linkType: hard + "slash@npm:^3.0.0": version: 3.0.0 resolution: "slash@npm:3.0.0" @@ -2191,6 +2955,34 @@ __metadata: languageName: node linkType: hard +"smart-buffer@npm:^4.2.0": + version: 4.2.0 + resolution: "smart-buffer@npm:4.2.0" + checksum: 898a5ce4651108164625916aa54b6f7c13e86279a31dd321737d27c4b795cfaaeb1c30417f8809029d80d20710d8a5045998afd35e0f1080b32648f5670aa99b + languageName: node + linkType: hard + +"socks-proxy-agent@npm:^7.0.0": + version: 7.0.0 + resolution: "socks-proxy-agent@npm:7.0.0" + dependencies: + agent-base: "npm:^6.0.2" + debug: "npm:^4.3.3" + socks: "npm:^2.6.2" + checksum: d57c2c68a2c16a2ac0af30971e1c4899e80cab3bbe405fe2fa3fce26ccd007fe855110b97c0e6d96ddc56926e1e5927a868070cb09185a768d1ad8cbe1a68aa5 + languageName: node + linkType: hard + +"socks@npm:^2.6.2": + version: 2.7.1 + resolution: "socks@npm:2.7.1" + dependencies: + ip: "npm:^2.0.0" + smart-buffer: "npm:^4.2.0" + checksum: a8026d6abfcd168a661240848f6989fbba66276e8fa97ff1cb1079c2f3c6907dcc8284fcbc4f6d3fee8d071afb4fc8313da7e5fbf6d8768f206347a671f1542b + languageName: node + linkType: hard + "split-on-first@npm:^1.0.0": version: 1.1.0 resolution: "split-on-first@npm:1.1.0" @@ -2214,6 +3006,15 @@ __metadata: languageName: node linkType: hard +"ssri@npm:^9.0.0": + version: 9.0.1 + resolution: "ssri@npm:9.0.1" + dependencies: + minipass: "npm:^3.1.1" + checksum: ec9e6fbb74ccb030391fc33aa1a8373014f1cdde570e389cf25f201604d6889035fc8b4409a6e8e787d75ddad892839c0e5a4ea6b67e7ab91f3c619e5e6e087a + languageName: node + linkType: hard + "stack-utils@npm:^2.0.2": version: 2.0.5 resolution: "stack-utils@npm:2.0.5" @@ -2230,7 +3031,7 @@ __metadata: languageName: node linkType: hard -"string-width@npm:^4.0.0, string-width@npm:^4.1.0, string-width@npm:^4.2.0, string-width@npm:^4.2.2": +"string-width@npm:^1.0.2 || 2 || 3 || 4, string-width@npm:^4.0.0, string-width@npm:^4.1.0, string-width@npm:^4.2.0, string-width@npm:^4.2.2, string-width@npm:^4.2.3": version: 4.2.3 resolution: "string-width@npm:4.2.3" dependencies: @@ -2266,6 +3067,15 @@ __metadata: languageName: node linkType: hard +"supports-color@npm:^5.5.0": + version: 5.5.0 + resolution: "supports-color@npm:5.5.0" + dependencies: + has-flag: "npm:^3.0.0" + checksum: 2eca8c4c8fccd2bd0027af240f85e99b1c9cb221186288dd478ce0fc61bdc07394e47f1bba2c91fe3ae432764772e3639e9c48bef19817267f151ae4a9b9ebef + languageName: node + linkType: hard + "supports-color@npm:^7.1.0": version: 7.2.0 resolution: "supports-color@npm:7.2.0" @@ -2302,6 +3112,20 @@ __metadata: languageName: node linkType: hard +"tar@npm:^6.1.11, tar@npm:^6.1.2": + version: 6.1.12 + resolution: "tar@npm:6.1.12" + dependencies: + chownr: "npm:^2.0.0" + fs-minipass: "npm:^2.0.0" + minipass: "npm:^3.0.0" + minizlib: "npm:^2.1.1" + mkdirp: "npm:^1.0.3" + yallist: "npm:^4.0.0" + checksum: 661e622cf4ae2cf9ffcef086a2bca16fadcf585415985377a1a54a8b92a475cc9c34501f59e87d16168586160d559d80186f1e5b18daf71d9678c6852d5137a2 + languageName: node + linkType: hard + "tau-prolog@npm:^0.2.66": version: 0.2.81 resolution: "tau-prolog@npm:0.2.81" @@ -2338,6 +3162,17 @@ __metadata: languageName: node linkType: hard +"touch@npm:^3.1.0": + version: 3.1.0 + resolution: "touch@npm:3.1.0" + dependencies: + nopt: "npm:~1.0.10" + bin: + nodetouch: ./bin/nodetouch.js + checksum: 21657a0e9ed8de9263090dfcc261e652cf36fa9dda56e257897eb9d4afc973a13b9df6a62fb797a9afde3f47adb0a1c2174c02e0a54245fe9cff0a1ef5631dad + languageName: node + linkType: hard + "treeify@npm:^1.1.0": version: 1.1.0 resolution: "treeify@npm:1.1.0" @@ -2407,6 +3242,31 @@ __metadata: languageName: node linkType: hard +"undefsafe@npm:^2.0.5": + version: 2.0.5 + resolution: "undefsafe@npm:2.0.5" + checksum: ae6c8e9192b85698bbdc7f1e2127c13b9fc6344b6d51ccd13ea98b349e8f36d9fef3f13125a50fa135d3dc14d6bd190b566f0cc515f89a76e36a6d05d5d724b6 + languageName: node + linkType: hard + +"unique-filename@npm:^2.0.0": + version: 2.0.1 + resolution: "unique-filename@npm:2.0.1" + dependencies: + unique-slug: "npm:^3.0.0" + checksum: 1efaebd1b9df4770537f73b040adc8ef2b7da29b837388d97d6d78a4a739dc67bc491e45d381a377bc80ee838e7e1dc904193b3e73cd6c117d96f92b3a09ed46 + languageName: node + linkType: hard + +"unique-slug@npm:^3.0.0": + version: 3.0.0 + resolution: "unique-slug@npm:3.0.0" + dependencies: + imurmurhash: "npm:^0.1.4" + checksum: ae31bb1d8126400e512385ec239b3ca40f6a8790af9d6dedb0842b340b3ecc0a7de413ff270f3ea3dae1565c6f745ab6e28363387cd32ecddbe0fc72ee247303 + languageName: node + linkType: hard + "util-deprecate@npm:^1.0.1": version: 1.0.2 resolution: "util-deprecate@npm:1.0.2" @@ -2414,7 +3274,7 @@ __metadata: languageName: node linkType: hard -"which@npm:^2.0.1": +"which@npm:^2.0.1, which@npm:^2.0.2": version: 2.0.2 resolution: "which@npm:2.0.2" dependencies: @@ -2425,6 +3285,15 @@ __metadata: languageName: node linkType: hard +"wide-align@npm:^1.1.5": + version: 1.1.5 + resolution: "wide-align@npm:1.1.5" + dependencies: + string-width: "npm:^1.0.2 || 2 || 3 || 4" + checksum: 39915f81cdc6cee1f54bfd7672619cc6d0bd558089f968ea7831324cd4b5ed00e78e710a64f05e5d75ed7880e45eef97295907f68d5aabb9d2899436c917b275 + languageName: node + linkType: hard + "widest-line@npm:^3.1.0": version: 3.1.0 resolution: "widest-line@npm:3.1.0" @@ -2478,12 +3347,15 @@ __metadata: version: 0.0.0-use.local resolution: "yarn-plugin-yarnpnp2nix@workspace:." dependencies: + "@types/lodash": "npm:^4" "@types/node": "npm:^16.0.0" "@yarnpkg/builder": "npm:^4.0.0-rc.26" "@yarnpkg/cli": "npm:^4.0.0-rc.26" "@yarnpkg/core": "npm:^4.0.0-rc.26" "@yarnpkg/pnp": "npm:^4.0.0-rc.26" execa: "npm:^6.1.0" + lodash: "npm:^4.17.21" + nodemon: "npm:^2.0.20" typescript: "npm:4.9.1-beta" languageName: unknown linkType: soft diff --git a/runTests.sh b/runTests.sh index aaec8ae..f2c2e87 100755 --- a/runTests.sh +++ b/runTests.sh @@ -6,9 +6,14 @@ system="$(nix eval --impure --json --expr builtins.currentSystem | jq -r)" pushd test +nix eval --json .#packages.aarch64-darwin.testa.transitiveRuntimePackages + nix build -L .#packages.$system.testb ./result/bin/testb +nix build -L .#packages.$system.testa +./result/bin/testa-peer-test + nix build -L .#packages.$system.testb.package testbPackage=$(realpath ./result)/node_modules/testb diff --git a/test/flake.lock b/test/flake.lock index a9ba8fd..e1fc585 100644 --- a/test/flake.lock +++ b/test/flake.lock @@ -80,12 +80,12 @@ }, "locked": { "lastModified": 0, - "narHash": "sha256-8MJQeKJMzZYFSHvKCyaHlnwmhx+ZaAy3ubYB48+TouY=", - "path": "/nix/store/dv0yrvhafqbimvs5vly91c0pjihyzjbi-source", + "narHash": "sha256-HRnErOqujWHVlHhPjz0Yef9CsQ23cdnRZf8UTizQdtk=", + "path": "/nix/store/rmhjmb42cnn7c5zrk7fdhrz6whz020ib-source", "type": "path" }, "original": { - "path": "/nix/store/dv0yrvhafqbimvs5vly91c0pjihyzjbi-source", + "path": "/nix/store/rmhjmb42cnn7c5zrk7fdhrz6whz020ib-source", "type": "path" } } diff --git a/test/flake.nix b/test/flake.nix index 6075268..c03b5f5 100644 --- a/test/flake.nix +++ b/test/flake.nix @@ -15,23 +15,28 @@ outputsBuilder = channels: rec { packages = let - mkYarnPackagesFromManifest = yarnpnp2nix.lib."${channels.nixpkgs.stdenv.system}".mkYarnPackagesFromManifest; - yarnPackages = mkYarnPackagesFromManifest { - yarnManifest = import ./workspace/yarn-manifest.nix; - inherit packageOverrides; + mkYarnPackagesFromLockFile = yarnpnp2nix.lib."${channels.nixpkgs.stdenv.system}".mkYarnPackagesFromLockFile; + yarnPackages = mkYarnPackagesFromLockFile { + yarnLock = ./workspace/yarn.lock; # REQUIRED + yarnManifest = import ./workspace/yarn-manifest.nix; # OPTIONAL for if you're using native node modules, see below + inherit packageOverrides; # OPTIONAL manual package overrides, see below }; packageOverrides = { "esbuild@npm:0.15.10" = { + # You can add outputHashes here in packageOverrides for native modules # e.g - # outputHashByPlatform."x86_64-linux" = "sha512-JLsYDltCSWhFcmTVQGYko9VVmpG1qAdeJFMsN3yvO7sktJ0RghsC+/QDud1CgQ9XilIM6XyqOfmI9YkCg7vtuQ=="; - # outputHashByPlatform."aarch64-darwin" = "sha512-caJxLF7+d8wUQPwiBG7liRlRBWRwfJ8c7ZABOvmRdXHjitoPXBE59S1DCaiyaQI2CwGRy0LW97MPBiS45UeB5w=="; + shouldBeUnplugged = true; + outputHashByPlatform."x86_64-linux" = "sha512-1vaO639lFTNMppXf76TOY6NEbmVUkAiCNlYM/f3Q7Plf1TIGnyKgfHK7YiCwS8wtLYzzvrEp2JyIewZfhlu2xw=="; + outputHashByPlatform."aarch64-darwin" = "sha512-1vaO639lFTNMppXf76TOY6NEbmVUkAiCNlYM/f3Q7Plf1TIGnyKgfHK7YiCwS8wtLYzzvrEp2JyIewZfhlu2xw=="; }; + # ... or alternatively install the Yarn plugin as described in README.md + # to generate a yarn-manifest.nix (pass to mkYarnPackagesFromLockFile like above) "esbuild-darwin-arm64@npm:0.15.10" = { # e.g # outputHash = "sha512-3TVtFilKcMx170rnF8GfVtyqGUT/FnDcrZwlZX3ChtXrehLUKQwnkNlBnTrTdPBbrUygkkp3PZzH6VZrqsCHVQ=="; }; "canvas@npm:2.10.1" = { - __noChroot = true; + __noChroot = true; # HACK escape hatch, do not use if possible, but it's an option if needed buildInputs = with channels.nixpkgs; ([ autoconf zlib gcc automake pkg-config libtool file python3 @@ -42,10 +47,13 @@ outputHashByPlatform."x86_64-linux" = "sha512-jirTC3XTIyBYEe1l9IgSr8S4zkkl6YvRNaqeQk1itXmbibRfk0KxziApSAmNByf+y0Z9vmMPmnJpr6OE3PODOg=="; }; "testa@workspace:packages/testa" = { + # manually filter dependencies in the final runtime closure (useful for filtering out dependencies not needed at runtime) filterDependencies = dep: dep != "color" && dep != "testf"; + # build script to build the package before packaging up build = '' echo $PATH tsc --version + tsc ''; }; "testb@workspace:packages/testb" = { @@ -60,6 +68,10 @@ pkgs = channels.nixpkgs; yarn-plugin = yarnpnp2nix.packages."${channels.nixpkgs.stdenv.system}".yarn-plugin; react = yarnPackages."react@npm:18.2.0"; + knex = yarnPackages."knex@npm:2.3.0"; + open = yarnPackages."open@patch:open@npm%3A8.4.0#.yarn/patches/open-npm-8.4.0-df63cfe537::version=8.4.0&hash=e6ee73&locator=root-workspace-0b6124%40workspace%3A."; + fsevents = yarnPackages."fsevents@patch:fsevents@npm%3A2.3.2#optional!builtin::version=2.3.2&hash=18f3a7"; + typescript = yarnPackages."typescript@patch:typescript@npm%3A4.8.4#optional!builtin::version=4.8.4&hash=701156"; esbuild = yarnPackages."esbuild@npm:0.15.10"; testa = yarnPackages."testa@workspace:packages/testa"; testb = yarnPackages."testb@workspace:packages/testb"; @@ -80,6 +92,7 @@ devShell = import ./shell.nix { pkgs = channels.nixpkgs; }; + yarnLock = yarnpnp2nix.lib."${channels.nixpkgs.stdenv.system}".parseYarnLock { yarnLockPath = ./workspace/yarn.lock; yarnLockJSON = (yarnpnp2nix.lib."${channels.nixpkgs.stdenv.system}".fromYAML.parse (builtins.readFile ./workspace/yarn.lock)); }; }; }; } diff --git a/test/workspace/.yarnrc.yml b/test/workspace/.yarnrc.yml index 75635ee..5f680d0 100644 --- a/test/workspace/.yarnrc.yml +++ b/test/workspace/.yarnrc.yml @@ -2,3 +2,12 @@ plugins: - ../../plugin/dist/plugin-yarnpnp2nix.js yarnPath: ../../plugin/.yarn/releases/yarn-4.0.0-rc.25.cjs + +packageExtensions: + styled-components@*: + dependencies: + react-is: "*" + subscriptions-transport-ws@*: + peerDependenciesMeta: + "@types/ws": + optional: true diff --git a/test/workspace/package.json b/test/workspace/package.json index c932784..e274fd4 100644 --- a/test/workspace/package.json +++ b/test/workspace/package.json @@ -7,6 +7,9 @@ "esbuild": "^0.15.10" }, "resolutions": { - "open": "patch:open@npm:8.4.0#.yarn/patches/open-npm-8.4.0-df63cfe537" + "open": "patch:open@npm:8.4.0#.yarn/patches/open-npm-8.4.0-df63cfe537", + "testb/knex": "^2.0.0", + "testa/rimraf": "portal:./localPackageTests/test-portal", + "styled-components": "5.1.0" } } diff --git a/test/workspace/packages/testa/bin/testa-peer-test b/test/workspace/packages/testa/bin/testa-peer-test new file mode 100755 index 0000000..f01a8b1 --- /dev/null +++ b/test/workspace/packages/testa/bin/testa-peer-test @@ -0,0 +1,5 @@ +#!/usr/bin/env node + +const { expect } = require('chai') + +expect(() => require('teste')).to.throw(`teste tried to access react (a peer dependency) but it isn't provided by your application; this makes the require call ambiguous and unsound.`) diff --git a/test/workspace/packages/testa/example.ts b/test/workspace/packages/testa/example.ts new file mode 100644 index 0000000..9f3d3b5 --- /dev/null +++ b/test/workspace/packages/testa/example.ts @@ -0,0 +1,5 @@ +import subscriptionsTransportWs from 'apollo-server-core' + +console.log('this is an example typescript file to test the typescript compiler works') + +console.log(subscriptionsTransportWs) diff --git a/test/workspace/packages/testa/package.json b/test/workspace/packages/testa/package.json index 61b9d94..3950333 100644 --- a/test/workspace/packages/testa/package.json +++ b/test/workspace/packages/testa/package.json @@ -7,19 +7,26 @@ "build": "node build.js" }, "bin": { + "testa-peer-test": "./bin/testa-peer-test", "testa-test": "./bin/testa-test" }, "dependencies": { + "apollo-server-core": "npm:2.9.14", "chai": "^4.3.6", "color": "^4.2.3", "enhanced-resolve": "^5.10.0", "esbuild": "^0.15.10", + "graphql": "^16.6.0", "knex": "^2.3.0", "react-old": "npm:react@^18.2.0", + "rimraf": "portal:../../localPackageTests/test-portal", + "styled-components": "5.1.0", + "subscriptions-transport-ws": "^0.11.0", "teste": "workspace:^", - "testf": "workspace:^" + "ts-configs": "workspace:^" }, "devDependencies": { + "@types/node": "^18.11.9", "typescript": "^4.8.4" } } diff --git a/test/workspace/packages/testa/runtimeTest.js b/test/workspace/packages/testa/runtimeTest.js index cf007f6..1486a51 100644 --- a/test/workspace/packages/testa/runtimeTest.js +++ b/test/workspace/packages/testa/runtimeTest.js @@ -2,4 +2,6 @@ const { expect } = require('chai') expect(() => require('color')).to.throw() // as we've put color in filterDependencies +require('teste') + console.log('testa runtime passed') diff --git a/test/workspace/packages/testa/shellEnvironmentTest.js b/test/workspace/packages/testa/shellEnvironmentTest.js index 8ab3bed..c96b13c 100644 --- a/test/workspace/packages/testa/shellEnvironmentTest.js +++ b/test/workspace/packages/testa/shellEnvironmentTest.js @@ -1,6 +1,8 @@ const enhancedResolve = require('enhanced-resolve') const path = require('path') +console.log('testa-test should be run from the working directory of testb package') + const resolve = enhancedResolve.create.sync({ extensions: ['.js', '.jsx', '.ts', '.tsx', '.mjs', '.css', '.scss', '.sass'], mainFields: ['main', 'module', 'source'], diff --git a/test/workspace/packages/testa/tsconfig.json b/test/workspace/packages/testa/tsconfig.json new file mode 100644 index 0000000..2bd261e --- /dev/null +++ b/test/workspace/packages/testa/tsconfig.json @@ -0,0 +1,6 @@ +{ + "extends": "ts-configs/config.json", + "compilerOptions": { + "noEmit": true + } +} diff --git a/test/workspace/packages/testb/index.js b/test/workspace/packages/testb/index.js index 395e75c..8373a8c 100755 --- a/test/workspace/packages/testb/index.js +++ b/test/workspace/packages/testb/index.js @@ -3,6 +3,7 @@ console.log('hello from testb 5!') // test importing various packages which will throw an exception if there are any issues with yarnpnp2nix +require('styled-components') require('test-portal') require('react-dom') require('sharp') diff --git a/test/workspace/packages/testb/package.json b/test/workspace/packages/testb/package.json index 07554f4..aace63a 100644 --- a/test/workspace/packages/testb/package.json +++ b/test/workspace/packages/testb/package.json @@ -5,7 +5,7 @@ "dependencies": { "canvas": "^2.10.1", "fsevents": "^2.3.2", - "knex": "^2.3.0", + "knex": "^2.1.0", "open": "8.4.0", "pg": "^8.8.0", "react": "npm:react@^18.2.0", @@ -13,6 +13,7 @@ "react-scheduler": "^0.1.0", "resolve-dir": "^1.0.1", "sharp": "^0.31.1", + "styled-components": "5.1.0", "test-portal": "portal:../../localPackageTests/test-portal", "test-tgz-redux-saga-core": "file:../../localPackageTests/test-tgz-redux-saga-core.tgz", "testa": "workspace:^", @@ -25,5 +26,10 @@ "next": "^12.3.1", "webpack": "^5.74.0", "webpack-cli": "^4.10.0" + }, + "peerDependenciesMeta": { + "react": { + "optional": true + } } } diff --git a/test/workspace/packages/teste/index.js b/test/workspace/packages/teste/index.js new file mode 100644 index 0000000..3d02f01 --- /dev/null +++ b/test/workspace/packages/teste/index.js @@ -0,0 +1 @@ +require('react') diff --git a/test/workspace/packages/teste/package.json b/test/workspace/packages/teste/package.json index 1f4e51e..e2f6ef0 100644 --- a/test/workspace/packages/teste/package.json +++ b/test/workspace/packages/teste/package.json @@ -1,6 +1,9 @@ { "name": "teste", "version": "0.0.0", + "dependencies": { + "react-is": "^18.2.0" + }, "devDependencies": { "jest": "^29.2.2" }, diff --git a/test/workspace/packages/ts-configs/config.json b/test/workspace/packages/ts-configs/config.json new file mode 100644 index 0000000..3734d5c --- /dev/null +++ b/test/workspace/packages/ts-configs/config.json @@ -0,0 +1,15 @@ +{ + "compilerOptions": { + "module": "commonjs", + "esModuleInterop": true, + "allowSyntheticDefaultImports": true, + "target": "es2019", + "noImplicitAny": true, + "strictNullChecks": true, + "moduleResolution": "node", + "sourceMap": true, + "incremental": true, + "declaration": true, + "declarationMap": true + } +} diff --git a/test/workspace/packages/ts-configs/package.json b/test/workspace/packages/ts-configs/package.json new file mode 100644 index 0000000..938c4ad --- /dev/null +++ b/test/workspace/packages/ts-configs/package.json @@ -0,0 +1,3 @@ +{ + "name": "ts-configs" +} diff --git a/test/workspace/yarn-manifest.nix b/test/workspace/yarn-manifest.nix index 58a808f..8569c0f 100644 --- a/test/workspace/yarn-manifest.nix +++ b/test/workspace/yarn-manifest.nix @@ -1,9927 +1,333 @@ # This file is generated by running "yarn install" inside your project. # It is essentially a version of yarn.lock that Nix can better understand # Manual changes WILL be lost - proceed with caution! -let - packages = { - "@ampproject/remapping@npm:2.2.0" = { - name = "@ampproject/remapping"; - reference = "npm:2.2.0"; - linkType = "HARD"; - outputName = "ampproject-remapping-2.2.0-114878fa50"; - outputHash = "468104da656991a578ac6c9e074fe9e6a810c37e90106a738464c971a9cea37ae29c3752c8946f884a82da458597fdff57da70c4fca3fb560d29038132d2d524"; - flatName = "remapping"; - languageName = "node"; - scope = "ampproject"; - descriptorRange = "npm:^2.1.0"; - checksum = "9/468104da656991a578ac6c9e074fe9e6a810c37e90106a738464c971a9cea37ae29c3752c8946f884a82da458597fdff57da70c4fca3fb560d29038132d2d524"; - dependencies = { - "@jridgewell/gen-mapping" = packages."@jridgewell/gen-mapping@npm:0.1.1"; - "@jridgewell/trace-mapping" = packages."@jridgewell/trace-mapping@npm:0.3.17"; - }; +{ + "@apollo/protobufjs@npm:1.2.6" = { + shouldBeUnplugged = true; + outputHashByPlatform = { + "aarch64-darwin" = "sha512-bHEo10lTb+e+WF/5zrbKeSiuLAJmJ0J6YTC724wU58pGznJYyxoZKwW/QAQ2ltexxIH7n5RRXYqDhz50CNQ/Yg=="; }; - "@babel/code-frame@npm:7.18.6" = { - name = "@babel/code-frame"; - reference = "npm:7.18.6"; - linkType = "HARD"; - outputName = "babel-code-frame-7.18.6-25229a7e34"; - outputHash = "eb27d165ea1c7c23e71a2a6f64225fe0ca0b2a39f5c0b57fda2a62dfa845799ca94886b08014f8fd4a711538cc6b1c89b9fc1dca6a5148893932bc03412ca848"; - flatName = "code-frame"; - languageName = "node"; - scope = "babel"; - descriptorRange = "npm:^7.12.13"; - checksum = "9/eb27d165ea1c7c23e71a2a6f64225fe0ca0b2a39f5c0b57fda2a62dfa845799ca94886b08014f8fd4a711538cc6b1c89b9fc1dca6a5148893932bc03412ca848"; - dependencies = { - "@babel/highlight" = packages."@babel/highlight@npm:7.18.6"; - }; - }; - "@babel/compat-data@npm:7.19.4" = { - name = "@babel/compat-data"; - reference = "npm:7.19.4"; - linkType = "HARD"; - outputName = "babel-compat-data-7.19.4-579e57594f"; - outputHash = "8bced1b0a1d016bc7fe83bc19d05a6175297be2432f39d431a869a66e61fc63b8fde334977e6c6b6302a584dea2fcae2419c9b28e3c10754569d4dcd41b5b4db"; - flatName = "compat-data"; - languageName = "node"; - scope = "babel"; - descriptorRange = "npm:^7.19.3"; - checksum = "9/8bced1b0a1d016bc7fe83bc19d05a6175297be2432f39d431a869a66e61fc63b8fde334977e6c6b6302a584dea2fcae2419c9b28e3c10754569d4dcd41b5b4db"; - }; - "@babel/core@npm:7.19.6" = { - name = "@babel/core"; - reference = "npm:7.19.6"; - linkType = "HARD"; - outputName = "babel-core-7.19.6-dd0c1d6359"; - outputHash = "e3159f9af51bd101070802c66802e3d1c3aeff03524d026cdf1f37134d355edeae931ac71d94bbb21a5cbed1fc793609a38112fd15c0b7dc95d46c208ce81677"; - flatName = "core"; - languageName = "node"; - scope = "babel"; - descriptorRange = "npm:^7.11.6"; - checksum = "9/e3159f9af51bd101070802c66802e3d1c3aeff03524d026cdf1f37134d355edeae931ac71d94bbb21a5cbed1fc793609a38112fd15c0b7dc95d46c208ce81677"; - dependencies = { - "@ampproject/remapping" = packages."@ampproject/remapping@npm:2.2.0"; - "@babel/code-frame" = packages."@babel/code-frame@npm:7.18.6"; - "@babel/generator" = packages."@babel/generator@npm:7.19.6"; - "@babel/helper-module-transforms" = packages."@babel/helper-module-transforms@npm:7.19.6"; - "@babel/helpers" = packages."@babel/helpers@npm:7.19.4"; - "@babel/parser" = packages."@babel/parser@npm:7.19.6"; - "@babel/template" = packages."@babel/template@npm:7.18.10"; - "@babel/traverse" = packages."@babel/traverse@npm:7.19.6"; - "@babel/types" = packages."@babel/types@npm:7.19.4"; - "convert-source-map" = packages."convert-source-map@npm:1.9.0"; - "gensync" = packages."gensync@npm:1.0.0-beta.2"; - "json5" = packages."json5@npm:2.2.1"; - "semver" = packages."semver@npm:6.3.0"; - "@babel/helper-compilation-targets" = packages."@babel/helper-compilation-targets@virtual:dd0c1d6359084b0c7f6387e56e0879e317177e61b59a625e706ba680eeb66a07cdf12a4ab1c20a53641fcb29b531dc119abdd6dea05ecaf6b04334c6268bbbb5#npm:7.19.3"; - "debug" = packages."debug@virtual:113ef2a03aa3de337889da32b02d27edf5e95d2b3c50aaf8ade4848a62355b637cece6c5a2b0f14480eef0d6c8ed8e9cacaca7d39e60125049f7120bdbeb5489#npm:4.3.4"; - }; - }; - "@babel/generator@npm:7.19.6" = { - name = "@babel/generator"; - reference = "npm:7.19.6"; - linkType = "HARD"; - outputName = "babel-generator-7.19.6-9ce28207f1"; - outputHash = "aee7779d4e18b2f2a3094b435c1c8c35b5032c1c4768d433bb1eed447b9ca430fe2aee64e20203bc284b37b131fd885dc7fe3d95e9de6005fce6fedfe3e6ba0a"; - flatName = "generator"; - languageName = "node"; - scope = "babel"; - descriptorRange = "npm:^7.7.2"; - checksum = "9/aee7779d4e18b2f2a3094b435c1c8c35b5032c1c4768d433bb1eed447b9ca430fe2aee64e20203bc284b37b131fd885dc7fe3d95e9de6005fce6fedfe3e6ba0a"; - dependencies = { - "@babel/types" = packages."@babel/types@npm:7.19.4"; - "@jridgewell/gen-mapping" = packages."@jridgewell/gen-mapping@npm:0.3.2"; - "jsesc" = packages."jsesc@npm:2.5.2"; - }; - }; - "@babel/helper-compilation-targets@npm:7.19.3" = { - name = "@babel/helper-compilation-targets"; - reference = "npm:7.19.3"; - linkType = "HARD"; - outputName = "babel-helper-compilation-targets-7.19.3-ba5dbffed2"; - outputHash = "963a5b8de17216726cc520e09fc36ded4d227a987becb12950a5ba3308739d97ebb2c110842a77a08f684362888d8f67a4acd4cae47cab3ac51b3310240383f6"; - flatName = "helper-compilation-targets"; - languageName = "node"; - scope = "babel"; - descriptorRange = "npm:^7.19.3"; - checksum = "9/963a5b8de17216726cc520e09fc36ded4d227a987becb12950a5ba3308739d97ebb2c110842a77a08f684362888d8f67a4acd4cae47cab3ac51b3310240383f6"; - dependencies = { - "@babel/compat-data" = packages."@babel/compat-data@npm:7.19.4"; - "@babel/helper-validator-option" = packages."@babel/helper-validator-option@npm:7.18.6"; - "browserslist" = packages."browserslist@npm:4.21.4"; - "semver" = packages."semver@npm:6.3.0"; - }; - packagePeers = [ - "@babel/core" - "@types/babel__core" - ]; - }; - "@babel/helper-compilation-targets@virtual:dd0c1d6359084b0c7f6387e56e0879e317177e61b59a625e706ba680eeb66a07cdf12a4ab1c20a53641fcb29b531dc119abdd6dea05ecaf6b04334c6268bbbb5#npm:7.19.3" = { - name = "@babel/helper-compilation-targets"; - reference = "virtual:dd0c1d6359084b0c7f6387e56e0879e317177e61b59a625e706ba680eeb66a07cdf12a4ab1c20a53641fcb29b531dc119abdd6dea05ecaf6b04334c6268bbbb5#npm:7.19.3"; - canonicalPackage = packages."@babel/helper-compilation-targets@npm:7.19.3"; - dependencies = { - "@babel/compat-data" = packages."@babel/compat-data@npm:7.19.4"; - "@babel/core" = packages."@babel/core@npm:7.19.6"; - "@babel/helper-validator-option" = packages."@babel/helper-validator-option@npm:7.18.6"; - "browserslist" = packages."browserslist@npm:4.21.4"; - "semver" = packages."semver@npm:6.3.0"; - }; - }; - "@babel/helper-environment-visitor@npm:7.18.9" = { - name = "@babel/helper-environment-visitor"; - reference = "npm:7.18.9"; - linkType = "HARD"; - outputName = "babel-helper-environment-visitor-7.18.9-9f5b3635a1"; - outputHash = "6a770ab046578d692f954213680f66d0764a92d608fcc121cf87c575223c44729fdebecc08550d0e18a5b22a3a72669c01de5351b6c1eff75a96b3167dbfe922"; - flatName = "helper-environment-visitor"; - languageName = "node"; - scope = "babel"; - descriptorRange = "npm:^7.18.9"; - checksum = "9/6a770ab046578d692f954213680f66d0764a92d608fcc121cf87c575223c44729fdebecc08550d0e18a5b22a3a72669c01de5351b6c1eff75a96b3167dbfe922"; - }; - "@babel/helper-function-name@npm:7.19.0" = { - name = "@babel/helper-function-name"; - reference = "npm:7.19.0"; - linkType = "HARD"; - outputName = "babel-helper-function-name-7.19.0-5bcf55236f"; - outputHash = "65ba2eaad08ba73238aa4f11004a7e0f1d96a57c85863d53571741944986f55f334dfd9a59a3a477daefc7d31bd72df78a78673046082d6625888d3d357d36ed"; - flatName = "helper-function-name"; - languageName = "node"; - scope = "babel"; - descriptorRange = "npm:^7.19.0"; - checksum = "9/65ba2eaad08ba73238aa4f11004a7e0f1d96a57c85863d53571741944986f55f334dfd9a59a3a477daefc7d31bd72df78a78673046082d6625888d3d357d36ed"; - dependencies = { - "@babel/template" = packages."@babel/template@npm:7.18.10"; - "@babel/types" = packages."@babel/types@npm:7.19.4"; - }; - }; - "@babel/helper-hoist-variables@npm:7.18.6" = { - name = "@babel/helper-hoist-variables"; - reference = "npm:7.18.6"; - linkType = "HARD"; - outputName = "babel-helper-hoist-variables-7.18.6-6eb061f405"; - outputHash = "462ef0d14fbe6861cee3a2c2bee1eff76d31ec94230c147684d55fa65351784c4afffaa62a8a540caec659d47ef5641707cdb99ce049f1bf2995cfcccace537a"; - flatName = "helper-hoist-variables"; - languageName = "node"; - scope = "babel"; - descriptorRange = "npm:^7.18.6"; - checksum = "9/462ef0d14fbe6861cee3a2c2bee1eff76d31ec94230c147684d55fa65351784c4afffaa62a8a540caec659d47ef5641707cdb99ce049f1bf2995cfcccace537a"; - dependencies = { - "@babel/types" = packages."@babel/types@npm:7.19.4"; - }; - }; - "@babel/helper-module-imports@npm:7.18.6" = { - name = "@babel/helper-module-imports"; - reference = "npm:7.18.6"; - linkType = "HARD"; - outputName = "babel-helper-module-imports-7.18.6-1031faa864"; - outputHash = "5c2d1987e4854abe7ca227d2e318b699c100dedc8ec45fe858755d5e9da8760ac136c0b1e669cc381f44eb79607b6f4ffcf7642e1aa84504389f9ca6065e8ee1"; - flatName = "helper-module-imports"; - languageName = "node"; - scope = "babel"; - descriptorRange = "npm:^7.18.6"; - checksum = "9/5c2d1987e4854abe7ca227d2e318b699c100dedc8ec45fe858755d5e9da8760ac136c0b1e669cc381f44eb79607b6f4ffcf7642e1aa84504389f9ca6065e8ee1"; - dependencies = { - "@babel/types" = packages."@babel/types@npm:7.19.4"; - }; - }; - "@babel/helper-module-transforms@npm:7.19.6" = { - name = "@babel/helper-module-transforms"; - reference = "npm:7.19.6"; - linkType = "HARD"; - outputName = "babel-helper-module-transforms-7.19.6-c73ab63519"; - outputHash = "2ca50d3d567d1245e3f7da5b6cee5d2004701927752198b6d063828df73ce1036df326220326eca21bd85bab19148e1d6e28e70bc25bfab9a62daf62a00de71c"; - flatName = "helper-module-transforms"; - languageName = "node"; - scope = "babel"; - descriptorRange = "npm:^7.19.6"; - checksum = "9/2ca50d3d567d1245e3f7da5b6cee5d2004701927752198b6d063828df73ce1036df326220326eca21bd85bab19148e1d6e28e70bc25bfab9a62daf62a00de71c"; - dependencies = { - "@babel/helper-environment-visitor" = packages."@babel/helper-environment-visitor@npm:7.18.9"; - "@babel/helper-module-imports" = packages."@babel/helper-module-imports@npm:7.18.6"; - "@babel/helper-simple-access" = packages."@babel/helper-simple-access@npm:7.19.4"; - "@babel/helper-split-export-declaration" = packages."@babel/helper-split-export-declaration@npm:7.18.6"; - "@babel/helper-validator-identifier" = packages."@babel/helper-validator-identifier@npm:7.19.1"; - "@babel/template" = packages."@babel/template@npm:7.18.10"; - "@babel/traverse" = packages."@babel/traverse@npm:7.19.6"; - "@babel/types" = packages."@babel/types@npm:7.19.4"; - }; - }; - "@babel/helper-plugin-utils@npm:7.19.0" = { - name = "@babel/helper-plugin-utils"; - reference = "npm:7.19.0"; - linkType = "HARD"; - outputName = "babel-helper-plugin-utils-7.19.0-744ad0c26b"; - outputHash = "1f5ec25de2ec8789cc9df9ca89ff04a1ea48e372c92c4927a38a96aaf87d2ad2a2aa135630105e9f09a5ec37b220285df1a37e31288b0198f83cbf7d02345f3c"; - flatName = "helper-plugin-utils"; - languageName = "node"; - scope = "babel"; - descriptorRange = "npm:^7.0.0"; - checksum = "9/1f5ec25de2ec8789cc9df9ca89ff04a1ea48e372c92c4927a38a96aaf87d2ad2a2aa135630105e9f09a5ec37b220285df1a37e31288b0198f83cbf7d02345f3c"; - }; - "@babel/helper-simple-access@npm:7.19.4" = { - name = "@babel/helper-simple-access"; - reference = "npm:7.19.4"; - linkType = "HARD"; - outputName = "babel-helper-simple-access-7.19.4-c02920b575"; - outputHash = "582fc8899f09adcc1d34fcbac1187b975ac39f1d1432be1d578c28a5f3a97ab36af4a7536ccea16f3de10c9a0132f699cdcb13edb46d49fcf6bfe3210eedfb80"; - flatName = "helper-simple-access"; - languageName = "node"; - scope = "babel"; - descriptorRange = "npm:^7.19.4"; - checksum = "9/582fc8899f09adcc1d34fcbac1187b975ac39f1d1432be1d578c28a5f3a97ab36af4a7536ccea16f3de10c9a0132f699cdcb13edb46d49fcf6bfe3210eedfb80"; - dependencies = { - "@babel/types" = packages."@babel/types@npm:7.19.4"; - }; - }; - "@babel/helper-split-export-declaration@npm:7.18.6" = { - name = "@babel/helper-split-export-declaration"; - reference = "npm:7.18.6"; - linkType = "HARD"; - outputName = "babel-helper-split-export-declaration-7.18.6-53ebf8ad4c"; - outputHash = "a7834c5b54600542460aa278b0e988178ebe1905df856df909e4fdafffcaa05fc1688e5504a6f388ca1bc36dbdb78a56af422b4a7795876680451d86e55055b9"; - flatName = "helper-split-export-declaration"; - languageName = "node"; - scope = "babel"; - descriptorRange = "npm:^7.18.6"; - checksum = "9/a7834c5b54600542460aa278b0e988178ebe1905df856df909e4fdafffcaa05fc1688e5504a6f388ca1bc36dbdb78a56af422b4a7795876680451d86e55055b9"; - dependencies = { - "@babel/types" = packages."@babel/types@npm:7.19.4"; - }; - }; - "@babel/helper-string-parser@npm:7.19.4" = { - name = "@babel/helper-string-parser"; - reference = "npm:7.19.4"; - linkType = "HARD"; - outputName = "babel-helper-string-parser-7.19.4-0db110dc3a"; - outputHash = "a8646931cba0c2905b683b99879f02c8a516a6c702c9f46cc02f0a8e93ef6f01540f2e7017d8288b9c039e1c3316c7858309ea3d6e39fa78bd98859b338603ee"; - flatName = "helper-string-parser"; - languageName = "node"; - scope = "babel"; - descriptorRange = "npm:^7.19.4"; - checksum = "9/a8646931cba0c2905b683b99879f02c8a516a6c702c9f46cc02f0a8e93ef6f01540f2e7017d8288b9c039e1c3316c7858309ea3d6e39fa78bd98859b338603ee"; - }; - "@babel/helper-validator-identifier@npm:7.19.1" = { - name = "@babel/helper-validator-identifier"; - reference = "npm:7.19.1"; - linkType = "HARD"; - outputName = "babel-helper-validator-identifier-7.19.1-d84f19e1dc"; - outputHash = "089fdf605ee8dfa3004cd84c69e655ff9ab8bdb4e7fa02bf0012db728c6247acb599ca1118d2f9124d7b417fc5793ee348f2da8bc64be230b3b13ba7cd4364cc"; - flatName = "helper-validator-identifier"; - languageName = "node"; - scope = "babel"; - descriptorRange = "npm:^7.18.6"; - checksum = "9/089fdf605ee8dfa3004cd84c69e655ff9ab8bdb4e7fa02bf0012db728c6247acb599ca1118d2f9124d7b417fc5793ee348f2da8bc64be230b3b13ba7cd4364cc"; - }; - "@babel/helper-validator-option@npm:7.18.6" = { - name = "@babel/helper-validator-option"; - reference = "npm:7.18.6"; - linkType = "HARD"; - outputName = "babel-helper-validator-option-7.18.6-cc7d1a3315"; - outputHash = "c32c6e5daa9b2e2cbee66477c652757add3a204fea24f486b3b630e1fb69df53591ddc8acf5c5bc30a157e7275e53e25b3fbafbe1d2fb21604ca09cd8d3d052c"; - flatName = "helper-validator-option"; - languageName = "node"; - scope = "babel"; - descriptorRange = "npm:^7.18.6"; - checksum = "9/c32c6e5daa9b2e2cbee66477c652757add3a204fea24f486b3b630e1fb69df53591ddc8acf5c5bc30a157e7275e53e25b3fbafbe1d2fb21604ca09cd8d3d052c"; - }; - "@babel/helpers@npm:7.19.4" = { - name = "@babel/helpers"; - reference = "npm:7.19.4"; - linkType = "HARD"; - outputName = "babel-helpers-7.19.4-f9307ad863"; - outputHash = "a9c5fb8159c7bd18f65b0eaaacff0739d8ac1db42c9ee7d9bc4780d0cebd61156800f1b5c2b426fb0a5587ae9135436f6a495931f3da2d2229ba2c7dd1680445"; - flatName = "helpers"; - languageName = "node"; - scope = "babel"; - descriptorRange = "npm:^7.19.4"; - checksum = "9/a9c5fb8159c7bd18f65b0eaaacff0739d8ac1db42c9ee7d9bc4780d0cebd61156800f1b5c2b426fb0a5587ae9135436f6a495931f3da2d2229ba2c7dd1680445"; - dependencies = { - "@babel/template" = packages."@babel/template@npm:7.18.10"; - "@babel/traverse" = packages."@babel/traverse@npm:7.19.6"; - "@babel/types" = packages."@babel/types@npm:7.19.4"; - }; - }; - "@babel/highlight@npm:7.18.6" = { - name = "@babel/highlight"; - reference = "npm:7.18.6"; - linkType = "HARD"; - outputName = "babel-highlight-7.18.6-9d35ad2e27"; - outputHash = "b8eeb1d38327c635004b3ae946ff334bb994334a5fdd874e216e62bbe3b8f8f10c901c3795c25db7c8e49eb5a56948b9dbe38c3800c4f977016402997dacedae"; - flatName = "highlight"; - languageName = "node"; - scope = "babel"; - descriptorRange = "npm:^7.18.6"; - checksum = "9/b8eeb1d38327c635004b3ae946ff334bb994334a5fdd874e216e62bbe3b8f8f10c901c3795c25db7c8e49eb5a56948b9dbe38c3800c4f977016402997dacedae"; - dependencies = { - "@babel/helper-validator-identifier" = packages."@babel/helper-validator-identifier@npm:7.19.1"; - "chalk" = packages."chalk@npm:2.4.2"; - "js-tokens" = packages."js-tokens@npm:4.0.0"; - }; - }; - "@babel/parser@npm:7.19.6" = { - name = "@babel/parser"; - reference = "npm:7.19.6"; - linkType = "HARD"; - outputName = "babel-parser-7.19.6-889250e3f3"; - outputHash = "9e03aeb28629efb0edc64a19849c3a69d7c26a0fb39534650139a1569993c91f2748e609e5fdc4f80856bdaf24eec6508f092bfe7b97f20477581d0729e6e3c6"; - flatName = "parser"; - languageName = "node"; - scope = "babel"; - descriptorRange = "npm:^7.19.6"; - checksum = "9/9e03aeb28629efb0edc64a19849c3a69d7c26a0fb39534650139a1569993c91f2748e609e5fdc4f80856bdaf24eec6508f092bfe7b97f20477581d0729e6e3c6"; - bin = { - "parser" = "./bin/babel-parser.js"; - }; - dependencies = { - "@babel/types" = packages."@babel/types@npm:7.19.4"; - }; - }; - "@babel/plugin-syntax-async-generators@npm:7.8.4" = { - name = "@babel/plugin-syntax-async-generators"; - reference = "npm:7.8.4"; - linkType = "HARD"; - outputName = "babel-plugin-syntax-async-generators-7.8.4-d10cf993c9"; - outputHash = "518ee81097d43f6a439cfe91c708cca9bf67a32f0ec6f65df3c34d8b1ce51b473f77040345684792c60ac89e1c78c0a6eacbc31592bc1d912f06e9e0c3f80716"; - flatName = "plugin-syntax-async-generators"; - languageName = "node"; - scope = "babel"; - descriptorRange = "npm:^7.8.4"; - checksum = "9/518ee81097d43f6a439cfe91c708cca9bf67a32f0ec6f65df3c34d8b1ce51b473f77040345684792c60ac89e1c78c0a6eacbc31592bc1d912f06e9e0c3f80716"; - dependencies = { - "@babel/helper-plugin-utils" = packages."@babel/helper-plugin-utils@npm:7.19.0"; - }; - packagePeers = [ - "@babel/core" - "@types/babel__core" - ]; - }; - "@babel/plugin-syntax-async-generators@virtual:4f2a00876e51daf6c174c9bd5e20efa043e1745940e553874e88ae6a111f477d701a48c909b8f10566385932e1568822bb77213016205fcc81e66fe676263358#npm:7.8.4" = { - name = "@babel/plugin-syntax-async-generators"; - reference = "virtual:4f2a00876e51daf6c174c9bd5e20efa043e1745940e553874e88ae6a111f477d701a48c909b8f10566385932e1568822bb77213016205fcc81e66fe676263358#npm:7.8.4"; - canonicalPackage = packages."@babel/plugin-syntax-async-generators@npm:7.8.4"; - dependencies = { - "@babel/core" = packages."@babel/core@npm:7.19.6"; - "@babel/helper-plugin-utils" = packages."@babel/helper-plugin-utils@npm:7.19.0"; - "@types/babel__core" = packages."@types/babel__core@npm:7.1.19"; - }; - }; - "@babel/plugin-syntax-async-generators@virtual:f8aca53219b99df3cd58f521fefb9fb2e560855b6177d3d7c0fd22c1238eecf3495c1d90a78ff6f266e6ec8b659f5e769c5eaa47d96cf72a65b53754788ffa5c#npm:7.8.4" = { - name = "@babel/plugin-syntax-async-generators"; - reference = "virtual:f8aca53219b99df3cd58f521fefb9fb2e560855b6177d3d7c0fd22c1238eecf3495c1d90a78ff6f266e6ec8b659f5e769c5eaa47d96cf72a65b53754788ffa5c#npm:7.8.4"; - canonicalPackage = packages."@babel/plugin-syntax-async-generators@npm:7.8.4"; - dependencies = { - "@babel/core" = packages."@babel/core@npm:7.19.6"; - "@babel/helper-plugin-utils" = packages."@babel/helper-plugin-utils@npm:7.19.0"; - }; - }; - "@babel/plugin-syntax-bigint@npm:7.8.3" = { - name = "@babel/plugin-syntax-bigint"; - reference = "npm:7.8.3"; - linkType = "HARD"; - outputName = "babel-plugin-syntax-bigint-7.8.3-b05d971e6c"; - outputHash = "7c7ac943e411834cd015f0200f9edb17735fea43b9f58edaa108a05548b8eb3508458c5e98604ccad441b7d06a0e9b68cbd6d6c7e35065cba15f75e519504a01"; - flatName = "plugin-syntax-bigint"; - languageName = "node"; - scope = "babel"; - descriptorRange = "npm:^7.8.3"; - checksum = "9/7c7ac943e411834cd015f0200f9edb17735fea43b9f58edaa108a05548b8eb3508458c5e98604ccad441b7d06a0e9b68cbd6d6c7e35065cba15f75e519504a01"; - dependencies = { - "@babel/helper-plugin-utils" = packages."@babel/helper-plugin-utils@npm:7.19.0"; - }; - packagePeers = [ - "@babel/core" - "@types/babel__core" - ]; - }; - "@babel/plugin-syntax-bigint@virtual:4f2a00876e51daf6c174c9bd5e20efa043e1745940e553874e88ae6a111f477d701a48c909b8f10566385932e1568822bb77213016205fcc81e66fe676263358#npm:7.8.3" = { - name = "@babel/plugin-syntax-bigint"; - reference = "virtual:4f2a00876e51daf6c174c9bd5e20efa043e1745940e553874e88ae6a111f477d701a48c909b8f10566385932e1568822bb77213016205fcc81e66fe676263358#npm:7.8.3"; - canonicalPackage = packages."@babel/plugin-syntax-bigint@npm:7.8.3"; - dependencies = { - "@babel/core" = packages."@babel/core@npm:7.19.6"; - "@babel/helper-plugin-utils" = packages."@babel/helper-plugin-utils@npm:7.19.0"; - "@types/babel__core" = packages."@types/babel__core@npm:7.1.19"; - }; - }; - "@babel/plugin-syntax-bigint@virtual:f8aca53219b99df3cd58f521fefb9fb2e560855b6177d3d7c0fd22c1238eecf3495c1d90a78ff6f266e6ec8b659f5e769c5eaa47d96cf72a65b53754788ffa5c#npm:7.8.3" = { - name = "@babel/plugin-syntax-bigint"; - reference = "virtual:f8aca53219b99df3cd58f521fefb9fb2e560855b6177d3d7c0fd22c1238eecf3495c1d90a78ff6f266e6ec8b659f5e769c5eaa47d96cf72a65b53754788ffa5c#npm:7.8.3"; - canonicalPackage = packages."@babel/plugin-syntax-bigint@npm:7.8.3"; - dependencies = { - "@babel/core" = packages."@babel/core@npm:7.19.6"; - "@babel/helper-plugin-utils" = packages."@babel/helper-plugin-utils@npm:7.19.0"; - }; - }; - "@babel/plugin-syntax-class-properties@npm:7.12.13" = { - name = "@babel/plugin-syntax-class-properties"; - reference = "npm:7.12.13"; - linkType = "HARD"; - outputName = "babel-plugin-syntax-class-properties-7.12.13-002ee9d930"; - outputHash = "7a9d076a55d11a53bee2b2c5b05a827f0bc5e13b805d7cd801e3e39b4068b88ca6ed5c7ae7ed2df5259e02515cc0f095468bd8ad4f0609f32adf3abfa3d077cf"; - flatName = "plugin-syntax-class-properties"; - languageName = "node"; - scope = "babel"; - descriptorRange = "npm:^7.8.3"; - checksum = "9/7a9d076a55d11a53bee2b2c5b05a827f0bc5e13b805d7cd801e3e39b4068b88ca6ed5c7ae7ed2df5259e02515cc0f095468bd8ad4f0609f32adf3abfa3d077cf"; - dependencies = { - "@babel/helper-plugin-utils" = packages."@babel/helper-plugin-utils@npm:7.19.0"; - }; - packagePeers = [ - "@babel/core" - "@types/babel__core" - ]; - }; - "@babel/plugin-syntax-class-properties@virtual:4f2a00876e51daf6c174c9bd5e20efa043e1745940e553874e88ae6a111f477d701a48c909b8f10566385932e1568822bb77213016205fcc81e66fe676263358#npm:7.12.13" = { - name = "@babel/plugin-syntax-class-properties"; - reference = "virtual:4f2a00876e51daf6c174c9bd5e20efa043e1745940e553874e88ae6a111f477d701a48c909b8f10566385932e1568822bb77213016205fcc81e66fe676263358#npm:7.12.13"; - canonicalPackage = packages."@babel/plugin-syntax-class-properties@npm:7.12.13"; - dependencies = { - "@babel/core" = packages."@babel/core@npm:7.19.6"; - "@babel/helper-plugin-utils" = packages."@babel/helper-plugin-utils@npm:7.19.0"; - "@types/babel__core" = packages."@types/babel__core@npm:7.1.19"; - }; - }; - "@babel/plugin-syntax-class-properties@virtual:f8aca53219b99df3cd58f521fefb9fb2e560855b6177d3d7c0fd22c1238eecf3495c1d90a78ff6f266e6ec8b659f5e769c5eaa47d96cf72a65b53754788ffa5c#npm:7.12.13" = { - name = "@babel/plugin-syntax-class-properties"; - reference = "virtual:f8aca53219b99df3cd58f521fefb9fb2e560855b6177d3d7c0fd22c1238eecf3495c1d90a78ff6f266e6ec8b659f5e769c5eaa47d96cf72a65b53754788ffa5c#npm:7.12.13"; - canonicalPackage = packages."@babel/plugin-syntax-class-properties@npm:7.12.13"; - dependencies = { - "@babel/core" = packages."@babel/core@npm:7.19.6"; - "@babel/helper-plugin-utils" = packages."@babel/helper-plugin-utils@npm:7.19.0"; - }; - }; - "@babel/plugin-syntax-import-meta@npm:7.10.4" = { - name = "@babel/plugin-syntax-import-meta"; - reference = "npm:7.10.4"; - linkType = "HARD"; - outputName = "babel-plugin-syntax-import-meta-7.10.4-4a0a0158bc"; - outputHash = "8513fb2d4035e9149f2faab57908aca2a354fb05deecaa681e659178c749e01c81f703b4c5fe6f4ce816e57f31ca2e9b625a5b43d29327ffce3d310722d958bd"; - flatName = "plugin-syntax-import-meta"; - languageName = "node"; - scope = "babel"; - descriptorRange = "npm:^7.8.3"; - checksum = "9/8513fb2d4035e9149f2faab57908aca2a354fb05deecaa681e659178c749e01c81f703b4c5fe6f4ce816e57f31ca2e9b625a5b43d29327ffce3d310722d958bd"; - dependencies = { - "@babel/helper-plugin-utils" = packages."@babel/helper-plugin-utils@npm:7.19.0"; - }; - packagePeers = [ - "@babel/core" - "@types/babel__core" - ]; - }; - "@babel/plugin-syntax-import-meta@virtual:4f2a00876e51daf6c174c9bd5e20efa043e1745940e553874e88ae6a111f477d701a48c909b8f10566385932e1568822bb77213016205fcc81e66fe676263358#npm:7.10.4" = { - name = "@babel/plugin-syntax-import-meta"; - reference = "virtual:4f2a00876e51daf6c174c9bd5e20efa043e1745940e553874e88ae6a111f477d701a48c909b8f10566385932e1568822bb77213016205fcc81e66fe676263358#npm:7.10.4"; - canonicalPackage = packages."@babel/plugin-syntax-import-meta@npm:7.10.4"; - dependencies = { - "@babel/core" = packages."@babel/core@npm:7.19.6"; - "@babel/helper-plugin-utils" = packages."@babel/helper-plugin-utils@npm:7.19.0"; - "@types/babel__core" = packages."@types/babel__core@npm:7.1.19"; - }; - }; - "@babel/plugin-syntax-import-meta@virtual:f8aca53219b99df3cd58f521fefb9fb2e560855b6177d3d7c0fd22c1238eecf3495c1d90a78ff6f266e6ec8b659f5e769c5eaa47d96cf72a65b53754788ffa5c#npm:7.10.4" = { - name = "@babel/plugin-syntax-import-meta"; - reference = "virtual:f8aca53219b99df3cd58f521fefb9fb2e560855b6177d3d7c0fd22c1238eecf3495c1d90a78ff6f266e6ec8b659f5e769c5eaa47d96cf72a65b53754788ffa5c#npm:7.10.4"; - canonicalPackage = packages."@babel/plugin-syntax-import-meta@npm:7.10.4"; - dependencies = { - "@babel/core" = packages."@babel/core@npm:7.19.6"; - "@babel/helper-plugin-utils" = packages."@babel/helper-plugin-utils@npm:7.19.0"; - }; - }; - "@babel/plugin-syntax-json-strings@npm:7.8.3" = { - name = "@babel/plugin-syntax-json-strings"; - reference = "npm:7.8.3"; - linkType = "HARD"; - outputName = "babel-plugin-syntax-json-strings-7.8.3-6dc7848179"; - outputHash = "d21aa96f15268f923f70e49155059ca220a7f7da3cec5072121fb8342527fc9e5753455cd61318054a170b1ecba13fd1891eb2c67f28a1c335af5bbaf52b93d0"; - flatName = "plugin-syntax-json-strings"; - languageName = "node"; - scope = "babel"; - descriptorRange = "npm:^7.8.3"; - checksum = "9/d21aa96f15268f923f70e49155059ca220a7f7da3cec5072121fb8342527fc9e5753455cd61318054a170b1ecba13fd1891eb2c67f28a1c335af5bbaf52b93d0"; - dependencies = { - "@babel/helper-plugin-utils" = packages."@babel/helper-plugin-utils@npm:7.19.0"; - }; - packagePeers = [ - "@babel/core" - "@types/babel__core" - ]; - }; - "@babel/plugin-syntax-json-strings@virtual:4f2a00876e51daf6c174c9bd5e20efa043e1745940e553874e88ae6a111f477d701a48c909b8f10566385932e1568822bb77213016205fcc81e66fe676263358#npm:7.8.3" = { - name = "@babel/plugin-syntax-json-strings"; - reference = "virtual:4f2a00876e51daf6c174c9bd5e20efa043e1745940e553874e88ae6a111f477d701a48c909b8f10566385932e1568822bb77213016205fcc81e66fe676263358#npm:7.8.3"; - canonicalPackage = packages."@babel/plugin-syntax-json-strings@npm:7.8.3"; - dependencies = { - "@babel/core" = packages."@babel/core@npm:7.19.6"; - "@babel/helper-plugin-utils" = packages."@babel/helper-plugin-utils@npm:7.19.0"; - "@types/babel__core" = packages."@types/babel__core@npm:7.1.19"; - }; - }; - "@babel/plugin-syntax-json-strings@virtual:f8aca53219b99df3cd58f521fefb9fb2e560855b6177d3d7c0fd22c1238eecf3495c1d90a78ff6f266e6ec8b659f5e769c5eaa47d96cf72a65b53754788ffa5c#npm:7.8.3" = { - name = "@babel/plugin-syntax-json-strings"; - reference = "virtual:f8aca53219b99df3cd58f521fefb9fb2e560855b6177d3d7c0fd22c1238eecf3495c1d90a78ff6f266e6ec8b659f5e769c5eaa47d96cf72a65b53754788ffa5c#npm:7.8.3"; - canonicalPackage = packages."@babel/plugin-syntax-json-strings@npm:7.8.3"; - dependencies = { - "@babel/core" = packages."@babel/core@npm:7.19.6"; - "@babel/helper-plugin-utils" = packages."@babel/helper-plugin-utils@npm:7.19.0"; - }; - }; - "@babel/plugin-syntax-jsx@npm:7.18.6" = { - name = "@babel/plugin-syntax-jsx"; - reference = "npm:7.18.6"; - linkType = "HARD"; - outputName = "babel-plugin-syntax-jsx-7.18.6-3e378d5f11"; - outputHash = "93aa8b4803ade912560529ffebed69cf29617f5025fdd39eeea3b2c60fa16f7120dee3e310931fd8faf14e2bd0bc5227210efea987bd393e61dcb4287d9aac8b"; - flatName = "plugin-syntax-jsx"; - languageName = "node"; - scope = "babel"; - descriptorRange = "npm:^7.7.2"; - checksum = "9/93aa8b4803ade912560529ffebed69cf29617f5025fdd39eeea3b2c60fa16f7120dee3e310931fd8faf14e2bd0bc5227210efea987bd393e61dcb4287d9aac8b"; - dependencies = { - "@babel/helper-plugin-utils" = packages."@babel/helper-plugin-utils@npm:7.19.0"; - }; - packagePeers = [ - "@babel/core" - "@types/babel__core" - ]; - }; - "@babel/plugin-syntax-jsx@virtual:52d2763c817f325964d4357cf9dbe187e8ec48bcb3ce478452f0362bd97d1cca745e5a9f31131ff3c69969b9b1419e86adfe045b57a151ae5d135fb663f3aa9d#npm:7.18.6" = { - name = "@babel/plugin-syntax-jsx"; - reference = "virtual:52d2763c817f325964d4357cf9dbe187e8ec48bcb3ce478452f0362bd97d1cca745e5a9f31131ff3c69969b9b1419e86adfe045b57a151ae5d135fb663f3aa9d#npm:7.18.6"; - canonicalPackage = packages."@babel/plugin-syntax-jsx@npm:7.18.6"; - dependencies = { - "@babel/core" = packages."@babel/core@npm:7.19.6"; - "@babel/helper-plugin-utils" = packages."@babel/helper-plugin-utils@npm:7.19.0"; - }; - }; - "@babel/plugin-syntax-logical-assignment-operators@npm:7.10.4" = { - name = "@babel/plugin-syntax-logical-assignment-operators"; - reference = "npm:7.10.4"; - linkType = "HARD"; - outputName = "babel-plugin-syntax-logical-assignment-operators-7.10.4-72ae00fdf6"; - outputHash = "3a01f61a5b0f429dadbfb58d979c550c496ead9121282319406398cc76f7a6dfb58c20c9782b6b1b1b74f938add3edd962a3f699bf407deda003f84708b94c7e"; - flatName = "plugin-syntax-logical-assignment-operators"; - languageName = "node"; - scope = "babel"; - descriptorRange = "npm:^7.8.3"; - checksum = "9/3a01f61a5b0f429dadbfb58d979c550c496ead9121282319406398cc76f7a6dfb58c20c9782b6b1b1b74f938add3edd962a3f699bf407deda003f84708b94c7e"; - dependencies = { - "@babel/helper-plugin-utils" = packages."@babel/helper-plugin-utils@npm:7.19.0"; - }; - packagePeers = [ - "@babel/core" - "@types/babel__core" - ]; - }; - "@babel/plugin-syntax-logical-assignment-operators@virtual:4f2a00876e51daf6c174c9bd5e20efa043e1745940e553874e88ae6a111f477d701a48c909b8f10566385932e1568822bb77213016205fcc81e66fe676263358#npm:7.10.4" = { - name = "@babel/plugin-syntax-logical-assignment-operators"; - reference = "virtual:4f2a00876e51daf6c174c9bd5e20efa043e1745940e553874e88ae6a111f477d701a48c909b8f10566385932e1568822bb77213016205fcc81e66fe676263358#npm:7.10.4"; - canonicalPackage = packages."@babel/plugin-syntax-logical-assignment-operators@npm:7.10.4"; - dependencies = { - "@babel/core" = packages."@babel/core@npm:7.19.6"; - "@babel/helper-plugin-utils" = packages."@babel/helper-plugin-utils@npm:7.19.0"; - "@types/babel__core" = packages."@types/babel__core@npm:7.1.19"; - }; - }; - "@babel/plugin-syntax-logical-assignment-operators@virtual:f8aca53219b99df3cd58f521fefb9fb2e560855b6177d3d7c0fd22c1238eecf3495c1d90a78ff6f266e6ec8b659f5e769c5eaa47d96cf72a65b53754788ffa5c#npm:7.10.4" = { - name = "@babel/plugin-syntax-logical-assignment-operators"; - reference = "virtual:f8aca53219b99df3cd58f521fefb9fb2e560855b6177d3d7c0fd22c1238eecf3495c1d90a78ff6f266e6ec8b659f5e769c5eaa47d96cf72a65b53754788ffa5c#npm:7.10.4"; - canonicalPackage = packages."@babel/plugin-syntax-logical-assignment-operators@npm:7.10.4"; - dependencies = { - "@babel/core" = packages."@babel/core@npm:7.19.6"; - "@babel/helper-plugin-utils" = packages."@babel/helper-plugin-utils@npm:7.19.0"; - }; - }; - "@babel/plugin-syntax-nullish-coalescing-operator@npm:7.8.3" = { - name = "@babel/plugin-syntax-nullish-coalescing-operator"; - reference = "npm:7.8.3"; - linkType = "HARD"; - outputName = "babel-plugin-syntax-nullish-coalescing-operator-7.8.3-8a723173b5"; - outputHash = "cc19c595a643531cdfa41eb9d5941ae1734049d9fdad127ed262225a657d3c2dce95aeb3e40019e6f1b0403e1656fc6170b43c2fbafceab0d6fa2502a62c91d8"; - flatName = "plugin-syntax-nullish-coalescing-operator"; - languageName = "node"; - scope = "babel"; - descriptorRange = "npm:^7.8.3"; - checksum = "9/cc19c595a643531cdfa41eb9d5941ae1734049d9fdad127ed262225a657d3c2dce95aeb3e40019e6f1b0403e1656fc6170b43c2fbafceab0d6fa2502a62c91d8"; - dependencies = { - "@babel/helper-plugin-utils" = packages."@babel/helper-plugin-utils@npm:7.19.0"; - }; - packagePeers = [ - "@babel/core" - "@types/babel__core" - ]; - }; - "@babel/plugin-syntax-nullish-coalescing-operator@virtual:4f2a00876e51daf6c174c9bd5e20efa043e1745940e553874e88ae6a111f477d701a48c909b8f10566385932e1568822bb77213016205fcc81e66fe676263358#npm:7.8.3" = { - name = "@babel/plugin-syntax-nullish-coalescing-operator"; - reference = "virtual:4f2a00876e51daf6c174c9bd5e20efa043e1745940e553874e88ae6a111f477d701a48c909b8f10566385932e1568822bb77213016205fcc81e66fe676263358#npm:7.8.3"; - canonicalPackage = packages."@babel/plugin-syntax-nullish-coalescing-operator@npm:7.8.3"; - dependencies = { - "@babel/core" = packages."@babel/core@npm:7.19.6"; - "@babel/helper-plugin-utils" = packages."@babel/helper-plugin-utils@npm:7.19.0"; - "@types/babel__core" = packages."@types/babel__core@npm:7.1.19"; - }; - }; - "@babel/plugin-syntax-nullish-coalescing-operator@virtual:f8aca53219b99df3cd58f521fefb9fb2e560855b6177d3d7c0fd22c1238eecf3495c1d90a78ff6f266e6ec8b659f5e769c5eaa47d96cf72a65b53754788ffa5c#npm:7.8.3" = { - name = "@babel/plugin-syntax-nullish-coalescing-operator"; - reference = "virtual:f8aca53219b99df3cd58f521fefb9fb2e560855b6177d3d7c0fd22c1238eecf3495c1d90a78ff6f266e6ec8b659f5e769c5eaa47d96cf72a65b53754788ffa5c#npm:7.8.3"; - canonicalPackage = packages."@babel/plugin-syntax-nullish-coalescing-operator@npm:7.8.3"; - dependencies = { - "@babel/core" = packages."@babel/core@npm:7.19.6"; - "@babel/helper-plugin-utils" = packages."@babel/helper-plugin-utils@npm:7.19.0"; - }; - }; - "@babel/plugin-syntax-numeric-separator@npm:7.10.4" = { - name = "@babel/plugin-syntax-numeric-separator"; - reference = "npm:7.10.4"; - linkType = "HARD"; - outputName = "babel-plugin-syntax-numeric-separator-7.10.4-81444be605"; - outputHash = "32689c162862617fad6bfd12efed7523bf9985d396cb3eec12ef1fc96ba225600d3ea30c22051bb21dd8c8fd156fdef366e44150c3c19ef7eb7a85903a9445b4"; - flatName = "plugin-syntax-numeric-separator"; - languageName = "node"; - scope = "babel"; - descriptorRange = "npm:^7.8.3"; - checksum = "9/32689c162862617fad6bfd12efed7523bf9985d396cb3eec12ef1fc96ba225600d3ea30c22051bb21dd8c8fd156fdef366e44150c3c19ef7eb7a85903a9445b4"; - dependencies = { - "@babel/helper-plugin-utils" = packages."@babel/helper-plugin-utils@npm:7.19.0"; - }; - packagePeers = [ - "@babel/core" - "@types/babel__core" - ]; - }; - "@babel/plugin-syntax-numeric-separator@virtual:4f2a00876e51daf6c174c9bd5e20efa043e1745940e553874e88ae6a111f477d701a48c909b8f10566385932e1568822bb77213016205fcc81e66fe676263358#npm:7.10.4" = { - name = "@babel/plugin-syntax-numeric-separator"; - reference = "virtual:4f2a00876e51daf6c174c9bd5e20efa043e1745940e553874e88ae6a111f477d701a48c909b8f10566385932e1568822bb77213016205fcc81e66fe676263358#npm:7.10.4"; - canonicalPackage = packages."@babel/plugin-syntax-numeric-separator@npm:7.10.4"; - dependencies = { - "@babel/core" = packages."@babel/core@npm:7.19.6"; - "@babel/helper-plugin-utils" = packages."@babel/helper-plugin-utils@npm:7.19.0"; - "@types/babel__core" = packages."@types/babel__core@npm:7.1.19"; - }; - }; - "@babel/plugin-syntax-numeric-separator@virtual:f8aca53219b99df3cd58f521fefb9fb2e560855b6177d3d7c0fd22c1238eecf3495c1d90a78ff6f266e6ec8b659f5e769c5eaa47d96cf72a65b53754788ffa5c#npm:7.10.4" = { - name = "@babel/plugin-syntax-numeric-separator"; - reference = "virtual:f8aca53219b99df3cd58f521fefb9fb2e560855b6177d3d7c0fd22c1238eecf3495c1d90a78ff6f266e6ec8b659f5e769c5eaa47d96cf72a65b53754788ffa5c#npm:7.10.4"; - canonicalPackage = packages."@babel/plugin-syntax-numeric-separator@npm:7.10.4"; - dependencies = { - "@babel/core" = packages."@babel/core@npm:7.19.6"; - "@babel/helper-plugin-utils" = packages."@babel/helper-plugin-utils@npm:7.19.0"; - }; - }; - "@babel/plugin-syntax-object-rest-spread@npm:7.8.3" = { - name = "@babel/plugin-syntax-object-rest-spread"; - reference = "npm:7.8.3"; - linkType = "HARD"; - outputName = "babel-plugin-syntax-object-rest-spread-7.8.3-60bd05b6ae"; - outputHash = "868f8cd0c2e10511056a089dab2e88f329b432b81766702de1d8970a785fdae32bd022a69359a7ca6fc58d4767418b871e88fe99ab4209afbaea5e62ebd82ada"; - flatName = "plugin-syntax-object-rest-spread"; - languageName = "node"; - scope = "babel"; - descriptorRange = "npm:^7.8.3"; - checksum = "9/868f8cd0c2e10511056a089dab2e88f329b432b81766702de1d8970a785fdae32bd022a69359a7ca6fc58d4767418b871e88fe99ab4209afbaea5e62ebd82ada"; - dependencies = { - "@babel/helper-plugin-utils" = packages."@babel/helper-plugin-utils@npm:7.19.0"; - }; - packagePeers = [ - "@babel/core" - "@types/babel__core" - ]; - }; - "@babel/plugin-syntax-object-rest-spread@virtual:4f2a00876e51daf6c174c9bd5e20efa043e1745940e553874e88ae6a111f477d701a48c909b8f10566385932e1568822bb77213016205fcc81e66fe676263358#npm:7.8.3" = { - name = "@babel/plugin-syntax-object-rest-spread"; - reference = "virtual:4f2a00876e51daf6c174c9bd5e20efa043e1745940e553874e88ae6a111f477d701a48c909b8f10566385932e1568822bb77213016205fcc81e66fe676263358#npm:7.8.3"; - canonicalPackage = packages."@babel/plugin-syntax-object-rest-spread@npm:7.8.3"; - dependencies = { - "@babel/core" = packages."@babel/core@npm:7.19.6"; - "@babel/helper-plugin-utils" = packages."@babel/helper-plugin-utils@npm:7.19.0"; - "@types/babel__core" = packages."@types/babel__core@npm:7.1.19"; - }; - }; - "@babel/plugin-syntax-object-rest-spread@virtual:f8aca53219b99df3cd58f521fefb9fb2e560855b6177d3d7c0fd22c1238eecf3495c1d90a78ff6f266e6ec8b659f5e769c5eaa47d96cf72a65b53754788ffa5c#npm:7.8.3" = { - name = "@babel/plugin-syntax-object-rest-spread"; - reference = "virtual:f8aca53219b99df3cd58f521fefb9fb2e560855b6177d3d7c0fd22c1238eecf3495c1d90a78ff6f266e6ec8b659f5e769c5eaa47d96cf72a65b53754788ffa5c#npm:7.8.3"; - canonicalPackage = packages."@babel/plugin-syntax-object-rest-spread@npm:7.8.3"; - dependencies = { - "@babel/core" = packages."@babel/core@npm:7.19.6"; - "@babel/helper-plugin-utils" = packages."@babel/helper-plugin-utils@npm:7.19.0"; - }; - }; - "@babel/plugin-syntax-optional-catch-binding@npm:7.8.3" = { - name = "@babel/plugin-syntax-optional-catch-binding"; - reference = "npm:7.8.3"; - linkType = "HARD"; - outputName = "babel-plugin-syntax-optional-catch-binding-7.8.3-ce337427d8"; - outputHash = "c6277360d55c4b4dbaca9fbaf279fe2783e1c0cc1f8edb41feb6f14d5b7ce1f25ca1ab4cf3d0e78411a16d3ee36d4ffd3ee30d07dbf47b67880cd707492c3158"; - flatName = "plugin-syntax-optional-catch-binding"; - languageName = "node"; - scope = "babel"; - descriptorRange = "npm:^7.8.3"; - checksum = "9/c6277360d55c4b4dbaca9fbaf279fe2783e1c0cc1f8edb41feb6f14d5b7ce1f25ca1ab4cf3d0e78411a16d3ee36d4ffd3ee30d07dbf47b67880cd707492c3158"; - dependencies = { - "@babel/helper-plugin-utils" = packages."@babel/helper-plugin-utils@npm:7.19.0"; - }; - packagePeers = [ - "@babel/core" - "@types/babel__core" - ]; - }; - "@babel/plugin-syntax-optional-catch-binding@virtual:4f2a00876e51daf6c174c9bd5e20efa043e1745940e553874e88ae6a111f477d701a48c909b8f10566385932e1568822bb77213016205fcc81e66fe676263358#npm:7.8.3" = { - name = "@babel/plugin-syntax-optional-catch-binding"; - reference = "virtual:4f2a00876e51daf6c174c9bd5e20efa043e1745940e553874e88ae6a111f477d701a48c909b8f10566385932e1568822bb77213016205fcc81e66fe676263358#npm:7.8.3"; - canonicalPackage = packages."@babel/plugin-syntax-optional-catch-binding@npm:7.8.3"; - dependencies = { - "@babel/core" = packages."@babel/core@npm:7.19.6"; - "@babel/helper-plugin-utils" = packages."@babel/helper-plugin-utils@npm:7.19.0"; - "@types/babel__core" = packages."@types/babel__core@npm:7.1.19"; - }; - }; - "@babel/plugin-syntax-optional-catch-binding@virtual:f8aca53219b99df3cd58f521fefb9fb2e560855b6177d3d7c0fd22c1238eecf3495c1d90a78ff6f266e6ec8b659f5e769c5eaa47d96cf72a65b53754788ffa5c#npm:7.8.3" = { - name = "@babel/plugin-syntax-optional-catch-binding"; - reference = "virtual:f8aca53219b99df3cd58f521fefb9fb2e560855b6177d3d7c0fd22c1238eecf3495c1d90a78ff6f266e6ec8b659f5e769c5eaa47d96cf72a65b53754788ffa5c#npm:7.8.3"; - canonicalPackage = packages."@babel/plugin-syntax-optional-catch-binding@npm:7.8.3"; - dependencies = { - "@babel/core" = packages."@babel/core@npm:7.19.6"; - "@babel/helper-plugin-utils" = packages."@babel/helper-plugin-utils@npm:7.19.0"; - }; - }; - "@babel/plugin-syntax-optional-chaining@npm:7.8.3" = { - name = "@babel/plugin-syntax-optional-chaining"; - reference = "npm:7.8.3"; - linkType = "HARD"; - outputName = "babel-plugin-syntax-optional-chaining-7.8.3-f3f3c79579"; - outputHash = "fd81239a2b6c02b3f8cc2abc94db405afb8292133602a9d649985f40ca92153fdfca812dae6ac273a5bd7752c1a46cd4835e5a8bcf3541388d4ece480657fe7f"; - flatName = "plugin-syntax-optional-chaining"; - languageName = "node"; - scope = "babel"; - descriptorRange = "npm:^7.8.3"; - checksum = "9/fd81239a2b6c02b3f8cc2abc94db405afb8292133602a9d649985f40ca92153fdfca812dae6ac273a5bd7752c1a46cd4835e5a8bcf3541388d4ece480657fe7f"; - dependencies = { - "@babel/helper-plugin-utils" = packages."@babel/helper-plugin-utils@npm:7.19.0"; - }; - packagePeers = [ - "@babel/core" - "@types/babel__core" - ]; - }; - "@babel/plugin-syntax-optional-chaining@virtual:4f2a00876e51daf6c174c9bd5e20efa043e1745940e553874e88ae6a111f477d701a48c909b8f10566385932e1568822bb77213016205fcc81e66fe676263358#npm:7.8.3" = { - name = "@babel/plugin-syntax-optional-chaining"; - reference = "virtual:4f2a00876e51daf6c174c9bd5e20efa043e1745940e553874e88ae6a111f477d701a48c909b8f10566385932e1568822bb77213016205fcc81e66fe676263358#npm:7.8.3"; - canonicalPackage = packages."@babel/plugin-syntax-optional-chaining@npm:7.8.3"; - dependencies = { - "@babel/core" = packages."@babel/core@npm:7.19.6"; - "@babel/helper-plugin-utils" = packages."@babel/helper-plugin-utils@npm:7.19.0"; - "@types/babel__core" = packages."@types/babel__core@npm:7.1.19"; - }; - }; - "@babel/plugin-syntax-optional-chaining@virtual:f8aca53219b99df3cd58f521fefb9fb2e560855b6177d3d7c0fd22c1238eecf3495c1d90a78ff6f266e6ec8b659f5e769c5eaa47d96cf72a65b53754788ffa5c#npm:7.8.3" = { - name = "@babel/plugin-syntax-optional-chaining"; - reference = "virtual:f8aca53219b99df3cd58f521fefb9fb2e560855b6177d3d7c0fd22c1238eecf3495c1d90a78ff6f266e6ec8b659f5e769c5eaa47d96cf72a65b53754788ffa5c#npm:7.8.3"; - canonicalPackage = packages."@babel/plugin-syntax-optional-chaining@npm:7.8.3"; - dependencies = { - "@babel/core" = packages."@babel/core@npm:7.19.6"; - "@babel/helper-plugin-utils" = packages."@babel/helper-plugin-utils@npm:7.19.0"; - }; - }; - "@babel/plugin-syntax-top-level-await@npm:7.14.5" = { - name = "@babel/plugin-syntax-top-level-await"; - reference = "npm:7.14.5"; - linkType = "HARD"; - outputName = "babel-plugin-syntax-top-level-await-7.14.5-60a0a2e83b"; - outputHash = "d62a60c7ade2ee033c6037d1fbabb9802c8e03a79e19d33e2fb597f85b2a1a90f6718cdb532252d69ae005e3ac3b1fd29860c1858f8463c3700a81d681967473"; - flatName = "plugin-syntax-top-level-await"; - languageName = "node"; - scope = "babel"; - descriptorRange = "npm:^7.8.3"; - checksum = "9/d62a60c7ade2ee033c6037d1fbabb9802c8e03a79e19d33e2fb597f85b2a1a90f6718cdb532252d69ae005e3ac3b1fd29860c1858f8463c3700a81d681967473"; - dependencies = { - "@babel/helper-plugin-utils" = packages."@babel/helper-plugin-utils@npm:7.19.0"; - }; - packagePeers = [ - "@babel/core" - "@types/babel__core" - ]; - }; - "@babel/plugin-syntax-top-level-await@virtual:4f2a00876e51daf6c174c9bd5e20efa043e1745940e553874e88ae6a111f477d701a48c909b8f10566385932e1568822bb77213016205fcc81e66fe676263358#npm:7.14.5" = { - name = "@babel/plugin-syntax-top-level-await"; - reference = "virtual:4f2a00876e51daf6c174c9bd5e20efa043e1745940e553874e88ae6a111f477d701a48c909b8f10566385932e1568822bb77213016205fcc81e66fe676263358#npm:7.14.5"; - canonicalPackage = packages."@babel/plugin-syntax-top-level-await@npm:7.14.5"; - dependencies = { - "@babel/core" = packages."@babel/core@npm:7.19.6"; - "@babel/helper-plugin-utils" = packages."@babel/helper-plugin-utils@npm:7.19.0"; - "@types/babel__core" = packages."@types/babel__core@npm:7.1.19"; - }; - }; - "@babel/plugin-syntax-top-level-await@virtual:f8aca53219b99df3cd58f521fefb9fb2e560855b6177d3d7c0fd22c1238eecf3495c1d90a78ff6f266e6ec8b659f5e769c5eaa47d96cf72a65b53754788ffa5c#npm:7.14.5" = { - name = "@babel/plugin-syntax-top-level-await"; - reference = "virtual:f8aca53219b99df3cd58f521fefb9fb2e560855b6177d3d7c0fd22c1238eecf3495c1d90a78ff6f266e6ec8b659f5e769c5eaa47d96cf72a65b53754788ffa5c#npm:7.14.5"; - canonicalPackage = packages."@babel/plugin-syntax-top-level-await@npm:7.14.5"; - dependencies = { - "@babel/core" = packages."@babel/core@npm:7.19.6"; - "@babel/helper-plugin-utils" = packages."@babel/helper-plugin-utils@npm:7.19.0"; - }; - }; - "@babel/plugin-syntax-typescript@npm:7.18.6" = { - name = "@babel/plugin-syntax-typescript"; - reference = "npm:7.18.6"; - linkType = "HARD"; - outputName = "babel-plugin-syntax-typescript-7.18.6-4ad9dd7d2a"; - outputHash = "99aaa2a38b3cfc19427c04b0eebfdda3dc2c02a538dfc70c9c6e651db82a5abe71c94d6f59f2113204a61ef053e5f05b76ef94ddcc1dd6c624237dc35ddb43d1"; - flatName = "plugin-syntax-typescript"; - languageName = "node"; - scope = "babel"; - descriptorRange = "npm:^7.7.2"; - checksum = "9/99aaa2a38b3cfc19427c04b0eebfdda3dc2c02a538dfc70c9c6e651db82a5abe71c94d6f59f2113204a61ef053e5f05b76ef94ddcc1dd6c624237dc35ddb43d1"; - dependencies = { - "@babel/helper-plugin-utils" = packages."@babel/helper-plugin-utils@npm:7.19.0"; - }; - packagePeers = [ - "@babel/core" - "@types/babel__core" - ]; - }; - "@babel/plugin-syntax-typescript@virtual:52d2763c817f325964d4357cf9dbe187e8ec48bcb3ce478452f0362bd97d1cca745e5a9f31131ff3c69969b9b1419e86adfe045b57a151ae5d135fb663f3aa9d#npm:7.18.6" = { - name = "@babel/plugin-syntax-typescript"; - reference = "virtual:52d2763c817f325964d4357cf9dbe187e8ec48bcb3ce478452f0362bd97d1cca745e5a9f31131ff3c69969b9b1419e86adfe045b57a151ae5d135fb663f3aa9d#npm:7.18.6"; - canonicalPackage = packages."@babel/plugin-syntax-typescript@npm:7.18.6"; - dependencies = { - "@babel/core" = packages."@babel/core@npm:7.19.6"; - "@babel/helper-plugin-utils" = packages."@babel/helper-plugin-utils@npm:7.19.0"; - }; - }; - "@babel/runtime@npm:7.19.4" = { - name = "@babel/runtime"; - reference = "npm:7.19.4"; - linkType = "HARD"; - outputName = "babel-runtime-7.19.4-9f106cb4dd"; - outputHash = "3c9fd29511c53b45f9df4715ae880fabf3ab7a8a3848de03d94199ef6871ac8a8595cc4024bcad71a6bbfe91531c89e684cf436b23a11977e04b4bc98a6992e3"; - flatName = "runtime"; - languageName = "node"; - scope = "babel"; - descriptorRange = "npm:^7.6.3"; - checksum = "9/3c9fd29511c53b45f9df4715ae880fabf3ab7a8a3848de03d94199ef6871ac8a8595cc4024bcad71a6bbfe91531c89e684cf436b23a11977e04b4bc98a6992e3"; - dependencies = { - "regenerator-runtime" = packages."regenerator-runtime@npm:0.13.10"; - }; - }; - "@babel/template@npm:7.18.10" = { - name = "@babel/template"; - reference = "npm:7.18.10"; - linkType = "HARD"; - outputName = "babel-template-7.18.10-b6d6fdbaf8"; - outputHash = "8d820647ae45c8fcc7d9c52bfb89f94bb96fc0d0fb71903b6619e176f6744be773a8d8ab0fcbb3e7208448ca71016580df2b1e40c685061154030f339e47e8df"; - flatName = "template"; - languageName = "node"; - scope = "babel"; - descriptorRange = "npm:^7.18.10"; - checksum = "9/8d820647ae45c8fcc7d9c52bfb89f94bb96fc0d0fb71903b6619e176f6744be773a8d8ab0fcbb3e7208448ca71016580df2b1e40c685061154030f339e47e8df"; - dependencies = { - "@babel/code-frame" = packages."@babel/code-frame@npm:7.18.6"; - "@babel/parser" = packages."@babel/parser@npm:7.19.6"; - "@babel/types" = packages."@babel/types@npm:7.19.4"; - }; - }; - "@babel/traverse@npm:7.19.6" = { - name = "@babel/traverse"; - reference = "npm:7.19.6"; - linkType = "HARD"; - outputName = "babel-traverse-7.19.6-aede7c1d08"; - outputHash = "e1dc0d4e3adb0b435cc31fce20a376da11aab575e85724cca3a6c6035c42de31143bf700c14816e4050539f0b1dcfc23ce9d3d22f72e16e232ac0a5d523be4b6"; - flatName = "traverse"; - languageName = "node"; - scope = "babel"; - descriptorRange = "npm:^7.7.2"; - checksum = "9/e1dc0d4e3adb0b435cc31fce20a376da11aab575e85724cca3a6c6035c42de31143bf700c14816e4050539f0b1dcfc23ce9d3d22f72e16e232ac0a5d523be4b6"; - dependencies = { - "@babel/code-frame" = packages."@babel/code-frame@npm:7.18.6"; - "@babel/generator" = packages."@babel/generator@npm:7.19.6"; - "@babel/helper-environment-visitor" = packages."@babel/helper-environment-visitor@npm:7.18.9"; - "@babel/helper-function-name" = packages."@babel/helper-function-name@npm:7.19.0"; - "@babel/helper-hoist-variables" = packages."@babel/helper-hoist-variables@npm:7.18.6"; - "@babel/helper-split-export-declaration" = packages."@babel/helper-split-export-declaration@npm:7.18.6"; - "@babel/parser" = packages."@babel/parser@npm:7.19.6"; - "@babel/types" = packages."@babel/types@npm:7.19.4"; - "globals" = packages."globals@npm:11.12.0"; - "debug" = packages."debug@virtual:113ef2a03aa3de337889da32b02d27edf5e95d2b3c50aaf8ade4848a62355b637cece6c5a2b0f14480eef0d6c8ed8e9cacaca7d39e60125049f7120bdbeb5489#npm:4.3.4"; - }; - }; - "@babel/types@npm:7.19.4" = { - name = "@babel/types"; - reference = "npm:7.19.4"; - linkType = "HARD"; - outputName = "babel-types-7.19.4-9a7b64a650"; - outputHash = "2c67b2f2fac78e54b2dc51bb475bd1ee7d31bbd9947ac9c4f5b127a47b2e996eb0d809b89b435afb8c2029ebbf1443c2e458f92ef85757e4b2d5a3861c8f3716"; - flatName = "types"; - languageName = "node"; - scope = "babel"; - descriptorRange = "npm:^7.3.3"; - checksum = "9/2c67b2f2fac78e54b2dc51bb475bd1ee7d31bbd9947ac9c4f5b127a47b2e996eb0d809b89b435afb8c2029ebbf1443c2e458f92ef85757e4b2d5a3861c8f3716"; - dependencies = { - "@babel/helper-string-parser" = packages."@babel/helper-string-parser@npm:7.19.4"; - "@babel/helper-validator-identifier" = packages."@babel/helper-validator-identifier@npm:7.19.1"; - "to-fast-properties" = packages."to-fast-properties@npm:2.0.0"; - }; - }; - "@bcoe/v8-coverage@npm:0.2.3" = { - name = "@bcoe/v8-coverage"; - reference = "npm:0.2.3"; - linkType = "HARD"; - outputName = "bcoe-v8-coverage-0.2.3-9e27b3c57e"; - outputHash = "86336400d6fb1a8263a3e7242ad7ed870f5efae7cd8c2b18df45fa11adc9af035bac68c0da68c0f67e78b3f09ef49efe2e84c4912ddc48e2d12f30ec474c81cc"; - flatName = "v8-coverage"; - languageName = "node"; - scope = "bcoe"; - descriptorRange = "npm:^0.2.3"; - checksum = "9/86336400d6fb1a8263a3e7242ad7ed870f5efae7cd8c2b18df45fa11adc9af035bac68c0da68c0f67e78b3f09ef49efe2e84c4912ddc48e2d12f30ec474c81cc"; - }; - "@discoveryjs/json-ext@npm:0.5.7" = { - name = "@discoveryjs/json-ext"; - reference = "npm:0.5.7"; - linkType = "HARD"; - outputName = "discoveryjs-json-ext-0.5.7-fe04af1f31"; - outputHash = "b6e8ff9be2e0b505f3e06379743f55d04028adbb0170dc191ff020f6e43f86f712e6cceb8a95db7e2c13a7dc6d7419f6b65af353ce662bf520e065b69e232ef7"; - flatName = "json-ext"; - languageName = "node"; - scope = "discoveryjs"; - descriptorRange = "npm:^0.5.0"; - checksum = "9/b6e8ff9be2e0b505f3e06379743f55d04028adbb0170dc191ff020f6e43f86f712e6cceb8a95db7e2c13a7dc6d7419f6b65af353ce662bf520e065b69e232ef7"; - }; - "@esbuild/android-arm@npm:0.15.10" = { - name = "@esbuild/android-arm"; - reference = "npm:0.15.10"; - linkType = "HARD"; - outputName = "esbuild-android-arm-0.15.10-cb21b3083b"; - outputHash = ""; - shouldBeUnplugged = true; - installCondition = stdenv: (false) && (stdenv.isAarch32); - flatName = "android-arm"; - languageName = "node"; - scope = "esbuild"; - descriptorRange = "npm:0.15.10"; - }; - "@esbuild/linux-loong64@npm:0.15.10" = { - name = "@esbuild/linux-loong64"; - reference = "npm:0.15.10"; - linkType = "HARD"; - outputName = "esbuild-linux-loong64-0.15.10-e8e3f91e81"; - outputHash = ""; - shouldBeUnplugged = true; - installCondition = stdenv: (stdenv.isLinux) && (false); - flatName = "linux-loong64"; - languageName = "node"; - scope = "esbuild"; - descriptorRange = "npm:0.15.10"; - }; - "@gar/promisify@npm:1.1.3" = { - name = "@gar/promisify"; - reference = "npm:1.1.3"; - linkType = "HARD"; - outputName = "gar-promisify-1.1.3-ac1a325862"; - outputHash = "3fadc40481a783ddb90397f5759f92650b57465f7a4a778056bd24b47060595012e9181a55ae547d57a893d37d9776abe9e368f1f6918e37225eb6a83f9a75f8"; - flatName = "promisify"; - languageName = "node"; - scope = "gar"; - descriptorRange = "npm:^1.1.3"; - checksum = "9/3fadc40481a783ddb90397f5759f92650b57465f7a4a778056bd24b47060595012e9181a55ae547d57a893d37d9776abe9e368f1f6918e37225eb6a83f9a75f8"; - }; - "@istanbuljs/load-nyc-config@npm:1.1.0" = { - name = "@istanbuljs/load-nyc-config"; - reference = "npm:1.1.0"; - linkType = "HARD"; - outputName = "istanbuljs-load-nyc-config-1.1.0-42d17c9cb1"; - outputHash = "b21115738ddb574f73960a3dee3288c84a6275c75110496c2ce0e2c2b47ac588bd959ac5940e0074f2eb7f2bec177ebf2696ca123f5846d88affbcaf10d7fa34"; - flatName = "load-nyc-config"; - languageName = "node"; - scope = "istanbuljs"; - descriptorRange = "npm:^1.0.0"; - checksum = "9/b21115738ddb574f73960a3dee3288c84a6275c75110496c2ce0e2c2b47ac588bd959ac5940e0074f2eb7f2bec177ebf2696ca123f5846d88affbcaf10d7fa34"; - dependencies = { - "camelcase" = packages."camelcase@npm:5.3.1"; - "find-up" = packages."find-up@npm:4.1.0"; - "get-package-type" = packages."get-package-type@npm:0.1.0"; - "js-yaml" = packages."js-yaml@npm:3.14.1"; - "resolve-from" = packages."resolve-from@npm:5.0.0"; - }; - }; - "@istanbuljs/schema@npm:0.1.3" = { - name = "@istanbuljs/schema"; - reference = "npm:0.1.3"; - linkType = "HARD"; - outputName = "istanbuljs-schema-0.1.3-466bd3eaaa"; - outputHash = "1f6fd298c4d287b8c1ba55ab0cec14b4006c3f7aa032fe09a82f3322d943fd8aa9aa5691ad2e1c0c8693d42546c2cfa6adb45d09e2131fb5b975f7caab6aa5d8"; - flatName = "schema"; - languageName = "node"; - scope = "istanbuljs"; - descriptorRange = "npm:^0.1.2"; - checksum = "9/1f6fd298c4d287b8c1ba55ab0cec14b4006c3f7aa032fe09a82f3322d943fd8aa9aa5691ad2e1c0c8693d42546c2cfa6adb45d09e2131fb5b975f7caab6aa5d8"; - }; - "@jest/console@npm:29.2.1" = { - name = "@jest/console"; - reference = "npm:29.2.1"; - linkType = "HARD"; - outputName = "jest-console-29.2.1-3ab9fdc9c3"; - outputHash = "90b5c6e59f5f9a31f6cd4fff30e1b673719fb4f10daf7c040b22f24f4893475f13dd7bcc280b00c7f9be7dc48d4ebc559c38648558dc50e0a71f232970d00fd4"; - flatName = "console"; - languageName = "node"; - scope = "jest"; - descriptorRange = "npm:^29.2.1"; - checksum = "9/90b5c6e59f5f9a31f6cd4fff30e1b673719fb4f10daf7c040b22f24f4893475f13dd7bcc280b00c7f9be7dc48d4ebc559c38648558dc50e0a71f232970d00fd4"; - dependencies = { - "@jest/types" = packages."@jest/types@npm:29.2.1"; - "@types/node" = packages."@types/node@npm:18.11.5"; - "chalk" = packages."chalk@npm:4.1.2"; - "jest-message-util" = packages."jest-message-util@npm:29.2.1"; - "jest-util" = packages."jest-util@npm:29.2.1"; - "slash" = packages."slash@npm:3.0.0"; - }; - }; - "@jest/core@npm:29.2.2" = { - name = "@jest/core"; - reference = "npm:29.2.2"; - linkType = "HARD"; - outputName = "jest-core-29.2.2-2fbe9d7ee1"; - outputHash = "696c9f62e8d149296fec3b293a4f9e7d66dbd66da8862dd7a636b328442a910221e00b2c68e372452295978ec32cf359ac41ad1a6045d44c789fbfb7bb4a79c0"; - flatName = "core"; - languageName = "node"; - scope = "jest"; - descriptorRange = "npm:^29.2.2"; - checksum = "9/696c9f62e8d149296fec3b293a4f9e7d66dbd66da8862dd7a636b328442a910221e00b2c68e372452295978ec32cf359ac41ad1a6045d44c789fbfb7bb4a79c0"; - dependencies = { - "@jest/console" = packages."@jest/console@npm:29.2.1"; - "@jest/reporters" = packages."@jest/reporters@npm:29.2.2"; - "@jest/test-result" = packages."@jest/test-result@npm:29.2.1"; - "@jest/transform" = packages."@jest/transform@npm:29.2.2"; - "@jest/types" = packages."@jest/types@npm:29.2.1"; - "@types/node" = packages."@types/node@npm:18.11.5"; - "ansi-escapes" = packages."ansi-escapes@npm:4.3.2"; - "chalk" = packages."chalk@npm:4.1.2"; - "ci-info" = packages."ci-info@npm:3.5.0"; - "exit" = packages."exit@npm:0.1.2"; - "graceful-fs" = packages."graceful-fs@npm:4.2.10"; - "jest-changed-files" = packages."jest-changed-files@npm:29.2.0"; - "jest-config" = packages."jest-config@npm:29.2.2"; - "jest-haste-map" = packages."jest-haste-map@npm:29.2.1"; - "jest-message-util" = packages."jest-message-util@npm:29.2.1"; - "jest-regex-util" = packages."jest-regex-util@npm:29.2.0"; - "jest-resolve-dependencies" = packages."jest-resolve-dependencies@npm:29.2.2"; - "jest-resolve" = packages."jest-resolve@npm:29.2.2"; - "jest-runner" = packages."jest-runner@npm:29.2.2"; - "jest-runtime" = packages."jest-runtime@npm:29.2.2"; - "jest-snapshot" = packages."jest-snapshot@npm:29.2.2"; - "jest-util" = packages."jest-util@npm:29.2.1"; - "jest-validate" = packages."jest-validate@npm:29.2.2"; - "jest-watcher" = packages."jest-watcher@npm:29.2.2"; - "micromatch" = packages."micromatch@npm:4.0.5"; - "pretty-format" = packages."pretty-format@npm:29.2.1"; - "slash" = packages."slash@npm:3.0.0"; - "strip-ansi" = packages."strip-ansi@npm:6.0.1"; - }; - packagePeers = [ - "@types/node-notifier" - "node-notifier" - ]; - }; - "@jest/core@virtual:ed4256f3b0ab957eee4eb4cc9937c0a27bdf890325cbedbe37a05cc81927348d79226614f5771bb12c3df535a0f9cc154fc6d6aeb0f19a11f6c85dad13784690#npm:29.2.2" = { - name = "@jest/core"; - reference = "virtual:ed4256f3b0ab957eee4eb4cc9937c0a27bdf890325cbedbe37a05cc81927348d79226614f5771bb12c3df535a0f9cc154fc6d6aeb0f19a11f6c85dad13784690#npm:29.2.2"; - canonicalPackage = packages."@jest/core@npm:29.2.2"; - dependencies = { - "@jest/console" = packages."@jest/console@npm:29.2.1"; - "@jest/test-result" = packages."@jest/test-result@npm:29.2.1"; - "@jest/transform" = packages."@jest/transform@npm:29.2.2"; - "@jest/types" = packages."@jest/types@npm:29.2.1"; - "@types/node" = packages."@types/node@npm:18.11.5"; - "ansi-escapes" = packages."ansi-escapes@npm:4.3.2"; - "chalk" = packages."chalk@npm:4.1.2"; - "ci-info" = packages."ci-info@npm:3.5.0"; - "exit" = packages."exit@npm:0.1.2"; - "graceful-fs" = packages."graceful-fs@npm:4.2.10"; - "jest-changed-files" = packages."jest-changed-files@npm:29.2.0"; - "jest-haste-map" = packages."jest-haste-map@npm:29.2.1"; - "jest-message-util" = packages."jest-message-util@npm:29.2.1"; - "jest-regex-util" = packages."jest-regex-util@npm:29.2.0"; - "jest-resolve" = packages."jest-resolve@npm:29.2.2"; - "jest-resolve-dependencies" = packages."jest-resolve-dependencies@npm:29.2.2"; - "jest-runner" = packages."jest-runner@npm:29.2.2"; - "jest-runtime" = packages."jest-runtime@npm:29.2.2"; - "jest-snapshot" = packages."jest-snapshot@npm:29.2.2"; - "jest-util" = packages."jest-util@npm:29.2.1"; - "jest-validate" = packages."jest-validate@npm:29.2.2"; - "jest-watcher" = packages."jest-watcher@npm:29.2.2"; - "micromatch" = packages."micromatch@npm:4.0.5"; - "pretty-format" = packages."pretty-format@npm:29.2.1"; - "slash" = packages."slash@npm:3.0.0"; - "strip-ansi" = packages."strip-ansi@npm:6.0.1"; - "@jest/reporters" = packages."@jest/reporters@virtual:ef28b7d034cb0c62b8a1b7ec1cb9e30d6e5eac5d1aee0477fe9c72b77adf63167ce4b0f383d91673f2bc246630c3e67a7f2628cbaf819cb75712b3df85927cb4#npm:29.2.2"; - "jest-config" = packages."jest-config@virtual:ef28b7d034cb0c62b8a1b7ec1cb9e30d6e5eac5d1aee0477fe9c72b77adf63167ce4b0f383d91673f2bc246630c3e67a7f2628cbaf819cb75712b3df85927cb4#npm:29.2.2"; - }; - }; - "@jest/environment@npm:29.2.2" = { - name = "@jest/environment"; - reference = "npm:29.2.2"; - linkType = "HARD"; - outputName = "jest-environment-29.2.2-f1d4e95610"; - outputHash = "1f68b56e4fd5a0afdd002f2fc45066d47961ce5acf8d04e578a474da750e76c0e9b5663f9557a2045c237ba248a74a563d679f736c195bef2d39a6b851ca867d"; - flatName = "environment"; - languageName = "node"; - scope = "jest"; - descriptorRange = "npm:^29.2.2"; - checksum = "9/1f68b56e4fd5a0afdd002f2fc45066d47961ce5acf8d04e578a474da750e76c0e9b5663f9557a2045c237ba248a74a563d679f736c195bef2d39a6b851ca867d"; - dependencies = { - "@jest/fake-timers" = packages."@jest/fake-timers@npm:29.2.2"; - "@jest/types" = packages."@jest/types@npm:29.2.1"; - "@types/node" = packages."@types/node@npm:18.11.5"; - "jest-mock" = packages."jest-mock@npm:29.2.2"; - }; - }; - "@jest/expect-utils@npm:29.2.2" = { - name = "@jest/expect-utils"; - reference = "npm:29.2.2"; - linkType = "HARD"; - outputName = "jest-expect-utils-29.2.2-bd9cc543d7"; - outputHash = "35062ac517993a1af8dc9ffb2d4c696c0f508f0605af09e88e548a5746a13f4147541ba6d9ce86f869a24546252e99d2e6b7435584e41b6ee3b8b7b822a372df"; - flatName = "expect-utils"; - languageName = "node"; - scope = "jest"; - descriptorRange = "npm:^29.2.2"; - checksum = "9/35062ac517993a1af8dc9ffb2d4c696c0f508f0605af09e88e548a5746a13f4147541ba6d9ce86f869a24546252e99d2e6b7435584e41b6ee3b8b7b822a372df"; - dependencies = { - "jest-get-type" = packages."jest-get-type@npm:29.2.0"; - }; - }; - "@jest/expect@npm:29.2.2" = { - name = "@jest/expect"; - reference = "npm:29.2.2"; - linkType = "HARD"; - outputName = "jest-expect-29.2.2-97f59ae54f"; - outputHash = "4a460acd25154ab6dd2199b2496d686678db958d7805db7af2594b67bdf33ec11fb4eef0ba5a714f147de1247f8c0561e85c55962938286246d42fca0d70e6ff"; - flatName = "expect"; - languageName = "node"; - scope = "jest"; - descriptorRange = "npm:^29.2.2"; - checksum = "9/4a460acd25154ab6dd2199b2496d686678db958d7805db7af2594b67bdf33ec11fb4eef0ba5a714f147de1247f8c0561e85c55962938286246d42fca0d70e6ff"; - dependencies = { - "expect" = packages."expect@npm:29.2.2"; - "jest-snapshot" = packages."jest-snapshot@npm:29.2.2"; - }; - }; - "@jest/fake-timers@npm:29.2.2" = { - name = "@jest/fake-timers"; - reference = "npm:29.2.2"; - linkType = "HARD"; - outputName = "jest-fake-timers-29.2.2-237b44aa64"; - outputHash = "da2e6de87bda01a700cbac7838600fa8c0b14673ffb1eaba44f0db902a4911b8802086f8d698994dcd0b6fcdbbd573328522d092f969853fe7376ef45d00d2d3"; - flatName = "fake-timers"; - languageName = "node"; - scope = "jest"; - descriptorRange = "npm:^29.2.2"; - checksum = "9/da2e6de87bda01a700cbac7838600fa8c0b14673ffb1eaba44f0db902a4911b8802086f8d698994dcd0b6fcdbbd573328522d092f969853fe7376ef45d00d2d3"; - dependencies = { - "@jest/types" = packages."@jest/types@npm:29.2.1"; - "@sinonjs/fake-timers" = packages."@sinonjs/fake-timers@npm:9.1.2"; - "@types/node" = packages."@types/node@npm:18.11.5"; - "jest-message-util" = packages."jest-message-util@npm:29.2.1"; - "jest-mock" = packages."jest-mock@npm:29.2.2"; - "jest-util" = packages."jest-util@npm:29.2.1"; - }; - }; - "@jest/globals@npm:29.2.2" = { - name = "@jest/globals"; - reference = "npm:29.2.2"; - linkType = "HARD"; - outputName = "jest-globals-29.2.2-864f091706"; - outputHash = "13c0a37fd6f135b445dbffc666e5c4b345f405a294b1fb1277dbcaa973f0cfa339b24ba656d6b83e734679abe4c0bf121faee9980e9d1fd6817ebb5a0cfdb824"; - flatName = "globals"; - languageName = "node"; - scope = "jest"; - descriptorRange = "npm:^29.2.2"; - checksum = "9/13c0a37fd6f135b445dbffc666e5c4b345f405a294b1fb1277dbcaa973f0cfa339b24ba656d6b83e734679abe4c0bf121faee9980e9d1fd6817ebb5a0cfdb824"; - dependencies = { - "@jest/environment" = packages."@jest/environment@npm:29.2.2"; - "@jest/expect" = packages."@jest/expect@npm:29.2.2"; - "@jest/types" = packages."@jest/types@npm:29.2.1"; - "jest-mock" = packages."jest-mock@npm:29.2.2"; - }; - }; - "@jest/reporters@npm:29.2.2" = { - name = "@jest/reporters"; - reference = "npm:29.2.2"; - linkType = "HARD"; - outputName = "jest-reporters-29.2.2-b408f658ca"; - outputHash = "a417023a0b7737334c58399f5f285ef039b5a9a5e217edda6787b52cd850f0aeeab1150e2d53ddc19b203b7d01b6cea97a01de0b277d22bb98a1bce6397293e0"; - flatName = "reporters"; - languageName = "node"; - scope = "jest"; - descriptorRange = "npm:^29.2.2"; - checksum = "9/a417023a0b7737334c58399f5f285ef039b5a9a5e217edda6787b52cd850f0aeeab1150e2d53ddc19b203b7d01b6cea97a01de0b277d22bb98a1bce6397293e0"; - dependencies = { - "@bcoe/v8-coverage" = packages."@bcoe/v8-coverage@npm:0.2.3"; - "@jest/console" = packages."@jest/console@npm:29.2.1"; - "@jest/test-result" = packages."@jest/test-result@npm:29.2.1"; - "@jest/transform" = packages."@jest/transform@npm:29.2.2"; - "@jest/types" = packages."@jest/types@npm:29.2.1"; - "@jridgewell/trace-mapping" = packages."@jridgewell/trace-mapping@npm:0.3.17"; - "@types/node" = packages."@types/node@npm:18.11.5"; - "chalk" = packages."chalk@npm:4.1.2"; - "collect-v8-coverage" = packages."collect-v8-coverage@npm:1.0.1"; - "exit" = packages."exit@npm:0.1.2"; - "glob" = packages."glob@npm:7.2.3"; - "graceful-fs" = packages."graceful-fs@npm:4.2.10"; - "istanbul-lib-coverage" = packages."istanbul-lib-coverage@npm:3.2.0"; - "istanbul-lib-instrument" = packages."istanbul-lib-instrument@npm:5.2.1"; - "istanbul-lib-report" = packages."istanbul-lib-report@npm:3.0.0"; - "istanbul-lib-source-maps" = packages."istanbul-lib-source-maps@npm:4.0.1"; - "istanbul-reports" = packages."istanbul-reports@npm:3.1.5"; - "jest-message-util" = packages."jest-message-util@npm:29.2.1"; - "jest-util" = packages."jest-util@npm:29.2.1"; - "jest-worker" = packages."jest-worker@npm:29.2.1"; - "slash" = packages."slash@npm:3.0.0"; - "string-length" = packages."string-length@npm:4.0.2"; - "strip-ansi" = packages."strip-ansi@npm:6.0.1"; - "v8-to-istanbul" = packages."v8-to-istanbul@npm:9.0.1"; - }; - packagePeers = [ - "@types/node-notifier" - "node-notifier" - ]; - }; - "@jest/reporters@virtual:ef28b7d034cb0c62b8a1b7ec1cb9e30d6e5eac5d1aee0477fe9c72b77adf63167ce4b0f383d91673f2bc246630c3e67a7f2628cbaf819cb75712b3df85927cb4#npm:29.2.2" = { - name = "@jest/reporters"; - reference = "virtual:ef28b7d034cb0c62b8a1b7ec1cb9e30d6e5eac5d1aee0477fe9c72b77adf63167ce4b0f383d91673f2bc246630c3e67a7f2628cbaf819cb75712b3df85927cb4#npm:29.2.2"; - canonicalPackage = packages."@jest/reporters@npm:29.2.2"; - dependencies = { - "@bcoe/v8-coverage" = packages."@bcoe/v8-coverage@npm:0.2.3"; - "@jest/console" = packages."@jest/console@npm:29.2.1"; - "@jest/test-result" = packages."@jest/test-result@npm:29.2.1"; - "@jest/transform" = packages."@jest/transform@npm:29.2.2"; - "@jest/types" = packages."@jest/types@npm:29.2.1"; - "@jridgewell/trace-mapping" = packages."@jridgewell/trace-mapping@npm:0.3.17"; - "@types/node" = packages."@types/node@npm:18.11.5"; - "chalk" = packages."chalk@npm:4.1.2"; - "collect-v8-coverage" = packages."collect-v8-coverage@npm:1.0.1"; - "exit" = packages."exit@npm:0.1.2"; - "glob" = packages."glob@npm:7.2.3"; - "graceful-fs" = packages."graceful-fs@npm:4.2.10"; - "istanbul-lib-coverage" = packages."istanbul-lib-coverage@npm:3.2.0"; - "istanbul-lib-instrument" = packages."istanbul-lib-instrument@npm:5.2.1"; - "istanbul-lib-report" = packages."istanbul-lib-report@npm:3.0.0"; - "istanbul-lib-source-maps" = packages."istanbul-lib-source-maps@npm:4.0.1"; - "istanbul-reports" = packages."istanbul-reports@npm:3.1.5"; - "jest-message-util" = packages."jest-message-util@npm:29.2.1"; - "jest-util" = packages."jest-util@npm:29.2.1"; - "jest-worker" = packages."jest-worker@npm:29.2.1"; - "slash" = packages."slash@npm:3.0.0"; - "string-length" = packages."string-length@npm:4.0.2"; - "strip-ansi" = packages."strip-ansi@npm:6.0.1"; - "v8-to-istanbul" = packages."v8-to-istanbul@npm:9.0.1"; - }; - }; - "@jest/schemas@npm:29.0.0" = { - name = "@jest/schemas"; - reference = "npm:29.0.0"; - linkType = "HARD"; - outputName = "jest-schemas-29.0.0-5d6c90262d"; - outputHash = "174f589fa0326e4f393cf56ac45beb8412e2ccd7c6040b45062035d80c95f5ae71512dab5757906b923ebfcd9c2b57ea40986377e0c06ad10ab2e24b561ac28d"; - flatName = "schemas"; - languageName = "node"; - scope = "jest"; - descriptorRange = "npm:^29.0.0"; - checksum = "9/174f589fa0326e4f393cf56ac45beb8412e2ccd7c6040b45062035d80c95f5ae71512dab5757906b923ebfcd9c2b57ea40986377e0c06ad10ab2e24b561ac28d"; - dependencies = { - "@sinclair/typebox" = packages."@sinclair/typebox@npm:0.24.50"; - }; - }; - "@jest/source-map@npm:29.2.0" = { - name = "@jest/source-map"; - reference = "npm:29.2.0"; - linkType = "HARD"; - outputName = "jest-source-map-29.2.0-cb038ff173"; - outputHash = "390c856de46ea6bd42a1ddbe5201520d403050babce9cc929cfc6beb30d645aa66f1df81cb17e42b90cb3774edd34ab51f607267dfaa2b3e0dc0376716d44aac"; - flatName = "source-map"; - languageName = "node"; - scope = "jest"; - descriptorRange = "npm:^29.2.0"; - checksum = "9/390c856de46ea6bd42a1ddbe5201520d403050babce9cc929cfc6beb30d645aa66f1df81cb17e42b90cb3774edd34ab51f607267dfaa2b3e0dc0376716d44aac"; - dependencies = { - "@jridgewell/trace-mapping" = packages."@jridgewell/trace-mapping@npm:0.3.17"; - "callsites" = packages."callsites@npm:3.1.0"; - "graceful-fs" = packages."graceful-fs@npm:4.2.10"; - }; - }; - "@jest/test-result@npm:29.2.1" = { - name = "@jest/test-result"; - reference = "npm:29.2.1"; - linkType = "HARD"; - outputName = "jest-test-result-29.2.1-79b07e69f2"; - outputHash = "c6f37006d4f47d543b160d421a6e9c864d20800caadcae9bf1d8fd65e4d23c891a14d05cf59d53aad77bf1899fdb7b2483d9bdd642f875ef6844fb5268058c7b"; - flatName = "test-result"; - languageName = "node"; - scope = "jest"; - descriptorRange = "npm:^29.2.1"; - checksum = "9/c6f37006d4f47d543b160d421a6e9c864d20800caadcae9bf1d8fd65e4d23c891a14d05cf59d53aad77bf1899fdb7b2483d9bdd642f875ef6844fb5268058c7b"; - dependencies = { - "@jest/console" = packages."@jest/console@npm:29.2.1"; - "@jest/types" = packages."@jest/types@npm:29.2.1"; - "@types/istanbul-lib-coverage" = packages."@types/istanbul-lib-coverage@npm:2.0.4"; - "collect-v8-coverage" = packages."collect-v8-coverage@npm:1.0.1"; - }; - }; - "@jest/test-sequencer@npm:29.2.2" = { - name = "@jest/test-sequencer"; - reference = "npm:29.2.2"; - linkType = "HARD"; - outputName = "jest-test-sequencer-29.2.2-9497dd3b8d"; - outputHash = "18c6b94e4f8b53ee97ac0da4f6aa032d143d0e85cf44f360df255464e305251e13b9f122cf5e93392d2219315d1c98a96e636965dc5288c160e5c54858e84f1a"; - flatName = "test-sequencer"; - languageName = "node"; - scope = "jest"; - descriptorRange = "npm:^29.2.2"; - checksum = "9/18c6b94e4f8b53ee97ac0da4f6aa032d143d0e85cf44f360df255464e305251e13b9f122cf5e93392d2219315d1c98a96e636965dc5288c160e5c54858e84f1a"; - dependencies = { - "@jest/test-result" = packages."@jest/test-result@npm:29.2.1"; - "graceful-fs" = packages."graceful-fs@npm:4.2.10"; - "jest-haste-map" = packages."jest-haste-map@npm:29.2.1"; - "slash" = packages."slash@npm:3.0.0"; - }; - }; - "@jest/transform@npm:29.2.2" = { - name = "@jest/transform"; - reference = "npm:29.2.2"; - linkType = "HARD"; - outputName = "jest-transform-29.2.2-980b80f478"; - outputHash = "906667c8a5b3f2cf242146d42b4876e9c98e0cd9a0e6f5374aaf663fadb532b1e018c604aa4cbac40a9c6b7d14609a446a25cd0147d716a40dc5561bfc838b97"; - flatName = "transform"; - languageName = "node"; - scope = "jest"; - descriptorRange = "npm:^29.2.2"; - checksum = "9/906667c8a5b3f2cf242146d42b4876e9c98e0cd9a0e6f5374aaf663fadb532b1e018c604aa4cbac40a9c6b7d14609a446a25cd0147d716a40dc5561bfc838b97"; - dependencies = { - "@babel/core" = packages."@babel/core@npm:7.19.6"; - "@jest/types" = packages."@jest/types@npm:29.2.1"; - "@jridgewell/trace-mapping" = packages."@jridgewell/trace-mapping@npm:0.3.17"; - "babel-plugin-istanbul" = packages."babel-plugin-istanbul@npm:6.1.1"; - "chalk" = packages."chalk@npm:4.1.2"; - "convert-source-map" = packages."convert-source-map@npm:1.9.0"; - "fast-json-stable-stringify" = packages."fast-json-stable-stringify@npm:2.1.0"; - "graceful-fs" = packages."graceful-fs@npm:4.2.10"; - "jest-haste-map" = packages."jest-haste-map@npm:29.2.1"; - "jest-regex-util" = packages."jest-regex-util@npm:29.2.0"; - "jest-util" = packages."jest-util@npm:29.2.1"; - "micromatch" = packages."micromatch@npm:4.0.5"; - "pirates" = packages."pirates@npm:4.0.5"; - "slash" = packages."slash@npm:3.0.0"; - "write-file-atomic" = packages."write-file-atomic@npm:4.0.2"; - }; - }; - "@jest/types@npm:29.2.1" = { - name = "@jest/types"; - reference = "npm:29.2.1"; - linkType = "HARD"; - outputName = "jest-types-29.2.1-6fb73b9831"; - outputHash = "c928554654eb010aeed0e461ca10780e6c6ec2baf2663c0d3d5478454f295f520cf1eddbfda8a4c94fde418704cb881f15c9e03def1534e08e5baec74550f0f0"; - flatName = "types"; - languageName = "node"; - scope = "jest"; - descriptorRange = "npm:^29.2.1"; - checksum = "9/c928554654eb010aeed0e461ca10780e6c6ec2baf2663c0d3d5478454f295f520cf1eddbfda8a4c94fde418704cb881f15c9e03def1534e08e5baec74550f0f0"; - dependencies = { - "@jest/schemas" = packages."@jest/schemas@npm:29.0.0"; - "@types/istanbul-lib-coverage" = packages."@types/istanbul-lib-coverage@npm:2.0.4"; - "@types/istanbul-reports" = packages."@types/istanbul-reports@npm:3.0.1"; - "@types/node" = packages."@types/node@npm:18.11.5"; - "@types/yargs" = packages."@types/yargs@npm:17.0.13"; - "chalk" = packages."chalk@npm:4.1.2"; - }; - }; - "@jridgewell/gen-mapping@npm:0.1.1" = { - name = "@jridgewell/gen-mapping"; - reference = "npm:0.1.1"; - linkType = "HARD"; - outputName = "jridgewell-gen-mapping-0.1.1-3bad172ac6"; - outputHash = "5e4c9ef71682a0d827050cc53f10308825f8a0930ab2b54094381de293f92a53b290091fbe910c17048eae31c1b99c5ef8474ae8267192f83b40023619367331"; - flatName = "gen-mapping"; - languageName = "node"; - scope = "jridgewell"; - descriptorRange = "npm:^0.1.0"; - checksum = "9/5e4c9ef71682a0d827050cc53f10308825f8a0930ab2b54094381de293f92a53b290091fbe910c17048eae31c1b99c5ef8474ae8267192f83b40023619367331"; - dependencies = { - "@jridgewell/set-array" = packages."@jridgewell/set-array@npm:1.1.2"; - "@jridgewell/sourcemap-codec" = packages."@jridgewell/sourcemap-codec@npm:1.4.14"; - }; - }; - "@jridgewell/gen-mapping@npm:0.3.2" = { - name = "@jridgewell/gen-mapping"; - reference = "npm:0.3.2"; - linkType = "HARD"; - outputName = "jridgewell-gen-mapping-0.3.2-c64eeb4a4e"; - outputHash = "b2c9c60a0de99e3cb296a90ef949c422537dce3c39f2b9c0451549a4b0eaecd58290c0e1ddc75538f38073dd477b728dedf3493f25c253946fcd52b0af06e561"; - flatName = "gen-mapping"; - languageName = "node"; - scope = "jridgewell"; - descriptorRange = "npm:^0.3.0"; - checksum = "9/b2c9c60a0de99e3cb296a90ef949c422537dce3c39f2b9c0451549a4b0eaecd58290c0e1ddc75538f38073dd477b728dedf3493f25c253946fcd52b0af06e561"; - dependencies = { - "@jridgewell/set-array" = packages."@jridgewell/set-array@npm:1.1.2"; - "@jridgewell/sourcemap-codec" = packages."@jridgewell/sourcemap-codec@npm:1.4.14"; - "@jridgewell/trace-mapping" = packages."@jridgewell/trace-mapping@npm:0.3.17"; - }; - }; - "@jridgewell/resolve-uri@npm:3.1.0" = { - name = "@jridgewell/resolve-uri"; - reference = "npm:3.1.0"; - linkType = "HARD"; - outputName = "jridgewell-resolve-uri-3.1.0-6ff2351e61"; - outputHash = "6b641bb7e25bc92a9848898cc91a77a390f393f086297ec2336d911387bdd708919c418e74a22732cfc21d0e7300b94306f437d2e9de5ab58b33ebc6c39d6f9d"; - flatName = "resolve-uri"; - languageName = "node"; - scope = "jridgewell"; - descriptorRange = "npm:3.1.0"; - checksum = "9/6b641bb7e25bc92a9848898cc91a77a390f393f086297ec2336d911387bdd708919c418e74a22732cfc21d0e7300b94306f437d2e9de5ab58b33ebc6c39d6f9d"; - }; - "@jridgewell/set-array@npm:1.1.2" = { - name = "@jridgewell/set-array"; - reference = "npm:1.1.2"; - linkType = "HARD"; - outputName = "jridgewell-set-array-1.1.2-45b82d7fb6"; - outputHash = "e7e3f00d10622a6e48cc59041537f99972ed110dca8bfdf575be101c5920d4e4d4fab315d601df9aebbd6b97f4ce857f0347902701ed034a0627ca554b64db0f"; - flatName = "set-array"; - languageName = "node"; - scope = "jridgewell"; - descriptorRange = "npm:^1.0.1"; - checksum = "9/e7e3f00d10622a6e48cc59041537f99972ed110dca8bfdf575be101c5920d4e4d4fab315d601df9aebbd6b97f4ce857f0347902701ed034a0627ca554b64db0f"; - }; - "@jridgewell/source-map@npm:0.3.2" = { - name = "@jridgewell/source-map"; - reference = "npm:0.3.2"; - linkType = "HARD"; - outputName = "jridgewell-source-map-0.3.2-6fd1f37b22"; - outputHash = "66bb5d5cac95793717fea6cfe45c02c0e493f39c320cdaee030a39de033a961cfcb2f5bf105150eb8fada65b6654e72e33efae35349fbaca897414a17c984c34"; - flatName = "source-map"; - languageName = "node"; - scope = "jridgewell"; - descriptorRange = "npm:^0.3.2"; - checksum = "9/66bb5d5cac95793717fea6cfe45c02c0e493f39c320cdaee030a39de033a961cfcb2f5bf105150eb8fada65b6654e72e33efae35349fbaca897414a17c984c34"; - dependencies = { - "@jridgewell/gen-mapping" = packages."@jridgewell/gen-mapping@npm:0.3.2"; - "@jridgewell/trace-mapping" = packages."@jridgewell/trace-mapping@npm:0.3.17"; - }; - }; - "@jridgewell/sourcemap-codec@npm:1.4.14" = { - name = "@jridgewell/sourcemap-codec"; - reference = "npm:1.4.14"; - linkType = "HARD"; - outputName = "jridgewell-sourcemap-codec-1.4.14-f5f0630788"; - outputHash = "2147ea75c966fed8a7d9ed6679b7e8c380fa790a9bea5a64f4ec1c26d24e44b461aa60fc3b228cea03a46708d9d1bcf19508035bf27ad5e8f63d0998ed1d1117"; - flatName = "sourcemap-codec"; - languageName = "node"; - scope = "jridgewell"; - descriptorRange = "npm:1.4.14"; - checksum = "9/2147ea75c966fed8a7d9ed6679b7e8c380fa790a9bea5a64f4ec1c26d24e44b461aa60fc3b228cea03a46708d9d1bcf19508035bf27ad5e8f63d0998ed1d1117"; - }; - "@jridgewell/trace-mapping@npm:0.3.17" = { - name = "@jridgewell/trace-mapping"; - reference = "npm:0.3.17"; - linkType = "HARD"; - outputName = "jridgewell-trace-mapping-0.3.17-57578fd48c"; - outputHash = "388a2f604c1159dd29fdf3077c2a21fd2d322145f24cade868c0a7c55cfc993f3af82dd2e979438d9f06148c38af780abc7c0aa2eddbb34fab41698bb86d82e1"; - flatName = "trace-mapping"; - languageName = "node"; - scope = "jridgewell"; - descriptorRange = "npm:^0.3.14"; - checksum = "9/388a2f604c1159dd29fdf3077c2a21fd2d322145f24cade868c0a7c55cfc993f3af82dd2e979438d9f06148c38af780abc7c0aa2eddbb34fab41698bb86d82e1"; - dependencies = { - "@jridgewell/resolve-uri" = packages."@jridgewell/resolve-uri@npm:3.1.0"; - "@jridgewell/sourcemap-codec" = packages."@jridgewell/sourcemap-codec@npm:1.4.14"; - }; - }; - "@mapbox/node-pre-gyp@npm:1.0.10" = { - name = "@mapbox/node-pre-gyp"; - reference = "npm:1.0.10"; - linkType = "HARD"; - outputName = "mapbox-node-pre-gyp-1.0.10-1811160047"; - outputHash = "e408e430752eed5a1e3603d87ed070d09ba7b1a3fed303da5522b04ce9b06da66a67ef064be350290d788483efc6b7bbf6cbc67a47d04feee4002e52a43bfbaf"; - flatName = "node-pre-gyp"; - languageName = "node"; - scope = "mapbox"; - descriptorRange = "npm:^1.0.0"; - checksum = "9/e408e430752eed5a1e3603d87ed070d09ba7b1a3fed303da5522b04ce9b06da66a67ef064be350290d788483efc6b7bbf6cbc67a47d04feee4002e52a43bfbaf"; - bin = { - "node-pre-gyp" = "bin/node-pre-gyp"; - }; - dependencies = { - "detect-libc" = packages."detect-libc@npm:2.0.1"; - "https-proxy-agent" = packages."https-proxy-agent@npm:5.0.1"; - "make-dir" = packages."make-dir@npm:3.1.0"; - "nopt" = packages."nopt@npm:5.0.0"; - "npmlog" = packages."npmlog@npm:5.0.1"; - "rimraf" = packages."rimraf@npm:3.0.2"; - "semver" = packages."semver@npm:7.3.8"; - "tar" = packages."tar@npm:6.1.11"; - "node-fetch" = packages."node-fetch@virtual:1811160047d7e0f7e43f371e07920c11204416dd6ae0b8461e04538b2f68e9167aca28b60b34dbd287674a5cdd52bd05be5797bbe2f7de916231958cb58055fb#npm:2.6.7"; - }; - }; - "@next/env@npm:12.3.1" = { - name = "@next/env"; - reference = "npm:12.3.1"; - linkType = "HARD"; - outputName = "next-env-12.3.1-a1e6e74d2d"; - outputHash = "ce9077f16b8cbc92058af4251f66ffee9d7372de6c3d81d421134ea12b1ab024b52cabf8c97d388e126997e94de7e406ec4ab55745a933410ccb9dbd3aafa93e"; - flatName = "env"; - languageName = "node"; - scope = "next"; - descriptorRange = "npm:12.3.1"; - checksum = "9/ce9077f16b8cbc92058af4251f66ffee9d7372de6c3d81d421134ea12b1ab024b52cabf8c97d388e126997e94de7e406ec4ab55745a933410ccb9dbd3aafa93e"; - }; - "@next/swc-android-arm-eabi@npm:12.3.1" = { - name = "@next/swc-android-arm-eabi"; - reference = "npm:12.3.1"; - linkType = "HARD"; - outputName = "next-swc-android-arm-eabi-12.3.1-27d8113023"; - outputHash = ""; - shouldBeUnplugged = true; - installCondition = stdenv: (false) && (stdenv.isAarch32); - flatName = "swc-android-arm-eabi"; - languageName = "node"; - scope = "next"; - descriptorRange = "npm:12.3.1"; - }; - "@next/swc-android-arm64@npm:12.3.1" = { - name = "@next/swc-android-arm64"; - reference = "npm:12.3.1"; - linkType = "HARD"; - outputName = "next-swc-android-arm64-12.3.1-4cb31f4a92"; - outputHash = ""; - shouldBeUnplugged = true; - installCondition = stdenv: (false) && (stdenv.isAarch64); - flatName = "swc-android-arm64"; - languageName = "node"; - scope = "next"; - descriptorRange = "npm:12.3.1"; - }; - "@next/swc-darwin-arm64@npm:12.3.1" = { - name = "@next/swc-darwin-arm64"; - reference = "npm:12.3.1"; - linkType = "HARD"; - outputName = "next-swc-darwin-arm64-12.3.1-de8a19538c"; - outputHashByPlatform = { - "aarch64-darwin" = "sha512-4xsDS4PrKPG3+qZC1clxo6bpG69DxeHt7FG34kOwQVDtZUZwp/W8UdBWz3FOTzbNiIyF7OBv+KETYb1MU+Umug=="; - }; - shouldBeUnplugged = true; - installCondition = stdenv: (stdenv.isDarwin) && (stdenv.isAarch64); - flatName = "swc-darwin-arm64"; - languageName = "node"; - scope = "next"; - descriptorRange = "npm:12.3.1"; - }; - "@next/swc-darwin-x64@npm:12.3.1" = { - name = "@next/swc-darwin-x64"; - reference = "npm:12.3.1"; - linkType = "HARD"; - outputName = "next-swc-darwin-x64-12.3.1-94c79d9eeb"; - outputHash = ""; - shouldBeUnplugged = true; - installCondition = stdenv: (stdenv.isDarwin) && (stdenv.isx86_64); - flatName = "swc-darwin-x64"; - languageName = "node"; - scope = "next"; - descriptorRange = "npm:12.3.1"; - }; - "@next/swc-freebsd-x64@npm:12.3.1" = { - name = "@next/swc-freebsd-x64"; - reference = "npm:12.3.1"; - linkType = "HARD"; - outputName = "next-swc-freebsd-x64-12.3.1-e70485dff7"; - outputHash = ""; - shouldBeUnplugged = true; - installCondition = stdenv: (false) && (stdenv.isx86_64); - flatName = "swc-freebsd-x64"; - languageName = "node"; - scope = "next"; - descriptorRange = "npm:12.3.1"; - }; - "@next/swc-linux-arm-gnueabihf@npm:12.3.1" = { - name = "@next/swc-linux-arm-gnueabihf"; - reference = "npm:12.3.1"; - linkType = "HARD"; - outputName = "next-swc-linux-arm-gnueabihf-12.3.1-ae166387a2"; - outputHash = ""; - shouldBeUnplugged = true; - installCondition = stdenv: (stdenv.isLinux) && (stdenv.isAarch32); - flatName = "swc-linux-arm-gnueabihf"; - languageName = "node"; - scope = "next"; - descriptorRange = "npm:12.3.1"; - }; - "@next/swc-linux-arm64-gnu@npm:12.3.1" = { - name = "@next/swc-linux-arm64-gnu"; - reference = "npm:12.3.1"; - linkType = "HARD"; - outputName = "next-swc-linux-arm64-gnu-12.3.1-97fa91b813"; - outputHash = ""; - shouldBeUnplugged = true; - installCondition = stdenv: (stdenv.isLinux) && (stdenv.isAarch64); - flatName = "swc-linux-arm64-gnu"; - languageName = "node"; - scope = "next"; - descriptorRange = "npm:12.3.1"; - }; - "@next/swc-linux-arm64-musl@npm:12.3.1" = { - name = "@next/swc-linux-arm64-musl"; - reference = "npm:12.3.1"; - linkType = "HARD"; - outputName = "next-swc-linux-arm64-musl-12.3.1-9fa31b826f"; - outputHash = ""; - shouldBeUnplugged = true; - installCondition = stdenv: (stdenv.isLinux) && (stdenv.isAarch64) && (false); - flatName = "swc-linux-arm64-musl"; - languageName = "node"; - scope = "next"; - descriptorRange = "npm:12.3.1"; - }; - "@next/swc-linux-x64-gnu@npm:12.3.1" = { - name = "@next/swc-linux-x64-gnu"; - reference = "npm:12.3.1"; - linkType = "HARD"; - outputName = "next-swc-linux-x64-gnu-12.3.1-1a0f94dd1d"; - outputHashByPlatform = { - "x86_64-linux" = "sha512-4yXKf3VLGHtR4xsNYbqpxGAmthsENlwX8eZjXHd5PxADNws8MwkdcwLspDxifrAdcuO68WVM3UiTNUuZN/Vt0A=="; - }; - shouldBeUnplugged = true; - installCondition = stdenv: (stdenv.isLinux) && (stdenv.isx86_64); - flatName = "swc-linux-x64-gnu"; - languageName = "node"; - scope = "next"; - descriptorRange = "npm:12.3.1"; - }; - "@next/swc-linux-x64-musl@npm:12.3.1" = { - name = "@next/swc-linux-x64-musl"; - reference = "npm:12.3.1"; - linkType = "HARD"; - outputName = "next-swc-linux-x64-musl-12.3.1-ea79024436"; - outputHash = ""; - shouldBeUnplugged = true; - installCondition = stdenv: (stdenv.isLinux) && (stdenv.isx86_64) && (false); - flatName = "swc-linux-x64-musl"; - languageName = "node"; - scope = "next"; - descriptorRange = "npm:12.3.1"; - }; - "@next/swc-win32-arm64-msvc@npm:12.3.1" = { - name = "@next/swc-win32-arm64-msvc"; - reference = "npm:12.3.1"; - linkType = "HARD"; - outputName = "next-swc-win32-arm64-msvc-12.3.1-2856011871"; - outputHash = ""; - shouldBeUnplugged = true; - installCondition = stdenv: (false) && (stdenv.isAarch64); - flatName = "swc-win32-arm64-msvc"; - languageName = "node"; - scope = "next"; - descriptorRange = "npm:12.3.1"; - }; - "@next/swc-win32-ia32-msvc@npm:12.3.1" = { - name = "@next/swc-win32-ia32-msvc"; - reference = "npm:12.3.1"; - linkType = "HARD"; - outputName = "next-swc-win32-ia32-msvc-12.3.1-46b6193df8"; - outputHash = ""; - shouldBeUnplugged = true; - installCondition = stdenv: (false) && (stdenv.isi686); - flatName = "swc-win32-ia32-msvc"; - languageName = "node"; - scope = "next"; - descriptorRange = "npm:12.3.1"; - }; - "@next/swc-win32-x64-msvc@npm:12.3.1" = { - name = "@next/swc-win32-x64-msvc"; - reference = "npm:12.3.1"; - linkType = "HARD"; - outputName = "next-swc-win32-x64-msvc-12.3.1-07986b4667"; - outputHash = ""; - shouldBeUnplugged = true; - installCondition = stdenv: (false) && (stdenv.isx86_64); - flatName = "swc-win32-x64-msvc"; - languageName = "node"; - scope = "next"; - descriptorRange = "npm:12.3.1"; - }; - "@npmcli/fs@npm:2.1.2" = { - name = "@npmcli/fs"; - reference = "npm:2.1.2"; - linkType = "HARD"; - outputName = "npmcli-fs-2.1.2-08d434e77b"; - outputHash = "82bc61f832f45e2033ea3522f66a94de50e5561577b1f3af226576ad5467c240375eba948d4ea1ca146e7871740fb3005e7c4f3f1ab616e79a5a5cedd9fdb789"; - flatName = "fs"; - languageName = "node"; - scope = "npmcli"; - descriptorRange = "npm:^2.1.0"; - checksum = "9/82bc61f832f45e2033ea3522f66a94de50e5561577b1f3af226576ad5467c240375eba948d4ea1ca146e7871740fb3005e7c4f3f1ab616e79a5a5cedd9fdb789"; - dependencies = { - "@gar/promisify" = packages."@gar/promisify@npm:1.1.3"; - "semver" = packages."semver@npm:7.3.8"; - }; - }; - "@npmcli/move-file@npm:2.0.1" = { - name = "@npmcli/move-file"; - reference = "npm:2.0.1"; - linkType = "HARD"; - outputName = "npmcli-move-file-2.0.1-b593d8f741"; - outputHash = "3557a12cd18dfb5bcd5d5cf910b783832af50ffba28fd5bb510c3c56b2df0481558b9ec6d3008e8eeefb9f2944bdc1d34832b1a8bbf6ad1cd2f256bf12c84ff0"; - flatName = "move-file"; - languageName = "node"; - scope = "npmcli"; - descriptorRange = "npm:^2.0.0"; - checksum = "9/3557a12cd18dfb5bcd5d5cf910b783832af50ffba28fd5bb510c3c56b2df0481558b9ec6d3008e8eeefb9f2944bdc1d34832b1a8bbf6ad1cd2f256bf12c84ff0"; - dependencies = { - "mkdirp" = packages."mkdirp@npm:1.0.4"; - "rimraf" = packages."rimraf@npm:3.0.2"; - }; - }; - "@redux-saga/deferred@npm:1.2.1" = { - name = "@redux-saga/deferred"; - reference = "npm:1.2.1"; - linkType = "HARD"; - outputName = "redux-saga-deferred-1.2.1-ec57ca1b3b"; - outputHash = "efc2e19f5e551169d01572bac5089b76d14c939e8ccf9e4dfe6130092b72e9ac2e5b9691d03dc1fddd07fda14e0129f8a6cac3d09176aa90b928a7d35e69ab31"; - flatName = "deferred"; - languageName = "node"; - scope = "redux-saga"; - descriptorRange = "npm:^1.1.2"; - checksum = "9/efc2e19f5e551169d01572bac5089b76d14c939e8ccf9e4dfe6130092b72e9ac2e5b9691d03dc1fddd07fda14e0129f8a6cac3d09176aa90b928a7d35e69ab31"; - }; - "@redux-saga/delay-p@npm:1.2.1" = { - name = "@redux-saga/delay-p"; - reference = "npm:1.2.1"; - linkType = "HARD"; - outputName = "redux-saga-delay-p-1.2.1-aed55ef6d3"; - outputHash = "f68e0f21869699414198941defeaca821bb7a7a6b3704a69013eba270780d410e095f3344723dbc4f27acbb6175b4a9f984f342508a5a02f3b81819b5e3592af"; - flatName = "delay-p"; - languageName = "node"; - scope = "redux-saga"; - descriptorRange = "npm:^1.1.2"; - checksum = "9/f68e0f21869699414198941defeaca821bb7a7a6b3704a69013eba270780d410e095f3344723dbc4f27acbb6175b4a9f984f342508a5a02f3b81819b5e3592af"; - dependencies = { - "@redux-saga/symbols" = packages."@redux-saga/symbols@npm:1.1.3"; - }; - }; - "@redux-saga/is@npm:1.1.3" = { - name = "@redux-saga/is"; - reference = "npm:1.1.3"; - linkType = "HARD"; - outputName = "redux-saga-is-1.1.3-b810d8c710"; - outputHash = "99f6de35e4ab7acac3dc9117370634099e84a2c03fa1e2bb45838594f38b405294065ef53a8598ce64b67d72e3656d52ec204baa68b84b469d69e36a21e7ac36"; - flatName = "is"; - languageName = "node"; - scope = "redux-saga"; - descriptorRange = "npm:^1.1.2"; - checksum = "9/99f6de35e4ab7acac3dc9117370634099e84a2c03fa1e2bb45838594f38b405294065ef53a8598ce64b67d72e3656d52ec204baa68b84b469d69e36a21e7ac36"; - dependencies = { - "@redux-saga/symbols" = packages."@redux-saga/symbols@npm:1.1.3"; - "@redux-saga/types" = packages."@redux-saga/types@npm:1.2.1"; - }; - }; - "@redux-saga/symbols@npm:1.1.3" = { - name = "@redux-saga/symbols"; - reference = "npm:1.1.3"; - linkType = "HARD"; - outputName = "redux-saga-symbols-1.1.3-d95f758fa4"; - outputHash = "716a9a8be363ce9ac6b1825a2c0fb8d7576771bedb3f9357c34c441e7604ecd2a14a28a267225035e00953125f28b261067a3f0e3f27721df1d86e48da936c19"; - flatName = "symbols"; - languageName = "node"; - scope = "redux-saga"; - descriptorRange = "npm:^1.1.2"; - checksum = "9/716a9a8be363ce9ac6b1825a2c0fb8d7576771bedb3f9357c34c441e7604ecd2a14a28a267225035e00953125f28b261067a3f0e3f27721df1d86e48da936c19"; - }; - "@redux-saga/types@npm:1.2.1" = { - name = "@redux-saga/types"; - reference = "npm:1.2.1"; - linkType = "HARD"; - outputName = "redux-saga-types-1.2.1-e3cea8c4d4"; - outputHash = "d45f477e7ef9c319e8fb955f0d09cc386edee184447eef3c566047b7867c491291799fe95271d2bc1dd41d224ee6be25c31bc7708d9ffd4f4d4ba1c9df6208e2"; - flatName = "types"; - languageName = "node"; - scope = "redux-saga"; - descriptorRange = "npm:^1.1.0"; - checksum = "9/d45f477e7ef9c319e8fb955f0d09cc386edee184447eef3c566047b7867c491291799fe95271d2bc1dd41d224ee6be25c31bc7708d9ffd4f4d4ba1c9df6208e2"; - }; - "@sinclair/typebox@npm:0.24.50" = { - name = "@sinclair/typebox"; - reference = "npm:0.24.50"; - linkType = "HARD"; - outputName = "sinclair-typebox-0.24.50-aa30e569c6"; - outputHash = "d4a561e5d9ef8616b83635c3b94b4e14283b6aa8e702848d2d30a710ae476c149b0b6353dcbf8db76e48b532752e91731856bde0139f49e97daece0bbb761328"; - flatName = "typebox"; - languageName = "node"; - scope = "sinclair"; - descriptorRange = "npm:^0.24.1"; - checksum = "9/d4a561e5d9ef8616b83635c3b94b4e14283b6aa8e702848d2d30a710ae476c149b0b6353dcbf8db76e48b532752e91731856bde0139f49e97daece0bbb761328"; - }; - "@sinonjs/commons@npm:1.8.3" = { - name = "@sinonjs/commons"; - reference = "npm:1.8.3"; - linkType = "HARD"; - outputName = "sinonjs-commons-1.8.3-30cf78d93f"; - outputHash = "4c217eade73eb5e8eef0d7e4acc93c30b115bcc33cb3269a7c13adec0202d28698ba4250377d39ae1cc6d9ad07a62481f9203d14b6ee5ac4052efdb3e2fd4e7c"; - flatName = "commons"; - languageName = "node"; - scope = "sinonjs"; - descriptorRange = "npm:^1.7.0"; - checksum = "9/4c217eade73eb5e8eef0d7e4acc93c30b115bcc33cb3269a7c13adec0202d28698ba4250377d39ae1cc6d9ad07a62481f9203d14b6ee5ac4052efdb3e2fd4e7c"; - dependencies = { - "type-detect" = packages."type-detect@npm:4.0.8"; - }; - }; - "@sinonjs/fake-timers@npm:9.1.2" = { - name = "@sinonjs/fake-timers"; - reference = "npm:9.1.2"; - linkType = "HARD"; - outputName = "sinonjs-fake-timers-9.1.2-3ff37ab7fb"; - outputHash = "ba7d46e9ff8074f3ccf14c2a6fc4c3beb3c784d6275342a40735b3f6a3c7adf7ccdaa222a58c7eaddb9ecba389aa037b3344a42f3541e27a4e1a5fcecde54d7c"; - flatName = "fake-timers"; - languageName = "node"; - scope = "sinonjs"; - descriptorRange = "npm:^9.1.2"; - checksum = "9/ba7d46e9ff8074f3ccf14c2a6fc4c3beb3c784d6275342a40735b3f6a3c7adf7ccdaa222a58c7eaddb9ecba389aa037b3344a42f3541e27a4e1a5fcecde54d7c"; - dependencies = { - "@sinonjs/commons" = packages."@sinonjs/commons@npm:1.8.3"; - }; - }; - "@swc/helpers@npm:0.4.11" = { - name = "@swc/helpers"; - reference = "npm:0.4.11"; - linkType = "HARD"; - outputName = "swc-helpers-0.4.11-d20747f9c8"; - outputHash = "beb0124de3b8e1108325e81f46d85b987118a804e7fb347d6fdc28a4be0df80dff57e7031ce75cc8ac0411644ffd93d352cb73ed9c32ec057438c06cf2d98e9b"; - flatName = "helpers"; - languageName = "node"; - scope = "swc"; - descriptorRange = "npm:0.4.11"; - checksum = "9/beb0124de3b8e1108325e81f46d85b987118a804e7fb347d6fdc28a4be0df80dff57e7031ce75cc8ac0411644ffd93d352cb73ed9c32ec057438c06cf2d98e9b"; - dependencies = { - "tslib" = packages."tslib@npm:2.4.0"; - }; - }; - "@tootallnate/once@npm:2.0.0" = { - name = "@tootallnate/once"; - reference = "npm:2.0.0"; - linkType = "HARD"; - outputName = "tootallnate-once-2.0.0-e36cf4f140"; - outputHash = "d9f7f2130a0a2e1ea50f3bc90b83a8b99c913bbb80d7a1706f7f4730292ef299d18443c3b57a42dfb17c6559c9085e13f751b1b6c969bcff7bee3eeaf9da4dec"; - flatName = "once"; - languageName = "node"; - scope = "tootallnate"; - descriptorRange = "npm:2"; - checksum = "9/d9f7f2130a0a2e1ea50f3bc90b83a8b99c913bbb80d7a1706f7f4730292ef299d18443c3b57a42dfb17c6559c9085e13f751b1b6c969bcff7bee3eeaf9da4dec"; - }; - "@types/babel__core@npm:7.1.19" = { - name = "@types/babel__core"; - reference = "npm:7.1.19"; - linkType = "HARD"; - outputName = "types-babel__core-7.1.19-bd8ad53364"; - outputHash = "c357dd2c14cda36b47c48d1690a139e7fe336e856b335b100420821e583895cedaa6dcf4241d7ae6869f0d7113a063f0f2823d8ce3d847ec5b9622cd6363b8ad"; - flatName = "babel__core"; - languageName = "node"; - scope = "types"; - descriptorRange = "npm:^7.1.14"; - checksum = "9/c357dd2c14cda36b47c48d1690a139e7fe336e856b335b100420821e583895cedaa6dcf4241d7ae6869f0d7113a063f0f2823d8ce3d847ec5b9622cd6363b8ad"; - dependencies = { - "@babel/parser" = packages."@babel/parser@npm:7.19.6"; - "@babel/types" = packages."@babel/types@npm:7.19.4"; - "@types/babel__generator" = packages."@types/babel__generator@npm:7.6.4"; - "@types/babel__template" = packages."@types/babel__template@npm:7.4.1"; - "@types/babel__traverse" = packages."@types/babel__traverse@npm:7.18.2"; - }; - }; - "@types/babel__generator@npm:7.6.4" = { - name = "@types/babel__generator"; - reference = "npm:7.6.4"; - linkType = "HARD"; - outputName = "types-babel__generator-7.6.4-03e776f956"; - outputHash = "2e66f16ed0a281f0dc050a8ef4cc9866b790cef758d8defe7c51cb045f6226d2224379fd18d7a17618619b3c6db863aff29db75eb1110c603822455e5985c27d"; - flatName = "babel__generator"; - languageName = "node"; - scope = "types"; - descriptorRange = "npm:*"; - checksum = "9/2e66f16ed0a281f0dc050a8ef4cc9866b790cef758d8defe7c51cb045f6226d2224379fd18d7a17618619b3c6db863aff29db75eb1110c603822455e5985c27d"; - dependencies = { - "@babel/types" = packages."@babel/types@npm:7.19.4"; - }; - }; - "@types/babel__template@npm:7.4.1" = { - name = "@types/babel__template"; - reference = "npm:7.4.1"; - linkType = "HARD"; - outputName = "types-babel__template-7.4.1-fe1db49e53"; - outputHash = "ba9a947c2d7f52aae25cc4d9d1a2e47901e43f04a85b9d05603411761cd0253f983f41e34b771703328d8608150ba7292bdad4fffc20177ee42bc621f176e083"; - flatName = "babel__template"; - languageName = "node"; - scope = "types"; - descriptorRange = "npm:*"; - checksum = "9/ba9a947c2d7f52aae25cc4d9d1a2e47901e43f04a85b9d05603411761cd0253f983f41e34b771703328d8608150ba7292bdad4fffc20177ee42bc621f176e083"; - dependencies = { - "@babel/parser" = packages."@babel/parser@npm:7.19.6"; - "@babel/types" = packages."@babel/types@npm:7.19.4"; - }; - }; - "@types/babel__traverse@npm:7.18.2" = { - name = "@types/babel__traverse"; - reference = "npm:7.18.2"; - linkType = "HARD"; - outputName = "types-babel__traverse-7.18.2-17d99e224e"; - outputHash = "659edbf959df98691eea5232ad11f447245528da6a3dceec6508c2087f326f4809f0e42420c25fa18957faf1519a355d3d3feceb91b9b7b4957475fb7fe4b4c3"; - flatName = "babel__traverse"; - languageName = "node"; - scope = "types"; - descriptorRange = "npm:^7.0.6"; - checksum = "9/659edbf959df98691eea5232ad11f447245528da6a3dceec6508c2087f326f4809f0e42420c25fa18957faf1519a355d3d3feceb91b9b7b4957475fb7fe4b4c3"; - dependencies = { - "@babel/types" = packages."@babel/types@npm:7.19.4"; - }; - }; - "@types/eslint-scope@npm:3.7.4" = { - name = "@types/eslint-scope"; - reference = "npm:3.7.4"; - linkType = "HARD"; - outputName = "types-eslint-scope-3.7.4-c11d226d71"; - outputHash = "c0a026bc2bca7e1e41018a6e95abd32e165c2c515739ac9e96fd45ccf5d0fff93c96556edc243d5d23f4cca0c9c752572b72df425555a2af8d6b043fa5e104f2"; - flatName = "eslint-scope"; - languageName = "node"; - scope = "types"; - descriptorRange = "npm:^3.7.3"; - checksum = "9/c0a026bc2bca7e1e41018a6e95abd32e165c2c515739ac9e96fd45ccf5d0fff93c96556edc243d5d23f4cca0c9c752572b72df425555a2af8d6b043fa5e104f2"; - dependencies = { - "@types/eslint" = packages."@types/eslint@npm:8.4.8"; - "@types/estree" = packages."@types/estree@npm:1.0.0"; - }; - }; - "@types/eslint@npm:8.4.8" = { - name = "@types/eslint"; - reference = "npm:8.4.8"; - linkType = "HARD"; - outputName = "types-eslint-8.4.8-f5b6d330b4"; - outputHash = "4814ab03555e7810ba0ef87d21bffef1103d9d9d8114787e4714a1cca6296b3956530e3c5c3479e826c4234e6a27f287d39c27c028098122e3fc2c00da4867ac"; - flatName = "eslint"; - languageName = "node"; - scope = "types"; - descriptorRange = "npm:*"; - checksum = "9/4814ab03555e7810ba0ef87d21bffef1103d9d9d8114787e4714a1cca6296b3956530e3c5c3479e826c4234e6a27f287d39c27c028098122e3fc2c00da4867ac"; - dependencies = { - "@types/estree" = packages."@types/estree@npm:1.0.0"; - "@types/json-schema" = packages."@types/json-schema@npm:7.0.11"; - }; - }; - "@types/estree@npm:0.0.51" = { - name = "@types/estree"; - reference = "npm:0.0.51"; - linkType = "HARD"; - outputName = "types-estree-0.0.51-bc20719267"; - outputHash = "a5fbdddce8a2b79477d0cb92d9998e42d5ae096d98ed0245983551423fd849c0e34a9877a2bb503dbd6716265d03f520155c2047996460872f82f25e1811e0c7"; - flatName = "estree"; - languageName = "node"; - scope = "types"; - descriptorRange = "npm:^0.0.51"; - checksum = "9/a5fbdddce8a2b79477d0cb92d9998e42d5ae096d98ed0245983551423fd849c0e34a9877a2bb503dbd6716265d03f520155c2047996460872f82f25e1811e0c7"; - }; - "@types/estree@npm:1.0.0" = { - name = "@types/estree"; - reference = "npm:1.0.0"; - linkType = "HARD"; - outputName = "types-estree-1.0.0-eddde5b631"; - outputHash = "474df434e3a469cb7a68d44c8b7ac3a21bca344fa3b49651c3451d0f3662ff0c3b2ba52149cbc5b9c9a9f3f1ac37958c163ef29b65a8b36fccb5ccb2acfc9b08"; - flatName = "estree"; - languageName = "node"; - scope = "types"; - descriptorRange = "npm:*"; - checksum = "9/474df434e3a469cb7a68d44c8b7ac3a21bca344fa3b49651c3451d0f3662ff0c3b2ba52149cbc5b9c9a9f3f1ac37958c163ef29b65a8b36fccb5ccb2acfc9b08"; - }; - "@types/graceful-fs@npm:4.1.5" = { - name = "@types/graceful-fs"; - reference = "npm:4.1.5"; - linkType = "HARD"; - outputName = "types-graceful-fs-4.1.5-91d62e1050"; - outputHash = "2785f1a962029597d01799bf96b400b4bedcf5295f379e0c08f2d1faa656fece563ecb655e85d379a61efdd4c99e5da16cce9f591c5a311f3354d86a27dab498"; - flatName = "graceful-fs"; - languageName = "node"; - scope = "types"; - descriptorRange = "npm:^4.1.3"; - checksum = "9/2785f1a962029597d01799bf96b400b4bedcf5295f379e0c08f2d1faa656fece563ecb655e85d379a61efdd4c99e5da16cce9f591c5a311f3354d86a27dab498"; - dependencies = { - "@types/node" = packages."@types/node@npm:18.11.5"; - }; - }; - "@types/istanbul-lib-coverage@npm:2.0.4" = { - name = "@types/istanbul-lib-coverage"; - reference = "npm:2.0.4"; - linkType = "HARD"; - outputName = "types-istanbul-lib-coverage-2.0.4-734954bb56"; - outputHash = "c866b0c4f8d6f7167a5f65900d4ab792cdeae4df98f13c6b26f69d8abf31d4ef599d1b6938164ac1d0d1c7cdfcc3ca7174ac0176c788c2a019ee2fa815cf1e01"; - flatName = "istanbul-lib-coverage"; - languageName = "node"; - scope = "types"; - descriptorRange = "npm:^2.0.0"; - checksum = "9/c866b0c4f8d6f7167a5f65900d4ab792cdeae4df98f13c6b26f69d8abf31d4ef599d1b6938164ac1d0d1c7cdfcc3ca7174ac0176c788c2a019ee2fa815cf1e01"; - }; - "@types/istanbul-lib-report@npm:3.0.0" = { - name = "@types/istanbul-lib-report"; - reference = "npm:3.0.0"; - linkType = "HARD"; - outputName = "types-istanbul-lib-report-3.0.0-50de3e6b3b"; - outputHash = "ed2b2a214e247bb24aede74cde6edf00989e575dc8827e160f63ced1816d227f6fb370c2d9b5fa56f9b5bd7202804f272a4fe05ac51461982760730966e39efb"; - flatName = "istanbul-lib-report"; - languageName = "node"; - scope = "types"; - descriptorRange = "npm:*"; - checksum = "9/ed2b2a214e247bb24aede74cde6edf00989e575dc8827e160f63ced1816d227f6fb370c2d9b5fa56f9b5bd7202804f272a4fe05ac51461982760730966e39efb"; - dependencies = { - "@types/istanbul-lib-coverage" = packages."@types/istanbul-lib-coverage@npm:2.0.4"; - }; - }; - "@types/istanbul-reports@npm:3.0.1" = { - name = "@types/istanbul-reports"; - reference = "npm:3.0.1"; - linkType = "HARD"; - outputName = "types-istanbul-reports-3.0.1-770e825002"; - outputHash = "6ebbdef0b132af7f491f1ad8723352fd38866062e977c36e6684768e874216fae154215b4f952f59577b9a087bcd1cff64992077dd853515a0c4196154fa360d"; - flatName = "istanbul-reports"; - languageName = "node"; - scope = "types"; - descriptorRange = "npm:^3.0.0"; - checksum = "9/6ebbdef0b132af7f491f1ad8723352fd38866062e977c36e6684768e874216fae154215b4f952f59577b9a087bcd1cff64992077dd853515a0c4196154fa360d"; - dependencies = { - "@types/istanbul-lib-report" = packages."@types/istanbul-lib-report@npm:3.0.0"; - }; - }; - "@types/json-schema@npm:7.0.11" = { - name = "@types/json-schema"; - reference = "npm:7.0.11"; - linkType = "HARD"; - outputName = "types-json-schema-7.0.11-79462ae5ca"; - outputHash = "8e5c6dd393411418e3d803ab0a09862b4ed47f73e7ed990f3b907dd41cc4d2f2b4f7aed9a39c7fd2acaa80314ac1397a5e2e5e6c25a338f01bbfba708cc70d8e"; - flatName = "json-schema"; - languageName = "node"; - scope = "types"; - descriptorRange = "npm:^7.0.8"; - checksum = "9/8e5c6dd393411418e3d803ab0a09862b4ed47f73e7ed990f3b907dd41cc4d2f2b4f7aed9a39c7fd2acaa80314ac1397a5e2e5e6c25a338f01bbfba708cc70d8e"; - }; - "@types/node@npm:18.11.5" = { - name = "@types/node"; - reference = "npm:18.11.5"; - linkType = "HARD"; - outputName = "types-node-18.11.5-bb743e57ba"; - outputHash = "6a2d877520bf66640365f507b8eab8039bf8edb46ca94c8fb01a20074837af7cb8042194bb8b89771f3c7dec254860bf421fa058fa2e2d239372056aa421c6ee"; - flatName = "node"; - languageName = "node"; - scope = "types"; - descriptorRange = "npm:*"; - checksum = "9/6a2d877520bf66640365f507b8eab8039bf8edb46ca94c8fb01a20074837af7cb8042194bb8b89771f3c7dec254860bf421fa058fa2e2d239372056aa421c6ee"; - }; - "@types/prettier@npm:2.7.1" = { - name = "@types/prettier"; - reference = "npm:2.7.1"; - linkType = "HARD"; - outputName = "types-prettier-2.7.1-d46ada27e6"; - outputHash = "7edc43b829b0047573c1328259a1ccfee3e0127b031b8e5a4b7115e9f375abed195d1f42ee350590372041cc0f0d5b529e2dbac1198989a050f38e1ec5e19760"; - flatName = "prettier"; - languageName = "node"; - scope = "types"; - descriptorRange = "npm:^2.1.5"; - checksum = "9/7edc43b829b0047573c1328259a1ccfee3e0127b031b8e5a4b7115e9f375abed195d1f42ee350590372041cc0f0d5b529e2dbac1198989a050f38e1ec5e19760"; - }; - "@types/stack-utils@npm:2.0.1" = { - name = "@types/stack-utils"; - reference = "npm:2.0.1"; - linkType = "HARD"; - outputName = "types-stack-utils-2.0.1-867718ab70"; - outputHash = "a961a1d043517a2b6f7fc326fbce12cd3ba4a8dfc87b63ef2aa7cd991f6a8c7bc87942a51a792c3f922e34e3898d9de3139f2f6636a326a7ec4635389b822bd9"; - flatName = "stack-utils"; - languageName = "node"; - scope = "types"; - descriptorRange = "npm:^2.0.0"; - checksum = "9/a961a1d043517a2b6f7fc326fbce12cd3ba4a8dfc87b63ef2aa7cd991f6a8c7bc87942a51a792c3f922e34e3898d9de3139f2f6636a326a7ec4635389b822bd9"; - }; - "@types/yargs-parser@npm:21.0.0" = { - name = "@types/yargs-parser"; - reference = "npm:21.0.0"; - linkType = "HARD"; - outputName = "types-yargs-parser-21.0.0-c8a3b32c52"; - outputHash = "81725f71214a1b174d970177759871e9c87f186cd37fe4638b0ae39ad1ee630fa488525048a9a582cd2e27585c4c253198f2d5756e1a5a161988783e23630f3d"; - flatName = "yargs-parser"; - languageName = "node"; - scope = "types"; - descriptorRange = "npm:*"; - checksum = "9/81725f71214a1b174d970177759871e9c87f186cd37fe4638b0ae39ad1ee630fa488525048a9a582cd2e27585c4c253198f2d5756e1a5a161988783e23630f3d"; - }; - "@types/yargs@npm:17.0.13" = { - name = "@types/yargs"; - reference = "npm:17.0.13"; - linkType = "HARD"; - outputName = "types-yargs-17.0.13-67226ed55b"; - outputHash = "f3373b614ceda53c8639c635cf4456db29c144e1ae78794d5ccfbfe929811b69eced0bdffe8a3c973544bc2b685f222560ba5e8666e987c7008545d23f2d226a"; - flatName = "yargs"; - languageName = "node"; - scope = "types"; - descriptorRange = "npm:^17.0.8"; - checksum = "9/f3373b614ceda53c8639c635cf4456db29c144e1ae78794d5ccfbfe929811b69eced0bdffe8a3c973544bc2b685f222560ba5e8666e987c7008545d23f2d226a"; - dependencies = { - "@types/yargs-parser" = packages."@types/yargs-parser@npm:21.0.0"; - }; - }; - "@webassemblyjs/ast@npm:1.11.1" = { - name = "@webassemblyjs/ast"; - reference = "npm:1.11.1"; - linkType = "HARD"; - outputName = "webassemblyjs-ast-1.11.1-623d3d973e"; - outputHash = "159a27ef59e21bcdf09ff5c79d115d5c24fe27ed08bc15e3c20884031e8820cce3e3c83ec4ba87a9834d422cffcfa3cb4506541ea9cfcd86394d9a8a7a9771b4"; - flatName = "ast"; - languageName = "node"; - scope = "webassemblyjs"; - descriptorRange = "npm:1.11.1"; - checksum = "9/159a27ef59e21bcdf09ff5c79d115d5c24fe27ed08bc15e3c20884031e8820cce3e3c83ec4ba87a9834d422cffcfa3cb4506541ea9cfcd86394d9a8a7a9771b4"; - dependencies = { - "@webassemblyjs/helper-numbers" = packages."@webassemblyjs/helper-numbers@npm:1.11.1"; - "@webassemblyjs/helper-wasm-bytecode" = packages."@webassemblyjs/helper-wasm-bytecode@npm:1.11.1"; - }; - }; - "@webassemblyjs/floating-point-hex-parser@npm:1.11.1" = { - name = "@webassemblyjs/floating-point-hex-parser"; - reference = "npm:1.11.1"; - linkType = "HARD"; - outputName = "webassemblyjs-floating-point-hex-parser-1.11.1-f8af5c0037"; - outputHash = "aa15ad9f7681f813b5e09041d000fd8285e458a90e0881ad3d26e746a7588889c19de27b1e09a3beba2d643c5bdaf698a8161dba2b56188c09bdfdd9f28abf6d"; - flatName = "floating-point-hex-parser"; - languageName = "node"; - scope = "webassemblyjs"; - descriptorRange = "npm:1.11.1"; - checksum = "9/aa15ad9f7681f813b5e09041d000fd8285e458a90e0881ad3d26e746a7588889c19de27b1e09a3beba2d643c5bdaf698a8161dba2b56188c09bdfdd9f28abf6d"; - }; - "@webassemblyjs/helper-api-error@npm:1.11.1" = { - name = "@webassemblyjs/helper-api-error"; - reference = "npm:1.11.1"; - linkType = "HARD"; - outputName = "webassemblyjs-helper-api-error-1.11.1-b839d59053"; - outputHash = "4ce8d9f8bec21c9a797a84c7219e590854dc01cc72f3c51a8defd7baa4ff93fc799ec686f30475b425136e8dc8c937428142209b006fd62bef8ac35370108549"; - flatName = "helper-api-error"; - languageName = "node"; - scope = "webassemblyjs"; - descriptorRange = "npm:1.11.1"; - checksum = "9/4ce8d9f8bec21c9a797a84c7219e590854dc01cc72f3c51a8defd7baa4ff93fc799ec686f30475b425136e8dc8c937428142209b006fd62bef8ac35370108549"; - }; - "@webassemblyjs/helper-buffer@npm:1.11.1" = { - name = "@webassemblyjs/helper-buffer"; - reference = "npm:1.11.1"; - linkType = "HARD"; - outputName = "webassemblyjs-helper-buffer-1.11.1-6afb1ef4aa"; - outputHash = "7119688f189d2715cb14ccc1d6203be6721d8d280bbbf8d5198ab5b49e89f6a16d0cfc675bb8385fe73b20d0da2a52fbc4cc27608074fb68a7762ab9f990469d"; - flatName = "helper-buffer"; - languageName = "node"; - scope = "webassemblyjs"; - descriptorRange = "npm:1.11.1"; - checksum = "9/7119688f189d2715cb14ccc1d6203be6721d8d280bbbf8d5198ab5b49e89f6a16d0cfc675bb8385fe73b20d0da2a52fbc4cc27608074fb68a7762ab9f990469d"; - }; - "@webassemblyjs/helper-numbers@npm:1.11.1" = { - name = "@webassemblyjs/helper-numbers"; - reference = "npm:1.11.1"; - linkType = "HARD"; - outputName = "webassemblyjs-helper-numbers-1.11.1-a41f7439eb"; - outputHash = "effd79c29be006c3abc8f4f501f56da1408cb86bae4aaffe2562902ffee28c794e49dac64ba306079f624a011fdab0c7e0c26bd5d873cabd237df7d7e26a240c"; - flatName = "helper-numbers"; - languageName = "node"; - scope = "webassemblyjs"; - descriptorRange = "npm:1.11.1"; - checksum = "9/effd79c29be006c3abc8f4f501f56da1408cb86bae4aaffe2562902ffee28c794e49dac64ba306079f624a011fdab0c7e0c26bd5d873cabd237df7d7e26a240c"; - dependencies = { - "@webassemblyjs/floating-point-hex-parser" = packages."@webassemblyjs/floating-point-hex-parser@npm:1.11.1"; - "@webassemblyjs/helper-api-error" = packages."@webassemblyjs/helper-api-error@npm:1.11.1"; - "@xtuc/long" = packages."@xtuc/long@npm:4.2.2"; - }; - }; - "@webassemblyjs/helper-wasm-bytecode@npm:1.11.1" = { - name = "@webassemblyjs/helper-wasm-bytecode"; - reference = "npm:1.11.1"; - linkType = "HARD"; - outputName = "webassemblyjs-helper-wasm-bytecode-1.11.1-84f0ee4c30"; - outputHash = "ce787ae26e2202205d6d3a85e5dc1c4b7fc3b0cdddf0bf0b371655e223c2962fa3299f8b1922c27ee405f99ee5c7b798824f0b8c1609321db0482e7f78c77281"; - flatName = "helper-wasm-bytecode"; - languageName = "node"; - scope = "webassemblyjs"; - descriptorRange = "npm:1.11.1"; - checksum = "9/ce787ae26e2202205d6d3a85e5dc1c4b7fc3b0cdddf0bf0b371655e223c2962fa3299f8b1922c27ee405f99ee5c7b798824f0b8c1609321db0482e7f78c77281"; - }; - "@webassemblyjs/helper-wasm-section@npm:1.11.1" = { - name = "@webassemblyjs/helper-wasm-section"; - reference = "npm:1.11.1"; - linkType = "HARD"; - outputName = "webassemblyjs-helper-wasm-section-1.11.1-e4e8450b9d"; - outputHash = "03b25f62ca3d0f9ef5d17fe55c2c6798f38f759adee04eece0447e586e11343dd7e2da777a505023a00ec98bd08a9ac4d2aaf35f704e1c50f9503db010084cc5"; - flatName = "helper-wasm-section"; - languageName = "node"; - scope = "webassemblyjs"; - descriptorRange = "npm:1.11.1"; - checksum = "9/03b25f62ca3d0f9ef5d17fe55c2c6798f38f759adee04eece0447e586e11343dd7e2da777a505023a00ec98bd08a9ac4d2aaf35f704e1c50f9503db010084cc5"; - dependencies = { - "@webassemblyjs/ast" = packages."@webassemblyjs/ast@npm:1.11.1"; - "@webassemblyjs/helper-buffer" = packages."@webassemblyjs/helper-buffer@npm:1.11.1"; - "@webassemblyjs/helper-wasm-bytecode" = packages."@webassemblyjs/helper-wasm-bytecode@npm:1.11.1"; - "@webassemblyjs/wasm-gen" = packages."@webassemblyjs/wasm-gen@npm:1.11.1"; - }; - }; - "@webassemblyjs/ieee754@npm:1.11.1" = { - name = "@webassemblyjs/ieee754"; - reference = "npm:1.11.1"; - linkType = "HARD"; - outputName = "webassemblyjs-ieee754-1.11.1-897eb85879"; - outputHash = "71fd7b8691d2bc06d3b58ba7085b8c343ee063eb6aa750f715c70fcd42dc0776a67693897419906cf5748cb252d14c6ee882d7cabbfc21470539d3967e3a03af"; - flatName = "ieee754"; - languageName = "node"; - scope = "webassemblyjs"; - descriptorRange = "npm:1.11.1"; - checksum = "9/71fd7b8691d2bc06d3b58ba7085b8c343ee063eb6aa750f715c70fcd42dc0776a67693897419906cf5748cb252d14c6ee882d7cabbfc21470539d3967e3a03af"; - dependencies = { - "@xtuc/ieee754" = packages."@xtuc/ieee754@npm:1.2.0"; - }; - }; - "@webassemblyjs/leb128@npm:1.11.1" = { - name = "@webassemblyjs/leb128"; - reference = "npm:1.11.1"; - linkType = "HARD"; - outputName = "webassemblyjs-leb128-1.11.1-fd9f27673d"; - outputHash = "5815c1e725b4f58b12c55f7b5493279c42f1cd4bc730e59feb63d6ad7a8f70d2494e17c269b6251ba254d67bd093fb6bc1fc6da7778b41e7c6f3816295525cb5"; - flatName = "leb128"; - languageName = "node"; - scope = "webassemblyjs"; - descriptorRange = "npm:1.11.1"; - checksum = "9/5815c1e725b4f58b12c55f7b5493279c42f1cd4bc730e59feb63d6ad7a8f70d2494e17c269b6251ba254d67bd093fb6bc1fc6da7778b41e7c6f3816295525cb5"; - dependencies = { - "@xtuc/long" = packages."@xtuc/long@npm:4.2.2"; - }; - }; - "@webassemblyjs/utf8@npm:1.11.1" = { - name = "@webassemblyjs/utf8"; - reference = "npm:1.11.1"; - linkType = "HARD"; - outputName = "webassemblyjs-utf8-1.11.1-583036e767"; - outputHash = "388e3951becdaac209a3b4d7b95527c97b688bdd8f2265a2d54a856d0807c0361d57ffbd8f01466698e2467d1f5239c3058218a22c9b1062a3abd917ec6e382e"; - flatName = "utf8"; - languageName = "node"; - scope = "webassemblyjs"; - descriptorRange = "npm:1.11.1"; - checksum = "9/388e3951becdaac209a3b4d7b95527c97b688bdd8f2265a2d54a856d0807c0361d57ffbd8f01466698e2467d1f5239c3058218a22c9b1062a3abd917ec6e382e"; - }; - "@webassemblyjs/wasm-edit@npm:1.11.1" = { - name = "@webassemblyjs/wasm-edit"; - reference = "npm:1.11.1"; - linkType = "HARD"; - outputName = "webassemblyjs-wasm-edit-1.11.1-34565c1e92"; - outputHash = "0954fd4123683ae713544cdf558fc2a1e86cc2965e9bef0ad8132c3fd16c275e030662e58867b829a3349b3bb1988ae2867ea1fb154113c52b7a73fdf5f5f5a9"; - flatName = "wasm-edit"; - languageName = "node"; - scope = "webassemblyjs"; - descriptorRange = "npm:1.11.1"; - checksum = "9/0954fd4123683ae713544cdf558fc2a1e86cc2965e9bef0ad8132c3fd16c275e030662e58867b829a3349b3bb1988ae2867ea1fb154113c52b7a73fdf5f5f5a9"; - dependencies = { - "@webassemblyjs/ast" = packages."@webassemblyjs/ast@npm:1.11.1"; - "@webassemblyjs/helper-buffer" = packages."@webassemblyjs/helper-buffer@npm:1.11.1"; - "@webassemblyjs/helper-wasm-bytecode" = packages."@webassemblyjs/helper-wasm-bytecode@npm:1.11.1"; - "@webassemblyjs/helper-wasm-section" = packages."@webassemblyjs/helper-wasm-section@npm:1.11.1"; - "@webassemblyjs/wasm-gen" = packages."@webassemblyjs/wasm-gen@npm:1.11.1"; - "@webassemblyjs/wasm-opt" = packages."@webassemblyjs/wasm-opt@npm:1.11.1"; - "@webassemblyjs/wasm-parser" = packages."@webassemblyjs/wasm-parser@npm:1.11.1"; - "@webassemblyjs/wast-printer" = packages."@webassemblyjs/wast-printer@npm:1.11.1"; - }; - }; - "@webassemblyjs/wasm-gen@npm:1.11.1" = { - name = "@webassemblyjs/wasm-gen"; - reference = "npm:1.11.1"; - linkType = "HARD"; - outputName = "webassemblyjs-wasm-gen-1.11.1-a6d0b4d37d"; - outputHash = "7f155afbac250e391fe846104df12159411315c9b6464ccc397806a47612fcd76366ea5f48663ff8ee47a4c04eeccf9d12710504d950d5e7ef8623d48074d578"; - flatName = "wasm-gen"; - languageName = "node"; - scope = "webassemblyjs"; - descriptorRange = "npm:1.11.1"; - checksum = "9/7f155afbac250e391fe846104df12159411315c9b6464ccc397806a47612fcd76366ea5f48663ff8ee47a4c04eeccf9d12710504d950d5e7ef8623d48074d578"; - dependencies = { - "@webassemblyjs/ast" = packages."@webassemblyjs/ast@npm:1.11.1"; - "@webassemblyjs/helper-wasm-bytecode" = packages."@webassemblyjs/helper-wasm-bytecode@npm:1.11.1"; - "@webassemblyjs/ieee754" = packages."@webassemblyjs/ieee754@npm:1.11.1"; - "@webassemblyjs/leb128" = packages."@webassemblyjs/leb128@npm:1.11.1"; - "@webassemblyjs/utf8" = packages."@webassemblyjs/utf8@npm:1.11.1"; - }; - }; - "@webassemblyjs/wasm-opt@npm:1.11.1" = { - name = "@webassemblyjs/wasm-opt"; - reference = "npm:1.11.1"; - linkType = "HARD"; - outputName = "webassemblyjs-wasm-opt-1.11.1-0bb73c20b9"; - outputHash = "9d86f58d254f3ccf5674dfb69a6476c8a46734306d8b452c46539afec069980b847449581b79966c9e8a6ee734b4757c25456ed84d154f82e50cad2ae25c5f75"; - flatName = "wasm-opt"; - languageName = "node"; - scope = "webassemblyjs"; - descriptorRange = "npm:1.11.1"; - checksum = "9/9d86f58d254f3ccf5674dfb69a6476c8a46734306d8b452c46539afec069980b847449581b79966c9e8a6ee734b4757c25456ed84d154f82e50cad2ae25c5f75"; - dependencies = { - "@webassemblyjs/ast" = packages."@webassemblyjs/ast@npm:1.11.1"; - "@webassemblyjs/helper-buffer" = packages."@webassemblyjs/helper-buffer@npm:1.11.1"; - "@webassemblyjs/wasm-gen" = packages."@webassemblyjs/wasm-gen@npm:1.11.1"; - "@webassemblyjs/wasm-parser" = packages."@webassemblyjs/wasm-parser@npm:1.11.1"; - }; - }; - "@webassemblyjs/wasm-parser@npm:1.11.1" = { - name = "@webassemblyjs/wasm-parser"; - reference = "npm:1.11.1"; - linkType = "HARD"; - outputName = "webassemblyjs-wasm-parser-1.11.1-cd49c51fdc"; - outputHash = "c851c47e8393ad0f34c0376a699bede172b6edf775b67817cafbca5839f5bf48a1f6dfad3c99b96a1d77c17c714138a074462714cddb730e6d30b440d5fedb8b"; - flatName = "wasm-parser"; - languageName = "node"; - scope = "webassemblyjs"; - descriptorRange = "npm:1.11.1"; - checksum = "9/c851c47e8393ad0f34c0376a699bede172b6edf775b67817cafbca5839f5bf48a1f6dfad3c99b96a1d77c17c714138a074462714cddb730e6d30b440d5fedb8b"; - dependencies = { - "@webassemblyjs/ast" = packages."@webassemblyjs/ast@npm:1.11.1"; - "@webassemblyjs/helper-api-error" = packages."@webassemblyjs/helper-api-error@npm:1.11.1"; - "@webassemblyjs/helper-wasm-bytecode" = packages."@webassemblyjs/helper-wasm-bytecode@npm:1.11.1"; - "@webassemblyjs/ieee754" = packages."@webassemblyjs/ieee754@npm:1.11.1"; - "@webassemblyjs/leb128" = packages."@webassemblyjs/leb128@npm:1.11.1"; - "@webassemblyjs/utf8" = packages."@webassemblyjs/utf8@npm:1.11.1"; - }; - }; - "@webassemblyjs/wast-printer@npm:1.11.1" = { - name = "@webassemblyjs/wast-printer"; - reference = "npm:1.11.1"; - linkType = "HARD"; - outputName = "webassemblyjs-wast-printer-1.11.1-f1213430d6"; - outputHash = "c662c7f2d482ecf5c6c96addf40c8c691fd6d207a01ba4a0465429699d848c5efd34915f65cc37d2d86d63962ae2ca2e35c44d4adbb67f8cf8f80952f94e6fbe"; - flatName = "wast-printer"; - languageName = "node"; - scope = "webassemblyjs"; - descriptorRange = "npm:1.11.1"; - checksum = "9/c662c7f2d482ecf5c6c96addf40c8c691fd6d207a01ba4a0465429699d848c5efd34915f65cc37d2d86d63962ae2ca2e35c44d4adbb67f8cf8f80952f94e6fbe"; - dependencies = { - "@webassemblyjs/ast" = packages."@webassemblyjs/ast@npm:1.11.1"; - "@xtuc/long" = packages."@xtuc/long@npm:4.2.2"; - }; - }; - "@webpack-cli/configtest@npm:1.2.0" = { - name = "@webpack-cli/configtest"; - reference = "npm:1.2.0"; - linkType = "HARD"; - outputName = "webpack-cli-configtest-1.2.0-728a6bf8bd"; - outputHash = "6b60a3a16c98eecdd1a131141038ceba13d49676a138f2858e7b5609106b47e4be1c8beaa5abf1828a8b51a4691fb93df0b91740f91e7d48bb62a67d21f5d8fa"; - flatName = "configtest"; - languageName = "node"; - scope = "webpack-cli"; - descriptorRange = "npm:^1.2.0"; - checksum = "9/6b60a3a16c98eecdd1a131141038ceba13d49676a138f2858e7b5609106b47e4be1c8beaa5abf1828a8b51a4691fb93df0b91740f91e7d48bb62a67d21f5d8fa"; - packagePeers = [ - "@types/webpack-cli" - "@types/webpack" - "webpack-cli" - "webpack" - ]; - }; - "@webpack-cli/configtest@virtual:61c0fdf3df030285c4615c881341a6c3cf8614e39944c6f4d625dd71f6e6af631fc15d464de4a1ee3c3bc71c7093a12fae1d9f7e3cffc1d6a97c4d5be1518b2c#npm:1.2.0" = { - name = "@webpack-cli/configtest"; - reference = "virtual:61c0fdf3df030285c4615c881341a6c3cf8614e39944c6f4d625dd71f6e6af631fc15d464de4a1ee3c3bc71c7093a12fae1d9f7e3cffc1d6a97c4d5be1518b2c#npm:1.2.0"; - canonicalPackage = packages."@webpack-cli/configtest@npm:1.2.0"; - dependencies = { - "webpack" = packages."webpack@virtual:819008c351efcab39edaca3aff41825a322b497036fdaae27b5fba418f7e250764dbabc64de345136bce5b73e5ae95b76973a2b3591d90edde6160b93c624974#npm:5.74.0"; - "webpack-cli" = packages."webpack-cli@virtual:819008c351efcab39edaca3aff41825a322b497036fdaae27b5fba418f7e250764dbabc64de345136bce5b73e5ae95b76973a2b3591d90edde6160b93c624974#npm:4.10.0"; - }; - }; - "@webpack-cli/info@npm:1.5.0" = { - name = "@webpack-cli/info"; - reference = "npm:1.5.0"; - linkType = "HARD"; - outputName = "webpack-cli-info-1.5.0-9d9627ae19"; - outputHash = "b674858a8c863b069dda56305f8e07c1e736fccc8f52d765d7ddea44456aef9130cd2ce1946bd5d8163bfadf61494bc7c579711f0eeb855be6cf8b6cc150c9d0"; - flatName = "info"; - languageName = "node"; - scope = "webpack-cli"; - descriptorRange = "npm:^1.5.0"; - checksum = "9/b674858a8c863b069dda56305f8e07c1e736fccc8f52d765d7ddea44456aef9130cd2ce1946bd5d8163bfadf61494bc7c579711f0eeb855be6cf8b6cc150c9d0"; - dependencies = { - "envinfo" = packages."envinfo@npm:7.8.1"; - }; - packagePeers = [ - "@types/webpack-cli" - "webpack-cli" - ]; - }; - "@webpack-cli/info@virtual:61c0fdf3df030285c4615c881341a6c3cf8614e39944c6f4d625dd71f6e6af631fc15d464de4a1ee3c3bc71c7093a12fae1d9f7e3cffc1d6a97c4d5be1518b2c#npm:1.5.0" = { - name = "@webpack-cli/info"; - reference = "virtual:61c0fdf3df030285c4615c881341a6c3cf8614e39944c6f4d625dd71f6e6af631fc15d464de4a1ee3c3bc71c7093a12fae1d9f7e3cffc1d6a97c4d5be1518b2c#npm:1.5.0"; - canonicalPackage = packages."@webpack-cli/info@npm:1.5.0"; - dependencies = { - "envinfo" = packages."envinfo@npm:7.8.1"; - "webpack-cli" = packages."webpack-cli@virtual:819008c351efcab39edaca3aff41825a322b497036fdaae27b5fba418f7e250764dbabc64de345136bce5b73e5ae95b76973a2b3591d90edde6160b93c624974#npm:4.10.0"; - }; - }; - "@webpack-cli/serve@npm:1.7.0" = { - name = "@webpack-cli/serve"; - reference = "npm:1.7.0"; - linkType = "HARD"; - outputName = "webpack-cli-serve-1.7.0-2869abfdb4"; - outputHash = "fc10d33e518870469bbf3813f2a104d6058d80541af68f069e873de5ee67acd0cedbbec75092fb3d33d1c73f5227dc444730bd1da9b9e46dd4d751ca2b5fb946"; - flatName = "serve"; - languageName = "node"; - scope = "webpack-cli"; - descriptorRange = "npm:^1.7.0"; - checksum = "9/fc10d33e518870469bbf3813f2a104d6058d80541af68f069e873de5ee67acd0cedbbec75092fb3d33d1c73f5227dc444730bd1da9b9e46dd4d751ca2b5fb946"; - packagePeers = [ - "@types/webpack-cli" - "@types/webpack-dev-server" - "webpack-cli" - "webpack-dev-server" - ]; - }; - "@webpack-cli/serve@virtual:61c0fdf3df030285c4615c881341a6c3cf8614e39944c6f4d625dd71f6e6af631fc15d464de4a1ee3c3bc71c7093a12fae1d9f7e3cffc1d6a97c4d5be1518b2c#npm:1.7.0" = { - name = "@webpack-cli/serve"; - reference = "virtual:61c0fdf3df030285c4615c881341a6c3cf8614e39944c6f4d625dd71f6e6af631fc15d464de4a1ee3c3bc71c7093a12fae1d9f7e3cffc1d6a97c4d5be1518b2c#npm:1.7.0"; - canonicalPackage = packages."@webpack-cli/serve@npm:1.7.0"; - dependencies = { - "webpack-cli" = packages."webpack-cli@virtual:819008c351efcab39edaca3aff41825a322b497036fdaae27b5fba418f7e250764dbabc64de345136bce5b73e5ae95b76973a2b3591d90edde6160b93c624974#npm:4.10.0"; - }; - }; - "@xtuc/ieee754@npm:1.2.0" = { - name = "@xtuc/ieee754"; - reference = "npm:1.2.0"; - linkType = "HARD"; - outputName = "xtuc-ieee754-1.2.0-ec0ce4e025"; - outputHash = "9e8984d890576772a1f6f05e513da380672e70688f08e53c7bd3b65d0373078933771ca81b6b025a86bd742352d91b6da5a329bf7b45560aff3588d811a7e403"; - flatName = "ieee754"; - languageName = "node"; - scope = "xtuc"; - descriptorRange = "npm:^1.2.0"; - checksum = "9/9e8984d890576772a1f6f05e513da380672e70688f08e53c7bd3b65d0373078933771ca81b6b025a86bd742352d91b6da5a329bf7b45560aff3588d811a7e403"; - }; - "@xtuc/long@npm:4.2.2" = { - name = "@xtuc/long"; - reference = "npm:4.2.2"; - linkType = "HARD"; - outputName = "xtuc-long-4.2.2-37236e6d72"; - outputHash = "48078981fd16688328aeedc04b1ae3a016ee5ee2a81dff709bf7313a0e8b21494e39b959f8e800e00ba361d74e9a9ce3be365ee369e079c23c8e257f103f8604"; - flatName = "long"; - languageName = "node"; - scope = "xtuc"; - descriptorRange = "npm:4.2.2"; - checksum = "9/48078981fd16688328aeedc04b1ae3a016ee5ee2a81dff709bf7313a0e8b21494e39b959f8e800e00ba361d74e9a9ce3be365ee369e079c23c8e257f103f8604"; - }; - "abbrev@npm:1.1.1" = { - name = "abbrev"; - reference = "npm:1.1.1"; - linkType = "HARD"; - outputName = "abbrev-1.1.1-3659247eab"; - outputHash = "76e7fb9283b13208d5cf55df46669f9cf5e72007cb66595849be2d5e96c0a43704132d030c5705f9447266183986e1e8a4fc3e9578cb60a1f19cf0157664f957"; - flatName = "abbrev"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^1.0.0"; - checksum = "9/76e7fb9283b13208d5cf55df46669f9cf5e72007cb66595849be2d5e96c0a43704132d030c5705f9447266183986e1e8a4fc3e9578cb60a1f19cf0157664f957"; - }; - "acorn-import-assertions@npm:1.8.0" = { - name = "acorn-import-assertions"; - reference = "npm:1.8.0"; - linkType = "HARD"; - outputName = "acorn-import-assertions-1.8.0-e9a9d57e27"; - outputHash = "7963bf636b8ee03e93507beea867317bcbb09c53050aaebc86b49022478dda7ea3110ea0ffab1957db016d83f57e92c307c54adef113812bb19445a4e4a1aa98"; - flatName = "acorn-import-assertions"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^1.7.6"; - checksum = "9/7963bf636b8ee03e93507beea867317bcbb09c53050aaebc86b49022478dda7ea3110ea0ffab1957db016d83f57e92c307c54adef113812bb19445a4e4a1aa98"; - packagePeers = [ - "@types/acorn" - "acorn" - ]; - }; - "acorn-import-assertions@virtual:1144445ea12beee23520d1f39ad0b242c217bdaf290a67b86cac8f084d17833f6f90506061299a1bed91cebcdafceb106beb20bf668fad994c3204b3df9d7fa2#npm:1.8.0" = { - name = "acorn-import-assertions"; - reference = "virtual:1144445ea12beee23520d1f39ad0b242c217bdaf290a67b86cac8f084d17833f6f90506061299a1bed91cebcdafceb106beb20bf668fad994c3204b3df9d7fa2#npm:1.8.0"; - canonicalPackage = packages."acorn-import-assertions@npm:1.8.0"; - dependencies = { - "acorn" = packages."acorn@npm:8.8.1"; - }; - }; - "acorn@npm:8.8.1" = { - name = "acorn"; - reference = "npm:8.8.1"; - linkType = "HARD"; - outputName = "acorn-8.8.1-20e4aea981"; - outputHash = "f8a84cf59173c5c07cb6b8097c716370f799244189b23d58358eadf9729e0d62660bc11339e03f08517fa33d1ef4b69b84b0bdebe0c0d783acaa8d2c44a66345"; - flatName = "acorn"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^8.7.1"; - checksum = "9/f8a84cf59173c5c07cb6b8097c716370f799244189b23d58358eadf9729e0d62660bc11339e03f08517fa33d1ef4b69b84b0bdebe0c0d783acaa8d2c44a66345"; - bin = { - "acorn" = "bin/acorn"; - }; - }; - "agent-base@npm:6.0.2" = { - name = "agent-base"; - reference = "npm:6.0.2"; - linkType = "HARD"; - outputName = "agent-base-6.0.2-428f325a93"; - outputHash = "2d0cdeccfe3058cb18661db3bcbb6cc092144eaecd7da3ee4321be0490d5654e53dbd08c28690d83f55f791b0369819f5872ee5122a2aad0a39edbc51798f01b"; - flatName = "agent-base"; - languageName = "node"; - scope = null; - descriptorRange = "npm:6"; - checksum = "9/2d0cdeccfe3058cb18661db3bcbb6cc092144eaecd7da3ee4321be0490d5654e53dbd08c28690d83f55f791b0369819f5872ee5122a2aad0a39edbc51798f01b"; - dependencies = { - "debug" = packages."debug@virtual:113ef2a03aa3de337889da32b02d27edf5e95d2b3c50aaf8ade4848a62355b637cece6c5a2b0f14480eef0d6c8ed8e9cacaca7d39e60125049f7120bdbeb5489#npm:4.3.4"; - }; - }; - "agentkeepalive@npm:4.2.1" = { - name = "agentkeepalive"; - reference = "npm:4.2.1"; - linkType = "HARD"; - outputName = "agentkeepalive-4.2.1-b86a9fb343"; - outputHash = "c0a7067d1bec147b40bc046ed3ad32bfff35014e7d20e21219f90a21df661d85124e5ffa5bd89118d7ceac9105e2e9b0525ea317a2958b39a357535394b483b0"; - flatName = "agentkeepalive"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^4.2.1"; - checksum = "9/c0a7067d1bec147b40bc046ed3ad32bfff35014e7d20e21219f90a21df661d85124e5ffa5bd89118d7ceac9105e2e9b0525ea317a2958b39a357535394b483b0"; - dependencies = { - "depd" = packages."depd@npm:1.1.2"; - "humanize-ms" = packages."humanize-ms@npm:1.2.1"; - "debug" = packages."debug@virtual:113ef2a03aa3de337889da32b02d27edf5e95d2b3c50aaf8ade4848a62355b637cece6c5a2b0f14480eef0d6c8ed8e9cacaca7d39e60125049f7120bdbeb5489#npm:4.3.4"; - }; - }; - "aggregate-error@npm:3.1.0" = { - name = "aggregate-error"; - reference = "npm:3.1.0"; - linkType = "HARD"; - outputName = "aggregate-error-3.1.0-415a406f4e"; - outputHash = "676b1da86a0ff06a29d9a318109752990c28aae4600f6d094845a679f388a2a246402d993d223165d208122d81823235969132dc09439de2eee50a9f48fa9db9"; - flatName = "aggregate-error"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^3.0.0"; - checksum = "9/676b1da86a0ff06a29d9a318109752990c28aae4600f6d094845a679f388a2a246402d993d223165d208122d81823235969132dc09439de2eee50a9f48fa9db9"; - dependencies = { - "clean-stack" = packages."clean-stack@npm:2.2.0"; - "indent-string" = packages."indent-string@npm:4.0.0"; - }; - }; - "ajv-keywords@npm:3.5.2" = { - name = "ajv-keywords"; - reference = "npm:3.5.2"; - linkType = "HARD"; - outputName = "ajv-keywords-3.5.2-0e391b70e2"; - outputHash = "e1c951fc981a115aab493cc08b756c94a89b4a1b98af848d42a6cc706bef73fea763f9958ee51cd31e6f2f34c1d7158157e40ebd8cd38347385fe448419a57e7"; - flatName = "ajv-keywords"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^3.5.2"; - checksum = "9/e1c951fc981a115aab493cc08b756c94a89b4a1b98af848d42a6cc706bef73fea763f9958ee51cd31e6f2f34c1d7158157e40ebd8cd38347385fe448419a57e7"; - packagePeers = [ - "@types/ajv" - "ajv" - ]; - }; - "ajv-keywords@virtual:8704647575acf2f5b19fccfcb0acebacd9c94259ebe9afcfaf4c053812fd896f10775930ee5a5949e20833a61503d2cd22aa259cbe69729f6a192de4bf43dc00#npm:3.5.2" = { - name = "ajv-keywords"; - reference = "virtual:8704647575acf2f5b19fccfcb0acebacd9c94259ebe9afcfaf4c053812fd896f10775930ee5a5949e20833a61503d2cd22aa259cbe69729f6a192de4bf43dc00#npm:3.5.2"; - canonicalPackage = packages."ajv-keywords@npm:3.5.2"; - dependencies = { - "ajv" = packages."ajv@npm:6.12.6"; - }; - }; - "ajv@npm:6.12.6" = { - name = "ajv"; - reference = "npm:6.12.6"; - linkType = "HARD"; - outputName = "ajv-6.12.6-4b5105e2b2"; - outputHash = "c8b4c5eb679d58b3b145c914cb328b49622ead05aecd2c8da490809d542d0796d558602a7988745214eff2a7642dcca784f909414cb746d7235a97a3f89fecee"; - flatName = "ajv"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^6.12.5"; - checksum = "9/c8b4c5eb679d58b3b145c914cb328b49622ead05aecd2c8da490809d542d0796d558602a7988745214eff2a7642dcca784f909414cb746d7235a97a3f89fecee"; - dependencies = { - "fast-deep-equal" = packages."fast-deep-equal@npm:3.1.3"; - "fast-json-stable-stringify" = packages."fast-json-stable-stringify@npm:2.1.0"; - "json-schema-traverse" = packages."json-schema-traverse@npm:0.4.1"; - "uri-js" = packages."uri-js@npm:4.4.1"; - }; - }; - "ansi-escapes@npm:4.3.2" = { - name = "ansi-escapes"; - reference = "npm:4.3.2"; - linkType = "HARD"; - outputName = "ansi-escapes-4.3.2-3ad173702f"; - outputHash = "da33f33b3b792e7273cefc1ec150afbc332cab602757d2ab70fb90e5c5cfa173b10bc4a0d9d0c60479ed60e25cdf35897a82f1e498987358a6087b99300872cc"; - flatName = "ansi-escapes"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^4.2.1"; - checksum = "9/da33f33b3b792e7273cefc1ec150afbc332cab602757d2ab70fb90e5c5cfa173b10bc4a0d9d0c60479ed60e25cdf35897a82f1e498987358a6087b99300872cc"; - dependencies = { - "type-fest" = packages."type-fest@npm:0.21.3"; - }; - }; - "ansi-regex@npm:5.0.1" = { - name = "ansi-regex"; - reference = "npm:5.0.1"; - linkType = "HARD"; - outputName = "ansi-regex-5.0.1-c963a48615"; - outputHash = "627f94ee7fcc5e03186646ebd11ca2ccd954f3cb48fc6a3f42883db6bbf3df5dfba06d62647b2f72c975349fc072c5c44808b7da26d08a9313a7f304acda2efb"; - flatName = "ansi-regex"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^5.0.1"; - checksum = "9/627f94ee7fcc5e03186646ebd11ca2ccd954f3cb48fc6a3f42883db6bbf3df5dfba06d62647b2f72c975349fc072c5c44808b7da26d08a9313a7f304acda2efb"; - }; - "ansi-styles@npm:3.2.1" = { - name = "ansi-styles"; - reference = "npm:3.2.1"; - linkType = "HARD"; - outputName = "ansi-styles-3.2.1-8cb8107983"; - outputHash = "88847a8969fcf787779a2cd03e73cd85ac45cbccace293e1227445dd6452cdf11df752c5f9afdb47343439762b96ae7baad1caf848360576d60be5e92f6842ab"; - flatName = "ansi-styles"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^3.2.1"; - checksum = "9/88847a8969fcf787779a2cd03e73cd85ac45cbccace293e1227445dd6452cdf11df752c5f9afdb47343439762b96ae7baad1caf848360576d60be5e92f6842ab"; - dependencies = { - "color-convert" = packages."color-convert@npm:1.9.3"; - }; - }; - "ansi-styles@npm:4.3.0" = { - name = "ansi-styles"; - reference = "npm:4.3.0"; - linkType = "HARD"; - outputName = "ansi-styles-4.3.0-245c7d42c7"; - outputHash = "d15dab617b78cbc96f10016e929e921ad73695753de4e45a911ecee6e29aa45c71d58f1ffaf8e49889dbe726dbdb2bbe5b4e3a7bf1c517f8740ae83a29b7df25"; - flatName = "ansi-styles"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^4.1.0"; - checksum = "9/d15dab617b78cbc96f10016e929e921ad73695753de4e45a911ecee6e29aa45c71d58f1ffaf8e49889dbe726dbdb2bbe5b4e3a7bf1c517f8740ae83a29b7df25"; - dependencies = { - "color-convert" = packages."color-convert@npm:2.0.1"; - }; - }; - "ansi-styles@npm:5.2.0" = { - name = "ansi-styles"; - reference = "npm:5.2.0"; - linkType = "HARD"; - outputName = "ansi-styles-5.2.0-72fc7003e3"; - outputHash = "be68c7c5f374e8d72174b43ff3ab5bdd0e2e024bcaace9c0d2bbcd0edef71281424a1d23e5b29c8c7911143e4c34090088287a15f36ed710167c5bcccc867c7e"; - flatName = "ansi-styles"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^5.0.0"; - checksum = "9/be68c7c5f374e8d72174b43ff3ab5bdd0e2e024bcaace9c0d2bbcd0edef71281424a1d23e5b29c8c7911143e4c34090088287a15f36ed710167c5bcccc867c7e"; - }; - "anymatch@npm:3.1.2" = { - name = "anymatch"; - reference = "npm:3.1.2"; - linkType = "HARD"; - outputName = "anymatch-3.1.2-1d5471acfa"; - outputHash = "b9266228a3e1406086ece57c20f9cbfc9755375218697c79a71fba9245ad23a672687314422e97753fbb3bccd245d7c76974d7c15ba513386b499de6ba002300"; - flatName = "anymatch"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^3.0.3"; - checksum = "9/b9266228a3e1406086ece57c20f9cbfc9755375218697c79a71fba9245ad23a672687314422e97753fbb3bccd245d7c76974d7c15ba513386b499de6ba002300"; - dependencies = { - "normalize-path" = packages."normalize-path@npm:3.0.0"; - "picomatch" = packages."picomatch@npm:2.3.1"; - }; - }; - "aproba@npm:2.0.0" = { - name = "aproba"; - reference = "npm:2.0.0"; - linkType = "HARD"; - outputName = "aproba-2.0.0-8716bcfde6"; - outputHash = "02a080748877ae9a7d8973c37c688669a59971c5ec38a4c44f4a7176a52313da0b0c1e1518f80d3b80d75d0d4a16f25a4151a2316bad3db06bb34cb0245cc4fa"; - flatName = "aproba"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^1.0.3 || ^2.0.0"; - checksum = "9/02a080748877ae9a7d8973c37c688669a59971c5ec38a4c44f4a7176a52313da0b0c1e1518f80d3b80d75d0d4a16f25a4151a2316bad3db06bb34cb0245cc4fa"; - }; - "are-we-there-yet@npm:2.0.0" = { - name = "are-we-there-yet"; - reference = "npm:2.0.0"; - linkType = "HARD"; - outputName = "are-we-there-yet-2.0.0-7d2f5201ce"; - outputHash = "8e178f4924d1062cf04df1afb27927f005429805027ea5f8d751cb66287910a3584b9f0548d0a7aa490dff60a0600e1f31da0bb53344f65f0836234529908d3a"; - flatName = "are-we-there-yet"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^2.0.0"; - checksum = "9/8e178f4924d1062cf04df1afb27927f005429805027ea5f8d751cb66287910a3584b9f0548d0a7aa490dff60a0600e1f31da0bb53344f65f0836234529908d3a"; - dependencies = { - "delegates" = packages."delegates@npm:1.0.0"; - "readable-stream" = packages."readable-stream@npm:3.6.0"; - }; - }; - "are-we-there-yet@npm:3.0.1" = { - name = "are-we-there-yet"; - reference = "npm:3.0.1"; - linkType = "HARD"; - outputName = "are-we-there-yet-3.0.1-3395b1512f"; - outputHash = "7137e25713c611cf38054434ba377e2f7ad3a4bbdb7ac3565ed5caac786080d1c86ed0b280edd917b4c1001ee0d6ed7bdd53effd69b5af4251e5a4fd18d09fbe"; - flatName = "are-we-there-yet"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^3.0.0"; - checksum = "9/7137e25713c611cf38054434ba377e2f7ad3a4bbdb7ac3565ed5caac786080d1c86ed0b280edd917b4c1001ee0d6ed7bdd53effd69b5af4251e5a4fd18d09fbe"; - dependencies = { - "delegates" = packages."delegates@npm:1.0.0"; - "readable-stream" = packages."readable-stream@npm:3.6.0"; - }; - }; - "argparse@npm:1.0.10" = { - name = "argparse"; - reference = "npm:1.0.10"; - linkType = "HARD"; - outputName = "argparse-1.0.10-528934e59d"; - outputHash = "6112e287a501a4badb8451c3b84420daa75dc4e1ac55d7ce086a492b2cf7d55f2fc0473acb62fc6af2d8013cf255d5d24734c10b4c2c6e440731644f8845c96b"; - flatName = "argparse"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^1.0.7"; - checksum = "9/6112e287a501a4badb8451c3b84420daa75dc4e1ac55d7ce086a492b2cf7d55f2fc0473acb62fc6af2d8013cf255d5d24734c10b4c2c6e440731644f8845c96b"; - dependencies = { - "sprintf-js" = packages."sprintf-js@npm:1.0.3"; - }; - }; - "assertion-error@npm:1.1.0" = { - name = "assertion-error"; - reference = "npm:1.1.0"; - linkType = "HARD"; - outputName = "assertion-error-1.1.0-66b893015e"; - outputHash = "8e52a3ca8f1f789419cfa4d6e77a4be12ca441ca9ed64a671fd28a0efb1eac304579ee1d5cceb92a43a61d8caac10e00c3b6326ede54c515e0929572320388c8"; - flatName = "assertion-error"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^1.1.0"; - checksum = "9/8e52a3ca8f1f789419cfa4d6e77a4be12ca441ca9ed64a671fd28a0efb1eac304579ee1d5cceb92a43a61d8caac10e00c3b6326ede54c515e0929572320388c8"; - }; - "babel-jest@npm:29.2.2" = { - name = "babel-jest"; - reference = "npm:29.2.2"; - linkType = "HARD"; - outputName = "babel-jest-29.2.2-915836d08b"; - outputHash = "4ac85c230ddb22a7dbdc30642f1ceb293e4109bacac3cc860b13daa99e02f1c022dd50d806a08a86dff10a02c4c442be8f976cd579bfe1cbbc370a590501403b"; - flatName = "babel-jest"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^29.2.2"; - checksum = "9/4ac85c230ddb22a7dbdc30642f1ceb293e4109bacac3cc860b13daa99e02f1c022dd50d806a08a86dff10a02c4c442be8f976cd579bfe1cbbc370a590501403b"; - dependencies = { - "@jest/transform" = packages."@jest/transform@npm:29.2.2"; - "@types/babel__core" = packages."@types/babel__core@npm:7.1.19"; - "babel-plugin-istanbul" = packages."babel-plugin-istanbul@npm:6.1.1"; - "babel-preset-jest" = packages."babel-preset-jest@npm:29.2.0"; - "chalk" = packages."chalk@npm:4.1.2"; - "graceful-fs" = packages."graceful-fs@npm:4.2.10"; - "slash" = packages."slash@npm:3.0.0"; - }; - packagePeers = [ - "@babel/core" - "@types/babel__core" - ]; - }; - "babel-jest@virtual:2de69894e9dbb2b38c261ce0e4cb29effd0e4a9821273ef323ba008e1bf3b8962515c68c82d773afa645f6d63ea314b06087940c27e3ea568b1b45999a7ca0a7#npm:29.2.2" = { - name = "babel-jest"; - reference = "virtual:2de69894e9dbb2b38c261ce0e4cb29effd0e4a9821273ef323ba008e1bf3b8962515c68c82d773afa645f6d63ea314b06087940c27e3ea568b1b45999a7ca0a7#npm:29.2.2"; - canonicalPackage = packages."babel-jest@npm:29.2.2"; - dependencies = { - "@babel/core" = packages."@babel/core@npm:7.19.6"; - "@jest/transform" = packages."@jest/transform@npm:29.2.2"; - "@types/babel__core" = packages."@types/babel__core@npm:7.1.19"; - "babel-plugin-istanbul" = packages."babel-plugin-istanbul@npm:6.1.1"; - "chalk" = packages."chalk@npm:4.1.2"; - "graceful-fs" = packages."graceful-fs@npm:4.2.10"; - "slash" = packages."slash@npm:3.0.0"; - "babel-preset-jest" = packages."babel-preset-jest@virtual:55c688aa750f1cdfcb1f0bf9a04032de5fe95209d950f2ad14207ed234bf6b95599287e8b5ba6c356a6ed6415f5cb054d794c752489d8b7284c21b8f3fc49be9#npm:29.2.0"; - }; - }; - "babel-plugin-istanbul@npm:6.1.1" = { - name = "babel-plugin-istanbul"; - reference = "npm:6.1.1"; - linkType = "HARD"; - outputName = "babel-plugin-istanbul-6.1.1-df824055e4"; - outputHash = "d633b6ebb9e760a0d5ac8e4f858424eae0c95a2158c39b5553ea66a3b304ec34d8cb38d9a93ed6a4a3291e882aff28f86f538950910447050b7332157e7756ef"; - flatName = "babel-plugin-istanbul"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^6.1.1"; - checksum = "9/d633b6ebb9e760a0d5ac8e4f858424eae0c95a2158c39b5553ea66a3b304ec34d8cb38d9a93ed6a4a3291e882aff28f86f538950910447050b7332157e7756ef"; - dependencies = { - "@babel/helper-plugin-utils" = packages."@babel/helper-plugin-utils@npm:7.19.0"; - "@istanbuljs/load-nyc-config" = packages."@istanbuljs/load-nyc-config@npm:1.1.0"; - "@istanbuljs/schema" = packages."@istanbuljs/schema@npm:0.1.3"; - "istanbul-lib-instrument" = packages."istanbul-lib-instrument@npm:5.2.1"; - "test-exclude" = packages."test-exclude@npm:6.0.0"; - }; - }; - "babel-plugin-jest-hoist@npm:29.2.0" = { - name = "babel-plugin-jest-hoist"; - reference = "npm:29.2.0"; - linkType = "HARD"; - outputName = "babel-plugin-jest-hoist-29.2.0-bad358f3a4"; - outputHash = "a78337187c5ead96487f2b5992a482047013fa0a61ee1a846d4db00c562feeefa2617875ed98a08d75557914d78397f8c827ceb504e142260bd977325a174fe3"; - flatName = "babel-plugin-jest-hoist"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^29.2.0"; - checksum = "9/a78337187c5ead96487f2b5992a482047013fa0a61ee1a846d4db00c562feeefa2617875ed98a08d75557914d78397f8c827ceb504e142260bd977325a174fe3"; - dependencies = { - "@babel/template" = packages."@babel/template@npm:7.18.10"; - "@babel/types" = packages."@babel/types@npm:7.19.4"; - "@types/babel__core" = packages."@types/babel__core@npm:7.1.19"; - "@types/babel__traverse" = packages."@types/babel__traverse@npm:7.18.2"; - }; - }; - "babel-preset-current-node-syntax@npm:1.0.1" = { - name = "babel-preset-current-node-syntax"; - reference = "npm:1.0.1"; - linkType = "HARD"; - outputName = "babel-preset-current-node-syntax-1.0.1-849ec71e32"; - outputHash = "5ed78936dbfdadace9754cf2bf18abef450763806c2b39fc7bd3671f8034ca48e70f0a45224e3bd9c8fc1a91f79b6fb53cc0bfa6ca52226e7ba528dad6299863"; - flatName = "babel-preset-current-node-syntax"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^1.0.0"; - checksum = "9/5ed78936dbfdadace9754cf2bf18abef450763806c2b39fc7bd3671f8034ca48e70f0a45224e3bd9c8fc1a91f79b6fb53cc0bfa6ca52226e7ba528dad6299863"; - dependencies = { - "@babel/plugin-syntax-async-generators" = packages."@babel/plugin-syntax-async-generators@npm:7.8.4"; - "@babel/plugin-syntax-bigint" = packages."@babel/plugin-syntax-bigint@npm:7.8.3"; - "@babel/plugin-syntax-class-properties" = packages."@babel/plugin-syntax-class-properties@npm:7.12.13"; - "@babel/plugin-syntax-import-meta" = packages."@babel/plugin-syntax-import-meta@npm:7.10.4"; - "@babel/plugin-syntax-json-strings" = packages."@babel/plugin-syntax-json-strings@npm:7.8.3"; - "@babel/plugin-syntax-logical-assignment-operators" = packages."@babel/plugin-syntax-logical-assignment-operators@npm:7.10.4"; - "@babel/plugin-syntax-nullish-coalescing-operator" = packages."@babel/plugin-syntax-nullish-coalescing-operator@npm:7.8.3"; - "@babel/plugin-syntax-numeric-separator" = packages."@babel/plugin-syntax-numeric-separator@npm:7.10.4"; - "@babel/plugin-syntax-object-rest-spread" = packages."@babel/plugin-syntax-object-rest-spread@npm:7.8.3"; - "@babel/plugin-syntax-optional-catch-binding" = packages."@babel/plugin-syntax-optional-catch-binding@npm:7.8.3"; - "@babel/plugin-syntax-optional-chaining" = packages."@babel/plugin-syntax-optional-chaining@npm:7.8.3"; - "@babel/plugin-syntax-top-level-await" = packages."@babel/plugin-syntax-top-level-await@npm:7.14.5"; - }; - packagePeers = [ - "@babel/core" - "@types/babel__core" - ]; - }; - "babel-preset-current-node-syntax@virtual:52d2763c817f325964d4357cf9dbe187e8ec48bcb3ce478452f0362bd97d1cca745e5a9f31131ff3c69969b9b1419e86adfe045b57a151ae5d135fb663f3aa9d#npm:1.0.1" = { - name = "babel-preset-current-node-syntax"; - reference = "virtual:52d2763c817f325964d4357cf9dbe187e8ec48bcb3ce478452f0362bd97d1cca745e5a9f31131ff3c69969b9b1419e86adfe045b57a151ae5d135fb663f3aa9d#npm:1.0.1"; - canonicalPackage = packages."babel-preset-current-node-syntax@npm:1.0.1"; - dependencies = { - "@babel/core" = packages."@babel/core@npm:7.19.6"; - "@babel/plugin-syntax-async-generators" = packages."@babel/plugin-syntax-async-generators@virtual:f8aca53219b99df3cd58f521fefb9fb2e560855b6177d3d7c0fd22c1238eecf3495c1d90a78ff6f266e6ec8b659f5e769c5eaa47d96cf72a65b53754788ffa5c#npm:7.8.4"; - "@babel/plugin-syntax-bigint" = packages."@babel/plugin-syntax-bigint@virtual:f8aca53219b99df3cd58f521fefb9fb2e560855b6177d3d7c0fd22c1238eecf3495c1d90a78ff6f266e6ec8b659f5e769c5eaa47d96cf72a65b53754788ffa5c#npm:7.8.3"; - "@babel/plugin-syntax-class-properties" = packages."@babel/plugin-syntax-class-properties@virtual:f8aca53219b99df3cd58f521fefb9fb2e560855b6177d3d7c0fd22c1238eecf3495c1d90a78ff6f266e6ec8b659f5e769c5eaa47d96cf72a65b53754788ffa5c#npm:7.12.13"; - "@babel/plugin-syntax-import-meta" = packages."@babel/plugin-syntax-import-meta@virtual:f8aca53219b99df3cd58f521fefb9fb2e560855b6177d3d7c0fd22c1238eecf3495c1d90a78ff6f266e6ec8b659f5e769c5eaa47d96cf72a65b53754788ffa5c#npm:7.10.4"; - "@babel/plugin-syntax-json-strings" = packages."@babel/plugin-syntax-json-strings@virtual:f8aca53219b99df3cd58f521fefb9fb2e560855b6177d3d7c0fd22c1238eecf3495c1d90a78ff6f266e6ec8b659f5e769c5eaa47d96cf72a65b53754788ffa5c#npm:7.8.3"; - "@babel/plugin-syntax-logical-assignment-operators" = packages."@babel/plugin-syntax-logical-assignment-operators@virtual:f8aca53219b99df3cd58f521fefb9fb2e560855b6177d3d7c0fd22c1238eecf3495c1d90a78ff6f266e6ec8b659f5e769c5eaa47d96cf72a65b53754788ffa5c#npm:7.10.4"; - "@babel/plugin-syntax-nullish-coalescing-operator" = packages."@babel/plugin-syntax-nullish-coalescing-operator@virtual:f8aca53219b99df3cd58f521fefb9fb2e560855b6177d3d7c0fd22c1238eecf3495c1d90a78ff6f266e6ec8b659f5e769c5eaa47d96cf72a65b53754788ffa5c#npm:7.8.3"; - "@babel/plugin-syntax-numeric-separator" = packages."@babel/plugin-syntax-numeric-separator@virtual:f8aca53219b99df3cd58f521fefb9fb2e560855b6177d3d7c0fd22c1238eecf3495c1d90a78ff6f266e6ec8b659f5e769c5eaa47d96cf72a65b53754788ffa5c#npm:7.10.4"; - "@babel/plugin-syntax-object-rest-spread" = packages."@babel/plugin-syntax-object-rest-spread@virtual:f8aca53219b99df3cd58f521fefb9fb2e560855b6177d3d7c0fd22c1238eecf3495c1d90a78ff6f266e6ec8b659f5e769c5eaa47d96cf72a65b53754788ffa5c#npm:7.8.3"; - "@babel/plugin-syntax-optional-catch-binding" = packages."@babel/plugin-syntax-optional-catch-binding@virtual:f8aca53219b99df3cd58f521fefb9fb2e560855b6177d3d7c0fd22c1238eecf3495c1d90a78ff6f266e6ec8b659f5e769c5eaa47d96cf72a65b53754788ffa5c#npm:7.8.3"; - "@babel/plugin-syntax-optional-chaining" = packages."@babel/plugin-syntax-optional-chaining@virtual:f8aca53219b99df3cd58f521fefb9fb2e560855b6177d3d7c0fd22c1238eecf3495c1d90a78ff6f266e6ec8b659f5e769c5eaa47d96cf72a65b53754788ffa5c#npm:7.8.3"; - "@babel/plugin-syntax-top-level-await" = packages."@babel/plugin-syntax-top-level-await@virtual:f8aca53219b99df3cd58f521fefb9fb2e560855b6177d3d7c0fd22c1238eecf3495c1d90a78ff6f266e6ec8b659f5e769c5eaa47d96cf72a65b53754788ffa5c#npm:7.14.5"; - }; - }; - "babel-preset-current-node-syntax@virtual:cbeda26b7a469af5b5a4aeed0acd3b68a4655c00415b382aed941c15bddb3859da189c8bed48e00cc98cfc4ee5f0715eccde6e48160e8111b436752f7ac9880a#npm:1.0.1" = { - name = "babel-preset-current-node-syntax"; - reference = "virtual:cbeda26b7a469af5b5a4aeed0acd3b68a4655c00415b382aed941c15bddb3859da189c8bed48e00cc98cfc4ee5f0715eccde6e48160e8111b436752f7ac9880a#npm:1.0.1"; - canonicalPackage = packages."babel-preset-current-node-syntax@npm:1.0.1"; - dependencies = { - "@babel/core" = packages."@babel/core@npm:7.19.6"; - "@types/babel__core" = packages."@types/babel__core@npm:7.1.19"; - "@babel/plugin-syntax-async-generators" = packages."@babel/plugin-syntax-async-generators@virtual:4f2a00876e51daf6c174c9bd5e20efa043e1745940e553874e88ae6a111f477d701a48c909b8f10566385932e1568822bb77213016205fcc81e66fe676263358#npm:7.8.4"; - "@babel/plugin-syntax-bigint" = packages."@babel/plugin-syntax-bigint@virtual:4f2a00876e51daf6c174c9bd5e20efa043e1745940e553874e88ae6a111f477d701a48c909b8f10566385932e1568822bb77213016205fcc81e66fe676263358#npm:7.8.3"; - "@babel/plugin-syntax-class-properties" = packages."@babel/plugin-syntax-class-properties@virtual:4f2a00876e51daf6c174c9bd5e20efa043e1745940e553874e88ae6a111f477d701a48c909b8f10566385932e1568822bb77213016205fcc81e66fe676263358#npm:7.12.13"; - "@babel/plugin-syntax-import-meta" = packages."@babel/plugin-syntax-import-meta@virtual:4f2a00876e51daf6c174c9bd5e20efa043e1745940e553874e88ae6a111f477d701a48c909b8f10566385932e1568822bb77213016205fcc81e66fe676263358#npm:7.10.4"; - "@babel/plugin-syntax-json-strings" = packages."@babel/plugin-syntax-json-strings@virtual:4f2a00876e51daf6c174c9bd5e20efa043e1745940e553874e88ae6a111f477d701a48c909b8f10566385932e1568822bb77213016205fcc81e66fe676263358#npm:7.8.3"; - "@babel/plugin-syntax-logical-assignment-operators" = packages."@babel/plugin-syntax-logical-assignment-operators@virtual:4f2a00876e51daf6c174c9bd5e20efa043e1745940e553874e88ae6a111f477d701a48c909b8f10566385932e1568822bb77213016205fcc81e66fe676263358#npm:7.10.4"; - "@babel/plugin-syntax-nullish-coalescing-operator" = packages."@babel/plugin-syntax-nullish-coalescing-operator@virtual:4f2a00876e51daf6c174c9bd5e20efa043e1745940e553874e88ae6a111f477d701a48c909b8f10566385932e1568822bb77213016205fcc81e66fe676263358#npm:7.8.3"; - "@babel/plugin-syntax-numeric-separator" = packages."@babel/plugin-syntax-numeric-separator@virtual:4f2a00876e51daf6c174c9bd5e20efa043e1745940e553874e88ae6a111f477d701a48c909b8f10566385932e1568822bb77213016205fcc81e66fe676263358#npm:7.10.4"; - "@babel/plugin-syntax-object-rest-spread" = packages."@babel/plugin-syntax-object-rest-spread@virtual:4f2a00876e51daf6c174c9bd5e20efa043e1745940e553874e88ae6a111f477d701a48c909b8f10566385932e1568822bb77213016205fcc81e66fe676263358#npm:7.8.3"; - "@babel/plugin-syntax-optional-catch-binding" = packages."@babel/plugin-syntax-optional-catch-binding@virtual:4f2a00876e51daf6c174c9bd5e20efa043e1745940e553874e88ae6a111f477d701a48c909b8f10566385932e1568822bb77213016205fcc81e66fe676263358#npm:7.8.3"; - "@babel/plugin-syntax-optional-chaining" = packages."@babel/plugin-syntax-optional-chaining@virtual:4f2a00876e51daf6c174c9bd5e20efa043e1745940e553874e88ae6a111f477d701a48c909b8f10566385932e1568822bb77213016205fcc81e66fe676263358#npm:7.8.3"; - "@babel/plugin-syntax-top-level-await" = packages."@babel/plugin-syntax-top-level-await@virtual:4f2a00876e51daf6c174c9bd5e20efa043e1745940e553874e88ae6a111f477d701a48c909b8f10566385932e1568822bb77213016205fcc81e66fe676263358#npm:7.14.5"; - }; - }; - "babel-preset-jest@npm:29.2.0" = { - name = "babel-preset-jest"; - reference = "npm:29.2.0"; - linkType = "HARD"; - outputName = "babel-preset-jest-29.2.0-d765a77392"; - outputHash = "259627c6f9304d80bf653935b93de2819f147977b1151558dfa6bd1217ed85a04856e33319799895d74c77410c35b4bb43385860fcdb2b39838f008290b6b360"; - flatName = "babel-preset-jest"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^29.2.0"; - checksum = "9/259627c6f9304d80bf653935b93de2819f147977b1151558dfa6bd1217ed85a04856e33319799895d74c77410c35b4bb43385860fcdb2b39838f008290b6b360"; - dependencies = { - "babel-plugin-jest-hoist" = packages."babel-plugin-jest-hoist@npm:29.2.0"; - "babel-preset-current-node-syntax" = packages."babel-preset-current-node-syntax@npm:1.0.1"; - }; - packagePeers = [ - "@babel/core" - "@types/babel__core" - ]; - }; - "babel-preset-jest@virtual:55c688aa750f1cdfcb1f0bf9a04032de5fe95209d950f2ad14207ed234bf6b95599287e8b5ba6c356a6ed6415f5cb054d794c752489d8b7284c21b8f3fc49be9#npm:29.2.0" = { - name = "babel-preset-jest"; - reference = "virtual:55c688aa750f1cdfcb1f0bf9a04032de5fe95209d950f2ad14207ed234bf6b95599287e8b5ba6c356a6ed6415f5cb054d794c752489d8b7284c21b8f3fc49be9#npm:29.2.0"; - canonicalPackage = packages."babel-preset-jest@npm:29.2.0"; - dependencies = { - "@babel/core" = packages."@babel/core@npm:7.19.6"; - "@types/babel__core" = packages."@types/babel__core@npm:7.1.19"; - "babel-plugin-jest-hoist" = packages."babel-plugin-jest-hoist@npm:29.2.0"; - "babel-preset-current-node-syntax" = packages."babel-preset-current-node-syntax@virtual:cbeda26b7a469af5b5a4aeed0acd3b68a4655c00415b382aed941c15bddb3859da189c8bed48e00cc98cfc4ee5f0715eccde6e48160e8111b436752f7ac9880a#npm:1.0.1"; - }; - }; - "balanced-match@npm:1.0.2" = { - name = "balanced-match"; - reference = "npm:1.0.2"; - linkType = "HARD"; - outputName = "balanced-match-1.0.2-a53c126459"; - outputHash = "9ca7fca1845f06edbd8478e209a2e8eed5bb148a021719e77affeaf0c61e45af20279e4540a9f11942acc27c078fc132ff0ebc9c16a403033cff5af3d8199f40"; - flatName = "balanced-match"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^1.0.0"; - checksum = "9/9ca7fca1845f06edbd8478e209a2e8eed5bb148a021719e77affeaf0c61e45af20279e4540a9f11942acc27c078fc132ff0ebc9c16a403033cff5af3d8199f40"; - }; - "base64-js@npm:1.5.1" = { - name = "base64-js"; - reference = "npm:1.5.1"; - linkType = "HARD"; - outputName = "base64-js-1.5.1-b2f7275641"; - outputHash = "fbd7996978cfe0dd378103fa8999e4acee99b8840d49f452457fa8cb418bad4c20ec9ef6b196a0dc63591f0416a4b8c8d220607292cdaf3998b88685bc0f6c14"; - flatName = "base64-js"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^1.3.1"; - checksum = "9/fbd7996978cfe0dd378103fa8999e4acee99b8840d49f452457fa8cb418bad4c20ec9ef6b196a0dc63591f0416a4b8c8d220607292cdaf3998b88685bc0f6c14"; - }; - "bl@npm:4.1.0" = { - name = "bl"; - reference = "npm:4.1.0"; - linkType = "HARD"; - outputName = "bl-4.1.0-7f94cdcf3f"; - outputHash = "f6a0c17835e457f148ccc8703be5752de9cd79ef7343710fda7aac905a7187a31321005999b3b1b7ab3e8c2362a27222e7df110f7556fa3077e4fbc226ef5d5a"; - flatName = "bl"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^4.0.3"; - checksum = "9/f6a0c17835e457f148ccc8703be5752de9cd79ef7343710fda7aac905a7187a31321005999b3b1b7ab3e8c2362a27222e7df110f7556fa3077e4fbc226ef5d5a"; - dependencies = { - "buffer" = packages."buffer@npm:5.7.1"; - "inherits" = packages."inherits@npm:2.0.4"; - "readable-stream" = packages."readable-stream@npm:3.6.0"; - }; - }; - "brace-expansion@npm:1.1.11" = { - name = "brace-expansion"; - reference = "npm:1.1.11"; - linkType = "HARD"; - outputName = "brace-expansion-1.1.11-fb95eb05ad"; - outputHash = "5ecc6da29cd3b4d49a832fd8e48f3a8b6ac058f82fe778eb6751ed30a206c5ec5171f6f632aa1946ffb4f8151136740803f620b15edca8437a9348cbb21a8ba8"; - flatName = "brace-expansion"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^1.1.7"; - checksum = "9/5ecc6da29cd3b4d49a832fd8e48f3a8b6ac058f82fe778eb6751ed30a206c5ec5171f6f632aa1946ffb4f8151136740803f620b15edca8437a9348cbb21a8ba8"; - dependencies = { - "balanced-match" = packages."balanced-match@npm:1.0.2"; - "concat-map" = packages."concat-map@npm:0.0.1"; - }; - }; - "brace-expansion@npm:2.0.1" = { - name = "brace-expansion"; - reference = "npm:2.0.1"; - linkType = "HARD"; - outputName = "brace-expansion-2.0.1-17aa2616f9"; - outputHash = "0f8d0d6a165d636fed93a7dd9321a5ae122cac9a672d8a9e01997e4ae09743cb3cbfb0a6e6b32303cda0f1f40617e2c0953f28f59a6f01d6d12c9698a3f0e41b"; - flatName = "brace-expansion"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^2.0.1"; - checksum = "9/0f8d0d6a165d636fed93a7dd9321a5ae122cac9a672d8a9e01997e4ae09743cb3cbfb0a6e6b32303cda0f1f40617e2c0953f28f59a6f01d6d12c9698a3f0e41b"; - dependencies = { - "balanced-match" = packages."balanced-match@npm:1.0.2"; - }; - }; - "braces@npm:3.0.2" = { - name = "braces"; - reference = "npm:3.0.2"; - linkType = "HARD"; - outputName = "braces-3.0.2-782240b28a"; - outputHash = "1aa7f7f39e1dff23894196303515503dd945f36adcb78073ee067b421ecc595265556911183b24d1bc4e51011d3536d63d117cb4493e5123fcc7456596a93637"; - flatName = "braces"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^3.0.2"; - checksum = "9/1aa7f7f39e1dff23894196303515503dd945f36adcb78073ee067b421ecc595265556911183b24d1bc4e51011d3536d63d117cb4493e5123fcc7456596a93637"; - dependencies = { - "fill-range" = packages."fill-range@npm:7.0.1"; - }; - }; - "browserslist@npm:4.21.4" = { - name = "browserslist"; - reference = "npm:4.21.4"; - linkType = "HARD"; - outputName = "browserslist-4.21.4-7d64a96afc"; - outputHash = "a8fa463b17e7bfcc2bbcdd6036718a4663629d5fd4ad73f50ca45d10965c5cecc5953f6f007f1421888d84e5def3d6b027ad2c1b4776f93db6c49950059e5759"; - flatName = "browserslist"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^4.14.5"; - checksum = "9/a8fa463b17e7bfcc2bbcdd6036718a4663629d5fd4ad73f50ca45d10965c5cecc5953f6f007f1421888d84e5def3d6b027ad2c1b4776f93db6c49950059e5759"; - bin = { - "browserslist" = "cli.js"; - }; - dependencies = { - "caniuse-lite" = packages."caniuse-lite@npm:1.0.30001425"; - "electron-to-chromium" = packages."electron-to-chromium@npm:1.4.284"; - "node-releases" = packages."node-releases@npm:2.0.6"; - "update-browserslist-db" = packages."update-browserslist-db@virtual:7d64a96afc8cf9b31b95951ccc2f47931d0cf97faa526fd0d20448bf2c73ddf9f5ef9e5cd28839ae8b5791451df45079a407b3f4978367b4210748169f5848f6#npm:1.0.10"; - }; - }; - "bser@npm:2.1.1" = { - name = "bser"; - reference = "npm:2.1.1"; - linkType = "HARD"; - outputName = "bser-2.1.1-cc902055ce"; - outputHash = "bdce8c8576cc733882118f79534cb4335538104cb7b3f905852a45296b2e6177ddbdfd2521fd12371d0d4790b2168da549b8a7d7f5c69c36f8e49358155d75f7"; - flatName = "bser"; - languageName = "node"; - scope = null; - descriptorRange = "npm:2.1.1"; - checksum = "9/bdce8c8576cc733882118f79534cb4335538104cb7b3f905852a45296b2e6177ddbdfd2521fd12371d0d4790b2168da549b8a7d7f5c69c36f8e49358155d75f7"; - dependencies = { - "node-int64" = packages."node-int64@npm:0.4.0"; - }; - }; - "buffer-from@npm:1.1.2" = { - name = "buffer-from"; - reference = "npm:1.1.2"; - linkType = "HARD"; - outputName = "buffer-from-1.1.2-03d2f20d7e"; - outputHash = "2d8a264381325ee41959bb21bae76dc85b486f253e227a3fa70082c83f14c41665ce227ccda79e93ea2fc12e37a678fe956a6fa01b1876e6142eaf6554585ea4"; - flatName = "buffer-from"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^1.0.0"; - checksum = "9/2d8a264381325ee41959bb21bae76dc85b486f253e227a3fa70082c83f14c41665ce227ccda79e93ea2fc12e37a678fe956a6fa01b1876e6142eaf6554585ea4"; - }; - "buffer-writer@npm:2.0.0" = { - name = "buffer-writer"; - reference = "npm:2.0.0"; - linkType = "HARD"; - outputName = "buffer-writer-2.0.0-5cd2ef55bc"; - outputHash = "b8657f4ddafb0803fa5459282fb478c8d72dcde200e690b491f6d23b6247918c0eb17421eb18258765a12a95d7b65213475aebb6c87c7a3df14c064b534e1ead"; - flatName = "buffer-writer"; - languageName = "node"; - scope = null; - descriptorRange = "npm:2.0.0"; - checksum = "9/b8657f4ddafb0803fa5459282fb478c8d72dcde200e690b491f6d23b6247918c0eb17421eb18258765a12a95d7b65213475aebb6c87c7a3df14c064b534e1ead"; - }; - "buffer@npm:5.7.1" = { - name = "buffer"; - reference = "npm:5.7.1"; - linkType = "HARD"; - outputName = "buffer-5.7.1-513ef8259e"; - outputHash = "8e611bed4d0309f68565f233d604882560f1c5aece713c7cd4c3111dbfad1ed82bb0e7610685e434f175ee4f39d98bf3a47c5b9b3a3370df0ec85a977dfe837e"; - flatName = "buffer"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^5.5.0"; - checksum = "9/8e611bed4d0309f68565f233d604882560f1c5aece713c7cd4c3111dbfad1ed82bb0e7610685e434f175ee4f39d98bf3a47c5b9b3a3370df0ec85a977dfe837e"; - dependencies = { - "base64-js" = packages."base64-js@npm:1.5.1"; - "ieee754" = packages."ieee754@npm:1.2.1"; - }; - }; - "cacache@npm:16.1.3" = { - name = "cacache"; - reference = "npm:16.1.3"; - linkType = "HARD"; - outputName = "cacache-16.1.3-4e2088ed0d"; - outputHash = "54f39565219c47ac624e0efeae123551b5391844f18ae69d0c344f51ce2b9ae4adec62316e5eae7e11cf83c3c21f726a0117d55400182779dce687887ce3f50e"; - flatName = "cacache"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^16.1.0"; - checksum = "9/54f39565219c47ac624e0efeae123551b5391844f18ae69d0c344f51ce2b9ae4adec62316e5eae7e11cf83c3c21f726a0117d55400182779dce687887ce3f50e"; - dependencies = { - "@npmcli/fs" = packages."@npmcli/fs@npm:2.1.2"; - "@npmcli/move-file" = packages."@npmcli/move-file@npm:2.0.1"; - "chownr" = packages."chownr@npm:2.0.0"; - "fs-minipass" = packages."fs-minipass@npm:2.1.0"; - "glob" = packages."glob@npm:8.0.3"; - "infer-owner" = packages."infer-owner@npm:1.0.4"; - "lru-cache" = packages."lru-cache@npm:7.14.0"; - "minipass-collect" = packages."minipass-collect@npm:1.0.2"; - "minipass-flush" = packages."minipass-flush@npm:1.0.5"; - "minipass-pipeline" = packages."minipass-pipeline@npm:1.2.4"; - "minipass" = packages."minipass@npm:3.3.5"; - "mkdirp" = packages."mkdirp@npm:1.0.4"; - "p-map" = packages."p-map@npm:4.0.0"; - "rimraf" = packages."rimraf@npm:3.0.2"; - "ssri" = packages."ssri@npm:9.0.1"; - "tar" = packages."tar@npm:6.1.11"; - "unique-filename" = packages."unique-filename@npm:2.0.1"; - "promise-inflight" = packages."promise-inflight@virtual:4e2088ed0df52533102f445d7e7aeba6560b7effa0cabbc7cc20dd1e36a86dd838cc541de4414688f4ce3ec77b0ad5298cea6de581350d934ceb35c3e0fe3462#npm:1.0.1"; - }; - }; - "callsites@npm:3.1.0" = { - name = "callsites"; - reference = "npm:3.1.0"; - linkType = "HARD"; - outputName = "callsites-3.1.0-268f989910"; - outputHash = "a0672a95746fb1be281d90ceedafb6584dd7c33e85bb9987d6caad53ac6eb313874fc2045230e8e08ef076e4aaa899342d99bd9c47bb1dd4f6a2740b62482ca2"; - flatName = "callsites"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^3.0.0"; - checksum = "9/a0672a95746fb1be281d90ceedafb6584dd7c33e85bb9987d6caad53ac6eb313874fc2045230e8e08ef076e4aaa899342d99bd9c47bb1dd4f6a2740b62482ca2"; - }; - "camelcase@npm:5.3.1" = { - name = "camelcase"; - reference = "npm:5.3.1"; - linkType = "HARD"; - outputName = "camelcase-5.3.1-5db8af62c5"; - outputHash = "3875260be8f9761ab3870045b7c5c826f584070fe92f5c13a2800a84572d6edf16e6da01db01e135c6d080569fcd690bd2376bdabc3bc80a91da81d1b1c5e773"; - flatName = "camelcase"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^5.3.1"; - checksum = "9/3875260be8f9761ab3870045b7c5c826f584070fe92f5c13a2800a84572d6edf16e6da01db01e135c6d080569fcd690bd2376bdabc3bc80a91da81d1b1c5e773"; - }; - "camelcase@npm:6.3.0" = { - name = "camelcase"; - reference = "npm:6.3.0"; - linkType = "HARD"; - outputName = "camelcase-6.3.0-e5e42a0d15"; - outputHash = "3c802157fc61af58194ed056d1830444ec1268a556bb90c7a3a729db481a897cbfdf86fb9db91b45b5e3b891183024e13bf26c866e8e5a37853ace6fa01b7be1"; - flatName = "camelcase"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^6.2.0"; - checksum = "9/3c802157fc61af58194ed056d1830444ec1268a556bb90c7a3a729db481a897cbfdf86fb9db91b45b5e3b891183024e13bf26c866e8e5a37853ace6fa01b7be1"; - }; - "caniuse-lite@npm:1.0.30001418" = { - name = "caniuse-lite"; - reference = "npm:1.0.30001418"; - linkType = "HARD"; - outputName = "caniuse-lite-1.0.30001418-f39922077d"; - outputHash = "7cff5e32bec494a816c0d1f56bb3444754e91fe7c4c446e8c0bad88dbf7d563ce57264a0626fbbcc001515f8d22c6b234790577ec9d471932c881f76938ed80c"; - flatName = "caniuse-lite"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^1.0.30001406"; - checksum = "9/7cff5e32bec494a816c0d1f56bb3444754e91fe7c4c446e8c0bad88dbf7d563ce57264a0626fbbcc001515f8d22c6b234790577ec9d471932c881f76938ed80c"; - }; - "caniuse-lite@npm:1.0.30001425" = { - name = "caniuse-lite"; - reference = "npm:1.0.30001425"; - linkType = "HARD"; - outputName = "caniuse-lite-1.0.30001425-38cbab85bc"; - outputHash = "0eaf0869891daac76cd6f7460eea42f454c57da0bcb6bf00072c91b8299c060c47c1a85bd6cfa1694b48a8609dbf1084c69017e726ab8241ffa23b431a9e3c39"; - flatName = "caniuse-lite"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^1.0.30001400"; - checksum = "9/0eaf0869891daac76cd6f7460eea42f454c57da0bcb6bf00072c91b8299c060c47c1a85bd6cfa1694b48a8609dbf1084c69017e726ab8241ffa23b431a9e3c39"; - }; - "canvas@npm:2.10.1" = { - name = "canvas"; - reference = "npm:2.10.1"; - linkType = "HARD"; - outputName = "canvas-2.10.1-2f4cd381e7"; - outputHashByPlatform = { - "aarch64-darwin" = "sha512-ONnMZtERXYzvB0Vwg9dIe7KqbqyGqwUZfnP1iroDlozhUcd/a4UaQKUaycxSH0H3pyWthHY0F//GWtnb6WWYhg=="; - }; - shouldBeUnplugged = true; - flatName = "canvas"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^2.10.1"; - checksum = "9/eac07e4751e6c8caefb19cecc03fb80fbba449197156a75ad4b16811306f043c2f6100551b7d753ac920c86a69160d3949e6f18ff4a85cb9c45d799b4c39608d"; - dependencies = { - "@mapbox/node-pre-gyp" = packages."@mapbox/node-pre-gyp@npm:1.0.10"; - "nan" = packages."nan@npm:2.17.0"; - "node-gyp" = packages."node-gyp@npm:9.3.0"; - "simple-get" = packages."simple-get@npm:3.1.1"; - }; - }; - "chai@npm:4.3.6" = { - name = "chai"; - reference = "npm:4.3.6"; - linkType = "HARD"; - outputName = "chai-4.3.6-dba90e4b0b"; - outputHash = "a825508745171efaaa2788884fba5c6a7135625c297193a06546e6c85533eaec315d6e13a5a739bc54db2f48aa99c205bf62a462ec2ca67fd20b8a560feed1ba"; - flatName = "chai"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^4.3.6"; - checksum = "9/a825508745171efaaa2788884fba5c6a7135625c297193a06546e6c85533eaec315d6e13a5a739bc54db2f48aa99c205bf62a462ec2ca67fd20b8a560feed1ba"; - dependencies = { - "assertion-error" = packages."assertion-error@npm:1.1.0"; - "check-error" = packages."check-error@npm:1.0.2"; - "deep-eql" = packages."deep-eql@npm:3.0.1"; - "get-func-name" = packages."get-func-name@npm:2.0.0"; - "loupe" = packages."loupe@npm:2.3.4"; - "pathval" = packages."pathval@npm:1.1.1"; - "type-detect" = packages."type-detect@npm:4.0.8"; - }; - }; - "chalk@npm:2.4.2" = { - name = "chalk"; - reference = "npm:2.4.2"; - linkType = "HARD"; - outputName = "chalk-2.4.2-3ea16dd91e"; - outputHash = "befd2fe888067cfc8ceac2e7a6a62ee763b26112479dce4ee396981288fa21d5cdf3cc1b45692c94c7c6dc3638c4dc3ee6ec1c794efdf42b02e02f93039285ec"; - flatName = "chalk"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^2.0.0"; - checksum = "9/befd2fe888067cfc8ceac2e7a6a62ee763b26112479dce4ee396981288fa21d5cdf3cc1b45692c94c7c6dc3638c4dc3ee6ec1c794efdf42b02e02f93039285ec"; - dependencies = { - "ansi-styles" = packages."ansi-styles@npm:3.2.1"; - "escape-string-regexp" = packages."escape-string-regexp@npm:1.0.5"; - "supports-color" = packages."supports-color@npm:5.5.0"; - }; - }; - "chalk@npm:4.1.2" = { - name = "chalk"; - reference = "npm:4.1.2"; - linkType = "HARD"; - outputName = "chalk-4.1.2-ba8b67ab80"; - outputHash = "cb96ab47eb1b55525e72caac9eed1513bff28e686df7eee6b04379c80922df21c8283d9938af16a645826c94c9e19fb52ad63cbead6b5073d08ae5f8fa2661a2"; - flatName = "chalk"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^4.0.0"; - checksum = "9/cb96ab47eb1b55525e72caac9eed1513bff28e686df7eee6b04379c80922df21c8283d9938af16a645826c94c9e19fb52ad63cbead6b5073d08ae5f8fa2661a2"; - dependencies = { - "ansi-styles" = packages."ansi-styles@npm:4.3.0"; - "supports-color" = packages."supports-color@npm:7.2.0"; - }; - }; - "char-regex@npm:1.0.2" = { - name = "char-regex"; - reference = "npm:1.0.2"; - linkType = "HARD"; - outputName = "char-regex-1.0.2-ecade5f97f"; - outputHash = "614ffe9ff30e6bd3ab141731f3f5573f971a967cd4ef9b0590f874fd7ce43f10d3c46bc3a825a484908070452c307cb73b4860f90e30df08aaa6c89703e0c4c0"; - flatName = "char-regex"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^1.0.2"; - checksum = "9/614ffe9ff30e6bd3ab141731f3f5573f971a967cd4ef9b0590f874fd7ce43f10d3c46bc3a825a484908070452c307cb73b4860f90e30df08aaa6c89703e0c4c0"; - }; - "check-error@npm:1.0.2" = { - name = "check-error"; - reference = "npm:1.0.2"; - linkType = "HARD"; - outputName = "check-error-1.0.2-00c540c6e9"; - outputHash = "5ef1bce78b7105bd5b3f2e7d80a2c2d405a52c3f53d8c48da34d4b8d05f2a63cda26a66e058c4bcc4111be79246ba9ba93074bc4d8e2a65fe3566f8a3f2f7851"; - flatName = "check-error"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^1.0.2"; - checksum = "9/5ef1bce78b7105bd5b3f2e7d80a2c2d405a52c3f53d8c48da34d4b8d05f2a63cda26a66e058c4bcc4111be79246ba9ba93074bc4d8e2a65fe3566f8a3f2f7851"; - }; - "chownr@npm:1.1.4" = { - name = "chownr"; - reference = "npm:1.1.4"; - linkType = "HARD"; - outputName = "chownr-1.1.4-5bd400ab08"; - outputHash = "011dfe9853fe7feed4fdcb25d2d3b2bf67957948f8e7988d7540aaf56e9cbfb5384d5b56808dfa140277be02401acdfa75f5b67b78576497e482ea8036666ed2"; - flatName = "chownr"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^1.1.1"; - checksum = "9/011dfe9853fe7feed4fdcb25d2d3b2bf67957948f8e7988d7540aaf56e9cbfb5384d5b56808dfa140277be02401acdfa75f5b67b78576497e482ea8036666ed2"; - }; - "chownr@npm:2.0.0" = { - name = "chownr"; - reference = "npm:2.0.0"; - linkType = "HARD"; - outputName = "chownr-2.0.0-638f1c9c61"; - outputHash = "7b240ff920db951fd3841116c5e0e2ec4750e20c85cd044ea78f636202e1fa47ce0a20d48c3c912edc52ea0f1615aba37bdd6297d3a731b517647ed33c3dee09"; - flatName = "chownr"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^2.0.0"; - checksum = "9/7b240ff920db951fd3841116c5e0e2ec4750e20c85cd044ea78f636202e1fa47ce0a20d48c3c912edc52ea0f1615aba37bdd6297d3a731b517647ed33c3dee09"; - }; - "chrome-trace-event@npm:1.0.3" = { - name = "chrome-trace-event"; - reference = "npm:1.0.3"; - linkType = "HARD"; - outputName = "chrome-trace-event-1.0.3-e0ae3dcd60"; - outputHash = "c5ebf04331c4cd9112c9a4ae1d24dc0918fa9e4756de00dce7af149f9cf60b82cbe93573b6552e1099fd4c71a8a688c463f01222cdc48e47935f26a6fa86b989"; - flatName = "chrome-trace-event"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^1.0.2"; - checksum = "9/c5ebf04331c4cd9112c9a4ae1d24dc0918fa9e4756de00dce7af149f9cf60b82cbe93573b6552e1099fd4c71a8a688c463f01222cdc48e47935f26a6fa86b989"; - }; - "ci-info@npm:3.5.0" = { - name = "ci-info"; - reference = "npm:3.5.0"; - linkType = "HARD"; - outputName = "ci-info-3.5.0-9f42814be7"; - outputHash = "d80d63d9c549c277a9feebb83cb300df5b8dbc2a799d35a413af4aaa31f6c1635216cdc52b3232846501d31eff0684c583cf24db3c770cdf2f0fcfcac4835d86"; - flatName = "ci-info"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^3.2.0"; - checksum = "9/d80d63d9c549c277a9feebb83cb300df5b8dbc2a799d35a413af4aaa31f6c1635216cdc52b3232846501d31eff0684c583cf24db3c770cdf2f0fcfcac4835d86"; - }; - "cjs-module-lexer@npm:1.2.2" = { - name = "cjs-module-lexer"; - reference = "npm:1.2.2"; - linkType = "HARD"; - outputName = "cjs-module-lexer-1.2.2-473ce063ea"; - outputHash = "a16484407ca1ed082b84f9581c757a17a9329a4f3096876a7eb6a434d3405f9774dcf1cc37779e0fa0024ef9bff4ebc2bae6549c84b3f6500b28797a5c5e5982"; - flatName = "cjs-module-lexer"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^1.0.0"; - checksum = "9/a16484407ca1ed082b84f9581c757a17a9329a4f3096876a7eb6a434d3405f9774dcf1cc37779e0fa0024ef9bff4ebc2bae6549c84b3f6500b28797a5c5e5982"; - }; - "clean-stack@npm:2.2.0" = { - name = "clean-stack"; - reference = "npm:2.2.0"; - linkType = "HARD"; - outputName = "clean-stack-2.2.0-a8ce435a5c"; - outputHash = "0a476c914f0a5e9e12b215729e1a633fcbdd47b8c3d508ebe6441f2ef8d5047fdd0800926349dd18253db4bfcab3e48aa0aca1f2e7f5d614f7194778d7851be4"; - flatName = "clean-stack"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^2.0.0"; - checksum = "9/0a476c914f0a5e9e12b215729e1a633fcbdd47b8c3d508ebe6441f2ef8d5047fdd0800926349dd18253db4bfcab3e48aa0aca1f2e7f5d614f7194778d7851be4"; - }; - "cliui@npm:8.0.1" = { - name = "cliui"; - reference = "npm:8.0.1"; - linkType = "HARD"; - outputName = "cliui-8.0.1-3b029092cf"; - outputHash = "4db0fc81f3dbd46b65840a739a43ce83a69e58d7da5ae701948fbfc14c25d82a02dd3a3dbed5a20828000e93b4bf2217b181a0a089d580af5daf9452e9c9eab3"; - flatName = "cliui"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^8.0.1"; - checksum = "9/4db0fc81f3dbd46b65840a739a43ce83a69e58d7da5ae701948fbfc14c25d82a02dd3a3dbed5a20828000e93b4bf2217b181a0a089d580af5daf9452e9c9eab3"; - dependencies = { - "string-width" = packages."string-width@npm:4.2.3"; - "strip-ansi" = packages."strip-ansi@npm:6.0.1"; - "wrap-ansi" = packages."wrap-ansi@npm:7.0.0"; - }; - }; - "clone-deep@npm:4.0.1" = { - name = "clone-deep"; - reference = "npm:4.0.1"; - linkType = "HARD"; - outputName = "clone-deep-4.0.1-70adab92c8"; - outputHash = "228bea0184f809b1d525a7c4fa522b35cb2916bb841122507d7be4e6503d8a3382a0a4804cfeae61243cfd8a337959fed9b90daed6f7efbf9d53e478d1f23649"; - flatName = "clone-deep"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^4.0.1"; - checksum = "9/228bea0184f809b1d525a7c4fa522b35cb2916bb841122507d7be4e6503d8a3382a0a4804cfeae61243cfd8a337959fed9b90daed6f7efbf9d53e478d1f23649"; - dependencies = { - "is-plain-object" = packages."is-plain-object@npm:2.0.4"; - "kind-of" = packages."kind-of@npm:6.0.3"; - "shallow-clone" = packages."shallow-clone@npm:3.0.1"; - }; - }; - "co@npm:4.6.0" = { - name = "co"; - reference = "npm:4.6.0"; - linkType = "HARD"; - outputName = "co-4.6.0-03f2d1feb6"; - outputHash = "56e031a6f6db918ea18a8268e68b519792e92e4870063652788c1045af18832c6d7eed36151bb62268ddc760202db2b7562744eb0b6af2ad91ac594e63e31321"; - flatName = "co"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^4.6.0"; - checksum = "9/56e031a6f6db918ea18a8268e68b519792e92e4870063652788c1045af18832c6d7eed36151bb62268ddc760202db2b7562744eb0b6af2ad91ac594e63e31321"; - }; - "collect-v8-coverage@npm:1.0.1" = { - name = "collect-v8-coverage"; - reference = "npm:1.0.1"; - linkType = "HARD"; - outputName = "collect-v8-coverage-1.0.1-39dec86bad"; - outputHash = "422b56eb5ff771894bcb3092061c9cb63206be37b10e551c906dca1f9d417920de869f09dfbfdd2dfa0886e324187fed3945a9432de5b2dae5a473e5ff49823c"; - flatName = "collect-v8-coverage"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^1.0.0"; - checksum = "9/422b56eb5ff771894bcb3092061c9cb63206be37b10e551c906dca1f9d417920de869f09dfbfdd2dfa0886e324187fed3945a9432de5b2dae5a473e5ff49823c"; - }; - "color-convert@npm:1.9.3" = { - name = "color-convert"; - reference = "npm:1.9.3"; - linkType = "HARD"; - outputName = "color-convert-1.9.3-1fe690075e"; - outputHash = "42f852d574dc58609bba286cd7d10a407e213e20515c0d5d1dd8059b3d4373cd76d1057c3a242f441f2dfc6667badeb790a792662082c8038889c9235f4cd9fa"; - flatName = "color-convert"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^1.9.0"; - checksum = "9/42f852d574dc58609bba286cd7d10a407e213e20515c0d5d1dd8059b3d4373cd76d1057c3a242f441f2dfc6667badeb790a792662082c8038889c9235f4cd9fa"; - dependencies = { - "color-name" = packages."color-name@npm:1.1.3"; - }; - }; - "color-convert@npm:2.0.1" = { - name = "color-convert"; - reference = "npm:2.0.1"; - linkType = "HARD"; - outputName = "color-convert-2.0.1-79730e935b"; - outputHash = "bf4d19d12621eae71a531e5b977f46717b15e0d3253f25790f5779b7577124e4d9c4597df05cee79e8f8e8fc14add04e738a659ee4336ee0cc5587ebc3c602e7"; - flatName = "color-convert"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^2.0.1"; - checksum = "9/bf4d19d12621eae71a531e5b977f46717b15e0d3253f25790f5779b7577124e4d9c4597df05cee79e8f8e8fc14add04e738a659ee4336ee0cc5587ebc3c602e7"; - dependencies = { - "color-name" = packages."color-name@npm:1.1.4"; - }; - }; - "color-name@npm:1.1.3" = { - name = "color-name"; - reference = "npm:1.1.3"; - linkType = "HARD"; - outputName = "color-name-1.1.3-728b7b5d39"; - outputHash = "b7313c98fd745336a5e1d64921591bcd60e4e0b3894afb56286a4793c4fd304d4a38b00b514845381215ca5ed2994be05d2e1a5a80860b996d26f5f285c77dda"; - flatName = "color-name"; - languageName = "node"; - scope = null; - descriptorRange = "npm:1.1.3"; - checksum = "9/b7313c98fd745336a5e1d64921591bcd60e4e0b3894afb56286a4793c4fd304d4a38b00b514845381215ca5ed2994be05d2e1a5a80860b996d26f5f285c77dda"; - }; - "color-name@npm:1.1.4" = { - name = "color-name"; - reference = "npm:1.1.4"; - linkType = "HARD"; - outputName = "color-name-1.1.4-025792b0ea"; - outputHash = "80acf64638343898f5b36825f4c9715ced380e738400b308f3f90ca2327f2f98f0c2cfb1f1a6447f267a2e1d1ea2214f26e948d8acab547e5478e2b0816c7c30"; - flatName = "color-name"; - languageName = "node"; - scope = null; - descriptorRange = "npm:~1.1.4"; - checksum = "9/80acf64638343898f5b36825f4c9715ced380e738400b308f3f90ca2327f2f98f0c2cfb1f1a6447f267a2e1d1ea2214f26e948d8acab547e5478e2b0816c7c30"; - }; - "color-string@npm:1.9.1" = { - name = "color-string"; - reference = "npm:1.9.1"; - linkType = "HARD"; - outputName = "color-string-1.9.1-dc020e56be"; - outputHash = "cf76db4143e9d375401d56831ec6bffdfff17aa90276a41dcbdb1723fd7242b2cb6ed2058901544af5823fdf152cdea02eda8546cdd3fe96d4a6a16920166902"; - flatName = "color-string"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^1.9.0"; - checksum = "9/cf76db4143e9d375401d56831ec6bffdfff17aa90276a41dcbdb1723fd7242b2cb6ed2058901544af5823fdf152cdea02eda8546cdd3fe96d4a6a16920166902"; - dependencies = { - "color-name" = packages."color-name@npm:1.1.4"; - "simple-swizzle" = packages."simple-swizzle@npm:0.2.2"; - }; - }; - "color-support@npm:1.1.3" = { - name = "color-support"; - reference = "npm:1.1.3"; - linkType = "HARD"; - outputName = "color-support-1.1.3-3be5c53455"; - outputHash = "8dc879a976be92306773276728e0bbb0925478b2373f133a98e563c497ccd58f220b9c30cea37c72678fe071627d7391b3751a1b92aaa5e872cd278b00b96b74"; - flatName = "color-support"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^1.1.3"; - checksum = "9/8dc879a976be92306773276728e0bbb0925478b2373f133a98e563c497ccd58f220b9c30cea37c72678fe071627d7391b3751a1b92aaa5e872cd278b00b96b74"; - bin = { - "color-support" = "bin.js"; - }; - }; - "color@npm:4.2.3" = { - name = "color"; - reference = "npm:4.2.3"; - linkType = "HARD"; - outputName = "color-4.2.3-4a23227581"; - outputHash = "6163589829b503c36000a0f2a5854661ecc1c1660d98a703a3230fb1b44b00a6b9804ac1cf8e77d05eab084e6ecac35c0a59d1791c6ff1508bee9636ae0b78b7"; - flatName = "color"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^4.2.3"; - checksum = "9/6163589829b503c36000a0f2a5854661ecc1c1660d98a703a3230fb1b44b00a6b9804ac1cf8e77d05eab084e6ecac35c0a59d1791c6ff1508bee9636ae0b78b7"; - dependencies = { - "color-convert" = packages."color-convert@npm:2.0.1"; - "color-string" = packages."color-string@npm:1.9.1"; - }; - }; - "colorette@npm:2.0.19" = { - name = "colorette"; - reference = "npm:2.0.19"; - linkType = "HARD"; - outputName = "colorette-2.0.19-f73dfe6a4e"; - outputHash = "f887e4f7608a1a37037f0b9f7da4d1608e2e1ac0126b87c4c143ff0348bc586173b86fde37f71f1b7742cd1c04285d0cb3cbeab391935886c86a162f4f2b5b87"; - flatName = "colorette"; - languageName = "node"; - scope = null; - descriptorRange = "npm:2.0.19"; - checksum = "9/f887e4f7608a1a37037f0b9f7da4d1608e2e1ac0126b87c4c143ff0348bc586173b86fde37f71f1b7742cd1c04285d0cb3cbeab391935886c86a162f4f2b5b87"; - }; - "commander@npm:2.20.3" = { - name = "commander"; - reference = "npm:2.20.3"; - linkType = "HARD"; - outputName = "commander-2.20.3-d8dcbaa39b"; - outputHash = "a6cb7ce73cc1db74a2da4bb6b4fc4f9a655ba35beb90f32bf5831d7d3be610dafc01dcc8a17f8204cf4e3f1f434d2115b7db56dfb0b827d42b10d1ba6ae8cbb4"; - flatName = "commander"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^2.20.0"; - checksum = "9/a6cb7ce73cc1db74a2da4bb6b4fc4f9a655ba35beb90f32bf5831d7d3be610dafc01dcc8a17f8204cf4e3f1f434d2115b7db56dfb0b827d42b10d1ba6ae8cbb4"; - }; - "commander@npm:7.2.0" = { - name = "commander"; - reference = "npm:7.2.0"; - linkType = "HARD"; - outputName = "commander-7.2.0-19178180f8"; - outputHash = "1270a98c752348d62803dd6214bba584a13e5c80e0d32d590740f26c534209882a93daf471697326ad80b3f4f0417df31aca7b127e01efee58fe883b47c1a492"; - flatName = "commander"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^7.0.0"; - checksum = "9/1270a98c752348d62803dd6214bba584a13e5c80e0d32d590740f26c534209882a93daf471697326ad80b3f4f0417df31aca7b127e01efee58fe883b47c1a492"; - }; - "commander@npm:9.4.1" = { - name = "commander"; - reference = "npm:9.4.1"; - linkType = "HARD"; - outputName = "commander-9.4.1-9deffb2749"; - outputHash = "7d4c1f3bd4ad451f43fce51b9c73dc2d61fca00a9249196aa2d3d66fc46f2460c917c73ea9221c278fb8d35f496384f5125806e69108581a8e8bc673752c94e6"; - flatName = "commander"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^9.1.0"; - checksum = "9/7d4c1f3bd4ad451f43fce51b9c73dc2d61fca00a9249196aa2d3d66fc46f2460c917c73ea9221c278fb8d35f496384f5125806e69108581a8e8bc673752c94e6"; - }; - "concat-map@npm:0.0.1" = { - name = "concat-map"; - reference = "npm:0.0.1"; - linkType = "HARD"; - outputName = "concat-map-0.0.1-85a921b7ee"; - outputHash = "88222f18b3a68b71fe4473a146c8ed3315ec0488703104319c53543ad4668af3e79418ab79e2fa8032ee04c3eb45cc478815b89877a048cc5ba34e201bc15c35"; - flatName = "concat-map"; - languageName = "node"; - scope = null; - descriptorRange = "npm:0.0.1"; - checksum = "9/88222f18b3a68b71fe4473a146c8ed3315ec0488703104319c53543ad4668af3e79418ab79e2fa8032ee04c3eb45cc478815b89877a048cc5ba34e201bc15c35"; - }; - "console-control-strings@npm:1.1.0" = { - name = "console-control-strings"; - reference = "npm:1.1.0"; - linkType = "HARD"; - outputName = "console-control-strings-1.1.0-e3160e5275"; - outputHash = "d286ffd439aac97472557325e6aa4cc3a2eefe495a70a9640b89508880db4bba1bd1b29bb011608c23033d884c84cac8da95c8f12ca0ec69ccc70d6d5f39c618"; - flatName = "console-control-strings"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^1.1.0"; - checksum = "9/d286ffd439aac97472557325e6aa4cc3a2eefe495a70a9640b89508880db4bba1bd1b29bb011608c23033d884c84cac8da95c8f12ca0ec69ccc70d6d5f39c618"; - }; - "convert-source-map@npm:1.9.0" = { - name = "convert-source-map"; - reference = "npm:1.9.0"; - linkType = "HARD"; - outputName = "convert-source-map-1.9.0-e294555f4b"; - outputHash = "7c665ec75a792623eff22413a59fb6646770063eb871efe7550cfba4f17177137ea300f964c2763db69355384398de491126fbe064fa83b25e3023b87711b6e4"; - flatName = "convert-source-map"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^1.4.0"; - checksum = "9/7c665ec75a792623eff22413a59fb6646770063eb871efe7550cfba4f17177137ea300f964c2763db69355384398de491126fbe064fa83b25e3023b87711b6e4"; - }; - "cross-spawn@npm:7.0.3" = { - name = "cross-spawn"; - reference = "npm:7.0.3"; - linkType = "HARD"; - outputName = "cross-spawn-7.0.3-e4ff3e65b3"; - outputHash = "37ec685f91f04d4719892f305fa6f632aae256df7f2f3f98d5c36f2197651ad7b77851aaa2d397d19a9555f0fb89fa18f9bb3ff4b440535cc0fb4fe0a72004b9"; - flatName = "cross-spawn"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^7.0.3"; - checksum = "9/37ec685f91f04d4719892f305fa6f632aae256df7f2f3f98d5c36f2197651ad7b77851aaa2d397d19a9555f0fb89fa18f9bb3ff4b440535cc0fb4fe0a72004b9"; - dependencies = { - "path-key" = packages."path-key@npm:3.1.1"; - "shebang-command" = packages."shebang-command@npm:2.0.0"; - "which" = packages."which@npm:2.0.2"; - }; - }; - "debug@npm:4.3.4" = { - name = "debug"; - reference = "npm:4.3.4"; - linkType = "HARD"; - outputName = "debug-4.3.4-4513954577"; - outputHash = "ab50d98b6f2a0e803379e8f789017f4215efd0e085774623e462c691e9f99bfd359a35f7424ff401da3ea58b31f89ceebc9ea35779b4a94f78b0ee3e235b6640"; - flatName = "debug"; - languageName = "node"; - scope = null; - descriptorRange = "npm:4.3.4"; - checksum = "9/ab50d98b6f2a0e803379e8f789017f4215efd0e085774623e462c691e9f99bfd359a35f7424ff401da3ea58b31f89ceebc9ea35779b4a94f78b0ee3e235b6640"; - dependencies = { - "ms" = packages."ms@npm:2.1.2"; - }; - packagePeers = [ - "@types/supports-color" - "supports-color" - ]; - }; - "debug@virtual:113ef2a03aa3de337889da32b02d27edf5e95d2b3c50aaf8ade4848a62355b637cece6c5a2b0f14480eef0d6c8ed8e9cacaca7d39e60125049f7120bdbeb5489#npm:4.3.4" = { - name = "debug"; - reference = "virtual:113ef2a03aa3de337889da32b02d27edf5e95d2b3c50aaf8ade4848a62355b637cece6c5a2b0f14480eef0d6c8ed8e9cacaca7d39e60125049f7120bdbeb5489#npm:4.3.4"; - canonicalPackage = packages."debug@npm:4.3.4"; - dependencies = { - "ms" = packages."ms@npm:2.1.2"; - }; - }; - "decompress-response@npm:4.2.1" = { - name = "decompress-response"; - reference = "npm:4.2.1"; - linkType = "HARD"; - outputName = "decompress-response-4.2.1-abe5b4ebe4"; - outputHash = "8ef520663eef28e2249ea8de998e43dc506c38a2d6082954dd62385ee1c28c680d94821977467bf06191585315021d61e2e0aa4fc8dd7af38f04c01c3e023fec"; - flatName = "decompress-response"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^4.2.0"; - checksum = "9/8ef520663eef28e2249ea8de998e43dc506c38a2d6082954dd62385ee1c28c680d94821977467bf06191585315021d61e2e0aa4fc8dd7af38f04c01c3e023fec"; - dependencies = { - "mimic-response" = packages."mimic-response@npm:2.1.0"; - }; - }; - "decompress-response@npm:6.0.0" = { - name = "decompress-response"; - reference = "npm:6.0.0"; - linkType = "HARD"; - outputName = "decompress-response-6.0.0-359de2878c"; - outputHash = "b4575b109e38fe4bc10a8dc1a9167490da2efc07449bdc2ac9e3444592ee892e84fa89974448639388ad1f56f3a16e95606f3ab9d0c3dbdb84f1cbe432252b9f"; - flatName = "decompress-response"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^6.0.0"; - checksum = "9/b4575b109e38fe4bc10a8dc1a9167490da2efc07449bdc2ac9e3444592ee892e84fa89974448639388ad1f56f3a16e95606f3ab9d0c3dbdb84f1cbe432252b9f"; - dependencies = { - "mimic-response" = packages."mimic-response@npm:3.1.0"; - }; - }; - "dedent@npm:0.7.0" = { - name = "dedent"; - reference = "npm:0.7.0"; - linkType = "HARD"; - outputName = "dedent-0.7.0-2dbb45a4c5"; - outputHash = "ca3f1755ff26262fd43c339faafd3e92c1b3265b132397fc702d97643173fc03f35209af8f93583a99f878c6a355300971dbd2a27e7e0a4af4380c7b38d907ae"; - flatName = "dedent"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^0.7.0"; - checksum = "9/ca3f1755ff26262fd43c339faafd3e92c1b3265b132397fc702d97643173fc03f35209af8f93583a99f878c6a355300971dbd2a27e7e0a4af4380c7b38d907ae"; - }; - "deep-eql@npm:3.0.1" = { - name = "deep-eql"; - reference = "npm:3.0.1"; - linkType = "HARD"; - outputName = "deep-eql-3.0.1-9a66c09c65"; - outputHash = "65824d56734864b95537d70bdf3a7857d157ad217bb6d16bbe92477b7aed0ab04c0d14c3909abdd47fba35f714d012627309377adba80fb0420dc3a72c746e62"; - flatName = "deep-eql"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^3.0.1"; - checksum = "9/65824d56734864b95537d70bdf3a7857d157ad217bb6d16bbe92477b7aed0ab04c0d14c3909abdd47fba35f714d012627309377adba80fb0420dc3a72c746e62"; - dependencies = { - "type-detect" = packages."type-detect@npm:4.0.8"; - }; - }; - "deep-extend@npm:0.6.0" = { - name = "deep-extend"; - reference = "npm:0.6.0"; - linkType = "HARD"; - outputName = "deep-extend-0.6.0-e182924219"; - outputHash = "9320ad7378ceb509703180d40da1625393906f55beeb10b55d9a1d39dc77e6e56e76c09eef905320330f89738df2c40bdf0e85777d14d5d3a8059c3cabbf3919"; - flatName = "deep-extend"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^0.6.0"; - checksum = "9/9320ad7378ceb509703180d40da1625393906f55beeb10b55d9a1d39dc77e6e56e76c09eef905320330f89738df2c40bdf0e85777d14d5d3a8059c3cabbf3919"; - }; - "deepmerge@npm:4.2.2" = { - name = "deepmerge"; - reference = "npm:4.2.2"; - linkType = "HARD"; - outputName = "deepmerge-4.2.2-112165ced2"; - outputHash = "f37e1f5e8cfca71833a43a5d14ad1bf533689b1e5acff72eefa9bdd26f1a4fe80153e29238e8b3052e5f8c4169a95992456f3b60cd50a9db94a84680712a9aca"; - flatName = "deepmerge"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^4.2.2"; - checksum = "9/f37e1f5e8cfca71833a43a5d14ad1bf533689b1e5acff72eefa9bdd26f1a4fe80153e29238e8b3052e5f8c4169a95992456f3b60cd50a9db94a84680712a9aca"; - }; - "define-lazy-prop@npm:2.0.0" = { - name = "define-lazy-prop"; - reference = "npm:2.0.0"; - linkType = "HARD"; - outputName = "define-lazy-prop-2.0.0-bba0cd91a7"; - outputHash = "53656037e7b33e52c0cb39d8348c92087b961711c89fa7df07e6c8cfe5039d17157ee8e22c00bbdd4d1038a114f2d38821fcef4668d4c87854635ec13e87b808"; - flatName = "define-lazy-prop"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^2.0.0"; - checksum = "9/53656037e7b33e52c0cb39d8348c92087b961711c89fa7df07e6c8cfe5039d17157ee8e22c00bbdd4d1038a114f2d38821fcef4668d4c87854635ec13e87b808"; - }; - "delegates@npm:1.0.0" = { - name = "delegates"; - reference = "npm:1.0.0"; - linkType = "HARD"; - outputName = "delegates-1.0.0-9b1942d75f"; - outputHash = "2ef8c043c6caea7f00f23236e0606b00f10d2b497657d63d230e50efdef307936b070734187b03960b9c4afe64ce9e09a77c01da60e661d42dcefec11ce41c30"; - flatName = "delegates"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^1.0.0"; - checksum = "9/2ef8c043c6caea7f00f23236e0606b00f10d2b497657d63d230e50efdef307936b070734187b03960b9c4afe64ce9e09a77c01da60e661d42dcefec11ce41c30"; - }; - "depd@npm:1.1.2" = { - name = "depd"; - reference = "npm:1.1.2"; - linkType = "HARD"; - outputName = "depd-1.1.2-b0c8414da7"; - outputHash = "e9fb93771e7cf3d88c4e38ca95742f7c58cae31928eb5e67a1a14d970325a02755451bb7fafc2db72333a5cf7fc14e07e4f8d709c0df70143355e77e8d090bac"; - flatName = "depd"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^1.1.2"; - checksum = "9/e9fb93771e7cf3d88c4e38ca95742f7c58cae31928eb5e67a1a14d970325a02755451bb7fafc2db72333a5cf7fc14e07e4f8d709c0df70143355e77e8d090bac"; - }; - "detect-libc@npm:2.0.1" = { - name = "detect-libc"; - reference = "npm:2.0.1"; - linkType = "HARD"; - outputName = "detect-libc-2.0.1-2699cb2ac4"; - outputHash = "056a7941c5d60b4f40aa23b77f0bed29de4b3fe281f063812a67e4e6320a0efb1e4b811bf7b01e72b2b643ea009b14165e0b72588c08e1c8de2412945b4dcc6f"; - flatName = "detect-libc"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^2.0.1"; - checksum = "9/056a7941c5d60b4f40aa23b77f0bed29de4b3fe281f063812a67e4e6320a0efb1e4b811bf7b01e72b2b643ea009b14165e0b72588c08e1c8de2412945b4dcc6f"; - }; - "detect-newline@npm:3.1.0" = { - name = "detect-newline"; - reference = "npm:3.1.0"; - linkType = "HARD"; - outputName = "detect-newline-3.1.0-6d33fa8d37"; - outputHash = "cd4fd05735c6964f5d5a8cfa03aba5e9e89c491fb47f37c89b85f02b2581a1a7e9a2c8b3d904fa575463db59b706aaa494413dd11e10323daf990c33fc2d85bd"; - flatName = "detect-newline"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^3.0.0"; - checksum = "9/cd4fd05735c6964f5d5a8cfa03aba5e9e89c491fb47f37c89b85f02b2581a1a7e9a2c8b3d904fa575463db59b706aaa494413dd11e10323daf990c33fc2d85bd"; - }; - "diff-sequences@npm:29.2.0" = { - name = "diff-sequences"; - reference = "npm:29.2.0"; - linkType = "HARD"; - outputName = "diff-sequences-29.2.0-a03dd6ddbd"; - outputHash = "922c9efe2082ad79579efc871722db90a4ea02028ffc3e5eae468eece470672e9a0e43f6c056a4c2bde1d9a7c168a017606eb1484f12d8f1d94e9284c58634c6"; - flatName = "diff-sequences"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^29.2.0"; - checksum = "9/922c9efe2082ad79579efc871722db90a4ea02028ffc3e5eae468eece470672e9a0e43f6c056a4c2bde1d9a7c168a017606eb1484f12d8f1d94e9284c58634c6"; - }; - "electron-to-chromium@npm:1.4.284" = { - name = "electron-to-chromium"; - reference = "npm:1.4.284"; - linkType = "HARD"; - outputName = "electron-to-chromium-1.4.284-2fb881a7ac"; - outputHash = "39dac53e9df6e661495a795acc318fbd2780eb685d0b1383ab4047d69cebc7b77ad2adfa3d45106c5e58f915f707701d0b4f6847a94ef96e7f42793df9020433"; - flatName = "electron-to-chromium"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^1.4.251"; - checksum = "9/39dac53e9df6e661495a795acc318fbd2780eb685d0b1383ab4047d69cebc7b77ad2adfa3d45106c5e58f915f707701d0b4f6847a94ef96e7f42793df9020433"; - }; - "emittery@npm:0.13.1" = { - name = "emittery"; - reference = "npm:0.13.1"; - linkType = "HARD"; - outputName = "emittery-0.13.1-cb6cd1bb03"; - outputHash = "5016dff9c6fc14e839af5b63fbcba98cf42dc7f06fa42833ca864d2af4c45f40a7a418096bb47e36eb0f5400270a5f69e0f703b40a09738787a292240d5495de"; - flatName = "emittery"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^0.13.1"; - checksum = "9/5016dff9c6fc14e839af5b63fbcba98cf42dc7f06fa42833ca864d2af4c45f40a7a418096bb47e36eb0f5400270a5f69e0f703b40a09738787a292240d5495de"; - }; - "emoji-regex@npm:8.0.0" = { - name = "emoji-regex"; - reference = "npm:8.0.0"; - linkType = "HARD"; - outputName = "emoji-regex-8.0.0-213764015c"; - outputHash = "0b84c9059a3f051e3da79112ee450f22bc8466dde2a7e09a0b1fc4eff3b98183596e6e2704d5356266851e2a013d95467421eb81c36408fbab1aeb3fc5e4764f"; - flatName = "emoji-regex"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^8.0.0"; - checksum = "9/0b84c9059a3f051e3da79112ee450f22bc8466dde2a7e09a0b1fc4eff3b98183596e6e2704d5356266851e2a013d95467421eb81c36408fbab1aeb3fc5e4764f"; - }; - "encoding@npm:0.1.13" = { - name = "encoding"; - reference = "npm:0.1.13"; - linkType = "HARD"; - outputName = "encoding-0.1.13-82a1837d30"; - outputHash = "954eb7d006c8d466207dcda57ddd15b1d6667607b8da15c7ce400d377504aafcc5e2f5507027cfb045cad7aefd15d18aa3f6e14f3a73ed2b26ad5ff08004536b"; - flatName = "encoding"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^0.1.13"; - checksum = "9/954eb7d006c8d466207dcda57ddd15b1d6667607b8da15c7ce400d377504aafcc5e2f5507027cfb045cad7aefd15d18aa3f6e14f3a73ed2b26ad5ff08004536b"; - dependencies = { - "iconv-lite" = packages."iconv-lite@npm:0.6.3"; - }; - }; - "end-of-stream@npm:1.4.4" = { - name = "end-of-stream"; - reference = "npm:1.4.4"; - linkType = "HARD"; - outputName = "end-of-stream-1.4.4-497fc6dee1"; - outputHash = "fa73674a01c2e7a3e17c801cb916c1e0c77f2cc719a42cee1bb3ce3550b9425369e4d0a2b2ce6670cb8eff07d34e67333949c83a30e7ec94625cec68aa07664e"; - flatName = "end-of-stream"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^1.1.0"; - checksum = "9/fa73674a01c2e7a3e17c801cb916c1e0c77f2cc719a42cee1bb3ce3550b9425369e4d0a2b2ce6670cb8eff07d34e67333949c83a30e7ec94625cec68aa07664e"; - dependencies = { - "once" = packages."once@npm:1.4.0"; - }; - }; - "enhanced-resolve@npm:5.10.0" = { - name = "enhanced-resolve"; - reference = "npm:5.10.0"; - linkType = "HARD"; - outputName = "enhanced-resolve-5.10.0-7941304306"; - outputHash = "97f2cb6318920931b84ea1209b220b7f0324581eef434f16c1df95d1997a4bbd80cceabd6be81465cf450060dee84b265d317ac23276369756b2d8a3ca68e9d6"; - flatName = "enhanced-resolve"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^5.10.0"; - checksum = "9/97f2cb6318920931b84ea1209b220b7f0324581eef434f16c1df95d1997a4bbd80cceabd6be81465cf450060dee84b265d317ac23276369756b2d8a3ca68e9d6"; - dependencies = { - "graceful-fs" = packages."graceful-fs@npm:4.2.10"; - "tapable" = packages."tapable@npm:2.2.1"; - }; - }; - "env-paths@npm:2.2.1" = { - name = "env-paths"; - reference = "npm:2.2.1"; - linkType = "HARD"; - outputName = "env-paths-2.2.1-7c7577428c"; - outputHash = "528af3898854262b86b3adb5de09e6c81b8c0e3f4f675750282281b86782ddc3c33ffc13598d903d9eb23652f339ded86c994b61fe06e5f9cbb69a191f62244b"; - flatName = "env-paths"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^2.2.0"; - checksum = "9/528af3898854262b86b3adb5de09e6c81b8c0e3f4f675750282281b86782ddc3c33ffc13598d903d9eb23652f339ded86c994b61fe06e5f9cbb69a191f62244b"; - }; - "envinfo@npm:7.8.1" = { - name = "envinfo"; - reference = "npm:7.8.1"; - linkType = "HARD"; - outputName = "envinfo-7.8.1-f320033691"; - outputHash = "ad87c46ececd75abf05c1e0a4309a8f96d81a451d4ce87b26c50589930e7b079c6e42ad32c65a72b4f3d792f2d6d32b2c6092014de1bc7e2805a557919ad21f2"; - flatName = "envinfo"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^7.7.3"; - checksum = "9/ad87c46ececd75abf05c1e0a4309a8f96d81a451d4ce87b26c50589930e7b079c6e42ad32c65a72b4f3d792f2d6d32b2c6092014de1bc7e2805a557919ad21f2"; - bin = { - "envinfo" = "dist/cli.js"; - }; - }; - "err-code@npm:2.0.3" = { - name = "err-code"; - reference = "npm:2.0.3"; - linkType = "HARD"; - outputName = "err-code-2.0.3-082e0ff9a7"; - outputHash = "12244d58c3eeb73a5ebf633ff615b2366cedaccfea3c2b4d6a3295f6440661052e9574c71f89d6dc8a5466e3d84be0b1994e2a4017ab10e1f037f8be1ca89a37"; - flatName = "err-code"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^2.0.2"; - checksum = "9/12244d58c3eeb73a5ebf633ff615b2366cedaccfea3c2b4d6a3295f6440661052e9574c71f89d6dc8a5466e3d84be0b1994e2a4017ab10e1f037f8be1ca89a37"; - }; - "error-ex@npm:1.3.2" = { - name = "error-ex"; - reference = "npm:1.3.2"; - linkType = "HARD"; - outputName = "error-ex-1.3.2-5654f80c0f"; - outputHash = "5073bf16fe13e68ffd676d0af3d4bab20e52d917af1cd7e47f61c3cc2b6ec52ec874dc45307a9db6e0b7f8cb47b9f6bb831ff468d2d696cb484a3f7caf2990da"; - flatName = "error-ex"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^1.3.1"; - checksum = "9/5073bf16fe13e68ffd676d0af3d4bab20e52d917af1cd7e47f61c3cc2b6ec52ec874dc45307a9db6e0b7f8cb47b9f6bb831ff468d2d696cb484a3f7caf2990da"; - dependencies = { - "is-arrayish" = packages."is-arrayish@npm:0.2.1"; - }; - }; - "es-module-lexer@npm:0.9.3" = { - name = "es-module-lexer"; - reference = "npm:0.9.3"; - linkType = "HARD"; - outputName = "es-module-lexer-0.9.3-ff6236dadb"; - outputHash = "b62592d654c86254adfcf3cc84ac23a5044c4d55ff32981d6871eb91102455daf241f936ebf09caa6573b1a4f16d7d49ee01df163c2da1e1415bbec3564a4e3d"; - flatName = "es-module-lexer"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^0.9.0"; - checksum = "9/b62592d654c86254adfcf3cc84ac23a5044c4d55ff32981d6871eb91102455daf241f936ebf09caa6573b1a4f16d7d49ee01df163c2da1e1415bbec3564a4e3d"; - }; - "esbuild-android-64@npm:0.15.10" = { - name = "esbuild-android-64"; - reference = "npm:0.15.10"; - linkType = "HARD"; - outputName = "esbuild-android-64-0.15.10-3d2eb29a4e"; - outputHash = ""; - shouldBeUnplugged = true; - installCondition = stdenv: (false) && (stdenv.isx86_64); - flatName = "esbuild-android-64"; - languageName = "node"; - scope = null; - descriptorRange = "npm:0.15.10"; - }; - "esbuild-android-arm64@npm:0.15.10" = { - name = "esbuild-android-arm64"; - reference = "npm:0.15.10"; - linkType = "HARD"; - outputName = "esbuild-android-arm64-0.15.10-24c606b8d0"; - outputHash = ""; - shouldBeUnplugged = true; - installCondition = stdenv: (false) && (stdenv.isAarch64); - flatName = "esbuild-android-arm64"; - languageName = "node"; - scope = null; - descriptorRange = "npm:0.15.10"; - }; - "esbuild-darwin-64@npm:0.15.10" = { - name = "esbuild-darwin-64"; - reference = "npm:0.15.10"; - linkType = "HARD"; - outputName = "esbuild-darwin-64-0.15.10-50d06034ab"; - outputHash = ""; - shouldBeUnplugged = true; - installCondition = stdenv: (stdenv.isDarwin) && (stdenv.isx86_64); - flatName = "esbuild-darwin-64"; - languageName = "node"; - scope = null; - descriptorRange = "npm:0.15.10"; - }; - "esbuild-darwin-arm64@npm:0.15.10" = { - name = "esbuild-darwin-arm64"; - reference = "npm:0.15.10"; - linkType = "HARD"; - outputName = "esbuild-darwin-arm64-0.15.10-11087d1896"; - outputHashByPlatform = { - "aarch64-darwin" = "sha512-Y5+ADVjp0WbzDUXRVintz+Tk0Wf3aUCzQvA1zWSxGlOrsttAkAJdt069ERiFN3EmICIu74R566OiplD6bRl/fA=="; - }; - shouldBeUnplugged = true; - installCondition = stdenv: (stdenv.isDarwin) && (stdenv.isAarch64); - flatName = "esbuild-darwin-arm64"; - languageName = "node"; - scope = null; - descriptorRange = "npm:0.15.10"; - }; - "esbuild-freebsd-64@npm:0.15.10" = { - name = "esbuild-freebsd-64"; - reference = "npm:0.15.10"; - linkType = "HARD"; - outputName = "esbuild-freebsd-64-0.15.10-90d230ac5d"; - outputHash = ""; - shouldBeUnplugged = true; - installCondition = stdenv: (false) && (stdenv.isx86_64); - flatName = "esbuild-freebsd-64"; - languageName = "node"; - scope = null; - descriptorRange = "npm:0.15.10"; - }; - "esbuild-freebsd-arm64@npm:0.15.10" = { - name = "esbuild-freebsd-arm64"; - reference = "npm:0.15.10"; - linkType = "HARD"; - outputName = "esbuild-freebsd-arm64-0.15.10-b6cc16b1bc"; - outputHash = ""; - shouldBeUnplugged = true; - installCondition = stdenv: (false) && (stdenv.isAarch64); - flatName = "esbuild-freebsd-arm64"; - languageName = "node"; - scope = null; - descriptorRange = "npm:0.15.10"; - }; - "esbuild-linux-32@npm:0.15.10" = { - name = "esbuild-linux-32"; - reference = "npm:0.15.10"; - linkType = "HARD"; - outputName = "esbuild-linux-32-0.15.10-251b6c8933"; - outputHash = ""; - shouldBeUnplugged = true; - installCondition = stdenv: (stdenv.isLinux) && (stdenv.isi686); - flatName = "esbuild-linux-32"; - languageName = "node"; - scope = null; - descriptorRange = "npm:0.15.10"; - }; - "esbuild-linux-64@npm:0.15.10" = { - name = "esbuild-linux-64"; - reference = "npm:0.15.10"; - linkType = "HARD"; - outputName = "esbuild-linux-64-0.15.10-702e43a31d"; - outputHashByPlatform = { - "x86_64-linux" = "sha512-H6P3xJuvxQ6JN1xAWDjZGRlHCgBju4iJZlvlhrUnDsqD1ZLZhd7gKYuN+ALWIRW+zxVqYAN9rLTKKZE5SECjXg=="; - }; - shouldBeUnplugged = true; - installCondition = stdenv: (stdenv.isLinux) && (stdenv.isx86_64); - flatName = "esbuild-linux-64"; - languageName = "node"; - scope = null; - descriptorRange = "npm:0.15.10"; - }; - "esbuild-linux-arm@npm:0.15.10" = { - name = "esbuild-linux-arm"; - reference = "npm:0.15.10"; - linkType = "HARD"; - outputName = "esbuild-linux-arm-0.15.10-1b6a33f0c3"; - outputHash = ""; - shouldBeUnplugged = true; - installCondition = stdenv: (stdenv.isLinux) && (stdenv.isAarch32); - flatName = "esbuild-linux-arm"; - languageName = "node"; - scope = null; - descriptorRange = "npm:0.15.10"; - }; - "esbuild-linux-arm64@npm:0.15.10" = { - name = "esbuild-linux-arm64"; - reference = "npm:0.15.10"; - linkType = "HARD"; - outputName = "esbuild-linux-arm64-0.15.10-5e6fd620fd"; - outputHash = ""; - shouldBeUnplugged = true; - installCondition = stdenv: (stdenv.isLinux) && (stdenv.isAarch64); - flatName = "esbuild-linux-arm64"; - languageName = "node"; - scope = null; - descriptorRange = "npm:0.15.10"; - }; - "esbuild-linux-mips64le@npm:0.15.10" = { - name = "esbuild-linux-mips64le"; - reference = "npm:0.15.10"; - linkType = "HARD"; - outputName = "esbuild-linux-mips64le-0.15.10-eeae8b41d6"; - outputHash = ""; - shouldBeUnplugged = true; - installCondition = stdenv: (stdenv.isLinux) && (false); - flatName = "esbuild-linux-mips64le"; - languageName = "node"; - scope = null; - descriptorRange = "npm:0.15.10"; - }; - "esbuild-linux-ppc64le@npm:0.15.10" = { - name = "esbuild-linux-ppc64le"; - reference = "npm:0.15.10"; - linkType = "HARD"; - outputName = "esbuild-linux-ppc64le-0.15.10-7294f87763"; - outputHash = ""; - shouldBeUnplugged = true; - installCondition = stdenv: (stdenv.isLinux) && (false); - flatName = "esbuild-linux-ppc64le"; - languageName = "node"; - scope = null; - descriptorRange = "npm:0.15.10"; - }; - "esbuild-linux-riscv64@npm:0.15.10" = { - name = "esbuild-linux-riscv64"; - reference = "npm:0.15.10"; - linkType = "HARD"; - outputName = "esbuild-linux-riscv64-0.15.10-02fe2af546"; - outputHash = ""; - shouldBeUnplugged = true; - installCondition = stdenv: (stdenv.isLinux) && (false); - flatName = "esbuild-linux-riscv64"; - languageName = "node"; - scope = null; - descriptorRange = "npm:0.15.10"; - }; - "esbuild-linux-s390x@npm:0.15.10" = { - name = "esbuild-linux-s390x"; - reference = "npm:0.15.10"; - linkType = "HARD"; - outputName = "esbuild-linux-s390x-0.15.10-5d42e10d8b"; - outputHash = ""; - shouldBeUnplugged = true; - installCondition = stdenv: (stdenv.isLinux) && (false); - flatName = "esbuild-linux-s390x"; - languageName = "node"; - scope = null; - descriptorRange = "npm:0.15.10"; - }; - "esbuild-netbsd-64@npm:0.15.10" = { - name = "esbuild-netbsd-64"; - reference = "npm:0.15.10"; - linkType = "HARD"; - outputName = "esbuild-netbsd-64-0.15.10-6d485377ac"; - outputHash = ""; - shouldBeUnplugged = true; - installCondition = stdenv: (false) && (stdenv.isx86_64); - flatName = "esbuild-netbsd-64"; - languageName = "node"; - scope = null; - descriptorRange = "npm:0.15.10"; - }; - "esbuild-openbsd-64@npm:0.15.10" = { - name = "esbuild-openbsd-64"; - reference = "npm:0.15.10"; - linkType = "HARD"; - outputName = "esbuild-openbsd-64-0.15.10-bd10ce1b53"; - outputHash = ""; - shouldBeUnplugged = true; - installCondition = stdenv: (false) && (stdenv.isx86_64); - flatName = "esbuild-openbsd-64"; - languageName = "node"; - scope = null; - descriptorRange = "npm:0.15.10"; - }; - "esbuild-sunos-64@npm:0.15.10" = { - name = "esbuild-sunos-64"; - reference = "npm:0.15.10"; - linkType = "HARD"; - outputName = "esbuild-sunos-64-0.15.10-577a77fb30"; - outputHash = ""; - shouldBeUnplugged = true; - installCondition = stdenv: (false) && (stdenv.isx86_64); - flatName = "esbuild-sunos-64"; - languageName = "node"; - scope = null; - descriptorRange = "npm:0.15.10"; - }; - "esbuild-windows-32@npm:0.15.10" = { - name = "esbuild-windows-32"; - reference = "npm:0.15.10"; - linkType = "HARD"; - outputName = "esbuild-windows-32-0.15.10-c98220b83e"; - outputHash = ""; - shouldBeUnplugged = true; - installCondition = stdenv: (false) && (stdenv.isi686); - flatName = "esbuild-windows-32"; - languageName = "node"; - scope = null; - descriptorRange = "npm:0.15.10"; - }; - "esbuild-windows-64@npm:0.15.10" = { - name = "esbuild-windows-64"; - reference = "npm:0.15.10"; - linkType = "HARD"; - outputName = "esbuild-windows-64-0.15.10-a7f3d5a0ba"; - outputHash = ""; - shouldBeUnplugged = true; - installCondition = stdenv: (false) && (stdenv.isx86_64); - flatName = "esbuild-windows-64"; - languageName = "node"; - scope = null; - descriptorRange = "npm:0.15.10"; - }; - "esbuild-windows-arm64@npm:0.15.10" = { - name = "esbuild-windows-arm64"; - reference = "npm:0.15.10"; - linkType = "HARD"; - outputName = "esbuild-windows-arm64-0.15.10-f8b613a69b"; - outputHash = ""; - shouldBeUnplugged = true; - installCondition = stdenv: (false) && (stdenv.isAarch64); - flatName = "esbuild-windows-arm64"; - languageName = "node"; - scope = null; - descriptorRange = "npm:0.15.10"; - }; - "esbuild@npm:0.15.10" = { - name = "esbuild"; - reference = "npm:0.15.10"; - linkType = "HARD"; - outputName = "esbuild-0.15.10-cd7bf58045"; - outputHashByPlatform = { - "aarch64-darwin" = "sha512-1vaO639lFTNMppXf76TOY6NEbmVUkAiCNlYM/f3Q7Plf1TIGnyKgfHK7YiCwS8wtLYzzvrEp2JyIewZfhlu2xw=="; - "x86_64-linux" = "sha512-1vaO639lFTNMppXf76TOY6NEbmVUkAiCNlYM/f3Q7Plf1TIGnyKgfHK7YiCwS8wtLYzzvrEp2JyIewZfhlu2xw=="; - }; - shouldBeUnplugged = true; - flatName = "esbuild"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^0.15.10"; - checksum = "9/84223305fec7e29de19f1065ddac4e3fc6ea022e12e50f2e5a29e597059e5778b42d310324b3914de66832b6adc31c95c6b6b2733fbd2649f0ddaa8b93c8328c"; - bin = { - "esbuild" = "bin/esbuild"; - }; - dependencies = { - "@esbuild/android-arm" = packages."@esbuild/android-arm@npm:0.15.10"; - "@esbuild/linux-loong64" = packages."@esbuild/linux-loong64@npm:0.15.10"; - "esbuild-android-64" = packages."esbuild-android-64@npm:0.15.10"; - "esbuild-android-arm64" = packages."esbuild-android-arm64@npm:0.15.10"; - "esbuild-darwin-64" = packages."esbuild-darwin-64@npm:0.15.10"; - "esbuild-darwin-arm64" = packages."esbuild-darwin-arm64@npm:0.15.10"; - "esbuild-freebsd-64" = packages."esbuild-freebsd-64@npm:0.15.10"; - "esbuild-freebsd-arm64" = packages."esbuild-freebsd-arm64@npm:0.15.10"; - "esbuild-linux-32" = packages."esbuild-linux-32@npm:0.15.10"; - "esbuild-linux-64" = packages."esbuild-linux-64@npm:0.15.10"; - "esbuild-linux-arm64" = packages."esbuild-linux-arm64@npm:0.15.10"; - "esbuild-linux-arm" = packages."esbuild-linux-arm@npm:0.15.10"; - "esbuild-linux-mips64le" = packages."esbuild-linux-mips64le@npm:0.15.10"; - "esbuild-linux-ppc64le" = packages."esbuild-linux-ppc64le@npm:0.15.10"; - "esbuild-linux-riscv64" = packages."esbuild-linux-riscv64@npm:0.15.10"; - "esbuild-linux-s390x" = packages."esbuild-linux-s390x@npm:0.15.10"; - "esbuild-netbsd-64" = packages."esbuild-netbsd-64@npm:0.15.10"; - "esbuild-openbsd-64" = packages."esbuild-openbsd-64@npm:0.15.10"; - "esbuild-sunos-64" = packages."esbuild-sunos-64@npm:0.15.10"; - "esbuild-windows-32" = packages."esbuild-windows-32@npm:0.15.10"; - "esbuild-windows-64" = packages."esbuild-windows-64@npm:0.15.10"; - "esbuild-windows-arm64" = packages."esbuild-windows-arm64@npm:0.15.10"; - }; - }; - "escalade@npm:3.1.1" = { - name = "escalade"; - reference = "npm:3.1.1"; - linkType = "HARD"; - outputName = "escalade-3.1.1-e02da076aa"; - outputHash = "37f3535f99193a5ff755af30866bb55828aff044bdc14e1844d0965470ba87ef686761fbbf2cea02955f1bb8510f72c3308e7dbe2d794fa85058a33bf60ea372"; - flatName = "escalade"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^3.1.1"; - checksum = "9/37f3535f99193a5ff755af30866bb55828aff044bdc14e1844d0965470ba87ef686761fbbf2cea02955f1bb8510f72c3308e7dbe2d794fa85058a33bf60ea372"; - }; - "escape-string-regexp@npm:1.0.5" = { - name = "escape-string-regexp"; - reference = "npm:1.0.5"; - linkType = "HARD"; - outputName = "escape-string-regexp-1.0.5-3284de402f"; - outputHash = "14d2c74a990b4a0ae55f299409693533a620402a6efa02b201d7e2ea60c71a516c36ccfcaf2aa604262eec6c4628bf8b9647e211fb179277cb479bd870c906fa"; - flatName = "escape-string-regexp"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^1.0.5"; - checksum = "9/14d2c74a990b4a0ae55f299409693533a620402a6efa02b201d7e2ea60c71a516c36ccfcaf2aa604262eec6c4628bf8b9647e211fb179277cb479bd870c906fa"; - }; - "escape-string-regexp@npm:2.0.0" = { - name = "escape-string-regexp"; - reference = "npm:2.0.0"; - linkType = "HARD"; - outputName = "escape-string-regexp-2.0.0-aef69d2a25"; - outputHash = "eba6c3fb9b6d1fbad353258ce4aaf3875ee39506cbf525f95a4cd78435668b73c56b5a60b960225ab95ecb7274248ad0e05705468b850ba98e289bfa7021a68e"; - flatName = "escape-string-regexp"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^2.0.0"; - checksum = "9/eba6c3fb9b6d1fbad353258ce4aaf3875ee39506cbf525f95a4cd78435668b73c56b5a60b960225ab95ecb7274248ad0e05705468b850ba98e289bfa7021a68e"; - }; - "eslint-scope@npm:5.1.1" = { - name = "eslint-scope"; - reference = "npm:5.1.1"; - linkType = "HARD"; - outputName = "eslint-scope-5.1.1-71fe59b18a"; - outputHash = "50c26e6abd713f6acf27498e37af26dc08d9b2781c038a32d8c44dbab59744233de58b1bd6b3a21286384ea40458962a80d8f3923c33c90369f4d0e891c69065"; - flatName = "eslint-scope"; - languageName = "node"; - scope = null; - descriptorRange = "npm:5.1.1"; - checksum = "9/50c26e6abd713f6acf27498e37af26dc08d9b2781c038a32d8c44dbab59744233de58b1bd6b3a21286384ea40458962a80d8f3923c33c90369f4d0e891c69065"; - dependencies = { - "esrecurse" = packages."esrecurse@npm:4.3.0"; - "estraverse" = packages."estraverse@npm:4.3.0"; - }; - }; - "esm@npm:3.2.25" = { - name = "esm"; - reference = "npm:3.2.25"; - linkType = "HARD"; - outputName = "esm-3.2.25-762b3ebd40"; - outputHash = "b67822bd9ce08a63a6a44634e4449f27bb87bde1787a4d9fee6387e7aea8a43900e74641d857e65e5b3013174d8f7fa8301b8b7ca33a38f8b89246d4b718bc5b"; - flatName = "esm"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^3.2.25"; - checksum = "9/b67822bd9ce08a63a6a44634e4449f27bb87bde1787a4d9fee6387e7aea8a43900e74641d857e65e5b3013174d8f7fa8301b8b7ca33a38f8b89246d4b718bc5b"; - }; - "esprima@npm:4.0.1" = { - name = "esprima"; - reference = "npm:4.0.1"; - linkType = "HARD"; - outputName = "esprima-4.0.1-1084e98778"; - outputHash = "08b3015538b1f7f087a4ea49b5a3d8ff9590ecf7eb43511182c9198cfe168a5cc1736c2ae33263c79cfbe9e984c1880ee971b64ad96e7c84db74488e6ee93c1b"; - flatName = "esprima"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^4.0.0"; - checksum = "9/08b3015538b1f7f087a4ea49b5a3d8ff9590ecf7eb43511182c9198cfe168a5cc1736c2ae33263c79cfbe9e984c1880ee971b64ad96e7c84db74488e6ee93c1b"; - bin = { - "esparse" = "./bin/esparse.js"; - "esvalidate" = "./bin/esvalidate.js"; - }; - }; - "esrecurse@npm:4.3.0" = { - name = "esrecurse"; - reference = "npm:4.3.0"; - linkType = "HARD"; - outputName = "esrecurse-4.3.0-10b86a887a"; - outputHash = "c28c10e80803687b81ccbe90b9b66d9b21144a27f672208970ebfd306d7f2f2ee2827754b2effb771c35de48455de944c434f2fcf3c5d7da27956a5f69464a5a"; - flatName = "esrecurse"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^4.3.0"; - checksum = "9/c28c10e80803687b81ccbe90b9b66d9b21144a27f672208970ebfd306d7f2f2ee2827754b2effb771c35de48455de944c434f2fcf3c5d7da27956a5f69464a5a"; - dependencies = { - "estraverse" = packages."estraverse@npm:5.3.0"; - }; - }; - "estraverse@npm:4.3.0" = { - name = "estraverse"; - reference = "npm:4.3.0"; - linkType = "HARD"; - outputName = "estraverse-4.3.0-920a32f3c6"; - outputHash = "befc0287c32a7844aa00a3bb474189d51afa4c8c1d754937c2b2e70c0ca5bd0750da7ab2c84809aa130e0e1320dd386ea2381aac205f02b83569436e453e320a"; - flatName = "estraverse"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^4.1.1"; - checksum = "9/befc0287c32a7844aa00a3bb474189d51afa4c8c1d754937c2b2e70c0ca5bd0750da7ab2c84809aa130e0e1320dd386ea2381aac205f02b83569436e453e320a"; - }; - "estraverse@npm:5.3.0" = { - name = "estraverse"; - reference = "npm:5.3.0"; - linkType = "HARD"; - outputName = "estraverse-5.3.0-03284f8f63"; - outputHash = "4db420d3f0291d3c42e3700aee2986ec1ca8384224236da9441e67555c8af181fe5f883b0b312021ed475f0c138282066b0f5cb2240ee4a0c2ec5142274162d1"; - flatName = "estraverse"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^5.2.0"; - checksum = "9/4db420d3f0291d3c42e3700aee2986ec1ca8384224236da9441e67555c8af181fe5f883b0b312021ed475f0c138282066b0f5cb2240ee4a0c2ec5142274162d1"; - }; - "events@npm:3.3.0" = { - name = "events"; - reference = "npm:3.3.0"; - linkType = "HARD"; - outputName = "events-3.3.0-c280bc7e48"; - outputHash = "ef0af671f7bdc20f14274c77925c3e47a4df7991563ee1827dff577f66a9ed1a5b63d9adab8bc5949a16a1341883abdaf9df7a1841f8d5d2fc65ab4f5570b32b"; - flatName = "events"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^3.2.0"; - checksum = "9/ef0af671f7bdc20f14274c77925c3e47a4df7991563ee1827dff577f66a9ed1a5b63d9adab8bc5949a16a1341883abdaf9df7a1841f8d5d2fc65ab4f5570b32b"; - }; - "execa@npm:5.1.1" = { - name = "execa"; - reference = "npm:5.1.1"; - linkType = "HARD"; - outputName = "execa-5.1.1-191347acf5"; - outputHash = "62053808e15136a18481d24d14f33a8fbf191b15120d5a6f390bedfded1d1980735c92ba49194d03ad818d18bf7aded5f64f4de4129eb180743e7ec563d21d45"; - flatName = "execa"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^5.0.0"; - checksum = "9/62053808e15136a18481d24d14f33a8fbf191b15120d5a6f390bedfded1d1980735c92ba49194d03ad818d18bf7aded5f64f4de4129eb180743e7ec563d21d45"; - dependencies = { - "cross-spawn" = packages."cross-spawn@npm:7.0.3"; - "get-stream" = packages."get-stream@npm:6.0.1"; - "human-signals" = packages."human-signals@npm:2.1.0"; - "is-stream" = packages."is-stream@npm:2.0.1"; - "merge-stream" = packages."merge-stream@npm:2.0.0"; - "npm-run-path" = packages."npm-run-path@npm:4.0.1"; - "onetime" = packages."onetime@npm:5.1.2"; - "signal-exit" = packages."signal-exit@npm:3.0.7"; - "strip-final-newline" = packages."strip-final-newline@npm:2.0.0"; - }; - }; - "exit@npm:0.1.2" = { - name = "exit"; - reference = "npm:0.1.2"; - linkType = "HARD"; - outputName = "exit-0.1.2-ef3761a67d"; - outputHash = "591b85eb0248ae7ab8388c84412187655f5569e1dd3a7d45ee1951bc346f56606594772fdee0f9917d0c170eb3b201ee6a2d60a8114d47a2d7b07063be717c76"; - flatName = "exit"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^0.1.2"; - checksum = "9/591b85eb0248ae7ab8388c84412187655f5569e1dd3a7d45ee1951bc346f56606594772fdee0f9917d0c170eb3b201ee6a2d60a8114d47a2d7b07063be717c76"; - }; - "expand-template@npm:2.0.3" = { - name = "expand-template"; - reference = "npm:2.0.3"; - linkType = "HARD"; - outputName = "expand-template-2.0.3-80de959306"; - outputHash = "11824d593f92f9ea6b8b29574db3bf904d1d910570176e5abbaba6e891a052784a0131f67d1d7c0831d9ea21630cf649d5aa661f21c22e0b2536635cfb6cb1a8"; - flatName = "expand-template"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^2.0.3"; - checksum = "9/11824d593f92f9ea6b8b29574db3bf904d1d910570176e5abbaba6e891a052784a0131f67d1d7c0831d9ea21630cf649d5aa661f21c22e0b2536635cfb6cb1a8"; - }; - "expand-tilde@npm:2.0.2" = { - name = "expand-tilde"; - reference = "npm:2.0.2"; - linkType = "HARD"; - outputName = "expand-tilde-2.0.2-a4020a62f5"; - outputHash = "5de1d0d7073215b57f574913232639664d21eccb283f5a75bd77cf8cd09f1ba1b49843c9c332e84ce69b0016b5c0d2b3715575b6369aa9af88bb6ef16b40eaec"; - flatName = "expand-tilde"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^2.0.0"; - checksum = "9/5de1d0d7073215b57f574913232639664d21eccb283f5a75bd77cf8cd09f1ba1b49843c9c332e84ce69b0016b5c0d2b3715575b6369aa9af88bb6ef16b40eaec"; - dependencies = { - "homedir-polyfill" = packages."homedir-polyfill@npm:1.0.3"; - }; - }; - "expect@npm:29.2.2" = { - name = "expect"; - reference = "npm:29.2.2"; - linkType = "HARD"; - outputName = "expect-29.2.2-ff5a3f4adc"; - outputHash = "c5a6df37de6c0776e8cfffb190ac3652faa6814e2c8b0731b7937ab85131be49d233e2700436c5bf22307b6f1edb68f82a54f0b79c498afeb782e88456b631c3"; - flatName = "expect"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^29.2.2"; - checksum = "9/c5a6df37de6c0776e8cfffb190ac3652faa6814e2c8b0731b7937ab85131be49d233e2700436c5bf22307b6f1edb68f82a54f0b79c498afeb782e88456b631c3"; - dependencies = { - "@jest/expect-utils" = packages."@jest/expect-utils@npm:29.2.2"; - "jest-get-type" = packages."jest-get-type@npm:29.2.0"; - "jest-matcher-utils" = packages."jest-matcher-utils@npm:29.2.2"; - "jest-message-util" = packages."jest-message-util@npm:29.2.1"; - "jest-util" = packages."jest-util@npm:29.2.1"; - }; - }; - "fast-deep-equal@npm:3.1.3" = { - name = "fast-deep-equal"; - reference = "npm:3.1.3"; - linkType = "HARD"; - outputName = "fast-deep-equal-3.1.3-790edcfcf5"; - outputHash = "5f83fabf1f0bac0df5117e881ee15756dc8a9ee48c8020ed63cb84a7935d78c338dc0982b3b7b6ad0792905f5ef0c35293db9cae2f3208a6f09071c43887a02f"; - flatName = "fast-deep-equal"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^3.1.1"; - checksum = "9/5f83fabf1f0bac0df5117e881ee15756dc8a9ee48c8020ed63cb84a7935d78c338dc0982b3b7b6ad0792905f5ef0c35293db9cae2f3208a6f09071c43887a02f"; - }; - "fast-json-stable-stringify@npm:2.1.0" = { - name = "fast-json-stable-stringify"; - reference = "npm:2.1.0"; - linkType = "HARD"; - outputName = "fast-json-stable-stringify-2.1.0-02e8905fda"; - outputHash = "cc64810b004155f5ac29b208ebd5c862599a1a8aef3c4d27a34dfb694db7797e121dceda183507ec4a2a5413d9cb59521fd2540d0d00a5589ee6ea6bfac3c12e"; - flatName = "fast-json-stable-stringify"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^2.1.0"; - checksum = "9/cc64810b004155f5ac29b208ebd5c862599a1a8aef3c4d27a34dfb694db7797e121dceda183507ec4a2a5413d9cb59521fd2540d0d00a5589ee6ea6bfac3c12e"; - }; - "fastest-levenshtein@npm:1.0.16" = { - name = "fastest-levenshtein"; - reference = "npm:1.0.16"; - linkType = "HARD"; - outputName = "fastest-levenshtein-1.0.16-192d328856"; - outputHash = "40ae402f492ac925db4f954af221cc4c99e2ba931eaea6d724601f81cf1b7be9d211e01685a3ef77ff32073e0f19be5993e383fb33328c06f122065c2e853d39"; - flatName = "fastest-levenshtein"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^1.0.12"; - checksum = "9/40ae402f492ac925db4f954af221cc4c99e2ba931eaea6d724601f81cf1b7be9d211e01685a3ef77ff32073e0f19be5993e383fb33328c06f122065c2e853d39"; - }; - "fb-watchman@npm:2.0.2" = { - name = "fb-watchman"; - reference = "npm:2.0.2"; - linkType = "HARD"; - outputName = "fb-watchman-2.0.2-bcb6f8f831"; - outputHash = "631a1a5512592e90a023bdbf148e565b5bded5ed22fad48b6481793669e36e0df5b481b080444f933fc3b49dab10ae886d41ac4bfdc70065736a45378402159b"; - flatName = "fb-watchman"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^2.0.0"; - checksum = "9/631a1a5512592e90a023bdbf148e565b5bded5ed22fad48b6481793669e36e0df5b481b080444f933fc3b49dab10ae886d41ac4bfdc70065736a45378402159b"; - dependencies = { - "bser" = packages."bser@npm:2.1.1"; - }; - }; - "fill-range@npm:7.0.1" = { - name = "fill-range"; - reference = "npm:7.0.1"; - linkType = "HARD"; - outputName = "fill-range-7.0.1-b8b1817caa"; - outputHash = "e5ccb299de8a12ea5dcef663f658933e2fbdf40aeab3e7e5af9132e82d7f6bdd0984ac2e122dc1825707f33917c308bc40b632b852331c900c317c5d64bb7bf0"; - flatName = "fill-range"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^7.0.1"; - checksum = "9/e5ccb299de8a12ea5dcef663f658933e2fbdf40aeab3e7e5af9132e82d7f6bdd0984ac2e122dc1825707f33917c308bc40b632b852331c900c317c5d64bb7bf0"; - dependencies = { - "to-regex-range" = packages."to-regex-range@npm:5.0.1"; - }; - }; - "find-up@npm:4.1.0" = { - name = "find-up"; - reference = "npm:4.1.0"; - linkType = "HARD"; - outputName = "find-up-4.1.0-c3ccf8d855"; - outputHash = "ae51bbfc4040bb85937589c31dd5f1ac0e80df18feccabcfbdd78ee7a9fc06b198ae73bb87a9d398ab98314dded1cacebde9f77e1c80195a5a68446ba7ee1ae3"; - flatName = "find-up"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^4.0.0"; - checksum = "9/ae51bbfc4040bb85937589c31dd5f1ac0e80df18feccabcfbdd78ee7a9fc06b198ae73bb87a9d398ab98314dded1cacebde9f77e1c80195a5a68446ba7ee1ae3"; - dependencies = { - "locate-path" = packages."locate-path@npm:5.0.0"; - "path-exists" = packages."path-exists@npm:4.0.0"; - }; - }; - "fs-constants@npm:1.0.0" = { - name = "fs-constants"; - reference = "npm:1.0.0"; - linkType = "HARD"; - outputName = "fs-constants-1.0.0-59576b2177"; - outputHash = "fc080f48eec0d9cef6750e804f31c6ceac3f4222dfd7003c7ac350f6be91979b084d27e4249e8e66f54caf5ea0465721078934ce44302d9d725209830c8fd730"; - flatName = "fs-constants"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^1.0.0"; - checksum = "9/fc080f48eec0d9cef6750e804f31c6ceac3f4222dfd7003c7ac350f6be91979b084d27e4249e8e66f54caf5ea0465721078934ce44302d9d725209830c8fd730"; - }; - "fs-minipass@npm:2.1.0" = { - name = "fs-minipass"; - reference = "npm:2.1.0"; - linkType = "HARD"; - outputName = "fs-minipass-2.1.0-501ef87306"; - outputHash = "56d19f9a034cbef50b7fe846a71ab1a6a7ee7906205f9f18b7c9696e1f6d83c4d708a0196c65536f34e569205664840dd4f97f1286a26148a4c5bf74a67fe8db"; - flatName = "fs-minipass"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^2.0.0"; - checksum = "9/56d19f9a034cbef50b7fe846a71ab1a6a7ee7906205f9f18b7c9696e1f6d83c4d708a0196c65536f34e569205664840dd4f97f1286a26148a4c5bf74a67fe8db"; - dependencies = { - "minipass" = packages."minipass@npm:3.3.5"; - }; - }; - "fs.realpath@npm:1.0.0" = { - name = "fs.realpath"; - reference = "npm:1.0.0"; - linkType = "HARD"; - outputName = "fs.realpath-1.0.0-c8f05d8126"; - outputHash = "477fb3547134ce67d71531a19b2597028d2efaeced56a2fcb125ba9994a4204685d256795e4a5b68e5d866d11d8d0dd9050937cb44037beb4caeb3acb75602e2"; - flatName = "fs.realpath"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^1.0.0"; - checksum = "9/477fb3547134ce67d71531a19b2597028d2efaeced56a2fcb125ba9994a4204685d256795e4a5b68e5d866d11d8d0dd9050937cb44037beb4caeb3acb75602e2"; - }; - "fsevents@npm:2.3.2" = { - name = "fsevents"; - reference = "npm:2.3.2"; - linkType = "HARD"; - outputName = "fsevents-2.3.2-a881d6ac9f"; - outputHash = "c85eed7a3e0bbe6908f9feae8a823ee63a796ea2b32e20616ee33f0dda9417976f5a087a8cd2ccf228aae1c5b8b6125c9800f05dd69aaf016c34352a0567dcfb"; - installCondition = stdenv: (stdenv.isDarwin); - flatName = "fsevents"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^2.3.2"; - checksum = "9/c85eed7a3e0bbe6908f9feae8a823ee63a796ea2b32e20616ee33f0dda9417976f5a087a8cd2ccf228aae1c5b8b6125c9800f05dd69aaf016c34352a0567dcfb"; - dependencies = { - "node-gyp" = packages."node-gyp@npm:9.3.0"; - }; - }; - "fsevents@patch:fsevents@npm%3A2.3.2#optional!builtin::version=2.3.2&hash=18f3a7" = { - name = "fsevents"; - reference = "patch:fsevents@npm%3A2.3.2#optional!builtin::version=2.3.2&hash=18f3a7"; - linkType = "HARD"; - outputName = "fsevents-2.3.2-bc14f4e1ba"; - outputHashByPlatform = { - "aarch64-darwin" = "sha512-uka9eemEm6sAGeKXHGrM/cfX65Rd2RWVeApfmeZrgeCG7giNVo2HDHPIev7RIMz07ObyqlBN+EdFaJ8Q9JsnQA=="; - "x86_64-linux" = "sha512-uka9eemEm6sAGeKXHGrM/cfX65Rd2RWVeApfmeZrgeCG7giNVo2HDHPIev7RIMz07ObyqlBN+EdFaJ8Q9JsnQA=="; - }; - shouldBeUnplugged = true; - installCondition = stdenv: (stdenv.isDarwin); - flatName = "fsevents"; - languageName = "node"; - scope = null; - descriptorRange = "patch:fsevents@npm%3A^2.3.2#optional!builtin"; - dependencies = { - "node-gyp" = packages."node-gyp@npm:9.3.0"; - }; - }; - "function-bind@npm:1.1.1" = { - name = "function-bind"; - reference = "npm:1.1.1"; - linkType = "HARD"; - outputName = "function-bind-1.1.1-b56b322ae9"; - outputHash = "8a644b8118679030cb3aeb783b024a9ee358b15c5780bdb49fe5d482f6df54672bda860e19bce87d756a5e165740caaa96f5e8487fa98933c327f631e23a5490"; - flatName = "function-bind"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^1.1.1"; - checksum = "9/8a644b8118679030cb3aeb783b024a9ee358b15c5780bdb49fe5d482f6df54672bda860e19bce87d756a5e165740caaa96f5e8487fa98933c327f631e23a5490"; - }; - "gauge@npm:3.0.2" = { - name = "gauge"; - reference = "npm:3.0.2"; - linkType = "HARD"; - outputName = "gauge-3.0.2-9e22f7af9e"; - outputHash = "96562a18ce38a11892c75ccea5f82b06cc4a8a2a03b24e8a3dfb5497cc71b75f8aabd70cbcb3b4660e699301690cd8a58c124c8327fc2da9a2507caf54f45ceb"; - flatName = "gauge"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^3.0.0"; - checksum = "9/96562a18ce38a11892c75ccea5f82b06cc4a8a2a03b24e8a3dfb5497cc71b75f8aabd70cbcb3b4660e699301690cd8a58c124c8327fc2da9a2507caf54f45ceb"; - dependencies = { - "aproba" = packages."aproba@npm:2.0.0"; - "color-support" = packages."color-support@npm:1.1.3"; - "console-control-strings" = packages."console-control-strings@npm:1.1.0"; - "has-unicode" = packages."has-unicode@npm:2.0.1"; - "object-assign" = packages."object-assign@npm:4.1.1"; - "signal-exit" = packages."signal-exit@npm:3.0.7"; - "string-width" = packages."string-width@npm:4.2.3"; - "strip-ansi" = packages."strip-ansi@npm:6.0.1"; - "wide-align" = packages."wide-align@npm:1.1.5"; - }; - }; - "gauge@npm:4.0.4" = { - name = "gauge"; - reference = "npm:4.0.4"; - linkType = "HARD"; - outputName = "gauge-4.0.4-8f878385e9"; - outputHash = "4fc68f770dba9962a326918f33f58f2458eddea08442c2d716238357e4291dee4223a812ce11084b54f928d607e4dfb6f380ba28d435b2721de94a22d5600669"; - flatName = "gauge"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^4.0.3"; - checksum = "9/4fc68f770dba9962a326918f33f58f2458eddea08442c2d716238357e4291dee4223a812ce11084b54f928d607e4dfb6f380ba28d435b2721de94a22d5600669"; - dependencies = { - "aproba" = packages."aproba@npm:2.0.0"; - "color-support" = packages."color-support@npm:1.1.3"; - "console-control-strings" = packages."console-control-strings@npm:1.1.0"; - "has-unicode" = packages."has-unicode@npm:2.0.1"; - "signal-exit" = packages."signal-exit@npm:3.0.7"; - "string-width" = packages."string-width@npm:4.2.3"; - "strip-ansi" = packages."strip-ansi@npm:6.0.1"; - "wide-align" = packages."wide-align@npm:1.1.5"; - }; - }; - "gensync@npm:1.0.0-beta.2" = { - name = "gensync"; - reference = "npm:1.0.0-beta.2"; - linkType = "HARD"; - outputName = "gensync-1.0.0-beta.2-224666d72f"; - outputHash = "c3e28898b5eb6cf92ce2f3bd1230f87bb642803aa743cbce53af55b50283a5283922a8717208edf1912ec1d944f1a4b262e9abfdb9ff9695e61f2939e56c89d8"; - flatName = "gensync"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^1.0.0-beta.2"; - checksum = "9/c3e28898b5eb6cf92ce2f3bd1230f87bb642803aa743cbce53af55b50283a5283922a8717208edf1912ec1d944f1a4b262e9abfdb9ff9695e61f2939e56c89d8"; - }; - "get-caller-file@npm:2.0.5" = { - name = "get-caller-file"; - reference = "npm:2.0.5"; - linkType = "HARD"; - outputName = "get-caller-file-2.0.5-80e8a86305"; - outputHash = "24c1eb494b27c789e9267d7220bb131e409427b793f9e2b07f772f8d84c44eb0b42b90c258d858ee758ec6a21092c16a1c78c5fac02c0df7c156bb7113307192"; - flatName = "get-caller-file"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^2.0.5"; - checksum = "9/24c1eb494b27c789e9267d7220bb131e409427b793f9e2b07f772f8d84c44eb0b42b90c258d858ee758ec6a21092c16a1c78c5fac02c0df7c156bb7113307192"; - }; - "get-func-name@npm:2.0.0" = { - name = "get-func-name"; - reference = "npm:2.0.0"; - linkType = "HARD"; - outputName = "get-func-name-2.0.0-afbf363765"; - outputHash = "e56bed23b2160cf3aeedb2677ca019334543dd49790c1976e44d168b5f83283747b1a41675706bc114b7a1563da978dbdf6d2b5e9282534dbdeaa2c1184cae6a"; - flatName = "get-func-name"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^2.0.0"; - checksum = "9/e56bed23b2160cf3aeedb2677ca019334543dd49790c1976e44d168b5f83283747b1a41675706bc114b7a1563da978dbdf6d2b5e9282534dbdeaa2c1184cae6a"; - }; - "get-package-type@npm:0.1.0" = { - name = "get-package-type"; - reference = "npm:0.1.0"; - linkType = "HARD"; - outputName = "get-package-type-0.1.0-6c70cdc8ab"; - outputHash = "44a5c78d70a8527c3e8c5c6abb8f1a4ca2bb760bf6f1ff4d40d413a483ec21db6fa2a45ef53e8beeff8d97d87a35efdeccf4327f51b20b141e058417f6f41485"; - flatName = "get-package-type"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^0.1.0"; - checksum = "9/44a5c78d70a8527c3e8c5c6abb8f1a4ca2bb760bf6f1ff4d40d413a483ec21db6fa2a45ef53e8beeff8d97d87a35efdeccf4327f51b20b141e058417f6f41485"; - }; - "get-stream@npm:6.0.1" = { - name = "get-stream"; - reference = "npm:6.0.1"; - linkType = "HARD"; - outputName = "get-stream-6.0.1-83e51a4642"; - outputHash = "20a00f890236e3dafa7cb2ca44f779d8547544a8cafd3d6e8e19f0c38c1b577273e49615c1de08cb94b6b10470539bcd1f3620ecedc0cff12ed131d9b5dc5fd2"; - flatName = "get-stream"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^6.0.0"; - checksum = "9/20a00f890236e3dafa7cb2ca44f779d8547544a8cafd3d6e8e19f0c38c1b577273e49615c1de08cb94b6b10470539bcd1f3620ecedc0cff12ed131d9b5dc5fd2"; - }; - "getopts@npm:2.3.0" = { - name = "getopts"; - reference = "npm:2.3.0"; - linkType = "HARD"; - outputName = "getopts-2.3.0-4b1830217c"; - outputHash = "e3e91ae899af5763d86d45e39cd2e41911374c313b602b2600a031be497af2f2635f7a99418d3c0bf2690d3ce1ed4fbf1293e6dc97b5eac0342639485cf44b6b"; - flatName = "getopts"; - languageName = "node"; - scope = null; - descriptorRange = "npm:2.3.0"; - checksum = "9/e3e91ae899af5763d86d45e39cd2e41911374c313b602b2600a031be497af2f2635f7a99418d3c0bf2690d3ce1ed4fbf1293e6dc97b5eac0342639485cf44b6b"; - }; - "github-from-package@npm:0.0.0" = { - name = "github-from-package"; - reference = "npm:0.0.0"; - linkType = "HARD"; - outputName = "github-from-package-0.0.0-519f80c9a1"; - outputHash = "5ef16dcb4ca336ddff2c479227ea252c808d785608f2851826d880e1c63c3e03855ffbf90f2f97f88a1858cba8c23e0687eba094da9b4f9fddde843bb7ca7502"; - flatName = "github-from-package"; - languageName = "node"; - scope = null; - descriptorRange = "npm:0.0.0"; - checksum = "9/5ef16dcb4ca336ddff2c479227ea252c808d785608f2851826d880e1c63c3e03855ffbf90f2f97f88a1858cba8c23e0687eba094da9b4f9fddde843bb7ca7502"; - }; - "glob-to-regexp@npm:0.4.1" = { - name = "glob-to-regexp"; - reference = "npm:0.4.1"; - linkType = "HARD"; - outputName = "glob-to-regexp-0.4.1-cd697e0fc7"; - outputHash = "8d5332e7b023069e25af4de7833bc391144926546a469c187848b4509106ffdb9815c7e1a0fae80398d682fdc4b6fcb6b91fa42b5e966018d21ff442751d2d3b"; - flatName = "glob-to-regexp"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^0.4.1"; - checksum = "9/8d5332e7b023069e25af4de7833bc391144926546a469c187848b4509106ffdb9815c7e1a0fae80398d682fdc4b6fcb6b91fa42b5e966018d21ff442751d2d3b"; - }; - "glob@npm:7.2.3" = { - name = "glob"; - reference = "npm:7.2.3"; - linkType = "HARD"; - outputName = "glob-7.2.3-2d866d17a5"; - outputHash = "c55966a5db7ed2f30976a1490f3165f9d4e20ac7cabf01b55da4cc4f8f53a4c506e6f427e469c2fbf68636200871f3acf07e159ba6d9b65e7386216b98474a34"; - flatName = "glob"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^7.1.4"; - checksum = "9/c55966a5db7ed2f30976a1490f3165f9d4e20ac7cabf01b55da4cc4f8f53a4c506e6f427e469c2fbf68636200871f3acf07e159ba6d9b65e7386216b98474a34"; - dependencies = { - "fs.realpath" = packages."fs.realpath@npm:1.0.0"; - "inflight" = packages."inflight@npm:1.0.6"; - "inherits" = packages."inherits@npm:2.0.4"; - "minimatch" = packages."minimatch@npm:3.1.2"; - "once" = packages."once@npm:1.4.0"; - "path-is-absolute" = packages."path-is-absolute@npm:1.0.1"; - }; - }; - "glob@npm:8.0.3" = { - name = "glob"; - reference = "npm:8.0.3"; - linkType = "HARD"; - outputName = "glob-8.0.3-750f909025"; - outputHash = "e629823aabf11611bfe7b3a2f4582a5e0898daaecba3263081d5d4a8fcc595d07aefb85c178e816f7bf1c07a09fd164dc80558b83e9e825555796929164404b1"; - flatName = "glob"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^8.0.1"; - checksum = "9/e629823aabf11611bfe7b3a2f4582a5e0898daaecba3263081d5d4a8fcc595d07aefb85c178e816f7bf1c07a09fd164dc80558b83e9e825555796929164404b1"; - dependencies = { - "fs.realpath" = packages."fs.realpath@npm:1.0.0"; - "inflight" = packages."inflight@npm:1.0.6"; - "inherits" = packages."inherits@npm:2.0.4"; - "minimatch" = packages."minimatch@npm:5.1.0"; - "once" = packages."once@npm:1.4.0"; - }; - }; - "global-modules@npm:1.0.0" = { - name = "global-modules"; - reference = "npm:1.0.0"; - linkType = "HARD"; - outputName = "global-modules-1.0.0-70c522e57a"; - outputHash = "aa60a98d3ecd46a1e171ccdc62d6ea1e562f8e03e0bf14d9216b6a55bd8c7a08ed67628d971c1979f287bac36fc554d49ae65b781c661119a88d62b5b396fb25"; - flatName = "global-modules"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^1.0.0"; - checksum = "9/aa60a98d3ecd46a1e171ccdc62d6ea1e562f8e03e0bf14d9216b6a55bd8c7a08ed67628d971c1979f287bac36fc554d49ae65b781c661119a88d62b5b396fb25"; - dependencies = { - "global-prefix" = packages."global-prefix@npm:1.0.2"; - "is-windows" = packages."is-windows@npm:1.0.2"; - "resolve-dir" = packages."resolve-dir@npm:1.0.1"; - }; - }; - "global-prefix@npm:1.0.2" = { - name = "global-prefix"; - reference = "npm:1.0.2"; - linkType = "HARD"; - outputName = "global-prefix-1.0.2-a96996834b"; - outputHash = "8624bc18f73c08606c78f292c8ea8cef9cc63efe084aa27d89fc5e2bd6a8da107631ea084094577995554e24ed861d0eeab52da64f7264df6cc9719df7d649c5"; - flatName = "global-prefix"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^1.0.1"; - checksum = "9/8624bc18f73c08606c78f292c8ea8cef9cc63efe084aa27d89fc5e2bd6a8da107631ea084094577995554e24ed861d0eeab52da64f7264df6cc9719df7d649c5"; - dependencies = { - "expand-tilde" = packages."expand-tilde@npm:2.0.2"; - "homedir-polyfill" = packages."homedir-polyfill@npm:1.0.3"; - "ini" = packages."ini@npm:1.3.8"; - "is-windows" = packages."is-windows@npm:1.0.2"; - "which" = packages."which@npm:1.3.1"; - }; - }; - "globals@npm:11.12.0" = { - name = "globals"; - reference = "npm:11.12.0"; - linkType = "HARD"; - outputName = "globals-11.12.0-1fa7f41a6c"; - outputHash = "f404eda4b8f32fb5c1a72edf45123ac85a3ec6441f746ec98f7e77fdea8b0bfa580d3cf9b5f8a1977fa6cbbb10b349212c8b699be414491d08f313d3e6dfe6d9"; - flatName = "globals"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^11.1.0"; - checksum = "9/f404eda4b8f32fb5c1a72edf45123ac85a3ec6441f746ec98f7e77fdea8b0bfa580d3cf9b5f8a1977fa6cbbb10b349212c8b699be414491d08f313d3e6dfe6d9"; - }; - "graceful-fs@npm:4.2.10" = { - name = "graceful-fs"; - reference = "npm:4.2.10"; - linkType = "HARD"; - outputName = "graceful-fs-4.2.10-79c70989ca"; - outputHash = "6b5f9b5aeaee0459b9c37bdbf9624f788703ce291d6bf2d7751f5003942e853f232ca613aec818d1ff7622379bc8b434c635bfda99db93e0b9b8da80ec3d844d"; - flatName = "graceful-fs"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^4.2.4"; - checksum = "9/6b5f9b5aeaee0459b9c37bdbf9624f788703ce291d6bf2d7751f5003942e853f232ca613aec818d1ff7622379bc8b434c635bfda99db93e0b9b8da80ec3d844d"; - }; - "has-flag@npm:3.0.0" = { - name = "has-flag"; - reference = "npm:3.0.0"; - linkType = "HARD"; - outputName = "has-flag-3.0.0-16ac11fe05"; - outputHash = "b1cb757b71bca736b4f7a060d52a7914b1438d7bd7ba3cb783f71728c7a72d51520955d477d54fce75e19a859d93fadc9b707de019c141c45f2e560c48beb1f9"; - flatName = "has-flag"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^3.0.0"; - checksum = "9/b1cb757b71bca736b4f7a060d52a7914b1438d7bd7ba3cb783f71728c7a72d51520955d477d54fce75e19a859d93fadc9b707de019c141c45f2e560c48beb1f9"; - }; - "has-flag@npm:4.0.0" = { - name = "has-flag"; - reference = "npm:4.0.0"; - linkType = "HARD"; - outputName = "has-flag-4.0.0-32af9f0536"; - outputHash = "71f182c441adda71ea3014dec578691a9d74356dd57c238fb2fc88247a94ca10892fe307cda0eb608b91f982d7da34aa2e46f763c4449351dedac26a0493e591"; - flatName = "has-flag"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^4.0.0"; - checksum = "9/71f182c441adda71ea3014dec578691a9d74356dd57c238fb2fc88247a94ca10892fe307cda0eb608b91f982d7da34aa2e46f763c4449351dedac26a0493e591"; - }; - "has-unicode@npm:2.0.1" = { - name = "has-unicode"; - reference = "npm:2.0.1"; - linkType = "HARD"; - outputName = "has-unicode-2.0.1-893adb4747"; - outputHash = "d7f38422bc8e339b52014ed5aea2fdcb6545e583ac252081bc7d0970ae8eaa6efa3d056aa3119ac5825bc51fc289b53fa7b3588a40b8bf71a0dabc346513c485"; - flatName = "has-unicode"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^2.0.1"; - checksum = "9/d7f38422bc8e339b52014ed5aea2fdcb6545e583ac252081bc7d0970ae8eaa6efa3d056aa3119ac5825bc51fc289b53fa7b3588a40b8bf71a0dabc346513c485"; - }; - "has@npm:1.0.3" = { - name = "has"; - reference = "npm:1.0.3"; - linkType = "HARD"; - outputName = "has-1.0.3-b7f00631c1"; - outputHash = "3e8c4d87ccd9c160d61a5db829b5fb647acac79e482476c857d5d1dc580517c6a77cf84337808f28361f6263008ce1ce5aff44407bd9241af93c623ef8d8d4f1"; - flatName = "has"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^1.0.3"; - checksum = "9/3e8c4d87ccd9c160d61a5db829b5fb647acac79e482476c857d5d1dc580517c6a77cf84337808f28361f6263008ce1ce5aff44407bd9241af93c623ef8d8d4f1"; - dependencies = { - "function-bind" = packages."function-bind@npm:1.1.1"; - }; - }; - "homedir-polyfill@npm:1.0.3" = { - name = "homedir-polyfill"; - reference = "npm:1.0.3"; - linkType = "HARD"; - outputName = "homedir-polyfill-1.0.3-da1a29ce00"; - outputHash = "c3dad1334e65957bf2c4be3bafe691345598899d2777df869ca96599509d14682bcd1cbdbf58e5c5072fb5e9950ee446f123a40a2ec45b6559484f673734d5cf"; - flatName = "homedir-polyfill"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^1.0.1"; - checksum = "9/c3dad1334e65957bf2c4be3bafe691345598899d2777df869ca96599509d14682bcd1cbdbf58e5c5072fb5e9950ee446f123a40a2ec45b6559484f673734d5cf"; - dependencies = { - "parse-passwd" = packages."parse-passwd@npm:1.0.0"; - }; - }; - "html-escaper@npm:2.0.2" = { - name = "html-escaper"; - reference = "npm:2.0.2"; - linkType = "HARD"; - outputName = "html-escaper-2.0.2-38e51ef294"; - outputHash = "f13dc2e2ea3e037740597d93b96516baf728392777f4696fbe41b82522593d59a467884751a23cdbb440aa752a5f767c57b958c9dd02f6861eaf45b9b46a1c38"; - flatName = "html-escaper"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^2.0.0"; - checksum = "9/f13dc2e2ea3e037740597d93b96516baf728392777f4696fbe41b82522593d59a467884751a23cdbb440aa752a5f767c57b958c9dd02f6861eaf45b9b46a1c38"; - }; - "http-cache-semantics@npm:4.1.0" = { - name = "http-cache-semantics"; - reference = "npm:4.1.0"; - linkType = "HARD"; - outputName = "http-cache-semantics-4.1.0-860520a31f"; - outputHash = "ccfe23dd2729bc564ab419330e0c4646a1247e8dd728a4a6b3ab427b5243d2e0afea0c6fe690ff9ead43d02bd84cc5240e996543c4c87866f272e26e40540acd"; - flatName = "http-cache-semantics"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^4.1.0"; - checksum = "9/ccfe23dd2729bc564ab419330e0c4646a1247e8dd728a4a6b3ab427b5243d2e0afea0c6fe690ff9ead43d02bd84cc5240e996543c4c87866f272e26e40540acd"; - }; - "http-proxy-agent@npm:5.0.0" = { - name = "http-proxy-agent"; - reference = "npm:5.0.0"; - linkType = "HARD"; - outputName = "http-proxy-agent-5.0.0-7f1f121b83"; - outputHash = "b59a9b4bdd7c1d3450956a2974cb7b685517c758853a873064a536f5a831879ac92a28c717f69eb60ff3c924b262cb5aaf80cf62f5c2c24d1129d2b8dadf1e7c"; - flatName = "http-proxy-agent"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^5.0.0"; - checksum = "9/b59a9b4bdd7c1d3450956a2974cb7b685517c758853a873064a536f5a831879ac92a28c717f69eb60ff3c924b262cb5aaf80cf62f5c2c24d1129d2b8dadf1e7c"; - dependencies = { - "@tootallnate/once" = packages."@tootallnate/once@npm:2.0.0"; - "agent-base" = packages."agent-base@npm:6.0.2"; - "debug" = packages."debug@virtual:113ef2a03aa3de337889da32b02d27edf5e95d2b3c50aaf8ade4848a62355b637cece6c5a2b0f14480eef0d6c8ed8e9cacaca7d39e60125049f7120bdbeb5489#npm:4.3.4"; - }; - }; - "https-proxy-agent@npm:5.0.1" = { - name = "https-proxy-agent"; - reference = "npm:5.0.1"; - linkType = "HARD"; - outputName = "https-proxy-agent-5.0.1-42d65f358e"; - outputHash = "8e767faec977400c31bca2ef0f5338b843b781b63fd985c00d199adac2d6c8a5ecc6e553588a6821a058198960f167a3c83f014bd64bef9a15b176d992d29dfe"; - flatName = "https-proxy-agent"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^5.0.0"; - checksum = "9/8e767faec977400c31bca2ef0f5338b843b781b63fd985c00d199adac2d6c8a5ecc6e553588a6821a058198960f167a3c83f014bd64bef9a15b176d992d29dfe"; - dependencies = { - "agent-base" = packages."agent-base@npm:6.0.2"; - "debug" = packages."debug@virtual:113ef2a03aa3de337889da32b02d27edf5e95d2b3c50aaf8ade4848a62355b637cece6c5a2b0f14480eef0d6c8ed8e9cacaca7d39e60125049f7120bdbeb5489#npm:4.3.4"; - }; - }; - "human-signals@npm:2.1.0" = { - name = "human-signals"; - reference = "npm:2.1.0"; - linkType = "HARD"; - outputName = "human-signals-2.1.0-f75815481d"; - outputHash = "505db4e7615aec0ebeb6c191f7e7347091348a5ceb057d5926cf458f3081a1bdd3728902874de65c446143e5b9020f7a24147060dbe52b53e9602a5a40301118"; - flatName = "human-signals"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^2.1.0"; - checksum = "9/505db4e7615aec0ebeb6c191f7e7347091348a5ceb057d5926cf458f3081a1bdd3728902874de65c446143e5b9020f7a24147060dbe52b53e9602a5a40301118"; - }; - "humanize-ms@npm:1.2.1" = { - name = "humanize-ms"; - reference = "npm:1.2.1"; - linkType = "HARD"; - outputName = "humanize-ms-1.2.1-e942bd7329"; - outputHash = "fded981fd3b507fe78f7ce505c3f060e3b53cb2155d279d794a6bddb451bb1c7f865f4ca495dc0bae695ad0c182fd5be3a581b51ba30770e6adfda960bca0e68"; - flatName = "humanize-ms"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^1.2.1"; - checksum = "9/fded981fd3b507fe78f7ce505c3f060e3b53cb2155d279d794a6bddb451bb1c7f865f4ca495dc0bae695ad0c182fd5be3a581b51ba30770e6adfda960bca0e68"; - dependencies = { - "ms" = packages."ms@npm:2.1.3"; - }; - }; - "iconv-lite@npm:0.6.3" = { - name = "iconv-lite"; - reference = "npm:0.6.3"; - linkType = "HARD"; - outputName = "iconv-lite-0.6.3-24b8aae27e"; - outputHash = "14633c984e398011b4cce3d453e6566e4cc1b58f257e6fc48ae39c25a158b926e6cd7ee6023cd84aff12952a7581bd10bd4e7954af802dd5678e83b4cb8fdbba"; - flatName = "iconv-lite"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^0.6.2"; - checksum = "9/14633c984e398011b4cce3d453e6566e4cc1b58f257e6fc48ae39c25a158b926e6cd7ee6023cd84aff12952a7581bd10bd4e7954af802dd5678e83b4cb8fdbba"; - dependencies = { - "safer-buffer" = packages."safer-buffer@npm:2.1.2"; - }; - }; - "ieee754@npm:1.2.1" = { - name = "ieee754"; - reference = "npm:1.2.1"; - linkType = "HARD"; - outputName = "ieee754-1.2.1-fb63b3caeb"; - outputHash = "b39fbc42879544ab1989f8ff439a3f3545d7c244a07f24607c4223291ba82ce95964a7b7fde24010ba899937046c4dfe01398c8f8bbddb53f9e562c29f18f615"; - flatName = "ieee754"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^1.1.13"; - checksum = "9/b39fbc42879544ab1989f8ff439a3f3545d7c244a07f24607c4223291ba82ce95964a7b7fde24010ba899937046c4dfe01398c8f8bbddb53f9e562c29f18f615"; - }; - "import-local@npm:3.1.0" = { - name = "import-local"; - reference = "npm:3.1.0"; - linkType = "HARD"; - outputName = "import-local-3.1.0-8960af5e51"; - outputHash = "4753863de0c7044952a56f13caa723b05ca80604da4197fd39ca2fe902fc58798164022c2c89a794eb5de273c0ecb70d3357b3c67bb0453269b2f6d9a7ae8a0c"; - flatName = "import-local"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^3.0.2"; - checksum = "9/4753863de0c7044952a56f13caa723b05ca80604da4197fd39ca2fe902fc58798164022c2c89a794eb5de273c0ecb70d3357b3c67bb0453269b2f6d9a7ae8a0c"; - bin = { - "import-local-fixture" = "fixtures/cli.js"; - }; - dependencies = { - "pkg-dir" = packages."pkg-dir@npm:4.2.0"; - "resolve-cwd" = packages."resolve-cwd@npm:3.0.0"; - }; - }; - "imurmurhash@npm:0.1.4" = { - name = "imurmurhash"; - reference = "npm:0.1.4"; - linkType = "HARD"; - outputName = "imurmurhash-0.1.4-610c5068a0"; - outputHash = "6e2473e6083063b9f5f21a9586794b3af5b3f87995bcf60cb64f3824a7323c2ae41b4eaf3d7446e20fb66b5f3410094246aa3c52db7585270c8b10f762b8ffa1"; - flatName = "imurmurhash"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^0.1.4"; - checksum = "9/6e2473e6083063b9f5f21a9586794b3af5b3f87995bcf60cb64f3824a7323c2ae41b4eaf3d7446e20fb66b5f3410094246aa3c52db7585270c8b10f762b8ffa1"; - }; - "indent-string@npm:4.0.0" = { - name = "indent-string"; - reference = "npm:4.0.0"; - linkType = "HARD"; - outputName = "indent-string-4.0.0-7b717435b2"; - outputHash = "f4ab9e229c120377a63fce905062e5fdf1c300ca01b72401dda5aa991e8f614fdb2f99fe7cc37ef3234413da4ab43d5a4f905356fdffb9d078e83806d274719c"; - flatName = "indent-string"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^4.0.0"; - checksum = "9/f4ab9e229c120377a63fce905062e5fdf1c300ca01b72401dda5aa991e8f614fdb2f99fe7cc37ef3234413da4ab43d5a4f905356fdffb9d078e83806d274719c"; - }; - "infer-owner@npm:1.0.4" = { - name = "infer-owner"; - reference = "npm:1.0.4"; - linkType = "HARD"; - outputName = "infer-owner-1.0.4-685ac3d2af"; - outputHash = "2020f6d0322e7910ce841134a303c69857e456531d8cd01e336f6eea18122d1085b93ebde961745e5f278233f7f8a3d8b60b9276c8dbd3f49c4c352582ec9504"; - flatName = "infer-owner"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^1.0.4"; - checksum = "9/2020f6d0322e7910ce841134a303c69857e456531d8cd01e336f6eea18122d1085b93ebde961745e5f278233f7f8a3d8b60b9276c8dbd3f49c4c352582ec9504"; - }; - "inflight@npm:1.0.6" = { - name = "inflight"; - reference = "npm:1.0.6"; - linkType = "HARD"; - outputName = "inflight-1.0.6-ccedb4b908"; - outputHash = "40d0e5db34e05d49b9ad9ac678334269745644f73206862a8dee6e50ada1c8b3e70774ce28d5e6e3b03b7b868c9d9ae1edaf6eff253fc50209e4c69decad1811"; - flatName = "inflight"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^1.0.4"; - checksum = "9/40d0e5db34e05d49b9ad9ac678334269745644f73206862a8dee6e50ada1c8b3e70774ce28d5e6e3b03b7b868c9d9ae1edaf6eff253fc50209e4c69decad1811"; - dependencies = { - "once" = packages."once@npm:1.4.0"; - "wrappy" = packages."wrappy@npm:1.0.2"; - }; - }; - "inherits@npm:2.0.4" = { - name = "inherits"; - reference = "npm:2.0.4"; - linkType = "HARD"; - outputName = "inherits-2.0.4-c66b3957a0"; - outputHash = "ca76c7e45ec715bfe6c1dd67b780b9a15068f37b37ab56cf8b773537b2654238469a42950f5f4d301212755e7512be888f627752e778e1863d95cfedefc8b8bd"; - flatName = "inherits"; - languageName = "node"; - scope = null; - descriptorRange = "npm:2"; - checksum = "9/ca76c7e45ec715bfe6c1dd67b780b9a15068f37b37ab56cf8b773537b2654238469a42950f5f4d301212755e7512be888f627752e778e1863d95cfedefc8b8bd"; - }; - "ini@npm:1.3.8" = { - name = "ini"; - reference = "npm:1.3.8"; - linkType = "HARD"; - outputName = "ini-1.3.8-fb5040b4c0"; - outputHash = "37fad549288bc1d016dce7360166c87d28cd1e3ca4077bd30a1bd648285b9a4f6212062a121bec0f06673687a23642b1f945e940998055427c8c15fead710c3a"; - flatName = "ini"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^1.3.4"; - checksum = "9/37fad549288bc1d016dce7360166c87d28cd1e3ca4077bd30a1bd648285b9a4f6212062a121bec0f06673687a23642b1f945e940998055427c8c15fead710c3a"; - }; - "interpret@npm:2.2.0" = { - name = "interpret"; - reference = "npm:2.2.0"; - linkType = "HARD"; - outputName = "interpret-2.2.0-3603a544e1"; - outputHash = "1451c590e83ef48d423df24f0ecb303fad014a748957e607d7e215bcfe24e5f5ba8c3eb7a006bbff74cb3952fc1be3925ab4f925e4a166edb799ba247db2b88e"; - flatName = "interpret"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^2.2.0"; - checksum = "9/1451c590e83ef48d423df24f0ecb303fad014a748957e607d7e215bcfe24e5f5ba8c3eb7a006bbff74cb3952fc1be3925ab4f925e4a166edb799ba247db2b88e"; - }; - "ip@npm:2.0.0" = { - name = "ip"; - reference = "npm:2.0.0"; - linkType = "HARD"; - outputName = "ip-2.0.0-204facb3cc"; - outputHash = "42a7cf251b844d98a4c3373d06997b991cd1a7f8a5d43bcf2b4f610517d39c5504f6eb3e73e77f5c1453ac766690e82dab28a8a05a49a6fd7d4a40fad93640e9"; - flatName = "ip"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^2.0.0"; - checksum = "9/42a7cf251b844d98a4c3373d06997b991cd1a7f8a5d43bcf2b4f610517d39c5504f6eb3e73e77f5c1453ac766690e82dab28a8a05a49a6fd7d4a40fad93640e9"; - }; - "is-arrayish@npm:0.2.1" = { - name = "is-arrayish"; - reference = "npm:0.2.1"; - linkType = "HARD"; - outputName = "is-arrayish-0.2.1-23927dfb15"; - outputHash = "c701fd85259ab454cfacf4a30123e3e43542a3e60124a670e89f6e5847590ff4a6e4c0d8ccbe940df64f0001547f65856cf6a13b6528a7ce93da34cf2b2ea23d"; - flatName = "is-arrayish"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^0.2.1"; - checksum = "9/c701fd85259ab454cfacf4a30123e3e43542a3e60124a670e89f6e5847590ff4a6e4c0d8ccbe940df64f0001547f65856cf6a13b6528a7ce93da34cf2b2ea23d"; - }; - "is-arrayish@npm:0.3.2" = { - name = "is-arrayish"; - reference = "npm:0.3.2"; - linkType = "HARD"; - outputName = "is-arrayish-0.3.2-f856180f79"; - outputHash = "aed0a701c526d97138e196db5e445da84fea5b649e9466c1d592d2fa7a2a12aa37acb03ca313c38341787dcec5c45b20559bb2abc101dad585d82227e6bc5480"; - flatName = "is-arrayish"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^0.3.1"; - checksum = "9/aed0a701c526d97138e196db5e445da84fea5b649e9466c1d592d2fa7a2a12aa37acb03ca313c38341787dcec5c45b20559bb2abc101dad585d82227e6bc5480"; - }; - "is-core-module@npm:2.11.0" = { - name = "is-core-module"; - reference = "npm:2.11.0"; - linkType = "HARD"; - outputName = "is-core-module-2.11.0-70061e141a"; - outputHash = "c1bf6feab8bba140f691b853db3032d33ce1bc883ecd1b7ddb4e33f2443b4da2bcbba671b6290c34f45c27a8fc02c0bf5e01c68192671f9133029d21a48f25b0"; - flatName = "is-core-module"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^2.9.0"; - checksum = "9/c1bf6feab8bba140f691b853db3032d33ce1bc883ecd1b7ddb4e33f2443b4da2bcbba671b6290c34f45c27a8fc02c0bf5e01c68192671f9133029d21a48f25b0"; - dependencies = { - "has" = packages."has@npm:1.0.3"; - }; - }; - "is-docker@npm:2.2.1" = { - name = "is-docker"; - reference = "npm:2.2.1"; - linkType = "HARD"; - outputName = "is-docker-2.2.1-3f18a53aff"; - outputHash = "4a6decb5f39980f0be8169474b2f2db9f76f77dc83353cdf815e7790b51ed29775eb316e77a868b5c80c4587e8c98d533eef484c0b76f856c576282a8c52920f"; - flatName = "is-docker"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^2.1.1"; - checksum = "9/4a6decb5f39980f0be8169474b2f2db9f76f77dc83353cdf815e7790b51ed29775eb316e77a868b5c80c4587e8c98d533eef484c0b76f856c576282a8c52920f"; - bin = { - "is-docker" = "cli.js"; - }; - }; - "is-fullwidth-code-point@npm:3.0.0" = { - name = "is-fullwidth-code-point"; - reference = "npm:3.0.0"; - linkType = "HARD"; - outputName = "is-fullwidth-code-point-3.0.0-1ecf4ebee5"; - outputHash = "c06b5792b82dcdedb41858cdb07ca4ae5b9a853ad65c91529533221f384d751bedd8ad8db5a527cb219fd989c32a0faa0833312b6a190fe597acdd23165ef724"; - flatName = "is-fullwidth-code-point"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^3.0.0"; - checksum = "9/c06b5792b82dcdedb41858cdb07ca4ae5b9a853ad65c91529533221f384d751bedd8ad8db5a527cb219fd989c32a0faa0833312b6a190fe597acdd23165ef724"; - }; - "is-generator-fn@npm:2.1.0" = { - name = "is-generator-fn"; - reference = "npm:2.1.0"; - linkType = "HARD"; - outputName = "is-generator-fn-2.1.0-37895c2d2b"; - outputHash = "dea460d0252b7678c996a58d102a458b90bde12dea632ed1c89ef946c6657d4334fab3160e757cd034930610c23cbb5bbe47a569ae7a4e693098d1e3e7aa7e86"; - flatName = "is-generator-fn"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^2.0.0"; - checksum = "9/dea460d0252b7678c996a58d102a458b90bde12dea632ed1c89ef946c6657d4334fab3160e757cd034930610c23cbb5bbe47a569ae7a4e693098d1e3e7aa7e86"; - }; - "is-lambda@npm:1.0.1" = { - name = "is-lambda"; - reference = "npm:1.0.1"; - linkType = "HARD"; - outputName = "is-lambda-1.0.1-7ab55bc8a8"; - outputHash = "8e761e558bf60bd3682648e6ecb6333e9ad9c5a6fef2a9ca879deef1a40478e5f7e18999fc3630ef8b879cf00bc0248ffa5616aa4251917a7f87f066841310aa"; - flatName = "is-lambda"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^1.0.1"; - checksum = "9/8e761e558bf60bd3682648e6ecb6333e9ad9c5a6fef2a9ca879deef1a40478e5f7e18999fc3630ef8b879cf00bc0248ffa5616aa4251917a7f87f066841310aa"; - }; - "is-number@npm:7.0.0" = { - name = "is-number"; - reference = "npm:7.0.0"; - linkType = "HARD"; - outputName = "is-number-7.0.0-060086935c"; - outputHash = "748df55ae14cc960b090a7611932940df9fa703b7e0fb4f73943b4eb94c4b5391f27ba3881fab8f5bf7a2f097490e812db0d58d05c92154e70fdf14f93d6fa95"; - flatName = "is-number"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^7.0.0"; - checksum = "9/748df55ae14cc960b090a7611932940df9fa703b7e0fb4f73943b4eb94c4b5391f27ba3881fab8f5bf7a2f097490e812db0d58d05c92154e70fdf14f93d6fa95"; - }; - "is-plain-object@npm:2.0.4" = { - name = "is-plain-object"; - reference = "npm:2.0.4"; - linkType = "HARD"; - outputName = "is-plain-object-2.0.4-da3265d804"; - outputHash = "fd67792beb6982bbf5d0b0e8e0f743947d0ca6a1068e20b4826d47e7d7b674fdd4860e4c685880081ea3cedb03aeddf55037500ca7d9ee09335908118b46782f"; - flatName = "is-plain-object"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^2.0.4"; - checksum = "9/fd67792beb6982bbf5d0b0e8e0f743947d0ca6a1068e20b4826d47e7d7b674fdd4860e4c685880081ea3cedb03aeddf55037500ca7d9ee09335908118b46782f"; - dependencies = { - "isobject" = packages."isobject@npm:3.0.1"; - }; - }; - "is-stream@npm:1.1.0" = { - name = "is-stream"; - reference = "npm:1.1.0"; - linkType = "HARD"; - outputName = "is-stream-1.1.0-818ecbf6bb"; - outputHash = "e04ef26bd08243470b82d5e2dd923663b24bd48313e662c678f9623e67174a19e2cb957bb895f1d1ecbe8b2157946c512b1cf64817da8bdc85a981ed3b51eab3"; - flatName = "is-stream"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^1.0.1"; - checksum = "9/e04ef26bd08243470b82d5e2dd923663b24bd48313e662c678f9623e67174a19e2cb957bb895f1d1ecbe8b2157946c512b1cf64817da8bdc85a981ed3b51eab3"; - }; - "is-stream@npm:2.0.1" = { - name = "is-stream"; - reference = "npm:2.0.1"; - linkType = "HARD"; - outputName = "is-stream-2.0.1-c802db55e7"; - outputHash = "763e33689433924775b560e63fb7c0f7fae6cbc54fd9c410bb3536341b96fca85ce26720ba13ffb9b46446bdf540308771fe5910462b47b1e7d4c42dbd230f46"; - flatName = "is-stream"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^2.0.0"; - checksum = "9/763e33689433924775b560e63fb7c0f7fae6cbc54fd9c410bb3536341b96fca85ce26720ba13ffb9b46446bdf540308771fe5910462b47b1e7d4c42dbd230f46"; - }; - "is-windows@npm:1.0.2" = { - name = "is-windows"; - reference = "npm:1.0.2"; - linkType = "HARD"; - outputName = "is-windows-1.0.2-898cd6f3d7"; - outputHash = "ba7ae056a6a1ab995164ff9212cb7ddc764669144dae7c9d6e34431fc36ec2d3a6a831855a0ac21fb80d4a44e8dc2223437aa68999920fc113b662306bbc776c"; - flatName = "is-windows"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^1.0.1"; - checksum = "9/ba7ae056a6a1ab995164ff9212cb7ddc764669144dae7c9d6e34431fc36ec2d3a6a831855a0ac21fb80d4a44e8dc2223437aa68999920fc113b662306bbc776c"; - }; - "is-wsl@npm:2.2.0" = { - name = "is-wsl"; - reference = "npm:2.2.0"; - linkType = "HARD"; - outputName = "is-wsl-2.2.0-2ba10d6393"; - outputHash = "44a5dd51a565631dc02905673e6fc1eded217f5039a20ded7ab17ced7352746937f08dac3f4eecafe5ac854528d6fef2378d8d2ffaab0e6d10109f6a36ed4986"; - flatName = "is-wsl"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^2.2.0"; - checksum = "9/44a5dd51a565631dc02905673e6fc1eded217f5039a20ded7ab17ced7352746937f08dac3f4eecafe5ac854528d6fef2378d8d2ffaab0e6d10109f6a36ed4986"; - dependencies = { - "is-docker" = packages."is-docker@npm:2.2.1"; - }; - }; - "isexe@npm:2.0.0" = { - name = "isexe"; - reference = "npm:2.0.0"; - linkType = "HARD"; - outputName = "isexe-2.0.0-b58870bd2e"; - outputHash = "b37fe0a7983c0c151c7b31ca716405aaea190ac9cd6ef3f79355f4afb043ed4d3182a6addd73b20df7a0b229269737ad0daf64116821a048bfbe6b8fb7eb842c"; - flatName = "isexe"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^2.0.0"; - checksum = "9/b37fe0a7983c0c151c7b31ca716405aaea190ac9cd6ef3f79355f4afb043ed4d3182a6addd73b20df7a0b229269737ad0daf64116821a048bfbe6b8fb7eb842c"; - }; - "isobject@npm:3.0.1" = { - name = "isobject"; - reference = "npm:3.0.1"; - linkType = "HARD"; - outputName = "isobject-3.0.1-8145901fd2"; - outputHash = "63ee4c1b8002898c138728082399ad3f3f77f6e2f1ee8cc286bb4641aebcaaecb0931c608a64525471a95356daf42ea35b2f2610e15ea2c9ba6a6b4ab7b909fc"; - flatName = "isobject"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^3.0.1"; - checksum = "9/63ee4c1b8002898c138728082399ad3f3f77f6e2f1ee8cc286bb4641aebcaaecb0931c608a64525471a95356daf42ea35b2f2610e15ea2c9ba6a6b4ab7b909fc"; - }; - "isomorphic-fetch@npm:2.2.1" = { - name = "isomorphic-fetch"; - reference = "npm:2.2.1"; - linkType = "HARD"; - outputName = "isomorphic-fetch-2.2.1-46b4db5d7b"; - outputHash = "be884d501ff03c1d216dfbb1145e444e72e62d06ad150ed396eddb521d42d23de68ae6af0d9cdbe30aa643a0702fe81c0b3f11e5c40f3cecebda844a4459b8ea"; - flatName = "isomorphic-fetch"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^2.2.1"; - checksum = "9/be884d501ff03c1d216dfbb1145e444e72e62d06ad150ed396eddb521d42d23de68ae6af0d9cdbe30aa643a0702fe81c0b3f11e5c40f3cecebda844a4459b8ea"; - dependencies = { - "node-fetch" = packages."node-fetch@npm:1.7.3"; - "whatwg-fetch" = packages."whatwg-fetch@npm:3.6.2"; - }; - }; - "istanbul-lib-coverage@npm:3.2.0" = { - name = "istanbul-lib-coverage"; - reference = "npm:3.2.0"; - linkType = "HARD"; - outputName = "istanbul-lib-coverage-3.2.0-93f84b2c8c"; - outputHash = "a763d8be15991de6b4c4e99727126a0fd4da3a3d87577a1e42c8856674f361472196f8db7307801b35a294f48ffcf66c6cc45f34086ca58015f16a9fc9fc04f6"; - flatName = "istanbul-lib-coverage"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^3.0.0"; - checksum = "9/a763d8be15991de6b4c4e99727126a0fd4da3a3d87577a1e42c8856674f361472196f8db7307801b35a294f48ffcf66c6cc45f34086ca58015f16a9fc9fc04f6"; - }; - "istanbul-lib-instrument@npm:5.2.1" = { - name = "istanbul-lib-instrument"; - reference = "npm:5.2.1"; - linkType = "HARD"; - outputName = "istanbul-lib-instrument-5.2.1-1b3ad719a9"; - outputHash = "838cd5b11262e72e023a176748834054a213b4b8d24674e210af3cd626b77d547f3d0c82d8784bf322b07d183b14c6e296bfba6f9eb035ae1d6669a71036bf4c"; - flatName = "istanbul-lib-instrument"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^5.1.0"; - checksum = "9/838cd5b11262e72e023a176748834054a213b4b8d24674e210af3cd626b77d547f3d0c82d8784bf322b07d183b14c6e296bfba6f9eb035ae1d6669a71036bf4c"; - dependencies = { - "@babel/core" = packages."@babel/core@npm:7.19.6"; - "@babel/parser" = packages."@babel/parser@npm:7.19.6"; - "@istanbuljs/schema" = packages."@istanbuljs/schema@npm:0.1.3"; - "istanbul-lib-coverage" = packages."istanbul-lib-coverage@npm:3.2.0"; - "semver" = packages."semver@npm:6.3.0"; - }; - }; - "istanbul-lib-report@npm:3.0.0" = { - name = "istanbul-lib-report"; - reference = "npm:3.0.0"; - linkType = "HARD"; - outputName = "istanbul-lib-report-3.0.0-660f97340a"; - outputHash = "9b728ea9453bbefa7d872f1522d389b5cb107990e403849e9caabee7851d3c072abab655a18810879660ed986922ad7551e886bc1aa6f909248d0f3b951813ab"; - flatName = "istanbul-lib-report"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^3.0.0"; - checksum = "9/9b728ea9453bbefa7d872f1522d389b5cb107990e403849e9caabee7851d3c072abab655a18810879660ed986922ad7551e886bc1aa6f909248d0f3b951813ab"; - dependencies = { - "istanbul-lib-coverage" = packages."istanbul-lib-coverage@npm:3.2.0"; - "make-dir" = packages."make-dir@npm:3.1.0"; - "supports-color" = packages."supports-color@npm:7.2.0"; - }; - }; - "istanbul-lib-source-maps@npm:4.0.1" = { - name = "istanbul-lib-source-maps"; - reference = "npm:4.0.1"; - linkType = "HARD"; - outputName = "istanbul-lib-source-maps-4.0.1-af0f859df7"; - outputHash = "c86601cf50ebfdc22a51e838228d6d5969bd83035815b4da5aff2fb790876fe872d1fb1a8b23b8748379844a82c11d6fb1fd609d63b3c32844a21305e32fe79c"; - flatName = "istanbul-lib-source-maps"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^4.0.0"; - checksum = "9/c86601cf50ebfdc22a51e838228d6d5969bd83035815b4da5aff2fb790876fe872d1fb1a8b23b8748379844a82c11d6fb1fd609d63b3c32844a21305e32fe79c"; - dependencies = { - "istanbul-lib-coverage" = packages."istanbul-lib-coverage@npm:3.2.0"; - "source-map" = packages."source-map@npm:0.6.1"; - "debug" = packages."debug@virtual:113ef2a03aa3de337889da32b02d27edf5e95d2b3c50aaf8ade4848a62355b637cece6c5a2b0f14480eef0d6c8ed8e9cacaca7d39e60125049f7120bdbeb5489#npm:4.3.4"; - }; - }; - "istanbul-reports@npm:3.1.5" = { - name = "istanbul-reports"; - reference = "npm:3.1.5"; - linkType = "HARD"; - outputName = "istanbul-reports-3.1.5-fb11324e3e"; - outputHash = "1dbb467f79cdc6498b27b4579a00f0faeea03678af0f92f4705e8877095043b258e8022e036cae8ee524dbf1eb5615281c92da1fb5b88706642ab865eea71b8a"; - flatName = "istanbul-reports"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^3.1.3"; - checksum = "9/1dbb467f79cdc6498b27b4579a00f0faeea03678af0f92f4705e8877095043b258e8022e036cae8ee524dbf1eb5615281c92da1fb5b88706642ab865eea71b8a"; - dependencies = { - "html-escaper" = packages."html-escaper@npm:2.0.2"; - "istanbul-lib-report" = packages."istanbul-lib-report@npm:3.0.0"; - }; - }; - "jest-changed-files@npm:29.2.0" = { - name = "jest-changed-files"; - reference = "npm:29.2.0"; - linkType = "HARD"; - outputName = "jest-changed-files-29.2.0-e1a1846230"; - outputHash = "25dde5fc345c918e63ade88caa815a44d6601de81c029b43c1ca92a5d0149944096de830559596b6505ea62129b125ba9f6ce0867366a08c9cac72828cf4a37e"; - flatName = "jest-changed-files"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^29.2.0"; - checksum = "9/25dde5fc345c918e63ade88caa815a44d6601de81c029b43c1ca92a5d0149944096de830559596b6505ea62129b125ba9f6ce0867366a08c9cac72828cf4a37e"; - dependencies = { - "execa" = packages."execa@npm:5.1.1"; - "p-limit" = packages."p-limit@npm:3.1.0"; - }; - }; - "jest-circus@npm:29.2.2" = { - name = "jest-circus"; - reference = "npm:29.2.2"; - linkType = "HARD"; - outputName = "jest-circus-29.2.2-ea2087b633"; - outputHash = "6edb359ec43e010dc0f1dd8ecdb6698a4097fa05e7f7da7433b05d9bb97b14e4831bb80f5e24d3db09006e4296caf631385c32209616845537100b6c7aee9ce3"; - flatName = "jest-circus"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^29.2.2"; - checksum = "9/6edb359ec43e010dc0f1dd8ecdb6698a4097fa05e7f7da7433b05d9bb97b14e4831bb80f5e24d3db09006e4296caf631385c32209616845537100b6c7aee9ce3"; - dependencies = { - "@jest/environment" = packages."@jest/environment@npm:29.2.2"; - "@jest/expect" = packages."@jest/expect@npm:29.2.2"; - "@jest/test-result" = packages."@jest/test-result@npm:29.2.1"; - "@jest/types" = packages."@jest/types@npm:29.2.1"; - "@types/node" = packages."@types/node@npm:18.11.5"; - "chalk" = packages."chalk@npm:4.1.2"; - "co" = packages."co@npm:4.6.0"; - "dedent" = packages."dedent@npm:0.7.0"; - "is-generator-fn" = packages."is-generator-fn@npm:2.1.0"; - "jest-each" = packages."jest-each@npm:29.2.1"; - "jest-matcher-utils" = packages."jest-matcher-utils@npm:29.2.2"; - "jest-message-util" = packages."jest-message-util@npm:29.2.1"; - "jest-runtime" = packages."jest-runtime@npm:29.2.2"; - "jest-snapshot" = packages."jest-snapshot@npm:29.2.2"; - "jest-util" = packages."jest-util@npm:29.2.1"; - "p-limit" = packages."p-limit@npm:3.1.0"; - "pretty-format" = packages."pretty-format@npm:29.2.1"; - "slash" = packages."slash@npm:3.0.0"; - "stack-utils" = packages."stack-utils@npm:2.0.5"; - }; - }; - "jest-cli@npm:29.2.2" = { - name = "jest-cli"; - reference = "npm:29.2.2"; - linkType = "HARD"; - outputName = "jest-cli-29.2.2-2ccf63f539"; - outputHash = "2cb5e00fccaf7d1a0d7b770f567f07f11c05d3bfdbec528acde2f3a7442f5101f4f662b96d064ee4c6206679fc4bf3f6dcdeb82dceb4e54cb0abb392bb60ff2d"; - flatName = "jest-cli"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^29.2.2"; - checksum = "9/2cb5e00fccaf7d1a0d7b770f567f07f11c05d3bfdbec528acde2f3a7442f5101f4f662b96d064ee4c6206679fc4bf3f6dcdeb82dceb4e54cb0abb392bb60ff2d"; - bin = { - "jest" = "bin/jest.js"; - }; - dependencies = { - "@jest/core" = packages."@jest/core@npm:29.2.2"; - "@jest/test-result" = packages."@jest/test-result@npm:29.2.1"; - "@jest/types" = packages."@jest/types@npm:29.2.1"; - "chalk" = packages."chalk@npm:4.1.2"; - "exit" = packages."exit@npm:0.1.2"; - "graceful-fs" = packages."graceful-fs@npm:4.2.10"; - "import-local" = packages."import-local@npm:3.1.0"; - "jest-config" = packages."jest-config@npm:29.2.2"; - "jest-util" = packages."jest-util@npm:29.2.1"; - "jest-validate" = packages."jest-validate@npm:29.2.2"; - "prompts" = packages."prompts@npm:2.4.2"; - "yargs" = packages."yargs@npm:17.6.0"; - }; - packagePeers = [ - "@types/node-notifier" - "node-notifier" - ]; - }; - "jest-cli@virtual:ed4256f3b0ab957eee4eb4cc9937c0a27bdf890325cbedbe37a05cc81927348d79226614f5771bb12c3df535a0f9cc154fc6d6aeb0f19a11f6c85dad13784690#npm:29.2.2" = { - name = "jest-cli"; - reference = "virtual:ed4256f3b0ab957eee4eb4cc9937c0a27bdf890325cbedbe37a05cc81927348d79226614f5771bb12c3df535a0f9cc154fc6d6aeb0f19a11f6c85dad13784690#npm:29.2.2"; - canonicalPackage = packages."jest-cli@npm:29.2.2"; - dependencies = { - "@jest/test-result" = packages."@jest/test-result@npm:29.2.1"; - "@jest/types" = packages."@jest/types@npm:29.2.1"; - "chalk" = packages."chalk@npm:4.1.2"; - "exit" = packages."exit@npm:0.1.2"; - "graceful-fs" = packages."graceful-fs@npm:4.2.10"; - "import-local" = packages."import-local@npm:3.1.0"; - "jest-util" = packages."jest-util@npm:29.2.1"; - "jest-validate" = packages."jest-validate@npm:29.2.2"; - "prompts" = packages."prompts@npm:2.4.2"; - "yargs" = packages."yargs@npm:17.6.0"; - "@jest/core" = packages."@jest/core@virtual:ed4256f3b0ab957eee4eb4cc9937c0a27bdf890325cbedbe37a05cc81927348d79226614f5771bb12c3df535a0f9cc154fc6d6aeb0f19a11f6c85dad13784690#npm:29.2.2"; - "jest-config" = packages."jest-config@virtual:187dccfd59b546cbeab96e1fac8f4a29696afbc7ca67e03d8ce79e0d67b256bc3288b4d4c366db1f990e8284a49e63cc878ea4732640115c72a8aabb61cf299b#npm:29.2.2"; - }; - }; - "jest-config@npm:29.2.2" = { - name = "jest-config"; - reference = "npm:29.2.2"; - linkType = "HARD"; - outputName = "jest-config-29.2.2-82fb81f0fe"; - outputHash = "5bcc84338aa904aad6a563da25f328ad05e880c6e165917b90e04953121c355b466f05717c0e0aebfa8a7da0012bdbd3df837c2e8d495e3f0186ad7f44ed76dd"; - flatName = "jest-config"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^29.2.2"; - checksum = "9/5bcc84338aa904aad6a563da25f328ad05e880c6e165917b90e04953121c355b466f05717c0e0aebfa8a7da0012bdbd3df837c2e8d495e3f0186ad7f44ed76dd"; - dependencies = { - "@babel/core" = packages."@babel/core@npm:7.19.6"; - "@jest/test-sequencer" = packages."@jest/test-sequencer@npm:29.2.2"; - "@jest/types" = packages."@jest/types@npm:29.2.1"; - "babel-jest" = packages."babel-jest@npm:29.2.2"; - "chalk" = packages."chalk@npm:4.1.2"; - "ci-info" = packages."ci-info@npm:3.5.0"; - "deepmerge" = packages."deepmerge@npm:4.2.2"; - "glob" = packages."glob@npm:7.2.3"; - "graceful-fs" = packages."graceful-fs@npm:4.2.10"; - "jest-circus" = packages."jest-circus@npm:29.2.2"; - "jest-environment-node" = packages."jest-environment-node@npm:29.2.2"; - "jest-get-type" = packages."jest-get-type@npm:29.2.0"; - "jest-regex-util" = packages."jest-regex-util@npm:29.2.0"; - "jest-resolve" = packages."jest-resolve@npm:29.2.2"; - "jest-runner" = packages."jest-runner@npm:29.2.2"; - "jest-util" = packages."jest-util@npm:29.2.1"; - "jest-validate" = packages."jest-validate@npm:29.2.2"; - "micromatch" = packages."micromatch@npm:4.0.5"; - "parse-json" = packages."parse-json@npm:5.2.0"; - "pretty-format" = packages."pretty-format@npm:29.2.1"; - "slash" = packages."slash@npm:3.0.0"; - "strip-json-comments" = packages."strip-json-comments@npm:3.1.1"; - }; - packagePeers = [ - "@types/node" - "@types/ts-node" - "ts-node" - ]; - }; - "jest-config@virtual:187dccfd59b546cbeab96e1fac8f4a29696afbc7ca67e03d8ce79e0d67b256bc3288b4d4c366db1f990e8284a49e63cc878ea4732640115c72a8aabb61cf299b#npm:29.2.2" = { - name = "jest-config"; - reference = "virtual:187dccfd59b546cbeab96e1fac8f4a29696afbc7ca67e03d8ce79e0d67b256bc3288b4d4c366db1f990e8284a49e63cc878ea4732640115c72a8aabb61cf299b#npm:29.2.2"; - canonicalPackage = packages."jest-config@npm:29.2.2"; - dependencies = { - "@babel/core" = packages."@babel/core@npm:7.19.6"; - "@jest/test-sequencer" = packages."@jest/test-sequencer@npm:29.2.2"; - "@jest/types" = packages."@jest/types@npm:29.2.1"; - "chalk" = packages."chalk@npm:4.1.2"; - "ci-info" = packages."ci-info@npm:3.5.0"; - "deepmerge" = packages."deepmerge@npm:4.2.2"; - "glob" = packages."glob@npm:7.2.3"; - "graceful-fs" = packages."graceful-fs@npm:4.2.10"; - "jest-circus" = packages."jest-circus@npm:29.2.2"; - "jest-environment-node" = packages."jest-environment-node@npm:29.2.2"; - "jest-get-type" = packages."jest-get-type@npm:29.2.0"; - "jest-regex-util" = packages."jest-regex-util@npm:29.2.0"; - "jest-resolve" = packages."jest-resolve@npm:29.2.2"; - "jest-runner" = packages."jest-runner@npm:29.2.2"; - "jest-util" = packages."jest-util@npm:29.2.1"; - "jest-validate" = packages."jest-validate@npm:29.2.2"; - "micromatch" = packages."micromatch@npm:4.0.5"; - "parse-json" = packages."parse-json@npm:5.2.0"; - "pretty-format" = packages."pretty-format@npm:29.2.1"; - "slash" = packages."slash@npm:3.0.0"; - "strip-json-comments" = packages."strip-json-comments@npm:3.1.1"; - "babel-jest" = packages."babel-jest@virtual:2de69894e9dbb2b38c261ce0e4cb29effd0e4a9821273ef323ba008e1bf3b8962515c68c82d773afa645f6d63ea314b06087940c27e3ea568b1b45999a7ca0a7#npm:29.2.2"; - }; - }; - "jest-config@virtual:ef28b7d034cb0c62b8a1b7ec1cb9e30d6e5eac5d1aee0477fe9c72b77adf63167ce4b0f383d91673f2bc246630c3e67a7f2628cbaf819cb75712b3df85927cb4#npm:29.2.2" = { - name = "jest-config"; - reference = "virtual:ef28b7d034cb0c62b8a1b7ec1cb9e30d6e5eac5d1aee0477fe9c72b77adf63167ce4b0f383d91673f2bc246630c3e67a7f2628cbaf819cb75712b3df85927cb4#npm:29.2.2"; - canonicalPackage = packages."jest-config@npm:29.2.2"; - dependencies = { - "@babel/core" = packages."@babel/core@npm:7.19.6"; - "@jest/test-sequencer" = packages."@jest/test-sequencer@npm:29.2.2"; - "@jest/types" = packages."@jest/types@npm:29.2.1"; - "@types/node" = packages."@types/node@npm:18.11.5"; - "chalk" = packages."chalk@npm:4.1.2"; - "ci-info" = packages."ci-info@npm:3.5.0"; - "deepmerge" = packages."deepmerge@npm:4.2.2"; - "glob" = packages."glob@npm:7.2.3"; - "graceful-fs" = packages."graceful-fs@npm:4.2.10"; - "jest-circus" = packages."jest-circus@npm:29.2.2"; - "jest-environment-node" = packages."jest-environment-node@npm:29.2.2"; - "jest-get-type" = packages."jest-get-type@npm:29.2.0"; - "jest-regex-util" = packages."jest-regex-util@npm:29.2.0"; - "jest-resolve" = packages."jest-resolve@npm:29.2.2"; - "jest-runner" = packages."jest-runner@npm:29.2.2"; - "jest-util" = packages."jest-util@npm:29.2.1"; - "jest-validate" = packages."jest-validate@npm:29.2.2"; - "micromatch" = packages."micromatch@npm:4.0.5"; - "parse-json" = packages."parse-json@npm:5.2.0"; - "pretty-format" = packages."pretty-format@npm:29.2.1"; - "slash" = packages."slash@npm:3.0.0"; - "strip-json-comments" = packages."strip-json-comments@npm:3.1.1"; - "babel-jest" = packages."babel-jest@virtual:2de69894e9dbb2b38c261ce0e4cb29effd0e4a9821273ef323ba008e1bf3b8962515c68c82d773afa645f6d63ea314b06087940c27e3ea568b1b45999a7ca0a7#npm:29.2.2"; - }; - }; - "jest-diff@npm:29.2.1" = { - name = "jest-diff"; - reference = "npm:29.2.1"; - linkType = "HARD"; - outputName = "jest-diff-29.2.1-3d1e8ba84a"; - outputHash = "157fa6a57a8023249a8353da73cc99feabaa76828b0b84ffa345518869d85d9dd814d3687020553647485c9e6792c72007e50801063137f77b2f2b862530890c"; - flatName = "jest-diff"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^29.2.1"; - checksum = "9/157fa6a57a8023249a8353da73cc99feabaa76828b0b84ffa345518869d85d9dd814d3687020553647485c9e6792c72007e50801063137f77b2f2b862530890c"; - dependencies = { - "chalk" = packages."chalk@npm:4.1.2"; - "diff-sequences" = packages."diff-sequences@npm:29.2.0"; - "jest-get-type" = packages."jest-get-type@npm:29.2.0"; - "pretty-format" = packages."pretty-format@npm:29.2.1"; - }; - }; - "jest-docblock@npm:29.2.0" = { - name = "jest-docblock"; - reference = "npm:29.2.0"; - linkType = "HARD"; - outputName = "jest-docblock-29.2.0-61320ddd7c"; - outputHash = "4359e77133583e089f2ef039dc90d79acb1150fbf50dccbbd5d123b190f20e4b730f00a80e5f587efbc0a2beb7f1d94ab5f3adb2b2634722b08dde268801d4aa"; - flatName = "jest-docblock"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^29.2.0"; - checksum = "9/4359e77133583e089f2ef039dc90d79acb1150fbf50dccbbd5d123b190f20e4b730f00a80e5f587efbc0a2beb7f1d94ab5f3adb2b2634722b08dde268801d4aa"; - dependencies = { - "detect-newline" = packages."detect-newline@npm:3.1.0"; - }; - }; - "jest-each@npm:29.2.1" = { - name = "jest-each"; - reference = "npm:29.2.1"; - linkType = "HARD"; - outputName = "jest-each-29.2.1-d12e75766e"; - outputHash = "4504fa9aeae54df8ee6937dff4f84d3b285d8efd6c6733c41a8e756f2200af8fc9c7ad8f204b7de7401cfdef244b5f7877a4e0f94045401b285765227e543232"; - flatName = "jest-each"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^29.2.1"; - checksum = "9/4504fa9aeae54df8ee6937dff4f84d3b285d8efd6c6733c41a8e756f2200af8fc9c7ad8f204b7de7401cfdef244b5f7877a4e0f94045401b285765227e543232"; - dependencies = { - "@jest/types" = packages."@jest/types@npm:29.2.1"; - "chalk" = packages."chalk@npm:4.1.2"; - "jest-get-type" = packages."jest-get-type@npm:29.2.0"; - "jest-util" = packages."jest-util@npm:29.2.1"; - "pretty-format" = packages."pretty-format@npm:29.2.1"; - }; - }; - "jest-environment-node@npm:29.2.2" = { - name = "jest-environment-node"; - reference = "npm:29.2.2"; - linkType = "HARD"; - outputName = "jest-environment-node-29.2.2-903ad990fc"; - outputHash = "4b0d77dcdb1b0c1b7981bebd5b48952f276a9e00ce7f73c7f62713acc4068c77356e669fa3858456d28e72892468cf9ac7e41db23be2a50fbdf2c15b4be29e38"; - flatName = "jest-environment-node"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^29.2.2"; - checksum = "9/4b0d77dcdb1b0c1b7981bebd5b48952f276a9e00ce7f73c7f62713acc4068c77356e669fa3858456d28e72892468cf9ac7e41db23be2a50fbdf2c15b4be29e38"; - dependencies = { - "@jest/environment" = packages."@jest/environment@npm:29.2.2"; - "@jest/fake-timers" = packages."@jest/fake-timers@npm:29.2.2"; - "@jest/types" = packages."@jest/types@npm:29.2.1"; - "@types/node" = packages."@types/node@npm:18.11.5"; - "jest-mock" = packages."jest-mock@npm:29.2.2"; - "jest-util" = packages."jest-util@npm:29.2.1"; - }; - }; - "jest-get-type@npm:29.2.0" = { - name = "jest-get-type"; - reference = "npm:29.2.0"; - linkType = "HARD"; - outputName = "jest-get-type-29.2.0-47b45861f7"; - outputHash = "bb688f6b906f79c93038ba1a1282f707e56b464d035dbe2b5143db35b1fb19a8a85440ec067e7ef44f29bcfac8cb5a7348321c806bea86957a5836b0d4ab9f22"; - flatName = "jest-get-type"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^29.2.0"; - checksum = "9/bb688f6b906f79c93038ba1a1282f707e56b464d035dbe2b5143db35b1fb19a8a85440ec067e7ef44f29bcfac8cb5a7348321c806bea86957a5836b0d4ab9f22"; - }; - "jest-haste-map@npm:29.2.1" = { - name = "jest-haste-map"; - reference = "npm:29.2.1"; - linkType = "HARD"; - outputName = "jest-haste-map-29.2.1-ad5b895784"; - outputHash = "27e761705347af62c9b0e14b8daf69b809650252e86f9c99ee22f76b807d0953002c988031fe01d0f869bc499c3172d278fce2c6f5f87623406b37f4f0470b17"; - flatName = "jest-haste-map"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^29.2.1"; - checksum = "9/27e761705347af62c9b0e14b8daf69b809650252e86f9c99ee22f76b807d0953002c988031fe01d0f869bc499c3172d278fce2c6f5f87623406b37f4f0470b17"; - dependencies = { - "@jest/types" = packages."@jest/types@npm:29.2.1"; - "@types/graceful-fs" = packages."@types/graceful-fs@npm:4.1.5"; - "@types/node" = packages."@types/node@npm:18.11.5"; - "anymatch" = packages."anymatch@npm:3.1.2"; - "fb-watchman" = packages."fb-watchman@npm:2.0.2"; - "fsevents" = packages."fsevents@patch:fsevents@npm%3A2.3.2#optional!builtin::version=2.3.2&hash=18f3a7"; - "graceful-fs" = packages."graceful-fs@npm:4.2.10"; - "jest-regex-util" = packages."jest-regex-util@npm:29.2.0"; - "jest-util" = packages."jest-util@npm:29.2.1"; - "jest-worker" = packages."jest-worker@npm:29.2.1"; - "micromatch" = packages."micromatch@npm:4.0.5"; - "walker" = packages."walker@npm:1.0.8"; - }; - }; - "jest-leak-detector@npm:29.2.1" = { - name = "jest-leak-detector"; - reference = "npm:29.2.1"; - linkType = "HARD"; - outputName = "jest-leak-detector-29.2.1-71814af8e4"; - outputHash = "3407e3c8afcdfe5de9d617f2d19d5e66d101e8ade869ac159da40ce0dd870485529f604c14aa39eb3d960b64edc49196dfe321aae37dbf45a6d291e45e005e50"; - flatName = "jest-leak-detector"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^29.2.1"; - checksum = "9/3407e3c8afcdfe5de9d617f2d19d5e66d101e8ade869ac159da40ce0dd870485529f604c14aa39eb3d960b64edc49196dfe321aae37dbf45a6d291e45e005e50"; - dependencies = { - "jest-get-type" = packages."jest-get-type@npm:29.2.0"; - "pretty-format" = packages."pretty-format@npm:29.2.1"; - }; - }; - "jest-matcher-utils@npm:29.2.2" = { - name = "jest-matcher-utils"; - reference = "npm:29.2.2"; - linkType = "HARD"; - outputName = "jest-matcher-utils-29.2.2-cc7cdcc549"; - outputHash = "080d8222908d10fd1acf778cdff754e72f55e7734e27fdb42b85455278f09690831dec37f9a7e003dd31fadcbde3f7aa32310e1be0862c5b0f44a3d12dd6b19d"; - flatName = "jest-matcher-utils"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^29.2.2"; - checksum = "9/080d8222908d10fd1acf778cdff754e72f55e7734e27fdb42b85455278f09690831dec37f9a7e003dd31fadcbde3f7aa32310e1be0862c5b0f44a3d12dd6b19d"; - dependencies = { - "chalk" = packages."chalk@npm:4.1.2"; - "jest-diff" = packages."jest-diff@npm:29.2.1"; - "jest-get-type" = packages."jest-get-type@npm:29.2.0"; - "pretty-format" = packages."pretty-format@npm:29.2.1"; - }; - }; - "jest-message-util@npm:29.2.1" = { - name = "jest-message-util"; - reference = "npm:29.2.1"; - linkType = "HARD"; - outputName = "jest-message-util-29.2.1-611c868be8"; - outputHash = "4f5a381782cc0ce37e5837a090cdd14bea0f1704829d8a2ba1e5f282ad27e2c141970f5880a90b9dbdb2e959299d21c9003180a0ea427526f24d431ec7bc96bd"; - flatName = "jest-message-util"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^29.2.1"; - checksum = "9/4f5a381782cc0ce37e5837a090cdd14bea0f1704829d8a2ba1e5f282ad27e2c141970f5880a90b9dbdb2e959299d21c9003180a0ea427526f24d431ec7bc96bd"; - dependencies = { - "@babel/code-frame" = packages."@babel/code-frame@npm:7.18.6"; - "@jest/types" = packages."@jest/types@npm:29.2.1"; - "@types/stack-utils" = packages."@types/stack-utils@npm:2.0.1"; - "chalk" = packages."chalk@npm:4.1.2"; - "graceful-fs" = packages."graceful-fs@npm:4.2.10"; - "micromatch" = packages."micromatch@npm:4.0.5"; - "pretty-format" = packages."pretty-format@npm:29.2.1"; - "slash" = packages."slash@npm:3.0.0"; - "stack-utils" = packages."stack-utils@npm:2.0.5"; - }; - }; - "jest-mock@npm:29.2.2" = { - name = "jest-mock"; - reference = "npm:29.2.2"; - linkType = "HARD"; - outputName = "jest-mock-29.2.2-95439d7ed9"; - outputHash = "3d379facb92664855f49a0a0e187546722b192bab78e40148dcbe0a8acd6041b17318e3ee8c1107882ef9f058a8999436f6c410461e1ee047b069327cf306bff"; - flatName = "jest-mock"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^29.2.2"; - checksum = "9/3d379facb92664855f49a0a0e187546722b192bab78e40148dcbe0a8acd6041b17318e3ee8c1107882ef9f058a8999436f6c410461e1ee047b069327cf306bff"; - dependencies = { - "@jest/types" = packages."@jest/types@npm:29.2.1"; - "@types/node" = packages."@types/node@npm:18.11.5"; - "jest-util" = packages."jest-util@npm:29.2.1"; - }; - }; - "jest-pnp-resolver@npm:1.2.2" = { - name = "jest-pnp-resolver"; - reference = "npm:1.2.2"; - linkType = "HARD"; - outputName = "jest-pnp-resolver-1.2.2-da20f8bdfe"; - outputHash = "407f89f2e3b321b1cbb8f919150e4985ce68610d88e3295b1a689d505a6b96786c0625807d163a25fb61a4f50a07cfaab5adc764c5c36a7be7a1c9db9f6a3981"; - flatName = "jest-pnp-resolver"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^1.2.2"; - checksum = "9/407f89f2e3b321b1cbb8f919150e4985ce68610d88e3295b1a689d505a6b96786c0625807d163a25fb61a4f50a07cfaab5adc764c5c36a7be7a1c9db9f6a3981"; - packagePeers = [ - "@types/jest-resolve" - "jest-resolve" - ]; - }; - "jest-pnp-resolver@virtual:feab314bafcb8ef83010ab39931574f8d65fc287ad4af32f12e22176665c61f29d1d2a783e727e16f59b6fb6876d47cb96d590f021b8edb2bde3c1f5c0699f5b#npm:1.2.2" = { - name = "jest-pnp-resolver"; - reference = "virtual:feab314bafcb8ef83010ab39931574f8d65fc287ad4af32f12e22176665c61f29d1d2a783e727e16f59b6fb6876d47cb96d590f021b8edb2bde3c1f5c0699f5b#npm:1.2.2"; - canonicalPackage = packages."jest-pnp-resolver@npm:1.2.2"; - dependencies = { - "jest-resolve" = packages."jest-resolve@npm:29.2.2"; - }; - }; - "jest-regex-util@npm:29.2.0" = { - name = "jest-regex-util"; - reference = "npm:29.2.0"; - linkType = "HARD"; - outputName = "jest-regex-util-29.2.0-50cc574fb1"; - outputHash = "d562a57097bac967caa16f70a2f63e60101dcb8cd82129bcd1669dc08346e5bdaf485c03746d918bc06d3d5a49c5fe7c2a9dcfd1e23f237d5d387a42630cbd99"; - flatName = "jest-regex-util"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^29.2.0"; - checksum = "9/d562a57097bac967caa16f70a2f63e60101dcb8cd82129bcd1669dc08346e5bdaf485c03746d918bc06d3d5a49c5fe7c2a9dcfd1e23f237d5d387a42630cbd99"; - }; - "jest-resolve-dependencies@npm:29.2.2" = { - name = "jest-resolve-dependencies"; - reference = "npm:29.2.2"; - linkType = "HARD"; - outputName = "jest-resolve-dependencies-29.2.2-7db6bfa463"; - outputHash = "098179d9b80b81b6b0891e866d2d7817683c74058f1b77eb6927e74927ccc6439637fc2e8c724a2a23af164ae06e21975366c57afe779054bc789f52dcfd237f"; - flatName = "jest-resolve-dependencies"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^29.2.2"; - checksum = "9/098179d9b80b81b6b0891e866d2d7817683c74058f1b77eb6927e74927ccc6439637fc2e8c724a2a23af164ae06e21975366c57afe779054bc789f52dcfd237f"; - dependencies = { - "jest-regex-util" = packages."jest-regex-util@npm:29.2.0"; - "jest-snapshot" = packages."jest-snapshot@npm:29.2.2"; - }; - }; - "jest-resolve@npm:29.2.2" = { - name = "jest-resolve"; - reference = "npm:29.2.2"; - linkType = "HARD"; - outputName = "jest-resolve-29.2.2-feab314baf"; - outputHash = "4bf3ad8a70439c32e158002dfbedd52b0607d4c3ec1c31ec8c0c40dbe81b966cc1b53fc98dd096b0fe5da44d0b3bd37abfafdd667596fde2ee55b1093d9cd157"; - flatName = "jest-resolve"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^29.2.2"; - checksum = "9/4bf3ad8a70439c32e158002dfbedd52b0607d4c3ec1c31ec8c0c40dbe81b966cc1b53fc98dd096b0fe5da44d0b3bd37abfafdd667596fde2ee55b1093d9cd157"; - dependencies = { - "chalk" = packages."chalk@npm:4.1.2"; - "graceful-fs" = packages."graceful-fs@npm:4.2.10"; - "jest-haste-map" = packages."jest-haste-map@npm:29.2.1"; - "jest-util" = packages."jest-util@npm:29.2.1"; - "jest-validate" = packages."jest-validate@npm:29.2.2"; - "resolve.exports" = packages."resolve.exports@npm:1.1.0"; - "resolve" = packages."resolve@patch:resolve@npm%3A1.22.1#optional!builtin::version=1.22.1&hash=07638b"; - "slash" = packages."slash@npm:3.0.0"; - "jest-pnp-resolver" = packages."jest-pnp-resolver@virtual:feab314bafcb8ef83010ab39931574f8d65fc287ad4af32f12e22176665c61f29d1d2a783e727e16f59b6fb6876d47cb96d590f021b8edb2bde3c1f5c0699f5b#npm:1.2.2"; - }; - }; - "jest-runner@npm:29.2.2" = { - name = "jest-runner"; - reference = "npm:29.2.2"; - linkType = "HARD"; - outputName = "jest-runner-29.2.2-2cef535752"; - outputHash = "e7ac7ea816ec14160c6b2bb8c3623d6b7e769d7db565e23474b2b4d54515c87fffb15ab39ced02e3144dcb63e70cf42e391bf0c97fe34353482f798bf5ea11c1"; - flatName = "jest-runner"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^29.2.2"; - checksum = "9/e7ac7ea816ec14160c6b2bb8c3623d6b7e769d7db565e23474b2b4d54515c87fffb15ab39ced02e3144dcb63e70cf42e391bf0c97fe34353482f798bf5ea11c1"; - dependencies = { - "@jest/console" = packages."@jest/console@npm:29.2.1"; - "@jest/environment" = packages."@jest/environment@npm:29.2.2"; - "@jest/test-result" = packages."@jest/test-result@npm:29.2.1"; - "@jest/transform" = packages."@jest/transform@npm:29.2.2"; - "@jest/types" = packages."@jest/types@npm:29.2.1"; - "@types/node" = packages."@types/node@npm:18.11.5"; - "chalk" = packages."chalk@npm:4.1.2"; - "emittery" = packages."emittery@npm:0.13.1"; - "graceful-fs" = packages."graceful-fs@npm:4.2.10"; - "jest-docblock" = packages."jest-docblock@npm:29.2.0"; - "jest-environment-node" = packages."jest-environment-node@npm:29.2.2"; - "jest-haste-map" = packages."jest-haste-map@npm:29.2.1"; - "jest-leak-detector" = packages."jest-leak-detector@npm:29.2.1"; - "jest-message-util" = packages."jest-message-util@npm:29.2.1"; - "jest-resolve" = packages."jest-resolve@npm:29.2.2"; - "jest-runtime" = packages."jest-runtime@npm:29.2.2"; - "jest-util" = packages."jest-util@npm:29.2.1"; - "jest-watcher" = packages."jest-watcher@npm:29.2.2"; - "jest-worker" = packages."jest-worker@npm:29.2.1"; - "p-limit" = packages."p-limit@npm:3.1.0"; - "source-map-support" = packages."source-map-support@npm:0.5.13"; - }; - }; - "jest-runtime@npm:29.2.2" = { - name = "jest-runtime"; - reference = "npm:29.2.2"; - linkType = "HARD"; - outputName = "jest-runtime-29.2.2-6056eb4643"; - outputHash = "d9e3da3d8d00e81bc7fecb78ce2719a48492bdbb09f6ec701ab70e8985e4021d2a2f704106972ec487e174fd94f6d44ec5e16161c0c1656695a2173f08ae5eb6"; - flatName = "jest-runtime"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^29.2.2"; - checksum = "9/d9e3da3d8d00e81bc7fecb78ce2719a48492bdbb09f6ec701ab70e8985e4021d2a2f704106972ec487e174fd94f6d44ec5e16161c0c1656695a2173f08ae5eb6"; - dependencies = { - "@jest/environment" = packages."@jest/environment@npm:29.2.2"; - "@jest/fake-timers" = packages."@jest/fake-timers@npm:29.2.2"; - "@jest/globals" = packages."@jest/globals@npm:29.2.2"; - "@jest/source-map" = packages."@jest/source-map@npm:29.2.0"; - "@jest/test-result" = packages."@jest/test-result@npm:29.2.1"; - "@jest/transform" = packages."@jest/transform@npm:29.2.2"; - "@jest/types" = packages."@jest/types@npm:29.2.1"; - "@types/node" = packages."@types/node@npm:18.11.5"; - "chalk" = packages."chalk@npm:4.1.2"; - "cjs-module-lexer" = packages."cjs-module-lexer@npm:1.2.2"; - "collect-v8-coverage" = packages."collect-v8-coverage@npm:1.0.1"; - "glob" = packages."glob@npm:7.2.3"; - "graceful-fs" = packages."graceful-fs@npm:4.2.10"; - "jest-haste-map" = packages."jest-haste-map@npm:29.2.1"; - "jest-message-util" = packages."jest-message-util@npm:29.2.1"; - "jest-mock" = packages."jest-mock@npm:29.2.2"; - "jest-regex-util" = packages."jest-regex-util@npm:29.2.0"; - "jest-resolve" = packages."jest-resolve@npm:29.2.2"; - "jest-snapshot" = packages."jest-snapshot@npm:29.2.2"; - "jest-util" = packages."jest-util@npm:29.2.1"; - "slash" = packages."slash@npm:3.0.0"; - "strip-bom" = packages."strip-bom@npm:4.0.0"; - }; - }; - "jest-snapshot@npm:29.2.2" = { - name = "jest-snapshot"; - reference = "npm:29.2.2"; - linkType = "HARD"; - outputName = "jest-snapshot-29.2.2-52d2763c81"; - outputHash = "2ad979843c6ef437c6645f0183c79c226b02951aefabe3aad32e94f84d14a06e92c8164d582f9f0c5a5116c8322a518b250af8d4fb31563bf061ff0be6eab740"; - flatName = "jest-snapshot"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^29.2.2"; - checksum = "9/2ad979843c6ef437c6645f0183c79c226b02951aefabe3aad32e94f84d14a06e92c8164d582f9f0c5a5116c8322a518b250af8d4fb31563bf061ff0be6eab740"; - dependencies = { - "@babel/core" = packages."@babel/core@npm:7.19.6"; - "@babel/generator" = packages."@babel/generator@npm:7.19.6"; - "@babel/traverse" = packages."@babel/traverse@npm:7.19.6"; - "@babel/types" = packages."@babel/types@npm:7.19.4"; - "@jest/expect-utils" = packages."@jest/expect-utils@npm:29.2.2"; - "@jest/transform" = packages."@jest/transform@npm:29.2.2"; - "@jest/types" = packages."@jest/types@npm:29.2.1"; - "@types/babel__traverse" = packages."@types/babel__traverse@npm:7.18.2"; - "@types/prettier" = packages."@types/prettier@npm:2.7.1"; - "chalk" = packages."chalk@npm:4.1.2"; - "expect" = packages."expect@npm:29.2.2"; - "graceful-fs" = packages."graceful-fs@npm:4.2.10"; - "jest-diff" = packages."jest-diff@npm:29.2.1"; - "jest-get-type" = packages."jest-get-type@npm:29.2.0"; - "jest-haste-map" = packages."jest-haste-map@npm:29.2.1"; - "jest-matcher-utils" = packages."jest-matcher-utils@npm:29.2.2"; - "jest-message-util" = packages."jest-message-util@npm:29.2.1"; - "jest-util" = packages."jest-util@npm:29.2.1"; - "natural-compare" = packages."natural-compare@npm:1.4.0"; - "pretty-format" = packages."pretty-format@npm:29.2.1"; - "semver" = packages."semver@npm:7.3.8"; - "@babel/plugin-syntax-jsx" = packages."@babel/plugin-syntax-jsx@virtual:52d2763c817f325964d4357cf9dbe187e8ec48bcb3ce478452f0362bd97d1cca745e5a9f31131ff3c69969b9b1419e86adfe045b57a151ae5d135fb663f3aa9d#npm:7.18.6"; - "@babel/plugin-syntax-typescript" = packages."@babel/plugin-syntax-typescript@virtual:52d2763c817f325964d4357cf9dbe187e8ec48bcb3ce478452f0362bd97d1cca745e5a9f31131ff3c69969b9b1419e86adfe045b57a151ae5d135fb663f3aa9d#npm:7.18.6"; - "babel-preset-current-node-syntax" = packages."babel-preset-current-node-syntax@virtual:52d2763c817f325964d4357cf9dbe187e8ec48bcb3ce478452f0362bd97d1cca745e5a9f31131ff3c69969b9b1419e86adfe045b57a151ae5d135fb663f3aa9d#npm:1.0.1"; - }; - }; - "jest-util@npm:29.2.1" = { - name = "jest-util"; - reference = "npm:29.2.1"; - linkType = "HARD"; - outputName = "jest-util-29.2.1-9985a33765"; - outputHash = "d2bb747485b631ec2ba862c1aa181fc94df4e4591c481bf7af4fa6aeb1e3eee27a6e85a6067579a05f65a8ca6ce05e1189dd59edf1853a970239a388bcad23f2"; - flatName = "jest-util"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^29.2.1"; - checksum = "9/d2bb747485b631ec2ba862c1aa181fc94df4e4591c481bf7af4fa6aeb1e3eee27a6e85a6067579a05f65a8ca6ce05e1189dd59edf1853a970239a388bcad23f2"; - dependencies = { - "@jest/types" = packages."@jest/types@npm:29.2.1"; - "@types/node" = packages."@types/node@npm:18.11.5"; - "chalk" = packages."chalk@npm:4.1.2"; - "ci-info" = packages."ci-info@npm:3.5.0"; - "graceful-fs" = packages."graceful-fs@npm:4.2.10"; - "picomatch" = packages."picomatch@npm:2.3.1"; - }; - }; - "jest-validate@npm:29.2.2" = { - name = "jest-validate"; - reference = "npm:29.2.2"; - linkType = "HARD"; - outputName = "jest-validate-29.2.2-088058b247"; - outputHash = "06e63a74e8cff967ffca7682b152dd09dfb580410370bbae4e844f50efd953fb679f916c8f912a44185882ca79a5efb5d9dc528c9617f86e99c041f3e6b00f26"; - flatName = "jest-validate"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^29.2.2"; - checksum = "9/06e63a74e8cff967ffca7682b152dd09dfb580410370bbae4e844f50efd953fb679f916c8f912a44185882ca79a5efb5d9dc528c9617f86e99c041f3e6b00f26"; - dependencies = { - "@jest/types" = packages."@jest/types@npm:29.2.1"; - "camelcase" = packages."camelcase@npm:6.3.0"; - "chalk" = packages."chalk@npm:4.1.2"; - "jest-get-type" = packages."jest-get-type@npm:29.2.0"; - "leven" = packages."leven@npm:3.1.0"; - "pretty-format" = packages."pretty-format@npm:29.2.1"; - }; - }; - "jest-watcher@npm:29.2.2" = { - name = "jest-watcher"; - reference = "npm:29.2.2"; - linkType = "HARD"; - outputName = "jest-watcher-29.2.2-20f3f9aba9"; - outputHash = "118851ce776cceb20403dc0f471ec6ec4e79f073be012a07a7d857390194af7b175e7d083fbca73c77443aa6a9828e7309a9f50bcaa03285398ec4b7a3adbec5"; - flatName = "jest-watcher"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^29.2.2"; - checksum = "9/118851ce776cceb20403dc0f471ec6ec4e79f073be012a07a7d857390194af7b175e7d083fbca73c77443aa6a9828e7309a9f50bcaa03285398ec4b7a3adbec5"; - dependencies = { - "@jest/test-result" = packages."@jest/test-result@npm:29.2.1"; - "@jest/types" = packages."@jest/types@npm:29.2.1"; - "@types/node" = packages."@types/node@npm:18.11.5"; - "ansi-escapes" = packages."ansi-escapes@npm:4.3.2"; - "chalk" = packages."chalk@npm:4.1.2"; - "emittery" = packages."emittery@npm:0.13.1"; - "jest-util" = packages."jest-util@npm:29.2.1"; - "string-length" = packages."string-length@npm:4.0.2"; - }; - }; - "jest-worker@npm:27.5.1" = { - name = "jest-worker"; - reference = "npm:27.5.1"; - linkType = "HARD"; - outputName = "jest-worker-27.5.1-1c110b5894"; - outputHash = "dc5167cc25813211fd1920be69c32c71afcb7b8bff117b87669cc445fdfdb086d84b61e4cdd69bf310705ec453354753930b4f64cf40b9d4f6f1e1c28c86543e"; - flatName = "jest-worker"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^27.4.5"; - checksum = "9/dc5167cc25813211fd1920be69c32c71afcb7b8bff117b87669cc445fdfdb086d84b61e4cdd69bf310705ec453354753930b4f64cf40b9d4f6f1e1c28c86543e"; - dependencies = { - "@types/node" = packages."@types/node@npm:18.11.5"; - "merge-stream" = packages."merge-stream@npm:2.0.0"; - "supports-color" = packages."supports-color@npm:8.1.1"; - }; - }; - "jest-worker@npm:29.2.1" = { - name = "jest-worker"; - reference = "npm:29.2.1"; - linkType = "HARD"; - outputName = "jest-worker-29.2.1-f152a67b79"; - outputHash = "6feaeac250274c22e229a6b9bdc60e47e96310fd1d4726669aebe51bf3c8d3f4445c2901c8be0442a829b9b4730aeb5bf25255f8d05d73076b8558ac25f6cb6e"; - flatName = "jest-worker"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^29.2.1"; - checksum = "9/6feaeac250274c22e229a6b9bdc60e47e96310fd1d4726669aebe51bf3c8d3f4445c2901c8be0442a829b9b4730aeb5bf25255f8d05d73076b8558ac25f6cb6e"; - dependencies = { - "@types/node" = packages."@types/node@npm:18.11.5"; - "jest-util" = packages."jest-util@npm:29.2.1"; - "merge-stream" = packages."merge-stream@npm:2.0.0"; - "supports-color" = packages."supports-color@npm:8.1.1"; - }; - }; - "jest@npm:29.2.2" = { - name = "jest"; - reference = "npm:29.2.2"; - linkType = "HARD"; - outputName = "jest-29.2.2-4b93549fb0"; - outputHash = "659b7edf3b6587abf1bdb520eddaca3a5fc976222dc65831b9e982b62ea227b8bdf60fa117fcffcac1e9d03fe8a79e58f3a6ef27507b63b4e89eaab0c5819c6e"; - flatName = "jest"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^29.2.2"; - checksum = "9/659b7edf3b6587abf1bdb520eddaca3a5fc976222dc65831b9e982b62ea227b8bdf60fa117fcffcac1e9d03fe8a79e58f3a6ef27507b63b4e89eaab0c5819c6e"; - bin = { - "jest" = "bin/jest.js"; - }; - dependencies = { - "@jest/core" = packages."@jest/core@npm:29.2.2"; - "@jest/types" = packages."@jest/types@npm:29.2.1"; - "import-local" = packages."import-local@npm:3.1.0"; - "jest-cli" = packages."jest-cli@npm:29.2.2"; - }; - packagePeers = [ - "@types/node-notifier" - "node-notifier" - ]; - }; - "jest@virtual:a585144e15e84575e46cc830f85385f6313ef412d3c2dc37baf2e8c9c2f433d57318f84d807636b675be55f255212ca55600409cfa54712421408c4c7e51a64a#npm:29.2.2" = { - name = "jest"; - reference = "virtual:a585144e15e84575e46cc830f85385f6313ef412d3c2dc37baf2e8c9c2f433d57318f84d807636b675be55f255212ca55600409cfa54712421408c4c7e51a64a#npm:29.2.2"; - canonicalPackage = packages."jest@npm:29.2.2"; - dependencies = { - "@jest/types" = packages."@jest/types@npm:29.2.1"; - "import-local" = packages."import-local@npm:3.1.0"; - "@jest/core" = packages."@jest/core@virtual:ed4256f3b0ab957eee4eb4cc9937c0a27bdf890325cbedbe37a05cc81927348d79226614f5771bb12c3df535a0f9cc154fc6d6aeb0f19a11f6c85dad13784690#npm:29.2.2"; - "jest-cli" = packages."jest-cli@virtual:ed4256f3b0ab957eee4eb4cc9937c0a27bdf890325cbedbe37a05cc81927348d79226614f5771bb12c3df535a0f9cc154fc6d6aeb0f19a11f6c85dad13784690#npm:29.2.2"; - }; - }; - "js-tokens@npm:4.0.0" = { - name = "js-tokens"; - reference = "npm:4.0.0"; - linkType = "HARD"; - outputName = "js-tokens-4.0.0-0ac852e9e2"; - outputHash = "47d1c18dc6b9eed4baf1db3d81b36feb95b463201c82ffce0d7a4d65ede596ba97d6ac2468974199705db9ef8a3433606af41fc7bbe7cb25c1dd601785413d9b"; - flatName = "js-tokens"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^3.0.0 || ^4.0.0"; - checksum = "9/47d1c18dc6b9eed4baf1db3d81b36feb95b463201c82ffce0d7a4d65ede596ba97d6ac2468974199705db9ef8a3433606af41fc7bbe7cb25c1dd601785413d9b"; - }; - "js-yaml@npm:3.14.1" = { - name = "js-yaml"; - reference = "npm:3.14.1"; - linkType = "HARD"; - outputName = "js-yaml-3.14.1-b968c6095e"; - outputHash = "1e0e655c5f9917215112c31302061f425cfd33af0d617e30bb043951226b25f582bcf460b197491966ba1452a98f38bc38accc910b416b9783aa1df99af38df2"; - flatName = "js-yaml"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^3.13.1"; - checksum = "9/1e0e655c5f9917215112c31302061f425cfd33af0d617e30bb043951226b25f582bcf460b197491966ba1452a98f38bc38accc910b416b9783aa1df99af38df2"; - bin = { - "js-yaml" = "bin/js-yaml.js"; - }; - dependencies = { - "argparse" = packages."argparse@npm:1.0.10"; - "esprima" = packages."esprima@npm:4.0.1"; - }; - }; - "jsesc@npm:2.5.2" = { - name = "jsesc"; - reference = "npm:2.5.2"; - linkType = "HARD"; - outputName = "jsesc-2.5.2-c5acb78804"; - outputHash = "145808bbe202187ed901a7c41d1ca88386fba41da2fc56f8e450ac07a240cc7fdb4828a6a7b7e4773931c0cee8eb938523215b3d2d2ab568ac4640d7abceaef6"; - flatName = "jsesc"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^2.5.1"; - checksum = "9/145808bbe202187ed901a7c41d1ca88386fba41da2fc56f8e450ac07a240cc7fdb4828a6a7b7e4773931c0cee8eb938523215b3d2d2ab568ac4640d7abceaef6"; - bin = { - "jsesc" = "bin/jsesc"; - }; - }; - "json-parse-even-better-errors@npm:2.3.1" = { - name = "json-parse-even-better-errors"; - reference = "npm:2.3.1"; - linkType = "HARD"; - outputName = "json-parse-even-better-errors-2.3.1-144d62256e"; - outputHash = "ba9ec77806c99530719c8c2a26aa426f421dccd6faafb4ee32f2d71dff25aefe4d150fba814eb58be8b82e765af5e7dc8e88d1c38c7227a1304f4d20a405a67a"; - flatName = "json-parse-even-better-errors"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^2.3.1"; - checksum = "9/ba9ec77806c99530719c8c2a26aa426f421dccd6faafb4ee32f2d71dff25aefe4d150fba814eb58be8b82e765af5e7dc8e88d1c38c7227a1304f4d20a405a67a"; - }; - "json-schema-traverse@npm:0.4.1" = { - name = "json-schema-traverse"; - reference = "npm:0.4.1"; - linkType = "HARD"; - outputName = "json-schema-traverse-0.4.1-4759091693"; - outputHash = "4c9b10ebd277b894fa66f7130ffcf6b8c0d2c41754ce3784d82149695dbd928c15523aab230b8206c4be5b48127cafc0467760774673ba61045e1abb52e74de2"; - flatName = "json-schema-traverse"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^0.4.1"; - checksum = "9/4c9b10ebd277b894fa66f7130ffcf6b8c0d2c41754ce3784d82149695dbd928c15523aab230b8206c4be5b48127cafc0467760774673ba61045e1abb52e74de2"; - }; - "json5@npm:2.2.1" = { - name = "json5"; - reference = "npm:2.2.1"; - linkType = "HARD"; - outputName = "json5-2.2.1-44675c859c"; - outputHash = "8bb433c397375ec5b9150e08d1a323acf5258d51126c55e11e838136f201c197e1589cba42559c97d39bac54ed1293de1e5caff17ce0dc624bfd845c10d9eaba"; - flatName = "json5"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^2.2.1"; - checksum = "9/8bb433c397375ec5b9150e08d1a323acf5258d51126c55e11e838136f201c197e1589cba42559c97d39bac54ed1293de1e5caff17ce0dc624bfd845c10d9eaba"; - bin = { - "json5" = "lib/cli.js"; - }; - }; - "kind-of@npm:6.0.3" = { - name = "kind-of"; - reference = "npm:6.0.3"; - linkType = "HARD"; - outputName = "kind-of-6.0.3-ab15f36220"; - outputHash = "4adceee06111de8a2d02e7b542c957caad38f2d54c522da0387f4735804bf1819b2ccd918c8d1c8a73276caf9d728fc8276b53e142d23879c4728a6edcbdf722"; - flatName = "kind-of"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^6.0.2"; - checksum = "9/4adceee06111de8a2d02e7b542c957caad38f2d54c522da0387f4735804bf1819b2ccd918c8d1c8a73276caf9d728fc8276b53e142d23879c4728a6edcbdf722"; - }; - "kleur@npm:3.0.3" = { - name = "kleur"; - reference = "npm:3.0.3"; - linkType = "HARD"; - outputName = "kleur-3.0.3-f6f53649a4"; - outputHash = "91b79c93267542395ca98bed81ba1e10184de1738734938fdc2ac36c6884e75e8ca9e232d8a411056b4339904c47d0162795e66674cafa210fd5c2b0d930e1a4"; - flatName = "kleur"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^3.0.3"; - checksum = "9/91b79c93267542395ca98bed81ba1e10184de1738734938fdc2ac36c6884e75e8ca9e232d8a411056b4339904c47d0162795e66674cafa210fd5c2b0d930e1a4"; - }; - "knex@npm:2.3.0" = { - name = "knex"; - reference = "npm:2.3.0"; - linkType = "HARD"; - outputName = "knex-2.3.0-dcb9d9ebc2"; - outputHash = "752d39956dc093785f9d18109816caf909f4c29676675610e67fc8d4b5da2366c0e6113495be458231f4d592769ab0b01f1336043236bbcdd2469783e1e92fc8"; - flatName = "knex"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^2.3.0"; - checksum = "9/752d39956dc093785f9d18109816caf909f4c29676675610e67fc8d4b5da2366c0e6113495be458231f4d592769ab0b01f1336043236bbcdd2469783e1e92fc8"; - bin = { - "knex" = "bin/cli.js"; - }; - dependencies = { - "colorette" = packages."colorette@npm:2.0.19"; - "commander" = packages."commander@npm:9.4.1"; - "debug" = packages."debug@npm:4.3.4"; - "escalade" = packages."escalade@npm:3.1.1"; - "esm" = packages."esm@npm:3.2.25"; - "get-package-type" = packages."get-package-type@npm:0.1.0"; - "getopts" = packages."getopts@npm:2.3.0"; - "interpret" = packages."interpret@npm:2.2.0"; - "lodash" = packages."lodash@npm:4.17.21"; - "pg-connection-string" = packages."pg-connection-string@npm:2.5.0"; - "rechoir" = packages."rechoir@npm:0.8.0"; - "resolve-from" = packages."resolve-from@npm:5.0.0"; - "tarn" = packages."tarn@npm:3.0.2"; - "tildify" = packages."tildify@npm:2.0.0"; - }; - packagePeers = [ - "@types/better-sqlite3" - "@types/mysql2" - "@types/mysql" - "@types/pg-native" - "@types/pg" - "@types/sqlite3" - "@types/tedious" - "better-sqlite3" - "mysql2" - "mysql" - "pg-native" - "pg" - "sqlite3" - "tedious" - ]; - }; - "knex@virtual:819008c351efcab39edaca3aff41825a322b497036fdaae27b5fba418f7e250764dbabc64de345136bce5b73e5ae95b76973a2b3591d90edde6160b93c624974#npm:2.3.0" = { - name = "knex"; - reference = "virtual:819008c351efcab39edaca3aff41825a322b497036fdaae27b5fba418f7e250764dbabc64de345136bce5b73e5ae95b76973a2b3591d90edde6160b93c624974#npm:2.3.0"; - canonicalPackage = packages."knex@npm:2.3.0"; - dependencies = { - "colorette" = packages."colorette@npm:2.0.19"; - "commander" = packages."commander@npm:9.4.1"; - "escalade" = packages."escalade@npm:3.1.1"; - "esm" = packages."esm@npm:3.2.25"; - "get-package-type" = packages."get-package-type@npm:0.1.0"; - "getopts" = packages."getopts@npm:2.3.0"; - "interpret" = packages."interpret@npm:2.2.0"; - "lodash" = packages."lodash@npm:4.17.21"; - "pg" = packages."pg@virtual:819008c351efcab39edaca3aff41825a322b497036fdaae27b5fba418f7e250764dbabc64de345136bce5b73e5ae95b76973a2b3591d90edde6160b93c624974#npm:8.8.0"; - "pg-connection-string" = packages."pg-connection-string@npm:2.5.0"; - "rechoir" = packages."rechoir@npm:0.8.0"; - "resolve-from" = packages."resolve-from@npm:5.0.0"; - "tarn" = packages."tarn@npm:3.0.2"; - "tildify" = packages."tildify@npm:2.0.0"; - "debug" = packages."debug@virtual:113ef2a03aa3de337889da32b02d27edf5e95d2b3c50aaf8ade4848a62355b637cece6c5a2b0f14480eef0d6c8ed8e9cacaca7d39e60125049f7120bdbeb5489#npm:4.3.4"; - }; - }; - "knex@virtual:873621ee06b4625ead2be11f2d77ba70a136cc274552602a099052f59522f7193183c2fe44bd5a376d2f62cece35edf18f6bbeac7390077ea336f092796c7037#npm:2.3.0" = { - name = "knex"; - reference = "virtual:873621ee06b4625ead2be11f2d77ba70a136cc274552602a099052f59522f7193183c2fe44bd5a376d2f62cece35edf18f6bbeac7390077ea336f092796c7037#npm:2.3.0"; - canonicalPackage = packages."knex@npm:2.3.0"; - dependencies = { - "colorette" = packages."colorette@npm:2.0.19"; - "commander" = packages."commander@npm:9.4.1"; - "escalade" = packages."escalade@npm:3.1.1"; - "esm" = packages."esm@npm:3.2.25"; - "get-package-type" = packages."get-package-type@npm:0.1.0"; - "getopts" = packages."getopts@npm:2.3.0"; - "interpret" = packages."interpret@npm:2.2.0"; - "lodash" = packages."lodash@npm:4.17.21"; - "pg-connection-string" = packages."pg-connection-string@npm:2.5.0"; - "rechoir" = packages."rechoir@npm:0.8.0"; - "resolve-from" = packages."resolve-from@npm:5.0.0"; - "tarn" = packages."tarn@npm:3.0.2"; - "tildify" = packages."tildify@npm:2.0.0"; - "debug" = packages."debug@virtual:113ef2a03aa3de337889da32b02d27edf5e95d2b3c50aaf8ade4848a62355b637cece6c5a2b0f14480eef0d6c8ed8e9cacaca7d39e60125049f7120bdbeb5489#npm:4.3.4"; - }; - }; - "leven@npm:3.1.0" = { - name = "leven"; - reference = "npm:3.1.0"; - linkType = "HARD"; - outputName = "leven-3.1.0-b7697736a3"; - outputHash = "615bb49211514d023ee44b92f879c7021f7248712bea059804811efb326ca7567d3bf6b4813c2a73f707d0cec86491c9d7ebcb50db644d942cffdc72574a2e95"; - flatName = "leven"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^3.1.0"; - checksum = "9/615bb49211514d023ee44b92f879c7021f7248712bea059804811efb326ca7567d3bf6b4813c2a73f707d0cec86491c9d7ebcb50db644d942cffdc72574a2e95"; - }; - "lines-and-columns@npm:1.2.4" = { - name = "lines-and-columns"; - reference = "npm:1.2.4"; - linkType = "HARD"; - outputName = "lines-and-columns-1.2.4-d6c7cc5799"; - outputHash = "c0807326f935ca3bbb725fe1a90d4a15e9b58939a2e75f5e85aa28e488620088b0f110bac2c384537e3c16cf64134afc67f39dd77f9249dcf7d056400d8c303b"; - flatName = "lines-and-columns"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^1.1.6"; - checksum = "9/c0807326f935ca3bbb725fe1a90d4a15e9b58939a2e75f5e85aa28e488620088b0f110bac2c384537e3c16cf64134afc67f39dd77f9249dcf7d056400d8c303b"; - }; - "loader-runner@npm:4.3.0" = { - name = "loader-runner"; - reference = "npm:4.3.0"; - linkType = "HARD"; - outputName = "loader-runner-4.3.0-9ca67df372"; - outputHash = "933f44df27137a0b3f06928615c9af8d3cde7086e46c23afb25e218f168bc4e9827cb1a9cebe15edb71df3562a97a70c37edadb80c5050fbd2135f85b16a5874"; - flatName = "loader-runner"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^4.2.0"; - checksum = "9/933f44df27137a0b3f06928615c9af8d3cde7086e46c23afb25e218f168bc4e9827cb1a9cebe15edb71df3562a97a70c37edadb80c5050fbd2135f85b16a5874"; - }; - "locate-path@npm:5.0.0" = { - name = "locate-path"; - reference = "npm:5.0.0"; - linkType = "HARD"; - outputName = "locate-path-5.0.0-46580c43e4"; - outputHash = "990eddf17c761030216219e58575787fc0ba8050058eaddc04fd419473524840349c3be6dde342f93007cacc00d6d950f906c44b72a58f68c347c1da8c0dd3a1"; - flatName = "locate-path"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^5.0.0"; - checksum = "9/990eddf17c761030216219e58575787fc0ba8050058eaddc04fd419473524840349c3be6dde342f93007cacc00d6d950f906c44b72a58f68c347c1da8c0dd3a1"; - dependencies = { - "p-locate" = packages."p-locate@npm:4.1.0"; - }; - }; - "lodash@npm:4.17.21" = { - name = "lodash"; - reference = "npm:4.17.21"; - linkType = "HARD"; - outputName = "lodash-4.17.21-6382451519"; - outputHash = "3ac18e92108d68f88429fcddee609e42cf2b653583d9bac22308815a4cd6b185b89a0ad0d9b0c670c371d9d6b61571a98fee6b36e1db14e52766ca253ed9cba0"; - flatName = "lodash"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^4.17.21"; - checksum = "9/3ac18e92108d68f88429fcddee609e42cf2b653583d9bac22308815a4cd6b185b89a0ad0d9b0c670c371d9d6b61571a98fee6b36e1db14e52766ca253ed9cba0"; - }; - "loose-envify@npm:1.4.0" = { - name = "loose-envify"; - reference = "npm:1.4.0"; - linkType = "HARD"; - outputName = "loose-envify-1.4.0-6307b72ccf"; - outputHash = "39c5fc44c6a8f7f8a92cccf174554fbb307477ef493760407920fdd4ed5f6cc1aec5b6a5ab3c3767ef79547b3e1aea09d8ca08d773232c662d910cfe473a0590"; - flatName = "loose-envify"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^1.1.0"; - checksum = "9/39c5fc44c6a8f7f8a92cccf174554fbb307477ef493760407920fdd4ed5f6cc1aec5b6a5ab3c3767ef79547b3e1aea09d8ca08d773232c662d910cfe473a0590"; - bin = { - "loose-envify" = "cli.js"; - }; - dependencies = { - "js-tokens" = packages."js-tokens@npm:4.0.0"; - }; - }; - "loupe@npm:2.3.4" = { - name = "loupe"; - reference = "npm:2.3.4"; - linkType = "HARD"; - outputName = "loupe-2.3.4-2067703c8d"; - outputHash = "2b55151a85163147adcb7e656d34cb3eafde4831566671fa046bb6c2cc4fc0d577451609a65b8ff3c9f2a36c7f06c70bce4df19db9da517eec28f8a9262c46ff"; - flatName = "loupe"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^2.3.1"; - checksum = "9/2b55151a85163147adcb7e656d34cb3eafde4831566671fa046bb6c2cc4fc0d577451609a65b8ff3c9f2a36c7f06c70bce4df19db9da517eec28f8a9262c46ff"; - dependencies = { - "get-func-name" = packages."get-func-name@npm:2.0.0"; - }; - }; - "lru-cache@npm:6.0.0" = { - name = "lru-cache"; - reference = "npm:6.0.0"; - linkType = "HARD"; - outputName = "lru-cache-6.0.0-b4c8668fe1"; - outputHash = "b2d72088dd27df27189607554990b0fd31d3fbd4037df909ef66f48a14122baf8ffce7f33edc17e6543ea7cd71fa561136518355dde2ad57676fa0b2ea53b85f"; - flatName = "lru-cache"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^6.0.0"; - checksum = "9/b2d72088dd27df27189607554990b0fd31d3fbd4037df909ef66f48a14122baf8ffce7f33edc17e6543ea7cd71fa561136518355dde2ad57676fa0b2ea53b85f"; - dependencies = { - "yallist" = packages."yallist@npm:4.0.0"; - }; - }; - "lru-cache@npm:7.14.0" = { - name = "lru-cache"; - reference = "npm:7.14.0"; - linkType = "HARD"; - outputName = "lru-cache-7.14.0-354cf654ec"; - outputHash = "b89c39d5be85787a08070503d74b961952382977a36594dbcc98dc03d71724c3e9864dffd960fb0b3b64de7161edf229d0be40498ba111f9bb75df0bc2b7c00c"; - flatName = "lru-cache"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^7.7.1"; - checksum = "9/b89c39d5be85787a08070503d74b961952382977a36594dbcc98dc03d71724c3e9864dffd960fb0b3b64de7161edf229d0be40498ba111f9bb75df0bc2b7c00c"; - }; - "make-dir@npm:3.1.0" = { - name = "make-dir"; - reference = "npm:3.1.0"; - linkType = "HARD"; - outputName = "make-dir-3.1.0-d1d7505142"; - outputHash = "17ad8c0b1b243f2b05ad0f313f4279ad067af7a9fcb51abcb1bd0a199d2e370f0edac84015611a6161371d8a58f2bbde8538656355b66311c24e2071c496e3ae"; - flatName = "make-dir"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^3.1.0"; - checksum = "9/17ad8c0b1b243f2b05ad0f313f4279ad067af7a9fcb51abcb1bd0a199d2e370f0edac84015611a6161371d8a58f2bbde8538656355b66311c24e2071c496e3ae"; - dependencies = { - "semver" = packages."semver@npm:6.3.0"; - }; - }; - "make-fetch-happen@npm:10.2.1" = { - name = "make-fetch-happen"; - reference = "npm:10.2.1"; - linkType = "HARD"; - outputName = "make-fetch-happen-10.2.1-f1cc7cd2df"; - outputHash = "cf0d4b94fb0b022d41373fe7ce0f2a170a7c2668c7404f985c4fa6fe465c24cc3d1a6a84e0a6d4b2cd60cf7d41ec26cc5205d258e15f06c33179c14a31a5e4bd"; - flatName = "make-fetch-happen"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^10.0.3"; - checksum = "9/cf0d4b94fb0b022d41373fe7ce0f2a170a7c2668c7404f985c4fa6fe465c24cc3d1a6a84e0a6d4b2cd60cf7d41ec26cc5205d258e15f06c33179c14a31a5e4bd"; - dependencies = { - "agentkeepalive" = packages."agentkeepalive@npm:4.2.1"; - "cacache" = packages."cacache@npm:16.1.3"; - "http-cache-semantics" = packages."http-cache-semantics@npm:4.1.0"; - "http-proxy-agent" = packages."http-proxy-agent@npm:5.0.0"; - "https-proxy-agent" = packages."https-proxy-agent@npm:5.0.1"; - "is-lambda" = packages."is-lambda@npm:1.0.1"; - "lru-cache" = packages."lru-cache@npm:7.14.0"; - "minipass-collect" = packages."minipass-collect@npm:1.0.2"; - "minipass-fetch" = packages."minipass-fetch@npm:2.1.2"; - "minipass-flush" = packages."minipass-flush@npm:1.0.5"; - "minipass-pipeline" = packages."minipass-pipeline@npm:1.2.4"; - "minipass" = packages."minipass@npm:3.3.5"; - "negotiator" = packages."negotiator@npm:0.6.3"; - "promise-retry" = packages."promise-retry@npm:2.0.1"; - "socks-proxy-agent" = packages."socks-proxy-agent@npm:7.0.0"; - "ssri" = packages."ssri@npm:9.0.1"; - }; - }; - "makeerror@npm:1.0.12" = { - name = "makeerror"; - reference = "npm:1.0.12"; - linkType = "HARD"; - outputName = "makeerror-1.0.12-69abf085d7"; - outputHash = "b7e1f11b28dcd46849278e628c1b8ff7696530700f3bbb1b843b510b5ff225c7e5930e795953237fa95584b9ba68bcb5995e811dd0dc65cca4a417e0444e0155"; - flatName = "makeerror"; - languageName = "node"; - scope = null; - descriptorRange = "npm:1.0.12"; - checksum = "9/b7e1f11b28dcd46849278e628c1b8ff7696530700f3bbb1b843b510b5ff225c7e5930e795953237fa95584b9ba68bcb5995e811dd0dc65cca4a417e0444e0155"; - dependencies = { - "tmpl" = packages."tmpl@npm:1.0.5"; - }; - }; - "merge-stream@npm:2.0.0" = { - name = "merge-stream"; - reference = "npm:2.0.0"; - linkType = "HARD"; - outputName = "merge-stream-2.0.0-2ac83efea5"; - outputHash = "39a20c6f74e424ffb406cba0f4907c9ce06a85c84fb42a5628c6a39cd56fb3e70481b6f4d3412cf502cc3416c6e14d8d9ae6b2a4d461e56879350741220bd1e9"; - flatName = "merge-stream"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^2.0.0"; - checksum = "9/39a20c6f74e424ffb406cba0f4907c9ce06a85c84fb42a5628c6a39cd56fb3e70481b6f4d3412cf502cc3416c6e14d8d9ae6b2a4d461e56879350741220bd1e9"; - }; - "micromatch@npm:4.0.5" = { - name = "micromatch"; - reference = "npm:4.0.5"; - linkType = "HARD"; - outputName = "micromatch-4.0.5-cfab5d7669"; - outputHash = "260305ba8cb1f073a39bbaa31edc93f7587399a094417541dc771402f83c78819ed76743c810c9fcf1c449f09bfb4de263dad8507d532e4e86063a87158a2ad6"; - flatName = "micromatch"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^4.0.4"; - checksum = "9/260305ba8cb1f073a39bbaa31edc93f7587399a094417541dc771402f83c78819ed76743c810c9fcf1c449f09bfb4de263dad8507d532e4e86063a87158a2ad6"; - dependencies = { - "braces" = packages."braces@npm:3.0.2"; - "picomatch" = packages."picomatch@npm:2.3.1"; - }; - }; - "mime-db@npm:1.52.0" = { - name = "mime-db"; - reference = "npm:1.52.0"; - linkType = "HARD"; - outputName = "mime-db-1.52.0-b5371d6fd2"; - outputHash = "95baf687a3f14ff2cc433e30dea5c4931c7f4b67059d44a0098cfb833858cad63ec13c20f98762bddd088c4e9dac6d95862db1ea9d3fe3fa68f57b69a325000d"; - flatName = "mime-db"; - languageName = "node"; - scope = null; - descriptorRange = "npm:1.52.0"; - checksum = "9/95baf687a3f14ff2cc433e30dea5c4931c7f4b67059d44a0098cfb833858cad63ec13c20f98762bddd088c4e9dac6d95862db1ea9d3fe3fa68f57b69a325000d"; - }; - "mime-types@npm:2.1.35" = { - name = "mime-types"; - reference = "npm:2.1.35"; - linkType = "HARD"; - outputName = "mime-types-2.1.35-dd9ea9f3e2"; - outputHash = "51e3b38d1b1b83da082f7c29042bcb22036101346394696b7643ef5da27ebf6bf71643bd45225ee75e4ea2836213780efc8c3dcd2055c84b49eb0afc061419d0"; - flatName = "mime-types"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^2.1.27"; - checksum = "9/51e3b38d1b1b83da082f7c29042bcb22036101346394696b7643ef5da27ebf6bf71643bd45225ee75e4ea2836213780efc8c3dcd2055c84b49eb0afc061419d0"; - dependencies = { - "mime-db" = packages."mime-db@npm:1.52.0"; - }; - }; - "mimic-fn@npm:2.1.0" = { - name = "mimic-fn"; - reference = "npm:2.1.0"; - linkType = "HARD"; - outputName = "mimic-fn-2.1.0-4fbeb3abb4"; - outputHash = "416cdf3021e8d7fc741a12ec084f4c33af4ea3a4bb3d840fab0f3a786a2d9458aa1fd284fab707f3dc1e356cb6b7c9af84b17273a6433955e11494cae4ea856e"; - flatName = "mimic-fn"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^2.1.0"; - checksum = "9/416cdf3021e8d7fc741a12ec084f4c33af4ea3a4bb3d840fab0f3a786a2d9458aa1fd284fab707f3dc1e356cb6b7c9af84b17273a6433955e11494cae4ea856e"; - }; - "mimic-response@npm:2.1.0" = { - name = "mimic-response"; - reference = "npm:2.1.0"; - linkType = "HARD"; - outputName = "mimic-response-2.1.0-037463e454"; - outputHash = "04c653f64fdfa6c11b9470e1a91fc40f518b5fec6931131d548f29eaa602ea59c688fc93ba98fc035c13eaabcebb59b7b38332145329245a49f2435939acf1cd"; - flatName = "mimic-response"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^2.0.0"; - checksum = "9/04c653f64fdfa6c11b9470e1a91fc40f518b5fec6931131d548f29eaa602ea59c688fc93ba98fc035c13eaabcebb59b7b38332145329245a49f2435939acf1cd"; - }; - "mimic-response@npm:3.1.0" = { - name = "mimic-response"; - reference = "npm:3.1.0"; - linkType = "HARD"; - outputName = "mimic-response-3.1.0-a4a24b4e96"; - outputHash = "1d485ca418ab93d27d5a90b0ad701eee79fdf6a7dfd0342f7c83e1f2b421703eadadf9d1c968bff4749dcb42bb2148dc4b6bce795b7b357b46d47731353b7077"; - flatName = "mimic-response"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^3.1.0"; - checksum = "9/1d485ca418ab93d27d5a90b0ad701eee79fdf6a7dfd0342f7c83e1f2b421703eadadf9d1c968bff4749dcb42bb2148dc4b6bce795b7b357b46d47731353b7077"; - }; - "minimatch@npm:3.1.2" = { - name = "minimatch"; - reference = "npm:3.1.2"; - linkType = "HARD"; - outputName = "minimatch-3.1.2-9405269906"; - outputHash = "97f5615ee8f7c0019277dadef7b2b81e5c60d369cb3155cbfb9da72688aef2edb652b105353ff08a6575ae95a6189d1c09a0829b9c254f60849148457c4d8a66"; - flatName = "minimatch"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^3.1.1"; - checksum = "9/97f5615ee8f7c0019277dadef7b2b81e5c60d369cb3155cbfb9da72688aef2edb652b105353ff08a6575ae95a6189d1c09a0829b9c254f60849148457c4d8a66"; - dependencies = { - "brace-expansion" = packages."brace-expansion@npm:1.1.11"; - }; - }; - "minimatch@npm:5.1.0" = { - name = "minimatch"; - reference = "npm:5.1.0"; - linkType = "HARD"; - outputName = "minimatch-5.1.0-34f6240621"; - outputHash = "cf8124b47d19be2d6a4b2cab80114999239ab6a01062e2f0abe666b779de120b6f85ed9a73e3a27b61fa088fb45957929a8fcc727bd20de829d3e4e659ad01ff"; - flatName = "minimatch"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^5.0.1"; - checksum = "9/cf8124b47d19be2d6a4b2cab80114999239ab6a01062e2f0abe666b779de120b6f85ed9a73e3a27b61fa088fb45957929a8fcc727bd20de829d3e4e659ad01ff"; - dependencies = { - "brace-expansion" = packages."brace-expansion@npm:2.0.1"; - }; - }; - "minimist@npm:1.2.7" = { - name = "minimist"; - reference = "npm:1.2.7"; - linkType = "HARD"; - outputName = "minimist-1.2.7-51d33b1371"; - outputHash = "7bb50119bb59f48228a834e293a566c4b0e1b6c4648db83fb88830b4f932bfeaca72158bcdcc8a74130b339167eda92ec4cabb65faf07ab8d32542889a451676"; - flatName = "minimist"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^1.2.3"; - checksum = "9/7bb50119bb59f48228a834e293a566c4b0e1b6c4648db83fb88830b4f932bfeaca72158bcdcc8a74130b339167eda92ec4cabb65faf07ab8d32542889a451676"; - }; - "minipass-collect@npm:1.0.2" = { - name = "minipass-collect"; - reference = "npm:1.0.2"; - linkType = "HARD"; - outputName = "minipass-collect-1.0.2-3b4676eab5"; - outputHash = "4d608e8a292ec87dd1a7d881c314effe341a7d7f52eb416270a243f8ea7f4e23b40b2785f5ce9c6c7841e1453841019efd5db05b427288b897c96f62afbc1f17"; - flatName = "minipass-collect"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^1.0.2"; - checksum = "9/4d608e8a292ec87dd1a7d881c314effe341a7d7f52eb416270a243f8ea7f4e23b40b2785f5ce9c6c7841e1453841019efd5db05b427288b897c96f62afbc1f17"; - dependencies = { - "minipass" = packages."minipass@npm:3.3.5"; - }; - }; - "minipass-fetch@npm:2.1.2" = { - name = "minipass-fetch"; - reference = "npm:2.1.2"; - linkType = "HARD"; - outputName = "minipass-fetch-2.1.2-9b21a5c930"; - outputHash = "8ec17c0895d8890b863bbdf860e25bc2f81580c0bbc2cfc05d220f8b5bc255203ee1931f54821e299fd1d5a53d63bfaca20a813a2f45e881423d096c24940366"; - flatName = "minipass-fetch"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^2.0.3"; - checksum = "9/8ec17c0895d8890b863bbdf860e25bc2f81580c0bbc2cfc05d220f8b5bc255203ee1931f54821e299fd1d5a53d63bfaca20a813a2f45e881423d096c24940366"; - dependencies = { - "encoding" = packages."encoding@npm:0.1.13"; - "minipass-sized" = packages."minipass-sized@npm:1.0.3"; - "minipass" = packages."minipass@npm:3.3.5"; - "minizlib" = packages."minizlib@npm:2.1.2"; - }; - }; - "minipass-flush@npm:1.0.5" = { - name = "minipass-flush"; - reference = "npm:1.0.5"; - linkType = "HARD"; - outputName = "minipass-flush-1.0.5-efe79d9826"; - outputHash = "6e851bd0640e5406633b0aa77e889d4175eb3d12b55173e999e6dd1fc06ed13982277e012d6f41dc28a2167278d9480697893f6cd286c46c10fdfd735e05d45d"; - flatName = "minipass-flush"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^1.0.5"; - checksum = "9/6e851bd0640e5406633b0aa77e889d4175eb3d12b55173e999e6dd1fc06ed13982277e012d6f41dc28a2167278d9480697893f6cd286c46c10fdfd735e05d45d"; - dependencies = { - "minipass" = packages."minipass@npm:3.3.5"; - }; - }; - "minipass-pipeline@npm:1.2.4" = { - name = "minipass-pipeline"; - reference = "npm:1.2.4"; - linkType = "HARD"; - outputName = "minipass-pipeline-1.2.4-5924cb077f"; - outputHash = "07dd09bf3c6f546ef407e7a36bca4cd2235d54695c083dc5815052e36cbdd46e55a7c0dae2801983c73257adc7aa613e375c8350587bc50a6a10e1a6b55f9965"; - flatName = "minipass-pipeline"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^1.2.4"; - checksum = "9/07dd09bf3c6f546ef407e7a36bca4cd2235d54695c083dc5815052e36cbdd46e55a7c0dae2801983c73257adc7aa613e375c8350587bc50a6a10e1a6b55f9965"; - dependencies = { - "minipass" = packages."minipass@npm:3.3.5"; - }; - }; - "minipass-sized@npm:1.0.3" = { - name = "minipass-sized"; - reference = "npm:1.0.3"; - linkType = "HARD"; - outputName = "minipass-sized-1.0.3-306d86f432"; - outputHash = "54591ac7e54571e91df602e3c1018f4048ee12a3407dfab8140e0b03cb149c16ae67e94d36682c0869a683b8443470e354dba123ea83914c87ff22d8d8628fea"; - flatName = "minipass-sized"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^1.0.3"; - checksum = "9/54591ac7e54571e91df602e3c1018f4048ee12a3407dfab8140e0b03cb149c16ae67e94d36682c0869a683b8443470e354dba123ea83914c87ff22d8d8628fea"; - dependencies = { - "minipass" = packages."minipass@npm:3.3.5"; - }; - }; - "minipass@npm:3.3.5" = { - name = "minipass"; - reference = "npm:3.3.5"; - linkType = "HARD"; - outputName = "minipass-3.3.5-a555b091e7"; - outputHash = "54b7be3d5d111832afcb7cc2bcb9e1bd21c3701731d1cd6dd91d673b7658f0c01bd52887764cf08f5dafe9a94abd7ce8fc800a2afe2bc19207bd83daac5ee052"; - flatName = "minipass"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^3.0.0"; - checksum = "9/54b7be3d5d111832afcb7cc2bcb9e1bd21c3701731d1cd6dd91d673b7658f0c01bd52887764cf08f5dafe9a94abd7ce8fc800a2afe2bc19207bd83daac5ee052"; - dependencies = { - "yallist" = packages."yallist@npm:4.0.0"; - }; - }; - "minizlib@npm:2.1.2" = { - name = "minizlib"; - reference = "npm:2.1.2"; - linkType = "HARD"; - outputName = "minizlib-2.1.2-ea89cd0cfb"; - outputHash = "c0071edb242d6808652840614193316e82d012b79ff1997352de3df1c19b7580d3d4790c462c8506b1f4225f08162ebba88ebceb1529d168304b06b23757e88d"; - flatName = "minizlib"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^2.1.1"; - checksum = "9/c0071edb242d6808652840614193316e82d012b79ff1997352de3df1c19b7580d3d4790c462c8506b1f4225f08162ebba88ebceb1529d168304b06b23757e88d"; - dependencies = { - "minipass" = packages."minipass@npm:3.3.5"; - "yallist" = packages."yallist@npm:4.0.0"; - }; - }; - "mkdirp-classic@npm:0.5.3" = { - name = "mkdirp-classic"; - reference = "npm:0.5.3"; - linkType = "HARD"; - outputName = "mkdirp-classic-0.5.3-3b5c991910"; - outputHash = "5afc1f004d905d299db7f58035f77a23b8703802e89486f09635971be0e6d09f409c2c862fe4c9a5bcba563675e831840fd0fd8b5c2f5bd41f6aa5a9e4b3bb3a"; - flatName = "mkdirp-classic"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^0.5.2"; - checksum = "9/5afc1f004d905d299db7f58035f77a23b8703802e89486f09635971be0e6d09f409c2c862fe4c9a5bcba563675e831840fd0fd8b5c2f5bd41f6aa5a9e4b3bb3a"; - }; - "mkdirp@npm:1.0.4" = { - name = "mkdirp"; - reference = "npm:1.0.4"; - linkType = "HARD"; - outputName = "mkdirp-1.0.4-37f6ef56b9"; - outputHash = "123361119829ab8115234f36ed8ef8f697b0f6f83ec9f9bc8f76da587487976d74bc874ffa892e7a66df607fa8f2cc758eed8db225e9cd3a84846350209e53db"; - flatName = "mkdirp"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^1.0.3"; - checksum = "9/123361119829ab8115234f36ed8ef8f697b0f6f83ec9f9bc8f76da587487976d74bc874ffa892e7a66df607fa8f2cc758eed8db225e9cd3a84846350209e53db"; - bin = { - "mkdirp" = "bin/cmd.js"; - }; - }; - "ms@npm:2.1.2" = { - name = "ms"; - reference = "npm:2.1.2"; - linkType = "HARD"; - outputName = "ms-2.1.2-ec0c1512ff"; - outputHash = "3f46af60a08158f1c77746c06c2f6c7aba7feddafd41335f9baa2d7e0741d7539774aa7d5d1661a7f2b7eed55a7063771297eea016051924dbb04d4c2bf40bcb"; - flatName = "ms"; - languageName = "node"; - scope = null; - descriptorRange = "npm:2.1.2"; - checksum = "9/3f46af60a08158f1c77746c06c2f6c7aba7feddafd41335f9baa2d7e0741d7539774aa7d5d1661a7f2b7eed55a7063771297eea016051924dbb04d4c2bf40bcb"; - }; - "ms@npm:2.1.3" = { - name = "ms"; - reference = "npm:2.1.3"; - linkType = "HARD"; - outputName = "ms-2.1.3-81ff3cfac1"; - outputHash = "78c12f6b473a022ebacc393fc14b76fe40b8feda7218124b86c4684e440e10377a063bec1d3902df1f74714f02b74b36ad7d3a6de9e2fbffa26fc29e5ce018fc"; - flatName = "ms"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^2.0.0"; - checksum = "9/78c12f6b473a022ebacc393fc14b76fe40b8feda7218124b86c4684e440e10377a063bec1d3902df1f74714f02b74b36ad7d3a6de9e2fbffa26fc29e5ce018fc"; - }; - "nan@npm:2.17.0" = { - name = "nan"; - reference = "npm:2.17.0"; - linkType = "HARD"; - outputName = "nan-2.17.0-bf36a21d6f"; - outputHashByPlatform = { - "aarch64-darwin" = "sha512-vaHklwbCugGO1eXXYwW7TmwZUx06adQReESZw4KTdbNPoP0ioUIBnAjBWaWPrhxQEE/czsGxJh504Ce/+/dHyA=="; - }; - shouldBeUnplugged = true; - flatName = "nan"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^2.15.0"; - checksum = "9/d424a730ee926fd928545c29ba19609bc1af03f8210c4465c825ba87070b83c546da2964a14d6acdacca847798184f48d5b8585f061dcb59459b300f2aff09c8"; - dependencies = { - "node-gyp" = packages."node-gyp@npm:9.3.0"; - }; - }; - "nanoid@npm:3.3.4" = { - name = "nanoid"; - reference = "npm:3.3.4"; - linkType = "HARD"; - outputName = "nanoid-3.3.4-3d250377d6"; - outputHash = "53d605377c76614170df4b5a8d3fa21f13c7077453a77e2393a9fe3df5722022f6b94a671f406b51f81e9c937a6928555c1589e3c46a0d9d29f31872d1362246"; - flatName = "nanoid"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^3.3.4"; - checksum = "9/53d605377c76614170df4b5a8d3fa21f13c7077453a77e2393a9fe3df5722022f6b94a671f406b51f81e9c937a6928555c1589e3c46a0d9d29f31872d1362246"; - bin = { - "nanoid" = "bin/nanoid.cjs"; - }; - }; - "napi-build-utils@npm:1.0.2" = { - name = "napi-build-utils"; - reference = "npm:1.0.2"; - linkType = "HARD"; - outputName = "napi-build-utils-1.0.2-892e4bba56"; - outputHash = "f8135037d1e07905c414f8bfbd40e6cc28473c6b24becee470dde4599eb2e431e248f5cb2af9af3f6cc92dc82a3158de739550c24e32c8a13d2441df23b3536a"; - flatName = "napi-build-utils"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^1.0.1"; - checksum = "9/f8135037d1e07905c414f8bfbd40e6cc28473c6b24becee470dde4599eb2e431e248f5cb2af9af3f6cc92dc82a3158de739550c24e32c8a13d2441df23b3536a"; - }; - "natural-compare@npm:1.4.0" = { - name = "natural-compare"; - reference = "npm:1.4.0"; - linkType = "HARD"; - outputName = "natural-compare-1.4.0-97b75b362d"; - outputHash = "cf6f4ccd700fbeaae533f0821e4de8582e340f9b0324f1e6d2486484e44a64f95acf7c7e5ef274f963934d5b74c3716c8ae58e367e112effae95d8d021158bff"; - flatName = "natural-compare"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^1.4.0"; - checksum = "9/cf6f4ccd700fbeaae533f0821e4de8582e340f9b0324f1e6d2486484e44a64f95acf7c7e5ef274f963934d5b74c3716c8ae58e367e112effae95d8d021158bff"; - }; - "negotiator@npm:0.6.3" = { - name = "negotiator"; - reference = "npm:0.6.3"; - linkType = "HARD"; - outputName = "negotiator-0.6.3-9d50e36171"; - outputHash = "d8e3b42d99638b1f363ce114c98e6906ade395c230058e50644417bd398b01381133dbca4bc49f30f6b1c93254e4b5a2d50cc47adcdabf2a8476b6f16311ad5d"; - flatName = "negotiator"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^0.6.3"; - checksum = "9/d8e3b42d99638b1f363ce114c98e6906ade395c230058e50644417bd398b01381133dbca4bc49f30f6b1c93254e4b5a2d50cc47adcdabf2a8476b6f16311ad5d"; - }; - "neo-async@npm:2.6.2" = { - name = "neo-async"; - reference = "npm:2.6.2"; - linkType = "HARD"; - outputName = "neo-async-2.6.2-75d6902586"; - outputHash = "968ceb7350efb069a413eaa590b9ec2532023d6f4075c06ada75a57f86ff7ffbfc5b0b72760fadc1ccdc546b9c0bc346b69e9f5b03cdaa42f21e8063b880d305"; - flatName = "neo-async"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^2.6.2"; - checksum = "9/968ceb7350efb069a413eaa590b9ec2532023d6f4075c06ada75a57f86ff7ffbfc5b0b72760fadc1ccdc546b9c0bc346b69e9f5b03cdaa42f21e8063b880d305"; - }; - "next@npm:12.3.1" = { - name = "next"; - reference = "npm:12.3.1"; - linkType = "HARD"; - outputName = "next-12.3.1-f509d21386"; - outputHash = "f48744556b17067c869c2be2b19b44fdcb28b5356465afe13bb92125910fdbdd05dfc3f8370750bee150a57e7edf7774b25218f7174da4d01639688383c7100d"; - flatName = "next"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^12.3.1"; - checksum = "9/f48744556b17067c869c2be2b19b44fdcb28b5356465afe13bb92125910fdbdd05dfc3f8370750bee150a57e7edf7774b25218f7174da4d01639688383c7100d"; - bin = { - "next" = "dist/bin/next"; - }; - dependencies = { - "@next/env" = packages."@next/env@npm:12.3.1"; - "@next/swc-android-arm-eabi" = packages."@next/swc-android-arm-eabi@npm:12.3.1"; - "@next/swc-android-arm64" = packages."@next/swc-android-arm64@npm:12.3.1"; - "@next/swc-darwin-arm64" = packages."@next/swc-darwin-arm64@npm:12.3.1"; - "@next/swc-darwin-x64" = packages."@next/swc-darwin-x64@npm:12.3.1"; - "@next/swc-freebsd-x64" = packages."@next/swc-freebsd-x64@npm:12.3.1"; - "@next/swc-linux-arm-gnueabihf" = packages."@next/swc-linux-arm-gnueabihf@npm:12.3.1"; - "@next/swc-linux-arm64-gnu" = packages."@next/swc-linux-arm64-gnu@npm:12.3.1"; - "@next/swc-linux-arm64-musl" = packages."@next/swc-linux-arm64-musl@npm:12.3.1"; - "@next/swc-linux-x64-gnu" = packages."@next/swc-linux-x64-gnu@npm:12.3.1"; - "@next/swc-linux-x64-musl" = packages."@next/swc-linux-x64-musl@npm:12.3.1"; - "@next/swc-win32-arm64-msvc" = packages."@next/swc-win32-arm64-msvc@npm:12.3.1"; - "@next/swc-win32-ia32-msvc" = packages."@next/swc-win32-ia32-msvc@npm:12.3.1"; - "@next/swc-win32-x64-msvc" = packages."@next/swc-win32-x64-msvc@npm:12.3.1"; - "@swc/helpers" = packages."@swc/helpers@npm:0.4.11"; - "caniuse-lite" = packages."caniuse-lite@npm:1.0.30001418"; - "postcss" = packages."postcss@npm:8.4.14"; - "styled-jsx" = packages."styled-jsx@npm:5.0.7"; - "use-sync-external-store" = packages."use-sync-external-store@npm:1.2.0"; - }; - packagePeers = [ - "@types/fibers" - "@types/node-sass" - "@types/react-dom" - "@types/react" - "@types/sass" - "fibers" - "node-sass" - "react-dom" - "react" - "sass" - ]; - }; - "next@virtual:819008c351efcab39edaca3aff41825a322b497036fdaae27b5fba418f7e250764dbabc64de345136bce5b73e5ae95b76973a2b3591d90edde6160b93c624974#npm:12.3.1" = { - name = "next"; - reference = "virtual:819008c351efcab39edaca3aff41825a322b497036fdaae27b5fba418f7e250764dbabc64de345136bce5b73e5ae95b76973a2b3591d90edde6160b93c624974#npm:12.3.1"; - canonicalPackage = packages."next@npm:12.3.1"; - dependencies = { - "@next/env" = packages."@next/env@npm:12.3.1"; - "@next/swc-android-arm-eabi" = packages."@next/swc-android-arm-eabi@npm:12.3.1"; - "@next/swc-android-arm64" = packages."@next/swc-android-arm64@npm:12.3.1"; - "@next/swc-darwin-arm64" = packages."@next/swc-darwin-arm64@npm:12.3.1"; - "@next/swc-darwin-x64" = packages."@next/swc-darwin-x64@npm:12.3.1"; - "@next/swc-freebsd-x64" = packages."@next/swc-freebsd-x64@npm:12.3.1"; - "@next/swc-linux-arm-gnueabihf" = packages."@next/swc-linux-arm-gnueabihf@npm:12.3.1"; - "@next/swc-linux-arm64-gnu" = packages."@next/swc-linux-arm64-gnu@npm:12.3.1"; - "@next/swc-linux-arm64-musl" = packages."@next/swc-linux-arm64-musl@npm:12.3.1"; - "@next/swc-linux-x64-gnu" = packages."@next/swc-linux-x64-gnu@npm:12.3.1"; - "@next/swc-linux-x64-musl" = packages."@next/swc-linux-x64-musl@npm:12.3.1"; - "@next/swc-win32-arm64-msvc" = packages."@next/swc-win32-arm64-msvc@npm:12.3.1"; - "@next/swc-win32-ia32-msvc" = packages."@next/swc-win32-ia32-msvc@npm:12.3.1"; - "@next/swc-win32-x64-msvc" = packages."@next/swc-win32-x64-msvc@npm:12.3.1"; - "@swc/helpers" = packages."@swc/helpers@npm:0.4.11"; - "caniuse-lite" = packages."caniuse-lite@npm:1.0.30001418"; - "postcss" = packages."postcss@npm:8.4.14"; - "react" = packages."react@npm:18.2.0"; - "react-dom" = packages."react-dom@virtual:819008c351efcab39edaca3aff41825a322b497036fdaae27b5fba418f7e250764dbabc64de345136bce5b73e5ae95b76973a2b3591d90edde6160b93c624974#npm:18.2.0"; - "styled-jsx" = packages."styled-jsx@virtual:1ab05ef36dca2d9a10b19ac413b1804aa768c93d82badb02c953a591f06130ed235ea54657953d36a321e2fb8e6976b668c5b415a2c3e7ca0a9cfac2575a71c5#npm:5.0.7"; - "use-sync-external-store" = packages."use-sync-external-store@virtual:1ab05ef36dca2d9a10b19ac413b1804aa768c93d82badb02c953a591f06130ed235ea54657953d36a321e2fb8e6976b668c5b415a2c3e7ca0a9cfac2575a71c5#npm:1.2.0"; - }; - }; - "node-abi@npm:3.28.0" = { - name = "node-abi"; - reference = "npm:3.28.0"; - linkType = "HARD"; - outputName = "node-abi-3.28.0-7291733a57"; - outputHash = "5f99eba9f70e2aeed3a7dbd17fa3d65804eccc051b34f178754d012e48ff9e11ac71fdb674f50fb6fe653d2fa8611431c338c271c4971dbd3d1cae2efa7b7db4"; - flatName = "node-abi"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^3.3.0"; - checksum = "9/5f99eba9f70e2aeed3a7dbd17fa3d65804eccc051b34f178754d012e48ff9e11ac71fdb674f50fb6fe653d2fa8611431c338c271c4971dbd3d1cae2efa7b7db4"; - dependencies = { - "semver" = packages."semver@npm:7.3.8"; - }; - }; - "node-addon-api@npm:5.0.0" = { - name = "node-addon-api"; - reference = "npm:5.0.0"; - linkType = "HARD"; - outputName = "node-addon-api-5.0.0-c0def7fecf"; - outputHashByPlatform = { - "aarch64-darwin" = "sha512-Uw8BXOHMOmRcUkY4xfrITrenvBWpuTVhA33ECB4RkI8R1USvopS9t8XRjrqUKtlQ2L9qoa5KzBbTpWtJDnQwUg=="; - "x86_64-linux" = "sha512-Uw8BXOHMOmRcUkY4xfrITrenvBWpuTVhA33ECB4RkI8R1USvopS9t8XRjrqUKtlQ2L9qoa5KzBbTpWtJDnQwUg=="; - }; - shouldBeUnplugged = true; - flatName = "node-addon-api"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^5.0.0"; - checksum = "9/dd981b956d93d0a3b46f028776b3fa9e7ac88830de46f0f7f691e3bbea9b53f0d47e44986c2d8a7d3a016fea3772492eafcc626c23bec60b443508efcfec5f10"; - dependencies = { - "node-gyp" = packages."node-gyp@npm:9.3.0"; - }; - }; - "node-fetch@npm:1.7.3" = { - name = "node-fetch"; - reference = "npm:1.7.3"; - linkType = "HARD"; - outputName = "node-fetch-1.7.3-eb8372f991"; - outputHash = "9933c0b89424e6d0a4897401fdff1b65b7efc1d60ed6e60a75b4951a5db6785841a8e295578787d0b21eb1692f4d37163d22c96963e91f518da813b0f46b36b7"; - flatName = "node-fetch"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^1.0.1"; - checksum = "9/9933c0b89424e6d0a4897401fdff1b65b7efc1d60ed6e60a75b4951a5db6785841a8e295578787d0b21eb1692f4d37163d22c96963e91f518da813b0f46b36b7"; - dependencies = { - "encoding" = packages."encoding@npm:0.1.13"; - "is-stream" = packages."is-stream@npm:1.1.0"; - }; - }; - "node-fetch@npm:2.6.7" = { - name = "node-fetch"; - reference = "npm:2.6.7"; - linkType = "HARD"; - outputName = "node-fetch-2.6.7-777aa2a6df"; - outputHash = "05c03fe66f38b9e349e691caf121b693a91adb41ab59c3af17d2c5f9d2f8d927c30b428e7c8049b739c674db06171117ba9d10dc72d6a2cf35ba8901dfb4de83"; - flatName = "node-fetch"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^2.6.7"; - checksum = "9/05c03fe66f38b9e349e691caf121b693a91adb41ab59c3af17d2c5f9d2f8d927c30b428e7c8049b739c674db06171117ba9d10dc72d6a2cf35ba8901dfb4de83"; - dependencies = { - "whatwg-url" = packages."whatwg-url@npm:5.0.0"; - }; - packagePeers = [ - "@types/encoding" - "encoding" - ]; - }; - "node-fetch@virtual:1811160047d7e0f7e43f371e07920c11204416dd6ae0b8461e04538b2f68e9167aca28b60b34dbd287674a5cdd52bd05be5797bbe2f7de916231958cb58055fb#npm:2.6.7" = { - name = "node-fetch"; - reference = "virtual:1811160047d7e0f7e43f371e07920c11204416dd6ae0b8461e04538b2f68e9167aca28b60b34dbd287674a5cdd52bd05be5797bbe2f7de916231958cb58055fb#npm:2.6.7"; - canonicalPackage = packages."node-fetch@npm:2.6.7"; - dependencies = { - "whatwg-url" = packages."whatwg-url@npm:5.0.0"; - }; - }; - "node-gyp@npm:9.3.0" = { - name = "node-gyp"; - reference = "npm:9.3.0"; - linkType = "HARD"; - outputName = "node-gyp-9.3.0-21c41a4dfd"; - outputHashByPlatform = { - "aarch64-darwin" = "sha512-3Ct9L1Ijy3qX2zq3Rf+lGjHMbrK8SUa2jQCdWB8RCo4pktb97WJ1JkxhJdC7tPSLlgQ2htJIH8wyKCB6bgMR6g=="; - "x86_64-linux" = "sha512-3Ct9L1Ijy3qX2zq3Rf+lGjHMbrK8SUa2jQCdWB8RCo4pktb97WJ1JkxhJdC7tPSLlgQ2htJIH8wyKCB6bgMR6g=="; - }; - shouldBeUnplugged = true; - flatName = "node-gyp"; - languageName = "node"; - scope = null; - descriptorRange = "npm:latest"; - checksum = "9/986e171f91cedd913800b4f272f9c22258a15bc8f44d2426630dc68d98281614004d4da1a8aec7a70a6171056425a95828cd68d8433b89d0e16ed973507ecccf"; - bin = { - "node-gyp" = "bin/node-gyp.js"; - }; - dependencies = { - "env-paths" = packages."env-paths@npm:2.2.1"; - "glob" = packages."glob@npm:7.2.3"; - "graceful-fs" = packages."graceful-fs@npm:4.2.10"; - "make-fetch-happen" = packages."make-fetch-happen@npm:10.2.1"; - "nopt" = packages."nopt@npm:6.0.0"; - "npmlog" = packages."npmlog@npm:6.0.2"; - "rimraf" = packages."rimraf@npm:3.0.2"; - "semver" = packages."semver@npm:7.3.8"; - "tar" = packages."tar@npm:6.1.11"; - "which" = packages."which@npm:2.0.2"; - }; - }; - "node-int64@npm:0.4.0" = { - name = "node-int64"; - reference = "npm:0.4.0"; - linkType = "HARD"; - outputName = "node-int64-0.4.0-0dc04ec3b2"; - outputHash = "5333c7f5b12fafad1807687f105230a521dec9d089960e69c1fdd6e0e9f4f89fa07498a239ec5267b6e6078b1217400f400895656d93630a7d763887bf0f9a99"; - flatName = "node-int64"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^0.4.0"; - checksum = "9/5333c7f5b12fafad1807687f105230a521dec9d089960e69c1fdd6e0e9f4f89fa07498a239ec5267b6e6078b1217400f400895656d93630a7d763887bf0f9a99"; - }; - "node-releases@npm:2.0.6" = { - name = "node-releases"; - reference = "npm:2.0.6"; - linkType = "HARD"; - outputName = "node-releases-2.0.6-8accb3fefb"; - outputHash = "6d4a77d1566d9cf13d835bb2a9c4080c667417353260ba69092d570313c492772a030b5733f52838d90608e6ad558ab969673c67bc948e29143e527661e265b3"; - flatName = "node-releases"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^2.0.6"; - checksum = "9/6d4a77d1566d9cf13d835bb2a9c4080c667417353260ba69092d570313c492772a030b5733f52838d90608e6ad558ab969673c67bc948e29143e527661e265b3"; - }; - "nopt@npm:5.0.0" = { - name = "nopt"; - reference = "npm:5.0.0"; - linkType = "HARD"; - outputName = "nopt-5.0.0-304b40fbfe"; - outputHash = "cb0f3672738e989b12d8459f30366e8a89f79462581a09816cbbd575e272bc0ae2a135ac0b60647748be64100787d631cd0ac18157d519021336ae277e3362a3"; - flatName = "nopt"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^5.0.0"; - checksum = "9/cb0f3672738e989b12d8459f30366e8a89f79462581a09816cbbd575e272bc0ae2a135ac0b60647748be64100787d631cd0ac18157d519021336ae277e3362a3"; - bin = { - "nopt" = "bin/nopt.js"; - }; - dependencies = { - "abbrev" = packages."abbrev@npm:1.1.1"; - }; - }; - "nopt@npm:6.0.0" = { - name = "nopt"; - reference = "npm:6.0.0"; - linkType = "HARD"; - outputName = "nopt-6.0.0-5ea8050815"; - outputHash = "6ae5c083c5b205d0850f3b00c093cb0b1d4fb28fb69c68c3f933048e666695b1f218db6a4a7f61a4bae2f127268f526a7f2764223208e4dd527c51c56c49a5c7"; - flatName = "nopt"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^6.0.0"; - checksum = "9/6ae5c083c5b205d0850f3b00c093cb0b1d4fb28fb69c68c3f933048e666695b1f218db6a4a7f61a4bae2f127268f526a7f2764223208e4dd527c51c56c49a5c7"; - bin = { - "nopt" = "bin/nopt.js"; - }; - dependencies = { - "abbrev" = packages."abbrev@npm:1.1.1"; - }; - }; - "normalize-path@npm:3.0.0" = { - name = "normalize-path"; - reference = "npm:3.0.0"; - linkType = "HARD"; - outputName = "normalize-path-3.0.0-658ba7d77f"; - outputHash = "66de83885051c8a7266566cb175281ec583e3d66b5054c744b46a0eebc4eaac1e1d74c640aaf72144086a9661aa60e89ac0b5c92eb76608e5b8a5056dbcf9e27"; - flatName = "normalize-path"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^3.0.0"; - checksum = "9/66de83885051c8a7266566cb175281ec583e3d66b5054c744b46a0eebc4eaac1e1d74c640aaf72144086a9661aa60e89ac0b5c92eb76608e5b8a5056dbcf9e27"; - }; - "npm-run-path@npm:4.0.1" = { - name = "npm-run-path"; - reference = "npm:4.0.1"; - linkType = "HARD"; - outputName = "npm-run-path-4.0.1-7aebd8bab3"; - outputHash = "059e7eda4dfa26f1f870886cf034471d5355521138b33d575a24b4a05b08593e29332a96da8aabe908c608779367ad898f46dade2cb29f0cc14213f642cd4609"; - flatName = "npm-run-path"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^4.0.1"; - checksum = "9/059e7eda4dfa26f1f870886cf034471d5355521138b33d575a24b4a05b08593e29332a96da8aabe908c608779367ad898f46dade2cb29f0cc14213f642cd4609"; - dependencies = { - "path-key" = packages."path-key@npm:3.1.1"; - }; - }; - "npmlog@npm:5.0.1" = { - name = "npmlog"; - reference = "npm:5.0.1"; - linkType = "HARD"; - outputName = "npmlog-5.0.1-366cab64a2"; - outputHash = "3a7127689c165c3e2f7df33eb0c01b82e6ff5cb9ea2d15091b5cd7a981d8a0ffc7221ad3f2f0ee934d7ac18f6ac3b6fd0984eb17f9ffd2dfbd15af409bc5c6d7"; - flatName = "npmlog"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^5.0.1"; - checksum = "9/3a7127689c165c3e2f7df33eb0c01b82e6ff5cb9ea2d15091b5cd7a981d8a0ffc7221ad3f2f0ee934d7ac18f6ac3b6fd0984eb17f9ffd2dfbd15af409bc5c6d7"; - dependencies = { - "are-we-there-yet" = packages."are-we-there-yet@npm:2.0.0"; - "console-control-strings" = packages."console-control-strings@npm:1.1.0"; - "gauge" = packages."gauge@npm:3.0.2"; - "set-blocking" = packages."set-blocking@npm:2.0.0"; - }; - }; - "npmlog@npm:6.0.2" = { - name = "npmlog"; - reference = "npm:6.0.2"; - linkType = "HARD"; - outputName = "npmlog-6.0.2-e0e69455c7"; - outputHash = "c04307b2991f128df6f3bb71c36fa56a65397f56f02a565ed269786ecd5609818e6cae36de3371555e52fdf049a5649a3591ac3bb432a2a0146d67093c4be93c"; - flatName = "npmlog"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^6.0.0"; - checksum = "9/c04307b2991f128df6f3bb71c36fa56a65397f56f02a565ed269786ecd5609818e6cae36de3371555e52fdf049a5649a3591ac3bb432a2a0146d67093c4be93c"; - dependencies = { - "are-we-there-yet" = packages."are-we-there-yet@npm:3.0.1"; - "console-control-strings" = packages."console-control-strings@npm:1.1.0"; - "gauge" = packages."gauge@npm:4.0.4"; - "set-blocking" = packages."set-blocking@npm:2.0.0"; - }; - }; - "object-assign@npm:4.1.1" = { - name = "object-assign"; - reference = "npm:4.1.1"; - linkType = "HARD"; - outputName = "object-assign-4.1.1-1004ad6dec"; - outputHash = "f5cd1f2f1e82e12207e4f2377d9d7d90fbc0d9822a6afa717a6dcab6930d8925e1ebbbb25df770c31ff11335ee423459ba65ffa2e53999926c328b806b4d73d6"; - flatName = "object-assign"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^4.1.1"; - checksum = "9/f5cd1f2f1e82e12207e4f2377d9d7d90fbc0d9822a6afa717a6dcab6930d8925e1ebbbb25df770c31ff11335ee423459ba65ffa2e53999926c328b806b4d73d6"; - }; - "once@npm:1.4.0" = { - name = "once"; - reference = "npm:1.4.0"; - linkType = "HARD"; - outputName = "once-1.4.0-ccf03ef07a"; - outputHash = "12d5c6ece331855387577e71c96ab5b60269390b131cf9403494206274fa520221c88f8b8d431d7227d080127730460da8907c402ab4142e592c34aacb5c9817"; - flatName = "once"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^1.3.1"; - checksum = "9/12d5c6ece331855387577e71c96ab5b60269390b131cf9403494206274fa520221c88f8b8d431d7227d080127730460da8907c402ab4142e592c34aacb5c9817"; - dependencies = { - "wrappy" = packages."wrappy@npm:1.0.2"; - }; - }; - "onetime@npm:5.1.2" = { - name = "onetime"; - reference = "npm:5.1.2"; - linkType = "HARD"; - outputName = "onetime-5.1.2-3ed148fa42"; - outputHash = "69704199051db0cf44c6c7196bada91387e2a9d171b4585a55c5ce518e64522007e2bcd35833ce5663078bb72042af4cd69289586fef4f74655f604b5e02a617"; - flatName = "onetime"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^5.1.2"; - checksum = "9/69704199051db0cf44c6c7196bada91387e2a9d171b4585a55c5ce518e64522007e2bcd35833ce5663078bb72042af4cd69289586fef4f74655f604b5e02a617"; - dependencies = { - "mimic-fn" = packages."mimic-fn@npm:2.1.0"; - }; - }; - "open@npm:8.4.0" = { - name = "open"; - reference = "npm:8.4.0"; - linkType = "HARD"; - outputName = "open-8.4.0-df63cfe537"; - outputHashByPlatform = { - "aarch64-darwin" = "sha512-Wn1DDmyfrh7nCfoWSu4EVuUtxJibUAMNLqLJ56K/EvE7sRfG+IVOePGdb5C9GWhpbCiU+M6bBnTuDRWFJUtdUA=="; - }; - shouldBeUnplugged = true; - flatName = "open"; - languageName = "node"; - scope = null; - descriptorRange = "npm:8.4.0"; - checksum = "9/287db1bc10b3927b247d7c125d3ef998c410f57f434619a9d93f3e1384ff025ef12c18c1cfde1cb8f23f1326fb2bfe2634c789737bb65c18183015b5de81f594"; - dependencies = { - "define-lazy-prop" = packages."define-lazy-prop@npm:2.0.0"; - "is-docker" = packages."is-docker@npm:2.2.1"; - "is-wsl" = packages."is-wsl@npm:2.2.0"; - }; - }; - "open@patch:open@npm%3A8.4.0#.yarn/patches/open-npm-8.4.0-df63cfe537::version=8.4.0&hash=e6ee73&locator=root-workspace-0b6124%40workspace%3A." = { - name = "open"; - reference = "patch:open@npm%3A8.4.0#.yarn/patches/open-npm-8.4.0-df63cfe537::version=8.4.0&hash=e6ee73&locator=root-workspace-0b6124%40workspace%3A."; - linkType = "HARD"; - outputName = "open-8.4.0-9b4636d0d9"; - outputHashByPlatform = { - "aarch64-darwin" = "sha512-fhLJ778B2/lZjzfKYzt1dFk4OzenM2MFEiGhy4a4fjVJM7OLL4YzBLWaS64NUtWcWa+5ULvlSOyA9KliBgPa3A=="; - }; - src = ./.yarn/patches/open-npm-8.4.0-df63cfe537; - shouldBeUnplugged = true; - flatName = "open"; - languageName = "node"; - scope = null; - descriptorRange = "patch:open@npm:8.4.0#.yarn/patches/open-npm-8.4.0-df63cfe537::locator=root-workspace-0b6124%40workspace%3A."; - checksum = "9/487717975d082b4ccc5b1bd1f92b6d4e509ba2d712c7df9c176e054cbd8fcc18c5d1a31a7f1b2f46d79d8d84569e258d51807fe06435c8b45c2b8423989fa3ba"; - dependencies = { - "define-lazy-prop" = packages."define-lazy-prop@npm:2.0.0"; - "is-docker" = packages."is-docker@npm:2.2.1"; - "is-wsl" = packages."is-wsl@npm:2.2.0"; - }; - }; - "p-limit@npm:2.3.0" = { - name = "p-limit"; - reference = "npm:2.3.0"; - linkType = "HARD"; - outputName = "p-limit-2.3.0-94a0310039"; - outputHash = "c317600da8c93ba548091ddee29772a00fab9eca806af5167ed0e756c086702f0e25b51c4d29e75bb09869c0c005dc25eb03fad9958066923f6eb34d90df0465"; - flatName = "p-limit"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^2.2.0"; - checksum = "9/c317600da8c93ba548091ddee29772a00fab9eca806af5167ed0e756c086702f0e25b51c4d29e75bb09869c0c005dc25eb03fad9958066923f6eb34d90df0465"; - dependencies = { - "p-try" = packages."p-try@npm:2.2.0"; - }; - }; - "p-limit@npm:3.1.0" = { - name = "p-limit"; - reference = "npm:3.1.0"; - linkType = "HARD"; - outputName = "p-limit-3.1.0-05d2ede37f"; - outputHash = "c38ea177d6bd9e8b9a8c296145bfe2aa8963f6aae5c864630a4e1728513953319ab13bc113fe00e2b632e0ec039b23daa311f79b4f7f04b0b50f2d8b994fad46"; - flatName = "p-limit"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^3.1.0"; - checksum = "9/c38ea177d6bd9e8b9a8c296145bfe2aa8963f6aae5c864630a4e1728513953319ab13bc113fe00e2b632e0ec039b23daa311f79b4f7f04b0b50f2d8b994fad46"; - dependencies = { - "yocto-queue" = packages."yocto-queue@npm:0.1.0"; - }; - }; - "p-locate@npm:4.1.0" = { - name = "p-locate"; - reference = "npm:4.1.0"; - linkType = "HARD"; - outputName = "p-locate-4.1.0-eec6872537"; - outputHash = "3e073a6fdbbe9864ed7b0fd9905d39b38e3ed95d76ab64e3389d44a1baa5345a16683efbdeff3598036fb9406917f273aad4255a55dc3174a809dc618ddcc1ce"; - flatName = "p-locate"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^4.1.0"; - checksum = "9/3e073a6fdbbe9864ed7b0fd9905d39b38e3ed95d76ab64e3389d44a1baa5345a16683efbdeff3598036fb9406917f273aad4255a55dc3174a809dc618ddcc1ce"; - dependencies = { - "p-limit" = packages."p-limit@npm:2.3.0"; - }; - }; - "p-map@npm:4.0.0" = { - name = "p-map"; - reference = "npm:4.0.0"; - linkType = "HARD"; - outputName = "p-map-4.0.0-4677ae07c7"; - outputHash = "619df8954fe81933903bc760e9884d85540ef7e8f6c24c4e28e2c8f0ad14d480bb7d4541787eee2e2d61aa0fae8b54abc42f7afc35db457884e589386e78a922"; - flatName = "p-map"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^4.0.0"; - checksum = "9/619df8954fe81933903bc760e9884d85540ef7e8f6c24c4e28e2c8f0ad14d480bb7d4541787eee2e2d61aa0fae8b54abc42f7afc35db457884e589386e78a922"; - dependencies = { - "aggregate-error" = packages."aggregate-error@npm:3.1.0"; - }; - }; - "p-try@npm:2.2.0" = { - name = "p-try"; - reference = "npm:2.2.0"; - linkType = "HARD"; - outputName = "p-try-2.2.0-e0390dbaf8"; - outputHash = "1b9a6b5d6f42a46e36f053ee737a72cbe8f7990ee65e0d7bc3f8f8324e233d5b5e790f9f660bcc44d93738a2b12108dec1f7a39c9650d276fd1f9d73d54d4f55"; - flatName = "p-try"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^2.0.0"; - checksum = "9/1b9a6b5d6f42a46e36f053ee737a72cbe8f7990ee65e0d7bc3f8f8324e233d5b5e790f9f660bcc44d93738a2b12108dec1f7a39c9650d276fd1f9d73d54d4f55"; - }; - "packet-reader@npm:1.0.0" = { - name = "packet-reader"; - reference = "npm:1.0.0"; - linkType = "HARD"; - outputName = "packet-reader-1.0.0-e93c92246b"; - outputHash = "47e38c5b952cf3096c6625db4d655bbf484a267f46d941566079dad556b580047fe0a668b103013d16171e93b2025382cb3ffd4203c18a3a4532cc34d49a5dde"; - flatName = "packet-reader"; - languageName = "node"; - scope = null; - descriptorRange = "npm:1.0.0"; - checksum = "9/47e38c5b952cf3096c6625db4d655bbf484a267f46d941566079dad556b580047fe0a668b103013d16171e93b2025382cb3ffd4203c18a3a4532cc34d49a5dde"; - }; - "parse-json@npm:5.2.0" = { - name = "parse-json"; - reference = "npm:5.2.0"; - linkType = "HARD"; - outputName = "parse-json-5.2.0-00a63b1199"; - outputHash = "0c094e234bde1a643949a0ab6e46f12dfc8c11b38b3b7fd676a6f13499e208fe290ff94a48450abb7d043b556a31e1b4b781ced9ee3a08ac37cb250479396e50"; - flatName = "parse-json"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^5.2.0"; - checksum = "9/0c094e234bde1a643949a0ab6e46f12dfc8c11b38b3b7fd676a6f13499e208fe290ff94a48450abb7d043b556a31e1b4b781ced9ee3a08ac37cb250479396e50"; - dependencies = { - "@babel/code-frame" = packages."@babel/code-frame@npm:7.18.6"; - "error-ex" = packages."error-ex@npm:1.3.2"; - "json-parse-even-better-errors" = packages."json-parse-even-better-errors@npm:2.3.1"; - "lines-and-columns" = packages."lines-and-columns@npm:1.2.4"; - }; - }; - "parse-passwd@npm:1.0.0" = { - name = "parse-passwd"; - reference = "npm:1.0.0"; - linkType = "HARD"; - outputName = "parse-passwd-1.0.0-ace6effa1d"; - outputHash = "a84db8f7fdce8b8e6224ef0d38d66f6da0fd5b7c2c20dd5e21f02a6bf0ac75003ee7fb1f12d1c201a94283f8a66c8645f9917ba7d0e120c272b82b45637b4a76"; - flatName = "parse-passwd"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^1.0.0"; - checksum = "9/a84db8f7fdce8b8e6224ef0d38d66f6da0fd5b7c2c20dd5e21f02a6bf0ac75003ee7fb1f12d1c201a94283f8a66c8645f9917ba7d0e120c272b82b45637b4a76"; - }; - "path-exists@npm:4.0.0" = { - name = "path-exists"; - reference = "npm:4.0.0"; - linkType = "HARD"; - outputName = "path-exists-4.0.0-e9e4f63eb0"; - outputHash = "28623865ba71cdc25d2d80021407b1500d64bb74d5072f03276221b4febedbb543132f5bcc57d7fc42b32b45f4175bbae919e1810535892faa4ba9e8f2edc6dd"; - flatName = "path-exists"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^4.0.0"; - checksum = "9/28623865ba71cdc25d2d80021407b1500d64bb74d5072f03276221b4febedbb543132f5bcc57d7fc42b32b45f4175bbae919e1810535892faa4ba9e8f2edc6dd"; - }; - "path-is-absolute@npm:1.0.1" = { - name = "path-is-absolute"; - reference = "npm:1.0.1"; - linkType = "HARD"; - outputName = "path-is-absolute-1.0.1-31bc695ffd"; - outputHash = "6bb8fef4324c3f744e5d216980aa053095e1fc533d40fa47f9c1adc16be7fa52d3c4858370c7685406c32ab143a4dca0798f2e2c0f57d7937af66d8dd79267f6"; - flatName = "path-is-absolute"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^1.0.0"; - checksum = "9/6bb8fef4324c3f744e5d216980aa053095e1fc533d40fa47f9c1adc16be7fa52d3c4858370c7685406c32ab143a4dca0798f2e2c0f57d7937af66d8dd79267f6"; - }; - "path-key@npm:3.1.1" = { - name = "path-key"; - reference = "npm:3.1.1"; - linkType = "HARD"; - outputName = "path-key-3.1.1-0e66ea8321"; - outputHash = "93ee8a32e3be43548ece14eba2620bf5164884d0cc1aa3615d136567a39e02066c9b5aeb5b6747d766af55936151c95d9371ba46d4fcf361db9691505650c001"; - flatName = "path-key"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^3.1.0"; - checksum = "9/93ee8a32e3be43548ece14eba2620bf5164884d0cc1aa3615d136567a39e02066c9b5aeb5b6747d766af55936151c95d9371ba46d4fcf361db9691505650c001"; - }; - "path-parse@npm:1.0.7" = { - name = "path-parse"; - reference = "npm:1.0.7"; - linkType = "HARD"; - outputName = "path-parse-1.0.7-09564527b7"; - outputHash = "ca291d7bced407e20480b686d7ef4f9dd112ef00d6f109faa50bbefe8ff9dd51e164781fa0670c7b5d67a88610008e83e594f8294ec809c1b7203c6577ca3777"; - flatName = "path-parse"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^1.0.7"; - checksum = "9/ca291d7bced407e20480b686d7ef4f9dd112ef00d6f109faa50bbefe8ff9dd51e164781fa0670c7b5d67a88610008e83e594f8294ec809c1b7203c6577ca3777"; - }; - "pathval@npm:1.1.1" = { - name = "pathval"; - reference = "npm:1.1.1"; - linkType = "HARD"; - outputName = "pathval-1.1.1-ce0311d7e0"; - outputHash = "13fed3f7d8efa938ed9a5e3e5c6d35c6081e4d05b2fd97274702966477ff28af7599e44418bfeebf032acd407379a77b4db180cc78294e5b8dcd971567a0efe8"; - flatName = "pathval"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^1.1.1"; - checksum = "9/13fed3f7d8efa938ed9a5e3e5c6d35c6081e4d05b2fd97274702966477ff28af7599e44418bfeebf032acd407379a77b4db180cc78294e5b8dcd971567a0efe8"; - }; - "pg-connection-string@npm:2.5.0" = { - name = "pg-connection-string"; - reference = "npm:2.5.0"; - linkType = "HARD"; - outputName = "pg-connection-string-2.5.0-1ee5de9ab9"; - outputHash = "3a751060f9517ccc1484b42439cfd4ef758273a0954d41d71e15b5a671845ab4706b82de1a9181f2f858369ec362638f741dbea415c85d530845b634e10f1069"; - flatName = "pg-connection-string"; - languageName = "node"; - scope = null; - descriptorRange = "npm:2.5.0"; - checksum = "9/3a751060f9517ccc1484b42439cfd4ef758273a0954d41d71e15b5a671845ab4706b82de1a9181f2f858369ec362638f741dbea415c85d530845b634e10f1069"; - }; - "pg-int8@npm:1.0.1" = { - name = "pg-int8"; - reference = "npm:1.0.1"; - linkType = "HARD"; - outputName = "pg-int8-1.0.1-5cd67f3e22"; - outputHash = "14d707f7b2274737e2976f531994fa72d46cef0bce62104d087d4e6ef1e2d0759076c83de7e7dd0c659c6bc179acb714cc16a9e88a0a005a61e36fc2f02b1f8d"; - flatName = "pg-int8"; - languageName = "node"; - scope = null; - descriptorRange = "npm:1.0.1"; - checksum = "9/14d707f7b2274737e2976f531994fa72d46cef0bce62104d087d4e6ef1e2d0759076c83de7e7dd0c659c6bc179acb714cc16a9e88a0a005a61e36fc2f02b1f8d"; - }; - "pg-pool@npm:3.5.2" = { - name = "pg-pool"; - reference = "npm:3.5.2"; - linkType = "HARD"; - outputName = "pg-pool-3.5.2-d467bbecca"; - outputHash = "6fd6f417451b7a6ea288ad276316652dd72822cb99ab3a0555eeb9a6d178d334c0ac83a90fd51393685b3a81502186dd0cfb96be0a3ae3c0668f1453f603038b"; - flatName = "pg-pool"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^3.5.2"; - checksum = "9/6fd6f417451b7a6ea288ad276316652dd72822cb99ab3a0555eeb9a6d178d334c0ac83a90fd51393685b3a81502186dd0cfb96be0a3ae3c0668f1453f603038b"; - packagePeers = [ - "@types/pg" - "pg" - ]; - }; - "pg-pool@virtual:fbb559fab3da7d7357cd5ff27173b7f0e8dfba65628603d943cef2d611c5f4ad7ce893df93647ceab23e26e6bfdaaf5079272272b3e42ea954a5d06fa92ac808#npm:3.5.2" = { - name = "pg-pool"; - reference = "virtual:fbb559fab3da7d7357cd5ff27173b7f0e8dfba65628603d943cef2d611c5f4ad7ce893df93647ceab23e26e6bfdaaf5079272272b3e42ea954a5d06fa92ac808#npm:3.5.2"; - canonicalPackage = packages."pg-pool@npm:3.5.2"; - dependencies = { - "pg" = packages."pg@virtual:819008c351efcab39edaca3aff41825a322b497036fdaae27b5fba418f7e250764dbabc64de345136bce5b73e5ae95b76973a2b3591d90edde6160b93c624974#npm:8.8.0"; - }; - }; - "pg-protocol@npm:1.5.0" = { - name = "pg-protocol"; - reference = "npm:1.5.0"; - linkType = "HARD"; - outputName = "pg-protocol-1.5.0-390f8d9ed8"; - outputHash = "dc16e2408fbe1bbd4c46018a12695f8fc2261fc43a877f7db160bae1c64aad8a1b607813f5ef3cea862b6698e48b581ac4d8475d7dd5800fbb648a9336b8c56a"; - flatName = "pg-protocol"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^1.5.0"; - checksum = "9/dc16e2408fbe1bbd4c46018a12695f8fc2261fc43a877f7db160bae1c64aad8a1b607813f5ef3cea862b6698e48b581ac4d8475d7dd5800fbb648a9336b8c56a"; - }; - "pg-types@npm:2.2.0" = { - name = "pg-types"; - reference = "npm:2.2.0"; - linkType = "HARD"; - outputName = "pg-types-2.2.0-a3360226c4"; - outputHash = "ea3a80075a6afced377c84e21a3e74c061f6c9531596323a465d1a30c9073921f8e2a4272f94a0a5d1da942ad99bd69ddcb4bc1506bf51c3809701dfddd72d6d"; - flatName = "pg-types"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^2.1.0"; - checksum = "9/ea3a80075a6afced377c84e21a3e74c061f6c9531596323a465d1a30c9073921f8e2a4272f94a0a5d1da942ad99bd69ddcb4bc1506bf51c3809701dfddd72d6d"; - dependencies = { - "pg-int8" = packages."pg-int8@npm:1.0.1"; - "postgres-array" = packages."postgres-array@npm:2.0.0"; - "postgres-bytea" = packages."postgres-bytea@npm:1.0.0"; - "postgres-date" = packages."postgres-date@npm:1.0.7"; - "postgres-interval" = packages."postgres-interval@npm:1.2.0"; - }; - }; - "pg@npm:8.8.0" = { - name = "pg"; - reference = "npm:8.8.0"; - linkType = "HARD"; - outputName = "pg-8.8.0-69c9e9f8ac"; - outputHash = "af391038edd2e97b80a8354c7a76cb35f30f51e7ebbf55ffcd452d7ff5291bd9a5f47fbbb73238c3116875556b15387068f0e7390ab0690f11936804b58c86c3"; - flatName = "pg"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^8.8.0"; - checksum = "9/af391038edd2e97b80a8354c7a76cb35f30f51e7ebbf55ffcd452d7ff5291bd9a5f47fbbb73238c3116875556b15387068f0e7390ab0690f11936804b58c86c3"; - dependencies = { - "buffer-writer" = packages."buffer-writer@npm:2.0.0"; - "packet-reader" = packages."packet-reader@npm:1.0.0"; - "pg-connection-string" = packages."pg-connection-string@npm:2.5.0"; - "pg-pool" = packages."pg-pool@npm:3.5.2"; - "pg-protocol" = packages."pg-protocol@npm:1.5.0"; - "pg-types" = packages."pg-types@npm:2.2.0"; - "pgpass" = packages."pgpass@npm:1.0.5"; - }; - packagePeers = [ - "@types/pg-native" - "pg-native" - ]; - }; - "pg@virtual:819008c351efcab39edaca3aff41825a322b497036fdaae27b5fba418f7e250764dbabc64de345136bce5b73e5ae95b76973a2b3591d90edde6160b93c624974#npm:8.8.0" = { - name = "pg"; - reference = "virtual:819008c351efcab39edaca3aff41825a322b497036fdaae27b5fba418f7e250764dbabc64de345136bce5b73e5ae95b76973a2b3591d90edde6160b93c624974#npm:8.8.0"; - canonicalPackage = packages."pg@npm:8.8.0"; - dependencies = { - "buffer-writer" = packages."buffer-writer@npm:2.0.0"; - "packet-reader" = packages."packet-reader@npm:1.0.0"; - "pg-connection-string" = packages."pg-connection-string@npm:2.5.0"; - "pg-protocol" = packages."pg-protocol@npm:1.5.0"; - "pg-types" = packages."pg-types@npm:2.2.0"; - "pgpass" = packages."pgpass@npm:1.0.5"; - "pg-pool" = packages."pg-pool@virtual:fbb559fab3da7d7357cd5ff27173b7f0e8dfba65628603d943cef2d611c5f4ad7ce893df93647ceab23e26e6bfdaaf5079272272b3e42ea954a5d06fa92ac808#npm:3.5.2"; - }; - }; - "pgpass@npm:1.0.5" = { - name = "pgpass"; - reference = "npm:1.0.5"; - linkType = "HARD"; - outputName = "pgpass-1.0.5-653e71ddd8"; - outputHash = "561b5f5a7bf575913434d6b3ac1340bac26d0835c103baf9bb1d1abe2029852191ee8ba4d2ce23930881add326998bb44f2a8974562c5191b888f23f9776afea"; - flatName = "pgpass"; - languageName = "node"; - scope = null; - descriptorRange = "npm:1.x"; - checksum = "9/561b5f5a7bf575913434d6b3ac1340bac26d0835c103baf9bb1d1abe2029852191ee8ba4d2ce23930881add326998bb44f2a8974562c5191b888f23f9776afea"; - dependencies = { - "split2" = packages."split2@npm:4.1.0"; - }; - }; - "picocolors@npm:1.0.0" = { - name = "picocolors"; - reference = "npm:1.0.0"; - linkType = "HARD"; - outputName = "picocolors-1.0.0-d81e0b1927"; - outputHash = "447e1f6e4953522a3947f2effa93dca66f2436a7c275327ba1a7fb526eab369fc9847d77ebcd734dc483322256f34b431e93a325e44726e4ec390c11cc7f5c87"; - flatName = "picocolors"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^1.0.0"; - checksum = "9/447e1f6e4953522a3947f2effa93dca66f2436a7c275327ba1a7fb526eab369fc9847d77ebcd734dc483322256f34b431e93a325e44726e4ec390c11cc7f5c87"; - }; - "picomatch@npm:2.3.1" = { - name = "picomatch"; - reference = "npm:2.3.1"; - linkType = "HARD"; - outputName = "picomatch-2.3.1-c782cfd986"; - outputHash = "6ba5938c24af2c5918e94b39aa0ad48d71f2c30634de69d46e0bd32feb666de4e909406db6ffb78f98d39ef450d6a41b6fa3954dc3659d7b2b750766c1261e5e"; - flatName = "picomatch"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^2.2.3"; - checksum = "9/6ba5938c24af2c5918e94b39aa0ad48d71f2c30634de69d46e0bd32feb666de4e909406db6ffb78f98d39ef450d6a41b6fa3954dc3659d7b2b750766c1261e5e"; - }; - "pirates@npm:4.0.5" = { - name = "pirates"; - reference = "npm:4.0.5"; - linkType = "HARD"; - outputName = "pirates-4.0.5-22f8e827ce"; - outputHash = "1ade661dec736ffce6976c3430d37412bb75d7ba7caeb36ce3142de9b8bea4f756f0b317a2a24a28dd9e84adbf7a7819bfdca719126ccc44bf27b62d4a880eda"; - flatName = "pirates"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^4.0.4"; - checksum = "9/1ade661dec736ffce6976c3430d37412bb75d7ba7caeb36ce3142de9b8bea4f756f0b317a2a24a28dd9e84adbf7a7819bfdca719126ccc44bf27b62d4a880eda"; - }; - "pkg-dir@npm:4.2.0" = { - name = "pkg-dir"; - reference = "npm:4.2.0"; - linkType = "HARD"; - outputName = "pkg-dir-4.2.0-2b5d0a8d32"; - outputHash = "220ae78b93ef48d6cd81958ff3bdda5f5e6268c9887ca430aa974370499669c72886d85db0a768898a0a09114be14aab9a7171356033c082c0d2e65f384a5886"; - flatName = "pkg-dir"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^4.2.0"; - checksum = "9/220ae78b93ef48d6cd81958ff3bdda5f5e6268c9887ca430aa974370499669c72886d85db0a768898a0a09114be14aab9a7171356033c082c0d2e65f384a5886"; - dependencies = { - "find-up" = packages."find-up@npm:4.1.0"; - }; - }; - "postcss@npm:8.4.14" = { - name = "postcss"; - reference = "npm:8.4.14"; - linkType = "HARD"; - outputName = "postcss-8.4.14-c0d448b728"; - outputHash = "1e1e4a4cc235674bea79da18dd3e02ea8ffcd51546c7ddf1fc7ba4de5e89154a83988bb8c1b30bd9566df56fc0077dce6e620d8f9ce6ababf60f659ffc53f72c"; - flatName = "postcss"; - languageName = "node"; - scope = null; - descriptorRange = "npm:8.4.14"; - checksum = "9/1e1e4a4cc235674bea79da18dd3e02ea8ffcd51546c7ddf1fc7ba4de5e89154a83988bb8c1b30bd9566df56fc0077dce6e620d8f9ce6ababf60f659ffc53f72c"; - dependencies = { - "nanoid" = packages."nanoid@npm:3.3.4"; - "picocolors" = packages."picocolors@npm:1.0.0"; - "source-map-js" = packages."source-map-js@npm:1.0.2"; - }; - }; - "postgres-array@npm:2.0.0" = { - name = "postgres-array"; - reference = "npm:2.0.0"; - linkType = "HARD"; - outputName = "postgres-array-2.0.0-4f49dc1389"; - outputHash = "b8333121aa88ba002398a8c350a8109626b3fcbc18e26841f4a0394bccc89d07a061f50207bb1ed21cb1993e24f2c2b830555e336507a4b2a43c6463e27179d9"; - flatName = "postgres-array"; - languageName = "node"; - scope = null; - descriptorRange = "npm:~2.0.0"; - checksum = "9/b8333121aa88ba002398a8c350a8109626b3fcbc18e26841f4a0394bccc89d07a061f50207bb1ed21cb1993e24f2c2b830555e336507a4b2a43c6463e27179d9"; - }; - "postgres-bytea@npm:1.0.0" = { - name = "postgres-bytea"; - reference = "npm:1.0.0"; - linkType = "HARD"; - outputName = "postgres-bytea-1.0.0-8c2b81fa73"; - outputHash = "ee1de514befe320a2707d0c386fc8f88b2ab4b9a8ad8f76eec1d6cf5c0c49ac37e7f0ee66ad9b726d7df0f7c57c9a3a5e3631bd71d57356b61eeeea987ec6591"; - flatName = "postgres-bytea"; - languageName = "node"; - scope = null; - descriptorRange = "npm:~1.0.0"; - checksum = "9/ee1de514befe320a2707d0c386fc8f88b2ab4b9a8ad8f76eec1d6cf5c0c49ac37e7f0ee66ad9b726d7df0f7c57c9a3a5e3631bd71d57356b61eeeea987ec6591"; - }; - "postgres-date@npm:1.0.7" = { - name = "postgres-date"; - reference = "npm:1.0.7"; - linkType = "HARD"; - outputName = "postgres-date-1.0.7-aadfe5531e"; - outputHash = "ff805074d6327f9b233cf19982247006201178484f600afa6ed6f352ddc98bc43d01cecfbe5f62637726870b554617480b1a4ba13abab8237320206e9f00bb03"; - flatName = "postgres-date"; - languageName = "node"; - scope = null; - descriptorRange = "npm:~1.0.4"; - checksum = "9/ff805074d6327f9b233cf19982247006201178484f600afa6ed6f352ddc98bc43d01cecfbe5f62637726870b554617480b1a4ba13abab8237320206e9f00bb03"; - }; - "postgres-interval@npm:1.2.0" = { - name = "postgres-interval"; - reference = "npm:1.2.0"; - linkType = "HARD"; - outputName = "postgres-interval-1.2.0-ca6414744d"; - outputHash = "27bbffa14dd0a8bffcc76614de24833a9ee84a7233fb7bb29618bed7c466a3ad266e4d4d3466def7aa61738dd8f33fc7cf87658986851666ab13b760b5e5e1a2"; - flatName = "postgres-interval"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^1.1.0"; - checksum = "9/27bbffa14dd0a8bffcc76614de24833a9ee84a7233fb7bb29618bed7c466a3ad266e4d4d3466def7aa61738dd8f33fc7cf87658986851666ab13b760b5e5e1a2"; - dependencies = { - "xtend" = packages."xtend@npm:4.0.2"; - }; - }; - "prebuild-install@npm:7.1.1" = { - name = "prebuild-install"; - reference = "npm:7.1.1"; - linkType = "HARD"; - outputName = "prebuild-install-7.1.1-cb9fc9d341"; - outputHash = "3ad2c49cbd7e7d52a6c6967ee3ca6f3f333f301a70866f21accadb9e29dbbf905e76ac543cfe3a1911fbd583bbe39f05b944278439e6ae402f0e9df768c3a0ee"; - flatName = "prebuild-install"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^7.1.1"; - checksum = "9/3ad2c49cbd7e7d52a6c6967ee3ca6f3f333f301a70866f21accadb9e29dbbf905e76ac543cfe3a1911fbd583bbe39f05b944278439e6ae402f0e9df768c3a0ee"; - bin = { - "prebuild-install" = "bin.js"; - }; - dependencies = { - "detect-libc" = packages."detect-libc@npm:2.0.1"; - "expand-template" = packages."expand-template@npm:2.0.3"; - "github-from-package" = packages."github-from-package@npm:0.0.0"; - "minimist" = packages."minimist@npm:1.2.7"; - "mkdirp-classic" = packages."mkdirp-classic@npm:0.5.3"; - "napi-build-utils" = packages."napi-build-utils@npm:1.0.2"; - "node-abi" = packages."node-abi@npm:3.28.0"; - "pump" = packages."pump@npm:3.0.0"; - "rc" = packages."rc@npm:1.2.8"; - "simple-get" = packages."simple-get@npm:4.0.1"; - "tar-fs" = packages."tar-fs@npm:2.1.1"; - "tunnel-agent" = packages."tunnel-agent@npm:0.6.0"; - }; - }; - "pretty-format@npm:29.2.1" = { - name = "pretty-format"; - reference = "npm:29.2.1"; - linkType = "HARD"; - outputName = "pretty-format-29.2.1-b89d018340"; - outputHash = "10ed9c96bab2c4b8ac1e1329e504550e6410d7b0a9edfd78541587ee792ee69d8b6b65b397753607b302a13b5c522fcde187cba906b04d75275e8366b82b8104"; - flatName = "pretty-format"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^29.2.1"; - checksum = "9/10ed9c96bab2c4b8ac1e1329e504550e6410d7b0a9edfd78541587ee792ee69d8b6b65b397753607b302a13b5c522fcde187cba906b04d75275e8366b82b8104"; - dependencies = { - "@jest/schemas" = packages."@jest/schemas@npm:29.0.0"; - "ansi-styles" = packages."ansi-styles@npm:5.2.0"; - "react-is" = packages."react-is@npm:18.2.0"; - }; - }; - "promise-inflight@npm:1.0.1" = { - name = "promise-inflight"; - reference = "npm:1.0.1"; - linkType = "HARD"; - outputName = "promise-inflight-1.0.1-5bb925afac"; - outputHash = "7671022d3ea7e40e29ee941d30df819ed2a81a3d22b1175ed8c1bd83af542ea94ca47b50bea54634b12f7b1837fcd7dd5bcc7720910befa0076d12582ee56c93"; - flatName = "promise-inflight"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^1.0.1"; - checksum = "9/7671022d3ea7e40e29ee941d30df819ed2a81a3d22b1175ed8c1bd83af542ea94ca47b50bea54634b12f7b1837fcd7dd5bcc7720910befa0076d12582ee56c93"; - packagePeers = [ - "@types/bluebird" - "bluebird" - ]; - }; - "promise-inflight@virtual:4e2088ed0df52533102f445d7e7aeba6560b7effa0cabbc7cc20dd1e36a86dd838cc541de4414688f4ce3ec77b0ad5298cea6de581350d934ceb35c3e0fe3462#npm:1.0.1" = { - name = "promise-inflight"; - reference = "virtual:4e2088ed0df52533102f445d7e7aeba6560b7effa0cabbc7cc20dd1e36a86dd838cc541de4414688f4ce3ec77b0ad5298cea6de581350d934ceb35c3e0fe3462#npm:1.0.1"; - canonicalPackage = packages."promise-inflight@npm:1.0.1"; - }; - "promise-retry@npm:2.0.1" = { - name = "promise-retry"; - reference = "npm:2.0.1"; - linkType = "HARD"; - outputName = "promise-retry-2.0.1-871f0b01b7"; - outputHash = "cbff149b3327554f3613196ca300a77aefac289624148c37e5c9236242931691a4ba0a76fd1c6171e6a3e6a2b1edfa2acdf122004857e6f3e3efd1be29df6cd2"; - flatName = "promise-retry"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^2.0.1"; - checksum = "9/cbff149b3327554f3613196ca300a77aefac289624148c37e5c9236242931691a4ba0a76fd1c6171e6a3e6a2b1edfa2acdf122004857e6f3e3efd1be29df6cd2"; - dependencies = { - "err-code" = packages."err-code@npm:2.0.3"; - "retry" = packages."retry@npm:0.12.0"; - }; - }; - "prompts@npm:2.4.2" = { - name = "prompts"; - reference = "npm:2.4.2"; - linkType = "HARD"; - outputName = "prompts-2.4.2-f5d25d5eea"; - outputHash = "3fc5daab8c24a88bceee525b736b255a5b5838676e626d1c401a92925b4c33562b4e424d51770946b898e73d1bf36f0677bd8b3f7b75d1e7cfe838d6dbfc9259"; - flatName = "prompts"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^2.0.1"; - checksum = "9/3fc5daab8c24a88bceee525b736b255a5b5838676e626d1c401a92925b4c33562b4e424d51770946b898e73d1bf36f0677bd8b3f7b75d1e7cfe838d6dbfc9259"; - dependencies = { - "kleur" = packages."kleur@npm:3.0.3"; - "sisteransi" = packages."sisteransi@npm:1.0.5"; - }; - }; - "pump@npm:3.0.0" = { - name = "pump"; - reference = "npm:3.0.0"; - linkType = "HARD"; - outputName = "pump-3.0.0-0080bf6a7a"; - outputHash = "b2e6702ce154c091b2895cf6f09b35d4db783a3b9658c177387ff6ad00c0e9f6dd9fc5c70f64a3b360bc3624340fca69ff565fad586a206d6818f5e87d836420"; - flatName = "pump"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^3.0.0"; - checksum = "9/b2e6702ce154c091b2895cf6f09b35d4db783a3b9658c177387ff6ad00c0e9f6dd9fc5c70f64a3b360bc3624340fca69ff565fad586a206d6818f5e87d836420"; - dependencies = { - "end-of-stream" = packages."end-of-stream@npm:1.4.4"; - "once" = packages."once@npm:1.4.0"; - }; - }; - "punycode@npm:2.1.1" = { - name = "punycode"; - reference = "npm:2.1.1"; - linkType = "HARD"; - outputName = "punycode-2.1.1-26eb3e15cf"; - outputHash = "fd728ef9db90e7b4db37d5c4937d6c6302cf4f64748b2dea3abbf1efd21e6193bb670efb7814766c858b2e1ccdb65ce34e44b498d734922e1dcb2a8623a925d8"; - flatName = "punycode"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^2.1.0"; - checksum = "9/fd728ef9db90e7b4db37d5c4937d6c6302cf4f64748b2dea3abbf1efd21e6193bb670efb7814766c858b2e1ccdb65ce34e44b498d734922e1dcb2a8623a925d8"; - }; - "randombytes@npm:2.1.0" = { - name = "randombytes"; - reference = "npm:2.1.0"; - linkType = "HARD"; - outputName = "randombytes-2.1.0-e3da76bccf"; - outputHash = "5d8b58cc7c397c4e23e4ef7d64ecd4a84d4a12781964b5cbd329a92f77f55beef58dda2e8d2f7582aceaf0fd41dac2a9665c630882af1937be8f2fbb5f69d037"; - flatName = "randombytes"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^2.1.0"; - checksum = "9/5d8b58cc7c397c4e23e4ef7d64ecd4a84d4a12781964b5cbd329a92f77f55beef58dda2e8d2f7582aceaf0fd41dac2a9665c630882af1937be8f2fbb5f69d037"; - dependencies = { - "safe-buffer" = packages."safe-buffer@npm:5.2.1"; - }; - }; - "rc@npm:1.2.8" = { - name = "rc"; - reference = "npm:1.2.8"; - linkType = "HARD"; - outputName = "rc-1.2.8-d6768ac936"; - outputHash = "3dec0a5ac3d9400f510ed9eccc86c5a503ba6bf6865c30e16d57bcf6c53f4f2854138ede1e645d7e3fa6f6cd293daa384a1e4e0bd505688e79b0150ef2642949"; - flatName = "rc"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^1.2.7"; - checksum = "9/3dec0a5ac3d9400f510ed9eccc86c5a503ba6bf6865c30e16d57bcf6c53f4f2854138ede1e645d7e3fa6f6cd293daa384a1e4e0bd505688e79b0150ef2642949"; - bin = { - "rc" = "./cli.js"; - }; - dependencies = { - "deep-extend" = packages."deep-extend@npm:0.6.0"; - "ini" = packages."ini@npm:1.3.8"; - "minimist" = packages."minimist@npm:1.2.7"; - "strip-json-comments" = packages."strip-json-comments@npm:2.0.1"; - }; - }; - "react-dom@npm:18.2.0" = { - name = "react-dom"; - reference = "npm:18.2.0"; - linkType = "HARD"; - outputName = "react-dom-18.2.0-dd675bca1c"; - outputHash = "7c5b915fb793d63563cec1f721e059e6ff0e2855ac116ab5cb7450b6c59398f5e25f95c960ce5cb93504cc58ab724a75a78e99282354e702a0e667d0d787d028"; - flatName = "react-dom"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^18.2.0"; - checksum = "9/7c5b915fb793d63563cec1f721e059e6ff0e2855ac116ab5cb7450b6c59398f5e25f95c960ce5cb93504cc58ab724a75a78e99282354e702a0e667d0d787d028"; - dependencies = { - "loose-envify" = packages."loose-envify@npm:1.4.0"; - "scheduler" = packages."scheduler@npm:0.23.0"; - }; - packagePeers = [ - "@types/react" - "react" - ]; - }; - "react-dom@virtual:819008c351efcab39edaca3aff41825a322b497036fdaae27b5fba418f7e250764dbabc64de345136bce5b73e5ae95b76973a2b3591d90edde6160b93c624974#npm:18.2.0" = { - name = "react-dom"; - reference = "virtual:819008c351efcab39edaca3aff41825a322b497036fdaae27b5fba418f7e250764dbabc64de345136bce5b73e5ae95b76973a2b3591d90edde6160b93c624974#npm:18.2.0"; - canonicalPackage = packages."react-dom@npm:18.2.0"; - dependencies = { - "loose-envify" = packages."loose-envify@npm:1.4.0"; - "react" = packages."react@npm:18.2.0"; - "scheduler" = packages."scheduler@npm:0.23.0"; - }; - }; - "react-is@npm:18.2.0" = { - name = "react-is"; - reference = "npm:18.2.0"; - linkType = "HARD"; - outputName = "react-is-18.2.0-0cc5edb910"; - outputHash = "f542f0effed3f89b4faa237bf56e746d437c9dba4ed1039a2ba6e6fcb463244300b8f3c17d8e610e76476a626c4d97ee4c2ed7a5b5d64e2b2e2d7b2144816ac8"; - flatName = "react-is"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^18.0.0"; - checksum = "9/f542f0effed3f89b4faa237bf56e746d437c9dba4ed1039a2ba6e6fcb463244300b8f3c17d8e610e76476a626c4d97ee4c2ed7a5b5d64e2b2e2d7b2144816ac8"; - }; - "react-scheduler@npm:0.1.0" = { - name = "react-scheduler"; - reference = "npm:0.1.0"; - linkType = "HARD"; - outputName = "react-scheduler-0.1.0-92b451f9a7"; - outputHash = "ad2d53ec6390ae5fc890d66036fa7287936bb3292ff8860ff3ff79b3a7a25fe1d7bbd953908faea65f7bd2cc901629666550d28ab044001df252fd87991243ca"; - flatName = "react-scheduler"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^0.1.0"; - checksum = "9/ad2d53ec6390ae5fc890d66036fa7287936bb3292ff8860ff3ff79b3a7a25fe1d7bbd953908faea65f7bd2cc901629666550d28ab044001df252fd87991243ca"; - }; - "react@npm:18.2.0" = { - name = "react"; - reference = "npm:18.2.0"; - linkType = "HARD"; - outputName = "react-18.2.0-1eae08fee2"; - outputHash = "8434e5782c52b3bf18a80b666348977924ee3827895fa03ec3ffb9faca90c460049f14130428dd1546bab6cf3b2c277f2c243d3c2a856501331d2e69c24b2bb9"; - flatName = "react"; - languageName = "node"; - scope = null; - descriptorRange = "npm:react@^18.2.0"; - checksum = "9/8434e5782c52b3bf18a80b666348977924ee3827895fa03ec3ffb9faca90c460049f14130428dd1546bab6cf3b2c277f2c243d3c2a856501331d2e69c24b2bb9"; - dependencies = { - "loose-envify" = packages."loose-envify@npm:1.4.0"; - }; - }; - "readable-stream@npm:3.6.0" = { - name = "readable-stream"; - reference = "npm:3.6.0"; - linkType = "HARD"; - outputName = "readable-stream-3.6.0-23a4a5eb56"; - outputHash = "bda7b24d3910bf0ec4a1df3c540e1b97b1ed3ca49ea0ddc0d2c6bf29d3997251a7244608de1d842555641d1c115d9b3566167fef9225ee6ef147c9e6a539395b"; - flatName = "readable-stream"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^3.1.1"; - checksum = "9/bda7b24d3910bf0ec4a1df3c540e1b97b1ed3ca49ea0ddc0d2c6bf29d3997251a7244608de1d842555641d1c115d9b3566167fef9225ee6ef147c9e6a539395b"; - dependencies = { - "inherits" = packages."inherits@npm:2.0.4"; - "string_decoder" = packages."string_decoder@npm:1.3.0"; - "util-deprecate" = packages."util-deprecate@npm:1.0.2"; - }; - }; - "rechoir@npm:0.7.1" = { - name = "rechoir"; - reference = "npm:0.7.1"; - linkType = "HARD"; - outputName = "rechoir-0.7.1-0c7e5c1201"; - outputHash = "89bc342f51aa6871a26b23e4cd306e4e9a83021b45aebf83c611e58e1c4759a90ddb562e3cb99289566063fe6fc180fbbe523ee91cb86712464da2f3060490ff"; - flatName = "rechoir"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^0.7.0"; - checksum = "9/89bc342f51aa6871a26b23e4cd306e4e9a83021b45aebf83c611e58e1c4759a90ddb562e3cb99289566063fe6fc180fbbe523ee91cb86712464da2f3060490ff"; - dependencies = { - "resolve" = packages."resolve@patch:resolve@npm%3A1.22.1#optional!builtin::version=1.22.1&hash=07638b"; - }; - }; - "rechoir@npm:0.8.0" = { - name = "rechoir"; - reference = "npm:0.8.0"; - linkType = "HARD"; - outputName = "rechoir-0.8.0-fb660b3bc8"; - outputHash = "474f0e7813c90ae5d26a6d107700e215f888fe103705d4d6c99cac0606300f50494bc243725b373c45ba29ad693acf7315c3b432494796d2ead4b81fed996758"; - flatName = "rechoir"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^0.8.0"; - checksum = "9/474f0e7813c90ae5d26a6d107700e215f888fe103705d4d6c99cac0606300f50494bc243725b373c45ba29ad693acf7315c3b432494796d2ead4b81fed996758"; - dependencies = { - "resolve" = packages."resolve@patch:resolve@npm%3A1.22.1#optional!builtin::version=1.22.1&hash=07638b"; - }; - }; - "redux@npm:4.2.0" = { - name = "redux"; - reference = "npm:4.2.0"; - linkType = "HARD"; - outputName = "redux-4.2.0-4688cc8d65"; - outputHash = "9239ab43da6a18375b413e128e9b808f28d46cbadfc58a371921396f82efd0187f17e6cd86c01080975c1778304b93a1546d735411067c54b1d81bd9e2e46307"; - flatName = "redux"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^4.0.4"; - checksum = "9/9239ab43da6a18375b413e128e9b808f28d46cbadfc58a371921396f82efd0187f17e6cd86c01080975c1778304b93a1546d735411067c54b1d81bd9e2e46307"; - dependencies = { - "@babel/runtime" = packages."@babel/runtime@npm:7.19.4"; - }; - }; - "regenerator-runtime@npm:0.13.10" = { - name = "regenerator-runtime"; - reference = "npm:0.13.10"; - linkType = "HARD"; - outputName = "regenerator-runtime-0.13.10-57e3c1406b"; - outputHash = "ac83ab4691a061519703e622ee817a0a517a80235d0c76a49ef32848c0d0946d97797d244806490f8f94e05a4b180a295869299b2e44c6f1c625b835703666a6"; - flatName = "regenerator-runtime"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^0.13.4"; - checksum = "9/ac83ab4691a061519703e622ee817a0a517a80235d0c76a49ef32848c0d0946d97797d244806490f8f94e05a4b180a295869299b2e44c6f1c625b835703666a6"; - }; - "require-directory@npm:2.1.1" = { - name = "require-directory"; - reference = "npm:2.1.1"; - linkType = "HARD"; - outputName = "require-directory-2.1.1-8608aee50b"; - outputHash = "1b1289dc30006e3c6576dd899ed812921f680d652005118cfabcf5d0679e885ff19a6659219e6705571a6ba7f4278f24d93b17f7e7e9ba28dc4b38e256f35d61"; - flatName = "require-directory"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^2.1.1"; - checksum = "9/1b1289dc30006e3c6576dd899ed812921f680d652005118cfabcf5d0679e885ff19a6659219e6705571a6ba7f4278f24d93b17f7e7e9ba28dc4b38e256f35d61"; - }; - "resolve-cwd@npm:3.0.0" = { - name = "resolve-cwd"; - reference = "npm:3.0.0"; - linkType = "HARD"; - outputName = "resolve-cwd-3.0.0-e6f4e296bf"; - outputHash = "b53913956f50e0e5cccfaf836ffe4c11648123cbf433b50afeea431d519f6e8d860e2aeff45780ca3698155cbb7070881efcc2972af5681c95c6e54a09770c52"; - flatName = "resolve-cwd"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^3.0.0"; - checksum = "9/b53913956f50e0e5cccfaf836ffe4c11648123cbf433b50afeea431d519f6e8d860e2aeff45780ca3698155cbb7070881efcc2972af5681c95c6e54a09770c52"; - dependencies = { - "resolve-from" = packages."resolve-from@npm:5.0.0"; - }; - }; - "resolve-dir@npm:1.0.1" = { - name = "resolve-dir"; - reference = "npm:1.0.1"; - linkType = "HARD"; - outputName = "resolve-dir-1.0.1-0a95903c18"; - outputHash = "b334b4521ad72521efb521dbaf141fa2bcad42338e571fc30eb6835df839f726d9954511e432e87b7eecb4cc719806793fab9aa07705c34d3f738be42f7b2e51"; - flatName = "resolve-dir"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^1.0.1"; - checksum = "9/b334b4521ad72521efb521dbaf141fa2bcad42338e571fc30eb6835df839f726d9954511e432e87b7eecb4cc719806793fab9aa07705c34d3f738be42f7b2e51"; - dependencies = { - "expand-tilde" = packages."expand-tilde@npm:2.0.2"; - "global-modules" = packages."global-modules@npm:1.0.0"; - }; - }; - "resolve-from@npm:5.0.0" = { - name = "resolve-from"; - reference = "npm:5.0.0"; - linkType = "HARD"; - outputName = "resolve-from-5.0.0-15c9db4d33"; - outputHash = "cd5ec3748259b61f31e2fbb93ffaa7348f269e581ab2016f64fe843037d0f928ad537dbeff9eef4419a9a26ff604a2c3e014bb330d875dc85fa9a3d97665f883"; - flatName = "resolve-from"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^5.0.0"; - checksum = "9/cd5ec3748259b61f31e2fbb93ffaa7348f269e581ab2016f64fe843037d0f928ad537dbeff9eef4419a9a26ff604a2c3e014bb330d875dc85fa9a3d97665f883"; - }; - "resolve.exports@npm:1.1.0" = { - name = "resolve.exports"; - reference = "npm:1.1.0"; - linkType = "HARD"; - outputName = "resolve.exports-1.1.0-81756e03ba"; - outputHash = "59b9aa7fd7d85c553b4f50ed8366bb21949e7b2fff48adcc24c15a301b8f021bfb053c87acfaed13b47f2bb30f7f7a243b18365c1ec6ed4ae672eef257fda139"; - flatName = "resolve.exports"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^1.1.0"; - checksum = "9/59b9aa7fd7d85c553b4f50ed8366bb21949e7b2fff48adcc24c15a301b8f021bfb053c87acfaed13b47f2bb30f7f7a243b18365c1ec6ed4ae672eef257fda139"; - }; - "resolve@npm:1.22.1" = { - name = "resolve"; - reference = "npm:1.22.1"; - linkType = "HARD"; - outputName = "resolve-1.22.1-3980488690"; - outputHash = "d8ea39ac2ecaedc681504f043944a20cc05587d6ec52d4d9ec79801e58be083f2237d0e83170ce86c793083eaf71a6f95a7f921a79dfb6fa32b37107e61df36c"; - flatName = "resolve"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^1.20.0"; - checksum = "9/d8ea39ac2ecaedc681504f043944a20cc05587d6ec52d4d9ec79801e58be083f2237d0e83170ce86c793083eaf71a6f95a7f921a79dfb6fa32b37107e61df36c"; - bin = { - "resolve" = "bin/resolve"; - }; - dependencies = { - "is-core-module" = packages."is-core-module@npm:2.11.0"; - "path-parse" = packages."path-parse@npm:1.0.7"; - "supports-preserve-symlinks-flag" = packages."supports-preserve-symlinks-flag@npm:1.0.0"; - }; - }; - "resolve@patch:resolve@npm%3A1.22.1#optional!builtin::version=1.22.1&hash=07638b" = { - name = "resolve"; - reference = "patch:resolve@npm%3A1.22.1#optional!builtin::version=1.22.1&hash=07638b"; - linkType = "HARD"; - outputName = "resolve-1.22.1-bc26c25fbb"; - outputHash = "a6f214b97d932445796f78dab7a898ec78966327e0d6cb571f90b6ac0f3b3347bf6bab0a071d899bfdc316b26ed845f6655310b38b8f6ee4da5272a0c5ecef85"; - flatName = "resolve"; - languageName = "node"; - scope = null; - descriptorRange = "patch:resolve@npm%3A^1.20.0#optional!builtin"; - checksum = "9/a6f214b97d932445796f78dab7a898ec78966327e0d6cb571f90b6ac0f3b3347bf6bab0a071d899bfdc316b26ed845f6655310b38b8f6ee4da5272a0c5ecef85"; - bin = { - "resolve" = "bin/resolve"; - }; - dependencies = { - "is-core-module" = packages."is-core-module@npm:2.11.0"; - "path-parse" = packages."path-parse@npm:1.0.7"; - "supports-preserve-symlinks-flag" = packages."supports-preserve-symlinks-flag@npm:1.0.0"; - }; - }; - "retry@npm:0.12.0" = { - name = "retry"; - reference = "npm:0.12.0"; - linkType = "HARD"; - outputName = "retry-0.12.0-72ac7fb4cc"; - outputHash = "1c3616bdf89aa6f887bcca2b86603c255f4b497577f6a54f33262f4f314b8516d65e251f717b45e2a5ec234359999015a9e2263b38467544188210327e638ac3"; - flatName = "retry"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^0.12.0"; - checksum = "9/1c3616bdf89aa6f887bcca2b86603c255f4b497577f6a54f33262f4f314b8516d65e251f717b45e2a5ec234359999015a9e2263b38467544188210327e638ac3"; - }; - "rimraf@npm:3.0.2" = { - name = "rimraf"; - reference = "npm:3.0.2"; - linkType = "HARD"; - outputName = "rimraf-3.0.2-2cb7dac69a"; - outputHash = "b786c9ad52df9fbcd9c7120e105f3150b83b39dd87d9235a93b0c7e806575e1e68936504ff64563dbe67b3f8bbbc00bdfff586157d402ee8990e7143456511c0"; - flatName = "rimraf"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^3.0.2"; - checksum = "9/b786c9ad52df9fbcd9c7120e105f3150b83b39dd87d9235a93b0c7e806575e1e68936504ff64563dbe67b3f8bbbc00bdfff586157d402ee8990e7143456511c0"; - bin = { - "rimraf" = "bin.js"; - }; - dependencies = { - "glob" = packages."glob@npm:7.2.3"; - }; - }; - "root-workspace-0b6124@workspace:." = { - name = "root-workspace-0b6124"; - reference = "workspace:."; - linkType = "SOFT"; - outputName = "root-workspace-0b6124-0.0.0-dc3fc578bf"; - src = ./.; - shouldBeUnplugged = true; - flatName = "root-workspace-0b6124"; - languageName = "unknown"; - scope = null; - descriptorRange = "workspace:."; - dependencies = { - "esbuild" = packages."esbuild@npm:0.15.10"; - }; - }; - "safe-buffer@npm:5.2.1" = { - name = "safe-buffer"; - reference = "npm:5.2.1"; - linkType = "HARD"; - outputName = "safe-buffer-5.2.1-3481c8aa9b"; - outputHash = "da8a21b3336a21c152eb3ba8ab41acde5772644f026d4b6e5f9fd8afa4f0cf407c113b19a362580fab9aea8beea295465432fc7684f9ff38aac559bb1b5528cd"; - flatName = "safe-buffer"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^5.0.1"; - checksum = "9/da8a21b3336a21c152eb3ba8ab41acde5772644f026d4b6e5f9fd8afa4f0cf407c113b19a362580fab9aea8beea295465432fc7684f9ff38aac559bb1b5528cd"; - }; - "safer-buffer@npm:2.1.2" = { - name = "safer-buffer"; - reference = "npm:2.1.2"; - linkType = "HARD"; - outputName = "safer-buffer-2.1.2-8d5c0b705e"; - outputHash = "d4199666e9e792968c0b88c2c35dd400f56d3eecb9affbcf5207922822eadf30cc06995bae3c5d0a653851bbd40fc0af578bf046bbf734199ce22433ba4da659"; - flatName = "safer-buffer"; - languageName = "node"; - scope = null; - descriptorRange = "npm:>= 2.1.2 < 3.0.0"; - checksum = "9/d4199666e9e792968c0b88c2c35dd400f56d3eecb9affbcf5207922822eadf30cc06995bae3c5d0a653851bbd40fc0af578bf046bbf734199ce22433ba4da659"; - }; - "scheduler@npm:0.23.0" = { - name = "scheduler"; - reference = "npm:0.23.0"; - linkType = "HARD"; - outputName = "scheduler-0.23.0-a379a6bc3b"; - outputHash = "f4022b95cdc282668643da4850f55fe70c899aa956d11819f196e2ca892271bdb253613e53997852094f9351f7c72d057eea8b28d9b4bcb93bcb1c6d09985c82"; - flatName = "scheduler"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^0.23.0"; - checksum = "9/f4022b95cdc282668643da4850f55fe70c899aa956d11819f196e2ca892271bdb253613e53997852094f9351f7c72d057eea8b28d9b4bcb93bcb1c6d09985c82"; - dependencies = { - "loose-envify" = packages."loose-envify@npm:1.4.0"; - }; - }; - "schema-utils@npm:3.1.1" = { - name = "schema-utils"; - reference = "npm:3.1.1"; - linkType = "HARD"; - outputName = "schema-utils-3.1.1-8704647575"; - outputHash = "f33eda6fc4def7012a3169cd97cd41b2fc0cc26219c456bbc3f49265bc00eec7d044484cfba330c20692091931901a2381a7f21c7e1f48c3106ff3dcef353bf9"; - flatName = "schema-utils"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^3.1.0"; - checksum = "9/f33eda6fc4def7012a3169cd97cd41b2fc0cc26219c456bbc3f49265bc00eec7d044484cfba330c20692091931901a2381a7f21c7e1f48c3106ff3dcef353bf9"; - dependencies = { - "@types/json-schema" = packages."@types/json-schema@npm:7.0.11"; - "ajv" = packages."ajv@npm:6.12.6"; - "ajv-keywords" = packages."ajv-keywords@virtual:8704647575acf2f5b19fccfcb0acebacd9c94259ebe9afcfaf4c053812fd896f10775930ee5a5949e20833a61503d2cd22aa259cbe69729f6a192de4bf43dc00#npm:3.5.2"; - }; - }; - "semver@npm:6.3.0" = { - name = "semver"; - reference = "npm:6.3.0"; - linkType = "HARD"; - outputName = "semver-6.3.0-b3eace8bfd"; - outputHash = "18f3d42ec70a542e9efc498ecc3d0b9b088099115e8658b49d2bfc6470b46a6144b294374dac3f343fe1600039cbd80d5e830dd356053fd5abd4f1af5118a928"; - flatName = "semver"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^6.0.0"; - checksum = "9/18f3d42ec70a542e9efc498ecc3d0b9b088099115e8658b49d2bfc6470b46a6144b294374dac3f343fe1600039cbd80d5e830dd356053fd5abd4f1af5118a928"; - bin = { - "semver" = "./bin/semver.js"; - }; - }; - "semver@npm:7.3.8" = { - name = "semver"; - reference = "npm:7.3.8"; - linkType = "HARD"; - outputName = "semver-7.3.8-25a996cb4f"; - outputHash = "94ad80ee14889020cb4a14d809fb99d16cbf4ff3dc7f4c564fc72efe2c5763a60090a1c16a9fd18ceeb1e993a1303a4d870c0a22f26adaf435b368b46a7d8462"; - flatName = "semver"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^7.3.7"; - checksum = "9/94ad80ee14889020cb4a14d809fb99d16cbf4ff3dc7f4c564fc72efe2c5763a60090a1c16a9fd18ceeb1e993a1303a4d870c0a22f26adaf435b368b46a7d8462"; - bin = { - "semver" = "bin/semver.js"; - }; - dependencies = { - "lru-cache" = packages."lru-cache@npm:6.0.0"; - }; - }; - "serialize-javascript@npm:6.0.0" = { - name = "serialize-javascript"; - reference = "npm:6.0.0"; - linkType = "HARD"; - outputName = "serialize-javascript-6.0.0-0bb8a3c88d"; - outputHash = "c54759aaf8581cc1509e838a9a1eb340b0addaf8103f1d7795af0cd2319475e43cc31793fbe2db72aa8059a93218dc22b79ae8277b0e69de474a4f79800cf54f"; - flatName = "serialize-javascript"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^6.0.0"; - checksum = "9/c54759aaf8581cc1509e838a9a1eb340b0addaf8103f1d7795af0cd2319475e43cc31793fbe2db72aa8059a93218dc22b79ae8277b0e69de474a4f79800cf54f"; - dependencies = { - "randombytes" = packages."randombytes@npm:2.1.0"; - }; - }; - "set-blocking@npm:2.0.0" = { - name = "set-blocking"; - reference = "npm:2.0.0"; - linkType = "HARD"; - outputName = "set-blocking-2.0.0-49e2cffa24"; - outputHash = "9e8f5aeb7cd850a60b5dbf47d42051137c14f58f375d9a70ca227b797d6ffed3dabf659587d2f183231085f1da2dc3067e2af9f5fcd66fb65c98da5fb54a22fb"; - flatName = "set-blocking"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^2.0.0"; - checksum = "9/9e8f5aeb7cd850a60b5dbf47d42051137c14f58f375d9a70ca227b797d6ffed3dabf659587d2f183231085f1da2dc3067e2af9f5fcd66fb65c98da5fb54a22fb"; - }; - "shallow-clone@npm:3.0.1" = { - name = "shallow-clone"; - reference = "npm:3.0.1"; - linkType = "HARD"; - outputName = "shallow-clone-3.0.1-dab5873d0d"; - outputHash = "4b5c12c1cf13c645cdfbc71c1e367bb57106d81313fb5c8de0122029a23fca8ff1ab210007b78d621a430af26d2efea27a68fd927e2976ff7ad905619438b37e"; - flatName = "shallow-clone"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^3.0.0"; - checksum = "9/4b5c12c1cf13c645cdfbc71c1e367bb57106d81313fb5c8de0122029a23fca8ff1ab210007b78d621a430af26d2efea27a68fd927e2976ff7ad905619438b37e"; - dependencies = { - "kind-of" = packages."kind-of@npm:6.0.3"; - }; - }; - "sharp@npm:0.31.1" = { - name = "sharp"; - reference = "npm:0.31.1"; - linkType = "HARD"; - outputName = "sharp-0.31.1-5baac7078b"; - outputHashByPlatform = { - "aarch64-darwin" = "sha512-5DMQOkRDmf0tbAgvGSEikgINATLcRm8WKkaLyp1XOurtG0LIMJUlz8mB5E2cNpFuigLIrr7LrK+mtaUL/QSxkQ=="; - "x86_64-linux" = "sha512-MElZzao++l7fksK0mnXjoeYmSFWtbLJzBg6H354ARQQWXrAyNem8Rcjity6FRu3VKJDdwy/8szLvrD8tekrPrA=="; - }; - shouldBeUnplugged = true; - flatName = "sharp"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^0.31.1"; - checksum = "9/fcf08cca4fa8ef7ddecac4ddacfc7be0012d5ac3c9479b39cb6130107cf13a0aad1a84cd78468d4d4118cadce1e4102adf96b544e8d3a5ef784c04853915a876"; - dependencies = { - "color" = packages."color@npm:4.2.3"; - "detect-libc" = packages."detect-libc@npm:2.0.1"; - "node-addon-api" = packages."node-addon-api@npm:5.0.0"; - "node-gyp" = packages."node-gyp@npm:9.3.0"; - "prebuild-install" = packages."prebuild-install@npm:7.1.1"; - "semver" = packages."semver@npm:7.3.8"; - "simple-get" = packages."simple-get@npm:4.0.1"; - "tar-fs" = packages."tar-fs@npm:2.1.1"; - "tunnel-agent" = packages."tunnel-agent@npm:0.6.0"; - }; - }; - "shebang-command@npm:2.0.0" = { - name = "shebang-command"; - reference = "npm:2.0.0"; - linkType = "HARD"; - outputName = "shebang-command-2.0.0-eb2b01921d"; - outputHash = "5907a8d5facbefbd4dc8d21778d2136d5d22d61b5526452d92d46662614f0ed57090e7adf7184fe9d2d5ef75af9f05d7573437e10b37f2e6fdeeeb5f59fd9ada"; - flatName = "shebang-command"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^2.0.0"; - checksum = "9/5907a8d5facbefbd4dc8d21778d2136d5d22d61b5526452d92d46662614f0ed57090e7adf7184fe9d2d5ef75af9f05d7573437e10b37f2e6fdeeeb5f59fd9ada"; - dependencies = { - "shebang-regex" = packages."shebang-regex@npm:3.0.0"; - }; - }; - "shebang-regex@npm:3.0.0" = { - name = "shebang-regex"; - reference = "npm:3.0.0"; - linkType = "HARD"; - outputName = "shebang-regex-3.0.0-899a0cd65e"; - outputHash = "6be1588a86ed74d05481d09a6ef6a8db44550fda9785ae08c3df06717abc2e5e9a11804b1d0ac9b0641870c5ebf545e18c8d348bc105ba09227e6a32415ea1d6"; - flatName = "shebang-regex"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^3.0.0"; - checksum = "9/6be1588a86ed74d05481d09a6ef6a8db44550fda9785ae08c3df06717abc2e5e9a11804b1d0ac9b0641870c5ebf545e18c8d348bc105ba09227e6a32415ea1d6"; - }; - "signal-exit@npm:3.0.7" = { - name = "signal-exit"; - reference = "npm:3.0.7"; - linkType = "HARD"; - outputName = "signal-exit-3.0.7-bd270458a3"; - outputHash = "5cf7525c55a72d8d104d914acf2e470f74b2c156197277ad7b331bc5de3d8790170fed3c82ff98c7c31adaa8ff941bfd5ba44f55171cbe8ed0e939fa82a8322a"; - flatName = "signal-exit"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^3.0.7"; - checksum = "9/5cf7525c55a72d8d104d914acf2e470f74b2c156197277ad7b331bc5de3d8790170fed3c82ff98c7c31adaa8ff941bfd5ba44f55171cbe8ed0e939fa82a8322a"; - }; - "simple-concat@npm:1.0.1" = { - name = "simple-concat"; - reference = "npm:1.0.1"; - linkType = "HARD"; - outputName = "simple-concat-1.0.1-48df70de29"; - outputHash = "1a041737314d8b49247072adf25990fa56430c2f71f3c129013fa275e0d725d935c2e2ca33bd10c22f1391047a8a94e01db3c149bda30b8e2480a833c99b9a30"; - flatName = "simple-concat"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^1.0.0"; - checksum = "9/1a041737314d8b49247072adf25990fa56430c2f71f3c129013fa275e0d725d935c2e2ca33bd10c22f1391047a8a94e01db3c149bda30b8e2480a833c99b9a30"; - }; - "simple-get@npm:3.1.1" = { - name = "simple-get"; - reference = "npm:3.1.1"; - linkType = "HARD"; - outputName = "simple-get-3.1.1-dce5923dba"; - outputHash = "b10a96dc326f9eb1cdad3c2c934416883c244a047876742077b1da5499429efb278e7ca10dfda4ad12d0bea6058d240030216e50827f95b40fe955817cbb57ed"; - flatName = "simple-get"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^3.0.3"; - checksum = "9/b10a96dc326f9eb1cdad3c2c934416883c244a047876742077b1da5499429efb278e7ca10dfda4ad12d0bea6058d240030216e50827f95b40fe955817cbb57ed"; - dependencies = { - "decompress-response" = packages."decompress-response@npm:4.2.1"; - "once" = packages."once@npm:1.4.0"; - "simple-concat" = packages."simple-concat@npm:1.0.1"; - }; - }; - "simple-get@npm:4.0.1" = { - name = "simple-get"; - reference = "npm:4.0.1"; - linkType = "HARD"; - outputName = "simple-get-4.0.1-fa2a97645d"; - outputHash = "f44b953899a2df12012150e834cc1d731d366e3e7b72f6e5d04d48d6750098afd21b7813a7e7aa1f8dcbf24915c80730df63c6c27c1b0f851b9245211cf8f0a2"; - flatName = "simple-get"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^4.0.1"; - checksum = "9/f44b953899a2df12012150e834cc1d731d366e3e7b72f6e5d04d48d6750098afd21b7813a7e7aa1f8dcbf24915c80730df63c6c27c1b0f851b9245211cf8f0a2"; - dependencies = { - "decompress-response" = packages."decompress-response@npm:6.0.0"; - "once" = packages."once@npm:1.4.0"; - "simple-concat" = packages."simple-concat@npm:1.0.1"; - }; - }; - "simple-swizzle@npm:0.2.2" = { - name = "simple-swizzle"; - reference = "npm:0.2.2"; - linkType = "HARD"; - outputName = "simple-swizzle-0.2.2-8dee37fad1"; - outputHash = "da2f0812cd395009bbe2fd2fe803300a63025f7f330c1492ea41e2b4a819138806a2a99c05ae1527cb750da43ff9dc2ccde294ad1e998cedbd459cb068dc68a3"; - flatName = "simple-swizzle"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^0.2.2"; - checksum = "9/da2f0812cd395009bbe2fd2fe803300a63025f7f330c1492ea41e2b4a819138806a2a99c05ae1527cb750da43ff9dc2ccde294ad1e998cedbd459cb068dc68a3"; - dependencies = { - "is-arrayish" = packages."is-arrayish@npm:0.3.2"; - }; - }; - "sisteransi@npm:1.0.5" = { - name = "sisteransi"; - reference = "npm:1.0.5"; - linkType = "HARD"; - outputName = "sisteransi-1.0.5-af60cc0cfa"; - outputHash = "35461425fe53c7cf8e2abdc5cef4568247b41bade0b7fcf316923aae6e3a59004d35e6a7e26f3be345b8fc7091cf2d589974d0df5469a05d049d2f95974dd17d"; - flatName = "sisteransi"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^1.0.5"; - checksum = "9/35461425fe53c7cf8e2abdc5cef4568247b41bade0b7fcf316923aae6e3a59004d35e6a7e26f3be345b8fc7091cf2d589974d0df5469a05d049d2f95974dd17d"; - }; - "slash@npm:3.0.0" = { - name = "slash"; - reference = "npm:3.0.0"; - linkType = "HARD"; - outputName = "slash-3.0.0-b87de2279a"; - outputHash = "b88a0f1086e3cd20c8b61f50d8afff5fba83f95167a86432f54387565c9424e5d1970612371f768c128ed4b5b1c427120382bafc8c9edf0b3737eb226b733687"; - flatName = "slash"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^3.0.0"; - checksum = "9/b88a0f1086e3cd20c8b61f50d8afff5fba83f95167a86432f54387565c9424e5d1970612371f768c128ed4b5b1c427120382bafc8c9edf0b3737eb226b733687"; - }; - "smart-buffer@npm:4.2.0" = { - name = "smart-buffer"; - reference = "npm:4.2.0"; - linkType = "HARD"; - outputName = "smart-buffer-4.2.0-5ac3f668bb"; - outputHash = "898a5ce4651108164625916aa54b6f7c13e86279a31dd321737d27c4b795cfaaeb1c30417f8809029d80d20710d8a5045998afd35e0f1080b32648f5670aa99b"; - flatName = "smart-buffer"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^4.2.0"; - checksum = "9/898a5ce4651108164625916aa54b6f7c13e86279a31dd321737d27c4b795cfaaeb1c30417f8809029d80d20710d8a5045998afd35e0f1080b32648f5670aa99b"; - }; - "socks-proxy-agent@npm:7.0.0" = { - name = "socks-proxy-agent"; - reference = "npm:7.0.0"; - linkType = "HARD"; - outputName = "socks-proxy-agent-7.0.0-7aacf32ea0"; - outputHash = "d57c2c68a2c16a2ac0af30971e1c4899e80cab3bbe405fe2fa3fce26ccd007fe855110b97c0e6d96ddc56926e1e5927a868070cb09185a768d1ad8cbe1a68aa5"; - flatName = "socks-proxy-agent"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^7.0.0"; - checksum = "9/d57c2c68a2c16a2ac0af30971e1c4899e80cab3bbe405fe2fa3fce26ccd007fe855110b97c0e6d96ddc56926e1e5927a868070cb09185a768d1ad8cbe1a68aa5"; - dependencies = { - "agent-base" = packages."agent-base@npm:6.0.2"; - "socks" = packages."socks@npm:2.7.1"; - "debug" = packages."debug@virtual:113ef2a03aa3de337889da32b02d27edf5e95d2b3c50aaf8ade4848a62355b637cece6c5a2b0f14480eef0d6c8ed8e9cacaca7d39e60125049f7120bdbeb5489#npm:4.3.4"; - }; - }; - "socks@npm:2.7.1" = { - name = "socks"; - reference = "npm:2.7.1"; - linkType = "HARD"; - outputName = "socks-2.7.1-17f2b53052"; - outputHash = "a8026d6abfcd168a661240848f6989fbba66276e8fa97ff1cb1079c2f3c6907dcc8284fcbc4f6d3fee8d071afb4fc8313da7e5fbf6d8768f206347a671f1542b"; - flatName = "socks"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^2.6.2"; - checksum = "9/a8026d6abfcd168a661240848f6989fbba66276e8fa97ff1cb1079c2f3c6907dcc8284fcbc4f6d3fee8d071afb4fc8313da7e5fbf6d8768f206347a671f1542b"; - dependencies = { - "ip" = packages."ip@npm:2.0.0"; - "smart-buffer" = packages."smart-buffer@npm:4.2.0"; - }; - }; - "source-map-js@npm:1.0.2" = { - name = "source-map-js"; - reference = "npm:1.0.2"; - linkType = "HARD"; - outputName = "source-map-js-1.0.2-ee4f9f9b30"; - outputHash = "4496d29f371909dbc27dfb302f31cadc70b6f1591b2b433337daf923fac30e9632523e169494b40d06b53228166a577875a3610bce3412de8bb600152f748a9c"; - flatName = "source-map-js"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^1.0.2"; - checksum = "9/4496d29f371909dbc27dfb302f31cadc70b6f1591b2b433337daf923fac30e9632523e169494b40d06b53228166a577875a3610bce3412de8bb600152f748a9c"; - }; - "source-map-support@npm:0.5.13" = { - name = "source-map-support"; - reference = "npm:0.5.13"; - linkType = "HARD"; - outputName = "source-map-support-0.5.13-377dfd7321"; - outputHash = "b8f2460873f3b1f44a3595a2a925f433b2370e4a031174168063e2c48ed913ceb696cbf3943dee5a5ce3b7de15001a8a9d43eab6e903e26816a4d5140ed02bdd"; - flatName = "source-map-support"; - languageName = "node"; - scope = null; - descriptorRange = "npm:0.5.13"; - checksum = "9/b8f2460873f3b1f44a3595a2a925f433b2370e4a031174168063e2c48ed913ceb696cbf3943dee5a5ce3b7de15001a8a9d43eab6e903e26816a4d5140ed02bdd"; - dependencies = { - "buffer-from" = packages."buffer-from@npm:1.1.2"; - "source-map" = packages."source-map@npm:0.6.1"; - }; - }; - "source-map-support@npm:0.5.21" = { - name = "source-map-support"; - reference = "npm:0.5.21"; - linkType = "HARD"; - outputName = "source-map-support-0.5.21-09ca99e250"; - outputHash = "ab0f9bfbcfc32018966a7199de5aeafee03a38408852400962d302392aab16d670dc84e6eda937570c5ff09972ae23347804cdffc5fe3c5e382a5b04cee3d580"; - flatName = "source-map-support"; - languageName = "node"; - scope = null; - descriptorRange = "npm:~0.5.20"; - checksum = "9/ab0f9bfbcfc32018966a7199de5aeafee03a38408852400962d302392aab16d670dc84e6eda937570c5ff09972ae23347804cdffc5fe3c5e382a5b04cee3d580"; - dependencies = { - "buffer-from" = packages."buffer-from@npm:1.1.2"; - "source-map" = packages."source-map@npm:0.6.1"; - }; - }; - "source-map@npm:0.6.1" = { - name = "source-map"; - reference = "npm:0.6.1"; - linkType = "HARD"; - outputName = "source-map-0.6.1-1a3621db16"; - outputHash = "cba9f44c3a4a0485f44a7760ebe427eecdd3b58011ae0459c05506b54f898835b2302073d6afa563a19b60ee9e54c82e33bc4a032e28bebacdfc635f1d0bf7e0"; - flatName = "source-map"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^0.6.0"; - checksum = "9/cba9f44c3a4a0485f44a7760ebe427eecdd3b58011ae0459c05506b54f898835b2302073d6afa563a19b60ee9e54c82e33bc4a032e28bebacdfc635f1d0bf7e0"; - }; - "split2@npm:4.1.0" = { - name = "split2"; - reference = "npm:4.1.0"; - linkType = "HARD"; - outputName = "split2-4.1.0-1c1a4bd984"; - outputHash = "9f5fcdc441f3de25900eb2dde17debef7fc41c4e0075693a4e807bd228a1f4a099484eadedbc9e36350aa207376934b5c28d6750225207ff0d2e3df3332e9cb9"; - flatName = "split2"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^4.1.0"; - checksum = "9/9f5fcdc441f3de25900eb2dde17debef7fc41c4e0075693a4e807bd228a1f4a099484eadedbc9e36350aa207376934b5c28d6750225207ff0d2e3df3332e9cb9"; - }; - "sprintf-js@npm:1.0.3" = { - name = "sprintf-js"; - reference = "npm:1.0.3"; - linkType = "HARD"; - outputName = "sprintf-js-1.0.3-73f0a322fa"; - outputHash = "3e0738f581ab5582868689318a4987ea532cdf220266c1af6fdc5a5091f5c4e758fe3fed9125ac82ed91119ec2cbe0762c0e069b59b929bf70e8bbbf879e56e5"; - flatName = "sprintf-js"; - languageName = "node"; - scope = null; - descriptorRange = "npm:~1.0.2"; - checksum = "9/3e0738f581ab5582868689318a4987ea532cdf220266c1af6fdc5a5091f5c4e758fe3fed9125ac82ed91119ec2cbe0762c0e069b59b929bf70e8bbbf879e56e5"; - }; - "ssri@npm:9.0.1" = { - name = "ssri"; - reference = "npm:9.0.1"; - linkType = "HARD"; - outputName = "ssri-9.0.1-33ce27f4f8"; - outputHash = "ec9e6fbb74ccb030391fc33aa1a8373014f1cdde570e389cf25f201604d6889035fc8b4409a6e8e787d75ddad892839c0e5a4ea6b67e7ab91f3c619e5e6e087a"; - flatName = "ssri"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^9.0.0"; - checksum = "9/ec9e6fbb74ccb030391fc33aa1a8373014f1cdde570e389cf25f201604d6889035fc8b4409a6e8e787d75ddad892839c0e5a4ea6b67e7ab91f3c619e5e6e087a"; - dependencies = { - "minipass" = packages."minipass@npm:3.3.5"; - }; - }; - "stack-utils@npm:2.0.5" = { - name = "stack-utils"; - reference = "npm:2.0.5"; - linkType = "HARD"; - outputName = "stack-utils-2.0.5-e0438f409a"; - outputHash = "1a2a1450abc302addf8c3f60b38439786b1410fef30a30f162875d03abb38ff5b2c8da97d04552cd018dd5565338b9bc6aeeaade3f779eb910e76cad46be7b30"; - flatName = "stack-utils"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^2.0.3"; - checksum = "9/1a2a1450abc302addf8c3f60b38439786b1410fef30a30f162875d03abb38ff5b2c8da97d04552cd018dd5565338b9bc6aeeaade3f779eb910e76cad46be7b30"; - dependencies = { - "escape-string-regexp" = packages."escape-string-regexp@npm:2.0.0"; - }; - }; - "string_decoder@npm:1.3.0" = { - name = "string_decoder"; - reference = "npm:1.3.0"; - linkType = "HARD"; - outputName = "string_decoder-1.3.0-2422117fd0"; - outputHash = "c6b892bdb15861a68c4f9599bdff3909c70b1a2cee73d226a235b8fbadfc0aa060bdd265cb3fd86e856cee6d98cd0d657f84098cb51241f4fae19d0cacf9e13e"; - flatName = "string_decoder"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^1.1.1"; - checksum = "9/c6b892bdb15861a68c4f9599bdff3909c70b1a2cee73d226a235b8fbadfc0aa060bdd265cb3fd86e856cee6d98cd0d657f84098cb51241f4fae19d0cacf9e13e"; - dependencies = { - "safe-buffer" = packages."safe-buffer@npm:5.2.1"; - }; - }; - "string-length@npm:4.0.2" = { - name = "string-length"; - reference = "npm:4.0.2"; - linkType = "HARD"; - outputName = "string-length-4.0.2-675173c7a2"; - outputHash = "00ae19c7d5ae5030ce7c90036712b01a98a06ae5f78e3c10bddaee170bb368add211c38eb2c168deb9f18c3a81ca06bb1a308e4b4b36e47a994b1f3d62140afb"; - flatName = "string-length"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^4.0.1"; - checksum = "9/00ae19c7d5ae5030ce7c90036712b01a98a06ae5f78e3c10bddaee170bb368add211c38eb2c168deb9f18c3a81ca06bb1a308e4b4b36e47a994b1f3d62140afb"; - dependencies = { - "char-regex" = packages."char-regex@npm:1.0.2"; - "strip-ansi" = packages."strip-ansi@npm:6.0.1"; - }; - }; - "string-width@npm:4.2.3" = { - name = "string-width"; - reference = "npm:4.2.3"; - linkType = "HARD"; - outputName = "string-width-4.2.3-2c27177bae"; - outputHash = "aa0f3e082b461e0dc8c54334ef2c748b777e7529c34d348ee16e69690da45e24f223804d94060633126462e2aa4906d6fbfab882f34036a9f4ccd3dbcd2d6931"; - flatName = "string-width"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^4.2.3"; - checksum = "9/aa0f3e082b461e0dc8c54334ef2c748b777e7529c34d348ee16e69690da45e24f223804d94060633126462e2aa4906d6fbfab882f34036a9f4ccd3dbcd2d6931"; - dependencies = { - "emoji-regex" = packages."emoji-regex@npm:8.0.0"; - "is-fullwidth-code-point" = packages."is-fullwidth-code-point@npm:3.0.0"; - "strip-ansi" = packages."strip-ansi@npm:6.0.1"; - }; - }; - "strip-ansi@npm:6.0.1" = { - name = "strip-ansi"; - reference = "npm:6.0.1"; - linkType = "HARD"; - outputName = "strip-ansi-6.0.1-caddc7cb40"; - outputHash = "056ca08f8097351060572eee207ec66247937d7248780a3d643b5eed7d6b5ca6a0990a4f921ffd329e8e9b66427a384237892ac3cb47463adf7d040b154084ec"; - flatName = "strip-ansi"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^6.0.0"; - checksum = "9/056ca08f8097351060572eee207ec66247937d7248780a3d643b5eed7d6b5ca6a0990a4f921ffd329e8e9b66427a384237892ac3cb47463adf7d040b154084ec"; - dependencies = { - "ansi-regex" = packages."ansi-regex@npm:5.0.1"; - }; - }; - "strip-bom@npm:4.0.0" = { - name = "strip-bom"; - reference = "npm:4.0.0"; - linkType = "HARD"; - outputName = "strip-bom-4.0.0-97d367a64d"; - outputHash = "744fd96895813592a9148906cddc3c2cefb0aad94ae1744624a1ce1f51e131d28f555ad411af0140808d4edba6c12e9aa0c33d6bee53a7737068e47b14817dfb"; - flatName = "strip-bom"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^4.0.0"; - checksum = "9/744fd96895813592a9148906cddc3c2cefb0aad94ae1744624a1ce1f51e131d28f555ad411af0140808d4edba6c12e9aa0c33d6bee53a7737068e47b14817dfb"; - }; - "strip-final-newline@npm:2.0.0" = { - name = "strip-final-newline"; - reference = "npm:2.0.0"; - linkType = "HARD"; - outputName = "strip-final-newline-2.0.0-340c4f7c66"; - outputHash = "f5909f4ce3590179074a2a72b38e08009d5f45a63e366e9ef4eee6c11e63674370b6a10def2133fe73751c79f72cd0787fd2483ff5494ced909bb9169317f368"; - flatName = "strip-final-newline"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^2.0.0"; - checksum = "9/f5909f4ce3590179074a2a72b38e08009d5f45a63e366e9ef4eee6c11e63674370b6a10def2133fe73751c79f72cd0787fd2483ff5494ced909bb9169317f368"; - }; - "strip-json-comments@npm:2.0.1" = { - name = "strip-json-comments"; - reference = "npm:2.0.1"; - linkType = "HARD"; - outputName = "strip-json-comments-2.0.1-e7883b2d04"; - outputHash = "4c86af52d848e6cddafdf933702453a3ab3210e9a014c882ce7e271a7d09d413642b796b07c9b597bc0ea5b93d5aab71756cf3d4b2a5ca2d9db2a7be84ae49d9"; - flatName = "strip-json-comments"; - languageName = "node"; - scope = null; - descriptorRange = "npm:~2.0.1"; - checksum = "9/4c86af52d848e6cddafdf933702453a3ab3210e9a014c882ce7e271a7d09d413642b796b07c9b597bc0ea5b93d5aab71756cf3d4b2a5ca2d9db2a7be84ae49d9"; - }; - "strip-json-comments@npm:3.1.1" = { - name = "strip-json-comments"; - reference = "npm:3.1.1"; - linkType = "HARD"; - outputName = "strip-json-comments-3.1.1-dcb2324823"; - outputHash = "20cff3f15267a8b603c4dcec9c3cc5217bcf3f1a66481a4f9ecf262eacc1733a0457756288472328d24efef7705f7755e9511f9c383742389add93d4a9207ae5"; - flatName = "strip-json-comments"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^3.1.1"; - checksum = "9/20cff3f15267a8b603c4dcec9c3cc5217bcf3f1a66481a4f9ecf262eacc1733a0457756288472328d24efef7705f7755e9511f9c383742389add93d4a9207ae5"; - }; - "styled-jsx@npm:5.0.7" = { - name = "styled-jsx"; - reference = "npm:5.0.7"; - linkType = "HARD"; - outputName = "styled-jsx-5.0.7-d47abf001f"; - outputHash = "49b7105bb77180f4c75c43b4038ebb07d4393dc8be82877cd9f19771e475b51a12332e1ac188260b8998d7d51afde9212b87e11009410a55d3b4351149c9da91"; - flatName = "styled-jsx"; - languageName = "node"; - scope = null; - descriptorRange = "npm:5.0.7"; - checksum = "9/49b7105bb77180f4c75c43b4038ebb07d4393dc8be82877cd9f19771e475b51a12332e1ac188260b8998d7d51afde9212b87e11009410a55d3b4351149c9da91"; - packagePeers = [ - "@babel/core" - "@types/babel-plugin-macros" - "@types/babel__core" - "@types/react" - "babel-plugin-macros" - "react" - ]; - }; - "styled-jsx@virtual:1ab05ef36dca2d9a10b19ac413b1804aa768c93d82badb02c953a591f06130ed235ea54657953d36a321e2fb8e6976b668c5b415a2c3e7ca0a9cfac2575a71c5#npm:5.0.7" = { - name = "styled-jsx"; - reference = "virtual:1ab05ef36dca2d9a10b19ac413b1804aa768c93d82badb02c953a591f06130ed235ea54657953d36a321e2fb8e6976b668c5b415a2c3e7ca0a9cfac2575a71c5#npm:5.0.7"; - canonicalPackage = packages."styled-jsx@npm:5.0.7"; - dependencies = { - "react" = packages."react@npm:18.2.0"; - }; - }; - "supports-color@npm:5.5.0" = { - name = "supports-color"; - reference = "npm:5.5.0"; - linkType = "HARD"; - outputName = "supports-color-5.5.0-183ac537bc"; - outputHash = "2eca8c4c8fccd2bd0027af240f85e99b1c9cb221186288dd478ce0fc61bdc07394e47f1bba2c91fe3ae432764772e3639e9c48bef19817267f151ae4a9b9ebef"; - flatName = "supports-color"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^5.3.0"; - checksum = "9/2eca8c4c8fccd2bd0027af240f85e99b1c9cb221186288dd478ce0fc61bdc07394e47f1bba2c91fe3ae432764772e3639e9c48bef19817267f151ae4a9b9ebef"; - dependencies = { - "has-flag" = packages."has-flag@npm:3.0.0"; - }; - }; - "supports-color@npm:7.2.0" = { - name = "supports-color"; - reference = "npm:7.2.0"; - linkType = "HARD"; - outputName = "supports-color-7.2.0-606bfcf7da"; - outputHash = "9218cc0d12c57f4ae213e6ace98e0cda2d8f47617300f21501a0078e17d9e3b4aa3effdc1006e369dfd5389ff4f99682b9617d4a8fb7566e2964955dd14d4cc3"; - flatName = "supports-color"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^7.1.0"; - checksum = "9/9218cc0d12c57f4ae213e6ace98e0cda2d8f47617300f21501a0078e17d9e3b4aa3effdc1006e369dfd5389ff4f99682b9617d4a8fb7566e2964955dd14d4cc3"; - dependencies = { - "has-flag" = packages."has-flag@npm:4.0.0"; - }; - }; - "supports-color@npm:8.1.1" = { - name = "supports-color"; - reference = "npm:8.1.1"; - linkType = "HARD"; - outputName = "supports-color-8.1.1-289e937149"; - outputHash = "3fe58a405502d866f7611fe1926cac2410d6aac87658b3aac94b70617576586270d2ec758ae975ca3ba20556a1c013330c820b59a85f983d322a47cd28118b2c"; - flatName = "supports-color"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^8.0.0"; - checksum = "9/3fe58a405502d866f7611fe1926cac2410d6aac87658b3aac94b70617576586270d2ec758ae975ca3ba20556a1c013330c820b59a85f983d322a47cd28118b2c"; - dependencies = { - "has-flag" = packages."has-flag@npm:4.0.0"; - }; - }; - "supports-preserve-symlinks-flag@npm:1.0.0" = { - name = "supports-preserve-symlinks-flag"; - reference = "npm:1.0.0"; - linkType = "HARD"; - outputName = "supports-preserve-symlinks-flag-1.0.0-f17c4d0028"; - outputHash = "14609489b044de2eaffe0e7549173bb39d6997510ac4b7279d07bf2aafe309205abe172a8c8d248062a24e32ab61a2ae85efc5b4cdf7f932c7cdbe81ca1f39ec"; - flatName = "supports-preserve-symlinks-flag"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^1.0.0"; - checksum = "9/14609489b044de2eaffe0e7549173bb39d6997510ac4b7279d07bf2aafe309205abe172a8c8d248062a24e32ab61a2ae85efc5b4cdf7f932c7cdbe81ca1f39ec"; - }; - "tapable@npm:2.2.1" = { - name = "tapable"; - reference = "npm:2.2.1"; - linkType = "HARD"; - outputName = "tapable-2.2.1-8cf5ff3039"; - outputHash = "d54320ef41e04b13e27e20bfc355bd27bccb4b1ac28123a35d36d903b393944a957a7629b56e808e1a2ef03dcaf1c114e97de7a1b7cbf16e522cd0630219702e"; - flatName = "tapable"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^2.2.0"; - checksum = "9/d54320ef41e04b13e27e20bfc355bd27bccb4b1ac28123a35d36d903b393944a957a7629b56e808e1a2ef03dcaf1c114e97de7a1b7cbf16e522cd0630219702e"; - }; - "tar-fs@npm:2.1.1" = { - name = "tar-fs"; - reference = "npm:2.1.1"; - linkType = "HARD"; - outputName = "tar-fs-2.1.1-e374d3b7a2"; - outputHash = "eedd9484fb8f7301e7dfda1177c8db76427b99fbd6ea9c3bb056bce44301f59890bb4143dfc02aed30d454e92a3ca63189167a71595476f2f5b293d993a14d6d"; - flatName = "tar-fs"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^2.1.1"; - checksum = "9/eedd9484fb8f7301e7dfda1177c8db76427b99fbd6ea9c3bb056bce44301f59890bb4143dfc02aed30d454e92a3ca63189167a71595476f2f5b293d993a14d6d"; - dependencies = { - "chownr" = packages."chownr@npm:1.1.4"; - "mkdirp-classic" = packages."mkdirp-classic@npm:0.5.3"; - "pump" = packages."pump@npm:3.0.0"; - "tar-stream" = packages."tar-stream@npm:2.2.0"; - }; - }; - "tar-stream@npm:2.2.0" = { - name = "tar-stream"; - reference = "npm:2.2.0"; - linkType = "HARD"; - outputName = "tar-stream-2.2.0-884c79b510"; - outputHash = "c0c8df70dbca1da9fc5dc89046b972ee9703ee0d07e096749e5c60f4847dd912e99da1dbb9cb9bd87be0deba550e60dbec2477a1c44c000435ceb5a909f5db5f"; - flatName = "tar-stream"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^2.1.4"; - checksum = "9/c0c8df70dbca1da9fc5dc89046b972ee9703ee0d07e096749e5c60f4847dd912e99da1dbb9cb9bd87be0deba550e60dbec2477a1c44c000435ceb5a909f5db5f"; - dependencies = { - "bl" = packages."bl@npm:4.1.0"; - "end-of-stream" = packages."end-of-stream@npm:1.4.4"; - "fs-constants" = packages."fs-constants@npm:1.0.0"; - "inherits" = packages."inherits@npm:2.0.4"; - "readable-stream" = packages."readable-stream@npm:3.6.0"; - }; - }; - "tar@npm:6.1.11" = { - name = "tar"; - reference = "npm:6.1.11"; - linkType = "HARD"; - outputName = "tar-6.1.11-e6ac3cba9c"; - outputHash = "5499de6e1998ca602c327f3359d085f6ab41e63a0ce530fb15de13089d3795262b6dfb7731989b7e1d0289a76658d715d8e1239fc06f70ae49349205e3a5fbcc"; - flatName = "tar"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^6.1.2"; - checksum = "9/5499de6e1998ca602c327f3359d085f6ab41e63a0ce530fb15de13089d3795262b6dfb7731989b7e1d0289a76658d715d8e1239fc06f70ae49349205e3a5fbcc"; - dependencies = { - "chownr" = packages."chownr@npm:2.0.0"; - "fs-minipass" = packages."fs-minipass@npm:2.1.0"; - "minipass" = packages."minipass@npm:3.3.5"; - "minizlib" = packages."minizlib@npm:2.1.2"; - "mkdirp" = packages."mkdirp@npm:1.0.4"; - "yallist" = packages."yallist@npm:4.0.0"; - }; - }; - "tarn@npm:3.0.2" = { - name = "tarn"; - reference = "npm:3.0.2"; - linkType = "HARD"; - outputName = "tarn-3.0.2-4324dc10b0"; - outputHash = "237adb62995ac72d3fb32dd01db537804eafe6ce1484a605a1dd24463e7c0e4d47fa6b8421bb1216f91d5ee6b0871b501499fa2df996bf94dfe80f8492e97aad"; - flatName = "tarn"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^3.0.2"; - checksum = "9/237adb62995ac72d3fb32dd01db537804eafe6ce1484a605a1dd24463e7c0e4d47fa6b8421bb1216f91d5ee6b0871b501499fa2df996bf94dfe80f8492e97aad"; - }; - "terser-webpack-plugin@npm:5.3.6" = { - name = "terser-webpack-plugin"; - reference = "npm:5.3.6"; - linkType = "HARD"; - outputName = "terser-webpack-plugin-5.3.6-27ed5132ff"; - outputHash = "4594d51d1d5dc6be17e4fc126fd3067328d2ba2596df0993a19e0d94d07ed17fec377c3fbbf8879d082ca20dfb9a66aa7fb42aef5ac61282c0b4e6f69c6729af"; - flatName = "terser-webpack-plugin"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^5.1.3"; - checksum = "9/4594d51d1d5dc6be17e4fc126fd3067328d2ba2596df0993a19e0d94d07ed17fec377c3fbbf8879d082ca20dfb9a66aa7fb42aef5ac61282c0b4e6f69c6729af"; - dependencies = { - "@jridgewell/trace-mapping" = packages."@jridgewell/trace-mapping@npm:0.3.17"; - "jest-worker" = packages."jest-worker@npm:27.5.1"; - "schema-utils" = packages."schema-utils@npm:3.1.1"; - "serialize-javascript" = packages."serialize-javascript@npm:6.0.0"; - "terser" = packages."terser@npm:5.15.1"; - }; - packagePeers = [ - "@swc/core" - "@types/esbuild" - "@types/swc__core" - "@types/uglify-js" - "@types/webpack" - "esbuild" - "uglify-js" - "webpack" - ]; - }; - "terser-webpack-plugin@virtual:1144445ea12beee23520d1f39ad0b242c217bdaf290a67b86cac8f084d17833f6f90506061299a1bed91cebcdafceb106beb20bf668fad994c3204b3df9d7fa2#npm:5.3.6" = { - name = "terser-webpack-plugin"; - reference = "virtual:1144445ea12beee23520d1f39ad0b242c217bdaf290a67b86cac8f084d17833f6f90506061299a1bed91cebcdafceb106beb20bf668fad994c3204b3df9d7fa2#npm:5.3.6"; - canonicalPackage = packages."terser-webpack-plugin@npm:5.3.6"; - dependencies = { - "@jridgewell/trace-mapping" = packages."@jridgewell/trace-mapping@npm:0.3.17"; - "jest-worker" = packages."jest-worker@npm:27.5.1"; - "schema-utils" = packages."schema-utils@npm:3.1.1"; - "serialize-javascript" = packages."serialize-javascript@npm:6.0.0"; - "terser" = packages."terser@npm:5.15.1"; - "webpack" = packages."webpack@virtual:819008c351efcab39edaca3aff41825a322b497036fdaae27b5fba418f7e250764dbabc64de345136bce5b73e5ae95b76973a2b3591d90edde6160b93c624974#npm:5.74.0"; - }; - }; - "terser@npm:5.15.1" = { - name = "terser"; - reference = "npm:5.15.1"; - linkType = "HARD"; - outputName = "terser-5.15.1-63dec1247d"; - outputHash = "4d0c2a858eb2857fd8b58b2e2382865e3ecad30a8573b20d325cb6789d670f4057f3f84ac6e7437556033ec0c6fff9e913e5bbc05b67cdeac1a35b3da173c295"; - flatName = "terser"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^5.14.1"; - checksum = "9/4d0c2a858eb2857fd8b58b2e2382865e3ecad30a8573b20d325cb6789d670f4057f3f84ac6e7437556033ec0c6fff9e913e5bbc05b67cdeac1a35b3da173c295"; - bin = { - "terser" = "bin/terser"; - }; - dependencies = { - "@jridgewell/source-map" = packages."@jridgewell/source-map@npm:0.3.2"; - "acorn" = packages."acorn@npm:8.8.1"; - "commander" = packages."commander@npm:2.20.3"; - "source-map-support" = packages."source-map-support@npm:0.5.21"; - }; - }; - "test-exclude@npm:6.0.0" = { - name = "test-exclude"; - reference = "npm:6.0.0"; - linkType = "HARD"; - outputName = "test-exclude-6.0.0-3fb03d69df"; - outputHash = "bcb7eecb486d1441f2c55a05d079f72e2e13e74c8e89051412e33382e745996d646036a7d13d3a74c60222f59dd48c5b8cc83c1f3b5647332262d9c5f04da937"; - flatName = "test-exclude"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^6.0.0"; - checksum = "9/bcb7eecb486d1441f2c55a05d079f72e2e13e74c8e89051412e33382e745996d646036a7d13d3a74c60222f59dd48c5b8cc83c1f3b5647332262d9c5f04da937"; - dependencies = { - "@istanbuljs/schema" = packages."@istanbuljs/schema@npm:0.1.3"; - "glob" = packages."glob@npm:7.2.3"; - "minimatch" = packages."minimatch@npm:3.1.2"; - }; - }; - "test-portal@portal:../../localPackageTests/test-portal::locator=testb%40workspace%3Apackages%2Ftestb" = { - name = "test-portal"; - reference = "portal:../../localPackageTests/test-portal::locator=testb%40workspace%3Apackages%2Ftestb"; - linkType = "SOFT"; - outputName = "test-portal-1.0.0-17dbad5b25"; - src = ./localPackageTests/test-portal; - shouldBeUnplugged = true; - flatName = "test-portal"; - languageName = "node"; - scope = null; - descriptorRange = "portal:../../localPackageTests/test-portal::locator=testb%40workspace%3Apackages%2Ftestb"; - dependencies = { - "isomorphic-fetch" = packages."isomorphic-fetch@npm:2.2.1"; - }; - }; - "test-tgz-redux-saga-core@file:../../localPackageTests/test-tgz-redux-saga-core.tgz::locator=testb%40workspace%3Apackages%2Ftestb" = { - name = "test-tgz-redux-saga-core"; - reference = "file:../../localPackageTests/test-tgz-redux-saga-core.tgz::locator=testb%40workspace%3Apackages%2Ftestb"; - linkType = "HARD"; - outputName = "test-tgz-redux-saga-core-1.1.3-5045f0861f"; - src = ./localPackageTests/test-tgz-redux-saga-core.tgz; - shouldBeUnplugged = true; - flatName = "test-tgz-redux-saga-core"; - languageName = "node"; - scope = null; - descriptorRange = "file:../../localPackageTests/test-tgz-redux-saga-core.tgz::locator=testb%40workspace%3Apackages%2Ftestb"; - checksum = "9/cd246c1082eab0536d06331e2fd37b502ce97e0ab755890673a361c0c09936275e2cc156387f8a2f30c75b908eff942dab4d223c125ad2aacfd00c71e3d528ef"; - dependencies = { - "@babel/runtime" = packages."@babel/runtime@npm:7.19.4"; - "@redux-saga/deferred" = packages."@redux-saga/deferred@npm:1.2.1"; - "@redux-saga/delay-p" = packages."@redux-saga/delay-p@npm:1.2.1"; - "@redux-saga/is" = packages."@redux-saga/is@npm:1.1.3"; - "@redux-saga/symbols" = packages."@redux-saga/symbols@npm:1.1.3"; - "@redux-saga/types" = packages."@redux-saga/types@npm:1.2.1"; - "redux" = packages."redux@npm:4.2.0"; - "typescript-tuple" = packages."typescript-tuple@npm:2.2.1"; - }; - }; - "testa@workspace:packages/testa" = { - name = "testa"; - reference = "workspace:packages/testa"; - linkType = "SOFT"; - outputName = "testa-0.0.0-873621ee06"; - src = ./packages/testa; - shouldBeUnplugged = true; - flatName = "testa"; - languageName = "unknown"; - scope = null; - descriptorRange = "workspace:packages/testa"; - bin = { - "testa-test" = "./bin/testa-test"; - }; - dependencies = { - "chai" = packages."chai@npm:4.3.6"; - "color" = packages."color@npm:4.2.3"; - "enhanced-resolve" = packages."enhanced-resolve@npm:5.10.0"; - "esbuild" = packages."esbuild@npm:0.15.10"; - "knex" = packages."knex@virtual:873621ee06b4625ead2be11f2d77ba70a136cc274552602a099052f59522f7193183c2fe44bd5a376d2f62cece35edf18f6bbeac7390077ea336f092796c7037#npm:2.3.0"; - "react-old" = packages."react@npm:18.2.0"; - "teste" = packages."teste@virtual:873621ee06b4625ead2be11f2d77ba70a136cc274552602a099052f59522f7193183c2fe44bd5a376d2f62cece35edf18f6bbeac7390077ea336f092796c7037#workspace:packages/teste"; - "testf" = packages."testf@workspace:packages/testf"; - }; - devDependencies = { - "typescript" = packages."typescript@patch:typescript@npm%3A4.8.4#optional!builtin::version=4.8.4&hash=701156"; - }; - }; - "testb@workspace:packages/testb" = { - name = "testb"; - reference = "workspace:packages/testb"; - linkType = "SOFT"; - outputName = "testb-0.0.0-819008c351"; - src = ./packages/testb; - shouldBeUnplugged = true; - flatName = "testb"; - languageName = "unknown"; - scope = null; - descriptorRange = "workspace:packages/testb"; - bin = { - "testb" = "./index.js"; - }; - dependencies = { - "canvas" = packages."canvas@npm:2.10.1"; - "fsevents" = packages."fsevents@patch:fsevents@npm%3A2.3.2#optional!builtin::version=2.3.2&hash=18f3a7"; - "knex" = packages."knex@virtual:819008c351efcab39edaca3aff41825a322b497036fdaae27b5fba418f7e250764dbabc64de345136bce5b73e5ae95b76973a2b3591d90edde6160b93c624974#npm:2.3.0"; - "open" = packages."open@patch:open@npm%3A8.4.0#.yarn/patches/open-npm-8.4.0-df63cfe537::version=8.4.0&hash=e6ee73&locator=root-workspace-0b6124%40workspace%3A."; - "pg" = packages."pg@virtual:819008c351efcab39edaca3aff41825a322b497036fdaae27b5fba418f7e250764dbabc64de345136bce5b73e5ae95b76973a2b3591d90edde6160b93c624974#npm:8.8.0"; - "react" = packages."react@npm:18.2.0"; - "react-dom" = packages."react-dom@virtual:819008c351efcab39edaca3aff41825a322b497036fdaae27b5fba418f7e250764dbabc64de345136bce5b73e5ae95b76973a2b3591d90edde6160b93c624974#npm:18.2.0"; - "react-scheduler" = packages."react-scheduler@npm:0.1.0"; - "resolve-dir" = packages."resolve-dir@npm:1.0.1"; - "sharp" = packages."sharp@npm:0.31.1"; - "test-portal" = packages."test-portal@portal:../../localPackageTests/test-portal::locator=testb%40workspace%3Apackages%2Ftestb"; - "test-tgz-redux-saga-core" = packages."test-tgz-redux-saga-core@file:../../localPackageTests/test-tgz-redux-saga-core.tgz::locator=testb%40workspace%3Apackages%2Ftestb"; - "testa" = packages."testa@workspace:packages/testa"; - "testc-alt-name-test" = packages."testc-alt-name-test@portal:../testc::locator=testb%40workspace%3Apackages%2Ftestb"; - "testd" = packages."testd@workspace:packages/testd"; - }; - devDependencies = { - "esbuild" = packages."esbuild@npm:0.15.10"; - "jest" = packages."jest@virtual:a585144e15e84575e46cc830f85385f6313ef412d3c2dc37baf2e8c9c2f433d57318f84d807636b675be55f255212ca55600409cfa54712421408c4c7e51a64a#npm:29.2.2"; - "next" = packages."next@virtual:819008c351efcab39edaca3aff41825a322b497036fdaae27b5fba418f7e250764dbabc64de345136bce5b73e5ae95b76973a2b3591d90edde6160b93c624974#npm:12.3.1"; - "webpack" = packages."webpack@virtual:819008c351efcab39edaca3aff41825a322b497036fdaae27b5fba418f7e250764dbabc64de345136bce5b73e5ae95b76973a2b3591d90edde6160b93c624974#npm:5.74.0"; - "webpack-cli" = packages."webpack-cli@virtual:819008c351efcab39edaca3aff41825a322b497036fdaae27b5fba418f7e250764dbabc64de345136bce5b73e5ae95b76973a2b3591d90edde6160b93c624974#npm:4.10.0"; - }; - }; - "testc-alt-name-test@portal:../testc::locator=testb%40workspace%3Apackages%2Ftestb" = { - name = "testc-alt-name-test"; - reference = "portal:../testc::locator=testb%40workspace%3Apackages%2Ftestb"; - linkType = "SOFT"; - outputName = "testc-alt-name-test-0.0.0-9a41323956"; - src = ./packages/testc; - shouldBeUnplugged = true; - flatName = "testc-alt-name-test"; - languageName = "node"; - scope = null; - descriptorRange = "portal:../testc::locator=testb%40workspace%3Apackages%2Ftestb"; - }; - "testc@workspace:packages/testc" = { - name = "testc"; - reference = "workspace:packages/testc"; - linkType = "SOFT"; - outputName = "testc-0.0.0-42f9fb94d3"; - src = ./packages/testc; - shouldBeUnplugged = true; - flatName = "testc"; - languageName = "unknown"; - scope = null; - descriptorRange = "workspace:packages/testc"; - }; - "testd@workspace:packages/testd" = { - name = "testd"; - reference = "workspace:packages/testd"; - linkType = "SOFT"; - outputName = "testd-0.0.0-ac5ee0a5e9"; - src = ./packages/testd; - shouldBeUnplugged = true; - flatName = "testd"; - languageName = "unknown"; - scope = null; - descriptorRange = "workspace:packages/testd"; - dependencies = { - "testa" = packages."testa@workspace:packages/testa"; - }; - }; - "teste@virtual:873621ee06b4625ead2be11f2d77ba70a136cc274552602a099052f59522f7193183c2fe44bd5a376d2f62cece35edf18f6bbeac7390077ea336f092796c7037#workspace:packages/teste" = { - name = "teste"; - reference = "virtual:873621ee06b4625ead2be11f2d77ba70a136cc274552602a099052f59522f7193183c2fe44bd5a376d2f62cece35edf18f6bbeac7390077ea336f092796c7037#workspace:packages/teste"; - canonicalPackage = packages."teste@workspace:packages/teste"; - devDependencies = { - "jest" = packages."jest@virtual:a585144e15e84575e46cc830f85385f6313ef412d3c2dc37baf2e8c9c2f433d57318f84d807636b675be55f255212ca55600409cfa54712421408c4c7e51a64a#npm:29.2.2"; - }; - }; - "teste@workspace:packages/teste" = { - name = "teste"; - reference = "workspace:packages/teste"; - linkType = "SOFT"; - outputName = "teste-0.0.0-93c9fc31fd"; - src = ./packages/teste; - shouldBeUnplugged = true; - flatName = "teste"; - languageName = "unknown"; - scope = null; - descriptorRange = "workspace:packages/teste"; - devDependencies = { - "jest" = packages."jest@virtual:a585144e15e84575e46cc830f85385f6313ef412d3c2dc37baf2e8c9c2f433d57318f84d807636b675be55f255212ca55600409cfa54712421408c4c7e51a64a#npm:29.2.2"; - }; - packagePeers = [ - "@types/react" - "react" - ]; - }; - "testf@workspace:packages/testf" = { - name = "testf"; - reference = "workspace:packages/testf"; - linkType = "SOFT"; - outputName = "testf-0.0.0-8fd140df6a"; - src = ./packages/testf; - shouldBeUnplugged = true; - flatName = "testf"; - languageName = "unknown"; - scope = null; - descriptorRange = "workspace:packages/testf"; - }; - "tildify@npm:2.0.0" = { - name = "tildify"; - reference = "npm:2.0.0"; - linkType = "HARD"; - outputName = "tildify-2.0.0-324bfdd523"; - outputHash = "4365ed63a4bdb3aff484c119317dce5859b3270cf9b4acb09e922876ec1b9f7187868688adcf4aa5f83694786934a59b74f331d80cc9434c7895adc4c5fe760d"; - flatName = "tildify"; - languageName = "node"; - scope = null; - descriptorRange = "npm:2.0.0"; - checksum = "9/4365ed63a4bdb3aff484c119317dce5859b3270cf9b4acb09e922876ec1b9f7187868688adcf4aa5f83694786934a59b74f331d80cc9434c7895adc4c5fe760d"; - }; - "tmpl@npm:1.0.5" = { - name = "tmpl"; - reference = "npm:1.0.5"; - linkType = "HARD"; - outputName = "tmpl-1.0.5-d399ba37e2"; - outputHash = "3e4f1c38b66e149dd547dbbc0153d64290731a0c54aa02d37d99065c59b91e7fafbfac17d0e10639f145e91444b7489ccd33a6060696b268d174d18c73d579ac"; - flatName = "tmpl"; - languageName = "node"; - scope = null; - descriptorRange = "npm:1.0.5"; - checksum = "9/3e4f1c38b66e149dd547dbbc0153d64290731a0c54aa02d37d99065c59b91e7fafbfac17d0e10639f145e91444b7489ccd33a6060696b268d174d18c73d579ac"; - }; - "to-fast-properties@npm:2.0.0" = { - name = "to-fast-properties"; - reference = "npm:2.0.0"; - linkType = "HARD"; - outputName = "to-fast-properties-2.0.0-0dc60cc481"; - outputHash = "49d863a314830916634c1a28911db62be419b93fbc430c18955584f112d0e20ccd078c319c5a9af077e11bbf42cdcd8405726262bfb2d4db9fe91ae9f5585ed2"; - flatName = "to-fast-properties"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^2.0.0"; - checksum = "9/49d863a314830916634c1a28911db62be419b93fbc430c18955584f112d0e20ccd078c319c5a9af077e11bbf42cdcd8405726262bfb2d4db9fe91ae9f5585ed2"; - }; - "to-regex-range@npm:5.0.1" = { - name = "to-regex-range"; - reference = "npm:5.0.1"; - linkType = "HARD"; - outputName = "to-regex-range-5.0.1-f1e8263b00"; - outputHash = "16564897c76bbd25bd3c375ee8d4b1fd3ac965fc4ab550ff034a1dddb53816ec06dc27095468394ad4de5978d5e831a9d1ae4cb31080dc4ebd9ba80a47dc1a4f"; - flatName = "to-regex-range"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^5.0.1"; - checksum = "9/16564897c76bbd25bd3c375ee8d4b1fd3ac965fc4ab550ff034a1dddb53816ec06dc27095468394ad4de5978d5e831a9d1ae4cb31080dc4ebd9ba80a47dc1a4f"; - dependencies = { - "is-number" = packages."is-number@npm:7.0.0"; - }; - }; - "tr46@npm:0.0.3" = { - name = "tr46"; - reference = "npm:0.0.3"; - linkType = "HARD"; - outputName = "tr46-0.0.3-de53018915"; - outputHash = "c670667f2df1c0983b48ee7e81d6013ab304f73573e9e4292233821b2219504307bedffc303c32df30813a9138114b8b084c81dea94fb68f08aca7770af98578"; - flatName = "tr46"; - languageName = "node"; - scope = null; - descriptorRange = "npm:~0.0.3"; - checksum = "9/c670667f2df1c0983b48ee7e81d6013ab304f73573e9e4292233821b2219504307bedffc303c32df30813a9138114b8b084c81dea94fb68f08aca7770af98578"; - }; - "tslib@npm:2.4.0" = { - name = "tslib"; - reference = "npm:2.4.0"; - linkType = "HARD"; - outputName = "tslib-2.4.0-9cb6dc5030"; - outputHash = "022a70708abbc3491734959effd9a87e6e0af5932b61d0c9f1d07b8b80cabbbfc9fc9e9c0fe86e5ab2d32d766ae30117edf00b02d170ff255ab7e60361a4b711"; - flatName = "tslib"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^2.4.0"; - checksum = "9/022a70708abbc3491734959effd9a87e6e0af5932b61d0c9f1d07b8b80cabbbfc9fc9e9c0fe86e5ab2d32d766ae30117edf00b02d170ff255ab7e60361a4b711"; - }; - "tunnel-agent@npm:0.6.0" = { - name = "tunnel-agent"; - reference = "npm:0.6.0"; - linkType = "HARD"; - outputName = "tunnel-agent-0.6.0-64345ab7eb"; - outputHash = "04bb1f31a4f757d78547536d3c58bf7d24645735ecc5af75536cf9ee46e8d4d8c802518a16062d9c07f78874946dd2ea600d2df42e5c538cdd9a414994bce54d"; - flatName = "tunnel-agent"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^0.6.0"; - checksum = "9/04bb1f31a4f757d78547536d3c58bf7d24645735ecc5af75536cf9ee46e8d4d8c802518a16062d9c07f78874946dd2ea600d2df42e5c538cdd9a414994bce54d"; - dependencies = { - "safe-buffer" = packages."safe-buffer@npm:5.2.1"; - }; - }; - "type-detect@npm:4.0.8" = { - name = "type-detect"; - reference = "npm:4.0.8"; - linkType = "HARD"; - outputName = "type-detect-4.0.8-8d8127b901"; - outputHash = "2d2111a44529a381e9be7090066cc89b60ac2c822194e3d213a0d5f630e81abfd07d2b91a324ef4a173973c5b0c68b0bdf29ac6896459cf819914a6f56199e0f"; - flatName = "type-detect"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^4.0.5"; - checksum = "9/2d2111a44529a381e9be7090066cc89b60ac2c822194e3d213a0d5f630e81abfd07d2b91a324ef4a173973c5b0c68b0bdf29ac6896459cf819914a6f56199e0f"; - }; - "type-fest@npm:0.21.3" = { - name = "type-fest"; - reference = "npm:0.21.3"; - linkType = "HARD"; - outputName = "type-fest-0.21.3-5ff2a9c6fd"; - outputHash = "b64cd677e7d579f929d8d14bccdad0ca5da9013124f11457ce9cc255e3141dd453128a46fed2e03f38c0c2319853118edcfb118d1f4e4f09091f6bbdb91ce467"; - flatName = "type-fest"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^0.21.3"; - checksum = "9/b64cd677e7d579f929d8d14bccdad0ca5da9013124f11457ce9cc255e3141dd453128a46fed2e03f38c0c2319853118edcfb118d1f4e4f09091f6bbdb91ce467"; - }; - "typescript-compare@npm:0.0.2" = { - name = "typescript-compare"; - reference = "npm:0.0.2"; - linkType = "HARD"; - outputName = "typescript-compare-0.0.2-86f99ed6e8"; - outputHash = "c9945b8084819b9bb7aa6a370d570cdc47b7498dc3f1aba16376d4d6f05c3ad7324c5f54903534f30986cfdec90775f281f6769f399aa9d77bcf54300f40cb92"; - flatName = "typescript-compare"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^0.0.2"; - checksum = "9/c9945b8084819b9bb7aa6a370d570cdc47b7498dc3f1aba16376d4d6f05c3ad7324c5f54903534f30986cfdec90775f281f6769f399aa9d77bcf54300f40cb92"; - dependencies = { - "typescript-logic" = packages."typescript-logic@npm:0.0.0"; - }; - }; - "typescript-logic@npm:0.0.0" = { - name = "typescript-logic"; - reference = "npm:0.0.0"; - linkType = "HARD"; - outputName = "typescript-logic-0.0.0-f343262bb5"; - outputHash = "3b2ed9aeb4a0abc7c422b46d0c09edae5053ddb0723e359b9e2f709655c5c42256cf9db0b390706f4066daaf46252900c95fd21f0b19a97d3e06e311addba219"; - flatName = "typescript-logic"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^0.0.0"; - checksum = "9/3b2ed9aeb4a0abc7c422b46d0c09edae5053ddb0723e359b9e2f709655c5c42256cf9db0b390706f4066daaf46252900c95fd21f0b19a97d3e06e311addba219"; - }; - "typescript-tuple@npm:2.2.1" = { - name = "typescript-tuple"; - reference = "npm:2.2.1"; - linkType = "HARD"; - outputName = "typescript-tuple-2.2.1-b78fa3093a"; - outputHash = "53f3b380618ef56eb7c58f5cf027baf547416d8ef8145ac0b053e4f61bbef581c0f018393868e4cfa02c281d2250a9b8fd21d12615db992033e100702f4dea61"; - flatName = "typescript-tuple"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^2.2.1"; - checksum = "9/53f3b380618ef56eb7c58f5cf027baf547416d8ef8145ac0b053e4f61bbef581c0f018393868e4cfa02c281d2250a9b8fd21d12615db992033e100702f4dea61"; - dependencies = { - "typescript-compare" = packages."typescript-compare@npm:0.0.2"; - }; - }; - "typescript@npm:4.8.4" = { - name = "typescript"; - reference = "npm:4.8.4"; - linkType = "HARD"; - outputName = "typescript-4.8.4-9c0a335511"; - outputHash = "008c336ed785130b6e13254adbfc4084f5dbbe62851df9bac3eaf62fc29e0a396839c00ce47e0d92db44fa9a08b9f7ba4d31304f2b10cf7d42a0817728e822a1"; - flatName = "typescript"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^4.8.4"; - checksum = "9/008c336ed785130b6e13254adbfc4084f5dbbe62851df9bac3eaf62fc29e0a396839c00ce47e0d92db44fa9a08b9f7ba4d31304f2b10cf7d42a0817728e822a1"; - bin = { - "tsc" = "bin/tsc"; - "tsserver" = "bin/tsserver"; - }; + }; + "@babel/core@npm:7.19.6" = { + dependencies = { + "debug" = "debug@npm:4.3.4"; }; - "typescript@patch:typescript@npm%3A4.8.4#optional!builtin::version=4.8.4&hash=701156" = { - name = "typescript"; - reference = "patch:typescript@npm%3A4.8.4#optional!builtin::version=4.8.4&hash=701156"; - linkType = "HARD"; - outputName = "typescript-4.8.4-6568064686"; - outputHash = "72574875bac1c13aec22010780d4841a10a88342d73744dbbad538bb0ed601f2024187f197239f2dcbf2442f83ecc4de04a80941d49730c403969fbba035ed81"; - flatName = "typescript"; - languageName = "node"; - scope = null; - descriptorRange = "patch:typescript@npm%3A^4.8.4#optional!builtin"; - checksum = "9/72574875bac1c13aec22010780d4841a10a88342d73744dbbad538bb0ed601f2024187f197239f2dcbf2442f83ecc4de04a80941d49730c403969fbba035ed81"; - bin = { - "tsc" = "bin/tsc"; - "tsserver" = "bin/tsserver"; - }; + }; + "@babel/parser@npm:7.19.6" = { + dependencies = { + "@babel/types" = "@babel/types@npm:7.19.4"; }; - "unique-filename@npm:2.0.1" = { - name = "unique-filename"; - reference = "npm:2.0.1"; - linkType = "HARD"; - outputName = "unique-filename-2.0.1-183c6c7c2b"; - outputHash = "1efaebd1b9df4770537f73b040adc8ef2b7da29b837388d97d6d78a4a739dc67bc491e45d381a377bc80ee838e7e1dc904193b3e73cd6c117d96f92b3a09ed46"; - flatName = "unique-filename"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^2.0.0"; - checksum = "9/1efaebd1b9df4770537f73b040adc8ef2b7da29b837388d97d6d78a4a739dc67bc491e45d381a377bc80ee838e7e1dc904193b3e73cd6c117d96f92b3a09ed46"; - dependencies = { - "unique-slug" = packages."unique-slug@npm:3.0.0"; - }; + }; + "@babel/parser@npm:7.20.2" = { + dependencies = { + "@babel/types" = "@babel/types@npm:7.19.4"; }; - "unique-slug@npm:3.0.0" = { - name = "unique-slug"; - reference = "npm:3.0.0"; - linkType = "HARD"; - outputName = "unique-slug-3.0.0-0b82e51577"; - outputHash = "ae31bb1d8126400e512385ec239b3ca40f6a8790af9d6dedb0842b340b3ecc0a7de413ff270f3ea3dae1565c6f745ab6e28363387cd32ecddbe0fc72ee247303"; - flatName = "unique-slug"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^3.0.0"; - checksum = "9/ae31bb1d8126400e512385ec239b3ca40f6a8790af9d6dedb0842b340b3ecc0a7de413ff270f3ea3dae1565c6f745ab6e28363387cd32ecddbe0fc72ee247303"; - dependencies = { - "imurmurhash" = packages."imurmurhash@npm:0.1.4"; - }; + }; + "@babel/traverse@npm:7.19.6" = { + dependencies = { + "debug" = "debug@npm:4.3.4"; }; - "update-browserslist-db@npm:1.0.10" = { - name = "update-browserslist-db"; - reference = "npm:1.0.10"; - linkType = "HARD"; - outputName = "update-browserslist-db-1.0.10-676baf0b9f"; - outputHash = "e55ee7f0562821e40808b5f265e4dfbc1436cdddd4c436dfe73ae4e71215302907d4b430807d45fabbb4c23aa2d67757f26dbd8f93fc9718f814566536b386d0"; - flatName = "update-browserslist-db"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^1.0.9"; - checksum = "9/e55ee7f0562821e40808b5f265e4dfbc1436cdddd4c436dfe73ae4e71215302907d4b430807d45fabbb4c23aa2d67757f26dbd8f93fc9718f814566536b386d0"; - bin = { - "browserslist-lint" = "cli.js"; - }; - dependencies = { - "escalade" = packages."escalade@npm:3.1.1"; - "picocolors" = packages."picocolors@npm:1.0.0"; - }; - packagePeers = [ - "@types/browserslist" - "browserslist" - ]; + }; + "@babel/traverse@npm:7.20.1" = { + dependencies = { + "debug" = "debug@npm:4.3.4"; }; - "update-browserslist-db@virtual:7d64a96afc8cf9b31b95951ccc2f47931d0cf97faa526fd0d20448bf2c73ddf9f5ef9e5cd28839ae8b5791451df45079a407b3f4978367b4210748169f5848f6#npm:1.0.10" = { - name = "update-browserslist-db"; - reference = "virtual:7d64a96afc8cf9b31b95951ccc2f47931d0cf97faa526fd0d20448bf2c73ddf9f5ef9e5cd28839ae8b5791451df45079a407b3f4978367b4210748169f5848f6#npm:1.0.10"; - canonicalPackage = packages."update-browserslist-db@npm:1.0.10"; - dependencies = { - "browserslist" = packages."browserslist@npm:4.21.4"; - "escalade" = packages."escalade@npm:3.1.1"; - "picocolors" = packages."picocolors@npm:1.0.0"; - }; + }; + "@esbuild/android-arm@npm:0.15.10" = { + shouldBeUnplugged = true; + outputHash = ""; + }; + "@esbuild/linux-loong64@npm:0.15.10" = { + shouldBeUnplugged = true; + outputHash = ""; + }; + "@mapbox/node-pre-gyp@npm:1.0.10" = { + dependencies = { + "node-fetch" = "node-fetch@npm:2.6.7"; }; - "uri-js@npm:4.4.1" = { - name = "uri-js"; - reference = "npm:4.4.1"; - linkType = "HARD"; - outputName = "uri-js-4.4.1-66d11cbcaf"; - outputHash = "284fedd1b11512a77e783bfd32b320a9af1f2e39fbfabf4d65d64122344a3f55b8d37ec0c77e0045f7467b99d24bd2c067c1224d74f5c76b069753c7276d8709"; - flatName = "uri-js"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^4.2.2"; - checksum = "9/284fedd1b11512a77e783bfd32b320a9af1f2e39fbfabf4d65d64122344a3f55b8d37ec0c77e0045f7467b99d24bd2c067c1224d74f5c76b069753c7276d8709"; - dependencies = { - "punycode" = packages."punycode@npm:2.1.1"; - }; + }; + "@next/swc-android-arm-eabi@npm:12.3.1" = { + shouldBeUnplugged = true; + outputHash = ""; + }; + "@next/swc-android-arm64@npm:12.3.1" = { + shouldBeUnplugged = true; + outputHash = ""; + }; + "@next/swc-darwin-arm64@npm:12.3.1" = { + shouldBeUnplugged = true; + outputHashByPlatform = { + "aarch64-darwin" = "sha512-4xsDS4PrKPG3+qZC1clxo6bpG69DxeHt7FG34kOwQVDtZUZwp/W8UdBWz3FOTzbNiIyF7OBv+KETYb1MU+Umug=="; }; - "use-sync-external-store@npm:1.2.0" = { - name = "use-sync-external-store"; - reference = "npm:1.2.0"; - linkType = "HARD"; - outputName = "use-sync-external-store-1.2.0-44f75d2564"; - outputHash = "bed3d1f68ca3dd33647035dbeb9d3a5ece12fced0245cb0fa831426192e52e4948b0fc6e9187d9d4dce9f58269af605f8feeeda100d2928f8b865f9cd9cc4a4a"; - flatName = "use-sync-external-store"; - languageName = "node"; - scope = null; - descriptorRange = "npm:1.2.0"; - checksum = "9/bed3d1f68ca3dd33647035dbeb9d3a5ece12fced0245cb0fa831426192e52e4948b0fc6e9187d9d4dce9f58269af605f8feeeda100d2928f8b865f9cd9cc4a4a"; - packagePeers = [ - "@types/react" - "react" - ]; + }; + "@next/swc-darwin-x64@npm:12.3.1" = { + shouldBeUnplugged = true; + outputHash = ""; + }; + "@next/swc-freebsd-x64@npm:12.3.1" = { + shouldBeUnplugged = true; + outputHash = ""; + }; + "@next/swc-linux-arm-gnueabihf@npm:12.3.1" = { + shouldBeUnplugged = true; + outputHash = ""; + }; + "@next/swc-linux-arm64-gnu@npm:12.3.1" = { + shouldBeUnplugged = true; + outputHash = ""; + }; + "@next/swc-linux-arm64-musl@npm:12.3.1" = { + shouldBeUnplugged = true; + outputHash = ""; + }; + "@next/swc-linux-x64-gnu@npm:12.3.1" = { + shouldBeUnplugged = true; + outputHashByPlatform = { + "x86_64-linux" = "sha512-4yXKf3VLGHtR4xsNYbqpxGAmthsENlwX8eZjXHd5PxADNws8MwkdcwLspDxifrAdcuO68WVM3UiTNUuZN/Vt0A=="; }; - "use-sync-external-store@virtual:1ab05ef36dca2d9a10b19ac413b1804aa768c93d82badb02c953a591f06130ed235ea54657953d36a321e2fb8e6976b668c5b415a2c3e7ca0a9cfac2575a71c5#npm:1.2.0" = { - name = "use-sync-external-store"; - reference = "virtual:1ab05ef36dca2d9a10b19ac413b1804aa768c93d82badb02c953a591f06130ed235ea54657953d36a321e2fb8e6976b668c5b415a2c3e7ca0a9cfac2575a71c5#npm:1.2.0"; - canonicalPackage = packages."use-sync-external-store@npm:1.2.0"; - dependencies = { - "react" = packages."react@npm:18.2.0"; - }; + }; + "@next/swc-linux-x64-musl@npm:12.3.1" = { + shouldBeUnplugged = true; + outputHash = ""; + }; + "@next/swc-win32-arm64-msvc@npm:12.3.1" = { + shouldBeUnplugged = true; + outputHash = ""; + }; + "@next/swc-win32-ia32-msvc@npm:12.3.1" = { + shouldBeUnplugged = true; + outputHash = ""; + }; + "@next/swc-win32-x64-msvc@npm:12.3.1" = { + shouldBeUnplugged = true; + outputHash = ""; + }; + "agent-base@npm:6.0.2" = { + dependencies = { + "debug" = "debug@npm:4.3.4"; }; - "util-deprecate@npm:1.0.2" = { - name = "util-deprecate"; - reference = "npm:1.0.2"; - linkType = "HARD"; - outputName = "util-deprecate-1.0.2-e3fe1a219c"; - outputHash = "6a88ed8344d07f2324b304ee36def365d967953b5a9c15baa3213eb3909e86a7da1ee70a4c2133e80c23d6c1987590e9c3c57d874e20a124f9e41620b462fa57"; - flatName = "util-deprecate"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^1.0.1"; - checksum = "9/6a88ed8344d07f2324b304ee36def365d967953b5a9c15baa3213eb3909e86a7da1ee70a4c2133e80c23d6c1987590e9c3c57d874e20a124f9e41620b462fa57"; + }; + "agentkeepalive@npm:4.2.1" = { + dependencies = { + "debug" = "debug@npm:4.3.4"; }; - "v8-to-istanbul@npm:9.0.1" = { - name = "v8-to-istanbul"; - reference = "npm:9.0.1"; - linkType = "HARD"; - outputName = "v8-to-istanbul-9.0.1-58bbce7857"; - outputHash = "06027f6004c45b08c690bc3dc35f3c6efa9ab99f689d4bb275f2b3239400ef084771e3a14960117e38a335b5dfbeaf808db1e4487077a27888c7abd70c42f185"; - flatName = "v8-to-istanbul"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^9.0.1"; - checksum = "9/06027f6004c45b08c690bc3dc35f3c6efa9ab99f689d4bb275f2b3239400ef084771e3a14960117e38a335b5dfbeaf808db1e4487077a27888c7abd70c42f185"; - dependencies = { - "@jridgewell/trace-mapping" = packages."@jridgewell/trace-mapping@npm:0.3.17"; - "@types/istanbul-lib-coverage" = packages."@types/istanbul-lib-coverage@npm:2.0.4"; - "convert-source-map" = packages."convert-source-map@npm:1.9.0"; - }; + }; + "apollo-env@npm:0.6.6" = { + dependencies = { + "node-fetch" = "node-fetch@npm:2.6.7"; }; - "walker@npm:1.0.8" = { - name = "walker"; - reference = "npm:1.0.8"; - linkType = "HARD"; - outputName = "walker-1.0.8-b0a05b9478"; - outputHash = "584bd2a543de771451a60c91866be059e0e0728f5d4744a1225e7b9b7c9bcb87fd03f573a8d95fbdb8b553c13ad5913db19b7b91a86af6b8fb170254a5d18b7a"; - flatName = "walker"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^1.0.8"; - checksum = "9/584bd2a543de771451a60c91866be059e0e0728f5d4744a1225e7b9b7c9bcb87fd03f573a8d95fbdb8b553c13ad5913db19b7b91a86af6b8fb170254a5d18b7a"; - dependencies = { - "makeerror" = packages."makeerror@npm:1.0.12"; - }; + }; + "apollo-env@npm:0.9.2" = { + dependencies = { + "node-fetch" = "node-fetch@npm:2.6.7"; }; - "watchpack@npm:2.4.0" = { - name = "watchpack"; - reference = "npm:2.4.0"; - linkType = "HARD"; - outputName = "watchpack-2.4.0-7ec4b9cc65"; - outputHash = "f5fd095d2b5b201e2f70c74d3ea187e3b679aaf0a871b8df5390bc9c7eff61c0d80b34a058293bdc4e2ac1b8689fa7d2df1c42aae4001aecd416c6d1d2271705"; - flatName = "watchpack"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^2.4.0"; - checksum = "9/f5fd095d2b5b201e2f70c74d3ea187e3b679aaf0a871b8df5390bc9c7eff61c0d80b34a058293bdc4e2ac1b8689fa7d2df1c42aae4001aecd416c6d1d2271705"; - dependencies = { - "glob-to-regexp" = packages."glob-to-regexp@npm:0.4.1"; - "graceful-fs" = packages."graceful-fs@npm:4.2.10"; - }; + }; + "apollo-server-env@npm:3.2.0" = { + dependencies = { + "node-fetch" = "node-fetch@npm:2.6.7"; }; - "webidl-conversions@npm:3.0.1" = { - name = "webidl-conversions"; - reference = "npm:3.0.1"; - linkType = "HARD"; - outputName = "webidl-conversions-3.0.1-60310f6a2b"; - outputHash = "57c8c5fdd986be5432ea6adacd87d6757144289d3b48b33441e7310bd4f4f6d782dd34acbd74d61e923c142cc50333d27ba58235692fa7248541c0bcce2563e1"; - flatName = "webidl-conversions"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^3.0.0"; - checksum = "9/57c8c5fdd986be5432ea6adacd87d6757144289d3b48b33441e7310bd4f4f6d782dd34acbd74d61e923c142cc50333d27ba58235692fa7248541c0bcce2563e1"; + }; + "canvas@npm:2.10.1" = { + shouldBeUnplugged = true; + outputHashByPlatform = { + "aarch64-darwin" = "sha512-mM5kVat75TLZDEGd4PQ23PsBq2mWSXGzCt8xaBmvyBBMlSWZI0iUAfXMXwRsMUPpOKLo27nDsoSjpEF+/ZlgNA=="; + "x86_64-linux" = "sha512-Y1CKmGQparqpkDOU54UV2Jq9xGJU8v+Y/wyh1F1YkZiYgeEvC2KMiA74kXvcHsoT0ynXHIwe2dS1ZD0RyyNwsw=="; }; - "webpack-cli@npm:4.10.0" = { - name = "webpack-cli"; - reference = "npm:4.10.0"; - linkType = "HARD"; - outputName = "webpack-cli-4.10.0-09cee8c457"; - outputHash = "994ff43b25f27ea132e470e6d469b17b351cba463aa76cbac34885ce50ea1eb17a8edbd60b6398370c47b30ae4ff2c67fc222fb2f0fecfc2941ea04dc741a842"; - flatName = "webpack-cli"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^4.10.0"; - checksum = "9/994ff43b25f27ea132e470e6d469b17b351cba463aa76cbac34885ce50ea1eb17a8edbd60b6398370c47b30ae4ff2c67fc222fb2f0fecfc2941ea04dc741a842"; - bin = { - "webpack-cli" = "bin/cli.js"; - }; - dependencies = { - "@discoveryjs/json-ext" = packages."@discoveryjs/json-ext@npm:0.5.7"; - "@webpack-cli/configtest" = packages."@webpack-cli/configtest@npm:1.2.0"; - "@webpack-cli/info" = packages."@webpack-cli/info@npm:1.5.0"; - "@webpack-cli/serve" = packages."@webpack-cli/serve@npm:1.7.0"; - "colorette" = packages."colorette@npm:2.0.19"; - "commander" = packages."commander@npm:7.2.0"; - "cross-spawn" = packages."cross-spawn@npm:7.0.3"; - "fastest-levenshtein" = packages."fastest-levenshtein@npm:1.0.16"; - "import-local" = packages."import-local@npm:3.1.0"; - "interpret" = packages."interpret@npm:2.2.0"; - "rechoir" = packages."rechoir@npm:0.7.1"; - "webpack-merge" = packages."webpack-merge@npm:5.8.0"; - }; - packagePeers = [ - "@types/webpack-bundle-analyzer" - "@types/webpack-cli__generators" - "@types/webpack-cli__migrate" - "@types/webpack-dev-server" - "@types/webpack" - "@webpack-cli/generators" - "@webpack-cli/migrate" - "webpack-bundle-analyzer" - "webpack-dev-server" - "webpack" - ]; + }; + "core-js@npm:3.26.0" = { + shouldBeUnplugged = true; + outputHashByPlatform = { + "aarch64-darwin" = "sha512-0xpUcVhsgitoHrvU7350NHr8izKoxK3YL+YoiDKg2dNk9SqUCmockyjYoDahsT1n3H0/tgok7JWsoCHLL7Phgg=="; }; - "webpack-cli@virtual:819008c351efcab39edaca3aff41825a322b497036fdaae27b5fba418f7e250764dbabc64de345136bce5b73e5ae95b76973a2b3591d90edde6160b93c624974#npm:4.10.0" = { - name = "webpack-cli"; - reference = "virtual:819008c351efcab39edaca3aff41825a322b497036fdaae27b5fba418f7e250764dbabc64de345136bce5b73e5ae95b76973a2b3591d90edde6160b93c624974#npm:4.10.0"; - canonicalPackage = packages."webpack-cli@npm:4.10.0"; - dependencies = { - "@discoveryjs/json-ext" = packages."@discoveryjs/json-ext@npm:0.5.7"; - "colorette" = packages."colorette@npm:2.0.19"; - "commander" = packages."commander@npm:7.2.0"; - "cross-spawn" = packages."cross-spawn@npm:7.0.3"; - "fastest-levenshtein" = packages."fastest-levenshtein@npm:1.0.16"; - "import-local" = packages."import-local@npm:3.1.0"; - "interpret" = packages."interpret@npm:2.2.0"; - "rechoir" = packages."rechoir@npm:0.7.1"; - "webpack" = packages."webpack@virtual:819008c351efcab39edaca3aff41825a322b497036fdaae27b5fba418f7e250764dbabc64de345136bce5b73e5ae95b76973a2b3591d90edde6160b93c624974#npm:5.74.0"; - "webpack-merge" = packages."webpack-merge@npm:5.8.0"; - "@webpack-cli/configtest" = packages."@webpack-cli/configtest@virtual:61c0fdf3df030285c4615c881341a6c3cf8614e39944c6f4d625dd71f6e6af631fc15d464de4a1ee3c3bc71c7093a12fae1d9f7e3cffc1d6a97c4d5be1518b2c#npm:1.2.0"; - "@webpack-cli/info" = packages."@webpack-cli/info@virtual:61c0fdf3df030285c4615c881341a6c3cf8614e39944c6f4d625dd71f6e6af631fc15d464de4a1ee3c3bc71c7093a12fae1d9f7e3cffc1d6a97c4d5be1518b2c#npm:1.5.0"; - "@webpack-cli/serve" = packages."@webpack-cli/serve@virtual:61c0fdf3df030285c4615c881341a6c3cf8614e39944c6f4d625dd71f6e6af631fc15d464de4a1ee3c3bc71c7093a12fae1d9f7e3cffc1d6a97c4d5be1518b2c#npm:1.7.0"; - }; + }; + "esbuild-android-64@npm:0.15.10" = { + shouldBeUnplugged = true; + outputHash = ""; + }; + "esbuild-android-arm64@npm:0.15.10" = { + shouldBeUnplugged = true; + outputHash = ""; + }; + "esbuild-darwin-64@npm:0.15.10" = { + shouldBeUnplugged = true; + outputHash = ""; + }; + "esbuild-darwin-arm64@npm:0.15.10" = { + shouldBeUnplugged = true; + outputHashByPlatform = { + "aarch64-darwin" = "sha512-Y5+ADVjp0WbzDUXRVintz+Tk0Wf3aUCzQvA1zWSxGlOrsttAkAJdt069ERiFN3EmICIu74R566OiplD6bRl/fA=="; }; - "webpack-merge@npm:5.8.0" = { - name = "webpack-merge"; - reference = "npm:5.8.0"; - linkType = "HARD"; - outputName = "webpack-merge-5.8.0-e3c95fdc3c"; - outputHash = "8f5c833d09868b73f2f09453927ba85df4f750c57536f4fdbafa4aaa875b56a17534e4ce3f8f48db1498857416711eba28e88238af581357478d623cad81a2e7"; - flatName = "webpack-merge"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^5.7.3"; - checksum = "9/8f5c833d09868b73f2f09453927ba85df4f750c57536f4fdbafa4aaa875b56a17534e4ce3f8f48db1498857416711eba28e88238af581357478d623cad81a2e7"; - dependencies = { - "clone-deep" = packages."clone-deep@npm:4.0.1"; - "wildcard" = packages."wildcard@npm:2.0.0"; - }; + }; + "esbuild-freebsd-64@npm:0.15.10" = { + shouldBeUnplugged = true; + outputHash = ""; + }; + "esbuild-freebsd-arm64@npm:0.15.10" = { + shouldBeUnplugged = true; + outputHash = ""; + }; + "esbuild-linux-32@npm:0.15.10" = { + shouldBeUnplugged = true; + outputHash = ""; + }; + "esbuild-linux-64@npm:0.15.10" = { + shouldBeUnplugged = true; + outputHashByPlatform = { + "x86_64-linux" = "sha512-H6P3xJuvxQ6JN1xAWDjZGRlHCgBju4iJZlvlhrUnDsqD1ZLZhd7gKYuN+ALWIRW+zxVqYAN9rLTKKZE5SECjXg=="; }; - "webpack-sources@npm:3.2.3" = { - name = "webpack-sources"; - reference = "npm:3.2.3"; - linkType = "HARD"; - outputName = "webpack-sources-3.2.3-6bfb5d9563"; - outputHash = "aaccb99ee23afcfa1ebddbd7101f7cf15cdc3d72afe37258cf6d852eb6cfedf540086fae3a53b2c65412040eb2e1a3e7b1bff077b09eaf4f82f032a8211d6a6f"; - flatName = "webpack-sources"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^3.2.3"; - checksum = "9/aaccb99ee23afcfa1ebddbd7101f7cf15cdc3d72afe37258cf6d852eb6cfedf540086fae3a53b2c65412040eb2e1a3e7b1bff077b09eaf4f82f032a8211d6a6f"; + }; + "esbuild-linux-arm@npm:0.15.10" = { + shouldBeUnplugged = true; + outputHash = ""; + }; + "esbuild-linux-arm64@npm:0.15.10" = { + shouldBeUnplugged = true; + outputHash = ""; + }; + "esbuild-linux-mips64le@npm:0.15.10" = { + shouldBeUnplugged = true; + outputHash = ""; + }; + "esbuild-linux-ppc64le@npm:0.15.10" = { + shouldBeUnplugged = true; + outputHash = ""; + }; + "esbuild-linux-riscv64@npm:0.15.10" = { + shouldBeUnplugged = true; + outputHash = ""; + }; + "esbuild-linux-s390x@npm:0.15.10" = { + shouldBeUnplugged = true; + outputHash = ""; + }; + "esbuild-netbsd-64@npm:0.15.10" = { + shouldBeUnplugged = true; + outputHash = ""; + }; + "esbuild-openbsd-64@npm:0.15.10" = { + shouldBeUnplugged = true; + outputHash = ""; + }; + "esbuild-sunos-64@npm:0.15.10" = { + shouldBeUnplugged = true; + outputHash = ""; + }; + "esbuild-windows-32@npm:0.15.10" = { + shouldBeUnplugged = true; + outputHash = ""; + }; + "esbuild-windows-64@npm:0.15.10" = { + shouldBeUnplugged = true; + outputHash = ""; + }; + "esbuild-windows-arm64@npm:0.15.10" = { + shouldBeUnplugged = true; + outputHash = ""; + }; + "esbuild@npm:0.15.10" = { + shouldBeUnplugged = true; + outputHashByPlatform = { + "aarch64-darwin" = "sha512-1vaO639lFTNMppXf76TOY6NEbmVUkAiCNlYM/f3Q7Plf1TIGnyKgfHK7YiCwS8wtLYzzvrEp2JyIewZfhlu2xw=="; + "x86_64-linux" = "sha512-1vaO639lFTNMppXf76TOY6NEbmVUkAiCNlYM/f3Q7Plf1TIGnyKgfHK7YiCwS8wtLYzzvrEp2JyIewZfhlu2xw=="; }; - "webpack@npm:5.74.0" = { - name = "webpack"; - reference = "npm:5.74.0"; - linkType = "HARD"; - outputName = "webpack-5.74.0-f5b838a00d"; - outputHash = "d6416e650775ec1ac2087daa1f0db738a07bd709b1ab2784d902d4add2d75bdbfa1c6103ce1191ddc11aaa08ad99cc99c49bfcf885a4b89553286716c3c1a9b4"; - flatName = "webpack"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^5.74.0"; - checksum = "9/d6416e650775ec1ac2087daa1f0db738a07bd709b1ab2784d902d4add2d75bdbfa1c6103ce1191ddc11aaa08ad99cc99c49bfcf885a4b89553286716c3c1a9b4"; - bin = { - "webpack" = "bin/webpack.js"; - }; - dependencies = { - "@types/eslint-scope" = packages."@types/eslint-scope@npm:3.7.4"; - "@types/estree" = packages."@types/estree@npm:0.0.51"; - "@webassemblyjs/ast" = packages."@webassemblyjs/ast@npm:1.11.1"; - "@webassemblyjs/wasm-edit" = packages."@webassemblyjs/wasm-edit@npm:1.11.1"; - "@webassemblyjs/wasm-parser" = packages."@webassemblyjs/wasm-parser@npm:1.11.1"; - "acorn-import-assertions" = packages."acorn-import-assertions@npm:1.8.0"; - "acorn" = packages."acorn@npm:8.8.1"; - "browserslist" = packages."browserslist@npm:4.21.4"; - "chrome-trace-event" = packages."chrome-trace-event@npm:1.0.3"; - "enhanced-resolve" = packages."enhanced-resolve@npm:5.10.0"; - "es-module-lexer" = packages."es-module-lexer@npm:0.9.3"; - "eslint-scope" = packages."eslint-scope@npm:5.1.1"; - "events" = packages."events@npm:3.3.0"; - "glob-to-regexp" = packages."glob-to-regexp@npm:0.4.1"; - "graceful-fs" = packages."graceful-fs@npm:4.2.10"; - "json-parse-even-better-errors" = packages."json-parse-even-better-errors@npm:2.3.1"; - "loader-runner" = packages."loader-runner@npm:4.3.0"; - "mime-types" = packages."mime-types@npm:2.1.35"; - "neo-async" = packages."neo-async@npm:2.6.2"; - "schema-utils" = packages."schema-utils@npm:3.1.1"; - "tapable" = packages."tapable@npm:2.2.1"; - "terser-webpack-plugin" = packages."terser-webpack-plugin@npm:5.3.6"; - "watchpack" = packages."watchpack@npm:2.4.0"; - "webpack-sources" = packages."webpack-sources@npm:3.2.3"; - }; - packagePeers = [ - "@types/webpack-cli" - "webpack-cli" - ]; + }; + "fsevents@patch:fsevents@npm%3A2.3.2#optional!builtin::version=2.3.2&hash=18f3a7" = { + shouldBeUnplugged = true; + outputHashByPlatform = { + "aarch64-darwin" = "sha512-uka9eemEm6sAGeKXHGrM/cfX65Rd2RWVeApfmeZrgeCG7giNVo2HDHPIev7RIMz07ObyqlBN+EdFaJ8Q9JsnQA=="; }; - "webpack@virtual:819008c351efcab39edaca3aff41825a322b497036fdaae27b5fba418f7e250764dbabc64de345136bce5b73e5ae95b76973a2b3591d90edde6160b93c624974#npm:5.74.0" = { - name = "webpack"; - reference = "virtual:819008c351efcab39edaca3aff41825a322b497036fdaae27b5fba418f7e250764dbabc64de345136bce5b73e5ae95b76973a2b3591d90edde6160b93c624974#npm:5.74.0"; - canonicalPackage = packages."webpack@npm:5.74.0"; - dependencies = { - "@types/eslint-scope" = packages."@types/eslint-scope@npm:3.7.4"; - "@types/estree" = packages."@types/estree@npm:0.0.51"; - "@webassemblyjs/ast" = packages."@webassemblyjs/ast@npm:1.11.1"; - "@webassemblyjs/wasm-edit" = packages."@webassemblyjs/wasm-edit@npm:1.11.1"; - "@webassemblyjs/wasm-parser" = packages."@webassemblyjs/wasm-parser@npm:1.11.1"; - "acorn" = packages."acorn@npm:8.8.1"; - "browserslist" = packages."browserslist@npm:4.21.4"; - "chrome-trace-event" = packages."chrome-trace-event@npm:1.0.3"; - "enhanced-resolve" = packages."enhanced-resolve@npm:5.10.0"; - "es-module-lexer" = packages."es-module-lexer@npm:0.9.3"; - "eslint-scope" = packages."eslint-scope@npm:5.1.1"; - "events" = packages."events@npm:3.3.0"; - "glob-to-regexp" = packages."glob-to-regexp@npm:0.4.1"; - "graceful-fs" = packages."graceful-fs@npm:4.2.10"; - "json-parse-even-better-errors" = packages."json-parse-even-better-errors@npm:2.3.1"; - "loader-runner" = packages."loader-runner@npm:4.3.0"; - "mime-types" = packages."mime-types@npm:2.1.35"; - "neo-async" = packages."neo-async@npm:2.6.2"; - "schema-utils" = packages."schema-utils@npm:3.1.1"; - "tapable" = packages."tapable@npm:2.2.1"; - "watchpack" = packages."watchpack@npm:2.4.0"; - "webpack-cli" = packages."webpack-cli@virtual:819008c351efcab39edaca3aff41825a322b497036fdaae27b5fba418f7e250764dbabc64de345136bce5b73e5ae95b76973a2b3591d90edde6160b93c624974#npm:4.10.0"; - "webpack-sources" = packages."webpack-sources@npm:3.2.3"; - "acorn-import-assertions" = packages."acorn-import-assertions@virtual:1144445ea12beee23520d1f39ad0b242c217bdaf290a67b86cac8f084d17833f6f90506061299a1bed91cebcdafceb106beb20bf668fad994c3204b3df9d7fa2#npm:1.8.0"; - "terser-webpack-plugin" = packages."terser-webpack-plugin@virtual:1144445ea12beee23520d1f39ad0b242c217bdaf290a67b86cac8f084d17833f6f90506061299a1bed91cebcdafceb106beb20bf668fad994c3204b3df9d7fa2#npm:5.3.6"; - }; + }; + "http-proxy-agent@npm:5.0.0" = { + dependencies = { + "debug" = "debug@npm:4.3.4"; }; - "whatwg-fetch@npm:3.6.2" = { - name = "whatwg-fetch"; - reference = "npm:3.6.2"; - linkType = "HARD"; - outputName = "whatwg-fetch-3.6.2-4bdf324792"; - outputHash = "2752427eba29acff1469071044c3006d2a8800f45a2290a451b6c9dab762bd36767a571f15bfddcd1d6f86f27f7fd87364ed8dea7785cbf4782b70e263590cb9"; - flatName = "whatwg-fetch"; - languageName = "node"; - scope = null; - descriptorRange = "npm:>=0.10.0"; - checksum = "9/2752427eba29acff1469071044c3006d2a8800f45a2290a451b6c9dab762bd36767a571f15bfddcd1d6f86f27f7fd87364ed8dea7785cbf4782b70e263590cb9"; + }; + "https-proxy-agent@npm:5.0.1" = { + dependencies = { + "debug" = "debug@npm:4.3.4"; }; - "whatwg-url@npm:5.0.0" = { - name = "whatwg-url"; - reference = "npm:5.0.0"; - linkType = "HARD"; - outputName = "whatwg-url-5.0.0-374fb45e60"; - outputHash = "bd0cc6b75b84b3d032e30712e2f40eefbc07ecd14f093e87b2f81bb68bce10a3961e8eb646a7a8cc9c2352548fb501eeff668c8b2595fd7c6ea91d1406ce11ee"; - flatName = "whatwg-url"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^5.0.0"; - checksum = "9/bd0cc6b75b84b3d032e30712e2f40eefbc07ecd14f093e87b2f81bb68bce10a3961e8eb646a7a8cc9c2352548fb501eeff668c8b2595fd7c6ea91d1406ce11ee"; - dependencies = { - "tr46" = packages."tr46@npm:0.0.3"; - "webidl-conversions" = packages."webidl-conversions@npm:3.0.1"; - }; + }; + "istanbul-lib-source-maps@npm:4.0.1" = { + dependencies = { + "debug" = "debug@npm:4.3.4"; }; - "which@npm:1.3.1" = { - name = "which"; - reference = "npm:1.3.1"; - linkType = "HARD"; - outputName = "which-1.3.1-f0ebb8bdd8"; - outputHash = "23474adde926da434c2f9b9d8edbe893b48593ba91f59b9035a0be1ef7c15b64b5a9d37566422d291b16e02cf8099e4a35984f81c9bf696dccf264de57d2b954"; - flatName = "which"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^1.2.14"; - checksum = "9/23474adde926da434c2f9b9d8edbe893b48593ba91f59b9035a0be1ef7c15b64b5a9d37566422d291b16e02cf8099e4a35984f81c9bf696dccf264de57d2b954"; - bin = { - "which" = "./bin/which"; - }; - dependencies = { - "isexe" = packages."isexe@npm:2.0.0"; - }; + }; + "jest-haste-map@npm:29.2.1" = { + dependencies = { + "fsevents" = "fsevents@patch:fsevents@npm%3A2.3.2#optional!builtin::version=2.3.2&hash=18f3a7"; }; - "which@npm:2.0.2" = { - name = "which"; - reference = "npm:2.0.2"; - linkType = "HARD"; - outputName = "which-2.0.2-320ddf72f7"; - outputHash = "3728616c789b289c36ba2572887145e0736f06fe3435b8fef17e27eb5ec0696f61a21e356dd7fa58486346e57186863afa1b6c27c7665f7e674c8124f7f61157"; - flatName = "which"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^2.0.2"; - checksum = "9/3728616c789b289c36ba2572887145e0736f06fe3435b8fef17e27eb5ec0696f61a21e356dd7fa58486346e57186863afa1b6c27c7665f7e674c8124f7f61157"; - bin = { - "node-which" = "./bin/node-which"; - }; - dependencies = { - "isexe" = packages."isexe@npm:2.0.0"; - }; + }; + "jest-resolve@npm:29.2.2" = { + dependencies = { + "resolve" = "resolve@patch:resolve@npm%3A1.22.1#optional!builtin::version=1.22.1&hash=07638b"; }; - "wide-align@npm:1.1.5" = { - name = "wide-align"; - reference = "npm:1.1.5"; - linkType = "HARD"; - outputName = "wide-align-1.1.5-889d77e592"; - outputHash = "39915f81cdc6cee1f54bfd7672619cc6d0bd558089f968ea7831324cd4b5ed00e78e710a64f05e5d75ed7880e45eef97295907f68d5aabb9d2899436c917b275"; - flatName = "wide-align"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^1.1.5"; - checksum = "9/39915f81cdc6cee1f54bfd7672619cc6d0bd558089f968ea7831324cd4b5ed00e78e710a64f05e5d75ed7880e45eef97295907f68d5aabb9d2899436c917b275"; - dependencies = { - "string-width" = packages."string-width@npm:4.2.3"; - }; + }; + "nan@npm:2.17.0" = { + shouldBeUnplugged = true; + outputHashByPlatform = { + "aarch64-darwin" = "sha512-vaHklwbCugGO1eXXYwW7TmwZUx06adQReESZw4KTdbNPoP0ioUIBnAjBWaWPrhxQEE/czsGxJh504Ce/+/dHyA=="; + "x86_64-linux" = "sha512-vaHklwbCugGO1eXXYwW7TmwZUx06adQReESZw4KTdbNPoP0ioUIBnAjBWaWPrhxQEE/czsGxJh504Ce/+/dHyA=="; }; - "wildcard@npm:2.0.0" = { - name = "wildcard"; - reference = "npm:2.0.0"; - linkType = "HARD"; - outputName = "wildcard-2.0.0-baedca033a"; - outputHash = "3525725c42b61460155bdb346258c59229a6c6606e6349df5878f180986174ce5218fcb1095291e6c284cdf4c03b6841c477d1fc1fadb2f1fab61fa19ce8e575"; - flatName = "wildcard"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^2.0.0"; - checksum = "9/3525725c42b61460155bdb346258c59229a6c6606e6349df5878f180986174ce5218fcb1095291e6c284cdf4c03b6841c477d1fc1fadb2f1fab61fa19ce8e575"; + }; + "node-addon-api@npm:5.0.0" = { + shouldBeUnplugged = true; + outputHashByPlatform = { + "aarch64-darwin" = "sha512-Uw8BXOHMOmRcUkY4xfrITrenvBWpuTVhA33ECB4RkI8R1USvopS9t8XRjrqUKtlQ2L9qoa5KzBbTpWtJDnQwUg=="; + "x86_64-linux" = "sha512-Uw8BXOHMOmRcUkY4xfrITrenvBWpuTVhA33ECB4RkI8R1USvopS9t8XRjrqUKtlQ2L9qoa5KzBbTpWtJDnQwUg=="; }; - "wrap-ansi@npm:7.0.0" = { - name = "wrap-ansi"; - reference = "npm:7.0.0"; - linkType = "HARD"; - outputName = "wrap-ansi-7.0.0-ad6e1a0554"; - outputHash = "b72e4a1ebd582221c3d7eae2473c7841af1fd435defe08bb3854600013ced559b10efa767b4fdc6725402ab16b79f86f73e5d4edc7cf9214e15733ee34849aa0"; - flatName = "wrap-ansi"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^7.0.0"; - checksum = "9/b72e4a1ebd582221c3d7eae2473c7841af1fd435defe08bb3854600013ced559b10efa767b4fdc6725402ab16b79f86f73e5d4edc7cf9214e15733ee34849aa0"; - dependencies = { - "ansi-styles" = packages."ansi-styles@npm:4.3.0"; - "string-width" = packages."string-width@npm:4.2.3"; - "strip-ansi" = packages."strip-ansi@npm:6.0.1"; - }; + }; + "node-gyp@npm:9.3.0" = { + shouldBeUnplugged = true; + outputHashByPlatform = { + "aarch64-darwin" = "sha512-3Ct9L1Ijy3qX2zq3Rf+lGjHMbrK8SUa2jQCdWB8RCo4pktb97WJ1JkxhJdC7tPSLlgQ2htJIH8wyKCB6bgMR6g=="; + "x86_64-linux" = "sha512-3Ct9L1Ijy3qX2zq3Rf+lGjHMbrK8SUa2jQCdWB8RCo4pktb97WJ1JkxhJdC7tPSLlgQ2htJIH8wyKCB6bgMR6g=="; }; - "wrappy@npm:1.0.2" = { - name = "wrappy"; - reference = "npm:1.0.2"; - linkType = "HARD"; - outputName = "wrappy-1.0.2-916de4d4b3"; - outputHash = "37d243a577dfeee20586eae1e3208dfb4e4cea1211a2a4116a19b50d91e619ff3dbc5ec934e28ca9baaa11a65df826c8d65c5fd1bb81f0ce0dadb469d47061c2"; - flatName = "wrappy"; - languageName = "node"; - scope = null; - descriptorRange = "npm:1"; - checksum = "9/37d243a577dfeee20586eae1e3208dfb4e4cea1211a2a4116a19b50d91e619ff3dbc5ec934e28ca9baaa11a65df826c8d65c5fd1bb81f0ce0dadb469d47061c2"; + }; + "open@patch:open@npm%3A8.4.0#.yarn/patches/open-npm-8.4.0-df63cfe537::version=8.4.0&hash=e6ee73&locator=root-workspace-0b6124%40workspace%3A." = { + shouldBeUnplugged = true; + outputHashByPlatform = { + "aarch64-darwin" = "sha512-fhLJ778B2/lZjzfKYzt1dFk4OzenM2MFEiGhy4a4fjVJM7OLL4YzBLWaS64NUtWcWa+5ULvlSOyA9KliBgPa3A=="; + "x86_64-linux" = "sha512-fhLJ778B2/lZjzfKYzt1dFk4OzenM2MFEiGhy4a4fjVJM7OLL4YzBLWaS64NUtWcWa+5ULvlSOyA9KliBgPa3A=="; }; - "write-file-atomic@npm:4.0.2" = { - name = "write-file-atomic"; - reference = "npm:4.0.2"; - linkType = "HARD"; - outputName = "write-file-atomic-4.0.2-661baae4aa"; - outputHash = "9cadd66c56a2de75ff08064561eada3d299041f73419947e036ffe1ac35baefbb087d602cf304aeb2a2333d1f2dd82657c7be8e9a9d69ee13ffffab50c2e255e"; - flatName = "write-file-atomic"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^4.0.1"; - checksum = "9/9cadd66c56a2de75ff08064561eada3d299041f73419947e036ffe1ac35baefbb087d602cf304aeb2a2333d1f2dd82657c7be8e9a9d69ee13ffffab50c2e255e"; - dependencies = { - "imurmurhash" = packages."imurmurhash@npm:0.1.4"; - "signal-exit" = packages."signal-exit@npm:3.0.7"; - }; + }; + "rechoir@npm:0.7.1" = { + dependencies = { + "resolve" = "resolve@patch:resolve@npm%3A1.22.1#optional!builtin::version=1.22.1&hash=07638b"; }; - "xtend@npm:4.0.2" = { - name = "xtend"; - reference = "npm:4.0.2"; - linkType = "HARD"; - outputName = "xtend-4.0.2-7f2375736e"; - outputHash = "3d5d245e44d76b4eaf8a357199541347da8ce522bc0573fdb89b01ff6594b33364569d1dba02ccfe3ee86b384c0d61c06fda1b0cff71f382029e2a18e2f592f7"; - flatName = "xtend"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^4.0.0"; - checksum = "9/3d5d245e44d76b4eaf8a357199541347da8ce522bc0573fdb89b01ff6594b33364569d1dba02ccfe3ee86b384c0d61c06fda1b0cff71f382029e2a18e2f592f7"; + }; + "rechoir@npm:0.8.0" = { + dependencies = { + "resolve" = "resolve@patch:resolve@npm%3A1.22.1#optional!builtin::version=1.22.1&hash=07638b"; }; - "y18n@npm:5.0.8" = { - name = "y18n"; - reference = "npm:5.0.8"; - linkType = "HARD"; - outputName = "y18n-5.0.8-5f3a0a7e62"; - outputHash = "10a6a4dcab8518b72a500520664b686bffe79d8e756af1a7eedf49fa72ab35e40f508896e0baa534f7f92e08193a6dad4283298c11ea7885e710c76b7e2bcc7a"; - flatName = "y18n"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^5.0.5"; - checksum = "9/10a6a4dcab8518b72a500520664b686bffe79d8e756af1a7eedf49fa72ab35e40f508896e0baa534f7f92e08193a6dad4283298c11ea7885e710c76b7e2bcc7a"; + }; + "sharp@npm:0.31.1" = { + shouldBeUnplugged = true; + outputHashByPlatform = { + "aarch64-darwin" = "sha512-5DMQOkRDmf0tbAgvGSEikgINATLcRm8WKkaLyp1XOurtG0LIMJUlz8mB5E2cNpFuigLIrr7LrK+mtaUL/QSxkQ=="; + "x86_64-linux" = "sha512-jirTC3XTIyBYEe1l9IgSr8S4zkkl6YvRNaqeQk1itXmbibRfk0KxziApSAmNByf+y0Z9vmMPmnJpr6OE3PODOg=="; }; - "yallist@npm:4.0.0" = { - name = "yallist"; - reference = "npm:4.0.0"; - linkType = "HARD"; - outputName = "yallist-4.0.0-b493d9e907"; - outputHash = "cd7fe32508c6942d8b979278fbe13846fe88cd6840d78043d08c6b2c74d67ce38b58bd21618dca8a4e132dcc025fc0e66a7d87ca10cf6ed338465607ebff4378"; - flatName = "yallist"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^4.0.0"; - checksum = "9/cd7fe32508c6942d8b979278fbe13846fe88cd6840d78043d08c6b2c74d67ce38b58bd21618dca8a4e132dcc025fc0e66a7d87ca10cf6ed338465607ebff4378"; + }; + "socks-proxy-agent@npm:7.0.0" = { + dependencies = { + "debug" = "debug@npm:4.3.4"; }; - "yargs-parser@npm:21.1.1" = { - name = "yargs-parser"; - reference = "npm:21.1.1"; - linkType = "HARD"; - outputName = "yargs-parser-21.1.1-8fdc003314"; - outputHash = "fc4457cf1e4d7d41e5b3a1d62e86b3934af704dd8777979a3c4c573e08eea437801444622cd68607c0266d53b90d84e8e79fd4f5ff170d1be8860064111bbad6"; - flatName = "yargs-parser"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^21.0.0"; - checksum = "9/fc4457cf1e4d7d41e5b3a1d62e86b3934af704dd8777979a3c4c573e08eea437801444622cd68607c0266d53b90d84e8e79fd4f5ff170d1be8860064111bbad6"; + }; + "styled-components@npm:5.1.0" = { + dependencies = { + "react-is" = "react-is@npm:18.2.0"; }; - "yargs@npm:17.6.0" = { - name = "yargs"; - reference = "npm:17.6.0"; - linkType = "HARD"; - outputName = "yargs-17.6.0-6343ad1a2d"; - outputHash = "f68c5da23fcce6ffa05da2735e5cbca04e0f95138167272b68193f674b206584614ef7363c6d2c6f18c04fb98c9703b0f672f8444695e6d87de34cec004924e0"; - flatName = "yargs"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^17.3.1"; - checksum = "9/f68c5da23fcce6ffa05da2735e5cbca04e0f95138167272b68193f674b206584614ef7363c6d2c6f18c04fb98c9703b0f672f8444695e6d87de34cec004924e0"; - dependencies = { - "cliui" = packages."cliui@npm:8.0.1"; - "escalade" = packages."escalade@npm:3.1.1"; - "get-caller-file" = packages."get-caller-file@npm:2.0.5"; - "require-directory" = packages."require-directory@npm:2.1.1"; - "string-width" = packages."string-width@npm:4.2.3"; - "y18n" = packages."y18n@npm:5.0.8"; - "yargs-parser" = packages."yargs-parser@npm:21.1.1"; - }; + }; + "testa@workspace:packages/testa" = { + dependencies = { + "rimraf" = "rimraf@portal:./localPackageTests/test-portal::locator=root-workspace-0b6124%40workspace%3A."; + "typescript" = "typescript@patch:typescript@npm%3A4.8.4#optional!builtin::version=4.8.4&hash=701156"; }; - "yocto-queue@npm:0.1.0" = { - name = "yocto-queue"; - reference = "npm:0.1.0"; - linkType = "HARD"; - outputName = "yocto-queue-0.1.0-c6c9a7db29"; - outputHash = "63eceacd482622afd71290541a9823a0e5eed88a6b58a5d136a5fb8151ed4d1549c80f28d74d4ad351582f9890635d49e6cf70f8d3cc64948640f839f6a37c70"; - flatName = "yocto-queue"; - languageName = "node"; - scope = null; - descriptorRange = "npm:^0.1.0"; - checksum = "9/63eceacd482622afd71290541a9823a0e5eed88a6b58a5d136a5fb8151ed4d1549c80f28d74d4ad351582f9890635d49e6cf70f8d3cc64948640f839f6a37c70"; + }; + "testb@workspace:packages/testb" = { + dependencies = { + "fsevents" = "fsevents@patch:fsevents@npm%3A2.3.2#optional!builtin::version=2.3.2&hash=18f3a7"; + "open" = "open@patch:open@npm%3A8.4.0#.yarn/patches/open-npm-8.4.0-df63cfe537::version=8.4.0&hash=e6ee73&locator=root-workspace-0b6124%40workspace%3A."; + "knex" = "knex@npm:2.3.0"; }; }; -in -packages +} diff --git a/test/workspace/yarn.lock b/test/workspace/yarn.lock index 75725d9..818ee74 100644 --- a/test/workspace/yarn.lock +++ b/test/workspace/yarn.lock @@ -15,6 +15,46 @@ __metadata: languageName: node linkType: hard +"@apollo/protobufjs@npm:^1.0.3": + version: 1.2.6 + resolution: "@apollo/protobufjs@npm:1.2.6" + dependencies: + "@protobufjs/aspromise": "npm:^1.1.2" + "@protobufjs/base64": "npm:^1.1.2" + "@protobufjs/codegen": "npm:^2.0.4" + "@protobufjs/eventemitter": "npm:^1.1.0" + "@protobufjs/fetch": "npm:^1.1.0" + "@protobufjs/float": "npm:^1.0.2" + "@protobufjs/inquire": "npm:^1.1.0" + "@protobufjs/path": "npm:^1.1.2" + "@protobufjs/pool": "npm:^1.1.0" + "@protobufjs/utf8": "npm:^1.1.0" + "@types/long": "npm:^4.0.0" + "@types/node": "npm:^10.1.0" + long: "npm:^4.0.0" + bin: + apollo-pbjs: bin/pbjs + apollo-pbts: bin/pbts + checksum: 50b2cbfdcb464cc8e1edc201f092793ad69111ebced7f2ab03a00e9b8c0f44d993657ac6ac3f5cf2b2ddc3e67841261154d0e3d28321430872b11b1f7dcbee29 + languageName: node + linkType: hard + +"@apollographql/apollo-tools@npm:^0.4.0, @apollographql/apollo-tools@npm:^0.4.3": + version: 0.4.14 + resolution: "@apollographql/apollo-tools@npm:0.4.14" + dependencies: + apollo-env: "npm:^0.9.2" + checksum: 31b570235d68008300448111c73f9a10c877ec9e6339f31582bc6481212c4aa29bc9c68d8709b3b01747a0998ff831aea314025a1324b5e4540fbd9ad0ea8a24 + languageName: node + linkType: hard + +"@apollographql/graphql-playground-html@npm:1.6.24": + version: 1.6.24 + resolution: "@apollographql/graphql-playground-html@npm:1.6.24" + checksum: b547c438a538c58ac4a3fb0f1b96a474346b7e730f0d34d1a1f7aa3d623ece9f5dfb1ccbf180d6d07827372826b0160937de06f316bfe3a373cd66502724eb71 + languageName: node + linkType: hard + "@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.18.6": version: 7.18.6 resolution: "@babel/code-frame@npm:7.18.6" @@ -65,6 +105,26 @@ __metadata: languageName: node linkType: hard +"@babel/generator@npm:^7.20.1": + version: 7.20.2 + resolution: "@babel/generator@npm:7.20.2" + dependencies: + "@babel/types": "npm:^7.20.2" + "@jridgewell/gen-mapping": "npm:^0.3.2" + jsesc: "npm:^2.5.1" + checksum: a0ef272b4074f85865e53e0c0061a8e2fbc1e57ca121a94a9838edf47300640be0ecd752beb0dcd13ba145a4c311cdfa59ea2c6d6ac28fdd9a5f1d5661bcfe4b + languageName: node + linkType: hard + +"@babel/helper-annotate-as-pure@npm:^7.16.0": + version: 7.18.6 + resolution: "@babel/helper-annotate-as-pure@npm:7.18.6" + dependencies: + "@babel/types": "npm:^7.18.6" + checksum: 1fcc8f0e9377623a19e00de620391dba3e0343d82ae2142eb7c94b10d6dbddafc201a7a84d1d9ce45ec82291b887f9d85b83d53a50850cdf1b07cee79de554b9 + languageName: node + linkType: hard + "@babel/helper-compilation-targets@npm:^7.19.3": version: 7.19.3 resolution: "@babel/helper-compilation-targets@npm:7.19.3" @@ -105,7 +165,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-module-imports@npm:^7.18.6": +"@babel/helper-module-imports@npm:^7.0.0, @babel/helper-module-imports@npm:^7.16.0, @babel/helper-module-imports@npm:^7.18.6": version: 7.18.6 resolution: "@babel/helper-module-imports@npm:7.18.6" dependencies: @@ -207,6 +267,15 @@ __metadata: languageName: node linkType: hard +"@babel/parser@npm:^7.20.1": + version: 7.20.2 + resolution: "@babel/parser@npm:7.20.2" + bin: + parser: ./bin/babel-parser.js + checksum: 9f59f8cda61a39a7a57b0dfdbb9ea10e1d5417480050f7a0285997408b8b3716c5afc64b6b3ab173eb75fe9e9d3c5bdf8c2962bad83ef0fa69e6ae57795e52c1 + languageName: node + linkType: hard + "@babel/plugin-syntax-async-generators@npm:^7.8.4": version: 7.8.4 resolution: "@babel/plugin-syntax-async-generators@npm:7.8.4" @@ -399,6 +468,24 @@ __metadata: languageName: node linkType: hard +"@babel/traverse@npm:^7.4.5": + version: 7.20.1 + resolution: "@babel/traverse@npm:7.20.1" + dependencies: + "@babel/code-frame": "npm:^7.18.6" + "@babel/generator": "npm:^7.20.1" + "@babel/helper-environment-visitor": "npm:^7.18.9" + "@babel/helper-function-name": "npm:^7.19.0" + "@babel/helper-hoist-variables": "npm:^7.18.6" + "@babel/helper-split-export-declaration": "npm:^7.18.6" + "@babel/parser": "npm:^7.20.1" + "@babel/types": "npm:^7.20.0" + debug: "npm:^4.1.0" + globals: "npm:^11.1.0" + checksum: bf0f6f6e5481188632993335e40c70794db9f80d9229316002aad3a0f002d27a5b8de69bcaec07901a670f20aba73ec2a3787d24284c2a8421b979a9f365a654 + languageName: node + linkType: hard + "@babel/types@npm:^7.0.0, @babel/types@npm:^7.18.10, @babel/types@npm:^7.18.6, @babel/types@npm:^7.19.0, @babel/types@npm:^7.19.4, @babel/types@npm:^7.3.0, @babel/types@npm:^7.3.3, @babel/types@npm:^7.8.3": version: 7.19.4 resolution: "@babel/types@npm:7.19.4" @@ -410,6 +497,17 @@ __metadata: languageName: node linkType: hard +"@babel/types@npm:^7.20.0, @babel/types@npm:^7.20.2": + version: 7.20.2 + resolution: "@babel/types@npm:7.20.2" + dependencies: + "@babel/helper-string-parser": "npm:^7.19.4" + "@babel/helper-validator-identifier": "npm:^7.19.1" + to-fast-properties: "npm:^2.0.0" + checksum: f6486668e3ba098ca4460ee833656cca392657cb985103794c2f8f890e6301b35a9286e8cc5d2a82617333eb32ea2c89d40a3a6c5eb063facdd0bc79fd2d2344 + languageName: node + linkType: hard + "@bcoe/v8-coverage@npm:^0.2.3": version: 0.2.3 resolution: "@bcoe/v8-coverage@npm:0.2.3" @@ -424,6 +522,36 @@ __metadata: languageName: node linkType: hard +"@emotion/is-prop-valid@npm:^0.8.8": + version: 0.8.8 + resolution: "@emotion/is-prop-valid@npm:0.8.8" + dependencies: + "@emotion/memoize": "npm:0.7.4" + checksum: 2709fd849da334055e4bb29724647af73209a3e7f274ff3ad24d55e244747ade89daf4526bf541837559adb271f70ad26c60d311f51c4bdcc8728e6b14eb3d18 + languageName: node + linkType: hard + +"@emotion/memoize@npm:0.7.4": + version: 0.7.4 + resolution: "@emotion/memoize@npm:0.7.4" + checksum: 6ea6add503898a3ffa90d549c7d841ba31652a37fd12c1517574d7aebcfa7735583489ff0678e28626e33c34f701cb1e9ced71dd4684cb8d43efc054f11bcaff + languageName: node + linkType: hard + +"@emotion/stylis@npm:^0.8.4": + version: 0.8.5 + resolution: "@emotion/stylis@npm:0.8.5" + checksum: 0368ecbfbe358fa2f9ed9f2b550da23a50e92661c706df744e3d586e1c3db7cb2de96cc324659b2678c17ab30d7be0c53bb54b9a6fc0326f3bdc4991edd48724 + languageName: node + linkType: hard + +"@emotion/unitless@npm:^0.7.4": + version: 0.7.5 + resolution: "@emotion/unitless@npm:0.7.5" + checksum: 7d85f5dfc8b5b394e3a0c35400ba96afb4e6160473f5e0a88d2b5eb3657b69341c65a5f4913f5a61b578ce4a210247f484b947af3f44f7ebeb6d936956652e14 + languageName: node + linkType: hard + "@esbuild/android-arm@npm:0.15.10": version: 0.15.10 resolution: "@esbuild/android-arm@npm:0.15.10" @@ -894,6 +1022,79 @@ __metadata: languageName: node linkType: hard +"@protobufjs/aspromise@npm:^1.1.1, @protobufjs/aspromise@npm:^1.1.2": + version: 1.1.2 + resolution: "@protobufjs/aspromise@npm:1.1.2" + checksum: cab3149954b2e788b21aef9ec244b639b99412b79ca75aa65d942c2f8f626d08758fe360393be6878966675498b5d61b9a68a1690a589def7f6f33b41aa5f2a2 + languageName: node + linkType: hard + +"@protobufjs/base64@npm:^1.1.2": + version: 1.1.2 + resolution: "@protobufjs/base64@npm:1.1.2" + checksum: 493645603791ad44f67f4943204e65350f85eb52a255ddc5d523359f78dbcfd25ca81b4582701ac5b4f38ba5a948cc06dfbce0a8b6ca932f04b80b02c8e6b25f + languageName: node + linkType: hard + +"@protobufjs/codegen@npm:^2.0.4": + version: 2.0.4 + resolution: "@protobufjs/codegen@npm:2.0.4" + checksum: c865ce94fc36a6b0a5306df26172b4cbc1d492cdddf37220a09aaec0a164bc2a4e1fecff6bc9ac60342dcad868403ba6814bcb0aecf57c730499123e818898f5 + languageName: node + linkType: hard + +"@protobufjs/eventemitter@npm:^1.1.0": + version: 1.1.0 + resolution: "@protobufjs/eventemitter@npm:1.1.0" + checksum: afdb637b90482e453815b15bc4b62f817d9faa517ffd9a556cd61998953f7df566afdefd37ebfb66da034bb77f2debdfdfe97ddca311769a52f43845216f80f3 + languageName: node + linkType: hard + +"@protobufjs/fetch@npm:^1.1.0": + version: 1.1.0 + resolution: "@protobufjs/fetch@npm:1.1.0" + dependencies: + "@protobufjs/aspromise": "npm:^1.1.1" + "@protobufjs/inquire": "npm:^1.1.0" + checksum: 94e99ae347dc3906106600e74da3f29f1dd192132c9693b6aba4a9705eef4d27111727d0020a9b90bd4d87980b211a64bf0c30862ce3a916858033184ccd604a + languageName: node + linkType: hard + +"@protobufjs/float@npm:^1.0.2": + version: 1.0.2 + resolution: "@protobufjs/float@npm:1.0.2" + checksum: 760cc9bc24c18c7f7fe37f83f108d2daf42e4f9ac6a8e6c0a8b0d95eaa9618c74e6d9c2706eba5d28bd7baf3206fe34c19c4f2f094069c643f4a68e82024dddb + languageName: node + linkType: hard + +"@protobufjs/inquire@npm:^1.1.0": + version: 1.1.0 + resolution: "@protobufjs/inquire@npm:1.1.0" + checksum: 619e7c31f972458bec6511ddaa987f47014b847788e6a3f2dc8af0978ebdf0df52536bc0efa4406d7764b6f7e05979289e0882e027a881f0a4ffb33211ea888d + languageName: node + linkType: hard + +"@protobufjs/path@npm:^1.1.2": + version: 1.1.2 + resolution: "@protobufjs/path@npm:1.1.2" + checksum: 85960f22ef76d802d3b1102bd0d14a2ee6b61e96e16e7e129f846a71fd5975c684993b4743e7f1cc7246b6bf287b0abff9425331104dac696eac6b8b75e62920 + languageName: node + linkType: hard + +"@protobufjs/pool@npm:^1.1.0": + version: 1.1.0 + resolution: "@protobufjs/pool@npm:1.1.0" + checksum: 8ceda1b6ab3ba81accc0f9781f4f2182441ad00d35020b13814cf1045c2482b0e002be5aaacabaccb15f15454900e4739771079e40f81011b829aa4d1103b5da + languageName: node + linkType: hard + +"@protobufjs/utf8@npm:^1.1.0": + version: 1.1.0 + resolution: "@protobufjs/utf8@npm:1.1.0" + checksum: a9dd3eca80967bab9175c860b87e4e2fd2cc867460df5431fc47898f5b817e6a88f670e5f58655c3753bccde25bcd77ec18f0a433b6dee8e4b50711707b2f7c1 + languageName: node + linkType: hard + "@redux-saga/deferred@npm:^1.1.2": version: 1.2.1 resolution: "@redux-saga/deferred@npm:1.2.1" @@ -975,6 +1176,15 @@ __metadata: languageName: node linkType: hard +"@types/accepts@npm:*": + version: 1.3.5 + resolution: "@types/accepts@npm:1.3.5" + dependencies: + "@types/node": "npm:*" + checksum: bd73038e67338b932c446142dda208ccef80c01e5c2a57481d8b8345772a10e3b7fb776bdcc862df41c8da82e532dd732909792042eaaa279d3204777f034fc2 + languageName: node + linkType: hard + "@types/babel__core@npm:^7.1.14": version: 7.1.19 resolution: "@types/babel__core@npm:7.1.19" @@ -1016,6 +1226,44 @@ __metadata: languageName: node linkType: hard +"@types/body-parser@npm:*": + version: 1.19.2 + resolution: "@types/body-parser@npm:1.19.2" + dependencies: + "@types/connect": "npm:*" + "@types/node": "npm:*" + checksum: 839e71535a3085c49da7c4d64ab98b35056c3d7ae069b06f4731c0980d738267a2c46ba5ffba0702aece8c61a877272f9a20d89929000fead4aac5098793d0fb + languageName: node + linkType: hard + +"@types/connect@npm:*": + version: 3.4.35 + resolution: "@types/connect@npm:3.4.35" + dependencies: + "@types/node": "npm:*" + checksum: 1fffce36ab2abf23023d8bb0f5c35c481cb97d116e6a1b206668be9dd57ffa9ae705256d232461fe05c6007c03a0fb7f1600256643ccc08b62d6f67214b1bb75 + languageName: node + linkType: hard + +"@types/content-disposition@npm:*": + version: 0.5.5 + resolution: "@types/content-disposition@npm:0.5.5" + checksum: f5f47cf594616f34864bc775ea6131266b87e22db91b4ff77ab69156f265d7262e195a0d82948cb5ea632905321a0082a451d687c3a02a378f7082e2f21392ec + languageName: node + linkType: hard + +"@types/cookies@npm:*": + version: 0.7.7 + resolution: "@types/cookies@npm:0.7.7" + dependencies: + "@types/connect": "npm:*" + "@types/express": "npm:*" + "@types/keygrip": "npm:*" + "@types/node": "npm:*" + checksum: fd0a701d46d58a544afc2a8f17369e2589dd944163fcb63750a250cb6a2fb320b29344e7cc645228561ca3754d1aeedabd4cbed9a9c5e14f8ebb2ef65e580ab8 + languageName: node + linkType: hard + "@types/eslint-scope@npm:^3.7.3": version: 3.7.4 resolution: "@types/eslint-scope@npm:3.7.4" @@ -1050,6 +1298,29 @@ __metadata: languageName: node linkType: hard +"@types/express-serve-static-core@npm:^4.17.18": + version: 4.17.31 + resolution: "@types/express-serve-static-core@npm:4.17.31" + dependencies: + "@types/node": "npm:*" + "@types/qs": "npm:*" + "@types/range-parser": "npm:*" + checksum: 88c17414b7d6d41b705463c002565a694d8f05f1417c3ba2e7523d9dcda4e2c591b8f56e480e144efaf43f6aad98446745a0c3b84174e498577763fe58ac5423 + languageName: node + linkType: hard + +"@types/express@npm:*": + version: 4.17.14 + resolution: "@types/express@npm:4.17.14" + dependencies: + "@types/body-parser": "npm:*" + "@types/express-serve-static-core": "npm:^4.17.18" + "@types/qs": "npm:*" + "@types/serve-static": "npm:*" + checksum: 7e2d23081f1aa8d8e4218fba4e305f2a52e221a99340ecc4694482cd2878cbb344deae1b8899e7682a05cf95c9a130e97534bf0e22d983c45d25a8788351803d + languageName: node + linkType: hard + "@types/graceful-fs@npm:^4.1.3": version: 4.1.5 resolution: "@types/graceful-fs@npm:4.1.5" @@ -1059,6 +1330,32 @@ __metadata: languageName: node linkType: hard +"@types/graphql-upload@npm:^8.0.0": + version: 8.0.12 + resolution: "@types/graphql-upload@npm:8.0.12" + dependencies: + "@types/express": "npm:*" + "@types/koa": "npm:*" + fs-capacitor: "npm:^8.0.0" + graphql: "npm:0.13.1 - 16" + checksum: 8e3866823f5a465b532aa0833e90fec043a1089de3a3ae87a3f3fe6e0fb4b81e651c9d2b35e5f54b11579d823cb1109affc9a01e52ea5aeb73f676bbc62e5c9d + languageName: node + linkType: hard + +"@types/http-assert@npm:*": + version: 1.5.3 + resolution: "@types/http-assert@npm:1.5.3" + checksum: e87d21da4f4cafe11df34d434758d5a0f71c891ece60e2c17f27cfb928c06141f482594ae4875385fd209e377cb298a1f734ed9c64d76fd50b0f8579b0773cc3 + languageName: node + linkType: hard + +"@types/http-errors@npm:*": + version: 2.0.1 + resolution: "@types/http-errors@npm:2.0.1" + checksum: c732c5fefddd5caaee7b41d7e233a5a1e5e837ae0f1af2402f67f7c2fc754e85359cc27fd14412147ccf4d27bb3cc09f5be3bea38c8d03968f60cb56bb8fc274 + languageName: node + linkType: hard + "@types/istanbul-lib-coverage@npm:*, @types/istanbul-lib-coverage@npm:^2.0.0, @types/istanbul-lib-coverage@npm:^2.0.1": version: 2.0.4 resolution: "@types/istanbul-lib-coverage@npm:2.0.4" @@ -1091,6 +1388,72 @@ __metadata: languageName: node linkType: hard +"@types/keygrip@npm:*": + version: 1.0.2 + resolution: "@types/keygrip@npm:1.0.2" + checksum: 8eb35ccb784bc22ed2a36b355f8a32ced4233008a915ab56b97cc0191aaee445fe819be0cda65a11cd50030bc708108d3f4144626f11808a0bf040107b899c99 + languageName: node + linkType: hard + +"@types/koa-compose@npm:*": + version: 3.2.5 + resolution: "@types/koa-compose@npm:3.2.5" + dependencies: + "@types/koa": "npm:*" + checksum: 7956906d1958809b8a5e594d20f8a94e7ad92d7fe921c53d51998098a07c723c9cc1675d42576de2b74b2d6ef75f81fe7fb1312c9caac35d6259fabcc01a549b + languageName: node + linkType: hard + +"@types/koa@npm:*": + version: 2.13.5 + resolution: "@types/koa@npm:2.13.5" + dependencies: + "@types/accepts": "npm:*" + "@types/content-disposition": "npm:*" + "@types/cookies": "npm:*" + "@types/http-assert": "npm:*" + "@types/http-errors": "npm:*" + "@types/keygrip": "npm:*" + "@types/koa-compose": "npm:*" + "@types/node": "npm:*" + checksum: 6d1b839adac4221296250e14cdb6743da0608d6b83931fda6fc3d9f253a739dbb92fc1416a5d29e7f89447806bfbeb22a96b45db3515d46a7788509edae69445 + languageName: node + linkType: hard + +"@types/long@npm:^4.0.0": + version: 4.0.2 + resolution: "@types/long@npm:4.0.2" + checksum: b6e4c16ca43a11f229cf2d54697404e791f48ac9107fb1052b8dec92e730f54ebfe6773d68fe7d27531d9b75de1aafce0fbac206cea0ef13bb1b97f5436d90cf + languageName: node + linkType: hard + +"@types/mime@npm:*": + version: 3.0.1 + resolution: "@types/mime@npm:3.0.1" + checksum: dafaa1822136dac7e7e1356b3a3876d7e4ee33c200ac9097eee74365680f917e3fefd2e08453ddb29d727bae357fb86d29de05d851cdad9064228316fa29c0c2 + languageName: node + linkType: hard + +"@types/node-fetch@npm:2.5.10": + version: 2.5.10 + resolution: "@types/node-fetch@npm:2.5.10" + dependencies: + "@types/node": "npm:*" + form-data: "npm:^3.0.0" + checksum: 287177544a8a1bcf262ead61b2907aa9e24ec52e8c4d985f9f890d75f14663f42702bb3034a6f1079e6f68c15c74725ab7d69e60bfb2ba9d6635dabf89e79cc0 + languageName: node + linkType: hard + +"@types/node-fetch@npm:2.5.7": + version: 2.5.7 + resolution: "@types/node-fetch@npm:2.5.7" + dependencies: + "@types/node": "npm:*" + form-data: "npm:^3.0.0" + checksum: 8aaba20b7d66e5bd02b81588beba7e072bdbd0dc158e1158c0e6bb674ef85d137ba8e46d005aa4bfa1ea17ff61d5808d57df8f3f33042b2cb87c1827eb473194 + languageName: node + linkType: hard + "@types/node@npm:*": version: 18.11.5 resolution: "@types/node@npm:18.11.5" @@ -1098,6 +1461,20 @@ __metadata: languageName: node linkType: hard +"@types/node@npm:^10.1.0": + version: 10.17.60 + resolution: "@types/node@npm:10.17.60" + checksum: 40a5535f8a2d839799b41557a170a334415bab485ee73dd30534eefad9a63254d12d2faf61ce7cbce2521d736ed0570e18f75d780daad2129d6ca21e8d1811ef + languageName: node + linkType: hard + +"@types/node@npm:^18.11.9": + version: 18.11.9 + resolution: "@types/node@npm:18.11.9" + checksum: 7b7d90894dd1ae9b6836e49ace5bdea55cc08806a508e38851e333f1ad77ec81ea6dca58e6a2444ad0471fee965b9908cc1ef06028eebca9c20d54729df98bab + languageName: node + linkType: hard + "@types/prettier@npm:^2.1.5": version: 2.7.1 resolution: "@types/prettier@npm:2.7.1" @@ -1105,6 +1482,30 @@ __metadata: languageName: node linkType: hard +"@types/qs@npm:*": + version: 6.9.7 + resolution: "@types/qs@npm:6.9.7" + checksum: 6ad8b468d122ef64878bef150efb428532cc8768ec66fac61b9abb1ff0f30520d86138290e753d5f179e6fd01ba3a51c56e2e0a7a6e40b5d1cfd8b701f70367d + languageName: node + linkType: hard + +"@types/range-parser@npm:*": + version: 1.2.4 + resolution: "@types/range-parser@npm:1.2.4" + checksum: 0ceeddc63c66d2e632c93ed6fdea6e7fcc20a3a2a6fc84043a9700259fe4d50002b21c9cf99c58b3960bb2bd541b8f8bec255ae35025f99e8ca92be7d341e60e + languageName: node + linkType: hard + +"@types/serve-static@npm:*": + version: 1.15.0 + resolution: "@types/serve-static@npm:1.15.0" + dependencies: + "@types/mime": "npm:*" + "@types/node": "npm:*" + checksum: 7db8fd127cfdfdb161922fb9a6fcb2022418755c375ae8550b8d53a4fcd686af1b71fb35c81c4e223a16b74bbfadfc810de06172eef7ee3394d94294fc3536f1 + languageName: node + linkType: hard + "@types/stack-utils@npm:^2.0.0": version: 2.0.1 resolution: "@types/stack-utils@npm:2.0.1" @@ -1112,6 +1513,15 @@ __metadata: languageName: node linkType: hard +"@types/ws@npm:^6.0.0": + version: 6.0.4 + resolution: "@types/ws@npm:6.0.4" + dependencies: + "@types/node": "npm:*" + checksum: b3bc24472c51c9c4101585476f61464942d8f66094473783f7a275e50f1e951d9fb917dcdee7a0b93b2bc726a0d37dc06beea76adb53b07da302bc80942b703a + languageName: node + linkType: hard + "@types/yargs-parser@npm:*": version: 21.0.0 resolution: "@types/yargs-parser@npm:21.0.0" @@ -1312,6 +1722,15 @@ __metadata: languageName: node linkType: hard +"@wry/equality@npm:^0.1.2": + version: 0.1.11 + resolution: "@wry/equality@npm:0.1.11" + dependencies: + tslib: "npm:^1.9.3" + checksum: a03f821d12b7d7a166f87606ebc11a379efea2f4ffb680b5272cee291cf31b6d0c6737ad575e4357e6a98834718b2464dd89ee8b599b0551ce55f8c3f09d82a9 + languageName: node + linkType: hard + "@xtuc/ieee754@npm:^1.2.0": version: 1.2.0 resolution: "@xtuc/ieee754@npm:1.2.0" @@ -1453,6 +1872,268 @@ __metadata: languageName: node linkType: hard +"apollo-cache-control@npm:^0.8.9": + version: 0.8.11 + resolution: "apollo-cache-control@npm:0.8.11" + dependencies: + apollo-server-env: "npm:^2.4.3" + graphql-extensions: "npm:^0.10.10" + peerDependencies: + graphql: ^0.12.0 || ^0.13.0 || ^14.0.0 + checksum: 993b61656980c6966122d77293bba2edeabb2f62a32394a84d0a0683ca4312c97a6187cc018c99521ee788d4a5457f60d041152fa55a185fef42178a81d56c9d + languageName: node + linkType: hard + +"apollo-datasource@npm:^0.6.3": + version: 0.6.4 + resolution: "apollo-datasource@npm:0.6.4" + dependencies: + apollo-server-caching: "npm:^0.5.1" + apollo-server-env: "npm:^2.4.3" + checksum: b8b7dbfbc9139e0d73c7c4f703a50de9bf9e256a202518f55cc6b5fdf85298cb135ea5f1ed414d016d0f17b3a6b18529ef0b17d5c2661aa697425292b3a87b79 + languageName: node + linkType: hard + +"apollo-engine-reporting-protobuf@npm:^0.4.4": + version: 0.4.4 + resolution: "apollo-engine-reporting-protobuf@npm:0.4.4" + dependencies: + "@apollo/protobufjs": "npm:^1.0.3" + checksum: 2cdccb008856eba6be5a90f319adc023e387e71d15794aa0c31287ab22cf3348f1ef8b2d889badf0bc27c4a090a886ddf9709fb00e75329caf4f993aa7357a3b + languageName: node + linkType: hard + +"apollo-engine-reporting-protobuf@npm:^0.5.0": + version: 0.5.2 + resolution: "apollo-engine-reporting-protobuf@npm:0.5.2" + dependencies: + "@apollo/protobufjs": "npm:^1.0.3" + checksum: 3a776aaba023fa58c3da629b0a60eaf64abe49dac3073b9c4491b02a2078eb206c569e8039120d8749460ba088cf06e6216ac852e653ed85cca232779c29a792 + languageName: node + linkType: hard + +"apollo-engine-reporting@npm:^1.4.12": + version: 1.8.0 + resolution: "apollo-engine-reporting@npm:1.8.0" + dependencies: + apollo-engine-reporting-protobuf: "npm:^0.5.0" + apollo-graphql: "npm:^0.4.0" + apollo-server-caching: "npm:^0.5.1" + apollo-server-env: "npm:^2.4.3" + apollo-server-errors: "npm:^2.4.1" + apollo-server-types: "npm:^0.4.0" + async-retry: "npm:^1.2.1" + graphql-extensions: "npm:^0.12.0" + peerDependencies: + graphql: ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 + checksum: e1e498ce1bd19dc918f39de1346b876239b2bd82842d25528b620cb7504aeecd0b1037106ad0d095dd182b2a3ed9173b5f6264992a6196a8c6c18761337089d4 + languageName: node + linkType: hard + +"apollo-env@npm:^0.6.5": + version: 0.6.6 + resolution: "apollo-env@npm:0.6.6" + dependencies: + "@types/node-fetch": "npm:2.5.7" + core-js: "npm:^3.0.1" + node-fetch: "npm:^2.2.0" + sha.js: "npm:^2.4.11" + checksum: cf1a95cb08a8f1bbfd74f64c1ce9eb6f4e5fc7cbb41706c9405b2f30e57b06a12db8ea6c406aae8fbfb192e38065d3ee1245e237ba6736f75e71905779a0aa06 + languageName: node + linkType: hard + +"apollo-env@npm:^0.9.2": + version: 0.9.2 + resolution: "apollo-env@npm:0.9.2" + dependencies: + "@types/node-fetch": "npm:2.5.10" + core-js: "npm:^3.0.1" + node-fetch: "npm:^2.2.0" + sha.js: "npm:^2.4.11" + checksum: 06dbc785755e8dfc43a94513b27ec73feb880825cc39c3c3439c260a4e4873467c7804bebc21661b4c912387aa6b209f7f13a32c12345eb9410dd41ed057ba58 + languageName: node + linkType: hard + +"apollo-graphql@npm:^0.4.0": + version: 0.4.5 + resolution: "apollo-graphql@npm:0.4.5" + dependencies: + apollo-env: "npm:^0.6.5" + lodash.sortby: "npm:^4.7.0" + peerDependencies: + graphql: ^14.2.1 + checksum: 64d48161b9c79c3eefa95f5f1c08cc945e14315350780d4b39a7902677667cd8390e532bdcfdf02a9e673309b413d6418146657f1bbe72f20be085fb6e219de9 + languageName: node + linkType: hard + +"apollo-link@npm:^1.2.14": + version: 1.2.14 + resolution: "apollo-link@npm:1.2.14" + dependencies: + apollo-utilities: "npm:^1.3.0" + ts-invariant: "npm:^0.4.0" + tslib: "npm:^1.9.3" + zen-observable-ts: "npm:^0.8.21" + peerDependencies: + graphql: ^0.11.3 || ^0.12.3 || ^0.13.0 || ^14.0.0 || ^15.0.0 + checksum: 171f2d8f24020993c2be1c390171af55afb660eee9fd8e13b2082c05f010ca32558e21c4727bbf1377ef0616c906f45feba3e2ef263b23adec2b23a079f91e04 + languageName: node + linkType: hard + +"apollo-reporting-protobuf@npm:^0.6.2": + version: 0.6.2 + resolution: "apollo-reporting-protobuf@npm:0.6.2" + dependencies: + "@apollo/protobufjs": "npm:^1.0.3" + checksum: ca0e1cca62ac85af413c00a803be71d11874b827ac269cb4d5e1956c07740d5490cf4f9b04415b013d66b9dfbee70f8acb63f697f8aa39bc153fcb3ed94c4ac4 + languageName: node + linkType: hard + +"apollo-server-caching@npm:^0.5.0, apollo-server-caching@npm:^0.5.1, apollo-server-caching@npm:^0.5.3": + version: 0.5.3 + resolution: "apollo-server-caching@npm:0.5.3" + dependencies: + lru-cache: "npm:^6.0.0" + checksum: c0c0bd3cde28d86f189288efe2cff4764893fd5c53658156fd43823a3895e7f51cd4044f67fade68fef70bc2f581de1abed6d2bf870e5bbb061c4f8e51cadacf + languageName: node + linkType: hard + +"apollo-server-core@npm:2.9.14": + version: 2.9.14 + resolution: "apollo-server-core@npm:2.9.14" + dependencies: + "@apollographql/apollo-tools": "npm:^0.4.0" + "@apollographql/graphql-playground-html": "npm:1.6.24" + "@types/graphql-upload": "npm:^8.0.0" + "@types/ws": "npm:^6.0.0" + apollo-cache-control: "npm:^0.8.9" + apollo-datasource: "npm:^0.6.3" + apollo-engine-reporting: "npm:^1.4.12" + apollo-server-caching: "npm:^0.5.0" + apollo-server-env: "npm:^2.4.3" + apollo-server-errors: "npm:^2.3.4" + apollo-server-plugin-base: "npm:^0.6.9" + apollo-server-types: "npm:^0.2.9" + apollo-tracing: "npm:^0.8.9" + fast-json-stable-stringify: "npm:^2.0.0" + graphql-extensions: "npm:^0.10.8" + graphql-tag: "npm:^2.9.2" + graphql-tools: "npm:^4.0.0" + graphql-upload: "npm:^8.0.2" + sha.js: "npm:^2.4.11" + subscriptions-transport-ws: "npm:^0.9.11" + ws: "npm:^6.0.0" + peerDependencies: + graphql: ^0.12.0 || ^0.13.0 || ^14.0.0 + checksum: 926310af0ab8fc9f1e912aa00c362417b00e6bf44fd9e6931bfc7d922d43482a31f722d5e350a38e7131465384e9fc50182e9a5245ca5e536203389c16b2ca15 + languageName: node + linkType: hard + +"apollo-server-env@npm:^2.4.3": + version: 2.4.5 + resolution: "apollo-server-env@npm:2.4.5" + dependencies: + node-fetch: "npm:^2.1.2" + util.promisify: "npm:^1.0.0" + checksum: 8a629f6e7a7dfa3049421952e26ccfbd6fd69cce6a271315cd60fe2f69b94cd700b8beea46e759aa6dc799bbb77d80de3f0aa23f3fb65c33c7ca63fd268b5139 + languageName: node + linkType: hard + +"apollo-server-env@npm:^3.0.0": + version: 3.2.0 + resolution: "apollo-server-env@npm:3.2.0" + dependencies: + node-fetch: "npm:^2.6.1" + util.promisify: "npm:^1.0.0" + checksum: 9afd58249ea191f17991fdf4c660ea488ca19a402a53a538011591b6bc7314b0a8c289f33f5b9a48065a9e9d2f23c09679aea39e8b625e6b931d92e0e9d3d586 + languageName: node + linkType: hard + +"apollo-server-errors@npm:^2.3.4, apollo-server-errors@npm:^2.4.1": + version: 2.5.0 + resolution: "apollo-server-errors@npm:2.5.0" + peerDependencies: + graphql: ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 + checksum: b9002c5e9ef9ccdfd8dbd69fa3d4d883dd5167a6f608b9aa53547f5f1cfe46423a48da8f02ea423e34bf05344ca1292c69d3ce59e13263ce7eff6b37b96ba47b + languageName: node + linkType: hard + +"apollo-server-plugin-base@npm:^0.6.9": + version: 0.6.10 + resolution: "apollo-server-plugin-base@npm:0.6.10" + dependencies: + apollo-server-types: "npm:^0.2.10" + peerDependencies: + graphql: ^0.12.0 || ^0.13.0 || ^14.0.0 + checksum: 5b3d1ae227554b06ccded7bb30e03cd28731d24c34386664a157e1db64768e0d245851e905a2829f465eecc47be8c8f01877f383ef5d104d6f2c0bb68cf0c3d7 + languageName: node + linkType: hard + +"apollo-server-types@npm:^0.2.10, apollo-server-types@npm:^0.2.9": + version: 0.2.10 + resolution: "apollo-server-types@npm:0.2.10" + dependencies: + apollo-engine-reporting-protobuf: "npm:^0.4.4" + apollo-server-caching: "npm:^0.5.1" + apollo-server-env: "npm:^2.4.3" + peerDependencies: + graphql: ^0.12.0 || ^0.13.0 || ^14.0.0 + checksum: 330d81268b72dc433c94e92191b7a382e634521e1d559af64251ab9ddf415810ad4691dc7aa835766b9bcc096bb2440ce9e11809af6281c7ea3905ad807803db + languageName: node + linkType: hard + +"apollo-server-types@npm:^0.4.0": + version: 0.4.0 + resolution: "apollo-server-types@npm:0.4.0" + dependencies: + apollo-engine-reporting-protobuf: "npm:^0.5.0" + apollo-server-caching: "npm:^0.5.1" + apollo-server-env: "npm:^2.4.3" + peerDependencies: + graphql: ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 + checksum: 2fc2eae5fb104d10c7b2dd54c28bf064226568b049707187267a2494441a318f89aaf033ac0d835b2d1ef6378b41e352e4a8ce6d5502f0f0890af744d0b67159 + languageName: node + linkType: hard + +"apollo-server-types@npm:^0.6.3": + version: 0.6.3 + resolution: "apollo-server-types@npm:0.6.3" + dependencies: + apollo-reporting-protobuf: "npm:^0.6.2" + apollo-server-caching: "npm:^0.5.3" + apollo-server-env: "npm:^3.0.0" + peerDependencies: + graphql: ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 + checksum: efd2fb1f1156ad7d86dc2b077d8700d1283b3efcbdfe42d88cf986a20e3a6897eda78576d63c3fc880abdb7abb83da79dd6532721895f0a2f26f370bd41bee45 + languageName: node + linkType: hard + +"apollo-tracing@npm:^0.8.9": + version: 0.8.11 + resolution: "apollo-tracing@npm:0.8.11" + dependencies: + apollo-server-env: "npm:^2.4.3" + graphql-extensions: "npm:^0.10.10" + peerDependencies: + graphql: ^0.12.0 || ^0.13.0 || ^14.0.0 + checksum: 8db3e566eef3b8f7719486c4799c5492f99700968a65485863196d6212115fb30cf59b59fbdfe37951eb6dc3e2a3ba31e3c8951a426cff1e5b27d16d852e079d + languageName: node + linkType: hard + +"apollo-utilities@npm:^1.0.1, apollo-utilities@npm:^1.3.0": + version: 1.3.4 + resolution: "apollo-utilities@npm:1.3.4" + dependencies: + "@wry/equality": "npm:^0.1.2" + fast-json-stable-stringify: "npm:^2.0.0" + ts-invariant: "npm:^0.4.0" + tslib: "npm:^1.10.0" + peerDependencies: + graphql: ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 + checksum: aac88c78764d2eff021f67e416354968852295d74884cb39b77d2ae4b5861e18972086095ddb0c51572bd1ad6d359183e3a7b45cc38761670cbf9da4a704a21c + languageName: node + linkType: hard + "aproba@npm:^1.0.3 || ^2.0.0": version: 2.0.0 resolution: "aproba@npm:2.0.0" @@ -1489,6 +2170,19 @@ __metadata: languageName: node linkType: hard +"array.prototype.reduce@npm:^1.0.4": + version: 1.0.5 + resolution: "array.prototype.reduce@npm:1.0.5" + dependencies: + call-bind: "npm:^1.0.2" + define-properties: "npm:^1.1.4" + es-abstract: "npm:^1.20.4" + es-array-method-boxes-properly: "npm:^1.0.0" + is-string: "npm:^1.0.7" + checksum: cd89d328d3c716b62cc6ad9c4ff78b29ca836cb2f5ead8c39224f60e09155ff1aee6ce3e1b24e7923845905295ed38965a139af5d9573e37df70e71b469b2b67 + languageName: node + linkType: hard + "assertion-error@npm:^1.1.0": version: 1.1.0 resolution: "assertion-error@npm:1.1.0" @@ -1496,6 +2190,29 @@ __metadata: languageName: node linkType: hard +"async-limiter@npm:~1.0.0": + version: 1.0.1 + resolution: "async-limiter@npm:1.0.1" + checksum: 6e4c39e263e9f424cbfa599051ac53c0dd5f784c70e42845f47d22e4f66d44d6a26a083ef950cbdf06c3564bb0b52690ed3820b10dab63e226cc27dd28db961a + languageName: node + linkType: hard + +"async-retry@npm:^1.2.1": + version: 1.3.3 + resolution: "async-retry@npm:1.3.3" + dependencies: + retry: "npm:0.13.1" + checksum: 386075c0d73135a742de0f95e5bcb9aa051d51b578066d8e105bc6a6e36c566071b14114637a369e172f6207b429c706b16c7f39b4240af71edc29ce0339abcf + languageName: node + linkType: hard + +"asynckit@npm:^0.4.0": + version: 0.4.0 + resolution: "asynckit@npm:0.4.0" + checksum: e4d1381289f9effe69a4dbc18e8b4e2059113dfb23634d0f4064226042870dbc53175fbf261f982d055fa2952163a8b7608781ea58314a17bb6a2cd6815af4f1 + languageName: node + linkType: hard + "babel-jest@npm:^29.2.2": version: 29.2.2 resolution: "babel-jest@npm:29.2.2" @@ -1538,6 +2255,28 @@ __metadata: languageName: node linkType: hard +"babel-plugin-styled-components@npm:>= 1": + version: 2.0.7 + resolution: "babel-plugin-styled-components@npm:2.0.7" + dependencies: + "@babel/helper-annotate-as-pure": "npm:^7.16.0" + "@babel/helper-module-imports": "npm:^7.16.0" + babel-plugin-syntax-jsx: "npm:^6.18.0" + lodash: "npm:^4.17.11" + picomatch: "npm:^2.3.0" + peerDependencies: + styled-components: ">= 2" + checksum: d18be8e9050d64c83408d980b3e46a75ba406a85321567c9253ec2fc755b7d9ba6e04c2c3d555b68b7aeb8a947cf235e36904ad6aca08617332c0fd38bea2fff + languageName: node + linkType: hard + +"babel-plugin-syntax-jsx@npm:^6.18.0": + version: 6.18.0 + resolution: "babel-plugin-syntax-jsx@npm:6.18.0" + checksum: dd37d9280c365776040a84b8191e3d39cb3e916d34e05af7065d5df921422cbf56a143dac97a5e2e98c08e7b979f453d126fe58433ac8fdec0e1dd79f47b4b08 + languageName: node + linkType: hard + "babel-preset-current-node-syntax@npm:^1.0.0": version: 1.0.1 resolution: "babel-preset-current-node-syntax@npm:1.0.1" @@ -1572,6 +2311,13 @@ __metadata: languageName: node linkType: hard +"backo2@npm:^1.0.2": + version: 1.0.2 + resolution: "backo2@npm:1.0.2" + checksum: 8932a377a3f68c628ac26048074f8bb16389b9400ef6399f64aa6cf74063dbe5441cc08b87fc79f4fda7db7d55b7691377557d4278c8cfcdd39a52416a5270b2 + languageName: node + linkType: hard + "balanced-match@npm:^1.0.0": version: 1.0.2 resolution: "balanced-match@npm:1.0.2" @@ -1672,6 +2418,15 @@ __metadata: languageName: node linkType: hard +"busboy@npm:^0.3.1": + version: 0.3.1 + resolution: "busboy@npm:0.3.1" + dependencies: + dicer: "npm:0.3.0" + checksum: 3bbccc37711a55eacf3c537cf6c34ce752f99719554931abd89171190ef5991a58d4ce9c2b400a98ce2a2e69557cac41dfad8523b50866c1c5b0d7cf9dfaf7ac + languageName: node + linkType: hard + "cacache@npm:^16.1.0": version: 16.1.3 resolution: "cacache@npm:16.1.3" @@ -1698,6 +2453,16 @@ __metadata: languageName: node linkType: hard +"call-bind@npm:^1.0.0, call-bind@npm:^1.0.2": + version: 1.0.2 + resolution: "call-bind@npm:1.0.2" + dependencies: + function-bind: "npm:^1.1.1" + get-intrinsic: "npm:^1.0.2" + checksum: 6fccea8a00310bf2e2b2a07aca0eddbdcd5de2eec9dfe880c1c8b0b7fd3c6809bf28aab0209aa530a35a2fba48587733521df7f83f8d5354047afed78b69a36b + languageName: node + linkType: hard + "callsites@npm:^3.0.0": version: 3.1.0 resolution: "callsites@npm:3.1.0" @@ -1719,6 +2484,13 @@ __metadata: languageName: node linkType: hard +"camelize@npm:^1.0.0": + version: 1.0.1 + resolution: "camelize@npm:1.0.1" + checksum: 358df2a4ab72e6c24b55da656c7ccd3a3ade787ab53d381a65b2dcac15436c6082bd278a0477cb21f1bd273927733fd25f049d0b52d3cc68e8c606e77297996c + languageName: node + linkType: hard + "caniuse-lite@npm:^1.0.30001400": version: 1.0.30001425 resolution: "caniuse-lite@npm:1.0.30001425" @@ -1941,6 +2713,15 @@ __metadata: languageName: node linkType: hard +"combined-stream@npm:^1.0.8": + version: 1.0.8 + resolution: "combined-stream@npm:1.0.8" + dependencies: + delayed-stream: "npm:~1.0.0" + checksum: c3224efc798a4f2066ff2f65c28d60b48ec73b38bf76331ecc61814875cc5c8a93beccc268ca08aaa98a141c262de5787d68685b6682b8b67ad2dadb8bd2ddd2 + languageName: node + linkType: hard + "commander@npm:^2.20.0": version: 2.20.3 resolution: "commander@npm:2.20.3" @@ -1983,6 +2764,13 @@ __metadata: languageName: node linkType: hard +"core-js@npm:^3.0.1": + version: 3.26.0 + resolution: "core-js@npm:3.26.0" + checksum: 278fc094e41297be20d0171d7279d4445cd9b729692239dba3e3d921d49f5050c45040517d4c8fef8291c16d0c85441daacde82acdaaea1bf19a2e1941eedd0a + languageName: node + linkType: hard + "cross-spawn@npm:^7.0.3": version: 7.0.3 resolution: "cross-spawn@npm:7.0.3" @@ -1994,6 +2782,24 @@ __metadata: languageName: node linkType: hard +"css-color-keywords@npm:^1.0.0": + version: 1.0.0 + resolution: "css-color-keywords@npm:1.0.0" + checksum: f82ad50222db625376d7764278e5fda43c58be64568d739c05e1406b4c74dfa376bb0bbee273cc39e579f65222175ae5d5aa3f9b34cfdcd67aea2d4655ee512f + languageName: node + linkType: hard + +"css-to-react-native@npm:^3.0.0": + version: 3.0.0 + resolution: "css-to-react-native@npm:3.0.0" + dependencies: + camelize: "npm:^1.0.0" + css-color-keywords: "npm:^1.0.0" + postcss-value-parser: "npm:^4.0.2" + checksum: 424d600adb0915b4a9958d60488d58dc0a1d1445dfaf638fd117918c0be5c549393d15655a62353cbb4e7d9e4ceaebd1acf2c0cc14dfe67eebf9f5de44f2eb03 + languageName: node + linkType: hard + "debug@npm:4, debug@npm:4.3.4, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.3": version: 4.3.4 resolution: "debug@npm:4.3.4" @@ -2061,6 +2867,23 @@ __metadata: languageName: node linkType: hard +"define-properties@npm:^1.1.3, define-properties@npm:^1.1.4": + version: 1.1.4 + resolution: "define-properties@npm:1.1.4" + dependencies: + has-property-descriptors: "npm:^1.0.0" + object-keys: "npm:^1.1.1" + checksum: 94a6a24f787300c11c53b76e207e53908c86fd508f0dacf0bab49afff62b20439513e14318cebdb3223eef7a49d572eaf7f069a21af80e3ca3f898bbf22c9c8e + languageName: node + linkType: hard + +"delayed-stream@npm:~1.0.0": + version: 1.0.0 + resolution: "delayed-stream@npm:1.0.0" + checksum: 22f11ed342773dbc427e84d5a972e5c67fc34a44bf80eead5a41d8697c9303ae32991e568921cbd82553deeb1b33f3d6ecc148bf0efe3789589c8cb7b0e1a53a + languageName: node + linkType: hard + "delegates@npm:^1.0.0": version: 1.0.0 resolution: "delegates@npm:1.0.0" @@ -2068,13 +2891,20 @@ __metadata: languageName: node linkType: hard -"depd@npm:^1.1.2": +"depd@npm:^1.1.2, depd@npm:~1.1.2": version: 1.1.2 resolution: "depd@npm:1.1.2" checksum: e9fb93771e7cf3d88c4e38ca95742f7c58cae31928eb5e67a1a14d970325a02755451bb7fafc2db72333a5cf7fc14e07e4f8d709c0df70143355e77e8d090bac languageName: node linkType: hard +"deprecated-decorator@npm:^0.1.6": + version: 0.1.6 + resolution: "deprecated-decorator@npm:0.1.6" + checksum: 3c213df40b4893bbfacfeb6a36065e94cd396e348bd1c7ffb4ed1d70ff2dc74962bbc40dfa378d45256493e4cd39f66b489fed48094a64b545f08a5b00c4759a + languageName: node + linkType: hard + "detect-libc@npm:^2.0.0, detect-libc@npm:^2.0.1": version: 2.0.1 resolution: "detect-libc@npm:2.0.1" @@ -2089,6 +2919,15 @@ __metadata: languageName: node linkType: hard +"dicer@npm:0.3.0": + version: 0.3.0 + resolution: "dicer@npm:0.3.0" + dependencies: + streamsearch: "npm:0.1.2" + checksum: 546b4a93349ab0d6f28e52fd09c427bf6e3fd2a864c857d4dd164881b5854d2c54a7a3d211c4dd81ac23775ea1d8651fa28ee96b91ab603ab488cb9cc606ccbe + languageName: node + linkType: hard + "diff-sequences@npm:^29.2.0": version: 29.2.0 resolution: "diff-sequences@npm:29.2.0" @@ -2177,6 +3016,45 @@ __metadata: languageName: node linkType: hard +"es-abstract@npm:^1.19.0, es-abstract@npm:^1.19.5, es-abstract@npm:^1.20.1, es-abstract@npm:^1.20.4": + version: 1.20.4 + resolution: "es-abstract@npm:1.20.4" + dependencies: + call-bind: "npm:^1.0.2" + es-to-primitive: "npm:^1.2.1" + function-bind: "npm:^1.1.1" + function.prototype.name: "npm:^1.1.5" + get-intrinsic: "npm:^1.1.3" + get-symbol-description: "npm:^1.0.0" + has: "npm:^1.0.3" + has-property-descriptors: "npm:^1.0.0" + has-symbols: "npm:^1.0.3" + internal-slot: "npm:^1.0.3" + is-callable: "npm:^1.2.7" + is-negative-zero: "npm:^2.0.2" + is-regex: "npm:^1.1.4" + is-shared-array-buffer: "npm:^1.0.2" + is-string: "npm:^1.0.7" + is-weakref: "npm:^1.0.2" + object-inspect: "npm:^1.12.2" + object-keys: "npm:^1.1.1" + object.assign: "npm:^4.1.4" + regexp.prototype.flags: "npm:^1.4.3" + safe-regex-test: "npm:^1.0.0" + string.prototype.trimend: "npm:^1.0.5" + string.prototype.trimstart: "npm:^1.0.5" + unbox-primitive: "npm:^1.0.2" + checksum: afe27b8a805e0d46799b505c828c6331e7c3624ff62a237ea2b8040881c10a332eb685cb5443d27a99438764191f3c52fde54efca063098483f4c0a735948103 + languageName: node + linkType: hard + +"es-array-method-boxes-properly@npm:^1.0.0": + version: 1.0.0 + resolution: "es-array-method-boxes-properly@npm:1.0.0" + checksum: 89cdd370a77eba1a5a66dcaeb8f796caaec0ea45644aeecc4a3c4d70e804d0736dcb061d9008def9a9f1780fbcd07eb47d828166e83fc1bb569eab36f596c189 + languageName: node + linkType: hard + "es-module-lexer@npm:^0.9.0": version: 0.9.3 resolution: "es-module-lexer@npm:0.9.3" @@ -2184,6 +3062,17 @@ __metadata: languageName: node linkType: hard +"es-to-primitive@npm:^1.2.1": + version: 1.2.1 + resolution: "es-to-primitive@npm:1.2.1" + dependencies: + is-callable: "npm:^1.1.4" + is-date-object: "npm:^1.0.1" + is-symbol: "npm:^1.0.2" + checksum: b419a547ffcbd08c23272e283a20018723bd2f39cbee39f66a8fd0fb110b01728ede799bf1365d5981e57a7afb6901916ad147f374e87bb2b11613ebb1d1aaec + languageName: node + linkType: hard + "esbuild-android-64@npm:0.15.10": version: 0.15.10 resolution: "esbuild-android-64@npm:0.15.10" @@ -2472,6 +3361,13 @@ __metadata: languageName: node linkType: hard +"eventemitter3@npm:^3.1.0": + version: 3.1.2 + resolution: "eventemitter3@npm:3.1.2" + checksum: de0ec98f01dc30b64392cc9ba0c7a7d3a135fb72887955972adc82eba4e6de0587f20a1881ca9dcb9eeffb60a9210d68c2982e560f4f8a6ccb2600bb08a4488b + languageName: node + linkType: hard + "events@npm:^3.2.0": version: 3.3.0 resolution: "events@npm:3.3.0" @@ -2581,6 +3477,40 @@ __metadata: languageName: node linkType: hard +"for-each@npm:^0.3.3": + version: 0.3.3 + resolution: "for-each@npm:0.3.3" + dependencies: + is-callable: "npm:^1.1.3" + checksum: dc4e3e28f5ee9472680b6361a85d0d27aa1e8ddbd1720dfb680020456cddc142ee7ba69145921fe12c4ec2d7740f12c1c6c7f90ecdd7ca2b39c7fcd8bc506ad6 + languageName: node + linkType: hard + +"form-data@npm:^3.0.0": + version: 3.0.1 + resolution: "form-data@npm:3.0.1" + dependencies: + asynckit: "npm:^0.4.0" + combined-stream: "npm:^1.0.8" + mime-types: "npm:^2.1.12" + checksum: 4ca2af6f04d3e3914b6ed8e5ea256da66c883bc2ae64651929f5eb842a47b6461fa51cd19c2a1d5ede09f5117593f2622814c34f8e0ac4869b91a4815c401753 + languageName: node + linkType: hard + +"fs-capacitor@npm:^2.0.4": + version: 2.0.4 + resolution: "fs-capacitor@npm:2.0.4" + checksum: e46c87d53ad63419cbe3654e923c2f503b31c68ca25d21d8f74a9ff0165bb320717245ef8a7585461280ecf6d8bbde93eb64d636eeebb2020f719dadc2d765fb + languageName: node + linkType: hard + +"fs-capacitor@npm:^8.0.0": + version: 8.0.0 + resolution: "fs-capacitor@npm:8.0.0" + checksum: 2ee041e5f2f08061144ffcccbbaaf943bad630628feb11b9fc3af87fb440844e89670b635bb658aeaecf49534d1a61695b281ad83adc2b341fcbcc8e7997e055 + languageName: node + linkType: hard + "fs-constants@npm:^1.0.0": version: 1.0.0 resolution: "fs-constants@npm:1.0.0" @@ -2630,6 +3560,25 @@ __metadata: languageName: node linkType: hard +"function.prototype.name@npm:^1.1.5": + version: 1.1.5 + resolution: "function.prototype.name@npm:1.1.5" + dependencies: + call-bind: "npm:^1.0.2" + define-properties: "npm:^1.1.3" + es-abstract: "npm:^1.19.0" + functions-have-names: "npm:^1.2.2" + checksum: 3c909b6d1d29db8d856e6816189ba46b117e85b00f8261f2dbad5975db20d9830a0484dc6d2a92034aa8dc1e84205de10dc830882e07c6b4a5cfe3e9aa72f5a7 + languageName: node + linkType: hard + +"functions-have-names@npm:^1.2.2": + version: 1.2.3 + resolution: "functions-have-names@npm:1.2.3" + checksum: 2b58e5d607d7338c29e5ff8c285ddf09d79857b6d0ef9f781ee2e80cf666726d6909b5ab635e13d49ded9dcfd3c7abc01a22a52089bf23833848a6bfb6e8dac1 + languageName: node + linkType: hard + "gauge@npm:^3.0.0": version: 3.0.2 resolution: "gauge@npm:3.0.2" @@ -2684,6 +3633,17 @@ __metadata: languageName: node linkType: hard +"get-intrinsic@npm:^1.0.2, get-intrinsic@npm:^1.1.0, get-intrinsic@npm:^1.1.1, get-intrinsic@npm:^1.1.3": + version: 1.1.3 + resolution: "get-intrinsic@npm:1.1.3" + dependencies: + function-bind: "npm:^1.1.1" + has: "npm:^1.0.3" + has-symbols: "npm:^1.0.3" + checksum: 885245c0964b0acf38383792a1174022f00db91624239fa0338b6101f865601df0f17dbef15083dc875374d9b50c64bb4177e411a5a40edb0e5cd0e60829caad + languageName: node + linkType: hard + "get-package-type@npm:^0.1.0": version: 0.1.0 resolution: "get-package-type@npm:0.1.0" @@ -2698,6 +3658,16 @@ __metadata: languageName: node linkType: hard +"get-symbol-description@npm:^1.0.0": + version: 1.0.0 + resolution: "get-symbol-description@npm:1.0.0" + dependencies: + call-bind: "npm:^1.0.2" + get-intrinsic: "npm:^1.1.1" + checksum: 81648604501445f5eb384d0193ff821f0c593c8d231205c3e03054dee679cb9aa4a04fb2cb1a44cd9bc81877e1f3677147a430f7203c851122112b48e12435f6 + languageName: node + linkType: hard + "getopts@npm:2.3.0": version: 2.3.0 resolution: "getopts@npm:2.3.0" @@ -2777,10 +3747,90 @@ __metadata: languageName: node linkType: hard -"graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6, graceful-fs@npm:^4.2.9": - version: 4.2.10 - resolution: "graceful-fs@npm:4.2.10" - checksum: 6b5f9b5aeaee0459b9c37bdbf9624f788703ce291d6bf2d7751f5003942e853f232ca613aec818d1ff7622379bc8b434c635bfda99db93e0b9b8da80ec3d844d +"graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6, graceful-fs@npm:^4.2.9": + version: 4.2.10 + resolution: "graceful-fs@npm:4.2.10" + checksum: 6b5f9b5aeaee0459b9c37bdbf9624f788703ce291d6bf2d7751f5003942e853f232ca613aec818d1ff7622379bc8b434c635bfda99db93e0b9b8da80ec3d844d + languageName: node + linkType: hard + +"graphql-extensions@npm:^0.10.10, graphql-extensions@npm:^0.10.8": + version: 0.10.10 + resolution: "graphql-extensions@npm:0.10.10" + dependencies: + "@apollographql/apollo-tools": "npm:^0.4.3" + apollo-server-env: "npm:^2.4.3" + apollo-server-types: "npm:^0.2.10" + peerDependencies: + graphql: ^0.12.0 || ^0.13.0 || ^14.0.0 + checksum: a7f9956d078d2ba69aa546b3b3d818bdc003b0f77b600a2b1962d3441191aed90d42d55212fa55d6286a5afee3fd2d22b9d9aaa6577ba3cf99ef3d9cd51df68b + languageName: node + linkType: hard + +"graphql-extensions@npm:^0.12.0": + version: 0.12.8 + resolution: "graphql-extensions@npm:0.12.8" + dependencies: + "@apollographql/apollo-tools": "npm:^0.4.3" + apollo-server-env: "npm:^3.0.0" + apollo-server-types: "npm:^0.6.3" + peerDependencies: + graphql: ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 + checksum: 3a50f823a764a4c033aa23ac7a592980b16f70c9987978964647363596e99129c12874b1a8babb88ee207250a84ed1e834397b2afe42e6a82e5792c4f1b49437 + languageName: node + linkType: hard + +"graphql-tag@npm:^2.9.2": + version: 2.12.6 + resolution: "graphql-tag@npm:2.12.6" + dependencies: + tslib: "npm:^2.1.0" + peerDependencies: + graphql: ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + checksum: 35c9fbdc43bb9eddfa4223c19ce9a34370ee89c77e00e1b797d864e5eebac2551a52c42850d68a3be5fe7540d99cfa009e1f43cb79d2170f96bcce8eb7fc86cf + languageName: node + linkType: hard + +"graphql-tools@npm:^4.0.0": + version: 4.0.8 + resolution: "graphql-tools@npm:4.0.8" + dependencies: + apollo-link: "npm:^1.2.14" + apollo-utilities: "npm:^1.0.1" + deprecated-decorator: "npm:^0.1.6" + iterall: "npm:^1.1.3" + uuid: "npm:^3.1.0" + peerDependencies: + graphql: ^0.13.0 || ^14.0.0 || ^15.0.0 + checksum: 97f673399bf010c50060ee09fb76e51e85857f725215d964ff210da6ae60bc8bc6d197622fe3f23fde8680f22789e8ac598402d83d16d2a6d898fa3ad73df66f + languageName: node + linkType: hard + +"graphql-upload@npm:^8.0.2": + version: 8.1.0 + resolution: "graphql-upload@npm:8.1.0" + dependencies: + busboy: "npm:^0.3.1" + fs-capacitor: "npm:^2.0.4" + http-errors: "npm:^1.7.3" + object-path: "npm:^0.11.4" + peerDependencies: + graphql: 0.13.1 - 14 + checksum: 2aed6dadf7a78d50964330db50255237ffea558da1a842f45990b461a331ac3b873c3f584edbdd3247eb9b14350e99836af18e10295bae1c216399dcb9aa29da + languageName: node + linkType: hard + +"graphql@npm:0.13.1 - 16, graphql@npm:^16.6.0": + version: 16.6.0 + resolution: "graphql@npm:16.6.0" + checksum: 686582916b9ca247f3562f086c34a6363155475da909e1f891f9a76a3b5273ed6c7034cd5a82e768670ac5a74d539a6f1be282253a92b49be3a489fc82e83a5b + languageName: node + linkType: hard + +"has-bigints@npm:^1.0.1, has-bigints@npm:^1.0.2": + version: 1.0.2 + resolution: "has-bigints@npm:1.0.2" + checksum: 2f15628a0353cfc818b8710f306ac3b7ea05ca36d469484d1b0b91337720844c83c7d71f7346fbfa61a12fc0e3a3c39a0b1b1b294735f4bd0049697314e18b8a languageName: node linkType: hard @@ -2798,6 +3848,31 @@ __metadata: languageName: node linkType: hard +"has-property-descriptors@npm:^1.0.0": + version: 1.0.0 + resolution: "has-property-descriptors@npm:1.0.0" + dependencies: + get-intrinsic: "npm:^1.1.1" + checksum: 74813c8c23b7e2a8cb8253d77094347d2e0cc380e0475962815764f6b60e815290a7ce82bab1df78418e991f22289aa14151972b6bc66483ad22610ea8ab5c7e + languageName: node + linkType: hard + +"has-symbols@npm:^1.0.1, has-symbols@npm:^1.0.2, has-symbols@npm:^1.0.3": + version: 1.0.3 + resolution: "has-symbols@npm:1.0.3" + checksum: 2d0abb3382da2945b1b8d9a4afebc8a0770fe07198e727b4fbd7f616c70796f040bf2bd8d6db47e0c590507812a2680594fc77f871238289f6c7870318cf62c9 + languageName: node + linkType: hard + +"has-tostringtag@npm:^1.0.0": + version: 1.0.0 + resolution: "has-tostringtag@npm:1.0.0" + dependencies: + has-symbols: "npm:^1.0.2" + checksum: b0091adb3db09932e228b5df39275018c5506ef5c5037beb691afe019919d174a79a14f1fc572e2b341e0ce3feaca49a84ed8fc331bb707325d8a7c4289cf729 + languageName: node + linkType: hard + "has-unicode@npm:^2.0.1": version: 2.0.1 resolution: "has-unicode@npm:2.0.1" @@ -2814,6 +3889,15 @@ __metadata: languageName: node linkType: hard +"hoist-non-react-statics@npm:^3.0.0": + version: 3.3.2 + resolution: "hoist-non-react-statics@npm:3.3.2" + dependencies: + react-is: "npm:^16.7.0" + checksum: fb03b1e426696928dfbae467baf12bdf123fccb051d92fd677c4f290d43dea52ebe7a555c3afc6f3babc657961df2ab50a70bb13739be72904f893598b98b8d7 + languageName: node + linkType: hard + "homedir-polyfill@npm:^1.0.1": version: 1.0.3 resolution: "homedir-polyfill@npm:1.0.3" @@ -2837,6 +3921,19 @@ __metadata: languageName: node linkType: hard +"http-errors@npm:^1.7.3": + version: 1.8.1 + resolution: "http-errors@npm:1.8.1" + dependencies: + depd: "npm:~1.1.2" + inherits: "npm:2.0.4" + setprototypeof: "npm:1.2.0" + statuses: "npm:>= 1.5.0 < 2" + toidentifier: "npm:1.0.1" + checksum: 35821fd7ea2f567ab92dfa75dee08771cfe9399ce2c458e46f75915d0e13a087f224e326ab3bab78d2d8e930cf0f6e2280727cb28ed5b500a435a8c5e74e4f76 + languageName: node + linkType: hard + "http-proxy-agent@npm:^5.0.0": version: 5.0.0 resolution: "http-proxy-agent@npm:5.0.0" @@ -2933,7 +4030,7 @@ __metadata: languageName: node linkType: hard -"inherits@npm:2, inherits@npm:^2.0.3, inherits@npm:^2.0.4": +"inherits@npm:2, inherits@npm:2.0.4, inherits@npm:^2.0.1, inherits@npm:^2.0.3, inherits@npm:^2.0.4": version: 2.0.4 resolution: "inherits@npm:2.0.4" checksum: ca76c7e45ec715bfe6c1dd67b780b9a15068f37b37ab56cf8b773537b2654238469a42950f5f4d301212755e7512be888f627752e778e1863d95cfedefc8b8bd @@ -2947,6 +4044,17 @@ __metadata: languageName: node linkType: hard +"internal-slot@npm:^1.0.3": + version: 1.0.3 + resolution: "internal-slot@npm:1.0.3" + dependencies: + get-intrinsic: "npm:^1.1.0" + has: "npm:^1.0.3" + side-channel: "npm:^1.0.4" + checksum: b08401f1c652927be5238b68ace42c65fda969289b5d38b212389a547762db2602f4f2984c4e83a7b10dd0ca26f3faa1ab609828f0a6f3bfed8aca5ad7a91941 + languageName: node + linkType: hard + "interpret@npm:^2.2.0": version: 2.2.0 resolution: "interpret@npm:2.2.0" @@ -2975,6 +4083,32 @@ __metadata: languageName: node linkType: hard +"is-bigint@npm:^1.0.1": + version: 1.0.4 + resolution: "is-bigint@npm:1.0.4" + dependencies: + has-bigints: "npm:^1.0.1" + checksum: 0e3ca3959ca1a9ee7dd70ce780567f31beeb456993752ba7e33495ed91e734f40decdc258ed450f64f319c0923ea46e2d1de5c4a9dbf89a12de05dc636dd6bfa + languageName: node + linkType: hard + +"is-boolean-object@npm:^1.1.0": + version: 1.1.2 + resolution: "is-boolean-object@npm:1.1.2" + dependencies: + call-bind: "npm:^1.0.2" + has-tostringtag: "npm:^1.0.0" + checksum: 39616788ace17a15b2a4cbc6bee6dbe96be05e86e6afedf8eb1580a2eb05cd6732dfa58949ebc9343a2c9c389fb8a34a4659e0ef7b5bfc4807ccf9814e0cf9b3 + languageName: node + linkType: hard + +"is-callable@npm:^1.1.3, is-callable@npm:^1.1.4, is-callable@npm:^1.2.7": + version: 1.2.7 + resolution: "is-callable@npm:1.2.7" + checksum: 39d7787a6cd66d620ee4e9d09bb36587c29b39f50550d27dd7bea1d0d46b2a87ad9ac2b3d11f751836f08befc20afc4cb36201de1de26aaf02f298c8c512c102 + languageName: node + linkType: hard + "is-core-module@npm:^2.9.0": version: 2.11.0 resolution: "is-core-module@npm:2.11.0" @@ -2984,6 +4118,15 @@ __metadata: languageName: node linkType: hard +"is-date-object@npm:^1.0.1": + version: 1.0.5 + resolution: "is-date-object@npm:1.0.5" + dependencies: + has-tostringtag: "npm:^1.0.0" + checksum: a961e52c2f846d5522413ccd47d376a926b0ddd04b5db468b8b091f93d455475ca26c4b9beae386202e5d05ad2c75252d15452c8ddf942891712b3f94debd9d4 + languageName: node + linkType: hard + "is-docker@npm:^2.0.0, is-docker@npm:^2.1.1": version: 2.2.1 resolution: "is-docker@npm:2.2.1" @@ -3014,6 +4157,22 @@ __metadata: languageName: node linkType: hard +"is-negative-zero@npm:^2.0.2": + version: 2.0.2 + resolution: "is-negative-zero@npm:2.0.2" + checksum: ce904d0d03bacd5393b3eba41321333169bd6fe8f87d1341016899e91c700f660e5e6b6dd3f3d9de5a12261cec207cf85914d1a89ad428e19c2983e451a8ac59 + languageName: node + linkType: hard + +"is-number-object@npm:^1.0.4": + version: 1.0.7 + resolution: "is-number-object@npm:1.0.7" + dependencies: + has-tostringtag: "npm:^1.0.0" + checksum: fd67ff18bad5c64ce2054a03d92c9f264f0f0cd197ea6951207c3dd1b9bea5b40e933be440e7673ea2f1e2a6b265c1842651c94c12d16efd84bbe9310d9cc600 + languageName: node + linkType: hard + "is-number@npm:^7.0.0": version: 7.0.0 resolution: "is-number@npm:7.0.0" @@ -3030,6 +4189,25 @@ __metadata: languageName: node linkType: hard +"is-regex@npm:^1.1.4": + version: 1.1.4 + resolution: "is-regex@npm:1.1.4" + dependencies: + call-bind: "npm:^1.0.2" + has-tostringtag: "npm:^1.0.0" + checksum: d5a09a3da9ba262b3c92f415a2d917ff42fb2241ec7a6cc58ac4512b1b4b35da765c79a60677d7125467a0a597f90cc8d20c5472da520d20476dd12b663cfa65 + languageName: node + linkType: hard + +"is-shared-array-buffer@npm:^1.0.2": + version: 1.0.2 + resolution: "is-shared-array-buffer@npm:1.0.2" + dependencies: + call-bind: "npm:^1.0.2" + checksum: 89167fd3a2768021900ea3e5d4d844127bffea24fa9f171e5e621cb454ffac2539e224ba95567f71154cf488eda4e995282491eb5863d312daa0f14eefa4346e + languageName: node + linkType: hard + "is-stream@npm:^1.0.1": version: 1.1.0 resolution: "is-stream@npm:1.1.0" @@ -3044,6 +4222,33 @@ __metadata: languageName: node linkType: hard +"is-string@npm:^1.0.5, is-string@npm:^1.0.7": + version: 1.0.7 + resolution: "is-string@npm:1.0.7" + dependencies: + has-tostringtag: "npm:^1.0.0" + checksum: 1a2c721eeebd6e0b0228d879af6c5e82d4e2574249b5d86fb1975f683ad73f43d1120ea7a36331455a77f7c54c92a4cb5a276ce344a11770dd88fd8ef47aa54b + languageName: node + linkType: hard + +"is-symbol@npm:^1.0.2, is-symbol@npm:^1.0.3": + version: 1.0.4 + resolution: "is-symbol@npm:1.0.4" + dependencies: + has-symbols: "npm:^1.0.2" + checksum: f1bb1364865f405120eb657a70750cdec3e63260eae6bda81509d4c58b456b7e21f22ab1d5cfc55f269e69dddbdc68ba9764757ab4eaa9e3073357ca9c8e17c2 + languageName: node + linkType: hard + +"is-weakref@npm:^1.0.2": + version: 1.0.2 + resolution: "is-weakref@npm:1.0.2" + dependencies: + call-bind: "npm:^1.0.2" + checksum: fdd5b2df8209f8387a86c8a504f6983fff0f90b46aabfe8d97ffbf34d2cbb6f64edbaec8da16deedd876c228b7b721ead65f42f20f1a0e7ebf294f669542c534 + languageName: node + linkType: hard + "is-windows@npm:^1.0.1": version: 1.0.2 resolution: "is-windows@npm:1.0.2" @@ -3136,6 +4341,13 @@ __metadata: languageName: node linkType: hard +"iterall@npm:^1.1.3, iterall@npm:^1.2.1": + version: 1.3.0 + resolution: "iterall@npm:1.3.0" + checksum: 4e49cae82d50a04258b50080aa85b9e590704b420c1aa529a7eb492264b1550e1a06ece4faecae995719b72b511651692a9f38b2950fcdd23320e703c61cc345 + languageName: node + linkType: hard + "jest-changed-files@npm:^29.2.0": version: 29.2.0 resolution: "jest-changed-files@npm:29.2.0" @@ -3654,7 +4866,7 @@ __metadata: languageName: node linkType: hard -"knex@npm:^2.3.0": +"knex@npm:^2.0.0, knex@npm:^2.3.0": version: 2.3.0 resolution: "knex@npm:2.3.0" dependencies: @@ -3723,13 +4935,27 @@ __metadata: languageName: node linkType: hard -"lodash@npm:^4.17.21": +"lodash.sortby@npm:^4.7.0": + version: 4.7.0 + resolution: "lodash.sortby@npm:4.7.0" + checksum: 533eff6eecb504d3fdfe33e994bf89dd1ed377172b6b82b2690b60e0edd80befa5ad1a4089c2714c564c6f239406d40caac328e3daa16a33fa359263ec501a4e + languageName: node + linkType: hard + +"lodash@npm:^4.17.11, lodash@npm:^4.17.21": version: 4.17.21 resolution: "lodash@npm:4.17.21" checksum: 3ac18e92108d68f88429fcddee609e42cf2b653583d9bac22308815a4cd6b185b89a0ad0d9b0c670c371d9d6b61571a98fee6b36e1db14e52766ca253ed9cba0 languageName: node linkType: hard +"long@npm:^4.0.0": + version: 4.0.0 + resolution: "long@npm:4.0.0" + checksum: fc6d1bf0f251ec045c1004cb3a15be1dd6da11d8232cbfd63a4e7c5becd6d269ecac2e2f267114328280b20cdb00af435bd9a3d7b3af824484b59a635b9d52ab + languageName: node + linkType: hard + "loose-envify@npm:^1.1.0": version: 1.4.0 resolution: "loose-envify@npm:1.4.0" @@ -3832,7 +5058,7 @@ __metadata: languageName: node linkType: hard -"mime-types@npm:^2.1.27": +"mime-types@npm:^2.1.12, mime-types@npm:^2.1.27": version: 2.1.35 resolution: "mime-types@npm:2.1.35" dependencies: @@ -4130,7 +5356,7 @@ __metadata: languageName: node linkType: hard -"node-fetch@npm:^2.6.7": +"node-fetch@npm:^2.1.2, node-fetch@npm:^2.2.0, node-fetch@npm:^2.6.1, node-fetch@npm:^2.6.7": version: 2.6.7 resolution: "node-fetch@npm:2.6.7" dependencies: @@ -4247,6 +5473,51 @@ __metadata: languageName: node linkType: hard +"object-inspect@npm:^1.12.2, object-inspect@npm:^1.9.0": + version: 1.12.2 + resolution: "object-inspect@npm:1.12.2" + checksum: 46e3fc4cb6a51a37c21c68bdf682befc2e50a0d1643d1f7cbdce9a5fd13e9d44ae8cbbf1b05f0c8daf739c02eb9044d825544e25c3aef2a7d315980c8c7ccb71 + languageName: node + linkType: hard + +"object-keys@npm:^1.1.1": + version: 1.1.1 + resolution: "object-keys@npm:1.1.1" + checksum: 23343006d68702a85c299dafd4fc4205dbf729561a7d0acc1a75f6211636fcc1bbbdf26f0740119c43a7a98463e56b8afb74cbb4670509452007f5bc2f64cc36 + languageName: node + linkType: hard + +"object-path@npm:^0.11.4": + version: 0.11.8 + resolution: "object-path@npm:0.11.8" + checksum: 7f146d4fdfa6b8a0ef57b93f626e6ca9cebbf0a4164b92cd5972b6bb7ae2d5b1bd3115f7dce1fa9a8629a02a00500cbd080782ab5ccf7f33f696e855af1d8d9f + languageName: node + linkType: hard + +"object.assign@npm:^4.1.4": + version: 4.1.4 + resolution: "object.assign@npm:4.1.4" + dependencies: + call-bind: "npm:^1.0.2" + define-properties: "npm:^1.1.4" + has-symbols: "npm:^1.0.3" + object-keys: "npm:^1.1.1" + checksum: d1b1bcf947a523140f1f5aa91fcdb9b8fadf6a309e8274bec5e5cfbf897974ead2d0782ac9a2e83ebf59f0ee3994be5cfb1d1483a19e528f472993b2d026a1de + languageName: node + linkType: hard + +"object.getownpropertydescriptors@npm:^2.1.1": + version: 2.1.4 + resolution: "object.getownpropertydescriptors@npm:2.1.4" + dependencies: + array.prototype.reduce: "npm:^1.0.4" + call-bind: "npm:^1.0.2" + define-properties: "npm:^1.1.4" + es-abstract: "npm:^1.20.1" + checksum: 0191753437229bfae7bdbb03f5d56d1f7befea9d4b12a6d1b5392a9d1c0d40d78334c6bf3ddbfd7e89d9f3ced6388d6a033dfb32c012b467aee9113e94ea64d6 + languageName: node + linkType: hard + "once@npm:^1.3.0, once@npm:^1.3.1, once@npm:^1.4.0": version: 1.4.0 resolution: "once@npm:1.4.0" @@ -4470,7 +5741,7 @@ __metadata: languageName: node linkType: hard -"picomatch@npm:^2.0.4, picomatch@npm:^2.2.3, picomatch@npm:^2.3.1": +"picomatch@npm:^2.0.4, picomatch@npm:^2.2.3, picomatch@npm:^2.3.0, picomatch@npm:^2.3.1": version: 2.3.1 resolution: "picomatch@npm:2.3.1" checksum: 6ba5938c24af2c5918e94b39aa0ad48d71f2c30634de69d46e0bd32feb666de4e909406db6ffb78f98d39ef450d6a41b6fa3954dc3659d7b2b750766c1261e5e @@ -4493,6 +5764,13 @@ __metadata: languageName: node linkType: hard +"postcss-value-parser@npm:^4.0.2": + version: 4.2.0 + resolution: "postcss-value-parser@npm:4.2.0" + checksum: edc490e9f11336a2efb136d8a52350b5c680ca9a91ee64285732e796177eb888f559a4eafc94cdbf7ce065a388e65b3cc21a32c92458a90efc445f30e8a679dc + languageName: node + linkType: hard + "postcss@npm:8.4.14": version: 8.4.14 resolution: "postcss@npm:8.4.14" @@ -4646,13 +5924,20 @@ __metadata: languageName: node linkType: hard -"react-is@npm:^18.0.0": +"react-is@npm:*, react-is@npm:^18.0.0, react-is@npm:^18.2.0": version: 18.2.0 resolution: "react-is@npm:18.2.0" checksum: f542f0effed3f89b4faa237bf56e746d437c9dba4ed1039a2ba6e6fcb463244300b8f3c17d8e610e76476a626c4d97ee4c2ed7a5b5d64e2b2e2d7b2144816ac8 languageName: node linkType: hard +"react-is@npm:^16.7.0": + version: 16.13.1 + resolution: "react-is@npm:16.13.1" + checksum: 0c9adc5d984db733fb1dd298f3e94cdec66bc328d27fb11df65971d2cc9a299008bc64baab8fe8e79943df85b445a1008b2cc9e270825d0fd056e5a0d2df8de6 + languageName: node + linkType: hard + "react-old@npm:react@^18.2.0, react@npm:react@^18.2.0": version: 18.2.0 resolution: "react@npm:18.2.0" @@ -4714,6 +5999,17 @@ __metadata: languageName: node linkType: hard +"regexp.prototype.flags@npm:^1.4.3": + version: 1.4.3 + resolution: "regexp.prototype.flags@npm:1.4.3" + dependencies: + call-bind: "npm:^1.0.2" + define-properties: "npm:^1.1.3" + functions-have-names: "npm:^1.2.2" + checksum: 73e364f4cc03ed04f5f966300c6b9672c3bd049f2636db534b7e6f3e03575c178e04def3d73ac0e393bca3400b2acbee6c0609b89b93a51c83c56ed472de7739 + languageName: node + linkType: hard + "require-directory@npm:^2.1.1": version: 2.1.1 resolution: "require-directory@npm:2.1.1" @@ -4780,6 +6076,13 @@ __metadata: languageName: node linkType: hard +"retry@npm:0.13.1": + version: 0.13.1 + resolution: "retry@npm:0.13.1" + checksum: e26ac693801b9f84a369fe90800d844bbe7e4ae325b11496eef0fcb400d06a3f477e93701fc8ac99c110d893155f1e37fee6473b82e90c5ea5547076dac0af63 + languageName: node + linkType: hard + "retry@npm:^0.12.0": version: 0.12.0 resolution: "retry@npm:0.12.0" @@ -4798,6 +6101,14 @@ __metadata: languageName: node linkType: hard +"rimraf@portal:./localPackageTests/test-portal::locator=root-workspace-0b6124%40workspace%3A.": + version: 0.0.0-use.local + resolution: "rimraf@portal:./localPackageTests/test-portal::locator=root-workspace-0b6124%40workspace%3A." + dependencies: + isomorphic-fetch: "npm:^2.2.1" + languageName: node + linkType: soft + "root-workspace-0b6124@workspace:.": version: 0.0.0-use.local resolution: "root-workspace-0b6124@workspace:." @@ -4813,6 +6124,17 @@ __metadata: languageName: node linkType: hard +"safe-regex-test@npm:^1.0.0": + version: 1.0.0 + resolution: "safe-regex-test@npm:1.0.0" + dependencies: + call-bind: "npm:^1.0.2" + get-intrinsic: "npm:^1.1.3" + is-regex: "npm:^1.1.4" + checksum: f7d330e0337cc12ba90dbf88d2f5815106149226c4741a9b5a906aa453f77bc9862570d5b58ca26f20c03807e8e30ed70e5d087fdf2e547da2c0cccaca58931a + languageName: node + linkType: hard + "safer-buffer@npm:>= 2.1.2 < 3.0.0": version: 2.1.2 resolution: "safer-buffer@npm:2.1.2" @@ -4876,6 +6198,25 @@ __metadata: languageName: node linkType: hard +"setprototypeof@npm:1.2.0": + version: 1.2.0 + resolution: "setprototypeof@npm:1.2.0" + checksum: ba389f4722581d9070df0a323a29501254594a97fee0e9308e73372f9856dbdb37fff71a0fef1e31c48901384544260d12925b791477e0101d7a68a6e28c23cf + languageName: node + linkType: hard + +"sha.js@npm:^2.4.11": + version: 2.4.11 + resolution: "sha.js@npm:2.4.11" + dependencies: + inherits: "npm:^2.0.1" + safe-buffer: "npm:^5.0.1" + bin: + sha.js: ./bin.js + checksum: c95a5988bc29c4bf645ed67f1eaa8a841cb6332914bd87f63f8f7b83460671878226be0af9eccf28b61dd1746c594c8ce46af1907c77568382b5fe3b84f2dc13 + languageName: node + linkType: hard + "shallow-clone@npm:^3.0.0": version: 3.0.1 resolution: "shallow-clone@npm:3.0.1" @@ -4885,6 +6226,13 @@ __metadata: languageName: node linkType: hard +"shallowequal@npm:^1.1.0": + version: 1.1.0 + resolution: "shallowequal@npm:1.1.0" + checksum: 9ffaad8074fc1ff1b0ac6b58b8d3f000daa86d8ad1a3122d0dbf218ec777e3c5d2c753223684b46c1b886a66bc9fcd5cfea811e8bb39964220e05845182ae17a + languageName: node + linkType: hard + "sharp@npm:^0.31.1": version: 0.31.1 resolution: "sharp@npm:0.31.1" @@ -4918,6 +6266,17 @@ __metadata: languageName: node linkType: hard +"side-channel@npm:^1.0.4": + version: 1.0.4 + resolution: "side-channel@npm:1.0.4" + dependencies: + call-bind: "npm:^1.0.0" + get-intrinsic: "npm:^1.0.2" + object-inspect: "npm:^1.9.0" + checksum: d712a4e682471c1a1c7bf9294a8bb0f066566e016de11fdb01ae0c0ebf8102c97cc2b2d3b0264ca377eb2d3444bf4c06909392c518a162f047b7444608e0e9a2 + languageName: node + linkType: hard + "signal-exit@npm:^3.0.0, signal-exit@npm:^3.0.3, signal-exit@npm:^3.0.7": version: 3.0.7 resolution: "signal-exit@npm:3.0.7" @@ -5071,6 +6430,20 @@ __metadata: languageName: node linkType: hard +"statuses@npm:>= 1.5.0 < 2": + version: 1.5.0 + resolution: "statuses@npm:1.5.0" + checksum: 9d6802be15e8e10700dcb86e2cd7e86eba497e8b7b37db1fe340062bfcb64a63b1e5fa8c3d3737678d87b2d6e3a803023a3a49582b2f66b4fef1df8b5a3ee1e2 + languageName: node + linkType: hard + +"streamsearch@npm:0.1.2": + version: 0.1.2 + resolution: "streamsearch@npm:0.1.2" + checksum: 481c6238ee449d1e13e99b1bf6549f535abad312d920caca0e5c361717eda0950ee08b5c48693fed07d6a7084fb56036e0ae1b366002da7a865d9d1b164f0a0f + languageName: node + linkType: hard + "string-length@npm:^4.0.1": version: 4.0.2 resolution: "string-length@npm:4.0.2" @@ -5092,6 +6465,28 @@ __metadata: languageName: node linkType: hard +"string.prototype.trimend@npm:^1.0.5": + version: 1.0.5 + resolution: "string.prototype.trimend@npm:1.0.5" + dependencies: + call-bind: "npm:^1.0.2" + define-properties: "npm:^1.1.4" + es-abstract: "npm:^1.19.5" + checksum: b09b83119d8fd21d5125be72bc7e2a117a6313e35ce1f39ace2e4ead574834699a48b24587a5e92f6059335178ca139debc755cb9ec68f39bc7a4a41d6eba024 + languageName: node + linkType: hard + +"string.prototype.trimstart@npm:^1.0.5": + version: 1.0.5 + resolution: "string.prototype.trimstart@npm:1.0.5" + dependencies: + call-bind: "npm:^1.0.2" + define-properties: "npm:^1.1.4" + es-abstract: "npm:^1.19.5" + checksum: 59b07da535af429b595a3a3e639dc6bc5b3022bd8e4b04a5f63e4845609e5ddf763477cc9bed1a856432bd30d89bd7faa734e6653fb4745a2d347815b103821f + languageName: node + linkType: hard + "string_decoder@npm:^1.1.1": version: 1.3.0 resolution: "string_decoder@npm:1.3.0" @@ -5138,6 +6533,28 @@ __metadata: languageName: node linkType: hard +"styled-components@npm:5.1.0": + version: 5.1.0 + resolution: "styled-components@npm:5.1.0" + dependencies: + "@babel/helper-module-imports": "npm:^7.0.0" + "@babel/traverse": "npm:^7.4.5" + "@emotion/is-prop-valid": "npm:^0.8.8" + "@emotion/stylis": "npm:^0.8.4" + "@emotion/unitless": "npm:^0.7.4" + babel-plugin-styled-components: "npm:>= 1" + css-to-react-native: "npm:^3.0.0" + hoist-non-react-statics: "npm:^3.0.0" + shallowequal: "npm:^1.1.0" + supports-color: "npm:^5.5.0" + peerDependencies: + react: ">= 16.8.0" + react-dom: ">= 16.8.0" + react-is: ">= 16.8.0" + checksum: 0c779ae6669265a52340175478cf79c90514d0b616620ecc3504eb01ae24a3e12d3cacbdb3128c619b5d7d8109e1f5c2e882dcf3a6bbd7ab3bdb63893d4185c3 + languageName: node + linkType: hard + "styled-jsx@npm:5.0.7": version: 5.0.7 resolution: "styled-jsx@npm:5.0.7" @@ -5152,7 +6569,37 @@ __metadata: languageName: node linkType: hard -"supports-color@npm:^5.3.0": +"subscriptions-transport-ws@npm:^0.11.0": + version: 0.11.0 + resolution: "subscriptions-transport-ws@npm:0.11.0" + dependencies: + backo2: "npm:^1.0.2" + eventemitter3: "npm:^3.1.0" + iterall: "npm:^1.2.1" + symbol-observable: "npm:^1.0.4" + ws: "npm:^5.2.0 || ^6.0.0 || ^7.0.0" + peerDependencies: + graphql: ^15.7.2 || ^16.0.0 + checksum: ec572c4d32e1015faaa1e23a91e53c717163241b8c527b53d96fb92bec1582f272445a85c353fc9f4a94532f424de913555d6a4a491bf40d8a067c72b34b43ea + languageName: node + linkType: hard + +"subscriptions-transport-ws@npm:^0.9.11": + version: 0.9.19 + resolution: "subscriptions-transport-ws@npm:0.9.19" + dependencies: + backo2: "npm:^1.0.2" + eventemitter3: "npm:^3.1.0" + iterall: "npm:^1.2.1" + symbol-observable: "npm:^1.0.4" + ws: "npm:^5.2.0 || ^6.0.0 || ^7.0.0" + peerDependencies: + graphql: ">=0.10.0" + checksum: 9137453182d1924bad7f8b6ae817217a4f2d8d77200271be8bfe04c7758d545f68b55d1c830cba0b466d170b64469abe8b6a744746bc1ae5f4a00ae982c6ea89 + languageName: node + linkType: hard + +"supports-color@npm:^5.3.0, supports-color@npm:^5.5.0": version: 5.5.0 resolution: "supports-color@npm:5.5.0" dependencies: @@ -5186,6 +6633,13 @@ __metadata: languageName: node linkType: hard +"symbol-observable@npm:^1.0.4": + version: 1.2.0 + resolution: "symbol-observable@npm:1.2.0" + checksum: 5f5acf0dbbe0f131337187aa19c652583bb866fb7f49ee807f2fbbf475f26ffe5c5d4a085cc0a43167c5c1f35287efee6b76a68638aadfc0b0adcd36308733a3 + languageName: node + linkType: hard + "tapable@npm:^2.1.1, tapable@npm:^2.2.0": version: 2.2.1 resolution: "tapable@npm:2.2.1" @@ -5314,16 +6768,23 @@ __metadata: version: 0.0.0-use.local resolution: "testa@workspace:packages/testa" dependencies: + "@types/node": "npm:^18.11.9" + apollo-server-core: "npm:2.9.14" chai: "npm:^4.3.6" color: "npm:^4.2.3" enhanced-resolve: "npm:^5.10.0" esbuild: "npm:^0.15.10" + graphql: "npm:^16.6.0" knex: "npm:^2.3.0" react-old: "npm:react@^18.2.0" + rimraf: "portal:../../localPackageTests/test-portal" + styled-components: "npm:5.1.0" + subscriptions-transport-ws: "npm:^0.11.0" teste: "workspace:^" - testf: "workspace:^" + ts-configs: "workspace:^" typescript: "npm:^4.8.4" bin: + testa-peer-test: ./bin/testa-peer-test testa-test: ./bin/testa-test languageName: unknown linkType: soft @@ -5336,7 +6797,7 @@ __metadata: esbuild: "npm:^0.15.10" fsevents: "npm:^2.3.2" jest: "npm:^29.2.2" - knex: "npm:^2.3.0" + knex: "npm:^2.1.0" next: "npm:^12.3.1" open: "npm:8.4.0" pg: "npm:^8.8.0" @@ -5345,6 +6806,7 @@ __metadata: react-scheduler: "npm:^0.1.0" resolve-dir: "npm:^1.0.1" sharp: "npm:^0.31.1" + styled-components: "npm:5.1.0" test-portal: "portal:../../localPackageTests/test-portal" test-tgz-redux-saga-core: "file:../../localPackageTests/test-tgz-redux-saga-core.tgz" testa: "workspace:^" @@ -5352,6 +6814,9 @@ __metadata: testd: "workspace:^" webpack: "npm:^5.74.0" webpack-cli: "npm:^4.10.0" + peerDependenciesMeta: + react: + optional: true bin: testb: ./index.js languageName: unknown @@ -5382,12 +6847,13 @@ __metadata: resolution: "teste@workspace:packages/teste" dependencies: jest: "npm:^29.2.2" + react-is: "npm:^18.2.0" peerDependencies: react: "*" languageName: unknown linkType: soft -"testf@workspace:^, testf@workspace:packages/testf": +"testf@workspace:packages/testf": version: 0.0.0-use.local resolution: "testf@workspace:packages/testf" languageName: unknown @@ -5423,6 +6889,13 @@ __metadata: languageName: node linkType: hard +"toidentifier@npm:1.0.1": + version: 1.0.1 + resolution: "toidentifier@npm:1.0.1" + checksum: ed889234ceb442c0d5f87ab3f2a8fc0679800baa41766c0d9ce1bb82c700052fd6cf5d1656e1304de13d7a7d5974962fedc1bbe9a0e4686c3d8743c716c7dd5f + languageName: node + linkType: hard + "tr46@npm:~0.0.3": version: 0.0.3 resolution: "tr46@npm:0.0.3" @@ -5430,6 +6903,35 @@ __metadata: languageName: node linkType: hard +"ts-configs@workspace:^, ts-configs@workspace:packages/ts-configs": + version: 0.0.0-use.local + resolution: "ts-configs@workspace:packages/ts-configs" + languageName: unknown + linkType: soft + +"ts-invariant@npm:^0.4.0": + version: 0.4.4 + resolution: "ts-invariant@npm:0.4.4" + dependencies: + tslib: "npm:^1.9.3" + checksum: d6c71dc18bd02ada133274714568eaba15c30f3f8a9c5dbfeb8bc18c123eaecc3d38d5fc601851d81554402cb89aa37da10db3fe08e0d4c35941099fe64853bb + languageName: node + linkType: hard + +"tslib@npm:^1.10.0, tslib@npm:^1.9.3": + version: 1.14.1 + resolution: "tslib@npm:1.14.1" + checksum: 441af59dc42ad4ae57140e62cb362369620c6076845c2c2b0ecc863c1d719ce24fdbc301e9053433fef43075e061bf84b702318ff1204b496a5bba10baf9eb9f + languageName: node + linkType: hard + +"tslib@npm:^2.1.0": + version: 2.4.1 + resolution: "tslib@npm:2.4.1" + checksum: a739a21e3ff059e62c7c3c0845333fbc9c081bcc91e015f2d246a31eeaf1fb0e29b10c0913c7d22f692b3203bb469fd60ca5288aa4f27d351a969df2d0714899 + languageName: node + linkType: hard + "tslib@npm:^2.4.0": version: 2.4.0 resolution: "tslib@npm:2.4.0" @@ -5505,6 +7007,18 @@ __metadata: languageName: node linkType: hard +"unbox-primitive@npm:^1.0.2": + version: 1.0.2 + resolution: "unbox-primitive@npm:1.0.2" + dependencies: + call-bind: "npm:^1.0.2" + has-bigints: "npm:^1.0.2" + has-symbols: "npm:^1.0.3" + which-boxed-primitive: "npm:^1.0.2" + checksum: de21ca5e49bb56d46c7d3672d3d2900b3859ee9541903993bca02a94a317ec1c720b316f025bf5c0f51f7ff9ad383782970acae0408b900ae0537727f614c4e1 + languageName: node + linkType: hard + "unique-filename@npm:^2.0.0": version: 2.0.1 resolution: "unique-filename@npm:2.0.1" @@ -5562,6 +7076,28 @@ __metadata: languageName: node linkType: hard +"util.promisify@npm:^1.0.0": + version: 1.1.1 + resolution: "util.promisify@npm:1.1.1" + dependencies: + call-bind: "npm:^1.0.0" + define-properties: "npm:^1.1.3" + for-each: "npm:^0.3.3" + has-symbols: "npm:^1.0.1" + object.getownpropertydescriptors: "npm:^2.1.1" + checksum: 2a97bf6d70c3f9bb2112246bfced4739a1f4ee1a51e4b69d19818b3164561d9d12375e5885d1ad0f79d0d927441e865b4e3c53dba5548c88863f54a3088e22d3 + languageName: node + linkType: hard + +"uuid@npm:^3.1.0": + version: 3.4.0 + resolution: "uuid@npm:3.4.0" + bin: + uuid: ./bin/uuid + checksum: c84dbfcb94389fea5a09020802df2a1227d183ceabaa5256658194dfad045c83fe72366b64b165b6445a480fac8a75d0e982033f3cb393713674b3cd938063fa + languageName: node + linkType: hard + "v8-to-istanbul@npm:^9.0.1": version: 9.0.1 resolution: "v8-to-istanbul@npm:9.0.1" @@ -5703,6 +7239,19 @@ __metadata: languageName: node linkType: hard +"which-boxed-primitive@npm:^1.0.2": + version: 1.0.2 + resolution: "which-boxed-primitive@npm:1.0.2" + dependencies: + is-bigint: "npm:^1.0.1" + is-boolean-object: "npm:^1.1.0" + is-number-object: "npm:^1.0.4" + is-string: "npm:^1.0.5" + is-symbol: "npm:^1.0.3" + checksum: 5dca8c7d5df27ace90300270fea1512df427ba557e3509051e18c7992fdbe6f00a89918ae2deb59c346d0771966b3b5da3d2c9bad4e374c09bc2b9aad1e19ae9 + languageName: node + linkType: hard + "which@npm:^1.2.14": version: 1.3.1 resolution: "which@npm:1.3.1" @@ -5769,6 +7318,30 @@ __metadata: languageName: node linkType: hard +"ws@npm:^5.2.0 || ^6.0.0 || ^7.0.0": + version: 7.5.9 + resolution: "ws@npm:7.5.9" + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + checksum: 5a4f52060e2a65194c324e5506021c998444ef5740365f7f04a59da38d2da5229221f5ab6e7ceee0d5999d03c2c1c73164a5ebdafa481043edeae4c5c42f988c + languageName: node + linkType: hard + +"ws@npm:^6.0.0": + version: 6.2.2 + resolution: "ws@npm:6.2.2" + dependencies: + async-limiter: "npm:~1.0.0" + checksum: 3f4f610c99b1a5cc9be9db34bcb515a1901be04b467ddc85e30c92f0f410faac88822de0513ad44139ad94ad81c0fdd2a543cbf05bd26d0b3ca319b719da10c6 + languageName: node + linkType: hard + "xtend@npm:^4.0.0": version: 4.0.2 resolution: "xtend@npm:4.0.2" @@ -5818,3 +7391,20 @@ __metadata: checksum: 63eceacd482622afd71290541a9823a0e5eed88a6b58a5d136a5fb8151ed4d1549c80f28d74d4ad351582f9890635d49e6cf70f8d3cc64948640f839f6a37c70 languageName: node linkType: hard + +"zen-observable-ts@npm:^0.8.21": + version: 0.8.21 + resolution: "zen-observable-ts@npm:0.8.21" + dependencies: + tslib: "npm:^1.9.3" + zen-observable: "npm:^0.8.0" + checksum: e5dd78d7c9b8059c6ac2d07324dcf9811ff585d9c7ee83ebf3acfc017f57b12bdf5c2ff1c8ee228a1026ce945679cfec360b9456032df068c88b1251273462f2 + languageName: node + linkType: hard + +"zen-observable@npm:^0.8.0": + version: 0.8.15 + resolution: "zen-observable@npm:0.8.15" + checksum: 82d09c1bb61fdaef03edb3b96f2af90ec9ddcdb35616df249f9d7aaef3aa4e061c7ab8733678b184639a914d47ba6f77741072c1d1ebea93dcd299d85fcf969d + languageName: node + linkType: hard

>>15)|0,P=O>>>(P+7|0)&1|P<<1):P=0,l=n[11436+(P<<2)>>2]|0;e:do if(!l)l=0,s=0,Ge=57;else for(s=0,w=O<<((P|0)==31?0:25-(P>>>1)|0),m=0;;){if(d=(n[l+4>>2]&-8)-O|0,d>>>0>>0)if(d)s=l,u=d;else{s=l,u=0,d=l,Ge=61;break e}if(d=n[l+20>>2]|0,l=n[l+16+(w>>>31<<2)>>2]|0,m=(d|0)==0|(d|0)==(l|0)?m:d,d=(l|0)==0,d){l=m,Ge=57;break}else w=w<<((d^1)&1)}while(0);if((Ge|0)==57){if((l|0)==0&(s|0)==0){if(s=2<>>12&16,W=W>>>w,m=W>>>5&8,W=W>>>m,P=W>>>2&4,W=W>>>P,L=W>>>1&2,W=W>>>L,l=W>>>1&1,s=0,l=n[11436+((m|w|P|L|l)+(W>>>l)<<2)>>2]|0}l?(d=l,Ge=61):(P=s,w=u)}if((Ge|0)==61)for(;;)if(Ge=0,l=(n[d+4>>2]&-8)-O|0,W=l>>>0>>0,l=W?l:u,s=W?d:s,d=n[d+16+(((n[d+16>>2]|0)==0&1)<<2)>>2]|0,d)u=l,Ge=61;else{P=s,w=l;break}if((P|0)!=0&&w>>>0<((n[2785]|0)-O|0)>>>0){if(m=P+O|0,P>>>0>=m>>>0)return Ve=0,C=Kt,Ve|0;d=n[P+24>>2]|0,A=n[P+12>>2]|0;do if((A|0)==(P|0)){if(s=P+20|0,A=n[s>>2]|0,!A&&(s=P+16|0,A=n[s>>2]|0,!A)){A=0;break}for(;;){if(l=A+20|0,u=n[l>>2]|0,u|0){A=u,s=l;continue}if(l=A+16|0,u=n[l>>2]|0,u)A=u,s=l;else break}n[s>>2]=0}else Ve=n[P+8>>2]|0,n[Ve+12>>2]=A,n[A+8>>2]=Ve;while(0);do if(d){if(s=n[P+28>>2]|0,l=11436+(s<<2)|0,(P|0)==(n[l>>2]|0)){if(n[l>>2]=A,!A){u=b&~(1<>2]|0)!=(P|0)&1)<<2)>>2]=A,!A){u=b;break}n[A+24>>2]=d,s=n[P+16>>2]|0,s|0&&(n[A+16>>2]=s,n[s+24>>2]=A),s=n[P+20>>2]|0,s&&(n[A+20>>2]=s,n[s+24>>2]=A),u=b}else u=b;while(0);do if(w>>>0>=16){if(n[P+4>>2]=O|3,n[m+4>>2]=w|1,n[m+w>>2]=w,A=w>>>3,w>>>0<256){l=11172+(A<<1<<2)|0,s=n[2783]|0,A=1<>2]|0):(n[2783]=s|A,A=l,s=l+8|0),n[s>>2]=m,n[A+12>>2]=m,n[m+8>>2]=A,n[m+12>>2]=l;break}if(A=w>>>8,A?w>>>0>16777215?A=31:(Ge=(A+1048320|0)>>>16&8,Ve=A<>>16&4,Ve=Ve<>>16&2,A=14-(ft|Ge|A)+(Ve<>>15)|0,A=w>>>(A+7|0)&1|A<<1):A=0,l=11436+(A<<2)|0,n[m+28>>2]=A,s=m+16|0,n[s+4>>2]=0,n[s>>2]=0,s=1<>2]=m,n[m+24>>2]=l,n[m+12>>2]=m,n[m+8>>2]=m;break}for(s=w<<((A|0)==31?0:25-(A>>>1)|0),l=n[l>>2]|0;;){if((n[l+4>>2]&-8|0)==(w|0)){Ge=97;break}if(u=l+16+(s>>>31<<2)|0,A=n[u>>2]|0,A)s=s<<1,l=A;else{Ge=96;break}}if((Ge|0)==96){n[u>>2]=m,n[m+24>>2]=l,n[m+12>>2]=m,n[m+8>>2]=m;break}else if((Ge|0)==97){Ge=l+8|0,Ve=n[Ge>>2]|0,n[Ve+12>>2]=m,n[Ge>>2]=m,n[m+8>>2]=Ve,n[m+12>>2]=l,n[m+24>>2]=0;break}}else Ve=w+O|0,n[P+4>>2]=Ve|3,Ve=P+Ve+4|0,n[Ve>>2]=n[Ve>>2]|1;while(0);return Ve=P+8|0,C=Kt,Ve|0}else W=O}else W=O;else W=-1;while(0);if(l=n[2785]|0,l>>>0>=W>>>0)return A=l-W|0,s=n[2788]|0,A>>>0>15?(Ve=s+W|0,n[2788]=Ve,n[2785]=A,n[Ve+4>>2]=A|1,n[Ve+A>>2]=A,n[s+4>>2]=W|3):(n[2785]=0,n[2788]=0,n[s+4>>2]=l|3,Ve=s+l+4|0,n[Ve>>2]=n[Ve>>2]|1),Ve=s+8|0,C=Kt,Ve|0;if(w=n[2786]|0,w>>>0>W>>>0)return ft=w-W|0,n[2786]=ft,Ve=n[2789]|0,Ge=Ve+W|0,n[2789]=Ge,n[Ge+4>>2]=ft|1,n[Ve+4>>2]=W|3,Ve=Ve+8|0,C=Kt,Ve|0;if(n[2901]|0?s=n[2903]|0:(n[2903]=4096,n[2902]=4096,n[2904]=-1,n[2905]=-1,n[2906]=0,n[2894]=0,s=ue&-16^1431655768,n[ue>>2]=s,n[2901]=s,s=4096),P=W+48|0,b=W+47|0,m=s+b|0,d=0-s|0,O=m&d,O>>>0<=W>>>0||(s=n[2893]|0,s|0&&(L=n[2891]|0,ue=L+O|0,ue>>>0<=L>>>0|ue>>>0>s>>>0)))return Ve=0,C=Kt,Ve|0;e:do if(n[2894]&4)A=0,Ge=133;else{l=n[2789]|0;t:do if(l){for(u=11580;s=n[u>>2]|0,!(s>>>0<=l>>>0&&(Me=u+4|0,(s+(n[Me>>2]|0)|0)>>>0>l>>>0));)if(s=n[u+8>>2]|0,s)u=s;else{Ge=118;break t}if(A=m-w&d,A>>>0<2147483647)if(s=tp(A|0)|0,(s|0)==((n[u>>2]|0)+(n[Me>>2]|0)|0)){if((s|0)!=-1){w=A,m=s,Ge=135;break e}}else u=s,Ge=126;else A=0}else Ge=118;while(0);do if((Ge|0)==118)if(l=tp(0)|0,(l|0)!=-1&&(A=l,ze=n[2902]|0,_e=ze+-1|0,A=((_e&A|0)==0?0:(_e+A&0-ze)-A|0)+O|0,ze=n[2891]|0,_e=A+ze|0,A>>>0>W>>>0&A>>>0<2147483647)){if(Me=n[2893]|0,Me|0&&_e>>>0<=ze>>>0|_e>>>0>Me>>>0){A=0;break}if(s=tp(A|0)|0,(s|0)==(l|0)){w=A,m=l,Ge=135;break e}else u=s,Ge=126}else A=0;while(0);do if((Ge|0)==126){if(l=0-A|0,!(P>>>0>A>>>0&(A>>>0<2147483647&(u|0)!=-1)))if((u|0)==-1){A=0;break}else{w=A,m=u,Ge=135;break e}if(s=n[2903]|0,s=b-A+s&0-s,s>>>0>=2147483647){w=A,m=u,Ge=135;break e}if((tp(s|0)|0)==-1){tp(l|0)|0,A=0;break}else{w=s+A|0,m=u,Ge=135;break e}}while(0);n[2894]=n[2894]|4,Ge=133}while(0);if((Ge|0)==133&&O>>>0<2147483647&&(ft=tp(O|0)|0,Me=tp(0)|0,ot=Me-ft|0,nt=ot>>>0>(W+40|0)>>>0,!((ft|0)==-1|nt^1|ft>>>0>>0&((ft|0)!=-1&(Me|0)!=-1)^1))&&(w=nt?ot:A,m=ft,Ge=135),(Ge|0)==135){A=(n[2891]|0)+w|0,n[2891]=A,A>>>0>(n[2892]|0)>>>0&&(n[2892]=A),b=n[2789]|0;do if(b){for(A=11580;;){if(s=n[A>>2]|0,l=A+4|0,u=n[l>>2]|0,(m|0)==(s+u|0)){Ge=145;break}if(d=n[A+8>>2]|0,d)A=d;else break}if((Ge|0)==145&&(n[A+12>>2]&8|0)==0&&b>>>0>>0&b>>>0>=s>>>0){n[l>>2]=u+w,Ve=b+8|0,Ve=(Ve&7|0)==0?0:0-Ve&7,Ge=b+Ve|0,Ve=(n[2786]|0)+(w-Ve)|0,n[2789]=Ge,n[2786]=Ve,n[Ge+4>>2]=Ve|1,n[Ge+Ve+4>>2]=40,n[2790]=n[2905];break}for(m>>>0<(n[2787]|0)>>>0&&(n[2787]=m),l=m+w|0,A=11580;;){if((n[A>>2]|0)==(l|0)){Ge=153;break}if(s=n[A+8>>2]|0,s)A=s;else break}if((Ge|0)==153&&(n[A+12>>2]&8|0)==0){n[A>>2]=m,L=A+4|0,n[L>>2]=(n[L>>2]|0)+w,L=m+8|0,L=m+((L&7|0)==0?0:0-L&7)|0,A=l+8|0,A=l+((A&7|0)==0?0:0-A&7)|0,O=L+W|0,P=A-L-W|0,n[L+4>>2]=W|3;do if((A|0)!=(b|0)){if((A|0)==(n[2788]|0)){Ve=(n[2785]|0)+P|0,n[2785]=Ve,n[2788]=O,n[O+4>>2]=Ve|1,n[O+Ve>>2]=Ve;break}if(s=n[A+4>>2]|0,(s&3|0)==1){w=s&-8,u=s>>>3;e:do if(s>>>0<256)if(s=n[A+8>>2]|0,l=n[A+12>>2]|0,(l|0)==(s|0)){n[2783]=n[2783]&~(1<>2]=l,n[l+8>>2]=s;break}else{m=n[A+24>>2]|0,s=n[A+12>>2]|0;do if((s|0)==(A|0)){if(u=A+16|0,l=u+4|0,s=n[l>>2]|0,!s)if(s=n[u>>2]|0,s)l=u;else{s=0;break}for(;;){if(u=s+20|0,d=n[u>>2]|0,d|0){s=d,l=u;continue}if(u=s+16|0,d=n[u>>2]|0,d)s=d,l=u;else break}n[l>>2]=0}else Ve=n[A+8>>2]|0,n[Ve+12>>2]=s,n[s+8>>2]=Ve;while(0);if(!m)break;l=n[A+28>>2]|0,u=11436+(l<<2)|0;do if((A|0)!=(n[u>>2]|0)){if(n[m+16+(((n[m+16>>2]|0)!=(A|0)&1)<<2)>>2]=s,!s)break e}else{if(n[u>>2]=s,s|0)break;n[2784]=n[2784]&~(1<>2]=m,l=A+16|0,u=n[l>>2]|0,u|0&&(n[s+16>>2]=u,n[u+24>>2]=s),l=n[l+4>>2]|0,!l)break;n[s+20>>2]=l,n[l+24>>2]=s}while(0);A=A+w|0,d=w+P|0}else d=P;if(A=A+4|0,n[A>>2]=n[A>>2]&-2,n[O+4>>2]=d|1,n[O+d>>2]=d,A=d>>>3,d>>>0<256){l=11172+(A<<1<<2)|0,s=n[2783]|0,A=1<>2]|0):(n[2783]=s|A,A=l,s=l+8|0),n[s>>2]=O,n[A+12>>2]=O,n[O+8>>2]=A,n[O+12>>2]=l;break}A=d>>>8;do if(!A)A=0;else{if(d>>>0>16777215){A=31;break}Ge=(A+1048320|0)>>>16&8,Ve=A<>>16&4,Ve=Ve<>>16&2,A=14-(ft|Ge|A)+(Ve<>>15)|0,A=d>>>(A+7|0)&1|A<<1}while(0);if(u=11436+(A<<2)|0,n[O+28>>2]=A,s=O+16|0,n[s+4>>2]=0,n[s>>2]=0,s=n[2784]|0,l=1<>2]=O,n[O+24>>2]=u,n[O+12>>2]=O,n[O+8>>2]=O;break}for(s=d<<((A|0)==31?0:25-(A>>>1)|0),l=n[u>>2]|0;;){if((n[l+4>>2]&-8|0)==(d|0)){Ge=194;break}if(u=l+16+(s>>>31<<2)|0,A=n[u>>2]|0,A)s=s<<1,l=A;else{Ge=193;break}}if((Ge|0)==193){n[u>>2]=O,n[O+24>>2]=l,n[O+12>>2]=O,n[O+8>>2]=O;break}else if((Ge|0)==194){Ge=l+8|0,Ve=n[Ge>>2]|0,n[Ve+12>>2]=O,n[Ge>>2]=O,n[O+8>>2]=Ve,n[O+12>>2]=l,n[O+24>>2]=0;break}}else Ve=(n[2786]|0)+P|0,n[2786]=Ve,n[2789]=O,n[O+4>>2]=Ve|1;while(0);return Ve=L+8|0,C=Kt,Ve|0}for(A=11580;s=n[A>>2]|0,!(s>>>0<=b>>>0&&(Ve=s+(n[A+4>>2]|0)|0,Ve>>>0>b>>>0));)A=n[A+8>>2]|0;d=Ve+-47|0,s=d+8|0,s=d+((s&7|0)==0?0:0-s&7)|0,d=b+16|0,s=s>>>0>>0?b:s,A=s+8|0,l=m+8|0,l=(l&7|0)==0?0:0-l&7,Ge=m+l|0,l=w+-40-l|0,n[2789]=Ge,n[2786]=l,n[Ge+4>>2]=l|1,n[Ge+l+4>>2]=40,n[2790]=n[2905],l=s+4|0,n[l>>2]=27,n[A>>2]=n[2895],n[A+4>>2]=n[2896],n[A+8>>2]=n[2897],n[A+12>>2]=n[2898],n[2895]=m,n[2896]=w,n[2898]=0,n[2897]=A,A=s+24|0;do Ge=A,A=A+4|0,n[A>>2]=7;while((Ge+8|0)>>>0>>0);if((s|0)!=(b|0)){if(m=s-b|0,n[l>>2]=n[l>>2]&-2,n[b+4>>2]=m|1,n[s>>2]=m,A=m>>>3,m>>>0<256){l=11172+(A<<1<<2)|0,s=n[2783]|0,A=1<>2]|0):(n[2783]=s|A,A=l,s=l+8|0),n[s>>2]=b,n[A+12>>2]=b,n[b+8>>2]=A,n[b+12>>2]=l;break}if(A=m>>>8,A?m>>>0>16777215?l=31:(Ge=(A+1048320|0)>>>16&8,Ve=A<>>16&4,Ve=Ve<>>16&2,l=14-(ft|Ge|l)+(Ve<>>15)|0,l=m>>>(l+7|0)&1|l<<1):l=0,u=11436+(l<<2)|0,n[b+28>>2]=l,n[b+20>>2]=0,n[d>>2]=0,A=n[2784]|0,s=1<>2]=b,n[b+24>>2]=u,n[b+12>>2]=b,n[b+8>>2]=b;break}for(s=m<<((l|0)==31?0:25-(l>>>1)|0),l=n[u>>2]|0;;){if((n[l+4>>2]&-8|0)==(m|0)){Ge=216;break}if(u=l+16+(s>>>31<<2)|0,A=n[u>>2]|0,A)s=s<<1,l=A;else{Ge=215;break}}if((Ge|0)==215){n[u>>2]=b,n[b+24>>2]=l,n[b+12>>2]=b,n[b+8>>2]=b;break}else if((Ge|0)==216){Ge=l+8|0,Ve=n[Ge>>2]|0,n[Ve+12>>2]=b,n[Ge>>2]=b,n[b+8>>2]=Ve,n[b+12>>2]=l,n[b+24>>2]=0;break}}}else{Ve=n[2787]|0,(Ve|0)==0|m>>>0>>0&&(n[2787]=m),n[2895]=m,n[2896]=w,n[2898]=0,n[2792]=n[2901],n[2791]=-1,A=0;do Ve=11172+(A<<1<<2)|0,n[Ve+12>>2]=Ve,n[Ve+8>>2]=Ve,A=A+1|0;while((A|0)!=32);Ve=m+8|0,Ve=(Ve&7|0)==0?0:0-Ve&7,Ge=m+Ve|0,Ve=w+-40-Ve|0,n[2789]=Ge,n[2786]=Ve,n[Ge+4>>2]=Ve|1,n[Ge+Ve+4>>2]=40,n[2790]=n[2905]}while(0);if(A=n[2786]|0,A>>>0>W>>>0)return ft=A-W|0,n[2786]=ft,Ve=n[2789]|0,Ge=Ve+W|0,n[2789]=Ge,n[Ge+4>>2]=ft|1,n[Ve+4>>2]=W|3,Ve=Ve+8|0,C=Kt,Ve|0}return n[(Iy()|0)>>2]=12,Ve=0,C=Kt,Ve|0}function Ev(s){s=s|0;var A=0,l=0,u=0,d=0,m=0,w=0,P=0,b=0;if(!!s){l=s+-8|0,d=n[2787]|0,s=n[s+-4>>2]|0,A=s&-8,b=l+A|0;do if(s&1)P=l,w=l;else{if(u=n[l>>2]|0,!(s&3)||(w=l+(0-u)|0,m=u+A|0,w>>>0>>0))return;if((w|0)==(n[2788]|0)){if(s=b+4|0,A=n[s>>2]|0,(A&3|0)!=3){P=w,A=m;break}n[2785]=m,n[s>>2]=A&-2,n[w+4>>2]=m|1,n[w+m>>2]=m;return}if(l=u>>>3,u>>>0<256)if(s=n[w+8>>2]|0,A=n[w+12>>2]|0,(A|0)==(s|0)){n[2783]=n[2783]&~(1<>2]=A,n[A+8>>2]=s,P=w,A=m;break}d=n[w+24>>2]|0,s=n[w+12>>2]|0;do if((s|0)==(w|0)){if(l=w+16|0,A=l+4|0,s=n[A>>2]|0,!s)if(s=n[l>>2]|0,s)A=l;else{s=0;break}for(;;){if(l=s+20|0,u=n[l>>2]|0,u|0){s=u,A=l;continue}if(l=s+16|0,u=n[l>>2]|0,u)s=u,A=l;else break}n[A>>2]=0}else P=n[w+8>>2]|0,n[P+12>>2]=s,n[s+8>>2]=P;while(0);if(d){if(A=n[w+28>>2]|0,l=11436+(A<<2)|0,(w|0)==(n[l>>2]|0)){if(n[l>>2]=s,!s){n[2784]=n[2784]&~(1<>2]|0)!=(w|0)&1)<<2)>>2]=s,!s){P=w,A=m;break}n[s+24>>2]=d,A=w+16|0,l=n[A>>2]|0,l|0&&(n[s+16>>2]=l,n[l+24>>2]=s),A=n[A+4>>2]|0,A?(n[s+20>>2]=A,n[A+24>>2]=s,P=w,A=m):(P=w,A=m)}else P=w,A=m}while(0);if(!(w>>>0>=b>>>0)&&(s=b+4|0,u=n[s>>2]|0,!!(u&1))){if(u&2)n[s>>2]=u&-2,n[P+4>>2]=A|1,n[w+A>>2]=A,d=A;else{if(s=n[2788]|0,(b|0)==(n[2789]|0)){if(b=(n[2786]|0)+A|0,n[2786]=b,n[2789]=P,n[P+4>>2]=b|1,(P|0)!=(s|0))return;n[2788]=0,n[2785]=0;return}if((b|0)==(s|0)){b=(n[2785]|0)+A|0,n[2785]=b,n[2788]=w,n[P+4>>2]=b|1,n[w+b>>2]=b;return}d=(u&-8)+A|0,l=u>>>3;do if(u>>>0<256)if(A=n[b+8>>2]|0,s=n[b+12>>2]|0,(s|0)==(A|0)){n[2783]=n[2783]&~(1<>2]=s,n[s+8>>2]=A;break}else{m=n[b+24>>2]|0,s=n[b+12>>2]|0;do if((s|0)==(b|0)){if(l=b+16|0,A=l+4|0,s=n[A>>2]|0,!s)if(s=n[l>>2]|0,s)A=l;else{l=0;break}for(;;){if(l=s+20|0,u=n[l>>2]|0,u|0){s=u,A=l;continue}if(l=s+16|0,u=n[l>>2]|0,u)s=u,A=l;else break}n[A>>2]=0,l=s}else l=n[b+8>>2]|0,n[l+12>>2]=s,n[s+8>>2]=l,l=s;while(0);if(m|0){if(s=n[b+28>>2]|0,A=11436+(s<<2)|0,(b|0)==(n[A>>2]|0)){if(n[A>>2]=l,!l){n[2784]=n[2784]&~(1<>2]|0)!=(b|0)&1)<<2)>>2]=l,!l)break;n[l+24>>2]=m,s=b+16|0,A=n[s>>2]|0,A|0&&(n[l+16>>2]=A,n[A+24>>2]=l),s=n[s+4>>2]|0,s|0&&(n[l+20>>2]=s,n[s+24>>2]=l)}}while(0);if(n[P+4>>2]=d|1,n[w+d>>2]=d,(P|0)==(n[2788]|0)){n[2785]=d;return}}if(s=d>>>3,d>>>0<256){l=11172+(s<<1<<2)|0,A=n[2783]|0,s=1<>2]|0):(n[2783]=A|s,s=l,A=l+8|0),n[A>>2]=P,n[s+12>>2]=P,n[P+8>>2]=s,n[P+12>>2]=l;return}s=d>>>8,s?d>>>0>16777215?s=31:(w=(s+1048320|0)>>>16&8,b=s<>>16&4,b=b<>>16&2,s=14-(m|w|s)+(b<>>15)|0,s=d>>>(s+7|0)&1|s<<1):s=0,u=11436+(s<<2)|0,n[P+28>>2]=s,n[P+20>>2]=0,n[P+16>>2]=0,A=n[2784]|0,l=1<>>1)|0),l=n[u>>2]|0;;){if((n[l+4>>2]&-8|0)==(d|0)){s=73;break}if(u=l+16+(A>>>31<<2)|0,s=n[u>>2]|0,s)A=A<<1,l=s;else{s=72;break}}if((s|0)==72){n[u>>2]=P,n[P+24>>2]=l,n[P+12>>2]=P,n[P+8>>2]=P;break}else if((s|0)==73){w=l+8|0,b=n[w>>2]|0,n[b+12>>2]=P,n[w>>2]=P,n[P+8>>2]=b,n[P+12>>2]=l,n[P+24>>2]=0;break}}else n[2784]=A|l,n[u>>2]=P,n[P+24>>2]=u,n[P+12>>2]=P,n[P+8>>2]=P;while(0);if(b=(n[2791]|0)+-1|0,n[2791]=b,!b)s=11588;else return;for(;s=n[s>>2]|0,s;)s=s+8|0;n[2791]=-1}}}function C3e(){return 11628}function E3e(s){s=s|0;var A=0,l=0;return A=C,C=C+16|0,l=A,n[l>>2]=B3e(n[s+60>>2]|0)|0,s=Iv(qA(6,l|0)|0)|0,C=A,s|0}function N9(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0,w=0,P=0,b=0,O=0,L=0,W=0,ue=0,ze=0;W=C,C=C+48|0,O=W+16|0,m=W,d=W+32|0,P=s+28|0,u=n[P>>2]|0,n[d>>2]=u,b=s+20|0,u=(n[b>>2]|0)-u|0,n[d+4>>2]=u,n[d+8>>2]=A,n[d+12>>2]=l,u=u+l|0,w=s+60|0,n[m>>2]=n[w>>2],n[m+4>>2]=d,n[m+8>>2]=2,m=Iv($i(146,m|0)|0)|0;e:do if((u|0)!=(m|0)){for(A=2;!((m|0)<0);)if(u=u-m|0,ze=n[d+4>>2]|0,ue=m>>>0>ze>>>0,d=ue?d+8|0:d,A=(ue<<31>>31)+A|0,ze=m-(ue?ze:0)|0,n[d>>2]=(n[d>>2]|0)+ze,ue=d+4|0,n[ue>>2]=(n[ue>>2]|0)-ze,n[O>>2]=n[w>>2],n[O+4>>2]=d,n[O+8>>2]=A,m=Iv($i(146,O|0)|0)|0,(u|0)==(m|0)){L=3;break e}n[s+16>>2]=0,n[P>>2]=0,n[b>>2]=0,n[s>>2]=n[s>>2]|32,(A|0)==2?l=0:l=l-(n[d+4>>2]|0)|0}else L=3;while(0);return(L|0)==3&&(ze=n[s+44>>2]|0,n[s+16>>2]=ze+(n[s+48>>2]|0),n[P>>2]=ze,n[b>>2]=ze),C=W,l|0}function I3e(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0;return d=C,C=C+32|0,m=d,u=d+20|0,n[m>>2]=n[s+60>>2],n[m+4>>2]=0,n[m+8>>2]=A,n[m+12>>2]=u,n[m+16>>2]=l,(Iv(ea(140,m|0)|0)|0)<0?(n[u>>2]=-1,s=-1):s=n[u>>2]|0,C=d,s|0}function Iv(s){return s=s|0,s>>>0>4294963200&&(n[(Iy()|0)>>2]=0-s,s=-1),s|0}function Iy(){return(w3e()|0)+64|0}function w3e(){return zR()|0}function zR(){return 2084}function B3e(s){return s=s|0,s|0}function Q3e(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0;return d=C,C=C+32|0,u=d,n[s+36>>2]=1,(n[s>>2]&64|0)==0&&(n[u>>2]=n[s+60>>2],n[u+4>>2]=21523,n[u+8>>2]=d+16,_l(54,u|0)|0)&&(o[s+75>>0]=-1),u=N9(s,A,l)|0,C=d,u|0}function M9(s,A){s=s|0,A=A|0;var l=0,u=0;if(l=o[s>>0]|0,u=o[A>>0]|0,l<<24>>24==0||l<<24>>24!=u<<24>>24)s=u;else{do s=s+1|0,A=A+1|0,l=o[s>>0]|0,u=o[A>>0]|0;while(!(l<<24>>24==0||l<<24>>24!=u<<24>>24));s=u}return(l&255)-(s&255)|0}function v3e(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0;e:do if(!l)s=0;else{for(;u=o[s>>0]|0,d=o[A>>0]|0,u<<24>>24==d<<24>>24;)if(l=l+-1|0,l)s=s+1|0,A=A+1|0;else{s=0;break e}s=(u&255)-(d&255)|0}while(0);return s|0}function L9(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0,w=0,P=0,b=0,O=0,L=0,W=0,ue=0,ze=0,_e=0,Me=0;Me=C,C=C+224|0,L=Me+120|0,W=Me+80|0,ze=Me,_e=Me+136|0,u=W,d=u+40|0;do n[u>>2]=0,u=u+4|0;while((u|0)<(d|0));return n[L>>2]=n[l>>2],(XR(0,A,L,ze,W)|0)<0?l=-1:((n[s+76>>2]|0)>-1?ue=D3e(s)|0:ue=0,l=n[s>>2]|0,O=l&32,(o[s+74>>0]|0)<1&&(n[s>>2]=l&-33),u=s+48|0,n[u>>2]|0?l=XR(s,A,L,ze,W)|0:(d=s+44|0,m=n[d>>2]|0,n[d>>2]=_e,w=s+28|0,n[w>>2]=_e,P=s+20|0,n[P>>2]=_e,n[u>>2]=80,b=s+16|0,n[b>>2]=_e+80,l=XR(s,A,L,ze,W)|0,m&&(vv[n[s+36>>2]&7](s,0,0)|0,l=(n[P>>2]|0)==0?-1:l,n[d>>2]=m,n[u>>2]=0,n[b>>2]=0,n[w>>2]=0,n[P>>2]=0)),u=n[s>>2]|0,n[s>>2]=u|O,ue|0&&S3e(s),l=(u&32|0)==0?l:-1),C=Me,l|0}function XR(s,A,l,u,d){s=s|0,A=A|0,l=l|0,u=u|0,d=d|0;var m=0,w=0,P=0,b=0,O=0,L=0,W=0,ue=0,ze=0,_e=0,Me=0,ot=0,nt=0,ft=0,Ge=0,Ve=0,Kt=0,Jr=0,pr=0,$t=0,Nr=0,jr=0,cr=0;cr=C,C=C+64|0,pr=cr+16|0,$t=cr,Kt=cr+24|0,Nr=cr+8|0,jr=cr+20|0,n[pr>>2]=A,ft=(s|0)!=0,Ge=Kt+40|0,Ve=Ge,Kt=Kt+39|0,Jr=Nr+4|0,w=0,m=0,L=0;e:for(;;){do if((m|0)>-1)if((w|0)>(2147483647-m|0)){n[(Iy()|0)>>2]=75,m=-1;break}else{m=w+m|0;break}while(0);if(w=o[A>>0]|0,w<<24>>24)P=A;else{nt=87;break}t:for(;;){switch(w<<24>>24){case 37:{w=P,nt=9;break t}case 0:{w=P;break t}default:}ot=P+1|0,n[pr>>2]=ot,w=o[ot>>0]|0,P=ot}t:do if((nt|0)==9)for(;;){if(nt=0,(o[P+1>>0]|0)!=37)break t;if(w=w+1|0,P=P+2|0,n[pr>>2]=P,(o[P>>0]|0)==37)nt=9;else break}while(0);if(w=w-A|0,ft&&bs(s,A,w),w|0){A=P;continue}b=P+1|0,w=(o[b>>0]|0)+-48|0,w>>>0<10?(ot=(o[P+2>>0]|0)==36,Me=ot?w:-1,L=ot?1:L,b=ot?P+3|0:b):Me=-1,n[pr>>2]=b,w=o[b>>0]|0,P=(w<<24>>24)+-32|0;t:do if(P>>>0<32)for(O=0,W=w;;){if(w=1<>2]=b,w=o[b>>0]|0,P=(w<<24>>24)+-32|0,P>>>0>=32)break;W=w}else O=0;while(0);if(w<<24>>24==42){if(P=b+1|0,w=(o[P>>0]|0)+-48|0,w>>>0<10&&(o[b+2>>0]|0)==36)n[d+(w<<2)>>2]=10,w=n[u+((o[P>>0]|0)+-48<<3)>>2]|0,L=1,b=b+3|0;else{if(L|0){m=-1;break}ft?(L=(n[l>>2]|0)+(4-1)&~(4-1),w=n[L>>2]|0,n[l>>2]=L+4,L=0,b=P):(w=0,L=0,b=P)}n[pr>>2]=b,ot=(w|0)<0,w=ot?0-w|0:w,O=ot?O|8192:O}else{if(w=O9(pr)|0,(w|0)<0){m=-1;break}b=n[pr>>2]|0}do if((o[b>>0]|0)==46){if((o[b+1>>0]|0)!=42){n[pr>>2]=b+1,P=O9(pr)|0,b=n[pr>>2]|0;break}if(W=b+2|0,P=(o[W>>0]|0)+-48|0,P>>>0<10&&(o[b+3>>0]|0)==36){n[d+(P<<2)>>2]=10,P=n[u+((o[W>>0]|0)+-48<<3)>>2]|0,b=b+4|0,n[pr>>2]=b;break}if(L|0){m=-1;break e}ft?(ot=(n[l>>2]|0)+(4-1)&~(4-1),P=n[ot>>2]|0,n[l>>2]=ot+4):P=0,n[pr>>2]=W,b=W}else P=-1;while(0);for(_e=0;;){if(((o[b>>0]|0)+-65|0)>>>0>57){m=-1;break e}if(ot=b+1|0,n[pr>>2]=ot,W=o[(o[b>>0]|0)+-65+(5178+(_e*58|0))>>0]|0,ue=W&255,(ue+-1|0)>>>0<8)_e=ue,b=ot;else break}if(!(W<<24>>24)){m=-1;break}ze=(Me|0)>-1;do if(W<<24>>24==19)if(ze){m=-1;break e}else nt=49;else{if(ze){n[d+(Me<<2)>>2]=ue,ze=u+(Me<<3)|0,Me=n[ze+4>>2]|0,nt=$t,n[nt>>2]=n[ze>>2],n[nt+4>>2]=Me,nt=49;break}if(!ft){m=0;break e}U9($t,ue,l)}while(0);if((nt|0)==49&&(nt=0,!ft)){w=0,A=ot;continue}b=o[b>>0]|0,b=(_e|0)!=0&(b&15|0)==3?b&-33:b,ze=O&-65537,Me=(O&8192|0)==0?O:ze;t:do switch(b|0){case 110:switch((_e&255)<<24>>24){case 0:{n[n[$t>>2]>>2]=m,w=0,A=ot;continue e}case 1:{n[n[$t>>2]>>2]=m,w=0,A=ot;continue e}case 2:{w=n[$t>>2]|0,n[w>>2]=m,n[w+4>>2]=((m|0)<0)<<31>>31,w=0,A=ot;continue e}case 3:{a[n[$t>>2]>>1]=m,w=0,A=ot;continue e}case 4:{o[n[$t>>2]>>0]=m,w=0,A=ot;continue e}case 6:{n[n[$t>>2]>>2]=m,w=0,A=ot;continue e}case 7:{w=n[$t>>2]|0,n[w>>2]=m,n[w+4>>2]=((m|0)<0)<<31>>31,w=0,A=ot;continue e}default:{w=0,A=ot;continue e}}case 112:{b=120,P=P>>>0>8?P:8,A=Me|8,nt=61;break}case 88:case 120:{A=Me,nt=61;break}case 111:{b=$t,A=n[b>>2]|0,b=n[b+4>>2]|0,ue=x3e(A,b,Ge)|0,ze=Ve-ue|0,O=0,W=5642,P=(Me&8|0)==0|(P|0)>(ze|0)?P:ze+1|0,ze=Me,nt=67;break}case 105:case 100:if(b=$t,A=n[b>>2]|0,b=n[b+4>>2]|0,(b|0)<0){A=wv(0,0,A|0,b|0)|0,b=Ce,O=$t,n[O>>2]=A,n[O+4>>2]=b,O=1,W=5642,nt=66;break t}else{O=(Me&2049|0)!=0&1,W=(Me&2048|0)==0?(Me&1|0)==0?5642:5644:5643,nt=66;break t}case 117:{b=$t,O=0,W=5642,A=n[b>>2]|0,b=n[b+4>>2]|0,nt=66;break}case 99:{o[Kt>>0]=n[$t>>2],A=Kt,O=0,W=5642,ue=Ge,b=1,P=ze;break}case 109:{b=P3e(n[(Iy()|0)>>2]|0)|0,nt=71;break}case 115:{b=n[$t>>2]|0,b=b|0?b:5652,nt=71;break}case 67:{n[Nr>>2]=n[$t>>2],n[Jr>>2]=0,n[$t>>2]=Nr,ue=-1,b=Nr,nt=75;break}case 83:{A=n[$t>>2]|0,P?(ue=P,b=A,nt=75):(Gs(s,32,w,0,Me),A=0,nt=84);break}case 65:case 71:case 70:case 69:case 97:case 103:case 102:case 101:{w=F3e(s,+E[$t>>3],w,P,Me,b)|0,A=ot;continue e}default:O=0,W=5642,ue=Ge,b=P,P=Me}while(0);t:do if((nt|0)==61)Me=$t,_e=n[Me>>2]|0,Me=n[Me+4>>2]|0,ue=k3e(_e,Me,Ge,b&32)|0,W=(A&8|0)==0|(_e|0)==0&(Me|0)==0,O=W?0:2,W=W?5642:5642+(b>>4)|0,ze=A,A=_e,b=Me,nt=67;else if((nt|0)==66)ue=wy(A,b,Ge)|0,ze=Me,nt=67;else if((nt|0)==71)nt=0,Me=b3e(b,0,P)|0,_e=(Me|0)==0,A=b,O=0,W=5642,ue=_e?b+P|0:Me,b=_e?P:Me-b|0,P=ze;else if((nt|0)==75){for(nt=0,W=b,A=0,P=0;O=n[W>>2]|0,!(!O||(P=K9(jr,O)|0,(P|0)<0|P>>>0>(ue-A|0)>>>0));)if(A=P+A|0,ue>>>0>A>>>0)W=W+4|0;else break;if((P|0)<0){m=-1;break e}if(Gs(s,32,w,A,Me),!A)A=0,nt=84;else for(O=0;;){if(P=n[b>>2]|0,!P){nt=84;break t}if(P=K9(jr,P)|0,O=P+O|0,(O|0)>(A|0)){nt=84;break t}if(bs(s,jr,P),O>>>0>=A>>>0){nt=84;break}else b=b+4|0}}while(0);if((nt|0)==67)nt=0,b=(A|0)!=0|(b|0)!=0,Me=(P|0)!=0|b,b=((b^1)&1)+(Ve-ue)|0,A=Me?ue:Ge,ue=Ge,b=Me?(P|0)>(b|0)?P:b:P,P=(P|0)>-1?ze&-65537:ze;else if((nt|0)==84){nt=0,Gs(s,32,w,A,Me^8192),w=(w|0)>(A|0)?w:A,A=ot;continue}_e=ue-A|0,ze=(b|0)<(_e|0)?_e:b,Me=ze+O|0,w=(w|0)<(Me|0)?Me:w,Gs(s,32,w,Me,P),bs(s,W,O),Gs(s,48,w,Me,P^65536),Gs(s,48,ze,_e,0),bs(s,A,_e),Gs(s,32,w,Me,P^8192),A=ot}e:do if((nt|0)==87&&!s)if(!L)m=0;else{for(m=1;A=n[d+(m<<2)>>2]|0,!!A;)if(U9(u+(m<<3)|0,A,l),m=m+1|0,(m|0)>=10){m=1;break e}for(;;){if(n[d+(m<<2)>>2]|0){m=-1;break e}if(m=m+1|0,(m|0)>=10){m=1;break}}}while(0);return C=cr,m|0}function D3e(s){return s=s|0,0}function S3e(s){s=s|0}function bs(s,A,l){s=s|0,A=A|0,l=l|0,n[s>>2]&32||_3e(A,l,s)|0}function O9(s){s=s|0;var A=0,l=0,u=0;if(l=n[s>>2]|0,u=(o[l>>0]|0)+-48|0,u>>>0<10){A=0;do A=u+(A*10|0)|0,l=l+1|0,n[s>>2]=l,u=(o[l>>0]|0)+-48|0;while(u>>>0<10)}else A=0;return A|0}function U9(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0;e:do if(A>>>0<=20)do switch(A|0){case 9:{u=(n[l>>2]|0)+(4-1)&~(4-1),A=n[u>>2]|0,n[l>>2]=u+4,n[s>>2]=A;break e}case 10:{u=(n[l>>2]|0)+(4-1)&~(4-1),A=n[u>>2]|0,n[l>>2]=u+4,u=s,n[u>>2]=A,n[u+4>>2]=((A|0)<0)<<31>>31;break e}case 11:{u=(n[l>>2]|0)+(4-1)&~(4-1),A=n[u>>2]|0,n[l>>2]=u+4,u=s,n[u>>2]=A,n[u+4>>2]=0;break e}case 12:{u=(n[l>>2]|0)+(8-1)&~(8-1),A=u,d=n[A>>2]|0,A=n[A+4>>2]|0,n[l>>2]=u+8,u=s,n[u>>2]=d,n[u+4>>2]=A;break e}case 13:{d=(n[l>>2]|0)+(4-1)&~(4-1),u=n[d>>2]|0,n[l>>2]=d+4,u=(u&65535)<<16>>16,d=s,n[d>>2]=u,n[d+4>>2]=((u|0)<0)<<31>>31;break e}case 14:{d=(n[l>>2]|0)+(4-1)&~(4-1),u=n[d>>2]|0,n[l>>2]=d+4,d=s,n[d>>2]=u&65535,n[d+4>>2]=0;break e}case 15:{d=(n[l>>2]|0)+(4-1)&~(4-1),u=n[d>>2]|0,n[l>>2]=d+4,u=(u&255)<<24>>24,d=s,n[d>>2]=u,n[d+4>>2]=((u|0)<0)<<31>>31;break e}case 16:{d=(n[l>>2]|0)+(4-1)&~(4-1),u=n[d>>2]|0,n[l>>2]=d+4,d=s,n[d>>2]=u&255,n[d+4>>2]=0;break e}case 17:{d=(n[l>>2]|0)+(8-1)&~(8-1),m=+E[d>>3],n[l>>2]=d+8,E[s>>3]=m;break e}case 18:{d=(n[l>>2]|0)+(8-1)&~(8-1),m=+E[d>>3],n[l>>2]=d+8,E[s>>3]=m;break e}default:break e}while(0);while(0)}function k3e(s,A,l,u){if(s=s|0,A=A|0,l=l|0,u=u|0,!((s|0)==0&(A|0)==0))do l=l+-1|0,o[l>>0]=c[5694+(s&15)>>0]|0|u,s=Bv(s|0,A|0,4)|0,A=Ce;while(!((s|0)==0&(A|0)==0));return l|0}function x3e(s,A,l){if(s=s|0,A=A|0,l=l|0,!((s|0)==0&(A|0)==0))do l=l+-1|0,o[l>>0]=s&7|48,s=Bv(s|0,A|0,3)|0,A=Ce;while(!((s|0)==0&(A|0)==0));return l|0}function wy(s,A,l){s=s|0,A=A|0,l=l|0;var u=0;if(A>>>0>0|(A|0)==0&s>>>0>4294967295){for(;u=tT(s|0,A|0,10,0)|0,l=l+-1|0,o[l>>0]=u&255|48,u=s,s=eT(s|0,A|0,10,0)|0,A>>>0>9|(A|0)==9&u>>>0>4294967295;)A=Ce;A=s}else A=s;if(A)for(;l=l+-1|0,o[l>>0]=(A>>>0)%10|0|48,!(A>>>0<10);)A=(A>>>0)/10|0;return l|0}function P3e(s){return s=s|0,L3e(s,n[(M3e()|0)+188>>2]|0)|0}function b3e(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0,w=0;m=A&255,u=(l|0)!=0;e:do if(u&(s&3|0)!=0)for(d=A&255;;){if((o[s>>0]|0)==d<<24>>24){w=6;break e}if(s=s+1|0,l=l+-1|0,u=(l|0)!=0,!(u&(s&3|0)!=0)){w=5;break}}else w=5;while(0);(w|0)==5&&(u?w=6:l=0);e:do if((w|0)==6&&(d=A&255,(o[s>>0]|0)!=d<<24>>24)){u=Oe(m,16843009)|0;t:do if(l>>>0>3){for(;m=n[s>>2]^u,!((m&-2139062144^-2139062144)&m+-16843009|0);)if(s=s+4|0,l=l+-4|0,l>>>0<=3){w=11;break t}}else w=11;while(0);if((w|0)==11&&!l){l=0;break}for(;;){if((o[s>>0]|0)==d<<24>>24)break e;if(s=s+1|0,l=l+-1|0,!l){l=0;break}}}while(0);return(l|0?s:0)|0}function Gs(s,A,l,u,d){s=s|0,A=A|0,l=l|0,u=u|0,d=d|0;var m=0,w=0;if(w=C,C=C+256|0,m=w,(l|0)>(u|0)&(d&73728|0)==0){if(d=l-u|0,Qy(m|0,A|0,(d>>>0<256?d:256)|0)|0,d>>>0>255){A=l-u|0;do bs(s,m,256),d=d+-256|0;while(d>>>0>255);d=A&255}bs(s,m,d)}C=w}function K9(s,A){return s=s|0,A=A|0,s?s=T3e(s,A,0)|0:s=0,s|0}function F3e(s,A,l,u,d,m){s=s|0,A=+A,l=l|0,u=u|0,d=d|0,m=m|0;var w=0,P=0,b=0,O=0,L=0,W=0,ue=0,ze=0,_e=0,Me=0,ot=0,nt=0,ft=0,Ge=0,Ve=0,Kt=0,Jr=0,pr=0,$t=0,Nr=0,jr=0,cr=0,Kn=0;Kn=C,C=C+560|0,b=Kn+8|0,ot=Kn,cr=Kn+524|0,jr=cr,O=Kn+512|0,n[ot>>2]=0,Nr=O+12|0,_9(A)|0,(Ce|0)<0?(A=-A,pr=1,Jr=5659):(pr=(d&2049|0)!=0&1,Jr=(d&2048|0)==0?(d&1|0)==0?5660:5665:5662),_9(A)|0,$t=Ce&2146435072;do if($t>>>0<2146435072|($t|0)==2146435072&0<0){if(ze=+R3e(A,ot)*2,w=ze!=0,w&&(n[ot>>2]=(n[ot>>2]|0)+-1),ft=m|32,(ft|0)==97){_e=m&32,ue=(_e|0)==0?Jr:Jr+9|0,W=pr|2,w=12-u|0;do if(u>>>0>11|(w|0)==0)A=ze;else{A=8;do w=w+-1|0,A=A*16;while((w|0)!=0);if((o[ue>>0]|0)==45){A=-(A+(-ze-A));break}else{A=ze+A-A;break}}while(0);P=n[ot>>2]|0,w=(P|0)<0?0-P|0:P,w=wy(w,((w|0)<0)<<31>>31,Nr)|0,(w|0)==(Nr|0)&&(w=O+11|0,o[w>>0]=48),o[w+-1>>0]=(P>>31&2)+43,L=w+-2|0,o[L>>0]=m+15,O=(u|0)<1,b=(d&8|0)==0,w=cr;do $t=~~A,P=w+1|0,o[w>>0]=c[5694+$t>>0]|_e,A=(A-+($t|0))*16,(P-jr|0)==1&&!(b&(O&A==0))?(o[P>>0]=46,w=w+2|0):w=P;while(A!=0);$t=w-jr|0,jr=Nr-L|0,Nr=(u|0)!=0&($t+-2|0)<(u|0)?u+2|0:$t,w=jr+W+Nr|0,Gs(s,32,l,w,d),bs(s,ue,W),Gs(s,48,l,w,d^65536),bs(s,cr,$t),Gs(s,48,Nr-$t|0,0,0),bs(s,L,jr),Gs(s,32,l,w,d^8192);break}P=(u|0)<0?6:u,w?(w=(n[ot>>2]|0)+-28|0,n[ot>>2]=w,A=ze*268435456):(A=ze,w=n[ot>>2]|0),$t=(w|0)<0?b:b+288|0,b=$t;do Ve=~~A>>>0,n[b>>2]=Ve,b=b+4|0,A=(A-+(Ve>>>0))*1e9;while(A!=0);if((w|0)>0)for(O=$t,W=b;;){if(L=(w|0)<29?w:29,w=W+-4|0,w>>>0>=O>>>0){b=0;do Ge=W9(n[w>>2]|0,0,L|0)|0,Ge=$R(Ge|0,Ce|0,b|0,0)|0,Ve=Ce,nt=tT(Ge|0,Ve|0,1e9,0)|0,n[w>>2]=nt,b=eT(Ge|0,Ve|0,1e9,0)|0,w=w+-4|0;while(w>>>0>=O>>>0);b&&(O=O+-4|0,n[O>>2]=b)}for(b=W;!(b>>>0<=O>>>0);)if(w=b+-4|0,!(n[w>>2]|0))b=w;else break;if(w=(n[ot>>2]|0)-L|0,n[ot>>2]=w,(w|0)>0)W=b;else break}else O=$t;if((w|0)<0){u=((P+25|0)/9|0)+1|0,Me=(ft|0)==102;do{if(_e=0-w|0,_e=(_e|0)<9?_e:9,O>>>0>>0){L=(1<<_e)+-1|0,W=1e9>>>_e,ue=0,w=O;do Ve=n[w>>2]|0,n[w>>2]=(Ve>>>_e)+ue,ue=Oe(Ve&L,W)|0,w=w+4|0;while(w>>>0>>0);w=(n[O>>2]|0)==0?O+4|0:O,ue?(n[b>>2]=ue,O=w,w=b+4|0):(O=w,w=b)}else O=(n[O>>2]|0)==0?O+4|0:O,w=b;b=Me?$t:O,b=(w-b>>2|0)>(u|0)?b+(u<<2)|0:w,w=(n[ot>>2]|0)+_e|0,n[ot>>2]=w}while((w|0)<0);w=O,u=b}else w=O,u=b;if(Ve=$t,w>>>0>>0){if(b=(Ve-w>>2)*9|0,L=n[w>>2]|0,L>>>0>=10){O=10;do O=O*10|0,b=b+1|0;while(L>>>0>=O>>>0)}}else b=0;if(Me=(ft|0)==103,nt=(P|0)!=0,O=P-((ft|0)!=102?b:0)+((nt&Me)<<31>>31)|0,(O|0)<(((u-Ve>>2)*9|0)+-9|0)){if(O=O+9216|0,_e=$t+4+(((O|0)/9|0)+-1024<<2)|0,O=((O|0)%9|0)+1|0,(O|0)<9){L=10;do L=L*10|0,O=O+1|0;while((O|0)!=9)}else L=10;if(W=n[_e>>2]|0,ue=(W>>>0)%(L>>>0)|0,O=(_e+4|0)==(u|0),O&(ue|0)==0)O=_e;else if(ze=(((W>>>0)/(L>>>0)|0)&1|0)==0?9007199254740992:9007199254740994,Ge=(L|0)/2|0,A=ue>>>0>>0?.5:O&(ue|0)==(Ge|0)?1:1.5,pr&&(Ge=(o[Jr>>0]|0)==45,A=Ge?-A:A,ze=Ge?-ze:ze),O=W-ue|0,n[_e>>2]=O,ze+A!=ze){if(Ge=O+L|0,n[_e>>2]=Ge,Ge>>>0>999999999)for(b=_e;O=b+-4|0,n[b>>2]=0,O>>>0>>0&&(w=w+-4|0,n[w>>2]=0),Ge=(n[O>>2]|0)+1|0,n[O>>2]=Ge,Ge>>>0>999999999;)b=O;else O=_e;if(b=(Ve-w>>2)*9|0,W=n[w>>2]|0,W>>>0>=10){L=10;do L=L*10|0,b=b+1|0;while(W>>>0>=L>>>0)}}else O=_e;O=O+4|0,O=u>>>0>O>>>0?O:u,Ge=w}else O=u,Ge=w;for(ft=O;;){if(ft>>>0<=Ge>>>0){ot=0;break}if(w=ft+-4|0,!(n[w>>2]|0))ft=w;else{ot=1;break}}u=0-b|0;do if(Me)if(w=((nt^1)&1)+P|0,(w|0)>(b|0)&(b|0)>-5?(L=m+-1|0,P=w+-1-b|0):(L=m+-2|0,P=w+-1|0),w=d&8,w)_e=w;else{if(ot&&(Kt=n[ft+-4>>2]|0,(Kt|0)!=0))if((Kt>>>0)%10|0)O=0;else{O=0,w=10;do w=w*10|0,O=O+1|0;while(!((Kt>>>0)%(w>>>0)|0|0))}else O=9;if(w=((ft-Ve>>2)*9|0)+-9|0,(L|32|0)==102){_e=w-O|0,_e=(_e|0)>0?_e:0,P=(P|0)<(_e|0)?P:_e,_e=0;break}else{_e=w+b-O|0,_e=(_e|0)>0?_e:0,P=(P|0)<(_e|0)?P:_e,_e=0;break}}else L=m,_e=d&8;while(0);if(Me=P|_e,W=(Me|0)!=0&1,ue=(L|32|0)==102,ue)nt=0,w=(b|0)>0?b:0;else{if(w=(b|0)<0?u:b,w=wy(w,((w|0)<0)<<31>>31,Nr)|0,O=Nr,(O-w|0)<2)do w=w+-1|0,o[w>>0]=48;while((O-w|0)<2);o[w+-1>>0]=(b>>31&2)+43,w=w+-2|0,o[w>>0]=L,nt=w,w=O-w|0}if(w=pr+1+P+W+w|0,Gs(s,32,l,w,d),bs(s,Jr,pr),Gs(s,48,l,w,d^65536),ue){L=Ge>>>0>$t>>>0?$t:Ge,_e=cr+9|0,W=_e,ue=cr+8|0,O=L;do{if(b=wy(n[O>>2]|0,0,_e)|0,(O|0)==(L|0))(b|0)==(_e|0)&&(o[ue>>0]=48,b=ue);else if(b>>>0>cr>>>0){Qy(cr|0,48,b-jr|0)|0;do b=b+-1|0;while(b>>>0>cr>>>0)}bs(s,b,W-b|0),O=O+4|0}while(O>>>0<=$t>>>0);if(Me|0&&bs(s,5710,1),O>>>0>>0&(P|0)>0)for(;;){if(b=wy(n[O>>2]|0,0,_e)|0,b>>>0>cr>>>0){Qy(cr|0,48,b-jr|0)|0;do b=b+-1|0;while(b>>>0>cr>>>0)}if(bs(s,b,(P|0)<9?P:9),O=O+4|0,b=P+-9|0,O>>>0>>0&(P|0)>9)P=b;else{P=b;break}}Gs(s,48,P+9|0,9,0)}else{if(Me=ot?ft:Ge+4|0,(P|0)>-1){ot=cr+9|0,_e=(_e|0)==0,u=ot,W=0-jr|0,ue=cr+8|0,L=Ge;do{b=wy(n[L>>2]|0,0,ot)|0,(b|0)==(ot|0)&&(o[ue>>0]=48,b=ue);do if((L|0)==(Ge|0)){if(O=b+1|0,bs(s,b,1),_e&(P|0)<1){b=O;break}bs(s,5710,1),b=O}else{if(b>>>0<=cr>>>0)break;Qy(cr|0,48,b+W|0)|0;do b=b+-1|0;while(b>>>0>cr>>>0)}while(0);jr=u-b|0,bs(s,b,(P|0)>(jr|0)?jr:P),P=P-jr|0,L=L+4|0}while(L>>>0>>0&(P|0)>-1)}Gs(s,48,P+18|0,18,0),bs(s,nt,Nr-nt|0)}Gs(s,32,l,w,d^8192)}else cr=(m&32|0)!=0,w=pr+3|0,Gs(s,32,l,w,d&-65537),bs(s,Jr,pr),bs(s,A!=A|!1?cr?5686:5690:cr?5678:5682,3),Gs(s,32,l,w,d^8192);while(0);return C=Kn,((w|0)<(l|0)?l:w)|0}function _9(s){s=+s;var A=0;return E[Q>>3]=s,A=n[Q>>2]|0,Ce=n[Q+4>>2]|0,A|0}function R3e(s,A){return s=+s,A=A|0,+ +H9(s,A)}function H9(s,A){s=+s,A=A|0;var l=0,u=0,d=0;switch(E[Q>>3]=s,l=n[Q>>2]|0,u=n[Q+4>>2]|0,d=Bv(l|0,u|0,52)|0,d&2047){case 0:{s!=0?(s=+H9(s*18446744073709552e3,A),l=(n[A>>2]|0)+-64|0):l=0,n[A>>2]=l;break}case 2047:break;default:n[A>>2]=(d&2047)+-1022,n[Q>>2]=l,n[Q+4>>2]=u&-2146435073|1071644672,s=+E[Q>>3]}return+s}function T3e(s,A,l){s=s|0,A=A|0,l=l|0;do if(s){if(A>>>0<128){o[s>>0]=A,s=1;break}if(!(n[n[(N3e()|0)+188>>2]>>2]|0))if((A&-128|0)==57216){o[s>>0]=A,s=1;break}else{n[(Iy()|0)>>2]=84,s=-1;break}if(A>>>0<2048){o[s>>0]=A>>>6|192,o[s+1>>0]=A&63|128,s=2;break}if(A>>>0<55296|(A&-8192|0)==57344){o[s>>0]=A>>>12|224,o[s+1>>0]=A>>>6&63|128,o[s+2>>0]=A&63|128,s=3;break}if((A+-65536|0)>>>0<1048576){o[s>>0]=A>>>18|240,o[s+1>>0]=A>>>12&63|128,o[s+2>>0]=A>>>6&63|128,o[s+3>>0]=A&63|128,s=4;break}else{n[(Iy()|0)>>2]=84,s=-1;break}}else s=1;while(0);return s|0}function N3e(){return zR()|0}function M3e(){return zR()|0}function L3e(s,A){s=s|0,A=A|0;var l=0,u=0;for(u=0;;){if((c[5712+u>>0]|0)==(s|0)){s=2;break}if(l=u+1|0,(l|0)==87){l=5800,u=87,s=5;break}else u=l}if((s|0)==2&&(u?(l=5800,s=5):l=5800),(s|0)==5)for(;;){do s=l,l=l+1|0;while((o[s>>0]|0)!=0);if(u=u+-1|0,u)s=5;else break}return O3e(l,n[A+20>>2]|0)|0}function O3e(s,A){return s=s|0,A=A|0,U3e(s,A)|0}function U3e(s,A){return s=s|0,A=A|0,A?A=K3e(n[A>>2]|0,n[A+4>>2]|0,s)|0:A=0,(A|0?A:s)|0}function K3e(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0,w=0,P=0,b=0,O=0,L=0,W=0,ue=0;ue=(n[s>>2]|0)+1794895138|0,m=nd(n[s+8>>2]|0,ue)|0,u=nd(n[s+12>>2]|0,ue)|0,d=nd(n[s+16>>2]|0,ue)|0;e:do if(m>>>0>>2>>>0&&(W=A-(m<<2)|0,u>>>0>>0&d>>>0>>0)&&((d|u)&3|0)==0){for(W=u>>>2,L=d>>>2,O=0;;){if(P=m>>>1,b=O+P|0,w=b<<1,d=w+W|0,u=nd(n[s+(d<<2)>>2]|0,ue)|0,d=nd(n[s+(d+1<<2)>>2]|0,ue)|0,!(d>>>0>>0&u>>>0<(A-d|0)>>>0)){u=0;break e}if(o[s+(d+u)>>0]|0){u=0;break e}if(u=M9(l,s+d|0)|0,!u)break;if(u=(u|0)<0,(m|0)==1){u=0;break e}else O=u?O:b,m=u?P:m-P|0}u=w+L|0,d=nd(n[s+(u<<2)>>2]|0,ue)|0,u=nd(n[s+(u+1<<2)>>2]|0,ue)|0,u>>>0>>0&d>>>0<(A-u|0)>>>0?u=(o[s+(u+d)>>0]|0)==0?s+u|0:0:u=0}else u=0;while(0);return u|0}function nd(s,A){s=s|0,A=A|0;var l=0;return l=z9(s|0)|0,((A|0)==0?s:l)|0}function _3e(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0,w=0,P=0;u=l+16|0,d=n[u>>2]|0,d?m=5:H3e(l)|0?u=0:(d=n[u>>2]|0,m=5);e:do if((m|0)==5){if(P=l+20|0,w=n[P>>2]|0,u=w,(d-w|0)>>>0>>0){u=vv[n[l+36>>2]&7](l,s,A)|0;break}t:do if((o[l+75>>0]|0)>-1){for(w=A;;){if(!w){m=0,d=s;break t}if(d=w+-1|0,(o[s+d>>0]|0)==10)break;w=d}if(u=vv[n[l+36>>2]&7](l,s,w)|0,u>>>0>>0)break e;m=w,d=s+w|0,A=A-w|0,u=n[P>>2]|0}else m=0,d=s;while(0);Tr(u|0,d|0,A|0)|0,n[P>>2]=(n[P>>2]|0)+A,u=m+A|0}while(0);return u|0}function H3e(s){s=s|0;var A=0,l=0;return A=s+74|0,l=o[A>>0]|0,o[A>>0]=l+255|l,A=n[s>>2]|0,A&8?(n[s>>2]=A|32,s=-1):(n[s+8>>2]=0,n[s+4>>2]=0,l=n[s+44>>2]|0,n[s+28>>2]=l,n[s+20>>2]=l,n[s+16>>2]=l+(n[s+48>>2]|0),s=0),s|0}function Zn(s,A){s=y(s),A=y(A);var l=0,u=0;l=q9(s)|0;do if((l&2147483647)>>>0<=2139095040){if(u=q9(A)|0,(u&2147483647)>>>0<=2139095040)if((u^l|0)<0){s=(l|0)<0?A:s;break}else{s=s>2]=s,n[Q>>2]|0|0}function id(s,A){s=y(s),A=y(A);var l=0,u=0;l=G9(s)|0;do if((l&2147483647)>>>0<=2139095040){if(u=G9(A)|0,(u&2147483647)>>>0<=2139095040)if((u^l|0)<0){s=(l|0)<0?s:A;break}else{s=s>2]=s,n[Q>>2]|0|0}function ZR(s,A){s=y(s),A=y(A);var l=0,u=0,d=0,m=0,w=0,P=0,b=0,O=0;m=(p[Q>>2]=s,n[Q>>2]|0),P=(p[Q>>2]=A,n[Q>>2]|0),l=m>>>23&255,w=P>>>23&255,b=m&-2147483648,d=P<<1;e:do if((d|0)!=0&&!((l|0)==255|((q3e(A)|0)&2147483647)>>>0>2139095040)){if(u=m<<1,u>>>0<=d>>>0)return A=y(s*y(0)),y((u|0)==(d|0)?A:s);if(l)u=m&8388607|8388608;else{if(l=m<<9,(l|0)>-1){u=l,l=0;do l=l+-1|0,u=u<<1;while((u|0)>-1)}else l=0;u=m<<1-l}if(w)P=P&8388607|8388608;else{if(m=P<<9,(m|0)>-1){d=0;do d=d+-1|0,m=m<<1;while((m|0)>-1)}else d=0;w=d,P=P<<1-d}d=u-P|0,m=(d|0)>-1;t:do if((l|0)>(w|0)){for(;;){if(m)if(d)u=d;else break;if(u=u<<1,l=l+-1|0,d=u-P|0,m=(d|0)>-1,(l|0)<=(w|0))break t}A=y(s*y(0));break e}while(0);if(m)if(d)u=d;else{A=y(s*y(0));break}if(u>>>0<8388608)do u=u<<1,l=l+-1|0;while(u>>>0<8388608);(l|0)>0?l=u+-8388608|l<<23:l=u>>>(1-l|0),A=(n[Q>>2]=l|b,y(p[Q>>2]))}else O=3;while(0);return(O|0)==3&&(A=y(s*A),A=y(A/A)),y(A)}function q3e(s){return s=y(s),p[Q>>2]=s,n[Q>>2]|0|0}function G3e(s,A){return s=s|0,A=A|0,L9(n[582]|0,s,A)|0}function An(s){s=s|0,Ot()}function By(s){s=s|0}function j3e(s,A){return s=s|0,A=A|0,0}function Y3e(s){return s=s|0,(j9(s+4|0)|0)==-1?(Bf[n[(n[s>>2]|0)+8>>2]&127](s),s=1):s=0,s|0}function j9(s){s=s|0;var A=0;return A=n[s>>2]|0,n[s>>2]=A+-1,A+-1|0}function ep(s){s=s|0,Y3e(s)|0&&W3e(s)}function W3e(s){s=s|0;var A=0;A=s+8|0,(n[A>>2]|0)!=0&&(j9(A)|0)!=-1||Bf[n[(n[s>>2]|0)+16>>2]&127](s)}function Jt(s){s=s|0;var A=0;for(A=(s|0)==0?1:s;s=Cv(A)|0,!(s|0);){if(s=V3e()|0,!s){s=0;break}oY[s&0]()}return s|0}function Y9(s){return s=s|0,Jt(s)|0}function yt(s){s=s|0,Ev(s)}function J3e(s){s=s|0,(o[s+11>>0]|0)<0&&yt(n[s>>2]|0)}function V3e(){var s=0;return s=n[2923]|0,n[2923]=s+0,s|0}function z3e(){}function wv(s,A,l,u){return s=s|0,A=A|0,l=l|0,u=u|0,u=A-u-(l>>>0>s>>>0|0)>>>0,Ce=u,s-l>>>0|0|0}function $R(s,A,l,u){return s=s|0,A=A|0,l=l|0,u=u|0,l=s+l>>>0,Ce=A+u+(l>>>0>>0|0)>>>0,l|0|0}function Qy(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0,w=0;if(m=s+l|0,A=A&255,(l|0)>=67){for(;s&3;)o[s>>0]=A,s=s+1|0;for(u=m&-4|0,d=u-64|0,w=A|A<<8|A<<16|A<<24;(s|0)<=(d|0);)n[s>>2]=w,n[s+4>>2]=w,n[s+8>>2]=w,n[s+12>>2]=w,n[s+16>>2]=w,n[s+20>>2]=w,n[s+24>>2]=w,n[s+28>>2]=w,n[s+32>>2]=w,n[s+36>>2]=w,n[s+40>>2]=w,n[s+44>>2]=w,n[s+48>>2]=w,n[s+52>>2]=w,n[s+56>>2]=w,n[s+60>>2]=w,s=s+64|0;for(;(s|0)<(u|0);)n[s>>2]=w,s=s+4|0}for(;(s|0)<(m|0);)o[s>>0]=A,s=s+1|0;return m-l|0}function W9(s,A,l){return s=s|0,A=A|0,l=l|0,(l|0)<32?(Ce=A<>>32-l,s<>>l,s>>>l|(A&(1<>>l-32|0)}function Tr(s,A,l){s=s|0,A=A|0,l=l|0;var u=0,d=0,m=0;if((l|0)>=8192)return fr(s|0,A|0,l|0)|0;if(m=s|0,d=s+l|0,(s&3)==(A&3)){for(;s&3;){if(!l)return m|0;o[s>>0]=o[A>>0]|0,s=s+1|0,A=A+1|0,l=l-1|0}for(l=d&-4|0,u=l-64|0;(s|0)<=(u|0);)n[s>>2]=n[A>>2],n[s+4>>2]=n[A+4>>2],n[s+8>>2]=n[A+8>>2],n[s+12>>2]=n[A+12>>2],n[s+16>>2]=n[A+16>>2],n[s+20>>2]=n[A+20>>2],n[s+24>>2]=n[A+24>>2],n[s+28>>2]=n[A+28>>2],n[s+32>>2]=n[A+32>>2],n[s+36>>2]=n[A+36>>2],n[s+40>>2]=n[A+40>>2],n[s+44>>2]=n[A+44>>2],n[s+48>>2]=n[A+48>>2],n[s+52>>2]=n[A+52>>2],n[s+56>>2]=n[A+56>>2],n[s+60>>2]=n[A+60>>2],s=s+64|0,A=A+64|0;for(;(s|0)<(l|0);)n[s>>2]=n[A>>2],s=s+4|0,A=A+4|0}else for(l=d-4|0;(s|0)<(l|0);)o[s>>0]=o[A>>0]|0,o[s+1>>0]=o[A+1>>0]|0,o[s+2>>0]=o[A+2>>0]|0,o[s+3>>0]=o[A+3>>0]|0,s=s+4|0,A=A+4|0;for(;(s|0)<(d|0);)o[s>>0]=o[A>>0]|0,s=s+1|0,A=A+1|0;return m|0}function J9(s){s=s|0;var A=0;return A=o[U+(s&255)>>0]|0,(A|0)<8?A|0:(A=o[U+(s>>8&255)>>0]|0,(A|0)<8?A+8|0:(A=o[U+(s>>16&255)>>0]|0,(A|0)<8?A+16|0:(o[U+(s>>>24)>>0]|0)+24|0))}function V9(s,A,l,u,d){s=s|0,A=A|0,l=l|0,u=u|0,d=d|0;var m=0,w=0,P=0,b=0,O=0,L=0,W=0,ue=0,ze=0,_e=0;if(L=s,b=A,O=b,w=l,ue=u,P=ue,!O)return m=(d|0)!=0,P?m?(n[d>>2]=s|0,n[d+4>>2]=A&0,ue=0,d=0,Ce=ue,d|0):(ue=0,d=0,Ce=ue,d|0):(m&&(n[d>>2]=(L>>>0)%(w>>>0),n[d+4>>2]=0),ue=0,d=(L>>>0)/(w>>>0)>>>0,Ce=ue,d|0);m=(P|0)==0;do if(w){if(!m){if(m=(S(P|0)|0)-(S(O|0)|0)|0,m>>>0<=31){W=m+1|0,P=31-m|0,A=m-31>>31,w=W,s=L>>>(W>>>0)&A|O<>>(W>>>0)&A,m=0,P=L<>2]=s|0,n[d+4>>2]=b|A&0,ue=0,d=0,Ce=ue,d|0):(ue=0,d=0,Ce=ue,d|0)}if(m=w-1|0,m&w|0){P=(S(w|0)|0)+33-(S(O|0)|0)|0,_e=64-P|0,W=32-P|0,b=W>>31,ze=P-32|0,A=ze>>31,w=P,s=W-1>>31&O>>>(ze>>>0)|(O<>>(P>>>0))&A,A=A&O>>>(P>>>0),m=L<<_e&b,P=(O<<_e|L>>>(ze>>>0))&b|L<>31;break}return d|0&&(n[d>>2]=m&L,n[d+4>>2]=0),(w|0)==1?(ze=b|A&0,_e=s|0|0,Ce=ze,_e|0):(_e=J9(w|0)|0,ze=O>>>(_e>>>0)|0,_e=O<<32-_e|L>>>(_e>>>0)|0,Ce=ze,_e|0)}else{if(m)return d|0&&(n[d>>2]=(O>>>0)%(w>>>0),n[d+4>>2]=0),ze=0,_e=(O>>>0)/(w>>>0)>>>0,Ce=ze,_e|0;if(!L)return d|0&&(n[d>>2]=0,n[d+4>>2]=(O>>>0)%(P>>>0)),ze=0,_e=(O>>>0)/(P>>>0)>>>0,Ce=ze,_e|0;if(m=P-1|0,!(m&P))return d|0&&(n[d>>2]=s|0,n[d+4>>2]=m&O|A&0),ze=0,_e=O>>>((J9(P|0)|0)>>>0),Ce=ze,_e|0;if(m=(S(P|0)|0)-(S(O|0)|0)|0,m>>>0<=30){A=m+1|0,P=31-m|0,w=A,s=O<>>(A>>>0),A=O>>>(A>>>0),m=0,P=L<>2]=s|0,n[d+4>>2]=b|A&0,ze=0,_e=0,Ce=ze,_e|0):(ze=0,_e=0,Ce=ze,_e|0)}while(0);if(!w)O=P,b=0,P=0;else{W=l|0|0,L=ue|u&0,O=$R(W|0,L|0,-1,-1)|0,l=Ce,b=P,P=0;do u=b,b=m>>>31|b<<1,m=P|m<<1,u=s<<1|u>>>31|0,ue=s>>>31|A<<1|0,wv(O|0,l|0,u|0,ue|0)|0,_e=Ce,ze=_e>>31|((_e|0)<0?-1:0)<<1,P=ze&1,s=wv(u|0,ue|0,ze&W|0,(((_e|0)<0?-1:0)>>31|((_e|0)<0?-1:0)<<1)&L|0)|0,A=Ce,w=w-1|0;while((w|0)!=0);O=b,b=0}return w=0,d|0&&(n[d>>2]=s,n[d+4>>2]=A),ze=(m|0)>>>31|(O|w)<<1|(w<<1|m>>>31)&0|b,_e=(m<<1|0>>>31)&-2|P,Ce=ze,_e|0}function eT(s,A,l,u){return s=s|0,A=A|0,l=l|0,u=u|0,V9(s,A,l,u,0)|0}function tp(s){s=s|0;var A=0,l=0;return l=s+15&-16|0,A=n[B>>2]|0,s=A+l|0,(l|0)>0&(s|0)<(A|0)|(s|0)<0?(Ae()|0,$(12),-1):(n[B>>2]=s,(s|0)>(ne()|0)&&(te()|0)==0?(n[B>>2]=A,$(12),-1):A|0)}function WI(s,A,l){s=s|0,A=A|0,l=l|0;var u=0;if((A|0)<(s|0)&(s|0)<(A+l|0)){for(u=s,A=A+l|0,s=s+l|0;(l|0)>0;)s=s-1|0,A=A-1|0,l=l-1|0,o[s>>0]=o[A>>0]|0;s=u}else Tr(s,A,l)|0;return s|0}function tT(s,A,l,u){s=s|0,A=A|0,l=l|0,u=u|0;var d=0,m=0;return m=C,C=C+16|0,d=m|0,V9(s,A,l,u,d)|0,C=m,Ce=n[d+4>>2]|0,n[d>>2]|0|0}function z9(s){return s=s|0,(s&255)<<24|(s>>8&255)<<16|(s>>16&255)<<8|s>>>24|0}function X3e(s,A,l,u,d,m){s=s|0,A=A|0,l=l|0,u=u|0,d=d|0,m=m|0,X9[s&1](A|0,l|0,u|0,d|0,m|0)}function Z3e(s,A,l){s=s|0,A=A|0,l=y(l),Z9[s&1](A|0,y(l))}function $3e(s,A,l){s=s|0,A=A|0,l=+l,$9[s&31](A|0,+l)}function e8e(s,A,l,u){return s=s|0,A=A|0,l=y(l),u=y(u),y(eY[s&0](A|0,y(l),y(u)))}function t8e(s,A){s=s|0,A=A|0,Bf[s&127](A|0)}function r8e(s,A,l){s=s|0,A=A|0,l=l|0,Qf[s&31](A|0,l|0)}function n8e(s,A){return s=s|0,A=A|0,od[s&31](A|0)|0}function i8e(s,A,l,u,d){s=s|0,A=A|0,l=+l,u=+u,d=d|0,tY[s&1](A|0,+l,+u,d|0)}function s8e(s,A,l,u){s=s|0,A=A|0,l=+l,u=+u,U8e[s&1](A|0,+l,+u)}function o8e(s,A,l,u){return s=s|0,A=A|0,l=l|0,u=u|0,vv[s&7](A|0,l|0,u|0)|0}function a8e(s,A,l,u){return s=s|0,A=A|0,l=l|0,u=u|0,+K8e[s&1](A|0,l|0,u|0)}function A8e(s,A){return s=s|0,A=A|0,+rY[s&15](A|0)}function l8e(s,A,l){return s=s|0,A=A|0,l=+l,_8e[s&1](A|0,+l)|0}function c8e(s,A,l){return s=s|0,A=A|0,l=l|0,nT[s&15](A|0,l|0)|0}function u8e(s,A,l,u,d,m){s=s|0,A=A|0,l=l|0,u=+u,d=+d,m=m|0,H8e[s&1](A|0,l|0,+u,+d,m|0)}function f8e(s,A,l,u,d,m,w){s=s|0,A=A|0,l=l|0,u=u|0,d=d|0,m=m|0,w=w|0,q8e[s&1](A|0,l|0,u|0,d|0,m|0,w|0)}function g8e(s,A,l){return s=s|0,A=A|0,l=l|0,+nY[s&7](A|0,l|0)}function p8e(s){return s=s|0,Dv[s&7]()|0}function h8e(s,A,l,u,d,m){return s=s|0,A=A|0,l=l|0,u=u|0,d=d|0,m=m|0,iY[s&1](A|0,l|0,u|0,d|0,m|0)|0}function d8e(s,A,l,u,d){s=s|0,A=A|0,l=l|0,u=u|0,d=+d,G8e[s&1](A|0,l|0,u|0,+d)}function m8e(s,A,l,u,d,m,w){s=s|0,A=A|0,l=l|0,u=y(u),d=d|0,m=y(m),w=w|0,sY[s&1](A|0,l|0,y(u),d|0,y(m),w|0)}function y8e(s,A,l,u){s=s|0,A=A|0,l=l|0,u=u|0,zI[s&15](A|0,l|0,u|0)}function C8e(s){s=s|0,oY[s&0]()}function E8e(s,A,l,u){s=s|0,A=A|0,l=l|0,u=+u,aY[s&15](A|0,l|0,+u)}function I8e(s,A,l){return s=s|0,A=+A,l=+l,j8e[s&1](+A,+l)|0}function w8e(s,A,l,u,d){s=s|0,A=A|0,l=l|0,u=u|0,d=d|0,iT[s&15](A|0,l|0,u|0,d|0)}function B8e(s,A,l,u,d){s=s|0,A=A|0,l=l|0,u=u|0,d=d|0,R(0)}function Q8e(s,A){s=s|0,A=y(A),R(1)}function Ua(s,A){s=s|0,A=+A,R(2)}function v8e(s,A,l){return s=s|0,A=y(A),l=y(l),R(3),it}function vr(s){s=s|0,R(4)}function JI(s,A){s=s|0,A=A|0,R(5)}function yA(s){return s=s|0,R(6),0}function D8e(s,A,l,u){s=s|0,A=+A,l=+l,u=u|0,R(7)}function S8e(s,A,l){s=s|0,A=+A,l=+l,R(8)}function k8e(s,A,l){return s=s|0,A=A|0,l=l|0,R(9),0}function x8e(s,A,l){return s=s|0,A=A|0,l=l|0,R(10),0}function sd(s){return s=s|0,R(11),0}function P8e(s,A){return s=s|0,A=+A,R(12),0}function VI(s,A){return s=s|0,A=A|0,R(13),0}function b8e(s,A,l,u,d){s=s|0,A=A|0,l=+l,u=+u,d=d|0,R(14)}function F8e(s,A,l,u,d,m){s=s|0,A=A|0,l=l|0,u=u|0,d=d|0,m=m|0,R(15)}function rT(s,A){return s=s|0,A=A|0,R(16),0}function R8e(){return R(17),0}function T8e(s,A,l,u,d){return s=s|0,A=A|0,l=l|0,u=u|0,d=d|0,R(18),0}function N8e(s,A,l,u){s=s|0,A=A|0,l=l|0,u=+u,R(19)}function M8e(s,A,l,u,d,m){s=s|0,A=A|0,l=y(l),u=u|0,d=y(d),m=m|0,R(20)}function Qv(s,A,l){s=s|0,A=A|0,l=l|0,R(21)}function L8e(){R(22)}function vy(s,A,l){s=s|0,A=A|0,l=+l,R(23)}function O8e(s,A){return s=+s,A=+A,R(24),0}function Dy(s,A,l,u){s=s|0,A=A|0,l=l|0,u=u|0,R(25)}var X9=[B8e,TLe],Z9=[Q8e,bo],$9=[Ua,OI,UI,qF,GF,ZA,KI,jF,hy,zc,HI,YF,sv,hf,ov,dy,av,Av,my,Ua,Ua,Ua,Ua,Ua,Ua,Ua,Ua,Ua,Ua,Ua,Ua,Ua],eY=[v8e],Bf=[vr,By,pDe,hDe,dDe,jxe,Yxe,Wxe,lMe,cMe,uMe,ILe,wLe,BLe,qUe,GUe,jUe,Bs,ev,py,pf,_I,cve,uve,iDe,QDe,MDe,eSe,dSe,RSe,zSe,uke,Dke,Hke,ixe,Exe,Mxe,cPe,DPe,HPe,ibe,Ebe,Mbe,tFe,dFe,PFe,YFe,zl,BRe,URe,iTe,wTe,LTe,iNe,pNe,mNe,TNe,LNe,eMe,gMe,dMe,RMe,XMe,Lj,FOe,l4e,Q4e,U4e,aUe,wUe,RUe,MUe,vr,vr,vr,vr,vr,vr,vr,vr,vr,vr,vr,vr,vr,vr,vr,vr,vr,vr,vr,vr,vr,vr,vr,vr,vr,vr,vr,vr,vr,vr,vr,vr,vr,vr,vr,vr,vr,vr,vr,vr,vr,vr,vr,vr,vr,vr,vr,vr,vr,vr,vr,vr,vr,vr,vr,vr],Qf=[JI,MF,LF,LI,Vc,OF,UF,Wg,KF,_F,HF,iv,df,et,ht,Wt,xr,On,Kr,JF,XQe,Eve,sFe,CFe,DTe,NOe,sLe,I9,JI,JI,JI,JI],od=[yA,E3e,NF,v,he,De,vt,It,bt,zr,bi,Fo,JQe,VQe,fve,VFe,_Te,MMe,UOe,hA,yA,yA,yA,yA,yA,yA,yA,yA,yA,yA,yA,yA],tY=[D8e,gve],U8e=[S8e,nMe],vv=[k8e,N9,I3e,Q3e,LSe,pPe,SRe,q4e],K8e=[x8e,Axe],rY=[sd,la,at,Un,pve,hve,dve,mve,yve,Cve,sd,sd,sd,sd,sd,sd],_8e=[P8e,uNe],nT=[VI,j3e,zQe,ADe,iSe,$Se,pke,Kxe,PPe,TFe,ZQ,k4e,VI,VI,VI,VI],H8e=[b8e,KDe],q8e=[F8e,uUe],nY=[rT,Ei,Ive,wve,Bve,Qxe,rT,rT],Dv=[R8e,Qve,NI,La,INe,_Ne,EMe,KUe],iY=[T8e,xI],G8e=[N8e,Abe],sY=[M8e,ZQe],zI=[Qv,T,Ps,un,Ro,ESe,xke,Qbe,Kbe,gy,nOe,g4e,DUe,Qv,Qv,Qv],oY=[L8e],aY=[vy,tv,rv,nv,gf,lv,WF,D,YPe,qRe,aNe,vy,vy,vy,vy,vy],j8e=[O8e,aMe],iT=[Dy,Yke,nRe,ATe,zTe,SNe,WNe,SMe,rLe,jOe,XUe,Dy,Dy,Dy,Dy,Dy];return{_llvm_bswap_i32:z9,dynCall_idd:I8e,dynCall_i:p8e,_i64Subtract:wv,___udivdi3:eT,dynCall_vif:Z3e,setThrew:ka,dynCall_viii:y8e,_bitshift64Lshr:Bv,_bitshift64Shl:W9,dynCall_vi:t8e,dynCall_viiddi:u8e,dynCall_diii:a8e,dynCall_iii:c8e,_memset:Qy,_sbrk:tp,_memcpy:Tr,__GLOBAL__sub_I_Yoga_cpp:fy,dynCall_vii:r8e,___uremdi3:tT,dynCall_vid:$3e,stackAlloc:eo,_nbind_init:A3e,getTempRet0:Sr,dynCall_di:A8e,dynCall_iid:l8e,setTempRet0:aA,_i64Add:$R,dynCall_fiff:e8e,dynCall_iiii:o8e,_emscripten_get_global_libc:C3e,dynCall_viid:E8e,dynCall_viiid:d8e,dynCall_viififi:m8e,dynCall_ii:n8e,__GLOBAL__sub_I_Binding_cc:QOe,dynCall_viiii:w8e,dynCall_iiiiii:h8e,stackSave:Sa,dynCall_viiiii:X3e,__GLOBAL__sub_I_nbind_cc:vve,dynCall_vidd:s8e,_free:Ev,runPostSets:z3e,dynCall_viiiiii:f8e,establishStackSpace:qi,_memmove:WI,stackRestore:Hl,_malloc:Cv,__GLOBAL__sub_I_common_cc:GMe,dynCall_viddi:i8e,dynCall_dii:g8e,dynCall_v:C8e}}(Module.asmGlobalArg,Module.asmLibraryArg,buffer),_llvm_bswap_i32=Module._llvm_bswap_i32=asm._llvm_bswap_i32,getTempRet0=Module.getTempRet0=asm.getTempRet0,___udivdi3=Module.___udivdi3=asm.___udivdi3,setThrew=Module.setThrew=asm.setThrew,_bitshift64Lshr=Module._bitshift64Lshr=asm._bitshift64Lshr,_bitshift64Shl=Module._bitshift64Shl=asm._bitshift64Shl,_memset=Module._memset=asm._memset,_sbrk=Module._sbrk=asm._sbrk,_memcpy=Module._memcpy=asm._memcpy,stackAlloc=Module.stackAlloc=asm.stackAlloc,___uremdi3=Module.___uremdi3=asm.___uremdi3,_nbind_init=Module._nbind_init=asm._nbind_init,_i64Subtract=Module._i64Subtract=asm._i64Subtract,setTempRet0=Module.setTempRet0=asm.setTempRet0,_i64Add=Module._i64Add=asm._i64Add,_emscripten_get_global_libc=Module._emscripten_get_global_libc=asm._emscripten_get_global_libc,__GLOBAL__sub_I_Yoga_cpp=Module.__GLOBAL__sub_I_Yoga_cpp=asm.__GLOBAL__sub_I_Yoga_cpp,__GLOBAL__sub_I_Binding_cc=Module.__GLOBAL__sub_I_Binding_cc=asm.__GLOBAL__sub_I_Binding_cc,stackSave=Module.stackSave=asm.stackSave,__GLOBAL__sub_I_nbind_cc=Module.__GLOBAL__sub_I_nbind_cc=asm.__GLOBAL__sub_I_nbind_cc,_free=Module._free=asm._free,runPostSets=Module.runPostSets=asm.runPostSets,establishStackSpace=Module.establishStackSpace=asm.establishStackSpace,_memmove=Module._memmove=asm._memmove,stackRestore=Module.stackRestore=asm.stackRestore,_malloc=Module._malloc=asm._malloc,__GLOBAL__sub_I_common_cc=Module.__GLOBAL__sub_I_common_cc=asm.__GLOBAL__sub_I_common_cc,dynCall_viiiii=Module.dynCall_viiiii=asm.dynCall_viiiii,dynCall_vif=Module.dynCall_vif=asm.dynCall_vif,dynCall_vid=Module.dynCall_vid=asm.dynCall_vid,dynCall_fiff=Module.dynCall_fiff=asm.dynCall_fiff,dynCall_vi=Module.dynCall_vi=asm.dynCall_vi,dynCall_vii=Module.dynCall_vii=asm.dynCall_vii,dynCall_ii=Module.dynCall_ii=asm.dynCall_ii,dynCall_viddi=Module.dynCall_viddi=asm.dynCall_viddi,dynCall_vidd=Module.dynCall_vidd=asm.dynCall_vidd,dynCall_iiii=Module.dynCall_iiii=asm.dynCall_iiii,dynCall_diii=Module.dynCall_diii=asm.dynCall_diii,dynCall_di=Module.dynCall_di=asm.dynCall_di,dynCall_iid=Module.dynCall_iid=asm.dynCall_iid,dynCall_iii=Module.dynCall_iii=asm.dynCall_iii,dynCall_viiddi=Module.dynCall_viiddi=asm.dynCall_viiddi,dynCall_viiiiii=Module.dynCall_viiiiii=asm.dynCall_viiiiii,dynCall_dii=Module.dynCall_dii=asm.dynCall_dii,dynCall_i=Module.dynCall_i=asm.dynCall_i,dynCall_iiiiii=Module.dynCall_iiiiii=asm.dynCall_iiiiii,dynCall_viiid=Module.dynCall_viiid=asm.dynCall_viiid,dynCall_viififi=Module.dynCall_viififi=asm.dynCall_viififi,dynCall_viii=Module.dynCall_viii=asm.dynCall_viii,dynCall_v=Module.dynCall_v=asm.dynCall_v,dynCall_viid=Module.dynCall_viid=asm.dynCall_viid,dynCall_idd=Module.dynCall_idd=asm.dynCall_idd,dynCall_viiii=Module.dynCall_viiii=asm.dynCall_viiii;Runtime.stackAlloc=Module.stackAlloc,Runtime.stackSave=Module.stackSave,Runtime.stackRestore=Module.stackRestore,Runtime.establishStackSpace=Module.establishStackSpace,Runtime.setTempRet0=Module.setTempRet0,Runtime.getTempRet0=Module.getTempRet0,Module.asm=asm;function ExitStatus(t){this.name="ExitStatus",this.message="Program terminated with exit("+t+")",this.status=t}ExitStatus.prototype=new Error,ExitStatus.prototype.constructor=ExitStatus;var initialStackTop,preloadStartTime=null,calledMain=!1;dependenciesFulfilled=function t(){Module.calledRun||run(),Module.calledRun||(dependenciesFulfilled=t)},Module.callMain=Module.callMain=function t(e){e=e||[],ensureInitRuntime();var r=e.length+1;function o(){for(var g=0;g<4-1;g++)a.push(0)}var a=[allocate(intArrayFromString(Module.thisProgram),"i8",ALLOC_NORMAL)];o();for(var n=0;n0||(preRun(),runDependencies>0)||Module.calledRun)return;function e(){Module.calledRun||(Module.calledRun=!0,!ABORT&&(ensureInitRuntime(),preMain(),Module.onRuntimeInitialized&&Module.onRuntimeInitialized(),Module._main&&shouldRunNow&&Module.callMain(t),postRun()))}Module.setStatus?(Module.setStatus("Running..."),setTimeout(function(){setTimeout(function(){Module.setStatus("")},1),e()},1)):e()}Module.run=Module.run=run;function exit(t,e){e&&Module.noExitRuntime||(Module.noExitRuntime||(ABORT=!0,EXITSTATUS=t,STACKTOP=initialStackTop,exitRuntime(),Module.onExit&&Module.onExit(t)),ENVIRONMENT_IS_NODE&&process.exit(t),Module.quit(t,new ExitStatus(t)))}Module.exit=Module.exit=exit;var abortDecorators=[];function abort(t){Module.onAbort&&Module.onAbort(t),t!==void 0?(Module.print(t),Module.printErr(t),t=JSON.stringify(t)):t="",ABORT=!0,EXITSTATUS=1;var e=` -If this abort() is unexpected, build with -s ASSERTIONS=1 which can give more information.`,r="abort("+t+") at "+stackTrace()+e;throw abortDecorators&&abortDecorators.forEach(function(o){r=o(r,t)}),r}if(Module.abort=Module.abort=abort,Module.preInit)for(typeof Module.preInit=="function"&&(Module.preInit=[Module.preInit]);Module.preInit.length>0;)Module.preInit.pop()();var shouldRunNow=!0;Module.noInitialRun&&(shouldRunNow=!1),run()})});var Lm=_((PYt,REe)=>{"use strict";var oCt=bEe(),aCt=FEe(),hH=!1,dH=null;aCt({},function(t,e){if(!hH){if(hH=!0,t)throw t;dH=e}});if(!hH)throw new Error("Failed to load the yoga module - it needed to be loaded synchronously, but didn't");REe.exports=oCt(dH.bind,dH.lib)});var yH=_((bYt,mH)=>{"use strict";var TEe=t=>Number.isNaN(t)?!1:t>=4352&&(t<=4447||t===9001||t===9002||11904<=t&&t<=12871&&t!==12351||12880<=t&&t<=19903||19968<=t&&t<=42182||43360<=t&&t<=43388||44032<=t&&t<=55203||63744<=t&&t<=64255||65040<=t&&t<=65049||65072<=t&&t<=65131||65281<=t&&t<=65376||65504<=t&&t<=65510||110592<=t&&t<=110593||127488<=t&&t<=127569||131072<=t&&t<=262141);mH.exports=TEe;mH.exports.default=TEe});var MEe=_((FYt,NEe)=>{"use strict";NEe.exports=function(){return/\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F|\uD83D\uDC68(?:\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFB|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|[\u2695\u2696\u2708]\uFE0F|\uD83D[\uDC66\uDC67]|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708])\uFE0F|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C[\uDFFB-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)\uD83C\uDFFB|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB\uDFFC])|\uD83D\uDC69(?:\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB-\uDFFD])|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|(?:(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)\uFE0F|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\u200D[\u2640\u2642])|\uD83C\uDFF4\u200D\u2620)\uFE0F|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF4\uD83C\uDDF2|\uD83C\uDDF6\uD83C\uDDE6|[#\*0-9]\uFE0F\u20E3|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83D\uDC69(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270A-\u270D]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC70\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDCAA\uDD74\uDD7A\uDD90\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD36\uDDB5\uDDB6\uDDBB\uDDD2-\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5\uDEEB\uDEEC\uDEF4-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])\uFE0F|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g}});var ab=_((RYt,CH)=>{"use strict";var ACt=WD(),lCt=yH(),cCt=MEe(),LEe=t=>{if(typeof t!="string"||t.length===0||(t=ACt(t),t.length===0))return 0;t=t.replace(cCt()," ");let e=0;for(let r=0;r=127&&o<=159||o>=768&&o<=879||(o>65535&&r++,e+=lCt(o)?2:1)}return e};CH.exports=LEe;CH.exports.default=LEe});var IH=_((TYt,EH)=>{"use strict";var uCt=ab(),OEe=t=>{let e=0;for(let r of t.split(` -`))e=Math.max(e,uCt(r));return e};EH.exports=OEe;EH.exports.default=OEe});var UEe=_(m2=>{"use strict";var fCt=m2&&m2.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(m2,"__esModule",{value:!0});var gCt=fCt(IH()),wH={};m2.default=t=>{if(t.length===0)return{width:0,height:0};if(wH[t])return wH[t];let e=gCt.default(t),r=t.split(` -`).length;return wH[t]={width:e,height:r},{width:e,height:r}}});var KEe=_(y2=>{"use strict";var pCt=y2&&y2.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(y2,"__esModule",{value:!0});var kn=pCt(Lm()),hCt=(t,e)=>{"position"in e&&t.setPositionType(e.position==="absolute"?kn.default.POSITION_TYPE_ABSOLUTE:kn.default.POSITION_TYPE_RELATIVE)},dCt=(t,e)=>{"marginLeft"in e&&t.setMargin(kn.default.EDGE_START,e.marginLeft||0),"marginRight"in e&&t.setMargin(kn.default.EDGE_END,e.marginRight||0),"marginTop"in e&&t.setMargin(kn.default.EDGE_TOP,e.marginTop||0),"marginBottom"in e&&t.setMargin(kn.default.EDGE_BOTTOM,e.marginBottom||0)},mCt=(t,e)=>{"paddingLeft"in e&&t.setPadding(kn.default.EDGE_LEFT,e.paddingLeft||0),"paddingRight"in e&&t.setPadding(kn.default.EDGE_RIGHT,e.paddingRight||0),"paddingTop"in e&&t.setPadding(kn.default.EDGE_TOP,e.paddingTop||0),"paddingBottom"in e&&t.setPadding(kn.default.EDGE_BOTTOM,e.paddingBottom||0)},yCt=(t,e)=>{var r;"flexGrow"in e&&t.setFlexGrow((r=e.flexGrow)!==null&&r!==void 0?r:0),"flexShrink"in e&&t.setFlexShrink(typeof e.flexShrink=="number"?e.flexShrink:1),"flexDirection"in e&&(e.flexDirection==="row"&&t.setFlexDirection(kn.default.FLEX_DIRECTION_ROW),e.flexDirection==="row-reverse"&&t.setFlexDirection(kn.default.FLEX_DIRECTION_ROW_REVERSE),e.flexDirection==="column"&&t.setFlexDirection(kn.default.FLEX_DIRECTION_COLUMN),e.flexDirection==="column-reverse"&&t.setFlexDirection(kn.default.FLEX_DIRECTION_COLUMN_REVERSE)),"flexBasis"in e&&(typeof e.flexBasis=="number"?t.setFlexBasis(e.flexBasis):typeof e.flexBasis=="string"?t.setFlexBasisPercent(Number.parseInt(e.flexBasis,10)):t.setFlexBasis(NaN)),"alignItems"in e&&((e.alignItems==="stretch"||!e.alignItems)&&t.setAlignItems(kn.default.ALIGN_STRETCH),e.alignItems==="flex-start"&&t.setAlignItems(kn.default.ALIGN_FLEX_START),e.alignItems==="center"&&t.setAlignItems(kn.default.ALIGN_CENTER),e.alignItems==="flex-end"&&t.setAlignItems(kn.default.ALIGN_FLEX_END)),"alignSelf"in e&&((e.alignSelf==="auto"||!e.alignSelf)&&t.setAlignSelf(kn.default.ALIGN_AUTO),e.alignSelf==="flex-start"&&t.setAlignSelf(kn.default.ALIGN_FLEX_START),e.alignSelf==="center"&&t.setAlignSelf(kn.default.ALIGN_CENTER),e.alignSelf==="flex-end"&&t.setAlignSelf(kn.default.ALIGN_FLEX_END)),"justifyContent"in e&&((e.justifyContent==="flex-start"||!e.justifyContent)&&t.setJustifyContent(kn.default.JUSTIFY_FLEX_START),e.justifyContent==="center"&&t.setJustifyContent(kn.default.JUSTIFY_CENTER),e.justifyContent==="flex-end"&&t.setJustifyContent(kn.default.JUSTIFY_FLEX_END),e.justifyContent==="space-between"&&t.setJustifyContent(kn.default.JUSTIFY_SPACE_BETWEEN),e.justifyContent==="space-around"&&t.setJustifyContent(kn.default.JUSTIFY_SPACE_AROUND))},CCt=(t,e)=>{var r,o;"width"in e&&(typeof e.width=="number"?t.setWidth(e.width):typeof e.width=="string"?t.setWidthPercent(Number.parseInt(e.width,10)):t.setWidthAuto()),"height"in e&&(typeof e.height=="number"?t.setHeight(e.height):typeof e.height=="string"?t.setHeightPercent(Number.parseInt(e.height,10)):t.setHeightAuto()),"minWidth"in e&&(typeof e.minWidth=="string"?t.setMinWidthPercent(Number.parseInt(e.minWidth,10)):t.setMinWidth((r=e.minWidth)!==null&&r!==void 0?r:0)),"minHeight"in e&&(typeof e.minHeight=="string"?t.setMinHeightPercent(Number.parseInt(e.minHeight,10)):t.setMinHeight((o=e.minHeight)!==null&&o!==void 0?o:0))},ECt=(t,e)=>{"display"in e&&t.setDisplay(e.display==="flex"?kn.default.DISPLAY_FLEX:kn.default.DISPLAY_NONE)},ICt=(t,e)=>{if("borderStyle"in e){let r=typeof e.borderStyle=="string"?1:0;t.setBorder(kn.default.EDGE_TOP,r),t.setBorder(kn.default.EDGE_BOTTOM,r),t.setBorder(kn.default.EDGE_LEFT,r),t.setBorder(kn.default.EDGE_RIGHT,r)}};y2.default=(t,e={})=>{hCt(t,e),dCt(t,e),mCt(t,e),yCt(t,e),CCt(t,e),ECt(t,e),ICt(t,e)}});var qEe=_((LYt,HEe)=>{"use strict";var C2=ab(),wCt=WD(),BCt=Mw(),QH=new Set(["\x1B","\x9B"]),QCt=39,_Ee=t=>`${QH.values().next().value}[${t}m`,vCt=t=>t.split(" ").map(e=>C2(e)),BH=(t,e,r)=>{let o=[...e],a=!1,n=C2(wCt(t[t.length-1]));for(let[c,f]of o.entries()){let g=C2(f);if(n+g<=r?t[t.length-1]+=f:(t.push(f),n=0),QH.has(f))a=!0;else if(a&&f==="m"){a=!1;continue}a||(n+=g,n===r&&c0&&t.length>1&&(t[t.length-2]+=t.pop())},DCt=t=>{let e=t.split(" "),r=e.length;for(;r>0&&!(C2(e[r-1])>0);)r--;return r===e.length?t:e.slice(0,r).join(" ")+e.slice(r).join("")},SCt=(t,e,r={})=>{if(r.trim!==!1&&t.trim()==="")return"";let o="",a="",n,c=vCt(t),f=[""];for(let[g,p]of t.split(" ").entries()){r.trim!==!1&&(f[f.length-1]=f[f.length-1].trimLeft());let E=C2(f[f.length-1]);if(g!==0&&(E>=e&&(r.wordWrap===!1||r.trim===!1)&&(f.push(""),E=0),(E>0||r.trim===!1)&&(f[f.length-1]+=" ",E++)),r.hard&&c[g]>e){let B=e-E,Q=1+Math.floor((c[g]-B-1)/e);Math.floor((c[g]-1)/e)e&&E>0&&c[g]>0){if(r.wordWrap===!1&&Ee&&r.wordWrap===!1){BH(f,p,e);continue}f[f.length-1]+=p}r.trim!==!1&&(f=f.map(DCt)),o=f.join(` -`);for(let[g,p]of[...o].entries()){if(a+=p,QH.has(p)){let B=parseFloat(/\d[^m]*/.exec(o.slice(g,g+4)));n=B===QCt?null:B}let E=BCt.codes.get(Number(n));n&&E&&(o[g+1]===` -`?a+=_Ee(E):p===` -`&&(a+=_Ee(n)))}return a};HEe.exports=(t,e,r)=>String(t).normalize().replace(/\r\n/g,` -`).split(` -`).map(o=>SCt(o,e,r)).join(` -`)});var YEe=_((OYt,jEe)=>{"use strict";var GEe="[\uD800-\uDBFF][\uDC00-\uDFFF]",kCt=t=>t&&t.exact?new RegExp(`^${GEe}$`):new RegExp(GEe,"g");jEe.exports=kCt});var vH=_((UYt,zEe)=>{"use strict";var xCt=yH(),PCt=YEe(),WEe=Mw(),VEe=["\x1B","\x9B"],Ab=t=>`${VEe[0]}[${t}m`,JEe=(t,e,r)=>{let o=[];t=[...t];for(let a of t){let n=a;a.match(";")&&(a=a.split(";")[0][0]+"0");let c=WEe.codes.get(parseInt(a,10));if(c){let f=t.indexOf(c.toString());f>=0?t.splice(f,1):o.push(Ab(e?c:n))}else if(e){o.push(Ab(0));break}else o.push(Ab(n))}if(e&&(o=o.filter((a,n)=>o.indexOf(a)===n),r!==void 0)){let a=Ab(WEe.codes.get(parseInt(r,10)));o=o.reduce((n,c)=>c===a?[c,...n]:[...n,c],[])}return o.join("")};zEe.exports=(t,e,r)=>{let o=[...t.normalize()],a=[];r=typeof r=="number"?r:o.length;let n=!1,c,f=0,g="";for(let[p,E]of o.entries()){let B=!1;if(VEe.includes(E)){let Q=/\d[^m]*/.exec(t.slice(p,p+18));c=Q&&Q.length>0?Q[0]:void 0,fe&&f<=r)g+=E;else if(f===e&&!n&&c!==void 0)g=JEe(a);else if(f>=r){g+=JEe(a,!0,c);break}}return g}});var ZEe=_((KYt,XEe)=>{"use strict";var Vh=vH(),bCt=ab();function lb(t,e,r){if(t.charAt(e)===" ")return e;for(let o=1;o<=3;o++)if(r){if(t.charAt(e+o)===" ")return e+o}else if(t.charAt(e-o)===" ")return e-o;return e}XEe.exports=(t,e,r)=>{r={position:"end",preferTruncationOnSpace:!1,...r};let{position:o,space:a,preferTruncationOnSpace:n}=r,c="\u2026",f=1;if(typeof t!="string")throw new TypeError(`Expected \`input\` to be a string, got ${typeof t}`);if(typeof e!="number")throw new TypeError(`Expected \`columns\` to be a number, got ${typeof e}`);if(e<1)return"";if(e===1)return c;let g=bCt(t);if(g<=e)return t;if(o==="start"){if(n){let p=lb(t,g-e+1,!0);return c+Vh(t,p,g).trim()}return a===!0&&(c+=" ",f=2),c+Vh(t,g-e+f,g)}if(o==="middle"){a===!0&&(c=" "+c+" ",f=3);let p=Math.floor(e/2);if(n){let E=lb(t,p),B=lb(t,g-(e-p)+1,!0);return Vh(t,0,E)+c+Vh(t,B,g).trim()}return Vh(t,0,p)+c+Vh(t,g-(e-p)+f,g)}if(o==="end"){if(n){let p=lb(t,e-1);return Vh(t,0,p)+c}return a===!0&&(c=" "+c,f=2),Vh(t,0,e-f)+c}throw new Error(`Expected \`options.position\` to be either \`start\`, \`middle\` or \`end\`, got ${o}`)}});var SH=_(E2=>{"use strict";var $Ee=E2&&E2.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(E2,"__esModule",{value:!0});var FCt=$Ee(qEe()),RCt=$Ee(ZEe()),DH={};E2.default=(t,e,r)=>{let o=t+String(e)+String(r);if(DH[o])return DH[o];let a=t;if(r==="wrap"&&(a=FCt.default(t,e,{trim:!1,hard:!0})),r.startsWith("truncate")){let n="end";r==="truncate-middle"&&(n="middle"),r==="truncate-start"&&(n="start"),a=RCt.default(t,e,{position:n})}return DH[o]=a,a}});var xH=_(kH=>{"use strict";Object.defineProperty(kH,"__esModule",{value:!0});var eIe=t=>{let e="";if(t.childNodes.length>0)for(let r of t.childNodes){let o="";r.nodeName==="#text"?o=r.nodeValue:((r.nodeName==="ink-text"||r.nodeName==="ink-virtual-text")&&(o=eIe(r)),o.length>0&&typeof r.internal_transform=="function"&&(o=r.internal_transform(o))),e+=o}return e};kH.default=eIe});var PH=_(ki=>{"use strict";var I2=ki&&ki.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(ki,"__esModule",{value:!0});ki.setTextNodeValue=ki.createTextNode=ki.setStyle=ki.setAttribute=ki.removeChildNode=ki.insertBeforeNode=ki.appendChildNode=ki.createNode=ki.TEXT_NAME=void 0;var TCt=I2(Lm()),tIe=I2(UEe()),NCt=I2(KEe()),MCt=I2(SH()),LCt=I2(xH());ki.TEXT_NAME="#text";ki.createNode=t=>{var e;let r={nodeName:t,style:{},attributes:{},childNodes:[],parentNode:null,yogaNode:t==="ink-virtual-text"?void 0:TCt.default.Node.create()};return t==="ink-text"&&((e=r.yogaNode)===null||e===void 0||e.setMeasureFunc(OCt.bind(null,r))),r};ki.appendChildNode=(t,e)=>{var r;e.parentNode&&ki.removeChildNode(e.parentNode,e),e.parentNode=t,t.childNodes.push(e),e.yogaNode&&((r=t.yogaNode)===null||r===void 0||r.insertChild(e.yogaNode,t.yogaNode.getChildCount())),(t.nodeName==="ink-text"||t.nodeName==="ink-virtual-text")&&ub(t)};ki.insertBeforeNode=(t,e,r)=>{var o,a;e.parentNode&&ki.removeChildNode(e.parentNode,e),e.parentNode=t;let n=t.childNodes.indexOf(r);if(n>=0){t.childNodes.splice(n,0,e),e.yogaNode&&((o=t.yogaNode)===null||o===void 0||o.insertChild(e.yogaNode,n));return}t.childNodes.push(e),e.yogaNode&&((a=t.yogaNode)===null||a===void 0||a.insertChild(e.yogaNode,t.yogaNode.getChildCount())),(t.nodeName==="ink-text"||t.nodeName==="ink-virtual-text")&&ub(t)};ki.removeChildNode=(t,e)=>{var r,o;e.yogaNode&&((o=(r=e.parentNode)===null||r===void 0?void 0:r.yogaNode)===null||o===void 0||o.removeChild(e.yogaNode)),e.parentNode=null;let a=t.childNodes.indexOf(e);a>=0&&t.childNodes.splice(a,1),(t.nodeName==="ink-text"||t.nodeName==="ink-virtual-text")&&ub(t)};ki.setAttribute=(t,e,r)=>{t.attributes[e]=r};ki.setStyle=(t,e)=>{t.style=e,t.yogaNode&&NCt.default(t.yogaNode,e)};ki.createTextNode=t=>{let e={nodeName:"#text",nodeValue:t,yogaNode:void 0,parentNode:null,style:{}};return ki.setTextNodeValue(e,t),e};var OCt=function(t,e){var r,o;let a=t.nodeName==="#text"?t.nodeValue:LCt.default(t),n=tIe.default(a);if(n.width<=e||n.width>=1&&e>0&&e<1)return n;let c=(o=(r=t.style)===null||r===void 0?void 0:r.textWrap)!==null&&o!==void 0?o:"wrap",f=MCt.default(a,e,c);return tIe.default(f)},rIe=t=>{var e;if(!(!t||!t.parentNode))return(e=t.yogaNode)!==null&&e!==void 0?e:rIe(t.parentNode)},ub=t=>{let e=rIe(t);e==null||e.markDirty()};ki.setTextNodeValue=(t,e)=>{typeof e!="string"&&(e=String(e)),t.nodeValue=e,ub(t)}});var aIe=_(w2=>{"use strict";var oIe=w2&&w2.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(w2,"__esModule",{value:!0});var nIe=fH(),UCt=oIe(vEe()),iIe=oIe(Lm()),Zo=PH(),sIe=t=>{t==null||t.unsetMeasureFunc(),t==null||t.freeRecursive()};w2.default=UCt.default({schedulePassiveEffects:nIe.unstable_scheduleCallback,cancelPassiveEffects:nIe.unstable_cancelCallback,now:Date.now,getRootHostContext:()=>({isInsideText:!1}),prepareForCommit:()=>{},resetAfterCommit:t=>{if(t.isStaticDirty){t.isStaticDirty=!1,typeof t.onImmediateRender=="function"&&t.onImmediateRender();return}typeof t.onRender=="function"&&t.onRender()},getChildHostContext:(t,e)=>{let r=t.isInsideText,o=e==="ink-text"||e==="ink-virtual-text";return r===o?t:{isInsideText:o}},shouldSetTextContent:()=>!1,createInstance:(t,e,r,o)=>{if(o.isInsideText&&t==="ink-box")throw new Error(" can\u2019t be nested inside component");let a=t==="ink-text"&&o.isInsideText?"ink-virtual-text":t,n=Zo.createNode(a);for(let[c,f]of Object.entries(e))c!=="children"&&(c==="style"?Zo.setStyle(n,f):c==="internal_transform"?n.internal_transform=f:c==="internal_static"?n.internal_static=!0:Zo.setAttribute(n,c,f));return n},createTextInstance:(t,e,r)=>{if(!r.isInsideText)throw new Error(`Text string "${t}" must be rendered inside component`);return Zo.createTextNode(t)},resetTextContent:()=>{},hideTextInstance:t=>{Zo.setTextNodeValue(t,"")},unhideTextInstance:(t,e)=>{Zo.setTextNodeValue(t,e)},getPublicInstance:t=>t,hideInstance:t=>{var e;(e=t.yogaNode)===null||e===void 0||e.setDisplay(iIe.default.DISPLAY_NONE)},unhideInstance:t=>{var e;(e=t.yogaNode)===null||e===void 0||e.setDisplay(iIe.default.DISPLAY_FLEX)},appendInitialChild:Zo.appendChildNode,appendChild:Zo.appendChildNode,insertBefore:Zo.insertBeforeNode,finalizeInitialChildren:(t,e,r,o)=>(t.internal_static&&(o.isStaticDirty=!0,o.staticNode=t),!1),supportsMutation:!0,appendChildToContainer:Zo.appendChildNode,insertInContainerBefore:Zo.insertBeforeNode,removeChildFromContainer:(t,e)=>{Zo.removeChildNode(t,e),sIe(e.yogaNode)},prepareUpdate:(t,e,r,o,a)=>{t.internal_static&&(a.isStaticDirty=!0);let n={},c=Object.keys(o);for(let f of c)if(o[f]!==r[f]){if(f==="style"&&typeof o.style=="object"&&typeof r.style=="object"){let p=o.style,E=r.style,B=Object.keys(p);for(let Q of B){if(Q==="borderStyle"||Q==="borderColor"){if(typeof n.style!="object"){let x={};n.style=x}n.style.borderStyle=p.borderStyle,n.style.borderColor=p.borderColor}if(p[Q]!==E[Q]){if(typeof n.style!="object"){let x={};n.style=x}n.style[Q]=p[Q]}}continue}n[f]=o[f]}return n},commitUpdate:(t,e)=>{for(let[r,o]of Object.entries(e))r!=="children"&&(r==="style"?Zo.setStyle(t,o):r==="internal_transform"?t.internal_transform=o:r==="internal_static"?t.internal_static=!0:Zo.setAttribute(t,r,o))},commitTextUpdate:(t,e,r)=>{Zo.setTextNodeValue(t,r)},removeChild:(t,e)=>{Zo.removeChildNode(t,e),sIe(e.yogaNode)}})});var lIe=_((jYt,AIe)=>{"use strict";AIe.exports=(t,e=1,r)=>{if(r={indent:" ",includeEmptyLines:!1,...r},typeof t!="string")throw new TypeError(`Expected \`input\` to be a \`string\`, got \`${typeof t}\``);if(typeof e!="number")throw new TypeError(`Expected \`count\` to be a \`number\`, got \`${typeof e}\``);if(typeof r.indent!="string")throw new TypeError(`Expected \`options.indent\` to be a \`string\`, got \`${typeof r.indent}\``);if(e===0)return t;let o=r.includeEmptyLines?/^/gm:/^(?!\s*$)/gm;return t.replace(o,r.indent.repeat(e))}});var cIe=_(B2=>{"use strict";var KCt=B2&&B2.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(B2,"__esModule",{value:!0});var fb=KCt(Lm());B2.default=t=>t.getComputedWidth()-t.getComputedPadding(fb.default.EDGE_LEFT)-t.getComputedPadding(fb.default.EDGE_RIGHT)-t.getComputedBorder(fb.default.EDGE_LEFT)-t.getComputedBorder(fb.default.EDGE_RIGHT)});var uIe=_((WYt,_Ct)=>{_Ct.exports={single:{topLeft:"\u250C",topRight:"\u2510",bottomRight:"\u2518",bottomLeft:"\u2514",vertical:"\u2502",horizontal:"\u2500"},double:{topLeft:"\u2554",topRight:"\u2557",bottomRight:"\u255D",bottomLeft:"\u255A",vertical:"\u2551",horizontal:"\u2550"},round:{topLeft:"\u256D",topRight:"\u256E",bottomRight:"\u256F",bottomLeft:"\u2570",vertical:"\u2502",horizontal:"\u2500"},bold:{topLeft:"\u250F",topRight:"\u2513",bottomRight:"\u251B",bottomLeft:"\u2517",vertical:"\u2503",horizontal:"\u2501"},singleDouble:{topLeft:"\u2553",topRight:"\u2556",bottomRight:"\u255C",bottomLeft:"\u2559",vertical:"\u2551",horizontal:"\u2500"},doubleSingle:{topLeft:"\u2552",topRight:"\u2555",bottomRight:"\u255B",bottomLeft:"\u2558",vertical:"\u2502",horizontal:"\u2550"},classic:{topLeft:"+",topRight:"+",bottomRight:"+",bottomLeft:"+",vertical:"|",horizontal:"-"}}});var gIe=_((JYt,bH)=>{"use strict";var fIe=uIe();bH.exports=fIe;bH.exports.default=fIe});var hIe=_((VYt,pIe)=>{"use strict";var HCt=(t,e,r)=>{let o=t.indexOf(e);if(o===-1)return t;let a=e.length,n=0,c="";do c+=t.substr(n,o-n)+e+r,n=o+a,o=t.indexOf(e,n);while(o!==-1);return c+=t.substr(n),c},qCt=(t,e,r,o)=>{let a=0,n="";do{let c=t[o-1]==="\r";n+=t.substr(a,(c?o-1:o)-a)+e+(c?`\r -`:` -`)+r,a=o+1,o=t.indexOf(` -`,a)}while(o!==-1);return n+=t.substr(a),n};pIe.exports={stringReplaceAll:HCt,stringEncaseCRLFWithFirstIndex:qCt}});var EIe=_((zYt,CIe)=>{"use strict";var GCt=/(?:\\(u(?:[a-f\d]{4}|\{[a-f\d]{1,6}\})|x[a-f\d]{2}|.))|(?:\{(~)?(\w+(?:\([^)]*\))?(?:\.\w+(?:\([^)]*\))?)*)(?:[ \t]|(?=\r?\n)))|(\})|((?:.|[\r\n\f])+?)/gi,dIe=/(?:^|\.)(\w+)(?:\(([^)]*)\))?/g,jCt=/^(['"])((?:\\.|(?!\1)[^\\])*)\1$/,YCt=/\\(u(?:[a-f\d]{4}|{[a-f\d]{1,6}})|x[a-f\d]{2}|.)|([^\\])/gi,WCt=new Map([["n",` -`],["r","\r"],["t"," "],["b","\b"],["f","\f"],["v","\v"],["0","\0"],["\\","\\"],["e","\x1B"],["a","\x07"]]);function yIe(t){let e=t[0]==="u",r=t[1]==="{";return e&&!r&&t.length===5||t[0]==="x"&&t.length===3?String.fromCharCode(parseInt(t.slice(1),16)):e&&r?String.fromCodePoint(parseInt(t.slice(2,-1),16)):WCt.get(t)||t}function JCt(t,e){let r=[],o=e.trim().split(/\s*,\s*/g),a;for(let n of o){let c=Number(n);if(!Number.isNaN(c))r.push(c);else if(a=n.match(jCt))r.push(a[2].replace(YCt,(f,g,p)=>g?yIe(g):p));else throw new Error(`Invalid Chalk template style argument: ${n} (in style '${t}')`)}return r}function VCt(t){dIe.lastIndex=0;let e=[],r;for(;(r=dIe.exec(t))!==null;){let o=r[1];if(r[2]){let a=JCt(o,r[2]);e.push([o].concat(a))}else e.push([o])}return e}function mIe(t,e){let r={};for(let a of e)for(let n of a.styles)r[n[0]]=a.inverse?null:n.slice(1);let o=t;for(let[a,n]of Object.entries(r))if(!!Array.isArray(n)){if(!(a in o))throw new Error(`Unknown Chalk style: ${a}`);o=n.length>0?o[a](...n):o[a]}return o}CIe.exports=(t,e)=>{let r=[],o=[],a=[];if(e.replace(GCt,(n,c,f,g,p,E)=>{if(c)a.push(yIe(c));else if(g){let B=a.join("");a=[],o.push(r.length===0?B:mIe(t,r)(B)),r.push({inverse:f,styles:VCt(g)})}else if(p){if(r.length===0)throw new Error("Found extraneous } in Chalk template literal");o.push(mIe(t,r)(a.join(""))),a=[],r.pop()}else a.push(E)}),o.push(a.join("")),r.length>0){let n=`Chalk template literal is missing ${r.length} closing bracket${r.length===1?"":"s"} (\`}\`)`;throw new Error(n)}return o.join("")}});var mb=_((XYt,DIe)=>{"use strict";var Q2=Mw(),{stdout:RH,stderr:TH}=JN(),{stringReplaceAll:zCt,stringEncaseCRLFWithFirstIndex:XCt}=hIe(),{isArray:gb}=Array,wIe=["ansi","ansi","ansi256","ansi16m"],ZE=Object.create(null),ZCt=(t,e={})=>{if(e.level&&!(Number.isInteger(e.level)&&e.level>=0&&e.level<=3))throw new Error("The `level` option should be an integer from 0 to 3");let r=RH?RH.level:0;t.level=e.level===void 0?r:e.level},NH=class{constructor(e){return BIe(e)}},BIe=t=>{let e={};return ZCt(e,t),e.template=(...r)=>vIe(e.template,...r),Object.setPrototypeOf(e,pb.prototype),Object.setPrototypeOf(e.template,e),e.template.constructor=()=>{throw new Error("`chalk.constructor()` is deprecated. Use `new chalk.Instance()` instead.")},e.template.Instance=NH,e.template};function pb(t){return BIe(t)}for(let[t,e]of Object.entries(Q2))ZE[t]={get(){let r=hb(this,MH(e.open,e.close,this._styler),this._isEmpty);return Object.defineProperty(this,t,{value:r}),r}};ZE.visible={get(){let t=hb(this,this._styler,!0);return Object.defineProperty(this,"visible",{value:t}),t}};var QIe=["rgb","hex","keyword","hsl","hsv","hwb","ansi","ansi256"];for(let t of QIe)ZE[t]={get(){let{level:e}=this;return function(...r){let o=MH(Q2.color[wIe[e]][t](...r),Q2.color.close,this._styler);return hb(this,o,this._isEmpty)}}};for(let t of QIe){let e="bg"+t[0].toUpperCase()+t.slice(1);ZE[e]={get(){let{level:r}=this;return function(...o){let a=MH(Q2.bgColor[wIe[r]][t](...o),Q2.bgColor.close,this._styler);return hb(this,a,this._isEmpty)}}}}var $Ct=Object.defineProperties(()=>{},{...ZE,level:{enumerable:!0,get(){return this._generator.level},set(t){this._generator.level=t}}}),MH=(t,e,r)=>{let o,a;return r===void 0?(o=t,a=e):(o=r.openAll+t,a=e+r.closeAll),{open:t,close:e,openAll:o,closeAll:a,parent:r}},hb=(t,e,r)=>{let o=(...a)=>gb(a[0])&&gb(a[0].raw)?IIe(o,vIe(o,...a)):IIe(o,a.length===1?""+a[0]:a.join(" "));return Object.setPrototypeOf(o,$Ct),o._generator=t,o._styler=e,o._isEmpty=r,o},IIe=(t,e)=>{if(t.level<=0||!e)return t._isEmpty?"":e;let r=t._styler;if(r===void 0)return e;let{openAll:o,closeAll:a}=r;if(e.indexOf("\x1B")!==-1)for(;r!==void 0;)e=zCt(e,r.close,r.open),r=r.parent;let n=e.indexOf(` -`);return n!==-1&&(e=XCt(e,a,o,n)),o+e+a},FH,vIe=(t,...e)=>{let[r]=e;if(!gb(r)||!gb(r.raw))return e.join(" ");let o=e.slice(1),a=[r.raw[0]];for(let n=1;n{"use strict";var eEt=D2&&D2.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(D2,"__esModule",{value:!0});var v2=eEt(mb()),tEt=/^(rgb|hsl|hsv|hwb)\(\s?(\d+),\s?(\d+),\s?(\d+)\s?\)$/,rEt=/^(ansi|ansi256)\(\s?(\d+)\s?\)$/,yb=(t,e)=>e==="foreground"?t:"bg"+t[0].toUpperCase()+t.slice(1);D2.default=(t,e,r)=>{if(!e)return t;if(e in v2.default){let a=yb(e,r);return v2.default[a](t)}if(e.startsWith("#")){let a=yb("hex",r);return v2.default[a](e)(t)}if(e.startsWith("ansi")){let a=rEt.exec(e);if(!a)return t;let n=yb(a[1],r),c=Number(a[2]);return v2.default[n](c)(t)}if(e.startsWith("rgb")||e.startsWith("hsl")||e.startsWith("hsv")||e.startsWith("hwb")){let a=tEt.exec(e);if(!a)return t;let n=yb(a[1],r),c=Number(a[2]),f=Number(a[3]),g=Number(a[4]);return v2.default[n](c,f,g)(t)}return t}});var kIe=_(S2=>{"use strict";var SIe=S2&&S2.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(S2,"__esModule",{value:!0});var nEt=SIe(gIe()),OH=SIe(LH());S2.default=(t,e,r,o)=>{if(typeof r.style.borderStyle=="string"){let a=r.yogaNode.getComputedWidth(),n=r.yogaNode.getComputedHeight(),c=r.style.borderColor,f=nEt.default[r.style.borderStyle],g=OH.default(f.topLeft+f.horizontal.repeat(a-2)+f.topRight,c,"foreground"),p=(OH.default(f.vertical,c,"foreground")+` -`).repeat(n-2),E=OH.default(f.bottomLeft+f.horizontal.repeat(a-2)+f.bottomRight,c,"foreground");o.write(t,e,g,{transformers:[]}),o.write(t,e+1,p,{transformers:[]}),o.write(t+a-1,e+1,p,{transformers:[]}),o.write(t,e+n-1,E,{transformers:[]})}}});var PIe=_(k2=>{"use strict";var Om=k2&&k2.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(k2,"__esModule",{value:!0});var iEt=Om(Lm()),sEt=Om(IH()),oEt=Om(lIe()),aEt=Om(SH()),AEt=Om(cIe()),lEt=Om(xH()),cEt=Om(kIe()),uEt=(t,e)=>{var r;let o=(r=t.childNodes[0])===null||r===void 0?void 0:r.yogaNode;if(o){let a=o.getComputedLeft(),n=o.getComputedTop();e=` -`.repeat(n)+oEt.default(e,a)}return e},xIe=(t,e,r)=>{var o;let{offsetX:a=0,offsetY:n=0,transformers:c=[],skipStaticElements:f}=r;if(f&&t.internal_static)return;let{yogaNode:g}=t;if(g){if(g.getDisplay()===iEt.default.DISPLAY_NONE)return;let p=a+g.getComputedLeft(),E=n+g.getComputedTop(),B=c;if(typeof t.internal_transform=="function"&&(B=[t.internal_transform,...c]),t.nodeName==="ink-text"){let Q=lEt.default(t);if(Q.length>0){let x=sEt.default(Q),C=AEt.default(g);if(x>C){let N=(o=t.style.textWrap)!==null&&o!==void 0?o:"wrap";Q=aEt.default(Q,C,N)}Q=uEt(t,Q),e.write(p,E,Q,{transformers:B})}return}if(t.nodeName==="ink-box"&&cEt.default(p,E,t,e),t.nodeName==="ink-root"||t.nodeName==="ink-box")for(let Q of t.childNodes)xIe(Q,e,{offsetX:p,offsetY:E,transformers:B,skipStaticElements:f})}};k2.default=xIe});var FIe=_((tWt,bIe)=>{"use strict";bIe.exports=t=>{t=Object.assign({onlyFirst:!1},t);let e=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:[a-zA-Z\\d]*(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))"].join("|");return new RegExp(e,t.onlyFirst?void 0:"g")}});var TIe=_((rWt,UH)=>{"use strict";var fEt=FIe(),RIe=t=>typeof t=="string"?t.replace(fEt(),""):t;UH.exports=RIe;UH.exports.default=RIe});var LIe=_((nWt,MIe)=>{"use strict";var NIe="[\uD800-\uDBFF][\uDC00-\uDFFF]";MIe.exports=t=>t&&t.exact?new RegExp(`^${NIe}$`):new RegExp(NIe,"g")});var UIe=_((iWt,KH)=>{"use strict";var gEt=TIe(),pEt=LIe(),OIe=t=>gEt(t).replace(pEt()," ").length;KH.exports=OIe;KH.exports.default=OIe});var HIe=_(x2=>{"use strict";var _Ie=x2&&x2.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(x2,"__esModule",{value:!0});var KIe=_Ie(vH()),hEt=_Ie(UIe()),_H=class{constructor(e){this.writes=[];let{width:r,height:o}=e;this.width=r,this.height=o}write(e,r,o,a){let{transformers:n}=a;!o||this.writes.push({x:e,y:r,text:o,transformers:n})}get(){let e=[];for(let o=0;oo.trimRight()).join(` -`),height:e.length}}};x2.default=_H});var jIe=_(P2=>{"use strict";var HH=P2&&P2.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(P2,"__esModule",{value:!0});var dEt=HH(Lm()),qIe=HH(PIe()),GIe=HH(HIe());P2.default=(t,e)=>{var r;if(t.yogaNode.setWidth(e),t.yogaNode){t.yogaNode.calculateLayout(void 0,void 0,dEt.default.DIRECTION_LTR);let o=new GIe.default({width:t.yogaNode.getComputedWidth(),height:t.yogaNode.getComputedHeight()});qIe.default(t,o,{skipStaticElements:!0});let a;!((r=t.staticNode)===null||r===void 0)&&r.yogaNode&&(a=new GIe.default({width:t.staticNode.yogaNode.getComputedWidth(),height:t.staticNode.yogaNode.getComputedHeight()}),qIe.default(t.staticNode,a,{skipStaticElements:!1}));let{output:n,height:c}=o.get();return{output:n,outputHeight:c,staticOutput:a?`${a.get().output} -`:""}}return{output:"",outputHeight:0,staticOutput:""}}});var VIe=_((aWt,JIe)=>{"use strict";var YIe=Ie("stream"),WIe=["assert","count","countReset","debug","dir","dirxml","error","group","groupCollapsed","groupEnd","info","log","table","time","timeEnd","timeLog","trace","warn"],qH={},mEt=t=>{let e=new YIe.PassThrough,r=new YIe.PassThrough;e.write=a=>t("stdout",a),r.write=a=>t("stderr",a);let o=new console.Console(e,r);for(let a of WIe)qH[a]=console[a],console[a]=o[a];return()=>{for(let a of WIe)console[a]=qH[a];qH={}}};JIe.exports=mEt});var jH=_(GH=>{"use strict";Object.defineProperty(GH,"__esModule",{value:!0});GH.default=new WeakMap});var WH=_(YH=>{"use strict";Object.defineProperty(YH,"__esModule",{value:!0});var yEt=dn(),zIe=yEt.createContext({exit:()=>{}});zIe.displayName="InternalAppContext";YH.default=zIe});var VH=_(JH=>{"use strict";Object.defineProperty(JH,"__esModule",{value:!0});var CEt=dn(),XIe=CEt.createContext({stdin:void 0,setRawMode:()=>{},isRawModeSupported:!1,internal_exitOnCtrlC:!0});XIe.displayName="InternalStdinContext";JH.default=XIe});var XH=_(zH=>{"use strict";Object.defineProperty(zH,"__esModule",{value:!0});var EEt=dn(),ZIe=EEt.createContext({stdout:void 0,write:()=>{}});ZIe.displayName="InternalStdoutContext";zH.default=ZIe});var $H=_(ZH=>{"use strict";Object.defineProperty(ZH,"__esModule",{value:!0});var IEt=dn(),$Ie=IEt.createContext({stderr:void 0,write:()=>{}});$Ie.displayName="InternalStderrContext";ZH.default=$Ie});var Cb=_(eq=>{"use strict";Object.defineProperty(eq,"__esModule",{value:!0});var wEt=dn(),ewe=wEt.createContext({activeId:void 0,add:()=>{},remove:()=>{},activate:()=>{},deactivate:()=>{},enableFocus:()=>{},disableFocus:()=>{},focusNext:()=>{},focusPrevious:()=>{}});ewe.displayName="InternalFocusContext";eq.default=ewe});var rwe=_((pWt,twe)=>{"use strict";var BEt=/[|\\{}()[\]^$+*?.-]/g;twe.exports=t=>{if(typeof t!="string")throw new TypeError("Expected a string");return t.replace(BEt,"\\$&")}});var owe=_((hWt,swe)=>{"use strict";var QEt=rwe(),vEt=typeof process=="object"&&process&&typeof process.cwd=="function"?process.cwd():".",iwe=[].concat(Ie("module").builtinModules,"bootstrap_node","node").map(t=>new RegExp(`(?:\\((?:node:)?${t}(?:\\.js)?:\\d+:\\d+\\)$|^\\s*at (?:node:)?${t}(?:\\.js)?:\\d+:\\d+$)`));iwe.push(/\((?:node:)?internal\/[^:]+:\d+:\d+\)$/,/\s*at (?:node:)?internal\/[^:]+:\d+:\d+$/,/\/\.node-spawn-wrap-\w+-\w+\/node:\d+:\d+\)?$/);var b2=class{constructor(e){e={ignoredPackages:[],...e},"internals"in e||(e.internals=b2.nodeInternals()),"cwd"in e||(e.cwd=vEt),this._cwd=e.cwd.replace(/\\/g,"/"),this._internals=[].concat(e.internals,DEt(e.ignoredPackages)),this._wrapCallSite=e.wrapCallSite||!1}static nodeInternals(){return[...iwe]}clean(e,r=0){r=" ".repeat(r),Array.isArray(e)||(e=e.split(` -`)),!/^\s*at /.test(e[0])&&/^\s*at /.test(e[1])&&(e=e.slice(1));let o=!1,a=null,n=[];return e.forEach(c=>{if(c=c.replace(/\\/g,"/"),this._internals.some(g=>g.test(c)))return;let f=/^\s*at /.test(c);o?c=c.trimEnd().replace(/^(\s+)at /,"$1"):(c=c.trim(),f&&(c=c.slice(3))),c=c.replace(`${this._cwd}/`,""),c&&(f?(a&&(n.push(a),a=null),n.push(c)):(o=!0,a=c))}),n.map(c=>`${r}${c} -`).join("")}captureString(e,r=this.captureString){typeof e=="function"&&(r=e,e=1/0);let{stackTraceLimit:o}=Error;e&&(Error.stackTraceLimit=e);let a={};Error.captureStackTrace(a,r);let{stack:n}=a;return Error.stackTraceLimit=o,this.clean(n)}capture(e,r=this.capture){typeof e=="function"&&(r=e,e=1/0);let{prepareStackTrace:o,stackTraceLimit:a}=Error;Error.prepareStackTrace=(f,g)=>this._wrapCallSite?g.map(this._wrapCallSite):g,e&&(Error.stackTraceLimit=e);let n={};Error.captureStackTrace(n,r);let{stack:c}=n;return Object.assign(Error,{prepareStackTrace:o,stackTraceLimit:a}),c}at(e=this.at){let[r]=this.capture(1,e);if(!r)return{};let o={line:r.getLineNumber(),column:r.getColumnNumber()};nwe(o,r.getFileName(),this._cwd),r.isConstructor()&&(o.constructor=!0),r.isEval()&&(o.evalOrigin=r.getEvalOrigin()),r.isNative()&&(o.native=!0);let a;try{a=r.getTypeName()}catch{}a&&a!=="Object"&&a!=="[object Object]"&&(o.type=a);let n=r.getFunctionName();n&&(o.function=n);let c=r.getMethodName();return c&&n!==c&&(o.method=c),o}parseLine(e){let r=e&&e.match(SEt);if(!r)return null;let o=r[1]==="new",a=r[2],n=r[3],c=r[4],f=Number(r[5]),g=Number(r[6]),p=r[7],E=r[8],B=r[9],Q=r[10]==="native",x=r[11]===")",C,N={};if(E&&(N.line=Number(E)),B&&(N.column=Number(B)),x&&p){let U=0;for(let H=p.length-1;H>0;H--)if(p.charAt(H)===")")U++;else if(p.charAt(H)==="("&&p.charAt(H-1)===" "&&(U--,U===-1&&p.charAt(H-1)===" ")){let X=p.slice(0,H-1);p=p.slice(H+1),a+=` (${X}`;break}}if(a){let U=a.match(kEt);U&&(a=U[1],C=U[2])}return nwe(N,p,this._cwd),o&&(N.constructor=!0),n&&(N.evalOrigin=n,N.evalLine=f,N.evalColumn=g,N.evalFile=c&&c.replace(/\\/g,"/")),Q&&(N.native=!0),a&&(N.function=a),C&&a!==C&&(N.method=C),N}};function nwe(t,e,r){e&&(e=e.replace(/\\/g,"/"),e.startsWith(`${r}/`)&&(e=e.slice(r.length+1)),t.file=e)}function DEt(t){if(t.length===0)return[];let e=t.map(r=>QEt(r));return new RegExp(`[/\\\\]node_modules[/\\\\](?:${e.join("|")})[/\\\\][^:]+:\\d+:\\d+`)}var SEt=new RegExp("^(?:\\s*at )?(?:(new) )?(?:(.*?) \\()?(?:eval at ([^ ]+) \\((.+?):(\\d+):(\\d+)\\), )?(?:(.+?):(\\d+):(\\d+)|(native))(\\)?)$"),kEt=/^(.*?) \[as (.*?)\]$/;swe.exports=b2});var Awe=_((dWt,awe)=>{"use strict";awe.exports=(t,e)=>t.replace(/^\t+/gm,r=>" ".repeat(r.length*(e||2)))});var cwe=_((mWt,lwe)=>{"use strict";var xEt=Awe(),PEt=(t,e)=>{let r=[],o=t-e,a=t+e;for(let n=o;n<=a;n++)r.push(n);return r};lwe.exports=(t,e,r)=>{if(typeof t!="string")throw new TypeError("Source code is missing.");if(!e||e<1)throw new TypeError("Line number must start from `1`.");if(t=xEt(t).split(/\r?\n/),!(e>t.length))return r={around:3,...r},PEt(e,r.around).filter(o=>t[o-1]!==void 0).map(o=>({line:o,value:t[o-1]}))}});var Eb=_(kc=>{"use strict";var bEt=kc&&kc.__createBinding||(Object.create?function(t,e,r,o){o===void 0&&(o=r),Object.defineProperty(t,o,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,o){o===void 0&&(o=r),t[o]=e[r]}),FEt=kc&&kc.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),REt=kc&&kc.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!=="default"&&Object.hasOwnProperty.call(t,r)&&bEt(e,t,r);return FEt(e,t),e},TEt=kc&&kc.__rest||function(t,e){var r={};for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&e.indexOf(o)<0&&(r[o]=t[o]);if(t!=null&&typeof Object.getOwnPropertySymbols=="function")for(var a=0,o=Object.getOwnPropertySymbols(t);a{var{children:r}=t,o=TEt(t,["children"]);let a=Object.assign(Object.assign({},o),{marginLeft:o.marginLeft||o.marginX||o.margin||0,marginRight:o.marginRight||o.marginX||o.margin||0,marginTop:o.marginTop||o.marginY||o.margin||0,marginBottom:o.marginBottom||o.marginY||o.margin||0,paddingLeft:o.paddingLeft||o.paddingX||o.padding||0,paddingRight:o.paddingRight||o.paddingX||o.padding||0,paddingTop:o.paddingTop||o.paddingY||o.padding||0,paddingBottom:o.paddingBottom||o.paddingY||o.padding||0});return uwe.default.createElement("ink-box",{ref:e,style:a},r)});tq.displayName="Box";tq.defaultProps={flexDirection:"row",flexGrow:0,flexShrink:1};kc.default=tq});var iq=_(F2=>{"use strict";var rq=F2&&F2.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(F2,"__esModule",{value:!0});var NEt=rq(dn()),$E=rq(mb()),fwe=rq(LH()),nq=({color:t,backgroundColor:e,dimColor:r,bold:o,italic:a,underline:n,strikethrough:c,inverse:f,wrap:g,children:p})=>{if(p==null)return null;let E=B=>(r&&(B=$E.default.dim(B)),t&&(B=fwe.default(B,t,"foreground")),e&&(B=fwe.default(B,e,"background")),o&&(B=$E.default.bold(B)),a&&(B=$E.default.italic(B)),n&&(B=$E.default.underline(B)),c&&(B=$E.default.strikethrough(B)),f&&(B=$E.default.inverse(B)),B);return NEt.default.createElement("ink-text",{style:{flexGrow:0,flexShrink:1,flexDirection:"row",textWrap:g},internal_transform:E},p)};nq.displayName="Text";nq.defaultProps={dimColor:!1,bold:!1,italic:!1,underline:!1,strikethrough:!1,wrap:"wrap"};F2.default=nq});var dwe=_(xc=>{"use strict";var MEt=xc&&xc.__createBinding||(Object.create?function(t,e,r,o){o===void 0&&(o=r),Object.defineProperty(t,o,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,o){o===void 0&&(o=r),t[o]=e[r]}),LEt=xc&&xc.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),OEt=xc&&xc.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!=="default"&&Object.hasOwnProperty.call(t,r)&&MEt(e,t,r);return LEt(e,t),e},R2=xc&&xc.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(xc,"__esModule",{value:!0});var gwe=OEt(Ie("fs")),Os=R2(dn()),pwe=R2(owe()),UEt=R2(cwe()),Eg=R2(Eb()),Uu=R2(iq()),hwe=new pwe.default({cwd:process.cwd(),internals:pwe.default.nodeInternals()}),KEt=({error:t})=>{let e=t.stack?t.stack.split(` -`).slice(1):void 0,r=e?hwe.parseLine(e[0]):void 0,o,a=0;if((r==null?void 0:r.file)&&(r==null?void 0:r.line)&&gwe.existsSync(r.file)){let n=gwe.readFileSync(r.file,"utf8");if(o=UEt.default(n,r.line),o)for(let{line:c}of o)a=Math.max(a,String(c).length)}return Os.default.createElement(Eg.default,{flexDirection:"column",padding:1},Os.default.createElement(Eg.default,null,Os.default.createElement(Uu.default,{backgroundColor:"red",color:"white"}," ","ERROR"," "),Os.default.createElement(Uu.default,null," ",t.message)),r&&Os.default.createElement(Eg.default,{marginTop:1},Os.default.createElement(Uu.default,{dimColor:!0},r.file,":",r.line,":",r.column)),r&&o&&Os.default.createElement(Eg.default,{marginTop:1,flexDirection:"column"},o.map(({line:n,value:c})=>Os.default.createElement(Eg.default,{key:n},Os.default.createElement(Eg.default,{width:a+1},Os.default.createElement(Uu.default,{dimColor:n!==r.line,backgroundColor:n===r.line?"red":void 0,color:n===r.line?"white":void 0},String(n).padStart(a," "),":")),Os.default.createElement(Uu.default,{key:n,backgroundColor:n===r.line?"red":void 0,color:n===r.line?"white":void 0}," "+c)))),t.stack&&Os.default.createElement(Eg.default,{marginTop:1,flexDirection:"column"},t.stack.split(` -`).slice(1).map(n=>{let c=hwe.parseLine(n);return c?Os.default.createElement(Eg.default,{key:n},Os.default.createElement(Uu.default,{dimColor:!0},"- "),Os.default.createElement(Uu.default,{dimColor:!0,bold:!0},c.function),Os.default.createElement(Uu.default,{dimColor:!0,color:"gray"}," ","(",c.file,":",c.line,":",c.column,")")):Os.default.createElement(Eg.default,{key:n},Os.default.createElement(Uu.default,{dimColor:!0},"- "),Os.default.createElement(Uu.default,{dimColor:!0,bold:!0},n))})))};xc.default=KEt});var ywe=_(Pc=>{"use strict";var _Et=Pc&&Pc.__createBinding||(Object.create?function(t,e,r,o){o===void 0&&(o=r),Object.defineProperty(t,o,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,o){o===void 0&&(o=r),t[o]=e[r]}),HEt=Pc&&Pc.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),qEt=Pc&&Pc.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!=="default"&&Object.hasOwnProperty.call(t,r)&&_Et(e,t,r);return HEt(e,t),e},Km=Pc&&Pc.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(Pc,"__esModule",{value:!0});var Um=qEt(dn()),mwe=Km(tH()),GEt=Km(WH()),jEt=Km(VH()),YEt=Km(XH()),WEt=Km($H()),JEt=Km(Cb()),VEt=Km(dwe()),zEt=" ",XEt="\x1B[Z",ZEt="\x1B",Ib=class extends Um.PureComponent{constructor(){super(...arguments),this.state={isFocusEnabled:!0,activeFocusId:void 0,focusables:[],error:void 0},this.rawModeEnabledCount=0,this.handleSetRawMode=e=>{let{stdin:r}=this.props;if(!this.isRawModeSupported())throw r===process.stdin?new Error(`Raw mode is not supported on the current process.stdin, which Ink uses as input stream by default. -Read about how to prevent this error on https://github.com/vadimdemedes/ink/#israwmodesupported`):new Error(`Raw mode is not supported on the stdin provided to Ink. -Read about how to prevent this error on https://github.com/vadimdemedes/ink/#israwmodesupported`);if(r.setEncoding("utf8"),e){this.rawModeEnabledCount===0&&(r.addListener("data",this.handleInput),r.resume(),r.setRawMode(!0)),this.rawModeEnabledCount++;return}--this.rawModeEnabledCount===0&&(r.setRawMode(!1),r.removeListener("data",this.handleInput),r.pause())},this.handleInput=e=>{e===""&&this.props.exitOnCtrlC&&this.handleExit(),e===ZEt&&this.state.activeFocusId&&this.setState({activeFocusId:void 0}),this.state.isFocusEnabled&&this.state.focusables.length>0&&(e===zEt&&this.focusNext(),e===XEt&&this.focusPrevious())},this.handleExit=e=>{this.isRawModeSupported()&&this.handleSetRawMode(!1),this.props.onExit(e)},this.enableFocus=()=>{this.setState({isFocusEnabled:!0})},this.disableFocus=()=>{this.setState({isFocusEnabled:!1})},this.focusNext=()=>{this.setState(e=>{let r=e.focusables[0].id;return{activeFocusId:this.findNextFocusable(e)||r}})},this.focusPrevious=()=>{this.setState(e=>{let r=e.focusables[e.focusables.length-1].id;return{activeFocusId:this.findPreviousFocusable(e)||r}})},this.addFocusable=(e,{autoFocus:r})=>{this.setState(o=>{let a=o.activeFocusId;return!a&&r&&(a=e),{activeFocusId:a,focusables:[...o.focusables,{id:e,isActive:!0}]}})},this.removeFocusable=e=>{this.setState(r=>({activeFocusId:r.activeFocusId===e?void 0:r.activeFocusId,focusables:r.focusables.filter(o=>o.id!==e)}))},this.activateFocusable=e=>{this.setState(r=>({focusables:r.focusables.map(o=>o.id!==e?o:{id:e,isActive:!0})}))},this.deactivateFocusable=e=>{this.setState(r=>({activeFocusId:r.activeFocusId===e?void 0:r.activeFocusId,focusables:r.focusables.map(o=>o.id!==e?o:{id:e,isActive:!1})}))},this.findNextFocusable=e=>{let r=e.focusables.findIndex(o=>o.id===e.activeFocusId);for(let o=r+1;o{let r=e.focusables.findIndex(o=>o.id===e.activeFocusId);for(let o=r-1;o>=0;o--)if(e.focusables[o].isActive)return e.focusables[o].id}}static getDerivedStateFromError(e){return{error:e}}isRawModeSupported(){return this.props.stdin.isTTY}render(){return Um.default.createElement(GEt.default.Provider,{value:{exit:this.handleExit}},Um.default.createElement(jEt.default.Provider,{value:{stdin:this.props.stdin,setRawMode:this.handleSetRawMode,isRawModeSupported:this.isRawModeSupported(),internal_exitOnCtrlC:this.props.exitOnCtrlC}},Um.default.createElement(YEt.default.Provider,{value:{stdout:this.props.stdout,write:this.props.writeToStdout}},Um.default.createElement(WEt.default.Provider,{value:{stderr:this.props.stderr,write:this.props.writeToStderr}},Um.default.createElement(JEt.default.Provider,{value:{activeId:this.state.activeFocusId,add:this.addFocusable,remove:this.removeFocusable,activate:this.activateFocusable,deactivate:this.deactivateFocusable,enableFocus:this.enableFocus,disableFocus:this.disableFocus,focusNext:this.focusNext,focusPrevious:this.focusPrevious}},this.state.error?Um.default.createElement(VEt.default,{error:this.state.error}):this.props.children)))))}componentDidMount(){mwe.default.hide(this.props.stdout)}componentWillUnmount(){mwe.default.show(this.props.stdout),this.isRawModeSupported()&&this.handleSetRawMode(!1)}componentDidCatch(e){this.handleExit(e)}};Pc.default=Ib;Ib.displayName="InternalApp"});var Iwe=_(bc=>{"use strict";var $Et=bc&&bc.__createBinding||(Object.create?function(t,e,r,o){o===void 0&&(o=r),Object.defineProperty(t,o,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,o){o===void 0&&(o=r),t[o]=e[r]}),eIt=bc&&bc.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),tIt=bc&&bc.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!=="default"&&Object.hasOwnProperty.call(t,r)&&$Et(e,t,r);return eIt(e,t),e},Fc=bc&&bc.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(bc,"__esModule",{value:!0});var rIt=Fc(dn()),Cwe=r4(),nIt=Fc(oEe()),iIt=Fc(z6()),sIt=Fc(fEe()),oIt=Fc(pEe()),sq=Fc(aIe()),aIt=Fc(jIe()),AIt=Fc(eH()),lIt=Fc(VIe()),cIt=tIt(PH()),uIt=Fc(jH()),fIt=Fc(ywe()),eI=process.env.CI==="false"?!1:sIt.default,Ewe=()=>{},oq=class{constructor(e){this.resolveExitPromise=()=>{},this.rejectExitPromise=()=>{},this.unsubscribeExit=()=>{},this.onRender=()=>{if(this.isUnmounted)return;let{output:r,outputHeight:o,staticOutput:a}=aIt.default(this.rootNode,this.options.stdout.columns||80),n=a&&a!==` -`;if(this.options.debug){n&&(this.fullStaticOutput+=a),this.options.stdout.write(this.fullStaticOutput+r);return}if(eI){n&&this.options.stdout.write(a),this.lastOutput=r;return}if(n&&(this.fullStaticOutput+=a),o>=this.options.stdout.rows){this.options.stdout.write(iIt.default.clearTerminal+this.fullStaticOutput+r),this.lastOutput=r;return}n&&(this.log.clear(),this.options.stdout.write(a),this.log(r)),!n&&r!==this.lastOutput&&this.throttledLog(r),this.lastOutput=r},oIt.default(this),this.options=e,this.rootNode=cIt.createNode("ink-root"),this.rootNode.onRender=e.debug?this.onRender:Cwe(this.onRender,32,{leading:!0,trailing:!0}),this.rootNode.onImmediateRender=this.onRender,this.log=nIt.default.create(e.stdout),this.throttledLog=e.debug?this.log:Cwe(this.log,void 0,{leading:!0,trailing:!0}),this.isUnmounted=!1,this.lastOutput="",this.fullStaticOutput="",this.container=sq.default.createContainer(this.rootNode,!1,!1),this.unsubscribeExit=AIt.default(this.unmount,{alwaysLast:!1}),e.patchConsole&&this.patchConsole(),eI||(e.stdout.on("resize",this.onRender),this.unsubscribeResize=()=>{e.stdout.off("resize",this.onRender)})}render(e){let r=rIt.default.createElement(fIt.default,{stdin:this.options.stdin,stdout:this.options.stdout,stderr:this.options.stderr,writeToStdout:this.writeToStdout,writeToStderr:this.writeToStderr,exitOnCtrlC:this.options.exitOnCtrlC,onExit:this.unmount},e);sq.default.updateContainer(r,this.container,null,Ewe)}writeToStdout(e){if(!this.isUnmounted){if(this.options.debug){this.options.stdout.write(e+this.fullStaticOutput+this.lastOutput);return}if(eI){this.options.stdout.write(e);return}this.log.clear(),this.options.stdout.write(e),this.log(this.lastOutput)}}writeToStderr(e){if(!this.isUnmounted){if(this.options.debug){this.options.stderr.write(e),this.options.stdout.write(this.fullStaticOutput+this.lastOutput);return}if(eI){this.options.stderr.write(e);return}this.log.clear(),this.options.stderr.write(e),this.log(this.lastOutput)}}unmount(e){this.isUnmounted||(this.onRender(),this.unsubscribeExit(),typeof this.restoreConsole=="function"&&this.restoreConsole(),typeof this.unsubscribeResize=="function"&&this.unsubscribeResize(),eI?this.options.stdout.write(this.lastOutput+` -`):this.options.debug||this.log.done(),this.isUnmounted=!0,sq.default.updateContainer(null,this.container,null,Ewe),uIt.default.delete(this.options.stdout),e instanceof Error?this.rejectExitPromise(e):this.resolveExitPromise())}waitUntilExit(){return this.exitPromise||(this.exitPromise=new Promise((e,r)=>{this.resolveExitPromise=e,this.rejectExitPromise=r})),this.exitPromise}clear(){!eI&&!this.options.debug&&this.log.clear()}patchConsole(){this.options.debug||(this.restoreConsole=lIt.default((e,r)=>{e==="stdout"&&this.writeToStdout(r),e==="stderr"&&(r.startsWith("The above error occurred")||this.writeToStderr(r))}))}};bc.default=oq});var Bwe=_(T2=>{"use strict";var wwe=T2&&T2.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(T2,"__esModule",{value:!0});var gIt=wwe(Iwe()),wb=wwe(jH()),pIt=Ie("stream"),hIt=(t,e)=>{let r=Object.assign({stdout:process.stdout,stdin:process.stdin,stderr:process.stderr,debug:!1,exitOnCtrlC:!0,patchConsole:!0},dIt(e)),o=mIt(r.stdout,()=>new gIt.default(r));return o.render(t),{rerender:o.render,unmount:()=>o.unmount(),waitUntilExit:o.waitUntilExit,cleanup:()=>wb.default.delete(r.stdout),clear:o.clear}};T2.default=hIt;var dIt=(t={})=>t instanceof pIt.Stream?{stdout:t,stdin:process.stdin}:t,mIt=(t,e)=>{let r;return wb.default.has(t)?r=wb.default.get(t):(r=e(),wb.default.set(t,r)),r}});var vwe=_(Ig=>{"use strict";var yIt=Ig&&Ig.__createBinding||(Object.create?function(t,e,r,o){o===void 0&&(o=r),Object.defineProperty(t,o,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,o){o===void 0&&(o=r),t[o]=e[r]}),CIt=Ig&&Ig.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),EIt=Ig&&Ig.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!=="default"&&Object.hasOwnProperty.call(t,r)&&yIt(e,t,r);return CIt(e,t),e};Object.defineProperty(Ig,"__esModule",{value:!0});var N2=EIt(dn()),Qwe=t=>{let{items:e,children:r,style:o}=t,[a,n]=N2.useState(0),c=N2.useMemo(()=>e.slice(a),[e,a]);N2.useLayoutEffect(()=>{n(e.length)},[e.length]);let f=c.map((p,E)=>r(p,a+E)),g=N2.useMemo(()=>Object.assign({position:"absolute",flexDirection:"column"},o),[o]);return N2.default.createElement("ink-box",{internal_static:!0,style:g},f)};Qwe.displayName="Static";Ig.default=Qwe});var Swe=_(M2=>{"use strict";var IIt=M2&&M2.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(M2,"__esModule",{value:!0});var wIt=IIt(dn()),Dwe=({children:t,transform:e})=>t==null?null:wIt.default.createElement("ink-text",{style:{flexGrow:0,flexShrink:1,flexDirection:"row"},internal_transform:e},t);Dwe.displayName="Transform";M2.default=Dwe});var xwe=_(L2=>{"use strict";var BIt=L2&&L2.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(L2,"__esModule",{value:!0});var QIt=BIt(dn()),kwe=({count:t=1})=>QIt.default.createElement("ink-text",null,` -`.repeat(t));kwe.displayName="Newline";L2.default=kwe});var Fwe=_(O2=>{"use strict";var Pwe=O2&&O2.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(O2,"__esModule",{value:!0});var vIt=Pwe(dn()),DIt=Pwe(Eb()),bwe=()=>vIt.default.createElement(DIt.default,{flexGrow:1});bwe.displayName="Spacer";O2.default=bwe});var Bb=_(U2=>{"use strict";var SIt=U2&&U2.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(U2,"__esModule",{value:!0});var kIt=dn(),xIt=SIt(VH()),PIt=()=>kIt.useContext(xIt.default);U2.default=PIt});var Twe=_(K2=>{"use strict";var bIt=K2&&K2.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(K2,"__esModule",{value:!0});var Rwe=dn(),FIt=bIt(Bb()),RIt=(t,e={})=>{let{stdin:r,setRawMode:o,internal_exitOnCtrlC:a}=FIt.default();Rwe.useEffect(()=>{if(e.isActive!==!1)return o(!0),()=>{o(!1)}},[e.isActive,o]),Rwe.useEffect(()=>{if(e.isActive===!1)return;let n=c=>{let f=String(c),g={upArrow:f==="\x1B[A",downArrow:f==="\x1B[B",leftArrow:f==="\x1B[D",rightArrow:f==="\x1B[C",pageDown:f==="\x1B[6~",pageUp:f==="\x1B[5~",return:f==="\r",escape:f==="\x1B",ctrl:!1,shift:!1,tab:f===" "||f==="\x1B[Z",backspace:f==="\b",delete:f==="\x7F"||f==="\x1B[3~",meta:!1};f<=""&&!g.return&&(f=String.fromCharCode(f.charCodeAt(0)+"a".charCodeAt(0)-1),g.ctrl=!0),f.startsWith("\x1B")&&(f=f.slice(1),g.meta=!0);let p=f>="A"&&f<="Z",E=f>="\u0410"&&f<="\u042F";f.length===1&&(p||E)&&(g.shift=!0),g.tab&&f==="[Z"&&(g.shift=!0),(g.tab||g.backspace||g.delete)&&(f=""),(!(f==="c"&&g.ctrl)||!a)&&t(f,g)};return r==null||r.on("data",n),()=>{r==null||r.off("data",n)}},[e.isActive,r,a,t])};K2.default=RIt});var Nwe=_(_2=>{"use strict";var TIt=_2&&_2.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(_2,"__esModule",{value:!0});var NIt=dn(),MIt=TIt(WH()),LIt=()=>NIt.useContext(MIt.default);_2.default=LIt});var Mwe=_(H2=>{"use strict";var OIt=H2&&H2.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(H2,"__esModule",{value:!0});var UIt=dn(),KIt=OIt(XH()),_It=()=>UIt.useContext(KIt.default);H2.default=_It});var Lwe=_(q2=>{"use strict";var HIt=q2&&q2.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(q2,"__esModule",{value:!0});var qIt=dn(),GIt=HIt($H()),jIt=()=>qIt.useContext(GIt.default);q2.default=jIt});var Uwe=_(j2=>{"use strict";var Owe=j2&&j2.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(j2,"__esModule",{value:!0});var G2=dn(),YIt=Owe(Cb()),WIt=Owe(Bb()),JIt=({isActive:t=!0,autoFocus:e=!1}={})=>{let{isRawModeSupported:r,setRawMode:o}=WIt.default(),{activeId:a,add:n,remove:c,activate:f,deactivate:g}=G2.useContext(YIt.default),p=G2.useMemo(()=>Math.random().toString().slice(2,7),[]);return G2.useEffect(()=>(n(p,{autoFocus:e}),()=>{c(p)}),[p,e]),G2.useEffect(()=>{t?f(p):g(p)},[t,p]),G2.useEffect(()=>{if(!(!r||!t))return o(!0),()=>{o(!1)}},[t]),{isFocused:Boolean(p)&&a===p}};j2.default=JIt});var Kwe=_(Y2=>{"use strict";var VIt=Y2&&Y2.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(Y2,"__esModule",{value:!0});var zIt=dn(),XIt=VIt(Cb()),ZIt=()=>{let t=zIt.useContext(XIt.default);return{enableFocus:t.enableFocus,disableFocus:t.disableFocus,focusNext:t.focusNext,focusPrevious:t.focusPrevious}};Y2.default=ZIt});var _we=_(aq=>{"use strict";Object.defineProperty(aq,"__esModule",{value:!0});aq.default=t=>{var e,r,o,a;return{width:(r=(e=t.yogaNode)===null||e===void 0?void 0:e.getComputedWidth())!==null&&r!==void 0?r:0,height:(a=(o=t.yogaNode)===null||o===void 0?void 0:o.getComputedHeight())!==null&&a!==void 0?a:0}}});var Nl=_(Eo=>{"use strict";Object.defineProperty(Eo,"__esModule",{value:!0});var $It=Bwe();Object.defineProperty(Eo,"render",{enumerable:!0,get:function(){return $It.default}});var ewt=Eb();Object.defineProperty(Eo,"Box",{enumerable:!0,get:function(){return ewt.default}});var twt=iq();Object.defineProperty(Eo,"Text",{enumerable:!0,get:function(){return twt.default}});var rwt=vwe();Object.defineProperty(Eo,"Static",{enumerable:!0,get:function(){return rwt.default}});var nwt=Swe();Object.defineProperty(Eo,"Transform",{enumerable:!0,get:function(){return nwt.default}});var iwt=xwe();Object.defineProperty(Eo,"Newline",{enumerable:!0,get:function(){return iwt.default}});var swt=Fwe();Object.defineProperty(Eo,"Spacer",{enumerable:!0,get:function(){return swt.default}});var owt=Twe();Object.defineProperty(Eo,"useInput",{enumerable:!0,get:function(){return owt.default}});var awt=Nwe();Object.defineProperty(Eo,"useApp",{enumerable:!0,get:function(){return awt.default}});var Awt=Bb();Object.defineProperty(Eo,"useStdin",{enumerable:!0,get:function(){return Awt.default}});var lwt=Mwe();Object.defineProperty(Eo,"useStdout",{enumerable:!0,get:function(){return lwt.default}});var cwt=Lwe();Object.defineProperty(Eo,"useStderr",{enumerable:!0,get:function(){return cwt.default}});var uwt=Uwe();Object.defineProperty(Eo,"useFocus",{enumerable:!0,get:function(){return uwt.default}});var fwt=Kwe();Object.defineProperty(Eo,"useFocusManager",{enumerable:!0,get:function(){return fwt.default}});var gwt=_we();Object.defineProperty(Eo,"measureElement",{enumerable:!0,get:function(){return gwt.default}})});var lq={};tr(lq,{Gem:()=>Aq});var Hwe,_m,Aq,Qb=Lt(()=>{Hwe=be(Nl()),_m=be(dn()),Aq=(0,_m.memo)(({active:t})=>{let e=(0,_m.useMemo)(()=>t?"\u25C9":"\u25EF",[t]),r=(0,_m.useMemo)(()=>t?"green":"yellow",[t]);return _m.default.createElement(Hwe.Text,{color:r},e)})});var Gwe={};tr(Gwe,{useKeypress:()=>Hm});function Hm({active:t},e,r){let{stdin:o}=(0,qwe.useStdin)(),a=(0,vb.useCallback)((n,c)=>e(n,c),r);(0,vb.useEffect)(()=>{if(!(!t||!o))return o.on("keypress",a),()=>{o.off("keypress",a)}},[t,a,o])}var qwe,vb,W2=Lt(()=>{qwe=be(Nl()),vb=be(dn())});var Ywe={};tr(Ywe,{FocusRequest:()=>jwe,useFocusRequest:()=>cq});var jwe,cq,uq=Lt(()=>{W2();jwe=(r=>(r.BEFORE="before",r.AFTER="after",r))(jwe||{}),cq=function({active:t},e,r){Hm({active:t},(o,a)=>{a.name==="tab"&&(a.shift?e("before"):e("after"))},r)}});var Wwe={};tr(Wwe,{useListInput:()=>J2});var J2,Db=Lt(()=>{W2();J2=function(t,e,{active:r,minus:o,plus:a,set:n,loop:c=!0}){Hm({active:r},(f,g)=>{let p=e.indexOf(t);switch(g.name){case o:{let E=p-1;if(c){n(e[(e.length+E)%e.length]);return}if(E<0)return;n(e[E])}break;case a:{let E=p+1;if(c){n(e[E%e.length]);return}if(E>=e.length)return;n(e[E])}break}},[e,t,a,n,c])}});var Sb={};tr(Sb,{ScrollableItems:()=>pwt});var zh,iA,pwt,kb=Lt(()=>{zh=be(Nl()),iA=be(dn());uq();Db();pwt=({active:t=!0,children:e=[],radius:r=10,size:o=1,loop:a=!0,onFocusRequest:n,willReachEnd:c})=>{let f=U=>{if(U.key===null)throw new Error("Expected all children to have a key");return U.key},g=iA.default.Children.map(e,U=>f(U)),p=g[0],[E,B]=(0,iA.useState)(p),Q=g.indexOf(E);(0,iA.useEffect)(()=>{g.includes(E)||B(p)},[e]),(0,iA.useEffect)(()=>{c&&Q>=g.length-2&&c()},[Q]),cq({active:t&&!!n},U=>{n==null||n(U)},[n]),J2(E,g,{active:t,minus:"up",plus:"down",set:B,loop:a});let x=Q-r,C=Q+r;C>g.length&&(x-=C-g.length,C=g.length),x<0&&(C+=-x,x=0),C>=g.length&&(C=g.length-1);let N=[];for(let U=x;U<=C;++U){let H=g[U],X=t&&H===E;N.push(iA.default.createElement(zh.Box,{key:H,height:o},iA.default.createElement(zh.Box,{marginLeft:1,marginRight:1},iA.default.createElement(zh.Text,null,X?iA.default.createElement(zh.Text,{color:"cyan",bold:!0},">"):" ")),iA.default.createElement(zh.Box,null,iA.default.cloneElement(e[U],{active:X}))))}return iA.default.createElement(zh.Box,{flexDirection:"column",width:"100%"},N)}});var Jwe,wg,Vwe,fq,zwe,gq=Lt(()=>{Jwe=be(Nl()),wg=be(dn()),Vwe=Ie("readline"),fq=wg.default.createContext(null),zwe=({children:t})=>{let{stdin:e,setRawMode:r}=(0,Jwe.useStdin)();(0,wg.useEffect)(()=>{r&&r(!0),e&&(0,Vwe.emitKeypressEvents)(e)},[e,r]);let[o,a]=(0,wg.useState)(new Map),n=(0,wg.useMemo)(()=>({getAll:()=>o,get:c=>o.get(c),set:(c,f)=>a(new Map([...o,[c,f]]))}),[o,a]);return wg.default.createElement(fq.Provider,{value:n,children:t})}});var pq={};tr(pq,{useMinistore:()=>hwt});function hwt(t,e){let r=(0,xb.useContext)(fq);if(r===null)throw new Error("Expected this hook to run with a ministore context attached");if(typeof t>"u")return r.getAll();let o=(0,xb.useCallback)(n=>{r.set(t,n)},[t,r.set]),a=r.get(t);return typeof a>"u"&&(a=e),[a,o]}var xb,hq=Lt(()=>{xb=be(dn());gq()});var bb={};tr(bb,{renderForm:()=>dwt});async function dwt(t,e,{stdin:r,stdout:o,stderr:a}){let n,c=g=>{let{exit:p}=(0,Pb.useApp)();Hm({active:!0},(E,B)=>{B.name==="return"&&(n=g,p())},[p,g])},{waitUntilExit:f}=(0,Pb.render)(dq.default.createElement(zwe,null,dq.default.createElement(t,{...e,useSubmit:c})),{stdin:r,stdout:o,stderr:a});return await f(),n}var Pb,dq,Fb=Lt(()=>{Pb=be(Nl()),dq=be(dn());gq();W2()});var eBe=_(V2=>{"use strict";Object.defineProperty(V2,"__esModule",{value:!0});V2.UncontrolledTextInput=void 0;var Zwe=dn(),mq=dn(),Xwe=Nl(),qm=mb(),$we=({value:t,placeholder:e="",focus:r=!0,mask:o,highlightPastedText:a=!1,showCursor:n=!0,onChange:c,onSubmit:f})=>{let[{cursorOffset:g,cursorWidth:p},E]=mq.useState({cursorOffset:(t||"").length,cursorWidth:0});mq.useEffect(()=>{E(N=>{if(!r||!n)return N;let U=t||"";return N.cursorOffset>U.length-1?{cursorOffset:U.length,cursorWidth:0}:N})},[t,r,n]);let B=a?p:0,Q=o?o.repeat(t.length):t,x=Q,C=e?qm.grey(e):void 0;if(n&&r){C=e.length>0?qm.inverse(e[0])+qm.grey(e.slice(1)):qm.inverse(" "),x=Q.length>0?"":qm.inverse(" ");let N=0;for(let U of Q)N>=g-B&&N<=g?x+=qm.inverse(U):x+=U,N++;Q.length>0&&g===Q.length&&(x+=qm.inverse(" "))}return Xwe.useInput((N,U)=>{if(U.upArrow||U.downArrow||U.ctrl&&N==="c"||U.tab||U.shift&&U.tab)return;if(U.return){f&&f(t);return}let H=g,X=t,ie=0;U.leftArrow?n&&H--:U.rightArrow?n&&H++:U.backspace||U.delete?g>0&&(X=t.slice(0,g-1)+t.slice(g,t.length),H--):(X=t.slice(0,g)+N+t.slice(g,t.length),H+=N.length,N.length>1&&(ie=N.length)),g<0&&(H=0),g>t.length&&(H=t.length),E({cursorOffset:H,cursorWidth:ie}),X!==t&&c(X)},{isActive:r}),Zwe.createElement(Xwe.Text,null,e?Q.length>0?x:C:x)};V2.default=$we;V2.UncontrolledTextInput=t=>{let[e,r]=mq.useState("");return Zwe.createElement($we,Object.assign({},t,{value:e,onChange:r}))}});var iBe={};tr(iBe,{Pad:()=>yq});var rBe,nBe,yq,Cq=Lt(()=>{rBe=be(Nl()),nBe=be(dn()),yq=({length:t,active:e})=>{if(t===0)return null;let r=t>1?` ${"-".repeat(t-1)}`:" ";return nBe.default.createElement(rBe.Text,{dimColor:!e},r)}});var sBe={};tr(sBe,{ItemOptions:()=>mwt});var X2,Zh,mwt,oBe=Lt(()=>{X2=be(Nl()),Zh=be(dn());Db();Qb();Cq();mwt=function({active:t,skewer:e,options:r,value:o,onChange:a,sizes:n=[]}){let c=r.filter(({label:g})=>!!g).map(({value:g})=>g),f=r.findIndex(g=>g.value===o&&g.label!="");return J2(o,c,{active:t,minus:"left",plus:"right",set:a}),Zh.default.createElement(Zh.default.Fragment,null,r.map(({label:g},p)=>{let E=p===f,B=n[p]-1||0,Q=g.replace(/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g,""),x=Math.max(0,B-Q.length-2);return g?Zh.default.createElement(X2.Box,{key:g,width:B,marginLeft:1},Zh.default.createElement(X2.Text,{wrap:"truncate"},Zh.default.createElement(Aq,{active:E})," ",g),e?Zh.default.createElement(yq,{active:t,length:x}):null):Zh.default.createElement(X2.Box,{key:`spacer-${p}`,width:B,marginLeft:1})}))}});var BBe=_((nJt,wBe)=>{var kq;wBe.exports=()=>(typeof kq>"u"&&(kq=Ie("zlib").brotliDecompressSync(Buffer.from("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","base64")).toString()),kq)});var YBe=_((JJt,jBe)=>{var Mq;jBe.exports=()=>(typeof Mq>"u"&&(Mq=Ie("zlib").brotliDecompressSync(Buffer.from("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","base64")).toString()),Mq)});var $Be=_((qq,Gq)=>{(function(t){qq&&typeof qq=="object"&&typeof Gq<"u"?Gq.exports=t():typeof define=="function"&&define.amd?define([],t):typeof window<"u"?window.isWindows=t():typeof global<"u"?global.isWindows=t():typeof self<"u"?self.isWindows=t():this.isWindows=t()})(function(){"use strict";return function(){return process&&(process.platform==="win32"||/^(msys|cygwin)$/.test(process.env.OSTYPE))}})});var n1e=_((YVt,r1e)=>{"use strict";jq.ifExists=fBt;var nI=Ie("util"),Ll=Ie("path"),e1e=$Be(),lBt=/^#!\s*(?:\/usr\/bin\/env)?\s*([^ \t]+)(.*)$/,cBt={createPwshFile:!0,createCmdFile:e1e(),fs:Ie("fs")},uBt=new Map([[".js","node"],[".cjs","node"],[".mjs","node"],[".cmd","cmd"],[".bat","cmd"],[".ps1","pwsh"],[".sh","sh"]]);function t1e(t){let e={...cBt,...t},r=e.fs;return e.fs_={chmod:r.chmod?nI.promisify(r.chmod):async()=>{},mkdir:nI.promisify(r.mkdir),readFile:nI.promisify(r.readFile),stat:nI.promisify(r.stat),unlink:nI.promisify(r.unlink),writeFile:nI.promisify(r.writeFile)},e}async function jq(t,e,r){let o=t1e(r);await o.fs_.stat(t),await pBt(t,e,o)}function fBt(t,e,r){return jq(t,e,r).catch(()=>{})}function gBt(t,e){return e.fs_.unlink(t).catch(()=>{})}async function pBt(t,e,r){let o=await CBt(t,r);return await hBt(e,r),dBt(t,e,o,r)}function hBt(t,e){return e.fs_.mkdir(Ll.dirname(t),{recursive:!0})}function dBt(t,e,r,o){let a=t1e(o),n=[{generator:wBt,extension:""}];return a.createCmdFile&&n.push({generator:IBt,extension:".cmd"}),a.createPwshFile&&n.push({generator:BBt,extension:".ps1"}),Promise.all(n.map(c=>EBt(t,e+c.extension,r,c.generator,a)))}function mBt(t,e){return gBt(t,e)}function yBt(t,e){return QBt(t,e)}async function CBt(t,e){let a=(await e.fs_.readFile(t,"utf8")).trim().split(/\r*\n/)[0].match(lBt);if(!a){let n=Ll.extname(t).toLowerCase();return{program:uBt.get(n)||null,additionalArgs:""}}return{program:a[1],additionalArgs:a[2]}}async function EBt(t,e,r,o,a){let n=a.preserveSymlinks?"--preserve-symlinks":"",c=[r.additionalArgs,n].filter(f=>f).join(" ");return a=Object.assign({},a,{prog:r.program,args:c}),await mBt(e,a),await a.fs_.writeFile(e,o(t,e,a),"utf8"),yBt(e,a)}function IBt(t,e,r){let a=Ll.relative(Ll.dirname(e),t).split("/").join("\\"),n=Ll.isAbsolute(a)?`"${a}"`:`"%~dp0\\${a}"`,c,f=r.prog,g=r.args||"",p=Yq(r.nodePath).win32;f?(c=`"%~dp0\\${f}.exe"`,a=n):(f=n,g="",a="");let E=r.progArgs?`${r.progArgs.join(" ")} `:"",B=p?`@SET NODE_PATH=${p}\r -`:"";return c?B+=`@IF EXIST ${c} (\r - ${c} ${g} ${a} ${E}%*\r -) ELSE (\r - @SETLOCAL\r - @SET PATHEXT=%PATHEXT:;.JS;=;%\r - ${f} ${g} ${a} ${E}%*\r -)\r -`:B+=`@${f} ${g} ${a} ${E}%*\r -`,B}function wBt(t,e,r){let o=Ll.relative(Ll.dirname(e),t),a=r.prog&&r.prog.split("\\").join("/"),n;o=o.split("\\").join("/");let c=Ll.isAbsolute(o)?`"${o}"`:`"$basedir/${o}"`,f=r.args||"",g=Yq(r.nodePath).posix;a?(n=`"$basedir/${r.prog}"`,o=c):(a=c,f="",o="");let p=r.progArgs?`${r.progArgs.join(" ")} `:"",E=`#!/bin/sh -basedir=$(dirname "$(echo "$0" | sed -e 's,\\\\,/,g')") - -case \`uname\` in - *CYGWIN*) basedir=\`cygpath -w "$basedir"\`;; -esac - -`,B=r.nodePath?`export NODE_PATH="${g}" -`:"";return n?E+=`${B}if [ -x ${n} ]; then - exec ${n} ${f} ${o} ${p}"$@" -else - exec ${a} ${f} ${o} ${p}"$@" -fi -`:E+=`${B}${a} ${f} ${o} ${p}"$@" -exit $? -`,E}function BBt(t,e,r){let o=Ll.relative(Ll.dirname(e),t),a=r.prog&&r.prog.split("\\").join("/"),n=a&&`"${a}$exe"`,c;o=o.split("\\").join("/");let f=Ll.isAbsolute(o)?`"${o}"`:`"$basedir/${o}"`,g=r.args||"",p=Yq(r.nodePath),E=p.win32,B=p.posix;n?(c=`"$basedir/${r.prog}$exe"`,o=f):(n=f,g="",o="");let Q=r.progArgs?`${r.progArgs.join(" ")} `:"",x=`#!/usr/bin/env pwsh -$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent - -$exe="" -${r.nodePath?`$env_node_path=$env:NODE_PATH -$env:NODE_PATH="${E}" -`:""}if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { - # Fix case when both the Windows and Linux builds of Node - # are installed in the same directory - $exe=".exe" -}`;return r.nodePath&&(x+=` else { - $env:NODE_PATH="${B}" -}`),c?x+=` -$ret=0 -if (Test-Path ${c}) { - # Support pipeline input - if ($MyInvocation.ExpectingInput) { - $input | & ${c} ${g} ${o} ${Q}$args - } else { - & ${c} ${g} ${o} ${Q}$args - } - $ret=$LASTEXITCODE -} else { - # Support pipeline input - if ($MyInvocation.ExpectingInput) { - $input | & ${n} ${g} ${o} ${Q}$args - } else { - & ${n} ${g} ${o} ${Q}$args - } - $ret=$LASTEXITCODE -} -${r.nodePath?`$env:NODE_PATH=$env_node_path -`:""}exit $ret -`:x+=` -# Support pipeline input -if ($MyInvocation.ExpectingInput) { - $input | & ${n} ${g} ${o} ${Q}$args -} else { - & ${n} ${g} ${o} ${Q}$args -} -${r.nodePath?`$env:NODE_PATH=$env_node_path -`:""}exit $LASTEXITCODE -`,x}function QBt(t,e){return e.fs_.chmod(t,493)}function Yq(t){if(!t)return{win32:"",posix:""};let e=typeof t=="string"?t.split(Ll.delimiter):Array.from(t),r={};for(let o=0;o`/mnt/${f.toLowerCase()}`):e[o];r.win32=r.win32?`${r.win32};${a}`:a,r.posix=r.posix?`${r.posix}:${n}`:n,r[o]={win32:a,posix:n}}return r}r1e.exports=jq});var sG=_((aXt,B1e)=>{B1e.exports=Ie("stream")});var S1e=_((AXt,D1e)=>{"use strict";function Q1e(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);e&&(o=o.filter(function(a){return Object.getOwnPropertyDescriptor(t,a).enumerable})),r.push.apply(r,o)}return r}function qBt(t){for(var e=1;e0?this.tail.next=o:this.head=o,this.tail=o,++this.length}},{key:"unshift",value:function(r){var o={data:r,next:this.head};this.length===0&&(this.tail=o),this.head=o,++this.length}},{key:"shift",value:function(){if(this.length!==0){var r=this.head.data;return this.length===1?this.head=this.tail=null:this.head=this.head.next,--this.length,r}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(r){if(this.length===0)return"";for(var o=this.head,a=""+o.data;o=o.next;)a+=r+o.data;return a}},{key:"concat",value:function(r){if(this.length===0)return Vb.alloc(0);for(var o=Vb.allocUnsafe(r>>>0),a=this.head,n=0;a;)zBt(a.data,o,n),n+=a.data.length,a=a.next;return o}},{key:"consume",value:function(r,o){var a;return rc.length?c.length:r;if(f===c.length?n+=c:n+=c.slice(0,r),r-=f,r===0){f===c.length?(++a,o.next?this.head=o.next:this.head=this.tail=null):(this.head=o,o.data=c.slice(f));break}++a}return this.length-=a,n}},{key:"_getBuffer",value:function(r){var o=Vb.allocUnsafe(r),a=this.head,n=1;for(a.data.copy(o),r-=a.data.length;a=a.next;){var c=a.data,f=r>c.length?c.length:r;if(c.copy(o,o.length-r,0,f),r-=f,r===0){f===c.length?(++n,a.next?this.head=a.next:this.head=this.tail=null):(this.head=a,a.data=c.slice(f));break}++n}return this.length-=n,o}},{key:VBt,value:function(r,o){return oG(this,qBt({},o,{depth:0,customInspect:!1}))}}]),t}()});var AG=_((lXt,x1e)=>{"use strict";function XBt(t,e){var r=this,o=this._readableState&&this._readableState.destroyed,a=this._writableState&&this._writableState.destroyed;return o||a?(e?e(t):t&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,process.nextTick(aG,this,t)):process.nextTick(aG,this,t)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(t||null,function(n){!e&&n?r._writableState?r._writableState.errorEmitted?process.nextTick(zb,r):(r._writableState.errorEmitted=!0,process.nextTick(k1e,r,n)):process.nextTick(k1e,r,n):e?(process.nextTick(zb,r),e(n)):process.nextTick(zb,r)}),this)}function k1e(t,e){aG(t,e),zb(t)}function zb(t){t._writableState&&!t._writableState.emitClose||t._readableState&&!t._readableState.emitClose||t.emit("close")}function ZBt(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}function aG(t,e){t.emit("error",e)}function $Bt(t,e){var r=t._readableState,o=t._writableState;r&&r.autoDestroy||o&&o.autoDestroy?t.destroy(e):t.emit("error",e)}x1e.exports={destroy:XBt,undestroy:ZBt,errorOrDestroy:$Bt}});var s0=_((cXt,F1e)=>{"use strict";var b1e={};function Ol(t,e,r){r||(r=Error);function o(n,c,f){return typeof e=="string"?e:e(n,c,f)}class a extends r{constructor(c,f,g){super(o(c,f,g))}}a.prototype.name=r.name,a.prototype.code=t,b1e[t]=a}function P1e(t,e){if(Array.isArray(t)){let r=t.length;return t=t.map(o=>String(o)),r>2?`one of ${e} ${t.slice(0,r-1).join(", ")}, or `+t[r-1]:r===2?`one of ${e} ${t[0]} or ${t[1]}`:`of ${e} ${t[0]}`}else return`of ${e} ${String(t)}`}function e1t(t,e,r){return t.substr(!r||r<0?0:+r,e.length)===e}function t1t(t,e,r){return(r===void 0||r>t.length)&&(r=t.length),t.substring(r-e.length,r)===e}function r1t(t,e,r){return typeof r!="number"&&(r=0),r+e.length>t.length?!1:t.indexOf(e,r)!==-1}Ol("ERR_INVALID_OPT_VALUE",function(t,e){return'The value "'+e+'" is invalid for option "'+t+'"'},TypeError);Ol("ERR_INVALID_ARG_TYPE",function(t,e,r){let o;typeof e=="string"&&e1t(e,"not ")?(o="must not be",e=e.replace(/^not /,"")):o="must be";let a;if(t1t(t," argument"))a=`The ${t} ${o} ${P1e(e,"type")}`;else{let n=r1t(t,".")?"property":"argument";a=`The "${t}" ${n} ${o} ${P1e(e,"type")}`}return a+=`. Received type ${typeof r}`,a},TypeError);Ol("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF");Ol("ERR_METHOD_NOT_IMPLEMENTED",function(t){return"The "+t+" method is not implemented"});Ol("ERR_STREAM_PREMATURE_CLOSE","Premature close");Ol("ERR_STREAM_DESTROYED",function(t){return"Cannot call "+t+" after a stream was destroyed"});Ol("ERR_MULTIPLE_CALLBACK","Callback called multiple times");Ol("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable");Ol("ERR_STREAM_WRITE_AFTER_END","write after end");Ol("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError);Ol("ERR_UNKNOWN_ENCODING",function(t){return"Unknown encoding: "+t},TypeError);Ol("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event");F1e.exports.codes=b1e});var lG=_((uXt,R1e)=>{"use strict";var n1t=s0().codes.ERR_INVALID_OPT_VALUE;function i1t(t,e,r){return t.highWaterMark!=null?t.highWaterMark:e?t[r]:null}function s1t(t,e,r,o){var a=i1t(e,o,r);if(a!=null){if(!(isFinite(a)&&Math.floor(a)===a)||a<0){var n=o?r:"highWaterMark";throw new n1t(n,a)}return Math.floor(a)}return t.objectMode?16:16*1024}R1e.exports={getHighWaterMark:s1t}});var T1e=_((fXt,cG)=>{typeof Object.create=="function"?cG.exports=function(e,r){r&&(e.super_=r,e.prototype=Object.create(r.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}))}:cG.exports=function(e,r){if(r){e.super_=r;var o=function(){};o.prototype=r.prototype,e.prototype=new o,e.prototype.constructor=e}}});var o0=_((gXt,fG)=>{try{if(uG=Ie("util"),typeof uG.inherits!="function")throw"";fG.exports=uG.inherits}catch{fG.exports=T1e()}var uG});var M1e=_((pXt,N1e)=>{N1e.exports=Ie("util").deprecate});var hG=_((hXt,H1e)=>{"use strict";H1e.exports=zi;function O1e(t){var e=this;this.next=null,this.entry=null,this.finish=function(){F1t(e,t)}}var oI;zi.WritableState=wQ;var o1t={deprecate:M1e()},U1e=sG(),Zb=Ie("buffer").Buffer,a1t=global.Uint8Array||function(){};function A1t(t){return Zb.from(t)}function l1t(t){return Zb.isBuffer(t)||t instanceof a1t}var pG=AG(),c1t=lG(),u1t=c1t.getHighWaterMark,a0=s0().codes,f1t=a0.ERR_INVALID_ARG_TYPE,g1t=a0.ERR_METHOD_NOT_IMPLEMENTED,p1t=a0.ERR_MULTIPLE_CALLBACK,h1t=a0.ERR_STREAM_CANNOT_PIPE,d1t=a0.ERR_STREAM_DESTROYED,m1t=a0.ERR_STREAM_NULL_VALUES,y1t=a0.ERR_STREAM_WRITE_AFTER_END,C1t=a0.ERR_UNKNOWN_ENCODING,aI=pG.errorOrDestroy;o0()(zi,U1e);function E1t(){}function wQ(t,e,r){oI=oI||Wm(),t=t||{},typeof r!="boolean"&&(r=e instanceof oI),this.objectMode=!!t.objectMode,r&&(this.objectMode=this.objectMode||!!t.writableObjectMode),this.highWaterMark=u1t(this,t,"writableHighWaterMark",r),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var o=t.decodeStrings===!1;this.decodeStrings=!o,this.defaultEncoding=t.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(a){S1t(e,a)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=t.emitClose!==!1,this.autoDestroy=!!t.autoDestroy,this.bufferedRequestCount=0,this.corkedRequestsFree=new O1e(this)}wQ.prototype.getBuffer=function(){for(var e=this.bufferedRequest,r=[];e;)r.push(e),e=e.next;return r};(function(){try{Object.defineProperty(wQ.prototype,"buffer",{get:o1t.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch{}})();var Xb;typeof Symbol=="function"&&Symbol.hasInstance&&typeof Function.prototype[Symbol.hasInstance]=="function"?(Xb=Function.prototype[Symbol.hasInstance],Object.defineProperty(zi,Symbol.hasInstance,{value:function(e){return Xb.call(this,e)?!0:this!==zi?!1:e&&e._writableState instanceof wQ}})):Xb=function(e){return e instanceof this};function zi(t){oI=oI||Wm();var e=this instanceof oI;if(!e&&!Xb.call(zi,this))return new zi(t);this._writableState=new wQ(t,this,e),this.writable=!0,t&&(typeof t.write=="function"&&(this._write=t.write),typeof t.writev=="function"&&(this._writev=t.writev),typeof t.destroy=="function"&&(this._destroy=t.destroy),typeof t.final=="function"&&(this._final=t.final)),U1e.call(this)}zi.prototype.pipe=function(){aI(this,new h1t)};function I1t(t,e){var r=new y1t;aI(t,r),process.nextTick(e,r)}function w1t(t,e,r,o){var a;return r===null?a=new m1t:typeof r!="string"&&!e.objectMode&&(a=new f1t("chunk",["string","Buffer"],r)),a?(aI(t,a),process.nextTick(o,a),!1):!0}zi.prototype.write=function(t,e,r){var o=this._writableState,a=!1,n=!o.objectMode&&l1t(t);return n&&!Zb.isBuffer(t)&&(t=A1t(t)),typeof e=="function"&&(r=e,e=null),n?e="buffer":e||(e=o.defaultEncoding),typeof r!="function"&&(r=E1t),o.ending?I1t(this,r):(n||w1t(this,o,t,r))&&(o.pendingcb++,a=Q1t(this,o,n,t,e,r)),a};zi.prototype.cork=function(){this._writableState.corked++};zi.prototype.uncork=function(){var t=this._writableState;t.corked&&(t.corked--,!t.writing&&!t.corked&&!t.bufferProcessing&&t.bufferedRequest&&K1e(this,t))};zi.prototype.setDefaultEncoding=function(e){if(typeof e=="string"&&(e=e.toLowerCase()),!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((e+"").toLowerCase())>-1))throw new C1t(e);return this._writableState.defaultEncoding=e,this};Object.defineProperty(zi.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}});function B1t(t,e,r){return!t.objectMode&&t.decodeStrings!==!1&&typeof e=="string"&&(e=Zb.from(e,r)),e}Object.defineProperty(zi.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}});function Q1t(t,e,r,o,a,n){if(!r){var c=B1t(e,o,a);o!==c&&(r=!0,a="buffer",o=c)}var f=e.objectMode?1:o.length;e.length+=f;var g=e.length{"use strict";var R1t=Object.keys||function(t){var e=[];for(var r in t)e.push(r);return e};G1e.exports=qu;var q1e=yG(),mG=hG();o0()(qu,q1e);for(dG=R1t(mG.prototype),$b=0;$b{var tF=Ie("buffer"),kg=tF.Buffer;function j1e(t,e){for(var r in t)e[r]=t[r]}kg.from&&kg.alloc&&kg.allocUnsafe&&kg.allocUnsafeSlow?Y1e.exports=tF:(j1e(tF,CG),CG.Buffer=AI);function AI(t,e,r){return kg(t,e,r)}j1e(kg,AI);AI.from=function(t,e,r){if(typeof t=="number")throw new TypeError("Argument must not be a number");return kg(t,e,r)};AI.alloc=function(t,e,r){if(typeof t!="number")throw new TypeError("Argument must be a number");var o=kg(t);return e!==void 0?typeof r=="string"?o.fill(e,r):o.fill(e):o.fill(0),o};AI.allocUnsafe=function(t){if(typeof t!="number")throw new TypeError("Argument must be a number");return kg(t)};AI.allocUnsafeSlow=function(t){if(typeof t!="number")throw new TypeError("Argument must be a number");return tF.SlowBuffer(t)}});var wG=_(V1e=>{"use strict";var IG=W1e().Buffer,J1e=IG.isEncoding||function(t){switch(t=""+t,t&&t.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function M1t(t){if(!t)return"utf8";for(var e;;)switch(t){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return t;default:if(e)return;t=(""+t).toLowerCase(),e=!0}}function L1t(t){var e=M1t(t);if(typeof e!="string"&&(IG.isEncoding===J1e||!J1e(t)))throw new Error("Unknown encoding: "+t);return e||t}V1e.StringDecoder=BQ;function BQ(t){this.encoding=L1t(t);var e;switch(this.encoding){case"utf16le":this.text=q1t,this.end=G1t,e=4;break;case"utf8":this.fillLast=K1t,e=4;break;case"base64":this.text=j1t,this.end=Y1t,e=3;break;default:this.write=W1t,this.end=J1t;return}this.lastNeed=0,this.lastTotal=0,this.lastChar=IG.allocUnsafe(e)}BQ.prototype.write=function(t){if(t.length===0)return"";var e,r;if(this.lastNeed){if(e=this.fillLast(t),e===void 0)return"";r=this.lastNeed,this.lastNeed=0}else r=0;return r>5===6?2:t>>4===14?3:t>>3===30?4:t>>6===2?-1:-2}function O1t(t,e,r){var o=e.length-1;if(o=0?(a>0&&(t.lastNeed=a-1),a):--o=0?(a>0&&(t.lastNeed=a-2),a):--o=0?(a>0&&(a===2?a=0:t.lastNeed=a-3),a):0))}function U1t(t,e,r){if((e[0]&192)!==128)return t.lastNeed=0,"\uFFFD";if(t.lastNeed>1&&e.length>1){if((e[1]&192)!==128)return t.lastNeed=1,"\uFFFD";if(t.lastNeed>2&&e.length>2&&(e[2]&192)!==128)return t.lastNeed=2,"\uFFFD"}}function K1t(t){var e=this.lastTotal-this.lastNeed,r=U1t(this,t,e);if(r!==void 0)return r;if(this.lastNeed<=t.length)return t.copy(this.lastChar,e,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);t.copy(this.lastChar,e,0,t.length),this.lastNeed-=t.length}function _1t(t,e){var r=O1t(this,t,e);if(!this.lastNeed)return t.toString("utf8",e);this.lastTotal=r;var o=t.length-(r-this.lastNeed);return t.copy(this.lastChar,0,o),t.toString("utf8",e,o)}function H1t(t){var e=t&&t.length?this.write(t):"";return this.lastNeed?e+"\uFFFD":e}function q1t(t,e){if((t.length-e)%2===0){var r=t.toString("utf16le",e);if(r){var o=r.charCodeAt(r.length-1);if(o>=55296&&o<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1],r.slice(0,-1)}return r}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=t[t.length-1],t.toString("utf16le",e,t.length-1)}function G1t(t){var e=t&&t.length?this.write(t):"";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return e+this.lastChar.toString("utf16le",0,r)}return e}function j1t(t,e){var r=(t.length-e)%3;return r===0?t.toString("base64",e):(this.lastNeed=3-r,this.lastTotal=3,r===1?this.lastChar[0]=t[t.length-1]:(this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1]),t.toString("base64",e,t.length-r))}function Y1t(t){var e=t&&t.length?this.write(t):"";return this.lastNeed?e+this.lastChar.toString("base64",0,3-this.lastNeed):e}function W1t(t){return t.toString(this.encoding)}function J1t(t){return t&&t.length?this.write(t):""}});var rF=_((yXt,Z1e)=>{"use strict";var z1e=s0().codes.ERR_STREAM_PREMATURE_CLOSE;function V1t(t){var e=!1;return function(){if(!e){e=!0;for(var r=arguments.length,o=new Array(r),a=0;a{"use strict";var nF;function A0(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}var Z1t=rF(),l0=Symbol("lastResolve"),Jm=Symbol("lastReject"),QQ=Symbol("error"),iF=Symbol("ended"),Vm=Symbol("lastPromise"),BG=Symbol("handlePromise"),zm=Symbol("stream");function c0(t,e){return{value:t,done:e}}function $1t(t){var e=t[l0];if(e!==null){var r=t[zm].read();r!==null&&(t[Vm]=null,t[l0]=null,t[Jm]=null,e(c0(r,!1)))}}function e2t(t){process.nextTick($1t,t)}function t2t(t,e){return function(r,o){t.then(function(){if(e[iF]){r(c0(void 0,!0));return}e[BG](r,o)},o)}}var r2t=Object.getPrototypeOf(function(){}),n2t=Object.setPrototypeOf((nF={get stream(){return this[zm]},next:function(){var e=this,r=this[QQ];if(r!==null)return Promise.reject(r);if(this[iF])return Promise.resolve(c0(void 0,!0));if(this[zm].destroyed)return new Promise(function(c,f){process.nextTick(function(){e[QQ]?f(e[QQ]):c(c0(void 0,!0))})});var o=this[Vm],a;if(o)a=new Promise(t2t(o,this));else{var n=this[zm].read();if(n!==null)return Promise.resolve(c0(n,!1));a=new Promise(this[BG])}return this[Vm]=a,a}},A0(nF,Symbol.asyncIterator,function(){return this}),A0(nF,"return",function(){var e=this;return new Promise(function(r,o){e[zm].destroy(null,function(a){if(a){o(a);return}r(c0(void 0,!0))})})}),nF),r2t),i2t=function(e){var r,o=Object.create(n2t,(r={},A0(r,zm,{value:e,writable:!0}),A0(r,l0,{value:null,writable:!0}),A0(r,Jm,{value:null,writable:!0}),A0(r,QQ,{value:null,writable:!0}),A0(r,iF,{value:e._readableState.endEmitted,writable:!0}),A0(r,BG,{value:function(n,c){var f=o[zm].read();f?(o[Vm]=null,o[l0]=null,o[Jm]=null,n(c0(f,!1))):(o[l0]=n,o[Jm]=c)},writable:!0}),r));return o[Vm]=null,Z1t(e,function(a){if(a&&a.code!=="ERR_STREAM_PREMATURE_CLOSE"){var n=o[Jm];n!==null&&(o[Vm]=null,o[l0]=null,o[Jm]=null,n(a)),o[QQ]=a;return}var c=o[l0];c!==null&&(o[Vm]=null,o[l0]=null,o[Jm]=null,c(c0(void 0,!0))),o[iF]=!0}),e.on("readable",e2t.bind(null,o)),o};$1e.exports=i2t});var i2e=_((EXt,n2e)=>{"use strict";function t2e(t,e,r,o,a,n,c){try{var f=t[n](c),g=f.value}catch(p){r(p);return}f.done?e(g):Promise.resolve(g).then(o,a)}function s2t(t){return function(){var e=this,r=arguments;return new Promise(function(o,a){var n=t.apply(e,r);function c(g){t2e(n,o,a,c,f,"next",g)}function f(g){t2e(n,o,a,c,f,"throw",g)}c(void 0)})}}function r2e(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);e&&(o=o.filter(function(a){return Object.getOwnPropertyDescriptor(t,a).enumerable})),r.push.apply(r,o)}return r}function o2t(t){for(var e=1;e{"use strict";p2e.exports=xn;var lI;xn.ReadableState=A2e;var IXt=Ie("events").EventEmitter,a2e=function(e,r){return e.listeners(r).length},DQ=sG(),sF=Ie("buffer").Buffer,c2t=global.Uint8Array||function(){};function u2t(t){return sF.from(t)}function f2t(t){return sF.isBuffer(t)||t instanceof c2t}var QG=Ie("util"),cn;QG&&QG.debuglog?cn=QG.debuglog("stream"):cn=function(){};var g2t=S1e(),bG=AG(),p2t=lG(),h2t=p2t.getHighWaterMark,oF=s0().codes,d2t=oF.ERR_INVALID_ARG_TYPE,m2t=oF.ERR_STREAM_PUSH_AFTER_EOF,y2t=oF.ERR_METHOD_NOT_IMPLEMENTED,C2t=oF.ERR_STREAM_UNSHIFT_AFTER_END_EVENT,cI,vG,DG;o0()(xn,DQ);var vQ=bG.errorOrDestroy,SG=["error","close","destroy","pause","resume"];function E2t(t,e,r){if(typeof t.prependListener=="function")return t.prependListener(e,r);!t._events||!t._events[e]?t.on(e,r):Array.isArray(t._events[e])?t._events[e].unshift(r):t._events[e]=[r,t._events[e]]}function A2e(t,e,r){lI=lI||Wm(),t=t||{},typeof r!="boolean"&&(r=e instanceof lI),this.objectMode=!!t.objectMode,r&&(this.objectMode=this.objectMode||!!t.readableObjectMode),this.highWaterMark=h2t(this,t,"readableHighWaterMark",r),this.buffer=new g2t,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.paused=!0,this.emitClose=t.emitClose!==!1,this.autoDestroy=!!t.autoDestroy,this.destroyed=!1,this.defaultEncoding=t.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,t.encoding&&(cI||(cI=wG().StringDecoder),this.decoder=new cI(t.encoding),this.encoding=t.encoding)}function xn(t){if(lI=lI||Wm(),!(this instanceof xn))return new xn(t);var e=this instanceof lI;this._readableState=new A2e(t,this,e),this.readable=!0,t&&(typeof t.read=="function"&&(this._read=t.read),typeof t.destroy=="function"&&(this._destroy=t.destroy)),DQ.call(this)}Object.defineProperty(xn.prototype,"destroyed",{enumerable:!1,get:function(){return this._readableState===void 0?!1:this._readableState.destroyed},set:function(e){!this._readableState||(this._readableState.destroyed=e)}});xn.prototype.destroy=bG.destroy;xn.prototype._undestroy=bG.undestroy;xn.prototype._destroy=function(t,e){e(t)};xn.prototype.push=function(t,e){var r=this._readableState,o;return r.objectMode?o=!0:typeof t=="string"&&(e=e||r.defaultEncoding,e!==r.encoding&&(t=sF.from(t,e),e=""),o=!0),l2e(this,t,e,!1,o)};xn.prototype.unshift=function(t){return l2e(this,t,null,!0,!1)};function l2e(t,e,r,o,a){cn("readableAddChunk",e);var n=t._readableState;if(e===null)n.reading=!1,B2t(t,n);else{var c;if(a||(c=I2t(n,e)),c)vQ(t,c);else if(n.objectMode||e&&e.length>0)if(typeof e!="string"&&!n.objectMode&&Object.getPrototypeOf(e)!==sF.prototype&&(e=u2t(e)),o)n.endEmitted?vQ(t,new C2t):kG(t,n,e,!0);else if(n.ended)vQ(t,new m2t);else{if(n.destroyed)return!1;n.reading=!1,n.decoder&&!r?(e=n.decoder.write(e),n.objectMode||e.length!==0?kG(t,n,e,!1):PG(t,n)):kG(t,n,e,!1)}else o||(n.reading=!1,PG(t,n))}return!n.ended&&(n.length=s2e?t=s2e:(t--,t|=t>>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,t|=t>>>16,t++),t}function o2e(t,e){return t<=0||e.length===0&&e.ended?0:e.objectMode?1:t!==t?e.flowing&&e.length?e.buffer.head.data.length:e.length:(t>e.highWaterMark&&(e.highWaterMark=w2t(t)),t<=e.length?t:e.ended?e.length:(e.needReadable=!0,0))}xn.prototype.read=function(t){cn("read",t),t=parseInt(t,10);var e=this._readableState,r=t;if(t!==0&&(e.emittedReadable=!1),t===0&&e.needReadable&&((e.highWaterMark!==0?e.length>=e.highWaterMark:e.length>0)||e.ended))return cn("read: emitReadable",e.length,e.ended),e.length===0&&e.ended?xG(this):aF(this),null;if(t=o2e(t,e),t===0&&e.ended)return e.length===0&&xG(this),null;var o=e.needReadable;cn("need readable",o),(e.length===0||e.length-t0?a=f2e(t,e):a=null,a===null?(e.needReadable=e.length<=e.highWaterMark,t=0):(e.length-=t,e.awaitDrain=0),e.length===0&&(e.ended||(e.needReadable=!0),r!==t&&e.ended&&xG(this)),a!==null&&this.emit("data",a),a};function B2t(t,e){if(cn("onEofChunk"),!e.ended){if(e.decoder){var r=e.decoder.end();r&&r.length&&(e.buffer.push(r),e.length+=e.objectMode?1:r.length)}e.ended=!0,e.sync?aF(t):(e.needReadable=!1,e.emittedReadable||(e.emittedReadable=!0,c2e(t)))}}function aF(t){var e=t._readableState;cn("emitReadable",e.needReadable,e.emittedReadable),e.needReadable=!1,e.emittedReadable||(cn("emitReadable",e.flowing),e.emittedReadable=!0,process.nextTick(c2e,t))}function c2e(t){var e=t._readableState;cn("emitReadable_",e.destroyed,e.length,e.ended),!e.destroyed&&(e.length||e.ended)&&(t.emit("readable"),e.emittedReadable=!1),e.needReadable=!e.flowing&&!e.ended&&e.length<=e.highWaterMark,FG(t)}function PG(t,e){e.readingMore||(e.readingMore=!0,process.nextTick(Q2t,t,e))}function Q2t(t,e){for(;!e.reading&&!e.ended&&(e.length1&&g2e(o.pipes,t)!==-1)&&!p&&(cn("false write response, pause",o.awaitDrain),o.awaitDrain++),r.pause())}function Q(U){cn("onerror",U),N(),t.removeListener("error",Q),a2e(t,"error")===0&&vQ(t,U)}E2t(t,"error",Q);function x(){t.removeListener("finish",C),N()}t.once("close",x);function C(){cn("onfinish"),t.removeListener("close",x),N()}t.once("finish",C);function N(){cn("unpipe"),r.unpipe(t)}return t.emit("pipe",r),o.flowing||(cn("pipe resume"),r.resume()),t};function v2t(t){return function(){var r=t._readableState;cn("pipeOnDrain",r.awaitDrain),r.awaitDrain&&r.awaitDrain--,r.awaitDrain===0&&a2e(t,"data")&&(r.flowing=!0,FG(t))}}xn.prototype.unpipe=function(t){var e=this._readableState,r={hasUnpiped:!1};if(e.pipesCount===0)return this;if(e.pipesCount===1)return t&&t!==e.pipes?this:(t||(t=e.pipes),e.pipes=null,e.pipesCount=0,e.flowing=!1,t&&t.emit("unpipe",this,r),this);if(!t){var o=e.pipes,a=e.pipesCount;e.pipes=null,e.pipesCount=0,e.flowing=!1;for(var n=0;n0,o.flowing!==!1&&this.resume()):t==="readable"&&!o.endEmitted&&!o.readableListening&&(o.readableListening=o.needReadable=!0,o.flowing=!1,o.emittedReadable=!1,cn("on readable",o.length,o.reading),o.length?aF(this):o.reading||process.nextTick(D2t,this)),r};xn.prototype.addListener=xn.prototype.on;xn.prototype.removeListener=function(t,e){var r=DQ.prototype.removeListener.call(this,t,e);return t==="readable"&&process.nextTick(u2e,this),r};xn.prototype.removeAllListeners=function(t){var e=DQ.prototype.removeAllListeners.apply(this,arguments);return(t==="readable"||t===void 0)&&process.nextTick(u2e,this),e};function u2e(t){var e=t._readableState;e.readableListening=t.listenerCount("readable")>0,e.resumeScheduled&&!e.paused?e.flowing=!0:t.listenerCount("data")>0&&t.resume()}function D2t(t){cn("readable nexttick read 0"),t.read(0)}xn.prototype.resume=function(){var t=this._readableState;return t.flowing||(cn("resume"),t.flowing=!t.readableListening,S2t(this,t)),t.paused=!1,this};function S2t(t,e){e.resumeScheduled||(e.resumeScheduled=!0,process.nextTick(k2t,t,e))}function k2t(t,e){cn("resume",e.reading),e.reading||t.read(0),e.resumeScheduled=!1,t.emit("resume"),FG(t),e.flowing&&!e.reading&&t.read(0)}xn.prototype.pause=function(){return cn("call pause flowing=%j",this._readableState.flowing),this._readableState.flowing!==!1&&(cn("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this};function FG(t){var e=t._readableState;for(cn("flow",e.flowing);e.flowing&&t.read()!==null;);}xn.prototype.wrap=function(t){var e=this,r=this._readableState,o=!1;t.on("end",function(){if(cn("wrapped end"),r.decoder&&!r.ended){var c=r.decoder.end();c&&c.length&&e.push(c)}e.push(null)}),t.on("data",function(c){if(cn("wrapped data"),r.decoder&&(c=r.decoder.write(c)),!(r.objectMode&&c==null)&&!(!r.objectMode&&(!c||!c.length))){var f=e.push(c);f||(o=!0,t.pause())}});for(var a in t)this[a]===void 0&&typeof t[a]=="function"&&(this[a]=function(f){return function(){return t[f].apply(t,arguments)}}(a));for(var n=0;n=e.length?(e.decoder?r=e.buffer.join(""):e.buffer.length===1?r=e.buffer.first():r=e.buffer.concat(e.length),e.buffer.clear()):r=e.buffer.consume(t,e.decoder),r}function xG(t){var e=t._readableState;cn("endReadable",e.endEmitted),e.endEmitted||(e.ended=!0,process.nextTick(x2t,e,t))}function x2t(t,e){if(cn("endReadableNT",t.endEmitted,t.length),!t.endEmitted&&t.length===0&&(t.endEmitted=!0,e.readable=!1,e.emit("end"),t.autoDestroy)){var r=e._writableState;(!r||r.autoDestroy&&r.finished)&&e.destroy()}}typeof Symbol=="function"&&(xn.from=function(t,e){return DG===void 0&&(DG=i2e()),DG(xn,t,e)});function g2e(t,e){for(var r=0,o=t.length;r{"use strict";d2e.exports=xg;var AF=s0().codes,P2t=AF.ERR_METHOD_NOT_IMPLEMENTED,b2t=AF.ERR_MULTIPLE_CALLBACK,F2t=AF.ERR_TRANSFORM_ALREADY_TRANSFORMING,R2t=AF.ERR_TRANSFORM_WITH_LENGTH_0,lF=Wm();o0()(xg,lF);function T2t(t,e){var r=this._transformState;r.transforming=!1;var o=r.writecb;if(o===null)return this.emit("error",new b2t);r.writechunk=null,r.writecb=null,e!=null&&this.push(e),o(t);var a=this._readableState;a.reading=!1,(a.needReadable||a.length{"use strict";y2e.exports=SQ;var m2e=RG();o0()(SQ,m2e);function SQ(t){if(!(this instanceof SQ))return new SQ(t);m2e.call(this,t)}SQ.prototype._transform=function(t,e,r){r(null,t)}});var Q2e=_((vXt,B2e)=>{"use strict";var TG;function M2t(t){var e=!1;return function(){e||(e=!0,t.apply(void 0,arguments))}}var w2e=s0().codes,L2t=w2e.ERR_MISSING_ARGS,O2t=w2e.ERR_STREAM_DESTROYED;function E2e(t){if(t)throw t}function U2t(t){return t.setHeader&&typeof t.abort=="function"}function K2t(t,e,r,o){o=M2t(o);var a=!1;t.on("close",function(){a=!0}),TG===void 0&&(TG=rF()),TG(t,{readable:e,writable:r},function(c){if(c)return o(c);a=!0,o()});var n=!1;return function(c){if(!a&&!n){if(n=!0,U2t(t))return t.abort();if(typeof t.destroy=="function")return t.destroy();o(c||new O2t("pipe"))}}}function I2e(t){t()}function _2t(t,e){return t.pipe(e)}function H2t(t){return!t.length||typeof t[t.length-1]!="function"?E2e:t.pop()}function q2t(){for(var t=arguments.length,e=new Array(t),r=0;r0;return K2t(c,g,p,function(E){a||(a=E),E&&n.forEach(I2e),!g&&(n.forEach(I2e),o(a))})});return e.reduce(_2t)}B2e.exports=q2t});var uI=_((Ul,xQ)=>{var kQ=Ie("stream");process.env.READABLE_STREAM==="disable"&&kQ?(xQ.exports=kQ.Readable,Object.assign(xQ.exports,kQ),xQ.exports.Stream=kQ):(Ul=xQ.exports=yG(),Ul.Stream=kQ||Ul,Ul.Readable=Ul,Ul.Writable=hG(),Ul.Duplex=Wm(),Ul.Transform=RG(),Ul.PassThrough=C2e(),Ul.finished=rF(),Ul.pipeline=Q2e())});var S2e=_((DXt,D2e)=>{"use strict";var{Buffer:Mc}=Ie("buffer"),v2e=Symbol.for("BufferList");function di(t){if(!(this instanceof di))return new di(t);di._init.call(this,t)}di._init=function(e){Object.defineProperty(this,v2e,{value:!0}),this._bufs=[],this.length=0,e&&this.append(e)};di.prototype._new=function(e){return new di(e)};di.prototype._offset=function(e){if(e===0)return[0,0];let r=0;for(let o=0;othis.length||e<0)return;let r=this._offset(e);return this._bufs[r[0]][r[1]]};di.prototype.slice=function(e,r){return typeof e=="number"&&e<0&&(e+=this.length),typeof r=="number"&&r<0&&(r+=this.length),this.copy(null,0,e,r)};di.prototype.copy=function(e,r,o,a){if((typeof o!="number"||o<0)&&(o=0),(typeof a!="number"||a>this.length)&&(a=this.length),o>=this.length||a<=0)return e||Mc.alloc(0);let n=!!e,c=this._offset(o),f=a-o,g=f,p=n&&r||0,E=c[1];if(o===0&&a===this.length){if(!n)return this._bufs.length===1?this._bufs[0]:Mc.concat(this._bufs,this.length);for(let B=0;BQ)this._bufs[B].copy(e,p,E),p+=Q;else{this._bufs[B].copy(e,p,E,E+g),p+=Q;break}g-=Q,E&&(E=0)}return e.length>p?e.slice(0,p):e};di.prototype.shallowSlice=function(e,r){if(e=e||0,r=typeof r!="number"?this.length:r,e<0&&(e+=this.length),r<0&&(r+=this.length),e===r)return this._new();let o=this._offset(e),a=this._offset(r),n=this._bufs.slice(o[0],a[0]+1);return a[1]===0?n.pop():n[n.length-1]=n[n.length-1].slice(0,a[1]),o[1]!==0&&(n[0]=n[0].slice(o[1])),this._new(n)};di.prototype.toString=function(e,r,o){return this.slice(r,o).toString(e)};di.prototype.consume=function(e){if(e=Math.trunc(e),Number.isNaN(e)||e<=0)return this;for(;this._bufs.length;)if(e>=this._bufs[0].length)e-=this._bufs[0].length,this.length-=this._bufs[0].length,this._bufs.shift();else{this._bufs[0]=this._bufs[0].slice(e),this.length-=e;break}return this};di.prototype.duplicate=function(){let e=this._new();for(let r=0;rthis.length?this.length:e;let o=this._offset(e),a=o[0],n=o[1];for(;a=t.length){let g=c.indexOf(t,n);if(g!==-1)return this._reverseOffset([a,g]);n=c.length-t.length+1}else{let g=this._reverseOffset([a,n]);if(this._match(g,t))return g;n++}n=0}return-1};di.prototype._match=function(t,e){if(this.length-t{"use strict";var NG=uI().Duplex,G2t=o0(),PQ=S2e();function $o(t){if(!(this instanceof $o))return new $o(t);if(typeof t=="function"){this._callback=t;let e=function(o){this._callback&&(this._callback(o),this._callback=null)}.bind(this);this.on("pipe",function(o){o.on("error",e)}),this.on("unpipe",function(o){o.removeListener("error",e)}),t=null}PQ._init.call(this,t),NG.call(this)}G2t($o,NG);Object.assign($o.prototype,PQ.prototype);$o.prototype._new=function(e){return new $o(e)};$o.prototype._write=function(e,r,o){this._appendBuffer(e),typeof o=="function"&&o()};$o.prototype._read=function(e){if(!this.length)return this.push(null);e=Math.min(e,this.length),this.push(this.slice(0,e)),this.consume(e)};$o.prototype.end=function(e){NG.prototype.end.call(this,e),this._callback&&(this._callback(null,this.slice()),this._callback=null)};$o.prototype._destroy=function(e,r){this._bufs.length=0,this.length=0,r(e)};$o.prototype._isBufferList=function(e){return e instanceof $o||e instanceof PQ||$o.isBufferList(e)};$o.isBufferList=PQ.isBufferList;cF.exports=$o;cF.exports.BufferListStream=$o;cF.exports.BufferList=PQ});var OG=_(gI=>{var j2t=Buffer.alloc,Y2t="0000000000000000000",W2t="7777777777777777777",x2e="0".charCodeAt(0),P2e=Buffer.from("ustar\0","binary"),J2t=Buffer.from("00","binary"),V2t=Buffer.from("ustar ","binary"),z2t=Buffer.from(" \0","binary"),X2t=parseInt("7777",8),bQ=257,LG=263,Z2t=function(t,e,r){return typeof t!="number"?r:(t=~~t,t>=e?e:t>=0||(t+=e,t>=0)?t:0)},$2t=function(t){switch(t){case 0:return"file";case 1:return"link";case 2:return"symlink";case 3:return"character-device";case 4:return"block-device";case 5:return"directory";case 6:return"fifo";case 7:return"contiguous-file";case 72:return"pax-header";case 55:return"pax-global-header";case 27:return"gnu-long-link-path";case 28:case 30:return"gnu-long-path"}return null},eQt=function(t){switch(t){case"file":return 0;case"link":return 1;case"symlink":return 2;case"character-device":return 3;case"block-device":return 4;case"directory":return 5;case"fifo":return 6;case"contiguous-file":return 7;case"pax-header":return 72}return 0},b2e=function(t,e,r,o){for(;re?W2t.slice(0,e)+" ":Y2t.slice(0,e-t.length)+t+" "};function tQt(t){var e;if(t[0]===128)e=!0;else if(t[0]===255)e=!1;else return null;for(var r=[],o=t.length-1;o>0;o--){var a=t[o];e?r.push(a):r.push(255-a)}var n=0,c=r.length;for(o=0;o=Math.pow(10,r)&&r++,e+r+t};gI.decodeLongPath=function(t,e){return fI(t,0,t.length,e)};gI.encodePax=function(t){var e="";t.name&&(e+=MG(" path="+t.name+` -`)),t.linkname&&(e+=MG(" linkpath="+t.linkname+` -`));var r=t.pax;if(r)for(var o in r)e+=MG(" "+o+"="+r[o]+` -`);return Buffer.from(e)};gI.decodePax=function(t){for(var e={};t.length;){for(var r=0;r100;){var a=r.indexOf("/");if(a===-1)return null;o+=o?"/"+r.slice(0,a):r.slice(0,a),r=r.slice(a+1)}return Buffer.byteLength(r)>100||Buffer.byteLength(o)>155||t.linkname&&Buffer.byteLength(t.linkname)>100?null:(e.write(r),e.write(u0(t.mode&X2t,6),100),e.write(u0(t.uid,6),108),e.write(u0(t.gid,6),116),e.write(u0(t.size,11),124),e.write(u0(t.mtime.getTime()/1e3|0,11),136),e[156]=x2e+eQt(t.type),t.linkname&&e.write(t.linkname,157),P2e.copy(e,bQ),J2t.copy(e,LG),t.uname&&e.write(t.uname,265),t.gname&&e.write(t.gname,297),e.write(u0(t.devmajor||0,6),329),e.write(u0(t.devminor||0,6),337),o&&e.write(o,345),e.write(u0(F2e(e),6),148),e)};gI.decode=function(t,e,r){var o=t[156]===0?0:t[156]-x2e,a=fI(t,0,100,e),n=f0(t,100,8),c=f0(t,108,8),f=f0(t,116,8),g=f0(t,124,12),p=f0(t,136,12),E=$2t(o),B=t[157]===0?null:fI(t,157,100,e),Q=fI(t,265,32),x=fI(t,297,32),C=f0(t,329,8),N=f0(t,337,8),U=F2e(t);if(U===8*32)return null;if(U!==f0(t,148,8))throw new Error("Invalid tar header. Maybe the tar is corrupted or it needs to be gunzipped?");if(P2e.compare(t,bQ,bQ+6)===0)t[345]&&(a=fI(t,345,155,e)+"/"+a);else if(!(V2t.compare(t,bQ,bQ+6)===0&&z2t.compare(t,LG,LG+2)===0)){if(!r)throw new Error("Invalid tar header: unknown format.")}return o===0&&a&&a[a.length-1]==="/"&&(o=5),{name:a,mode:n,uid:c,gid:f,size:g,mtime:new Date(1e3*p),type:E,linkname:B,uname:Q,gname:x,devmajor:C,devminor:N}}});var U2e=_((xXt,O2e)=>{var T2e=Ie("util"),rQt=k2e(),FQ=OG(),N2e=uI().Writable,M2e=uI().PassThrough,L2e=function(){},R2e=function(t){return t&=511,t&&512-t},nQt=function(t,e){var r=new uF(t,e);return r.end(),r},iQt=function(t,e){return e.path&&(t.name=e.path),e.linkpath&&(t.linkname=e.linkpath),e.size&&(t.size=parseInt(e.size,10)),t.pax=e,t},uF=function(t,e){this._parent=t,this.offset=e,M2e.call(this,{autoDestroy:!1})};T2e.inherits(uF,M2e);uF.prototype.destroy=function(t){this._parent.destroy(t)};var Pg=function(t){if(!(this instanceof Pg))return new Pg(t);N2e.call(this,t),t=t||{},this._offset=0,this._buffer=rQt(),this._missing=0,this._partial=!1,this._onparse=L2e,this._header=null,this._stream=null,this._overflow=null,this._cb=null,this._locked=!1,this._destroyed=!1,this._pax=null,this._paxGlobal=null,this._gnuLongPath=null,this._gnuLongLinkPath=null;var e=this,r=e._buffer,o=function(){e._continue()},a=function(Q){if(e._locked=!1,Q)return e.destroy(Q);e._stream||o()},n=function(){e._stream=null;var Q=R2e(e._header.size);Q?e._parse(Q,c):e._parse(512,B),e._locked||o()},c=function(){e._buffer.consume(R2e(e._header.size)),e._parse(512,B),o()},f=function(){var Q=e._header.size;e._paxGlobal=FQ.decodePax(r.slice(0,Q)),r.consume(Q),n()},g=function(){var Q=e._header.size;e._pax=FQ.decodePax(r.slice(0,Q)),e._paxGlobal&&(e._pax=Object.assign({},e._paxGlobal,e._pax)),r.consume(Q),n()},p=function(){var Q=e._header.size;this._gnuLongPath=FQ.decodeLongPath(r.slice(0,Q),t.filenameEncoding),r.consume(Q),n()},E=function(){var Q=e._header.size;this._gnuLongLinkPath=FQ.decodeLongPath(r.slice(0,Q),t.filenameEncoding),r.consume(Q),n()},B=function(){var Q=e._offset,x;try{x=e._header=FQ.decode(r.slice(0,512),t.filenameEncoding,t.allowUnknownFormat)}catch(C){e.emit("error",C)}if(r.consume(512),!x){e._parse(512,B),o();return}if(x.type==="gnu-long-path"){e._parse(x.size,p),o();return}if(x.type==="gnu-long-link-path"){e._parse(x.size,E),o();return}if(x.type==="pax-global-header"){e._parse(x.size,f),o();return}if(x.type==="pax-header"){e._parse(x.size,g),o();return}if(e._gnuLongPath&&(x.name=e._gnuLongPath,e._gnuLongPath=null),e._gnuLongLinkPath&&(x.linkname=e._gnuLongLinkPath,e._gnuLongLinkPath=null),e._pax&&(e._header=x=iQt(x,e._pax),e._pax=null),e._locked=!0,!x.size||x.type==="directory"){e._parse(512,B),e.emit("entry",x,nQt(e,Q),a);return}e._stream=new uF(e,Q),e.emit("entry",x,e._stream,a),e._parse(x.size,n),o()};this._onheader=B,this._parse(512,B)};T2e.inherits(Pg,N2e);Pg.prototype.destroy=function(t){this._destroyed||(this._destroyed=!0,t&&this.emit("error",t),this.emit("close"),this._stream&&this._stream.emit("close"))};Pg.prototype._parse=function(t,e){this._destroyed||(this._offset+=t,this._missing=t,e===this._onheader&&(this._partial=!1),this._onparse=e)};Pg.prototype._continue=function(){if(!this._destroyed){var t=this._cb;this._cb=L2e,this._overflow?this._write(this._overflow,void 0,t):t()}};Pg.prototype._write=function(t,e,r){if(!this._destroyed){var o=this._stream,a=this._buffer,n=this._missing;if(t.length&&(this._partial=!0),t.lengthn&&(c=t.slice(n),t=t.slice(0,n)),o?o.end(t):a.append(t),this._overflow=c,this._onparse()}};Pg.prototype._final=function(t){if(this._partial)return this.destroy(new Error("Unexpected end of data"));t()};O2e.exports=Pg});var _2e=_((PXt,K2e)=>{K2e.exports=Ie("fs").constants||Ie("constants")});var Y2e=_((bXt,j2e)=>{var pI=_2e(),H2e=_4(),gF=o0(),sQt=Buffer.alloc,q2e=uI().Readable,hI=uI().Writable,oQt=Ie("string_decoder").StringDecoder,fF=OG(),aQt=parseInt("755",8),AQt=parseInt("644",8),G2e=sQt(1024),KG=function(){},UG=function(t,e){e&=511,e&&t.push(G2e.slice(0,512-e))};function lQt(t){switch(t&pI.S_IFMT){case pI.S_IFBLK:return"block-device";case pI.S_IFCHR:return"character-device";case pI.S_IFDIR:return"directory";case pI.S_IFIFO:return"fifo";case pI.S_IFLNK:return"symlink"}return"file"}var pF=function(t){hI.call(this),this.written=0,this._to=t,this._destroyed=!1};gF(pF,hI);pF.prototype._write=function(t,e,r){if(this.written+=t.length,this._to.push(t))return r();this._to._drain=r};pF.prototype.destroy=function(){this._destroyed||(this._destroyed=!0,this.emit("close"))};var hF=function(){hI.call(this),this.linkname="",this._decoder=new oQt("utf-8"),this._destroyed=!1};gF(hF,hI);hF.prototype._write=function(t,e,r){this.linkname+=this._decoder.write(t),r()};hF.prototype.destroy=function(){this._destroyed||(this._destroyed=!0,this.emit("close"))};var RQ=function(){hI.call(this),this._destroyed=!1};gF(RQ,hI);RQ.prototype._write=function(t,e,r){r(new Error("No body allowed for this entry"))};RQ.prototype.destroy=function(){this._destroyed||(this._destroyed=!0,this.emit("close"))};var Gu=function(t){if(!(this instanceof Gu))return new Gu(t);q2e.call(this,t),this._drain=KG,this._finalized=!1,this._finalizing=!1,this._destroyed=!1,this._stream=null};gF(Gu,q2e);Gu.prototype.entry=function(t,e,r){if(this._stream)throw new Error("already piping an entry");if(!(this._finalized||this._destroyed)){typeof e=="function"&&(r=e,e=null),r||(r=KG);var o=this;if((!t.size||t.type==="symlink")&&(t.size=0),t.type||(t.type=lQt(t.mode)),t.mode||(t.mode=t.type==="directory"?aQt:AQt),t.uid||(t.uid=0),t.gid||(t.gid=0),t.mtime||(t.mtime=new Date),typeof e=="string"&&(e=Buffer.from(e)),Buffer.isBuffer(e)){t.size=e.length,this._encode(t);var a=this.push(e);return UG(o,t.size),a?process.nextTick(r):this._drain=r,new RQ}if(t.type==="symlink"&&!t.linkname){var n=new hF;return H2e(n,function(f){if(f)return o.destroy(),r(f);t.linkname=n.linkname,o._encode(t),r()}),n}if(this._encode(t),t.type!=="file"&&t.type!=="contiguous-file")return process.nextTick(r),new RQ;var c=new pF(this);return this._stream=c,H2e(c,function(f){if(o._stream=null,f)return o.destroy(),r(f);if(c.written!==t.size)return o.destroy(),r(new Error("size mismatch"));UG(o,t.size),o._finalizing&&o.finalize(),r()}),c}};Gu.prototype.finalize=function(){if(this._stream){this._finalizing=!0;return}this._finalized||(this._finalized=!0,this.push(G2e),this.push(null))};Gu.prototype.destroy=function(t){this._destroyed||(this._destroyed=!0,t&&this.emit("error",t),this.emit("close"),this._stream&&this._stream.destroy&&this._stream.destroy())};Gu.prototype._encode=function(t){if(!t.pax){var e=fF.encode(t);if(e){this.push(e);return}}this._encodePax(t)};Gu.prototype._encodePax=function(t){var e=fF.encodePax({name:t.name,linkname:t.linkname,pax:t.pax}),r={name:"PaxHeader",mode:t.mode,uid:t.uid,gid:t.gid,size:e.length,mtime:t.mtime,type:"pax-header",linkname:t.linkname&&"PaxHeader",uname:t.uname,gname:t.gname,devmajor:t.devmajor,devminor:t.devminor};this.push(fF.encode(r)),this.push(e),UG(this,e.length),r.size=t.size,r.type=t.type,this.push(fF.encode(r))};Gu.prototype._read=function(t){var e=this._drain;this._drain=KG,e()};j2e.exports=Gu});var W2e=_(_G=>{_G.extract=U2e();_G.pack=Y2e()});var sQe=_((ZXt,iQe)=>{"use strict";var Xm=class{constructor(e,r,o){this.__specs=e||{},Object.keys(this.__specs).forEach(a=>{if(typeof this.__specs[a]=="string"){let n=this.__specs[a],c=this.__specs[n];if(c){let f=c.aliases||[];f.push(a,n),c.aliases=[...new Set(f)],this.__specs[a]=c}else throw new Error(`Alias refers to invalid key: ${n} -> ${a}`)}}),this.__opts=r||{},this.__providers=rQe(o.filter(a=>a!=null&&typeof a=="object")),this.__isFiggyPudding=!0}get(e){return WG(this,e,!0)}get[Symbol.toStringTag](){return"FiggyPudding"}forEach(e,r=this){for(let[o,a]of this.entries())e.call(r,a,o,this)}toJSON(){let e={};return this.forEach((r,o)=>{e[o]=r}),e}*entries(e){for(let o of Object.keys(this.__specs))yield[o,this.get(o)];let r=e||this.__opts.other;if(r){let o=new Set;for(let a of this.__providers){let n=a.entries?a.entries(r):QQt(a);for(let[c,f]of n)r(c)&&!o.has(c)&&(o.add(c),yield[c,f])}}}*[Symbol.iterator](){for(let[e,r]of this.entries())yield[e,r]}*keys(){for(let[e]of this.entries())yield e}*values(){for(let[,e]of this.entries())yield e}concat(...e){return new Proxy(new Xm(this.__specs,this.__opts,rQe(this.__providers).concat(e)),nQe)}};try{let t=Ie("util");Xm.prototype[t.inspect.custom]=function(e,r){return this[Symbol.toStringTag]+" "+t.inspect(this.toJSON(),r)}}catch{}function wQt(t){throw Object.assign(new Error(`invalid config key requested: ${t}`),{code:"EBADKEY"})}function WG(t,e,r){let o=t.__specs[e];if(r&&!o&&(!t.__opts.other||!t.__opts.other(e)))wQt(e);else{o||(o={});let a;for(let n of t.__providers){if(a=tQe(e,n),a===void 0&&o.aliases&&o.aliases.length){for(let c of o.aliases)if(c!==e&&(a=tQe(c,n),a!==void 0))break}if(a!==void 0)break}return a===void 0&&o.default!==void 0?typeof o.default=="function"?o.default(t):o.default:a}}function tQe(t,e){let r;return e.__isFiggyPudding?r=WG(e,t,!1):typeof e.get=="function"?r=e.get(t):r=e[t],r}var nQe={has(t,e){return e in t.__specs&&WG(t,e,!1)!==void 0},ownKeys(t){return Object.keys(t.__specs)},get(t,e){return typeof e=="symbol"||e.slice(0,2)==="__"||e in Xm.prototype?t[e]:t.get(e)},set(t,e,r){if(typeof e=="symbol"||e.slice(0,2)==="__")return t[e]=r,!0;throw new Error("figgyPudding options cannot be modified. Use .concat() instead.")},deleteProperty(){throw new Error("figgyPudding options cannot be deleted. Use .concat() and shadow them instead.")}};iQe.exports=BQt;function BQt(t,e){function r(...o){return new Proxy(new Xm(t,e,o),nQe)}return r}function rQe(t){let e=[];return t.forEach(r=>e.unshift(r)),e}function QQt(t){return Object.keys(t).map(e=>[e,t[e]])}});var AQe=_(($Xt,Wu)=>{"use strict";var NQ=Ie("crypto"),vQt=sQe(),DQt=Ie("stream").Transform,oQe=["sha256","sha384","sha512"],SQt=/^[a-z0-9+/]+(?:=?=?)$/i,kQt=/^([^-]+)-([^?]+)([?\S*]*)$/,xQt=/^([^-]+)-([A-Za-z0-9+/=]{44,88})(\?[\x21-\x7E]*)*$/,PQt=/^[\x21-\x7E]+$/,Ba=vQt({algorithms:{default:["sha512"]},error:{default:!1},integrity:{},options:{default:[]},pickAlgorithm:{default:()=>OQt},Promise:{default:()=>Promise},sep:{default:" "},single:{default:!1},size:{},strict:{default:!1}}),h0=class{get isHash(){return!0}constructor(e,r){r=Ba(r);let o=!!r.strict;this.source=e.trim();let a=this.source.match(o?xQt:kQt);if(!a||o&&!oQe.some(c=>c===a[1]))return;this.algorithm=a[1],this.digest=a[2];let n=a[3];this.options=n?n.slice(1).split("?"):[]}hexDigest(){return this.digest&&Buffer.from(this.digest,"base64").toString("hex")}toJSON(){return this.toString()}toString(e){if(e=Ba(e),e.strict&&!(oQe.some(o=>o===this.algorithm)&&this.digest.match(SQt)&&(this.options||[]).every(o=>o.match(PQt))))return"";let r=this.options&&this.options.length?`?${this.options.join("?")}`:"";return`${this.algorithm}-${this.digest}${r}`}},Zm=class{get isIntegrity(){return!0}toJSON(){return this.toString()}toString(e){e=Ba(e);let r=e.sep||" ";return e.strict&&(r=r.replace(/\S+/g," ")),Object.keys(this).map(o=>this[o].map(a=>h0.prototype.toString.call(a,e)).filter(a=>a.length).join(r)).filter(o=>o.length).join(r)}concat(e,r){r=Ba(r);let o=typeof e=="string"?e:TQ(e,r);return Yu(`${this.toString(r)} ${o}`,r)}hexDigest(){return Yu(this,{single:!0}).hexDigest()}match(e,r){r=Ba(r);let o=Yu(e,r),a=o.pickAlgorithm(r);return this[a]&&o[a]&&this[a].find(n=>o[a].find(c=>n.digest===c.digest))||!1}pickAlgorithm(e){e=Ba(e);let r=e.pickAlgorithm,o=Object.keys(this);if(!o.length)throw new Error(`No algorithms available for ${JSON.stringify(this.toString())}`);return o.reduce((a,n)=>r(a,n)||a)}};Wu.exports.parse=Yu;function Yu(t,e){if(e=Ba(e),typeof t=="string")return JG(t,e);if(t.algorithm&&t.digest){let r=new Zm;return r[t.algorithm]=[t],JG(TQ(r,e),e)}else return JG(TQ(t,e),e)}function JG(t,e){return e.single?new h0(t,e):t.trim().split(/\s+/).reduce((r,o)=>{let a=new h0(o,e);if(a.algorithm&&a.digest){let n=a.algorithm;r[n]||(r[n]=[]),r[n].push(a)}return r},new Zm)}Wu.exports.stringify=TQ;function TQ(t,e){return e=Ba(e),t.algorithm&&t.digest?h0.prototype.toString.call(t,e):typeof t=="string"?TQ(Yu(t,e),e):Zm.prototype.toString.call(t,e)}Wu.exports.fromHex=bQt;function bQt(t,e,r){r=Ba(r);let o=r.options&&r.options.length?`?${r.options.join("?")}`:"";return Yu(`${e}-${Buffer.from(t,"hex").toString("base64")}${o}`,r)}Wu.exports.fromData=FQt;function FQt(t,e){e=Ba(e);let r=e.algorithms,o=e.options&&e.options.length?`?${e.options.join("?")}`:"";return r.reduce((a,n)=>{let c=NQ.createHash(n).update(t).digest("base64"),f=new h0(`${n}-${c}${o}`,e);if(f.algorithm&&f.digest){let g=f.algorithm;a[g]||(a[g]=[]),a[g].push(f)}return a},new Zm)}Wu.exports.fromStream=RQt;function RQt(t,e){e=Ba(e);let r=e.Promise||Promise,o=VG(e);return new r((a,n)=>{t.pipe(o),t.on("error",n),o.on("error",n);let c;o.on("integrity",f=>{c=f}),o.on("end",()=>a(c)),o.on("data",()=>{})})}Wu.exports.checkData=TQt;function TQt(t,e,r){if(r=Ba(r),e=Yu(e,r),!Object.keys(e).length){if(r.error)throw Object.assign(new Error("No valid integrity hashes to check against"),{code:"EINTEGRITY"});return!1}let o=e.pickAlgorithm(r),a=NQ.createHash(o).update(t).digest("base64"),n=Yu({algorithm:o,digest:a}),c=n.match(e,r);if(c||!r.error)return c;if(typeof r.size=="number"&&t.length!==r.size){let f=new Error(`data size mismatch when checking ${e}. - Wanted: ${r.size} - Found: ${t.length}`);throw f.code="EBADSIZE",f.found=t.length,f.expected=r.size,f.sri=e,f}else{let f=new Error(`Integrity checksum failed when using ${o}: Wanted ${e}, but got ${n}. (${t.length} bytes)`);throw f.code="EINTEGRITY",f.found=n,f.expected=e,f.algorithm=o,f.sri=e,f}}Wu.exports.checkStream=NQt;function NQt(t,e,r){r=Ba(r);let o=r.Promise||Promise,a=VG(r.concat({integrity:e}));return new o((n,c)=>{t.pipe(a),t.on("error",c),a.on("error",c);let f;a.on("verified",g=>{f=g}),a.on("end",()=>n(f)),a.on("data",()=>{})})}Wu.exports.integrityStream=VG;function VG(t){t=Ba(t);let e=t.integrity&&Yu(t.integrity,t),r=e&&Object.keys(e).length,o=r&&e.pickAlgorithm(t),a=r&&e[o],n=Array.from(new Set(t.algorithms.concat(o?[o]:[]))),c=n.map(NQ.createHash),f=0,g=new DQt({transform(p,E,B){f+=p.length,c.forEach(Q=>Q.update(p,E)),B(null,p,E)}}).on("end",()=>{let p=t.options&&t.options.length?`?${t.options.join("?")}`:"",E=Yu(c.map((Q,x)=>`${n[x]}-${Q.digest("base64")}${p}`).join(" "),t),B=r&&E.match(e,t);if(typeof t.size=="number"&&f!==t.size){let Q=new Error(`stream size mismatch when checking ${e}. - Wanted: ${t.size} - Found: ${f}`);Q.code="EBADSIZE",Q.found=f,Q.expected=t.size,Q.sri=e,g.emit("error",Q)}else if(t.integrity&&!B){let Q=new Error(`${e} integrity checksum failed when using ${o}: wanted ${a} but got ${E}. (${f} bytes)`);Q.code="EINTEGRITY",Q.found=E,Q.expected=a,Q.algorithm=o,Q.sri=e,g.emit("error",Q)}else g.emit("size",f),g.emit("integrity",E),B&&g.emit("verified",B)});return g}Wu.exports.create=MQt;function MQt(t){t=Ba(t);let e=t.algorithms,r=t.options.length?`?${t.options.join("?")}`:"",o=e.map(NQ.createHash);return{update:function(a,n){return o.forEach(c=>c.update(a,n)),this},digest:function(a){return e.reduce((c,f)=>{let g=o.shift().digest("base64"),p=new h0(`${f}-${g}${r}`,t);if(p.algorithm&&p.digest){let E=p.algorithm;c[E]||(c[E]=[]),c[E].push(p)}return c},new Zm)}}}var LQt=new Set(NQ.getHashes()),aQe=["md5","whirlpool","sha1","sha224","sha256","sha384","sha512","sha3","sha3-256","sha3-384","sha3-512","sha3_256","sha3_384","sha3_512"].filter(t=>LQt.has(t));function OQt(t,e){return aQe.indexOf(t.toLowerCase())>=aQe.indexOf(e.toLowerCase())?t:e}});var KQe=_((qtr,UQe)=>{var Kvt=_M();function _vt(t){return Kvt(t)?void 0:t}UQe.exports=_vt});var HQe=_((Gtr,_Qe)=>{var Hvt=zU(),qvt=l_(),Gvt=g_(),jvt=ym(),Yvt=_d(),Wvt=KQe(),Jvt=rK(),Vvt=A_(),zvt=1,Xvt=2,Zvt=4,$vt=Jvt(function(t,e){var r={};if(t==null)return r;var o=!1;e=Hvt(e,function(n){return n=jvt(n,t),o||(o=n.length>1),n}),Yvt(t,Vvt(t),r),o&&(r=qvt(r,zvt|Xvt|Zvt,Wvt));for(var a=e.length;a--;)Gvt(r,e[a]);return r});_Qe.exports=$vt});$e();$e();Ft();var cK=Ie("child_process"),zpe=be(Qd()),sP=be(Vt()),uK=Ie("fs");var wE=new Map([]);function pft(t){let e=me.fromPortablePath(t);process.on("SIGINT",()=>{}),e?(0,cK.execFileSync)(process.execPath,[e,...process.argv.slice(2)],{stdio:"inherit",env:{...process.env,YARN_IGNORE_PATH:"1",YARN_IGNORE_CWD:"1"}}):(0,cK.execFileSync)(e,process.argv.slice(2),{stdio:"inherit",env:{...process.env,YARN_IGNORE_PATH:"1",YARN_IGNORE_CWD:"1"}})}async function oP({binaryVersion:t,pluginConfiguration:e}){async function r(){let a=new sP.Cli({binaryLabel:"Yarn Package Manager",binaryName:"yarn",binaryVersion:t});try{await o(a)}catch(n){process.stdout.write(a.error(n)),process.exitCode=1}}async function o(a){var N,U,H,X;let n=process.versions.node,c=">=14.15.0";if(!Ze.parseOptionalBoolean(process.env.YARN_IGNORE_NODE)&&!Zr.satisfiesWithPrereleases(n,c))throw new sP.UsageError(`This tool requires a Node version compatible with ${c} (got ${n}). Upgrade Node, or set \`YARN_IGNORE_NODE=1\` in your environment.`);let g=await rt.find(me.toPortablePath(process.cwd()),e,{usePath:!0,strict:!1}),p=g.get("yarnPath"),E=g.get("ignorePath"),B=g.get("ignoreCwd"),Q=me.toPortablePath(me.resolve(process.argv[1])),x=ie=>ge.readFilePromise(ie).catch(()=>Buffer.of());if(!E&&!B&&await(async()=>p&&(p===Q||Buffer.compare(...await Promise.all([x(p),x(Q)]))===0))()){process.env.YARN_IGNORE_PATH="1",process.env.YARN_IGNORE_CWD="1",await o(a);return}else if(p!==null&&!E)if(!ge.existsSync(p))process.stdout.write(a.error(new Error(`The "yarn-path" option has been set (in ${g.sources.get("yarnPath")}), but the specified location doesn't exist (${p}).`))),process.exitCode=1;else try{pft(p)}catch(ie){process.exitCode=ie.code||1}else{E&&delete process.env.YARN_IGNORE_PATH,g.get("enableTelemetry")&&!zpe.isCI&&process.stdout.isTTY&&(rt.telemetry=new IE(g,"puba9cdc10ec5790a2cf4969dd413a47270")),(N=rt.telemetry)==null||N.reportVersion(t);for(let[Pe,pe]of g.plugins.entries()){wE.has(((U=Pe.match(/^@yarnpkg\/plugin-(.*)$/))==null?void 0:U[1])??"")&&((H=rt.telemetry)==null||H.reportPluginName(Pe));for(let Ee of pe.commands||[])a.register(Ee)}let fe={cwd:me.toPortablePath(process.cwd()),plugins:e,quiet:!1,stdin:process.stdin,stdout:process.stdout,stderr:process.stderr},ye=a.process(process.argv.slice(2),fe);ye.help||(X=rt.telemetry)==null||X.reportCommandName(ye.path.join(" "));let Qe=ye.cwd;if(typeof Qe<"u"&&!B){let Pe=(0,uK.realpathSync)(process.cwd()),pe=(0,uK.realpathSync)(Qe);if(Pe!==pe){process.chdir(Qe),await r();return}}await a.runExit(ye,fe)}}return r().catch(a=>{process.stdout.write(a.stack||a.message),process.exitCode=1}).finally(()=>ge.rmtempPromise())}var p1={};tr(p1,{BaseCommand:()=>gt,WorkspaceRequiredError:()=>lr,getDynamicLibs:()=>Zpe,getPluginConfiguration:()=>AP,main:()=>oP,openWorkspace:()=>BE,pluginCommands:()=>wE});var aP=be(Vt()),gt=class extends aP.Command{constructor(){super(...arguments);this.cwd=aP.Option.String("--cwd",{hidden:!0})}};$e();Ft();var Xpe=be(Vt()),lr=class extends Xpe.UsageError{constructor(e,r){let o=ee.relative(e,r),a=ee.join(e,Gt.fileName);super(`This command can only be run from within a workspace of your project (${o} isn't a workspace of ${a}).`)}};$e();Ft();oc();cl();_B();var hft=be(Vt()),dft=be(wi()),mft=be(wA()),Zpe=()=>new Map([["@yarnpkg/cli",p1],["@yarnpkg/core",g1],["@yarnpkg/fslib",nw],["@yarnpkg/libzip",sw],["@yarnpkg/parsers",gw],["@yarnpkg/shell",jB],["clipanion",hft],["semver",dft],["typanion",mft]]);$e();async function BE(t,e){let{project:r,workspace:o}=await xt.find(t,e);if(!o)throw new lr(r.cwd,e);return o}$e();Ft();oc();cl();_B();var ADt=be(Vt()),lDt=be(wi()),cDt=be(wA());var N_={};tr(N_,{AddCommand:()=>$p,BinCommand:()=>eh,CacheCleanCommand:()=>rh,ClipanionCommand:()=>wm,ConfigCommand:()=>Ah,ConfigGetCommand:()=>nh,ConfigSetCommand:()=>sh,ConfigUnsetCommand:()=>oh,DedupeCommand:()=>ch,EntryCommand:()=>kE,ExecCommand:()=>uh,ExplainCommand:()=>ph,ExplainPeerRequirementsCommand:()=>fh,HelpCommand:()=>Bm,InfoCommand:()=>hh,LinkCommand:()=>mh,NodeCommand:()=>yh,PluginImportCommand:()=>Ih,PluginImportSourcesCommand:()=>wh,PluginListCommand:()=>Ch,PluginRemoveCommand:()=>Bh,PluginRuntimeCommand:()=>Qh,RebuildCommand:()=>vh,RemoveCommand:()=>Dh,RunCommand:()=>kh,RunIndexCommand:()=>Dm,SetResolutionCommand:()=>xh,SetVersionCommand:()=>gh,SetVersionSourcesCommand:()=>Eh,UnlinkCommand:()=>Ph,UpCommand:()=>mg,VersionCommand:()=>Qm,WhyCommand:()=>Fh,WorkspaceCommand:()=>Mh,WorkspacesListCommand:()=>Nh,YarnCommand:()=>dh,dedupeUtils:()=>mP,default:()=>cdt,suggestUtils:()=>Ec});var Nme=be(Qd());$e();$e();$e();var Si=be(Vt()),U0e=be(C1()),K0e=be(wA());var Ec={};tr(Ec,{Modifier:()=>n_,Strategy:()=>hP,Target:()=>E1,WorkspaceModifier:()=>T0e,applyModifier:()=>Lgt,extractDescriptorFromPath:()=>i_,extractRangeModifier:()=>N0e,fetchDescriptorFrom:()=>s_,findProjectDescriptors:()=>O0e,getModifier:()=>I1,getSuggestedDescriptors:()=>w1,makeWorkspaceDescriptor:()=>L0e,toWorkspaceModifier:()=>M0e});$e();$e();Ft();var r_=be(wi()),Ngt="workspace:",E1=(o=>(o.REGULAR="dependencies",o.DEVELOPMENT="devDependencies",o.PEER="peerDependencies",o))(E1||{}),n_=(o=>(o.CARET="^",o.TILDE="~",o.EXACT="",o))(n_||{}),T0e=(o=>(o.CARET="^",o.TILDE="~",o.EXACT="*",o))(T0e||{}),hP=(n=>(n.KEEP="keep",n.REUSE="reuse",n.PROJECT="project",n.LATEST="latest",n.CACHE="cache",n))(hP||{});function I1(t,e){return t.exact?"":t.caret?"^":t.tilde?"~":e.configuration.get("defaultSemverRangePrefix")}var Mgt=/^([\^~]?)[0-9]+(?:\.[0-9]+){0,2}(?:-\S+)?$/;function N0e(t,{project:e}){let r=t.match(Mgt);return r?r[1]:e.configuration.get("defaultSemverRangePrefix")}function Lgt(t,e){let{protocol:r,source:o,params:a,selector:n}=Y.parseRange(t.range);return r_.default.valid(n)&&(n=`${e}${t.range}`),Y.makeDescriptor(t,Y.makeRange({protocol:r,source:o,params:a,selector:n}))}function M0e(t){switch(t){case"^":return"^";case"~":return"~";case"":return"*";default:throw new Error(`Assertion failed: Unknown modifier: "${t}"`)}}function L0e(t,e){return Y.makeDescriptor(t.anchoredDescriptor,`${Ngt}${M0e(e)}`)}async function O0e(t,{project:e,target:r}){let o=new Map,a=n=>{let c=o.get(n.descriptorHash);return c||o.set(n.descriptorHash,c={descriptor:n,locators:[]}),c};for(let n of e.workspaces)if(r==="peerDependencies"){let c=n.manifest.peerDependencies.get(t.identHash);c!==void 0&&a(c).locators.push(n.anchoredLocator)}else{let c=n.manifest.dependencies.get(t.identHash),f=n.manifest.devDependencies.get(t.identHash);r==="devDependencies"?f!==void 0?a(f).locators.push(n.anchoredLocator):c!==void 0&&a(c).locators.push(n.anchoredLocator):c!==void 0?a(c).locators.push(n.anchoredLocator):f!==void 0&&a(f).locators.push(n.anchoredLocator)}return o}async function i_(t,{cwd:e,workspace:r}){return await Ogt(async o=>{ee.isAbsolute(t)||(t=ee.relative(r.cwd,ee.resolve(e,t)),t.match(/^\.{0,2}\//)||(t=`./${t}`));let{project:a}=r,n=await s_(Y.makeIdent(null,"archive"),t,{project:r.project,cache:o,workspace:r});if(!n)throw new Error("Assertion failed: The descriptor should have been found");let c=new Wi,f=a.configuration.makeResolver(),g=a.configuration.makeFetcher(),p={checksums:a.storedChecksums,project:a,cache:o,fetcher:g,report:c,resolver:f},E=f.bindDescriptor(n,r.anchoredLocator,p),B=Y.convertDescriptorToLocator(E),Q=await g.fetch(B,p),x=await Gt.find(Q.prefixPath,{baseFs:Q.packageFs});if(!x.name)throw new Error("Target path doesn't have a name");return Y.makeDescriptor(x.name,t)})}async function w1(t,{project:e,workspace:r,cache:o,target:a,fixed:n,modifier:c,strategies:f,maxResults:g=1/0}){if(!(g>=0))throw new Error(`Invalid maxResults (${g})`);let[p,E]=t.range!=="unknown"?n||Zr.validRange(t.range)||!t.range.match(/^[a-z0-9._-]+$/i)?[t.range,"latest"]:["unknown",t.range]:["unknown","latest"];if(p!=="unknown")return{suggestions:[{descriptor:t,name:`Use ${Y.prettyDescriptor(e.configuration,t)}`,reason:"(unambiguous explicit request)"}],rejections:[]};let B=typeof r<"u"&&r!==null&&r.manifest[a].get(t.identHash)||null,Q=[],x=[],C=async N=>{try{await N()}catch(U){x.push(U)}};for(let N of f){if(Q.length>=g)break;switch(N){case"keep":await C(async()=>{B&&Q.push({descriptor:B,name:`Keep ${Y.prettyDescriptor(e.configuration,B)}`,reason:"(no changes)"})});break;case"reuse":await C(async()=>{for(let{descriptor:U,locators:H}of(await O0e(t,{project:e,target:a})).values()){if(H.length===1&&H[0].locatorHash===r.anchoredLocator.locatorHash&&f.includes("keep"))continue;let X=`(originally used by ${Y.prettyLocator(e.configuration,H[0])}`;X+=H.length>1?` and ${H.length-1} other${H.length>2?"s":""})`:")",Q.push({descriptor:U,name:`Reuse ${Y.prettyDescriptor(e.configuration,U)}`,reason:X})}});break;case"cache":await C(async()=>{for(let U of e.storedDescriptors.values())U.identHash===t.identHash&&Q.push({descriptor:U,name:`Reuse ${Y.prettyDescriptor(e.configuration,U)}`,reason:"(already used somewhere in the lockfile)"})});break;case"project":await C(async()=>{if(r.manifest.name!==null&&t.identHash===r.manifest.name.identHash)return;let U=e.tryWorkspaceByIdent(t);if(U===null)return;let H=L0e(U,c);Q.push({descriptor:H,name:`Attach ${Y.prettyDescriptor(e.configuration,H)}`,reason:`(local workspace at ${Ne.pretty(e.configuration,U.relativeCwd,Ne.Type.PATH)})`})});break;case"latest":await C(async()=>{if(a==="peerDependencies")Q.push({descriptor:Y.makeDescriptor(t,"*"),name:"Use *",reason:"(catch-all peer dependency pattern)"});else if(!e.configuration.get("enableNetwork"))Q.push({descriptor:null,name:"Resolve from latest",reason:Ne.pretty(e.configuration,"(unavailable because enableNetwork is toggled off)","grey")});else{let U=await s_(t,E,{project:e,cache:o,workspace:r,modifier:c});U&&Q.push({descriptor:U,name:`Use ${Y.prettyDescriptor(e.configuration,U)}`,reason:"(resolved from latest)"})}});break}}return{suggestions:Q.slice(0,g),rejections:x.slice(0,g)}}async function s_(t,e,{project:r,cache:o,workspace:a,preserveModifier:n=!0,modifier:c}){let f=r.configuration.normalizeDependency(Y.makeDescriptor(t,e)),g=new Wi,p=r.configuration.makeFetcher(),E=r.configuration.makeResolver(),B={project:r,fetcher:p,cache:o,checksums:r.storedChecksums,report:g,cacheOptions:{skipIntegrityCheck:!0}},Q={...B,resolver:E,fetchOptions:B},x=E.bindDescriptor(f,a.anchoredLocator,Q),C=await E.getCandidates(x,{},Q);if(C.length===0)return null;let N=C[0],{protocol:U,source:H,params:X,selector:ie}=Y.parseRange(Y.convertToManifestRange(N.reference));if(U===r.configuration.get("defaultProtocol")&&(U=null),r_.default.valid(ie)){let fe=ie;if(typeof c<"u")ie=c+ie;else if(n!==!1){let Pe=typeof n=="string"?n:f.range;ie=N0e(Pe,{project:r})+ie}let ye=Y.makeDescriptor(N,Y.makeRange({protocol:U,source:H,params:X,selector:ie}));(await E.getCandidates(r.configuration.normalizeDependency(ye),{},Q)).length!==1&&(ie=fe)}return Y.makeDescriptor(N,Y.makeRange({protocol:U,source:H,params:X,selector:ie}))}async function Ogt(t){return await ge.mktempPromise(async e=>{let r=rt.create(e);return r.useWithSource(e,{enableMirror:!1,compressionLevel:0},e,{overwrite:!0}),await t(new $r(e,{configuration:r,check:!1,immutable:!1}))})}var $p=class extends gt{constructor(){super(...arguments);this.json=Si.Option.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.fixed=Si.Option.Boolean("-F,--fixed",!1,{description:"Store dependency tags as-is instead of resolving them"});this.exact=Si.Option.Boolean("-E,--exact",!1,{description:"Don't use any semver modifier on the resolved range"});this.tilde=Si.Option.Boolean("-T,--tilde",!1,{description:"Use the `~` semver modifier on the resolved range"});this.caret=Si.Option.Boolean("-C,--caret",!1,{description:"Use the `^` semver modifier on the resolved range"});this.dev=Si.Option.Boolean("-D,--dev",!1,{description:"Add a package as a dev dependency"});this.peer=Si.Option.Boolean("-P,--peer",!1,{description:"Add a package as a peer dependency"});this.optional=Si.Option.Boolean("-O,--optional",!1,{description:"Add / upgrade a package to an optional regular / peer dependency"});this.preferDev=Si.Option.Boolean("--prefer-dev",!1,{description:"Add / upgrade a package to a dev dependency"});this.interactive=Si.Option.Boolean("-i,--interactive",{description:"Reuse the specified package from other workspaces in the project"});this.cached=Si.Option.Boolean("--cached",!1,{description:"Reuse the highest version already used somewhere within the project"});this.mode=Si.Option.String("--mode",{description:"Change what artifacts installs generate",validator:K0e.isEnum(NA)});this.silent=Si.Option.Boolean("--silent",{hidden:!0});this.packages=Si.Option.Rest()}async execute(){let r=await rt.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await xt.find(r,this.context.cwd),n=await $r.find(r);if(!a)throw new lr(o.cwd,this.context.cwd);await o.restoreInstallState({restoreResolutions:!1});let c=this.fixed,f=this.interactive??r.get("preferInteractive"),g=f||r.get("preferReuse"),p=I1(this,o),E=[g?"reuse":void 0,"project",this.cached?"cache":void 0,"latest"].filter(X=>typeof X<"u"),B=f?1/0:1,Q=await Promise.all(this.packages.map(async X=>{let ie=X.match(/^\.{0,2}\//)?await i_(X,{cwd:this.context.cwd,workspace:a}):Y.tryParseDescriptor(X),fe=X.match(/^(https?:|git@github)/);if(fe)throw new Si.UsageError(`It seems you are trying to add a package using a ${Ne.pretty(r,`${fe[0]}...`,Ne.Type.RANGE)} url; we now require package names to be explicitly specified. -Try running the command again with the package name prefixed: ${Ne.pretty(r,"yarn add",Ne.Type.CODE)} ${Ne.pretty(r,Y.makeDescriptor(Y.makeIdent(null,"my-package"),`${fe[0]}...`),Ne.Type.DESCRIPTOR)}`);if(!ie)throw new Si.UsageError(`The ${Ne.pretty(r,X,Ne.Type.CODE)} string didn't match the required format (package-name@range). Did you perhaps forget to explicitly reference the package name?`);let ye=Ugt(a,ie,{dev:this.dev,peer:this.peer,preferDev:this.preferDev,optional:this.optional});return await Promise.all(ye.map(async Pe=>{let pe=await w1(ie,{project:o,workspace:a,cache:n,fixed:c,target:Pe,modifier:p,strategies:E,maxResults:B});return{request:ie,suggestedDescriptors:pe,target:Pe}}))})).then(X=>X.flat()),x=await Tu.start({configuration:r,stdout:this.context.stdout,suggestInstall:!1},async X=>{for(let{request:ie,suggestedDescriptors:{suggestions:fe,rejections:ye}}of Q)if(fe.filter(Pe=>Pe.descriptor!==null).length===0){let[Pe]=ye;if(typeof Pe>"u")throw new Error("Assertion failed: Expected an error to have been set");o.configuration.get("enableNetwork")?X.reportError(27,`${Y.prettyDescriptor(r,ie)} can't be resolved to a satisfying range`):X.reportError(27,`${Y.prettyDescriptor(r,ie)} can't be resolved to a satisfying range (note: network resolution has been disabled)`),X.reportSeparator(),X.reportExceptionOnce(Pe)}});if(x.hasErrors())return x.exitCode();let C=!1,N=[],U=[];for(let{suggestedDescriptors:{suggestions:X},target:ie}of Q){let fe,ye=X.filter(Ee=>Ee.descriptor!==null),Qe=ye[0].descriptor,Pe=ye.every(Ee=>Y.areDescriptorsEqual(Ee.descriptor,Qe));ye.length===1||Pe?fe=Qe:(C=!0,{answer:fe}=await(0,U0e.prompt)({type:"select",name:"answer",message:"Which range do you want to use?",choices:X.map(({descriptor:Ee,name:ke,reason:h})=>Ee?{name:ke,hint:h,descriptor:Ee}:{name:ke,hint:h,disabled:!0}),onCancel:()=>process.exit(130),result(Ee){return this.find(Ee,"descriptor")},stdin:this.context.stdin,stdout:this.context.stdout}));let pe=a.manifest[ie].get(fe.identHash);(typeof pe>"u"||pe.descriptorHash!==fe.descriptorHash)&&(a.manifest[ie].set(fe.identHash,fe),this.optional&&(ie==="dependencies"?a.manifest.ensureDependencyMeta({...fe,range:"unknown"}).optional=!0:ie==="peerDependencies"&&(a.manifest.ensurePeerDependencyMeta({...fe,range:"unknown"}).optional=!0)),typeof pe>"u"?N.push([a,ie,fe,E]):U.push([a,ie,pe,fe]))}return await r.triggerMultipleHooks(X=>X.afterWorkspaceDependencyAddition,N),await r.triggerMultipleHooks(X=>X.afterWorkspaceDependencyReplacement,U),C&&this.context.stdout.write(` -`),(await St.start({configuration:r,json:this.json,stdout:this.context.stdout,includeLogs:!this.context.quiet},async X=>{await o.install({cache:n,report:X,mode:this.mode})})).exitCode()}};$p.paths=[["add"]],$p.usage=Si.Command.Usage({description:"add dependencies to the project",details:"\n This command adds a package to the package.json for the nearest workspace.\n\n - If it didn't exist before, the package will by default be added to the regular `dependencies` field, but this behavior can be overriden thanks to the `-D,--dev` flag (which will cause the dependency to be added to the `devDependencies` field instead) and the `-P,--peer` flag (which will do the same but for `peerDependencies`).\n\n - If the package was already listed in your dependencies, it will by default be upgraded whether it's part of your `dependencies` or `devDependencies` (it won't ever update `peerDependencies`, though).\n\n - If set, the `--prefer-dev` flag will operate as a more flexible `-D,--dev` in that it will add the package to your `devDependencies` if it isn't already listed in either `dependencies` or `devDependencies`, but it will also happily upgrade your `dependencies` if that's what you already use (whereas `-D,--dev` would throw an exception).\n\n - If set, the `-O,--optional` flag will add the package to the `optionalDependencies` field and, in combination with the `-P,--peer` flag, it will add the package as an optional peer dependency. If the package was already listed in your `dependencies`, it will be upgraded to `optionalDependencies`. If the package was already listed in your `peerDependencies`, in combination with the `-P,--peer` flag, it will be upgraded to an optional peer dependency: `\"peerDependenciesMeta\": { \"\": { \"optional\": true } }`\n\n - If the added package doesn't specify a range at all its `latest` tag will be resolved and the returned version will be used to generate a new semver range (using the `^` modifier by default unless otherwise configured via the `defaultSemverRangePrefix` configuration, or the `~` modifier if `-T,--tilde` is specified, or no modifier at all if `-E,--exact` is specified). Two exceptions to this rule: the first one is that if the package is a workspace then its local version will be used, and the second one is that if you use `-P,--peer` the default range will be `*` and won't be resolved at all.\n\n - If the added package specifies a range (such as `^1.0.0`, `latest`, or `rc`), Yarn will add this range as-is in the resulting package.json entry (in particular, tags such as `rc` will be encoded as-is rather than being converted into a semver range).\n\n If the `--cached` option is used, Yarn will preferably reuse the highest version already used somewhere within the project, even if through a transitive dependency.\n\n If the `-i,--interactive` option is used (or if the `preferInteractive` settings is toggled on) the command will first try to check whether other workspaces in the project use the specified package and, if so, will offer to reuse them.\n\n If the `--mode=` option is set, Yarn will change which artifacts are generated. The modes currently supported are:\n\n - `skip-build` will not run the build scripts at all. Note that this is different from setting `enableScripts` to false because the later will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run.\n\n - `update-lockfile` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost.\n\n For a compilation of all the supported protocols, please consult the dedicated page from our website: https://yarnpkg.com/features/protocols.\n ",examples:[["Add a regular package to the current workspace","$0 add lodash"],["Add a specific version for a package to the current workspace","$0 add lodash@1.2.3"],["Add a package from a GitHub repository (the master branch) to the current workspace using a URL","$0 add lodash@https://github.com/lodash/lodash"],["Add a package from a GitHub repository (the master branch) to the current workspace using the GitHub protocol","$0 add lodash@github:lodash/lodash"],["Add a package from a GitHub repository (the master branch) to the current workspace using the GitHub protocol (shorthand)","$0 add lodash@lodash/lodash"],["Add a package from a specific branch of a GitHub repository to the current workspace using the GitHub protocol (shorthand)","$0 add lodash-es@lodash/lodash#es"]]});function Ugt(t,e,{dev:r,peer:o,preferDev:a,optional:n}){let c=t.manifest["dependencies"].has(e.identHash),f=t.manifest["devDependencies"].has(e.identHash),g=t.manifest["peerDependencies"].has(e.identHash);if((r||o)&&c)throw new Si.UsageError(`Package "${Y.prettyIdent(t.project.configuration,e)}" is already listed as a regular dependency - remove the -D,-P flags or remove it from your dependencies first`);if(!r&&!o&&g)throw new Si.UsageError(`Package "${Y.prettyIdent(t.project.configuration,e)}" is already listed as a peer dependency - use either of -D or -P, or remove it from your peer dependencies first`);if(n&&f)throw new Si.UsageError(`Package "${Y.prettyIdent(t.project.configuration,e)}" is already listed as a dev dependency - remove the -O flag or remove it from your dev dependencies first`);if(n&&!o&&g)throw new Si.UsageError(`Package "${Y.prettyIdent(t.project.configuration,e)}" is already listed as a peer dependency - remove the -O flag or add the -P flag or remove it from your peer dependencies first`);if((r||a)&&n)throw new Si.UsageError(`Package "${Y.prettyIdent(t.project.configuration,e)}" cannot simultaneously be a dev dependency and an optional dependency`);let p=[];return o&&p.push("peerDependencies"),(r||a)&&p.push("devDependencies"),n&&p.push("dependencies"),p.length>0?p:f?["devDependencies"]:g?["peerDependencies"]:["dependencies"]}$e();$e();var th=be(Vt()),eh=class extends gt{constructor(){super(...arguments);this.verbose=th.Option.Boolean("-v,--verbose",!1,{description:"Print both the binary name and the locator of the package that provides the binary"});this.json=th.Option.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.name=th.Option.String({required:!1})}async execute(){let r=await rt.find(this.context.cwd,this.context.plugins),{project:o,locator:a}=await xt.find(r,this.context.cwd);if(await o.restoreInstallState(),this.name){let f=(await En.getPackageAccessibleBinaries(a,{project:o})).get(this.name);if(!f)throw new th.UsageError(`Couldn't find a binary named "${this.name}" for package "${Y.prettyLocator(r,a)}"`);let[,g]=f;return this.context.stdout.write(`${g} -`),0}return(await St.start({configuration:r,json:this.json,stdout:this.context.stdout},async c=>{let f=await En.getPackageAccessibleBinaries(a,{project:o}),p=Array.from(f.keys()).reduce((E,B)=>Math.max(E,B.length),0);for(let[E,[B,Q]]of f)c.reportJson({name:E,source:Y.stringifyIdent(B),path:Q});if(this.verbose)for(let[E,[B]]of f)c.reportInfo(null,`${E.padEnd(p," ")} ${Y.prettyLocator(r,B)}`);else for(let E of f.keys())c.reportInfo(null,E)})).exitCode()}};eh.paths=[["bin"]],eh.usage=th.Command.Usage({description:"get the path to a binary script",details:` - When used without arguments, this command will print the list of all the binaries available in the current workspace. Adding the \`-v,--verbose\` flag will cause the output to contain both the binary name and the locator of the package that provides the binary. - - When an argument is specified, this command will just print the path to the binary on the standard output and exit. Note that the reported path may be stored within a zip archive. - `,examples:[["List all the available binaries","$0 bin"],["Print the path to a specific binary","$0 bin eslint"]]});$e();Ft();var B1=be(Vt()),rh=class extends gt{constructor(){super(...arguments);this.mirror=B1.Option.Boolean("--mirror",!1,{description:"Remove the global cache files instead of the local cache files"});this.all=B1.Option.Boolean("--all",!1,{description:"Remove both the global cache files and the local cache files of the current project"})}async execute(){let r=await rt.find(this.context.cwd,this.context.plugins),o=await $r.find(r);return(await St.start({configuration:r,stdout:this.context.stdout},async()=>{let n=(this.all||this.mirror)&&o.mirrorCwd!==null,c=!this.mirror;n&&(await ge.removePromise(o.mirrorCwd),await r.triggerHook(f=>f.cleanGlobalArtifacts,r)),c&&await ge.removePromise(o.cwd)})).exitCode()}};rh.paths=[["cache","clean"],["cache","clear"]],rh.usage=B1.Command.Usage({description:"remove the shared cache files",details:` - This command will remove all the files from the cache. - `,examples:[["Remove all the local archives","$0 cache clean"],["Remove all the archives stored in the ~/.yarn directory","$0 cache clean --mirror"]]});$e();var ih=be(Vt()),H0e=be(Q1()),o_=Ie("util"),nh=class extends gt{constructor(){super(...arguments);this.json=ih.Option.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.unsafe=ih.Option.Boolean("--no-redacted",!1,{description:"Don't redact secrets (such as tokens) from the output"});this.name=ih.Option.String()}async execute(){let r=await rt.find(this.context.cwd,this.context.plugins),o=this.name.replace(/[.[].*$/,""),a=this.name.replace(/^[^.[]*/,"");if(typeof r.settings.get(o)>"u")throw new ih.UsageError(`Couldn't find a configuration settings named "${o}"`);let c=r.getSpecial(o,{hideSecrets:!this.unsafe,getNativePaths:!0}),f=Ze.convertMapsToIndexableObjects(c),g=a?(0,H0e.default)(f,a):f,p=await St.start({configuration:r,includeFooter:!1,json:this.json,stdout:this.context.stdout},async E=>{E.reportJson(g)});if(!this.json){if(typeof g=="string")return this.context.stdout.write(`${g} -`),p.exitCode();o_.inspect.styles.name="cyan",this.context.stdout.write(`${(0,o_.inspect)(g,{depth:1/0,colors:r.get("enableColors"),compact:!1})} -`)}return p.exitCode()}};nh.paths=[["config","get"]],nh.usage=ih.Command.Usage({description:"read a configuration settings",details:` - This command will print a configuration setting. - - Secrets (such as tokens) will be redacted from the output by default. If this behavior isn't desired, set the \`--no-redacted\` to get the untransformed value. - `,examples:[["Print a simple configuration setting","yarn config get yarnPath"],["Print a complex configuration setting","yarn config get packageExtensions"],["Print a nested field from the configuration",`yarn config get 'npmScopes["my-company"].npmRegistryServer'`],["Print a token from the configuration","yarn config get npmAuthToken --no-redacted"],["Print a configuration setting as JSON","yarn config get packageExtensions --json"]]});$e();var Ic=be(Vt()),Fde=be(c_()),Rde=be(Q1()),Tde=be(u_()),f_=Ie("util"),sh=class extends gt{constructor(){super(...arguments);this.json=Ic.Option.Boolean("--json",!1,{description:"Set complex configuration settings to JSON values"});this.home=Ic.Option.Boolean("-H,--home",!1,{description:"Update the home configuration instead of the project configuration"});this.name=Ic.Option.String();this.value=Ic.Option.String()}async execute(){let r=await rt.find(this.context.cwd,this.context.plugins),o=()=>{if(!r.projectCwd)throw new Ic.UsageError("This command must be run from within a project folder");return r.projectCwd},a=this.name.replace(/[.[].*$/,""),n=this.name.replace(/^[^.[]*\.?/,"");if(typeof r.settings.get(a)>"u")throw new Ic.UsageError(`Couldn't find a configuration settings named "${a}"`);if(a==="enableStrictSettings")throw new Ic.UsageError("This setting only affects the file it's in, and thus cannot be set from the CLI");let f=this.json?JSON.parse(this.value):this.value;await(this.home?C=>rt.updateHomeConfiguration(C):C=>rt.updateConfiguration(o(),C))(C=>{if(n){let N=(0,Fde.default)(C);return(0,Tde.default)(N,this.name,f),N}else return{...C,[a]:f}});let E=(await rt.find(this.context.cwd,this.context.plugins)).getSpecial(a,{hideSecrets:!0,getNativePaths:!0}),B=Ze.convertMapsToIndexableObjects(E),Q=n?(0,Rde.default)(B,n):B;return(await St.start({configuration:r,includeFooter:!1,stdout:this.context.stdout},async C=>{f_.inspect.styles.name="cyan",C.reportInfo(0,`Successfully set ${this.name} to ${(0,f_.inspect)(Q,{depth:1/0,colors:r.get("enableColors"),compact:!1})}`)})).exitCode()}};sh.paths=[["config","set"]],sh.usage=Ic.Command.Usage({description:"change a configuration settings",details:` - This command will set a configuration setting. - - When used without the \`--json\` flag, it can only set a simple configuration setting (a string, a number, or a boolean). - - When used with the \`--json\` flag, it can set both simple and complex configuration settings, including Arrays and Objects. - `,examples:[["Set a simple configuration setting (a string, a number, or a boolean)","yarn config set initScope myScope"],["Set a simple configuration setting (a string, a number, or a boolean) using the `--json` flag",'yarn config set initScope --json \\"myScope\\"'],["Set a complex configuration setting (an Array) using the `--json` flag",`yarn config set unsafeHttpWhitelist --json '["*.example.com", "example.com"]'`],["Set a complex configuration setting (an Object) using the `--json` flag",`yarn config set packageExtensions --json '{ "@babel/parser@*": { "dependencies": { "@babel/types": "*" } } }'`],["Set a nested configuration setting",'yarn config set npmScopes.company.npmRegistryServer "https://npm.example.com"'],["Set a nested configuration setting using indexed access for non-simple keys",`yarn config set 'npmRegistries["//npm.example.com"].npmAuthToken' "ffffffff-ffff-ffff-ffff-ffffffffffff"`]]});$e();var ah=be(Vt()),jde=be(c_()),Yde=be(Ode()),Wde=be(p_()),oh=class extends gt{constructor(){super(...arguments);this.home=ah.Option.Boolean("-H,--home",!1,{description:"Update the home configuration instead of the project configuration"});this.name=ah.Option.String()}async execute(){let r=await rt.find(this.context.cwd,this.context.plugins),o=()=>{if(!r.projectCwd)throw new ah.UsageError("This command must be run from within a project folder");return r.projectCwd},a=this.name.replace(/[.[].*$/,""),n=this.name.replace(/^[^.[]*\.?/,"");if(typeof r.settings.get(a)>"u")throw new ah.UsageError(`Couldn't find a configuration settings named "${a}"`);let f=this.home?p=>rt.updateHomeConfiguration(p):p=>rt.updateConfiguration(o(),p);return(await St.start({configuration:r,includeFooter:!1,stdout:this.context.stdout},async p=>{let E=!1;await f(B=>{if(!(0,Yde.default)(B,this.name))return p.reportWarning(0,`Configuration doesn't contain setting ${this.name}; there is nothing to unset`),E=!0,B;let Q=n?(0,jde.default)(B):{...B};return(0,Wde.default)(Q,this.name),Q}),E||p.reportInfo(0,`Successfully unset ${this.name}`)})).exitCode()}};oh.paths=[["config","unset"]],oh.usage=ah.Command.Usage({description:"unset a configuration setting",details:` - This command will unset a configuration setting. - `,examples:[["Unset a simple configuration setting","yarn config unset initScope"],["Unset a complex configuration setting","yarn config unset packageExtensions"],["Unset a nested configuration setting","yarn config unset npmScopes.company.npmRegistryServer"]]});$e();$e();var SE=be(Vt()),h_=Ie("util"),Ah=class extends gt{constructor(){super(...arguments);this.verbose=SE.Option.Boolean("-v,--verbose",!1,{description:"Print the setting description on top of the regular key/value information"});this.why=SE.Option.Boolean("--why",!1,{description:"Print the reason why a setting is set a particular way"});this.json=SE.Option.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}async execute(){let r=await rt.find(this.context.cwd,this.context.plugins,{strict:!1});return(await St.start({configuration:r,json:this.json,stdout:this.context.stdout},async a=>{if(r.invalid.size>0&&!this.json){for(let[n,c]of r.invalid)a.reportError(34,`Invalid configuration key "${n}" in ${c}`);a.reportSeparator()}if(this.json){let n=Ze.sortMap(r.settings.keys(),c=>c);for(let c of n){let f=r.settings.get(c),g=r.getSpecial(c,{hideSecrets:!0,getNativePaths:!0}),p=r.sources.get(c);this.verbose?a.reportJson({key:c,effective:g,source:p}):a.reportJson({key:c,effective:g,source:p,...f})}}else{let n=Ze.sortMap(r.settings.keys(),g=>g),c=n.reduce((g,p)=>Math.max(g,p.length),0),f={breakLength:1/0,colors:r.get("enableColors"),maxArrayLength:2};if(this.why||this.verbose){let g=n.map(E=>{let B=r.settings.get(E);if(!B)throw new Error(`Assertion failed: This settings ("${E}") should have been registered`);let Q=this.why?r.sources.get(E)||"":B.description;return[E,Q]}),p=g.reduce((E,[,B])=>Math.max(E,B.length),0);for(let[E,B]of g)a.reportInfo(null,`${E.padEnd(c," ")} ${B.padEnd(p," ")} ${(0,h_.inspect)(r.getSpecial(E,{hideSecrets:!0,getNativePaths:!0}),f)}`)}else for(let g of n)a.reportInfo(null,`${g.padEnd(c," ")} ${(0,h_.inspect)(r.getSpecial(g,{hideSecrets:!0,getNativePaths:!0}),f)}`)}})).exitCode()}};Ah.paths=[["config"]],Ah.usage=SE.Command.Usage({description:"display the current configuration",details:` - This command prints the current active configuration settings. - `,examples:[["Print the active configuration settings","$0 config"]]});$e();var lh=be(Vt()),m_=be(wA());var mP={};tr(mP,{Strategy:()=>v1,acceptedStrategies:()=>I0t,dedupe:()=>d_});$e();$e();var Jde=be(pa()),v1=(e=>(e.HIGHEST="highest",e))(v1||{}),I0t=new Set(Object.values(v1)),w0t={highest:async(t,e,{resolver:r,fetcher:o,resolveOptions:a,fetchOptions:n})=>{let c=new Map;for(let[g,p]of t.storedResolutions){let E=t.storedDescriptors.get(g);if(typeof E>"u")throw new Error(`Assertion failed: The descriptor (${g}) should have been registered`);Ze.getSetWithDefault(c,E.identHash).add(p)}let f=new Map(Ze.mapAndFilter(t.storedDescriptors.values(),g=>Y.isVirtualDescriptor(g)?Ze.mapAndFilter.skip:[g.descriptorHash,Ze.makeDeferred()]));for(let g of t.storedDescriptors.values()){let p=f.get(g.descriptorHash);if(typeof p>"u")throw new Error(`Assertion failed: The descriptor (${g.descriptorHash}) should have been registered`);let E=t.storedResolutions.get(g.descriptorHash);if(typeof E>"u")throw new Error(`Assertion failed: The resolution (${g.descriptorHash}) should have been registered`);let B=t.originalPackages.get(E);if(typeof B>"u")throw new Error(`Assertion failed: The package (${E}) should have been registered`);Promise.resolve().then(async()=>{var ie;let Q=r.getResolutionDependencies(g,a),x=Object.fromEntries(await Ze.allSettledSafe(Object.entries(Q).map(async([fe,ye])=>{let Qe=f.get(ye.descriptorHash);if(typeof Qe>"u")throw new Error(`Assertion failed: The descriptor (${ye.descriptorHash}) should have been registered`);let Pe=await Qe.promise;if(!Pe)throw new Error("Assertion failed: Expected the dependency to have been through the dedupe process itself");return[fe,Pe.updatedPackage]})));if(e.length&&!Jde.default.isMatch(Y.stringifyIdent(g),e)||!r.shouldPersistResolution(B,a))return B;let C=c.get(g.identHash);if(typeof C>"u")throw new Error(`Assertion failed: The resolutions (${g.identHash}) should have been registered`);if(C.size===1)return B;let N=[...C].map(fe=>{let ye=t.originalPackages.get(fe);if(typeof ye>"u")throw new Error(`Assertion failed: The package (${fe}) should have been registered`);return ye}),U=await r.getSatisfying(g,x,N,a),H=(ie=U.locators)==null?void 0:ie[0];if(typeof H>"u"||!U.sorted)return B;let X=t.originalPackages.get(H.locatorHash);if(typeof X>"u")throw new Error(`Assertion failed: The package (${H.locatorHash}) should have been registered`);return X}).then(async Q=>{let x=await t.preparePackage(Q,{resolver:r,resolveOptions:a});p.resolve({descriptor:g,currentPackage:B,updatedPackage:Q,resolvedPackage:x})}).catch(Q=>{p.reject(Q)})}return[...f.values()].map(g=>g.promise)}};async function d_(t,{strategy:e,patterns:r,cache:o,report:a}){let{configuration:n}=t,c=new Wi,f=n.makeResolver(),g=n.makeFetcher(),p={cache:o,checksums:t.storedChecksums,fetcher:g,project:t,report:c,cacheOptions:{skipIntegrityCheck:!0}},E={project:t,resolver:f,report:c,fetchOptions:p};return await a.startTimerPromise("Deduplication step",async()=>{let B=w0t[e],Q=await B(t,r,{resolver:f,resolveOptions:E,fetcher:g,fetchOptions:p}),x=po.progressViaCounter(Q.length);a.reportProgress(x);let C=0;await Promise.all(Q.map(H=>H.then(X=>{if(X===null||X.currentPackage.locatorHash===X.updatedPackage.locatorHash)return;C++;let{descriptor:ie,currentPackage:fe,updatedPackage:ye}=X;a.reportInfo(0,`${Y.prettyDescriptor(n,ie)} can be deduped from ${Y.prettyLocator(n,fe)} to ${Y.prettyLocator(n,ye)}`),a.reportJson({descriptor:Y.stringifyDescriptor(ie),currentResolution:Y.stringifyLocator(fe),updatedResolution:Y.stringifyLocator(ye)}),t.storedResolutions.set(ie.descriptorHash,ye.locatorHash)}).finally(()=>x.tick())));let N;switch(C){case 0:N="No packages";break;case 1:N="One package";break;default:N=`${C} packages`}let U=Ne.pretty(n,e,Ne.Type.CODE);return a.reportInfo(0,`${N} can be deduped using the ${U} strategy`),C})}var ch=class extends gt{constructor(){super(...arguments);this.strategy=lh.Option.String("-s,--strategy","highest",{description:"The strategy to use when deduping dependencies",validator:m_.isEnum(v1)});this.check=lh.Option.Boolean("-c,--check",!1,{description:"Exit with exit code 1 when duplicates are found, without persisting the dependency tree"});this.json=lh.Option.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.mode=lh.Option.String("--mode",{description:"Change what artifacts installs generate",validator:m_.isEnum(NA)});this.patterns=lh.Option.Rest()}async execute(){let r=await rt.find(this.context.cwd,this.context.plugins),{project:o}=await xt.find(r,this.context.cwd),a=await $r.find(r);await o.restoreInstallState({restoreResolutions:!1});let n=0,c=await St.start({configuration:r,includeFooter:!1,stdout:this.context.stdout,json:this.json},async f=>{n=await d_(o,{strategy:this.strategy,patterns:this.patterns,cache:a,report:f})});return c.hasErrors()?c.exitCode():this.check?n?1:0:(await St.start({configuration:r,stdout:this.context.stdout,json:this.json},async g=>{await o.install({cache:a,report:g,mode:this.mode})})).exitCode()}};ch.paths=[["dedupe"]],ch.usage=lh.Command.Usage({description:"deduplicate dependencies with overlapping ranges",details:"\n Duplicates are defined as descriptors with overlapping ranges being resolved and locked to different locators. They are a natural consequence of Yarn's deterministic installs, but they can sometimes pile up and unnecessarily increase the size of your project.\n\n This command dedupes dependencies in the current project using different strategies (only one is implemented at the moment):\n\n - `highest`: Reuses (where possible) the locators with the highest versions. This means that dependencies can only be upgraded, never downgraded. It's also guaranteed that it never takes more than a single pass to dedupe the entire dependency tree.\n\n **Note:** Even though it never produces a wrong dependency tree, this command should be used with caution, as it modifies the dependency tree, which can sometimes cause problems when packages don't strictly follow semver recommendations. Because of this, it is recommended to also review the changes manually.\n\n If set, the `-c,--check` flag will only report the found duplicates, without persisting the modified dependency tree. If changes are found, the command will exit with a non-zero exit code, making it suitable for CI purposes.\n\n If the `--mode=` option is set, Yarn will change which artifacts are generated. The modes currently supported are:\n\n - `skip-build` will not run the build scripts at all. Note that this is different from setting `enableScripts` to false because the later will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run.\n\n - `update-lockfile` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost.\n\n This command accepts glob patterns as arguments (if valid Idents and supported by [micromatch](https://github.com/micromatch/micromatch)). Make sure to escape the patterns, to prevent your own shell from trying to expand them.\n\n ### In-depth explanation:\n\n Yarn doesn't deduplicate dependencies by default, otherwise installs wouldn't be deterministic and the lockfile would be useless. What it actually does is that it tries to not duplicate dependencies in the first place.\n\n **Example:** If `foo@^2.3.4` (a dependency of a dependency) has already been resolved to `foo@2.3.4`, running `yarn add foo@*`will cause Yarn to reuse `foo@2.3.4`, even if the latest `foo` is actually `foo@2.10.14`, thus preventing unnecessary duplication.\n\n Duplication happens when Yarn can't unlock dependencies that have already been locked inside the lockfile.\n\n **Example:** If `foo@^2.3.4` (a dependency of a dependency) has already been resolved to `foo@2.3.4`, running `yarn add foo@2.10.14` will cause Yarn to install `foo@2.10.14` because the existing resolution doesn't satisfy the range `2.10.14`. This behavior can lead to (sometimes) unwanted duplication, since now the lockfile contains 2 separate resolutions for the 2 `foo` descriptors, even though they have overlapping ranges, which means that the lockfile can be simplified so that both descriptors resolve to `foo@2.10.14`.\n ",examples:[["Dedupe all packages","$0 dedupe"],["Dedupe all packages using a specific strategy","$0 dedupe --strategy highest"],["Dedupe a specific package","$0 dedupe lodash"],["Dedupe all packages with the `@babel/*` scope","$0 dedupe '@babel/*'"],["Check for duplicates (can be used as a CI step)","$0 dedupe --check"]]});$e();var zde=be(Vt()),wm=class extends gt{async execute(){let{plugins:e}=await rt.find(this.context.cwd,this.context.plugins),r=[];for(let c of e){let{commands:f}=c[1];if(f){let p=zde.Cli.from(f).definitions();r.push([c[0],p])}}let o=this.cli.definitions(),a=(c,f)=>c.split(" ").slice(1).join()===f.split(" ").slice(1).join(),n=Vde()["@yarnpkg/builder"].bundles.standard;for(let c of r){let f=c[1];for(let g of f)o.find(p=>a(p.path,g.path)).plugin={name:c[0],isDefault:n.includes(c[0])}}this.context.stdout.write(`${JSON.stringify(o,null,2)} -`)}};wm.paths=[["--clipanion=definitions"]];var Bm=class extends gt{async execute(){this.context.stdout.write(this.cli.usage(null))}};Bm.paths=[["help"],["--help"],["-h"]];$e();Ft();var y_=be(Vt()),kE=class extends gt{constructor(){super(...arguments);this.leadingArgument=y_.Option.String();this.args=y_.Option.Proxy()}async execute(){if(this.leadingArgument.match(/[\\/]/)&&!Y.tryParseIdent(this.leadingArgument)){let r=ee.resolve(this.context.cwd,me.toPortablePath(this.leadingArgument));return await this.cli.run(this.args,{cwd:r})}else return await this.cli.run(["run",this.leadingArgument,...this.args])}};$e();var Qm=class extends gt{async execute(){this.context.stdout.write(`${ei||""} -`)}};Qm.paths=[["-v"],["--version"]];$e();$e();var D1=be(Vt()),uh=class extends gt{constructor(){super(...arguments);this.commandName=D1.Option.String();this.args=D1.Option.Proxy()}async execute(){let r=await rt.find(this.context.cwd,this.context.plugins),{project:o,locator:a}=await xt.find(r,this.context.cwd);return await o.restoreInstallState(),await En.executePackageShellcode(a,this.commandName,this.args,{cwd:this.context.cwd,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr,project:o})}};uh.paths=[["exec"]],uh.usage=D1.Command.Usage({description:"execute a shell script",details:` - This command simply executes a shell script within the context of the root directory of the active workspace using the portable shell. - - It also makes sure to call it in a way that's compatible with the current project (for example, on PnP projects the environment will be setup in such a way that PnP will be correctly injected into the environment). - `,examples:[["Execute a single shell command","$0 exec echo Hello World"],["Execute a shell script",'$0 exec "tsc & babel src --out-dir lib"']]});$e();var yP=be(Vt()),xE=be(wA()),fh=class extends gt{constructor(){super(...arguments);this.hash=yP.Option.String({required:!1,validator:xE.applyCascade(xE.isString(),[xE.matchesRegExp(/^p[0-9a-f]{5}$/)])})}async execute(){let r=await rt.find(this.context.cwd,this.context.plugins),{project:o}=await xt.find(r,this.context.cwd);return await o.restoreInstallState({restoreResolutions:!1}),await o.applyLightResolution(),typeof this.hash<"u"?await Q0t(this.hash,o,{stdout:this.context.stdout}):(await St.start({configuration:r,stdout:this.context.stdout,includeFooter:!1},async n=>{let c=[([,f])=>Y.stringifyLocator(o.storedPackages.get(f.subject)),([,f])=>Y.stringifyIdent(f.requested)];for(let[f,g]of Ze.sortMap(o.peerRequirements,c)){let p=o.storedPackages.get(g.subject);if(typeof p>"u")throw new Error("Assertion failed: Expected the subject package to have been registered");let E=o.storedPackages.get(g.rootRequester);if(typeof E>"u")throw new Error("Assertion failed: Expected the root package to have been registered");let B=p.dependencies.get(g.requested.identHash)??null,Q=Ne.pretty(r,f,Ne.Type.CODE),x=Y.prettyLocator(r,p),C=Y.prettyIdent(r,g.requested),N=Y.prettyIdent(r,E),U=g.allRequesters.length-1,H=`descendant${U===1?"":"s"}`,X=U>0?` and ${U} ${H}`:"",ie=B!==null?"provides":"doesn't provide";n.reportInfo(null,`${Q} \u2192 ${x} ${ie} ${C} to ${N}${X}`)}})).exitCode()}};fh.paths=[["explain","peer-requirements"]],fh.usage=yP.Command.Usage({description:"explain a set of peer requirements",details:` - A set of peer requirements represents all peer requirements that a dependent must satisfy when providing a given peer request to a requester and its descendants. - - When the hash argument is specified, this command prints a detailed explanation of all requirements of the set corresponding to the hash and whether they're satisfied or not. - - When used without arguments, this command lists all sets of peer requirements and the corresponding hash that can be used to get detailed information about a given set. - - **Note:** A hash is a six-letter p-prefixed code that can be obtained from peer dependency warnings or from the list of all peer requirements (\`yarn explain peer-requirements\`). - `,examples:[["Explain the corresponding set of peer requirements for a hash","$0 explain peer-requirements p1a4ed"],["List all sets of peer requirements","$0 explain peer-requirements"]]});async function Q0t(t,e,r){let{configuration:o}=e,a=e.peerRequirements.get(t);if(typeof a>"u")throw new Error(`No peerDependency requirements found for hash: "${t}"`);return(await St.start({configuration:o,stdout:r.stdout,includeFooter:!1},async c=>{let f=e.storedPackages.get(a.subject);if(typeof f>"u")throw new Error("Assertion failed: Expected the subject package to have been registered");let g=e.storedPackages.get(a.rootRequester);if(typeof g>"u")throw new Error("Assertion failed: Expected the root package to have been registered");let p=f.dependencies.get(a.requested.identHash)??null,E=p!==null?e.storedResolutions.get(p.descriptorHash):null;if(typeof E>"u")throw new Error("Assertion failed: Expected the resolution to have been registered");let B=E!==null?e.storedPackages.get(E):null;if(typeof B>"u")throw new Error("Assertion failed: Expected the provided package to have been registered");let Q=[...a.allRequesters.values()].map(H=>{let X=e.storedPackages.get(H);if(typeof X>"u")throw new Error("Assertion failed: Expected the package to be registered");let ie=Y.devirtualizeLocator(X),fe=e.storedPackages.get(ie.locatorHash);if(typeof fe>"u")throw new Error("Assertion failed: Expected the package to be registered");let ye=fe.peerDependencies.get(a.requested.identHash);if(typeof ye>"u")throw new Error("Assertion failed: Expected the peer dependency to be registered");return{pkg:X,peerDependency:ye}});if(B!==null){let H=Q.every(({peerDependency:X})=>Zr.satisfiesWithPrereleases(B.version,X.range));c.reportInfo(0,`${Y.prettyLocator(o,f)} provides ${Y.prettyLocator(o,B)} with version ${Y.prettyReference(o,B.version??"")}, which ${H?"satisfies":"doesn't satisfy"} the following requirements:`)}else c.reportInfo(0,`${Y.prettyLocator(o,f)} doesn't provide ${Y.prettyIdent(o,a.requested)}, breaking the following requirements:`);c.reportSeparator();let x=Ne.mark(o),C=[];for(let{pkg:H,peerDependency:X}of Ze.sortMap(Q,ie=>Y.stringifyLocator(ie.pkg))){let fe=(B!==null?Zr.satisfiesWithPrereleases(B.version,X.range):!1)?x.Check:x.Cross;C.push({stringifiedLocator:Y.stringifyLocator(H),prettyLocator:Y.prettyLocator(o,H),prettyRange:Y.prettyRange(o,X.range),mark:fe})}let N=Math.max(...C.map(({stringifiedLocator:H})=>H.length)),U=Math.max(...C.map(({prettyRange:H})=>H.length));for(let{stringifiedLocator:H,prettyLocator:X,prettyRange:ie,mark:fe}of Ze.sortMap(C,({stringifiedLocator:ye})=>ye))c.reportInfo(null,`${X.padEnd(N+(X.length-H.length)," ")} \u2192 ${ie.padEnd(U," ")} ${fe}`);C.length>1&&(c.reportSeparator(),c.reportInfo(0,`Note: these requirements start with ${Y.prettyLocator(e.configuration,g)}`))})).exitCode()}$e();var k1=be(Vt()),PE=be(wA());$e();$e();Ft();var wc=be(Vt()),Xde=be(wi()),gh=class extends gt{constructor(){super(...arguments);this.useYarnPath=wc.Option.Boolean("--yarn-path",{description:"Set the yarnPath setting even if the version can be accessed by Corepack"});this.onlyIfNeeded=wc.Option.Boolean("--only-if-needed",!1,{description:"Only lock the Yarn version if it isn't already locked"});this.version=wc.Option.String()}async execute(){let r=await rt.find(this.context.cwd,this.context.plugins);if(this.onlyIfNeeded&&r.get("yarnPath")){let f=r.sources.get("yarnPath");if(!f)throw new Error("Assertion failed: Expected 'yarnPath' to have a source");let g=r.projectCwd??r.startingCwd;if(ee.contains(g,f))return 0}let o=()=>{if(typeof ei>"u")throw new wc.UsageError("The --install flag can only be used without explicit version specifier from the Yarn CLI");return`file://${process.argv[1]}`},a,n=(f,g)=>({version:g,url:f.replace(/\{\}/g,g)});if(this.version==="self")a={url:o(),version:ei??"self"};else if(this.version==="latest"||this.version==="berry"||this.version==="stable")a=n("https://repo.yarnpkg.com/{}/packages/yarnpkg-cli/bin/yarn.js",await S1(r,"stable"));else if(this.version==="canary")a=n("https://repo.yarnpkg.com/{}/packages/yarnpkg-cli/bin/yarn.js",await S1(r,"canary"));else if(this.version==="classic")a={url:"https://classic.yarnpkg.com/latest.js",version:"classic"};else if(this.version.match(/^https?:/))a={url:this.version,version:"remote"};else if(this.version.match(/^\.{0,2}[\\/]/)||me.isAbsolute(this.version))a={url:`file://${ee.resolve(me.toPortablePath(this.version))}`,version:"file"};else if(Zr.satisfiesWithPrereleases(this.version,">=2.0.0"))a=n("https://repo.yarnpkg.com/{}/packages/yarnpkg-cli/bin/yarn.js",this.version);else if(Zr.satisfiesWithPrereleases(this.version,"^0.x || ^1.x"))a=n("https://github.com/yarnpkg/yarn/releases/download/v{}/yarn-{}.js",this.version);else if(Zr.validRange(this.version))a=n("https://repo.yarnpkg.com/{}/packages/yarnpkg-cli/bin/yarn.js",await v0t(r,this.version));else throw new wc.UsageError(`Invalid version descriptor "${this.version}"`);return(await St.start({configuration:r,stdout:this.context.stdout,includeLogs:!this.context.quiet},async f=>{let g=async()=>{let p="file://";return a.url.startsWith(p)?(f.reportInfo(0,`Retrieving ${Ne.pretty(r,a.url,Ne.Type.PATH)}`),await ge.readFilePromise(a.url.slice(p.length))):(f.reportInfo(0,`Downloading ${Ne.pretty(r,a.url,Ne.Type.URL)}`),await Hn.get(a.url,{configuration:r}))};await C_(r,a.version,g,{report:f,useYarnPath:this.useYarnPath})})).exitCode()}};gh.paths=[["set","version"]],gh.usage=wc.Command.Usage({description:"lock the Yarn version used by the project",details:"\n This command will set a specific release of Yarn to be used by Corepack: https://nodejs.org/api/corepack.html.\n\n By default it only will set the `packageManager` field at the root of your project, but if the referenced release cannot be represented this way, if you already have `yarnPath` configured, or if you set the `--yarn-path` command line flag, then the release will also be downloaded from the Yarn GitHub repository, stored inside your project, and referenced via the `yarnPath` settings from your project `.yarnrc.yml` file.\n\n A very good use case for this command is to enforce the version of Yarn used by the any single member of your team inside a same project - by doing this you ensure that you have control on Yarn upgrades and downgrades (including on your deployment servers), and get rid of most of the headaches related to someone using a slightly different version and getting a different behavior than you.\n\n The version specifier can be:\n\n - a tag:\n - `latest` / `berry` / `stable` -> the most recent stable berry (`>=2.0.0`) release\n - `canary` -> the most recent canary (release candidate) berry (`>=2.0.0`) release\n - `classic` -> the most recent classic (`^0.x || ^1.x`) release\n\n - a semver range (e.g. `2.x`) -> the most recent version satisfying the range (limited to berry releases)\n\n - a semver version (e.g. `2.4.1`, `1.22.1`)\n\n - a local file referenced through either a relative or absolute path\n\n - `self` -> the version used to invoke the command\n ",examples:[["Download the latest release from the Yarn repository","$0 set version latest"],["Download the latest canary release from the Yarn repository","$0 set version canary"],["Download the latest classic release from the Yarn repository","$0 set version classic"],["Download the most recent Yarn 3 build","$0 set version 3.x"],["Download a specific Yarn 2 build","$0 set version 2.0.0-rc.30"],["Switch back to a specific Yarn 1 release","$0 set version 1.22.1"],["Use a release from the local filesystem","$0 set version ./yarn.cjs"],["Use a release from a URL","$0 set version https://repo.yarnpkg.com/3.1.0/packages/yarnpkg-cli/bin/yarn.js"],["Download the version used to invoke the command","$0 set version self"]]});async function v0t(t,e){let o=(await Hn.get("https://repo.yarnpkg.com/tags",{configuration:t,jsonResponse:!0})).tags.filter(a=>Zr.satisfiesWithPrereleases(a,e));if(o.length===0)throw new wc.UsageError(`No matching release found for range ${Ne.pretty(t,e,Ne.Type.RANGE)}.`);return o[0]}async function S1(t,e){let r=await Hn.get("https://repo.yarnpkg.com/tags",{configuration:t,jsonResponse:!0});if(!r.latest[e])throw new wc.UsageError(`Tag ${Ne.pretty(t,e,Ne.Type.RANGE)} not found`);return r.latest[e]}async function C_(t,e,r,{report:o,useYarnPath:a}){let n,c=async()=>(typeof n>"u"&&(n=await r()),n);if(e===null){let ie=await c();await ge.mktempPromise(async fe=>{let ye=ee.join(fe,"yarn.cjs");await ge.writeFilePromise(ye,ie);let{stdout:Qe}=await pn.execvp(process.execPath,[me.fromPortablePath(ye),"--version"],{cwd:fe,env:{...process.env,YARN_IGNORE_PATH:"1"}});if(e=Qe.trim(),!Xde.default.valid(e))throw new Error(`Invalid semver version. ${Ne.pretty(t,"yarn --version",Ne.Type.CODE)} returned: -${e}`)})}let f=t.projectCwd??t.startingCwd,g=ee.resolve(f,".yarn/releases"),p=ee.resolve(g,`yarn-${e}.cjs`),E=ee.relative(t.startingCwd,p),B=Ze.isTaggedYarnVersion(e),Q=t.get("yarnPath"),x=!B,C=x||!!Q||!!a;if(a===!1){if(x)throw new rr(0,"You explicitly opted out of yarnPath usage in your command line, but the version you specified cannot be represented by Corepack");C=!1}else!C&&!process.env.COREPACK_ROOT&&(o.reportWarning(0,`You don't seem to have ${Ne.applyHyperlink(t,"Corepack","https://nodejs.org/api/corepack.html")} enabled; we'll have to rely on ${Ne.applyHyperlink(t,"yarnPath","https://yarnpkg.com/configuration/yarnrc#yarnPath")} instead`),C=!0);if(C){let ie=await c();o.reportInfo(0,`Saving the new release in ${Ne.pretty(t,E,"magenta")}`),await ge.removePromise(ee.dirname(p)),await ge.mkdirPromise(ee.dirname(p),{recursive:!0}),await ge.writeFilePromise(p,ie,{mode:493}),await rt.updateConfiguration(f,{yarnPath:ee.relative(f,p)})}else await ge.removePromise(ee.dirname(p)),await rt.updateConfiguration(f,{yarnPath:rt.deleteProperty});let N=await Gt.tryFind(f)||new Gt;N.packageManager=`yarn@${B?e:await S1(t,"stable")}`;let U={};N.exportTo(U);let H=ee.join(f,Gt.fileName),X=`${JSON.stringify(U,null,N.indent)} -`;return await ge.changeFilePromise(H,X,{automaticNewlines:!0}),{bundleVersion:e}}function Zde(t){return br[ED(t)]}var D0t=/## (?YN[0-9]{4}) - `(?[A-Z_]+)`\n\n(?